]> git.cryptolib.org Git - avr-crypto-lib.git/blobdiff - bmw/bmw_small-tinyasm.S
fixing style, typos and uart
[avr-crypto-lib.git] / bmw / bmw_small-tinyasm.S
index f3da54432c17be630ea7af86182021a50ade088a..ad4ee95ad1621378b484c646ed26f94df30af481 100644 (file)
@@ -41,6 +41,11 @@ acc1 = 15
   param s: r20
 */
 shiftleft32:
+       tst r20
+       brpl 10f
+       neg r20
+       rjmp shiftright32
+10:
        clr r0
        cpi r20, 8
        brlo bitrotateleft_1
@@ -49,7 +54,7 @@ shiftleft32:
        mov r23, r22
        clr r22
        subi r20, 8
-       rjmp shiftleft32
+       rjmp 10b
 
 /******************************************************************************/
 /*
@@ -257,10 +262,11 @@ mov32_to_acc:
 
 f2_1_shift_table:
 ;      .byte 0x2B, 0x64, 0x66, 0x03, 0x51, 0x55, 0x87, 0x55
-       .byte 0x55, 0x87, 0x55, 0x51, 0x03, 0x66, 0x64, 0x2B
+;      .byte 0x55, 0x87, 0x55, 0x51, 0x03, 0x66, 0x64, 0x2B
+       .byte 5, -5, -7, 8, -5, 5, -1, 5, -3, 0, 6, -6, -4, 6, -11, 2
 f2_2_shift_table:
 ;      .byte (2<<1), (7<<1), (4<<1), (3<<1), (4<<1)+1, (6<<1)+1, (6<<1)
-       .byte (8<<1)+1, (6<<1), (6<<1)+1, (4<<1)+1, (3<<1), (4<<1), (7<<1), (2<<1)
+       .byte 8, -6, 6, 4, -3, -4, -7, -2
 expand2_rot_table:
        .byte 3,7,13,16,19,23,27
 
@@ -273,7 +279,7 @@ f0_hacktable:
 
 
 /*******************************************************************************
-* uint32_t addelment(uint8_t j, const uint32_t* m, const uint32_t* h){
+* uint32_t addelment(uint8_t j, const uint32_t *m, const uint32_t *h){
 *      uint32_t r;
 *      r  = pgm_read_dword(k_lut+j);
 *      r += rotl_addel(((uint32_t*)m)[j&0xf], j+0);
@@ -739,40 +745,21 @@ f2:
        movw r26, h0
        ldi r30, lo8(f2_1_shift_table)
        ldi r31, hi8(f2_1_shift_table)
-       ldi r17, 16
+       ldi r17, 15
 10:
 ;---
        movw r22, xh0
        movw r24, xh2
-       cpi r17, 9
-       brge 15f
-       clr r1
-       rjmp 26f
-15:    lpm r20, Z+
-       mov r1, r20
-       andi r20, 0x0f
-       clt
-       cpi r17, 16
-       breq 20f
-       cpi r17, 11
-       brne 21f
-20:    set
-21:    brts 25f
-       rcall shiftright32
-       rjmp 26f
-25:    rcall shiftleft32
-26: rcall mov32_to_acc
+       lpm r20, Z+
+       sbrc r17, 3
+       rcall shiftleft32
+    rcall mov32_to_acc
 ;---
        rcall load32_from_Y
-       mov r20, r1
-       clr r1
-       swap r20
-       andi r20, 0x0f
-       brts 27f
+       lpm r20, Z+
+       sbrc r17, 3
        rcall shiftleft32
-       rjmp 28f
-27:    rcall shiftright32
-28:    rcall eor32_to_acc
+       rcall eor32_to_acc
 ;---
        rcall load32_from_X
        rcall eor32_to_acc
@@ -780,7 +767,7 @@ f2:
        adiw r26, 4
 ;---
        dec r17
-       brne 10b
+       brpl 10b
 ;-----
        sbiw r28, 4*8 /* Y points to q[24] */
        movw r30, r28
@@ -801,20 +788,13 @@ f2:
 
        movw r26, h0
        ldi r17, 15
-       ldi r30, lo8(f2_2_shift_table)
-       ldi r31, hi8(f2_2_shift_table)
+       ldi r30, lo8(f2_2_shift_table-8)
+       ldi r31, hi8(f2_2_shift_table-8)
 10:    movw r22, xl0
        movw r24, xl2
-       sbrc r17, 3
-       rjmp 20f
        lpm r20, Z+
-       lsr r20
-       brcs 15f
-       rcall shiftright32
-       rjmp 20f
-15:
+       sbrs r17, 3
        rcall shiftleft32
-20:
        rcall mov32_to_acc
        rcall load32_from_Y
        rcall eor32_to_acc
@@ -1041,7 +1021,7 @@ bmw256_lastBlock:
 
 
 /*******************************************************************************
-* void bmw224_ctx2hash(void* dest, const bmw224_ctx_t* ctx){
+* void bmw224_ctx2hash(void *dest, const bmw224_ctx_t *ctx){
 *      memcpy(dest, &(ctx->h[9]), 224/8);
 * }
 *
@@ -1056,7 +1036,7 @@ bmw224_ctx2hash:
        rjmp 1f
 
 /*******************************************************************************
-* void bmw256_ctx2hash(void* dest, const bmw256_ctx_t* ctx){
+* void bmw256_ctx2hash(void *dest, const bmw256_ctx_t *ctx){
 *      memcpy(dest, &(ctx->h[8]), 256/8);
 * }
 *
@@ -1076,7 +1056,7 @@ bmw256_ctx2hash:
        ret
 
 /*******************************************************************************
-* void bmw256(void* dest, const void* msg, uint32_t length_b){
+* void bmw256(void *dest, const void *msg, uint32_t length_b){
 *      bmw_small_ctx_t ctx;
 *      bmw256_init(&ctx);
 *      while(length_b>=BMW_SMALL_BLOCKSIZE){
@@ -1109,7 +1089,7 @@ bmw256:
 
 
 /*******************************************************************************
-* void bmw224(void* dest, const void* msg, uint32_t length_b){
+* void bmw224(void *dest, const void *msg, uint32_t length_b){
 *      bmw_small_ctx_t ctx;
 *      bmw224_init(&ctx);
 *      while(length_b>=BMW_SMALL_BLOCKSIZE){
@@ -1138,7 +1118,6 @@ dst1 =   7
 .global bmw224
 bmw224:
        clt
-       rjmp bmw_small_all
 
 
 bmw_small_all:
@@ -1198,7 +1177,7 @@ c2h_lut:
        rjmp bmw256_ctx2hash
 
 /*******************************************************************************
-* void bmw224_init(bmw224_ctx_tctx){
+* void bmw224_init(bmw224_ctx_t *ctx){
 *      uint8_t i;
 *      ctx->h[0] = 0x00010203;
 *      for(i=1; i<16; ++i){