]> git.cryptolib.org Git - avr-crypto-lib.git/blobdiff - keccak/keccak-asm.S
[keccak-asm] final changes
[avr-crypto-lib.git] / keccak / keccak-asm.S
index db8548cb4f44383a9caced05b95c32198d43860f..a827ea6e292671ebfa58e020c285a3151036fba1 100644 (file)
@@ -429,8 +429,6 @@ keccak_f1600:
        subi XL, lo8(4 * 5 * 8 + 8)
        sbci XH, hi8(4 * 5 * 8 + 8)
        rcall theta_2b
-
-;      ret
 /*
    -- rho & pi --
        for(i = 0; i < 5; ++i){
@@ -686,7 +684,6 @@ keccak_ctx2hash:
        ; length_b = (r9:r8) ; r = (r3:r2) ; (H:L)
        cp  r2, r8
        cpc r3, r9
-;      rjmp 40f
        brsh 40f
        movw XL, r4
        movw ZL, r6
@@ -842,14 +839,14 @@ keccak_lastBlock:
        movw r24, ctx_l
        movw r22, r4
        rcall keccak_nextBlock
-       sub r4, pbs
-       sbc r5, __zero_reg__
+       add r4, pbs
+       adc r5, __zero_reg__
        sub length_b_l, pr_l
-       sbc length_b_l, pr_h
+       sbc length_b_h, pr_h
        rjmp 10b
 20:
-       movw XL, r4
        movw ZL, ctx_l
+       movw XL, r4
        movw r22, length_b_l
        lsr r23
        ror r22
@@ -867,12 +864,12 @@ keccak_lastBlock:
        dec r23
        brne 10b
 20:
+       ldi r25, 1
        mov r18, length_b_l
        andi r18, 7
-       mov r19, r18
-       ldi r25, 1
        breq 30f
        /* we have trailing bits */
+       mov r19, r18
        ld r24, X+
        subi r18, 8
        neg r18