X-Git-Url: https://git.cryptolib.org/?a=blobdiff_plain;f=arcfour-asm.S;fp=arcfour-asm.S;h=5fbf2a271837374b8d7c9f3f651bae9dfd189d0b;hb=f0ca870318011539b8cab50cf3e9b96a19307deb;hp=05cac9255180b52b5dc5dbb7554a9936631d465e;hpb=c58f43febaefd188708dca010198629c0935728c;p=avr-crypto-lib.git diff --git a/arcfour-asm.S b/arcfour-asm.S index 05cac92..5fbf2a2 100644 --- a/arcfour-asm.S +++ b/arcfour-asm.S @@ -90,7 +90,7 @@ * given in r20:r21 */ arcfour_init: - push_ r2, r28, r29 + push_ r28, r29 movw r26, r20 /* X points to ctx */ movw r30, r24 /* Z points to key */ st X+, r1 @@ -103,29 +103,27 @@ arcfour_init: brne 1b movw r26, r20 - clr r18 /* r18 is keyindex counter */ + add r22, r30 /* r18 is keyindex counter */ clr r0 clr r19 2: ld r23, X - ld r2, Z+ - add r19, r2 + ld r18, Z+ + add r19, r18 add r19, r23 movw r28, r20 /* load pointer to S in Y */ add r28, r19 adc r29, r1 - ld r2, Y + ld r18, Y st Y, r23 - st X+, r2 - inc r18 - cp r18, r22 + st X+, r18 + cp r30, r22 brne 3f movw r30, r24 - clr r18 3: inc r0 brne 2b - pop_ r29, r28, r2 + pop_ r29, r28 ret /*