From 5c434381dc25b78caf304f8e6a81f2625ae3754f Mon Sep 17 00:00:00 2001 From: Justin W Smith <103147162+justsmth@users.noreply.github.com> Date: Mon, 9 Dec 2024 21:26:38 -0500 Subject: [PATCH 01/12] Link to NIST website (#2045) --- crypto/fipsmodule/FIPS.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/crypto/fipsmodule/FIPS.md b/crypto/fipsmodule/FIPS.md index f329f893df..20e596a46c 100644 --- a/crypto/fipsmodule/FIPS.md +++ b/crypto/fipsmodule/FIPS.md @@ -6,9 +6,9 @@ A submodule of AWS-LC, referred to here as the “FIPS module”, is periodicall NIST has awarded the FIPS module of AWS-LC its validation certificate as a Federal Information Processing Standards (FIPS) 140-3, level 1, cryptographic module. -* AWS-LC-FIPS v1.0: certificate [#4631](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4631) - [security policy](./policydocs/140sp4631.pdf) -* AWS-LC-FIPS v2.0 (dynamic library): certificate [#4759](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4759) - [security policy](./policydocs/140sp4759.pdf) -* AWS-LC-FIPS v2.0 (static library): certificate [#4816](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4816) - [security policy](./policydocs/140sp4816.pdf) +* AWS-LC-FIPS v1.0: certificate [#4631](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4631) - [security policy](https://csrc.nist.gov/CSRC/media/projects/cryptographic-module-validation-program/documents/security-policies/140sp4631.pdf) +* AWS-LC-FIPS v2.0 (dynamic library): certificate [#4759](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4759) - [security policy](https://csrc.nist.gov/CSRC/media/projects/cryptographic-module-validation-program/documents/security-policies/140sp4759.pdf) +* AWS-LC-FIPS v2.0 (static library): certificate [#4816](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4816) - [security policy](https://csrc.nist.gov/CSRC/media/projects/cryptographic-module-validation-program/documents/security-policies/140sp4816.pdf) NIST has also awarded SP 800-90B validation certificate for our CPU Jitter Entropy Source. From 18cc07dd8253b31164a2a6dcfa29a7eeead250d6 Mon Sep 17 00:00:00 2001 From: Jake Massimo Date: Tue, 10 Dec 2024 07:47:59 -0800 Subject: [PATCH 02/12] Added FIPS 204 documentation, cleanse intermediate values (#2017) --- .../pqcrystals_dilithium_ref_common/README.md | 3 + .../pqcrystals_dilithium_ref_common/ntt.c | 6 +- .../pqcrystals_dilithium_ref_common/packing.c | 105 ++++++---- .../pqcrystals_dilithium_ref_common/poly.c | 158 ++++---------- .../pqcrystals_dilithium_ref_common/polyvec.c | 195 ++++++++++++------ .../rounding.c | 32 ++- .../pqcrystals_dilithium_ref_common/sign.c | 44 ++++ 7 files changed, 322 insertions(+), 221 deletions(-) diff --git a/crypto/dilithium/pqcrystals_dilithium_ref_common/README.md b/crypto/dilithium/pqcrystals_dilithium_ref_common/README.md index f2863c415a..db45b8e711 100644 --- a/crypto/dilithium/pqcrystals_dilithium_ref_common/README.md +++ b/crypto/dilithium/pqcrystals_dilithium_ref_common/README.md @@ -15,6 +15,9 @@ that initialize a given structure with values corresponding to a parameter set. - `reduce.c`: a small fix to documentation has been made on the bounds of `reduce32`. - `poly.c`: a small fix to documentation has been made on the bounds of `poly_reduce`. - `polyvec.c`: a small fix to documentation has been made on the bounds of `polyveck_reduce`. +- Documentation has been added to `ntt.c`, `packing.c`, `poly.c`, `polyvec.c`, and `rounding.c` that outlines the algorithm specification (including algorithm number) in FIPS 204. +- `poly.c` and `sign.c` have been modified to cleanse intermediate data as soon as it is no longer needed as defined in FIPS 204 Section 3.6.3. +- Intermediate values are cleansed within `crypto_sign_keypair_internal`, `crypto_sign_keypair`, `crypto_sign_signature_internal`, `crypto_sign_verify_internal`, `crypto_sign_verify`, `poly_uniform_eta`, `poly_uniform_gamma1`, and `poly_challenge` as per FIPS 204 Section 3.6.3. **Testing** diff --git a/crypto/dilithium/pqcrystals_dilithium_ref_common/ntt.c b/crypto/dilithium/pqcrystals_dilithium_ref_common/ntt.c index 9ca1db87d3..b9260d6750 100644 --- a/crypto/dilithium/pqcrystals_dilithium_ref_common/ntt.c +++ b/crypto/dilithium/pqcrystals_dilithium_ref_common/ntt.c @@ -41,7 +41,8 @@ static const int32_t zetas[N] = { /************************************************* * Name: ntt * -* Description: Forward NTT, in-place. No modular reduction is performed after +* Description: FIPS 204: Algorithm 41. +* Forward NTT, in-place. No modular reduction is performed after * additions or subtractions. Output vector is in bitreversed order. * * Arguments: - uint32_t p[N]: input/output coefficient array @@ -66,7 +67,8 @@ void ntt(int32_t a[N]) { /************************************************* * Name: invntt_tomont * -* Description: Inverse NTT and multiplication by Montgomery factor 2^32. +* Description: FIPS 204: Algorithm 42. +* Inverse NTT and multiplication by Montgomery factor 2^32. * In-place. No modular reductions after additions or * subtractions; input coefficients need to be smaller than * Q in absolute value. Output coefficient are smaller than Q in diff --git a/crypto/dilithium/pqcrystals_dilithium_ref_common/packing.c b/crypto/dilithium/pqcrystals_dilithium_ref_common/packing.c index e03be76e5d..4504a72ff4 100644 --- a/crypto/dilithium/pqcrystals_dilithium_ref_common/packing.c +++ b/crypto/dilithium/pqcrystals_dilithium_ref_common/packing.c @@ -6,7 +6,8 @@ /************************************************* * Name: pack_pk * -* Description: Bit-pack public key pk = (rho, t1). +* Description: FIPS 204: Algorithm 22 pkEncode. +* Bit-pack public key pk = (rho, t1). * * Arguments: - ml_dsa_params: parameter struct * - uint8_t pk[]: pointer to output byte array @@ -20,18 +21,21 @@ void pack_pk(ml_dsa_params *params, { unsigned int i; - for(i = 0; i < SEEDBYTES; ++i) + for(i = 0; i < SEEDBYTES; ++i) { pk[i] = rho[i]; + } pk += SEEDBYTES; - for(i = 0; i < params->k; ++i) + for(i = 0; i < params->k; ++i) { polyt1_pack(pk + i*POLYT1_PACKEDBYTES, &t1->vec[i]); + } } /************************************************* * Name: unpack_pk * -* Description: Unpack public key pk = (rho, t1). +* Description: FIPS 204: Algorithm 23 pkDecode. +* Unpack public key pk = (rho, t1). * * Arguments: - ml_dsa_params: parameter struct * - const uint8_t rho[]: output byte array for rho @@ -45,18 +49,21 @@ void unpack_pk(ml_dsa_params *params, { unsigned int i; - for(i = 0; i < SEEDBYTES; ++i) + for(i = 0; i < SEEDBYTES; ++i) { rho[i] = pk[i]; + } pk += SEEDBYTES; - for(i = 0; i < params->k; ++i) + for(i = 0; i < params->k; ++i) { polyt1_unpack(&t1->vec[i], pk + i*POLYT1_PACKEDBYTES); + } } /************************************************* * Name: pack_sk * -* Description: Bit-pack secret key sk = (rho, tr, key, t0, s1, s2). +* Description: FIPS 204: Algorithm 24 skEncode. +* Bit-pack secret key sk = (rho, tr, key, t0, s1, s2). * * Arguments: - ml_dsa_params: parameter struct * - uint8_t sk[]: pointer to output byte array @@ -78,35 +85,41 @@ void pack_sk(ml_dsa_params *params, { unsigned int i; - for(i = 0; i < SEEDBYTES; ++i) + for(i = 0; i < SEEDBYTES; ++i) { sk[i] = rho[i]; + } sk += SEEDBYTES; - for(i = 0; i < SEEDBYTES; ++i) + for(i = 0; i < SEEDBYTES; ++i) { sk[i] = key[i]; + } sk += SEEDBYTES; - for(i = 0; i < TRBYTES; ++i) + for(i = 0; i < TRBYTES; ++i) { sk[i] = tr[i]; + } sk += TRBYTES; - for(i = 0; i < params->l; ++i) + for(i = 0; i < params->l; ++i) { polyeta_pack(params, sk + i * params->poly_eta_packed_bytes, &s1->vec[i]); + } sk += params->l * params->poly_eta_packed_bytes; - - for(i = 0; i < params->k; ++i) + for(i = 0; i < params->k; ++i) { polyeta_pack(params,sk + i * params->poly_eta_packed_bytes, &s2->vec[i]); + } sk += params->k * params->poly_eta_packed_bytes; - for(i = 0; i < params->k; ++i) + for(i = 0; i < params->k; ++i) { polyt0_pack(sk + i * POLYT0_PACKEDBYTES, &t0->vec[i]); + } } /************************************************* * Name: unpack_sk * -* Description: Unpack secret key sk = (rho, tr, key, t0, s1, s2). +* Description: FIPS 204: Algorithm 25 skDecode. +* Unpack secret key sk = (rho, tr, key, t0, s1, s2). * * Arguments: - ml_dsa_params: parameter struct * - const uint8_t rho[]: output byte array for rho @@ -128,34 +141,41 @@ void unpack_sk(ml_dsa_params *params, { unsigned int i; - for(i = 0; i < SEEDBYTES; ++i) + for(i = 0; i < SEEDBYTES; ++i) { rho[i] = sk[i]; + } sk += SEEDBYTES; - for(i = 0; i < SEEDBYTES; ++i) + for(i = 0; i < SEEDBYTES; ++i) { key[i] = sk[i]; + } sk += SEEDBYTES; - for(i = 0; i < TRBYTES; ++i) + for(i = 0; i < TRBYTES; ++i) { tr[i] = sk[i]; + } sk += TRBYTES; - for(i=0; i < params->l; ++i) + for(i=0; i < params->l; ++i) { polyeta_unpack(params, &s1->vec[i], sk + i * params->poly_eta_packed_bytes); + } sk += params->l * params->poly_eta_packed_bytes; - for(i=0; i < params->k; ++i) + for(i=0; i < params->k; ++i) { polyeta_unpack(params, &s2->vec[i], sk + i * params->poly_eta_packed_bytes); + } sk += params->k * params->poly_eta_packed_bytes; - for(i=0; i < params->k; ++i) + for(i=0; i < params->k; ++i) { polyt0_unpack(&t0->vec[i], sk + i * POLYT0_PACKEDBYTES); + } } /************************************************* * Name: pack_sig * -* Description: Bit-pack signature sig = (c, z, h). +* Description: FIPS 204: Algorithm 26 sigEncode. +* Bit-pack signature sig = (c, z, h). * * Arguments: - ml_dsa_params: parameter struct * - uint8_t sig[]: pointer to output byte array @@ -171,23 +191,28 @@ void pack_sig(ml_dsa_params *params, { unsigned int i, j, k; - for(i=0; i < params->c_tilde_bytes; ++i) + for(i=0; i < params->c_tilde_bytes; ++i) { sig[i] = c[i]; + } sig += params->c_tilde_bytes; - for(i = 0; i < params->l; ++i) + for(i = 0; i < params->l; ++i) { polyz_pack(params, sig + i * params->poly_z_packed_bytes, &z->vec[i]); + } sig += params->l * params->poly_z_packed_bytes; /* Encode h */ - for(i = 0; i < params->omega + params->k; ++i) + for(i = 0; i < params->omega + params->k; ++i) { sig[i] = 0; + } k = 0; for(i = 0; i < params->k; ++i) { - for(j = 0; j < N; ++j) - if(h->vec[i].coeffs[j] != 0) + for(j = 0; j < N; ++j) { + if(h->vec[i].coeffs[j] != 0) { sig[k++] = j; + } + } sig[params->omega + i] = k; } @@ -196,7 +221,8 @@ void pack_sig(ml_dsa_params *params, /************************************************* * Name: unpack_sig * -* Description: Unpack signature sig = (c, z, h). +* Description: FIPS 204: Algorithm 27 sigDecode. +* Unpack signature sig = (c, z, h). * * Arguments: - ml_dsa_params: parameter struct * - uint8_t *c: pointer to output challenge hash @@ -215,26 +241,32 @@ int unpack_sig(ml_dsa_params *params, { unsigned int i, j, k; - for(i = 0; i < params->c_tilde_bytes; ++i) + for(i = 0; i < params->c_tilde_bytes; ++i) { c[i] = sig[i]; + } sig += params->c_tilde_bytes; - for(i = 0; i < params->l; ++i) + for(i = 0; i < params->l; ++i) { polyz_unpack(params, &z->vec[i], sig + i * params->poly_z_packed_bytes); + } sig += params->l * params->poly_z_packed_bytes; /* Decode h */ k = 0; for(i = 0; i < params->k; ++i) { - for(j = 0; j < N; ++j) + for(j = 0; j < N; ++j) { h->vec[i].coeffs[j] = 0; + } - if(sig[params->omega + i] < k || sig[params->omega + i] > params->omega) + if(sig[params->omega + i] < k || sig[params->omega + i] > params->omega) { return 1; + } for(j = k; j < sig[params->omega + i]; ++j) { /* Coefficients are ordered for strong unforgeability */ - if(j > k && sig[j] <= sig[j-1]) return 1; + if(j > k && sig[j] <= sig[j-1]) { + return 1; + } h->vec[i].coeffs[sig[j]] = 1; } @@ -242,9 +274,10 @@ int unpack_sig(ml_dsa_params *params, } /* Extra indices are zero for strong unforgeability */ - for(j = k; j < params->omega; ++j) - if(sig[j]) + for(j = k; j < params->omega; ++j) { + if(sig[j]) { return 1; - + } + } return 0; } diff --git a/crypto/dilithium/pqcrystals_dilithium_ref_common/poly.c b/crypto/dilithium/pqcrystals_dilithium_ref_common/poly.c index 634d54a136..c73615fd27 100644 --- a/crypto/dilithium/pqcrystals_dilithium_ref_common/poly.c +++ b/crypto/dilithium/pqcrystals_dilithium_ref_common/poly.c @@ -6,17 +6,6 @@ #include "rounding.h" #include "symmetric.h" -#ifdef DBENCH -#include "test/cpucycles.h" -extern const uint64_t timing_overhead; -extern uint64_t *tred, *tadd, *tmul, *tround, *tsample, *tpack; -#define DBENCH_START() uint64_t time = cpucycles() -#define DBENCH_STOP(t) t += cpucycles() - time - timing_overhead -#else -#define DBENCH_START() -#define DBENCH_STOP(t) -#endif - /************************************************* * Name: poly_reduce * @@ -27,12 +16,9 @@ extern uint64_t *tred, *tadd, *tmul, *tround, *tsample, *tpack; **************************************************/ void poly_reduce(poly *a) { unsigned int i; - DBENCH_START(); - - for(i = 0; i < N; ++i) + for(i = 0; i < N; ++i) { a->coeffs[i] = reduce32(a->coeffs[i]); - - DBENCH_STOP(*tred); + } } /************************************************* @@ -45,12 +31,9 @@ void poly_reduce(poly *a) { **************************************************/ void poly_caddq(poly *a) { unsigned int i; - DBENCH_START(); - - for(i = 0; i < N; ++i) + for(i = 0; i < N; ++i) { a->coeffs[i] = caddq(a->coeffs[i]); - - DBENCH_STOP(*tred); + } } /************************************************* @@ -64,12 +47,9 @@ void poly_caddq(poly *a) { **************************************************/ void poly_add(poly *c, const poly *a, const poly *b) { unsigned int i; - DBENCH_START(); - - for(i = 0; i < N; ++i) + for(i = 0; i < N; ++i) { c->coeffs[i] = a->coeffs[i] + b->coeffs[i]; - - DBENCH_STOP(*tadd); + } } /************************************************* @@ -85,12 +65,9 @@ void poly_add(poly *c, const poly *a, const poly *b) { **************************************************/ void poly_sub(poly *c, const poly *a, const poly *b) { unsigned int i; - DBENCH_START(); - - for(i = 0; i < N; ++i) + for(i = 0; i < N; ++i) { c->coeffs[i] = a->coeffs[i] - b->coeffs[i]; - - DBENCH_STOP(*tadd); + } } /************************************************* @@ -103,12 +80,9 @@ void poly_sub(poly *c, const poly *a, const poly *b) { **************************************************/ void poly_shiftl(poly *a) { unsigned int i; - DBENCH_START(); - - for(i = 0; i < N; ++i) + for(i = 0; i < N; ++i) { a->coeffs[i] <<= D; - - DBENCH_STOP(*tmul); + } } /************************************************* @@ -120,11 +94,7 @@ void poly_shiftl(poly *a) { * Arguments: - poly *a: pointer to input/output polynomial **************************************************/ void poly_ntt(poly *a) { - DBENCH_START(); - ntt(a->coeffs); - - DBENCH_STOP(*tmul); } /************************************************* @@ -137,11 +107,7 @@ void poly_ntt(poly *a) { * Arguments: - poly *a: pointer to input/output polynomial **************************************************/ void poly_invntt_tomont(poly *a) { - DBENCH_START(); - invntt_tomont(a->coeffs); - - DBENCH_STOP(*tmul); } /************************************************* @@ -157,12 +123,9 @@ void poly_invntt_tomont(poly *a) { **************************************************/ void poly_pointwise_montgomery(poly *c, const poly *a, const poly *b) { unsigned int i; - DBENCH_START(); - - for(i = 0; i < N; ++i) + for(i = 0; i < N; ++i) { c->coeffs[i] = fqmul(a->coeffs[i], b->coeffs[i]); - - DBENCH_STOP(*tmul); + } } /************************************************* @@ -179,12 +142,9 @@ void poly_pointwise_montgomery(poly *c, const poly *a, const poly *b) { **************************************************/ void poly_power2round(poly *a1, poly *a0, const poly *a) { unsigned int i; - DBENCH_START(); - - for(i = 0; i < N; ++i) + for(i = 0; i < N; ++i) { a1->coeffs[i] = power2round(&a0->coeffs[i], a->coeffs[i]); - - DBENCH_STOP(*tround); + } } /************************************************* @@ -203,12 +163,9 @@ void poly_power2round(poly *a1, poly *a0, const poly *a) { **************************************************/ void poly_decompose(ml_dsa_params *params, poly *a1, poly *a0, const poly *a) { unsigned int i; - DBENCH_START(); - - for(i = 0; i < N; ++i) + for(i = 0; i < N; ++i) { a1->coeffs[i] = decompose(params, &a0->coeffs[i], a->coeffs[i]); - - DBENCH_STOP(*tround); + } } /************************************************* @@ -227,14 +184,10 @@ void poly_decompose(ml_dsa_params *params, poly *a1, poly *a0, const poly *a) { **************************************************/ unsigned int poly_make_hint(ml_dsa_params *params, poly *h, const poly *a0, const poly *a1) { unsigned int i, s = 0; - DBENCH_START(); - for(i = 0; i < N; ++i) { h->coeffs[i] = make_hint(params, a0->coeffs[i], a1->coeffs[i]); s += h->coeffs[i]; } - - DBENCH_STOP(*tround); return s; } @@ -250,12 +203,9 @@ unsigned int poly_make_hint(ml_dsa_params *params, poly *h, const poly *a0, cons **************************************************/ void poly_use_hint(ml_dsa_params *params, poly *b, const poly *a, const poly *h) { unsigned int i; - DBENCH_START(); - - for(i = 0; i < N; ++i) + for(i = 0; i < N; ++i) { b->coeffs[i] = use_hint(params, a->coeffs[i], h->coeffs[i]); - - DBENCH_STOP(*tround); + } } /************************************************* @@ -272,10 +222,10 @@ void poly_use_hint(ml_dsa_params *params, poly *b, const poly *a, const poly *h) int poly_chknorm(const poly *a, int32_t B) { unsigned int i; int32_t t; - DBENCH_START(); - if(B > (Q-1)/8) + if(B > (Q-1)/8) { return 1; + } /* It is ok to leak which coefficient violates the bound since the probability for each coefficient is independent of secret @@ -286,12 +236,9 @@ int poly_chknorm(const poly *a, int32_t B) { t = a->coeffs[i] - (t & 2*a->coeffs[i]); if(t >= B) { - DBENCH_STOP(*tsample); return 1; } } - - DBENCH_STOP(*tsample); return 0; } @@ -316,7 +263,6 @@ static unsigned int rej_uniform(int32_t *a, { unsigned int ctr, pos; uint32_t t; - DBENCH_START(); ctr = pos = 0; while(ctr < len && pos + 3 <= buflen) { @@ -325,18 +271,18 @@ static unsigned int rej_uniform(int32_t *a, t |= (uint32_t)buf[pos++] << 16; t &= 0x7FFFFF; - if(t < Q) + if(t < Q) { a[ctr++] = t; + } } - - DBENCH_STOP(*tsample); return ctr; } /************************************************* * Name: poly_uniform * -* Description: Sample polynomial with uniformly random coefficients +* Description: FIPS 204: Algorithm 30 RejNTTPoly. +* Sample polynomial with uniformly random coefficients * in [0,Q-1] by performing rejection sampling on the * output stream of SHAKE128(seed|nonce) * @@ -368,6 +314,9 @@ void poly_uniform(poly *a, buflen = STREAM128_BLOCKBYTES + off; ctr += rej_uniform(a->coeffs + ctr, N - ctr, buf, buflen); } + /* FIPS 204. Section 3.6.3 Destruction of intermediate values. */ + OPENSSL_cleanse(buf, sizeof(buf)); + OPENSSL_cleanse(&state, sizeof(state)); } /************************************************* @@ -397,7 +346,6 @@ static unsigned int rej_eta(ml_dsa_params *params, unsigned int ctr, pos; uint32_t t0, t1; - DBENCH_START(); ctr = pos = 0; while(ctr < len && pos < buflen) { @@ -422,14 +370,14 @@ static unsigned int rej_eta(ml_dsa_params *params, a[ctr++] = 4 - t1; } } - DBENCH_STOP(*tsample); return ctr; } /************************************************* * Name: poly_uniform_eta * -* Description: Sample polynomial with uniformly random coefficients +* Description: FIPS 204: Algorithm 31 RejBoundedPoly. +* Sample polynomial with uniformly random coefficients * in [-ETA,ETA] by performing rejection sampling on the * output stream from SHAKE256(seed|nonce) * @@ -438,11 +386,6 @@ static unsigned int rej_eta(ml_dsa_params *params, * - const uint8_t seed[]: byte array with seed of length CRHBYTES * - uint16_t nonce: 2-byte nonce **************************************************/ -//#if ETA == 2 -//define POLY_UNIFORM_ETA_NBLOCKS ((136 + STREAM256_BLOCKBYTES - 1)/STREAM256_BLOCKBYTES) -//#elif ETA == 4 -//#define POLY_UNIFORM_ETA_NBLOCKS ((227 + STREAM256_BLOCKBYTES - 1)/STREAM256_BLOCKBYTES) -//#endif void poly_uniform_eta(ml_dsa_params *params, poly *a, const uint8_t seed[CRHBYTES], @@ -462,10 +405,13 @@ void poly_uniform_eta(ml_dsa_params *params, stream256_squeezeblocks(buf, 1, &state); ctr += rej_eta(params, a->coeffs + ctr, N - ctr, buf, STREAM256_BLOCKBYTES); } + /* FIPS 204. Section 3.6.3 Destruction of intermediate values. */ + OPENSSL_cleanse(buf, sizeof(buf)); + OPENSSL_cleanse(&state, sizeof(state)); } /************************************************* -* Name: poly_uniform_gamma1m1 +* Name: poly_uniform_gamma1 * * Description: Sample polynomial with uniformly random coefficients * in [-(GAMMA1 - 1), GAMMA1] by unpacking output stream @@ -488,6 +434,9 @@ void poly_uniform_gamma1(ml_dsa_params *params, stream256_init(&state, seed, nonce); stream256_squeezeblocks(buf, POLY_UNIFORM_GAMMA1_NBLOCKS, &state); polyz_unpack(params, a, buf); + /* FIPS 204. Section 3.6.3 Destruction of intermediate values. */ + OPENSSL_cleanse(buf, sizeof(buf)); + OPENSSL_cleanse(&state, sizeof(state)); } /************************************************* @@ -513,12 +462,14 @@ void poly_challenge(ml_dsa_params *params, poly *c, const uint8_t *seed) { shake256_squeezeblocks(buf, 1, &state); signs = 0; - for(i = 0; i < 8; ++i) + for(i = 0; i < 8; ++i) { signs |= (uint64_t)buf[i] << 8*i; + } pos = 8; - for(i = 0; i < N; ++i) + for(i = 0; i < N; ++i) { c->coeffs[i] = 0; + } for(i = N-params->tau; i < N; ++i) { do { if(pos >= SHAKE256_RATE) { @@ -533,6 +484,10 @@ void poly_challenge(ml_dsa_params *params, poly *c, const uint8_t *seed) { c->coeffs[b] = 1 - 2*(signs & 1); signs >>= 1; } + /* FIPS 204. Section 3.6.3 Destruction of intermediate values. */ + OPENSSL_cleanse(&signs, sizeof(signs)); + OPENSSL_cleanse(buf, sizeof(buf)); + OPENSSL_cleanse(&state, sizeof(state)); } /************************************************* @@ -548,7 +503,6 @@ void poly_challenge(ml_dsa_params *params, poly *c, const uint8_t *seed) { void polyeta_pack(ml_dsa_params *params, uint8_t *r, const poly *a) { unsigned int i; uint8_t t[8]; - DBENCH_START(); assert((params->eta == 2) || (params->eta == 4)); @@ -576,8 +530,6 @@ void polyeta_pack(ml_dsa_params *params, uint8_t *r, const poly *a) { r[i] = t[0] | (t[1] << 4); } } - - DBENCH_STOP(*tpack); } /************************************************* @@ -591,8 +543,6 @@ void polyeta_pack(ml_dsa_params *params, uint8_t *r, const poly *a) { **************************************************/ void polyeta_unpack(ml_dsa_params *params, poly *r, const uint8_t *a) { unsigned int i; - DBENCH_START(); - assert((params->eta == 2) || (params->eta == 4)); @@ -625,8 +575,6 @@ void polyeta_unpack(ml_dsa_params *params, poly *r, const uint8_t *a) { r->coeffs[2*i+1] = params->eta - r->coeffs[2*i+1]; } } - - DBENCH_STOP(*tpack); } /************************************************* @@ -641,7 +589,6 @@ void polyeta_unpack(ml_dsa_params *params, poly *r, const uint8_t *a) { **************************************************/ void polyt1_pack(uint8_t *r, const poly *a) { unsigned int i; - DBENCH_START(); for(i = 0; i < N/4; ++i) { r[5*i+0] = (a->coeffs[4*i+0] >> 0); @@ -650,8 +597,6 @@ void polyt1_pack(uint8_t *r, const poly *a) { r[5*i+3] = (a->coeffs[4*i+2] >> 4) | (a->coeffs[4*i+3] << 6); r[5*i+4] = (a->coeffs[4*i+3] >> 2); } - - DBENCH_STOP(*tpack); } /************************************************* @@ -665,7 +610,6 @@ void polyt1_pack(uint8_t *r, const poly *a) { **************************************************/ void polyt1_unpack(poly *r, const uint8_t *a) { unsigned int i; - DBENCH_START(); for(i = 0; i < N/4; ++i) { r->coeffs[4*i+0] = ((a[5*i+0] >> 0) | ((uint32_t)a[5*i+1] << 8)) & 0x3FF; @@ -673,8 +617,6 @@ void polyt1_unpack(poly *r, const uint8_t *a) { r->coeffs[4*i+2] = ((a[5*i+2] >> 4) | ((uint32_t)a[5*i+3] << 4)) & 0x3FF; r->coeffs[4*i+3] = ((a[5*i+3] >> 6) | ((uint32_t)a[5*i+4] << 2)) & 0x3FF; } - - DBENCH_STOP(*tpack); } /************************************************* @@ -689,7 +631,6 @@ void polyt1_unpack(poly *r, const uint8_t *a) { void polyt0_pack(uint8_t *r, const poly *a) { unsigned int i; uint32_t t[8]; - DBENCH_START(); for(i = 0; i < N/8; ++i) { t[0] = (1 << (D-1)) - a->coeffs[8*i+0]; @@ -722,8 +663,6 @@ void polyt0_pack(uint8_t *r, const poly *a) { r[13*i+11] |= t[7] << 3; r[13*i+12] = t[7] >> 5; } - - DBENCH_STOP(*tpack); } /************************************************* @@ -736,7 +675,6 @@ void polyt0_pack(uint8_t *r, const poly *a) { **************************************************/ void polyt0_unpack(poly *r, const uint8_t *a) { unsigned int i; - DBENCH_START(); for(i = 0; i < N/8; ++i) { r->coeffs[8*i+0] = a[13*i+0]; @@ -784,8 +722,6 @@ void polyt0_unpack(poly *r, const uint8_t *a) { r->coeffs[8*i+6] = (1 << (D-1)) - r->coeffs[8*i+6]; r->coeffs[8*i+7] = (1 << (D-1)) - r->coeffs[8*i+7]; } - - DBENCH_STOP(*tpack); } /************************************************* @@ -802,7 +738,6 @@ void polyt0_unpack(poly *r, const uint8_t *a) { void polyz_pack(ml_dsa_params *params, uint8_t *r, const poly *a) { unsigned int i; uint32_t t[4]; - DBENCH_START(); assert((params->gamma1 == (1 << 17)) || (params->gamma1 == (1 << 19))); @@ -841,7 +776,6 @@ void polyz_pack(ml_dsa_params *params, uint8_t *r, const poly *a) { r[5*i+4] = t[1] >> 12; } } - DBENCH_STOP(*tpack); } /************************************************* @@ -856,7 +790,6 @@ void polyz_pack(ml_dsa_params *params, uint8_t *r, const poly *a) { **************************************************/ void polyz_unpack(ml_dsa_params *params, poly *r, const uint8_t *a) { unsigned int i; - DBENCH_START(); assert((params->gamma1 == (1 << 17)) || (params->gamma1 == (1 << 19))); @@ -905,7 +838,6 @@ void polyz_unpack(ml_dsa_params *params, poly *r, const uint8_t *a) { r->coeffs[2*i+1] = params->gamma1 - r->coeffs[2*i+1]; } } - DBENCH_STOP(*tpack); } /************************************************* @@ -921,7 +853,6 @@ void polyz_unpack(ml_dsa_params *params, poly *r, const uint8_t *a) { **************************************************/ void polyw1_pack(ml_dsa_params *params, uint8_t *r, const poly *a) { unsigned int i; - DBENCH_START(); if (params->gamma2 == (Q-1)/88) { for(i = 0; i < N/4; ++i) { @@ -937,5 +868,4 @@ void polyw1_pack(ml_dsa_params *params, uint8_t *r, const poly *a) { for(i = 0; i < N/2; ++i) r[i] = a->coeffs[2*i+0] | (a->coeffs[2*i+1] << 4); } - DBENCH_STOP(*tpack); } diff --git a/crypto/dilithium/pqcrystals_dilithium_ref_common/polyvec.c b/crypto/dilithium/pqcrystals_dilithium_ref_common/polyvec.c index bb954208ae..ddf6072813 100644 --- a/crypto/dilithium/pqcrystals_dilithium_ref_common/polyvec.c +++ b/crypto/dilithium/pqcrystals_dilithium_ref_common/polyvec.c @@ -6,7 +6,8 @@ /************************************************* * Name: polyvec_matrix_expand * -* Description: Implementation of ExpandA. Generates matrix A with uniformly +* Description: FIPS 204: Algorithm 32 ExpandA. +* Generates matrix A with uniformly * random coefficients a_{i,j} by performing rejection * sampling on the output stream of SHAKE128(rho|j|i) * @@ -18,10 +19,11 @@ void polyvec_matrix_expand(ml_dsa_params *params, polyvecl *mat, const uint8_t rho[SEEDBYTES]) { unsigned int i, j; - - for(i = 0; i < params->k; ++i) - for(j = 0; j < params->l; ++j) + for(i = 0; i < params->k; ++i) { + for(j = 0; j < params->l; ++j) { poly_uniform(&mat[i].vec[j], rho, (i << 8) + j); + } + } } /************************************************* @@ -40,33 +42,56 @@ void polyvec_matrix_pointwise_montgomery(ml_dsa_params *params, const polyvecl *mat, const polyvecl *v) { unsigned int i; - - for(i = 0; i < params->k; ++i) + for(i = 0; i < params->k; ++i) { polyvecl_pointwise_acc_montgomery(params, &t->vec[i], &mat[i], v); + } } /**************************************************************/ /************ Vectors of polynomials of length L **************/ /**************************************************************/ +/************************************************* +* Name: polyvecl_uniform_eta +* +* Description: FIPS 204: Algorithm 33 ExpandS (for vectors l). +* Samples vector v with polynomial coordinates whose +* coefficients are in [-eta, eta]. +* +* Arguments: - ml_dsa_params: parameter struct +* - polyvecl v: pointer to output vector +* - const uint8_t seed: byte array containing seed +* - uint16_t nonce: 2-byte nonce +**************************************************/ void polyvecl_uniform_eta(ml_dsa_params *params, polyvecl *v, const uint8_t seed[CRHBYTES], uint16_t nonce) { unsigned int i; - for(i = 0; i < params->l; ++i) poly_uniform_eta(params, &v->vec[i], seed, nonce++); } +/************************************************* +* Name: polyvecl_uniform_gamma1 +* +* Description: FIPS 204: Algorithm 34 ExpandMask. +* Samples vector v with polynomial coordinates whose +* coefficients are in [-gamma1 + 1, gamma1]. +* +* Arguments: - ml_dsa_params: parameter struct +* - polyvecl v: pointer to output vector +* - const uint8_t seed: byte array containing seed +* - uint16_t nonce: 2-byte nonce +**************************************************/ void polyvecl_uniform_gamma1(ml_dsa_params *params, polyvecl *v, const uint8_t seed[CRHBYTES], uint16_t nonce) { unsigned int i; - - for(i = 0; i < params->l; ++i) + for(i = 0; i < params->l; ++i) { poly_uniform_gamma1(params, &v->vec[i], seed, params->l*nonce + i); + } } /************************************************* @@ -80,9 +105,9 @@ void polyvecl_uniform_gamma1(ml_dsa_params *params, **************************************************/ void polyvecl_reduce(ml_dsa_params *params, polyvecl *v) { unsigned int i; - - for(i = 0; i < params->l; ++i) + for(i = 0; i < params->l; ++i) { poly_reduce(&v->vec[i]); + } } /************************************************* @@ -101,9 +126,9 @@ void polyvecl_add(ml_dsa_params *params, const polyvecl *u, const polyvecl *v) { unsigned int i; - - for(i = 0; i < params->l; ++i) + for(i = 0; i < params->l; ++i) { poly_add(&w->vec[i], &u->vec[i], &v->vec[i]); + } } /************************************************* @@ -117,26 +142,48 @@ void polyvecl_add(ml_dsa_params *params, **************************************************/ void polyvecl_ntt(ml_dsa_params *params, polyvecl *v) { unsigned int i; - - for(i = 0; i < params->l; ++i) + for(i = 0; i < params->l; ++i) { poly_ntt(&v->vec[i]); + } } +/************************************************* +* Name: polyvecl_invntt_tomont +* +* Description: Inverse NTT and multiplication by 2^{32} of polynomials +* in vector of length l. Input coefficients need to be less +* than 2*Q. +* +* Arguments: - ml_dsa_params: parameter struct +* - polyvecl *v: pointer to input/output vector +**************************************************/ void polyvecl_invntt_tomont(ml_dsa_params *params, polyvecl *v) { unsigned int i; - - for(i = 0; i < params->l; ++i) + for(i = 0; i < params->l; ++i) { poly_invntt_tomont(&v->vec[i]); + } } +/************************************************* +* Name: polyvecl_pointwise_poly_montgomery +* +* Description: Pointwise multiplication of polynomials in NTT domain +* representation and multiplication of resulting polynomial +* by 2^{-32}. +* +* Arguments: - ml_dsa_params: parameter struct +* - polyvecl *r: pointer to output polynomial +* - const poly *a: pointer to input polynomial +* - const polyvecl *v: pointer to input vector +**************************************************/ void polyvecl_pointwise_poly_montgomery(ml_dsa_params *params, polyvecl *r, const poly *a, const polyvecl *v) { unsigned int i; - - for(i = 0; i < params->l; ++i) + for(i = 0; i < params->l; ++i) { poly_pointwise_montgomery(&r->vec[i], a, &v->vec[i]); + } } /************************************************* @@ -158,7 +205,6 @@ void polyvecl_pointwise_acc_montgomery(ml_dsa_params *params, { unsigned int i; poly t; - poly_pointwise_montgomery(w, &u->vec[0], &v->vec[0]); for(i = 1; i < params->l; ++i) { poly_pointwise_montgomery(&t, &u->vec[i], &v->vec[i]); @@ -181,11 +227,11 @@ void polyvecl_pointwise_acc_montgomery(ml_dsa_params *params, **************************************************/ int polyvecl_chknorm(ml_dsa_params *params, const polyvecl *v, int32_t bound) { unsigned int i; - - for(i = 0; i < params->l; ++i) - if(poly_chknorm(&v->vec[i], bound)) + for(i = 0; i < params->l; ++i) { + if(poly_chknorm(&v->vec[i], bound)) { return 1; - + } + } return 0; } @@ -193,14 +239,26 @@ int polyvecl_chknorm(ml_dsa_params *params, const polyvecl *v, int32_t bound) { /************ Vectors of polynomials of length K **************/ /**************************************************************/ +/************************************************* +* Name: polyvecl_uniform_eta +* +* Description: FIPS 204: Algorithm 33 ExpandS (for vectors k). +* Samples vector v with polynomial coordinates whose +* coefficients are in [-eta, eta]. +* +* Arguments: - ml_dsa_params: parameter struct +* - polyveck v: pointer to output vector +* - const uint8_t seed: byte array containing seed +* - uint16_t nonce: 2-byte nonce +**************************************************/ void polyveck_uniform_eta(ml_dsa_params *params, polyveck *v, const uint8_t seed[CRHBYTES], uint16_t nonce) { unsigned int i; - - for(i = 0; i < params->k; ++i) + for(i = 0; i < params->k; ++i) { poly_uniform_eta(params, &v->vec[i], seed, nonce++); + } } /************************************************* @@ -214,9 +272,9 @@ void polyveck_uniform_eta(ml_dsa_params *params, **************************************************/ void polyveck_reduce(ml_dsa_params *params, polyveck *v) { unsigned int i; - - for(i = 0; i < params->k; ++i) + for(i = 0; i < params->k; ++i) { poly_reduce(&v->vec[i]); + } } /************************************************* @@ -230,9 +288,9 @@ void polyveck_reduce(ml_dsa_params *params, polyveck *v) { **************************************************/ void polyveck_caddq(ml_dsa_params *params, polyveck *v) { unsigned int i; - - for(i = 0; i < params->k; ++i) + for(i = 0; i < params->k; ++i) { poly_caddq(&v->vec[i]); + } } /************************************************* @@ -251,9 +309,9 @@ void polyveck_add(ml_dsa_params *params, const polyveck *u, const polyveck *v) { unsigned int i; - - for(i = 0; i < params->k; ++i) + for(i = 0; i < params->k; ++i) { poly_add(&w->vec[i], &u->vec[i], &v->vec[i]); + } } /************************************************* @@ -273,9 +331,9 @@ void polyveck_sub(ml_dsa_params *params, const polyveck *u, const polyveck *v) { unsigned int i; - - for(i = 0; i < params->k; ++i) + for(i = 0; i < params->k; ++i) { poly_sub(&w->vec[i], &u->vec[i], &v->vec[i]); + } } /************************************************* @@ -289,9 +347,9 @@ void polyveck_sub(ml_dsa_params *params, **************************************************/ void polyveck_shiftl(ml_dsa_params *params, polyveck *v) { unsigned int i; - - for(i = 0; i < params->k; ++i) + for(i = 0; i < params->k; ++i) { poly_shiftl(&v->vec[i]); + } } /************************************************* @@ -305,12 +363,11 @@ void polyveck_shiftl(ml_dsa_params *params, polyveck *v) { **************************************************/ void polyveck_ntt(ml_dsa_params *params, polyveck *v) { unsigned int i; - - for(i = 0; i < params->k; ++i) + for(i = 0; i < params->k; ++i) { poly_ntt(&v->vec[i]); + } } - /************************************************* * Name: polyveck_invntt_tomont * @@ -323,19 +380,31 @@ void polyveck_ntt(ml_dsa_params *params, polyveck *v) { **************************************************/ void polyveck_invntt_tomont(ml_dsa_params *params, polyveck *v) { unsigned int i; - - for(i = 0; i < params->k; ++i) + for(i = 0; i < params->k; ++i) { poly_invntt_tomont(&v->vec[i]); + } } +/************************************************* +* Name: polyveck_pointwise_poly_montgomery +* +* Description: Pointwise multiplication of polynomials in NTT domain +* representation and multiplication of resulting polynomial +* by 2^{-32}. +* +* Arguments: - ml_dsa_params: parameter struct +* - polyveck *r: pointer to output polynomial +* - const poly *a: pointer to input polynomial +* - const polyveck *v: pointer to input vector +**************************************************/ void polyveck_pointwise_poly_montgomery(ml_dsa_params *params, polyveck *r, const poly *a, const polyveck *v) { unsigned int i; - - for(i = 0; i < params->k; ++i) + for(i = 0; i < params->k; ++i) { poly_pointwise_montgomery(&r->vec[i], a, &v->vec[i]); + } } /************************************************* @@ -353,11 +422,11 @@ void polyveck_pointwise_poly_montgomery(ml_dsa_params *params, **************************************************/ int polyveck_chknorm(ml_dsa_params *params, const polyveck *v, int32_t bound) { unsigned int i; - - for(i = 0; i < params->k; ++i) - if(poly_chknorm(&v->vec[i], bound)) + for(i = 0; i < params->k; ++i) { + if(poly_chknorm(&v->vec[i], bound)) { return 1; - + } + } return 0; } @@ -381,9 +450,9 @@ void polyveck_power2round(ml_dsa_params *params, polyveck *v0, const polyveck *v) { unsigned int i; - - for(i = 0; i < params->k; ++i) + for(i = 0; i < params->k; ++i) { poly_power2round(&v1->vec[i], &v0->vec[i], &v->vec[i]); + } } /************************************************* @@ -407,9 +476,9 @@ void polyveck_decompose(ml_dsa_params *params, polyveck *v0, const polyveck *v) { unsigned int i; - - for(i = 0; i < params->k; ++i) + for(i = 0; i < params->k; ++i) { poly_decompose(params, &v1->vec[i], &v0->vec[i], &v->vec[i]); + } } /************************************************* @@ -430,10 +499,9 @@ unsigned int polyveck_make_hint(ml_dsa_params *params, const polyveck *v1) { unsigned int i, s = 0; - - for(i = 0; i < params->k; ++i) + for(i = 0; i < params->k; ++i) { s += poly_make_hint(params, &h->vec[i], &v0->vec[i], &v1->vec[i]); - + } return s; } @@ -453,16 +521,27 @@ void polyveck_use_hint(ml_dsa_params *params, const polyveck *u, const polyveck *h) { unsigned int i; - - for(i = 0; i < params->k; ++i) + for(i = 0; i < params->k; ++i) { poly_use_hint(params, &w->vec[i], &u->vec[i], &h->vec[i]); + } } +/************************************************* +* Name: polyveck_pack_w1 +* +* Description: FIPS 204: Algorithm 28 w1Encode. +* Encodes a polynomial vector |w1| into a byte string. +* +* Arguments: - ml_dsa_params: parameter struct +* - uint8_t *r: pointer to output byte array with at least +* POLYW1_PACKEDBYTES bytes +* - const polyvecl *w1: pointer to vector w1 +**************************************************/ void polyveck_pack_w1(ml_dsa_params *params, uint8_t *r, const polyveck *w1) { unsigned int i; - - for(i = 0; i < params->k; ++i) + for(i = 0; i < params->k; ++i) { polyw1_pack(params, &r[i*params->poly_w1_packed_bytes], &w1->vec[i]); + } } diff --git a/crypto/dilithium/pqcrystals_dilithium_ref_common/rounding.c b/crypto/dilithium/pqcrystals_dilithium_ref_common/rounding.c index d3a13f1799..4bff538887 100644 --- a/crypto/dilithium/pqcrystals_dilithium_ref_common/rounding.c +++ b/crypto/dilithium/pqcrystals_dilithium_ref_common/rounding.c @@ -5,7 +5,8 @@ /************************************************* * Name: power2round * -* Description: For finite field element a, compute a0, a1 such that +* Description: FIPS 204: Algorithm 35. +* For finite field element a, compute a0, a1 such that * a mod^+ Q = a1*2^D + a0 with -2^{D-1} < a0 <= 2^{D-1}. * Assumes a to be standard representative. * @@ -25,7 +26,8 @@ int32_t power2round(int32_t *a0, int32_t a) { /************************************************* * Name: decompose * -* Description: For finite field element a, compute high and low bits a0, a1 such +* Description: FIPS 204: Algorithm 36. +* For finite field element a, compute high and low bits a0, a1 such * that a mod^+ Q = a1*ALPHA + a0 with -ALPHA/2 < a0 <= ALPHA/2 except * if a1 = (Q-1)/ALPHA where we set a1 = 0 and * -ALPHA/2 <= a0 = a mod^+ Q - Q < 0. Assumes a to be standard @@ -59,7 +61,8 @@ int32_t decompose(ml_dsa_params *params, int32_t *a0, int32_t a) { /************************************************* * Name: make_hint * -* Description: Compute hint bit indicating whether the low bits of the +* Description: FIPS 204: Algorithm 39 MakeHint. +* Compute hint bit indicating whether the low bits of the * input element overflow into the high bits. * * Arguments: - ml_dsa_params: parameter struct @@ -69,16 +72,18 @@ int32_t decompose(ml_dsa_params *params, int32_t *a0, int32_t a) { * Returns 1 if overflow. **************************************************/ unsigned int make_hint(ml_dsa_params *params, int32_t a0, int32_t a1) { - if(a0 > (params->gamma2) || a0 < -(params->gamma2) || (a0 == -(params->gamma2) && a1 != 0)) + if(a0 > (params->gamma2) || a0 < -(params->gamma2) || + (a0 == -(params->gamma2) && a1 != 0)) { return 1; - + } return 0; } /************************************************* * Name: use_hint * -* Description: Correct high bits according to hint. +* Description: FIPS 204: Algorithm 40 UseHint. +* Correct high bits according to hint. * * Arguments: - ml_dsa_params: parameter struct * - int32_t a: input element @@ -92,19 +97,24 @@ int32_t use_hint(ml_dsa_params *params, int32_t a, unsigned int hint) { assert((params->gamma2 == (Q-1)/32) || (params->gamma2 == (Q-1)/88)); a1 = decompose(params, &a0, a); - if(hint == 0) + if(hint == 0) { return a1; + } if (params->gamma2 == (Q-1)/32) { - if(a0 > 0) + if(a0 > 0) { return (a1 + 1) & 15; - else + } + else { return (a1 - 1) & 15; + } } else { - if(a0 > 0) + if(a0 > 0) { return (a1 == 43) ? 0 : a1 + 1; - else + } + else { return (a1 == 0) ? 43 : a1 - 1; + } } } diff --git a/crypto/dilithium/pqcrystals_dilithium_ref_common/sign.c b/crypto/dilithium/pqcrystals_dilithium_ref_common/sign.c index 14d98c0014..ea3ffb5cc7 100644 --- a/crypto/dilithium/pqcrystals_dilithium_ref_common/sign.c +++ b/crypto/dilithium/pqcrystals_dilithium_ref_common/sign.c @@ -69,6 +69,16 @@ int crypto_sign_keypair_internal(ml_dsa_params *params, /* FIPS 204: line 9 Compute H(rho, t1) and line 10 write secret key */ shake256(tr, TRBYTES, pk, params->public_key_bytes); pack_sk(params, sk, rho, tr, key, &t0, &s1, &s2); + + /* FIPS 204. Section 3.6.3 Destruction of intermediate values. */ + OPENSSL_cleanse(seedbuf, sizeof(seedbuf)); + OPENSSL_cleanse(tr, sizeof(tr)); + OPENSSL_cleanse(mat, sizeof(mat)); + OPENSSL_cleanse(&s1, sizeof(s1)); + OPENSSL_cleanse(&s1hat, sizeof(s1hat)); + OPENSSL_cleanse(&s2, sizeof(s2)); + OPENSSL_cleanse(&t1, sizeof(t1)); + OPENSSL_cleanse(&t0, sizeof(t0)); return 0; } @@ -92,6 +102,7 @@ int crypto_sign_keypair(ml_dsa_params *params, uint8_t *pk, uint8_t *sk) { return -1; } crypto_sign_keypair_internal(params, pk, sk, seed); + OPENSSL_cleanse(seed, sizeof(seed)); return 0; } @@ -225,6 +236,21 @@ int crypto_sign_signature_internal(ml_dsa_params *params, /* FIPS 204: line 33 Write signature */ pack_sig(params, sig, sig, &z, &h); *siglen = params->bytes; + + /* FIPS 204. Section 3.6.3 Destruction of intermediate values. */ + OPENSSL_cleanse(seedbuf, sizeof(seedbuf)); + OPENSSL_cleanse(&nonce, sizeof(nonce)); + OPENSSL_cleanse(mat, sizeof(mat)); + OPENSSL_cleanse(&s1, sizeof(s1)); + OPENSSL_cleanse(&y, sizeof(y)); + OPENSSL_cleanse(&z, sizeof(z)); + OPENSSL_cleanse(&t0, sizeof(t0)); + OPENSSL_cleanse(&s2, sizeof(s2)); + OPENSSL_cleanse(&w1, sizeof(w1)); + OPENSSL_cleanse(&w0, sizeof(w0)); + OPENSSL_cleanse(&h, sizeof(h)); + OPENSSL_cleanse(&cp, sizeof(cp)); + OPENSSL_cleanse(&state, sizeof(state)); return 0; } @@ -268,6 +294,10 @@ int crypto_sign_signature(ml_dsa_params *params, return -1; } crypto_sign_signature_internal(params, sig, siglen, m, mlen, pre, 2 + ctxlen, rnd, sk); + + /* FIPS 204. Section 3.6.3 Destruction of intermediate values. */ + OPENSSL_cleanse(pre, sizeof(pre)); + OPENSSL_cleanse(rnd, sizeof(rnd)); return 0; } @@ -405,6 +435,20 @@ int crypto_sign_verify_internal(ml_dsa_params *params, return -1; } } + /* FIPS 204. Section 3.6.3 Destruction of intermediate values. */ + OPENSSL_cleanse(buf, sizeof(buf)); + OPENSSL_cleanse(rho, sizeof(rho)); + OPENSSL_cleanse(mu, sizeof(mu)); + OPENSSL_cleanse(tr, sizeof(tr)); + OPENSSL_cleanse(c, sizeof(c)); + OPENSSL_cleanse(c2, sizeof(c2)); + OPENSSL_cleanse(&cp, sizeof(cp)); + OPENSSL_cleanse(mat, sizeof(mat)); + OPENSSL_cleanse(&z, sizeof(z)); + OPENSSL_cleanse(&t1, sizeof(t1)); + OPENSSL_cleanse(&w1, sizeof(w1)); + OPENSSL_cleanse(&h, sizeof(h)); + OPENSSL_cleanse(&state, sizeof(state)); return 0; } From 0eaa0a84d755810cecf81200fc6eaa35351b426a Mon Sep 17 00:00:00 2001 From: Jake Massimo Date: Tue, 10 Dec 2024 07:50:57 -0800 Subject: [PATCH 03/12] Switch ML-DSA to use AWS-LC SHA3 (#2001) --- crypto/dilithium/ml_dsa.c | 2 - .../pqcrystals_dilithium_ref_common/README.md | 3 +- .../pqcrystals_dilithium_ref_common/fips202.c | 774 ------------------ .../pqcrystals_dilithium_ref_common/fips202.h | 64 -- .../pqcrystals_dilithium_ref_common/params.h | 2 +- .../pqcrystals_dilithium_ref_common/poly.c | 72 +- .../pqcrystals_dilithium_ref_common/sign.c | 65 +- .../symmetric-shake.c | 28 - .../symmetric.h | 33 - crypto/fipsmodule/sha/internal.h | 1 + 10 files changed, 79 insertions(+), 965 deletions(-) delete mode 100644 crypto/dilithium/pqcrystals_dilithium_ref_common/fips202.c delete mode 100644 crypto/dilithium/pqcrystals_dilithium_ref_common/fips202.h delete mode 100644 crypto/dilithium/pqcrystals_dilithium_ref_common/symmetric-shake.c delete mode 100644 crypto/dilithium/pqcrystals_dilithium_ref_common/symmetric.h diff --git a/crypto/dilithium/ml_dsa.c b/crypto/dilithium/ml_dsa.c index a3a67ff392..1c80a1a524 100644 --- a/crypto/dilithium/ml_dsa.c +++ b/crypto/dilithium/ml_dsa.c @@ -9,7 +9,6 @@ // These includes are required to compile ML-DSA. These can be moved to bcm.c // when ML-DSA is added to the fipsmodule directory. -#include "./pqcrystals_dilithium_ref_common/fips202.c" #include "./pqcrystals_dilithium_ref_common/ntt.c" #include "./pqcrystals_dilithium_ref_common/packing.c" #include "./pqcrystals_dilithium_ref_common/params.c" @@ -18,7 +17,6 @@ #include "./pqcrystals_dilithium_ref_common/reduce.c" #include "./pqcrystals_dilithium_ref_common/rounding.c" #include "./pqcrystals_dilithium_ref_common/sign.c" -#include "./pqcrystals_dilithium_ref_common/symmetric-shake.c" // Note: These methods currently default to using the reference code for // ML-DSA. In a future where AWS-LC has optimized options available, diff --git a/crypto/dilithium/pqcrystals_dilithium_ref_common/README.md b/crypto/dilithium/pqcrystals_dilithium_ref_common/README.md index db45b8e711..b91cf92d1b 100644 --- a/crypto/dilithium/pqcrystals_dilithium_ref_common/README.md +++ b/crypto/dilithium/pqcrystals_dilithium_ref_common/README.md @@ -10,6 +10,7 @@ The code was refactored in [this PR](https://github.com/aws/aws-lc/pull/1910) by that initialize a given structure with values corresponding to a parameter set. This structure is then passed to every function that requires it as a function argument. In addition, the following changes were made to the source code in `pqcrystals_dilithium_ref_common` directory: - `randombytes.{h|c}` are deleted because we are using the randomness generation functions provided by AWS-LC. +- `fips202.{h|c}`, `symmetric.h`, `symmetric-shake.c` are deleted as all SHA3/SHAKE functionality is provided instead by AWS-LC fipsmodule/sha rather than the reference implementation. Calls to `dilithium_shake128_stream_init` and `dilithium_shake256_stream_init` have been inlined. - `sign.c`: calls to `randombytes` function is replaced with calls to `RAND_bytes` and the appropriate header file is included (`openssl/rand.h`). - `ntt.c`, `poly.c`, `reduce.c`, `reduce.h`: have been modified with a code refactor. The function `fqmul` has been added to bring mode code consistency with Kyber/ML-KEM. See https://github.com/aws/aws-lc/pull/1748 for more details on this change. - `reduce.c`: a small fix to documentation has been made on the bounds of `reduce32`. @@ -21,4 +22,4 @@ that initialize a given structure with values corresponding to a parameter set. **Testing** -The KATs were obtained from https://github.com/post-quantum-cryptography/KAT. We select the KATs for the signing mode `hedged`, which derives the signing private random seed (rho) pseudorandomly from the signer's private key, the message to be signed, and a 256-bit string `rnd` which is generated at random. The `pure` variant of these KATs were used, as they provide test vector inputs for "pure" i.e., non-pre-hashed messages. The KAT files have been modified to insert linebreaks between each test vector set. \ No newline at end of file +The KATs were obtained from https://github.com/post-quantum-cryptography/KAT. We select the KATs for the signing mode `hedged`, which derives the signing private random seed (rho) pseudorandomly from the signer's private key, the message to be signed, and a 256-bit string `rnd` which is generated at random. The `pure` variant of these KATs were used, as they provide test vector inputs for "pure" i.e., non-pre-hashed messages. The KAT files have been modified to insert linebreaks between each test vector set. diff --git a/crypto/dilithium/pqcrystals_dilithium_ref_common/fips202.c b/crypto/dilithium/pqcrystals_dilithium_ref_common/fips202.c deleted file mode 100644 index 2afe799ea7..0000000000 --- a/crypto/dilithium/pqcrystals_dilithium_ref_common/fips202.c +++ /dev/null @@ -1,774 +0,0 @@ -/* Based on the public domain implementation in crypto_hash/keccakc512/simple/ from - * http://bench.cr.yp.to/supercop.html by Ronny Van Keer and the public domain "TweetFips202" - * implementation from https://twitter.com/tweetfips202 by Gilles Van Assche, Daniel J. Bernstein, - * and Peter Schwabe */ - -#include -#include -#include "fips202.h" - -#define NROUNDS 24 -#define ROL(a, offset) ((a << offset) ^ (a >> (64-offset))) - -/************************************************* -* Name: load64 -* -* Description: Load 8 bytes into uint64_t in little-endian order -* -* Arguments: - const uint8_t *x: pointer to input byte array -* -* Returns the loaded 64-bit unsigned integer -**************************************************/ -static uint64_t load64(const uint8_t x[8]) { - unsigned int i; - uint64_t r = 0; - - for(i=0;i<8;i++) - r |= (uint64_t)x[i] << 8*i; - - return r; -} - -/************************************************* -* Name: store64 -* -* Description: Store a 64-bit integer to array of 8 bytes in little-endian order -* -* Arguments: - uint8_t *x: pointer to the output byte array (allocated) -* - uint64_t u: input 64-bit unsigned integer -**************************************************/ -static void store64(uint8_t x[8], uint64_t u) { - unsigned int i; - - for(i=0;i<8;i++) - x[i] = u >> 8*i; -} - -/* Keccak round constants */ -const uint64_t KeccakF_RoundConstants[NROUNDS] = { - (uint64_t)0x0000000000000001ULL, - (uint64_t)0x0000000000008082ULL, - (uint64_t)0x800000000000808aULL, - (uint64_t)0x8000000080008000ULL, - (uint64_t)0x000000000000808bULL, - (uint64_t)0x0000000080000001ULL, - (uint64_t)0x8000000080008081ULL, - (uint64_t)0x8000000000008009ULL, - (uint64_t)0x000000000000008aULL, - (uint64_t)0x0000000000000088ULL, - (uint64_t)0x0000000080008009ULL, - (uint64_t)0x000000008000000aULL, - (uint64_t)0x000000008000808bULL, - (uint64_t)0x800000000000008bULL, - (uint64_t)0x8000000000008089ULL, - (uint64_t)0x8000000000008003ULL, - (uint64_t)0x8000000000008002ULL, - (uint64_t)0x8000000000000080ULL, - (uint64_t)0x000000000000800aULL, - (uint64_t)0x800000008000000aULL, - (uint64_t)0x8000000080008081ULL, - (uint64_t)0x8000000000008080ULL, - (uint64_t)0x0000000080000001ULL, - (uint64_t)0x8000000080008008ULL -}; - -/************************************************* -* Name: KeccakF1600_StatePermute -* -* Description: The Keccak F1600 Permutation -* -* Arguments: - uint64_t *state: pointer to input/output Keccak state -**************************************************/ -static void KeccakF1600_StatePermute(uint64_t state[25]) -{ - int round; - - uint64_t Aba, Abe, Abi, Abo, Abu; - uint64_t Aga, Age, Agi, Ago, Agu; - uint64_t Aka, Ake, Aki, Ako, Aku; - uint64_t Ama, Ame, Ami, Amo, Amu; - uint64_t Asa, Ase, Asi, Aso, Asu; - uint64_t BCa, BCe, BCi, BCo, BCu; - uint64_t Da, De, Di, Do, Du; - uint64_t Eba, Ebe, Ebi, Ebo, Ebu; - uint64_t Ega, Ege, Egi, Ego, Egu; - uint64_t Eka, Eke, Eki, Eko, Eku; - uint64_t Ema, Eme, Emi, Emo, Emu; - uint64_t Esa, Ese, Esi, Eso, Esu; - - //copyFromState(A, state) - Aba = state[ 0]; - Abe = state[ 1]; - Abi = state[ 2]; - Abo = state[ 3]; - Abu = state[ 4]; - Aga = state[ 5]; - Age = state[ 6]; - Agi = state[ 7]; - Ago = state[ 8]; - Agu = state[ 9]; - Aka = state[10]; - Ake = state[11]; - Aki = state[12]; - Ako = state[13]; - Aku = state[14]; - Ama = state[15]; - Ame = state[16]; - Ami = state[17]; - Amo = state[18]; - Amu = state[19]; - Asa = state[20]; - Ase = state[21]; - Asi = state[22]; - Aso = state[23]; - Asu = state[24]; - - for(round = 0; round < NROUNDS; round += 2) { - // prepareTheta - BCa = Aba^Aga^Aka^Ama^Asa; - BCe = Abe^Age^Ake^Ame^Ase; - BCi = Abi^Agi^Aki^Ami^Asi; - BCo = Abo^Ago^Ako^Amo^Aso; - BCu = Abu^Agu^Aku^Amu^Asu; - - //thetaRhoPiChiIotaPrepareTheta(round, A, E) - Da = BCu^ROL(BCe, 1); - De = BCa^ROL(BCi, 1); - Di = BCe^ROL(BCo, 1); - Do = BCi^ROL(BCu, 1); - Du = BCo^ROL(BCa, 1); - - Aba ^= Da; - BCa = Aba; - Age ^= De; - BCe = ROL(Age, 44); - Aki ^= Di; - BCi = ROL(Aki, 43); - Amo ^= Do; - BCo = ROL(Amo, 21); - Asu ^= Du; - BCu = ROL(Asu, 14); - Eba = BCa ^((~BCe)& BCi ); - Eba ^= (uint64_t)KeccakF_RoundConstants[round]; - Ebe = BCe ^((~BCi)& BCo ); - Ebi = BCi ^((~BCo)& BCu ); - Ebo = BCo ^((~BCu)& BCa ); - Ebu = BCu ^((~BCa)& BCe ); - - Abo ^= Do; - BCa = ROL(Abo, 28); - Agu ^= Du; - BCe = ROL(Agu, 20); - Aka ^= Da; - BCi = ROL(Aka, 3); - Ame ^= De; - BCo = ROL(Ame, 45); - Asi ^= Di; - BCu = ROL(Asi, 61); - Ega = BCa ^((~BCe)& BCi ); - Ege = BCe ^((~BCi)& BCo ); - Egi = BCi ^((~BCo)& BCu ); - Ego = BCo ^((~BCu)& BCa ); - Egu = BCu ^((~BCa)& BCe ); - - Abe ^= De; - BCa = ROL(Abe, 1); - Agi ^= Di; - BCe = ROL(Agi, 6); - Ako ^= Do; - BCi = ROL(Ako, 25); - Amu ^= Du; - BCo = ROL(Amu, 8); - Asa ^= Da; - BCu = ROL(Asa, 18); - Eka = BCa ^((~BCe)& BCi ); - Eke = BCe ^((~BCi)& BCo ); - Eki = BCi ^((~BCo)& BCu ); - Eko = BCo ^((~BCu)& BCa ); - Eku = BCu ^((~BCa)& BCe ); - - Abu ^= Du; - BCa = ROL(Abu, 27); - Aga ^= Da; - BCe = ROL(Aga, 36); - Ake ^= De; - BCi = ROL(Ake, 10); - Ami ^= Di; - BCo = ROL(Ami, 15); - Aso ^= Do; - BCu = ROL(Aso, 56); - Ema = BCa ^((~BCe)& BCi ); - Eme = BCe ^((~BCi)& BCo ); - Emi = BCi ^((~BCo)& BCu ); - Emo = BCo ^((~BCu)& BCa ); - Emu = BCu ^((~BCa)& BCe ); - - Abi ^= Di; - BCa = ROL(Abi, 62); - Ago ^= Do; - BCe = ROL(Ago, 55); - Aku ^= Du; - BCi = ROL(Aku, 39); - Ama ^= Da; - BCo = ROL(Ama, 41); - Ase ^= De; - BCu = ROL(Ase, 2); - Esa = BCa ^((~BCe)& BCi ); - Ese = BCe ^((~BCi)& BCo ); - Esi = BCi ^((~BCo)& BCu ); - Eso = BCo ^((~BCu)& BCa ); - Esu = BCu ^((~BCa)& BCe ); - - // prepareTheta - BCa = Eba^Ega^Eka^Ema^Esa; - BCe = Ebe^Ege^Eke^Eme^Ese; - BCi = Ebi^Egi^Eki^Emi^Esi; - BCo = Ebo^Ego^Eko^Emo^Eso; - BCu = Ebu^Egu^Eku^Emu^Esu; - - //thetaRhoPiChiIotaPrepareTheta(round+1, E, A) - Da = BCu^ROL(BCe, 1); - De = BCa^ROL(BCi, 1); - Di = BCe^ROL(BCo, 1); - Do = BCi^ROL(BCu, 1); - Du = BCo^ROL(BCa, 1); - - Eba ^= Da; - BCa = Eba; - Ege ^= De; - BCe = ROL(Ege, 44); - Eki ^= Di; - BCi = ROL(Eki, 43); - Emo ^= Do; - BCo = ROL(Emo, 21); - Esu ^= Du; - BCu = ROL(Esu, 14); - Aba = BCa ^((~BCe)& BCi ); - Aba ^= (uint64_t)KeccakF_RoundConstants[round+1]; - Abe = BCe ^((~BCi)& BCo ); - Abi = BCi ^((~BCo)& BCu ); - Abo = BCo ^((~BCu)& BCa ); - Abu = BCu ^((~BCa)& BCe ); - - Ebo ^= Do; - BCa = ROL(Ebo, 28); - Egu ^= Du; - BCe = ROL(Egu, 20); - Eka ^= Da; - BCi = ROL(Eka, 3); - Eme ^= De; - BCo = ROL(Eme, 45); - Esi ^= Di; - BCu = ROL(Esi, 61); - Aga = BCa ^((~BCe)& BCi ); - Age = BCe ^((~BCi)& BCo ); - Agi = BCi ^((~BCo)& BCu ); - Ago = BCo ^((~BCu)& BCa ); - Agu = BCu ^((~BCa)& BCe ); - - Ebe ^= De; - BCa = ROL(Ebe, 1); - Egi ^= Di; - BCe = ROL(Egi, 6); - Eko ^= Do; - BCi = ROL(Eko, 25); - Emu ^= Du; - BCo = ROL(Emu, 8); - Esa ^= Da; - BCu = ROL(Esa, 18); - Aka = BCa ^((~BCe)& BCi ); - Ake = BCe ^((~BCi)& BCo ); - Aki = BCi ^((~BCo)& BCu ); - Ako = BCo ^((~BCu)& BCa ); - Aku = BCu ^((~BCa)& BCe ); - - Ebu ^= Du; - BCa = ROL(Ebu, 27); - Ega ^= Da; - BCe = ROL(Ega, 36); - Eke ^= De; - BCi = ROL(Eke, 10); - Emi ^= Di; - BCo = ROL(Emi, 15); - Eso ^= Do; - BCu = ROL(Eso, 56); - Ama = BCa ^((~BCe)& BCi ); - Ame = BCe ^((~BCi)& BCo ); - Ami = BCi ^((~BCo)& BCu ); - Amo = BCo ^((~BCu)& BCa ); - Amu = BCu ^((~BCa)& BCe ); - - Ebi ^= Di; - BCa = ROL(Ebi, 62); - Ego ^= Do; - BCe = ROL(Ego, 55); - Eku ^= Du; - BCi = ROL(Eku, 39); - Ema ^= Da; - BCo = ROL(Ema, 41); - Ese ^= De; - BCu = ROL(Ese, 2); - Asa = BCa ^((~BCe)& BCi ); - Ase = BCe ^((~BCi)& BCo ); - Asi = BCi ^((~BCo)& BCu ); - Aso = BCo ^((~BCu)& BCa ); - Asu = BCu ^((~BCa)& BCe ); - } - - //copyToState(state, A) - state[ 0] = Aba; - state[ 1] = Abe; - state[ 2] = Abi; - state[ 3] = Abo; - state[ 4] = Abu; - state[ 5] = Aga; - state[ 6] = Age; - state[ 7] = Agi; - state[ 8] = Ago; - state[ 9] = Agu; - state[10] = Aka; - state[11] = Ake; - state[12] = Aki; - state[13] = Ako; - state[14] = Aku; - state[15] = Ama; - state[16] = Ame; - state[17] = Ami; - state[18] = Amo; - state[19] = Amu; - state[20] = Asa; - state[21] = Ase; - state[22] = Asi; - state[23] = Aso; - state[24] = Asu; -} - -/************************************************* -* Name: keccak_init -* -* Description: Initializes the Keccak state. -* -* Arguments: - uint64_t *s: pointer to Keccak state -**************************************************/ -static void keccak_init(uint64_t s[25]) -{ - unsigned int i; - for(i=0;i<25;i++) - s[i] = 0; -} - -/************************************************* -* Name: keccak_absorb -* -* Description: Absorb step of Keccak; incremental. -* -* Arguments: - uint64_t *s: pointer to Keccak state -* - unsigned int pos: position in current block to be absorbed -* - unsigned int r: rate in bytes (e.g., 168 for SHAKE128) -* - const uint8_t *in: pointer to input to be absorbed into s -* - size_t inlen: length of input in bytes -* -* Returns new position pos in current block -**************************************************/ -static unsigned int keccak_absorb(uint64_t s[25], - unsigned int pos, - unsigned int r, - const uint8_t *in, - size_t inlen) -{ - unsigned int i; - - while(pos+inlen >= r) { - for(i=pos;i> 8*(i%8); - outlen -= i-pos; - pos = i; - } - - return pos; -} - - -/************************************************* -* Name: keccak_absorb_once -* -* Description: Absorb step of Keccak; -* non-incremental, starts by zeroeing the state. -* -* Arguments: - uint64_t *s: pointer to (uninitialized) output Keccak state -* - unsigned int r: rate in bytes (e.g., 168 for SHAKE128) -* - const uint8_t *in: pointer to input to be absorbed into s -* - size_t inlen: length of input in bytes -* - uint8_t p: domain-separation byte for different Keccak-derived functions -**************************************************/ -static void keccak_absorb_once(uint64_t s[25], - unsigned int r, - const uint8_t *in, - size_t inlen, - uint8_t p) -{ - unsigned int i; - - for(i=0;i<25;i++) - s[i] = 0; - - while(inlen >= r) { - for(i=0;is); - state->pos = 0; -} - -/************************************************* -* Name: shake128_absorb -* -* Description: Absorb step of the SHAKE128 XOF; incremental. -* -* Arguments: - keccak_state *state: pointer to (initialized) output Keccak state -* - const uint8_t *in: pointer to input to be absorbed into s -* - size_t inlen: length of input in bytes -**************************************************/ -void shake128_absorb(keccak_state *state, const uint8_t *in, size_t inlen) -{ - state->pos = keccak_absorb(state->s, state->pos, SHAKE128_RATE, in, inlen); -} - -/************************************************* -* Name: shake128_finalize -* -* Description: Finalize absorb step of the SHAKE128 XOF. -* -* Arguments: - keccak_state *state: pointer to Keccak state -**************************************************/ -void shake128_finalize(keccak_state *state) -{ - keccak_finalize(state->s, state->pos, SHAKE128_RATE, 0x1F); - state->pos = SHAKE128_RATE; -} - -/************************************************* -* Name: shake128_squeeze -* -* Description: Squeeze step of SHAKE128 XOF. Squeezes arbitraily many -* bytes. Can be called multiple times to keep squeezing. -* -* Arguments: - uint8_t *out: pointer to output blocks -* - size_t outlen : number of bytes to be squeezed (written to output) -* - keccak_state *s: pointer to input/output Keccak state -**************************************************/ -void shake128_squeeze(uint8_t *out, size_t outlen, keccak_state *state) -{ - state->pos = keccak_squeeze(out, outlen, state->s, state->pos, SHAKE128_RATE); -} - -/************************************************* -* Name: shake128_absorb_once -* -* Description: Initialize, absorb into and finalize SHAKE128 XOF; non-incremental. -* -* Arguments: - keccak_state *state: pointer to (uninitialized) output Keccak state -* - const uint8_t *in: pointer to input to be absorbed into s -* - size_t inlen: length of input in bytes -**************************************************/ -void shake128_absorb_once(keccak_state *state, const uint8_t *in, size_t inlen) -{ - keccak_absorb_once(state->s, SHAKE128_RATE, in, inlen, 0x1F); - state->pos = SHAKE128_RATE; -} - -/************************************************* -* Name: shake128_squeezeblocks -* -* Description: Squeeze step of SHAKE128 XOF. Squeezes full blocks of -* SHAKE128_RATE bytes each. Can be called multiple times -* to keep squeezing. Assumes new block has not yet been -* started (state->pos = SHAKE128_RATE). -* -* Arguments: - uint8_t *out: pointer to output blocks -* - size_t nblocks: number of blocks to be squeezed (written to output) -* - keccak_state *s: pointer to input/output Keccak state -**************************************************/ -void shake128_squeezeblocks(uint8_t *out, size_t nblocks, keccak_state *state) -{ - keccak_squeezeblocks(out, nblocks, state->s, SHAKE128_RATE); -} - -/************************************************* -* Name: shake256_init -* -* Description: Initilizes Keccak state for use as SHAKE256 XOF -* -* Arguments: - keccak_state *state: pointer to (uninitialized) Keccak state -**************************************************/ -void shake256_init(keccak_state *state) -{ - keccak_init(state->s); - state->pos = 0; -} - -/************************************************* -* Name: shake256_absorb -* -* Description: Absorb step of the SHAKE256 XOF; incremental. -* -* Arguments: - keccak_state *state: pointer to (initialized) output Keccak state -* - const uint8_t *in: pointer to input to be absorbed into s -* - size_t inlen: length of input in bytes -**************************************************/ -void shake256_absorb(keccak_state *state, const uint8_t *in, size_t inlen) -{ - state->pos = keccak_absorb(state->s, state->pos, SHAKE256_RATE, in, inlen); -} - -/************************************************* -* Name: shake256_finalize -* -* Description: Finalize absorb step of the SHAKE256 XOF. -* -* Arguments: - keccak_state *state: pointer to Keccak state -**************************************************/ -void shake256_finalize(keccak_state *state) -{ - keccak_finalize(state->s, state->pos, SHAKE256_RATE, 0x1F); - state->pos = SHAKE256_RATE; -} - -/************************************************* -* Name: shake256_squeeze -* -* Description: Squeeze step of SHAKE256 XOF. Squeezes arbitraily many -* bytes. Can be called multiple times to keep squeezing. -* -* Arguments: - uint8_t *out: pointer to output blocks -* - size_t outlen : number of bytes to be squeezed (written to output) -* - keccak_state *s: pointer to input/output Keccak state -**************************************************/ -void shake256_squeeze(uint8_t *out, size_t outlen, keccak_state *state) -{ - state->pos = keccak_squeeze(out, outlen, state->s, state->pos, SHAKE256_RATE); -} - -/************************************************* -* Name: shake256_absorb_once -* -* Description: Initialize, absorb into and finalize SHAKE256 XOF; non-incremental. -* -* Arguments: - keccak_state *state: pointer to (uninitialized) output Keccak state -* - const uint8_t *in: pointer to input to be absorbed into s -* - size_t inlen: length of input in bytes -**************************************************/ -void shake256_absorb_once(keccak_state *state, const uint8_t *in, size_t inlen) -{ - keccak_absorb_once(state->s, SHAKE256_RATE, in, inlen, 0x1F); - state->pos = SHAKE256_RATE; -} - -/************************************************* -* Name: shake256_squeezeblocks -* -* Description: Squeeze step of SHAKE256 XOF. Squeezes full blocks of -* SHAKE256_RATE bytes each. Can be called multiple times -* to keep squeezing. Assumes next block has not yet been -* started (state->pos = SHAKE256_RATE). -* -* Arguments: - uint8_t *out: pointer to output blocks -* - size_t nblocks: number of blocks to be squeezed (written to output) -* - keccak_state *s: pointer to input/output Keccak state -**************************************************/ -void shake256_squeezeblocks(uint8_t *out, size_t nblocks, keccak_state *state) -{ - keccak_squeezeblocks(out, nblocks, state->s, SHAKE256_RATE); -} - -/************************************************* -* Name: shake128 -* -* Description: SHAKE128 XOF with non-incremental API -* -* Arguments: - uint8_t *out: pointer to output -* - size_t outlen: requested output length in bytes -* - const uint8_t *in: pointer to input -* - size_t inlen: length of input in bytes -**************************************************/ -void shake128(uint8_t *out, size_t outlen, const uint8_t *in, size_t inlen) -{ - size_t nblocks; - keccak_state state; - - shake128_absorb_once(&state, in, inlen); - nblocks = outlen/SHAKE128_RATE; - shake128_squeezeblocks(out, nblocks, &state); - outlen -= nblocks*SHAKE128_RATE; - out += nblocks*SHAKE128_RATE; - shake128_squeeze(out, outlen, &state); -} - -/************************************************* -* Name: shake256 -* -* Description: SHAKE256 XOF with non-incremental API -* -* Arguments: - uint8_t *out: pointer to output -* - size_t outlen: requested output length in bytes -* - const uint8_t *in: pointer to input -* - size_t inlen: length of input in bytes -**************************************************/ -void shake256(uint8_t *out, size_t outlen, const uint8_t *in, size_t inlen) -{ - size_t nblocks; - keccak_state state; - - shake256_absorb_once(&state, in, inlen); - nblocks = outlen/SHAKE256_RATE; - shake256_squeezeblocks(out, nblocks, &state); - outlen -= nblocks*SHAKE256_RATE; - out += nblocks*SHAKE256_RATE; - shake256_squeeze(out, outlen, &state); -} - -/************************************************* -* Name: sha3_256 -* -* Description: SHA3-256 with non-incremental API -* -* Arguments: - uint8_t *h: pointer to output (32 bytes) -* - const uint8_t *in: pointer to input -* - size_t inlen: length of input in bytes -**************************************************/ -void sha3_256(uint8_t h[32], const uint8_t *in, size_t inlen) -{ - unsigned int i; - uint64_t s[25]; - - keccak_absorb_once(s, SHA3_256_RATE, in, inlen, 0x06); - KeccakF1600_StatePermute(s); - for(i=0;i<4;i++) - store64(h+8*i,s[i]); -} - -/************************************************* -* Name: sha3_512 -* -* Description: SHA3-512 with non-incremental API -* -* Arguments: - uint8_t *h: pointer to output (64 bytes) -* - const uint8_t *in: pointer to input -* - size_t inlen: length of input in bytes -**************************************************/ -void sha3_512(uint8_t h[64], const uint8_t *in, size_t inlen) -{ - unsigned int i; - uint64_t s[25]; - - keccak_absorb_once(s, SHA3_512_RATE, in, inlen, 0x06); - KeccakF1600_StatePermute(s); - for(i=0;i<8;i++) - store64(h+8*i,s[i]); -} diff --git a/crypto/dilithium/pqcrystals_dilithium_ref_common/fips202.h b/crypto/dilithium/pqcrystals_dilithium_ref_common/fips202.h deleted file mode 100644 index c033ff0958..0000000000 --- a/crypto/dilithium/pqcrystals_dilithium_ref_common/fips202.h +++ /dev/null @@ -1,64 +0,0 @@ -#ifndef FIPS202_H -#define FIPS202_H - -#include -#include -#include - -#define SHAKE128_RATE 168 -#define SHAKE256_RATE 136 -#define SHA3_256_RATE 136 -#define SHA3_512_RATE 72 - -#define FIPS202_PREFIX(s) pqcrystals_dilithium_fips202_ref_##s - -#ifdef BORINGSSL_PREFIX -#define FIPS202_NAMESPACE(s) BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, FIPS202_PREFIX(s)) -#else -#define FIPS202_NAMESPACE(s) FIPS202_PREFIX(s) -#endif - -typedef struct { - uint64_t s[25]; - unsigned int pos; -} keccak_state; - -#define KeccakF_RoundConstants FIPS202_NAMESPACE(KeccakF_RoundConstants) -extern const uint64_t KeccakF_RoundConstants[]; - -#define shake128_init FIPS202_NAMESPACE(shake128_init) -void shake128_init(keccak_state *state); -#define shake128_absorb FIPS202_NAMESPACE(shake128_absorb) -void shake128_absorb(keccak_state *state, const uint8_t *in, size_t inlen); -#define shake128_finalize FIPS202_NAMESPACE(shake128_finalize) -void shake128_finalize(keccak_state *state); -#define shake128_squeeze FIPS202_NAMESPACE(shake128_squeeze) -void shake128_squeeze(uint8_t *out, size_t outlen, keccak_state *state); -#define shake128_absorb_once FIPS202_NAMESPACE(shake128_absorb_once) -void shake128_absorb_once(keccak_state *state, const uint8_t *in, size_t inlen); -#define shake128_squeezeblocks FIPS202_NAMESPACE(shake128_squeezeblocks) -void shake128_squeezeblocks(uint8_t *out, size_t nblocks, keccak_state *state); - -#define shake256_init FIPS202_NAMESPACE(shake256_init) -void shake256_init(keccak_state *state); -#define shake256_absorb FIPS202_NAMESPACE(shake256_absorb) -void shake256_absorb(keccak_state *state, const uint8_t *in, size_t inlen); -#define shake256_finalize FIPS202_NAMESPACE(shake256_finalize) -void shake256_finalize(keccak_state *state); -#define shake256_squeeze FIPS202_NAMESPACE(shake256_squeeze) -void shake256_squeeze(uint8_t *out, size_t outlen, keccak_state *state); -#define shake256_absorb_once FIPS202_NAMESPACE(shake256_absorb_once) -void shake256_absorb_once(keccak_state *state, const uint8_t *in, size_t inlen); -#define shake256_squeezeblocks FIPS202_NAMESPACE(shake256_squeezeblocks) -void shake256_squeezeblocks(uint8_t *out, size_t nblocks, keccak_state *state); - -#define shake128 FIPS202_NAMESPACE(shake128) -void shake128(uint8_t *out, size_t outlen, const uint8_t *in, size_t inlen); -#define shake256 FIPS202_NAMESPACE(shake256) -void shake256(uint8_t *out, size_t outlen, const uint8_t *in, size_t inlen); -#define sha3_256 FIPS202_NAMESPACE(sha3_256) -void sha3_256(uint8_t h[32], const uint8_t *in, size_t inlen); -#define sha3_512 FIPS202_NAMESPACE(sha3_512) -void sha3_512(uint8_t h[64], const uint8_t *in, size_t inlen); - -#endif diff --git a/crypto/dilithium/pqcrystals_dilithium_ref_common/params.h b/crypto/dilithium/pqcrystals_dilithium_ref_common/params.h index 2369996c37..2cdbaad391 100644 --- a/crypto/dilithium/pqcrystals_dilithium_ref_common/params.h +++ b/crypto/dilithium/pqcrystals_dilithium_ref_common/params.h @@ -42,7 +42,7 @@ typedef struct { #define DILITHIUM_L_MAX (7) #define DILITHIUM_C_TILDE_BYTES_MAX (64) #define DILITHIUM_POLYW1_PACKEDBYTES_MAX (192) -#define DILITHIUM_POLY_UNIFORM_ETA_NBLOCKS_MAX ((227 + STREAM256_BLOCKBYTES - 1)/STREAM256_BLOCKBYTES) +#define DILITHIUM_POLY_UNIFORM_ETA_NBLOCKS_MAX ((227 + SHAKE256_RATE - 1)/SHAKE256_RATE) #define DILITHIUM_POLYZ_PACKEDBYTES_MAX (576) void ml_dsa_44_params_init(ml_dsa_params *params); diff --git a/crypto/dilithium/pqcrystals_dilithium_ref_common/poly.c b/crypto/dilithium/pqcrystals_dilithium_ref_common/poly.c index c73615fd27..ab257b71ac 100644 --- a/crypto/dilithium/pqcrystals_dilithium_ref_common/poly.c +++ b/crypto/dilithium/pqcrystals_dilithium_ref_common/poly.c @@ -4,7 +4,7 @@ #include "ntt.h" #include "reduce.h" #include "rounding.h" -#include "symmetric.h" +#include "../../fipsmodule/sha/internal.h" /************************************************* * Name: poly_reduce @@ -290,18 +290,24 @@ static unsigned int rej_uniform(int32_t *a, * - const uint8_t seed[]: byte array with seed of length SEEDBYTES * - uint16_t nonce: 2-byte nonce **************************************************/ -#define POLY_UNIFORM_NBLOCKS ((768 + STREAM128_BLOCKBYTES - 1)/STREAM128_BLOCKBYTES) +#define POLY_UNIFORM_NBLOCKS ((768 + SHAKE128_RATE - 1)/ SHAKE128_RATE) void poly_uniform(poly *a, const uint8_t seed[SEEDBYTES], uint16_t nonce) { unsigned int i, ctr, off; - unsigned int buflen = POLY_UNIFORM_NBLOCKS*STREAM128_BLOCKBYTES; - uint8_t buf[POLY_UNIFORM_NBLOCKS*STREAM128_BLOCKBYTES + 2]; - stream128_state state; + unsigned int buflen = POLY_UNIFORM_NBLOCKS*SHAKE128_RATE; + uint8_t buf[POLY_UNIFORM_NBLOCKS*SHAKE128_RATE + 2]; + KECCAK1600_CTX state; - stream128_init(&state, seed, nonce); - stream128_squeezeblocks(buf, POLY_UNIFORM_NBLOCKS, &state); + uint8_t t[2]; + t[0] = nonce & 0xff; + t[1] = nonce >> 8; + + SHAKE_Init(&state, SHAKE128_BLOCKSIZE); + SHA3_Update(&state, seed, SEEDBYTES); + SHA3_Update(&state, t, 2); + SHAKE_Final(buf, &state, POLY_UNIFORM_NBLOCKS * SHAKE128_BLOCKSIZE); ctr = rej_uniform(a->coeffs, N, buf, buflen); @@ -310,8 +316,8 @@ void poly_uniform(poly *a, for(i = 0; i < off; ++i) buf[i] = buf[buflen - off + i]; - stream128_squeezeblocks(buf + off, 1, &state); - buflen = STREAM128_BLOCKBYTES + off; + SHAKE_Final(buf + off, &state, POLY_UNIFORM_NBLOCKS * SHAKE128_BLOCKSIZE); + buflen = SHAKE128_RATE + off; ctr += rej_uniform(a->coeffs + ctr, N - ctr, buf, buflen); } /* FIPS 204. Section 3.6.3 Destruction of intermediate values. */ @@ -392,18 +398,24 @@ void poly_uniform_eta(ml_dsa_params *params, uint16_t nonce) { unsigned int ctr; - unsigned int buflen = DILITHIUM_POLY_UNIFORM_ETA_NBLOCKS_MAX*STREAM256_BLOCKBYTES; - uint8_t buf[DILITHIUM_POLY_UNIFORM_ETA_NBLOCKS_MAX*STREAM256_BLOCKBYTES]; - stream256_state state; + unsigned int buflen = DILITHIUM_POLY_UNIFORM_ETA_NBLOCKS_MAX * SHAKE256_RATE; + uint8_t buf[DILITHIUM_POLY_UNIFORM_ETA_NBLOCKS_MAX * SHAKE256_RATE]; + KECCAK1600_CTX state; + + uint8_t t[2]; + t[0] = nonce & 0xff; + t[1] = nonce >> 8; - stream256_init(&state, seed, nonce); - stream256_squeezeblocks(buf, DILITHIUM_POLY_UNIFORM_ETA_NBLOCKS_MAX, &state); + SHAKE_Init(&state, SHAKE256_BLOCKSIZE); + SHA3_Update(&state, seed, CRHBYTES); + SHA3_Update(&state, t, 2); + SHAKE_Final(buf, &state, DILITHIUM_POLY_UNIFORM_ETA_NBLOCKS_MAX * SHAKE256_BLOCKSIZE); ctr = rej_eta(params, a->coeffs, N, buf, buflen); while(ctr < N) { - stream256_squeezeblocks(buf, 1, &state); - ctr += rej_eta(params, a->coeffs + ctr, N - ctr, buf, STREAM256_BLOCKBYTES); + SHAKE_Final(buf, &state, SHAKE256_BLOCKSIZE); + ctr += rej_eta(params, a->coeffs + ctr, N - ctr, buf, SHAKE256_RATE); } /* FIPS 204. Section 3.6.3 Destruction of intermediate values. */ OPENSSL_cleanse(buf, sizeof(buf)); @@ -422,17 +434,24 @@ void poly_uniform_eta(ml_dsa_params *params, * - const uint8_t seed[]: byte array with seed of length CRHBYTES * - uint16_t nonce: 16-bit nonce **************************************************/ -#define POLY_UNIFORM_GAMMA1_NBLOCKS ((DILITHIUM_POLYZ_PACKEDBYTES_MAX + STREAM256_BLOCKBYTES - 1)/STREAM256_BLOCKBYTES) +#define POLY_UNIFORM_GAMMA1_NBLOCKS ((DILITHIUM_POLYZ_PACKEDBYTES_MAX + SHAKE256_RATE - 1) / SHAKE256_RATE) void poly_uniform_gamma1(ml_dsa_params *params, poly *a, const uint8_t seed[CRHBYTES], uint16_t nonce) { - uint8_t buf[POLY_UNIFORM_GAMMA1_NBLOCKS*STREAM256_BLOCKBYTES]; - stream256_state state; + uint8_t buf[POLY_UNIFORM_GAMMA1_NBLOCKS * SHAKE256_RATE]; + KECCAK1600_CTX state; + + uint8_t t[2]; + t[0] = nonce & 0xff; + t[1] = nonce >> 8; + + SHAKE_Init(&state, SHAKE256_BLOCKSIZE); + SHA3_Update(&state, seed, CRHBYTES); + SHA3_Update(&state, t, 2); - stream256_init(&state, seed, nonce); - stream256_squeezeblocks(buf, POLY_UNIFORM_GAMMA1_NBLOCKS, &state); + SHAKE_Final(buf, &state, POLY_UNIFORM_GAMMA1_NBLOCKS * SHAKE256_BLOCKSIZE); polyz_unpack(params, a, buf); /* FIPS 204. Section 3.6.3 Destruction of intermediate values. */ OPENSSL_cleanse(buf, sizeof(buf)); @@ -454,12 +473,11 @@ void poly_challenge(ml_dsa_params *params, poly *c, const uint8_t *seed) { unsigned int i, b, pos; uint64_t signs; uint8_t buf[SHAKE256_RATE]; - keccak_state state; + KECCAK1600_CTX state; - shake256_init(&state); - shake256_absorb(&state, seed, params->c_tilde_bytes); - shake256_finalize(&state); - shake256_squeezeblocks(buf, 1, &state); + SHAKE_Init(&state, SHAKE256_BLOCKSIZE); + SHA3_Update(&state, seed, params->c_tilde_bytes); + SHAKE_Final(buf, &state, SHAKE256_BLOCKSIZE); signs = 0; for(i = 0; i < 8; ++i) { @@ -473,7 +491,7 @@ void poly_challenge(ml_dsa_params *params, poly *c, const uint8_t *seed) { for(i = N-params->tau; i < N; ++i) { do { if(pos >= SHAKE256_RATE) { - shake256_squeezeblocks(buf, 1, &state); + SHAKE_Final(buf, &state, SHAKE256_BLOCKSIZE); pos = 0; } diff --git a/crypto/dilithium/pqcrystals_dilithium_ref_common/sign.c b/crypto/dilithium/pqcrystals_dilithium_ref_common/sign.c index ea3ffb5cc7..ae0568d66c 100644 --- a/crypto/dilithium/pqcrystals_dilithium_ref_common/sign.c +++ b/crypto/dilithium/pqcrystals_dilithium_ref_common/sign.c @@ -2,12 +2,11 @@ #include #include "../../internal.h" #include "openssl/rand.h" -#include "fips202.h" #include "packing.h" #include "params.h" #include "poly.h" #include "polyvec.h" -#include "symmetric.h" + /************************************************* * Name: crypto_sign_keypair_internal @@ -38,7 +37,7 @@ int crypto_sign_keypair_internal(ml_dsa_params *params, OPENSSL_memcpy(seedbuf, seed, SEEDBYTES); seedbuf[SEEDBYTES+0] = params->k; seedbuf[SEEDBYTES+1] = params->l; - shake256(seedbuf, 2*SEEDBYTES + CRHBYTES, seedbuf, SEEDBYTES+2); + SHAKE256(seedbuf, SEEDBYTES + 2, seedbuf, 2 * SEEDBYTES + CRHBYTES); rho = seedbuf; rhoprime = rho + SEEDBYTES; key = rhoprime + CRHBYTES; @@ -67,7 +66,7 @@ int crypto_sign_keypair_internal(ml_dsa_params *params, pack_pk(params, pk, rho, &t1); /* FIPS 204: line 9 Compute H(rho, t1) and line 10 write secret key */ - shake256(tr, TRBYTES, pk, params->public_key_bytes); + SHAKE256(pk, params->public_key_bytes, tr, TRBYTES); pack_sk(params, sk, rho, tr, key, &t0, &s1, &s2); /* FIPS 204. Section 3.6.3 Destruction of intermediate values. */ @@ -141,7 +140,7 @@ int crypto_sign_signature_internal(ml_dsa_params *params, polyvecl mat[DILITHIUM_K_MAX], s1, y, z; polyveck t0, s2, w1, w0, h; poly cp; - keccak_state state; + KECCAK1600_CTX state; rho = seedbuf; tr = rho + SEEDBYTES; @@ -155,20 +154,18 @@ int crypto_sign_signature_internal(ml_dsa_params *params, // This differs from FIPS 204 line 6 that performs mu = CRH(tr, M') and the // processing of M' in the external function. However, as M' = (pre, msg), // mu = CRH(tr, M') = CRH(tr, pre, msg). - shake256_init(&state); - shake256_absorb(&state, tr, TRBYTES); - shake256_absorb(&state, pre, prelen); - shake256_absorb(&state, m, mlen); - shake256_finalize(&state); - shake256_squeeze(mu, CRHBYTES, &state); + SHAKE_Init(&state, SHAKE256_BLOCKSIZE); + SHA3_Update(&state, tr, TRBYTES); + SHA3_Update(&state, pre, prelen); + SHA3_Update(&state, m, mlen); + SHAKE_Final(mu, &state, CRHBYTES); /* FIPS 204: line 7 Compute rhoprime = CRH(key, rnd, mu) */ - shake256_init(&state); - shake256_absorb(&state, key, SEEDBYTES); - shake256_absorb(&state, rnd, RNDBYTES); - shake256_absorb(&state, mu, CRHBYTES); - shake256_finalize(&state); - shake256_squeeze(rhoprime, CRHBYTES, &state); + SHAKE_Init(&state, SHAKE256_BLOCKSIZE); + SHA3_Update(&state, key, SEEDBYTES); + SHA3_Update(&state, rnd, RNDBYTES); + SHA3_Update(&state, mu, CRHBYTES); + SHAKE_Final(rhoprime, &state, CRHBYTES); /* FIPS 204: line 5 Expand matrix and transform vectors */ polyvec_matrix_expand(params, mat, rho); @@ -192,11 +189,10 @@ int crypto_sign_signature_internal(ml_dsa_params *params, polyveck_decompose(params, &w1, &w0, &w1); polyveck_pack_w1(params, sig, &w1); - shake256_init(&state); - shake256_absorb(&state, mu, CRHBYTES); - shake256_absorb(&state, sig, params->k * params->poly_w1_packed_bytes); - shake256_finalize(&state); - shake256_squeeze(sig, params->c_tilde_bytes, &state); + SHAKE_Init(&state, SHAKE256_BLOCKSIZE); + SHA3_Update(&state, mu, CRHBYTES); + SHA3_Update(&state, sig, params->k * params->poly_w1_packed_bytes); + SHAKE_Final(sig, &state, params->c_tilde_bytes); poly_challenge(params, &cp, sig); poly_ntt(&cp); @@ -226,6 +222,7 @@ int crypto_sign_signature_internal(ml_dsa_params *params, if(polyveck_chknorm(params, &h, params->gamma2)) { goto rej; } + /* FIPS 204: line 26 Compute signer's hint */ polyveck_add(params, &w0, &w0, &h); n = polyveck_make_hint(params, &h, &w0, &w1); @@ -376,7 +373,7 @@ int crypto_sign_verify_internal(ml_dsa_params *params, poly cp; polyvecl mat[DILITHIUM_K_MAX], z; polyveck t1, w1, h; - keccak_state state; + KECCAK1600_CTX state; if(siglen != params->bytes) { return -1; @@ -392,16 +389,15 @@ int crypto_sign_verify_internal(ml_dsa_params *params, } /* FIPS 204: line 6 Compute tr */ - shake256(tr, TRBYTES, pk, params->public_key_bytes); + SHAKE256(pk, params->public_key_bytes, tr, TRBYTES); /* FIPS 204: line 7 Compute mu = H(BytesToBits(tr) || M', 64) */ // Like crypto_sign_signature_internal, the processing of M' is performed // here, as opposed to within the external function. - shake256_init(&state); - shake256_absorb(&state, tr, TRBYTES); - shake256_absorb(&state, pre, prelen); - shake256_absorb(&state, m, mlen); - shake256_finalize(&state); - shake256_squeeze(mu, CRHBYTES, &state); + SHAKE_Init(&state, SHAKE256_BLOCKSIZE); + SHA3_Update(&state, tr, TRBYTES); + SHA3_Update(&state, pre, prelen); + SHA3_Update(&state, m, mlen); + SHAKE_Final(mu, &state, CRHBYTES); /* FIPS 204: line 9 Matrix-vector multiplication; compute Az - c2^dt1 */ poly_challenge(params, &cp, c); @@ -425,11 +421,10 @@ int crypto_sign_verify_internal(ml_dsa_params *params, polyveck_pack_w1(params, buf, &w1); /* FIPS 204: line 12 Call random oracle and verify challenge */ - shake256_init(&state); - shake256_absorb(&state, mu, CRHBYTES); - shake256_absorb(&state, buf, params->k * params->poly_w1_packed_bytes); - shake256_finalize(&state); - shake256_squeeze(c2, params->c_tilde_bytes, &state); + SHAKE_Init(&state, SHAKE256_BLOCKSIZE); + SHA3_Update(&state, mu, CRHBYTES); + SHA3_Update(&state, buf, params->k * params->poly_w1_packed_bytes); + SHAKE_Final(c2, &state, params->c_tilde_bytes); for(i = 0; i < params->c_tilde_bytes; ++i) { if(c[i] != c2[i]) { return -1; diff --git a/crypto/dilithium/pqcrystals_dilithium_ref_common/symmetric-shake.c b/crypto/dilithium/pqcrystals_dilithium_ref_common/symmetric-shake.c deleted file mode 100644 index 11ec09cce6..0000000000 --- a/crypto/dilithium/pqcrystals_dilithium_ref_common/symmetric-shake.c +++ /dev/null @@ -1,28 +0,0 @@ -#include -#include "params.h" -#include "symmetric.h" -#include "fips202.h" - -void dilithium_shake128_stream_init(keccak_state *state, const uint8_t seed[SEEDBYTES], uint16_t nonce) -{ - uint8_t t[2]; - t[0] = nonce; - t[1] = nonce >> 8; - - shake128_init(state); - shake128_absorb(state, seed, SEEDBYTES); - shake128_absorb(state, t, 2); - shake128_finalize(state); -} - -void dilithium_shake256_stream_init(keccak_state *state, const uint8_t seed[CRHBYTES], uint16_t nonce) -{ - uint8_t t[2]; - t[0] = nonce; - t[1] = nonce >> 8; - - shake256_init(state); - shake256_absorb(state, seed, CRHBYTES); - shake256_absorb(state, t, 2); - shake256_finalize(state); -} diff --git a/crypto/dilithium/pqcrystals_dilithium_ref_common/symmetric.h b/crypto/dilithium/pqcrystals_dilithium_ref_common/symmetric.h deleted file mode 100644 index f8df7fce82..0000000000 --- a/crypto/dilithium/pqcrystals_dilithium_ref_common/symmetric.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef SYMMETRIC_H -#define SYMMETRIC_H - -#include -#include "params.h" - -#include "fips202.h" - -typedef keccak_state stream128_state; -typedef keccak_state stream256_state; - -void dilithium_shake128_stream_init(keccak_state *state, - const uint8_t seed[SEEDBYTES], - uint16_t nonce); - - -void dilithium_shake256_stream_init(keccak_state *state, - const uint8_t seed[CRHBYTES], - uint16_t nonce); - -#define STREAM128_BLOCKBYTES SHAKE128_RATE -#define STREAM256_BLOCKBYTES SHAKE256_RATE - -#define stream128_init(STATE, SEED, NONCE) \ -dilithium_shake128_stream_init(STATE, SEED, NONCE) -#define stream128_squeezeblocks(OUT, OUTBLOCKS, STATE) \ -shake128_squeezeblocks(OUT, OUTBLOCKS, STATE) -#define stream256_init(STATE, SEED, NONCE) \ -dilithium_shake256_stream_init(STATE, SEED, NONCE) -#define stream256_squeezeblocks(OUT, OUTBLOCKS, STATE) \ -shake256_squeezeblocks(OUT, OUTBLOCKS, STATE) - -#endif diff --git a/crypto/fipsmodule/sha/internal.h b/crypto/fipsmodule/sha/internal.h index 596371ade9..c796a51c5f 100644 --- a/crypto/fipsmodule/sha/internal.h +++ b/crypto/fipsmodule/sha/internal.h @@ -67,6 +67,7 @@ extern "C" { #define SHAKE128_BLOCKSIZE (KECCAK1600_WIDTH - 128 * 2) / 8 #define SHAKE256_BLOCKSIZE (KECCAK1600_WIDTH - 256 * 2) / 8 #define SHAKE128_RATE 168 +#define SHAKE256_RATE 136 #define XOF_BLOCKBYTES SHAKE128_RATE // SHAKE128 has the maximum block size among the SHA3/SHAKE algorithms. From dd5948b5a55f5dc5f0db9bbfa0e21c35d9e820e2 Mon Sep 17 00:00:00 2001 From: Justin W Smith <103147162+justsmth@users.noreply.github.com> Date: Tue, 10 Dec 2024 11:20:24 -0500 Subject: [PATCH 04/12] Update FIPS v3.0 draft security policy (#2047) ### Issues: Addresses CryptoAlg-2802 ### Description of changes: Update for FIPS v3.0 (dynamic) security policy ### Testing Can be viewed on this branch: https://github.com/justsmth/aws-lc/blob/fips-v3.0-secpol-update/crypto/fipsmodule/FIPS.md By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license and the ISC license. --- ...0-3-AmazonSecurityPolicy-3.0.0-dynamic.pdf | Bin 1247601 -> 1250228 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/crypto/fipsmodule/policydocs/DRAFT-140-3-AmazonSecurityPolicy-3.0.0-dynamic.pdf b/crypto/fipsmodule/policydocs/DRAFT-140-3-AmazonSecurityPolicy-3.0.0-dynamic.pdf index f2f7e00a32825d318ffeb22eedf1fd0770f3efb9..ffd9386ea3a5cc62612046d89ee6119e478bb7bb 100644 GIT binary patch delta 563382 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

EimA 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

@@K?QZegrgguURUQbB>eHRv3CZ= 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 z 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�qJ_yJ3`_F@}T)gOCsbzf!~v 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 z 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 Jf7vRJ{{bmuR3-ob delta 560561 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

u^4>;V$O?p4Y7zn3gX!|Lmnt^m17d?w0zGL3^ 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

3=7thIyTB?nFd=@n$!eV!jRqy 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�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 From 95d92f331a4bca182234d41ad8581a9d286f584c Mon Sep 17 00:00:00 2001 From: David Benjamin Date: Wed, 6 Mar 2024 12:40:33 -0500 Subject: [PATCH 05/12] Remove an unused runner/shim flag in SSL tests Change-Id: Id0efd039ba71489f88b9b669a327b29075f3f7de Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/66787 Reviewed-by: Bob Beck Commit-Queue: David Benjamin (cherry picked from commit 5a3faaa2d50b2540c6973531841723f633f388cd) --- ssl/test/test_config.cc | 1 - ssl/test/test_config.h | 1 - 2 files changed, 2 deletions(-) diff --git a/ssl/test/test_config.cc b/ssl/test/test_config.cc index 250de8acd9..2c7a512124 100644 --- a/ssl/test/test_config.cc +++ b/ssl/test/test_config.cc @@ -259,7 +259,6 @@ std::vector SortedFlags() { StringFlag("-host-name", &TestConfig::host_name), StringFlag("-advertise-alpn", &TestConfig::advertise_alpn), StringFlag("-expect-alpn", &TestConfig::expect_alpn), - StringFlag("-expect-late-alpn", &TestConfig::expect_late_alpn), StringFlag("-expect-advertised-alpn", &TestConfig::expect_advertised_alpn), StringFlag("-select-alpn", &TestConfig::select_alpn), diff --git a/ssl/test/test_config.h b/ssl/test/test_config.h index d6c5c0a82a..cf7b476590 100644 --- a/ssl/test/test_config.h +++ b/ssl/test/test_config.h @@ -74,7 +74,6 @@ struct TestConfig { std::string host_name; std::string advertise_alpn; std::string expect_alpn; - std::string expect_late_alpn; std::string expect_advertised_alpn; std::string select_alpn; bool decline_alpn = false; From 432cfcebf7b6946e916184db3658fe420f1b152f Mon Sep 17 00:00:00 2001 From: Ilya Tokar Date: Fri, 8 Mar 2024 15:53:55 -0500 Subject: [PATCH 06/12] Fix sha1 dynamic dispatch issues. 1) We are calling sha1_block_data_order_avx when avx2 is enabled We should be calling sha1_block_data_order_avx2 2) Looks like clang doesn't define __BMI1__ and calls it simply __BMI__, see https://godbolt.org/z/s8anxn9rc This is less of an issue since we will fallback to dynamic dispatch anyway. AWS-LC: Did not take change 2 since compile time checks for CPU capabilities were removed in 378b394a5a2d6719c956f11540bbe0944c8b78f1 Change-Id: I9821405444c2e39167f1423c5f08bfcbca1efa51 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/66827 Commit-Queue: David Benjamin Reviewed-by: David Benjamin (cherry picked from commit cf4f615d706d54fca9323fb1595d88f7ee2d7517) --- crypto/fipsmodule/sha/sha1.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crypto/fipsmodule/sha/sha1.c b/crypto/fipsmodule/sha/sha1.c index 6bb9969fc7..c1b2dcb9a8 100644 --- a/crypto/fipsmodule/sha/sha1.c +++ b/crypto/fipsmodule/sha/sha1.c @@ -398,7 +398,7 @@ static void sha1_block_data_order(uint32_t state[5], const uint8_t *data, #endif #if defined(SHA1_ASM_AVX2) && !defined(MY_ASSEMBLER_IS_TOO_OLD_FOR_AVX) if (sha1_avx2_capable()) { - sha1_block_data_order_avx(state, data, num); + sha1_block_data_order_avx2(state, data, num); return; } #endif From 9d419ce91701715fab2d8d5e4aa65139186bc084 Mon Sep 17 00:00:00 2001 From: Bob Beck Date: Tue, 12 Mar 2024 17:53:50 +0000 Subject: [PATCH 07/12] Fix spelling of Identifier Make google3 common typos stop complaining in the future. Change-Id: Ib5156335afa691427dbe618c8b29797665cef35f Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/66947 Auto-Submit: Bob Beck Commit-Queue: Bob Beck Reviewed-by: David Benjamin (cherry picked from commit 3ac09394a0c027ca077b8cfda4c0dbc8837ce87a) --- crypto/x509/internal.h | 2 +- include/openssl/ssl.h | 2 +- include/openssl/x509.h | 6 +++--- ssl/test/runner/common.go | 4 ++-- ssl/test/runner/handshake_client.go | 2 +- ssl/test/runner/runner.go | 2 +- util/fipstools/delocate/delocate.go | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/crypto/x509/internal.h b/crypto/x509/internal.h index e2a1efc71b..c66b29f4f0 100644 --- a/crypto/x509/internal.h +++ b/crypto/x509/internal.h @@ -394,7 +394,7 @@ int x509_print_rsa_pss_params(BIO *bp, const X509_ALGOR *sigalg, int indent, // Signature algorithm functions. // x509_digest_sign_algorithm encodes the signing parameters of |ctx| as an -// AlgorithmIdentifer and saves the result in |algor|. It returns one on +// AlgorithmIdentifier and saves the result in |algor|. It returns one on // success, or zero on error. int x509_digest_sign_algorithm(EVP_MD_CTX *ctx, X509_ALGOR *algor); diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h index 87c9bfe1ef..736f703233 100644 --- a/include/openssl/ssl.h +++ b/include/openssl/ssl.h @@ -4227,7 +4227,7 @@ OPENSSL_EXPORT void SSL_get0_ech_retry_configs( // to the size of the buffer. The caller must call |OPENSSL_free| on |*out| to // release the memory. On failure, it returns zero. // -// The |config_id| field is a single byte identifer for the ECHConfig. Reusing +// The |config_id| field is a single byte identifier for the ECHConfig. Reusing // config IDs is allowed, but if multiple ECHConfigs with the same config ID are // active at a time, server load may increase. See // |SSL_ECH_KEYS_has_duplicate_config_id|. diff --git a/include/openssl/x509.h b/include/openssl/x509.h index bc4d7fbecc..5b59d7d835 100644 --- a/include/openssl/x509.h +++ b/include/openssl/x509.h @@ -257,9 +257,9 @@ OPENSSL_EXPORT void X509_get0_uids(const X509 *x509, // should not be accepted. #define EXFLAG_CRITICAL 0x200 // EXFLAG_SS indicates the certificate is likely self-signed. That is, if it is -// self-issued, its authority key identifer (if any) matches itself, and its key -// usage extension (if any) allows certificate signatures. The signature itself -// is not checked in computing this bit. +// self-issued, its authority key identifier (if any) matches itself, and its +// key usage extension (if any) allows certificate signatures. The signature +// itself is not checked in computing this bit. #define EXFLAG_SS 0x2000 // X509_get_extension_flags decodes a set of extensions from |x509| and returns diff --git a/ssl/test/runner/common.go b/ssl/test/runner/common.go index cd10e14641..11dc662b94 100644 --- a/ssl/test/runner/common.go +++ b/ssl/test/runner/common.go @@ -1182,10 +1182,10 @@ type ProtocolBugs struct { // RSA_EXPORT) in the plain RSA key exchange. RSAEphemeralKey bool - // SRTPMasterKeyIdentifer, if not empty, is the SRTP MKI value that the + // SRTPMasterKeyIdentifier, if not empty, is the SRTP MKI value that the // client offers when negotiating SRTP. MKI support is still missing so // the peer must still send none. - SRTPMasterKeyIdentifer string + SRTPMasterKeyIdentifier string // SendSRTPProtectionProfile, if non-zero, is the SRTP profile that the // server sends in the ServerHello instead of the negotiated one. diff --git a/ssl/test/runner/handshake_client.go b/ssl/test/runner/handshake_client.go index 41840d7191..91dcf05ccb 100644 --- a/ssl/test/runner/handshake_client.go +++ b/ssl/test/runner/handshake_client.go @@ -521,7 +521,7 @@ func (hs *clientHandshakeState) createClientHello(innerHello *clientHelloMsg, ec channelIDSupported: c.config.ChannelID != nil, extendedMasterSecret: maxVersion >= VersionTLS10, srtpProtectionProfiles: c.config.SRTPProtectionProfiles, - srtpMasterKeyIdentifier: c.config.Bugs.SRTPMasterKeyIdentifer, + srtpMasterKeyIdentifier: c.config.Bugs.SRTPMasterKeyIdentifier, customExtension: c.config.Bugs.CustomExtension, omitExtensions: c.config.Bugs.OmitExtensions, emptyExtensions: c.config.Bugs.EmptyExtensions, diff --git a/ssl/test/runner/runner.go b/ssl/test/runner/runner.go index 614216b97e..c5705c5e37 100644 --- a/ssl/test/runner/runner.go +++ b/ssl/test/runner/runner.go @@ -8415,7 +8415,7 @@ func addExtensionTests() { MaxVersion: ver.version, SRTPProtectionProfiles: []uint16{SRTP_AES128_CM_HMAC_SHA1_80}, Bugs: ProtocolBugs{ - SRTPMasterKeyIdentifer: "bogus", + SRTPMasterKeyIdentifier: "bogus", }, }, flags: []string{ diff --git a/util/fipstools/delocate/delocate.go b/util/fipstools/delocate/delocate.go index f3c94573b3..fd2f2e2110 100644 --- a/util/fipstools/delocate/delocate.go +++ b/util/fipstools/delocate/delocate.go @@ -35,7 +35,7 @@ import ( // inputFile represents a textual assembly file. type inputFile struct { path string - // index is a unique identifer given to this file. It's used for + // index is a unique identifier given to this file. It's used for // mapping local symbols. index int // isArchive indicates that the input should be processed as an ar From 594581e1f155a22e9199034fa82c23d26fd6d550 Mon Sep 17 00:00:00 2001 From: Bob Beck Date: Tue, 12 Mar 2024 19:31:09 +0000 Subject: [PATCH 08/12] Re-remove unnecesary stat calls from by_dir.c After examining consumer test code and discussion with davidben, the stat here serves only to get out of this code without having an error on the error stack when the file does not exist, which is then interpreted as the CA or CRL does not exist. Instead, we simply attempt to open the files, and if it does not work for any reason, clear the error that was set. This changes us to treat any failure in finding a CA or CRL using the by directory lookup as if the file was just not present. This ensures a consistent behaviour with the error returned from the verification code. We don't differentiate between the file not existing or other errors such as garbage in the file. Fixed: 708 Change-Id: I1eee01282cde803fb7c9b52003da3dfbd5ba9e33 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/66967 Reviewed-by: David Benjamin Commit-Queue: David Benjamin (cherry picked from commit fae0964b3d44e94ca2a2d21f86e61dabe683d130) --- crypto/x509/by_dir.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/crypto/x509/by_dir.c b/crypto/x509/by_dir.c index fc69b94d11..c628cbcab0 100644 --- a/crypto/x509/by_dir.c +++ b/crypto/x509/by_dir.c @@ -307,28 +307,22 @@ static int get_cert_by_subject(X509_LOOKUP *xl, int type, X509_NAME *name, for (;;) { snprintf(b->data, b->max, "%s/%08" PRIx32 ".%s%d", ent->dir, h, postfix, k); -#ifndef OPENSSL_NO_POSIX_IO -#if defined(_WIN32) && !defined(stat) -#define stat _stat -#endif - { - struct stat st; - if (stat(b->data, &st) < 0) { - break; - } - } -#endif - // found one. if (type == X509_LU_X509) { if ((X509_load_cert_file(xl, b->data, ent->dir_type)) == 0) { + // Don't expose the lower level error, All of these boil + // down to "we could not find a CA". + ERR_clear_error(); break; } } else if (type == X509_LU_CRL) { if ((X509_load_crl_file(xl, b->data, ent->dir_type)) == 0) { + // Don't expose the lower level error, All of these boil + // down to "we could not find a CRL". + ERR_clear_error(); break; } } - // else case will caught higher up + // The lack of a CA or CRL will be caught higher up k++; } From 302e539e71855776e837be5796d9615118d79774 Mon Sep 17 00:00:00 2001 From: dan pittman Date: Tue, 10 Dec 2024 13:24:21 -0800 Subject: [PATCH 09/12] Fix RSAZABI test and enable IFMA based RSA on Windows (#1869) --- crypto/fipsmodule/bn/bn_test.cc | 58 +++++++++++++++++++++-------- crypto/fipsmodule/cpucap/internal.h | 4 -- 2 files changed, 43 insertions(+), 19 deletions(-) diff --git a/crypto/fipsmodule/bn/bn_test.cc b/crypto/fipsmodule/bn/bn_test.cc index 3b4b2f7be4..b14a86725b 100644 --- a/crypto/fipsmodule/bn/bn_test.cc +++ b/crypto/fipsmodule/bn/bn_test.cc @@ -3024,32 +3024,60 @@ TEST_F(BNTest, RSAZABI) { #ifdef RSAZ_512_ENABLED if (CRYPTO_is_AVX512IFMA_capable()) { - uint64_t res = 0; + +#define TWOK (40 * 2) +#define TWOK_TABLE (2 * 20 * (1<<5)) +#define THREEK (64 * 2) +#define THREEK_TABLE (2 * 32 * (1<<5)) +#define FOURK (80 * 2) +#define FOURK_TABLE (2 * 40 * (1<<5)) + + int storage_bytes = + ((TWOK * 2) + // res2 / red_y2 + TWOK_TABLE + // red_table2k + (THREEK * 2) + // res3 / red_y3 + THREEK_TABLE + // red_table3k + (FOURK * 2) + // res4 / red_y4 + FOURK_TABLE) * // red_table4k + sizeof(uint64_t); + + uint64_t *storage = (uint64_t*)OPENSSL_malloc(storage_bytes); + + uint64_t *res2, *res3, *res4, + *red_y2, *red_y3, *red_y4, + *red_table2k, *red_table3k, *red_table4k; + + res2 = storage; + red_y2 = storage + TWOK; + red_table2k = red_y2 + TWOK; + res3 = red_table2k + TWOK_TABLE; + red_y3 = res3 + THREEK; + red_table3k = red_y3 + THREEK; + res4 = red_table3k + THREEK_TABLE; + red_y4 = res4 + FOURK; + red_table4k = red_y4 + FOURK; + uint64_t a = 0; uint64_t b = 0; uint64_t m = 0; uint64_t k0 = 0; uint64_t k2[2] = {0}; - - uint64_t red_Y = 0; int idx1 = 0; int idx2 = 0; - uint64_t red_table2k[2*20*(1<<5)] = {0}; - uint64_t red_table3k[2*32*(1<<5)] = {0}; - uint64_t red_table4k[2*40*(1<<5)] = {0}; + CHECK_ABI(rsaz_amm52x20_x1_ifma256, res2, &a, &b, &m, k0); + CHECK_ABI(rsaz_amm52x20_x2_ifma256, res2, &a, &b, &m, k2); + CHECK_ABI(extract_multiplier_2x20_win5, red_y2, red_table2k, idx1, idx2); - CHECK_ABI(rsaz_amm52x20_x1_ifma256, &res, &a, &b, &m, k0); - CHECK_ABI(rsaz_amm52x20_x2_ifma256, &res, &a, &b, &m, k2); - CHECK_ABI(extract_multiplier_2x20_win5, &red_Y, red_table2k, idx1, idx2); + CHECK_ABI(rsaz_amm52x30_x1_ifma256, res3, &a, &b, &m, k0); + CHECK_ABI(rsaz_amm52x30_x2_ifma256, res3, &a, &b, &m, k2); + CHECK_ABI(extract_multiplier_2x30_win5, red_y3, red_table3k, idx1, idx2); - CHECK_ABI(rsaz_amm52x30_x1_ifma256, &res, &a, &b, &m, k0); - CHECK_ABI(rsaz_amm52x30_x2_ifma256, &res, &a, &b, &m, k2); - CHECK_ABI(extract_multiplier_2x30_win5, &red_Y, red_table3k, idx1, idx2); + CHECK_ABI(rsaz_amm52x40_x1_ifma256, res4, &a, &b, &m, k0); + CHECK_ABI(rsaz_amm52x40_x2_ifma256, res4, &a, &b, &m, k2); + CHECK_ABI(extract_multiplier_2x40_win5, red_y4, red_table4k, idx1, idx2); - CHECK_ABI(rsaz_amm52x40_x1_ifma256, &res, &a, &b, &m, k0); - CHECK_ABI(rsaz_amm52x40_x2_ifma256, &res, &a, &b, &m, k2); - CHECK_ABI(extract_multiplier_2x40_win5, &red_Y, red_table4k, idx1, idx2); + OPENSSL_free(storage); } #endif // RSAZ_512_ENABLED } diff --git a/crypto/fipsmodule/cpucap/internal.h b/crypto/fipsmodule/cpucap/internal.h index bccb8260c6..a8f295913e 100644 --- a/crypto/fipsmodule/cpucap/internal.h +++ b/crypto/fipsmodule/cpucap/internal.h @@ -140,12 +140,8 @@ OPENSSL_INLINE int CRYPTO_is_VPCLMULQDQ_capable(void) { // 1100_0000_0010_0011_0000_0000_0000_0000 #define CPU_CAP_AVX512IFMA_BITFLAGS 0xC0230000 OPENSSL_INLINE int CRYPTO_is_AVX512IFMA_capable(void) { -#if defined(OPENSSL_WINDOWS) - return 0; -#else return (OPENSSL_ia32cap_get()[2] & CPU_CAP_AVX512IFMA_BITFLAGS) == CPU_CAP_AVX512IFMA_BITFLAGS; -#endif } OPENSSL_INLINE int CRYPTO_is_VBMI2_capable(void) { From df18ce2831e9c9f93d4aa7f7e5eaa1ce6edd1149 Mon Sep 17 00:00:00 2001 From: dkostic <25055813+dkostic@users.noreply.github.com> Date: Tue, 10 Dec 2024 14:39:23 -0800 Subject: [PATCH 10/12] s2n-bignum update 2024-12-10 (#2050) --- .../arm/fastmul/bignum_emontredc_8n_neon.S | 2 +- .../bignum_copy_row_from_table_16_neon.S | 2 +- .../bignum_copy_row_from_table_32_neon.S | 2 +- .../s2n-bignum/arm/p384/p384_montjadd.S | 8 +- .../s2n-bignum/arm/p384/p384_montjscalarmul.S | 8 +- third_party/s2n-bignum/arm/p521/Makefile | 5 +- .../s2n-bignum/arm/p521/bignum_inv_p521.S | 1696 ++++++++++ third_party/s2n-bignum/arm/p521/p521_jadd.S | 2250 +++++++------ .../s2n-bignum/arm/p521/p521_jdouble.S | 2259 +++++++------ .../s2n-bignum/arm/p521/p521_jscalarmul.S | 2706 ++++++++++++++++ .../s2n-bignum/arm/p521/p521_jscalarmul_alt.S | 2102 ++++++++++++ .../s2n-bignum/x86_att/p521/bignum_inv_p521.S | 2087 ++++++++++++ .../s2n-bignum/x86_att/p521/p521_jscalarmul.S | 2460 +++++++++++++++ .../x86_att/p521/p521_jscalarmul_alt.S | 2805 +++++++++++++++++ util/fipstools/delocate/delocate.peg | 2 +- util/fipstools/delocate/delocate.peg.go | 1819 +++++------ 16 files changed, 17223 insertions(+), 2990 deletions(-) create mode 100644 third_party/s2n-bignum/arm/p521/bignum_inv_p521.S create mode 100644 third_party/s2n-bignum/arm/p521/p521_jscalarmul.S create mode 100644 third_party/s2n-bignum/arm/p521/p521_jscalarmul_alt.S create mode 100644 third_party/s2n-bignum/x86_att/p521/bignum_inv_p521.S create mode 100644 third_party/s2n-bignum/x86_att/p521/p521_jscalarmul.S create mode 100644 third_party/s2n-bignum/x86_att/p521/p521_jscalarmul_alt.S diff --git a/third_party/s2n-bignum/arm/fastmul/bignum_emontredc_8n_neon.S b/third_party/s2n-bignum/arm/fastmul/bignum_emontredc_8n_neon.S index 342b844dd6..3e72ebd67f 100644 --- a/third_party/s2n-bignum/arm/fastmul/bignum_emontredc_8n_neon.S +++ b/third_party/s2n-bignum/arm/fastmul/bignum_emontredc_8n_neon.S @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT-0 // ---------------------------------------------------------------------------- -// Extend Montgomery reduce in 8-digit blocks, results in input-output buffer +// Extended Montgomery reduce in 8-digit blocks, results in input-output buffer // Inputs z[2*k], m[k], w; outputs function return (extra result bit) and z[2*k] // // extern uint64_t bignum_emontredc_8n_neon diff --git a/third_party/s2n-bignum/arm/generic/bignum_copy_row_from_table_16_neon.S b/third_party/s2n-bignum/arm/generic/bignum_copy_row_from_table_16_neon.S index 1e31f070b9..ea0bef702c 100644 --- a/third_party/s2n-bignum/arm/generic/bignum_copy_row_from_table_16_neon.S +++ b/third_party/s2n-bignum/arm/generic/bignum_copy_row_from_table_16_neon.S @@ -12,7 +12,7 @@ // (uint64_t *z, uint64_t *table, uint64_t height, uint64_t idx); // // Initial version written by Hanno Becker -// Standard ARM ABI: X0 = z, X1 = table, X2 = height, X4 = idx +// Standard ARM ABI: X0 = z, X1 = table, X2 = height, X3 = idx // ---------------------------------------------------------------------------- #include "_internal_s2n_bignum.h" diff --git a/third_party/s2n-bignum/arm/generic/bignum_copy_row_from_table_32_neon.S b/third_party/s2n-bignum/arm/generic/bignum_copy_row_from_table_32_neon.S index 773a6d5745..c3dc386990 100644 --- a/third_party/s2n-bignum/arm/generic/bignum_copy_row_from_table_32_neon.S +++ b/third_party/s2n-bignum/arm/generic/bignum_copy_row_from_table_32_neon.S @@ -12,7 +12,7 @@ // (uint64_t *z, uint64_t *table, uint64_t height, uint64_t idx); // // Initial version written by Hanno Becker -// Standard ARM ABI: X0 = z, X1 = table, X2 = height, X4 = idx +// Standard ARM ABI: X0 = z, X1 = table, X2 = height, X3 = idx // ---------------------------------------------------------------------------- #include "_internal_s2n_bignum.h" diff --git a/third_party/s2n-bignum/arm/p384/p384_montjadd.S b/third_party/s2n-bignum/arm/p384/p384_montjadd.S index 3604313273..4f4a60d260 100644 --- a/third_party/s2n-bignum/arm/p384/p384_montjadd.S +++ b/third_party/s2n-bignum/arm/p384/p384_montjadd.S @@ -32,7 +32,9 @@ #define NUMSIZE 48 -#define NSPACE (NUMSIZE*7) +// 7 NUMSIZEs for the point operation, one extra NUMSIZE for field operations + +#define NSPACE (NUMSIZE*8) S2N_BN_SYMBOL(p384_montjadd): @@ -661,7 +663,7 @@ S2N_BN_SYMBOL(p384_montjadd): stp x7, x11, [sp, #256] adc x17, x14, xzr stp x2, x17, [sp, #272] - stp x23, x24, [sp, #-48] + stp x23, x24, [sp, #0x150] // It is #-48 after inlining, but access to sp+negative in the middle of fn is bad ldr q3, [x26, #96] ldr q25, [x25, #48] ldp x13, x23, [x25, #48] @@ -5902,7 +5904,7 @@ S2N_BN_SYMBOL(p384_montjadd): stp x14, x5, [sp, #256] adc x12, x15, x23 stp x21, x12, [sp, #272] - ldp x2, x27, [sp, #-48] + ldp x2, x27, [sp, #0x150] // It is #-48 after inlining, but access to sp+negative in the middle of fn is bad ldr q3, [sp, #48] ldr q25, [sp, #192] ldp x13, x23, [sp, #192] diff --git a/third_party/s2n-bignum/arm/p384/p384_montjscalarmul.S b/third_party/s2n-bignum/arm/p384/p384_montjscalarmul.S index 11b5215b4c..2bd405e245 100644 --- a/third_party/s2n-bignum/arm/p384/p384_montjscalarmul.S +++ b/third_party/s2n-bignum/arm/p384/p384_montjscalarmul.S @@ -503,7 +503,7 @@ p384_montjscalarmul_p384_montjadd: stp x23, x24, [sp, #-16]! stp x25, x26, [sp, #-16]! stp x27, xzr, [sp, #-16]! - sub sp, sp, #0x150 + sub sp, sp, #0x180 mov x24, x0 mov x25, x1 mov x26, x2 @@ -1120,7 +1120,7 @@ p384_montjscalarmul_p384_montjadd: stp x7, x11, [sp, #256] adc x17, x14, xzr stp x2, x17, [sp, #272] - stp x23, x24, [sp, #-48] + stp x23, x24, [sp, #0x150] ldr q3, [x26, #96] ldr q25, [x25, #48] ldp x13, x23, [x25, #48] @@ -6361,7 +6361,7 @@ p384_montjscalarmul_p384_montjadd: stp x14, x5, [sp, #256] adc x12, x15, x23 stp x21, x12, [sp, #272] - ldp x2, x27, [sp, #-48] + ldp x2, x27, [sp, #0x150] ldr q3, [sp, #48] ldr q25, [sp, #192] ldp x13, x23, [sp, #192] @@ -6874,7 +6874,7 @@ p384_montjscalarmul_p384_montjadd: stp x12, x13, [x27, #96] stp x14, x15, [x27, #112] stp x16, x17, [x27, #128] - add sp, sp, #0x150 + add sp, sp, #0x180 ldp x27, xzr, [sp], #16 ldp x25, x26, [sp], #16 ldp x23, x24, [sp], #16 diff --git a/third_party/s2n-bignum/arm/p521/Makefile b/third_party/s2n-bignum/arm/p521/Makefile index 3e5e0e855c..3936b48307 100644 --- a/third_party/s2n-bignum/arm/p521/Makefile +++ b/third_party/s2n-bignum/arm/p521/Makefile @@ -28,6 +28,7 @@ OBJ = bignum_add_p521.o \ bignum_double_p521.o \ bignum_fromlebytes_p521.o \ bignum_half_p521.o \ + bignum_inv_p521.o \ bignum_mod_n521_9.o \ bignum_mod_p521_9.o \ bignum_montmul_p521.o \ @@ -53,7 +54,9 @@ OBJ = bignum_add_p521.o \ p521_jdouble.o \ p521_jdouble_alt.o \ p521_jmixadd.o \ - p521_jmixadd_alt.o + p521_jmixadd_alt.o \ + p521_jscalarmul.o \ + p521_jscalarmul_alt.o %.o : %.S ; $(CC) -E -I../../include $< | $(GAS) -o $@ - diff --git a/third_party/s2n-bignum/arm/p521/bignum_inv_p521.S b/third_party/s2n-bignum/arm/p521/bignum_inv_p521.S new file mode 100644 index 0000000000..731b9784d6 --- /dev/null +++ b/third_party/s2n-bignum/arm/p521/bignum_inv_p521.S @@ -0,0 +1,1696 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT-0 + +// ---------------------------------------------------------------------------- +// Modular inverse modulo p_521 = 2^521 - 1 +// Input x[9]; output z[9] +// +// extern void bignum_inv_p521(uint64_t z[static 9],uint64_t x[static 9]); +// +// Assuming the 9-digit input x is coprime to p_521, i.e. is not divisible +// by it, returns z < p_521 such that x * z == 1 (mod p_521). Note that +// x does not need to be reduced modulo p_521, but the output always is. +// +// Standard ARM ABI: X0 = z, X1 = x +// ---------------------------------------------------------------------------- +#include "_internal_s2n_bignum.h" + + S2N_BN_SYM_VISIBILITY_DIRECTIVE(bignum_inv_p521) + S2N_BN_SYM_PRIVACY_DIRECTIVE(bignum_inv_p521) + + .text + .balign 4 + +// Size in bytes of a 64-bit word + +#define N 8 + +// Used for the return pointer + +#define res x20 + +// Loop counter and d = 2 * delta value for divstep + +#define i x21 +#define d x22 + +// Registers used for matrix element magnitudes and signs + +#define m00 x10 +#define m01 x11 +#define m10 x12 +#define m11 x13 +#define s00 x14 +#define s01 x15 +#define s10 x16 +#define s11 x17 + +// Initial carries for combinations + +#define car0 x9 +#define car1 x19 + +// Input and output, plain registers treated according to pattern + +#define reg0 x0, #0 +#define reg1 x1, #0 +#define reg2 x2, #0 +#define reg3 x3, #0 +#define reg4 x4, #0 + +#define x x1, #0 +#define z x0, #0 + +// Pointer-offset pairs for temporaries on stack + +#define f sp, #0 +#define g sp, #(9*N) +#define u sp, #(18*N) +#define v sp, #(27*N) + +// Total size to reserve on the stack + +#define NSPACE #(36*N) + +// Very similar to a subroutine call to the s2n-bignum word_divstep59. +// But different in register usage and returning the final matrix in +// registers as follows +// +// [ m00 m01] +// [ m10 m11] + +#define divstep59() \ + and x4, x2, #0xfffff; \ + orr x4, x4, #0xfffffe0000000000; \ + and x5, x3, #0xfffff; \ + orr x5, x5, #0xc000000000000000; \ + tst x5, #0x1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + asr x5, x5, #1; \ + add x8, x4, #0x100, lsl #12; \ + sbfx x8, x8, #21, #21; \ + mov x11, #0x100000; \ + add x11, x11, x11, lsl #21; \ + add x9, x4, x11; \ + asr x9, x9, #42; \ + add x10, x5, #0x100, lsl #12; \ + sbfx x10, x10, #21, #21; \ + add x11, x5, x11; \ + asr x11, x11, #42; \ + mul x6, x8, x2; \ + mul x7, x9, x3; \ + mul x2, x10, x2; \ + mul x3, x11, x3; \ + add x4, x6, x7; \ + add x5, x2, x3; \ + asr x2, x4, #20; \ + asr x3, x5, #20; \ + and x4, x2, #0xfffff; \ + orr x4, x4, #0xfffffe0000000000; \ + and x5, x3, #0xfffff; \ + orr x5, x5, #0xc000000000000000; \ + tst x5, #0x1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + asr x5, x5, #1; \ + add x12, x4, #0x100, lsl #12; \ + sbfx x12, x12, #21, #21; \ + mov x15, #0x100000; \ + add x15, x15, x15, lsl #21; \ + add x13, x4, x15; \ + asr x13, x13, #42; \ + add x14, x5, #0x100, lsl #12; \ + sbfx x14, x14, #21, #21; \ + add x15, x5, x15; \ + asr x15, x15, #42; \ + mul x6, x12, x2; \ + mul x7, x13, x3; \ + mul x2, x14, x2; \ + mul x3, x15, x3; \ + add x4, x6, x7; \ + add x5, x2, x3; \ + asr x2, x4, #20; \ + asr x3, x5, #20; \ + and x4, x2, #0xfffff; \ + orr x4, x4, #0xfffffe0000000000; \ + and x5, x3, #0xfffff; \ + orr x5, x5, #0xc000000000000000; \ + tst x5, #0x1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + mul x2, x12, x8; \ + mul x3, x12, x9; \ + mul x6, x14, x8; \ + mul x7, x14, x9; \ + madd x8, x13, x10, x2; \ + madd x9, x13, x11, x3; \ + madd x16, x15, x10, x6; \ + madd x17, x15, x11, x7; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + tst x5, #0x2; \ + asr x5, x5, #1; \ + csel x6, x4, xzr, ne; \ + ccmp x1, xzr, #0x8, ne; \ + cneg x1, x1, ge; \ + cneg x6, x6, ge; \ + csel x4, x5, x4, ge; \ + add x5, x5, x6; \ + add x1, x1, #0x2; \ + asr x5, x5, #1; \ + add x12, x4, #0x100, lsl #12; \ + sbfx x12, x12, #22, #21; \ + mov x15, #0x100000; \ + add x15, x15, x15, lsl #21; \ + add x13, x4, x15; \ + asr x13, x13, #43; \ + add x14, x5, #0x100, lsl #12; \ + sbfx x14, x14, #22, #21; \ + add x15, x5, x15; \ + asr x15, x15, #43; \ + mneg x2, x12, x8; \ + mneg x3, x12, x9; \ + mneg x4, x14, x8; \ + mneg x5, x14, x9; \ + msub m00, x13, x16, x2; \ + msub m01, x13, x17, x3; \ + msub m10, x15, x16, x4; \ + msub m11, x15, x17, x5 + +// Loading large constants + +#define movbig(nn,n3,n2,n1,n0) \ + movz nn, n0; \ + movk nn, n1, lsl #16; \ + movk nn, n2, lsl #32; \ + movk nn, n3, lsl #48 + +S2N_BN_SYMBOL(bignum_inv_p521): + +// Save registers and make room for temporaries + + stp x19, x20, [sp, -16]! + stp x21, x22, [sp, -16]! + sub sp, sp, NSPACE + +// Save the return pointer for the end so we can overwrite x0 later + + mov res, x0 + +// Copy the prime p_521 = 2^521 - 1 into the f variable + + mov x10, #0xFFFFFFFFFFFFFFFF + stp x10, x10, [f] + stp x10, x10, [f+16] + stp x10, x10, [f+32] + stp x10, x10, [f+48] + mov x11, #0x1FF + str x11, [f+64] + +// Copy the input into the g variable, but reduce it strictly mod p_521 +// so that g <= f as assumed in the bound proof. This code fragment is +// very similar to bignum_mod_p521_9 complete with carry condensation. + + ldr x8, [x1, #64] + lsr x9, x8, #9 + + subs xzr, xzr, xzr + ldp x10, x11, [x1] + adcs xzr, x10, x9 + adcs xzr, x11, xzr + ldp x12, x13, [x1, #16] + and x7, x12, x13 + adcs xzr, x7, xzr + ldp x14, x15, [x1, #32] + and x7, x14, x15 + adcs xzr, x7, xzr + ldp x16, x17, [x1, #48] + and x7, x16, x17 + adcs xzr, x7, xzr + orr x7, x8, #~0x1FF + adcs x7, x7, xzr + + adcs x10, x10, x9 + adcs x11, x11, xzr + adcs x12, x12, xzr + adcs x13, x13, xzr + adcs x14, x14, xzr + adcs x15, x15, xzr + adcs x16, x16, xzr + adcs x17, x17, xzr + adc x8, x8, xzr + and x8, x8, #0x1FF + + stp x10, x11, [g] + stp x12, x13, [g+16] + stp x14, x15, [g+32] + stp x16, x17, [g+48] + str x8, [g+64] + +// Also maintain weakly reduced < 2*p_521 vector [u,v] such that +// [f,g] == x * 2^{1239-59*i} * [u,v] (mod p_521) +// starting with [p_521,x] == x * 2^{1239-59*0} * [0,2^-1239] (mod p_521) +// Note that because (2^{a+521} == 2^a) (mod p_521) we simply have +// (2^-1239 == 2^324) (mod p_521) so the constant initializer is simple. +// +// Based on the standard divstep bound, for inputs <= 2^b we need at least +// n >= (9437 * b + 1) / 4096. Since b is 521, that means 1201 iterations. +// Since we package divstep in multiples of 59 bits, we do 21 blocks of 59 +// making *1239* total. (With a bit more effort we could avoid the full 59 +// divsteps and use a shorter tail computation, but we keep it simple.) +// Hence, after the 21st iteration we have [f,g] == x * [u,v] and since +// |f| = 1 we get the modular inverse from u by flipping its sign with f. + + stp xzr, xzr, [u] + stp xzr, xzr, [u+16] + stp xzr, xzr, [u+32] + stp xzr, xzr, [u+48] + str xzr, [u+64] + + mov x10, #16 + stp xzr, xzr, [v] + stp xzr, xzr, [v+16] + stp xzr, x10, [v+32] + stp xzr, xzr, [v+48] + str xzr, [v+64] + +// Start of main loop. We jump into the middle so that the divstep +// portion is common to the special 21st iteration after a uniform +// first 20. + + mov i, #21 + mov d, #1 + b midloop + +loop: + +// Separate the matrix elements into sign-magnitude pairs + + cmp m00, xzr + csetm s00, mi + cneg m00, m00, mi + + cmp m01, xzr + csetm s01, mi + cneg m01, m01, mi + + cmp m10, xzr + csetm s10, mi + cneg m10, m10, mi + + cmp m11, xzr + csetm s11, mi + cneg m11, m11, mi + +// Adjust the initial values to allow for complement instead of negation +// This initial offset is the same for [f,g] and [u,v] compositions. +// Save it in stable registers for the [u,v] part and do [f,g] first. + + and x0, m00, s00 + and x1, m01, s01 + add car0, x0, x1 + + and x0, m10, s10 + and x1, m11, s11 + add car1, x0, x1 + +// Now the computation of the updated f and g values. This maintains a +// 2-word carry between stages so we can conveniently insert the shift +// right by 59 before storing back, and not overwrite digits we need +// again of the old f and g values. +// +// Digit 0 of [f,g] + + ldr x7, [f] + eor x1, x7, s00 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x4, car0, x0 + adc x2, xzr, x1 + ldr x8, [g] + eor x1, x8, s01 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x4, x4, x0 + adc x2, x2, x1 + + eor x1, x7, s10 + mul x0, x1, m10 + umulh x1, x1, m10 + adds x5, car1, x0 + adc x3, xzr, x1 + eor x1, x8, s11 + mul x0, x1, m11 + umulh x1, x1, m11 + adds x5, x5, x0 + adc x3, x3, x1 + +// Digit 1 of [f,g] + + ldr x7, [f+N] + eor x1, x7, s00 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x2, x2, x0 + adc x6, xzr, x1 + ldr x8, [g+N] + eor x1, x8, s01 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x2, x2, x0 + adc x6, x6, x1 + extr x4, x2, x4, #59 + str x4, [f] + + eor x1, x7, s10 + mul x0, x1, m10 + umulh x1, x1, m10 + adds x3, x3, x0 + adc x4, xzr, x1 + eor x1, x8, s11 + mul x0, x1, m11 + umulh x1, x1, m11 + adds x3, x3, x0 + adc x4, x4, x1 + extr x5, x3, x5, #59 + str x5, [g] + +// Digit 2 of [f,g] + + ldr x7, [f+2*N] + eor x1, x7, s00 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x6, x6, x0 + adc x5, xzr, x1 + ldr x8, [g+2*N] + eor x1, x8, s01 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x6, x6, x0 + adc x5, x5, x1 + extr x2, x6, x2, #59 + str x2, [f+N] + + eor x1, x7, s10 + mul x0, x1, m10 + umulh x1, x1, m10 + adds x4, x4, x0 + adc x2, xzr, x1 + eor x1, x8, s11 + mul x0, x1, m11 + umulh x1, x1, m11 + adds x4, x4, x0 + adc x2, x2, x1 + extr x3, x4, x3, #59 + str x3, [g+N] + +// Digit 3 of [f,g] + + ldr x7, [f+3*N] + eor x1, x7, s00 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x5, x5, x0 + adc x3, xzr, x1 + ldr x8, [g+3*N] + eor x1, x8, s01 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x5, x5, x0 + adc x3, x3, x1 + extr x6, x5, x6, #59 + str x6, [f+2*N] + + eor x1, x7, s10 + mul x0, x1, m10 + umulh x1, x1, m10 + adds x2, x2, x0 + adc x6, xzr, x1 + eor x1, x8, s11 + mul x0, x1, m11 + umulh x1, x1, m11 + adds x2, x2, x0 + adc x6, x6, x1 + extr x4, x2, x4, #59 + str x4, [g+2*N] + +// Digit 4 of [f,g] + + ldr x7, [f+4*N] + eor x1, x7, s00 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x3, x3, x0 + adc x4, xzr, x1 + ldr x8, [g+4*N] + eor x1, x8, s01 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x3, x3, x0 + adc x4, x4, x1 + extr x5, x3, x5, #59 + str x5, [f+3*N] + + eor x1, x7, s10 + mul x0, x1, m10 + umulh x1, x1, m10 + adds x6, x6, x0 + adc x5, xzr, x1 + eor x1, x8, s11 + mul x0, x1, m11 + umulh x1, x1, m11 + adds x6, x6, x0 + adc x5, x5, x1 + extr x2, x6, x2, #59 + str x2, [g+3*N] + +// Digit 5 of [f,g] + + ldr x7, [f+5*N] + eor x1, x7, s00 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x4, x4, x0 + adc x2, xzr, x1 + ldr x8, [g+5*N] + eor x1, x8, s01 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x4, x4, x0 + adc x2, x2, x1 + extr x3, x4, x3, #59 + str x3, [f+4*N] + + eor x1, x7, s10 + mul x0, x1, m10 + umulh x1, x1, m10 + adds x5, x5, x0 + adc x3, xzr, x1 + eor x1, x8, s11 + mul x0, x1, m11 + umulh x1, x1, m11 + adds x5, x5, x0 + adc x3, x3, x1 + extr x6, x5, x6, #59 + str x6, [g+4*N] + +// Digit 6 of [f,g] + + ldr x7, [f+6*N] + eor x1, x7, s00 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x2, x2, x0 + adc x6, xzr, x1 + ldr x8, [g+6*N] + eor x1, x8, s01 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x2, x2, x0 + adc x6, x6, x1 + extr x4, x2, x4, #59 + str x4, [f+5*N] + + eor x1, x7, s10 + mul x0, x1, m10 + umulh x1, x1, m10 + adds x3, x3, x0 + adc x4, xzr, x1 + eor x1, x8, s11 + mul x0, x1, m11 + umulh x1, x1, m11 + adds x3, x3, x0 + adc x4, x4, x1 + extr x5, x3, x5, #59 + str x5, [g+5*N] + +// Digit 7 of [f,g] + + ldr x7, [f+7*N] + eor x1, x7, s00 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x6, x6, x0 + adc x5, xzr, x1 + ldr x8, [g+7*N] + eor x1, x8, s01 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x6, x6, x0 + adc x5, x5, x1 + extr x2, x6, x2, #59 + str x2, [f+6*N] + + eor x1, x7, s10 + mul x0, x1, m10 + umulh x1, x1, m10 + adds x4, x4, x0 + adc x2, xzr, x1 + eor x1, x8, s11 + mul x0, x1, m11 + umulh x1, x1, m11 + adds x4, x4, x0 + adc x2, x2, x1 + extr x3, x4, x3, #59 + str x3, [g+6*N] + +// Digits 8 and 9 of [f,g] + + ldr x7, [f+8*N] + eor x1, x7, s00 + asr x3, x1, #63 + and x3, x3, m00 + neg x3, x3 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x5, x5, x0 + adc x3, x3, x1 + ldr x8, [g+8*N] + eor x1, x8, s01 + asr x0, x1, #63 + and x0, x0, m01 + sub x3, x3, x0 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x5, x5, x0 + adc x3, x3, x1 + extr x6, x5, x6, #59 + str x6, [f+7*N] + extr x5, x3, x5, #59 + str x5, [f+8*N] + + eor x1, x7, s10 + asr x5, x1, #63 + and x5, x5, m10 + neg x5, x5 + mul x0, x1, m10 + umulh x1, x1, m10 + adds x2, x2, x0 + adc x5, x5, x1 + eor x1, x8, s11 + asr x0, x1, #63 + and x0, x0, m11 + sub x5, x5, x0 + mul x0, x1, m11 + umulh x1, x1, m11 + adds x2, x2, x0 + adc x5, x5, x1 + extr x4, x2, x4, #59 + str x4, [g+7*N] + extr x2, x5, x2, #59 + str x2, [g+8*N] + +// Now the computation of the updated u and v values and their +// modular reductions. A very similar accumulation except that +// the top words of u and v are unsigned and we don't shift. +// +// Digit 0 of [u,v] + + ldr x7, [u] + eor x1, x7, s00 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x4, car0, x0 + adc x2, xzr, x1 + ldr x8, [v] + eor x1, x8, s01 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x4, x4, x0 + str x4, [u] + adc x2, x2, x1 + + eor x1, x7, s10 + mul x0, x1, m10 + umulh x1, x1, m10 + adds x5, car1, x0 + adc x3, xzr, x1 + eor x1, x8, s11 + mul x0, x1, m11 + umulh x1, x1, m11 + adds x5, x5, x0 + str x5, [v] + adc x3, x3, x1 + +// Digit 1 of [u,v] + + ldr x7, [u+N] + eor x1, x7, s00 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x2, x2, x0 + adc x6, xzr, x1 + ldr x8, [v+N] + eor x1, x8, s01 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x2, x2, x0 + str x2, [u+N] + adc x6, x6, x1 + + eor x1, x7, s10 + mul x0, x1, m10 + umulh x1, x1, m10 + adds x3, x3, x0 + adc x4, xzr, x1 + eor x1, x8, s11 + mul x0, x1, m11 + umulh x1, x1, m11 + adds x3, x3, x0 + str x3, [v+N] + adc x4, x4, x1 + +// Digit 2 of [u,v] + + ldr x7, [u+2*N] + eor x1, x7, s00 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x6, x6, x0 + adc x5, xzr, x1 + ldr x8, [v+2*N] + eor x1, x8, s01 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x6, x6, x0 + str x6, [u+2*N] + adc x5, x5, x1 + + eor x1, x7, s10 + mul x0, x1, m10 + umulh x1, x1, m10 + adds x4, x4, x0 + adc x2, xzr, x1 + eor x1, x8, s11 + mul x0, x1, m11 + umulh x1, x1, m11 + adds x4, x4, x0 + str x4, [v+2*N] + adc x2, x2, x1 + +// Digit 3 of [u,v] + + ldr x7, [u+3*N] + eor x1, x7, s00 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x5, x5, x0 + adc x3, xzr, x1 + ldr x8, [v+3*N] + eor x1, x8, s01 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x5, x5, x0 + str x5, [u+3*N] + adc x3, x3, x1 + + eor x1, x7, s10 + mul x0, x1, m10 + umulh x1, x1, m10 + adds x2, x2, x0 + adc x6, xzr, x1 + eor x1, x8, s11 + mul x0, x1, m11 + umulh x1, x1, m11 + adds x2, x2, x0 + str x2, [v+3*N] + adc x6, x6, x1 + +// Digit 4 of [u,v] + + ldr x7, [u+4*N] + eor x1, x7, s00 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x3, x3, x0 + adc x4, xzr, x1 + ldr x8, [v+4*N] + eor x1, x8, s01 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x3, x3, x0 + str x3, [u+4*N] + adc x4, x4, x1 + + eor x1, x7, s10 + mul x0, x1, m10 + umulh x1, x1, m10 + adds x6, x6, x0 + adc x5, xzr, x1 + eor x1, x8, s11 + mul x0, x1, m11 + umulh x1, x1, m11 + adds x6, x6, x0 + str x6, [v+4*N] + adc x5, x5, x1 + +// Digit 5 of [u,v] + + ldr x7, [u+5*N] + eor x1, x7, s00 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x4, x4, x0 + adc x2, xzr, x1 + ldr x8, [v+5*N] + eor x1, x8, s01 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x4, x4, x0 + str x4, [u+5*N] + adc x2, x2, x1 + + eor x1, x7, s10 + mul x0, x1, m10 + umulh x1, x1, m10 + adds x5, x5, x0 + adc x3, xzr, x1 + eor x1, x8, s11 + mul x0, x1, m11 + umulh x1, x1, m11 + adds x5, x5, x0 + str x5, [v+5*N] + adc x3, x3, x1 + +// Digit 6 of [u,v] + + ldr x7, [u+6*N] + eor x1, x7, s00 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x2, x2, x0 + adc x6, xzr, x1 + ldr x8, [v+6*N] + eor x1, x8, s01 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x2, x2, x0 + str x2, [u+6*N] + adc x6, x6, x1 + + eor x1, x7, s10 + mul x0, x1, m10 + umulh x1, x1, m10 + adds x3, x3, x0 + adc x4, xzr, x1 + eor x1, x8, s11 + mul x0, x1, m11 + umulh x1, x1, m11 + adds x3, x3, x0 + str x3, [v+6*N] + adc x4, x4, x1 + +// Digit 7 of [u,v] + + ldr x7, [u+7*N] + eor x1, x7, s00 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x6, x6, x0 + adc x5, xzr, x1 + ldr x8, [v+7*N] + eor x1, x8, s01 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x6, x6, x0 + str x6, [u+7*N] + adc x5, x5, x1 + + eor x1, x7, s10 + mul x0, x1, m10 + umulh x1, x1, m10 + adds x4, x4, x0 + adc x2, xzr, x1 + eor x1, x8, s11 + mul x0, x1, m11 + umulh x1, x1, m11 + adds x4, x4, x0 + str x4, [v+7*N] + adc x2, x2, x1 + +// Digits 8 and 9 of u (top is unsigned) + + ldr x7, [u+8*N] + eor x1, x7, s00 + and x3, s00, m00 + neg x3, x3 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x5, x5, x0 + adc x3, x3, x1 + ldr x8, [v+8*N] + eor x1, x8, s01 + and x0, s01, m01 + sub x3, x3, x0 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x5, x5, x0 + adc x3, x3, x1 + +// Modular reduction of u, reloading as needed from u[0],...,u[7],x5,x3 + + extr x6, x3, x5, #9 + ldp x0, x1, [u] + add x6, x6, x3, asr #63 + sub x5, x5, x6, lsl #9 + adds x0, x0, x6 + asr x6, x6, #63 + adcs x1, x1, x6 + stp x0, x1, [u] + ldp x0, x1, [u+16] + adcs x0, x0, x6 + adcs x1, x1, x6 + stp x0, x1, [u+16] + ldp x0, x1, [u+32] + adcs x0, x0, x6 + adcs x1, x1, x6 + stp x0, x1, [u+32] + ldp x0, x1, [u+48] + adcs x0, x0, x6 + adcs x1, x1, x6 + stp x0, x1, [u+48] + adc x5, x5, x6 + str x5, [u+64] + +// Digits 8 and 9 of v (top is unsigned) + + eor x1, x7, s10 + and x5, s10, m10 + neg x5, x5 + mul x0, x1, m10 + umulh x1, x1, m10 + adds x2, x2, x0 + adc x5, x5, x1 + eor x1, x8, s11 + and x0, s11, m11 + sub x5, x5, x0 + mul x0, x1, m11 + umulh x1, x1, m11 + adds x2, x2, x0 + adc x5, x5, x1 + +// Modular reduction of v, reloading as needed from v[0],...,v[7],x2,x5 + + extr x6, x5, x2, #9 + ldp x0, x1, [v] + add x6, x6, x5, asr #63 + sub x2, x2, x6, lsl #9 + adds x0, x0, x6 + asr x6, x6, #63 + adcs x1, x1, x6 + stp x0, x1, [v] + ldp x0, x1, [v+16] + adcs x0, x0, x6 + adcs x1, x1, x6 + stp x0, x1, [v+16] + ldp x0, x1, [v+32] + adcs x0, x0, x6 + adcs x1, x1, x6 + stp x0, x1, [v+32] + ldp x0, x1, [v+48] + adcs x0, x0, x6 + adcs x1, x1, x6 + stp x0, x1, [v+48] + adc x2, x2, x6 + str x2, [v+64] + +midloop: + + mov x1, d + ldr x2, [f] + ldr x3, [g] + divstep59() + mov d, x1 + +// Next iteration + + subs i, i, #1 + bne loop + +// The 21st and last iteration does not need anything except the +// u value and the sign of f; the latter can be obtained from the +// lowest word of f. So it's done differently from the main loop. +// Find the sign of the new f. For this we just need one digit +// since we know (for in-scope cases) that f is either +1 or -1. +// We don't explicitly shift right by 59 either, but looking at +// bit 63 (or any bit >= 60) of the unshifted result is enough +// to distinguish -1 from +1; this is then made into a mask. + + ldr x0, [f] + ldr x1, [g] + mul x0, x0, m00 + madd x1, x1, m01, x0 + asr x0, x1, #63 + +// Now separate out the matrix into sign-magnitude pairs +// and adjust each one based on the sign of f. +// +// Note that at this point we expect |f|=1 and we got its +// sign above, so then since [f,0] == x * [u,v] (mod p_521) +// we want to flip the sign of u according to that of f. + + cmp m00, xzr + csetm s00, mi + cneg m00, m00, mi + eor s00, s00, x0 + + cmp m01, xzr + csetm s01, mi + cneg m01, m01, mi + eor s01, s01, x0 + + cmp m10, xzr + csetm s10, mi + cneg m10, m10, mi + eor s10, s10, x0 + + cmp m11, xzr + csetm s11, mi + cneg m11, m11, mi + eor s11, s11, x0 + +// Adjust the initial value to allow for complement instead of negation + + and x0, m00, s00 + and x1, m01, s01 + add car0, x0, x1 + +// Digit 0 of [u] + + ldr x7, [u] + eor x1, x7, s00 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x4, car0, x0 + adc x2, xzr, x1 + ldr x8, [v] + eor x1, x8, s01 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x4, x4, x0 + str x4, [u] + adc x2, x2, x1 + +// Digit 1 of [u] + + ldr x7, [u+N] + eor x1, x7, s00 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x2, x2, x0 + adc x6, xzr, x1 + ldr x8, [v+N] + eor x1, x8, s01 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x2, x2, x0 + str x2, [u+N] + adc x6, x6, x1 + +// Digit 2 of [u] + + ldr x7, [u+2*N] + eor x1, x7, s00 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x6, x6, x0 + adc x5, xzr, x1 + ldr x8, [v+2*N] + eor x1, x8, s01 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x6, x6, x0 + str x6, [u+2*N] + adc x5, x5, x1 + +// Digit 3 of [u] + + ldr x7, [u+3*N] + eor x1, x7, s00 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x5, x5, x0 + adc x3, xzr, x1 + ldr x8, [v+3*N] + eor x1, x8, s01 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x5, x5, x0 + str x5, [u+3*N] + adc x3, x3, x1 + +// Digit 4 of [u] + + ldr x7, [u+4*N] + eor x1, x7, s00 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x3, x3, x0 + adc x4, xzr, x1 + ldr x8, [v+4*N] + eor x1, x8, s01 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x3, x3, x0 + str x3, [u+4*N] + adc x4, x4, x1 + +// Digit 5 of [u] + + ldr x7, [u+5*N] + eor x1, x7, s00 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x4, x4, x0 + adc x2, xzr, x1 + ldr x8, [v+5*N] + eor x1, x8, s01 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x4, x4, x0 + str x4, [u+5*N] + adc x2, x2, x1 + +// Digit 6 of [u] + + ldr x7, [u+6*N] + eor x1, x7, s00 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x2, x2, x0 + adc x6, xzr, x1 + ldr x8, [v+6*N] + eor x1, x8, s01 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x2, x2, x0 + str x2, [u+6*N] + adc x6, x6, x1 + +// Digit 7 of [u] + + ldr x7, [u+7*N] + eor x1, x7, s00 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x6, x6, x0 + adc x5, xzr, x1 + ldr x8, [v+7*N] + eor x1, x8, s01 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x6, x6, x0 + str x6, [u+7*N] + adc x5, x5, x1 + +// Digits 8 and 9 of u (top is unsigned) + + ldr x7, [u+8*N] + eor x1, x7, s00 + and x3, s00, m00 + neg x3, x3 + mul x0, x1, m00 + umulh x1, x1, m00 + adds x5, x5, x0 + adc x3, x3, x1 + ldr x8, [v+8*N] + eor x1, x8, s01 + and x0, s01, m01 + sub x3, x3, x0 + mul x0, x1, m01 + umulh x1, x1, m01 + adds x5, x5, x0 + adc x3, x3, x1 + +// Modular reduction of u, reloading as needed from u[0],...,u[7],x5,x3 + + extr x6, x3, x5, #9 + ldp x10, x11, [u] + add x6, x6, x3, asr #63 + sub x5, x5, x6, lsl #9 + adds x10, x10, x6 + asr x6, x6, #63 + adcs x11, x11, x6 + ldp x12, x13, [u+16] + adcs x12, x12, x6 + adcs x13, x13, x6 + ldp x14, x15, [u+32] + adcs x14, x14, x6 + adcs x15, x15, x6 + ldp x16, x17, [u+48] + adcs x16, x16, x6 + adcs x17, x17, x6 + adc x19, x5, x6 + +// Further strict reduction ready for the output, which just means +// a conditional subtraction of p_521 + + subs x0, x10, #-1 + adcs x1, x11, xzr + adcs x2, x12, xzr + adcs x3, x13, xzr + adcs x4, x14, xzr + adcs x5, x15, xzr + adcs x6, x16, xzr + adcs x7, x17, xzr + mov x8, #0x1FF + sbcs x8, x19, x8 + + csel x0, x0, x10, cs + csel x1, x1, x11, cs + csel x2, x2, x12, cs + csel x3, x3, x13, cs + csel x4, x4, x14, cs + csel x5, x5, x15, cs + csel x6, x6, x16, cs + csel x7, x7, x17, cs + csel x8, x8, x19, cs + +// Store it back to the final output + + stp x0, x1, [res] + stp x2, x3, [res, #16] + stp x4, x5, [res, #32] + stp x6, x7, [res, #48] + str x8, [res, #64] + +// Restore stack and registers + + add sp, sp, NSPACE + ldp x21, x22, [sp], 16 + ldp x19, x20, [sp], 16 + ret + +#if defined(__linux__) && defined(__ELF__) +.section .note.GNU-stack, "", %progbits +#endif diff --git a/third_party/s2n-bignum/arm/p521/p521_jadd.S b/third_party/s2n-bignum/arm/p521/p521_jadd.S index 340766e6a2..6dbcad2b7b 100644 --- a/third_party/s2n-bignum/arm/p521/p521_jadd.S +++ b/third_party/s2n-bignum/arm/p521/p521_jadd.S @@ -347,1052 +347,1220 @@ S2N_BN_SYMBOL(p521_jadd): ldp x19, x20, [sp], 16 ret -// Local versions of the three field operations, almost identical to -// bignum_mul_p521, bignum_sqr_p521 and bignum_sub_p521 except for -// avoiding all intial register save-restore, and in the case of -// local_mul_p521, using the tmp buffer as temporary storage and -// avoiding x26. +// Local versions of the three field operations, identical to +// bignum_mul_p521_neon, bignum_sqr_p521_neon and bignum_sub_p521. local_mul_p521: - ldp x3, x4, [x1] - ldp x5, x6, [x1, #16] - ldp x7, x8, [x2] - ldp x9, x10, [x2, #16] - mul x11, x3, x7 - mul x15, x4, x8 - mul x16, x5, x9 - mul x17, x6, x10 - umulh x19, x3, x7 - adds x15, x15, x19 - umulh x19, x4, x8 - adcs x16, x16, x19 - umulh x19, x5, x9 - adcs x17, x17, x19 - umulh x19, x6, x10 - adc x19, x19, xzr - adds x12, x15, x11 - adcs x15, x16, x15 - adcs x16, x17, x16 - adcs x17, x19, x17 - adc x19, xzr, x19 - adds x13, x15, x11 - adcs x14, x16, x12 - adcs x15, x17, x15 - adcs x16, x19, x16 - adcs x17, xzr, x17 - adc x19, xzr, x19 - subs x24, x5, x6 - cneg x24, x24, lo - csetm x21, lo - subs x22, x10, x9 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x16, x16, x23 - eor x22, x22, x21 - adcs x17, x17, x22 - adc x19, x19, x21 - subs x24, x3, x4 - cneg x24, x24, lo - csetm x21, lo - subs x22, x8, x7 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x12, x12, x23 - eor x22, x22, x21 - adcs x13, x13, x22 - adcs x14, x14, x21 - adcs x15, x15, x21 - adcs x16, x16, x21 - adcs x17, x17, x21 - adc x19, x19, x21 - subs x24, x4, x6 - cneg x24, x24, lo - csetm x21, lo - subs x22, x10, x8 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x15, x15, x23 - eor x22, x22, x21 - adcs x16, x16, x22 - adcs x17, x17, x21 - adc x19, x19, x21 - subs x24, x3, x5 - cneg x24, x24, lo - csetm x21, lo - subs x22, x9, x7 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x13, x13, x23 - eor x22, x22, x21 - adcs x14, x14, x22 - adcs x15, x15, x21 - adcs x16, x16, x21 - adcs x17, x17, x21 - adc x19, x19, x21 - subs x24, x3, x6 - cneg x24, x24, lo - csetm x21, lo - subs x22, x10, x7 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x14, x14, x23 - eor x22, x22, x21 - adcs x15, x15, x22 - adcs x16, x16, x21 - adcs x17, x17, x21 - adc x19, x19, x21 - subs x24, x4, x5 - cneg x24, x24, lo - csetm x21, lo - subs x22, x9, x8 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x14, x14, x23 - eor x22, x22, x21 - adcs x15, x15, x22 - adcs x16, x16, x21 - adcs x17, x17, x21 - adc x19, x19, x21 - lsl x21, x11, #9 - extr x11, x12, x11, #55 - extr x12, x13, x12, #55 - extr x13, x14, x13, #55 - lsr x14, x14, #55 - ldp x3, x4, [x1, #32] - ldp x5, x6, [x1, #48] - ldp x7, x8, [x2, #32] - ldp x9, x10, [x2, #48] - stp x15, x16, [tmp] - stp x17, x19, [tmp+16] - stp x21, x11, [tmp+32] - stp x12, x13, [tmp+48] - str x14, [tmp+64] - mul x11, x3, x7 - mul x15, x4, x8 - mul x16, x5, x9 - mul x17, x6, x10 - umulh x19, x3, x7 - adds x15, x15, x19 - umulh x19, x4, x8 - adcs x16, x16, x19 - umulh x19, x5, x9 - adcs x17, x17, x19 - umulh x19, x6, x10 - adc x19, x19, xzr - adds x12, x15, x11 - adcs x15, x16, x15 - adcs x16, x17, x16 - adcs x17, x19, x17 - adc x19, xzr, x19 - adds x13, x15, x11 - adcs x14, x16, x12 - adcs x15, x17, x15 - adcs x16, x19, x16 - adcs x17, xzr, x17 - adc x19, xzr, x19 - subs x24, x5, x6 - cneg x24, x24, lo - csetm x21, lo - subs x22, x10, x9 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x16, x16, x23 - eor x22, x22, x21 - adcs x17, x17, x22 - adc x19, x19, x21 - subs x24, x3, x4 - cneg x24, x24, lo - csetm x21, lo - subs x22, x8, x7 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x12, x12, x23 - eor x22, x22, x21 - adcs x13, x13, x22 - adcs x14, x14, x21 - adcs x15, x15, x21 - adcs x16, x16, x21 - adcs x17, x17, x21 - adc x19, x19, x21 - subs x24, x4, x6 - cneg x24, x24, lo - csetm x21, lo - subs x22, x10, x8 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x15, x15, x23 - eor x22, x22, x21 - adcs x16, x16, x22 - adcs x17, x17, x21 - adc x19, x19, x21 - subs x24, x3, x5 - cneg x24, x24, lo - csetm x21, lo - subs x22, x9, x7 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x13, x13, x23 - eor x22, x22, x21 - adcs x14, x14, x22 - adcs x15, x15, x21 - adcs x16, x16, x21 - adcs x17, x17, x21 - adc x19, x19, x21 - subs x24, x3, x6 - cneg x24, x24, lo - csetm x21, lo - subs x22, x10, x7 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x14, x14, x23 - eor x22, x22, x21 - adcs x15, x15, x22 - adcs x16, x16, x21 - adcs x17, x17, x21 - adc x19, x19, x21 - subs x24, x4, x5 - cneg x24, x24, lo - csetm x21, lo - subs x22, x9, x8 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x14, x14, x23 - eor x22, x22, x21 - adcs x15, x15, x22 - adcs x16, x16, x21 - adcs x17, x17, x21 - adc x19, x19, x21 - ldp x23, x22, [tmp] - adds x11, x11, x23 - adcs x12, x12, x22 - stp x11, x12, [tmp] - ldp x23, x22, [tmp+16] - adcs x13, x13, x23 - adcs x14, x14, x22 - stp x13, x14, [tmp+16] - ldp x23, x22, [tmp+32] - adcs x15, x15, x23 - adcs x16, x16, x22 - stp x15, x16, [tmp+32] - ldp x23, x22, [tmp+48] - adcs x17, x17, x23 - adcs x19, x19, x22 - stp x17, x19, [tmp+48] - ldr x21, [tmp+64] - adc x21, x21, xzr - str x21, [tmp+64] - ldp x23, x22, [x1] - subs x3, x3, x23 - sbcs x4, x4, x22 - ldp x23, x22, [x1, #16] - sbcs x5, x5, x23 - sbcs x6, x6, x22 - csetm x24, lo - ldp x23, x22, [x2] - subs x7, x23, x7 - sbcs x8, x22, x8 - ldp x23, x22, [x2, #16] - sbcs x9, x23, x9 - sbcs x10, x22, x10 - csetm x25, lo - eor x3, x3, x24 - subs x3, x3, x24 - eor x4, x4, x24 - sbcs x4, x4, x24 - eor x5, x5, x24 - sbcs x5, x5, x24 - eor x6, x6, x24 - sbc x6, x6, x24 - eor x7, x7, x25 - subs x7, x7, x25 - eor x8, x8, x25 - sbcs x8, x8, x25 - eor x9, x9, x25 - sbcs x9, x9, x25 - eor x10, x10, x25 - sbc x10, x10, x25 - eor x25, x25, x24 - mul x11, x3, x7 - mul x15, x4, x8 - mul x16, x5, x9 - mul x17, x6, x10 - umulh x19, x3, x7 - adds x15, x15, x19 - umulh x19, x4, x8 - adcs x16, x16, x19 - umulh x19, x5, x9 - adcs x17, x17, x19 - umulh x19, x6, x10 - adc x19, x19, xzr - adds x12, x15, x11 - adcs x15, x16, x15 - adcs x16, x17, x16 - adcs x17, x19, x17 - adc x19, xzr, x19 - adds x13, x15, x11 - adcs x14, x16, x12 - adcs x15, x17, x15 - adcs x16, x19, x16 - adcs x17, xzr, x17 - adc x19, xzr, x19 - subs x24, x5, x6 - cneg x24, x24, lo - csetm x21, lo - subs x22, x10, x9 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x16, x16, x23 - eor x22, x22, x21 - adcs x17, x17, x22 - adc x19, x19, x21 - subs x24, x3, x4 - cneg x24, x24, lo - csetm x21, lo - subs x22, x8, x7 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x12, x12, x23 - eor x22, x22, x21 - adcs x13, x13, x22 - adcs x14, x14, x21 - adcs x15, x15, x21 - adcs x16, x16, x21 - adcs x17, x17, x21 - adc x19, x19, x21 - subs x24, x4, x6 - cneg x24, x24, lo - csetm x21, lo - subs x22, x10, x8 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x15, x15, x23 - eor x22, x22, x21 - adcs x16, x16, x22 - adcs x17, x17, x21 - adc x19, x19, x21 - subs x24, x3, x5 - cneg x24, x24, lo - csetm x21, lo - subs x22, x9, x7 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x13, x13, x23 - eor x22, x22, x21 - adcs x14, x14, x22 - adcs x15, x15, x21 - adcs x16, x16, x21 - adcs x17, x17, x21 - adc x19, x19, x21 - subs x24, x3, x6 - cneg x24, x24, lo - csetm x21, lo - subs x22, x10, x7 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x14, x14, x23 - eor x22, x22, x21 - adcs x15, x15, x22 - adcs x16, x16, x21 - adcs x17, x17, x21 - adc x19, x19, x21 - subs x24, x4, x5 - cneg x24, x24, lo - csetm x21, lo - subs x22, x9, x8 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x14, x14, x23 - eor x22, x22, x21 - adcs x15, x15, x22 - adcs x16, x16, x21 - adcs x17, x17, x21 - adc x19, x19, x21 - ldp x3, x4, [tmp] - ldp x5, x6, [tmp+16] - eor x11, x11, x25 - adds x11, x11, x3 - eor x12, x12, x25 - adcs x12, x12, x4 - eor x13, x13, x25 - adcs x13, x13, x5 - eor x14, x14, x25 - adcs x14, x14, x6 - eor x15, x15, x25 - ldp x7, x8, [tmp+32] - ldp x9, x10, [tmp+48] - ldr x20, [tmp+64] - adcs x15, x15, x7 - eor x16, x16, x25 - adcs x16, x16, x8 - eor x17, x17, x25 - adcs x17, x17, x9 - eor x19, x19, x25 - adcs x19, x19, x10 - adc x21, x20, xzr - adds x15, x15, x3 - adcs x16, x16, x4 - adcs x17, x17, x5 - adcs x19, x19, x6 - and x25, x25, #0x1ff - lsl x24, x11, #9 - orr x24, x24, x25 - adcs x7, x7, x24 - extr x24, x12, x11, #55 - adcs x8, x8, x24 - extr x24, x13, x12, #55 - adcs x9, x9, x24 - extr x24, x14, x13, #55 - adcs x10, x10, x24 - lsr x24, x14, #55 - adc x20, x24, x20 - ldr x6, [x2, #64] - ldp x3, x4, [x1] - and x23, x3, #0xfffffffffffff - mul x23, x6, x23 - ldr x14, [x1, #64] - ldp x11, x12, [x2] - and x24, x11, #0xfffffffffffff - mul x24, x14, x24 - add x23, x23, x24 - extr x24, x4, x3, #52 - and x24, x24, #0xfffffffffffff - mul x22, x6, x24 - extr x24, x12, x11, #52 - and x24, x24, #0xfffffffffffff - mul x24, x14, x24 - add x22, x22, x24 - lsr x24, x23, #52 - add x22, x22, x24 - lsl x23, x23, #12 - extr x24, x22, x23, #12 - adds x15, x15, x24 - ldp x5, x3, [x1, #16] - ldp x13, x11, [x2, #16] - extr x24, x5, x4, #40 - and x24, x24, #0xfffffffffffff - mul x23, x6, x24 - extr x24, x13, x12, #40 - and x24, x24, #0xfffffffffffff - mul x24, x14, x24 - add x23, x23, x24 - lsr x24, x22, #52 - add x23, x23, x24 - lsl x22, x22, #12 - extr x24, x23, x22, #24 - adcs x16, x16, x24 - extr x24, x3, x5, #28 - and x24, x24, #0xfffffffffffff - mul x22, x6, x24 - extr x24, x11, x13, #28 - and x24, x24, #0xfffffffffffff - mul x24, x14, x24 - add x22, x22, x24 - lsr x24, x23, #52 - add x22, x22, x24 - lsl x23, x23, #12 - extr x24, x22, x23, #36 - adcs x17, x17, x24 - and x25, x16, x17 - ldp x4, x5, [x1, #32] - ldp x12, x13, [x2, #32] - extr x24, x4, x3, #16 - and x24, x24, #0xfffffffffffff - mul x23, x6, x24 - extr x24, x12, x11, #16 - and x24, x24, #0xfffffffffffff - mul x24, x14, x24 - add x23, x23, x24 - lsl x21, x21, #48 - add x23, x23, x21 - lsr x24, x22, #52 - add x23, x23, x24 - lsl x22, x22, #12 - extr x24, x23, x22, #48 - adcs x19, x19, x24 - and x25, x25, x19 - lsr x24, x4, #4 - and x24, x24, #0xfffffffffffff - mul x22, x6, x24 - lsr x24, x12, #4 - and x24, x24, #0xfffffffffffff - mul x24, x14, x24 - add x22, x22, x24 - lsr x24, x23, #52 - add x22, x22, x24 - lsl x23, x23, #12 - extr x21, x22, x23, #60 - extr x24, x5, x4, #56 - and x24, x24, #0xfffffffffffff - mul x23, x6, x24 - extr x24, x13, x12, #56 - and x24, x24, #0xfffffffffffff - mul x24, x14, x24 - add x23, x23, x24 - lsr x24, x22, #52 - add x23, x23, x24 - lsl x21, x21, #8 - extr x24, x23, x21, #8 - adcs x7, x7, x24 - and x25, x25, x7 - ldp x3, x4, [x1, #48] - ldp x11, x12, [x2, #48] - extr x24, x3, x5, #44 - and x24, x24, #0xfffffffffffff - mul x22, x6, x24 - extr x24, x11, x13, #44 - and x24, x24, #0xfffffffffffff - mul x24, x14, x24 - add x22, x22, x24 - lsr x24, x23, #52 - add x22, x22, x24 - lsl x23, x23, #12 - extr x24, x22, x23, #20 - adcs x8, x8, x24 - and x25, x25, x8 - extr x24, x4, x3, #32 - and x24, x24, #0xfffffffffffff - mul x23, x6, x24 - extr x24, x12, x11, #32 - and x24, x24, #0xfffffffffffff - mul x24, x14, x24 - add x23, x23, x24 - lsr x24, x22, #52 - add x23, x23, x24 - lsl x22, x22, #12 - extr x24, x23, x22, #32 - adcs x9, x9, x24 - and x25, x25, x9 - lsr x24, x4, #20 - mul x22, x6, x24 - lsr x24, x12, #20 - mul x24, x14, x24 - add x22, x22, x24 - lsr x24, x23, #52 - add x22, x22, x24 - lsl x23, x23, #12 - extr x24, x22, x23, #44 - adcs x10, x10, x24 - and x25, x25, x10 - mul x24, x6, x14 - lsr x22, x22, #44 - add x24, x24, x22 - adc x20, x20, x24 - lsr x22, x20, #9 - orr x20, x20, #0xfffffffffffffe00 - cmp xzr, xzr - adcs xzr, x15, x22 - adcs xzr, x25, xzr - adcs xzr, x20, xzr - adcs x15, x15, x22 - adcs x16, x16, xzr - adcs x17, x17, xzr - adcs x19, x19, xzr - adcs x7, x7, xzr - adcs x8, x8, xzr - adcs x9, x9, xzr - adcs x10, x10, xzr - adc x20, x20, xzr - and x22, x15, #0x1ff - extr x15, x16, x15, #9 - extr x16, x17, x16, #9 - stp x15, x16, [x0] - extr x17, x19, x17, #9 - extr x19, x7, x19, #9 - stp x17, x19, [x0, #16] - extr x7, x8, x7, #9 - extr x8, x9, x8, #9 - stp x7, x8, [x0, #32] - extr x9, x10, x9, #9 - extr x10, x20, x10, #9 - stp x9, x10, [x0, #48] - str x22, [x0, #64] + stp x19, x20, [sp, #-16]! + stp x21, x22, [sp, #-16]! + stp x23, x24, [sp, #-16]! + stp x25, x26, [sp, #-16]! + sub sp, sp, #80 + ldr q6, [x2] + ldp x10, x17, [x1, #16] + ldr q4, [x1] + ldr q16, [x2, #32] + ldp x5, x20, [x2, #16] + ldr q2, [x1, #32] + movi v31.2D, #0x00000000ffffffff + uzp2 v17.4S, v6.4S, v6.4S + rev64 v7.4S, v6.4S + ldp x15, x21, [x1] + xtn v25.2S, v6.2D + xtn v22.2S, v4.2D + subs x14, x10, x17 + mul v7.4S, v7.4S, v4.4S + csetm x8, cc + rev64 v3.4S, v16.4S + xtn v1.2S, v16.2D + ldp x13, x16, [x2] + mul x26, x10, x5 + uzp2 v16.4S, v16.4S, v16.4S + uaddlp v26.2D, v7.4S + cneg x4, x14, cc + subs x24, x15, x21 + xtn v5.2S, v2.2D + mul v28.4S, v3.4S, v2.4S + shl v26.2D, v26.2D, #32 + mul x22, x17, x20 + umull v20.2D, v22.2S, v25.2S + uzp2 v6.4S, v4.4S, v4.4S + umull v18.2D, v22.2S, v17.2S + uzp2 v4.4S, v2.4S, v2.4S + cneg x14, x24, cc + csetm x7, cc + umulh x11, x17, x20 + usra v18.2D, v20.2D, #32 + uaddlp v7.2D, v28.4S + subs x19, x16, x13 + umlal v26.2D, v22.2S, v25.2S + cneg x19, x19, cc + shl v28.2D, v7.2D, #32 + umull v7.2D, v5.2S, v1.2S + umull v30.2D, v5.2S, v16.2S + cinv x6, x7, cc + mul x25, x14, x19 + umlal v28.2D, v5.2S, v1.2S + umull v21.2D, v6.2S, v17.2S + umulh x14, x14, x19 + usra v30.2D, v7.2D, #32 + subs x9, x20, x5 + and v29.16B, v18.16B, v31.16B + cinv x23, x8, cc + mov x8, v26.d[1] + cneg x12, x9, cc + usra v21.2D, v18.2D, #32 + umlal v29.2D, v6.2S, v25.2S + mul x24, x4, x12 + umull v18.2D, v4.2S, v16.2S + movi v25.2D, #0x00000000ffffffff + eor x9, x14, x6 + and v7.16B, v30.16B, v25.16B + usra v21.2D, v29.2D, #32 + umulh x7, x10, x5 + usra v18.2D, v30.2D, #32 + umlal v7.2D, v4.2S, v1.2S + mov x19, v21.d[0] + umulh x3, x4, x12 + mov x14, v21.d[1] + usra v18.2D, v7.2D, #32 + adds x4, x8, x19 + mov x8, v26.d[0] + adcs x19, x26, x14 + adcs x14, x22, x7 + adc x12, x11, xzr + adds x11, x4, x8 + adcs x26, x19, x4 + adcs x22, x14, x19 + eor x4, x24, x23 + adcs x14, x12, x14 + eor x7, x25, x6 + adc x25, xzr, x12 + eor x19, x3, x23 + adds x3, x26, x8 + adcs x24, x22, x11 + adcs x12, x14, x26 + adcs x22, x25, x22 + adcs x26, xzr, x14 + adc x14, xzr, x25 + cmn x23, #0x1 + adcs x22, x22, x4 + adcs x19, x26, x19 + adc x25, x14, x23 + subs x14, x21, x17 + cneg x23, x14, cc + csetm x26, cc + subs x4, x20, x16 + cneg x14, x4, cc + cinv x4, x26, cc + cmn x6, #0x1 + adcs x11, x11, x7 + mul x7, x23, x14 + adcs x9, x3, x9 + adcs x26, x24, x6 + umulh x3, x23, x14 + adcs x14, x12, x6 + adcs x22, x22, x6 + adcs x12, x19, x6 + extr x24, x11, x8, #55 + adc x6, x25, x6 + subs x19, x15, x17 + csetm x17, cc + cneg x23, x19, cc + subs x19, x20, x13 + lsl x25, x8, #9 + eor x8, x7, x4 + cneg x20, x19, cc + umulh x7, x23, x20 + cinv x19, x17, cc + subs x17, x15, x10 + csetm x15, cc + stp x25, x24, [sp, #32] + cneg x24, x17, cc + mul x20, x23, x20 + subs x25, x5, x13 + cneg x13, x25, cc + cinv x15, x15, cc + mul x25, x24, x13 + subs x21, x21, x10 + csetm x23, cc + cneg x17, x21, cc + subs x21, x5, x16 + umulh x13, x24, x13 + cinv x10, x23, cc + cneg x23, x21, cc + cmn x4, #0x1 + adcs x14, x14, x8 + eor x21, x3, x4 + adcs x21, x22, x21 + eor x5, x20, x19 + adcs x24, x12, x4 + mul x12, x17, x23 + eor x8, x25, x15 + adc x25, x6, x4 + cmn x15, #0x1 + adcs x6, x9, x8 + ldp x20, x8, [x2, #48] + eor x9, x13, x15 + adcs x4, x26, x9 + umulh x26, x17, x23 + ldp x17, x13, [x1, #48] + adcs x9, x14, x15 + adcs x16, x21, x15 + adcs x14, x24, x15 + eor x21, x7, x19 + mul x23, x17, x20 + adc x24, x25, x15 + cmn x19, #0x1 + adcs x7, x4, x5 + adcs x9, x9, x21 + umulh x3, x13, x8 + adcs x16, x16, x19 + adcs x22, x14, x19 + eor x5, x12, x10 + adc x12, x24, x19 + cmn x10, #0x1 + adcs x19, x7, x5 + eor x14, x26, x10 + mov x7, v28.d[1] + adcs x24, x9, x14 + extr x4, x19, x6, #55 + umulh x15, x17, x20 + mov x14, v18.d[1] + lsr x9, x19, #55 + adcs x5, x16, x10 + mov x16, v18.d[0] + adcs x19, x22, x10 + str x9, [sp, #64] + extr x25, x6, x11, #55 + adc x21, x12, x10 + subs x26, x17, x13 + stp x25, x4, [sp, #48] + stp x19, x21, [sp, #16] + csetm x6, cc + cneg x4, x26, cc + mul x19, x13, x8 + subs x11, x8, x20 + stp x24, x5, [sp] + ldp x21, x10, [x1, #32] + cinv x12, x6, cc + cneg x6, x11, cc + mov x9, v28.d[0] + umulh x25, x4, x6 + adds x22, x7, x16 + ldp x16, x5, [x2, #32] + adcs x14, x23, x14 + adcs x11, x19, x15 + adc x24, x3, xzr + adds x3, x22, x9 + adcs x15, x14, x22 + mul x22, x4, x6 + adcs x6, x11, x14 + adcs x4, x24, x11 + eor x14, x25, x12 + adc x26, xzr, x24 + subs x7, x21, x10 + csetm x23, cc + cneg x19, x7, cc + subs x24, x5, x16 + cneg x11, x24, cc + cinv x7, x23, cc + adds x25, x15, x9 + eor x23, x22, x12 + adcs x22, x6, x3 + mul x24, x19, x11 + adcs x15, x4, x15 + adcs x6, x26, x6 + umulh x19, x19, x11 + adcs x11, xzr, x4 + adc x26, xzr, x26 + cmn x12, #0x1 + adcs x4, x6, x23 + eor x6, x24, x7 + adcs x14, x11, x14 + adc x26, x26, x12 + subs x11, x10, x13 + cneg x12, x11, cc + csetm x11, cc + eor x19, x19, x7 + subs x24, x8, x5 + cinv x11, x11, cc + cneg x24, x24, cc + cmn x7, #0x1 + adcs x3, x3, x6 + mul x23, x12, x24 + adcs x25, x25, x19 + adcs x6, x22, x7 + umulh x19, x12, x24 + adcs x22, x15, x7 + adcs x12, x4, x7 + eor x24, x23, x11 + adcs x4, x14, x7 + adc x26, x26, x7 + eor x19, x19, x11 + subs x14, x21, x17 + cneg x7, x14, cc + csetm x14, cc + subs x23, x20, x16 + cinv x14, x14, cc + cneg x23, x23, cc + cmn x11, #0x1 + adcs x22, x22, x24 + mul x24, x7, x23 + adcs x15, x12, x19 + adcs x4, x4, x11 + adc x19, x26, x11 + umulh x26, x7, x23 + subs x7, x21, x13 + eor x11, x24, x14 + cneg x23, x7, cc + csetm x12, cc + subs x7, x8, x16 + cneg x7, x7, cc + cinv x12, x12, cc + cmn x14, #0x1 + eor x26, x26, x14 + adcs x11, x25, x11 + mul x25, x23, x7 + adcs x26, x6, x26 + adcs x6, x22, x14 + adcs x24, x15, x14 + umulh x23, x23, x7 + adcs x4, x4, x14 + adc x22, x19, x14 + eor x14, x25, x12 + eor x7, x23, x12 + cmn x12, #0x1 + adcs x14, x26, x14 + ldp x19, x25, [x2] + ldp x15, x23, [x2, #16] + adcs x26, x6, x7 + adcs x24, x24, x12 + adcs x7, x4, x12 + adc x4, x22, x12 + subs x19, x19, x16 + ldp x16, x22, [x1] + sbcs x6, x25, x5 + ldp x12, x25, [x1, #16] + sbcs x15, x15, x20 + sbcs x8, x23, x8 + csetm x23, cc + subs x21, x21, x16 + eor x16, x19, x23 + sbcs x19, x10, x22 + eor x22, x6, x23 + eor x8, x8, x23 + sbcs x6, x17, x12 + sbcs x13, x13, x25 + csetm x12, cc + subs x10, x10, x17 + cneg x17, x10, cc + csetm x25, cc + subs x5, x20, x5 + eor x10, x19, x12 + cneg x19, x5, cc + eor x20, x15, x23 + eor x21, x21, x12 + cinv x15, x25, cc + mul x25, x17, x19 + subs x16, x16, x23 + sbcs x5, x22, x23 + eor x6, x6, x12 + sbcs x20, x20, x23 + eor x22, x13, x12 + sbc x8, x8, x23 + subs x21, x21, x12 + umulh x19, x17, x19 + sbcs x10, x10, x12 + sbcs x17, x6, x12 + eor x6, x19, x15 + eor x19, x25, x15 + umulh x25, x17, x20 + sbc x13, x22, x12 + cmn x15, #0x1 + adcs x22, x14, x19 + adcs x19, x26, x6 + ldp x6, x26, [sp] + adcs x14, x24, x15 + umulh x24, x21, x16 + adcs x7, x7, x15 + adc x15, x4, x15 + adds x4, x9, x6 + eor x9, x23, x12 + adcs x12, x3, x26 + stp x4, x12, [sp] + ldp x4, x26, [sp, #16] + umulh x12, x10, x5 + ldp x6, x23, [sp, #32] + adcs x3, x11, x4 + mul x4, x13, x8 + adcs x26, x22, x26 + ldp x22, x11, [sp, #48] + adcs x6, x19, x6 + stp x3, x26, [sp, #16] + mul x26, x10, x5 + adcs x14, x14, x23 + stp x6, x14, [sp, #32] + ldr x6, [sp, #64] + adcs x22, x7, x22 + adcs x14, x15, x11 + mul x11, x17, x20 + adc x19, x6, xzr + stp x22, x14, [sp, #48] + adds x14, x26, x24 + str x19, [sp, #64] + umulh x19, x13, x8 + adcs x7, x11, x12 + adcs x22, x4, x25 + mul x6, x21, x16 + adc x19, x19, xzr + subs x11, x17, x13 + cneg x12, x11, cc + csetm x11, cc + subs x24, x8, x20 + cinv x11, x11, cc + cneg x24, x24, cc + adds x4, x14, x6 + adcs x14, x7, x14 + mul x3, x12, x24 + adcs x7, x22, x7 + adcs x22, x19, x22 + umulh x12, x12, x24 + adc x24, xzr, x19 + adds x19, x14, x6 + eor x3, x3, x11 + adcs x26, x7, x4 + adcs x14, x22, x14 + adcs x25, x24, x7 + adcs x23, xzr, x22 + eor x7, x12, x11 + adc x12, xzr, x24 + subs x22, x21, x10 + cneg x24, x22, cc + csetm x22, cc + subs x15, x5, x16 + cinv x22, x22, cc + cneg x15, x15, cc + cmn x11, #0x1 + adcs x3, x25, x3 + mul x25, x24, x15 + adcs x23, x23, x7 + adc x11, x12, x11 + subs x7, x10, x13 + umulh x15, x24, x15 + cneg x12, x7, cc + csetm x7, cc + eor x24, x25, x22 + eor x25, x15, x22 + cmn x22, #0x1 + adcs x24, x4, x24 + adcs x19, x19, x25 + adcs x15, x26, x22 + adcs x4, x14, x22 + adcs x26, x3, x22 + adcs x25, x23, x22 + adc x23, x11, x22 + subs x14, x21, x17 + cneg x3, x14, cc + csetm x11, cc + subs x14, x8, x5 + cneg x14, x14, cc + cinv x7, x7, cc + subs x13, x21, x13 + cneg x21, x13, cc + csetm x13, cc + mul x22, x12, x14 + subs x8, x8, x16 + cinv x13, x13, cc + umulh x14, x12, x14 + cneg x12, x8, cc + subs x8, x20, x16 + cneg x8, x8, cc + cinv x16, x11, cc + eor x22, x22, x7 + cmn x7, #0x1 + eor x14, x14, x7 + adcs x4, x4, x22 + mul x11, x3, x8 + adcs x22, x26, x14 + adcs x14, x25, x7 + eor x25, x24, x9 + adc x26, x23, x7 + umulh x7, x3, x8 + subs x17, x10, x17 + cneg x24, x17, cc + eor x3, x11, x16 + csetm x11, cc + subs x20, x20, x5 + cneg x5, x20, cc + cinv x11, x11, cc + cmn x16, #0x1 + mul x17, x21, x12 + eor x8, x7, x16 + adcs x10, x19, x3 + and x19, x9, #0x1ff + adcs x20, x15, x8 + umulh x15, x21, x12 + eor x12, x10, x9 + eor x8, x6, x9 + adcs x6, x4, x16 + adcs x4, x22, x16 + adcs x21, x14, x16 + adc x7, x26, x16 + mul x10, x24, x5 + cmn x13, #0x1 + ldp x3, x14, [x1] + eor x17, x17, x13 + umulh x5, x24, x5 + adcs x20, x20, x17 + eor x17, x15, x13 + adcs x16, x6, x17 + eor x22, x10, x11 + adcs x23, x4, x13 + extr x10, x14, x3, #52 + and x26, x3, #0xfffffffffffff + adcs x24, x21, x13 + and x15, x10, #0xfffffffffffff + adc x6, x7, x13 + cmn x11, #0x1 + adcs x17, x20, x22 + eor x4, x5, x11 + ldp x21, x10, [sp] + adcs x7, x16, x4 + eor x16, x17, x9 + eor x13, x7, x9 + ldp x3, x17, [sp, #16] + adcs x7, x23, x11 + eor x23, x7, x9 + ldp x5, x22, [sp, #32] + adcs x7, x24, x11 + adc x24, x6, x11 + ldr x6, [x2, #64] + adds x20, x8, x21 + lsl x11, x20, #9 + eor x4, x7, x9 + orr x7, x11, x19 + eor x8, x24, x9 + adcs x11, x25, x10 + mul x26, x6, x26 + ldp x19, x24, [sp, #48] + adcs x12, x12, x3 + adcs x16, x16, x17 + adcs x9, x13, x5 + ldr x25, [sp, #64] + extr x20, x11, x20, #55 + adcs x13, x23, x22 + adcs x4, x4, x19 + extr x23, x12, x11, #55 + adcs x8, x8, x24 + adc x11, x25, xzr + adds x21, x9, x21 + extr x9, x16, x12, #55 + lsr x12, x16, #55 + adcs x10, x13, x10 + mul x15, x6, x15 + adcs x13, x4, x3 + ldp x16, x4, [x2] + ldr x3, [x1, #64] + adcs x17, x8, x17 + adcs x5, x5, x7 + adcs x20, x22, x20 + adcs x8, x19, x23 + and x22, x16, #0xfffffffffffff + ldp x19, x7, [x1, #16] + adcs x9, x24, x9 + extr x24, x4, x16, #52 + adc x16, x12, x25 + mul x22, x3, x22 + and x25, x24, #0xfffffffffffff + extr x14, x19, x14, #40 + and x12, x14, #0xfffffffffffff + extr x23, x7, x19, #28 + ldp x19, x24, [x2, #16] + mul x14, x3, x25 + and x23, x23, #0xfffffffffffff + add x22, x26, x22 + lsl x11, x11, #48 + lsr x26, x22, #52 + lsl x25, x22, #12 + mul x22, x6, x12 + extr x12, x19, x4, #40 + add x4, x15, x14 + mul x15, x6, x23 + add x4, x4, x26 + extr x23, x24, x19, #28 + ldp x14, x19, [x1, #32] + and x26, x12, #0xfffffffffffff + extr x12, x4, x25, #12 + and x25, x23, #0xfffffffffffff + adds x21, x21, x12 + mul x12, x3, x26 + extr x23, x14, x7, #16 + and x23, x23, #0xfffffffffffff + mul x7, x3, x25 + ldp x25, x26, [x2, #32] + add x12, x22, x12 + extr x22, x19, x14, #56 + mul x23, x6, x23 + lsr x14, x14, #4 + extr x24, x25, x24, #16 + add x7, x15, x7 + and x15, x24, #0xfffffffffffff + and x22, x22, #0xfffffffffffff + lsr x24, x4, #52 + mul x15, x3, x15 + and x14, x14, #0xfffffffffffff + add x12, x12, x24 + lsl x24, x4, #12 + lsr x4, x12, #52 + extr x24, x12, x24, #24 + adcs x10, x10, x24 + lsl x24, x12, #12 + add x12, x7, x4 + mul x22, x6, x22 + add x4, x23, x15 + extr x7, x12, x24, #36 + adcs x13, x13, x7 + lsl x15, x12, #12 + add x7, x4, x11 + lsr x24, x12, #52 + ldp x23, x11, [x2, #48] + add x4, x7, x24 + mul x12, x6, x14 + extr x7, x26, x25, #56 + extr x14, x4, x15, #48 + and x2, x7, #0xfffffffffffff + extr x24, x11, x23, #32 + ldp x15, x7, [x1, #48] + and x1, x24, #0xfffffffffffff + lsr x24, x4, #52 + mul x2, x3, x2 + extr x26, x23, x26, #44 + lsr x23, x25, #4 + and x23, x23, #0xfffffffffffff + and x25, x26, #0xfffffffffffff + extr x26, x7, x15, #32 + extr x19, x15, x19, #44 + mul x23, x3, x23 + and x15, x26, #0xfffffffffffff + lsl x26, x4, #12 + and x4, x19, #0xfffffffffffff + lsr x11, x11, #20 + mul x19, x6, x4 + adcs x17, x17, x14 + add x14, x22, x2 + add x22, x12, x23 + lsr x7, x7, #20 + add x22, x22, x24 + extr x2, x22, x26, #60 + mul x24, x3, x25 + lsr x22, x22, #52 + add x14, x14, x22 + lsl x22, x2, #8 + extr x22, x14, x22, #8 + lsl x2, x14, #12 + mul x1, x3, x1 + adcs x12, x5, x22 + mul x5, x6, x15 + and x26, x10, x13 + and x4, x26, x17 + add x23, x19, x24 + lsr x14, x14, #52 + mul x22, x3, x11 + add x11, x23, x14 + extr x25, x11, x2, #20 + lsl x19, x11, #12 + adcs x25, x20, x25 + and x14, x4, x12 + add x1, x5, x1 + and x14, x14, x25 + mul x15, x6, x7 + add x26, x15, x22 + mul x6, x6, x3 + lsr x22, x11, #52 + add x4, x1, x22 + lsr x1, x4, #52 + extr x3, x4, x19, #32 + lsl x15, x4, #12 + add x7, x26, x1 + adcs x23, x8, x3 + extr x20, x7, x15, #44 + and x3, x14, x23 + lsr x19, x7, #44 + adcs x7, x9, x20 + add x11, x6, x19 + adc x4, x16, x11 + lsr x14, x4, #9 + cmp xzr, xzr + and x15, x3, x7 + orr x3, x4, #0xfffffffffffffe00 + adcs xzr, x21, x14 + adcs xzr, x15, xzr + adcs xzr, x3, xzr + adcs x11, x21, x14 + and x14, x11, #0x1ff + adcs x1, x10, xzr + extr x10, x1, x11, #9 + str x14, [x0, #64] + adcs x14, x13, xzr + extr x11, x14, x1, #9 + adcs x1, x17, xzr + extr x4, x1, x14, #9 + stp x10, x11, [x0] + adcs x11, x12, xzr + extr x14, x11, x1, #9 + adcs x10, x25, xzr + extr x11, x10, x11, #9 + stp x4, x14, [x0, #16] + adcs x14, x23, xzr + extr x10, x14, x10, #9 + adcs x1, x7, xzr + stp x11, x10, [x0, #32] + extr x14, x1, x14, #9 + adc x10, x3, xzr + extr x26, x10, x1, #9 + stp x14, x26, [x0, #48] + add sp, sp, #80 + ldp x25, x26, [sp], #16 + ldp x23, x24, [sp], #16 + ldp x21, x22, [sp], #16 + ldp x19, x20, [sp], #16 ret local_sqr_p521: - ldp x2, x3, [x1] - ldp x4, x5, [x1, #16] - ldp x6, x7, [x1, #32] - ldp x8, x9, [x1, #48] - mul x12, x6, x8 - mul x17, x7, x9 - umulh x22, x6, x8 - subs x23, x6, x7 - cneg x23, x23, cc - csetm x11, cc - subs x10, x9, x8 - cneg x10, x10, cc - mul x16, x23, x10 - umulh x10, x23, x10 - cinv x11, x11, cc - eor x16, x16, x11 - eor x10, x10, x11 - adds x13, x12, x22 - adc x22, x22, xzr - umulh x23, x7, x9 - adds x13, x13, x17 - adcs x22, x22, x23 - adc x23, x23, xzr - adds x22, x22, x17 - adc x23, x23, xzr - cmn x11, #0x1 - adcs x13, x13, x16 - adcs x22, x22, x10 - adc x23, x23, x11 - adds x12, x12, x12 - adcs x13, x13, x13 - adcs x22, x22, x22 - adcs x23, x23, x23 - adc x19, xzr, xzr - mul x10, x6, x6 - mul x16, x7, x7 - mul x21, x6, x7 - umulh x11, x6, x6 - umulh x17, x7, x7 - umulh x20, x6, x7 - adds x11, x11, x21 - adcs x16, x16, x20 - adc x17, x17, xzr - adds x11, x11, x21 - adcs x16, x16, x20 - adc x17, x17, xzr - adds x12, x12, x16 - adcs x13, x13, x17 - adcs x22, x22, xzr - adcs x23, x23, xzr - adc x19, x19, xzr - mul x14, x8, x8 - mul x16, x9, x9 - mul x21, x8, x9 - umulh x15, x8, x8 - umulh x17, x9, x9 - umulh x20, x8, x9 - adds x15, x15, x21 - adcs x16, x16, x20 - adc x17, x17, xzr - adds x15, x15, x21 - adcs x16, x16, x20 - adc x17, x17, xzr - adds x14, x14, x22 - adcs x15, x15, x23 - adcs x16, x16, x19 - adc x17, x17, xzr - ldr x19, [x1, #64] - add x23, x19, x19 - mul x19, x19, x19 - and x21, x2, #0xfffffffffffff - mul x21, x23, x21 - extr x20, x3, x2, #52 - and x20, x20, #0xfffffffffffff - mul x20, x23, x20 - lsr x22, x21, #52 - add x20, x20, x22 - lsl x21, x21, #12 - extr x22, x20, x21, #12 - adds x10, x10, x22 - extr x21, x4, x3, #40 - and x21, x21, #0xfffffffffffff - mul x21, x23, x21 - lsr x22, x20, #52 - add x21, x21, x22 - lsl x20, x20, #12 - extr x22, x21, x20, #24 - adcs x11, x11, x22 - extr x20, x5, x4, #28 - and x20, x20, #0xfffffffffffff - mul x20, x23, x20 - lsr x22, x21, #52 - add x20, x20, x22 - lsl x21, x21, #12 - extr x22, x20, x21, #36 - adcs x12, x12, x22 - extr x21, x6, x5, #16 - and x21, x21, #0xfffffffffffff - mul x21, x23, x21 - lsr x22, x20, #52 - add x21, x21, x22 - lsl x20, x20, #12 - extr x22, x21, x20, #48 - adcs x13, x13, x22 - lsr x20, x6, #4 - and x20, x20, #0xfffffffffffff - mul x20, x23, x20 - lsr x22, x21, #52 - add x20, x20, x22 - lsl x21, x21, #12 - extr x24, x20, x21, #60 - extr x21, x7, x6, #56 - and x21, x21, #0xfffffffffffff - mul x21, x23, x21 - lsr x22, x20, #52 - add x21, x21, x22 - lsl x24, x24, #8 - extr x22, x21, x24, #8 - adcs x14, x14, x22 - extr x20, x8, x7, #44 - and x20, x20, #0xfffffffffffff - mul x20, x23, x20 - lsr x22, x21, #52 - add x20, x20, x22 - lsl x21, x21, #12 - extr x22, x20, x21, #20 - adcs x15, x15, x22 - extr x21, x9, x8, #32 - and x21, x21, #0xfffffffffffff - mul x21, x23, x21 - lsr x22, x20, #52 - add x21, x21, x22 - lsl x20, x20, #12 - extr x22, x21, x20, #32 - adcs x16, x16, x22 - lsr x20, x9, #20 - mul x20, x23, x20 - lsr x22, x21, #52 - add x20, x20, x22 - lsl x21, x21, #12 - extr x22, x20, x21, #44 - adcs x17, x17, x22 - lsr x20, x20, #44 - adc x19, x19, x20 - extr x21, x11, x10, #9 - extr x20, x12, x11, #9 - stp x21, x20, [x0] - extr x21, x13, x12, #9 - extr x20, x14, x13, #9 - stp x21, x20, [x0, #16] - extr x21, x15, x14, #9 - extr x20, x16, x15, #9 - stp x21, x20, [x0, #32] - extr x21, x17, x16, #9 - extr x20, x19, x17, #9 - stp x21, x20, [x0, #48] - and x22, x10, #0x1ff - lsr x19, x19, #9 - add x22, x22, x19 - str x22, [x0, #64] - mul x12, x2, x4 - mul x17, x3, x5 - umulh x22, x2, x4 - subs x23, x2, x3 - cneg x23, x23, cc - csetm x11, cc - subs x10, x5, x4 - cneg x10, x10, cc - mul x16, x23, x10 - umulh x10, x23, x10 - cinv x11, x11, cc - eor x16, x16, x11 - eor x10, x10, x11 - adds x13, x12, x22 - adc x22, x22, xzr - umulh x23, x3, x5 - adds x13, x13, x17 - adcs x22, x22, x23 - adc x23, x23, xzr - adds x22, x22, x17 - adc x23, x23, xzr - cmn x11, #0x1 - adcs x13, x13, x16 - adcs x22, x22, x10 - adc x23, x23, x11 - adds x12, x12, x12 - adcs x13, x13, x13 - adcs x22, x22, x22 - adcs x23, x23, x23 - adc x19, xzr, xzr - mul x10, x2, x2 - mul x16, x3, x3 - mul x21, x2, x3 - umulh x11, x2, x2 - umulh x17, x3, x3 - umulh x20, x2, x3 - adds x11, x11, x21 - adcs x16, x16, x20 - adc x17, x17, xzr - adds x11, x11, x21 - adcs x16, x16, x20 - adc x17, x17, xzr - adds x12, x12, x16 - adcs x13, x13, x17 - adcs x22, x22, xzr - adcs x23, x23, xzr - adc x19, x19, xzr - mul x14, x4, x4 - mul x16, x5, x5 - mul x21, x4, x5 - umulh x15, x4, x4 - umulh x17, x5, x5 - umulh x20, x4, x5 - adds x15, x15, x21 - adcs x16, x16, x20 - adc x17, x17, xzr - adds x15, x15, x21 - adcs x16, x16, x20 - adc x17, x17, xzr - adds x14, x14, x22 - adcs x15, x15, x23 - adcs x16, x16, x19 - adc x17, x17, xzr - ldp x21, x20, [x0] - adds x21, x21, x10 - adcs x20, x20, x11 - stp x21, x20, [x0] - ldp x21, x20, [x0, #16] - adcs x21, x21, x12 - adcs x20, x20, x13 - stp x21, x20, [x0, #16] - ldp x21, x20, [x0, #32] - adcs x21, x21, x14 - adcs x20, x20, x15 - stp x21, x20, [x0, #32] - ldp x21, x20, [x0, #48] - adcs x21, x21, x16 - adcs x20, x20, x17 - stp x21, x20, [x0, #48] - ldr x22, [x0, #64] - adc x22, x22, xzr - str x22, [x0, #64] - mul x10, x2, x6 - mul x14, x3, x7 - mul x15, x4, x8 - mul x16, x5, x9 - umulh x17, x2, x6 - adds x14, x14, x17 - umulh x17, x3, x7 - adcs x15, x15, x17 - umulh x17, x4, x8 - adcs x16, x16, x17 - umulh x17, x5, x9 - adc x17, x17, xzr - adds x11, x14, x10 - adcs x14, x15, x14 - adcs x15, x16, x15 - adcs x16, x17, x16 - adc x17, xzr, x17 - adds x12, x14, x10 - adcs x13, x15, x11 - adcs x14, x16, x14 - adcs x15, x17, x15 - adcs x16, xzr, x16 - adc x17, xzr, x17 - subs x22, x4, x5 - cneg x22, x22, cc - csetm x19, cc - subs x20, x9, x8 - cneg x20, x20, cc - mul x21, x22, x20 - umulh x20, x22, x20 - cinv x19, x19, cc - cmn x19, #0x1 - eor x21, x21, x19 - adcs x15, x15, x21 - eor x20, x20, x19 - adcs x16, x16, x20 - adc x17, x17, x19 - subs x22, x2, x3 - cneg x22, x22, cc - csetm x19, cc - subs x20, x7, x6 - cneg x20, x20, cc - mul x21, x22, x20 - umulh x20, x22, x20 - cinv x19, x19, cc - cmn x19, #0x1 - eor x21, x21, x19 - adcs x11, x11, x21 - eor x20, x20, x19 - adcs x12, x12, x20 - adcs x13, x13, x19 - adcs x14, x14, x19 - adcs x15, x15, x19 - adcs x16, x16, x19 - adc x17, x17, x19 - subs x22, x3, x5 - cneg x22, x22, cc - csetm x19, cc - subs x20, x9, x7 - cneg x20, x20, cc - mul x21, x22, x20 - umulh x20, x22, x20 - cinv x19, x19, cc - cmn x19, #0x1 - eor x21, x21, x19 - adcs x14, x14, x21 - eor x20, x20, x19 - adcs x15, x15, x20 - adcs x16, x16, x19 - adc x17, x17, x19 - subs x22, x2, x4 - cneg x22, x22, cc - csetm x19, cc - subs x20, x8, x6 - cneg x20, x20, cc - mul x21, x22, x20 - umulh x20, x22, x20 - cinv x19, x19, cc - cmn x19, #0x1 - eor x21, x21, x19 - adcs x12, x12, x21 - eor x20, x20, x19 - adcs x13, x13, x20 - adcs x14, x14, x19 - adcs x15, x15, x19 - adcs x16, x16, x19 - adc x17, x17, x19 - subs x22, x2, x5 - cneg x22, x22, cc - csetm x19, cc - subs x20, x9, x6 - cneg x20, x20, cc - mul x21, x22, x20 - umulh x20, x22, x20 - cinv x19, x19, cc - cmn x19, #0x1 - eor x21, x21, x19 - adcs x13, x13, x21 - eor x20, x20, x19 - adcs x14, x14, x20 - adcs x15, x15, x19 - adcs x16, x16, x19 - adc x17, x17, x19 - subs x22, x3, x4 - cneg x22, x22, cc - csetm x19, cc - subs x20, x8, x7 - cneg x20, x20, cc - mul x21, x22, x20 - umulh x20, x22, x20 - cinv x19, x19, cc - cmn x19, #0x1 - eor x21, x21, x19 - adcs x13, x13, x21 - eor x20, x20, x19 - adcs x14, x14, x20 - adcs x15, x15, x19 - adcs x16, x16, x19 - adc x17, x17, x19 - ldp x21, x20, [x0] - extr x2, x15, x14, #8 - adds x2, x2, x21 - extr x3, x16, x15, #8 - adcs x3, x3, x20 - ldp x21, x20, [x0, #16] - extr x4, x17, x16, #8 - adcs x4, x4, x21 - and x22, x3, x4 - lsr x5, x17, #8 - adcs x5, x5, x20 - and x22, x22, x5 - ldp x21, x20, [x0, #32] - lsl x6, x10, #1 - adcs x6, x6, x21 - and x22, x22, x6 - extr x7, x11, x10, #63 - adcs x7, x7, x20 - and x22, x22, x7 - ldp x21, x20, [x0, #48] - extr x8, x12, x11, #63 - adcs x8, x8, x21 - and x22, x22, x8 - extr x9, x13, x12, #63 - adcs x9, x9, x20 - and x22, x22, x9 - ldr x21, [x0, #64] - extr x10, x14, x13, #63 - and x10, x10, #0x1ff - adc x10, x21, x10 - lsr x20, x10, #9 - orr x10, x10, #0xfffffffffffffe00 - cmp xzr, xzr - adcs xzr, x2, x20 - adcs xzr, x22, xzr - adcs xzr, x10, xzr - adcs x2, x2, x20 - adcs x3, x3, xzr - adcs x4, x4, xzr - adcs x5, x5, xzr - adcs x6, x6, xzr - adcs x7, x7, xzr - adcs x8, x8, xzr - adcs x9, x9, xzr - adc x10, x10, xzr - and x10, x10, #0x1ff - stp x2, x3, [x0] - stp x4, x5, [x0, #16] - stp x6, x7, [x0, #32] - stp x8, x9, [x0, #48] - str x10, [x0, #64] + stp x19, x20, [sp, #-16]! + stp x21, x22, [sp, #-16]! + stp x23, x24, [sp, #-16]! + ldr q23, [x1, #32] + ldp x9, x2, [x1, #32] + ldr q16, [x1, #32] + ldr q20, [x1, #48] + ldp x6, x13, [x1, #48] + rev64 v2.4S, v23.4S + mul x14, x9, x2 + ldr q31, [x1, #48] + subs x22, x9, x2 + uzp2 v26.4S, v23.4S, v23.4S + mul v30.4S, v2.4S, v16.4S + xtn v0.2S, v20.2D + csetm x12, cc + xtn v21.2S, v16.2D + xtn v23.2S, v23.2D + umulh x10, x9, x6 + rev64 v27.4S, v31.4S + umull v2.2D, v21.2S, v26.2S + cneg x23, x22, cc + uaddlp v25.2D, v30.4S + umull v18.2D, v21.2S, v23.2S + mul x22, x9, x6 + mul v6.4S, v27.4S, v20.4S + uzp2 v17.4S, v20.4S, v20.4S + shl v20.2D, v25.2D, #32 + uzp2 v27.4S, v31.4S, v31.4S + mul x16, x2, x13 + umlal v20.2D, v21.2S, v23.2S + usra v2.2D, v18.2D, #32 + adds x8, x22, x10 + umull v25.2D, v17.2S, v27.2S + xtn v31.2S, v31.2D + movi v1.2D, #0xffffffff + adc x3, x10, xzr + umulh x21, x2, x13 + uzp2 v21.4S, v16.4S, v16.4S + umull v18.2D, v0.2S, v27.2S + subs x19, x13, x6 + and v7.16B, v2.16B, v1.16B + umull v27.2D, v0.2S, v31.2S + cneg x20, x19, cc + movi v30.2D, #0xffffffff + umull v16.2D, v21.2S, v26.2S + umlal v7.2D, v21.2S, v23.2S + mul x19, x23, x20 + cinv x7, x12, cc + uaddlp v6.2D, v6.4S + eor x12, x19, x7 + adds x11, x8, x16 + umulh x10, x23, x20 + ldr q1, [x1] + usra v16.2D, v2.2D, #32 + adcs x19, x3, x21 + shl v2.2D, v6.2D, #32 + adc x20, x21, xzr + adds x17, x19, x16 + usra v18.2D, v27.2D, #32 + adc x19, x20, xzr + cmn x7, #0x1 + umlal v2.2D, v0.2S, v31.2S + umulh x16, x9, x2 + adcs x8, x11, x12 + usra v16.2D, v7.2D, #32 + ldr x12, [x1, #64] + eor x20, x10, x7 + umulh x10, x6, x13 + mov x23, v2.d[0] + mov x3, v2.d[1] + adcs x21, x17, x20 + usra v25.2D, v18.2D, #32 + and v23.16B, v18.16B, v30.16B + adc x7, x19, x7 + adds x22, x22, x22 + ldr q7, [x1, #16] + adcs x17, x8, x8 + umlal v23.2D, v17.2S, v31.2S + mov x19, v16.d[0] + mul x11, x12, x12 + ldr q4, [x1] + usra v25.2D, v23.2D, #32 + add x5, x12, x12 + adcs x15, x21, x21 + ldr q28, [x1] + mov x12, v20.d[1] + adcs x24, x7, x7 + mov x21, v16.d[1] + adc x4, xzr, xzr + adds x19, x19, x14 + ldr q18, [x1, #16] + xtn v26.2S, v1.2D + adcs x8, x12, x16 + adc x21, x21, xzr + adds x7, x19, x14 + xtn v23.2S, v7.2D + rev64 v21.4S, v28.4S + adcs x12, x8, x16 + ldp x20, x19, [x1] + mov x16, v25.d[1] + xtn v22.2S, v28.2D + adc x14, x21, xzr + adds x8, x22, x12 + uzp2 v24.4S, v28.4S, v28.4S + rev64 v28.4S, v18.4S + mul x12, x6, x13 + mul v16.4S, v21.4S, v1.4S + shrn v31.2S, v7.2D, #32 + adcs x22, x17, x14 + mov x14, v25.d[0] + and x21, x20, #0xfffffffffffff + umull v17.2D, v26.2S, v24.2S + ldr q2, [x1, #32] + adcs x17, x15, xzr + ldr q30, [x1, #48] + umull v7.2D, v26.2S, v22.2S + adcs x15, x24, xzr + ldr q0, [x1, #16] + movi v6.2D, #0xffffffff + adc x4, x4, xzr + adds x14, x14, x12 + uzp1 v27.4S, v18.4S, v4.4S + uzp2 v19.4S, v1.4S, v1.4S + adcs x24, x3, x10 + mul x3, x5, x21 + umull v29.2D, v23.2S, v31.2S + ldr q5, [x1] + adc x21, x16, xzr + adds x16, x14, x12 + extr x12, x19, x20, #52 + umull v18.2D, v19.2S, v24.2S + adcs x24, x24, x10 + and x10, x12, #0xfffffffffffff + ldp x14, x12, [x1, #16] + usra v17.2D, v7.2D, #32 + adc x21, x21, xzr + adds x23, x23, x17 + mul x17, x5, x10 + shl v21.2D, v29.2D, #33 + lsl x10, x3, #12 + lsr x1, x3, #52 + rev64 v29.4S, v2.4S + uaddlp v25.2D, v16.4S + add x17, x17, x1 + adcs x16, x16, x15 + extr x3, x14, x19, #40 + mov x15, v20.d[0] + extr x10, x17, x10, #12 + and x3, x3, #0xfffffffffffff + shl v3.2D, v25.2D, #32 + and v6.16B, v17.16B, v6.16B + mul x1, x5, x3 + usra v18.2D, v17.2D, #32 + adcs x3, x24, x4 + extr x4, x12, x14, #28 + umlal v6.2D, v19.2S, v22.2S + xtn v20.2S, v2.2D + umlal v3.2D, v26.2S, v22.2S + movi v26.2D, #0xffffffff + lsr x24, x17, #52 + and x4, x4, #0xfffffffffffff + uzp2 v19.4S, v2.4S, v2.4S + add x1, x1, x24 + mul x24, x5, x4 + lsl x4, x17, #12 + xtn v24.2S, v5.2D + extr x17, x1, x4, #24 + adc x21, x21, xzr + umlal v21.2D, v23.2S, v23.2S + adds x4, x15, x10 + lsl x10, x1, #12 + adcs x15, x7, x17 + mul v23.4S, v28.4S, v4.4S + and x7, x4, #0x1ff + lsr x17, x1, #52 + umulh x1, x19, x12 + uzp2 v17.4S, v5.4S, v5.4S + extr x4, x15, x4, #9 + add x24, x24, x17 + mul v29.4S, v29.4S, v5.4S + extr x17, x24, x10, #36 + extr x10, x9, x12, #16 + uzp1 v28.4S, v4.4S, v4.4S + adcs x17, x8, x17 + and x8, x10, #0xfffffffffffff + umull v16.2D, v24.2S, v20.2S + extr x10, x17, x15, #9 + mul x15, x5, x8 + stp x4, x10, [x0] + lsl x4, x24, #12 + lsr x8, x9, #4 + uaddlp v4.2D, v23.4S + and x8, x8, #0xfffffffffffff + umull v23.2D, v24.2S, v19.2S + mul x8, x5, x8 + extr x10, x2, x9, #56 + lsr x24, x24, #52 + and x10, x10, #0xfffffffffffff + add x15, x15, x24 + extr x4, x15, x4, #48 + mul x24, x5, x10 + lsr x10, x15, #52 + usra v23.2D, v16.2D, #32 + add x10, x8, x10 + shl v4.2D, v4.2D, #32 + adcs x22, x22, x4 + extr x4, x6, x2, #44 + lsl x15, x15, #12 + lsr x8, x10, #52 + extr x15, x10, x15, #60 + and x10, x4, #0xfffffffffffff + umlal v4.2D, v28.2S, v27.2S + add x8, x24, x8 + extr x4, x13, x6, #32 + mul x24, x5, x10 + uzp2 v16.4S, v30.4S, v30.4S + lsl x10, x15, #8 + rev64 v28.4S, v30.4S + and x15, x4, #0xfffffffffffff + extr x4, x8, x10, #8 + mul x10, x5, x15 + lsl x15, x8, #12 + adcs x23, x23, x4 + lsr x4, x8, #52 + lsr x8, x13, #20 + add x4, x24, x4 + mul x8, x5, x8 + lsr x24, x4, #52 + extr x15, x4, x15, #20 + lsl x4, x4, #12 + add x10, x10, x24 + adcs x15, x16, x15 + extr x4, x10, x4, #32 + umulh x5, x20, x14 + adcs x3, x3, x4 + usra v18.2D, v6.2D, #32 + lsl x16, x10, #12 + extr x24, x15, x23, #9 + lsr x10, x10, #52 + uzp2 v27.4S, v0.4S, v0.4S + add x8, x8, x10 + extr x10, x3, x15, #9 + extr x4, x22, x17, #9 + and v25.16B, v23.16B, v26.16B + lsr x17, x8, #44 + extr x15, x8, x16, #44 + extr x16, x23, x22, #9 + xtn v7.2S, v30.2D + mov x8, v4.d[0] + stp x24, x10, [x0, #32] + uaddlp v30.2D, v29.4S + stp x4, x16, [x0, #16] + umulh x24, x20, x19 + adcs x15, x21, x15 + adc x16, x11, x17 + subs x11, x20, x19 + xtn v5.2S, v0.2D + csetm x17, cc + extr x3, x15, x3, #9 + mov x22, v4.d[1] + cneg x21, x11, cc + subs x10, x12, x14 + mul v31.4S, v28.4S, v0.4S + cneg x10, x10, cc + cinv x11, x17, cc + shl v4.2D, v30.2D, #32 + umull v28.2D, v5.2S, v16.2S + extr x23, x16, x15, #9 + adds x4, x8, x5 + mul x17, x21, x10 + umull v22.2D, v5.2S, v7.2S + adc x15, x5, xzr + adds x4, x4, x22 + uaddlp v2.2D, v31.4S + lsr x5, x16, #9 + adcs x16, x15, x1 + mov x15, v18.d[0] + adc x1, x1, xzr + umulh x10, x21, x10 + adds x22, x16, x22 + umlal v4.2D, v24.2S, v20.2S + umull v30.2D, v27.2S, v16.2S + stp x3, x23, [x0, #48] + add x3, x7, x5 + adc x16, x1, xzr + usra v28.2D, v22.2D, #32 + mul x23, x20, x19 + eor x1, x17, x11 + cmn x11, #0x1 + mov x17, v18.d[1] + umull v18.2D, v17.2S, v19.2S + adcs x7, x4, x1 + eor x1, x10, x11 + umlal v25.2D, v17.2S, v20.2S + movi v16.2D, #0xffffffff + adcs x22, x22, x1 + usra v18.2D, v23.2D, #32 + umulh x4, x14, x14 + adc x1, x16, x11 + adds x10, x8, x8 + shl v23.2D, v2.2D, #32 + str x3, [x0, #64] + adcs x5, x7, x7 + and v16.16B, v28.16B, v16.16B + usra v30.2D, v28.2D, #32 + adcs x7, x22, x22 + mov x21, v3.d[1] + adcs x11, x1, x1 + umlal v16.2D, v27.2S, v7.2S + adc x22, xzr, xzr + adds x16, x15, x23 + mul x8, x14, x12 + umlal v23.2D, v5.2S, v7.2S + usra v18.2D, v25.2D, #32 + umulh x15, x14, x12 + adcs x21, x21, x24 + usra v30.2D, v16.2D, #32 + adc x1, x17, xzr + adds x3, x16, x23 + adcs x21, x21, x24 + adc x1, x1, xzr + adds x24, x10, x21 + umulh x21, x12, x12 + adcs x16, x5, x1 + adcs x10, x7, xzr + mov x17, v21.d[1] + adcs x23, x11, xzr + adc x5, x22, xzr + adds x1, x4, x8 + adcs x22, x17, x15 + ldp x17, x4, [x0] + mov x11, v21.d[0] + adc x21, x21, xzr + adds x1, x1, x8 + adcs x15, x22, x15 + adc x8, x21, xzr + adds x22, x11, x10 + mov x21, v3.d[0] + adcs x11, x1, x23 + ldp x1, x10, [x0, #16] + adcs x15, x15, x5 + adc x7, x8, xzr + adds x8, x17, x21 + mov x23, v4.d[1] + ldp x5, x21, [x0, #32] + adcs x17, x4, x3 + ldr x4, [x0, #64] + mov x3, v18.d[0] + adcs x24, x1, x24 + stp x8, x17, [x0] + adcs x17, x10, x16 + ldp x1, x16, [x0, #48] + adcs x5, x5, x22 + adcs x8, x21, x11 + stp x5, x8, [x0, #32] + adcs x1, x1, x15 + mov x15, v23.d[1] + adcs x21, x16, x7 + stp x1, x21, [x0, #48] + adc x10, x4, xzr + subs x7, x14, x12 + mov x16, v18.d[1] + cneg x5, x7, cc + csetm x4, cc + subs x11, x13, x6 + mov x8, v23.d[0] + cneg x7, x11, cc + cinv x21, x4, cc + mov x11, v30.d[0] + adds x4, x23, x3 + mul x22, x5, x7 + mov x23, v30.d[1] + adcs x8, x8, x16 + adcs x16, x15, x11 + adc x11, x23, xzr + umulh x3, x5, x7 + stp x24, x17, [x0, #16] + mov x5, v4.d[0] + subs x15, x20, x19 + cneg x7, x15, cc + str x10, [x0, #64] + csetm x1, cc + subs x24, x2, x9 + cneg x17, x24, cc + cinv x15, x1, cc + adds x23, x4, x5 + umulh x1, x7, x17 + adcs x24, x8, x4 + adcs x10, x16, x8 + eor x8, x22, x21 + adcs x16, x11, x16 + mul x22, x7, x17 + eor x17, x1, x15 + adc x1, xzr, x11 + adds x11, x24, x5 + eor x7, x3, x21 + adcs x3, x10, x23 + adcs x24, x16, x24 + adcs x4, x1, x10 + eor x10, x22, x15 + adcs x16, xzr, x16 + adc x1, xzr, x1 + cmn x21, #0x1 + adcs x8, x4, x8 + adcs x22, x16, x7 + adc x7, x1, x21 + subs x21, x19, x12 + csetm x4, cc + cneg x1, x21, cc + subs x21, x13, x2 + cinv x16, x4, cc + cneg x4, x21, cc + cmn x15, #0x1 + adcs x21, x23, x10 + mul x23, x1, x4 + adcs x11, x11, x17 + adcs x3, x3, x15 + umulh x1, x1, x4 + adcs x24, x24, x15 + adcs x8, x8, x15 + adcs x22, x22, x15 + eor x17, x23, x16 + adc x15, x7, x15 + subs x7, x20, x14 + cneg x7, x7, cc + csetm x4, cc + subs x10, x20, x12 + cneg x23, x10, cc + csetm x10, cc + subs x12, x6, x9 + cinv x20, x4, cc + cneg x12, x12, cc + cmn x16, #0x1 + eor x1, x1, x16 + adcs x17, x24, x17 + mul x4, x7, x12 + adcs x8, x8, x1 + umulh x1, x7, x12 + adcs x24, x22, x16 + adc x7, x15, x16 + subs x12, x13, x9 + cneg x12, x12, cc + cinv x13, x10, cc + subs x19, x19, x14 + mul x9, x23, x12 + cneg x19, x19, cc + csetm x10, cc + eor x16, x1, x20 + subs x22, x6, x2 + umulh x12, x23, x12 + eor x1, x4, x20 + cinv x4, x10, cc + cneg x22, x22, cc + cmn x20, #0x1 + adcs x15, x11, x1 + eor x6, x12, x13 + adcs x10, x3, x16 + adcs x17, x17, x20 + eor x23, x9, x13 + adcs x2, x8, x20 + mul x11, x19, x22 + adcs x24, x24, x20 + adc x7, x7, x20 + cmn x13, #0x1 + adcs x3, x10, x23 + umulh x22, x19, x22 + adcs x17, x17, x6 + eor x12, x22, x4 + extr x22, x15, x21, #63 + adcs x8, x2, x13 + extr x21, x21, x5, #63 + ldp x16, x23, [x0] + adcs x20, x24, x13 + eor x1, x11, x4 + adc x6, x7, x13 + cmn x4, #0x1 + ldp x2, x7, [x0, #16] + adcs x1, x3, x1 + extr x19, x1, x15, #63 + adcs x14, x17, x12 + extr x1, x14, x1, #63 + lsl x17, x5, #1 + adcs x8, x8, x4 + extr x12, x8, x14, #8 + ldp x15, x11, [x0, #32] + adcs x9, x20, x4 + adc x3, x6, x4 + adds x16, x12, x16 + extr x6, x9, x8, #8 + ldp x14, x12, [x0, #48] + extr x8, x3, x9, #8 + adcs x20, x6, x23 + ldr x24, [x0, #64] + lsr x6, x3, #8 + adcs x8, x8, x2 + and x2, x1, #0x1ff + and x1, x20, x8 + adcs x4, x6, x7 + adcs x3, x17, x15 + and x1, x1, x4 + adcs x9, x21, x11 + and x1, x1, x3 + adcs x6, x22, x14 + and x1, x1, x9 + and x21, x1, x6 + adcs x14, x19, x12 + adc x1, x24, x2 + cmp xzr, xzr + orr x12, x1, #0xfffffffffffffe00 + lsr x1, x1, #9 + adcs xzr, x16, x1 + and x21, x21, x14 + adcs xzr, x21, xzr + adcs xzr, x12, xzr + adcs x21, x16, x1 + adcs x1, x20, xzr + adcs x19, x8, xzr + stp x21, x1, [x0] + adcs x1, x4, xzr + adcs x21, x3, xzr + stp x19, x1, [x0, #16] + adcs x1, x9, xzr + stp x21, x1, [x0, #32] + adcs x21, x6, xzr + adcs x1, x14, xzr + stp x21, x1, [x0, #48] + adc x1, x12, xzr + and x1, x1, #0x1ff + str x1, [x0, #64] + ldp x23, x24, [sp], #16 + ldp x21, x22, [sp], #16 + ldp x19, x20, [sp], #16 ret local_sub_p521: diff --git a/third_party/s2n-bignum/arm/p521/p521_jdouble.S b/third_party/s2n-bignum/arm/p521/p521_jdouble.S index 3eb0250b33..73afe4ffbd 100644 --- a/third_party/s2n-bignum/arm/p521/p521_jdouble.S +++ b/third_party/s2n-bignum/arm/p521/p521_jdouble.S @@ -54,7 +54,7 @@ #define dx2 sp, #(NUMSIZE*5) #define t1 sp, #(NUMSIZE*5) -#define d sp, #(NUMSIZE*6) +#define d_ sp, #(NUMSIZE*6) #define x4p sp, #(NUMSIZE*6) // NUMSIZE*7 is not 16-aligned so we round it up @@ -460,7 +460,7 @@ S2N_BN_SYMBOL(p521_jdouble): // d = 12 * xy2 - 9 * x4p // t1 = y^2 + 2 * y * z - cmsub_p521(d,12,xy2,9,x4p) + cmsub_p521(d_,12,xy2,9,x4p) sub_p521(t1,t2,z2) // y4 = y^4 @@ -471,11 +471,11 @@ S2N_BN_SYMBOL(p521_jdouble): // dx2 = d * x2p sub_p521(z_3,t1,y2) - mul_p521(dx2,d,x2p) + mul_p521(dx2,d_,x2p) // x' = 4 * xy2 - d - cmsub41_p521(x_3,xy2,d) + cmsub41_p521(x_3,xy2,d_) // y' = 3 * dx2 - 8 * y4 @@ -493,1054 +493,1223 @@ S2N_BN_SYMBOL(p521_jdouble): ldp x19, x20, [sp], 16 ret -// Local versions of the two "big" field operations, almost identical to -// bignum_mul_p521 and bignum_sqr_p521 except for avoiding the intial -// register save-restore, and in the case of local_mul_p521, using the -// output buffer as temporary storage, slightly reordering a few loads -// and stores to make it aliasing-proof. +// Local versions of the two "big" field operations, identical to +// bignum_mul_p521_neon and bignum_sqr_p521_neon. local_mul_p521: - ldp x3, x4, [x1] - ldp x5, x6, [x1, #16] - ldp x7, x8, [x2] - ldp x9, x10, [x2, #16] - mul x11, x3, x7 - mul x15, x4, x8 - mul x16, x5, x9 - mul x17, x6, x10 - umulh x19, x3, x7 - adds x15, x15, x19 - umulh x19, x4, x8 - adcs x16, x16, x19 - umulh x19, x5, x9 - adcs x17, x17, x19 - umulh x19, x6, x10 - adc x19, x19, xzr - adds x12, x15, x11 - adcs x15, x16, x15 - adcs x16, x17, x16 - adcs x17, x19, x17 - adc x19, xzr, x19 - adds x13, x15, x11 - adcs x14, x16, x12 - adcs x15, x17, x15 - adcs x16, x19, x16 - adcs x17, xzr, x17 - adc x19, xzr, x19 - subs x24, x5, x6 - cneg x24, x24, lo - csetm x21, lo - subs x22, x10, x9 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x16, x16, x23 - eor x22, x22, x21 - adcs x17, x17, x22 - adc x19, x19, x21 - subs x24, x3, x4 - cneg x24, x24, lo - csetm x21, lo - subs x22, x8, x7 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x12, x12, x23 - eor x22, x22, x21 - adcs x13, x13, x22 - adcs x14, x14, x21 - adcs x15, x15, x21 - adcs x16, x16, x21 - adcs x17, x17, x21 - adc x19, x19, x21 - subs x24, x4, x6 - cneg x24, x24, lo - csetm x21, lo - subs x22, x10, x8 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x15, x15, x23 - eor x22, x22, x21 - adcs x16, x16, x22 - adcs x17, x17, x21 - adc x19, x19, x21 - subs x24, x3, x5 - cneg x24, x24, lo - csetm x21, lo - subs x22, x9, x7 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x13, x13, x23 - eor x22, x22, x21 - adcs x14, x14, x22 - adcs x15, x15, x21 - adcs x16, x16, x21 - adcs x17, x17, x21 - adc x19, x19, x21 - subs x24, x3, x6 - cneg x24, x24, lo - csetm x21, lo - subs x22, x10, x7 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x14, x14, x23 - eor x22, x22, x21 - adcs x15, x15, x22 - adcs x16, x16, x21 - adcs x17, x17, x21 - adc x19, x19, x21 - subs x24, x4, x5 - cneg x24, x24, lo - csetm x21, lo - subs x22, x9, x8 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x14, x14, x23 - eor x22, x22, x21 - adcs x15, x15, x22 - adcs x16, x16, x21 - adcs x17, x17, x21 - adc x19, x19, x21 - lsl x21, x11, #9 - extr x11, x12, x11, #55 - extr x12, x13, x12, #55 - extr x13, x14, x13, #55 - lsr x14, x14, #55 - ldp x3, x4, [x1, #32] - ldp x5, x6, [x1, #48] - ldp x7, x8, [x2, #32] - ldp x9, x10, [x2, #48] - stp x15, x16, [x0] - stp x17, x19, [x0, #16] - stp x21, x11, [x0, #32] - stp x12, x13, [x0, #48] - str x14, [x0, #64] - mul x11, x3, x7 - mul x15, x4, x8 - mul x16, x5, x9 - mul x17, x6, x10 - umulh x19, x3, x7 - adds x15, x15, x19 - umulh x19, x4, x8 - adcs x16, x16, x19 - umulh x19, x5, x9 - adcs x17, x17, x19 - umulh x19, x6, x10 - adc x19, x19, xzr - adds x12, x15, x11 - adcs x15, x16, x15 - adcs x16, x17, x16 - adcs x17, x19, x17 - adc x19, xzr, x19 - adds x13, x15, x11 - adcs x14, x16, x12 - adcs x15, x17, x15 - adcs x16, x19, x16 - adcs x17, xzr, x17 - adc x19, xzr, x19 - subs x24, x5, x6 - cneg x24, x24, lo - csetm x21, lo - subs x22, x10, x9 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x16, x16, x23 - eor x22, x22, x21 - adcs x17, x17, x22 - adc x19, x19, x21 - subs x24, x3, x4 - cneg x24, x24, lo - csetm x21, lo - subs x22, x8, x7 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x12, x12, x23 - eor x22, x22, x21 - adcs x13, x13, x22 - adcs x14, x14, x21 - adcs x15, x15, x21 - adcs x16, x16, x21 - adcs x17, x17, x21 - adc x19, x19, x21 - subs x24, x4, x6 - cneg x24, x24, lo - csetm x21, lo - subs x22, x10, x8 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x15, x15, x23 - eor x22, x22, x21 - adcs x16, x16, x22 - adcs x17, x17, x21 - adc x19, x19, x21 - subs x24, x3, x5 - cneg x24, x24, lo - csetm x21, lo - subs x22, x9, x7 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x13, x13, x23 - eor x22, x22, x21 - adcs x14, x14, x22 - adcs x15, x15, x21 - adcs x16, x16, x21 - adcs x17, x17, x21 - adc x19, x19, x21 - subs x24, x3, x6 - cneg x24, x24, lo - csetm x21, lo - subs x22, x10, x7 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x14, x14, x23 - eor x22, x22, x21 - adcs x15, x15, x22 - adcs x16, x16, x21 - adcs x17, x17, x21 - adc x19, x19, x21 - subs x24, x4, x5 - cneg x24, x24, lo - csetm x21, lo - subs x22, x9, x8 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x14, x14, x23 - eor x22, x22, x21 - adcs x15, x15, x22 - adcs x16, x16, x21 - adcs x17, x17, x21 - adc x19, x19, x21 - ldp x23, x22, [x0] - adds x11, x11, x23 - adcs x12, x12, x22 - stp x11, x12, [x0] - ldp x23, x22, [x0, #16] - adcs x13, x13, x23 - adcs x14, x14, x22 - stp x13, x14, [x0, #16] - ldp x23, x22, [x0, #32] - adcs x15, x15, x23 - adcs x16, x16, x22 - stp x15, x16, [x0, #32] - ldp x23, x22, [x0, #48] - adcs x17, x17, x23 - adcs x19, x19, x22 - stp x17, x19, [x0, #48] - ldr x21, [x0, #64] - adc x21, x21, xzr - str x21, [x0, #64] - ldp x23, x22, [x1] - subs x3, x3, x23 - sbcs x4, x4, x22 - ldp x23, x22, [x1, #16] - sbcs x5, x5, x23 - sbcs x6, x6, x22 - csetm x24, lo - ldp x23, x22, [x2] - subs x7, x23, x7 - sbcs x8, x22, x8 - ldp x23, x22, [x2, #16] - sbcs x9, x23, x9 - sbcs x10, x22, x10 - csetm x25, lo - eor x3, x3, x24 - subs x3, x3, x24 - eor x4, x4, x24 - sbcs x4, x4, x24 - eor x5, x5, x24 - sbcs x5, x5, x24 - eor x6, x6, x24 - sbc x6, x6, x24 - eor x7, x7, x25 - subs x7, x7, x25 - eor x8, x8, x25 - sbcs x8, x8, x25 - eor x9, x9, x25 - sbcs x9, x9, x25 - eor x10, x10, x25 - sbc x10, x10, x25 - eor x25, x25, x24 - mul x11, x3, x7 - mul x15, x4, x8 - mul x16, x5, x9 - mul x17, x6, x10 - umulh x19, x3, x7 - adds x15, x15, x19 - umulh x19, x4, x8 - adcs x16, x16, x19 - umulh x19, x5, x9 - adcs x17, x17, x19 - umulh x19, x6, x10 - adc x19, x19, xzr - adds x12, x15, x11 - adcs x15, x16, x15 - adcs x16, x17, x16 - adcs x17, x19, x17 - adc x19, xzr, x19 - adds x13, x15, x11 - adcs x14, x16, x12 - adcs x15, x17, x15 - adcs x16, x19, x16 - adcs x17, xzr, x17 - adc x19, xzr, x19 - subs x24, x5, x6 - cneg x24, x24, lo - csetm x21, lo - subs x22, x10, x9 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x16, x16, x23 - eor x22, x22, x21 - adcs x17, x17, x22 - adc x19, x19, x21 - subs x24, x3, x4 - cneg x24, x24, lo - csetm x21, lo - subs x22, x8, x7 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x12, x12, x23 - eor x22, x22, x21 - adcs x13, x13, x22 - adcs x14, x14, x21 - adcs x15, x15, x21 - adcs x16, x16, x21 - adcs x17, x17, x21 - adc x19, x19, x21 - subs x24, x4, x6 - cneg x24, x24, lo - csetm x21, lo - subs x22, x10, x8 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x15, x15, x23 - eor x22, x22, x21 - adcs x16, x16, x22 - adcs x17, x17, x21 - adc x19, x19, x21 - subs x24, x3, x5 - cneg x24, x24, lo - csetm x21, lo - subs x22, x9, x7 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x13, x13, x23 - eor x22, x22, x21 - adcs x14, x14, x22 - adcs x15, x15, x21 - adcs x16, x16, x21 - adcs x17, x17, x21 - adc x19, x19, x21 - subs x24, x3, x6 - cneg x24, x24, lo - csetm x21, lo - subs x22, x10, x7 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x14, x14, x23 - eor x22, x22, x21 - adcs x15, x15, x22 - adcs x16, x16, x21 - adcs x17, x17, x21 - adc x19, x19, x21 - subs x24, x4, x5 - cneg x24, x24, lo - csetm x21, lo - subs x22, x9, x8 - cneg x22, x22, lo - mul x23, x24, x22 - umulh x22, x24, x22 - cinv x21, x21, lo - cmn x21, #1 - eor x23, x23, x21 - adcs x14, x14, x23 - eor x22, x22, x21 - adcs x15, x15, x22 - adcs x16, x16, x21 - adcs x17, x17, x21 - adc x19, x19, x21 - ldp x3, x4, [x0] - ldp x5, x6, [x0, #16] - eor x11, x11, x25 - adds x11, x11, x3 - eor x12, x12, x25 - adcs x12, x12, x4 - eor x13, x13, x25 - adcs x13, x13, x5 - eor x14, x14, x25 - adcs x14, x14, x6 - eor x15, x15, x25 - ldp x7, x8, [x0, #32] - ldp x9, x10, [x0, #48] - ldr x20, [x0, #64] - adcs x15, x15, x7 - eor x16, x16, x25 - adcs x16, x16, x8 - eor x17, x17, x25 - adcs x17, x17, x9 - eor x19, x19, x25 - adcs x19, x19, x10 - adc x21, x20, xzr - adds x15, x15, x3 - adcs x16, x16, x4 - adcs x17, x17, x5 - adcs x19, x19, x6 - and x25, x25, #0x1ff - lsl x24, x11, #9 - orr x24, x24, x25 - adcs x7, x7, x24 - extr x24, x12, x11, #55 - adcs x8, x8, x24 - extr x24, x13, x12, #55 - adcs x9, x9, x24 - extr x24, x14, x13, #55 - adcs x10, x10, x24 - lsr x24, x14, #55 - adc x20, x24, x20 - ldr x6, [x2, #64] - ldp x3, x4, [x1] - and x23, x3, #0xfffffffffffff - mul x23, x6, x23 - ldr x14, [x1, #64] - ldp x11, x12, [x2] - and x24, x11, #0xfffffffffffff - mul x24, x14, x24 - add x23, x23, x24 - extr x24, x4, x3, #52 - and x24, x24, #0xfffffffffffff - mul x22, x6, x24 - extr x24, x12, x11, #52 - and x24, x24, #0xfffffffffffff - mul x24, x14, x24 - add x22, x22, x24 - lsr x24, x23, #52 - add x22, x22, x24 - lsl x23, x23, #12 - extr x24, x22, x23, #12 - adds x15, x15, x24 - ldp x5, x3, [x1, #16] - ldp x13, x11, [x2, #16] - extr x24, x5, x4, #40 - and x24, x24, #0xfffffffffffff - mul x23, x6, x24 - extr x24, x13, x12, #40 - and x24, x24, #0xfffffffffffff - mul x24, x14, x24 - add x23, x23, x24 - lsr x24, x22, #52 - add x23, x23, x24 - lsl x22, x22, #12 - extr x24, x23, x22, #24 - adcs x16, x16, x24 - extr x24, x3, x5, #28 - and x24, x24, #0xfffffffffffff - mul x22, x6, x24 - extr x24, x11, x13, #28 - and x24, x24, #0xfffffffffffff - mul x24, x14, x24 - add x22, x22, x24 - lsr x24, x23, #52 - add x22, x22, x24 - lsl x23, x23, #12 - extr x24, x22, x23, #36 - adcs x17, x17, x24 - and x26, x16, x17 - ldp x4, x5, [x1, #32] - ldp x12, x13, [x2, #32] - extr x24, x4, x3, #16 - and x24, x24, #0xfffffffffffff - mul x23, x6, x24 - extr x24, x12, x11, #16 - and x24, x24, #0xfffffffffffff - mul x24, x14, x24 - add x23, x23, x24 - lsl x21, x21, #48 - add x23, x23, x21 - lsr x24, x22, #52 - add x23, x23, x24 - lsl x22, x22, #12 - extr x24, x23, x22, #48 - adcs x19, x19, x24 - and x26, x26, x19 - lsr x24, x4, #4 - and x24, x24, #0xfffffffffffff - mul x22, x6, x24 - lsr x24, x12, #4 - and x24, x24, #0xfffffffffffff - mul x24, x14, x24 - add x22, x22, x24 - lsr x24, x23, #52 - add x22, x22, x24 - lsl x23, x23, #12 - extr x25, x22, x23, #60 - extr x24, x5, x4, #56 - and x24, x24, #0xfffffffffffff - mul x23, x6, x24 - extr x24, x13, x12, #56 - and x24, x24, #0xfffffffffffff - mul x24, x14, x24 - add x23, x23, x24 - lsr x24, x22, #52 - add x23, x23, x24 - lsl x25, x25, #8 - extr x24, x23, x25, #8 - adcs x7, x7, x24 - and x26, x26, x7 - ldp x3, x4, [x1, #48] - ldp x11, x12, [x2, #48] - extr x24, x3, x5, #44 - and x24, x24, #0xfffffffffffff - mul x22, x6, x24 - extr x24, x11, x13, #44 - and x24, x24, #0xfffffffffffff - mul x24, x14, x24 - add x22, x22, x24 - lsr x24, x23, #52 - add x22, x22, x24 - lsl x23, x23, #12 - extr x24, x22, x23, #20 - adcs x8, x8, x24 - and x26, x26, x8 - extr x24, x4, x3, #32 - and x24, x24, #0xfffffffffffff - mul x23, x6, x24 - extr x24, x12, x11, #32 - and x24, x24, #0xfffffffffffff - mul x24, x14, x24 - add x23, x23, x24 - lsr x24, x22, #52 - add x23, x23, x24 - lsl x22, x22, #12 - extr x24, x23, x22, #32 - adcs x9, x9, x24 - and x26, x26, x9 - lsr x24, x4, #20 - mul x22, x6, x24 - lsr x24, x12, #20 - mul x24, x14, x24 - add x22, x22, x24 - lsr x24, x23, #52 - add x22, x22, x24 - lsl x23, x23, #12 - extr x24, x22, x23, #44 - adcs x10, x10, x24 - and x26, x26, x10 - mul x24, x6, x14 - lsr x22, x22, #44 - add x24, x24, x22 - adc x20, x20, x24 - lsr x22, x20, #9 - orr x20, x20, #0xfffffffffffffe00 - cmp xzr, xzr - adcs xzr, x15, x22 - adcs xzr, x26, xzr - adcs xzr, x20, xzr - adcs x15, x15, x22 - adcs x16, x16, xzr - adcs x17, x17, xzr - adcs x19, x19, xzr - adcs x7, x7, xzr - adcs x8, x8, xzr - adcs x9, x9, xzr - adcs x10, x10, xzr - adc x20, x20, xzr - and x22, x15, #0x1ff - extr x15, x16, x15, #9 - extr x16, x17, x16, #9 - stp x15, x16, [x0] - extr x17, x19, x17, #9 - extr x19, x7, x19, #9 - stp x17, x19, [x0, #16] - extr x7, x8, x7, #9 - extr x8, x9, x8, #9 - stp x7, x8, [x0, #32] - extr x9, x10, x9, #9 - extr x10, x20, x10, #9 - stp x9, x10, [x0, #48] - str x22, [x0, #64] + stp x19, x20, [sp, #-16]! + stp x21, x22, [sp, #-16]! + stp x23, x24, [sp, #-16]! + stp x25, x26, [sp, #-16]! + sub sp, sp, #80 + ldr q6, [x2] + ldp x10, x17, [x1, #16] + ldr q4, [x1] + ldr q16, [x2, #32] + ldp x5, x20, [x2, #16] + ldr q2, [x1, #32] + movi v31.2D, #0x00000000ffffffff + uzp2 v17.4S, v6.4S, v6.4S + rev64 v7.4S, v6.4S + ldp x15, x21, [x1] + xtn v25.2S, v6.2D + xtn v22.2S, v4.2D + subs x14, x10, x17 + mul v7.4S, v7.4S, v4.4S + csetm x8, cc + rev64 v3.4S, v16.4S + xtn v1.2S, v16.2D + ldp x13, x16, [x2] + mul x26, x10, x5 + uzp2 v16.4S, v16.4S, v16.4S + uaddlp v26.2D, v7.4S + cneg x4, x14, cc + subs x24, x15, x21 + xtn v5.2S, v2.2D + mul v28.4S, v3.4S, v2.4S + shl v26.2D, v26.2D, #32 + mul x22, x17, x20 + umull v20.2D, v22.2S, v25.2S + uzp2 v6.4S, v4.4S, v4.4S + umull v18.2D, v22.2S, v17.2S + uzp2 v4.4S, v2.4S, v2.4S + cneg x14, x24, cc + csetm x7, cc + umulh x11, x17, x20 + usra v18.2D, v20.2D, #32 + uaddlp v7.2D, v28.4S + subs x19, x16, x13 + umlal v26.2D, v22.2S, v25.2S + cneg x19, x19, cc + shl v28.2D, v7.2D, #32 + umull v7.2D, v5.2S, v1.2S + umull v30.2D, v5.2S, v16.2S + cinv x6, x7, cc + mul x25, x14, x19 + umlal v28.2D, v5.2S, v1.2S + umull v21.2D, v6.2S, v17.2S + umulh x14, x14, x19 + usra v30.2D, v7.2D, #32 + subs x9, x20, x5 + and v29.16B, v18.16B, v31.16B + cinv x23, x8, cc + mov x8, v26.d[1] + cneg x12, x9, cc + usra v21.2D, v18.2D, #32 + umlal v29.2D, v6.2S, v25.2S + mul x24, x4, x12 + umull v18.2D, v4.2S, v16.2S + movi v25.2D, #0x00000000ffffffff + eor x9, x14, x6 + and v7.16B, v30.16B, v25.16B + usra v21.2D, v29.2D, #32 + umulh x7, x10, x5 + usra v18.2D, v30.2D, #32 + umlal v7.2D, v4.2S, v1.2S + mov x19, v21.d[0] + umulh x3, x4, x12 + mov x14, v21.d[1] + usra v18.2D, v7.2D, #32 + adds x4, x8, x19 + mov x8, v26.d[0] + adcs x19, x26, x14 + adcs x14, x22, x7 + adc x12, x11, xzr + adds x11, x4, x8 + adcs x26, x19, x4 + adcs x22, x14, x19 + eor x4, x24, x23 + adcs x14, x12, x14 + eor x7, x25, x6 + adc x25, xzr, x12 + eor x19, x3, x23 + adds x3, x26, x8 + adcs x24, x22, x11 + adcs x12, x14, x26 + adcs x22, x25, x22 + adcs x26, xzr, x14 + adc x14, xzr, x25 + cmn x23, #0x1 + adcs x22, x22, x4 + adcs x19, x26, x19 + adc x25, x14, x23 + subs x14, x21, x17 + cneg x23, x14, cc + csetm x26, cc + subs x4, x20, x16 + cneg x14, x4, cc + cinv x4, x26, cc + cmn x6, #0x1 + adcs x11, x11, x7 + mul x7, x23, x14 + adcs x9, x3, x9 + adcs x26, x24, x6 + umulh x3, x23, x14 + adcs x14, x12, x6 + adcs x22, x22, x6 + adcs x12, x19, x6 + extr x24, x11, x8, #55 + adc x6, x25, x6 + subs x19, x15, x17 + csetm x17, cc + cneg x23, x19, cc + subs x19, x20, x13 + lsl x25, x8, #9 + eor x8, x7, x4 + cneg x20, x19, cc + umulh x7, x23, x20 + cinv x19, x17, cc + subs x17, x15, x10 + csetm x15, cc + stp x25, x24, [sp, #32] + cneg x24, x17, cc + mul x20, x23, x20 + subs x25, x5, x13 + cneg x13, x25, cc + cinv x15, x15, cc + mul x25, x24, x13 + subs x21, x21, x10 + csetm x23, cc + cneg x17, x21, cc + subs x21, x5, x16 + umulh x13, x24, x13 + cinv x10, x23, cc + cneg x23, x21, cc + cmn x4, #0x1 + adcs x14, x14, x8 + eor x21, x3, x4 + adcs x21, x22, x21 + eor x5, x20, x19 + adcs x24, x12, x4 + mul x12, x17, x23 + eor x8, x25, x15 + adc x25, x6, x4 + cmn x15, #0x1 + adcs x6, x9, x8 + ldp x20, x8, [x2, #48] + eor x9, x13, x15 + adcs x4, x26, x9 + umulh x26, x17, x23 + ldp x17, x13, [x1, #48] + adcs x9, x14, x15 + adcs x16, x21, x15 + adcs x14, x24, x15 + eor x21, x7, x19 + mul x23, x17, x20 + adc x24, x25, x15 + cmn x19, #0x1 + adcs x7, x4, x5 + adcs x9, x9, x21 + umulh x3, x13, x8 + adcs x16, x16, x19 + adcs x22, x14, x19 + eor x5, x12, x10 + adc x12, x24, x19 + cmn x10, #0x1 + adcs x19, x7, x5 + eor x14, x26, x10 + mov x7, v28.d[1] + adcs x24, x9, x14 + extr x4, x19, x6, #55 + umulh x15, x17, x20 + mov x14, v18.d[1] + lsr x9, x19, #55 + adcs x5, x16, x10 + mov x16, v18.d[0] + adcs x19, x22, x10 + str x9, [sp, #64] + extr x25, x6, x11, #55 + adc x21, x12, x10 + subs x26, x17, x13 + stp x25, x4, [sp, #48] + stp x19, x21, [sp, #16] + csetm x6, cc + cneg x4, x26, cc + mul x19, x13, x8 + subs x11, x8, x20 + stp x24, x5, [sp] + ldp x21, x10, [x1, #32] + cinv x12, x6, cc + cneg x6, x11, cc + mov x9, v28.d[0] + umulh x25, x4, x6 + adds x22, x7, x16 + ldp x16, x5, [x2, #32] + adcs x14, x23, x14 + adcs x11, x19, x15 + adc x24, x3, xzr + adds x3, x22, x9 + adcs x15, x14, x22 + mul x22, x4, x6 + adcs x6, x11, x14 + adcs x4, x24, x11 + eor x14, x25, x12 + adc x26, xzr, x24 + subs x7, x21, x10 + csetm x23, cc + cneg x19, x7, cc + subs x24, x5, x16 + cneg x11, x24, cc + cinv x7, x23, cc + adds x25, x15, x9 + eor x23, x22, x12 + adcs x22, x6, x3 + mul x24, x19, x11 + adcs x15, x4, x15 + adcs x6, x26, x6 + umulh x19, x19, x11 + adcs x11, xzr, x4 + adc x26, xzr, x26 + cmn x12, #0x1 + adcs x4, x6, x23 + eor x6, x24, x7 + adcs x14, x11, x14 + adc x26, x26, x12 + subs x11, x10, x13 + cneg x12, x11, cc + csetm x11, cc + eor x19, x19, x7 + subs x24, x8, x5 + cinv x11, x11, cc + cneg x24, x24, cc + cmn x7, #0x1 + adcs x3, x3, x6 + mul x23, x12, x24 + adcs x25, x25, x19 + adcs x6, x22, x7 + umulh x19, x12, x24 + adcs x22, x15, x7 + adcs x12, x4, x7 + eor x24, x23, x11 + adcs x4, x14, x7 + adc x26, x26, x7 + eor x19, x19, x11 + subs x14, x21, x17 + cneg x7, x14, cc + csetm x14, cc + subs x23, x20, x16 + cinv x14, x14, cc + cneg x23, x23, cc + cmn x11, #0x1 + adcs x22, x22, x24 + mul x24, x7, x23 + adcs x15, x12, x19 + adcs x4, x4, x11 + adc x19, x26, x11 + umulh x26, x7, x23 + subs x7, x21, x13 + eor x11, x24, x14 + cneg x23, x7, cc + csetm x12, cc + subs x7, x8, x16 + cneg x7, x7, cc + cinv x12, x12, cc + cmn x14, #0x1 + eor x26, x26, x14 + adcs x11, x25, x11 + mul x25, x23, x7 + adcs x26, x6, x26 + adcs x6, x22, x14 + adcs x24, x15, x14 + umulh x23, x23, x7 + adcs x4, x4, x14 + adc x22, x19, x14 + eor x14, x25, x12 + eor x7, x23, x12 + cmn x12, #0x1 + adcs x14, x26, x14 + ldp x19, x25, [x2] + ldp x15, x23, [x2, #16] + adcs x26, x6, x7 + adcs x24, x24, x12 + adcs x7, x4, x12 + adc x4, x22, x12 + subs x19, x19, x16 + ldp x16, x22, [x1] + sbcs x6, x25, x5 + ldp x12, x25, [x1, #16] + sbcs x15, x15, x20 + sbcs x8, x23, x8 + csetm x23, cc + subs x21, x21, x16 + eor x16, x19, x23 + sbcs x19, x10, x22 + eor x22, x6, x23 + eor x8, x8, x23 + sbcs x6, x17, x12 + sbcs x13, x13, x25 + csetm x12, cc + subs x10, x10, x17 + cneg x17, x10, cc + csetm x25, cc + subs x5, x20, x5 + eor x10, x19, x12 + cneg x19, x5, cc + eor x20, x15, x23 + eor x21, x21, x12 + cinv x15, x25, cc + mul x25, x17, x19 + subs x16, x16, x23 + sbcs x5, x22, x23 + eor x6, x6, x12 + sbcs x20, x20, x23 + eor x22, x13, x12 + sbc x8, x8, x23 + subs x21, x21, x12 + umulh x19, x17, x19 + sbcs x10, x10, x12 + sbcs x17, x6, x12 + eor x6, x19, x15 + eor x19, x25, x15 + umulh x25, x17, x20 + sbc x13, x22, x12 + cmn x15, #0x1 + adcs x22, x14, x19 + adcs x19, x26, x6 + ldp x6, x26, [sp] + adcs x14, x24, x15 + umulh x24, x21, x16 + adcs x7, x7, x15 + adc x15, x4, x15 + adds x4, x9, x6 + eor x9, x23, x12 + adcs x12, x3, x26 + stp x4, x12, [sp] + ldp x4, x26, [sp, #16] + umulh x12, x10, x5 + ldp x6, x23, [sp, #32] + adcs x3, x11, x4 + mul x4, x13, x8 + adcs x26, x22, x26 + ldp x22, x11, [sp, #48] + adcs x6, x19, x6 + stp x3, x26, [sp, #16] + mul x26, x10, x5 + adcs x14, x14, x23 + stp x6, x14, [sp, #32] + ldr x6, [sp, #64] + adcs x22, x7, x22 + adcs x14, x15, x11 + mul x11, x17, x20 + adc x19, x6, xzr + stp x22, x14, [sp, #48] + adds x14, x26, x24 + str x19, [sp, #64] + umulh x19, x13, x8 + adcs x7, x11, x12 + adcs x22, x4, x25 + mul x6, x21, x16 + adc x19, x19, xzr + subs x11, x17, x13 + cneg x12, x11, cc + csetm x11, cc + subs x24, x8, x20 + cinv x11, x11, cc + cneg x24, x24, cc + adds x4, x14, x6 + adcs x14, x7, x14 + mul x3, x12, x24 + adcs x7, x22, x7 + adcs x22, x19, x22 + umulh x12, x12, x24 + adc x24, xzr, x19 + adds x19, x14, x6 + eor x3, x3, x11 + adcs x26, x7, x4 + adcs x14, x22, x14 + adcs x25, x24, x7 + adcs x23, xzr, x22 + eor x7, x12, x11 + adc x12, xzr, x24 + subs x22, x21, x10 + cneg x24, x22, cc + csetm x22, cc + subs x15, x5, x16 + cinv x22, x22, cc + cneg x15, x15, cc + cmn x11, #0x1 + adcs x3, x25, x3 + mul x25, x24, x15 + adcs x23, x23, x7 + adc x11, x12, x11 + subs x7, x10, x13 + umulh x15, x24, x15 + cneg x12, x7, cc + csetm x7, cc + eor x24, x25, x22 + eor x25, x15, x22 + cmn x22, #0x1 + adcs x24, x4, x24 + adcs x19, x19, x25 + adcs x15, x26, x22 + adcs x4, x14, x22 + adcs x26, x3, x22 + adcs x25, x23, x22 + adc x23, x11, x22 + subs x14, x21, x17 + cneg x3, x14, cc + csetm x11, cc + subs x14, x8, x5 + cneg x14, x14, cc + cinv x7, x7, cc + subs x13, x21, x13 + cneg x21, x13, cc + csetm x13, cc + mul x22, x12, x14 + subs x8, x8, x16 + cinv x13, x13, cc + umulh x14, x12, x14 + cneg x12, x8, cc + subs x8, x20, x16 + cneg x8, x8, cc + cinv x16, x11, cc + eor x22, x22, x7 + cmn x7, #0x1 + eor x14, x14, x7 + adcs x4, x4, x22 + mul x11, x3, x8 + adcs x22, x26, x14 + adcs x14, x25, x7 + eor x25, x24, x9 + adc x26, x23, x7 + umulh x7, x3, x8 + subs x17, x10, x17 + cneg x24, x17, cc + eor x3, x11, x16 + csetm x11, cc + subs x20, x20, x5 + cneg x5, x20, cc + cinv x11, x11, cc + cmn x16, #0x1 + mul x17, x21, x12 + eor x8, x7, x16 + adcs x10, x19, x3 + and x19, x9, #0x1ff + adcs x20, x15, x8 + umulh x15, x21, x12 + eor x12, x10, x9 + eor x8, x6, x9 + adcs x6, x4, x16 + adcs x4, x22, x16 + adcs x21, x14, x16 + adc x7, x26, x16 + mul x10, x24, x5 + cmn x13, #0x1 + ldp x3, x14, [x1] + eor x17, x17, x13 + umulh x5, x24, x5 + adcs x20, x20, x17 + eor x17, x15, x13 + adcs x16, x6, x17 + eor x22, x10, x11 + adcs x23, x4, x13 + extr x10, x14, x3, #52 + and x26, x3, #0xfffffffffffff + adcs x24, x21, x13 + and x15, x10, #0xfffffffffffff + adc x6, x7, x13 + cmn x11, #0x1 + adcs x17, x20, x22 + eor x4, x5, x11 + ldp x21, x10, [sp] + adcs x7, x16, x4 + eor x16, x17, x9 + eor x13, x7, x9 + ldp x3, x17, [sp, #16] + adcs x7, x23, x11 + eor x23, x7, x9 + ldp x5, x22, [sp, #32] + adcs x7, x24, x11 + adc x24, x6, x11 + ldr x6, [x2, #64] + adds x20, x8, x21 + lsl x11, x20, #9 + eor x4, x7, x9 + orr x7, x11, x19 + eor x8, x24, x9 + adcs x11, x25, x10 + mul x26, x6, x26 + ldp x19, x24, [sp, #48] + adcs x12, x12, x3 + adcs x16, x16, x17 + adcs x9, x13, x5 + ldr x25, [sp, #64] + extr x20, x11, x20, #55 + adcs x13, x23, x22 + adcs x4, x4, x19 + extr x23, x12, x11, #55 + adcs x8, x8, x24 + adc x11, x25, xzr + adds x21, x9, x21 + extr x9, x16, x12, #55 + lsr x12, x16, #55 + adcs x10, x13, x10 + mul x15, x6, x15 + adcs x13, x4, x3 + ldp x16, x4, [x2] + ldr x3, [x1, #64] + adcs x17, x8, x17 + adcs x5, x5, x7 + adcs x20, x22, x20 + adcs x8, x19, x23 + and x22, x16, #0xfffffffffffff + ldp x19, x7, [x1, #16] + adcs x9, x24, x9 + extr x24, x4, x16, #52 + adc x16, x12, x25 + mul x22, x3, x22 + and x25, x24, #0xfffffffffffff + extr x14, x19, x14, #40 + and x12, x14, #0xfffffffffffff + extr x23, x7, x19, #28 + ldp x19, x24, [x2, #16] + mul x14, x3, x25 + and x23, x23, #0xfffffffffffff + add x22, x26, x22 + lsl x11, x11, #48 + lsr x26, x22, #52 + lsl x25, x22, #12 + mul x22, x6, x12 + extr x12, x19, x4, #40 + add x4, x15, x14 + mul x15, x6, x23 + add x4, x4, x26 + extr x23, x24, x19, #28 + ldp x14, x19, [x1, #32] + and x26, x12, #0xfffffffffffff + extr x12, x4, x25, #12 + and x25, x23, #0xfffffffffffff + adds x21, x21, x12 + mul x12, x3, x26 + extr x23, x14, x7, #16 + and x23, x23, #0xfffffffffffff + mul x7, x3, x25 + ldp x25, x26, [x2, #32] + add x12, x22, x12 + extr x22, x19, x14, #56 + mul x23, x6, x23 + lsr x14, x14, #4 + extr x24, x25, x24, #16 + add x7, x15, x7 + and x15, x24, #0xfffffffffffff + and x22, x22, #0xfffffffffffff + lsr x24, x4, #52 + mul x15, x3, x15 + and x14, x14, #0xfffffffffffff + add x12, x12, x24 + lsl x24, x4, #12 + lsr x4, x12, #52 + extr x24, x12, x24, #24 + adcs x10, x10, x24 + lsl x24, x12, #12 + add x12, x7, x4 + mul x22, x6, x22 + add x4, x23, x15 + extr x7, x12, x24, #36 + adcs x13, x13, x7 + lsl x15, x12, #12 + add x7, x4, x11 + lsr x24, x12, #52 + ldp x23, x11, [x2, #48] + add x4, x7, x24 + mul x12, x6, x14 + extr x7, x26, x25, #56 + extr x14, x4, x15, #48 + and x2, x7, #0xfffffffffffff + extr x24, x11, x23, #32 + ldp x15, x7, [x1, #48] + and x1, x24, #0xfffffffffffff + lsr x24, x4, #52 + mul x2, x3, x2 + extr x26, x23, x26, #44 + lsr x23, x25, #4 + and x23, x23, #0xfffffffffffff + and x25, x26, #0xfffffffffffff + extr x26, x7, x15, #32 + extr x19, x15, x19, #44 + mul x23, x3, x23 + and x15, x26, #0xfffffffffffff + lsl x26, x4, #12 + and x4, x19, #0xfffffffffffff + lsr x11, x11, #20 + mul x19, x6, x4 + adcs x17, x17, x14 + add x14, x22, x2 + add x22, x12, x23 + lsr x7, x7, #20 + add x22, x22, x24 + extr x2, x22, x26, #60 + mul x24, x3, x25 + lsr x22, x22, #52 + add x14, x14, x22 + lsl x22, x2, #8 + extr x22, x14, x22, #8 + lsl x2, x14, #12 + mul x1, x3, x1 + adcs x12, x5, x22 + mul x5, x6, x15 + and x26, x10, x13 + and x4, x26, x17 + add x23, x19, x24 + lsr x14, x14, #52 + mul x22, x3, x11 + add x11, x23, x14 + extr x25, x11, x2, #20 + lsl x19, x11, #12 + adcs x25, x20, x25 + and x14, x4, x12 + add x1, x5, x1 + and x14, x14, x25 + mul x15, x6, x7 + add x26, x15, x22 + mul x6, x6, x3 + lsr x22, x11, #52 + add x4, x1, x22 + lsr x1, x4, #52 + extr x3, x4, x19, #32 + lsl x15, x4, #12 + add x7, x26, x1 + adcs x23, x8, x3 + extr x20, x7, x15, #44 + and x3, x14, x23 + lsr x19, x7, #44 + adcs x7, x9, x20 + add x11, x6, x19 + adc x4, x16, x11 + lsr x14, x4, #9 + cmp xzr, xzr + and x15, x3, x7 + orr x3, x4, #0xfffffffffffffe00 + adcs xzr, x21, x14 + adcs xzr, x15, xzr + adcs xzr, x3, xzr + adcs x11, x21, x14 + and x14, x11, #0x1ff + adcs x1, x10, xzr + extr x10, x1, x11, #9 + str x14, [x0, #64] + adcs x14, x13, xzr + extr x11, x14, x1, #9 + adcs x1, x17, xzr + extr x4, x1, x14, #9 + stp x10, x11, [x0] + adcs x11, x12, xzr + extr x14, x11, x1, #9 + adcs x10, x25, xzr + extr x11, x10, x11, #9 + stp x4, x14, [x0, #16] + adcs x14, x23, xzr + extr x10, x14, x10, #9 + adcs x1, x7, xzr + stp x11, x10, [x0, #32] + extr x14, x1, x14, #9 + adc x10, x3, xzr + extr x26, x10, x1, #9 + stp x14, x26, [x0, #48] + add sp, sp, #80 + ldp x25, x26, [sp], #16 + ldp x23, x24, [sp], #16 + ldp x21, x22, [sp], #16 + ldp x19, x20, [sp], #16 ret local_sqr_p521: - ldp x2, x3, [x1] - ldp x4, x5, [x1, #16] - ldp x6, x7, [x1, #32] - ldp x8, x9, [x1, #48] - mul x12, x6, x8 - mul x17, x7, x9 - umulh x22, x6, x8 - subs x23, x6, x7 - cneg x23, x23, cc - csetm x11, cc - subs x10, x9, x8 - cneg x10, x10, cc - mul x16, x23, x10 - umulh x10, x23, x10 - cinv x11, x11, cc - eor x16, x16, x11 - eor x10, x10, x11 - adds x13, x12, x22 - adc x22, x22, xzr - umulh x23, x7, x9 - adds x13, x13, x17 - adcs x22, x22, x23 - adc x23, x23, xzr - adds x22, x22, x17 - adc x23, x23, xzr - cmn x11, #0x1 - adcs x13, x13, x16 - adcs x22, x22, x10 - adc x23, x23, x11 - adds x12, x12, x12 - adcs x13, x13, x13 - adcs x22, x22, x22 - adcs x23, x23, x23 - adc x19, xzr, xzr - mul x10, x6, x6 - mul x16, x7, x7 - mul x21, x6, x7 - umulh x11, x6, x6 - umulh x17, x7, x7 - umulh x20, x6, x7 - adds x11, x11, x21 - adcs x16, x16, x20 - adc x17, x17, xzr - adds x11, x11, x21 - adcs x16, x16, x20 - adc x17, x17, xzr - adds x12, x12, x16 - adcs x13, x13, x17 - adcs x22, x22, xzr - adcs x23, x23, xzr - adc x19, x19, xzr - mul x14, x8, x8 - mul x16, x9, x9 - mul x21, x8, x9 - umulh x15, x8, x8 - umulh x17, x9, x9 - umulh x20, x8, x9 - adds x15, x15, x21 - adcs x16, x16, x20 - adc x17, x17, xzr - adds x15, x15, x21 - adcs x16, x16, x20 - adc x17, x17, xzr - adds x14, x14, x22 - adcs x15, x15, x23 - adcs x16, x16, x19 - adc x17, x17, xzr - ldr x19, [x1, #64] - add x23, x19, x19 - mul x19, x19, x19 - and x21, x2, #0xfffffffffffff - mul x21, x23, x21 - extr x20, x3, x2, #52 - and x20, x20, #0xfffffffffffff - mul x20, x23, x20 - lsr x22, x21, #52 - add x20, x20, x22 - lsl x21, x21, #12 - extr x22, x20, x21, #12 - adds x10, x10, x22 - extr x21, x4, x3, #40 - and x21, x21, #0xfffffffffffff - mul x21, x23, x21 - lsr x22, x20, #52 - add x21, x21, x22 - lsl x20, x20, #12 - extr x22, x21, x20, #24 - adcs x11, x11, x22 - extr x20, x5, x4, #28 - and x20, x20, #0xfffffffffffff - mul x20, x23, x20 - lsr x22, x21, #52 - add x20, x20, x22 - lsl x21, x21, #12 - extr x22, x20, x21, #36 - adcs x12, x12, x22 - extr x21, x6, x5, #16 - and x21, x21, #0xfffffffffffff - mul x21, x23, x21 - lsr x22, x20, #52 - add x21, x21, x22 - lsl x20, x20, #12 - extr x22, x21, x20, #48 - adcs x13, x13, x22 - lsr x20, x6, #4 - and x20, x20, #0xfffffffffffff - mul x20, x23, x20 - lsr x22, x21, #52 - add x20, x20, x22 - lsl x21, x21, #12 - extr x24, x20, x21, #60 - extr x21, x7, x6, #56 - and x21, x21, #0xfffffffffffff - mul x21, x23, x21 - lsr x22, x20, #52 - add x21, x21, x22 - lsl x24, x24, #8 - extr x22, x21, x24, #8 - adcs x14, x14, x22 - extr x20, x8, x7, #44 - and x20, x20, #0xfffffffffffff - mul x20, x23, x20 - lsr x22, x21, #52 - add x20, x20, x22 - lsl x21, x21, #12 - extr x22, x20, x21, #20 - adcs x15, x15, x22 - extr x21, x9, x8, #32 - and x21, x21, #0xfffffffffffff - mul x21, x23, x21 - lsr x22, x20, #52 - add x21, x21, x22 - lsl x20, x20, #12 - extr x22, x21, x20, #32 - adcs x16, x16, x22 - lsr x20, x9, #20 - mul x20, x23, x20 - lsr x22, x21, #52 - add x20, x20, x22 - lsl x21, x21, #12 - extr x22, x20, x21, #44 - adcs x17, x17, x22 - lsr x20, x20, #44 - adc x19, x19, x20 - extr x21, x11, x10, #9 - extr x20, x12, x11, #9 - stp x21, x20, [x0] - extr x21, x13, x12, #9 - extr x20, x14, x13, #9 - stp x21, x20, [x0, #16] - extr x21, x15, x14, #9 - extr x20, x16, x15, #9 - stp x21, x20, [x0, #32] - extr x21, x17, x16, #9 - extr x20, x19, x17, #9 - stp x21, x20, [x0, #48] - and x22, x10, #0x1ff - lsr x19, x19, #9 - add x22, x22, x19 - str x22, [x0, #64] - mul x12, x2, x4 - mul x17, x3, x5 - umulh x22, x2, x4 - subs x23, x2, x3 - cneg x23, x23, cc - csetm x11, cc - subs x10, x5, x4 - cneg x10, x10, cc - mul x16, x23, x10 - umulh x10, x23, x10 - cinv x11, x11, cc - eor x16, x16, x11 - eor x10, x10, x11 - adds x13, x12, x22 - adc x22, x22, xzr - umulh x23, x3, x5 - adds x13, x13, x17 - adcs x22, x22, x23 - adc x23, x23, xzr - adds x22, x22, x17 - adc x23, x23, xzr - cmn x11, #0x1 - adcs x13, x13, x16 - adcs x22, x22, x10 - adc x23, x23, x11 - adds x12, x12, x12 - adcs x13, x13, x13 - adcs x22, x22, x22 - adcs x23, x23, x23 - adc x19, xzr, xzr - mul x10, x2, x2 - mul x16, x3, x3 - mul x21, x2, x3 - umulh x11, x2, x2 - umulh x17, x3, x3 - umulh x20, x2, x3 - adds x11, x11, x21 - adcs x16, x16, x20 - adc x17, x17, xzr - adds x11, x11, x21 - adcs x16, x16, x20 - adc x17, x17, xzr - adds x12, x12, x16 - adcs x13, x13, x17 - adcs x22, x22, xzr - adcs x23, x23, xzr - adc x19, x19, xzr - mul x14, x4, x4 - mul x16, x5, x5 - mul x21, x4, x5 - umulh x15, x4, x4 - umulh x17, x5, x5 - umulh x20, x4, x5 - adds x15, x15, x21 - adcs x16, x16, x20 - adc x17, x17, xzr - adds x15, x15, x21 - adcs x16, x16, x20 - adc x17, x17, xzr - adds x14, x14, x22 - adcs x15, x15, x23 - adcs x16, x16, x19 - adc x17, x17, xzr - ldp x21, x20, [x0] - adds x21, x21, x10 - adcs x20, x20, x11 - stp x21, x20, [x0] - ldp x21, x20, [x0, #16] - adcs x21, x21, x12 - adcs x20, x20, x13 - stp x21, x20, [x0, #16] - ldp x21, x20, [x0, #32] - adcs x21, x21, x14 - adcs x20, x20, x15 - stp x21, x20, [x0, #32] - ldp x21, x20, [x0, #48] - adcs x21, x21, x16 - adcs x20, x20, x17 - stp x21, x20, [x0, #48] - ldr x22, [x0, #64] - adc x22, x22, xzr - str x22, [x0, #64] - mul x10, x2, x6 - mul x14, x3, x7 - mul x15, x4, x8 - mul x16, x5, x9 - umulh x17, x2, x6 - adds x14, x14, x17 - umulh x17, x3, x7 - adcs x15, x15, x17 - umulh x17, x4, x8 - adcs x16, x16, x17 - umulh x17, x5, x9 - adc x17, x17, xzr - adds x11, x14, x10 - adcs x14, x15, x14 - adcs x15, x16, x15 - adcs x16, x17, x16 - adc x17, xzr, x17 - adds x12, x14, x10 - adcs x13, x15, x11 - adcs x14, x16, x14 - adcs x15, x17, x15 - adcs x16, xzr, x16 - adc x17, xzr, x17 - subs x22, x4, x5 - cneg x22, x22, cc - csetm x19, cc - subs x20, x9, x8 - cneg x20, x20, cc - mul x21, x22, x20 - umulh x20, x22, x20 - cinv x19, x19, cc - cmn x19, #0x1 - eor x21, x21, x19 - adcs x15, x15, x21 - eor x20, x20, x19 - adcs x16, x16, x20 - adc x17, x17, x19 - subs x22, x2, x3 - cneg x22, x22, cc - csetm x19, cc - subs x20, x7, x6 - cneg x20, x20, cc - mul x21, x22, x20 - umulh x20, x22, x20 - cinv x19, x19, cc - cmn x19, #0x1 - eor x21, x21, x19 - adcs x11, x11, x21 - eor x20, x20, x19 - adcs x12, x12, x20 - adcs x13, x13, x19 - adcs x14, x14, x19 - adcs x15, x15, x19 - adcs x16, x16, x19 - adc x17, x17, x19 - subs x22, x3, x5 - cneg x22, x22, cc - csetm x19, cc - subs x20, x9, x7 - cneg x20, x20, cc - mul x21, x22, x20 - umulh x20, x22, x20 - cinv x19, x19, cc - cmn x19, #0x1 - eor x21, x21, x19 - adcs x14, x14, x21 - eor x20, x20, x19 - adcs x15, x15, x20 - adcs x16, x16, x19 - adc x17, x17, x19 - subs x22, x2, x4 - cneg x22, x22, cc - csetm x19, cc - subs x20, x8, x6 - cneg x20, x20, cc - mul x21, x22, x20 - umulh x20, x22, x20 - cinv x19, x19, cc - cmn x19, #0x1 - eor x21, x21, x19 - adcs x12, x12, x21 - eor x20, x20, x19 - adcs x13, x13, x20 - adcs x14, x14, x19 - adcs x15, x15, x19 - adcs x16, x16, x19 - adc x17, x17, x19 - subs x22, x2, x5 - cneg x22, x22, cc - csetm x19, cc - subs x20, x9, x6 - cneg x20, x20, cc - mul x21, x22, x20 - umulh x20, x22, x20 - cinv x19, x19, cc - cmn x19, #0x1 - eor x21, x21, x19 - adcs x13, x13, x21 - eor x20, x20, x19 - adcs x14, x14, x20 - adcs x15, x15, x19 - adcs x16, x16, x19 - adc x17, x17, x19 - subs x22, x3, x4 - cneg x22, x22, cc - csetm x19, cc - subs x20, x8, x7 - cneg x20, x20, cc - mul x21, x22, x20 - umulh x20, x22, x20 - cinv x19, x19, cc - cmn x19, #0x1 - eor x21, x21, x19 - adcs x13, x13, x21 - eor x20, x20, x19 - adcs x14, x14, x20 - adcs x15, x15, x19 - adcs x16, x16, x19 - adc x17, x17, x19 - ldp x21, x20, [x0] - extr x2, x15, x14, #8 - adds x2, x2, x21 - extr x3, x16, x15, #8 - adcs x3, x3, x20 - ldp x21, x20, [x0, #16] - extr x4, x17, x16, #8 - adcs x4, x4, x21 - and x22, x3, x4 - lsr x5, x17, #8 - adcs x5, x5, x20 - and x22, x22, x5 - ldp x21, x20, [x0, #32] - lsl x6, x10, #1 - adcs x6, x6, x21 - and x22, x22, x6 - extr x7, x11, x10, #63 - adcs x7, x7, x20 - and x22, x22, x7 - ldp x21, x20, [x0, #48] - extr x8, x12, x11, #63 - adcs x8, x8, x21 - and x22, x22, x8 - extr x9, x13, x12, #63 - adcs x9, x9, x20 - and x22, x22, x9 - ldr x21, [x0, #64] - extr x10, x14, x13, #63 - and x10, x10, #0x1ff - adc x10, x21, x10 - lsr x20, x10, #9 - orr x10, x10, #0xfffffffffffffe00 - cmp xzr, xzr - adcs xzr, x2, x20 - adcs xzr, x22, xzr - adcs xzr, x10, xzr - adcs x2, x2, x20 - adcs x3, x3, xzr - adcs x4, x4, xzr - adcs x5, x5, xzr - adcs x6, x6, xzr - adcs x7, x7, xzr - adcs x8, x8, xzr - adcs x9, x9, xzr - adc x10, x10, xzr - and x10, x10, #0x1ff - stp x2, x3, [x0] - stp x4, x5, [x0, #16] - stp x6, x7, [x0, #32] - stp x8, x9, [x0, #48] - str x10, [x0, #64] + stp x19, x20, [sp, #-16]! + stp x21, x22, [sp, #-16]! + stp x23, x24, [sp, #-16]! + ldr q23, [x1, #32] + ldp x9, x2, [x1, #32] + ldr q16, [x1, #32] + ldr q20, [x1, #48] + ldp x6, x13, [x1, #48] + rev64 v2.4S, v23.4S + mul x14, x9, x2 + ldr q31, [x1, #48] + subs x22, x9, x2 + uzp2 v26.4S, v23.4S, v23.4S + mul v30.4S, v2.4S, v16.4S + xtn v0.2S, v20.2D + csetm x12, cc + xtn v21.2S, v16.2D + xtn v23.2S, v23.2D + umulh x10, x9, x6 + rev64 v27.4S, v31.4S + umull v2.2D, v21.2S, v26.2S + cneg x23, x22, cc + uaddlp v25.2D, v30.4S + umull v18.2D, v21.2S, v23.2S + mul x22, x9, x6 + mul v6.4S, v27.4S, v20.4S + uzp2 v17.4S, v20.4S, v20.4S + shl v20.2D, v25.2D, #32 + uzp2 v27.4S, v31.4S, v31.4S + mul x16, x2, x13 + umlal v20.2D, v21.2S, v23.2S + usra v2.2D, v18.2D, #32 + adds x8, x22, x10 + umull v25.2D, v17.2S, v27.2S + xtn v31.2S, v31.2D + movi v1.2D, #0xffffffff + adc x3, x10, xzr + umulh x21, x2, x13 + uzp2 v21.4S, v16.4S, v16.4S + umull v18.2D, v0.2S, v27.2S + subs x19, x13, x6 + and v7.16B, v2.16B, v1.16B + umull v27.2D, v0.2S, v31.2S + cneg x20, x19, cc + movi v30.2D, #0xffffffff + umull v16.2D, v21.2S, v26.2S + umlal v7.2D, v21.2S, v23.2S + mul x19, x23, x20 + cinv x7, x12, cc + uaddlp v6.2D, v6.4S + eor x12, x19, x7 + adds x11, x8, x16 + umulh x10, x23, x20 + ldr q1, [x1] + usra v16.2D, v2.2D, #32 + adcs x19, x3, x21 + shl v2.2D, v6.2D, #32 + adc x20, x21, xzr + adds x17, x19, x16 + usra v18.2D, v27.2D, #32 + adc x19, x20, xzr + cmn x7, #0x1 + umlal v2.2D, v0.2S, v31.2S + umulh x16, x9, x2 + adcs x8, x11, x12 + usra v16.2D, v7.2D, #32 + ldr x12, [x1, #64] + eor x20, x10, x7 + umulh x10, x6, x13 + mov x23, v2.d[0] + mov x3, v2.d[1] + adcs x21, x17, x20 + usra v25.2D, v18.2D, #32 + and v23.16B, v18.16B, v30.16B + adc x7, x19, x7 + adds x22, x22, x22 + ldr q7, [x1, #16] + adcs x17, x8, x8 + umlal v23.2D, v17.2S, v31.2S + mov x19, v16.d[0] + mul x11, x12, x12 + ldr q4, [x1] + usra v25.2D, v23.2D, #32 + add x5, x12, x12 + adcs x15, x21, x21 + ldr q28, [x1] + mov x12, v20.d[1] + adcs x24, x7, x7 + mov x21, v16.d[1] + adc x4, xzr, xzr + adds x19, x19, x14 + ldr q18, [x1, #16] + xtn v26.2S, v1.2D + adcs x8, x12, x16 + adc x21, x21, xzr + adds x7, x19, x14 + xtn v23.2S, v7.2D + rev64 v21.4S, v28.4S + adcs x12, x8, x16 + ldp x20, x19, [x1] + mov x16, v25.d[1] + xtn v22.2S, v28.2D + adc x14, x21, xzr + adds x8, x22, x12 + uzp2 v24.4S, v28.4S, v28.4S + rev64 v28.4S, v18.4S + mul x12, x6, x13 + mul v16.4S, v21.4S, v1.4S + shrn v31.2S, v7.2D, #32 + adcs x22, x17, x14 + mov x14, v25.d[0] + and x21, x20, #0xfffffffffffff + umull v17.2D, v26.2S, v24.2S + ldr q2, [x1, #32] + adcs x17, x15, xzr + ldr q30, [x1, #48] + umull v7.2D, v26.2S, v22.2S + adcs x15, x24, xzr + ldr q0, [x1, #16] + movi v6.2D, #0xffffffff + adc x4, x4, xzr + adds x14, x14, x12 + uzp1 v27.4S, v18.4S, v4.4S + uzp2 v19.4S, v1.4S, v1.4S + adcs x24, x3, x10 + mul x3, x5, x21 + umull v29.2D, v23.2S, v31.2S + ldr q5, [x1] + adc x21, x16, xzr + adds x16, x14, x12 + extr x12, x19, x20, #52 + umull v18.2D, v19.2S, v24.2S + adcs x24, x24, x10 + and x10, x12, #0xfffffffffffff + ldp x14, x12, [x1, #16] + usra v17.2D, v7.2D, #32 + adc x21, x21, xzr + adds x23, x23, x17 + mul x17, x5, x10 + shl v21.2D, v29.2D, #33 + lsl x10, x3, #12 + lsr x1, x3, #52 + rev64 v29.4S, v2.4S + uaddlp v25.2D, v16.4S + add x17, x17, x1 + adcs x16, x16, x15 + extr x3, x14, x19, #40 + mov x15, v20.d[0] + extr x10, x17, x10, #12 + and x3, x3, #0xfffffffffffff + shl v3.2D, v25.2D, #32 + and v6.16B, v17.16B, v6.16B + mul x1, x5, x3 + usra v18.2D, v17.2D, #32 + adcs x3, x24, x4 + extr x4, x12, x14, #28 + umlal v6.2D, v19.2S, v22.2S + xtn v20.2S, v2.2D + umlal v3.2D, v26.2S, v22.2S + movi v26.2D, #0xffffffff + lsr x24, x17, #52 + and x4, x4, #0xfffffffffffff + uzp2 v19.4S, v2.4S, v2.4S + add x1, x1, x24 + mul x24, x5, x4 + lsl x4, x17, #12 + xtn v24.2S, v5.2D + extr x17, x1, x4, #24 + adc x21, x21, xzr + umlal v21.2D, v23.2S, v23.2S + adds x4, x15, x10 + lsl x10, x1, #12 + adcs x15, x7, x17 + mul v23.4S, v28.4S, v4.4S + and x7, x4, #0x1ff + lsr x17, x1, #52 + umulh x1, x19, x12 + uzp2 v17.4S, v5.4S, v5.4S + extr x4, x15, x4, #9 + add x24, x24, x17 + mul v29.4S, v29.4S, v5.4S + extr x17, x24, x10, #36 + extr x10, x9, x12, #16 + uzp1 v28.4S, v4.4S, v4.4S + adcs x17, x8, x17 + and x8, x10, #0xfffffffffffff + umull v16.2D, v24.2S, v20.2S + extr x10, x17, x15, #9 + mul x15, x5, x8 + stp x4, x10, [x0] + lsl x4, x24, #12 + lsr x8, x9, #4 + uaddlp v4.2D, v23.4S + and x8, x8, #0xfffffffffffff + umull v23.2D, v24.2S, v19.2S + mul x8, x5, x8 + extr x10, x2, x9, #56 + lsr x24, x24, #52 + and x10, x10, #0xfffffffffffff + add x15, x15, x24 + extr x4, x15, x4, #48 + mul x24, x5, x10 + lsr x10, x15, #52 + usra v23.2D, v16.2D, #32 + add x10, x8, x10 + shl v4.2D, v4.2D, #32 + adcs x22, x22, x4 + extr x4, x6, x2, #44 + lsl x15, x15, #12 + lsr x8, x10, #52 + extr x15, x10, x15, #60 + and x10, x4, #0xfffffffffffff + umlal v4.2D, v28.2S, v27.2S + add x8, x24, x8 + extr x4, x13, x6, #32 + mul x24, x5, x10 + uzp2 v16.4S, v30.4S, v30.4S + lsl x10, x15, #8 + rev64 v28.4S, v30.4S + and x15, x4, #0xfffffffffffff + extr x4, x8, x10, #8 + mul x10, x5, x15 + lsl x15, x8, #12 + adcs x23, x23, x4 + lsr x4, x8, #52 + lsr x8, x13, #20 + add x4, x24, x4 + mul x8, x5, x8 + lsr x24, x4, #52 + extr x15, x4, x15, #20 + lsl x4, x4, #12 + add x10, x10, x24 + adcs x15, x16, x15 + extr x4, x10, x4, #32 + umulh x5, x20, x14 + adcs x3, x3, x4 + usra v18.2D, v6.2D, #32 + lsl x16, x10, #12 + extr x24, x15, x23, #9 + lsr x10, x10, #52 + uzp2 v27.4S, v0.4S, v0.4S + add x8, x8, x10 + extr x10, x3, x15, #9 + extr x4, x22, x17, #9 + and v25.16B, v23.16B, v26.16B + lsr x17, x8, #44 + extr x15, x8, x16, #44 + extr x16, x23, x22, #9 + xtn v7.2S, v30.2D + mov x8, v4.d[0] + stp x24, x10, [x0, #32] + uaddlp v30.2D, v29.4S + stp x4, x16, [x0, #16] + umulh x24, x20, x19 + adcs x15, x21, x15 + adc x16, x11, x17 + subs x11, x20, x19 + xtn v5.2S, v0.2D + csetm x17, cc + extr x3, x15, x3, #9 + mov x22, v4.d[1] + cneg x21, x11, cc + subs x10, x12, x14 + mul v31.4S, v28.4S, v0.4S + cneg x10, x10, cc + cinv x11, x17, cc + shl v4.2D, v30.2D, #32 + umull v28.2D, v5.2S, v16.2S + extr x23, x16, x15, #9 + adds x4, x8, x5 + mul x17, x21, x10 + umull v22.2D, v5.2S, v7.2S + adc x15, x5, xzr + adds x4, x4, x22 + uaddlp v2.2D, v31.4S + lsr x5, x16, #9 + adcs x16, x15, x1 + mov x15, v18.d[0] + adc x1, x1, xzr + umulh x10, x21, x10 + adds x22, x16, x22 + umlal v4.2D, v24.2S, v20.2S + umull v30.2D, v27.2S, v16.2S + stp x3, x23, [x0, #48] + add x3, x7, x5 + adc x16, x1, xzr + usra v28.2D, v22.2D, #32 + mul x23, x20, x19 + eor x1, x17, x11 + cmn x11, #0x1 + mov x17, v18.d[1] + umull v18.2D, v17.2S, v19.2S + adcs x7, x4, x1 + eor x1, x10, x11 + umlal v25.2D, v17.2S, v20.2S + movi v16.2D, #0xffffffff + adcs x22, x22, x1 + usra v18.2D, v23.2D, #32 + umulh x4, x14, x14 + adc x1, x16, x11 + adds x10, x8, x8 + shl v23.2D, v2.2D, #32 + str x3, [x0, #64] + adcs x5, x7, x7 + and v16.16B, v28.16B, v16.16B + usra v30.2D, v28.2D, #32 + adcs x7, x22, x22 + mov x21, v3.d[1] + adcs x11, x1, x1 + umlal v16.2D, v27.2S, v7.2S + adc x22, xzr, xzr + adds x16, x15, x23 + mul x8, x14, x12 + umlal v23.2D, v5.2S, v7.2S + usra v18.2D, v25.2D, #32 + umulh x15, x14, x12 + adcs x21, x21, x24 + usra v30.2D, v16.2D, #32 + adc x1, x17, xzr + adds x3, x16, x23 + adcs x21, x21, x24 + adc x1, x1, xzr + adds x24, x10, x21 + umulh x21, x12, x12 + adcs x16, x5, x1 + adcs x10, x7, xzr + mov x17, v21.d[1] + adcs x23, x11, xzr + adc x5, x22, xzr + adds x1, x4, x8 + adcs x22, x17, x15 + ldp x17, x4, [x0] + mov x11, v21.d[0] + adc x21, x21, xzr + adds x1, x1, x8 + adcs x15, x22, x15 + adc x8, x21, xzr + adds x22, x11, x10 + mov x21, v3.d[0] + adcs x11, x1, x23 + ldp x1, x10, [x0, #16] + adcs x15, x15, x5 + adc x7, x8, xzr + adds x8, x17, x21 + mov x23, v4.d[1] + ldp x5, x21, [x0, #32] + adcs x17, x4, x3 + ldr x4, [x0, #64] + mov x3, v18.d[0] + adcs x24, x1, x24 + stp x8, x17, [x0] + adcs x17, x10, x16 + ldp x1, x16, [x0, #48] + adcs x5, x5, x22 + adcs x8, x21, x11 + stp x5, x8, [x0, #32] + adcs x1, x1, x15 + mov x15, v23.d[1] + adcs x21, x16, x7 + stp x1, x21, [x0, #48] + adc x10, x4, xzr + subs x7, x14, x12 + mov x16, v18.d[1] + cneg x5, x7, cc + csetm x4, cc + subs x11, x13, x6 + mov x8, v23.d[0] + cneg x7, x11, cc + cinv x21, x4, cc + mov x11, v30.d[0] + adds x4, x23, x3 + mul x22, x5, x7 + mov x23, v30.d[1] + adcs x8, x8, x16 + adcs x16, x15, x11 + adc x11, x23, xzr + umulh x3, x5, x7 + stp x24, x17, [x0, #16] + mov x5, v4.d[0] + subs x15, x20, x19 + cneg x7, x15, cc + str x10, [x0, #64] + csetm x1, cc + subs x24, x2, x9 + cneg x17, x24, cc + cinv x15, x1, cc + adds x23, x4, x5 + umulh x1, x7, x17 + adcs x24, x8, x4 + adcs x10, x16, x8 + eor x8, x22, x21 + adcs x16, x11, x16 + mul x22, x7, x17 + eor x17, x1, x15 + adc x1, xzr, x11 + adds x11, x24, x5 + eor x7, x3, x21 + adcs x3, x10, x23 + adcs x24, x16, x24 + adcs x4, x1, x10 + eor x10, x22, x15 + adcs x16, xzr, x16 + adc x1, xzr, x1 + cmn x21, #0x1 + adcs x8, x4, x8 + adcs x22, x16, x7 + adc x7, x1, x21 + subs x21, x19, x12 + csetm x4, cc + cneg x1, x21, cc + subs x21, x13, x2 + cinv x16, x4, cc + cneg x4, x21, cc + cmn x15, #0x1 + adcs x21, x23, x10 + mul x23, x1, x4 + adcs x11, x11, x17 + adcs x3, x3, x15 + umulh x1, x1, x4 + adcs x24, x24, x15 + adcs x8, x8, x15 + adcs x22, x22, x15 + eor x17, x23, x16 + adc x15, x7, x15 + subs x7, x20, x14 + cneg x7, x7, cc + csetm x4, cc + subs x10, x20, x12 + cneg x23, x10, cc + csetm x10, cc + subs x12, x6, x9 + cinv x20, x4, cc + cneg x12, x12, cc + cmn x16, #0x1 + eor x1, x1, x16 + adcs x17, x24, x17 + mul x4, x7, x12 + adcs x8, x8, x1 + umulh x1, x7, x12 + adcs x24, x22, x16 + adc x7, x15, x16 + subs x12, x13, x9 + cneg x12, x12, cc + cinv x13, x10, cc + subs x19, x19, x14 + mul x9, x23, x12 + cneg x19, x19, cc + csetm x10, cc + eor x16, x1, x20 + subs x22, x6, x2 + umulh x12, x23, x12 + eor x1, x4, x20 + cinv x4, x10, cc + cneg x22, x22, cc + cmn x20, #0x1 + adcs x15, x11, x1 + eor x6, x12, x13 + adcs x10, x3, x16 + adcs x17, x17, x20 + eor x23, x9, x13 + adcs x2, x8, x20 + mul x11, x19, x22 + adcs x24, x24, x20 + adc x7, x7, x20 + cmn x13, #0x1 + adcs x3, x10, x23 + umulh x22, x19, x22 + adcs x17, x17, x6 + eor x12, x22, x4 + extr x22, x15, x21, #63 + adcs x8, x2, x13 + extr x21, x21, x5, #63 + ldp x16, x23, [x0] + adcs x20, x24, x13 + eor x1, x11, x4 + adc x6, x7, x13 + cmn x4, #0x1 + ldp x2, x7, [x0, #16] + adcs x1, x3, x1 + extr x19, x1, x15, #63 + adcs x14, x17, x12 + extr x1, x14, x1, #63 + lsl x17, x5, #1 + adcs x8, x8, x4 + extr x12, x8, x14, #8 + ldp x15, x11, [x0, #32] + adcs x9, x20, x4 + adc x3, x6, x4 + adds x16, x12, x16 + extr x6, x9, x8, #8 + ldp x14, x12, [x0, #48] + extr x8, x3, x9, #8 + adcs x20, x6, x23 + ldr x24, [x0, #64] + lsr x6, x3, #8 + adcs x8, x8, x2 + and x2, x1, #0x1ff + and x1, x20, x8 + adcs x4, x6, x7 + adcs x3, x17, x15 + and x1, x1, x4 + adcs x9, x21, x11 + and x1, x1, x3 + adcs x6, x22, x14 + and x1, x1, x9 + and x21, x1, x6 + adcs x14, x19, x12 + adc x1, x24, x2 + cmp xzr, xzr + orr x12, x1, #0xfffffffffffffe00 + lsr x1, x1, #9 + adcs xzr, x16, x1 + and x21, x21, x14 + adcs xzr, x21, xzr + adcs xzr, x12, xzr + adcs x21, x16, x1 + adcs x1, x20, xzr + adcs x19, x8, xzr + stp x21, x1, [x0] + adcs x1, x4, xzr + adcs x21, x3, xzr + stp x19, x1, [x0, #16] + adcs x1, x9, xzr + stp x21, x1, [x0, #32] + adcs x21, x6, xzr + adcs x1, x14, xzr + stp x21, x1, [x0, #48] + adc x1, x12, xzr + and x1, x1, #0x1ff + str x1, [x0, #64] + ldp x23, x24, [sp], #16 + ldp x21, x22, [sp], #16 + ldp x19, x20, [sp], #16 ret + #if defined(__linux__) && defined(__ELF__) .section .note.GNU-stack, "", %progbits #endif diff --git a/third_party/s2n-bignum/arm/p521/p521_jscalarmul.S b/third_party/s2n-bignum/arm/p521/p521_jscalarmul.S new file mode 100644 index 0000000000..37cc923130 --- /dev/null +++ b/third_party/s2n-bignum/arm/p521/p521_jscalarmul.S @@ -0,0 +1,2706 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT-0 + +// ---------------------------------------------------------------------------- +// Jacobian form scalar multiplication for P-521 +// Input scalar[9], point[27]; output res[27] +// +// extern void p521_jscalarmul +// (uint64_t res[static 27], +// uint64_t scalar[static 9], +// uint64_t point[static 27]); +// +// This function is a variant of its affine point version p521_scalarmul. +// Here, input and output points are assumed to be in Jacobian form with +// a triple (x,y,z) representing the affine point (x/z^2,y/z^3) when +// z is nonzero or the point at infinity (group identity) if z = 0. +// +// Given scalar = n and point = P, assumed to be on the NIST elliptic +// curve P-521, returns a representation of n * P. If the result is the +// point at infinity (either because the input point was or because the +// scalar was a multiple of p_521) then the output is guaranteed to +// represent the point at infinity, i.e. to have its z coordinate zero. +// +// Standard ARM ABI: X0 = res, X1 = scalar, X2 = point +// ---------------------------------------------------------------------------- + +#include "_internal_s2n_bignum.h" + + S2N_BN_SYM_VISIBILITY_DIRECTIVE(p521_jscalarmul) + S2N_BN_SYM_PRIVACY_DIRECTIVE(p521_jscalarmul) + + .text + .balign 4 + +// Size of individual field elements + +#define NUMSIZE 72 +#define JACSIZE (3*NUMSIZE) + +// Safe copies of input res and additional values in variables. + +#define tabup x15 +#define bf x16 +#define sgn x17 +#define j x19 +#define res x20 + +// Intermediate variables on the stack. +// The table is 16 entries, each of size JACSIZE = 3 * NUMSIZE + +#define scalarb sp, #(0*NUMSIZE) +#define acc sp, #(1*NUMSIZE) +#define tabent sp, #(4*NUMSIZE) + +#define tab sp, #(7*NUMSIZE) + +// Round up to maintain stack alignment + +#define NSPACE #(55*NUMSIZE+8) + +#define selectblock(I) \ + cmp bf, #(1*I); \ + ldp x10, x11, [tabup]; \ + csel x0, x10, x0, eq; \ + csel x1, x11, x1, eq; \ + ldp x10, x11, [tabup, #16]; \ + csel x2, x10, x2, eq; \ + csel x3, x11, x3, eq; \ + ldp x10, x11, [tabup, #32]; \ + csel x4, x10, x4, eq; \ + csel x5, x11, x5, eq; \ + ldp x10, x11, [tabup, #48]; \ + csel x6, x10, x6, eq; \ + csel x7, x11, x7, eq; \ + ldr x10, [tabup, #64]; \ + csel x8, x10, x8, eq; \ + add tabup, tabup, #JACSIZE + +// Loading large constants + +#define movbig(nn,n3,n2,n1,n0) \ + movz nn, n0; \ + movk nn, n1, lsl #16; \ + movk nn, n2, lsl #32; \ + movk nn, n3, lsl #48 + +S2N_BN_SYMBOL(p521_jscalarmul): + + stp x19, x20, [sp, #-16]! + stp x21, x30, [sp, #-16]! + sub sp, sp, NSPACE + +// Preserve the "res" input argument; others get processed early. + + mov res, x0 + +// Reduce the input scalar mod n_521 and store it to "scalarb". + + mov x19, x2 + add x0, scalarb + bl p521_jscalarmul_bignum_mod_n521_9 + mov x2, x19 + +// Set the tab[0] table entry to the input point = 1 * P, but also +// reduce all coordinates modulo p. In principle we assume reduction +// as a precondition, but this reduces the scope for surprise, e.g. +// making sure that any input with z = 0 is treated as zero, even +// if the other coordinates are not in fact reduced. + + add x0, tab + mov x1, x19 + bl p521_jscalarmul_bignum_mod_p521_9 + + add x0, tab+NUMSIZE + add x1, x19, #NUMSIZE + bl p521_jscalarmul_bignum_mod_p521_9 + + add x0, tab+2*NUMSIZE + add x1, x19, #(2*NUMSIZE) + bl p521_jscalarmul_bignum_mod_p521_9 + +// If bit 520 of the scalar is set, then negate the scalar mod n_521, +// i.e. do scalar |-> n_521 - scalar, and also the point to compensate +// by negating its y coordinate. This further step is not needed by +// the indexing scheme (the top window is only a couple of bits either +// way), but is convenient to exclude a problem with the specific value +// scalar = n_521 - 18, where the last Jacobian addition is of the form +// (n_521 - 9) * P + -(9 * P) and hence is a degenerate doubling case. + + ldp x0, x1, [scalarb] + movbig(x10, #0xbb6f, #0xb71e, #0x9138, #0x6409) + subs x10, x10, x0 + movbig(x11, #0x3bb5, #0xc9b8, #0x899c, #0x47ae) + sbcs x11, x11, x1 + ldp x2, x3, [scalarb+16] + movbig(x12, #0x7fcc, #0x0148, #0xf709, #0xa5d0) + sbcs x12, x12, x2 + movbig(x13, #0x5186, #0x8783, #0xbf2f, #0x966b) + sbcs x13, x13, x3 + ldp x4, x5, [scalarb+32] + mov x14, 0xfffffffffffffffa + sbcs x14, x14, x4 + mov x15, 0xffffffffffffffff + sbcs x15, x15, x5 + ldp x6, x7, [scalarb+48] + mov x16, 0xffffffffffffffff + sbcs x16, x16, x6 + mov x17, 0xffffffffffffffff + sbcs x17, x17, x7 + ldr x8, [scalarb+64] + mov x19, 0x00000000000001ff + sbc x19, x19, x8 + tst x8, 0x100 + csetm x9, ne + csel x0, x10, x0, ne + csel x1, x11, x1, ne + csel x2, x12, x2, ne + csel x3, x13, x3, ne + csel x4, x14, x4, ne + csel x5, x15, x5, ne + csel x6, x16, x6, ne + csel x7, x17, x7, ne + csel x8, x19, x8, ne + stp x0, x1, [scalarb] + stp x2, x3, [scalarb+16] + stp x4, x5, [scalarb+32] + stp x6, x7, [scalarb+48] + str x8, [scalarb+64] + + add tabup, tab + ldp x0, x1, [tabup, #NUMSIZE] + ldp x2, x3, [tabup, #NUMSIZE+16] + ldp x4, x5, [tabup, #NUMSIZE+32] + ldp x6, x7, [tabup, #NUMSIZE+48] + ldr x8, [tabup, #NUMSIZE+64] + orr x10, x0, x1 + orr x11, x2, x3 + orr x12, x4, x5 + orr x13, x6, x7 + orr x10, x10, x11 + orr x12, x12, x13 + orr x12, x12, x8 + orr x10, x10, x12 + cmp x10, xzr + csel x9, x9, xzr, ne + eor x0, x0, x9 + eor x1, x1, x9 + eor x2, x2, x9 + eor x3, x3, x9 + eor x4, x4, x9 + eor x5, x5, x9 + eor x6, x6, x9 + eor x7, x7, x9 + and x9, x9, #0x1FF + eor x8, x8, x9 + stp x0, x1, [tabup, #NUMSIZE] + stp x2, x3, [tabup, #NUMSIZE+16] + stp x4, x5, [tabup, #NUMSIZE+32] + stp x6, x7, [tabup, #NUMSIZE+48] + str x8, [tabup, #NUMSIZE+64] + +// Compute and record tab[1] = 2 * p, ..., tab[15] = 16 * P + + add x0, tab+JACSIZE*1 + add x1, tab + bl p521_jscalarmul_jdouble + + add x0, tab+JACSIZE*2 + add x1, tab+JACSIZE*1 + add x2, tab + bl p521_jscalarmul_jadd + + add x0, tab+JACSIZE*3 + add x1, tab+JACSIZE*1 + bl p521_jscalarmul_jdouble + + add x0, tab+JACSIZE*4 + add x1, tab+JACSIZE*3 + add x2, tab + bl p521_jscalarmul_jadd + + add x0, tab+JACSIZE*5 + add x1, tab+JACSIZE*2 + bl p521_jscalarmul_jdouble + + add x0, tab+JACSIZE*6 + add x1, tab+JACSIZE*5 + add x2, tab + bl p521_jscalarmul_jadd + + add x0, tab+JACSIZE*7 + add x1, tab+JACSIZE*3 + bl p521_jscalarmul_jdouble + + add x0, tab+JACSIZE*8 + add x1, tab+JACSIZE*7 + add x2, tab + bl p521_jscalarmul_jadd + + add x0, tab+JACSIZE*9 + add x1, tab+JACSIZE*4 + bl p521_jscalarmul_jdouble + + add x0, tab+JACSIZE*10 + add x1, tab+JACSIZE*9 + add x2, tab + bl p521_jscalarmul_jadd + + add x0, tab+JACSIZE*11 + add x1, tab+JACSIZE*5 + bl p521_jscalarmul_jdouble + + add x0, tab+JACSIZE*12 + add x1, tab+JACSIZE*11 + add x2, tab + bl p521_jscalarmul_jadd + + add x0, tab+JACSIZE*13 + add x1, tab+JACSIZE*6 + bl p521_jscalarmul_jdouble + + add x0, tab+JACSIZE*14 + add x1, tab+JACSIZE*13 + add x2, tab + bl p521_jscalarmul_jadd + + add x0, tab+JACSIZE*15 + add x1, tab+JACSIZE*7 + bl p521_jscalarmul_jdouble + +// Add the recoding constant sum_i(16 * 32^i) to the scalar to allow signed +// digits. The digits of the constant, in lowest-to-highest order, are as +// follows; they are generated dynamically since none is a simple ARM load. +// +// 0x0842108421084210 +// 0x1084210842108421 +// 0x2108421084210842 +// 0x4210842108421084 +// 0x8421084210842108 +// 0x0842108421084210 +// 0x1084210842108421 +// 0x2108421084210842 +// 0x0000000000000084 + + ldp x0, x1, [scalarb] + ldp x2, x3, [scalarb+16] + ldp x4, x5, [scalarb+32] + ldp x6, x7, [scalarb+48] + ldr x8, [scalarb+64] + + movbig(x10, #0x1084, #0x2108, #0x4210, #0x8421) + adds x0, x0, x10, lsr #1 + adcs x1, x1, x10 + lsl x10, x10, #1 + adcs x2, x2, x10 + lsl x10, x10, #1 + adcs x3, x3, x10 + lsl x10, x10, #1 + adcs x4, x4, x10 + lsr x11, x10, #4 + adcs x5, x5, x11 + lsr x10, x10, #3 + adcs x6, x6, x10 + lsl x10, x10, #1 + adcs x7, x7, x10 + lsl x10, x10, #1 + and x10, x10, #0xFF + adc x8, x8, x10 + +// Because of the initial reduction the top bitfield (>= bits 520) is <= 1, +// i.e. just a single bit. Record that in "bf", then shift the whole +// scalar left 56 bits to align the top of the next bitfield with the MSB +// (bits 571..575). + + lsr bf, x8, #8 + extr x8, x8, x7, #8 + extr x7, x7, x6, #8 + extr x6, x6, x5, #8 + extr x5, x5, x4, #8 + extr x4, x4, x3, #8 + extr x3, x3, x2, #8 + extr x2, x2, x1, #8 + extr x1, x1, x0, #8 + lsl x0, x0, #56 + stp x0, x1, [scalarb] + stp x2, x3, [scalarb+16] + stp x4, x5, [scalarb+32] + stp x6, x7, [scalarb+48] + str x8, [scalarb+64] + +// According to the top bit, initialize the accumulator to P or 0. This top +// digit, uniquely, is not recoded so there is no sign adjustment to make. +// We only really need to adjust the z coordinate to zero, but do all three. + + add tabup, tab + cmp bf, xzr + + ldp x0, x1, [tabup] + csel x0, x0, xzr, ne + csel x1, x1, xzr, ne + stp x0, x1, [acc] + ldp x0, x1, [tabup, #16] + csel x0, x0, xzr, ne + csel x1, x1, xzr, ne + stp x0, x1, [acc+16] + ldp x0, x1, [tabup, #32] + csel x0, x0, xzr, ne + csel x1, x1, xzr, ne + stp x0, x1, [acc+32] + ldp x0, x1, [tabup, #48] + csel x0, x0, xzr, ne + csel x1, x1, xzr, ne + stp x0, x1, [acc+48] + ldp x0, x1, [tabup, #64] + csel x0, x0, xzr, ne + csel x1, x1, xzr, ne + stp x0, x1, [acc+64] + ldp x0, x1, [tabup, #80] + csel x0, x0, xzr, ne + csel x1, x1, xzr, ne + stp x0, x1, [acc+80] + ldp x0, x1, [tabup, #96] + csel x0, x0, xzr, ne + csel x1, x1, xzr, ne + stp x0, x1, [acc+96] + ldp x0, x1, [tabup, #112] + csel x0, x0, xzr, ne + csel x1, x1, xzr, ne + stp x0, x1, [acc+112] + ldp x0, x1, [tabup, #128] + csel x0, x0, xzr, ne + csel x1, x1, xzr, ne + stp x0, x1, [acc+128] + ldp x0, x1, [tabup, #144] + csel x0, x0, xzr, ne + csel x1, x1, xzr, ne + stp x0, x1, [acc+144] + ldp x0, x1, [tabup, #160] + csel x0, x0, xzr, ne + csel x1, x1, xzr, ne + stp x0, x1, [acc+160] + ldp x0, x1, [tabup, #176] + csel x0, x0, xzr, ne + csel x1, x1, xzr, ne + stp x0, x1, [acc+176] + ldp x0, x1, [tabup, #192] + csel x0, x0, xzr, ne + csel x1, x1, xzr, ne + stp x0, x1, [acc+192] + ldr x0, [tabup, #208] + csel x0, x0, xzr, ne + str x0, [acc+208] + +// Main loop over size-5 bitfields: double 5 times then add signed digit +// At each stage we shift the scalar left by 5 bits so we can simply pick +// the top 5 bits as the bitfield, saving some fiddle over indexing. + + mov j, #520 + +p521_jscalarmul_mainloop: + sub j, j, #5 + + add x0, acc + add x1, acc + bl p521_jscalarmul_jdouble + + add x0, acc + add x1, acc + bl p521_jscalarmul_jdouble + + add x0, acc + add x1, acc + bl p521_jscalarmul_jdouble + + add x0, acc + add x1, acc + bl p521_jscalarmul_jdouble + + add x0, acc + add x1, acc + bl p521_jscalarmul_jdouble + +// Choose the bitfield and adjust it to sign and magnitude + + ldp x0, x1, [scalarb] + ldp x2, x3, [scalarb+16] + ldp x4, x5, [scalarb+32] + ldp x6, x7, [scalarb+48] + ldr x8, [scalarb+64] + lsr bf, x8, #59 + extr x8, x8, x7, #59 + extr x7, x7, x6, #59 + extr x6, x6, x5, #59 + extr x5, x5, x4, #59 + extr x4, x4, x3, #59 + extr x3, x3, x2, #59 + extr x2, x2, x1, #59 + extr x1, x1, x0, #59 + lsl x0, x0, #5 + stp x0, x1, [scalarb] + stp x2, x3, [scalarb+16] + stp x4, x5, [scalarb+32] + stp x6, x7, [scalarb+48] + str x8, [scalarb+64] + + subs bf, bf, #16 + csetm sgn, lo // sgn = sign of digit (1 = negative) + cneg bf, bf, lo // bf = absolute value of digit + +// Conditionally select the table entry tab[i-1] = i * P in constant time + + mov x0, xzr + mov x1, xzr + mov x2, xzr + mov x3, xzr + mov x4, xzr + mov x5, xzr + mov x6, xzr + mov x7, xzr + mov x8, xzr + add tabup, tab + selectblock(1) + selectblock(2) + selectblock(3) + selectblock(4) + selectblock(5) + selectblock(6) + selectblock(7) + selectblock(8) + selectblock(9) + selectblock(10) + selectblock(11) + selectblock(12) + selectblock(13) + selectblock(14) + selectblock(15) + selectblock(16) + stp x0, x1, [tabent] + stp x2, x3, [tabent+16] + stp x4, x5, [tabent+32] + stp x6, x7, [tabent+48] + str x8, [tabent+64] + + mov x0, xzr + mov x1, xzr + mov x2, xzr + mov x3, xzr + mov x4, xzr + mov x5, xzr + mov x6, xzr + mov x7, xzr + mov x8, xzr + add tabup, tab+2*NUMSIZE + selectblock(1) + selectblock(2) + selectblock(3) + selectblock(4) + selectblock(5) + selectblock(6) + selectblock(7) + selectblock(8) + selectblock(9) + selectblock(10) + selectblock(11) + selectblock(12) + selectblock(13) + selectblock(14) + selectblock(15) + selectblock(16) + stp x0, x1, [tabent+2*NUMSIZE] + stp x2, x3, [tabent+2*NUMSIZE+16] + stp x4, x5, [tabent+2*NUMSIZE+32] + stp x6, x7, [tabent+2*NUMSIZE+48] + str x8, [tabent+2*NUMSIZE+64] + + mov x0, xzr + mov x1, xzr + mov x2, xzr + mov x3, xzr + mov x4, xzr + mov x5, xzr + mov x6, xzr + mov x7, xzr + mov x8, xzr + add tabup, tab+NUMSIZE + selectblock(1) + selectblock(2) + selectblock(3) + selectblock(4) + selectblock(5) + selectblock(6) + selectblock(7) + selectblock(8) + selectblock(9) + selectblock(10) + selectblock(11) + selectblock(12) + selectblock(13) + selectblock(14) + selectblock(15) + selectblock(16) + +// Store it to "tabent" with the y coordinate optionally negated. +// This is done carefully to give coordinates < p_521 even in +// the degenerate case y = 0 (when z = 0 for points on the curve). + + orr x10, x0, x1 + orr x11, x2, x3 + orr x12, x4, x5 + orr x13, x6, x7 + orr x10, x10, x11 + orr x12, x12, x13 + orr x12, x12, x8 + orr x10, x10, x12 + cmp x10, xzr + csel sgn, sgn, xzr, ne + + eor x0, x0, sgn + eor x1, x1, sgn + eor x2, x2, sgn + eor x3, x3, sgn + eor x4, x4, sgn + eor x5, x5, sgn + eor x6, x6, sgn + eor x7, x7, sgn + and sgn, sgn, #0x1FF + eor x8, x8, sgn + + stp x0, x1, [tabent+NUMSIZE] + stp x2, x3, [tabent+NUMSIZE+16] + stp x4, x5, [tabent+NUMSIZE+32] + stp x6, x7, [tabent+NUMSIZE+48] + str x8, [tabent+NUMSIZE+64] + +// Add to the accumulator + + add x0, acc + add x1, acc + add x2, tabent + bl p521_jscalarmul_jadd + + cbnz j, p521_jscalarmul_mainloop + +// That's the end of the main loop, and we just need to copy the +// result in "acc" to the output. + + ldp x0, x1, [acc] + stp x0, x1, [res] + ldp x0, x1, [acc+16] + stp x0, x1, [res, #16] + ldp x0, x1, [acc+32] + stp x0, x1, [res, #32] + ldp x0, x1, [acc+48] + stp x0, x1, [res, #48] + ldp x0, x1, [acc+64] + stp x0, x1, [res, #64] + ldp x0, x1, [acc+80] + stp x0, x1, [res, #80] + ldp x0, x1, [acc+96] + stp x0, x1, [res, #96] + ldp x0, x1, [acc+112] + stp x0, x1, [res, #112] + ldp x0, x1, [acc+128] + stp x0, x1, [res, #128] + ldp x0, x1, [acc+144] + stp x0, x1, [res, #144] + ldp x0, x1, [acc+160] + stp x0, x1, [res, #160] + ldp x0, x1, [acc+176] + stp x0, x1, [res, #176] + ldp x0, x1, [acc+192] + stp x0, x1, [res, #192] + ldr x0, [acc+208] + str x0, [res, #208] + +// Restore stack and registers and return + + add sp, sp, NSPACE + ldp x21, x30, [sp], 16 + ldp x19, x20, [sp], 16 + ret + +// Local copies of subroutines, complete clones at the moment except +// that we share multiplication and squaring between the point operations. + +p521_jscalarmul_bignum_mod_p521_9: + ldr x12, [x1, #64] + lsr x2, x12, #9 + cmp xzr, xzr + ldp x4, x5, [x1] + adcs xzr, x4, x2 + adcs xzr, x5, xzr + ldp x6, x7, [x1, #16] + and x3, x6, x7 + adcs xzr, x3, xzr + ldp x8, x9, [x1, #32] + and x3, x8, x9 + adcs xzr, x3, xzr + ldp x10, x11, [x1, #48] + and x3, x10, x11 + adcs xzr, x3, xzr + orr x3, x12, #0xfffffffffffffe00 + adcs x3, x3, xzr + adcs x4, x4, x2 + adcs x5, x5, xzr + adcs x6, x6, xzr + adcs x7, x7, xzr + adcs x8, x8, xzr + adcs x9, x9, xzr + adcs x10, x10, xzr + adcs x11, x11, xzr + adc x12, x12, xzr + and x12, x12, #0x1ff + stp x4, x5, [x0] + stp x6, x7, [x0, #16] + stp x8, x9, [x0, #32] + stp x10, x11, [x0, #48] + str x12, [x0, #64] + ret + +p521_jscalarmul_bignum_mod_n521_9: + ldr x14, [x1, #64] + lsr x15, x14, #9 + add x15, x15, #1 + mov x2, #39927 + movk x2, #28359, lsl #16 + movk x2, #18657, lsl #32 + movk x2, #17552, lsl #48 + mul x6, x2, x15 + mov x3, #47185 + movk x3, #30307, lsl #16 + movk x3, #13895, lsl #32 + movk x3, #50250, lsl #48 + mul x7, x3, x15 + mov x4, #23087 + movk x4, #2294, lsl #16 + movk x4, #65207, lsl #32 + movk x4, #32819, lsl #48 + mul x8, x4, x15 + mov x5, #27028 + movk x5, #16592, lsl #16 + movk x5, #30844, lsl #32 + movk x5, #44665, lsl #48 + mul x9, x5, x15 + lsl x10, x15, #2 + add x10, x10, x15 + umulh x13, x2, x15 + adds x7, x7, x13 + umulh x13, x3, x15 + adcs x8, x8, x13 + umulh x13, x4, x15 + adcs x9, x9, x13 + umulh x13, x5, x15 + adc x10, x10, x13 + ldp x12, x13, [x1] + adds x6, x6, x12 + adcs x7, x7, x13 + ldp x12, x13, [x1, #16] + adcs x8, x8, x12 + adcs x9, x9, x13 + ldp x13, x11, [x1, #32] + adcs x10, x10, x13 + adcs x11, x11, xzr + ldp x12, x13, [x1, #48] + adcs x12, x12, xzr + adcs x13, x13, xzr + orr x14, x14, #0xfffffffffffffe00 + adcs x14, x14, xzr + csetm x15, lo + and x2, x2, x15 + subs x6, x6, x2 + and x3, x3, x15 + sbcs x7, x7, x3 + and x4, x4, x15 + sbcs x8, x8, x4 + and x5, x5, x15 + sbcs x9, x9, x5 + mov x2, #5 + and x2, x2, x15 + sbcs x10, x10, x2 + sbcs x11, x11, xzr + sbcs x12, x12, xzr + sbcs x13, x13, xzr + sbc x14, x14, xzr + and x14, x14, #0x1ff + stp x6, x7, [x0] + stp x8, x9, [x0, #16] + stp x10, x11, [x0, #32] + stp x12, x13, [x0, #48] + str x14, [x0, #64] + ret + +p521_jscalarmul_jadd: + stp x19, x20, [sp, #-16]! + stp x21, x22, [sp, #-16]! + stp x23, x24, [sp, #-16]! + stp x25, x26, [sp, #-16]! + stp x27, x28, [sp, #-16]! + stp x29, x30, [sp, #-16]! + sub sp, sp, #0x240 + mov x26, x0 + mov x27, x1 + mov x28, x2 + mov x0, sp + add x1, x27, #0x90 + bl p521_jscalarmul_sqr_p521 + add x0, sp, #0x168 + add x1, x28, #0x90 + bl p521_jscalarmul_sqr_p521 + add x0, sp, #0x1f8 + add x1, x28, #0x90 + add x2, x27, #0x48 + bl p521_jscalarmul_mul_p521 + add x0, sp, #0x48 + add x1, x27, #0x90 + add x2, x28, #0x48 + bl p521_jscalarmul_mul_p521 + add x0, sp, #0x90 + mov x1, sp + add x2, x28, #0x0 + bl p521_jscalarmul_mul_p521 + add x0, sp, #0x120 + add x1, sp, #0x168 + add x2, x27, #0x0 + bl p521_jscalarmul_mul_p521 + add x0, sp, #0x48 + mov x1, sp + add x2, sp, #0x48 + bl p521_jscalarmul_mul_p521 + add x0, sp, #0x1f8 + add x1, sp, #0x168 + add x2, sp, #0x1f8 + bl p521_jscalarmul_mul_p521 + add x0, sp, #0x168 + add x1, sp, #0x90 + add x2, sp, #0x120 + bl p521_jscalarmul_sub_p521 + add x0, sp, #0x48 + add x1, sp, #0x48 + add x2, sp, #0x1f8 + bl p521_jscalarmul_sub_p521 + add x0, sp, #0xd8 + add x1, sp, #0x168 + bl p521_jscalarmul_sqr_p521 + mov x0, sp + add x1, sp, #0x48 + bl p521_jscalarmul_sqr_p521 + add x0, sp, #0x120 + add x1, sp, #0xd8 + add x2, sp, #0x120 + bl p521_jscalarmul_mul_p521 + add x0, sp, #0x90 + add x1, sp, #0xd8 + add x2, sp, #0x90 + bl p521_jscalarmul_mul_p521 + mov x0, sp + mov x1, sp + add x2, sp, #0x120 + bl p521_jscalarmul_sub_p521 + add x0, sp, #0xd8 + add x1, sp, #0x90 + add x2, sp, #0x120 + bl p521_jscalarmul_sub_p521 + add x0, sp, #0x168 + add x1, sp, #0x168 + add x2, x27, #0x90 + bl p521_jscalarmul_mul_p521 + mov x0, sp + mov x1, sp + add x2, sp, #0x90 + bl p521_jscalarmul_sub_p521 + add x0, sp, #0x120 + add x1, sp, #0x120 + mov x2, sp + bl p521_jscalarmul_sub_p521 + add x0, sp, #0xd8 + add x1, sp, #0xd8 + add x2, sp, #0x1f8 + bl p521_jscalarmul_mul_p521 + add x0, sp, #0x168 + add x1, sp, #0x168 + add x2, x28, #0x90 + bl p521_jscalarmul_mul_p521 + add x0, sp, #0x120 + add x1, sp, #0x48 + add x2, sp, #0x120 + bl p521_jscalarmul_mul_p521 + add x0, sp, #0x120 + add x1, sp, #0x120 + add x2, sp, #0xd8 + bl p521_jscalarmul_sub_p521 + ldp x0, x1, [x27, #144] + ldp x2, x3, [x27, #160] + ldp x4, x5, [x27, #176] + ldp x6, x7, [x27, #192] + ldr x8, [x27, #208] + orr x20, x0, x1 + orr x21, x2, x3 + orr x22, x4, x5 + orr x23, x6, x7 + orr x20, x20, x21 + orr x22, x22, x23 + orr x20, x20, x8 + orr x20, x20, x22 + cmp x20, xzr + cset x20, ne + ldp x10, x11, [x28, #144] + ldp x12, x13, [x28, #160] + ldp x14, x15, [x28, #176] + ldp x16, x17, [x28, #192] + ldr x19, [x28, #208] + orr x21, x10, x11 + orr x22, x12, x13 + orr x23, x14, x15 + orr x24, x16, x17 + orr x21, x21, x22 + orr x23, x23, x24 + orr x21, x21, x19 + orr x21, x21, x23 + csel x0, x0, x10, ne + csel x1, x1, x11, ne + csel x2, x2, x12, ne + csel x3, x3, x13, ne + csel x4, x4, x14, ne + csel x5, x5, x15, ne + csel x6, x6, x16, ne + csel x7, x7, x17, ne + csel x8, x8, x19, ne + cmp x21, xzr + cset x21, ne + cmp x21, x20 + ldp x10, x11, [sp, #360] + ldp x12, x13, [sp, #376] + ldp x14, x15, [sp, #392] + ldp x16, x17, [sp, #408] + ldr x19, [sp, #424] + csel x0, x0, x10, ne + csel x1, x1, x11, ne + csel x2, x2, x12, ne + csel x3, x3, x13, ne + csel x4, x4, x14, ne + csel x5, x5, x15, ne + csel x6, x6, x16, ne + csel x7, x7, x17, ne + csel x8, x8, x19, ne + stp x0, x1, [sp, #360] + stp x2, x3, [sp, #376] + stp x4, x5, [sp, #392] + stp x6, x7, [sp, #408] + str x8, [sp, #424] + ldp x20, x21, [x27] + ldp x0, x1, [sp] + csel x0, x20, x0, cc + csel x1, x21, x1, cc + ldp x20, x21, [x28] + csel x0, x20, x0, hi + csel x1, x21, x1, hi + ldp x20, x21, [x27, #16] + ldp x2, x3, [sp, #16] + csel x2, x20, x2, cc + csel x3, x21, x3, cc + ldp x20, x21, [x28, #16] + csel x2, x20, x2, hi + csel x3, x21, x3, hi + ldp x20, x21, [x27, #32] + ldp x4, x5, [sp, #32] + csel x4, x20, x4, cc + csel x5, x21, x5, cc + ldp x20, x21, [x28, #32] + csel x4, x20, x4, hi + csel x5, x21, x5, hi + ldp x20, x21, [x27, #48] + ldp x6, x7, [sp, #48] + csel x6, x20, x6, cc + csel x7, x21, x7, cc + ldp x20, x21, [x28, #48] + csel x6, x20, x6, hi + csel x7, x21, x7, hi + ldr x20, [x27, #64] + ldr x8, [sp, #64] + csel x8, x20, x8, cc + ldr x21, [x28, #64] + csel x8, x21, x8, hi + ldp x20, x21, [x27, #72] + ldp x10, x11, [sp, #288] + csel x10, x20, x10, cc + csel x11, x21, x11, cc + ldp x20, x21, [x28, #72] + csel x10, x20, x10, hi + csel x11, x21, x11, hi + ldp x20, x21, [x27, #88] + ldp x12, x13, [sp, #304] + csel x12, x20, x12, cc + csel x13, x21, x13, cc + ldp x20, x21, [x28, #88] + csel x12, x20, x12, hi + csel x13, x21, x13, hi + ldp x20, x21, [x27, #104] + ldp x14, x15, [sp, #320] + csel x14, x20, x14, cc + csel x15, x21, x15, cc + ldp x20, x21, [x28, #104] + csel x14, x20, x14, hi + csel x15, x21, x15, hi + ldp x20, x21, [x27, #120] + ldp x16, x17, [sp, #336] + csel x16, x20, x16, cc + csel x17, x21, x17, cc + ldp x20, x21, [x28, #120] + csel x16, x20, x16, hi + csel x17, x21, x17, hi + ldr x20, [x27, #136] + ldr x19, [sp, #352] + csel x19, x20, x19, cc + ldr x21, [x28, #136] + csel x19, x21, x19, hi + stp x0, x1, [x26] + stp x2, x3, [x26, #16] + stp x4, x5, [x26, #32] + stp x6, x7, [x26, #48] + str x8, [x26, #64] + ldp x0, x1, [sp, #360] + ldp x2, x3, [sp, #376] + ldp x4, x5, [sp, #392] + ldp x6, x7, [sp, #408] + ldr x8, [sp, #424] + stp x10, x11, [x26, #72] + stp x12, x13, [x26, #88] + stp x14, x15, [x26, #104] + stp x16, x17, [x26, #120] + str x19, [x26, #136] + stp x0, x1, [x26, #144] + stp x2, x3, [x26, #160] + stp x4, x5, [x26, #176] + stp x6, x7, [x26, #192] + str x8, [x26, #208] + add sp, sp, #0x240 + ldp x29, x30, [sp], #16 + ldp x27, x28, [sp], #16 + ldp x25, x26, [sp], #16 + ldp x23, x24, [sp], #16 + ldp x21, x22, [sp], #16 + ldp x19, x20, [sp], #16 + ret + +p521_jscalarmul_jdouble: + stp x19, x20, [sp, #-16]! + stp x21, x22, [sp, #-16]! + stp x23, x24, [sp, #-16]! + stp x25, x26, [sp, #-16]! + stp x27, x28, [sp, #-16]! + stp x29, x30, [sp, #-16]! + sub sp, sp, #0x200 + mov x26, x0 + mov x27, x1 + mov x0, sp + add x1, x27, #0x90 + bl p521_jscalarmul_sqr_p521 + add x0, sp, #0x48 + add x1, x27, #0x48 + bl p521_jscalarmul_sqr_p521 + ldp x5, x6, [x27] + ldp x4, x3, [sp] + subs x5, x5, x4 + sbcs x6, x6, x3 + ldp x7, x8, [x27, #16] + ldp x4, x3, [sp, #16] + sbcs x7, x7, x4 + sbcs x8, x8, x3 + ldp x9, x10, [x27, #32] + ldp x4, x3, [sp, #32] + sbcs x9, x9, x4 + sbcs x10, x10, x3 + ldp x11, x12, [x27, #48] + ldp x4, x3, [sp, #48] + sbcs x11, x11, x4 + sbcs x12, x12, x3 + ldr x13, [x27, #64] + ldr x4, [sp, #64] + sbcs x13, x13, x4 + sbcs x5, x5, xzr + sbcs x6, x6, xzr + sbcs x7, x7, xzr + sbcs x8, x8, xzr + sbcs x9, x9, xzr + sbcs x10, x10, xzr + sbcs x11, x11, xzr + sbcs x12, x12, xzr + sbcs x13, x13, xzr + and x13, x13, #0x1ff + stp x5, x6, [sp, #216] + stp x7, x8, [sp, #232] + stp x9, x10, [sp, #248] + stp x11, x12, [sp, #264] + str x13, [sp, #280] + cmp xzr, xzr + ldp x5, x6, [x27] + ldp x4, x3, [sp] + adcs x5, x5, x4 + adcs x6, x6, x3 + ldp x7, x8, [x27, #16] + ldp x4, x3, [sp, #16] + adcs x7, x7, x4 + adcs x8, x8, x3 + ldp x9, x10, [x27, #32] + ldp x4, x3, [sp, #32] + adcs x9, x9, x4 + adcs x10, x10, x3 + ldp x11, x12, [x27, #48] + ldp x4, x3, [sp, #48] + adcs x11, x11, x4 + adcs x12, x12, x3 + ldr x13, [x27, #64] + ldr x4, [sp, #64] + adc x13, x13, x4 + subs x4, x13, #0x200 + csetm x4, cs + sbcs x5, x5, xzr + and x4, x4, #0x200 + sbcs x6, x6, xzr + sbcs x7, x7, xzr + sbcs x8, x8, xzr + sbcs x9, x9, xzr + sbcs x10, x10, xzr + sbcs x11, x11, xzr + sbcs x12, x12, xzr + sbc x13, x13, x4 + stp x5, x6, [sp, #144] + stp x7, x8, [sp, #160] + stp x9, x10, [sp, #176] + stp x11, x12, [sp, #192] + str x13, [sp, #208] + add x0, sp, #0xd8 + add x1, sp, #0x90 + add x2, sp, #0xd8 + bl p521_jscalarmul_mul_p521 + cmp xzr, xzr + ldp x5, x6, [x27, #72] + ldp x4, x3, [x27, #144] + adcs x5, x5, x4 + adcs x6, x6, x3 + ldp x7, x8, [x27, #88] + ldp x4, x3, [x27, #160] + adcs x7, x7, x4 + adcs x8, x8, x3 + ldp x9, x10, [x27, #104] + ldp x4, x3, [x27, #176] + adcs x9, x9, x4 + adcs x10, x10, x3 + ldp x11, x12, [x27, #120] + ldp x4, x3, [x27, #192] + adcs x11, x11, x4 + adcs x12, x12, x3 + ldr x13, [x27, #136] + ldr x4, [x27, #208] + adc x13, x13, x4 + subs x4, x13, #0x200 + csetm x4, cs + sbcs x5, x5, xzr + and x4, x4, #0x200 + sbcs x6, x6, xzr + sbcs x7, x7, xzr + sbcs x8, x8, xzr + sbcs x9, x9, xzr + sbcs x10, x10, xzr + sbcs x11, x11, xzr + sbcs x12, x12, xzr + sbc x13, x13, x4 + stp x5, x6, [sp, #144] + stp x7, x8, [sp, #160] + stp x9, x10, [sp, #176] + stp x11, x12, [sp, #192] + str x13, [sp, #208] + add x0, sp, #0x120 + add x1, x27, #0x0 + add x2, sp, #0x48 + bl p521_jscalarmul_mul_p521 + add x0, sp, #0x168 + add x1, sp, #0xd8 + bl p521_jscalarmul_sqr_p521 + add x0, sp, #0x90 + add x1, sp, #0x90 + bl p521_jscalarmul_sqr_p521 + ldp x6, x7, [sp, #288] + mov x1, #0xc + mul x3, x1, x6 + mul x4, x1, x7 + umulh x6, x1, x6 + adds x4, x4, x6 + umulh x7, x1, x7 + ldp x8, x9, [sp, #304] + mul x5, x1, x8 + mul x6, x1, x9 + umulh x8, x1, x8 + adcs x5, x5, x7 + umulh x9, x1, x9 + adcs x6, x6, x8 + ldp x10, x11, [sp, #320] + mul x7, x1, x10 + mul x8, x1, x11 + umulh x10, x1, x10 + adcs x7, x7, x9 + umulh x11, x1, x11 + adcs x8, x8, x10 + ldp x12, x13, [sp, #336] + mul x9, x1, x12 + mul x10, x1, x13 + umulh x12, x1, x12 + adcs x9, x9, x11 + umulh x13, x1, x13 + adcs x10, x10, x12 + ldr x14, [sp, #352] + mul x11, x1, x14 + adc x11, x11, x13 + mov x1, #0x9 + ldp x20, x21, [sp, #360] + mvn x20, x20 + mul x0, x1, x20 + umulh x20, x1, x20 + adds x3, x3, x0 + mvn x21, x21 + mul x0, x1, x21 + umulh x21, x1, x21 + adcs x4, x4, x0 + ldp x22, x23, [sp, #376] + mvn x22, x22 + mul x0, x1, x22 + umulh x22, x1, x22 + adcs x5, x5, x0 + mvn x23, x23 + mul x0, x1, x23 + umulh x23, x1, x23 + adcs x6, x6, x0 + ldp x17, x19, [sp, #392] + mvn x17, x17 + mul x0, x1, x17 + umulh x17, x1, x17 + adcs x7, x7, x0 + mvn x19, x19 + mul x0, x1, x19 + umulh x19, x1, x19 + adcs x8, x8, x0 + ldp x2, x16, [sp, #408] + mvn x2, x2 + mul x0, x1, x2 + umulh x2, x1, x2 + adcs x9, x9, x0 + mvn x16, x16 + mul x0, x1, x16 + umulh x16, x1, x16 + adcs x10, x10, x0 + ldr x0, [sp, #424] + eor x0, x0, #0x1ff + mul x0, x1, x0 + adc x11, x11, x0 + adds x4, x4, x20 + adcs x5, x5, x21 + and x15, x4, x5 + adcs x6, x6, x22 + and x15, x15, x6 + adcs x7, x7, x23 + and x15, x15, x7 + adcs x8, x8, x17 + and x15, x15, x8 + adcs x9, x9, x19 + and x15, x15, x9 + adcs x10, x10, x2 + and x15, x15, x10 + adc x11, x11, x16 + lsr x12, x11, #9 + orr x11, x11, #0xfffffffffffffe00 + cmp xzr, xzr + adcs xzr, x3, x12 + adcs xzr, x15, xzr + adcs xzr, x11, xzr + adcs x3, x3, x12 + adcs x4, x4, xzr + adcs x5, x5, xzr + adcs x6, x6, xzr + adcs x7, x7, xzr + adcs x8, x8, xzr + adcs x9, x9, xzr + adcs x10, x10, xzr + adc x11, x11, xzr + and x11, x11, #0x1ff + stp x3, x4, [sp, #360] + stp x5, x6, [sp, #376] + stp x7, x8, [sp, #392] + stp x9, x10, [sp, #408] + str x11, [sp, #424] + ldp x5, x6, [sp, #144] + ldp x4, x3, [sp] + subs x5, x5, x4 + sbcs x6, x6, x3 + ldp x7, x8, [sp, #160] + ldp x4, x3, [sp, #16] + sbcs x7, x7, x4 + sbcs x8, x8, x3 + ldp x9, x10, [sp, #176] + ldp x4, x3, [sp, #32] + sbcs x9, x9, x4 + sbcs x10, x10, x3 + ldp x11, x12, [sp, #192] + ldp x4, x3, [sp, #48] + sbcs x11, x11, x4 + sbcs x12, x12, x3 + ldr x13, [sp, #208] + ldr x4, [sp, #64] + sbcs x13, x13, x4 + sbcs x5, x5, xzr + sbcs x6, x6, xzr + sbcs x7, x7, xzr + sbcs x8, x8, xzr + sbcs x9, x9, xzr + sbcs x10, x10, xzr + sbcs x11, x11, xzr + sbcs x12, x12, xzr + sbcs x13, x13, xzr + and x13, x13, #0x1ff + stp x5, x6, [sp, #144] + stp x7, x8, [sp, #160] + stp x9, x10, [sp, #176] + stp x11, x12, [sp, #192] + str x13, [sp, #208] + mov x0, sp + add x1, sp, #0x48 + bl p521_jscalarmul_sqr_p521 + add x0, sp, #0xd8 + add x1, sp, #0x168 + add x2, sp, #0xd8 + bl p521_jscalarmul_mul_p521 + ldp x5, x6, [sp, #144] + ldp x4, x3, [sp, #72] + subs x5, x5, x4 + sbcs x6, x6, x3 + ldp x7, x8, [sp, #160] + ldp x4, x3, [sp, #88] + sbcs x7, x7, x4 + sbcs x8, x8, x3 + ldp x9, x10, [sp, #176] + ldp x4, x3, [sp, #104] + sbcs x9, x9, x4 + sbcs x10, x10, x3 + ldp x11, x12, [sp, #192] + ldp x4, x3, [sp, #120] + sbcs x11, x11, x4 + sbcs x12, x12, x3 + ldr x13, [sp, #208] + ldr x4, [sp, #136] + sbcs x13, x13, x4 + sbcs x5, x5, xzr + sbcs x6, x6, xzr + sbcs x7, x7, xzr + sbcs x8, x8, xzr + sbcs x9, x9, xzr + sbcs x10, x10, xzr + sbcs x11, x11, xzr + sbcs x12, x12, xzr + sbcs x13, x13, xzr + and x13, x13, #0x1ff + stp x5, x6, [x26, #144] + stp x7, x8, [x26, #160] + stp x9, x10, [x26, #176] + stp x11, x12, [x26, #192] + str x13, [x26, #208] + ldp x6, x7, [sp, #288] + lsl x3, x6, #2 + extr x4, x7, x6, #62 + ldp x8, x9, [sp, #304] + extr x5, x8, x7, #62 + extr x6, x9, x8, #62 + ldp x10, x11, [sp, #320] + extr x7, x10, x9, #62 + extr x8, x11, x10, #62 + ldp x12, x13, [sp, #336] + extr x9, x12, x11, #62 + extr x10, x13, x12, #62 + ldr x14, [sp, #352] + extr x11, x14, x13, #62 + ldp x0, x1, [sp, #360] + mvn x0, x0 + adds x3, x3, x0 + sbcs x4, x4, x1 + ldp x0, x1, [sp, #376] + sbcs x5, x5, x0 + and x15, x4, x5 + sbcs x6, x6, x1 + and x15, x15, x6 + ldp x0, x1, [sp, #392] + sbcs x7, x7, x0 + and x15, x15, x7 + sbcs x8, x8, x1 + and x15, x15, x8 + ldp x0, x1, [sp, #408] + sbcs x9, x9, x0 + and x15, x15, x9 + sbcs x10, x10, x1 + and x15, x15, x10 + ldr x0, [sp, #424] + eor x0, x0, #0x1ff + adc x11, x11, x0 + lsr x12, x11, #9 + orr x11, x11, #0xfffffffffffffe00 + cmp xzr, xzr + adcs xzr, x3, x12 + adcs xzr, x15, xzr + adcs xzr, x11, xzr + adcs x3, x3, x12 + adcs x4, x4, xzr + adcs x5, x5, xzr + adcs x6, x6, xzr + adcs x7, x7, xzr + adcs x8, x8, xzr + adcs x9, x9, xzr + adcs x10, x10, xzr + adc x11, x11, xzr + and x11, x11, #0x1ff + stp x3, x4, [x26] + stp x5, x6, [x26, #16] + stp x7, x8, [x26, #32] + stp x9, x10, [x26, #48] + str x11, [x26, #64] + ldp x6, x7, [sp, #216] + lsl x3, x6, #1 + adds x3, x3, x6 + extr x4, x7, x6, #63 + adcs x4, x4, x7 + ldp x8, x9, [sp, #232] + extr x5, x8, x7, #63 + adcs x5, x5, x8 + extr x6, x9, x8, #63 + adcs x6, x6, x9 + ldp x10, x11, [sp, #248] + extr x7, x10, x9, #63 + adcs x7, x7, x10 + extr x8, x11, x10, #63 + adcs x8, x8, x11 + ldp x12, x13, [sp, #264] + extr x9, x12, x11, #63 + adcs x9, x9, x12 + extr x10, x13, x12, #63 + adcs x10, x10, x13 + ldr x14, [sp, #280] + extr x11, x14, x13, #63 + adc x11, x11, x14 + ldp x20, x21, [sp] + mvn x20, x20 + lsl x0, x20, #3 + adds x3, x3, x0 + mvn x21, x21 + extr x0, x21, x20, #61 + adcs x4, x4, x0 + ldp x22, x23, [sp, #16] + mvn x22, x22 + extr x0, x22, x21, #61 + adcs x5, x5, x0 + and x15, x4, x5 + mvn x23, x23 + extr x0, x23, x22, #61 + adcs x6, x6, x0 + and x15, x15, x6 + ldp x20, x21, [sp, #32] + mvn x20, x20 + extr x0, x20, x23, #61 + adcs x7, x7, x0 + and x15, x15, x7 + mvn x21, x21 + extr x0, x21, x20, #61 + adcs x8, x8, x0 + and x15, x15, x8 + ldp x22, x23, [sp, #48] + mvn x22, x22 + extr x0, x22, x21, #61 + adcs x9, x9, x0 + and x15, x15, x9 + mvn x23, x23 + extr x0, x23, x22, #61 + adcs x10, x10, x0 + and x15, x15, x10 + ldr x0, [sp, #64] + eor x0, x0, #0x1ff + extr x0, x0, x23, #61 + adc x11, x11, x0 + lsr x12, x11, #9 + orr x11, x11, #0xfffffffffffffe00 + cmp xzr, xzr + adcs xzr, x3, x12 + adcs xzr, x15, xzr + adcs xzr, x11, xzr + adcs x3, x3, x12 + adcs x4, x4, xzr + adcs x5, x5, xzr + adcs x6, x6, xzr + adcs x7, x7, xzr + adcs x8, x8, xzr + adcs x9, x9, xzr + adcs x10, x10, xzr + adc x11, x11, xzr + and x11, x11, #0x1ff + stp x3, x4, [x26, #72] + stp x5, x6, [x26, #88] + stp x7, x8, [x26, #104] + stp x9, x10, [x26, #120] + str x11, [x26, #136] + add sp, sp, #0x200 + ldp x29, x30, [sp], #16 + ldp x27, x28, [sp], #16 + ldp x25, x26, [sp], #16 + ldp x23, x24, [sp], #16 + ldp x21, x22, [sp], #16 + ldp x19, x20, [sp], #16 + ret + +p521_jscalarmul_mul_p521: + stp x19, x20, [sp, #-16]! + stp x21, x22, [sp, #-16]! + stp x23, x24, [sp, #-16]! + stp x25, x26, [sp, #-16]! + sub sp, sp, #80 + ldr q6, [x2] + ldp x10, x17, [x1, #16] + ldr q4, [x1] + ldr q16, [x2, #32] + ldp x5, x20, [x2, #16] + ldr q2, [x1, #32] + movi v31.2D, #0x00000000ffffffff + uzp2 v17.4S, v6.4S, v6.4S + rev64 v7.4S, v6.4S + ldp x15, x21, [x1] + xtn v25.2S, v6.2D + xtn v22.2S, v4.2D + subs x14, x10, x17 + mul v7.4S, v7.4S, v4.4S + csetm x8, cc + rev64 v3.4S, v16.4S + xtn v1.2S, v16.2D + ldp x13, x16, [x2] + mul x26, x10, x5 + uzp2 v16.4S, v16.4S, v16.4S + uaddlp v26.2D, v7.4S + cneg x4, x14, cc + subs x24, x15, x21 + xtn v5.2S, v2.2D + mul v28.4S, v3.4S, v2.4S + shl v26.2D, v26.2D, #32 + mul x22, x17, x20 + umull v20.2D, v22.2S, v25.2S + uzp2 v6.4S, v4.4S, v4.4S + umull v18.2D, v22.2S, v17.2S + uzp2 v4.4S, v2.4S, v2.4S + cneg x14, x24, cc + csetm x7, cc + umulh x11, x17, x20 + usra v18.2D, v20.2D, #32 + uaddlp v7.2D, v28.4S + subs x19, x16, x13 + umlal v26.2D, v22.2S, v25.2S + cneg x19, x19, cc + shl v28.2D, v7.2D, #32 + umull v7.2D, v5.2S, v1.2S + umull v30.2D, v5.2S, v16.2S + cinv x6, x7, cc + mul x25, x14, x19 + umlal v28.2D, v5.2S, v1.2S + umull v21.2D, v6.2S, v17.2S + umulh x14, x14, x19 + usra v30.2D, v7.2D, #32 + subs x9, x20, x5 + and v29.16B, v18.16B, v31.16B + cinv x23, x8, cc + mov x8, v26.d[1] + cneg x12, x9, cc + usra v21.2D, v18.2D, #32 + umlal v29.2D, v6.2S, v25.2S + mul x24, x4, x12 + umull v18.2D, v4.2S, v16.2S + movi v25.2D, #0x00000000ffffffff + eor x9, x14, x6 + and v7.16B, v30.16B, v25.16B + usra v21.2D, v29.2D, #32 + umulh x7, x10, x5 + usra v18.2D, v30.2D, #32 + umlal v7.2D, v4.2S, v1.2S + mov x19, v21.d[0] + umulh x3, x4, x12 + mov x14, v21.d[1] + usra v18.2D, v7.2D, #32 + adds x4, x8, x19 + mov x8, v26.d[0] + adcs x19, x26, x14 + adcs x14, x22, x7 + adc x12, x11, xzr + adds x11, x4, x8 + adcs x26, x19, x4 + adcs x22, x14, x19 + eor x4, x24, x23 + adcs x14, x12, x14 + eor x7, x25, x6 + adc x25, xzr, x12 + eor x19, x3, x23 + adds x3, x26, x8 + adcs x24, x22, x11 + adcs x12, x14, x26 + adcs x22, x25, x22 + adcs x26, xzr, x14 + adc x14, xzr, x25 + cmn x23, #0x1 + adcs x22, x22, x4 + adcs x19, x26, x19 + adc x25, x14, x23 + subs x14, x21, x17 + cneg x23, x14, cc + csetm x26, cc + subs x4, x20, x16 + cneg x14, x4, cc + cinv x4, x26, cc + cmn x6, #0x1 + adcs x11, x11, x7 + mul x7, x23, x14 + adcs x9, x3, x9 + adcs x26, x24, x6 + umulh x3, x23, x14 + adcs x14, x12, x6 + adcs x22, x22, x6 + adcs x12, x19, x6 + extr x24, x11, x8, #55 + adc x6, x25, x6 + subs x19, x15, x17 + csetm x17, cc + cneg x23, x19, cc + subs x19, x20, x13 + lsl x25, x8, #9 + eor x8, x7, x4 + cneg x20, x19, cc + umulh x7, x23, x20 + cinv x19, x17, cc + subs x17, x15, x10 + csetm x15, cc + stp x25, x24, [sp, #32] + cneg x24, x17, cc + mul x20, x23, x20 + subs x25, x5, x13 + cneg x13, x25, cc + cinv x15, x15, cc + mul x25, x24, x13 + subs x21, x21, x10 + csetm x23, cc + cneg x17, x21, cc + subs x21, x5, x16 + umulh x13, x24, x13 + cinv x10, x23, cc + cneg x23, x21, cc + cmn x4, #0x1 + adcs x14, x14, x8 + eor x21, x3, x4 + adcs x21, x22, x21 + eor x5, x20, x19 + adcs x24, x12, x4 + mul x12, x17, x23 + eor x8, x25, x15 + adc x25, x6, x4 + cmn x15, #0x1 + adcs x6, x9, x8 + ldp x20, x8, [x2, #48] + eor x9, x13, x15 + adcs x4, x26, x9 + umulh x26, x17, x23 + ldp x17, x13, [x1, #48] + adcs x9, x14, x15 + adcs x16, x21, x15 + adcs x14, x24, x15 + eor x21, x7, x19 + mul x23, x17, x20 + adc x24, x25, x15 + cmn x19, #0x1 + adcs x7, x4, x5 + adcs x9, x9, x21 + umulh x3, x13, x8 + adcs x16, x16, x19 + adcs x22, x14, x19 + eor x5, x12, x10 + adc x12, x24, x19 + cmn x10, #0x1 + adcs x19, x7, x5 + eor x14, x26, x10 + mov x7, v28.d[1] + adcs x24, x9, x14 + extr x4, x19, x6, #55 + umulh x15, x17, x20 + mov x14, v18.d[1] + lsr x9, x19, #55 + adcs x5, x16, x10 + mov x16, v18.d[0] + adcs x19, x22, x10 + str x9, [sp, #64] + extr x25, x6, x11, #55 + adc x21, x12, x10 + subs x26, x17, x13 + stp x25, x4, [sp, #48] + stp x19, x21, [sp, #16] + csetm x6, cc + cneg x4, x26, cc + mul x19, x13, x8 + subs x11, x8, x20 + stp x24, x5, [sp] + ldp x21, x10, [x1, #32] + cinv x12, x6, cc + cneg x6, x11, cc + mov x9, v28.d[0] + umulh x25, x4, x6 + adds x22, x7, x16 + ldp x16, x5, [x2, #32] + adcs x14, x23, x14 + adcs x11, x19, x15 + adc x24, x3, xzr + adds x3, x22, x9 + adcs x15, x14, x22 + mul x22, x4, x6 + adcs x6, x11, x14 + adcs x4, x24, x11 + eor x14, x25, x12 + adc x26, xzr, x24 + subs x7, x21, x10 + csetm x23, cc + cneg x19, x7, cc + subs x24, x5, x16 + cneg x11, x24, cc + cinv x7, x23, cc + adds x25, x15, x9 + eor x23, x22, x12 + adcs x22, x6, x3 + mul x24, x19, x11 + adcs x15, x4, x15 + adcs x6, x26, x6 + umulh x19, x19, x11 + adcs x11, xzr, x4 + adc x26, xzr, x26 + cmn x12, #0x1 + adcs x4, x6, x23 + eor x6, x24, x7 + adcs x14, x11, x14 + adc x26, x26, x12 + subs x11, x10, x13 + cneg x12, x11, cc + csetm x11, cc + eor x19, x19, x7 + subs x24, x8, x5 + cinv x11, x11, cc + cneg x24, x24, cc + cmn x7, #0x1 + adcs x3, x3, x6 + mul x23, x12, x24 + adcs x25, x25, x19 + adcs x6, x22, x7 + umulh x19, x12, x24 + adcs x22, x15, x7 + adcs x12, x4, x7 + eor x24, x23, x11 + adcs x4, x14, x7 + adc x26, x26, x7 + eor x19, x19, x11 + subs x14, x21, x17 + cneg x7, x14, cc + csetm x14, cc + subs x23, x20, x16 + cinv x14, x14, cc + cneg x23, x23, cc + cmn x11, #0x1 + adcs x22, x22, x24 + mul x24, x7, x23 + adcs x15, x12, x19 + adcs x4, x4, x11 + adc x19, x26, x11 + umulh x26, x7, x23 + subs x7, x21, x13 + eor x11, x24, x14 + cneg x23, x7, cc + csetm x12, cc + subs x7, x8, x16 + cneg x7, x7, cc + cinv x12, x12, cc + cmn x14, #0x1 + eor x26, x26, x14 + adcs x11, x25, x11 + mul x25, x23, x7 + adcs x26, x6, x26 + adcs x6, x22, x14 + adcs x24, x15, x14 + umulh x23, x23, x7 + adcs x4, x4, x14 + adc x22, x19, x14 + eor x14, x25, x12 + eor x7, x23, x12 + cmn x12, #0x1 + adcs x14, x26, x14 + ldp x19, x25, [x2] + ldp x15, x23, [x2, #16] + adcs x26, x6, x7 + adcs x24, x24, x12 + adcs x7, x4, x12 + adc x4, x22, x12 + subs x19, x19, x16 + ldp x16, x22, [x1] + sbcs x6, x25, x5 + ldp x12, x25, [x1, #16] + sbcs x15, x15, x20 + sbcs x8, x23, x8 + csetm x23, cc + subs x21, x21, x16 + eor x16, x19, x23 + sbcs x19, x10, x22 + eor x22, x6, x23 + eor x8, x8, x23 + sbcs x6, x17, x12 + sbcs x13, x13, x25 + csetm x12, cc + subs x10, x10, x17 + cneg x17, x10, cc + csetm x25, cc + subs x5, x20, x5 + eor x10, x19, x12 + cneg x19, x5, cc + eor x20, x15, x23 + eor x21, x21, x12 + cinv x15, x25, cc + mul x25, x17, x19 + subs x16, x16, x23 + sbcs x5, x22, x23 + eor x6, x6, x12 + sbcs x20, x20, x23 + eor x22, x13, x12 + sbc x8, x8, x23 + subs x21, x21, x12 + umulh x19, x17, x19 + sbcs x10, x10, x12 + sbcs x17, x6, x12 + eor x6, x19, x15 + eor x19, x25, x15 + umulh x25, x17, x20 + sbc x13, x22, x12 + cmn x15, #0x1 + adcs x22, x14, x19 + adcs x19, x26, x6 + ldp x6, x26, [sp] + adcs x14, x24, x15 + umulh x24, x21, x16 + adcs x7, x7, x15 + adc x15, x4, x15 + adds x4, x9, x6 + eor x9, x23, x12 + adcs x12, x3, x26 + stp x4, x12, [sp] + ldp x4, x26, [sp, #16] + umulh x12, x10, x5 + ldp x6, x23, [sp, #32] + adcs x3, x11, x4 + mul x4, x13, x8 + adcs x26, x22, x26 + ldp x22, x11, [sp, #48] + adcs x6, x19, x6 + stp x3, x26, [sp, #16] + mul x26, x10, x5 + adcs x14, x14, x23 + stp x6, x14, [sp, #32] + ldr x6, [sp, #64] + adcs x22, x7, x22 + adcs x14, x15, x11 + mul x11, x17, x20 + adc x19, x6, xzr + stp x22, x14, [sp, #48] + adds x14, x26, x24 + str x19, [sp, #64] + umulh x19, x13, x8 + adcs x7, x11, x12 + adcs x22, x4, x25 + mul x6, x21, x16 + adc x19, x19, xzr + subs x11, x17, x13 + cneg x12, x11, cc + csetm x11, cc + subs x24, x8, x20 + cinv x11, x11, cc + cneg x24, x24, cc + adds x4, x14, x6 + adcs x14, x7, x14 + mul x3, x12, x24 + adcs x7, x22, x7 + adcs x22, x19, x22 + umulh x12, x12, x24 + adc x24, xzr, x19 + adds x19, x14, x6 + eor x3, x3, x11 + adcs x26, x7, x4 + adcs x14, x22, x14 + adcs x25, x24, x7 + adcs x23, xzr, x22 + eor x7, x12, x11 + adc x12, xzr, x24 + subs x22, x21, x10 + cneg x24, x22, cc + csetm x22, cc + subs x15, x5, x16 + cinv x22, x22, cc + cneg x15, x15, cc + cmn x11, #0x1 + adcs x3, x25, x3 + mul x25, x24, x15 + adcs x23, x23, x7 + adc x11, x12, x11 + subs x7, x10, x13 + umulh x15, x24, x15 + cneg x12, x7, cc + csetm x7, cc + eor x24, x25, x22 + eor x25, x15, x22 + cmn x22, #0x1 + adcs x24, x4, x24 + adcs x19, x19, x25 + adcs x15, x26, x22 + adcs x4, x14, x22 + adcs x26, x3, x22 + adcs x25, x23, x22 + adc x23, x11, x22 + subs x14, x21, x17 + cneg x3, x14, cc + csetm x11, cc + subs x14, x8, x5 + cneg x14, x14, cc + cinv x7, x7, cc + subs x13, x21, x13 + cneg x21, x13, cc + csetm x13, cc + mul x22, x12, x14 + subs x8, x8, x16 + cinv x13, x13, cc + umulh x14, x12, x14 + cneg x12, x8, cc + subs x8, x20, x16 + cneg x8, x8, cc + cinv x16, x11, cc + eor x22, x22, x7 + cmn x7, #0x1 + eor x14, x14, x7 + adcs x4, x4, x22 + mul x11, x3, x8 + adcs x22, x26, x14 + adcs x14, x25, x7 + eor x25, x24, x9 + adc x26, x23, x7 + umulh x7, x3, x8 + subs x17, x10, x17 + cneg x24, x17, cc + eor x3, x11, x16 + csetm x11, cc + subs x20, x20, x5 + cneg x5, x20, cc + cinv x11, x11, cc + cmn x16, #0x1 + mul x17, x21, x12 + eor x8, x7, x16 + adcs x10, x19, x3 + and x19, x9, #0x1ff + adcs x20, x15, x8 + umulh x15, x21, x12 + eor x12, x10, x9 + eor x8, x6, x9 + adcs x6, x4, x16 + adcs x4, x22, x16 + adcs x21, x14, x16 + adc x7, x26, x16 + mul x10, x24, x5 + cmn x13, #0x1 + ldp x3, x14, [x1] + eor x17, x17, x13 + umulh x5, x24, x5 + adcs x20, x20, x17 + eor x17, x15, x13 + adcs x16, x6, x17 + eor x22, x10, x11 + adcs x23, x4, x13 + extr x10, x14, x3, #52 + and x26, x3, #0xfffffffffffff + adcs x24, x21, x13 + and x15, x10, #0xfffffffffffff + adc x6, x7, x13 + cmn x11, #0x1 + adcs x17, x20, x22 + eor x4, x5, x11 + ldp x21, x10, [sp] + adcs x7, x16, x4 + eor x16, x17, x9 + eor x13, x7, x9 + ldp x3, x17, [sp, #16] + adcs x7, x23, x11 + eor x23, x7, x9 + ldp x5, x22, [sp, #32] + adcs x7, x24, x11 + adc x24, x6, x11 + ldr x6, [x2, #64] + adds x20, x8, x21 + lsl x11, x20, #9 + eor x4, x7, x9 + orr x7, x11, x19 + eor x8, x24, x9 + adcs x11, x25, x10 + mul x26, x6, x26 + ldp x19, x24, [sp, #48] + adcs x12, x12, x3 + adcs x16, x16, x17 + adcs x9, x13, x5 + ldr x25, [sp, #64] + extr x20, x11, x20, #55 + adcs x13, x23, x22 + adcs x4, x4, x19 + extr x23, x12, x11, #55 + adcs x8, x8, x24 + adc x11, x25, xzr + adds x21, x9, x21 + extr x9, x16, x12, #55 + lsr x12, x16, #55 + adcs x10, x13, x10 + mul x15, x6, x15 + adcs x13, x4, x3 + ldp x16, x4, [x2] + ldr x3, [x1, #64] + adcs x17, x8, x17 + adcs x5, x5, x7 + adcs x20, x22, x20 + adcs x8, x19, x23 + and x22, x16, #0xfffffffffffff + ldp x19, x7, [x1, #16] + adcs x9, x24, x9 + extr x24, x4, x16, #52 + adc x16, x12, x25 + mul x22, x3, x22 + and x25, x24, #0xfffffffffffff + extr x14, x19, x14, #40 + and x12, x14, #0xfffffffffffff + extr x23, x7, x19, #28 + ldp x19, x24, [x2, #16] + mul x14, x3, x25 + and x23, x23, #0xfffffffffffff + add x22, x26, x22 + lsl x11, x11, #48 + lsr x26, x22, #52 + lsl x25, x22, #12 + mul x22, x6, x12 + extr x12, x19, x4, #40 + add x4, x15, x14 + mul x15, x6, x23 + add x4, x4, x26 + extr x23, x24, x19, #28 + ldp x14, x19, [x1, #32] + and x26, x12, #0xfffffffffffff + extr x12, x4, x25, #12 + and x25, x23, #0xfffffffffffff + adds x21, x21, x12 + mul x12, x3, x26 + extr x23, x14, x7, #16 + and x23, x23, #0xfffffffffffff + mul x7, x3, x25 + ldp x25, x26, [x2, #32] + add x12, x22, x12 + extr x22, x19, x14, #56 + mul x23, x6, x23 + lsr x14, x14, #4 + extr x24, x25, x24, #16 + add x7, x15, x7 + and x15, x24, #0xfffffffffffff + and x22, x22, #0xfffffffffffff + lsr x24, x4, #52 + mul x15, x3, x15 + and x14, x14, #0xfffffffffffff + add x12, x12, x24 + lsl x24, x4, #12 + lsr x4, x12, #52 + extr x24, x12, x24, #24 + adcs x10, x10, x24 + lsl x24, x12, #12 + add x12, x7, x4 + mul x22, x6, x22 + add x4, x23, x15 + extr x7, x12, x24, #36 + adcs x13, x13, x7 + lsl x15, x12, #12 + add x7, x4, x11 + lsr x24, x12, #52 + ldp x23, x11, [x2, #48] + add x4, x7, x24 + mul x12, x6, x14 + extr x7, x26, x25, #56 + extr x14, x4, x15, #48 + and x2, x7, #0xfffffffffffff + extr x24, x11, x23, #32 + ldp x15, x7, [x1, #48] + and x1, x24, #0xfffffffffffff + lsr x24, x4, #52 + mul x2, x3, x2 + extr x26, x23, x26, #44 + lsr x23, x25, #4 + and x23, x23, #0xfffffffffffff + and x25, x26, #0xfffffffffffff + extr x26, x7, x15, #32 + extr x19, x15, x19, #44 + mul x23, x3, x23 + and x15, x26, #0xfffffffffffff + lsl x26, x4, #12 + and x4, x19, #0xfffffffffffff + lsr x11, x11, #20 + mul x19, x6, x4 + adcs x17, x17, x14 + add x14, x22, x2 + add x22, x12, x23 + lsr x7, x7, #20 + add x22, x22, x24 + extr x2, x22, x26, #60 + mul x24, x3, x25 + lsr x22, x22, #52 + add x14, x14, x22 + lsl x22, x2, #8 + extr x22, x14, x22, #8 + lsl x2, x14, #12 + mul x1, x3, x1 + adcs x12, x5, x22 + mul x5, x6, x15 + and x26, x10, x13 + and x4, x26, x17 + add x23, x19, x24 + lsr x14, x14, #52 + mul x22, x3, x11 + add x11, x23, x14 + extr x25, x11, x2, #20 + lsl x19, x11, #12 + adcs x25, x20, x25 + and x14, x4, x12 + add x1, x5, x1 + and x14, x14, x25 + mul x15, x6, x7 + add x26, x15, x22 + mul x6, x6, x3 + lsr x22, x11, #52 + add x4, x1, x22 + lsr x1, x4, #52 + extr x3, x4, x19, #32 + lsl x15, x4, #12 + add x7, x26, x1 + adcs x23, x8, x3 + extr x20, x7, x15, #44 + and x3, x14, x23 + lsr x19, x7, #44 + adcs x7, x9, x20 + add x11, x6, x19 + adc x4, x16, x11 + lsr x14, x4, #9 + cmp xzr, xzr + and x15, x3, x7 + orr x3, x4, #0xfffffffffffffe00 + adcs xzr, x21, x14 + adcs xzr, x15, xzr + adcs xzr, x3, xzr + adcs x11, x21, x14 + and x14, x11, #0x1ff + adcs x1, x10, xzr + extr x10, x1, x11, #9 + str x14, [x0, #64] + adcs x14, x13, xzr + extr x11, x14, x1, #9 + adcs x1, x17, xzr + extr x4, x1, x14, #9 + stp x10, x11, [x0] + adcs x11, x12, xzr + extr x14, x11, x1, #9 + adcs x10, x25, xzr + extr x11, x10, x11, #9 + stp x4, x14, [x0, #16] + adcs x14, x23, xzr + extr x10, x14, x10, #9 + adcs x1, x7, xzr + stp x11, x10, [x0, #32] + extr x14, x1, x14, #9 + adc x10, x3, xzr + extr x26, x10, x1, #9 + stp x14, x26, [x0, #48] + add sp, sp, #80 + ldp x25, x26, [sp], #16 + ldp x23, x24, [sp], #16 + ldp x21, x22, [sp], #16 + ldp x19, x20, [sp], #16 + ret + +p521_jscalarmul_sqr_p521: + stp x19, x20, [sp, #-16]! + stp x21, x22, [sp, #-16]! + stp x23, x24, [sp, #-16]! + ldr q23, [x1, #32] + ldp x9, x2, [x1, #32] + ldr q16, [x1, #32] + ldr q20, [x1, #48] + ldp x6, x13, [x1, #48] + rev64 v2.4S, v23.4S + mul x14, x9, x2 + ldr q31, [x1, #48] + subs x22, x9, x2 + uzp2 v26.4S, v23.4S, v23.4S + mul v30.4S, v2.4S, v16.4S + xtn v0.2S, v20.2D + csetm x12, cc + xtn v21.2S, v16.2D + xtn v23.2S, v23.2D + umulh x10, x9, x6 + rev64 v27.4S, v31.4S + umull v2.2D, v21.2S, v26.2S + cneg x23, x22, cc + uaddlp v25.2D, v30.4S + umull v18.2D, v21.2S, v23.2S + mul x22, x9, x6 + mul v6.4S, v27.4S, v20.4S + uzp2 v17.4S, v20.4S, v20.4S + shl v20.2D, v25.2D, #32 + uzp2 v27.4S, v31.4S, v31.4S + mul x16, x2, x13 + umlal v20.2D, v21.2S, v23.2S + usra v2.2D, v18.2D, #32 + adds x8, x22, x10 + umull v25.2D, v17.2S, v27.2S + xtn v31.2S, v31.2D + movi v1.2D, #0xffffffff + adc x3, x10, xzr + umulh x21, x2, x13 + uzp2 v21.4S, v16.4S, v16.4S + umull v18.2D, v0.2S, v27.2S + subs x19, x13, x6 + and v7.16B, v2.16B, v1.16B + umull v27.2D, v0.2S, v31.2S + cneg x20, x19, cc + movi v30.2D, #0xffffffff + umull v16.2D, v21.2S, v26.2S + umlal v7.2D, v21.2S, v23.2S + mul x19, x23, x20 + cinv x7, x12, cc + uaddlp v6.2D, v6.4S + eor x12, x19, x7 + adds x11, x8, x16 + umulh x10, x23, x20 + ldr q1, [x1] + usra v16.2D, v2.2D, #32 + adcs x19, x3, x21 + shl v2.2D, v6.2D, #32 + adc x20, x21, xzr + adds x17, x19, x16 + usra v18.2D, v27.2D, #32 + adc x19, x20, xzr + cmn x7, #0x1 + umlal v2.2D, v0.2S, v31.2S + umulh x16, x9, x2 + adcs x8, x11, x12 + usra v16.2D, v7.2D, #32 + ldr x12, [x1, #64] + eor x20, x10, x7 + umulh x10, x6, x13 + mov x23, v2.d[0] + mov x3, v2.d[1] + adcs x21, x17, x20 + usra v25.2D, v18.2D, #32 + and v23.16B, v18.16B, v30.16B + adc x7, x19, x7 + adds x22, x22, x22 + ldr q7, [x1, #16] + adcs x17, x8, x8 + umlal v23.2D, v17.2S, v31.2S + mov x19, v16.d[0] + mul x11, x12, x12 + ldr q4, [x1] + usra v25.2D, v23.2D, #32 + add x5, x12, x12 + adcs x15, x21, x21 + ldr q28, [x1] + mov x12, v20.d[1] + adcs x24, x7, x7 + mov x21, v16.d[1] + adc x4, xzr, xzr + adds x19, x19, x14 + ldr q18, [x1, #16] + xtn v26.2S, v1.2D + adcs x8, x12, x16 + adc x21, x21, xzr + adds x7, x19, x14 + xtn v23.2S, v7.2D + rev64 v21.4S, v28.4S + adcs x12, x8, x16 + ldp x20, x19, [x1] + mov x16, v25.d[1] + xtn v22.2S, v28.2D + adc x14, x21, xzr + adds x8, x22, x12 + uzp2 v24.4S, v28.4S, v28.4S + rev64 v28.4S, v18.4S + mul x12, x6, x13 + mul v16.4S, v21.4S, v1.4S + shrn v31.2S, v7.2D, #32 + adcs x22, x17, x14 + mov x14, v25.d[0] + and x21, x20, #0xfffffffffffff + umull v17.2D, v26.2S, v24.2S + ldr q2, [x1, #32] + adcs x17, x15, xzr + ldr q30, [x1, #48] + umull v7.2D, v26.2S, v22.2S + adcs x15, x24, xzr + ldr q0, [x1, #16] + movi v6.2D, #0xffffffff + adc x4, x4, xzr + adds x14, x14, x12 + uzp1 v27.4S, v18.4S, v4.4S + uzp2 v19.4S, v1.4S, v1.4S + adcs x24, x3, x10 + mul x3, x5, x21 + umull v29.2D, v23.2S, v31.2S + ldr q5, [x1] + adc x21, x16, xzr + adds x16, x14, x12 + extr x12, x19, x20, #52 + umull v18.2D, v19.2S, v24.2S + adcs x24, x24, x10 + and x10, x12, #0xfffffffffffff + ldp x14, x12, [x1, #16] + usra v17.2D, v7.2D, #32 + adc x21, x21, xzr + adds x23, x23, x17 + mul x17, x5, x10 + shl v21.2D, v29.2D, #33 + lsl x10, x3, #12 + lsr x1, x3, #52 + rev64 v29.4S, v2.4S + uaddlp v25.2D, v16.4S + add x17, x17, x1 + adcs x16, x16, x15 + extr x3, x14, x19, #40 + mov x15, v20.d[0] + extr x10, x17, x10, #12 + and x3, x3, #0xfffffffffffff + shl v3.2D, v25.2D, #32 + and v6.16B, v17.16B, v6.16B + mul x1, x5, x3 + usra v18.2D, v17.2D, #32 + adcs x3, x24, x4 + extr x4, x12, x14, #28 + umlal v6.2D, v19.2S, v22.2S + xtn v20.2S, v2.2D + umlal v3.2D, v26.2S, v22.2S + movi v26.2D, #0xffffffff + lsr x24, x17, #52 + and x4, x4, #0xfffffffffffff + uzp2 v19.4S, v2.4S, v2.4S + add x1, x1, x24 + mul x24, x5, x4 + lsl x4, x17, #12 + xtn v24.2S, v5.2D + extr x17, x1, x4, #24 + adc x21, x21, xzr + umlal v21.2D, v23.2S, v23.2S + adds x4, x15, x10 + lsl x10, x1, #12 + adcs x15, x7, x17 + mul v23.4S, v28.4S, v4.4S + and x7, x4, #0x1ff + lsr x17, x1, #52 + umulh x1, x19, x12 + uzp2 v17.4S, v5.4S, v5.4S + extr x4, x15, x4, #9 + add x24, x24, x17 + mul v29.4S, v29.4S, v5.4S + extr x17, x24, x10, #36 + extr x10, x9, x12, #16 + uzp1 v28.4S, v4.4S, v4.4S + adcs x17, x8, x17 + and x8, x10, #0xfffffffffffff + umull v16.2D, v24.2S, v20.2S + extr x10, x17, x15, #9 + mul x15, x5, x8 + stp x4, x10, [x0] + lsl x4, x24, #12 + lsr x8, x9, #4 + uaddlp v4.2D, v23.4S + and x8, x8, #0xfffffffffffff + umull v23.2D, v24.2S, v19.2S + mul x8, x5, x8 + extr x10, x2, x9, #56 + lsr x24, x24, #52 + and x10, x10, #0xfffffffffffff + add x15, x15, x24 + extr x4, x15, x4, #48 + mul x24, x5, x10 + lsr x10, x15, #52 + usra v23.2D, v16.2D, #32 + add x10, x8, x10 + shl v4.2D, v4.2D, #32 + adcs x22, x22, x4 + extr x4, x6, x2, #44 + lsl x15, x15, #12 + lsr x8, x10, #52 + extr x15, x10, x15, #60 + and x10, x4, #0xfffffffffffff + umlal v4.2D, v28.2S, v27.2S + add x8, x24, x8 + extr x4, x13, x6, #32 + mul x24, x5, x10 + uzp2 v16.4S, v30.4S, v30.4S + lsl x10, x15, #8 + rev64 v28.4S, v30.4S + and x15, x4, #0xfffffffffffff + extr x4, x8, x10, #8 + mul x10, x5, x15 + lsl x15, x8, #12 + adcs x23, x23, x4 + lsr x4, x8, #52 + lsr x8, x13, #20 + add x4, x24, x4 + mul x8, x5, x8 + lsr x24, x4, #52 + extr x15, x4, x15, #20 + lsl x4, x4, #12 + add x10, x10, x24 + adcs x15, x16, x15 + extr x4, x10, x4, #32 + umulh x5, x20, x14 + adcs x3, x3, x4 + usra v18.2D, v6.2D, #32 + lsl x16, x10, #12 + extr x24, x15, x23, #9 + lsr x10, x10, #52 + uzp2 v27.4S, v0.4S, v0.4S + add x8, x8, x10 + extr x10, x3, x15, #9 + extr x4, x22, x17, #9 + and v25.16B, v23.16B, v26.16B + lsr x17, x8, #44 + extr x15, x8, x16, #44 + extr x16, x23, x22, #9 + xtn v7.2S, v30.2D + mov x8, v4.d[0] + stp x24, x10, [x0, #32] + uaddlp v30.2D, v29.4S + stp x4, x16, [x0, #16] + umulh x24, x20, x19 + adcs x15, x21, x15 + adc x16, x11, x17 + subs x11, x20, x19 + xtn v5.2S, v0.2D + csetm x17, cc + extr x3, x15, x3, #9 + mov x22, v4.d[1] + cneg x21, x11, cc + subs x10, x12, x14 + mul v31.4S, v28.4S, v0.4S + cneg x10, x10, cc + cinv x11, x17, cc + shl v4.2D, v30.2D, #32 + umull v28.2D, v5.2S, v16.2S + extr x23, x16, x15, #9 + adds x4, x8, x5 + mul x17, x21, x10 + umull v22.2D, v5.2S, v7.2S + adc x15, x5, xzr + adds x4, x4, x22 + uaddlp v2.2D, v31.4S + lsr x5, x16, #9 + adcs x16, x15, x1 + mov x15, v18.d[0] + adc x1, x1, xzr + umulh x10, x21, x10 + adds x22, x16, x22 + umlal v4.2D, v24.2S, v20.2S + umull v30.2D, v27.2S, v16.2S + stp x3, x23, [x0, #48] + add x3, x7, x5 + adc x16, x1, xzr + usra v28.2D, v22.2D, #32 + mul x23, x20, x19 + eor x1, x17, x11 + cmn x11, #0x1 + mov x17, v18.d[1] + umull v18.2D, v17.2S, v19.2S + adcs x7, x4, x1 + eor x1, x10, x11 + umlal v25.2D, v17.2S, v20.2S + movi v16.2D, #0xffffffff + adcs x22, x22, x1 + usra v18.2D, v23.2D, #32 + umulh x4, x14, x14 + adc x1, x16, x11 + adds x10, x8, x8 + shl v23.2D, v2.2D, #32 + str x3, [x0, #64] + adcs x5, x7, x7 + and v16.16B, v28.16B, v16.16B + usra v30.2D, v28.2D, #32 + adcs x7, x22, x22 + mov x21, v3.d[1] + adcs x11, x1, x1 + umlal v16.2D, v27.2S, v7.2S + adc x22, xzr, xzr + adds x16, x15, x23 + mul x8, x14, x12 + umlal v23.2D, v5.2S, v7.2S + usra v18.2D, v25.2D, #32 + umulh x15, x14, x12 + adcs x21, x21, x24 + usra v30.2D, v16.2D, #32 + adc x1, x17, xzr + adds x3, x16, x23 + adcs x21, x21, x24 + adc x1, x1, xzr + adds x24, x10, x21 + umulh x21, x12, x12 + adcs x16, x5, x1 + adcs x10, x7, xzr + mov x17, v21.d[1] + adcs x23, x11, xzr + adc x5, x22, xzr + adds x1, x4, x8 + adcs x22, x17, x15 + ldp x17, x4, [x0] + mov x11, v21.d[0] + adc x21, x21, xzr + adds x1, x1, x8 + adcs x15, x22, x15 + adc x8, x21, xzr + adds x22, x11, x10 + mov x21, v3.d[0] + adcs x11, x1, x23 + ldp x1, x10, [x0, #16] + adcs x15, x15, x5 + adc x7, x8, xzr + adds x8, x17, x21 + mov x23, v4.d[1] + ldp x5, x21, [x0, #32] + adcs x17, x4, x3 + ldr x4, [x0, #64] + mov x3, v18.d[0] + adcs x24, x1, x24 + stp x8, x17, [x0] + adcs x17, x10, x16 + ldp x1, x16, [x0, #48] + adcs x5, x5, x22 + adcs x8, x21, x11 + stp x5, x8, [x0, #32] + adcs x1, x1, x15 + mov x15, v23.d[1] + adcs x21, x16, x7 + stp x1, x21, [x0, #48] + adc x10, x4, xzr + subs x7, x14, x12 + mov x16, v18.d[1] + cneg x5, x7, cc + csetm x4, cc + subs x11, x13, x6 + mov x8, v23.d[0] + cneg x7, x11, cc + cinv x21, x4, cc + mov x11, v30.d[0] + adds x4, x23, x3 + mul x22, x5, x7 + mov x23, v30.d[1] + adcs x8, x8, x16 + adcs x16, x15, x11 + adc x11, x23, xzr + umulh x3, x5, x7 + stp x24, x17, [x0, #16] + mov x5, v4.d[0] + subs x15, x20, x19 + cneg x7, x15, cc + str x10, [x0, #64] + csetm x1, cc + subs x24, x2, x9 + cneg x17, x24, cc + cinv x15, x1, cc + adds x23, x4, x5 + umulh x1, x7, x17 + adcs x24, x8, x4 + adcs x10, x16, x8 + eor x8, x22, x21 + adcs x16, x11, x16 + mul x22, x7, x17 + eor x17, x1, x15 + adc x1, xzr, x11 + adds x11, x24, x5 + eor x7, x3, x21 + adcs x3, x10, x23 + adcs x24, x16, x24 + adcs x4, x1, x10 + eor x10, x22, x15 + adcs x16, xzr, x16 + adc x1, xzr, x1 + cmn x21, #0x1 + adcs x8, x4, x8 + adcs x22, x16, x7 + adc x7, x1, x21 + subs x21, x19, x12 + csetm x4, cc + cneg x1, x21, cc + subs x21, x13, x2 + cinv x16, x4, cc + cneg x4, x21, cc + cmn x15, #0x1 + adcs x21, x23, x10 + mul x23, x1, x4 + adcs x11, x11, x17 + adcs x3, x3, x15 + umulh x1, x1, x4 + adcs x24, x24, x15 + adcs x8, x8, x15 + adcs x22, x22, x15 + eor x17, x23, x16 + adc x15, x7, x15 + subs x7, x20, x14 + cneg x7, x7, cc + csetm x4, cc + subs x10, x20, x12 + cneg x23, x10, cc + csetm x10, cc + subs x12, x6, x9 + cinv x20, x4, cc + cneg x12, x12, cc + cmn x16, #0x1 + eor x1, x1, x16 + adcs x17, x24, x17 + mul x4, x7, x12 + adcs x8, x8, x1 + umulh x1, x7, x12 + adcs x24, x22, x16 + adc x7, x15, x16 + subs x12, x13, x9 + cneg x12, x12, cc + cinv x13, x10, cc + subs x19, x19, x14 + mul x9, x23, x12 + cneg x19, x19, cc + csetm x10, cc + eor x16, x1, x20 + subs x22, x6, x2 + umulh x12, x23, x12 + eor x1, x4, x20 + cinv x4, x10, cc + cneg x22, x22, cc + cmn x20, #0x1 + adcs x15, x11, x1 + eor x6, x12, x13 + adcs x10, x3, x16 + adcs x17, x17, x20 + eor x23, x9, x13 + adcs x2, x8, x20 + mul x11, x19, x22 + adcs x24, x24, x20 + adc x7, x7, x20 + cmn x13, #0x1 + adcs x3, x10, x23 + umulh x22, x19, x22 + adcs x17, x17, x6 + eor x12, x22, x4 + extr x22, x15, x21, #63 + adcs x8, x2, x13 + extr x21, x21, x5, #63 + ldp x16, x23, [x0] + adcs x20, x24, x13 + eor x1, x11, x4 + adc x6, x7, x13 + cmn x4, #0x1 + ldp x2, x7, [x0, #16] + adcs x1, x3, x1 + extr x19, x1, x15, #63 + adcs x14, x17, x12 + extr x1, x14, x1, #63 + lsl x17, x5, #1 + adcs x8, x8, x4 + extr x12, x8, x14, #8 + ldp x15, x11, [x0, #32] + adcs x9, x20, x4 + adc x3, x6, x4 + adds x16, x12, x16 + extr x6, x9, x8, #8 + ldp x14, x12, [x0, #48] + extr x8, x3, x9, #8 + adcs x20, x6, x23 + ldr x24, [x0, #64] + lsr x6, x3, #8 + adcs x8, x8, x2 + and x2, x1, #0x1ff + and x1, x20, x8 + adcs x4, x6, x7 + adcs x3, x17, x15 + and x1, x1, x4 + adcs x9, x21, x11 + and x1, x1, x3 + adcs x6, x22, x14 + and x1, x1, x9 + and x21, x1, x6 + adcs x14, x19, x12 + adc x1, x24, x2 + cmp xzr, xzr + orr x12, x1, #0xfffffffffffffe00 + lsr x1, x1, #9 + adcs xzr, x16, x1 + and x21, x21, x14 + adcs xzr, x21, xzr + adcs xzr, x12, xzr + adcs x21, x16, x1 + adcs x1, x20, xzr + adcs x19, x8, xzr + stp x21, x1, [x0] + adcs x1, x4, xzr + adcs x21, x3, xzr + stp x19, x1, [x0, #16] + adcs x1, x9, xzr + stp x21, x1, [x0, #32] + adcs x21, x6, xzr + adcs x1, x14, xzr + stp x21, x1, [x0, #48] + adc x1, x12, xzr + and x1, x1, #0x1ff + str x1, [x0, #64] + ldp x23, x24, [sp], #16 + ldp x21, x22, [sp], #16 + ldp x19, x20, [sp], #16 + ret + +p521_jscalarmul_sub_p521: + ldp x5, x6, [x1] + ldp x4, x3, [x2] + subs x5, x5, x4 + sbcs x6, x6, x3 + ldp x7, x8, [x1, #16] + ldp x4, x3, [x2, #16] + sbcs x7, x7, x4 + sbcs x8, x8, x3 + ldp x9, x10, [x1, #32] + ldp x4, x3, [x2, #32] + sbcs x9, x9, x4 + sbcs x10, x10, x3 + ldp x11, x12, [x1, #48] + ldp x4, x3, [x2, #48] + sbcs x11, x11, x4 + sbcs x12, x12, x3 + ldr x13, [x1, #64] + ldr x4, [x2, #64] + sbcs x13, x13, x4 + sbcs x5, x5, xzr + sbcs x6, x6, xzr + sbcs x7, x7, xzr + sbcs x8, x8, xzr + sbcs x9, x9, xzr + sbcs x10, x10, xzr + sbcs x11, x11, xzr + sbcs x12, x12, xzr + sbcs x13, x13, xzr + and x13, x13, #0x1ff + stp x5, x6, [x0] + stp x7, x8, [x0, #16] + stp x9, x10, [x0, #32] + stp x11, x12, [x0, #48] + str x13, [x0, #64] + ret + +#if defined(__linux__) && defined(__ELF__) +.section .note.GNU-stack, "", %progbits +#endif diff --git a/third_party/s2n-bignum/arm/p521/p521_jscalarmul_alt.S b/third_party/s2n-bignum/arm/p521/p521_jscalarmul_alt.S new file mode 100644 index 0000000000..89e0408d8b --- /dev/null +++ b/third_party/s2n-bignum/arm/p521/p521_jscalarmul_alt.S @@ -0,0 +1,2102 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT-0 + +// ---------------------------------------------------------------------------- +// Jacobian form scalar multiplication for P-521 +// Input scalar[9], point[27]; output res[27] +// +// extern void p521_jscalarmul_alt +// (uint64_t res[static 27], +// uint64_t scalar[static 9], +// uint64_t point[static 27]); +// +// This function is a variant of its affine point version p521_scalarmul. +// Here, input and output points are assumed to be in Jacobian form with +// a triple (x,y,z) representing the affine point (x/z^2,y/z^3) when +// z is nonzero or the point at infinity (group identity) if z = 0. +// +// Given scalar = n and point = P, assumed to be on the NIST elliptic +// curve P-521, returns a representation of n * P. If the result is the +// point at infinity (either because the input point was or because the +// scalar was a multiple of p_521) then the output is guaranteed to +// represent the point at infinity, i.e. to have its z coordinate zero. +// +// Standard ARM ABI: X0 = res, X1 = scalar, X2 = point +// ---------------------------------------------------------------------------- + +#include "_internal_s2n_bignum.h" + + S2N_BN_SYM_VISIBILITY_DIRECTIVE(p521_jscalarmul_alt) + S2N_BN_SYM_PRIVACY_DIRECTIVE(p521_jscalarmul_alt) + + .text + .balign 4 + +// Size of individual field elements + +#define NUMSIZE 72 +#define JACSIZE (3*NUMSIZE) + +// Safe copies of input res and additional values in variables. + +#define tabup x15 +#define bf x16 +#define sgn x17 +#define j x19 +#define res x20 + +// Intermediate variables on the stack. +// The table is 16 entries, each of size JACSIZE = 3 * NUMSIZE + +#define scalarb sp, #(0*NUMSIZE) +#define acc sp, #(1*NUMSIZE) +#define tabent sp, #(4*NUMSIZE) + +#define tab sp, #(7*NUMSIZE) + +// Round up to maintain stack alignment + +#define NSPACE #(55*NUMSIZE+8) + +#define selectblock(I) \ + cmp bf, #(1*I); \ + ldp x10, x11, [tabup]; \ + csel x0, x10, x0, eq; \ + csel x1, x11, x1, eq; \ + ldp x10, x11, [tabup, #16]; \ + csel x2, x10, x2, eq; \ + csel x3, x11, x3, eq; \ + ldp x10, x11, [tabup, #32]; \ + csel x4, x10, x4, eq; \ + csel x5, x11, x5, eq; \ + ldp x10, x11, [tabup, #48]; \ + csel x6, x10, x6, eq; \ + csel x7, x11, x7, eq; \ + ldr x10, [tabup, #64]; \ + csel x8, x10, x8, eq; \ + add tabup, tabup, #JACSIZE + +// Loading large constants + +#define movbig(nn,n3,n2,n1,n0) \ + movz nn, n0; \ + movk nn, n1, lsl #16; \ + movk nn, n2, lsl #32; \ + movk nn, n3, lsl #48 + +S2N_BN_SYMBOL(p521_jscalarmul_alt): + + stp x19, x20, [sp, #-16]! + stp x21, x30, [sp, #-16]! + sub sp, sp, NSPACE + +// Preserve the "res" input argument; others get processed early. + + mov res, x0 + +// Reduce the input scalar mod n_521 and store it to "scalarb". + + mov x19, x2 + add x0, scalarb + bl p521_jscalarmul_alt_bignum_mod_n521_9 + mov x2, x19 + +// Set the tab[0] table entry to the input point = 1 * P, but also +// reduce all coordinates modulo p. In principle we assume reduction +// as a precondition, but this reduces the scope for surprise, e.g. +// making sure that any input with z = 0 is treated as zero, even +// if the other coordinates are not in fact reduced. + + add x0, tab + mov x1, x19 + bl p521_jscalarmul_alt_bignum_mod_p521_9 + + add x0, tab+NUMSIZE + add x1, x19, #NUMSIZE + bl p521_jscalarmul_alt_bignum_mod_p521_9 + + add x0, tab+2*NUMSIZE + add x1, x19, #(2*NUMSIZE) + bl p521_jscalarmul_alt_bignum_mod_p521_9 + +// If bit 520 of the scalar is set, then negate the scalar mod n_521, +// i.e. do scalar |-> n_521 - scalar, and also the point to compensate +// by negating its y coordinate. This further step is not needed by +// the indexing scheme (the top window is only a couple of bits either +// way), but is convenient to exclude a problem with the specific value +// scalar = n_521 - 18, where the last Jacobian addition is of the form +// (n_521 - 9) * P + -(9 * P) and hence is a degenerate doubling case. + + ldp x0, x1, [scalarb] + movbig(x10, #0xbb6f, #0xb71e, #0x9138, #0x6409) + subs x10, x10, x0 + movbig(x11, #0x3bb5, #0xc9b8, #0x899c, #0x47ae) + sbcs x11, x11, x1 + ldp x2, x3, [scalarb+16] + movbig(x12, #0x7fcc, #0x0148, #0xf709, #0xa5d0) + sbcs x12, x12, x2 + movbig(x13, #0x5186, #0x8783, #0xbf2f, #0x966b) + sbcs x13, x13, x3 + ldp x4, x5, [scalarb+32] + mov x14, 0xfffffffffffffffa + sbcs x14, x14, x4 + mov x15, 0xffffffffffffffff + sbcs x15, x15, x5 + ldp x6, x7, [scalarb+48] + mov x16, 0xffffffffffffffff + sbcs x16, x16, x6 + mov x17, 0xffffffffffffffff + sbcs x17, x17, x7 + ldr x8, [scalarb+64] + mov x19, 0x00000000000001ff + sbc x19, x19, x8 + tst x8, 0x100 + csetm x9, ne + csel x0, x10, x0, ne + csel x1, x11, x1, ne + csel x2, x12, x2, ne + csel x3, x13, x3, ne + csel x4, x14, x4, ne + csel x5, x15, x5, ne + csel x6, x16, x6, ne + csel x7, x17, x7, ne + csel x8, x19, x8, ne + stp x0, x1, [scalarb] + stp x2, x3, [scalarb+16] + stp x4, x5, [scalarb+32] + stp x6, x7, [scalarb+48] + str x8, [scalarb+64] + + add tabup, tab + ldp x0, x1, [tabup, #NUMSIZE] + ldp x2, x3, [tabup, #NUMSIZE+16] + ldp x4, x5, [tabup, #NUMSIZE+32] + ldp x6, x7, [tabup, #NUMSIZE+48] + ldr x8, [tabup, #NUMSIZE+64] + orr x10, x0, x1 + orr x11, x2, x3 + orr x12, x4, x5 + orr x13, x6, x7 + orr x10, x10, x11 + orr x12, x12, x13 + orr x12, x12, x8 + orr x10, x10, x12 + cmp x10, xzr + csel x9, x9, xzr, ne + eor x0, x0, x9 + eor x1, x1, x9 + eor x2, x2, x9 + eor x3, x3, x9 + eor x4, x4, x9 + eor x5, x5, x9 + eor x6, x6, x9 + eor x7, x7, x9 + and x9, x9, #0x1FF + eor x8, x8, x9 + stp x0, x1, [tabup, #NUMSIZE] + stp x2, x3, [tabup, #NUMSIZE+16] + stp x4, x5, [tabup, #NUMSIZE+32] + stp x6, x7, [tabup, #NUMSIZE+48] + str x8, [tabup, #NUMSIZE+64] + +// Compute and record tab[1] = 2 * p, ..., tab[15] = 16 * P + + add x0, tab+JACSIZE*1 + add x1, tab + bl p521_jscalarmul_alt_jdouble + + add x0, tab+JACSIZE*2 + add x1, tab+JACSIZE*1 + add x2, tab + bl p521_jscalarmul_alt_jadd + + add x0, tab+JACSIZE*3 + add x1, tab+JACSIZE*1 + bl p521_jscalarmul_alt_jdouble + + add x0, tab+JACSIZE*4 + add x1, tab+JACSIZE*3 + add x2, tab + bl p521_jscalarmul_alt_jadd + + add x0, tab+JACSIZE*5 + add x1, tab+JACSIZE*2 + bl p521_jscalarmul_alt_jdouble + + add x0, tab+JACSIZE*6 + add x1, tab+JACSIZE*5 + add x2, tab + bl p521_jscalarmul_alt_jadd + + add x0, tab+JACSIZE*7 + add x1, tab+JACSIZE*3 + bl p521_jscalarmul_alt_jdouble + + add x0, tab+JACSIZE*8 + add x1, tab+JACSIZE*7 + add x2, tab + bl p521_jscalarmul_alt_jadd + + add x0, tab+JACSIZE*9 + add x1, tab+JACSIZE*4 + bl p521_jscalarmul_alt_jdouble + + add x0, tab+JACSIZE*10 + add x1, tab+JACSIZE*9 + add x2, tab + bl p521_jscalarmul_alt_jadd + + add x0, tab+JACSIZE*11 + add x1, tab+JACSIZE*5 + bl p521_jscalarmul_alt_jdouble + + add x0, tab+JACSIZE*12 + add x1, tab+JACSIZE*11 + add x2, tab + bl p521_jscalarmul_alt_jadd + + add x0, tab+JACSIZE*13 + add x1, tab+JACSIZE*6 + bl p521_jscalarmul_alt_jdouble + + add x0, tab+JACSIZE*14 + add x1, tab+JACSIZE*13 + add x2, tab + bl p521_jscalarmul_alt_jadd + + add x0, tab+JACSIZE*15 + add x1, tab+JACSIZE*7 + bl p521_jscalarmul_alt_jdouble + +// Add the recoding constant sum_i(16 * 32^i) to the scalar to allow signed +// digits. The digits of the constant, in lowest-to-highest order, are as +// follows; they are generated dynamically since none is a simple ARM load. +// +// 0x0842108421084210 +// 0x1084210842108421 +// 0x2108421084210842 +// 0x4210842108421084 +// 0x8421084210842108 +// 0x0842108421084210 +// 0x1084210842108421 +// 0x2108421084210842 +// 0x0000000000000084 + + ldp x0, x1, [scalarb] + ldp x2, x3, [scalarb+16] + ldp x4, x5, [scalarb+32] + ldp x6, x7, [scalarb+48] + ldr x8, [scalarb+64] + + movbig(x10, #0x1084, #0x2108, #0x4210, #0x8421) + adds x0, x0, x10, lsr #1 + adcs x1, x1, x10 + lsl x10, x10, #1 + adcs x2, x2, x10 + lsl x10, x10, #1 + adcs x3, x3, x10 + lsl x10, x10, #1 + adcs x4, x4, x10 + lsr x11, x10, #4 + adcs x5, x5, x11 + lsr x10, x10, #3 + adcs x6, x6, x10 + lsl x10, x10, #1 + adcs x7, x7, x10 + lsl x10, x10, #1 + and x10, x10, #0xFF + adc x8, x8, x10 + +// Because of the initial reduction the top bitfield (>= bits 520) is <= 1, +// i.e. just a single bit. Record that in "bf", then shift the whole +// scalar left 56 bits to align the top of the next bitfield with the MSB +// (bits 571..575). + + lsr bf, x8, #8 + extr x8, x8, x7, #8 + extr x7, x7, x6, #8 + extr x6, x6, x5, #8 + extr x5, x5, x4, #8 + extr x4, x4, x3, #8 + extr x3, x3, x2, #8 + extr x2, x2, x1, #8 + extr x1, x1, x0, #8 + lsl x0, x0, #56 + stp x0, x1, [scalarb] + stp x2, x3, [scalarb+16] + stp x4, x5, [scalarb+32] + stp x6, x7, [scalarb+48] + str x8, [scalarb+64] + +// According to the top bit, initialize the accumulator to P or 0. This top +// digit, uniquely, is not recoded so there is no sign adjustment to make. +// We only really need to adjust the z coordinate to zero, but do all three. + + add tabup, tab + cmp bf, xzr + + ldp x0, x1, [tabup] + csel x0, x0, xzr, ne + csel x1, x1, xzr, ne + stp x0, x1, [acc] + ldp x0, x1, [tabup, #16] + csel x0, x0, xzr, ne + csel x1, x1, xzr, ne + stp x0, x1, [acc+16] + ldp x0, x1, [tabup, #32] + csel x0, x0, xzr, ne + csel x1, x1, xzr, ne + stp x0, x1, [acc+32] + ldp x0, x1, [tabup, #48] + csel x0, x0, xzr, ne + csel x1, x1, xzr, ne + stp x0, x1, [acc+48] + ldp x0, x1, [tabup, #64] + csel x0, x0, xzr, ne + csel x1, x1, xzr, ne + stp x0, x1, [acc+64] + ldp x0, x1, [tabup, #80] + csel x0, x0, xzr, ne + csel x1, x1, xzr, ne + stp x0, x1, [acc+80] + ldp x0, x1, [tabup, #96] + csel x0, x0, xzr, ne + csel x1, x1, xzr, ne + stp x0, x1, [acc+96] + ldp x0, x1, [tabup, #112] + csel x0, x0, xzr, ne + csel x1, x1, xzr, ne + stp x0, x1, [acc+112] + ldp x0, x1, [tabup, #128] + csel x0, x0, xzr, ne + csel x1, x1, xzr, ne + stp x0, x1, [acc+128] + ldp x0, x1, [tabup, #144] + csel x0, x0, xzr, ne + csel x1, x1, xzr, ne + stp x0, x1, [acc+144] + ldp x0, x1, [tabup, #160] + csel x0, x0, xzr, ne + csel x1, x1, xzr, ne + stp x0, x1, [acc+160] + ldp x0, x1, [tabup, #176] + csel x0, x0, xzr, ne + csel x1, x1, xzr, ne + stp x0, x1, [acc+176] + ldp x0, x1, [tabup, #192] + csel x0, x0, xzr, ne + csel x1, x1, xzr, ne + stp x0, x1, [acc+192] + ldr x0, [tabup, #208] + csel x0, x0, xzr, ne + str x0, [acc+208] + +// Main loop over size-5 bitfields: double 5 times then add signed digit +// At each stage we shift the scalar left by 5 bits so we can simply pick +// the top 5 bits as the bitfield, saving some fiddle over indexing. + + mov j, #520 + +p521_jscalarmul_alt_mainloop: + sub j, j, #5 + + add x0, acc + add x1, acc + bl p521_jscalarmul_alt_jdouble + + add x0, acc + add x1, acc + bl p521_jscalarmul_alt_jdouble + + add x0, acc + add x1, acc + bl p521_jscalarmul_alt_jdouble + + add x0, acc + add x1, acc + bl p521_jscalarmul_alt_jdouble + + add x0, acc + add x1, acc + bl p521_jscalarmul_alt_jdouble + +// Choose the bitfield and adjust it to sign and magnitude + + ldp x0, x1, [scalarb] + ldp x2, x3, [scalarb+16] + ldp x4, x5, [scalarb+32] + ldp x6, x7, [scalarb+48] + ldr x8, [scalarb+64] + lsr bf, x8, #59 + extr x8, x8, x7, #59 + extr x7, x7, x6, #59 + extr x6, x6, x5, #59 + extr x5, x5, x4, #59 + extr x4, x4, x3, #59 + extr x3, x3, x2, #59 + extr x2, x2, x1, #59 + extr x1, x1, x0, #59 + lsl x0, x0, #5 + stp x0, x1, [scalarb] + stp x2, x3, [scalarb+16] + stp x4, x5, [scalarb+32] + stp x6, x7, [scalarb+48] + str x8, [scalarb+64] + + subs bf, bf, #16 + csetm sgn, lo // sgn = sign of digit (1 = negative) + cneg bf, bf, lo // bf = absolute value of digit + +// Conditionally select the table entry tab[i-1] = i * P in constant time + + mov x0, xzr + mov x1, xzr + mov x2, xzr + mov x3, xzr + mov x4, xzr + mov x5, xzr + mov x6, xzr + mov x7, xzr + mov x8, xzr + add tabup, tab + selectblock(1) + selectblock(2) + selectblock(3) + selectblock(4) + selectblock(5) + selectblock(6) + selectblock(7) + selectblock(8) + selectblock(9) + selectblock(10) + selectblock(11) + selectblock(12) + selectblock(13) + selectblock(14) + selectblock(15) + selectblock(16) + stp x0, x1, [tabent] + stp x2, x3, [tabent+16] + stp x4, x5, [tabent+32] + stp x6, x7, [tabent+48] + str x8, [tabent+64] + + mov x0, xzr + mov x1, xzr + mov x2, xzr + mov x3, xzr + mov x4, xzr + mov x5, xzr + mov x6, xzr + mov x7, xzr + mov x8, xzr + add tabup, tab+2*NUMSIZE + selectblock(1) + selectblock(2) + selectblock(3) + selectblock(4) + selectblock(5) + selectblock(6) + selectblock(7) + selectblock(8) + selectblock(9) + selectblock(10) + selectblock(11) + selectblock(12) + selectblock(13) + selectblock(14) + selectblock(15) + selectblock(16) + stp x0, x1, [tabent+2*NUMSIZE] + stp x2, x3, [tabent+2*NUMSIZE+16] + stp x4, x5, [tabent+2*NUMSIZE+32] + stp x6, x7, [tabent+2*NUMSIZE+48] + str x8, [tabent+2*NUMSIZE+64] + + mov x0, xzr + mov x1, xzr + mov x2, xzr + mov x3, xzr + mov x4, xzr + mov x5, xzr + mov x6, xzr + mov x7, xzr + mov x8, xzr + add tabup, tab+NUMSIZE + selectblock(1) + selectblock(2) + selectblock(3) + selectblock(4) + selectblock(5) + selectblock(6) + selectblock(7) + selectblock(8) + selectblock(9) + selectblock(10) + selectblock(11) + selectblock(12) + selectblock(13) + selectblock(14) + selectblock(15) + selectblock(16) + +// Store it to "tabent" with the y coordinate optionally negated. +// This is done carefully to give coordinates < p_521 even in +// the degenerate case y = 0 (when z = 0 for points on the curve). + + orr x10, x0, x1 + orr x11, x2, x3 + orr x12, x4, x5 + orr x13, x6, x7 + orr x10, x10, x11 + orr x12, x12, x13 + orr x12, x12, x8 + orr x10, x10, x12 + cmp x10, xzr + csel sgn, sgn, xzr, ne + + eor x0, x0, sgn + eor x1, x1, sgn + eor x2, x2, sgn + eor x3, x3, sgn + eor x4, x4, sgn + eor x5, x5, sgn + eor x6, x6, sgn + eor x7, x7, sgn + and sgn, sgn, #0x1FF + eor x8, x8, sgn + + stp x0, x1, [tabent+NUMSIZE] + stp x2, x3, [tabent+NUMSIZE+16] + stp x4, x5, [tabent+NUMSIZE+32] + stp x6, x7, [tabent+NUMSIZE+48] + str x8, [tabent+NUMSIZE+64] + +// Add to the accumulator + + add x0, acc + add x1, acc + add x2, tabent + bl p521_jscalarmul_alt_jadd + + cbnz j, p521_jscalarmul_alt_mainloop + +// That's the end of the main loop, and we just need to copy the +// result in "acc" to the output. + + ldp x0, x1, [acc] + stp x0, x1, [res] + ldp x0, x1, [acc+16] + stp x0, x1, [res, #16] + ldp x0, x1, [acc+32] + stp x0, x1, [res, #32] + ldp x0, x1, [acc+48] + stp x0, x1, [res, #48] + ldp x0, x1, [acc+64] + stp x0, x1, [res, #64] + ldp x0, x1, [acc+80] + stp x0, x1, [res, #80] + ldp x0, x1, [acc+96] + stp x0, x1, [res, #96] + ldp x0, x1, [acc+112] + stp x0, x1, [res, #112] + ldp x0, x1, [acc+128] + stp x0, x1, [res, #128] + ldp x0, x1, [acc+144] + stp x0, x1, [res, #144] + ldp x0, x1, [acc+160] + stp x0, x1, [res, #160] + ldp x0, x1, [acc+176] + stp x0, x1, [res, #176] + ldp x0, x1, [acc+192] + stp x0, x1, [res, #192] + ldr x0, [acc+208] + str x0, [res, #208] + +// Restore stack and registers and return + + add sp, sp, NSPACE + ldp x21, x30, [sp], 16 + ldp x19, x20, [sp], 16 + ret + +// Local copies of subroutines, complete clones at the moment except +// that we share multiplication and squaring between the point operations. + +p521_jscalarmul_alt_bignum_mod_p521_9: + ldr x12, [x1, #64] + lsr x2, x12, #9 + cmp xzr, xzr + ldp x4, x5, [x1] + adcs xzr, x4, x2 + adcs xzr, x5, xzr + ldp x6, x7, [x1, #16] + and x3, x6, x7 + adcs xzr, x3, xzr + ldp x8, x9, [x1, #32] + and x3, x8, x9 + adcs xzr, x3, xzr + ldp x10, x11, [x1, #48] + and x3, x10, x11 + adcs xzr, x3, xzr + orr x3, x12, #0xfffffffffffffe00 + adcs x3, x3, xzr + adcs x4, x4, x2 + adcs x5, x5, xzr + adcs x6, x6, xzr + adcs x7, x7, xzr + adcs x8, x8, xzr + adcs x9, x9, xzr + adcs x10, x10, xzr + adcs x11, x11, xzr + adc x12, x12, xzr + and x12, x12, #0x1ff + stp x4, x5, [x0] + stp x6, x7, [x0, #16] + stp x8, x9, [x0, #32] + stp x10, x11, [x0, #48] + str x12, [x0, #64] + ret + +p521_jscalarmul_alt_bignum_mod_n521_9: + ldr x14, [x1, #64] + lsr x15, x14, #9 + add x15, x15, #1 + mov x2, #39927 + movk x2, #28359, lsl #16 + movk x2, #18657, lsl #32 + movk x2, #17552, lsl #48 + mul x6, x2, x15 + mov x3, #47185 + movk x3, #30307, lsl #16 + movk x3, #13895, lsl #32 + movk x3, #50250, lsl #48 + mul x7, x3, x15 + mov x4, #23087 + movk x4, #2294, lsl #16 + movk x4, #65207, lsl #32 + movk x4, #32819, lsl #48 + mul x8, x4, x15 + mov x5, #27028 + movk x5, #16592, lsl #16 + movk x5, #30844, lsl #32 + movk x5, #44665, lsl #48 + mul x9, x5, x15 + lsl x10, x15, #2 + add x10, x10, x15 + umulh x13, x2, x15 + adds x7, x7, x13 + umulh x13, x3, x15 + adcs x8, x8, x13 + umulh x13, x4, x15 + adcs x9, x9, x13 + umulh x13, x5, x15 + adc x10, x10, x13 + ldp x12, x13, [x1] + adds x6, x6, x12 + adcs x7, x7, x13 + ldp x12, x13, [x1, #16] + adcs x8, x8, x12 + adcs x9, x9, x13 + ldp x13, x11, [x1, #32] + adcs x10, x10, x13 + adcs x11, x11, xzr + ldp x12, x13, [x1, #48] + adcs x12, x12, xzr + adcs x13, x13, xzr + orr x14, x14, #0xfffffffffffffe00 + adcs x14, x14, xzr + csetm x15, lo + and x2, x2, x15 + subs x6, x6, x2 + and x3, x3, x15 + sbcs x7, x7, x3 + and x4, x4, x15 + sbcs x8, x8, x4 + and x5, x5, x15 + sbcs x9, x9, x5 + mov x2, #5 + and x2, x2, x15 + sbcs x10, x10, x2 + sbcs x11, x11, xzr + sbcs x12, x12, xzr + sbcs x13, x13, xzr + sbc x14, x14, xzr + and x14, x14, #0x1ff + stp x6, x7, [x0] + stp x8, x9, [x0, #16] + stp x10, x11, [x0, #32] + stp x12, x13, [x0, #48] + str x14, [x0, #64] + ret + +p521_jscalarmul_alt_jadd: + stp x19, x20, [sp, #-16]! + stp x21, x22, [sp, #-16]! + stp x23, x24, [sp, #-16]! + stp x25, x26, [sp, #-16]! + stp x27, x28, [sp, #-16]! + stp x29, x30, [sp, #-16]! + sub sp, sp, #0x240 + mov x27, x0 + mov x28, x1 + mov x29, x2 + mov x0, sp + add x1, x28, #0x90 + bl p521_jscalarmul_alt_sqr_p521 + add x0, sp, #0x168 + add x1, x29, #0x90 + bl p521_jscalarmul_alt_sqr_p521 + add x0, sp, #0x1f8 + add x1, x29, #0x90 + add x2, x28, #0x48 + bl p521_jscalarmul_alt_mul_p521 + add x0, sp, #0x48 + add x1, x28, #0x90 + add x2, x29, #0x48 + bl p521_jscalarmul_alt_mul_p521 + add x0, sp, #0x90 + mov x1, sp + add x2, x29, #0x0 + bl p521_jscalarmul_alt_mul_p521 + add x0, sp, #0x120 + add x1, sp, #0x168 + add x2, x28, #0x0 + bl p521_jscalarmul_alt_mul_p521 + add x0, sp, #0x48 + mov x1, sp + add x2, sp, #0x48 + bl p521_jscalarmul_alt_mul_p521 + add x0, sp, #0x1f8 + add x1, sp, #0x168 + add x2, sp, #0x1f8 + bl p521_jscalarmul_alt_mul_p521 + add x0, sp, #0x168 + add x1, sp, #0x90 + add x2, sp, #0x120 + bl p521_jscalarmul_alt_sub_p521 + add x0, sp, #0x48 + add x1, sp, #0x48 + add x2, sp, #0x1f8 + bl p521_jscalarmul_alt_sub_p521 + add x0, sp, #0xd8 + add x1, sp, #0x168 + bl p521_jscalarmul_alt_sqr_p521 + mov x0, sp + add x1, sp, #0x48 + bl p521_jscalarmul_alt_sqr_p521 + add x0, sp, #0x120 + add x1, sp, #0xd8 + add x2, sp, #0x120 + bl p521_jscalarmul_alt_mul_p521 + add x0, sp, #0x90 + add x1, sp, #0xd8 + add x2, sp, #0x90 + bl p521_jscalarmul_alt_mul_p521 + mov x0, sp + mov x1, sp + add x2, sp, #0x120 + bl p521_jscalarmul_alt_sub_p521 + add x0, sp, #0xd8 + add x1, sp, #0x90 + add x2, sp, #0x120 + bl p521_jscalarmul_alt_sub_p521 + add x0, sp, #0x168 + add x1, sp, #0x168 + add x2, x28, #0x90 + bl p521_jscalarmul_alt_mul_p521 + mov x0, sp + mov x1, sp + add x2, sp, #0x90 + bl p521_jscalarmul_alt_sub_p521 + add x0, sp, #0x120 + add x1, sp, #0x120 + mov x2, sp + bl p521_jscalarmul_alt_sub_p521 + add x0, sp, #0xd8 + add x1, sp, #0xd8 + add x2, sp, #0x1f8 + bl p521_jscalarmul_alt_mul_p521 + add x0, sp, #0x168 + add x1, sp, #0x168 + add x2, x29, #0x90 + bl p521_jscalarmul_alt_mul_p521 + add x0, sp, #0x120 + add x1, sp, #0x48 + add x2, sp, #0x120 + bl p521_jscalarmul_alt_mul_p521 + add x0, sp, #0x120 + add x1, sp, #0x120 + add x2, sp, #0xd8 + bl p521_jscalarmul_alt_sub_p521 + ldp x0, x1, [x28, #144] + ldp x2, x3, [x28, #160] + ldp x4, x5, [x28, #176] + ldp x6, x7, [x28, #192] + ldr x8, [x28, #208] + orr x20, x0, x1 + orr x21, x2, x3 + orr x22, x4, x5 + orr x23, x6, x7 + orr x20, x20, x21 + orr x22, x22, x23 + orr x20, x20, x8 + orr x20, x20, x22 + cmp x20, xzr + cset x20, ne + ldp x10, x11, [x29, #144] + ldp x12, x13, [x29, #160] + ldp x14, x15, [x29, #176] + ldp x16, x17, [x29, #192] + ldr x19, [x29, #208] + orr x21, x10, x11 + orr x22, x12, x13 + orr x23, x14, x15 + orr x24, x16, x17 + orr x21, x21, x22 + orr x23, x23, x24 + orr x21, x21, x19 + orr x21, x21, x23 + csel x0, x0, x10, ne + csel x1, x1, x11, ne + csel x2, x2, x12, ne + csel x3, x3, x13, ne + csel x4, x4, x14, ne + csel x5, x5, x15, ne + csel x6, x6, x16, ne + csel x7, x7, x17, ne + csel x8, x8, x19, ne + cmp x21, xzr + cset x21, ne + cmp x21, x20 + ldp x10, x11, [sp, #360] + ldp x12, x13, [sp, #376] + ldp x14, x15, [sp, #392] + ldp x16, x17, [sp, #408] + ldr x19, [sp, #424] + csel x0, x0, x10, ne + csel x1, x1, x11, ne + csel x2, x2, x12, ne + csel x3, x3, x13, ne + csel x4, x4, x14, ne + csel x5, x5, x15, ne + csel x6, x6, x16, ne + csel x7, x7, x17, ne + csel x8, x8, x19, ne + stp x0, x1, [sp, #360] + stp x2, x3, [sp, #376] + stp x4, x5, [sp, #392] + stp x6, x7, [sp, #408] + str x8, [sp, #424] + ldp x20, x21, [x28] + ldp x0, x1, [sp] + csel x0, x20, x0, cc + csel x1, x21, x1, cc + ldp x20, x21, [x29] + csel x0, x20, x0, hi + csel x1, x21, x1, hi + ldp x20, x21, [x28, #16] + ldp x2, x3, [sp, #16] + csel x2, x20, x2, cc + csel x3, x21, x3, cc + ldp x20, x21, [x29, #16] + csel x2, x20, x2, hi + csel x3, x21, x3, hi + ldp x20, x21, [x28, #32] + ldp x4, x5, [sp, #32] + csel x4, x20, x4, cc + csel x5, x21, x5, cc + ldp x20, x21, [x29, #32] + csel x4, x20, x4, hi + csel x5, x21, x5, hi + ldp x20, x21, [x28, #48] + ldp x6, x7, [sp, #48] + csel x6, x20, x6, cc + csel x7, x21, x7, cc + ldp x20, x21, [x29, #48] + csel x6, x20, x6, hi + csel x7, x21, x7, hi + ldr x20, [x28, #64] + ldr x8, [sp, #64] + csel x8, x20, x8, cc + ldr x21, [x29, #64] + csel x8, x21, x8, hi + ldp x20, x21, [x28, #72] + ldp x10, x11, [sp, #288] + csel x10, x20, x10, cc + csel x11, x21, x11, cc + ldp x20, x21, [x29, #72] + csel x10, x20, x10, hi + csel x11, x21, x11, hi + ldp x20, x21, [x28, #88] + ldp x12, x13, [sp, #304] + csel x12, x20, x12, cc + csel x13, x21, x13, cc + ldp x20, x21, [x29, #88] + csel x12, x20, x12, hi + csel x13, x21, x13, hi + ldp x20, x21, [x28, #104] + ldp x14, x15, [sp, #320] + csel x14, x20, x14, cc + csel x15, x21, x15, cc + ldp x20, x21, [x29, #104] + csel x14, x20, x14, hi + csel x15, x21, x15, hi + ldp x20, x21, [x28, #120] + ldp x16, x17, [sp, #336] + csel x16, x20, x16, cc + csel x17, x21, x17, cc + ldp x20, x21, [x29, #120] + csel x16, x20, x16, hi + csel x17, x21, x17, hi + ldr x20, [x28, #136] + ldr x19, [sp, #352] + csel x19, x20, x19, cc + ldr x21, [x29, #136] + csel x19, x21, x19, hi + stp x0, x1, [x27] + stp x2, x3, [x27, #16] + stp x4, x5, [x27, #32] + stp x6, x7, [x27, #48] + str x8, [x27, #64] + ldp x0, x1, [sp, #360] + ldp x2, x3, [sp, #376] + ldp x4, x5, [sp, #392] + ldp x6, x7, [sp, #408] + ldr x8, [sp, #424] + stp x10, x11, [x27, #72] + stp x12, x13, [x27, #88] + stp x14, x15, [x27, #104] + stp x16, x17, [x27, #120] + str x19, [x27, #136] + stp x0, x1, [x27, #144] + stp x2, x3, [x27, #160] + stp x4, x5, [x27, #176] + stp x6, x7, [x27, #192] + str x8, [x27, #208] + add sp, sp, #0x240 + ldp x29, x30, [sp], #16 + ldp x27, x28, [sp], #16 + ldp x25, x26, [sp], #16 + ldp x23, x24, [sp], #16 + ldp x21, x22, [sp], #16 + ldp x19, x20, [sp], #16 + ret + +p521_jscalarmul_alt_jdouble: + stp x19, x20, [sp, #-16]! + stp x21, x22, [sp, #-16]! + stp x23, x24, [sp, #-16]! + stp x25, x26, [sp, #-16]! + stp x27, x28, [sp, #-16]! + stp x29, x30, [sp, #-16]! + sub sp, sp, #0x200 + mov x27, x0 + mov x28, x1 + mov x0, sp + add x1, x28, #0x90 + bl p521_jscalarmul_alt_sqr_p521 + add x0, sp, #0x48 + add x1, x28, #0x48 + bl p521_jscalarmul_alt_sqr_p521 + ldp x5, x6, [x28] + ldp x4, x3, [sp] + subs x5, x5, x4 + sbcs x6, x6, x3 + ldp x7, x8, [x28, #16] + ldp x4, x3, [sp, #16] + sbcs x7, x7, x4 + sbcs x8, x8, x3 + ldp x9, x10, [x28, #32] + ldp x4, x3, [sp, #32] + sbcs x9, x9, x4 + sbcs x10, x10, x3 + ldp x11, x12, [x28, #48] + ldp x4, x3, [sp, #48] + sbcs x11, x11, x4 + sbcs x12, x12, x3 + ldr x13, [x28, #64] + ldr x4, [sp, #64] + sbcs x13, x13, x4 + sbcs x5, x5, xzr + sbcs x6, x6, xzr + sbcs x7, x7, xzr + sbcs x8, x8, xzr + sbcs x9, x9, xzr + sbcs x10, x10, xzr + sbcs x11, x11, xzr + sbcs x12, x12, xzr + sbcs x13, x13, xzr + and x13, x13, #0x1ff + stp x5, x6, [sp, #216] + stp x7, x8, [sp, #232] + stp x9, x10, [sp, #248] + stp x11, x12, [sp, #264] + str x13, [sp, #280] + cmp xzr, xzr + ldp x5, x6, [x28] + ldp x4, x3, [sp] + adcs x5, x5, x4 + adcs x6, x6, x3 + ldp x7, x8, [x28, #16] + ldp x4, x3, [sp, #16] + adcs x7, x7, x4 + adcs x8, x8, x3 + ldp x9, x10, [x28, #32] + ldp x4, x3, [sp, #32] + adcs x9, x9, x4 + adcs x10, x10, x3 + ldp x11, x12, [x28, #48] + ldp x4, x3, [sp, #48] + adcs x11, x11, x4 + adcs x12, x12, x3 + ldr x13, [x28, #64] + ldr x4, [sp, #64] + adc x13, x13, x4 + subs x4, x13, #0x200 + csetm x4, cs + sbcs x5, x5, xzr + and x4, x4, #0x200 + sbcs x6, x6, xzr + sbcs x7, x7, xzr + sbcs x8, x8, xzr + sbcs x9, x9, xzr + sbcs x10, x10, xzr + sbcs x11, x11, xzr + sbcs x12, x12, xzr + sbc x13, x13, x4 + stp x5, x6, [sp, #144] + stp x7, x8, [sp, #160] + stp x9, x10, [sp, #176] + stp x11, x12, [sp, #192] + str x13, [sp, #208] + add x0, sp, #0xd8 + add x1, sp, #0x90 + add x2, sp, #0xd8 + bl p521_jscalarmul_alt_mul_p521 + cmp xzr, xzr + ldp x5, x6, [x28, #72] + ldp x4, x3, [x28, #144] + adcs x5, x5, x4 + adcs x6, x6, x3 + ldp x7, x8, [x28, #88] + ldp x4, x3, [x28, #160] + adcs x7, x7, x4 + adcs x8, x8, x3 + ldp x9, x10, [x28, #104] + ldp x4, x3, [x28, #176] + adcs x9, x9, x4 + adcs x10, x10, x3 + ldp x11, x12, [x28, #120] + ldp x4, x3, [x28, #192] + adcs x11, x11, x4 + adcs x12, x12, x3 + ldr x13, [x28, #136] + ldr x4, [x28, #208] + adc x13, x13, x4 + subs x4, x13, #0x200 + csetm x4, cs + sbcs x5, x5, xzr + and x4, x4, #0x200 + sbcs x6, x6, xzr + sbcs x7, x7, xzr + sbcs x8, x8, xzr + sbcs x9, x9, xzr + sbcs x10, x10, xzr + sbcs x11, x11, xzr + sbcs x12, x12, xzr + sbc x13, x13, x4 + stp x5, x6, [sp, #144] + stp x7, x8, [sp, #160] + stp x9, x10, [sp, #176] + stp x11, x12, [sp, #192] + str x13, [sp, #208] + add x0, sp, #0x120 + add x1, x28, #0x0 + add x2, sp, #0x48 + bl p521_jscalarmul_alt_mul_p521 + add x0, sp, #0x168 + add x1, sp, #0xd8 + bl p521_jscalarmul_alt_sqr_p521 + add x0, sp, #0x90 + add x1, sp, #0x90 + bl p521_jscalarmul_alt_sqr_p521 + ldp x6, x7, [sp, #288] + mov x1, #0xc + mul x3, x1, x6 + mul x4, x1, x7 + umulh x6, x1, x6 + adds x4, x4, x6 + umulh x7, x1, x7 + ldp x8, x9, [sp, #304] + mul x5, x1, x8 + mul x6, x1, x9 + umulh x8, x1, x8 + adcs x5, x5, x7 + umulh x9, x1, x9 + adcs x6, x6, x8 + ldp x10, x11, [sp, #320] + mul x7, x1, x10 + mul x8, x1, x11 + umulh x10, x1, x10 + adcs x7, x7, x9 + umulh x11, x1, x11 + adcs x8, x8, x10 + ldp x12, x13, [sp, #336] + mul x9, x1, x12 + mul x10, x1, x13 + umulh x12, x1, x12 + adcs x9, x9, x11 + umulh x13, x1, x13 + adcs x10, x10, x12 + ldr x14, [sp, #352] + mul x11, x1, x14 + adc x11, x11, x13 + mov x1, #0x9 + ldp x20, x21, [sp, #360] + mvn x20, x20 + mul x0, x1, x20 + umulh x20, x1, x20 + adds x3, x3, x0 + mvn x21, x21 + mul x0, x1, x21 + umulh x21, x1, x21 + adcs x4, x4, x0 + ldp x22, x23, [sp, #376] + mvn x22, x22 + mul x0, x1, x22 + umulh x22, x1, x22 + adcs x5, x5, x0 + mvn x23, x23 + mul x0, x1, x23 + umulh x23, x1, x23 + adcs x6, x6, x0 + ldp x17, x19, [sp, #392] + mvn x17, x17 + mul x0, x1, x17 + umulh x17, x1, x17 + adcs x7, x7, x0 + mvn x19, x19 + mul x0, x1, x19 + umulh x19, x1, x19 + adcs x8, x8, x0 + ldp x2, x16, [sp, #408] + mvn x2, x2 + mul x0, x1, x2 + umulh x2, x1, x2 + adcs x9, x9, x0 + mvn x16, x16 + mul x0, x1, x16 + umulh x16, x1, x16 + adcs x10, x10, x0 + ldr x0, [sp, #424] + eor x0, x0, #0x1ff + mul x0, x1, x0 + adc x11, x11, x0 + adds x4, x4, x20 + adcs x5, x5, x21 + and x15, x4, x5 + adcs x6, x6, x22 + and x15, x15, x6 + adcs x7, x7, x23 + and x15, x15, x7 + adcs x8, x8, x17 + and x15, x15, x8 + adcs x9, x9, x19 + and x15, x15, x9 + adcs x10, x10, x2 + and x15, x15, x10 + adc x11, x11, x16 + lsr x12, x11, #9 + orr x11, x11, #0xfffffffffffffe00 + cmp xzr, xzr + adcs xzr, x3, x12 + adcs xzr, x15, xzr + adcs xzr, x11, xzr + adcs x3, x3, x12 + adcs x4, x4, xzr + adcs x5, x5, xzr + adcs x6, x6, xzr + adcs x7, x7, xzr + adcs x8, x8, xzr + adcs x9, x9, xzr + adcs x10, x10, xzr + adc x11, x11, xzr + and x11, x11, #0x1ff + stp x3, x4, [sp, #360] + stp x5, x6, [sp, #376] + stp x7, x8, [sp, #392] + stp x9, x10, [sp, #408] + str x11, [sp, #424] + ldp x5, x6, [sp, #144] + ldp x4, x3, [sp] + subs x5, x5, x4 + sbcs x6, x6, x3 + ldp x7, x8, [sp, #160] + ldp x4, x3, [sp, #16] + sbcs x7, x7, x4 + sbcs x8, x8, x3 + ldp x9, x10, [sp, #176] + ldp x4, x3, [sp, #32] + sbcs x9, x9, x4 + sbcs x10, x10, x3 + ldp x11, x12, [sp, #192] + ldp x4, x3, [sp, #48] + sbcs x11, x11, x4 + sbcs x12, x12, x3 + ldr x13, [sp, #208] + ldr x4, [sp, #64] + sbcs x13, x13, x4 + sbcs x5, x5, xzr + sbcs x6, x6, xzr + sbcs x7, x7, xzr + sbcs x8, x8, xzr + sbcs x9, x9, xzr + sbcs x10, x10, xzr + sbcs x11, x11, xzr + sbcs x12, x12, xzr + sbcs x13, x13, xzr + and x13, x13, #0x1ff + stp x5, x6, [sp, #144] + stp x7, x8, [sp, #160] + stp x9, x10, [sp, #176] + stp x11, x12, [sp, #192] + str x13, [sp, #208] + mov x0, sp + add x1, sp, #0x48 + bl p521_jscalarmul_alt_sqr_p521 + add x0, sp, #0xd8 + add x1, sp, #0x168 + add x2, sp, #0xd8 + bl p521_jscalarmul_alt_mul_p521 + ldp x5, x6, [sp, #144] + ldp x4, x3, [sp, #72] + subs x5, x5, x4 + sbcs x6, x6, x3 + ldp x7, x8, [sp, #160] + ldp x4, x3, [sp, #88] + sbcs x7, x7, x4 + sbcs x8, x8, x3 + ldp x9, x10, [sp, #176] + ldp x4, x3, [sp, #104] + sbcs x9, x9, x4 + sbcs x10, x10, x3 + ldp x11, x12, [sp, #192] + ldp x4, x3, [sp, #120] + sbcs x11, x11, x4 + sbcs x12, x12, x3 + ldr x13, [sp, #208] + ldr x4, [sp, #136] + sbcs x13, x13, x4 + sbcs x5, x5, xzr + sbcs x6, x6, xzr + sbcs x7, x7, xzr + sbcs x8, x8, xzr + sbcs x9, x9, xzr + sbcs x10, x10, xzr + sbcs x11, x11, xzr + sbcs x12, x12, xzr + sbcs x13, x13, xzr + and x13, x13, #0x1ff + stp x5, x6, [x27, #144] + stp x7, x8, [x27, #160] + stp x9, x10, [x27, #176] + stp x11, x12, [x27, #192] + str x13, [x27, #208] + ldp x6, x7, [sp, #288] + lsl x3, x6, #2 + extr x4, x7, x6, #62 + ldp x8, x9, [sp, #304] + extr x5, x8, x7, #62 + extr x6, x9, x8, #62 + ldp x10, x11, [sp, #320] + extr x7, x10, x9, #62 + extr x8, x11, x10, #62 + ldp x12, x13, [sp, #336] + extr x9, x12, x11, #62 + extr x10, x13, x12, #62 + ldr x14, [sp, #352] + extr x11, x14, x13, #62 + ldp x0, x1, [sp, #360] + mvn x0, x0 + adds x3, x3, x0 + sbcs x4, x4, x1 + ldp x0, x1, [sp, #376] + sbcs x5, x5, x0 + and x15, x4, x5 + sbcs x6, x6, x1 + and x15, x15, x6 + ldp x0, x1, [sp, #392] + sbcs x7, x7, x0 + and x15, x15, x7 + sbcs x8, x8, x1 + and x15, x15, x8 + ldp x0, x1, [sp, #408] + sbcs x9, x9, x0 + and x15, x15, x9 + sbcs x10, x10, x1 + and x15, x15, x10 + ldr x0, [sp, #424] + eor x0, x0, #0x1ff + adc x11, x11, x0 + lsr x12, x11, #9 + orr x11, x11, #0xfffffffffffffe00 + cmp xzr, xzr + adcs xzr, x3, x12 + adcs xzr, x15, xzr + adcs xzr, x11, xzr + adcs x3, x3, x12 + adcs x4, x4, xzr + adcs x5, x5, xzr + adcs x6, x6, xzr + adcs x7, x7, xzr + adcs x8, x8, xzr + adcs x9, x9, xzr + adcs x10, x10, xzr + adc x11, x11, xzr + and x11, x11, #0x1ff + stp x3, x4, [x27] + stp x5, x6, [x27, #16] + stp x7, x8, [x27, #32] + stp x9, x10, [x27, #48] + str x11, [x27, #64] + ldp x6, x7, [sp, #216] + lsl x3, x6, #1 + adds x3, x3, x6 + extr x4, x7, x6, #63 + adcs x4, x4, x7 + ldp x8, x9, [sp, #232] + extr x5, x8, x7, #63 + adcs x5, x5, x8 + extr x6, x9, x8, #63 + adcs x6, x6, x9 + ldp x10, x11, [sp, #248] + extr x7, x10, x9, #63 + adcs x7, x7, x10 + extr x8, x11, x10, #63 + adcs x8, x8, x11 + ldp x12, x13, [sp, #264] + extr x9, x12, x11, #63 + adcs x9, x9, x12 + extr x10, x13, x12, #63 + adcs x10, x10, x13 + ldr x14, [sp, #280] + extr x11, x14, x13, #63 + adc x11, x11, x14 + ldp x20, x21, [sp] + mvn x20, x20 + lsl x0, x20, #3 + adds x3, x3, x0 + mvn x21, x21 + extr x0, x21, x20, #61 + adcs x4, x4, x0 + ldp x22, x23, [sp, #16] + mvn x22, x22 + extr x0, x22, x21, #61 + adcs x5, x5, x0 + and x15, x4, x5 + mvn x23, x23 + extr x0, x23, x22, #61 + adcs x6, x6, x0 + and x15, x15, x6 + ldp x20, x21, [sp, #32] + mvn x20, x20 + extr x0, x20, x23, #61 + adcs x7, x7, x0 + and x15, x15, x7 + mvn x21, x21 + extr x0, x21, x20, #61 + adcs x8, x8, x0 + and x15, x15, x8 + ldp x22, x23, [sp, #48] + mvn x22, x22 + extr x0, x22, x21, #61 + adcs x9, x9, x0 + and x15, x15, x9 + mvn x23, x23 + extr x0, x23, x22, #61 + adcs x10, x10, x0 + and x15, x15, x10 + ldr x0, [sp, #64] + eor x0, x0, #0x1ff + extr x0, x0, x23, #61 + adc x11, x11, x0 + lsr x12, x11, #9 + orr x11, x11, #0xfffffffffffffe00 + cmp xzr, xzr + adcs xzr, x3, x12 + adcs xzr, x15, xzr + adcs xzr, x11, xzr + adcs x3, x3, x12 + adcs x4, x4, xzr + adcs x5, x5, xzr + adcs x6, x6, xzr + adcs x7, x7, xzr + adcs x8, x8, xzr + adcs x9, x9, xzr + adcs x10, x10, xzr + adc x11, x11, xzr + and x11, x11, #0x1ff + stp x3, x4, [x27, #72] + stp x5, x6, [x27, #88] + stp x7, x8, [x27, #104] + stp x9, x10, [x27, #120] + str x11, [x27, #136] + add sp, sp, #0x200 + ldp x29, x30, [sp], #16 + ldp x27, x28, [sp], #16 + ldp x25, x26, [sp], #16 + ldp x23, x24, [sp], #16 + ldp x21, x22, [sp], #16 + ldp x19, x20, [sp], #16 + ret + +p521_jscalarmul_alt_mul_p521: + ldp x3, x4, [x1] + ldp x5, x6, [x2] + mul x15, x3, x5 + umulh x16, x3, x5 + mul x14, x3, x6 + umulh x17, x3, x6 + adds x16, x16, x14 + ldp x7, x8, [x2, #16] + mul x14, x3, x7 + umulh x19, x3, x7 + adcs x17, x17, x14 + mul x14, x3, x8 + umulh x20, x3, x8 + adcs x19, x19, x14 + ldp x9, x10, [x2, #32] + mul x14, x3, x9 + umulh x21, x3, x9 + adcs x20, x20, x14 + mul x14, x3, x10 + umulh x22, x3, x10 + adcs x21, x21, x14 + ldp x11, x12, [x2, #48] + mul x14, x3, x11 + umulh x23, x3, x11 + adcs x22, x22, x14 + ldr x13, [x2, #64] + mul x14, x3, x12 + umulh x24, x3, x12 + adcs x23, x23, x14 + mul x14, x3, x13 + umulh x25, x3, x13 + adcs x24, x24, x14 + adc x25, x25, xzr + mul x14, x4, x5 + adds x16, x16, x14 + mul x14, x4, x6 + adcs x17, x17, x14 + mul x14, x4, x7 + adcs x19, x19, x14 + mul x14, x4, x8 + adcs x20, x20, x14 + mul x14, x4, x9 + adcs x21, x21, x14 + mul x14, x4, x10 + adcs x22, x22, x14 + mul x14, x4, x11 + adcs x23, x23, x14 + mul x14, x4, x12 + adcs x24, x24, x14 + mul x14, x4, x13 + adcs x25, x25, x14 + cset x26, cs + umulh x14, x4, x5 + adds x17, x17, x14 + umulh x14, x4, x6 + adcs x19, x19, x14 + umulh x14, x4, x7 + adcs x20, x20, x14 + umulh x14, x4, x8 + adcs x21, x21, x14 + umulh x14, x4, x9 + adcs x22, x22, x14 + umulh x14, x4, x10 + adcs x23, x23, x14 + umulh x14, x4, x11 + adcs x24, x24, x14 + umulh x14, x4, x12 + adcs x25, x25, x14 + umulh x14, x4, x13 + adc x26, x26, x14 + stp x15, x16, [sp, #432] + ldp x3, x4, [x1, #16] + mul x14, x3, x5 + adds x17, x17, x14 + mul x14, x3, x6 + adcs x19, x19, x14 + mul x14, x3, x7 + adcs x20, x20, x14 + mul x14, x3, x8 + adcs x21, x21, x14 + mul x14, x3, x9 + adcs x22, x22, x14 + mul x14, x3, x10 + adcs x23, x23, x14 + mul x14, x3, x11 + adcs x24, x24, x14 + mul x14, x3, x12 + adcs x25, x25, x14 + mul x14, x3, x13 + adcs x26, x26, x14 + cset x15, cs + umulh x14, x3, x5 + adds x19, x19, x14 + umulh x14, x3, x6 + adcs x20, x20, x14 + umulh x14, x3, x7 + adcs x21, x21, x14 + umulh x14, x3, x8 + adcs x22, x22, x14 + umulh x14, x3, x9 + adcs x23, x23, x14 + umulh x14, x3, x10 + adcs x24, x24, x14 + umulh x14, x3, x11 + adcs x25, x25, x14 + umulh x14, x3, x12 + adcs x26, x26, x14 + umulh x14, x3, x13 + adc x15, x15, x14 + mul x14, x4, x5 + adds x19, x19, x14 + mul x14, x4, x6 + adcs x20, x20, x14 + mul x14, x4, x7 + adcs x21, x21, x14 + mul x14, x4, x8 + adcs x22, x22, x14 + mul x14, x4, x9 + adcs x23, x23, x14 + mul x14, x4, x10 + adcs x24, x24, x14 + mul x14, x4, x11 + adcs x25, x25, x14 + mul x14, x4, x12 + adcs x26, x26, x14 + mul x14, x4, x13 + adcs x15, x15, x14 + cset x16, cs + umulh x14, x4, x5 + adds x20, x20, x14 + umulh x14, x4, x6 + adcs x21, x21, x14 + umulh x14, x4, x7 + adcs x22, x22, x14 + umulh x14, x4, x8 + adcs x23, x23, x14 + umulh x14, x4, x9 + adcs x24, x24, x14 + umulh x14, x4, x10 + adcs x25, x25, x14 + umulh x14, x4, x11 + adcs x26, x26, x14 + umulh x14, x4, x12 + adcs x15, x15, x14 + umulh x14, x4, x13 + adc x16, x16, x14 + stp x17, x19, [sp, #448] + ldp x3, x4, [x1, #32] + mul x14, x3, x5 + adds x20, x20, x14 + mul x14, x3, x6 + adcs x21, x21, x14 + mul x14, x3, x7 + adcs x22, x22, x14 + mul x14, x3, x8 + adcs x23, x23, x14 + mul x14, x3, x9 + adcs x24, x24, x14 + mul x14, x3, x10 + adcs x25, x25, x14 + mul x14, x3, x11 + adcs x26, x26, x14 + mul x14, x3, x12 + adcs x15, x15, x14 + mul x14, x3, x13 + adcs x16, x16, x14 + cset x17, cs + umulh x14, x3, x5 + adds x21, x21, x14 + umulh x14, x3, x6 + adcs x22, x22, x14 + umulh x14, x3, x7 + adcs x23, x23, x14 + umulh x14, x3, x8 + adcs x24, x24, x14 + umulh x14, x3, x9 + adcs x25, x25, x14 + umulh x14, x3, x10 + adcs x26, x26, x14 + umulh x14, x3, x11 + adcs x15, x15, x14 + umulh x14, x3, x12 + adcs x16, x16, x14 + umulh x14, x3, x13 + adc x17, x17, x14 + mul x14, x4, x5 + adds x21, x21, x14 + mul x14, x4, x6 + adcs x22, x22, x14 + mul x14, x4, x7 + adcs x23, x23, x14 + mul x14, x4, x8 + adcs x24, x24, x14 + mul x14, x4, x9 + adcs x25, x25, x14 + mul x14, x4, x10 + adcs x26, x26, x14 + mul x14, x4, x11 + adcs x15, x15, x14 + mul x14, x4, x12 + adcs x16, x16, x14 + mul x14, x4, x13 + adcs x17, x17, x14 + cset x19, cs + umulh x14, x4, x5 + adds x22, x22, x14 + umulh x14, x4, x6 + adcs x23, x23, x14 + umulh x14, x4, x7 + adcs x24, x24, x14 + umulh x14, x4, x8 + adcs x25, x25, x14 + umulh x14, x4, x9 + adcs x26, x26, x14 + umulh x14, x4, x10 + adcs x15, x15, x14 + umulh x14, x4, x11 + adcs x16, x16, x14 + umulh x14, x4, x12 + adcs x17, x17, x14 + umulh x14, x4, x13 + adc x19, x19, x14 + stp x20, x21, [sp, #464] + ldp x3, x4, [x1, #48] + mul x14, x3, x5 + adds x22, x22, x14 + mul x14, x3, x6 + adcs x23, x23, x14 + mul x14, x3, x7 + adcs x24, x24, x14 + mul x14, x3, x8 + adcs x25, x25, x14 + mul x14, x3, x9 + adcs x26, x26, x14 + mul x14, x3, x10 + adcs x15, x15, x14 + mul x14, x3, x11 + adcs x16, x16, x14 + mul x14, x3, x12 + adcs x17, x17, x14 + mul x14, x3, x13 + adcs x19, x19, x14 + cset x20, cs + umulh x14, x3, x5 + adds x23, x23, x14 + umulh x14, x3, x6 + adcs x24, x24, x14 + umulh x14, x3, x7 + adcs x25, x25, x14 + umulh x14, x3, x8 + adcs x26, x26, x14 + umulh x14, x3, x9 + adcs x15, x15, x14 + umulh x14, x3, x10 + adcs x16, x16, x14 + umulh x14, x3, x11 + adcs x17, x17, x14 + umulh x14, x3, x12 + adcs x19, x19, x14 + umulh x14, x3, x13 + adc x20, x20, x14 + mul x14, x4, x5 + adds x23, x23, x14 + mul x14, x4, x6 + adcs x24, x24, x14 + mul x14, x4, x7 + adcs x25, x25, x14 + mul x14, x4, x8 + adcs x26, x26, x14 + mul x14, x4, x9 + adcs x15, x15, x14 + mul x14, x4, x10 + adcs x16, x16, x14 + mul x14, x4, x11 + adcs x17, x17, x14 + mul x14, x4, x12 + adcs x19, x19, x14 + mul x14, x4, x13 + adcs x20, x20, x14 + cset x21, cs + umulh x14, x4, x5 + adds x24, x24, x14 + umulh x14, x4, x6 + adcs x25, x25, x14 + umulh x14, x4, x7 + adcs x26, x26, x14 + umulh x14, x4, x8 + adcs x15, x15, x14 + umulh x14, x4, x9 + adcs x16, x16, x14 + umulh x14, x4, x10 + adcs x17, x17, x14 + umulh x14, x4, x11 + adcs x19, x19, x14 + umulh x14, x4, x12 + adcs x20, x20, x14 + umulh x14, x4, x13 + adc x21, x21, x14 + stp x22, x23, [sp, #480] + ldr x3, [x1, #64] + mul x14, x3, x5 + adds x24, x24, x14 + mul x14, x3, x6 + adcs x25, x25, x14 + mul x14, x3, x7 + adcs x26, x26, x14 + mul x14, x3, x8 + adcs x15, x15, x14 + mul x14, x3, x9 + adcs x16, x16, x14 + mul x14, x3, x10 + adcs x17, x17, x14 + mul x14, x3, x11 + adcs x19, x19, x14 + mul x14, x3, x12 + adcs x20, x20, x14 + mul x14, x3, x13 + adc x21, x21, x14 + umulh x14, x3, x5 + adds x25, x25, x14 + umulh x14, x3, x6 + adcs x26, x26, x14 + umulh x14, x3, x7 + adcs x15, x15, x14 + umulh x14, x3, x8 + adcs x16, x16, x14 + umulh x14, x3, x9 + adcs x17, x17, x14 + umulh x14, x3, x10 + adcs x19, x19, x14 + umulh x14, x3, x11 + adcs x20, x20, x14 + umulh x14, x3, x12 + adc x21, x21, x14 + cmp xzr, xzr + ldp x5, x6, [sp, #432] + extr x14, x25, x24, #9 + adcs x5, x5, x14 + extr x14, x26, x25, #9 + adcs x6, x6, x14 + ldp x7, x8, [sp, #448] + extr x14, x15, x26, #9 + adcs x7, x7, x14 + extr x14, x16, x15, #9 + adcs x8, x8, x14 + ldp x9, x10, [sp, #464] + extr x14, x17, x16, #9 + adcs x9, x9, x14 + extr x14, x19, x17, #9 + adcs x10, x10, x14 + ldp x11, x12, [sp, #480] + extr x14, x20, x19, #9 + adcs x11, x11, x14 + extr x14, x21, x20, #9 + adcs x12, x12, x14 + orr x13, x24, #0xfffffffffffffe00 + lsr x14, x21, #9 + adcs x13, x13, x14 + sbcs x5, x5, xzr + sbcs x6, x6, xzr + sbcs x7, x7, xzr + sbcs x8, x8, xzr + sbcs x9, x9, xzr + sbcs x10, x10, xzr + sbcs x11, x11, xzr + sbcs x12, x12, xzr + sbc x13, x13, xzr + and x13, x13, #0x1ff + stp x5, x6, [x0] + stp x7, x8, [x0, #16] + stp x9, x10, [x0, #32] + stp x11, x12, [x0, #48] + str x13, [x0, #64] + ret + +p521_jscalarmul_alt_sqr_p521: + ldp x2, x3, [x1] + mul x11, x2, x3 + umulh x12, x2, x3 + ldp x4, x5, [x1, #16] + mul x10, x2, x4 + umulh x13, x2, x4 + adds x12, x12, x10 + ldp x6, x7, [x1, #32] + mul x10, x2, x5 + umulh x14, x2, x5 + adcs x13, x13, x10 + ldp x8, x9, [x1, #48] + mul x10, x2, x6 + umulh x15, x2, x6 + adcs x14, x14, x10 + mul x10, x2, x7 + umulh x16, x2, x7 + adcs x15, x15, x10 + mul x10, x2, x8 + umulh x17, x2, x8 + adcs x16, x16, x10 + mul x10, x2, x9 + umulh x19, x2, x9 + adcs x17, x17, x10 + adc x19, x19, xzr + mul x10, x3, x4 + adds x13, x13, x10 + mul x10, x3, x5 + adcs x14, x14, x10 + mul x10, x3, x6 + adcs x15, x15, x10 + mul x10, x3, x7 + adcs x16, x16, x10 + mul x10, x3, x8 + adcs x17, x17, x10 + mul x10, x3, x9 + adcs x19, x19, x10 + cset x20, cs + umulh x10, x3, x4 + adds x14, x14, x10 + umulh x10, x3, x5 + adcs x15, x15, x10 + umulh x10, x3, x6 + adcs x16, x16, x10 + umulh x10, x3, x7 + adcs x17, x17, x10 + umulh x10, x3, x8 + adcs x19, x19, x10 + umulh x10, x3, x9 + adc x20, x20, x10 + mul x10, x6, x7 + umulh x21, x6, x7 + adds x20, x20, x10 + adc x21, x21, xzr + mul x10, x4, x5 + adds x15, x15, x10 + mul x10, x4, x6 + adcs x16, x16, x10 + mul x10, x4, x7 + adcs x17, x17, x10 + mul x10, x4, x8 + adcs x19, x19, x10 + mul x10, x4, x9 + adcs x20, x20, x10 + mul x10, x6, x8 + adcs x21, x21, x10 + cset x22, cs + umulh x10, x4, x5 + adds x16, x16, x10 + umulh x10, x4, x6 + adcs x17, x17, x10 + umulh x10, x4, x7 + adcs x19, x19, x10 + umulh x10, x4, x8 + adcs x20, x20, x10 + umulh x10, x4, x9 + adcs x21, x21, x10 + umulh x10, x6, x8 + adc x22, x22, x10 + mul x10, x7, x8 + umulh x23, x7, x8 + adds x22, x22, x10 + adc x23, x23, xzr + mul x10, x5, x6 + adds x17, x17, x10 + mul x10, x5, x7 + adcs x19, x19, x10 + mul x10, x5, x8 + adcs x20, x20, x10 + mul x10, x5, x9 + adcs x21, x21, x10 + mul x10, x6, x9 + adcs x22, x22, x10 + mul x10, x7, x9 + adcs x23, x23, x10 + cset x24, cs + umulh x10, x5, x6 + adds x19, x19, x10 + umulh x10, x5, x7 + adcs x20, x20, x10 + umulh x10, x5, x8 + adcs x21, x21, x10 + umulh x10, x5, x9 + adcs x22, x22, x10 + umulh x10, x6, x9 + adcs x23, x23, x10 + umulh x10, x7, x9 + adc x24, x24, x10 + mul x10, x8, x9 + umulh x25, x8, x9 + adds x24, x24, x10 + adc x25, x25, xzr + adds x11, x11, x11 + adcs x12, x12, x12 + adcs x13, x13, x13 + adcs x14, x14, x14 + adcs x15, x15, x15 + adcs x16, x16, x16 + adcs x17, x17, x17 + adcs x19, x19, x19 + adcs x20, x20, x20 + adcs x21, x21, x21 + adcs x22, x22, x22 + adcs x23, x23, x23 + adcs x24, x24, x24 + adcs x25, x25, x25 + cset x26, cs + umulh x10, x2, x2 + adds x11, x11, x10 + mul x10, x3, x3 + adcs x12, x12, x10 + umulh x10, x3, x3 + adcs x13, x13, x10 + mul x10, x4, x4 + adcs x14, x14, x10 + umulh x10, x4, x4 + adcs x15, x15, x10 + mul x10, x5, x5 + adcs x16, x16, x10 + umulh x10, x5, x5 + adcs x17, x17, x10 + mul x10, x6, x6 + adcs x19, x19, x10 + umulh x10, x6, x6 + adcs x20, x20, x10 + mul x10, x7, x7 + adcs x21, x21, x10 + umulh x10, x7, x7 + adcs x22, x22, x10 + mul x10, x8, x8 + adcs x23, x23, x10 + umulh x10, x8, x8 + adcs x24, x24, x10 + mul x10, x9, x9 + adcs x25, x25, x10 + umulh x10, x9, x9 + adc x26, x26, x10 + ldr x1, [x1, #64] + add x1, x1, x1 + mul x10, x1, x2 + adds x19, x19, x10 + umulh x10, x1, x2 + adcs x20, x20, x10 + mul x10, x1, x4 + adcs x21, x21, x10 + umulh x10, x1, x4 + adcs x22, x22, x10 + mul x10, x1, x6 + adcs x23, x23, x10 + umulh x10, x1, x6 + adcs x24, x24, x10 + mul x10, x1, x8 + adcs x25, x25, x10 + umulh x10, x1, x8 + adcs x26, x26, x10 + lsr x4, x1, #1 + mul x4, x4, x4 + adc x4, x4, xzr + mul x10, x1, x3 + adds x20, x20, x10 + umulh x10, x1, x3 + adcs x21, x21, x10 + mul x10, x1, x5 + adcs x22, x22, x10 + umulh x10, x1, x5 + adcs x23, x23, x10 + mul x10, x1, x7 + adcs x24, x24, x10 + umulh x10, x1, x7 + adcs x25, x25, x10 + mul x10, x1, x9 + adcs x26, x26, x10 + umulh x10, x1, x9 + adc x4, x4, x10 + mul x2, x2, x2 + cmp xzr, xzr + extr x10, x20, x19, #9 + adcs x2, x2, x10 + extr x10, x21, x20, #9 + adcs x11, x11, x10 + extr x10, x22, x21, #9 + adcs x12, x12, x10 + extr x10, x23, x22, #9 + adcs x13, x13, x10 + extr x10, x24, x23, #9 + adcs x14, x14, x10 + extr x10, x25, x24, #9 + adcs x15, x15, x10 + extr x10, x26, x25, #9 + adcs x16, x16, x10 + extr x10, x4, x26, #9 + adcs x17, x17, x10 + orr x19, x19, #0xfffffffffffffe00 + lsr x10, x4, #9 + adcs x19, x19, x10 + sbcs x2, x2, xzr + sbcs x11, x11, xzr + sbcs x12, x12, xzr + sbcs x13, x13, xzr + sbcs x14, x14, xzr + sbcs x15, x15, xzr + sbcs x16, x16, xzr + sbcs x17, x17, xzr + sbc x19, x19, xzr + and x19, x19, #0x1ff + stp x2, x11, [x0] + stp x12, x13, [x0, #16] + stp x14, x15, [x0, #32] + stp x16, x17, [x0, #48] + str x19, [x0, #64] + ret + +p521_jscalarmul_alt_sub_p521: + ldp x5, x6, [x1] + ldp x4, x3, [x2] + subs x5, x5, x4 + sbcs x6, x6, x3 + ldp x7, x8, [x1, #16] + ldp x4, x3, [x2, #16] + sbcs x7, x7, x4 + sbcs x8, x8, x3 + ldp x9, x10, [x1, #32] + ldp x4, x3, [x2, #32] + sbcs x9, x9, x4 + sbcs x10, x10, x3 + ldp x11, x12, [x1, #48] + ldp x4, x3, [x2, #48] + sbcs x11, x11, x4 + sbcs x12, x12, x3 + ldr x13, [x1, #64] + ldr x4, [x2, #64] + sbcs x13, x13, x4 + sbcs x5, x5, xzr + sbcs x6, x6, xzr + sbcs x7, x7, xzr + sbcs x8, x8, xzr + sbcs x9, x9, xzr + sbcs x10, x10, xzr + sbcs x11, x11, xzr + sbcs x12, x12, xzr + sbcs x13, x13, xzr + and x13, x13, #0x1ff + stp x5, x6, [x0] + stp x7, x8, [x0, #16] + stp x9, x10, [x0, #32] + stp x11, x12, [x0, #48] + str x13, [x0, #64] + ret + +#if defined(__linux__) && defined(__ELF__) +.section .note.GNU-stack, "", %progbits +#endif diff --git a/third_party/s2n-bignum/x86_att/p521/bignum_inv_p521.S b/third_party/s2n-bignum/x86_att/p521/bignum_inv_p521.S new file mode 100644 index 0000000000..2908ac6c78 --- /dev/null +++ b/third_party/s2n-bignum/x86_att/p521/bignum_inv_p521.S @@ -0,0 +1,2087 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT-0 + +// ---------------------------------------------------------------------------- +// Modular inverse modulo p_521 = 2^521 - 1 +// Input x[9]; output z[9] +// +// extern void bignum_inv_p521(uint64_t z[static 9],uint64_t x[static 9]); +// +// Assuming the 9-digit input x is coprime to p_521, i.e. is not divisible +// by it, returns z < p_521 such that x * z == 1 (mod p_521). Note that +// x does not need to be reduced modulo p_521, but the output always is. +// +// Standard x86-64 ABI: RDI = z, RSI = x +// Microsoft x64 ABI: RCX = z, RDX = x +// ---------------------------------------------------------------------------- +#include "_internal_s2n_bignum.h" + + + S2N_BN_SYM_VISIBILITY_DIRECTIVE(bignum_inv_p521) + S2N_BN_SYM_PRIVACY_DIRECTIVE(bignum_inv_p521) + .text + +// Size in bytes of a 64-bit word + +#define N 8 + +// Pointer-offset pairs for temporaries on stack + +#define f 0(%rsp) +#define g (9*N)(%rsp) +#define u (18*N)(%rsp) +#define v (27*N)(%rsp) +#define tmp (36*N)(%rsp) +#define tmp2 (37*N)(%rsp) +#define i (38*N)(%rsp) +#define d (39*N)(%rsp) + +#define mat (40*N)(%rsp) + +// Backup for the input pointer + +#define res (44*N)(%rsp) + +// Total size to reserve on the stack + +#define NSPACE (45*N) + +// Syntactic variants to make x86_att version simpler to generate + +#define F 0 +#define G (9*N) +#define U (18*N) +#define V (27*N) +#define MAT (40*N) + +#define ff (%rsp) +#define gg (9*N)(%rsp) + +// Very similar to a subroutine call to the s2n-bignum word_divstep59. +// But different in register usage and returning the final matrix as +// +// [ %r8 %r10] +// [ %r12 %r14] +// +// and also returning the matrix still negated (which doesn't matter) + +#define divstep59(din,fin,gin) \ + movq din, %rsi ; \ + movq fin, %rdx ; \ + movq gin, %rcx ; \ + movq %rdx, %rbx ; \ + andq $0xfffff, %rbx ; \ + movabsq $0xfffffe0000000000, %rax ; \ + orq %rax, %rbx ; \ + andq $0xfffff, %rcx ; \ + movabsq $0xc000000000000000, %rax ; \ + orq %rax, %rcx ; \ + movq $0xfffffffffffffffe, %rax ; \ + xorl %ebp, %ebp ; \ + movl $0x2, %edx ; \ + movq %rbx, %rdi ; \ + movq %rax, %r8 ; \ + testq %rsi, %rsi ; \ + cmovs %rbp, %r8 ; \ + testq $0x1, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + sarq $1, %rcx ; \ + movl $0x100000, %eax ; \ + leaq (%rbx,%rax), %rdx ; \ + leaq (%rcx,%rax), %rdi ; \ + shlq $0x16, %rdx ; \ + shlq $0x16, %rdi ; \ + sarq $0x2b, %rdx ; \ + sarq $0x2b, %rdi ; \ + movabsq $0x20000100000, %rax ; \ + leaq (%rbx,%rax), %rbx ; \ + leaq (%rcx,%rax), %rcx ; \ + sarq $0x2a, %rbx ; \ + sarq $0x2a, %rcx ; \ + movq %rdx, MAT(%rsp) ; \ + movq %rbx, MAT+0x8(%rsp) ; \ + movq %rdi, MAT+0x10(%rsp) ; \ + movq %rcx, MAT+0x18(%rsp) ; \ + movq fin, %r12 ; \ + imulq %r12, %rdi ; \ + imulq %rdx, %r12 ; \ + movq gin, %r13 ; \ + imulq %r13, %rbx ; \ + imulq %rcx, %r13 ; \ + addq %rbx, %r12 ; \ + addq %rdi, %r13 ; \ + sarq $0x14, %r12 ; \ + sarq $0x14, %r13 ; \ + movq %r12, %rbx ; \ + andq $0xfffff, %rbx ; \ + movabsq $0xfffffe0000000000, %rax ; \ + orq %rax, %rbx ; \ + movq %r13, %rcx ; \ + andq $0xfffff, %rcx ; \ + movabsq $0xc000000000000000, %rax ; \ + orq %rax, %rcx ; \ + movq $0xfffffffffffffffe, %rax ; \ + movl $0x2, %edx ; \ + movq %rbx, %rdi ; \ + movq %rax, %r8 ; \ + testq %rsi, %rsi ; \ + cmovs %rbp, %r8 ; \ + testq $0x1, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + sarq $1, %rcx ; \ + movl $0x100000, %eax ; \ + leaq (%rbx,%rax), %r8 ; \ + leaq (%rcx,%rax), %r10 ; \ + shlq $0x16, %r8 ; \ + shlq $0x16, %r10 ; \ + sarq $0x2b, %r8 ; \ + sarq $0x2b, %r10 ; \ + movabsq $0x20000100000, %rax ; \ + leaq (%rbx,%rax), %r15 ; \ + leaq (%rcx,%rax), %r11 ; \ + sarq $0x2a, %r15 ; \ + sarq $0x2a, %r11 ; \ + movq %r13, %rbx ; \ + movq %r12, %rcx ; \ + imulq %r8, %r12 ; \ + imulq %r15, %rbx ; \ + addq %rbx, %r12 ; \ + imulq %r11, %r13 ; \ + imulq %r10, %rcx ; \ + addq %rcx, %r13 ; \ + sarq $0x14, %r12 ; \ + sarq $0x14, %r13 ; \ + movq %r12, %rbx ; \ + andq $0xfffff, %rbx ; \ + movabsq $0xfffffe0000000000, %rax ; \ + orq %rax, %rbx ; \ + movq %r13, %rcx ; \ + andq $0xfffff, %rcx ; \ + movabsq $0xc000000000000000, %rax ; \ + orq %rax, %rcx ; \ + movq MAT(%rsp), %rax ; \ + imulq %r8, %rax ; \ + movq MAT+0x10(%rsp), %rdx ; \ + imulq %r15, %rdx ; \ + imulq MAT+0x8(%rsp), %r8 ; \ + imulq MAT+0x18(%rsp), %r15 ; \ + addq %r8, %r15 ; \ + leaq (%rax,%rdx), %r9 ; \ + movq MAT(%rsp), %rax ; \ + imulq %r10, %rax ; \ + movq MAT+0x10(%rsp), %rdx ; \ + imulq %r11, %rdx ; \ + imulq MAT+0x8(%rsp), %r10 ; \ + imulq MAT+0x18(%rsp), %r11 ; \ + addq %r10, %r11 ; \ + leaq (%rax,%rdx), %r13 ; \ + movq $0xfffffffffffffffe, %rax ; \ + movl $0x2, %edx ; \ + movq %rbx, %rdi ; \ + movq %rax, %r8 ; \ + testq %rsi, %rsi ; \ + cmovs %rbp, %r8 ; \ + testq $0x1, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + cmovs %rbp, %r8 ; \ + movq %rbx, %rdi ; \ + testq %rdx, %rcx ; \ + cmoveq %rbp, %r8 ; \ + cmoveq %rbp, %rdi ; \ + sarq $1, %rcx ; \ + xorq %r8, %rdi ; \ + xorq %r8, %rsi ; \ + btq $0x3f, %r8 ; \ + cmovbq %rcx, %rbx ; \ + movq %rax, %r8 ; \ + subq %rax, %rsi ; \ + leaq (%rcx,%rdi), %rcx ; \ + sarq $1, %rcx ; \ + movl $0x100000, %eax ; \ + leaq (%rbx,%rax), %r8 ; \ + leaq (%rcx,%rax), %r12 ; \ + shlq $0x15, %r8 ; \ + shlq $0x15, %r12 ; \ + sarq $0x2b, %r8 ; \ + sarq $0x2b, %r12 ; \ + movabsq $0x20000100000, %rax ; \ + leaq (%rbx,%rax), %r10 ; \ + leaq (%rcx,%rax), %r14 ; \ + sarq $0x2b, %r10 ; \ + sarq $0x2b, %r14 ; \ + movq %r9, %rax ; \ + imulq %r8, %rax ; \ + movq %r13, %rdx ; \ + imulq %r10, %rdx ; \ + imulq %r15, %r8 ; \ + imulq %r11, %r10 ; \ + addq %r8, %r10 ; \ + leaq (%rax,%rdx), %r8 ; \ + movq %r9, %rax ; \ + imulq %r12, %rax ; \ + movq %r13, %rdx ; \ + imulq %r14, %rdx ; \ + imulq %r15, %r12 ; \ + imulq %r11, %r14 ; \ + addq %r12, %r14 ; \ + leaq (%rax,%rdx), %r12 + +S2N_BN_SYMBOL(bignum_inv_p521): + +#if WINDOWS_ABI + pushq %rdi + pushq %rsi + movq %rcx, %rdi + movq %rdx, %rsi +#endif + +// Save registers and make room for temporaries + + pushq %rbx + pushq %rbp + pushq %r12 + pushq %r13 + pushq %r14 + pushq %r15 + + subq $NSPACE, %rsp + +// Save the return pointer for the end so we can overwrite %rdi later + + movq %rdi, res + +// Copy the prime p_521 = 2^521 - 1 into the f variable + + xorl %eax, %eax + notq %rax + movq %rax, F(%rsp) + movq %rax, F+8(%rsp) + movq %rax, F+16(%rsp) + movq %rax, F+24(%rsp) + movq %rax, F+32(%rsp) + movq %rax, F+40(%rsp) + movq %rax, F+48(%rsp) + movq %rax, F+56(%rsp) + movl $0x1FF, %eax + movq %rax, F+64(%rsp) + +// Copy the input into the g variable, but reduce it strictly mod p_521 +// so that g <= f as assumed in the bound proof. This code fragment is +// very similar to bignum_mod_p521_9. + + movq 64(%rsi), %r8 + movl $0x1FF, %ebx + andq %r8, %rbx + shrq $9, %r8 + + stc + adcq (%rsi), %r8 + movq 8(%rsi), %r9 + adcq $0, %r9 + movq 16(%rsi), %r10 + adcq $0, %r10 + movq 24(%rsi), %r11 + adcq $0, %r11 + movq 32(%rsi), %r12 + adcq $0, %r12 + movq 40(%rsi), %r13 + adcq $0, %r13 + movq 48(%rsi), %r14 + adcq $0, %r14 + movq 56(%rsi), %r15 + adcq $0, %r15 + adcq $0, %rbx + + cmpq $512, %rbx + + sbbq $0, %r8 + movq %r8, G(%rsp) + sbbq $0, %r9 + movq %r9, G+8(%rsp) + sbbq $0, %r10 + movq %r10, G+16(%rsp) + sbbq $0, %r11 + movq %r11, G+24(%rsp) + sbbq $0, %r12 + movq %r12, G+32(%rsp) + sbbq $0, %r13 + movq %r13, G+40(%rsp) + sbbq $0, %r14 + movq %r14, G+48(%rsp) + sbbq $0, %r15 + movq %r15, G+56(%rsp) + sbbq $0, %rbx + andq $0x1FF, %rbx + movq %rbx, G+64(%rsp) + +// Also maintain weakly reduced < 2*p_521 vector [u,v] such that +// [f,g] == x * 2^{1239-59*i} * [u,v] (mod p_521) +// starting with [p_521,x] == x * 2^{1239-59*0} * [0,2^-1239] (mod p_521) +// Note that because (2^{a+521} == 2^a) (mod p_521) we simply have +// (2^-1239 == 2^324) (mod p_521) so the constant initializer is simple. +// +// Based on the standard divstep bound, for inputs <= 2^b we need at least +// n >= (9437 * b + 1) / 4096. Since b is 521, that means 1201 iterations. +// Since we package divstep in multiples of 59 bits, we do 21 blocks of 59 +// making *1239* total. (With a bit more effort we could avoid the full 59 +// divsteps and use a shorter tail computation, but we keep it simple.) +// Hence, after the 21st iteration we have [f,g] == x * [u,v] and since +// |f| = 1 we get the modular inverse from u by flipping its sign with f. + + xorl %eax, %eax + movq %rax, U(%rsp) + movq %rax, U+8(%rsp) + movq %rax, U+16(%rsp) + movq %rax, U+24(%rsp) + movq %rax, U+32(%rsp) + movq %rax, U+40(%rsp) + movq %rax, U+48(%rsp) + movq %rax, U+56(%rsp) + movq %rax, U+64(%rsp) + + movl $16, %ebx + movq %rax, V(%rsp) + movq %rax, V+8(%rsp) + movq %rax, V+16(%rsp) + movq %rax, V+24(%rsp) + movq %rax, V+32(%rsp) + movq %rbx, V+40(%rsp) + movq %rax, V+48(%rsp) + movq %rax, V+56(%rsp) + movq %rax, V+64(%rsp) + +// Start of main loop. We jump into the middle so that the divstep +// portion is common to the special 21st iteration after a uniform +// first 20. + + movq $21, i + movq $1, d + jmp midloop + +loop: + +// Separate out the matrix into sign-magnitude pairs + + movq %r8, %r9 + sarq $63, %r9 + xorq %r9, %r8 + subq %r9, %r8 + + movq %r10, %r11 + sarq $63, %r11 + xorq %r11, %r10 + subq %r11, %r10 + + movq %r12, %r13 + sarq $63, %r13 + xorq %r13, %r12 + subq %r13, %r12 + + movq %r14, %r15 + sarq $63, %r15 + xorq %r15, %r14 + subq %r15, %r14 + +// Adjust the initial values to allow for complement instead of negation +// This initial offset is the same for [f,g] and [u,v] compositions. +// Save it in temporary storage for the [u,v] part and do [f,g] first. + + movq %r8, %rax + andq %r9, %rax + movq %r10, %rdi + andq %r11, %rdi + addq %rax, %rdi + movq %rdi, tmp + + movq %r12, %rax + andq %r13, %rax + movq %r14, %rsi + andq %r15, %rsi + addq %rax, %rsi + movq %rsi, tmp2 + +// Now the computation of the updated f and g values. This maintains a +// 2-word carry between stages so we can conveniently insert the shift +// right by 59 before storing back, and not overwrite digits we need +// again of the old f and g values. +// +// Digit 0 of [f,g] + + xorl %ebx, %ebx + movq F(%rsp), %rax + xorq %r9, %rax + mulq %r8 + addq %rax, %rdi + adcq %rdx, %rbx + movq G(%rsp), %rax + xorq %r11, %rax + mulq %r10 + addq %rax, %rdi + adcq %rdx, %rbx + + xorl %ebp, %ebp + movq F(%rsp), %rax + xorq %r13, %rax + mulq %r12 + addq %rax, %rsi + adcq %rdx, %rbp + movq G(%rsp), %rax + xorq %r15, %rax + mulq %r14 + addq %rax, %rsi + adcq %rdx, %rbp + +// Digit 1 of [f,g] + + xorl %ecx, %ecx + movq F+N(%rsp), %rax + xorq %r9, %rax + mulq %r8 + addq %rax, %rbx + adcq %rdx, %rcx + movq G+N(%rsp), %rax + xorq %r11, %rax + mulq %r10 + addq %rax, %rbx + adcq %rdx, %rcx + shrdq $59, %rbx, %rdi + movq %rdi, F(%rsp) + + xorl %edi, %edi + movq F+N(%rsp), %rax + xorq %r13, %rax + mulq %r12 + addq %rax, %rbp + adcq %rdx, %rdi + movq G+N(%rsp), %rax + xorq %r15, %rax + mulq %r14 + addq %rax, %rbp + adcq %rdx, %rdi + shrdq $59, %rbp, %rsi + movq %rsi, G(%rsp) + +// Digit 2 of [f,g] + + xorl %esi, %esi + movq F+2*N(%rsp), %rax + xorq %r9, %rax + mulq %r8 + addq %rax, %rcx + adcq %rdx, %rsi + movq G+2*N(%rsp), %rax + xorq %r11, %rax + mulq %r10 + addq %rax, %rcx + adcq %rdx, %rsi + shrdq $59, %rcx, %rbx + movq %rbx, F+N(%rsp) + + xorl %ebx, %ebx + movq F+2*N(%rsp), %rax + xorq %r13, %rax + mulq %r12 + addq %rax, %rdi + adcq %rdx, %rbx + movq G+2*N(%rsp), %rax + xorq %r15, %rax + mulq %r14 + addq %rax, %rdi + adcq %rdx, %rbx + shrdq $59, %rdi, %rbp + movq %rbp, G+N(%rsp) + +// Digit 3 of [f,g] + + xorl %ebp, %ebp + movq F+3*N(%rsp), %rax + xorq %r9, %rax + mulq %r8 + addq %rax, %rsi + adcq %rdx, %rbp + movq G+3*N(%rsp), %rax + xorq %r11, %rax + mulq %r10 + addq %rax, %rsi + adcq %rdx, %rbp + shrdq $59, %rsi, %rcx + movq %rcx, F+2*N(%rsp) + + xorl %ecx, %ecx + movq F+3*N(%rsp), %rax + xorq %r13, %rax + mulq %r12 + addq %rax, %rbx + adcq %rdx, %rcx + movq G+3*N(%rsp), %rax + xorq %r15, %rax + mulq %r14 + addq %rax, %rbx + adcq %rdx, %rcx + shrdq $59, %rbx, %rdi + movq %rdi, G+2*N(%rsp) + +// Digit 4 of [f,g] + + xorl %edi, %edi + movq F+4*N(%rsp), %rax + xorq %r9, %rax + mulq %r8 + addq %rax, %rbp + adcq %rdx, %rdi + movq G+4*N(%rsp), %rax + xorq %r11, %rax + mulq %r10 + addq %rax, %rbp + adcq %rdx, %rdi + shrdq $59, %rbp, %rsi + movq %rsi, F+3*N(%rsp) + + xorl %esi, %esi + movq F+4*N(%rsp), %rax + xorq %r13, %rax + mulq %r12 + addq %rax, %rcx + adcq %rdx, %rsi + movq G+4*N(%rsp), %rax + xorq %r15, %rax + mulq %r14 + addq %rax, %rcx + adcq %rdx, %rsi + shrdq $59, %rcx, %rbx + movq %rbx, G+3*N(%rsp) + +// Digit 5 of [f,g] + + xorl %ebx, %ebx + movq F+5*N(%rsp), %rax + xorq %r9, %rax + mulq %r8 + addq %rax, %rdi + adcq %rdx, %rbx + movq G+5*N(%rsp), %rax + xorq %r11, %rax + mulq %r10 + addq %rax, %rdi + adcq %rdx, %rbx + shrdq $59, %rdi, %rbp + movq %rbp, F+4*N(%rsp) + + xorl %ebp, %ebp + movq F+5*N(%rsp), %rax + xorq %r13, %rax + mulq %r12 + addq %rax, %rsi + adcq %rdx, %rbp + movq G+5*N(%rsp), %rax + xorq %r15, %rax + mulq %r14 + addq %rax, %rsi + adcq %rdx, %rbp + shrdq $59, %rsi, %rcx + movq %rcx, G+4*N(%rsp) + +// Digit 6 of [f,g] + + xorl %ecx, %ecx + movq F+6*N(%rsp), %rax + xorq %r9, %rax + mulq %r8 + addq %rax, %rbx + adcq %rdx, %rcx + movq G+6*N(%rsp), %rax + xorq %r11, %rax + mulq %r10 + addq %rax, %rbx + adcq %rdx, %rcx + shrdq $59, %rbx, %rdi + movq %rdi, F+5*N(%rsp) + + xorl %edi, %edi + movq F+6*N(%rsp), %rax + xorq %r13, %rax + mulq %r12 + addq %rax, %rbp + adcq %rdx, %rdi + movq G+6*N(%rsp), %rax + xorq %r15, %rax + mulq %r14 + addq %rax, %rbp + adcq %rdx, %rdi + shrdq $59, %rbp, %rsi + movq %rsi, G+5*N(%rsp) + +// Digit 7 of [f,g] + + xorl %esi, %esi + movq F+7*N(%rsp), %rax + xorq %r9, %rax + mulq %r8 + addq %rax, %rcx + adcq %rdx, %rsi + movq G+7*N(%rsp), %rax + xorq %r11, %rax + mulq %r10 + addq %rax, %rcx + adcq %rdx, %rsi + shrdq $59, %rcx, %rbx + movq %rbx, F+6*N(%rsp) + + xorl %ebx, %ebx + movq F+7*N(%rsp), %rax + xorq %r13, %rax + mulq %r12 + addq %rax, %rdi + adcq %rdx, %rbx + movq G+7*N(%rsp), %rax + xorq %r15, %rax + mulq %r14 + addq %rax, %rdi + adcq %rdx, %rbx + shrdq $59, %rdi, %rbp + movq %rbp, G+6*N(%rsp) + +// Digits 8 and 9 of [f,g] + + movq F+8*N(%rsp), %rax + xorq %r9, %rax + movq %rax, %rbp + sarq $63, %rbp + andq %r8, %rbp + negq %rbp + mulq %r8 + addq %rax, %rsi + adcq %rdx, %rbp + movq G+8*N(%rsp), %rax + xorq %r11, %rax + movq %rax, %rdx + sarq $63, %rdx + andq %r10, %rdx + subq %rdx, %rbp + mulq %r10 + addq %rax, %rsi + adcq %rdx, %rbp + shrdq $59, %rsi, %rcx + movq %rcx, F+7*N(%rsp) + shrdq $59, %rbp, %rsi + + movq F+8*N(%rsp), %rax + movq %rsi, F+8*N(%rsp) + + xorq %r13, %rax + movq %rax, %rsi + sarq $63, %rsi + andq %r12, %rsi + negq %rsi + mulq %r12 + addq %rax, %rbx + adcq %rdx, %rsi + movq G+8*N(%rsp), %rax + xorq %r15, %rax + movq %rax, %rdx + sarq $63, %rdx + andq %r14, %rdx + subq %rdx, %rsi + mulq %r14 + addq %rax, %rbx + adcq %rdx, %rsi + shrdq $59, %rbx, %rdi + movq %rdi, G+7*N(%rsp) + shrdq $59, %rsi, %rbx + movq %rbx, G+8*N(%rsp) + +// Get the initial carries back from storage and do the [u,v] accumulation + + movq tmp, %rbx + movq tmp2, %rbp + +// Digit 0 of [u,v] + + xorl %ecx, %ecx + movq U(%rsp), %rax + xorq %r9, %rax + mulq %r8 + addq %rax, %rbx + adcq %rdx, %rcx + movq V(%rsp), %rax + xorq %r11, %rax + mulq %r10 + addq %rax, %rbx + adcq %rdx, %rcx + + xorl %esi, %esi + movq U(%rsp), %rax + xorq %r13, %rax + mulq %r12 + movq %rbx, U(%rsp) + addq %rax, %rbp + adcq %rdx, %rsi + movq V(%rsp), %rax + xorq %r15, %rax + mulq %r14 + addq %rax, %rbp + adcq %rdx, %rsi + movq %rbp, V(%rsp) + +// Digit 1 of [u,v] + + xorl %ebx, %ebx + movq U+N(%rsp), %rax + xorq %r9, %rax + mulq %r8 + addq %rax, %rcx + adcq %rdx, %rbx + movq V+N(%rsp), %rax + xorq %r11, %rax + mulq %r10 + addq %rax, %rcx + adcq %rdx, %rbx + + xorl %ebp, %ebp + movq U+N(%rsp), %rax + xorq %r13, %rax + mulq %r12 + movq %rcx, U+N(%rsp) + addq %rax, %rsi + adcq %rdx, %rbp + movq V+N(%rsp), %rax + xorq %r15, %rax + mulq %r14 + addq %rax, %rsi + adcq %rdx, %rbp + movq %rsi, V+N(%rsp) + +// Digit 2 of [u,v] + + xorl %ecx, %ecx + movq U+2*N(%rsp), %rax + xorq %r9, %rax + mulq %r8 + addq %rax, %rbx + adcq %rdx, %rcx + movq V+2*N(%rsp), %rax + xorq %r11, %rax + mulq %r10 + addq %rax, %rbx + adcq %rdx, %rcx + + xorl %esi, %esi + movq U+2*N(%rsp), %rax + xorq %r13, %rax + mulq %r12 + movq %rbx, U+2*N(%rsp) + addq %rax, %rbp + adcq %rdx, %rsi + movq V+2*N(%rsp), %rax + xorq %r15, %rax + mulq %r14 + addq %rax, %rbp + adcq %rdx, %rsi + movq %rbp, V+2*N(%rsp) + +// Digit 3 of [u,v] + + xorl %ebx, %ebx + movq U+3*N(%rsp), %rax + xorq %r9, %rax + mulq %r8 + addq %rax, %rcx + adcq %rdx, %rbx + movq V+3*N(%rsp), %rax + xorq %r11, %rax + mulq %r10 + addq %rax, %rcx + adcq %rdx, %rbx + + xorl %ebp, %ebp + movq U+3*N(%rsp), %rax + xorq %r13, %rax + mulq %r12 + movq %rcx, U+3*N(%rsp) + addq %rax, %rsi + adcq %rdx, %rbp + movq V+3*N(%rsp), %rax + xorq %r15, %rax + mulq %r14 + addq %rax, %rsi + adcq %rdx, %rbp + movq %rsi, V+3*N(%rsp) + +// Digit 4 of [u,v] + + xorl %ecx, %ecx + movq U+4*N(%rsp), %rax + xorq %r9, %rax + mulq %r8 + addq %rax, %rbx + adcq %rdx, %rcx + movq V+4*N(%rsp), %rax + xorq %r11, %rax + mulq %r10 + addq %rax, %rbx + adcq %rdx, %rcx + + xorl %esi, %esi + movq U+4*N(%rsp), %rax + xorq %r13, %rax + mulq %r12 + movq %rbx, U+4*N(%rsp) + addq %rax, %rbp + adcq %rdx, %rsi + movq V+4*N(%rsp), %rax + xorq %r15, %rax + mulq %r14 + addq %rax, %rbp + adcq %rdx, %rsi + movq %rbp, V+4*N(%rsp) + +// Digit 5 of [u,v] + + xorl %ebx, %ebx + movq U+5*N(%rsp), %rax + xorq %r9, %rax + mulq %r8 + addq %rax, %rcx + adcq %rdx, %rbx + movq V+5*N(%rsp), %rax + xorq %r11, %rax + mulq %r10 + addq %rax, %rcx + adcq %rdx, %rbx + + xorl %ebp, %ebp + movq U+5*N(%rsp), %rax + xorq %r13, %rax + mulq %r12 + movq %rcx, U+5*N(%rsp) + addq %rax, %rsi + adcq %rdx, %rbp + movq V+5*N(%rsp), %rax + xorq %r15, %rax + mulq %r14 + addq %rax, %rsi + adcq %rdx, %rbp + movq %rsi, V+5*N(%rsp) + +// Digit 6 of [u,v] + + xorl %ecx, %ecx + movq U+6*N(%rsp), %rax + xorq %r9, %rax + mulq %r8 + addq %rax, %rbx + adcq %rdx, %rcx + movq V+6*N(%rsp), %rax + xorq %r11, %rax + mulq %r10 + addq %rax, %rbx + adcq %rdx, %rcx + + xorl %esi, %esi + movq U+6*N(%rsp), %rax + xorq %r13, %rax + mulq %r12 + movq %rbx, U+6*N(%rsp) + addq %rax, %rbp + adcq %rdx, %rsi + movq V+6*N(%rsp), %rax + xorq %r15, %rax + mulq %r14 + addq %rax, %rbp + adcq %rdx, %rsi + movq %rbp, V+6*N(%rsp) + +// Digit 7 of [u,v] + + xorl %ebx, %ebx + movq U+7*N(%rsp), %rax + xorq %r9, %rax + mulq %r8 + addq %rax, %rcx + adcq %rdx, %rbx + movq V+7*N(%rsp), %rax + xorq %r11, %rax + mulq %r10 + addq %rax, %rcx + adcq %rdx, %rbx + + xorl %ebp, %ebp + movq U+7*N(%rsp), %rax + xorq %r13, %rax + mulq %r12 + movq %rcx, U+7*N(%rsp) + addq %rax, %rsi + adcq %rdx, %rbp + movq V+7*N(%rsp), %rax + xorq %r15, %rax + mulq %r14 + addq %rax, %rsi + adcq %rdx, %rbp + movq %rsi, V+7*N(%rsp) + +// Digits 8 and 9 of u (top is unsigned) + + movq U+8*N(%rsp), %rax + xorq %r9, %rax + movq %r9, %rcx + andq %r8, %rcx + negq %rcx + mulq %r8 + addq %rax, %rbx + adcq %rdx, %rcx + movq V+8*N(%rsp), %rax + xorq %r11, %rax + movq %r11, %rdx + andq %r10, %rdx + subq %rdx, %rcx + mulq %r10 + addq %rax, %rbx + adcq %rcx, %rdx + +// Modular reduction of u + + movq %rdx, %rax + shldq $55, %rbx, %rdx + sarq $63, %rax + addq %rax, %rdx + movq %rdx, %rax + shlq $9, %rdx + subq %rdx, %rbx + movq %rax, %rdx + sarq $63, %rax + movq U(%rsp), %rcx + addq %rdx, %rcx + movq %rcx, U(%rsp) + movq U+N(%rsp), %rcx + adcq %rax, %rcx + movq %rcx, U+N(%rsp) + movq U+2*N(%rsp), %rcx + adcq %rax, %rcx + movq %rcx, U+2*N(%rsp) + movq U+3*N(%rsp), %rcx + adcq %rax, %rcx + movq %rcx, U+3*N(%rsp) + movq U+4*N(%rsp), %rcx + adcq %rax, %rcx + movq %rcx, U+4*N(%rsp) + movq U+5*N(%rsp), %rcx + adcq %rax, %rcx + movq %rcx, U+5*N(%rsp) + movq U+6*N(%rsp), %rcx + adcq %rax, %rcx + movq %rcx, U+6*N(%rsp) + movq U+7*N(%rsp), %rcx + adcq %rax, %rcx + movq %rcx, U+7*N(%rsp) + adcq %rax, %rbx + +// Preload for last use of old u digit 8 + + movq U+8*N(%rsp), %rax + movq %rbx, U+8*N(%rsp) + +// Digits 8 and 9 of v (top is unsigned) + + xorq %r13, %rax + movq %r13, %rbx + andq %r12, %rbx + negq %rbx + mulq %r12 + addq %rax, %rbp + adcq %rdx, %rbx + movq V+8*N(%rsp), %rax + xorq %r15, %rax + movq %r15, %rdx + andq %r14, %rdx + subq %rdx, %rbx + mulq %r14 + addq %rax, %rbp + adcq %rbx, %rdx + +// Modular reduction of v + + movq %rdx, %rax + shldq $55, %rbp, %rdx + sarq $63, %rax + addq %rax, %rdx + movq %rdx, %rax + shlq $9, %rdx + subq %rdx, %rbp + movq %rax, %rdx + sarq $63, %rax + movq V(%rsp), %rcx + addq %rdx, %rcx + movq %rcx, V(%rsp) + movq V+N(%rsp), %rcx + adcq %rax, %rcx + movq %rcx, V+N(%rsp) + movq V+2*N(%rsp), %rcx + adcq %rax, %rcx + movq %rcx, V+2*N(%rsp) + movq V+3*N(%rsp), %rcx + adcq %rax, %rcx + movq %rcx, V+3*N(%rsp) + movq V+4*N(%rsp), %rcx + adcq %rax, %rcx + movq %rcx, V+4*N(%rsp) + movq V+5*N(%rsp), %rcx + adcq %rax, %rcx + movq %rcx, V+5*N(%rsp) + movq V+6*N(%rsp), %rcx + adcq %rax, %rcx + movq %rcx, V+6*N(%rsp) + movq V+7*N(%rsp), %rcx + adcq %rax, %rcx + movq %rcx, V+7*N(%rsp) + adcq %rax, %rbp + movq %rbp, V+8*N(%rsp) + +midloop: + + divstep59(d,ff,gg) + movq %rsi, d + +// Next iteration + + decq i + jnz loop + +// The 21st and last iteration does not need anything except the +// u value and the sign of f; the latter can be obtained from the +// lowest word of f. So it's done differently from the main loop. +// Find the sign of the new f. For this we just need one digit +// since we know (for in-scope cases) that f is either +1 or -1. +// We don't explicitly shift right by 59 either, but looking at +// bit 63 (or any bit >= 60) of the unshifted result is enough +// to distinguish -1 from +1; this is then made into a mask. + + movq F(%rsp), %rax + movq G(%rsp), %rcx + imulq %r8, %rax + imulq %r10, %rcx + addq %rcx, %rax + sarq $63, %rax + +// Now separate out the matrix into sign-magnitude pairs +// and adjust each one based on the sign of f. +// +// Note that at this point we expect |f|=1 and we got its +// sign above, so then since [f,0] == x * [u,v] (mod p_521) +// we want to flip the sign of u according to that of f. + + movq %r8, %r9 + sarq $63, %r9 + xorq %r9, %r8 + subq %r9, %r8 + xorq %rax, %r9 + + movq %r10, %r11 + sarq $63, %r11 + xorq %r11, %r10 + subq %r11, %r10 + xorq %rax, %r11 + + movq %r12, %r13 + sarq $63, %r13 + xorq %r13, %r12 + subq %r13, %r12 + xorq %rax, %r13 + + movq %r14, %r15 + sarq $63, %r15 + xorq %r15, %r14 + subq %r15, %r14 + xorq %rax, %r15 + +// Adjust the initial value to allow for complement instead of negation + + movq %r8, %rax + andq %r9, %rax + movq %r10, %rbx + andq %r11, %rbx + addq %rax, %rbx + +// Digit 0 of u + + xorl %ecx, %ecx + movq U(%rsp), %rax + xorq %r9, %rax + mulq %r8 + addq %rax, %rbx + adcq %rdx, %rcx + movq V(%rsp), %rax + xorq %r11, %rax + mulq %r10 + addq %rax, %rbx + movq %rbx, U(%rsp) + adcq %rdx, %rcx + +// Digit 1 of u + + xorl %ebx, %ebx + movq U+N(%rsp), %rax + xorq %r9, %rax + mulq %r8 + addq %rax, %rcx + adcq %rdx, %rbx + movq V+N(%rsp), %rax + xorq %r11, %rax + mulq %r10 + addq %rax, %rcx + movq %rcx, U+N(%rsp) + adcq %rdx, %rbx + +// Digit 2 of u + + xorl %ecx, %ecx + movq U+2*N(%rsp), %rax + xorq %r9, %rax + mulq %r8 + addq %rax, %rbx + adcq %rdx, %rcx + movq V+2*N(%rsp), %rax + xorq %r11, %rax + mulq %r10 + addq %rax, %rbx + movq %rbx, U+2*N(%rsp) + adcq %rdx, %rcx + +// Digit 3 of u + + xorl %ebx, %ebx + movq U+3*N(%rsp), %rax + xorq %r9, %rax + mulq %r8 + addq %rax, %rcx + adcq %rdx, %rbx + movq V+3*N(%rsp), %rax + xorq %r11, %rax + mulq %r10 + addq %rax, %rcx + movq %rcx, U+3*N(%rsp) + adcq %rdx, %rbx + +// Digit 4 of u + + xorl %ecx, %ecx + movq U+4*N(%rsp), %rax + xorq %r9, %rax + mulq %r8 + addq %rax, %rbx + adcq %rdx, %rcx + movq V+4*N(%rsp), %rax + xorq %r11, %rax + mulq %r10 + addq %rax, %rbx + movq %rbx, U+4*N(%rsp) + adcq %rdx, %rcx + +// Digit 5 of u + + xorl %ebx, %ebx + movq U+5*N(%rsp), %rax + xorq %r9, %rax + mulq %r8 + addq %rax, %rcx + adcq %rdx, %rbx + movq V+5*N(%rsp), %rax + xorq %r11, %rax + mulq %r10 + addq %rax, %rcx + movq %rcx, U+5*N(%rsp) + adcq %rdx, %rbx + +// Digit 6 of u + + xorl %ecx, %ecx + movq U+6*N(%rsp), %rax + xorq %r9, %rax + mulq %r8 + addq %rax, %rbx + adcq %rdx, %rcx + movq V+6*N(%rsp), %rax + xorq %r11, %rax + mulq %r10 + addq %rax, %rbx + movq %rbx, U+6*N(%rsp) + adcq %rdx, %rcx + +// Digit 7 of u + + xorl %ebx, %ebx + movq U+7*N(%rsp), %rax + xorq %r9, %rax + mulq %r8 + addq %rax, %rcx + adcq %rdx, %rbx + movq V+7*N(%rsp), %rax + xorq %r11, %rax + mulq %r10 + addq %rax, %rcx + movq %rcx, U+7*N(%rsp) + adcq %rdx, %rbx + +// Digits 8 and 9 of u (top is unsigned) + + movq U+8*N(%rsp), %rax + xorq %r9, %rax + movq %r9, %rcx + andq %r8, %rcx + negq %rcx + mulq %r8 + addq %rax, %rbx + adcq %rdx, %rcx + movq V+8*N(%rsp), %rax + xorq %r11, %rax + movq %r11, %rdx + andq %r10, %rdx + subq %rdx, %rcx + mulq %r10 + addq %rax, %rbx + adcq %rcx, %rdx + +// Modular reduction of u + + movq %rdx, %rax + shldq $55, %rbx, %rdx + sarq $63, %rax + addq %rax, %rdx + movq %rdx, %rax + shlq $9, %rdx + subq %rdx, %rbx + movq %rax, %rdx + sarq $63, %rax + movq U(%rsp), %rcx + addq %rdx, %rcx + movq %rcx, U(%rsp) + movq U+N(%rsp), %rcx + adcq %rax, %rcx + movq %rcx, U+N(%rsp) + movq U+2*N(%rsp), %rcx + adcq %rax, %rcx + movq %rcx, U+2*N(%rsp) + movq U+3*N(%rsp), %rcx + adcq %rax, %rcx + movq %rcx, U+3*N(%rsp) + movq U+4*N(%rsp), %rcx + adcq %rax, %rcx + movq %rcx, U+4*N(%rsp) + movq U+5*N(%rsp), %rcx + adcq %rax, %rcx + movq %rcx, U+5*N(%rsp) + movq U+6*N(%rsp), %rcx + adcq %rax, %rcx + movq %rcx, U+6*N(%rsp) + movq U+7*N(%rsp), %rcx + adcq %rax, %rcx + movq %rcx, U+7*N(%rsp) + adcq %rax, %rbx + movq %rbx, U+8*N(%rsp) + +// Further strict reduction ready for the output, which just means +// a conditional subtraction of p_521 + + xorl %eax, %eax + notq %rax + movq U(%rsp), %r8 + subq %rax, %r8 + movq U+N(%rsp), %r9 + sbbq %rax, %r9 + movq U+2*N(%rsp), %r10 + sbbq %rax, %r10 + movq U+3*N(%rsp), %r11 + sbbq %rax, %r11 + movq U+4*N(%rsp), %r12 + sbbq %rax, %r12 + movq U+5*N(%rsp), %r13 + sbbq %rax, %r13 + movq U+6*N(%rsp), %r14 + sbbq %rax, %r14 + movq U+7*N(%rsp), %r15 + sbbq %rax, %r15 + movl $0x1FF, %eax + movq U+8*N(%rsp), %rbp + sbbq %rax, %rbp + + cmovcq U(%rsp), %r8 + cmovcq U+N(%rsp), %r9 + cmovcq U+2*N(%rsp), %r10 + cmovcq U+3*N(%rsp), %r11 + cmovcq U+4*N(%rsp), %r12 + cmovcq U+5*N(%rsp), %r13 + cmovcq U+6*N(%rsp), %r14 + cmovcq U+7*N(%rsp), %r15 + cmovcq U+8*N(%rsp), %rbp + +// Store it back to the final output + + movq res, %rdi + movq %r8, (%rdi) + movq %r9, N(%rdi) + movq %r10, 2*N(%rdi) + movq %r11, 3*N(%rdi) + movq %r12, 4*N(%rdi) + movq %r13, 5*N(%rdi) + movq %r14, 6*N(%rdi) + movq %r15, 7*N(%rdi) + movq %rbp, 8*N(%rdi) + +// Restore stack and registers + + addq $NSPACE, %rsp + + popq %r15 + popq %r14 + popq %r13 + popq %r12 + popq %rbp + popq %rbx + +#if WINDOWS_ABI + popq %rsi + popq %rdi +#endif + ret + +#if defined(__linux__) && defined(__ELF__) +.section .note.GNU-stack, "", %progbits +#endif diff --git a/third_party/s2n-bignum/x86_att/p521/p521_jscalarmul.S b/third_party/s2n-bignum/x86_att/p521/p521_jscalarmul.S new file mode 100644 index 0000000000..905c32a76d --- /dev/null +++ b/third_party/s2n-bignum/x86_att/p521/p521_jscalarmul.S @@ -0,0 +1,2460 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT-0 + +// ---------------------------------------------------------------------------- +// Jacobian form scalar multiplication for P-521 +// Input scalar[9], point[27]; output res[27] +// +// extern void p521_jscalarmul +// (uint64_t res[static 27], +// uint64_t scalar[static 9], +// uint64_t point[static 27]); +// +// This function is a variant of its affine point version p521_scalarmul. +// Here, input and output points are assumed to be in Jacobian form with +// a triple (x,y,z) representing the affine point (x/z^2,y/z^3) when +// z is nonzero or the point at infinity (group identity) if z = 0. +// +// Given scalar = n and point = P, assumed to be on the NIST elliptic +// curve P-521, returns a representation of n * P. If the result is the +// point at infinity (either because the input point was or because the +// scalar was a multiple of p_521) then the output is guaranteed to +// represent the point at infinity, i.e. to have its z coordinate zero. +// +// Standard x86-64 ABI: RDI = res, RSI = scalar, RDX = point +// Microsoft x64 ABI: RCX = res, RDX = scalar, R8 = point +// ---------------------------------------------------------------------------- + +#include "_internal_s2n_bignum.h" + + + S2N_BN_SYM_VISIBILITY_DIRECTIVE(p521_jscalarmul) + S2N_BN_SYM_PRIVACY_DIRECTIVE(p521_jscalarmul) + + .text + .balign 4 + +// Size of individual field elements + +#define NUMSIZE 72 +#define JACSIZE (3*NUMSIZE) + +// Intermediate variables on the stack. +// The table is 16 entries, each of size JACSIZE = 3 * NUMSIZE +// Uppercase syntactic variants make x86_att version simpler to generate. + +#define SCALARB (0*NUMSIZE) +#define scalarb (0*NUMSIZE)(%rsp) +#define ACC (1*NUMSIZE) +#define acc (1*NUMSIZE)(%rsp) +#define TABENT (4*NUMSIZE) +#define tabent (4*NUMSIZE)(%rsp) + +#define TAB (7*NUMSIZE) +#define tab (7*NUMSIZE)(%rsp) + +#define res (55*NUMSIZE)(%rsp) + +#define NSPACE (56*NUMSIZE) + +// Avoid using .rep for the sake of the BoringSSL/AWS-LC delocator, +// which doesn't accept repetitions, assembler macros etc. + +#define selectblock(I,C) \ + cmpq $I, %rdi ; \ + cmovzq TAB+JACSIZE*(I-1)+C*NUMSIZE(%rsp), %rax ; \ + cmovzq TAB+JACSIZE*(I-1)+8+C*NUMSIZE(%rsp), %rbx ; \ + cmovzq TAB+JACSIZE*(I-1)+16+C*NUMSIZE(%rsp), %rcx ; \ + cmovzq TAB+JACSIZE*(I-1)+24+C*NUMSIZE(%rsp), %rdx ; \ + cmovzq TAB+JACSIZE*(I-1)+32+C*NUMSIZE(%rsp), %r8 ; \ + cmovzq TAB+JACSIZE*(I-1)+40+C*NUMSIZE(%rsp), %r9 ; \ + cmovzq TAB+JACSIZE*(I-1)+48+C*NUMSIZE(%rsp), %r10 ; \ + cmovzq TAB+JACSIZE*(I-1)+56+C*NUMSIZE(%rsp), %r11 ; \ + cmovzq TAB+JACSIZE*(I-1)+64+C*NUMSIZE(%rsp), %r12 + +S2N_BN_SYMBOL(p521_jscalarmul): + +// The Windows version literally calls the standard ABI version. +// This simplifies the proofs since subroutine offsets are fixed. + +#if WINDOWS_ABI + pushq %rdi + pushq %rsi + movq %rcx, %rdi + movq %rdx, %rsi + movq %r8, %rdx + callq p521_jscalarmul_standard + popq %rsi + popq %rdi + ret + +p521_jscalarmul_standard: +#endif + +// Real start of the standard ABI code. + + pushq %r15 + pushq %r14 + pushq %r13 + pushq %r12 + pushq %rbp + pushq %rbx + + subq $NSPACE, %rsp + +// Preserve the "res" input argument; others get processed early. + + movq %rdi, res + +// Reduce the input scalar mod n_521 and store it to "scalarb". + + movq %rdx, %rbx + leaq SCALARB(%rsp), %rdi + callq p521_jscalarmul_bignum_mod_n521_9 + +// Set the tab[0] table entry to the input point = 1 * P, but also +// reduce all coordinates modulo p. In principle we assume reduction +// as a precondition, but this reduces the scope for surprise, e.g. +// making sure that any input with z = 0 is treated as zero, even +// if the other coordinates are not in fact reduced. + + leaq TAB(%rsp), %rdi + movq %rbx, %rsi + callq p521_jscalarmul_bignum_mod_p521_9 + + leaq TAB+NUMSIZE(%rsp), %rdi + leaq NUMSIZE(%rbx), %rsi + callq p521_jscalarmul_bignum_mod_p521_9 + + leaq TAB+2*NUMSIZE(%rsp), %rdi + leaq 2*NUMSIZE(%rbx), %rsi + callq p521_jscalarmul_bignum_mod_p521_9 + +// If bit 520 of the scalar is set, then negate the scalar mod n_521, +// i.e. do scalar |-> n_521 - scalar, and also the point to compensate +// by negating its y coordinate. This further step is not needed by +// the indexing scheme (the top window is only a couple of bits either +// way), but is convenient to exclude a problem with the specific value +// scalar = n_521 - 18, where the last Jacobian addition is of the form +// (n_521 - 9) * P + -(9 * P) and hence is a degenerate doubling case. + + xorl %eax, %eax + notq %rax + movq $0xbb6fb71e91386409, %r8 + subq SCALARB(%rsp), %r8 + movq $0x3bb5c9b8899c47ae, %r9 + sbbq SCALARB+8(%rsp), %r9 + movq $0x7fcc0148f709a5d0, %r10 + sbbq SCALARB+16(%rsp), %r10 + movq $0x51868783bf2f966b, %r11 + sbbq SCALARB+24(%rsp), %r11 + leaq -5(%rax), %r12 + sbbq SCALARB+32(%rsp), %r12 + movq %rax, %r13 + sbbq SCALARB+40(%rsp), %r13 + movq %rax, %r14 + sbbq SCALARB+48(%rsp), %r14 + movq %rax, %r15 + sbbq SCALARB+56(%rsp), %r15 + movq $0x1ff, %rax + movq SCALARB+64(%rsp), %rcx + sbbq %rcx, %rax + + btq $8, %rcx + sbbq %rcx, %rcx + + cmovncq SCALARB(%rsp), %r8 + cmovncq SCALARB+8(%rsp), %r9 + cmovncq SCALARB+16(%rsp), %r10 + cmovncq SCALARB+24(%rsp), %r11 + cmovncq SCALARB+32(%rsp), %r12 + cmovncq SCALARB+40(%rsp), %r13 + cmovncq SCALARB+48(%rsp), %r14 + cmovncq SCALARB+56(%rsp), %r15 + cmovncq SCALARB+64(%rsp), %rax + + movq %r8, SCALARB(%rsp) + movq %r9, SCALARB+8(%rsp) + movq %r10, SCALARB+16(%rsp) + movq %r11, SCALARB+24(%rsp) + movq %r12, SCALARB+32(%rsp) + movq %r13, SCALARB+40(%rsp) + movq %r14, SCALARB+48(%rsp) + movq %r15, SCALARB+56(%rsp) + movq %rax, SCALARB+64(%rsp) + + movq TAB+NUMSIZE(%rsp), %r8 + movq TAB+NUMSIZE+8(%rsp), %r9 + movq TAB+NUMSIZE+16(%rsp), %r10 + movq TAB+NUMSIZE+24(%rsp), %r11 + movq TAB+NUMSIZE+32(%rsp), %r12 + movq TAB+NUMSIZE+40(%rsp), %r13 + movq TAB+NUMSIZE+48(%rsp), %r14 + movq TAB+NUMSIZE+56(%rsp), %r15 + movq TAB+NUMSIZE+64(%rsp), %rax + + movq %r8, %rbx + movq %r12, %rbp + orq %r9, %rbx + orq %r13, %rbp + orq %r10, %rbx + orq %r14, %rbp + orq %r11, %rbx + orq %r15, %rbp + orq %rbp, %rbx + orq %rax, %rbx + cmovzq %rbx, %rcx + + xorq %rcx, %r8 + xorq %rcx, %r9 + xorq %rcx, %r10 + xorq %rcx, %r11 + xorq %rcx, %r12 + xorq %rcx, %r13 + xorq %rcx, %r14 + xorq %rcx, %r15 + andq $0x1FF, %rcx + xorq %rcx, %rax + + movq %r8, TAB+NUMSIZE(%rsp) + movq %r9, TAB+NUMSIZE+8(%rsp) + movq %r10, TAB+NUMSIZE+16(%rsp) + movq %r11, TAB+NUMSIZE+24(%rsp) + movq %r12, TAB+NUMSIZE+32(%rsp) + movq %r13, TAB+NUMSIZE+40(%rsp) + movq %r14, TAB+NUMSIZE+48(%rsp) + movq %r15, TAB+NUMSIZE+56(%rsp) + movq %rax, TAB+NUMSIZE+64(%rsp) + +// Compute and record tab[1] = 2 * p, ..., tab[15] = 16 * P + + leaq TAB+JACSIZE*1(%rsp), %rdi + leaq TAB(%rsp), %rsi + callq p521_jscalarmul_jdouble + + leaq TAB+JACSIZE*2(%rsp), %rdi + leaq TAB+JACSIZE*1(%rsp), %rsi + leaq TAB(%rsp), %rdx + callq p521_jscalarmul_jadd + + leaq TAB+JACSIZE*3(%rsp), %rdi + leaq TAB+JACSIZE*1(%rsp), %rsi + callq p521_jscalarmul_jdouble + + leaq TAB+JACSIZE*4(%rsp), %rdi + leaq TAB+JACSIZE*3(%rsp), %rsi + leaq TAB(%rsp), %rdx + callq p521_jscalarmul_jadd + + leaq TAB+JACSIZE*5(%rsp), %rdi + leaq TAB+JACSIZE*2(%rsp), %rsi + callq p521_jscalarmul_jdouble + + leaq TAB+JACSIZE*6(%rsp), %rdi + leaq TAB+JACSIZE*5(%rsp), %rsi + leaq TAB(%rsp), %rdx + callq p521_jscalarmul_jadd + + leaq TAB+JACSIZE*7(%rsp), %rdi + leaq TAB+JACSIZE*3(%rsp), %rsi + callq p521_jscalarmul_jdouble + + leaq TAB+JACSIZE*8(%rsp), %rdi + leaq TAB+JACSIZE*7(%rsp), %rsi + leaq TAB(%rsp), %rdx + callq p521_jscalarmul_jadd + + leaq TAB+JACSIZE*9(%rsp), %rdi + leaq TAB+JACSIZE*4(%rsp), %rsi + callq p521_jscalarmul_jdouble + + leaq TAB+JACSIZE*10(%rsp), %rdi + leaq TAB+JACSIZE*9(%rsp), %rsi + leaq TAB(%rsp), %rdx + callq p521_jscalarmul_jadd + + leaq TAB+JACSIZE*11(%rsp), %rdi + leaq TAB+JACSIZE*5(%rsp), %rsi + callq p521_jscalarmul_jdouble + + leaq TAB+JACSIZE*12(%rsp), %rdi + leaq TAB+JACSIZE*11(%rsp), %rsi + leaq TAB(%rsp), %rdx + callq p521_jscalarmul_jadd + + leaq TAB+JACSIZE*13(%rsp), %rdi + leaq TAB+JACSIZE*6(%rsp), %rsi + callq p521_jscalarmul_jdouble + + leaq TAB+JACSIZE*14(%rsp), %rdi + leaq TAB+JACSIZE*13(%rsp), %rsi + leaq TAB(%rsp), %rdx + callq p521_jscalarmul_jadd + + leaq TAB+JACSIZE*15(%rsp), %rdi + leaq TAB+JACSIZE*7(%rsp), %rsi + callq p521_jscalarmul_jdouble + +// Add the recoding constant sum_i(16 * 32^i) to the scalar to allow signed +// digits. The digits of the constant, in lowest-to-highest order, are as +// follows; they are generated dynamically to use fewer large constant loads. +// +// 0x0842108421084210 %rax +// 0x1084210842108421 %rbx +// 0x2108421084210842 %rbx<<1 +// 0x4210842108421084 %rbx<<2 +// 0x8421084210842108 %rbx<<3 +// 0x0842108421084210 %rax +// 0x1084210842108421 %rbx +// 0x2108421084210842 %rbx<<1 +// 0x0000000000000084 + + movq $0x1084210842108421, %rax + movq %rax, %rbx + shrq $1, %rax + movq SCALARB(%rsp), %r8 + addq %rax, %r8 + movq SCALARB+8(%rsp), %r9 + adcq %rbx, %r9 + leaq (%rbx,%rbx), %rcx + movq SCALARB+16(%rsp), %r10 + adcq %rcx, %r10 + leaq (%rcx,%rcx), %rcx + movq SCALARB+24(%rsp), %r11 + adcq %rcx, %r11 + leaq (%rcx,%rcx), %rcx + movq SCALARB+32(%rsp), %r12 + adcq %rcx, %r12 + movq SCALARB+40(%rsp), %r13 + adcq %rax, %r13 + movq SCALARB+48(%rsp), %r14 + adcq %rbx, %r14 + movq SCALARB+56(%rsp), %r15 + leaq (%rbx,%rbx), %rcx + adcq %rcx, %r15 + movq SCALARB+64(%rsp), %rax + adcq $0x84, %rax + +// Because of the initial reduction the top bitfield (>= bits 520) is <= 1, +// i.e. just a single bit. Record that in %rdi, then shift the whole +// scalar left 56 bits to align the top of the next bitfield with the MSB +// (bits 571..575). + + movq %rax, %rdi + shrq $8, %rdi + shldq $56, %r15, %rax + shldq $56, %r14, %r15 + shldq $56, %r13, %r14 + shldq $56, %r12, %r13 + shldq $56, %r11, %r12 + shldq $56, %r10, %r11 + shldq $56, %r9, %r10 + shldq $56, %r8, %r9 + shlq $56, %r8 + + movq %r8, SCALARB(%rsp) + movq %r9, SCALARB+8(%rsp) + movq %r10, SCALARB+16(%rsp) + movq %r11, SCALARB+24(%rsp) + movq %r12, SCALARB+32(%rsp) + movq %r13, SCALARB+40(%rsp) + movq %r14, SCALARB+48(%rsp) + movq %r15, SCALARB+56(%rsp) + movq %rax, SCALARB+64(%rsp) + +// According to the top bit, initialize the accumulator to P or 0. This top +// digit, uniquely, is not recoded so there is no sign adjustment to make. +// We only really need to adjust the z coordinate to zero, but do all three. + + xorl %ecx, %ecx + testq %rdi, %rdi + + movq TAB(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC(%rsp) + movq TAB+8(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+8(%rsp) + movq TAB+16(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+16(%rsp) + movq TAB+24(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+24(%rsp) + movq TAB+32(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+32(%rsp) + movq TAB+40(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+40(%rsp) + movq TAB+48(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+48(%rsp) + movq TAB+56(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+56(%rsp) + movq TAB+64(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+64(%rsp) + movq TAB+72(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+72(%rsp) + movq TAB+80(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+80(%rsp) + movq TAB+88(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+88(%rsp) + movq TAB+96(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+96(%rsp) + movq TAB+104(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+104(%rsp) + movq TAB+112(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+112(%rsp) + movq TAB+120(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+120(%rsp) + movq TAB+128(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+128(%rsp) + movq TAB+136(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+136(%rsp) + movq TAB+144(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+144(%rsp) + movq TAB+152(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+152(%rsp) + movq TAB+160(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+160(%rsp) + movq TAB+168(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+168(%rsp) + movq TAB+176(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+176(%rsp) + movq TAB+184(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+184(%rsp) + movq TAB+192(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+192(%rsp) + movq TAB+200(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+200(%rsp) + movq TAB+208(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+208(%rsp) + +// Main loop over size-5 bitfields: double 5 times then add signed digit +// At each stage we shift the scalar left by 5 bits so we can simply pick +// the top 5 bits as the bitfield, saving some fiddle over indexing. + + movl $520, %ebp + +p521_jscalarmul_mainloop: + subq $5, %rbp + + leaq ACC(%rsp), %rsi + leaq ACC(%rsp), %rdi + callq p521_jscalarmul_jdouble + + leaq ACC(%rsp), %rsi + leaq ACC(%rsp), %rdi + callq p521_jscalarmul_jdouble + + leaq ACC(%rsp), %rsi + leaq ACC(%rsp), %rdi + callq p521_jscalarmul_jdouble + + leaq ACC(%rsp), %rsi + leaq ACC(%rsp), %rdi + callq p521_jscalarmul_jdouble + + leaq ACC(%rsp), %rsi + leaq ACC(%rsp), %rdi + callq p521_jscalarmul_jdouble + +// Choose the bitfield and adjust it to sign and magnitude + + movq SCALARB(%rsp), %r8 + movq SCALARB+8(%rsp), %r9 + movq SCALARB+16(%rsp), %r10 + movq SCALARB+24(%rsp), %r11 + movq SCALARB+32(%rsp), %r12 + movq SCALARB+40(%rsp), %r13 + movq SCALARB+48(%rsp), %r14 + movq SCALARB+56(%rsp), %r15 + movq SCALARB+64(%rsp), %rax + + + movq %rax, %rdi + shrq $59, %rdi + + shldq $5, %r15, %rax + shldq $5, %r14, %r15 + shldq $5, %r13, %r14 + shldq $5, %r12, %r13 + shldq $5, %r11, %r12 + shldq $5, %r10, %r11 + shldq $5, %r9, %r10 + shldq $5, %r8, %r9 + shlq $5, %r8 + + movq %r8, SCALARB(%rsp) + movq %r9, SCALARB+8(%rsp) + movq %r10, SCALARB+16(%rsp) + movq %r11, SCALARB+24(%rsp) + movq %r12, SCALARB+32(%rsp) + movq %r13, SCALARB+40(%rsp) + movq %r14, SCALARB+48(%rsp) + movq %r15, SCALARB+56(%rsp) + movq %rax, SCALARB+64(%rsp) + + subq $16, %rdi + sbbq %rsi, %rsi // %rsi = sign of digit (-1 = negative) + xorq %rsi, %rdi + subq %rsi, %rdi // %rdi = absolute value of digit + +// Conditionally select the table entry tab[i-1] = i * P in constant time +// Again, this is done in separate sweeps per coordinate, doing y last. + + xorl %eax, %eax + xorl %ebx, %ebx + xorl %ecx, %ecx + xorl %edx, %edx + xorl %r8d, %r8d + xorl %r9d, %r9d + xorl %r10d, %r10d + xorl %r11d, %r11d + xorl %r12d, %r12d + selectblock(1,0) + selectblock(2,0) + selectblock(3,0) + selectblock(4,0) + selectblock(5,0) + selectblock(6,0) + selectblock(7,0) + selectblock(8,0) + selectblock(9,0) + selectblock(10,0) + selectblock(11,0) + selectblock(12,0) + selectblock(13,0) + selectblock(14,0) + selectblock(15,0) + selectblock(16,0) + movq %rax, TABENT(%rsp) + movq %rbx, TABENT+8(%rsp) + movq %rcx, TABENT+16(%rsp) + movq %rdx, TABENT+24(%rsp) + movq %r8, TABENT+32(%rsp) + movq %r9, TABENT+40(%rsp) + movq %r10, TABENT+48(%rsp) + movq %r11, TABENT+56(%rsp) + movq %r12, TABENT+64(%rsp) + + xorl %eax, %eax + xorl %ebx, %ebx + xorl %ecx, %ecx + xorl %edx, %edx + xorl %r8d, %r8d + xorl %r9d, %r9d + xorl %r10d, %r10d + xorl %r11d, %r11d + xorl %r12d, %r12d + selectblock(1,2) + selectblock(2,2) + selectblock(3,2) + selectblock(4,2) + selectblock(5,2) + selectblock(6,2) + selectblock(7,2) + selectblock(8,2) + selectblock(9,2) + selectblock(10,2) + selectblock(11,2) + selectblock(12,2) + selectblock(13,2) + selectblock(14,2) + selectblock(15,2) + selectblock(16,2) + movq %rax, TABENT+2*NUMSIZE(%rsp) + movq %rbx, TABENT+2*NUMSIZE+8(%rsp) + movq %rcx, TABENT+2*NUMSIZE+16(%rsp) + movq %rdx, TABENT+2*NUMSIZE+24(%rsp) + movq %r8, TABENT+2*NUMSIZE+32(%rsp) + movq %r9, TABENT+2*NUMSIZE+40(%rsp) + movq %r10, TABENT+2*NUMSIZE+48(%rsp) + movq %r11, TABENT+2*NUMSIZE+56(%rsp) + movq %r12, TABENT+2*NUMSIZE+64(%rsp) + + xorl %eax, %eax + xorl %ebx, %ebx + xorl %ecx, %ecx + xorl %edx, %edx + xorl %r8d, %r8d + xorl %r9d, %r9d + xorl %r10d, %r10d + xorl %r11d, %r11d + xorl %r12d, %r12d + selectblock(1,1) + selectblock(2,1) + selectblock(3,1) + selectblock(4,1) + selectblock(5,1) + selectblock(6,1) + selectblock(7,1) + selectblock(8,1) + selectblock(9,1) + selectblock(10,1) + selectblock(11,1) + selectblock(12,1) + selectblock(13,1) + selectblock(14,1) + selectblock(15,1) + selectblock(16,1) + +// Store it to "tabent" with the y coordinate optionally negated. +// This is done carefully to give coordinates < p_521 even in +// the degenerate case y = 0 (when z = 0 for points on the curve). + + movq %rax, %r13 + orq %rbx, %r13 + movq %rcx, %r14 + orq %rdx, %r14 + movq %r8, %r15 + orq %r9, %r15 + movq %r10, %rdi + orq %r11, %rdi + orq %r14, %r13 + orq %rdi, %r15 + orq %r12, %r15 + orq %r15, %r13 + cmovzq %r13, %rsi + + xorq %rsi, %rax + xorq %rsi, %rbx + xorq %rsi, %rcx + xorq %rsi, %rdx + xorq %rsi, %r8 + xorq %rsi, %r9 + xorq %rsi, %r10 + xorq %rsi, %r11 + andq $0x1FF, %rsi + xorq %rsi, %r12 + + movq %rax, TABENT+NUMSIZE(%rsp) + movq %rbx, TABENT+NUMSIZE+8(%rsp) + movq %rcx, TABENT+NUMSIZE+16(%rsp) + movq %rdx, TABENT+NUMSIZE+24(%rsp) + movq %r8, TABENT+NUMSIZE+32(%rsp) + movq %r9, TABENT+NUMSIZE+40(%rsp) + movq %r10, TABENT+NUMSIZE+48(%rsp) + movq %r11, TABENT+NUMSIZE+56(%rsp) + movq %r12, TABENT+NUMSIZE+64(%rsp) + +// Add to the accumulator + + leaq TABENT(%rsp), %rdx + leaq ACC(%rsp), %rsi + leaq ACC(%rsp), %rdi + callq p521_jscalarmul_jadd + + testq %rbp, %rbp + jne p521_jscalarmul_mainloop + +// That's the end of the main loop, and we just need to copy the +// result in "acc" to the output. + + movq res, %rdi + movq ACC(%rsp), %rax + movq %rax, (%rdi) + movq ACC+8(%rsp), %rax + movq %rax, 8(%rdi) + movq ACC+16(%rsp), %rax + movq %rax, 16(%rdi) + movq ACC+24(%rsp), %rax + movq %rax, 24(%rdi) + movq ACC+32(%rsp), %rax + movq %rax, 32(%rdi) + movq ACC+40(%rsp), %rax + movq %rax, 40(%rdi) + movq ACC+48(%rsp), %rax + movq %rax, 48(%rdi) + movq ACC+56(%rsp), %rax + movq %rax, 56(%rdi) + movq ACC+64(%rsp), %rax + movq %rax, 64(%rdi) + movq ACC+72(%rsp), %rax + movq %rax, 72(%rdi) + movq ACC+80(%rsp), %rax + movq %rax, 80(%rdi) + movq ACC+88(%rsp), %rax + movq %rax, 88(%rdi) + movq ACC+96(%rsp), %rax + movq %rax, 96(%rdi) + movq ACC+104(%rsp), %rax + movq %rax, 104(%rdi) + movq ACC+112(%rsp), %rax + movq %rax, 112(%rdi) + movq ACC+120(%rsp), %rax + movq %rax, 120(%rdi) + movq ACC+128(%rsp), %rax + movq %rax, 128(%rdi) + movq ACC+136(%rsp), %rax + movq %rax, 136(%rdi) + movq ACC+144(%rsp), %rax + movq %rax, 144(%rdi) + movq ACC+152(%rsp), %rax + movq %rax, 152(%rdi) + movq ACC+160(%rsp), %rax + movq %rax, 160(%rdi) + movq ACC+168(%rsp), %rax + movq %rax, 168(%rdi) + movq ACC+176(%rsp), %rax + movq %rax, 176(%rdi) + movq ACC+184(%rsp), %rax + movq %rax, 184(%rdi) + movq ACC+192(%rsp), %rax + movq %rax, 192(%rdi) + movq ACC+200(%rsp), %rax + movq %rax, 200(%rdi) + movq ACC+208(%rsp), %rax + movq %rax, 208(%rdi) + +// Restore stack and registers and return + + addq $NSPACE, %rsp + popq %rbx + popq %rbp + popq %r12 + popq %r13 + popq %r14 + popq %r15 + ret + +// Local copies of subroutines, complete clones at the moment + +p521_jscalarmul_bignum_mod_p521_9: + pushq %rbx + movq 0x40(%rsi), %rax + movl $0x1ff, %edx + andq %rax, %rdx + shrq $0x9, %rax + stc + adcq (%rsi), %rax + movq 0x8(%rsi), %rcx + adcq $0x0, %rcx + movq 0x10(%rsi), %r8 + adcq $0x0, %r8 + movq 0x18(%rsi), %r9 + adcq $0x0, %r9 + movq 0x20(%rsi), %r10 + adcq $0x0, %r10 + movq 0x28(%rsi), %r11 + adcq $0x0, %r11 + movq 0x30(%rsi), %rbx + adcq $0x0, %rbx + movq 0x38(%rsi), %rsi + adcq $0x0, %rsi + adcq $0x0, %rdx + cmpq $0x200, %rdx + sbbq $0x0, %rax + movq %rax, (%rdi) + sbbq $0x0, %rcx + movq %rcx, 0x8(%rdi) + sbbq $0x0, %r8 + movq %r8, 0x10(%rdi) + sbbq $0x0, %r9 + movq %r9, 0x18(%rdi) + sbbq $0x0, %r10 + movq %r10, 0x20(%rdi) + sbbq $0x0, %r11 + movq %r11, 0x28(%rdi) + sbbq $0x0, %rbx + movq %rbx, 0x30(%rdi) + sbbq $0x0, %rsi + movq %rsi, 0x38(%rdi) + sbbq $0x0, %rdx + andq $0x1ff, %rdx + movq %rdx, 0x40(%rdi) + popq %rbx + ret + +p521_jscalarmul_bignum_mod_n521_9: + movq 0x40(%rsi), %rdx + movq $0xfffffffffffffe00, %rax + orq %rdx, %rax + movq %rax, 0x40(%rdi) + shrq $0x9, %rdx + addq $0x1, %rdx + movq $0x449048e16ec79bf7, %r9 + mulxq %r9, %rax, %rcx + adcxq (%rsi), %rax + movq %rax, (%rdi) + movq $0xc44a36477663b851, %r10 + mulxq %r10, %rax, %r8 + adcxq 0x8(%rsi), %rax + adoxq %rcx, %rax + movq %rax, 0x8(%rdi) + movq $0x8033feb708f65a2f, %r11 + mulxq %r11, %rax, %rcx + adcxq 0x10(%rsi), %rax + adoxq %r8, %rax + movq %rax, 0x10(%rdi) + movq $0xae79787c40d06994, %rax + mulxq %rax, %rax, %r8 + adcxq 0x18(%rsi), %rax + adoxq %rcx, %rax + movq %rax, 0x18(%rdi) + movl $0x5, %eax + mulxq %rax, %rax, %rcx + adcxq 0x20(%rsi), %rax + adoxq %r8, %rax + movq %rax, 0x20(%rdi) + movq %rcx, %rax + adoxq %rcx, %rcx + adcq 0x28(%rsi), %rcx + movq %rcx, 0x28(%rdi) + movq 0x30(%rsi), %rcx + adcq %rax, %rcx + movq %rcx, 0x30(%rdi) + movq 0x38(%rsi), %rcx + adcq %rax, %rcx + movq %rcx, 0x38(%rdi) + movq 0x40(%rdi), %rcx + adcq %rax, %rcx + cmc + sbbq %rdx, %rdx + andq %rdx, %r9 + andq %rdx, %r10 + andq %rdx, %r11 + movq $0xae79787c40d06994, %r8 + andq %rdx, %r8 + andl $0x5, %edx + subq %r9, (%rdi) + sbbq %r10, 0x8(%rdi) + sbbq %r11, 0x10(%rdi) + sbbq %r8, 0x18(%rdi) + sbbq %rdx, 0x20(%rdi) + sbbq %rax, 0x28(%rdi) + sbbq %rax, 0x30(%rdi) + sbbq %rax, 0x38(%rdi) + sbbl %eax, %ecx + andl $0x1ff, %ecx + movq %rcx, 0x40(%rdi) + ret + +p521_jscalarmul_jadd: + pushq %rbx + pushq %rbp + pushq %r12 + pushq %r13 + pushq %r14 + pushq %r15 + subq $0x210, %rsp + movq %rdi, 0x1f8(%rsp) + movq %rsi, 0x200(%rsp) + movq %rdx, 0x208(%rsp) + movq 0x200(%rsp), %rsi + leaq 0x90(%rsi), %rsi + leaq (%rsp), %rdi + callq p521_jscalarmul_sqr_p521 + movq 0x208(%rsp), %rdi + leaq 0x90(%rdi), %rsi + leaq 0x168(%rsp), %rdi + callq p521_jscalarmul_sqr_p521 + movq 0x200(%rsp), %rsi + movq 0x208(%rsp), %rdi + leaq 0x48(%rsi), %rdx + leaq 0x90(%rdi), %rsi + leaq 0x1b0(%rsp), %rdi + callq p521_jscalarmul_mul_p521 + movq 0x200(%rsp), %rsi + movq 0x208(%rsp), %rdi + leaq 0x48(%rdi), %rdx + leaq 0x90(%rsi), %rsi + leaq 0x48(%rsp), %rdi + callq p521_jscalarmul_mul_p521 + movq 0x208(%rsp), %rdi + leaq (%rdi), %rdx + leaq (%rsp), %rsi + leaq 0x90(%rsp), %rdi + callq p521_jscalarmul_mul_p521 + movq 0x200(%rsp), %rsi + leaq (%rsi), %rdx + leaq 0x168(%rsp), %rsi + leaq 0x120(%rsp), %rdi + callq p521_jscalarmul_mul_p521 + leaq 0x48(%rsp), %rdx + leaq (%rsp), %rsi + leaq 0x48(%rsp), %rdi + callq p521_jscalarmul_mul_p521 + leaq 0x1b0(%rsp), %rdx + leaq 0x168(%rsp), %rsi + leaq 0x1b0(%rsp), %rdi + callq p521_jscalarmul_mul_p521 + movq 0x90(%rsp), %rax + subq 0x120(%rsp), %rax + movq 0x98(%rsp), %rdx + sbbq 0x128(%rsp), %rdx + movq 0xa0(%rsp), %r8 + sbbq 0x130(%rsp), %r8 + movq 0xa8(%rsp), %r9 + sbbq 0x138(%rsp), %r9 + movq 0xb0(%rsp), %r10 + sbbq 0x140(%rsp), %r10 + movq 0xb8(%rsp), %r11 + sbbq 0x148(%rsp), %r11 + movq 0xc0(%rsp), %r12 + sbbq 0x150(%rsp), %r12 + movq 0xc8(%rsp), %r13 + sbbq 0x158(%rsp), %r13 + movq 0xd0(%rsp), %r14 + sbbq 0x160(%rsp), %r14 + sbbq $0x0, %rax + movq %rax, 0x168(%rsp) + sbbq $0x0, %rdx + movq %rdx, 0x170(%rsp) + sbbq $0x0, %r8 + movq %r8, 0x178(%rsp) + sbbq $0x0, %r9 + movq %r9, 0x180(%rsp) + sbbq $0x0, %r10 + movq %r10, 0x188(%rsp) + sbbq $0x0, %r11 + movq %r11, 0x190(%rsp) + sbbq $0x0, %r12 + movq %r12, 0x198(%rsp) + sbbq $0x0, %r13 + movq %r13, 0x1a0(%rsp) + sbbq $0x0, %r14 + andq $0x1ff, %r14 + movq %r14, 0x1a8(%rsp) + movq 0x48(%rsp), %rax + subq 0x1b0(%rsp), %rax + movq 0x50(%rsp), %rdx + sbbq 0x1b8(%rsp), %rdx + movq 0x58(%rsp), %r8 + sbbq 0x1c0(%rsp), %r8 + movq 0x60(%rsp), %r9 + sbbq 0x1c8(%rsp), %r9 + movq 0x68(%rsp), %r10 + sbbq 0x1d0(%rsp), %r10 + movq 0x70(%rsp), %r11 + sbbq 0x1d8(%rsp), %r11 + movq 0x78(%rsp), %r12 + sbbq 0x1e0(%rsp), %r12 + movq 0x80(%rsp), %r13 + sbbq 0x1e8(%rsp), %r13 + movq 0x88(%rsp), %r14 + sbbq 0x1f0(%rsp), %r14 + sbbq $0x0, %rax + movq %rax, 0x48(%rsp) + sbbq $0x0, %rdx + movq %rdx, 0x50(%rsp) + sbbq $0x0, %r8 + movq %r8, 0x58(%rsp) + sbbq $0x0, %r9 + movq %r9, 0x60(%rsp) + sbbq $0x0, %r10 + movq %r10, 0x68(%rsp) + sbbq $0x0, %r11 + movq %r11, 0x70(%rsp) + sbbq $0x0, %r12 + movq %r12, 0x78(%rsp) + sbbq $0x0, %r13 + movq %r13, 0x80(%rsp) + sbbq $0x0, %r14 + andq $0x1ff, %r14 + movq %r14, 0x88(%rsp) + leaq 0x168(%rsp), %rsi + leaq 0xd8(%rsp), %rdi + callq p521_jscalarmul_sqr_p521 + leaq 0x48(%rsp), %rsi + leaq (%rsp), %rdi + callq p521_jscalarmul_sqr_p521 + leaq 0x120(%rsp), %rdx + leaq 0xd8(%rsp), %rsi + leaq 0x120(%rsp), %rdi + callq p521_jscalarmul_mul_p521 + leaq 0x90(%rsp), %rdx + leaq 0xd8(%rsp), %rsi + leaq 0x90(%rsp), %rdi + callq p521_jscalarmul_mul_p521 + movq (%rsp), %rax + subq 0x120(%rsp), %rax + movq 0x8(%rsp), %rdx + sbbq 0x128(%rsp), %rdx + movq 0x10(%rsp), %r8 + sbbq 0x130(%rsp), %r8 + movq 0x18(%rsp), %r9 + sbbq 0x138(%rsp), %r9 + movq 0x20(%rsp), %r10 + sbbq 0x140(%rsp), %r10 + movq 0x28(%rsp), %r11 + sbbq 0x148(%rsp), %r11 + movq 0x30(%rsp), %r12 + sbbq 0x150(%rsp), %r12 + movq 0x38(%rsp), %r13 + sbbq 0x158(%rsp), %r13 + movq 0x40(%rsp), %r14 + sbbq 0x160(%rsp), %r14 + sbbq $0x0, %rax + movq %rax, (%rsp) + sbbq $0x0, %rdx + movq %rdx, 0x8(%rsp) + sbbq $0x0, %r8 + movq %r8, 0x10(%rsp) + sbbq $0x0, %r9 + movq %r9, 0x18(%rsp) + sbbq $0x0, %r10 + movq %r10, 0x20(%rsp) + sbbq $0x0, %r11 + movq %r11, 0x28(%rsp) + sbbq $0x0, %r12 + movq %r12, 0x30(%rsp) + sbbq $0x0, %r13 + movq %r13, 0x38(%rsp) + sbbq $0x0, %r14 + andq $0x1ff, %r14 + movq %r14, 0x40(%rsp) + movq 0x90(%rsp), %rax + subq 0x120(%rsp), %rax + movq 0x98(%rsp), %rdx + sbbq 0x128(%rsp), %rdx + movq 0xa0(%rsp), %r8 + sbbq 0x130(%rsp), %r8 + movq 0xa8(%rsp), %r9 + sbbq 0x138(%rsp), %r9 + movq 0xb0(%rsp), %r10 + sbbq 0x140(%rsp), %r10 + movq 0xb8(%rsp), %r11 + sbbq 0x148(%rsp), %r11 + movq 0xc0(%rsp), %r12 + sbbq 0x150(%rsp), %r12 + movq 0xc8(%rsp), %r13 + sbbq 0x158(%rsp), %r13 + movq 0xd0(%rsp), %r14 + sbbq 0x160(%rsp), %r14 + sbbq $0x0, %rax + movq %rax, 0xd8(%rsp) + sbbq $0x0, %rdx + movq %rdx, 0xe0(%rsp) + sbbq $0x0, %r8 + movq %r8, 0xe8(%rsp) + sbbq $0x0, %r9 + movq %r9, 0xf0(%rsp) + sbbq $0x0, %r10 + movq %r10, 0xf8(%rsp) + sbbq $0x0, %r11 + movq %r11, 0x100(%rsp) + sbbq $0x0, %r12 + movq %r12, 0x108(%rsp) + sbbq $0x0, %r13 + movq %r13, 0x110(%rsp) + sbbq $0x0, %r14 + andq $0x1ff, %r14 + movq %r14, 0x118(%rsp) + movq 0x200(%rsp), %rsi + leaq 0x90(%rsi), %rdx + leaq 0x168(%rsp), %rsi + leaq 0x168(%rsp), %rdi + callq p521_jscalarmul_mul_p521 + movq (%rsp), %rax + subq 0x90(%rsp), %rax + movq 0x8(%rsp), %rdx + sbbq 0x98(%rsp), %rdx + movq 0x10(%rsp), %r8 + sbbq 0xa0(%rsp), %r8 + movq 0x18(%rsp), %r9 + sbbq 0xa8(%rsp), %r9 + movq 0x20(%rsp), %r10 + sbbq 0xb0(%rsp), %r10 + movq 0x28(%rsp), %r11 + sbbq 0xb8(%rsp), %r11 + movq 0x30(%rsp), %r12 + sbbq 0xc0(%rsp), %r12 + movq 0x38(%rsp), %r13 + sbbq 0xc8(%rsp), %r13 + movq 0x40(%rsp), %r14 + sbbq 0xd0(%rsp), %r14 + sbbq $0x0, %rax + movq %rax, (%rsp) + sbbq $0x0, %rdx + movq %rdx, 0x8(%rsp) + sbbq $0x0, %r8 + movq %r8, 0x10(%rsp) + sbbq $0x0, %r9 + movq %r9, 0x18(%rsp) + sbbq $0x0, %r10 + movq %r10, 0x20(%rsp) + sbbq $0x0, %r11 + movq %r11, 0x28(%rsp) + sbbq $0x0, %r12 + movq %r12, 0x30(%rsp) + sbbq $0x0, %r13 + movq %r13, 0x38(%rsp) + sbbq $0x0, %r14 + andq $0x1ff, %r14 + movq %r14, 0x40(%rsp) + movq 0x120(%rsp), %rax + subq (%rsp), %rax + movq 0x128(%rsp), %rdx + sbbq 0x8(%rsp), %rdx + movq 0x130(%rsp), %r8 + sbbq 0x10(%rsp), %r8 + movq 0x138(%rsp), %r9 + sbbq 0x18(%rsp), %r9 + movq 0x140(%rsp), %r10 + sbbq 0x20(%rsp), %r10 + movq 0x148(%rsp), %r11 + sbbq 0x28(%rsp), %r11 + movq 0x150(%rsp), %r12 + sbbq 0x30(%rsp), %r12 + movq 0x158(%rsp), %r13 + sbbq 0x38(%rsp), %r13 + movq 0x160(%rsp), %r14 + sbbq 0x40(%rsp), %r14 + sbbq $0x0, %rax + movq %rax, 0x120(%rsp) + sbbq $0x0, %rdx + movq %rdx, 0x128(%rsp) + sbbq $0x0, %r8 + movq %r8, 0x130(%rsp) + sbbq $0x0, %r9 + movq %r9, 0x138(%rsp) + sbbq $0x0, %r10 + movq %r10, 0x140(%rsp) + sbbq $0x0, %r11 + movq %r11, 0x148(%rsp) + sbbq $0x0, %r12 + movq %r12, 0x150(%rsp) + sbbq $0x0, %r13 + movq %r13, 0x158(%rsp) + sbbq $0x0, %r14 + andq $0x1ff, %r14 + movq %r14, 0x160(%rsp) + leaq 0x1b0(%rsp), %rdx + leaq 0xd8(%rsp), %rsi + leaq 0xd8(%rsp), %rdi + callq p521_jscalarmul_mul_p521 + movq 0x208(%rsp), %rdi + leaq 0x90(%rdi), %rdx + leaq 0x168(%rsp), %rsi + leaq 0x168(%rsp), %rdi + callq p521_jscalarmul_mul_p521 + leaq 0x120(%rsp), %rdx + leaq 0x48(%rsp), %rsi + leaq 0x120(%rsp), %rdi + callq p521_jscalarmul_mul_p521 + movq 0x120(%rsp), %rax + subq 0xd8(%rsp), %rax + movq 0x128(%rsp), %rdx + sbbq 0xe0(%rsp), %rdx + movq 0x130(%rsp), %r8 + sbbq 0xe8(%rsp), %r8 + movq 0x138(%rsp), %r9 + sbbq 0xf0(%rsp), %r9 + movq 0x140(%rsp), %r10 + sbbq 0xf8(%rsp), %r10 + movq 0x148(%rsp), %r11 + sbbq 0x100(%rsp), %r11 + movq 0x150(%rsp), %r12 + sbbq 0x108(%rsp), %r12 + movq 0x158(%rsp), %r13 + sbbq 0x110(%rsp), %r13 + movq 0x160(%rsp), %r14 + sbbq 0x118(%rsp), %r14 + sbbq $0x0, %rax + movq %rax, 0x120(%rsp) + sbbq $0x0, %rdx + movq %rdx, 0x128(%rsp) + sbbq $0x0, %r8 + movq %r8, 0x130(%rsp) + sbbq $0x0, %r9 + movq %r9, 0x138(%rsp) + sbbq $0x0, %r10 + movq %r10, 0x140(%rsp) + sbbq $0x0, %r11 + movq %r11, 0x148(%rsp) + sbbq $0x0, %r12 + movq %r12, 0x150(%rsp) + sbbq $0x0, %r13 + movq %r13, 0x158(%rsp) + sbbq $0x0, %r14 + andq $0x1ff, %r14 + movq %r14, 0x160(%rsp) + movq 0x200(%rsp), %rsi + movq 0x90(%rsi), %r8 + movq 0x98(%rsi), %r9 + movq 0xa0(%rsi), %r10 + movq 0xa8(%rsi), %r11 + movq 0xb0(%rsi), %r12 + movq 0xb8(%rsi), %r13 + movq 0xc0(%rsi), %r14 + movq 0xc8(%rsi), %r15 + movq 0xd0(%rsi), %rbp + orq %r9, %r8 + orq %r11, %r10 + orq %r13, %r12 + orq %r15, %r14 + orq %r10, %r8 + orq %r14, %r12 + orq %rbp, %r8 + orq %r12, %r8 + negq %r8 + sbbq %rax, %rax + movq 0x208(%rsp), %rdi + movq 0x90(%rdi), %r8 + movq 0x98(%rdi), %r9 + movq 0xa0(%rdi), %r10 + movq 0xa8(%rdi), %r11 + movq 0xb0(%rdi), %r12 + movq 0xb8(%rdi), %r13 + movq 0xc0(%rdi), %r14 + movq 0xc8(%rdi), %r15 + movq 0xd0(%rdi), %rbp + orq %r9, %r8 + orq %r11, %r10 + orq %r13, %r12 + orq %r15, %r14 + orq %r10, %r8 + orq %r14, %r12 + orq %rbp, %r8 + orq %r12, %r8 + negq %r8 + sbbq %rdx, %rdx + cmpq %rax, %rdx + movq 0x120(%rsp), %r8 + cmovbq 0x48(%rsi), %r8 + cmova 0x48(%rdi), %r8 + movq 0x128(%rsp), %r9 + cmovbq 0x50(%rsi), %r9 + cmova 0x50(%rdi), %r9 + movq 0x130(%rsp), %r10 + cmovbq 0x58(%rsi), %r10 + cmova 0x58(%rdi), %r10 + movq 0x138(%rsp), %r11 + cmovbq 0x60(%rsi), %r11 + cmova 0x60(%rdi), %r11 + movq 0x140(%rsp), %r12 + cmovbq 0x68(%rsi), %r12 + cmova 0x68(%rdi), %r12 + movq 0x148(%rsp), %r13 + cmovbq 0x70(%rsi), %r13 + cmova 0x70(%rdi), %r13 + movq 0x150(%rsp), %r14 + cmovbq 0x78(%rsi), %r14 + cmova 0x78(%rdi), %r14 + movq 0x158(%rsp), %r15 + cmovbq 0x80(%rsi), %r15 + cmova 0x80(%rdi), %r15 + movq 0x160(%rsp), %rbp + cmovbq 0x88(%rsi), %rbp + cmova 0x88(%rdi), %rbp + movq %r8, 0x120(%rsp) + movq %r9, 0x128(%rsp) + movq %r10, 0x130(%rsp) + movq %r11, 0x138(%rsp) + movq %r12, 0x140(%rsp) + movq %r13, 0x148(%rsp) + movq %r14, 0x150(%rsp) + movq %r15, 0x158(%rsp) + movq %rbp, 0x160(%rsp) + movq 0x168(%rsp), %r8 + cmovbq 0x90(%rsi), %r8 + cmova 0x90(%rdi), %r8 + movq 0x170(%rsp), %r9 + cmovbq 0x98(%rsi), %r9 + cmova 0x98(%rdi), %r9 + movq 0x178(%rsp), %r10 + cmovbq 0xa0(%rsi), %r10 + cmova 0xa0(%rdi), %r10 + movq 0x180(%rsp), %r11 + cmovbq 0xa8(%rsi), %r11 + cmova 0xa8(%rdi), %r11 + movq 0x188(%rsp), %r12 + cmovbq 0xb0(%rsi), %r12 + cmova 0xb0(%rdi), %r12 + movq 0x190(%rsp), %r13 + cmovbq 0xb8(%rsi), %r13 + cmova 0xb8(%rdi), %r13 + movq 0x198(%rsp), %r14 + cmovbq 0xc0(%rsi), %r14 + cmova 0xc0(%rdi), %r14 + movq 0x1a0(%rsp), %r15 + cmovbq 0xc8(%rsi), %r15 + cmova 0xc8(%rdi), %r15 + movq 0x1a8(%rsp), %rbp + cmovbq 0xd0(%rsi), %rbp + cmova 0xd0(%rdi), %rbp + movq %r8, 0x168(%rsp) + movq %r9, 0x170(%rsp) + movq %r10, 0x178(%rsp) + movq %r11, 0x180(%rsp) + movq %r12, 0x188(%rsp) + movq %r13, 0x190(%rsp) + movq %r14, 0x198(%rsp) + movq %r15, 0x1a0(%rsp) + movq %rbp, 0x1a8(%rsp) + movq (%rsp), %r8 + cmovbq (%rsi), %r8 + cmova (%rdi), %r8 + movq 0x8(%rsp), %r9 + cmovbq 0x8(%rsi), %r9 + cmova 0x8(%rdi), %r9 + movq 0x10(%rsp), %r10 + cmovbq 0x10(%rsi), %r10 + cmova 0x10(%rdi), %r10 + movq 0x18(%rsp), %r11 + cmovbq 0x18(%rsi), %r11 + cmova 0x18(%rdi), %r11 + movq 0x20(%rsp), %r12 + cmovbq 0x20(%rsi), %r12 + cmova 0x20(%rdi), %r12 + movq 0x28(%rsp), %r13 + cmovbq 0x28(%rsi), %r13 + cmova 0x28(%rdi), %r13 + movq 0x30(%rsp), %r14 + cmovbq 0x30(%rsi), %r14 + cmova 0x30(%rdi), %r14 + movq 0x38(%rsp), %r15 + cmovbq 0x38(%rsi), %r15 + cmova 0x38(%rdi), %r15 + movq 0x40(%rsp), %rbp + cmovbq 0x40(%rsi), %rbp + cmova 0x40(%rdi), %rbp + movq 0x1f8(%rsp), %rdi + movq %r8, (%rdi) + movq %r9, 0x8(%rdi) + movq %r10, 0x10(%rdi) + movq %r11, 0x18(%rdi) + movq %r12, 0x20(%rdi) + movq %r13, 0x28(%rdi) + movq %r14, 0x30(%rdi) + movq %r15, 0x38(%rdi) + movq %rbp, 0x40(%rdi) + movq 0x120(%rsp), %rax + movq %rax, 0x48(%rdi) + movq 0x128(%rsp), %rax + movq %rax, 0x50(%rdi) + movq 0x130(%rsp), %rax + movq %rax, 0x58(%rdi) + movq 0x138(%rsp), %rax + movq %rax, 0x60(%rdi) + movq 0x140(%rsp), %rax + movq %rax, 0x68(%rdi) + movq 0x148(%rsp), %rax + movq %rax, 0x70(%rdi) + movq 0x150(%rsp), %rax + movq %rax, 0x78(%rdi) + movq 0x158(%rsp), %rax + movq %rax, 0x80(%rdi) + movq 0x160(%rsp), %rax + movq %rax, 0x88(%rdi) + movq 0x168(%rsp), %rax + movq %rax, 0x90(%rdi) + movq 0x170(%rsp), %rax + movq %rax, 0x98(%rdi) + movq 0x178(%rsp), %rax + movq %rax, 0xa0(%rdi) + movq 0x180(%rsp), %rax + movq %rax, 0xa8(%rdi) + movq 0x188(%rsp), %rax + movq %rax, 0xb0(%rdi) + movq 0x190(%rsp), %rax + movq %rax, 0xb8(%rdi) + movq 0x198(%rsp), %rax + movq %rax, 0xc0(%rdi) + movq 0x1a0(%rsp), %rax + movq %rax, 0xc8(%rdi) + movq 0x1a8(%rsp), %rax + movq %rax, 0xd0(%rdi) + addq $0x210, %rsp + popq %r15 + popq %r14 + popq %r13 + popq %r12 + popq %rbp + popq %rbx + ret + +p521_jscalarmul_jdouble: + pushq %rbx + pushq %rbp + pushq %r12 + pushq %r13 + pushq %r14 + pushq %r15 + subq $0x208, %rsp + movq %rdi, 0x1f8(%rsp) + movq %rsi, 0x200(%rsp) + movq 0x200(%rsp), %rdi + leaq 0x90(%rdi), %rsi + leaq (%rsp), %rdi + callq p521_jscalarmul_sqr_p521 + movq 0x200(%rsp), %rdi + leaq 0x48(%rdi), %rsi + leaq 0x48(%rsp), %rdi + callq p521_jscalarmul_sqr_p521 + movq 0x200(%rsp), %rdi + stc + movq (%rdi), %rax + adcq (%rsp), %rax + movq 0x8(%rdi), %rbx + adcq 0x8(%rsp), %rbx + movq 0x10(%rdi), %r8 + adcq 0x10(%rsp), %r8 + movq 0x18(%rdi), %r9 + adcq 0x18(%rsp), %r9 + movq 0x20(%rdi), %r10 + adcq 0x20(%rsp), %r10 + movq 0x28(%rdi), %r11 + adcq 0x28(%rsp), %r11 + movq 0x30(%rdi), %r12 + adcq 0x30(%rsp), %r12 + movq 0x38(%rdi), %r13 + adcq 0x38(%rsp), %r13 + movq 0x40(%rdi), %r14 + adcq 0x40(%rsp), %r14 + movq $0x200, %rdx + andq %r14, %rdx + cmpq $0x200, %rdx + sbbq $0x0, %rax + movq %rax, 0x168(%rsp) + sbbq $0x0, %rbx + movq %rbx, 0x170(%rsp) + sbbq $0x0, %r8 + movq %r8, 0x178(%rsp) + sbbq $0x0, %r9 + movq %r9, 0x180(%rsp) + sbbq $0x0, %r10 + movq %r10, 0x188(%rsp) + sbbq $0x0, %r11 + movq %r11, 0x190(%rsp) + sbbq $0x0, %r12 + movq %r12, 0x198(%rsp) + sbbq $0x0, %r13 + movq %r13, 0x1a0(%rsp) + sbbq %rdx, %r14 + movq %r14, 0x1a8(%rsp) + movq 0x200(%rsp), %rdi + movq (%rdi), %rax + subq (%rsp), %rax + movq 0x8(%rdi), %rdx + sbbq 0x8(%rsp), %rdx + movq 0x10(%rdi), %r8 + sbbq 0x10(%rsp), %r8 + movq 0x18(%rdi), %r9 + sbbq 0x18(%rsp), %r9 + movq 0x20(%rdi), %r10 + sbbq 0x20(%rsp), %r10 + movq 0x28(%rdi), %r11 + sbbq 0x28(%rsp), %r11 + movq 0x30(%rdi), %r12 + sbbq 0x30(%rsp), %r12 + movq 0x38(%rdi), %r13 + sbbq 0x38(%rsp), %r13 + movq 0x40(%rdi), %r14 + sbbq 0x40(%rsp), %r14 + sbbq $0x0, %rax + movq %rax, 0x120(%rsp) + sbbq $0x0, %rdx + movq %rdx, 0x128(%rsp) + sbbq $0x0, %r8 + movq %r8, 0x130(%rsp) + sbbq $0x0, %r9 + movq %r9, 0x138(%rsp) + sbbq $0x0, %r10 + movq %r10, 0x140(%rsp) + sbbq $0x0, %r11 + movq %r11, 0x148(%rsp) + sbbq $0x0, %r12 + movq %r12, 0x150(%rsp) + sbbq $0x0, %r13 + movq %r13, 0x158(%rsp) + sbbq $0x0, %r14 + andq $0x1ff, %r14 + movq %r14, 0x160(%rsp) + leaq 0x120(%rsp), %rdx + leaq 0x168(%rsp), %rsi + leaq 0x90(%rsp), %rdi + callq p521_jscalarmul_mul_p521 + movq 0x200(%rsp), %rdi + stc + movq 0x48(%rdi), %rax + adcq 0x90(%rdi), %rax + movq 0x50(%rdi), %rbx + adcq 0x98(%rdi), %rbx + movq 0x58(%rdi), %r8 + adcq 0xa0(%rdi), %r8 + movq 0x60(%rdi), %r9 + adcq 0xa8(%rdi), %r9 + movq 0x68(%rdi), %r10 + adcq 0xb0(%rdi), %r10 + movq 0x70(%rdi), %r11 + adcq 0xb8(%rdi), %r11 + movq 0x78(%rdi), %r12 + adcq 0xc0(%rdi), %r12 + movq 0x80(%rdi), %r13 + adcq 0xc8(%rdi), %r13 + movq 0x88(%rdi), %r14 + adcq 0xd0(%rdi), %r14 + movq $0x200, %rdx + andq %r14, %rdx + cmpq $0x200, %rdx + sbbq $0x0, %rax + movq %rax, 0x168(%rsp) + sbbq $0x0, %rbx + movq %rbx, 0x170(%rsp) + sbbq $0x0, %r8 + movq %r8, 0x178(%rsp) + sbbq $0x0, %r9 + movq %r9, 0x180(%rsp) + sbbq $0x0, %r10 + movq %r10, 0x188(%rsp) + sbbq $0x0, %r11 + movq %r11, 0x190(%rsp) + sbbq $0x0, %r12 + movq %r12, 0x198(%rsp) + sbbq $0x0, %r13 + movq %r13, 0x1a0(%rsp) + sbbq %rdx, %r14 + movq %r14, 0x1a8(%rsp) + leaq 0x90(%rsp), %rsi + leaq 0x1b0(%rsp), %rdi + callq p521_jscalarmul_sqr_p521 + movq 0x200(%rsp), %rdi + leaq 0x48(%rsp), %rdx + leaq (%rdi), %rsi + leaq 0xd8(%rsp), %rdi + callq p521_jscalarmul_mul_p521 + leaq 0x168(%rsp), %rsi + leaq 0x120(%rsp), %rdi + callq p521_jscalarmul_sqr_p521 + movq $0x9, %rdx + movq 0x1f0(%rsp), %rbx + xorq $0x1ff, %rbx + movq 0x1b0(%rsp), %rax + notq %rax + mulxq %rax, %r8, %r9 + movq 0x1b8(%rsp), %rax + notq %rax + mulxq %rax, %rax, %r10 + addq %rax, %r9 + movq 0x1c0(%rsp), %rax + notq %rax + mulxq %rax, %rax, %r11 + adcq %rax, %r10 + movq 0x1c8(%rsp), %rax + notq %rax + mulxq %rax, %rax, %r12 + adcq %rax, %r11 + movq 0x1d0(%rsp), %rax + notq %rax + mulxq %rax, %rax, %r13 + adcq %rax, %r12 + movq 0x1d8(%rsp), %rax + notq %rax + mulxq %rax, %rax, %r14 + adcq %rax, %r13 + movq 0x1e0(%rsp), %rax + notq %rax + mulxq %rax, %rax, %r15 + adcq %rax, %r14 + movq 0x1e8(%rsp), %rax + notq %rax + mulxq %rax, %rax, %rcx + adcq %rax, %r15 + mulxq %rbx, %rbx, %rax + adcq %rcx, %rbx + xorl %eax, %eax + movq $0xc, %rdx + mulxq 0xd8(%rsp), %rax, %rcx + adcxq %rax, %r8 + adoxq %rcx, %r9 + mulxq 0xe0(%rsp), %rax, %rcx + adcxq %rax, %r9 + adoxq %rcx, %r10 + mulxq 0xe8(%rsp), %rax, %rcx + adcxq %rax, %r10 + adoxq %rcx, %r11 + mulxq 0xf0(%rsp), %rax, %rcx + adcxq %rax, %r11 + adoxq %rcx, %r12 + mulxq 0xf8(%rsp), %rax, %rcx + adcxq %rax, %r12 + adoxq %rcx, %r13 + mulxq 0x100(%rsp), %rax, %rcx + adcxq %rax, %r13 + adoxq %rcx, %r14 + mulxq 0x108(%rsp), %rax, %rcx + adcxq %rax, %r14 + adoxq %rcx, %r15 + mulxq 0x110(%rsp), %rax, %rcx + adcxq %rax, %r15 + adoxq %rcx, %rbx + mulxq 0x118(%rsp), %rax, %rcx + adcxq %rax, %rbx + movq %r9, %rax + andq %r10, %rax + andq %r11, %rax + andq %r12, %rax + andq %r13, %rax + andq %r14, %rax + andq %r15, %rax + movq %rbx, %rdx + shrq $0x9, %rdx + orq $0xfffffffffffffe00, %rbx + leaq 0x1(%rdx), %rcx + addq %r8, %rcx + movl $0x0, %ecx + adcq %rcx, %rax + movq %rbx, %rax + adcq %rcx, %rax + adcq %rdx, %r8 + movq %r8, 0x1b0(%rsp) + adcq %rcx, %r9 + movq %r9, 0x1b8(%rsp) + adcq %rcx, %r10 + movq %r10, 0x1c0(%rsp) + adcq %rcx, %r11 + movq %r11, 0x1c8(%rsp) + adcq %rcx, %r12 + movq %r12, 0x1d0(%rsp) + adcq %rcx, %r13 + movq %r13, 0x1d8(%rsp) + adcq %rcx, %r14 + movq %r14, 0x1e0(%rsp) + adcq %rcx, %r15 + movq %r15, 0x1e8(%rsp) + adcq %rcx, %rbx + andq $0x1ff, %rbx + movq %rbx, 0x1f0(%rsp) + movq 0x120(%rsp), %rax + subq (%rsp), %rax + movq 0x128(%rsp), %rdx + sbbq 0x8(%rsp), %rdx + movq 0x130(%rsp), %r8 + sbbq 0x10(%rsp), %r8 + movq 0x138(%rsp), %r9 + sbbq 0x18(%rsp), %r9 + movq 0x140(%rsp), %r10 + sbbq 0x20(%rsp), %r10 + movq 0x148(%rsp), %r11 + sbbq 0x28(%rsp), %r11 + movq 0x150(%rsp), %r12 + sbbq 0x30(%rsp), %r12 + movq 0x158(%rsp), %r13 + sbbq 0x38(%rsp), %r13 + movq 0x160(%rsp), %r14 + sbbq 0x40(%rsp), %r14 + sbbq $0x0, %rax + movq %rax, 0x168(%rsp) + sbbq $0x0, %rdx + movq %rdx, 0x170(%rsp) + sbbq $0x0, %r8 + movq %r8, 0x178(%rsp) + sbbq $0x0, %r9 + movq %r9, 0x180(%rsp) + sbbq $0x0, %r10 + movq %r10, 0x188(%rsp) + sbbq $0x0, %r11 + movq %r11, 0x190(%rsp) + sbbq $0x0, %r12 + movq %r12, 0x198(%rsp) + sbbq $0x0, %r13 + movq %r13, 0x1a0(%rsp) + sbbq $0x0, %r14 + andq $0x1ff, %r14 + movq %r14, 0x1a8(%rsp) + leaq 0x48(%rsp), %rsi + leaq 0x120(%rsp), %rdi + callq p521_jscalarmul_sqr_p521 + movq 0x1f8(%rsp), %rdi + movq 0x168(%rsp), %rax + subq 0x48(%rsp), %rax + movq 0x170(%rsp), %rdx + sbbq 0x50(%rsp), %rdx + movq 0x178(%rsp), %r8 + sbbq 0x58(%rsp), %r8 + movq 0x180(%rsp), %r9 + sbbq 0x60(%rsp), %r9 + movq 0x188(%rsp), %r10 + sbbq 0x68(%rsp), %r10 + movq 0x190(%rsp), %r11 + sbbq 0x70(%rsp), %r11 + movq 0x198(%rsp), %r12 + sbbq 0x78(%rsp), %r12 + movq 0x1a0(%rsp), %r13 + sbbq 0x80(%rsp), %r13 + movq 0x1a8(%rsp), %r14 + sbbq 0x88(%rsp), %r14 + sbbq $0x0, %rax + movq %rax, 0x90(%rdi) + sbbq $0x0, %rdx + movq %rdx, 0x98(%rdi) + sbbq $0x0, %r8 + movq %r8, 0xa0(%rdi) + sbbq $0x0, %r9 + movq %r9, 0xa8(%rdi) + sbbq $0x0, %r10 + movq %r10, 0xb0(%rdi) + sbbq $0x0, %r11 + movq %r11, 0xb8(%rdi) + sbbq $0x0, %r12 + movq %r12, 0xc0(%rdi) + sbbq $0x0, %r13 + movq %r13, 0xc8(%rdi) + sbbq $0x0, %r14 + andq $0x1ff, %r14 + movq %r14, 0xd0(%rdi) + leaq 0x90(%rsp), %rdx + leaq 0x1b0(%rsp), %rsi + leaq 0x168(%rsp), %rdi + callq p521_jscalarmul_mul_p521 + movq 0x1f8(%rsp), %rdi + movq 0x118(%rsp), %rbx + movq 0x110(%rsp), %r15 + shldq $0x2, %r15, %rbx + movq 0x108(%rsp), %r14 + shldq $0x2, %r14, %r15 + movq 0x100(%rsp), %r13 + shldq $0x2, %r13, %r14 + movq 0xf8(%rsp), %r12 + shldq $0x2, %r12, %r13 + movq 0xf0(%rsp), %r11 + shldq $0x2, %r11, %r12 + movq 0xe8(%rsp), %r10 + shldq $0x2, %r10, %r11 + movq 0xe0(%rsp), %r9 + shldq $0x2, %r9, %r10 + movq 0xd8(%rsp), %r8 + shldq $0x2, %r8, %r9 + shlq $0x2, %r8 + movq 0x1f0(%rsp), %rcx + xorq $0x1ff, %rcx + movq 0x1b0(%rsp), %rax + notq %rax + addq %rax, %r8 + movq 0x1b8(%rsp), %rax + notq %rax + adcq %rax, %r9 + movq 0x1c0(%rsp), %rax + notq %rax + adcq %rax, %r10 + movq 0x1c8(%rsp), %rax + notq %rax + adcq %rax, %r11 + movq 0x1d0(%rsp), %rax + notq %rax + adcq %rax, %r12 + movq 0x1d8(%rsp), %rax + notq %rax + adcq %rax, %r13 + movq 0x1e0(%rsp), %rax + notq %rax + adcq %rax, %r14 + movq 0x1e8(%rsp), %rax + notq %rax + adcq %rax, %r15 + adcq %rcx, %rbx + movq %r9, %rax + andq %r10, %rax + andq %r11, %rax + andq %r12, %rax + andq %r13, %rax + andq %r14, %rax + andq %r15, %rax + movq %rbx, %rdx + shrq $0x9, %rdx + orq $0xfffffffffffffe00, %rbx + leaq 0x1(%rdx), %rcx + addq %r8, %rcx + movl $0x0, %ecx + adcq %rcx, %rax + movq %rbx, %rax + adcq %rcx, %rax + adcq %rdx, %r8 + movq %r8, (%rdi) + adcq %rcx, %r9 + movq %r9, 0x8(%rdi) + adcq %rcx, %r10 + movq %r10, 0x10(%rdi) + adcq %rcx, %r11 + movq %r11, 0x18(%rdi) + adcq %rcx, %r12 + movq %r12, 0x20(%rdi) + adcq %rcx, %r13 + movq %r13, 0x28(%rdi) + adcq %rcx, %r14 + movq %r14, 0x30(%rdi) + adcq %rcx, %r15 + movq %r15, 0x38(%rdi) + adcq %rcx, %rbx + andq $0x1ff, %rbx + movq %rbx, 0x40(%rdi) + movq 0x1f8(%rsp), %rdi + movq 0x160(%rsp), %rbx + xorq $0x1ff, %rbx + movq 0x158(%rsp), %r15 + notq %r15 + shldq $0x3, %r15, %rbx + movq 0x150(%rsp), %r14 + notq %r14 + shldq $0x3, %r14, %r15 + movq 0x148(%rsp), %r13 + notq %r13 + shldq $0x3, %r13, %r14 + movq 0x140(%rsp), %r12 + notq %r12 + shldq $0x3, %r12, %r13 + movq 0x138(%rsp), %r11 + notq %r11 + shldq $0x3, %r11, %r12 + movq 0x130(%rsp), %r10 + notq %r10 + shldq $0x3, %r10, %r11 + movq 0x128(%rsp), %r9 + notq %r9 + shldq $0x3, %r9, %r10 + movq 0x120(%rsp), %r8 + notq %r8 + shldq $0x3, %r8, %r9 + shlq $0x3, %r8 + movq $0x3, %rdx + xorl %eax, %eax + mulxq 0x168(%rsp), %rax, %rcx + adcxq %rax, %r8 + adoxq %rcx, %r9 + mulxq 0x170(%rsp), %rax, %rcx + adcxq %rax, %r9 + adoxq %rcx, %r10 + mulxq 0x178(%rsp), %rax, %rcx + adcxq %rax, %r10 + adoxq %rcx, %r11 + mulxq 0x180(%rsp), %rax, %rcx + adcxq %rax, %r11 + adoxq %rcx, %r12 + mulxq 0x188(%rsp), %rax, %rcx + adcxq %rax, %r12 + adoxq %rcx, %r13 + mulxq 0x190(%rsp), %rax, %rcx + adcxq %rax, %r13 + adoxq %rcx, %r14 + mulxq 0x198(%rsp), %rax, %rcx + adcxq %rax, %r14 + adoxq %rcx, %r15 + mulxq 0x1a0(%rsp), %rax, %rcx + adcxq %rax, %r15 + adoxq %rcx, %rbx + mulxq 0x1a8(%rsp), %rax, %rcx + adcxq %rax, %rbx + movq %r9, %rax + andq %r10, %rax + andq %r11, %rax + andq %r12, %rax + andq %r13, %rax + andq %r14, %rax + andq %r15, %rax + movq %rbx, %rdx + shrq $0x9, %rdx + orq $0xfffffffffffffe00, %rbx + leaq 0x1(%rdx), %rcx + addq %r8, %rcx + movl $0x0, %ecx + adcq %rcx, %rax + movq %rbx, %rax + adcq %rcx, %rax + adcq %rdx, %r8 + movq %r8, 0x48(%rdi) + adcq %rcx, %r9 + movq %r9, 0x50(%rdi) + adcq %rcx, %r10 + movq %r10, 0x58(%rdi) + adcq %rcx, %r11 + movq %r11, 0x60(%rdi) + adcq %rcx, %r12 + movq %r12, 0x68(%rdi) + adcq %rcx, %r13 + movq %r13, 0x70(%rdi) + adcq %rcx, %r14 + movq %r14, 0x78(%rdi) + adcq %rcx, %r15 + movq %r15, 0x80(%rdi) + adcq %rcx, %rbx + andq $0x1ff, %rbx + movq %rbx, 0x88(%rdi) + addq $0x208, %rsp + popq %r15 + popq %r14 + popq %r13 + popq %r12 + popq %rbp + popq %rbx + ret + +p521_jscalarmul_mul_p521: + subq $0x40, %rsp + movq %rdx, %rcx + xorl %ebp, %ebp + movq (%rcx), %rdx + mulxq (%rsi), %r8, %r9 + movq %r8, (%rsp) + mulxq 0x8(%rsi), %rbx, %r10 + adcq %rbx, %r9 + mulxq 0x10(%rsi), %rbx, %r11 + adcq %rbx, %r10 + mulxq 0x18(%rsi), %rbx, %r12 + adcq %rbx, %r11 + mulxq 0x20(%rsi), %rbx, %r13 + adcq %rbx, %r12 + mulxq 0x28(%rsi), %rbx, %r14 + adcq %rbx, %r13 + mulxq 0x30(%rsi), %rbx, %r15 + adcq %rbx, %r14 + mulxq 0x38(%rsi), %rbx, %r8 + adcq %rbx, %r15 + adcq %rbp, %r8 + movq 0x8(%rcx), %rdx + xorl %ebp, %ebp + mulxq (%rsi), %rax, %rbx + adcxq %rax, %r9 + adoxq %rbx, %r10 + movq %r9, 0x8(%rsp) + mulxq 0x8(%rsi), %rax, %rbx + adcxq %rax, %r10 + adoxq %rbx, %r11 + mulxq 0x10(%rsi), %rax, %rbx + adcxq %rax, %r11 + adoxq %rbx, %r12 + mulxq 0x18(%rsi), %rax, %rbx + adcxq %rax, %r12 + adoxq %rbx, %r13 + mulxq 0x20(%rsi), %rax, %rbx + adcxq %rax, %r13 + adoxq %rbx, %r14 + mulxq 0x28(%rsi), %rax, %rbx + adcxq %rax, %r14 + adoxq %rbx, %r15 + mulxq 0x30(%rsi), %rax, %rbx + adcxq %rax, %r15 + adoxq %rbx, %r8 + mulxq 0x38(%rsi), %rax, %r9 + adcxq %rax, %r8 + adoxq %rbp, %r9 + adcq %rbp, %r9 + movq 0x10(%rcx), %rdx + xorl %ebp, %ebp + mulxq (%rsi), %rax, %rbx + adcxq %rax, %r10 + adoxq %rbx, %r11 + movq %r10, 0x10(%rsp) + mulxq 0x8(%rsi), %rax, %rbx + adcxq %rax, %r11 + adoxq %rbx, %r12 + mulxq 0x10(%rsi), %rax, %rbx + adcxq %rax, %r12 + adoxq %rbx, %r13 + mulxq 0x18(%rsi), %rax, %rbx + adcxq %rax, %r13 + adoxq %rbx, %r14 + mulxq 0x20(%rsi), %rax, %rbx + adcxq %rax, %r14 + adoxq %rbx, %r15 + mulxq 0x28(%rsi), %rax, %rbx + adcxq %rax, %r15 + adoxq %rbx, %r8 + mulxq 0x30(%rsi), %rax, %rbx + adcxq %rax, %r8 + adoxq %rbx, %r9 + mulxq 0x38(%rsi), %rax, %r10 + adcxq %rax, %r9 + adoxq %rbp, %r10 + adcq %rbp, %r10 + movq 0x18(%rcx), %rdx + xorl %ebp, %ebp + mulxq (%rsi), %rax, %rbx + adcxq %rax, %r11 + adoxq %rbx, %r12 + movq %r11, 0x18(%rsp) + mulxq 0x8(%rsi), %rax, %rbx + adcxq %rax, %r12 + adoxq %rbx, %r13 + mulxq 0x10(%rsi), %rax, %rbx + adcxq %rax, %r13 + adoxq %rbx, %r14 + mulxq 0x18(%rsi), %rax, %rbx + adcxq %rax, %r14 + adoxq %rbx, %r15 + mulxq 0x20(%rsi), %rax, %rbx + adcxq %rax, %r15 + adoxq %rbx, %r8 + mulxq 0x28(%rsi), %rax, %rbx + adcxq %rax, %r8 + adoxq %rbx, %r9 + mulxq 0x30(%rsi), %rax, %rbx + adcxq %rax, %r9 + adoxq %rbx, %r10 + mulxq 0x38(%rsi), %rax, %r11 + adcxq %rax, %r10 + adoxq %rbp, %r11 + adcq %rbp, %r11 + movq 0x20(%rcx), %rdx + xorl %ebp, %ebp + mulxq (%rsi), %rax, %rbx + adcxq %rax, %r12 + adoxq %rbx, %r13 + movq %r12, 0x20(%rsp) + mulxq 0x8(%rsi), %rax, %rbx + adcxq %rax, %r13 + adoxq %rbx, %r14 + mulxq 0x10(%rsi), %rax, %rbx + adcxq %rax, %r14 + adoxq %rbx, %r15 + mulxq 0x18(%rsi), %rax, %rbx + adcxq %rax, %r15 + adoxq %rbx, %r8 + mulxq 0x20(%rsi), %rax, %rbx + adcxq %rax, %r8 + adoxq %rbx, %r9 + mulxq 0x28(%rsi), %rax, %rbx + adcxq %rax, %r9 + adoxq %rbx, %r10 + mulxq 0x30(%rsi), %rax, %rbx + adcxq %rax, %r10 + adoxq %rbx, %r11 + mulxq 0x38(%rsi), %rax, %r12 + adcxq %rax, %r11 + adoxq %rbp, %r12 + adcq %rbp, %r12 + movq 0x28(%rcx), %rdx + xorl %ebp, %ebp + mulxq (%rsi), %rax, %rbx + adcxq %rax, %r13 + adoxq %rbx, %r14 + movq %r13, 0x28(%rsp) + mulxq 0x8(%rsi), %rax, %rbx + adcxq %rax, %r14 + adoxq %rbx, %r15 + mulxq 0x10(%rsi), %rax, %rbx + adcxq %rax, %r15 + adoxq %rbx, %r8 + mulxq 0x18(%rsi), %rax, %rbx + adcxq %rax, %r8 + adoxq %rbx, %r9 + mulxq 0x20(%rsi), %rax, %rbx + adcxq %rax, %r9 + adoxq %rbx, %r10 + mulxq 0x28(%rsi), %rax, %rbx + adcxq %rax, %r10 + adoxq %rbx, %r11 + mulxq 0x30(%rsi), %rax, %rbx + adcxq %rax, %r11 + adoxq %rbx, %r12 + mulxq 0x38(%rsi), %rax, %r13 + adcxq %rax, %r12 + adoxq %rbp, %r13 + adcq %rbp, %r13 + movq 0x30(%rcx), %rdx + xorl %ebp, %ebp + mulxq (%rsi), %rax, %rbx + adcxq %rax, %r14 + adoxq %rbx, %r15 + movq %r14, 0x30(%rsp) + mulxq 0x8(%rsi), %rax, %rbx + adcxq %rax, %r15 + adoxq %rbx, %r8 + mulxq 0x10(%rsi), %rax, %rbx + adcxq %rax, %r8 + adoxq %rbx, %r9 + mulxq 0x18(%rsi), %rax, %rbx + adcxq %rax, %r9 + adoxq %rbx, %r10 + mulxq 0x20(%rsi), %rax, %rbx + adcxq %rax, %r10 + adoxq %rbx, %r11 + mulxq 0x28(%rsi), %rax, %rbx + adcxq %rax, %r11 + adoxq %rbx, %r12 + mulxq 0x30(%rsi), %rax, %rbx + adcxq %rax, %r12 + adoxq %rbx, %r13 + mulxq 0x38(%rsi), %rax, %r14 + adcxq %rax, %r13 + adoxq %rbp, %r14 + adcq %rbp, %r14 + movq 0x38(%rcx), %rdx + xorl %ebp, %ebp + mulxq (%rsi), %rax, %rbx + adcxq %rax, %r15 + adoxq %rbx, %r8 + movq %r15, 0x38(%rsp) + mulxq 0x8(%rsi), %rax, %rbx + adcxq %rax, %r8 + adoxq %rbx, %r9 + mulxq 0x10(%rsi), %rax, %rbx + adcxq %rax, %r9 + adoxq %rbx, %r10 + mulxq 0x18(%rsi), %rax, %rbx + adcxq %rax, %r10 + adoxq %rbx, %r11 + mulxq 0x20(%rsi), %rax, %rbx + adcxq %rax, %r11 + adoxq %rbx, %r12 + mulxq 0x28(%rsi), %rax, %rbx + adcxq %rax, %r12 + adoxq %rbx, %r13 + mulxq 0x30(%rsi), %rax, %rbx + adcxq %rax, %r13 + adoxq %rbx, %r14 + mulxq 0x38(%rsi), %rax, %r15 + adcxq %rax, %r14 + adoxq %rbp, %r15 + adcq %rbp, %r15 + movq 0x40(%rsi), %rdx + xorl %ebp, %ebp + mulxq (%rcx), %rax, %rbx + adcxq %rax, %r8 + adoxq %rbx, %r9 + mulxq 0x8(%rcx), %rax, %rbx + adcxq %rax, %r9 + adoxq %rbx, %r10 + mulxq 0x10(%rcx), %rax, %rbx + adcxq %rax, %r10 + adoxq %rbx, %r11 + mulxq 0x18(%rcx), %rax, %rbx + adcxq %rax, %r11 + adoxq %rbx, %r12 + mulxq 0x20(%rcx), %rax, %rbx + adcxq %rax, %r12 + adoxq %rbx, %r13 + mulxq 0x28(%rcx), %rax, %rbx + adcxq %rax, %r13 + adoxq %rbx, %r14 + mulxq 0x30(%rcx), %rax, %rbx + adcxq %rax, %r14 + adoxq %rbx, %r15 + mulxq 0x38(%rcx), %rax, %rbx + adcxq %rax, %r15 + adoxq %rbp, %rbx + adcq %rbx, %rbp + movq 0x40(%rcx), %rdx + xorl %eax, %eax + mulxq (%rsi), %rax, %rbx + adcxq %rax, %r8 + adoxq %rbx, %r9 + mulxq 0x8(%rsi), %rax, %rbx + adcxq %rax, %r9 + adoxq %rbx, %r10 + mulxq 0x10(%rsi), %rax, %rbx + adcxq %rax, %r10 + adoxq %rbx, %r11 + mulxq 0x18(%rsi), %rax, %rbx + adcxq %rax, %r11 + adoxq %rbx, %r12 + mulxq 0x20(%rsi), %rax, %rbx + adcxq %rax, %r12 + adoxq %rbx, %r13 + mulxq 0x28(%rsi), %rax, %rbx + adcxq %rax, %r13 + adoxq %rbx, %r14 + mulxq 0x30(%rsi), %rax, %rbx + adcxq %rax, %r14 + adoxq %rbx, %r15 + mulxq 0x38(%rsi), %rax, %rbx + adcxq %rax, %r15 + adoxq %rbx, %rbp + mulxq 0x40(%rsi), %rax, %rbx + adcq %rax, %rbp + movq %r8, %rax + andq $0x1ff, %rax + shrdq $0x9, %r9, %r8 + shrdq $0x9, %r10, %r9 + shrdq $0x9, %r11, %r10 + shrdq $0x9, %r12, %r11 + shrdq $0x9, %r13, %r12 + shrdq $0x9, %r14, %r13 + shrdq $0x9, %r15, %r14 + shrdq $0x9, %rbp, %r15 + shrq $0x9, %rbp + addq %rax, %rbp + stc + adcq (%rsp), %r8 + adcq 0x8(%rsp), %r9 + adcq 0x10(%rsp), %r10 + adcq 0x18(%rsp), %r11 + adcq 0x20(%rsp), %r12 + adcq 0x28(%rsp), %r13 + adcq 0x30(%rsp), %r14 + adcq 0x38(%rsp), %r15 + adcq $0xfffffffffffffe00, %rbp + cmc + sbbq $0x0, %r8 + movq %r8, (%rdi) + sbbq $0x0, %r9 + movq %r9, 0x8(%rdi) + sbbq $0x0, %r10 + movq %r10, 0x10(%rdi) + sbbq $0x0, %r11 + movq %r11, 0x18(%rdi) + sbbq $0x0, %r12 + movq %r12, 0x20(%rdi) + sbbq $0x0, %r13 + movq %r13, 0x28(%rdi) + sbbq $0x0, %r14 + movq %r14, 0x30(%rdi) + sbbq $0x0, %r15 + movq %r15, 0x38(%rdi) + sbbq $0x0, %rbp + andq $0x1ff, %rbp + movq %rbp, 0x40(%rdi) + addq $0x40, %rsp + ret + +p521_jscalarmul_sqr_p521: + subq $0x40, %rsp + xorl %ebp, %ebp + movq (%rsi), %rdx + mulxq 0x8(%rsi), %r9, %rax + movq %r9, 0x8(%rsp) + mulxq 0x10(%rsi), %r10, %rcx + adcxq %rax, %r10 + movq %r10, 0x10(%rsp) + mulxq 0x18(%rsi), %r11, %rax + adcxq %rcx, %r11 + mulxq 0x20(%rsi), %r12, %rcx + adcxq %rax, %r12 + mulxq 0x28(%rsi), %r13, %rax + adcxq %rcx, %r13 + mulxq 0x30(%rsi), %r14, %rcx + adcxq %rax, %r14 + mulxq 0x38(%rsi), %r15, %r8 + adcxq %rcx, %r15 + adcxq %rbp, %r8 + xorl %ebp, %ebp + movq 0x8(%rsi), %rdx + mulxq 0x10(%rsi), %rax, %rcx + adcxq %rax, %r11 + adoxq %rcx, %r12 + movq %r11, 0x18(%rsp) + mulxq 0x18(%rsi), %rax, %rcx + adcxq %rax, %r12 + adoxq %rcx, %r13 + movq %r12, 0x20(%rsp) + mulxq 0x20(%rsi), %rax, %rcx + adcxq %rax, %r13 + adoxq %rcx, %r14 + mulxq 0x28(%rsi), %rax, %rcx + adcxq %rax, %r14 + adoxq %rcx, %r15 + mulxq 0x30(%rsi), %rax, %rcx + adcxq %rax, %r15 + adoxq %rcx, %r8 + mulxq 0x38(%rsi), %rax, %r9 + adcxq %rax, %r8 + adoxq %rbp, %r9 + movq 0x20(%rsi), %rdx + mulxq 0x28(%rsi), %rax, %r10 + adcxq %rax, %r9 + adoxq %rbp, %r10 + adcxq %rbp, %r10 + xorl %ebp, %ebp + movq 0x10(%rsi), %rdx + mulxq 0x18(%rsi), %rax, %rcx + adcxq %rax, %r13 + adoxq %rcx, %r14 + movq %r13, 0x28(%rsp) + mulxq 0x20(%rsi), %rax, %rcx + adcxq %rax, %r14 + adoxq %rcx, %r15 + movq %r14, 0x30(%rsp) + mulxq 0x28(%rsi), %rax, %rcx + adcxq %rax, %r15 + adoxq %rcx, %r8 + mulxq 0x30(%rsi), %rax, %rcx + adcxq %rax, %r8 + adoxq %rcx, %r9 + mulxq 0x38(%rsi), %rax, %rcx + adcxq %rax, %r9 + adoxq %rcx, %r10 + movq 0x30(%rsi), %rdx + mulxq 0x20(%rsi), %rax, %r11 + adcxq %rax, %r10 + adoxq %rbp, %r11 + mulxq 0x28(%rsi), %rax, %r12 + adcxq %rax, %r11 + adoxq %rbp, %r12 + adcxq %rbp, %r12 + xorl %ebp, %ebp + movq 0x18(%rsi), %rdx + mulxq 0x20(%rsi), %rax, %rcx + adcxq %rax, %r15 + adoxq %rcx, %r8 + movq %r15, 0x38(%rsp) + mulxq 0x28(%rsi), %rax, %rcx + adcxq %rax, %r8 + adoxq %rcx, %r9 + mulxq 0x30(%rsi), %rax, %rcx + adcxq %rax, %r9 + adoxq %rcx, %r10 + mulxq 0x38(%rsi), %rax, %rcx + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq 0x38(%rsi), %rdx + mulxq 0x20(%rsi), %rax, %rcx + adcxq %rax, %r11 + adoxq %rcx, %r12 + mulxq 0x28(%rsi), %rax, %r13 + adcxq %rax, %r12 + adoxq %rbp, %r13 + mulxq 0x30(%rsi), %rax, %r14 + adcxq %rax, %r13 + adoxq %rbp, %r14 + adcxq %rbp, %r14 + xorl %ebp, %ebp + movq (%rsi), %rdx + mulxq %rdx, %rax, %rcx + movq %rax, (%rsp) + movq 0x8(%rsp), %rax + adcxq %rax, %rax + adoxq %rcx, %rax + movq %rax, 0x8(%rsp) + movq 0x10(%rsp), %rax + movq 0x8(%rsi), %rdx + mulxq %rdx, %rdx, %rcx + adcxq %rax, %rax + adoxq %rdx, %rax + movq %rax, 0x10(%rsp) + movq 0x18(%rsp), %rax + adcxq %rax, %rax + adoxq %rcx, %rax + movq %rax, 0x18(%rsp) + movq 0x20(%rsp), %rax + movq 0x10(%rsi), %rdx + mulxq %rdx, %rdx, %rcx + adcxq %rax, %rax + adoxq %rdx, %rax + movq %rax, 0x20(%rsp) + movq 0x28(%rsp), %rax + adcxq %rax, %rax + adoxq %rcx, %rax + movq %rax, 0x28(%rsp) + movq 0x30(%rsp), %rax + movq 0x18(%rsi), %rdx + mulxq %rdx, %rdx, %rcx + adcxq %rax, %rax + adoxq %rdx, %rax + movq %rax, 0x30(%rsp) + movq 0x38(%rsp), %rax + adcxq %rax, %rax + adoxq %rcx, %rax + movq %rax, 0x38(%rsp) + movq 0x20(%rsi), %rdx + mulxq %rdx, %rdx, %rcx + adcxq %r8, %r8 + adoxq %rdx, %r8 + adcxq %r9, %r9 + adoxq %rcx, %r9 + movq 0x28(%rsi), %rdx + mulxq %rdx, %rdx, %rcx + adcxq %r10, %r10 + adoxq %rdx, %r10 + adcxq %r11, %r11 + adoxq %rcx, %r11 + movq 0x30(%rsi), %rdx + mulxq %rdx, %rdx, %rcx + adcxq %r12, %r12 + adoxq %rdx, %r12 + adcxq %r13, %r13 + adoxq %rcx, %r13 + movq 0x38(%rsi), %rdx + mulxq %rdx, %rdx, %r15 + adcxq %r14, %r14 + adoxq %rdx, %r14 + adcxq %rbp, %r15 + adoxq %rbp, %r15 + movq 0x40(%rsi), %rdx + movq %rdx, %rbp + imulq %rbp, %rbp + addq %rdx, %rdx + mulxq (%rsi), %rax, %rcx + adcxq %rax, %r8 + adoxq %rcx, %r9 + mulxq 0x8(%rsi), %rax, %rcx + adcxq %rax, %r9 + adoxq %rcx, %r10 + mulxq 0x10(%rsi), %rax, %rcx + adcxq %rax, %r10 + adoxq %rcx, %r11 + mulxq 0x18(%rsi), %rax, %rcx + adcxq %rax, %r11 + adoxq %rcx, %r12 + mulxq 0x20(%rsi), %rax, %rcx + adcxq %rax, %r12 + adoxq %rcx, %r13 + mulxq 0x28(%rsi), %rax, %rcx + adcxq %rax, %r13 + adoxq %rcx, %r14 + mulxq 0x30(%rsi), %rax, %rcx + adcxq %rax, %r14 + adoxq %rcx, %r15 + mulxq 0x38(%rsi), %rax, %rcx + adcxq %rax, %r15 + adoxq %rcx, %rbp + adcq $0x0, %rbp + movq %r8, %rax + andq $0x1ff, %rax + shrdq $0x9, %r9, %r8 + shrdq $0x9, %r10, %r9 + shrdq $0x9, %r11, %r10 + shrdq $0x9, %r12, %r11 + shrdq $0x9, %r13, %r12 + shrdq $0x9, %r14, %r13 + shrdq $0x9, %r15, %r14 + shrdq $0x9, %rbp, %r15 + shrq $0x9, %rbp + addq %rax, %rbp + stc + adcq (%rsp), %r8 + adcq 0x8(%rsp), %r9 + adcq 0x10(%rsp), %r10 + adcq 0x18(%rsp), %r11 + adcq 0x20(%rsp), %r12 + adcq 0x28(%rsp), %r13 + adcq 0x30(%rsp), %r14 + adcq 0x38(%rsp), %r15 + adcq $0xfffffffffffffe00, %rbp + cmc + sbbq $0x0, %r8 + movq %r8, (%rdi) + sbbq $0x0, %r9 + movq %r9, 0x8(%rdi) + sbbq $0x0, %r10 + movq %r10, 0x10(%rdi) + sbbq $0x0, %r11 + movq %r11, 0x18(%rdi) + sbbq $0x0, %r12 + movq %r12, 0x20(%rdi) + sbbq $0x0, %r13 + movq %r13, 0x28(%rdi) + sbbq $0x0, %r14 + movq %r14, 0x30(%rdi) + sbbq $0x0, %r15 + movq %r15, 0x38(%rdi) + sbbq $0x0, %rbp + andq $0x1ff, %rbp + movq %rbp, 0x40(%rdi) + addq $0x40, %rsp + ret + +#if defined(__linux__) && defined(__ELF__) +.section .note.GNU-stack, "", %progbits +#endif diff --git a/third_party/s2n-bignum/x86_att/p521/p521_jscalarmul_alt.S b/third_party/s2n-bignum/x86_att/p521/p521_jscalarmul_alt.S new file mode 100644 index 0000000000..ee0fca779b --- /dev/null +++ b/third_party/s2n-bignum/x86_att/p521/p521_jscalarmul_alt.S @@ -0,0 +1,2805 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT-0 + +// ---------------------------------------------------------------------------- +// Jacobian form scalar multiplication for P-521 +// Input scalar[9], point[27]; output res[27] +// +// extern void p521_jscalarmul_alt +// (uint64_t res[static 27], +// uint64_t scalar[static 9], +// uint64_t point[static 27]); +// +// This function is a variant of its affine point version p521_scalarmul. +// Here, input and output points are assumed to be in Jacobian form with +// a triple (x,y,z) representing the affine point (x/z^2,y/z^3) when +// z is nonzero or the point at infinity (group identity) if z = 0. +// +// Given scalar = n and point = P, assumed to be on the NIST elliptic +// curve P-521, returns a representation of n * P. If the result is the +// point at infinity (either because the input point was or because the +// scalar was a multiple of p_521) then the output is guaranteed to +// represent the point at infinity, i.e. to have its z coordinate zero. +// +// Standard x86-64 ABI: RDI = res, RSI = scalar, RDX = point +// Microsoft x64 ABI: RCX = res, RDX = scalar, R8 = point +// ---------------------------------------------------------------------------- + +#include "_internal_s2n_bignum.h" + + + S2N_BN_SYM_VISIBILITY_DIRECTIVE(p521_jscalarmul_alt) + S2N_BN_SYM_PRIVACY_DIRECTIVE(p521_jscalarmul_alt) + + .text + .balign 4 + +// Size of individual field elements + +#define NUMSIZE 72 +#define JACSIZE (3*NUMSIZE) + +// Intermediate variables on the stack. +// The table is 16 entries, each of size JACSIZE = 3 * NUMSIZE +// Uppercase syntactic variants make x86_att version simpler to generate. + +#define SCALARB (0*NUMSIZE) +#define scalarb (0*NUMSIZE)(%rsp) +#define ACC (1*NUMSIZE) +#define acc (1*NUMSIZE)(%rsp) +#define TABENT (4*NUMSIZE) +#define tabent (4*NUMSIZE)(%rsp) + +#define TAB (7*NUMSIZE) +#define tab (7*NUMSIZE)(%rsp) + +#define res (55*NUMSIZE)(%rsp) + +#define NSPACE (56*NUMSIZE) + +// Avoid using .rep for the sake of the BoringSSL/AWS-LC delocator, +// which doesn't accept repetitions, assembler macros etc. + +#define selectblock(I,C) \ + cmpq $I, %rdi ; \ + cmovzq TAB+JACSIZE*(I-1)+C*NUMSIZE(%rsp), %rax ; \ + cmovzq TAB+JACSIZE*(I-1)+8+C*NUMSIZE(%rsp), %rbx ; \ + cmovzq TAB+JACSIZE*(I-1)+16+C*NUMSIZE(%rsp), %rcx ; \ + cmovzq TAB+JACSIZE*(I-1)+24+C*NUMSIZE(%rsp), %rdx ; \ + cmovzq TAB+JACSIZE*(I-1)+32+C*NUMSIZE(%rsp), %r8 ; \ + cmovzq TAB+JACSIZE*(I-1)+40+C*NUMSIZE(%rsp), %r9 ; \ + cmovzq TAB+JACSIZE*(I-1)+48+C*NUMSIZE(%rsp), %r10 ; \ + cmovzq TAB+JACSIZE*(I-1)+56+C*NUMSIZE(%rsp), %r11 ; \ + cmovzq TAB+JACSIZE*(I-1)+64+C*NUMSIZE(%rsp), %r12 + +S2N_BN_SYMBOL(p521_jscalarmul_alt): + +// The Windows version literally calls the standard ABI version. +// This simplifies the proofs since subroutine offsets are fixed. + +#if WINDOWS_ABI + pushq %rdi + pushq %rsi + movq %rcx, %rdi + movq %rdx, %rsi + movq %r8, %rdx + callq p521_jscalarmul_alt_standard + popq %rsi + popq %rdi + ret + +p521_jscalarmul_alt_standard: +#endif + +// Real start of the standard ABI code. + + pushq %r15 + pushq %r14 + pushq %r13 + pushq %r12 + pushq %rbp + pushq %rbx + + subq $NSPACE, %rsp + +// Preserve the "res" input argument; others get processed early. + + movq %rdi, res + +// Reduce the input scalar mod n_521 and store it to "scalarb". + + movq %rdx, %rbx + leaq SCALARB(%rsp), %rdi + callq p521_jscalarmul_alt_bignum_mod_n521_9 + +// Set the tab[0] table entry to the input point = 1 * P, but also +// reduce all coordinates modulo p. In principle we assume reduction +// as a precondition, but this reduces the scope for surprise, e.g. +// making sure that any input with z = 0 is treated as zero, even +// if the other coordinates are not in fact reduced. + + leaq TAB(%rsp), %rdi + movq %rbx, %rsi + callq p521_jscalarmul_alt_bignum_mod_p521_9 + + leaq TAB+NUMSIZE(%rsp), %rdi + leaq NUMSIZE(%rbx), %rsi + callq p521_jscalarmul_alt_bignum_mod_p521_9 + + leaq TAB+2*NUMSIZE(%rsp), %rdi + leaq 2*NUMSIZE(%rbx), %rsi + callq p521_jscalarmul_alt_bignum_mod_p521_9 + +// If bit 520 of the scalar is set, then negate the scalar mod n_521, +// i.e. do scalar |-> n_521 - scalar, and also the point to compensate +// by negating its y coordinate. This further step is not needed by +// the indexing scheme (the top window is only a couple of bits either +// way), but is convenient to exclude a problem with the specific value +// scalar = n_521 - 18, where the last Jacobian addition is of the form +// (n_521 - 9) * P + -(9 * P) and hence is a degenerate doubling case. + + xorl %eax, %eax + notq %rax + movq $0xbb6fb71e91386409, %r8 + subq SCALARB(%rsp), %r8 + movq $0x3bb5c9b8899c47ae, %r9 + sbbq SCALARB+8(%rsp), %r9 + movq $0x7fcc0148f709a5d0, %r10 + sbbq SCALARB+16(%rsp), %r10 + movq $0x51868783bf2f966b, %r11 + sbbq SCALARB+24(%rsp), %r11 + leaq -5(%rax), %r12 + sbbq SCALARB+32(%rsp), %r12 + movq %rax, %r13 + sbbq SCALARB+40(%rsp), %r13 + movq %rax, %r14 + sbbq SCALARB+48(%rsp), %r14 + movq %rax, %r15 + sbbq SCALARB+56(%rsp), %r15 + movq $0x1ff, %rax + movq SCALARB+64(%rsp), %rcx + sbbq %rcx, %rax + + btq $8, %rcx + sbbq %rcx, %rcx + + cmovncq SCALARB(%rsp), %r8 + cmovncq SCALARB+8(%rsp), %r9 + cmovncq SCALARB+16(%rsp), %r10 + cmovncq SCALARB+24(%rsp), %r11 + cmovncq SCALARB+32(%rsp), %r12 + cmovncq SCALARB+40(%rsp), %r13 + cmovncq SCALARB+48(%rsp), %r14 + cmovncq SCALARB+56(%rsp), %r15 + cmovncq SCALARB+64(%rsp), %rax + + movq %r8, SCALARB(%rsp) + movq %r9, SCALARB+8(%rsp) + movq %r10, SCALARB+16(%rsp) + movq %r11, SCALARB+24(%rsp) + movq %r12, SCALARB+32(%rsp) + movq %r13, SCALARB+40(%rsp) + movq %r14, SCALARB+48(%rsp) + movq %r15, SCALARB+56(%rsp) + movq %rax, SCALARB+64(%rsp) + + movq TAB+NUMSIZE(%rsp), %r8 + movq TAB+NUMSIZE+8(%rsp), %r9 + movq TAB+NUMSIZE+16(%rsp), %r10 + movq TAB+NUMSIZE+24(%rsp), %r11 + movq TAB+NUMSIZE+32(%rsp), %r12 + movq TAB+NUMSIZE+40(%rsp), %r13 + movq TAB+NUMSIZE+48(%rsp), %r14 + movq TAB+NUMSIZE+56(%rsp), %r15 + movq TAB+NUMSIZE+64(%rsp), %rax + + movq %r8, %rbx + movq %r12, %rbp + orq %r9, %rbx + orq %r13, %rbp + orq %r10, %rbx + orq %r14, %rbp + orq %r11, %rbx + orq %r15, %rbp + orq %rbp, %rbx + orq %rax, %rbx + cmovzq %rbx, %rcx + + xorq %rcx, %r8 + xorq %rcx, %r9 + xorq %rcx, %r10 + xorq %rcx, %r11 + xorq %rcx, %r12 + xorq %rcx, %r13 + xorq %rcx, %r14 + xorq %rcx, %r15 + andq $0x1FF, %rcx + xorq %rcx, %rax + + movq %r8, TAB+NUMSIZE(%rsp) + movq %r9, TAB+NUMSIZE+8(%rsp) + movq %r10, TAB+NUMSIZE+16(%rsp) + movq %r11, TAB+NUMSIZE+24(%rsp) + movq %r12, TAB+NUMSIZE+32(%rsp) + movq %r13, TAB+NUMSIZE+40(%rsp) + movq %r14, TAB+NUMSIZE+48(%rsp) + movq %r15, TAB+NUMSIZE+56(%rsp) + movq %rax, TAB+NUMSIZE+64(%rsp) + +// Compute and record tab[1] = 2 * p, ..., tab[15] = 16 * P + + leaq TAB+JACSIZE*1(%rsp), %rdi + leaq TAB(%rsp), %rsi + callq p521_jscalarmul_alt_jdouble + + leaq TAB+JACSIZE*2(%rsp), %rdi + leaq TAB+JACSIZE*1(%rsp), %rsi + leaq TAB(%rsp), %rdx + callq p521_jscalarmul_alt_jadd + + leaq TAB+JACSIZE*3(%rsp), %rdi + leaq TAB+JACSIZE*1(%rsp), %rsi + callq p521_jscalarmul_alt_jdouble + + leaq TAB+JACSIZE*4(%rsp), %rdi + leaq TAB+JACSIZE*3(%rsp), %rsi + leaq TAB(%rsp), %rdx + callq p521_jscalarmul_alt_jadd + + leaq TAB+JACSIZE*5(%rsp), %rdi + leaq TAB+JACSIZE*2(%rsp), %rsi + callq p521_jscalarmul_alt_jdouble + + leaq TAB+JACSIZE*6(%rsp), %rdi + leaq TAB+JACSIZE*5(%rsp), %rsi + leaq TAB(%rsp), %rdx + callq p521_jscalarmul_alt_jadd + + leaq TAB+JACSIZE*7(%rsp), %rdi + leaq TAB+JACSIZE*3(%rsp), %rsi + callq p521_jscalarmul_alt_jdouble + + leaq TAB+JACSIZE*8(%rsp), %rdi + leaq TAB+JACSIZE*7(%rsp), %rsi + leaq TAB(%rsp), %rdx + callq p521_jscalarmul_alt_jadd + + leaq TAB+JACSIZE*9(%rsp), %rdi + leaq TAB+JACSIZE*4(%rsp), %rsi + callq p521_jscalarmul_alt_jdouble + + leaq TAB+JACSIZE*10(%rsp), %rdi + leaq TAB+JACSIZE*9(%rsp), %rsi + leaq TAB(%rsp), %rdx + callq p521_jscalarmul_alt_jadd + + leaq TAB+JACSIZE*11(%rsp), %rdi + leaq TAB+JACSIZE*5(%rsp), %rsi + callq p521_jscalarmul_alt_jdouble + + leaq TAB+JACSIZE*12(%rsp), %rdi + leaq TAB+JACSIZE*11(%rsp), %rsi + leaq TAB(%rsp), %rdx + callq p521_jscalarmul_alt_jadd + + leaq TAB+JACSIZE*13(%rsp), %rdi + leaq TAB+JACSIZE*6(%rsp), %rsi + callq p521_jscalarmul_alt_jdouble + + leaq TAB+JACSIZE*14(%rsp), %rdi + leaq TAB+JACSIZE*13(%rsp), %rsi + leaq TAB(%rsp), %rdx + callq p521_jscalarmul_alt_jadd + + leaq TAB+JACSIZE*15(%rsp), %rdi + leaq TAB+JACSIZE*7(%rsp), %rsi + callq p521_jscalarmul_alt_jdouble + +// Add the recoding constant sum_i(16 * 32^i) to the scalar to allow signed +// digits. The digits of the constant, in lowest-to-highest order, are as +// follows; they are generated dynamically to use fewer large constant loads. +// +// 0x0842108421084210 %rax +// 0x1084210842108421 %rbx +// 0x2108421084210842 %rbx<<1 +// 0x4210842108421084 %rbx<<2 +// 0x8421084210842108 %rbx<<3 +// 0x0842108421084210 %rax +// 0x1084210842108421 %rbx +// 0x2108421084210842 %rbx<<1 +// 0x0000000000000084 + + movq $0x1084210842108421, %rax + movq %rax, %rbx + shrq $1, %rax + movq SCALARB(%rsp), %r8 + addq %rax, %r8 + movq SCALARB+8(%rsp), %r9 + adcq %rbx, %r9 + leaq (%rbx,%rbx), %rcx + movq SCALARB+16(%rsp), %r10 + adcq %rcx, %r10 + leaq (%rcx,%rcx), %rcx + movq SCALARB+24(%rsp), %r11 + adcq %rcx, %r11 + leaq (%rcx,%rcx), %rcx + movq SCALARB+32(%rsp), %r12 + adcq %rcx, %r12 + movq SCALARB+40(%rsp), %r13 + adcq %rax, %r13 + movq SCALARB+48(%rsp), %r14 + adcq %rbx, %r14 + movq SCALARB+56(%rsp), %r15 + leaq (%rbx,%rbx), %rcx + adcq %rcx, %r15 + movq SCALARB+64(%rsp), %rax + adcq $0x84, %rax + +// Because of the initial reduction the top bitfield (>= bits 520) is <= 1, +// i.e. just a single bit. Record that in %rdi, then shift the whole +// scalar left 56 bits to align the top of the next bitfield with the MSB +// (bits 571..575). + + movq %rax, %rdi + shrq $8, %rdi + shldq $56, %r15, %rax + shldq $56, %r14, %r15 + shldq $56, %r13, %r14 + shldq $56, %r12, %r13 + shldq $56, %r11, %r12 + shldq $56, %r10, %r11 + shldq $56, %r9, %r10 + shldq $56, %r8, %r9 + shlq $56, %r8 + + movq %r8, SCALARB(%rsp) + movq %r9, SCALARB+8(%rsp) + movq %r10, SCALARB+16(%rsp) + movq %r11, SCALARB+24(%rsp) + movq %r12, SCALARB+32(%rsp) + movq %r13, SCALARB+40(%rsp) + movq %r14, SCALARB+48(%rsp) + movq %r15, SCALARB+56(%rsp) + movq %rax, SCALARB+64(%rsp) + +// According to the top bit, initialize the accumulator to P or 0. This top +// digit, uniquely, is not recoded so there is no sign adjustment to make. +// We only really need to adjust the z coordinate to zero, but do all three. + + xorl %ecx, %ecx + testq %rdi, %rdi + + movq TAB(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC(%rsp) + movq TAB+8(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+8(%rsp) + movq TAB+16(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+16(%rsp) + movq TAB+24(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+24(%rsp) + movq TAB+32(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+32(%rsp) + movq TAB+40(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+40(%rsp) + movq TAB+48(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+48(%rsp) + movq TAB+56(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+56(%rsp) + movq TAB+64(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+64(%rsp) + movq TAB+72(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+72(%rsp) + movq TAB+80(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+80(%rsp) + movq TAB+88(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+88(%rsp) + movq TAB+96(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+96(%rsp) + movq TAB+104(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+104(%rsp) + movq TAB+112(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+112(%rsp) + movq TAB+120(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+120(%rsp) + movq TAB+128(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+128(%rsp) + movq TAB+136(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+136(%rsp) + movq TAB+144(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+144(%rsp) + movq TAB+152(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+152(%rsp) + movq TAB+160(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+160(%rsp) + movq TAB+168(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+168(%rsp) + movq TAB+176(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+176(%rsp) + movq TAB+184(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+184(%rsp) + movq TAB+192(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+192(%rsp) + movq TAB+200(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+200(%rsp) + movq TAB+208(%rsp), %rax + cmovzq %rcx, %rax + movq %rax, ACC+208(%rsp) + +// Main loop over size-5 bitfields: double 5 times then add signed digit +// At each stage we shift the scalar left by 5 bits so we can simply pick +// the top 5 bits as the bitfield, saving some fiddle over indexing. + + movl $520, %ebp + +p521_jscalarmul_alt_mainloop: + subq $5, %rbp + + leaq ACC(%rsp), %rsi + leaq ACC(%rsp), %rdi + callq p521_jscalarmul_alt_jdouble + + leaq ACC(%rsp), %rsi + leaq ACC(%rsp), %rdi + callq p521_jscalarmul_alt_jdouble + + leaq ACC(%rsp), %rsi + leaq ACC(%rsp), %rdi + callq p521_jscalarmul_alt_jdouble + + leaq ACC(%rsp), %rsi + leaq ACC(%rsp), %rdi + callq p521_jscalarmul_alt_jdouble + + leaq ACC(%rsp), %rsi + leaq ACC(%rsp), %rdi + callq p521_jscalarmul_alt_jdouble + +// Choose the bitfield and adjust it to sign and magnitude + + movq SCALARB(%rsp), %r8 + movq SCALARB+8(%rsp), %r9 + movq SCALARB+16(%rsp), %r10 + movq SCALARB+24(%rsp), %r11 + movq SCALARB+32(%rsp), %r12 + movq SCALARB+40(%rsp), %r13 + movq SCALARB+48(%rsp), %r14 + movq SCALARB+56(%rsp), %r15 + movq SCALARB+64(%rsp), %rax + + + movq %rax, %rdi + shrq $59, %rdi + + shldq $5, %r15, %rax + shldq $5, %r14, %r15 + shldq $5, %r13, %r14 + shldq $5, %r12, %r13 + shldq $5, %r11, %r12 + shldq $5, %r10, %r11 + shldq $5, %r9, %r10 + shldq $5, %r8, %r9 + shlq $5, %r8 + + movq %r8, SCALARB(%rsp) + movq %r9, SCALARB+8(%rsp) + movq %r10, SCALARB+16(%rsp) + movq %r11, SCALARB+24(%rsp) + movq %r12, SCALARB+32(%rsp) + movq %r13, SCALARB+40(%rsp) + movq %r14, SCALARB+48(%rsp) + movq %r15, SCALARB+56(%rsp) + movq %rax, SCALARB+64(%rsp) + + subq $16, %rdi + sbbq %rsi, %rsi // %rsi = sign of digit (-1 = negative) + xorq %rsi, %rdi + subq %rsi, %rdi // %rdi = absolute value of digit + +// Conditionally select the table entry tab[i-1] = i * P in constant time +// Again, this is done in separate sweeps per coordinate, doing y last. + + xorl %eax, %eax + xorl %ebx, %ebx + xorl %ecx, %ecx + xorl %edx, %edx + xorl %r8d, %r8d + xorl %r9d, %r9d + xorl %r10d, %r10d + xorl %r11d, %r11d + xorl %r12d, %r12d + selectblock(1,0) + selectblock(2,0) + selectblock(3,0) + selectblock(4,0) + selectblock(5,0) + selectblock(6,0) + selectblock(7,0) + selectblock(8,0) + selectblock(9,0) + selectblock(10,0) + selectblock(11,0) + selectblock(12,0) + selectblock(13,0) + selectblock(14,0) + selectblock(15,0) + selectblock(16,0) + movq %rax, TABENT(%rsp) + movq %rbx, TABENT+8(%rsp) + movq %rcx, TABENT+16(%rsp) + movq %rdx, TABENT+24(%rsp) + movq %r8, TABENT+32(%rsp) + movq %r9, TABENT+40(%rsp) + movq %r10, TABENT+48(%rsp) + movq %r11, TABENT+56(%rsp) + movq %r12, TABENT+64(%rsp) + + xorl %eax, %eax + xorl %ebx, %ebx + xorl %ecx, %ecx + xorl %edx, %edx + xorl %r8d, %r8d + xorl %r9d, %r9d + xorl %r10d, %r10d + xorl %r11d, %r11d + xorl %r12d, %r12d + selectblock(1,2) + selectblock(2,2) + selectblock(3,2) + selectblock(4,2) + selectblock(5,2) + selectblock(6,2) + selectblock(7,2) + selectblock(8,2) + selectblock(9,2) + selectblock(10,2) + selectblock(11,2) + selectblock(12,2) + selectblock(13,2) + selectblock(14,2) + selectblock(15,2) + selectblock(16,2) + movq %rax, TABENT+2*NUMSIZE(%rsp) + movq %rbx, TABENT+2*NUMSIZE+8(%rsp) + movq %rcx, TABENT+2*NUMSIZE+16(%rsp) + movq %rdx, TABENT+2*NUMSIZE+24(%rsp) + movq %r8, TABENT+2*NUMSIZE+32(%rsp) + movq %r9, TABENT+2*NUMSIZE+40(%rsp) + movq %r10, TABENT+2*NUMSIZE+48(%rsp) + movq %r11, TABENT+2*NUMSIZE+56(%rsp) + movq %r12, TABENT+2*NUMSIZE+64(%rsp) + + xorl %eax, %eax + xorl %ebx, %ebx + xorl %ecx, %ecx + xorl %edx, %edx + xorl %r8d, %r8d + xorl %r9d, %r9d + xorl %r10d, %r10d + xorl %r11d, %r11d + xorl %r12d, %r12d + selectblock(1,1) + selectblock(2,1) + selectblock(3,1) + selectblock(4,1) + selectblock(5,1) + selectblock(6,1) + selectblock(7,1) + selectblock(8,1) + selectblock(9,1) + selectblock(10,1) + selectblock(11,1) + selectblock(12,1) + selectblock(13,1) + selectblock(14,1) + selectblock(15,1) + selectblock(16,1) + +// Store it to "tabent" with the y coordinate optionally negated. +// This is done carefully to give coordinates < p_521 even in +// the degenerate case y = 0 (when z = 0 for points on the curve). + + movq %rax, %r13 + orq %rbx, %r13 + movq %rcx, %r14 + orq %rdx, %r14 + movq %r8, %r15 + orq %r9, %r15 + movq %r10, %rdi + orq %r11, %rdi + orq %r14, %r13 + orq %rdi, %r15 + orq %r12, %r15 + orq %r15, %r13 + cmovzq %r13, %rsi + + xorq %rsi, %rax + xorq %rsi, %rbx + xorq %rsi, %rcx + xorq %rsi, %rdx + xorq %rsi, %r8 + xorq %rsi, %r9 + xorq %rsi, %r10 + xorq %rsi, %r11 + andq $0x1FF, %rsi + xorq %rsi, %r12 + + movq %rax, TABENT+NUMSIZE(%rsp) + movq %rbx, TABENT+NUMSIZE+8(%rsp) + movq %rcx, TABENT+NUMSIZE+16(%rsp) + movq %rdx, TABENT+NUMSIZE+24(%rsp) + movq %r8, TABENT+NUMSIZE+32(%rsp) + movq %r9, TABENT+NUMSIZE+40(%rsp) + movq %r10, TABENT+NUMSIZE+48(%rsp) + movq %r11, TABENT+NUMSIZE+56(%rsp) + movq %r12, TABENT+NUMSIZE+64(%rsp) + +// Add to the accumulator + + leaq TABENT(%rsp), %rdx + leaq ACC(%rsp), %rsi + leaq ACC(%rsp), %rdi + callq p521_jscalarmul_alt_jadd + + testq %rbp, %rbp + jne p521_jscalarmul_alt_mainloop + +// That's the end of the main loop, and we just need to copy the +// result in "acc" to the output. + + movq res, %rdi + movq ACC(%rsp), %rax + movq %rax, (%rdi) + movq ACC+8(%rsp), %rax + movq %rax, 8(%rdi) + movq ACC+16(%rsp), %rax + movq %rax, 16(%rdi) + movq ACC+24(%rsp), %rax + movq %rax, 24(%rdi) + movq ACC+32(%rsp), %rax + movq %rax, 32(%rdi) + movq ACC+40(%rsp), %rax + movq %rax, 40(%rdi) + movq ACC+48(%rsp), %rax + movq %rax, 48(%rdi) + movq ACC+56(%rsp), %rax + movq %rax, 56(%rdi) + movq ACC+64(%rsp), %rax + movq %rax, 64(%rdi) + movq ACC+72(%rsp), %rax + movq %rax, 72(%rdi) + movq ACC+80(%rsp), %rax + movq %rax, 80(%rdi) + movq ACC+88(%rsp), %rax + movq %rax, 88(%rdi) + movq ACC+96(%rsp), %rax + movq %rax, 96(%rdi) + movq ACC+104(%rsp), %rax + movq %rax, 104(%rdi) + movq ACC+112(%rsp), %rax + movq %rax, 112(%rdi) + movq ACC+120(%rsp), %rax + movq %rax, 120(%rdi) + movq ACC+128(%rsp), %rax + movq %rax, 128(%rdi) + movq ACC+136(%rsp), %rax + movq %rax, 136(%rdi) + movq ACC+144(%rsp), %rax + movq %rax, 144(%rdi) + movq ACC+152(%rsp), %rax + movq %rax, 152(%rdi) + movq ACC+160(%rsp), %rax + movq %rax, 160(%rdi) + movq ACC+168(%rsp), %rax + movq %rax, 168(%rdi) + movq ACC+176(%rsp), %rax + movq %rax, 176(%rdi) + movq ACC+184(%rsp), %rax + movq %rax, 184(%rdi) + movq ACC+192(%rsp), %rax + movq %rax, 192(%rdi) + movq ACC+200(%rsp), %rax + movq %rax, 200(%rdi) + movq ACC+208(%rsp), %rax + movq %rax, 208(%rdi) + +// Restore stack and registers and return + + addq $NSPACE, %rsp + popq %rbx + popq %rbp + popq %r12 + popq %r13 + popq %r14 + popq %r15 + ret + +// Local copies of subroutines, complete clones at the moment + +p521_jscalarmul_alt_bignum_mod_p521_9: + pushq %rbx + movq 0x40(%rsi), %rax + movl $0x1ff, %edx + andq %rax, %rdx + shrq $0x9, %rax + stc + adcq (%rsi), %rax + movq 0x8(%rsi), %rcx + adcq $0x0, %rcx + movq 0x10(%rsi), %r8 + adcq $0x0, %r8 + movq 0x18(%rsi), %r9 + adcq $0x0, %r9 + movq 0x20(%rsi), %r10 + adcq $0x0, %r10 + movq 0x28(%rsi), %r11 + adcq $0x0, %r11 + movq 0x30(%rsi), %rbx + adcq $0x0, %rbx + movq 0x38(%rsi), %rsi + adcq $0x0, %rsi + adcq $0x0, %rdx + cmpq $0x200, %rdx + sbbq $0x0, %rax + movq %rax, (%rdi) + sbbq $0x0, %rcx + movq %rcx, 0x8(%rdi) + sbbq $0x0, %r8 + movq %r8, 0x10(%rdi) + sbbq $0x0, %r9 + movq %r9, 0x18(%rdi) + sbbq $0x0, %r10 + movq %r10, 0x20(%rdi) + sbbq $0x0, %r11 + movq %r11, 0x28(%rdi) + sbbq $0x0, %rbx + movq %rbx, 0x30(%rdi) + sbbq $0x0, %rsi + movq %rsi, 0x38(%rdi) + sbbq $0x0, %rdx + andq $0x1ff, %rdx + movq %rdx, 0x40(%rdi) + popq %rbx + ret + +p521_jscalarmul_alt_bignum_mod_n521_9: + movq 0x40(%rsi), %rcx + movq $0xfffffffffffffe00, %rax + orq %rcx, %rax + movq %rax, 0x40(%rdi) + shrq $0x9, %rcx + addq $0x1, %rcx + movq $0x449048e16ec79bf7, %rax + mulq %rcx + movq %rax, %r8 + movq %rdx, %r9 + movq $0xc44a36477663b851, %rax + mulq %rcx + xorq %r10, %r10 + addq %rax, %r9 + adcq %rdx, %r10 + movq $0x8033feb708f65a2f, %rax + mulq %rcx + xorq %r11, %r11 + addq %rax, %r10 + adcq %rdx, %r11 + movq $0xae79787c40d06994, %rax + mulq %rcx + imulq $0x5, %rcx, %rcx + addq %rax, %r11 + adcq %rdx, %rcx + sbbq %rdx, %rdx + negq %rdx + xorl %eax, %eax + addq (%rsi), %r8 + movq %r8, (%rdi) + adcq 0x8(%rsi), %r9 + movq %r9, 0x8(%rdi) + adcq 0x10(%rsi), %r10 + movq %r10, 0x10(%rdi) + adcq 0x18(%rsi), %r11 + movq %r11, 0x18(%rdi) + adcq 0x20(%rsi), %rcx + movq %rcx, 0x20(%rdi) + adcq 0x28(%rsi), %rdx + movq %rdx, 0x28(%rdi) + movq 0x30(%rsi), %rdx + adcq %rax, %rdx + movq %rdx, 0x30(%rdi) + movq 0x38(%rsi), %rdx + adcq %rax, %rdx + movq %rdx, 0x38(%rdi) + movq 0x40(%rdi), %rcx + adcq %rax, %rcx + cmc + sbbq %rdx, %rdx + movq $0x449048e16ec79bf7, %r8 + andq %rdx, %r8 + movq $0xc44a36477663b851, %r9 + andq %rdx, %r9 + movq $0x8033feb708f65a2f, %r10 + andq %rdx, %r10 + movq $0xae79787c40d06994, %r11 + andq %rdx, %r11 + andq $0x5, %rdx + subq %r8, (%rdi) + sbbq %r9, 0x8(%rdi) + sbbq %r10, 0x10(%rdi) + sbbq %r11, 0x18(%rdi) + sbbq %rdx, 0x20(%rdi) + sbbq %rax, 0x28(%rdi) + sbbq %rax, 0x30(%rdi) + sbbq %rax, 0x38(%rdi) + sbbl %eax, %ecx + andl $0x1ff, %ecx + movq %rcx, 0x40(%rdi) + ret + +p521_jscalarmul_alt_jadd: + pushq %rbx + pushq %rbp + pushq %r12 + pushq %r13 + pushq %r14 + pushq %r15 + subq $0x210, %rsp + movq %rdi, 0x1f8(%rsp) + movq %rsi, 0x200(%rsp) + movq %rdx, 0x208(%rsp) + movq 0x200(%rsp), %rsi + leaq 0x90(%rsi), %rsi + leaq (%rsp), %rdi + callq p521_jscalarmul_alt_sqr_p521 + movq 0x208(%rsp), %rdi + leaq 0x90(%rdi), %rsi + leaq 0x168(%rsp), %rdi + callq p521_jscalarmul_alt_sqr_p521 + movq 0x200(%rsp), %rsi + movq 0x208(%rsp), %rdi + leaq 0x48(%rsi), %rdx + leaq 0x90(%rdi), %rsi + leaq 0x1b0(%rsp), %rdi + callq p521_jscalarmul_alt_mul_p521 + movq 0x200(%rsp), %rsi + movq 0x208(%rsp), %rdi + leaq 0x48(%rdi), %rdx + leaq 0x90(%rsi), %rsi + leaq 0x48(%rsp), %rdi + callq p521_jscalarmul_alt_mul_p521 + movq 0x208(%rsp), %rdi + leaq (%rdi), %rdx + leaq (%rsp), %rsi + leaq 0x90(%rsp), %rdi + callq p521_jscalarmul_alt_mul_p521 + movq 0x200(%rsp), %rsi + leaq (%rsi), %rdx + leaq 0x168(%rsp), %rsi + leaq 0x120(%rsp), %rdi + callq p521_jscalarmul_alt_mul_p521 + leaq 0x48(%rsp), %rdx + leaq (%rsp), %rsi + leaq 0x48(%rsp), %rdi + callq p521_jscalarmul_alt_mul_p521 + leaq 0x1b0(%rsp), %rdx + leaq 0x168(%rsp), %rsi + leaq 0x1b0(%rsp), %rdi + callq p521_jscalarmul_alt_mul_p521 + movq 0x90(%rsp), %rax + subq 0x120(%rsp), %rax + movq 0x98(%rsp), %rdx + sbbq 0x128(%rsp), %rdx + movq 0xa0(%rsp), %r8 + sbbq 0x130(%rsp), %r8 + movq 0xa8(%rsp), %r9 + sbbq 0x138(%rsp), %r9 + movq 0xb0(%rsp), %r10 + sbbq 0x140(%rsp), %r10 + movq 0xb8(%rsp), %r11 + sbbq 0x148(%rsp), %r11 + movq 0xc0(%rsp), %r12 + sbbq 0x150(%rsp), %r12 + movq 0xc8(%rsp), %r13 + sbbq 0x158(%rsp), %r13 + movq 0xd0(%rsp), %r14 + sbbq 0x160(%rsp), %r14 + sbbq $0x0, %rax + movq %rax, 0x168(%rsp) + sbbq $0x0, %rdx + movq %rdx, 0x170(%rsp) + sbbq $0x0, %r8 + movq %r8, 0x178(%rsp) + sbbq $0x0, %r9 + movq %r9, 0x180(%rsp) + sbbq $0x0, %r10 + movq %r10, 0x188(%rsp) + sbbq $0x0, %r11 + movq %r11, 0x190(%rsp) + sbbq $0x0, %r12 + movq %r12, 0x198(%rsp) + sbbq $0x0, %r13 + movq %r13, 0x1a0(%rsp) + sbbq $0x0, %r14 + andq $0x1ff, %r14 + movq %r14, 0x1a8(%rsp) + movq 0x48(%rsp), %rax + subq 0x1b0(%rsp), %rax + movq 0x50(%rsp), %rdx + sbbq 0x1b8(%rsp), %rdx + movq 0x58(%rsp), %r8 + sbbq 0x1c0(%rsp), %r8 + movq 0x60(%rsp), %r9 + sbbq 0x1c8(%rsp), %r9 + movq 0x68(%rsp), %r10 + sbbq 0x1d0(%rsp), %r10 + movq 0x70(%rsp), %r11 + sbbq 0x1d8(%rsp), %r11 + movq 0x78(%rsp), %r12 + sbbq 0x1e0(%rsp), %r12 + movq 0x80(%rsp), %r13 + sbbq 0x1e8(%rsp), %r13 + movq 0x88(%rsp), %r14 + sbbq 0x1f0(%rsp), %r14 + sbbq $0x0, %rax + movq %rax, 0x48(%rsp) + sbbq $0x0, %rdx + movq %rdx, 0x50(%rsp) + sbbq $0x0, %r8 + movq %r8, 0x58(%rsp) + sbbq $0x0, %r9 + movq %r9, 0x60(%rsp) + sbbq $0x0, %r10 + movq %r10, 0x68(%rsp) + sbbq $0x0, %r11 + movq %r11, 0x70(%rsp) + sbbq $0x0, %r12 + movq %r12, 0x78(%rsp) + sbbq $0x0, %r13 + movq %r13, 0x80(%rsp) + sbbq $0x0, %r14 + andq $0x1ff, %r14 + movq %r14, 0x88(%rsp) + leaq 0x168(%rsp), %rsi + leaq 0xd8(%rsp), %rdi + callq p521_jscalarmul_alt_sqr_p521 + leaq 0x48(%rsp), %rsi + leaq (%rsp), %rdi + callq p521_jscalarmul_alt_sqr_p521 + leaq 0x120(%rsp), %rdx + leaq 0xd8(%rsp), %rsi + leaq 0x120(%rsp), %rdi + callq p521_jscalarmul_alt_mul_p521 + leaq 0x90(%rsp), %rdx + leaq 0xd8(%rsp), %rsi + leaq 0x90(%rsp), %rdi + callq p521_jscalarmul_alt_mul_p521 + movq (%rsp), %rax + subq 0x120(%rsp), %rax + movq 0x8(%rsp), %rdx + sbbq 0x128(%rsp), %rdx + movq 0x10(%rsp), %r8 + sbbq 0x130(%rsp), %r8 + movq 0x18(%rsp), %r9 + sbbq 0x138(%rsp), %r9 + movq 0x20(%rsp), %r10 + sbbq 0x140(%rsp), %r10 + movq 0x28(%rsp), %r11 + sbbq 0x148(%rsp), %r11 + movq 0x30(%rsp), %r12 + sbbq 0x150(%rsp), %r12 + movq 0x38(%rsp), %r13 + sbbq 0x158(%rsp), %r13 + movq 0x40(%rsp), %r14 + sbbq 0x160(%rsp), %r14 + sbbq $0x0, %rax + movq %rax, (%rsp) + sbbq $0x0, %rdx + movq %rdx, 0x8(%rsp) + sbbq $0x0, %r8 + movq %r8, 0x10(%rsp) + sbbq $0x0, %r9 + movq %r9, 0x18(%rsp) + sbbq $0x0, %r10 + movq %r10, 0x20(%rsp) + sbbq $0x0, %r11 + movq %r11, 0x28(%rsp) + sbbq $0x0, %r12 + movq %r12, 0x30(%rsp) + sbbq $0x0, %r13 + movq %r13, 0x38(%rsp) + sbbq $0x0, %r14 + andq $0x1ff, %r14 + movq %r14, 0x40(%rsp) + movq 0x90(%rsp), %rax + subq 0x120(%rsp), %rax + movq 0x98(%rsp), %rdx + sbbq 0x128(%rsp), %rdx + movq 0xa0(%rsp), %r8 + sbbq 0x130(%rsp), %r8 + movq 0xa8(%rsp), %r9 + sbbq 0x138(%rsp), %r9 + movq 0xb0(%rsp), %r10 + sbbq 0x140(%rsp), %r10 + movq 0xb8(%rsp), %r11 + sbbq 0x148(%rsp), %r11 + movq 0xc0(%rsp), %r12 + sbbq 0x150(%rsp), %r12 + movq 0xc8(%rsp), %r13 + sbbq 0x158(%rsp), %r13 + movq 0xd0(%rsp), %r14 + sbbq 0x160(%rsp), %r14 + sbbq $0x0, %rax + movq %rax, 0xd8(%rsp) + sbbq $0x0, %rdx + movq %rdx, 0xe0(%rsp) + sbbq $0x0, %r8 + movq %r8, 0xe8(%rsp) + sbbq $0x0, %r9 + movq %r9, 0xf0(%rsp) + sbbq $0x0, %r10 + movq %r10, 0xf8(%rsp) + sbbq $0x0, %r11 + movq %r11, 0x100(%rsp) + sbbq $0x0, %r12 + movq %r12, 0x108(%rsp) + sbbq $0x0, %r13 + movq %r13, 0x110(%rsp) + sbbq $0x0, %r14 + andq $0x1ff, %r14 + movq %r14, 0x118(%rsp) + movq 0x200(%rsp), %rsi + leaq 0x90(%rsi), %rdx + leaq 0x168(%rsp), %rsi + leaq 0x168(%rsp), %rdi + callq p521_jscalarmul_alt_mul_p521 + movq (%rsp), %rax + subq 0x90(%rsp), %rax + movq 0x8(%rsp), %rdx + sbbq 0x98(%rsp), %rdx + movq 0x10(%rsp), %r8 + sbbq 0xa0(%rsp), %r8 + movq 0x18(%rsp), %r9 + sbbq 0xa8(%rsp), %r9 + movq 0x20(%rsp), %r10 + sbbq 0xb0(%rsp), %r10 + movq 0x28(%rsp), %r11 + sbbq 0xb8(%rsp), %r11 + movq 0x30(%rsp), %r12 + sbbq 0xc0(%rsp), %r12 + movq 0x38(%rsp), %r13 + sbbq 0xc8(%rsp), %r13 + movq 0x40(%rsp), %r14 + sbbq 0xd0(%rsp), %r14 + sbbq $0x0, %rax + movq %rax, (%rsp) + sbbq $0x0, %rdx + movq %rdx, 0x8(%rsp) + sbbq $0x0, %r8 + movq %r8, 0x10(%rsp) + sbbq $0x0, %r9 + movq %r9, 0x18(%rsp) + sbbq $0x0, %r10 + movq %r10, 0x20(%rsp) + sbbq $0x0, %r11 + movq %r11, 0x28(%rsp) + sbbq $0x0, %r12 + movq %r12, 0x30(%rsp) + sbbq $0x0, %r13 + movq %r13, 0x38(%rsp) + sbbq $0x0, %r14 + andq $0x1ff, %r14 + movq %r14, 0x40(%rsp) + movq 0x120(%rsp), %rax + subq (%rsp), %rax + movq 0x128(%rsp), %rdx + sbbq 0x8(%rsp), %rdx + movq 0x130(%rsp), %r8 + sbbq 0x10(%rsp), %r8 + movq 0x138(%rsp), %r9 + sbbq 0x18(%rsp), %r9 + movq 0x140(%rsp), %r10 + sbbq 0x20(%rsp), %r10 + movq 0x148(%rsp), %r11 + sbbq 0x28(%rsp), %r11 + movq 0x150(%rsp), %r12 + sbbq 0x30(%rsp), %r12 + movq 0x158(%rsp), %r13 + sbbq 0x38(%rsp), %r13 + movq 0x160(%rsp), %r14 + sbbq 0x40(%rsp), %r14 + sbbq $0x0, %rax + movq %rax, 0x120(%rsp) + sbbq $0x0, %rdx + movq %rdx, 0x128(%rsp) + sbbq $0x0, %r8 + movq %r8, 0x130(%rsp) + sbbq $0x0, %r9 + movq %r9, 0x138(%rsp) + sbbq $0x0, %r10 + movq %r10, 0x140(%rsp) + sbbq $0x0, %r11 + movq %r11, 0x148(%rsp) + sbbq $0x0, %r12 + movq %r12, 0x150(%rsp) + sbbq $0x0, %r13 + movq %r13, 0x158(%rsp) + sbbq $0x0, %r14 + andq $0x1ff, %r14 + movq %r14, 0x160(%rsp) + leaq 0x1b0(%rsp), %rdx + leaq 0xd8(%rsp), %rsi + leaq 0xd8(%rsp), %rdi + callq p521_jscalarmul_alt_mul_p521 + movq 0x208(%rsp), %rdi + leaq 0x90(%rdi), %rdx + leaq 0x168(%rsp), %rsi + leaq 0x168(%rsp), %rdi + callq p521_jscalarmul_alt_mul_p521 + leaq 0x120(%rsp), %rdx + leaq 0x48(%rsp), %rsi + leaq 0x120(%rsp), %rdi + callq p521_jscalarmul_alt_mul_p521 + movq 0x120(%rsp), %rax + subq 0xd8(%rsp), %rax + movq 0x128(%rsp), %rdx + sbbq 0xe0(%rsp), %rdx + movq 0x130(%rsp), %r8 + sbbq 0xe8(%rsp), %r8 + movq 0x138(%rsp), %r9 + sbbq 0xf0(%rsp), %r9 + movq 0x140(%rsp), %r10 + sbbq 0xf8(%rsp), %r10 + movq 0x148(%rsp), %r11 + sbbq 0x100(%rsp), %r11 + movq 0x150(%rsp), %r12 + sbbq 0x108(%rsp), %r12 + movq 0x158(%rsp), %r13 + sbbq 0x110(%rsp), %r13 + movq 0x160(%rsp), %r14 + sbbq 0x118(%rsp), %r14 + sbbq $0x0, %rax + movq %rax, 0x120(%rsp) + sbbq $0x0, %rdx + movq %rdx, 0x128(%rsp) + sbbq $0x0, %r8 + movq %r8, 0x130(%rsp) + sbbq $0x0, %r9 + movq %r9, 0x138(%rsp) + sbbq $0x0, %r10 + movq %r10, 0x140(%rsp) + sbbq $0x0, %r11 + movq %r11, 0x148(%rsp) + sbbq $0x0, %r12 + movq %r12, 0x150(%rsp) + sbbq $0x0, %r13 + movq %r13, 0x158(%rsp) + sbbq $0x0, %r14 + andq $0x1ff, %r14 + movq %r14, 0x160(%rsp) + movq 0x200(%rsp), %rsi + movq 0x90(%rsi), %r8 + movq 0x98(%rsi), %r9 + movq 0xa0(%rsi), %r10 + movq 0xa8(%rsi), %r11 + movq 0xb0(%rsi), %r12 + movq 0xb8(%rsi), %r13 + movq 0xc0(%rsi), %r14 + movq 0xc8(%rsi), %r15 + movq 0xd0(%rsi), %rbp + orq %r9, %r8 + orq %r11, %r10 + orq %r13, %r12 + orq %r15, %r14 + orq %r10, %r8 + orq %r14, %r12 + orq %rbp, %r8 + orq %r12, %r8 + negq %r8 + sbbq %rax, %rax + movq 0x208(%rsp), %rdi + movq 0x90(%rdi), %r8 + movq 0x98(%rdi), %r9 + movq 0xa0(%rdi), %r10 + movq 0xa8(%rdi), %r11 + movq 0xb0(%rdi), %r12 + movq 0xb8(%rdi), %r13 + movq 0xc0(%rdi), %r14 + movq 0xc8(%rdi), %r15 + movq 0xd0(%rdi), %rbp + orq %r9, %r8 + orq %r11, %r10 + orq %r13, %r12 + orq %r15, %r14 + orq %r10, %r8 + orq %r14, %r12 + orq %rbp, %r8 + orq %r12, %r8 + negq %r8 + sbbq %rdx, %rdx + cmpq %rax, %rdx + movq 0x120(%rsp), %r8 + cmovbq 0x48(%rsi), %r8 + cmova 0x48(%rdi), %r8 + movq 0x128(%rsp), %r9 + cmovbq 0x50(%rsi), %r9 + cmova 0x50(%rdi), %r9 + movq 0x130(%rsp), %r10 + cmovbq 0x58(%rsi), %r10 + cmova 0x58(%rdi), %r10 + movq 0x138(%rsp), %r11 + cmovbq 0x60(%rsi), %r11 + cmova 0x60(%rdi), %r11 + movq 0x140(%rsp), %r12 + cmovbq 0x68(%rsi), %r12 + cmova 0x68(%rdi), %r12 + movq 0x148(%rsp), %r13 + cmovbq 0x70(%rsi), %r13 + cmova 0x70(%rdi), %r13 + movq 0x150(%rsp), %r14 + cmovbq 0x78(%rsi), %r14 + cmova 0x78(%rdi), %r14 + movq 0x158(%rsp), %r15 + cmovbq 0x80(%rsi), %r15 + cmova 0x80(%rdi), %r15 + movq 0x160(%rsp), %rbp + cmovbq 0x88(%rsi), %rbp + cmova 0x88(%rdi), %rbp + movq %r8, 0x120(%rsp) + movq %r9, 0x128(%rsp) + movq %r10, 0x130(%rsp) + movq %r11, 0x138(%rsp) + movq %r12, 0x140(%rsp) + movq %r13, 0x148(%rsp) + movq %r14, 0x150(%rsp) + movq %r15, 0x158(%rsp) + movq %rbp, 0x160(%rsp) + movq 0x168(%rsp), %r8 + cmovbq 0x90(%rsi), %r8 + cmova 0x90(%rdi), %r8 + movq 0x170(%rsp), %r9 + cmovbq 0x98(%rsi), %r9 + cmova 0x98(%rdi), %r9 + movq 0x178(%rsp), %r10 + cmovbq 0xa0(%rsi), %r10 + cmova 0xa0(%rdi), %r10 + movq 0x180(%rsp), %r11 + cmovbq 0xa8(%rsi), %r11 + cmova 0xa8(%rdi), %r11 + movq 0x188(%rsp), %r12 + cmovbq 0xb0(%rsi), %r12 + cmova 0xb0(%rdi), %r12 + movq 0x190(%rsp), %r13 + cmovbq 0xb8(%rsi), %r13 + cmova 0xb8(%rdi), %r13 + movq 0x198(%rsp), %r14 + cmovbq 0xc0(%rsi), %r14 + cmova 0xc0(%rdi), %r14 + movq 0x1a0(%rsp), %r15 + cmovbq 0xc8(%rsi), %r15 + cmova 0xc8(%rdi), %r15 + movq 0x1a8(%rsp), %rbp + cmovbq 0xd0(%rsi), %rbp + cmova 0xd0(%rdi), %rbp + movq %r8, 0x168(%rsp) + movq %r9, 0x170(%rsp) + movq %r10, 0x178(%rsp) + movq %r11, 0x180(%rsp) + movq %r12, 0x188(%rsp) + movq %r13, 0x190(%rsp) + movq %r14, 0x198(%rsp) + movq %r15, 0x1a0(%rsp) + movq %rbp, 0x1a8(%rsp) + movq (%rsp), %r8 + cmovbq (%rsi), %r8 + cmova (%rdi), %r8 + movq 0x8(%rsp), %r9 + cmovbq 0x8(%rsi), %r9 + cmova 0x8(%rdi), %r9 + movq 0x10(%rsp), %r10 + cmovbq 0x10(%rsi), %r10 + cmova 0x10(%rdi), %r10 + movq 0x18(%rsp), %r11 + cmovbq 0x18(%rsi), %r11 + cmova 0x18(%rdi), %r11 + movq 0x20(%rsp), %r12 + cmovbq 0x20(%rsi), %r12 + cmova 0x20(%rdi), %r12 + movq 0x28(%rsp), %r13 + cmovbq 0x28(%rsi), %r13 + cmova 0x28(%rdi), %r13 + movq 0x30(%rsp), %r14 + cmovbq 0x30(%rsi), %r14 + cmova 0x30(%rdi), %r14 + movq 0x38(%rsp), %r15 + cmovbq 0x38(%rsi), %r15 + cmova 0x38(%rdi), %r15 + movq 0x40(%rsp), %rbp + cmovbq 0x40(%rsi), %rbp + cmova 0x40(%rdi), %rbp + movq 0x1f8(%rsp), %rdi + movq %r8, (%rdi) + movq %r9, 0x8(%rdi) + movq %r10, 0x10(%rdi) + movq %r11, 0x18(%rdi) + movq %r12, 0x20(%rdi) + movq %r13, 0x28(%rdi) + movq %r14, 0x30(%rdi) + movq %r15, 0x38(%rdi) + movq %rbp, 0x40(%rdi) + movq 0x120(%rsp), %rax + movq %rax, 0x48(%rdi) + movq 0x128(%rsp), %rax + movq %rax, 0x50(%rdi) + movq 0x130(%rsp), %rax + movq %rax, 0x58(%rdi) + movq 0x138(%rsp), %rax + movq %rax, 0x60(%rdi) + movq 0x140(%rsp), %rax + movq %rax, 0x68(%rdi) + movq 0x148(%rsp), %rax + movq %rax, 0x70(%rdi) + movq 0x150(%rsp), %rax + movq %rax, 0x78(%rdi) + movq 0x158(%rsp), %rax + movq %rax, 0x80(%rdi) + movq 0x160(%rsp), %rax + movq %rax, 0x88(%rdi) + movq 0x168(%rsp), %rax + movq %rax, 0x90(%rdi) + movq 0x170(%rsp), %rax + movq %rax, 0x98(%rdi) + movq 0x178(%rsp), %rax + movq %rax, 0xa0(%rdi) + movq 0x180(%rsp), %rax + movq %rax, 0xa8(%rdi) + movq 0x188(%rsp), %rax + movq %rax, 0xb0(%rdi) + movq 0x190(%rsp), %rax + movq %rax, 0xb8(%rdi) + movq 0x198(%rsp), %rax + movq %rax, 0xc0(%rdi) + movq 0x1a0(%rsp), %rax + movq %rax, 0xc8(%rdi) + movq 0x1a8(%rsp), %rax + movq %rax, 0xd0(%rdi) + addq $0x210, %rsp + popq %r15 + popq %r14 + popq %r13 + popq %r12 + popq %rbp + popq %rbx + ret + +p521_jscalarmul_alt_jdouble: + pushq %rbx + pushq %rbp + pushq %r12 + pushq %r13 + pushq %r14 + pushq %r15 + subq $0x208, %rsp + movq %rdi, 0x1f8(%rsp) + movq %rsi, 0x200(%rsp) + movq 0x200(%rsp), %rdi + leaq 0x90(%rdi), %rsi + leaq (%rsp), %rdi + callq p521_jscalarmul_alt_sqr_p521 + movq 0x200(%rsp), %rdi + leaq 0x48(%rdi), %rsi + leaq 0x48(%rsp), %rdi + callq p521_jscalarmul_alt_sqr_p521 + movq 0x200(%rsp), %rdi + stc + movq (%rdi), %rax + adcq (%rsp), %rax + movq 0x8(%rdi), %rbx + adcq 0x8(%rsp), %rbx + movq 0x10(%rdi), %r8 + adcq 0x10(%rsp), %r8 + movq 0x18(%rdi), %r9 + adcq 0x18(%rsp), %r9 + movq 0x20(%rdi), %r10 + adcq 0x20(%rsp), %r10 + movq 0x28(%rdi), %r11 + adcq 0x28(%rsp), %r11 + movq 0x30(%rdi), %r12 + adcq 0x30(%rsp), %r12 + movq 0x38(%rdi), %r13 + adcq 0x38(%rsp), %r13 + movq 0x40(%rdi), %r14 + adcq 0x40(%rsp), %r14 + movq $0x200, %rdx + andq %r14, %rdx + cmpq $0x200, %rdx + sbbq $0x0, %rax + movq %rax, 0x168(%rsp) + sbbq $0x0, %rbx + movq %rbx, 0x170(%rsp) + sbbq $0x0, %r8 + movq %r8, 0x178(%rsp) + sbbq $0x0, %r9 + movq %r9, 0x180(%rsp) + sbbq $0x0, %r10 + movq %r10, 0x188(%rsp) + sbbq $0x0, %r11 + movq %r11, 0x190(%rsp) + sbbq $0x0, %r12 + movq %r12, 0x198(%rsp) + sbbq $0x0, %r13 + movq %r13, 0x1a0(%rsp) + sbbq %rdx, %r14 + movq %r14, 0x1a8(%rsp) + movq 0x200(%rsp), %rdi + movq (%rdi), %rax + subq (%rsp), %rax + movq 0x8(%rdi), %rdx + sbbq 0x8(%rsp), %rdx + movq 0x10(%rdi), %r8 + sbbq 0x10(%rsp), %r8 + movq 0x18(%rdi), %r9 + sbbq 0x18(%rsp), %r9 + movq 0x20(%rdi), %r10 + sbbq 0x20(%rsp), %r10 + movq 0x28(%rdi), %r11 + sbbq 0x28(%rsp), %r11 + movq 0x30(%rdi), %r12 + sbbq 0x30(%rsp), %r12 + movq 0x38(%rdi), %r13 + sbbq 0x38(%rsp), %r13 + movq 0x40(%rdi), %r14 + sbbq 0x40(%rsp), %r14 + sbbq $0x0, %rax + movq %rax, 0x120(%rsp) + sbbq $0x0, %rdx + movq %rdx, 0x128(%rsp) + sbbq $0x0, %r8 + movq %r8, 0x130(%rsp) + sbbq $0x0, %r9 + movq %r9, 0x138(%rsp) + sbbq $0x0, %r10 + movq %r10, 0x140(%rsp) + sbbq $0x0, %r11 + movq %r11, 0x148(%rsp) + sbbq $0x0, %r12 + movq %r12, 0x150(%rsp) + sbbq $0x0, %r13 + movq %r13, 0x158(%rsp) + sbbq $0x0, %r14 + andq $0x1ff, %r14 + movq %r14, 0x160(%rsp) + leaq 0x120(%rsp), %rdx + leaq 0x168(%rsp), %rsi + leaq 0x90(%rsp), %rdi + callq p521_jscalarmul_alt_mul_p521 + movq 0x200(%rsp), %rdi + stc + movq 0x48(%rdi), %rax + adcq 0x90(%rdi), %rax + movq 0x50(%rdi), %rbx + adcq 0x98(%rdi), %rbx + movq 0x58(%rdi), %r8 + adcq 0xa0(%rdi), %r8 + movq 0x60(%rdi), %r9 + adcq 0xa8(%rdi), %r9 + movq 0x68(%rdi), %r10 + adcq 0xb0(%rdi), %r10 + movq 0x70(%rdi), %r11 + adcq 0xb8(%rdi), %r11 + movq 0x78(%rdi), %r12 + adcq 0xc0(%rdi), %r12 + movq 0x80(%rdi), %r13 + adcq 0xc8(%rdi), %r13 + movq 0x88(%rdi), %r14 + adcq 0xd0(%rdi), %r14 + movq $0x200, %rdx + andq %r14, %rdx + cmpq $0x200, %rdx + sbbq $0x0, %rax + movq %rax, 0x168(%rsp) + sbbq $0x0, %rbx + movq %rbx, 0x170(%rsp) + sbbq $0x0, %r8 + movq %r8, 0x178(%rsp) + sbbq $0x0, %r9 + movq %r9, 0x180(%rsp) + sbbq $0x0, %r10 + movq %r10, 0x188(%rsp) + sbbq $0x0, %r11 + movq %r11, 0x190(%rsp) + sbbq $0x0, %r12 + movq %r12, 0x198(%rsp) + sbbq $0x0, %r13 + movq %r13, 0x1a0(%rsp) + sbbq %rdx, %r14 + movq %r14, 0x1a8(%rsp) + leaq 0x90(%rsp), %rsi + leaq 0x1b0(%rsp), %rdi + callq p521_jscalarmul_alt_sqr_p521 + movq 0x200(%rsp), %rdi + leaq 0x48(%rsp), %rdx + leaq (%rdi), %rsi + leaq 0xd8(%rsp), %rdi + callq p521_jscalarmul_alt_mul_p521 + leaq 0x168(%rsp), %rsi + leaq 0x120(%rsp), %rdi + callq p521_jscalarmul_alt_sqr_p521 + movq $0x9, %rcx + movq 0x1b0(%rsp), %rax + notq %rax + mulq %rcx + movq %rax, %r8 + movq %rdx, %r9 + movq 0x1b8(%rsp), %rax + notq %rax + mulq %rcx + xorl %r10d, %r10d + addq %rax, %r9 + adcq %rdx, %r10 + movq 0x1c0(%rsp), %rax + notq %rax + mulq %rcx + xorl %r11d, %r11d + addq %rax, %r10 + adcq %rdx, %r11 + movq 0x1c8(%rsp), %rax + notq %rax + mulq %rcx + xorl %r12d, %r12d + addq %rax, %r11 + adcq %rdx, %r12 + movq 0x1d0(%rsp), %rax + notq %rax + mulq %rcx + xorl %r13d, %r13d + addq %rax, %r12 + adcq %rdx, %r13 + movq 0x1d8(%rsp), %rax + notq %rax + mulq %rcx + xorl %r14d, %r14d + addq %rax, %r13 + adcq %rdx, %r14 + movq 0x1e0(%rsp), %rax + notq %rax + mulq %rcx + xorl %r15d, %r15d + addq %rax, %r14 + adcq %rdx, %r15 + movq 0x1e8(%rsp), %rax + notq %rax + mulq %rcx + xorl %ebx, %ebx + addq %rax, %r15 + adcq %rdx, %rbx + movq 0x1f0(%rsp), %rax + xorq $0x1ff, %rax + imulq %rcx, %rax + addq %rax, %rbx + xorl %eax, %eax + movl $0xc, %ecx + movq 0xd8(%rsp), %rax + mulq %rcx + addq %rax, %r8 + adcq %rdx, %r9 + sbbq %rbp, %rbp + movq 0xe0(%rsp), %rax + mulq %rcx + subq %rbp, %rdx + addq %rax, %r9 + adcq %rdx, %r10 + sbbq %rbp, %rbp + movq 0xe8(%rsp), %rax + mulq %rcx + subq %rbp, %rdx + addq %rax, %r10 + adcq %rdx, %r11 + sbbq %rbp, %rbp + movq 0xf0(%rsp), %rax + mulq %rcx + subq %rbp, %rdx + addq %rax, %r11 + adcq %rdx, %r12 + sbbq %rbp, %rbp + movq 0xf8(%rsp), %rax + mulq %rcx + subq %rbp, %rdx + addq %rax, %r12 + adcq %rdx, %r13 + sbbq %rbp, %rbp + movq 0x100(%rsp), %rax + mulq %rcx + subq %rbp, %rdx + addq %rax, %r13 + adcq %rdx, %r14 + sbbq %rbp, %rbp + movq 0x108(%rsp), %rax + mulq %rcx + subq %rbp, %rdx + addq %rax, %r14 + adcq %rdx, %r15 + sbbq %rbp, %rbp + movq 0x110(%rsp), %rax + mulq %rcx + subq %rbp, %rdx + addq %rax, %r15 + adcq %rdx, %rbx + movq 0x118(%rsp), %rax + imulq %rcx, %rax + addq %rax, %rbx + movq %r9, %rax + andq %r10, %rax + andq %r11, %rax + andq %r12, %rax + andq %r13, %rax + andq %r14, %rax + andq %r15, %rax + movq %rbx, %rdx + shrq $0x9, %rdx + orq $0xfffffffffffffe00, %rbx + leaq 0x1(%rdx), %rcx + addq %r8, %rcx + movl $0x0, %ecx + adcq %rcx, %rax + movq %rbx, %rax + adcq %rcx, %rax + adcq %rdx, %r8 + movq %r8, 0x1b0(%rsp) + adcq %rcx, %r9 + movq %r9, 0x1b8(%rsp) + adcq %rcx, %r10 + movq %r10, 0x1c0(%rsp) + adcq %rcx, %r11 + movq %r11, 0x1c8(%rsp) + adcq %rcx, %r12 + movq %r12, 0x1d0(%rsp) + adcq %rcx, %r13 + movq %r13, 0x1d8(%rsp) + adcq %rcx, %r14 + movq %r14, 0x1e0(%rsp) + adcq %rcx, %r15 + movq %r15, 0x1e8(%rsp) + adcq %rcx, %rbx + andq $0x1ff, %rbx + movq %rbx, 0x1f0(%rsp) + movq 0x120(%rsp), %rax + subq (%rsp), %rax + movq 0x128(%rsp), %rdx + sbbq 0x8(%rsp), %rdx + movq 0x130(%rsp), %r8 + sbbq 0x10(%rsp), %r8 + movq 0x138(%rsp), %r9 + sbbq 0x18(%rsp), %r9 + movq 0x140(%rsp), %r10 + sbbq 0x20(%rsp), %r10 + movq 0x148(%rsp), %r11 + sbbq 0x28(%rsp), %r11 + movq 0x150(%rsp), %r12 + sbbq 0x30(%rsp), %r12 + movq 0x158(%rsp), %r13 + sbbq 0x38(%rsp), %r13 + movq 0x160(%rsp), %r14 + sbbq 0x40(%rsp), %r14 + sbbq $0x0, %rax + movq %rax, 0x168(%rsp) + sbbq $0x0, %rdx + movq %rdx, 0x170(%rsp) + sbbq $0x0, %r8 + movq %r8, 0x178(%rsp) + sbbq $0x0, %r9 + movq %r9, 0x180(%rsp) + sbbq $0x0, %r10 + movq %r10, 0x188(%rsp) + sbbq $0x0, %r11 + movq %r11, 0x190(%rsp) + sbbq $0x0, %r12 + movq %r12, 0x198(%rsp) + sbbq $0x0, %r13 + movq %r13, 0x1a0(%rsp) + sbbq $0x0, %r14 + andq $0x1ff, %r14 + movq %r14, 0x1a8(%rsp) + leaq 0x48(%rsp), %rsi + leaq 0x120(%rsp), %rdi + callq p521_jscalarmul_alt_sqr_p521 + movq 0x1f8(%rsp), %rdi + movq 0x168(%rsp), %rax + subq 0x48(%rsp), %rax + movq 0x170(%rsp), %rdx + sbbq 0x50(%rsp), %rdx + movq 0x178(%rsp), %r8 + sbbq 0x58(%rsp), %r8 + movq 0x180(%rsp), %r9 + sbbq 0x60(%rsp), %r9 + movq 0x188(%rsp), %r10 + sbbq 0x68(%rsp), %r10 + movq 0x190(%rsp), %r11 + sbbq 0x70(%rsp), %r11 + movq 0x198(%rsp), %r12 + sbbq 0x78(%rsp), %r12 + movq 0x1a0(%rsp), %r13 + sbbq 0x80(%rsp), %r13 + movq 0x1a8(%rsp), %r14 + sbbq 0x88(%rsp), %r14 + sbbq $0x0, %rax + movq %rax, 0x90(%rdi) + sbbq $0x0, %rdx + movq %rdx, 0x98(%rdi) + sbbq $0x0, %r8 + movq %r8, 0xa0(%rdi) + sbbq $0x0, %r9 + movq %r9, 0xa8(%rdi) + sbbq $0x0, %r10 + movq %r10, 0xb0(%rdi) + sbbq $0x0, %r11 + movq %r11, 0xb8(%rdi) + sbbq $0x0, %r12 + movq %r12, 0xc0(%rdi) + sbbq $0x0, %r13 + movq %r13, 0xc8(%rdi) + sbbq $0x0, %r14 + andq $0x1ff, %r14 + movq %r14, 0xd0(%rdi) + leaq 0x90(%rsp), %rdx + leaq 0x1b0(%rsp), %rsi + leaq 0x168(%rsp), %rdi + callq p521_jscalarmul_alt_mul_p521 + movq 0x1f8(%rsp), %rdi + movq 0x118(%rsp), %rbx + movq 0x110(%rsp), %r15 + shldq $0x2, %r15, %rbx + movq 0x108(%rsp), %r14 + shldq $0x2, %r14, %r15 + movq 0x100(%rsp), %r13 + shldq $0x2, %r13, %r14 + movq 0xf8(%rsp), %r12 + shldq $0x2, %r12, %r13 + movq 0xf0(%rsp), %r11 + shldq $0x2, %r11, %r12 + movq 0xe8(%rsp), %r10 + shldq $0x2, %r10, %r11 + movq 0xe0(%rsp), %r9 + shldq $0x2, %r9, %r10 + movq 0xd8(%rsp), %r8 + shldq $0x2, %r8, %r9 + shlq $0x2, %r8 + movq 0x1f0(%rsp), %rcx + xorq $0x1ff, %rcx + movq 0x1b0(%rsp), %rax + notq %rax + addq %rax, %r8 + movq 0x1b8(%rsp), %rax + notq %rax + adcq %rax, %r9 + movq 0x1c0(%rsp), %rax + notq %rax + adcq %rax, %r10 + movq 0x1c8(%rsp), %rax + notq %rax + adcq %rax, %r11 + movq 0x1d0(%rsp), %rax + notq %rax + adcq %rax, %r12 + movq 0x1d8(%rsp), %rax + notq %rax + adcq %rax, %r13 + movq 0x1e0(%rsp), %rax + notq %rax + adcq %rax, %r14 + movq 0x1e8(%rsp), %rax + notq %rax + adcq %rax, %r15 + adcq %rcx, %rbx + movq %r9, %rax + andq %r10, %rax + andq %r11, %rax + andq %r12, %rax + andq %r13, %rax + andq %r14, %rax + andq %r15, %rax + movq %rbx, %rdx + shrq $0x9, %rdx + orq $0xfffffffffffffe00, %rbx + leaq 0x1(%rdx), %rcx + addq %r8, %rcx + movl $0x0, %ecx + adcq %rcx, %rax + movq %rbx, %rax + adcq %rcx, %rax + adcq %rdx, %r8 + movq %r8, (%rdi) + adcq %rcx, %r9 + movq %r9, 0x8(%rdi) + adcq %rcx, %r10 + movq %r10, 0x10(%rdi) + adcq %rcx, %r11 + movq %r11, 0x18(%rdi) + adcq %rcx, %r12 + movq %r12, 0x20(%rdi) + adcq %rcx, %r13 + movq %r13, 0x28(%rdi) + adcq %rcx, %r14 + movq %r14, 0x30(%rdi) + adcq %rcx, %r15 + movq %r15, 0x38(%rdi) + adcq %rcx, %rbx + andq $0x1ff, %rbx + movq %rbx, 0x40(%rdi) + movq 0x1f8(%rsp), %rdi + movq 0x160(%rsp), %rbx + xorq $0x1ff, %rbx + movq 0x158(%rsp), %r15 + notq %r15 + shldq $0x3, %r15, %rbx + movq 0x150(%rsp), %r14 + notq %r14 + shldq $0x3, %r14, %r15 + movq 0x148(%rsp), %r13 + notq %r13 + shldq $0x3, %r13, %r14 + movq 0x140(%rsp), %r12 + notq %r12 + shldq $0x3, %r12, %r13 + movq 0x138(%rsp), %r11 + notq %r11 + shldq $0x3, %r11, %r12 + movq 0x130(%rsp), %r10 + notq %r10 + shldq $0x3, %r10, %r11 + movq 0x128(%rsp), %r9 + notq %r9 + shldq $0x3, %r9, %r10 + movq 0x120(%rsp), %r8 + notq %r8 + shldq $0x3, %r8, %r9 + shlq $0x3, %r8 + movl $0x3, %ecx + movq 0x168(%rsp), %rax + mulq %rcx + addq %rax, %r8 + adcq %rdx, %r9 + sbbq %rbp, %rbp + movq 0x170(%rsp), %rax + mulq %rcx + subq %rbp, %rdx + addq %rax, %r9 + adcq %rdx, %r10 + sbbq %rbp, %rbp + movq 0x178(%rsp), %rax + mulq %rcx + subq %rbp, %rdx + addq %rax, %r10 + adcq %rdx, %r11 + sbbq %rbp, %rbp + movq 0x180(%rsp), %rax + mulq %rcx + subq %rbp, %rdx + addq %rax, %r11 + adcq %rdx, %r12 + sbbq %rbp, %rbp + movq 0x188(%rsp), %rax + mulq %rcx + subq %rbp, %rdx + addq %rax, %r12 + adcq %rdx, %r13 + sbbq %rbp, %rbp + movq 0x190(%rsp), %rax + mulq %rcx + subq %rbp, %rdx + addq %rax, %r13 + adcq %rdx, %r14 + sbbq %rbp, %rbp + movq 0x198(%rsp), %rax + mulq %rcx + subq %rbp, %rdx + addq %rax, %r14 + adcq %rdx, %r15 + sbbq %rbp, %rbp + movq 0x1a0(%rsp), %rax + mulq %rcx + subq %rbp, %rdx + addq %rax, %r15 + adcq %rdx, %rbx + movq 0x1a8(%rsp), %rax + imulq %rcx, %rax + addq %rax, %rbx + movq %r9, %rax + andq %r10, %rax + andq %r11, %rax + andq %r12, %rax + andq %r13, %rax + andq %r14, %rax + andq %r15, %rax + movq %rbx, %rdx + shrq $0x9, %rdx + orq $0xfffffffffffffe00, %rbx + leaq 0x1(%rdx), %rcx + addq %r8, %rcx + movl $0x0, %ecx + adcq %rcx, %rax + movq %rbx, %rax + adcq %rcx, %rax + adcq %rdx, %r8 + movq %r8, 0x48(%rdi) + adcq %rcx, %r9 + movq %r9, 0x50(%rdi) + adcq %rcx, %r10 + movq %r10, 0x58(%rdi) + adcq %rcx, %r11 + movq %r11, 0x60(%rdi) + adcq %rcx, %r12 + movq %r12, 0x68(%rdi) + adcq %rcx, %r13 + movq %r13, 0x70(%rdi) + adcq %rcx, %r14 + movq %r14, 0x78(%rdi) + adcq %rcx, %r15 + movq %r15, 0x80(%rdi) + adcq %rcx, %rbx + andq $0x1ff, %rbx + movq %rbx, 0x88(%rdi) + addq $0x208, %rsp + popq %r15 + popq %r14 + popq %r13 + popq %r12 + popq %rbp + popq %rbx + ret + +p521_jscalarmul_alt_mul_p521: + subq $0x48, %rsp + movq %rdx, %rcx + movq (%rsi), %rax + mulq (%rcx) + movq %rax, (%rsp) + movq %rdx, %r9 + xorq %r10, %r10 + xorq %r11, %r11 + movq (%rsi), %rax + mulq 0x8(%rcx) + addq %rax, %r9 + adcq %rdx, %r10 + movq 0x8(%rsi), %rax + mulq (%rcx) + addq %rax, %r9 + adcq %rdx, %r10 + adcq %r11, %r11 + movq %r9, 0x8(%rsp) + xorq %r12, %r12 + movq (%rsi), %rax + mulq 0x10(%rcx) + addq %rax, %r10 + adcq %rdx, %r11 + adcq %r12, %r12 + movq 0x8(%rsi), %rax + mulq 0x8(%rcx) + addq %rax, %r10 + adcq %rdx, %r11 + adcq $0x0, %r12 + movq 0x10(%rsi), %rax + mulq (%rcx) + addq %rax, %r10 + adcq %rdx, %r11 + adcq $0x0, %r12 + movq %r10, 0x10(%rsp) + xorq %r13, %r13 + movq (%rsi), %rax + mulq 0x18(%rcx) + addq %rax, %r11 + adcq %rdx, %r12 + adcq %r13, %r13 + movq 0x8(%rsi), %rax + mulq 0x10(%rcx) + addq %rax, %r11 + adcq %rdx, %r12 + adcq $0x0, %r13 + movq 0x10(%rsi), %rax + mulq 0x8(%rcx) + addq %rax, %r11 + adcq %rdx, %r12 + adcq $0x0, %r13 + movq 0x18(%rsi), %rax + mulq (%rcx) + addq %rax, %r11 + adcq %rdx, %r12 + adcq $0x0, %r13 + movq %r11, 0x18(%rsp) + xorq %r14, %r14 + movq (%rsi), %rax + mulq 0x20(%rcx) + addq %rax, %r12 + adcq %rdx, %r13 + adcq %r14, %r14 + movq 0x8(%rsi), %rax + mulq 0x18(%rcx) + addq %rax, %r12 + adcq %rdx, %r13 + adcq $0x0, %r14 + movq 0x10(%rsi), %rax + mulq 0x10(%rcx) + addq %rax, %r12 + adcq %rdx, %r13 + adcq $0x0, %r14 + movq 0x18(%rsi), %rax + mulq 0x8(%rcx) + addq %rax, %r12 + adcq %rdx, %r13 + adcq $0x0, %r14 + movq 0x20(%rsi), %rax + mulq (%rcx) + addq %rax, %r12 + adcq %rdx, %r13 + adcq $0x0, %r14 + movq %r12, 0x20(%rsp) + xorq %r15, %r15 + movq (%rsi), %rax + mulq 0x28(%rcx) + addq %rax, %r13 + adcq %rdx, %r14 + adcq %r15, %r15 + movq 0x8(%rsi), %rax + mulq 0x20(%rcx) + addq %rax, %r13 + adcq %rdx, %r14 + adcq $0x0, %r15 + movq 0x10(%rsi), %rax + mulq 0x18(%rcx) + addq %rax, %r13 + adcq %rdx, %r14 + adcq $0x0, %r15 + movq 0x18(%rsi), %rax + mulq 0x10(%rcx) + addq %rax, %r13 + adcq %rdx, %r14 + adcq $0x0, %r15 + movq 0x20(%rsi), %rax + mulq 0x8(%rcx) + addq %rax, %r13 + adcq %rdx, %r14 + adcq $0x0, %r15 + movq 0x28(%rsi), %rax + mulq (%rcx) + addq %rax, %r13 + adcq %rdx, %r14 + adcq $0x0, %r15 + movq %r13, 0x28(%rsp) + xorq %r8, %r8 + movq (%rsi), %rax + mulq 0x30(%rcx) + addq %rax, %r14 + adcq %rdx, %r15 + adcq %r8, %r8 + movq 0x8(%rsi), %rax + mulq 0x28(%rcx) + addq %rax, %r14 + adcq %rdx, %r15 + adcq $0x0, %r8 + movq 0x10(%rsi), %rax + mulq 0x20(%rcx) + addq %rax, %r14 + adcq %rdx, %r15 + adcq $0x0, %r8 + movq 0x18(%rsi), %rax + mulq 0x18(%rcx) + addq %rax, %r14 + adcq %rdx, %r15 + adcq $0x0, %r8 + movq 0x20(%rsi), %rax + mulq 0x10(%rcx) + addq %rax, %r14 + adcq %rdx, %r15 + adcq $0x0, %r8 + movq 0x28(%rsi), %rax + mulq 0x8(%rcx) + addq %rax, %r14 + adcq %rdx, %r15 + adcq $0x0, %r8 + movq 0x30(%rsi), %rax + mulq (%rcx) + addq %rax, %r14 + adcq %rdx, %r15 + adcq $0x0, %r8 + movq %r14, 0x30(%rsp) + xorq %r9, %r9 + movq (%rsi), %rax + mulq 0x38(%rcx) + addq %rax, %r15 + adcq %rdx, %r8 + adcq %r9, %r9 + movq 0x8(%rsi), %rax + mulq 0x30(%rcx) + addq %rax, %r15 + adcq %rdx, %r8 + adcq $0x0, %r9 + movq 0x10(%rsi), %rax + mulq 0x28(%rcx) + addq %rax, %r15 + adcq %rdx, %r8 + adcq $0x0, %r9 + movq 0x18(%rsi), %rax + mulq 0x20(%rcx) + addq %rax, %r15 + adcq %rdx, %r8 + adcq $0x0, %r9 + movq 0x20(%rsi), %rax + mulq 0x18(%rcx) + addq %rax, %r15 + adcq %rdx, %r8 + adcq $0x0, %r9 + movq 0x28(%rsi), %rax + mulq 0x10(%rcx) + addq %rax, %r15 + adcq %rdx, %r8 + adcq $0x0, %r9 + movq 0x30(%rsi), %rax + mulq 0x8(%rcx) + addq %rax, %r15 + adcq %rdx, %r8 + adcq $0x0, %r9 + movq 0x38(%rsi), %rax + mulq (%rcx) + addq %rax, %r15 + adcq %rdx, %r8 + adcq $0x0, %r9 + movq %r15, 0x38(%rsp) + xorq %r10, %r10 + movq (%rsi), %rax + mulq 0x40(%rcx) + addq %rax, %r8 + adcq %rdx, %r9 + adcq %r10, %r10 + movq 0x8(%rsi), %rax + mulq 0x38(%rcx) + addq %rax, %r8 + adcq %rdx, %r9 + adcq $0x0, %r10 + movq 0x10(%rsi), %rax + mulq 0x30(%rcx) + addq %rax, %r8 + adcq %rdx, %r9 + adcq $0x0, %r10 + movq 0x18(%rsi), %rax + mulq 0x28(%rcx) + addq %rax, %r8 + adcq %rdx, %r9 + adcq $0x0, %r10 + movq 0x20(%rsi), %rax + mulq 0x20(%rcx) + addq %rax, %r8 + adcq %rdx, %r9 + adcq $0x0, %r10 + movq 0x28(%rsi), %rax + mulq 0x18(%rcx) + addq %rax, %r8 + adcq %rdx, %r9 + adcq $0x0, %r10 + movq 0x30(%rsi), %rax + mulq 0x10(%rcx) + addq %rax, %r8 + adcq %rdx, %r9 + adcq $0x0, %r10 + movq 0x38(%rsi), %rax + mulq 0x8(%rcx) + addq %rax, %r8 + adcq %rdx, %r9 + adcq $0x0, %r10 + movq 0x40(%rsi), %rax + mulq (%rcx) + addq %rax, %r8 + adcq %rdx, %r9 + adcq $0x0, %r10 + movq %r8, 0x40(%rsp) + xorq %r11, %r11 + movq 0x8(%rsi), %rax + mulq 0x40(%rcx) + addq %rax, %r9 + adcq %rdx, %r10 + adcq %r11, %r11 + movq 0x10(%rsi), %rax + mulq 0x38(%rcx) + addq %rax, %r9 + adcq %rdx, %r10 + adcq $0x0, %r11 + movq 0x18(%rsi), %rax + mulq 0x30(%rcx) + addq %rax, %r9 + adcq %rdx, %r10 + adcq $0x0, %r11 + movq 0x20(%rsi), %rax + mulq 0x28(%rcx) + addq %rax, %r9 + adcq %rdx, %r10 + adcq $0x0, %r11 + movq 0x28(%rsi), %rax + mulq 0x20(%rcx) + addq %rax, %r9 + adcq %rdx, %r10 + adcq $0x0, %r11 + movq 0x30(%rsi), %rax + mulq 0x18(%rcx) + addq %rax, %r9 + adcq %rdx, %r10 + adcq $0x0, %r11 + movq 0x38(%rsi), %rax + mulq 0x10(%rcx) + addq %rax, %r9 + adcq %rdx, %r10 + adcq $0x0, %r11 + movq 0x40(%rsi), %rax + mulq 0x8(%rcx) + addq %rax, %r9 + adcq %rdx, %r10 + adcq $0x0, %r11 + xorq %r12, %r12 + movq 0x10(%rsi), %rax + mulq 0x40(%rcx) + addq %rax, %r10 + adcq %rdx, %r11 + adcq %r12, %r12 + movq 0x18(%rsi), %rax + mulq 0x38(%rcx) + addq %rax, %r10 + adcq %rdx, %r11 + adcq $0x0, %r12 + movq 0x20(%rsi), %rax + mulq 0x30(%rcx) + addq %rax, %r10 + adcq %rdx, %r11 + adcq $0x0, %r12 + movq 0x28(%rsi), %rax + mulq 0x28(%rcx) + addq %rax, %r10 + adcq %rdx, %r11 + adcq $0x0, %r12 + movq 0x30(%rsi), %rax + mulq 0x20(%rcx) + addq %rax, %r10 + adcq %rdx, %r11 + adcq $0x0, %r12 + movq 0x38(%rsi), %rax + mulq 0x18(%rcx) + addq %rax, %r10 + adcq %rdx, %r11 + adcq $0x0, %r12 + movq 0x40(%rsi), %rax + mulq 0x10(%rcx) + addq %rax, %r10 + adcq %rdx, %r11 + adcq $0x0, %r12 + xorq %r13, %r13 + movq 0x18(%rsi), %rax + mulq 0x40(%rcx) + addq %rax, %r11 + adcq %rdx, %r12 + adcq %r13, %r13 + movq 0x20(%rsi), %rax + mulq 0x38(%rcx) + addq %rax, %r11 + adcq %rdx, %r12 + adcq $0x0, %r13 + movq 0x28(%rsi), %rax + mulq 0x30(%rcx) + addq %rax, %r11 + adcq %rdx, %r12 + adcq $0x0, %r13 + movq 0x30(%rsi), %rax + mulq 0x28(%rcx) + addq %rax, %r11 + adcq %rdx, %r12 + adcq $0x0, %r13 + movq 0x38(%rsi), %rax + mulq 0x20(%rcx) + addq %rax, %r11 + adcq %rdx, %r12 + adcq $0x0, %r13 + movq 0x40(%rsi), %rax + mulq 0x18(%rcx) + addq %rax, %r11 + adcq %rdx, %r12 + adcq $0x0, %r13 + xorq %r14, %r14 + movq 0x20(%rsi), %rax + mulq 0x40(%rcx) + addq %rax, %r12 + adcq %rdx, %r13 + adcq %r14, %r14 + movq 0x28(%rsi), %rax + mulq 0x38(%rcx) + addq %rax, %r12 + adcq %rdx, %r13 + adcq $0x0, %r14 + movq 0x30(%rsi), %rax + mulq 0x30(%rcx) + addq %rax, %r12 + adcq %rdx, %r13 + adcq $0x0, %r14 + movq 0x38(%rsi), %rax + mulq 0x28(%rcx) + addq %rax, %r12 + adcq %rdx, %r13 + adcq $0x0, %r14 + movq 0x40(%rsi), %rax + mulq 0x20(%rcx) + addq %rax, %r12 + adcq %rdx, %r13 + adcq $0x0, %r14 + xorq %r15, %r15 + movq 0x28(%rsi), %rax + mulq 0x40(%rcx) + addq %rax, %r13 + adcq %rdx, %r14 + adcq %r15, %r15 + movq 0x30(%rsi), %rax + mulq 0x38(%rcx) + addq %rax, %r13 + adcq %rdx, %r14 + adcq $0x0, %r15 + movq 0x38(%rsi), %rax + mulq 0x30(%rcx) + addq %rax, %r13 + adcq %rdx, %r14 + adcq $0x0, %r15 + movq 0x40(%rsi), %rax + mulq 0x28(%rcx) + addq %rax, %r13 + adcq %rdx, %r14 + adcq $0x0, %r15 + xorq %r8, %r8 + movq 0x30(%rsi), %rax + mulq 0x40(%rcx) + addq %rax, %r14 + adcq %rdx, %r15 + adcq %r8, %r8 + movq 0x38(%rsi), %rax + mulq 0x38(%rcx) + addq %rax, %r14 + adcq %rdx, %r15 + adcq $0x0, %r8 + movq 0x40(%rsi), %rax + mulq 0x30(%rcx) + addq %rax, %r14 + adcq %rdx, %r15 + adcq $0x0, %r8 + movq 0x38(%rsi), %rax + mulq 0x40(%rcx) + addq %rax, %r15 + adcq %rdx, %r8 + movq 0x40(%rsi), %rax + mulq 0x38(%rcx) + addq %rax, %r15 + adcq %rdx, %r8 + movq 0x40(%rsi), %rax + imulq 0x40(%rcx), %rax + addq %r8, %rax + movq 0x40(%rsp), %r8 + movq %r8, %rdx + andq $0x1ff, %rdx + shrdq $0x9, %r9, %r8 + shrdq $0x9, %r10, %r9 + shrdq $0x9, %r11, %r10 + shrdq $0x9, %r12, %r11 + shrdq $0x9, %r13, %r12 + shrdq $0x9, %r14, %r13 + shrdq $0x9, %r15, %r14 + shrdq $0x9, %rax, %r15 + shrq $0x9, %rax + addq %rax, %rdx + stc + adcq (%rsp), %r8 + adcq 0x8(%rsp), %r9 + adcq 0x10(%rsp), %r10 + adcq 0x18(%rsp), %r11 + adcq 0x20(%rsp), %r12 + adcq 0x28(%rsp), %r13 + adcq 0x30(%rsp), %r14 + adcq 0x38(%rsp), %r15 + adcq $0xfffffffffffffe00, %rdx + cmc + sbbq $0x0, %r8 + movq %r8, (%rdi) + sbbq $0x0, %r9 + movq %r9, 0x8(%rdi) + sbbq $0x0, %r10 + movq %r10, 0x10(%rdi) + sbbq $0x0, %r11 + movq %r11, 0x18(%rdi) + sbbq $0x0, %r12 + movq %r12, 0x20(%rdi) + sbbq $0x0, %r13 + movq %r13, 0x28(%rdi) + sbbq $0x0, %r14 + movq %r14, 0x30(%rdi) + sbbq $0x0, %r15 + movq %r15, 0x38(%rdi) + sbbq $0x0, %rdx + andq $0x1ff, %rdx + movq %rdx, 0x40(%rdi) + addq $0x48, %rsp + ret + +p521_jscalarmul_alt_sqr_p521: + subq $0x48, %rsp + movq (%rsi), %rax + mulq %rax + movq %rax, (%rsp) + movq %rdx, %r9 + xorq %r10, %r10 + xorq %r11, %r11 + movq (%rsi), %rax + mulq 0x8(%rsi) + addq %rax, %rax + adcq %rdx, %rdx + adcq $0x0, %r11 + addq %rax, %r9 + adcq %rdx, %r10 + adcq $0x0, %r11 + movq %r9, 0x8(%rsp) + xorq %r12, %r12 + movq 0x8(%rsi), %rax + mulq %rax + addq %rax, %r10 + adcq %rdx, %r11 + adcq $0x0, %r12 + movq (%rsi), %rax + mulq 0x10(%rsi) + addq %rax, %rax + adcq %rdx, %rdx + adcq $0x0, %r12 + addq %rax, %r10 + adcq %rdx, %r11 + adcq $0x0, %r12 + movq %r10, 0x10(%rsp) + movq (%rsi), %rax + mulq 0x18(%rsi) + xorq %r13, %r13 + movq %rax, %rbx + movq %rdx, %rcx + movq 0x8(%rsi), %rax + mulq 0x10(%rsi) + addq %rax, %rbx + adcq %rdx, %rcx + adcq $0x0, %r13 + addq %rbx, %rbx + adcq %rcx, %rcx + adcq %r13, %r13 + addq %rbx, %r11 + adcq %rcx, %r12 + adcq $0x0, %r13 + movq %r11, 0x18(%rsp) + movq (%rsi), %rax + mulq 0x20(%rsi) + xorq %r14, %r14 + movq %rax, %rbx + movq %rdx, %rcx + movq 0x8(%rsi), %rax + mulq 0x18(%rsi) + addq %rax, %rbx + adcq %rdx, %rcx + adcq $0x0, %r14 + addq %rbx, %rbx + adcq %rcx, %rcx + adcq %r14, %r14 + addq %rbx, %r12 + adcq %rcx, %r13 + adcq $0x0, %r14 + movq 0x10(%rsi), %rax + mulq %rax + addq %rax, %r12 + adcq %rdx, %r13 + adcq $0x0, %r14 + movq %r12, 0x20(%rsp) + movq (%rsi), %rax + mulq 0x28(%rsi) + xorq %r15, %r15 + movq %rax, %rbx + movq %rdx, %rcx + movq 0x8(%rsi), %rax + mulq 0x20(%rsi) + addq %rax, %rbx + adcq %rdx, %rcx + adcq $0x0, %r15 + movq 0x10(%rsi), %rax + mulq 0x18(%rsi) + addq %rax, %rbx + adcq %rdx, %rcx + adcq $0x0, %r15 + addq %rbx, %rbx + adcq %rcx, %rcx + adcq %r15, %r15 + addq %rbx, %r13 + adcq %rcx, %r14 + adcq $0x0, %r15 + movq %r13, 0x28(%rsp) + movq (%rsi), %rax + mulq 0x30(%rsi) + xorq %r8, %r8 + movq %rax, %rbx + movq %rdx, %rcx + movq 0x8(%rsi), %rax + mulq 0x28(%rsi) + addq %rax, %rbx + adcq %rdx, %rcx + adcq $0x0, %r8 + movq 0x10(%rsi), %rax + mulq 0x20(%rsi) + addq %rax, %rbx + adcq %rdx, %rcx + adcq $0x0, %r8 + addq %rbx, %rbx + adcq %rcx, %rcx + adcq %r8, %r8 + addq %rbx, %r14 + adcq %rcx, %r15 + adcq $0x0, %r8 + movq 0x18(%rsi), %rax + mulq %rax + addq %rax, %r14 + adcq %rdx, %r15 + adcq $0x0, %r8 + movq %r14, 0x30(%rsp) + movq (%rsi), %rax + mulq 0x38(%rsi) + xorq %r9, %r9 + movq %rax, %rbx + movq %rdx, %rcx + movq 0x8(%rsi), %rax + mulq 0x30(%rsi) + addq %rax, %rbx + adcq %rdx, %rcx + adcq $0x0, %r9 + movq 0x10(%rsi), %rax + mulq 0x28(%rsi) + addq %rax, %rbx + adcq %rdx, %rcx + adcq $0x0, %r9 + movq 0x18(%rsi), %rax + mulq 0x20(%rsi) + addq %rax, %rbx + adcq %rdx, %rcx + adcq $0x0, %r9 + addq %rbx, %rbx + adcq %rcx, %rcx + adcq %r9, %r9 + addq %rbx, %r15 + adcq %rcx, %r8 + adcq $0x0, %r9 + movq %r15, 0x38(%rsp) + movq (%rsi), %rax + mulq 0x40(%rsi) + xorq %r10, %r10 + movq %rax, %rbx + movq %rdx, %rcx + movq 0x8(%rsi), %rax + mulq 0x38(%rsi) + addq %rax, %rbx + adcq %rdx, %rcx + adcq $0x0, %r10 + movq 0x10(%rsi), %rax + mulq 0x30(%rsi) + addq %rax, %rbx + adcq %rdx, %rcx + adcq $0x0, %r10 + movq 0x18(%rsi), %rax + mulq 0x28(%rsi) + addq %rax, %rbx + adcq %rdx, %rcx + adcq $0x0, %r10 + addq %rbx, %rbx + adcq %rcx, %rcx + adcq %r10, %r10 + addq %rbx, %r8 + adcq %rcx, %r9 + adcq $0x0, %r10 + movq 0x20(%rsi), %rax + mulq %rax + addq %rax, %r8 + adcq %rdx, %r9 + adcq $0x0, %r10 + movq %r8, 0x40(%rsp) + movq 0x8(%rsi), %rax + mulq 0x40(%rsi) + xorq %r11, %r11 + movq %rax, %rbx + movq %rdx, %rcx + movq 0x10(%rsi), %rax + mulq 0x38(%rsi) + addq %rax, %rbx + adcq %rdx, %rcx + adcq $0x0, %r11 + movq 0x18(%rsi), %rax + mulq 0x30(%rsi) + addq %rax, %rbx + adcq %rdx, %rcx + adcq $0x0, %r11 + movq 0x20(%rsi), %rax + mulq 0x28(%rsi) + addq %rax, %rbx + adcq %rdx, %rcx + adcq $0x0, %r11 + addq %rbx, %rbx + adcq %rcx, %rcx + adcq %r11, %r11 + addq %rbx, %r9 + adcq %rcx, %r10 + adcq $0x0, %r11 + movq 0x10(%rsi), %rax + mulq 0x40(%rsi) + xorq %r12, %r12 + movq %rax, %rbx + movq %rdx, %rcx + movq 0x18(%rsi), %rax + mulq 0x38(%rsi) + addq %rax, %rbx + adcq %rdx, %rcx + adcq $0x0, %r12 + movq 0x20(%rsi), %rax + mulq 0x30(%rsi) + addq %rax, %rbx + adcq %rdx, %rcx + adcq $0x0, %r12 + addq %rbx, %rbx + adcq %rcx, %rcx + adcq %r12, %r12 + addq %rbx, %r10 + adcq %rcx, %r11 + adcq $0x0, %r12 + movq 0x28(%rsi), %rax + mulq %rax + addq %rax, %r10 + adcq %rdx, %r11 + adcq $0x0, %r12 + movq 0x18(%rsi), %rax + mulq 0x40(%rsi) + xorq %r13, %r13 + movq %rax, %rbx + movq %rdx, %rcx + movq 0x20(%rsi), %rax + mulq 0x38(%rsi) + addq %rax, %rbx + adcq %rdx, %rcx + adcq $0x0, %r13 + movq 0x28(%rsi), %rax + mulq 0x30(%rsi) + addq %rax, %rbx + adcq %rdx, %rcx + adcq $0x0, %r13 + addq %rbx, %rbx + adcq %rcx, %rcx + adcq %r13, %r13 + addq %rbx, %r11 + adcq %rcx, %r12 + adcq $0x0, %r13 + movq 0x20(%rsi), %rax + mulq 0x40(%rsi) + xorq %r14, %r14 + movq %rax, %rbx + movq %rdx, %rcx + movq 0x28(%rsi), %rax + mulq 0x38(%rsi) + addq %rax, %rbx + adcq %rdx, %rcx + adcq $0x0, %r14 + addq %rbx, %rbx + adcq %rcx, %rcx + adcq %r14, %r14 + addq %rbx, %r12 + adcq %rcx, %r13 + adcq $0x0, %r14 + movq 0x30(%rsi), %rax + mulq %rax + addq %rax, %r12 + adcq %rdx, %r13 + adcq $0x0, %r14 + movq 0x28(%rsi), %rax + mulq 0x40(%rsi) + xorq %r15, %r15 + movq %rax, %rbx + movq %rdx, %rcx + movq 0x30(%rsi), %rax + mulq 0x38(%rsi) + addq %rax, %rbx + adcq %rdx, %rcx + adcq $0x0, %r15 + addq %rbx, %rbx + adcq %rcx, %rcx + adcq %r15, %r15 + addq %rbx, %r13 + adcq %rcx, %r14 + adcq $0x0, %r15 + xorq %r8, %r8 + movq 0x38(%rsi), %rax + mulq %rax + addq %rax, %r14 + adcq %rdx, %r15 + adcq $0x0, %r8 + movq 0x30(%rsi), %rax + mulq 0x40(%rsi) + addq %rax, %rax + adcq %rdx, %rdx + adcq $0x0, %r8 + addq %rax, %r14 + adcq %rdx, %r15 + adcq $0x0, %r8 + movq 0x38(%rsi), %rax + mulq 0x40(%rsi) + addq %rax, %rax + adcq %rdx, %rdx + addq %rax, %r15 + adcq %rdx, %r8 + movq 0x40(%rsi), %rax + imulq %rax, %rax + addq %r8, %rax + movq 0x40(%rsp), %r8 + movq %r8, %rdx + andq $0x1ff, %rdx + shrdq $0x9, %r9, %r8 + shrdq $0x9, %r10, %r9 + shrdq $0x9, %r11, %r10 + shrdq $0x9, %r12, %r11 + shrdq $0x9, %r13, %r12 + shrdq $0x9, %r14, %r13 + shrdq $0x9, %r15, %r14 + shrdq $0x9, %rax, %r15 + shrq $0x9, %rax + addq %rax, %rdx + stc + adcq (%rsp), %r8 + adcq 0x8(%rsp), %r9 + adcq 0x10(%rsp), %r10 + adcq 0x18(%rsp), %r11 + adcq 0x20(%rsp), %r12 + adcq 0x28(%rsp), %r13 + adcq 0x30(%rsp), %r14 + adcq 0x38(%rsp), %r15 + adcq $0xfffffffffffffe00, %rdx + cmc + sbbq $0x0, %r8 + movq %r8, (%rdi) + sbbq $0x0, %r9 + movq %r9, 0x8(%rdi) + sbbq $0x0, %r10 + movq %r10, 0x10(%rdi) + sbbq $0x0, %r11 + movq %r11, 0x18(%rdi) + sbbq $0x0, %r12 + movq %r12, 0x20(%rdi) + sbbq $0x0, %r13 + movq %r13, 0x28(%rdi) + sbbq $0x0, %r14 + movq %r14, 0x30(%rdi) + sbbq $0x0, %r15 + movq %r15, 0x38(%rdi) + sbbq $0x0, %rdx + andq $0x1ff, %rdx + movq %rdx, 0x40(%rdi) + addq $0x48, %rsp + ret + +#if defined(__linux__) && defined(__ELF__) +.section .note.GNU-stack, "", %progbits +#endif diff --git a/util/fipstools/delocate/delocate.peg b/util/fipstools/delocate/delocate.peg index b33b00b250..a1a2b997a4 100644 --- a/util/fipstools/delocate/delocate.peg +++ b/util/fipstools/delocate/delocate.peg @@ -91,7 +91,7 @@ ARMConstantTweak <- ((([us] "xt" [xwhb]) / "lsl" / "lsr" / "ror" / "asr") (WS '# "mul vl" # multiply offset by the hardware's vector length ARMRegister <- "sp" / ([xwdqshb] [0-9] [0-9]? !(ARMRegisterBoundary)) / "xzr" / "wzr" / "NZCV" / ARMVectorRegister / SVE2PredicateRegister / ('{' WS? ARMVectorRegister WS? ([,\-] WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')? ) -ARMVectorRegister <- [vz] [0-9] [0-9]? ('.' [0-9]* [bsdhq] ('[' [0-9] [0-9]? ']')? )? +ARMVectorRegister <- [vz] [0-9] [0-9]? ('.' [0-9]* [bsdhqBSDHQ] ('[' [0-9] [0-9]? ']')? )? SVE2PredicateRegister <- "p" [0-9] [0-9]? "/" [mMzZ] ARMRegisterBoundary <- [a-zA-Z0-9_] # Compilers only output a very limited number of expression forms. Rather than diff --git a/util/fipstools/delocate/delocate.peg.go b/util/fipstools/delocate/delocate.peg.go index fba8d272f5..fe2024612a 100644 --- a/util/fipstools/delocate/delocate.peg.go +++ b/util/fipstools/delocate/delocate.peg.go @@ -5892,7 +5892,7 @@ func (p *Asm) Init(options ...func(*Asm) error) error { position, tokenIndex = position690, tokenIndex690 return false }, - /* 45 ARMVectorRegister <- <(('v' / 'z') [0-9] [0-9]? ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q') ('[' [0-9] [0-9]? ']')?)?)> */ + /* 45 ARMVectorRegister <- <(('v' / 'z') [0-9] [0-9]? ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q' / 'B' / 'S' / 'D' / 'H' / 'Q') ('[' [0-9] [0-9]? ']')?)?)> */ func() bool { position750, tokenIndex750 := position, tokenIndex { @@ -5975,41 +5975,76 @@ func (p *Asm) Init(options ...func(*Asm) error) error { l764: position, tokenIndex = position760, tokenIndex760 if buffer[position] != rune('q') { + goto l765 + } + position++ + goto l760 + l765: + position, tokenIndex = position760, tokenIndex760 + if buffer[position] != rune('B') { + goto l766 + } + position++ + goto l760 + l766: + position, tokenIndex = position760, tokenIndex760 + if buffer[position] != rune('S') { + goto l767 + } + position++ + goto l760 + l767: + position, tokenIndex = position760, tokenIndex760 + if buffer[position] != rune('D') { + goto l768 + } + position++ + goto l760 + l768: + position, tokenIndex = position760, tokenIndex760 + if buffer[position] != rune('H') { + goto l769 + } + position++ + goto l760 + l769: + position, tokenIndex = position760, tokenIndex760 + if buffer[position] != rune('Q') { goto l756 } position++ } l760: { - position765, tokenIndex765 := position, tokenIndex + position770, tokenIndex770 := position, tokenIndex if buffer[position] != rune('[') { - goto l765 + goto l770 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l765 + goto l770 } position++ { - position767, tokenIndex767 := position, tokenIndex + position772, tokenIndex772 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l767 + goto l772 } position++ - goto l768 - l767: - position, tokenIndex = position767, tokenIndex767 + goto l773 + l772: + position, tokenIndex = position772, tokenIndex772 } - l768: + l773: if buffer[position] != rune(']') { - goto l765 + goto l770 } position++ - goto l766 - l765: - position, tokenIndex = position765, tokenIndex765 + goto l771 + l770: + position, tokenIndex = position770, tokenIndex770 } - l766: + l771: goto l757 l756: position, tokenIndex = position756, tokenIndex756 @@ -6024,1787 +6059,1787 @@ func (p *Asm) Init(options ...func(*Asm) error) error { }, /* 46 SVE2PredicateRegister <- <(('p' / 'P') [0-9] [0-9]? '/' ('m' / 'M' / 'z' / 'Z'))> */ func() bool { - position769, tokenIndex769 := position, tokenIndex + position774, tokenIndex774 := position, tokenIndex { - position770 := position + position775 := position { - position771, tokenIndex771 := position, tokenIndex + position776, tokenIndex776 := position, tokenIndex if buffer[position] != rune('p') { - goto l772 + goto l777 } position++ - goto l771 - l772: - position, tokenIndex = position771, tokenIndex771 + goto l776 + l777: + position, tokenIndex = position776, tokenIndex776 if buffer[position] != rune('P') { - goto l769 + goto l774 } position++ } - l771: + l776: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l769 + goto l774 } position++ { - position773, tokenIndex773 := position, tokenIndex + position778, tokenIndex778 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l773 + goto l778 } position++ - goto l774 - l773: - position, tokenIndex = position773, tokenIndex773 + goto l779 + l778: + position, tokenIndex = position778, tokenIndex778 } - l774: + l779: if buffer[position] != rune('/') { - goto l769 + goto l774 } position++ { - position775, tokenIndex775 := position, tokenIndex + position780, tokenIndex780 := position, tokenIndex if buffer[position] != rune('m') { - goto l776 + goto l781 } position++ - goto l775 - l776: - position, tokenIndex = position775, tokenIndex775 + goto l780 + l781: + position, tokenIndex = position780, tokenIndex780 if buffer[position] != rune('M') { - goto l777 + goto l782 } position++ - goto l775 - l777: - position, tokenIndex = position775, tokenIndex775 + goto l780 + l782: + position, tokenIndex = position780, tokenIndex780 if buffer[position] != rune('z') { - goto l778 + goto l783 } position++ - goto l775 - l778: - position, tokenIndex = position775, tokenIndex775 + goto l780 + l783: + position, tokenIndex = position780, tokenIndex780 if buffer[position] != rune('Z') { - goto l769 + goto l774 } position++ } - l775: - add(ruleSVE2PredicateRegister, position770) + l780: + add(ruleSVE2PredicateRegister, position775) } return true - l769: - position, tokenIndex = position769, tokenIndex769 + l774: + position, tokenIndex = position774, tokenIndex774 return false }, /* 47 ARMRegisterBoundary <- <([a-z] / [A-Z] / [0-9] / '_')> */ func() bool { - position779, tokenIndex779 := position, tokenIndex + position784, tokenIndex784 := position, tokenIndex { - position780 := position + position785 := position { - position781, tokenIndex781 := position, tokenIndex + position786, tokenIndex786 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l782 + goto l787 } position++ - goto l781 - l782: - position, tokenIndex = position781, tokenIndex781 + goto l786 + l787: + position, tokenIndex = position786, tokenIndex786 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l783 + goto l788 } position++ - goto l781 - l783: - position, tokenIndex = position781, tokenIndex781 + goto l786 + l788: + position, tokenIndex = position786, tokenIndex786 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l784 + goto l789 } position++ - goto l781 - l784: - position, tokenIndex = position781, tokenIndex781 + goto l786 + l789: + position, tokenIndex = position786, tokenIndex786 if buffer[position] != rune('_') { - goto l779 + goto l784 } position++ } - l781: - add(ruleARMRegisterBoundary, position780) + l786: + add(ruleARMRegisterBoundary, position785) } return true - l779: - position, tokenIndex = position779, tokenIndex779 + l784: + position, tokenIndex = position784, tokenIndex784 return false }, /* 48 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */ func() bool { - position785, tokenIndex785 := position, tokenIndex + position790, tokenIndex790 := position, tokenIndex { - position786 := position + position791 := position { - position787, tokenIndex787 := position, tokenIndex + position792, tokenIndex792 := position, tokenIndex if !_rules[ruleSymbolRef]() { - goto l788 + goto l793 } if !_rules[ruleBaseIndexScale]() { - goto l788 + goto l793 } - goto l787 - l788: - position, tokenIndex = position787, tokenIndex787 + goto l792 + l793: + position, tokenIndex = position792, tokenIndex792 if !_rules[ruleSymbolRef]() { - goto l789 + goto l794 } - goto l787 - l789: - position, tokenIndex = position787, tokenIndex787 + goto l792 + l794: + position, tokenIndex = position792, tokenIndex792 if !_rules[ruleLow12BitsSymbolRef]() { - goto l790 + goto l795 } - goto l787 - l790: - position, tokenIndex = position787, tokenIndex787 - l792: + goto l792 + l795: + position, tokenIndex = position792, tokenIndex792 + l797: { - position793, tokenIndex793 := position, tokenIndex + position798, tokenIndex798 := position, tokenIndex if !_rules[ruleOffset]() { - goto l793 + goto l798 } - goto l792 - l793: - position, tokenIndex = position793, tokenIndex793 + goto l797 + l798: + position, tokenIndex = position798, tokenIndex798 } if !_rules[ruleBaseIndexScale]() { - goto l791 + goto l796 } - goto l787 - l791: - position, tokenIndex = position787, tokenIndex787 + goto l792 + l796: + position, tokenIndex = position792, tokenIndex792 if !_rules[ruleSegmentRegister]() { - goto l794 + goto l799 } if !_rules[ruleOffset]() { - goto l794 + goto l799 } if !_rules[ruleBaseIndexScale]() { - goto l794 + goto l799 } - goto l787 - l794: - position, tokenIndex = position787, tokenIndex787 + goto l792 + l799: + position, tokenIndex = position792, tokenIndex792 if !_rules[ruleSegmentRegister]() { - goto l795 + goto l800 } if !_rules[ruleBaseIndexScale]() { - goto l795 + goto l800 } - goto l787 - l795: - position, tokenIndex = position787, tokenIndex787 + goto l792 + l800: + position, tokenIndex = position792, tokenIndex792 if !_rules[ruleSegmentRegister]() { - goto l796 + goto l801 } if !_rules[ruleOffset]() { - goto l796 + goto l801 } - goto l787 - l796: - position, tokenIndex = position787, tokenIndex787 + goto l792 + l801: + position, tokenIndex = position792, tokenIndex792 if !_rules[ruleARMBaseIndexScale]() { - goto l797 + goto l802 } - goto l787 - l797: - position, tokenIndex = position787, tokenIndex787 + goto l792 + l802: + position, tokenIndex = position792, tokenIndex792 if !_rules[ruleBaseIndexScale]() { - goto l785 + goto l790 } } - l787: - add(ruleMemoryRef, position786) + l792: + add(ruleMemoryRef, position791) } return true - l785: - position, tokenIndex = position785, tokenIndex785 + l790: + position, tokenIndex = position790, tokenIndex790 return false }, /* 49 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */ func() bool { - position798, tokenIndex798 := position, tokenIndex + position803, tokenIndex803 := position, tokenIndex { - position799 := position + position804 := position { - position800, tokenIndex800 := position, tokenIndex - l802: + position805, tokenIndex805 := position, tokenIndex + l807: { - position803, tokenIndex803 := position, tokenIndex + position808, tokenIndex808 := position, tokenIndex if !_rules[ruleOffset]() { - goto l803 + goto l808 } - goto l802 - l803: - position, tokenIndex = position803, tokenIndex803 + goto l807 + l808: + position, tokenIndex = position808, tokenIndex808 } if buffer[position] != rune('+') { - goto l800 + goto l805 } position++ - goto l801 - l800: - position, tokenIndex = position800, tokenIndex800 + goto l806 + l805: + position, tokenIndex = position805, tokenIndex805 } - l801: + l806: { - position804, tokenIndex804 := position, tokenIndex + position809, tokenIndex809 := position, tokenIndex if !_rules[ruleLocalSymbol]() { - goto l805 + goto l810 } - goto l804 - l805: - position, tokenIndex = position804, tokenIndex804 + goto l809 + l810: + position, tokenIndex = position809, tokenIndex809 if !_rules[ruleSymbolName]() { - goto l798 + goto l803 } } - l804: - l806: + l809: + l811: { - position807, tokenIndex807 := position, tokenIndex + position812, tokenIndex812 := position, tokenIndex if !_rules[ruleOffset]() { - goto l807 + goto l812 } - goto l806 - l807: - position, tokenIndex = position807, tokenIndex807 + goto l811 + l812: + position, tokenIndex = position812, tokenIndex812 } { - position808, tokenIndex808 := position, tokenIndex + position813, tokenIndex813 := position, tokenIndex if buffer[position] != rune('@') { - goto l808 + goto l813 } position++ if !_rules[ruleSection]() { - goto l808 + goto l813 } - l810: + l815: { - position811, tokenIndex811 := position, tokenIndex + position816, tokenIndex816 := position, tokenIndex if !_rules[ruleOffset]() { - goto l811 + goto l816 } - goto l810 - l811: - position, tokenIndex = position811, tokenIndex811 + goto l815 + l816: + position, tokenIndex = position816, tokenIndex816 } - goto l809 - l808: - position, tokenIndex = position808, tokenIndex808 + goto l814 + l813: + position, tokenIndex = position813, tokenIndex813 } - l809: - add(ruleSymbolRef, position799) + l814: + add(ruleSymbolRef, position804) } return true - l798: - position, tokenIndex = position798, tokenIndex798 + l803: + position, tokenIndex = position803, tokenIndex803 return false }, /* 50 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */ func() bool { - position812, tokenIndex812 := position, tokenIndex + position817, tokenIndex817 := position, tokenIndex { - position813 := position + position818 := position if buffer[position] != rune(':') { - goto l812 + goto l817 } position++ { - position814, tokenIndex814 := position, tokenIndex + position819, tokenIndex819 := position, tokenIndex if buffer[position] != rune('l') { - goto l815 + goto l820 } position++ - goto l814 - l815: - position, tokenIndex = position814, tokenIndex814 + goto l819 + l820: + position, tokenIndex = position819, tokenIndex819 if buffer[position] != rune('L') { - goto l812 + goto l817 } position++ } - l814: + l819: { - position816, tokenIndex816 := position, tokenIndex + position821, tokenIndex821 := position, tokenIndex if buffer[position] != rune('o') { - goto l817 + goto l822 } position++ - goto l816 - l817: - position, tokenIndex = position816, tokenIndex816 + goto l821 + l822: + position, tokenIndex = position821, tokenIndex821 if buffer[position] != rune('O') { - goto l812 + goto l817 } position++ } - l816: + l821: if buffer[position] != rune('1') { - goto l812 + goto l817 } position++ if buffer[position] != rune('2') { - goto l812 + goto l817 } position++ if buffer[position] != rune(':') { - goto l812 + goto l817 } position++ { - position818, tokenIndex818 := position, tokenIndex + position823, tokenIndex823 := position, tokenIndex if !_rules[ruleLocalSymbol]() { - goto l819 + goto l824 } - goto l818 - l819: - position, tokenIndex = position818, tokenIndex818 + goto l823 + l824: + position, tokenIndex = position823, tokenIndex823 if !_rules[ruleSymbolName]() { - goto l812 + goto l817 } } - l818: + l823: { - position820, tokenIndex820 := position, tokenIndex + position825, tokenIndex825 := position, tokenIndex if !_rules[ruleOffset]() { - goto l820 + goto l825 } - goto l821 - l820: - position, tokenIndex = position820, tokenIndex820 + goto l826 + l825: + position, tokenIndex = position825, tokenIndex825 } - l821: - add(ruleLow12BitsSymbolRef, position813) + l826: + add(ruleLow12BitsSymbolRef, position818) } return true - l812: - position, tokenIndex = position812, tokenIndex812 + l817: + position, tokenIndex = position817, tokenIndex817 return false }, /* 51 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#'? Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ('#'? ARMGOTLow12) / ('#'? Low12BitsSymbolRef) / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */ func() bool { - position822, tokenIndex822 := position, tokenIndex + position827, tokenIndex827 := position, tokenIndex { - position823 := position + position828 := position if buffer[position] != rune('[') { - goto l822 + goto l827 } position++ if !_rules[ruleARMRegister]() { - goto l822 + goto l827 } { - position824, tokenIndex824 := position, tokenIndex + position829, tokenIndex829 := position, tokenIndex if buffer[position] != rune(',') { - goto l824 + goto l829 } position++ { - position826, tokenIndex826 := position, tokenIndex + position831, tokenIndex831 := position, tokenIndex if !_rules[ruleWS]() { - goto l826 + goto l831 } - goto l827 - l826: - position, tokenIndex = position826, tokenIndex826 + goto l832 + l831: + position, tokenIndex = position831, tokenIndex831 } - l827: + l832: { - position828, tokenIndex828 := position, tokenIndex + position833, tokenIndex833 := position, tokenIndex { - position830, tokenIndex830 := position, tokenIndex + position835, tokenIndex835 := position, tokenIndex if buffer[position] != rune('#') { - goto l830 + goto l835 } position++ - goto l831 - l830: - position, tokenIndex = position830, tokenIndex830 + goto l836 + l835: + position, tokenIndex = position835, tokenIndex835 } - l831: + l836: if !_rules[ruleOffset]() { - goto l829 + goto l834 } { - position832, tokenIndex832 := position, tokenIndex + position837, tokenIndex837 := position, tokenIndex { - position834, tokenIndex834 := position, tokenIndex + position839, tokenIndex839 := position, tokenIndex if buffer[position] != rune('*') { - goto l835 + goto l840 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l835 + goto l840 } position++ - l836: + l841: { - position837, tokenIndex837 := position, tokenIndex + position842, tokenIndex842 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l837 + goto l842 } position++ - goto l836 - l837: - position, tokenIndex = position837, tokenIndex837 + goto l841 + l842: + position, tokenIndex = position842, tokenIndex842 } - goto l834 - l835: - position, tokenIndex = position834, tokenIndex834 + goto l839 + l840: + position, tokenIndex = position839, tokenIndex839 if buffer[position] != rune('*') { - goto l838 + goto l843 } position++ if buffer[position] != rune('(') { - goto l838 + goto l843 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l838 + goto l843 } position++ - l839: + l844: { - position840, tokenIndex840 := position, tokenIndex + position845, tokenIndex845 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l840 + goto l845 } position++ - goto l839 - l840: - position, tokenIndex = position840, tokenIndex840 + goto l844 + l845: + position, tokenIndex = position845, tokenIndex845 } if !_rules[ruleOperator]() { - goto l838 + goto l843 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l838 + goto l843 } position++ - l841: + l846: { - position842, tokenIndex842 := position, tokenIndex + position847, tokenIndex847 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l842 + goto l847 } position++ - goto l841 - l842: - position, tokenIndex = position842, tokenIndex842 + goto l846 + l847: + position, tokenIndex = position847, tokenIndex847 } if buffer[position] != rune(')') { - goto l838 + goto l843 } position++ - goto l834 - l838: - position, tokenIndex = position834, tokenIndex834 + goto l839 l843: + position, tokenIndex = position839, tokenIndex839 + l848: { - position844, tokenIndex844 := position, tokenIndex + position849, tokenIndex849 := position, tokenIndex if buffer[position] != rune('+') { - goto l844 + goto l849 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l844 + goto l849 } position++ - l845: + l850: { - position846, tokenIndex846 := position, tokenIndex + position851, tokenIndex851 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l846 + goto l851 } position++ - goto l845 - l846: - position, tokenIndex = position846, tokenIndex846 + goto l850 + l851: + position, tokenIndex = position851, tokenIndex851 } - goto l843 - l844: - position, tokenIndex = position844, tokenIndex844 + goto l848 + l849: + position, tokenIndex = position849, tokenIndex849 } } - l834: - goto l833 + l839: + goto l838 - position, tokenIndex = position832, tokenIndex832 + position, tokenIndex = position837, tokenIndex837 } - l833: - goto l828 - l829: - position, tokenIndex = position828, tokenIndex828 + l838: + goto l833 + l834: + position, tokenIndex = position833, tokenIndex833 { - position848, tokenIndex848 := position, tokenIndex + position853, tokenIndex853 := position, tokenIndex if buffer[position] != rune('#') { - goto l848 + goto l853 } position++ - goto l849 - l848: - position, tokenIndex = position848, tokenIndex848 + goto l854 + l853: + position, tokenIndex = position853, tokenIndex853 } - l849: + l854: if !_rules[ruleARMGOTLow12]() { - goto l847 + goto l852 } - goto l828 - l847: - position, tokenIndex = position828, tokenIndex828 + goto l833 + l852: + position, tokenIndex = position833, tokenIndex833 { - position851, tokenIndex851 := position, tokenIndex + position856, tokenIndex856 := position, tokenIndex if buffer[position] != rune('#') { - goto l851 + goto l856 } position++ - goto l852 - l851: - position, tokenIndex = position851, tokenIndex851 + goto l857 + l856: + position, tokenIndex = position856, tokenIndex856 } - l852: + l857: if !_rules[ruleLow12BitsSymbolRef]() { - goto l850 + goto l855 } - goto l828 - l850: - position, tokenIndex = position828, tokenIndex828 + goto l833 + l855: + position, tokenIndex = position833, tokenIndex833 if !_rules[ruleARMRegister]() { - goto l824 + goto l829 } } - l828: + l833: { - position853, tokenIndex853 := position, tokenIndex + position858, tokenIndex858 := position, tokenIndex if buffer[position] != rune(',') { - goto l853 + goto l858 } position++ { - position855, tokenIndex855 := position, tokenIndex + position860, tokenIndex860 := position, tokenIndex if !_rules[ruleWS]() { - goto l855 + goto l860 } - goto l856 - l855: - position, tokenIndex = position855, tokenIndex855 + goto l861 + l860: + position, tokenIndex = position860, tokenIndex860 } - l856: + l861: if !_rules[ruleARMConstantTweak]() { - goto l853 + goto l858 } - goto l854 - l853: - position, tokenIndex = position853, tokenIndex853 + goto l859 + l858: + position, tokenIndex = position858, tokenIndex858 } - l854: - goto l825 - l824: - position, tokenIndex = position824, tokenIndex824 + l859: + goto l830 + l829: + position, tokenIndex = position829, tokenIndex829 } - l825: + l830: if buffer[position] != rune(']') { - goto l822 + goto l827 } position++ { - position857, tokenIndex857 := position, tokenIndex + position862, tokenIndex862 := position, tokenIndex if !_rules[ruleARMPostincrement]() { - goto l857 + goto l862 } - goto l858 - l857: - position, tokenIndex = position857, tokenIndex857 + goto l863 + l862: + position, tokenIndex = position862, tokenIndex862 } - l858: - add(ruleARMBaseIndexScale, position823) + l863: + add(ruleARMBaseIndexScale, position828) } return true - l822: - position, tokenIndex = position822, tokenIndex822 + l827: + position, tokenIndex = position827, tokenIndex827 return false }, /* 52 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */ func() bool { - position859, tokenIndex859 := position, tokenIndex + position864, tokenIndex864 := position, tokenIndex { - position860 := position + position865 := position if buffer[position] != rune(':') { - goto l859 + goto l864 } position++ { - position861, tokenIndex861 := position, tokenIndex + position866, tokenIndex866 := position, tokenIndex if buffer[position] != rune('g') { - goto l862 + goto l867 } position++ - goto l861 - l862: - position, tokenIndex = position861, tokenIndex861 + goto l866 + l867: + position, tokenIndex = position866, tokenIndex866 if buffer[position] != rune('G') { - goto l859 + goto l864 } position++ } - l861: + l866: { - position863, tokenIndex863 := position, tokenIndex + position868, tokenIndex868 := position, tokenIndex if buffer[position] != rune('o') { - goto l864 + goto l869 } position++ - goto l863 - l864: - position, tokenIndex = position863, tokenIndex863 + goto l868 + l869: + position, tokenIndex = position868, tokenIndex868 if buffer[position] != rune('O') { - goto l859 + goto l864 } position++ } - l863: + l868: { - position865, tokenIndex865 := position, tokenIndex + position870, tokenIndex870 := position, tokenIndex if buffer[position] != rune('t') { - goto l866 + goto l871 } position++ - goto l865 - l866: - position, tokenIndex = position865, tokenIndex865 + goto l870 + l871: + position, tokenIndex = position870, tokenIndex870 if buffer[position] != rune('T') { - goto l859 + goto l864 } position++ } - l865: + l870: if buffer[position] != rune('_') { - goto l859 + goto l864 } position++ { - position867, tokenIndex867 := position, tokenIndex + position872, tokenIndex872 := position, tokenIndex if buffer[position] != rune('l') { - goto l868 + goto l873 } position++ - goto l867 - l868: - position, tokenIndex = position867, tokenIndex867 + goto l872 + l873: + position, tokenIndex = position872, tokenIndex872 if buffer[position] != rune('L') { - goto l859 + goto l864 } position++ } - l867: + l872: { - position869, tokenIndex869 := position, tokenIndex + position874, tokenIndex874 := position, tokenIndex if buffer[position] != rune('o') { - goto l870 + goto l875 } position++ - goto l869 - l870: - position, tokenIndex = position869, tokenIndex869 + goto l874 + l875: + position, tokenIndex = position874, tokenIndex874 if buffer[position] != rune('O') { - goto l859 + goto l864 } position++ } - l869: + l874: if buffer[position] != rune('1') { - goto l859 + goto l864 } position++ if buffer[position] != rune('2') { - goto l859 + goto l864 } position++ if buffer[position] != rune(':') { - goto l859 + goto l864 } position++ if !_rules[ruleSymbolName]() { - goto l859 + goto l864 } - add(ruleARMGOTLow12, position860) + add(ruleARMGOTLow12, position865) } return true - l859: - position, tokenIndex = position859, tokenIndex859 + l864: + position, tokenIndex = position864, tokenIndex864 return false }, /* 53 ARMPostincrement <- <'!'> */ func() bool { - position871, tokenIndex871 := position, tokenIndex + position876, tokenIndex876 := position, tokenIndex { - position872 := position + position877 := position if buffer[position] != rune('!') { - goto l871 + goto l876 } position++ - add(ruleARMPostincrement, position872) + add(ruleARMPostincrement, position877) } return true - l871: - position, tokenIndex = position871, tokenIndex871 + l876: + position, tokenIndex = position876, tokenIndex876 return false }, /* 54 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */ func() bool { - position873, tokenIndex873 := position, tokenIndex + position878, tokenIndex878 := position, tokenIndex { - position874 := position + position879 := position if buffer[position] != rune('(') { - goto l873 + goto l878 } position++ { - position875, tokenIndex875 := position, tokenIndex + position880, tokenIndex880 := position, tokenIndex if !_rules[ruleRegisterOrConstant]() { - goto l875 + goto l880 } - goto l876 - l875: - position, tokenIndex = position875, tokenIndex875 + goto l881 + l880: + position, tokenIndex = position880, tokenIndex880 } - l876: + l881: { - position877, tokenIndex877 := position, tokenIndex + position882, tokenIndex882 := position, tokenIndex if !_rules[ruleWS]() { - goto l877 + goto l882 } - goto l878 - l877: - position, tokenIndex = position877, tokenIndex877 + goto l883 + l882: + position, tokenIndex = position882, tokenIndex882 } - l878: + l883: { - position879, tokenIndex879 := position, tokenIndex + position884, tokenIndex884 := position, tokenIndex if buffer[position] != rune(',') { - goto l879 + goto l884 } position++ { - position881, tokenIndex881 := position, tokenIndex + position886, tokenIndex886 := position, tokenIndex if !_rules[ruleWS]() { - goto l881 + goto l886 } - goto l882 - l881: - position, tokenIndex = position881, tokenIndex881 + goto l887 + l886: + position, tokenIndex = position886, tokenIndex886 } - l882: + l887: if !_rules[ruleRegisterOrConstant]() { - goto l879 + goto l884 } { - position883, tokenIndex883 := position, tokenIndex + position888, tokenIndex888 := position, tokenIndex if !_rules[ruleWS]() { - goto l883 + goto l888 } - goto l884 - l883: - position, tokenIndex = position883, tokenIndex883 + goto l889 + l888: + position, tokenIndex = position888, tokenIndex888 } - l884: + l889: { - position885, tokenIndex885 := position, tokenIndex + position890, tokenIndex890 := position, tokenIndex if buffer[position] != rune(',') { - goto l885 + goto l890 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l885 + goto l890 } position++ - l887: + l892: { - position888, tokenIndex888 := position, tokenIndex + position893, tokenIndex893 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l888 + goto l893 } position++ - goto l887 - l888: - position, tokenIndex = position888, tokenIndex888 + goto l892 + l893: + position, tokenIndex = position893, tokenIndex893 } - goto l886 - l885: - position, tokenIndex = position885, tokenIndex885 + goto l891 + l890: + position, tokenIndex = position890, tokenIndex890 } - l886: - goto l880 - l879: - position, tokenIndex = position879, tokenIndex879 + l891: + goto l885 + l884: + position, tokenIndex = position884, tokenIndex884 } - l880: + l885: if buffer[position] != rune(')') { - goto l873 + goto l878 } position++ - add(ruleBaseIndexScale, position874) + add(ruleBaseIndexScale, position879) } return true - l873: - position, tokenIndex = position873, tokenIndex873 + l878: + position, tokenIndex = position878, tokenIndex878 return false }, /* 55 Operator <- <('+' / '-')> */ func() bool { - position889, tokenIndex889 := position, tokenIndex + position894, tokenIndex894 := position, tokenIndex { - position890 := position + position895 := position { - position891, tokenIndex891 := position, tokenIndex + position896, tokenIndex896 := position, tokenIndex if buffer[position] != rune('+') { - goto l892 + goto l897 } position++ - goto l891 - l892: - position, tokenIndex = position891, tokenIndex891 + goto l896 + l897: + position, tokenIndex = position896, tokenIndex896 if buffer[position] != rune('-') { - goto l889 + goto l894 } position++ } - l891: - add(ruleOperator, position890) + l896: + add(ruleOperator, position895) } return true - l889: - position, tokenIndex = position889, tokenIndex889 + l894: + position, tokenIndex = position894, tokenIndex894 return false }, /* 56 OffsetOperator <- <('+' / '-' / '*')> */ func() bool { - position893, tokenIndex893 := position, tokenIndex + position898, tokenIndex898 := position, tokenIndex { - position894 := position + position899 := position { - position895, tokenIndex895 := position, tokenIndex + position900, tokenIndex900 := position, tokenIndex if buffer[position] != rune('+') { - goto l896 + goto l901 } position++ - goto l895 - l896: - position, tokenIndex = position895, tokenIndex895 + goto l900 + l901: + position, tokenIndex = position900, tokenIndex900 if buffer[position] != rune('-') { - goto l897 + goto l902 } position++ - goto l895 - l897: - position, tokenIndex = position895, tokenIndex895 + goto l900 + l902: + position, tokenIndex = position900, tokenIndex900 if buffer[position] != rune('*') { - goto l893 + goto l898 } position++ } - l895: - add(ruleOffsetOperator, position894) + l900: + add(ruleOffsetOperator, position899) } return true - l893: - position, tokenIndex = position893, tokenIndex893 + l898: + position, tokenIndex = position898, tokenIndex898 return false }, /* 57 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / ((([0-9]+ WS OffsetOperator [0-9]+) / ([0-9]+ (OffsetOperator '(' [0-9]+ OffsetOperator [0-9]+ ')')?) / ([0-9]+ (OffsetOperator [0-9]+ OffsetOperator [0-9]+)?) / ([0-9]+ (OffsetOperator [0-9]+)?) / ('(' [0-9]+ WS? OffsetOperator WS? [0-9]+ ')' OffsetOperator [0-9]+ OffsetOperator [0-9]+) / ('(' [0-9]+ WS? OffsetOperator WS? [0-9]+ ')' OffsetOperator [0-9]+ !'x') / ('(' [0-9]+ WS? OffsetOperator WS? [0-9]+ ')') / ('(' [0-9]+ WS? OffsetOperator WS? [0-9]+ WS? OffsetOperator WS? [0-9]+ ')')) !([a-z] / [A-Z]))))> */ func() bool { - position898, tokenIndex898 := position, tokenIndex + position903, tokenIndex903 := position, tokenIndex { - position899 := position + position904 := position { - position900, tokenIndex900 := position, tokenIndex + position905, tokenIndex905 := position, tokenIndex if buffer[position] != rune('+') { - goto l900 + goto l905 } position++ - goto l901 - l900: - position, tokenIndex = position900, tokenIndex900 + goto l906 + l905: + position, tokenIndex = position905, tokenIndex905 } - l901: + l906: { - position902, tokenIndex902 := position, tokenIndex + position907, tokenIndex907 := position, tokenIndex if buffer[position] != rune('-') { - goto l902 + goto l907 } position++ - goto l903 - l902: - position, tokenIndex = position902, tokenIndex902 + goto l908 + l907: + position, tokenIndex = position907, tokenIndex907 } - l903: + l908: { - position904, tokenIndex904 := position, tokenIndex + position909, tokenIndex909 := position, tokenIndex if buffer[position] != rune('0') { - goto l905 + goto l910 } position++ { - position906, tokenIndex906 := position, tokenIndex + position911, tokenIndex911 := position, tokenIndex if buffer[position] != rune('b') { - goto l907 + goto l912 } position++ - goto l906 - l907: - position, tokenIndex = position906, tokenIndex906 + goto l911 + l912: + position, tokenIndex = position911, tokenIndex911 if buffer[position] != rune('B') { - goto l905 + goto l910 } position++ } - l906: + l911: { - position910, tokenIndex910 := position, tokenIndex + position915, tokenIndex915 := position, tokenIndex if buffer[position] != rune('0') { - goto l911 + goto l916 } position++ - goto l910 - l911: - position, tokenIndex = position910, tokenIndex910 + goto l915 + l916: + position, tokenIndex = position915, tokenIndex915 if buffer[position] != rune('1') { - goto l905 + goto l910 } position++ } - l910: - l908: + l915: + l913: { - position909, tokenIndex909 := position, tokenIndex + position914, tokenIndex914 := position, tokenIndex { - position912, tokenIndex912 := position, tokenIndex + position917, tokenIndex917 := position, tokenIndex if buffer[position] != rune('0') { - goto l913 + goto l918 } position++ - goto l912 - l913: - position, tokenIndex = position912, tokenIndex912 + goto l917 + l918: + position, tokenIndex = position917, tokenIndex917 if buffer[position] != rune('1') { - goto l909 + goto l914 } position++ } - l912: - goto l908 - l909: - position, tokenIndex = position909, tokenIndex909 + l917: + goto l913 + l914: + position, tokenIndex = position914, tokenIndex914 } - goto l904 - l905: - position, tokenIndex = position904, tokenIndex904 + goto l909 + l910: + position, tokenIndex = position909, tokenIndex909 if buffer[position] != rune('0') { - goto l914 + goto l919 } position++ { - position915, tokenIndex915 := position, tokenIndex + position920, tokenIndex920 := position, tokenIndex if buffer[position] != rune('x') { - goto l916 + goto l921 } position++ - goto l915 - l916: - position, tokenIndex = position915, tokenIndex915 + goto l920 + l921: + position, tokenIndex = position920, tokenIndex920 if buffer[position] != rune('X') { - goto l914 + goto l919 } position++ } - l915: + l920: { - position919, tokenIndex919 := position, tokenIndex + position924, tokenIndex924 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l920 + goto l925 } position++ - goto l919 - l920: - position, tokenIndex = position919, tokenIndex919 + goto l924 + l925: + position, tokenIndex = position924, tokenIndex924 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l921 + goto l926 } position++ - goto l919 - l921: - position, tokenIndex = position919, tokenIndex919 + goto l924 + l926: + position, tokenIndex = position924, tokenIndex924 { - position922, tokenIndex922 := position, tokenIndex + position927, tokenIndex927 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('f') { - goto l923 + goto l928 } position++ - goto l922 - l923: - position, tokenIndex = position922, tokenIndex922 + goto l927 + l928: + position, tokenIndex = position927, tokenIndex927 if c := buffer[position]; c < rune('A') || c > rune('F') { - goto l914 + goto l919 } position++ } - l922: + l927: } - l919: - l917: + l924: + l922: { - position918, tokenIndex918 := position, tokenIndex + position923, tokenIndex923 := position, tokenIndex { - position924, tokenIndex924 := position, tokenIndex + position929, tokenIndex929 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l925 + goto l930 } position++ - goto l924 - l925: - position, tokenIndex = position924, tokenIndex924 + goto l929 + l930: + position, tokenIndex = position929, tokenIndex929 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l926 + goto l931 } position++ - goto l924 - l926: - position, tokenIndex = position924, tokenIndex924 + goto l929 + l931: + position, tokenIndex = position929, tokenIndex929 { - position927, tokenIndex927 := position, tokenIndex + position932, tokenIndex932 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('f') { - goto l928 + goto l933 } position++ - goto l927 - l928: - position, tokenIndex = position927, tokenIndex927 + goto l932 + l933: + position, tokenIndex = position932, tokenIndex932 if c := buffer[position]; c < rune('A') || c > rune('F') { - goto l918 + goto l923 } position++ } - l927: + l932: } - l924: - goto l917 - l918: - position, tokenIndex = position918, tokenIndex918 + l929: + goto l922 + l923: + position, tokenIndex = position923, tokenIndex923 } - goto l904 - l914: - position, tokenIndex = position904, tokenIndex904 + goto l909 + l919: + position, tokenIndex = position909, tokenIndex909 { - position929, tokenIndex929 := position, tokenIndex + position934, tokenIndex934 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l930 + goto l935 } position++ - l931: + l936: { - position932, tokenIndex932 := position, tokenIndex + position937, tokenIndex937 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l932 + goto l937 } position++ - goto l931 - l932: - position, tokenIndex = position932, tokenIndex932 + goto l936 + l937: + position, tokenIndex = position937, tokenIndex937 } if !_rules[ruleWS]() { - goto l930 + goto l935 } if !_rules[ruleOffsetOperator]() { - goto l930 + goto l935 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l930 + goto l935 } position++ - l933: + l938: { - position934, tokenIndex934 := position, tokenIndex + position939, tokenIndex939 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l934 + goto l939 } position++ - goto l933 - l934: - position, tokenIndex = position934, tokenIndex934 + goto l938 + l939: + position, tokenIndex = position939, tokenIndex939 } - goto l929 - l930: - position, tokenIndex = position929, tokenIndex929 + goto l934 + l935: + position, tokenIndex = position934, tokenIndex934 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l935 + goto l940 } position++ - l936: + l941: { - position937, tokenIndex937 := position, tokenIndex + position942, tokenIndex942 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l937 + goto l942 } position++ - goto l936 - l937: - position, tokenIndex = position937, tokenIndex937 + goto l941 + l942: + position, tokenIndex = position942, tokenIndex942 } { - position938, tokenIndex938 := position, tokenIndex + position943, tokenIndex943 := position, tokenIndex if !_rules[ruleOffsetOperator]() { - goto l938 + goto l943 } if buffer[position] != rune('(') { - goto l938 + goto l943 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l938 + goto l943 } position++ - l940: + l945: { - position941, tokenIndex941 := position, tokenIndex + position946, tokenIndex946 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l941 + goto l946 } position++ - goto l940 - l941: - position, tokenIndex = position941, tokenIndex941 + goto l945 + l946: + position, tokenIndex = position946, tokenIndex946 } if !_rules[ruleOffsetOperator]() { - goto l938 + goto l943 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l938 + goto l943 } position++ - l942: + l947: { - position943, tokenIndex943 := position, tokenIndex + position948, tokenIndex948 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l943 + goto l948 } position++ - goto l942 - l943: - position, tokenIndex = position943, tokenIndex943 + goto l947 + l948: + position, tokenIndex = position948, tokenIndex948 } if buffer[position] != rune(')') { - goto l938 + goto l943 } position++ - goto l939 - l938: - position, tokenIndex = position938, tokenIndex938 + goto l944 + l943: + position, tokenIndex = position943, tokenIndex943 } - l939: - goto l929 - l935: - position, tokenIndex = position929, tokenIndex929 + l944: + goto l934 + l940: + position, tokenIndex = position934, tokenIndex934 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l944 + goto l949 } position++ - l945: + l950: { - position946, tokenIndex946 := position, tokenIndex + position951, tokenIndex951 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l946 + goto l951 } position++ - goto l945 - l946: - position, tokenIndex = position946, tokenIndex946 + goto l950 + l951: + position, tokenIndex = position951, tokenIndex951 } { - position947, tokenIndex947 := position, tokenIndex + position952, tokenIndex952 := position, tokenIndex if !_rules[ruleOffsetOperator]() { - goto l947 + goto l952 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l947 + goto l952 } position++ - l949: + l954: { - position950, tokenIndex950 := position, tokenIndex + position955, tokenIndex955 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l950 + goto l955 } position++ - goto l949 - l950: - position, tokenIndex = position950, tokenIndex950 + goto l954 + l955: + position, tokenIndex = position955, tokenIndex955 } if !_rules[ruleOffsetOperator]() { - goto l947 + goto l952 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l947 + goto l952 } position++ - l951: + l956: { - position952, tokenIndex952 := position, tokenIndex + position957, tokenIndex957 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l952 + goto l957 } position++ - goto l951 - l952: - position, tokenIndex = position952, tokenIndex952 + goto l956 + l957: + position, tokenIndex = position957, tokenIndex957 } - goto l948 - l947: - position, tokenIndex = position947, tokenIndex947 + goto l953 + l952: + position, tokenIndex = position952, tokenIndex952 } - l948: - goto l929 - l944: - position, tokenIndex = position929, tokenIndex929 + l953: + goto l934 + l949: + position, tokenIndex = position934, tokenIndex934 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l953 + goto l958 } position++ - l954: + l959: { - position955, tokenIndex955 := position, tokenIndex + position960, tokenIndex960 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l955 + goto l960 } position++ - goto l954 - l955: - position, tokenIndex = position955, tokenIndex955 + goto l959 + l960: + position, tokenIndex = position960, tokenIndex960 } { - position956, tokenIndex956 := position, tokenIndex + position961, tokenIndex961 := position, tokenIndex if !_rules[ruleOffsetOperator]() { - goto l956 + goto l961 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l956 + goto l961 } position++ - l958: + l963: { - position959, tokenIndex959 := position, tokenIndex + position964, tokenIndex964 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l959 + goto l964 } position++ - goto l958 - l959: - position, tokenIndex = position959, tokenIndex959 + goto l963 + l964: + position, tokenIndex = position964, tokenIndex964 } - goto l957 - l956: - position, tokenIndex = position956, tokenIndex956 + goto l962 + l961: + position, tokenIndex = position961, tokenIndex961 } - l957: - goto l929 - l953: - position, tokenIndex = position929, tokenIndex929 + l962: + goto l934 + l958: + position, tokenIndex = position934, tokenIndex934 if buffer[position] != rune('(') { - goto l960 + goto l965 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l960 + goto l965 } position++ - l961: + l966: { - position962, tokenIndex962 := position, tokenIndex + position967, tokenIndex967 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l962 + goto l967 } position++ - goto l961 - l962: - position, tokenIndex = position962, tokenIndex962 + goto l966 + l967: + position, tokenIndex = position967, tokenIndex967 } { - position963, tokenIndex963 := position, tokenIndex + position968, tokenIndex968 := position, tokenIndex if !_rules[ruleWS]() { - goto l963 + goto l968 } - goto l964 - l963: - position, tokenIndex = position963, tokenIndex963 + goto l969 + l968: + position, tokenIndex = position968, tokenIndex968 } - l964: + l969: if !_rules[ruleOffsetOperator]() { - goto l960 + goto l965 } { - position965, tokenIndex965 := position, tokenIndex + position970, tokenIndex970 := position, tokenIndex if !_rules[ruleWS]() { - goto l965 + goto l970 } - goto l966 - l965: - position, tokenIndex = position965, tokenIndex965 + goto l971 + l970: + position, tokenIndex = position970, tokenIndex970 } - l966: + l971: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l960 + goto l965 } position++ - l967: + l972: { - position968, tokenIndex968 := position, tokenIndex + position973, tokenIndex973 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l968 + goto l973 } position++ - goto l967 - l968: - position, tokenIndex = position968, tokenIndex968 + goto l972 + l973: + position, tokenIndex = position973, tokenIndex973 } if buffer[position] != rune(')') { - goto l960 + goto l965 } position++ if !_rules[ruleOffsetOperator]() { - goto l960 + goto l965 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l960 + goto l965 } position++ - l969: + l974: { - position970, tokenIndex970 := position, tokenIndex + position975, tokenIndex975 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l970 + goto l975 } position++ - goto l969 - l970: - position, tokenIndex = position970, tokenIndex970 + goto l974 + l975: + position, tokenIndex = position975, tokenIndex975 } if !_rules[ruleOffsetOperator]() { - goto l960 + goto l965 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l960 + goto l965 } position++ - l971: + l976: { - position972, tokenIndex972 := position, tokenIndex + position977, tokenIndex977 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l972 + goto l977 } position++ - goto l971 - l972: - position, tokenIndex = position972, tokenIndex972 + goto l976 + l977: + position, tokenIndex = position977, tokenIndex977 } - goto l929 - l960: - position, tokenIndex = position929, tokenIndex929 + goto l934 + l965: + position, tokenIndex = position934, tokenIndex934 if buffer[position] != rune('(') { - goto l973 + goto l978 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l973 + goto l978 } position++ - l974: + l979: { - position975, tokenIndex975 := position, tokenIndex + position980, tokenIndex980 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l975 + goto l980 } position++ - goto l974 - l975: - position, tokenIndex = position975, tokenIndex975 + goto l979 + l980: + position, tokenIndex = position980, tokenIndex980 } { - position976, tokenIndex976 := position, tokenIndex + position981, tokenIndex981 := position, tokenIndex if !_rules[ruleWS]() { - goto l976 + goto l981 } - goto l977 - l976: - position, tokenIndex = position976, tokenIndex976 + goto l982 + l981: + position, tokenIndex = position981, tokenIndex981 } - l977: + l982: if !_rules[ruleOffsetOperator]() { - goto l973 + goto l978 } { - position978, tokenIndex978 := position, tokenIndex + position983, tokenIndex983 := position, tokenIndex if !_rules[ruleWS]() { - goto l978 + goto l983 } - goto l979 - l978: - position, tokenIndex = position978, tokenIndex978 + goto l984 + l983: + position, tokenIndex = position983, tokenIndex983 } - l979: + l984: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l973 + goto l978 } position++ - l980: + l985: { - position981, tokenIndex981 := position, tokenIndex + position986, tokenIndex986 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l981 + goto l986 } position++ - goto l980 - l981: - position, tokenIndex = position981, tokenIndex981 + goto l985 + l986: + position, tokenIndex = position986, tokenIndex986 } if buffer[position] != rune(')') { - goto l973 + goto l978 } position++ if !_rules[ruleOffsetOperator]() { - goto l973 + goto l978 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l973 + goto l978 } position++ - l982: + l987: { - position983, tokenIndex983 := position, tokenIndex + position988, tokenIndex988 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l983 + goto l988 } position++ - goto l982 - l983: - position, tokenIndex = position983, tokenIndex983 + goto l987 + l988: + position, tokenIndex = position988, tokenIndex988 } { - position984, tokenIndex984 := position, tokenIndex + position989, tokenIndex989 := position, tokenIndex if buffer[position] != rune('x') { - goto l984 + goto l989 } position++ - goto l973 - l984: - position, tokenIndex = position984, tokenIndex984 + goto l978 + l989: + position, tokenIndex = position989, tokenIndex989 } - goto l929 - l973: - position, tokenIndex = position929, tokenIndex929 + goto l934 + l978: + position, tokenIndex = position934, tokenIndex934 if buffer[position] != rune('(') { - goto l985 + goto l990 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l985 + goto l990 } position++ - l986: + l991: { - position987, tokenIndex987 := position, tokenIndex + position992, tokenIndex992 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l987 + goto l992 } position++ - goto l986 - l987: - position, tokenIndex = position987, tokenIndex987 + goto l991 + l992: + position, tokenIndex = position992, tokenIndex992 } { - position988, tokenIndex988 := position, tokenIndex + position993, tokenIndex993 := position, tokenIndex if !_rules[ruleWS]() { - goto l988 + goto l993 } - goto l989 - l988: - position, tokenIndex = position988, tokenIndex988 + goto l994 + l993: + position, tokenIndex = position993, tokenIndex993 } - l989: + l994: if !_rules[ruleOffsetOperator]() { - goto l985 + goto l990 } { - position990, tokenIndex990 := position, tokenIndex + position995, tokenIndex995 := position, tokenIndex if !_rules[ruleWS]() { - goto l990 + goto l995 } - goto l991 - l990: - position, tokenIndex = position990, tokenIndex990 + goto l996 + l995: + position, tokenIndex = position995, tokenIndex995 } - l991: + l996: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l985 + goto l990 } position++ - l992: + l997: { - position993, tokenIndex993 := position, tokenIndex + position998, tokenIndex998 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l993 + goto l998 } position++ - goto l992 - l993: - position, tokenIndex = position993, tokenIndex993 + goto l997 + l998: + position, tokenIndex = position998, tokenIndex998 } if buffer[position] != rune(')') { - goto l985 + goto l990 } position++ - goto l929 - l985: - position, tokenIndex = position929, tokenIndex929 + goto l934 + l990: + position, tokenIndex = position934, tokenIndex934 if buffer[position] != rune('(') { - goto l898 + goto l903 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l898 + goto l903 } position++ - l994: + l999: { - position995, tokenIndex995 := position, tokenIndex + position1000, tokenIndex1000 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l995 + goto l1000 } position++ - goto l994 - l995: - position, tokenIndex = position995, tokenIndex995 + goto l999 + l1000: + position, tokenIndex = position1000, tokenIndex1000 } { - position996, tokenIndex996 := position, tokenIndex + position1001, tokenIndex1001 := position, tokenIndex if !_rules[ruleWS]() { - goto l996 + goto l1001 } - goto l997 - l996: - position, tokenIndex = position996, tokenIndex996 + goto l1002 + l1001: + position, tokenIndex = position1001, tokenIndex1001 } - l997: + l1002: if !_rules[ruleOffsetOperator]() { - goto l898 + goto l903 } { - position998, tokenIndex998 := position, tokenIndex + position1003, tokenIndex1003 := position, tokenIndex if !_rules[ruleWS]() { - goto l998 + goto l1003 } - goto l999 - l998: - position, tokenIndex = position998, tokenIndex998 + goto l1004 + l1003: + position, tokenIndex = position1003, tokenIndex1003 } - l999: + l1004: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l898 + goto l903 } position++ - l1000: + l1005: { - position1001, tokenIndex1001 := position, tokenIndex + position1006, tokenIndex1006 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l1001 + goto l1006 } position++ - goto l1000 - l1001: - position, tokenIndex = position1001, tokenIndex1001 + goto l1005 + l1006: + position, tokenIndex = position1006, tokenIndex1006 } { - position1002, tokenIndex1002 := position, tokenIndex + position1007, tokenIndex1007 := position, tokenIndex if !_rules[ruleWS]() { - goto l1002 + goto l1007 } - goto l1003 - l1002: - position, tokenIndex = position1002, tokenIndex1002 + goto l1008 + l1007: + position, tokenIndex = position1007, tokenIndex1007 } - l1003: + l1008: if !_rules[ruleOffsetOperator]() { - goto l898 + goto l903 } { - position1004, tokenIndex1004 := position, tokenIndex + position1009, tokenIndex1009 := position, tokenIndex if !_rules[ruleWS]() { - goto l1004 + goto l1009 } - goto l1005 - l1004: - position, tokenIndex = position1004, tokenIndex1004 + goto l1010 + l1009: + position, tokenIndex = position1009, tokenIndex1009 } - l1005: + l1010: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l898 + goto l903 } position++ - l1006: + l1011: { - position1007, tokenIndex1007 := position, tokenIndex + position1012, tokenIndex1012 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l1007 + goto l1012 } position++ - goto l1006 - l1007: - position, tokenIndex = position1007, tokenIndex1007 + goto l1011 + l1012: + position, tokenIndex = position1012, tokenIndex1012 } if buffer[position] != rune(')') { - goto l898 + goto l903 } position++ } - l929: + l934: { - position1008, tokenIndex1008 := position, tokenIndex + position1013, tokenIndex1013 := position, tokenIndex { - position1009, tokenIndex1009 := position, tokenIndex + position1014, tokenIndex1014 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l1010 + goto l1015 } position++ - goto l1009 - l1010: - position, tokenIndex = position1009, tokenIndex1009 + goto l1014 + l1015: + position, tokenIndex = position1014, tokenIndex1014 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l1008 + goto l1013 } position++ } - l1009: - goto l898 - l1008: - position, tokenIndex = position1008, tokenIndex1008 + l1014: + goto l903 + l1013: + position, tokenIndex = position1013, tokenIndex1013 } } - l904: - add(ruleOffset, position899) + l909: + add(ruleOffset, position904) } return true - l898: - position, tokenIndex = position898, tokenIndex898 + l903: + position, tokenIndex = position903, tokenIndex903 return false }, /* 58 Section <- <([a-z] / [A-Z] / '@')+> */ func() bool { - position1011, tokenIndex1011 := position, tokenIndex + position1016, tokenIndex1016 := position, tokenIndex { - position1012 := position + position1017 := position { - position1015, tokenIndex1015 := position, tokenIndex + position1020, tokenIndex1020 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l1016 + goto l1021 } position++ - goto l1015 - l1016: - position, tokenIndex = position1015, tokenIndex1015 + goto l1020 + l1021: + position, tokenIndex = position1020, tokenIndex1020 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l1017 + goto l1022 } position++ - goto l1015 - l1017: - position, tokenIndex = position1015, tokenIndex1015 + goto l1020 + l1022: + position, tokenIndex = position1020, tokenIndex1020 if buffer[position] != rune('@') { - goto l1011 + goto l1016 } position++ } - l1015: - l1013: + l1020: + l1018: { - position1014, tokenIndex1014 := position, tokenIndex + position1019, tokenIndex1019 := position, tokenIndex { - position1018, tokenIndex1018 := position, tokenIndex + position1023, tokenIndex1023 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l1019 + goto l1024 } position++ - goto l1018 - l1019: - position, tokenIndex = position1018, tokenIndex1018 + goto l1023 + l1024: + position, tokenIndex = position1023, tokenIndex1023 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l1020 + goto l1025 } position++ - goto l1018 - l1020: - position, tokenIndex = position1018, tokenIndex1018 + goto l1023 + l1025: + position, tokenIndex = position1023, tokenIndex1023 if buffer[position] != rune('@') { - goto l1014 + goto l1019 } position++ } - l1018: - goto l1013 - l1014: - position, tokenIndex = position1014, tokenIndex1014 + l1023: + goto l1018 + l1019: + position, tokenIndex = position1019, tokenIndex1019 } - add(ruleSection, position1012) + add(ruleSection, position1017) } return true - l1011: - position, tokenIndex = position1011, tokenIndex1011 + l1016: + position, tokenIndex = position1016, tokenIndex1016 return false }, /* 59 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */ func() bool { - position1021, tokenIndex1021 := position, tokenIndex + position1026, tokenIndex1026 := position, tokenIndex { - position1022 := position + position1027 := position if buffer[position] != rune('%') { - goto l1021 + goto l1026 } position++ { - position1023, tokenIndex1023 := position, tokenIndex + position1028, tokenIndex1028 := position, tokenIndex if c := buffer[position]; c < rune('c') || c > rune('g') { - goto l1024 + goto l1029 } position++ - goto l1023 - l1024: - position, tokenIndex = position1023, tokenIndex1023 + goto l1028 + l1029: + position, tokenIndex = position1028, tokenIndex1028 if buffer[position] != rune('s') { - goto l1021 + goto l1026 } position++ } - l1023: + l1028: if buffer[position] != rune('s') { - goto l1021 + goto l1026 } position++ if buffer[position] != rune(':') { - goto l1021 + goto l1026 } position++ - add(ruleSegmentRegister, position1022) + add(ruleSegmentRegister, position1027) } return true - l1021: - position, tokenIndex = position1021, tokenIndex1021 + l1026: + position, tokenIndex = position1026, tokenIndex1026 return false }, } From 1be42a3e16a53c229690ae8215f0de8e2a1a54e7 Mon Sep 17 00:00:00 2001 From: Justin W Smith <103147162+justsmth@users.noreply.github.com> Date: Tue, 10 Dec 2024 18:47:40 -0500 Subject: [PATCH 11/12] Prepare release 1.41.1 (#2052) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Description of changes: Prepare release v1.41.1 ### Call-outs: * Forgot version bump for [v1.41.0](https://github.com/aws/aws-lc/releases/tag/v1.41.0). 😬 By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license and the ISC license. --- crypto/fipsmodule/service_indicator/service_indicator_test.cc | 4 ++-- include/openssl/base.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/crypto/fipsmodule/service_indicator/service_indicator_test.cc b/crypto/fipsmodule/service_indicator/service_indicator_test.cc index 582219b14a..f02c70b5c4 100644 --- a/crypto/fipsmodule/service_indicator/service_indicator_test.cc +++ b/crypto/fipsmodule/service_indicator/service_indicator_test.cc @@ -5246,7 +5246,7 @@ TEST(ServiceIndicatorTest, ED25519SigGenVerify) { // Since this is running in FIPS mode it should end in FIPS // Update this when the AWS-LC version number is modified TEST(ServiceIndicatorTest, AWSLCVersionString) { - ASSERT_STREQ(awslc_version_string(), "AWS-LC FIPS 1.40.0"); + ASSERT_STREQ(awslc_version_string(), "AWS-LC FIPS 1.41.1"); } #else @@ -5289,6 +5289,6 @@ TEST(ServiceIndicatorTest, BasicTest) { // Since this is not running in FIPS mode it shouldn't end in FIPS // Update this when the AWS-LC version number is modified TEST(ServiceIndicatorTest, AWSLCVersionString) { - ASSERT_STREQ(awslc_version_string(), "AWS-LC 1.40.0"); + ASSERT_STREQ(awslc_version_string(), "AWS-LC 1.41.1"); } #endif // AWSLC_FIPS diff --git a/include/openssl/base.h b/include/openssl/base.h index c951c9b916..7b02c17960 100644 --- a/include/openssl/base.h +++ b/include/openssl/base.h @@ -122,7 +122,7 @@ extern "C" { // ServiceIndicatorTest.AWSLCVersionString // Note: there are two versions of this test. Only one test is compiled // depending on FIPS mode. -#define AWSLC_VERSION_NUMBER_STRING "1.40.0" +#define AWSLC_VERSION_NUMBER_STRING "1.41.1" #if defined(BORINGSSL_SHARED_LIBRARY) From c21a05c3ea120ea0f3666fe07ee92c1dd3f73dc6 Mon Sep 17 00:00:00 2001 From: dkostic <25055813+dkostic@users.noreply.github.com> Date: Wed, 11 Dec 2024 09:34:51 -0800 Subject: [PATCH 12/12] Address fips hash using adrp instead of adr to increase reach (#2053) Extends https://github.com/aws/aws-lc/pull/1332 to FIPS integrity hash. --- util/fipstools/delocate/delocate.go | 31 +++++--- .../delocate/testdata/aarch64-Basic/out.s | 70 +++++++++---------- .../generic-FileDirectives-no-start-end/out.s | 30 ++++---- .../testdata/generic-FileDirectives/out.s | 32 ++++----- .../delocate/testdata/generic-Includes/out.s | 32 ++++----- .../testdata/ppc64le-GlobalEntry/out.s | 48 ++++++------- .../delocate/testdata/ppc64le-LoadToR0/out.s | 68 +++++++++--------- .../delocate/testdata/ppc64le-Sample/out.s | 70 +++++++++---------- .../delocate/testdata/ppc64le-Sample2/out.s | 70 +++++++++---------- .../testdata/ppc64le-TOCWithOffset/out.s | 70 +++++++++---------- .../delocate/testdata/x86_64-BSS/out.s | 70 +++++++++---------- .../delocate/testdata/x86_64-Basic/out.s | 70 +++++++++---------- .../delocate/testdata/x86_64-FourArg/out.s | 70 +++++++++---------- .../delocate/testdata/x86_64-GOTRewrite/out.s | 70 +++++++++---------- .../testdata/x86_64-LabelRewrite/out.s | 70 +++++++++---------- .../testdata/x86_64-LargeMemory/out.s | 70 +++++++++---------- .../delocate/testdata/x86_64-Sections/out.s | 70 +++++++++---------- .../delocate/testdata/x86_64-ThreeArg/out.s | 70 +++++++++---------- 18 files changed, 545 insertions(+), 536 deletions(-) diff --git a/util/fipstools/delocate/delocate.go b/util/fipstools/delocate/delocate.go index fd2f2e2110..572e2ec99e 100644 --- a/util/fipstools/delocate/delocate.go +++ b/util/fipstools/delocate/delocate.go @@ -1959,8 +1959,24 @@ func transform(w stringWriter, includes []string, inputs []inputFile, startEndDe w.WriteString(fmt.Sprintf(".file %d \"inserted_by_delocate.c\"%s\n", maxObservedFileNumber+1, fileTrailing)) w.WriteString(fmt.Sprintf(".loc %d 1 0\n", maxObservedFileNumber+1)) } + + if d.processor == aarch64 { + // Grab the address of BORINGSSL_bcm_text_hash via a relocation + // from a redirector function. For this to work, need to add the markers + // to the symbol table. + w.WriteString(".global BORINGSSL_bcm_text_hash\n") + w.WriteString(".type BORINGSSL_bcm_text_hash, @function\n") + } else { + w.WriteString(".type BORINGSSL_bcm_text_hash, @object\n") + w.WriteString(".size BORINGSSL_bcm_text_hash, 32\n") + } + w.WriteString("BORINGSSL_bcm_text_hash:\n") + for _, b := range fipscommon.UninitHashValue { + w.WriteString(".byte 0x" + strconv.FormatUint(uint64(b), 16) + "\n") + } + if d.processor == aarch64 { - // Grab the address of BORINGSSL_bcm_test_[start,end] via a relocation + // Grab the address of BORINGSSL_bcm_text_[start,end] via a relocation // from a redirector function. For this to work, need to add the markers // to the symbol table. w.WriteString(fmt.Sprintf(".global BORINGSSL_bcm_text_start\n")) @@ -2139,13 +2155,6 @@ func transform(w stringWriter, includes []string, inputs []inputFile, startEndDe } } - w.WriteString(".type BORINGSSL_bcm_text_hash, @object\n") - w.WriteString(".size BORINGSSL_bcm_text_hash, 32\n") - w.WriteString("BORINGSSL_bcm_text_hash:\n") - for _, b := range fipscommon.UninitHashValue { - w.WriteString(".byte 0x" + strconv.FormatUint(uint64(b), 16) + "\n") - } - return nil } @@ -2417,8 +2426,7 @@ func localEntryName(name string) string { func isSynthesized(symbol string, processor processorType) bool { SymbolisSynthesized := strings.HasSuffix(symbol, "_bss_get") || - symbol == "OPENSSL_ia32cap_get" || - symbol == "BORINGSSL_bcm_text_hash" + symbol == "OPENSSL_ia32cap_get" // While BORINGSSL_bcm_text_[start,end] are known symbols, on aarch64 we go // through the GOT because adr doesn't have adequate reach. @@ -2431,7 +2439,8 @@ func isSynthesized(symbol string, processor processorType) bool { func isFipsScopeMarkers(symbol string) bool { return symbol == "BORINGSSL_bcm_text_start" || - symbol == "BORINGSSL_bcm_text_end" + symbol == "BORINGSSL_bcm_text_end" || + symbol == "BORINGSSL_bcm_text_hash" } func redirectorName(symbol string) string { diff --git a/util/fipstools/delocate/testdata/aarch64-Basic/out.s b/util/fipstools/delocate/testdata/aarch64-Basic/out.s index b4716afdf0..06ba916190 100644 --- a/util/fipstools/delocate/testdata/aarch64-Basic/out.s +++ b/util/fipstools/delocate/testdata/aarch64-Basic/out.s @@ -1,6 +1,41 @@ .text .file 1 "inserted_by_delocate.c" .loc 1 1 0 +.global BORINGSSL_bcm_text_hash +.type BORINGSSL_bcm_text_hash, @function +BORINGSSL_bcm_text_hash: +.byte 0xae +.byte 0x2c +.byte 0xea +.byte 0x2a +.byte 0xbd +.byte 0xa6 +.byte 0xf3 +.byte 0xec +.byte 0x97 +.byte 0x7f +.byte 0x9b +.byte 0xf6 +.byte 0x94 +.byte 0x9a +.byte 0xfc +.byte 0x83 +.byte 0x68 +.byte 0x27 +.byte 0xcb +.byte 0xa0 +.byte 0xa0 +.byte 0x9f +.byte 0x6b +.byte 0x6f +.byte 0xde +.byte 0x52 +.byte 0xcd +.byte 0xe2 +.byte 0xcd +.byte 0xff +.byte 0x31 +.byte 0x80 .global BORINGSSL_bcm_text_start .type BORINGSSL_bcm_text_start, @function BORINGSSL_bcm_text_start: @@ -261,38 +296,3 @@ bss_symbol_bss_get: ret .cfi_endproc .size .LOPENSSL_armcap_P_addr, .-.LOPENSSL_armcap_P_addr -.type BORINGSSL_bcm_text_hash, @object -.size BORINGSSL_bcm_text_hash, 32 -BORINGSSL_bcm_text_hash: -.byte 0xae -.byte 0x2c -.byte 0xea -.byte 0x2a -.byte 0xbd -.byte 0xa6 -.byte 0xf3 -.byte 0xec -.byte 0x97 -.byte 0x7f -.byte 0x9b -.byte 0xf6 -.byte 0x94 -.byte 0x9a -.byte 0xfc -.byte 0x83 -.byte 0x68 -.byte 0x27 -.byte 0xcb -.byte 0xa0 -.byte 0xa0 -.byte 0x9f -.byte 0x6b -.byte 0x6f -.byte 0xde -.byte 0x52 -.byte 0xcd -.byte 0xe2 -.byte 0xcd -.byte 0xff -.byte 0x31 -.byte 0x80 diff --git a/util/fipstools/delocate/testdata/generic-FileDirectives-no-start-end/out.s b/util/fipstools/delocate/testdata/generic-FileDirectives-no-start-end/out.s index 5ab8fc7ef1..a994cd8795 100644 --- a/util/fipstools/delocate/testdata/generic-FileDirectives-no-start-end/out.s +++ b/util/fipstools/delocate/testdata/generic-FileDirectives-no-start-end/out.s @@ -1,19 +1,4 @@ .text -BORINGSSL_bcm_text_start: -.file 10 "some/path/file.c" "file.c" -.file 1000 "some/path/file2.c" "file2.c" -.file 1001 "some/path/file_with_md5.c" "other_name.c" md5 0x5eba7844df6449a7f2fff1556fe7ba8d239f8e2f - -# An instruction is needed to satisfy the architecture auto-detection. - movq %rax, %rbx -.text -BORINGSSL_bcm_text_end: -.type OPENSSL_ia32cap_get, @function -.globl OPENSSL_ia32cap_get -.LOPENSSL_ia32cap_get_local_target: -OPENSSL_ia32cap_get: - leaq OPENSSL_ia32cap_P(%rip), %rax - ret .type BORINGSSL_bcm_text_hash, @object .size BORINGSSL_bcm_text_hash, 32 BORINGSSL_bcm_text_hash: @@ -49,3 +34,18 @@ BORINGSSL_bcm_text_hash: .byte 0xff .byte 0x31 .byte 0x80 +BORINGSSL_bcm_text_start: +.file 10 "some/path/file.c" "file.c" +.file 1000 "some/path/file2.c" "file2.c" +.file 1001 "some/path/file_with_md5.c" "other_name.c" md5 0x5eba7844df6449a7f2fff1556fe7ba8d239f8e2f + +# An instruction is needed to satisfy the architecture auto-detection. + movq %rax, %rbx +.text +BORINGSSL_bcm_text_end: +.type OPENSSL_ia32cap_get, @function +.globl OPENSSL_ia32cap_get +.LOPENSSL_ia32cap_get_local_target: +OPENSSL_ia32cap_get: + leaq OPENSSL_ia32cap_P(%rip), %rax + ret diff --git a/util/fipstools/delocate/testdata/generic-FileDirectives/out.s b/util/fipstools/delocate/testdata/generic-FileDirectives/out.s index 80d7d526c2..dc12794b9b 100644 --- a/util/fipstools/delocate/testdata/generic-FileDirectives/out.s +++ b/util/fipstools/delocate/testdata/generic-FileDirectives/out.s @@ -1,22 +1,6 @@ .text .file 1002 "inserted_by_delocate.c" md5 0x00000000000000000000000000000000 .loc 1002 1 0 -BORINGSSL_bcm_text_start: -.file 10 "some/path/file.c" "file.c" -.file 1000 "some/path/file2.c" "file2.c" -.file 1001 "some/path/file_with_md5.c" "other_name.c" md5 0x5eba7844df6449a7f2fff1556fe7ba8d239f8e2f - -# An instruction is needed to satisfy the architecture auto-detection. - movq %rax, %rbx -.text -.loc 1002 2 0 -BORINGSSL_bcm_text_end: -.type OPENSSL_ia32cap_get, @function -.globl OPENSSL_ia32cap_get -.LOPENSSL_ia32cap_get_local_target: -OPENSSL_ia32cap_get: - leaq OPENSSL_ia32cap_P(%rip), %rax - ret .type BORINGSSL_bcm_text_hash, @object .size BORINGSSL_bcm_text_hash, 32 BORINGSSL_bcm_text_hash: @@ -52,3 +36,19 @@ BORINGSSL_bcm_text_hash: .byte 0xff .byte 0x31 .byte 0x80 +BORINGSSL_bcm_text_start: +.file 10 "some/path/file.c" "file.c" +.file 1000 "some/path/file2.c" "file2.c" +.file 1001 "some/path/file_with_md5.c" "other_name.c" md5 0x5eba7844df6449a7f2fff1556fe7ba8d239f8e2f + +# An instruction is needed to satisfy the architecture auto-detection. + movq %rax, %rbx +.text +.loc 1002 2 0 +BORINGSSL_bcm_text_end: +.type OPENSSL_ia32cap_get, @function +.globl OPENSSL_ia32cap_get +.LOPENSSL_ia32cap_get_local_target: +OPENSSL_ia32cap_get: + leaq OPENSSL_ia32cap_P(%rip), %rax + ret diff --git a/util/fipstools/delocate/testdata/generic-Includes/out.s b/util/fipstools/delocate/testdata/generic-Includes/out.s index c835dfe734..09912d1519 100644 --- a/util/fipstools/delocate/testdata/generic-Includes/out.s +++ b/util/fipstools/delocate/testdata/generic-Includes/out.s @@ -3,22 +3,6 @@ .text .file 1002 "inserted_by_delocate.c" md5 0x00000000000000000000000000000000 .loc 1002 1 0 -BORINGSSL_bcm_text_start: -.file 10 "some/path/file.c" "file.c" -.file 1000 "some/path/file2.c" "file2.c" -.file 1001 "some/path/file_with_md5.c" "other_name.c" md5 0x5eba7844df6449a7f2fff1556fe7ba8d239f8e2f - -# An instruction is needed to satisfy the architecture auto-detection. - movq %rax, %rbx -.text -.loc 1002 2 0 -BORINGSSL_bcm_text_end: -.type OPENSSL_ia32cap_get, @function -.globl OPENSSL_ia32cap_get -.LOPENSSL_ia32cap_get_local_target: -OPENSSL_ia32cap_get: - leaq OPENSSL_ia32cap_P(%rip), %rax - ret .type BORINGSSL_bcm_text_hash, @object .size BORINGSSL_bcm_text_hash, 32 BORINGSSL_bcm_text_hash: @@ -54,3 +38,19 @@ BORINGSSL_bcm_text_hash: .byte 0xff .byte 0x31 .byte 0x80 +BORINGSSL_bcm_text_start: +.file 10 "some/path/file.c" "file.c" +.file 1000 "some/path/file2.c" "file2.c" +.file 1001 "some/path/file_with_md5.c" "other_name.c" md5 0x5eba7844df6449a7f2fff1556fe7ba8d239f8e2f + +# An instruction is needed to satisfy the architecture auto-detection. + movq %rax, %rbx +.text +.loc 1002 2 0 +BORINGSSL_bcm_text_end: +.type OPENSSL_ia32cap_get, @function +.globl OPENSSL_ia32cap_get +.LOPENSSL_ia32cap_get_local_target: +OPENSSL_ia32cap_get: + leaq OPENSSL_ia32cap_P(%rip), %rax + ret diff --git a/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/out.s b/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/out.s index d75e2c7f1d..62cdedc6f9 100644 --- a/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/out.s +++ b/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/out.s @@ -1,30 +1,6 @@ .text .file 1 "inserted_by_delocate.c" .loc 1 1 0 -BORINGSSL_bcm_text_start: - .text -.Lfoo_local_target: -foo: -.LCF0: - -0: - -999: - addis 2, 12, .LBORINGSSL_external_toc-999b@ha - addi 2, 2, .LBORINGSSL_external_toc-999b@l - ld 12, 0(2) - add 2, 2, 12 -# WAS addi 2,2,.TOC.-.LCF0@l - .localentry foo,.-foo -.Lfoo_local_entry: -.LVL0: - - bl -.text -.loc 1 2 0 -BORINGSSL_bcm_text_end: -.LBORINGSSL_external_toc: -.quad .TOC.-.LBORINGSSL_external_toc .type BORINGSSL_bcm_text_hash, @object .size BORINGSSL_bcm_text_hash, 32 BORINGSSL_bcm_text_hash: @@ -60,3 +36,27 @@ BORINGSSL_bcm_text_hash: .byte 0xff .byte 0x31 .byte 0x80 +BORINGSSL_bcm_text_start: + .text +.Lfoo_local_target: +foo: +.LCF0: + +0: + +999: + addis 2, 12, .LBORINGSSL_external_toc-999b@ha + addi 2, 2, .LBORINGSSL_external_toc-999b@l + ld 12, 0(2) + add 2, 2, 12 +# WAS addi 2,2,.TOC.-.LCF0@l + .localentry foo,.-foo +.Lfoo_local_entry: +.LVL0: + + bl +.text +.loc 1 2 0 +BORINGSSL_bcm_text_end: +.LBORINGSSL_external_toc: +.quad .TOC.-.LBORINGSSL_external_toc diff --git a/util/fipstools/delocate/testdata/ppc64le-LoadToR0/out.s b/util/fipstools/delocate/testdata/ppc64le-LoadToR0/out.s index dad7603ab0..4d2f1cefdf 100644 --- a/util/fipstools/delocate/testdata/ppc64le-LoadToR0/out.s +++ b/util/fipstools/delocate/testdata/ppc64le-LoadToR0/out.s @@ -1,40 +1,6 @@ .text .file 1 "inserted_by_delocate.c" .loc 1 1 0 -BORINGSSL_bcm_text_start: - .text -.Lfoo_local_target: -foo: -# WAS addis 22,2,bar@toc@ha -# WAS ld 0,bar@toc@l(22) - addi 1, 1, -288 - mflr 0 - std 0, -8(1) - std 3, -16(1) - bl .Lbcm_loadtoc_bar - std 3, -24(1) - ld 3, -8(1) - mtlr 3 - ld 0, -24(1) - ld 3, -16(1) - addi 1, 1, 288 - addi 1, 1, -288 - std 3, -8(1) - mr 3, 0 - ld 0, 0(3) - ld 3, -8(1) - addi 1, 1, 288 -.text -.loc 1 2 0 -BORINGSSL_bcm_text_end: -.type bcm_loadtoc_bar, @function -bcm_loadtoc_bar: -.Lbcm_loadtoc_bar: - addis 3, 2, bar@toc@ha - addi 3, 3, bar@toc@l - blr -.LBORINGSSL_external_toc: -.quad .TOC.-.LBORINGSSL_external_toc .type BORINGSSL_bcm_text_hash, @object .size BORINGSSL_bcm_text_hash, 32 BORINGSSL_bcm_text_hash: @@ -70,3 +36,37 @@ BORINGSSL_bcm_text_hash: .byte 0xff .byte 0x31 .byte 0x80 +BORINGSSL_bcm_text_start: + .text +.Lfoo_local_target: +foo: +# WAS addis 22,2,bar@toc@ha +# WAS ld 0,bar@toc@l(22) + addi 1, 1, -288 + mflr 0 + std 0, -8(1) + std 3, -16(1) + bl .Lbcm_loadtoc_bar + std 3, -24(1) + ld 3, -8(1) + mtlr 3 + ld 0, -24(1) + ld 3, -16(1) + addi 1, 1, 288 + addi 1, 1, -288 + std 3, -8(1) + mr 3, 0 + ld 0, 0(3) + ld 3, -8(1) + addi 1, 1, 288 +.text +.loc 1 2 0 +BORINGSSL_bcm_text_end: +.type bcm_loadtoc_bar, @function +bcm_loadtoc_bar: +.Lbcm_loadtoc_bar: + addis 3, 2, bar@toc@ha + addi 3, 3, bar@toc@l + blr +.LBORINGSSL_external_toc: +.quad .TOC.-.LBORINGSSL_external_toc diff --git a/util/fipstools/delocate/testdata/ppc64le-Sample/out.s b/util/fipstools/delocate/testdata/ppc64le-Sample/out.s index 71ad6c20b3..3f6836e1cf 100644 --- a/util/fipstools/delocate/testdata/ppc64le-Sample/out.s +++ b/util/fipstools/delocate/testdata/ppc64le-Sample/out.s @@ -1,6 +1,41 @@ .text .file 1 "inserted_by_delocate.c" .loc 1 1 0 +.type BORINGSSL_bcm_text_hash, @object +.size BORINGSSL_bcm_text_hash, 32 +BORINGSSL_bcm_text_hash: +.byte 0xae +.byte 0x2c +.byte 0xea +.byte 0x2a +.byte 0xbd +.byte 0xa6 +.byte 0xf3 +.byte 0xec +.byte 0x97 +.byte 0x7f +.byte 0x9b +.byte 0xf6 +.byte 0x94 +.byte 0x9a +.byte 0xfc +.byte 0x83 +.byte 0x68 +.byte 0x27 +.byte 0xcb +.byte 0xa0 +.byte 0xa0 +.byte 0x9f +.byte 0x6b +.byte 0x6f +.byte 0xde +.byte 0x52 +.byte 0xcd +.byte 0xe2 +.byte 0xcd +.byte 0xff +.byte 0x31 +.byte 0x80 BORINGSSL_bcm_text_start: .file "foo.c" .abiversion 2 @@ -515,38 +550,3 @@ bcm_loadtoc__dot_LkString_local_target: blr .LBORINGSSL_external_toc: .quad .TOC.-.LBORINGSSL_external_toc -.type BORINGSSL_bcm_text_hash, @object -.size BORINGSSL_bcm_text_hash, 32 -BORINGSSL_bcm_text_hash: -.byte 0xae -.byte 0x2c -.byte 0xea -.byte 0x2a -.byte 0xbd -.byte 0xa6 -.byte 0xf3 -.byte 0xec -.byte 0x97 -.byte 0x7f -.byte 0x9b -.byte 0xf6 -.byte 0x94 -.byte 0x9a -.byte 0xfc -.byte 0x83 -.byte 0x68 -.byte 0x27 -.byte 0xcb -.byte 0xa0 -.byte 0xa0 -.byte 0x9f -.byte 0x6b -.byte 0x6f -.byte 0xde -.byte 0x52 -.byte 0xcd -.byte 0xe2 -.byte 0xcd -.byte 0xff -.byte 0x31 -.byte 0x80 diff --git a/util/fipstools/delocate/testdata/ppc64le-Sample2/out.s b/util/fipstools/delocate/testdata/ppc64le-Sample2/out.s index e24f53ec45..6451240ab5 100644 --- a/util/fipstools/delocate/testdata/ppc64le-Sample2/out.s +++ b/util/fipstools/delocate/testdata/ppc64le-Sample2/out.s @@ -1,6 +1,41 @@ .text .file 1 "inserted_by_delocate.c" .loc 1 1 0 +.type BORINGSSL_bcm_text_hash, @object +.size BORINGSSL_bcm_text_hash, 32 +BORINGSSL_bcm_text_hash: +.byte 0xae +.byte 0x2c +.byte 0xea +.byte 0x2a +.byte 0xbd +.byte 0xa6 +.byte 0xf3 +.byte 0xec +.byte 0x97 +.byte 0x7f +.byte 0x9b +.byte 0xf6 +.byte 0x94 +.byte 0x9a +.byte 0xfc +.byte 0x83 +.byte 0x68 +.byte 0x27 +.byte 0xcb +.byte 0xa0 +.byte 0xa0 +.byte 0x9f +.byte 0x6b +.byte 0x6f +.byte 0xde +.byte 0x52 +.byte 0xcd +.byte 0xe2 +.byte 0xcd +.byte 0xff +.byte 0x31 +.byte 0x80 BORINGSSL_bcm_text_start: .file "foo.c" .abiversion 2 @@ -640,38 +675,3 @@ bcm_loadtoc__dot_Lfunction_local_target: blr .LBORINGSSL_external_toc: .quad .TOC.-.LBORINGSSL_external_toc -.type BORINGSSL_bcm_text_hash, @object -.size BORINGSSL_bcm_text_hash, 32 -BORINGSSL_bcm_text_hash: -.byte 0xae -.byte 0x2c -.byte 0xea -.byte 0x2a -.byte 0xbd -.byte 0xa6 -.byte 0xf3 -.byte 0xec -.byte 0x97 -.byte 0x7f -.byte 0x9b -.byte 0xf6 -.byte 0x94 -.byte 0x9a -.byte 0xfc -.byte 0x83 -.byte 0x68 -.byte 0x27 -.byte 0xcb -.byte 0xa0 -.byte 0xa0 -.byte 0x9f -.byte 0x6b -.byte 0x6f -.byte 0xde -.byte 0x52 -.byte 0xcd -.byte 0xe2 -.byte 0xcd -.byte 0xff -.byte 0x31 -.byte 0x80 diff --git a/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/out.s b/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/out.s index fc55ef2073..ce4dcc0aec 100644 --- a/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/out.s +++ b/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/out.s @@ -1,6 +1,41 @@ .text .file 1 "inserted_by_delocate.c" .loc 1 1 0 +.type BORINGSSL_bcm_text_hash, @object +.size BORINGSSL_bcm_text_hash, 32 +BORINGSSL_bcm_text_hash: +.byte 0xae +.byte 0x2c +.byte 0xea +.byte 0x2a +.byte 0xbd +.byte 0xa6 +.byte 0xf3 +.byte 0xec +.byte 0x97 +.byte 0x7f +.byte 0x9b +.byte 0xf6 +.byte 0x94 +.byte 0x9a +.byte 0xfc +.byte 0x83 +.byte 0x68 +.byte 0x27 +.byte 0xcb +.byte 0xa0 +.byte 0xa0 +.byte 0x9f +.byte 0x6b +.byte 0x6f +.byte 0xde +.byte 0x52 +.byte 0xcd +.byte 0xe2 +.byte 0xcd +.byte 0xff +.byte 0x31 +.byte 0x80 BORINGSSL_bcm_text_start: .text .Lfoo_local_target: @@ -141,38 +176,3 @@ bcm_loadtoc__dot_Lfoo_local_target__minus_10: blr .LBORINGSSL_external_toc: .quad .TOC.-.LBORINGSSL_external_toc -.type BORINGSSL_bcm_text_hash, @object -.size BORINGSSL_bcm_text_hash, 32 -BORINGSSL_bcm_text_hash: -.byte 0xae -.byte 0x2c -.byte 0xea -.byte 0x2a -.byte 0xbd -.byte 0xa6 -.byte 0xf3 -.byte 0xec -.byte 0x97 -.byte 0x7f -.byte 0x9b -.byte 0xf6 -.byte 0x94 -.byte 0x9a -.byte 0xfc -.byte 0x83 -.byte 0x68 -.byte 0x27 -.byte 0xcb -.byte 0xa0 -.byte 0xa0 -.byte 0x9f -.byte 0x6b -.byte 0x6f -.byte 0xde -.byte 0x52 -.byte 0xcd -.byte 0xe2 -.byte 0xcd -.byte 0xff -.byte 0x31 -.byte 0x80 diff --git a/util/fipstools/delocate/testdata/x86_64-BSS/out.s b/util/fipstools/delocate/testdata/x86_64-BSS/out.s index fd64b8f8fc..693c1babb1 100644 --- a/util/fipstools/delocate/testdata/x86_64-BSS/out.s +++ b/util/fipstools/delocate/testdata/x86_64-BSS/out.s @@ -1,6 +1,41 @@ .text .file 1 "inserted_by_delocate.c" .loc 1 1 0 +.type BORINGSSL_bcm_text_hash, @object +.size BORINGSSL_bcm_text_hash, 32 +BORINGSSL_bcm_text_hash: +.byte 0xae +.byte 0x2c +.byte 0xea +.byte 0x2a +.byte 0xbd +.byte 0xa6 +.byte 0xf3 +.byte 0xec +.byte 0x97 +.byte 0x7f +.byte 0x9b +.byte 0xf6 +.byte 0x94 +.byte 0x9a +.byte 0xfc +.byte 0x83 +.byte 0x68 +.byte 0x27 +.byte 0xcb +.byte 0xa0 +.byte 0xa0 +.byte 0x9f +.byte 0x6b +.byte 0x6f +.byte 0xde +.byte 0x52 +.byte 0xcd +.byte 0xe2 +.byte 0xcd +.byte 0xff +.byte 0x31 +.byte 0x80 BORINGSSL_bcm_text_start: .text movq %rax, %rax @@ -71,38 +106,3 @@ z_bss_get: OPENSSL_ia32cap_get: leaq OPENSSL_ia32cap_P(%rip), %rax ret -.type BORINGSSL_bcm_text_hash, @object -.size BORINGSSL_bcm_text_hash, 32 -BORINGSSL_bcm_text_hash: -.byte 0xae -.byte 0x2c -.byte 0xea -.byte 0x2a -.byte 0xbd -.byte 0xa6 -.byte 0xf3 -.byte 0xec -.byte 0x97 -.byte 0x7f -.byte 0x9b -.byte 0xf6 -.byte 0x94 -.byte 0x9a -.byte 0xfc -.byte 0x83 -.byte 0x68 -.byte 0x27 -.byte 0xcb -.byte 0xa0 -.byte 0xa0 -.byte 0x9f -.byte 0x6b -.byte 0x6f -.byte 0xde -.byte 0x52 -.byte 0xcd -.byte 0xe2 -.byte 0xcd -.byte 0xff -.byte 0x31 -.byte 0x80 diff --git a/util/fipstools/delocate/testdata/x86_64-Basic/out.s b/util/fipstools/delocate/testdata/x86_64-Basic/out.s index af5eb89ff3..655e167831 100644 --- a/util/fipstools/delocate/testdata/x86_64-Basic/out.s +++ b/util/fipstools/delocate/testdata/x86_64-Basic/out.s @@ -1,6 +1,41 @@ .text .file 2 "inserted_by_delocate.c" .loc 2 1 0 +.type BORINGSSL_bcm_text_hash, @object +.size BORINGSSL_bcm_text_hash, 32 +BORINGSSL_bcm_text_hash: +.byte 0xae +.byte 0x2c +.byte 0xea +.byte 0x2a +.byte 0xbd +.byte 0xa6 +.byte 0xf3 +.byte 0xec +.byte 0x97 +.byte 0x7f +.byte 0x9b +.byte 0xf6 +.byte 0x94 +.byte 0x9a +.byte 0xfc +.byte 0x83 +.byte 0x68 +.byte 0x27 +.byte 0xcb +.byte 0xa0 +.byte 0xa0 +.byte 0x9f +.byte 0x6b +.byte 0x6f +.byte 0xde +.byte 0x52 +.byte 0xcd +.byte 0xe2 +.byte 0xcd +.byte 0xff +.byte 0x31 +.byte 0x80 BORINGSSL_bcm_text_start: # Most instructions and lines should pass unaltered. This is made up of # copy-and-pasted bits of compiler output and likely does not actually @@ -67,38 +102,3 @@ BORINGSSL_bcm_text_end: OPENSSL_ia32cap_get: leaq OPENSSL_ia32cap_P(%rip), %rax ret -.type BORINGSSL_bcm_text_hash, @object -.size BORINGSSL_bcm_text_hash, 32 -BORINGSSL_bcm_text_hash: -.byte 0xae -.byte 0x2c -.byte 0xea -.byte 0x2a -.byte 0xbd -.byte 0xa6 -.byte 0xf3 -.byte 0xec -.byte 0x97 -.byte 0x7f -.byte 0x9b -.byte 0xf6 -.byte 0x94 -.byte 0x9a -.byte 0xfc -.byte 0x83 -.byte 0x68 -.byte 0x27 -.byte 0xcb -.byte 0xa0 -.byte 0xa0 -.byte 0x9f -.byte 0x6b -.byte 0x6f -.byte 0xde -.byte 0x52 -.byte 0xcd -.byte 0xe2 -.byte 0xcd -.byte 0xff -.byte 0x31 -.byte 0x80 diff --git a/util/fipstools/delocate/testdata/x86_64-FourArg/out.s b/util/fipstools/delocate/testdata/x86_64-FourArg/out.s index f1e47fb811..3fba28482e 100644 --- a/util/fipstools/delocate/testdata/x86_64-FourArg/out.s +++ b/util/fipstools/delocate/testdata/x86_64-FourArg/out.s @@ -1,6 +1,41 @@ .text .file 1 "inserted_by_delocate.c" .loc 1 1 0 +.type BORINGSSL_bcm_text_hash, @object +.size BORINGSSL_bcm_text_hash, 32 +BORINGSSL_bcm_text_hash: +.byte 0xae +.byte 0x2c +.byte 0xea +.byte 0x2a +.byte 0xbd +.byte 0xa6 +.byte 0xf3 +.byte 0xec +.byte 0x97 +.byte 0x7f +.byte 0x9b +.byte 0xf6 +.byte 0x94 +.byte 0x9a +.byte 0xfc +.byte 0x83 +.byte 0x68 +.byte 0x27 +.byte 0xcb +.byte 0xa0 +.byte 0xa0 +.byte 0x9f +.byte 0x6b +.byte 0x6f +.byte 0xde +.byte 0x52 +.byte 0xcd +.byte 0xe2 +.byte 0xcd +.byte 0xff +.byte 0x31 +.byte 0x80 BORINGSSL_bcm_text_start: .type foo, @function .globl foo @@ -48,38 +83,3 @@ fooExternal_GOTPCREL_external: OPENSSL_ia32cap_get: leaq OPENSSL_ia32cap_P(%rip), %rax ret -.type BORINGSSL_bcm_text_hash, @object -.size BORINGSSL_bcm_text_hash, 32 -BORINGSSL_bcm_text_hash: -.byte 0xae -.byte 0x2c -.byte 0xea -.byte 0x2a -.byte 0xbd -.byte 0xa6 -.byte 0xf3 -.byte 0xec -.byte 0x97 -.byte 0x7f -.byte 0x9b -.byte 0xf6 -.byte 0x94 -.byte 0x9a -.byte 0xfc -.byte 0x83 -.byte 0x68 -.byte 0x27 -.byte 0xcb -.byte 0xa0 -.byte 0xa0 -.byte 0x9f -.byte 0x6b -.byte 0x6f -.byte 0xde -.byte 0x52 -.byte 0xcd -.byte 0xe2 -.byte 0xcd -.byte 0xff -.byte 0x31 -.byte 0x80 diff --git a/util/fipstools/delocate/testdata/x86_64-GOTRewrite/out.s b/util/fipstools/delocate/testdata/x86_64-GOTRewrite/out.s index a56f140ef7..4e863e1b97 100644 --- a/util/fipstools/delocate/testdata/x86_64-GOTRewrite/out.s +++ b/util/fipstools/delocate/testdata/x86_64-GOTRewrite/out.s @@ -1,6 +1,41 @@ .text .file 1 "inserted_by_delocate.c" .loc 1 1 0 +.type BORINGSSL_bcm_text_hash, @object +.size BORINGSSL_bcm_text_hash, 32 +BORINGSSL_bcm_text_hash: +.byte 0xae +.byte 0x2c +.byte 0xea +.byte 0x2a +.byte 0xbd +.byte 0xa6 +.byte 0xf3 +.byte 0xec +.byte 0x97 +.byte 0x7f +.byte 0x9b +.byte 0xf6 +.byte 0x94 +.byte 0x9a +.byte 0xfc +.byte 0x83 +.byte 0x68 +.byte 0x27 +.byte 0xcb +.byte 0xa0 +.byte 0xa0 +.byte 0x9f +.byte 0x6b +.byte 0x6f +.byte 0xde +.byte 0x52 +.byte 0xcd +.byte 0xe2 +.byte 0xcd +.byte 0xff +.byte 0x31 +.byte 0x80 BORINGSSL_bcm_text_start: .text .Lfoo_local_target: @@ -319,38 +354,3 @@ LOPENSSL_ia32cap_P_rax2: LOPENSSL_ia32cap_P_rbx3: leaq OPENSSL_ia32cap_P(%rip), %rbx jmp LOPENSSL_ia32cap_P_rbx3_return -.type BORINGSSL_bcm_text_hash, @object -.size BORINGSSL_bcm_text_hash, 32 -BORINGSSL_bcm_text_hash: -.byte 0xae -.byte 0x2c -.byte 0xea -.byte 0x2a -.byte 0xbd -.byte 0xa6 -.byte 0xf3 -.byte 0xec -.byte 0x97 -.byte 0x7f -.byte 0x9b -.byte 0xf6 -.byte 0x94 -.byte 0x9a -.byte 0xfc -.byte 0x83 -.byte 0x68 -.byte 0x27 -.byte 0xcb -.byte 0xa0 -.byte 0xa0 -.byte 0x9f -.byte 0x6b -.byte 0x6f -.byte 0xde -.byte 0x52 -.byte 0xcd -.byte 0xe2 -.byte 0xcd -.byte 0xff -.byte 0x31 -.byte 0x80 diff --git a/util/fipstools/delocate/testdata/x86_64-LabelRewrite/out.s b/util/fipstools/delocate/testdata/x86_64-LabelRewrite/out.s index 7cc74fb8ab..55ad1addf6 100644 --- a/util/fipstools/delocate/testdata/x86_64-LabelRewrite/out.s +++ b/util/fipstools/delocate/testdata/x86_64-LabelRewrite/out.s @@ -1,6 +1,41 @@ .text .file 1 "inserted_by_delocate.c" .loc 1 1 0 +.type BORINGSSL_bcm_text_hash, @object +.size BORINGSSL_bcm_text_hash, 32 +BORINGSSL_bcm_text_hash: +.byte 0xae +.byte 0x2c +.byte 0xea +.byte 0x2a +.byte 0xbd +.byte 0xa6 +.byte 0xf3 +.byte 0xec +.byte 0x97 +.byte 0x7f +.byte 0x9b +.byte 0xf6 +.byte 0x94 +.byte 0x9a +.byte 0xfc +.byte 0x83 +.byte 0x68 +.byte 0x27 +.byte 0xcb +.byte 0xa0 +.byte 0xa0 +.byte 0x9f +.byte 0x6b +.byte 0x6f +.byte 0xde +.byte 0x52 +.byte 0xcd +.byte 0xe2 +.byte 0xcd +.byte 0xff +.byte 0x31 +.byte 0x80 BORINGSSL_bcm_text_start: .type foo, @function .globl foo @@ -119,38 +154,3 @@ BORINGSSL_bcm_text_end: OPENSSL_ia32cap_get: leaq OPENSSL_ia32cap_P(%rip), %rax ret -.type BORINGSSL_bcm_text_hash, @object -.size BORINGSSL_bcm_text_hash, 32 -BORINGSSL_bcm_text_hash: -.byte 0xae -.byte 0x2c -.byte 0xea -.byte 0x2a -.byte 0xbd -.byte 0xa6 -.byte 0xf3 -.byte 0xec -.byte 0x97 -.byte 0x7f -.byte 0x9b -.byte 0xf6 -.byte 0x94 -.byte 0x9a -.byte 0xfc -.byte 0x83 -.byte 0x68 -.byte 0x27 -.byte 0xcb -.byte 0xa0 -.byte 0xa0 -.byte 0x9f -.byte 0x6b -.byte 0x6f -.byte 0xde -.byte 0x52 -.byte 0xcd -.byte 0xe2 -.byte 0xcd -.byte 0xff -.byte 0x31 -.byte 0x80 diff --git a/util/fipstools/delocate/testdata/x86_64-LargeMemory/out.s b/util/fipstools/delocate/testdata/x86_64-LargeMemory/out.s index c460c57023..edadaaf96b 100644 --- a/util/fipstools/delocate/testdata/x86_64-LargeMemory/out.s +++ b/util/fipstools/delocate/testdata/x86_64-LargeMemory/out.s @@ -1,6 +1,41 @@ .text .file 1 "inserted_by_delocate.c" .loc 1 1 0 +.type BORINGSSL_bcm_text_hash, @object +.size BORINGSSL_bcm_text_hash, 32 +BORINGSSL_bcm_text_hash: +.byte 0xae +.byte 0x2c +.byte 0xea +.byte 0x2a +.byte 0xbd +.byte 0xa6 +.byte 0xf3 +.byte 0xec +.byte 0x97 +.byte 0x7f +.byte 0x9b +.byte 0xf6 +.byte 0x94 +.byte 0x9a +.byte 0xfc +.byte 0x83 +.byte 0x68 +.byte 0x27 +.byte 0xcb +.byte 0xa0 +.byte 0xa0 +.byte 0x9f +.byte 0x6b +.byte 0x6f +.byte 0xde +.byte 0x52 +.byte 0xcd +.byte 0xe2 +.byte 0xcd +.byte 0xff +.byte 0x31 +.byte 0x80 BORINGSSL_bcm_text_start: .text @@ -53,38 +88,3 @@ OPENSSL_ia32cap_get: .quad h@GOT .Lboringssl_gotoff__Z1gv: .quad _Z1gv@GOTOFF -.type BORINGSSL_bcm_text_hash, @object -.size BORINGSSL_bcm_text_hash, 32 -BORINGSSL_bcm_text_hash: -.byte 0xae -.byte 0x2c -.byte 0xea -.byte 0x2a -.byte 0xbd -.byte 0xa6 -.byte 0xf3 -.byte 0xec -.byte 0x97 -.byte 0x7f -.byte 0x9b -.byte 0xf6 -.byte 0x94 -.byte 0x9a -.byte 0xfc -.byte 0x83 -.byte 0x68 -.byte 0x27 -.byte 0xcb -.byte 0xa0 -.byte 0xa0 -.byte 0x9f -.byte 0x6b -.byte 0x6f -.byte 0xde -.byte 0x52 -.byte 0xcd -.byte 0xe2 -.byte 0xcd -.byte 0xff -.byte 0x31 -.byte 0x80 diff --git a/util/fipstools/delocate/testdata/x86_64-Sections/out.s b/util/fipstools/delocate/testdata/x86_64-Sections/out.s index d107e30ebf..b93629bfc2 100644 --- a/util/fipstools/delocate/testdata/x86_64-Sections/out.s +++ b/util/fipstools/delocate/testdata/x86_64-Sections/out.s @@ -1,6 +1,41 @@ .text .file 1 "inserted_by_delocate.c" .loc 1 1 0 +.type BORINGSSL_bcm_text_hash, @object +.size BORINGSSL_bcm_text_hash, 32 +BORINGSSL_bcm_text_hash: +.byte 0xae +.byte 0x2c +.byte 0xea +.byte 0x2a +.byte 0xbd +.byte 0xa6 +.byte 0xf3 +.byte 0xec +.byte 0x97 +.byte 0x7f +.byte 0x9b +.byte 0xf6 +.byte 0x94 +.byte 0x9a +.byte 0xfc +.byte 0x83 +.byte 0x68 +.byte 0x27 +.byte 0xcb +.byte 0xa0 +.byte 0xa0 +.byte 0x9f +.byte 0x6b +.byte 0x6f +.byte 0xde +.byte 0x52 +.byte 0xcd +.byte 0xe2 +.byte 0xcd +.byte 0xff +.byte 0x31 +.byte 0x80 BORINGSSL_bcm_text_start: # .text stays in .text .text @@ -53,38 +88,3 @@ BORINGSSL_bcm_text_end: OPENSSL_ia32cap_get: leaq OPENSSL_ia32cap_P(%rip), %rax ret -.type BORINGSSL_bcm_text_hash, @object -.size BORINGSSL_bcm_text_hash, 32 -BORINGSSL_bcm_text_hash: -.byte 0xae -.byte 0x2c -.byte 0xea -.byte 0x2a -.byte 0xbd -.byte 0xa6 -.byte 0xf3 -.byte 0xec -.byte 0x97 -.byte 0x7f -.byte 0x9b -.byte 0xf6 -.byte 0x94 -.byte 0x9a -.byte 0xfc -.byte 0x83 -.byte 0x68 -.byte 0x27 -.byte 0xcb -.byte 0xa0 -.byte 0xa0 -.byte 0x9f -.byte 0x6b -.byte 0x6f -.byte 0xde -.byte 0x52 -.byte 0xcd -.byte 0xe2 -.byte 0xcd -.byte 0xff -.byte 0x31 -.byte 0x80 diff --git a/util/fipstools/delocate/testdata/x86_64-ThreeArg/out.s b/util/fipstools/delocate/testdata/x86_64-ThreeArg/out.s index 79cdbe60a5..f51994f12b 100644 --- a/util/fipstools/delocate/testdata/x86_64-ThreeArg/out.s +++ b/util/fipstools/delocate/testdata/x86_64-ThreeArg/out.s @@ -1,6 +1,41 @@ .text .file 1 "inserted_by_delocate.c" .loc 1 1 0 +.type BORINGSSL_bcm_text_hash, @object +.size BORINGSSL_bcm_text_hash, 32 +BORINGSSL_bcm_text_hash: +.byte 0xae +.byte 0x2c +.byte 0xea +.byte 0x2a +.byte 0xbd +.byte 0xa6 +.byte 0xf3 +.byte 0xec +.byte 0x97 +.byte 0x7f +.byte 0x9b +.byte 0xf6 +.byte 0x94 +.byte 0x9a +.byte 0xfc +.byte 0x83 +.byte 0x68 +.byte 0x27 +.byte 0xcb +.byte 0xa0 +.byte 0xa0 +.byte 0x9f +.byte 0x6b +.byte 0x6f +.byte 0xde +.byte 0x52 +.byte 0xcd +.byte 0xe2 +.byte 0xcd +.byte 0xff +.byte 0x31 +.byte 0x80 BORINGSSL_bcm_text_start: .type foo, @function .globl foo @@ -40,38 +75,3 @@ BORINGSSL_bcm_text_end: OPENSSL_ia32cap_get: leaq OPENSSL_ia32cap_P(%rip), %rax ret -.type BORINGSSL_bcm_text_hash, @object -.size BORINGSSL_bcm_text_hash, 32 -BORINGSSL_bcm_text_hash: -.byte 0xae -.byte 0x2c -.byte 0xea -.byte 0x2a -.byte 0xbd -.byte 0xa6 -.byte 0xf3 -.byte 0xec -.byte 0x97 -.byte 0x7f -.byte 0x9b -.byte 0xf6 -.byte 0x94 -.byte 0x9a -.byte 0xfc -.byte 0x83 -.byte 0x68 -.byte 0x27 -.byte 0xcb -.byte 0xa0 -.byte 0xa0 -.byte 0x9f -.byte 0x6b -.byte 0x6f -.byte 0xde -.byte 0x52 -.byte 0xcd -.byte 0xe2 -.byte 0xcd -.byte 0xff -.byte 0x31 -.byte 0x80