Added compile time checks to skip vli_square() and muladd() functions when they are not used
diff --git a/asm_arm.inc b/asm_arm.inc
index 6c223a5..e9f103e 100644
--- a/asm_arm.inc
+++ b/asm_arm.inc
@@ -1247,6 +1247,7 @@
 #define asm_mult 1
 #endif /* (uECC_WORDS == 8) */
 
+#if uECC_SQUARE_FUNC
 #if (uECC_WORDS == 5)
 static void vli_square(uint32_t *result, const uint32_t *left) {
     register uint32_t *r0 __asm__("r0") = result;
@@ -2030,6 +2031,7 @@
 }
 #define asm_square 1
 #endif /* (uECC_WORDS == 8) */
+#endif /* uECC_SQUARE_FUNC */
 
 #endif /* (uECC_PLATFORM != uECC_arm_thumb) */
 #endif /* (uECC_ASM == uECC_asm_fast) */
diff --git a/uECC.c b/uECC.c
index 897cb00..8dcd7af 100644
--- a/uECC.c
+++ b/uECC.c
@@ -623,7 +623,7 @@
 }
 #endif
 
-#if (!asm_mult || !asm_square || uECC_CURVE == uECC_secp256k1)
+#if (!asm_mult || (uECC_SQUARE_FUNC && !asm_square) || uECC_CURVE == uECC_secp256k1)
 static void muladd(uECC_word_t a,
                    uECC_word_t b,
                    uECC_word_t *r0,