diff --git a/.travis.yml b/.travis.yml index 37fe211e4..20d7f4889 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,8 +24,12 @@ env: BUILDOPTIONS="--test-vs-mtest=333333 --mtest-real-rand" - | BUILDOPTIONS="--with-low-mp" + - | + BUILDOPTIONS="--with-low-mp --cflags=-DLTM_USE_FASTER_VERSIONS" - | BUILDOPTIONS="--with-m64 --with-m32 --with-mx32" + - | + BUILDOPTIONS="--with-m64 --with-m32 --with-mx32 --cflags=-DLTM_USE_FASTER_VERSIONS" after_failure: - cat test_*.log diff --git a/bn_mp_balance_mul.c b/bn_mp_balance_mul.c new file mode 100644 index 000000000..4b05d165f --- /dev/null +++ b/bn_mp_balance_mul.c @@ -0,0 +1,94 @@ +#include "tommath_private.h" +#ifdef BN_MP_BALANCE_MUL_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + + +#if ( (defined LTM_USE_FASTER_VERSIONS) && (defined BN_MP_KARATSUBA_MUL_C) ) +/* single-digit multiplication with the smaller number as the single-digit */ +int mp_balance_mul(const mp_int *a, const mp_int *b, mp_int *c) +{ + int e, count, len_a, len_b, nblocks, i, j, bsize; + mp_int a0, tmp, A, B, r; + + len_a = a->used; + len_b = b->used; + + nblocks = MAX(a->used, b->used) / MIN(a->used, b->used); + bsize = MIN(a->used, b->used) ; + e = MP_OKAY; + + if ((e = mp_init_size(&a0, bsize + 2)) != MP_OKAY) { + return e; + } + if ((e = mp_init_multi(&tmp, &r, NULL)) != MP_OKAY) { + mp_clear(&a0); + return e; + } + + /* Make sure that A is the larger one*/ + if (len_a < len_b) { + B = *a; + A = *b; + } else { + A = *a; + B = *b; + } + + for (i = 0, j=0; i < nblocks; i++) { + /* Cut a slice off of a */ + a0.used = 0; + for (count = 0; count < bsize; count++) { + a0.dp[count] = A.dp[ j++ ]; + a0.used++; + } + /* Multiply with b */ + if ((e = mp_mul(&a0, &B, &tmp)) != MP_OKAY) { + goto LBL_ERR; + } + /* Shift tmp to the correct position */ + if ((e = mp_lshd(&tmp, bsize * i)) != MP_OKAY) { + goto LBL_ERR; + } + /* Add to output. No carry needed */ + if ((e = mp_add(&r, &tmp, &r)) != MP_OKAY) { + goto LBL_ERR; + } + } + /* The left-overs; there are always left-overs */ + if (j < A.used) { + a0.used = 0; + for (count = 0; j < A.used; count++) { + a0.dp[count] = A.dp[ j++ ]; + a0.used++; + } + if ((e = mp_mul(&a0, &B, &tmp)) != MP_OKAY) { + goto LBL_ERR; + } + if ((e = mp_lshd(&tmp, bsize * i)) != MP_OKAY) { + goto LBL_ERR; + } + if ((e = mp_add(&r, &tmp, &r)) != MP_OKAY) { + goto LBL_ERR; + } + } + + mp_exch(&r,c); +LBL_ERR: + mp_clear_multi(&a0, &tmp, &r,NULL); + return e; +} +#endif +#endif +/* ref: \$Format:\%D$ */ +/* git commit: \$Format:\%H$ */ +/* commit time: \$Format:\%ai$ */ diff --git a/bn_mp_mul.c b/bn_mp_mul.c index f83b1b75a..4560e787c 100644 --- a/bn_mp_mul.c +++ b/bn_mp_mul.c @@ -16,7 +16,42 @@ int mp_mul(const mp_int *a, const mp_int *b, mp_int *c) { int res, neg; +#if ( ((defined LTM_USE_FASTER_VERSIONS) && (defined BN_MP_BALANCE_MUL_C)) && (defined BN_MP_KARATSUBA_MUL_C) ) + int len_b, len_a; +#endif neg = (a->sign == b->sign) ? MP_ZPOS : MP_NEG; + /* + TODO: Assumes that nobody uses Toom-Cook-3 without Toom-Cook-2 (Karatsuba) + */ +#if ( ((defined LTM_USE_FASTER_VERSIONS) && (defined BN_MP_BALANCE_MUL_C)) && (defined BN_MP_KARATSUBA_MUL_C) ) + len_a = a->used; + len_b = b->used; + + if (len_a == len_b) { + goto LBL_GO_ON; + } + + /* + * Check sizes. The smaller one needs to be larger than the Karatsuba cut-off. + * The bigger one needs to be at least about one KARATSUBA_MUL_CUTOFF bigger to make some + * sense, but it depends on architecture, OS and position of the planets, so YMMV. + */ + if (MIN(len_a, len_b) < KARATSUBA_MUL_CUTOFF + || ((MAX(len_a, len_b)) / 2) < KARATSUBA_MUL_CUTOFF) { + goto LBL_GO_ON; + } + /* + * Not much effect was observed below a ratio of 1:2, but YMMV. + */ + if (MAX(len_a, len_b) / MIN(len_a, len_b) < 2) { + goto LBL_GO_ON; + } + + res = mp_balance_mul(a,b,c); + goto LBL_END; + +LBL_GO_ON: +#endif /* use Toom-Cook? */ #ifdef BN_MP_TOOM_MUL_C @@ -54,6 +89,9 @@ int mp_mul(const mp_int *a, const mp_int *b, mp_int *c) #endif } } +#if ( ((defined LTM_USE_FASTER_VERSIONS) && (defined BN_MP_BALANCE_MUL_C)) && (defined BN_MP_KARATSUBA_MUL_C) ) +LBL_END: +#endif c->sign = (c->used > 0) ? neg : MP_ZPOS; return res; } diff --git a/bn_mp_n_root_ex.c b/bn_mp_n_root_ex.c index ebc08ba50..6992f0284 100644 --- a/bn_mp_n_root_ex.c +++ b/bn_mp_n_root_ex.c @@ -12,20 +12,507 @@ * SPDX-License-Identifier: Unlicense */ -/* find the n'th root of an integer +/* + * Find the n'th root of an integer. * * Result found such that (c)**b <= a and (c+1)**b > a * - * This algorithm uses Newton's approximation - * x[i+1] = x[i] - f(x[i])/f'(x[i]) - * which will find the root in log(N) time where - * each step involves a fair bit. This is not meant to - * find huge roots [square and cube, etc]. */ +#if (( (defined LTM_USE_FASTER_VERSIONS) || (defined LTM_USE_FASTER_NTH_ROOT)) ) +/* TODO: needs a benchmark script and be put in bncore.c */ +static const int NTHROOT_NEWTON_HALLEY_CUTOFF = 100000; + +/* + On a system with Gnu LibC > 4 you can use + __builtin_clz() or the assembler command BSR + (Intel) but let me asure you: the function + floor_log2() will not be the bottleneck here. +*/ +static inline int floor_log2(mp_digit value) +{ + int r = 0; + while ((value >>= 1) != 0) { + r++; + } + return r; +} +/* + Extra version for int needed because mp_digit is + a) unsigned + b) can be any size between 8 and 64 bits + Two version with the same code, just different + input types seems silly but all the ways known to + me than can work around that are either complicated + or dependend on compiler specifics or are ugly or + all of the above. + An example for "all of the above": + #define FLOOR_ILOG2(T) \ + int floor_ilog2_##T(T value) { \ + int r = 0; \ + while ((value >>= 1) != 0) { \ + r++; \ + } \ + return r; \ + } + FLOOR_ILOG2(int) + FLOOR_ILOG2(mp_digit) +*/ + +/* + Here, "value" will not be negative, so it is, in theory, + possible to use the function above by casting "int" to + "mp_digit" but "mp_digit" can be smaller than "int", much + smaller. + */ +static inline int floor_ilog2(int value) +{ + int r = 0; + while ((value >>= 1) != 0) { + r++; + } + return r; +} +/* + The cut-off between Newton's method and bisection is at + about ln(x)/(ln ln (x)) * 1.2. + Floating point methods are not available, so a rough + approximation must do. + By taking the bitcount of the number as floor(log_2(x)) + and, together with ln(x) ~ floor(log2(x)) * log(2) + implemented as 69/100 * floor(log2(x)), we can get + a sufficiently good approximation. + This snippet assumes "int" is at least 16 bit wide. + TODO: check if it is possible to use mp_word instead + which is guaranteed to be at least 16 bit wide +*/ +#include +static int recurrence_bisection_cutoff(int value) +{ + int lnx, lnlnx; + + /* + such small values should have been handled by a nth-root + implementation with native integers + */ + if (value < 8) { + return 1; + } + + /* ln(x) ~ floor(log2(x)) * log(2) */ + if (value > ((INT_MAX / 69))) { + /* + if "value" is so big that a multiplication + with 69 overflows we can safely spend + two digits of accuracy for a better sleep. + */ + lnx = (value / 100) * 69; + } else { + lnx = ((69 * value) / 100); + } + /* ln ln x */ + lnlnx = floor_ilog2(lnx); + /* cannot overflow anymore here */ + lnlnx = ((69 * lnlnx) / 100); + + lnx = lnx / lnlnx; + /* floor(ln(x)/(ln ln (x))) < floor(fln2(x)/(fln2 fln2 (x))) + 1 for x >= 8 */ + lnx += 1; + /* apply twiddle factor */ + /* cannot overflow */ + lnx = ((12 * lnx) / 10); + return lnx; +} + +/* + Compute log_2(b) bits of a^(1/b) or all of them with a binary search method +*/ +static int bisection(mp_int *a, mp_digit b, mp_int *c, int cutoff, int rootsize) +{ + mp_int low, high, mid, midpow; + int e, comp, i = 0; + + /* force at least one run */ + if (cutoff == 0) { + cutoff = 1; + } + + if ((e = mp_init_multi(&low, &high, &mid, &midpow, NULL)) != MP_OKAY) { + return e; + } + if ((e = mp_2expt(&high, rootsize)) != MP_OKAY) { + goto LTM_ERR_FULL_BIS; + } + if ((e = mp_2expt(&low, rootsize - 2)) != MP_OKAY) { + goto LTM_ERR_FULL_BIS; + } + while (mp_cmp(&low, &high) == MP_LT) { + if (i++ == cutoff) { + mp_exch(&high, c); + goto LTM_ERR_FULL_BIS; + } + if ((e = mp_add(&low, &high, &mid)) != MP_OKAY) { + goto LTM_ERR_FULL_BIS; + } + if ((e = mp_div_2(&mid, &mid)) != MP_OKAY) { + goto LTM_ERR_FULL_BIS; + } + mp_expt_d(&mid, b, &midpow); + comp = mp_cmp(&midpow, a); + if (mp_cmp(&low, &mid) == MP_LT && comp == MP_LT) { + mp_exch(&low, &mid); + } else if (mp_cmp(&high, &mid) == MP_GT && comp == MP_GT) { + mp_exch(&high, &mid); + } else { + mp_exch(&mid, c); + goto LTM_ERR_FULL_BIS; + } + } + if ((e = mp_add_d(&mid, 1, &mid)) != MP_OKAY) { + goto LTM_ERR_FULL_BIS; + } + mp_exch(&mid, c); +LTM_ERR_FULL_BIS: + mp_clear_multi(&low, &high, &mid, &midpow, NULL); + return e; +} + +static int halley(mp_int *a,mp_digit b,mp_int *c, int cutoff, int rootsize) +{ + mp_int xi, t1, t2, nom, den, amb, apb; + int e = MP_OKAY; + + if ((e = mp_init_multi(&xi, &t1, &t2, &nom, &den, &amb, &apb, NULL)) != MP_OKAY) { + goto LTM_T3; + } + + if ((e = bisection(a, b, &xi, cutoff, rootsize)) != MP_OKAY) { + goto LTM_T3; + } + + if ((e = mp_mul_d(a, b - 1, &amb)) != MP_OKAY) { + goto LTM_T3; + } + if ((e = mp_mul_2(a, &apb)) != MP_OKAY) { + goto LTM_T3; + } + if ((e = mp_add(&amb, &apb, &apb)) != MP_OKAY) { + goto LTM_T3; + } + while (mp_cmp(&xi, &t1) != MP_EQ) { + if ((e = mp_copy(&xi, &t1)) != MP_OKAY) { + return e; + } + if ((e = mp_expt_d(&xi, b, &t2)) != MP_OKAY) { + goto LTM_T3; + } + if ((e = mp_mul_d(&t2, b - 1, &nom)) != MP_OKAY) { + goto LTM_T3; + } + if ((e = mp_add(&apb, &nom, &nom)) != MP_OKAY) { + goto LTM_T3; + } + if ((e = mp_mul(&xi, &nom, &nom)) != MP_OKAY) { + goto LTM_T3; + } + /* TODO: check for overflow of b+1? */ + if ((e = mp_mul_d(&t2, b + 1, &t2)) != MP_OKAY) { + goto LTM_T3; + } + if ((e = mp_add(&amb, &t2, &den)) != MP_OKAY) { + goto LTM_T3; + } + if ((e = mp_div(&nom, &den, &xi, NULL)) != MP_OKAY) { + goto LTM_T3; + } + } + mp_exch(&xi, c); +LTM_T3: + mp_clear_multi(&xi, &t1, &t2, &nom, &den, &amb, &apb, NULL); + return e; +} + +static int newton(mp_int *a, mp_digit b, mp_int *c, int cutoff, int rootsize) +{ + mp_int xi, t1, t2; + int e = MP_OKAY; + + if ((e = mp_init_multi(&xi, &t1, &t2, NULL)) != MP_OKAY) { + return e; + } + if ((e = bisection(a, b, &t1, cutoff, rootsize)) != MP_OKAY) { + goto LTM_ERR_NEWTON; + } + if ((e = mp_add_d(&t1, 1, &xi)) != MP_OKAY) { + goto LTM_ERR_NEWTON; + } + while (mp_cmp(&t1, &xi) == MP_LT) { + if ((e = mp_copy(&t1, &xi)) != MP_OKAY) { + goto LTM_ERR_NEWTON; + } + if ((e = mp_mul_d(&xi, b - 1, &t2)) != MP_OKAY) { + goto LTM_ERR_NEWTON; + } + if ((e = mp_expt_d(&xi, b - 1, &t1)) != MP_OKAY) { + goto LTM_ERR_NEWTON; + } + if ((e = mp_div(a, &t1, &t1, NULL)) != MP_OKAY) { + goto LTM_ERR_NEWTON; + } + if ((e = mp_add(&t1, &t2, &t1)) != MP_OKAY) { + goto LTM_ERR_NEWTON; + } + if ((e = mp_div_d(&t1, b, &t1, NULL)) != MP_OKAY) { + goto LTM_ERR_NEWTON; + } + } + mp_exch(&xi, c); +LTM_ERR_NEWTON: + mp_clear_multi(&xi, &t1, &t2, NULL); + return e; +} + +#ifdef LTM_USE_SMALL_NTH_ROOT +/* + Using native types for single limbs is faster by + several magnitudes. +*/ +static mp_word small_pow(mp_word x, mp_digit n) +{ + mp_word r; + r = (mp_word)1; + while (n != 0) { + if (n & 1) { + r *= x; + } + x *= x; + n >>= 1; + } + return r; +} + +static mp_word floor_log2_word(mp_word value) +{ + mp_word r = 0; + while ((value >>= 1) != 0) { + r++; + } + return r; +} + +static mp_digit small_nthroot(mp_digit a, mp_digit b) +{ + mp_word x0; + mp_word xn,x1,A,B; + + /* no checks, assuming caller had done them all */ + + A = (mp_word)(a); + B = (mp_word)(b); + + x0 = (mp_word)(1) << ((floor_log2_word(A) / B) + 1); + + do { + x1 = x0; + xn = small_pow(x1,b); + x0 = (x1 *(((B+1)*A) + ((B-1)*xn))) / ((B-1)*A + (B+1)*xn); + } while (x1 != x0); + + /* + Unproven: correction should not be necessary + if the startvalue is bigger than the root + */ + xn = small_pow(x0,b); + if (xn > (mp_word)a) { + x0--; + for (;;) { + xn = small_pow(x0,b); + if (xn <= (mp_word)a) { + break; + } + x0--; + } + } else if (xn < (mp_word)a) { + x0++; + for (;;) { + xn = small_pow(x0,b); + if (xn >= (mp_word)a) { + break; + } + x0++; + } + x0--; + } + return (mp_digit)x0; +} +#endif +int mp_n_root_ex(const mp_int *a, mp_digit b, mp_int *c, int fast) +{ + mp_int A; +#ifndef LTM_I_TRUST_THE_RABBIT + mp_int t1; + int cmp; +#endif + int e = MP_OKAY, ilog2, neg, rootsize, cutoff, even_faster; + + /* + * Checks, balances and shortcuts + * + * if b = 0 -> MP_VAL division by zero + * if b even and a neg. -> MP_VAL non-real result + * if a = 0 and b > 0 -> 0 + * if a = 0 and b < 0 -> n/a b is unsigned + * if a = 1 -> 1 + * if a > 0 and b < 0 -> n/a b is unsigned + * if b > log_2(a) -> 1 + */ + + if (b == 0) { + return MP_VAL; + } + + if (b == 1) { + if ((e = mp_copy(a, c)) != MP_OKAY) { + return e; + } + return MP_OKAY; + } + if (b == 2) { + return mp_sqrt(a, c); + } + + /* TODO: check if an exception for unity is sensible */ + if ((a->used == 1) && (a->dp[0] == 1)) { + mp_set(c, 1); + if (a->sign == MP_NEG && ((b & 1) == 0)) { + c->sign = MP_NEG; + } + return MP_OKAY; + } + + if ((a->sign == MP_NEG) && ((b & 1) == 0)) { + return MP_VAL; + } + + /* The type "mp_digit" can be bigger than int */ + if (sizeof(mp_digit) > sizeof(int) && b > INT_MAX) { + /* In that case "b" is bigger than log_2(x), hence floor(x^(1/b)) = 1 */ + mp_set(c, 1); + c->sign = a->sign; + return MP_OKAY; + } + + if (mp_iszero(a)) { + mp_zero(c); + return MP_OKAY; + } + +#ifdef LTM_USE_SMALL_NTH_ROOT + if (a->used == 1) { + ilog2 = small_nthroot(a->dp[0], b); + mp_set(c,ilog2); + return MP_OKAY; + } +#endif + + A = *a; + neg = a->sign; + A.sign = MP_ZPOS; + + ilog2 = mp_count_bits(a); + + if (ilog2 < (int)(b)) { + mp_set(c, 1uL); + c->sign = neg; + return MP_OKAY; + } + + rootsize = (ilog2/(int)(b)) + 1; + cutoff = floor_log2(b); + + /* to avoid warning now and for later extensions */ + if (fast == 0) { + fast = 1; + } + + if (fast == 1) { + even_faster = recurrence_bisection_cutoff(ilog2); + if (b < (mp_digit)even_faster) { + if (ilog2 > NTHROOT_NEWTON_HALLEY_CUTOFF) { + if ((e = halley(&A, b, c, cutoff, rootsize)) != MP_OKAY) { + return e; + } + } else { + if ((e = newton(&A, b, c, cutoff, rootsize)) != MP_OKAY) { + return e; + } + } + } else { + if ((e = bisection(&A, b, c, -1, rootsize)) != MP_OKAY) { + return e; + } + } + } else { + if ((e = bisection(&A, b, c, -1, rootsize)) != MP_OKAY) { + return e; + } + } +#ifndef LTM_I_TRUST_THE_RABBIT + if ((e = mp_init(&t1)) != MP_OKAY) { + return e; + } + cmp = mp_cmp(c, &A); + if (cmp == MP_GT) { + if ((e = mp_sub_d(c, 1u, c)) != MP_OKAY) { + goto LTM_ERR; + } + for (;;) { + if ((e = mp_expt_d(c, b, &t1)) != MP_OKAY) { + goto LTM_ERR; + } + cmp = mp_cmp(&t1, &A); + if (cmp != MP_GT) { + break; + } + if ((e = mp_sub_d(c, 1u, c)) != MP_OKAY) { + goto LTM_ERR; + } + } + } else if (cmp == MP_LT) { + if ((e = mp_add_d(c, 1u, c)) != MP_OKAY) { + goto LTM_ERR; + } + for (;;) { + if ((e = mp_expt_d(c, b, &t1)) != MP_OKAY) { + goto LTM_ERR; + } + cmp = mp_cmp(&t1, &A); + if (cmp != MP_LT) { + break; + } + if ((e = mp_add_d(c, 1u, c)) != MP_OKAY) { + goto LTM_ERR; + } + } + /* Does overshoot in contrast to the other branch above */ + if (cmp != MP_EQ) { + if ((e = mp_sub_d(c, 1u, c)) != MP_OKAY) { + goto LTM_ERR; + } + } + } + +LTM_ERR: + mp_clear(&t1); +#endif + c->sign = neg; + return e; +} +#else int mp_n_root_ex(const mp_int *a, mp_digit b, mp_int *c, int fast) { mp_int t1, t2, t3, a_; - int res; + int res, cmp; + int ilog2; /* input must be positive if b is even */ if (((b & 1u) == 0u) && (a->sign == MP_NEG)) { @@ -48,8 +535,29 @@ int mp_n_root_ex(const mp_int *a, mp_digit b, mp_int *c, int fast) a_ = *a; a_.sign = MP_ZPOS; +#if 0 /* t2 = 2 */ mp_set(&t2, 2uL); +#endif + ilog2 = mp_count_bits(a); + if (ilog2 < (int)b) { + mp_set(c, 1uL); + c->sign = a->sign; + res = MP_OKAY; + goto LBL_T3; + } + + ilog2 = (int)( ( (mp_digit) ilog2 ) / b ); + if (ilog2 == 0) { + mp_set(c, 1uL); + c->sign = a->sign; + res = MP_OKAY; + goto LBL_T3; + } + /* Start value must be larger than root */ + if (( res = mp_2expt(&t2,ilog2 + 2)) != MP_OKAY) { + goto LBL_T3; + } do { /* t1 = t2 */ @@ -92,11 +600,29 @@ int mp_n_root_ex(const mp_int *a, mp_digit b, mp_int *c, int fast) } while (mp_cmp(&t1, &t2) != MP_EQ); /* result can be off by a few so check */ + /* Overshoot by one if root is smaller */ + for (;;) { + if ((res = mp_expt_d_ex(&t1, b, &t2, fast)) != MP_OKAY) { + goto LBL_T3; + } + cmp = mp_cmp(&t2, &a_); + if (cmp == MP_EQ) { + res = MP_OKAY; + goto LBL_T3; + } + if (cmp == MP_LT) { + if ((res = mp_add_d(&t1, 1uL, &t1)) != MP_OKAY) { + goto LBL_T3; + } + } else { + break; + } + } + /* correct overshoot from above or from recurrence */ for (;;) { if ((res = mp_expt_d_ex(&t1, b, &t2, fast)) != MP_OKAY) { goto LBL_T3; } - if (mp_cmp(&t2, &a_) == MP_GT) { if ((res = mp_sub_d(&t1, 1uL, &t1)) != MP_OKAY) { goto LBL_T3; @@ -122,6 +648,9 @@ int mp_n_root_ex(const mp_int *a, mp_digit b, mp_int *c, int fast) mp_clear(&t1); return res; } + +#endif + #endif /* ref: $Format:%D$ */ diff --git a/bn_mp_radix_size.c b/bn_mp_radix_size.c index 4dc06eb22..ea50cb18e 100644 --- a/bn_mp_radix_size.c +++ b/bn_mp_radix_size.c @@ -12,7 +12,395 @@ * SPDX-License-Identifier: Unlicense */ -/* returns size of ASCII reprensentation */ +/* returns size of ASCII representation */ +#if ( (defined LTM_USE_FASTER_VERSIONS) || (defined LTM_USE_FASTER_RADIX_SIZE)) +/* + Overestimate the amount of memory needed for the number-to-string conversions. + The results for powers-of-two are exact but it will overestimate the actual + amount by up to 1 character for all other bases with the exception of MP_16BIT + where the overestimate is up to to 2 characters for all those other bases if + the "int" type has more than 16 bits. +*/ + +/* + Tables of {0, log_2([1..64])} times 2^p where p is the scale + factor defined in LTM_RADIX_SIZE_SCALE. + + The tables have been computed with GP/PARI 2.9.4 with the + x86-64/GMP-5.1.3 kernel and (unnecessary) 100 decimal digits + precision. The fractional parts of the results after the + multiplication by 2^p have been discarded (floor(x)). + + The number that measures the number of the digits of the bignum is + of type "int" which is at least 16 bits large and is 32 bit on the + architectures common at the time of writing. If you have hard- or + software that has a different size, please feel free to contact the + author, adding another table can be done quite quickly! + + A table for a 64 bit large "int" is already included but commented out. + */ + +/* + All table entries are of the type "mp_word" with the exception of the one for + MP-64BIT. We use the macro + MP_SET_XLONG(func_name, type) + defined in tommath_private.h to ease our workload. + + The following two macros expand to: + + static int s_set_mp_digit(mp_int *a, mp_digit b) {...} + + and + + static int s_set_mp_word(mp_int *a, mp_word b) {...} + + respectively + */ +#ifdef MP_64BIT +/* We cannot use mp_set() because it uses only DIGIT_BIT = 60 but need 61 bits */ +static MP_SET_XLONG(s_set_mp_digit, mp_digit) +#else +static MP_SET_XLONG(s_set_mp_word, mp_word) +#endif +/* + We do not really know how large/small "int" is and "mp_set_int()" uses + "long", a type that might not be native. + + It expands to: + + static int s_set_int(mp_int *a, int b) {...} +*/ +static MP_SET_XLONG(s_set_int, int) +/* + With the same reasoning as above... + */ +static int s_get_int(const mp_int *a) +{ + int int_size, digit_size, digits_needed; + unsigned int res; + mp_word tmp; + + if (a->used == 0) { + return 0; + } + + int_size = ((int)sizeof(int) * CHAR_BIT); + digit_size = ((int)sizeof(mp_digit) * CHAR_BIT); + + if (int_size <= digit_size) { + res = (unsigned int) DIGIT(a, 0); + } else { + digits_needed = MIN(a->used, ((int_size + DIGIT_BIT - 1) / DIGIT_BIT)) - 1; + tmp = DIGIT(a, digits_needed); + while (--digits_needed >= 0) { + tmp = (tmp << DIGIT_BIT) | DIGIT(a, digits_needed); + } + res = (unsigned int)tmp; + } + /* + Casting "unsigned int" to the smaller "int" without further ado + is possible because all input is guaranteed to fit into an "int". + */ + return (int) res; +} + +/* *INDENT-OFF* */ +#ifdef MP_8BIT +#define LTM_RADIX_SIZE_SCALE 29 +#define LTM_RADIX_SIZE_HALF_TABLE_SCALE 16 +static const mp_word logbases_high[65] = { + 0u, 0u, 8192u, 12984u, 16384u, + 19021u, 21176u, 22997u, 24576u, 25968u, + 27213u, 28339u, 29368u, 30314u, 31189u, + 32005u, 32768u, 33484u, 34160u, 34799u, + 35405u, 35981u, 36531u, 37057u, 37560u, + 38042u, 38506u, 38952u, 39381u, 39796u, + 40197u, 40584u, 40960u, 41323u, 41676u, + 42019u, 42352u, 42675u, 42991u, 43298u, + 43597u, 43889u, 44173u, 44451u, 44723u, + 44989u, 45249u, 45503u, 45752u, 45995u, + 46234u, 46468u, 46698u, 46923u, 47144u, + 47360u, 47573u, 47783u, 47988u, 48190u, + 48389u, 48584u, 48776u, 48965u, 49152u +}; +static const mp_word logbases_low[65] = { + 0u, 0u, 0u, 839u, 0u, + 15397u, 839u, 55805u, 0u, 1678u, + 15397u, 43504u, 839u, 142u, 55805u, + 16237u, 0u, 32479u, 1678u, 1454u, + 15397u, 56644u, 43504u, 1280u, 839u, + 30795u, 142u, 2517u, 55805u, 38031u, + 16237u, 50867u, 0u, 44343u, 32479u, + 5667u, 1678u, 55179u, 1454u, 981u, + 15397u, 4326u, 56644u, 62971u, 43504u, + 17076u, 1280u, 12574u, 839u, 46074u, + 30795u, 33318u, 142u, 8150u, 2517u, + 58902u, 55805u, 2293u, 38031u, 40098u, + 16237u, 39339u, 50867u, 57483u, 0u +}; +#elif (defined MP_16BIT) +#define LTM_RADIX_SIZE_SCALE 61 +#define LTM_RADIX_SIZE_HALF_TABLE_SCALE 32 +static const mp_word logbases_high[65] = { + 0ul, 0ul, 536870912ul, 850920263ul, 1073741824ul, + 1246575653ul, 1387791175ul, 1507187197ul, 1610612736ul, 1701840526ul, + 1783446565ul, 1857268208ul, 1924662087ul, 1986658446ul, 2044058109ul, + 2097495917ul, 2147483648ul, 2194439903ul, 2238711438ul, 2280588718ul, + 2320317477ul, 2358107460ul, 2394139120ul, 2428568832ul, 2461532999ul, + 2493151307ul, 2523529358ul, 2552760789ul, 2580929021ul, 2608108687ul, + 2634366829ul, 2659763891ul, 2684354560ul, 2708188471ul, 2731310815ul, + 2753762851ul, 2775582350ul, 2796803979ul, 2817459630ul, 2837578709ul, + 2857188389ul, 2876313830ul, 2894978372ul, 2913203707ul, 2931010032ul, + 2948416180ul, 2965439744ul, 2982097182ul, 2998403911ul, 3014374394ul, + 3030022219ul, 3045360166ul, 3060400270ul, 3075153878ul, 3089631701ul, + 3103843862ul, 3117799933ul, 3131508981ul, 3144979599ul, 3158219938ul, + 3171237741ul, 3184040363ul, 3196634803ul, 3209027723ul, 3221225472ul +}; +static const mp_word logbases_low[65] = { + 0ul, 0ul, 0ul, 1065013491ul, 0ul, + 3868050815ul, 1065013491ul, 1343271782ul, 0ul, 2130026983ul, + 3868050815ul, 427100031ul, 1065013491ul, 1200147405ul, 1343271782ul, + 638097011ul, 0ul, 1495425743ul, 2130026983ul, 1083835016ul, + 3868050815ul, 2408285274ul, 427100031ul, 3594167896ul, 1065013491ul, + 3441134334ul, 1200147405ul, 3195040475ul, 1343271782ul, 1429396043ul, + 638097011ul, 1651143338ul, 0ul, 1492113523ul, 1495425743ul, + 916355301ul, 2130026983ul, 1832592635ul, 1083835016ul, 2265160897ul, + 3868050815ul, 3464916779ul, 2408285274ul, 2621526098ul, 427100031ul, + 1703110503ul, 3594167896ul, 2513440227ul, 1065013491ul, 2686543564ul, + 3441134334ul, 2560439235ul, 1200147405ul, 1309103046ul, 3195040475ul, + 183550ul, 1343271782ul, 2148848508ul, 1429396043ul, 3785381171ul, + 638097011ul, 1073048670ul, 1651143338ul, 3473298766ul, 0ul +}; + +/* TODO: This assumes the type "long long" exists. If it doesn't use the tables for MP_16BIT */ +#elif ( (defined MP_28BIT) || (defined MP_31BIT) || (defined MP_32BIT) || (defined MP_64BIT) ) +#define LTM_RADIX_SIZE_SCALE 61 +#ifdef MP_64BIT +static const mp_digit logbases[65] = { +#else +static const mp_word logbases[65] = { +#endif + 0ull, 0ull, 2305843009213693952ull, + 3654674702153732339ull, 4611686018427387904ull, 5354001665492895103ull, + 5960517711367426291ull, 6473319721408181094ull, 6917529027641081856ull, + 7309349404307464679ull, 7659844674706589055ull, 7976906213687625599ull, + 8266360720581120243ull, 8532633055092329421ull, 8779162730621875046ull, + 9008676367646627443ull, 9223372036854775808ull, 9425047617917838031ull, + 9615192413521158631ull, 9795053960520401544ull, 9965687683920283007ull, + 10127994423561913434ull, 10282749222901319551ull, 10430623713119086168ull, + 10572203729794814195ull, 10708003330985790206ull, 10838476064306023373ull, + 10964024106461197019ull, 11085005739835568998ull, 11201741516507896395ull, + 11314519376860321395ull, 11423598928577852074ull, 11529215046068469760ull, + 11631580915841357939ull, 11730890627131531983ull, 11827321386901076197ull, + 11921035422734852583ull, 12012181624960263419ull, 12100896969734095496ull, + 12187307757246061761ull, 12271530693133976959ull, 12353673836347420459ull, + 12433837432775607386ull, 12512114650772492370ull, 12588592232115013503ull, + 12663351069800359783ull, 12736466722332780120ull, 12808009872697200099ull, + 12878046739008508147ull, 12946639442816362188ull, 13013846340199484158ull, + 13079722320071570371ull, 13144319073519717325ull, 13207685337486676934ull, + 13269867115674890971ull, 13330907879180520702ull, 13390848749049262950ull, + 13449728662674133884ull, 13507584525721590347ull, 13564451351070528819ull, + 13620362386074015347ull, 13675349229302017118ull, 13729441937791546026ull, + 13782669125715645774ull, 13835058055282163712ull +}; +#else +# ifdef _MSC_VER +# pragma message("mp_estimate_string_size: unknown or undefined MP_xBIT type") +# else +# warning "mp_estimate_string_size: unknown or undefined MP_xBIT type" +# endif +#endif +#if 0 +/* + Tables for 64 bit large "int". + We have to use two tables here because there is no standard suffix for + 128-bit literals. + */ +#define LTM_RADIX_SIZE_SCALE 125 +#define LTM_RADIX_SIZE_HALF_TABLE_SCALE 64 +static const mp_digit logbases_low[65] = { + 0ull, 0ull, 2305843009213693952ull, + 3654674702153732339ull, 4611686018427387904ull, 5354001665492895103ull, + 5960517711367426291ull, 6473319721408181094ull, 6917529027641081856ull, + 7309349404307464679ull, 7659844674706589055ull, 7976906213687625599ull, + 8266360720581120243ull, 8532633055092329421ull, 8779162730621875046ull, + 9008676367646627443ull, 9223372036854775808ull, 9425047617917838031ull, + 9615192413521158631ull, 9795053960520401544ull, 9965687683920283007ull, + 10127994423561913434ull, 10282749222901319551ull, 10430623713119086168ull, + 10572203729794814195ull, 10708003330985790206ull, 10838476064306023373ull, + 10964024106461197019ull, 11085005739835568998ull, 11201741516507896395ull, + 11314519376860321395ull, 11423598928577852074ull, 11529215046068469760ull, + 11631580915841357939ull, 11730890627131531983ull, 11827321386901076197ull, + 11921035422734852583ull, 12012181624960263419ull, 12100896969734095496ull, + 12187307757246061761ull, 12271530693133976959ull, 12353673836347420459ull, + 12433837432775607386ull, 12512114650772492370ull, 12588592232115013503ull, + 12663351069800359783ull, 12736466722332780120ull, 12808009872697200099ull, + 12878046739008508147ull, 12946639442816362188ull, 13013846340199484158ull, + 13079722320071570371ull, 13144319073519717325ull, 13207685337486676934ull, + 13269867115674890971ull, 13330907879180520702ull, 13390848749049262950ull, + 13449728662674133884ull, 13507584525721590347ull, 13564451351070528819ull, + 13620362386074015347ull, 13675349229302017118ull, 13729441937791546026ull, + 13782669125715645774ull, 13835058055282163712ull +}; +static const mp_digit logbases_high[65] = { + 0ull, 0ull, 0ull, + 17582442452630992314ull, 0ull, 2636289682573880742ull, + 17582442452630992314ull, 7302903955535475976ull, 0ull, + 16718140831552433012ull, 2636289682573880742ull, 2260539591812094679ull, + 17582442452630992314ull, 3376366635243825699ull, 7302903955535475976ull, + 1771988061495321440ull, 0ull, 11063778906989063000ull, + 16718140831552433012ull, 16876788983675997564ull, 2636289682573880742ull, + 6438602334456916675ull, 2260539591812094679ull, 9392066375228186965ull, + 17582442452630992314ull, 5272579365147761484ull, 3376366635243825699ull, + 15853839210473873710ull, 7302903955535475976ull, 5436200125372755171ull, + 1771988061495321440ull, 2424000858589553290ull, 0ull, + 1396237970733535378ull, 11063778906989063000ull, 9939193638109356719ull, + 16718140831552433012ull, 17890464788716031277ull, 16876788983675997564ull, + 2512065014165266397ull, 2636289682573880742ull, 14314979085988782625ull, + 6438602334456916675ull, 736193948012496726ull, 2260539591812094679ull, + 907686440416762138ull, 9392066375228186965ull, 13047959311228526620ull, + 17582442452630992314ull, 14605807911070951953ull, 5272579365147761484ull, + 10199477285910503698ull, 3376366635243825699ull, 16535036200126848317ull, + 15853839210473873710ull, 4896829274385975422ull, 7302903955535475976ull, + 16012487362597438262ull, 5436200125372755171ull, 7605258474266570783ull, + 1771988061495321440ull, 7438463155377325683ull, 2424000858589553290ull, + 5574300713378357373ull, 0ull +}; + +#endif +/* *INDENT-ON* */ + +int mp_radix_size(const mp_int *a, const int base, int *size) +{ + mp_int bi_bit_count, bi_k; +#if ( (defined MP_8BIT) || (defined MP_16BIT) ) + mp_int bi_k_bis; +#endif + int ln2 = 0, rem, bit_count; + int e = MP_OKAY; + + if ((base < 2) || (base > 64)) { + *size = 0; + return MP_VAL; + } + + /* floor( log_2(a) ) + 1 */ + bit_count = mp_count_bits(a) + 1; + + if (bit_count == 0) { + *size = 2; + return MP_OKAY; + } + if (base == 2) { + *size = bit_count + 1; + return MP_OKAY; + } + + /* A small shortcut for powers of two. */ + switch (base) { + case 4: + ln2 = 2; + break; + case 8: + ln2 = 3; + break; + case 16: + ln2 = 4; + break; + case 32: + ln2 = 5; + break; + case 64: + ln2 = 6; + break; + default: + break; + } + if (ln2 != 0) { + *size = bit_count/ln2; + rem = bit_count - (*size) * ln2; + /* Add 1 for the remainder if any and 1 for "\0". */ + *size += (rem == 0) ? 1 : 2; + return MP_OKAY; + } + + /* d(bitcount,base) = floor( (bitcount * 2^p) / k(base) ) + 1 */ + + if ((e = mp_init_multi(&bi_bit_count, &bi_k, NULL)) != MP_OKAY) { + *size = 0; + return e; + } +#if ( (defined MP_8BIT) || (defined MP_16BIT) ) + if ((e = mp_init(&bi_k_bis)) != MP_OKAY) { + /* No "goto" to avoid cluttering this code with even more preprocessor branches */ + mp_clear_multi(&bi_bit_count, &bi_k, NULL); + *size = 0; + return e; + } +#endif + if ((e = s_set_int(&bi_bit_count, bit_count)) != MP_OKAY) { + *size = 0; + goto LTM_E1; + } +#if ( (defined MP_8BIT) || (defined MP_16BIT) ) + if ((e = s_set_mp_word(&bi_k, logbases_high[base])) != MP_OKAY) { + *size = 0; + goto LTM_E1; + } + if ((e = mp_mul_2d(&bi_k, LTM_RADIX_SIZE_HALF_TABLE_SCALE, &bi_k)) != MP_OKAY) { + *size = 0; + goto LTM_E1; + } + if ((e = s_set_mp_word(&bi_k_bis, logbases_low[base])) != MP_OKAY) { + *size = 0; + goto LTM_E1; + } + if ((e = mp_add(&bi_k_bis, &bi_k, &bi_k)) != MP_OKAY) { + *size = 0; + goto LTM_E1; + } +#elif (defined MP_64BIT) + if ((e = s_set_mp_digit(&bi_k, logbases[base])) != MP_OKAY) { + *size = 0; + goto LTM_E1; + } +#else + if ((e = s_set_mp_word(&bi_k, logbases[base])) != MP_OKAY) { + *size = 0; + goto LTM_E1; + } +#endif + if ((e = mp_mul_2d(&bi_bit_count,LTM_RADIX_SIZE_SCALE , &bi_bit_count)) != MP_OKAY) { + *size = 0; + goto LTM_E1; + } + if ((e = mp_div(&bi_bit_count, &bi_k, &bi_bit_count, NULL)) != MP_OKAY) { + *size = 0; + goto LTM_E1; + } + /* + The first addition of one is done because of the truncating last division, + and the second addition of one is done to make room for NIL ('\0'). + */ + *size = s_get_int(&bi_bit_count) + 1 + 1 ; + +#if ( (defined MP_8BIT) && (INT_MAX > 0xFFFF)) + /* TODO: Add a third table? But how likely is it that "int" is 32-bit in + an 8-bit environment? */ + + /* diff. is 3 bits, hence add 2 (two) */ + *size += 2; +#endif + +LTM_E1: + mp_clear_multi(&bi_bit_count, &bi_k, NULL); +#if ( (defined MP_8BIT) || (defined MP_16BIT) ) + mp_clear(&bi_k_bis); +#endif + return e; + +} +#else int mp_radix_size(const mp_int *a, int radix, int *size) { int res, digs; @@ -26,7 +414,7 @@ int mp_radix_size(const mp_int *a, int radix, int *size) return MP_VAL; } - if (IS_ZERO(a)) { + if (mp_iszero(a) == MP_YES) { *size = 2; return MP_OKAY; } @@ -54,7 +442,7 @@ int mp_radix_size(const mp_int *a, int radix, int *size) t.sign = MP_ZPOS; /* fetch out all of the digits */ - while (!IS_ZERO(&t)) { + while (mp_iszero(&t) == MP_NO) { if ((res = mp_div_d(&t, (mp_digit)radix, &t, &d)) != MP_OKAY) { mp_clear(&t); return res; @@ -68,6 +456,9 @@ int mp_radix_size(const mp_int *a, int radix, int *size) return MP_OKAY; } + +#endif + #endif /* ref: $Format:%D$ */ diff --git a/callgraph.txt b/callgraph.txt index 565a4ea8b..c09d67c9e 100644 --- a/callgraph.txt +++ b/callgraph.txt @@ -215,6 +215,94 @@ BN_MP_AND_C +--->BN_MP_CLEAR_C +BN_MP_BALANCE_MUL_C ++--->BN_MP_INIT_SIZE_C +| +--->BN_MP_INIT_C ++--->BN_MP_INIT_MULTI_C +| +--->BN_MP_INIT_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_CLEAR_C ++--->BN_MP_MUL_C +| +--->BN_MP_TOOM_MUL_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_KARATSUBA_MUL_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C ++--->BN_MP_LSHD_C +| +--->BN_MP_GROW_C +| +--->BN_MP_RSHD_C +| | +--->BN_MP_ZERO_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_MULTI_C + + BN_MP_CLAMP_C @@ -637,6 +725,20 @@ BN_MP_EXPTMOD_C | | +--->BN_MP_RSHD_C | | | +--->BN_MP_ZERO_C | | +--->BN_MP_MUL_C +| | | +--->BN_MP_BALANCE_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C | | | +--->BN_MP_TOOM_MUL_C | | | | +--->BN_MP_INIT_MULTI_C | | | | +--->BN_MP_MOD_2D_C @@ -765,6 +867,22 @@ BN_MP_EXPTMOD_C | | | +--->BN_MP_RSHD_C | | | +--->BN_MP_CLAMP_C | | +--->BN_MP_MUL_C +| | | +--->BN_MP_BALANCE_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C | | | +--->BN_MP_TOOM_MUL_C | | | | +--->BN_MP_INIT_MULTI_C | | | | +--->BN_MP_MOD_2D_C @@ -957,6 +1075,22 @@ BN_MP_EXPTMOD_C | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_EXCH_C | +--->BN_MP_MUL_C +| | +--->BN_MP_BALANCE_MUL_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C | | +--->BN_MP_TOOM_MUL_C | | | +--->BN_MP_INIT_MULTI_C | | | +--->BN_MP_MOD_2D_C @@ -1110,6 +1244,21 @@ BN_MP_EXPTMOD_C | | | +--->BN_MP_CLAMP_C | +--->BN_MP_MULMOD_C | | +--->BN_MP_MUL_C +| | | +--->BN_MP_BALANCE_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C | | | +--->BN_MP_TOOM_MUL_C | | | | +--->BN_MP_INIT_MULTI_C | | | | +--->BN_MP_MOD_2D_C @@ -1341,6 +1490,21 @@ BN_MP_EXPTMOD_C | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_EXCH_C | +--->BN_MP_MUL_C +| | +--->BN_MP_BALANCE_MUL_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C | | +--->BN_MP_TOOM_MUL_C | | | +--->BN_MP_INIT_MULTI_C | | | +--->BN_MP_MOD_2D_C @@ -1472,6 +1636,23 @@ BN_MP_EXPTMOD_FAST_C | | +--->BN_MP_CLAMP_C +--->BN_MP_MULMOD_C | +--->BN_MP_MUL_C +| | +--->BN_MP_BALANCE_MUL_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C | | +--->BN_MP_TOOM_MUL_C | | | +--->BN_MP_INIT_MULTI_C | | | | +--->BN_MP_INIT_C @@ -1715,6 +1896,23 @@ BN_MP_EXPTMOD_FAST_C | | +--->BN_MP_CLAMP_C | | +--->BN_MP_EXCH_C +--->BN_MP_MUL_C +| +--->BN_MP_BALANCE_MUL_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C | +--->BN_MP_TOOM_MUL_C | | +--->BN_MP_INIT_MULTI_C | | | +--->BN_MP_INIT_C @@ -1790,6 +1988,25 @@ BN_MP_EXPT_D_C | +--->BN_MP_SET_C | | +--->BN_MP_ZERO_C | +--->BN_MP_MUL_C +| | +--->BN_MP_BALANCE_MUL_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C | | +--->BN_MP_TOOM_MUL_C | | | +--->BN_MP_INIT_MULTI_C | | | | +--->BN_MP_CLEAR_C @@ -1942,6 +2159,25 @@ BN_MP_EXPT_D_EX_C +--->BN_MP_SET_C | +--->BN_MP_ZERO_C +--->BN_MP_MUL_C +| +--->BN_MP_BALANCE_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C | +--->BN_MP_TOOM_MUL_C | | +--->BN_MP_INIT_MULTI_C | | | +--->BN_MP_CLEAR_C @@ -2141,6 +2377,24 @@ BN_MP_EXTEUCLID_C | +--->BN_MP_CLAMP_C | +--->BN_MP_CLEAR_C +--->BN_MP_MUL_C +| +--->BN_MP_BALANCE_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C | +--->BN_MP_TOOM_MUL_C | | +--->BN_MP_MOD_2D_C | | | +--->BN_MP_ZERO_C @@ -2240,13 +2494,79 @@ BN_MP_FREAD_C BN_MP_FWRITE_C +--->BN_MP_RADIX_SIZE_C -| +--->BN_MP_COUNT_BITS_C -| +--->BN_MP_INIT_COPY_C -| | +--->BN_MP_INIT_SIZE_C -| | +--->BN_MP_COPY_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_SET_INT_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C | | | +--->BN_MP_GROW_C -| | +--->BN_MP_CLEAR_C -| +--->BN_MP_DIV_D_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_C +| +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_DIV_D_C | | +--->BN_MP_COPY_C | | | +--->BN_MP_GROW_C | | +--->BN_MP_DIV_2D_C @@ -2259,12 +2579,9 @@ BN_MP_FWRITE_C | | | +--->BN_MP_INIT_SIZE_C | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_CLEAR_C | | +--->BN_MP_INIT_SIZE_C | | +--->BN_MP_CLAMP_C | | +--->BN_MP_EXCH_C -| | +--->BN_MP_CLEAR_C -| +--->BN_MP_CLEAR_C +--->BN_MP_TORADIX_C | +--->BN_MP_INIT_COPY_C | | +--->BN_MP_INIT_SIZE_C @@ -2790,168 +3107,179 @@ BN_MP_IS_SQUARE_C +--->BN_MP_SQRT_C | +--->BN_MP_N_ROOT_C | | +--->BN_MP_N_ROOT_EX_C -| | | +--->BN_MP_INIT_C -| | | +--->BN_MP_SET_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_2EXPT_C | | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_COPY_C | | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_EXPT_D_EX_C -| | | | +--->BN_MP_INIT_COPY_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLEAR_C -| | | | +--->BN_MP_MUL_C -| | | | | +--->BN_MP_TOOM_MUL_C -| | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | | +--->BN_MP_CLEAR_C -| | | | | | +--->BN_MP_MOD_2D_C -| | | | | | | +--->BN_MP_ZERO_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXPT_D_C +| | | | +--->BN_MP_EXPT_D_EX_C +| | | | | +--->BN_MP_INIT_COPY_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_COPY_C | | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_ADD_C -| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_LSHD_C | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_COPY_C | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_SUB_C -| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2D_C | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_MUL_D_C | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_DIV_2_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_MUL_2D_C -| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CLEAR_C | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_S_MP_MUL_DIGS_C | | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_EXCH_C -| | | | | | | +--->BN_MP_CLEAR_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLEAR_MULTI_C | | | | | | | +--->BN_MP_CLEAR_C -| | | | | +--->BN_MP_KARATSUBA_MUL_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_ADD_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_SQR_C +| | | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_COPY_C | | | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_RSHD_C | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_CLEAR_C -| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_S_MP_MUL_DIGS_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | | | +--->BN_MP_CLEAR_C -| | | | +--->BN_MP_CLEAR_C -| | | | +--->BN_MP_SQR_C -| | | | | +--->BN_MP_TOOM_SQR_C -| | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | +--->BN_MP_MOD_2D_C -| | | | | | | +--->BN_MP_ZERO_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_MUL_2_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_ADD_C -| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2D_C | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_MUL_D_C | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_S_MP_ADD_C | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_CMP_MAG_C | | | | | | | +--->BN_S_MP_SUB_C | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_FAST_S_MP_SQR_C | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_MUL_2D_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_MUL_D_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_S_MP_SQR_C | | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_EXCH_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLEAR_MULTI_C -| | | | | +--->BN_MP_KARATSUBA_SQR_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_LSHD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_RSHD_C -| | | | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_ADD_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_FAST_S_MP_SQR_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_S_MP_SQR_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_ADD_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_SUB_D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C | | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_BALANCE_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C | | | | +--->BN_MP_TOOM_MUL_C -| | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | +--->BN_MP_CLEAR_C | | | | | +--->BN_MP_MOD_2D_C | | | | | | +--->BN_MP_ZERO_C | | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_RSHD_C | | | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_MUL_2_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_SUB_C | | | | | | +--->BN_S_MP_ADD_C | | | | | | | +--->BN_MP_GROW_C @@ -2960,34 +3288,23 @@ BN_MP_IS_SQUARE_C | | | | | | +--->BN_S_MP_SUB_C | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_DIV_2_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_MUL_2D_C | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_LSHD_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_DIV_3_C | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_INIT_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C | | | | | | +--->BN_MP_CLEAR_C | | | | | +--->BN_MP_LSHD_C | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLEAR_MULTI_C -| | | | | | +--->BN_MP_CLEAR_C | | | | +--->BN_MP_KARATSUBA_MUL_C | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_C | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_S_MP_ADD_C | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_S_MP_SUB_C | | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_LSHD_C @@ -3000,25 +3317,13 @@ BN_MP_IS_SQUARE_C | | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_S_MP_MUL_DIGS_C | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_C | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C | | | | | +--->BN_MP_CLEAR_C -| | | +--->BN_MP_SUB_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MUL_D_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_DIV_C | | | | +--->BN_MP_CMP_MAG_C | | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_INIT_MULTI_C -| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_SET_C | | | | +--->BN_MP_COUNT_BITS_C | | | | +--->BN_MP_ABS_C | | | | +--->BN_MP_MUL_2D_C @@ -3026,8 +3331,7 @@ BN_MP_IS_SQUARE_C | | | | | +--->BN_MP_LSHD_C | | | | | | +--->BN_MP_RSHD_C | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_C -| | | | +--->BN_MP_ADD_C +| | | | +--->BN_MP_SUB_C | | | | | +--->BN_S_MP_ADD_C | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C @@ -3039,10 +3343,9 @@ BN_MP_IS_SQUARE_C | | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_RSHD_C | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_CLEAR_MULTI_C -| | | | | +--->BN_MP_CLEAR_C | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_INIT_C | | | | +--->BN_MP_INIT_COPY_C | | | | | +--->BN_MP_CLEAR_C | | | | +--->BN_MP_LSHD_C @@ -3051,15 +3354,80 @@ BN_MP_IS_SQUARE_C | | | | +--->BN_MP_RSHD_C | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_CLEAR_C -| | | +--->BN_MP_CMP_C -| | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_DIV_D_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_INIT_C | | | +--->BN_MP_SUB_D_C | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ADD_D_C -| | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_EXCH_C | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_EXPT_D_EX_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_SQR_C +| | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_FAST_S_MP_SQR_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SQR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C | +--->BN_MP_ZERO_C | +--->BN_MP_INIT_COPY_C | | +--->BN_MP_INIT_SIZE_C @@ -3281,6 +3649,27 @@ BN_MP_JACOBI_C BN_MP_KARATSUBA_MUL_C +--->BN_MP_MUL_C +| +--->BN_MP_BALANCE_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C | +--->BN_MP_TOOM_MUL_C | | +--->BN_MP_INIT_MULTI_C | | | +--->BN_MP_INIT_C @@ -3582,6 +3971,23 @@ BN_MP_LCM_C | +--->BN_MP_CLAMP_C | +--->BN_MP_CLEAR_C +--->BN_MP_MUL_C +| +--->BN_MP_BALANCE_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C | +--->BN_MP_TOOM_MUL_C | | +--->BN_MP_MOD_2D_C | | | +--->BN_MP_ZERO_C @@ -3797,6 +4203,25 @@ BN_MP_MULMOD_C +--->BN_MP_INIT_SIZE_C | +--->BN_MP_INIT_C +--->BN_MP_MUL_C +| +--->BN_MP_BALANCE_MUL_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C | +--->BN_MP_TOOM_MUL_C | | +--->BN_MP_INIT_MULTI_C | | | +--->BN_MP_INIT_C @@ -3943,6 +4368,27 @@ BN_MP_MUL_2_C BN_MP_MUL_C ++--->BN_MP_BALANCE_MUL_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_MULTI_C +--->BN_MP_TOOM_MUL_C | +--->BN_MP_INIT_MULTI_C | | +--->BN_MP_INIT_C @@ -4034,168 +4480,179 @@ BN_MP_NEG_C BN_MP_N_ROOT_C +--->BN_MP_N_ROOT_EX_C -| +--->BN_MP_INIT_C -| +--->BN_MP_SET_C -| | +--->BN_MP_ZERO_C -| +--->BN_MP_COPY_C +| +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_2EXPT_C +| | +--->BN_MP_ZERO_C | | +--->BN_MP_GROW_C -| +--->BN_MP_EXPT_D_EX_C -| | +--->BN_MP_INIT_COPY_C -| | | +--->BN_MP_INIT_SIZE_C -| | | +--->BN_MP_CLEAR_C -| | +--->BN_MP_MUL_C -| | | +--->BN_MP_TOOM_MUL_C -| | | | +--->BN_MP_INIT_MULTI_C -| | | | | +--->BN_MP_CLEAR_C -| | | | +--->BN_MP_MOD_2D_C -| | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_MUL_2_C +| +--->BN_MP_CMP_C +| | +--->BN_MP_CMP_MAG_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_2_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXPT_D_C +| | +--->BN_MP_EXPT_D_EX_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_COPY_C | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_BALANCE_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_LSHD_C | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_COPY_C | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_MUL_D_C | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_DIV_2_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MUL_2D_C -| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLEAR_C | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_DIV_3_C +| | | | +--->BN_S_MP_MUL_DIGS_C | | | | | +--->BN_MP_INIT_SIZE_C | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_CLEAR_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLEAR_MULTI_C | | | | | +--->BN_MP_CLEAR_C -| | | +--->BN_MP_KARATSUBA_MUL_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_SQR_C +| | | | +--->BN_MP_TOOM_SQR_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C | | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_RSHD_C | | | | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_CLEAR_C -| | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_S_MP_MUL_DIGS_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_CLEAR_C -| | +--->BN_MP_CLEAR_C -| | +--->BN_MP_SQR_C -| | | +--->BN_MP_TOOM_SQR_C -| | | | +--->BN_MP_INIT_MULTI_C -| | | | +--->BN_MP_MOD_2D_C -| | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_MUL_2_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_MUL_2_C | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_MUL_D_C | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_S_MP_ADD_C | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C | | | | | +--->BN_S_MP_SUB_C | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_DIV_2_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MUL_2D_C -| | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_FAST_S_MP_SQR_C | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_DIV_3_C +| | | | +--->BN_S_MP_SQR_C | | | | | +--->BN_MP_INIT_SIZE_C | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLEAR_MULTI_C -| | | +--->BN_MP_KARATSUBA_SQR_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_LSHD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | +--->BN_FAST_S_MP_SQR_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_S_MP_SQR_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C +| +--->BN_MP_ADD_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_SUB_D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_MUL_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_MUL_2_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C | +--->BN_MP_MUL_C +| | +--->BN_MP_BALANCE_MUL_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C | | +--->BN_MP_TOOM_MUL_C -| | | +--->BN_MP_INIT_MULTI_C -| | | | +--->BN_MP_CLEAR_C | | | +--->BN_MP_MOD_2D_C | | | | +--->BN_MP_ZERO_C | | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_RSHD_C | | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_MUL_2_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_ADD_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_SUB_C | | | | +--->BN_S_MP_ADD_C | | | | | +--->BN_MP_GROW_C @@ -4204,34 +4661,23 @@ BN_MP_N_ROOT_C | | | | +--->BN_S_MP_SUB_C | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_DIV_2_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_MUL_2D_C | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_LSHD_C | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MUL_D_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_DIV_3_C | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_CLEAR_C | | | +--->BN_MP_LSHD_C | | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLEAR_MULTI_C -| | | | +--->BN_MP_CLEAR_C | | +--->BN_MP_KARATSUBA_MUL_C | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C | | | +--->BN_MP_CLAMP_C | | | +--->BN_S_MP_ADD_C | | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_ADD_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C | | | +--->BN_S_MP_SUB_C | | | | +--->BN_MP_GROW_C | | | +--->BN_MP_LSHD_C @@ -4244,25 +4690,13 @@ BN_MP_N_ROOT_C | | | +--->BN_MP_CLAMP_C | | +--->BN_S_MP_MUL_DIGS_C | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_EXCH_C | | | +--->BN_MP_CLEAR_C -| +--->BN_MP_SUB_C -| | +--->BN_S_MP_ADD_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_CMP_MAG_C -| | +--->BN_S_MP_SUB_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| +--->BN_MP_MUL_D_C -| | +--->BN_MP_GROW_C -| | +--->BN_MP_CLAMP_C | +--->BN_MP_DIV_C | | +--->BN_MP_CMP_MAG_C | | +--->BN_MP_ZERO_C -| | +--->BN_MP_INIT_MULTI_C -| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SET_C | | +--->BN_MP_COUNT_BITS_C | | +--->BN_MP_ABS_C | | +--->BN_MP_MUL_2D_C @@ -4270,8 +4704,7 @@ BN_MP_N_ROOT_C | | | +--->BN_MP_LSHD_C | | | | +--->BN_MP_RSHD_C | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_CMP_C -| | +--->BN_MP_ADD_C +| | +--->BN_MP_SUB_C | | | +--->BN_S_MP_ADD_C | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_CLAMP_C @@ -4283,10 +4716,9 @@ BN_MP_N_ROOT_C | | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_RSHD_C | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_EXCH_C -| | +--->BN_MP_CLEAR_MULTI_C -| | | +--->BN_MP_CLEAR_C | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_INIT_C | | +--->BN_MP_INIT_COPY_C | | | +--->BN_MP_CLEAR_C | | +--->BN_MP_LSHD_C @@ -4295,180 +4727,264 @@ BN_MP_N_ROOT_C | | +--->BN_MP_RSHD_C | | +--->BN_MP_CLAMP_C | | +--->BN_MP_CLEAR_C -| +--->BN_MP_CMP_C +| +--->BN_MP_DIV_D_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_SQRT_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_RSHD_C | | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_INIT_C | +--->BN_MP_SUB_D_C | | +--->BN_MP_GROW_C -| | +--->BN_MP_ADD_D_C -| | | +--->BN_MP_CLAMP_C | | +--->BN_MP_CLAMP_C -| +--->BN_MP_EXCH_C | +--->BN_MP_CLEAR_C - - -BN_MP_N_ROOT_EX_C -+--->BN_MP_INIT_C -+--->BN_MP_SET_C -| +--->BN_MP_ZERO_C -+--->BN_MP_COPY_C -| +--->BN_MP_GROW_C -+--->BN_MP_EXPT_D_EX_C -| +--->BN_MP_INIT_COPY_C -| | +--->BN_MP_INIT_SIZE_C -| | +--->BN_MP_CLEAR_C -| +--->BN_MP_MUL_C -| | +--->BN_MP_TOOM_MUL_C -| | | +--->BN_MP_INIT_MULTI_C -| | | | +--->BN_MP_CLEAR_C -| | | +--->BN_MP_MOD_2D_C -| | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_MUL_2_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_ADD_C -| | | | +--->BN_S_MP_ADD_C -| | | | | +--->BN_MP_GROW_C +| +--->BN_MP_EXPT_D_EX_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_MOD_2D_C | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C | | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_SUB_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C | | | | +--->BN_S_MP_ADD_C | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C | | | | +--->BN_S_MP_SUB_C | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_DIV_2_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MUL_2D_C -| | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | +--->BN_FAST_S_MP_SQR_C | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_DIV_3_C +| | | +--->BN_S_MP_SQR_C | | | | +--->BN_MP_INIT_SIZE_C | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | | | +--->BN_MP_CLEAR_C -| | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLEAR_MULTI_C -| | | | +--->BN_MP_CLEAR_C -| | +--->BN_MP_KARATSUBA_MUL_C -| | | +--->BN_MP_INIT_SIZE_C -| | | +--->BN_MP_CLAMP_C -| | | +--->BN_S_MP_ADD_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_ADD_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C -| | | | | +--->BN_MP_GROW_C -| | | +--->BN_S_MP_SUB_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_CLEAR_C -| | +--->BN_FAST_S_MP_MUL_DIGS_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C | | | +--->BN_MP_GROW_C | | | +--->BN_MP_CLAMP_C -| | +--->BN_S_MP_MUL_DIGS_C -| | | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_CLEAR_C + + +BN_MP_N_ROOT_EX_C ++--->BN_MP_INIT_MULTI_C +| +--->BN_MP_INIT_C | +--->BN_MP_CLEAR_C -| +--->BN_MP_SQR_C -| | +--->BN_MP_TOOM_SQR_C -| | | +--->BN_MP_INIT_MULTI_C -| | | +--->BN_MP_MOD_2D_C -| | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_RSHD_C -| | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_MUL_2_C ++--->BN_MP_2EXPT_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_GROW_C ++--->BN_MP_CMP_C +| +--->BN_MP_CMP_MAG_C ++--->BN_MP_EXCH_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_DIV_2_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_EXPT_D_C +| +--->BN_MP_EXPT_D_EX_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_COPY_C | | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_ADD_C -| | | | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_BALANCE_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_MUL_D_C | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_SUB_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C | | | | +--->BN_S_MP_ADD_C | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_CMP_MAG_C | | | | +--->BN_S_MP_SUB_C | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MUL_2D_C -| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | +--->BN_FAST_S_MP_SQR_C | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_DIV_3_C +| | | +--->BN_S_MP_SQR_C | | | | +--->BN_MP_INIT_SIZE_C | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLEAR_MULTI_C -| | +--->BN_MP_KARATSUBA_SQR_C -| | | +--->BN_MP_INIT_SIZE_C -| | | +--->BN_MP_CLAMP_C -| | | +--->BN_S_MP_ADD_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_S_MP_SUB_C -| | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_LSHD_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_RSHD_C -| | | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_ADD_C -| | | | +--->BN_MP_CMP_MAG_C -| | +--->BN_FAST_S_MP_SQR_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C -| | +--->BN_S_MP_SQR_C -| | | +--->BN_MP_INIT_SIZE_C -| | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_EXCH_C ++--->BN_MP_ADD_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_SUB_D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_MUL_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_MUL_2_C +| +--->BN_MP_GROW_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C +--->BN_MP_MUL_C +| +--->BN_MP_BALANCE_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C | +--->BN_MP_TOOM_MUL_C -| | +--->BN_MP_INIT_MULTI_C -| | | +--->BN_MP_CLEAR_C | | +--->BN_MP_MOD_2D_C | | | +--->BN_MP_ZERO_C | | | +--->BN_MP_CLAMP_C | | +--->BN_MP_RSHD_C | | | +--->BN_MP_ZERO_C -| | +--->BN_MP_MUL_2_C -| | | +--->BN_MP_GROW_C -| | +--->BN_MP_ADD_C -| | | +--->BN_S_MP_ADD_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_CMP_MAG_C -| | | +--->BN_S_MP_SUB_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C | | +--->BN_MP_SUB_C | | | +--->BN_S_MP_ADD_C | | | | +--->BN_MP_GROW_C @@ -4477,34 +4993,23 @@ BN_MP_N_ROOT_EX_C | | | +--->BN_S_MP_SUB_C | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_DIV_2_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C | | +--->BN_MP_MUL_2D_C | | | +--->BN_MP_GROW_C | | | +--->BN_MP_LSHD_C | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_MUL_D_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C | | +--->BN_MP_DIV_3_C | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_EXCH_C | | | +--->BN_MP_CLEAR_C | | +--->BN_MP_LSHD_C | | | +--->BN_MP_GROW_C -| | +--->BN_MP_CLEAR_MULTI_C -| | | +--->BN_MP_CLEAR_C | +--->BN_MP_KARATSUBA_MUL_C | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C | | +--->BN_MP_CLAMP_C | | +--->BN_S_MP_ADD_C | | | +--->BN_MP_GROW_C -| | +--->BN_MP_ADD_C -| | | +--->BN_MP_CMP_MAG_C -| | | +--->BN_S_MP_SUB_C -| | | | +--->BN_MP_GROW_C | | +--->BN_S_MP_SUB_C | | | +--->BN_MP_GROW_C | | +--->BN_MP_LSHD_C @@ -4517,25 +5022,13 @@ BN_MP_N_ROOT_EX_C | | +--->BN_MP_CLAMP_C | +--->BN_S_MP_MUL_DIGS_C | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_EXCH_C | | +--->BN_MP_CLEAR_C -+--->BN_MP_SUB_C -| +--->BN_S_MP_ADD_C -| | +--->BN_MP_GROW_C -| | +--->BN_MP_CLAMP_C -| +--->BN_MP_CMP_MAG_C -| +--->BN_S_MP_SUB_C -| | +--->BN_MP_GROW_C -| | +--->BN_MP_CLAMP_C -+--->BN_MP_MUL_D_C -| +--->BN_MP_GROW_C -| +--->BN_MP_CLAMP_C +--->BN_MP_DIV_C | +--->BN_MP_CMP_MAG_C | +--->BN_MP_ZERO_C -| +--->BN_MP_INIT_MULTI_C -| | +--->BN_MP_CLEAR_C +| +--->BN_MP_SET_C | +--->BN_MP_COUNT_BITS_C | +--->BN_MP_ABS_C | +--->BN_MP_MUL_2D_C @@ -4543,40 +5036,112 @@ BN_MP_N_ROOT_EX_C | | +--->BN_MP_LSHD_C | | | +--->BN_MP_RSHD_C | | +--->BN_MP_CLAMP_C -| +--->BN_MP_CMP_C -| +--->BN_MP_ADD_C +| +--->BN_MP_SUB_C | | +--->BN_S_MP_ADD_C | | | +--->BN_MP_GROW_C | | | +--->BN_MP_CLAMP_C | | +--->BN_S_MP_SUB_C | | | +--->BN_MP_GROW_C | | | +--->BN_MP_CLAMP_C -| +--->BN_MP_DIV_2D_C -| | +--->BN_MP_MOD_2D_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_INIT_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_DIV_D_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_3_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_SQRT_C +| +--->BN_MP_N_ROOT_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_ZERO_C ++--->BN_MP_COUNT_BITS_C ++--->BN_MP_INIT_C ++--->BN_MP_SUB_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C ++--->BN_MP_EXPT_D_EX_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_SQR_C +| | +--->BN_MP_TOOM_SQR_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_KARATSUBA_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | +--->BN_FAST_S_MP_SQR_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SQR_C +| | | +--->BN_MP_INIT_SIZE_C | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_RSHD_C -| | +--->BN_MP_CLAMP_C -| +--->BN_MP_EXCH_C -| +--->BN_MP_CLEAR_MULTI_C -| | +--->BN_MP_CLEAR_C -| +--->BN_MP_INIT_SIZE_C -| +--->BN_MP_INIT_COPY_C -| | +--->BN_MP_CLEAR_C -| +--->BN_MP_LSHD_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C | | +--->BN_MP_GROW_C -| | +--->BN_MP_RSHD_C -| +--->BN_MP_RSHD_C -| +--->BN_MP_CLAMP_C -| +--->BN_MP_CLEAR_C -+--->BN_MP_CMP_C +| | +--->BN_MP_CLAMP_C | +--->BN_MP_CMP_MAG_C -+--->BN_MP_SUB_D_C -| +--->BN_MP_GROW_C -| +--->BN_MP_ADD_D_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C | | +--->BN_MP_CLAMP_C -| +--->BN_MP_CLAMP_C -+--->BN_MP_EXCH_C -+--->BN_MP_CLEAR_C BN_MP_OR_C @@ -4838,6 +5403,20 @@ BN_MP_PRIME_FERMAT_C | | | +--->BN_MP_RSHD_C | | | | +--->BN_MP_ZERO_C | | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_BALANCE_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_TOOM_MUL_C | | | | | +--->BN_MP_INIT_MULTI_C | | | | | +--->BN_MP_MOD_2D_C @@ -4965,6 +5544,22 @@ BN_MP_PRIME_FERMAT_C | | | | +--->BN_MP_RSHD_C | | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_BALANCE_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_TOOM_MUL_C | | | | | +--->BN_MP_INIT_MULTI_C | | | | | +--->BN_MP_MOD_2D_C @@ -5157,6 +5752,22 @@ BN_MP_PRIME_FERMAT_C | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_EXCH_C | | +--->BN_MP_MUL_C +| | | +--->BN_MP_BALANCE_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C | | | +--->BN_MP_TOOM_MUL_C | | | | +--->BN_MP_INIT_MULTI_C | | | | +--->BN_MP_MOD_2D_C @@ -5310,6 +5921,21 @@ BN_MP_PRIME_FERMAT_C | | | | +--->BN_MP_CLAMP_C | | +--->BN_MP_MULMOD_C | | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_BALANCE_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_TOOM_MUL_C | | | | | +--->BN_MP_INIT_MULTI_C | | | | | +--->BN_MP_MOD_2D_C @@ -5541,6 +6167,21 @@ BN_MP_PRIME_FERMAT_C | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_EXCH_C | | +--->BN_MP_MUL_C +| | | +--->BN_MP_BALANCE_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C | | | +--->BN_MP_TOOM_MUL_C | | | | +--->BN_MP_INIT_MULTI_C | | | | +--->BN_MP_MOD_2D_C @@ -5711,168 +6352,179 @@ BN_MP_PRIME_FROBENIUS_UNDERWOOD_C | | +--->BN_MP_SQRT_C | | | +--->BN_MP_N_ROOT_C | | | | +--->BN_MP_N_ROOT_EX_C -| | | | | +--->BN_MP_INIT_C -| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_INIT_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_2EXPT_C | | | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_COPY_C | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_EXPT_D_EX_C -| | | | | | +--->BN_MP_INIT_COPY_C -| | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | +--->BN_MP_CLEAR_C -| | | | | | +--->BN_MP_MUL_C -| | | | | | | +--->BN_MP_TOOM_MUL_C -| | | | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | | | | +--->BN_MP_CLEAR_C -| | | | | | | | +--->BN_MP_MOD_2D_C -| | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_RSHD_C -| | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXPT_D_C +| | | | | | +--->BN_MP_EXPT_D_EX_C +| | | | | | | +--->BN_MP_INIT_COPY_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_COPY_C | | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_ADD_C -| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_SET_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_MUL_C +| | | | | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_COPY_C | | | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_SUB_C -| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_SUB_C +| | | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_MUL_2D_C | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_MUL_D_C | | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_DIV_2_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_MUL_2D_C -| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | | +--->BN_MP_CLEAR_C | | | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_S_MP_MUL_DIGS_C | | | | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | | +--->BN_MP_EXCH_C | | | | | | | | | +--->BN_MP_CLEAR_C -| | | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLEAR_MULTI_C -| | | | | | | | | +--->BN_MP_CLEAR_C -| | | | | | | +--->BN_MP_KARATSUBA_MUL_C -| | | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_ADD_C -| | | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_SQR_C +| | | | | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_COPY_C | | | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_RSHD_C | | | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | +--->BN_MP_CLEAR_C -| | | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_S_MP_MUL_DIGS_C -| | | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_EXCH_C -| | | | | | | | +--->BN_MP_CLEAR_C -| | | | | | +--->BN_MP_CLEAR_C -| | | | | | +--->BN_MP_SQR_C -| | | | | | | +--->BN_MP_TOOM_SQR_C -| | | | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | | | +--->BN_MP_MOD_2D_C -| | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_RSHD_C -| | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | +--->BN_MP_MUL_2_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_ADD_C -| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_MUL_2_C | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_SUB_C +| | | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_MUL_D_C | | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_SUB_C +| | | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | | | +--->BN_S_MP_ADD_C | | | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | | +--->BN_MP_CMP_MAG_C | | | | | | | | | +--->BN_S_MP_SUB_C | | | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_DIV_2_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_MUL_2D_C -| | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_FAST_S_MP_SQR_C | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_S_MP_SQR_C | | | | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | | +--->BN_MP_EXCH_C -| | | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLEAR_MULTI_C -| | | | | | | +--->BN_MP_KARATSUBA_SQR_C -| | | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_RSHD_C -| | | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | +--->BN_MP_ADD_C -| | | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_FAST_S_MP_SQR_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_S_MP_SQR_C -| | | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_ADD_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_SUB_D_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_INIT_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C | | | | | | +--->BN_MP_TOOM_MUL_C -| | | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | | | +--->BN_MP_CLEAR_C | | | | | | | +--->BN_MP_MOD_2D_C | | | | | | | | +--->BN_MP_ZERO_C | | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_MP_RSHD_C | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | +--->BN_MP_MUL_2_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_ADD_C -| | | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_MP_SUB_C | | | | | | | | +--->BN_S_MP_ADD_C | | | | | | | | | +--->BN_MP_GROW_C @@ -5881,34 +6533,23 @@ BN_MP_PRIME_FROBENIUS_UNDERWOOD_C | | | | | | | | +--->BN_S_MP_SUB_C | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_DIV_2_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_MP_MUL_2D_C | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_MUL_D_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_MP_DIV_3_C | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | +--->BN_MP_INIT_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_EXCH_C | | | | | | | | +--->BN_MP_CLEAR_C | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLEAR_MULTI_C -| | | | | | | | +--->BN_MP_CLEAR_C | | | | | | +--->BN_MP_KARATSUBA_MUL_C | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_INIT_C | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_S_MP_ADD_C | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_ADD_C -| | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_S_MP_SUB_C | | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_LSHD_C @@ -5921,25 +6562,13 @@ BN_MP_PRIME_FROBENIUS_UNDERWOOD_C | | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_S_MP_MUL_DIGS_C | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_INIT_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_EXCH_C | | | | | | | +--->BN_MP_CLEAR_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_DIV_C | | | | | | +--->BN_MP_CMP_MAG_C | | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_SET_C | | | | | | +--->BN_MP_COUNT_BITS_C | | | | | | +--->BN_MP_ABS_C | | | | | | +--->BN_MP_MUL_2D_C @@ -5947,8 +6576,7 @@ BN_MP_PRIME_FROBENIUS_UNDERWOOD_C | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | +--->BN_MP_RSHD_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_C -| | | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_SUB_C | | | | | | | +--->BN_S_MP_ADD_C | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | +--->BN_MP_CLAMP_C @@ -5960,10 +6588,9 @@ BN_MP_PRIME_FROBENIUS_UNDERWOOD_C | | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_MP_RSHD_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | | | +--->BN_MP_CLEAR_MULTI_C -| | | | | | | +--->BN_MP_CLEAR_C | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_INIT_C +| | | | | | +--->BN_MP_INIT_C | | | | | | +--->BN_MP_INIT_COPY_C | | | | | | | +--->BN_MP_CLEAR_C | | | | | | +--->BN_MP_LSHD_C @@ -5972,15 +6599,80 @@ BN_MP_PRIME_FROBENIUS_UNDERWOOD_C | | | | | | +--->BN_MP_RSHD_C | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_CLEAR_C -| | | | | +--->BN_MP_CMP_C -| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_DIV_D_C +| | | | | | +--->BN_MP_DIV_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_INIT_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_INIT_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_INIT_C | | | | | +--->BN_MP_SUB_D_C | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_ADD_D_C -| | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_EXPT_D_EX_C +| | | | | | +--->BN_MP_INIT_COPY_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_SQR_C +| | | | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_SUB_C +| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_FAST_S_MP_SQR_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SQR_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_ZERO_C | | | +--->BN_MP_INIT_COPY_C | | | | +--->BN_MP_INIT_SIZE_C @@ -6391,6 +7083,20 @@ BN_MP_PRIME_FROBENIUS_UNDERWOOD_C | | | | | +--->BN_MP_RSHD_C | | | | | | +--->BN_MP_ZERO_C | | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C | | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | | +--->BN_MP_INIT_MULTI_C | | | | | | | +--->BN_MP_MOD_2D_C @@ -6510,6 +7216,22 @@ BN_MP_PRIME_FROBENIUS_UNDERWOOD_C | | | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_REDUCE_2K_L_C | | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C | | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | | +--->BN_MP_INIT_MULTI_C | | | | | | | +--->BN_MP_MOD_2D_C @@ -6696,6 +7418,22 @@ BN_MP_PRIME_FROBENIUS_UNDERWOOD_C | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | +--->BN_MP_INIT_MULTI_C | | | | | | +--->BN_MP_MOD_2D_C @@ -6833,6 +7571,21 @@ BN_MP_PRIME_FROBENIUS_UNDERWOOD_C | | | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_MULMOD_C | | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C | | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | | +--->BN_MP_INIT_MULTI_C | | | | | | | +--->BN_MP_MOD_2D_C @@ -7052,6 +7805,21 @@ BN_MP_PRIME_FROBENIUS_UNDERWOOD_C | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | +--->BN_MP_INIT_MULTI_C | | | | | | +--->BN_MP_MOD_2D_C @@ -7246,6 +8014,25 @@ BN_MP_PRIME_FROBENIUS_UNDERWOOD_C | | +--->BN_MP_INIT_C | | +--->BN_MP_SET_LONG_C | | +--->BN_MP_MUL_C +| | | +--->BN_MP_BALANCE_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C | | | +--->BN_MP_TOOM_MUL_C | | | | +--->BN_MP_INIT_MULTI_C | | | | | +--->BN_MP_CLEAR_C @@ -7794,6 +8581,16 @@ BN_MP_PRIME_FROBENIUS_UNDERWOOD_C | | +--->BN_MP_GROW_C | | +--->BN_MP_CLAMP_C +--->BN_MP_MUL_C +| +--->BN_MP_BALANCE_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C | +--->BN_MP_TOOM_MUL_C | | +--->BN_MP_MOD_2D_C | | | +--->BN_MP_ZERO_C @@ -8028,168 +8825,179 @@ BN_MP_PRIME_IS_PRIME_C | +--->BN_MP_SQRT_C | | +--->BN_MP_N_ROOT_C | | | +--->BN_MP_N_ROOT_EX_C -| | | | +--->BN_MP_INIT_C -| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_2EXPT_C | | | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_COPY_C | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_EXPT_D_EX_C -| | | | | +--->BN_MP_INIT_COPY_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_CLEAR_C -| | | | | +--->BN_MP_MUL_C -| | | | | | +--->BN_MP_TOOM_MUL_C -| | | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | | | +--->BN_MP_CLEAR_C -| | | | | | | +--->BN_MP_MOD_2D_C -| | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_RSHD_C -| | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXPT_D_C +| | | | | +--->BN_MP_EXPT_D_EX_C +| | | | | | +--->BN_MP_INIT_COPY_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_COPY_C | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_ADD_C -| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_SET_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_C +| | | | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_COPY_C | | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_SUB_C -| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_SUB_C +| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_MUL_2D_C | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_MUL_D_C | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_DIV_2_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_MUL_2D_C -| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_CLEAR_C | | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_S_MP_MUL_DIGS_C | | | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_EXCH_C -| | | | | | | | +--->BN_MP_CLEAR_C -| | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLEAR_MULTI_C | | | | | | | | +--->BN_MP_CLEAR_C -| | | | | | +--->BN_MP_KARATSUBA_MUL_C -| | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_ADD_C -| | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_SQR_C +| | | | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_COPY_C | | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | +--->BN_MP_GROW_C | | | | | | | | +--->BN_MP_RSHD_C | | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | +--->BN_MP_CLEAR_C -| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_S_MP_MUL_DIGS_C -| | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_EXCH_C -| | | | | | | +--->BN_MP_CLEAR_C -| | | | | +--->BN_MP_CLEAR_C -| | | | | +--->BN_MP_SQR_C -| | | | | | +--->BN_MP_TOOM_SQR_C -| | | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | | +--->BN_MP_MOD_2D_C -| | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_RSHD_C -| | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | +--->BN_MP_MUL_2_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_ADD_C -| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_SUB_C +| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_MUL_2D_C | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_MUL_D_C | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | | +--->BN_S_MP_ADD_C | | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_CMP_MAG_C | | | | | | | | +--->BN_S_MP_SUB_C | | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_DIV_2_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_MUL_2D_C -| | | | | | | | +--->BN_MP_GROW_C | | | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_FAST_S_MP_SQR_C | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_S_MP_SQR_C | | | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_EXCH_C -| | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLEAR_MULTI_C -| | | | | | +--->BN_MP_KARATSUBA_SQR_C -| | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_RSHD_C -| | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | +--->BN_MP_ADD_C -| | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_FAST_S_MP_SQR_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_S_MP_SQR_C -| | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_ADD_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_SUB_D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_INIT_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C | | | | | +--->BN_MP_TOOM_MUL_C -| | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | | +--->BN_MP_CLEAR_C | | | | | | +--->BN_MP_MOD_2D_C | | | | | | | +--->BN_MP_ZERO_C | | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_RSHD_C | | | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_MUL_2_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_ADD_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_SUB_C | | | | | | | +--->BN_S_MP_ADD_C | | | | | | | | +--->BN_MP_GROW_C @@ -8198,34 +9006,23 @@ BN_MP_PRIME_IS_PRIME_C | | | | | | | +--->BN_S_MP_SUB_C | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_DIV_2_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_MUL_2D_C | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_LSHD_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_MUL_D_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_DIV_3_C | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_INIT_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_EXCH_C | | | | | | | +--->BN_MP_CLEAR_C | | | | | | +--->BN_MP_LSHD_C | | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLEAR_MULTI_C -| | | | | | | +--->BN_MP_CLEAR_C | | | | | +--->BN_MP_KARATSUBA_MUL_C | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_INIT_C | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_S_MP_ADD_C | | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_ADD_C -| | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_S_MP_SUB_C | | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_LSHD_C @@ -8238,25 +9035,13 @@ BN_MP_PRIME_IS_PRIME_C | | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_S_MP_MUL_DIGS_C | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_INIT_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C | | | | | | +--->BN_MP_CLEAR_C -| | | | +--->BN_MP_SUB_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MUL_D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_DIV_C | | | | | +--->BN_MP_CMP_MAG_C | | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_SET_C | | | | | +--->BN_MP_COUNT_BITS_C | | | | | +--->BN_MP_ABS_C | | | | | +--->BN_MP_MUL_2D_C @@ -8264,8 +9049,7 @@ BN_MP_PRIME_IS_PRIME_C | | | | | | +--->BN_MP_LSHD_C | | | | | | | +--->BN_MP_RSHD_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_C -| | | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_SUB_C | | | | | | +--->BN_S_MP_ADD_C | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_CLAMP_C @@ -8277,10 +9061,9 @@ BN_MP_PRIME_IS_PRIME_C | | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_RSHD_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_CLEAR_MULTI_C -| | | | | | +--->BN_MP_CLEAR_C | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_INIT_C | | | | | +--->BN_MP_INIT_COPY_C | | | | | | +--->BN_MP_CLEAR_C | | | | | +--->BN_MP_LSHD_C @@ -8289,15 +9072,80 @@ BN_MP_PRIME_IS_PRIME_C | | | | | +--->BN_MP_RSHD_C | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_CLEAR_C -| | | | +--->BN_MP_CMP_C -| | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_DIV_D_C +| | | | | +--->BN_MP_DIV_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_INIT_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_INIT_C | | | | +--->BN_MP_SUB_D_C | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ADD_D_C -| | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_EXPT_D_EX_C +| | | | | +--->BN_MP_INIT_COPY_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_SQR_C +| | | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_FAST_S_MP_SQR_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SQR_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C | | +--->BN_MP_ZERO_C | | +--->BN_MP_INIT_COPY_C | | | +--->BN_MP_INIT_SIZE_C @@ -8708,6 +9556,20 @@ BN_MP_PRIME_IS_PRIME_C | | | | +--->BN_MP_RSHD_C | | | | | +--->BN_MP_ZERO_C | | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | +--->BN_MP_INIT_MULTI_C | | | | | | +--->BN_MP_MOD_2D_C @@ -8827,6 +9689,22 @@ BN_MP_PRIME_IS_PRIME_C | | | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_REDUCE_2K_L_C | | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | +--->BN_MP_INIT_MULTI_C | | | | | | +--->BN_MP_MOD_2D_C @@ -9013,6 +9891,22 @@ BN_MP_PRIME_IS_PRIME_C | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_EXCH_C | | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_BALANCE_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_TOOM_MUL_C | | | | | +--->BN_MP_INIT_MULTI_C | | | | | +--->BN_MP_MOD_2D_C @@ -9150,6 +10044,21 @@ BN_MP_PRIME_IS_PRIME_C | | | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_MULMOD_C | | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | +--->BN_MP_INIT_MULTI_C | | | | | | +--->BN_MP_MOD_2D_C @@ -9369,6 +10278,21 @@ BN_MP_PRIME_IS_PRIME_C | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_EXCH_C | | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_BALANCE_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_TOOM_MUL_C | | | | | +--->BN_MP_INIT_MULTI_C | | | | | +--->BN_MP_MOD_2D_C @@ -9759,6 +10683,16 @@ BN_MP_PRIME_IS_PRIME_C | | | +--->BN_MP_GROW_C | | | +--->BN_MP_CLAMP_C | +--->BN_MP_MUL_C +| | +--->BN_MP_BALANCE_MUL_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C | | +--->BN_MP_TOOM_MUL_C | | | +--->BN_MP_MOD_2D_C | | | | +--->BN_MP_ZERO_C @@ -9871,6 +10805,25 @@ BN_MP_PRIME_IS_PRIME_C | +--->BN_MP_INIT_C | +--->BN_MP_SET_LONG_C | +--->BN_MP_MUL_C +| | +--->BN_MP_BALANCE_MUL_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C | | +--->BN_MP_TOOM_MUL_C | | | +--->BN_MP_INIT_MULTI_C | | | | +--->BN_MP_CLEAR_C @@ -10460,6 +11413,20 @@ BN_MP_PRIME_MILLER_RABIN_C | | | +--->BN_MP_RSHD_C | | | | +--->BN_MP_ZERO_C | | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_BALANCE_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_TOOM_MUL_C | | | | | +--->BN_MP_INIT_MULTI_C | | | | | +--->BN_MP_MOD_2D_C @@ -10579,6 +11546,22 @@ BN_MP_PRIME_MILLER_RABIN_C | | | | +--->BN_MP_CLAMP_C | | +--->BN_MP_REDUCE_2K_L_C | | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_BALANCE_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_TOOM_MUL_C | | | | | +--->BN_MP_INIT_MULTI_C | | | | | +--->BN_MP_MOD_2D_C @@ -10765,6 +11748,22 @@ BN_MP_PRIME_MILLER_RABIN_C | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_EXCH_C | | +--->BN_MP_MUL_C +| | | +--->BN_MP_BALANCE_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C | | | +--->BN_MP_TOOM_MUL_C | | | | +--->BN_MP_INIT_MULTI_C | | | | +--->BN_MP_MOD_2D_C @@ -10902,6 +11901,21 @@ BN_MP_PRIME_MILLER_RABIN_C | | | | +--->BN_MP_CLAMP_C | | +--->BN_MP_MULMOD_C | | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_BALANCE_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_TOOM_MUL_C | | | | | +--->BN_MP_INIT_MULTI_C | | | | | +--->BN_MP_MOD_2D_C @@ -11121,6 +12135,21 @@ BN_MP_PRIME_MILLER_RABIN_C | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_EXCH_C | | +--->BN_MP_MUL_C +| | | +--->BN_MP_BALANCE_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C | | | +--->BN_MP_TOOM_MUL_C | | | | +--->BN_MP_INIT_MULTI_C | | | | +--->BN_MP_MOD_2D_C @@ -11421,165 +12450,170 @@ BN_MP_PRIME_NEXT_PRIME_C | | +--->BN_MP_SQRT_C | | | +--->BN_MP_N_ROOT_C | | | | +--->BN_MP_N_ROOT_EX_C -| | | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_2EXPT_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_EXPT_D_EX_C -| | | | | | +--->BN_MP_INIT_COPY_C -| | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | +--->BN_MP_CLEAR_C -| | | | | | +--->BN_MP_MUL_C -| | | | | | | +--->BN_MP_TOOM_MUL_C -| | | | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | | | | +--->BN_MP_CLEAR_C -| | | | | | | | +--->BN_MP_MOD_2D_C -| | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_RSHD_C -| | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXPT_D_C +| | | | | | +--->BN_MP_EXPT_D_EX_C +| | | | | | | +--->BN_MP_INIT_COPY_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_COPY_C | | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_ADD_C -| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_MUL_C +| | | | | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_COPY_C | | | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_SUB_C -| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_SUB_C +| | | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_MUL_2D_C | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_MUL_D_C | | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_DIV_2_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_MUL_2D_C -| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | | +--->BN_MP_CLEAR_C | | | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_S_MP_MUL_DIGS_C | | | | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | | +--->BN_MP_EXCH_C -| | | | | | | | | +--->BN_MP_CLEAR_C -| | | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLEAR_MULTI_C | | | | | | | | | +--->BN_MP_CLEAR_C -| | | | | | | +--->BN_MP_KARATSUBA_MUL_C -| | | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_ADD_C -| | | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_SQR_C +| | | | | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_COPY_C | | | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_RSHD_C | | | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | +--->BN_MP_CLEAR_C -| | | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_S_MP_MUL_DIGS_C -| | | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_EXCH_C -| | | | | | | | +--->BN_MP_CLEAR_C -| | | | | | +--->BN_MP_CLEAR_C -| | | | | | +--->BN_MP_SQR_C -| | | | | | | +--->BN_MP_TOOM_SQR_C -| | | | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | | | +--->BN_MP_MOD_2D_C -| | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_RSHD_C -| | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | +--->BN_MP_MUL_2_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_ADD_C -| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_MUL_2_C | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_SUB_C +| | | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_MUL_D_C | | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_SUB_C +| | | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | | | +--->BN_S_MP_ADD_C | | | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | | +--->BN_MP_CMP_MAG_C | | | | | | | | | +--->BN_S_MP_SUB_C | | | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_DIV_2_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_MUL_2D_C -| | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_FAST_S_MP_SQR_C | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_S_MP_SQR_C | | | | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | | +--->BN_MP_EXCH_C -| | | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLEAR_MULTI_C -| | | | | | | +--->BN_MP_KARATSUBA_SQR_C -| | | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_RSHD_C -| | | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | +--->BN_MP_ADD_C -| | | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_FAST_S_MP_SQR_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_S_MP_SQR_C -| | | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C | | | | | | +--->BN_MP_TOOM_MUL_C -| | | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | | | +--->BN_MP_CLEAR_C | | | | | | | +--->BN_MP_MOD_2D_C | | | | | | | | +--->BN_MP_ZERO_C | | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_MP_RSHD_C | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | +--->BN_MP_MUL_2_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_ADD_C -| | | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_MP_SUB_C | | | | | | | | +--->BN_S_MP_ADD_C | | | | | | | | | +--->BN_MP_GROW_C @@ -11588,34 +12622,21 @@ BN_MP_PRIME_NEXT_PRIME_C | | | | | | | | +--->BN_S_MP_SUB_C | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_DIV_2_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_MP_MUL_2D_C | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_MUL_D_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_MP_DIV_3_C | | | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_EXCH_C | | | | | | | | +--->BN_MP_CLEAR_C | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLEAR_MULTI_C -| | | | | | | | +--->BN_MP_CLEAR_C | | | | | | +--->BN_MP_KARATSUBA_MUL_C | | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_S_MP_ADD_C | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_ADD_C -| | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_S_MP_SUB_C | | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_LSHD_C @@ -11629,24 +12650,10 @@ BN_MP_PRIME_NEXT_PRIME_C | | | | | | +--->BN_S_MP_MUL_DIGS_C | | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_EXCH_C | | | | | | | +--->BN_MP_CLEAR_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_DIV_C | | | | | | +--->BN_MP_CMP_MAG_C | | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | | +--->BN_MP_CLEAR_C | | | | | | +--->BN_MP_COUNT_BITS_C | | | | | | +--->BN_MP_ABS_C | | | | | | +--->BN_MP_MUL_2D_C @@ -11654,8 +12661,7 @@ BN_MP_PRIME_NEXT_PRIME_C | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | +--->BN_MP_RSHD_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_C -| | | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_SUB_C | | | | | | | +--->BN_S_MP_ADD_C | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | +--->BN_MP_CLAMP_C @@ -11667,22 +12673,81 @@ BN_MP_PRIME_NEXT_PRIME_C | | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_MP_RSHD_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | | | +--->BN_MP_CLEAR_MULTI_C -| | | | | | | +--->BN_MP_CLEAR_C | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | +--->BN_MP_INIT_COPY_C | | | | | | | +--->BN_MP_CLEAR_C | | | | | | +--->BN_MP_LSHD_C | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CLEAR_C -| | | | | +--->BN_MP_CMP_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_DIV_D_C +| | | | | | +--->BN_MP_DIV_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_EXPT_D_EX_C +| | | | | | +--->BN_MP_INIT_COPY_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_SQR_C +| | | | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_SUB_C +| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_FAST_S_MP_SQR_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SQR_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_ZERO_C | | | +--->BN_MP_INIT_COPY_C | | | | +--->BN_MP_INIT_SIZE_C @@ -12051,6 +13116,20 @@ BN_MP_PRIME_NEXT_PRIME_C | | | | | +--->BN_MP_RSHD_C | | | | | | +--->BN_MP_ZERO_C | | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C | | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | | +--->BN_MP_INIT_MULTI_C | | | | | | | +--->BN_MP_MOD_2D_C @@ -12168,6 +13247,22 @@ BN_MP_PRIME_NEXT_PRIME_C | | | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_REDUCE_2K_L_C | | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C | | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | | +--->BN_MP_INIT_MULTI_C | | | | | | | +--->BN_MP_MOD_2D_C @@ -12353,6 +13448,22 @@ BN_MP_PRIME_NEXT_PRIME_C | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | +--->BN_MP_INIT_MULTI_C | | | | | | +--->BN_MP_MOD_2D_C @@ -12486,6 +13597,21 @@ BN_MP_PRIME_NEXT_PRIME_C | | | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_MULMOD_C | | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C | | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | | +--->BN_MP_INIT_MULTI_C | | | | | | | +--->BN_MP_MOD_2D_C @@ -12702,6 +13828,21 @@ BN_MP_PRIME_NEXT_PRIME_C | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | +--->BN_MP_INIT_MULTI_C | | | | | | +--->BN_MP_MOD_2D_C @@ -13076,6 +14217,15 @@ BN_MP_PRIME_NEXT_PRIME_C | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_CLAMP_C | | +--->BN_MP_MUL_C +| | | +--->BN_MP_BALANCE_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C | | | +--->BN_MP_TOOM_MUL_C | | | | +--->BN_MP_MOD_2D_C | | | | | +--->BN_MP_ZERO_C @@ -13182,6 +14332,25 @@ BN_MP_PRIME_NEXT_PRIME_C | | | +--->BN_MP_CLAMP_C | | +--->BN_MP_SET_LONG_C | | +--->BN_MP_MUL_C +| | | +--->BN_MP_BALANCE_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C | | | +--->BN_MP_TOOM_MUL_C | | | | +--->BN_MP_INIT_MULTI_C | | | | | +--->BN_MP_CLEAR_C @@ -13623,168 +14792,179 @@ BN_MP_PRIME_RANDOM_EX_C | | +--->BN_MP_SQRT_C | | | +--->BN_MP_N_ROOT_C | | | | +--->BN_MP_N_ROOT_EX_C -| | | | | +--->BN_MP_INIT_C -| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_INIT_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_2EXPT_C | | | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_COPY_C | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_EXPT_D_EX_C -| | | | | | +--->BN_MP_INIT_COPY_C -| | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | +--->BN_MP_CLEAR_C -| | | | | | +--->BN_MP_MUL_C -| | | | | | | +--->BN_MP_TOOM_MUL_C -| | | | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | | | | +--->BN_MP_CLEAR_C -| | | | | | | | +--->BN_MP_MOD_2D_C -| | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_RSHD_C -| | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXPT_D_C +| | | | | | +--->BN_MP_EXPT_D_EX_C +| | | | | | | +--->BN_MP_INIT_COPY_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_COPY_C | | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_ADD_C -| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_SET_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_MUL_C +| | | | | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_SUB_C +| | | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_MUL_2D_C | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_MUL_D_C | | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_SUB_C +| | | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | | | +--->BN_S_MP_ADD_C | | | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | | +--->BN_MP_CMP_MAG_C | | | | | | | | | +--->BN_S_MP_SUB_C | | | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_DIV_2_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_MUL_2D_C -| | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_S_MP_MUL_DIGS_C | | | | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | | +--->BN_MP_EXCH_C -| | | | | | | | | +--->BN_MP_CLEAR_C -| | | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLEAR_MULTI_C | | | | | | | | | +--->BN_MP_CLEAR_C -| | | | | | | +--->BN_MP_KARATSUBA_MUL_C -| | | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_ADD_C -| | | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_SQR_C +| | | | | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_COPY_C | | | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_RSHD_C | | | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | +--->BN_MP_CLEAR_C -| | | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_S_MP_MUL_DIGS_C -| | | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_EXCH_C -| | | | | | | | +--->BN_MP_CLEAR_C -| | | | | | +--->BN_MP_CLEAR_C -| | | | | | +--->BN_MP_SQR_C -| | | | | | | +--->BN_MP_TOOM_SQR_C -| | | | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | | | +--->BN_MP_MOD_2D_C -| | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_RSHD_C -| | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | +--->BN_MP_MUL_2_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_ADD_C -| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_MUL_2_C | | | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_SUB_C +| | | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_MUL_2D_C | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_SUB_C -| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_MUL_D_C | | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_DIV_2_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_MUL_2D_C -| | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_MUL_D_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | +--->BN_MP_KARATSUBA_SQR_C | | | | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | | +--->BN_MP_EXCH_C -| | | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLEAR_MULTI_C -| | | | | | | +--->BN_MP_KARATSUBA_SQR_C -| | | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_FAST_S_MP_SQR_C | | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_RSHD_C -| | | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | +--->BN_MP_ADD_C -| | | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_FAST_S_MP_SQR_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_S_MP_SQR_C -| | | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SQR_C +| | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_SUB_D_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_INIT_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C | | | | | | +--->BN_MP_TOOM_MUL_C -| | | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | | | +--->BN_MP_CLEAR_C | | | | | | | +--->BN_MP_MOD_2D_C | | | | | | | | +--->BN_MP_ZERO_C | | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_MP_RSHD_C | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | +--->BN_MP_MUL_2_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_ADD_C -| | | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_MP_SUB_C | | | | | | | | +--->BN_S_MP_ADD_C | | | | | | | | | +--->BN_MP_GROW_C @@ -13793,34 +14973,23 @@ BN_MP_PRIME_RANDOM_EX_C | | | | | | | | +--->BN_S_MP_SUB_C | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_DIV_2_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_MP_MUL_2D_C | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_MUL_D_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_MP_DIV_3_C | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | +--->BN_MP_INIT_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_EXCH_C | | | | | | | | +--->BN_MP_CLEAR_C | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLEAR_MULTI_C -| | | | | | | | +--->BN_MP_CLEAR_C | | | | | | +--->BN_MP_KARATSUBA_MUL_C | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_INIT_C | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_S_MP_ADD_C | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_ADD_C -| | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_S_MP_SUB_C | | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_LSHD_C @@ -13833,25 +15002,13 @@ BN_MP_PRIME_RANDOM_EX_C | | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_S_MP_MUL_DIGS_C | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_INIT_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_EXCH_C | | | | | | | +--->BN_MP_CLEAR_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_DIV_C | | | | | | +--->BN_MP_CMP_MAG_C | | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_SET_C | | | | | | +--->BN_MP_COUNT_BITS_C | | | | | | +--->BN_MP_ABS_C | | | | | | +--->BN_MP_MUL_2D_C @@ -13859,8 +15016,7 @@ BN_MP_PRIME_RANDOM_EX_C | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | +--->BN_MP_RSHD_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_C -| | | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_SUB_C | | | | | | | +--->BN_S_MP_ADD_C | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | +--->BN_MP_CLAMP_C @@ -13872,10 +15028,9 @@ BN_MP_PRIME_RANDOM_EX_C | | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_MP_RSHD_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | | | +--->BN_MP_CLEAR_MULTI_C -| | | | | | | +--->BN_MP_CLEAR_C | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_INIT_C +| | | | | | +--->BN_MP_INIT_C | | | | | | +--->BN_MP_INIT_COPY_C | | | | | | | +--->BN_MP_CLEAR_C | | | | | | +--->BN_MP_LSHD_C @@ -13884,15 +15039,80 @@ BN_MP_PRIME_RANDOM_EX_C | | | | | | +--->BN_MP_RSHD_C | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_CLEAR_C -| | | | | +--->BN_MP_CMP_C -| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_DIV_D_C +| | | | | | +--->BN_MP_DIV_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_INIT_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_INIT_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_INIT_C | | | | | +--->BN_MP_SUB_D_C | | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_ADD_D_C -| | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_EXPT_D_EX_C +| | | | | | +--->BN_MP_INIT_COPY_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_SQR_C +| | | | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_SUB_C +| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_FAST_S_MP_SQR_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SQR_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_ZERO_C | | | +--->BN_MP_INIT_COPY_C | | | | +--->BN_MP_INIT_SIZE_C @@ -14303,6 +15523,20 @@ BN_MP_PRIME_RANDOM_EX_C | | | | | +--->BN_MP_RSHD_C | | | | | | +--->BN_MP_ZERO_C | | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C | | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | | +--->BN_MP_INIT_MULTI_C | | | | | | | +--->BN_MP_MOD_2D_C @@ -14422,6 +15656,22 @@ BN_MP_PRIME_RANDOM_EX_C | | | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_REDUCE_2K_L_C | | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C | | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | | +--->BN_MP_INIT_MULTI_C | | | | | | | +--->BN_MP_MOD_2D_C @@ -14608,6 +15858,22 @@ BN_MP_PRIME_RANDOM_EX_C | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | +--->BN_MP_INIT_MULTI_C | | | | | | +--->BN_MP_MOD_2D_C @@ -14745,6 +16011,21 @@ BN_MP_PRIME_RANDOM_EX_C | | | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_MULMOD_C | | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C | | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | | +--->BN_MP_INIT_MULTI_C | | | | | | | +--->BN_MP_MOD_2D_C @@ -14964,6 +16245,21 @@ BN_MP_PRIME_RANDOM_EX_C | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | +--->BN_MP_INIT_MULTI_C | | | | | | +--->BN_MP_MOD_2D_C @@ -15354,6 +16650,16 @@ BN_MP_PRIME_RANDOM_EX_C | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_CLAMP_C | | +--->BN_MP_MUL_C +| | | +--->BN_MP_BALANCE_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C | | | +--->BN_MP_TOOM_MUL_C | | | | +--->BN_MP_MOD_2D_C | | | | | +--->BN_MP_ZERO_C @@ -15466,6 +16772,25 @@ BN_MP_PRIME_RANDOM_EX_C | | +--->BN_MP_INIT_C | | +--->BN_MP_SET_LONG_C | | +--->BN_MP_MUL_C +| | | +--->BN_MP_BALANCE_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C | | | +--->BN_MP_TOOM_MUL_C | | | | +--->BN_MP_INIT_MULTI_C | | | | | +--->BN_MP_CLEAR_C @@ -15930,168 +17255,179 @@ BN_MP_PRIME_STRONG_LUCAS_SELFRIDGE_C | | +--->BN_MP_SQRT_C | | | +--->BN_MP_N_ROOT_C | | | | +--->BN_MP_N_ROOT_EX_C -| | | | | +--->BN_MP_INIT_C -| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_INIT_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_2EXPT_C | | | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_COPY_C | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_EXPT_D_EX_C -| | | | | | +--->BN_MP_INIT_COPY_C -| | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | +--->BN_MP_CLEAR_C -| | | | | | +--->BN_MP_MUL_C -| | | | | | | +--->BN_MP_TOOM_MUL_C -| | | | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | | | | +--->BN_MP_CLEAR_C -| | | | | | | | +--->BN_MP_MOD_2D_C -| | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_RSHD_C -| | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXPT_D_C +| | | | | | +--->BN_MP_EXPT_D_EX_C +| | | | | | | +--->BN_MP_INIT_COPY_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_COPY_C | | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_ADD_C -| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_SET_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_MUL_C +| | | | | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_COPY_C | | | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_SUB_C -| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | +--->BN_MP_MUL_2_C | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_SUB_C +| | | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_MUL_D_C | | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_DIV_2_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_MUL_2D_C -| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | | +--->BN_MP_CLEAR_C | | | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_S_MP_MUL_DIGS_C | | | | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | | +--->BN_MP_EXCH_C -| | | | | | | | | +--->BN_MP_CLEAR_C -| | | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLEAR_MULTI_C | | | | | | | | | +--->BN_MP_CLEAR_C -| | | | | | | +--->BN_MP_KARATSUBA_MUL_C -| | | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_ADD_C -| | | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_SQR_C +| | | | | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_COPY_C | | | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_RSHD_C | | | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | +--->BN_MP_CLEAR_C -| | | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_S_MP_MUL_DIGS_C -| | | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_EXCH_C -| | | | | | | | +--->BN_MP_CLEAR_C -| | | | | | +--->BN_MP_CLEAR_C -| | | | | | +--->BN_MP_SQR_C -| | | | | | | +--->BN_MP_TOOM_SQR_C -| | | | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | | | +--->BN_MP_MOD_2D_C -| | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_RSHD_C -| | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | +--->BN_MP_MUL_2_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_ADD_C -| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_SUB_C +| | | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_MUL_2D_C | | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_MUL_D_C | | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_SUB_C +| | | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | | | +--->BN_S_MP_ADD_C | | | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | | +--->BN_MP_CMP_MAG_C | | | | | | | | | +--->BN_S_MP_SUB_C | | | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_DIV_2_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_MUL_2D_C -| | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_FAST_S_MP_SQR_C | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_S_MP_SQR_C | | | | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | | +--->BN_MP_EXCH_C -| | | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLEAR_MULTI_C -| | | | | | | +--->BN_MP_KARATSUBA_SQR_C -| | | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_LSHD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_RSHD_C -| | | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | | +--->BN_MP_ADD_C -| | | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | +--->BN_FAST_S_MP_SQR_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_S_MP_SQR_C -| | | | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_ADD_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_SUB_D_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_INIT_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C | | | | | | +--->BN_MP_TOOM_MUL_C -| | | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | | | +--->BN_MP_CLEAR_C | | | | | | | +--->BN_MP_MOD_2D_C | | | | | | | | +--->BN_MP_ZERO_C | | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_MP_RSHD_C | | | | | | | | +--->BN_MP_ZERO_C -| | | | | | | +--->BN_MP_MUL_2_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_ADD_C -| | | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_MP_SUB_C | | | | | | | | +--->BN_S_MP_ADD_C | | | | | | | | | +--->BN_MP_GROW_C @@ -16100,34 +17436,23 @@ BN_MP_PRIME_STRONG_LUCAS_SELFRIDGE_C | | | | | | | | +--->BN_S_MP_SUB_C | | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_DIV_2_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_MP_MUL_2D_C | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_MUL_D_C -| | | | | | | | +--->BN_MP_GROW_C -| | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_MP_DIV_3_C | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | +--->BN_MP_INIT_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | | +--->BN_MP_EXCH_C | | | | | | | | +--->BN_MP_CLEAR_C | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLEAR_MULTI_C -| | | | | | | | +--->BN_MP_CLEAR_C | | | | | | +--->BN_MP_KARATSUBA_MUL_C | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_INIT_C | | | | | | | +--->BN_MP_CLAMP_C | | | | | | | +--->BN_S_MP_ADD_C | | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_ADD_C -| | | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | | | +--->BN_S_MP_SUB_C -| | | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_S_MP_SUB_C | | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_LSHD_C @@ -16140,66 +17465,117 @@ BN_MP_PRIME_STRONG_LUCAS_SELFRIDGE_C | | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_S_MP_MUL_DIGS_C | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_INIT_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_EXCH_C | | | | | | | +--->BN_MP_CLEAR_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C -| | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C | | | | | +--->BN_MP_DIV_C | | | | | | +--->BN_MP_CMP_MAG_C | | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_SET_C | | | | | | +--->BN_MP_COUNT_BITS_C | | | | | | +--->BN_MP_ABS_C | | | | | | +--->BN_MP_MUL_2D_C | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_LSHD_C | | | | | | | | +--->BN_MP_RSHD_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_C -| | | | | | +--->BN_MP_ADD_C -| | | | | | | +--->BN_S_MP_ADD_C -| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2D_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_INIT_C +| | | | | | +--->BN_MP_INIT_C +| | | | | | +--->BN_MP_INIT_COPY_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_DIV_D_C +| | | | | | +--->BN_MP_DIV_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_INIT_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_INIT_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_SUB_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_EXPT_D_EX_C +| | | | | | +--->BN_MP_INIT_COPY_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_SQR_C +| | | | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_SUB_C +| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_FAST_S_MP_SQR_C | | | | | | | | +--->BN_MP_GROW_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_DIV_2D_C -| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_S_MP_SQR_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | | +--->BN_MP_RSHD_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | | | +--->BN_MP_CLEAR_MULTI_C -| | | | | | | +--->BN_MP_CLEAR_C -| | | | | | +--->BN_MP_INIT_SIZE_C -| | | | | | +--->BN_MP_INIT_COPY_C -| | | | | | | +--->BN_MP_CLEAR_C -| | | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CLEAR_C -| | | | | +--->BN_MP_CMP_C +| | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_MP_SUB_D_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_ADD_D_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_CLEAR_C | | | +--->BN_MP_ZERO_C | | | +--->BN_MP_INIT_COPY_C | | | | +--->BN_MP_INIT_SIZE_C @@ -16610,6 +17986,20 @@ BN_MP_PRIME_STRONG_LUCAS_SELFRIDGE_C | | | | | +--->BN_MP_RSHD_C | | | | | | +--->BN_MP_ZERO_C | | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C | | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | | +--->BN_MP_INIT_MULTI_C | | | | | | | +--->BN_MP_MOD_2D_C @@ -16729,6 +18119,22 @@ BN_MP_PRIME_STRONG_LUCAS_SELFRIDGE_C | | | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_REDUCE_2K_L_C | | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C | | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | | +--->BN_MP_INIT_MULTI_C | | | | | | | +--->BN_MP_MOD_2D_C @@ -16915,6 +18321,22 @@ BN_MP_PRIME_STRONG_LUCAS_SELFRIDGE_C | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | +--->BN_MP_INIT_MULTI_C | | | | | | +--->BN_MP_MOD_2D_C @@ -17052,6 +18474,21 @@ BN_MP_PRIME_STRONG_LUCAS_SELFRIDGE_C | | | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_MULMOD_C | | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C | | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | | +--->BN_MP_INIT_MULTI_C | | | | | | | +--->BN_MP_MOD_2D_C @@ -17271,6 +18708,21 @@ BN_MP_PRIME_STRONG_LUCAS_SELFRIDGE_C | | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C | | | | | +--->BN_MP_TOOM_MUL_C | | | | | | +--->BN_MP_INIT_MULTI_C | | | | | | +--->BN_MP_MOD_2D_C @@ -17661,6 +19113,16 @@ BN_MP_PRIME_STRONG_LUCAS_SELFRIDGE_C | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_CLAMP_C | | +--->BN_MP_MUL_C +| | | +--->BN_MP_BALANCE_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C | | | +--->BN_MP_TOOM_MUL_C | | | | +--->BN_MP_MOD_2D_C | | | | | +--->BN_MP_ZERO_C @@ -17806,6 +19268,25 @@ BN_MP_PRIME_STRONG_LUCAS_SELFRIDGE_C +--->BN_MP_INIT_C +--->BN_MP_SET_LONG_C +--->BN_MP_MUL_C +| +--->BN_MP_BALANCE_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C | +--->BN_MP_TOOM_MUL_C | | +--->BN_MP_INIT_MULTI_C | | | +--->BN_MP_CLEAR_C @@ -18121,12 +19602,78 @@ BN_MP_PRIME_STRONG_LUCAS_SELFRIDGE_C BN_MP_RADIX_SIZE_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_SET_INT_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C +--->BN_MP_COUNT_BITS_C ++--->BN_MP_INIT_MULTI_C +| +--->BN_MP_INIT_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_INIT_C ++--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_MUL_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_GROW_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_DIV_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_ABS_C +| +--->BN_MP_CMP_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_MUL_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_CLEAR_C +--->BN_MP_INIT_COPY_C | +--->BN_MP_INIT_SIZE_C | +--->BN_MP_COPY_C | | +--->BN_MP_GROW_C -| +--->BN_MP_CLEAR_C +--->BN_MP_DIV_D_C | +--->BN_MP_COPY_C | | +--->BN_MP_GROW_C @@ -18140,12 +19687,9 @@ BN_MP_RADIX_SIZE_C | | +--->BN_MP_INIT_SIZE_C | | +--->BN_MP_CLAMP_C | | +--->BN_MP_EXCH_C -| | +--->BN_MP_CLEAR_C | +--->BN_MP_INIT_SIZE_C | +--->BN_MP_CLAMP_C | +--->BN_MP_EXCH_C -| +--->BN_MP_CLEAR_C -+--->BN_MP_CLEAR_C BN_MP_RADIX_SMAP_C @@ -18234,6 +19778,25 @@ BN_MP_REDUCE_2K_L_C | +--->BN_MP_RSHD_C | +--->BN_MP_CLAMP_C +--->BN_MP_MUL_C +| +--->BN_MP_BALANCE_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C | +--->BN_MP_TOOM_MUL_C | | +--->BN_MP_INIT_MULTI_C | | | +--->BN_MP_CLEAR_C @@ -18407,6 +19970,23 @@ BN_MP_REDUCE_C +--->BN_MP_RSHD_C | +--->BN_MP_ZERO_C +--->BN_MP_MUL_C +| +--->BN_MP_BALANCE_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C | +--->BN_MP_TOOM_MUL_C | | +--->BN_MP_INIT_MULTI_C | | | +--->BN_MP_CLEAR_C @@ -19135,6 +20715,19 @@ BN_MP_SQRTMOD_PRIME_C | | | | | +--->BN_MP_GROW_C | | | +--->BN_MP_RSHD_C | | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_BALANCE_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_TOOM_MUL_C | | | | | +--->BN_MP_MOD_2D_C | | | | | | +--->BN_MP_COPY_C @@ -19253,6 +20846,20 @@ BN_MP_SQRTMOD_PRIME_C | | | | +--->BN_MP_RSHD_C | | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_BALANCE_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_TOOM_MUL_C | | | | | +--->BN_MP_MOD_2D_C | | | | | | +--->BN_MP_COPY_C @@ -19429,6 +21036,20 @@ BN_MP_SQRTMOD_PRIME_C | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_EXCH_C | | +--->BN_MP_MUL_C +| | | +--->BN_MP_BALANCE_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C | | | +--->BN_MP_TOOM_MUL_C | | | | +--->BN_MP_MOD_2D_C | | | | | +--->BN_MP_CLAMP_C @@ -19567,6 +21188,19 @@ BN_MP_SQRTMOD_PRIME_C | | | | +--->BN_MP_CLAMP_C | | +--->BN_MP_MULMOD_C | | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_BALANCE_MUL_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_TOOM_MUL_C | | | | | +--->BN_MP_MOD_2D_C | | | | | | +--->BN_MP_COPY_C @@ -19779,6 +21413,19 @@ BN_MP_SQRTMOD_PRIME_C | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_EXCH_C | | +--->BN_MP_MUL_C +| | | +--->BN_MP_BALANCE_MUL_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C | | | +--->BN_MP_TOOM_MUL_C | | | | +--->BN_MP_MOD_2D_C | | | | | +--->BN_MP_CLAMP_C @@ -19964,6 +21611,21 @@ BN_MP_SQRTMOD_PRIME_C | +--->BN_MP_INIT_SIZE_C | | +--->BN_MP_INIT_C | +--->BN_MP_MUL_C +| | +--->BN_MP_BALANCE_MUL_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C | | +--->BN_MP_TOOM_MUL_C | | | +--->BN_MP_MOD_2D_C | | | | +--->BN_MP_CLAMP_C @@ -20083,168 +21745,179 @@ BN_MP_SQRTMOD_PRIME_C BN_MP_SQRT_C +--->BN_MP_N_ROOT_C | +--->BN_MP_N_ROOT_EX_C -| | +--->BN_MP_INIT_C -| | +--->BN_MP_SET_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_2EXPT_C | | | +--->BN_MP_ZERO_C -| | +--->BN_MP_COPY_C | | | +--->BN_MP_GROW_C -| | +--->BN_MP_EXPT_D_EX_C -| | | +--->BN_MP_INIT_COPY_C -| | | | +--->BN_MP_INIT_SIZE_C -| | | | +--->BN_MP_CLEAR_C -| | | +--->BN_MP_MUL_C -| | | | +--->BN_MP_TOOM_MUL_C -| | | | | +--->BN_MP_INIT_MULTI_C -| | | | | | +--->BN_MP_CLEAR_C -| | | | | +--->BN_MP_MOD_2D_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_MUL_2_C +| | +--->BN_MP_CMP_C +| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXPT_D_C +| | | +--->BN_MP_EXPT_D_EX_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_COPY_C | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_BALANCE_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_LSHD_C | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_COPY_C | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_SUB_C -| | | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_MUL_D_C | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_DIV_2_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_2D_C -| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLEAR_C | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_S_MP_MUL_DIGS_C | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C | | | | | | +--->BN_MP_CLEAR_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLEAR_MULTI_C -| | | | | | +--->BN_MP_CLEAR_C -| | | | +--->BN_MP_KARATSUBA_MUL_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_SQR_C +| | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_COPY_C | | | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_RSHD_C | | | | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_CLEAR_C -| | | | +--->BN_FAST_S_MP_MUL_DIGS_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_MUL_DIGS_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_CLEAR_C -| | | +--->BN_MP_CLEAR_C -| | | +--->BN_MP_SQR_C -| | | | +--->BN_MP_TOOM_SQR_C -| | | | | +--->BN_MP_INIT_MULTI_C -| | | | | +--->BN_MP_MOD_2D_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_RSHD_C -| | | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_MUL_2_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_MUL_2_C | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_MUL_D_C | | | | | | | +--->BN_MP_GROW_C | | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C | | | | | | +--->BN_S_MP_ADD_C | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_CMP_MAG_C | | | | | | +--->BN_S_MP_SUB_C | | | | | | | +--->BN_MP_GROW_C -| | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_DIV_2_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_2D_C -| | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_FAST_S_MP_SQR_C | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_S_MP_SQR_C | | | | | | +--->BN_MP_INIT_SIZE_C | | | | | | +--->BN_MP_CLAMP_C -| | | | | | +--->BN_MP_EXCH_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLEAR_MULTI_C -| | | | +--->BN_MP_KARATSUBA_SQR_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_LSHD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_RSHD_C -| | | | | | | +--->BN_MP_ZERO_C -| | | | | +--->BN_MP_ADD_C -| | | | | | +--->BN_MP_CMP_MAG_C -| | | | +--->BN_FAST_S_MP_SQR_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_S_MP_SQR_C -| | | | | +--->BN_MP_INIT_SIZE_C -| | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_ADD_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SUB_D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C | | +--->BN_MP_MUL_C +| | | +--->BN_MP_BALANCE_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C | | | +--->BN_MP_TOOM_MUL_C -| | | | +--->BN_MP_INIT_MULTI_C -| | | | | +--->BN_MP_CLEAR_C | | | | +--->BN_MP_MOD_2D_C | | | | | +--->BN_MP_ZERO_C | | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_RSHD_C | | | | | +--->BN_MP_ZERO_C -| | | | +--->BN_MP_MUL_2_C -| | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_S_MP_ADD_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C -| | | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_SUB_C | | | | | +--->BN_S_MP_ADD_C | | | | | | +--->BN_MP_GROW_C @@ -20253,34 +21926,23 @@ BN_MP_SQRT_C | | | | | +--->BN_S_MP_SUB_C | | | | | | +--->BN_MP_GROW_C | | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_DIV_2_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_MUL_2D_C | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_LSHD_C | | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_MUL_D_C -| | | | | +--->BN_MP_GROW_C -| | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_DIV_3_C | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_C | | | | | +--->BN_MP_CLAMP_C -| | | | | +--->BN_MP_EXCH_C | | | | | +--->BN_MP_CLEAR_C | | | | +--->BN_MP_LSHD_C | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLEAR_MULTI_C -| | | | | +--->BN_MP_CLEAR_C | | | +--->BN_MP_KARATSUBA_MUL_C | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_S_MP_ADD_C | | | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_ADD_C -| | | | | +--->BN_MP_CMP_MAG_C -| | | | | +--->BN_S_MP_SUB_C -| | | | | | +--->BN_MP_GROW_C | | | | +--->BN_S_MP_SUB_C | | | | | +--->BN_MP_GROW_C | | | | +--->BN_MP_LSHD_C @@ -20293,25 +21955,13 @@ BN_MP_SQRT_C | | | | +--->BN_MP_CLAMP_C | | | +--->BN_S_MP_MUL_DIGS_C | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C | | | | +--->BN_MP_CLAMP_C -| | | | +--->BN_MP_EXCH_C | | | | +--->BN_MP_CLEAR_C -| | +--->BN_MP_SUB_C -| | | +--->BN_S_MP_ADD_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_CMP_MAG_C -| | | +--->BN_S_MP_SUB_C -| | | | +--->BN_MP_GROW_C -| | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_MUL_D_C -| | | +--->BN_MP_GROW_C -| | | +--->BN_MP_CLAMP_C | | +--->BN_MP_DIV_C | | | +--->BN_MP_CMP_MAG_C | | | +--->BN_MP_ZERO_C -| | | +--->BN_MP_INIT_MULTI_C -| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_SET_C | | | +--->BN_MP_COUNT_BITS_C | | | +--->BN_MP_ABS_C | | | +--->BN_MP_MUL_2D_C @@ -20319,8 +21969,7 @@ BN_MP_SQRT_C | | | | +--->BN_MP_LSHD_C | | | | | +--->BN_MP_RSHD_C | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_CMP_C -| | | +--->BN_MP_ADD_C +| | | +--->BN_MP_SUB_C | | | | +--->BN_S_MP_ADD_C | | | | | +--->BN_MP_GROW_C | | | | | +--->BN_MP_CLAMP_C @@ -20332,10 +21981,9 @@ BN_MP_SQRT_C | | | | | +--->BN_MP_CLAMP_C | | | | +--->BN_MP_RSHD_C | | | | +--->BN_MP_CLAMP_C -| | | +--->BN_MP_EXCH_C -| | | +--->BN_MP_CLEAR_MULTI_C -| | | | +--->BN_MP_CLEAR_C | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_INIT_C | | | +--->BN_MP_INIT_COPY_C | | | | +--->BN_MP_CLEAR_C | | | +--->BN_MP_LSHD_C @@ -20344,15 +21992,80 @@ BN_MP_SQRT_C | | | +--->BN_MP_RSHD_C | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_CLEAR_C -| | +--->BN_MP_CMP_C -| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_DIV_D_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_INIT_C | | +--->BN_MP_SUB_D_C | | | +--->BN_MP_GROW_C -| | | +--->BN_MP_ADD_D_C -| | | | +--->BN_MP_CLAMP_C | | | +--->BN_MP_CLAMP_C -| | +--->BN_MP_EXCH_C | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_EXPT_D_EX_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_SQR_C +| | | | +--->BN_MP_TOOM_SQR_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_FAST_S_MP_SQR_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +--->BN_MP_ZERO_C +--->BN_MP_INIT_COPY_C | +--->BN_MP_INIT_SIZE_C @@ -20756,6 +22469,22 @@ BN_MP_TOOM_MUL_C +--->BN_MP_RSHD_C | +--->BN_MP_ZERO_C +--->BN_MP_MUL_C +| +--->BN_MP_BALANCE_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C | +--->BN_MP_KARATSUBA_MUL_C | | +--->BN_MP_INIT_SIZE_C | | | +--->BN_MP_INIT_C @@ -21117,6 +22846,21 @@ BN_S_MP_EXPTMOD_C | +--->BN_MP_RSHD_C | | +--->BN_MP_ZERO_C | +--->BN_MP_MUL_C +| | +--->BN_MP_BALANCE_MUL_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C | | +--->BN_MP_TOOM_MUL_C | | | +--->BN_MP_INIT_MULTI_C | | | +--->BN_MP_MOD_2D_C @@ -21246,6 +22990,23 @@ BN_S_MP_EXPTMOD_C | | +--->BN_MP_RSHD_C | | +--->BN_MP_CLAMP_C | +--->BN_MP_MUL_C +| | +--->BN_MP_BALANCE_MUL_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C | | +--->BN_MP_TOOM_MUL_C | | | +--->BN_MP_INIT_MULTI_C | | | +--->BN_MP_MOD_2D_C @@ -21442,6 +23203,23 @@ BN_S_MP_EXPTMOD_C | | +--->BN_MP_CLAMP_C | | +--->BN_MP_EXCH_C +--->BN_MP_MUL_C +| +--->BN_MP_BALANCE_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C | +--->BN_MP_TOOM_MUL_C | | +--->BN_MP_INIT_MULTI_C | | +--->BN_MP_MOD_2D_C diff --git a/demo/test.c b/demo/test.c index e316ef3a6..eaec51628 100644 --- a/demo/test.c +++ b/demo/test.c @@ -1,6 +1,6 @@ #include "shared.h" - -static int test_trivial_stuff(void) { +static int test_trivial_stuff(void) +{ mp_int a, b, c, d; if (mp_init_multi(&a, &b, &c, &d, NULL)!= MP_OKAY) { return EXIT_FAILURE; @@ -11,7 +11,7 @@ static int test_trivial_stuff(void) { /* a: 5-> b: -5 */ mp_neg(&a, &b); if (mp_cmp(&a, &b) != MP_GT) { - goto LBL_ERR; + goto LBL_ERR; } if (mp_cmp(&b, &a) != MP_LT) { goto LBL_ERR; @@ -62,12 +62,13 @@ static int test_trivial_stuff(void) { mp_clear_multi(&a, &b, &c, &d, NULL); return EXIT_SUCCESS; - LBL_ERR: +LBL_ERR: mp_clear_multi(&a, &b, &c, &d, NULL); return EXIT_FAILURE; } -static int test_mp_jacobi(void) { +static int test_mp_jacobi(void) +{ struct mp_jacobi_st { unsigned long n; int c[16]; @@ -121,12 +122,13 @@ static int test_mp_jacobi(void) { mp_clear_multi(&a, &b, NULL); return EXIT_SUCCESS; - LBL_ERR: +LBL_ERR: mp_clear_multi(&a, &b, NULL); return EXIT_FAILURE; } -static int test_mp_kronecker(void) { +static int test_mp_kronecker(void) +{ struct mp_kronecker_st { long n; int c[21]; @@ -203,12 +205,13 @@ static int test_mp_kronecker(void) { mp_clear_multi(&a, &b, NULL); return EXIT_SUCCESS; - LBL_ERR: +LBL_ERR: mp_clear_multi(&a, &b, NULL); return EXIT_FAILURE; } -static int test_mp_complement(void) { +static int test_mp_complement(void) +{ int i; mp_int a, b, c; @@ -236,12 +239,13 @@ static int test_mp_complement(void) { mp_clear_multi(&a, &b, &c, NULL); return EXIT_SUCCESS; - LBL_ERR: +LBL_ERR: mp_clear_multi(&a, &b, &c, NULL); return EXIT_FAILURE; } -static int test_mp_tc_div_2d(void) { +static int test_mp_tc_div_2d(void) +{ int i; mp_int a, b, d; @@ -272,13 +276,14 @@ static int test_mp_tc_div_2d(void) { mp_clear_multi(&a, &b, &d, NULL); return EXIT_SUCCESS; - LBL_ERR: +LBL_ERR: mp_clear_multi(&a, &b, &d, NULL); return EXIT_FAILURE; } -static int test_mp_tc_xor(void) { +static int test_mp_tc_xor(void) +{ int i; mp_int a, b, c, d; @@ -312,13 +317,14 @@ static int test_mp_tc_xor(void) { mp_clear_multi(&a, &b, &c, &d, NULL); return EXIT_SUCCESS; - LBL_ERR: +LBL_ERR: mp_clear_multi(&a, &b, &c, &d, NULL); return EXIT_FAILURE; } -static int test_mp_tc_or(void) { +static int test_mp_tc_or(void) +{ int i; mp_int a, b, c, d; @@ -352,12 +358,13 @@ static int test_mp_tc_or(void) { mp_clear_multi(&a, &b, &c, &d, NULL); return EXIT_SUCCESS; - LBL_ERR: +LBL_ERR: mp_clear_multi(&a, &b, &c, &d, NULL); return EXIT_FAILURE; } -static int test_mp_tc_and(void) { +static int test_mp_tc_and(void) +{ int i; mp_int a, b, c, d; @@ -391,12 +398,13 @@ static int test_mp_tc_and(void) { mp_clear_multi(&a, &b, &c, &d, NULL); return EXIT_SUCCESS; - LBL_ERR: +LBL_ERR: mp_clear_multi(&a, &b, &c, &d, NULL); return EXIT_FAILURE; } -static int test_mp_invmod(void) { +static int test_mp_invmod(void) +{ mp_int a, b, c, d; if (mp_init_multi(&a, &b, &c, &d, NULL)!= MP_OKAY) { return EXIT_FAILURE; @@ -434,13 +442,14 @@ static int test_mp_invmod(void) { mp_clear_multi(&a, &b, &c, &d, NULL); return EXIT_SUCCESS; - LBL_ERR: +LBL_ERR: mp_clear_multi(&a, &b, &c, &d, NULL); return EXIT_FAILURE; } -static int test_mp_set_double(void) { +static int test_mp_set_double(void) +{ int i; mp_int a, b; @@ -491,13 +500,14 @@ static int test_mp_set_double(void) { mp_clear_multi(&a, &b, NULL); return EXIT_SUCCESS; - LBL_ERR: +LBL_ERR: mp_clear_multi(&a, &b, NULL); return EXIT_FAILURE; } -static int test_mp_get_int(void) { +static int test_mp_get_int(void) +{ unsigned long t; int i; @@ -527,12 +537,13 @@ static int test_mp_get_int(void) { mp_clear_multi(&a, &b, NULL); return EXIT_SUCCESS; - LBL_ERR: +LBL_ERR: mp_clear_multi(&a, &b, NULL); return EXIT_FAILURE; } -static int test_mp_get_long(void) { +static int test_mp_get_long(void) +{ unsigned long s, t; int i; @@ -562,12 +573,13 @@ static int test_mp_get_long(void) { mp_clear_multi(&a, &b, NULL); return EXIT_SUCCESS; - LBL_ERR: +LBL_ERR: mp_clear_multi(&a, &b, NULL); return EXIT_FAILURE; } -static int test_mp_get_long_long(void) { +static int test_mp_get_long_long(void) +{ unsigned long long q, r; int i; @@ -597,13 +609,14 @@ static int test_mp_get_long_long(void) { mp_clear_multi(&a, &b, NULL); return EXIT_SUCCESS; - LBL_ERR: +LBL_ERR: mp_clear_multi(&a, &b, NULL); return EXIT_FAILURE; } -static int test_mp_sqrt(void) { +static int test_mp_sqrt(void) +{ int i, n; mp_int a, b, c, d; @@ -634,12 +647,13 @@ static int test_mp_sqrt(void) { mp_clear_multi(&a, &b, &c, &d, NULL); return EXIT_SUCCESS; - LBL_ERR: +LBL_ERR: mp_clear_multi(&a, &b, &c, &d, NULL); return EXIT_FAILURE; } -static int test_mp_is_square(void) { +static int test_mp_is_square(void) +{ int i, n; mp_int a, b; @@ -680,12 +694,13 @@ static int test_mp_is_square(void) { mp_clear_multi(&a, &b, NULL); return EXIT_SUCCESS; - LBL_ERR: +LBL_ERR: mp_clear_multi(&a, &b, NULL); return EXIT_FAILURE; } -static int test_mp_sqrtmod_prime(void) { +static int test_mp_sqrtmod_prime(void) +{ struct mp_sqrtmod_prime_st { unsigned long p; unsigned long n; @@ -721,7 +736,7 @@ static int test_mp_sqrtmod_prime(void) { mp_clear_multi(&a, &b, &c, NULL); return EXIT_SUCCESS; - LBL_ERR: +LBL_ERR: mp_clear_multi(&a, &b, &c, NULL); return EXIT_FAILURE; } @@ -751,7 +766,8 @@ static int myrng(unsigned char *dst, int len, void *dat) return len; } -static int test_mp_prime_random_ex(void) { +static int test_mp_prime_random_ex(void) +{ int ix, err; mp_int a, b; @@ -779,12 +795,13 @@ static int test_mp_prime_random_ex(void) { mp_clear_multi(&a, &b, NULL); return EXIT_SUCCESS; - LBL_ERR: +LBL_ERR: mp_clear_multi(&a, &b, NULL); return EXIT_FAILURE; } -static int test_mp_prime_is_prime(void) { +static int test_mp_prime_is_prime(void) +{ int ix, err, cnt; mp_int a, b; @@ -885,13 +902,14 @@ static int test_mp_prime_is_prime(void) { mp_clear_multi(&a, &b, NULL); return EXIT_SUCCESS; - LBL_ERR: +LBL_ERR: mp_clear_multi(&a, &b, NULL); return EXIT_FAILURE; } -static int test_mp_montgomery_reduce(void) { +static int test_mp_montgomery_reduce(void) +{ mp_digit mp; int ix, i, n; char buf[4096]; @@ -948,13 +966,14 @@ static int test_mp_montgomery_reduce(void) { mp_clear_multi(&a, &b, &c, &d, &e, NULL); return EXIT_SUCCESS; - LBL_ERR: +LBL_ERR: mp_clear_multi(&a, &b, &c, &d, &e, NULL); return EXIT_FAILURE; } -static int test_mp_read_radix(void) { +static int test_mp_read_radix(void) +{ char buf[4096]; mp_int a; @@ -984,7 +1003,8 @@ static int test_mp_read_radix(void) { return EXIT_SUCCESS; } -static int test_mp_cnt_lsb(void) { +static int test_mp_cnt_lsb(void) +{ int ix; mp_int a, b; @@ -1003,13 +1023,14 @@ static int test_mp_cnt_lsb(void) { mp_clear_multi(&a, &b, NULL); return EXIT_SUCCESS; - LBL_ERR: +LBL_ERR: mp_clear_multi(&a, &b, NULL); return EXIT_FAILURE; } -static int test_mp_reduce_2k(void) { +static int test_mp_reduce_2k(void) +{ int ix, cnt; mp_int a, b, c, d; @@ -1046,12 +1067,13 @@ static int test_mp_reduce_2k(void) { mp_clear_multi(&a, &b, &c, &d, NULL); return EXIT_SUCCESS; - LBL_ERR: +LBL_ERR: mp_clear_multi(&a, &b, &c, &d, NULL); return EXIT_FAILURE; } -static int test_mp_div_3(void) { +static int test_mp_div_3(void) +{ int cnt; mp_int a, b, c, d, e; @@ -1081,12 +1103,13 @@ static int test_mp_div_3(void) { mp_clear_multi(&a, &b, &c, &d, &e, NULL); return EXIT_SUCCESS; - LBL_ERR: +LBL_ERR: mp_clear_multi(&a, &b, &c, &d, &e, NULL); return EXIT_FAILURE; } -static int test_mp_dr_reduce(void) { +static int test_mp_dr_reduce(void) +{ mp_digit mp; int cnt; unsigned rr; @@ -1136,12 +1159,13 @@ static int test_mp_dr_reduce(void) { mp_clear_multi(&a, &b, &c, NULL); return EXIT_SUCCESS; - LBL_ERR: +LBL_ERR: mp_clear_multi(&a, &b, &c, NULL); return EXIT_FAILURE; } -static int test_mp_reduce_2k_l(void) { +static int test_mp_reduce_2k_l(void) +{ # if LTM_DEMO_TEST_REDUCE_2K_L mp_int a, b; if (mp_init_multi(&a, &b, NULL)!= MP_OKAY) { @@ -1197,7 +1221,7 @@ static int test_mp_reduce_2k_l(void) { mp_clear_multi(&a, &b, NULL); return EXIT_SUCCESS; - LBL_ERR: +LBL_ERR: mp_clear_multi(&a, &b, NULL); return EXIT_FAILURE; #else @@ -1205,9 +1229,241 @@ static int test_mp_reduce_2k_l(void) { # endif /* LTM_DEMO_TEST_REDUCE_2K_L */ } -int unit_tests(void) { +static int test_mp_radix_size(void) +{ + mp_int a; + int i, len; + /* Just a random number */ + const char *rand_a = + "5LakA2KmzhcVEwtcZlbVAAfalr3WdcMFaW7i+awtyny8iWD/6Di8+cBSSlGvWY6slk4wkuqU+xXLcsPzLeZy/wsuc+DOvI+BVZgkbq76SEwiG1799c541U9FvMn2/GRBBNnjSyQ6wVARnDze9XCoGeJygsSnRmoZPmq9bgk/Zw+LXwxJ1nwtQk/93Ik82ysUyjjsBEev6zvGcwcVZBM9eSdz6ANTSROFsaPL4o"; + int length_rand[] = { + 0, 0, 1378, 870, 690, 594, 534, 492, 460, 436, 416, + 399, 385, 373, 363, 354, 346, 338, 332, 326, 320, 315, + 310, 306, 302, 298, 294, 291, 288, 285, 282, 279, 277, + 274, 272, 270, 268, 266, 264, 262, 260, 258, 257, 255, + 254, 252, 251, 249, 248, 247, 245, 244, 243, 242, 241, + 240, 239, 237, 236, 235, 235, 234, 233, 232, 231 + }; + int length_1p1234[] = { + 0, 0, 1236, 780, 619, 533, 479, 441, 413, 391, 373, + 358, 346, 335, 326, 317, 310, 303, 297, 292, 287, 282, + 278, 274, 271, 267, 264, 261, 258, 256, 253, 251, 248, + 246, 244, 242, 240, 238, 237, 235, 233, 232, 230, 229, + 228, 226, 225, 224, 222, 221, 220, 219, 218, 217, 216, + 215, 214, 213, 212, 211, 210, 210, 209, 208, 207 + }; + + mp_init(&a); + + mp_read_radix(&a, rand_a,64); + for (i = 2; i < 65; i++) { + mp_radix_size(&a,i,&len); + if (len < length_rand[i]) { + goto LBL_ERR; + } + } + mp_2expt(&a, 1234); + for (i = 2; i < 65; i++) { + mp_radix_size(&a,i,&len); + if (len < length_1p1234[i]) { + goto LBL_ERR; + } + } + + mp_clear(&a); + return EXIT_SUCCESS; +LBL_ERR: + mp_clear(&a); + return EXIT_FAILURE; +} + +#if ( (defined LTM_USE_FASTER_VERSIONS) || (defined LTM_USE_FASTER_NTH_ROOT) ) +static int test_mp_n_root(void) +{ + mp_int a, tmp, root; + mp_digit b; + + mp_init_multi(&a, &tmp, &root, NULL); + +#ifdef MP_8BIT + /* a bit smaller, MP_MASK = 127 for MP_8BIT */ + mp_set_int(&a, 12345ul); + mp_expt_d(&a, 126u, &tmp); + mp_expt_d(&a, 126u, &root); + mp_mul(&tmp, &root, &tmp); + mp_mul(&a, &tmp, &tmp); + mp_expt_d(&a, (mp_digit)123u, &root); + mp_add(&tmp, &root, &a); + mp_add_d(&a, 1u, &a); +#else + /* a = 12345^{255} + 12345^{222} + 12345^{123} + 1, 3465 bits */ + mp_set_int(&a, 12345ul); + mp_expt_d(&a, (mp_digit)255u, &tmp); + mp_expt_d(&a, (mp_digit)222u, &root); + mp_add(&tmp, &root, &tmp); + mp_expt_d(&a, (mp_digit)123u, &root); + mp_add(&tmp, &root, &a); + mp_add_d(&a, 1u, &a); +#endif + +#ifdef MP_8BIT + for (b = 2u; b < MP_MASK; b++) { +#else + for (b = 2u; b < 3466u; b++) { +#endif + printf("Testing nth-root, large input with index %5u \r",(unsigned)b); + fflush(stdout); + mp_n_root(&a, b, &root); + mp_expt_d(&root, b, &tmp); + /* integer-root cannot be bigger */ + if (mp_cmp(&tmp, &a) == MP_GT) { + goto LBL_ERR; + } + mp_add_d(&root, 1u, &root); + mp_expt_d(&root, b, &tmp); + /* integer-root + 1 cannot be smaller */ + if (mp_cmp(&tmp, &a) == MP_LT) { + goto LBL_ERR; + } + } + mp_clear_multi(&a, &tmp, &root, NULL); + return EXIT_SUCCESS; +LBL_ERR: + mp_clear_multi(&a, &tmp, &root, NULL); + return EXIT_FAILURE; +} +#else +static int test_mp_n_root(void) +{ + mp_int a, tmp, root; + mp_digit b; + + mp_init_multi(&a, &tmp, &root, NULL); + /* a = 123^{123}} + 1, 853 bits */ + mp_set_int(&a, 123ul); + mp_expt_d(&a, (mp_digit)123u, &a); + mp_add_d(&a, 1u, &a); + /* MP_8BIT is really slow here! */ +#ifdef MP_8BIT + for (b = 2u; b < 10u; b++) { +#else + for (b = 2u; b < 834u; b++) { +#endif + printf("Testing nth-root, small input with index %2u \r",(unsigned)b); + fflush(stdout); + mp_n_root(&a, b, &root); + mp_expt_d(&root, b, &tmp); + /* integer root cannot be bigger */ + if (mp_cmp(&tmp, &a) == MP_GT) { + goto LBL_ERR; + } + mp_add_d(&root, 1u, &root); + mp_expt_d(&root, b, &tmp); + /* integer root+1 cannot be smaller */ + if (mp_cmp(&tmp, &a) == MP_LT) { + goto LBL_ERR; + } + } + + mp_clear_multi(&a, &tmp, &root, NULL); + return EXIT_SUCCESS; +LBL_ERR: + mp_clear_multi(&a, &tmp, &root, NULL); + return EXIT_FAILURE; +} +#endif + + +#if ( ((defined LTM_USE_FASTER_VERSIONS) && (defined BN_MP_BALANCE_MUL_C)) && (defined BN_MP_KARATSUBA_MUL_C) ) + +#include +#include +static double get_time(void) +{ + struct timeval t; + struct timezone tzp; + gettimeofday(&t, &tzp); + return t.tv_sec + t.tv_usec*1e-6; +} +#include "../tommath.h" +#include "../tommath_private.h" +static int mp_mul_straight(const mp_int *a, const mp_int *b, mp_int *c) +{ + int res, neg; + neg = (a->sign == b->sign) ? MP_ZPOS : MP_NEG; + + /* use Toom-Cook? */ +#ifdef BN_MP_TOOM_MUL_C + if (MIN(a->used, b->used) >= TOOM_MUL_CUTOFF) { + res = mp_toom_mul(a, b, c); + } else +#endif +#ifdef BN_MP_KARATSUBA_MUL_C + /* use Karatsuba? */ + if (MIN(a->used, b->used) >= KARATSUBA_MUL_CUTOFF) { + res = mp_karatsuba_mul(a, b, c); + } else +#endif + { + int digs = a->used + b->used + 1; +#ifdef BN_FAST_S_MP_MUL_DIGS_C + if ((digs < (int)MP_WARRAY) && + (MIN(a->used, b->used) <= + (int)(1u << (((size_t)CHAR_BIT * sizeof(mp_word)) - (2u * (size_t)DIGIT_BIT))))) { + res = fast_s_mp_mul_digs(a, b, c, digs); + } else +#endif + { +#ifdef BN_S_MP_MUL_DIGS_C + res = s_mp_mul(a, b, c); +#else + res = MP_VAL; +#endif + } + } + c->sign = (c->used > 0) ? neg : MP_ZPOS; + return res; +} + +static int test_mp_balance_mul(void) +{ + mp_int a, b, c, tmp; + double start, stop, resb, resm; + + if (mp_init_multi(&a, &b, &c, &tmp, NULL) != MP_OKAY) { + return EXIT_FAILURE; + } + + mp_rand(&a, 31 * KARATSUBA_MUL_CUTOFF); + mp_rand(&b, (30 * KARATSUBA_MUL_CUTOFF)/2); + start = get_time(); + if (mp_mul(&a, &b, &c) != MP_OKAY) { + goto LBL_ERR; + } + stop = get_time(); + resb = stop - start; + start = get_time(); + if (mp_mul_straight(&a, &b, &tmp) != MP_OKAY) { + goto LBL_ERR; + } + stop = get_time(); + resm = stop - start; + if (mp_cmp(&c, &tmp) != MP_EQ) { + goto LBL_ERR; + } + printf("TIMER FOR MP_BALANCE_MUL: bal: %g mul: %g\n", resb, resm); + mp_clear_multi(&a, &b, &c, &tmp, NULL); + return EXIT_SUCCESS; +LBL_ERR: + mp_clear_multi(&a, &b, &c, &tmp, NULL); + return EXIT_FAILURE; +} +#endif + +int unit_tests(void) +{ static const struct { - const char* name; + const char *name; int (*fn)(void); } test[] = { #define T(n) { #n, test_##n } @@ -1236,6 +1492,11 @@ int unit_tests(void) { T(mp_tc_div_2d), T(mp_tc_or), T(mp_tc_xor), + T(mp_radix_size), + T(mp_n_root) +#if ( ((defined LTM_USE_FASTER_VERSIONS) && (defined BN_MP_BALANCE_MUL_C)) && (defined BN_MP_KARATSUBA_MUL_C) ) + , T(mp_balance_mul) +#endif #undef T }; unsigned long i; @@ -1248,7 +1509,7 @@ int unit_tests(void) { } #endif - for (i = 0; i < sizeof (test) / sizeof (test[0]); ++i) { + for (i = 0; i < sizeof(test) / sizeof(test[0]); ++i) { printf("TEST %s\n\n", test[i].name); if (test[i].fn() != EXIT_SUCCESS) { printf("\n\nFAIL %s\n\n", test[i].name); @@ -1257,7 +1518,7 @@ int unit_tests(void) { } printf("\n\n"); } - + puts("All tests PASSED"); #if defined(LTM_DEMO_REAL_RAND) && !defined(_WIN32) if (fd_urandom) { fclose(fd_urandom); diff --git a/doc/bn.tex b/doc/bn.tex index 533c623fb..cc630f7c7 100644 --- a/doc/bn.tex +++ b/doc/bn.tex @@ -45,6 +45,11 @@ \newcommand{\emailaddr}[1]{\mbox{$<${#1}$>$}} \def\twiddle{\raisebox{0.3ex}{\mbox{\tiny $\sim$}}} \def\gap{\vspace{0.5ex}} +% Define "struts" as suggested by Claudio Beccari in +% a piece in TeX and TUG News, Vol. 2, 1993. +\newcommand\Tstrut{\rule{0pt}{2.6ex}} % "top" strut +\newcommand\Bstrut{\rule[-0.9ex]{0pt}{0pt}} % "bottom" strut +\newcommand{\TBstrut}{\Tstrut\Bstrut} % top&bottom strut \makeindex \begin{document} \frontmatter @@ -228,6 +233,24 @@ \subsection{Testing} that is being performed. The numbers represent how many times the test was invoked. If an error is detected the program will exit with a dump of the relevant numbers it was working with. +\subsubsection{Standalone Testing} +To build the library and the standalone test harness, that is tests that are independent of ``mtest/mtest'' type + +\begin{alltt} +make test_standalone +\end{alltt} + +This will build the library and a program ``test'' ready to run on itself. + +If some or all of the faster versions have been build as described in section \ref{ssec:buildtweaks} a different test-programm needs to be build, too. + +\begin{alltt} +make faster_test +\end{alltt} + +This will build the library and a program ``test'' ready to run on itself. + + \section{Build Configuration} LibTomMath can configured at build time in three phases we shall call ``depends'', ``tweaks'' and ``trims''. Each phase changes how the library is built and they are applied one after another respectively. @@ -253,20 +276,42 @@ \subsection{Build Depends} This is to help resolve as many dependencies as possible. In the last pass the symbol LTM\_LAST will be defined. This is useful for ``trims''. -\subsection{Build Tweaks} +\subsection{Build Tweaks}\label{ssec:buildtweaks} A tweak is an algorithm ``alternative''. For example, to provide tradeoffs (usually between size and space). They can be enabled at any pass of the configuration phase. \begin{small} \begin{center} -\begin{tabular}{|l|l|} -\hline \textbf{Define} & \textbf{Purpose} \\ -\hline BN\_MP\_DIV\_SMALL & Enables a slower, smaller and equally \\ - & functional mp\_div() function \\ +\begin{tabular}{|p{0.4\linewidth}|p{0.51\linewidth}|} +\hline & \\[-1.5ex] +\textbf{Define} & \textbf{Purpose} \\[1ex] +\hline BN\_MP\_DIV\_SMALL + & Enables a slower, smaller\protect\footnotemark and equally functional mp\_div() function \\[1ex] +LTM\_USE\_FASTER\_RADIX\_SIZE + & Uses table lookups ($O(1)$) instead of the na\"ive approach ($O(n^2)$) to evaluate the memory needed + for number conversion. Will use about twice the program-memory\protect\footnotemark.\\[1ex] +LTM\_USE\_FASTER\_NTH\_ROOT + & Much faster algorithm: uses a partial bisection to find a good startvalue for either the Newton or the + Halley recurrence depending on the size of the input. Uses full bisection for small roots/large indices + (e.g.: the integer 234th root of $12345^{256} + 12345^{222} + 12345^{123} + 1$). It needs a bit more + than twice the program memory\protect\footnotemark.\\[1ex] +LTM\_USE\_FASTER\_VERSIONS + & generic macro to set all LTM\_USE\_FASTER* macros. The makefile rule \texttt{faster} is also implemented + but for GNU make only.\\ \hline \end{tabular} \end{center} \end{small} +% no footnotes in tables. Solution by Caroline Fontaine in +% https://tex.stackexchange.com/questions/1583/footnotes-in-tables +% simple and elegant, but has problems with the packet hyperref. +\footnotetext{3384 bytes instead of 4328 bytes with GCC 4.8 on a 64-bit AMD A8-6600K} +\addtocounter{footnote}{1} +\footnotetext{3680 bytes instead of 1912 bytes with GCC 4.8 on a 64-bit AMD A8-6600K} +\addtocounter{footnote}{1} +\footnotetext{6248 bytes instead of 2736 bytes with GCC 4.8 on a 64-bit AMD A8-6600K} + +Note that not all of the faster versions are compatible with \texttt{MP\_8BIT}! \subsection{Build Trims} A trim is a manner of removing functionality from a function that is not required. For instance, to perform diff --git a/libtommath_VS2008.vcproj b/libtommath_VS2008.vcproj index 060dd5941..b3c7be3d9 100644 --- a/libtommath_VS2008.vcproj +++ b/libtommath_VS2008.vcproj @@ -360,6 +360,10 @@ RelativePath="bn_mp_and.c" > + + diff --git a/makefile b/makefile index da89364b9..c565bee45 100644 --- a/makefile +++ b/makefile @@ -28,16 +28,16 @@ LCOV_ARGS=--directory . #START_INS OBJECTS=bn_error.o bn_fast_mp_invmod.o bn_fast_mp_montgomery_reduce.o bn_fast_s_mp_mul_digs.o \ bn_fast_s_mp_mul_high_digs.o bn_fast_s_mp_sqr.o bn_mp_2expt.o bn_mp_abs.o bn_mp_add.o bn_mp_add_d.o \ -bn_mp_addmod.o bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o \ -bn_mp_cmp_mag.o bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_div.o \ -bn_mp_div_2.o bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div_d.o bn_mp_dr_is_modulus.o bn_mp_dr_reduce.o \ -bn_mp_dr_setup.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o bn_mp_exptmod.o \ -bn_mp_exptmod_fast.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_bit.o \ -bn_mp_get_double.o bn_mp_get_int.o bn_mp_get_long.o bn_mp_get_long_long.o bn_mp_grow.o bn_mp_import.o \ -bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o bn_mp_init_set_int.o bn_mp_init_size.o \ -bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o bn_mp_jacobi.o \ -bn_mp_karatsuba_mul.o bn_mp_karatsuba_sqr.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o \ -bn_mp_mod_2d.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \ +bn_mp_addmod.o bn_mp_and.o bn_mp_balance_mul.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o \ +bn_mp_cmp_d.o bn_mp_cmp_mag.o bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o \ +bn_mp_div.o bn_mp_div_2.o bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div_d.o bn_mp_dr_is_modulus.o \ +bn_mp_dr_reduce.o bn_mp_dr_setup.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o \ +bn_mp_exptmod.o bn_mp_exptmod_fast.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o \ +bn_mp_get_bit.o bn_mp_get_double.o bn_mp_get_int.o bn_mp_get_long.o bn_mp_get_long_long.o bn_mp_grow.o \ +bn_mp_import.o bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o bn_mp_init_set_int.o \ +bn_mp_init_size.o bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o \ +bn_mp_jacobi.o bn_mp_karatsuba_mul.o bn_mp_karatsuba_sqr.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o \ +bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \ bn_mp_montgomery_setup.o bn_mp_mul.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o \ bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_neg.o bn_mp_or.o bn_mp_prime_fermat.o \ bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_divisible.o bn_mp_prime_is_prime.o \ @@ -54,14 +54,20 @@ bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_toradix.o bn_mp_toradix_n.o bn_mp_unsign bn_mp_zero.o bn_prime_tab.o bn_reverse.o bn_s_mp_add.o bn_s_mp_exptmod.o bn_s_mp_mul_digs.o \ bn_s_mp_mul_high_digs.o bn_s_mp_sqr.o bn_s_mp_sub.o bncore.o +TEST_OBJECTS=demo/main.o demo/opponent.o demo/test.o + #END_INS + $(OBJECTS): $(HEADERS) $(LIBNAME): $(OBJECTS) $(AR) $(ARFLAGS) $@ $(OBJECTS) $(RANLIB) $@ +faster: CFLAGS+=-DLTM_USE_FASTER_VERSIONS +faster: $(LIBNAME) + #make a profiled library (takes a while!!!) # # This will build the library with profile generation @@ -95,6 +101,13 @@ uninstall: rm $(DESTDIR)$(LIBPATH)/$(LIBNAME) rm $(HEADERS_PUB:%=$(DESTDIR)$(INCPATH)/%) +faster_test: CFLAGS+=-DLTM_USE_FASTER_VERSIONS -DLTM_DEMO_TEST_VS_MTEST=0 +faster_test: $(LIBNAME) + $(CC) $(CFLAGS) -c demo/main.c -o demo/main.o + $(CC) $(CFLAGS) -c demo/opponent.c -o demo/opponent.o + $(CC) $(CFLAGS) -c demo/test.c -o demo/test.o + $(CC) $(LDFLAGS) -o test demo/main.o demo/opponent.o demo/test.o $(LIBNAME) + test: demo/main.o demo/opponent.o demo/test.o $(LIBNAME) $(CC) $(CFLAGS) $^ $(LFLAGS) -o test diff --git a/makefile.mingw b/makefile.mingw index 5ad880a09..3c7561613 100644 --- a/makefile.mingw +++ b/makefile.mingw @@ -31,16 +31,16 @@ LIBMAIN_D =libtommath.dll #List of objects to compile (all goes to libtommath.a) OBJECTS=bn_error.o bn_fast_mp_invmod.o bn_fast_mp_montgomery_reduce.o bn_fast_s_mp_mul_digs.o \ bn_fast_s_mp_mul_high_digs.o bn_fast_s_mp_sqr.o bn_mp_2expt.o bn_mp_abs.o bn_mp_add.o bn_mp_add_d.o \ -bn_mp_addmod.o bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o \ -bn_mp_cmp_mag.o bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_div.o \ -bn_mp_div_2.o bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div_d.o bn_mp_dr_is_modulus.o bn_mp_dr_reduce.o \ -bn_mp_dr_setup.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o bn_mp_exptmod.o \ -bn_mp_exptmod_fast.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_bit.o \ -bn_mp_get_double.o bn_mp_get_int.o bn_mp_get_long.o bn_mp_get_long_long.o bn_mp_grow.o bn_mp_import.o \ -bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o bn_mp_init_set_int.o bn_mp_init_size.o \ -bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o bn_mp_jacobi.o \ -bn_mp_karatsuba_mul.o bn_mp_karatsuba_sqr.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o \ -bn_mp_mod_2d.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \ +bn_mp_addmod.o bn_mp_and.o bn_mp_balance_mul.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o \ +bn_mp_cmp_d.o bn_mp_cmp_mag.o bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o \ +bn_mp_div.o bn_mp_div_2.o bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div_d.o bn_mp_dr_is_modulus.o \ +bn_mp_dr_reduce.o bn_mp_dr_setup.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o \ +bn_mp_exptmod.o bn_mp_exptmod_fast.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o \ +bn_mp_get_bit.o bn_mp_get_double.o bn_mp_get_int.o bn_mp_get_long.o bn_mp_get_long_long.o bn_mp_grow.o \ +bn_mp_import.o bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o bn_mp_init_set_int.o \ +bn_mp_init_size.o bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o \ +bn_mp_jacobi.o bn_mp_karatsuba_mul.o bn_mp_karatsuba_sqr.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o \ +bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \ bn_mp_montgomery_setup.o bn_mp_mul.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o \ bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_neg.o bn_mp_or.o bn_mp_prime_fermat.o \ bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_divisible.o bn_mp_prime_is_prime.o \ diff --git a/makefile.msvc b/makefile.msvc index 12d571a2e..b3c444572 100644 --- a/makefile.msvc +++ b/makefile.msvc @@ -23,16 +23,16 @@ LIBMAIN_S =tommath.lib #List of objects to compile (all goes to tommath.lib) OBJECTS=bn_error.obj bn_fast_mp_invmod.obj bn_fast_mp_montgomery_reduce.obj bn_fast_s_mp_mul_digs.obj \ bn_fast_s_mp_mul_high_digs.obj bn_fast_s_mp_sqr.obj bn_mp_2expt.obj bn_mp_abs.obj bn_mp_add.obj bn_mp_add_d.obj \ -bn_mp_addmod.obj bn_mp_and.obj bn_mp_clamp.obj bn_mp_clear.obj bn_mp_clear_multi.obj bn_mp_cmp.obj bn_mp_cmp_d.obj \ -bn_mp_cmp_mag.obj bn_mp_cnt_lsb.obj bn_mp_complement.obj bn_mp_copy.obj bn_mp_count_bits.obj bn_mp_div.obj \ -bn_mp_div_2.obj bn_mp_div_2d.obj bn_mp_div_3.obj bn_mp_div_d.obj bn_mp_dr_is_modulus.obj bn_mp_dr_reduce.obj \ -bn_mp_dr_setup.obj bn_mp_exch.obj bn_mp_export.obj bn_mp_expt_d.obj bn_mp_expt_d_ex.obj bn_mp_exptmod.obj \ -bn_mp_exptmod_fast.obj bn_mp_exteuclid.obj bn_mp_fread.obj bn_mp_fwrite.obj bn_mp_gcd.obj bn_mp_get_bit.obj \ -bn_mp_get_double.obj bn_mp_get_int.obj bn_mp_get_long.obj bn_mp_get_long_long.obj bn_mp_grow.obj bn_mp_import.obj \ -bn_mp_init.obj bn_mp_init_copy.obj bn_mp_init_multi.obj bn_mp_init_set.obj bn_mp_init_set_int.obj bn_mp_init_size.obj \ -bn_mp_invmod.obj bn_mp_invmod_slow.obj bn_mp_is_square.obj bn_mp_iseven.obj bn_mp_isodd.obj bn_mp_jacobi.obj \ -bn_mp_karatsuba_mul.obj bn_mp_karatsuba_sqr.obj bn_mp_kronecker.obj bn_mp_lcm.obj bn_mp_lshd.obj bn_mp_mod.obj \ -bn_mp_mod_2d.obj bn_mp_mod_d.obj bn_mp_montgomery_calc_normalization.obj bn_mp_montgomery_reduce.obj \ +bn_mp_addmod.obj bn_mp_and.obj bn_mp_balance_mul.obj bn_mp_clamp.obj bn_mp_clear.obj bn_mp_clear_multi.obj bn_mp_cmp.obj \ +bn_mp_cmp_d.obj bn_mp_cmp_mag.obj bn_mp_cnt_lsb.obj bn_mp_complement.obj bn_mp_copy.obj bn_mp_count_bits.obj \ +bn_mp_div.obj bn_mp_div_2.obj bn_mp_div_2d.obj bn_mp_div_3.obj bn_mp_div_d.obj bn_mp_dr_is_modulus.obj \ +bn_mp_dr_reduce.obj bn_mp_dr_setup.obj bn_mp_exch.obj bn_mp_export.obj bn_mp_expt_d.obj bn_mp_expt_d_ex.obj \ +bn_mp_exptmod.obj bn_mp_exptmod_fast.obj bn_mp_exteuclid.obj bn_mp_fread.obj bn_mp_fwrite.obj bn_mp_gcd.obj \ +bn_mp_get_bit.obj bn_mp_get_double.obj bn_mp_get_int.obj bn_mp_get_long.obj bn_mp_get_long_long.obj bn_mp_grow.obj \ +bn_mp_import.obj bn_mp_init.obj bn_mp_init_copy.obj bn_mp_init_multi.obj bn_mp_init_set.obj bn_mp_init_set_int.obj \ +bn_mp_init_size.obj bn_mp_invmod.obj bn_mp_invmod_slow.obj bn_mp_is_square.obj bn_mp_iseven.obj bn_mp_isodd.obj \ +bn_mp_jacobi.obj bn_mp_karatsuba_mul.obj bn_mp_karatsuba_sqr.obj bn_mp_kronecker.obj bn_mp_lcm.obj bn_mp_lshd.obj \ +bn_mp_mod.obj bn_mp_mod_2d.obj bn_mp_mod_d.obj bn_mp_montgomery_calc_normalization.obj bn_mp_montgomery_reduce.obj \ bn_mp_montgomery_setup.obj bn_mp_mul.obj bn_mp_mul_2.obj bn_mp_mul_2d.obj bn_mp_mul_d.obj bn_mp_mulmod.obj \ bn_mp_n_root.obj bn_mp_n_root_ex.obj bn_mp_neg.obj bn_mp_or.obj bn_mp_prime_fermat.obj \ bn_mp_prime_frobenius_underwood.obj bn_mp_prime_is_divisible.obj bn_mp_prime_is_prime.obj \ diff --git a/makefile.shared b/makefile.shared index ac9bad04f..796ac82e8 100644 --- a/makefile.shared +++ b/makefile.shared @@ -25,16 +25,16 @@ LCOV_ARGS=--directory .libs --directory . #START_INS OBJECTS=bn_error.o bn_fast_mp_invmod.o bn_fast_mp_montgomery_reduce.o bn_fast_s_mp_mul_digs.o \ bn_fast_s_mp_mul_high_digs.o bn_fast_s_mp_sqr.o bn_mp_2expt.o bn_mp_abs.o bn_mp_add.o bn_mp_add_d.o \ -bn_mp_addmod.o bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o \ -bn_mp_cmp_mag.o bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_div.o \ -bn_mp_div_2.o bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div_d.o bn_mp_dr_is_modulus.o bn_mp_dr_reduce.o \ -bn_mp_dr_setup.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o bn_mp_exptmod.o \ -bn_mp_exptmod_fast.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_bit.o \ -bn_mp_get_double.o bn_mp_get_int.o bn_mp_get_long.o bn_mp_get_long_long.o bn_mp_grow.o bn_mp_import.o \ -bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o bn_mp_init_set_int.o bn_mp_init_size.o \ -bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o bn_mp_jacobi.o \ -bn_mp_karatsuba_mul.o bn_mp_karatsuba_sqr.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o \ -bn_mp_mod_2d.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \ +bn_mp_addmod.o bn_mp_and.o bn_mp_balance_mul.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o \ +bn_mp_cmp_d.o bn_mp_cmp_mag.o bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o \ +bn_mp_div.o bn_mp_div_2.o bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div_d.o bn_mp_dr_is_modulus.o \ +bn_mp_dr_reduce.o bn_mp_dr_setup.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o \ +bn_mp_exptmod.o bn_mp_exptmod_fast.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o \ +bn_mp_get_bit.o bn_mp_get_double.o bn_mp_get_int.o bn_mp_get_long.o bn_mp_get_long_long.o bn_mp_grow.o \ +bn_mp_import.o bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o bn_mp_init_set_int.o \ +bn_mp_init_size.o bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o \ +bn_mp_jacobi.o bn_mp_karatsuba_mul.o bn_mp_karatsuba_sqr.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o \ +bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \ bn_mp_montgomery_setup.o bn_mp_mul.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o \ bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_neg.o bn_mp_or.o bn_mp_prime_fermat.o \ bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_divisible.o bn_mp_prime_is_prime.o \ @@ -63,6 +63,9 @@ LOBJECTS = $(OBJECTS:.o=.lo) $(LIBNAME): $(OBJECTS) $(LTLINK) $(LDFLAGS) $(LOBJECTS) -o $(LIBNAME) -rpath $(LIBPATH) -version-info $(VERSION_SO) $(LIBTOOLFLAGS) +faster: CFLAGS+=-DLTM_USE_FASTER_VERSIONS +faster: $(LIBNAME) + install: $(LIBNAME) install -d $(DESTDIR)$(LIBPATH) install -d $(DESTDIR)$(INCPATH) @@ -77,6 +80,13 @@ uninstall: rm $(HEADERS_PUB:%=$(DESTDIR)$(INCPATH)/%) rm $(DESTDIR)$(LIBPATH)/pkgconfig/libtommath.pc +faster_test: CFLAGS+=-DLTM_USE_FASTER_VERSIONS -DLTM_DEMO_TEST_VS_MTEST=0 +faster_test: $(LIBNAME) + $(LTCOMPILE) $(CFLAGS) -c demo/main.c -o demo/main.o + $(LTCOMPILE) $(CFLAGS) -c demo/opponent.c -o demo/opponent.o + $(LTCOMPILE) $(CFLAGS) -c demo/test.c -o demo/test.o + $(LTLINK) $(LDFLAGS) -o test demo/main.o demo/opponent.o demo/test.o $(LIBNAME) + test: $(LIBNAME) $(LTCOMPILE) $(CFLAGS) -c demo/main.c -o demo/main.o $(LTCOMPILE) $(CFLAGS) -c demo/opponent.c -o demo/opponent.o diff --git a/makefile.unix b/makefile.unix index 6c34ec6fb..85bf94cdb 100644 --- a/makefile.unix +++ b/makefile.unix @@ -32,16 +32,16 @@ LIBMAIN_S = libtommath.a OBJECTS=bn_error.o bn_fast_mp_invmod.o bn_fast_mp_montgomery_reduce.o bn_fast_s_mp_mul_digs.o \ bn_fast_s_mp_mul_high_digs.o bn_fast_s_mp_sqr.o bn_mp_2expt.o bn_mp_abs.o bn_mp_add.o bn_mp_add_d.o \ -bn_mp_addmod.o bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o \ -bn_mp_cmp_mag.o bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_div.o \ -bn_mp_div_2.o bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div_d.o bn_mp_dr_is_modulus.o bn_mp_dr_reduce.o \ -bn_mp_dr_setup.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o bn_mp_exptmod.o \ -bn_mp_exptmod_fast.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_bit.o \ -bn_mp_get_double.o bn_mp_get_int.o bn_mp_get_long.o bn_mp_get_long_long.o bn_mp_grow.o bn_mp_import.o \ -bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o bn_mp_init_set_int.o bn_mp_init_size.o \ -bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o bn_mp_jacobi.o \ -bn_mp_karatsuba_mul.o bn_mp_karatsuba_sqr.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o \ -bn_mp_mod_2d.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \ +bn_mp_addmod.o bn_mp_and.o bn_mp_balance_mul.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o \ +bn_mp_cmp_d.o bn_mp_cmp_mag.o bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o \ +bn_mp_div.o bn_mp_div_2.o bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div_d.o bn_mp_dr_is_modulus.o \ +bn_mp_dr_reduce.o bn_mp_dr_setup.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o \ +bn_mp_exptmod.o bn_mp_exptmod_fast.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o \ +bn_mp_get_bit.o bn_mp_get_double.o bn_mp_get_int.o bn_mp_get_long.o bn_mp_get_long_long.o bn_mp_grow.o \ +bn_mp_import.o bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o bn_mp_init_set_int.o \ +bn_mp_init_size.o bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o \ +bn_mp_jacobi.o bn_mp_karatsuba_mul.o bn_mp_karatsuba_sqr.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o \ +bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \ bn_mp_montgomery_setup.o bn_mp_mul.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o \ bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_neg.o bn_mp_or.o bn_mp_prime_fermat.o \ bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_divisible.o bn_mp_prime_is_prime.o \ diff --git a/testme.sh b/testme.sh index a8180bdc9..94443a9e1 100755 --- a/testme.sh +++ b/testme.sh @@ -90,10 +90,16 @@ _make() _runtest() { make clean > /dev/null - _make "$1" "$2" "test_standalone" + if (echo $CFLAGS | grep -q FASTER ); then + echo -e "\rRun test $1 $2 faster_test" + _make "$1" "$2" "faster_test" + else + echo -e "\rRun test $1 $2 test_standalone" + _make "$1" "$2" "test_standalone" + fi local _timeout="" which timeout >/dev/null && _timeout="timeout --foreground 90" - echo -e "\rRun test $1 $2" + $_timeout ./test > test_${suffix}.log || _die "running tests" $? } @@ -107,9 +113,9 @@ _exit() { if [ "$ret" == "0" ] then - echo "Tests successful" + echo -e "\nTests successful" else - echo "$ret tests timed out" + echo -e "\n$ret tests timed out" fi exit $ret @@ -173,7 +179,7 @@ then elif [[ "$COMPILERS" == "" ]] then _banner gcc - _runtest "gcc" "" + _runtest "gcc" "$CFLAGS" _exit fi diff --git a/tommath.h b/tommath.h index e0eb2597c..3c94f5ee8 100644 --- a/tommath.h +++ b/tommath.h @@ -586,6 +586,7 @@ int mp_toradix(const mp_int *a, char *str, int radix); int mp_toradix_n(const mp_int *a, char *str, int radix, int maxlen); int mp_radix_size(const mp_int *a, int radix, int *size); + #ifndef LTM_NO_FILE int mp_fread(mp_int *a, int radix, FILE *stream); int mp_fwrite(const mp_int *a, int radix, FILE *stream); diff --git a/tommath_class.h b/tommath_class.h index 2702c1ca8..eb8ddc255 100644 --- a/tommath_class.h +++ b/tommath_class.h @@ -9,6 +9,7 @@ * * SPDX-License-Identifier: Unlicense */ + #if !(defined(LTM1) && defined(LTM2) && defined(LTM3)) #if defined(LTM2) # define LTM3 @@ -30,6 +31,7 @@ # define BN_MP_ADD_D_C # define BN_MP_ADDMOD_C # define BN_MP_AND_C +# define BN_MP_BALANCE_MUL_C # define BN_MP_CLAMP_C # define BN_MP_CLEAR_C # define BN_MP_CLEAR_MULTI_C @@ -237,6 +239,17 @@ # define BN_MP_CLEAR_C #endif +#if defined(BN_MP_BALANCE_MUL_C) +# define BN_MP_INIT_SIZE_C +# define BN_MP_INIT_MULTI_C +# define BN_MP_CLEAR_C +# define BN_MP_MUL_C +# define BN_MP_LSHD_C +# define BN_MP_ADD_C +# define BN_MP_EXCH_C +# define BN_MP_CLEAR_MULTI_C +#endif + #if defined(BN_MP_CLAMP_C) #endif @@ -616,6 +629,7 @@ #endif #if defined(BN_MP_MUL_C) +# define BN_MP_BALANCE_MUL_C # define BN_MP_TOOM_MUL_C # define BN_MP_KARATSUBA_MUL_C # define BN_FAST_S_MP_MUL_DIGS_C @@ -651,18 +665,31 @@ #endif #if defined(BN_MP_N_ROOT_EX_C) -# define BN_MP_INIT_C -# define BN_MP_SET_C +# define BN_MP_INIT_MULTI_C +# define BN_MP_2EXPT_C +# define BN_MP_CMP_C +# define BN_MP_EXCH_C +# define BN_MP_ADD_C +# define BN_MP_DIV_2_C +# define BN_MP_EXPT_D_C +# define BN_MP_ADD_D_C +# define BN_MP_CLEAR_MULTI_C +# define BN_MP_MUL_D_C +# define BN_MP_MUL_2_C # define BN_MP_COPY_C -# define BN_MP_EXPT_D_EX_C # define BN_MP_MUL_C -# define BN_MP_SUB_C -# define BN_MP_MUL_D_C # define BN_MP_DIV_C -# define BN_MP_CMP_C +# define BN_MP_DIV_D_C +# define BN_MP_SQRT_C +# define BN_MP_SET_C +# define BN_MP_ISZERO_C +# define BN_MP_ZERO_C +# define BN_MP_COUNT_BITS_C +# define BN_MP_INIT_C # define BN_MP_SUB_D_C -# define BN_MP_EXCH_C # define BN_MP_CLEAR_C +# define BN_MP_EXPT_D_EX_C +# define BN_MP_SUB_C #endif #if defined(BN_MP_NEG_C) @@ -793,10 +820,20 @@ #endif #if defined(BN_MP_RADIX_SIZE_C) +# define BN_MP_SET_C +# define BN_MP_SET_INT_C +# define BN_MP_ESTIMATE_STRING_SIZE_C # define BN_MP_COUNT_BITS_C +# define BN_MP_INIT_MULTI_C +# define BN_MP_INIT_C +# define BN_MP_CLEAR_MULTI_C +# define BN_MP_MUL_2D_C +# define BN_MP_ADD_C +# define BN_MP_DIV_C +# define BN_MP_CLEAR_C +# define BN_MP_ISZERO_C # define BN_MP_INIT_COPY_C # define BN_MP_DIV_D_C -# define BN_MP_CLEAR_C #endif #if defined(BN_MP_RADIX_SMAP_C) diff --git a/tommath_private.h b/tommath_private.h index 8feb1ad0a..1e35452bb 100644 --- a/tommath_private.h +++ b/tommath_private.h @@ -64,6 +64,7 @@ int fast_s_mp_mul_digs(const mp_int *a, const mp_int *b, mp_int *c, int digs); int s_mp_mul_digs(const mp_int *a, const mp_int *b, mp_int *c, int digs); int fast_s_mp_mul_high_digs(const mp_int *a, const mp_int *b, mp_int *c, int digs); int s_mp_mul_high_digs(const mp_int *a, const mp_int *b, mp_int *c, int digs); +int mp_balance_mul(const mp_int *a, const mp_int *b, mp_int *c); int fast_s_mp_sqr(const mp_int *a, mp_int *b); int s_mp_sqr(const mp_int *a, mp_int *b); int mp_karatsuba_mul(const mp_int *a, const mp_int *b, mp_int *c);