We assume than optimizing compilers will unwind loops at every opportunity. 

But sometimes they don't. So time-critical code will run faster if we step
in and unwind complex loops for the compiler.

Once the architecture and ECC/RSA support is decided upon (that is amcl.h 
and arch.h are settled), then compile and execute the program faster.c like 
this (using MinGW port of GCC as an example), in the same directory as 
arch.h and amcl.h

gcc -O2 -std=c99 faster.c -o faster.exe
faster > t.txt

Now extract the code fragments from t.txt and insert them where indicated
into big.c

Finally make sure that

#define UNWOUND

appears somewhere in amcl.h

Finally build the library as normal, and maybe get a 50% speed-up!
If there is no significant improvement, don't use this method!

