TI ARM C/C++ Optimizer                  v5.1.6
Build Number 1OE9R-KDADEMDK-RTARQ-WAR-ZAZE_V_R_W
Making mp_mulmod a function synonym of fp_mulmod
Making mp_mod a function synonym of fp_mod
Making mp_invmod a function synonym of fp_invmod
Making mp_exptmod a function synonym of fp_exptmod
Making mp_cmp a function synonym of fp_cmp
Making mp_cmp_d a function synonym of fp_cmp_d
Making mp_unsigned_bin_size a function synonym of fp_unsigned_bin_size
Making mp_count_bits a function synonym of fp_count_bits
Making mp_leading_bit a function synonym of fp_leading_bit
Making mp_rshb a function synonym of fp_rshb
Making mp_sqrmod a function synonym of fp_sqrmod
Making mp_read_radix a function synonym of fp_read_radix
Making mp_montgomery_setup a function synonym of fp_montgomery_setup

		======File-level Analysis Summary======


extern unsigned CheckRunTimeFastMath() is called from 0 sites in this file.
    It appears to be inlineable (size = 2 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

extern unsigned CheckRunTimeSettings() is called from 0 sites in this file.
    It appears to be inlineable (size = 2 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

static int _fp_exptmod() is called from 2 sites in this file.
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	memcpy() (1 times)
	fp_sqr() (1 times)
	fp_montgomery_reduce() (3 times)
	fp_mul() (1 times)
	fp_mulmod() (1 times)
	fp_mod() (1 times)
	fp_cmp_mag() (1 times)
	fp_montgomery_calc_normalization() (1 times)
	memset() (2 times)
	fp_montgomery_setup() (1 times)

extern void fp_2expt() is called from 1 sites in this file.
    It appears to be inlineable (size = 31 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	memset() (1 times)

extern void fp_add() is called from 8 sites in this file.
    It appears to be inlineable (size = 28 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	s_fp_add() (1 times)
	s_fp_sub() (2 times)
	fp_cmp_mag() (1 times)

extern void fp_add_d() is called from 2 sites in this file.
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_add() (1 times)
	fp_set() (1 times)

extern int fp_cmp() is called from 5 sites in this file.
    It appears to be inlineable (size = 33 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_cmp_mag() (2 times)

extern int fp_cmp_d() is called from 5 sites in this file.
    It appears to be inlineable (size = 37 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

extern int fp_cmp_mag() is called from 11 sites in this file.
    It appears to be inlineable (size = 61 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

extern int fp_count_bits() is called from 4 sites in this file.
    It appears to be inlineable (size = 31 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

extern int fp_div() is called from 1 sites in this file.
    It has 4 non-trivial scope blocks nested 4 deep.
    It calls these functions:
	fp_div_2d() (1 times)
	fp_add() (1 times)
	fp_mul_d() (2 times)
	fp_rshd() (1 times)
	fp_sub() (2 times)
	fp_cmp() (2 times)
	fp_lshd() (3 times)
	fp_mul_2d() (2 times)
	fp_count_bits() (1 times)
	memcpy() (5 times)
	memset() (5 times)
	fp_cmp_mag() (2 times)

extern void fp_div_2() is called from 11 sites in this file.
    It appears to be inlineable (size = 102 units)
    It has 4 non-trivial scope blocks nested 4 deep.
    It calls these functions:
	<NONE>

extern void fp_div_2d() is called from 2 sites in this file.
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	memcpy() (1 times)
	fp_rshb() (1 times)
	fp_rshd() (1 times)
	fp_mod_2d() (1 times)
	memset() (2 times)

extern int fp_exptmod() is called from 1 sites in this file.
    It has 4 non-trivial scope blocks nested 4 deep.
    It calls these functions:
	fp_invmod() (1 times)
	memcpy() (1 times)
	_fp_exptmod() (2 times)

extern int fp_invmod() is called from 2 sites in this file.
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_add() (1 times)
	fp_cmp_d() (1 times)
	fp_cmp() (1 times)
	fp_sub() (6 times)
	fp_div_2() (4 times)
	fp_set() (1 times)
	memcpy() (5 times)
	memset() (6 times)
	fp_invmod_slow() (1 times)

static int fp_invmod_slow() is called from 1 sites in this file.
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_cmp_mag() (2 times)
	fp_cmp_d() (3 times)
	fp_cmp() (1 times)
	fp_sub() (9 times)
	fp_add() (3 times)
	fp_div_2() (6 times)
	fp_set() (2 times)
	memcpy() (4 times)
	fp_mod() (1 times)
	memset() (8 times)

extern int fp_leading_bit() is called from 1 sites in this file.
    It appears to be inlineable (size = 37 units)
    It has 4 non-trivial scope blocks nested 4 deep.
    It calls these functions:
	<NONE>

extern void fp_lshd() is called from 4 sites in this file.
    It appears to be inlineable (size = 83 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

extern int fp_mod() is called from 5 sites in this file.
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_add() (1 times)
	memcpy() (1 times)
	fp_div() (1 times)
	memset() (1 times)

extern void fp_mod_2d() is called from 1 sites in this file.
    It appears to be inlineable (size = 87 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	memset() (1 times)

extern void fp_montgomery_calc_normalization() is called from 2 sites in this file.
    It appears to be inlineable (size = 53 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	s_fp_sub() (1 times)
	fp_cmp_mag() (1 times)
	fp_mul_2() (1 times)
	fp_2expt() (1 times)
	fp_set() (1 times)
	fp_count_bits() (1 times)

extern void fp_montgomery_reduce() is called from 4 sites in this file.
    It has 6 non-trivial scope blocks nested 5 deep.
    It calls these functions:
	s_fp_sub() (1 times)
	fp_cmp_mag() (1 times)
	memset() (1 times)

extern int fp_montgomery_setup() is called from 2 sites in this file.
    It appears to be inlineable (size = 37 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

extern void fp_mul() is called from 3 sites in this file.
    It appears to be inlineable (size = 8 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_mul_comba() (1 times)

extern void fp_mul_2() is called from 1 sites in this file.
    It appears to be inlineable (size = 76 units)
    It has 4 non-trivial scope blocks nested 4 deep.
    It calls these functions:
	<NONE>

extern void fp_mul_2d() is called from 2 sites in this file.
    It appears to be inlineable (size = 101 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_lshd() (1 times)

extern void fp_mul_comba() is called from 1 sites in this file.
    It has 4 non-trivial scope blocks nested 4 deep.
    It calls these functions:
	memset() (2 times)

extern void fp_mul_d() is called from 3 sites in this file.
    It appears to be inlineable (size = 101 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

extern int fp_mulmod() is called from 2 sites in this file.
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_mod() (1 times)
	fp_mul() (1 times)
	memset() (1 times)

static int fp_read_radix() is called from 1 sites in this file.
    It appears to be inlineable (size = 84 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_add_d() (1 times)
	fp_mul_d() (1 times)
	toupper() (1 times)
	memset() (1 times)

extern void fp_read_unsigned_bin() is called from 1 sites in this file.
    It appears to be inlineable (size = 71 units)
    It has 5 non-trivial scope blocks nested 5 deep.
    It calls these functions:
	memset() (1 times)

extern void fp_reverse() is called from 1 sites in this file.
    It appears to be inlineable (size = 32 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

extern void fp_rshb() is called from 2 sites in this file.
    It appears to be inlineable (size = 50 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

extern void fp_rshd() is called from 2 sites in this file.
    It appears to be inlineable (size = 82 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	memset() (1 times)

extern void fp_set() is called from 8 sites in this file.
    It appears to be inlineable (size = 13 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	memset() (1 times)

extern void fp_sqr() is called from 3 sites in this file.
    It appears to be inlineable (size = 6 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_sqr_comba() (1 times)

extern void fp_sqr_comba() is called from 1 sites in this file.
    It has 6 non-trivial scope blocks nested 5 deep.
    It calls these functions:
	memset() (2 times)

extern int fp_sqrmod() is called from 1 sites in this file.
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_mod() (1 times)
	fp_sqr() (1 times)
	memset() (1 times)

extern void fp_sub() is called from 19 sites in this file.
    It appears to be inlineable (size = 30 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	s_fp_add() (1 times)
	s_fp_sub() (2 times)
	fp_cmp_mag() (1 times)

extern void fp_sub_d() is called from 1 sites in this file.
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_sub() (1 times)
	fp_set() (1 times)

extern void fp_to_unsigned_bin() is called from 1 sites in this file.
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_reverse() (1 times)
	fp_div_2d() (1 times)
	memcpy() (1 times)

extern int fp_unsigned_bin_size() is called from 1 sites in this file.
    It appears to be inlineable (size = 12 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_count_bits() (1 times)

extern int mp_add() is called from 0 sites in this file.
    It appears to be inlineable (size = 9 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_add() (1 times)

extern int mp_add_d() is called from 0 sites in this file.
    It appears to be inlineable (size = 9 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_add_d() (1 times)

extern void mp_clear() is called from 0 sites in this file.
    It appears to be inlineable (size = 6 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	memset() (1 times)

extern int mp_cmp() is called from 0 sites in this file.
    It appears to be inlineable (size = 6 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_cmp() (1 times)

extern int mp_cmp_d() is called from 0 sites in this file.
    It appears to be inlineable (size = 6 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_cmp_d() (1 times)

extern int mp_copy() is called from 0 sites in this file.
    It appears to be inlineable (size = 13 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

extern int mp_count_bits() is called from 0 sites in this file.
    It appears to be inlineable (size = 4 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_count_bits() (1 times)

extern int mp_div_2() is called from 0 sites in this file.
    It appears to be inlineable (size = 7 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_div_2() (1 times)

extern int mp_exptmod() is called from 0 sites in this file.
    It appears to be inlineable (size = 10 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_exptmod() (1 times)

extern int mp_init() is called from 0 sites in this file.
    It appears to be inlineable (size = 10 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	memset() (1 times)

extern int mp_init_copy() is called from 0 sites in this file.
    It appears to be inlineable (size = 13 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

extern int mp_init_multi() is called from 0 sites in this file.
    It appears to be inlineable (size = 50 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	memset() (6 times)

extern int mp_invmod() is called from 0 sites in this file.
    It appears to be inlineable (size = 8 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_invmod() (1 times)

extern int mp_isodd() is called from 0 sites in this file.
    It appears to be inlineable (size = 18 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

extern int mp_iszero() is called from 0 sites in this file.
    It appears to be inlineable (size = 6 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

extern int mp_leading_bit() is called from 0 sites in this file.
    It appears to be inlineable (size = 4 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_leading_bit() (1 times)

extern int mp_mod() is called from 0 sites in this file.
    It appears to be inlineable (size = 8 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_mod() (1 times)

extern int mp_montgomery_calc_normalization() is called from 0 sites in this file.
    It appears to be inlineable (size = 7 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_montgomery_calc_normalization() (1 times)

extern int mp_montgomery_reduce() is called from 0 sites in this file.
    It appears to be inlineable (size = 9 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_montgomery_reduce() (1 times)

extern int mp_montgomery_setup() is called from 0 sites in this file.
    It appears to be inlineable (size = 6 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_montgomery_setup() (1 times)

extern int mp_mul() is called from 0 sites in this file.
    It appears to be inlineable (size = 9 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_mul() (1 times)

extern int mp_mulmod() is called from 0 sites in this file.
    It appears to be inlineable (size = 10 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_mulmod() (1 times)

extern int mp_read_radix() is called from 0 sites in this file.
    It appears to be inlineable (size = 8 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_read_radix() (1 times)

extern int mp_read_unsigned_bin() is called from 0 sites in this file.
    It appears to be inlineable (size = 9 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_read_unsigned_bin() (1 times)

extern void mp_rshb() is called from 0 sites in this file.
    It appears to be inlineable (size = 6 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_rshb() (1 times)

extern int mp_set() is called from 0 sites in this file.
    It appears to be inlineable (size = 7 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_set() (1 times)

extern int mp_set_int() is called from 0 sites in this file.
    It appears to be inlineable (size = 7 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_set() (1 times)

extern int mp_sqr() is called from 0 sites in this file.
    It appears to be inlineable (size = 7 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_sqr() (1 times)

extern int mp_sqrmod() is called from 0 sites in this file.
    It appears to be inlineable (size = 8 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_sqrmod() (1 times)

extern int mp_sub() is called from 0 sites in this file.
    It appears to be inlineable (size = 9 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_sub() (1 times)

extern int mp_sub_d() is called from 0 sites in this file.
    It appears to be inlineable (size = 9 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_sub_d() (1 times)

extern int mp_to_unsigned_bin() is called from 0 sites in this file.
    It appears to be inlineable (size = 7 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_to_unsigned_bin() (1 times)

extern int mp_unsigned_bin_size() is called from 0 sites in this file.
    It appears to be inlineable (size = 4 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_unsigned_bin_size() (1 times)

extern void s_fp_add() is called from 2 sites in this file.
    It appears to be inlineable (size = 121 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

extern void s_fp_sub() is called from 6 sites in this file.
    It appears to be inlineable (size = 114 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

static int toupper() is called from 1 sites in this file.
    It appears to be inlineable (size = 14 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

Making unmodified global variable CONST:
	static const unsigned char *fp_s_rmap = (const unsigned char *)"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/";

Address of global variable is never taken:
	static const unsigned char * const fp_s_rmap


Global variable is not modified in this file:
	static const unsigned char * const fp_s_rmap

Inlineable function will be suppressed: toupper()

Making this function inlineable: fp_read_radix()
Inlineable function will be suppressed: fp_read_radix()

These external functions are called but not defined here:
	memset()
	memcpy()

Variable's value is constant in this file:
    static const unsigned char * const fp_s_rmap = (const unsigned char *)"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/";

		======= End file-level Analysis =======


==============================================================================

extern void s_fp_sub() is called from 6 sites in this file.
    It appears to be inlineable (size = 114 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

ADVICE: In function s_fp_sub() in C:/cyassl/ctaocrypt/src/tfm.c
	in the 'for' loop with loop variable 'x' at lines C:/cyassl/ctaocrypt/src/tfm.c:164-168
	for the statement t = (unsigned long long)((unsigned *)a)[x]-(unsigned long long)((unsigned *)b)[x]-t; at line 165
	and the statement ((unsigned *)c)[x] = t; at line 166

	Consider declaring 'b' as struct $$fake0 * const restrict b
	or declaring 'c' as  struct $$fake0 * const restrict c
	to assert that 'b' in the address of ((unsigned *)b)[x];
	and            'c' in the address of ((unsigned *)c)[x];
	do not access the same object in memory.

ADVICE: In function s_fp_sub() in C:/cyassl/ctaocrypt/src/tfm.c
	in the 'for' loop with loop variable 'x' at lines C:/cyassl/ctaocrypt/src/tfm.c:164-168
	for the statement t = (unsigned long long)((unsigned *)a)[x]-(unsigned long long)((unsigned *)b)[x]-t; at line 165
	and the statement ((unsigned *)c)[x] = t; at line 166

	Consider declaring 'a' as struct $$fake0 * const restrict a
	or declaring 'c' as  struct $$fake0 * const restrict c
	to assert that 'a' in the address of ((unsigned *)a)[x];
	and            'c' in the address of ((unsigned *)c)[x];
	do not access the same object in memory.

ADVICE: In function s_fp_sub() in C:/cyassl/ctaocrypt/src/tfm.c
	in the 'for' loop at lines C:/cyassl/ctaocrypt/src/tfm.c:169-173
	for the statement t = (unsigned long long)((unsigned *)a)[x]-t; at line 170
	and the statement ((unsigned *)c)[x] = t; at line 171

	Consider declaring 'a' as struct $$fake0 * const restrict a
	or declaring 'c' as  struct $$fake0 * const restrict c
	to assert that 'a' in the address of ((unsigned *)a)[x];
	and            'c' in the address of ((unsigned *)c)[x];
	do not access the same object in memory.

ADVICE: In function s_fp_sub() in C:/cyassl/ctaocrypt/src/tfm.c
	in the 'for' loop at lines C:/cyassl/ctaocrypt/src/tfm.c:169-173
	for the statement ((unsigned *)c)[x] = t; at line 171
	and the statement if ( x < (*a).used ) goto g7; else goto g8; at line 169

	Consider declaring 'c' as struct $$fake0 * const restrict c
	or declaring 'a' as  struct $$fake0 * const restrict a
	to assert that 'c' in the address of ((unsigned *)c)[x];
	and            'a' in the address of (*a).used;
	do not access the same object in memory.
Unrolling 'for' loop on 'x' at lines C:/cyassl/ctaocrypt/src/tfm.c:164-168 by factor 2.
Estimated speedup: 1.14x, code size increase: 1.80x (10:->18)
Unrolling 'for' loop on 'x' at lines C:/cyassl/ctaocrypt/src/tfm.c:174-176 by factor 2.
Estimated speedup: 1.33x, code size increase: 1.33x (3:->4)
Unrolling 'while' loop on 'V$0' at lines C:/cyassl/ctaocrypt/src/tfm.c:177-177 by factor 2.
Estimated speedup: 1.14x, code size increase: 1.75x (4:->7)

There are 29 memory accesses with 278 dependences.


==============================================================================

extern void s_fp_add() is called from 2 sites in this file.
    It appears to be inlineable (size = 121 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

ADVICE: In function s_fp_add() in C:/cyassl/ctaocrypt/src/tfm.c
	in the 'for' loop with loop variable 'x' at lines C:/cyassl/ctaocrypt/src/tfm.c:102-106
	for the statement t += (unsigned long long)((unsigned *)a)[x]+(unsigned long long)((unsigned *)b)[x]; at line 103
	and the statement ((unsigned *)c)[x] = t; at line 104

	Consider declaring 'b' as struct $$fake0 * const restrict b
	or declaring 'c' as  struct $$fake0 * const restrict c
	to assert that 'b' in the address of ((unsigned *)b)[x];
	and            'c' in the address of ((unsigned *)c)[x];
	do not access the same object in memory.

ADVICE: In function s_fp_add() in C:/cyassl/ctaocrypt/src/tfm.c
	in the 'for' loop with loop variable 'x' at lines C:/cyassl/ctaocrypt/src/tfm.c:102-106
	for the statement t += (unsigned long long)((unsigned *)a)[x]+(unsigned long long)((unsigned *)b)[x]; at line 103
	and the statement ((unsigned *)c)[x] = t; at line 104

	Consider declaring 'a' as struct $$fake0 * const restrict a
	or declaring 'c' as  struct $$fake0 * const restrict c
	to assert that 'a' in the address of ((unsigned *)a)[x];
	and            'c' in the address of ((unsigned *)c)[x];
	do not access the same object in memory.
Unrolling 'for' loop on 'x' at lines C:/cyassl/ctaocrypt/src/tfm.c:102-106 by factor 2.
Estimated speedup: 1.15x, code size increase: 1.78x (9:->16)
Unrolling 'for' loop on 'x' at lines C:/cyassl/ctaocrypt/src/tfm.c:113-115 by factor 2.
Estimated speedup: 1.33x, code size increase: 1.33x (3:->4)
Unrolling 'while' loop on 'V$0' at lines C:/cyassl/ctaocrypt/src/tfm.c:116-116 by factor 2.
Estimated speedup: 1.14x, code size increase: 1.75x (4:->7)

There are 31 memory accesses with 361 dependences.


==============================================================================

extern int fp_count_bits() is called from 4 sites in this file.
    It appears to be inlineable (size = 31 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

There are 2 memory accesses with 0 dependences.


==============================================================================

extern int fp_unsigned_bin_size() is called from 1 sites in this file.
    It appears to be inlineable (size = 12 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_count_bits() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern int mp_unsigned_bin_size() is called from 0 sites in this file.
    It appears to be inlineable (size = 4 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_unsigned_bin_size() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern void fp_mod_2d() is called from 1 sites in this file.
    It appears to be inlineable (size = 87 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>
Unrolling 'while' loop on 'V$0' at lines C:/cyassl/ctaocrypt/src/tfm.c:725-725 by factor 2.
Estimated speedup: 1.14x, code size increase: 1.75x (4:->7)

There are 16 memory accesses with 85 dependences.


==============================================================================

extern void fp_rshd() is called from 2 sites in this file.
    It appears to be inlineable (size = 82 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>
Unrolling 'while' loop on 'V$0' at lines C:/cyassl/ctaocrypt/src/tfm.c:1807-1807 by factor 2.
Estimated speedup: 1.14x, code size increase: 1.75x (4:->7)

There are 16 memory accesses with 85 dependences.


==============================================================================

extern void fp_rshb() is called from 2 sites in this file.
    It appears to be inlineable (size = 50 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>
Unrolling 'for' loop on 'x' at lines C:/cyassl/ctaocrypt/src/tfm.c:1771-1781 by factor 2.
Estimated speedup: 1.16x, code size increase: 1.78x (9:->16)

There are 7 memory accesses with 12 dependences.


==============================================================================

extern void fp_div_2d() is called from 2 sites in this file.
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_mod_2d() (1 times)
	fp_rshd() (1 times)
	fp_rshb() (1 times)
Unrolling 'while' loop on 'V$0' at lines C:/cyassl/ctaocrypt/src/tfm.c:676-676 by factor 2.
Estimated speedup: 1.14x, code size increase: 1.75x (4:->7)

There are 13 memory accesses with 59 dependences.


==============================================================================

extern void fp_reverse() is called from 1 sites in this file.
    It appears to be inlineable (size = 32 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>
Unrolling 'while' loop on 'ix' at lines C:/cyassl/ctaocrypt/src/tfm.c:1818-1824 by factor 2.
Estimated speedup: 1.18x, code size increase: 1.67x (6:->10)

There are 12 memory accesses with 57 dependences.


==============================================================================

extern void fp_to_unsigned_bin() is called from 1 sites in this file.
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_div_2d() (1 times)
	fp_reverse() (1 times)

There are 4 memory accesses with 0 dependences.


==============================================================================

extern int mp_to_unsigned_bin() is called from 0 sites in this file.
    It appears to be inlineable (size = 7 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_to_unsigned_bin() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern void fp_set() is called from 8 sites in this file.
    It appears to be inlineable (size = 13 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

There are 2 memory accesses with 0 dependences.


==============================================================================

extern int fp_cmp_mag() is called from 11 sites in this file.
    It appears to be inlineable (size = 61 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

There are 4 memory accesses with 0 dependences.


==============================================================================

extern void fp_sub() is called from 19 sites in this file.
    It appears to be inlineable (size = 30 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_cmp_mag() (1 times)
	s_fp_sub() (2 times)
	s_fp_add() (1 times)

There are 5 memory accesses with 9 dependences.


==============================================================================

extern void fp_sub_d() is called from 1 sites in this file.
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_set() (1 times)
	fp_sub() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern int mp_sub_d() is called from 0 sites in this file.
    It appears to be inlineable (size = 9 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_sub_d() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern int mp_sub() is called from 0 sites in this file.
    It appears to be inlineable (size = 9 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_sub() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern void fp_sqr_comba() is called from 1 sites in this file.
    It has 6 non-trivial scope blocks nested 5 deep.
    It calls these functions:
	<NONE>

ADVICE: In function fp_sqr_comba() in C:/cyassl/ctaocrypt/src/tfm.c
	in the 'for' loop with loop variable 'ix' at lines C:/cyassl/ctaocrypt/src/tfm.c:1349-1389
	for the statement t = (unsigned long long)c0+(unsigned long long)((unsigned *)A)[(ix*2>>2)]*(unsigned long long)((unsigned *)A)[(ix*2>>2)]; at line 1384
	and the statement ((unsigned *)dst)[ix] = c0; at line 1388

	Consider declaring 'A' as struct $$fake0 * const restrict A
	or declaring 'dst' as  struct $$fake0 * restrict dst
	to assert that 'A' in the address of ((unsigned *)A)[(ix*2>>2)];
	and            'dst' in the address of ((unsigned *)dst)[ix];
	do not access the same object in memory.
Unrolling 'for' loop on 'iz' at lines C:/cyassl/ctaocrypt/src/tfm.c:1377-1379 by factor 2.
Estimated speedup: 1.11x, code size increase: 1.88x (16:->30)
Unrolling 'while' loop on 'V$0' at lines C:/cyassl/ctaocrypt/src/tfm.c:1395-1395 by factor 2.
Estimated speedup: 1.14x, code size increase: 1.75x (4:->7)

		====== Unroll-and-jam Result Summary ======

LOOP#1 in fp_sqr_comba() fails to unroll-and-jam: Outer Loop has multiple blocks

		====== End Unroll-and-jam Result ======


ADVICE: In function fp_sqr_comba() in C:/cyassl/ctaocrypt/src/tfm.c
	in the 'for' loop with loop variable 'ix' at lines C:/cyassl/ctaocrypt/src/tfm.c:1349-1389
	for the statement t = _umull(*tmpx, *tmpy); at line 1378
	and the statement ((unsigned *)dst)[ix] = c0; at line 1388

	Consider declaring 'tmpy' as unsigned * restrict tmpy
	or declaring 'dst' as  struct $$fake0 * restrict dst
	to assert that 'tmpy' in the address of *tmpy;
	and            'dst' in the address of ((unsigned *)dst)[ix];
	do not access the same object in memory.

ADVICE: In function fp_sqr_comba() in C:/cyassl/ctaocrypt/src/tfm.c
	in the 'for' loop with loop variable 'ix' at lines C:/cyassl/ctaocrypt/src/tfm.c:1349-1389
	for the statement t = _umull(*tmpx, *tmpy); at line 1378
	and the statement ((unsigned *)dst)[ix] = c0; at line 1388

	Consider declaring 'tmpx' as unsigned * restrict tmpx
	or declaring 'dst' as  struct $$fake0 * restrict dst
	to assert that 'tmpx' in the address of *tmpx;
	and            'dst' in the address of ((unsigned *)dst)[ix];
	do not access the same object in memory.

There are 21 memory accesses with 129 dependences.


==============================================================================

extern void fp_sqr() is called from 3 sites in this file.
    It appears to be inlineable (size = 6 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_sqr_comba() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern void fp_lshd() is called from 4 sites in this file.
    It appears to be inlineable (size = 83 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>
Unrolling 'for' loop on 'y' at lines C:/cyassl/ctaocrypt/src/tfm.c:1739-1741 by factor 2.
Estimated speedup: 1.27x, code size increase: 1.50x (4:->6)
Unrolling 'for' loop on 'y' at lines C:/cyassl/ctaocrypt/src/tfm.c:1744-1746 by factor 2.
Estimated speedup: 1.33x, code size increase: 1.33x (3:->4)
Unrolling 'while' loop on 'V$0' at lines C:/cyassl/ctaocrypt/src/tfm.c:1749-1749 by factor 2.
Estimated speedup: 1.14x, code size increase: 1.75x (4:->7)

There are 20 memory accesses with 156 dependences.


==============================================================================

extern void fp_mul_2d() is called from 2 sites in this file.
    It appears to be inlineable (size = 101 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_lshd() (1 times)
Unrolling 'while' loop on 'V$0' at lines C:/cyassl/ctaocrypt/src/tfm.c:400-400 by factor 2.
Estimated speedup: 1.14x, code size increase: 1.75x (4:->7)

There are 17 memory accesses with 100 dependences.


==============================================================================

extern int fp_cmp() is called from 5 sites in this file.
    It appears to be inlineable (size = 33 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_cmp_mag() (2 times)

There are 3 memory accesses with 0 dependences.


==============================================================================

extern void fp_mul_d() is called from 3 sites in this file.
    It appears to be inlineable (size = 101 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

ADVICE: In function fp_mul_d() in C:/cyassl/ctaocrypt/src/tfm.c
	in the 'for' loop at lines C:/cyassl/ctaocrypt/src/tfm.c:356-360
	for the statement w += (unsigned long long)((unsigned *)a)[x]*(unsigned long long)b; at line 357
	and the statement ((unsigned *)c)[x] = w; at line 358

	Consider declaring 'a' as struct $$fake0 * const restrict a
	or declaring 'c' as  struct $$fake0 * const restrict c
	to assert that 'a' in the address of ((unsigned *)a)[x];
	and            'c' in the address of ((unsigned *)c)[x];
	do not access the same object in memory.

ADVICE: In function fp_mul_d() in C:/cyassl/ctaocrypt/src/tfm.c
	in the 'for' loop at lines C:/cyassl/ctaocrypt/src/tfm.c:356-360
	for the statement ((unsigned *)c)[x] = w; at line 358
	and the statement if ( x < (*a).used ) goto g3; else goto g4; at line 356

	Consider declaring 'c' as struct $$fake0 * const restrict c
	or declaring 'a' as  struct $$fake0 * const restrict a
	to assert that 'c' in the address of ((unsigned *)c)[x];
	and            'a' in the address of (*a).used;
	do not access the same object in memory.
Unrolling 'for' loop on 'x' at lines C:/cyassl/ctaocrypt/src/tfm.c:365-367 by factor 2.
Estimated speedup: 1.33x, code size increase: 1.33x (3:->4)
Unrolling 'while' loop on 'V$0' at lines C:/cyassl/ctaocrypt/src/tfm.c:368-368 by factor 2.
Estimated speedup: 1.14x, code size increase: 1.75x (4:->7)

There are 24 memory accesses with 200 dependences.


==============================================================================

extern void fp_add() is called from 8 sites in this file.
    It appears to be inlineable (size = 28 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_cmp_mag() (1 times)
	s_fp_sub() (2 times)
	s_fp_add() (1 times)

There are 5 memory accesses with 9 dependences.


==============================================================================

extern int fp_div() is called from 1 sites in this file.
    It has 4 non-trivial scope blocks nested 4 deep.
    It calls these functions:
	fp_cmp_mag() (2 times)
	fp_count_bits() (1 times)
	fp_mul_2d() (2 times)
	fp_lshd() (3 times)
	fp_cmp() (2 times)
	fp_sub() (2 times)
	fp_rshd() (1 times)
	fp_mul_d() (2 times)
	fp_add() (1 times)
	fp_div_2d() (1 times)
Unrolling 'while' loop on 'V$0' at lines C:/cyassl/ctaocrypt/src/tfm.c:581-581 by factor 2.
Estimated speedup: 1.14x, code size increase: 1.75x (4:->7)
Unrolling 'for' loop on 'i' at lines C:/cyassl/ctaocrypt/src/tfm.c:592-594 by factor 2.
Estimated speedup: 1.33x, code size increase: 1.33x (3:->4)
Unrolling 'while' loop on 'V$2' at lines C:/cyassl/ctaocrypt/src/tfm.c:595-595 by factor 2.
Estimated speedup: 1.14x, code size increase: 1.75x (4:->7)

		====== Unroll-and-jam Result Summary ======

LOOP#2 in fp_div() fails to unroll-and-jam: Outer Loop has multiple blocks

		====== End Unroll-and-jam Result ======


There are 64 memory accesses with 318 dependences.


==============================================================================

extern int fp_mod() is called from 5 sites in this file.
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_div() (1 times)
	fp_add() (1 times)

There are 2 memory accesses with 0 dependences.


==============================================================================

extern int fp_sqrmod() is called from 1 sites in this file.
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_sqr() (1 times)
	fp_mod() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern int mp_sqrmod() is called from 0 sites in this file.
    It appears to be inlineable (size = 8 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_sqrmod() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern int mp_sqr() is called from 0 sites in this file.
    It appears to be inlineable (size = 7 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_sqr() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern int mp_set_int() is called from 0 sites in this file.
    It appears to be inlineable (size = 7 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_set() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern int mp_set() is called from 0 sites in this file.
    It appears to be inlineable (size = 7 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_set() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern void mp_rshb() is called from 0 sites in this file.
    It appears to be inlineable (size = 6 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_rshb() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern void fp_read_unsigned_bin() is called from 1 sites in this file.
    It appears to be inlineable (size = 71 units)
    It has 5 non-trivial scope blocks nested 5 deep.
    It calls these functions:
	<NONE>

ADVICE: In function fp_read_unsigned_bin() in C:/cyassl/ctaocrypt/src/tfm.c
	in the 'for' loop with loop variable 'c' at lines C:/cyassl/ctaocrypt/src/tfm.c:1643-1645
	for the statement ((unsigned char *)a)[c] = *b; at line 1644

	Consider declaring 'b' as unsigned char * restrict b
	or declaring 'a' as  struct $$fake0 * const restrict a
	to assert that 'b' in the address of *b;
	and            'a' in the address of ((unsigned char *)a)[c];
	do not access the same object in memory.
Unrolling 'for' loop on 'c' at lines C:/cyassl/ctaocrypt/src/tfm.c:1643-1645 by factor 2.
Estimated speedup: 1.25x, code size increase: 1.50x (4:->6)
Unrolling 'while' loop on 'V$0' at lines C:/cyassl/ctaocrypt/src/tfm.c:1656-1656 by factor 2.
Estimated speedup: 1.14x, code size increase: 1.75x (4:->7)

There are 16 memory accesses with 96 dependences.


==============================================================================

extern int mp_read_unsigned_bin() is called from 0 sites in this file.
    It appears to be inlineable (size = 9 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_read_unsigned_bin() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern void fp_add_d() is called from 2 sites in this file.
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_set() (1 times)
	fp_add() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern int mp_read_radix() is called from 0 sites in this file.
    It appears to be inlineable (size = 8 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_read_radix() (1 times)

There are 0 memory accesses with 0 dependences.


Inlineable function fp_read_radix() was marked for suppression,
but it cannot be because of a problematic use in mp_read_radix().


Inlineable function fp_read_radix() was marked for suppression,
but it cannot be because of a problematic use in mp_read_radix().


Inlineable function fp_read_radix() was marked for suppression,
but it cannot be because of a problematic use in mp_read_radix().


==============================================================================

extern void fp_mul_comba() is called from 1 sites in this file.
    It has 4 non-trivial scope blocks nested 4 deep.
    It calls these functions:
	<NONE>

ADVICE: In function fp_mul_comba() in C:/cyassl/ctaocrypt/src/tfm.c
	in the 'for' loop with loop variable 'ix' at lines C:/cyassl/ctaocrypt/src/tfm.c:427-450
	for the statement if ( (*A).used-tx <= ty ) goto g14; else goto g13; at line 439
	and the statement ((unsigned *)dst)[ix] = c0; at line 449

	Consider declaring 'A' as struct $$fake0 * const restrict A
	or declaring 'dst' as  struct $$fake0 * restrict dst
	to assert that 'A' in the address of (*A).used;
	and            'dst' in the address of ((unsigned *)dst)[ix];
	do not access the same object in memory.
Unrolling 'for' loop on 'iz' at lines C:/cyassl/ctaocrypt/src/tfm.c:443-446 by factor 2.
Estimated speedup: 1.16x, code size increase: 1.82x (11:->20)
Unrolling 'while' loop on 'V$0' at lines C:/cyassl/ctaocrypt/src/tfm.c:455-455 by factor 2.
Estimated speedup: 1.14x, code size increase: 1.75x (4:->7)

		====== Unroll-and-jam Result Summary ======

LOOP#1 in fp_mul_comba() fails to unroll-and-jam: Outer Loop has multiple blocks

		====== End Unroll-and-jam Result ======


ADVICE: In function fp_mul_comba() in C:/cyassl/ctaocrypt/src/tfm.c
	in the 'for' loop with loop variable 'ix' at lines C:/cyassl/ctaocrypt/src/tfm.c:427-450
	for the statement t = _umlal(*tmpx, *tmpy, (unsigned long long)c0); at line 445
	and the statement ((unsigned *)dst)[ix] = c0; at line 449

	Consider declaring 'tmpy' as unsigned * restrict tmpy
	or declaring 'dst' as  struct $$fake0 * restrict dst
	to assert that 'tmpy' in the address of *tmpy;
	and            'dst' in the address of ((unsigned *)dst)[ix];
	do not access the same object in memory.

ADVICE: In function fp_mul_comba() in C:/cyassl/ctaocrypt/src/tfm.c
	in the 'for' loop with loop variable 'ix' at lines C:/cyassl/ctaocrypt/src/tfm.c:427-450
	for the statement t = _umlal(*tmpx, *tmpy, (unsigned long long)c0); at line 445
	and the statement ((unsigned *)dst)[ix] = c0; at line 449

	Consider declaring 'tmpx' as unsigned * restrict tmpx
	or declaring 'dst' as  struct $$fake0 * restrict dst
	to assert that 'tmpx' in the address of *tmpx;
	and            'dst' in the address of ((unsigned *)dst)[ix];
	do not access the same object in memory.

There are 26 memory accesses with 175 dependences.


==============================================================================

extern void fp_mul() is called from 3 sites in this file.
    It appears to be inlineable (size = 8 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_mul_comba() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern int fp_mulmod() is called from 2 sites in this file.
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_mul() (1 times)
	fp_mod() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern int mp_mulmod() is called from 0 sites in this file.
    It appears to be inlineable (size = 10 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_mulmod() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern int mp_mul() is called from 0 sites in this file.
    It appears to be inlineable (size = 9 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_mul() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern int fp_montgomery_setup() is called from 2 sites in this file.
    It appears to be inlineable (size = 37 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

There are 2 memory accesses with 1 dependences.


==============================================================================

extern int mp_montgomery_setup() is called from 0 sites in this file.
    It appears to be inlineable (size = 6 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_montgomery_setup() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern void fp_montgomery_reduce() is called from 4 sites in this file.
    It has 6 non-trivial scope blocks nested 5 deep.
    It calls these functions:
	fp_cmp_mag() (1 times)
	s_fp_sub() (1 times)
Unrolling 'for' loop on 'x' at lines C:/cyassl/ctaocrypt/src/tfm.c:1554-1556 by factor 2.
Estimated speedup: 1.27x, code size increase: 1.50x (4:->6)
Unrolling 'for' loop on 'y' at lines C:/cyassl/ctaocrypt/src/tfm.c:1574-1577 by factor 2.
Estimated speedup: 1.14x, code size increase: 1.82x (11:->20)
Unrolling 'for' loop on 'x' at lines C:/cyassl/ctaocrypt/src/tfm.c:1588-1590 by factor 2.
Estimated speedup: 1.24x, code size increase: 1.50x (4:->6)
Unrolling 'for' loop on 'x' at lines C:/cyassl/ctaocrypt/src/tfm.c:1592-1594 by factor 2.
Estimated speedup: 1.29x, code size increase: 1.33x (3:->4)
Unrolling 'while' loop on 'V$0' at lines C:/cyassl/ctaocrypt/src/tfm.c:1599-1599 by factor 2.
Estimated speedup: 1.14x, code size increase: 1.75x (4:->7)

		====== Unroll-and-jam Result Summary ======

LOOP#3 in fp_montgomery_reduce() fails to unroll-and-jam: Outer Loop has multiple blocks

		====== End Unroll-and-jam Result ======


ADVICE: In function fp_montgomery_reduce() in C:/cyassl/ctaocrypt/src/tfm.c
	in the 'for' loop with loop variable 'x' at lines C:/cyassl/ctaocrypt/src/tfm.c:1559-1583
	for the statement *_c = t; at line 1575
	and the statement mu = c[x]*mp; at line 1562

	Consider declaring '_c' as unsigned * restrict _c
	to assert that lvalues *_c;
	and                    c[x];
	do not access the same object in memory.

There are 39 memory accesses with 300 dependences.


==============================================================================

extern int mp_montgomery_reduce() is called from 0 sites in this file.
    It appears to be inlineable (size = 9 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_montgomery_reduce() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern void fp_2expt() is called from 1 sites in this file.
    It appears to be inlineable (size = 31 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

There are 2 memory accesses with 1 dependences.


==============================================================================

extern void fp_mul_2() is called from 1 sites in this file.
    It appears to be inlineable (size = 76 units)
    It has 4 non-trivial scope blocks nested 4 deep.
    It calls these functions:
	<NONE>

ADVICE: In function fp_mul_2() in C:/cyassl/ctaocrypt/src/tfm.c
	in the 'for' loop at lines C:/cyassl/ctaocrypt/src/tfm.c:312-326
	for the statement rr = *tmpa>>31u; at line 317
	and the statement *tmpb = *tmpa*2u|r; at line 320

	Consider declaring 'a' as struct $$fake0 * const restrict a
	or declaring 'b' as  struct $$fake0 * const restrict b
	to assert that 'a' in the address of *tmpa;
	and            'b' in the address of *tmpb;
	do not access the same object in memory.

ADVICE: In function fp_mul_2() in C:/cyassl/ctaocrypt/src/tfm.c
	in the 'for' loop at lines C:/cyassl/ctaocrypt/src/tfm.c:312-326
	for the statement *tmpb = *tmpa*2u|r; at line 320

	Consider declaring 'a' as struct $$fake0 * const restrict a
	or declaring 'b' as  struct $$fake0 * const restrict b
	to assert that 'a' in the address of *tmpa;
	and            'b' in the address of *tmpb;
	do not access the same object in memory.

ADVICE: In function fp_mul_2() in C:/cyassl/ctaocrypt/src/tfm.c
	in the 'for' loop at lines C:/cyassl/ctaocrypt/src/tfm.c:312-326
	for the statement *tmpb = *tmpa*2u|r; at line 320
	and the statement if ( x < (*a).used ) goto g3; else goto g4; at line 312

	Consider declaring 'b' as struct $$fake0 * const restrict b
	or declaring 'a' as  struct $$fake0 * const restrict a
	to assert that 'b' in the address of *tmpb;
	and            'a' in the address of (*a).used;
	do not access the same object in memory.
Unrolling 'for' loop on 'x' at lines C:/cyassl/ctaocrypt/src/tfm.c:339-341 by factor 2.
Estimated speedup: 1.29x, code size increase: 1.33x (3:->4)

There are 16 memory accesses with 88 dependences.


==============================================================================

extern void fp_montgomery_calc_normalization() is called from 2 sites in this file.
    It appears to be inlineable (size = 53 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_count_bits() (1 times)
	fp_set() (1 times)
	fp_2expt() (1 times)
	fp_mul_2() (1 times)
	fp_cmp_mag() (1 times)
	s_fp_sub() (1 times)

There are 1 memory accesses with 0 dependences.


==============================================================================

extern int mp_montgomery_calc_normalization() is called from 0 sites in this file.
    It appears to be inlineable (size = 7 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_montgomery_calc_normalization() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern int mp_mod() is called from 0 sites in this file.
    It appears to be inlineable (size = 8 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_mod() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern int fp_leading_bit() is called from 1 sites in this file.
    It appears to be inlineable (size = 37 units)
    It has 4 non-trivial scope blocks nested 4 deep.
    It calls these functions:
	<NONE>
Unrolling 'while' loop on 'qSz' at lines C:/cyassl/ctaocrypt/src/tfm.c:1717-1722 completely by factor 4.
Estimated speedup: 2.00x, code size increase: 2.29x (7:->16)

There are 2 memory accesses with 0 dependences.


==============================================================================

extern int mp_leading_bit() is called from 0 sites in this file.
    It appears to be inlineable (size = 4 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_leading_bit() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern int mp_iszero() is called from 0 sites in this file.
    It appears to be inlineable (size = 6 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

There are 1 memory accesses with 0 dependences.


==============================================================================

extern int mp_isodd() is called from 0 sites in this file.
    It appears to be inlineable (size = 18 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

There are 2 memory accesses with 0 dependences.


==============================================================================

extern void fp_div_2() is called from 11 sites in this file.
    It appears to be inlineable (size = 102 units)
    It has 4 non-trivial scope blocks nested 4 deep.
    It calls these functions:
	<NONE>

ADVICE: In function fp_div_2() in C:/cyassl/ctaocrypt/src/tfm.c
	in the 'for' loop with loop variable 'x' at lines C:/cyassl/ctaocrypt/src/tfm.c:620-629
	for the statement rr = *tmpa&1u; at line 622
	and the statement *tmpb = *tmpa>>1|r*0x80000000u; at line 625

	Consider declaring 'tmpa' as unsigned * restrict tmpa
	or declaring 'tmpb' as  unsigned * restrict tmpb
	to assert that 'tmpa' in the address of *tmpa;
	and            'tmpb' in the address of *tmpb;
	do not access the same object in memory.

ADVICE: In function fp_div_2() in C:/cyassl/ctaocrypt/src/tfm.c
	in the 'for' loop with loop variable 'x' at lines C:/cyassl/ctaocrypt/src/tfm.c:620-629
	for the statement *tmpb = *tmpa>>1|r*0x80000000u; at line 625

	Consider declaring 'tmpa' as unsigned * restrict tmpa
	or declaring 'tmpb' as  unsigned * restrict tmpb
	to assert that 'tmpa' in the address of *tmpa;
	and            'tmpb' in the address of *tmpb;
	do not access the same object in memory.
Unrolling 'for' loop on 'x' at lines C:/cyassl/ctaocrypt/src/tfm.c:620-629 by factor 2.
Estimated speedup: 1.17x, code size increase: 1.78x (9:->16)
Unrolling 'for' loop on 'x' at lines C:/cyassl/ctaocrypt/src/tfm.c:633-635 by factor 2.
Estimated speedup: 1.29x, code size increase: 1.33x (3:->4)
Unrolling 'while' loop on 'V$0' at lines C:/cyassl/ctaocrypt/src/tfm.c:638-638 by factor 2.
Estimated speedup: 1.14x, code size increase: 1.75x (4:->7)

There are 25 memory accesses with 213 dependences.


==============================================================================

extern int fp_cmp_d() is called from 5 sites in this file.
    It appears to be inlineable (size = 37 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

There are 4 memory accesses with 0 dependences.


==============================================================================

static int fp_invmod_slow() is called from 1 sites in this file.
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_mod() (1 times)
	fp_set() (2 times)
	fp_div_2() (6 times)
	fp_add() (3 times)
	fp_sub() (9 times)
	fp_cmp() (1 times)
	fp_cmp_d() (3 times)
	fp_cmp_mag() (2 times)

		====== Unroll-and-jam Result Summary ======

LOOP#1 in fp_invmod_slow() fails to unroll-and-jam: Outer Loop has multiple blocks

		====== End Unroll-and-jam Result ======


There are 21 memory accesses with 0 dependences.


==============================================================================

extern int fp_invmod() is called from 2 sites in this file.
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_invmod_slow() (1 times)
	fp_set() (1 times)
	fp_div_2() (4 times)
	fp_sub() (6 times)
	fp_cmp() (1 times)
	fp_cmp_d() (1 times)
	fp_add() (1 times)

		====== Unroll-and-jam Result Summary ======

LOOP#1 in fp_invmod() fails to unroll-and-jam: Outer Loop has multiple blocks

		====== End Unroll-and-jam Result ======


There are 18 memory accesses with 3 dependences.


==============================================================================

extern int mp_invmod() is called from 0 sites in this file.
    It appears to be inlineable (size = 8 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_invmod() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern int mp_init_multi() is called from 0 sites in this file.
    It appears to be inlineable (size = 50 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

There are 0 memory accesses with 0 dependences.


==============================================================================

extern int mp_init_copy() is called from 0 sites in this file.
    It appears to be inlineable (size = 13 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

There are 2 memory accesses with 1 dependences.


==============================================================================

extern int mp_init() is called from 0 sites in this file.
    It appears to be inlineable (size = 10 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

There are 0 memory accesses with 0 dependences.


==============================================================================

static int _fp_exptmod() is called from 2 sites in this file.
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_montgomery_setup() (1 times)
	fp_montgomery_calc_normalization() (1 times)
	fp_cmp_mag() (1 times)
	fp_mod() (1 times)
	fp_mulmod() (1 times)
	fp_mul() (1 times)
	fp_montgomery_reduce() (3 times)
	fp_sqr() (1 times)

		====== Unroll-and-jam Result Summary ======

LOOP#1 in _fp_exptmod() fails to unroll-and-jam: Outer LCV is not suitable

		====== End Unroll-and-jam Result ======


There are 7 memory accesses with 0 dependences.


==============================================================================

extern int fp_exptmod() is called from 1 sites in this file.
    It has 4 non-trivial scope blocks nested 4 deep.
    It calls these functions:
	_fp_exptmod() (2 times)
	fp_invmod() (1 times)

There are 4 memory accesses with 5 dependences.


==============================================================================

extern int mp_exptmod() is called from 0 sites in this file.
    It appears to be inlineable (size = 10 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_exptmod() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern int mp_div_2() is called from 0 sites in this file.
    It appears to be inlineable (size = 7 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_div_2() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern int mp_count_bits() is called from 0 sites in this file.
    It appears to be inlineable (size = 4 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_count_bits() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern int mp_copy() is called from 0 sites in this file.
    It appears to be inlineable (size = 13 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

There are 2 memory accesses with 1 dependences.


==============================================================================

extern int mp_cmp_d() is called from 0 sites in this file.
    It appears to be inlineable (size = 6 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_cmp_d() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern int mp_cmp() is called from 0 sites in this file.
    It appears to be inlineable (size = 6 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_cmp() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern void mp_clear() is called from 0 sites in this file.
    It appears to be inlineable (size = 6 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

There are 0 memory accesses with 0 dependences.


==============================================================================

extern int mp_add_d() is called from 0 sites in this file.
    It appears to be inlineable (size = 9 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_add_d() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern int mp_add() is called from 0 sites in this file.
    It appears to be inlineable (size = 9 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	fp_add() (1 times)

There are 0 memory accesses with 0 dependences.


==============================================================================

extern unsigned CheckRunTimeSettings() is called from 0 sites in this file.
    It appears to be inlineable (size = 2 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

There are 0 memory accesses with 0 dependences.


==============================================================================

extern unsigned CheckRunTimeFastMath() is called from 0 sites in this file.
    It appears to be inlineable (size = 2 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	<NONE>

There are 0 memory accesses with 0 dependences.


==============================================================================

static int fp_read_radix() is called from 1 sites in this file.
    It appears to be inlineable (size = 84 units)
    It has 3 non-trivial scope blocks nested 3 deep.
    It calls these functions:
	toupper() (1 times)
	fp_mul_d() (1 times)
	fp_add_d() (1 times)
Unrolling 'for' loop on 'y' at lines C:/cyassl/ctaocrypt/src/tfm.c:2437-2441 by factor 4.
Estimated speedup: 1.33x, code size increase: 2.80x (5:->14)

		====== Unroll-and-jam Result Summary ======

LOOP#1 in fp_read_radix() fails to unroll-and-jam: Outer Loop has multiple blocks

		====== End Unroll-and-jam Result ======


There are 9 memory accesses with 7 dependences.


== END OF INFO OUTPUT==
