]> git.cryptolib.org Git - avr-crypto-lib.git/blobdiff - gf256mul.S
now comes twister-512
[avr-crypto-lib.git] / gf256mul.S
index 02e85e95c9003999a0c25ba4982edf36006ee296..5a47f4e98b6568c4d23e65656a39f631a56c3e53 100644 (file)
@@ -26,6 +26,8 @@
  * 
  */
 
+#include <avr/io.h>
+#define OPTIMIZE_SMALL_A
 
 /*
  * param a: r24
@@ -36,20 +38,45 @@ A = 21
 B = 22
 P = 24
 .global gf256mul
+
+#ifdef OPTIMIZE_SMALL_A
+gf256mul:
+       mov r21, r24
+       clr r24
+1:     
+       lsr A
+       breq 4f
+       brcc 2f
+       eor P, B
+2:
+       lsl B
+       brcc 3f
+       eor B, r20      
+3:
+       rjmp 1b
+4:
+       brcc 2f
+       eor P, B
+2:
+       ret
+
+#else
+
 gf256mul:
        mov r21, r24
        clr r24
        ldi r25, 8
 1:     
-       lsr B
+       lsr A
        brcc 2f
-       eor P, A
+       eor P, B
 2:
-       lsl A
+       lsl B
        brcc 3f
-       eor A, r20      
+       eor B, r20      
 3:
        dec r25
        brne 1b
        ret
 
+#endif