diff --git a/wolfcrypt/src/sp_x86_64.c b/wolfcrypt/src/sp_x86_64.c index c1ec7a3a0..b73db77c4 100644 --- a/wolfcrypt/src/sp_x86_64.c +++ b/wolfcrypt/src/sp_x86_64.c @@ -140,159 +140,17 @@ extern void sp_2048_sqr_avx2_16(sp_digit* r, const sp_digit* a); extern sp_digit sp_2048_add_16(sp_digit* r, const sp_digit* a, const sp_digit* b); extern sp_digit sp_2048_sub_in_place_32(sp_digit* a, const sp_digit* b); extern sp_digit sp_2048_add_32(sp_digit* r, const sp_digit* a, const sp_digit* b); -/* AND m into each word of a and store in r. - * - * r A single precision integer. - * a A single precision integer. - * m Mask to AND against each digit. - */ -static void sp_2048_mask_16(sp_digit* r, const sp_digit* a, sp_digit m) -{ -#ifdef WOLFSSL_SP_SMALL - int i; - - for (i=0; i<16; i++) { - r[i] = a[i] & m; - } -#else - int i; - - for (i = 0; i < 16; i += 8) { - r[i+0] = a[i+0] & m; - r[i+1] = a[i+1] & m; - r[i+2] = a[i+2] & m; - r[i+3] = a[i+3] & m; - r[i+4] = a[i+4] & m; - r[i+5] = a[i+5] & m; - r[i+6] = a[i+6] & m; - r[i+7] = a[i+7] & m; - } -#endif -} - -/* Multiply a and b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -SP_NOINLINE static void sp_2048_mul_32(sp_digit* r, const sp_digit* a, - const sp_digit* b) -{ - sp_digit* z0 = r; - sp_digit z1[32]; - sp_digit a1[16]; - sp_digit b1[16]; - sp_digit z2[32]; - sp_digit o, ca, cb; - - ca = sp_2048_add_16(a1, a, a + 16); - cb = sp_2048_add_16(b1, b, b + 16); - o = ca & cb; - sp_2048_mul_16(z1, a1, b1); - sp_2048_mul_16(z2, a + 16, b + 16); - sp_2048_mul_16(z0, a, b); - sp_2048_mask_16(r + 32, a1, 0 - cb); - sp_2048_mask_16(b1, b1, 0 - ca); - o += sp_2048_add_16(r + 32, r + 32, b1); - o += sp_2048_sub_in_place_32(z1, z2); - o += sp_2048_sub_in_place_32(z1, z0); - o += sp_2048_add_32(r + 16, r + 16, z1); - r[48] = o; - XMEMSET(r + 48 + 1, 0, sizeof(sp_digit) * (16 - 1)); - sp_2048_add_32(r + 32, r + 32, z2); -} +extern void sp_2048_mul_32(sp_digit* r, const sp_digit* a, const sp_digit* b); extern sp_digit sp_2048_dbl_16(sp_digit* r, const sp_digit* a); -/* Square a and put result in r. (r = a * a) - * - * r A single precision integer. - * a A single precision integer. - */ -SP_NOINLINE static void sp_2048_sqr_32(sp_digit* r, const sp_digit* a) -{ - sp_digit* z0 = r; - sp_digit z2[32]; - sp_digit z1[32]; - sp_digit a1[16]; - sp_digit o; - - o = sp_2048_add_16(a1, a, a + 16); - sp_2048_sqr_16(z1, a1); - sp_2048_sqr_16(z2, a + 16); - sp_2048_sqr_16(z0, a); - sp_2048_mask_16(r + 32, a1, 0 - o); - o += sp_2048_dbl_16(r + 32, r + 32); - o += sp_2048_sub_in_place_32(z1, z2); - o += sp_2048_sub_in_place_32(z1, z0); - o += sp_2048_add_32(r + 16, r + 16, z1); - r[48] = o; - XMEMSET(r + 48 + 1, 0, sizeof(sp_digit) * (16 - 1)); - sp_2048_add_32(r + 32, r + 32, z2); -} +extern void sp_2048_sqr_32(sp_digit* r, const sp_digit* a); #ifdef HAVE_INTEL_AVX2 -/* Multiply a and b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -SP_NOINLINE static void sp_2048_mul_avx2_32(sp_digit* r, const sp_digit* a, - const sp_digit* b) -{ - sp_digit* z0 = r; - sp_digit z1[32]; - sp_digit a1[16]; - sp_digit b1[16]; - sp_digit z2[32]; - sp_digit o, ca, cb; - - ca = sp_2048_add_16(a1, a, a + 16); - cb = sp_2048_add_16(b1, b, b + 16); - o = ca & cb; - sp_2048_mul_avx2_16(z1, a1, b1); - sp_2048_mul_avx2_16(z2, a + 16, b + 16); - sp_2048_mul_avx2_16(z0, a, b); - sp_2048_mask_16(r + 32, a1, 0 - cb); - sp_2048_mask_16(b1, b1, 0 - ca); - o += sp_2048_add_16(r + 32, r + 32, b1); - o += sp_2048_sub_in_place_32(z1, z2); - o += sp_2048_sub_in_place_32(z1, z0); - o += sp_2048_add_32(r + 16, r + 16, z1); - r[48] = o; - XMEMSET(r + 48 + 1, 0, sizeof(sp_digit) * (16 - 1)); - sp_2048_add_32(r + 32, r + 32, z2); -} +extern void sp_2048_mul_avx2_32(sp_digit* r, const sp_digit* a, const sp_digit* b); #endif /* HAVE_INTEL_AVX2 */ #ifdef HAVE_INTEL_AVX2 -/* Square a and put result in r. (r = a * a) - * - * r A single precision integer. - * a A single precision integer. - */ -SP_NOINLINE static void sp_2048_sqr_avx2_32(sp_digit* r, const sp_digit* a) -{ - sp_digit* z0 = r; - sp_digit z2[32]; - sp_digit z1[32]; - sp_digit a1[16]; - sp_digit o; - - o = sp_2048_add_16(a1, a, a + 16); - sp_2048_sqr_avx2_16(z1, a1); - sp_2048_sqr_avx2_16(z2, a + 16); - sp_2048_sqr_avx2_16(z0, a); - sp_2048_mask_16(r + 32, a1, 0 - o); - o += sp_2048_dbl_16(r + 32, r + 32); - o += sp_2048_sub_in_place_32(z1, z2); - o += sp_2048_sub_in_place_32(z1, z0); - o += sp_2048_add_32(r + 16, r + 16, z1); - r[48] = o; - XMEMSET(r + 48 + 1, 0, sizeof(sp_digit) * (16 - 1)); - sp_2048_add_32(r + 32, r + 32, z2); -} +extern void sp_2048_sqr_avx2_32(sp_digit* r, const sp_digit* a); #endif /* HAVE_INTEL_AVX2 */ #if (defined(WOLFSSL_HAVE_SP_RSA) || defined(WOLFSSL_HAVE_SP_DH)) && !defined(WOLFSSL_RSA_PUBLIC_ONLY) @@ -389,6 +247,36 @@ static WC_INLINE sp_digit div_2048_word_16(sp_digit d1, sp_digit d0, ); return r; } +/* AND m into each word of a and store in r. + * + * r A single precision integer. + * a A single precision integer. + * m Mask to AND against each digit. + */ +static void sp_2048_mask_16(sp_digit* r, const sp_digit* a, sp_digit m) +{ +#ifdef WOLFSSL_SP_SMALL + int i; + + for (i=0; i<16; i++) { + r[i] = a[i] & m; + } +#else + int i; + + for (i = 0; i < 16; i += 8) { + r[i+0] = a[i+0] & m; + r[i+1] = a[i+1] & m; + r[i+2] = a[i+2] & m; + r[i+3] = a[i+3] & m; + r[i+4] = a[i+4] & m; + r[i+5] = a[i+5] & m; + r[i+6] = a[i+6] & m; + r[i+7] = a[i+7] & m; + } +#endif +} + extern int64_t sp_2048_cmp_16(const sp_digit* a, const sp_digit* b); /* Divide d in a and put remainder into r (m*d + r = a) * m is not calculated as it is not needed at this time. @@ -413,6 +301,13 @@ static WC_INLINE int sp_2048_div_16(const sp_digit* a, const sp_digit* d, sp_dig div = d[15]; XMEMCPY(t1, a, sizeof(*t1) * 2 * 16); + r1 = sp_2048_cmp_16(&t1[16], d) >= 0; +#ifdef HAVE_INTEL_AVX2 + if (IS_INTEL_BMI2(cpuid_flags) && IS_INTEL_ADX(cpuid_flags)) + sp_2048_cond_sub_avx2_16(&t1[16], &t1[16], d, (sp_digit)0 - r1); + else +#endif + sp_2048_cond_sub_16(&t1[16], &t1[16], d, (sp_digit)0 - r1); for (i=15; i>=0; i--) { r1 = div_2048_word_16(t1[16 + i], t1[16 + i - 1], div); @@ -547,20 +442,31 @@ static int sp_2048_mod_exp_16(sp_digit* r, const sp_digit* a, const sp_digit* e, i = (bits - 1) / 64; n = e[i--]; c = bits & 63; - if (c == 0) + if (c == 0) { c = 64; - c -= bits % 5; + } + if ((bits % 5) == 0) { + c -= 5; + } + else { + c -= bits % 5; + } y = (int)(n >> c); n <<= 64 - c; XMEMCPY(r, t[y], sizeof(sp_digit) * 16); for (; i>=0 || c>=5; ) { - if (c == 0) { + if (c >= 5) { + y = (n >> 59) & 0x1f; + n <<= 5; + c -= 5; + } + else if (c == 0) { n = e[i--]; y = (int)(n >> 59); n <<= 5; c = 59; } - else if (c < 5) { + else { y = (int)(n >> 59); n = e[i--]; c = 5 - c; @@ -568,19 +474,20 @@ static int sp_2048_mod_exp_16(sp_digit* r, const sp_digit* a, const sp_digit* e, n <<= c; c = 64 - c; } - else { - y = (n >> 59) & 0x1f; - n <<= 5; - c -= 5; - } - sp_2048_mont_sqr_16(rt, r, m, mp); - sp_2048_mont_sqr_16(r, rt, m, mp); - sp_2048_mont_sqr_16(rt, r, m, mp); - sp_2048_mont_sqr_16(r, rt, m, mp); - sp_2048_mont_sqr_16(r, r, m, mp); + sp_2048_sqr_16(rt, r); + sp_2048_mont_reduce_16(rt, m, mp); + sp_2048_sqr_16(r, rt); + sp_2048_mont_reduce_16(r, m, mp); + sp_2048_sqr_16(rt, r); + sp_2048_mont_reduce_16(rt, m, mp); + sp_2048_sqr_16(r, rt); + sp_2048_mont_reduce_16(r, m, mp); + sp_2048_sqr_16(rt, r); + sp_2048_mont_reduce_16(rt, m, mp); - sp_2048_mont_mul_16(r, r, t[y], m, mp); + sp_2048_mul_16(r, rt, t[y]); + sp_2048_mont_reduce_16(r, m, mp); } XMEMSET(&r[16], 0, sizeof(sp_digit) * 16); @@ -728,20 +635,31 @@ static int sp_2048_mod_exp_avx2_16(sp_digit* r, const sp_digit* a, const sp_digi i = (bits - 1) / 64; n = e[i--]; c = bits & 63; - if (c == 0) + if (c == 0) { c = 64; - c -= bits % 5; + } + if ((bits % 5) == 0) { + c -= 5; + } + else { + c -= bits % 5; + } y = (int)(n >> c); n <<= 64 - c; XMEMCPY(r, t[y], sizeof(sp_digit) * 16); for (; i>=0 || c>=5; ) { - if (c == 0) { + if (c >= 5) { + y = (n >> 59) & 0x1f; + n <<= 5; + c -= 5; + } + else if (c == 0) { n = e[i--]; y = (int)(n >> 59); n <<= 5; c = 59; } - else if (c < 5) { + else { y = (int)(n >> 59); n = e[i--]; c = 5 - c; @@ -749,19 +667,20 @@ static int sp_2048_mod_exp_avx2_16(sp_digit* r, const sp_digit* a, const sp_digi n <<= c; c = 64 - c; } - else { - y = (n >> 59) & 0x1f; - n <<= 5; - c -= 5; - } - sp_2048_mont_sqr_avx2_16(rt, r, m, mp); - sp_2048_mont_sqr_avx2_16(r, rt, m, mp); - sp_2048_mont_sqr_avx2_16(rt, r, m, mp); - sp_2048_mont_sqr_avx2_16(r, rt, m, mp); - sp_2048_mont_sqr_avx2_16(r, r, m, mp); + sp_2048_sqr_avx2_16(rt, r); + sp_2048_mont_reduce_avx2_16(rt, m, mp); + sp_2048_sqr_avx2_16(r, rt); + sp_2048_mont_reduce_avx2_16(r, m, mp); + sp_2048_sqr_avx2_16(rt, r); + sp_2048_mont_reduce_avx2_16(rt, m, mp); + sp_2048_sqr_avx2_16(r, rt); + sp_2048_mont_reduce_avx2_16(r, m, mp); + sp_2048_sqr_avx2_16(rt, r); + sp_2048_mont_reduce_avx2_16(rt, m, mp); - sp_2048_mont_mul_avx2_16(r, r, t[y], m, mp); + sp_2048_mul_avx2_16(r, rt, t[y]); + sp_2048_mont_reduce_avx2_16(r, m, mp); } XMEMSET(&r[16], 0, sizeof(sp_digit) * 16); @@ -906,6 +825,13 @@ static WC_INLINE int sp_2048_div_32(const sp_digit* a, const sp_digit* d, sp_dig div = d[31]; XMEMCPY(t1, a, sizeof(*t1) * 2 * 32); + r1 = sp_2048_cmp_32(&t1[32], d) >= 0; +#ifdef HAVE_INTEL_AVX2 + if (IS_INTEL_BMI2(cpuid_flags) && IS_INTEL_ADX(cpuid_flags)) + sp_2048_cond_sub_avx2_32(&t1[32], &t1[32], d, (sp_digit)0 - r1); + else +#endif + sp_2048_cond_sub_32(&t1[32], &t1[32], d, (sp_digit)0 - r1); for (i=31; i>=0; i--) { r1 = div_2048_word_32(t1[32 + i], t1[32 + i - 1], div); @@ -971,6 +897,13 @@ static WC_INLINE int sp_2048_div_32_cond(const sp_digit* a, const sp_digit* d, s div = d[31]; XMEMCPY(t1, a, sizeof(*t1) * 2 * 32); + for (i = 31; i > 0; i--) { + if (t1[i + 32] != d[i]) + break; + } + if (t1[i + 32] >= d[i]) { + sp_2048_sub_in_place_32(&t1[32], d); + } for (i=31; i>=0; i--) { r1 = div_2048_word_32(t1[32 + i], t1[32 + i - 1], div); @@ -1110,20 +1043,31 @@ static int sp_2048_mod_exp_32(sp_digit* r, const sp_digit* a, const sp_digit* e, i = (bits - 1) / 64; n = e[i--]; c = bits & 63; - if (c == 0) + if (c == 0) { c = 64; - c -= bits % 5; + } + if ((bits % 5) == 0) { + c -= 5; + } + else { + c -= bits % 5; + } y = (int)(n >> c); n <<= 64 - c; XMEMCPY(r, t[y], sizeof(sp_digit) * 32); for (; i>=0 || c>=5; ) { - if (c == 0) { + if (c >= 5) { + y = (n >> 59) & 0x1f; + n <<= 5; + c -= 5; + } + else if (c == 0) { n = e[i--]; y = (int)(n >> 59); n <<= 5; c = 59; } - else if (c < 5) { + else { y = (int)(n >> 59); n = e[i--]; c = 5 - c; @@ -1131,19 +1075,20 @@ static int sp_2048_mod_exp_32(sp_digit* r, const sp_digit* a, const sp_digit* e, n <<= c; c = 64 - c; } - else { - y = (n >> 59) & 0x1f; - n <<= 5; - c -= 5; - } - sp_2048_mont_sqr_32(rt, r, m, mp); - sp_2048_mont_sqr_32(r, rt, m, mp); - sp_2048_mont_sqr_32(rt, r, m, mp); - sp_2048_mont_sqr_32(r, rt, m, mp); - sp_2048_mont_sqr_32(r, r, m, mp); + sp_2048_sqr_32(rt, r); + sp_2048_mont_reduce_32(rt, m, mp); + sp_2048_sqr_32(r, rt); + sp_2048_mont_reduce_32(r, m, mp); + sp_2048_sqr_32(rt, r); + sp_2048_mont_reduce_32(rt, m, mp); + sp_2048_sqr_32(r, rt); + sp_2048_mont_reduce_32(r, m, mp); + sp_2048_sqr_32(rt, r); + sp_2048_mont_reduce_32(rt, m, mp); - sp_2048_mont_mul_32(r, r, t[y], m, mp); + sp_2048_mul_32(r, rt, t[y]); + sp_2048_mont_reduce_32(r, m, mp); } XMEMSET(&r[32], 0, sizeof(sp_digit) * 32); @@ -1293,20 +1238,31 @@ static int sp_2048_mod_exp_avx2_32(sp_digit* r, const sp_digit* a, const sp_digi i = (bits - 1) / 64; n = e[i--]; c = bits & 63; - if (c == 0) + if (c == 0) { c = 64; - c -= bits % 5; + } + if ((bits % 5) == 0) { + c -= 5; + } + else { + c -= bits % 5; + } y = (int)(n >> c); n <<= 64 - c; XMEMCPY(r, t[y], sizeof(sp_digit) * 32); for (; i>=0 || c>=5; ) { - if (c == 0) { + if (c >= 5) { + y = (n >> 59) & 0x1f; + n <<= 5; + c -= 5; + } + else if (c == 0) { n = e[i--]; y = (int)(n >> 59); n <<= 5; c = 59; } - else if (c < 5) { + else { y = (int)(n >> 59); n = e[i--]; c = 5 - c; @@ -1314,19 +1270,20 @@ static int sp_2048_mod_exp_avx2_32(sp_digit* r, const sp_digit* a, const sp_digi n <<= c; c = 64 - c; } - else { - y = (n >> 59) & 0x1f; - n <<= 5; - c -= 5; - } - sp_2048_mont_sqr_avx2_32(rt, r, m, mp); - sp_2048_mont_sqr_avx2_32(r, rt, m, mp); - sp_2048_mont_sqr_avx2_32(rt, r, m, mp); - sp_2048_mont_sqr_avx2_32(r, rt, m, mp); - sp_2048_mont_sqr_avx2_32(r, r, m, mp); + sp_2048_sqr_avx2_32(rt, r); + sp_2048_mont_reduce_avx2_32(rt, m, mp); + sp_2048_sqr_avx2_32(r, rt); + sp_2048_mont_reduce_avx2_32(r, m, mp); + sp_2048_sqr_avx2_32(rt, r); + sp_2048_mont_reduce_avx2_32(rt, m, mp); + sp_2048_sqr_avx2_32(r, rt); + sp_2048_mont_reduce_avx2_32(r, m, mp); + sp_2048_sqr_avx2_32(rt, r); + sp_2048_mont_reduce_avx2_32(rt, m, mp); - sp_2048_mont_mul_avx2_32(r, r, t[y], m, mp); + sp_2048_mul_avx2_32(r, rt, t[y]); + sp_2048_mont_reduce_avx2_32(r, m, mp); } XMEMSET(&r[32], 0, sizeof(sp_digit) * 32); @@ -1828,9 +1785,15 @@ static int sp_2048_mod_exp_2_avx2_32(sp_digit* r, const sp_digit* e, int bits, i = (bits - 1) / 64; n = e[i--]; c = bits & 63; - if (c == 0) + if (c == 0) { c = 64; - c -= bits % 6; + } + if ((bits % 6) == 0) { + c -= 6; + } + else { + c -= bits % 6; + } y = (int)(n >> c); n <<= 64 - c; sp_2048_lshift_32(r, norm, y); @@ -1934,9 +1897,15 @@ static int sp_2048_mod_exp_2_32(sp_digit* r, const sp_digit* e, int bits, i = (bits - 1) / 64; n = e[i--]; c = bits & 63; - if (c == 0) + if (c == 0) { c = 64; - c -= bits % 6; + } + if ((bits % 6) == 0) { + c -= 6; + } + else { + c -= bits % 6; + } y = (int)(n >> c); n <<= 64 - c; sp_2048_lshift_32(r, norm, y); @@ -2196,166 +2165,39 @@ static void sp_3072_from_mp(sp_digit* r, int size, const mp_int* a) } extern void sp_3072_to_bin(sp_digit* r, byte* a); -extern void sp_3072_mul_24(sp_digit* r, const sp_digit* a, const sp_digit* b); -extern void sp_3072_sqr_24(sp_digit* r, const sp_digit* a); -extern void sp_3072_mul_avx2_24(sp_digit* r, const sp_digit* a, const sp_digit* b); -extern void sp_3072_sqr_avx2_24(sp_digit* r, const sp_digit* a); +extern void sp_3072_mul_12(sp_digit* r, const sp_digit* a, const sp_digit* b); +extern void sp_3072_sqr_12(sp_digit* r, const sp_digit* a); +extern void sp_3072_mul_avx2_12(sp_digit* r, const sp_digit* a, const sp_digit* b); +extern void sp_3072_sqr_avx2_12(sp_digit* r, const sp_digit* a); +extern sp_digit sp_3072_add_12(sp_digit* r, const sp_digit* a, const sp_digit* b); +extern sp_digit sp_3072_sub_in_place_24(sp_digit* a, const sp_digit* b); extern sp_digit sp_3072_add_24(sp_digit* r, const sp_digit* a, const sp_digit* b); -extern sp_digit sp_3072_sub_in_place_48(sp_digit* a, const sp_digit* b); -extern sp_digit sp_3072_add_48(sp_digit* r, const sp_digit* a, const sp_digit* b); -/* AND m into each word of a and store in r. - * - * r A single precision integer. - * a A single precision integer. - * m Mask to AND against each digit. - */ -static void sp_3072_mask_24(sp_digit* r, const sp_digit* a, sp_digit m) -{ -#ifdef WOLFSSL_SP_SMALL - int i; +extern void sp_3072_mul_24(sp_digit* r, const sp_digit* a, const sp_digit* b); - for (i=0; i<24; i++) { - r[i] = a[i] & m; - } -#else - int i; - - for (i = 0; i < 24; i += 8) { - r[i+0] = a[i+0] & m; - r[i+1] = a[i+1] & m; - r[i+2] = a[i+2] & m; - r[i+3] = a[i+3] & m; - r[i+4] = a[i+4] & m; - r[i+5] = a[i+5] & m; - r[i+6] = a[i+6] & m; - r[i+7] = a[i+7] & m; - } -#endif -} - -/* Multiply a and b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -SP_NOINLINE static void sp_3072_mul_48(sp_digit* r, const sp_digit* a, - const sp_digit* b) -{ - sp_digit* z0 = r; - sp_digit z1[48]; - sp_digit a1[24]; - sp_digit b1[24]; - sp_digit z2[48]; - sp_digit o, ca, cb; - - ca = sp_3072_add_24(a1, a, a + 24); - cb = sp_3072_add_24(b1, b, b + 24); - o = ca & cb; - sp_3072_mul_24(z1, a1, b1); - sp_3072_mul_24(z2, a + 24, b + 24); - sp_3072_mul_24(z0, a, b); - sp_3072_mask_24(r + 48, a1, 0 - cb); - sp_3072_mask_24(b1, b1, 0 - ca); - o += sp_3072_add_24(r + 48, r + 48, b1); - o += sp_3072_sub_in_place_48(z1, z2); - o += sp_3072_sub_in_place_48(z1, z0); - o += sp_3072_add_48(r + 24, r + 24, z1); - r[72] = o; - XMEMSET(r + 72 + 1, 0, sizeof(sp_digit) * (24 - 1)); - sp_3072_add_48(r + 48, r + 48, z2); -} - -extern sp_digit sp_3072_dbl_24(sp_digit* r, const sp_digit* a); -/* Square a and put result in r. (r = a * a) - * - * r A single precision integer. - * a A single precision integer. - */ -SP_NOINLINE static void sp_3072_sqr_48(sp_digit* r, const sp_digit* a) -{ - sp_digit* z0 = r; - sp_digit z2[48]; - sp_digit z1[48]; - sp_digit a1[24]; - sp_digit o; - - o = sp_3072_add_24(a1, a, a + 24); - sp_3072_sqr_24(z1, a1); - sp_3072_sqr_24(z2, a + 24); - sp_3072_sqr_24(z0, a); - sp_3072_mask_24(r + 48, a1, 0 - o); - o += sp_3072_dbl_24(r + 48, r + 48); - o += sp_3072_sub_in_place_48(z1, z2); - o += sp_3072_sub_in_place_48(z1, z0); - o += sp_3072_add_48(r + 24, r + 24, z1); - r[72] = o; - XMEMSET(r + 72 + 1, 0, sizeof(sp_digit) * (24 - 1)); - sp_3072_add_48(r + 48, r + 48, z2); -} +extern sp_digit sp_3072_dbl_12(sp_digit* r, const sp_digit* a); +extern void sp_3072_sqr_24(sp_digit* r, const sp_digit* a); #ifdef HAVE_INTEL_AVX2 -/* Multiply a and b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -SP_NOINLINE static void sp_3072_mul_avx2_48(sp_digit* r, const sp_digit* a, - const sp_digit* b) -{ - sp_digit* z0 = r; - sp_digit z1[48]; - sp_digit a1[24]; - sp_digit b1[24]; - sp_digit z2[48]; - sp_digit o, ca, cb; - - ca = sp_3072_add_24(a1, a, a + 24); - cb = sp_3072_add_24(b1, b, b + 24); - o = ca & cb; - sp_3072_mul_avx2_24(z1, a1, b1); - sp_3072_mul_avx2_24(z2, a + 24, b + 24); - sp_3072_mul_avx2_24(z0, a, b); - sp_3072_mask_24(r + 48, a1, 0 - cb); - sp_3072_mask_24(b1, b1, 0 - ca); - o += sp_3072_add_24(r + 48, r + 48, b1); - o += sp_3072_sub_in_place_48(z1, z2); - o += sp_3072_sub_in_place_48(z1, z0); - o += sp_3072_add_48(r + 24, r + 24, z1); - r[72] = o; - XMEMSET(r + 72 + 1, 0, sizeof(sp_digit) * (24 - 1)); - sp_3072_add_48(r + 48, r + 48, z2); -} +extern void sp_3072_mul_avx2_24(sp_digit* r, const sp_digit* a, const sp_digit* b); #endif /* HAVE_INTEL_AVX2 */ #ifdef HAVE_INTEL_AVX2 -/* Square a and put result in r. (r = a * a) - * - * r A single precision integer. - * a A single precision integer. - */ -SP_NOINLINE static void sp_3072_sqr_avx2_48(sp_digit* r, const sp_digit* a) -{ - sp_digit* z0 = r; - sp_digit z2[48]; - sp_digit z1[48]; - sp_digit a1[24]; - sp_digit o; +extern void sp_3072_sqr_avx2_24(sp_digit* r, const sp_digit* a); +#endif /* HAVE_INTEL_AVX2 */ - o = sp_3072_add_24(a1, a, a + 24); - sp_3072_sqr_avx2_24(z1, a1); - sp_3072_sqr_avx2_24(z2, a + 24); - sp_3072_sqr_avx2_24(z0, a); - sp_3072_mask_24(r + 48, a1, 0 - o); - o += sp_3072_dbl_24(r + 48, r + 48); - o += sp_3072_sub_in_place_48(z1, z2); - o += sp_3072_sub_in_place_48(z1, z0); - o += sp_3072_add_48(r + 24, r + 24, z1); - r[72] = o; - XMEMSET(r + 72 + 1, 0, sizeof(sp_digit) * (24 - 1)); - sp_3072_add_48(r + 48, r + 48, z2); -} +extern sp_digit sp_3072_sub_in_place_48(sp_digit* a, const sp_digit* b); +extern sp_digit sp_3072_add_48(sp_digit* r, const sp_digit* a, const sp_digit* b); +extern void sp_3072_mul_48(sp_digit* r, const sp_digit* a, const sp_digit* b); + +extern sp_digit sp_3072_dbl_24(sp_digit* r, const sp_digit* a); +extern void sp_3072_sqr_48(sp_digit* r, const sp_digit* a); + +#ifdef HAVE_INTEL_AVX2 +extern void sp_3072_mul_avx2_48(sp_digit* r, const sp_digit* a, const sp_digit* b); +#endif /* HAVE_INTEL_AVX2 */ + +#ifdef HAVE_INTEL_AVX2 +extern void sp_3072_sqr_avx2_48(sp_digit* r, const sp_digit* a); #endif /* HAVE_INTEL_AVX2 */ #if (defined(WOLFSSL_HAVE_SP_RSA) || defined(WOLFSSL_HAVE_SP_DH)) && !defined(WOLFSSL_RSA_PUBLIC_ONLY) @@ -2383,7 +2225,6 @@ static void sp_3072_mont_setup(const sp_digit* a, sp_digit* rho) extern void sp_3072_mul_d_48(sp_digit* r, const sp_digit* a, sp_digit b); #if (defined(WOLFSSL_HAVE_SP_RSA) || defined(WOLFSSL_HAVE_SP_DH)) && !defined(WOLFSSL_RSA_PUBLIC_ONLY) -extern sp_digit sp_3072_sub_in_place_24(sp_digit* a, const sp_digit* b); /* r = 2^n mod m where n is the number of bits to reduce by. * Given m must be 3072 bits, just need to subtract. * @@ -2452,6 +2293,36 @@ static WC_INLINE sp_digit div_3072_word_24(sp_digit d1, sp_digit d0, ); return r; } +/* AND m into each word of a and store in r. + * + * r A single precision integer. + * a A single precision integer. + * m Mask to AND against each digit. + */ +static void sp_3072_mask_24(sp_digit* r, const sp_digit* a, sp_digit m) +{ +#ifdef WOLFSSL_SP_SMALL + int i; + + for (i=0; i<24; i++) { + r[i] = a[i] & m; + } +#else + int i; + + for (i = 0; i < 24; i += 8) { + r[i+0] = a[i+0] & m; + r[i+1] = a[i+1] & m; + r[i+2] = a[i+2] & m; + r[i+3] = a[i+3] & m; + r[i+4] = a[i+4] & m; + r[i+5] = a[i+5] & m; + r[i+6] = a[i+6] & m; + r[i+7] = a[i+7] & m; + } +#endif +} + extern int64_t sp_3072_cmp_24(const sp_digit* a, const sp_digit* b); /* Divide d in a and put remainder into r (m*d + r = a) * m is not calculated as it is not needed at this time. @@ -2476,6 +2347,13 @@ static WC_INLINE int sp_3072_div_24(const sp_digit* a, const sp_digit* d, sp_dig div = d[23]; XMEMCPY(t1, a, sizeof(*t1) * 2 * 24); + r1 = sp_3072_cmp_24(&t1[24], d) >= 0; +#ifdef HAVE_INTEL_AVX2 + if (IS_INTEL_BMI2(cpuid_flags) && IS_INTEL_ADX(cpuid_flags)) + sp_3072_cond_sub_avx2_24(&t1[24], &t1[24], d, (sp_digit)0 - r1); + else +#endif + sp_3072_cond_sub_24(&t1[24], &t1[24], d, (sp_digit)0 - r1); for (i=23; i>=0; i--) { r1 = div_3072_word_24(t1[24 + i], t1[24 + i - 1], div); @@ -2610,20 +2488,31 @@ static int sp_3072_mod_exp_24(sp_digit* r, const sp_digit* a, const sp_digit* e, i = (bits - 1) / 64; n = e[i--]; c = bits & 63; - if (c == 0) + if (c == 0) { c = 64; - c -= bits % 5; + } + if ((bits % 5) == 0) { + c -= 5; + } + else { + c -= bits % 5; + } y = (int)(n >> c); n <<= 64 - c; XMEMCPY(r, t[y], sizeof(sp_digit) * 24); for (; i>=0 || c>=5; ) { - if (c == 0) { + if (c >= 5) { + y = (n >> 59) & 0x1f; + n <<= 5; + c -= 5; + } + else if (c == 0) { n = e[i--]; y = (int)(n >> 59); n <<= 5; c = 59; } - else if (c < 5) { + else { y = (int)(n >> 59); n = e[i--]; c = 5 - c; @@ -2631,19 +2520,20 @@ static int sp_3072_mod_exp_24(sp_digit* r, const sp_digit* a, const sp_digit* e, n <<= c; c = 64 - c; } - else { - y = (n >> 59) & 0x1f; - n <<= 5; - c -= 5; - } - sp_3072_mont_sqr_24(rt, r, m, mp); - sp_3072_mont_sqr_24(r, rt, m, mp); - sp_3072_mont_sqr_24(rt, r, m, mp); - sp_3072_mont_sqr_24(r, rt, m, mp); - sp_3072_mont_sqr_24(r, r, m, mp); + sp_3072_sqr_24(rt, r); + sp_3072_mont_reduce_24(rt, m, mp); + sp_3072_sqr_24(r, rt); + sp_3072_mont_reduce_24(r, m, mp); + sp_3072_sqr_24(rt, r); + sp_3072_mont_reduce_24(rt, m, mp); + sp_3072_sqr_24(r, rt); + sp_3072_mont_reduce_24(r, m, mp); + sp_3072_sqr_24(rt, r); + sp_3072_mont_reduce_24(rt, m, mp); - sp_3072_mont_mul_24(r, r, t[y], m, mp); + sp_3072_mul_24(r, rt, t[y]); + sp_3072_mont_reduce_24(r, m, mp); } XMEMSET(&r[24], 0, sizeof(sp_digit) * 24); @@ -2791,20 +2681,31 @@ static int sp_3072_mod_exp_avx2_24(sp_digit* r, const sp_digit* a, const sp_digi i = (bits - 1) / 64; n = e[i--]; c = bits & 63; - if (c == 0) + if (c == 0) { c = 64; - c -= bits % 5; + } + if ((bits % 5) == 0) { + c -= 5; + } + else { + c -= bits % 5; + } y = (int)(n >> c); n <<= 64 - c; XMEMCPY(r, t[y], sizeof(sp_digit) * 24); for (; i>=0 || c>=5; ) { - if (c == 0) { + if (c >= 5) { + y = (n >> 59) & 0x1f; + n <<= 5; + c -= 5; + } + else if (c == 0) { n = e[i--]; y = (int)(n >> 59); n <<= 5; c = 59; } - else if (c < 5) { + else { y = (int)(n >> 59); n = e[i--]; c = 5 - c; @@ -2812,19 +2713,20 @@ static int sp_3072_mod_exp_avx2_24(sp_digit* r, const sp_digit* a, const sp_digi n <<= c; c = 64 - c; } - else { - y = (n >> 59) & 0x1f; - n <<= 5; - c -= 5; - } - sp_3072_mont_sqr_avx2_24(rt, r, m, mp); - sp_3072_mont_sqr_avx2_24(r, rt, m, mp); - sp_3072_mont_sqr_avx2_24(rt, r, m, mp); - sp_3072_mont_sqr_avx2_24(r, rt, m, mp); - sp_3072_mont_sqr_avx2_24(r, r, m, mp); + sp_3072_sqr_avx2_24(rt, r); + sp_3072_mont_reduce_avx2_24(rt, m, mp); + sp_3072_sqr_avx2_24(r, rt); + sp_3072_mont_reduce_avx2_24(r, m, mp); + sp_3072_sqr_avx2_24(rt, r); + sp_3072_mont_reduce_avx2_24(rt, m, mp); + sp_3072_sqr_avx2_24(r, rt); + sp_3072_mont_reduce_avx2_24(r, m, mp); + sp_3072_sqr_avx2_24(rt, r); + sp_3072_mont_reduce_avx2_24(rt, m, mp); - sp_3072_mont_mul_avx2_24(r, r, t[y], m, mp); + sp_3072_mul_avx2_24(r, rt, t[y]); + sp_3072_mont_reduce_avx2_24(r, m, mp); } XMEMSET(&r[24], 0, sizeof(sp_digit) * 24); @@ -2969,6 +2871,13 @@ static WC_INLINE int sp_3072_div_48(const sp_digit* a, const sp_digit* d, sp_dig div = d[47]; XMEMCPY(t1, a, sizeof(*t1) * 2 * 48); + r1 = sp_3072_cmp_48(&t1[48], d) >= 0; +#ifdef HAVE_INTEL_AVX2 + if (IS_INTEL_BMI2(cpuid_flags) && IS_INTEL_ADX(cpuid_flags)) + sp_3072_cond_sub_avx2_48(&t1[48], &t1[48], d, (sp_digit)0 - r1); + else +#endif + sp_3072_cond_sub_48(&t1[48], &t1[48], d, (sp_digit)0 - r1); for (i=47; i>=0; i--) { r1 = div_3072_word_48(t1[48 + i], t1[48 + i - 1], div); @@ -3034,6 +2943,13 @@ static WC_INLINE int sp_3072_div_48_cond(const sp_digit* a, const sp_digit* d, s div = d[47]; XMEMCPY(t1, a, sizeof(*t1) * 2 * 48); + for (i = 47; i > 0; i--) { + if (t1[i + 48] != d[i]) + break; + } + if (t1[i + 48] >= d[i]) { + sp_3072_sub_in_place_48(&t1[48], d); + } for (i=47; i>=0; i--) { r1 = div_3072_word_48(t1[48 + i], t1[48 + i - 1], div); @@ -3173,20 +3089,31 @@ static int sp_3072_mod_exp_48(sp_digit* r, const sp_digit* a, const sp_digit* e, i = (bits - 1) / 64; n = e[i--]; c = bits & 63; - if (c == 0) + if (c == 0) { c = 64; - c -= bits % 5; + } + if ((bits % 5) == 0) { + c -= 5; + } + else { + c -= bits % 5; + } y = (int)(n >> c); n <<= 64 - c; XMEMCPY(r, t[y], sizeof(sp_digit) * 48); for (; i>=0 || c>=5; ) { - if (c == 0) { + if (c >= 5) { + y = (n >> 59) & 0x1f; + n <<= 5; + c -= 5; + } + else if (c == 0) { n = e[i--]; y = (int)(n >> 59); n <<= 5; c = 59; } - else if (c < 5) { + else { y = (int)(n >> 59); n = e[i--]; c = 5 - c; @@ -3194,19 +3121,20 @@ static int sp_3072_mod_exp_48(sp_digit* r, const sp_digit* a, const sp_digit* e, n <<= c; c = 64 - c; } - else { - y = (n >> 59) & 0x1f; - n <<= 5; - c -= 5; - } - sp_3072_mont_sqr_48(rt, r, m, mp); - sp_3072_mont_sqr_48(r, rt, m, mp); - sp_3072_mont_sqr_48(rt, r, m, mp); - sp_3072_mont_sqr_48(r, rt, m, mp); - sp_3072_mont_sqr_48(r, r, m, mp); + sp_3072_sqr_48(rt, r); + sp_3072_mont_reduce_48(rt, m, mp); + sp_3072_sqr_48(r, rt); + sp_3072_mont_reduce_48(r, m, mp); + sp_3072_sqr_48(rt, r); + sp_3072_mont_reduce_48(rt, m, mp); + sp_3072_sqr_48(r, rt); + sp_3072_mont_reduce_48(r, m, mp); + sp_3072_sqr_48(rt, r); + sp_3072_mont_reduce_48(rt, m, mp); - sp_3072_mont_mul_48(r, r, t[y], m, mp); + sp_3072_mul_48(r, rt, t[y]); + sp_3072_mont_reduce_48(r, m, mp); } XMEMSET(&r[48], 0, sizeof(sp_digit) * 48); @@ -3356,20 +3284,31 @@ static int sp_3072_mod_exp_avx2_48(sp_digit* r, const sp_digit* a, const sp_digi i = (bits - 1) / 64; n = e[i--]; c = bits & 63; - if (c == 0) + if (c == 0) { c = 64; - c -= bits % 5; + } + if ((bits % 5) == 0) { + c -= 5; + } + else { + c -= bits % 5; + } y = (int)(n >> c); n <<= 64 - c; XMEMCPY(r, t[y], sizeof(sp_digit) * 48); for (; i>=0 || c>=5; ) { - if (c == 0) { + if (c >= 5) { + y = (n >> 59) & 0x1f; + n <<= 5; + c -= 5; + } + else if (c == 0) { n = e[i--]; y = (int)(n >> 59); n <<= 5; c = 59; } - else if (c < 5) { + else { y = (int)(n >> 59); n = e[i--]; c = 5 - c; @@ -3377,19 +3316,20 @@ static int sp_3072_mod_exp_avx2_48(sp_digit* r, const sp_digit* a, const sp_digi n <<= c; c = 64 - c; } - else { - y = (n >> 59) & 0x1f; - n <<= 5; - c -= 5; - } - sp_3072_mont_sqr_avx2_48(rt, r, m, mp); - sp_3072_mont_sqr_avx2_48(r, rt, m, mp); - sp_3072_mont_sqr_avx2_48(rt, r, m, mp); - sp_3072_mont_sqr_avx2_48(r, rt, m, mp); - sp_3072_mont_sqr_avx2_48(r, r, m, mp); + sp_3072_sqr_avx2_48(rt, r); + sp_3072_mont_reduce_avx2_48(rt, m, mp); + sp_3072_sqr_avx2_48(r, rt); + sp_3072_mont_reduce_avx2_48(r, m, mp); + sp_3072_sqr_avx2_48(rt, r); + sp_3072_mont_reduce_avx2_48(rt, m, mp); + sp_3072_sqr_avx2_48(r, rt); + sp_3072_mont_reduce_avx2_48(r, m, mp); + sp_3072_sqr_avx2_48(rt, r); + sp_3072_mont_reduce_avx2_48(rt, m, mp); - sp_3072_mont_mul_avx2_48(r, r, t[y], m, mp); + sp_3072_mul_avx2_48(r, rt, t[y]); + sp_3072_mont_reduce_avx2_48(r, m, mp); } XMEMSET(&r[48], 0, sizeof(sp_digit) * 48); @@ -3891,9 +3831,15 @@ static int sp_3072_mod_exp_2_avx2_48(sp_digit* r, const sp_digit* e, int bits, i = (bits - 1) / 64; n = e[i--]; c = bits & 63; - if (c == 0) + if (c == 0) { c = 64; - c -= bits % 6; + } + if ((bits % 6) == 0) { + c -= 6; + } + else { + c -= bits % 6; + } y = (int)(n >> c); n <<= 64 - c; sp_3072_lshift_48(r, norm, y); @@ -3997,9 +3943,15 @@ static int sp_3072_mod_exp_2_48(sp_digit* r, const sp_digit* e, int bits, i = (bits - 1) / 64; n = e[i--]; c = bits & 63; - if (c == 0) + if (c == 0) { c = 64; - c -= bits % 6; + } + if ((bits % 6) == 0) { + c -= 6; + } + else { + c -= bits % 6; + } y = (int)(n >> c); n <<= 64 - c; sp_3072_lshift_48(r, norm, y); @@ -4261,129 +4213,17 @@ static void sp_4096_from_mp(sp_digit* r, int size, const mp_int* a) extern void sp_4096_to_bin(sp_digit* r, byte* a); extern sp_digit sp_4096_sub_in_place_64(sp_digit* a, const sp_digit* b); extern sp_digit sp_4096_add_64(sp_digit* r, const sp_digit* a, const sp_digit* b); -/* Multiply a and b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -SP_NOINLINE static void sp_4096_mul_64(sp_digit* r, const sp_digit* a, - const sp_digit* b) -{ - sp_digit* z0 = r; - sp_digit z1[64]; - sp_digit a1[32]; - sp_digit b1[32]; - sp_digit z2[64]; - sp_digit o, ca, cb; - - ca = sp_2048_add_32(a1, a, a + 32); - cb = sp_2048_add_32(b1, b, b + 32); - o = ca & cb; - sp_2048_mul_32(z1, a1, b1); - sp_2048_mul_32(z2, a + 32, b + 32); - sp_2048_mul_32(z0, a, b); - sp_2048_mask_32(r + 64, a1, 0 - cb); - sp_2048_mask_32(b1, b1, 0 - ca); - o += sp_2048_add_32(r + 64, r + 64, b1); - o += sp_4096_sub_in_place_64(z1, z2); - o += sp_4096_sub_in_place_64(z1, z0); - o += sp_4096_add_64(r + 32, r + 32, z1); - r[96] = o; - XMEMSET(r + 96 + 1, 0, sizeof(sp_digit) * (32 - 1)); - sp_4096_add_64(r + 64, r + 64, z2); -} +extern void sp_4096_mul_64(sp_digit* r, const sp_digit* a, const sp_digit* b); extern sp_digit sp_2048_dbl_32(sp_digit* r, const sp_digit* a); -/* Square a and put result in r. (r = a * a) - * - * r A single precision integer. - * a A single precision integer. - */ -SP_NOINLINE static void sp_4096_sqr_64(sp_digit* r, const sp_digit* a) -{ - sp_digit* z0 = r; - sp_digit z2[64]; - sp_digit z1[64]; - sp_digit a1[32]; - sp_digit o; - - o = sp_2048_add_32(a1, a, a + 32); - sp_2048_sqr_32(z1, a1); - sp_2048_sqr_32(z2, a + 32); - sp_2048_sqr_32(z0, a); - sp_2048_mask_32(r + 64, a1, 0 - o); - o += sp_2048_dbl_32(r + 64, r + 64); - o += sp_4096_sub_in_place_64(z1, z2); - o += sp_4096_sub_in_place_64(z1, z0); - o += sp_4096_add_64(r + 32, r + 32, z1); - r[96] = o; - XMEMSET(r + 96 + 1, 0, sizeof(sp_digit) * (32 - 1)); - sp_4096_add_64(r + 64, r + 64, z2); -} +extern void sp_4096_sqr_64(sp_digit* r, const sp_digit* a); #ifdef HAVE_INTEL_AVX2 -/* Multiply a and b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -SP_NOINLINE static void sp_4096_mul_avx2_64(sp_digit* r, const sp_digit* a, - const sp_digit* b) -{ - sp_digit* z0 = r; - sp_digit z1[64]; - sp_digit a1[32]; - sp_digit b1[32]; - sp_digit z2[64]; - sp_digit o, ca, cb; - - ca = sp_2048_add_32(a1, a, a + 32); - cb = sp_2048_add_32(b1, b, b + 32); - o = ca & cb; - sp_2048_mul_avx2_32(z1, a1, b1); - sp_2048_mul_avx2_32(z2, a + 32, b + 32); - sp_2048_mul_avx2_32(z0, a, b); - sp_2048_mask_32(r + 64, a1, 0 - cb); - sp_2048_mask_32(b1, b1, 0 - ca); - o += sp_2048_add_32(r + 64, r + 64, b1); - o += sp_4096_sub_in_place_64(z1, z2); - o += sp_4096_sub_in_place_64(z1, z0); - o += sp_4096_add_64(r + 32, r + 32, z1); - r[96] = o; - XMEMSET(r + 96 + 1, 0, sizeof(sp_digit) * (32 - 1)); - sp_4096_add_64(r + 64, r + 64, z2); -} +extern void sp_4096_mul_avx2_64(sp_digit* r, const sp_digit* a, const sp_digit* b); #endif /* HAVE_INTEL_AVX2 */ #ifdef HAVE_INTEL_AVX2 -/* Square a and put result in r. (r = a * a) - * - * r A single precision integer. - * a A single precision integer. - */ -SP_NOINLINE static void sp_4096_sqr_avx2_64(sp_digit* r, const sp_digit* a) -{ - sp_digit* z0 = r; - sp_digit z2[64]; - sp_digit z1[64]; - sp_digit a1[32]; - sp_digit o; - - o = sp_2048_add_32(a1, a, a + 32); - sp_2048_sqr_avx2_32(z1, a1); - sp_2048_sqr_avx2_32(z2, a + 32); - sp_2048_sqr_avx2_32(z0, a); - sp_2048_mask_32(r + 64, a1, 0 - o); - o += sp_2048_dbl_32(r + 64, r + 64); - o += sp_4096_sub_in_place_64(z1, z2); - o += sp_4096_sub_in_place_64(z1, z0); - o += sp_4096_add_64(r + 32, r + 32, z1); - r[96] = o; - XMEMSET(r + 96 + 1, 0, sizeof(sp_digit) * (32 - 1)); - sp_4096_add_64(r + 64, r + 64, z2); -} +extern void sp_4096_sqr_avx2_64(sp_digit* r, const sp_digit* a); #endif /* HAVE_INTEL_AVX2 */ /* Caclulate the bottom digit of -1/a mod 2^n. @@ -4531,6 +4371,13 @@ static WC_INLINE int sp_4096_div_64(const sp_digit* a, const sp_digit* d, sp_dig div = d[63]; XMEMCPY(t1, a, sizeof(*t1) * 2 * 64); + r1 = sp_4096_cmp_64(&t1[64], d) >= 0; +#ifdef HAVE_INTEL_AVX2 + if (IS_INTEL_BMI2(cpuid_flags) && IS_INTEL_ADX(cpuid_flags)) + sp_4096_cond_sub_avx2_64(&t1[64], &t1[64], d, (sp_digit)0 - r1); + else +#endif + sp_4096_cond_sub_64(&t1[64], &t1[64], d, (sp_digit)0 - r1); for (i=63; i>=0; i--) { r1 = div_4096_word_64(t1[64 + i], t1[64 + i - 1], div); @@ -4596,6 +4443,13 @@ static WC_INLINE int sp_4096_div_64_cond(const sp_digit* a, const sp_digit* d, s div = d[63]; XMEMCPY(t1, a, sizeof(*t1) * 2 * 64); + for (i = 63; i > 0; i--) { + if (t1[i + 64] != d[i]) + break; + } + if (t1[i + 64] >= d[i]) { + sp_4096_sub_in_place_64(&t1[64], d); + } for (i=63; i>=0; i--) { r1 = div_4096_word_64(t1[64 + i], t1[64 + i - 1], div); @@ -4735,20 +4589,31 @@ static int sp_4096_mod_exp_64(sp_digit* r, const sp_digit* a, const sp_digit* e, i = (bits - 1) / 64; n = e[i--]; c = bits & 63; - if (c == 0) + if (c == 0) { c = 64; - c -= bits % 5; + } + if ((bits % 5) == 0) { + c -= 5; + } + else { + c -= bits % 5; + } y = (int)(n >> c); n <<= 64 - c; XMEMCPY(r, t[y], sizeof(sp_digit) * 64); for (; i>=0 || c>=5; ) { - if (c == 0) { + if (c >= 5) { + y = (n >> 59) & 0x1f; + n <<= 5; + c -= 5; + } + else if (c == 0) { n = e[i--]; y = (int)(n >> 59); n <<= 5; c = 59; } - else if (c < 5) { + else { y = (int)(n >> 59); n = e[i--]; c = 5 - c; @@ -4756,19 +4621,20 @@ static int sp_4096_mod_exp_64(sp_digit* r, const sp_digit* a, const sp_digit* e, n <<= c; c = 64 - c; } - else { - y = (n >> 59) & 0x1f; - n <<= 5; - c -= 5; - } - sp_4096_mont_sqr_64(rt, r, m, mp); - sp_4096_mont_sqr_64(r, rt, m, mp); - sp_4096_mont_sqr_64(rt, r, m, mp); - sp_4096_mont_sqr_64(r, rt, m, mp); - sp_4096_mont_sqr_64(r, r, m, mp); + sp_4096_sqr_64(rt, r); + sp_4096_mont_reduce_64(rt, m, mp); + sp_4096_sqr_64(r, rt); + sp_4096_mont_reduce_64(r, m, mp); + sp_4096_sqr_64(rt, r); + sp_4096_mont_reduce_64(rt, m, mp); + sp_4096_sqr_64(r, rt); + sp_4096_mont_reduce_64(r, m, mp); + sp_4096_sqr_64(rt, r); + sp_4096_mont_reduce_64(rt, m, mp); - sp_4096_mont_mul_64(r, r, t[y], m, mp); + sp_4096_mul_64(r, rt, t[y]); + sp_4096_mont_reduce_64(r, m, mp); } XMEMSET(&r[64], 0, sizeof(sp_digit) * 64); @@ -4918,20 +4784,31 @@ static int sp_4096_mod_exp_avx2_64(sp_digit* r, const sp_digit* a, const sp_digi i = (bits - 1) / 64; n = e[i--]; c = bits & 63; - if (c == 0) + if (c == 0) { c = 64; - c -= bits % 5; + } + if ((bits % 5) == 0) { + c -= 5; + } + else { + c -= bits % 5; + } y = (int)(n >> c); n <<= 64 - c; XMEMCPY(r, t[y], sizeof(sp_digit) * 64); for (; i>=0 || c>=5; ) { - if (c == 0) { + if (c >= 5) { + y = (n >> 59) & 0x1f; + n <<= 5; + c -= 5; + } + else if (c == 0) { n = e[i--]; y = (int)(n >> 59); n <<= 5; c = 59; } - else if (c < 5) { + else { y = (int)(n >> 59); n = e[i--]; c = 5 - c; @@ -4939,19 +4816,20 @@ static int sp_4096_mod_exp_avx2_64(sp_digit* r, const sp_digit* a, const sp_digi n <<= c; c = 64 - c; } - else { - y = (n >> 59) & 0x1f; - n <<= 5; - c -= 5; - } - sp_4096_mont_sqr_avx2_64(rt, r, m, mp); - sp_4096_mont_sqr_avx2_64(r, rt, m, mp); - sp_4096_mont_sqr_avx2_64(rt, r, m, mp); - sp_4096_mont_sqr_avx2_64(r, rt, m, mp); - sp_4096_mont_sqr_avx2_64(r, r, m, mp); + sp_4096_sqr_avx2_64(rt, r); + sp_4096_mont_reduce_avx2_64(rt, m, mp); + sp_4096_sqr_avx2_64(r, rt); + sp_4096_mont_reduce_avx2_64(r, m, mp); + sp_4096_sqr_avx2_64(rt, r); + sp_4096_mont_reduce_avx2_64(rt, m, mp); + sp_4096_sqr_avx2_64(r, rt); + sp_4096_mont_reduce_avx2_64(r, m, mp); + sp_4096_sqr_avx2_64(rt, r); + sp_4096_mont_reduce_avx2_64(rt, m, mp); - sp_4096_mont_mul_avx2_64(r, r, t[y], m, mp); + sp_4096_mul_avx2_64(r, rt, t[y]); + sp_4096_mont_reduce_avx2_64(r, m, mp); } XMEMSET(&r[64], 0, sizeof(sp_digit) * 64); @@ -5453,9 +5331,15 @@ static int sp_4096_mod_exp_2_avx2_64(sp_digit* r, const sp_digit* e, int bits, i = (bits - 1) / 64; n = e[i--]; c = bits & 63; - if (c == 0) + if (c == 0) { c = 64; - c -= bits % 6; + } + if ((bits % 6) == 0) { + c -= 6; + } + else { + c -= bits % 6; + } y = (int)(n >> c); n <<= 64 - c; sp_4096_lshift_64(r, norm, y); @@ -5559,9 +5443,15 @@ static int sp_4096_mod_exp_2_64(sp_digit* r, const sp_digit* e, int bits, i = (bits - 1) / 64; n = e[i--]; c = bits & 63; - if (c == 0) + if (c == 0) { c = 64; - c -= bits % 6; + } + if ((bits % 6) == 0) { + c -= 6; + } + else { + c -= bits % 6; + } y = (int)(n >> c); n <<= 64 - c; sp_4096_lshift_64(r, norm, y); @@ -22156,6 +22046,13 @@ static WC_INLINE int sp_256_div_4(const sp_digit* a, const sp_digit* d, sp_digit div = d[3]; XMEMCPY(t1, a, sizeof(*t1) * 2 * 4); + r1 = sp_256_cmp_4(&t1[4], d) >= 0; +#ifdef HAVE_INTEL_AVX2 + if (IS_INTEL_BMI2(cpuid_flags) && IS_INTEL_ADX(cpuid_flags)) + sp_256_cond_sub_avx2_4(&t1[4], &t1[4], d, (sp_digit)0 - r1); + else +#endif + sp_256_cond_sub_4(&t1[4], &t1[4], d, (sp_digit)0 - r1); for (i=3; i>=0; i--) { r1 = div_256_word_4(t1[4 + i], t1[4 + i - 1], div); @@ -24826,7 +24723,6 @@ static int sp_384_ecc_mulmod_win_add_sub_6(sp_point_384* r, const sp_point_384* #ifdef HAVE_INTEL_AVX2 extern void sp_384_mul_avx2_6(sp_digit* r, const sp_digit* a, const sp_digit* b); #define sp_384_mont_reduce_avx2_6 sp_384_mont_reduce_6 -extern sp_digit sp_384_cond_sub_avx2_6(sp_digit* r, const sp_digit* a, const sp_digit* b, sp_digit m); extern void sp_384_mont_reduce_order_avx2_6(sp_digit* a, const sp_digit* m, sp_digit mp); /* Multiply two Montogmery form numbers mod the modulus (prime). * (r = a * b mod m) @@ -24967,40 +24863,6 @@ static void sp_384_mont_inv_avx2_6(sp_digit* r, const sp_digit* a, sp_digit* td) #endif /* WOLFSSL_SP_SMALL */ } -#ifdef HAVE_INTEL_AVX2_ -/* Multiply two Montogmery form numbers mod the modulus (prime). - * (r = a * b mod m) - * - * r Result of multiplication. - * a First number to multiply in Montogmery form. - * b Second number to multiply in Montogmery form. - * m Modulus (prime). - * mp Montogmery mulitplier. - */ -static void sp_384_mont_mul_avx2_6(sp_digit* r, const sp_digit* a, const sp_digit* b, - const sp_digit* m, sp_digit mp) -{ - sp_384_mul_avx2_6(r, a, b); - sp_384_mont_reduce_avx2_6(r, m, mp); -} - -#endif /* HAVE_INTEL_AVX2_ */ -#ifdef HAVE_INTEL_AVX2_ -/* Square the Montgomery form number. (r = a * a mod m) - * - * r Result of squaring. - * a Number to square in Montogmery form. - * m Modulus (prime). - * mp Montogmery mulitplier. - */ -static void sp_384_mont_sqr_avx2_6(sp_digit* r, const sp_digit* a, const sp_digit* m, - sp_digit mp) -{ - sp_384_sqr_avx2_6(r, a); - sp_384_mont_reduce_avx2_6(r, m, mp); -} - -#endif /* HAVE_INTEL_AVX2_ */ /* Map the Montgomery form projective coordinate point to an affine point. * * r Resulting affine coordinate point. @@ -27947,6 +27809,7 @@ int sp_ecc_secret_gen_384(mp_int* priv, ecc_point* pub, byte* out, #endif #if defined(HAVE_ECC_SIGN) || defined(HAVE_ECC_VERIFY) extern sp_digit sp_384_sub_in_place_6(sp_digit* a, const sp_digit* b); +extern sp_digit sp_384_cond_sub_avx2_6(sp_digit* r, const sp_digit* a, const sp_digit* b, sp_digit m); extern void sp_384_mul_d_6(sp_digit* r, const sp_digit* a, sp_digit b); extern void sp_384_mul_d_avx2_6(sp_digit* r, const sp_digit* a, const sp_digit b); /* Divide the double width number (d1|d0) by the dividend. (d1|d0 / div) @@ -28015,6 +27878,13 @@ static WC_INLINE int sp_384_div_6(const sp_digit* a, const sp_digit* d, sp_digit div = d[5]; XMEMCPY(t1, a, sizeof(*t1) * 2 * 6); + r1 = sp_384_cmp_6(&t1[6], d) >= 0; +#ifdef HAVE_INTEL_AVX2 + if (IS_INTEL_BMI2(cpuid_flags) && IS_INTEL_ADX(cpuid_flags)) + sp_384_cond_sub_avx2_6(&t1[6], &t1[6], d, (sp_digit)0 - r1); + else +#endif + sp_384_cond_sub_6(&t1[6], &t1[6], d, (sp_digit)0 - r1); for (i=5; i>=0; i--) { r1 = div_384_word_6(t1[6 + i], t1[6 + i - 1], div); diff --git a/wolfcrypt/src/sp_x86_64_asm.S b/wolfcrypt/src/sp_x86_64_asm.S index e73399f21..4d9b51f1d 100644 --- a/wolfcrypt/src/sp_x86_64_asm.S +++ b/wolfcrypt/src/sp_x86_64_asm.S @@ -2947,159 +2947,163 @@ sp_2048_mul_avx2_16: .p2align 4 _sp_2048_mul_avx2_16: #endif /* __APPLE__ */ + push %rbx push %rbp push %r12 push %r13 push %r14 - push %r15 - push %rbx movq %rdx, %rbp subq $128, %rsp - movq $0, %r14 + cmpq %rdi, %rsi + movq %rsp, %rbx + cmovne %rdi, %rbx + cmpq %rdi, %rbp + cmove %rsp, %rbx + xorq %r14, %r14 movq (%rsi), %rdx # A[0] * B[0] mulx (%rbp), %r8, %r9 # A[0] * B[1] mulx 8(%rbp), %rax, %r10 - movq %r8, (%rsp) + movq %r8, (%rbx) adcxq %rax, %r9 # A[0] * B[2] mulx 16(%rbp), %rax, %r11 - movq %r9, 8(%rsp) + movq %r9, 8(%rbx) adcxq %rax, %r10 # A[0] * B[3] mulx 24(%rbp), %rax, %r12 - movq %r10, 16(%rsp) + movq %r10, 16(%rbx) adcxq %rax, %r11 - movq %r11, 24(%rsp) + movq %r11, 24(%rbx) # A[0] * B[4] mulx 32(%rbp), %rax, %r8 adcxq %rax, %r12 # A[0] * B[5] mulx 40(%rbp), %rax, %r9 - movq %r12, 32(%rsp) + movq %r12, 32(%rbx) adcxq %rax, %r8 # A[0] * B[6] mulx 48(%rbp), %rax, %r10 - movq %r8, 40(%rsp) + movq %r8, 40(%rbx) adcxq %rax, %r9 # A[0] * B[7] mulx 56(%rbp), %rax, %r11 - movq %r9, 48(%rsp) + movq %r9, 48(%rbx) adcxq %rax, %r10 - movq %r10, 56(%rsp) + movq %r10, 56(%rbx) # A[0] * B[8] mulx 64(%rbp), %rax, %r12 adcxq %rax, %r11 # A[0] * B[9] mulx 72(%rbp), %rax, %r8 - movq %r11, 64(%rsp) + movq %r11, 64(%rbx) adcxq %rax, %r12 # A[0] * B[10] mulx 80(%rbp), %rax, %r9 - movq %r12, 72(%rsp) + movq %r12, 72(%rbx) adcxq %rax, %r8 # A[0] * B[11] mulx 88(%rbp), %rax, %r10 - movq %r8, 80(%rsp) + movq %r8, 80(%rbx) adcxq %rax, %r9 - movq %r9, 88(%rsp) + movq %r9, 88(%rbx) # A[0] * B[12] mulx 96(%rbp), %rax, %r11 adcxq %rax, %r10 # A[0] * B[13] mulx 104(%rbp), %rax, %r12 - movq %r10, 96(%rsp) + movq %r10, 96(%rbx) adcxq %rax, %r11 # A[0] * B[14] mulx 112(%rbp), %rax, %r8 - movq %r11, 104(%rsp) + movq %r11, 104(%rbx) adcxq %rax, %r12 # A[0] * B[15] mulx 120(%rbp), %rax, %r9 - movq %r12, %r15 + movq %r12, 112(%rbx) adcxq %rax, %r8 adcxq %r14, %r9 movq %r14, %r13 adcxq %r14, %r13 - movq %r8, %rbx + movq %r8, 120(%rbx) movq %r9, 128(%rdi) movq 8(%rsi), %rdx - movq 8(%rsp), %r9 - movq 16(%rsp), %r10 - movq 24(%rsp), %r11 - movq 32(%rsp), %r12 - movq 40(%rsp), %r8 + movq 8(%rbx), %r9 + movq 16(%rbx), %r10 + movq 24(%rbx), %r11 + movq 32(%rbx), %r12 + movq 40(%rbx), %r8 # A[1] * B[0] mulx (%rbp), %rax, %rcx adcxq %rax, %r9 adoxq %rcx, %r10 # A[1] * B[1] mulx 8(%rbp), %rax, %rcx - movq %r9, 8(%rsp) + movq %r9, 8(%rbx) adcxq %rax, %r10 adoxq %rcx, %r11 # A[1] * B[2] mulx 16(%rbp), %rax, %rcx - movq %r10, 16(%rsp) + movq %r10, 16(%rbx) adcxq %rax, %r11 adoxq %rcx, %r12 # A[1] * B[3] mulx 24(%rbp), %rax, %rcx - movq %r11, 24(%rsp) + movq %r11, 24(%rbx) adcxq %rax, %r12 adoxq %rcx, %r8 - movq %r12, 32(%rsp) - movq 48(%rsp), %r9 - movq 56(%rsp), %r10 - movq 64(%rsp), %r11 - movq 72(%rsp), %r12 + movq %r12, 32(%rbx) + movq 48(%rbx), %r9 + movq 56(%rbx), %r10 + movq 64(%rbx), %r11 + movq 72(%rbx), %r12 # A[1] * B[4] mulx 32(%rbp), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 # A[1] * B[5] mulx 40(%rbp), %rax, %rcx - movq %r8, 40(%rsp) + movq %r8, 40(%rbx) adcxq %rax, %r9 adoxq %rcx, %r10 # A[1] * B[6] mulx 48(%rbp), %rax, %rcx - movq %r9, 48(%rsp) + movq %r9, 48(%rbx) adcxq %rax, %r10 adoxq %rcx, %r11 # A[1] * B[7] mulx 56(%rbp), %rax, %rcx - movq %r10, 56(%rsp) + movq %r10, 56(%rbx) adcxq %rax, %r11 adoxq %rcx, %r12 - movq %r11, 64(%rsp) - movq 80(%rsp), %r8 - movq 88(%rsp), %r9 - movq 96(%rsp), %r10 - movq 104(%rsp), %r11 + movq %r11, 64(%rbx) + movq 80(%rbx), %r8 + movq 88(%rbx), %r9 + movq 96(%rbx), %r10 + movq 104(%rbx), %r11 # A[1] * B[8] mulx 64(%rbp), %rax, %rcx adcxq %rax, %r12 adoxq %rcx, %r8 # A[1] * B[9] mulx 72(%rbp), %rax, %rcx - movq %r12, 72(%rsp) + movq %r12, 72(%rbx) adcxq %rax, %r8 adoxq %rcx, %r9 # A[1] * B[10] mulx 80(%rbp), %rax, %rcx - movq %r8, 80(%rsp) + movq %r8, 80(%rbx) adcxq %rax, %r9 adoxq %rcx, %r10 # A[1] * B[11] mulx 88(%rbp), %rax, %rcx - movq %r9, 88(%rsp) + movq %r9, 88(%rbx) adcxq %rax, %r10 adoxq %rcx, %r11 - movq %r10, 96(%rsp) - movq %r15, %r12 - movq %rbx, %r8 + movq %r10, 96(%rbx) + movq 112(%rbx), %r12 + movq 120(%rbx), %r8 movq 128(%rdi), %r9 # A[1] * B[12] mulx 96(%rbp), %rax, %rcx @@ -3107,17 +3111,17 @@ _sp_2048_mul_avx2_16: adoxq %rcx, %r12 # A[1] * B[13] mulx 104(%rbp), %rax, %rcx - movq %r11, 104(%rsp) + movq %r11, 104(%rbx) adcxq %rax, %r12 adoxq %rcx, %r8 # A[1] * B[14] mulx 112(%rbp), %rax, %rcx - movq %r12, %r15 + movq %r12, 112(%rbx) adcxq %rax, %r8 adoxq %rcx, %r9 # A[1] * B[15] mulx 120(%rbp), %rax, %rcx - movq %r8, %rbx + movq %r8, 120(%rbx) movq %r14, %r10 adcxq %rax, %r9 adoxq %rcx, %r10 @@ -3128,80 +3132,80 @@ _sp_2048_mul_avx2_16: movq %r9, 128(%rdi) movq %r10, 136(%rdi) movq 16(%rsi), %rdx - movq 16(%rsp), %r10 - movq 24(%rsp), %r11 - movq 32(%rsp), %r12 - movq 40(%rsp), %r8 - movq 48(%rsp), %r9 + movq 16(%rbx), %r10 + movq 24(%rbx), %r11 + movq 32(%rbx), %r12 + movq 40(%rbx), %r8 + movq 48(%rbx), %r9 # A[2] * B[0] mulx (%rbp), %rax, %rcx adcxq %rax, %r10 adoxq %rcx, %r11 # A[2] * B[1] mulx 8(%rbp), %rax, %rcx - movq %r10, 16(%rsp) + movq %r10, 16(%rbx) adcxq %rax, %r11 adoxq %rcx, %r12 # A[2] * B[2] mulx 16(%rbp), %rax, %rcx - movq %r11, 24(%rsp) + movq %r11, 24(%rbx) adcxq %rax, %r12 adoxq %rcx, %r8 # A[2] * B[3] mulx 24(%rbp), %rax, %rcx - movq %r12, 32(%rsp) + movq %r12, 32(%rbx) adcxq %rax, %r8 adoxq %rcx, %r9 - movq %r8, 40(%rsp) - movq 56(%rsp), %r10 - movq 64(%rsp), %r11 - movq 72(%rsp), %r12 - movq 80(%rsp), %r8 + movq %r8, 40(%rbx) + movq 56(%rbx), %r10 + movq 64(%rbx), %r11 + movq 72(%rbx), %r12 + movq 80(%rbx), %r8 # A[2] * B[4] mulx 32(%rbp), %rax, %rcx adcxq %rax, %r9 adoxq %rcx, %r10 # A[2] * B[5] mulx 40(%rbp), %rax, %rcx - movq %r9, 48(%rsp) + movq %r9, 48(%rbx) adcxq %rax, %r10 adoxq %rcx, %r11 # A[2] * B[6] mulx 48(%rbp), %rax, %rcx - movq %r10, 56(%rsp) + movq %r10, 56(%rbx) adcxq %rax, %r11 adoxq %rcx, %r12 # A[2] * B[7] mulx 56(%rbp), %rax, %rcx - movq %r11, 64(%rsp) + movq %r11, 64(%rbx) adcxq %rax, %r12 adoxq %rcx, %r8 - movq %r12, 72(%rsp) - movq 88(%rsp), %r9 - movq 96(%rsp), %r10 - movq 104(%rsp), %r11 - movq %r15, %r12 + movq %r12, 72(%rbx) + movq 88(%rbx), %r9 + movq 96(%rbx), %r10 + movq 104(%rbx), %r11 + movq 112(%rbx), %r12 # A[2] * B[8] mulx 64(%rbp), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 # A[2] * B[9] mulx 72(%rbp), %rax, %rcx - movq %r8, 80(%rsp) + movq %r8, 80(%rbx) adcxq %rax, %r9 adoxq %rcx, %r10 # A[2] * B[10] mulx 80(%rbp), %rax, %rcx - movq %r9, 88(%rsp) + movq %r9, 88(%rbx) adcxq %rax, %r10 adoxq %rcx, %r11 # A[2] * B[11] mulx 88(%rbp), %rax, %rcx - movq %r10, 96(%rsp) + movq %r10, 96(%rbx) adcxq %rax, %r11 adoxq %rcx, %r12 - movq %r11, 104(%rsp) - movq %rbx, %r8 + movq %r11, 104(%rbx) + movq 120(%rbx), %r8 movq 128(%rdi), %r9 movq 136(%rdi), %r10 # A[2] * B[12] @@ -3210,12 +3214,12 @@ _sp_2048_mul_avx2_16: adoxq %rcx, %r8 # A[2] * B[13] mulx 104(%rbp), %rax, %rcx - movq %r12, %r15 + movq %r12, 112(%rbx) adcxq %rax, %r8 adoxq %rcx, %r9 # A[2] * B[14] mulx 112(%rbp), %rax, %rcx - movq %r8, %rbx + movq %r8, 120(%rbx) adcxq %rax, %r9 adoxq %rcx, %r10 # A[2] * B[15] @@ -3231,79 +3235,79 @@ _sp_2048_mul_avx2_16: movq %r10, 136(%rdi) movq %r11, 144(%rdi) movq 24(%rsi), %rdx - movq 24(%rsp), %r11 - movq 32(%rsp), %r12 - movq 40(%rsp), %r8 - movq 48(%rsp), %r9 - movq 56(%rsp), %r10 + movq 24(%rbx), %r11 + movq 32(%rbx), %r12 + movq 40(%rbx), %r8 + movq 48(%rbx), %r9 + movq 56(%rbx), %r10 # A[3] * B[0] mulx (%rbp), %rax, %rcx adcxq %rax, %r11 adoxq %rcx, %r12 # A[3] * B[1] mulx 8(%rbp), %rax, %rcx - movq %r11, 24(%rsp) + movq %r11, 24(%rbx) adcxq %rax, %r12 adoxq %rcx, %r8 # A[3] * B[2] mulx 16(%rbp), %rax, %rcx - movq %r12, 32(%rsp) + movq %r12, 32(%rbx) adcxq %rax, %r8 adoxq %rcx, %r9 # A[3] * B[3] mulx 24(%rbp), %rax, %rcx - movq %r8, 40(%rsp) + movq %r8, 40(%rbx) adcxq %rax, %r9 adoxq %rcx, %r10 - movq %r9, 48(%rsp) - movq 64(%rsp), %r11 - movq 72(%rsp), %r12 - movq 80(%rsp), %r8 - movq 88(%rsp), %r9 + movq %r9, 48(%rbx) + movq 64(%rbx), %r11 + movq 72(%rbx), %r12 + movq 80(%rbx), %r8 + movq 88(%rbx), %r9 # A[3] * B[4] mulx 32(%rbp), %rax, %rcx adcxq %rax, %r10 adoxq %rcx, %r11 # A[3] * B[5] mulx 40(%rbp), %rax, %rcx - movq %r10, 56(%rsp) + movq %r10, 56(%rbx) adcxq %rax, %r11 adoxq %rcx, %r12 # A[3] * B[6] mulx 48(%rbp), %rax, %rcx - movq %r11, 64(%rsp) + movq %r11, 64(%rbx) adcxq %rax, %r12 adoxq %rcx, %r8 # A[3] * B[7] mulx 56(%rbp), %rax, %rcx - movq %r12, 72(%rsp) + movq %r12, 72(%rbx) adcxq %rax, %r8 adoxq %rcx, %r9 - movq %r8, 80(%rsp) - movq 96(%rsp), %r10 - movq 104(%rsp), %r11 - movq %r15, %r12 - movq %rbx, %r8 + movq %r8, 80(%rbx) + movq 96(%rbx), %r10 + movq 104(%rbx), %r11 + movq 112(%rbx), %r12 + movq 120(%rbx), %r8 # A[3] * B[8] mulx 64(%rbp), %rax, %rcx adcxq %rax, %r9 adoxq %rcx, %r10 # A[3] * B[9] mulx 72(%rbp), %rax, %rcx - movq %r9, 88(%rsp) + movq %r9, 88(%rbx) adcxq %rax, %r10 adoxq %rcx, %r11 # A[3] * B[10] mulx 80(%rbp), %rax, %rcx - movq %r10, 96(%rsp) + movq %r10, 96(%rbx) adcxq %rax, %r11 adoxq %rcx, %r12 # A[3] * B[11] mulx 88(%rbp), %rax, %rcx - movq %r11, 104(%rsp) + movq %r11, 104(%rbx) adcxq %rax, %r12 adoxq %rcx, %r8 - movq %r12, %r15 + movq %r12, 112(%rbx) movq 128(%rdi), %r9 movq 136(%rdi), %r10 movq 144(%rdi), %r11 @@ -3313,7 +3317,7 @@ _sp_2048_mul_avx2_16: adoxq %rcx, %r9 # A[3] * B[13] mulx 104(%rbp), %rax, %rcx - movq %r8, %rbx + movq %r8, 120(%rbx) adcxq %rax, %r9 adoxq %rcx, %r10 # A[3] * B[14] @@ -3334,58 +3338,58 @@ _sp_2048_mul_avx2_16: movq %r11, 144(%rdi) movq %r12, 152(%rdi) movq 32(%rsi), %rdx - movq 32(%rsp), %r12 - movq 40(%rsp), %r8 - movq 48(%rsp), %r9 - movq 56(%rsp), %r10 - movq 64(%rsp), %r11 + movq 32(%rbx), %r12 + movq 40(%rbx), %r8 + movq 48(%rbx), %r9 + movq 56(%rbx), %r10 + movq 64(%rbx), %r11 # A[4] * B[0] mulx (%rbp), %rax, %rcx adcxq %rax, %r12 adoxq %rcx, %r8 # A[4] * B[1] mulx 8(%rbp), %rax, %rcx - movq %r12, 32(%rsp) + movq %r12, 32(%rbx) adcxq %rax, %r8 adoxq %rcx, %r9 # A[4] * B[2] mulx 16(%rbp), %rax, %rcx - movq %r8, 40(%rsp) + movq %r8, 40(%rbx) adcxq %rax, %r9 adoxq %rcx, %r10 # A[4] * B[3] mulx 24(%rbp), %rax, %rcx - movq %r9, 48(%rsp) + movq %r9, 48(%rbx) adcxq %rax, %r10 adoxq %rcx, %r11 - movq %r10, 56(%rsp) - movq 72(%rsp), %r12 - movq 80(%rsp), %r8 - movq 88(%rsp), %r9 - movq 96(%rsp), %r10 + movq %r10, 56(%rbx) + movq 72(%rbx), %r12 + movq 80(%rbx), %r8 + movq 88(%rbx), %r9 + movq 96(%rbx), %r10 # A[4] * B[4] mulx 32(%rbp), %rax, %rcx adcxq %rax, %r11 adoxq %rcx, %r12 # A[4] * B[5] mulx 40(%rbp), %rax, %rcx - movq %r11, 64(%rsp) + movq %r11, 64(%rbx) adcxq %rax, %r12 adoxq %rcx, %r8 # A[4] * B[6] mulx 48(%rbp), %rax, %rcx - movq %r12, 72(%rsp) + movq %r12, 72(%rbx) adcxq %rax, %r8 adoxq %rcx, %r9 # A[4] * B[7] mulx 56(%rbp), %rax, %rcx - movq %r8, 80(%rsp) + movq %r8, 80(%rbx) adcxq %rax, %r9 adoxq %rcx, %r10 - movq %r9, 88(%rsp) - movq 104(%rsp), %r11 - movq %r15, %r12 - movq %rbx, %r8 + movq %r9, 88(%rbx) + movq 104(%rbx), %r11 + movq 112(%rbx), %r12 + movq 120(%rbx), %r8 movq 128(%rdi), %r9 # A[4] * B[8] mulx 64(%rbp), %rax, %rcx @@ -3393,20 +3397,20 @@ _sp_2048_mul_avx2_16: adoxq %rcx, %r11 # A[4] * B[9] mulx 72(%rbp), %rax, %rcx - movq %r10, 96(%rsp) + movq %r10, 96(%rbx) adcxq %rax, %r11 adoxq %rcx, %r12 # A[4] * B[10] mulx 80(%rbp), %rax, %rcx - movq %r11, 104(%rsp) + movq %r11, 104(%rbx) adcxq %rax, %r12 adoxq %rcx, %r8 # A[4] * B[11] mulx 88(%rbp), %rax, %rcx - movq %r12, %r15 + movq %r12, 112(%rbx) adcxq %rax, %r8 adoxq %rcx, %r9 - movq %r8, %rbx + movq %r8, 120(%rbx) movq 136(%rdi), %r10 movq 144(%rdi), %r11 movq 152(%rdi), %r12 @@ -3437,57 +3441,57 @@ _sp_2048_mul_avx2_16: movq %r12, 152(%rdi) movq %r8, 160(%rdi) movq 40(%rsi), %rdx - movq 40(%rsp), %r8 - movq 48(%rsp), %r9 - movq 56(%rsp), %r10 - movq 64(%rsp), %r11 - movq 72(%rsp), %r12 + movq 40(%rbx), %r8 + movq 48(%rbx), %r9 + movq 56(%rbx), %r10 + movq 64(%rbx), %r11 + movq 72(%rbx), %r12 # A[5] * B[0] mulx (%rbp), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 # A[5] * B[1] mulx 8(%rbp), %rax, %rcx - movq %r8, 40(%rsp) + movq %r8, 40(%rbx) adcxq %rax, %r9 adoxq %rcx, %r10 # A[5] * B[2] mulx 16(%rbp), %rax, %rcx - movq %r9, 48(%rsp) + movq %r9, 48(%rbx) adcxq %rax, %r10 adoxq %rcx, %r11 # A[5] * B[3] mulx 24(%rbp), %rax, %rcx - movq %r10, 56(%rsp) + movq %r10, 56(%rbx) adcxq %rax, %r11 adoxq %rcx, %r12 - movq %r11, 64(%rsp) - movq 80(%rsp), %r8 - movq 88(%rsp), %r9 - movq 96(%rsp), %r10 - movq 104(%rsp), %r11 + movq %r11, 64(%rbx) + movq 80(%rbx), %r8 + movq 88(%rbx), %r9 + movq 96(%rbx), %r10 + movq 104(%rbx), %r11 # A[5] * B[4] mulx 32(%rbp), %rax, %rcx adcxq %rax, %r12 adoxq %rcx, %r8 # A[5] * B[5] mulx 40(%rbp), %rax, %rcx - movq %r12, 72(%rsp) + movq %r12, 72(%rbx) adcxq %rax, %r8 adoxq %rcx, %r9 # A[5] * B[6] mulx 48(%rbp), %rax, %rcx - movq %r8, 80(%rsp) + movq %r8, 80(%rbx) adcxq %rax, %r9 adoxq %rcx, %r10 # A[5] * B[7] mulx 56(%rbp), %rax, %rcx - movq %r9, 88(%rsp) + movq %r9, 88(%rbx) adcxq %rax, %r10 adoxq %rcx, %r11 - movq %r10, 96(%rsp) - movq %r15, %r12 - movq %rbx, %r8 + movq %r10, 96(%rbx) + movq 112(%rbx), %r12 + movq 120(%rbx), %r8 movq 128(%rdi), %r9 movq 136(%rdi), %r10 # A[5] * B[8] @@ -3496,17 +3500,17 @@ _sp_2048_mul_avx2_16: adoxq %rcx, %r12 # A[5] * B[9] mulx 72(%rbp), %rax, %rcx - movq %r11, 104(%rsp) + movq %r11, 104(%rbx) adcxq %rax, %r12 adoxq %rcx, %r8 # A[5] * B[10] mulx 80(%rbp), %rax, %rcx - movq %r12, %r15 + movq %r12, 112(%rbx) adcxq %rax, %r8 adoxq %rcx, %r9 # A[5] * B[11] mulx 88(%rbp), %rax, %rcx - movq %r8, %rbx + movq %r8, 120(%rbx) adcxq %rax, %r9 adoxq %rcx, %r10 movq %r9, 128(%rdi) @@ -3540,56 +3544,56 @@ _sp_2048_mul_avx2_16: movq %r8, 160(%rdi) movq %r9, 168(%rdi) movq 48(%rsi), %rdx - movq 48(%rsp), %r9 - movq 56(%rsp), %r10 - movq 64(%rsp), %r11 - movq 72(%rsp), %r12 - movq 80(%rsp), %r8 + movq 48(%rbx), %r9 + movq 56(%rbx), %r10 + movq 64(%rbx), %r11 + movq 72(%rbx), %r12 + movq 80(%rbx), %r8 # A[6] * B[0] mulx (%rbp), %rax, %rcx adcxq %rax, %r9 adoxq %rcx, %r10 # A[6] * B[1] mulx 8(%rbp), %rax, %rcx - movq %r9, 48(%rsp) + movq %r9, 48(%rbx) adcxq %rax, %r10 adoxq %rcx, %r11 # A[6] * B[2] mulx 16(%rbp), %rax, %rcx - movq %r10, 56(%rsp) + movq %r10, 56(%rbx) adcxq %rax, %r11 adoxq %rcx, %r12 # A[6] * B[3] mulx 24(%rbp), %rax, %rcx - movq %r11, 64(%rsp) + movq %r11, 64(%rbx) adcxq %rax, %r12 adoxq %rcx, %r8 - movq %r12, 72(%rsp) - movq 88(%rsp), %r9 - movq 96(%rsp), %r10 - movq 104(%rsp), %r11 - movq %r15, %r12 + movq %r12, 72(%rbx) + movq 88(%rbx), %r9 + movq 96(%rbx), %r10 + movq 104(%rbx), %r11 + movq 112(%rbx), %r12 # A[6] * B[4] mulx 32(%rbp), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 # A[6] * B[5] mulx 40(%rbp), %rax, %rcx - movq %r8, 80(%rsp) + movq %r8, 80(%rbx) adcxq %rax, %r9 adoxq %rcx, %r10 # A[6] * B[6] mulx 48(%rbp), %rax, %rcx - movq %r9, 88(%rsp) + movq %r9, 88(%rbx) adcxq %rax, %r10 adoxq %rcx, %r11 # A[6] * B[7] mulx 56(%rbp), %rax, %rcx - movq %r10, 96(%rsp) + movq %r10, 96(%rbx) adcxq %rax, %r11 adoxq %rcx, %r12 - movq %r11, 104(%rsp) - movq %rbx, %r8 + movq %r11, 104(%rbx) + movq 120(%rbx), %r8 movq 128(%rdi), %r9 movq 136(%rdi), %r10 movq 144(%rdi), %r11 @@ -3599,12 +3603,12 @@ _sp_2048_mul_avx2_16: adoxq %rcx, %r8 # A[6] * B[9] mulx 72(%rbp), %rax, %rcx - movq %r12, %r15 + movq %r12, 112(%rbx) adcxq %rax, %r8 adoxq %rcx, %r9 # A[6] * B[10] mulx 80(%rbp), %rax, %rcx - movq %r8, %rbx + movq %r8, 120(%rbx) adcxq %rax, %r9 adoxq %rcx, %r10 # A[6] * B[11] @@ -3643,55 +3647,55 @@ _sp_2048_mul_avx2_16: movq %r9, 168(%rdi) movq %r10, 176(%rdi) movq 56(%rsi), %rdx - movq 56(%rsp), %r10 - movq 64(%rsp), %r11 - movq 72(%rsp), %r12 - movq 80(%rsp), %r8 - movq 88(%rsp), %r9 + movq 56(%rbx), %r10 + movq 64(%rbx), %r11 + movq 72(%rbx), %r12 + movq 80(%rbx), %r8 + movq 88(%rbx), %r9 # A[7] * B[0] mulx (%rbp), %rax, %rcx adcxq %rax, %r10 adoxq %rcx, %r11 # A[7] * B[1] mulx 8(%rbp), %rax, %rcx - movq %r10, 56(%rsp) + movq %r10, 56(%rbx) adcxq %rax, %r11 adoxq %rcx, %r12 # A[7] * B[2] mulx 16(%rbp), %rax, %rcx - movq %r11, 64(%rsp) + movq %r11, 64(%rbx) adcxq %rax, %r12 adoxq %rcx, %r8 # A[7] * B[3] mulx 24(%rbp), %rax, %rcx - movq %r12, 72(%rsp) + movq %r12, 72(%rbx) adcxq %rax, %r8 adoxq %rcx, %r9 - movq %r8, 80(%rsp) - movq 96(%rsp), %r10 - movq 104(%rsp), %r11 - movq %r15, %r12 - movq %rbx, %r8 + movq %r8, 80(%rbx) + movq 96(%rbx), %r10 + movq 104(%rbx), %r11 + movq 112(%rbx), %r12 + movq 120(%rbx), %r8 # A[7] * B[4] mulx 32(%rbp), %rax, %rcx adcxq %rax, %r9 adoxq %rcx, %r10 # A[7] * B[5] mulx 40(%rbp), %rax, %rcx - movq %r9, 88(%rsp) + movq %r9, 88(%rbx) adcxq %rax, %r10 adoxq %rcx, %r11 # A[7] * B[6] mulx 48(%rbp), %rax, %rcx - movq %r10, 96(%rsp) + movq %r10, 96(%rbx) adcxq %rax, %r11 adoxq %rcx, %r12 # A[7] * B[7] mulx 56(%rbp), %rax, %rcx - movq %r11, 104(%rsp) + movq %r11, 104(%rbx) adcxq %rax, %r12 adoxq %rcx, %r8 - movq %r12, %r15 + movq %r12, 112(%rbx) movq 128(%rdi), %r9 movq 136(%rdi), %r10 movq 144(%rdi), %r11 @@ -3702,7 +3706,7 @@ _sp_2048_mul_avx2_16: adoxq %rcx, %r9 # A[7] * B[9] mulx 72(%rbp), %rax, %rcx - movq %r8, %rbx + movq %r8, 120(%rbx) adcxq %rax, %r9 adoxq %rcx, %r10 # A[7] * B[10] @@ -3746,34 +3750,34 @@ _sp_2048_mul_avx2_16: movq %r10, 176(%rdi) movq %r11, 184(%rdi) movq 64(%rsi), %rdx - movq 64(%rsp), %r11 - movq 72(%rsp), %r12 - movq 80(%rsp), %r8 - movq 88(%rsp), %r9 - movq 96(%rsp), %r10 + movq 64(%rbx), %r11 + movq 72(%rbx), %r12 + movq 80(%rbx), %r8 + movq 88(%rbx), %r9 + movq 96(%rbx), %r10 # A[8] * B[0] mulx (%rbp), %rax, %rcx adcxq %rax, %r11 adoxq %rcx, %r12 # A[8] * B[1] mulx 8(%rbp), %rax, %rcx - movq %r11, 64(%rsp) + movq %r11, 64(%rbx) adcxq %rax, %r12 adoxq %rcx, %r8 # A[8] * B[2] mulx 16(%rbp), %rax, %rcx - movq %r12, 72(%rsp) + movq %r12, 72(%rbx) adcxq %rax, %r8 adoxq %rcx, %r9 # A[8] * B[3] mulx 24(%rbp), %rax, %rcx - movq %r8, 80(%rsp) + movq %r8, 80(%rbx) adcxq %rax, %r9 adoxq %rcx, %r10 - movq %r9, 88(%rsp) - movq 104(%rsp), %r11 - movq %r15, %r12 - movq %rbx, %r8 + movq %r9, 88(%rbx) + movq 104(%rbx), %r11 + movq 112(%rbx), %r12 + movq 120(%rbx), %r8 movq 128(%rdi), %r9 # A[8] * B[4] mulx 32(%rbp), %rax, %rcx @@ -3781,20 +3785,20 @@ _sp_2048_mul_avx2_16: adoxq %rcx, %r11 # A[8] * B[5] mulx 40(%rbp), %rax, %rcx - movq %r10, 96(%rsp) + movq %r10, 96(%rbx) adcxq %rax, %r11 adoxq %rcx, %r12 # A[8] * B[6] mulx 48(%rbp), %rax, %rcx - movq %r11, 104(%rsp) + movq %r11, 104(%rbx) adcxq %rax, %r12 adoxq %rcx, %r8 # A[8] * B[7] mulx 56(%rbp), %rax, %rcx - movq %r12, %r15 + movq %r12, 112(%rbx) adcxq %rax, %r8 adoxq %rcx, %r9 - movq %r8, %rbx + movq %r8, 120(%rbx) movq 136(%rdi), %r10 movq 144(%rdi), %r11 movq 152(%rdi), %r12 @@ -3849,33 +3853,33 @@ _sp_2048_mul_avx2_16: movq %r11, 184(%rdi) movq %r12, 192(%rdi) movq 72(%rsi), %rdx - movq 72(%rsp), %r12 - movq 80(%rsp), %r8 - movq 88(%rsp), %r9 - movq 96(%rsp), %r10 - movq 104(%rsp), %r11 + movq 72(%rbx), %r12 + movq 80(%rbx), %r8 + movq 88(%rbx), %r9 + movq 96(%rbx), %r10 + movq 104(%rbx), %r11 # A[9] * B[0] mulx (%rbp), %rax, %rcx adcxq %rax, %r12 adoxq %rcx, %r8 # A[9] * B[1] mulx 8(%rbp), %rax, %rcx - movq %r12, 72(%rsp) + movq %r12, 72(%rbx) adcxq %rax, %r8 adoxq %rcx, %r9 # A[9] * B[2] mulx 16(%rbp), %rax, %rcx - movq %r8, 80(%rsp) + movq %r8, 80(%rbx) adcxq %rax, %r9 adoxq %rcx, %r10 # A[9] * B[3] mulx 24(%rbp), %rax, %rcx - movq %r9, 88(%rsp) + movq %r9, 88(%rbx) adcxq %rax, %r10 adoxq %rcx, %r11 - movq %r10, 96(%rsp) - movq %r15, %r12 - movq %rbx, %r8 + movq %r10, 96(%rbx) + movq 112(%rbx), %r12 + movq 120(%rbx), %r8 movq 128(%rdi), %r9 movq 136(%rdi), %r10 # A[9] * B[4] @@ -3884,17 +3888,17 @@ _sp_2048_mul_avx2_16: adoxq %rcx, %r12 # A[9] * B[5] mulx 40(%rbp), %rax, %rcx - movq %r11, 104(%rsp) + movq %r11, 104(%rbx) adcxq %rax, %r12 adoxq %rcx, %r8 # A[9] * B[6] mulx 48(%rbp), %rax, %rcx - movq %r12, %r15 + movq %r12, 112(%rbx) adcxq %rax, %r8 adoxq %rcx, %r9 # A[9] * B[7] mulx 56(%rbp), %rax, %rcx - movq %r8, %rbx + movq %r8, 120(%rbx) adcxq %rax, %r9 adoxq %rcx, %r10 movq %r9, 128(%rdi) @@ -3952,32 +3956,32 @@ _sp_2048_mul_avx2_16: movq %r12, 192(%rdi) movq %r8, 200(%rdi) movq 80(%rsi), %rdx - movq 80(%rsp), %r8 - movq 88(%rsp), %r9 - movq 96(%rsp), %r10 - movq 104(%rsp), %r11 - movq %r15, %r12 + movq 80(%rbx), %r8 + movq 88(%rbx), %r9 + movq 96(%rbx), %r10 + movq 104(%rbx), %r11 + movq 112(%rbx), %r12 # A[10] * B[0] mulx (%rbp), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 # A[10] * B[1] mulx 8(%rbp), %rax, %rcx - movq %r8, 80(%rsp) + movq %r8, 80(%rbx) adcxq %rax, %r9 adoxq %rcx, %r10 # A[10] * B[2] mulx 16(%rbp), %rax, %rcx - movq %r9, 88(%rsp) + movq %r9, 88(%rbx) adcxq %rax, %r10 adoxq %rcx, %r11 # A[10] * B[3] mulx 24(%rbp), %rax, %rcx - movq %r10, 96(%rsp) + movq %r10, 96(%rbx) adcxq %rax, %r11 adoxq %rcx, %r12 - movq %r11, 104(%rsp) - movq %rbx, %r8 + movq %r11, 104(%rbx) + movq 120(%rbx), %r8 movq 128(%rdi), %r9 movq 136(%rdi), %r10 movq 144(%rdi), %r11 @@ -3987,12 +3991,12 @@ _sp_2048_mul_avx2_16: adoxq %rcx, %r8 # A[10] * B[5] mulx 40(%rbp), %rax, %rcx - movq %r12, %r15 + movq %r12, 112(%rbx) adcxq %rax, %r8 adoxq %rcx, %r9 # A[10] * B[6] mulx 48(%rbp), %rax, %rcx - movq %r8, %rbx + movq %r8, 120(%rbx) adcxq %rax, %r9 adoxq %rcx, %r10 # A[10] * B[7] @@ -4055,31 +4059,31 @@ _sp_2048_mul_avx2_16: movq %r8, 200(%rdi) movq %r9, 208(%rdi) movq 88(%rsi), %rdx - movq 88(%rsp), %r9 - movq 96(%rsp), %r10 - movq 104(%rsp), %r11 - movq %r15, %r12 - movq %rbx, %r8 + movq 88(%rbx), %r9 + movq 96(%rbx), %r10 + movq 104(%rbx), %r11 + movq 112(%rbx), %r12 + movq 120(%rbx), %r8 # A[11] * B[0] mulx (%rbp), %rax, %rcx adcxq %rax, %r9 adoxq %rcx, %r10 # A[11] * B[1] mulx 8(%rbp), %rax, %rcx - movq %r9, 88(%rsp) + movq %r9, 88(%rbx) adcxq %rax, %r10 adoxq %rcx, %r11 # A[11] * B[2] mulx 16(%rbp), %rax, %rcx - movq %r10, 96(%rsp) + movq %r10, 96(%rbx) adcxq %rax, %r11 adoxq %rcx, %r12 # A[11] * B[3] mulx 24(%rbp), %rax, %rcx - movq %r11, 104(%rsp) + movq %r11, 104(%rbx) adcxq %rax, %r12 adoxq %rcx, %r8 - movq %r12, %r15 + movq %r12, 112(%rbx) movq 128(%rdi), %r9 movq 136(%rdi), %r10 movq 144(%rdi), %r11 @@ -4090,7 +4094,7 @@ _sp_2048_mul_avx2_16: adoxq %rcx, %r9 # A[11] * B[5] mulx 40(%rbp), %rax, %rcx - movq %r8, %rbx + movq %r8, 120(%rbx) adcxq %rax, %r9 adoxq %rcx, %r10 # A[11] * B[6] @@ -4158,10 +4162,10 @@ _sp_2048_mul_avx2_16: movq %r9, 208(%rdi) movq %r10, 216(%rdi) movq 96(%rsi), %rdx - movq 96(%rsp), %r10 - movq 104(%rsp), %r11 - movq %r15, %r12 - movq %rbx, %r8 + movq 96(%rbx), %r10 + movq 104(%rbx), %r11 + movq 112(%rbx), %r12 + movq 120(%rbx), %r8 movq 128(%rdi), %r9 # A[12] * B[0] mulx (%rbp), %rax, %rcx @@ -4169,20 +4173,20 @@ _sp_2048_mul_avx2_16: adoxq %rcx, %r11 # A[12] * B[1] mulx 8(%rbp), %rax, %rcx - movq %r10, 96(%rsp) + movq %r10, 96(%rbx) adcxq %rax, %r11 adoxq %rcx, %r12 # A[12] * B[2] mulx 16(%rbp), %rax, %rcx - movq %r11, 104(%rsp) + movq %r11, 104(%rbx) adcxq %rax, %r12 adoxq %rcx, %r8 # A[12] * B[3] mulx 24(%rbp), %rax, %rcx - movq %r12, %r15 + movq %r12, 112(%rbx) adcxq %rax, %r8 adoxq %rcx, %r9 - movq %r8, %rbx + movq %r8, 120(%rbx) movq 136(%rdi), %r10 movq 144(%rdi), %r11 movq 152(%rdi), %r12 @@ -4261,9 +4265,9 @@ _sp_2048_mul_avx2_16: movq %r10, 216(%rdi) movq %r11, 224(%rdi) movq 104(%rsi), %rdx - movq 104(%rsp), %r11 - movq %r15, %r12 - movq %rbx, %r8 + movq 104(%rbx), %r11 + movq 112(%rbx), %r12 + movq 120(%rbx), %r8 movq 128(%rdi), %r9 movq 136(%rdi), %r10 # A[13] * B[0] @@ -4272,17 +4276,17 @@ _sp_2048_mul_avx2_16: adoxq %rcx, %r12 # A[13] * B[1] mulx 8(%rbp), %rax, %rcx - movq %r11, 104(%rsp) + movq %r11, 104(%rbx) adcxq %rax, %r12 adoxq %rcx, %r8 # A[13] * B[2] mulx 16(%rbp), %rax, %rcx - movq %r12, %r15 + movq %r12, 112(%rbx) adcxq %rax, %r8 adoxq %rcx, %r9 # A[13] * B[3] mulx 24(%rbp), %rax, %rcx - movq %r8, %rbx + movq %r8, 120(%rbx) adcxq %rax, %r9 adoxq %rcx, %r10 movq %r9, 128(%rdi) @@ -4364,8 +4368,8 @@ _sp_2048_mul_avx2_16: movq %r11, 224(%rdi) movq %r12, 232(%rdi) movq 112(%rsi), %rdx - movq %r15, %r12 - movq %rbx, %r8 + movq 112(%rbx), %r12 + movq 120(%rbx), %r8 movq 128(%rdi), %r9 movq 136(%rdi), %r10 movq 144(%rdi), %r11 @@ -4375,12 +4379,12 @@ _sp_2048_mul_avx2_16: adoxq %rcx, %r8 # A[14] * B[1] mulx 8(%rbp), %rax, %rcx - movq %r12, %r15 + movq %r12, 112(%rbx) adcxq %rax, %r8 adoxq %rcx, %r9 # A[14] * B[2] mulx 16(%rbp), %rax, %rcx - movq %r8, %rbx + movq %r8, 120(%rbx) adcxq %rax, %r9 adoxq %rcx, %r10 # A[14] * B[3] @@ -4467,7 +4471,7 @@ _sp_2048_mul_avx2_16: movq %r12, 232(%rdi) movq %r8, 240(%rdi) movq 120(%rsi), %rdx - movq %rbx, %r8 + movq 120(%rbx), %r8 movq 128(%rdi), %r9 movq 136(%rdi), %r10 movq 144(%rdi), %r11 @@ -4478,7 +4482,7 @@ _sp_2048_mul_avx2_16: adoxq %rcx, %r9 # A[15] * B[1] mulx 8(%rbp), %rax, %rcx - movq %r8, %rbx + movq %r8, 120(%rbx) adcxq %rax, %r9 adoxq %rcx, %r10 # A[15] * B[2] @@ -4566,23 +4570,34 @@ _sp_2048_mul_avx2_16: adcxq %r13, %r9 movq %r8, 240(%rdi) movq %r9, 248(%rdi) - vmovdqu (%rsp), %ymm0 - vmovdqu 32(%rsp), %ymm1 - vmovdqu 64(%rsp), %ymm2 - vmovdqu 96(%rsp), %xmm3 - vmovdqu %ymm0, (%rdi) - vmovdqu %ymm1, 32(%rdi) - vmovdqu %ymm2, 64(%rdi) - vmovdqu %xmm3, 96(%rdi) - movq %r15, 112(%rdi) - movq %rbx, 120(%rdi) + cmpq %rdi, %rsi + je L_start_2048_mul_avx2_16 + cmpq %rdi, %rbp + jne L_end_2048_mul_avx2_16 +L_start_2048_mul_avx2_16: + vmovdqu (%rbx), %xmm0 + vmovups %xmm0, (%rdi) + vmovdqu 16(%rbx), %xmm0 + vmovups %xmm0, 16(%rdi) + vmovdqu 32(%rbx), %xmm0 + vmovups %xmm0, 32(%rdi) + vmovdqu 48(%rbx), %xmm0 + vmovups %xmm0, 48(%rdi) + vmovdqu 64(%rbx), %xmm0 + vmovups %xmm0, 64(%rdi) + vmovdqu 80(%rbx), %xmm0 + vmovups %xmm0, 80(%rdi) + vmovdqu 96(%rbx), %xmm0 + vmovups %xmm0, 96(%rdi) + vmovdqu 112(%rbx), %xmm0 + vmovups %xmm0, 112(%rdi) +L_end_2048_mul_avx2_16: addq $128, %rsp - pop %rbx - pop %r15 pop %r14 pop %r13 pop %r12 pop %rbp + pop %rbx repz retq #ifndef __APPLE__ .size sp_2048_mul_avx2_16,.-sp_2048_mul_avx2_16 @@ -4607,16 +4622,16 @@ _sp_2048_sqr_avx2_16: push %rbp push %r12 push %r13 + push %r14 + push %r15 + push %rbx subq $128, %rsp cmpq %rdi, %rsi movq %rsp, %rbp cmovne %rdi, %rbp - xorq %r12, %r12 - # Diagonal 1 - xorq %r8, %r8 - xorq %r9, %r9 - xorq %r10, %r10 xorq %r11, %r11 + # Diagonal 1 + xorq %r10, %r10 # A[1] x A[0] movq (%rsi), %rdx mulxq 8(%rsi), %r8, %r9 @@ -4624,70 +4639,70 @@ _sp_2048_sqr_avx2_16: mulxq 16(%rsi), %rax, %rcx adcxq %rax, %r9 adoxq %rcx, %r10 + movq %r8, 8(%rbp) + movq %r9, 16(%rbp) + movq %r11, %r8 + movq %r11, %r9 # A[3] x A[0] mulxq 24(%rsi), %rax, %rcx adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 8(%rbp) - movq %r9, 16(%rbp) - movq %r10, 24(%rbp) - movq %r12, %r8 - movq %r12, %r9 - movq %r12, %r10 + adoxq %rcx, %r8 # A[4] x A[0] mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r10, 24(%rbp) + movq %r8, 32(%rbp) + movq %r11, %r10 + movq %r11, %r8 # A[5] x A[0] mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 + adcxq %rax, %r9 + adoxq %rcx, %r10 # A[6] x A[0] mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 32(%rbp) - movq %r8, 40(%rbp) - movq %r9, 48(%rbp) - movq %r12, %r11 - movq %r12, %r8 - movq %r12, %r9 + adcxq %rax, %r10 + adoxq %rcx, %r8 + movq %r9, 40(%rbp) + movq %r10, 48(%rbp) + movq %r11, %r9 + movq %r11, %r10 # A[7] x A[0] mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[8] x A[0] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[9] x A[0] - mulxq 72(%rsi), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 - movq %r10, 56(%rbp) - movq %r11, 64(%rbp) - movq %r8, 72(%rbp) - movq %r12, %r10 - movq %r12, %r11 - movq %r12, %r8 - # A[10] x A[0] - mulxq 80(%rsi), %rax, %rcx + # A[8] x A[0] + mulxq 64(%rsi), %rax, %rcx adcxq %rax, %r9 adoxq %rcx, %r10 + movq %r8, 56(%rbp) + movq %r9, 64(%rbp) + movq %r11, %r8 + movq %r11, %r9 + # A[9] x A[0] + mulxq 72(%rsi), %rax, %rcx + adcxq %rax, %r10 + adoxq %rcx, %r8 + # A[10] x A[0] + mulxq 80(%rsi), %rax, %rcx + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r10, 72(%rbp) + movq %r8, 80(%rbp) + movq %r11, %r10 + movq %r11, %r8 # A[11] x A[0] mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 + adcxq %rax, %r9 + adoxq %rcx, %r10 # A[12] x A[0] mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r11 + adcxq %rax, %r10 adoxq %rcx, %r8 - movq %r9, 80(%rbp) - movq %r10, 88(%rbp) - movq %r11, 96(%rbp) - movq %r12, %r9 - movq %r12, %r10 - movq %r12, %r11 + movq %r9, 88(%rbp) + movq %r10, %r13 + movq %r11, %r9 + movq %r11, %r10 # A[13] x A[0] mulxq 104(%rsi), %rax, %rcx adcxq %rax, %r8 @@ -4696,323 +4711,323 @@ _sp_2048_sqr_avx2_16: mulxq 112(%rsi), %rax, %rcx adcxq %rax, %r9 adoxq %rcx, %r10 + movq %r8, %r14 + movq %r9, %r15 + movq %r11, %r8 # A[15] x A[0] mulxq 120(%rsi), %rax, %rcx adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 104(%rbp) - movq %r9, 112(%rbp) - movq %r10, 120(%rbp) + adoxq %rcx, %r8 + movq %r10, %rbx # Carry - adcxq %r12, %r11 - movq %r12, %r13 - adcxq %r12, %r13 - adoxq %r12, %r13 - movq %r11, 128(%rdi) + adcxq %r11, %r8 + movq %r11, %r12 + adcxq %r11, %r12 + adoxq %r11, %r12 + movq %r8, 128(%rdi) # Diagonal 2 - movq 24(%rbp), %r11 - movq 32(%rbp), %r8 - movq 40(%rbp), %r9 - movq 48(%rbp), %r10 + movq 24(%rbp), %r8 + movq 32(%rbp), %r9 + movq 40(%rbp), %r10 # A[2] x A[1] movq 8(%rsi), %rdx mulxq 16(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 + adcxq %rax, %r8 + adoxq %rcx, %r9 # A[3] x A[1] mulxq 24(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 + adcxq %rax, %r9 + adoxq %rcx, %r10 + movq %r8, 24(%rbp) + movq %r9, 32(%rbp) + movq 48(%rbp), %r8 + movq 56(%rbp), %r9 # A[4] x A[1] mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 24(%rbp) - movq %r8, 32(%rbp) - movq %r9, 40(%rbp) - movq 56(%rbp), %r11 - movq 64(%rbp), %r8 - movq 72(%rbp), %r9 + adcxq %rax, %r10 + adoxq %rcx, %r8 # A[5] x A[1] mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[6] x A[1] - mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[7] x A[1] - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 48(%rbp) - movq %r11, 56(%rbp) - movq %r8, 64(%rbp) - movq 80(%rbp), %r10 - movq 88(%rbp), %r11 - movq 96(%rbp), %r8 - # A[8] x A[1] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[9] x A[1] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[10] x A[1] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - movq %r9, 72(%rbp) - movq %r10, 80(%rbp) - movq %r11, 88(%rbp) - movq 104(%rbp), %r9 - movq 112(%rbp), %r10 - movq 120(%rbp), %r11 - # A[11] x A[1] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[12] x A[1] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[13] x A[1] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 96(%rbp) - movq %r9, 104(%rbp) - movq %r10, 112(%rbp) - movq 128(%rdi), %r8 - movq %r12, %r9 - movq %r12, %r10 - # A[14] x A[1] - mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[15] x A[1] - mulxq 120(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[15] x A[2] - movq 16(%rsi), %rdx - mulxq 120(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 120(%rbp) - movq %r8, 128(%rdi) - movq %r9, 136(%rdi) - # Carry - adcxq %r13, %r10 - movq %r12, %r13 - adcxq %r12, %r13 - adoxq %r12, %r13 - movq %r10, 144(%rdi) - # Diagonal 3 - movq 40(%rbp), %r10 - movq 48(%rbp), %r11 - movq 56(%rbp), %r8 - movq 64(%rbp), %r9 - # A[3] x A[2] - mulxq 24(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[4] x A[2] - mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[5] x A[2] - mulxq 40(%rsi), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 movq %r10, 40(%rbp) - movq %r11, 48(%rbp) - movq %r8, 56(%rbp) - movq 72(%rbp), %r10 - movq 80(%rbp), %r11 - movq 88(%rbp), %r8 - # A[6] x A[2] + movq %r8, 48(%rbp) + movq 64(%rbp), %r10 + movq 72(%rbp), %r8 + # A[6] x A[1] mulxq 48(%rsi), %rax, %rcx adcxq %rax, %r9 adoxq %rcx, %r10 - # A[7] x A[2] + # A[7] x A[1] mulxq 56(%rsi), %rax, %rcx adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[8] x A[2] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - movq %r9, 64(%rbp) - movq %r10, 72(%rbp) - movq %r11, 80(%rbp) - movq 96(%rbp), %r9 - movq 104(%rbp), %r10 - movq 112(%rbp), %r11 - # A[9] x A[2] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[10] x A[2] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[11] x A[2] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 88(%rbp) - movq %r9, 96(%rbp) - movq %r10, 104(%rbp) - movq 120(%rbp), %r8 - movq 128(%rdi), %r9 - movq 136(%rdi), %r10 - # A[12] x A[2] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[13] x A[2] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[14] x A[2] - mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 112(%rbp) - movq %r8, 120(%rbp) - movq %r9, 128(%rdi) - movq 144(%rdi), %r11 - movq %r12, %r8 - movq %r12, %r9 - # A[14] x A[3] - movq 112(%rsi), %rdx - mulxq 24(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[14] x A[4] - mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[14] x A[5] - mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 136(%rdi) - movq %r11, 144(%rdi) - movq %r8, 152(%rdi) - # Carry - adcxq %r13, %r9 - movq %r12, %r13 - adcxq %r12, %r13 - adoxq %r12, %r13 - movq %r9, 160(%rdi) - # Diagonal 4 - movq 56(%rbp), %r9 - movq 64(%rbp), %r10 - movq 72(%rbp), %r11 - movq 80(%rbp), %r8 - # A[4] x A[3] - movq 24(%rsi), %rdx - mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[5] x A[3] - mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[6] x A[3] - mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r11 adoxq %rcx, %r8 movq %r9, 56(%rbp) movq %r10, 64(%rbp) - movq %r11, 72(%rbp) + movq 80(%rbp), %r9 + movq 88(%rbp), %r10 + # A[8] x A[1] + mulxq 64(%rsi), %rax, %rcx + adcxq %rax, %r8 + adoxq %rcx, %r9 + # A[9] x A[1] + mulxq 72(%rsi), %rax, %rcx + adcxq %rax, %r9 + adoxq %rcx, %r10 + movq %r8, 72(%rbp) + movq %r9, 80(%rbp) + # No load %r13 - %r8 + # No load %r14 - %r9 + # A[10] x A[1] + mulxq 80(%rsi), %rax, %rcx + adcxq %rax, %r10 + adoxq %rcx, %r13 + # A[11] x A[1] + mulxq 88(%rsi), %rax, %rcx + adcxq %rax, %r13 + adoxq %rcx, %r14 + movq %r10, 88(%rbp) + # No store %r13 + # No load %r15 - %r10 + # No load %rbx - %r8 + # A[12] x A[1] + mulxq 96(%rsi), %rax, %rcx + adcxq %rax, %r14 + adoxq %rcx, %r15 + # A[13] x A[1] + mulxq 104(%rsi), %rax, %rcx + adcxq %rax, %r15 + adoxq %rcx, %rbx + # No store %r14 + # No store %r15 + movq 128(%rdi), %r9 + movq %r11, %r10 + # A[14] x A[1] + mulxq 112(%rsi), %rax, %rcx + adcxq %rax, %rbx + adoxq %rcx, %r9 + # A[15] x A[1] + mulxq 120(%rsi), %rax, %rcx + adcxq %rax, %r9 + adoxq %rcx, %r10 + # No store %rbx + movq %r9, 128(%rdi) + movq %r11, %r8 + # A[15] x A[2] + movq 16(%rsi), %rdx + mulxq 120(%rsi), %rax, %rcx + adcxq %rax, %r10 + adoxq %rcx, %r8 + movq %r10, 136(%rdi) + # Carry + adcxq %r12, %r8 + movq %r11, %r12 + adcxq %r11, %r12 + adoxq %r11, %r12 + movq %r8, 144(%rdi) + # Diagonal 3 + movq 40(%rbp), %r8 + movq 48(%rbp), %r9 + movq 56(%rbp), %r10 + # A[3] x A[2] + mulxq 24(%rsi), %rax, %rcx + adcxq %rax, %r8 + adoxq %rcx, %r9 + # A[4] x A[2] + mulxq 32(%rsi), %rax, %rcx + adcxq %rax, %r9 + adoxq %rcx, %r10 + movq %r8, 40(%rbp) + movq %r9, 48(%rbp) + movq 64(%rbp), %r8 + movq 72(%rbp), %r9 + # A[5] x A[2] + mulxq 40(%rsi), %rax, %rcx + adcxq %rax, %r10 + adoxq %rcx, %r8 + # A[6] x A[2] + mulxq 48(%rsi), %rax, %rcx + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r10, 56(%rbp) + movq %r8, 64(%rbp) + movq 80(%rbp), %r10 + movq 88(%rbp), %r8 + # A[7] x A[2] + mulxq 56(%rsi), %rax, %rcx + adcxq %rax, %r9 + adoxq %rcx, %r10 + # A[8] x A[2] + mulxq 64(%rsi), %rax, %rcx + adcxq %rax, %r10 + adoxq %rcx, %r8 + movq %r9, 72(%rbp) + movq %r10, 80(%rbp) + # No load %r13 - %r9 + # No load %r14 - %r10 + # A[9] x A[2] + mulxq 72(%rsi), %rax, %rcx + adcxq %rax, %r8 + adoxq %rcx, %r13 + # A[10] x A[2] + mulxq 80(%rsi), %rax, %rcx + adcxq %rax, %r13 + adoxq %rcx, %r14 + movq %r8, 88(%rbp) + # No store %r13 + # No load %r15 - %r8 + # No load %rbx - %r9 + # A[11] x A[2] + mulxq 88(%rsi), %rax, %rcx + adcxq %rax, %r14 + adoxq %rcx, %r15 + # A[12] x A[2] + mulxq 96(%rsi), %rax, %rcx + adcxq %rax, %r15 + adoxq %rcx, %rbx + # No store %r14 + # No store %r15 + movq 128(%rdi), %r10 + movq 136(%rdi), %r8 + # A[13] x A[2] + mulxq 104(%rsi), %rax, %rcx + adcxq %rax, %rbx + adoxq %rcx, %r10 + # A[14] x A[2] + mulxq 112(%rsi), %rax, %rcx + adcxq %rax, %r10 + adoxq %rcx, %r8 + # No store %rbx + movq %r10, 128(%rdi) + movq 144(%rdi), %r9 + movq %r11, %r10 + # A[14] x A[3] + movq 112(%rsi), %rdx + mulxq 24(%rsi), %rax, %rcx + adcxq %rax, %r8 + adoxq %rcx, %r9 + # A[14] x A[4] + mulxq 32(%rsi), %rax, %rcx + adcxq %rax, %r9 + adoxq %rcx, %r10 + movq %r8, 136(%rdi) + movq %r9, 144(%rdi) + movq %r11, %r8 + # A[14] x A[5] + mulxq 40(%rsi), %rax, %rcx + adcxq %rax, %r10 + adoxq %rcx, %r8 + movq %r10, 152(%rdi) + # Carry + adcxq %r12, %r8 + movq %r11, %r12 + adcxq %r11, %r12 + adoxq %r11, %r12 + movq %r8, 160(%rdi) + # Diagonal 4 + movq 56(%rbp), %r8 + movq 64(%rbp), %r9 + movq 72(%rbp), %r10 + # A[4] x A[3] + movq 24(%rsi), %rdx + mulxq 32(%rsi), %rax, %rcx + adcxq %rax, %r8 + adoxq %rcx, %r9 + # A[5] x A[3] + mulxq 40(%rsi), %rax, %rcx + adcxq %rax, %r9 + adoxq %rcx, %r10 + movq %r8, 56(%rbp) + movq %r9, 64(%rbp) + movq 80(%rbp), %r8 movq 88(%rbp), %r9 - movq 96(%rbp), %r10 - movq 104(%rbp), %r11 + # A[6] x A[3] + mulxq 48(%rsi), %rax, %rcx + adcxq %rax, %r10 + adoxq %rcx, %r8 # A[7] x A[3] mulxq 56(%rsi), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 + movq %r10, 72(%rbp) + movq %r8, 80(%rbp) + # No load %r13 - %r10 + # No load %r14 - %r8 # A[8] x A[3] mulxq 64(%rsi), %rax, %rcx adcxq %rax, %r9 - adoxq %rcx, %r10 + adoxq %rcx, %r13 # A[9] x A[3] mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 80(%rbp) + adcxq %rax, %r13 + adoxq %rcx, %r14 movq %r9, 88(%rbp) - movq %r10, 96(%rbp) - movq 112(%rbp), %r8 - movq 120(%rbp), %r9 - movq 128(%rdi), %r10 + # No store %r13 + # No load %r15 - %r9 + # No load %rbx - %r10 # A[10] x A[3] mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 + adcxq %rax, %r14 + adoxq %rcx, %r15 # A[11] x A[3] mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 + adcxq %rax, %r15 + adoxq %rcx, %rbx + # No store %r14 + # No store %r15 + movq 128(%rdi), %r8 + movq 136(%rdi), %r9 # A[12] x A[3] mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 104(%rbp) - movq %r8, 112(%rbp) - movq %r9, 120(%rbp) - movq 136(%rdi), %r11 - movq 144(%rdi), %r8 - movq 152(%rdi), %r9 + adcxq %rax, %rbx + adoxq %rcx, %r8 # A[13] x A[3] mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 + adcxq %rax, %r8 + adoxq %rcx, %r9 + # No store %rbx + movq %r8, 128(%rdi) + movq 144(%rdi), %r10 + movq 152(%rdi), %r8 # A[13] x A[4] movq 104(%rsi), %rdx mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[13] x A[5] - mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 128(%rdi) - movq %r11, 136(%rdi) - movq %r8, 144(%rdi) - movq 160(%rdi), %r10 - movq %r12, %r11 - movq %r12, %r8 - # A[13] x A[6] - mulxq 48(%rsi), %rax, %rcx adcxq %rax, %r9 adoxq %rcx, %r10 + # A[13] x A[5] + mulxq 40(%rsi), %rax, %rcx + adcxq %rax, %r10 + adoxq %rcx, %r8 + movq %r9, 136(%rdi) + movq %r10, 144(%rdi) + movq 160(%rdi), %r9 + movq %r11, %r10 + # A[13] x A[6] + mulxq 48(%rsi), %rax, %rcx + adcxq %rax, %r8 + adoxq %rcx, %r9 # A[13] x A[7] mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 + adcxq %rax, %r9 + adoxq %rcx, %r10 + movq %r8, 152(%rdi) + movq %r9, 160(%rdi) + movq %r11, %r8 # A[13] x A[8] mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r11 + adcxq %rax, %r10 adoxq %rcx, %r8 - movq %r9, 152(%rdi) - movq %r10, 160(%rdi) - movq %r11, 168(%rdi) + movq %r10, 168(%rdi) # Carry - adcxq %r13, %r8 - movq %r12, %r13 - adcxq %r12, %r13 - adoxq %r12, %r13 + adcxq %r12, %r8 + movq %r11, %r12 + adcxq %r11, %r12 + adoxq %r11, %r12 movq %r8, 176(%rdi) # Diagonal 5 movq 72(%rbp), %r8 movq 80(%rbp), %r9 movq 88(%rbp), %r10 - movq 96(%rbp), %r11 # A[5] x A[4] movq 32(%rsi), %rdx mulxq 40(%rsi), %rax, %rcx @@ -5022,71 +5037,71 @@ _sp_2048_sqr_avx2_16: mulxq 48(%rsi), %rax, %rcx adcxq %rax, %r9 adoxq %rcx, %r10 + movq %r8, 72(%rbp) + movq %r9, 80(%rbp) + # No load %r13 - %r8 + # No load %r14 - %r9 # A[7] x A[4] mulxq 56(%rsi), %rax, %rcx adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 72(%rbp) - movq %r9, 80(%rbp) - movq %r10, 88(%rbp) - movq 104(%rbp), %r8 - movq 112(%rbp), %r9 - movq 120(%rbp), %r10 + adoxq %rcx, %r13 # A[8] x A[4] mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 + adcxq %rax, %r13 + adoxq %rcx, %r14 + movq %r10, 88(%rbp) + # No store %r13 + # No load %r15 - %r10 + # No load %rbx - %r8 # A[9] x A[4] mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 + adcxq %rax, %r14 + adoxq %rcx, %r15 # A[10] x A[4] mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 96(%rbp) - movq %r8, 104(%rbp) - movq %r9, 112(%rbp) - movq 128(%rdi), %r11 - movq 136(%rdi), %r8 - movq 144(%rdi), %r9 + adcxq %rax, %r15 + adoxq %rcx, %rbx + # No store %r14 + # No store %r15 + movq 128(%rdi), %r9 + movq 136(%rdi), %r10 # A[11] x A[4] mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 + adcxq %rax, %rbx + adoxq %rcx, %r9 # A[12] x A[4] mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 + adcxq %rax, %r9 + adoxq %rcx, %r10 + # No store %rbx + movq %r9, 128(%rdi) + movq 144(%rdi), %r8 + movq 152(%rdi), %r9 # A[12] x A[5] movq 96(%rsi), %rdx mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 120(%rbp) - movq %r11, 128(%rdi) - movq %r8, 136(%rdi) - movq 152(%rdi), %r10 - movq 160(%rdi), %r11 - movq 168(%rdi), %r8 + adcxq %rax, %r10 + adoxq %rcx, %r8 # A[12] x A[6] mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r10, 136(%rdi) + movq %r8, 144(%rdi) + movq 160(%rdi), %r10 + movq 168(%rdi), %r8 # A[12] x A[7] mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 + adcxq %rax, %r9 + adoxq %rcx, %r10 # A[12] x A[8] mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r11 + adcxq %rax, %r10 adoxq %rcx, %r8 - movq %r9, 144(%rdi) - movq %r10, 152(%rdi) - movq %r11, 160(%rdi) + movq %r9, 152(%rdi) + movq %r10, 160(%rdi) movq 176(%rdi), %r9 - movq %r12, %r10 - movq %r12, %r11 + movq %r11, %r10 # A[12] x A[9] mulxq 72(%rsi), %rax, %rcx adcxq %rax, %r8 @@ -5095,84 +5110,86 @@ _sp_2048_sqr_avx2_16: mulxq 80(%rsi), %rax, %rcx adcxq %rax, %r9 adoxq %rcx, %r10 + movq %r8, 168(%rdi) + movq %r9, 176(%rdi) + movq %r11, %r8 # A[12] x A[11] mulxq 88(%rsi), %rax, %rcx adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 168(%rdi) - movq %r9, 176(%rdi) + adoxq %rcx, %r8 movq %r10, 184(%rdi) # Carry - adcxq %r13, %r11 - movq %r12, %r13 - adcxq %r12, %r13 - adoxq %r12, %r13 - movq %r11, 192(%rdi) + adcxq %r12, %r8 + movq %r11, %r12 + adcxq %r11, %r12 + adoxq %r11, %r12 + movq %r8, 192(%rdi) # Diagonal 6 - movq 88(%rbp), %r11 - movq 96(%rbp), %r8 - movq 104(%rbp), %r9 - movq 112(%rbp), %r10 + movq 88(%rbp), %r8 + # No load %r13 - %r9 + # No load %r14 - %r10 # A[6] x A[5] movq 40(%rsi), %rdx mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 + adcxq %rax, %r8 + adoxq %rcx, %r13 # A[7] x A[5] mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 + adcxq %rax, %r13 + adoxq %rcx, %r14 + movq %r8, 88(%rbp) + # No store %r13 + # No load %r15 - %r8 + # No load %rbx - %r9 # A[8] x A[5] mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 88(%rbp) - movq %r8, 96(%rbp) - movq %r9, 104(%rbp) - movq 120(%rbp), %r11 - movq 128(%rdi), %r8 - movq 136(%rdi), %r9 + adcxq %rax, %r14 + adoxq %rcx, %r15 # A[9] x A[5] mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 + adcxq %rax, %r15 + adoxq %rcx, %rbx + # No store %r14 + # No store %r15 + movq 128(%rdi), %r10 + movq 136(%rdi), %r8 # A[10] x A[5] mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 + adcxq %rax, %rbx + adoxq %rcx, %r10 # A[11] x A[5] mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 112(%rbp) - movq %r11, 120(%rbp) - movq %r8, 128(%rdi) - movq 144(%rdi), %r10 - movq 152(%rdi), %r11 - movq 160(%rdi), %r8 + adcxq %rax, %r10 + adoxq %rcx, %r8 + # No store %rbx + movq %r10, 128(%rdi) + movq 144(%rdi), %r9 + movq 152(%rdi), %r10 # A[11] x A[6] movq 88(%rsi), %rdx mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 + adcxq %rax, %r8 + adoxq %rcx, %r9 # A[11] x A[7] mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 + adcxq %rax, %r9 + adoxq %rcx, %r10 + movq %r8, 136(%rdi) + movq %r9, 144(%rdi) + movq 160(%rdi), %r8 + movq 168(%rdi), %r9 # A[11] x A[8] mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r11 + adcxq %rax, %r10 adoxq %rcx, %r8 - movq %r9, 136(%rdi) - movq %r10, 144(%rdi) - movq %r11, 152(%rdi) - movq 168(%rdi), %r9 - movq 176(%rdi), %r10 - movq 184(%rdi), %r11 # A[11] x A[9] mulxq 72(%rsi), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 + movq %r10, 152(%rdi) + movq %r8, 160(%rdi) + movq 176(%rdi), %r10 + movq 184(%rdi), %r8 # A[11] x A[10] mulxq 80(%rsi), %rax, %rcx adcxq %rax, %r9 @@ -5181,77 +5198,75 @@ _sp_2048_sqr_avx2_16: movq 104(%rsi), %rdx mulxq 72(%rsi), %rax, %rcx adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 160(%rdi) + adoxq %rcx, %r8 movq %r9, 168(%rdi) movq %r10, 176(%rdi) - movq 192(%rdi), %r8 - movq %r12, %r9 - movq %r12, %r10 + movq 192(%rdi), %r9 + movq %r11, %r10 # A[13] x A[10] mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[13] x A[11] - mulxq 88(%rsi), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 - # A[13] x A[12] - mulxq 96(%rsi), %rax, %rcx + # A[13] x A[11] + mulxq 88(%rsi), %rax, %rcx adcxq %rax, %r9 adoxq %rcx, %r10 - movq %r11, 184(%rdi) - movq %r8, 192(%rdi) - movq %r9, 200(%rdi) + movq %r8, 184(%rdi) + movq %r9, 192(%rdi) + movq %r11, %r8 + # A[13] x A[12] + mulxq 96(%rsi), %rax, %rcx + adcxq %rax, %r10 + adoxq %rcx, %r8 + movq %r10, 200(%rdi) # Carry - adcxq %r13, %r10 - movq %r12, %r13 - adcxq %r12, %r13 - adoxq %r12, %r13 - movq %r10, 208(%rdi) + adcxq %r12, %r8 + movq %r11, %r12 + adcxq %r11, %r12 + adoxq %r11, %r12 + movq %r8, 208(%rdi) # Diagonal 7 - movq 104(%rbp), %r10 - movq 112(%rbp), %r11 - movq 120(%rbp), %r8 - movq 128(%rdi), %r9 + # No load %r14 - %r8 + # No load %r15 - %r9 + # No load %rbx - %r10 # A[7] x A[6] movq 48(%rsi), %rdx mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 + adcxq %rax, %r14 + adoxq %rcx, %r15 # A[8] x A[6] mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 + adcxq %rax, %r15 + adoxq %rcx, %rbx + # No store %r14 + # No store %r15 + movq 128(%rdi), %r8 + movq 136(%rdi), %r9 # A[9] x A[6] mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 104(%rbp) - movq %r11, 112(%rbp) - movq %r8, 120(%rbp) - movq 136(%rdi), %r10 - movq 144(%rdi), %r11 - movq 152(%rdi), %r8 + adcxq %rax, %rbx + adoxq %rcx, %r8 # A[10] x A[6] mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 + adcxq %rax, %r8 + adoxq %rcx, %r9 + # No store %rbx + movq %r8, 128(%rdi) + movq 144(%rdi), %r10 + movq 152(%rdi), %r8 # A[10] x A[7] movq 80(%rsi), %rdx mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 + adcxq %rax, %r9 + adoxq %rcx, %r10 # A[10] x A[8] mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r11 + adcxq %rax, %r10 adoxq %rcx, %r8 - movq %r9, 128(%rdi) - movq %r10, 136(%rdi) - movq %r11, 144(%rdi) + movq %r9, 136(%rdi) + movq %r10, 144(%rdi) movq 160(%rdi), %r9 movq 168(%rdi), %r10 - movq 176(%rdi), %r11 # A[10] x A[9] mulxq 72(%rsi), %rax, %rcx adcxq %rax, %r8 @@ -5261,85 +5276,87 @@ _sp_2048_sqr_avx2_16: mulxq 48(%rsi), %rax, %rcx adcxq %rax, %r9 adoxq %rcx, %r10 + movq %r8, 152(%rdi) + movq %r9, 160(%rdi) + movq 176(%rdi), %r8 + movq 184(%rdi), %r9 # A[14] x A[7] mulxq 56(%rsi), %rax, %rcx adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 152(%rdi) - movq %r9, 160(%rdi) - movq %r10, 168(%rdi) - movq 184(%rdi), %r8 - movq 192(%rdi), %r9 - movq 200(%rdi), %r10 + adoxq %rcx, %r8 # A[14] x A[8] mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r10, 168(%rdi) + movq %r8, 176(%rdi) + movq 192(%rdi), %r10 + movq 200(%rdi), %r8 # A[14] x A[9] mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[14] x A[10] - mulxq 80(%rsi), %rax, %rcx adcxq %rax, %r9 adoxq %rcx, %r10 - movq %r11, 176(%rdi) - movq %r8, 184(%rdi) - movq %r9, 192(%rdi) - movq 208(%rdi), %r11 - movq %r12, %r8 - movq %r12, %r9 + # A[14] x A[10] + mulxq 80(%rsi), %rax, %rcx + adcxq %rax, %r10 + adoxq %rcx, %r8 + movq %r9, 184(%rdi) + movq %r10, 192(%rdi) + movq 208(%rdi), %r9 + movq %r11, %r10 # A[14] x A[11] mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[14] x A[12] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[14] x A[13] - mulxq 104(%rsi), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 - movq %r10, 200(%rdi) - movq %r11, 208(%rdi) - movq %r8, 216(%rdi) + # A[14] x A[12] + mulxq 96(%rsi), %rax, %rcx + adcxq %rax, %r9 + adoxq %rcx, %r10 + movq %r8, 200(%rdi) + movq %r9, 208(%rdi) + movq %r11, %r8 + # A[14] x A[13] + mulxq 104(%rsi), %rax, %rcx + adcxq %rax, %r10 + adoxq %rcx, %r8 + movq %r10, 216(%rdi) # Carry - adcxq %r13, %r9 - movq %r12, %r13 - adcxq %r12, %r13 - adoxq %r12, %r13 - movq %r9, 224(%rdi) + adcxq %r12, %r8 + movq %r11, %r12 + adcxq %r11, %r12 + adoxq %r11, %r12 + movq %r8, 224(%rdi) # Diagonal 8 - movq 120(%rbp), %r9 - movq 128(%rdi), %r10 - movq 136(%rdi), %r11 - movq 144(%rdi), %r8 + # No load %rbx - %r8 + movq 128(%rdi), %r9 + movq 136(%rdi), %r10 # A[8] x A[7] movq 56(%rsi), %rdx mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 + adcxq %rax, %rbx + adoxq %rcx, %r9 # A[9] x A[7] mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 + adcxq %rax, %r9 + adoxq %rcx, %r10 + # No store %rbx + movq %r9, 128(%rdi) + movq 144(%rdi), %r8 + movq 152(%rdi), %r9 # A[9] x A[8] movq 64(%rsi), %rdx mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r11 + adcxq %rax, %r10 adoxq %rcx, %r8 - movq %r9, 120(%rbp) - movq %r10, 128(%rdi) - movq %r11, 136(%rdi) - movq 152(%rdi), %r9 - movq 160(%rdi), %r10 - movq 168(%rdi), %r11 # A[15] x A[3] movq 120(%rsi), %rdx mulxq 24(%rsi), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 + movq %r10, 136(%rdi) + movq %r8, 144(%rdi) + movq 160(%rdi), %r10 + movq 168(%rdi), %r8 # A[15] x A[4] mulxq 32(%rsi), %rax, %rcx adcxq %rax, %r9 @@ -5347,71 +5364,70 @@ _sp_2048_sqr_avx2_16: # A[15] x A[5] mulxq 40(%rsi), %rax, %rcx adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 144(%rdi) + adoxq %rcx, %r8 movq %r9, 152(%rdi) movq %r10, 160(%rdi) - movq 176(%rdi), %r8 - movq 184(%rdi), %r9 - movq 192(%rdi), %r10 + movq 176(%rdi), %r9 + movq 184(%rdi), %r10 # A[15] x A[6] mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 + adcxq %rax, %r8 + adoxq %rcx, %r9 # A[15] x A[7] mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 + adcxq %rax, %r9 + adoxq %rcx, %r10 + movq %r8, 168(%rdi) + movq %r9, 176(%rdi) + movq 192(%rdi), %r8 + movq 200(%rdi), %r9 # A[15] x A[8] mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 168(%rdi) - movq %r8, 176(%rdi) - movq %r9, 184(%rdi) - movq 200(%rdi), %r11 - movq 208(%rdi), %r8 - movq 216(%rdi), %r9 + adcxq %rax, %r10 + adoxq %rcx, %r8 # A[15] x A[9] mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[15] x A[10] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[15] x A[11] - mulxq 88(%rsi), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 - movq %r10, 192(%rdi) - movq %r11, 200(%rdi) - movq %r8, 208(%rdi) - movq 224(%rdi), %r10 - movq %r12, %r11 - movq %r12, %r8 - # A[15] x A[12] - mulxq 96(%rsi), %rax, %rcx + movq %r10, 184(%rdi) + movq %r8, 192(%rdi) + movq 208(%rdi), %r10 + movq 216(%rdi), %r8 + # A[15] x A[10] + mulxq 80(%rsi), %rax, %rcx adcxq %rax, %r9 adoxq %rcx, %r10 + # A[15] x A[11] + mulxq 88(%rsi), %rax, %rcx + adcxq %rax, %r10 + adoxq %rcx, %r8 + movq %r9, 200(%rdi) + movq %r10, 208(%rdi) + movq 224(%rdi), %r9 + movq %r11, %r10 + # A[15] x A[12] + mulxq 96(%rsi), %rax, %rcx + adcxq %rax, %r8 + adoxq %rcx, %r9 # A[15] x A[13] mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 + adcxq %rax, %r9 + adoxq %rcx, %r10 + movq %r8, 216(%rdi) + movq %r9, 224(%rdi) + movq %r11, %r8 # A[15] x A[14] mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %r11 + adcxq %rax, %r10 adoxq %rcx, %r8 - movq %r9, 216(%rdi) - movq %r10, 224(%rdi) - movq %r11, 232(%rdi) + movq %r10, 232(%rdi) # Carry - adcxq %r13, %r8 - movq %r12, %r13 - adcxq %r12, %r13 - adoxq %r12, %r13 + adcxq %r12, %r8 + movq %r11, %r12 + adcxq %r11, %r12 + adoxq %r11, %r12 movq %r8, 240(%rdi) - movq %r13, 248(%rdi) + movq %r12, 248(%rdi) # Double and Add in A[i] x A[i] movq 8(%rbp), %r9 # A[0] x A[0] @@ -5427,8 +5443,8 @@ _sp_2048_sqr_avx2_16: movq 8(%rsi), %rdx mulxq %rdx, %rax, %rcx adoxq %r8, %r8 - adcxq %rax, %r8 adoxq %r9, %r9 + adcxq %rax, %r8 adcxq %rcx, %r9 movq %r8, 16(%rbp) movq %r9, 24(%rbp) @@ -5438,8 +5454,8 @@ _sp_2048_sqr_avx2_16: movq 16(%rsi), %rdx mulxq %rdx, %rax, %rcx adoxq %r8, %r8 - adcxq %rax, %r8 adoxq %r9, %r9 + adcxq %rax, %r8 adcxq %rcx, %r9 movq %r8, 32(%rbp) movq %r9, 40(%rbp) @@ -5449,8 +5465,8 @@ _sp_2048_sqr_avx2_16: movq 24(%rsi), %rdx mulxq %rdx, %rax, %rcx adoxq %r8, %r8 - adcxq %rax, %r8 adoxq %r9, %r9 + adcxq %rax, %r8 adcxq %rcx, %r9 movq %r8, 48(%rbp) movq %r9, 56(%rbp) @@ -5460,8 +5476,8 @@ _sp_2048_sqr_avx2_16: movq 32(%rsi), %rdx mulxq %rdx, %rax, %rcx adoxq %r8, %r8 - adcxq %rax, %r8 adoxq %r9, %r9 + adcxq %rax, %r8 adcxq %rcx, %r9 movq %r8, 64(%rbp) movq %r9, 72(%rbp) @@ -5471,41 +5487,33 @@ _sp_2048_sqr_avx2_16: movq 40(%rsi), %rdx mulxq %rdx, %rax, %rcx adoxq %r8, %r8 - adcxq %rax, %r8 adoxq %r9, %r9 + adcxq %rax, %r8 adcxq %rcx, %r9 movq %r8, 80(%rbp) movq %r9, 88(%rbp) - movq 96(%rbp), %r8 - movq 104(%rbp), %r9 # A[6] x A[6] movq 48(%rsi), %rdx mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adcxq %rax, %r8 - adoxq %r9, %r9 - adcxq %rcx, %r9 - movq %r8, 96(%rbp) - movq %r9, 104(%rbp) - movq 112(%rbp), %r8 - movq 120(%rbp), %r9 + adoxq %r13, %r13 + adoxq %r14, %r14 + adcxq %rax, %r13 + adcxq %rcx, %r14 # A[7] x A[7] movq 56(%rsi), %rdx mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adcxq %rax, %r8 - adoxq %r9, %r9 - adcxq %rcx, %r9 - movq %r8, 112(%rbp) - movq %r9, 120(%rbp) + adoxq %r15, %r15 + adoxq %rbx, %rbx + adcxq %rax, %r15 + adcxq %rcx, %rbx movq 128(%rdi), %r8 movq 136(%rdi), %r9 # A[8] x A[8] movq 64(%rsi), %rdx mulxq %rdx, %rax, %rcx adoxq %r8, %r8 - adcxq %rax, %r8 adoxq %r9, %r9 + adcxq %rax, %r8 adcxq %rcx, %r9 movq %r8, 128(%rdi) movq %r9, 136(%rdi) @@ -5515,8 +5523,8 @@ _sp_2048_sqr_avx2_16: movq 72(%rsi), %rdx mulxq %rdx, %rax, %rcx adoxq %r8, %r8 - adcxq %rax, %r8 adoxq %r9, %r9 + adcxq %rax, %r8 adcxq %rcx, %r9 movq %r8, 144(%rdi) movq %r9, 152(%rdi) @@ -5526,8 +5534,8 @@ _sp_2048_sqr_avx2_16: movq 80(%rsi), %rdx mulxq %rdx, %rax, %rcx adoxq %r8, %r8 - adcxq %rax, %r8 adoxq %r9, %r9 + adcxq %rax, %r8 adcxq %rcx, %r9 movq %r8, 160(%rdi) movq %r9, 168(%rdi) @@ -5537,8 +5545,8 @@ _sp_2048_sqr_avx2_16: movq 88(%rsi), %rdx mulxq %rdx, %rax, %rcx adoxq %r8, %r8 - adcxq %rax, %r8 adoxq %r9, %r9 + adcxq %rax, %r8 adcxq %rcx, %r9 movq %r8, 176(%rdi) movq %r9, 184(%rdi) @@ -5548,8 +5556,8 @@ _sp_2048_sqr_avx2_16: movq 96(%rsi), %rdx mulxq %rdx, %rax, %rcx adoxq %r8, %r8 - adcxq %rax, %r8 adoxq %r9, %r9 + adcxq %rax, %r8 adcxq %rcx, %r9 movq %r8, 192(%rdi) movq %r9, 200(%rdi) @@ -5559,8 +5567,8 @@ _sp_2048_sqr_avx2_16: movq 104(%rsi), %rdx mulxq %rdx, %rax, %rcx adoxq %r8, %r8 - adcxq %rax, %r8 adoxq %r9, %r9 + adcxq %rax, %r8 adcxq %rcx, %r9 movq %r8, 208(%rdi) movq %r9, 216(%rdi) @@ -5570,8 +5578,8 @@ _sp_2048_sqr_avx2_16: movq 112(%rsi), %rdx mulxq %rdx, %rax, %rcx adoxq %r8, %r8 - adcxq %rax, %r8 adoxq %r9, %r9 + adcxq %rax, %r8 adcxq %rcx, %r9 movq %r8, 224(%rdi) movq %r9, 232(%rdi) @@ -5581,25 +5589,34 @@ _sp_2048_sqr_avx2_16: movq 120(%rsi), %rdx mulxq %rdx, %rax, %rcx adoxq %r8, %r8 - adcxq %rax, %r8 adoxq %r9, %r9 + adcxq %rax, %r8 adcxq %rcx, %r9 movq %r8, 240(%rdi) movq %r9, 248(%rdi) + movq %r13, 96(%rdi) + movq %r14, 104(%rdi) + movq %r15, 112(%rdi) + movq %rbx, 120(%rdi) cmpq %rdi, %rsi jne L_end_2048_sqr_avx2_16 - vmovdqu (%rbp), %ymm0 - vmovdqu 32(%rbp), %ymm1 - vmovdqu 64(%rbp), %ymm2 - vmovdqu 96(%rbp), %ymm3 - vmovdqu 128(%rdi), %ymm4 - vmovdqu %ymm0, (%rdi) - vmovdqu %ymm1, 32(%rdi) - vmovdqu %ymm2, 64(%rdi) - vmovdqu %ymm3, 96(%rdi) - vmovdqu %ymm4, 128(%rdi) + vmovdqu (%rbp), %xmm0 + vmovups %xmm0, (%rdi) + vmovdqu 16(%rbp), %xmm0 + vmovups %xmm0, 16(%rdi) + vmovdqu 32(%rbp), %xmm0 + vmovups %xmm0, 32(%rdi) + vmovdqu 48(%rbp), %xmm0 + vmovups %xmm0, 48(%rdi) + vmovdqu 64(%rbp), %xmm0 + vmovups %xmm0, 64(%rdi) + vmovdqu 80(%rbp), %xmm0 + vmovups %xmm0, 80(%rdi) L_end_2048_sqr_avx2_16: addq $128, %rsp + pop %rbx + pop %r15 + pop %r14 pop %r13 pop %r12 pop %rbp @@ -5624,6 +5641,7 @@ sp_2048_add_16: .p2align 4 _sp_2048_add_16: #endif /* __APPLE__ */ + # Add movq (%rsi), %rcx xorq %rax, %rax addq (%rdx), %rcx @@ -5811,6 +5829,7 @@ sp_2048_add_32: .p2align 4 _sp_2048_add_32: #endif /* __APPLE__ */ + # Add movq (%rsi), %rcx xorq %rax, %rax addq (%rdx), %rcx @@ -5913,6 +5932,725 @@ _sp_2048_add_32: #ifndef __APPLE__ .size sp_2048_add_32,.-sp_2048_add_32 #endif /* __APPLE__ */ +/* Multiply a and b into r. (r = a * b) + * + * r A single precision integer. + * a A single precision integer. + * b A single precision integer. + */ +#ifndef __APPLE__ +.globl sp_2048_mul_32 +.type sp_2048_mul_32,@function +.align 16 +sp_2048_mul_32: +#else +.globl _sp_2048_mul_32 +.p2align 4 +_sp_2048_mul_32: +#endif /* __APPLE__ */ + push %r12 + push %r13 + push %r14 + push %r15 + subq $808, %rsp + movq %rdi, 768(%rsp) + movq %rsi, 776(%rsp) + movq %rdx, 784(%rsp) + leaq 512(%rsp), %r10 + leaq 128(%rsi), %r12 + # Add + movq (%rsi), %rax + xorq %r13, %r13 + addq (%r12), %rax + movq 8(%rsi), %rcx + movq %rax, (%r10) + adcq 8(%r12), %rcx + movq 16(%rsi), %r8 + movq %rcx, 8(%r10) + adcq 16(%r12), %r8 + movq 24(%rsi), %rax + movq %r8, 16(%r10) + adcq 24(%r12), %rax + movq 32(%rsi), %rcx + movq %rax, 24(%r10) + adcq 32(%r12), %rcx + movq 40(%rsi), %r8 + movq %rcx, 32(%r10) + adcq 40(%r12), %r8 + movq 48(%rsi), %rax + movq %r8, 40(%r10) + adcq 48(%r12), %rax + movq 56(%rsi), %rcx + movq %rax, 48(%r10) + adcq 56(%r12), %rcx + movq 64(%rsi), %r8 + movq %rcx, 56(%r10) + adcq 64(%r12), %r8 + movq 72(%rsi), %rax + movq %r8, 64(%r10) + adcq 72(%r12), %rax + movq 80(%rsi), %rcx + movq %rax, 72(%r10) + adcq 80(%r12), %rcx + movq 88(%rsi), %r8 + movq %rcx, 80(%r10) + adcq 88(%r12), %r8 + movq 96(%rsi), %rax + movq %r8, 88(%r10) + adcq 96(%r12), %rax + movq 104(%rsi), %rcx + movq %rax, 96(%r10) + adcq 104(%r12), %rcx + movq 112(%rsi), %r8 + movq %rcx, 104(%r10) + adcq 112(%r12), %r8 + movq 120(%rsi), %rax + movq %r8, 112(%r10) + adcq 120(%r12), %rax + movq %rax, 120(%r10) + adcq $0, %r13 + movq %r13, 792(%rsp) + leaq 640(%rsp), %r11 + leaq 128(%rdx), %r12 + # Add + movq (%rdx), %rax + xorq %r14, %r14 + addq (%r12), %rax + movq 8(%rdx), %rcx + movq %rax, (%r11) + adcq 8(%r12), %rcx + movq 16(%rdx), %r8 + movq %rcx, 8(%r11) + adcq 16(%r12), %r8 + movq 24(%rdx), %rax + movq %r8, 16(%r11) + adcq 24(%r12), %rax + movq 32(%rdx), %rcx + movq %rax, 24(%r11) + adcq 32(%r12), %rcx + movq 40(%rdx), %r8 + movq %rcx, 32(%r11) + adcq 40(%r12), %r8 + movq 48(%rdx), %rax + movq %r8, 40(%r11) + adcq 48(%r12), %rax + movq 56(%rdx), %rcx + movq %rax, 48(%r11) + adcq 56(%r12), %rcx + movq 64(%rdx), %r8 + movq %rcx, 56(%r11) + adcq 64(%r12), %r8 + movq 72(%rdx), %rax + movq %r8, 64(%r11) + adcq 72(%r12), %rax + movq 80(%rdx), %rcx + movq %rax, 72(%r11) + adcq 80(%r12), %rcx + movq 88(%rdx), %r8 + movq %rcx, 80(%r11) + adcq 88(%r12), %r8 + movq 96(%rdx), %rax + movq %r8, 88(%r11) + adcq 96(%r12), %rax + movq 104(%rdx), %rcx + movq %rax, 96(%r11) + adcq 104(%r12), %rcx + movq 112(%rdx), %r8 + movq %rcx, 104(%r11) + adcq 112(%r12), %r8 + movq 120(%rdx), %rax + movq %r8, 112(%r11) + adcq 120(%r12), %rax + movq %rax, 120(%r11) + adcq $0, %r14 + movq %r14, 800(%rsp) + movq %r11, %rdx + movq %r10, %rsi + movq %rsp, %rdi +#ifndef __APPLE__ + callq sp_2048_mul_16@plt +#else + callq _sp_2048_mul_16 +#endif /* __APPLE__ */ + movq 784(%rsp), %rdx + movq 776(%rsp), %rsi + leaq 256(%rsp), %rdi + addq $128, %rdx + addq $128, %rsi +#ifndef __APPLE__ + callq sp_2048_mul_16@plt +#else + callq _sp_2048_mul_16 +#endif /* __APPLE__ */ + movq 784(%rsp), %rdx + movq 776(%rsp), %rsi + movq 768(%rsp), %rdi +#ifndef __APPLE__ + callq sp_2048_mul_16@plt +#else + callq _sp_2048_mul_16 +#endif /* __APPLE__ */ + movq 792(%rsp), %r13 + movq 800(%rsp), %r14 + movq 768(%rsp), %r15 + movq %r13, %r9 + leaq 512(%rsp), %r10 + leaq 640(%rsp), %r11 + andq %r14, %r9 + negq %r13 + negq %r14 + addq $256, %r15 + movq (%r10), %rax + movq (%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, (%r10) + movq %rcx, (%r11) + movq 8(%r10), %rax + movq 8(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 8(%r10) + movq %rcx, 8(%r11) + movq 16(%r10), %rax + movq 16(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 16(%r10) + movq %rcx, 16(%r11) + movq 24(%r10), %rax + movq 24(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 24(%r10) + movq %rcx, 24(%r11) + movq 32(%r10), %rax + movq 32(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 32(%r10) + movq %rcx, 32(%r11) + movq 40(%r10), %rax + movq 40(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 40(%r10) + movq %rcx, 40(%r11) + movq 48(%r10), %rax + movq 48(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 48(%r10) + movq %rcx, 48(%r11) + movq 56(%r10), %rax + movq 56(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 56(%r10) + movq %rcx, 56(%r11) + movq 64(%r10), %rax + movq 64(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 64(%r10) + movq %rcx, 64(%r11) + movq 72(%r10), %rax + movq 72(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 72(%r10) + movq %rcx, 72(%r11) + movq 80(%r10), %rax + movq 80(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 80(%r10) + movq %rcx, 80(%r11) + movq 88(%r10), %rax + movq 88(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 88(%r10) + movq %rcx, 88(%r11) + movq 96(%r10), %rax + movq 96(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 96(%r10) + movq %rcx, 96(%r11) + movq 104(%r10), %rax + movq 104(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 104(%r10) + movq %rcx, 104(%r11) + movq 112(%r10), %rax + movq 112(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 112(%r10) + movq %rcx, 112(%r11) + movq 120(%r10), %rax + movq 120(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 120(%r10) + movq %rcx, 120(%r11) + movq (%r10), %rax + addq (%r11), %rax + movq 8(%r10), %rcx + movq %rax, (%r15) + adcq 8(%r11), %rcx + movq 16(%r10), %r8 + movq %rcx, 8(%r15) + adcq 16(%r11), %r8 + movq 24(%r10), %rax + movq %r8, 16(%r15) + adcq 24(%r11), %rax + movq 32(%r10), %rcx + movq %rax, 24(%r15) + adcq 32(%r11), %rcx + movq 40(%r10), %r8 + movq %rcx, 32(%r15) + adcq 40(%r11), %r8 + movq 48(%r10), %rax + movq %r8, 40(%r15) + adcq 48(%r11), %rax + movq 56(%r10), %rcx + movq %rax, 48(%r15) + adcq 56(%r11), %rcx + movq 64(%r10), %r8 + movq %rcx, 56(%r15) + adcq 64(%r11), %r8 + movq 72(%r10), %rax + movq %r8, 64(%r15) + adcq 72(%r11), %rax + movq 80(%r10), %rcx + movq %rax, 72(%r15) + adcq 80(%r11), %rcx + movq 88(%r10), %r8 + movq %rcx, 80(%r15) + adcq 88(%r11), %r8 + movq 96(%r10), %rax + movq %r8, 88(%r15) + adcq 96(%r11), %rax + movq 104(%r10), %rcx + movq %rax, 96(%r15) + adcq 104(%r11), %rcx + movq 112(%r10), %r8 + movq %rcx, 104(%r15) + adcq 112(%r11), %r8 + movq 120(%r10), %rax + movq %r8, 112(%r15) + adcq 120(%r11), %rax + movq %rax, 120(%r15) + adcq $0, %r9 + leaq 256(%rsp), %r11 + movq %rsp, %r10 + movq (%r10), %rax + subq (%r11), %rax + movq 8(%r10), %rcx + movq %rax, (%r10) + sbbq 8(%r11), %rcx + movq 16(%r10), %r8 + movq %rcx, 8(%r10) + sbbq 16(%r11), %r8 + movq 24(%r10), %rax + movq %r8, 16(%r10) + sbbq 24(%r11), %rax + movq 32(%r10), %rcx + movq %rax, 24(%r10) + sbbq 32(%r11), %rcx + movq 40(%r10), %r8 + movq %rcx, 32(%r10) + sbbq 40(%r11), %r8 + movq 48(%r10), %rax + movq %r8, 40(%r10) + sbbq 48(%r11), %rax + movq 56(%r10), %rcx + movq %rax, 48(%r10) + sbbq 56(%r11), %rcx + movq 64(%r10), %r8 + movq %rcx, 56(%r10) + sbbq 64(%r11), %r8 + movq 72(%r10), %rax + movq %r8, 64(%r10) + sbbq 72(%r11), %rax + movq 80(%r10), %rcx + movq %rax, 72(%r10) + sbbq 80(%r11), %rcx + movq 88(%r10), %r8 + movq %rcx, 80(%r10) + sbbq 88(%r11), %r8 + movq 96(%r10), %rax + movq %r8, 88(%r10) + sbbq 96(%r11), %rax + movq 104(%r10), %rcx + movq %rax, 96(%r10) + sbbq 104(%r11), %rcx + movq 112(%r10), %r8 + movq %rcx, 104(%r10) + sbbq 112(%r11), %r8 + movq 120(%r10), %rax + movq %r8, 112(%r10) + sbbq 120(%r11), %rax + movq 128(%r10), %rcx + movq %rax, 120(%r10) + sbbq 128(%r11), %rcx + movq 136(%r10), %r8 + movq %rcx, 128(%r10) + sbbq 136(%r11), %r8 + movq 144(%r10), %rax + movq %r8, 136(%r10) + sbbq 144(%r11), %rax + movq 152(%r10), %rcx + movq %rax, 144(%r10) + sbbq 152(%r11), %rcx + movq 160(%r10), %r8 + movq %rcx, 152(%r10) + sbbq 160(%r11), %r8 + movq 168(%r10), %rax + movq %r8, 160(%r10) + sbbq 168(%r11), %rax + movq 176(%r10), %rcx + movq %rax, 168(%r10) + sbbq 176(%r11), %rcx + movq 184(%r10), %r8 + movq %rcx, 176(%r10) + sbbq 184(%r11), %r8 + movq 192(%r10), %rax + movq %r8, 184(%r10) + sbbq 192(%r11), %rax + movq 200(%r10), %rcx + movq %rax, 192(%r10) + sbbq 200(%r11), %rcx + movq 208(%r10), %r8 + movq %rcx, 200(%r10) + sbbq 208(%r11), %r8 + movq 216(%r10), %rax + movq %r8, 208(%r10) + sbbq 216(%r11), %rax + movq 224(%r10), %rcx + movq %rax, 216(%r10) + sbbq 224(%r11), %rcx + movq 232(%r10), %r8 + movq %rcx, 224(%r10) + sbbq 232(%r11), %r8 + movq 240(%r10), %rax + movq %r8, 232(%r10) + sbbq 240(%r11), %rax + movq 248(%r10), %rcx + movq %rax, 240(%r10) + sbbq 248(%r11), %rcx + movq %rcx, 248(%r10) + sbbq $0, %r9 + movq (%r10), %rax + subq (%rdi), %rax + movq 8(%r10), %rcx + movq %rax, (%r10) + sbbq 8(%rdi), %rcx + movq 16(%r10), %r8 + movq %rcx, 8(%r10) + sbbq 16(%rdi), %r8 + movq 24(%r10), %rax + movq %r8, 16(%r10) + sbbq 24(%rdi), %rax + movq 32(%r10), %rcx + movq %rax, 24(%r10) + sbbq 32(%rdi), %rcx + movq 40(%r10), %r8 + movq %rcx, 32(%r10) + sbbq 40(%rdi), %r8 + movq 48(%r10), %rax + movq %r8, 40(%r10) + sbbq 48(%rdi), %rax + movq 56(%r10), %rcx + movq %rax, 48(%r10) + sbbq 56(%rdi), %rcx + movq 64(%r10), %r8 + movq %rcx, 56(%r10) + sbbq 64(%rdi), %r8 + movq 72(%r10), %rax + movq %r8, 64(%r10) + sbbq 72(%rdi), %rax + movq 80(%r10), %rcx + movq %rax, 72(%r10) + sbbq 80(%rdi), %rcx + movq 88(%r10), %r8 + movq %rcx, 80(%r10) + sbbq 88(%rdi), %r8 + movq 96(%r10), %rax + movq %r8, 88(%r10) + sbbq 96(%rdi), %rax + movq 104(%r10), %rcx + movq %rax, 96(%r10) + sbbq 104(%rdi), %rcx + movq 112(%r10), %r8 + movq %rcx, 104(%r10) + sbbq 112(%rdi), %r8 + movq 120(%r10), %rax + movq %r8, 112(%r10) + sbbq 120(%rdi), %rax + movq 128(%r10), %rcx + movq %rax, 120(%r10) + sbbq 128(%rdi), %rcx + movq 136(%r10), %r8 + movq %rcx, 128(%r10) + sbbq 136(%rdi), %r8 + movq 144(%r10), %rax + movq %r8, 136(%r10) + sbbq 144(%rdi), %rax + movq 152(%r10), %rcx + movq %rax, 144(%r10) + sbbq 152(%rdi), %rcx + movq 160(%r10), %r8 + movq %rcx, 152(%r10) + sbbq 160(%rdi), %r8 + movq 168(%r10), %rax + movq %r8, 160(%r10) + sbbq 168(%rdi), %rax + movq 176(%r10), %rcx + movq %rax, 168(%r10) + sbbq 176(%rdi), %rcx + movq 184(%r10), %r8 + movq %rcx, 176(%r10) + sbbq 184(%rdi), %r8 + movq 192(%r10), %rax + movq %r8, 184(%r10) + sbbq 192(%rdi), %rax + movq 200(%r10), %rcx + movq %rax, 192(%r10) + sbbq 200(%rdi), %rcx + movq 208(%r10), %r8 + movq %rcx, 200(%r10) + sbbq 208(%rdi), %r8 + movq 216(%r10), %rax + movq %r8, 208(%r10) + sbbq 216(%rdi), %rax + movq 224(%r10), %rcx + movq %rax, 216(%r10) + sbbq 224(%rdi), %rcx + movq 232(%r10), %r8 + movq %rcx, 224(%r10) + sbbq 232(%rdi), %r8 + movq 240(%r10), %rax + movq %r8, 232(%r10) + sbbq 240(%rdi), %rax + movq 248(%r10), %rcx + movq %rax, 240(%r10) + sbbq 248(%rdi), %rcx + movq %rcx, 248(%r10) + sbbq $0, %r9 + subq $128, %r15 + # Add + movq (%r15), %rax + addq (%r10), %rax + movq 8(%r15), %rcx + movq %rax, (%r15) + adcq 8(%r10), %rcx + movq 16(%r15), %r8 + movq %rcx, 8(%r15) + adcq 16(%r10), %r8 + movq 24(%r15), %rax + movq %r8, 16(%r15) + adcq 24(%r10), %rax + movq 32(%r15), %rcx + movq %rax, 24(%r15) + adcq 32(%r10), %rcx + movq 40(%r15), %r8 + movq %rcx, 32(%r15) + adcq 40(%r10), %r8 + movq 48(%r15), %rax + movq %r8, 40(%r15) + adcq 48(%r10), %rax + movq 56(%r15), %rcx + movq %rax, 48(%r15) + adcq 56(%r10), %rcx + movq 64(%r15), %r8 + movq %rcx, 56(%r15) + adcq 64(%r10), %r8 + movq 72(%r15), %rax + movq %r8, 64(%r15) + adcq 72(%r10), %rax + movq 80(%r15), %rcx + movq %rax, 72(%r15) + adcq 80(%r10), %rcx + movq 88(%r15), %r8 + movq %rcx, 80(%r15) + adcq 88(%r10), %r8 + movq 96(%r15), %rax + movq %r8, 88(%r15) + adcq 96(%r10), %rax + movq 104(%r15), %rcx + movq %rax, 96(%r15) + adcq 104(%r10), %rcx + movq 112(%r15), %r8 + movq %rcx, 104(%r15) + adcq 112(%r10), %r8 + movq 120(%r15), %rax + movq %r8, 112(%r15) + adcq 120(%r10), %rax + movq 128(%r15), %rcx + movq %rax, 120(%r15) + adcq 128(%r10), %rcx + movq 136(%r15), %r8 + movq %rcx, 128(%r15) + adcq 136(%r10), %r8 + movq 144(%r15), %rax + movq %r8, 136(%r15) + adcq 144(%r10), %rax + movq 152(%r15), %rcx + movq %rax, 144(%r15) + adcq 152(%r10), %rcx + movq 160(%r15), %r8 + movq %rcx, 152(%r15) + adcq 160(%r10), %r8 + movq 168(%r15), %rax + movq %r8, 160(%r15) + adcq 168(%r10), %rax + movq 176(%r15), %rcx + movq %rax, 168(%r15) + adcq 176(%r10), %rcx + movq 184(%r15), %r8 + movq %rcx, 176(%r15) + adcq 184(%r10), %r8 + movq 192(%r15), %rax + movq %r8, 184(%r15) + adcq 192(%r10), %rax + movq 200(%r15), %rcx + movq %rax, 192(%r15) + adcq 200(%r10), %rcx + movq 208(%r15), %r8 + movq %rcx, 200(%r15) + adcq 208(%r10), %r8 + movq 216(%r15), %rax + movq %r8, 208(%r15) + adcq 216(%r10), %rax + movq 224(%r15), %rcx + movq %rax, 216(%r15) + adcq 224(%r10), %rcx + movq 232(%r15), %r8 + movq %rcx, 224(%r15) + adcq 232(%r10), %r8 + movq 240(%r15), %rax + movq %r8, 232(%r15) + adcq 240(%r10), %rax + movq 248(%r15), %rcx + movq %rax, 240(%r15) + adcq 248(%r10), %rcx + movq %rcx, 248(%r15) + adcq $0, %r9 + movq %r9, 384(%rdi) + addq $128, %r15 + # Add + movq (%r15), %rax + xorq %r9, %r9 + addq (%r11), %rax + movq 8(%r15), %rcx + movq %rax, (%r15) + adcq 8(%r11), %rcx + movq 16(%r15), %r8 + movq %rcx, 8(%r15) + adcq 16(%r11), %r8 + movq 24(%r15), %rax + movq %r8, 16(%r15) + adcq 24(%r11), %rax + movq 32(%r15), %rcx + movq %rax, 24(%r15) + adcq 32(%r11), %rcx + movq 40(%r15), %r8 + movq %rcx, 32(%r15) + adcq 40(%r11), %r8 + movq 48(%r15), %rax + movq %r8, 40(%r15) + adcq 48(%r11), %rax + movq 56(%r15), %rcx + movq %rax, 48(%r15) + adcq 56(%r11), %rcx + movq 64(%r15), %r8 + movq %rcx, 56(%r15) + adcq 64(%r11), %r8 + movq 72(%r15), %rax + movq %r8, 64(%r15) + adcq 72(%r11), %rax + movq 80(%r15), %rcx + movq %rax, 72(%r15) + adcq 80(%r11), %rcx + movq 88(%r15), %r8 + movq %rcx, 80(%r15) + adcq 88(%r11), %r8 + movq 96(%r15), %rax + movq %r8, 88(%r15) + adcq 96(%r11), %rax + movq 104(%r15), %rcx + movq %rax, 96(%r15) + adcq 104(%r11), %rcx + movq 112(%r15), %r8 + movq %rcx, 104(%r15) + adcq 112(%r11), %r8 + movq 120(%r15), %rax + movq %r8, 112(%r15) + adcq 120(%r11), %rax + movq 128(%r15), %rcx + movq %rax, 120(%r15) + adcq 128(%r11), %rcx + movq %rcx, 128(%r15) + adcq $0, %r9 + # Add to zero + movq 136(%r11), %rax + adcq $0, %rax + movq 144(%r11), %rcx + movq %rax, 136(%r15) + adcq $0, %rcx + movq 152(%r11), %r8 + movq %rcx, 144(%r15) + adcq $0, %r8 + movq 160(%r11), %rax + movq %r8, 152(%r15) + adcq $0, %rax + movq 168(%r11), %rcx + movq %rax, 160(%r15) + adcq $0, %rcx + movq 176(%r11), %r8 + movq %rcx, 168(%r15) + adcq $0, %r8 + movq 184(%r11), %rax + movq %r8, 176(%r15) + adcq $0, %rax + movq 192(%r11), %rcx + movq %rax, 184(%r15) + adcq $0, %rcx + movq 200(%r11), %r8 + movq %rcx, 192(%r15) + adcq $0, %r8 + movq 208(%r11), %rax + movq %r8, 200(%r15) + adcq $0, %rax + movq 216(%r11), %rcx + movq %rax, 208(%r15) + adcq $0, %rcx + movq 224(%r11), %r8 + movq %rcx, 216(%r15) + adcq $0, %r8 + movq 232(%r11), %rax + movq %r8, 224(%r15) + adcq $0, %rax + movq 240(%r11), %rcx + movq %rax, 232(%r15) + adcq $0, %rcx + movq 248(%r11), %r8 + movq %rcx, 240(%r15) + adcq $0, %r8 + movq %r8, 248(%r15) + addq $808, %rsp + pop %r15 + pop %r14 + pop %r13 + pop %r12 + repz retq +#ifndef __APPLE__ +.size sp_2048_mul_32,.-sp_2048_mul_32 +#endif /* __APPLE__ */ /* Add a to a into r. (r = a + a) * * r A single precision integer. @@ -5982,6 +6720,1835 @@ _sp_2048_dbl_16: #ifndef __APPLE__ .size sp_2048_dbl_16,.-sp_2048_dbl_16 #endif /* __APPLE__ */ +/* Square a and put result in r. (r = a * a) + * + * r A single precision integer. + * a A single precision integer. + */ +#ifndef __APPLE__ +.globl sp_2048_sqr_32 +.type sp_2048_sqr_32,@function +.align 16 +sp_2048_sqr_32: +#else +.globl _sp_2048_sqr_32 +.p2align 4 +_sp_2048_sqr_32: +#endif /* __APPLE__ */ + subq $664, %rsp + movq %rdi, 640(%rsp) + movq %rsi, 648(%rsp) + leaq 512(%rsp), %r8 + leaq 128(%rsi), %r9 + # Add + movq (%rsi), %rdx + xorq %rcx, %rcx + addq (%r9), %rdx + movq 8(%rsi), %rax + movq %rdx, (%r8) + adcq 8(%r9), %rax + movq 16(%rsi), %rdx + movq %rax, 8(%r8) + adcq 16(%r9), %rdx + movq 24(%rsi), %rax + movq %rdx, 16(%r8) + adcq 24(%r9), %rax + movq 32(%rsi), %rdx + movq %rax, 24(%r8) + adcq 32(%r9), %rdx + movq 40(%rsi), %rax + movq %rdx, 32(%r8) + adcq 40(%r9), %rax + movq 48(%rsi), %rdx + movq %rax, 40(%r8) + adcq 48(%r9), %rdx + movq 56(%rsi), %rax + movq %rdx, 48(%r8) + adcq 56(%r9), %rax + movq 64(%rsi), %rdx + movq %rax, 56(%r8) + adcq 64(%r9), %rdx + movq 72(%rsi), %rax + movq %rdx, 64(%r8) + adcq 72(%r9), %rax + movq 80(%rsi), %rdx + movq %rax, 72(%r8) + adcq 80(%r9), %rdx + movq 88(%rsi), %rax + movq %rdx, 80(%r8) + adcq 88(%r9), %rax + movq 96(%rsi), %rdx + movq %rax, 88(%r8) + adcq 96(%r9), %rdx + movq 104(%rsi), %rax + movq %rdx, 96(%r8) + adcq 104(%r9), %rax + movq 112(%rsi), %rdx + movq %rax, 104(%r8) + adcq 112(%r9), %rdx + movq 120(%rsi), %rax + movq %rdx, 112(%r8) + adcq 120(%r9), %rax + movq %rax, 120(%r8) + adcq $0, %rcx + movq %rcx, 656(%rsp) + movq %r8, %rsi + movq %rsp, %rdi +#ifndef __APPLE__ + callq sp_2048_sqr_16@plt +#else + callq _sp_2048_sqr_16 +#endif /* __APPLE__ */ + movq 648(%rsp), %rsi + leaq 256(%rsp), %rdi + addq $128, %rsi +#ifndef __APPLE__ + callq sp_2048_sqr_16@plt +#else + callq _sp_2048_sqr_16 +#endif /* __APPLE__ */ + movq 648(%rsp), %rsi + movq 640(%rsp), %rdi +#ifndef __APPLE__ + callq sp_2048_sqr_16@plt +#else + callq _sp_2048_sqr_16 +#endif /* __APPLE__ */ + movq 656(%rsp), %r10 + leaq 512(%rsp), %r8 + movq %r10, %rcx + negq %r10 + movq (%r8), %rdx + movq 8(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 256(%rdi) + movq %rax, 264(%rdi) + movq 16(%r8), %rdx + movq 24(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 272(%rdi) + movq %rax, 280(%rdi) + movq 32(%r8), %rdx + movq 40(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 288(%rdi) + movq %rax, 296(%rdi) + movq 48(%r8), %rdx + movq 56(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 304(%rdi) + movq %rax, 312(%rdi) + movq 64(%r8), %rdx + movq 72(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 320(%rdi) + movq %rax, 328(%rdi) + movq 80(%r8), %rdx + movq 88(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 336(%rdi) + movq %rax, 344(%rdi) + movq 96(%r8), %rdx + movq 104(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 352(%rdi) + movq %rax, 360(%rdi) + movq 112(%r8), %rdx + movq 120(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 368(%rdi) + movq %rax, 376(%rdi) + movq 256(%rdi), %rdx + addq %rdx, %rdx + movq 264(%rdi), %rax + movq %rdx, 256(%rdi) + adcq %rax, %rax + movq 272(%rdi), %rdx + movq %rax, 264(%rdi) + adcq %rdx, %rdx + movq 280(%rdi), %rax + movq %rdx, 272(%rdi) + adcq %rax, %rax + movq 288(%rdi), %rdx + movq %rax, 280(%rdi) + adcq %rdx, %rdx + movq 296(%rdi), %rax + movq %rdx, 288(%rdi) + adcq %rax, %rax + movq 304(%rdi), %rdx + movq %rax, 296(%rdi) + adcq %rdx, %rdx + movq 312(%rdi), %rax + movq %rdx, 304(%rdi) + adcq %rax, %rax + movq 320(%rdi), %rdx + movq %rax, 312(%rdi) + adcq %rdx, %rdx + movq 328(%rdi), %rax + movq %rdx, 320(%rdi) + adcq %rax, %rax + movq 336(%rdi), %rdx + movq %rax, 328(%rdi) + adcq %rdx, %rdx + movq 344(%rdi), %rax + movq %rdx, 336(%rdi) + adcq %rax, %rax + movq 352(%rdi), %rdx + movq %rax, 344(%rdi) + adcq %rdx, %rdx + movq 360(%rdi), %rax + movq %rdx, 352(%rdi) + adcq %rax, %rax + movq 368(%rdi), %rdx + movq %rax, 360(%rdi) + adcq %rdx, %rdx + movq 376(%rdi), %rax + movq %rdx, 368(%rdi) + adcq %rax, %rax + movq %rax, 376(%rdi) + adcq $0, %rcx + leaq 256(%rsp), %rsi + movq %rsp, %r8 + movq (%r8), %rdx + subq (%rsi), %rdx + movq 8(%r8), %rax + movq %rdx, (%r8) + sbbq 8(%rsi), %rax + movq 16(%r8), %rdx + movq %rax, 8(%r8) + sbbq 16(%rsi), %rdx + movq 24(%r8), %rax + movq %rdx, 16(%r8) + sbbq 24(%rsi), %rax + movq 32(%r8), %rdx + movq %rax, 24(%r8) + sbbq 32(%rsi), %rdx + movq 40(%r8), %rax + movq %rdx, 32(%r8) + sbbq 40(%rsi), %rax + movq 48(%r8), %rdx + movq %rax, 40(%r8) + sbbq 48(%rsi), %rdx + movq 56(%r8), %rax + movq %rdx, 48(%r8) + sbbq 56(%rsi), %rax + movq 64(%r8), %rdx + movq %rax, 56(%r8) + sbbq 64(%rsi), %rdx + movq 72(%r8), %rax + movq %rdx, 64(%r8) + sbbq 72(%rsi), %rax + movq 80(%r8), %rdx + movq %rax, 72(%r8) + sbbq 80(%rsi), %rdx + movq 88(%r8), %rax + movq %rdx, 80(%r8) + sbbq 88(%rsi), %rax + movq 96(%r8), %rdx + movq %rax, 88(%r8) + sbbq 96(%rsi), %rdx + movq 104(%r8), %rax + movq %rdx, 96(%r8) + sbbq 104(%rsi), %rax + movq 112(%r8), %rdx + movq %rax, 104(%r8) + sbbq 112(%rsi), %rdx + movq 120(%r8), %rax + movq %rdx, 112(%r8) + sbbq 120(%rsi), %rax + movq 128(%r8), %rdx + movq %rax, 120(%r8) + sbbq 128(%rsi), %rdx + movq 136(%r8), %rax + movq %rdx, 128(%r8) + sbbq 136(%rsi), %rax + movq 144(%r8), %rdx + movq %rax, 136(%r8) + sbbq 144(%rsi), %rdx + movq 152(%r8), %rax + movq %rdx, 144(%r8) + sbbq 152(%rsi), %rax + movq 160(%r8), %rdx + movq %rax, 152(%r8) + sbbq 160(%rsi), %rdx + movq 168(%r8), %rax + movq %rdx, 160(%r8) + sbbq 168(%rsi), %rax + movq 176(%r8), %rdx + movq %rax, 168(%r8) + sbbq 176(%rsi), %rdx + movq 184(%r8), %rax + movq %rdx, 176(%r8) + sbbq 184(%rsi), %rax + movq 192(%r8), %rdx + movq %rax, 184(%r8) + sbbq 192(%rsi), %rdx + movq 200(%r8), %rax + movq %rdx, 192(%r8) + sbbq 200(%rsi), %rax + movq 208(%r8), %rdx + movq %rax, 200(%r8) + sbbq 208(%rsi), %rdx + movq 216(%r8), %rax + movq %rdx, 208(%r8) + sbbq 216(%rsi), %rax + movq 224(%r8), %rdx + movq %rax, 216(%r8) + sbbq 224(%rsi), %rdx + movq 232(%r8), %rax + movq %rdx, 224(%r8) + sbbq 232(%rsi), %rax + movq 240(%r8), %rdx + movq %rax, 232(%r8) + sbbq 240(%rsi), %rdx + movq 248(%r8), %rax + movq %rdx, 240(%r8) + sbbq 248(%rsi), %rax + movq %rax, 248(%r8) + sbbq $0, %rcx + movq (%r8), %rdx + subq (%rdi), %rdx + movq 8(%r8), %rax + movq %rdx, (%r8) + sbbq 8(%rdi), %rax + movq 16(%r8), %rdx + movq %rax, 8(%r8) + sbbq 16(%rdi), %rdx + movq 24(%r8), %rax + movq %rdx, 16(%r8) + sbbq 24(%rdi), %rax + movq 32(%r8), %rdx + movq %rax, 24(%r8) + sbbq 32(%rdi), %rdx + movq 40(%r8), %rax + movq %rdx, 32(%r8) + sbbq 40(%rdi), %rax + movq 48(%r8), %rdx + movq %rax, 40(%r8) + sbbq 48(%rdi), %rdx + movq 56(%r8), %rax + movq %rdx, 48(%r8) + sbbq 56(%rdi), %rax + movq 64(%r8), %rdx + movq %rax, 56(%r8) + sbbq 64(%rdi), %rdx + movq 72(%r8), %rax + movq %rdx, 64(%r8) + sbbq 72(%rdi), %rax + movq 80(%r8), %rdx + movq %rax, 72(%r8) + sbbq 80(%rdi), %rdx + movq 88(%r8), %rax + movq %rdx, 80(%r8) + sbbq 88(%rdi), %rax + movq 96(%r8), %rdx + movq %rax, 88(%r8) + sbbq 96(%rdi), %rdx + movq 104(%r8), %rax + movq %rdx, 96(%r8) + sbbq 104(%rdi), %rax + movq 112(%r8), %rdx + movq %rax, 104(%r8) + sbbq 112(%rdi), %rdx + movq 120(%r8), %rax + movq %rdx, 112(%r8) + sbbq 120(%rdi), %rax + movq 128(%r8), %rdx + movq %rax, 120(%r8) + sbbq 128(%rdi), %rdx + movq 136(%r8), %rax + movq %rdx, 128(%r8) + sbbq 136(%rdi), %rax + movq 144(%r8), %rdx + movq %rax, 136(%r8) + sbbq 144(%rdi), %rdx + movq 152(%r8), %rax + movq %rdx, 144(%r8) + sbbq 152(%rdi), %rax + movq 160(%r8), %rdx + movq %rax, 152(%r8) + sbbq 160(%rdi), %rdx + movq 168(%r8), %rax + movq %rdx, 160(%r8) + sbbq 168(%rdi), %rax + movq 176(%r8), %rdx + movq %rax, 168(%r8) + sbbq 176(%rdi), %rdx + movq 184(%r8), %rax + movq %rdx, 176(%r8) + sbbq 184(%rdi), %rax + movq 192(%r8), %rdx + movq %rax, 184(%r8) + sbbq 192(%rdi), %rdx + movq 200(%r8), %rax + movq %rdx, 192(%r8) + sbbq 200(%rdi), %rax + movq 208(%r8), %rdx + movq %rax, 200(%r8) + sbbq 208(%rdi), %rdx + movq 216(%r8), %rax + movq %rdx, 208(%r8) + sbbq 216(%rdi), %rax + movq 224(%r8), %rdx + movq %rax, 216(%r8) + sbbq 224(%rdi), %rdx + movq 232(%r8), %rax + movq %rdx, 224(%r8) + sbbq 232(%rdi), %rax + movq 240(%r8), %rdx + movq %rax, 232(%r8) + sbbq 240(%rdi), %rdx + movq 248(%r8), %rax + movq %rdx, 240(%r8) + sbbq 248(%rdi), %rax + movq %rax, 248(%r8) + sbbq $0, %rcx + # Add in place + movq 128(%rdi), %rdx + addq (%r8), %rdx + movq 136(%rdi), %rax + movq %rdx, 128(%rdi) + adcq 8(%r8), %rax + movq 144(%rdi), %rdx + movq %rax, 136(%rdi) + adcq 16(%r8), %rdx + movq 152(%rdi), %rax + movq %rdx, 144(%rdi) + adcq 24(%r8), %rax + movq 160(%rdi), %rdx + movq %rax, 152(%rdi) + adcq 32(%r8), %rdx + movq 168(%rdi), %rax + movq %rdx, 160(%rdi) + adcq 40(%r8), %rax + movq 176(%rdi), %rdx + movq %rax, 168(%rdi) + adcq 48(%r8), %rdx + movq 184(%rdi), %rax + movq %rdx, 176(%rdi) + adcq 56(%r8), %rax + movq 192(%rdi), %rdx + movq %rax, 184(%rdi) + adcq 64(%r8), %rdx + movq 200(%rdi), %rax + movq %rdx, 192(%rdi) + adcq 72(%r8), %rax + movq 208(%rdi), %rdx + movq %rax, 200(%rdi) + adcq 80(%r8), %rdx + movq 216(%rdi), %rax + movq %rdx, 208(%rdi) + adcq 88(%r8), %rax + movq 224(%rdi), %rdx + movq %rax, 216(%rdi) + adcq 96(%r8), %rdx + movq 232(%rdi), %rax + movq %rdx, 224(%rdi) + adcq 104(%r8), %rax + movq 240(%rdi), %rdx + movq %rax, 232(%rdi) + adcq 112(%r8), %rdx + movq 248(%rdi), %rax + movq %rdx, 240(%rdi) + adcq 120(%r8), %rax + movq 256(%rdi), %rdx + movq %rax, 248(%rdi) + adcq 128(%r8), %rdx + movq 264(%rdi), %rax + movq %rdx, 256(%rdi) + adcq 136(%r8), %rax + movq 272(%rdi), %rdx + movq %rax, 264(%rdi) + adcq 144(%r8), %rdx + movq 280(%rdi), %rax + movq %rdx, 272(%rdi) + adcq 152(%r8), %rax + movq 288(%rdi), %rdx + movq %rax, 280(%rdi) + adcq 160(%r8), %rdx + movq 296(%rdi), %rax + movq %rdx, 288(%rdi) + adcq 168(%r8), %rax + movq 304(%rdi), %rdx + movq %rax, 296(%rdi) + adcq 176(%r8), %rdx + movq 312(%rdi), %rax + movq %rdx, 304(%rdi) + adcq 184(%r8), %rax + movq 320(%rdi), %rdx + movq %rax, 312(%rdi) + adcq 192(%r8), %rdx + movq 328(%rdi), %rax + movq %rdx, 320(%rdi) + adcq 200(%r8), %rax + movq 336(%rdi), %rdx + movq %rax, 328(%rdi) + adcq 208(%r8), %rdx + movq 344(%rdi), %rax + movq %rdx, 336(%rdi) + adcq 216(%r8), %rax + movq 352(%rdi), %rdx + movq %rax, 344(%rdi) + adcq 224(%r8), %rdx + movq 360(%rdi), %rax + movq %rdx, 352(%rdi) + adcq 232(%r8), %rax + movq 368(%rdi), %rdx + movq %rax, 360(%rdi) + adcq 240(%r8), %rdx + movq 376(%rdi), %rax + movq %rdx, 368(%rdi) + adcq 248(%r8), %rax + movq %rax, 376(%rdi) + adcq $0, %rcx + movq %rcx, 384(%rdi) + # Add in place + movq 256(%rdi), %rdx + xorq %rcx, %rcx + addq (%rsi), %rdx + movq 264(%rdi), %rax + movq %rdx, 256(%rdi) + adcq 8(%rsi), %rax + movq 272(%rdi), %rdx + movq %rax, 264(%rdi) + adcq 16(%rsi), %rdx + movq 280(%rdi), %rax + movq %rdx, 272(%rdi) + adcq 24(%rsi), %rax + movq 288(%rdi), %rdx + movq %rax, 280(%rdi) + adcq 32(%rsi), %rdx + movq 296(%rdi), %rax + movq %rdx, 288(%rdi) + adcq 40(%rsi), %rax + movq 304(%rdi), %rdx + movq %rax, 296(%rdi) + adcq 48(%rsi), %rdx + movq 312(%rdi), %rax + movq %rdx, 304(%rdi) + adcq 56(%rsi), %rax + movq 320(%rdi), %rdx + movq %rax, 312(%rdi) + adcq 64(%rsi), %rdx + movq 328(%rdi), %rax + movq %rdx, 320(%rdi) + adcq 72(%rsi), %rax + movq 336(%rdi), %rdx + movq %rax, 328(%rdi) + adcq 80(%rsi), %rdx + movq 344(%rdi), %rax + movq %rdx, 336(%rdi) + adcq 88(%rsi), %rax + movq 352(%rdi), %rdx + movq %rax, 344(%rdi) + adcq 96(%rsi), %rdx + movq 360(%rdi), %rax + movq %rdx, 352(%rdi) + adcq 104(%rsi), %rax + movq 368(%rdi), %rdx + movq %rax, 360(%rdi) + adcq 112(%rsi), %rdx + movq 376(%rdi), %rax + movq %rdx, 368(%rdi) + adcq 120(%rsi), %rax + movq 384(%rdi), %rdx + movq %rax, 376(%rdi) + adcq 128(%rsi), %rdx + movq %rdx, 384(%rdi) + adcq $0, %rcx + # Add to zero + movq 136(%rsi), %rdx + adcq $0, %rdx + movq 144(%rsi), %rax + movq %rdx, 392(%rdi) + adcq $0, %rax + movq 152(%rsi), %rdx + movq %rax, 400(%rdi) + adcq $0, %rdx + movq 160(%rsi), %rax + movq %rdx, 408(%rdi) + adcq $0, %rax + movq 168(%rsi), %rdx + movq %rax, 416(%rdi) + adcq $0, %rdx + movq 176(%rsi), %rax + movq %rdx, 424(%rdi) + adcq $0, %rax + movq 184(%rsi), %rdx + movq %rax, 432(%rdi) + adcq $0, %rdx + movq 192(%rsi), %rax + movq %rdx, 440(%rdi) + adcq $0, %rax + movq 200(%rsi), %rdx + movq %rax, 448(%rdi) + adcq $0, %rdx + movq 208(%rsi), %rax + movq %rdx, 456(%rdi) + adcq $0, %rax + movq 216(%rsi), %rdx + movq %rax, 464(%rdi) + adcq $0, %rdx + movq 224(%rsi), %rax + movq %rdx, 472(%rdi) + adcq $0, %rax + movq 232(%rsi), %rdx + movq %rax, 480(%rdi) + adcq $0, %rdx + movq 240(%rsi), %rax + movq %rdx, 488(%rdi) + adcq $0, %rax + movq 248(%rsi), %rdx + movq %rax, 496(%rdi) + adcq $0, %rdx + movq %rdx, 504(%rdi) + addq $664, %rsp + repz retq +#ifndef __APPLE__ +.size sp_2048_sqr_32,.-sp_2048_sqr_32 +#endif /* __APPLE__ */ +/* Multiply a and b into r. (r = a * b) + * + * r A single precision integer. + * a A single precision integer. + * b A single precision integer. + */ +#ifndef __APPLE__ +.globl sp_2048_mul_avx2_32 +.type sp_2048_mul_avx2_32,@function +.align 16 +sp_2048_mul_avx2_32: +#else +.globl _sp_2048_mul_avx2_32 +.p2align 4 +_sp_2048_mul_avx2_32: +#endif /* __APPLE__ */ + push %r12 + push %r13 + push %r14 + push %r15 + subq $808, %rsp + movq %rdi, 768(%rsp) + movq %rsi, 776(%rsp) + movq %rdx, 784(%rsp) + leaq 512(%rsp), %r10 + leaq 128(%rsi), %r12 + # Add + movq (%rsi), %rax + xorq %r13, %r13 + addq (%r12), %rax + movq 8(%rsi), %rcx + movq %rax, (%r10) + adcq 8(%r12), %rcx + movq 16(%rsi), %r8 + movq %rcx, 8(%r10) + adcq 16(%r12), %r8 + movq 24(%rsi), %rax + movq %r8, 16(%r10) + adcq 24(%r12), %rax + movq 32(%rsi), %rcx + movq %rax, 24(%r10) + adcq 32(%r12), %rcx + movq 40(%rsi), %r8 + movq %rcx, 32(%r10) + adcq 40(%r12), %r8 + movq 48(%rsi), %rax + movq %r8, 40(%r10) + adcq 48(%r12), %rax + movq 56(%rsi), %rcx + movq %rax, 48(%r10) + adcq 56(%r12), %rcx + movq 64(%rsi), %r8 + movq %rcx, 56(%r10) + adcq 64(%r12), %r8 + movq 72(%rsi), %rax + movq %r8, 64(%r10) + adcq 72(%r12), %rax + movq 80(%rsi), %rcx + movq %rax, 72(%r10) + adcq 80(%r12), %rcx + movq 88(%rsi), %r8 + movq %rcx, 80(%r10) + adcq 88(%r12), %r8 + movq 96(%rsi), %rax + movq %r8, 88(%r10) + adcq 96(%r12), %rax + movq 104(%rsi), %rcx + movq %rax, 96(%r10) + adcq 104(%r12), %rcx + movq 112(%rsi), %r8 + movq %rcx, 104(%r10) + adcq 112(%r12), %r8 + movq 120(%rsi), %rax + movq %r8, 112(%r10) + adcq 120(%r12), %rax + movq %rax, 120(%r10) + adcq $0, %r13 + movq %r13, 792(%rsp) + leaq 640(%rsp), %r11 + leaq 128(%rdx), %r12 + # Add + movq (%rdx), %rax + xorq %r14, %r14 + addq (%r12), %rax + movq 8(%rdx), %rcx + movq %rax, (%r11) + adcq 8(%r12), %rcx + movq 16(%rdx), %r8 + movq %rcx, 8(%r11) + adcq 16(%r12), %r8 + movq 24(%rdx), %rax + movq %r8, 16(%r11) + adcq 24(%r12), %rax + movq 32(%rdx), %rcx + movq %rax, 24(%r11) + adcq 32(%r12), %rcx + movq 40(%rdx), %r8 + movq %rcx, 32(%r11) + adcq 40(%r12), %r8 + movq 48(%rdx), %rax + movq %r8, 40(%r11) + adcq 48(%r12), %rax + movq 56(%rdx), %rcx + movq %rax, 48(%r11) + adcq 56(%r12), %rcx + movq 64(%rdx), %r8 + movq %rcx, 56(%r11) + adcq 64(%r12), %r8 + movq 72(%rdx), %rax + movq %r8, 64(%r11) + adcq 72(%r12), %rax + movq 80(%rdx), %rcx + movq %rax, 72(%r11) + adcq 80(%r12), %rcx + movq 88(%rdx), %r8 + movq %rcx, 80(%r11) + adcq 88(%r12), %r8 + movq 96(%rdx), %rax + movq %r8, 88(%r11) + adcq 96(%r12), %rax + movq 104(%rdx), %rcx + movq %rax, 96(%r11) + adcq 104(%r12), %rcx + movq 112(%rdx), %r8 + movq %rcx, 104(%r11) + adcq 112(%r12), %r8 + movq 120(%rdx), %rax + movq %r8, 112(%r11) + adcq 120(%r12), %rax + movq %rax, 120(%r11) + adcq $0, %r14 + movq %r14, 800(%rsp) + movq %r11, %rdx + movq %r10, %rsi + movq %rsp, %rdi +#ifndef __APPLE__ + callq sp_2048_mul_avx2_16@plt +#else + callq _sp_2048_mul_avx2_16 +#endif /* __APPLE__ */ + movq 784(%rsp), %rdx + movq 776(%rsp), %rsi + leaq 256(%rsp), %rdi + addq $128, %rdx + addq $128, %rsi +#ifndef __APPLE__ + callq sp_2048_mul_avx2_16@plt +#else + callq _sp_2048_mul_avx2_16 +#endif /* __APPLE__ */ + movq 784(%rsp), %rdx + movq 776(%rsp), %rsi + movq 768(%rsp), %rdi +#ifndef __APPLE__ + callq sp_2048_mul_avx2_16@plt +#else + callq _sp_2048_mul_avx2_16 +#endif /* __APPLE__ */ + movq 792(%rsp), %r13 + movq 800(%rsp), %r14 + movq 768(%rsp), %r15 + movq %r13, %r9 + leaq 512(%rsp), %r10 + leaq 640(%rsp), %r11 + andq %r14, %r9 + negq %r13 + negq %r14 + addq $256, %r15 + movq (%r10), %rax + movq (%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + addq %rcx, %rax + movq 8(%r10), %rcx + movq 8(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, (%r15) + adcq %r8, %rcx + movq 16(%r10), %r8 + movq 16(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 8(%r15) + adcq %rax, %r8 + movq 24(%r10), %rax + movq 24(%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + movq %r8, 16(%r15) + adcq %rcx, %rax + movq 32(%r10), %rcx + movq 32(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, 24(%r15) + adcq %r8, %rcx + movq 40(%r10), %r8 + movq 40(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 32(%r15) + adcq %rax, %r8 + movq 48(%r10), %rax + movq 48(%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + movq %r8, 40(%r15) + adcq %rcx, %rax + movq 56(%r10), %rcx + movq 56(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, 48(%r15) + adcq %r8, %rcx + movq 64(%r10), %r8 + movq 64(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 56(%r15) + adcq %rax, %r8 + movq 72(%r10), %rax + movq 72(%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + movq %r8, 64(%r15) + adcq %rcx, %rax + movq 80(%r10), %rcx + movq 80(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, 72(%r15) + adcq %r8, %rcx + movq 88(%r10), %r8 + movq 88(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 80(%r15) + adcq %rax, %r8 + movq 96(%r10), %rax + movq 96(%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + movq %r8, 88(%r15) + adcq %rcx, %rax + movq 104(%r10), %rcx + movq 104(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, 96(%r15) + adcq %r8, %rcx + movq 112(%r10), %r8 + movq 112(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 104(%r15) + adcq %rax, %r8 + movq 120(%r10), %rax + movq 120(%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + movq %r8, 112(%r15) + adcq %rcx, %rax + movq %rax, 120(%r15) + adcq $0, %r9 + leaq 256(%rsp), %r11 + movq %rsp, %r10 + movq (%r10), %rax + subq (%r11), %rax + movq 8(%r10), %rcx + movq %rax, (%r10) + sbbq 8(%r11), %rcx + movq 16(%r10), %r8 + movq %rcx, 8(%r10) + sbbq 16(%r11), %r8 + movq 24(%r10), %rax + movq %r8, 16(%r10) + sbbq 24(%r11), %rax + movq 32(%r10), %rcx + movq %rax, 24(%r10) + sbbq 32(%r11), %rcx + movq 40(%r10), %r8 + movq %rcx, 32(%r10) + sbbq 40(%r11), %r8 + movq 48(%r10), %rax + movq %r8, 40(%r10) + sbbq 48(%r11), %rax + movq 56(%r10), %rcx + movq %rax, 48(%r10) + sbbq 56(%r11), %rcx + movq 64(%r10), %r8 + movq %rcx, 56(%r10) + sbbq 64(%r11), %r8 + movq 72(%r10), %rax + movq %r8, 64(%r10) + sbbq 72(%r11), %rax + movq 80(%r10), %rcx + movq %rax, 72(%r10) + sbbq 80(%r11), %rcx + movq 88(%r10), %r8 + movq %rcx, 80(%r10) + sbbq 88(%r11), %r8 + movq 96(%r10), %rax + movq %r8, 88(%r10) + sbbq 96(%r11), %rax + movq 104(%r10), %rcx + movq %rax, 96(%r10) + sbbq 104(%r11), %rcx + movq 112(%r10), %r8 + movq %rcx, 104(%r10) + sbbq 112(%r11), %r8 + movq 120(%r10), %rax + movq %r8, 112(%r10) + sbbq 120(%r11), %rax + movq 128(%r10), %rcx + movq %rax, 120(%r10) + sbbq 128(%r11), %rcx + movq 136(%r10), %r8 + movq %rcx, 128(%r10) + sbbq 136(%r11), %r8 + movq 144(%r10), %rax + movq %r8, 136(%r10) + sbbq 144(%r11), %rax + movq 152(%r10), %rcx + movq %rax, 144(%r10) + sbbq 152(%r11), %rcx + movq 160(%r10), %r8 + movq %rcx, 152(%r10) + sbbq 160(%r11), %r8 + movq 168(%r10), %rax + movq %r8, 160(%r10) + sbbq 168(%r11), %rax + movq 176(%r10), %rcx + movq %rax, 168(%r10) + sbbq 176(%r11), %rcx + movq 184(%r10), %r8 + movq %rcx, 176(%r10) + sbbq 184(%r11), %r8 + movq 192(%r10), %rax + movq %r8, 184(%r10) + sbbq 192(%r11), %rax + movq 200(%r10), %rcx + movq %rax, 192(%r10) + sbbq 200(%r11), %rcx + movq 208(%r10), %r8 + movq %rcx, 200(%r10) + sbbq 208(%r11), %r8 + movq 216(%r10), %rax + movq %r8, 208(%r10) + sbbq 216(%r11), %rax + movq 224(%r10), %rcx + movq %rax, 216(%r10) + sbbq 224(%r11), %rcx + movq 232(%r10), %r8 + movq %rcx, 224(%r10) + sbbq 232(%r11), %r8 + movq 240(%r10), %rax + movq %r8, 232(%r10) + sbbq 240(%r11), %rax + movq 248(%r10), %rcx + movq %rax, 240(%r10) + sbbq 248(%r11), %rcx + movq %rcx, 248(%r10) + sbbq $0, %r9 + movq (%r10), %rax + subq (%rdi), %rax + movq 8(%r10), %rcx + movq %rax, (%r10) + sbbq 8(%rdi), %rcx + movq 16(%r10), %r8 + movq %rcx, 8(%r10) + sbbq 16(%rdi), %r8 + movq 24(%r10), %rax + movq %r8, 16(%r10) + sbbq 24(%rdi), %rax + movq 32(%r10), %rcx + movq %rax, 24(%r10) + sbbq 32(%rdi), %rcx + movq 40(%r10), %r8 + movq %rcx, 32(%r10) + sbbq 40(%rdi), %r8 + movq 48(%r10), %rax + movq %r8, 40(%r10) + sbbq 48(%rdi), %rax + movq 56(%r10), %rcx + movq %rax, 48(%r10) + sbbq 56(%rdi), %rcx + movq 64(%r10), %r8 + movq %rcx, 56(%r10) + sbbq 64(%rdi), %r8 + movq 72(%r10), %rax + movq %r8, 64(%r10) + sbbq 72(%rdi), %rax + movq 80(%r10), %rcx + movq %rax, 72(%r10) + sbbq 80(%rdi), %rcx + movq 88(%r10), %r8 + movq %rcx, 80(%r10) + sbbq 88(%rdi), %r8 + movq 96(%r10), %rax + movq %r8, 88(%r10) + sbbq 96(%rdi), %rax + movq 104(%r10), %rcx + movq %rax, 96(%r10) + sbbq 104(%rdi), %rcx + movq 112(%r10), %r8 + movq %rcx, 104(%r10) + sbbq 112(%rdi), %r8 + movq 120(%r10), %rax + movq %r8, 112(%r10) + sbbq 120(%rdi), %rax + movq 128(%r10), %rcx + movq %rax, 120(%r10) + sbbq 128(%rdi), %rcx + movq 136(%r10), %r8 + movq %rcx, 128(%r10) + sbbq 136(%rdi), %r8 + movq 144(%r10), %rax + movq %r8, 136(%r10) + sbbq 144(%rdi), %rax + movq 152(%r10), %rcx + movq %rax, 144(%r10) + sbbq 152(%rdi), %rcx + movq 160(%r10), %r8 + movq %rcx, 152(%r10) + sbbq 160(%rdi), %r8 + movq 168(%r10), %rax + movq %r8, 160(%r10) + sbbq 168(%rdi), %rax + movq 176(%r10), %rcx + movq %rax, 168(%r10) + sbbq 176(%rdi), %rcx + movq 184(%r10), %r8 + movq %rcx, 176(%r10) + sbbq 184(%rdi), %r8 + movq 192(%r10), %rax + movq %r8, 184(%r10) + sbbq 192(%rdi), %rax + movq 200(%r10), %rcx + movq %rax, 192(%r10) + sbbq 200(%rdi), %rcx + movq 208(%r10), %r8 + movq %rcx, 200(%r10) + sbbq 208(%rdi), %r8 + movq 216(%r10), %rax + movq %r8, 208(%r10) + sbbq 216(%rdi), %rax + movq 224(%r10), %rcx + movq %rax, 216(%r10) + sbbq 224(%rdi), %rcx + movq 232(%r10), %r8 + movq %rcx, 224(%r10) + sbbq 232(%rdi), %r8 + movq 240(%r10), %rax + movq %r8, 232(%r10) + sbbq 240(%rdi), %rax + movq 248(%r10), %rcx + movq %rax, 240(%r10) + sbbq 248(%rdi), %rcx + movq %rcx, 248(%r10) + sbbq $0, %r9 + subq $128, %r15 + # Add + movq (%r15), %rax + addq (%r10), %rax + movq 8(%r15), %rcx + movq %rax, (%r15) + adcq 8(%r10), %rcx + movq 16(%r15), %r8 + movq %rcx, 8(%r15) + adcq 16(%r10), %r8 + movq 24(%r15), %rax + movq %r8, 16(%r15) + adcq 24(%r10), %rax + movq 32(%r15), %rcx + movq %rax, 24(%r15) + adcq 32(%r10), %rcx + movq 40(%r15), %r8 + movq %rcx, 32(%r15) + adcq 40(%r10), %r8 + movq 48(%r15), %rax + movq %r8, 40(%r15) + adcq 48(%r10), %rax + movq 56(%r15), %rcx + movq %rax, 48(%r15) + adcq 56(%r10), %rcx + movq 64(%r15), %r8 + movq %rcx, 56(%r15) + adcq 64(%r10), %r8 + movq 72(%r15), %rax + movq %r8, 64(%r15) + adcq 72(%r10), %rax + movq 80(%r15), %rcx + movq %rax, 72(%r15) + adcq 80(%r10), %rcx + movq 88(%r15), %r8 + movq %rcx, 80(%r15) + adcq 88(%r10), %r8 + movq 96(%r15), %rax + movq %r8, 88(%r15) + adcq 96(%r10), %rax + movq 104(%r15), %rcx + movq %rax, 96(%r15) + adcq 104(%r10), %rcx + movq 112(%r15), %r8 + movq %rcx, 104(%r15) + adcq 112(%r10), %r8 + movq 120(%r15), %rax + movq %r8, 112(%r15) + adcq 120(%r10), %rax + movq 128(%r15), %rcx + movq %rax, 120(%r15) + adcq 128(%r10), %rcx + movq 136(%r15), %r8 + movq %rcx, 128(%r15) + adcq 136(%r10), %r8 + movq 144(%r15), %rax + movq %r8, 136(%r15) + adcq 144(%r10), %rax + movq 152(%r15), %rcx + movq %rax, 144(%r15) + adcq 152(%r10), %rcx + movq 160(%r15), %r8 + movq %rcx, 152(%r15) + adcq 160(%r10), %r8 + movq 168(%r15), %rax + movq %r8, 160(%r15) + adcq 168(%r10), %rax + movq 176(%r15), %rcx + movq %rax, 168(%r15) + adcq 176(%r10), %rcx + movq 184(%r15), %r8 + movq %rcx, 176(%r15) + adcq 184(%r10), %r8 + movq 192(%r15), %rax + movq %r8, 184(%r15) + adcq 192(%r10), %rax + movq 200(%r15), %rcx + movq %rax, 192(%r15) + adcq 200(%r10), %rcx + movq 208(%r15), %r8 + movq %rcx, 200(%r15) + adcq 208(%r10), %r8 + movq 216(%r15), %rax + movq %r8, 208(%r15) + adcq 216(%r10), %rax + movq 224(%r15), %rcx + movq %rax, 216(%r15) + adcq 224(%r10), %rcx + movq 232(%r15), %r8 + movq %rcx, 224(%r15) + adcq 232(%r10), %r8 + movq 240(%r15), %rax + movq %r8, 232(%r15) + adcq 240(%r10), %rax + movq 248(%r15), %rcx + movq %rax, 240(%r15) + adcq 248(%r10), %rcx + movq %rcx, 248(%r15) + adcq $0, %r9 + movq %r9, 384(%rdi) + addq $128, %r15 + # Add + movq (%r15), %rax + xorq %r9, %r9 + addq (%r11), %rax + movq 8(%r15), %rcx + movq %rax, (%r15) + adcq 8(%r11), %rcx + movq 16(%r15), %r8 + movq %rcx, 8(%r15) + adcq 16(%r11), %r8 + movq 24(%r15), %rax + movq %r8, 16(%r15) + adcq 24(%r11), %rax + movq 32(%r15), %rcx + movq %rax, 24(%r15) + adcq 32(%r11), %rcx + movq 40(%r15), %r8 + movq %rcx, 32(%r15) + adcq 40(%r11), %r8 + movq 48(%r15), %rax + movq %r8, 40(%r15) + adcq 48(%r11), %rax + movq 56(%r15), %rcx + movq %rax, 48(%r15) + adcq 56(%r11), %rcx + movq 64(%r15), %r8 + movq %rcx, 56(%r15) + adcq 64(%r11), %r8 + movq 72(%r15), %rax + movq %r8, 64(%r15) + adcq 72(%r11), %rax + movq 80(%r15), %rcx + movq %rax, 72(%r15) + adcq 80(%r11), %rcx + movq 88(%r15), %r8 + movq %rcx, 80(%r15) + adcq 88(%r11), %r8 + movq 96(%r15), %rax + movq %r8, 88(%r15) + adcq 96(%r11), %rax + movq 104(%r15), %rcx + movq %rax, 96(%r15) + adcq 104(%r11), %rcx + movq 112(%r15), %r8 + movq %rcx, 104(%r15) + adcq 112(%r11), %r8 + movq 120(%r15), %rax + movq %r8, 112(%r15) + adcq 120(%r11), %rax + movq 128(%r15), %rcx + movq %rax, 120(%r15) + adcq 128(%r11), %rcx + movq %rcx, 128(%r15) + adcq $0, %r9 + # Add to zero + movq 136(%r11), %rax + adcq $0, %rax + movq 144(%r11), %rcx + movq %rax, 136(%r15) + adcq $0, %rcx + movq 152(%r11), %r8 + movq %rcx, 144(%r15) + adcq $0, %r8 + movq 160(%r11), %rax + movq %r8, 152(%r15) + adcq $0, %rax + movq 168(%r11), %rcx + movq %rax, 160(%r15) + adcq $0, %rcx + movq 176(%r11), %r8 + movq %rcx, 168(%r15) + adcq $0, %r8 + movq 184(%r11), %rax + movq %r8, 176(%r15) + adcq $0, %rax + movq 192(%r11), %rcx + movq %rax, 184(%r15) + adcq $0, %rcx + movq 200(%r11), %r8 + movq %rcx, 192(%r15) + adcq $0, %r8 + movq 208(%r11), %rax + movq %r8, 200(%r15) + adcq $0, %rax + movq 216(%r11), %rcx + movq %rax, 208(%r15) + adcq $0, %rcx + movq 224(%r11), %r8 + movq %rcx, 216(%r15) + adcq $0, %r8 + movq 232(%r11), %rax + movq %r8, 224(%r15) + adcq $0, %rax + movq 240(%r11), %rcx + movq %rax, 232(%r15) + adcq $0, %rcx + movq 248(%r11), %r8 + movq %rcx, 240(%r15) + adcq $0, %r8 + movq %r8, 248(%r15) + addq $808, %rsp + pop %r15 + pop %r14 + pop %r13 + pop %r12 + repz retq +#ifndef __APPLE__ +.size sp_2048_mul_avx2_32,.-sp_2048_mul_avx2_32 +#endif /* __APPLE__ */ +/* Square a and put result in r. (r = a * a) + * + * r A single precision integer. + * a A single precision integer. + */ +#ifndef __APPLE__ +.globl sp_2048_sqr_avx2_32 +.type sp_2048_sqr_avx2_32,@function +.align 16 +sp_2048_sqr_avx2_32: +#else +.globl _sp_2048_sqr_avx2_32 +.p2align 4 +_sp_2048_sqr_avx2_32: +#endif /* __APPLE__ */ + subq $664, %rsp + movq %rdi, 640(%rsp) + movq %rsi, 648(%rsp) + leaq 512(%rsp), %r8 + leaq 128(%rsi), %r9 + # Add + movq (%rsi), %rdx + xorq %rcx, %rcx + addq (%r9), %rdx + movq 8(%rsi), %rax + movq %rdx, (%r8) + adcq 8(%r9), %rax + movq 16(%rsi), %rdx + movq %rax, 8(%r8) + adcq 16(%r9), %rdx + movq 24(%rsi), %rax + movq %rdx, 16(%r8) + adcq 24(%r9), %rax + movq 32(%rsi), %rdx + movq %rax, 24(%r8) + adcq 32(%r9), %rdx + movq 40(%rsi), %rax + movq %rdx, 32(%r8) + adcq 40(%r9), %rax + movq 48(%rsi), %rdx + movq %rax, 40(%r8) + adcq 48(%r9), %rdx + movq 56(%rsi), %rax + movq %rdx, 48(%r8) + adcq 56(%r9), %rax + movq 64(%rsi), %rdx + movq %rax, 56(%r8) + adcq 64(%r9), %rdx + movq 72(%rsi), %rax + movq %rdx, 64(%r8) + adcq 72(%r9), %rax + movq 80(%rsi), %rdx + movq %rax, 72(%r8) + adcq 80(%r9), %rdx + movq 88(%rsi), %rax + movq %rdx, 80(%r8) + adcq 88(%r9), %rax + movq 96(%rsi), %rdx + movq %rax, 88(%r8) + adcq 96(%r9), %rdx + movq 104(%rsi), %rax + movq %rdx, 96(%r8) + adcq 104(%r9), %rax + movq 112(%rsi), %rdx + movq %rax, 104(%r8) + adcq 112(%r9), %rdx + movq 120(%rsi), %rax + movq %rdx, 112(%r8) + adcq 120(%r9), %rax + movq %rax, 120(%r8) + adcq $0, %rcx + movq %rcx, 656(%rsp) + movq %r8, %rsi + movq %rsp, %rdi +#ifndef __APPLE__ + callq sp_2048_sqr_avx2_16@plt +#else + callq _sp_2048_sqr_avx2_16 +#endif /* __APPLE__ */ + movq 648(%rsp), %rsi + leaq 256(%rsp), %rdi + addq $128, %rsi +#ifndef __APPLE__ + callq sp_2048_sqr_avx2_16@plt +#else + callq _sp_2048_sqr_avx2_16 +#endif /* __APPLE__ */ + movq 648(%rsp), %rsi + movq 640(%rsp), %rdi +#ifndef __APPLE__ + callq sp_2048_sqr_avx2_16@plt +#else + callq _sp_2048_sqr_avx2_16 +#endif /* __APPLE__ */ + movq 656(%rsp), %r10 + leaq 512(%rsp), %r8 + movq %r10, %rcx + negq %r10 + movq (%r8), %rdx + pextq %r10, %rdx, %rdx + addq %rdx, %rdx + movq 8(%r8), %rax + movq %rdx, 256(%rdi) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 16(%r8), %rdx + movq %rax, 264(%rdi) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 24(%r8), %rax + movq %rdx, 272(%rdi) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 32(%r8), %rdx + movq %rax, 280(%rdi) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 40(%r8), %rax + movq %rdx, 288(%rdi) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 48(%r8), %rdx + movq %rax, 296(%rdi) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 56(%r8), %rax + movq %rdx, 304(%rdi) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 64(%r8), %rdx + movq %rax, 312(%rdi) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 72(%r8), %rax + movq %rdx, 320(%rdi) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 80(%r8), %rdx + movq %rax, 328(%rdi) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 88(%r8), %rax + movq %rdx, 336(%rdi) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 96(%r8), %rdx + movq %rax, 344(%rdi) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 104(%r8), %rax + movq %rdx, 352(%rdi) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 112(%r8), %rdx + movq %rax, 360(%rdi) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 120(%r8), %rax + movq %rdx, 368(%rdi) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq %rax, 376(%rdi) + adcq $0, %rcx + leaq 256(%rsp), %rsi + movq %rsp, %r8 + movq (%r8), %rdx + subq (%rsi), %rdx + movq 8(%r8), %rax + movq %rdx, (%r8) + sbbq 8(%rsi), %rax + movq 16(%r8), %rdx + movq %rax, 8(%r8) + sbbq 16(%rsi), %rdx + movq 24(%r8), %rax + movq %rdx, 16(%r8) + sbbq 24(%rsi), %rax + movq 32(%r8), %rdx + movq %rax, 24(%r8) + sbbq 32(%rsi), %rdx + movq 40(%r8), %rax + movq %rdx, 32(%r8) + sbbq 40(%rsi), %rax + movq 48(%r8), %rdx + movq %rax, 40(%r8) + sbbq 48(%rsi), %rdx + movq 56(%r8), %rax + movq %rdx, 48(%r8) + sbbq 56(%rsi), %rax + movq 64(%r8), %rdx + movq %rax, 56(%r8) + sbbq 64(%rsi), %rdx + movq 72(%r8), %rax + movq %rdx, 64(%r8) + sbbq 72(%rsi), %rax + movq 80(%r8), %rdx + movq %rax, 72(%r8) + sbbq 80(%rsi), %rdx + movq 88(%r8), %rax + movq %rdx, 80(%r8) + sbbq 88(%rsi), %rax + movq 96(%r8), %rdx + movq %rax, 88(%r8) + sbbq 96(%rsi), %rdx + movq 104(%r8), %rax + movq %rdx, 96(%r8) + sbbq 104(%rsi), %rax + movq 112(%r8), %rdx + movq %rax, 104(%r8) + sbbq 112(%rsi), %rdx + movq 120(%r8), %rax + movq %rdx, 112(%r8) + sbbq 120(%rsi), %rax + movq 128(%r8), %rdx + movq %rax, 120(%r8) + sbbq 128(%rsi), %rdx + movq 136(%r8), %rax + movq %rdx, 128(%r8) + sbbq 136(%rsi), %rax + movq 144(%r8), %rdx + movq %rax, 136(%r8) + sbbq 144(%rsi), %rdx + movq 152(%r8), %rax + movq %rdx, 144(%r8) + sbbq 152(%rsi), %rax + movq 160(%r8), %rdx + movq %rax, 152(%r8) + sbbq 160(%rsi), %rdx + movq 168(%r8), %rax + movq %rdx, 160(%r8) + sbbq 168(%rsi), %rax + movq 176(%r8), %rdx + movq %rax, 168(%r8) + sbbq 176(%rsi), %rdx + movq 184(%r8), %rax + movq %rdx, 176(%r8) + sbbq 184(%rsi), %rax + movq 192(%r8), %rdx + movq %rax, 184(%r8) + sbbq 192(%rsi), %rdx + movq 200(%r8), %rax + movq %rdx, 192(%r8) + sbbq 200(%rsi), %rax + movq 208(%r8), %rdx + movq %rax, 200(%r8) + sbbq 208(%rsi), %rdx + movq 216(%r8), %rax + movq %rdx, 208(%r8) + sbbq 216(%rsi), %rax + movq 224(%r8), %rdx + movq %rax, 216(%r8) + sbbq 224(%rsi), %rdx + movq 232(%r8), %rax + movq %rdx, 224(%r8) + sbbq 232(%rsi), %rax + movq 240(%r8), %rdx + movq %rax, 232(%r8) + sbbq 240(%rsi), %rdx + movq 248(%r8), %rax + movq %rdx, 240(%r8) + sbbq 248(%rsi), %rax + movq %rax, 248(%r8) + sbbq $0, %rcx + movq (%r8), %rdx + subq (%rdi), %rdx + movq 8(%r8), %rax + movq %rdx, (%r8) + sbbq 8(%rdi), %rax + movq 16(%r8), %rdx + movq %rax, 8(%r8) + sbbq 16(%rdi), %rdx + movq 24(%r8), %rax + movq %rdx, 16(%r8) + sbbq 24(%rdi), %rax + movq 32(%r8), %rdx + movq %rax, 24(%r8) + sbbq 32(%rdi), %rdx + movq 40(%r8), %rax + movq %rdx, 32(%r8) + sbbq 40(%rdi), %rax + movq 48(%r8), %rdx + movq %rax, 40(%r8) + sbbq 48(%rdi), %rdx + movq 56(%r8), %rax + movq %rdx, 48(%r8) + sbbq 56(%rdi), %rax + movq 64(%r8), %rdx + movq %rax, 56(%r8) + sbbq 64(%rdi), %rdx + movq 72(%r8), %rax + movq %rdx, 64(%r8) + sbbq 72(%rdi), %rax + movq 80(%r8), %rdx + movq %rax, 72(%r8) + sbbq 80(%rdi), %rdx + movq 88(%r8), %rax + movq %rdx, 80(%r8) + sbbq 88(%rdi), %rax + movq 96(%r8), %rdx + movq %rax, 88(%r8) + sbbq 96(%rdi), %rdx + movq 104(%r8), %rax + movq %rdx, 96(%r8) + sbbq 104(%rdi), %rax + movq 112(%r8), %rdx + movq %rax, 104(%r8) + sbbq 112(%rdi), %rdx + movq 120(%r8), %rax + movq %rdx, 112(%r8) + sbbq 120(%rdi), %rax + movq 128(%r8), %rdx + movq %rax, 120(%r8) + sbbq 128(%rdi), %rdx + movq 136(%r8), %rax + movq %rdx, 128(%r8) + sbbq 136(%rdi), %rax + movq 144(%r8), %rdx + movq %rax, 136(%r8) + sbbq 144(%rdi), %rdx + movq 152(%r8), %rax + movq %rdx, 144(%r8) + sbbq 152(%rdi), %rax + movq 160(%r8), %rdx + movq %rax, 152(%r8) + sbbq 160(%rdi), %rdx + movq 168(%r8), %rax + movq %rdx, 160(%r8) + sbbq 168(%rdi), %rax + movq 176(%r8), %rdx + movq %rax, 168(%r8) + sbbq 176(%rdi), %rdx + movq 184(%r8), %rax + movq %rdx, 176(%r8) + sbbq 184(%rdi), %rax + movq 192(%r8), %rdx + movq %rax, 184(%r8) + sbbq 192(%rdi), %rdx + movq 200(%r8), %rax + movq %rdx, 192(%r8) + sbbq 200(%rdi), %rax + movq 208(%r8), %rdx + movq %rax, 200(%r8) + sbbq 208(%rdi), %rdx + movq 216(%r8), %rax + movq %rdx, 208(%r8) + sbbq 216(%rdi), %rax + movq 224(%r8), %rdx + movq %rax, 216(%r8) + sbbq 224(%rdi), %rdx + movq 232(%r8), %rax + movq %rdx, 224(%r8) + sbbq 232(%rdi), %rax + movq 240(%r8), %rdx + movq %rax, 232(%r8) + sbbq 240(%rdi), %rdx + movq 248(%r8), %rax + movq %rdx, 240(%r8) + sbbq 248(%rdi), %rax + movq %rax, 248(%r8) + sbbq $0, %rcx + # Add in place + movq 128(%rdi), %rdx + addq (%r8), %rdx + movq 136(%rdi), %rax + movq %rdx, 128(%rdi) + adcq 8(%r8), %rax + movq 144(%rdi), %rdx + movq %rax, 136(%rdi) + adcq 16(%r8), %rdx + movq 152(%rdi), %rax + movq %rdx, 144(%rdi) + adcq 24(%r8), %rax + movq 160(%rdi), %rdx + movq %rax, 152(%rdi) + adcq 32(%r8), %rdx + movq 168(%rdi), %rax + movq %rdx, 160(%rdi) + adcq 40(%r8), %rax + movq 176(%rdi), %rdx + movq %rax, 168(%rdi) + adcq 48(%r8), %rdx + movq 184(%rdi), %rax + movq %rdx, 176(%rdi) + adcq 56(%r8), %rax + movq 192(%rdi), %rdx + movq %rax, 184(%rdi) + adcq 64(%r8), %rdx + movq 200(%rdi), %rax + movq %rdx, 192(%rdi) + adcq 72(%r8), %rax + movq 208(%rdi), %rdx + movq %rax, 200(%rdi) + adcq 80(%r8), %rdx + movq 216(%rdi), %rax + movq %rdx, 208(%rdi) + adcq 88(%r8), %rax + movq 224(%rdi), %rdx + movq %rax, 216(%rdi) + adcq 96(%r8), %rdx + movq 232(%rdi), %rax + movq %rdx, 224(%rdi) + adcq 104(%r8), %rax + movq 240(%rdi), %rdx + movq %rax, 232(%rdi) + adcq 112(%r8), %rdx + movq 248(%rdi), %rax + movq %rdx, 240(%rdi) + adcq 120(%r8), %rax + movq 256(%rdi), %rdx + movq %rax, 248(%rdi) + adcq 128(%r8), %rdx + movq 264(%rdi), %rax + movq %rdx, 256(%rdi) + adcq 136(%r8), %rax + movq 272(%rdi), %rdx + movq %rax, 264(%rdi) + adcq 144(%r8), %rdx + movq 280(%rdi), %rax + movq %rdx, 272(%rdi) + adcq 152(%r8), %rax + movq 288(%rdi), %rdx + movq %rax, 280(%rdi) + adcq 160(%r8), %rdx + movq 296(%rdi), %rax + movq %rdx, 288(%rdi) + adcq 168(%r8), %rax + movq 304(%rdi), %rdx + movq %rax, 296(%rdi) + adcq 176(%r8), %rdx + movq 312(%rdi), %rax + movq %rdx, 304(%rdi) + adcq 184(%r8), %rax + movq 320(%rdi), %rdx + movq %rax, 312(%rdi) + adcq 192(%r8), %rdx + movq 328(%rdi), %rax + movq %rdx, 320(%rdi) + adcq 200(%r8), %rax + movq 336(%rdi), %rdx + movq %rax, 328(%rdi) + adcq 208(%r8), %rdx + movq 344(%rdi), %rax + movq %rdx, 336(%rdi) + adcq 216(%r8), %rax + movq 352(%rdi), %rdx + movq %rax, 344(%rdi) + adcq 224(%r8), %rdx + movq 360(%rdi), %rax + movq %rdx, 352(%rdi) + adcq 232(%r8), %rax + movq 368(%rdi), %rdx + movq %rax, 360(%rdi) + adcq 240(%r8), %rdx + movq 376(%rdi), %rax + movq %rdx, 368(%rdi) + adcq 248(%r8), %rax + movq %rax, 376(%rdi) + adcq $0, %rcx + movq %rcx, 384(%rdi) + # Add in place + movq 256(%rdi), %rdx + xorq %rcx, %rcx + addq (%rsi), %rdx + movq 264(%rdi), %rax + movq %rdx, 256(%rdi) + adcq 8(%rsi), %rax + movq 272(%rdi), %rdx + movq %rax, 264(%rdi) + adcq 16(%rsi), %rdx + movq 280(%rdi), %rax + movq %rdx, 272(%rdi) + adcq 24(%rsi), %rax + movq 288(%rdi), %rdx + movq %rax, 280(%rdi) + adcq 32(%rsi), %rdx + movq 296(%rdi), %rax + movq %rdx, 288(%rdi) + adcq 40(%rsi), %rax + movq 304(%rdi), %rdx + movq %rax, 296(%rdi) + adcq 48(%rsi), %rdx + movq 312(%rdi), %rax + movq %rdx, 304(%rdi) + adcq 56(%rsi), %rax + movq 320(%rdi), %rdx + movq %rax, 312(%rdi) + adcq 64(%rsi), %rdx + movq 328(%rdi), %rax + movq %rdx, 320(%rdi) + adcq 72(%rsi), %rax + movq 336(%rdi), %rdx + movq %rax, 328(%rdi) + adcq 80(%rsi), %rdx + movq 344(%rdi), %rax + movq %rdx, 336(%rdi) + adcq 88(%rsi), %rax + movq 352(%rdi), %rdx + movq %rax, 344(%rdi) + adcq 96(%rsi), %rdx + movq 360(%rdi), %rax + movq %rdx, 352(%rdi) + adcq 104(%rsi), %rax + movq 368(%rdi), %rdx + movq %rax, 360(%rdi) + adcq 112(%rsi), %rdx + movq 376(%rdi), %rax + movq %rdx, 368(%rdi) + adcq 120(%rsi), %rax + movq 384(%rdi), %rdx + movq %rax, 376(%rdi) + adcq 128(%rsi), %rdx + movq %rdx, 384(%rdi) + adcq $0, %rcx + # Add to zero + movq 136(%rsi), %rdx + adcq $0, %rdx + movq 144(%rsi), %rax + movq %rdx, 392(%rdi) + adcq $0, %rax + movq 152(%rsi), %rdx + movq %rax, 400(%rdi) + adcq $0, %rdx + movq 160(%rsi), %rax + movq %rdx, 408(%rdi) + adcq $0, %rax + movq 168(%rsi), %rdx + movq %rax, 416(%rdi) + adcq $0, %rdx + movq 176(%rsi), %rax + movq %rdx, 424(%rdi) + adcq $0, %rax + movq 184(%rsi), %rdx + movq %rax, 432(%rdi) + adcq $0, %rdx + movq 192(%rsi), %rax + movq %rdx, 440(%rdi) + adcq $0, %rax + movq 200(%rsi), %rdx + movq %rax, 448(%rdi) + adcq $0, %rdx + movq 208(%rsi), %rax + movq %rdx, 456(%rdi) + adcq $0, %rax + movq 216(%rsi), %rdx + movq %rax, 464(%rdi) + adcq $0, %rdx + movq 224(%rsi), %rax + movq %rdx, 472(%rdi) + adcq $0, %rax + movq 232(%rsi), %rdx + movq %rax, 480(%rdi) + adcq $0, %rdx + movq 240(%rsi), %rax + movq %rdx, 488(%rdi) + adcq $0, %rax + movq 248(%rsi), %rdx + movq %rax, 496(%rdi) + adcq $0, %rdx + movq %rdx, 504(%rdi) + addq $664, %rsp + repz retq +#ifndef __APPLE__ +.size sp_2048_sqr_avx2_32,.-sp_2048_sqr_avx2_32 +#endif /* __APPLE__ */ /* Mul a by digit b into r. (r = a * b) * * r A single precision integer. @@ -6693,86 +9260,86 @@ sp_2048_cond_sub_avx2_16: _sp_2048_cond_sub_avx2_16: #endif /* __APPLE__ */ movq $0, %rax - movq (%rsi), %r8 movq (%rdx), %r10 + movq (%rsi), %r8 pextq %rcx, %r10, %r10 subq %r10, %r8 - movq 8(%rsi), %r9 movq 8(%rdx), %r10 + movq 8(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, (%rdi) sbbq %r10, %r9 - movq 16(%rsi), %r8 - movq 16(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 16(%rdx), %r8 + movq 16(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 8(%rdi) - sbbq %r10, %r8 - movq 24(%rsi), %r9 - movq 24(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 16(%rdi) - sbbq %r10, %r9 - movq 32(%rsi), %r8 + sbbq %r8, %r10 + movq 24(%rdx), %r9 + movq 24(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 16(%rdi) + sbbq %r9, %r8 movq 32(%rdx), %r10 + movq 32(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 24(%rdi) - sbbq %r10, %r8 - movq 40(%rsi), %r9 - movq 40(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 32(%rdi) + movq %r8, 24(%rdi) sbbq %r10, %r9 + movq 40(%rdx), %r8 + movq 40(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 32(%rdi) + sbbq %r8, %r10 + movq 48(%rdx), %r9 movq 48(%rsi), %r8 - movq 48(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 40(%rdi) - sbbq %r10, %r8 - movq 56(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 40(%rdi) + sbbq %r9, %r8 movq 56(%rdx), %r10 + movq 56(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 48(%rdi) sbbq %r10, %r9 - movq 64(%rsi), %r8 - movq 64(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 64(%rdx), %r8 + movq 64(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 56(%rdi) - sbbq %r10, %r8 - movq 72(%rsi), %r9 - movq 72(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 64(%rdi) - sbbq %r10, %r9 - movq 80(%rsi), %r8 + sbbq %r8, %r10 + movq 72(%rdx), %r9 + movq 72(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 64(%rdi) + sbbq %r9, %r8 movq 80(%rdx), %r10 + movq 80(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 72(%rdi) - sbbq %r10, %r8 - movq 88(%rsi), %r9 - movq 88(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 80(%rdi) + movq %r8, 72(%rdi) sbbq %r10, %r9 + movq 88(%rdx), %r8 + movq 88(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 80(%rdi) + sbbq %r8, %r10 + movq 96(%rdx), %r9 movq 96(%rsi), %r8 - movq 96(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 88(%rdi) - sbbq %r10, %r8 - movq 104(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 88(%rdi) + sbbq %r9, %r8 movq 104(%rdx), %r10 + movq 104(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 96(%rdi) sbbq %r10, %r9 - movq 112(%rsi), %r8 - movq 112(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 112(%rdx), %r8 + movq 112(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 104(%rdi) - sbbq %r10, %r8 - movq 120(%rsi), %r9 - movq 120(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 112(%rdi) - sbbq %r10, %r9 - movq %r9, 120(%rdi) + sbbq %r8, %r10 + movq 120(%rdx), %r9 + movq 120(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 112(%rdi) + sbbq %r9, %r8 + movq %r8, 120(%rdi) sbbq $0, %rax repz retq #ifndef __APPLE__ @@ -6942,102 +9509,104 @@ sp_2048_mul_d_avx2_16: .p2align 4 _sp_2048_mul_d_avx2_16: #endif /* __APPLE__ */ + movq %rdx, %rax # A[0] * B - xorq %r10, %r10 - mulxq (%rsi), %r8, %r9 - movq %r8, (%rdi) + movq %rax, %rdx + xorq %r11, %r11 + mulxq (%rsi), %r9, %r10 + movq %r9, (%rdi) # A[1] * B - mulxq 8(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 8(%rdi) - adoxq %rcx, %r8 + mulxq 8(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 8(%rdi) + adoxq %r8, %r9 # A[2] * B - mulxq 16(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 16(%rdi) - adoxq %rcx, %r9 + mulxq 16(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 16(%rdi) + adoxq %r8, %r10 # A[3] * B - mulxq 24(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 24(%rdi) - adoxq %rcx, %r8 + mulxq 24(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 24(%rdi) + adoxq %r8, %r9 # A[4] * B - mulxq 32(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 32(%rdi) - adoxq %rcx, %r9 + mulxq 32(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 32(%rdi) + adoxq %r8, %r10 # A[5] * B - mulxq 40(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 40(%rdi) - adoxq %rcx, %r8 + mulxq 40(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 40(%rdi) + adoxq %r8, %r9 # A[6] * B - mulxq 48(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 48(%rdi) - adoxq %rcx, %r9 + mulxq 48(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 48(%rdi) + adoxq %r8, %r10 # A[7] * B - mulxq 56(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 56(%rdi) - adoxq %rcx, %r8 + mulxq 56(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 56(%rdi) + adoxq %r8, %r9 # A[8] * B - mulxq 64(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 64(%rdi) - adoxq %rcx, %r9 + mulxq 64(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 64(%rdi) + adoxq %r8, %r10 # A[9] * B - mulxq 72(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 72(%rdi) - adoxq %rcx, %r8 + mulxq 72(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 72(%rdi) + adoxq %r8, %r9 # A[10] * B - mulxq 80(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 80(%rdi) - adoxq %rcx, %r9 + mulxq 80(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 80(%rdi) + adoxq %r8, %r10 # A[11] * B - mulxq 88(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 88(%rdi) - adoxq %rcx, %r8 + mulxq 88(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 88(%rdi) + adoxq %r8, %r9 # A[12] * B - mulxq 96(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 96(%rdi) - adoxq %rcx, %r9 + mulxq 96(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 96(%rdi) + adoxq %r8, %r10 # A[13] * B - mulxq 104(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 104(%rdi) - adoxq %rcx, %r8 + mulxq 104(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 104(%rdi) + adoxq %r8, %r9 # A[14] * B - mulxq 112(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 112(%rdi) - adoxq %rcx, %r9 + mulxq 112(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 112(%rdi) + adoxq %r8, %r10 # A[15] * B - mulxq 120(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - adoxq %rcx, %r8 - adcxq %r10, %r8 - movq %r9, 120(%rdi) - movq %r8, 128(%rdi) + mulxq 120(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + adoxq %r8, %r9 + adcxq %r11, %r9 + movq %r10, 120(%rdi) + movq %r9, 128(%rdi) repz retq #ifndef __APPLE__ .size sp_2048_mul_d_avx2_16,.-sp_2048_mul_d_avx2_16 @@ -7217,131 +9786,311 @@ _sp_2048_mont_reduce_avx2_16: push %r12 push %r13 push %r14 - movq %rdx, %rax + movq %rdx, %r8 xorq %r14, %r14 # i = 16 movq $16, %r9 movq (%rdi), %r13 + addq $64, %rdi xorq %r12, %r12 L_mont_loop_avx2_16: # mu = a[i] * mp movq %r13, %rdx - mulxq %rax, %rdx, %r8 movq %r13, %r10 + imulq %r8, %rdx + xorq %r12, %r12 # a[i+0] += m[0] * mu - mulxq (%rsi), %rcx, %r8 - movq 8(%rdi), %r13 - adcxq %rcx, %r10 - adoxq %r8, %r13 + mulxq (%rsi), %rax, %rcx + movq -56(%rdi), %r13 + adcxq %rax, %r10 + adoxq %rcx, %r13 # a[i+1] += m[1] * mu - mulxq 8(%rsi), %rcx, %r8 - movq 16(%rdi), %r10 - adcxq %rcx, %r13 - adoxq %r8, %r10 + mulxq 8(%rsi), %rax, %rcx + movq -48(%rdi), %r10 + adcxq %rax, %r13 + adoxq %rcx, %r10 # a[i+2] += m[2] * mu - mulxq 16(%rsi), %rcx, %r8 - movq 24(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 16(%rdi) + mulxq 16(%rsi), %rax, %rcx + movq -40(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -48(%rdi) # a[i+3] += m[3] * mu - mulxq 24(%rsi), %rcx, %r8 - movq 32(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 24(%rdi) + mulxq 24(%rsi), %rax, %rcx + movq -32(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -40(%rdi) # a[i+4] += m[4] * mu - mulxq 32(%rsi), %rcx, %r8 - movq 40(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 32(%rdi) + mulxq 32(%rsi), %rax, %rcx + movq -24(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -32(%rdi) # a[i+5] += m[5] * mu - mulxq 40(%rsi), %rcx, %r8 - movq 48(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 40(%rdi) + mulxq 40(%rsi), %rax, %rcx + movq -16(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -24(%rdi) # a[i+6] += m[6] * mu - mulxq 48(%rsi), %rcx, %r8 - movq 56(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 48(%rdi) + mulxq 48(%rsi), %rax, %rcx + movq -8(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -16(%rdi) # a[i+7] += m[7] * mu - mulxq 56(%rsi), %rcx, %r8 - movq 64(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 56(%rdi) + mulxq 56(%rsi), %rax, %rcx + movq (%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -8(%rdi) # a[i+8] += m[8] * mu - mulxq 64(%rsi), %rcx, %r8 - movq 72(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 64(%rdi) + mulxq 64(%rsi), %rax, %rcx + movq 8(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, (%rdi) # a[i+9] += m[9] * mu - mulxq 72(%rsi), %rcx, %r8 - movq 80(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 72(%rdi) + mulxq 72(%rsi), %rax, %rcx + movq 16(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 8(%rdi) # a[i+10] += m[10] * mu - mulxq 80(%rsi), %rcx, %r8 - movq 88(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 80(%rdi) + mulxq 80(%rsi), %rax, %rcx + movq 24(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 16(%rdi) # a[i+11] += m[11] * mu - mulxq 88(%rsi), %rcx, %r8 - movq 96(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 88(%rdi) + mulxq 88(%rsi), %rax, %rcx + movq 32(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 24(%rdi) # a[i+12] += m[12] * mu - mulxq 96(%rsi), %rcx, %r8 - movq 104(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 96(%rdi) + mulxq 96(%rsi), %rax, %rcx + movq 40(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 32(%rdi) # a[i+13] += m[13] * mu - mulxq 104(%rsi), %rcx, %r8 - movq 112(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 104(%rdi) + mulxq 104(%rsi), %rax, %rcx + movq 48(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 40(%rdi) # a[i+14] += m[14] * mu - mulxq 112(%rsi), %rcx, %r8 - movq 120(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 112(%rdi) + mulxq 112(%rsi), %rax, %rcx + movq 56(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 48(%rdi) # a[i+15] += m[15] * mu - mulxq 120(%rsi), %rcx, %r8 - movq 128(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 120(%rdi) + mulxq 120(%rsi), %rax, %rcx + movq 64(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 56(%rdi) adcxq %r14, %r10 + movq %r10, 64(%rdi) movq %r12, %r14 - movq %r10, 128(%rdi) adoxq %r12, %r14 adcxq %r12, %r14 - # i -= 1 - addq $8, %rdi - decq %r9 + # mu = a[i] * mp + movq %r13, %rdx + movq %r13, %r10 + imulq %r8, %rdx + xorq %r12, %r12 + # a[i+0] += m[0] * mu + mulxq (%rsi), %rax, %rcx + movq -48(%rdi), %r13 + adcxq %rax, %r10 + adoxq %rcx, %r13 + # a[i+1] += m[1] * mu + mulxq 8(%rsi), %rax, %rcx + movq -40(%rdi), %r10 + adcxq %rax, %r13 + adoxq %rcx, %r10 + # a[i+2] += m[2] * mu + mulxq 16(%rsi), %rax, %rcx + movq -32(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -40(%rdi) + # a[i+3] += m[3] * mu + mulxq 24(%rsi), %rax, %rcx + movq -24(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -32(%rdi) + # a[i+4] += m[4] * mu + mulxq 32(%rsi), %rax, %rcx + movq -16(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -24(%rdi) + # a[i+5] += m[5] * mu + mulxq 40(%rsi), %rax, %rcx + movq -8(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -16(%rdi) + # a[i+6] += m[6] * mu + mulxq 48(%rsi), %rax, %rcx + movq (%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -8(%rdi) + # a[i+7] += m[7] * mu + mulxq 56(%rsi), %rax, %rcx + movq 8(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, (%rdi) + # a[i+8] += m[8] * mu + mulxq 64(%rsi), %rax, %rcx + movq 16(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 8(%rdi) + # a[i+9] += m[9] * mu + mulxq 72(%rsi), %rax, %rcx + movq 24(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 16(%rdi) + # a[i+10] += m[10] * mu + mulxq 80(%rsi), %rax, %rcx + movq 32(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 24(%rdi) + # a[i+11] += m[11] * mu + mulxq 88(%rsi), %rax, %rcx + movq 40(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 32(%rdi) + # a[i+12] += m[12] * mu + mulxq 96(%rsi), %rax, %rcx + movq 48(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 40(%rdi) + # a[i+13] += m[13] * mu + mulxq 104(%rsi), %rax, %rcx + movq 56(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 48(%rdi) + # a[i+14] += m[14] * mu + mulxq 112(%rsi), %rax, %rcx + movq 64(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 56(%rdi) + # a[i+15] += m[15] * mu + mulxq 120(%rsi), %rax, %rcx + movq 72(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 64(%rdi) + adcxq %r14, %r10 + movq %r10, 72(%rdi) + movq %r12, %r14 + adoxq %r12, %r14 + adcxq %r12, %r14 + # a += 2 + addq $16, %rdi + # i -= 2 + subq $2, %r9 jnz L_mont_loop_avx2_16 - movq %r13, (%rdi) + subq $64, %rdi negq %r14 - movq %r14, %rcx - movq %rsi, %rdx - movq %rdi, %rsi + movq %rdi, %r8 subq $128, %rdi -#ifndef __APPLE__ - callq sp_2048_cond_sub_avx2_16@plt -#else - callq _sp_2048_cond_sub_avx2_16 -#endif /* __APPLE__ */ + movq (%rsi), %rcx + movq %r13, %rdx + pextq %r14, %rcx, %rcx + subq %rcx, %rdx + movq 8(%rsi), %rcx + movq 8(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, (%rdi) + sbbq %rcx, %rax + movq 16(%rsi), %rdx + movq 16(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 8(%rdi) + sbbq %rdx, %rcx + movq 24(%rsi), %rax + movq 24(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 16(%rdi) + sbbq %rax, %rdx + movq 32(%rsi), %rcx + movq 32(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 24(%rdi) + sbbq %rcx, %rax + movq 40(%rsi), %rdx + movq 40(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 32(%rdi) + sbbq %rdx, %rcx + movq 48(%rsi), %rax + movq 48(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 40(%rdi) + sbbq %rax, %rdx + movq 56(%rsi), %rcx + movq 56(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 48(%rdi) + sbbq %rcx, %rax + movq 64(%rsi), %rdx + movq 64(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 56(%rdi) + sbbq %rdx, %rcx + movq 72(%rsi), %rax + movq 72(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 64(%rdi) + sbbq %rax, %rdx + movq 80(%rsi), %rcx + movq 80(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 72(%rdi) + sbbq %rcx, %rax + movq 88(%rsi), %rdx + movq 88(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 80(%rdi) + sbbq %rdx, %rcx + movq 96(%rsi), %rax + movq 96(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 88(%rdi) + sbbq %rax, %rdx + movq 104(%rsi), %rcx + movq 104(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 96(%rdi) + sbbq %rcx, %rax + movq 112(%rsi), %rdx + movq 112(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 104(%rdi) + sbbq %rdx, %rcx + movq 120(%rsi), %rax + movq 120(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 112(%rdi) + sbbq %rax, %rdx + movq %rdx, 120(%rdi) pop %r14 pop %r13 pop %r12 @@ -7989,162 +10738,162 @@ sp_2048_cond_sub_avx2_32: _sp_2048_cond_sub_avx2_32: #endif /* __APPLE__ */ movq $0, %rax - movq (%rsi), %r8 movq (%rdx), %r10 + movq (%rsi), %r8 pextq %rcx, %r10, %r10 subq %r10, %r8 - movq 8(%rsi), %r9 movq 8(%rdx), %r10 + movq 8(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, (%rdi) sbbq %r10, %r9 - movq 16(%rsi), %r8 - movq 16(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 16(%rdx), %r8 + movq 16(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 8(%rdi) - sbbq %r10, %r8 - movq 24(%rsi), %r9 - movq 24(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 16(%rdi) - sbbq %r10, %r9 - movq 32(%rsi), %r8 + sbbq %r8, %r10 + movq 24(%rdx), %r9 + movq 24(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 16(%rdi) + sbbq %r9, %r8 movq 32(%rdx), %r10 + movq 32(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 24(%rdi) - sbbq %r10, %r8 - movq 40(%rsi), %r9 - movq 40(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 32(%rdi) + movq %r8, 24(%rdi) sbbq %r10, %r9 + movq 40(%rdx), %r8 + movq 40(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 32(%rdi) + sbbq %r8, %r10 + movq 48(%rdx), %r9 movq 48(%rsi), %r8 - movq 48(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 40(%rdi) - sbbq %r10, %r8 - movq 56(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 40(%rdi) + sbbq %r9, %r8 movq 56(%rdx), %r10 + movq 56(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 48(%rdi) sbbq %r10, %r9 - movq 64(%rsi), %r8 - movq 64(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 64(%rdx), %r8 + movq 64(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 56(%rdi) - sbbq %r10, %r8 - movq 72(%rsi), %r9 - movq 72(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 64(%rdi) - sbbq %r10, %r9 - movq 80(%rsi), %r8 + sbbq %r8, %r10 + movq 72(%rdx), %r9 + movq 72(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 64(%rdi) + sbbq %r9, %r8 movq 80(%rdx), %r10 + movq 80(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 72(%rdi) - sbbq %r10, %r8 - movq 88(%rsi), %r9 - movq 88(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 80(%rdi) + movq %r8, 72(%rdi) sbbq %r10, %r9 + movq 88(%rdx), %r8 + movq 88(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 80(%rdi) + sbbq %r8, %r10 + movq 96(%rdx), %r9 movq 96(%rsi), %r8 - movq 96(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 88(%rdi) - sbbq %r10, %r8 - movq 104(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 88(%rdi) + sbbq %r9, %r8 movq 104(%rdx), %r10 + movq 104(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 96(%rdi) sbbq %r10, %r9 - movq 112(%rsi), %r8 - movq 112(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 112(%rdx), %r8 + movq 112(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 104(%rdi) - sbbq %r10, %r8 - movq 120(%rsi), %r9 - movq 120(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 112(%rdi) - sbbq %r10, %r9 - movq 128(%rsi), %r8 + sbbq %r8, %r10 + movq 120(%rdx), %r9 + movq 120(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 112(%rdi) + sbbq %r9, %r8 movq 128(%rdx), %r10 + movq 128(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 120(%rdi) - sbbq %r10, %r8 - movq 136(%rsi), %r9 - movq 136(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 128(%rdi) + movq %r8, 120(%rdi) sbbq %r10, %r9 + movq 136(%rdx), %r8 + movq 136(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 128(%rdi) + sbbq %r8, %r10 + movq 144(%rdx), %r9 movq 144(%rsi), %r8 - movq 144(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 136(%rdi) - sbbq %r10, %r8 - movq 152(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 136(%rdi) + sbbq %r9, %r8 movq 152(%rdx), %r10 + movq 152(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 144(%rdi) sbbq %r10, %r9 - movq 160(%rsi), %r8 - movq 160(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 160(%rdx), %r8 + movq 160(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 152(%rdi) - sbbq %r10, %r8 - movq 168(%rsi), %r9 - movq 168(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 160(%rdi) - sbbq %r10, %r9 - movq 176(%rsi), %r8 + sbbq %r8, %r10 + movq 168(%rdx), %r9 + movq 168(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 160(%rdi) + sbbq %r9, %r8 movq 176(%rdx), %r10 + movq 176(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 168(%rdi) - sbbq %r10, %r8 - movq 184(%rsi), %r9 - movq 184(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 176(%rdi) + movq %r8, 168(%rdi) sbbq %r10, %r9 + movq 184(%rdx), %r8 + movq 184(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 176(%rdi) + sbbq %r8, %r10 + movq 192(%rdx), %r9 movq 192(%rsi), %r8 - movq 192(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 184(%rdi) - sbbq %r10, %r8 - movq 200(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 184(%rdi) + sbbq %r9, %r8 movq 200(%rdx), %r10 + movq 200(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 192(%rdi) sbbq %r10, %r9 - movq 208(%rsi), %r8 - movq 208(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 208(%rdx), %r8 + movq 208(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 200(%rdi) - sbbq %r10, %r8 - movq 216(%rsi), %r9 - movq 216(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 208(%rdi) - sbbq %r10, %r9 - movq 224(%rsi), %r8 + sbbq %r8, %r10 + movq 216(%rdx), %r9 + movq 216(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 208(%rdi) + sbbq %r9, %r8 movq 224(%rdx), %r10 + movq 224(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 216(%rdi) - sbbq %r10, %r8 - movq 232(%rsi), %r9 - movq 232(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 224(%rdi) + movq %r8, 216(%rdi) sbbq %r10, %r9 + movq 232(%rdx), %r8 + movq 232(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 224(%rdi) + sbbq %r8, %r10 + movq 240(%rdx), %r9 movq 240(%rsi), %r8 - movq 240(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 232(%rdi) - sbbq %r10, %r8 - movq 248(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 232(%rdi) + sbbq %r9, %r8 movq 248(%rdx), %r10 + movq 248(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 240(%rdi) sbbq %r10, %r9 @@ -8171,198 +10920,200 @@ sp_2048_mul_d_avx2_32: .p2align 4 _sp_2048_mul_d_avx2_32: #endif /* __APPLE__ */ + movq %rdx, %rax # A[0] * B - xorq %r10, %r10 - mulxq (%rsi), %r8, %r9 - movq %r8, (%rdi) + movq %rax, %rdx + xorq %r11, %r11 + mulxq (%rsi), %r9, %r10 + movq %r9, (%rdi) # A[1] * B - mulxq 8(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 8(%rdi) - adoxq %rcx, %r8 + mulxq 8(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 8(%rdi) + adoxq %r8, %r9 # A[2] * B - mulxq 16(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 16(%rdi) - adoxq %rcx, %r9 + mulxq 16(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 16(%rdi) + adoxq %r8, %r10 # A[3] * B - mulxq 24(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 24(%rdi) - adoxq %rcx, %r8 + mulxq 24(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 24(%rdi) + adoxq %r8, %r9 # A[4] * B - mulxq 32(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 32(%rdi) - adoxq %rcx, %r9 + mulxq 32(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 32(%rdi) + adoxq %r8, %r10 # A[5] * B - mulxq 40(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 40(%rdi) - adoxq %rcx, %r8 + mulxq 40(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 40(%rdi) + adoxq %r8, %r9 # A[6] * B - mulxq 48(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 48(%rdi) - adoxq %rcx, %r9 + mulxq 48(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 48(%rdi) + adoxq %r8, %r10 # A[7] * B - mulxq 56(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 56(%rdi) - adoxq %rcx, %r8 + mulxq 56(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 56(%rdi) + adoxq %r8, %r9 # A[8] * B - mulxq 64(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 64(%rdi) - adoxq %rcx, %r9 + mulxq 64(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 64(%rdi) + adoxq %r8, %r10 # A[9] * B - mulxq 72(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 72(%rdi) - adoxq %rcx, %r8 + mulxq 72(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 72(%rdi) + adoxq %r8, %r9 # A[10] * B - mulxq 80(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 80(%rdi) - adoxq %rcx, %r9 + mulxq 80(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 80(%rdi) + adoxq %r8, %r10 # A[11] * B - mulxq 88(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 88(%rdi) - adoxq %rcx, %r8 + mulxq 88(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 88(%rdi) + adoxq %r8, %r9 # A[12] * B - mulxq 96(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 96(%rdi) - adoxq %rcx, %r9 + mulxq 96(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 96(%rdi) + adoxq %r8, %r10 # A[13] * B - mulxq 104(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 104(%rdi) - adoxq %rcx, %r8 + mulxq 104(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 104(%rdi) + adoxq %r8, %r9 # A[14] * B - mulxq 112(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 112(%rdi) - adoxq %rcx, %r9 + mulxq 112(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 112(%rdi) + adoxq %r8, %r10 # A[15] * B - mulxq 120(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 120(%rdi) - adoxq %rcx, %r8 + mulxq 120(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 120(%rdi) + adoxq %r8, %r9 # A[16] * B - mulxq 128(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 128(%rdi) - adoxq %rcx, %r9 + mulxq 128(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 128(%rdi) + adoxq %r8, %r10 # A[17] * B - mulxq 136(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 136(%rdi) - adoxq %rcx, %r8 + mulxq 136(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 136(%rdi) + adoxq %r8, %r9 # A[18] * B - mulxq 144(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 144(%rdi) - adoxq %rcx, %r9 + mulxq 144(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 144(%rdi) + adoxq %r8, %r10 # A[19] * B - mulxq 152(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 152(%rdi) - adoxq %rcx, %r8 + mulxq 152(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 152(%rdi) + adoxq %r8, %r9 # A[20] * B - mulxq 160(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 160(%rdi) - adoxq %rcx, %r9 + mulxq 160(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 160(%rdi) + adoxq %r8, %r10 # A[21] * B - mulxq 168(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 168(%rdi) - adoxq %rcx, %r8 + mulxq 168(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 168(%rdi) + adoxq %r8, %r9 # A[22] * B - mulxq 176(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 176(%rdi) - adoxq %rcx, %r9 + mulxq 176(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 176(%rdi) + adoxq %r8, %r10 # A[23] * B - mulxq 184(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 184(%rdi) - adoxq %rcx, %r8 + mulxq 184(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 184(%rdi) + adoxq %r8, %r9 # A[24] * B - mulxq 192(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 192(%rdi) - adoxq %rcx, %r9 + mulxq 192(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 192(%rdi) + adoxq %r8, %r10 # A[25] * B - mulxq 200(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 200(%rdi) - adoxq %rcx, %r8 + mulxq 200(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 200(%rdi) + adoxq %r8, %r9 # A[26] * B - mulxq 208(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 208(%rdi) - adoxq %rcx, %r9 + mulxq 208(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 208(%rdi) + adoxq %r8, %r10 # A[27] * B - mulxq 216(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 216(%rdi) - adoxq %rcx, %r8 + mulxq 216(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 216(%rdi) + adoxq %r8, %r9 # A[28] * B - mulxq 224(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 224(%rdi) - adoxq %rcx, %r9 + mulxq 224(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 224(%rdi) + adoxq %r8, %r10 # A[29] * B - mulxq 232(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 232(%rdi) - adoxq %rcx, %r8 + mulxq 232(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 232(%rdi) + adoxq %r8, %r9 # A[30] * B - mulxq 240(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 240(%rdi) - adoxq %rcx, %r9 + mulxq 240(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 240(%rdi) + adoxq %r8, %r10 # A[31] * B - mulxq 248(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - adoxq %rcx, %r8 - adcxq %r10, %r8 - movq %r9, 248(%rdi) - movq %r8, 256(%rdi) + mulxq 248(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + adoxq %r8, %r9 + adcxq %r11, %r9 + movq %r10, 248(%rdi) + movq %r9, 256(%rdi) repz retq #ifndef __APPLE__ .size sp_2048_mul_d_avx2_32,.-sp_2048_mul_d_avx2_32 @@ -8788,227 +11539,383 @@ _sp_2048_mont_reduce_avx2_32: push %r12 push %r13 push %r14 - movq %rdx, %rax + movq %rdx, %r8 xorq %r14, %r14 # i = 32 movq $32, %r9 movq (%rdi), %r13 + addq $128, %rdi xorq %r12, %r12 L_mont_loop_avx2_32: # mu = a[i] * mp movq %r13, %rdx - mulxq %rax, %rdx, %r8 movq %r13, %r10 + imulq %r8, %rdx + xorq %r12, %r12 # a[i+0] += m[0] * mu - mulxq (%rsi), %rcx, %r8 - movq 8(%rdi), %r13 - adcxq %rcx, %r10 - adoxq %r8, %r13 + mulxq (%rsi), %rax, %rcx + movq -120(%rdi), %r13 + adcxq %rax, %r10 + adoxq %rcx, %r13 # a[i+1] += m[1] * mu - mulxq 8(%rsi), %rcx, %r8 - movq 16(%rdi), %r10 - adcxq %rcx, %r13 - adoxq %r8, %r10 + mulxq 8(%rsi), %rax, %rcx + movq -112(%rdi), %r10 + adcxq %rax, %r13 + adoxq %rcx, %r10 # a[i+2] += m[2] * mu - mulxq 16(%rsi), %rcx, %r8 - movq 24(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 16(%rdi) + mulxq 16(%rsi), %rax, %rcx + movq -104(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -112(%rdi) # a[i+3] += m[3] * mu - mulxq 24(%rsi), %rcx, %r8 - movq 32(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 24(%rdi) + mulxq 24(%rsi), %rax, %rcx + movq -96(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -104(%rdi) # a[i+4] += m[4] * mu - mulxq 32(%rsi), %rcx, %r8 - movq 40(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 32(%rdi) + mulxq 32(%rsi), %rax, %rcx + movq -88(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -96(%rdi) # a[i+5] += m[5] * mu - mulxq 40(%rsi), %rcx, %r8 - movq 48(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 40(%rdi) + mulxq 40(%rsi), %rax, %rcx + movq -80(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -88(%rdi) # a[i+6] += m[6] * mu - mulxq 48(%rsi), %rcx, %r8 - movq 56(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 48(%rdi) + mulxq 48(%rsi), %rax, %rcx + movq -72(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -80(%rdi) # a[i+7] += m[7] * mu - mulxq 56(%rsi), %rcx, %r8 - movq 64(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 56(%rdi) + mulxq 56(%rsi), %rax, %rcx + movq -64(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -72(%rdi) # a[i+8] += m[8] * mu - mulxq 64(%rsi), %rcx, %r8 - movq 72(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 64(%rdi) + mulxq 64(%rsi), %rax, %rcx + movq -56(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -64(%rdi) # a[i+9] += m[9] * mu - mulxq 72(%rsi), %rcx, %r8 - movq 80(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 72(%rdi) + mulxq 72(%rsi), %rax, %rcx + movq -48(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -56(%rdi) # a[i+10] += m[10] * mu - mulxq 80(%rsi), %rcx, %r8 - movq 88(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 80(%rdi) + mulxq 80(%rsi), %rax, %rcx + movq -40(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -48(%rdi) # a[i+11] += m[11] * mu - mulxq 88(%rsi), %rcx, %r8 - movq 96(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 88(%rdi) + mulxq 88(%rsi), %rax, %rcx + movq -32(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -40(%rdi) # a[i+12] += m[12] * mu - mulxq 96(%rsi), %rcx, %r8 - movq 104(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 96(%rdi) + mulxq 96(%rsi), %rax, %rcx + movq -24(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -32(%rdi) # a[i+13] += m[13] * mu - mulxq 104(%rsi), %rcx, %r8 - movq 112(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 104(%rdi) + mulxq 104(%rsi), %rax, %rcx + movq -16(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -24(%rdi) # a[i+14] += m[14] * mu - mulxq 112(%rsi), %rcx, %r8 - movq 120(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 112(%rdi) + mulxq 112(%rsi), %rax, %rcx + movq -8(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -16(%rdi) # a[i+15] += m[15] * mu - mulxq 120(%rsi), %rcx, %r8 - movq 128(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 120(%rdi) + mulxq 120(%rsi), %rax, %rcx + movq (%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -8(%rdi) # a[i+16] += m[16] * mu - mulxq 128(%rsi), %rcx, %r8 - movq 136(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 128(%rdi) + mulxq 128(%rsi), %rax, %rcx + movq 8(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, (%rdi) # a[i+17] += m[17] * mu - mulxq 136(%rsi), %rcx, %r8 - movq 144(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 136(%rdi) + mulxq 136(%rsi), %rax, %rcx + movq 16(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 8(%rdi) # a[i+18] += m[18] * mu - mulxq 144(%rsi), %rcx, %r8 - movq 152(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 144(%rdi) + mulxq 144(%rsi), %rax, %rcx + movq 24(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 16(%rdi) # a[i+19] += m[19] * mu - mulxq 152(%rsi), %rcx, %r8 - movq 160(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 152(%rdi) + mulxq 152(%rsi), %rax, %rcx + movq 32(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 24(%rdi) # a[i+20] += m[20] * mu - mulxq 160(%rsi), %rcx, %r8 - movq 168(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 160(%rdi) + mulxq 160(%rsi), %rax, %rcx + movq 40(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 32(%rdi) # a[i+21] += m[21] * mu - mulxq 168(%rsi), %rcx, %r8 - movq 176(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 168(%rdi) + mulxq 168(%rsi), %rax, %rcx + movq 48(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 40(%rdi) # a[i+22] += m[22] * mu - mulxq 176(%rsi), %rcx, %r8 - movq 184(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 176(%rdi) + mulxq 176(%rsi), %rax, %rcx + movq 56(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 48(%rdi) # a[i+23] += m[23] * mu - mulxq 184(%rsi), %rcx, %r8 - movq 192(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 184(%rdi) + mulxq 184(%rsi), %rax, %rcx + movq 64(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 56(%rdi) # a[i+24] += m[24] * mu - mulxq 192(%rsi), %rcx, %r8 - movq 200(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 192(%rdi) + mulxq 192(%rsi), %rax, %rcx + movq 72(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 64(%rdi) # a[i+25] += m[25] * mu - mulxq 200(%rsi), %rcx, %r8 - movq 208(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 200(%rdi) + mulxq 200(%rsi), %rax, %rcx + movq 80(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 72(%rdi) # a[i+26] += m[26] * mu - mulxq 208(%rsi), %rcx, %r8 - movq 216(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 208(%rdi) + mulxq 208(%rsi), %rax, %rcx + movq 88(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 80(%rdi) # a[i+27] += m[27] * mu - mulxq 216(%rsi), %rcx, %r8 - movq 224(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 216(%rdi) + mulxq 216(%rsi), %rax, %rcx + movq 96(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 88(%rdi) # a[i+28] += m[28] * mu - mulxq 224(%rsi), %rcx, %r8 - movq 232(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 224(%rdi) + mulxq 224(%rsi), %rax, %rcx + movq 104(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 96(%rdi) # a[i+29] += m[29] * mu - mulxq 232(%rsi), %rcx, %r8 - movq 240(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 232(%rdi) + mulxq 232(%rsi), %rax, %rcx + movq 112(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 104(%rdi) # a[i+30] += m[30] * mu - mulxq 240(%rsi), %rcx, %r8 - movq 248(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 240(%rdi) + mulxq 240(%rsi), %rax, %rcx + movq 120(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 112(%rdi) # a[i+31] += m[31] * mu - mulxq 248(%rsi), %rcx, %r8 - movq 256(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 248(%rdi) + mulxq 248(%rsi), %rax, %rcx + movq 128(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 120(%rdi) adcxq %r14, %r10 + movq %r10, 128(%rdi) movq %r12, %r14 - movq %r10, 256(%rdi) adoxq %r12, %r14 adcxq %r12, %r14 - # i -= 1 + # a += 1 addq $8, %rdi - decq %r9 + # i -= 1 + subq $1, %r9 jnz L_mont_loop_avx2_32 - movq %r13, (%rdi) + subq $128, %rdi negq %r14 - movq %r14, %rcx - movq %rsi, %rdx - movq %rdi, %rsi + movq %rdi, %r8 subq $256, %rdi -#ifndef __APPLE__ - callq sp_2048_cond_sub_avx2_32@plt -#else - callq _sp_2048_cond_sub_avx2_32 -#endif /* __APPLE__ */ + movq (%rsi), %rcx + movq %r13, %rdx + pextq %r14, %rcx, %rcx + subq %rcx, %rdx + movq 8(%rsi), %rcx + movq 8(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, (%rdi) + sbbq %rcx, %rax + movq 16(%rsi), %rdx + movq 16(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 8(%rdi) + sbbq %rdx, %rcx + movq 24(%rsi), %rax + movq 24(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 16(%rdi) + sbbq %rax, %rdx + movq 32(%rsi), %rcx + movq 32(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 24(%rdi) + sbbq %rcx, %rax + movq 40(%rsi), %rdx + movq 40(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 32(%rdi) + sbbq %rdx, %rcx + movq 48(%rsi), %rax + movq 48(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 40(%rdi) + sbbq %rax, %rdx + movq 56(%rsi), %rcx + movq 56(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 48(%rdi) + sbbq %rcx, %rax + movq 64(%rsi), %rdx + movq 64(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 56(%rdi) + sbbq %rdx, %rcx + movq 72(%rsi), %rax + movq 72(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 64(%rdi) + sbbq %rax, %rdx + movq 80(%rsi), %rcx + movq 80(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 72(%rdi) + sbbq %rcx, %rax + movq 88(%rsi), %rdx + movq 88(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 80(%rdi) + sbbq %rdx, %rcx + movq 96(%rsi), %rax + movq 96(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 88(%rdi) + sbbq %rax, %rdx + movq 104(%rsi), %rcx + movq 104(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 96(%rdi) + sbbq %rcx, %rax + movq 112(%rsi), %rdx + movq 112(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 104(%rdi) + sbbq %rdx, %rcx + movq 120(%rsi), %rax + movq 120(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 112(%rdi) + sbbq %rax, %rdx + movq 128(%rsi), %rcx + movq 128(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 120(%rdi) + sbbq %rcx, %rax + movq 136(%rsi), %rdx + movq 136(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 128(%rdi) + sbbq %rdx, %rcx + movq 144(%rsi), %rax + movq 144(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 136(%rdi) + sbbq %rax, %rdx + movq 152(%rsi), %rcx + movq 152(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 144(%rdi) + sbbq %rcx, %rax + movq 160(%rsi), %rdx + movq 160(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 152(%rdi) + sbbq %rdx, %rcx + movq 168(%rsi), %rax + movq 168(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 160(%rdi) + sbbq %rax, %rdx + movq 176(%rsi), %rcx + movq 176(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 168(%rdi) + sbbq %rcx, %rax + movq 184(%rsi), %rdx + movq 184(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 176(%rdi) + sbbq %rdx, %rcx + movq 192(%rsi), %rax + movq 192(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 184(%rdi) + sbbq %rax, %rdx + movq 200(%rsi), %rcx + movq 200(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 192(%rdi) + sbbq %rcx, %rax + movq 208(%rsi), %rdx + movq 208(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 200(%rdi) + sbbq %rdx, %rcx + movq 216(%rsi), %rax + movq 216(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 208(%rdi) + sbbq %rax, %rdx + movq 224(%rsi), %rcx + movq 224(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 216(%rdi) + sbbq %rcx, %rax + movq 232(%rsi), %rdx + movq 232(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 224(%rdi) + sbbq %rdx, %rcx + movq 240(%rsi), %rax + movq 240(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 232(%rdi) + sbbq %rax, %rdx + movq 248(%rsi), %rcx + movq 248(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 240(%rdi) + sbbq %rcx, %rax + movq %rax, 248(%rdi) pop %r14 pop %r13 pop %r12 @@ -9343,17 +12250,17 @@ _sp_3072_to_bin: * b A single precision integer. */ #ifndef __APPLE__ -.globl sp_3072_mul_24 -.type sp_3072_mul_24,@function +.globl sp_3072_mul_12 +.type sp_3072_mul_12,@function .align 16 -sp_3072_mul_24: +sp_3072_mul_12: #else -.globl _sp_3072_mul_24 +.globl _sp_3072_mul_12 .p2align 4 -_sp_3072_mul_24: +_sp_3072_mul_12: #endif /* __APPLE__ */ movq %rdx, %rcx - subq $192, %rsp + subq $96, %rsp # A[0] * B[0] movq (%rcx), %rax mulq (%rsi) @@ -9844,16 +12751,10 @@ _sp_3072_mul_24: adcq %rdx, %r8 adcq $0, %r9 movq %r10, 88(%rsp) - # A[0] * B[12] - movq 96(%rcx), %rax - mulq (%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 # A[1] * B[11] movq 88(%rcx), %rax mulq 8(%rsi) + xorq %r10, %r10 addq %rax, %r8 adcq %rdx, %r9 adcq $0, %r10 @@ -9917,29 +12818,11 @@ _sp_3072_mul_24: addq %rax, %r8 adcq %rdx, %r9 adcq $0, %r10 - # A[12] * B[0] - movq (%rcx), %rax - mulq 96(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 96(%rsp) - # A[0] * B[13] - movq 104(%rcx), %rax - mulq (%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[1] * B[12] - movq 96(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 + movq %r8, 96(%rdi) # A[2] * B[11] movq 88(%rcx), %rax mulq 16(%rsi) + xorq %r8, %r8 addq %rax, %r9 adcq %rdx, %r10 adcq $0, %r8 @@ -9997,41 +12880,11 @@ _sp_3072_mul_24: addq %rax, %r9 adcq %rdx, %r10 adcq $0, %r8 - # A[12] * B[1] - movq 8(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[13] * B[0] - movq (%rcx), %rax - mulq 104(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 104(%rsp) - # A[0] * B[14] - movq 112(%rcx), %rax - mulq (%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[1] * B[13] - movq 104(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[2] * B[12] - movq 96(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 + movq %r9, 104(%rdi) # A[3] * B[11] movq 88(%rcx), %rax mulq 24(%rsi) + xorq %r9, %r9 addq %rax, %r10 adcq %rdx, %r8 adcq $0, %r9 @@ -10083,53 +12936,11 @@ _sp_3072_mul_24: addq %rax, %r10 adcq %rdx, %r8 adcq $0, %r9 - # A[12] * B[2] - movq 16(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[13] * B[1] - movq 8(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[14] * B[0] - movq (%rcx), %rax - mulq 112(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 112(%rsp) - # A[0] * B[15] - movq 120(%rcx), %rax - mulq (%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[1] * B[14] - movq 112(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[2] * B[13] - movq 104(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[3] * B[12] - movq 96(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 + movq %r10, 112(%rdi) # A[4] * B[11] movq 88(%rcx), %rax mulq 32(%rsi) + xorq %r10, %r10 addq %rax, %r8 adcq %rdx, %r9 adcq $0, %r10 @@ -10175,65 +12986,11 @@ _sp_3072_mul_24: addq %rax, %r8 adcq %rdx, %r9 adcq $0, %r10 - # A[12] * B[3] - movq 24(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[13] * B[2] - movq 16(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[14] * B[1] - movq 8(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[15] * B[0] - movq (%rcx), %rax - mulq 120(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 120(%rsp) - # A[0] * B[16] - movq 128(%rcx), %rax - mulq (%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[1] * B[15] - movq 120(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[2] * B[14] - movq 112(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[3] * B[13] - movq 104(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[4] * B[12] - movq 96(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 + movq %r8, 120(%rdi) # A[5] * B[11] movq 88(%rcx), %rax mulq 40(%rsi) + xorq %r8, %r8 addq %rax, %r9 adcq %rdx, %r10 adcq $0, %r8 @@ -10273,77 +13030,11 @@ _sp_3072_mul_24: addq %rax, %r9 adcq %rdx, %r10 adcq $0, %r8 - # A[12] * B[4] - movq 32(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[13] * B[3] - movq 24(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[14] * B[2] - movq 16(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[15] * B[1] - movq 8(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[16] * B[0] - movq (%rcx), %rax - mulq 128(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 128(%rsp) - # A[0] * B[17] - movq 136(%rcx), %rax - mulq (%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[1] * B[16] - movq 128(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[2] * B[15] - movq 120(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[3] * B[14] - movq 112(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[4] * B[13] - movq 104(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[5] * B[12] - movq 96(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 + movq %r9, 128(%rdi) # A[6] * B[11] movq 88(%rcx), %rax mulq 48(%rsi) + xorq %r9, %r9 addq %rax, %r10 adcq %rdx, %r8 adcq $0, %r9 @@ -10377,89 +13068,11 @@ _sp_3072_mul_24: addq %rax, %r10 adcq %rdx, %r8 adcq $0, %r9 - # A[12] * B[5] - movq 40(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[13] * B[4] - movq 32(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[14] * B[3] - movq 24(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[15] * B[2] - movq 16(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[16] * B[1] - movq 8(%rcx), %rax - mulq 128(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[17] * B[0] - movq (%rcx), %rax - mulq 136(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 136(%rsp) - # A[0] * B[18] - movq 144(%rcx), %rax - mulq (%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[1] * B[17] - movq 136(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[2] * B[16] - movq 128(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[3] * B[15] - movq 120(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[4] * B[14] - movq 112(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[5] * B[13] - movq 104(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[6] * B[12] - movq 96(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 + movq %r10, 136(%rdi) # A[7] * B[11] movq 88(%rcx), %rax mulq 56(%rsi) + xorq %r10, %r10 addq %rax, %r8 adcq %rdx, %r9 adcq $0, %r10 @@ -10487,101 +13100,11 @@ _sp_3072_mul_24: addq %rax, %r8 adcq %rdx, %r9 adcq $0, %r10 - # A[12] * B[6] - movq 48(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[13] * B[5] - movq 40(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[14] * B[4] - movq 32(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[15] * B[3] - movq 24(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[16] * B[2] - movq 16(%rcx), %rax - mulq 128(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[17] * B[1] - movq 8(%rcx), %rax - mulq 136(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[18] * B[0] - movq (%rcx), %rax - mulq 144(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 144(%rsp) - # A[0] * B[19] - movq 152(%rcx), %rax - mulq (%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[1] * B[18] - movq 144(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[2] * B[17] - movq 136(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[3] * B[16] - movq 128(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[4] * B[15] - movq 120(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[5] * B[14] - movq 112(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[6] * B[13] - movq 104(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[7] * B[12] - movq 96(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 + movq %r8, 144(%rdi) # A[8] * B[11] movq 88(%rcx), %rax mulq 64(%rsi) + xorq %r8, %r8 addq %rax, %r9 adcq %rdx, %r10 adcq $0, %r8 @@ -10603,113 +13126,11 @@ _sp_3072_mul_24: addq %rax, %r9 adcq %rdx, %r10 adcq $0, %r8 - # A[12] * B[7] - movq 56(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[13] * B[6] - movq 48(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[14] * B[5] - movq 40(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[15] * B[4] - movq 32(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[16] * B[3] - movq 24(%rcx), %rax - mulq 128(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[17] * B[2] - movq 16(%rcx), %rax - mulq 136(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[18] * B[1] - movq 8(%rcx), %rax - mulq 144(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[19] * B[0] - movq (%rcx), %rax - mulq 152(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 152(%rsp) - # A[0] * B[20] - movq 160(%rcx), %rax - mulq (%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[1] * B[19] - movq 152(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[2] * B[18] - movq 144(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[3] * B[17] - movq 136(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[4] * B[16] - movq 128(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[5] * B[15] - movq 120(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[6] * B[14] - movq 112(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[7] * B[13] - movq 104(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[8] * B[12] - movq 96(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 + movq %r9, 152(%rdi) # A[9] * B[11] movq 88(%rcx), %rax mulq 72(%rsi) + xorq %r9, %r9 addq %rax, %r10 adcq %rdx, %r8 adcq $0, %r9 @@ -10725,125 +13146,11 @@ _sp_3072_mul_24: addq %rax, %r10 adcq %rdx, %r8 adcq $0, %r9 - # A[12] * B[8] - movq 64(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[13] * B[7] - movq 56(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[14] * B[6] - movq 48(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[15] * B[5] - movq 40(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[16] * B[4] - movq 32(%rcx), %rax - mulq 128(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[17] * B[3] - movq 24(%rcx), %rax - mulq 136(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[18] * B[2] - movq 16(%rcx), %rax - mulq 144(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[19] * B[1] - movq 8(%rcx), %rax - mulq 152(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[20] * B[0] - movq (%rcx), %rax - mulq 160(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 160(%rsp) - # A[0] * B[21] - movq 168(%rcx), %rax - mulq (%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[1] * B[20] - movq 160(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[2] * B[19] - movq 152(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[3] * B[18] - movq 144(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[4] * B[17] - movq 136(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[5] * B[16] - movq 128(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[6] * B[15] - movq 120(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[7] * B[14] - movq 112(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[8] * B[13] - movq 104(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[9] * B[12] - movq 96(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 + movq %r10, 160(%rdi) # A[10] * B[11] movq 88(%rcx), %rax mulq 80(%rsi) + xorq %r10, %r10 addq %rax, %r8 adcq %rdx, %r9 adcq $0, %r10 @@ -10853,2054 +13160,14 @@ _sp_3072_mul_24: addq %rax, %r8 adcq %rdx, %r9 adcq $0, %r10 - # A[12] * B[9] - movq 72(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[13] * B[8] - movq 64(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[14] * B[7] - movq 56(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[15] * B[6] - movq 48(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[16] * B[5] - movq 40(%rcx), %rax - mulq 128(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[17] * B[4] - movq 32(%rcx), %rax - mulq 136(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[18] * B[3] - movq 24(%rcx), %rax - mulq 144(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[19] * B[2] - movq 16(%rcx), %rax - mulq 152(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[20] * B[1] - movq 8(%rcx), %rax - mulq 160(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[21] * B[0] - movq (%rcx), %rax - mulq 168(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 168(%rsp) - # A[0] * B[22] - movq 176(%rcx), %rax - mulq (%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[1] * B[21] - movq 168(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[2] * B[20] - movq 160(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[3] * B[19] - movq 152(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[4] * B[18] - movq 144(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[5] * B[17] - movq 136(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[6] * B[16] - movq 128(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[7] * B[15] - movq 120(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[8] * B[14] - movq 112(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[9] * B[13] - movq 104(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[10] * B[12] - movq 96(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 + movq %r8, 168(%rdi) # A[11] * B[11] movq 88(%rcx), %rax mulq 88(%rsi) addq %rax, %r9 adcq %rdx, %r10 - adcq $0, %r8 - # A[12] * B[10] - movq 80(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[13] * B[9] - movq 72(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[14] * B[8] - movq 64(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[15] * B[7] - movq 56(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[16] * B[6] - movq 48(%rcx), %rax - mulq 128(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[17] * B[5] - movq 40(%rcx), %rax - mulq 136(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[18] * B[4] - movq 32(%rcx), %rax - mulq 144(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[19] * B[3] - movq 24(%rcx), %rax - mulq 152(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[20] * B[2] - movq 16(%rcx), %rax - mulq 160(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[21] * B[1] - movq 8(%rcx), %rax - mulq 168(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[22] * B[0] - movq (%rcx), %rax - mulq 176(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 176(%rsp) - # A[0] * B[23] - movq 184(%rcx), %rax - mulq (%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[1] * B[22] - movq 176(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[2] * B[21] - movq 168(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[3] * B[20] - movq 160(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[4] * B[19] - movq 152(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[5] * B[18] - movq 144(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[6] * B[17] - movq 136(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[7] * B[16] - movq 128(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[8] * B[15] - movq 120(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[9] * B[14] - movq 112(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[10] * B[13] - movq 104(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[11] * B[12] - movq 96(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[12] * B[11] - movq 88(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[13] * B[10] - movq 80(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[14] * B[9] - movq 72(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[15] * B[8] - movq 64(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[16] * B[7] - movq 56(%rcx), %rax - mulq 128(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[17] * B[6] - movq 48(%rcx), %rax - mulq 136(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[18] * B[5] - movq 40(%rcx), %rax - mulq 144(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[19] * B[4] - movq 32(%rcx), %rax - mulq 152(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[20] * B[3] - movq 24(%rcx), %rax - mulq 160(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[21] * B[2] - movq 16(%rcx), %rax - mulq 168(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[22] * B[1] - movq 8(%rcx), %rax - mulq 176(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[23] * B[0] - movq (%rcx), %rax - mulq 184(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 184(%rsp) - # A[1] * B[23] - movq 184(%rcx), %rax - mulq 8(%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[2] * B[22] - movq 176(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[3] * B[21] - movq 168(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[4] * B[20] - movq 160(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[5] * B[19] - movq 152(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[6] * B[18] - movq 144(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[7] * B[17] - movq 136(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[8] * B[16] - movq 128(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[9] * B[15] - movq 120(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[10] * B[14] - movq 112(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[11] * B[13] - movq 104(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[12] * B[12] - movq 96(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[13] * B[11] - movq 88(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[14] * B[10] - movq 80(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[15] * B[9] - movq 72(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[16] * B[8] - movq 64(%rcx), %rax - mulq 128(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[17] * B[7] - movq 56(%rcx), %rax - mulq 136(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[18] * B[6] - movq 48(%rcx), %rax - mulq 144(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[19] * B[5] - movq 40(%rcx), %rax - mulq 152(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[20] * B[4] - movq 32(%rcx), %rax - mulq 160(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[21] * B[3] - movq 24(%rcx), %rax - mulq 168(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[22] * B[2] - movq 16(%rcx), %rax - mulq 176(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[23] * B[1] - movq 8(%rcx), %rax - mulq 184(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 192(%rdi) - # A[2] * B[23] - movq 184(%rcx), %rax - mulq 16(%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[3] * B[22] - movq 176(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[4] * B[21] - movq 168(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[5] * B[20] - movq 160(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[6] * B[19] - movq 152(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[7] * B[18] - movq 144(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[8] * B[17] - movq 136(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[9] * B[16] - movq 128(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[10] * B[15] - movq 120(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[11] * B[14] - movq 112(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[12] * B[13] - movq 104(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[13] * B[12] - movq 96(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[14] * B[11] - movq 88(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[15] * B[10] - movq 80(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[16] * B[9] - movq 72(%rcx), %rax - mulq 128(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[17] * B[8] - movq 64(%rcx), %rax - mulq 136(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[18] * B[7] - movq 56(%rcx), %rax - mulq 144(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[19] * B[6] - movq 48(%rcx), %rax - mulq 152(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[20] * B[5] - movq 40(%rcx), %rax - mulq 160(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[21] * B[4] - movq 32(%rcx), %rax - mulq 168(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[22] * B[3] - movq 24(%rcx), %rax - mulq 176(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[23] * B[2] - movq 16(%rcx), %rax - mulq 184(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 200(%rdi) - # A[3] * B[23] - movq 184(%rcx), %rax - mulq 24(%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[4] * B[22] - movq 176(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[5] * B[21] - movq 168(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[6] * B[20] - movq 160(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[7] * B[19] - movq 152(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[8] * B[18] - movq 144(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[9] * B[17] - movq 136(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[10] * B[16] - movq 128(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[11] * B[15] - movq 120(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[12] * B[14] - movq 112(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[13] * B[13] - movq 104(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[14] * B[12] - movq 96(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[15] * B[11] - movq 88(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[16] * B[10] - movq 80(%rcx), %rax - mulq 128(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[17] * B[9] - movq 72(%rcx), %rax - mulq 136(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[18] * B[8] - movq 64(%rcx), %rax - mulq 144(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[19] * B[7] - movq 56(%rcx), %rax - mulq 152(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[20] * B[6] - movq 48(%rcx), %rax - mulq 160(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[21] * B[5] - movq 40(%rcx), %rax - mulq 168(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[22] * B[4] - movq 32(%rcx), %rax - mulq 176(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[23] * B[3] - movq 24(%rcx), %rax - mulq 184(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 208(%rdi) - # A[4] * B[23] - movq 184(%rcx), %rax - mulq 32(%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[5] * B[22] - movq 176(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[6] * B[21] - movq 168(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[7] * B[20] - movq 160(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[8] * B[19] - movq 152(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[9] * B[18] - movq 144(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[10] * B[17] - movq 136(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[11] * B[16] - movq 128(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[12] * B[15] - movq 120(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[13] * B[14] - movq 112(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[14] * B[13] - movq 104(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[15] * B[12] - movq 96(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[16] * B[11] - movq 88(%rcx), %rax - mulq 128(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[17] * B[10] - movq 80(%rcx), %rax - mulq 136(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[18] * B[9] - movq 72(%rcx), %rax - mulq 144(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[19] * B[8] - movq 64(%rcx), %rax - mulq 152(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[20] * B[7] - movq 56(%rcx), %rax - mulq 160(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[21] * B[6] - movq 48(%rcx), %rax - mulq 168(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[22] * B[5] - movq 40(%rcx), %rax - mulq 176(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[23] * B[4] - movq 32(%rcx), %rax - mulq 184(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 216(%rdi) - # A[5] * B[23] - movq 184(%rcx), %rax - mulq 40(%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[6] * B[22] - movq 176(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[7] * B[21] - movq 168(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[8] * B[20] - movq 160(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[9] * B[19] - movq 152(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[10] * B[18] - movq 144(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[11] * B[17] - movq 136(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[12] * B[16] - movq 128(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[13] * B[15] - movq 120(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[14] * B[14] - movq 112(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[15] * B[13] - movq 104(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[16] * B[12] - movq 96(%rcx), %rax - mulq 128(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[17] * B[11] - movq 88(%rcx), %rax - mulq 136(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[18] * B[10] - movq 80(%rcx), %rax - mulq 144(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[19] * B[9] - movq 72(%rcx), %rax - mulq 152(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[20] * B[8] - movq 64(%rcx), %rax - mulq 160(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[21] * B[7] - movq 56(%rcx), %rax - mulq 168(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[22] * B[6] - movq 48(%rcx), %rax - mulq 176(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[23] * B[5] - movq 40(%rcx), %rax - mulq 184(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 224(%rdi) - # A[6] * B[23] - movq 184(%rcx), %rax - mulq 48(%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[7] * B[22] - movq 176(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[8] * B[21] - movq 168(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[9] * B[20] - movq 160(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[10] * B[19] - movq 152(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[11] * B[18] - movq 144(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[12] * B[17] - movq 136(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[13] * B[16] - movq 128(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[14] * B[15] - movq 120(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[15] * B[14] - movq 112(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[16] * B[13] - movq 104(%rcx), %rax - mulq 128(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[17] * B[12] - movq 96(%rcx), %rax - mulq 136(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[18] * B[11] - movq 88(%rcx), %rax - mulq 144(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[19] * B[10] - movq 80(%rcx), %rax - mulq 152(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[20] * B[9] - movq 72(%rcx), %rax - mulq 160(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[21] * B[8] - movq 64(%rcx), %rax - mulq 168(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[22] * B[7] - movq 56(%rcx), %rax - mulq 176(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[23] * B[6] - movq 48(%rcx), %rax - mulq 184(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 232(%rdi) - # A[7] * B[23] - movq 184(%rcx), %rax - mulq 56(%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[8] * B[22] - movq 176(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[9] * B[21] - movq 168(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[10] * B[20] - movq 160(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[11] * B[19] - movq 152(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[12] * B[18] - movq 144(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[13] * B[17] - movq 136(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[14] * B[16] - movq 128(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[15] * B[15] - movq 120(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[16] * B[14] - movq 112(%rcx), %rax - mulq 128(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[17] * B[13] - movq 104(%rcx), %rax - mulq 136(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[18] * B[12] - movq 96(%rcx), %rax - mulq 144(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[19] * B[11] - movq 88(%rcx), %rax - mulq 152(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[20] * B[10] - movq 80(%rcx), %rax - mulq 160(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[21] * B[9] - movq 72(%rcx), %rax - mulq 168(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[22] * B[8] - movq 64(%rcx), %rax - mulq 176(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[23] * B[7] - movq 56(%rcx), %rax - mulq 184(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 240(%rdi) - # A[8] * B[23] - movq 184(%rcx), %rax - mulq 64(%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[9] * B[22] - movq 176(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[10] * B[21] - movq 168(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[11] * B[20] - movq 160(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[12] * B[19] - movq 152(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[13] * B[18] - movq 144(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[14] * B[17] - movq 136(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[15] * B[16] - movq 128(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[16] * B[15] - movq 120(%rcx), %rax - mulq 128(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[17] * B[14] - movq 112(%rcx), %rax - mulq 136(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[18] * B[13] - movq 104(%rcx), %rax - mulq 144(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[19] * B[12] - movq 96(%rcx), %rax - mulq 152(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[20] * B[11] - movq 88(%rcx), %rax - mulq 160(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[21] * B[10] - movq 80(%rcx), %rax - mulq 168(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[22] * B[9] - movq 72(%rcx), %rax - mulq 176(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[23] * B[8] - movq 64(%rcx), %rax - mulq 184(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 248(%rdi) - # A[9] * B[23] - movq 184(%rcx), %rax - mulq 72(%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[10] * B[22] - movq 176(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[11] * B[21] - movq 168(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[12] * B[20] - movq 160(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[13] * B[19] - movq 152(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[14] * B[18] - movq 144(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[15] * B[17] - movq 136(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[16] * B[16] - movq 128(%rcx), %rax - mulq 128(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[17] * B[15] - movq 120(%rcx), %rax - mulq 136(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[18] * B[14] - movq 112(%rcx), %rax - mulq 144(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[19] * B[13] - movq 104(%rcx), %rax - mulq 152(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[20] * B[12] - movq 96(%rcx), %rax - mulq 160(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[21] * B[11] - movq 88(%rcx), %rax - mulq 168(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[22] * B[10] - movq 80(%rcx), %rax - mulq 176(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[23] * B[9] - movq 72(%rcx), %rax - mulq 184(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 256(%rdi) - # A[10] * B[23] - movq 184(%rcx), %rax - mulq 80(%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[11] * B[22] - movq 176(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[12] * B[21] - movq 168(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[13] * B[20] - movq 160(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[14] * B[19] - movq 152(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[15] * B[18] - movq 144(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[16] * B[17] - movq 136(%rcx), %rax - mulq 128(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[17] * B[16] - movq 128(%rcx), %rax - mulq 136(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[18] * B[15] - movq 120(%rcx), %rax - mulq 144(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[19] * B[14] - movq 112(%rcx), %rax - mulq 152(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[20] * B[13] - movq 104(%rcx), %rax - mulq 160(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[21] * B[12] - movq 96(%rcx), %rax - mulq 168(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[22] * B[11] - movq 88(%rcx), %rax - mulq 176(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[23] * B[10] - movq 80(%rcx), %rax - mulq 184(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 264(%rdi) - # A[11] * B[23] - movq 184(%rcx), %rax - mulq 88(%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[12] * B[22] - movq 176(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[13] * B[21] - movq 168(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[14] * B[20] - movq 160(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[15] * B[19] - movq 152(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[16] * B[18] - movq 144(%rcx), %rax - mulq 128(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[17] * B[17] - movq 136(%rcx), %rax - mulq 136(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[18] * B[16] - movq 128(%rcx), %rax - mulq 144(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[19] * B[15] - movq 120(%rcx), %rax - mulq 152(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[20] * B[14] - movq 112(%rcx), %rax - mulq 160(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[21] * B[13] - movq 104(%rcx), %rax - mulq 168(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[22] * B[12] - movq 96(%rcx), %rax - mulq 176(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[23] * B[11] - movq 88(%rcx), %rax - mulq 184(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 272(%rdi) - # A[12] * B[23] - movq 184(%rcx), %rax - mulq 96(%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[13] * B[22] - movq 176(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[14] * B[21] - movq 168(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[15] * B[20] - movq 160(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[16] * B[19] - movq 152(%rcx), %rax - mulq 128(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[17] * B[18] - movq 144(%rcx), %rax - mulq 136(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[18] * B[17] - movq 136(%rcx), %rax - mulq 144(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[19] * B[16] - movq 128(%rcx), %rax - mulq 152(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[20] * B[15] - movq 120(%rcx), %rax - mulq 160(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[21] * B[14] - movq 112(%rcx), %rax - mulq 168(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[22] * B[13] - movq 104(%rcx), %rax - mulq 176(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[23] * B[12] - movq 96(%rcx), %rax - mulq 184(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 280(%rdi) - # A[13] * B[23] - movq 184(%rcx), %rax - mulq 104(%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[14] * B[22] - movq 176(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[15] * B[21] - movq 168(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[16] * B[20] - movq 160(%rcx), %rax - mulq 128(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[17] * B[19] - movq 152(%rcx), %rax - mulq 136(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[18] * B[18] - movq 144(%rcx), %rax - mulq 144(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[19] * B[17] - movq 136(%rcx), %rax - mulq 152(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[20] * B[16] - movq 128(%rcx), %rax - mulq 160(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[21] * B[15] - movq 120(%rcx), %rax - mulq 168(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[22] * B[14] - movq 112(%rcx), %rax - mulq 176(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[23] * B[13] - movq 104(%rcx), %rax - mulq 184(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 288(%rdi) - # A[14] * B[23] - movq 184(%rcx), %rax - mulq 112(%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[15] * B[22] - movq 176(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[16] * B[21] - movq 168(%rcx), %rax - mulq 128(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[17] * B[20] - movq 160(%rcx), %rax - mulq 136(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[18] * B[19] - movq 152(%rcx), %rax - mulq 144(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[19] * B[18] - movq 144(%rcx), %rax - mulq 152(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[20] * B[17] - movq 136(%rcx), %rax - mulq 160(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[21] * B[16] - movq 128(%rcx), %rax - mulq 168(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[22] * B[15] - movq 120(%rcx), %rax - mulq 176(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[23] * B[14] - movq 112(%rcx), %rax - mulq 184(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 296(%rdi) - # A[15] * B[23] - movq 184(%rcx), %rax - mulq 120(%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[16] * B[22] - movq 176(%rcx), %rax - mulq 128(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[17] * B[21] - movq 168(%rcx), %rax - mulq 136(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[18] * B[20] - movq 160(%rcx), %rax - mulq 144(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[19] * B[19] - movq 152(%rcx), %rax - mulq 152(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[20] * B[18] - movq 144(%rcx), %rax - mulq 160(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[21] * B[17] - movq 136(%rcx), %rax - mulq 168(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[22] * B[16] - movq 128(%rcx), %rax - mulq 176(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[23] * B[15] - movq 120(%rcx), %rax - mulq 184(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 304(%rdi) - # A[16] * B[23] - movq 184(%rcx), %rax - mulq 128(%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[17] * B[22] - movq 176(%rcx), %rax - mulq 136(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[18] * B[21] - movq 168(%rcx), %rax - mulq 144(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[19] * B[20] - movq 160(%rcx), %rax - mulq 152(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[20] * B[19] - movq 152(%rcx), %rax - mulq 160(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[21] * B[18] - movq 144(%rcx), %rax - mulq 168(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[22] * B[17] - movq 136(%rcx), %rax - mulq 176(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[23] * B[16] - movq 128(%rcx), %rax - mulq 184(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 312(%rdi) - # A[17] * B[23] - movq 184(%rcx), %rax - mulq 136(%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[18] * B[22] - movq 176(%rcx), %rax - mulq 144(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[19] * B[21] - movq 168(%rcx), %rax - mulq 152(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[20] * B[20] - movq 160(%rcx), %rax - mulq 160(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[21] * B[19] - movq 152(%rcx), %rax - mulq 168(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[22] * B[18] - movq 144(%rcx), %rax - mulq 176(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[23] * B[17] - movq 136(%rcx), %rax - mulq 184(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 320(%rdi) - # A[18] * B[23] - movq 184(%rcx), %rax - mulq 144(%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[19] * B[22] - movq 176(%rcx), %rax - mulq 152(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[20] * B[21] - movq 168(%rcx), %rax - mulq 160(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[21] * B[20] - movq 160(%rcx), %rax - mulq 168(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[22] * B[19] - movq 152(%rcx), %rax - mulq 176(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[23] * B[18] - movq 144(%rcx), %rax - mulq 184(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 328(%rdi) - # A[19] * B[23] - movq 184(%rcx), %rax - mulq 152(%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[20] * B[22] - movq 176(%rcx), %rax - mulq 160(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[21] * B[21] - movq 168(%rcx), %rax - mulq 168(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[22] * B[20] - movq 160(%rcx), %rax - mulq 176(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[23] * B[19] - movq 152(%rcx), %rax - mulq 184(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 336(%rdi) - # A[20] * B[23] - movq 184(%rcx), %rax - mulq 160(%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[21] * B[22] - movq 176(%rcx), %rax - mulq 168(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[22] * B[21] - movq 168(%rcx), %rax - mulq 176(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[23] * B[20] - movq 160(%rcx), %rax - mulq 184(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 344(%rdi) - # A[21] * B[23] - movq 184(%rcx), %rax - mulq 168(%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[22] * B[22] - movq 176(%rcx), %rax - mulq 176(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[23] * B[21] - movq 168(%rcx), %rax - mulq 184(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 352(%rdi) - # A[22] * B[23] - movq 184(%rcx), %rax - mulq 176(%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[23] * B[22] - movq 176(%rcx), %rax - mulq 184(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 360(%rdi) - # A[23] * B[23] - movq 184(%rcx), %rax - mulq 184(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - movq %r9, 368(%rdi) - movq %r10, 376(%rdi) + movq %r9, 176(%rdi) + movq %r10, 184(%rdi) movq (%rsp), %rax movq 8(%rsp), %rdx movq 16(%rsp), %r8 @@ -12925,34 +13192,10 @@ _sp_3072_mul_24: movq %rdx, 72(%rdi) movq %r8, 80(%rdi) movq %r9, 88(%rdi) - movq 96(%rsp), %rax - movq 104(%rsp), %rdx - movq 112(%rsp), %r8 - movq 120(%rsp), %r9 - movq %rax, 96(%rdi) - movq %rdx, 104(%rdi) - movq %r8, 112(%rdi) - movq %r9, 120(%rdi) - movq 128(%rsp), %rax - movq 136(%rsp), %rdx - movq 144(%rsp), %r8 - movq 152(%rsp), %r9 - movq %rax, 128(%rdi) - movq %rdx, 136(%rdi) - movq %r8, 144(%rdi) - movq %r9, 152(%rdi) - movq 160(%rsp), %rax - movq 168(%rsp), %rdx - movq 176(%rsp), %r8 - movq 184(%rsp), %r9 - movq %rax, 160(%rdi) - movq %rdx, 168(%rdi) - movq %r8, 176(%rdi) - movq %r9, 184(%rdi) - addq $192, %rsp + addq $96, %rsp repz retq #ifndef __APPLE__ -.size sp_3072_mul_24,.-sp_3072_mul_24 +.size sp_3072_mul_12,.-sp_3072_mul_12 #endif /* __APPLE__ */ /* Square a and put result in r. (r = a * a) * @@ -12960,17 +13203,17 @@ _sp_3072_mul_24: * a A single precision integer. */ #ifndef __APPLE__ -.globl sp_3072_sqr_24 -.type sp_3072_sqr_24,@function +.globl sp_3072_sqr_12 +.type sp_3072_sqr_12,@function .align 16 -sp_3072_sqr_24: +sp_3072_sqr_12: #else -.globl _sp_3072_sqr_24 +.globl _sp_3072_sqr_12 .p2align 4 -_sp_3072_sqr_24: +_sp_3072_sqr_12: #endif /* __APPLE__ */ push %r12 - subq $192, %rsp + subq $96, %rsp # A[0] * A[0] movq (%rsi), %rax mulq %rax @@ -13305,19 +13548,13 @@ _sp_3072_sqr_24: adcq %r11, %rcx adcq %r12, %r8 movq %r9, 88(%rsp) - # A[0] * A[12] - movq 96(%rsi), %rax - mulq (%rsi) + # A[1] * A[11] + movq 88(%rsi), %rax + mulq 8(%rsi) xorq %r9, %r9 xorq %r12, %r12 movq %rax, %r10 movq %rdx, %r11 - # A[1] * A[11] - movq 88(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 # A[2] * A[10] movq 80(%rsi), %rax mulq 16(%rsi) @@ -13354,26 +13591,14 @@ _sp_3072_sqr_24: addq %r10, %rcx adcq %r11, %r8 adcq %r12, %r9 - movq %rcx, 96(%rsp) - # A[0] * A[13] - movq 104(%rsi), %rax - mulq (%rsi) + movq %rcx, 96(%rdi) + # A[2] * A[11] + movq 88(%rsi), %rax + mulq 16(%rsi) xorq %rcx, %rcx xorq %r12, %r12 movq %rax, %r10 movq %rdx, %r11 - # A[1] * A[12] - movq 96(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[11] - movq 88(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 # A[3] * A[10] movq 80(%rsi), %rax mulq 24(%rsi) @@ -13404,32 +13629,14 @@ _sp_3072_sqr_24: addq %r10, %r8 adcq %r11, %r9 adcq %r12, %rcx - movq %r8, 104(%rsp) - # A[0] * A[14] - movq 112(%rsi), %rax - mulq (%rsi) + movq %r8, 104(%rdi) + # A[3] * A[11] + movq 88(%rsi), %rax + mulq 24(%rsi) xorq %r8, %r8 xorq %r12, %r12 movq %rax, %r10 movq %rdx, %r11 - # A[1] * A[13] - movq 104(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[12] - movq 96(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[11] - movq 88(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 # A[4] * A[10] movq 80(%rsi), %rax mulq 32(%rsi) @@ -13460,38 +13667,14 @@ _sp_3072_sqr_24: addq %r10, %r9 adcq %r11, %rcx adcq %r12, %r8 - movq %r9, 112(%rsp) - # A[0] * A[15] - movq 120(%rsi), %rax - mulq (%rsi) + movq %r9, 112(%rdi) + # A[4] * A[11] + movq 88(%rsi), %rax + mulq 32(%rsi) xorq %r9, %r9 xorq %r12, %r12 movq %rax, %r10 movq %rdx, %r11 - # A[1] * A[14] - movq 112(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[13] - movq 104(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[12] - movq 96(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[11] - movq 88(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 # A[5] * A[10] movq 80(%rsi), %rax mulq 40(%rsi) @@ -13516,44 +13699,14 @@ _sp_3072_sqr_24: addq %r10, %rcx adcq %r11, %r8 adcq %r12, %r9 - movq %rcx, 120(%rsp) - # A[0] * A[16] - movq 128(%rsi), %rax - mulq (%rsi) + movq %rcx, 120(%rdi) + # A[5] * A[11] + movq 88(%rsi), %rax + mulq 40(%rsi) xorq %rcx, %rcx xorq %r12, %r12 movq %rax, %r10 movq %rdx, %r11 - # A[1] * A[15] - movq 120(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[14] - movq 112(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[13] - movq 104(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[12] - movq 96(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[5] * A[11] - movq 88(%rsi), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 # A[6] * A[10] movq 80(%rsi), %rax mulq 48(%rsi) @@ -13578,50 +13731,14 @@ _sp_3072_sqr_24: addq %r10, %r8 adcq %r11, %r9 adcq %r12, %rcx - movq %r8, 128(%rsp) - # A[0] * A[17] - movq 136(%rsi), %rax - mulq (%rsi) + movq %r8, 128(%rdi) + # A[6] * A[11] + movq 88(%rsi), %rax + mulq 48(%rsi) xorq %r8, %r8 xorq %r12, %r12 movq %rax, %r10 movq %rdx, %r11 - # A[1] * A[16] - movq 128(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[15] - movq 120(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[14] - movq 112(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[13] - movq 104(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[5] * A[12] - movq 96(%rsi), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[6] * A[11] - movq 88(%rsi), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 # A[7] * A[10] movq 80(%rsi), %rax mulq 56(%rsi) @@ -13640,1486 +13757,88 @@ _sp_3072_sqr_24: addq %r10, %r9 adcq %r11, %rcx adcq %r12, %r8 - movq %r9, 136(%rsp) - # A[0] * A[18] - movq 144(%rsi), %rax - mulq (%rsi) - xorq %r9, %r9 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[1] * A[17] - movq 136(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[16] - movq 128(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[15] - movq 120(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[14] - movq 112(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[5] * A[13] - movq 104(%rsi), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[6] * A[12] - movq 96(%rsi), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 + movq %r9, 136(%rdi) # A[7] * A[11] movq 88(%rsi), %rax mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 + xorq %r9, %r9 + addq %rax, %rcx + adcq %rdx, %r8 + adcq $0, %r9 + addq %rax, %rcx + adcq %rdx, %r8 + adcq $0, %r9 # A[8] * A[10] movq 80(%rsi), %rax mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 + addq %rax, %rcx + adcq %rdx, %r8 + adcq $0, %r9 + addq %rax, %rcx + adcq %rdx, %r8 + adcq $0, %r9 # A[9] * A[9] movq 72(%rsi), %rax mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %rcx - adcq %r11, %r8 - adcq %r12, %r9 - movq %rcx, 144(%rsp) - # A[0] * A[19] - movq 152(%rsi), %rax - mulq (%rsi) - xorq %rcx, %rcx - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[1] * A[18] - movq 144(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[17] - movq 136(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[16] - movq 128(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[15] - movq 120(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[5] * A[14] - movq 112(%rsi), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[6] * A[13] - movq 104(%rsi), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[7] * A[12] - movq 96(%rsi), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 + addq %rax, %rcx + adcq %rdx, %r8 + adcq $0, %r9 + movq %rcx, 144(%rdi) # A[8] * A[11] movq 88(%rsi), %rax mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 + xorq %rcx, %rcx + addq %rax, %r8 + adcq %rdx, %r9 + adcq $0, %rcx + addq %rax, %r8 + adcq %rdx, %r9 + adcq $0, %rcx # A[9] * A[10] movq 80(%rsi), %rax mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %r8 - adcq %r11, %r9 - adcq %r12, %rcx - movq %r8, 152(%rsp) - # A[0] * A[20] - movq 160(%rsi), %rax - mulq (%rsi) - xorq %r8, %r8 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[1] * A[19] - movq 152(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[18] - movq 144(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[17] - movq 136(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[16] - movq 128(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[5] * A[15] - movq 120(%rsi), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[6] * A[14] - movq 112(%rsi), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[7] * A[13] - movq 104(%rsi), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[8] * A[12] - movq 96(%rsi), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 + addq %rax, %r8 + adcq %rdx, %r9 + adcq $0, %rcx + addq %rax, %r8 + adcq %rdx, %r9 + adcq $0, %rcx + movq %r8, 152(%rdi) # A[9] * A[11] movq 88(%rsi), %rax mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 + xorq %r8, %r8 + addq %rax, %r9 + adcq %rdx, %rcx + adcq $0, %r8 + addq %rax, %r9 + adcq %rdx, %rcx + adcq $0, %r8 # A[10] * A[10] movq 80(%rsi), %rax mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r9 - adcq %r11, %rcx - adcq %r12, %r8 - movq %r9, 160(%rsp) - # A[0] * A[21] - movq 168(%rsi), %rax - mulq (%rsi) - xorq %r9, %r9 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[1] * A[20] - movq 160(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[19] - movq 152(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[18] - movq 144(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[17] - movq 136(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[5] * A[16] - movq 128(%rsi), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[6] * A[15] - movq 120(%rsi), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[7] * A[14] - movq 112(%rsi), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[8] * A[13] - movq 104(%rsi), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[9] * A[12] - movq 96(%rsi), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 + addq %rax, %r9 + adcq %rdx, %rcx + adcq $0, %r8 + movq %r9, 160(%rdi) # A[10] * A[11] movq 88(%rsi), %rax mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %rcx - adcq %r11, %r8 - adcq %r12, %r9 - movq %rcx, 168(%rsp) - # A[0] * A[22] - movq 176(%rsi), %rax - mulq (%rsi) - xorq %rcx, %rcx - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[1] * A[21] - movq 168(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[20] - movq 160(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[19] - movq 152(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[18] - movq 144(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[5] * A[17] - movq 136(%rsi), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[6] * A[16] - movq 128(%rsi), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[7] * A[15] - movq 120(%rsi), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[8] * A[14] - movq 112(%rsi), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[9] * A[13] - movq 104(%rsi), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[10] * A[12] - movq 96(%rsi), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 + xorq %r9, %r9 + addq %rax, %rcx + adcq %rdx, %r8 + adcq $0, %r9 + addq %rax, %rcx + adcq %rdx, %r8 + adcq $0, %r9 + movq %rcx, 168(%rdi) # A[11] * A[11] movq 88(%rsi), %rax mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r8 - adcq %r11, %r9 - adcq %r12, %rcx - movq %r8, 176(%rsp) - # A[0] * A[23] - movq 184(%rsi), %rax - mulq (%rsi) - xorq %r8, %r8 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[1] * A[22] - movq 176(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[21] - movq 168(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[20] - movq 160(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[19] - movq 152(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[5] * A[18] - movq 144(%rsi), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[6] * A[17] - movq 136(%rsi), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[7] * A[16] - movq 128(%rsi), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[8] * A[15] - movq 120(%rsi), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[9] * A[14] - movq 112(%rsi), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[10] * A[13] - movq 104(%rsi), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[11] * A[12] - movq 96(%rsi), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %r9 - adcq %r11, %rcx - adcq %r12, %r8 - movq %r9, 184(%rsp) - # A[1] * A[23] - movq 184(%rsi), %rax - mulq 8(%rsi) - xorq %r9, %r9 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[2] * A[22] - movq 176(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[21] - movq 168(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[20] - movq 160(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[5] * A[19] - movq 152(%rsi), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[6] * A[18] - movq 144(%rsi), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[7] * A[17] - movq 136(%rsi), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[8] * A[16] - movq 128(%rsi), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[9] * A[15] - movq 120(%rsi), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[10] * A[14] - movq 112(%rsi), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[11] * A[13] - movq 104(%rsi), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[12] * A[12] - movq 96(%rsi), %rax - mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %rcx - adcq %r11, %r8 - adcq %r12, %r9 - movq %rcx, 192(%rdi) - # A[2] * A[23] - movq 184(%rsi), %rax - mulq 16(%rsi) - xorq %rcx, %rcx - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[3] * A[22] - movq 176(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[21] - movq 168(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[5] * A[20] - movq 160(%rsi), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[6] * A[19] - movq 152(%rsi), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[7] * A[18] - movq 144(%rsi), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[8] * A[17] - movq 136(%rsi), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[9] * A[16] - movq 128(%rsi), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[10] * A[15] - movq 120(%rsi), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[11] * A[14] - movq 112(%rsi), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[12] * A[13] - movq 104(%rsi), %rax - mulq 96(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %r8 - adcq %r11, %r9 - adcq %r12, %rcx - movq %r8, 200(%rdi) - # A[3] * A[23] - movq 184(%rsi), %rax - mulq 24(%rsi) - xorq %r8, %r8 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[4] * A[22] - movq 176(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[5] * A[21] - movq 168(%rsi), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[6] * A[20] - movq 160(%rsi), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[7] * A[19] - movq 152(%rsi), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[8] * A[18] - movq 144(%rsi), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[9] * A[17] - movq 136(%rsi), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[10] * A[16] - movq 128(%rsi), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[11] * A[15] - movq 120(%rsi), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[12] * A[14] - movq 112(%rsi), %rax - mulq 96(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[13] * A[13] - movq 104(%rsi), %rax - mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r9 - adcq %r11, %rcx - adcq %r12, %r8 - movq %r9, 208(%rdi) - # A[4] * A[23] - movq 184(%rsi), %rax - mulq 32(%rsi) - xorq %r9, %r9 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[5] * A[22] - movq 176(%rsi), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[6] * A[21] - movq 168(%rsi), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[7] * A[20] - movq 160(%rsi), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[8] * A[19] - movq 152(%rsi), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[9] * A[18] - movq 144(%rsi), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[10] * A[17] - movq 136(%rsi), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[11] * A[16] - movq 128(%rsi), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[12] * A[15] - movq 120(%rsi), %rax - mulq 96(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[13] * A[14] - movq 112(%rsi), %rax - mulq 104(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %rcx - adcq %r11, %r8 - adcq %r12, %r9 - movq %rcx, 216(%rdi) - # A[5] * A[23] - movq 184(%rsi), %rax - mulq 40(%rsi) - xorq %rcx, %rcx - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[6] * A[22] - movq 176(%rsi), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[7] * A[21] - movq 168(%rsi), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[8] * A[20] - movq 160(%rsi), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[9] * A[19] - movq 152(%rsi), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[10] * A[18] - movq 144(%rsi), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[11] * A[17] - movq 136(%rsi), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[12] * A[16] - movq 128(%rsi), %rax - mulq 96(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[13] * A[15] - movq 120(%rsi), %rax - mulq 104(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[14] * A[14] - movq 112(%rsi), %rax - mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r8 - adcq %r11, %r9 - adcq %r12, %rcx - movq %r8, 224(%rdi) - # A[6] * A[23] - movq 184(%rsi), %rax - mulq 48(%rsi) - xorq %r8, %r8 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[7] * A[22] - movq 176(%rsi), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[8] * A[21] - movq 168(%rsi), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[9] * A[20] - movq 160(%rsi), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[10] * A[19] - movq 152(%rsi), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[11] * A[18] - movq 144(%rsi), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[12] * A[17] - movq 136(%rsi), %rax - mulq 96(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[13] * A[16] - movq 128(%rsi), %rax - mulq 104(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[14] * A[15] - movq 120(%rsi), %rax - mulq 112(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %r9 - adcq %r11, %rcx - adcq %r12, %r8 - movq %r9, 232(%rdi) - # A[7] * A[23] - movq 184(%rsi), %rax - mulq 56(%rsi) - xorq %r9, %r9 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[8] * A[22] - movq 176(%rsi), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[9] * A[21] - movq 168(%rsi), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[10] * A[20] - movq 160(%rsi), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[11] * A[19] - movq 152(%rsi), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[12] * A[18] - movq 144(%rsi), %rax - mulq 96(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[13] * A[17] - movq 136(%rsi), %rax - mulq 104(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[14] * A[16] - movq 128(%rsi), %rax - mulq 112(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[15] * A[15] - movq 120(%rsi), %rax - mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %rcx - adcq %r11, %r8 - adcq %r12, %r9 - movq %rcx, 240(%rdi) - # A[8] * A[23] - movq 184(%rsi), %rax - mulq 64(%rsi) - xorq %rcx, %rcx - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[9] * A[22] - movq 176(%rsi), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[10] * A[21] - movq 168(%rsi), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[11] * A[20] - movq 160(%rsi), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[12] * A[19] - movq 152(%rsi), %rax - mulq 96(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[13] * A[18] - movq 144(%rsi), %rax - mulq 104(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[14] * A[17] - movq 136(%rsi), %rax - mulq 112(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[15] * A[16] - movq 128(%rsi), %rax - mulq 120(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %r8 - adcq %r11, %r9 - adcq %r12, %rcx - movq %r8, 248(%rdi) - # A[9] * A[23] - movq 184(%rsi), %rax - mulq 72(%rsi) - xorq %r8, %r8 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[10] * A[22] - movq 176(%rsi), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[11] * A[21] - movq 168(%rsi), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[12] * A[20] - movq 160(%rsi), %rax - mulq 96(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[13] * A[19] - movq 152(%rsi), %rax - mulq 104(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[14] * A[18] - movq 144(%rsi), %rax - mulq 112(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[15] * A[17] - movq 136(%rsi), %rax - mulq 120(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[16] * A[16] - movq 128(%rsi), %rax - mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r9 - adcq %r11, %rcx - adcq %r12, %r8 - movq %r9, 256(%rdi) - # A[10] * A[23] - movq 184(%rsi), %rax - mulq 80(%rsi) - xorq %r9, %r9 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[11] * A[22] - movq 176(%rsi), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[12] * A[21] - movq 168(%rsi), %rax - mulq 96(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[13] * A[20] - movq 160(%rsi), %rax - mulq 104(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[14] * A[19] - movq 152(%rsi), %rax - mulq 112(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[15] * A[18] - movq 144(%rsi), %rax - mulq 120(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[16] * A[17] - movq 136(%rsi), %rax - mulq 128(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %rcx - adcq %r11, %r8 - adcq %r12, %r9 - movq %rcx, 264(%rdi) - # A[11] * A[23] - movq 184(%rsi), %rax - mulq 88(%rsi) - xorq %rcx, %rcx - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[12] * A[22] - movq 176(%rsi), %rax - mulq 96(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[13] * A[21] - movq 168(%rsi), %rax - mulq 104(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[14] * A[20] - movq 160(%rsi), %rax - mulq 112(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[15] * A[19] - movq 152(%rsi), %rax - mulq 120(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[16] * A[18] - movq 144(%rsi), %rax - mulq 128(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[17] * A[17] - movq 136(%rsi), %rax - mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r8 - adcq %r11, %r9 - adcq %r12, %rcx - movq %r8, 272(%rdi) - # A[12] * A[23] - movq 184(%rsi), %rax - mulq 96(%rsi) - xorq %r8, %r8 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[13] * A[22] - movq 176(%rsi), %rax - mulq 104(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[14] * A[21] - movq 168(%rsi), %rax - mulq 112(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[15] * A[20] - movq 160(%rsi), %rax - mulq 120(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[16] * A[19] - movq 152(%rsi), %rax - mulq 128(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[17] * A[18] - movq 144(%rsi), %rax - mulq 136(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %r9 - adcq %r11, %rcx - adcq %r12, %r8 - movq %r9, 280(%rdi) - # A[13] * A[23] - movq 184(%rsi), %rax - mulq 104(%rsi) - xorq %r9, %r9 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[14] * A[22] - movq 176(%rsi), %rax - mulq 112(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[15] * A[21] - movq 168(%rsi), %rax - mulq 120(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[16] * A[20] - movq 160(%rsi), %rax - mulq 128(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[17] * A[19] - movq 152(%rsi), %rax - mulq 136(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[18] * A[18] - movq 144(%rsi), %rax - mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %rcx - adcq %r11, %r8 - adcq %r12, %r9 - movq %rcx, 288(%rdi) - # A[14] * A[23] - movq 184(%rsi), %rax - mulq 112(%rsi) - xorq %rcx, %rcx - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[15] * A[22] - movq 176(%rsi), %rax - mulq 120(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[16] * A[21] - movq 168(%rsi), %rax - mulq 128(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[17] * A[20] - movq 160(%rsi), %rax - mulq 136(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[18] * A[19] - movq 152(%rsi), %rax - mulq 144(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %r8 - adcq %r11, %r9 - adcq %r12, %rcx - movq %r8, 296(%rdi) - # A[15] * A[23] - movq 184(%rsi), %rax - mulq 120(%rsi) - xorq %r8, %r8 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[16] * A[22] - movq 176(%rsi), %rax - mulq 128(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[17] * A[21] - movq 168(%rsi), %rax - mulq 136(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[18] * A[20] - movq 160(%rsi), %rax - mulq 144(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[19] * A[19] - movq 152(%rsi), %rax - mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r9 - adcq %r11, %rcx - adcq %r12, %r8 - movq %r9, 304(%rdi) - # A[16] * A[23] - movq 184(%rsi), %rax - mulq 128(%rsi) - xorq %r9, %r9 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[17] * A[22] - movq 176(%rsi), %rax - mulq 136(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[18] * A[21] - movq 168(%rsi), %rax - mulq 144(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[19] * A[20] - movq 160(%rsi), %rax - mulq 152(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %rcx - adcq %r11, %r8 - adcq %r12, %r9 - movq %rcx, 312(%rdi) - # A[17] * A[23] - movq 184(%rsi), %rax - mulq 136(%rsi) - xorq %rcx, %rcx - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[18] * A[22] - movq 176(%rsi), %rax - mulq 144(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[19] * A[21] - movq 168(%rsi), %rax - mulq 152(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[20] * A[20] - movq 160(%rsi), %rax - mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r8 - adcq %r11, %r9 - adcq %r12, %rcx - movq %r8, 320(%rdi) - # A[18] * A[23] - movq 184(%rsi), %rax - mulq 144(%rsi) - xorq %r8, %r8 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[19] * A[22] - movq 176(%rsi), %rax - mulq 152(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[20] * A[21] - movq 168(%rsi), %rax - mulq 160(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %r9 - adcq %r11, %rcx - adcq %r12, %r8 - movq %r9, 328(%rdi) - # A[19] * A[23] - movq 184(%rsi), %rax - mulq 152(%rsi) - xorq %r9, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - # A[20] * A[22] - movq 176(%rsi), %rax - mulq 160(%rsi) - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - # A[21] * A[21] - movq 168(%rsi), %rax - mulq %rax - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - movq %rcx, 336(%rdi) - # A[20] * A[23] - movq 184(%rsi), %rax - mulq 160(%rsi) - xorq %rcx, %rcx addq %rax, %r8 adcq %rdx, %r9 - adcq $0, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - # A[21] * A[22] - movq 176(%rsi), %rax - mulq 168(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - movq %r8, 344(%rdi) - # A[21] * A[23] - movq 184(%rsi), %rax - mulq 168(%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - # A[22] * A[22] - movq 176(%rsi), %rax - mulq %rax - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - movq %r9, 352(%rdi) - # A[22] * A[23] - movq 184(%rsi), %rax - mulq 176(%rsi) - xorq %r9, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - movq %rcx, 360(%rdi) - # A[23] * A[23] - movq 184(%rsi), %rax - mulq %rax - addq %rax, %r8 - adcq %rdx, %r9 - movq %r8, 368(%rdi) - movq %r9, 376(%rdi) + movq %r8, 176(%rdi) + movq %r9, 184(%rdi) movq (%rsp), %rax movq 8(%rsp), %rdx movq 16(%rsp), %r10 @@ -15144,35 +13863,11 @@ _sp_3072_sqr_24: movq %rdx, 72(%rdi) movq %r10, 80(%rdi) movq %r11, 88(%rdi) - movq 96(%rsp), %rax - movq 104(%rsp), %rdx - movq 112(%rsp), %r10 - movq 120(%rsp), %r11 - movq %rax, 96(%rdi) - movq %rdx, 104(%rdi) - movq %r10, 112(%rdi) - movq %r11, 120(%rdi) - movq 128(%rsp), %rax - movq 136(%rsp), %rdx - movq 144(%rsp), %r10 - movq 152(%rsp), %r11 - movq %rax, 128(%rdi) - movq %rdx, 136(%rdi) - movq %r10, 144(%rdi) - movq %r11, 152(%rdi) - movq 160(%rsp), %rax - movq 168(%rsp), %rdx - movq 176(%rsp), %r10 - movq 184(%rsp), %r11 - movq %rax, 160(%rdi) - movq %rdx, 168(%rdi) - movq %r10, 176(%rdi) - movq %r11, 184(%rdi) - addq $192, %rsp + addq $96, %rsp pop %r12 repz retq #ifndef __APPLE__ -.size sp_3072_sqr_24,.-sp_3072_sqr_24 +.size sp_3072_sqr_12,.-sp_3072_sqr_12 #endif /* __APPLE__ */ #ifdef HAVE_INTEL_AVX2 /* Multiply a and b into r. (r = a * b) @@ -15182,3618 +13877,969 @@ _sp_3072_sqr_24: * b Second number to multiply. */ #ifndef __APPLE__ -.globl sp_3072_mul_avx2_24 -.type sp_3072_mul_avx2_24,@function +.globl sp_3072_mul_avx2_12 +.type sp_3072_mul_avx2_12,@function .align 16 -sp_3072_mul_avx2_24: +sp_3072_mul_avx2_12: #else -.globl _sp_3072_mul_avx2_24 +.globl _sp_3072_mul_avx2_12 .p2align 4 -_sp_3072_mul_avx2_24: +_sp_3072_mul_avx2_12: #endif /* __APPLE__ */ + push %rbx push %rbp push %r12 - push %r13 - push %r14 - push %r15 - push %rbx movq %rdx, %rbp - subq $192, %rsp - movq $0, %r14 + subq $96, %rsp + cmpq %rdi, %rsi + movq %rsp, %rbx + cmovne %rdi, %rbx + cmpq %rdi, %rbp + cmove %rsp, %rbx + xorq %r12, %r12 movq (%rsi), %rdx # A[0] * B[0] mulx (%rbp), %r8, %r9 # A[0] * B[1] mulx 8(%rbp), %rax, %r10 - movq %r8, (%rsp) + movq %r8, (%rbx) adcxq %rax, %r9 + movq %r9, 8(%rbx) # A[0] * B[2] - mulx 16(%rbp), %rax, %r11 - movq %r9, 8(%rsp) + mulx 16(%rbp), %rax, %r8 adcxq %rax, %r10 # A[0] * B[3] - mulx 24(%rbp), %rax, %r12 - movq %r10, 16(%rsp) - adcxq %rax, %r11 - movq %r11, 24(%rsp) + mulx 24(%rbp), %rax, %r9 + movq %r10, 16(%rbx) + adcxq %rax, %r8 + movq %r8, 24(%rbx) # A[0] * B[4] - mulx 32(%rbp), %rax, %r8 - adcxq %rax, %r12 + mulx 32(%rbp), %rax, %r10 + adcxq %rax, %r9 # A[0] * B[5] - mulx 40(%rbp), %rax, %r9 - movq %r12, 32(%rsp) - adcxq %rax, %r8 + mulx 40(%rbp), %rax, %r8 + movq %r9, 32(%rbx) + adcxq %rax, %r10 + movq %r10, 40(%rbx) # A[0] * B[6] - mulx 48(%rbp), %rax, %r10 - movq %r8, 40(%rsp) - adcxq %rax, %r9 + mulx 48(%rbp), %rax, %r9 + adcxq %rax, %r8 # A[0] * B[7] - mulx 56(%rbp), %rax, %r11 - movq %r9, 48(%rsp) - adcxq %rax, %r10 - movq %r10, 56(%rsp) + mulx 56(%rbp), %rax, %r10 + movq %r8, 48(%rbx) + adcxq %rax, %r9 + movq %r9, 56(%rbx) # A[0] * B[8] - mulx 64(%rbp), %rax, %r12 - adcxq %rax, %r11 + mulx 64(%rbp), %rax, %r8 + adcxq %rax, %r10 # A[0] * B[9] - mulx 72(%rbp), %rax, %r8 - movq %r11, 64(%rsp) - adcxq %rax, %r12 + mulx 72(%rbp), %rax, %r9 + movq %r10, 64(%rbx) + adcxq %rax, %r8 + movq %r8, 72(%rbx) # A[0] * B[10] - mulx 80(%rbp), %rax, %r9 - movq %r12, 72(%rsp) - adcxq %rax, %r8 + mulx 80(%rbp), %rax, %r10 + adcxq %rax, %r9 # A[0] * B[11] - mulx 88(%rbp), %rax, %r10 - movq %r8, 80(%rsp) - adcxq %rax, %r9 - movq %r9, 88(%rsp) - # A[0] * B[12] - mulx 96(%rbp), %rax, %r11 + mulx 88(%rbp), %rax, %r8 + movq %r9, 80(%rbx) adcxq %rax, %r10 - # A[0] * B[13] - mulx 104(%rbp), %rax, %r12 - movq %r10, 96(%rsp) - adcxq %rax, %r11 - # A[0] * B[14] - mulx 112(%rbp), %rax, %r8 - movq %r11, 104(%rsp) - adcxq %rax, %r12 - # A[0] * B[15] - mulx 120(%rbp), %rax, %r9 - movq %r12, 112(%rsp) - adcxq %rax, %r8 - movq %r8, 120(%rsp) - # A[0] * B[16] - mulx 128(%rbp), %rax, %r10 - adcxq %rax, %r9 - # A[0] * B[17] - mulx 136(%rbp), %rax, %r11 - movq %r9, 128(%rsp) - adcxq %rax, %r10 - # A[0] * B[18] - mulx 144(%rbp), %rax, %r12 - movq %r10, 136(%rsp) - adcxq %rax, %r11 - # A[0] * B[19] - mulx 152(%rbp), %rax, %r8 - movq %r11, 144(%rsp) - adcxq %rax, %r12 - movq %r12, 152(%rsp) - # A[0] * B[20] - mulx 160(%rbp), %rax, %r9 - adcxq %rax, %r8 - # A[0] * B[21] - mulx 168(%rbp), %rax, %r10 - movq %r8, 160(%rsp) - adcxq %rax, %r9 - # A[0] * B[22] - mulx 176(%rbp), %rax, %r11 - movq %r9, 168(%rsp) - adcxq %rax, %r10 - # A[0] * B[23] - mulx 184(%rbp), %rax, %r12 - movq %r10, %r15 - adcxq %rax, %r11 - adcxq %r14, %r12 - movq %r14, %r13 - adcxq %r14, %r13 - movq %r11, %rbx - movq %r12, 192(%rdi) + adcxq %r12, %r8 + movq %r12, %r11 + adcxq %r12, %r11 + movq %r10, 88(%rbx) + movq %r8, 96(%rdi) movq 8(%rsi), %rdx - movq 8(%rsp), %r9 - movq 16(%rsp), %r10 - movq 24(%rsp), %r11 - movq 32(%rsp), %r12 - movq 40(%rsp), %r8 + movq 8(%rbx), %r9 + movq 16(%rbx), %r10 + movq 24(%rbx), %r8 # A[1] * B[0] mulx (%rbp), %rax, %rcx adcxq %rax, %r9 adoxq %rcx, %r10 # A[1] * B[1] mulx 8(%rbp), %rax, %rcx - movq %r9, 8(%rsp) + movq %r9, 8(%rbx) adcxq %rax, %r10 - adoxq %rcx, %r11 + adoxq %rcx, %r8 + movq %r10, 16(%rbx) + movq 32(%rbx), %r9 + movq 40(%rbx), %r10 # A[1] * B[2] mulx 16(%rbp), %rax, %rcx - movq %r10, 16(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 + adcxq %rax, %r8 + adoxq %rcx, %r9 # A[1] * B[3] mulx 24(%rbp), %rax, %rcx - movq %r11, 24(%rsp) - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 32(%rsp) - movq 48(%rsp), %r9 - movq 56(%rsp), %r10 - movq 64(%rsp), %r11 - movq 72(%rsp), %r12 + movq %r8, 24(%rbx) + adcxq %rax, %r9 + adoxq %rcx, %r10 + movq %r9, 32(%rbx) + movq 48(%rbx), %r8 + movq 56(%rbx), %r9 # A[1] * B[4] mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 + adcxq %rax, %r10 + adoxq %rcx, %r8 # A[1] * B[5] mulx 40(%rbp), %rax, %rcx - movq %r8, 40(%rsp) - adcxq %rax, %r9 - adoxq %rcx, %r10 + movq %r10, 40(%rbx) + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r8, 48(%rbx) + movq 64(%rbx), %r10 + movq 72(%rbx), %r8 # A[1] * B[6] mulx 48(%rbp), %rax, %rcx - movq %r9, 48(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 + adcxq %rax, %r9 + adoxq %rcx, %r10 # A[1] * B[7] mulx 56(%rbp), %rax, %rcx - movq %r10, 56(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 64(%rsp) - movq 80(%rsp), %r8 - movq 88(%rsp), %r9 - movq 96(%rsp), %r10 - movq 104(%rsp), %r11 + movq %r9, 56(%rbx) + adcxq %rax, %r10 + adoxq %rcx, %r8 + movq %r10, 64(%rbx) + movq 80(%rbx), %r9 + movq 88(%rbx), %r10 # A[1] * B[8] mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 + adcxq %rax, %r8 + adoxq %rcx, %r9 # A[1] * B[9] mulx 72(%rbp), %rax, %rcx - movq %r12, 72(%rsp) - adcxq %rax, %r8 - adoxq %rcx, %r9 + movq %r8, 72(%rbx) + adcxq %rax, %r9 + adoxq %rcx, %r10 + movq %r9, 80(%rbx) + movq 96(%rdi), %r8 # A[1] * B[10] mulx 80(%rbp), %rax, %rcx - movq %r8, 80(%rsp) - adcxq %rax, %r9 - adoxq %rcx, %r10 + adcxq %rax, %r10 + adoxq %rcx, %r8 # A[1] * B[11] mulx 88(%rbp), %rax, %rcx - movq %r9, 88(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 96(%rsp) - movq 112(%rsp), %r12 - movq 120(%rsp), %r8 - movq 128(%rsp), %r9 - movq 136(%rsp), %r10 - # A[1] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[1] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r11, 104(%rsp) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[1] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r12, 112(%rsp) + movq %r10, 88(%rbx) + movq %r12, %r9 adcxq %rax, %r8 adoxq %rcx, %r9 - # A[1] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r8, 120(%rsp) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 128(%rsp) - movq 144(%rsp), %r11 - movq 152(%rsp), %r12 - movq 160(%rsp), %r8 - movq 168(%rsp), %r9 - # A[1] * B[16] - mulx 128(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[1] * B[17] - mulx 136(%rbp), %rax, %rcx - movq %r10, 136(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[1] * B[18] - mulx 144(%rbp), %rax, %rcx - movq %r11, 144(%rsp) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[1] * B[19] - mulx 152(%rbp), %rax, %rcx - movq %r12, 152(%rsp) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 160(%rsp) - movq %r15, %r10 - movq %rbx, %r11 - movq 192(%rdi), %r12 - # A[1] * B[20] - mulx 160(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[1] * B[21] - mulx 168(%rbp), %rax, %rcx - movq %r9, 168(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[1] * B[22] - mulx 176(%rbp), %rax, %rcx - movq %r10, %r15 - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[1] * B[23] - mulx 184(%rbp), %rax, %rcx - movq %r11, %rbx - movq %r14, %r8 - adcxq %rax, %r12 - adoxq %rcx, %r8 - adcxq %r13, %r8 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r12, 192(%rdi) - movq %r8, 200(%rdi) + adcxq %r11, %r9 + movq %r12, %r11 + adoxq %r12, %r11 + adcxq %r12, %r11 + movq %r8, 96(%rdi) + movq %r9, 104(%rdi) movq 16(%rsi), %rdx - movq 16(%rsp), %r10 - movq 24(%rsp), %r11 - movq 32(%rsp), %r12 - movq 40(%rsp), %r8 - movq 48(%rsp), %r9 + movq 16(%rbx), %r10 + movq 24(%rbx), %r8 + movq 32(%rbx), %r9 # A[2] * B[0] mulx (%rbp), %rax, %rcx adcxq %rax, %r10 - adoxq %rcx, %r11 + adoxq %rcx, %r8 # A[2] * B[1] mulx 8(%rbp), %rax, %rcx - movq %r10, 16(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 + movq %r10, 16(%rbx) + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r8, 24(%rbx) + movq 40(%rbx), %r10 + movq 48(%rbx), %r8 # A[2] * B[2] mulx 16(%rbp), %rax, %rcx - movq %r11, 24(%rsp) - adcxq %rax, %r12 - adoxq %rcx, %r8 + adcxq %rax, %r9 + adoxq %rcx, %r10 # A[2] * B[3] mulx 24(%rbp), %rax, %rcx - movq %r12, 32(%rsp) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 40(%rsp) - movq 56(%rsp), %r10 - movq 64(%rsp), %r11 - movq 72(%rsp), %r12 - movq 80(%rsp), %r8 + movq %r9, 32(%rbx) + adcxq %rax, %r10 + adoxq %rcx, %r8 + movq %r10, 40(%rbx) + movq 56(%rbx), %r9 + movq 64(%rbx), %r10 # A[2] * B[4] mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 + adcxq %rax, %r8 + adoxq %rcx, %r9 # A[2] * B[5] mulx 40(%rbp), %rax, %rcx - movq %r9, 48(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 + movq %r8, 48(%rbx) + adcxq %rax, %r9 + adoxq %rcx, %r10 + movq %r9, 56(%rbx) + movq 72(%rbx), %r8 + movq 80(%rbx), %r9 # A[2] * B[6] mulx 48(%rbp), %rax, %rcx - movq %r10, 56(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 + adcxq %rax, %r10 + adoxq %rcx, %r8 # A[2] * B[7] mulx 56(%rbp), %rax, %rcx - movq %r11, 64(%rsp) - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 72(%rsp) - movq 88(%rsp), %r9 - movq 96(%rsp), %r10 - movq 104(%rsp), %r11 - movq 112(%rsp), %r12 + movq %r10, 64(%rbx) + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r8, 72(%rbx) + movq 88(%rbx), %r10 + movq 96(%rdi), %r8 # A[2] * B[8] mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 + adcxq %rax, %r9 + adoxq %rcx, %r10 # A[2] * B[9] mulx 72(%rbp), %rax, %rcx - movq %r8, 80(%rsp) - adcxq %rax, %r9 - adoxq %rcx, %r10 + movq %r9, 80(%rbx) + adcxq %rax, %r10 + adoxq %rcx, %r8 + movq %r10, 88(%rbx) + movq 104(%rdi), %r9 # A[2] * B[10] mulx 80(%rbp), %rax, %rcx - movq %r9, 88(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 + adcxq %rax, %r8 + adoxq %rcx, %r9 # A[2] * B[11] mulx 88(%rbp), %rax, %rcx - movq %r10, 96(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 104(%rsp) - movq 120(%rsp), %r8 - movq 128(%rsp), %r9 - movq 136(%rsp), %r10 - movq 144(%rsp), %r11 - # A[2] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[2] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r12, 112(%rsp) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[2] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r8, 120(%rsp) + movq %r8, 96(%rdi) + movq %r12, %r10 adcxq %rax, %r9 adoxq %rcx, %r10 - # A[2] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r9, 128(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 136(%rsp) - movq 152(%rsp), %r12 - movq 160(%rsp), %r8 - movq 168(%rsp), %r9 - movq %r15, %r10 - # A[2] * B[16] - mulx 128(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[2] * B[17] - mulx 136(%rbp), %rax, %rcx - movq %r11, 144(%rsp) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[2] * B[18] - mulx 144(%rbp), %rax, %rcx - movq %r12, 152(%rsp) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[2] * B[19] - mulx 152(%rbp), %rax, %rcx - movq %r8, 160(%rsp) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 168(%rsp) - movq %rbx, %r11 - movq 192(%rdi), %r12 - movq 200(%rdi), %r8 - # A[2] * B[20] - mulx 160(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[2] * B[21] - mulx 168(%rbp), %rax, %rcx - movq %r10, %r15 - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[2] * B[22] - mulx 176(%rbp), %rax, %rcx - movq %r11, %rbx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[2] * B[23] - mulx 184(%rbp), %rax, %rcx - movq %r12, 192(%rdi) - movq %r14, %r9 - adcxq %rax, %r8 - adoxq %rcx, %r9 - adcxq %r13, %r9 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r8, 200(%rdi) - movq %r9, 208(%rdi) + adcxq %r11, %r10 + movq %r12, %r11 + adoxq %r12, %r11 + adcxq %r12, %r11 + movq %r9, 104(%rdi) + movq %r10, 112(%rdi) movq 24(%rsi), %rdx - movq 24(%rsp), %r11 - movq 32(%rsp), %r12 - movq 40(%rsp), %r8 - movq 48(%rsp), %r9 - movq 56(%rsp), %r10 + movq 24(%rbx), %r8 + movq 32(%rbx), %r9 + movq 40(%rbx), %r10 # A[3] * B[0] mulx (%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 + adcxq %rax, %r8 + adoxq %rcx, %r9 # A[3] * B[1] mulx 8(%rbp), %rax, %rcx - movq %r11, 24(%rsp) - adcxq %rax, %r12 - adoxq %rcx, %r8 + movq %r8, 24(%rbx) + adcxq %rax, %r9 + adoxq %rcx, %r10 + movq %r9, 32(%rbx) + movq 48(%rbx), %r8 + movq 56(%rbx), %r9 # A[3] * B[2] mulx 16(%rbp), %rax, %rcx - movq %r12, 32(%rsp) - adcxq %rax, %r8 - adoxq %rcx, %r9 + adcxq %rax, %r10 + adoxq %rcx, %r8 # A[3] * B[3] mulx 24(%rbp), %rax, %rcx - movq %r8, 40(%rsp) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 48(%rsp) - movq 64(%rsp), %r11 - movq 72(%rsp), %r12 - movq 80(%rsp), %r8 - movq 88(%rsp), %r9 + movq %r10, 40(%rbx) + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r8, 48(%rbx) + movq 64(%rbx), %r10 + movq 72(%rbx), %r8 # A[3] * B[4] mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 + adcxq %rax, %r9 + adoxq %rcx, %r10 # A[3] * B[5] mulx 40(%rbp), %rax, %rcx - movq %r10, 56(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 + movq %r9, 56(%rbx) + adcxq %rax, %r10 + adoxq %rcx, %r8 + movq %r10, 64(%rbx) + movq 80(%rbx), %r9 + movq 88(%rbx), %r10 # A[3] * B[6] mulx 48(%rbp), %rax, %rcx - movq %r11, 64(%rsp) - adcxq %rax, %r12 - adoxq %rcx, %r8 + adcxq %rax, %r8 + adoxq %rcx, %r9 # A[3] * B[7] mulx 56(%rbp), %rax, %rcx - movq %r12, 72(%rsp) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 80(%rsp) - movq 96(%rsp), %r10 - movq 104(%rsp), %r11 - movq 112(%rsp), %r12 - movq 120(%rsp), %r8 + movq %r8, 72(%rbx) + adcxq %rax, %r9 + adoxq %rcx, %r10 + movq %r9, 80(%rbx) + movq 96(%rdi), %r8 + movq 104(%rdi), %r9 # A[3] * B[8] mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 + adcxq %rax, %r10 + adoxq %rcx, %r8 # A[3] * B[9] mulx 72(%rbp), %rax, %rcx - movq %r9, 88(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 + movq %r10, 88(%rbx) + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r8, 96(%rdi) + movq 112(%rdi), %r10 # A[3] * B[10] mulx 80(%rbp), %rax, %rcx - movq %r10, 96(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 + adcxq %rax, %r9 + adoxq %rcx, %r10 # A[3] * B[11] mulx 88(%rbp), %rax, %rcx - movq %r11, 104(%rsp) - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 112(%rsp) - movq 128(%rsp), %r9 - movq 136(%rsp), %r10 - movq 144(%rsp), %r11 - movq 152(%rsp), %r12 - # A[3] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[3] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r8, 120(%rsp) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[3] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r9, 128(%rsp) + movq %r9, 104(%rdi) + movq %r12, %r8 adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[3] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r10, 136(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 144(%rsp) - movq 160(%rsp), %r8 - movq 168(%rsp), %r9 - movq %r15, %r10 - movq %rbx, %r11 - # A[3] * B[16] - mulx 128(%rbp), %rax, %rcx - adcxq %rax, %r12 adoxq %rcx, %r8 - # A[3] * B[17] - mulx 136(%rbp), %rax, %rcx - movq %r12, 152(%rsp) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[3] * B[18] - mulx 144(%rbp), %rax, %rcx - movq %r8, 160(%rsp) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[3] * B[19] - mulx 152(%rbp), %rax, %rcx - movq %r9, 168(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, %r15 - movq 192(%rdi), %r12 - movq 200(%rdi), %r8 - movq 208(%rdi), %r9 - # A[3] * B[20] - mulx 160(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[3] * B[21] - mulx 168(%rbp), %rax, %rcx - movq %r11, %rbx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[3] * B[22] - mulx 176(%rbp), %rax, %rcx - movq %r12, 192(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[3] * B[23] - mulx 184(%rbp), %rax, %rcx - movq %r8, 200(%rdi) - movq %r14, %r10 - adcxq %rax, %r9 - adoxq %rcx, %r10 - adcxq %r13, %r10 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r9, 208(%rdi) - movq %r10, 216(%rdi) + adcxq %r11, %r8 + movq %r12, %r11 + adoxq %r12, %r11 + adcxq %r12, %r11 + movq %r10, 112(%rdi) + movq %r8, 120(%rdi) movq 32(%rsi), %rdx - movq 32(%rsp), %r12 - movq 40(%rsp), %r8 - movq 48(%rsp), %r9 - movq 56(%rsp), %r10 - movq 64(%rsp), %r11 + movq 32(%rbx), %r9 + movq 40(%rbx), %r10 + movq 48(%rbx), %r8 # A[4] * B[0] mulx (%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 + adcxq %rax, %r9 + adoxq %rcx, %r10 # A[4] * B[1] mulx 8(%rbp), %rax, %rcx - movq %r12, 32(%rsp) - adcxq %rax, %r8 - adoxq %rcx, %r9 + movq %r9, 32(%rbx) + adcxq %rax, %r10 + adoxq %rcx, %r8 + movq %r10, 40(%rbx) + movq 56(%rbx), %r9 + movq 64(%rbx), %r10 # A[4] * B[2] mulx 16(%rbp), %rax, %rcx - movq %r8, 40(%rsp) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[4] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r9, 48(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 56(%rsp) - movq 72(%rsp), %r12 - movq 80(%rsp), %r8 - movq 88(%rsp), %r9 - movq 96(%rsp), %r10 - # A[4] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[4] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r11, 64(%rsp) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[4] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r12, 72(%rsp) adcxq %rax, %r8 adoxq %rcx, %r9 - # A[4] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r8, 80(%rsp) + # A[4] * B[3] + mulx 24(%rbp), %rax, %rcx + movq %r8, 48(%rbx) adcxq %rax, %r9 adoxq %rcx, %r10 - movq %r9, 88(%rsp) - movq 104(%rsp), %r11 - movq 112(%rsp), %r12 - movq 120(%rsp), %r8 - movq 128(%rsp), %r9 + movq %r9, 56(%rbx) + movq 72(%rbx), %r8 + movq 80(%rbx), %r9 + # A[4] * B[4] + mulx 32(%rbp), %rax, %rcx + adcxq %rax, %r10 + adoxq %rcx, %r8 + # A[4] * B[5] + mulx 40(%rbp), %rax, %rcx + movq %r10, 64(%rbx) + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r8, 72(%rbx) + movq 88(%rbx), %r10 + movq 96(%rdi), %r8 + # A[4] * B[6] + mulx 48(%rbp), %rax, %rcx + adcxq %rax, %r9 + adoxq %rcx, %r10 + # A[4] * B[7] + mulx 56(%rbp), %rax, %rcx + movq %r9, 80(%rbx) + adcxq %rax, %r10 + adoxq %rcx, %r8 + movq %r10, 88(%rbx) + movq 104(%rdi), %r9 + movq 112(%rdi), %r10 # A[4] * B[8] mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 + adcxq %rax, %r8 + adoxq %rcx, %r9 # A[4] * B[9] mulx 72(%rbp), %rax, %rcx - movq %r10, 96(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 + movq %r8, 96(%rdi) + adcxq %rax, %r9 + adoxq %rcx, %r10 + movq %r9, 104(%rdi) + movq 120(%rdi), %r8 # A[4] * B[10] mulx 80(%rbp), %rax, %rcx - movq %r11, 104(%rsp) - adcxq %rax, %r12 + adcxq %rax, %r10 adoxq %rcx, %r8 # A[4] * B[11] mulx 88(%rbp), %rax, %rcx - movq %r12, 112(%rsp) + movq %r10, 112(%rdi) + movq %r12, %r9 adcxq %rax, %r8 adoxq %rcx, %r9 - movq %r8, 120(%rsp) - movq 136(%rsp), %r10 - movq 144(%rsp), %r11 - movq 152(%rsp), %r12 - movq 160(%rsp), %r8 - # A[4] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[4] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r9, 128(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[4] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r10, 136(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[4] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r11, 144(%rsp) - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 152(%rsp) - movq 168(%rsp), %r9 - movq %r15, %r10 - movq %rbx, %r11 - movq 192(%rdi), %r12 - # A[4] * B[16] - mulx 128(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[4] * B[17] - mulx 136(%rbp), %rax, %rcx - movq %r8, 160(%rsp) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[4] * B[18] - mulx 144(%rbp), %rax, %rcx - movq %r9, 168(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[4] * B[19] - mulx 152(%rbp), %rax, %rcx - movq %r10, %r15 - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, %rbx - movq 200(%rdi), %r8 - movq 208(%rdi), %r9 - movq 216(%rdi), %r10 - # A[4] * B[20] - mulx 160(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[4] * B[21] - mulx 168(%rbp), %rax, %rcx - movq %r12, 192(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[4] * B[22] - mulx 176(%rbp), %rax, %rcx - movq %r8, 200(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[4] * B[23] - mulx 184(%rbp), %rax, %rcx - movq %r9, 208(%rdi) - movq %r14, %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - adcxq %r13, %r11 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r10, 216(%rdi) - movq %r11, 224(%rdi) + adcxq %r11, %r9 + movq %r12, %r11 + adoxq %r12, %r11 + adcxq %r12, %r11 + movq %r8, 120(%rdi) + movq %r9, 128(%rdi) movq 40(%rsi), %rdx - movq 40(%rsp), %r8 - movq 48(%rsp), %r9 - movq 56(%rsp), %r10 - movq 64(%rsp), %r11 - movq 72(%rsp), %r12 + movq 40(%rbx), %r10 + movq 48(%rbx), %r8 + movq 56(%rbx), %r9 # A[5] * B[0] mulx (%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 + adcxq %rax, %r10 + adoxq %rcx, %r8 # A[5] * B[1] mulx 8(%rbp), %rax, %rcx - movq %r8, 40(%rsp) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[5] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r9, 48(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[5] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r10, 56(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 64(%rsp) - movq 80(%rsp), %r8 - movq 88(%rsp), %r9 - movq 96(%rsp), %r10 - movq 104(%rsp), %r11 - # A[5] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[5] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r12, 72(%rsp) + movq %r10, 40(%rbx) adcxq %rax, %r8 adoxq %rcx, %r9 - # A[5] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r8, 80(%rsp) + movq %r8, 48(%rbx) + movq 64(%rbx), %r10 + movq 72(%rbx), %r8 + # A[5] * B[2] + mulx 16(%rbp), %rax, %rcx adcxq %rax, %r9 adoxq %rcx, %r10 + # A[5] * B[3] + mulx 24(%rbp), %rax, %rcx + movq %r9, 56(%rbx) + adcxq %rax, %r10 + adoxq %rcx, %r8 + movq %r10, 64(%rbx) + movq 80(%rbx), %r9 + movq 88(%rbx), %r10 + # A[5] * B[4] + mulx 32(%rbp), %rax, %rcx + adcxq %rax, %r8 + adoxq %rcx, %r9 + # A[5] * B[5] + mulx 40(%rbp), %rax, %rcx + movq %r8, 72(%rbx) + adcxq %rax, %r9 + adoxq %rcx, %r10 + movq %r9, 80(%rbx) + movq 96(%rdi), %r8 + movq 104(%rdi), %r9 + # A[5] * B[6] + mulx 48(%rbp), %rax, %rcx + adcxq %rax, %r10 + adoxq %rcx, %r8 # A[5] * B[7] mulx 56(%rbp), %rax, %rcx - movq %r9, 88(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 96(%rsp) - movq 112(%rsp), %r12 - movq 120(%rsp), %r8 - movq 128(%rsp), %r9 - movq 136(%rsp), %r10 + movq %r10, 88(%rbx) + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r8, 96(%rdi) + movq 112(%rdi), %r10 + movq 120(%rdi), %r8 # A[5] * B[8] mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 + adcxq %rax, %r9 + adoxq %rcx, %r10 # A[5] * B[9] mulx 72(%rbp), %rax, %rcx - movq %r11, 104(%rsp) - adcxq %rax, %r12 + movq %r9, 104(%rdi) + adcxq %rax, %r10 adoxq %rcx, %r8 + movq %r10, 112(%rdi) + movq 128(%rdi), %r9 # A[5] * B[10] mulx 80(%rbp), %rax, %rcx - movq %r12, 112(%rsp) adcxq %rax, %r8 adoxq %rcx, %r9 # A[5] * B[11] mulx 88(%rbp), %rax, %rcx - movq %r8, 120(%rsp) + movq %r8, 120(%rdi) + movq %r12, %r10 adcxq %rax, %r9 adoxq %rcx, %r10 - movq %r9, 128(%rsp) - movq 144(%rsp), %r11 - movq 152(%rsp), %r12 - movq 160(%rsp), %r8 - movq 168(%rsp), %r9 - # A[5] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[5] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r10, 136(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[5] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r11, 144(%rsp) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[5] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r12, 152(%rsp) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 160(%rsp) - movq %r15, %r10 - movq %rbx, %r11 - movq 192(%rdi), %r12 - movq 200(%rdi), %r8 - # A[5] * B[16] - mulx 128(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[5] * B[17] - mulx 136(%rbp), %rax, %rcx - movq %r9, 168(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[5] * B[18] - mulx 144(%rbp), %rax, %rcx - movq %r10, %r15 - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[5] * B[19] - mulx 152(%rbp), %rax, %rcx - movq %r11, %rbx - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 192(%rdi) - movq 208(%rdi), %r9 - movq 216(%rdi), %r10 - movq 224(%rdi), %r11 - # A[5] * B[20] - mulx 160(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[5] * B[21] - mulx 168(%rbp), %rax, %rcx - movq %r8, 200(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[5] * B[22] - mulx 176(%rbp), %rax, %rcx - movq %r9, 208(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[5] * B[23] - mulx 184(%rbp), %rax, %rcx - movq %r10, 216(%rdi) - movq %r14, %r12 - adcxq %rax, %r11 - adoxq %rcx, %r12 - adcxq %r13, %r12 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r11, 224(%rdi) - movq %r12, 232(%rdi) + adcxq %r11, %r10 + movq %r12, %r11 + adoxq %r12, %r11 + adcxq %r12, %r11 + movq %r9, 128(%rdi) + movq %r10, 136(%rdi) movq 48(%rsi), %rdx - movq 48(%rsp), %r9 - movq 56(%rsp), %r10 - movq 64(%rsp), %r11 - movq 72(%rsp), %r12 - movq 80(%rsp), %r8 + movq 48(%rbx), %r8 + movq 56(%rbx), %r9 + movq 64(%rbx), %r10 # A[6] * B[0] mulx (%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[6] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r9, 48(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[6] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r10, 56(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[6] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r11, 64(%rsp) - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 72(%rsp) - movq 88(%rsp), %r9 - movq 96(%rsp), %r10 - movq 104(%rsp), %r11 - movq 112(%rsp), %r12 - # A[6] * B[4] - mulx 32(%rbp), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 - # A[6] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r8, 80(%rsp) + # A[6] * B[1] + mulx 8(%rbp), %rax, %rcx + movq %r8, 48(%rbx) adcxq %rax, %r9 adoxq %rcx, %r10 + movq %r9, 56(%rbx) + movq 72(%rbx), %r8 + movq 80(%rbx), %r9 + # A[6] * B[2] + mulx 16(%rbp), %rax, %rcx + adcxq %rax, %r10 + adoxq %rcx, %r8 + # A[6] * B[3] + mulx 24(%rbp), %rax, %rcx + movq %r10, 64(%rbx) + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r8, 72(%rbx) + movq 88(%rbx), %r10 + movq 96(%rdi), %r8 + # A[6] * B[4] + mulx 32(%rbp), %rax, %rcx + adcxq %rax, %r9 + adoxq %rcx, %r10 + # A[6] * B[5] + mulx 40(%rbp), %rax, %rcx + movq %r9, 80(%rbx) + adcxq %rax, %r10 + adoxq %rcx, %r8 + movq %r10, 88(%rbx) + movq 104(%rdi), %r9 + movq 112(%rdi), %r10 # A[6] * B[6] mulx 48(%rbp), %rax, %rcx - movq %r9, 88(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 + adcxq %rax, %r8 + adoxq %rcx, %r9 # A[6] * B[7] mulx 56(%rbp), %rax, %rcx - movq %r10, 96(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 104(%rsp) - movq 120(%rsp), %r8 - movq 128(%rsp), %r9 - movq 136(%rsp), %r10 - movq 144(%rsp), %r11 + movq %r8, 96(%rdi) + adcxq %rax, %r9 + adoxq %rcx, %r10 + movq %r9, 104(%rdi) + movq 120(%rdi), %r8 + movq 128(%rdi), %r9 # A[6] * B[8] mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r12 + adcxq %rax, %r10 adoxq %rcx, %r8 # A[6] * B[9] mulx 72(%rbp), %rax, %rcx - movq %r12, 112(%rsp) + movq %r10, 112(%rdi) adcxq %rax, %r8 adoxq %rcx, %r9 + movq %r8, 120(%rdi) + movq 136(%rdi), %r10 # A[6] * B[10] mulx 80(%rbp), %rax, %rcx - movq %r8, 120(%rsp) adcxq %rax, %r9 adoxq %rcx, %r10 # A[6] * B[11] mulx 88(%rbp), %rax, %rcx - movq %r9, 128(%rsp) + movq %r9, 128(%rdi) + movq %r12, %r8 adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 136(%rsp) - movq 152(%rsp), %r12 - movq 160(%rsp), %r8 - movq 168(%rsp), %r9 - movq %r15, %r10 - # A[6] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[6] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r11, 144(%rsp) - adcxq %rax, %r12 adoxq %rcx, %r8 - # A[6] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r12, 152(%rsp) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[6] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r8, 160(%rsp) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 168(%rsp) - movq %rbx, %r11 - movq 192(%rdi), %r12 - movq 200(%rdi), %r8 - movq 208(%rdi), %r9 - # A[6] * B[16] - mulx 128(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[6] * B[17] - mulx 136(%rbp), %rax, %rcx - movq %r10, %r15 - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[6] * B[18] - mulx 144(%rbp), %rax, %rcx - movq %r11, %rbx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[6] * B[19] - mulx 152(%rbp), %rax, %rcx - movq %r12, 192(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 200(%rdi) - movq 216(%rdi), %r10 - movq 224(%rdi), %r11 - movq 232(%rdi), %r12 - # A[6] * B[20] - mulx 160(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[6] * B[21] - mulx 168(%rbp), %rax, %rcx - movq %r9, 208(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[6] * B[22] - mulx 176(%rbp), %rax, %rcx - movq %r10, 216(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[6] * B[23] - mulx 184(%rbp), %rax, %rcx - movq %r11, 224(%rdi) - movq %r14, %r8 - adcxq %rax, %r12 - adoxq %rcx, %r8 - adcxq %r13, %r8 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r12, 232(%rdi) - movq %r8, 240(%rdi) + adcxq %r11, %r8 + movq %r12, %r11 + adoxq %r12, %r11 + adcxq %r12, %r11 + movq %r10, 136(%rdi) + movq %r8, 144(%rdi) movq 56(%rsi), %rdx - movq 56(%rsp), %r10 - movq 64(%rsp), %r11 - movq 72(%rsp), %r12 - movq 80(%rsp), %r8 - movq 88(%rsp), %r9 + movq 56(%rbx), %r9 + movq 64(%rbx), %r10 + movq 72(%rbx), %r8 # A[7] * B[0] mulx (%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[7] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r10, 56(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[7] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r11, 64(%rsp) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[7] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r12, 72(%rsp) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 80(%rsp) - movq 96(%rsp), %r10 - movq 104(%rsp), %r11 - movq 112(%rsp), %r12 - movq 120(%rsp), %r8 - # A[7] * B[4] - mulx 32(%rbp), %rax, %rcx adcxq %rax, %r9 adoxq %rcx, %r10 + # A[7] * B[1] + mulx 8(%rbp), %rax, %rcx + movq %r9, 56(%rbx) + adcxq %rax, %r10 + adoxq %rcx, %r8 + movq %r10, 64(%rbx) + movq 80(%rbx), %r9 + movq 88(%rbx), %r10 + # A[7] * B[2] + mulx 16(%rbp), %rax, %rcx + adcxq %rax, %r8 + adoxq %rcx, %r9 + # A[7] * B[3] + mulx 24(%rbp), %rax, %rcx + movq %r8, 72(%rbx) + adcxq %rax, %r9 + adoxq %rcx, %r10 + movq %r9, 80(%rbx) + movq 96(%rdi), %r8 + movq 104(%rdi), %r9 + # A[7] * B[4] + mulx 32(%rbp), %rax, %rcx + adcxq %rax, %r10 + adoxq %rcx, %r8 # A[7] * B[5] mulx 40(%rbp), %rax, %rcx - movq %r9, 88(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 + movq %r10, 88(%rbx) + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r8, 96(%rdi) + movq 112(%rdi), %r10 + movq 120(%rdi), %r8 # A[7] * B[6] mulx 48(%rbp), %rax, %rcx - movq %r10, 96(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 + adcxq %rax, %r9 + adoxq %rcx, %r10 # A[7] * B[7] mulx 56(%rbp), %rax, %rcx - movq %r11, 104(%rsp) - adcxq %rax, %r12 + movq %r9, 104(%rdi) + adcxq %rax, %r10 adoxq %rcx, %r8 - movq %r12, 112(%rsp) - movq 128(%rsp), %r9 - movq 136(%rsp), %r10 - movq 144(%rsp), %r11 - movq 152(%rsp), %r12 + movq %r10, 112(%rdi) + movq 128(%rdi), %r9 + movq 136(%rdi), %r10 # A[7] * B[8] mulx 64(%rbp), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 # A[7] * B[9] mulx 72(%rbp), %rax, %rcx - movq %r8, 120(%rsp) + movq %r8, 120(%rdi) adcxq %rax, %r9 adoxq %rcx, %r10 + movq %r9, 128(%rdi) + movq 144(%rdi), %r8 # A[7] * B[10] mulx 80(%rbp), %rax, %rcx - movq %r9, 128(%rsp) adcxq %rax, %r10 - adoxq %rcx, %r11 + adoxq %rcx, %r8 # A[7] * B[11] mulx 88(%rbp), %rax, %rcx - movq %r10, 136(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 144(%rsp) - movq 160(%rsp), %r8 - movq 168(%rsp), %r9 - movq %r15, %r10 - movq %rbx, %r11 - # A[7] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[7] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r12, 152(%rsp) + movq %r10, 136(%rdi) + movq %r12, %r9 adcxq %rax, %r8 adoxq %rcx, %r9 - # A[7] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r8, 160(%rsp) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[7] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r9, 168(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, %r15 - movq 192(%rdi), %r12 - movq 200(%rdi), %r8 - movq 208(%rdi), %r9 - movq 216(%rdi), %r10 - # A[7] * B[16] - mulx 128(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[7] * B[17] - mulx 136(%rbp), %rax, %rcx - movq %r11, %rbx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[7] * B[18] - mulx 144(%rbp), %rax, %rcx - movq %r12, 192(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[7] * B[19] - mulx 152(%rbp), %rax, %rcx - movq %r8, 200(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 208(%rdi) - movq 224(%rdi), %r11 - movq 232(%rdi), %r12 - movq 240(%rdi), %r8 - # A[7] * B[20] - mulx 160(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[7] * B[21] - mulx 168(%rbp), %rax, %rcx - movq %r10, 216(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[7] * B[22] - mulx 176(%rbp), %rax, %rcx - movq %r11, 224(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[7] * B[23] - mulx 184(%rbp), %rax, %rcx - movq %r12, 232(%rdi) - movq %r14, %r9 - adcxq %rax, %r8 - adoxq %rcx, %r9 - adcxq %r13, %r9 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r8, 240(%rdi) - movq %r9, 248(%rdi) + adcxq %r11, %r9 + movq %r12, %r11 + adoxq %r12, %r11 + adcxq %r12, %r11 + movq %r8, 144(%rdi) + movq %r9, 152(%rdi) movq 64(%rsi), %rdx - movq 64(%rsp), %r11 - movq 72(%rsp), %r12 - movq 80(%rsp), %r8 - movq 88(%rsp), %r9 - movq 96(%rsp), %r10 + movq 64(%rbx), %r10 + movq 72(%rbx), %r8 + movq 80(%rbx), %r9 # A[8] * B[0] mulx (%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 + adcxq %rax, %r10 + adoxq %rcx, %r8 # A[8] * B[1] mulx 8(%rbp), %rax, %rcx - movq %r11, 64(%rsp) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[8] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r12, 72(%rsp) + movq %r10, 64(%rbx) adcxq %rax, %r8 adoxq %rcx, %r9 - # A[8] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r8, 80(%rsp) + movq %r8, 72(%rbx) + movq 88(%rbx), %r10 + movq 96(%rdi), %r8 + # A[8] * B[2] + mulx 16(%rbp), %rax, %rcx adcxq %rax, %r9 adoxq %rcx, %r10 - movq %r9, 88(%rsp) - movq 104(%rsp), %r11 - movq 112(%rsp), %r12 - movq 120(%rsp), %r8 - movq 128(%rsp), %r9 + # A[8] * B[3] + mulx 24(%rbp), %rax, %rcx + movq %r9, 80(%rbx) + adcxq %rax, %r10 + adoxq %rcx, %r8 + movq %r10, 88(%rbx) + movq 104(%rdi), %r9 + movq 112(%rdi), %r10 # A[8] * B[4] mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 + adcxq %rax, %r8 + adoxq %rcx, %r9 # A[8] * B[5] mulx 40(%rbp), %rax, %rcx - movq %r10, 96(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 + movq %r8, 96(%rdi) + adcxq %rax, %r9 + adoxq %rcx, %r10 + movq %r9, 104(%rdi) + movq 120(%rdi), %r8 + movq 128(%rdi), %r9 # A[8] * B[6] mulx 48(%rbp), %rax, %rcx - movq %r11, 104(%rsp) - adcxq %rax, %r12 + adcxq %rax, %r10 adoxq %rcx, %r8 # A[8] * B[7] mulx 56(%rbp), %rax, %rcx - movq %r12, 112(%rsp) + movq %r10, 112(%rdi) adcxq %rax, %r8 adoxq %rcx, %r9 - movq %r8, 120(%rsp) - movq 136(%rsp), %r10 - movq 144(%rsp), %r11 - movq 152(%rsp), %r12 - movq 160(%rsp), %r8 + movq %r8, 120(%rdi) + movq 136(%rdi), %r10 + movq 144(%rdi), %r8 # A[8] * B[8] mulx 64(%rbp), %rax, %rcx adcxq %rax, %r9 adoxq %rcx, %r10 # A[8] * B[9] mulx 72(%rbp), %rax, %rcx - movq %r9, 128(%rsp) + movq %r9, 128(%rdi) adcxq %rax, %r10 - adoxq %rcx, %r11 + adoxq %rcx, %r8 + movq %r10, 136(%rdi) + movq 152(%rdi), %r9 # A[8] * B[10] mulx 80(%rbp), %rax, %rcx - movq %r10, 136(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 + adcxq %rax, %r8 + adoxq %rcx, %r9 # A[8] * B[11] mulx 88(%rbp), %rax, %rcx - movq %r11, 144(%rsp) - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 152(%rsp) - movq 168(%rsp), %r9 - movq %r15, %r10 - movq %rbx, %r11 - movq 192(%rdi), %r12 - # A[8] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[8] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r8, 160(%rsp) + movq %r8, 144(%rdi) + movq %r12, %r10 adcxq %rax, %r9 adoxq %rcx, %r10 - # A[8] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r9, 168(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[8] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r10, %r15 - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, %rbx - movq 200(%rdi), %r8 - movq 208(%rdi), %r9 - movq 216(%rdi), %r10 - movq 224(%rdi), %r11 - # A[8] * B[16] - mulx 128(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[8] * B[17] - mulx 136(%rbp), %rax, %rcx - movq %r12, 192(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[8] * B[18] - mulx 144(%rbp), %rax, %rcx - movq %r8, 200(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[8] * B[19] - mulx 152(%rbp), %rax, %rcx - movq %r9, 208(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 216(%rdi) - movq 232(%rdi), %r12 - movq 240(%rdi), %r8 - movq 248(%rdi), %r9 - # A[8] * B[20] - mulx 160(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[8] * B[21] - mulx 168(%rbp), %rax, %rcx - movq %r11, 224(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[8] * B[22] - mulx 176(%rbp), %rax, %rcx - movq %r12, 232(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[8] * B[23] - mulx 184(%rbp), %rax, %rcx - movq %r8, 240(%rdi) - movq %r14, %r10 - adcxq %rax, %r9 - adoxq %rcx, %r10 - adcxq %r13, %r10 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r9, 248(%rdi) - movq %r10, 256(%rdi) + adcxq %r11, %r10 + movq %r12, %r11 + adoxq %r12, %r11 + adcxq %r12, %r11 + movq %r9, 152(%rdi) + movq %r10, 160(%rdi) movq 72(%rsi), %rdx - movq 72(%rsp), %r12 - movq 80(%rsp), %r8 - movq 88(%rsp), %r9 - movq 96(%rsp), %r10 - movq 104(%rsp), %r11 + movq 72(%rbx), %r8 + movq 80(%rbx), %r9 + movq 88(%rbx), %r10 # A[9] * B[0] mulx (%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[9] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r12, 72(%rsp) adcxq %rax, %r8 adoxq %rcx, %r9 - # A[9] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r8, 80(%rsp) + # A[9] * B[1] + mulx 8(%rbp), %rax, %rcx + movq %r8, 72(%rbx) adcxq %rax, %r9 adoxq %rcx, %r10 + movq %r9, 80(%rbx) + movq 96(%rdi), %r8 + movq 104(%rdi), %r9 + # A[9] * B[2] + mulx 16(%rbp), %rax, %rcx + adcxq %rax, %r10 + adoxq %rcx, %r8 # A[9] * B[3] mulx 24(%rbp), %rax, %rcx - movq %r9, 88(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 96(%rsp) - movq 112(%rsp), %r12 - movq 120(%rsp), %r8 - movq 128(%rsp), %r9 - movq 136(%rsp), %r10 + movq %r10, 88(%rbx) + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r8, 96(%rdi) + movq 112(%rdi), %r10 + movq 120(%rdi), %r8 # A[9] * B[4] mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 + adcxq %rax, %r9 + adoxq %rcx, %r10 # A[9] * B[5] mulx 40(%rbp), %rax, %rcx - movq %r11, 104(%rsp) - adcxq %rax, %r12 + movq %r9, 104(%rdi) + adcxq %rax, %r10 adoxq %rcx, %r8 + movq %r10, 112(%rdi) + movq 128(%rdi), %r9 + movq 136(%rdi), %r10 # A[9] * B[6] mulx 48(%rbp), %rax, %rcx - movq %r12, 112(%rsp) adcxq %rax, %r8 adoxq %rcx, %r9 # A[9] * B[7] mulx 56(%rbp), %rax, %rcx - movq %r8, 120(%rsp) + movq %r8, 120(%rdi) adcxq %rax, %r9 adoxq %rcx, %r10 - movq %r9, 128(%rsp) - movq 144(%rsp), %r11 - movq 152(%rsp), %r12 - movq 160(%rsp), %r8 - movq 168(%rsp), %r9 + movq %r9, 128(%rdi) + movq 144(%rdi), %r8 + movq 152(%rdi), %r9 # A[9] * B[8] mulx 64(%rbp), %rax, %rcx adcxq %rax, %r10 - adoxq %rcx, %r11 + adoxq %rcx, %r8 # A[9] * B[9] mulx 72(%rbp), %rax, %rcx - movq %r10, 136(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 + movq %r10, 136(%rdi) + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r8, 144(%rdi) + movq 160(%rdi), %r10 # A[9] * B[10] mulx 80(%rbp), %rax, %rcx - movq %r11, 144(%rsp) - adcxq %rax, %r12 - adoxq %rcx, %r8 + adcxq %rax, %r9 + adoxq %rcx, %r10 # A[9] * B[11] mulx 88(%rbp), %rax, %rcx - movq %r12, 152(%rsp) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 160(%rsp) - movq %r15, %r10 - movq %rbx, %r11 - movq 192(%rdi), %r12 - movq 200(%rdi), %r8 - # A[9] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[9] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r9, 168(%rsp) + movq %r9, 152(%rdi) + movq %r12, %r8 adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[9] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r10, %r15 - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[9] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r11, %rbx - adcxq %rax, %r12 adoxq %rcx, %r8 - movq %r12, 192(%rdi) - movq 208(%rdi), %r9 - movq 216(%rdi), %r10 - movq 224(%rdi), %r11 - movq 232(%rdi), %r12 - # A[9] * B[16] - mulx 128(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[9] * B[17] - mulx 136(%rbp), %rax, %rcx - movq %r8, 200(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[9] * B[18] - mulx 144(%rbp), %rax, %rcx - movq %r9, 208(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[9] * B[19] - mulx 152(%rbp), %rax, %rcx - movq %r10, 216(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 224(%rdi) - movq 240(%rdi), %r8 - movq 248(%rdi), %r9 - movq 256(%rdi), %r10 - # A[9] * B[20] - mulx 160(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[9] * B[21] - mulx 168(%rbp), %rax, %rcx - movq %r12, 232(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[9] * B[22] - mulx 176(%rbp), %rax, %rcx - movq %r8, 240(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[9] * B[23] - mulx 184(%rbp), %rax, %rcx - movq %r9, 248(%rdi) - movq %r14, %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - adcxq %r13, %r11 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r10, 256(%rdi) - movq %r11, 264(%rdi) + adcxq %r11, %r8 + movq %r12, %r11 + adoxq %r12, %r11 + adcxq %r12, %r11 + movq %r10, 160(%rdi) + movq %r8, 168(%rdi) movq 80(%rsi), %rdx - movq 80(%rsp), %r8 - movq 88(%rsp), %r9 - movq 96(%rsp), %r10 - movq 104(%rsp), %r11 - movq 112(%rsp), %r12 + movq 80(%rbx), %r9 + movq 88(%rbx), %r10 + movq 96(%rdi), %r8 # A[10] * B[0] mulx (%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[10] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r8, 80(%rsp) adcxq %rax, %r9 adoxq %rcx, %r10 + # A[10] * B[1] + mulx 8(%rbp), %rax, %rcx + movq %r9, 80(%rbx) + adcxq %rax, %r10 + adoxq %rcx, %r8 + movq %r10, 88(%rbx) + movq 104(%rdi), %r9 + movq 112(%rdi), %r10 # A[10] * B[2] mulx 16(%rbp), %rax, %rcx - movq %r9, 88(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 + adcxq %rax, %r8 + adoxq %rcx, %r9 # A[10] * B[3] mulx 24(%rbp), %rax, %rcx - movq %r10, 96(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 104(%rsp) - movq 120(%rsp), %r8 - movq 128(%rsp), %r9 - movq 136(%rsp), %r10 - movq 144(%rsp), %r11 + movq %r8, 96(%rdi) + adcxq %rax, %r9 + adoxq %rcx, %r10 + movq %r9, 104(%rdi) + movq 120(%rdi), %r8 + movq 128(%rdi), %r9 # A[10] * B[4] mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r12 + adcxq %rax, %r10 adoxq %rcx, %r8 # A[10] * B[5] mulx 40(%rbp), %rax, %rcx - movq %r12, 112(%rsp) + movq %r10, 112(%rdi) adcxq %rax, %r8 adoxq %rcx, %r9 + movq %r8, 120(%rdi) + movq 136(%rdi), %r10 + movq 144(%rdi), %r8 # A[10] * B[6] mulx 48(%rbp), %rax, %rcx - movq %r8, 120(%rsp) adcxq %rax, %r9 adoxq %rcx, %r10 # A[10] * B[7] mulx 56(%rbp), %rax, %rcx - movq %r9, 128(%rsp) + movq %r9, 128(%rdi) adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 136(%rsp) - movq 152(%rsp), %r12 - movq 160(%rsp), %r8 - movq 168(%rsp), %r9 - movq %r15, %r10 + adoxq %rcx, %r8 + movq %r10, 136(%rdi) + movq 152(%rdi), %r9 + movq 160(%rdi), %r10 # A[10] * B[8] mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 + adcxq %rax, %r8 + adoxq %rcx, %r9 # A[10] * B[9] mulx 72(%rbp), %rax, %rcx - movq %r11, 144(%rsp) - adcxq %rax, %r12 - adoxq %rcx, %r8 + movq %r8, 144(%rdi) + adcxq %rax, %r9 + adoxq %rcx, %r10 + movq %r9, 152(%rdi) + movq 168(%rdi), %r8 # A[10] * B[10] mulx 80(%rbp), %rax, %rcx - movq %r12, 152(%rsp) - adcxq %rax, %r8 - adoxq %rcx, %r9 + adcxq %rax, %r10 + adoxq %rcx, %r8 # A[10] * B[11] mulx 88(%rbp), %rax, %rcx - movq %r8, 160(%rsp) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 168(%rsp) - movq %rbx, %r11 - movq 192(%rdi), %r12 - movq 200(%rdi), %r8 - movq 208(%rdi), %r9 - # A[10] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[10] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r10, %r15 - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[10] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r11, %rbx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[10] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r12, 192(%rdi) + movq %r10, 160(%rdi) + movq %r12, %r9 adcxq %rax, %r8 adoxq %rcx, %r9 - movq %r8, 200(%rdi) - movq 216(%rdi), %r10 - movq 224(%rdi), %r11 - movq 232(%rdi), %r12 - movq 240(%rdi), %r8 - # A[10] * B[16] - mulx 128(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[10] * B[17] - mulx 136(%rbp), %rax, %rcx - movq %r9, 208(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[10] * B[18] - mulx 144(%rbp), %rax, %rcx - movq %r10, 216(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[10] * B[19] - mulx 152(%rbp), %rax, %rcx - movq %r11, 224(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 232(%rdi) - movq 248(%rdi), %r9 - movq 256(%rdi), %r10 - movq 264(%rdi), %r11 - # A[10] * B[20] - mulx 160(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[10] * B[21] - mulx 168(%rbp), %rax, %rcx - movq %r8, 240(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[10] * B[22] - mulx 176(%rbp), %rax, %rcx - movq %r9, 248(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[10] * B[23] - mulx 184(%rbp), %rax, %rcx - movq %r10, 256(%rdi) - movq %r14, %r12 - adcxq %rax, %r11 - adoxq %rcx, %r12 - adcxq %r13, %r12 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r11, 264(%rdi) - movq %r12, 272(%rdi) + adcxq %r11, %r9 + movq %r12, %r11 + adoxq %r12, %r11 + adcxq %r12, %r11 + movq %r8, 168(%rdi) + movq %r9, 176(%rdi) movq 88(%rsi), %rdx - movq 88(%rsp), %r9 - movq 96(%rsp), %r10 - movq 104(%rsp), %r11 - movq 112(%rsp), %r12 - movq 120(%rsp), %r8 + movq 88(%rbx), %r10 + movq 96(%rdi), %r8 + movq 104(%rdi), %r9 # A[11] * B[0] mulx (%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 + adcxq %rax, %r10 + adoxq %rcx, %r8 # A[11] * B[1] mulx 8(%rbp), %rax, %rcx - movq %r9, 88(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 + movq %r10, 88(%rbx) + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r8, 96(%rdi) + movq 112(%rdi), %r10 + movq 120(%rdi), %r8 # A[11] * B[2] mulx 16(%rbp), %rax, %rcx - movq %r10, 96(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 + adcxq %rax, %r9 + adoxq %rcx, %r10 # A[11] * B[3] mulx 24(%rbp), %rax, %rcx - movq %r11, 104(%rsp) - adcxq %rax, %r12 + movq %r9, 104(%rdi) + adcxq %rax, %r10 adoxq %rcx, %r8 - movq %r12, 112(%rsp) - movq 128(%rsp), %r9 - movq 136(%rsp), %r10 - movq 144(%rsp), %r11 - movq 152(%rsp), %r12 + movq %r10, 112(%rdi) + movq 128(%rdi), %r9 + movq 136(%rdi), %r10 # A[11] * B[4] mulx 32(%rbp), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 # A[11] * B[5] mulx 40(%rbp), %rax, %rcx - movq %r8, 120(%rsp) + movq %r8, 120(%rdi) adcxq %rax, %r9 adoxq %rcx, %r10 + movq %r9, 128(%rdi) + movq 144(%rdi), %r8 + movq 152(%rdi), %r9 # A[11] * B[6] mulx 48(%rbp), %rax, %rcx - movq %r9, 128(%rsp) adcxq %rax, %r10 - adoxq %rcx, %r11 + adoxq %rcx, %r8 # A[11] * B[7] mulx 56(%rbp), %rax, %rcx - movq %r10, 136(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 144(%rsp) - movq 160(%rsp), %r8 - movq 168(%rsp), %r9 - movq %r15, %r10 - movq %rbx, %r11 + movq %r10, 136(%rdi) + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r8, 144(%rdi) + movq 160(%rdi), %r10 + movq 168(%rdi), %r8 # A[11] * B[8] mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 + adcxq %rax, %r9 + adoxq %rcx, %r10 # A[11] * B[9] mulx 72(%rbp), %rax, %rcx - movq %r12, 152(%rsp) - adcxq %rax, %r8 - adoxq %rcx, %r9 + movq %r9, 152(%rdi) + adcxq %rax, %r10 + adoxq %rcx, %r8 + movq %r10, 160(%rdi) + movq 176(%rdi), %r9 # A[11] * B[10] mulx 80(%rbp), %rax, %rcx - movq %r8, 160(%rsp) - adcxq %rax, %r9 - adoxq %rcx, %r10 + adcxq %rax, %r8 + adoxq %rcx, %r9 # A[11] * B[11] mulx 88(%rbp), %rax, %rcx - movq %r9, 168(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, %r15 - movq 192(%rdi), %r12 - movq 200(%rdi), %r8 - movq 208(%rdi), %r9 - movq 216(%rdi), %r10 - # A[11] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[11] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r11, %rbx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[11] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r12, 192(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[11] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r8, 200(%rdi) + movq %r8, 168(%rdi) + movq %r12, %r10 adcxq %rax, %r9 adoxq %rcx, %r10 - movq %r9, 208(%rdi) - movq 224(%rdi), %r11 - movq 232(%rdi), %r12 - movq 240(%rdi), %r8 - movq 248(%rdi), %r9 - # A[11] * B[16] - mulx 128(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[11] * B[17] - mulx 136(%rbp), %rax, %rcx - movq %r10, 216(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[11] * B[18] - mulx 144(%rbp), %rax, %rcx - movq %r11, 224(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[11] * B[19] - mulx 152(%rbp), %rax, %rcx - movq %r12, 232(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 240(%rdi) - movq 256(%rdi), %r10 - movq 264(%rdi), %r11 - movq 272(%rdi), %r12 - # A[11] * B[20] - mulx 160(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[11] * B[21] - mulx 168(%rbp), %rax, %rcx - movq %r9, 248(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[11] * B[22] - mulx 176(%rbp), %rax, %rcx - movq %r10, 256(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[11] * B[23] - mulx 184(%rbp), %rax, %rcx - movq %r11, 264(%rdi) - movq %r14, %r8 - adcxq %rax, %r12 - adoxq %rcx, %r8 - adcxq %r13, %r8 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r12, 272(%rdi) - movq %r8, 280(%rdi) - movq 96(%rsi), %rdx - movq 96(%rsp), %r10 - movq 104(%rsp), %r11 - movq 112(%rsp), %r12 - movq 120(%rsp), %r8 - movq 128(%rsp), %r9 - # A[12] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[12] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r10, 96(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[12] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r11, 104(%rsp) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[12] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r12, 112(%rsp) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 120(%rsp) - movq 136(%rsp), %r10 - movq 144(%rsp), %r11 - movq 152(%rsp), %r12 - movq 160(%rsp), %r8 - # A[12] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[12] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r9, 128(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[12] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r10, 136(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[12] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r11, 144(%rsp) - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 152(%rsp) - movq 168(%rsp), %r9 - movq %r15, %r10 - movq %rbx, %r11 - movq 192(%rdi), %r12 - # A[12] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[12] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r8, 160(%rsp) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[12] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r9, 168(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[12] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r10, %r15 - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, %rbx - movq 200(%rdi), %r8 - movq 208(%rdi), %r9 - movq 216(%rdi), %r10 - movq 224(%rdi), %r11 - # A[12] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[12] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r12, 192(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[12] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r8, 200(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[12] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r9, 208(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 216(%rdi) - movq 232(%rdi), %r12 - movq 240(%rdi), %r8 - movq 248(%rdi), %r9 - movq 256(%rdi), %r10 - # A[12] * B[16] - mulx 128(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[12] * B[17] - mulx 136(%rbp), %rax, %rcx - movq %r11, 224(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[12] * B[18] - mulx 144(%rbp), %rax, %rcx - movq %r12, 232(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[12] * B[19] - mulx 152(%rbp), %rax, %rcx - movq %r8, 240(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 248(%rdi) - movq 264(%rdi), %r11 - movq 272(%rdi), %r12 - movq 280(%rdi), %r8 - # A[12] * B[20] - mulx 160(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[12] * B[21] - mulx 168(%rbp), %rax, %rcx - movq %r10, 256(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[12] * B[22] - mulx 176(%rbp), %rax, %rcx - movq %r11, 264(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[12] * B[23] - mulx 184(%rbp), %rax, %rcx - movq %r12, 272(%rdi) - movq %r14, %r9 - adcxq %rax, %r8 - adoxq %rcx, %r9 - adcxq %r13, %r9 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r8, 280(%rdi) - movq %r9, 288(%rdi) - movq 104(%rsi), %rdx - movq 104(%rsp), %r11 - movq 112(%rsp), %r12 - movq 120(%rsp), %r8 - movq 128(%rsp), %r9 - movq 136(%rsp), %r10 - # A[13] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[13] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r11, 104(%rsp) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[13] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r12, 112(%rsp) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[13] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r8, 120(%rsp) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 128(%rsp) - movq 144(%rsp), %r11 - movq 152(%rsp), %r12 - movq 160(%rsp), %r8 - movq 168(%rsp), %r9 - # A[13] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[13] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r10, 136(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[13] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r11, 144(%rsp) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[13] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r12, 152(%rsp) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 160(%rsp) - movq %r15, %r10 - movq %rbx, %r11 - movq 192(%rdi), %r12 - movq 200(%rdi), %r8 - # A[13] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[13] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r9, 168(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[13] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r10, %r15 - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[13] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r11, %rbx - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 192(%rdi) - movq 208(%rdi), %r9 - movq 216(%rdi), %r10 - movq 224(%rdi), %r11 - movq 232(%rdi), %r12 - # A[13] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[13] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r8, 200(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[13] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r9, 208(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[13] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r10, 216(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 224(%rdi) - movq 240(%rdi), %r8 - movq 248(%rdi), %r9 - movq 256(%rdi), %r10 - movq 264(%rdi), %r11 - # A[13] * B[16] - mulx 128(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[13] * B[17] - mulx 136(%rbp), %rax, %rcx - movq %r12, 232(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[13] * B[18] - mulx 144(%rbp), %rax, %rcx - movq %r8, 240(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[13] * B[19] - mulx 152(%rbp), %rax, %rcx - movq %r9, 248(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 256(%rdi) - movq 272(%rdi), %r12 - movq 280(%rdi), %r8 - movq 288(%rdi), %r9 - # A[13] * B[20] - mulx 160(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[13] * B[21] - mulx 168(%rbp), %rax, %rcx - movq %r11, 264(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[13] * B[22] - mulx 176(%rbp), %rax, %rcx - movq %r12, 272(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[13] * B[23] - mulx 184(%rbp), %rax, %rcx - movq %r8, 280(%rdi) - movq %r14, %r10 - adcxq %rax, %r9 - adoxq %rcx, %r10 - adcxq %r13, %r10 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r9, 288(%rdi) - movq %r10, 296(%rdi) - movq 112(%rsi), %rdx - movq 112(%rsp), %r12 - movq 120(%rsp), %r8 - movq 128(%rsp), %r9 - movq 136(%rsp), %r10 - movq 144(%rsp), %r11 - # A[14] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[14] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r12, 112(%rsp) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[14] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r8, 120(%rsp) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[14] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r9, 128(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 136(%rsp) - movq 152(%rsp), %r12 - movq 160(%rsp), %r8 - movq 168(%rsp), %r9 - movq %r15, %r10 - # A[14] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[14] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r11, 144(%rsp) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[14] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r12, 152(%rsp) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[14] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r8, 160(%rsp) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 168(%rsp) - movq %rbx, %r11 - movq 192(%rdi), %r12 - movq 200(%rdi), %r8 - movq 208(%rdi), %r9 - # A[14] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[14] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r10, %r15 - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[14] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r11, %rbx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[14] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r12, 192(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 200(%rdi) - movq 216(%rdi), %r10 - movq 224(%rdi), %r11 - movq 232(%rdi), %r12 - movq 240(%rdi), %r8 - # A[14] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[14] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r9, 208(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[14] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r10, 216(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[14] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r11, 224(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 232(%rdi) - movq 248(%rdi), %r9 - movq 256(%rdi), %r10 - movq 264(%rdi), %r11 - movq 272(%rdi), %r12 - # A[14] * B[16] - mulx 128(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[14] * B[17] - mulx 136(%rbp), %rax, %rcx - movq %r8, 240(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[14] * B[18] - mulx 144(%rbp), %rax, %rcx - movq %r9, 248(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[14] * B[19] - mulx 152(%rbp), %rax, %rcx - movq %r10, 256(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 264(%rdi) - movq 280(%rdi), %r8 - movq 288(%rdi), %r9 - movq 296(%rdi), %r10 - # A[14] * B[20] - mulx 160(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[14] * B[21] - mulx 168(%rbp), %rax, %rcx - movq %r12, 272(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[14] * B[22] - mulx 176(%rbp), %rax, %rcx - movq %r8, 280(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[14] * B[23] - mulx 184(%rbp), %rax, %rcx - movq %r9, 288(%rdi) - movq %r14, %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - adcxq %r13, %r11 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r10, 296(%rdi) - movq %r11, 304(%rdi) - movq 120(%rsi), %rdx - movq 120(%rsp), %r8 - movq 128(%rsp), %r9 - movq 136(%rsp), %r10 - movq 144(%rsp), %r11 - movq 152(%rsp), %r12 - # A[15] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[15] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r8, 120(%rsp) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[15] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r9, 128(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[15] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r10, 136(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 144(%rsp) - movq 160(%rsp), %r8 - movq 168(%rsp), %r9 - movq %r15, %r10 - movq %rbx, %r11 - # A[15] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[15] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r12, 152(%rsp) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[15] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r8, 160(%rsp) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[15] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r9, 168(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, %r15 - movq 192(%rdi), %r12 - movq 200(%rdi), %r8 - movq 208(%rdi), %r9 - movq 216(%rdi), %r10 - # A[15] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[15] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r11, %rbx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[15] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r12, 192(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[15] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r8, 200(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 208(%rdi) - movq 224(%rdi), %r11 - movq 232(%rdi), %r12 - movq 240(%rdi), %r8 - movq 248(%rdi), %r9 - # A[15] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[15] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r10, 216(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[15] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r11, 224(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[15] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r12, 232(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 240(%rdi) - movq 256(%rdi), %r10 - movq 264(%rdi), %r11 - movq 272(%rdi), %r12 - movq 280(%rdi), %r8 - # A[15] * B[16] - mulx 128(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[15] * B[17] - mulx 136(%rbp), %rax, %rcx - movq %r9, 248(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[15] * B[18] - mulx 144(%rbp), %rax, %rcx - movq %r10, 256(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[15] * B[19] - mulx 152(%rbp), %rax, %rcx - movq %r11, 264(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 272(%rdi) - movq 288(%rdi), %r9 - movq 296(%rdi), %r10 - movq 304(%rdi), %r11 - # A[15] * B[20] - mulx 160(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[15] * B[21] - mulx 168(%rbp), %rax, %rcx - movq %r8, 280(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[15] * B[22] - mulx 176(%rbp), %rax, %rcx - movq %r9, 288(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[15] * B[23] - mulx 184(%rbp), %rax, %rcx - movq %r10, 296(%rdi) - movq %r14, %r12 - adcxq %rax, %r11 - adoxq %rcx, %r12 - adcxq %r13, %r12 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r11, 304(%rdi) - movq %r12, 312(%rdi) - movq 128(%rsi), %rdx - movq 128(%rsp), %r9 - movq 136(%rsp), %r10 - movq 144(%rsp), %r11 - movq 152(%rsp), %r12 - movq 160(%rsp), %r8 - # A[16] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[16] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r9, 128(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[16] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r10, 136(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[16] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r11, 144(%rsp) - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 152(%rsp) - movq 168(%rsp), %r9 - movq %r15, %r10 - movq %rbx, %r11 - movq 192(%rdi), %r12 - # A[16] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[16] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r8, 160(%rsp) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[16] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r9, 168(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[16] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r10, %r15 - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, %rbx - movq 200(%rdi), %r8 - movq 208(%rdi), %r9 - movq 216(%rdi), %r10 - movq 224(%rdi), %r11 - # A[16] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[16] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r12, 192(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[16] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r8, 200(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[16] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r9, 208(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 216(%rdi) - movq 232(%rdi), %r12 - movq 240(%rdi), %r8 - movq 248(%rdi), %r9 - movq 256(%rdi), %r10 - # A[16] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[16] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r11, 224(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[16] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r12, 232(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[16] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r8, 240(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 248(%rdi) - movq 264(%rdi), %r11 - movq 272(%rdi), %r12 - movq 280(%rdi), %r8 - movq 288(%rdi), %r9 - # A[16] * B[16] - mulx 128(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[16] * B[17] - mulx 136(%rbp), %rax, %rcx - movq %r10, 256(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[16] * B[18] - mulx 144(%rbp), %rax, %rcx - movq %r11, 264(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[16] * B[19] - mulx 152(%rbp), %rax, %rcx - movq %r12, 272(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 280(%rdi) - movq 296(%rdi), %r10 - movq 304(%rdi), %r11 - movq 312(%rdi), %r12 - # A[16] * B[20] - mulx 160(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[16] * B[21] - mulx 168(%rbp), %rax, %rcx - movq %r9, 288(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[16] * B[22] - mulx 176(%rbp), %rax, %rcx - movq %r10, 296(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[16] * B[23] - mulx 184(%rbp), %rax, %rcx - movq %r11, 304(%rdi) - movq %r14, %r8 - adcxq %rax, %r12 - adoxq %rcx, %r8 - adcxq %r13, %r8 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r12, 312(%rdi) - movq %r8, 320(%rdi) - movq 136(%rsi), %rdx - movq 136(%rsp), %r10 - movq 144(%rsp), %r11 - movq 152(%rsp), %r12 - movq 160(%rsp), %r8 - movq 168(%rsp), %r9 - # A[17] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[17] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r10, 136(%rsp) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[17] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r11, 144(%rsp) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[17] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r12, 152(%rsp) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 160(%rsp) - movq %r15, %r10 - movq %rbx, %r11 - movq 192(%rdi), %r12 - movq 200(%rdi), %r8 - # A[17] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[17] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r9, 168(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[17] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r10, %r15 - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[17] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r11, %rbx - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 192(%rdi) - movq 208(%rdi), %r9 - movq 216(%rdi), %r10 - movq 224(%rdi), %r11 - movq 232(%rdi), %r12 - # A[17] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[17] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r8, 200(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[17] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r9, 208(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[17] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r10, 216(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 224(%rdi) - movq 240(%rdi), %r8 - movq 248(%rdi), %r9 - movq 256(%rdi), %r10 - movq 264(%rdi), %r11 - # A[17] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[17] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r12, 232(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[17] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r8, 240(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[17] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r9, 248(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 256(%rdi) - movq 272(%rdi), %r12 - movq 280(%rdi), %r8 - movq 288(%rdi), %r9 - movq 296(%rdi), %r10 - # A[17] * B[16] - mulx 128(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[17] * B[17] - mulx 136(%rbp), %rax, %rcx - movq %r11, 264(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[17] * B[18] - mulx 144(%rbp), %rax, %rcx - movq %r12, 272(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[17] * B[19] - mulx 152(%rbp), %rax, %rcx - movq %r8, 280(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 288(%rdi) - movq 304(%rdi), %r11 - movq 312(%rdi), %r12 - movq 320(%rdi), %r8 - # A[17] * B[20] - mulx 160(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[17] * B[21] - mulx 168(%rbp), %rax, %rcx - movq %r10, 296(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[17] * B[22] - mulx 176(%rbp), %rax, %rcx - movq %r11, 304(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[17] * B[23] - mulx 184(%rbp), %rax, %rcx - movq %r12, 312(%rdi) - movq %r14, %r9 - adcxq %rax, %r8 - adoxq %rcx, %r9 - adcxq %r13, %r9 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r8, 320(%rdi) - movq %r9, 328(%rdi) - movq 144(%rsi), %rdx - movq 144(%rsp), %r11 - movq 152(%rsp), %r12 - movq 160(%rsp), %r8 - movq 168(%rsp), %r9 - movq %r15, %r10 - # A[18] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[18] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r11, 144(%rsp) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[18] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r12, 152(%rsp) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[18] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r8, 160(%rsp) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 168(%rsp) - movq %rbx, %r11 - movq 192(%rdi), %r12 - movq 200(%rdi), %r8 - movq 208(%rdi), %r9 - # A[18] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[18] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r10, %r15 - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[18] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r11, %rbx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[18] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r12, 192(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 200(%rdi) - movq 216(%rdi), %r10 - movq 224(%rdi), %r11 - movq 232(%rdi), %r12 - movq 240(%rdi), %r8 - # A[18] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[18] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r9, 208(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[18] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r10, 216(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[18] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r11, 224(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 232(%rdi) - movq 248(%rdi), %r9 - movq 256(%rdi), %r10 - movq 264(%rdi), %r11 - movq 272(%rdi), %r12 - # A[18] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[18] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r8, 240(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[18] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r9, 248(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[18] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r10, 256(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 264(%rdi) - movq 280(%rdi), %r8 - movq 288(%rdi), %r9 - movq 296(%rdi), %r10 - movq 304(%rdi), %r11 - # A[18] * B[16] - mulx 128(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[18] * B[17] - mulx 136(%rbp), %rax, %rcx - movq %r12, 272(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[18] * B[18] - mulx 144(%rbp), %rax, %rcx - movq %r8, 280(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[18] * B[19] - mulx 152(%rbp), %rax, %rcx - movq %r9, 288(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 296(%rdi) - movq 312(%rdi), %r12 - movq 320(%rdi), %r8 - movq 328(%rdi), %r9 - # A[18] * B[20] - mulx 160(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[18] * B[21] - mulx 168(%rbp), %rax, %rcx - movq %r11, 304(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[18] * B[22] - mulx 176(%rbp), %rax, %rcx - movq %r12, 312(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[18] * B[23] - mulx 184(%rbp), %rax, %rcx - movq %r8, 320(%rdi) - movq %r14, %r10 - adcxq %rax, %r9 - adoxq %rcx, %r10 - adcxq %r13, %r10 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r9, 328(%rdi) - movq %r10, 336(%rdi) - movq 152(%rsi), %rdx - movq 152(%rsp), %r12 - movq 160(%rsp), %r8 - movq 168(%rsp), %r9 - movq %r15, %r10 - movq %rbx, %r11 - # A[19] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[19] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r12, 152(%rsp) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[19] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r8, 160(%rsp) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[19] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r9, 168(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, %r15 - movq 192(%rdi), %r12 - movq 200(%rdi), %r8 - movq 208(%rdi), %r9 - movq 216(%rdi), %r10 - # A[19] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[19] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r11, %rbx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[19] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r12, 192(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[19] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r8, 200(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 208(%rdi) - movq 224(%rdi), %r11 - movq 232(%rdi), %r12 - movq 240(%rdi), %r8 - movq 248(%rdi), %r9 - # A[19] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[19] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r10, 216(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[19] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r11, 224(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[19] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r12, 232(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 240(%rdi) - movq 256(%rdi), %r10 - movq 264(%rdi), %r11 - movq 272(%rdi), %r12 - movq 280(%rdi), %r8 - # A[19] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[19] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r9, 248(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[19] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r10, 256(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[19] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r11, 264(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 272(%rdi) - movq 288(%rdi), %r9 - movq 296(%rdi), %r10 - movq 304(%rdi), %r11 - movq 312(%rdi), %r12 - # A[19] * B[16] - mulx 128(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[19] * B[17] - mulx 136(%rbp), %rax, %rcx - movq %r8, 280(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[19] * B[18] - mulx 144(%rbp), %rax, %rcx - movq %r9, 288(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[19] * B[19] - mulx 152(%rbp), %rax, %rcx - movq %r10, 296(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 304(%rdi) - movq 320(%rdi), %r8 - movq 328(%rdi), %r9 - movq 336(%rdi), %r10 - # A[19] * B[20] - mulx 160(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[19] * B[21] - mulx 168(%rbp), %rax, %rcx - movq %r12, 312(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[19] * B[22] - mulx 176(%rbp), %rax, %rcx - movq %r8, 320(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[19] * B[23] - mulx 184(%rbp), %rax, %rcx - movq %r9, 328(%rdi) - movq %r14, %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - adcxq %r13, %r11 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r10, 336(%rdi) - movq %r11, 344(%rdi) - movq 160(%rsi), %rdx - movq 160(%rsp), %r8 - movq 168(%rsp), %r9 - movq %r15, %r10 - movq %rbx, %r11 - movq 192(%rdi), %r12 - # A[20] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[20] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r8, 160(%rsp) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[20] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r9, 168(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[20] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r10, %r15 - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, %rbx - movq 200(%rdi), %r8 - movq 208(%rdi), %r9 - movq 216(%rdi), %r10 - movq 224(%rdi), %r11 - # A[20] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[20] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r12, 192(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[20] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r8, 200(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[20] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r9, 208(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 216(%rdi) - movq 232(%rdi), %r12 - movq 240(%rdi), %r8 - movq 248(%rdi), %r9 - movq 256(%rdi), %r10 - # A[20] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[20] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r11, 224(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[20] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r12, 232(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[20] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r8, 240(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 248(%rdi) - movq 264(%rdi), %r11 - movq 272(%rdi), %r12 - movq 280(%rdi), %r8 - movq 288(%rdi), %r9 - # A[20] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[20] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r10, 256(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[20] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r11, 264(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[20] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r12, 272(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 280(%rdi) - movq 296(%rdi), %r10 - movq 304(%rdi), %r11 - movq 312(%rdi), %r12 - movq 320(%rdi), %r8 - # A[20] * B[16] - mulx 128(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[20] * B[17] - mulx 136(%rbp), %rax, %rcx - movq %r9, 288(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[20] * B[18] - mulx 144(%rbp), %rax, %rcx - movq %r10, 296(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[20] * B[19] - mulx 152(%rbp), %rax, %rcx - movq %r11, 304(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 312(%rdi) - movq 328(%rdi), %r9 - movq 336(%rdi), %r10 - movq 344(%rdi), %r11 - # A[20] * B[20] - mulx 160(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[20] * B[21] - mulx 168(%rbp), %rax, %rcx - movq %r8, 320(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[20] * B[22] - mulx 176(%rbp), %rax, %rcx - movq %r9, 328(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[20] * B[23] - mulx 184(%rbp), %rax, %rcx - movq %r10, 336(%rdi) - movq %r14, %r12 - adcxq %rax, %r11 - adoxq %rcx, %r12 - adcxq %r13, %r12 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r11, 344(%rdi) - movq %r12, 352(%rdi) - movq 168(%rsi), %rdx - movq 168(%rsp), %r9 - movq %r15, %r10 - movq %rbx, %r11 - movq 192(%rdi), %r12 - movq 200(%rdi), %r8 - # A[21] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[21] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r9, 168(%rsp) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[21] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r10, %r15 - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[21] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r11, %rbx - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 192(%rdi) - movq 208(%rdi), %r9 - movq 216(%rdi), %r10 - movq 224(%rdi), %r11 - movq 232(%rdi), %r12 - # A[21] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[21] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r8, 200(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[21] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r9, 208(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[21] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r10, 216(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 224(%rdi) - movq 240(%rdi), %r8 - movq 248(%rdi), %r9 - movq 256(%rdi), %r10 - movq 264(%rdi), %r11 - # A[21] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[21] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r12, 232(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[21] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r8, 240(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[21] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r9, 248(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 256(%rdi) - movq 272(%rdi), %r12 - movq 280(%rdi), %r8 - movq 288(%rdi), %r9 - movq 296(%rdi), %r10 - # A[21] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[21] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r11, 264(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[21] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r12, 272(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[21] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r8, 280(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 288(%rdi) - movq 304(%rdi), %r11 - movq 312(%rdi), %r12 - movq 320(%rdi), %r8 - movq 328(%rdi), %r9 - # A[21] * B[16] - mulx 128(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[21] * B[17] - mulx 136(%rbp), %rax, %rcx - movq %r10, 296(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[21] * B[18] - mulx 144(%rbp), %rax, %rcx - movq %r11, 304(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[21] * B[19] - mulx 152(%rbp), %rax, %rcx - movq %r12, 312(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 320(%rdi) - movq 336(%rdi), %r10 - movq 344(%rdi), %r11 - movq 352(%rdi), %r12 - # A[21] * B[20] - mulx 160(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[21] * B[21] - mulx 168(%rbp), %rax, %rcx - movq %r9, 328(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[21] * B[22] - mulx 176(%rbp), %rax, %rcx - movq %r10, 336(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[21] * B[23] - mulx 184(%rbp), %rax, %rcx - movq %r11, 344(%rdi) - movq %r14, %r8 - adcxq %rax, %r12 - adoxq %rcx, %r8 - adcxq %r13, %r8 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r12, 352(%rdi) - movq %r8, 360(%rdi) - movq 176(%rsi), %rdx - movq %r15, %r10 - movq %rbx, %r11 - movq 192(%rdi), %r12 - movq 200(%rdi), %r8 - movq 208(%rdi), %r9 - # A[22] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[22] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r10, %r15 - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[22] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r11, %rbx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[22] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r12, 192(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 200(%rdi) - movq 216(%rdi), %r10 - movq 224(%rdi), %r11 - movq 232(%rdi), %r12 - movq 240(%rdi), %r8 - # A[22] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[22] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r9, 208(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[22] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r10, 216(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[22] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r11, 224(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 232(%rdi) - movq 248(%rdi), %r9 - movq 256(%rdi), %r10 - movq 264(%rdi), %r11 - movq 272(%rdi), %r12 - # A[22] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[22] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r8, 240(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[22] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r9, 248(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[22] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r10, 256(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 264(%rdi) - movq 280(%rdi), %r8 - movq 288(%rdi), %r9 - movq 296(%rdi), %r10 - movq 304(%rdi), %r11 - # A[22] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[22] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r12, 272(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[22] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r8, 280(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[22] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r9, 288(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 296(%rdi) - movq 312(%rdi), %r12 - movq 320(%rdi), %r8 - movq 328(%rdi), %r9 - movq 336(%rdi), %r10 - # A[22] * B[16] - mulx 128(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[22] * B[17] - mulx 136(%rbp), %rax, %rcx - movq %r11, 304(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[22] * B[18] - mulx 144(%rbp), %rax, %rcx - movq %r12, 312(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[22] * B[19] - mulx 152(%rbp), %rax, %rcx - movq %r8, 320(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 328(%rdi) - movq 344(%rdi), %r11 - movq 352(%rdi), %r12 - movq 360(%rdi), %r8 - # A[22] * B[20] - mulx 160(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[22] * B[21] - mulx 168(%rbp), %rax, %rcx - movq %r10, 336(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[22] * B[22] - mulx 176(%rbp), %rax, %rcx - movq %r11, 344(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[22] * B[23] - mulx 184(%rbp), %rax, %rcx - movq %r12, 352(%rdi) - movq %r14, %r9 - adcxq %rax, %r8 - adoxq %rcx, %r9 - adcxq %r13, %r9 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r8, 360(%rdi) - movq %r9, 368(%rdi) - movq 184(%rsi), %rdx - movq %rbx, %r11 - movq 192(%rdi), %r12 - movq 200(%rdi), %r8 - movq 208(%rdi), %r9 - movq 216(%rdi), %r10 - # A[23] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[23] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r11, %rbx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[23] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r12, 192(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[23] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r8, 200(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 208(%rdi) - movq 224(%rdi), %r11 - movq 232(%rdi), %r12 - movq 240(%rdi), %r8 - movq 248(%rdi), %r9 - # A[23] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[23] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r10, 216(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[23] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r11, 224(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[23] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r12, 232(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 240(%rdi) - movq 256(%rdi), %r10 - movq 264(%rdi), %r11 - movq 272(%rdi), %r12 - movq 280(%rdi), %r8 - # A[23] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[23] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r9, 248(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[23] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r10, 256(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[23] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r11, 264(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 272(%rdi) - movq 288(%rdi), %r9 - movq 296(%rdi), %r10 - movq 304(%rdi), %r11 - movq 312(%rdi), %r12 - # A[23] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[23] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r8, 280(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[23] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r9, 288(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[23] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r10, 296(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 304(%rdi) - movq 320(%rdi), %r8 - movq 328(%rdi), %r9 - movq 336(%rdi), %r10 - movq 344(%rdi), %r11 - # A[23] * B[16] - mulx 128(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[23] * B[17] - mulx 136(%rbp), %rax, %rcx - movq %r12, 312(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[23] * B[18] - mulx 144(%rbp), %rax, %rcx - movq %r8, 320(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[23] * B[19] - mulx 152(%rbp), %rax, %rcx - movq %r9, 328(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 336(%rdi) - movq 352(%rdi), %r12 - movq 360(%rdi), %r8 - movq 368(%rdi), %r9 - # A[23] * B[20] - mulx 160(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[23] * B[21] - mulx 168(%rbp), %rax, %rcx - movq %r11, 344(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[23] * B[22] - mulx 176(%rbp), %rax, %rcx - movq %r12, 352(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[23] * B[23] - mulx 184(%rbp), %rax, %rcx - movq %r8, 360(%rdi) - movq %r14, %r10 - adcxq %rax, %r9 - adoxq %rcx, %r10 - adcxq %r13, %r10 - movq %r9, 368(%rdi) - movq %r10, 376(%rdi) - vmovdqu (%rsp), %ymm0 - vmovdqu 32(%rsp), %ymm1 - vmovdqu 64(%rsp), %ymm2 - vmovdqu 96(%rsp), %ymm3 - vmovdqu 128(%rsp), %ymm4 - vmovdqu 160(%rsp), %xmm5 - vmovdqu %ymm0, (%rdi) - vmovdqu %ymm1, 32(%rdi) - vmovdqu %ymm2, 64(%rdi) - vmovdqu %ymm3, 96(%rdi) - vmovdqu %ymm4, 128(%rdi) - vmovdqu %xmm5, 160(%rdi) - movq %r15, 176(%rdi) - movq %rbx, 184(%rdi) - addq $192, %rsp - pop %rbx - pop %r15 - pop %r14 - pop %r13 + adcxq %r11, %r10 + movq %r9, 176(%rdi) + movq %r10, 184(%rdi) + cmpq %rdi, %rsi + je L_start_3072_mul_avx2_12 + cmpq %rdi, %rbp + jne L_end_3072_mul_avx2_12 +L_start_3072_mul_avx2_12: + vmovdqu (%rbx), %xmm0 + vmovups %xmm0, (%rdi) + vmovdqu 16(%rbx), %xmm0 + vmovups %xmm0, 16(%rdi) + vmovdqu 32(%rbx), %xmm0 + vmovups %xmm0, 32(%rdi) + vmovdqu 48(%rbx), %xmm0 + vmovups %xmm0, 48(%rdi) + vmovdqu 64(%rbx), %xmm0 + vmovups %xmm0, 64(%rdi) + vmovdqu 80(%rbx), %xmm0 + vmovups %xmm0, 80(%rdi) +L_end_3072_mul_avx2_12: + addq $96, %rsp pop %r12 pop %rbp + pop %rbx repz retq #ifndef __APPLE__ -.size sp_3072_mul_avx2_24,.-sp_3072_mul_avx2_24 +.size sp_3072_mul_avx2_12,.-sp_3072_mul_avx2_12 #endif /* __APPLE__ */ #endif /* HAVE_INTEL_AVX2 */ #ifdef HAVE_INTEL_AVX2 @@ -18803,1801 +14849,479 @@ _sp_3072_mul_avx2_24: * a A single precision integer. */ #ifndef __APPLE__ -.globl sp_3072_sqr_avx2_24 -.type sp_3072_sqr_avx2_24,@function +.globl sp_3072_sqr_avx2_12 +.type sp_3072_sqr_avx2_12,@function .align 16 -sp_3072_sqr_avx2_24: +sp_3072_sqr_avx2_12: #else -.globl _sp_3072_sqr_avx2_24 +.globl _sp_3072_sqr_avx2_12 .p2align 4 -_sp_3072_sqr_avx2_24: +_sp_3072_sqr_avx2_12: #endif /* __APPLE__ */ push %rbp push %r12 push %r13 - subq $192, %rsp + push %r14 + push %r15 + push %rbx + subq $96, %rsp cmpq %rdi, %rsi movq %rsp, %rbp cmovne %rdi, %rbp - xorq %r12, %r12 - # Diagonal 1 - xorq %r8, %r8 - xorq %r9, %r9 xorq %r10, %r10 - xorq %r11, %r11 + # Diagonal 1 # A[1] x A[0] movq (%rsi), %rdx mulxq 8(%rsi), %r8, %r9 + movq %r8, 8(%rbp) + movq %r10, %r8 # A[2] x A[0] mulxq 16(%rsi), %rax, %rcx adcxq %rax, %r9 - adoxq %rcx, %r10 + adoxq %rcx, %r8 + movq %r9, 16(%rbp) + movq %r10, %r9 # A[3] x A[0] mulxq 24(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 8(%rbp) - movq %r9, 16(%rbp) - movq %r10, 24(%rbp) - movq %r12, %r8 - movq %r12, %r9 - movq %r12, %r10 + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r8, 24(%rbp) + movq %r10, %r8 # A[4] x A[0] mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r11 + adcxq %rax, %r9 adoxq %rcx, %r8 + movq %r9, 32(%rbp) + movq %r10, %r9 # A[5] x A[0] mulxq 40(%rsi), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 + movq %r8, 40(%rbp) + movq %r10, %r8 # A[6] x A[0] mulxq 48(%rsi), %rax, %rcx adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 32(%rbp) - movq %r8, 40(%rbp) + adoxq %rcx, %r8 movq %r9, 48(%rbp) - movq %r12, %r11 - movq %r12, %r8 - movq %r12, %r9 + movq %r10, %r9 # A[7] x A[0] mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r8, %r12 + movq %r10, %r8 # A[8] x A[0] mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r11 + adcxq %rax, %r9 adoxq %rcx, %r8 + movq %r9, %r13 + movq %r10, %r9 # A[9] x A[0] mulxq 72(%rsi), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 - movq %r10, 56(%rbp) - movq %r11, 64(%rbp) - movq %r8, 72(%rbp) - movq %r12, %r10 - movq %r12, %r11 - movq %r12, %r8 + movq %r8, %r14 + movq %r10, %r8 # A[10] x A[0] mulxq 80(%rsi), %rax, %rcx adcxq %rax, %r9 - adoxq %rcx, %r10 + adoxq %rcx, %r8 + movq %r9, %r15 + movq %r10, %r9 # A[11] x A[0] mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[12] x A[0] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - movq %r9, 80(%rbp) - movq %r10, 88(%rbp) - movq %r11, 96(%rbp) - movq %r12, %r9 - movq %r12, %r10 - movq %r12, %r11 - # A[13] x A[0] - mulxq 104(%rsi), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 - # A[14] x A[0] - mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[15] x A[0] - mulxq 120(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 104(%rbp) - movq %r9, 112(%rbp) - movq %r10, 120(%rbp) - movq %r12, %r8 - movq %r12, %r9 - movq %r12, %r10 - # A[16] x A[0] - mulxq 128(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[17] x A[0] - mulxq 136(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[18] x A[0] - mulxq 144(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 128(%rbp) - movq %r8, 136(%rbp) - movq %r9, 144(%rbp) - movq %r12, %r11 - movq %r12, %r8 - movq %r12, %r9 - # A[19] x A[0] - mulxq 152(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[20] x A[0] - mulxq 160(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[21] x A[0] - mulxq 168(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 152(%rbp) - movq %r11, 160(%rbp) - movq %r8, 168(%rbp) - movq %r12, %r10 - movq %r12, %r11 - # A[22] x A[0] - mulxq 176(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[23] x A[0] - mulxq 184(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r9, 176(%rbp) - movq %r10, 184(%rbp) + movq %r8, %rbx # Carry - adcxq %r12, %r11 - movq %r12, %r13 - adcxq %r12, %r13 - adoxq %r12, %r13 - movq %r11, 192(%rdi) + adcxq %r10, %r9 + movq %r10, %r11 + adcxq %r10, %r11 + adoxq %r10, %r11 + movq %r9, 96(%rdi) # Diagonal 2 - movq 24(%rbp), %r11 + movq 24(%rbp), %r9 movq 32(%rbp), %r8 - movq 40(%rbp), %r9 - movq 48(%rbp), %r10 # A[2] x A[1] movq 8(%rsi), %rdx mulxq 16(%rsi), %rax, %rcx - adcxq %rax, %r11 + adcxq %rax, %r9 adoxq %rcx, %r8 + movq %r9, 24(%rbp) + movq 40(%rbp), %r9 # A[3] x A[1] mulxq 24(%rsi), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 + movq %r8, 32(%rbp) + movq 48(%rbp), %r8 # A[4] x A[1] mulxq 32(%rsi), %rax, %rcx adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 24(%rbp) - movq %r8, 32(%rbp) + adoxq %rcx, %r8 movq %r9, 40(%rbp) - movq 56(%rbp), %r11 - movq 64(%rbp), %r8 - movq 72(%rbp), %r9 + # No load %r12 - %r9 # A[5] x A[1] mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 + adcxq %rax, %r8 + adoxq %rcx, %r12 + movq %r8, 48(%rbp) + # No load %r13 - %r8 # A[6] x A[1] mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 + adcxq %rax, %r12 + adoxq %rcx, %r13 + # No store %r12 + # No load %r14 - %r9 # A[7] x A[1] mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 48(%rbp) - movq %r11, 56(%rbp) - movq %r8, 64(%rbp) - movq 80(%rbp), %r10 - movq 88(%rbp), %r11 - movq 96(%rbp), %r8 + adcxq %rax, %r13 + adoxq %rcx, %r14 + # No store %r13 + # No load %r15 - %r8 # A[8] x A[1] mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 + adcxq %rax, %r14 + adoxq %rcx, %r15 + # No store %r14 + # No load %rbx - %r9 # A[9] x A[1] mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 + adcxq %rax, %r15 + adoxq %rcx, %rbx + # No store %r15 + movq 96(%rdi), %r8 # A[10] x A[1] mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r11 + adcxq %rax, %rbx adoxq %rcx, %r8 - movq %r9, 72(%rbp) - movq %r10, 80(%rbp) - movq %r11, 88(%rbp) - movq 104(%rbp), %r9 - movq 112(%rbp), %r10 - movq 120(%rbp), %r11 + # No store %rbx + movq %r10, %r9 # A[11] x A[1] mulxq 88(%rsi), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 - # A[12] x A[1] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[13] x A[1] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 96(%rbp) - movq %r9, 104(%rbp) - movq %r10, 112(%rbp) - movq 128(%rbp), %r8 - movq 136(%rbp), %r9 - movq 144(%rbp), %r10 - # A[14] x A[1] - mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[15] x A[1] - mulxq 120(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[16] x A[1] - mulxq 128(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 120(%rbp) - movq %r8, 128(%rbp) - movq %r9, 136(%rbp) - movq 152(%rbp), %r11 - movq 160(%rbp), %r8 - movq 168(%rbp), %r9 - # A[17] x A[1] - mulxq 136(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[18] x A[1] - mulxq 144(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[19] x A[1] - mulxq 152(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 144(%rbp) - movq %r11, 152(%rbp) - movq %r8, 160(%rbp) - movq 176(%rbp), %r10 - movq 184(%rbp), %r11 - movq 192(%rdi), %r8 - # A[20] x A[1] - mulxq 160(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[21] x A[1] - mulxq 168(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[22] x A[1] - mulxq 176(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - movq %r9, 168(%rbp) - movq %r10, 176(%rbp) - movq %r11, 184(%rbp) - movq %r12, %r9 - movq %r12, %r10 - # A[23] x A[1] - mulxq 184(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[23] x A[2] + movq %r8, 96(%rdi) + movq %r10, %r8 + # A[11] x A[2] movq 16(%rsi), %rdx - mulxq 184(%rsi), %rax, %rcx + mulxq 88(%rsi), %rax, %rcx adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r8, 192(%rdi) - movq %r9, 200(%rdi) + adoxq %rcx, %r8 + movq %r9, 104(%rdi) # Carry - adcxq %r13, %r10 - movq %r12, %r13 - adcxq %r12, %r13 - adoxq %r12, %r13 - movq %r10, 208(%rdi) + adcxq %r11, %r8 + movq %r10, %r11 + adcxq %r10, %r11 + adoxq %r10, %r11 + movq %r8, 112(%rdi) # Diagonal 3 - movq 40(%rbp), %r10 - movq 48(%rbp), %r11 - movq 56(%rbp), %r8 - movq 64(%rbp), %r9 + movq 40(%rbp), %r8 + movq 48(%rbp), %r9 # A[3] x A[2] mulxq 24(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r8, 40(%rbp) + # No load %r12 - %r8 # A[4] x A[2] mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 + adcxq %rax, %r9 + adoxq %rcx, %r12 + movq %r9, 48(%rbp) + # No load %r13 - %r9 # A[5] x A[2] mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 40(%rbp) - movq %r11, 48(%rbp) - movq %r8, 56(%rbp) - movq 72(%rbp), %r10 - movq 80(%rbp), %r11 - movq 88(%rbp), %r8 + adcxq %rax, %r12 + adoxq %rcx, %r13 + # No store %r12 + # No load %r14 - %r8 # A[6] x A[2] mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 + adcxq %rax, %r13 + adoxq %rcx, %r14 + # No store %r13 + # No load %r15 - %r9 # A[7] x A[2] mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 + adcxq %rax, %r14 + adoxq %rcx, %r15 + # No store %r14 + # No load %rbx - %r8 # A[8] x A[2] mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - movq %r9, 64(%rbp) - movq %r10, 72(%rbp) - movq %r11, 80(%rbp) - movq 96(%rbp), %r9 - movq 104(%rbp), %r10 - movq 112(%rbp), %r11 + adcxq %rax, %r15 + adoxq %rcx, %rbx + # No store %r15 + movq 96(%rdi), %r9 # A[9] x A[2] mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r8 + adcxq %rax, %rbx adoxq %rcx, %r9 + # No store %rbx + movq 104(%rdi), %r8 # A[10] x A[2] mulxq 80(%rsi), %rax, %rcx adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[11] x A[2] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 88(%rbp) - movq %r9, 96(%rbp) - movq %r10, 104(%rbp) - movq 120(%rbp), %r8 - movq 128(%rbp), %r9 - movq 136(%rbp), %r10 - # A[12] x A[2] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r11 adoxq %rcx, %r8 - # A[13] x A[2] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[14] x A[2] - mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 112(%rbp) - movq %r8, 120(%rbp) - movq %r9, 128(%rbp) - movq 144(%rbp), %r11 - movq 152(%rbp), %r8 - movq 160(%rbp), %r9 - # A[15] x A[2] - mulxq 120(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[16] x A[2] - mulxq 128(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[17] x A[2] - mulxq 136(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 136(%rbp) - movq %r11, 144(%rbp) - movq %r8, 152(%rbp) - movq 168(%rbp), %r10 - movq 176(%rbp), %r11 - movq 184(%rbp), %r8 - # A[18] x A[2] - mulxq 144(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[19] x A[2] - mulxq 152(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[20] x A[2] - mulxq 160(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - movq %r9, 160(%rbp) - movq %r10, 168(%rbp) - movq %r11, 176(%rbp) - movq 192(%rdi), %r9 - movq 200(%rdi), %r10 - movq 208(%rdi), %r11 - # A[21] x A[2] - mulxq 168(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[22] x A[2] - mulxq 176(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[22] x A[3] - movq 176(%rsi), %rdx + movq %r9, 96(%rdi) + movq 112(%rdi), %r9 + # A[10] x A[3] + movq 80(%rsi), %rdx mulxq 24(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 184(%rbp) - movq %r9, 192(%rdi) - movq %r10, 200(%rdi) - movq %r12, %r8 - movq %r12, %r9 - # A[22] x A[4] + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r8, 104(%rdi) + movq %r10, %r8 + # A[10] x A[4] mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r11 + adcxq %rax, %r9 adoxq %rcx, %r8 - # A[22] x A[5] + movq %r9, 112(%rdi) + movq %r10, %r9 + # A[10] x A[5] mulxq 40(%rsi), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 - movq %r11, 208(%rdi) - movq %r8, 216(%rdi) + movq %r8, 120(%rdi) # Carry - adcxq %r13, %r9 - movq %r12, %r13 - adcxq %r12, %r13 - adoxq %r12, %r13 - movq %r9, 224(%rdi) + adcxq %r11, %r9 + movq %r10, %r11 + adcxq %r10, %r11 + adoxq %r10, %r11 + movq %r9, 128(%rdi) # Diagonal 4 - movq 56(%rbp), %r9 - movq 64(%rbp), %r10 - movq 72(%rbp), %r11 - movq 80(%rbp), %r8 + # No load %r12 - %r9 + # No load %r13 - %r8 # A[4] x A[3] movq 24(%rsi), %rdx mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 + adcxq %rax, %r12 + adoxq %rcx, %r13 + # No store %r12 + # No load %r14 - %r9 # A[5] x A[3] mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 + adcxq %rax, %r13 + adoxq %rcx, %r14 + # No store %r13 + # No load %r15 - %r8 # A[6] x A[3] mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - movq %r9, 56(%rbp) - movq %r10, 64(%rbp) - movq %r11, 72(%rbp) - movq 88(%rbp), %r9 - movq 96(%rbp), %r10 - movq 104(%rbp), %r11 + adcxq %rax, %r14 + adoxq %rcx, %r15 + # No store %r14 + # No load %rbx - %r9 # A[7] x A[3] mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 + adcxq %rax, %r15 + adoxq %rcx, %rbx + # No store %r15 + movq 96(%rdi), %r8 # A[8] x A[3] mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 + adcxq %rax, %rbx + adoxq %rcx, %r8 + # No store %rbx + movq 104(%rdi), %r9 # A[9] x A[3] mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 80(%rbp) - movq %r9, 88(%rbp) - movq %r10, 96(%rbp) - movq 112(%rbp), %r8 - movq 120(%rbp), %r9 - movq 128(%rbp), %r10 - # A[10] x A[3] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[11] x A[3] - mulxq 88(%rsi), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 - # A[12] x A[3] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 104(%rbp) - movq %r8, 112(%rbp) - movq %r9, 120(%rbp) - movq 136(%rbp), %r11 - movq 144(%rbp), %r8 - movq 152(%rbp), %r9 - # A[13] x A[3] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[14] x A[3] - mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[15] x A[3] - mulxq 120(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 128(%rbp) - movq %r11, 136(%rbp) - movq %r8, 144(%rbp) - movq 160(%rbp), %r10 - movq 168(%rbp), %r11 - movq 176(%rbp), %r8 - # A[16] x A[3] - mulxq 128(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[17] x A[3] - mulxq 136(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[18] x A[3] - mulxq 144(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - movq %r9, 152(%rbp) - movq %r10, 160(%rbp) - movq %r11, 168(%rbp) - movq 184(%rbp), %r9 - movq 192(%rdi), %r10 - movq 200(%rdi), %r11 - # A[19] x A[3] - mulxq 152(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[20] x A[3] - mulxq 160(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[21] x A[3] - mulxq 168(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 176(%rbp) - movq %r9, 184(%rbp) - movq %r10, 192(%rdi) - movq 208(%rdi), %r8 - movq 216(%rdi), %r9 - movq 224(%rdi), %r10 - # A[21] x A[4] - movq 168(%rsi), %rdx + movq %r8, 96(%rdi) + movq 112(%rdi), %r8 + # A[9] x A[4] + movq 72(%rsi), %rdx mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r11 + adcxq %rax, %r9 adoxq %rcx, %r8 - # A[21] x A[5] + movq %r9, 104(%rdi) + movq 120(%rdi), %r9 + # A[9] x A[5] mulxq 40(%rsi), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 - # A[21] x A[6] + movq %r8, 112(%rdi) + movq 128(%rdi), %r8 + # A[9] x A[6] mulxq 48(%rsi), %rax, %rcx adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 200(%rdi) - movq %r8, 208(%rdi) - movq %r9, 216(%rdi) - movq %r12, %r11 - movq %r12, %r8 - # A[21] x A[7] - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[21] x A[8] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r11 adoxq %rcx, %r8 - movq %r10, 224(%rdi) - movq %r11, 232(%rdi) + movq %r9, 120(%rdi) + movq %r10, %r9 + # A[9] x A[7] + mulxq 56(%rsi), %rax, %rcx + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r8, 128(%rdi) + movq %r10, %r8 + # A[9] x A[8] + mulxq 64(%rsi), %rax, %rcx + adcxq %rax, %r9 + adoxq %rcx, %r8 + movq %r9, 136(%rdi) # Carry - adcxq %r13, %r8 - movq %r12, %r13 - adcxq %r12, %r13 - adoxq %r12, %r13 - movq %r8, 240(%rdi) + adcxq %r11, %r8 + movq %r10, %r11 + adcxq %r10, %r11 + adoxq %r10, %r11 + movq %r8, 144(%rdi) # Diagonal 5 - movq 72(%rbp), %r8 - movq 80(%rbp), %r9 - movq 88(%rbp), %r10 - movq 96(%rbp), %r11 + # No load %r14 - %r8 + # No load %r15 - %r9 # A[5] x A[4] movq 32(%rsi), %rdx mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 + adcxq %rax, %r14 + adoxq %rcx, %r15 + # No store %r14 + # No load %rbx - %r8 # A[6] x A[4] mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 + adcxq %rax, %r15 + adoxq %rcx, %rbx + # No store %r15 + movq 96(%rdi), %r9 # A[7] x A[4] mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 72(%rbp) - movq %r9, 80(%rbp) - movq %r10, 88(%rbp) - movq 104(%rbp), %r8 - movq 112(%rbp), %r9 - movq 120(%rbp), %r10 + adcxq %rax, %rbx + adoxq %rcx, %r9 + # No store %rbx + movq 104(%rdi), %r8 # A[8] x A[4] mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[9] x A[4] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[10] x A[4] - mulxq 80(%rsi), %rax, %rcx adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 96(%rbp) - movq %r8, 104(%rbp) - movq %r9, 112(%rbp) - movq 128(%rbp), %r11 - movq 136(%rbp), %r8 - movq 144(%rbp), %r9 - # A[11] x A[4] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[12] x A[4] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r11 adoxq %rcx, %r8 - # A[13] x A[4] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 120(%rbp) - movq %r11, 128(%rbp) - movq %r8, 136(%rbp) - movq 152(%rbp), %r10 - movq 160(%rbp), %r11 - movq 168(%rbp), %r8 - # A[14] x A[4] - mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[15] x A[4] - mulxq 120(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[16] x A[4] - mulxq 128(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - movq %r9, 144(%rbp) - movq %r10, 152(%rbp) - movq %r11, 160(%rbp) - movq 176(%rbp), %r9 - movq 184(%rbp), %r10 - movq 192(%rdi), %r11 - # A[17] x A[4] - mulxq 136(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[18] x A[4] - mulxq 144(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[19] x A[4] - mulxq 152(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 168(%rbp) - movq %r9, 176(%rbp) - movq %r10, 184(%rbp) - movq 200(%rdi), %r8 - movq 208(%rdi), %r9 - movq 216(%rdi), %r10 - # A[20] x A[4] - mulxq 160(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[20] x A[5] - movq 160(%rsi), %rdx + movq %r9, 96(%rdi) + movq 112(%rdi), %r9 + # A[8] x A[5] + movq 64(%rsi), %rdx mulxq 40(%rsi), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 - # A[20] x A[6] + movq %r8, 104(%rdi) + movq 120(%rdi), %r8 + # A[8] x A[6] mulxq 48(%rsi), %rax, %rcx adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 192(%rdi) - movq %r8, 200(%rdi) - movq %r9, 208(%rdi) - movq 224(%rdi), %r11 - movq 232(%rdi), %r8 - movq 240(%rdi), %r9 - # A[20] x A[7] - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[20] x A[8] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r11 adoxq %rcx, %r8 - # A[20] x A[9] + movq %r9, 112(%rdi) + movq 128(%rdi), %r9 + # A[8] x A[7] + mulxq 56(%rsi), %rax, %rcx + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r8, 120(%rdi) + movq 136(%rdi), %r8 + # A[10] x A[6] + movq 80(%rsi), %rdx + mulxq 48(%rsi), %rax, %rcx + adcxq %rax, %r9 + adoxq %rcx, %r8 + movq %r9, 128(%rdi) + movq 144(%rdi), %r9 + # A[10] x A[7] + mulxq 56(%rsi), %rax, %rcx + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r8, 136(%rdi) + movq %r10, %r8 + # A[10] x A[8] + mulxq 64(%rsi), %rax, %rcx + adcxq %rax, %r9 + adoxq %rcx, %r8 + movq %r9, 144(%rdi) + movq %r10, %r9 + # A[10] x A[9] mulxq 72(%rsi), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 - movq %r10, 216(%rdi) - movq %r11, 224(%rdi) - movq %r8, 232(%rdi) - movq %r12, %r10 - movq %r12, %r11 - # A[20] x A[10] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[20] x A[11] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r9, 240(%rdi) - movq %r10, 248(%rdi) + movq %r8, 152(%rdi) # Carry - adcxq %r13, %r11 - movq %r12, %r13 - adcxq %r12, %r13 - adoxq %r12, %r13 - movq %r11, 256(%rdi) + adcxq %r11, %r9 + movq %r10, %r11 + adcxq %r10, %r11 + adoxq %r10, %r11 + movq %r9, 160(%rdi) # Diagonal 6 - movq 88(%rbp), %r11 - movq 96(%rbp), %r8 - movq 104(%rbp), %r9 - movq 112(%rbp), %r10 + # No load %rbx - %r9 + movq 96(%rdi), %r8 # A[6] x A[5] movq 40(%rsi), %rdx mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r11 + adcxq %rax, %rbx adoxq %rcx, %r8 + # No store %rbx + movq 104(%rdi), %r9 # A[7] x A[5] mulxq 56(%rsi), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 - # A[8] x A[5] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 88(%rbp) - movq %r8, 96(%rbp) - movq %r9, 104(%rbp) - movq 120(%rbp), %r11 - movq 128(%rbp), %r8 - movq 136(%rbp), %r9 - # A[9] x A[5] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[10] x A[5] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[11] x A[5] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 112(%rbp) - movq %r11, 120(%rbp) - movq %r8, 128(%rbp) - movq 144(%rbp), %r10 - movq 152(%rbp), %r11 - movq 160(%rbp), %r8 - # A[12] x A[5] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[13] x A[5] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[14] x A[5] - mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - movq %r9, 136(%rbp) - movq %r10, 144(%rbp) - movq %r11, 152(%rbp) - movq 168(%rbp), %r9 - movq 176(%rbp), %r10 - movq 184(%rbp), %r11 - # A[15] x A[5] - mulxq 120(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[16] x A[5] - mulxq 128(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[17] x A[5] - mulxq 136(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 160(%rbp) - movq %r9, 168(%rbp) - movq %r10, 176(%rbp) - movq 192(%rdi), %r8 - movq 200(%rdi), %r9 - movq 208(%rdi), %r10 - # A[18] x A[5] - mulxq 144(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[19] x A[5] - mulxq 152(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[19] x A[6] - movq 152(%rsi), %rdx - mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 184(%rbp) - movq %r8, 192(%rdi) - movq %r9, 200(%rdi) - movq 216(%rdi), %r11 - movq 224(%rdi), %r8 - movq 232(%rdi), %r9 - # A[19] x A[7] - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[19] x A[8] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[19] x A[9] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 208(%rdi) - movq %r11, 216(%rdi) - movq %r8, 224(%rdi) - movq 240(%rdi), %r10 - movq 248(%rdi), %r11 - movq 256(%rdi), %r8 - # A[19] x A[10] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[19] x A[11] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[19] x A[12] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - movq %r9, 232(%rdi) - movq %r10, 240(%rdi) - movq %r11, 248(%rdi) - movq %r12, %r9 - movq %r12, %r10 - # A[19] x A[13] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[19] x A[14] - mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r8, 256(%rdi) - movq %r9, 264(%rdi) - # Carry - adcxq %r13, %r10 - movq %r12, %r13 - adcxq %r12, %r13 - adoxq %r12, %r13 - movq %r10, 272(%rdi) - # Diagonal 7 - movq 104(%rbp), %r10 - movq 112(%rbp), %r11 - movq 120(%rbp), %r8 - movq 128(%rbp), %r9 + movq %r8, 96(%rdi) + movq 112(%rdi), %r8 # A[7] x A[6] movq 48(%rsi), %rdx mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[8] x A[6] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[9] x A[6] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 104(%rbp) - movq %r11, 112(%rbp) - movq %r8, 120(%rbp) - movq 136(%rbp), %r10 - movq 144(%rbp), %r11 - movq 152(%rbp), %r8 - # A[10] x A[6] - mulxq 80(%rsi), %rax, %rcx adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[11] x A[6] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[12] x A[6] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r11 adoxq %rcx, %r8 - movq %r9, 128(%rbp) - movq %r10, 136(%rbp) - movq %r11, 144(%rbp) - movq 160(%rbp), %r9 - movq 168(%rbp), %r10 - movq 176(%rbp), %r11 - # A[13] x A[6] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[14] x A[6] - mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[15] x A[6] - mulxq 120(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 152(%rbp) - movq %r9, 160(%rbp) - movq %r10, 168(%rbp) - movq 184(%rbp), %r8 - movq 192(%rdi), %r9 - movq 200(%rdi), %r10 - # A[16] x A[6] - mulxq 128(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[17] x A[6] - mulxq 136(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[18] x A[6] - mulxq 144(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 176(%rbp) - movq %r8, 184(%rbp) - movq %r9, 192(%rdi) - movq 208(%rdi), %r11 - movq 216(%rdi), %r8 - movq 224(%rdi), %r9 - # A[18] x A[7] - movq 144(%rsi), %rdx - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[18] x A[8] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[18] x A[9] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 200(%rdi) - movq %r11, 208(%rdi) - movq %r8, 216(%rdi) - movq 232(%rdi), %r10 - movq 240(%rdi), %r11 - movq 248(%rdi), %r8 - # A[18] x A[10] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[18] x A[11] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[18] x A[12] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - movq %r9, 224(%rdi) - movq %r10, 232(%rdi) - movq %r11, 240(%rdi) - movq 256(%rdi), %r9 - movq 264(%rdi), %r10 - movq 272(%rdi), %r11 - # A[18] x A[13] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[18] x A[14] - mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[18] x A[15] - mulxq 120(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 248(%rdi) - movq %r9, 256(%rdi) - movq %r10, 264(%rdi) - movq %r12, %r8 - movq %r12, %r9 - # A[18] x A[16] - mulxq 128(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[18] x A[17] - mulxq 136(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r11, 272(%rdi) - movq %r8, 280(%rdi) - # Carry - adcxq %r13, %r9 - movq %r12, %r13 - adcxq %r12, %r13 - adoxq %r12, %r13 - movq %r9, 288(%rdi) - # Diagonal 8 - movq 120(%rbp), %r9 - movq 128(%rbp), %r10 - movq 136(%rbp), %r11 - movq 144(%rbp), %r8 - # A[8] x A[7] - movq 56(%rsi), %rdx - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[9] x A[7] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[10] x A[7] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - movq %r9, 120(%rbp) - movq %r10, 128(%rbp) - movq %r11, 136(%rbp) - movq 152(%rbp), %r9 - movq 160(%rbp), %r10 - movq 168(%rbp), %r11 - # A[11] x A[7] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[12] x A[7] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[13] x A[7] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 144(%rbp) - movq %r9, 152(%rbp) - movq %r10, 160(%rbp) - movq 176(%rbp), %r8 - movq 184(%rbp), %r9 - movq 192(%rdi), %r10 - # A[14] x A[7] - mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[15] x A[7] - mulxq 120(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[16] x A[7] - mulxq 128(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 168(%rbp) - movq %r8, 176(%rbp) - movq %r9, 184(%rbp) - movq 200(%rdi), %r11 - movq 208(%rdi), %r8 - movq 216(%rdi), %r9 - # A[17] x A[7] - mulxq 136(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[17] x A[8] - movq 136(%rsi), %rdx - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[17] x A[9] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 192(%rdi) - movq %r11, 200(%rdi) - movq %r8, 208(%rdi) - movq 224(%rdi), %r10 - movq 232(%rdi), %r11 - movq 240(%rdi), %r8 - # A[17] x A[10] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[17] x A[11] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[17] x A[12] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - movq %r9, 216(%rdi) - movq %r10, 224(%rdi) - movq %r11, 232(%rdi) - movq 248(%rdi), %r9 - movq 256(%rdi), %r10 - movq 264(%rdi), %r11 - # A[17] x A[13] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[17] x A[14] - mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[17] x A[15] - mulxq 120(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 240(%rdi) - movq %r9, 248(%rdi) - movq %r10, 256(%rdi) - movq 272(%rdi), %r8 - movq 280(%rdi), %r9 - movq 288(%rdi), %r10 - # A[17] x A[16] - mulxq 128(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[19] x A[15] - movq 152(%rsi), %rdx - mulxq 120(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[19] x A[16] - mulxq 128(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 264(%rdi) - movq %r8, 272(%rdi) - movq %r9, 280(%rdi) - movq %r12, %r11 - movq %r12, %r8 - # A[19] x A[17] - mulxq 136(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[19] x A[18] - mulxq 144(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - movq %r10, 288(%rdi) - movq %r11, 296(%rdi) - # Carry - adcxq %r13, %r8 - movq %r12, %r13 - adcxq %r12, %r13 - adoxq %r12, %r13 - movq %r8, 304(%rdi) - # Diagonal 9 - movq 136(%rbp), %r8 - movq 144(%rbp), %r9 - movq 152(%rbp), %r10 - movq 160(%rbp), %r11 - # A[9] x A[8] - movq 64(%rsi), %rdx - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[10] x A[8] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[11] x A[8] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 136(%rbp) - movq %r9, 144(%rbp) - movq %r10, 152(%rbp) - movq 168(%rbp), %r8 - movq 176(%rbp), %r9 - movq 184(%rbp), %r10 - # A[12] x A[8] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[13] x A[8] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[14] x A[8] - mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 160(%rbp) - movq %r8, 168(%rbp) - movq %r9, 176(%rbp) - movq 192(%rdi), %r11 - movq 200(%rdi), %r8 - movq 208(%rdi), %r9 - # A[15] x A[8] - mulxq 120(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[16] x A[8] - mulxq 128(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[16] x A[9] - movq 128(%rsi), %rdx - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 184(%rbp) - movq %r11, 192(%rdi) - movq %r8, 200(%rdi) - movq 216(%rdi), %r10 - movq 224(%rdi), %r11 - movq 232(%rdi), %r8 - # A[16] x A[10] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[16] x A[11] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[16] x A[12] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - movq %r9, 208(%rdi) - movq %r10, 216(%rdi) - movq %r11, 224(%rdi) - movq 240(%rdi), %r9 - movq 248(%rdi), %r10 - movq 256(%rdi), %r11 - # A[16] x A[13] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[16] x A[14] - mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[16] x A[15] - mulxq 120(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 232(%rdi) - movq %r9, 240(%rdi) - movq %r10, 248(%rdi) - movq 264(%rdi), %r8 - movq 272(%rdi), %r9 - movq 280(%rdi), %r10 - # A[20] x A[12] - movq 160(%rsi), %rdx - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[20] x A[13] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[20] x A[14] - mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 256(%rdi) - movq %r8, 264(%rdi) - movq %r9, 272(%rdi) - movq 288(%rdi), %r11 - movq 296(%rdi), %r8 - movq 304(%rdi), %r9 - # A[20] x A[15] - mulxq 120(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[20] x A[16] - mulxq 128(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[20] x A[17] - mulxq 136(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 280(%rdi) - movq %r11, 288(%rdi) - movq %r8, 296(%rdi) - movq %r12, %r10 - movq %r12, %r11 - # A[20] x A[18] - mulxq 144(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[20] x A[19] - mulxq 152(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r9, 304(%rdi) - movq %r10, 312(%rdi) - # Carry - adcxq %r13, %r11 - movq %r12, %r13 - adcxq %r12, %r13 - adoxq %r12, %r13 - movq %r11, 320(%rdi) - # Diagonal 10 - movq 152(%rbp), %r11 - movq 160(%rbp), %r8 - movq 168(%rbp), %r9 - movq 176(%rbp), %r10 - # A[10] x A[9] - movq 72(%rsi), %rdx - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[11] x A[9] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[12] x A[9] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 152(%rbp) - movq %r8, 160(%rbp) - movq %r9, 168(%rbp) - movq 184(%rbp), %r11 - movq 192(%rdi), %r8 - movq 200(%rdi), %r9 - # A[13] x A[9] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[14] x A[9] - mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[15] x A[9] - mulxq 120(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 176(%rbp) - movq %r11, 184(%rbp) - movq %r8, 192(%rdi) - movq 208(%rdi), %r10 - movq 216(%rdi), %r11 - movq 224(%rdi), %r8 - # A[15] x A[10] - movq 120(%rsi), %rdx - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[15] x A[11] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[15] x A[12] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - movq %r9, 200(%rdi) - movq %r10, 208(%rdi) - movq %r11, 216(%rdi) - movq 232(%rdi), %r9 - movq 240(%rdi), %r10 - movq 248(%rdi), %r11 - # A[15] x A[13] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[15] x A[14] - mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[21] x A[9] - movq 168(%rsi), %rdx - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 224(%rdi) - movq %r9, 232(%rdi) - movq %r10, 240(%rdi) - movq 256(%rdi), %r8 - movq 264(%rdi), %r9 - movq 272(%rdi), %r10 - # A[21] x A[10] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[21] x A[11] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[21] x A[12] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 248(%rdi) - movq %r8, 256(%rdi) - movq %r9, 264(%rdi) - movq 280(%rdi), %r11 - movq 288(%rdi), %r8 - movq 296(%rdi), %r9 - # A[21] x A[13] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[21] x A[14] - mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[21] x A[15] - mulxq 120(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 272(%rdi) - movq %r11, 280(%rdi) - movq %r8, 288(%rdi) - movq 304(%rdi), %r10 - movq 312(%rdi), %r11 - movq 320(%rdi), %r8 - # A[21] x A[16] - mulxq 128(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[21] x A[17] - mulxq 136(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[21] x A[18] - mulxq 144(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - movq %r9, 296(%rdi) - movq %r10, 304(%rdi) - movq %r11, 312(%rdi) - movq %r12, %r9 - movq %r12, %r10 - # A[21] x A[19] - mulxq 152(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[21] x A[20] - mulxq 160(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r8, 320(%rdi) - movq %r9, 328(%rdi) - # Carry - adcxq %r13, %r10 - movq %r12, %r13 - adcxq %r12, %r13 - adoxq %r12, %r13 - movq %r10, 336(%rdi) - # Diagonal 11 - movq 168(%rbp), %r10 - movq 176(%rbp), %r11 - movq 184(%rbp), %r8 - movq 192(%rdi), %r9 - # A[11] x A[10] - movq 80(%rsi), %rdx - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[12] x A[10] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[13] x A[10] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 168(%rbp) - movq %r11, 176(%rbp) - movq %r8, 184(%rbp) - movq 200(%rdi), %r10 - movq 208(%rdi), %r11 - movq 216(%rdi), %r8 - # A[14] x A[10] - mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[14] x A[11] - movq 112(%rsi), %rdx - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[14] x A[12] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - movq %r9, 192(%rdi) - movq %r10, 200(%rdi) - movq %r11, 208(%rdi) - movq 224(%rdi), %r9 - movq 232(%rdi), %r10 - movq 240(%rdi), %r11 - # A[14] x A[13] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[22] x A[6] - movq 176(%rsi), %rdx - mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[22] x A[7] - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 216(%rdi) - movq %r9, 224(%rdi) - movq %r10, 232(%rdi) - movq 248(%rdi), %r8 - movq 256(%rdi), %r9 - movq 264(%rdi), %r10 - # A[22] x A[8] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[22] x A[9] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[22] x A[10] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 240(%rdi) - movq %r8, 248(%rdi) - movq %r9, 256(%rdi) - movq 272(%rdi), %r11 - movq 280(%rdi), %r8 - movq 288(%rdi), %r9 - # A[22] x A[11] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[22] x A[12] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[22] x A[13] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 264(%rdi) - movq %r11, 272(%rdi) - movq %r8, 280(%rdi) - movq 296(%rdi), %r10 - movq 304(%rdi), %r11 - movq 312(%rdi), %r8 - # A[22] x A[14] - mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[22] x A[15] - mulxq 120(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[22] x A[16] - mulxq 128(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - movq %r9, 288(%rdi) - movq %r10, 296(%rdi) - movq %r11, 304(%rdi) - movq 320(%rdi), %r9 - movq 328(%rdi), %r10 - movq 336(%rdi), %r11 - # A[22] x A[17] - mulxq 136(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[22] x A[18] - mulxq 144(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[22] x A[19] - mulxq 152(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 312(%rdi) - movq %r9, 320(%rdi) - movq %r10, 328(%rdi) - movq %r12, %r8 - movq %r12, %r9 - # A[22] x A[20] - mulxq 160(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[22] x A[21] - mulxq 168(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r11, 336(%rdi) - movq %r8, 344(%rdi) - # Carry - adcxq %r13, %r9 - movq %r12, %r13 - adcxq %r12, %r13 - adoxq %r12, %r13 - movq %r9, 352(%rdi) - # Diagonal 12 - movq 184(%rbp), %r9 - movq 192(%rdi), %r10 - movq 200(%rdi), %r11 - movq 208(%rdi), %r8 - # A[12] x A[11] + movq %r9, 104(%rdi) + movq 120(%rdi), %r9 + # A[11] x A[3] movq 88(%rsi), %rdx - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[13] x A[11] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[13] x A[12] - movq 96(%rsi), %rdx - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - movq %r9, 184(%rbp) - movq %r10, 192(%rdi) - movq %r11, 200(%rdi) - movq 216(%rdi), %r9 - movq 224(%rdi), %r10 - movq 232(%rdi), %r11 - # A[23] x A[3] - movq 184(%rsi), %rdx mulxq 24(%rsi), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 - # A[23] x A[4] + movq %r8, 112(%rdi) + movq 128(%rdi), %r8 + # A[11] x A[4] mulxq 32(%rsi), %rax, %rcx adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[23] x A[5] - mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 208(%rdi) - movq %r9, 216(%rdi) - movq %r10, 224(%rdi) - movq 240(%rdi), %r8 - movq 248(%rdi), %r9 - movq 256(%rdi), %r10 - # A[23] x A[6] - mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r11 adoxq %rcx, %r8 - # A[23] x A[7] + movq %r9, 120(%rdi) + movq 136(%rdi), %r9 + # A[11] x A[5] + mulxq 40(%rsi), %rax, %rcx + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r8, 128(%rdi) + movq 144(%rdi), %r8 + # A[11] x A[6] + mulxq 48(%rsi), %rax, %rcx + adcxq %rax, %r9 + adoxq %rcx, %r8 + movq %r9, 136(%rdi) + movq 152(%rdi), %r9 + # A[11] x A[7] mulxq 56(%rsi), %rax, %rcx adcxq %rax, %r8 adoxq %rcx, %r9 - # A[23] x A[8] + movq %r8, 144(%rdi) + movq 160(%rdi), %r8 + # A[11] x A[8] mulxq 64(%rsi), %rax, %rcx adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 232(%rdi) - movq %r8, 240(%rdi) - movq %r9, 248(%rdi) - movq 264(%rdi), %r11 - movq 272(%rdi), %r8 - movq 280(%rdi), %r9 - # A[23] x A[9] + adoxq %rcx, %r8 + movq %r9, 152(%rdi) + movq %r10, %r9 + # A[11] x A[9] mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[23] x A[10] + adcxq %rax, %r8 + adoxq %rcx, %r9 + movq %r8, 160(%rdi) + movq %r10, %r8 + # A[11] x A[10] mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[23] x A[11] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 256(%rdi) - movq %r11, 264(%rdi) - movq %r8, 272(%rdi) - movq 288(%rdi), %r10 - movq 296(%rdi), %r11 - movq 304(%rdi), %r8 - # A[23] x A[12] - mulxq 96(%rsi), %rax, %rcx adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[23] x A[13] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[23] x A[14] - mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %r11 adoxq %rcx, %r8 - movq %r9, 280(%rdi) - movq %r10, 288(%rdi) - movq %r11, 296(%rdi) - movq 312(%rdi), %r9 - movq 320(%rdi), %r10 - movq 328(%rdi), %r11 - # A[23] x A[15] - mulxq 120(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[23] x A[16] - mulxq 128(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[23] x A[17] - mulxq 136(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r8, 304(%rdi) - movq %r9, 312(%rdi) - movq %r10, 320(%rdi) - movq 336(%rdi), %r8 - movq 344(%rdi), %r9 - movq 352(%rdi), %r10 - # A[23] x A[18] - mulxq 144(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - # A[23] x A[19] - mulxq 152(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[23] x A[20] - mulxq 160(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r11, 328(%rdi) - movq %r8, 336(%rdi) - movq %r9, 344(%rdi) - movq %r12, %r11 - movq %r12, %r8 - # A[23] x A[21] - mulxq 168(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[23] x A[22] - mulxq 176(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r8 - movq %r10, 352(%rdi) - movq %r11, 360(%rdi) + movq %r9, 168(%rdi) # Carry - adcxq %r13, %r8 - movq %r12, %r13 - adcxq %r12, %r13 - adoxq %r12, %r13 - movq %r8, 368(%rdi) - movq %r13, 376(%rdi) + adcxq %r11, %r8 + movq %r10, %r11 + adcxq %r10, %r11 + adoxq %r10, %r11 + movq %r8, 176(%rdi) + movq %r11, 184(%rdi) # Double and Add in A[i] x A[i] movq 8(%rbp), %r9 # A[0] x A[0] @@ -20613,8 +15337,8 @@ _sp_3072_sqr_avx2_24: movq 8(%rsi), %rdx mulxq %rdx, %rax, %rcx adoxq %r8, %r8 - adcxq %rax, %r8 adoxq %r9, %r9 + adcxq %rax, %r8 adcxq %rcx, %r9 movq %r8, 16(%rbp) movq %r9, 24(%rbp) @@ -20624,266 +15348,126 @@ _sp_3072_sqr_avx2_24: movq 16(%rsi), %rdx mulxq %rdx, %rax, %rcx adoxq %r8, %r8 - adcxq %rax, %r8 adoxq %r9, %r9 + adcxq %rax, %r8 adcxq %rcx, %r9 movq %r8, 32(%rbp) movq %r9, 40(%rbp) movq 48(%rbp), %r8 - movq 56(%rbp), %r9 # A[3] x A[3] movq 24(%rsi), %rdx mulxq %rdx, %rax, %rcx adoxq %r8, %r8 + adoxq %r12, %r12 adcxq %rax, %r8 - adoxq %r9, %r9 - adcxq %rcx, %r9 + adcxq %rcx, %r12 movq %r8, 48(%rbp) - movq %r9, 56(%rbp) - movq 64(%rbp), %r8 - movq 72(%rbp), %r9 # A[4] x A[4] movq 32(%rsi), %rdx mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adcxq %rax, %r8 - adoxq %r9, %r9 - adcxq %rcx, %r9 - movq %r8, 64(%rbp) - movq %r9, 72(%rbp) - movq 80(%rbp), %r8 - movq 88(%rbp), %r9 + adoxq %r13, %r13 + adoxq %r14, %r14 + adcxq %rax, %r13 + adcxq %rcx, %r14 # A[5] x A[5] movq 40(%rsi), %rdx mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adcxq %rax, %r8 - adoxq %r9, %r9 - adcxq %rcx, %r9 - movq %r8, 80(%rbp) - movq %r9, 88(%rbp) - movq 96(%rbp), %r8 - movq 104(%rbp), %r9 + adoxq %r15, %r15 + adoxq %rbx, %rbx + adcxq %rax, %r15 + adcxq %rcx, %rbx + movq 96(%rdi), %r8 + movq 104(%rdi), %r9 # A[6] x A[6] movq 48(%rsi), %rdx mulxq %rdx, %rax, %rcx adoxq %r8, %r8 - adcxq %rax, %r8 adoxq %r9, %r9 + adcxq %rax, %r8 adcxq %rcx, %r9 - movq %r8, 96(%rbp) - movq %r9, 104(%rbp) - movq 112(%rbp), %r8 - movq 120(%rbp), %r9 + movq %r8, 96(%rdi) + movq %r9, 104(%rdi) + movq 112(%rdi), %r8 + movq 120(%rdi), %r9 # A[7] x A[7] movq 56(%rsi), %rdx mulxq %rdx, %rax, %rcx adoxq %r8, %r8 - adcxq %rax, %r8 adoxq %r9, %r9 + adcxq %rax, %r8 adcxq %rcx, %r9 - movq %r8, 112(%rbp) - movq %r9, 120(%rbp) - movq 128(%rbp), %r8 - movq 136(%rbp), %r9 + movq %r8, 112(%rdi) + movq %r9, 120(%rdi) + movq 128(%rdi), %r8 + movq 136(%rdi), %r9 # A[8] x A[8] movq 64(%rsi), %rdx mulxq %rdx, %rax, %rcx adoxq %r8, %r8 - adcxq %rax, %r8 adoxq %r9, %r9 + adcxq %rax, %r8 adcxq %rcx, %r9 - movq %r8, 128(%rbp) - movq %r9, 136(%rbp) - movq 144(%rbp), %r8 - movq 152(%rbp), %r9 + movq %r8, 128(%rdi) + movq %r9, 136(%rdi) + movq 144(%rdi), %r8 + movq 152(%rdi), %r9 # A[9] x A[9] movq 72(%rsi), %rdx mulxq %rdx, %rax, %rcx adoxq %r8, %r8 - adcxq %rax, %r8 adoxq %r9, %r9 + adcxq %rax, %r8 adcxq %rcx, %r9 - movq %r8, 144(%rbp) - movq %r9, 152(%rbp) - movq 160(%rbp), %r8 - movq 168(%rbp), %r9 + movq %r8, 144(%rdi) + movq %r9, 152(%rdi) + movq 160(%rdi), %r8 + movq 168(%rdi), %r9 # A[10] x A[10] movq 80(%rsi), %rdx mulxq %rdx, %rax, %rcx adoxq %r8, %r8 - adcxq %rax, %r8 adoxq %r9, %r9 + adcxq %rax, %r8 adcxq %rcx, %r9 - movq %r8, 160(%rbp) - movq %r9, 168(%rbp) - movq 176(%rbp), %r8 - movq 184(%rbp), %r9 + movq %r8, 160(%rdi) + movq %r9, 168(%rdi) + movq 176(%rdi), %r8 + movq 184(%rdi), %r9 # A[11] x A[11] movq 88(%rsi), %rdx mulxq %rdx, %rax, %rcx adoxq %r8, %r8 - adcxq %rax, %r8 adoxq %r9, %r9 - adcxq %rcx, %r9 - movq %r8, 176(%rbp) - movq %r9, 184(%rbp) - movq 192(%rdi), %r8 - movq 200(%rdi), %r9 - # A[12] x A[12] - movq 96(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 adcxq %rax, %r8 - adoxq %r9, %r9 adcxq %rcx, %r9 - movq %r8, 192(%rdi) - movq %r9, 200(%rdi) - movq 208(%rdi), %r8 - movq 216(%rdi), %r9 - # A[13] x A[13] - movq 104(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adcxq %rax, %r8 - adoxq %r9, %r9 - adcxq %rcx, %r9 - movq %r8, 208(%rdi) - movq %r9, 216(%rdi) - movq 224(%rdi), %r8 - movq 232(%rdi), %r9 - # A[14] x A[14] - movq 112(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adcxq %rax, %r8 - adoxq %r9, %r9 - adcxq %rcx, %r9 - movq %r8, 224(%rdi) - movq %r9, 232(%rdi) - movq 240(%rdi), %r8 - movq 248(%rdi), %r9 - # A[15] x A[15] - movq 120(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adcxq %rax, %r8 - adoxq %r9, %r9 - adcxq %rcx, %r9 - movq %r8, 240(%rdi) - movq %r9, 248(%rdi) - movq 256(%rdi), %r8 - movq 264(%rdi), %r9 - # A[16] x A[16] - movq 128(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adcxq %rax, %r8 - adoxq %r9, %r9 - adcxq %rcx, %r9 - movq %r8, 256(%rdi) - movq %r9, 264(%rdi) - movq 272(%rdi), %r8 - movq 280(%rdi), %r9 - # A[17] x A[17] - movq 136(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adcxq %rax, %r8 - adoxq %r9, %r9 - adcxq %rcx, %r9 - movq %r8, 272(%rdi) - movq %r9, 280(%rdi) - movq 288(%rdi), %r8 - movq 296(%rdi), %r9 - # A[18] x A[18] - movq 144(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adcxq %rax, %r8 - adoxq %r9, %r9 - adcxq %rcx, %r9 - movq %r8, 288(%rdi) - movq %r9, 296(%rdi) - movq 304(%rdi), %r8 - movq 312(%rdi), %r9 - # A[19] x A[19] - movq 152(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adcxq %rax, %r8 - adoxq %r9, %r9 - adcxq %rcx, %r9 - movq %r8, 304(%rdi) - movq %r9, 312(%rdi) - movq 320(%rdi), %r8 - movq 328(%rdi), %r9 - # A[20] x A[20] - movq 160(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adcxq %rax, %r8 - adoxq %r9, %r9 - adcxq %rcx, %r9 - movq %r8, 320(%rdi) - movq %r9, 328(%rdi) - movq 336(%rdi), %r8 - movq 344(%rdi), %r9 - # A[21] x A[21] - movq 168(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adcxq %rax, %r8 - adoxq %r9, %r9 - adcxq %rcx, %r9 - movq %r8, 336(%rdi) - movq %r9, 344(%rdi) - movq 352(%rdi), %r8 - movq 360(%rdi), %r9 - # A[22] x A[22] - movq 176(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adcxq %rax, %r8 - adoxq %r9, %r9 - adcxq %rcx, %r9 - movq %r8, 352(%rdi) - movq %r9, 360(%rdi) - movq 368(%rdi), %r8 - movq 376(%rdi), %r9 - # A[23] x A[23] - movq 184(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adcxq %rax, %r8 - adoxq %r9, %r9 - adcxq %rcx, %r9 - movq %r8, 368(%rdi) - movq %r9, 376(%rdi) + movq %r8, 176(%rdi) + movq %r9, 184(%rdi) + movq %r12, 56(%rdi) + movq %r13, 64(%rdi) + movq %r14, 72(%rdi) + movq %r15, 80(%rdi) + movq %rbx, 88(%rdi) cmpq %rdi, %rsi - jne L_end_3072_sqr_avx2_24 - vmovdqu (%rbp), %ymm0 - vmovdqu 32(%rbp), %ymm1 - vmovdqu 64(%rbp), %ymm2 - vmovdqu 96(%rbp), %ymm3 - vmovdqu 128(%rbp), %ymm4 - vmovdqu 160(%rbp), %ymm5 - vmovdqu 192(%rdi), %ymm6 - vmovdqu %ymm0, (%rdi) - vmovdqu %ymm1, 32(%rdi) - vmovdqu %ymm2, 64(%rdi) - vmovdqu %ymm3, 96(%rdi) - vmovdqu %ymm4, 128(%rdi) - vmovdqu %ymm5, 160(%rdi) - vmovdqu %ymm6, 192(%rdi) -L_end_3072_sqr_avx2_24: - addq $192, %rsp + jne L_end_3072_sqr_avx2_12 + vmovdqu (%rbp), %xmm0 + vmovups %xmm0, (%rdi) + vmovdqu 16(%rbp), %xmm0 + vmovups %xmm0, 16(%rdi) + vmovdqu 32(%rbp), %xmm0 + vmovups %xmm0, 32(%rdi) + movq 48(%rbp), %rax + movq %rax, 48(%rdi) +L_end_3072_sqr_avx2_12: + addq $96, %rsp + pop %rbx + pop %r15 + pop %r14 pop %r13 pop %r12 pop %rbp repz retq #ifndef __APPLE__ -.size sp_3072_sqr_avx2_24,.-sp_3072_sqr_avx2_24 +.size sp_3072_sqr_avx2_12,.-sp_3072_sqr_avx2_12 #endif /* __APPLE__ */ #endif /* HAVE_INTEL_AVX2 */ /* Add b to a into r. (r = a + b) @@ -20893,6 +15477,158 @@ L_end_3072_sqr_avx2_24: * b A single precision integer. */ #ifndef __APPLE__ +.globl sp_3072_add_12 +.type sp_3072_add_12,@function +.align 16 +sp_3072_add_12: +#else +.globl _sp_3072_add_12 +.p2align 4 +_sp_3072_add_12: +#endif /* __APPLE__ */ + # Add + movq (%rsi), %rcx + xorq %rax, %rax + addq (%rdx), %rcx + movq 8(%rsi), %r8 + movq %rcx, (%rdi) + adcq 8(%rdx), %r8 + movq 16(%rsi), %rcx + movq %r8, 8(%rdi) + adcq 16(%rdx), %rcx + movq 24(%rsi), %r8 + movq %rcx, 16(%rdi) + adcq 24(%rdx), %r8 + movq 32(%rsi), %rcx + movq %r8, 24(%rdi) + adcq 32(%rdx), %rcx + movq 40(%rsi), %r8 + movq %rcx, 32(%rdi) + adcq 40(%rdx), %r8 + movq 48(%rsi), %rcx + movq %r8, 40(%rdi) + adcq 48(%rdx), %rcx + movq 56(%rsi), %r8 + movq %rcx, 48(%rdi) + adcq 56(%rdx), %r8 + movq 64(%rsi), %rcx + movq %r8, 56(%rdi) + adcq 64(%rdx), %rcx + movq 72(%rsi), %r8 + movq %rcx, 64(%rdi) + adcq 72(%rdx), %r8 + movq 80(%rsi), %rcx + movq %r8, 72(%rdi) + adcq 80(%rdx), %rcx + movq 88(%rsi), %r8 + movq %rcx, 80(%rdi) + adcq 88(%rdx), %r8 + movq %r8, 88(%rdi) + adcq $0, %rax + repz retq +#ifndef __APPLE__ +.size sp_3072_add_12,.-sp_3072_add_12 +#endif /* __APPLE__ */ +/* Sub b from a into a. (a -= b) + * + * a A single precision integer and result. + * b A single precision integer. + */ +#ifndef __APPLE__ +.globl sp_3072_sub_in_place_24 +.type sp_3072_sub_in_place_24,@function +.align 16 +sp_3072_sub_in_place_24: +#else +.globl _sp_3072_sub_in_place_24 +.p2align 4 +_sp_3072_sub_in_place_24: +#endif /* __APPLE__ */ + movq (%rdi), %rdx + xorq %rax, %rax + subq (%rsi), %rdx + movq 8(%rdi), %rcx + movq %rdx, (%rdi) + sbbq 8(%rsi), %rcx + movq 16(%rdi), %rdx + movq %rcx, 8(%rdi) + sbbq 16(%rsi), %rdx + movq 24(%rdi), %rcx + movq %rdx, 16(%rdi) + sbbq 24(%rsi), %rcx + movq 32(%rdi), %rdx + movq %rcx, 24(%rdi) + sbbq 32(%rsi), %rdx + movq 40(%rdi), %rcx + movq %rdx, 32(%rdi) + sbbq 40(%rsi), %rcx + movq 48(%rdi), %rdx + movq %rcx, 40(%rdi) + sbbq 48(%rsi), %rdx + movq 56(%rdi), %rcx + movq %rdx, 48(%rdi) + sbbq 56(%rsi), %rcx + movq 64(%rdi), %rdx + movq %rcx, 56(%rdi) + sbbq 64(%rsi), %rdx + movq 72(%rdi), %rcx + movq %rdx, 64(%rdi) + sbbq 72(%rsi), %rcx + movq 80(%rdi), %rdx + movq %rcx, 72(%rdi) + sbbq 80(%rsi), %rdx + movq 88(%rdi), %rcx + movq %rdx, 80(%rdi) + sbbq 88(%rsi), %rcx + movq 96(%rdi), %rdx + movq %rcx, 88(%rdi) + sbbq 96(%rsi), %rdx + movq 104(%rdi), %rcx + movq %rdx, 96(%rdi) + sbbq 104(%rsi), %rcx + movq 112(%rdi), %rdx + movq %rcx, 104(%rdi) + sbbq 112(%rsi), %rdx + movq 120(%rdi), %rcx + movq %rdx, 112(%rdi) + sbbq 120(%rsi), %rcx + movq 128(%rdi), %rdx + movq %rcx, 120(%rdi) + sbbq 128(%rsi), %rdx + movq 136(%rdi), %rcx + movq %rdx, 128(%rdi) + sbbq 136(%rsi), %rcx + movq 144(%rdi), %rdx + movq %rcx, 136(%rdi) + sbbq 144(%rsi), %rdx + movq 152(%rdi), %rcx + movq %rdx, 144(%rdi) + sbbq 152(%rsi), %rcx + movq 160(%rdi), %rdx + movq %rcx, 152(%rdi) + sbbq 160(%rsi), %rdx + movq 168(%rdi), %rcx + movq %rdx, 160(%rdi) + sbbq 168(%rsi), %rcx + movq 176(%rdi), %rdx + movq %rcx, 168(%rdi) + sbbq 176(%rsi), %rdx + movq 184(%rdi), %rcx + movq %rdx, 176(%rdi) + sbbq 184(%rsi), %rcx + movq %rcx, 184(%rdi) + sbbq $0, %rax + repz retq +#ifndef __APPLE__ +.size sp_3072_sub_in_place_24,.-sp_3072_sub_in_place_24 +#endif /* __APPLE__ */ +/* Add b to a into r. (r = a + b) + * + * r A single precision integer. + * a A single precision integer. + * b A single precision integer. + */ +#ifndef __APPLE__ .globl sp_3072_add_24 .type sp_3072_add_24,@function .align 16 @@ -20902,6 +15638,7 @@ sp_3072_add_24: .p2align 4 _sp_3072_add_24: #endif /* __APPLE__ */ + # Add movq (%rsi), %rcx xorq %rax, %rax addq (%rdx), %rcx @@ -20980,6 +15717,2053 @@ _sp_3072_add_24: #ifndef __APPLE__ .size sp_3072_add_24,.-sp_3072_add_24 #endif /* __APPLE__ */ +/* Multiply a and b into r. (r = a * b) + * + * r A single precision integer. + * a A single precision integer. + * b A single precision integer. + */ +#ifndef __APPLE__ +.globl sp_3072_mul_24 +.type sp_3072_mul_24,@function +.align 16 +sp_3072_mul_24: +#else +.globl _sp_3072_mul_24 +.p2align 4 +_sp_3072_mul_24: +#endif /* __APPLE__ */ + push %r12 + push %r13 + push %r14 + push %r15 + subq $616, %rsp + movq %rdi, 576(%rsp) + movq %rsi, 584(%rsp) + movq %rdx, 592(%rsp) + leaq 384(%rsp), %r10 + leaq 96(%rsi), %r12 + # Add + movq (%rsi), %rax + xorq %r13, %r13 + addq (%r12), %rax + movq 8(%rsi), %rcx + movq %rax, (%r10) + adcq 8(%r12), %rcx + movq 16(%rsi), %r8 + movq %rcx, 8(%r10) + adcq 16(%r12), %r8 + movq 24(%rsi), %rax + movq %r8, 16(%r10) + adcq 24(%r12), %rax + movq 32(%rsi), %rcx + movq %rax, 24(%r10) + adcq 32(%r12), %rcx + movq 40(%rsi), %r8 + movq %rcx, 32(%r10) + adcq 40(%r12), %r8 + movq 48(%rsi), %rax + movq %r8, 40(%r10) + adcq 48(%r12), %rax + movq 56(%rsi), %rcx + movq %rax, 48(%r10) + adcq 56(%r12), %rcx + movq 64(%rsi), %r8 + movq %rcx, 56(%r10) + adcq 64(%r12), %r8 + movq 72(%rsi), %rax + movq %r8, 64(%r10) + adcq 72(%r12), %rax + movq 80(%rsi), %rcx + movq %rax, 72(%r10) + adcq 80(%r12), %rcx + movq 88(%rsi), %r8 + movq %rcx, 80(%r10) + adcq 88(%r12), %r8 + movq %r8, 88(%r10) + adcq $0, %r13 + movq %r13, 600(%rsp) + leaq 480(%rsp), %r11 + leaq 96(%rdx), %r12 + # Add + movq (%rdx), %rax + xorq %r14, %r14 + addq (%r12), %rax + movq 8(%rdx), %rcx + movq %rax, (%r11) + adcq 8(%r12), %rcx + movq 16(%rdx), %r8 + movq %rcx, 8(%r11) + adcq 16(%r12), %r8 + movq 24(%rdx), %rax + movq %r8, 16(%r11) + adcq 24(%r12), %rax + movq 32(%rdx), %rcx + movq %rax, 24(%r11) + adcq 32(%r12), %rcx + movq 40(%rdx), %r8 + movq %rcx, 32(%r11) + adcq 40(%r12), %r8 + movq 48(%rdx), %rax + movq %r8, 40(%r11) + adcq 48(%r12), %rax + movq 56(%rdx), %rcx + movq %rax, 48(%r11) + adcq 56(%r12), %rcx + movq 64(%rdx), %r8 + movq %rcx, 56(%r11) + adcq 64(%r12), %r8 + movq 72(%rdx), %rax + movq %r8, 64(%r11) + adcq 72(%r12), %rax + movq 80(%rdx), %rcx + movq %rax, 72(%r11) + adcq 80(%r12), %rcx + movq 88(%rdx), %r8 + movq %rcx, 80(%r11) + adcq 88(%r12), %r8 + movq %r8, 88(%r11) + adcq $0, %r14 + movq %r14, 608(%rsp) + movq %r11, %rdx + movq %r10, %rsi + movq %rsp, %rdi +#ifndef __APPLE__ + callq sp_3072_mul_12@plt +#else + callq _sp_3072_mul_12 +#endif /* __APPLE__ */ + movq 592(%rsp), %rdx + movq 584(%rsp), %rsi + leaq 192(%rsp), %rdi + addq $96, %rdx + addq $96, %rsi +#ifndef __APPLE__ + callq sp_3072_mul_12@plt +#else + callq _sp_3072_mul_12 +#endif /* __APPLE__ */ + movq 592(%rsp), %rdx + movq 584(%rsp), %rsi + movq 576(%rsp), %rdi +#ifndef __APPLE__ + callq sp_3072_mul_12@plt +#else + callq _sp_3072_mul_12 +#endif /* __APPLE__ */ + movq 600(%rsp), %r13 + movq 608(%rsp), %r14 + movq 576(%rsp), %r15 + movq %r13, %r9 + leaq 384(%rsp), %r10 + leaq 480(%rsp), %r11 + andq %r14, %r9 + negq %r13 + negq %r14 + addq $192, %r15 + movq (%r10), %rax + movq (%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, (%r10) + movq %rcx, (%r11) + movq 8(%r10), %rax + movq 8(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 8(%r10) + movq %rcx, 8(%r11) + movq 16(%r10), %rax + movq 16(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 16(%r10) + movq %rcx, 16(%r11) + movq 24(%r10), %rax + movq 24(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 24(%r10) + movq %rcx, 24(%r11) + movq 32(%r10), %rax + movq 32(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 32(%r10) + movq %rcx, 32(%r11) + movq 40(%r10), %rax + movq 40(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 40(%r10) + movq %rcx, 40(%r11) + movq 48(%r10), %rax + movq 48(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 48(%r10) + movq %rcx, 48(%r11) + movq 56(%r10), %rax + movq 56(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 56(%r10) + movq %rcx, 56(%r11) + movq 64(%r10), %rax + movq 64(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 64(%r10) + movq %rcx, 64(%r11) + movq 72(%r10), %rax + movq 72(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 72(%r10) + movq %rcx, 72(%r11) + movq 80(%r10), %rax + movq 80(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 80(%r10) + movq %rcx, 80(%r11) + movq 88(%r10), %rax + movq 88(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 88(%r10) + movq %rcx, 88(%r11) + movq (%r10), %rax + addq (%r11), %rax + movq 8(%r10), %rcx + movq %rax, (%r15) + adcq 8(%r11), %rcx + movq 16(%r10), %r8 + movq %rcx, 8(%r15) + adcq 16(%r11), %r8 + movq 24(%r10), %rax + movq %r8, 16(%r15) + adcq 24(%r11), %rax + movq 32(%r10), %rcx + movq %rax, 24(%r15) + adcq 32(%r11), %rcx + movq 40(%r10), %r8 + movq %rcx, 32(%r15) + adcq 40(%r11), %r8 + movq 48(%r10), %rax + movq %r8, 40(%r15) + adcq 48(%r11), %rax + movq 56(%r10), %rcx + movq %rax, 48(%r15) + adcq 56(%r11), %rcx + movq 64(%r10), %r8 + movq %rcx, 56(%r15) + adcq 64(%r11), %r8 + movq 72(%r10), %rax + movq %r8, 64(%r15) + adcq 72(%r11), %rax + movq 80(%r10), %rcx + movq %rax, 72(%r15) + adcq 80(%r11), %rcx + movq 88(%r10), %r8 + movq %rcx, 80(%r15) + adcq 88(%r11), %r8 + movq %r8, 88(%r15) + adcq $0, %r9 + leaq 192(%rsp), %r11 + movq %rsp, %r10 + movq (%r10), %rax + subq (%r11), %rax + movq 8(%r10), %rcx + movq %rax, (%r10) + sbbq 8(%r11), %rcx + movq 16(%r10), %r8 + movq %rcx, 8(%r10) + sbbq 16(%r11), %r8 + movq 24(%r10), %rax + movq %r8, 16(%r10) + sbbq 24(%r11), %rax + movq 32(%r10), %rcx + movq %rax, 24(%r10) + sbbq 32(%r11), %rcx + movq 40(%r10), %r8 + movq %rcx, 32(%r10) + sbbq 40(%r11), %r8 + movq 48(%r10), %rax + movq %r8, 40(%r10) + sbbq 48(%r11), %rax + movq 56(%r10), %rcx + movq %rax, 48(%r10) + sbbq 56(%r11), %rcx + movq 64(%r10), %r8 + movq %rcx, 56(%r10) + sbbq 64(%r11), %r8 + movq 72(%r10), %rax + movq %r8, 64(%r10) + sbbq 72(%r11), %rax + movq 80(%r10), %rcx + movq %rax, 72(%r10) + sbbq 80(%r11), %rcx + movq 88(%r10), %r8 + movq %rcx, 80(%r10) + sbbq 88(%r11), %r8 + movq 96(%r10), %rax + movq %r8, 88(%r10) + sbbq 96(%r11), %rax + movq 104(%r10), %rcx + movq %rax, 96(%r10) + sbbq 104(%r11), %rcx + movq 112(%r10), %r8 + movq %rcx, 104(%r10) + sbbq 112(%r11), %r8 + movq 120(%r10), %rax + movq %r8, 112(%r10) + sbbq 120(%r11), %rax + movq 128(%r10), %rcx + movq %rax, 120(%r10) + sbbq 128(%r11), %rcx + movq 136(%r10), %r8 + movq %rcx, 128(%r10) + sbbq 136(%r11), %r8 + movq 144(%r10), %rax + movq %r8, 136(%r10) + sbbq 144(%r11), %rax + movq 152(%r10), %rcx + movq %rax, 144(%r10) + sbbq 152(%r11), %rcx + movq 160(%r10), %r8 + movq %rcx, 152(%r10) + sbbq 160(%r11), %r8 + movq 168(%r10), %rax + movq %r8, 160(%r10) + sbbq 168(%r11), %rax + movq 176(%r10), %rcx + movq %rax, 168(%r10) + sbbq 176(%r11), %rcx + movq 184(%r10), %r8 + movq %rcx, 176(%r10) + sbbq 184(%r11), %r8 + movq %r8, 184(%r10) + sbbq $0, %r9 + movq (%r10), %rax + subq (%rdi), %rax + movq 8(%r10), %rcx + movq %rax, (%r10) + sbbq 8(%rdi), %rcx + movq 16(%r10), %r8 + movq %rcx, 8(%r10) + sbbq 16(%rdi), %r8 + movq 24(%r10), %rax + movq %r8, 16(%r10) + sbbq 24(%rdi), %rax + movq 32(%r10), %rcx + movq %rax, 24(%r10) + sbbq 32(%rdi), %rcx + movq 40(%r10), %r8 + movq %rcx, 32(%r10) + sbbq 40(%rdi), %r8 + movq 48(%r10), %rax + movq %r8, 40(%r10) + sbbq 48(%rdi), %rax + movq 56(%r10), %rcx + movq %rax, 48(%r10) + sbbq 56(%rdi), %rcx + movq 64(%r10), %r8 + movq %rcx, 56(%r10) + sbbq 64(%rdi), %r8 + movq 72(%r10), %rax + movq %r8, 64(%r10) + sbbq 72(%rdi), %rax + movq 80(%r10), %rcx + movq %rax, 72(%r10) + sbbq 80(%rdi), %rcx + movq 88(%r10), %r8 + movq %rcx, 80(%r10) + sbbq 88(%rdi), %r8 + movq 96(%r10), %rax + movq %r8, 88(%r10) + sbbq 96(%rdi), %rax + movq 104(%r10), %rcx + movq %rax, 96(%r10) + sbbq 104(%rdi), %rcx + movq 112(%r10), %r8 + movq %rcx, 104(%r10) + sbbq 112(%rdi), %r8 + movq 120(%r10), %rax + movq %r8, 112(%r10) + sbbq 120(%rdi), %rax + movq 128(%r10), %rcx + movq %rax, 120(%r10) + sbbq 128(%rdi), %rcx + movq 136(%r10), %r8 + movq %rcx, 128(%r10) + sbbq 136(%rdi), %r8 + movq 144(%r10), %rax + movq %r8, 136(%r10) + sbbq 144(%rdi), %rax + movq 152(%r10), %rcx + movq %rax, 144(%r10) + sbbq 152(%rdi), %rcx + movq 160(%r10), %r8 + movq %rcx, 152(%r10) + sbbq 160(%rdi), %r8 + movq 168(%r10), %rax + movq %r8, 160(%r10) + sbbq 168(%rdi), %rax + movq 176(%r10), %rcx + movq %rax, 168(%r10) + sbbq 176(%rdi), %rcx + movq 184(%r10), %r8 + movq %rcx, 176(%r10) + sbbq 184(%rdi), %r8 + movq %r8, 184(%r10) + sbbq $0, %r9 + subq $96, %r15 + # Add + movq (%r15), %rax + addq (%r10), %rax + movq 8(%r15), %rcx + movq %rax, (%r15) + adcq 8(%r10), %rcx + movq 16(%r15), %r8 + movq %rcx, 8(%r15) + adcq 16(%r10), %r8 + movq 24(%r15), %rax + movq %r8, 16(%r15) + adcq 24(%r10), %rax + movq 32(%r15), %rcx + movq %rax, 24(%r15) + adcq 32(%r10), %rcx + movq 40(%r15), %r8 + movq %rcx, 32(%r15) + adcq 40(%r10), %r8 + movq 48(%r15), %rax + movq %r8, 40(%r15) + adcq 48(%r10), %rax + movq 56(%r15), %rcx + movq %rax, 48(%r15) + adcq 56(%r10), %rcx + movq 64(%r15), %r8 + movq %rcx, 56(%r15) + adcq 64(%r10), %r8 + movq 72(%r15), %rax + movq %r8, 64(%r15) + adcq 72(%r10), %rax + movq 80(%r15), %rcx + movq %rax, 72(%r15) + adcq 80(%r10), %rcx + movq 88(%r15), %r8 + movq %rcx, 80(%r15) + adcq 88(%r10), %r8 + movq 96(%r15), %rax + movq %r8, 88(%r15) + adcq 96(%r10), %rax + movq 104(%r15), %rcx + movq %rax, 96(%r15) + adcq 104(%r10), %rcx + movq 112(%r15), %r8 + movq %rcx, 104(%r15) + adcq 112(%r10), %r8 + movq 120(%r15), %rax + movq %r8, 112(%r15) + adcq 120(%r10), %rax + movq 128(%r15), %rcx + movq %rax, 120(%r15) + adcq 128(%r10), %rcx + movq 136(%r15), %r8 + movq %rcx, 128(%r15) + adcq 136(%r10), %r8 + movq 144(%r15), %rax + movq %r8, 136(%r15) + adcq 144(%r10), %rax + movq 152(%r15), %rcx + movq %rax, 144(%r15) + adcq 152(%r10), %rcx + movq 160(%r15), %r8 + movq %rcx, 152(%r15) + adcq 160(%r10), %r8 + movq 168(%r15), %rax + movq %r8, 160(%r15) + adcq 168(%r10), %rax + movq 176(%r15), %rcx + movq %rax, 168(%r15) + adcq 176(%r10), %rcx + movq 184(%r15), %r8 + movq %rcx, 176(%r15) + adcq 184(%r10), %r8 + movq %r8, 184(%r15) + adcq $0, %r9 + movq %r9, 288(%rdi) + addq $96, %r15 + # Add + movq (%r15), %rax + addq (%r11), %rax + movq 8(%r15), %rcx + movq %rax, (%r15) + adcq 8(%r11), %rcx + movq 16(%r15), %r8 + movq %rcx, 8(%r15) + adcq 16(%r11), %r8 + movq 24(%r15), %rax + movq %r8, 16(%r15) + adcq 24(%r11), %rax + movq 32(%r15), %rcx + movq %rax, 24(%r15) + adcq 32(%r11), %rcx + movq 40(%r15), %r8 + movq %rcx, 32(%r15) + adcq 40(%r11), %r8 + movq 48(%r15), %rax + movq %r8, 40(%r15) + adcq 48(%r11), %rax + movq 56(%r15), %rcx + movq %rax, 48(%r15) + adcq 56(%r11), %rcx + movq 64(%r15), %r8 + movq %rcx, 56(%r15) + adcq 64(%r11), %r8 + movq 72(%r15), %rax + movq %r8, 64(%r15) + adcq 72(%r11), %rax + movq 80(%r15), %rcx + movq %rax, 72(%r15) + adcq 80(%r11), %rcx + movq 88(%r15), %r8 + movq %rcx, 80(%r15) + adcq 88(%r11), %r8 + movq 96(%r15), %rax + movq %r8, 88(%r15) + adcq 96(%r11), %rax + movq %rax, 96(%r15) + # Add to zero + movq 104(%r11), %rax + adcq $0, %rax + movq 112(%r11), %rcx + movq %rax, 104(%r15) + adcq $0, %rcx + movq 120(%r11), %r8 + movq %rcx, 112(%r15) + adcq $0, %r8 + movq 128(%r11), %rax + movq %r8, 120(%r15) + adcq $0, %rax + movq 136(%r11), %rcx + movq %rax, 128(%r15) + adcq $0, %rcx + movq 144(%r11), %r8 + movq %rcx, 136(%r15) + adcq $0, %r8 + movq 152(%r11), %rax + movq %r8, 144(%r15) + adcq $0, %rax + movq 160(%r11), %rcx + movq %rax, 152(%r15) + adcq $0, %rcx + movq 168(%r11), %r8 + movq %rcx, 160(%r15) + adcq $0, %r8 + movq 176(%r11), %rax + movq %r8, 168(%r15) + adcq $0, %rax + movq 184(%r11), %rcx + movq %rax, 176(%r15) + adcq $0, %rcx + movq %rcx, 184(%r15) + addq $616, %rsp + pop %r15 + pop %r14 + pop %r13 + pop %r12 + repz retq +#ifndef __APPLE__ +.size sp_3072_mul_24,.-sp_3072_mul_24 +#endif /* __APPLE__ */ +/* Add a to a into r. (r = a + a) + * + * r A single precision integer. + * a A single precision integer. + */ +#ifndef __APPLE__ +.globl sp_3072_dbl_12 +.type sp_3072_dbl_12,@function +.align 16 +sp_3072_dbl_12: +#else +.globl _sp_3072_dbl_12 +.p2align 4 +_sp_3072_dbl_12: +#endif /* __APPLE__ */ + movq (%rsi), %rdx + xorq %rax, %rax + addq %rdx, %rdx + movq 8(%rsi), %rcx + movq %rdx, (%rdi) + adcq %rcx, %rcx + movq 16(%rsi), %rdx + movq %rcx, 8(%rdi) + adcq %rdx, %rdx + movq 24(%rsi), %rcx + movq %rdx, 16(%rdi) + adcq %rcx, %rcx + movq 32(%rsi), %rdx + movq %rcx, 24(%rdi) + adcq %rdx, %rdx + movq 40(%rsi), %rcx + movq %rdx, 32(%rdi) + adcq %rcx, %rcx + movq 48(%rsi), %rdx + movq %rcx, 40(%rdi) + adcq %rdx, %rdx + movq 56(%rsi), %rcx + movq %rdx, 48(%rdi) + adcq %rcx, %rcx + movq 64(%rsi), %rdx + movq %rcx, 56(%rdi) + adcq %rdx, %rdx + movq 72(%rsi), %rcx + movq %rdx, 64(%rdi) + adcq %rcx, %rcx + movq 80(%rsi), %rdx + movq %rcx, 72(%rdi) + adcq %rdx, %rdx + movq 88(%rsi), %rcx + movq %rdx, 80(%rdi) + adcq %rcx, %rcx + movq %rcx, 88(%rdi) + adcq $0, %rax + repz retq +#ifndef __APPLE__ +.size sp_3072_dbl_12,.-sp_3072_dbl_12 +#endif /* __APPLE__ */ +/* Square a and put result in r. (r = a * a) + * + * r A single precision integer. + * a A single precision integer. + */ +#ifndef __APPLE__ +.globl sp_3072_sqr_24 +.type sp_3072_sqr_24,@function +.align 16 +sp_3072_sqr_24: +#else +.globl _sp_3072_sqr_24 +.p2align 4 +_sp_3072_sqr_24: +#endif /* __APPLE__ */ + subq $504, %rsp + movq %rdi, 480(%rsp) + movq %rsi, 488(%rsp) + leaq 384(%rsp), %r8 + leaq 96(%rsi), %r9 + # Add + movq (%rsi), %rdx + xorq %rcx, %rcx + addq (%r9), %rdx + movq 8(%rsi), %rax + movq %rdx, (%r8) + adcq 8(%r9), %rax + movq 16(%rsi), %rdx + movq %rax, 8(%r8) + adcq 16(%r9), %rdx + movq 24(%rsi), %rax + movq %rdx, 16(%r8) + adcq 24(%r9), %rax + movq 32(%rsi), %rdx + movq %rax, 24(%r8) + adcq 32(%r9), %rdx + movq 40(%rsi), %rax + movq %rdx, 32(%r8) + adcq 40(%r9), %rax + movq 48(%rsi), %rdx + movq %rax, 40(%r8) + adcq 48(%r9), %rdx + movq 56(%rsi), %rax + movq %rdx, 48(%r8) + adcq 56(%r9), %rax + movq 64(%rsi), %rdx + movq %rax, 56(%r8) + adcq 64(%r9), %rdx + movq 72(%rsi), %rax + movq %rdx, 64(%r8) + adcq 72(%r9), %rax + movq 80(%rsi), %rdx + movq %rax, 72(%r8) + adcq 80(%r9), %rdx + movq 88(%rsi), %rax + movq %rdx, 80(%r8) + adcq 88(%r9), %rax + movq %rax, 88(%r8) + adcq $0, %rcx + movq %rcx, 496(%rsp) + movq %r8, %rsi + movq %rsp, %rdi +#ifndef __APPLE__ + callq sp_3072_sqr_12@plt +#else + callq _sp_3072_sqr_12 +#endif /* __APPLE__ */ + movq 488(%rsp), %rsi + leaq 192(%rsp), %rdi + addq $96, %rsi +#ifndef __APPLE__ + callq sp_3072_sqr_12@plt +#else + callq _sp_3072_sqr_12 +#endif /* __APPLE__ */ + movq 488(%rsp), %rsi + movq 480(%rsp), %rdi +#ifndef __APPLE__ + callq sp_3072_sqr_12@plt +#else + callq _sp_3072_sqr_12 +#endif /* __APPLE__ */ + movq 496(%rsp), %r10 + movq %rdi, %r9 + leaq 384(%rsp), %r8 + movq %r10, %rcx + negq %r10 + addq $192, %r9 + movq (%r8), %rdx + movq 8(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, (%r9) + movq %rax, 8(%r9) + movq 16(%r8), %rdx + movq 24(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 16(%r9) + movq %rax, 24(%r9) + movq 32(%r8), %rdx + movq 40(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 32(%r9) + movq %rax, 40(%r9) + movq 48(%r8), %rdx + movq 56(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 48(%r9) + movq %rax, 56(%r9) + movq 64(%r8), %rdx + movq 72(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 64(%r9) + movq %rax, 72(%r9) + movq 80(%r8), %rdx + movq 88(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 80(%r9) + movq %rax, 88(%r9) + movq (%r9), %rdx + addq %rdx, %rdx + movq 8(%r9), %rax + movq %rdx, (%r9) + adcq %rax, %rax + movq 16(%r9), %rdx + movq %rax, 8(%r9) + adcq %rdx, %rdx + movq 24(%r9), %rax + movq %rdx, 16(%r9) + adcq %rax, %rax + movq 32(%r9), %rdx + movq %rax, 24(%r9) + adcq %rdx, %rdx + movq 40(%r9), %rax + movq %rdx, 32(%r9) + adcq %rax, %rax + movq 48(%r9), %rdx + movq %rax, 40(%r9) + adcq %rdx, %rdx + movq 56(%r9), %rax + movq %rdx, 48(%r9) + adcq %rax, %rax + movq 64(%r9), %rdx + movq %rax, 56(%r9) + adcq %rdx, %rdx + movq 72(%r9), %rax + movq %rdx, 64(%r9) + adcq %rax, %rax + movq 80(%r9), %rdx + movq %rax, 72(%r9) + adcq %rdx, %rdx + movq 88(%r9), %rax + movq %rdx, 80(%r9) + adcq %rax, %rax + movq %rax, 88(%r9) + adcq $0, %rcx + leaq 192(%rsp), %rsi + movq %rsp, %r8 + movq (%r8), %rdx + subq (%rsi), %rdx + movq 8(%r8), %rax + movq %rdx, (%r8) + sbbq 8(%rsi), %rax + movq 16(%r8), %rdx + movq %rax, 8(%r8) + sbbq 16(%rsi), %rdx + movq 24(%r8), %rax + movq %rdx, 16(%r8) + sbbq 24(%rsi), %rax + movq 32(%r8), %rdx + movq %rax, 24(%r8) + sbbq 32(%rsi), %rdx + movq 40(%r8), %rax + movq %rdx, 32(%r8) + sbbq 40(%rsi), %rax + movq 48(%r8), %rdx + movq %rax, 40(%r8) + sbbq 48(%rsi), %rdx + movq 56(%r8), %rax + movq %rdx, 48(%r8) + sbbq 56(%rsi), %rax + movq 64(%r8), %rdx + movq %rax, 56(%r8) + sbbq 64(%rsi), %rdx + movq 72(%r8), %rax + movq %rdx, 64(%r8) + sbbq 72(%rsi), %rax + movq 80(%r8), %rdx + movq %rax, 72(%r8) + sbbq 80(%rsi), %rdx + movq 88(%r8), %rax + movq %rdx, 80(%r8) + sbbq 88(%rsi), %rax + movq 96(%r8), %rdx + movq %rax, 88(%r8) + sbbq 96(%rsi), %rdx + movq 104(%r8), %rax + movq %rdx, 96(%r8) + sbbq 104(%rsi), %rax + movq 112(%r8), %rdx + movq %rax, 104(%r8) + sbbq 112(%rsi), %rdx + movq 120(%r8), %rax + movq %rdx, 112(%r8) + sbbq 120(%rsi), %rax + movq 128(%r8), %rdx + movq %rax, 120(%r8) + sbbq 128(%rsi), %rdx + movq 136(%r8), %rax + movq %rdx, 128(%r8) + sbbq 136(%rsi), %rax + movq 144(%r8), %rdx + movq %rax, 136(%r8) + sbbq 144(%rsi), %rdx + movq 152(%r8), %rax + movq %rdx, 144(%r8) + sbbq 152(%rsi), %rax + movq 160(%r8), %rdx + movq %rax, 152(%r8) + sbbq 160(%rsi), %rdx + movq 168(%r8), %rax + movq %rdx, 160(%r8) + sbbq 168(%rsi), %rax + movq 176(%r8), %rdx + movq %rax, 168(%r8) + sbbq 176(%rsi), %rdx + movq 184(%r8), %rax + movq %rdx, 176(%r8) + sbbq 184(%rsi), %rax + movq %rax, 184(%r8) + sbbq $0, %rcx + movq (%r8), %rdx + subq (%rdi), %rdx + movq 8(%r8), %rax + movq %rdx, (%r8) + sbbq 8(%rdi), %rax + movq 16(%r8), %rdx + movq %rax, 8(%r8) + sbbq 16(%rdi), %rdx + movq 24(%r8), %rax + movq %rdx, 16(%r8) + sbbq 24(%rdi), %rax + movq 32(%r8), %rdx + movq %rax, 24(%r8) + sbbq 32(%rdi), %rdx + movq 40(%r8), %rax + movq %rdx, 32(%r8) + sbbq 40(%rdi), %rax + movq 48(%r8), %rdx + movq %rax, 40(%r8) + sbbq 48(%rdi), %rdx + movq 56(%r8), %rax + movq %rdx, 48(%r8) + sbbq 56(%rdi), %rax + movq 64(%r8), %rdx + movq %rax, 56(%r8) + sbbq 64(%rdi), %rdx + movq 72(%r8), %rax + movq %rdx, 64(%r8) + sbbq 72(%rdi), %rax + movq 80(%r8), %rdx + movq %rax, 72(%r8) + sbbq 80(%rdi), %rdx + movq 88(%r8), %rax + movq %rdx, 80(%r8) + sbbq 88(%rdi), %rax + movq 96(%r8), %rdx + movq %rax, 88(%r8) + sbbq 96(%rdi), %rdx + movq 104(%r8), %rax + movq %rdx, 96(%r8) + sbbq 104(%rdi), %rax + movq 112(%r8), %rdx + movq %rax, 104(%r8) + sbbq 112(%rdi), %rdx + movq 120(%r8), %rax + movq %rdx, 112(%r8) + sbbq 120(%rdi), %rax + movq 128(%r8), %rdx + movq %rax, 120(%r8) + sbbq 128(%rdi), %rdx + movq 136(%r8), %rax + movq %rdx, 128(%r8) + sbbq 136(%rdi), %rax + movq 144(%r8), %rdx + movq %rax, 136(%r8) + sbbq 144(%rdi), %rdx + movq 152(%r8), %rax + movq %rdx, 144(%r8) + sbbq 152(%rdi), %rax + movq 160(%r8), %rdx + movq %rax, 152(%r8) + sbbq 160(%rdi), %rdx + movq 168(%r8), %rax + movq %rdx, 160(%r8) + sbbq 168(%rdi), %rax + movq 176(%r8), %rdx + movq %rax, 168(%r8) + sbbq 176(%rdi), %rdx + movq 184(%r8), %rax + movq %rdx, 176(%r8) + sbbq 184(%rdi), %rax + movq %rax, 184(%r8) + sbbq $0, %rcx + subq $96, %r9 + # Add in place + movq (%r9), %rdx + addq (%r8), %rdx + movq 8(%r9), %rax + movq %rdx, (%r9) + adcq 8(%r8), %rax + movq 16(%r9), %rdx + movq %rax, 8(%r9) + adcq 16(%r8), %rdx + movq 24(%r9), %rax + movq %rdx, 16(%r9) + adcq 24(%r8), %rax + movq 32(%r9), %rdx + movq %rax, 24(%r9) + adcq 32(%r8), %rdx + movq 40(%r9), %rax + movq %rdx, 32(%r9) + adcq 40(%r8), %rax + movq 48(%r9), %rdx + movq %rax, 40(%r9) + adcq 48(%r8), %rdx + movq 56(%r9), %rax + movq %rdx, 48(%r9) + adcq 56(%r8), %rax + movq 64(%r9), %rdx + movq %rax, 56(%r9) + adcq 64(%r8), %rdx + movq 72(%r9), %rax + movq %rdx, 64(%r9) + adcq 72(%r8), %rax + movq 80(%r9), %rdx + movq %rax, 72(%r9) + adcq 80(%r8), %rdx + movq 88(%r9), %rax + movq %rdx, 80(%r9) + adcq 88(%r8), %rax + movq 96(%r9), %rdx + movq %rax, 88(%r9) + adcq 96(%r8), %rdx + movq 104(%r9), %rax + movq %rdx, 96(%r9) + adcq 104(%r8), %rax + movq 112(%r9), %rdx + movq %rax, 104(%r9) + adcq 112(%r8), %rdx + movq 120(%r9), %rax + movq %rdx, 112(%r9) + adcq 120(%r8), %rax + movq 128(%r9), %rdx + movq %rax, 120(%r9) + adcq 128(%r8), %rdx + movq 136(%r9), %rax + movq %rdx, 128(%r9) + adcq 136(%r8), %rax + movq 144(%r9), %rdx + movq %rax, 136(%r9) + adcq 144(%r8), %rdx + movq 152(%r9), %rax + movq %rdx, 144(%r9) + adcq 152(%r8), %rax + movq 160(%r9), %rdx + movq %rax, 152(%r9) + adcq 160(%r8), %rdx + movq 168(%r9), %rax + movq %rdx, 160(%r9) + adcq 168(%r8), %rax + movq 176(%r9), %rdx + movq %rax, 168(%r9) + adcq 176(%r8), %rdx + movq 184(%r9), %rax + movq %rdx, 176(%r9) + adcq 184(%r8), %rax + movq %rax, 184(%r9) + adcq $0, %rcx + movq %rcx, 288(%rdi) + # Add in place + movq 96(%r9), %rdx + addq (%rsi), %rdx + movq 104(%r9), %rax + movq %rdx, 96(%r9) + adcq 8(%rsi), %rax + movq 112(%r9), %rdx + movq %rax, 104(%r9) + adcq 16(%rsi), %rdx + movq 120(%r9), %rax + movq %rdx, 112(%r9) + adcq 24(%rsi), %rax + movq 128(%r9), %rdx + movq %rax, 120(%r9) + adcq 32(%rsi), %rdx + movq 136(%r9), %rax + movq %rdx, 128(%r9) + adcq 40(%rsi), %rax + movq 144(%r9), %rdx + movq %rax, 136(%r9) + adcq 48(%rsi), %rdx + movq 152(%r9), %rax + movq %rdx, 144(%r9) + adcq 56(%rsi), %rax + movq 160(%r9), %rdx + movq %rax, 152(%r9) + adcq 64(%rsi), %rdx + movq 168(%r9), %rax + movq %rdx, 160(%r9) + adcq 72(%rsi), %rax + movq 176(%r9), %rdx + movq %rax, 168(%r9) + adcq 80(%rsi), %rdx + movq 184(%r9), %rax + movq %rdx, 176(%r9) + adcq 88(%rsi), %rax + movq 192(%r9), %rdx + movq %rax, 184(%r9) + adcq 96(%rsi), %rdx + movq %rdx, 192(%r9) + # Add to zero + movq 104(%rsi), %rdx + adcq $0, %rdx + movq 112(%rsi), %rax + movq %rdx, 200(%r9) + adcq $0, %rax + movq 120(%rsi), %rdx + movq %rax, 208(%r9) + adcq $0, %rdx + movq 128(%rsi), %rax + movq %rdx, 216(%r9) + adcq $0, %rax + movq 136(%rsi), %rdx + movq %rax, 224(%r9) + adcq $0, %rdx + movq 144(%rsi), %rax + movq %rdx, 232(%r9) + adcq $0, %rax + movq 152(%rsi), %rdx + movq %rax, 240(%r9) + adcq $0, %rdx + movq 160(%rsi), %rax + movq %rdx, 248(%r9) + adcq $0, %rax + movq 168(%rsi), %rdx + movq %rax, 256(%r9) + adcq $0, %rdx + movq 176(%rsi), %rax + movq %rdx, 264(%r9) + adcq $0, %rax + movq 184(%rsi), %rdx + movq %rax, 272(%r9) + adcq $0, %rdx + movq %rdx, 280(%r9) + addq $504, %rsp + repz retq +#ifndef __APPLE__ +.size sp_3072_sqr_24,.-sp_3072_sqr_24 +#endif /* __APPLE__ */ +/* Multiply a and b into r. (r = a * b) + * + * r A single precision integer. + * a A single precision integer. + * b A single precision integer. + */ +#ifndef __APPLE__ +.globl sp_3072_mul_avx2_24 +.type sp_3072_mul_avx2_24,@function +.align 16 +sp_3072_mul_avx2_24: +#else +.globl _sp_3072_mul_avx2_24 +.p2align 4 +_sp_3072_mul_avx2_24: +#endif /* __APPLE__ */ + push %r12 + push %r13 + push %r14 + push %r15 + subq $616, %rsp + movq %rdi, 576(%rsp) + movq %rsi, 584(%rsp) + movq %rdx, 592(%rsp) + leaq 384(%rsp), %r10 + leaq 96(%rsi), %r12 + # Add + movq (%rsi), %rax + xorq %r13, %r13 + addq (%r12), %rax + movq 8(%rsi), %rcx + movq %rax, (%r10) + adcq 8(%r12), %rcx + movq 16(%rsi), %r8 + movq %rcx, 8(%r10) + adcq 16(%r12), %r8 + movq 24(%rsi), %rax + movq %r8, 16(%r10) + adcq 24(%r12), %rax + movq 32(%rsi), %rcx + movq %rax, 24(%r10) + adcq 32(%r12), %rcx + movq 40(%rsi), %r8 + movq %rcx, 32(%r10) + adcq 40(%r12), %r8 + movq 48(%rsi), %rax + movq %r8, 40(%r10) + adcq 48(%r12), %rax + movq 56(%rsi), %rcx + movq %rax, 48(%r10) + adcq 56(%r12), %rcx + movq 64(%rsi), %r8 + movq %rcx, 56(%r10) + adcq 64(%r12), %r8 + movq 72(%rsi), %rax + movq %r8, 64(%r10) + adcq 72(%r12), %rax + movq 80(%rsi), %rcx + movq %rax, 72(%r10) + adcq 80(%r12), %rcx + movq 88(%rsi), %r8 + movq %rcx, 80(%r10) + adcq 88(%r12), %r8 + movq %r8, 88(%r10) + adcq $0, %r13 + movq %r13, 600(%rsp) + leaq 480(%rsp), %r11 + leaq 96(%rdx), %r12 + # Add + movq (%rdx), %rax + xorq %r14, %r14 + addq (%r12), %rax + movq 8(%rdx), %rcx + movq %rax, (%r11) + adcq 8(%r12), %rcx + movq 16(%rdx), %r8 + movq %rcx, 8(%r11) + adcq 16(%r12), %r8 + movq 24(%rdx), %rax + movq %r8, 16(%r11) + adcq 24(%r12), %rax + movq 32(%rdx), %rcx + movq %rax, 24(%r11) + adcq 32(%r12), %rcx + movq 40(%rdx), %r8 + movq %rcx, 32(%r11) + adcq 40(%r12), %r8 + movq 48(%rdx), %rax + movq %r8, 40(%r11) + adcq 48(%r12), %rax + movq 56(%rdx), %rcx + movq %rax, 48(%r11) + adcq 56(%r12), %rcx + movq 64(%rdx), %r8 + movq %rcx, 56(%r11) + adcq 64(%r12), %r8 + movq 72(%rdx), %rax + movq %r8, 64(%r11) + adcq 72(%r12), %rax + movq 80(%rdx), %rcx + movq %rax, 72(%r11) + adcq 80(%r12), %rcx + movq 88(%rdx), %r8 + movq %rcx, 80(%r11) + adcq 88(%r12), %r8 + movq %r8, 88(%r11) + adcq $0, %r14 + movq %r14, 608(%rsp) + movq %r11, %rdx + movq %r10, %rsi + movq %rsp, %rdi +#ifndef __APPLE__ + callq sp_3072_mul_avx2_12@plt +#else + callq _sp_3072_mul_avx2_12 +#endif /* __APPLE__ */ + movq 592(%rsp), %rdx + movq 584(%rsp), %rsi + leaq 192(%rsp), %rdi + addq $96, %rdx + addq $96, %rsi +#ifndef __APPLE__ + callq sp_3072_mul_avx2_12@plt +#else + callq _sp_3072_mul_avx2_12 +#endif /* __APPLE__ */ + movq 592(%rsp), %rdx + movq 584(%rsp), %rsi + movq 576(%rsp), %rdi +#ifndef __APPLE__ + callq sp_3072_mul_avx2_12@plt +#else + callq _sp_3072_mul_avx2_12 +#endif /* __APPLE__ */ + movq 600(%rsp), %r13 + movq 608(%rsp), %r14 + movq 576(%rsp), %r15 + movq %r13, %r9 + leaq 384(%rsp), %r10 + leaq 480(%rsp), %r11 + andq %r14, %r9 + negq %r13 + negq %r14 + addq $192, %r15 + movq (%r10), %rax + movq (%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + addq %rcx, %rax + movq 8(%r10), %rcx + movq 8(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, (%r15) + adcq %r8, %rcx + movq 16(%r10), %r8 + movq 16(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 8(%r15) + adcq %rax, %r8 + movq 24(%r10), %rax + movq 24(%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + movq %r8, 16(%r15) + adcq %rcx, %rax + movq 32(%r10), %rcx + movq 32(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, 24(%r15) + adcq %r8, %rcx + movq 40(%r10), %r8 + movq 40(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 32(%r15) + adcq %rax, %r8 + movq 48(%r10), %rax + movq 48(%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + movq %r8, 40(%r15) + adcq %rcx, %rax + movq 56(%r10), %rcx + movq 56(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, 48(%r15) + adcq %r8, %rcx + movq 64(%r10), %r8 + movq 64(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 56(%r15) + adcq %rax, %r8 + movq 72(%r10), %rax + movq 72(%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + movq %r8, 64(%r15) + adcq %rcx, %rax + movq 80(%r10), %rcx + movq 80(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, 72(%r15) + adcq %r8, %rcx + movq 88(%r10), %r8 + movq 88(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 80(%r15) + adcq %rax, %r8 + movq %r8, 88(%r15) + adcq $0, %r9 + leaq 192(%rsp), %r11 + movq %rsp, %r10 + movq (%r10), %rax + subq (%r11), %rax + movq 8(%r10), %rcx + movq %rax, (%r10) + sbbq 8(%r11), %rcx + movq 16(%r10), %r8 + movq %rcx, 8(%r10) + sbbq 16(%r11), %r8 + movq 24(%r10), %rax + movq %r8, 16(%r10) + sbbq 24(%r11), %rax + movq 32(%r10), %rcx + movq %rax, 24(%r10) + sbbq 32(%r11), %rcx + movq 40(%r10), %r8 + movq %rcx, 32(%r10) + sbbq 40(%r11), %r8 + movq 48(%r10), %rax + movq %r8, 40(%r10) + sbbq 48(%r11), %rax + movq 56(%r10), %rcx + movq %rax, 48(%r10) + sbbq 56(%r11), %rcx + movq 64(%r10), %r8 + movq %rcx, 56(%r10) + sbbq 64(%r11), %r8 + movq 72(%r10), %rax + movq %r8, 64(%r10) + sbbq 72(%r11), %rax + movq 80(%r10), %rcx + movq %rax, 72(%r10) + sbbq 80(%r11), %rcx + movq 88(%r10), %r8 + movq %rcx, 80(%r10) + sbbq 88(%r11), %r8 + movq 96(%r10), %rax + movq %r8, 88(%r10) + sbbq 96(%r11), %rax + movq 104(%r10), %rcx + movq %rax, 96(%r10) + sbbq 104(%r11), %rcx + movq 112(%r10), %r8 + movq %rcx, 104(%r10) + sbbq 112(%r11), %r8 + movq 120(%r10), %rax + movq %r8, 112(%r10) + sbbq 120(%r11), %rax + movq 128(%r10), %rcx + movq %rax, 120(%r10) + sbbq 128(%r11), %rcx + movq 136(%r10), %r8 + movq %rcx, 128(%r10) + sbbq 136(%r11), %r8 + movq 144(%r10), %rax + movq %r8, 136(%r10) + sbbq 144(%r11), %rax + movq 152(%r10), %rcx + movq %rax, 144(%r10) + sbbq 152(%r11), %rcx + movq 160(%r10), %r8 + movq %rcx, 152(%r10) + sbbq 160(%r11), %r8 + movq 168(%r10), %rax + movq %r8, 160(%r10) + sbbq 168(%r11), %rax + movq 176(%r10), %rcx + movq %rax, 168(%r10) + sbbq 176(%r11), %rcx + movq 184(%r10), %r8 + movq %rcx, 176(%r10) + sbbq 184(%r11), %r8 + movq %r8, 184(%r10) + sbbq $0, %r9 + movq (%r10), %rax + subq (%rdi), %rax + movq 8(%r10), %rcx + movq %rax, (%r10) + sbbq 8(%rdi), %rcx + movq 16(%r10), %r8 + movq %rcx, 8(%r10) + sbbq 16(%rdi), %r8 + movq 24(%r10), %rax + movq %r8, 16(%r10) + sbbq 24(%rdi), %rax + movq 32(%r10), %rcx + movq %rax, 24(%r10) + sbbq 32(%rdi), %rcx + movq 40(%r10), %r8 + movq %rcx, 32(%r10) + sbbq 40(%rdi), %r8 + movq 48(%r10), %rax + movq %r8, 40(%r10) + sbbq 48(%rdi), %rax + movq 56(%r10), %rcx + movq %rax, 48(%r10) + sbbq 56(%rdi), %rcx + movq 64(%r10), %r8 + movq %rcx, 56(%r10) + sbbq 64(%rdi), %r8 + movq 72(%r10), %rax + movq %r8, 64(%r10) + sbbq 72(%rdi), %rax + movq 80(%r10), %rcx + movq %rax, 72(%r10) + sbbq 80(%rdi), %rcx + movq 88(%r10), %r8 + movq %rcx, 80(%r10) + sbbq 88(%rdi), %r8 + movq 96(%r10), %rax + movq %r8, 88(%r10) + sbbq 96(%rdi), %rax + movq 104(%r10), %rcx + movq %rax, 96(%r10) + sbbq 104(%rdi), %rcx + movq 112(%r10), %r8 + movq %rcx, 104(%r10) + sbbq 112(%rdi), %r8 + movq 120(%r10), %rax + movq %r8, 112(%r10) + sbbq 120(%rdi), %rax + movq 128(%r10), %rcx + movq %rax, 120(%r10) + sbbq 128(%rdi), %rcx + movq 136(%r10), %r8 + movq %rcx, 128(%r10) + sbbq 136(%rdi), %r8 + movq 144(%r10), %rax + movq %r8, 136(%r10) + sbbq 144(%rdi), %rax + movq 152(%r10), %rcx + movq %rax, 144(%r10) + sbbq 152(%rdi), %rcx + movq 160(%r10), %r8 + movq %rcx, 152(%r10) + sbbq 160(%rdi), %r8 + movq 168(%r10), %rax + movq %r8, 160(%r10) + sbbq 168(%rdi), %rax + movq 176(%r10), %rcx + movq %rax, 168(%r10) + sbbq 176(%rdi), %rcx + movq 184(%r10), %r8 + movq %rcx, 176(%r10) + sbbq 184(%rdi), %r8 + movq %r8, 184(%r10) + sbbq $0, %r9 + subq $96, %r15 + # Add + movq (%r15), %rax + addq (%r10), %rax + movq 8(%r15), %rcx + movq %rax, (%r15) + adcq 8(%r10), %rcx + movq 16(%r15), %r8 + movq %rcx, 8(%r15) + adcq 16(%r10), %r8 + movq 24(%r15), %rax + movq %r8, 16(%r15) + adcq 24(%r10), %rax + movq 32(%r15), %rcx + movq %rax, 24(%r15) + adcq 32(%r10), %rcx + movq 40(%r15), %r8 + movq %rcx, 32(%r15) + adcq 40(%r10), %r8 + movq 48(%r15), %rax + movq %r8, 40(%r15) + adcq 48(%r10), %rax + movq 56(%r15), %rcx + movq %rax, 48(%r15) + adcq 56(%r10), %rcx + movq 64(%r15), %r8 + movq %rcx, 56(%r15) + adcq 64(%r10), %r8 + movq 72(%r15), %rax + movq %r8, 64(%r15) + adcq 72(%r10), %rax + movq 80(%r15), %rcx + movq %rax, 72(%r15) + adcq 80(%r10), %rcx + movq 88(%r15), %r8 + movq %rcx, 80(%r15) + adcq 88(%r10), %r8 + movq 96(%r15), %rax + movq %r8, 88(%r15) + adcq 96(%r10), %rax + movq 104(%r15), %rcx + movq %rax, 96(%r15) + adcq 104(%r10), %rcx + movq 112(%r15), %r8 + movq %rcx, 104(%r15) + adcq 112(%r10), %r8 + movq 120(%r15), %rax + movq %r8, 112(%r15) + adcq 120(%r10), %rax + movq 128(%r15), %rcx + movq %rax, 120(%r15) + adcq 128(%r10), %rcx + movq 136(%r15), %r8 + movq %rcx, 128(%r15) + adcq 136(%r10), %r8 + movq 144(%r15), %rax + movq %r8, 136(%r15) + adcq 144(%r10), %rax + movq 152(%r15), %rcx + movq %rax, 144(%r15) + adcq 152(%r10), %rcx + movq 160(%r15), %r8 + movq %rcx, 152(%r15) + adcq 160(%r10), %r8 + movq 168(%r15), %rax + movq %r8, 160(%r15) + adcq 168(%r10), %rax + movq 176(%r15), %rcx + movq %rax, 168(%r15) + adcq 176(%r10), %rcx + movq 184(%r15), %r8 + movq %rcx, 176(%r15) + adcq 184(%r10), %r8 + movq %r8, 184(%r15) + adcq $0, %r9 + movq %r9, 288(%rdi) + addq $96, %r15 + # Add + movq (%r15), %rax + addq (%r11), %rax + movq 8(%r15), %rcx + movq %rax, (%r15) + adcq 8(%r11), %rcx + movq 16(%r15), %r8 + movq %rcx, 8(%r15) + adcq 16(%r11), %r8 + movq 24(%r15), %rax + movq %r8, 16(%r15) + adcq 24(%r11), %rax + movq 32(%r15), %rcx + movq %rax, 24(%r15) + adcq 32(%r11), %rcx + movq 40(%r15), %r8 + movq %rcx, 32(%r15) + adcq 40(%r11), %r8 + movq 48(%r15), %rax + movq %r8, 40(%r15) + adcq 48(%r11), %rax + movq 56(%r15), %rcx + movq %rax, 48(%r15) + adcq 56(%r11), %rcx + movq 64(%r15), %r8 + movq %rcx, 56(%r15) + adcq 64(%r11), %r8 + movq 72(%r15), %rax + movq %r8, 64(%r15) + adcq 72(%r11), %rax + movq 80(%r15), %rcx + movq %rax, 72(%r15) + adcq 80(%r11), %rcx + movq 88(%r15), %r8 + movq %rcx, 80(%r15) + adcq 88(%r11), %r8 + movq 96(%r15), %rax + movq %r8, 88(%r15) + adcq 96(%r11), %rax + movq %rax, 96(%r15) + # Add to zero + movq 104(%r11), %rax + adcq $0, %rax + movq 112(%r11), %rcx + movq %rax, 104(%r15) + adcq $0, %rcx + movq 120(%r11), %r8 + movq %rcx, 112(%r15) + adcq $0, %r8 + movq 128(%r11), %rax + movq %r8, 120(%r15) + adcq $0, %rax + movq 136(%r11), %rcx + movq %rax, 128(%r15) + adcq $0, %rcx + movq 144(%r11), %r8 + movq %rcx, 136(%r15) + adcq $0, %r8 + movq 152(%r11), %rax + movq %r8, 144(%r15) + adcq $0, %rax + movq 160(%r11), %rcx + movq %rax, 152(%r15) + adcq $0, %rcx + movq 168(%r11), %r8 + movq %rcx, 160(%r15) + adcq $0, %r8 + movq 176(%r11), %rax + movq %r8, 168(%r15) + adcq $0, %rax + movq 184(%r11), %rcx + movq %rax, 176(%r15) + adcq $0, %rcx + movq %rcx, 184(%r15) + addq $616, %rsp + pop %r15 + pop %r14 + pop %r13 + pop %r12 + repz retq +#ifndef __APPLE__ +.size sp_3072_mul_avx2_24,.-sp_3072_mul_avx2_24 +#endif /* __APPLE__ */ +/* Square a and put result in r. (r = a * a) + * + * r A single precision integer. + * a A single precision integer. + */ +#ifndef __APPLE__ +.globl sp_3072_sqr_avx2_24 +.type sp_3072_sqr_avx2_24,@function +.align 16 +sp_3072_sqr_avx2_24: +#else +.globl _sp_3072_sqr_avx2_24 +.p2align 4 +_sp_3072_sqr_avx2_24: +#endif /* __APPLE__ */ + subq $504, %rsp + movq %rdi, 480(%rsp) + movq %rsi, 488(%rsp) + leaq 384(%rsp), %r8 + leaq 96(%rsi), %r9 + # Add + movq (%rsi), %rdx + xorq %rcx, %rcx + addq (%r9), %rdx + movq 8(%rsi), %rax + movq %rdx, (%r8) + adcq 8(%r9), %rax + movq 16(%rsi), %rdx + movq %rax, 8(%r8) + adcq 16(%r9), %rdx + movq 24(%rsi), %rax + movq %rdx, 16(%r8) + adcq 24(%r9), %rax + movq 32(%rsi), %rdx + movq %rax, 24(%r8) + adcq 32(%r9), %rdx + movq 40(%rsi), %rax + movq %rdx, 32(%r8) + adcq 40(%r9), %rax + movq 48(%rsi), %rdx + movq %rax, 40(%r8) + adcq 48(%r9), %rdx + movq 56(%rsi), %rax + movq %rdx, 48(%r8) + adcq 56(%r9), %rax + movq 64(%rsi), %rdx + movq %rax, 56(%r8) + adcq 64(%r9), %rdx + movq 72(%rsi), %rax + movq %rdx, 64(%r8) + adcq 72(%r9), %rax + movq 80(%rsi), %rdx + movq %rax, 72(%r8) + adcq 80(%r9), %rdx + movq 88(%rsi), %rax + movq %rdx, 80(%r8) + adcq 88(%r9), %rax + movq %rax, 88(%r8) + adcq $0, %rcx + movq %rcx, 496(%rsp) + movq %r8, %rsi + movq %rsp, %rdi +#ifndef __APPLE__ + callq sp_3072_sqr_avx2_12@plt +#else + callq _sp_3072_sqr_avx2_12 +#endif /* __APPLE__ */ + movq 488(%rsp), %rsi + leaq 192(%rsp), %rdi + addq $96, %rsi +#ifndef __APPLE__ + callq sp_3072_sqr_avx2_12@plt +#else + callq _sp_3072_sqr_avx2_12 +#endif /* __APPLE__ */ + movq 488(%rsp), %rsi + movq 480(%rsp), %rdi +#ifndef __APPLE__ + callq sp_3072_sqr_avx2_12@plt +#else + callq _sp_3072_sqr_avx2_12 +#endif /* __APPLE__ */ + movq 496(%rsp), %r10 + movq %rdi, %r9 + leaq 384(%rsp), %r8 + movq %r10, %rcx + negq %r10 + addq $192, %r9 + movq (%r8), %rdx + pextq %r10, %rdx, %rdx + addq %rdx, %rdx + movq 8(%r8), %rax + movq %rdx, (%r9) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 16(%r8), %rdx + movq %rax, 8(%r9) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 24(%r8), %rax + movq %rdx, 16(%r9) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 32(%r8), %rdx + movq %rax, 24(%r9) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 40(%r8), %rax + movq %rdx, 32(%r9) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 48(%r8), %rdx + movq %rax, 40(%r9) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 56(%r8), %rax + movq %rdx, 48(%r9) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 64(%r8), %rdx + movq %rax, 56(%r9) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 72(%r8), %rax + movq %rdx, 64(%r9) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 80(%r8), %rdx + movq %rax, 72(%r9) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 88(%r8), %rax + movq %rdx, 80(%r9) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq %rax, 88(%r9) + adcq $0, %rcx + leaq 192(%rsp), %rsi + movq %rsp, %r8 + movq (%r8), %rdx + subq (%rsi), %rdx + movq 8(%r8), %rax + movq %rdx, (%r8) + sbbq 8(%rsi), %rax + movq 16(%r8), %rdx + movq %rax, 8(%r8) + sbbq 16(%rsi), %rdx + movq 24(%r8), %rax + movq %rdx, 16(%r8) + sbbq 24(%rsi), %rax + movq 32(%r8), %rdx + movq %rax, 24(%r8) + sbbq 32(%rsi), %rdx + movq 40(%r8), %rax + movq %rdx, 32(%r8) + sbbq 40(%rsi), %rax + movq 48(%r8), %rdx + movq %rax, 40(%r8) + sbbq 48(%rsi), %rdx + movq 56(%r8), %rax + movq %rdx, 48(%r8) + sbbq 56(%rsi), %rax + movq 64(%r8), %rdx + movq %rax, 56(%r8) + sbbq 64(%rsi), %rdx + movq 72(%r8), %rax + movq %rdx, 64(%r8) + sbbq 72(%rsi), %rax + movq 80(%r8), %rdx + movq %rax, 72(%r8) + sbbq 80(%rsi), %rdx + movq 88(%r8), %rax + movq %rdx, 80(%r8) + sbbq 88(%rsi), %rax + movq 96(%r8), %rdx + movq %rax, 88(%r8) + sbbq 96(%rsi), %rdx + movq 104(%r8), %rax + movq %rdx, 96(%r8) + sbbq 104(%rsi), %rax + movq 112(%r8), %rdx + movq %rax, 104(%r8) + sbbq 112(%rsi), %rdx + movq 120(%r8), %rax + movq %rdx, 112(%r8) + sbbq 120(%rsi), %rax + movq 128(%r8), %rdx + movq %rax, 120(%r8) + sbbq 128(%rsi), %rdx + movq 136(%r8), %rax + movq %rdx, 128(%r8) + sbbq 136(%rsi), %rax + movq 144(%r8), %rdx + movq %rax, 136(%r8) + sbbq 144(%rsi), %rdx + movq 152(%r8), %rax + movq %rdx, 144(%r8) + sbbq 152(%rsi), %rax + movq 160(%r8), %rdx + movq %rax, 152(%r8) + sbbq 160(%rsi), %rdx + movq 168(%r8), %rax + movq %rdx, 160(%r8) + sbbq 168(%rsi), %rax + movq 176(%r8), %rdx + movq %rax, 168(%r8) + sbbq 176(%rsi), %rdx + movq 184(%r8), %rax + movq %rdx, 176(%r8) + sbbq 184(%rsi), %rax + movq %rax, 184(%r8) + sbbq $0, %rcx + movq (%r8), %rdx + subq (%rdi), %rdx + movq 8(%r8), %rax + movq %rdx, (%r8) + sbbq 8(%rdi), %rax + movq 16(%r8), %rdx + movq %rax, 8(%r8) + sbbq 16(%rdi), %rdx + movq 24(%r8), %rax + movq %rdx, 16(%r8) + sbbq 24(%rdi), %rax + movq 32(%r8), %rdx + movq %rax, 24(%r8) + sbbq 32(%rdi), %rdx + movq 40(%r8), %rax + movq %rdx, 32(%r8) + sbbq 40(%rdi), %rax + movq 48(%r8), %rdx + movq %rax, 40(%r8) + sbbq 48(%rdi), %rdx + movq 56(%r8), %rax + movq %rdx, 48(%r8) + sbbq 56(%rdi), %rax + movq 64(%r8), %rdx + movq %rax, 56(%r8) + sbbq 64(%rdi), %rdx + movq 72(%r8), %rax + movq %rdx, 64(%r8) + sbbq 72(%rdi), %rax + movq 80(%r8), %rdx + movq %rax, 72(%r8) + sbbq 80(%rdi), %rdx + movq 88(%r8), %rax + movq %rdx, 80(%r8) + sbbq 88(%rdi), %rax + movq 96(%r8), %rdx + movq %rax, 88(%r8) + sbbq 96(%rdi), %rdx + movq 104(%r8), %rax + movq %rdx, 96(%r8) + sbbq 104(%rdi), %rax + movq 112(%r8), %rdx + movq %rax, 104(%r8) + sbbq 112(%rdi), %rdx + movq 120(%r8), %rax + movq %rdx, 112(%r8) + sbbq 120(%rdi), %rax + movq 128(%r8), %rdx + movq %rax, 120(%r8) + sbbq 128(%rdi), %rdx + movq 136(%r8), %rax + movq %rdx, 128(%r8) + sbbq 136(%rdi), %rax + movq 144(%r8), %rdx + movq %rax, 136(%r8) + sbbq 144(%rdi), %rdx + movq 152(%r8), %rax + movq %rdx, 144(%r8) + sbbq 152(%rdi), %rax + movq 160(%r8), %rdx + movq %rax, 152(%r8) + sbbq 160(%rdi), %rdx + movq 168(%r8), %rax + movq %rdx, 160(%r8) + sbbq 168(%rdi), %rax + movq 176(%r8), %rdx + movq %rax, 168(%r8) + sbbq 176(%rdi), %rdx + movq 184(%r8), %rax + movq %rdx, 176(%r8) + sbbq 184(%rdi), %rax + movq %rax, 184(%r8) + sbbq $0, %rcx + subq $96, %r9 + # Add in place + movq (%r9), %rdx + addq (%r8), %rdx + movq 8(%r9), %rax + movq %rdx, (%r9) + adcq 8(%r8), %rax + movq 16(%r9), %rdx + movq %rax, 8(%r9) + adcq 16(%r8), %rdx + movq 24(%r9), %rax + movq %rdx, 16(%r9) + adcq 24(%r8), %rax + movq 32(%r9), %rdx + movq %rax, 24(%r9) + adcq 32(%r8), %rdx + movq 40(%r9), %rax + movq %rdx, 32(%r9) + adcq 40(%r8), %rax + movq 48(%r9), %rdx + movq %rax, 40(%r9) + adcq 48(%r8), %rdx + movq 56(%r9), %rax + movq %rdx, 48(%r9) + adcq 56(%r8), %rax + movq 64(%r9), %rdx + movq %rax, 56(%r9) + adcq 64(%r8), %rdx + movq 72(%r9), %rax + movq %rdx, 64(%r9) + adcq 72(%r8), %rax + movq 80(%r9), %rdx + movq %rax, 72(%r9) + adcq 80(%r8), %rdx + movq 88(%r9), %rax + movq %rdx, 80(%r9) + adcq 88(%r8), %rax + movq 96(%r9), %rdx + movq %rax, 88(%r9) + adcq 96(%r8), %rdx + movq 104(%r9), %rax + movq %rdx, 96(%r9) + adcq 104(%r8), %rax + movq 112(%r9), %rdx + movq %rax, 104(%r9) + adcq 112(%r8), %rdx + movq 120(%r9), %rax + movq %rdx, 112(%r9) + adcq 120(%r8), %rax + movq 128(%r9), %rdx + movq %rax, 120(%r9) + adcq 128(%r8), %rdx + movq 136(%r9), %rax + movq %rdx, 128(%r9) + adcq 136(%r8), %rax + movq 144(%r9), %rdx + movq %rax, 136(%r9) + adcq 144(%r8), %rdx + movq 152(%r9), %rax + movq %rdx, 144(%r9) + adcq 152(%r8), %rax + movq 160(%r9), %rdx + movq %rax, 152(%r9) + adcq 160(%r8), %rdx + movq 168(%r9), %rax + movq %rdx, 160(%r9) + adcq 168(%r8), %rax + movq 176(%r9), %rdx + movq %rax, 168(%r9) + adcq 176(%r8), %rdx + movq 184(%r9), %rax + movq %rdx, 176(%r9) + adcq 184(%r8), %rax + movq %rax, 184(%r9) + adcq $0, %rcx + movq %rcx, 288(%rdi) + # Add in place + movq 96(%r9), %rdx + addq (%rsi), %rdx + movq 104(%r9), %rax + movq %rdx, 96(%r9) + adcq 8(%rsi), %rax + movq 112(%r9), %rdx + movq %rax, 104(%r9) + adcq 16(%rsi), %rdx + movq 120(%r9), %rax + movq %rdx, 112(%r9) + adcq 24(%rsi), %rax + movq 128(%r9), %rdx + movq %rax, 120(%r9) + adcq 32(%rsi), %rdx + movq 136(%r9), %rax + movq %rdx, 128(%r9) + adcq 40(%rsi), %rax + movq 144(%r9), %rdx + movq %rax, 136(%r9) + adcq 48(%rsi), %rdx + movq 152(%r9), %rax + movq %rdx, 144(%r9) + adcq 56(%rsi), %rax + movq 160(%r9), %rdx + movq %rax, 152(%r9) + adcq 64(%rsi), %rdx + movq 168(%r9), %rax + movq %rdx, 160(%r9) + adcq 72(%rsi), %rax + movq 176(%r9), %rdx + movq %rax, 168(%r9) + adcq 80(%rsi), %rdx + movq 184(%r9), %rax + movq %rdx, 176(%r9) + adcq 88(%rsi), %rax + movq 192(%r9), %rdx + movq %rax, 184(%r9) + adcq 96(%rsi), %rdx + movq %rdx, 192(%r9) + # Add to zero + movq 104(%rsi), %rdx + adcq $0, %rdx + movq 112(%rsi), %rax + movq %rdx, 200(%r9) + adcq $0, %rax + movq 120(%rsi), %rdx + movq %rax, 208(%r9) + adcq $0, %rdx + movq 128(%rsi), %rax + movq %rdx, 216(%r9) + adcq $0, %rax + movq 136(%rsi), %rdx + movq %rax, 224(%r9) + adcq $0, %rdx + movq 144(%rsi), %rax + movq %rdx, 232(%r9) + adcq $0, %rax + movq 152(%rsi), %rdx + movq %rax, 240(%r9) + adcq $0, %rdx + movq 160(%rsi), %rax + movq %rdx, 248(%r9) + adcq $0, %rax + movq 168(%rsi), %rdx + movq %rax, 256(%r9) + adcq $0, %rdx + movq 176(%rsi), %rax + movq %rdx, 264(%r9) + adcq $0, %rax + movq 184(%rsi), %rdx + movq %rax, 272(%r9) + adcq $0, %rdx + movq %rdx, 280(%r9) + addq $504, %rsp + repz retq +#ifndef __APPLE__ +.size sp_3072_sqr_avx2_24,.-sp_3072_sqr_avx2_24 +#endif /* __APPLE__ */ /* Sub b from a into a. (a -= b) * * a A single precision integer and result. @@ -21161,6 +17945,7 @@ sp_3072_add_48: .p2align 4 _sp_3072_add_48: #endif /* __APPLE__ */ + # Add movq (%rsi), %rcx xorq %rax, %rax addq (%rdx), %rcx @@ -21311,6 +18096,1035 @@ _sp_3072_add_48: #ifndef __APPLE__ .size sp_3072_add_48,.-sp_3072_add_48 #endif /* __APPLE__ */ +/* Multiply a and b into r. (r = a * b) + * + * r A single precision integer. + * a A single precision integer. + * b A single precision integer. + */ +#ifndef __APPLE__ +.globl sp_3072_mul_48 +.type sp_3072_mul_48,@function +.align 16 +sp_3072_mul_48: +#else +.globl _sp_3072_mul_48 +.p2align 4 +_sp_3072_mul_48: +#endif /* __APPLE__ */ + push %r12 + push %r13 + push %r14 + push %r15 + subq $1192, %rsp + movq %rdi, 1152(%rsp) + movq %rsi, 1160(%rsp) + movq %rdx, 1168(%rsp) + leaq 768(%rsp), %r10 + leaq 192(%rsi), %r12 + # Add + movq (%rsi), %rax + xorq %r13, %r13 + addq (%r12), %rax + movq 8(%rsi), %rcx + movq %rax, (%r10) + adcq 8(%r12), %rcx + movq 16(%rsi), %r8 + movq %rcx, 8(%r10) + adcq 16(%r12), %r8 + movq 24(%rsi), %rax + movq %r8, 16(%r10) + adcq 24(%r12), %rax + movq 32(%rsi), %rcx + movq %rax, 24(%r10) + adcq 32(%r12), %rcx + movq 40(%rsi), %r8 + movq %rcx, 32(%r10) + adcq 40(%r12), %r8 + movq 48(%rsi), %rax + movq %r8, 40(%r10) + adcq 48(%r12), %rax + movq 56(%rsi), %rcx + movq %rax, 48(%r10) + adcq 56(%r12), %rcx + movq 64(%rsi), %r8 + movq %rcx, 56(%r10) + adcq 64(%r12), %r8 + movq 72(%rsi), %rax + movq %r8, 64(%r10) + adcq 72(%r12), %rax + movq 80(%rsi), %rcx + movq %rax, 72(%r10) + adcq 80(%r12), %rcx + movq 88(%rsi), %r8 + movq %rcx, 80(%r10) + adcq 88(%r12), %r8 + movq 96(%rsi), %rax + movq %r8, 88(%r10) + adcq 96(%r12), %rax + movq 104(%rsi), %rcx + movq %rax, 96(%r10) + adcq 104(%r12), %rcx + movq 112(%rsi), %r8 + movq %rcx, 104(%r10) + adcq 112(%r12), %r8 + movq 120(%rsi), %rax + movq %r8, 112(%r10) + adcq 120(%r12), %rax + movq 128(%rsi), %rcx + movq %rax, 120(%r10) + adcq 128(%r12), %rcx + movq 136(%rsi), %r8 + movq %rcx, 128(%r10) + adcq 136(%r12), %r8 + movq 144(%rsi), %rax + movq %r8, 136(%r10) + adcq 144(%r12), %rax + movq 152(%rsi), %rcx + movq %rax, 144(%r10) + adcq 152(%r12), %rcx + movq 160(%rsi), %r8 + movq %rcx, 152(%r10) + adcq 160(%r12), %r8 + movq 168(%rsi), %rax + movq %r8, 160(%r10) + adcq 168(%r12), %rax + movq 176(%rsi), %rcx + movq %rax, 168(%r10) + adcq 176(%r12), %rcx + movq 184(%rsi), %r8 + movq %rcx, 176(%r10) + adcq 184(%r12), %r8 + movq %r8, 184(%r10) + adcq $0, %r13 + movq %r13, 1176(%rsp) + leaq 960(%rsp), %r11 + leaq 192(%rdx), %r12 + # Add + movq (%rdx), %rax + xorq %r14, %r14 + addq (%r12), %rax + movq 8(%rdx), %rcx + movq %rax, (%r11) + adcq 8(%r12), %rcx + movq 16(%rdx), %r8 + movq %rcx, 8(%r11) + adcq 16(%r12), %r8 + movq 24(%rdx), %rax + movq %r8, 16(%r11) + adcq 24(%r12), %rax + movq 32(%rdx), %rcx + movq %rax, 24(%r11) + adcq 32(%r12), %rcx + movq 40(%rdx), %r8 + movq %rcx, 32(%r11) + adcq 40(%r12), %r8 + movq 48(%rdx), %rax + movq %r8, 40(%r11) + adcq 48(%r12), %rax + movq 56(%rdx), %rcx + movq %rax, 48(%r11) + adcq 56(%r12), %rcx + movq 64(%rdx), %r8 + movq %rcx, 56(%r11) + adcq 64(%r12), %r8 + movq 72(%rdx), %rax + movq %r8, 64(%r11) + adcq 72(%r12), %rax + movq 80(%rdx), %rcx + movq %rax, 72(%r11) + adcq 80(%r12), %rcx + movq 88(%rdx), %r8 + movq %rcx, 80(%r11) + adcq 88(%r12), %r8 + movq 96(%rdx), %rax + movq %r8, 88(%r11) + adcq 96(%r12), %rax + movq 104(%rdx), %rcx + movq %rax, 96(%r11) + adcq 104(%r12), %rcx + movq 112(%rdx), %r8 + movq %rcx, 104(%r11) + adcq 112(%r12), %r8 + movq 120(%rdx), %rax + movq %r8, 112(%r11) + adcq 120(%r12), %rax + movq 128(%rdx), %rcx + movq %rax, 120(%r11) + adcq 128(%r12), %rcx + movq 136(%rdx), %r8 + movq %rcx, 128(%r11) + adcq 136(%r12), %r8 + movq 144(%rdx), %rax + movq %r8, 136(%r11) + adcq 144(%r12), %rax + movq 152(%rdx), %rcx + movq %rax, 144(%r11) + adcq 152(%r12), %rcx + movq 160(%rdx), %r8 + movq %rcx, 152(%r11) + adcq 160(%r12), %r8 + movq 168(%rdx), %rax + movq %r8, 160(%r11) + adcq 168(%r12), %rax + movq 176(%rdx), %rcx + movq %rax, 168(%r11) + adcq 176(%r12), %rcx + movq 184(%rdx), %r8 + movq %rcx, 176(%r11) + adcq 184(%r12), %r8 + movq %r8, 184(%r11) + adcq $0, %r14 + movq %r14, 1184(%rsp) + movq %r11, %rdx + movq %r10, %rsi + movq %rsp, %rdi +#ifndef __APPLE__ + callq sp_3072_mul_24@plt +#else + callq _sp_3072_mul_24 +#endif /* __APPLE__ */ + movq 1168(%rsp), %rdx + movq 1160(%rsp), %rsi + leaq 384(%rsp), %rdi + addq $192, %rdx + addq $192, %rsi +#ifndef __APPLE__ + callq sp_3072_mul_24@plt +#else + callq _sp_3072_mul_24 +#endif /* __APPLE__ */ + movq 1168(%rsp), %rdx + movq 1160(%rsp), %rsi + movq 1152(%rsp), %rdi +#ifndef __APPLE__ + callq sp_3072_mul_24@plt +#else + callq _sp_3072_mul_24 +#endif /* __APPLE__ */ + movq 1176(%rsp), %r13 + movq 1184(%rsp), %r14 + movq 1152(%rsp), %r15 + movq %r13, %r9 + leaq 768(%rsp), %r10 + leaq 960(%rsp), %r11 + andq %r14, %r9 + negq %r13 + negq %r14 + addq $384, %r15 + movq (%r10), %rax + movq (%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, (%r10) + movq %rcx, (%r11) + movq 8(%r10), %rax + movq 8(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 8(%r10) + movq %rcx, 8(%r11) + movq 16(%r10), %rax + movq 16(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 16(%r10) + movq %rcx, 16(%r11) + movq 24(%r10), %rax + movq 24(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 24(%r10) + movq %rcx, 24(%r11) + movq 32(%r10), %rax + movq 32(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 32(%r10) + movq %rcx, 32(%r11) + movq 40(%r10), %rax + movq 40(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 40(%r10) + movq %rcx, 40(%r11) + movq 48(%r10), %rax + movq 48(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 48(%r10) + movq %rcx, 48(%r11) + movq 56(%r10), %rax + movq 56(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 56(%r10) + movq %rcx, 56(%r11) + movq 64(%r10), %rax + movq 64(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 64(%r10) + movq %rcx, 64(%r11) + movq 72(%r10), %rax + movq 72(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 72(%r10) + movq %rcx, 72(%r11) + movq 80(%r10), %rax + movq 80(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 80(%r10) + movq %rcx, 80(%r11) + movq 88(%r10), %rax + movq 88(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 88(%r10) + movq %rcx, 88(%r11) + movq 96(%r10), %rax + movq 96(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 96(%r10) + movq %rcx, 96(%r11) + movq 104(%r10), %rax + movq 104(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 104(%r10) + movq %rcx, 104(%r11) + movq 112(%r10), %rax + movq 112(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 112(%r10) + movq %rcx, 112(%r11) + movq 120(%r10), %rax + movq 120(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 120(%r10) + movq %rcx, 120(%r11) + movq 128(%r10), %rax + movq 128(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 128(%r10) + movq %rcx, 128(%r11) + movq 136(%r10), %rax + movq 136(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 136(%r10) + movq %rcx, 136(%r11) + movq 144(%r10), %rax + movq 144(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 144(%r10) + movq %rcx, 144(%r11) + movq 152(%r10), %rax + movq 152(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 152(%r10) + movq %rcx, 152(%r11) + movq 160(%r10), %rax + movq 160(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 160(%r10) + movq %rcx, 160(%r11) + movq 168(%r10), %rax + movq 168(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 168(%r10) + movq %rcx, 168(%r11) + movq 176(%r10), %rax + movq 176(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 176(%r10) + movq %rcx, 176(%r11) + movq 184(%r10), %rax + movq 184(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 184(%r10) + movq %rcx, 184(%r11) + movq (%r10), %rax + addq (%r11), %rax + movq 8(%r10), %rcx + movq %rax, (%r15) + adcq 8(%r11), %rcx + movq 16(%r10), %r8 + movq %rcx, 8(%r15) + adcq 16(%r11), %r8 + movq 24(%r10), %rax + movq %r8, 16(%r15) + adcq 24(%r11), %rax + movq 32(%r10), %rcx + movq %rax, 24(%r15) + adcq 32(%r11), %rcx + movq 40(%r10), %r8 + movq %rcx, 32(%r15) + adcq 40(%r11), %r8 + movq 48(%r10), %rax + movq %r8, 40(%r15) + adcq 48(%r11), %rax + movq 56(%r10), %rcx + movq %rax, 48(%r15) + adcq 56(%r11), %rcx + movq 64(%r10), %r8 + movq %rcx, 56(%r15) + adcq 64(%r11), %r8 + movq 72(%r10), %rax + movq %r8, 64(%r15) + adcq 72(%r11), %rax + movq 80(%r10), %rcx + movq %rax, 72(%r15) + adcq 80(%r11), %rcx + movq 88(%r10), %r8 + movq %rcx, 80(%r15) + adcq 88(%r11), %r8 + movq 96(%r10), %rax + movq %r8, 88(%r15) + adcq 96(%r11), %rax + movq 104(%r10), %rcx + movq %rax, 96(%r15) + adcq 104(%r11), %rcx + movq 112(%r10), %r8 + movq %rcx, 104(%r15) + adcq 112(%r11), %r8 + movq 120(%r10), %rax + movq %r8, 112(%r15) + adcq 120(%r11), %rax + movq 128(%r10), %rcx + movq %rax, 120(%r15) + adcq 128(%r11), %rcx + movq 136(%r10), %r8 + movq %rcx, 128(%r15) + adcq 136(%r11), %r8 + movq 144(%r10), %rax + movq %r8, 136(%r15) + adcq 144(%r11), %rax + movq 152(%r10), %rcx + movq %rax, 144(%r15) + adcq 152(%r11), %rcx + movq 160(%r10), %r8 + movq %rcx, 152(%r15) + adcq 160(%r11), %r8 + movq 168(%r10), %rax + movq %r8, 160(%r15) + adcq 168(%r11), %rax + movq 176(%r10), %rcx + movq %rax, 168(%r15) + adcq 176(%r11), %rcx + movq 184(%r10), %r8 + movq %rcx, 176(%r15) + adcq 184(%r11), %r8 + movq %r8, 184(%r15) + adcq $0, %r9 + leaq 384(%rsp), %r11 + movq %rsp, %r10 + movq (%r10), %rax + subq (%r11), %rax + movq 8(%r10), %rcx + movq %rax, (%r10) + sbbq 8(%r11), %rcx + movq 16(%r10), %r8 + movq %rcx, 8(%r10) + sbbq 16(%r11), %r8 + movq 24(%r10), %rax + movq %r8, 16(%r10) + sbbq 24(%r11), %rax + movq 32(%r10), %rcx + movq %rax, 24(%r10) + sbbq 32(%r11), %rcx + movq 40(%r10), %r8 + movq %rcx, 32(%r10) + sbbq 40(%r11), %r8 + movq 48(%r10), %rax + movq %r8, 40(%r10) + sbbq 48(%r11), %rax + movq 56(%r10), %rcx + movq %rax, 48(%r10) + sbbq 56(%r11), %rcx + movq 64(%r10), %r8 + movq %rcx, 56(%r10) + sbbq 64(%r11), %r8 + movq 72(%r10), %rax + movq %r8, 64(%r10) + sbbq 72(%r11), %rax + movq 80(%r10), %rcx + movq %rax, 72(%r10) + sbbq 80(%r11), %rcx + movq 88(%r10), %r8 + movq %rcx, 80(%r10) + sbbq 88(%r11), %r8 + movq 96(%r10), %rax + movq %r8, 88(%r10) + sbbq 96(%r11), %rax + movq 104(%r10), %rcx + movq %rax, 96(%r10) + sbbq 104(%r11), %rcx + movq 112(%r10), %r8 + movq %rcx, 104(%r10) + sbbq 112(%r11), %r8 + movq 120(%r10), %rax + movq %r8, 112(%r10) + sbbq 120(%r11), %rax + movq 128(%r10), %rcx + movq %rax, 120(%r10) + sbbq 128(%r11), %rcx + movq 136(%r10), %r8 + movq %rcx, 128(%r10) + sbbq 136(%r11), %r8 + movq 144(%r10), %rax + movq %r8, 136(%r10) + sbbq 144(%r11), %rax + movq 152(%r10), %rcx + movq %rax, 144(%r10) + sbbq 152(%r11), %rcx + movq 160(%r10), %r8 + movq %rcx, 152(%r10) + sbbq 160(%r11), %r8 + movq 168(%r10), %rax + movq %r8, 160(%r10) + sbbq 168(%r11), %rax + movq 176(%r10), %rcx + movq %rax, 168(%r10) + sbbq 176(%r11), %rcx + movq 184(%r10), %r8 + movq %rcx, 176(%r10) + sbbq 184(%r11), %r8 + movq 192(%r10), %rax + movq %r8, 184(%r10) + sbbq 192(%r11), %rax + movq 200(%r10), %rcx + movq %rax, 192(%r10) + sbbq 200(%r11), %rcx + movq 208(%r10), %r8 + movq %rcx, 200(%r10) + sbbq 208(%r11), %r8 + movq 216(%r10), %rax + movq %r8, 208(%r10) + sbbq 216(%r11), %rax + movq 224(%r10), %rcx + movq %rax, 216(%r10) + sbbq 224(%r11), %rcx + movq 232(%r10), %r8 + movq %rcx, 224(%r10) + sbbq 232(%r11), %r8 + movq 240(%r10), %rax + movq %r8, 232(%r10) + sbbq 240(%r11), %rax + movq 248(%r10), %rcx + movq %rax, 240(%r10) + sbbq 248(%r11), %rcx + movq 256(%r10), %r8 + movq %rcx, 248(%r10) + sbbq 256(%r11), %r8 + movq 264(%r10), %rax + movq %r8, 256(%r10) + sbbq 264(%r11), %rax + movq 272(%r10), %rcx + movq %rax, 264(%r10) + sbbq 272(%r11), %rcx + movq 280(%r10), %r8 + movq %rcx, 272(%r10) + sbbq 280(%r11), %r8 + movq 288(%r10), %rax + movq %r8, 280(%r10) + sbbq 288(%r11), %rax + movq 296(%r10), %rcx + movq %rax, 288(%r10) + sbbq 296(%r11), %rcx + movq 304(%r10), %r8 + movq %rcx, 296(%r10) + sbbq 304(%r11), %r8 + movq 312(%r10), %rax + movq %r8, 304(%r10) + sbbq 312(%r11), %rax + movq 320(%r10), %rcx + movq %rax, 312(%r10) + sbbq 320(%r11), %rcx + movq 328(%r10), %r8 + movq %rcx, 320(%r10) + sbbq 328(%r11), %r8 + movq 336(%r10), %rax + movq %r8, 328(%r10) + sbbq 336(%r11), %rax + movq 344(%r10), %rcx + movq %rax, 336(%r10) + sbbq 344(%r11), %rcx + movq 352(%r10), %r8 + movq %rcx, 344(%r10) + sbbq 352(%r11), %r8 + movq 360(%r10), %rax + movq %r8, 352(%r10) + sbbq 360(%r11), %rax + movq 368(%r10), %rcx + movq %rax, 360(%r10) + sbbq 368(%r11), %rcx + movq 376(%r10), %r8 + movq %rcx, 368(%r10) + sbbq 376(%r11), %r8 + movq %r8, 376(%r10) + sbbq $0, %r9 + movq (%r10), %rax + subq (%rdi), %rax + movq 8(%r10), %rcx + movq %rax, (%r10) + sbbq 8(%rdi), %rcx + movq 16(%r10), %r8 + movq %rcx, 8(%r10) + sbbq 16(%rdi), %r8 + movq 24(%r10), %rax + movq %r8, 16(%r10) + sbbq 24(%rdi), %rax + movq 32(%r10), %rcx + movq %rax, 24(%r10) + sbbq 32(%rdi), %rcx + movq 40(%r10), %r8 + movq %rcx, 32(%r10) + sbbq 40(%rdi), %r8 + movq 48(%r10), %rax + movq %r8, 40(%r10) + sbbq 48(%rdi), %rax + movq 56(%r10), %rcx + movq %rax, 48(%r10) + sbbq 56(%rdi), %rcx + movq 64(%r10), %r8 + movq %rcx, 56(%r10) + sbbq 64(%rdi), %r8 + movq 72(%r10), %rax + movq %r8, 64(%r10) + sbbq 72(%rdi), %rax + movq 80(%r10), %rcx + movq %rax, 72(%r10) + sbbq 80(%rdi), %rcx + movq 88(%r10), %r8 + movq %rcx, 80(%r10) + sbbq 88(%rdi), %r8 + movq 96(%r10), %rax + movq %r8, 88(%r10) + sbbq 96(%rdi), %rax + movq 104(%r10), %rcx + movq %rax, 96(%r10) + sbbq 104(%rdi), %rcx + movq 112(%r10), %r8 + movq %rcx, 104(%r10) + sbbq 112(%rdi), %r8 + movq 120(%r10), %rax + movq %r8, 112(%r10) + sbbq 120(%rdi), %rax + movq 128(%r10), %rcx + movq %rax, 120(%r10) + sbbq 128(%rdi), %rcx + movq 136(%r10), %r8 + movq %rcx, 128(%r10) + sbbq 136(%rdi), %r8 + movq 144(%r10), %rax + movq %r8, 136(%r10) + sbbq 144(%rdi), %rax + movq 152(%r10), %rcx + movq %rax, 144(%r10) + sbbq 152(%rdi), %rcx + movq 160(%r10), %r8 + movq %rcx, 152(%r10) + sbbq 160(%rdi), %r8 + movq 168(%r10), %rax + movq %r8, 160(%r10) + sbbq 168(%rdi), %rax + movq 176(%r10), %rcx + movq %rax, 168(%r10) + sbbq 176(%rdi), %rcx + movq 184(%r10), %r8 + movq %rcx, 176(%r10) + sbbq 184(%rdi), %r8 + movq 192(%r10), %rax + movq %r8, 184(%r10) + sbbq 192(%rdi), %rax + movq 200(%r10), %rcx + movq %rax, 192(%r10) + sbbq 200(%rdi), %rcx + movq 208(%r10), %r8 + movq %rcx, 200(%r10) + sbbq 208(%rdi), %r8 + movq 216(%r10), %rax + movq %r8, 208(%r10) + sbbq 216(%rdi), %rax + movq 224(%r10), %rcx + movq %rax, 216(%r10) + sbbq 224(%rdi), %rcx + movq 232(%r10), %r8 + movq %rcx, 224(%r10) + sbbq 232(%rdi), %r8 + movq 240(%r10), %rax + movq %r8, 232(%r10) + sbbq 240(%rdi), %rax + movq 248(%r10), %rcx + movq %rax, 240(%r10) + sbbq 248(%rdi), %rcx + movq 256(%r10), %r8 + movq %rcx, 248(%r10) + sbbq 256(%rdi), %r8 + movq 264(%r10), %rax + movq %r8, 256(%r10) + sbbq 264(%rdi), %rax + movq 272(%r10), %rcx + movq %rax, 264(%r10) + sbbq 272(%rdi), %rcx + movq 280(%r10), %r8 + movq %rcx, 272(%r10) + sbbq 280(%rdi), %r8 + movq 288(%r10), %rax + movq %r8, 280(%r10) + sbbq 288(%rdi), %rax + movq 296(%r10), %rcx + movq %rax, 288(%r10) + sbbq 296(%rdi), %rcx + movq 304(%r10), %r8 + movq %rcx, 296(%r10) + sbbq 304(%rdi), %r8 + movq 312(%r10), %rax + movq %r8, 304(%r10) + sbbq 312(%rdi), %rax + movq 320(%r10), %rcx + movq %rax, 312(%r10) + sbbq 320(%rdi), %rcx + movq 328(%r10), %r8 + movq %rcx, 320(%r10) + sbbq 328(%rdi), %r8 + movq 336(%r10), %rax + movq %r8, 328(%r10) + sbbq 336(%rdi), %rax + movq 344(%r10), %rcx + movq %rax, 336(%r10) + sbbq 344(%rdi), %rcx + movq 352(%r10), %r8 + movq %rcx, 344(%r10) + sbbq 352(%rdi), %r8 + movq 360(%r10), %rax + movq %r8, 352(%r10) + sbbq 360(%rdi), %rax + movq 368(%r10), %rcx + movq %rax, 360(%r10) + sbbq 368(%rdi), %rcx + movq 376(%r10), %r8 + movq %rcx, 368(%r10) + sbbq 376(%rdi), %r8 + movq %r8, 376(%r10) + sbbq $0, %r9 + subq $192, %r15 + # Add + movq (%r15), %rax + addq (%r10), %rax + movq 8(%r15), %rcx + movq %rax, (%r15) + adcq 8(%r10), %rcx + movq 16(%r15), %r8 + movq %rcx, 8(%r15) + adcq 16(%r10), %r8 + movq 24(%r15), %rax + movq %r8, 16(%r15) + adcq 24(%r10), %rax + movq 32(%r15), %rcx + movq %rax, 24(%r15) + adcq 32(%r10), %rcx + movq 40(%r15), %r8 + movq %rcx, 32(%r15) + adcq 40(%r10), %r8 + movq 48(%r15), %rax + movq %r8, 40(%r15) + adcq 48(%r10), %rax + movq 56(%r15), %rcx + movq %rax, 48(%r15) + adcq 56(%r10), %rcx + movq 64(%r15), %r8 + movq %rcx, 56(%r15) + adcq 64(%r10), %r8 + movq 72(%r15), %rax + movq %r8, 64(%r15) + adcq 72(%r10), %rax + movq 80(%r15), %rcx + movq %rax, 72(%r15) + adcq 80(%r10), %rcx + movq 88(%r15), %r8 + movq %rcx, 80(%r15) + adcq 88(%r10), %r8 + movq 96(%r15), %rax + movq %r8, 88(%r15) + adcq 96(%r10), %rax + movq 104(%r15), %rcx + movq %rax, 96(%r15) + adcq 104(%r10), %rcx + movq 112(%r15), %r8 + movq %rcx, 104(%r15) + adcq 112(%r10), %r8 + movq 120(%r15), %rax + movq %r8, 112(%r15) + adcq 120(%r10), %rax + movq 128(%r15), %rcx + movq %rax, 120(%r15) + adcq 128(%r10), %rcx + movq 136(%r15), %r8 + movq %rcx, 128(%r15) + adcq 136(%r10), %r8 + movq 144(%r15), %rax + movq %r8, 136(%r15) + adcq 144(%r10), %rax + movq 152(%r15), %rcx + movq %rax, 144(%r15) + adcq 152(%r10), %rcx + movq 160(%r15), %r8 + movq %rcx, 152(%r15) + adcq 160(%r10), %r8 + movq 168(%r15), %rax + movq %r8, 160(%r15) + adcq 168(%r10), %rax + movq 176(%r15), %rcx + movq %rax, 168(%r15) + adcq 176(%r10), %rcx + movq 184(%r15), %r8 + movq %rcx, 176(%r15) + adcq 184(%r10), %r8 + movq 192(%r15), %rax + movq %r8, 184(%r15) + adcq 192(%r10), %rax + movq 200(%r15), %rcx + movq %rax, 192(%r15) + adcq 200(%r10), %rcx + movq 208(%r15), %r8 + movq %rcx, 200(%r15) + adcq 208(%r10), %r8 + movq 216(%r15), %rax + movq %r8, 208(%r15) + adcq 216(%r10), %rax + movq 224(%r15), %rcx + movq %rax, 216(%r15) + adcq 224(%r10), %rcx + movq 232(%r15), %r8 + movq %rcx, 224(%r15) + adcq 232(%r10), %r8 + movq 240(%r15), %rax + movq %r8, 232(%r15) + adcq 240(%r10), %rax + movq 248(%r15), %rcx + movq %rax, 240(%r15) + adcq 248(%r10), %rcx + movq 256(%r15), %r8 + movq %rcx, 248(%r15) + adcq 256(%r10), %r8 + movq 264(%r15), %rax + movq %r8, 256(%r15) + adcq 264(%r10), %rax + movq 272(%r15), %rcx + movq %rax, 264(%r15) + adcq 272(%r10), %rcx + movq 280(%r15), %r8 + movq %rcx, 272(%r15) + adcq 280(%r10), %r8 + movq 288(%r15), %rax + movq %r8, 280(%r15) + adcq 288(%r10), %rax + movq 296(%r15), %rcx + movq %rax, 288(%r15) + adcq 296(%r10), %rcx + movq 304(%r15), %r8 + movq %rcx, 296(%r15) + adcq 304(%r10), %r8 + movq 312(%r15), %rax + movq %r8, 304(%r15) + adcq 312(%r10), %rax + movq 320(%r15), %rcx + movq %rax, 312(%r15) + adcq 320(%r10), %rcx + movq 328(%r15), %r8 + movq %rcx, 320(%r15) + adcq 328(%r10), %r8 + movq 336(%r15), %rax + movq %r8, 328(%r15) + adcq 336(%r10), %rax + movq 344(%r15), %rcx + movq %rax, 336(%r15) + adcq 344(%r10), %rcx + movq 352(%r15), %r8 + movq %rcx, 344(%r15) + adcq 352(%r10), %r8 + movq 360(%r15), %rax + movq %r8, 352(%r15) + adcq 360(%r10), %rax + movq 368(%r15), %rcx + movq %rax, 360(%r15) + adcq 368(%r10), %rcx + movq 376(%r15), %r8 + movq %rcx, 368(%r15) + adcq 376(%r10), %r8 + movq %r8, 376(%r15) + adcq $0, %r9 + movq %r9, 576(%rdi) + addq $192, %r15 + # Add + movq (%r15), %rax + addq (%r11), %rax + movq 8(%r15), %rcx + movq %rax, (%r15) + adcq 8(%r11), %rcx + movq 16(%r15), %r8 + movq %rcx, 8(%r15) + adcq 16(%r11), %r8 + movq 24(%r15), %rax + movq %r8, 16(%r15) + adcq 24(%r11), %rax + movq 32(%r15), %rcx + movq %rax, 24(%r15) + adcq 32(%r11), %rcx + movq 40(%r15), %r8 + movq %rcx, 32(%r15) + adcq 40(%r11), %r8 + movq 48(%r15), %rax + movq %r8, 40(%r15) + adcq 48(%r11), %rax + movq 56(%r15), %rcx + movq %rax, 48(%r15) + adcq 56(%r11), %rcx + movq 64(%r15), %r8 + movq %rcx, 56(%r15) + adcq 64(%r11), %r8 + movq 72(%r15), %rax + movq %r8, 64(%r15) + adcq 72(%r11), %rax + movq 80(%r15), %rcx + movq %rax, 72(%r15) + adcq 80(%r11), %rcx + movq 88(%r15), %r8 + movq %rcx, 80(%r15) + adcq 88(%r11), %r8 + movq 96(%r15), %rax + movq %r8, 88(%r15) + adcq 96(%r11), %rax + movq 104(%r15), %rcx + movq %rax, 96(%r15) + adcq 104(%r11), %rcx + movq 112(%r15), %r8 + movq %rcx, 104(%r15) + adcq 112(%r11), %r8 + movq 120(%r15), %rax + movq %r8, 112(%r15) + adcq 120(%r11), %rax + movq 128(%r15), %rcx + movq %rax, 120(%r15) + adcq 128(%r11), %rcx + movq 136(%r15), %r8 + movq %rcx, 128(%r15) + adcq 136(%r11), %r8 + movq 144(%r15), %rax + movq %r8, 136(%r15) + adcq 144(%r11), %rax + movq 152(%r15), %rcx + movq %rax, 144(%r15) + adcq 152(%r11), %rcx + movq 160(%r15), %r8 + movq %rcx, 152(%r15) + adcq 160(%r11), %r8 + movq 168(%r15), %rax + movq %r8, 160(%r15) + adcq 168(%r11), %rax + movq 176(%r15), %rcx + movq %rax, 168(%r15) + adcq 176(%r11), %rcx + movq 184(%r15), %r8 + movq %rcx, 176(%r15) + adcq 184(%r11), %r8 + movq 192(%r15), %rax + movq %r8, 184(%r15) + adcq 192(%r11), %rax + movq %rax, 192(%r15) + # Add to zero + movq 200(%r11), %rax + adcq $0, %rax + movq 208(%r11), %rcx + movq %rax, 200(%r15) + adcq $0, %rcx + movq 216(%r11), %r8 + movq %rcx, 208(%r15) + adcq $0, %r8 + movq 224(%r11), %rax + movq %r8, 216(%r15) + adcq $0, %rax + movq 232(%r11), %rcx + movq %rax, 224(%r15) + adcq $0, %rcx + movq 240(%r11), %r8 + movq %rcx, 232(%r15) + adcq $0, %r8 + movq 248(%r11), %rax + movq %r8, 240(%r15) + adcq $0, %rax + movq 256(%r11), %rcx + movq %rax, 248(%r15) + adcq $0, %rcx + movq 264(%r11), %r8 + movq %rcx, 256(%r15) + adcq $0, %r8 + movq 272(%r11), %rax + movq %r8, 264(%r15) + adcq $0, %rax + movq 280(%r11), %rcx + movq %rax, 272(%r15) + adcq $0, %rcx + movq 288(%r11), %r8 + movq %rcx, 280(%r15) + adcq $0, %r8 + movq 296(%r11), %rax + movq %r8, 288(%r15) + adcq $0, %rax + movq 304(%r11), %rcx + movq %rax, 296(%r15) + adcq $0, %rcx + movq 312(%r11), %r8 + movq %rcx, 304(%r15) + adcq $0, %r8 + movq 320(%r11), %rax + movq %r8, 312(%r15) + adcq $0, %rax + movq 328(%r11), %rcx + movq %rax, 320(%r15) + adcq $0, %rcx + movq 336(%r11), %r8 + movq %rcx, 328(%r15) + adcq $0, %r8 + movq 344(%r11), %rax + movq %r8, 336(%r15) + adcq $0, %rax + movq 352(%r11), %rcx + movq %rax, 344(%r15) + adcq $0, %rcx + movq 360(%r11), %r8 + movq %rcx, 352(%r15) + adcq $0, %r8 + movq 368(%r11), %rax + movq %r8, 360(%r15) + adcq $0, %rax + movq 376(%r11), %rcx + movq %rax, 368(%r15) + adcq $0, %rcx + movq %rcx, 376(%r15) + addq $1192, %rsp + pop %r15 + pop %r14 + pop %r13 + pop %r12 + repz retq +#ifndef __APPLE__ +.size sp_3072_mul_48,.-sp_3072_mul_48 +#endif /* __APPLE__ */ /* Add a to a into r. (r = a + a) * * r A single precision integer. @@ -21404,6 +19218,2635 @@ _sp_3072_dbl_24: #ifndef __APPLE__ .size sp_3072_dbl_24,.-sp_3072_dbl_24 #endif /* __APPLE__ */ +/* Square a and put result in r. (r = a * a) + * + * r A single precision integer. + * a A single precision integer. + */ +#ifndef __APPLE__ +.globl sp_3072_sqr_48 +.type sp_3072_sqr_48,@function +.align 16 +sp_3072_sqr_48: +#else +.globl _sp_3072_sqr_48 +.p2align 4 +_sp_3072_sqr_48: +#endif /* __APPLE__ */ + subq $984, %rsp + movq %rdi, 960(%rsp) + movq %rsi, 968(%rsp) + leaq 768(%rsp), %r8 + leaq 192(%rsi), %r9 + # Add + movq (%rsi), %rdx + xorq %rcx, %rcx + addq (%r9), %rdx + movq 8(%rsi), %rax + movq %rdx, (%r8) + adcq 8(%r9), %rax + movq 16(%rsi), %rdx + movq %rax, 8(%r8) + adcq 16(%r9), %rdx + movq 24(%rsi), %rax + movq %rdx, 16(%r8) + adcq 24(%r9), %rax + movq 32(%rsi), %rdx + movq %rax, 24(%r8) + adcq 32(%r9), %rdx + movq 40(%rsi), %rax + movq %rdx, 32(%r8) + adcq 40(%r9), %rax + movq 48(%rsi), %rdx + movq %rax, 40(%r8) + adcq 48(%r9), %rdx + movq 56(%rsi), %rax + movq %rdx, 48(%r8) + adcq 56(%r9), %rax + movq 64(%rsi), %rdx + movq %rax, 56(%r8) + adcq 64(%r9), %rdx + movq 72(%rsi), %rax + movq %rdx, 64(%r8) + adcq 72(%r9), %rax + movq 80(%rsi), %rdx + movq %rax, 72(%r8) + adcq 80(%r9), %rdx + movq 88(%rsi), %rax + movq %rdx, 80(%r8) + adcq 88(%r9), %rax + movq 96(%rsi), %rdx + movq %rax, 88(%r8) + adcq 96(%r9), %rdx + movq 104(%rsi), %rax + movq %rdx, 96(%r8) + adcq 104(%r9), %rax + movq 112(%rsi), %rdx + movq %rax, 104(%r8) + adcq 112(%r9), %rdx + movq 120(%rsi), %rax + movq %rdx, 112(%r8) + adcq 120(%r9), %rax + movq 128(%rsi), %rdx + movq %rax, 120(%r8) + adcq 128(%r9), %rdx + movq 136(%rsi), %rax + movq %rdx, 128(%r8) + adcq 136(%r9), %rax + movq 144(%rsi), %rdx + movq %rax, 136(%r8) + adcq 144(%r9), %rdx + movq 152(%rsi), %rax + movq %rdx, 144(%r8) + adcq 152(%r9), %rax + movq 160(%rsi), %rdx + movq %rax, 152(%r8) + adcq 160(%r9), %rdx + movq 168(%rsi), %rax + movq %rdx, 160(%r8) + adcq 168(%r9), %rax + movq 176(%rsi), %rdx + movq %rax, 168(%r8) + adcq 176(%r9), %rdx + movq 184(%rsi), %rax + movq %rdx, 176(%r8) + adcq 184(%r9), %rax + movq %rax, 184(%r8) + adcq $0, %rcx + movq %rcx, 976(%rsp) + movq %r8, %rsi + movq %rsp, %rdi +#ifndef __APPLE__ + callq sp_3072_sqr_24@plt +#else + callq _sp_3072_sqr_24 +#endif /* __APPLE__ */ + movq 968(%rsp), %rsi + leaq 384(%rsp), %rdi + addq $192, %rsi +#ifndef __APPLE__ + callq sp_3072_sqr_24@plt +#else + callq _sp_3072_sqr_24 +#endif /* __APPLE__ */ + movq 968(%rsp), %rsi + movq 960(%rsp), %rdi +#ifndef __APPLE__ + callq sp_3072_sqr_24@plt +#else + callq _sp_3072_sqr_24 +#endif /* __APPLE__ */ + movq 976(%rsp), %r10 + movq %rdi, %r9 + leaq 768(%rsp), %r8 + movq %r10, %rcx + negq %r10 + addq $384, %r9 + movq (%r8), %rdx + movq 8(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, (%r9) + movq %rax, 8(%r9) + movq 16(%r8), %rdx + movq 24(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 16(%r9) + movq %rax, 24(%r9) + movq 32(%r8), %rdx + movq 40(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 32(%r9) + movq %rax, 40(%r9) + movq 48(%r8), %rdx + movq 56(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 48(%r9) + movq %rax, 56(%r9) + movq 64(%r8), %rdx + movq 72(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 64(%r9) + movq %rax, 72(%r9) + movq 80(%r8), %rdx + movq 88(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 80(%r9) + movq %rax, 88(%r9) + movq 96(%r8), %rdx + movq 104(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 96(%r9) + movq %rax, 104(%r9) + movq 112(%r8), %rdx + movq 120(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 112(%r9) + movq %rax, 120(%r9) + movq 128(%r8), %rdx + movq 136(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 128(%r9) + movq %rax, 136(%r9) + movq 144(%r8), %rdx + movq 152(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 144(%r9) + movq %rax, 152(%r9) + movq 160(%r8), %rdx + movq 168(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 160(%r9) + movq %rax, 168(%r9) + movq 176(%r8), %rdx + movq 184(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 176(%r9) + movq %rax, 184(%r9) + movq (%r9), %rdx + addq %rdx, %rdx + movq 8(%r9), %rax + movq %rdx, (%r9) + adcq %rax, %rax + movq 16(%r9), %rdx + movq %rax, 8(%r9) + adcq %rdx, %rdx + movq 24(%r9), %rax + movq %rdx, 16(%r9) + adcq %rax, %rax + movq 32(%r9), %rdx + movq %rax, 24(%r9) + adcq %rdx, %rdx + movq 40(%r9), %rax + movq %rdx, 32(%r9) + adcq %rax, %rax + movq 48(%r9), %rdx + movq %rax, 40(%r9) + adcq %rdx, %rdx + movq 56(%r9), %rax + movq %rdx, 48(%r9) + adcq %rax, %rax + movq 64(%r9), %rdx + movq %rax, 56(%r9) + adcq %rdx, %rdx + movq 72(%r9), %rax + movq %rdx, 64(%r9) + adcq %rax, %rax + movq 80(%r9), %rdx + movq %rax, 72(%r9) + adcq %rdx, %rdx + movq 88(%r9), %rax + movq %rdx, 80(%r9) + adcq %rax, %rax + movq 96(%r9), %rdx + movq %rax, 88(%r9) + adcq %rdx, %rdx + movq 104(%r9), %rax + movq %rdx, 96(%r9) + adcq %rax, %rax + movq 112(%r9), %rdx + movq %rax, 104(%r9) + adcq %rdx, %rdx + movq 120(%r9), %rax + movq %rdx, 112(%r9) + adcq %rax, %rax + movq 128(%r9), %rdx + movq %rax, 120(%r9) + adcq %rdx, %rdx + movq 136(%r9), %rax + movq %rdx, 128(%r9) + adcq %rax, %rax + movq 144(%r9), %rdx + movq %rax, 136(%r9) + adcq %rdx, %rdx + movq 152(%r9), %rax + movq %rdx, 144(%r9) + adcq %rax, %rax + movq 160(%r9), %rdx + movq %rax, 152(%r9) + adcq %rdx, %rdx + movq 168(%r9), %rax + movq %rdx, 160(%r9) + adcq %rax, %rax + movq 176(%r9), %rdx + movq %rax, 168(%r9) + adcq %rdx, %rdx + movq 184(%r9), %rax + movq %rdx, 176(%r9) + adcq %rax, %rax + movq %rax, 184(%r9) + adcq $0, %rcx + leaq 384(%rsp), %rsi + movq %rsp, %r8 + movq (%r8), %rdx + subq (%rsi), %rdx + movq 8(%r8), %rax + movq %rdx, (%r8) + sbbq 8(%rsi), %rax + movq 16(%r8), %rdx + movq %rax, 8(%r8) + sbbq 16(%rsi), %rdx + movq 24(%r8), %rax + movq %rdx, 16(%r8) + sbbq 24(%rsi), %rax + movq 32(%r8), %rdx + movq %rax, 24(%r8) + sbbq 32(%rsi), %rdx + movq 40(%r8), %rax + movq %rdx, 32(%r8) + sbbq 40(%rsi), %rax + movq 48(%r8), %rdx + movq %rax, 40(%r8) + sbbq 48(%rsi), %rdx + movq 56(%r8), %rax + movq %rdx, 48(%r8) + sbbq 56(%rsi), %rax + movq 64(%r8), %rdx + movq %rax, 56(%r8) + sbbq 64(%rsi), %rdx + movq 72(%r8), %rax + movq %rdx, 64(%r8) + sbbq 72(%rsi), %rax + movq 80(%r8), %rdx + movq %rax, 72(%r8) + sbbq 80(%rsi), %rdx + movq 88(%r8), %rax + movq %rdx, 80(%r8) + sbbq 88(%rsi), %rax + movq 96(%r8), %rdx + movq %rax, 88(%r8) + sbbq 96(%rsi), %rdx + movq 104(%r8), %rax + movq %rdx, 96(%r8) + sbbq 104(%rsi), %rax + movq 112(%r8), %rdx + movq %rax, 104(%r8) + sbbq 112(%rsi), %rdx + movq 120(%r8), %rax + movq %rdx, 112(%r8) + sbbq 120(%rsi), %rax + movq 128(%r8), %rdx + movq %rax, 120(%r8) + sbbq 128(%rsi), %rdx + movq 136(%r8), %rax + movq %rdx, 128(%r8) + sbbq 136(%rsi), %rax + movq 144(%r8), %rdx + movq %rax, 136(%r8) + sbbq 144(%rsi), %rdx + movq 152(%r8), %rax + movq %rdx, 144(%r8) + sbbq 152(%rsi), %rax + movq 160(%r8), %rdx + movq %rax, 152(%r8) + sbbq 160(%rsi), %rdx + movq 168(%r8), %rax + movq %rdx, 160(%r8) + sbbq 168(%rsi), %rax + movq 176(%r8), %rdx + movq %rax, 168(%r8) + sbbq 176(%rsi), %rdx + movq 184(%r8), %rax + movq %rdx, 176(%r8) + sbbq 184(%rsi), %rax + movq 192(%r8), %rdx + movq %rax, 184(%r8) + sbbq 192(%rsi), %rdx + movq 200(%r8), %rax + movq %rdx, 192(%r8) + sbbq 200(%rsi), %rax + movq 208(%r8), %rdx + movq %rax, 200(%r8) + sbbq 208(%rsi), %rdx + movq 216(%r8), %rax + movq %rdx, 208(%r8) + sbbq 216(%rsi), %rax + movq 224(%r8), %rdx + movq %rax, 216(%r8) + sbbq 224(%rsi), %rdx + movq 232(%r8), %rax + movq %rdx, 224(%r8) + sbbq 232(%rsi), %rax + movq 240(%r8), %rdx + movq %rax, 232(%r8) + sbbq 240(%rsi), %rdx + movq 248(%r8), %rax + movq %rdx, 240(%r8) + sbbq 248(%rsi), %rax + movq 256(%r8), %rdx + movq %rax, 248(%r8) + sbbq 256(%rsi), %rdx + movq 264(%r8), %rax + movq %rdx, 256(%r8) + sbbq 264(%rsi), %rax + movq 272(%r8), %rdx + movq %rax, 264(%r8) + sbbq 272(%rsi), %rdx + movq 280(%r8), %rax + movq %rdx, 272(%r8) + sbbq 280(%rsi), %rax + movq 288(%r8), %rdx + movq %rax, 280(%r8) + sbbq 288(%rsi), %rdx + movq 296(%r8), %rax + movq %rdx, 288(%r8) + sbbq 296(%rsi), %rax + movq 304(%r8), %rdx + movq %rax, 296(%r8) + sbbq 304(%rsi), %rdx + movq 312(%r8), %rax + movq %rdx, 304(%r8) + sbbq 312(%rsi), %rax + movq 320(%r8), %rdx + movq %rax, 312(%r8) + sbbq 320(%rsi), %rdx + movq 328(%r8), %rax + movq %rdx, 320(%r8) + sbbq 328(%rsi), %rax + movq 336(%r8), %rdx + movq %rax, 328(%r8) + sbbq 336(%rsi), %rdx + movq 344(%r8), %rax + movq %rdx, 336(%r8) + sbbq 344(%rsi), %rax + movq 352(%r8), %rdx + movq %rax, 344(%r8) + sbbq 352(%rsi), %rdx + movq 360(%r8), %rax + movq %rdx, 352(%r8) + sbbq 360(%rsi), %rax + movq 368(%r8), %rdx + movq %rax, 360(%r8) + sbbq 368(%rsi), %rdx + movq 376(%r8), %rax + movq %rdx, 368(%r8) + sbbq 376(%rsi), %rax + movq %rax, 376(%r8) + sbbq $0, %rcx + movq (%r8), %rdx + subq (%rdi), %rdx + movq 8(%r8), %rax + movq %rdx, (%r8) + sbbq 8(%rdi), %rax + movq 16(%r8), %rdx + movq %rax, 8(%r8) + sbbq 16(%rdi), %rdx + movq 24(%r8), %rax + movq %rdx, 16(%r8) + sbbq 24(%rdi), %rax + movq 32(%r8), %rdx + movq %rax, 24(%r8) + sbbq 32(%rdi), %rdx + movq 40(%r8), %rax + movq %rdx, 32(%r8) + sbbq 40(%rdi), %rax + movq 48(%r8), %rdx + movq %rax, 40(%r8) + sbbq 48(%rdi), %rdx + movq 56(%r8), %rax + movq %rdx, 48(%r8) + sbbq 56(%rdi), %rax + movq 64(%r8), %rdx + movq %rax, 56(%r8) + sbbq 64(%rdi), %rdx + movq 72(%r8), %rax + movq %rdx, 64(%r8) + sbbq 72(%rdi), %rax + movq 80(%r8), %rdx + movq %rax, 72(%r8) + sbbq 80(%rdi), %rdx + movq 88(%r8), %rax + movq %rdx, 80(%r8) + sbbq 88(%rdi), %rax + movq 96(%r8), %rdx + movq %rax, 88(%r8) + sbbq 96(%rdi), %rdx + movq 104(%r8), %rax + movq %rdx, 96(%r8) + sbbq 104(%rdi), %rax + movq 112(%r8), %rdx + movq %rax, 104(%r8) + sbbq 112(%rdi), %rdx + movq 120(%r8), %rax + movq %rdx, 112(%r8) + sbbq 120(%rdi), %rax + movq 128(%r8), %rdx + movq %rax, 120(%r8) + sbbq 128(%rdi), %rdx + movq 136(%r8), %rax + movq %rdx, 128(%r8) + sbbq 136(%rdi), %rax + movq 144(%r8), %rdx + movq %rax, 136(%r8) + sbbq 144(%rdi), %rdx + movq 152(%r8), %rax + movq %rdx, 144(%r8) + sbbq 152(%rdi), %rax + movq 160(%r8), %rdx + movq %rax, 152(%r8) + sbbq 160(%rdi), %rdx + movq 168(%r8), %rax + movq %rdx, 160(%r8) + sbbq 168(%rdi), %rax + movq 176(%r8), %rdx + movq %rax, 168(%r8) + sbbq 176(%rdi), %rdx + movq 184(%r8), %rax + movq %rdx, 176(%r8) + sbbq 184(%rdi), %rax + movq 192(%r8), %rdx + movq %rax, 184(%r8) + sbbq 192(%rdi), %rdx + movq 200(%r8), %rax + movq %rdx, 192(%r8) + sbbq 200(%rdi), %rax + movq 208(%r8), %rdx + movq %rax, 200(%r8) + sbbq 208(%rdi), %rdx + movq 216(%r8), %rax + movq %rdx, 208(%r8) + sbbq 216(%rdi), %rax + movq 224(%r8), %rdx + movq %rax, 216(%r8) + sbbq 224(%rdi), %rdx + movq 232(%r8), %rax + movq %rdx, 224(%r8) + sbbq 232(%rdi), %rax + movq 240(%r8), %rdx + movq %rax, 232(%r8) + sbbq 240(%rdi), %rdx + movq 248(%r8), %rax + movq %rdx, 240(%r8) + sbbq 248(%rdi), %rax + movq 256(%r8), %rdx + movq %rax, 248(%r8) + sbbq 256(%rdi), %rdx + movq 264(%r8), %rax + movq %rdx, 256(%r8) + sbbq 264(%rdi), %rax + movq 272(%r8), %rdx + movq %rax, 264(%r8) + sbbq 272(%rdi), %rdx + movq 280(%r8), %rax + movq %rdx, 272(%r8) + sbbq 280(%rdi), %rax + movq 288(%r8), %rdx + movq %rax, 280(%r8) + sbbq 288(%rdi), %rdx + movq 296(%r8), %rax + movq %rdx, 288(%r8) + sbbq 296(%rdi), %rax + movq 304(%r8), %rdx + movq %rax, 296(%r8) + sbbq 304(%rdi), %rdx + movq 312(%r8), %rax + movq %rdx, 304(%r8) + sbbq 312(%rdi), %rax + movq 320(%r8), %rdx + movq %rax, 312(%r8) + sbbq 320(%rdi), %rdx + movq 328(%r8), %rax + movq %rdx, 320(%r8) + sbbq 328(%rdi), %rax + movq 336(%r8), %rdx + movq %rax, 328(%r8) + sbbq 336(%rdi), %rdx + movq 344(%r8), %rax + movq %rdx, 336(%r8) + sbbq 344(%rdi), %rax + movq 352(%r8), %rdx + movq %rax, 344(%r8) + sbbq 352(%rdi), %rdx + movq 360(%r8), %rax + movq %rdx, 352(%r8) + sbbq 360(%rdi), %rax + movq 368(%r8), %rdx + movq %rax, 360(%r8) + sbbq 368(%rdi), %rdx + movq 376(%r8), %rax + movq %rdx, 368(%r8) + sbbq 376(%rdi), %rax + movq %rax, 376(%r8) + sbbq $0, %rcx + subq $192, %r9 + # Add in place + movq (%r9), %rdx + addq (%r8), %rdx + movq 8(%r9), %rax + movq %rdx, (%r9) + adcq 8(%r8), %rax + movq 16(%r9), %rdx + movq %rax, 8(%r9) + adcq 16(%r8), %rdx + movq 24(%r9), %rax + movq %rdx, 16(%r9) + adcq 24(%r8), %rax + movq 32(%r9), %rdx + movq %rax, 24(%r9) + adcq 32(%r8), %rdx + movq 40(%r9), %rax + movq %rdx, 32(%r9) + adcq 40(%r8), %rax + movq 48(%r9), %rdx + movq %rax, 40(%r9) + adcq 48(%r8), %rdx + movq 56(%r9), %rax + movq %rdx, 48(%r9) + adcq 56(%r8), %rax + movq 64(%r9), %rdx + movq %rax, 56(%r9) + adcq 64(%r8), %rdx + movq 72(%r9), %rax + movq %rdx, 64(%r9) + adcq 72(%r8), %rax + movq 80(%r9), %rdx + movq %rax, 72(%r9) + adcq 80(%r8), %rdx + movq 88(%r9), %rax + movq %rdx, 80(%r9) + adcq 88(%r8), %rax + movq 96(%r9), %rdx + movq %rax, 88(%r9) + adcq 96(%r8), %rdx + movq 104(%r9), %rax + movq %rdx, 96(%r9) + adcq 104(%r8), %rax + movq 112(%r9), %rdx + movq %rax, 104(%r9) + adcq 112(%r8), %rdx + movq 120(%r9), %rax + movq %rdx, 112(%r9) + adcq 120(%r8), %rax + movq 128(%r9), %rdx + movq %rax, 120(%r9) + adcq 128(%r8), %rdx + movq 136(%r9), %rax + movq %rdx, 128(%r9) + adcq 136(%r8), %rax + movq 144(%r9), %rdx + movq %rax, 136(%r9) + adcq 144(%r8), %rdx + movq 152(%r9), %rax + movq %rdx, 144(%r9) + adcq 152(%r8), %rax + movq 160(%r9), %rdx + movq %rax, 152(%r9) + adcq 160(%r8), %rdx + movq 168(%r9), %rax + movq %rdx, 160(%r9) + adcq 168(%r8), %rax + movq 176(%r9), %rdx + movq %rax, 168(%r9) + adcq 176(%r8), %rdx + movq 184(%r9), %rax + movq %rdx, 176(%r9) + adcq 184(%r8), %rax + movq 192(%r9), %rdx + movq %rax, 184(%r9) + adcq 192(%r8), %rdx + movq 200(%r9), %rax + movq %rdx, 192(%r9) + adcq 200(%r8), %rax + movq 208(%r9), %rdx + movq %rax, 200(%r9) + adcq 208(%r8), %rdx + movq 216(%r9), %rax + movq %rdx, 208(%r9) + adcq 216(%r8), %rax + movq 224(%r9), %rdx + movq %rax, 216(%r9) + adcq 224(%r8), %rdx + movq 232(%r9), %rax + movq %rdx, 224(%r9) + adcq 232(%r8), %rax + movq 240(%r9), %rdx + movq %rax, 232(%r9) + adcq 240(%r8), %rdx + movq 248(%r9), %rax + movq %rdx, 240(%r9) + adcq 248(%r8), %rax + movq 256(%r9), %rdx + movq %rax, 248(%r9) + adcq 256(%r8), %rdx + movq 264(%r9), %rax + movq %rdx, 256(%r9) + adcq 264(%r8), %rax + movq 272(%r9), %rdx + movq %rax, 264(%r9) + adcq 272(%r8), %rdx + movq 280(%r9), %rax + movq %rdx, 272(%r9) + adcq 280(%r8), %rax + movq 288(%r9), %rdx + movq %rax, 280(%r9) + adcq 288(%r8), %rdx + movq 296(%r9), %rax + movq %rdx, 288(%r9) + adcq 296(%r8), %rax + movq 304(%r9), %rdx + movq %rax, 296(%r9) + adcq 304(%r8), %rdx + movq 312(%r9), %rax + movq %rdx, 304(%r9) + adcq 312(%r8), %rax + movq 320(%r9), %rdx + movq %rax, 312(%r9) + adcq 320(%r8), %rdx + movq 328(%r9), %rax + movq %rdx, 320(%r9) + adcq 328(%r8), %rax + movq 336(%r9), %rdx + movq %rax, 328(%r9) + adcq 336(%r8), %rdx + movq 344(%r9), %rax + movq %rdx, 336(%r9) + adcq 344(%r8), %rax + movq 352(%r9), %rdx + movq %rax, 344(%r9) + adcq 352(%r8), %rdx + movq 360(%r9), %rax + movq %rdx, 352(%r9) + adcq 360(%r8), %rax + movq 368(%r9), %rdx + movq %rax, 360(%r9) + adcq 368(%r8), %rdx + movq 376(%r9), %rax + movq %rdx, 368(%r9) + adcq 376(%r8), %rax + movq %rax, 376(%r9) + adcq $0, %rcx + movq %rcx, 576(%rdi) + # Add in place + movq 192(%r9), %rdx + addq (%rsi), %rdx + movq 200(%r9), %rax + movq %rdx, 192(%r9) + adcq 8(%rsi), %rax + movq 208(%r9), %rdx + movq %rax, 200(%r9) + adcq 16(%rsi), %rdx + movq 216(%r9), %rax + movq %rdx, 208(%r9) + adcq 24(%rsi), %rax + movq 224(%r9), %rdx + movq %rax, 216(%r9) + adcq 32(%rsi), %rdx + movq 232(%r9), %rax + movq %rdx, 224(%r9) + adcq 40(%rsi), %rax + movq 240(%r9), %rdx + movq %rax, 232(%r9) + adcq 48(%rsi), %rdx + movq 248(%r9), %rax + movq %rdx, 240(%r9) + adcq 56(%rsi), %rax + movq 256(%r9), %rdx + movq %rax, 248(%r9) + adcq 64(%rsi), %rdx + movq 264(%r9), %rax + movq %rdx, 256(%r9) + adcq 72(%rsi), %rax + movq 272(%r9), %rdx + movq %rax, 264(%r9) + adcq 80(%rsi), %rdx + movq 280(%r9), %rax + movq %rdx, 272(%r9) + adcq 88(%rsi), %rax + movq 288(%r9), %rdx + movq %rax, 280(%r9) + adcq 96(%rsi), %rdx + movq 296(%r9), %rax + movq %rdx, 288(%r9) + adcq 104(%rsi), %rax + movq 304(%r9), %rdx + movq %rax, 296(%r9) + adcq 112(%rsi), %rdx + movq 312(%r9), %rax + movq %rdx, 304(%r9) + adcq 120(%rsi), %rax + movq 320(%r9), %rdx + movq %rax, 312(%r9) + adcq 128(%rsi), %rdx + movq 328(%r9), %rax + movq %rdx, 320(%r9) + adcq 136(%rsi), %rax + movq 336(%r9), %rdx + movq %rax, 328(%r9) + adcq 144(%rsi), %rdx + movq 344(%r9), %rax + movq %rdx, 336(%r9) + adcq 152(%rsi), %rax + movq 352(%r9), %rdx + movq %rax, 344(%r9) + adcq 160(%rsi), %rdx + movq 360(%r9), %rax + movq %rdx, 352(%r9) + adcq 168(%rsi), %rax + movq 368(%r9), %rdx + movq %rax, 360(%r9) + adcq 176(%rsi), %rdx + movq 376(%r9), %rax + movq %rdx, 368(%r9) + adcq 184(%rsi), %rax + movq 384(%r9), %rdx + movq %rax, 376(%r9) + adcq 192(%rsi), %rdx + movq %rdx, 384(%r9) + # Add to zero + movq 200(%rsi), %rdx + adcq $0, %rdx + movq 208(%rsi), %rax + movq %rdx, 392(%r9) + adcq $0, %rax + movq 216(%rsi), %rdx + movq %rax, 400(%r9) + adcq $0, %rdx + movq 224(%rsi), %rax + movq %rdx, 408(%r9) + adcq $0, %rax + movq 232(%rsi), %rdx + movq %rax, 416(%r9) + adcq $0, %rdx + movq 240(%rsi), %rax + movq %rdx, 424(%r9) + adcq $0, %rax + movq 248(%rsi), %rdx + movq %rax, 432(%r9) + adcq $0, %rdx + movq 256(%rsi), %rax + movq %rdx, 440(%r9) + adcq $0, %rax + movq 264(%rsi), %rdx + movq %rax, 448(%r9) + adcq $0, %rdx + movq 272(%rsi), %rax + movq %rdx, 456(%r9) + adcq $0, %rax + movq 280(%rsi), %rdx + movq %rax, 464(%r9) + adcq $0, %rdx + movq 288(%rsi), %rax + movq %rdx, 472(%r9) + adcq $0, %rax + movq 296(%rsi), %rdx + movq %rax, 480(%r9) + adcq $0, %rdx + movq 304(%rsi), %rax + movq %rdx, 488(%r9) + adcq $0, %rax + movq 312(%rsi), %rdx + movq %rax, 496(%r9) + adcq $0, %rdx + movq 320(%rsi), %rax + movq %rdx, 504(%r9) + adcq $0, %rax + movq 328(%rsi), %rdx + movq %rax, 512(%r9) + adcq $0, %rdx + movq 336(%rsi), %rax + movq %rdx, 520(%r9) + adcq $0, %rax + movq 344(%rsi), %rdx + movq %rax, 528(%r9) + adcq $0, %rdx + movq 352(%rsi), %rax + movq %rdx, 536(%r9) + adcq $0, %rax + movq 360(%rsi), %rdx + movq %rax, 544(%r9) + adcq $0, %rdx + movq 368(%rsi), %rax + movq %rdx, 552(%r9) + adcq $0, %rax + movq 376(%rsi), %rdx + movq %rax, 560(%r9) + adcq $0, %rdx + movq %rdx, 568(%r9) + addq $984, %rsp + repz retq +#ifndef __APPLE__ +.size sp_3072_sqr_48,.-sp_3072_sqr_48 +#endif /* __APPLE__ */ +/* Multiply a and b into r. (r = a * b) + * + * r A single precision integer. + * a A single precision integer. + * b A single precision integer. + */ +#ifndef __APPLE__ +.globl sp_3072_mul_avx2_48 +.type sp_3072_mul_avx2_48,@function +.align 16 +sp_3072_mul_avx2_48: +#else +.globl _sp_3072_mul_avx2_48 +.p2align 4 +_sp_3072_mul_avx2_48: +#endif /* __APPLE__ */ + push %r12 + push %r13 + push %r14 + push %r15 + subq $1192, %rsp + movq %rdi, 1152(%rsp) + movq %rsi, 1160(%rsp) + movq %rdx, 1168(%rsp) + leaq 768(%rsp), %r10 + leaq 192(%rsi), %r12 + # Add + movq (%rsi), %rax + xorq %r13, %r13 + addq (%r12), %rax + movq 8(%rsi), %rcx + movq %rax, (%r10) + adcq 8(%r12), %rcx + movq 16(%rsi), %r8 + movq %rcx, 8(%r10) + adcq 16(%r12), %r8 + movq 24(%rsi), %rax + movq %r8, 16(%r10) + adcq 24(%r12), %rax + movq 32(%rsi), %rcx + movq %rax, 24(%r10) + adcq 32(%r12), %rcx + movq 40(%rsi), %r8 + movq %rcx, 32(%r10) + adcq 40(%r12), %r8 + movq 48(%rsi), %rax + movq %r8, 40(%r10) + adcq 48(%r12), %rax + movq 56(%rsi), %rcx + movq %rax, 48(%r10) + adcq 56(%r12), %rcx + movq 64(%rsi), %r8 + movq %rcx, 56(%r10) + adcq 64(%r12), %r8 + movq 72(%rsi), %rax + movq %r8, 64(%r10) + adcq 72(%r12), %rax + movq 80(%rsi), %rcx + movq %rax, 72(%r10) + adcq 80(%r12), %rcx + movq 88(%rsi), %r8 + movq %rcx, 80(%r10) + adcq 88(%r12), %r8 + movq 96(%rsi), %rax + movq %r8, 88(%r10) + adcq 96(%r12), %rax + movq 104(%rsi), %rcx + movq %rax, 96(%r10) + adcq 104(%r12), %rcx + movq 112(%rsi), %r8 + movq %rcx, 104(%r10) + adcq 112(%r12), %r8 + movq 120(%rsi), %rax + movq %r8, 112(%r10) + adcq 120(%r12), %rax + movq 128(%rsi), %rcx + movq %rax, 120(%r10) + adcq 128(%r12), %rcx + movq 136(%rsi), %r8 + movq %rcx, 128(%r10) + adcq 136(%r12), %r8 + movq 144(%rsi), %rax + movq %r8, 136(%r10) + adcq 144(%r12), %rax + movq 152(%rsi), %rcx + movq %rax, 144(%r10) + adcq 152(%r12), %rcx + movq 160(%rsi), %r8 + movq %rcx, 152(%r10) + adcq 160(%r12), %r8 + movq 168(%rsi), %rax + movq %r8, 160(%r10) + adcq 168(%r12), %rax + movq 176(%rsi), %rcx + movq %rax, 168(%r10) + adcq 176(%r12), %rcx + movq 184(%rsi), %r8 + movq %rcx, 176(%r10) + adcq 184(%r12), %r8 + movq %r8, 184(%r10) + adcq $0, %r13 + movq %r13, 1176(%rsp) + leaq 960(%rsp), %r11 + leaq 192(%rdx), %r12 + # Add + movq (%rdx), %rax + xorq %r14, %r14 + addq (%r12), %rax + movq 8(%rdx), %rcx + movq %rax, (%r11) + adcq 8(%r12), %rcx + movq 16(%rdx), %r8 + movq %rcx, 8(%r11) + adcq 16(%r12), %r8 + movq 24(%rdx), %rax + movq %r8, 16(%r11) + adcq 24(%r12), %rax + movq 32(%rdx), %rcx + movq %rax, 24(%r11) + adcq 32(%r12), %rcx + movq 40(%rdx), %r8 + movq %rcx, 32(%r11) + adcq 40(%r12), %r8 + movq 48(%rdx), %rax + movq %r8, 40(%r11) + adcq 48(%r12), %rax + movq 56(%rdx), %rcx + movq %rax, 48(%r11) + adcq 56(%r12), %rcx + movq 64(%rdx), %r8 + movq %rcx, 56(%r11) + adcq 64(%r12), %r8 + movq 72(%rdx), %rax + movq %r8, 64(%r11) + adcq 72(%r12), %rax + movq 80(%rdx), %rcx + movq %rax, 72(%r11) + adcq 80(%r12), %rcx + movq 88(%rdx), %r8 + movq %rcx, 80(%r11) + adcq 88(%r12), %r8 + movq 96(%rdx), %rax + movq %r8, 88(%r11) + adcq 96(%r12), %rax + movq 104(%rdx), %rcx + movq %rax, 96(%r11) + adcq 104(%r12), %rcx + movq 112(%rdx), %r8 + movq %rcx, 104(%r11) + adcq 112(%r12), %r8 + movq 120(%rdx), %rax + movq %r8, 112(%r11) + adcq 120(%r12), %rax + movq 128(%rdx), %rcx + movq %rax, 120(%r11) + adcq 128(%r12), %rcx + movq 136(%rdx), %r8 + movq %rcx, 128(%r11) + adcq 136(%r12), %r8 + movq 144(%rdx), %rax + movq %r8, 136(%r11) + adcq 144(%r12), %rax + movq 152(%rdx), %rcx + movq %rax, 144(%r11) + adcq 152(%r12), %rcx + movq 160(%rdx), %r8 + movq %rcx, 152(%r11) + adcq 160(%r12), %r8 + movq 168(%rdx), %rax + movq %r8, 160(%r11) + adcq 168(%r12), %rax + movq 176(%rdx), %rcx + movq %rax, 168(%r11) + adcq 176(%r12), %rcx + movq 184(%rdx), %r8 + movq %rcx, 176(%r11) + adcq 184(%r12), %r8 + movq %r8, 184(%r11) + adcq $0, %r14 + movq %r14, 1184(%rsp) + movq %r11, %rdx + movq %r10, %rsi + movq %rsp, %rdi +#ifndef __APPLE__ + callq sp_3072_mul_avx2_24@plt +#else + callq _sp_3072_mul_avx2_24 +#endif /* __APPLE__ */ + movq 1168(%rsp), %rdx + movq 1160(%rsp), %rsi + leaq 384(%rsp), %rdi + addq $192, %rdx + addq $192, %rsi +#ifndef __APPLE__ + callq sp_3072_mul_avx2_24@plt +#else + callq _sp_3072_mul_avx2_24 +#endif /* __APPLE__ */ + movq 1168(%rsp), %rdx + movq 1160(%rsp), %rsi + movq 1152(%rsp), %rdi +#ifndef __APPLE__ + callq sp_3072_mul_avx2_24@plt +#else + callq _sp_3072_mul_avx2_24 +#endif /* __APPLE__ */ + movq 1176(%rsp), %r13 + movq 1184(%rsp), %r14 + movq 1152(%rsp), %r15 + movq %r13, %r9 + leaq 768(%rsp), %r10 + leaq 960(%rsp), %r11 + andq %r14, %r9 + negq %r13 + negq %r14 + addq $384, %r15 + movq (%r10), %rax + movq (%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + addq %rcx, %rax + movq 8(%r10), %rcx + movq 8(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, (%r15) + adcq %r8, %rcx + movq 16(%r10), %r8 + movq 16(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 8(%r15) + adcq %rax, %r8 + movq 24(%r10), %rax + movq 24(%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + movq %r8, 16(%r15) + adcq %rcx, %rax + movq 32(%r10), %rcx + movq 32(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, 24(%r15) + adcq %r8, %rcx + movq 40(%r10), %r8 + movq 40(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 32(%r15) + adcq %rax, %r8 + movq 48(%r10), %rax + movq 48(%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + movq %r8, 40(%r15) + adcq %rcx, %rax + movq 56(%r10), %rcx + movq 56(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, 48(%r15) + adcq %r8, %rcx + movq 64(%r10), %r8 + movq 64(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 56(%r15) + adcq %rax, %r8 + movq 72(%r10), %rax + movq 72(%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + movq %r8, 64(%r15) + adcq %rcx, %rax + movq 80(%r10), %rcx + movq 80(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, 72(%r15) + adcq %r8, %rcx + movq 88(%r10), %r8 + movq 88(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 80(%r15) + adcq %rax, %r8 + movq 96(%r10), %rax + movq 96(%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + movq %r8, 88(%r15) + adcq %rcx, %rax + movq 104(%r10), %rcx + movq 104(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, 96(%r15) + adcq %r8, %rcx + movq 112(%r10), %r8 + movq 112(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 104(%r15) + adcq %rax, %r8 + movq 120(%r10), %rax + movq 120(%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + movq %r8, 112(%r15) + adcq %rcx, %rax + movq 128(%r10), %rcx + movq 128(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, 120(%r15) + adcq %r8, %rcx + movq 136(%r10), %r8 + movq 136(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 128(%r15) + adcq %rax, %r8 + movq 144(%r10), %rax + movq 144(%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + movq %r8, 136(%r15) + adcq %rcx, %rax + movq 152(%r10), %rcx + movq 152(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, 144(%r15) + adcq %r8, %rcx + movq 160(%r10), %r8 + movq 160(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 152(%r15) + adcq %rax, %r8 + movq 168(%r10), %rax + movq 168(%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + movq %r8, 160(%r15) + adcq %rcx, %rax + movq 176(%r10), %rcx + movq 176(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, 168(%r15) + adcq %r8, %rcx + movq 184(%r10), %r8 + movq 184(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 176(%r15) + adcq %rax, %r8 + movq %r8, 184(%r15) + adcq $0, %r9 + leaq 384(%rsp), %r11 + movq %rsp, %r10 + movq (%r10), %rax + subq (%r11), %rax + movq 8(%r10), %rcx + movq %rax, (%r10) + sbbq 8(%r11), %rcx + movq 16(%r10), %r8 + movq %rcx, 8(%r10) + sbbq 16(%r11), %r8 + movq 24(%r10), %rax + movq %r8, 16(%r10) + sbbq 24(%r11), %rax + movq 32(%r10), %rcx + movq %rax, 24(%r10) + sbbq 32(%r11), %rcx + movq 40(%r10), %r8 + movq %rcx, 32(%r10) + sbbq 40(%r11), %r8 + movq 48(%r10), %rax + movq %r8, 40(%r10) + sbbq 48(%r11), %rax + movq 56(%r10), %rcx + movq %rax, 48(%r10) + sbbq 56(%r11), %rcx + movq 64(%r10), %r8 + movq %rcx, 56(%r10) + sbbq 64(%r11), %r8 + movq 72(%r10), %rax + movq %r8, 64(%r10) + sbbq 72(%r11), %rax + movq 80(%r10), %rcx + movq %rax, 72(%r10) + sbbq 80(%r11), %rcx + movq 88(%r10), %r8 + movq %rcx, 80(%r10) + sbbq 88(%r11), %r8 + movq 96(%r10), %rax + movq %r8, 88(%r10) + sbbq 96(%r11), %rax + movq 104(%r10), %rcx + movq %rax, 96(%r10) + sbbq 104(%r11), %rcx + movq 112(%r10), %r8 + movq %rcx, 104(%r10) + sbbq 112(%r11), %r8 + movq 120(%r10), %rax + movq %r8, 112(%r10) + sbbq 120(%r11), %rax + movq 128(%r10), %rcx + movq %rax, 120(%r10) + sbbq 128(%r11), %rcx + movq 136(%r10), %r8 + movq %rcx, 128(%r10) + sbbq 136(%r11), %r8 + movq 144(%r10), %rax + movq %r8, 136(%r10) + sbbq 144(%r11), %rax + movq 152(%r10), %rcx + movq %rax, 144(%r10) + sbbq 152(%r11), %rcx + movq 160(%r10), %r8 + movq %rcx, 152(%r10) + sbbq 160(%r11), %r8 + movq 168(%r10), %rax + movq %r8, 160(%r10) + sbbq 168(%r11), %rax + movq 176(%r10), %rcx + movq %rax, 168(%r10) + sbbq 176(%r11), %rcx + movq 184(%r10), %r8 + movq %rcx, 176(%r10) + sbbq 184(%r11), %r8 + movq 192(%r10), %rax + movq %r8, 184(%r10) + sbbq 192(%r11), %rax + movq 200(%r10), %rcx + movq %rax, 192(%r10) + sbbq 200(%r11), %rcx + movq 208(%r10), %r8 + movq %rcx, 200(%r10) + sbbq 208(%r11), %r8 + movq 216(%r10), %rax + movq %r8, 208(%r10) + sbbq 216(%r11), %rax + movq 224(%r10), %rcx + movq %rax, 216(%r10) + sbbq 224(%r11), %rcx + movq 232(%r10), %r8 + movq %rcx, 224(%r10) + sbbq 232(%r11), %r8 + movq 240(%r10), %rax + movq %r8, 232(%r10) + sbbq 240(%r11), %rax + movq 248(%r10), %rcx + movq %rax, 240(%r10) + sbbq 248(%r11), %rcx + movq 256(%r10), %r8 + movq %rcx, 248(%r10) + sbbq 256(%r11), %r8 + movq 264(%r10), %rax + movq %r8, 256(%r10) + sbbq 264(%r11), %rax + movq 272(%r10), %rcx + movq %rax, 264(%r10) + sbbq 272(%r11), %rcx + movq 280(%r10), %r8 + movq %rcx, 272(%r10) + sbbq 280(%r11), %r8 + movq 288(%r10), %rax + movq %r8, 280(%r10) + sbbq 288(%r11), %rax + movq 296(%r10), %rcx + movq %rax, 288(%r10) + sbbq 296(%r11), %rcx + movq 304(%r10), %r8 + movq %rcx, 296(%r10) + sbbq 304(%r11), %r8 + movq 312(%r10), %rax + movq %r8, 304(%r10) + sbbq 312(%r11), %rax + movq 320(%r10), %rcx + movq %rax, 312(%r10) + sbbq 320(%r11), %rcx + movq 328(%r10), %r8 + movq %rcx, 320(%r10) + sbbq 328(%r11), %r8 + movq 336(%r10), %rax + movq %r8, 328(%r10) + sbbq 336(%r11), %rax + movq 344(%r10), %rcx + movq %rax, 336(%r10) + sbbq 344(%r11), %rcx + movq 352(%r10), %r8 + movq %rcx, 344(%r10) + sbbq 352(%r11), %r8 + movq 360(%r10), %rax + movq %r8, 352(%r10) + sbbq 360(%r11), %rax + movq 368(%r10), %rcx + movq %rax, 360(%r10) + sbbq 368(%r11), %rcx + movq 376(%r10), %r8 + movq %rcx, 368(%r10) + sbbq 376(%r11), %r8 + movq %r8, 376(%r10) + sbbq $0, %r9 + movq (%r10), %rax + subq (%rdi), %rax + movq 8(%r10), %rcx + movq %rax, (%r10) + sbbq 8(%rdi), %rcx + movq 16(%r10), %r8 + movq %rcx, 8(%r10) + sbbq 16(%rdi), %r8 + movq 24(%r10), %rax + movq %r8, 16(%r10) + sbbq 24(%rdi), %rax + movq 32(%r10), %rcx + movq %rax, 24(%r10) + sbbq 32(%rdi), %rcx + movq 40(%r10), %r8 + movq %rcx, 32(%r10) + sbbq 40(%rdi), %r8 + movq 48(%r10), %rax + movq %r8, 40(%r10) + sbbq 48(%rdi), %rax + movq 56(%r10), %rcx + movq %rax, 48(%r10) + sbbq 56(%rdi), %rcx + movq 64(%r10), %r8 + movq %rcx, 56(%r10) + sbbq 64(%rdi), %r8 + movq 72(%r10), %rax + movq %r8, 64(%r10) + sbbq 72(%rdi), %rax + movq 80(%r10), %rcx + movq %rax, 72(%r10) + sbbq 80(%rdi), %rcx + movq 88(%r10), %r8 + movq %rcx, 80(%r10) + sbbq 88(%rdi), %r8 + movq 96(%r10), %rax + movq %r8, 88(%r10) + sbbq 96(%rdi), %rax + movq 104(%r10), %rcx + movq %rax, 96(%r10) + sbbq 104(%rdi), %rcx + movq 112(%r10), %r8 + movq %rcx, 104(%r10) + sbbq 112(%rdi), %r8 + movq 120(%r10), %rax + movq %r8, 112(%r10) + sbbq 120(%rdi), %rax + movq 128(%r10), %rcx + movq %rax, 120(%r10) + sbbq 128(%rdi), %rcx + movq 136(%r10), %r8 + movq %rcx, 128(%r10) + sbbq 136(%rdi), %r8 + movq 144(%r10), %rax + movq %r8, 136(%r10) + sbbq 144(%rdi), %rax + movq 152(%r10), %rcx + movq %rax, 144(%r10) + sbbq 152(%rdi), %rcx + movq 160(%r10), %r8 + movq %rcx, 152(%r10) + sbbq 160(%rdi), %r8 + movq 168(%r10), %rax + movq %r8, 160(%r10) + sbbq 168(%rdi), %rax + movq 176(%r10), %rcx + movq %rax, 168(%r10) + sbbq 176(%rdi), %rcx + movq 184(%r10), %r8 + movq %rcx, 176(%r10) + sbbq 184(%rdi), %r8 + movq 192(%r10), %rax + movq %r8, 184(%r10) + sbbq 192(%rdi), %rax + movq 200(%r10), %rcx + movq %rax, 192(%r10) + sbbq 200(%rdi), %rcx + movq 208(%r10), %r8 + movq %rcx, 200(%r10) + sbbq 208(%rdi), %r8 + movq 216(%r10), %rax + movq %r8, 208(%r10) + sbbq 216(%rdi), %rax + movq 224(%r10), %rcx + movq %rax, 216(%r10) + sbbq 224(%rdi), %rcx + movq 232(%r10), %r8 + movq %rcx, 224(%r10) + sbbq 232(%rdi), %r8 + movq 240(%r10), %rax + movq %r8, 232(%r10) + sbbq 240(%rdi), %rax + movq 248(%r10), %rcx + movq %rax, 240(%r10) + sbbq 248(%rdi), %rcx + movq 256(%r10), %r8 + movq %rcx, 248(%r10) + sbbq 256(%rdi), %r8 + movq 264(%r10), %rax + movq %r8, 256(%r10) + sbbq 264(%rdi), %rax + movq 272(%r10), %rcx + movq %rax, 264(%r10) + sbbq 272(%rdi), %rcx + movq 280(%r10), %r8 + movq %rcx, 272(%r10) + sbbq 280(%rdi), %r8 + movq 288(%r10), %rax + movq %r8, 280(%r10) + sbbq 288(%rdi), %rax + movq 296(%r10), %rcx + movq %rax, 288(%r10) + sbbq 296(%rdi), %rcx + movq 304(%r10), %r8 + movq %rcx, 296(%r10) + sbbq 304(%rdi), %r8 + movq 312(%r10), %rax + movq %r8, 304(%r10) + sbbq 312(%rdi), %rax + movq 320(%r10), %rcx + movq %rax, 312(%r10) + sbbq 320(%rdi), %rcx + movq 328(%r10), %r8 + movq %rcx, 320(%r10) + sbbq 328(%rdi), %r8 + movq 336(%r10), %rax + movq %r8, 328(%r10) + sbbq 336(%rdi), %rax + movq 344(%r10), %rcx + movq %rax, 336(%r10) + sbbq 344(%rdi), %rcx + movq 352(%r10), %r8 + movq %rcx, 344(%r10) + sbbq 352(%rdi), %r8 + movq 360(%r10), %rax + movq %r8, 352(%r10) + sbbq 360(%rdi), %rax + movq 368(%r10), %rcx + movq %rax, 360(%r10) + sbbq 368(%rdi), %rcx + movq 376(%r10), %r8 + movq %rcx, 368(%r10) + sbbq 376(%rdi), %r8 + movq %r8, 376(%r10) + sbbq $0, %r9 + subq $192, %r15 + # Add + movq (%r15), %rax + addq (%r10), %rax + movq 8(%r15), %rcx + movq %rax, (%r15) + adcq 8(%r10), %rcx + movq 16(%r15), %r8 + movq %rcx, 8(%r15) + adcq 16(%r10), %r8 + movq 24(%r15), %rax + movq %r8, 16(%r15) + adcq 24(%r10), %rax + movq 32(%r15), %rcx + movq %rax, 24(%r15) + adcq 32(%r10), %rcx + movq 40(%r15), %r8 + movq %rcx, 32(%r15) + adcq 40(%r10), %r8 + movq 48(%r15), %rax + movq %r8, 40(%r15) + adcq 48(%r10), %rax + movq 56(%r15), %rcx + movq %rax, 48(%r15) + adcq 56(%r10), %rcx + movq 64(%r15), %r8 + movq %rcx, 56(%r15) + adcq 64(%r10), %r8 + movq 72(%r15), %rax + movq %r8, 64(%r15) + adcq 72(%r10), %rax + movq 80(%r15), %rcx + movq %rax, 72(%r15) + adcq 80(%r10), %rcx + movq 88(%r15), %r8 + movq %rcx, 80(%r15) + adcq 88(%r10), %r8 + movq 96(%r15), %rax + movq %r8, 88(%r15) + adcq 96(%r10), %rax + movq 104(%r15), %rcx + movq %rax, 96(%r15) + adcq 104(%r10), %rcx + movq 112(%r15), %r8 + movq %rcx, 104(%r15) + adcq 112(%r10), %r8 + movq 120(%r15), %rax + movq %r8, 112(%r15) + adcq 120(%r10), %rax + movq 128(%r15), %rcx + movq %rax, 120(%r15) + adcq 128(%r10), %rcx + movq 136(%r15), %r8 + movq %rcx, 128(%r15) + adcq 136(%r10), %r8 + movq 144(%r15), %rax + movq %r8, 136(%r15) + adcq 144(%r10), %rax + movq 152(%r15), %rcx + movq %rax, 144(%r15) + adcq 152(%r10), %rcx + movq 160(%r15), %r8 + movq %rcx, 152(%r15) + adcq 160(%r10), %r8 + movq 168(%r15), %rax + movq %r8, 160(%r15) + adcq 168(%r10), %rax + movq 176(%r15), %rcx + movq %rax, 168(%r15) + adcq 176(%r10), %rcx + movq 184(%r15), %r8 + movq %rcx, 176(%r15) + adcq 184(%r10), %r8 + movq 192(%r15), %rax + movq %r8, 184(%r15) + adcq 192(%r10), %rax + movq 200(%r15), %rcx + movq %rax, 192(%r15) + adcq 200(%r10), %rcx + movq 208(%r15), %r8 + movq %rcx, 200(%r15) + adcq 208(%r10), %r8 + movq 216(%r15), %rax + movq %r8, 208(%r15) + adcq 216(%r10), %rax + movq 224(%r15), %rcx + movq %rax, 216(%r15) + adcq 224(%r10), %rcx + movq 232(%r15), %r8 + movq %rcx, 224(%r15) + adcq 232(%r10), %r8 + movq 240(%r15), %rax + movq %r8, 232(%r15) + adcq 240(%r10), %rax + movq 248(%r15), %rcx + movq %rax, 240(%r15) + adcq 248(%r10), %rcx + movq 256(%r15), %r8 + movq %rcx, 248(%r15) + adcq 256(%r10), %r8 + movq 264(%r15), %rax + movq %r8, 256(%r15) + adcq 264(%r10), %rax + movq 272(%r15), %rcx + movq %rax, 264(%r15) + adcq 272(%r10), %rcx + movq 280(%r15), %r8 + movq %rcx, 272(%r15) + adcq 280(%r10), %r8 + movq 288(%r15), %rax + movq %r8, 280(%r15) + adcq 288(%r10), %rax + movq 296(%r15), %rcx + movq %rax, 288(%r15) + adcq 296(%r10), %rcx + movq 304(%r15), %r8 + movq %rcx, 296(%r15) + adcq 304(%r10), %r8 + movq 312(%r15), %rax + movq %r8, 304(%r15) + adcq 312(%r10), %rax + movq 320(%r15), %rcx + movq %rax, 312(%r15) + adcq 320(%r10), %rcx + movq 328(%r15), %r8 + movq %rcx, 320(%r15) + adcq 328(%r10), %r8 + movq 336(%r15), %rax + movq %r8, 328(%r15) + adcq 336(%r10), %rax + movq 344(%r15), %rcx + movq %rax, 336(%r15) + adcq 344(%r10), %rcx + movq 352(%r15), %r8 + movq %rcx, 344(%r15) + adcq 352(%r10), %r8 + movq 360(%r15), %rax + movq %r8, 352(%r15) + adcq 360(%r10), %rax + movq 368(%r15), %rcx + movq %rax, 360(%r15) + adcq 368(%r10), %rcx + movq 376(%r15), %r8 + movq %rcx, 368(%r15) + adcq 376(%r10), %r8 + movq %r8, 376(%r15) + adcq $0, %r9 + movq %r9, 576(%rdi) + addq $192, %r15 + # Add + movq (%r15), %rax + addq (%r11), %rax + movq 8(%r15), %rcx + movq %rax, (%r15) + adcq 8(%r11), %rcx + movq 16(%r15), %r8 + movq %rcx, 8(%r15) + adcq 16(%r11), %r8 + movq 24(%r15), %rax + movq %r8, 16(%r15) + adcq 24(%r11), %rax + movq 32(%r15), %rcx + movq %rax, 24(%r15) + adcq 32(%r11), %rcx + movq 40(%r15), %r8 + movq %rcx, 32(%r15) + adcq 40(%r11), %r8 + movq 48(%r15), %rax + movq %r8, 40(%r15) + adcq 48(%r11), %rax + movq 56(%r15), %rcx + movq %rax, 48(%r15) + adcq 56(%r11), %rcx + movq 64(%r15), %r8 + movq %rcx, 56(%r15) + adcq 64(%r11), %r8 + movq 72(%r15), %rax + movq %r8, 64(%r15) + adcq 72(%r11), %rax + movq 80(%r15), %rcx + movq %rax, 72(%r15) + adcq 80(%r11), %rcx + movq 88(%r15), %r8 + movq %rcx, 80(%r15) + adcq 88(%r11), %r8 + movq 96(%r15), %rax + movq %r8, 88(%r15) + adcq 96(%r11), %rax + movq 104(%r15), %rcx + movq %rax, 96(%r15) + adcq 104(%r11), %rcx + movq 112(%r15), %r8 + movq %rcx, 104(%r15) + adcq 112(%r11), %r8 + movq 120(%r15), %rax + movq %r8, 112(%r15) + adcq 120(%r11), %rax + movq 128(%r15), %rcx + movq %rax, 120(%r15) + adcq 128(%r11), %rcx + movq 136(%r15), %r8 + movq %rcx, 128(%r15) + adcq 136(%r11), %r8 + movq 144(%r15), %rax + movq %r8, 136(%r15) + adcq 144(%r11), %rax + movq 152(%r15), %rcx + movq %rax, 144(%r15) + adcq 152(%r11), %rcx + movq 160(%r15), %r8 + movq %rcx, 152(%r15) + adcq 160(%r11), %r8 + movq 168(%r15), %rax + movq %r8, 160(%r15) + adcq 168(%r11), %rax + movq 176(%r15), %rcx + movq %rax, 168(%r15) + adcq 176(%r11), %rcx + movq 184(%r15), %r8 + movq %rcx, 176(%r15) + adcq 184(%r11), %r8 + movq 192(%r15), %rax + movq %r8, 184(%r15) + adcq 192(%r11), %rax + movq %rax, 192(%r15) + # Add to zero + movq 200(%r11), %rax + adcq $0, %rax + movq 208(%r11), %rcx + movq %rax, 200(%r15) + adcq $0, %rcx + movq 216(%r11), %r8 + movq %rcx, 208(%r15) + adcq $0, %r8 + movq 224(%r11), %rax + movq %r8, 216(%r15) + adcq $0, %rax + movq 232(%r11), %rcx + movq %rax, 224(%r15) + adcq $0, %rcx + movq 240(%r11), %r8 + movq %rcx, 232(%r15) + adcq $0, %r8 + movq 248(%r11), %rax + movq %r8, 240(%r15) + adcq $0, %rax + movq 256(%r11), %rcx + movq %rax, 248(%r15) + adcq $0, %rcx + movq 264(%r11), %r8 + movq %rcx, 256(%r15) + adcq $0, %r8 + movq 272(%r11), %rax + movq %r8, 264(%r15) + adcq $0, %rax + movq 280(%r11), %rcx + movq %rax, 272(%r15) + adcq $0, %rcx + movq 288(%r11), %r8 + movq %rcx, 280(%r15) + adcq $0, %r8 + movq 296(%r11), %rax + movq %r8, 288(%r15) + adcq $0, %rax + movq 304(%r11), %rcx + movq %rax, 296(%r15) + adcq $0, %rcx + movq 312(%r11), %r8 + movq %rcx, 304(%r15) + adcq $0, %r8 + movq 320(%r11), %rax + movq %r8, 312(%r15) + adcq $0, %rax + movq 328(%r11), %rcx + movq %rax, 320(%r15) + adcq $0, %rcx + movq 336(%r11), %r8 + movq %rcx, 328(%r15) + adcq $0, %r8 + movq 344(%r11), %rax + movq %r8, 336(%r15) + adcq $0, %rax + movq 352(%r11), %rcx + movq %rax, 344(%r15) + adcq $0, %rcx + movq 360(%r11), %r8 + movq %rcx, 352(%r15) + adcq $0, %r8 + movq 368(%r11), %rax + movq %r8, 360(%r15) + adcq $0, %rax + movq 376(%r11), %rcx + movq %rax, 368(%r15) + adcq $0, %rcx + movq %rcx, 376(%r15) + addq $1192, %rsp + pop %r15 + pop %r14 + pop %r13 + pop %r12 + repz retq +#ifndef __APPLE__ +.size sp_3072_mul_avx2_48,.-sp_3072_mul_avx2_48 +#endif /* __APPLE__ */ +/* Square a and put result in r. (r = a * a) + * + * r A single precision integer. + * a A single precision integer. + */ +#ifndef __APPLE__ +.globl sp_3072_sqr_avx2_48 +.type sp_3072_sqr_avx2_48,@function +.align 16 +sp_3072_sqr_avx2_48: +#else +.globl _sp_3072_sqr_avx2_48 +.p2align 4 +_sp_3072_sqr_avx2_48: +#endif /* __APPLE__ */ + subq $984, %rsp + movq %rdi, 960(%rsp) + movq %rsi, 968(%rsp) + leaq 768(%rsp), %r8 + leaq 192(%rsi), %r9 + # Add + movq (%rsi), %rdx + xorq %rcx, %rcx + addq (%r9), %rdx + movq 8(%rsi), %rax + movq %rdx, (%r8) + adcq 8(%r9), %rax + movq 16(%rsi), %rdx + movq %rax, 8(%r8) + adcq 16(%r9), %rdx + movq 24(%rsi), %rax + movq %rdx, 16(%r8) + adcq 24(%r9), %rax + movq 32(%rsi), %rdx + movq %rax, 24(%r8) + adcq 32(%r9), %rdx + movq 40(%rsi), %rax + movq %rdx, 32(%r8) + adcq 40(%r9), %rax + movq 48(%rsi), %rdx + movq %rax, 40(%r8) + adcq 48(%r9), %rdx + movq 56(%rsi), %rax + movq %rdx, 48(%r8) + adcq 56(%r9), %rax + movq 64(%rsi), %rdx + movq %rax, 56(%r8) + adcq 64(%r9), %rdx + movq 72(%rsi), %rax + movq %rdx, 64(%r8) + adcq 72(%r9), %rax + movq 80(%rsi), %rdx + movq %rax, 72(%r8) + adcq 80(%r9), %rdx + movq 88(%rsi), %rax + movq %rdx, 80(%r8) + adcq 88(%r9), %rax + movq 96(%rsi), %rdx + movq %rax, 88(%r8) + adcq 96(%r9), %rdx + movq 104(%rsi), %rax + movq %rdx, 96(%r8) + adcq 104(%r9), %rax + movq 112(%rsi), %rdx + movq %rax, 104(%r8) + adcq 112(%r9), %rdx + movq 120(%rsi), %rax + movq %rdx, 112(%r8) + adcq 120(%r9), %rax + movq 128(%rsi), %rdx + movq %rax, 120(%r8) + adcq 128(%r9), %rdx + movq 136(%rsi), %rax + movq %rdx, 128(%r8) + adcq 136(%r9), %rax + movq 144(%rsi), %rdx + movq %rax, 136(%r8) + adcq 144(%r9), %rdx + movq 152(%rsi), %rax + movq %rdx, 144(%r8) + adcq 152(%r9), %rax + movq 160(%rsi), %rdx + movq %rax, 152(%r8) + adcq 160(%r9), %rdx + movq 168(%rsi), %rax + movq %rdx, 160(%r8) + adcq 168(%r9), %rax + movq 176(%rsi), %rdx + movq %rax, 168(%r8) + adcq 176(%r9), %rdx + movq 184(%rsi), %rax + movq %rdx, 176(%r8) + adcq 184(%r9), %rax + movq %rax, 184(%r8) + adcq $0, %rcx + movq %rcx, 976(%rsp) + movq %r8, %rsi + movq %rsp, %rdi +#ifndef __APPLE__ + callq sp_3072_sqr_avx2_24@plt +#else + callq _sp_3072_sqr_avx2_24 +#endif /* __APPLE__ */ + movq 968(%rsp), %rsi + leaq 384(%rsp), %rdi + addq $192, %rsi +#ifndef __APPLE__ + callq sp_3072_sqr_avx2_24@plt +#else + callq _sp_3072_sqr_avx2_24 +#endif /* __APPLE__ */ + movq 968(%rsp), %rsi + movq 960(%rsp), %rdi +#ifndef __APPLE__ + callq sp_3072_sqr_avx2_24@plt +#else + callq _sp_3072_sqr_avx2_24 +#endif /* __APPLE__ */ + movq 976(%rsp), %r10 + movq %rdi, %r9 + leaq 768(%rsp), %r8 + movq %r10, %rcx + negq %r10 + addq $384, %r9 + movq (%r8), %rdx + pextq %r10, %rdx, %rdx + addq %rdx, %rdx + movq 8(%r8), %rax + movq %rdx, (%r9) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 16(%r8), %rdx + movq %rax, 8(%r9) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 24(%r8), %rax + movq %rdx, 16(%r9) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 32(%r8), %rdx + movq %rax, 24(%r9) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 40(%r8), %rax + movq %rdx, 32(%r9) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 48(%r8), %rdx + movq %rax, 40(%r9) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 56(%r8), %rax + movq %rdx, 48(%r9) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 64(%r8), %rdx + movq %rax, 56(%r9) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 72(%r8), %rax + movq %rdx, 64(%r9) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 80(%r8), %rdx + movq %rax, 72(%r9) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 88(%r8), %rax + movq %rdx, 80(%r9) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 96(%r8), %rdx + movq %rax, 88(%r9) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 104(%r8), %rax + movq %rdx, 96(%r9) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 112(%r8), %rdx + movq %rax, 104(%r9) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 120(%r8), %rax + movq %rdx, 112(%r9) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 128(%r8), %rdx + movq %rax, 120(%r9) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 136(%r8), %rax + movq %rdx, 128(%r9) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 144(%r8), %rdx + movq %rax, 136(%r9) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 152(%r8), %rax + movq %rdx, 144(%r9) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 160(%r8), %rdx + movq %rax, 152(%r9) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 168(%r8), %rax + movq %rdx, 160(%r9) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 176(%r8), %rdx + movq %rax, 168(%r9) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 184(%r8), %rax + movq %rdx, 176(%r9) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq %rax, 184(%r9) + adcq $0, %rcx + leaq 384(%rsp), %rsi + movq %rsp, %r8 + movq (%r8), %rdx + subq (%rsi), %rdx + movq 8(%r8), %rax + movq %rdx, (%r8) + sbbq 8(%rsi), %rax + movq 16(%r8), %rdx + movq %rax, 8(%r8) + sbbq 16(%rsi), %rdx + movq 24(%r8), %rax + movq %rdx, 16(%r8) + sbbq 24(%rsi), %rax + movq 32(%r8), %rdx + movq %rax, 24(%r8) + sbbq 32(%rsi), %rdx + movq 40(%r8), %rax + movq %rdx, 32(%r8) + sbbq 40(%rsi), %rax + movq 48(%r8), %rdx + movq %rax, 40(%r8) + sbbq 48(%rsi), %rdx + movq 56(%r8), %rax + movq %rdx, 48(%r8) + sbbq 56(%rsi), %rax + movq 64(%r8), %rdx + movq %rax, 56(%r8) + sbbq 64(%rsi), %rdx + movq 72(%r8), %rax + movq %rdx, 64(%r8) + sbbq 72(%rsi), %rax + movq 80(%r8), %rdx + movq %rax, 72(%r8) + sbbq 80(%rsi), %rdx + movq 88(%r8), %rax + movq %rdx, 80(%r8) + sbbq 88(%rsi), %rax + movq 96(%r8), %rdx + movq %rax, 88(%r8) + sbbq 96(%rsi), %rdx + movq 104(%r8), %rax + movq %rdx, 96(%r8) + sbbq 104(%rsi), %rax + movq 112(%r8), %rdx + movq %rax, 104(%r8) + sbbq 112(%rsi), %rdx + movq 120(%r8), %rax + movq %rdx, 112(%r8) + sbbq 120(%rsi), %rax + movq 128(%r8), %rdx + movq %rax, 120(%r8) + sbbq 128(%rsi), %rdx + movq 136(%r8), %rax + movq %rdx, 128(%r8) + sbbq 136(%rsi), %rax + movq 144(%r8), %rdx + movq %rax, 136(%r8) + sbbq 144(%rsi), %rdx + movq 152(%r8), %rax + movq %rdx, 144(%r8) + sbbq 152(%rsi), %rax + movq 160(%r8), %rdx + movq %rax, 152(%r8) + sbbq 160(%rsi), %rdx + movq 168(%r8), %rax + movq %rdx, 160(%r8) + sbbq 168(%rsi), %rax + movq 176(%r8), %rdx + movq %rax, 168(%r8) + sbbq 176(%rsi), %rdx + movq 184(%r8), %rax + movq %rdx, 176(%r8) + sbbq 184(%rsi), %rax + movq 192(%r8), %rdx + movq %rax, 184(%r8) + sbbq 192(%rsi), %rdx + movq 200(%r8), %rax + movq %rdx, 192(%r8) + sbbq 200(%rsi), %rax + movq 208(%r8), %rdx + movq %rax, 200(%r8) + sbbq 208(%rsi), %rdx + movq 216(%r8), %rax + movq %rdx, 208(%r8) + sbbq 216(%rsi), %rax + movq 224(%r8), %rdx + movq %rax, 216(%r8) + sbbq 224(%rsi), %rdx + movq 232(%r8), %rax + movq %rdx, 224(%r8) + sbbq 232(%rsi), %rax + movq 240(%r8), %rdx + movq %rax, 232(%r8) + sbbq 240(%rsi), %rdx + movq 248(%r8), %rax + movq %rdx, 240(%r8) + sbbq 248(%rsi), %rax + movq 256(%r8), %rdx + movq %rax, 248(%r8) + sbbq 256(%rsi), %rdx + movq 264(%r8), %rax + movq %rdx, 256(%r8) + sbbq 264(%rsi), %rax + movq 272(%r8), %rdx + movq %rax, 264(%r8) + sbbq 272(%rsi), %rdx + movq 280(%r8), %rax + movq %rdx, 272(%r8) + sbbq 280(%rsi), %rax + movq 288(%r8), %rdx + movq %rax, 280(%r8) + sbbq 288(%rsi), %rdx + movq 296(%r8), %rax + movq %rdx, 288(%r8) + sbbq 296(%rsi), %rax + movq 304(%r8), %rdx + movq %rax, 296(%r8) + sbbq 304(%rsi), %rdx + movq 312(%r8), %rax + movq %rdx, 304(%r8) + sbbq 312(%rsi), %rax + movq 320(%r8), %rdx + movq %rax, 312(%r8) + sbbq 320(%rsi), %rdx + movq 328(%r8), %rax + movq %rdx, 320(%r8) + sbbq 328(%rsi), %rax + movq 336(%r8), %rdx + movq %rax, 328(%r8) + sbbq 336(%rsi), %rdx + movq 344(%r8), %rax + movq %rdx, 336(%r8) + sbbq 344(%rsi), %rax + movq 352(%r8), %rdx + movq %rax, 344(%r8) + sbbq 352(%rsi), %rdx + movq 360(%r8), %rax + movq %rdx, 352(%r8) + sbbq 360(%rsi), %rax + movq 368(%r8), %rdx + movq %rax, 360(%r8) + sbbq 368(%rsi), %rdx + movq 376(%r8), %rax + movq %rdx, 368(%r8) + sbbq 376(%rsi), %rax + movq %rax, 376(%r8) + sbbq $0, %rcx + movq (%r8), %rdx + subq (%rdi), %rdx + movq 8(%r8), %rax + movq %rdx, (%r8) + sbbq 8(%rdi), %rax + movq 16(%r8), %rdx + movq %rax, 8(%r8) + sbbq 16(%rdi), %rdx + movq 24(%r8), %rax + movq %rdx, 16(%r8) + sbbq 24(%rdi), %rax + movq 32(%r8), %rdx + movq %rax, 24(%r8) + sbbq 32(%rdi), %rdx + movq 40(%r8), %rax + movq %rdx, 32(%r8) + sbbq 40(%rdi), %rax + movq 48(%r8), %rdx + movq %rax, 40(%r8) + sbbq 48(%rdi), %rdx + movq 56(%r8), %rax + movq %rdx, 48(%r8) + sbbq 56(%rdi), %rax + movq 64(%r8), %rdx + movq %rax, 56(%r8) + sbbq 64(%rdi), %rdx + movq 72(%r8), %rax + movq %rdx, 64(%r8) + sbbq 72(%rdi), %rax + movq 80(%r8), %rdx + movq %rax, 72(%r8) + sbbq 80(%rdi), %rdx + movq 88(%r8), %rax + movq %rdx, 80(%r8) + sbbq 88(%rdi), %rax + movq 96(%r8), %rdx + movq %rax, 88(%r8) + sbbq 96(%rdi), %rdx + movq 104(%r8), %rax + movq %rdx, 96(%r8) + sbbq 104(%rdi), %rax + movq 112(%r8), %rdx + movq %rax, 104(%r8) + sbbq 112(%rdi), %rdx + movq 120(%r8), %rax + movq %rdx, 112(%r8) + sbbq 120(%rdi), %rax + movq 128(%r8), %rdx + movq %rax, 120(%r8) + sbbq 128(%rdi), %rdx + movq 136(%r8), %rax + movq %rdx, 128(%r8) + sbbq 136(%rdi), %rax + movq 144(%r8), %rdx + movq %rax, 136(%r8) + sbbq 144(%rdi), %rdx + movq 152(%r8), %rax + movq %rdx, 144(%r8) + sbbq 152(%rdi), %rax + movq 160(%r8), %rdx + movq %rax, 152(%r8) + sbbq 160(%rdi), %rdx + movq 168(%r8), %rax + movq %rdx, 160(%r8) + sbbq 168(%rdi), %rax + movq 176(%r8), %rdx + movq %rax, 168(%r8) + sbbq 176(%rdi), %rdx + movq 184(%r8), %rax + movq %rdx, 176(%r8) + sbbq 184(%rdi), %rax + movq 192(%r8), %rdx + movq %rax, 184(%r8) + sbbq 192(%rdi), %rdx + movq 200(%r8), %rax + movq %rdx, 192(%r8) + sbbq 200(%rdi), %rax + movq 208(%r8), %rdx + movq %rax, 200(%r8) + sbbq 208(%rdi), %rdx + movq 216(%r8), %rax + movq %rdx, 208(%r8) + sbbq 216(%rdi), %rax + movq 224(%r8), %rdx + movq %rax, 216(%r8) + sbbq 224(%rdi), %rdx + movq 232(%r8), %rax + movq %rdx, 224(%r8) + sbbq 232(%rdi), %rax + movq 240(%r8), %rdx + movq %rax, 232(%r8) + sbbq 240(%rdi), %rdx + movq 248(%r8), %rax + movq %rdx, 240(%r8) + sbbq 248(%rdi), %rax + movq 256(%r8), %rdx + movq %rax, 248(%r8) + sbbq 256(%rdi), %rdx + movq 264(%r8), %rax + movq %rdx, 256(%r8) + sbbq 264(%rdi), %rax + movq 272(%r8), %rdx + movq %rax, 264(%r8) + sbbq 272(%rdi), %rdx + movq 280(%r8), %rax + movq %rdx, 272(%r8) + sbbq 280(%rdi), %rax + movq 288(%r8), %rdx + movq %rax, 280(%r8) + sbbq 288(%rdi), %rdx + movq 296(%r8), %rax + movq %rdx, 288(%r8) + sbbq 296(%rdi), %rax + movq 304(%r8), %rdx + movq %rax, 296(%r8) + sbbq 304(%rdi), %rdx + movq 312(%r8), %rax + movq %rdx, 304(%r8) + sbbq 312(%rdi), %rax + movq 320(%r8), %rdx + movq %rax, 312(%r8) + sbbq 320(%rdi), %rdx + movq 328(%r8), %rax + movq %rdx, 320(%r8) + sbbq 328(%rdi), %rax + movq 336(%r8), %rdx + movq %rax, 328(%r8) + sbbq 336(%rdi), %rdx + movq 344(%r8), %rax + movq %rdx, 336(%r8) + sbbq 344(%rdi), %rax + movq 352(%r8), %rdx + movq %rax, 344(%r8) + sbbq 352(%rdi), %rdx + movq 360(%r8), %rax + movq %rdx, 352(%r8) + sbbq 360(%rdi), %rax + movq 368(%r8), %rdx + movq %rax, 360(%r8) + sbbq 368(%rdi), %rdx + movq 376(%r8), %rax + movq %rdx, 368(%r8) + sbbq 376(%rdi), %rax + movq %rax, 376(%r8) + sbbq $0, %rcx + subq $192, %r9 + # Add in place + movq (%r9), %rdx + addq (%r8), %rdx + movq 8(%r9), %rax + movq %rdx, (%r9) + adcq 8(%r8), %rax + movq 16(%r9), %rdx + movq %rax, 8(%r9) + adcq 16(%r8), %rdx + movq 24(%r9), %rax + movq %rdx, 16(%r9) + adcq 24(%r8), %rax + movq 32(%r9), %rdx + movq %rax, 24(%r9) + adcq 32(%r8), %rdx + movq 40(%r9), %rax + movq %rdx, 32(%r9) + adcq 40(%r8), %rax + movq 48(%r9), %rdx + movq %rax, 40(%r9) + adcq 48(%r8), %rdx + movq 56(%r9), %rax + movq %rdx, 48(%r9) + adcq 56(%r8), %rax + movq 64(%r9), %rdx + movq %rax, 56(%r9) + adcq 64(%r8), %rdx + movq 72(%r9), %rax + movq %rdx, 64(%r9) + adcq 72(%r8), %rax + movq 80(%r9), %rdx + movq %rax, 72(%r9) + adcq 80(%r8), %rdx + movq 88(%r9), %rax + movq %rdx, 80(%r9) + adcq 88(%r8), %rax + movq 96(%r9), %rdx + movq %rax, 88(%r9) + adcq 96(%r8), %rdx + movq 104(%r9), %rax + movq %rdx, 96(%r9) + adcq 104(%r8), %rax + movq 112(%r9), %rdx + movq %rax, 104(%r9) + adcq 112(%r8), %rdx + movq 120(%r9), %rax + movq %rdx, 112(%r9) + adcq 120(%r8), %rax + movq 128(%r9), %rdx + movq %rax, 120(%r9) + adcq 128(%r8), %rdx + movq 136(%r9), %rax + movq %rdx, 128(%r9) + adcq 136(%r8), %rax + movq 144(%r9), %rdx + movq %rax, 136(%r9) + adcq 144(%r8), %rdx + movq 152(%r9), %rax + movq %rdx, 144(%r9) + adcq 152(%r8), %rax + movq 160(%r9), %rdx + movq %rax, 152(%r9) + adcq 160(%r8), %rdx + movq 168(%r9), %rax + movq %rdx, 160(%r9) + adcq 168(%r8), %rax + movq 176(%r9), %rdx + movq %rax, 168(%r9) + adcq 176(%r8), %rdx + movq 184(%r9), %rax + movq %rdx, 176(%r9) + adcq 184(%r8), %rax + movq 192(%r9), %rdx + movq %rax, 184(%r9) + adcq 192(%r8), %rdx + movq 200(%r9), %rax + movq %rdx, 192(%r9) + adcq 200(%r8), %rax + movq 208(%r9), %rdx + movq %rax, 200(%r9) + adcq 208(%r8), %rdx + movq 216(%r9), %rax + movq %rdx, 208(%r9) + adcq 216(%r8), %rax + movq 224(%r9), %rdx + movq %rax, 216(%r9) + adcq 224(%r8), %rdx + movq 232(%r9), %rax + movq %rdx, 224(%r9) + adcq 232(%r8), %rax + movq 240(%r9), %rdx + movq %rax, 232(%r9) + adcq 240(%r8), %rdx + movq 248(%r9), %rax + movq %rdx, 240(%r9) + adcq 248(%r8), %rax + movq 256(%r9), %rdx + movq %rax, 248(%r9) + adcq 256(%r8), %rdx + movq 264(%r9), %rax + movq %rdx, 256(%r9) + adcq 264(%r8), %rax + movq 272(%r9), %rdx + movq %rax, 264(%r9) + adcq 272(%r8), %rdx + movq 280(%r9), %rax + movq %rdx, 272(%r9) + adcq 280(%r8), %rax + movq 288(%r9), %rdx + movq %rax, 280(%r9) + adcq 288(%r8), %rdx + movq 296(%r9), %rax + movq %rdx, 288(%r9) + adcq 296(%r8), %rax + movq 304(%r9), %rdx + movq %rax, 296(%r9) + adcq 304(%r8), %rdx + movq 312(%r9), %rax + movq %rdx, 304(%r9) + adcq 312(%r8), %rax + movq 320(%r9), %rdx + movq %rax, 312(%r9) + adcq 320(%r8), %rdx + movq 328(%r9), %rax + movq %rdx, 320(%r9) + adcq 328(%r8), %rax + movq 336(%r9), %rdx + movq %rax, 328(%r9) + adcq 336(%r8), %rdx + movq 344(%r9), %rax + movq %rdx, 336(%r9) + adcq 344(%r8), %rax + movq 352(%r9), %rdx + movq %rax, 344(%r9) + adcq 352(%r8), %rdx + movq 360(%r9), %rax + movq %rdx, 352(%r9) + adcq 360(%r8), %rax + movq 368(%r9), %rdx + movq %rax, 360(%r9) + adcq 368(%r8), %rdx + movq 376(%r9), %rax + movq %rdx, 368(%r9) + adcq 376(%r8), %rax + movq %rax, 376(%r9) + adcq $0, %rcx + movq %rcx, 576(%rdi) + # Add in place + movq 192(%r9), %rdx + addq (%rsi), %rdx + movq 200(%r9), %rax + movq %rdx, 192(%r9) + adcq 8(%rsi), %rax + movq 208(%r9), %rdx + movq %rax, 200(%r9) + adcq 16(%rsi), %rdx + movq 216(%r9), %rax + movq %rdx, 208(%r9) + adcq 24(%rsi), %rax + movq 224(%r9), %rdx + movq %rax, 216(%r9) + adcq 32(%rsi), %rdx + movq 232(%r9), %rax + movq %rdx, 224(%r9) + adcq 40(%rsi), %rax + movq 240(%r9), %rdx + movq %rax, 232(%r9) + adcq 48(%rsi), %rdx + movq 248(%r9), %rax + movq %rdx, 240(%r9) + adcq 56(%rsi), %rax + movq 256(%r9), %rdx + movq %rax, 248(%r9) + adcq 64(%rsi), %rdx + movq 264(%r9), %rax + movq %rdx, 256(%r9) + adcq 72(%rsi), %rax + movq 272(%r9), %rdx + movq %rax, 264(%r9) + adcq 80(%rsi), %rdx + movq 280(%r9), %rax + movq %rdx, 272(%r9) + adcq 88(%rsi), %rax + movq 288(%r9), %rdx + movq %rax, 280(%r9) + adcq 96(%rsi), %rdx + movq 296(%r9), %rax + movq %rdx, 288(%r9) + adcq 104(%rsi), %rax + movq 304(%r9), %rdx + movq %rax, 296(%r9) + adcq 112(%rsi), %rdx + movq 312(%r9), %rax + movq %rdx, 304(%r9) + adcq 120(%rsi), %rax + movq 320(%r9), %rdx + movq %rax, 312(%r9) + adcq 128(%rsi), %rdx + movq 328(%r9), %rax + movq %rdx, 320(%r9) + adcq 136(%rsi), %rax + movq 336(%r9), %rdx + movq %rax, 328(%r9) + adcq 144(%rsi), %rdx + movq 344(%r9), %rax + movq %rdx, 336(%r9) + adcq 152(%rsi), %rax + movq 352(%r9), %rdx + movq %rax, 344(%r9) + adcq 160(%rsi), %rdx + movq 360(%r9), %rax + movq %rdx, 352(%r9) + adcq 168(%rsi), %rax + movq 368(%r9), %rdx + movq %rax, 360(%r9) + adcq 176(%rsi), %rdx + movq 376(%r9), %rax + movq %rdx, 368(%r9) + adcq 184(%rsi), %rax + movq 384(%r9), %rdx + movq %rax, 376(%r9) + adcq 192(%rsi), %rdx + movq %rdx, 384(%r9) + # Add to zero + movq 200(%rsi), %rdx + adcq $0, %rdx + movq 208(%rsi), %rax + movq %rdx, 392(%r9) + adcq $0, %rax + movq 216(%rsi), %rdx + movq %rax, 400(%r9) + adcq $0, %rdx + movq 224(%rsi), %rax + movq %rdx, 408(%r9) + adcq $0, %rax + movq 232(%rsi), %rdx + movq %rax, 416(%r9) + adcq $0, %rdx + movq 240(%rsi), %rax + movq %rdx, 424(%r9) + adcq $0, %rax + movq 248(%rsi), %rdx + movq %rax, 432(%r9) + adcq $0, %rdx + movq 256(%rsi), %rax + movq %rdx, 440(%r9) + adcq $0, %rax + movq 264(%rsi), %rdx + movq %rax, 448(%r9) + adcq $0, %rdx + movq 272(%rsi), %rax + movq %rdx, 456(%r9) + adcq $0, %rax + movq 280(%rsi), %rdx + movq %rax, 464(%r9) + adcq $0, %rdx + movq 288(%rsi), %rax + movq %rdx, 472(%r9) + adcq $0, %rax + movq 296(%rsi), %rdx + movq %rax, 480(%r9) + adcq $0, %rdx + movq 304(%rsi), %rax + movq %rdx, 488(%r9) + adcq $0, %rax + movq 312(%rsi), %rdx + movq %rax, 496(%r9) + adcq $0, %rdx + movq 320(%rsi), %rax + movq %rdx, 504(%r9) + adcq $0, %rax + movq 328(%rsi), %rdx + movq %rax, 512(%r9) + adcq $0, %rdx + movq 336(%rsi), %rax + movq %rdx, 520(%r9) + adcq $0, %rax + movq 344(%rsi), %rdx + movq %rax, 528(%r9) + adcq $0, %rdx + movq 352(%rsi), %rax + movq %rdx, 536(%r9) + adcq $0, %rax + movq 360(%rsi), %rdx + movq %rax, 544(%r9) + adcq $0, %rdx + movq 368(%rsi), %rax + movq %rdx, 552(%r9) + adcq $0, %rax + movq 376(%rsi), %rdx + movq %rax, 560(%r9) + adcq $0, %rdx + movq %rdx, 568(%r9) + addq $984, %rsp + repz retq +#ifndef __APPLE__ +.size sp_3072_sqr_avx2_48,.-sp_3072_sqr_avx2_48 +#endif /* __APPLE__ */ /* Mul a by digit b into r. (r = a * b) * * r A single precision integer. @@ -21807,99 +22250,6 @@ _sp_3072_mul_d_48: #ifndef __APPLE__ .size sp_3072_mul_d_48,.-sp_3072_mul_d_48 #endif /* __APPLE__ */ -/* Sub b from a into a. (a -= b) - * - * a A single precision integer and result. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_3072_sub_in_place_24 -.type sp_3072_sub_in_place_24,@function -.align 16 -sp_3072_sub_in_place_24: -#else -.globl _sp_3072_sub_in_place_24 -.p2align 4 -_sp_3072_sub_in_place_24: -#endif /* __APPLE__ */ - movq (%rdi), %rdx - xorq %rax, %rax - subq (%rsi), %rdx - movq 8(%rdi), %rcx - movq %rdx, (%rdi) - sbbq 8(%rsi), %rcx - movq 16(%rdi), %rdx - movq %rcx, 8(%rdi) - sbbq 16(%rsi), %rdx - movq 24(%rdi), %rcx - movq %rdx, 16(%rdi) - sbbq 24(%rsi), %rcx - movq 32(%rdi), %rdx - movq %rcx, 24(%rdi) - sbbq 32(%rsi), %rdx - movq 40(%rdi), %rcx - movq %rdx, 32(%rdi) - sbbq 40(%rsi), %rcx - movq 48(%rdi), %rdx - movq %rcx, 40(%rdi) - sbbq 48(%rsi), %rdx - movq 56(%rdi), %rcx - movq %rdx, 48(%rdi) - sbbq 56(%rsi), %rcx - movq 64(%rdi), %rdx - movq %rcx, 56(%rdi) - sbbq 64(%rsi), %rdx - movq 72(%rdi), %rcx - movq %rdx, 64(%rdi) - sbbq 72(%rsi), %rcx - movq 80(%rdi), %rdx - movq %rcx, 72(%rdi) - sbbq 80(%rsi), %rdx - movq 88(%rdi), %rcx - movq %rdx, 80(%rdi) - sbbq 88(%rsi), %rcx - movq 96(%rdi), %rdx - movq %rcx, 88(%rdi) - sbbq 96(%rsi), %rdx - movq 104(%rdi), %rcx - movq %rdx, 96(%rdi) - sbbq 104(%rsi), %rcx - movq 112(%rdi), %rdx - movq %rcx, 104(%rdi) - sbbq 112(%rsi), %rdx - movq 120(%rdi), %rcx - movq %rdx, 112(%rdi) - sbbq 120(%rsi), %rcx - movq 128(%rdi), %rdx - movq %rcx, 120(%rdi) - sbbq 128(%rsi), %rdx - movq 136(%rdi), %rcx - movq %rdx, 128(%rdi) - sbbq 136(%rsi), %rcx - movq 144(%rdi), %rdx - movq %rcx, 136(%rdi) - sbbq 144(%rsi), %rdx - movq 152(%rdi), %rcx - movq %rdx, 144(%rdi) - sbbq 152(%rsi), %rcx - movq 160(%rdi), %rdx - movq %rcx, 152(%rdi) - sbbq 160(%rsi), %rdx - movq 168(%rdi), %rcx - movq %rdx, 160(%rdi) - sbbq 168(%rsi), %rcx - movq 176(%rdi), %rdx - movq %rcx, 168(%rdi) - sbbq 176(%rsi), %rdx - movq 184(%rdi), %rcx - movq %rdx, 176(%rdi) - sbbq 184(%rsi), %rcx - movq %rcx, 184(%rdi) - sbbq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_3072_sub_in_place_24,.-sp_3072_sub_in_place_24 -#endif /* __APPLE__ */ /* Conditionally subtract b from a using the mask m. * m is -1 to subtract and 0 when not copying. * @@ -22403,126 +22753,126 @@ sp_3072_cond_sub_avx2_24: _sp_3072_cond_sub_avx2_24: #endif /* __APPLE__ */ movq $0, %rax - movq (%rsi), %r8 movq (%rdx), %r10 + movq (%rsi), %r8 pextq %rcx, %r10, %r10 subq %r10, %r8 - movq 8(%rsi), %r9 movq 8(%rdx), %r10 + movq 8(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, (%rdi) sbbq %r10, %r9 - movq 16(%rsi), %r8 - movq 16(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 16(%rdx), %r8 + movq 16(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 8(%rdi) - sbbq %r10, %r8 - movq 24(%rsi), %r9 - movq 24(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 16(%rdi) - sbbq %r10, %r9 - movq 32(%rsi), %r8 + sbbq %r8, %r10 + movq 24(%rdx), %r9 + movq 24(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 16(%rdi) + sbbq %r9, %r8 movq 32(%rdx), %r10 + movq 32(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 24(%rdi) - sbbq %r10, %r8 - movq 40(%rsi), %r9 - movq 40(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 32(%rdi) + movq %r8, 24(%rdi) sbbq %r10, %r9 + movq 40(%rdx), %r8 + movq 40(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 32(%rdi) + sbbq %r8, %r10 + movq 48(%rdx), %r9 movq 48(%rsi), %r8 - movq 48(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 40(%rdi) - sbbq %r10, %r8 - movq 56(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 40(%rdi) + sbbq %r9, %r8 movq 56(%rdx), %r10 + movq 56(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 48(%rdi) sbbq %r10, %r9 - movq 64(%rsi), %r8 - movq 64(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 64(%rdx), %r8 + movq 64(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 56(%rdi) - sbbq %r10, %r8 - movq 72(%rsi), %r9 - movq 72(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 64(%rdi) - sbbq %r10, %r9 - movq 80(%rsi), %r8 + sbbq %r8, %r10 + movq 72(%rdx), %r9 + movq 72(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 64(%rdi) + sbbq %r9, %r8 movq 80(%rdx), %r10 + movq 80(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 72(%rdi) - sbbq %r10, %r8 - movq 88(%rsi), %r9 - movq 88(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 80(%rdi) + movq %r8, 72(%rdi) sbbq %r10, %r9 + movq 88(%rdx), %r8 + movq 88(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 80(%rdi) + sbbq %r8, %r10 + movq 96(%rdx), %r9 movq 96(%rsi), %r8 - movq 96(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 88(%rdi) - sbbq %r10, %r8 - movq 104(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 88(%rdi) + sbbq %r9, %r8 movq 104(%rdx), %r10 + movq 104(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 96(%rdi) sbbq %r10, %r9 - movq 112(%rsi), %r8 - movq 112(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 112(%rdx), %r8 + movq 112(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 104(%rdi) - sbbq %r10, %r8 - movq 120(%rsi), %r9 - movq 120(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 112(%rdi) - sbbq %r10, %r9 - movq 128(%rsi), %r8 + sbbq %r8, %r10 + movq 120(%rdx), %r9 + movq 120(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 112(%rdi) + sbbq %r9, %r8 movq 128(%rdx), %r10 + movq 128(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 120(%rdi) - sbbq %r10, %r8 - movq 136(%rsi), %r9 - movq 136(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 128(%rdi) + movq %r8, 120(%rdi) sbbq %r10, %r9 + movq 136(%rdx), %r8 + movq 136(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 128(%rdi) + sbbq %r8, %r10 + movq 144(%rdx), %r9 movq 144(%rsi), %r8 - movq 144(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 136(%rdi) - sbbq %r10, %r8 - movq 152(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 136(%rdi) + sbbq %r9, %r8 movq 152(%rdx), %r10 + movq 152(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 144(%rdi) sbbq %r10, %r9 - movq 160(%rsi), %r8 - movq 160(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 160(%rdx), %r8 + movq 160(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 152(%rdi) - sbbq %r10, %r8 - movq 168(%rsi), %r9 - movq 168(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 160(%rdi) - sbbq %r10, %r9 - movq 176(%rsi), %r8 + sbbq %r8, %r10 + movq 168(%rdx), %r9 + movq 168(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 160(%rdi) + sbbq %r9, %r8 movq 176(%rdx), %r10 + movq 176(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 168(%rdi) - sbbq %r10, %r8 - movq 184(%rsi), %r9 - movq 184(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 176(%rdi) + movq %r8, 168(%rdi) sbbq %r10, %r9 - movq %r9, 184(%rdi) + movq 184(%rdx), %r8 + movq 184(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 176(%rdi) + sbbq %r8, %r10 + movq %r10, 184(%rdi) sbbq $0, %rax repz retq #ifndef __APPLE__ @@ -22756,150 +23106,152 @@ sp_3072_mul_d_avx2_24: .p2align 4 _sp_3072_mul_d_avx2_24: #endif /* __APPLE__ */ + movq %rdx, %rax # A[0] * B - xorq %r10, %r10 - mulxq (%rsi), %r8, %r9 - movq %r8, (%rdi) + movq %rax, %rdx + xorq %r11, %r11 + mulxq (%rsi), %r9, %r10 + movq %r9, (%rdi) # A[1] * B - mulxq 8(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 8(%rdi) - adoxq %rcx, %r8 + mulxq 8(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 8(%rdi) + adoxq %r8, %r9 # A[2] * B - mulxq 16(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 16(%rdi) - adoxq %rcx, %r9 + mulxq 16(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 16(%rdi) + adoxq %r8, %r10 # A[3] * B - mulxq 24(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 24(%rdi) - adoxq %rcx, %r8 + mulxq 24(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 24(%rdi) + adoxq %r8, %r9 # A[4] * B - mulxq 32(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 32(%rdi) - adoxq %rcx, %r9 + mulxq 32(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 32(%rdi) + adoxq %r8, %r10 # A[5] * B - mulxq 40(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 40(%rdi) - adoxq %rcx, %r8 + mulxq 40(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 40(%rdi) + adoxq %r8, %r9 # A[6] * B - mulxq 48(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 48(%rdi) - adoxq %rcx, %r9 + mulxq 48(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 48(%rdi) + adoxq %r8, %r10 # A[7] * B - mulxq 56(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 56(%rdi) - adoxq %rcx, %r8 + mulxq 56(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 56(%rdi) + adoxq %r8, %r9 # A[8] * B - mulxq 64(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 64(%rdi) - adoxq %rcx, %r9 + mulxq 64(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 64(%rdi) + adoxq %r8, %r10 # A[9] * B - mulxq 72(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 72(%rdi) - adoxq %rcx, %r8 + mulxq 72(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 72(%rdi) + adoxq %r8, %r9 # A[10] * B - mulxq 80(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 80(%rdi) - adoxq %rcx, %r9 + mulxq 80(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 80(%rdi) + adoxq %r8, %r10 # A[11] * B - mulxq 88(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 88(%rdi) - adoxq %rcx, %r8 + mulxq 88(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 88(%rdi) + adoxq %r8, %r9 # A[12] * B - mulxq 96(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 96(%rdi) - adoxq %rcx, %r9 + mulxq 96(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 96(%rdi) + adoxq %r8, %r10 # A[13] * B - mulxq 104(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 104(%rdi) - adoxq %rcx, %r8 + mulxq 104(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 104(%rdi) + adoxq %r8, %r9 # A[14] * B - mulxq 112(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 112(%rdi) - adoxq %rcx, %r9 + mulxq 112(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 112(%rdi) + adoxq %r8, %r10 # A[15] * B - mulxq 120(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 120(%rdi) - adoxq %rcx, %r8 + mulxq 120(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 120(%rdi) + adoxq %r8, %r9 # A[16] * B - mulxq 128(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 128(%rdi) - adoxq %rcx, %r9 + mulxq 128(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 128(%rdi) + adoxq %r8, %r10 # A[17] * B - mulxq 136(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 136(%rdi) - adoxq %rcx, %r8 + mulxq 136(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 136(%rdi) + adoxq %r8, %r9 # A[18] * B - mulxq 144(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 144(%rdi) - adoxq %rcx, %r9 + mulxq 144(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 144(%rdi) + adoxq %r8, %r10 # A[19] * B - mulxq 152(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 152(%rdi) - adoxq %rcx, %r8 + mulxq 152(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 152(%rdi) + adoxq %r8, %r9 # A[20] * B - mulxq 160(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 160(%rdi) - adoxq %rcx, %r9 + mulxq 160(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 160(%rdi) + adoxq %r8, %r10 # A[21] * B - mulxq 168(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 168(%rdi) - adoxq %rcx, %r8 + mulxq 168(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 168(%rdi) + adoxq %r8, %r9 # A[22] * B - mulxq 176(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 176(%rdi) - adoxq %rcx, %r9 + mulxq 176(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 176(%rdi) + adoxq %r8, %r10 # A[23] * B - mulxq 184(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - adoxq %rcx, %r8 - adcxq %r10, %r8 - movq %r9, 184(%rdi) - movq %r8, 192(%rdi) + mulxq 184(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + adoxq %r8, %r9 + adcxq %r11, %r9 + movq %r10, 184(%rdi) + movq %r9, 192(%rdi) repz retq #ifndef __APPLE__ .size sp_3072_mul_d_avx2_24,.-sp_3072_mul_d_avx2_24 @@ -23143,179 +23495,295 @@ _sp_3072_mont_reduce_avx2_24: push %r12 push %r13 push %r14 - movq %rdx, %rax + movq %rdx, %r8 xorq %r14, %r14 # i = 24 movq $24, %r9 movq (%rdi), %r13 + addq $96, %rdi xorq %r12, %r12 L_mont_loop_avx2_24: # mu = a[i] * mp movq %r13, %rdx - mulxq %rax, %rdx, %r8 movq %r13, %r10 + imulq %r8, %rdx + xorq %r12, %r12 # a[i+0] += m[0] * mu - mulxq (%rsi), %rcx, %r8 - movq 8(%rdi), %r13 - adcxq %rcx, %r10 - adoxq %r8, %r13 + mulxq (%rsi), %rax, %rcx + movq -88(%rdi), %r13 + adcxq %rax, %r10 + adoxq %rcx, %r13 # a[i+1] += m[1] * mu - mulxq 8(%rsi), %rcx, %r8 - movq 16(%rdi), %r10 - adcxq %rcx, %r13 - adoxq %r8, %r10 + mulxq 8(%rsi), %rax, %rcx + movq -80(%rdi), %r10 + adcxq %rax, %r13 + adoxq %rcx, %r10 # a[i+2] += m[2] * mu - mulxq 16(%rsi), %rcx, %r8 - movq 24(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 16(%rdi) + mulxq 16(%rsi), %rax, %rcx + movq -72(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -80(%rdi) # a[i+3] += m[3] * mu - mulxq 24(%rsi), %rcx, %r8 - movq 32(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 24(%rdi) + mulxq 24(%rsi), %rax, %rcx + movq -64(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -72(%rdi) # a[i+4] += m[4] * mu - mulxq 32(%rsi), %rcx, %r8 - movq 40(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 32(%rdi) + mulxq 32(%rsi), %rax, %rcx + movq -56(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -64(%rdi) # a[i+5] += m[5] * mu - mulxq 40(%rsi), %rcx, %r8 - movq 48(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 40(%rdi) + mulxq 40(%rsi), %rax, %rcx + movq -48(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -56(%rdi) # a[i+6] += m[6] * mu - mulxq 48(%rsi), %rcx, %r8 - movq 56(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 48(%rdi) + mulxq 48(%rsi), %rax, %rcx + movq -40(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -48(%rdi) # a[i+7] += m[7] * mu - mulxq 56(%rsi), %rcx, %r8 - movq 64(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 56(%rdi) + mulxq 56(%rsi), %rax, %rcx + movq -32(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -40(%rdi) # a[i+8] += m[8] * mu - mulxq 64(%rsi), %rcx, %r8 - movq 72(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 64(%rdi) + mulxq 64(%rsi), %rax, %rcx + movq -24(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -32(%rdi) # a[i+9] += m[9] * mu - mulxq 72(%rsi), %rcx, %r8 - movq 80(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 72(%rdi) + mulxq 72(%rsi), %rax, %rcx + movq -16(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -24(%rdi) # a[i+10] += m[10] * mu - mulxq 80(%rsi), %rcx, %r8 - movq 88(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 80(%rdi) + mulxq 80(%rsi), %rax, %rcx + movq -8(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -16(%rdi) # a[i+11] += m[11] * mu - mulxq 88(%rsi), %rcx, %r8 - movq 96(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 88(%rdi) + mulxq 88(%rsi), %rax, %rcx + movq (%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -8(%rdi) # a[i+12] += m[12] * mu - mulxq 96(%rsi), %rcx, %r8 - movq 104(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 96(%rdi) + mulxq 96(%rsi), %rax, %rcx + movq 8(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, (%rdi) # a[i+13] += m[13] * mu - mulxq 104(%rsi), %rcx, %r8 - movq 112(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 104(%rdi) + mulxq 104(%rsi), %rax, %rcx + movq 16(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 8(%rdi) # a[i+14] += m[14] * mu - mulxq 112(%rsi), %rcx, %r8 - movq 120(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 112(%rdi) + mulxq 112(%rsi), %rax, %rcx + movq 24(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 16(%rdi) # a[i+15] += m[15] * mu - mulxq 120(%rsi), %rcx, %r8 - movq 128(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 120(%rdi) + mulxq 120(%rsi), %rax, %rcx + movq 32(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 24(%rdi) # a[i+16] += m[16] * mu - mulxq 128(%rsi), %rcx, %r8 - movq 136(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 128(%rdi) + mulxq 128(%rsi), %rax, %rcx + movq 40(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 32(%rdi) # a[i+17] += m[17] * mu - mulxq 136(%rsi), %rcx, %r8 - movq 144(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 136(%rdi) + mulxq 136(%rsi), %rax, %rcx + movq 48(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 40(%rdi) # a[i+18] += m[18] * mu - mulxq 144(%rsi), %rcx, %r8 - movq 152(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 144(%rdi) + mulxq 144(%rsi), %rax, %rcx + movq 56(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 48(%rdi) # a[i+19] += m[19] * mu - mulxq 152(%rsi), %rcx, %r8 - movq 160(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 152(%rdi) + mulxq 152(%rsi), %rax, %rcx + movq 64(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 56(%rdi) # a[i+20] += m[20] * mu - mulxq 160(%rsi), %rcx, %r8 - movq 168(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 160(%rdi) + mulxq 160(%rsi), %rax, %rcx + movq 72(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 64(%rdi) # a[i+21] += m[21] * mu - mulxq 168(%rsi), %rcx, %r8 - movq 176(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 168(%rdi) + mulxq 168(%rsi), %rax, %rcx + movq 80(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 72(%rdi) # a[i+22] += m[22] * mu - mulxq 176(%rsi), %rcx, %r8 - movq 184(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 176(%rdi) + mulxq 176(%rsi), %rax, %rcx + movq 88(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 80(%rdi) # a[i+23] += m[23] * mu - mulxq 184(%rsi), %rcx, %r8 - movq 192(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 184(%rdi) + mulxq 184(%rsi), %rax, %rcx + movq 96(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 88(%rdi) adcxq %r14, %r10 + movq %r10, 96(%rdi) movq %r12, %r14 - movq %r10, 192(%rdi) adoxq %r12, %r14 adcxq %r12, %r14 - # i -= 1 + # a += 1 addq $8, %rdi - decq %r9 + # i -= 1 + subq $1, %r9 jnz L_mont_loop_avx2_24 - movq %r13, (%rdi) + subq $96, %rdi negq %r14 - movq %r14, %rcx - movq %rsi, %rdx - movq %rdi, %rsi + movq %rdi, %r8 subq $192, %rdi -#ifndef __APPLE__ - callq sp_3072_cond_sub_avx2_24@plt -#else - callq _sp_3072_cond_sub_avx2_24 -#endif /* __APPLE__ */ + movq (%rsi), %rcx + movq %r13, %rdx + pextq %r14, %rcx, %rcx + subq %rcx, %rdx + movq 8(%rsi), %rcx + movq 8(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, (%rdi) + sbbq %rcx, %rax + movq 16(%rsi), %rdx + movq 16(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 8(%rdi) + sbbq %rdx, %rcx + movq 24(%rsi), %rax + movq 24(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 16(%rdi) + sbbq %rax, %rdx + movq 32(%rsi), %rcx + movq 32(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 24(%rdi) + sbbq %rcx, %rax + movq 40(%rsi), %rdx + movq 40(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 32(%rdi) + sbbq %rdx, %rcx + movq 48(%rsi), %rax + movq 48(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 40(%rdi) + sbbq %rax, %rdx + movq 56(%rsi), %rcx + movq 56(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 48(%rdi) + sbbq %rcx, %rax + movq 64(%rsi), %rdx + movq 64(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 56(%rdi) + sbbq %rdx, %rcx + movq 72(%rsi), %rax + movq 72(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 64(%rdi) + sbbq %rax, %rdx + movq 80(%rsi), %rcx + movq 80(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 72(%rdi) + sbbq %rcx, %rax + movq 88(%rsi), %rdx + movq 88(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 80(%rdi) + sbbq %rdx, %rcx + movq 96(%rsi), %rax + movq 96(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 88(%rdi) + sbbq %rax, %rdx + movq 104(%rsi), %rcx + movq 104(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 96(%rdi) + sbbq %rcx, %rax + movq 112(%rsi), %rdx + movq 112(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 104(%rdi) + sbbq %rdx, %rcx + movq 120(%rsi), %rax + movq 120(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 112(%rdi) + sbbq %rax, %rdx + movq 128(%rsi), %rcx + movq 128(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 120(%rdi) + sbbq %rcx, %rax + movq 136(%rsi), %rdx + movq 136(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 128(%rdi) + sbbq %rdx, %rcx + movq 144(%rsi), %rax + movq 144(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 136(%rdi) + sbbq %rax, %rdx + movq 152(%rsi), %rcx + movq 152(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 144(%rdi) + sbbq %rcx, %rax + movq 160(%rsi), %rdx + movq 160(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 152(%rdi) + sbbq %rdx, %rcx + movq 168(%rsi), %rax + movq 168(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 160(%rdi) + sbbq %rax, %rdx + movq 176(%rsi), %rcx + movq 176(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 168(%rdi) + sbbq %rcx, %rax + movq 184(%rsi), %rdx + movq 184(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 176(%rdi) + sbbq %rdx, %rcx + movq %rcx, 184(%rdi) pop %r14 pop %r13 pop %r12 @@ -24235,246 +24703,246 @@ sp_3072_cond_sub_avx2_48: _sp_3072_cond_sub_avx2_48: #endif /* __APPLE__ */ movq $0, %rax - movq (%rsi), %r8 movq (%rdx), %r10 + movq (%rsi), %r8 pextq %rcx, %r10, %r10 subq %r10, %r8 - movq 8(%rsi), %r9 movq 8(%rdx), %r10 + movq 8(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, (%rdi) sbbq %r10, %r9 - movq 16(%rsi), %r8 - movq 16(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 16(%rdx), %r8 + movq 16(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 8(%rdi) - sbbq %r10, %r8 - movq 24(%rsi), %r9 - movq 24(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 16(%rdi) - sbbq %r10, %r9 - movq 32(%rsi), %r8 + sbbq %r8, %r10 + movq 24(%rdx), %r9 + movq 24(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 16(%rdi) + sbbq %r9, %r8 movq 32(%rdx), %r10 + movq 32(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 24(%rdi) - sbbq %r10, %r8 - movq 40(%rsi), %r9 - movq 40(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 32(%rdi) + movq %r8, 24(%rdi) sbbq %r10, %r9 + movq 40(%rdx), %r8 + movq 40(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 32(%rdi) + sbbq %r8, %r10 + movq 48(%rdx), %r9 movq 48(%rsi), %r8 - movq 48(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 40(%rdi) - sbbq %r10, %r8 - movq 56(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 40(%rdi) + sbbq %r9, %r8 movq 56(%rdx), %r10 + movq 56(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 48(%rdi) sbbq %r10, %r9 - movq 64(%rsi), %r8 - movq 64(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 64(%rdx), %r8 + movq 64(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 56(%rdi) - sbbq %r10, %r8 - movq 72(%rsi), %r9 - movq 72(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 64(%rdi) - sbbq %r10, %r9 - movq 80(%rsi), %r8 + sbbq %r8, %r10 + movq 72(%rdx), %r9 + movq 72(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 64(%rdi) + sbbq %r9, %r8 movq 80(%rdx), %r10 + movq 80(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 72(%rdi) - sbbq %r10, %r8 - movq 88(%rsi), %r9 - movq 88(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 80(%rdi) + movq %r8, 72(%rdi) sbbq %r10, %r9 + movq 88(%rdx), %r8 + movq 88(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 80(%rdi) + sbbq %r8, %r10 + movq 96(%rdx), %r9 movq 96(%rsi), %r8 - movq 96(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 88(%rdi) - sbbq %r10, %r8 - movq 104(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 88(%rdi) + sbbq %r9, %r8 movq 104(%rdx), %r10 + movq 104(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 96(%rdi) sbbq %r10, %r9 - movq 112(%rsi), %r8 - movq 112(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 112(%rdx), %r8 + movq 112(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 104(%rdi) - sbbq %r10, %r8 - movq 120(%rsi), %r9 - movq 120(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 112(%rdi) - sbbq %r10, %r9 - movq 128(%rsi), %r8 + sbbq %r8, %r10 + movq 120(%rdx), %r9 + movq 120(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 112(%rdi) + sbbq %r9, %r8 movq 128(%rdx), %r10 + movq 128(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 120(%rdi) - sbbq %r10, %r8 - movq 136(%rsi), %r9 - movq 136(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 128(%rdi) + movq %r8, 120(%rdi) sbbq %r10, %r9 + movq 136(%rdx), %r8 + movq 136(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 128(%rdi) + sbbq %r8, %r10 + movq 144(%rdx), %r9 movq 144(%rsi), %r8 - movq 144(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 136(%rdi) - sbbq %r10, %r8 - movq 152(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 136(%rdi) + sbbq %r9, %r8 movq 152(%rdx), %r10 + movq 152(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 144(%rdi) sbbq %r10, %r9 - movq 160(%rsi), %r8 - movq 160(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 160(%rdx), %r8 + movq 160(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 152(%rdi) - sbbq %r10, %r8 - movq 168(%rsi), %r9 - movq 168(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 160(%rdi) - sbbq %r10, %r9 - movq 176(%rsi), %r8 + sbbq %r8, %r10 + movq 168(%rdx), %r9 + movq 168(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 160(%rdi) + sbbq %r9, %r8 movq 176(%rdx), %r10 + movq 176(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 168(%rdi) - sbbq %r10, %r8 - movq 184(%rsi), %r9 - movq 184(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 176(%rdi) + movq %r8, 168(%rdi) sbbq %r10, %r9 + movq 184(%rdx), %r8 + movq 184(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 176(%rdi) + sbbq %r8, %r10 + movq 192(%rdx), %r9 movq 192(%rsi), %r8 - movq 192(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 184(%rdi) - sbbq %r10, %r8 - movq 200(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 184(%rdi) + sbbq %r9, %r8 movq 200(%rdx), %r10 + movq 200(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 192(%rdi) sbbq %r10, %r9 - movq 208(%rsi), %r8 - movq 208(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 208(%rdx), %r8 + movq 208(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 200(%rdi) - sbbq %r10, %r8 - movq 216(%rsi), %r9 - movq 216(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 208(%rdi) - sbbq %r10, %r9 - movq 224(%rsi), %r8 + sbbq %r8, %r10 + movq 216(%rdx), %r9 + movq 216(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 208(%rdi) + sbbq %r9, %r8 movq 224(%rdx), %r10 + movq 224(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 216(%rdi) - sbbq %r10, %r8 - movq 232(%rsi), %r9 - movq 232(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 224(%rdi) + movq %r8, 216(%rdi) sbbq %r10, %r9 + movq 232(%rdx), %r8 + movq 232(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 224(%rdi) + sbbq %r8, %r10 + movq 240(%rdx), %r9 movq 240(%rsi), %r8 - movq 240(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 232(%rdi) - sbbq %r10, %r8 - movq 248(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 232(%rdi) + sbbq %r9, %r8 movq 248(%rdx), %r10 + movq 248(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 240(%rdi) sbbq %r10, %r9 - movq 256(%rsi), %r8 - movq 256(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 256(%rdx), %r8 + movq 256(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 248(%rdi) - sbbq %r10, %r8 - movq 264(%rsi), %r9 - movq 264(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 256(%rdi) - sbbq %r10, %r9 - movq 272(%rsi), %r8 + sbbq %r8, %r10 + movq 264(%rdx), %r9 + movq 264(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 256(%rdi) + sbbq %r9, %r8 movq 272(%rdx), %r10 + movq 272(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 264(%rdi) - sbbq %r10, %r8 - movq 280(%rsi), %r9 - movq 280(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 272(%rdi) + movq %r8, 264(%rdi) sbbq %r10, %r9 + movq 280(%rdx), %r8 + movq 280(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 272(%rdi) + sbbq %r8, %r10 + movq 288(%rdx), %r9 movq 288(%rsi), %r8 - movq 288(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 280(%rdi) - sbbq %r10, %r8 - movq 296(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 280(%rdi) + sbbq %r9, %r8 movq 296(%rdx), %r10 + movq 296(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 288(%rdi) sbbq %r10, %r9 - movq 304(%rsi), %r8 - movq 304(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 304(%rdx), %r8 + movq 304(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 296(%rdi) - sbbq %r10, %r8 - movq 312(%rsi), %r9 - movq 312(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 304(%rdi) - sbbq %r10, %r9 - movq 320(%rsi), %r8 + sbbq %r8, %r10 + movq 312(%rdx), %r9 + movq 312(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 304(%rdi) + sbbq %r9, %r8 movq 320(%rdx), %r10 + movq 320(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 312(%rdi) - sbbq %r10, %r8 - movq 328(%rsi), %r9 - movq 328(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 320(%rdi) + movq %r8, 312(%rdi) sbbq %r10, %r9 + movq 328(%rdx), %r8 + movq 328(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 320(%rdi) + sbbq %r8, %r10 + movq 336(%rdx), %r9 movq 336(%rsi), %r8 - movq 336(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 328(%rdi) - sbbq %r10, %r8 - movq 344(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 328(%rdi) + sbbq %r9, %r8 movq 344(%rdx), %r10 + movq 344(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 336(%rdi) sbbq %r10, %r9 - movq 352(%rsi), %r8 - movq 352(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 352(%rdx), %r8 + movq 352(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 344(%rdi) - sbbq %r10, %r8 - movq 360(%rsi), %r9 - movq 360(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 352(%rdi) - sbbq %r10, %r9 - movq 368(%rsi), %r8 + sbbq %r8, %r10 + movq 360(%rdx), %r9 + movq 360(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 352(%rdi) + sbbq %r9, %r8 movq 368(%rdx), %r10 + movq 368(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 360(%rdi) - sbbq %r10, %r8 - movq 376(%rsi), %r9 - movq 376(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 368(%rdi) + movq %r8, 360(%rdi) sbbq %r10, %r9 - movq %r9, 376(%rdi) + movq 376(%rdx), %r8 + movq 376(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 368(%rdi) + sbbq %r8, %r10 + movq %r10, 376(%rdi) sbbq $0, %rax repz retq #ifndef __APPLE__ @@ -24497,294 +24965,296 @@ sp_3072_mul_d_avx2_48: .p2align 4 _sp_3072_mul_d_avx2_48: #endif /* __APPLE__ */ + movq %rdx, %rax # A[0] * B - xorq %r10, %r10 - mulxq (%rsi), %r8, %r9 - movq %r8, (%rdi) + movq %rax, %rdx + xorq %r11, %r11 + mulxq (%rsi), %r9, %r10 + movq %r9, (%rdi) # A[1] * B - mulxq 8(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 8(%rdi) - adoxq %rcx, %r8 + mulxq 8(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 8(%rdi) + adoxq %r8, %r9 # A[2] * B - mulxq 16(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 16(%rdi) - adoxq %rcx, %r9 + mulxq 16(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 16(%rdi) + adoxq %r8, %r10 # A[3] * B - mulxq 24(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 24(%rdi) - adoxq %rcx, %r8 + mulxq 24(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 24(%rdi) + adoxq %r8, %r9 # A[4] * B - mulxq 32(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 32(%rdi) - adoxq %rcx, %r9 + mulxq 32(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 32(%rdi) + adoxq %r8, %r10 # A[5] * B - mulxq 40(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 40(%rdi) - adoxq %rcx, %r8 + mulxq 40(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 40(%rdi) + adoxq %r8, %r9 # A[6] * B - mulxq 48(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 48(%rdi) - adoxq %rcx, %r9 + mulxq 48(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 48(%rdi) + adoxq %r8, %r10 # A[7] * B - mulxq 56(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 56(%rdi) - adoxq %rcx, %r8 + mulxq 56(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 56(%rdi) + adoxq %r8, %r9 # A[8] * B - mulxq 64(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 64(%rdi) - adoxq %rcx, %r9 + mulxq 64(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 64(%rdi) + adoxq %r8, %r10 # A[9] * B - mulxq 72(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 72(%rdi) - adoxq %rcx, %r8 + mulxq 72(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 72(%rdi) + adoxq %r8, %r9 # A[10] * B - mulxq 80(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 80(%rdi) - adoxq %rcx, %r9 + mulxq 80(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 80(%rdi) + adoxq %r8, %r10 # A[11] * B - mulxq 88(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 88(%rdi) - adoxq %rcx, %r8 + mulxq 88(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 88(%rdi) + adoxq %r8, %r9 # A[12] * B - mulxq 96(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 96(%rdi) - adoxq %rcx, %r9 + mulxq 96(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 96(%rdi) + adoxq %r8, %r10 # A[13] * B - mulxq 104(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 104(%rdi) - adoxq %rcx, %r8 + mulxq 104(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 104(%rdi) + adoxq %r8, %r9 # A[14] * B - mulxq 112(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 112(%rdi) - adoxq %rcx, %r9 + mulxq 112(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 112(%rdi) + adoxq %r8, %r10 # A[15] * B - mulxq 120(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 120(%rdi) - adoxq %rcx, %r8 + mulxq 120(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 120(%rdi) + adoxq %r8, %r9 # A[16] * B - mulxq 128(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 128(%rdi) - adoxq %rcx, %r9 + mulxq 128(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 128(%rdi) + adoxq %r8, %r10 # A[17] * B - mulxq 136(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 136(%rdi) - adoxq %rcx, %r8 + mulxq 136(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 136(%rdi) + adoxq %r8, %r9 # A[18] * B - mulxq 144(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 144(%rdi) - adoxq %rcx, %r9 + mulxq 144(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 144(%rdi) + adoxq %r8, %r10 # A[19] * B - mulxq 152(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 152(%rdi) - adoxq %rcx, %r8 + mulxq 152(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 152(%rdi) + adoxq %r8, %r9 # A[20] * B - mulxq 160(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 160(%rdi) - adoxq %rcx, %r9 + mulxq 160(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 160(%rdi) + adoxq %r8, %r10 # A[21] * B - mulxq 168(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 168(%rdi) - adoxq %rcx, %r8 + mulxq 168(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 168(%rdi) + adoxq %r8, %r9 # A[22] * B - mulxq 176(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 176(%rdi) - adoxq %rcx, %r9 + mulxq 176(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 176(%rdi) + adoxq %r8, %r10 # A[23] * B - mulxq 184(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 184(%rdi) - adoxq %rcx, %r8 + mulxq 184(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 184(%rdi) + adoxq %r8, %r9 # A[24] * B - mulxq 192(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 192(%rdi) - adoxq %rcx, %r9 + mulxq 192(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 192(%rdi) + adoxq %r8, %r10 # A[25] * B - mulxq 200(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 200(%rdi) - adoxq %rcx, %r8 + mulxq 200(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 200(%rdi) + adoxq %r8, %r9 # A[26] * B - mulxq 208(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 208(%rdi) - adoxq %rcx, %r9 + mulxq 208(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 208(%rdi) + adoxq %r8, %r10 # A[27] * B - mulxq 216(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 216(%rdi) - adoxq %rcx, %r8 + mulxq 216(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 216(%rdi) + adoxq %r8, %r9 # A[28] * B - mulxq 224(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 224(%rdi) - adoxq %rcx, %r9 + mulxq 224(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 224(%rdi) + adoxq %r8, %r10 # A[29] * B - mulxq 232(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 232(%rdi) - adoxq %rcx, %r8 + mulxq 232(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 232(%rdi) + adoxq %r8, %r9 # A[30] * B - mulxq 240(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 240(%rdi) - adoxq %rcx, %r9 + mulxq 240(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 240(%rdi) + adoxq %r8, %r10 # A[31] * B - mulxq 248(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 248(%rdi) - adoxq %rcx, %r8 + mulxq 248(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 248(%rdi) + adoxq %r8, %r9 # A[32] * B - mulxq 256(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 256(%rdi) - adoxq %rcx, %r9 + mulxq 256(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 256(%rdi) + adoxq %r8, %r10 # A[33] * B - mulxq 264(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 264(%rdi) - adoxq %rcx, %r8 + mulxq 264(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 264(%rdi) + adoxq %r8, %r9 # A[34] * B - mulxq 272(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 272(%rdi) - adoxq %rcx, %r9 + mulxq 272(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 272(%rdi) + adoxq %r8, %r10 # A[35] * B - mulxq 280(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 280(%rdi) - adoxq %rcx, %r8 + mulxq 280(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 280(%rdi) + adoxq %r8, %r9 # A[36] * B - mulxq 288(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 288(%rdi) - adoxq %rcx, %r9 + mulxq 288(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 288(%rdi) + adoxq %r8, %r10 # A[37] * B - mulxq 296(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 296(%rdi) - adoxq %rcx, %r8 + mulxq 296(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 296(%rdi) + adoxq %r8, %r9 # A[38] * B - mulxq 304(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 304(%rdi) - adoxq %rcx, %r9 + mulxq 304(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 304(%rdi) + adoxq %r8, %r10 # A[39] * B - mulxq 312(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 312(%rdi) - adoxq %rcx, %r8 + mulxq 312(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 312(%rdi) + adoxq %r8, %r9 # A[40] * B - mulxq 320(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 320(%rdi) - adoxq %rcx, %r9 + mulxq 320(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 320(%rdi) + adoxq %r8, %r10 # A[41] * B - mulxq 328(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 328(%rdi) - adoxq %rcx, %r8 + mulxq 328(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 328(%rdi) + adoxq %r8, %r9 # A[42] * B - mulxq 336(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 336(%rdi) - adoxq %rcx, %r9 + mulxq 336(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 336(%rdi) + adoxq %r8, %r10 # A[43] * B - mulxq 344(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 344(%rdi) - adoxq %rcx, %r8 + mulxq 344(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 344(%rdi) + adoxq %r8, %r9 # A[44] * B - mulxq 352(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 352(%rdi) - adoxq %rcx, %r9 + mulxq 352(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 352(%rdi) + adoxq %r8, %r10 # A[45] * B - mulxq 360(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 360(%rdi) - adoxq %rcx, %r8 + mulxq 360(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 360(%rdi) + adoxq %r8, %r9 # A[46] * B - mulxq 368(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 368(%rdi) - adoxq %rcx, %r9 + mulxq 368(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 368(%rdi) + adoxq %r8, %r10 # A[47] * B - mulxq 376(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - adoxq %rcx, %r8 - adcxq %r10, %r8 - movq %r9, 376(%rdi) - movq %r8, 384(%rdi) + mulxq 376(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + adoxq %r8, %r9 + adcxq %r11, %r9 + movq %r10, 376(%rdi) + movq %r9, 384(%rdi) repz retq #ifndef __APPLE__ .size sp_3072_mul_d_avx2_48,.-sp_3072_mul_d_avx2_48 @@ -25386,323 +25856,559 @@ _sp_3072_mont_reduce_avx2_48: push %r12 push %r13 push %r14 - movq %rdx, %rax + movq %rdx, %r8 xorq %r14, %r14 # i = 48 movq $48, %r9 movq (%rdi), %r13 + addq $192, %rdi xorq %r12, %r12 L_mont_loop_avx2_48: # mu = a[i] * mp movq %r13, %rdx - mulxq %rax, %rdx, %r8 movq %r13, %r10 + imulq %r8, %rdx + xorq %r12, %r12 # a[i+0] += m[0] * mu - mulxq (%rsi), %rcx, %r8 - movq 8(%rdi), %r13 - adcxq %rcx, %r10 - adoxq %r8, %r13 + mulxq (%rsi), %rax, %rcx + movq -184(%rdi), %r13 + adcxq %rax, %r10 + adoxq %rcx, %r13 # a[i+1] += m[1] * mu - mulxq 8(%rsi), %rcx, %r8 - movq 16(%rdi), %r10 - adcxq %rcx, %r13 - adoxq %r8, %r10 + mulxq 8(%rsi), %rax, %rcx + movq -176(%rdi), %r10 + adcxq %rax, %r13 + adoxq %rcx, %r10 # a[i+2] += m[2] * mu - mulxq 16(%rsi), %rcx, %r8 - movq 24(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 16(%rdi) + mulxq 16(%rsi), %rax, %rcx + movq -168(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -176(%rdi) # a[i+3] += m[3] * mu - mulxq 24(%rsi), %rcx, %r8 - movq 32(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 24(%rdi) + mulxq 24(%rsi), %rax, %rcx + movq -160(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -168(%rdi) # a[i+4] += m[4] * mu - mulxq 32(%rsi), %rcx, %r8 - movq 40(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 32(%rdi) + mulxq 32(%rsi), %rax, %rcx + movq -152(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -160(%rdi) # a[i+5] += m[5] * mu - mulxq 40(%rsi), %rcx, %r8 - movq 48(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 40(%rdi) + mulxq 40(%rsi), %rax, %rcx + movq -144(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -152(%rdi) # a[i+6] += m[6] * mu - mulxq 48(%rsi), %rcx, %r8 - movq 56(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 48(%rdi) + mulxq 48(%rsi), %rax, %rcx + movq -136(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -144(%rdi) # a[i+7] += m[7] * mu - mulxq 56(%rsi), %rcx, %r8 - movq 64(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 56(%rdi) + mulxq 56(%rsi), %rax, %rcx + movq -128(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -136(%rdi) # a[i+8] += m[8] * mu - mulxq 64(%rsi), %rcx, %r8 - movq 72(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 64(%rdi) + mulxq 64(%rsi), %rax, %rcx + movq -120(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -128(%rdi) # a[i+9] += m[9] * mu - mulxq 72(%rsi), %rcx, %r8 - movq 80(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 72(%rdi) + mulxq 72(%rsi), %rax, %rcx + movq -112(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -120(%rdi) # a[i+10] += m[10] * mu - mulxq 80(%rsi), %rcx, %r8 - movq 88(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 80(%rdi) + mulxq 80(%rsi), %rax, %rcx + movq -104(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -112(%rdi) # a[i+11] += m[11] * mu - mulxq 88(%rsi), %rcx, %r8 - movq 96(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 88(%rdi) + mulxq 88(%rsi), %rax, %rcx + movq -96(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -104(%rdi) # a[i+12] += m[12] * mu - mulxq 96(%rsi), %rcx, %r8 - movq 104(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 96(%rdi) + mulxq 96(%rsi), %rax, %rcx + movq -88(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -96(%rdi) # a[i+13] += m[13] * mu - mulxq 104(%rsi), %rcx, %r8 - movq 112(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 104(%rdi) + mulxq 104(%rsi), %rax, %rcx + movq -80(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -88(%rdi) # a[i+14] += m[14] * mu - mulxq 112(%rsi), %rcx, %r8 - movq 120(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 112(%rdi) + mulxq 112(%rsi), %rax, %rcx + movq -72(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -80(%rdi) # a[i+15] += m[15] * mu - mulxq 120(%rsi), %rcx, %r8 - movq 128(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 120(%rdi) + mulxq 120(%rsi), %rax, %rcx + movq -64(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -72(%rdi) # a[i+16] += m[16] * mu - mulxq 128(%rsi), %rcx, %r8 - movq 136(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 128(%rdi) + mulxq 128(%rsi), %rax, %rcx + movq -56(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -64(%rdi) # a[i+17] += m[17] * mu - mulxq 136(%rsi), %rcx, %r8 - movq 144(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 136(%rdi) + mulxq 136(%rsi), %rax, %rcx + movq -48(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -56(%rdi) # a[i+18] += m[18] * mu - mulxq 144(%rsi), %rcx, %r8 - movq 152(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 144(%rdi) + mulxq 144(%rsi), %rax, %rcx + movq -40(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -48(%rdi) # a[i+19] += m[19] * mu - mulxq 152(%rsi), %rcx, %r8 - movq 160(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 152(%rdi) + mulxq 152(%rsi), %rax, %rcx + movq -32(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -40(%rdi) # a[i+20] += m[20] * mu - mulxq 160(%rsi), %rcx, %r8 - movq 168(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 160(%rdi) + mulxq 160(%rsi), %rax, %rcx + movq -24(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -32(%rdi) # a[i+21] += m[21] * mu - mulxq 168(%rsi), %rcx, %r8 - movq 176(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 168(%rdi) + mulxq 168(%rsi), %rax, %rcx + movq -16(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -24(%rdi) # a[i+22] += m[22] * mu - mulxq 176(%rsi), %rcx, %r8 - movq 184(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 176(%rdi) + mulxq 176(%rsi), %rax, %rcx + movq -8(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -16(%rdi) # a[i+23] += m[23] * mu - mulxq 184(%rsi), %rcx, %r8 - movq 192(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 184(%rdi) + mulxq 184(%rsi), %rax, %rcx + movq (%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -8(%rdi) # a[i+24] += m[24] * mu - mulxq 192(%rsi), %rcx, %r8 - movq 200(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 192(%rdi) + mulxq 192(%rsi), %rax, %rcx + movq 8(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, (%rdi) # a[i+25] += m[25] * mu - mulxq 200(%rsi), %rcx, %r8 - movq 208(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 200(%rdi) + mulxq 200(%rsi), %rax, %rcx + movq 16(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 8(%rdi) # a[i+26] += m[26] * mu - mulxq 208(%rsi), %rcx, %r8 - movq 216(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 208(%rdi) + mulxq 208(%rsi), %rax, %rcx + movq 24(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 16(%rdi) # a[i+27] += m[27] * mu - mulxq 216(%rsi), %rcx, %r8 - movq 224(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 216(%rdi) + mulxq 216(%rsi), %rax, %rcx + movq 32(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 24(%rdi) # a[i+28] += m[28] * mu - mulxq 224(%rsi), %rcx, %r8 - movq 232(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 224(%rdi) + mulxq 224(%rsi), %rax, %rcx + movq 40(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 32(%rdi) # a[i+29] += m[29] * mu - mulxq 232(%rsi), %rcx, %r8 - movq 240(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 232(%rdi) + mulxq 232(%rsi), %rax, %rcx + movq 48(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 40(%rdi) # a[i+30] += m[30] * mu - mulxq 240(%rsi), %rcx, %r8 - movq 248(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 240(%rdi) + mulxq 240(%rsi), %rax, %rcx + movq 56(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 48(%rdi) # a[i+31] += m[31] * mu - mulxq 248(%rsi), %rcx, %r8 - movq 256(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 248(%rdi) + mulxq 248(%rsi), %rax, %rcx + movq 64(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 56(%rdi) # a[i+32] += m[32] * mu - mulxq 256(%rsi), %rcx, %r8 - movq 264(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 256(%rdi) + mulxq 256(%rsi), %rax, %rcx + movq 72(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 64(%rdi) # a[i+33] += m[33] * mu - mulxq 264(%rsi), %rcx, %r8 - movq 272(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 264(%rdi) + mulxq 264(%rsi), %rax, %rcx + movq 80(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 72(%rdi) # a[i+34] += m[34] * mu - mulxq 272(%rsi), %rcx, %r8 - movq 280(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 272(%rdi) + mulxq 272(%rsi), %rax, %rcx + movq 88(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 80(%rdi) # a[i+35] += m[35] * mu - mulxq 280(%rsi), %rcx, %r8 - movq 288(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 280(%rdi) + mulxq 280(%rsi), %rax, %rcx + movq 96(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 88(%rdi) # a[i+36] += m[36] * mu - mulxq 288(%rsi), %rcx, %r8 - movq 296(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 288(%rdi) + mulxq 288(%rsi), %rax, %rcx + movq 104(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 96(%rdi) # a[i+37] += m[37] * mu - mulxq 296(%rsi), %rcx, %r8 - movq 304(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 296(%rdi) + mulxq 296(%rsi), %rax, %rcx + movq 112(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 104(%rdi) # a[i+38] += m[38] * mu - mulxq 304(%rsi), %rcx, %r8 - movq 312(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 304(%rdi) + mulxq 304(%rsi), %rax, %rcx + movq 120(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 112(%rdi) # a[i+39] += m[39] * mu - mulxq 312(%rsi), %rcx, %r8 - movq 320(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 312(%rdi) + mulxq 312(%rsi), %rax, %rcx + movq 128(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 120(%rdi) # a[i+40] += m[40] * mu - mulxq 320(%rsi), %rcx, %r8 - movq 328(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 320(%rdi) + mulxq 320(%rsi), %rax, %rcx + movq 136(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 128(%rdi) # a[i+41] += m[41] * mu - mulxq 328(%rsi), %rcx, %r8 - movq 336(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 328(%rdi) + mulxq 328(%rsi), %rax, %rcx + movq 144(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 136(%rdi) # a[i+42] += m[42] * mu - mulxq 336(%rsi), %rcx, %r8 - movq 344(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 336(%rdi) + mulxq 336(%rsi), %rax, %rcx + movq 152(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 144(%rdi) # a[i+43] += m[43] * mu - mulxq 344(%rsi), %rcx, %r8 - movq 352(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 344(%rdi) + mulxq 344(%rsi), %rax, %rcx + movq 160(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 152(%rdi) # a[i+44] += m[44] * mu - mulxq 352(%rsi), %rcx, %r8 - movq 360(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 352(%rdi) + mulxq 352(%rsi), %rax, %rcx + movq 168(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 160(%rdi) # a[i+45] += m[45] * mu - mulxq 360(%rsi), %rcx, %r8 - movq 368(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 360(%rdi) + mulxq 360(%rsi), %rax, %rcx + movq 176(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 168(%rdi) # a[i+46] += m[46] * mu - mulxq 368(%rsi), %rcx, %r8 - movq 376(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 368(%rdi) + mulxq 368(%rsi), %rax, %rcx + movq 184(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 176(%rdi) # a[i+47] += m[47] * mu - mulxq 376(%rsi), %rcx, %r8 - movq 384(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 376(%rdi) + mulxq 376(%rsi), %rax, %rcx + movq 192(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 184(%rdi) adcxq %r14, %r10 + movq %r10, 192(%rdi) movq %r12, %r14 - movq %r10, 384(%rdi) adoxq %r12, %r14 adcxq %r12, %r14 - # i -= 1 + # a += 1 addq $8, %rdi - decq %r9 + # i -= 1 + subq $1, %r9 jnz L_mont_loop_avx2_48 - movq %r13, (%rdi) + subq $192, %rdi negq %r14 - movq %r14, %rcx - movq %rsi, %rdx - movq %rdi, %rsi + movq %rdi, %r8 subq $384, %rdi -#ifndef __APPLE__ - callq sp_3072_cond_sub_avx2_48@plt -#else - callq _sp_3072_cond_sub_avx2_48 -#endif /* __APPLE__ */ + movq (%rsi), %rcx + movq %r13, %rdx + pextq %r14, %rcx, %rcx + subq %rcx, %rdx + movq 8(%rsi), %rcx + movq 8(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, (%rdi) + sbbq %rcx, %rax + movq 16(%rsi), %rdx + movq 16(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 8(%rdi) + sbbq %rdx, %rcx + movq 24(%rsi), %rax + movq 24(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 16(%rdi) + sbbq %rax, %rdx + movq 32(%rsi), %rcx + movq 32(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 24(%rdi) + sbbq %rcx, %rax + movq 40(%rsi), %rdx + movq 40(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 32(%rdi) + sbbq %rdx, %rcx + movq 48(%rsi), %rax + movq 48(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 40(%rdi) + sbbq %rax, %rdx + movq 56(%rsi), %rcx + movq 56(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 48(%rdi) + sbbq %rcx, %rax + movq 64(%rsi), %rdx + movq 64(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 56(%rdi) + sbbq %rdx, %rcx + movq 72(%rsi), %rax + movq 72(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 64(%rdi) + sbbq %rax, %rdx + movq 80(%rsi), %rcx + movq 80(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 72(%rdi) + sbbq %rcx, %rax + movq 88(%rsi), %rdx + movq 88(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 80(%rdi) + sbbq %rdx, %rcx + movq 96(%rsi), %rax + movq 96(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 88(%rdi) + sbbq %rax, %rdx + movq 104(%rsi), %rcx + movq 104(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 96(%rdi) + sbbq %rcx, %rax + movq 112(%rsi), %rdx + movq 112(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 104(%rdi) + sbbq %rdx, %rcx + movq 120(%rsi), %rax + movq 120(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 112(%rdi) + sbbq %rax, %rdx + movq 128(%rsi), %rcx + movq 128(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 120(%rdi) + sbbq %rcx, %rax + movq 136(%rsi), %rdx + movq 136(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 128(%rdi) + sbbq %rdx, %rcx + movq 144(%rsi), %rax + movq 144(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 136(%rdi) + sbbq %rax, %rdx + movq 152(%rsi), %rcx + movq 152(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 144(%rdi) + sbbq %rcx, %rax + movq 160(%rsi), %rdx + movq 160(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 152(%rdi) + sbbq %rdx, %rcx + movq 168(%rsi), %rax + movq 168(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 160(%rdi) + sbbq %rax, %rdx + movq 176(%rsi), %rcx + movq 176(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 168(%rdi) + sbbq %rcx, %rax + movq 184(%rsi), %rdx + movq 184(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 176(%rdi) + sbbq %rdx, %rcx + movq 192(%rsi), %rax + movq 192(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 184(%rdi) + sbbq %rax, %rdx + movq 200(%rsi), %rcx + movq 200(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 192(%rdi) + sbbq %rcx, %rax + movq 208(%rsi), %rdx + movq 208(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 200(%rdi) + sbbq %rdx, %rcx + movq 216(%rsi), %rax + movq 216(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 208(%rdi) + sbbq %rax, %rdx + movq 224(%rsi), %rcx + movq 224(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 216(%rdi) + sbbq %rcx, %rax + movq 232(%rsi), %rdx + movq 232(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 224(%rdi) + sbbq %rdx, %rcx + movq 240(%rsi), %rax + movq 240(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 232(%rdi) + sbbq %rax, %rdx + movq 248(%rsi), %rcx + movq 248(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 240(%rdi) + sbbq %rcx, %rax + movq 256(%rsi), %rdx + movq 256(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 248(%rdi) + sbbq %rdx, %rcx + movq 264(%rsi), %rax + movq 264(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 256(%rdi) + sbbq %rax, %rdx + movq 272(%rsi), %rcx + movq 272(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 264(%rdi) + sbbq %rcx, %rax + movq 280(%rsi), %rdx + movq 280(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 272(%rdi) + sbbq %rdx, %rcx + movq 288(%rsi), %rax + movq 288(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 280(%rdi) + sbbq %rax, %rdx + movq 296(%rsi), %rcx + movq 296(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 288(%rdi) + sbbq %rcx, %rax + movq 304(%rsi), %rdx + movq 304(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 296(%rdi) + sbbq %rdx, %rcx + movq 312(%rsi), %rax + movq 312(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 304(%rdi) + sbbq %rax, %rdx + movq 320(%rsi), %rcx + movq 320(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 312(%rdi) + sbbq %rcx, %rax + movq 328(%rsi), %rdx + movq 328(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 320(%rdi) + sbbq %rdx, %rcx + movq 336(%rsi), %rax + movq 336(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 328(%rdi) + sbbq %rax, %rdx + movq 344(%rsi), %rcx + movq 344(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 336(%rdi) + sbbq %rcx, %rax + movq 352(%rsi), %rdx + movq 352(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 344(%rdi) + sbbq %rdx, %rcx + movq 360(%rsi), %rax + movq 360(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 352(%rdi) + sbbq %rax, %rdx + movq 368(%rsi), %rcx + movq 368(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 360(%rdi) + sbbq %rcx, %rax + movq 376(%rsi), %rdx + movq 376(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 368(%rdi) + sbbq %rdx, %rcx + movq %rcx, 376(%rdi) pop %r14 pop %r13 pop %r12 @@ -26339,6 +27045,7 @@ sp_4096_add_64: .p2align 4 _sp_4096_add_64: #endif /* __APPLE__ */ + # Add movq (%rsi), %rcx xorq %rax, %rax addq (%rdx), %rcx @@ -26537,6 +27244,1349 @@ _sp_4096_add_64: #ifndef __APPLE__ .size sp_4096_add_64,.-sp_4096_add_64 #endif /* __APPLE__ */ +/* Multiply a and b into r. (r = a * b) + * + * r A single precision integer. + * a A single precision integer. + * b A single precision integer. + */ +#ifndef __APPLE__ +.globl sp_4096_mul_64 +.type sp_4096_mul_64,@function +.align 16 +sp_4096_mul_64: +#else +.globl _sp_4096_mul_64 +.p2align 4 +_sp_4096_mul_64: +#endif /* __APPLE__ */ + push %r12 + push %r13 + push %r14 + push %r15 + subq $1576, %rsp + movq %rdi, 1536(%rsp) + movq %rsi, 1544(%rsp) + movq %rdx, 1552(%rsp) + leaq 1024(%rsp), %r10 + leaq 256(%rsi), %r12 + # Add + movq (%rsi), %rax + xorq %r13, %r13 + addq (%r12), %rax + movq 8(%rsi), %rcx + movq %rax, (%r10) + adcq 8(%r12), %rcx + movq 16(%rsi), %r8 + movq %rcx, 8(%r10) + adcq 16(%r12), %r8 + movq 24(%rsi), %rax + movq %r8, 16(%r10) + adcq 24(%r12), %rax + movq 32(%rsi), %rcx + movq %rax, 24(%r10) + adcq 32(%r12), %rcx + movq 40(%rsi), %r8 + movq %rcx, 32(%r10) + adcq 40(%r12), %r8 + movq 48(%rsi), %rax + movq %r8, 40(%r10) + adcq 48(%r12), %rax + movq 56(%rsi), %rcx + movq %rax, 48(%r10) + adcq 56(%r12), %rcx + movq 64(%rsi), %r8 + movq %rcx, 56(%r10) + adcq 64(%r12), %r8 + movq 72(%rsi), %rax + movq %r8, 64(%r10) + adcq 72(%r12), %rax + movq 80(%rsi), %rcx + movq %rax, 72(%r10) + adcq 80(%r12), %rcx + movq 88(%rsi), %r8 + movq %rcx, 80(%r10) + adcq 88(%r12), %r8 + movq 96(%rsi), %rax + movq %r8, 88(%r10) + adcq 96(%r12), %rax + movq 104(%rsi), %rcx + movq %rax, 96(%r10) + adcq 104(%r12), %rcx + movq 112(%rsi), %r8 + movq %rcx, 104(%r10) + adcq 112(%r12), %r8 + movq 120(%rsi), %rax + movq %r8, 112(%r10) + adcq 120(%r12), %rax + movq 128(%rsi), %rcx + movq %rax, 120(%r10) + adcq 128(%r12), %rcx + movq 136(%rsi), %r8 + movq %rcx, 128(%r10) + adcq 136(%r12), %r8 + movq 144(%rsi), %rax + movq %r8, 136(%r10) + adcq 144(%r12), %rax + movq 152(%rsi), %rcx + movq %rax, 144(%r10) + adcq 152(%r12), %rcx + movq 160(%rsi), %r8 + movq %rcx, 152(%r10) + adcq 160(%r12), %r8 + movq 168(%rsi), %rax + movq %r8, 160(%r10) + adcq 168(%r12), %rax + movq 176(%rsi), %rcx + movq %rax, 168(%r10) + adcq 176(%r12), %rcx + movq 184(%rsi), %r8 + movq %rcx, 176(%r10) + adcq 184(%r12), %r8 + movq 192(%rsi), %rax + movq %r8, 184(%r10) + adcq 192(%r12), %rax + movq 200(%rsi), %rcx + movq %rax, 192(%r10) + adcq 200(%r12), %rcx + movq 208(%rsi), %r8 + movq %rcx, 200(%r10) + adcq 208(%r12), %r8 + movq 216(%rsi), %rax + movq %r8, 208(%r10) + adcq 216(%r12), %rax + movq 224(%rsi), %rcx + movq %rax, 216(%r10) + adcq 224(%r12), %rcx + movq 232(%rsi), %r8 + movq %rcx, 224(%r10) + adcq 232(%r12), %r8 + movq 240(%rsi), %rax + movq %r8, 232(%r10) + adcq 240(%r12), %rax + movq 248(%rsi), %rcx + movq %rax, 240(%r10) + adcq 248(%r12), %rcx + movq %rcx, 248(%r10) + adcq $0, %r13 + movq %r13, 1560(%rsp) + leaq 1280(%rsp), %r11 + leaq 256(%rdx), %r12 + # Add + movq (%rdx), %rax + xorq %r14, %r14 + addq (%r12), %rax + movq 8(%rdx), %rcx + movq %rax, (%r11) + adcq 8(%r12), %rcx + movq 16(%rdx), %r8 + movq %rcx, 8(%r11) + adcq 16(%r12), %r8 + movq 24(%rdx), %rax + movq %r8, 16(%r11) + adcq 24(%r12), %rax + movq 32(%rdx), %rcx + movq %rax, 24(%r11) + adcq 32(%r12), %rcx + movq 40(%rdx), %r8 + movq %rcx, 32(%r11) + adcq 40(%r12), %r8 + movq 48(%rdx), %rax + movq %r8, 40(%r11) + adcq 48(%r12), %rax + movq 56(%rdx), %rcx + movq %rax, 48(%r11) + adcq 56(%r12), %rcx + movq 64(%rdx), %r8 + movq %rcx, 56(%r11) + adcq 64(%r12), %r8 + movq 72(%rdx), %rax + movq %r8, 64(%r11) + adcq 72(%r12), %rax + movq 80(%rdx), %rcx + movq %rax, 72(%r11) + adcq 80(%r12), %rcx + movq 88(%rdx), %r8 + movq %rcx, 80(%r11) + adcq 88(%r12), %r8 + movq 96(%rdx), %rax + movq %r8, 88(%r11) + adcq 96(%r12), %rax + movq 104(%rdx), %rcx + movq %rax, 96(%r11) + adcq 104(%r12), %rcx + movq 112(%rdx), %r8 + movq %rcx, 104(%r11) + adcq 112(%r12), %r8 + movq 120(%rdx), %rax + movq %r8, 112(%r11) + adcq 120(%r12), %rax + movq 128(%rdx), %rcx + movq %rax, 120(%r11) + adcq 128(%r12), %rcx + movq 136(%rdx), %r8 + movq %rcx, 128(%r11) + adcq 136(%r12), %r8 + movq 144(%rdx), %rax + movq %r8, 136(%r11) + adcq 144(%r12), %rax + movq 152(%rdx), %rcx + movq %rax, 144(%r11) + adcq 152(%r12), %rcx + movq 160(%rdx), %r8 + movq %rcx, 152(%r11) + adcq 160(%r12), %r8 + movq 168(%rdx), %rax + movq %r8, 160(%r11) + adcq 168(%r12), %rax + movq 176(%rdx), %rcx + movq %rax, 168(%r11) + adcq 176(%r12), %rcx + movq 184(%rdx), %r8 + movq %rcx, 176(%r11) + adcq 184(%r12), %r8 + movq 192(%rdx), %rax + movq %r8, 184(%r11) + adcq 192(%r12), %rax + movq 200(%rdx), %rcx + movq %rax, 192(%r11) + adcq 200(%r12), %rcx + movq 208(%rdx), %r8 + movq %rcx, 200(%r11) + adcq 208(%r12), %r8 + movq 216(%rdx), %rax + movq %r8, 208(%r11) + adcq 216(%r12), %rax + movq 224(%rdx), %rcx + movq %rax, 216(%r11) + adcq 224(%r12), %rcx + movq 232(%rdx), %r8 + movq %rcx, 224(%r11) + adcq 232(%r12), %r8 + movq 240(%rdx), %rax + movq %r8, 232(%r11) + adcq 240(%r12), %rax + movq 248(%rdx), %rcx + movq %rax, 240(%r11) + adcq 248(%r12), %rcx + movq %rcx, 248(%r11) + adcq $0, %r14 + movq %r14, 1568(%rsp) + movq %r11, %rdx + movq %r10, %rsi + movq %rsp, %rdi +#ifndef __APPLE__ + callq sp_2048_mul_32@plt +#else + callq _sp_2048_mul_32 +#endif /* __APPLE__ */ + movq 1552(%rsp), %rdx + movq 1544(%rsp), %rsi + leaq 512(%rsp), %rdi + addq $256, %rdx + addq $256, %rsi +#ifndef __APPLE__ + callq sp_2048_mul_32@plt +#else + callq _sp_2048_mul_32 +#endif /* __APPLE__ */ + movq 1552(%rsp), %rdx + movq 1544(%rsp), %rsi + movq 1536(%rsp), %rdi +#ifndef __APPLE__ + callq sp_2048_mul_32@plt +#else + callq _sp_2048_mul_32 +#endif /* __APPLE__ */ + movq 1560(%rsp), %r13 + movq 1568(%rsp), %r14 + movq 1536(%rsp), %r15 + movq %r13, %r9 + leaq 1024(%rsp), %r10 + leaq 1280(%rsp), %r11 + andq %r14, %r9 + negq %r13 + negq %r14 + addq $512, %r15 + movq (%r10), %rax + movq (%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, (%r10) + movq %rcx, (%r11) + movq 8(%r10), %rax + movq 8(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 8(%r10) + movq %rcx, 8(%r11) + movq 16(%r10), %rax + movq 16(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 16(%r10) + movq %rcx, 16(%r11) + movq 24(%r10), %rax + movq 24(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 24(%r10) + movq %rcx, 24(%r11) + movq 32(%r10), %rax + movq 32(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 32(%r10) + movq %rcx, 32(%r11) + movq 40(%r10), %rax + movq 40(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 40(%r10) + movq %rcx, 40(%r11) + movq 48(%r10), %rax + movq 48(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 48(%r10) + movq %rcx, 48(%r11) + movq 56(%r10), %rax + movq 56(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 56(%r10) + movq %rcx, 56(%r11) + movq 64(%r10), %rax + movq 64(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 64(%r10) + movq %rcx, 64(%r11) + movq 72(%r10), %rax + movq 72(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 72(%r10) + movq %rcx, 72(%r11) + movq 80(%r10), %rax + movq 80(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 80(%r10) + movq %rcx, 80(%r11) + movq 88(%r10), %rax + movq 88(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 88(%r10) + movq %rcx, 88(%r11) + movq 96(%r10), %rax + movq 96(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 96(%r10) + movq %rcx, 96(%r11) + movq 104(%r10), %rax + movq 104(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 104(%r10) + movq %rcx, 104(%r11) + movq 112(%r10), %rax + movq 112(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 112(%r10) + movq %rcx, 112(%r11) + movq 120(%r10), %rax + movq 120(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 120(%r10) + movq %rcx, 120(%r11) + movq 128(%r10), %rax + movq 128(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 128(%r10) + movq %rcx, 128(%r11) + movq 136(%r10), %rax + movq 136(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 136(%r10) + movq %rcx, 136(%r11) + movq 144(%r10), %rax + movq 144(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 144(%r10) + movq %rcx, 144(%r11) + movq 152(%r10), %rax + movq 152(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 152(%r10) + movq %rcx, 152(%r11) + movq 160(%r10), %rax + movq 160(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 160(%r10) + movq %rcx, 160(%r11) + movq 168(%r10), %rax + movq 168(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 168(%r10) + movq %rcx, 168(%r11) + movq 176(%r10), %rax + movq 176(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 176(%r10) + movq %rcx, 176(%r11) + movq 184(%r10), %rax + movq 184(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 184(%r10) + movq %rcx, 184(%r11) + movq 192(%r10), %rax + movq 192(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 192(%r10) + movq %rcx, 192(%r11) + movq 200(%r10), %rax + movq 200(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 200(%r10) + movq %rcx, 200(%r11) + movq 208(%r10), %rax + movq 208(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 208(%r10) + movq %rcx, 208(%r11) + movq 216(%r10), %rax + movq 216(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 216(%r10) + movq %rcx, 216(%r11) + movq 224(%r10), %rax + movq 224(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 224(%r10) + movq %rcx, 224(%r11) + movq 232(%r10), %rax + movq 232(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 232(%r10) + movq %rcx, 232(%r11) + movq 240(%r10), %rax + movq 240(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 240(%r10) + movq %rcx, 240(%r11) + movq 248(%r10), %rax + movq 248(%r11), %rcx + andq %r14, %rax + andq %r13, %rcx + movq %rax, 248(%r10) + movq %rcx, 248(%r11) + movq (%r10), %rax + addq (%r11), %rax + movq 8(%r10), %rcx + movq %rax, (%r15) + adcq 8(%r11), %rcx + movq 16(%r10), %r8 + movq %rcx, 8(%r15) + adcq 16(%r11), %r8 + movq 24(%r10), %rax + movq %r8, 16(%r15) + adcq 24(%r11), %rax + movq 32(%r10), %rcx + movq %rax, 24(%r15) + adcq 32(%r11), %rcx + movq 40(%r10), %r8 + movq %rcx, 32(%r15) + adcq 40(%r11), %r8 + movq 48(%r10), %rax + movq %r8, 40(%r15) + adcq 48(%r11), %rax + movq 56(%r10), %rcx + movq %rax, 48(%r15) + adcq 56(%r11), %rcx + movq 64(%r10), %r8 + movq %rcx, 56(%r15) + adcq 64(%r11), %r8 + movq 72(%r10), %rax + movq %r8, 64(%r15) + adcq 72(%r11), %rax + movq 80(%r10), %rcx + movq %rax, 72(%r15) + adcq 80(%r11), %rcx + movq 88(%r10), %r8 + movq %rcx, 80(%r15) + adcq 88(%r11), %r8 + movq 96(%r10), %rax + movq %r8, 88(%r15) + adcq 96(%r11), %rax + movq 104(%r10), %rcx + movq %rax, 96(%r15) + adcq 104(%r11), %rcx + movq 112(%r10), %r8 + movq %rcx, 104(%r15) + adcq 112(%r11), %r8 + movq 120(%r10), %rax + movq %r8, 112(%r15) + adcq 120(%r11), %rax + movq 128(%r10), %rcx + movq %rax, 120(%r15) + adcq 128(%r11), %rcx + movq 136(%r10), %r8 + movq %rcx, 128(%r15) + adcq 136(%r11), %r8 + movq 144(%r10), %rax + movq %r8, 136(%r15) + adcq 144(%r11), %rax + movq 152(%r10), %rcx + movq %rax, 144(%r15) + adcq 152(%r11), %rcx + movq 160(%r10), %r8 + movq %rcx, 152(%r15) + adcq 160(%r11), %r8 + movq 168(%r10), %rax + movq %r8, 160(%r15) + adcq 168(%r11), %rax + movq 176(%r10), %rcx + movq %rax, 168(%r15) + adcq 176(%r11), %rcx + movq 184(%r10), %r8 + movq %rcx, 176(%r15) + adcq 184(%r11), %r8 + movq 192(%r10), %rax + movq %r8, 184(%r15) + adcq 192(%r11), %rax + movq 200(%r10), %rcx + movq %rax, 192(%r15) + adcq 200(%r11), %rcx + movq 208(%r10), %r8 + movq %rcx, 200(%r15) + adcq 208(%r11), %r8 + movq 216(%r10), %rax + movq %r8, 208(%r15) + adcq 216(%r11), %rax + movq 224(%r10), %rcx + movq %rax, 216(%r15) + adcq 224(%r11), %rcx + movq 232(%r10), %r8 + movq %rcx, 224(%r15) + adcq 232(%r11), %r8 + movq 240(%r10), %rax + movq %r8, 232(%r15) + adcq 240(%r11), %rax + movq 248(%r10), %rcx + movq %rax, 240(%r15) + adcq 248(%r11), %rcx + movq %rcx, 248(%r15) + adcq $0, %r9 + leaq 512(%rsp), %r11 + movq %rsp, %r10 + movq (%r10), %rax + subq (%r11), %rax + movq 8(%r10), %rcx + movq %rax, (%r10) + sbbq 8(%r11), %rcx + movq 16(%r10), %r8 + movq %rcx, 8(%r10) + sbbq 16(%r11), %r8 + movq 24(%r10), %rax + movq %r8, 16(%r10) + sbbq 24(%r11), %rax + movq 32(%r10), %rcx + movq %rax, 24(%r10) + sbbq 32(%r11), %rcx + movq 40(%r10), %r8 + movq %rcx, 32(%r10) + sbbq 40(%r11), %r8 + movq 48(%r10), %rax + movq %r8, 40(%r10) + sbbq 48(%r11), %rax + movq 56(%r10), %rcx + movq %rax, 48(%r10) + sbbq 56(%r11), %rcx + movq 64(%r10), %r8 + movq %rcx, 56(%r10) + sbbq 64(%r11), %r8 + movq 72(%r10), %rax + movq %r8, 64(%r10) + sbbq 72(%r11), %rax + movq 80(%r10), %rcx + movq %rax, 72(%r10) + sbbq 80(%r11), %rcx + movq 88(%r10), %r8 + movq %rcx, 80(%r10) + sbbq 88(%r11), %r8 + movq 96(%r10), %rax + movq %r8, 88(%r10) + sbbq 96(%r11), %rax + movq 104(%r10), %rcx + movq %rax, 96(%r10) + sbbq 104(%r11), %rcx + movq 112(%r10), %r8 + movq %rcx, 104(%r10) + sbbq 112(%r11), %r8 + movq 120(%r10), %rax + movq %r8, 112(%r10) + sbbq 120(%r11), %rax + movq 128(%r10), %rcx + movq %rax, 120(%r10) + sbbq 128(%r11), %rcx + movq 136(%r10), %r8 + movq %rcx, 128(%r10) + sbbq 136(%r11), %r8 + movq 144(%r10), %rax + movq %r8, 136(%r10) + sbbq 144(%r11), %rax + movq 152(%r10), %rcx + movq %rax, 144(%r10) + sbbq 152(%r11), %rcx + movq 160(%r10), %r8 + movq %rcx, 152(%r10) + sbbq 160(%r11), %r8 + movq 168(%r10), %rax + movq %r8, 160(%r10) + sbbq 168(%r11), %rax + movq 176(%r10), %rcx + movq %rax, 168(%r10) + sbbq 176(%r11), %rcx + movq 184(%r10), %r8 + movq %rcx, 176(%r10) + sbbq 184(%r11), %r8 + movq 192(%r10), %rax + movq %r8, 184(%r10) + sbbq 192(%r11), %rax + movq 200(%r10), %rcx + movq %rax, 192(%r10) + sbbq 200(%r11), %rcx + movq 208(%r10), %r8 + movq %rcx, 200(%r10) + sbbq 208(%r11), %r8 + movq 216(%r10), %rax + movq %r8, 208(%r10) + sbbq 216(%r11), %rax + movq 224(%r10), %rcx + movq %rax, 216(%r10) + sbbq 224(%r11), %rcx + movq 232(%r10), %r8 + movq %rcx, 224(%r10) + sbbq 232(%r11), %r8 + movq 240(%r10), %rax + movq %r8, 232(%r10) + sbbq 240(%r11), %rax + movq 248(%r10), %rcx + movq %rax, 240(%r10) + sbbq 248(%r11), %rcx + movq 256(%r10), %r8 + movq %rcx, 248(%r10) + sbbq 256(%r11), %r8 + movq 264(%r10), %rax + movq %r8, 256(%r10) + sbbq 264(%r11), %rax + movq 272(%r10), %rcx + movq %rax, 264(%r10) + sbbq 272(%r11), %rcx + movq 280(%r10), %r8 + movq %rcx, 272(%r10) + sbbq 280(%r11), %r8 + movq 288(%r10), %rax + movq %r8, 280(%r10) + sbbq 288(%r11), %rax + movq 296(%r10), %rcx + movq %rax, 288(%r10) + sbbq 296(%r11), %rcx + movq 304(%r10), %r8 + movq %rcx, 296(%r10) + sbbq 304(%r11), %r8 + movq 312(%r10), %rax + movq %r8, 304(%r10) + sbbq 312(%r11), %rax + movq 320(%r10), %rcx + movq %rax, 312(%r10) + sbbq 320(%r11), %rcx + movq 328(%r10), %r8 + movq %rcx, 320(%r10) + sbbq 328(%r11), %r8 + movq 336(%r10), %rax + movq %r8, 328(%r10) + sbbq 336(%r11), %rax + movq 344(%r10), %rcx + movq %rax, 336(%r10) + sbbq 344(%r11), %rcx + movq 352(%r10), %r8 + movq %rcx, 344(%r10) + sbbq 352(%r11), %r8 + movq 360(%r10), %rax + movq %r8, 352(%r10) + sbbq 360(%r11), %rax + movq 368(%r10), %rcx + movq %rax, 360(%r10) + sbbq 368(%r11), %rcx + movq 376(%r10), %r8 + movq %rcx, 368(%r10) + sbbq 376(%r11), %r8 + movq 384(%r10), %rax + movq %r8, 376(%r10) + sbbq 384(%r11), %rax + movq 392(%r10), %rcx + movq %rax, 384(%r10) + sbbq 392(%r11), %rcx + movq 400(%r10), %r8 + movq %rcx, 392(%r10) + sbbq 400(%r11), %r8 + movq 408(%r10), %rax + movq %r8, 400(%r10) + sbbq 408(%r11), %rax + movq 416(%r10), %rcx + movq %rax, 408(%r10) + sbbq 416(%r11), %rcx + movq 424(%r10), %r8 + movq %rcx, 416(%r10) + sbbq 424(%r11), %r8 + movq 432(%r10), %rax + movq %r8, 424(%r10) + sbbq 432(%r11), %rax + movq 440(%r10), %rcx + movq %rax, 432(%r10) + sbbq 440(%r11), %rcx + movq 448(%r10), %r8 + movq %rcx, 440(%r10) + sbbq 448(%r11), %r8 + movq 456(%r10), %rax + movq %r8, 448(%r10) + sbbq 456(%r11), %rax + movq 464(%r10), %rcx + movq %rax, 456(%r10) + sbbq 464(%r11), %rcx + movq 472(%r10), %r8 + movq %rcx, 464(%r10) + sbbq 472(%r11), %r8 + movq 480(%r10), %rax + movq %r8, 472(%r10) + sbbq 480(%r11), %rax + movq 488(%r10), %rcx + movq %rax, 480(%r10) + sbbq 488(%r11), %rcx + movq 496(%r10), %r8 + movq %rcx, 488(%r10) + sbbq 496(%r11), %r8 + movq 504(%r10), %rax + movq %r8, 496(%r10) + sbbq 504(%r11), %rax + movq %rax, 504(%r10) + sbbq $0, %r9 + movq (%r10), %rax + subq (%rdi), %rax + movq 8(%r10), %rcx + movq %rax, (%r10) + sbbq 8(%rdi), %rcx + movq 16(%r10), %r8 + movq %rcx, 8(%r10) + sbbq 16(%rdi), %r8 + movq 24(%r10), %rax + movq %r8, 16(%r10) + sbbq 24(%rdi), %rax + movq 32(%r10), %rcx + movq %rax, 24(%r10) + sbbq 32(%rdi), %rcx + movq 40(%r10), %r8 + movq %rcx, 32(%r10) + sbbq 40(%rdi), %r8 + movq 48(%r10), %rax + movq %r8, 40(%r10) + sbbq 48(%rdi), %rax + movq 56(%r10), %rcx + movq %rax, 48(%r10) + sbbq 56(%rdi), %rcx + movq 64(%r10), %r8 + movq %rcx, 56(%r10) + sbbq 64(%rdi), %r8 + movq 72(%r10), %rax + movq %r8, 64(%r10) + sbbq 72(%rdi), %rax + movq 80(%r10), %rcx + movq %rax, 72(%r10) + sbbq 80(%rdi), %rcx + movq 88(%r10), %r8 + movq %rcx, 80(%r10) + sbbq 88(%rdi), %r8 + movq 96(%r10), %rax + movq %r8, 88(%r10) + sbbq 96(%rdi), %rax + movq 104(%r10), %rcx + movq %rax, 96(%r10) + sbbq 104(%rdi), %rcx + movq 112(%r10), %r8 + movq %rcx, 104(%r10) + sbbq 112(%rdi), %r8 + movq 120(%r10), %rax + movq %r8, 112(%r10) + sbbq 120(%rdi), %rax + movq 128(%r10), %rcx + movq %rax, 120(%r10) + sbbq 128(%rdi), %rcx + movq 136(%r10), %r8 + movq %rcx, 128(%r10) + sbbq 136(%rdi), %r8 + movq 144(%r10), %rax + movq %r8, 136(%r10) + sbbq 144(%rdi), %rax + movq 152(%r10), %rcx + movq %rax, 144(%r10) + sbbq 152(%rdi), %rcx + movq 160(%r10), %r8 + movq %rcx, 152(%r10) + sbbq 160(%rdi), %r8 + movq 168(%r10), %rax + movq %r8, 160(%r10) + sbbq 168(%rdi), %rax + movq 176(%r10), %rcx + movq %rax, 168(%r10) + sbbq 176(%rdi), %rcx + movq 184(%r10), %r8 + movq %rcx, 176(%r10) + sbbq 184(%rdi), %r8 + movq 192(%r10), %rax + movq %r8, 184(%r10) + sbbq 192(%rdi), %rax + movq 200(%r10), %rcx + movq %rax, 192(%r10) + sbbq 200(%rdi), %rcx + movq 208(%r10), %r8 + movq %rcx, 200(%r10) + sbbq 208(%rdi), %r8 + movq 216(%r10), %rax + movq %r8, 208(%r10) + sbbq 216(%rdi), %rax + movq 224(%r10), %rcx + movq %rax, 216(%r10) + sbbq 224(%rdi), %rcx + movq 232(%r10), %r8 + movq %rcx, 224(%r10) + sbbq 232(%rdi), %r8 + movq 240(%r10), %rax + movq %r8, 232(%r10) + sbbq 240(%rdi), %rax + movq 248(%r10), %rcx + movq %rax, 240(%r10) + sbbq 248(%rdi), %rcx + movq 256(%r10), %r8 + movq %rcx, 248(%r10) + sbbq 256(%rdi), %r8 + movq 264(%r10), %rax + movq %r8, 256(%r10) + sbbq 264(%rdi), %rax + movq 272(%r10), %rcx + movq %rax, 264(%r10) + sbbq 272(%rdi), %rcx + movq 280(%r10), %r8 + movq %rcx, 272(%r10) + sbbq 280(%rdi), %r8 + movq 288(%r10), %rax + movq %r8, 280(%r10) + sbbq 288(%rdi), %rax + movq 296(%r10), %rcx + movq %rax, 288(%r10) + sbbq 296(%rdi), %rcx + movq 304(%r10), %r8 + movq %rcx, 296(%r10) + sbbq 304(%rdi), %r8 + movq 312(%r10), %rax + movq %r8, 304(%r10) + sbbq 312(%rdi), %rax + movq 320(%r10), %rcx + movq %rax, 312(%r10) + sbbq 320(%rdi), %rcx + movq 328(%r10), %r8 + movq %rcx, 320(%r10) + sbbq 328(%rdi), %r8 + movq 336(%r10), %rax + movq %r8, 328(%r10) + sbbq 336(%rdi), %rax + movq 344(%r10), %rcx + movq %rax, 336(%r10) + sbbq 344(%rdi), %rcx + movq 352(%r10), %r8 + movq %rcx, 344(%r10) + sbbq 352(%rdi), %r8 + movq 360(%r10), %rax + movq %r8, 352(%r10) + sbbq 360(%rdi), %rax + movq 368(%r10), %rcx + movq %rax, 360(%r10) + sbbq 368(%rdi), %rcx + movq 376(%r10), %r8 + movq %rcx, 368(%r10) + sbbq 376(%rdi), %r8 + movq 384(%r10), %rax + movq %r8, 376(%r10) + sbbq 384(%rdi), %rax + movq 392(%r10), %rcx + movq %rax, 384(%r10) + sbbq 392(%rdi), %rcx + movq 400(%r10), %r8 + movq %rcx, 392(%r10) + sbbq 400(%rdi), %r8 + movq 408(%r10), %rax + movq %r8, 400(%r10) + sbbq 408(%rdi), %rax + movq 416(%r10), %rcx + movq %rax, 408(%r10) + sbbq 416(%rdi), %rcx + movq 424(%r10), %r8 + movq %rcx, 416(%r10) + sbbq 424(%rdi), %r8 + movq 432(%r10), %rax + movq %r8, 424(%r10) + sbbq 432(%rdi), %rax + movq 440(%r10), %rcx + movq %rax, 432(%r10) + sbbq 440(%rdi), %rcx + movq 448(%r10), %r8 + movq %rcx, 440(%r10) + sbbq 448(%rdi), %r8 + movq 456(%r10), %rax + movq %r8, 448(%r10) + sbbq 456(%rdi), %rax + movq 464(%r10), %rcx + movq %rax, 456(%r10) + sbbq 464(%rdi), %rcx + movq 472(%r10), %r8 + movq %rcx, 464(%r10) + sbbq 472(%rdi), %r8 + movq 480(%r10), %rax + movq %r8, 472(%r10) + sbbq 480(%rdi), %rax + movq 488(%r10), %rcx + movq %rax, 480(%r10) + sbbq 488(%rdi), %rcx + movq 496(%r10), %r8 + movq %rcx, 488(%r10) + sbbq 496(%rdi), %r8 + movq 504(%r10), %rax + movq %r8, 496(%r10) + sbbq 504(%rdi), %rax + movq %rax, 504(%r10) + sbbq $0, %r9 + subq $256, %r15 + # Add + movq (%r15), %rax + addq (%r10), %rax + movq 8(%r15), %rcx + movq %rax, (%r15) + adcq 8(%r10), %rcx + movq 16(%r15), %r8 + movq %rcx, 8(%r15) + adcq 16(%r10), %r8 + movq 24(%r15), %rax + movq %r8, 16(%r15) + adcq 24(%r10), %rax + movq 32(%r15), %rcx + movq %rax, 24(%r15) + adcq 32(%r10), %rcx + movq 40(%r15), %r8 + movq %rcx, 32(%r15) + adcq 40(%r10), %r8 + movq 48(%r15), %rax + movq %r8, 40(%r15) + adcq 48(%r10), %rax + movq 56(%r15), %rcx + movq %rax, 48(%r15) + adcq 56(%r10), %rcx + movq 64(%r15), %r8 + movq %rcx, 56(%r15) + adcq 64(%r10), %r8 + movq 72(%r15), %rax + movq %r8, 64(%r15) + adcq 72(%r10), %rax + movq 80(%r15), %rcx + movq %rax, 72(%r15) + adcq 80(%r10), %rcx + movq 88(%r15), %r8 + movq %rcx, 80(%r15) + adcq 88(%r10), %r8 + movq 96(%r15), %rax + movq %r8, 88(%r15) + adcq 96(%r10), %rax + movq 104(%r15), %rcx + movq %rax, 96(%r15) + adcq 104(%r10), %rcx + movq 112(%r15), %r8 + movq %rcx, 104(%r15) + adcq 112(%r10), %r8 + movq 120(%r15), %rax + movq %r8, 112(%r15) + adcq 120(%r10), %rax + movq 128(%r15), %rcx + movq %rax, 120(%r15) + adcq 128(%r10), %rcx + movq 136(%r15), %r8 + movq %rcx, 128(%r15) + adcq 136(%r10), %r8 + movq 144(%r15), %rax + movq %r8, 136(%r15) + adcq 144(%r10), %rax + movq 152(%r15), %rcx + movq %rax, 144(%r15) + adcq 152(%r10), %rcx + movq 160(%r15), %r8 + movq %rcx, 152(%r15) + adcq 160(%r10), %r8 + movq 168(%r15), %rax + movq %r8, 160(%r15) + adcq 168(%r10), %rax + movq 176(%r15), %rcx + movq %rax, 168(%r15) + adcq 176(%r10), %rcx + movq 184(%r15), %r8 + movq %rcx, 176(%r15) + adcq 184(%r10), %r8 + movq 192(%r15), %rax + movq %r8, 184(%r15) + adcq 192(%r10), %rax + movq 200(%r15), %rcx + movq %rax, 192(%r15) + adcq 200(%r10), %rcx + movq 208(%r15), %r8 + movq %rcx, 200(%r15) + adcq 208(%r10), %r8 + movq 216(%r15), %rax + movq %r8, 208(%r15) + adcq 216(%r10), %rax + movq 224(%r15), %rcx + movq %rax, 216(%r15) + adcq 224(%r10), %rcx + movq 232(%r15), %r8 + movq %rcx, 224(%r15) + adcq 232(%r10), %r8 + movq 240(%r15), %rax + movq %r8, 232(%r15) + adcq 240(%r10), %rax + movq 248(%r15), %rcx + movq %rax, 240(%r15) + adcq 248(%r10), %rcx + movq 256(%r15), %r8 + movq %rcx, 248(%r15) + adcq 256(%r10), %r8 + movq 264(%r15), %rax + movq %r8, 256(%r15) + adcq 264(%r10), %rax + movq 272(%r15), %rcx + movq %rax, 264(%r15) + adcq 272(%r10), %rcx + movq 280(%r15), %r8 + movq %rcx, 272(%r15) + adcq 280(%r10), %r8 + movq 288(%r15), %rax + movq %r8, 280(%r15) + adcq 288(%r10), %rax + movq 296(%r15), %rcx + movq %rax, 288(%r15) + adcq 296(%r10), %rcx + movq 304(%r15), %r8 + movq %rcx, 296(%r15) + adcq 304(%r10), %r8 + movq 312(%r15), %rax + movq %r8, 304(%r15) + adcq 312(%r10), %rax + movq 320(%r15), %rcx + movq %rax, 312(%r15) + adcq 320(%r10), %rcx + movq 328(%r15), %r8 + movq %rcx, 320(%r15) + adcq 328(%r10), %r8 + movq 336(%r15), %rax + movq %r8, 328(%r15) + adcq 336(%r10), %rax + movq 344(%r15), %rcx + movq %rax, 336(%r15) + adcq 344(%r10), %rcx + movq 352(%r15), %r8 + movq %rcx, 344(%r15) + adcq 352(%r10), %r8 + movq 360(%r15), %rax + movq %r8, 352(%r15) + adcq 360(%r10), %rax + movq 368(%r15), %rcx + movq %rax, 360(%r15) + adcq 368(%r10), %rcx + movq 376(%r15), %r8 + movq %rcx, 368(%r15) + adcq 376(%r10), %r8 + movq 384(%r15), %rax + movq %r8, 376(%r15) + adcq 384(%r10), %rax + movq 392(%r15), %rcx + movq %rax, 384(%r15) + adcq 392(%r10), %rcx + movq 400(%r15), %r8 + movq %rcx, 392(%r15) + adcq 400(%r10), %r8 + movq 408(%r15), %rax + movq %r8, 400(%r15) + adcq 408(%r10), %rax + movq 416(%r15), %rcx + movq %rax, 408(%r15) + adcq 416(%r10), %rcx + movq 424(%r15), %r8 + movq %rcx, 416(%r15) + adcq 424(%r10), %r8 + movq 432(%r15), %rax + movq %r8, 424(%r15) + adcq 432(%r10), %rax + movq 440(%r15), %rcx + movq %rax, 432(%r15) + adcq 440(%r10), %rcx + movq 448(%r15), %r8 + movq %rcx, 440(%r15) + adcq 448(%r10), %r8 + movq 456(%r15), %rax + movq %r8, 448(%r15) + adcq 456(%r10), %rax + movq 464(%r15), %rcx + movq %rax, 456(%r15) + adcq 464(%r10), %rcx + movq 472(%r15), %r8 + movq %rcx, 464(%r15) + adcq 472(%r10), %r8 + movq 480(%r15), %rax + movq %r8, 472(%r15) + adcq 480(%r10), %rax + movq 488(%r15), %rcx + movq %rax, 480(%r15) + adcq 488(%r10), %rcx + movq 496(%r15), %r8 + movq %rcx, 488(%r15) + adcq 496(%r10), %r8 + movq 504(%r15), %rax + movq %r8, 496(%r15) + adcq 504(%r10), %rax + movq %rax, 504(%r15) + adcq $0, %r9 + movq %r9, 768(%rdi) + addq $256, %r15 + # Add + movq (%r15), %rax + xorq %r9, %r9 + addq (%r11), %rax + movq 8(%r15), %rcx + movq %rax, (%r15) + adcq 8(%r11), %rcx + movq 16(%r15), %r8 + movq %rcx, 8(%r15) + adcq 16(%r11), %r8 + movq 24(%r15), %rax + movq %r8, 16(%r15) + adcq 24(%r11), %rax + movq 32(%r15), %rcx + movq %rax, 24(%r15) + adcq 32(%r11), %rcx + movq 40(%r15), %r8 + movq %rcx, 32(%r15) + adcq 40(%r11), %r8 + movq 48(%r15), %rax + movq %r8, 40(%r15) + adcq 48(%r11), %rax + movq 56(%r15), %rcx + movq %rax, 48(%r15) + adcq 56(%r11), %rcx + movq 64(%r15), %r8 + movq %rcx, 56(%r15) + adcq 64(%r11), %r8 + movq 72(%r15), %rax + movq %r8, 64(%r15) + adcq 72(%r11), %rax + movq 80(%r15), %rcx + movq %rax, 72(%r15) + adcq 80(%r11), %rcx + movq 88(%r15), %r8 + movq %rcx, 80(%r15) + adcq 88(%r11), %r8 + movq 96(%r15), %rax + movq %r8, 88(%r15) + adcq 96(%r11), %rax + movq 104(%r15), %rcx + movq %rax, 96(%r15) + adcq 104(%r11), %rcx + movq 112(%r15), %r8 + movq %rcx, 104(%r15) + adcq 112(%r11), %r8 + movq 120(%r15), %rax + movq %r8, 112(%r15) + adcq 120(%r11), %rax + movq 128(%r15), %rcx + movq %rax, 120(%r15) + adcq 128(%r11), %rcx + movq 136(%r15), %r8 + movq %rcx, 128(%r15) + adcq 136(%r11), %r8 + movq 144(%r15), %rax + movq %r8, 136(%r15) + adcq 144(%r11), %rax + movq 152(%r15), %rcx + movq %rax, 144(%r15) + adcq 152(%r11), %rcx + movq 160(%r15), %r8 + movq %rcx, 152(%r15) + adcq 160(%r11), %r8 + movq 168(%r15), %rax + movq %r8, 160(%r15) + adcq 168(%r11), %rax + movq 176(%r15), %rcx + movq %rax, 168(%r15) + adcq 176(%r11), %rcx + movq 184(%r15), %r8 + movq %rcx, 176(%r15) + adcq 184(%r11), %r8 + movq 192(%r15), %rax + movq %r8, 184(%r15) + adcq 192(%r11), %rax + movq 200(%r15), %rcx + movq %rax, 192(%r15) + adcq 200(%r11), %rcx + movq 208(%r15), %r8 + movq %rcx, 200(%r15) + adcq 208(%r11), %r8 + movq 216(%r15), %rax + movq %r8, 208(%r15) + adcq 216(%r11), %rax + movq 224(%r15), %rcx + movq %rax, 216(%r15) + adcq 224(%r11), %rcx + movq 232(%r15), %r8 + movq %rcx, 224(%r15) + adcq 232(%r11), %r8 + movq 240(%r15), %rax + movq %r8, 232(%r15) + adcq 240(%r11), %rax + movq 248(%r15), %rcx + movq %rax, 240(%r15) + adcq 248(%r11), %rcx + movq 256(%r15), %r8 + movq %rcx, 248(%r15) + adcq 256(%r11), %r8 + movq %r8, 256(%r15) + adcq $0, %r9 + # Add to zero + movq 264(%r11), %rax + adcq $0, %rax + movq 272(%r11), %rcx + movq %rax, 264(%r15) + adcq $0, %rcx + movq 280(%r11), %r8 + movq %rcx, 272(%r15) + adcq $0, %r8 + movq 288(%r11), %rax + movq %r8, 280(%r15) + adcq $0, %rax + movq 296(%r11), %rcx + movq %rax, 288(%r15) + adcq $0, %rcx + movq 304(%r11), %r8 + movq %rcx, 296(%r15) + adcq $0, %r8 + movq 312(%r11), %rax + movq %r8, 304(%r15) + adcq $0, %rax + movq 320(%r11), %rcx + movq %rax, 312(%r15) + adcq $0, %rcx + movq 328(%r11), %r8 + movq %rcx, 320(%r15) + adcq $0, %r8 + movq 336(%r11), %rax + movq %r8, 328(%r15) + adcq $0, %rax + movq 344(%r11), %rcx + movq %rax, 336(%r15) + adcq $0, %rcx + movq 352(%r11), %r8 + movq %rcx, 344(%r15) + adcq $0, %r8 + movq 360(%r11), %rax + movq %r8, 352(%r15) + adcq $0, %rax + movq 368(%r11), %rcx + movq %rax, 360(%r15) + adcq $0, %rcx + movq 376(%r11), %r8 + movq %rcx, 368(%r15) + adcq $0, %r8 + movq 384(%r11), %rax + movq %r8, 376(%r15) + adcq $0, %rax + movq 392(%r11), %rcx + movq %rax, 384(%r15) + adcq $0, %rcx + movq 400(%r11), %r8 + movq %rcx, 392(%r15) + adcq $0, %r8 + movq 408(%r11), %rax + movq %r8, 400(%r15) + adcq $0, %rax + movq 416(%r11), %rcx + movq %rax, 408(%r15) + adcq $0, %rcx + movq 424(%r11), %r8 + movq %rcx, 416(%r15) + adcq $0, %r8 + movq 432(%r11), %rax + movq %r8, 424(%r15) + adcq $0, %rax + movq 440(%r11), %rcx + movq %rax, 432(%r15) + adcq $0, %rcx + movq 448(%r11), %r8 + movq %rcx, 440(%r15) + adcq $0, %r8 + movq 456(%r11), %rax + movq %r8, 448(%r15) + adcq $0, %rax + movq 464(%r11), %rcx + movq %rax, 456(%r15) + adcq $0, %rcx + movq 472(%r11), %r8 + movq %rcx, 464(%r15) + adcq $0, %r8 + movq 480(%r11), %rax + movq %r8, 472(%r15) + adcq $0, %rax + movq 488(%r11), %rcx + movq %rax, 480(%r15) + adcq $0, %rcx + movq 496(%r11), %r8 + movq %rcx, 488(%r15) + adcq $0, %r8 + movq 504(%r11), %rax + movq %r8, 496(%r15) + adcq $0, %rax + movq %rax, 504(%r15) + addq $1576, %rsp + pop %r15 + pop %r14 + pop %r13 + pop %r12 + repz retq +#ifndef __APPLE__ +.size sp_4096_mul_64,.-sp_4096_mul_64 +#endif /* __APPLE__ */ /* Add a to a into r. (r = a + a) * * r A single precision integer. @@ -26654,6 +28704,3435 @@ _sp_2048_dbl_32: #ifndef __APPLE__ .size sp_2048_dbl_32,.-sp_2048_dbl_32 #endif /* __APPLE__ */ +/* Square a and put result in r. (r = a * a) + * + * r A single precision integer. + * a A single precision integer. + */ +#ifndef __APPLE__ +.globl sp_4096_sqr_64 +.type sp_4096_sqr_64,@function +.align 16 +sp_4096_sqr_64: +#else +.globl _sp_4096_sqr_64 +.p2align 4 +_sp_4096_sqr_64: +#endif /* __APPLE__ */ + subq $1304, %rsp + movq %rdi, 1280(%rsp) + movq %rsi, 1288(%rsp) + leaq 1024(%rsp), %r8 + leaq 256(%rsi), %r9 + # Add + movq (%rsi), %rdx + xorq %rcx, %rcx + addq (%r9), %rdx + movq 8(%rsi), %rax + movq %rdx, (%r8) + adcq 8(%r9), %rax + movq 16(%rsi), %rdx + movq %rax, 8(%r8) + adcq 16(%r9), %rdx + movq 24(%rsi), %rax + movq %rdx, 16(%r8) + adcq 24(%r9), %rax + movq 32(%rsi), %rdx + movq %rax, 24(%r8) + adcq 32(%r9), %rdx + movq 40(%rsi), %rax + movq %rdx, 32(%r8) + adcq 40(%r9), %rax + movq 48(%rsi), %rdx + movq %rax, 40(%r8) + adcq 48(%r9), %rdx + movq 56(%rsi), %rax + movq %rdx, 48(%r8) + adcq 56(%r9), %rax + movq 64(%rsi), %rdx + movq %rax, 56(%r8) + adcq 64(%r9), %rdx + movq 72(%rsi), %rax + movq %rdx, 64(%r8) + adcq 72(%r9), %rax + movq 80(%rsi), %rdx + movq %rax, 72(%r8) + adcq 80(%r9), %rdx + movq 88(%rsi), %rax + movq %rdx, 80(%r8) + adcq 88(%r9), %rax + movq 96(%rsi), %rdx + movq %rax, 88(%r8) + adcq 96(%r9), %rdx + movq 104(%rsi), %rax + movq %rdx, 96(%r8) + adcq 104(%r9), %rax + movq 112(%rsi), %rdx + movq %rax, 104(%r8) + adcq 112(%r9), %rdx + movq 120(%rsi), %rax + movq %rdx, 112(%r8) + adcq 120(%r9), %rax + movq 128(%rsi), %rdx + movq %rax, 120(%r8) + adcq 128(%r9), %rdx + movq 136(%rsi), %rax + movq %rdx, 128(%r8) + adcq 136(%r9), %rax + movq 144(%rsi), %rdx + movq %rax, 136(%r8) + adcq 144(%r9), %rdx + movq 152(%rsi), %rax + movq %rdx, 144(%r8) + adcq 152(%r9), %rax + movq 160(%rsi), %rdx + movq %rax, 152(%r8) + adcq 160(%r9), %rdx + movq 168(%rsi), %rax + movq %rdx, 160(%r8) + adcq 168(%r9), %rax + movq 176(%rsi), %rdx + movq %rax, 168(%r8) + adcq 176(%r9), %rdx + movq 184(%rsi), %rax + movq %rdx, 176(%r8) + adcq 184(%r9), %rax + movq 192(%rsi), %rdx + movq %rax, 184(%r8) + adcq 192(%r9), %rdx + movq 200(%rsi), %rax + movq %rdx, 192(%r8) + adcq 200(%r9), %rax + movq 208(%rsi), %rdx + movq %rax, 200(%r8) + adcq 208(%r9), %rdx + movq 216(%rsi), %rax + movq %rdx, 208(%r8) + adcq 216(%r9), %rax + movq 224(%rsi), %rdx + movq %rax, 216(%r8) + adcq 224(%r9), %rdx + movq 232(%rsi), %rax + movq %rdx, 224(%r8) + adcq 232(%r9), %rax + movq 240(%rsi), %rdx + movq %rax, 232(%r8) + adcq 240(%r9), %rdx + movq 248(%rsi), %rax + movq %rdx, 240(%r8) + adcq 248(%r9), %rax + movq %rax, 248(%r8) + adcq $0, %rcx + movq %rcx, 1296(%rsp) + movq %r8, %rsi + movq %rsp, %rdi +#ifndef __APPLE__ + callq sp_2048_sqr_32@plt +#else + callq _sp_2048_sqr_32 +#endif /* __APPLE__ */ + movq 1288(%rsp), %rsi + leaq 512(%rsp), %rdi + addq $256, %rsi +#ifndef __APPLE__ + callq sp_2048_sqr_32@plt +#else + callq _sp_2048_sqr_32 +#endif /* __APPLE__ */ + movq 1288(%rsp), %rsi + movq 1280(%rsp), %rdi +#ifndef __APPLE__ + callq sp_2048_sqr_32@plt +#else + callq _sp_2048_sqr_32 +#endif /* __APPLE__ */ + movq 1296(%rsp), %r10 + leaq 1024(%rsp), %r8 + movq %r10, %rcx + negq %r10 + movq (%r8), %rdx + movq 8(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 512(%rdi) + movq %rax, 520(%rdi) + movq 16(%r8), %rdx + movq 24(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 528(%rdi) + movq %rax, 536(%rdi) + movq 32(%r8), %rdx + movq 40(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 544(%rdi) + movq %rax, 552(%rdi) + movq 48(%r8), %rdx + movq 56(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 560(%rdi) + movq %rax, 568(%rdi) + movq 64(%r8), %rdx + movq 72(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 576(%rdi) + movq %rax, 584(%rdi) + movq 80(%r8), %rdx + movq 88(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 592(%rdi) + movq %rax, 600(%rdi) + movq 96(%r8), %rdx + movq 104(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 608(%rdi) + movq %rax, 616(%rdi) + movq 112(%r8), %rdx + movq 120(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 624(%rdi) + movq %rax, 632(%rdi) + movq 128(%r8), %rdx + movq 136(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 640(%rdi) + movq %rax, 648(%rdi) + movq 144(%r8), %rdx + movq 152(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 656(%rdi) + movq %rax, 664(%rdi) + movq 160(%r8), %rdx + movq 168(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 672(%rdi) + movq %rax, 680(%rdi) + movq 176(%r8), %rdx + movq 184(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 688(%rdi) + movq %rax, 696(%rdi) + movq 192(%r8), %rdx + movq 200(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 704(%rdi) + movq %rax, 712(%rdi) + movq 208(%r8), %rdx + movq 216(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 720(%rdi) + movq %rax, 728(%rdi) + movq 224(%r8), %rdx + movq 232(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 736(%rdi) + movq %rax, 744(%rdi) + movq 240(%r8), %rdx + movq 248(%r8), %rax + andq %r10, %rdx + andq %r10, %rax + movq %rdx, 752(%rdi) + movq %rax, 760(%rdi) + movq 512(%rdi), %rdx + addq %rdx, %rdx + movq 520(%rdi), %rax + movq %rdx, 512(%rdi) + adcq %rax, %rax + movq 528(%rdi), %rdx + movq %rax, 520(%rdi) + adcq %rdx, %rdx + movq 536(%rdi), %rax + movq %rdx, 528(%rdi) + adcq %rax, %rax + movq 544(%rdi), %rdx + movq %rax, 536(%rdi) + adcq %rdx, %rdx + movq 552(%rdi), %rax + movq %rdx, 544(%rdi) + adcq %rax, %rax + movq 560(%rdi), %rdx + movq %rax, 552(%rdi) + adcq %rdx, %rdx + movq 568(%rdi), %rax + movq %rdx, 560(%rdi) + adcq %rax, %rax + movq 576(%rdi), %rdx + movq %rax, 568(%rdi) + adcq %rdx, %rdx + movq 584(%rdi), %rax + movq %rdx, 576(%rdi) + adcq %rax, %rax + movq 592(%rdi), %rdx + movq %rax, 584(%rdi) + adcq %rdx, %rdx + movq 600(%rdi), %rax + movq %rdx, 592(%rdi) + adcq %rax, %rax + movq 608(%rdi), %rdx + movq %rax, 600(%rdi) + adcq %rdx, %rdx + movq 616(%rdi), %rax + movq %rdx, 608(%rdi) + adcq %rax, %rax + movq 624(%rdi), %rdx + movq %rax, 616(%rdi) + adcq %rdx, %rdx + movq 632(%rdi), %rax + movq %rdx, 624(%rdi) + adcq %rax, %rax + movq 640(%rdi), %rdx + movq %rax, 632(%rdi) + adcq %rdx, %rdx + movq 648(%rdi), %rax + movq %rdx, 640(%rdi) + adcq %rax, %rax + movq 656(%rdi), %rdx + movq %rax, 648(%rdi) + adcq %rdx, %rdx + movq 664(%rdi), %rax + movq %rdx, 656(%rdi) + adcq %rax, %rax + movq 672(%rdi), %rdx + movq %rax, 664(%rdi) + adcq %rdx, %rdx + movq 680(%rdi), %rax + movq %rdx, 672(%rdi) + adcq %rax, %rax + movq 688(%rdi), %rdx + movq %rax, 680(%rdi) + adcq %rdx, %rdx + movq 696(%rdi), %rax + movq %rdx, 688(%rdi) + adcq %rax, %rax + movq 704(%rdi), %rdx + movq %rax, 696(%rdi) + adcq %rdx, %rdx + movq 712(%rdi), %rax + movq %rdx, 704(%rdi) + adcq %rax, %rax + movq 720(%rdi), %rdx + movq %rax, 712(%rdi) + adcq %rdx, %rdx + movq 728(%rdi), %rax + movq %rdx, 720(%rdi) + adcq %rax, %rax + movq 736(%rdi), %rdx + movq %rax, 728(%rdi) + adcq %rdx, %rdx + movq 744(%rdi), %rax + movq %rdx, 736(%rdi) + adcq %rax, %rax + movq 752(%rdi), %rdx + movq %rax, 744(%rdi) + adcq %rdx, %rdx + movq 760(%rdi), %rax + movq %rdx, 752(%rdi) + adcq %rax, %rax + movq %rax, 760(%rdi) + adcq $0, %rcx + leaq 512(%rsp), %rsi + movq %rsp, %r8 + movq (%r8), %rdx + subq (%rsi), %rdx + movq 8(%r8), %rax + movq %rdx, (%r8) + sbbq 8(%rsi), %rax + movq 16(%r8), %rdx + movq %rax, 8(%r8) + sbbq 16(%rsi), %rdx + movq 24(%r8), %rax + movq %rdx, 16(%r8) + sbbq 24(%rsi), %rax + movq 32(%r8), %rdx + movq %rax, 24(%r8) + sbbq 32(%rsi), %rdx + movq 40(%r8), %rax + movq %rdx, 32(%r8) + sbbq 40(%rsi), %rax + movq 48(%r8), %rdx + movq %rax, 40(%r8) + sbbq 48(%rsi), %rdx + movq 56(%r8), %rax + movq %rdx, 48(%r8) + sbbq 56(%rsi), %rax + movq 64(%r8), %rdx + movq %rax, 56(%r8) + sbbq 64(%rsi), %rdx + movq 72(%r8), %rax + movq %rdx, 64(%r8) + sbbq 72(%rsi), %rax + movq 80(%r8), %rdx + movq %rax, 72(%r8) + sbbq 80(%rsi), %rdx + movq 88(%r8), %rax + movq %rdx, 80(%r8) + sbbq 88(%rsi), %rax + movq 96(%r8), %rdx + movq %rax, 88(%r8) + sbbq 96(%rsi), %rdx + movq 104(%r8), %rax + movq %rdx, 96(%r8) + sbbq 104(%rsi), %rax + movq 112(%r8), %rdx + movq %rax, 104(%r8) + sbbq 112(%rsi), %rdx + movq 120(%r8), %rax + movq %rdx, 112(%r8) + sbbq 120(%rsi), %rax + movq 128(%r8), %rdx + movq %rax, 120(%r8) + sbbq 128(%rsi), %rdx + movq 136(%r8), %rax + movq %rdx, 128(%r8) + sbbq 136(%rsi), %rax + movq 144(%r8), %rdx + movq %rax, 136(%r8) + sbbq 144(%rsi), %rdx + movq 152(%r8), %rax + movq %rdx, 144(%r8) + sbbq 152(%rsi), %rax + movq 160(%r8), %rdx + movq %rax, 152(%r8) + sbbq 160(%rsi), %rdx + movq 168(%r8), %rax + movq %rdx, 160(%r8) + sbbq 168(%rsi), %rax + movq 176(%r8), %rdx + movq %rax, 168(%r8) + sbbq 176(%rsi), %rdx + movq 184(%r8), %rax + movq %rdx, 176(%r8) + sbbq 184(%rsi), %rax + movq 192(%r8), %rdx + movq %rax, 184(%r8) + sbbq 192(%rsi), %rdx + movq 200(%r8), %rax + movq %rdx, 192(%r8) + sbbq 200(%rsi), %rax + movq 208(%r8), %rdx + movq %rax, 200(%r8) + sbbq 208(%rsi), %rdx + movq 216(%r8), %rax + movq %rdx, 208(%r8) + sbbq 216(%rsi), %rax + movq 224(%r8), %rdx + movq %rax, 216(%r8) + sbbq 224(%rsi), %rdx + movq 232(%r8), %rax + movq %rdx, 224(%r8) + sbbq 232(%rsi), %rax + movq 240(%r8), %rdx + movq %rax, 232(%r8) + sbbq 240(%rsi), %rdx + movq 248(%r8), %rax + movq %rdx, 240(%r8) + sbbq 248(%rsi), %rax + movq 256(%r8), %rdx + movq %rax, 248(%r8) + sbbq 256(%rsi), %rdx + movq 264(%r8), %rax + movq %rdx, 256(%r8) + sbbq 264(%rsi), %rax + movq 272(%r8), %rdx + movq %rax, 264(%r8) + sbbq 272(%rsi), %rdx + movq 280(%r8), %rax + movq %rdx, 272(%r8) + sbbq 280(%rsi), %rax + movq 288(%r8), %rdx + movq %rax, 280(%r8) + sbbq 288(%rsi), %rdx + movq 296(%r8), %rax + movq %rdx, 288(%r8) + sbbq 296(%rsi), %rax + movq 304(%r8), %rdx + movq %rax, 296(%r8) + sbbq 304(%rsi), %rdx + movq 312(%r8), %rax + movq %rdx, 304(%r8) + sbbq 312(%rsi), %rax + movq 320(%r8), %rdx + movq %rax, 312(%r8) + sbbq 320(%rsi), %rdx + movq 328(%r8), %rax + movq %rdx, 320(%r8) + sbbq 328(%rsi), %rax + movq 336(%r8), %rdx + movq %rax, 328(%r8) + sbbq 336(%rsi), %rdx + movq 344(%r8), %rax + movq %rdx, 336(%r8) + sbbq 344(%rsi), %rax + movq 352(%r8), %rdx + movq %rax, 344(%r8) + sbbq 352(%rsi), %rdx + movq 360(%r8), %rax + movq %rdx, 352(%r8) + sbbq 360(%rsi), %rax + movq 368(%r8), %rdx + movq %rax, 360(%r8) + sbbq 368(%rsi), %rdx + movq 376(%r8), %rax + movq %rdx, 368(%r8) + sbbq 376(%rsi), %rax + movq 384(%r8), %rdx + movq %rax, 376(%r8) + sbbq 384(%rsi), %rdx + movq 392(%r8), %rax + movq %rdx, 384(%r8) + sbbq 392(%rsi), %rax + movq 400(%r8), %rdx + movq %rax, 392(%r8) + sbbq 400(%rsi), %rdx + movq 408(%r8), %rax + movq %rdx, 400(%r8) + sbbq 408(%rsi), %rax + movq 416(%r8), %rdx + movq %rax, 408(%r8) + sbbq 416(%rsi), %rdx + movq 424(%r8), %rax + movq %rdx, 416(%r8) + sbbq 424(%rsi), %rax + movq 432(%r8), %rdx + movq %rax, 424(%r8) + sbbq 432(%rsi), %rdx + movq 440(%r8), %rax + movq %rdx, 432(%r8) + sbbq 440(%rsi), %rax + movq 448(%r8), %rdx + movq %rax, 440(%r8) + sbbq 448(%rsi), %rdx + movq 456(%r8), %rax + movq %rdx, 448(%r8) + sbbq 456(%rsi), %rax + movq 464(%r8), %rdx + movq %rax, 456(%r8) + sbbq 464(%rsi), %rdx + movq 472(%r8), %rax + movq %rdx, 464(%r8) + sbbq 472(%rsi), %rax + movq 480(%r8), %rdx + movq %rax, 472(%r8) + sbbq 480(%rsi), %rdx + movq 488(%r8), %rax + movq %rdx, 480(%r8) + sbbq 488(%rsi), %rax + movq 496(%r8), %rdx + movq %rax, 488(%r8) + sbbq 496(%rsi), %rdx + movq 504(%r8), %rax + movq %rdx, 496(%r8) + sbbq 504(%rsi), %rax + movq %rax, 504(%r8) + sbbq $0, %rcx + movq (%r8), %rdx + subq (%rdi), %rdx + movq 8(%r8), %rax + movq %rdx, (%r8) + sbbq 8(%rdi), %rax + movq 16(%r8), %rdx + movq %rax, 8(%r8) + sbbq 16(%rdi), %rdx + movq 24(%r8), %rax + movq %rdx, 16(%r8) + sbbq 24(%rdi), %rax + movq 32(%r8), %rdx + movq %rax, 24(%r8) + sbbq 32(%rdi), %rdx + movq 40(%r8), %rax + movq %rdx, 32(%r8) + sbbq 40(%rdi), %rax + movq 48(%r8), %rdx + movq %rax, 40(%r8) + sbbq 48(%rdi), %rdx + movq 56(%r8), %rax + movq %rdx, 48(%r8) + sbbq 56(%rdi), %rax + movq 64(%r8), %rdx + movq %rax, 56(%r8) + sbbq 64(%rdi), %rdx + movq 72(%r8), %rax + movq %rdx, 64(%r8) + sbbq 72(%rdi), %rax + movq 80(%r8), %rdx + movq %rax, 72(%r8) + sbbq 80(%rdi), %rdx + movq 88(%r8), %rax + movq %rdx, 80(%r8) + sbbq 88(%rdi), %rax + movq 96(%r8), %rdx + movq %rax, 88(%r8) + sbbq 96(%rdi), %rdx + movq 104(%r8), %rax + movq %rdx, 96(%r8) + sbbq 104(%rdi), %rax + movq 112(%r8), %rdx + movq %rax, 104(%r8) + sbbq 112(%rdi), %rdx + movq 120(%r8), %rax + movq %rdx, 112(%r8) + sbbq 120(%rdi), %rax + movq 128(%r8), %rdx + movq %rax, 120(%r8) + sbbq 128(%rdi), %rdx + movq 136(%r8), %rax + movq %rdx, 128(%r8) + sbbq 136(%rdi), %rax + movq 144(%r8), %rdx + movq %rax, 136(%r8) + sbbq 144(%rdi), %rdx + movq 152(%r8), %rax + movq %rdx, 144(%r8) + sbbq 152(%rdi), %rax + movq 160(%r8), %rdx + movq %rax, 152(%r8) + sbbq 160(%rdi), %rdx + movq 168(%r8), %rax + movq %rdx, 160(%r8) + sbbq 168(%rdi), %rax + movq 176(%r8), %rdx + movq %rax, 168(%r8) + sbbq 176(%rdi), %rdx + movq 184(%r8), %rax + movq %rdx, 176(%r8) + sbbq 184(%rdi), %rax + movq 192(%r8), %rdx + movq %rax, 184(%r8) + sbbq 192(%rdi), %rdx + movq 200(%r8), %rax + movq %rdx, 192(%r8) + sbbq 200(%rdi), %rax + movq 208(%r8), %rdx + movq %rax, 200(%r8) + sbbq 208(%rdi), %rdx + movq 216(%r8), %rax + movq %rdx, 208(%r8) + sbbq 216(%rdi), %rax + movq 224(%r8), %rdx + movq %rax, 216(%r8) + sbbq 224(%rdi), %rdx + movq 232(%r8), %rax + movq %rdx, 224(%r8) + sbbq 232(%rdi), %rax + movq 240(%r8), %rdx + movq %rax, 232(%r8) + sbbq 240(%rdi), %rdx + movq 248(%r8), %rax + movq %rdx, 240(%r8) + sbbq 248(%rdi), %rax + movq 256(%r8), %rdx + movq %rax, 248(%r8) + sbbq 256(%rdi), %rdx + movq 264(%r8), %rax + movq %rdx, 256(%r8) + sbbq 264(%rdi), %rax + movq 272(%r8), %rdx + movq %rax, 264(%r8) + sbbq 272(%rdi), %rdx + movq 280(%r8), %rax + movq %rdx, 272(%r8) + sbbq 280(%rdi), %rax + movq 288(%r8), %rdx + movq %rax, 280(%r8) + sbbq 288(%rdi), %rdx + movq 296(%r8), %rax + movq %rdx, 288(%r8) + sbbq 296(%rdi), %rax + movq 304(%r8), %rdx + movq %rax, 296(%r8) + sbbq 304(%rdi), %rdx + movq 312(%r8), %rax + movq %rdx, 304(%r8) + sbbq 312(%rdi), %rax + movq 320(%r8), %rdx + movq %rax, 312(%r8) + sbbq 320(%rdi), %rdx + movq 328(%r8), %rax + movq %rdx, 320(%r8) + sbbq 328(%rdi), %rax + movq 336(%r8), %rdx + movq %rax, 328(%r8) + sbbq 336(%rdi), %rdx + movq 344(%r8), %rax + movq %rdx, 336(%r8) + sbbq 344(%rdi), %rax + movq 352(%r8), %rdx + movq %rax, 344(%r8) + sbbq 352(%rdi), %rdx + movq 360(%r8), %rax + movq %rdx, 352(%r8) + sbbq 360(%rdi), %rax + movq 368(%r8), %rdx + movq %rax, 360(%r8) + sbbq 368(%rdi), %rdx + movq 376(%r8), %rax + movq %rdx, 368(%r8) + sbbq 376(%rdi), %rax + movq 384(%r8), %rdx + movq %rax, 376(%r8) + sbbq 384(%rdi), %rdx + movq 392(%r8), %rax + movq %rdx, 384(%r8) + sbbq 392(%rdi), %rax + movq 400(%r8), %rdx + movq %rax, 392(%r8) + sbbq 400(%rdi), %rdx + movq 408(%r8), %rax + movq %rdx, 400(%r8) + sbbq 408(%rdi), %rax + movq 416(%r8), %rdx + movq %rax, 408(%r8) + sbbq 416(%rdi), %rdx + movq 424(%r8), %rax + movq %rdx, 416(%r8) + sbbq 424(%rdi), %rax + movq 432(%r8), %rdx + movq %rax, 424(%r8) + sbbq 432(%rdi), %rdx + movq 440(%r8), %rax + movq %rdx, 432(%r8) + sbbq 440(%rdi), %rax + movq 448(%r8), %rdx + movq %rax, 440(%r8) + sbbq 448(%rdi), %rdx + movq 456(%r8), %rax + movq %rdx, 448(%r8) + sbbq 456(%rdi), %rax + movq 464(%r8), %rdx + movq %rax, 456(%r8) + sbbq 464(%rdi), %rdx + movq 472(%r8), %rax + movq %rdx, 464(%r8) + sbbq 472(%rdi), %rax + movq 480(%r8), %rdx + movq %rax, 472(%r8) + sbbq 480(%rdi), %rdx + movq 488(%r8), %rax + movq %rdx, 480(%r8) + sbbq 488(%rdi), %rax + movq 496(%r8), %rdx + movq %rax, 488(%r8) + sbbq 496(%rdi), %rdx + movq 504(%r8), %rax + movq %rdx, 496(%r8) + sbbq 504(%rdi), %rax + movq %rax, 504(%r8) + sbbq $0, %rcx + # Add in place + movq 256(%rdi), %rdx + addq (%r8), %rdx + movq 264(%rdi), %rax + movq %rdx, 256(%rdi) + adcq 8(%r8), %rax + movq 272(%rdi), %rdx + movq %rax, 264(%rdi) + adcq 16(%r8), %rdx + movq 280(%rdi), %rax + movq %rdx, 272(%rdi) + adcq 24(%r8), %rax + movq 288(%rdi), %rdx + movq %rax, 280(%rdi) + adcq 32(%r8), %rdx + movq 296(%rdi), %rax + movq %rdx, 288(%rdi) + adcq 40(%r8), %rax + movq 304(%rdi), %rdx + movq %rax, 296(%rdi) + adcq 48(%r8), %rdx + movq 312(%rdi), %rax + movq %rdx, 304(%rdi) + adcq 56(%r8), %rax + movq 320(%rdi), %rdx + movq %rax, 312(%rdi) + adcq 64(%r8), %rdx + movq 328(%rdi), %rax + movq %rdx, 320(%rdi) + adcq 72(%r8), %rax + movq 336(%rdi), %rdx + movq %rax, 328(%rdi) + adcq 80(%r8), %rdx + movq 344(%rdi), %rax + movq %rdx, 336(%rdi) + adcq 88(%r8), %rax + movq 352(%rdi), %rdx + movq %rax, 344(%rdi) + adcq 96(%r8), %rdx + movq 360(%rdi), %rax + movq %rdx, 352(%rdi) + adcq 104(%r8), %rax + movq 368(%rdi), %rdx + movq %rax, 360(%rdi) + adcq 112(%r8), %rdx + movq 376(%rdi), %rax + movq %rdx, 368(%rdi) + adcq 120(%r8), %rax + movq 384(%rdi), %rdx + movq %rax, 376(%rdi) + adcq 128(%r8), %rdx + movq 392(%rdi), %rax + movq %rdx, 384(%rdi) + adcq 136(%r8), %rax + movq 400(%rdi), %rdx + movq %rax, 392(%rdi) + adcq 144(%r8), %rdx + movq 408(%rdi), %rax + movq %rdx, 400(%rdi) + adcq 152(%r8), %rax + movq 416(%rdi), %rdx + movq %rax, 408(%rdi) + adcq 160(%r8), %rdx + movq 424(%rdi), %rax + movq %rdx, 416(%rdi) + adcq 168(%r8), %rax + movq 432(%rdi), %rdx + movq %rax, 424(%rdi) + adcq 176(%r8), %rdx + movq 440(%rdi), %rax + movq %rdx, 432(%rdi) + adcq 184(%r8), %rax + movq 448(%rdi), %rdx + movq %rax, 440(%rdi) + adcq 192(%r8), %rdx + movq 456(%rdi), %rax + movq %rdx, 448(%rdi) + adcq 200(%r8), %rax + movq 464(%rdi), %rdx + movq %rax, 456(%rdi) + adcq 208(%r8), %rdx + movq 472(%rdi), %rax + movq %rdx, 464(%rdi) + adcq 216(%r8), %rax + movq 480(%rdi), %rdx + movq %rax, 472(%rdi) + adcq 224(%r8), %rdx + movq 488(%rdi), %rax + movq %rdx, 480(%rdi) + adcq 232(%r8), %rax + movq 496(%rdi), %rdx + movq %rax, 488(%rdi) + adcq 240(%r8), %rdx + movq 504(%rdi), %rax + movq %rdx, 496(%rdi) + adcq 248(%r8), %rax + movq 512(%rdi), %rdx + movq %rax, 504(%rdi) + adcq 256(%r8), %rdx + movq 520(%rdi), %rax + movq %rdx, 512(%rdi) + adcq 264(%r8), %rax + movq 528(%rdi), %rdx + movq %rax, 520(%rdi) + adcq 272(%r8), %rdx + movq 536(%rdi), %rax + movq %rdx, 528(%rdi) + adcq 280(%r8), %rax + movq 544(%rdi), %rdx + movq %rax, 536(%rdi) + adcq 288(%r8), %rdx + movq 552(%rdi), %rax + movq %rdx, 544(%rdi) + adcq 296(%r8), %rax + movq 560(%rdi), %rdx + movq %rax, 552(%rdi) + adcq 304(%r8), %rdx + movq 568(%rdi), %rax + movq %rdx, 560(%rdi) + adcq 312(%r8), %rax + movq 576(%rdi), %rdx + movq %rax, 568(%rdi) + adcq 320(%r8), %rdx + movq 584(%rdi), %rax + movq %rdx, 576(%rdi) + adcq 328(%r8), %rax + movq 592(%rdi), %rdx + movq %rax, 584(%rdi) + adcq 336(%r8), %rdx + movq 600(%rdi), %rax + movq %rdx, 592(%rdi) + adcq 344(%r8), %rax + movq 608(%rdi), %rdx + movq %rax, 600(%rdi) + adcq 352(%r8), %rdx + movq 616(%rdi), %rax + movq %rdx, 608(%rdi) + adcq 360(%r8), %rax + movq 624(%rdi), %rdx + movq %rax, 616(%rdi) + adcq 368(%r8), %rdx + movq 632(%rdi), %rax + movq %rdx, 624(%rdi) + adcq 376(%r8), %rax + movq 640(%rdi), %rdx + movq %rax, 632(%rdi) + adcq 384(%r8), %rdx + movq 648(%rdi), %rax + movq %rdx, 640(%rdi) + adcq 392(%r8), %rax + movq 656(%rdi), %rdx + movq %rax, 648(%rdi) + adcq 400(%r8), %rdx + movq 664(%rdi), %rax + movq %rdx, 656(%rdi) + adcq 408(%r8), %rax + movq 672(%rdi), %rdx + movq %rax, 664(%rdi) + adcq 416(%r8), %rdx + movq 680(%rdi), %rax + movq %rdx, 672(%rdi) + adcq 424(%r8), %rax + movq 688(%rdi), %rdx + movq %rax, 680(%rdi) + adcq 432(%r8), %rdx + movq 696(%rdi), %rax + movq %rdx, 688(%rdi) + adcq 440(%r8), %rax + movq 704(%rdi), %rdx + movq %rax, 696(%rdi) + adcq 448(%r8), %rdx + movq 712(%rdi), %rax + movq %rdx, 704(%rdi) + adcq 456(%r8), %rax + movq 720(%rdi), %rdx + movq %rax, 712(%rdi) + adcq 464(%r8), %rdx + movq 728(%rdi), %rax + movq %rdx, 720(%rdi) + adcq 472(%r8), %rax + movq 736(%rdi), %rdx + movq %rax, 728(%rdi) + adcq 480(%r8), %rdx + movq 744(%rdi), %rax + movq %rdx, 736(%rdi) + adcq 488(%r8), %rax + movq 752(%rdi), %rdx + movq %rax, 744(%rdi) + adcq 496(%r8), %rdx + movq 760(%rdi), %rax + movq %rdx, 752(%rdi) + adcq 504(%r8), %rax + movq %rax, 760(%rdi) + adcq $0, %rcx + movq %rcx, 768(%rdi) + # Add in place + movq 512(%rdi), %rdx + xorq %rcx, %rcx + addq (%rsi), %rdx + movq 520(%rdi), %rax + movq %rdx, 512(%rdi) + adcq 8(%rsi), %rax + movq 528(%rdi), %rdx + movq %rax, 520(%rdi) + adcq 16(%rsi), %rdx + movq 536(%rdi), %rax + movq %rdx, 528(%rdi) + adcq 24(%rsi), %rax + movq 544(%rdi), %rdx + movq %rax, 536(%rdi) + adcq 32(%rsi), %rdx + movq 552(%rdi), %rax + movq %rdx, 544(%rdi) + adcq 40(%rsi), %rax + movq 560(%rdi), %rdx + movq %rax, 552(%rdi) + adcq 48(%rsi), %rdx + movq 568(%rdi), %rax + movq %rdx, 560(%rdi) + adcq 56(%rsi), %rax + movq 576(%rdi), %rdx + movq %rax, 568(%rdi) + adcq 64(%rsi), %rdx + movq 584(%rdi), %rax + movq %rdx, 576(%rdi) + adcq 72(%rsi), %rax + movq 592(%rdi), %rdx + movq %rax, 584(%rdi) + adcq 80(%rsi), %rdx + movq 600(%rdi), %rax + movq %rdx, 592(%rdi) + adcq 88(%rsi), %rax + movq 608(%rdi), %rdx + movq %rax, 600(%rdi) + adcq 96(%rsi), %rdx + movq 616(%rdi), %rax + movq %rdx, 608(%rdi) + adcq 104(%rsi), %rax + movq 624(%rdi), %rdx + movq %rax, 616(%rdi) + adcq 112(%rsi), %rdx + movq 632(%rdi), %rax + movq %rdx, 624(%rdi) + adcq 120(%rsi), %rax + movq 640(%rdi), %rdx + movq %rax, 632(%rdi) + adcq 128(%rsi), %rdx + movq 648(%rdi), %rax + movq %rdx, 640(%rdi) + adcq 136(%rsi), %rax + movq 656(%rdi), %rdx + movq %rax, 648(%rdi) + adcq 144(%rsi), %rdx + movq 664(%rdi), %rax + movq %rdx, 656(%rdi) + adcq 152(%rsi), %rax + movq 672(%rdi), %rdx + movq %rax, 664(%rdi) + adcq 160(%rsi), %rdx + movq 680(%rdi), %rax + movq %rdx, 672(%rdi) + adcq 168(%rsi), %rax + movq 688(%rdi), %rdx + movq %rax, 680(%rdi) + adcq 176(%rsi), %rdx + movq 696(%rdi), %rax + movq %rdx, 688(%rdi) + adcq 184(%rsi), %rax + movq 704(%rdi), %rdx + movq %rax, 696(%rdi) + adcq 192(%rsi), %rdx + movq 712(%rdi), %rax + movq %rdx, 704(%rdi) + adcq 200(%rsi), %rax + movq 720(%rdi), %rdx + movq %rax, 712(%rdi) + adcq 208(%rsi), %rdx + movq 728(%rdi), %rax + movq %rdx, 720(%rdi) + adcq 216(%rsi), %rax + movq 736(%rdi), %rdx + movq %rax, 728(%rdi) + adcq 224(%rsi), %rdx + movq 744(%rdi), %rax + movq %rdx, 736(%rdi) + adcq 232(%rsi), %rax + movq 752(%rdi), %rdx + movq %rax, 744(%rdi) + adcq 240(%rsi), %rdx + movq 760(%rdi), %rax + movq %rdx, 752(%rdi) + adcq 248(%rsi), %rax + movq 768(%rdi), %rdx + movq %rax, 760(%rdi) + adcq 256(%rsi), %rdx + movq %rdx, 768(%rdi) + adcq $0, %rcx + # Add to zero + movq 264(%rsi), %rdx + adcq $0, %rdx + movq 272(%rsi), %rax + movq %rdx, 776(%rdi) + adcq $0, %rax + movq 280(%rsi), %rdx + movq %rax, 784(%rdi) + adcq $0, %rdx + movq 288(%rsi), %rax + movq %rdx, 792(%rdi) + adcq $0, %rax + movq 296(%rsi), %rdx + movq %rax, 800(%rdi) + adcq $0, %rdx + movq 304(%rsi), %rax + movq %rdx, 808(%rdi) + adcq $0, %rax + movq 312(%rsi), %rdx + movq %rax, 816(%rdi) + adcq $0, %rdx + movq 320(%rsi), %rax + movq %rdx, 824(%rdi) + adcq $0, %rax + movq 328(%rsi), %rdx + movq %rax, 832(%rdi) + adcq $0, %rdx + movq 336(%rsi), %rax + movq %rdx, 840(%rdi) + adcq $0, %rax + movq 344(%rsi), %rdx + movq %rax, 848(%rdi) + adcq $0, %rdx + movq 352(%rsi), %rax + movq %rdx, 856(%rdi) + adcq $0, %rax + movq 360(%rsi), %rdx + movq %rax, 864(%rdi) + adcq $0, %rdx + movq 368(%rsi), %rax + movq %rdx, 872(%rdi) + adcq $0, %rax + movq 376(%rsi), %rdx + movq %rax, 880(%rdi) + adcq $0, %rdx + movq 384(%rsi), %rax + movq %rdx, 888(%rdi) + adcq $0, %rax + movq 392(%rsi), %rdx + movq %rax, 896(%rdi) + adcq $0, %rdx + movq 400(%rsi), %rax + movq %rdx, 904(%rdi) + adcq $0, %rax + movq 408(%rsi), %rdx + movq %rax, 912(%rdi) + adcq $0, %rdx + movq 416(%rsi), %rax + movq %rdx, 920(%rdi) + adcq $0, %rax + movq 424(%rsi), %rdx + movq %rax, 928(%rdi) + adcq $0, %rdx + movq 432(%rsi), %rax + movq %rdx, 936(%rdi) + adcq $0, %rax + movq 440(%rsi), %rdx + movq %rax, 944(%rdi) + adcq $0, %rdx + movq 448(%rsi), %rax + movq %rdx, 952(%rdi) + adcq $0, %rax + movq 456(%rsi), %rdx + movq %rax, 960(%rdi) + adcq $0, %rdx + movq 464(%rsi), %rax + movq %rdx, 968(%rdi) + adcq $0, %rax + movq 472(%rsi), %rdx + movq %rax, 976(%rdi) + adcq $0, %rdx + movq 480(%rsi), %rax + movq %rdx, 984(%rdi) + adcq $0, %rax + movq 488(%rsi), %rdx + movq %rax, 992(%rdi) + adcq $0, %rdx + movq 496(%rsi), %rax + movq %rdx, 1000(%rdi) + adcq $0, %rax + movq 504(%rsi), %rdx + movq %rax, 1008(%rdi) + adcq $0, %rdx + movq %rdx, 1016(%rdi) + addq $1304, %rsp + repz retq +#ifndef __APPLE__ +.size sp_4096_sqr_64,.-sp_4096_sqr_64 +#endif /* __APPLE__ */ +/* Multiply a and b into r. (r = a * b) + * + * r A single precision integer. + * a A single precision integer. + * b A single precision integer. + */ +#ifndef __APPLE__ +.globl sp_4096_mul_avx2_64 +.type sp_4096_mul_avx2_64,@function +.align 16 +sp_4096_mul_avx2_64: +#else +.globl _sp_4096_mul_avx2_64 +.p2align 4 +_sp_4096_mul_avx2_64: +#endif /* __APPLE__ */ + push %r12 + push %r13 + push %r14 + push %r15 + subq $1576, %rsp + movq %rdi, 1536(%rsp) + movq %rsi, 1544(%rsp) + movq %rdx, 1552(%rsp) + leaq 1024(%rsp), %r10 + leaq 256(%rsi), %r12 + # Add + movq (%rsi), %rax + xorq %r13, %r13 + addq (%r12), %rax + movq 8(%rsi), %rcx + movq %rax, (%r10) + adcq 8(%r12), %rcx + movq 16(%rsi), %r8 + movq %rcx, 8(%r10) + adcq 16(%r12), %r8 + movq 24(%rsi), %rax + movq %r8, 16(%r10) + adcq 24(%r12), %rax + movq 32(%rsi), %rcx + movq %rax, 24(%r10) + adcq 32(%r12), %rcx + movq 40(%rsi), %r8 + movq %rcx, 32(%r10) + adcq 40(%r12), %r8 + movq 48(%rsi), %rax + movq %r8, 40(%r10) + adcq 48(%r12), %rax + movq 56(%rsi), %rcx + movq %rax, 48(%r10) + adcq 56(%r12), %rcx + movq 64(%rsi), %r8 + movq %rcx, 56(%r10) + adcq 64(%r12), %r8 + movq 72(%rsi), %rax + movq %r8, 64(%r10) + adcq 72(%r12), %rax + movq 80(%rsi), %rcx + movq %rax, 72(%r10) + adcq 80(%r12), %rcx + movq 88(%rsi), %r8 + movq %rcx, 80(%r10) + adcq 88(%r12), %r8 + movq 96(%rsi), %rax + movq %r8, 88(%r10) + adcq 96(%r12), %rax + movq 104(%rsi), %rcx + movq %rax, 96(%r10) + adcq 104(%r12), %rcx + movq 112(%rsi), %r8 + movq %rcx, 104(%r10) + adcq 112(%r12), %r8 + movq 120(%rsi), %rax + movq %r8, 112(%r10) + adcq 120(%r12), %rax + movq 128(%rsi), %rcx + movq %rax, 120(%r10) + adcq 128(%r12), %rcx + movq 136(%rsi), %r8 + movq %rcx, 128(%r10) + adcq 136(%r12), %r8 + movq 144(%rsi), %rax + movq %r8, 136(%r10) + adcq 144(%r12), %rax + movq 152(%rsi), %rcx + movq %rax, 144(%r10) + adcq 152(%r12), %rcx + movq 160(%rsi), %r8 + movq %rcx, 152(%r10) + adcq 160(%r12), %r8 + movq 168(%rsi), %rax + movq %r8, 160(%r10) + adcq 168(%r12), %rax + movq 176(%rsi), %rcx + movq %rax, 168(%r10) + adcq 176(%r12), %rcx + movq 184(%rsi), %r8 + movq %rcx, 176(%r10) + adcq 184(%r12), %r8 + movq 192(%rsi), %rax + movq %r8, 184(%r10) + adcq 192(%r12), %rax + movq 200(%rsi), %rcx + movq %rax, 192(%r10) + adcq 200(%r12), %rcx + movq 208(%rsi), %r8 + movq %rcx, 200(%r10) + adcq 208(%r12), %r8 + movq 216(%rsi), %rax + movq %r8, 208(%r10) + adcq 216(%r12), %rax + movq 224(%rsi), %rcx + movq %rax, 216(%r10) + adcq 224(%r12), %rcx + movq 232(%rsi), %r8 + movq %rcx, 224(%r10) + adcq 232(%r12), %r8 + movq 240(%rsi), %rax + movq %r8, 232(%r10) + adcq 240(%r12), %rax + movq 248(%rsi), %rcx + movq %rax, 240(%r10) + adcq 248(%r12), %rcx + movq %rcx, 248(%r10) + adcq $0, %r13 + movq %r13, 1560(%rsp) + leaq 1280(%rsp), %r11 + leaq 256(%rdx), %r12 + # Add + movq (%rdx), %rax + xorq %r14, %r14 + addq (%r12), %rax + movq 8(%rdx), %rcx + movq %rax, (%r11) + adcq 8(%r12), %rcx + movq 16(%rdx), %r8 + movq %rcx, 8(%r11) + adcq 16(%r12), %r8 + movq 24(%rdx), %rax + movq %r8, 16(%r11) + adcq 24(%r12), %rax + movq 32(%rdx), %rcx + movq %rax, 24(%r11) + adcq 32(%r12), %rcx + movq 40(%rdx), %r8 + movq %rcx, 32(%r11) + adcq 40(%r12), %r8 + movq 48(%rdx), %rax + movq %r8, 40(%r11) + adcq 48(%r12), %rax + movq 56(%rdx), %rcx + movq %rax, 48(%r11) + adcq 56(%r12), %rcx + movq 64(%rdx), %r8 + movq %rcx, 56(%r11) + adcq 64(%r12), %r8 + movq 72(%rdx), %rax + movq %r8, 64(%r11) + adcq 72(%r12), %rax + movq 80(%rdx), %rcx + movq %rax, 72(%r11) + adcq 80(%r12), %rcx + movq 88(%rdx), %r8 + movq %rcx, 80(%r11) + adcq 88(%r12), %r8 + movq 96(%rdx), %rax + movq %r8, 88(%r11) + adcq 96(%r12), %rax + movq 104(%rdx), %rcx + movq %rax, 96(%r11) + adcq 104(%r12), %rcx + movq 112(%rdx), %r8 + movq %rcx, 104(%r11) + adcq 112(%r12), %r8 + movq 120(%rdx), %rax + movq %r8, 112(%r11) + adcq 120(%r12), %rax + movq 128(%rdx), %rcx + movq %rax, 120(%r11) + adcq 128(%r12), %rcx + movq 136(%rdx), %r8 + movq %rcx, 128(%r11) + adcq 136(%r12), %r8 + movq 144(%rdx), %rax + movq %r8, 136(%r11) + adcq 144(%r12), %rax + movq 152(%rdx), %rcx + movq %rax, 144(%r11) + adcq 152(%r12), %rcx + movq 160(%rdx), %r8 + movq %rcx, 152(%r11) + adcq 160(%r12), %r8 + movq 168(%rdx), %rax + movq %r8, 160(%r11) + adcq 168(%r12), %rax + movq 176(%rdx), %rcx + movq %rax, 168(%r11) + adcq 176(%r12), %rcx + movq 184(%rdx), %r8 + movq %rcx, 176(%r11) + adcq 184(%r12), %r8 + movq 192(%rdx), %rax + movq %r8, 184(%r11) + adcq 192(%r12), %rax + movq 200(%rdx), %rcx + movq %rax, 192(%r11) + adcq 200(%r12), %rcx + movq 208(%rdx), %r8 + movq %rcx, 200(%r11) + adcq 208(%r12), %r8 + movq 216(%rdx), %rax + movq %r8, 208(%r11) + adcq 216(%r12), %rax + movq 224(%rdx), %rcx + movq %rax, 216(%r11) + adcq 224(%r12), %rcx + movq 232(%rdx), %r8 + movq %rcx, 224(%r11) + adcq 232(%r12), %r8 + movq 240(%rdx), %rax + movq %r8, 232(%r11) + adcq 240(%r12), %rax + movq 248(%rdx), %rcx + movq %rax, 240(%r11) + adcq 248(%r12), %rcx + movq %rcx, 248(%r11) + adcq $0, %r14 + movq %r14, 1568(%rsp) + movq %r11, %rdx + movq %r10, %rsi + movq %rsp, %rdi +#ifndef __APPLE__ + callq sp_2048_mul_avx2_32@plt +#else + callq _sp_2048_mul_avx2_32 +#endif /* __APPLE__ */ + movq 1552(%rsp), %rdx + movq 1544(%rsp), %rsi + leaq 512(%rsp), %rdi + addq $256, %rdx + addq $256, %rsi +#ifndef __APPLE__ + callq sp_2048_mul_avx2_32@plt +#else + callq _sp_2048_mul_avx2_32 +#endif /* __APPLE__ */ + movq 1552(%rsp), %rdx + movq 1544(%rsp), %rsi + movq 1536(%rsp), %rdi +#ifndef __APPLE__ + callq sp_2048_mul_avx2_32@plt +#else + callq _sp_2048_mul_avx2_32 +#endif /* __APPLE__ */ + movq 1560(%rsp), %r13 + movq 1568(%rsp), %r14 + movq 1536(%rsp), %r15 + movq %r13, %r9 + leaq 1024(%rsp), %r10 + leaq 1280(%rsp), %r11 + andq %r14, %r9 + negq %r13 + negq %r14 + addq $512, %r15 + movq (%r10), %rax + movq (%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + addq %rcx, %rax + movq 8(%r10), %rcx + movq 8(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, (%r15) + adcq %r8, %rcx + movq 16(%r10), %r8 + movq 16(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 8(%r15) + adcq %rax, %r8 + movq 24(%r10), %rax + movq 24(%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + movq %r8, 16(%r15) + adcq %rcx, %rax + movq 32(%r10), %rcx + movq 32(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, 24(%r15) + adcq %r8, %rcx + movq 40(%r10), %r8 + movq 40(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 32(%r15) + adcq %rax, %r8 + movq 48(%r10), %rax + movq 48(%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + movq %r8, 40(%r15) + adcq %rcx, %rax + movq 56(%r10), %rcx + movq 56(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, 48(%r15) + adcq %r8, %rcx + movq 64(%r10), %r8 + movq 64(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 56(%r15) + adcq %rax, %r8 + movq 72(%r10), %rax + movq 72(%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + movq %r8, 64(%r15) + adcq %rcx, %rax + movq 80(%r10), %rcx + movq 80(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, 72(%r15) + adcq %r8, %rcx + movq 88(%r10), %r8 + movq 88(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 80(%r15) + adcq %rax, %r8 + movq 96(%r10), %rax + movq 96(%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + movq %r8, 88(%r15) + adcq %rcx, %rax + movq 104(%r10), %rcx + movq 104(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, 96(%r15) + adcq %r8, %rcx + movq 112(%r10), %r8 + movq 112(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 104(%r15) + adcq %rax, %r8 + movq 120(%r10), %rax + movq 120(%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + movq %r8, 112(%r15) + adcq %rcx, %rax + movq 128(%r10), %rcx + movq 128(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, 120(%r15) + adcq %r8, %rcx + movq 136(%r10), %r8 + movq 136(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 128(%r15) + adcq %rax, %r8 + movq 144(%r10), %rax + movq 144(%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + movq %r8, 136(%r15) + adcq %rcx, %rax + movq 152(%r10), %rcx + movq 152(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, 144(%r15) + adcq %r8, %rcx + movq 160(%r10), %r8 + movq 160(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 152(%r15) + adcq %rax, %r8 + movq 168(%r10), %rax + movq 168(%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + movq %r8, 160(%r15) + adcq %rcx, %rax + movq 176(%r10), %rcx + movq 176(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, 168(%r15) + adcq %r8, %rcx + movq 184(%r10), %r8 + movq 184(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 176(%r15) + adcq %rax, %r8 + movq 192(%r10), %rax + movq 192(%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + movq %r8, 184(%r15) + adcq %rcx, %rax + movq 200(%r10), %rcx + movq 200(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, 192(%r15) + adcq %r8, %rcx + movq 208(%r10), %r8 + movq 208(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 200(%r15) + adcq %rax, %r8 + movq 216(%r10), %rax + movq 216(%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + movq %r8, 208(%r15) + adcq %rcx, %rax + movq 224(%r10), %rcx + movq 224(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, 216(%r15) + adcq %r8, %rcx + movq 232(%r10), %r8 + movq 232(%r11), %rax + pextq %r14, %r8, %r8 + pextq %r13, %rax, %rax + movq %rcx, 224(%r15) + adcq %rax, %r8 + movq 240(%r10), %rax + movq 240(%r11), %rcx + pextq %r14, %rax, %rax + pextq %r13, %rcx, %rcx + movq %r8, 232(%r15) + adcq %rcx, %rax + movq 248(%r10), %rcx + movq 248(%r11), %r8 + pextq %r14, %rcx, %rcx + pextq %r13, %r8, %r8 + movq %rax, 240(%r15) + adcq %r8, %rcx + movq %rcx, 248(%r15) + adcq $0, %r9 + leaq 512(%rsp), %r11 + movq %rsp, %r10 + movq (%r10), %rax + subq (%r11), %rax + movq 8(%r10), %rcx + movq %rax, (%r10) + sbbq 8(%r11), %rcx + movq 16(%r10), %r8 + movq %rcx, 8(%r10) + sbbq 16(%r11), %r8 + movq 24(%r10), %rax + movq %r8, 16(%r10) + sbbq 24(%r11), %rax + movq 32(%r10), %rcx + movq %rax, 24(%r10) + sbbq 32(%r11), %rcx + movq 40(%r10), %r8 + movq %rcx, 32(%r10) + sbbq 40(%r11), %r8 + movq 48(%r10), %rax + movq %r8, 40(%r10) + sbbq 48(%r11), %rax + movq 56(%r10), %rcx + movq %rax, 48(%r10) + sbbq 56(%r11), %rcx + movq 64(%r10), %r8 + movq %rcx, 56(%r10) + sbbq 64(%r11), %r8 + movq 72(%r10), %rax + movq %r8, 64(%r10) + sbbq 72(%r11), %rax + movq 80(%r10), %rcx + movq %rax, 72(%r10) + sbbq 80(%r11), %rcx + movq 88(%r10), %r8 + movq %rcx, 80(%r10) + sbbq 88(%r11), %r8 + movq 96(%r10), %rax + movq %r8, 88(%r10) + sbbq 96(%r11), %rax + movq 104(%r10), %rcx + movq %rax, 96(%r10) + sbbq 104(%r11), %rcx + movq 112(%r10), %r8 + movq %rcx, 104(%r10) + sbbq 112(%r11), %r8 + movq 120(%r10), %rax + movq %r8, 112(%r10) + sbbq 120(%r11), %rax + movq 128(%r10), %rcx + movq %rax, 120(%r10) + sbbq 128(%r11), %rcx + movq 136(%r10), %r8 + movq %rcx, 128(%r10) + sbbq 136(%r11), %r8 + movq 144(%r10), %rax + movq %r8, 136(%r10) + sbbq 144(%r11), %rax + movq 152(%r10), %rcx + movq %rax, 144(%r10) + sbbq 152(%r11), %rcx + movq 160(%r10), %r8 + movq %rcx, 152(%r10) + sbbq 160(%r11), %r8 + movq 168(%r10), %rax + movq %r8, 160(%r10) + sbbq 168(%r11), %rax + movq 176(%r10), %rcx + movq %rax, 168(%r10) + sbbq 176(%r11), %rcx + movq 184(%r10), %r8 + movq %rcx, 176(%r10) + sbbq 184(%r11), %r8 + movq 192(%r10), %rax + movq %r8, 184(%r10) + sbbq 192(%r11), %rax + movq 200(%r10), %rcx + movq %rax, 192(%r10) + sbbq 200(%r11), %rcx + movq 208(%r10), %r8 + movq %rcx, 200(%r10) + sbbq 208(%r11), %r8 + movq 216(%r10), %rax + movq %r8, 208(%r10) + sbbq 216(%r11), %rax + movq 224(%r10), %rcx + movq %rax, 216(%r10) + sbbq 224(%r11), %rcx + movq 232(%r10), %r8 + movq %rcx, 224(%r10) + sbbq 232(%r11), %r8 + movq 240(%r10), %rax + movq %r8, 232(%r10) + sbbq 240(%r11), %rax + movq 248(%r10), %rcx + movq %rax, 240(%r10) + sbbq 248(%r11), %rcx + movq 256(%r10), %r8 + movq %rcx, 248(%r10) + sbbq 256(%r11), %r8 + movq 264(%r10), %rax + movq %r8, 256(%r10) + sbbq 264(%r11), %rax + movq 272(%r10), %rcx + movq %rax, 264(%r10) + sbbq 272(%r11), %rcx + movq 280(%r10), %r8 + movq %rcx, 272(%r10) + sbbq 280(%r11), %r8 + movq 288(%r10), %rax + movq %r8, 280(%r10) + sbbq 288(%r11), %rax + movq 296(%r10), %rcx + movq %rax, 288(%r10) + sbbq 296(%r11), %rcx + movq 304(%r10), %r8 + movq %rcx, 296(%r10) + sbbq 304(%r11), %r8 + movq 312(%r10), %rax + movq %r8, 304(%r10) + sbbq 312(%r11), %rax + movq 320(%r10), %rcx + movq %rax, 312(%r10) + sbbq 320(%r11), %rcx + movq 328(%r10), %r8 + movq %rcx, 320(%r10) + sbbq 328(%r11), %r8 + movq 336(%r10), %rax + movq %r8, 328(%r10) + sbbq 336(%r11), %rax + movq 344(%r10), %rcx + movq %rax, 336(%r10) + sbbq 344(%r11), %rcx + movq 352(%r10), %r8 + movq %rcx, 344(%r10) + sbbq 352(%r11), %r8 + movq 360(%r10), %rax + movq %r8, 352(%r10) + sbbq 360(%r11), %rax + movq 368(%r10), %rcx + movq %rax, 360(%r10) + sbbq 368(%r11), %rcx + movq 376(%r10), %r8 + movq %rcx, 368(%r10) + sbbq 376(%r11), %r8 + movq 384(%r10), %rax + movq %r8, 376(%r10) + sbbq 384(%r11), %rax + movq 392(%r10), %rcx + movq %rax, 384(%r10) + sbbq 392(%r11), %rcx + movq 400(%r10), %r8 + movq %rcx, 392(%r10) + sbbq 400(%r11), %r8 + movq 408(%r10), %rax + movq %r8, 400(%r10) + sbbq 408(%r11), %rax + movq 416(%r10), %rcx + movq %rax, 408(%r10) + sbbq 416(%r11), %rcx + movq 424(%r10), %r8 + movq %rcx, 416(%r10) + sbbq 424(%r11), %r8 + movq 432(%r10), %rax + movq %r8, 424(%r10) + sbbq 432(%r11), %rax + movq 440(%r10), %rcx + movq %rax, 432(%r10) + sbbq 440(%r11), %rcx + movq 448(%r10), %r8 + movq %rcx, 440(%r10) + sbbq 448(%r11), %r8 + movq 456(%r10), %rax + movq %r8, 448(%r10) + sbbq 456(%r11), %rax + movq 464(%r10), %rcx + movq %rax, 456(%r10) + sbbq 464(%r11), %rcx + movq 472(%r10), %r8 + movq %rcx, 464(%r10) + sbbq 472(%r11), %r8 + movq 480(%r10), %rax + movq %r8, 472(%r10) + sbbq 480(%r11), %rax + movq 488(%r10), %rcx + movq %rax, 480(%r10) + sbbq 488(%r11), %rcx + movq 496(%r10), %r8 + movq %rcx, 488(%r10) + sbbq 496(%r11), %r8 + movq 504(%r10), %rax + movq %r8, 496(%r10) + sbbq 504(%r11), %rax + movq %rax, 504(%r10) + sbbq $0, %r9 + movq (%r10), %rax + subq (%rdi), %rax + movq 8(%r10), %rcx + movq %rax, (%r10) + sbbq 8(%rdi), %rcx + movq 16(%r10), %r8 + movq %rcx, 8(%r10) + sbbq 16(%rdi), %r8 + movq 24(%r10), %rax + movq %r8, 16(%r10) + sbbq 24(%rdi), %rax + movq 32(%r10), %rcx + movq %rax, 24(%r10) + sbbq 32(%rdi), %rcx + movq 40(%r10), %r8 + movq %rcx, 32(%r10) + sbbq 40(%rdi), %r8 + movq 48(%r10), %rax + movq %r8, 40(%r10) + sbbq 48(%rdi), %rax + movq 56(%r10), %rcx + movq %rax, 48(%r10) + sbbq 56(%rdi), %rcx + movq 64(%r10), %r8 + movq %rcx, 56(%r10) + sbbq 64(%rdi), %r8 + movq 72(%r10), %rax + movq %r8, 64(%r10) + sbbq 72(%rdi), %rax + movq 80(%r10), %rcx + movq %rax, 72(%r10) + sbbq 80(%rdi), %rcx + movq 88(%r10), %r8 + movq %rcx, 80(%r10) + sbbq 88(%rdi), %r8 + movq 96(%r10), %rax + movq %r8, 88(%r10) + sbbq 96(%rdi), %rax + movq 104(%r10), %rcx + movq %rax, 96(%r10) + sbbq 104(%rdi), %rcx + movq 112(%r10), %r8 + movq %rcx, 104(%r10) + sbbq 112(%rdi), %r8 + movq 120(%r10), %rax + movq %r8, 112(%r10) + sbbq 120(%rdi), %rax + movq 128(%r10), %rcx + movq %rax, 120(%r10) + sbbq 128(%rdi), %rcx + movq 136(%r10), %r8 + movq %rcx, 128(%r10) + sbbq 136(%rdi), %r8 + movq 144(%r10), %rax + movq %r8, 136(%r10) + sbbq 144(%rdi), %rax + movq 152(%r10), %rcx + movq %rax, 144(%r10) + sbbq 152(%rdi), %rcx + movq 160(%r10), %r8 + movq %rcx, 152(%r10) + sbbq 160(%rdi), %r8 + movq 168(%r10), %rax + movq %r8, 160(%r10) + sbbq 168(%rdi), %rax + movq 176(%r10), %rcx + movq %rax, 168(%r10) + sbbq 176(%rdi), %rcx + movq 184(%r10), %r8 + movq %rcx, 176(%r10) + sbbq 184(%rdi), %r8 + movq 192(%r10), %rax + movq %r8, 184(%r10) + sbbq 192(%rdi), %rax + movq 200(%r10), %rcx + movq %rax, 192(%r10) + sbbq 200(%rdi), %rcx + movq 208(%r10), %r8 + movq %rcx, 200(%r10) + sbbq 208(%rdi), %r8 + movq 216(%r10), %rax + movq %r8, 208(%r10) + sbbq 216(%rdi), %rax + movq 224(%r10), %rcx + movq %rax, 216(%r10) + sbbq 224(%rdi), %rcx + movq 232(%r10), %r8 + movq %rcx, 224(%r10) + sbbq 232(%rdi), %r8 + movq 240(%r10), %rax + movq %r8, 232(%r10) + sbbq 240(%rdi), %rax + movq 248(%r10), %rcx + movq %rax, 240(%r10) + sbbq 248(%rdi), %rcx + movq 256(%r10), %r8 + movq %rcx, 248(%r10) + sbbq 256(%rdi), %r8 + movq 264(%r10), %rax + movq %r8, 256(%r10) + sbbq 264(%rdi), %rax + movq 272(%r10), %rcx + movq %rax, 264(%r10) + sbbq 272(%rdi), %rcx + movq 280(%r10), %r8 + movq %rcx, 272(%r10) + sbbq 280(%rdi), %r8 + movq 288(%r10), %rax + movq %r8, 280(%r10) + sbbq 288(%rdi), %rax + movq 296(%r10), %rcx + movq %rax, 288(%r10) + sbbq 296(%rdi), %rcx + movq 304(%r10), %r8 + movq %rcx, 296(%r10) + sbbq 304(%rdi), %r8 + movq 312(%r10), %rax + movq %r8, 304(%r10) + sbbq 312(%rdi), %rax + movq 320(%r10), %rcx + movq %rax, 312(%r10) + sbbq 320(%rdi), %rcx + movq 328(%r10), %r8 + movq %rcx, 320(%r10) + sbbq 328(%rdi), %r8 + movq 336(%r10), %rax + movq %r8, 328(%r10) + sbbq 336(%rdi), %rax + movq 344(%r10), %rcx + movq %rax, 336(%r10) + sbbq 344(%rdi), %rcx + movq 352(%r10), %r8 + movq %rcx, 344(%r10) + sbbq 352(%rdi), %r8 + movq 360(%r10), %rax + movq %r8, 352(%r10) + sbbq 360(%rdi), %rax + movq 368(%r10), %rcx + movq %rax, 360(%r10) + sbbq 368(%rdi), %rcx + movq 376(%r10), %r8 + movq %rcx, 368(%r10) + sbbq 376(%rdi), %r8 + movq 384(%r10), %rax + movq %r8, 376(%r10) + sbbq 384(%rdi), %rax + movq 392(%r10), %rcx + movq %rax, 384(%r10) + sbbq 392(%rdi), %rcx + movq 400(%r10), %r8 + movq %rcx, 392(%r10) + sbbq 400(%rdi), %r8 + movq 408(%r10), %rax + movq %r8, 400(%r10) + sbbq 408(%rdi), %rax + movq 416(%r10), %rcx + movq %rax, 408(%r10) + sbbq 416(%rdi), %rcx + movq 424(%r10), %r8 + movq %rcx, 416(%r10) + sbbq 424(%rdi), %r8 + movq 432(%r10), %rax + movq %r8, 424(%r10) + sbbq 432(%rdi), %rax + movq 440(%r10), %rcx + movq %rax, 432(%r10) + sbbq 440(%rdi), %rcx + movq 448(%r10), %r8 + movq %rcx, 440(%r10) + sbbq 448(%rdi), %r8 + movq 456(%r10), %rax + movq %r8, 448(%r10) + sbbq 456(%rdi), %rax + movq 464(%r10), %rcx + movq %rax, 456(%r10) + sbbq 464(%rdi), %rcx + movq 472(%r10), %r8 + movq %rcx, 464(%r10) + sbbq 472(%rdi), %r8 + movq 480(%r10), %rax + movq %r8, 472(%r10) + sbbq 480(%rdi), %rax + movq 488(%r10), %rcx + movq %rax, 480(%r10) + sbbq 488(%rdi), %rcx + movq 496(%r10), %r8 + movq %rcx, 488(%r10) + sbbq 496(%rdi), %r8 + movq 504(%r10), %rax + movq %r8, 496(%r10) + sbbq 504(%rdi), %rax + movq %rax, 504(%r10) + sbbq $0, %r9 + subq $256, %r15 + # Add + movq (%r15), %rax + addq (%r10), %rax + movq 8(%r15), %rcx + movq %rax, (%r15) + adcq 8(%r10), %rcx + movq 16(%r15), %r8 + movq %rcx, 8(%r15) + adcq 16(%r10), %r8 + movq 24(%r15), %rax + movq %r8, 16(%r15) + adcq 24(%r10), %rax + movq 32(%r15), %rcx + movq %rax, 24(%r15) + adcq 32(%r10), %rcx + movq 40(%r15), %r8 + movq %rcx, 32(%r15) + adcq 40(%r10), %r8 + movq 48(%r15), %rax + movq %r8, 40(%r15) + adcq 48(%r10), %rax + movq 56(%r15), %rcx + movq %rax, 48(%r15) + adcq 56(%r10), %rcx + movq 64(%r15), %r8 + movq %rcx, 56(%r15) + adcq 64(%r10), %r8 + movq 72(%r15), %rax + movq %r8, 64(%r15) + adcq 72(%r10), %rax + movq 80(%r15), %rcx + movq %rax, 72(%r15) + adcq 80(%r10), %rcx + movq 88(%r15), %r8 + movq %rcx, 80(%r15) + adcq 88(%r10), %r8 + movq 96(%r15), %rax + movq %r8, 88(%r15) + adcq 96(%r10), %rax + movq 104(%r15), %rcx + movq %rax, 96(%r15) + adcq 104(%r10), %rcx + movq 112(%r15), %r8 + movq %rcx, 104(%r15) + adcq 112(%r10), %r8 + movq 120(%r15), %rax + movq %r8, 112(%r15) + adcq 120(%r10), %rax + movq 128(%r15), %rcx + movq %rax, 120(%r15) + adcq 128(%r10), %rcx + movq 136(%r15), %r8 + movq %rcx, 128(%r15) + adcq 136(%r10), %r8 + movq 144(%r15), %rax + movq %r8, 136(%r15) + adcq 144(%r10), %rax + movq 152(%r15), %rcx + movq %rax, 144(%r15) + adcq 152(%r10), %rcx + movq 160(%r15), %r8 + movq %rcx, 152(%r15) + adcq 160(%r10), %r8 + movq 168(%r15), %rax + movq %r8, 160(%r15) + adcq 168(%r10), %rax + movq 176(%r15), %rcx + movq %rax, 168(%r15) + adcq 176(%r10), %rcx + movq 184(%r15), %r8 + movq %rcx, 176(%r15) + adcq 184(%r10), %r8 + movq 192(%r15), %rax + movq %r8, 184(%r15) + adcq 192(%r10), %rax + movq 200(%r15), %rcx + movq %rax, 192(%r15) + adcq 200(%r10), %rcx + movq 208(%r15), %r8 + movq %rcx, 200(%r15) + adcq 208(%r10), %r8 + movq 216(%r15), %rax + movq %r8, 208(%r15) + adcq 216(%r10), %rax + movq 224(%r15), %rcx + movq %rax, 216(%r15) + adcq 224(%r10), %rcx + movq 232(%r15), %r8 + movq %rcx, 224(%r15) + adcq 232(%r10), %r8 + movq 240(%r15), %rax + movq %r8, 232(%r15) + adcq 240(%r10), %rax + movq 248(%r15), %rcx + movq %rax, 240(%r15) + adcq 248(%r10), %rcx + movq 256(%r15), %r8 + movq %rcx, 248(%r15) + adcq 256(%r10), %r8 + movq 264(%r15), %rax + movq %r8, 256(%r15) + adcq 264(%r10), %rax + movq 272(%r15), %rcx + movq %rax, 264(%r15) + adcq 272(%r10), %rcx + movq 280(%r15), %r8 + movq %rcx, 272(%r15) + adcq 280(%r10), %r8 + movq 288(%r15), %rax + movq %r8, 280(%r15) + adcq 288(%r10), %rax + movq 296(%r15), %rcx + movq %rax, 288(%r15) + adcq 296(%r10), %rcx + movq 304(%r15), %r8 + movq %rcx, 296(%r15) + adcq 304(%r10), %r8 + movq 312(%r15), %rax + movq %r8, 304(%r15) + adcq 312(%r10), %rax + movq 320(%r15), %rcx + movq %rax, 312(%r15) + adcq 320(%r10), %rcx + movq 328(%r15), %r8 + movq %rcx, 320(%r15) + adcq 328(%r10), %r8 + movq 336(%r15), %rax + movq %r8, 328(%r15) + adcq 336(%r10), %rax + movq 344(%r15), %rcx + movq %rax, 336(%r15) + adcq 344(%r10), %rcx + movq 352(%r15), %r8 + movq %rcx, 344(%r15) + adcq 352(%r10), %r8 + movq 360(%r15), %rax + movq %r8, 352(%r15) + adcq 360(%r10), %rax + movq 368(%r15), %rcx + movq %rax, 360(%r15) + adcq 368(%r10), %rcx + movq 376(%r15), %r8 + movq %rcx, 368(%r15) + adcq 376(%r10), %r8 + movq 384(%r15), %rax + movq %r8, 376(%r15) + adcq 384(%r10), %rax + movq 392(%r15), %rcx + movq %rax, 384(%r15) + adcq 392(%r10), %rcx + movq 400(%r15), %r8 + movq %rcx, 392(%r15) + adcq 400(%r10), %r8 + movq 408(%r15), %rax + movq %r8, 400(%r15) + adcq 408(%r10), %rax + movq 416(%r15), %rcx + movq %rax, 408(%r15) + adcq 416(%r10), %rcx + movq 424(%r15), %r8 + movq %rcx, 416(%r15) + adcq 424(%r10), %r8 + movq 432(%r15), %rax + movq %r8, 424(%r15) + adcq 432(%r10), %rax + movq 440(%r15), %rcx + movq %rax, 432(%r15) + adcq 440(%r10), %rcx + movq 448(%r15), %r8 + movq %rcx, 440(%r15) + adcq 448(%r10), %r8 + movq 456(%r15), %rax + movq %r8, 448(%r15) + adcq 456(%r10), %rax + movq 464(%r15), %rcx + movq %rax, 456(%r15) + adcq 464(%r10), %rcx + movq 472(%r15), %r8 + movq %rcx, 464(%r15) + adcq 472(%r10), %r8 + movq 480(%r15), %rax + movq %r8, 472(%r15) + adcq 480(%r10), %rax + movq 488(%r15), %rcx + movq %rax, 480(%r15) + adcq 488(%r10), %rcx + movq 496(%r15), %r8 + movq %rcx, 488(%r15) + adcq 496(%r10), %r8 + movq 504(%r15), %rax + movq %r8, 496(%r15) + adcq 504(%r10), %rax + movq %rax, 504(%r15) + adcq $0, %r9 + movq %r9, 768(%rdi) + addq $256, %r15 + # Add + movq (%r15), %rax + xorq %r9, %r9 + addq (%r11), %rax + movq 8(%r15), %rcx + movq %rax, (%r15) + adcq 8(%r11), %rcx + movq 16(%r15), %r8 + movq %rcx, 8(%r15) + adcq 16(%r11), %r8 + movq 24(%r15), %rax + movq %r8, 16(%r15) + adcq 24(%r11), %rax + movq 32(%r15), %rcx + movq %rax, 24(%r15) + adcq 32(%r11), %rcx + movq 40(%r15), %r8 + movq %rcx, 32(%r15) + adcq 40(%r11), %r8 + movq 48(%r15), %rax + movq %r8, 40(%r15) + adcq 48(%r11), %rax + movq 56(%r15), %rcx + movq %rax, 48(%r15) + adcq 56(%r11), %rcx + movq 64(%r15), %r8 + movq %rcx, 56(%r15) + adcq 64(%r11), %r8 + movq 72(%r15), %rax + movq %r8, 64(%r15) + adcq 72(%r11), %rax + movq 80(%r15), %rcx + movq %rax, 72(%r15) + adcq 80(%r11), %rcx + movq 88(%r15), %r8 + movq %rcx, 80(%r15) + adcq 88(%r11), %r8 + movq 96(%r15), %rax + movq %r8, 88(%r15) + adcq 96(%r11), %rax + movq 104(%r15), %rcx + movq %rax, 96(%r15) + adcq 104(%r11), %rcx + movq 112(%r15), %r8 + movq %rcx, 104(%r15) + adcq 112(%r11), %r8 + movq 120(%r15), %rax + movq %r8, 112(%r15) + adcq 120(%r11), %rax + movq 128(%r15), %rcx + movq %rax, 120(%r15) + adcq 128(%r11), %rcx + movq 136(%r15), %r8 + movq %rcx, 128(%r15) + adcq 136(%r11), %r8 + movq 144(%r15), %rax + movq %r8, 136(%r15) + adcq 144(%r11), %rax + movq 152(%r15), %rcx + movq %rax, 144(%r15) + adcq 152(%r11), %rcx + movq 160(%r15), %r8 + movq %rcx, 152(%r15) + adcq 160(%r11), %r8 + movq 168(%r15), %rax + movq %r8, 160(%r15) + adcq 168(%r11), %rax + movq 176(%r15), %rcx + movq %rax, 168(%r15) + adcq 176(%r11), %rcx + movq 184(%r15), %r8 + movq %rcx, 176(%r15) + adcq 184(%r11), %r8 + movq 192(%r15), %rax + movq %r8, 184(%r15) + adcq 192(%r11), %rax + movq 200(%r15), %rcx + movq %rax, 192(%r15) + adcq 200(%r11), %rcx + movq 208(%r15), %r8 + movq %rcx, 200(%r15) + adcq 208(%r11), %r8 + movq 216(%r15), %rax + movq %r8, 208(%r15) + adcq 216(%r11), %rax + movq 224(%r15), %rcx + movq %rax, 216(%r15) + adcq 224(%r11), %rcx + movq 232(%r15), %r8 + movq %rcx, 224(%r15) + adcq 232(%r11), %r8 + movq 240(%r15), %rax + movq %r8, 232(%r15) + adcq 240(%r11), %rax + movq 248(%r15), %rcx + movq %rax, 240(%r15) + adcq 248(%r11), %rcx + movq 256(%r15), %r8 + movq %rcx, 248(%r15) + adcq 256(%r11), %r8 + movq %r8, 256(%r15) + adcq $0, %r9 + # Add to zero + movq 264(%r11), %rax + adcq $0, %rax + movq 272(%r11), %rcx + movq %rax, 264(%r15) + adcq $0, %rcx + movq 280(%r11), %r8 + movq %rcx, 272(%r15) + adcq $0, %r8 + movq 288(%r11), %rax + movq %r8, 280(%r15) + adcq $0, %rax + movq 296(%r11), %rcx + movq %rax, 288(%r15) + adcq $0, %rcx + movq 304(%r11), %r8 + movq %rcx, 296(%r15) + adcq $0, %r8 + movq 312(%r11), %rax + movq %r8, 304(%r15) + adcq $0, %rax + movq 320(%r11), %rcx + movq %rax, 312(%r15) + adcq $0, %rcx + movq 328(%r11), %r8 + movq %rcx, 320(%r15) + adcq $0, %r8 + movq 336(%r11), %rax + movq %r8, 328(%r15) + adcq $0, %rax + movq 344(%r11), %rcx + movq %rax, 336(%r15) + adcq $0, %rcx + movq 352(%r11), %r8 + movq %rcx, 344(%r15) + adcq $0, %r8 + movq 360(%r11), %rax + movq %r8, 352(%r15) + adcq $0, %rax + movq 368(%r11), %rcx + movq %rax, 360(%r15) + adcq $0, %rcx + movq 376(%r11), %r8 + movq %rcx, 368(%r15) + adcq $0, %r8 + movq 384(%r11), %rax + movq %r8, 376(%r15) + adcq $0, %rax + movq 392(%r11), %rcx + movq %rax, 384(%r15) + adcq $0, %rcx + movq 400(%r11), %r8 + movq %rcx, 392(%r15) + adcq $0, %r8 + movq 408(%r11), %rax + movq %r8, 400(%r15) + adcq $0, %rax + movq 416(%r11), %rcx + movq %rax, 408(%r15) + adcq $0, %rcx + movq 424(%r11), %r8 + movq %rcx, 416(%r15) + adcq $0, %r8 + movq 432(%r11), %rax + movq %r8, 424(%r15) + adcq $0, %rax + movq 440(%r11), %rcx + movq %rax, 432(%r15) + adcq $0, %rcx + movq 448(%r11), %r8 + movq %rcx, 440(%r15) + adcq $0, %r8 + movq 456(%r11), %rax + movq %r8, 448(%r15) + adcq $0, %rax + movq 464(%r11), %rcx + movq %rax, 456(%r15) + adcq $0, %rcx + movq 472(%r11), %r8 + movq %rcx, 464(%r15) + adcq $0, %r8 + movq 480(%r11), %rax + movq %r8, 472(%r15) + adcq $0, %rax + movq 488(%r11), %rcx + movq %rax, 480(%r15) + adcq $0, %rcx + movq 496(%r11), %r8 + movq %rcx, 488(%r15) + adcq $0, %r8 + movq 504(%r11), %rax + movq %r8, 496(%r15) + adcq $0, %rax + movq %rax, 504(%r15) + addq $1576, %rsp + pop %r15 + pop %r14 + pop %r13 + pop %r12 + repz retq +#ifndef __APPLE__ +.size sp_4096_mul_avx2_64,.-sp_4096_mul_avx2_64 +#endif /* __APPLE__ */ +/* Square a and put result in r. (r = a * a) + * + * r A single precision integer. + * a A single precision integer. + */ +#ifndef __APPLE__ +.globl sp_4096_sqr_avx2_64 +.type sp_4096_sqr_avx2_64,@function +.align 16 +sp_4096_sqr_avx2_64: +#else +.globl _sp_4096_sqr_avx2_64 +.p2align 4 +_sp_4096_sqr_avx2_64: +#endif /* __APPLE__ */ + subq $1304, %rsp + movq %rdi, 1280(%rsp) + movq %rsi, 1288(%rsp) + leaq 1024(%rsp), %r8 + leaq 256(%rsi), %r9 + # Add + movq (%rsi), %rdx + xorq %rcx, %rcx + addq (%r9), %rdx + movq 8(%rsi), %rax + movq %rdx, (%r8) + adcq 8(%r9), %rax + movq 16(%rsi), %rdx + movq %rax, 8(%r8) + adcq 16(%r9), %rdx + movq 24(%rsi), %rax + movq %rdx, 16(%r8) + adcq 24(%r9), %rax + movq 32(%rsi), %rdx + movq %rax, 24(%r8) + adcq 32(%r9), %rdx + movq 40(%rsi), %rax + movq %rdx, 32(%r8) + adcq 40(%r9), %rax + movq 48(%rsi), %rdx + movq %rax, 40(%r8) + adcq 48(%r9), %rdx + movq 56(%rsi), %rax + movq %rdx, 48(%r8) + adcq 56(%r9), %rax + movq 64(%rsi), %rdx + movq %rax, 56(%r8) + adcq 64(%r9), %rdx + movq 72(%rsi), %rax + movq %rdx, 64(%r8) + adcq 72(%r9), %rax + movq 80(%rsi), %rdx + movq %rax, 72(%r8) + adcq 80(%r9), %rdx + movq 88(%rsi), %rax + movq %rdx, 80(%r8) + adcq 88(%r9), %rax + movq 96(%rsi), %rdx + movq %rax, 88(%r8) + adcq 96(%r9), %rdx + movq 104(%rsi), %rax + movq %rdx, 96(%r8) + adcq 104(%r9), %rax + movq 112(%rsi), %rdx + movq %rax, 104(%r8) + adcq 112(%r9), %rdx + movq 120(%rsi), %rax + movq %rdx, 112(%r8) + adcq 120(%r9), %rax + movq 128(%rsi), %rdx + movq %rax, 120(%r8) + adcq 128(%r9), %rdx + movq 136(%rsi), %rax + movq %rdx, 128(%r8) + adcq 136(%r9), %rax + movq 144(%rsi), %rdx + movq %rax, 136(%r8) + adcq 144(%r9), %rdx + movq 152(%rsi), %rax + movq %rdx, 144(%r8) + adcq 152(%r9), %rax + movq 160(%rsi), %rdx + movq %rax, 152(%r8) + adcq 160(%r9), %rdx + movq 168(%rsi), %rax + movq %rdx, 160(%r8) + adcq 168(%r9), %rax + movq 176(%rsi), %rdx + movq %rax, 168(%r8) + adcq 176(%r9), %rdx + movq 184(%rsi), %rax + movq %rdx, 176(%r8) + adcq 184(%r9), %rax + movq 192(%rsi), %rdx + movq %rax, 184(%r8) + adcq 192(%r9), %rdx + movq 200(%rsi), %rax + movq %rdx, 192(%r8) + adcq 200(%r9), %rax + movq 208(%rsi), %rdx + movq %rax, 200(%r8) + adcq 208(%r9), %rdx + movq 216(%rsi), %rax + movq %rdx, 208(%r8) + adcq 216(%r9), %rax + movq 224(%rsi), %rdx + movq %rax, 216(%r8) + adcq 224(%r9), %rdx + movq 232(%rsi), %rax + movq %rdx, 224(%r8) + adcq 232(%r9), %rax + movq 240(%rsi), %rdx + movq %rax, 232(%r8) + adcq 240(%r9), %rdx + movq 248(%rsi), %rax + movq %rdx, 240(%r8) + adcq 248(%r9), %rax + movq %rax, 248(%r8) + adcq $0, %rcx + movq %rcx, 1296(%rsp) + movq %r8, %rsi + movq %rsp, %rdi +#ifndef __APPLE__ + callq sp_2048_sqr_avx2_32@plt +#else + callq _sp_2048_sqr_avx2_32 +#endif /* __APPLE__ */ + movq 1288(%rsp), %rsi + leaq 512(%rsp), %rdi + addq $256, %rsi +#ifndef __APPLE__ + callq sp_2048_sqr_avx2_32@plt +#else + callq _sp_2048_sqr_avx2_32 +#endif /* __APPLE__ */ + movq 1288(%rsp), %rsi + movq 1280(%rsp), %rdi +#ifndef __APPLE__ + callq sp_2048_sqr_avx2_32@plt +#else + callq _sp_2048_sqr_avx2_32 +#endif /* __APPLE__ */ + movq 1296(%rsp), %r10 + leaq 1024(%rsp), %r8 + movq %r10, %rcx + negq %r10 + movq (%r8), %rdx + pextq %r10, %rdx, %rdx + addq %rdx, %rdx + movq 8(%r8), %rax + movq %rdx, 512(%rdi) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 16(%r8), %rdx + movq %rax, 520(%rdi) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 24(%r8), %rax + movq %rdx, 528(%rdi) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 32(%r8), %rdx + movq %rax, 536(%rdi) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 40(%r8), %rax + movq %rdx, 544(%rdi) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 48(%r8), %rdx + movq %rax, 552(%rdi) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 56(%r8), %rax + movq %rdx, 560(%rdi) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 64(%r8), %rdx + movq %rax, 568(%rdi) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 72(%r8), %rax + movq %rdx, 576(%rdi) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 80(%r8), %rdx + movq %rax, 584(%rdi) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 88(%r8), %rax + movq %rdx, 592(%rdi) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 96(%r8), %rdx + movq %rax, 600(%rdi) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 104(%r8), %rax + movq %rdx, 608(%rdi) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 112(%r8), %rdx + movq %rax, 616(%rdi) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 120(%r8), %rax + movq %rdx, 624(%rdi) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 128(%r8), %rdx + movq %rax, 632(%rdi) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 136(%r8), %rax + movq %rdx, 640(%rdi) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 144(%r8), %rdx + movq %rax, 648(%rdi) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 152(%r8), %rax + movq %rdx, 656(%rdi) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 160(%r8), %rdx + movq %rax, 664(%rdi) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 168(%r8), %rax + movq %rdx, 672(%rdi) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 176(%r8), %rdx + movq %rax, 680(%rdi) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 184(%r8), %rax + movq %rdx, 688(%rdi) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 192(%r8), %rdx + movq %rax, 696(%rdi) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 200(%r8), %rax + movq %rdx, 704(%rdi) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 208(%r8), %rdx + movq %rax, 712(%rdi) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 216(%r8), %rax + movq %rdx, 720(%rdi) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 224(%r8), %rdx + movq %rax, 728(%rdi) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 232(%r8), %rax + movq %rdx, 736(%rdi) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq 240(%r8), %rdx + movq %rax, 744(%rdi) + pextq %r10, %rdx, %rdx + adcq %rdx, %rdx + movq 248(%r8), %rax + movq %rdx, 752(%rdi) + pextq %r10, %rax, %rax + adcq %rax, %rax + movq %rax, 760(%rdi) + adcq $0, %rcx + leaq 512(%rsp), %rsi + movq %rsp, %r8 + movq (%r8), %rdx + subq (%rsi), %rdx + movq 8(%r8), %rax + movq %rdx, (%r8) + sbbq 8(%rsi), %rax + movq 16(%r8), %rdx + movq %rax, 8(%r8) + sbbq 16(%rsi), %rdx + movq 24(%r8), %rax + movq %rdx, 16(%r8) + sbbq 24(%rsi), %rax + movq 32(%r8), %rdx + movq %rax, 24(%r8) + sbbq 32(%rsi), %rdx + movq 40(%r8), %rax + movq %rdx, 32(%r8) + sbbq 40(%rsi), %rax + movq 48(%r8), %rdx + movq %rax, 40(%r8) + sbbq 48(%rsi), %rdx + movq 56(%r8), %rax + movq %rdx, 48(%r8) + sbbq 56(%rsi), %rax + movq 64(%r8), %rdx + movq %rax, 56(%r8) + sbbq 64(%rsi), %rdx + movq 72(%r8), %rax + movq %rdx, 64(%r8) + sbbq 72(%rsi), %rax + movq 80(%r8), %rdx + movq %rax, 72(%r8) + sbbq 80(%rsi), %rdx + movq 88(%r8), %rax + movq %rdx, 80(%r8) + sbbq 88(%rsi), %rax + movq 96(%r8), %rdx + movq %rax, 88(%r8) + sbbq 96(%rsi), %rdx + movq 104(%r8), %rax + movq %rdx, 96(%r8) + sbbq 104(%rsi), %rax + movq 112(%r8), %rdx + movq %rax, 104(%r8) + sbbq 112(%rsi), %rdx + movq 120(%r8), %rax + movq %rdx, 112(%r8) + sbbq 120(%rsi), %rax + movq 128(%r8), %rdx + movq %rax, 120(%r8) + sbbq 128(%rsi), %rdx + movq 136(%r8), %rax + movq %rdx, 128(%r8) + sbbq 136(%rsi), %rax + movq 144(%r8), %rdx + movq %rax, 136(%r8) + sbbq 144(%rsi), %rdx + movq 152(%r8), %rax + movq %rdx, 144(%r8) + sbbq 152(%rsi), %rax + movq 160(%r8), %rdx + movq %rax, 152(%r8) + sbbq 160(%rsi), %rdx + movq 168(%r8), %rax + movq %rdx, 160(%r8) + sbbq 168(%rsi), %rax + movq 176(%r8), %rdx + movq %rax, 168(%r8) + sbbq 176(%rsi), %rdx + movq 184(%r8), %rax + movq %rdx, 176(%r8) + sbbq 184(%rsi), %rax + movq 192(%r8), %rdx + movq %rax, 184(%r8) + sbbq 192(%rsi), %rdx + movq 200(%r8), %rax + movq %rdx, 192(%r8) + sbbq 200(%rsi), %rax + movq 208(%r8), %rdx + movq %rax, 200(%r8) + sbbq 208(%rsi), %rdx + movq 216(%r8), %rax + movq %rdx, 208(%r8) + sbbq 216(%rsi), %rax + movq 224(%r8), %rdx + movq %rax, 216(%r8) + sbbq 224(%rsi), %rdx + movq 232(%r8), %rax + movq %rdx, 224(%r8) + sbbq 232(%rsi), %rax + movq 240(%r8), %rdx + movq %rax, 232(%r8) + sbbq 240(%rsi), %rdx + movq 248(%r8), %rax + movq %rdx, 240(%r8) + sbbq 248(%rsi), %rax + movq 256(%r8), %rdx + movq %rax, 248(%r8) + sbbq 256(%rsi), %rdx + movq 264(%r8), %rax + movq %rdx, 256(%r8) + sbbq 264(%rsi), %rax + movq 272(%r8), %rdx + movq %rax, 264(%r8) + sbbq 272(%rsi), %rdx + movq 280(%r8), %rax + movq %rdx, 272(%r8) + sbbq 280(%rsi), %rax + movq 288(%r8), %rdx + movq %rax, 280(%r8) + sbbq 288(%rsi), %rdx + movq 296(%r8), %rax + movq %rdx, 288(%r8) + sbbq 296(%rsi), %rax + movq 304(%r8), %rdx + movq %rax, 296(%r8) + sbbq 304(%rsi), %rdx + movq 312(%r8), %rax + movq %rdx, 304(%r8) + sbbq 312(%rsi), %rax + movq 320(%r8), %rdx + movq %rax, 312(%r8) + sbbq 320(%rsi), %rdx + movq 328(%r8), %rax + movq %rdx, 320(%r8) + sbbq 328(%rsi), %rax + movq 336(%r8), %rdx + movq %rax, 328(%r8) + sbbq 336(%rsi), %rdx + movq 344(%r8), %rax + movq %rdx, 336(%r8) + sbbq 344(%rsi), %rax + movq 352(%r8), %rdx + movq %rax, 344(%r8) + sbbq 352(%rsi), %rdx + movq 360(%r8), %rax + movq %rdx, 352(%r8) + sbbq 360(%rsi), %rax + movq 368(%r8), %rdx + movq %rax, 360(%r8) + sbbq 368(%rsi), %rdx + movq 376(%r8), %rax + movq %rdx, 368(%r8) + sbbq 376(%rsi), %rax + movq 384(%r8), %rdx + movq %rax, 376(%r8) + sbbq 384(%rsi), %rdx + movq 392(%r8), %rax + movq %rdx, 384(%r8) + sbbq 392(%rsi), %rax + movq 400(%r8), %rdx + movq %rax, 392(%r8) + sbbq 400(%rsi), %rdx + movq 408(%r8), %rax + movq %rdx, 400(%r8) + sbbq 408(%rsi), %rax + movq 416(%r8), %rdx + movq %rax, 408(%r8) + sbbq 416(%rsi), %rdx + movq 424(%r8), %rax + movq %rdx, 416(%r8) + sbbq 424(%rsi), %rax + movq 432(%r8), %rdx + movq %rax, 424(%r8) + sbbq 432(%rsi), %rdx + movq 440(%r8), %rax + movq %rdx, 432(%r8) + sbbq 440(%rsi), %rax + movq 448(%r8), %rdx + movq %rax, 440(%r8) + sbbq 448(%rsi), %rdx + movq 456(%r8), %rax + movq %rdx, 448(%r8) + sbbq 456(%rsi), %rax + movq 464(%r8), %rdx + movq %rax, 456(%r8) + sbbq 464(%rsi), %rdx + movq 472(%r8), %rax + movq %rdx, 464(%r8) + sbbq 472(%rsi), %rax + movq 480(%r8), %rdx + movq %rax, 472(%r8) + sbbq 480(%rsi), %rdx + movq 488(%r8), %rax + movq %rdx, 480(%r8) + sbbq 488(%rsi), %rax + movq 496(%r8), %rdx + movq %rax, 488(%r8) + sbbq 496(%rsi), %rdx + movq 504(%r8), %rax + movq %rdx, 496(%r8) + sbbq 504(%rsi), %rax + movq %rax, 504(%r8) + sbbq $0, %rcx + movq (%r8), %rdx + subq (%rdi), %rdx + movq 8(%r8), %rax + movq %rdx, (%r8) + sbbq 8(%rdi), %rax + movq 16(%r8), %rdx + movq %rax, 8(%r8) + sbbq 16(%rdi), %rdx + movq 24(%r8), %rax + movq %rdx, 16(%r8) + sbbq 24(%rdi), %rax + movq 32(%r8), %rdx + movq %rax, 24(%r8) + sbbq 32(%rdi), %rdx + movq 40(%r8), %rax + movq %rdx, 32(%r8) + sbbq 40(%rdi), %rax + movq 48(%r8), %rdx + movq %rax, 40(%r8) + sbbq 48(%rdi), %rdx + movq 56(%r8), %rax + movq %rdx, 48(%r8) + sbbq 56(%rdi), %rax + movq 64(%r8), %rdx + movq %rax, 56(%r8) + sbbq 64(%rdi), %rdx + movq 72(%r8), %rax + movq %rdx, 64(%r8) + sbbq 72(%rdi), %rax + movq 80(%r8), %rdx + movq %rax, 72(%r8) + sbbq 80(%rdi), %rdx + movq 88(%r8), %rax + movq %rdx, 80(%r8) + sbbq 88(%rdi), %rax + movq 96(%r8), %rdx + movq %rax, 88(%r8) + sbbq 96(%rdi), %rdx + movq 104(%r8), %rax + movq %rdx, 96(%r8) + sbbq 104(%rdi), %rax + movq 112(%r8), %rdx + movq %rax, 104(%r8) + sbbq 112(%rdi), %rdx + movq 120(%r8), %rax + movq %rdx, 112(%r8) + sbbq 120(%rdi), %rax + movq 128(%r8), %rdx + movq %rax, 120(%r8) + sbbq 128(%rdi), %rdx + movq 136(%r8), %rax + movq %rdx, 128(%r8) + sbbq 136(%rdi), %rax + movq 144(%r8), %rdx + movq %rax, 136(%r8) + sbbq 144(%rdi), %rdx + movq 152(%r8), %rax + movq %rdx, 144(%r8) + sbbq 152(%rdi), %rax + movq 160(%r8), %rdx + movq %rax, 152(%r8) + sbbq 160(%rdi), %rdx + movq 168(%r8), %rax + movq %rdx, 160(%r8) + sbbq 168(%rdi), %rax + movq 176(%r8), %rdx + movq %rax, 168(%r8) + sbbq 176(%rdi), %rdx + movq 184(%r8), %rax + movq %rdx, 176(%r8) + sbbq 184(%rdi), %rax + movq 192(%r8), %rdx + movq %rax, 184(%r8) + sbbq 192(%rdi), %rdx + movq 200(%r8), %rax + movq %rdx, 192(%r8) + sbbq 200(%rdi), %rax + movq 208(%r8), %rdx + movq %rax, 200(%r8) + sbbq 208(%rdi), %rdx + movq 216(%r8), %rax + movq %rdx, 208(%r8) + sbbq 216(%rdi), %rax + movq 224(%r8), %rdx + movq %rax, 216(%r8) + sbbq 224(%rdi), %rdx + movq 232(%r8), %rax + movq %rdx, 224(%r8) + sbbq 232(%rdi), %rax + movq 240(%r8), %rdx + movq %rax, 232(%r8) + sbbq 240(%rdi), %rdx + movq 248(%r8), %rax + movq %rdx, 240(%r8) + sbbq 248(%rdi), %rax + movq 256(%r8), %rdx + movq %rax, 248(%r8) + sbbq 256(%rdi), %rdx + movq 264(%r8), %rax + movq %rdx, 256(%r8) + sbbq 264(%rdi), %rax + movq 272(%r8), %rdx + movq %rax, 264(%r8) + sbbq 272(%rdi), %rdx + movq 280(%r8), %rax + movq %rdx, 272(%r8) + sbbq 280(%rdi), %rax + movq 288(%r8), %rdx + movq %rax, 280(%r8) + sbbq 288(%rdi), %rdx + movq 296(%r8), %rax + movq %rdx, 288(%r8) + sbbq 296(%rdi), %rax + movq 304(%r8), %rdx + movq %rax, 296(%r8) + sbbq 304(%rdi), %rdx + movq 312(%r8), %rax + movq %rdx, 304(%r8) + sbbq 312(%rdi), %rax + movq 320(%r8), %rdx + movq %rax, 312(%r8) + sbbq 320(%rdi), %rdx + movq 328(%r8), %rax + movq %rdx, 320(%r8) + sbbq 328(%rdi), %rax + movq 336(%r8), %rdx + movq %rax, 328(%r8) + sbbq 336(%rdi), %rdx + movq 344(%r8), %rax + movq %rdx, 336(%r8) + sbbq 344(%rdi), %rax + movq 352(%r8), %rdx + movq %rax, 344(%r8) + sbbq 352(%rdi), %rdx + movq 360(%r8), %rax + movq %rdx, 352(%r8) + sbbq 360(%rdi), %rax + movq 368(%r8), %rdx + movq %rax, 360(%r8) + sbbq 368(%rdi), %rdx + movq 376(%r8), %rax + movq %rdx, 368(%r8) + sbbq 376(%rdi), %rax + movq 384(%r8), %rdx + movq %rax, 376(%r8) + sbbq 384(%rdi), %rdx + movq 392(%r8), %rax + movq %rdx, 384(%r8) + sbbq 392(%rdi), %rax + movq 400(%r8), %rdx + movq %rax, 392(%r8) + sbbq 400(%rdi), %rdx + movq 408(%r8), %rax + movq %rdx, 400(%r8) + sbbq 408(%rdi), %rax + movq 416(%r8), %rdx + movq %rax, 408(%r8) + sbbq 416(%rdi), %rdx + movq 424(%r8), %rax + movq %rdx, 416(%r8) + sbbq 424(%rdi), %rax + movq 432(%r8), %rdx + movq %rax, 424(%r8) + sbbq 432(%rdi), %rdx + movq 440(%r8), %rax + movq %rdx, 432(%r8) + sbbq 440(%rdi), %rax + movq 448(%r8), %rdx + movq %rax, 440(%r8) + sbbq 448(%rdi), %rdx + movq 456(%r8), %rax + movq %rdx, 448(%r8) + sbbq 456(%rdi), %rax + movq 464(%r8), %rdx + movq %rax, 456(%r8) + sbbq 464(%rdi), %rdx + movq 472(%r8), %rax + movq %rdx, 464(%r8) + sbbq 472(%rdi), %rax + movq 480(%r8), %rdx + movq %rax, 472(%r8) + sbbq 480(%rdi), %rdx + movq 488(%r8), %rax + movq %rdx, 480(%r8) + sbbq 488(%rdi), %rax + movq 496(%r8), %rdx + movq %rax, 488(%r8) + sbbq 496(%rdi), %rdx + movq 504(%r8), %rax + movq %rdx, 496(%r8) + sbbq 504(%rdi), %rax + movq %rax, 504(%r8) + sbbq $0, %rcx + # Add in place + movq 256(%rdi), %rdx + addq (%r8), %rdx + movq 264(%rdi), %rax + movq %rdx, 256(%rdi) + adcq 8(%r8), %rax + movq 272(%rdi), %rdx + movq %rax, 264(%rdi) + adcq 16(%r8), %rdx + movq 280(%rdi), %rax + movq %rdx, 272(%rdi) + adcq 24(%r8), %rax + movq 288(%rdi), %rdx + movq %rax, 280(%rdi) + adcq 32(%r8), %rdx + movq 296(%rdi), %rax + movq %rdx, 288(%rdi) + adcq 40(%r8), %rax + movq 304(%rdi), %rdx + movq %rax, 296(%rdi) + adcq 48(%r8), %rdx + movq 312(%rdi), %rax + movq %rdx, 304(%rdi) + adcq 56(%r8), %rax + movq 320(%rdi), %rdx + movq %rax, 312(%rdi) + adcq 64(%r8), %rdx + movq 328(%rdi), %rax + movq %rdx, 320(%rdi) + adcq 72(%r8), %rax + movq 336(%rdi), %rdx + movq %rax, 328(%rdi) + adcq 80(%r8), %rdx + movq 344(%rdi), %rax + movq %rdx, 336(%rdi) + adcq 88(%r8), %rax + movq 352(%rdi), %rdx + movq %rax, 344(%rdi) + adcq 96(%r8), %rdx + movq 360(%rdi), %rax + movq %rdx, 352(%rdi) + adcq 104(%r8), %rax + movq 368(%rdi), %rdx + movq %rax, 360(%rdi) + adcq 112(%r8), %rdx + movq 376(%rdi), %rax + movq %rdx, 368(%rdi) + adcq 120(%r8), %rax + movq 384(%rdi), %rdx + movq %rax, 376(%rdi) + adcq 128(%r8), %rdx + movq 392(%rdi), %rax + movq %rdx, 384(%rdi) + adcq 136(%r8), %rax + movq 400(%rdi), %rdx + movq %rax, 392(%rdi) + adcq 144(%r8), %rdx + movq 408(%rdi), %rax + movq %rdx, 400(%rdi) + adcq 152(%r8), %rax + movq 416(%rdi), %rdx + movq %rax, 408(%rdi) + adcq 160(%r8), %rdx + movq 424(%rdi), %rax + movq %rdx, 416(%rdi) + adcq 168(%r8), %rax + movq 432(%rdi), %rdx + movq %rax, 424(%rdi) + adcq 176(%r8), %rdx + movq 440(%rdi), %rax + movq %rdx, 432(%rdi) + adcq 184(%r8), %rax + movq 448(%rdi), %rdx + movq %rax, 440(%rdi) + adcq 192(%r8), %rdx + movq 456(%rdi), %rax + movq %rdx, 448(%rdi) + adcq 200(%r8), %rax + movq 464(%rdi), %rdx + movq %rax, 456(%rdi) + adcq 208(%r8), %rdx + movq 472(%rdi), %rax + movq %rdx, 464(%rdi) + adcq 216(%r8), %rax + movq 480(%rdi), %rdx + movq %rax, 472(%rdi) + adcq 224(%r8), %rdx + movq 488(%rdi), %rax + movq %rdx, 480(%rdi) + adcq 232(%r8), %rax + movq 496(%rdi), %rdx + movq %rax, 488(%rdi) + adcq 240(%r8), %rdx + movq 504(%rdi), %rax + movq %rdx, 496(%rdi) + adcq 248(%r8), %rax + movq 512(%rdi), %rdx + movq %rax, 504(%rdi) + adcq 256(%r8), %rdx + movq 520(%rdi), %rax + movq %rdx, 512(%rdi) + adcq 264(%r8), %rax + movq 528(%rdi), %rdx + movq %rax, 520(%rdi) + adcq 272(%r8), %rdx + movq 536(%rdi), %rax + movq %rdx, 528(%rdi) + adcq 280(%r8), %rax + movq 544(%rdi), %rdx + movq %rax, 536(%rdi) + adcq 288(%r8), %rdx + movq 552(%rdi), %rax + movq %rdx, 544(%rdi) + adcq 296(%r8), %rax + movq 560(%rdi), %rdx + movq %rax, 552(%rdi) + adcq 304(%r8), %rdx + movq 568(%rdi), %rax + movq %rdx, 560(%rdi) + adcq 312(%r8), %rax + movq 576(%rdi), %rdx + movq %rax, 568(%rdi) + adcq 320(%r8), %rdx + movq 584(%rdi), %rax + movq %rdx, 576(%rdi) + adcq 328(%r8), %rax + movq 592(%rdi), %rdx + movq %rax, 584(%rdi) + adcq 336(%r8), %rdx + movq 600(%rdi), %rax + movq %rdx, 592(%rdi) + adcq 344(%r8), %rax + movq 608(%rdi), %rdx + movq %rax, 600(%rdi) + adcq 352(%r8), %rdx + movq 616(%rdi), %rax + movq %rdx, 608(%rdi) + adcq 360(%r8), %rax + movq 624(%rdi), %rdx + movq %rax, 616(%rdi) + adcq 368(%r8), %rdx + movq 632(%rdi), %rax + movq %rdx, 624(%rdi) + adcq 376(%r8), %rax + movq 640(%rdi), %rdx + movq %rax, 632(%rdi) + adcq 384(%r8), %rdx + movq 648(%rdi), %rax + movq %rdx, 640(%rdi) + adcq 392(%r8), %rax + movq 656(%rdi), %rdx + movq %rax, 648(%rdi) + adcq 400(%r8), %rdx + movq 664(%rdi), %rax + movq %rdx, 656(%rdi) + adcq 408(%r8), %rax + movq 672(%rdi), %rdx + movq %rax, 664(%rdi) + adcq 416(%r8), %rdx + movq 680(%rdi), %rax + movq %rdx, 672(%rdi) + adcq 424(%r8), %rax + movq 688(%rdi), %rdx + movq %rax, 680(%rdi) + adcq 432(%r8), %rdx + movq 696(%rdi), %rax + movq %rdx, 688(%rdi) + adcq 440(%r8), %rax + movq 704(%rdi), %rdx + movq %rax, 696(%rdi) + adcq 448(%r8), %rdx + movq 712(%rdi), %rax + movq %rdx, 704(%rdi) + adcq 456(%r8), %rax + movq 720(%rdi), %rdx + movq %rax, 712(%rdi) + adcq 464(%r8), %rdx + movq 728(%rdi), %rax + movq %rdx, 720(%rdi) + adcq 472(%r8), %rax + movq 736(%rdi), %rdx + movq %rax, 728(%rdi) + adcq 480(%r8), %rdx + movq 744(%rdi), %rax + movq %rdx, 736(%rdi) + adcq 488(%r8), %rax + movq 752(%rdi), %rdx + movq %rax, 744(%rdi) + adcq 496(%r8), %rdx + movq 760(%rdi), %rax + movq %rdx, 752(%rdi) + adcq 504(%r8), %rax + movq %rax, 760(%rdi) + adcq $0, %rcx + movq %rcx, 768(%rdi) + # Add in place + movq 512(%rdi), %rdx + xorq %rcx, %rcx + addq (%rsi), %rdx + movq 520(%rdi), %rax + movq %rdx, 512(%rdi) + adcq 8(%rsi), %rax + movq 528(%rdi), %rdx + movq %rax, 520(%rdi) + adcq 16(%rsi), %rdx + movq 536(%rdi), %rax + movq %rdx, 528(%rdi) + adcq 24(%rsi), %rax + movq 544(%rdi), %rdx + movq %rax, 536(%rdi) + adcq 32(%rsi), %rdx + movq 552(%rdi), %rax + movq %rdx, 544(%rdi) + adcq 40(%rsi), %rax + movq 560(%rdi), %rdx + movq %rax, 552(%rdi) + adcq 48(%rsi), %rdx + movq 568(%rdi), %rax + movq %rdx, 560(%rdi) + adcq 56(%rsi), %rax + movq 576(%rdi), %rdx + movq %rax, 568(%rdi) + adcq 64(%rsi), %rdx + movq 584(%rdi), %rax + movq %rdx, 576(%rdi) + adcq 72(%rsi), %rax + movq 592(%rdi), %rdx + movq %rax, 584(%rdi) + adcq 80(%rsi), %rdx + movq 600(%rdi), %rax + movq %rdx, 592(%rdi) + adcq 88(%rsi), %rax + movq 608(%rdi), %rdx + movq %rax, 600(%rdi) + adcq 96(%rsi), %rdx + movq 616(%rdi), %rax + movq %rdx, 608(%rdi) + adcq 104(%rsi), %rax + movq 624(%rdi), %rdx + movq %rax, 616(%rdi) + adcq 112(%rsi), %rdx + movq 632(%rdi), %rax + movq %rdx, 624(%rdi) + adcq 120(%rsi), %rax + movq 640(%rdi), %rdx + movq %rax, 632(%rdi) + adcq 128(%rsi), %rdx + movq 648(%rdi), %rax + movq %rdx, 640(%rdi) + adcq 136(%rsi), %rax + movq 656(%rdi), %rdx + movq %rax, 648(%rdi) + adcq 144(%rsi), %rdx + movq 664(%rdi), %rax + movq %rdx, 656(%rdi) + adcq 152(%rsi), %rax + movq 672(%rdi), %rdx + movq %rax, 664(%rdi) + adcq 160(%rsi), %rdx + movq 680(%rdi), %rax + movq %rdx, 672(%rdi) + adcq 168(%rsi), %rax + movq 688(%rdi), %rdx + movq %rax, 680(%rdi) + adcq 176(%rsi), %rdx + movq 696(%rdi), %rax + movq %rdx, 688(%rdi) + adcq 184(%rsi), %rax + movq 704(%rdi), %rdx + movq %rax, 696(%rdi) + adcq 192(%rsi), %rdx + movq 712(%rdi), %rax + movq %rdx, 704(%rdi) + adcq 200(%rsi), %rax + movq 720(%rdi), %rdx + movq %rax, 712(%rdi) + adcq 208(%rsi), %rdx + movq 728(%rdi), %rax + movq %rdx, 720(%rdi) + adcq 216(%rsi), %rax + movq 736(%rdi), %rdx + movq %rax, 728(%rdi) + adcq 224(%rsi), %rdx + movq 744(%rdi), %rax + movq %rdx, 736(%rdi) + adcq 232(%rsi), %rax + movq 752(%rdi), %rdx + movq %rax, 744(%rdi) + adcq 240(%rsi), %rdx + movq 760(%rdi), %rax + movq %rdx, 752(%rdi) + adcq 248(%rsi), %rax + movq 768(%rdi), %rdx + movq %rax, 760(%rdi) + adcq 256(%rsi), %rdx + movq %rdx, 768(%rdi) + adcq $0, %rcx + # Add to zero + movq 264(%rsi), %rdx + adcq $0, %rdx + movq 272(%rsi), %rax + movq %rdx, 776(%rdi) + adcq $0, %rax + movq 280(%rsi), %rdx + movq %rax, 784(%rdi) + adcq $0, %rdx + movq 288(%rsi), %rax + movq %rdx, 792(%rdi) + adcq $0, %rax + movq 296(%rsi), %rdx + movq %rax, 800(%rdi) + adcq $0, %rdx + movq 304(%rsi), %rax + movq %rdx, 808(%rdi) + adcq $0, %rax + movq 312(%rsi), %rdx + movq %rax, 816(%rdi) + adcq $0, %rdx + movq 320(%rsi), %rax + movq %rdx, 824(%rdi) + adcq $0, %rax + movq 328(%rsi), %rdx + movq %rax, 832(%rdi) + adcq $0, %rdx + movq 336(%rsi), %rax + movq %rdx, 840(%rdi) + adcq $0, %rax + movq 344(%rsi), %rdx + movq %rax, 848(%rdi) + adcq $0, %rdx + movq 352(%rsi), %rax + movq %rdx, 856(%rdi) + adcq $0, %rax + movq 360(%rsi), %rdx + movq %rax, 864(%rdi) + adcq $0, %rdx + movq 368(%rsi), %rax + movq %rdx, 872(%rdi) + adcq $0, %rax + movq 376(%rsi), %rdx + movq %rax, 880(%rdi) + adcq $0, %rdx + movq 384(%rsi), %rax + movq %rdx, 888(%rdi) + adcq $0, %rax + movq 392(%rsi), %rdx + movq %rax, 896(%rdi) + adcq $0, %rdx + movq 400(%rsi), %rax + movq %rdx, 904(%rdi) + adcq $0, %rax + movq 408(%rsi), %rdx + movq %rax, 912(%rdi) + adcq $0, %rdx + movq 416(%rsi), %rax + movq %rdx, 920(%rdi) + adcq $0, %rax + movq 424(%rsi), %rdx + movq %rax, 928(%rdi) + adcq $0, %rdx + movq 432(%rsi), %rax + movq %rdx, 936(%rdi) + adcq $0, %rax + movq 440(%rsi), %rdx + movq %rax, 944(%rdi) + adcq $0, %rdx + movq 448(%rsi), %rax + movq %rdx, 952(%rdi) + adcq $0, %rax + movq 456(%rsi), %rdx + movq %rax, 960(%rdi) + adcq $0, %rdx + movq 464(%rsi), %rax + movq %rdx, 968(%rdi) + adcq $0, %rax + movq 472(%rsi), %rdx + movq %rax, 976(%rdi) + adcq $0, %rdx + movq 480(%rsi), %rax + movq %rdx, 984(%rdi) + adcq $0, %rax + movq 488(%rsi), %rdx + movq %rax, 992(%rdi) + adcq $0, %rdx + movq 496(%rsi), %rax + movq %rdx, 1000(%rdi) + adcq $0, %rax + movq 504(%rsi), %rdx + movq %rax, 1008(%rdi) + adcq $0, %rdx + movq %rdx, 1016(%rdi) + addq $1304, %rsp + repz retq +#ifndef __APPLE__ +.size sp_4096_sqr_avx2_64,.-sp_4096_sqr_avx2_64 +#endif /* __APPLE__ */ /* Mul a by digit b into r. (r = a * b) * * r A single precision integer. @@ -28368,326 +33847,326 @@ sp_4096_cond_sub_avx2_64: _sp_4096_cond_sub_avx2_64: #endif /* __APPLE__ */ movq $0, %rax - movq (%rsi), %r8 movq (%rdx), %r10 + movq (%rsi), %r8 pextq %rcx, %r10, %r10 subq %r10, %r8 - movq 8(%rsi), %r9 movq 8(%rdx), %r10 + movq 8(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, (%rdi) sbbq %r10, %r9 - movq 16(%rsi), %r8 - movq 16(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 16(%rdx), %r8 + movq 16(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 8(%rdi) - sbbq %r10, %r8 - movq 24(%rsi), %r9 - movq 24(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 16(%rdi) - sbbq %r10, %r9 - movq 32(%rsi), %r8 + sbbq %r8, %r10 + movq 24(%rdx), %r9 + movq 24(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 16(%rdi) + sbbq %r9, %r8 movq 32(%rdx), %r10 + movq 32(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 24(%rdi) - sbbq %r10, %r8 - movq 40(%rsi), %r9 - movq 40(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 32(%rdi) + movq %r8, 24(%rdi) sbbq %r10, %r9 + movq 40(%rdx), %r8 + movq 40(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 32(%rdi) + sbbq %r8, %r10 + movq 48(%rdx), %r9 movq 48(%rsi), %r8 - movq 48(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 40(%rdi) - sbbq %r10, %r8 - movq 56(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 40(%rdi) + sbbq %r9, %r8 movq 56(%rdx), %r10 + movq 56(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 48(%rdi) sbbq %r10, %r9 - movq 64(%rsi), %r8 - movq 64(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 64(%rdx), %r8 + movq 64(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 56(%rdi) - sbbq %r10, %r8 - movq 72(%rsi), %r9 - movq 72(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 64(%rdi) - sbbq %r10, %r9 - movq 80(%rsi), %r8 + sbbq %r8, %r10 + movq 72(%rdx), %r9 + movq 72(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 64(%rdi) + sbbq %r9, %r8 movq 80(%rdx), %r10 + movq 80(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 72(%rdi) - sbbq %r10, %r8 - movq 88(%rsi), %r9 - movq 88(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 80(%rdi) + movq %r8, 72(%rdi) sbbq %r10, %r9 + movq 88(%rdx), %r8 + movq 88(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 80(%rdi) + sbbq %r8, %r10 + movq 96(%rdx), %r9 movq 96(%rsi), %r8 - movq 96(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 88(%rdi) - sbbq %r10, %r8 - movq 104(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 88(%rdi) + sbbq %r9, %r8 movq 104(%rdx), %r10 + movq 104(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 96(%rdi) sbbq %r10, %r9 - movq 112(%rsi), %r8 - movq 112(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 112(%rdx), %r8 + movq 112(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 104(%rdi) - sbbq %r10, %r8 - movq 120(%rsi), %r9 - movq 120(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 112(%rdi) - sbbq %r10, %r9 - movq 128(%rsi), %r8 + sbbq %r8, %r10 + movq 120(%rdx), %r9 + movq 120(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 112(%rdi) + sbbq %r9, %r8 movq 128(%rdx), %r10 + movq 128(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 120(%rdi) - sbbq %r10, %r8 - movq 136(%rsi), %r9 - movq 136(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 128(%rdi) + movq %r8, 120(%rdi) sbbq %r10, %r9 + movq 136(%rdx), %r8 + movq 136(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 128(%rdi) + sbbq %r8, %r10 + movq 144(%rdx), %r9 movq 144(%rsi), %r8 - movq 144(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 136(%rdi) - sbbq %r10, %r8 - movq 152(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 136(%rdi) + sbbq %r9, %r8 movq 152(%rdx), %r10 + movq 152(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 144(%rdi) sbbq %r10, %r9 - movq 160(%rsi), %r8 - movq 160(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 160(%rdx), %r8 + movq 160(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 152(%rdi) - sbbq %r10, %r8 - movq 168(%rsi), %r9 - movq 168(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 160(%rdi) - sbbq %r10, %r9 - movq 176(%rsi), %r8 + sbbq %r8, %r10 + movq 168(%rdx), %r9 + movq 168(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 160(%rdi) + sbbq %r9, %r8 movq 176(%rdx), %r10 + movq 176(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 168(%rdi) - sbbq %r10, %r8 - movq 184(%rsi), %r9 - movq 184(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 176(%rdi) + movq %r8, 168(%rdi) sbbq %r10, %r9 + movq 184(%rdx), %r8 + movq 184(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 176(%rdi) + sbbq %r8, %r10 + movq 192(%rdx), %r9 movq 192(%rsi), %r8 - movq 192(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 184(%rdi) - sbbq %r10, %r8 - movq 200(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 184(%rdi) + sbbq %r9, %r8 movq 200(%rdx), %r10 + movq 200(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 192(%rdi) sbbq %r10, %r9 - movq 208(%rsi), %r8 - movq 208(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 208(%rdx), %r8 + movq 208(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 200(%rdi) - sbbq %r10, %r8 - movq 216(%rsi), %r9 - movq 216(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 208(%rdi) - sbbq %r10, %r9 - movq 224(%rsi), %r8 + sbbq %r8, %r10 + movq 216(%rdx), %r9 + movq 216(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 208(%rdi) + sbbq %r9, %r8 movq 224(%rdx), %r10 + movq 224(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 216(%rdi) - sbbq %r10, %r8 - movq 232(%rsi), %r9 - movq 232(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 224(%rdi) + movq %r8, 216(%rdi) sbbq %r10, %r9 + movq 232(%rdx), %r8 + movq 232(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 224(%rdi) + sbbq %r8, %r10 + movq 240(%rdx), %r9 movq 240(%rsi), %r8 - movq 240(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 232(%rdi) - sbbq %r10, %r8 - movq 248(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 232(%rdi) + sbbq %r9, %r8 movq 248(%rdx), %r10 + movq 248(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 240(%rdi) sbbq %r10, %r9 - movq 256(%rsi), %r8 - movq 256(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 256(%rdx), %r8 + movq 256(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 248(%rdi) - sbbq %r10, %r8 - movq 264(%rsi), %r9 - movq 264(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 256(%rdi) - sbbq %r10, %r9 - movq 272(%rsi), %r8 + sbbq %r8, %r10 + movq 264(%rdx), %r9 + movq 264(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 256(%rdi) + sbbq %r9, %r8 movq 272(%rdx), %r10 + movq 272(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 264(%rdi) - sbbq %r10, %r8 - movq 280(%rsi), %r9 - movq 280(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 272(%rdi) + movq %r8, 264(%rdi) sbbq %r10, %r9 + movq 280(%rdx), %r8 + movq 280(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 272(%rdi) + sbbq %r8, %r10 + movq 288(%rdx), %r9 movq 288(%rsi), %r8 - movq 288(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 280(%rdi) - sbbq %r10, %r8 - movq 296(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 280(%rdi) + sbbq %r9, %r8 movq 296(%rdx), %r10 + movq 296(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 288(%rdi) sbbq %r10, %r9 - movq 304(%rsi), %r8 - movq 304(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 304(%rdx), %r8 + movq 304(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 296(%rdi) - sbbq %r10, %r8 - movq 312(%rsi), %r9 - movq 312(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 304(%rdi) - sbbq %r10, %r9 - movq 320(%rsi), %r8 + sbbq %r8, %r10 + movq 312(%rdx), %r9 + movq 312(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 304(%rdi) + sbbq %r9, %r8 movq 320(%rdx), %r10 + movq 320(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 312(%rdi) - sbbq %r10, %r8 - movq 328(%rsi), %r9 - movq 328(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 320(%rdi) + movq %r8, 312(%rdi) sbbq %r10, %r9 + movq 328(%rdx), %r8 + movq 328(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 320(%rdi) + sbbq %r8, %r10 + movq 336(%rdx), %r9 movq 336(%rsi), %r8 - movq 336(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 328(%rdi) - sbbq %r10, %r8 - movq 344(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 328(%rdi) + sbbq %r9, %r8 movq 344(%rdx), %r10 + movq 344(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 336(%rdi) sbbq %r10, %r9 - movq 352(%rsi), %r8 - movq 352(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 352(%rdx), %r8 + movq 352(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 344(%rdi) - sbbq %r10, %r8 - movq 360(%rsi), %r9 - movq 360(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 352(%rdi) - sbbq %r10, %r9 - movq 368(%rsi), %r8 + sbbq %r8, %r10 + movq 360(%rdx), %r9 + movq 360(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 352(%rdi) + sbbq %r9, %r8 movq 368(%rdx), %r10 + movq 368(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 360(%rdi) - sbbq %r10, %r8 - movq 376(%rsi), %r9 - movq 376(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 368(%rdi) + movq %r8, 360(%rdi) sbbq %r10, %r9 + movq 376(%rdx), %r8 + movq 376(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 368(%rdi) + sbbq %r8, %r10 + movq 384(%rdx), %r9 movq 384(%rsi), %r8 - movq 384(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 376(%rdi) - sbbq %r10, %r8 - movq 392(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 376(%rdi) + sbbq %r9, %r8 movq 392(%rdx), %r10 + movq 392(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 384(%rdi) sbbq %r10, %r9 - movq 400(%rsi), %r8 - movq 400(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 400(%rdx), %r8 + movq 400(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 392(%rdi) - sbbq %r10, %r8 - movq 408(%rsi), %r9 - movq 408(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 400(%rdi) - sbbq %r10, %r9 - movq 416(%rsi), %r8 + sbbq %r8, %r10 + movq 408(%rdx), %r9 + movq 408(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 400(%rdi) + sbbq %r9, %r8 movq 416(%rdx), %r10 + movq 416(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 408(%rdi) - sbbq %r10, %r8 - movq 424(%rsi), %r9 - movq 424(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 416(%rdi) + movq %r8, 408(%rdi) sbbq %r10, %r9 + movq 424(%rdx), %r8 + movq 424(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 416(%rdi) + sbbq %r8, %r10 + movq 432(%rdx), %r9 movq 432(%rsi), %r8 - movq 432(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 424(%rdi) - sbbq %r10, %r8 - movq 440(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 424(%rdi) + sbbq %r9, %r8 movq 440(%rdx), %r10 + movq 440(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 432(%rdi) sbbq %r10, %r9 - movq 448(%rsi), %r8 - movq 448(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 448(%rdx), %r8 + movq 448(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 440(%rdi) - sbbq %r10, %r8 - movq 456(%rsi), %r9 - movq 456(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 448(%rdi) - sbbq %r10, %r9 - movq 464(%rsi), %r8 + sbbq %r8, %r10 + movq 456(%rdx), %r9 + movq 456(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 448(%rdi) + sbbq %r9, %r8 movq 464(%rdx), %r10 + movq 464(%rsi), %r9 pextq %rcx, %r10, %r10 - movq %r9, 456(%rdi) - sbbq %r10, %r8 - movq 472(%rsi), %r9 - movq 472(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 464(%rdi) + movq %r8, 456(%rdi) sbbq %r10, %r9 + movq 472(%rdx), %r8 + movq 472(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 464(%rdi) + sbbq %r8, %r10 + movq 480(%rdx), %r9 movq 480(%rsi), %r8 - movq 480(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 472(%rdi) - sbbq %r10, %r8 - movq 488(%rsi), %r9 + pextq %rcx, %r9, %r9 + movq %r10, 472(%rdi) + sbbq %r9, %r8 movq 488(%rdx), %r10 + movq 488(%rsi), %r9 pextq %rcx, %r10, %r10 movq %r8, 480(%rdi) sbbq %r10, %r9 - movq 496(%rsi), %r8 - movq 496(%rdx), %r10 - pextq %rcx, %r10, %r10 + movq 496(%rdx), %r8 + movq 496(%rsi), %r10 + pextq %rcx, %r8, %r8 movq %r9, 488(%rdi) - sbbq %r10, %r8 - movq 504(%rsi), %r9 - movq 504(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 496(%rdi) - sbbq %r10, %r9 - movq %r9, 504(%rdi) + sbbq %r8, %r10 + movq 504(%rdx), %r9 + movq 504(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 496(%rdi) + sbbq %r9, %r8 + movq %r8, 504(%rdi) sbbq $0, %rax repz retq #ifndef __APPLE__ @@ -28710,390 +34189,392 @@ sp_4096_mul_d_avx2_64: .p2align 4 _sp_4096_mul_d_avx2_64: #endif /* __APPLE__ */ + movq %rdx, %rax # A[0] * B - xorq %r10, %r10 - mulxq (%rsi), %r8, %r9 - movq %r8, (%rdi) + movq %rax, %rdx + xorq %r11, %r11 + mulxq (%rsi), %r9, %r10 + movq %r9, (%rdi) # A[1] * B - mulxq 8(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 8(%rdi) - adoxq %rcx, %r8 + mulxq 8(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 8(%rdi) + adoxq %r8, %r9 # A[2] * B - mulxq 16(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 16(%rdi) - adoxq %rcx, %r9 + mulxq 16(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 16(%rdi) + adoxq %r8, %r10 # A[3] * B - mulxq 24(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 24(%rdi) - adoxq %rcx, %r8 + mulxq 24(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 24(%rdi) + adoxq %r8, %r9 # A[4] * B - mulxq 32(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 32(%rdi) - adoxq %rcx, %r9 + mulxq 32(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 32(%rdi) + adoxq %r8, %r10 # A[5] * B - mulxq 40(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 40(%rdi) - adoxq %rcx, %r8 + mulxq 40(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 40(%rdi) + adoxq %r8, %r9 # A[6] * B - mulxq 48(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 48(%rdi) - adoxq %rcx, %r9 + mulxq 48(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 48(%rdi) + adoxq %r8, %r10 # A[7] * B - mulxq 56(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 56(%rdi) - adoxq %rcx, %r8 + mulxq 56(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 56(%rdi) + adoxq %r8, %r9 # A[8] * B - mulxq 64(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 64(%rdi) - adoxq %rcx, %r9 + mulxq 64(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 64(%rdi) + adoxq %r8, %r10 # A[9] * B - mulxq 72(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 72(%rdi) - adoxq %rcx, %r8 + mulxq 72(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 72(%rdi) + adoxq %r8, %r9 # A[10] * B - mulxq 80(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 80(%rdi) - adoxq %rcx, %r9 + mulxq 80(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 80(%rdi) + adoxq %r8, %r10 # A[11] * B - mulxq 88(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 88(%rdi) - adoxq %rcx, %r8 + mulxq 88(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 88(%rdi) + adoxq %r8, %r9 # A[12] * B - mulxq 96(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 96(%rdi) - adoxq %rcx, %r9 + mulxq 96(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 96(%rdi) + adoxq %r8, %r10 # A[13] * B - mulxq 104(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 104(%rdi) - adoxq %rcx, %r8 + mulxq 104(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 104(%rdi) + adoxq %r8, %r9 # A[14] * B - mulxq 112(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 112(%rdi) - adoxq %rcx, %r9 + mulxq 112(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 112(%rdi) + adoxq %r8, %r10 # A[15] * B - mulxq 120(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 120(%rdi) - adoxq %rcx, %r8 + mulxq 120(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 120(%rdi) + adoxq %r8, %r9 # A[16] * B - mulxq 128(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 128(%rdi) - adoxq %rcx, %r9 + mulxq 128(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 128(%rdi) + adoxq %r8, %r10 # A[17] * B - mulxq 136(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 136(%rdi) - adoxq %rcx, %r8 + mulxq 136(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 136(%rdi) + adoxq %r8, %r9 # A[18] * B - mulxq 144(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 144(%rdi) - adoxq %rcx, %r9 + mulxq 144(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 144(%rdi) + adoxq %r8, %r10 # A[19] * B - mulxq 152(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 152(%rdi) - adoxq %rcx, %r8 + mulxq 152(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 152(%rdi) + adoxq %r8, %r9 # A[20] * B - mulxq 160(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 160(%rdi) - adoxq %rcx, %r9 + mulxq 160(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 160(%rdi) + adoxq %r8, %r10 # A[21] * B - mulxq 168(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 168(%rdi) - adoxq %rcx, %r8 + mulxq 168(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 168(%rdi) + adoxq %r8, %r9 # A[22] * B - mulxq 176(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 176(%rdi) - adoxq %rcx, %r9 + mulxq 176(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 176(%rdi) + adoxq %r8, %r10 # A[23] * B - mulxq 184(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 184(%rdi) - adoxq %rcx, %r8 + mulxq 184(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 184(%rdi) + adoxq %r8, %r9 # A[24] * B - mulxq 192(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 192(%rdi) - adoxq %rcx, %r9 + mulxq 192(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 192(%rdi) + adoxq %r8, %r10 # A[25] * B - mulxq 200(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 200(%rdi) - adoxq %rcx, %r8 + mulxq 200(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 200(%rdi) + adoxq %r8, %r9 # A[26] * B - mulxq 208(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 208(%rdi) - adoxq %rcx, %r9 + mulxq 208(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 208(%rdi) + adoxq %r8, %r10 # A[27] * B - mulxq 216(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 216(%rdi) - adoxq %rcx, %r8 + mulxq 216(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 216(%rdi) + adoxq %r8, %r9 # A[28] * B - mulxq 224(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 224(%rdi) - adoxq %rcx, %r9 + mulxq 224(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 224(%rdi) + adoxq %r8, %r10 # A[29] * B - mulxq 232(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 232(%rdi) - adoxq %rcx, %r8 + mulxq 232(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 232(%rdi) + adoxq %r8, %r9 # A[30] * B - mulxq 240(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 240(%rdi) - adoxq %rcx, %r9 + mulxq 240(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 240(%rdi) + adoxq %r8, %r10 # A[31] * B - mulxq 248(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 248(%rdi) - adoxq %rcx, %r8 + mulxq 248(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 248(%rdi) + adoxq %r8, %r9 # A[32] * B - mulxq 256(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 256(%rdi) - adoxq %rcx, %r9 + mulxq 256(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 256(%rdi) + adoxq %r8, %r10 # A[33] * B - mulxq 264(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 264(%rdi) - adoxq %rcx, %r8 + mulxq 264(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 264(%rdi) + adoxq %r8, %r9 # A[34] * B - mulxq 272(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 272(%rdi) - adoxq %rcx, %r9 + mulxq 272(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 272(%rdi) + adoxq %r8, %r10 # A[35] * B - mulxq 280(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 280(%rdi) - adoxq %rcx, %r8 + mulxq 280(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 280(%rdi) + adoxq %r8, %r9 # A[36] * B - mulxq 288(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 288(%rdi) - adoxq %rcx, %r9 + mulxq 288(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 288(%rdi) + adoxq %r8, %r10 # A[37] * B - mulxq 296(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 296(%rdi) - adoxq %rcx, %r8 + mulxq 296(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 296(%rdi) + adoxq %r8, %r9 # A[38] * B - mulxq 304(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 304(%rdi) - adoxq %rcx, %r9 + mulxq 304(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 304(%rdi) + adoxq %r8, %r10 # A[39] * B - mulxq 312(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 312(%rdi) - adoxq %rcx, %r8 + mulxq 312(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 312(%rdi) + adoxq %r8, %r9 # A[40] * B - mulxq 320(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 320(%rdi) - adoxq %rcx, %r9 + mulxq 320(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 320(%rdi) + adoxq %r8, %r10 # A[41] * B - mulxq 328(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 328(%rdi) - adoxq %rcx, %r8 + mulxq 328(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 328(%rdi) + adoxq %r8, %r9 # A[42] * B - mulxq 336(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 336(%rdi) - adoxq %rcx, %r9 + mulxq 336(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 336(%rdi) + adoxq %r8, %r10 # A[43] * B - mulxq 344(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 344(%rdi) - adoxq %rcx, %r8 + mulxq 344(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 344(%rdi) + adoxq %r8, %r9 # A[44] * B - mulxq 352(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 352(%rdi) - adoxq %rcx, %r9 + mulxq 352(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 352(%rdi) + adoxq %r8, %r10 # A[45] * B - mulxq 360(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 360(%rdi) - adoxq %rcx, %r8 + mulxq 360(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 360(%rdi) + adoxq %r8, %r9 # A[46] * B - mulxq 368(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 368(%rdi) - adoxq %rcx, %r9 + mulxq 368(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 368(%rdi) + adoxq %r8, %r10 # A[47] * B - mulxq 376(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 376(%rdi) - adoxq %rcx, %r8 + mulxq 376(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 376(%rdi) + adoxq %r8, %r9 # A[48] * B - mulxq 384(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 384(%rdi) - adoxq %rcx, %r9 + mulxq 384(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 384(%rdi) + adoxq %r8, %r10 # A[49] * B - mulxq 392(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 392(%rdi) - adoxq %rcx, %r8 + mulxq 392(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 392(%rdi) + adoxq %r8, %r9 # A[50] * B - mulxq 400(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 400(%rdi) - adoxq %rcx, %r9 + mulxq 400(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 400(%rdi) + adoxq %r8, %r10 # A[51] * B - mulxq 408(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 408(%rdi) - adoxq %rcx, %r8 + mulxq 408(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 408(%rdi) + adoxq %r8, %r9 # A[52] * B - mulxq 416(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 416(%rdi) - adoxq %rcx, %r9 + mulxq 416(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 416(%rdi) + adoxq %r8, %r10 # A[53] * B - mulxq 424(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 424(%rdi) - adoxq %rcx, %r8 + mulxq 424(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 424(%rdi) + adoxq %r8, %r9 # A[54] * B - mulxq 432(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 432(%rdi) - adoxq %rcx, %r9 + mulxq 432(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 432(%rdi) + adoxq %r8, %r10 # A[55] * B - mulxq 440(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 440(%rdi) - adoxq %rcx, %r8 + mulxq 440(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 440(%rdi) + adoxq %r8, %r9 # A[56] * B - mulxq 448(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 448(%rdi) - adoxq %rcx, %r9 + mulxq 448(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 448(%rdi) + adoxq %r8, %r10 # A[57] * B - mulxq 456(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 456(%rdi) - adoxq %rcx, %r8 + mulxq 456(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 456(%rdi) + adoxq %r8, %r9 # A[58] * B - mulxq 464(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 464(%rdi) - adoxq %rcx, %r9 + mulxq 464(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 464(%rdi) + adoxq %r8, %r10 # A[59] * B - mulxq 472(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 472(%rdi) - adoxq %rcx, %r8 + mulxq 472(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 472(%rdi) + adoxq %r8, %r9 # A[60] * B - mulxq 480(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 480(%rdi) - adoxq %rcx, %r9 + mulxq 480(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 480(%rdi) + adoxq %r8, %r10 # A[61] * B - mulxq 488(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 488(%rdi) - adoxq %rcx, %r8 + mulxq 488(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 488(%rdi) + adoxq %r8, %r9 # A[62] * B - mulxq 496(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 496(%rdi) - adoxq %rcx, %r9 + mulxq 496(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 496(%rdi) + adoxq %r8, %r10 # A[63] * B - mulxq 504(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - adoxq %rcx, %r8 - adcxq %r10, %r8 - movq %r9, 504(%rdi) - movq %r8, 512(%rdi) + mulxq 504(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + adoxq %r8, %r9 + adcxq %r11, %r9 + movq %r10, 504(%rdi) + movq %r9, 512(%rdi) repz retq #ifndef __APPLE__ .size sp_4096_mul_d_avx2_64,.-sp_4096_mul_d_avx2_64 @@ -29871,419 +35352,735 @@ _sp_4096_mont_reduce_avx2_64: push %r12 push %r13 push %r14 - movq %rdx, %rax + movq %rdx, %r8 xorq %r14, %r14 # i = 64 movq $64, %r9 movq (%rdi), %r13 + addq $256, %rdi xorq %r12, %r12 L_mont_loop_avx2_64: # mu = a[i] * mp movq %r13, %rdx - mulxq %rax, %rdx, %r8 movq %r13, %r10 + imulq %r8, %rdx + xorq %r12, %r12 # a[i+0] += m[0] * mu - mulxq (%rsi), %rcx, %r8 - movq 8(%rdi), %r13 - adcxq %rcx, %r10 - adoxq %r8, %r13 + mulxq (%rsi), %rax, %rcx + movq -248(%rdi), %r13 + adcxq %rax, %r10 + adoxq %rcx, %r13 # a[i+1] += m[1] * mu - mulxq 8(%rsi), %rcx, %r8 - movq 16(%rdi), %r10 - adcxq %rcx, %r13 - adoxq %r8, %r10 + mulxq 8(%rsi), %rax, %rcx + movq -240(%rdi), %r10 + adcxq %rax, %r13 + adoxq %rcx, %r10 # a[i+2] += m[2] * mu - mulxq 16(%rsi), %rcx, %r8 - movq 24(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 16(%rdi) + mulxq 16(%rsi), %rax, %rcx + movq -232(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -240(%rdi) # a[i+3] += m[3] * mu - mulxq 24(%rsi), %rcx, %r8 - movq 32(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 24(%rdi) + mulxq 24(%rsi), %rax, %rcx + movq -224(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -232(%rdi) # a[i+4] += m[4] * mu - mulxq 32(%rsi), %rcx, %r8 - movq 40(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 32(%rdi) + mulxq 32(%rsi), %rax, %rcx + movq -216(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -224(%rdi) # a[i+5] += m[5] * mu - mulxq 40(%rsi), %rcx, %r8 - movq 48(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 40(%rdi) + mulxq 40(%rsi), %rax, %rcx + movq -208(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -216(%rdi) # a[i+6] += m[6] * mu - mulxq 48(%rsi), %rcx, %r8 - movq 56(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 48(%rdi) + mulxq 48(%rsi), %rax, %rcx + movq -200(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -208(%rdi) # a[i+7] += m[7] * mu - mulxq 56(%rsi), %rcx, %r8 - movq 64(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 56(%rdi) + mulxq 56(%rsi), %rax, %rcx + movq -192(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -200(%rdi) # a[i+8] += m[8] * mu - mulxq 64(%rsi), %rcx, %r8 - movq 72(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 64(%rdi) + mulxq 64(%rsi), %rax, %rcx + movq -184(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -192(%rdi) # a[i+9] += m[9] * mu - mulxq 72(%rsi), %rcx, %r8 - movq 80(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 72(%rdi) + mulxq 72(%rsi), %rax, %rcx + movq -176(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -184(%rdi) # a[i+10] += m[10] * mu - mulxq 80(%rsi), %rcx, %r8 - movq 88(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 80(%rdi) + mulxq 80(%rsi), %rax, %rcx + movq -168(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -176(%rdi) # a[i+11] += m[11] * mu - mulxq 88(%rsi), %rcx, %r8 - movq 96(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 88(%rdi) + mulxq 88(%rsi), %rax, %rcx + movq -160(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -168(%rdi) # a[i+12] += m[12] * mu - mulxq 96(%rsi), %rcx, %r8 - movq 104(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 96(%rdi) + mulxq 96(%rsi), %rax, %rcx + movq -152(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -160(%rdi) # a[i+13] += m[13] * mu - mulxq 104(%rsi), %rcx, %r8 - movq 112(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 104(%rdi) + mulxq 104(%rsi), %rax, %rcx + movq -144(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -152(%rdi) # a[i+14] += m[14] * mu - mulxq 112(%rsi), %rcx, %r8 - movq 120(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 112(%rdi) + mulxq 112(%rsi), %rax, %rcx + movq -136(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -144(%rdi) # a[i+15] += m[15] * mu - mulxq 120(%rsi), %rcx, %r8 - movq 128(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 120(%rdi) + mulxq 120(%rsi), %rax, %rcx + movq -128(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -136(%rdi) # a[i+16] += m[16] * mu - mulxq 128(%rsi), %rcx, %r8 - movq 136(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 128(%rdi) + mulxq 128(%rsi), %rax, %rcx + movq -120(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -128(%rdi) # a[i+17] += m[17] * mu - mulxq 136(%rsi), %rcx, %r8 - movq 144(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 136(%rdi) + mulxq 136(%rsi), %rax, %rcx + movq -112(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -120(%rdi) # a[i+18] += m[18] * mu - mulxq 144(%rsi), %rcx, %r8 - movq 152(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 144(%rdi) + mulxq 144(%rsi), %rax, %rcx + movq -104(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -112(%rdi) # a[i+19] += m[19] * mu - mulxq 152(%rsi), %rcx, %r8 - movq 160(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 152(%rdi) + mulxq 152(%rsi), %rax, %rcx + movq -96(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -104(%rdi) # a[i+20] += m[20] * mu - mulxq 160(%rsi), %rcx, %r8 - movq 168(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 160(%rdi) + mulxq 160(%rsi), %rax, %rcx + movq -88(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -96(%rdi) # a[i+21] += m[21] * mu - mulxq 168(%rsi), %rcx, %r8 - movq 176(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 168(%rdi) + mulxq 168(%rsi), %rax, %rcx + movq -80(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -88(%rdi) # a[i+22] += m[22] * mu - mulxq 176(%rsi), %rcx, %r8 - movq 184(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 176(%rdi) + mulxq 176(%rsi), %rax, %rcx + movq -72(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -80(%rdi) # a[i+23] += m[23] * mu - mulxq 184(%rsi), %rcx, %r8 - movq 192(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 184(%rdi) + mulxq 184(%rsi), %rax, %rcx + movq -64(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -72(%rdi) # a[i+24] += m[24] * mu - mulxq 192(%rsi), %rcx, %r8 - movq 200(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 192(%rdi) + mulxq 192(%rsi), %rax, %rcx + movq -56(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -64(%rdi) # a[i+25] += m[25] * mu - mulxq 200(%rsi), %rcx, %r8 - movq 208(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 200(%rdi) + mulxq 200(%rsi), %rax, %rcx + movq -48(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -56(%rdi) # a[i+26] += m[26] * mu - mulxq 208(%rsi), %rcx, %r8 - movq 216(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 208(%rdi) + mulxq 208(%rsi), %rax, %rcx + movq -40(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -48(%rdi) # a[i+27] += m[27] * mu - mulxq 216(%rsi), %rcx, %r8 - movq 224(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 216(%rdi) + mulxq 216(%rsi), %rax, %rcx + movq -32(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -40(%rdi) # a[i+28] += m[28] * mu - mulxq 224(%rsi), %rcx, %r8 - movq 232(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 224(%rdi) + mulxq 224(%rsi), %rax, %rcx + movq -24(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -32(%rdi) # a[i+29] += m[29] * mu - mulxq 232(%rsi), %rcx, %r8 - movq 240(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 232(%rdi) + mulxq 232(%rsi), %rax, %rcx + movq -16(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -24(%rdi) # a[i+30] += m[30] * mu - mulxq 240(%rsi), %rcx, %r8 - movq 248(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 240(%rdi) + mulxq 240(%rsi), %rax, %rcx + movq -8(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, -16(%rdi) # a[i+31] += m[31] * mu - mulxq 248(%rsi), %rcx, %r8 - movq 256(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 248(%rdi) + mulxq 248(%rsi), %rax, %rcx + movq (%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, -8(%rdi) # a[i+32] += m[32] * mu - mulxq 256(%rsi), %rcx, %r8 - movq 264(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 256(%rdi) + mulxq 256(%rsi), %rax, %rcx + movq 8(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, (%rdi) # a[i+33] += m[33] * mu - mulxq 264(%rsi), %rcx, %r8 - movq 272(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 264(%rdi) + mulxq 264(%rsi), %rax, %rcx + movq 16(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 8(%rdi) # a[i+34] += m[34] * mu - mulxq 272(%rsi), %rcx, %r8 - movq 280(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 272(%rdi) + mulxq 272(%rsi), %rax, %rcx + movq 24(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 16(%rdi) # a[i+35] += m[35] * mu - mulxq 280(%rsi), %rcx, %r8 - movq 288(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 280(%rdi) + mulxq 280(%rsi), %rax, %rcx + movq 32(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 24(%rdi) # a[i+36] += m[36] * mu - mulxq 288(%rsi), %rcx, %r8 - movq 296(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 288(%rdi) + mulxq 288(%rsi), %rax, %rcx + movq 40(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 32(%rdi) # a[i+37] += m[37] * mu - mulxq 296(%rsi), %rcx, %r8 - movq 304(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 296(%rdi) + mulxq 296(%rsi), %rax, %rcx + movq 48(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 40(%rdi) # a[i+38] += m[38] * mu - mulxq 304(%rsi), %rcx, %r8 - movq 312(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 304(%rdi) + mulxq 304(%rsi), %rax, %rcx + movq 56(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 48(%rdi) # a[i+39] += m[39] * mu - mulxq 312(%rsi), %rcx, %r8 - movq 320(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 312(%rdi) + mulxq 312(%rsi), %rax, %rcx + movq 64(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 56(%rdi) # a[i+40] += m[40] * mu - mulxq 320(%rsi), %rcx, %r8 - movq 328(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 320(%rdi) + mulxq 320(%rsi), %rax, %rcx + movq 72(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 64(%rdi) # a[i+41] += m[41] * mu - mulxq 328(%rsi), %rcx, %r8 - movq 336(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 328(%rdi) + mulxq 328(%rsi), %rax, %rcx + movq 80(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 72(%rdi) # a[i+42] += m[42] * mu - mulxq 336(%rsi), %rcx, %r8 - movq 344(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 336(%rdi) + mulxq 336(%rsi), %rax, %rcx + movq 88(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 80(%rdi) # a[i+43] += m[43] * mu - mulxq 344(%rsi), %rcx, %r8 - movq 352(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 344(%rdi) + mulxq 344(%rsi), %rax, %rcx + movq 96(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 88(%rdi) # a[i+44] += m[44] * mu - mulxq 352(%rsi), %rcx, %r8 - movq 360(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 352(%rdi) + mulxq 352(%rsi), %rax, %rcx + movq 104(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 96(%rdi) # a[i+45] += m[45] * mu - mulxq 360(%rsi), %rcx, %r8 - movq 368(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 360(%rdi) + mulxq 360(%rsi), %rax, %rcx + movq 112(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 104(%rdi) # a[i+46] += m[46] * mu - mulxq 368(%rsi), %rcx, %r8 - movq 376(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 368(%rdi) + mulxq 368(%rsi), %rax, %rcx + movq 120(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 112(%rdi) # a[i+47] += m[47] * mu - mulxq 376(%rsi), %rcx, %r8 - movq 384(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 376(%rdi) + mulxq 376(%rsi), %rax, %rcx + movq 128(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 120(%rdi) # a[i+48] += m[48] * mu - mulxq 384(%rsi), %rcx, %r8 - movq 392(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 384(%rdi) + mulxq 384(%rsi), %rax, %rcx + movq 136(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 128(%rdi) # a[i+49] += m[49] * mu - mulxq 392(%rsi), %rcx, %r8 - movq 400(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 392(%rdi) + mulxq 392(%rsi), %rax, %rcx + movq 144(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 136(%rdi) # a[i+50] += m[50] * mu - mulxq 400(%rsi), %rcx, %r8 - movq 408(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 400(%rdi) + mulxq 400(%rsi), %rax, %rcx + movq 152(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 144(%rdi) # a[i+51] += m[51] * mu - mulxq 408(%rsi), %rcx, %r8 - movq 416(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 408(%rdi) + mulxq 408(%rsi), %rax, %rcx + movq 160(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 152(%rdi) # a[i+52] += m[52] * mu - mulxq 416(%rsi), %rcx, %r8 - movq 424(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 416(%rdi) + mulxq 416(%rsi), %rax, %rcx + movq 168(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 160(%rdi) # a[i+53] += m[53] * mu - mulxq 424(%rsi), %rcx, %r8 - movq 432(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 424(%rdi) + mulxq 424(%rsi), %rax, %rcx + movq 176(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 168(%rdi) # a[i+54] += m[54] * mu - mulxq 432(%rsi), %rcx, %r8 - movq 440(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 432(%rdi) + mulxq 432(%rsi), %rax, %rcx + movq 184(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 176(%rdi) # a[i+55] += m[55] * mu - mulxq 440(%rsi), %rcx, %r8 - movq 448(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 440(%rdi) + mulxq 440(%rsi), %rax, %rcx + movq 192(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 184(%rdi) # a[i+56] += m[56] * mu - mulxq 448(%rsi), %rcx, %r8 - movq 456(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 448(%rdi) + mulxq 448(%rsi), %rax, %rcx + movq 200(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 192(%rdi) # a[i+57] += m[57] * mu - mulxq 456(%rsi), %rcx, %r8 - movq 464(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 456(%rdi) + mulxq 456(%rsi), %rax, %rcx + movq 208(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 200(%rdi) # a[i+58] += m[58] * mu - mulxq 464(%rsi), %rcx, %r8 - movq 472(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 464(%rdi) + mulxq 464(%rsi), %rax, %rcx + movq 216(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 208(%rdi) # a[i+59] += m[59] * mu - mulxq 472(%rsi), %rcx, %r8 - movq 480(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 472(%rdi) + mulxq 472(%rsi), %rax, %rcx + movq 224(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 216(%rdi) # a[i+60] += m[60] * mu - mulxq 480(%rsi), %rcx, %r8 - movq 488(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 480(%rdi) + mulxq 480(%rsi), %rax, %rcx + movq 232(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 224(%rdi) # a[i+61] += m[61] * mu - mulxq 488(%rsi), %rcx, %r8 - movq 496(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 488(%rdi) + mulxq 488(%rsi), %rax, %rcx + movq 240(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 232(%rdi) # a[i+62] += m[62] * mu - mulxq 496(%rsi), %rcx, %r8 - movq 504(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 496(%rdi) + mulxq 496(%rsi), %rax, %rcx + movq 248(%rdi), %r11 + adcxq %rax, %r10 + adoxq %rcx, %r11 + movq %r10, 240(%rdi) # a[i+63] += m[63] * mu - mulxq 504(%rsi), %rcx, %r8 - movq 512(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 504(%rdi) + mulxq 504(%rsi), %rax, %rcx + movq 256(%rdi), %r10 + adcxq %rax, %r11 + adoxq %rcx, %r10 + movq %r11, 248(%rdi) adcxq %r14, %r10 + movq %r10, 256(%rdi) movq %r12, %r14 - movq %r10, 512(%rdi) adoxq %r12, %r14 adcxq %r12, %r14 - # i -= 1 + # a += 1 addq $8, %rdi - decq %r9 + # i -= 1 + subq $1, %r9 jnz L_mont_loop_avx2_64 - movq %r13, (%rdi) + subq $256, %rdi negq %r14 - movq %r14, %rcx - movq %rsi, %rdx - movq %rdi, %rsi + movq %rdi, %r8 subq $512, %rdi -#ifndef __APPLE__ - callq sp_4096_cond_sub_avx2_64@plt -#else - callq _sp_4096_cond_sub_avx2_64 -#endif /* __APPLE__ */ + movq (%rsi), %rcx + movq %r13, %rdx + pextq %r14, %rcx, %rcx + subq %rcx, %rdx + movq 8(%rsi), %rcx + movq 8(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, (%rdi) + sbbq %rcx, %rax + movq 16(%rsi), %rdx + movq 16(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 8(%rdi) + sbbq %rdx, %rcx + movq 24(%rsi), %rax + movq 24(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 16(%rdi) + sbbq %rax, %rdx + movq 32(%rsi), %rcx + movq 32(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 24(%rdi) + sbbq %rcx, %rax + movq 40(%rsi), %rdx + movq 40(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 32(%rdi) + sbbq %rdx, %rcx + movq 48(%rsi), %rax + movq 48(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 40(%rdi) + sbbq %rax, %rdx + movq 56(%rsi), %rcx + movq 56(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 48(%rdi) + sbbq %rcx, %rax + movq 64(%rsi), %rdx + movq 64(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 56(%rdi) + sbbq %rdx, %rcx + movq 72(%rsi), %rax + movq 72(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 64(%rdi) + sbbq %rax, %rdx + movq 80(%rsi), %rcx + movq 80(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 72(%rdi) + sbbq %rcx, %rax + movq 88(%rsi), %rdx + movq 88(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 80(%rdi) + sbbq %rdx, %rcx + movq 96(%rsi), %rax + movq 96(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 88(%rdi) + sbbq %rax, %rdx + movq 104(%rsi), %rcx + movq 104(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 96(%rdi) + sbbq %rcx, %rax + movq 112(%rsi), %rdx + movq 112(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 104(%rdi) + sbbq %rdx, %rcx + movq 120(%rsi), %rax + movq 120(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 112(%rdi) + sbbq %rax, %rdx + movq 128(%rsi), %rcx + movq 128(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 120(%rdi) + sbbq %rcx, %rax + movq 136(%rsi), %rdx + movq 136(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 128(%rdi) + sbbq %rdx, %rcx + movq 144(%rsi), %rax + movq 144(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 136(%rdi) + sbbq %rax, %rdx + movq 152(%rsi), %rcx + movq 152(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 144(%rdi) + sbbq %rcx, %rax + movq 160(%rsi), %rdx + movq 160(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 152(%rdi) + sbbq %rdx, %rcx + movq 168(%rsi), %rax + movq 168(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 160(%rdi) + sbbq %rax, %rdx + movq 176(%rsi), %rcx + movq 176(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 168(%rdi) + sbbq %rcx, %rax + movq 184(%rsi), %rdx + movq 184(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 176(%rdi) + sbbq %rdx, %rcx + movq 192(%rsi), %rax + movq 192(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 184(%rdi) + sbbq %rax, %rdx + movq 200(%rsi), %rcx + movq 200(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 192(%rdi) + sbbq %rcx, %rax + movq 208(%rsi), %rdx + movq 208(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 200(%rdi) + sbbq %rdx, %rcx + movq 216(%rsi), %rax + movq 216(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 208(%rdi) + sbbq %rax, %rdx + movq 224(%rsi), %rcx + movq 224(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 216(%rdi) + sbbq %rcx, %rax + movq 232(%rsi), %rdx + movq 232(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 224(%rdi) + sbbq %rdx, %rcx + movq 240(%rsi), %rax + movq 240(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 232(%rdi) + sbbq %rax, %rdx + movq 248(%rsi), %rcx + movq 248(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 240(%rdi) + sbbq %rcx, %rax + movq 256(%rsi), %rdx + movq 256(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 248(%rdi) + sbbq %rdx, %rcx + movq 264(%rsi), %rax + movq 264(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 256(%rdi) + sbbq %rax, %rdx + movq 272(%rsi), %rcx + movq 272(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 264(%rdi) + sbbq %rcx, %rax + movq 280(%rsi), %rdx + movq 280(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 272(%rdi) + sbbq %rdx, %rcx + movq 288(%rsi), %rax + movq 288(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 280(%rdi) + sbbq %rax, %rdx + movq 296(%rsi), %rcx + movq 296(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 288(%rdi) + sbbq %rcx, %rax + movq 304(%rsi), %rdx + movq 304(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 296(%rdi) + sbbq %rdx, %rcx + movq 312(%rsi), %rax + movq 312(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 304(%rdi) + sbbq %rax, %rdx + movq 320(%rsi), %rcx + movq 320(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 312(%rdi) + sbbq %rcx, %rax + movq 328(%rsi), %rdx + movq 328(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 320(%rdi) + sbbq %rdx, %rcx + movq 336(%rsi), %rax + movq 336(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 328(%rdi) + sbbq %rax, %rdx + movq 344(%rsi), %rcx + movq 344(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 336(%rdi) + sbbq %rcx, %rax + movq 352(%rsi), %rdx + movq 352(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 344(%rdi) + sbbq %rdx, %rcx + movq 360(%rsi), %rax + movq 360(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 352(%rdi) + sbbq %rax, %rdx + movq 368(%rsi), %rcx + movq 368(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 360(%rdi) + sbbq %rcx, %rax + movq 376(%rsi), %rdx + movq 376(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 368(%rdi) + sbbq %rdx, %rcx + movq 384(%rsi), %rax + movq 384(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 376(%rdi) + sbbq %rax, %rdx + movq 392(%rsi), %rcx + movq 392(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 384(%rdi) + sbbq %rcx, %rax + movq 400(%rsi), %rdx + movq 400(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 392(%rdi) + sbbq %rdx, %rcx + movq 408(%rsi), %rax + movq 408(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 400(%rdi) + sbbq %rax, %rdx + movq 416(%rsi), %rcx + movq 416(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 408(%rdi) + sbbq %rcx, %rax + movq 424(%rsi), %rdx + movq 424(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 416(%rdi) + sbbq %rdx, %rcx + movq 432(%rsi), %rax + movq 432(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 424(%rdi) + sbbq %rax, %rdx + movq 440(%rsi), %rcx + movq 440(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 432(%rdi) + sbbq %rcx, %rax + movq 448(%rsi), %rdx + movq 448(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 440(%rdi) + sbbq %rdx, %rcx + movq 456(%rsi), %rax + movq 456(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 448(%rdi) + sbbq %rax, %rdx + movq 464(%rsi), %rcx + movq 464(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 456(%rdi) + sbbq %rcx, %rax + movq 472(%rsi), %rdx + movq 472(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 464(%rdi) + sbbq %rdx, %rcx + movq 480(%rsi), %rax + movq 480(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 472(%rdi) + sbbq %rax, %rdx + movq 488(%rsi), %rcx + movq 488(%r8), %rax + pextq %r14, %rcx, %rcx + movq %rdx, 480(%rdi) + sbbq %rcx, %rax + movq 496(%rsi), %rdx + movq 496(%r8), %rcx + pextq %r14, %rdx, %rdx + movq %rax, 488(%rdi) + sbbq %rdx, %rcx + movq 504(%rsi), %rax + movq 504(%r8), %rdx + pextq %r14, %rax, %rax + movq %rcx, 496(%rdi) + sbbq %rax, %rdx + movq %rdx, 504(%rdi) pop %r14 pop %r13 pop %r12 @@ -31892,6 +37689,7 @@ sp_256_add_4: .p2align 4 _sp_256_add_4: #endif /* __APPLE__ */ + # Add movq (%rsi), %rcx xorq %rax, %rax addq (%rdx), %rcx @@ -32313,30 +38111,32 @@ sp_256_mul_d_avx2_4: .p2align 4 _sp_256_mul_d_avx2_4: #endif /* __APPLE__ */ + movq %rdx, %rax # A[0] * B - xorq %r10, %r10 - mulxq (%rsi), %r8, %r9 - movq %r8, (%rdi) + movq %rax, %rdx + xorq %r11, %r11 + mulxq (%rsi), %r9, %r10 + movq %r9, (%rdi) # A[1] * B - mulxq 8(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 8(%rdi) - adoxq %rcx, %r8 + mulxq 8(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 8(%rdi) + adoxq %r8, %r9 # A[2] * B - mulxq 16(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 16(%rdi) - adoxq %rcx, %r9 + mulxq 16(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 16(%rdi) + adoxq %r8, %r10 # A[3] * B - mulxq 24(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - adoxq %rcx, %r8 - adcxq %r10, %r8 - movq %r9, 24(%rdi) - movq %r8, 32(%rdi) + mulxq 24(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + adoxq %r8, %r9 + adcxq %r11, %r9 + movq %r10, 24(%rdi) + movq %r9, 32(%rdi) repz retq #ifndef __APPLE__ .size sp_256_mul_d_avx2_4,.-sp_256_mul_d_avx2_4 @@ -33701,6 +39501,7 @@ sp_384_add_6: .p2align 4 _sp_384_add_6: #endif /* __APPLE__ */ + # Add movq (%rsi), %rcx xorq %rax, %rax addq (%rdx), %rcx @@ -34169,60 +39970,6 @@ _sp_384_mul_avx2_6: #ifndef __APPLE__ .size sp_384_mul_avx2_6,.-sp_384_mul_avx2_6 #endif /* __APPLE__ */ -/* Conditionally subtract b from a using the mask m. - * m is -1 to subtract and 0 when not copying. - * - * r A single precision number representing condition subtract result. - * a A single precision number to subtract from. - * b A single precision number to subtract. - * m Mask value to apply. - */ -#ifndef __APPLE__ -.globl sp_384_cond_sub_avx2_6 -.type sp_384_cond_sub_avx2_6,@function -.align 16 -sp_384_cond_sub_avx2_6: -#else -.globl _sp_384_cond_sub_avx2_6 -.p2align 4 -_sp_384_cond_sub_avx2_6: -#endif /* __APPLE__ */ - movq $0, %rax - movq (%rsi), %r8 - movq (%rdx), %r10 - pextq %rcx, %r10, %r10 - subq %r10, %r8 - movq 8(%rsi), %r9 - movq 8(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, (%rdi) - sbbq %r10, %r9 - movq 16(%rsi), %r8 - movq 16(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 8(%rdi) - sbbq %r10, %r8 - movq 24(%rsi), %r9 - movq 24(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 16(%rdi) - sbbq %r10, %r9 - movq 32(%rsi), %r8 - movq 32(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r9, 24(%rdi) - sbbq %r10, %r8 - movq 40(%rsi), %r9 - movq 40(%rdx), %r10 - pextq %rcx, %r10, %r10 - movq %r8, 32(%rdi) - sbbq %r10, %r9 - movq %r9, 40(%rdi) - sbbq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_384_cond_sub_avx2_6,.-sp_384_cond_sub_avx2_6 -#endif /* __APPLE__ */ #ifdef HAVE_INTEL_AVX2 /* Reduce the number back to 384 bits using Montgomery reduction. * @@ -34242,73 +39989,308 @@ _sp_384_mont_reduce_order_avx2_6: #endif /* __APPLE__ */ push %r12 push %r13 - push %r14 movq %rdx, %rax - xorq %r14, %r14 - # i = 6 - movq $6, %r9 - movq (%rdi), %r13 - xorq %r12, %r12 + xorq %r13, %r13 + movq (%rdi), %r12 + xorq %r11, %r11 L_mont_loop_order_avx2_6: # mu = a[i] * mp - movq %r13, %rdx - mulxq %rax, %rdx, %r8 - movq %r13, %r10 + movq %r12, %rdx + movq %r12, %r9 + imulq %rax, %rdx + xorq %r11, %r11 # a[i+0] += m[0] * mu mulxq (%rsi), %rcx, %r8 - movq 8(%rdi), %r13 - adcxq %rcx, %r10 - adoxq %r8, %r13 + movq 8(%rdi), %r12 + adcxq %rcx, %r9 + adoxq %r8, %r12 # a[i+1] += m[1] * mu mulxq 8(%rsi), %rcx, %r8 - movq 16(%rdi), %r10 - adcxq %rcx, %r13 - adoxq %r8, %r10 + movq 16(%rdi), %r9 + adcxq %rcx, %r12 + adoxq %r8, %r9 # a[i+2] += m[2] * mu mulxq 16(%rsi), %rcx, %r8 - movq 24(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 16(%rdi) + movq 24(%rdi), %r10 + adcxq %rcx, %r9 + adoxq %r8, %r10 + movq %r9, 16(%rdi) # a[i+3] += m[3] * mu mulxq 24(%rsi), %rcx, %r8 - movq 32(%rdi), %r10 - adcxq %rcx, %r11 - adoxq %r8, %r10 - movq %r11, 24(%rdi) + movq 32(%rdi), %r9 + adcxq %rcx, %r10 + adoxq %r8, %r9 + movq %r10, 24(%rdi) # a[i+4] += m[4] * mu mulxq 32(%rsi), %rcx, %r8 - movq 40(%rdi), %r11 - adcxq %rcx, %r10 - adoxq %r8, %r11 - movq %r10, 32(%rdi) + movq 40(%rdi), %r10 + adcxq %rcx, %r9 + adoxq %r8, %r10 + movq %r9, 32(%rdi) # a[i+5] += m[5] * mu mulxq 40(%rsi), %rcx, %r8 - movq 48(%rdi), %r10 - adcxq %rcx, %r11 + movq 48(%rdi), %r9 + adcxq %rcx, %r10 + adoxq %r8, %r9 + movq %r10, 40(%rdi) + adcxq %r13, %r9 + movq %r9, 48(%rdi) + movq %r11, %r13 + adoxq %r11, %r13 + adcxq %r11, %r13 + # mu = a[i] * mp + movq %r12, %rdx + movq %r12, %r9 + imulq %rax, %rdx + xorq %r11, %r11 + # a[i+0] += m[0] * mu + mulxq (%rsi), %rcx, %r8 + movq 16(%rdi), %r12 + adcxq %rcx, %r9 + adoxq %r8, %r12 + # a[i+1] += m[1] * mu + mulxq 8(%rsi), %rcx, %r8 + movq 24(%rdi), %r9 + adcxq %rcx, %r12 + adoxq %r8, %r9 + # a[i+2] += m[2] * mu + mulxq 16(%rsi), %rcx, %r8 + movq 32(%rdi), %r10 + adcxq %rcx, %r9 adoxq %r8, %r10 - movq %r11, 40(%rdi) - adcxq %r14, %r10 - movq %r12, %r14 + movq %r9, 24(%rdi) + # a[i+3] += m[3] * mu + mulxq 24(%rsi), %rcx, %r8 + movq 40(%rdi), %r9 + adcxq %rcx, %r10 + adoxq %r8, %r9 + movq %r10, 32(%rdi) + # a[i+4] += m[4] * mu + mulxq 32(%rsi), %rcx, %r8 + movq 48(%rdi), %r10 + adcxq %rcx, %r9 + adoxq %r8, %r10 + movq %r9, 40(%rdi) + # a[i+5] += m[5] * mu + mulxq 40(%rsi), %rcx, %r8 + movq 56(%rdi), %r9 + adcxq %rcx, %r10 + adoxq %r8, %r9 movq %r10, 48(%rdi) - adoxq %r12, %r14 - adcxq %r12, %r14 - # i -= 1 - addq $8, %rdi - decq %r9 - jnz L_mont_loop_order_avx2_6 - movq %r13, (%rdi) - negq %r14 - movq %r14, %rcx - movq %rsi, %rdx - movq %rdi, %rsi - subq $48, %rdi -#ifndef __APPLE__ - callq sp_384_cond_sub_avx2_6@plt -#else - callq _sp_384_cond_sub_avx2_6 -#endif /* __APPLE__ */ - pop %r14 + adcxq %r13, %r9 + movq %r9, 56(%rdi) + movq %r11, %r13 + adoxq %r11, %r13 + adcxq %r11, %r13 + # mu = a[i] * mp + movq %r12, %rdx + movq %r12, %r9 + imulq %rax, %rdx + xorq %r11, %r11 + # a[i+0] += m[0] * mu + mulxq (%rsi), %rcx, %r8 + movq 24(%rdi), %r12 + adcxq %rcx, %r9 + adoxq %r8, %r12 + # a[i+1] += m[1] * mu + mulxq 8(%rsi), %rcx, %r8 + movq 32(%rdi), %r9 + adcxq %rcx, %r12 + adoxq %r8, %r9 + # a[i+2] += m[2] * mu + mulxq 16(%rsi), %rcx, %r8 + movq 40(%rdi), %r10 + adcxq %rcx, %r9 + adoxq %r8, %r10 + movq %r9, 32(%rdi) + # a[i+3] += m[3] * mu + mulxq 24(%rsi), %rcx, %r8 + movq 48(%rdi), %r9 + adcxq %rcx, %r10 + adoxq %r8, %r9 + movq %r10, 40(%rdi) + # a[i+4] += m[4] * mu + mulxq 32(%rsi), %rcx, %r8 + movq 56(%rdi), %r10 + adcxq %rcx, %r9 + adoxq %r8, %r10 + movq %r9, 48(%rdi) + # a[i+5] += m[5] * mu + mulxq 40(%rsi), %rcx, %r8 + movq 64(%rdi), %r9 + adcxq %rcx, %r10 + adoxq %r8, %r9 + movq %r10, 56(%rdi) + adcxq %r13, %r9 + movq %r9, 64(%rdi) + movq %r11, %r13 + adoxq %r11, %r13 + adcxq %r11, %r13 + # mu = a[i] * mp + movq %r12, %rdx + movq %r12, %r9 + imulq %rax, %rdx + xorq %r11, %r11 + # a[i+0] += m[0] * mu + mulxq (%rsi), %rcx, %r8 + movq 32(%rdi), %r12 + adcxq %rcx, %r9 + adoxq %r8, %r12 + # a[i+1] += m[1] * mu + mulxq 8(%rsi), %rcx, %r8 + movq 40(%rdi), %r9 + adcxq %rcx, %r12 + adoxq %r8, %r9 + # a[i+2] += m[2] * mu + mulxq 16(%rsi), %rcx, %r8 + movq 48(%rdi), %r10 + adcxq %rcx, %r9 + adoxq %r8, %r10 + movq %r9, 40(%rdi) + # a[i+3] += m[3] * mu + mulxq 24(%rsi), %rcx, %r8 + movq 56(%rdi), %r9 + adcxq %rcx, %r10 + adoxq %r8, %r9 + movq %r10, 48(%rdi) + # a[i+4] += m[4] * mu + mulxq 32(%rsi), %rcx, %r8 + movq 64(%rdi), %r10 + adcxq %rcx, %r9 + adoxq %r8, %r10 + movq %r9, 56(%rdi) + # a[i+5] += m[5] * mu + mulxq 40(%rsi), %rcx, %r8 + movq 72(%rdi), %r9 + adcxq %rcx, %r10 + adoxq %r8, %r9 + movq %r10, 64(%rdi) + adcxq %r13, %r9 + movq %r9, 72(%rdi) + movq %r11, %r13 + adoxq %r11, %r13 + adcxq %r11, %r13 + # mu = a[i] * mp + movq %r12, %rdx + movq %r12, %r9 + imulq %rax, %rdx + xorq %r11, %r11 + # a[i+0] += m[0] * mu + mulxq (%rsi), %rcx, %r8 + movq 40(%rdi), %r12 + adcxq %rcx, %r9 + adoxq %r8, %r12 + # a[i+1] += m[1] * mu + mulxq 8(%rsi), %rcx, %r8 + movq 48(%rdi), %r9 + adcxq %rcx, %r12 + adoxq %r8, %r9 + # a[i+2] += m[2] * mu + mulxq 16(%rsi), %rcx, %r8 + movq 56(%rdi), %r10 + adcxq %rcx, %r9 + adoxq %r8, %r10 + movq %r9, 48(%rdi) + # a[i+3] += m[3] * mu + mulxq 24(%rsi), %rcx, %r8 + movq 64(%rdi), %r9 + adcxq %rcx, %r10 + adoxq %r8, %r9 + movq %r10, 56(%rdi) + # a[i+4] += m[4] * mu + mulxq 32(%rsi), %rcx, %r8 + movq 72(%rdi), %r10 + adcxq %rcx, %r9 + adoxq %r8, %r10 + movq %r9, 64(%rdi) + # a[i+5] += m[5] * mu + mulxq 40(%rsi), %rcx, %r8 + movq 80(%rdi), %r9 + adcxq %rcx, %r10 + adoxq %r8, %r9 + movq %r10, 72(%rdi) + adcxq %r13, %r9 + movq %r9, 80(%rdi) + movq %r11, %r13 + adoxq %r11, %r13 + adcxq %r11, %r13 + # mu = a[i] * mp + movq %r12, %rdx + movq %r12, %r9 + imulq %rax, %rdx + xorq %r11, %r11 + # a[i+0] += m[0] * mu + mulxq (%rsi), %rcx, %r8 + movq 48(%rdi), %r12 + adcxq %rcx, %r9 + adoxq %r8, %r12 + # a[i+1] += m[1] * mu + mulxq 8(%rsi), %rcx, %r8 + movq 56(%rdi), %r9 + adcxq %rcx, %r12 + adoxq %r8, %r9 + # a[i+2] += m[2] * mu + mulxq 16(%rsi), %rcx, %r8 + movq 64(%rdi), %r10 + adcxq %rcx, %r9 + adoxq %r8, %r10 + movq %r9, 56(%rdi) + # a[i+3] += m[3] * mu + mulxq 24(%rsi), %rcx, %r8 + movq 72(%rdi), %r9 + adcxq %rcx, %r10 + adoxq %r8, %r9 + movq %r10, 64(%rdi) + # a[i+4] += m[4] * mu + mulxq 32(%rsi), %rcx, %r8 + movq 80(%rdi), %r10 + adcxq %rcx, %r9 + adoxq %r8, %r10 + movq %r9, 72(%rdi) + # a[i+5] += m[5] * mu + mulxq 40(%rsi), %rcx, %r8 + movq 88(%rdi), %r9 + adcxq %rcx, %r10 + adoxq %r8, %r9 + movq %r10, 80(%rdi) + adcxq %r13, %r9 + movq %r9, 88(%rdi) + movq %r11, %r13 + adoxq %r11, %r13 + adcxq %r11, %r13 + negq %r13 + movq %rdi, %rax + addq $48, %rdi + movq (%rsi), %r8 + movq %r12, %rdx + pextq %r13, %r8, %r8 + subq %r8, %rdx + movq 8(%rsi), %r8 + movq 8(%rdi), %rcx + pextq %r13, %r8, %r8 + movq %rdx, (%rax) + sbbq %r8, %rcx + movq 16(%rsi), %rdx + movq 16(%rdi), %r8 + pextq %r13, %rdx, %rdx + movq %rcx, 8(%rax) + sbbq %rdx, %r8 + movq 24(%rsi), %rcx + movq 24(%rdi), %rdx + pextq %r13, %rcx, %rcx + movq %r8, 16(%rax) + sbbq %rcx, %rdx + movq 32(%rsi), %r8 + movq 32(%rdi), %rcx + pextq %r13, %r8, %r8 + movq %rdx, 24(%rax) + sbbq %r8, %rcx + movq 40(%rsi), %rdx + movq 40(%rdi), %r8 + pextq %r13, %rdx, %rdx + movq %rcx, 32(%rax) + sbbq %rdx, %r8 + movq %r8, 40(%rax) pop %r13 pop %r12 repz retq @@ -34629,30 +40611,78 @@ sp_384_sub_in_place_6: .p2align 4 _sp_384_sub_in_place_6: #endif /* __APPLE__ */ - movq (%rdi), %rdx xorq %rax, %rax - subq (%rsi), %rdx - movq 8(%rdi), %rcx - movq %rdx, (%rdi) - sbbq 8(%rsi), %rcx - movq 16(%rdi), %rdx - movq %rcx, 8(%rdi) - sbbq 16(%rsi), %rdx - movq 24(%rdi), %rcx - movq %rdx, 16(%rdi) - sbbq 24(%rsi), %rcx - movq 32(%rdi), %rdx - movq %rcx, 24(%rdi) - sbbq 32(%rsi), %rdx - movq 40(%rdi), %rcx - movq %rdx, 32(%rdi) - sbbq 40(%rsi), %rcx - movq %rcx, 40(%rdi) + movq (%rsi), %rdx + movq 8(%rsi), %rcx + movq 16(%rsi), %r8 + movq 24(%rsi), %r9 + movq 32(%rsi), %r10 + movq 40(%rsi), %r11 + subq %rdx, (%rdi) + sbbq %rcx, 8(%rdi) + sbbq %r8, 16(%rdi) + sbbq %r9, 24(%rdi) + sbbq %r10, 32(%rdi) + sbbq %r11, 40(%rdi) sbbq $0, %rax repz retq #ifndef __APPLE__ .size sp_384_sub_in_place_6,.-sp_384_sub_in_place_6 #endif /* __APPLE__ */ +/* Conditionally subtract b from a using the mask m. + * m is -1 to subtract and 0 when not copying. + * + * r A single precision number representing condition subtract result. + * a A single precision number to subtract from. + * b A single precision number to subtract. + * m Mask value to apply. + */ +#ifndef __APPLE__ +.globl sp_384_cond_sub_avx2_6 +.type sp_384_cond_sub_avx2_6,@function +.align 16 +sp_384_cond_sub_avx2_6: +#else +.globl _sp_384_cond_sub_avx2_6 +.p2align 4 +_sp_384_cond_sub_avx2_6: +#endif /* __APPLE__ */ + movq $0, %rax + movq (%rdx), %r10 + movq (%rsi), %r8 + pextq %rcx, %r10, %r10 + subq %r10, %r8 + movq 8(%rdx), %r10 + movq 8(%rsi), %r9 + pextq %rcx, %r10, %r10 + movq %r8, (%rdi) + sbbq %r10, %r9 + movq 16(%rdx), %r8 + movq 16(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 8(%rdi) + sbbq %r8, %r10 + movq 24(%rdx), %r9 + movq 24(%rsi), %r8 + pextq %rcx, %r9, %r9 + movq %r10, 16(%rdi) + sbbq %r9, %r8 + movq 32(%rdx), %r10 + movq 32(%rsi), %r9 + pextq %rcx, %r10, %r10 + movq %r8, 24(%rdi) + sbbq %r10, %r9 + movq 40(%rdx), %r8 + movq 40(%rsi), %r10 + pextq %rcx, %r8, %r8 + movq %r9, 32(%rdi) + sbbq %r8, %r10 + movq %r10, 40(%rdi) + sbbq $0, %rax + repz retq +#ifndef __APPLE__ +.size sp_384_cond_sub_avx2_6,.-sp_384_cond_sub_avx2_6 +#endif /* __APPLE__ */ /* Mul a by digit b into r. (r = a * b) * * r A single precision integer. @@ -34737,42 +40767,44 @@ sp_384_mul_d_avx2_6: .p2align 4 _sp_384_mul_d_avx2_6: #endif /* __APPLE__ */ + movq %rdx, %rax # A[0] * B - xorq %r10, %r10 - mulxq (%rsi), %r8, %r9 - movq %r8, (%rdi) + movq %rax, %rdx + xorq %r11, %r11 + mulxq (%rsi), %r9, %r10 + movq %r9, (%rdi) # A[1] * B - mulxq 8(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 8(%rdi) - adoxq %rcx, %r8 + mulxq 8(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 8(%rdi) + adoxq %r8, %r9 # A[2] * B - mulxq 16(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 16(%rdi) - adoxq %rcx, %r9 + mulxq 16(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 16(%rdi) + adoxq %r8, %r10 # A[3] * B - mulxq 24(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - movq %r9, 24(%rdi) - adoxq %rcx, %r8 + mulxq 24(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + movq %r10, 24(%rdi) + adoxq %r8, %r9 # A[4] * B - mulxq 32(%rsi), %rax, %rcx - movq %r10, %r9 - adcxq %rax, %r8 - movq %r8, 32(%rdi) - adoxq %rcx, %r9 + mulxq 32(%rsi), %rcx, %r8 + movq %r11, %r10 + adcxq %rcx, %r9 + movq %r9, 32(%rdi) + adoxq %r8, %r10 # A[5] * B - mulxq 40(%rsi), %rax, %rcx - movq %r10, %r8 - adcxq %rax, %r9 - adoxq %rcx, %r8 - adcxq %r10, %r8 - movq %r9, 40(%rdi) - movq %r8, 48(%rdi) + mulxq 40(%rsi), %rcx, %r8 + movq %r11, %r9 + adcxq %rcx, %r10 + adoxq %r8, %r9 + adcxq %r11, %r9 + movq %r10, 40(%rdi) + movq %r9, 48(%rdi) repz retq #ifndef __APPLE__ .size sp_384_mul_d_avx2_6,.-sp_384_mul_d_avx2_6