Small decryption optimization, saving a value in a register between rounds.

This commit is contained in:
Stephen Heumann 2017-06-27 22:35:57 -05:00
parent 634ff1e865
commit e46264f0c4

View File

@ -244,17 +244,19 @@
&out setc state2 &out setc state2
.cont .cont
InvMixColumn 12,1,6,11,12 InvMixColumn 12,1,6,11,12,1
InvMixColumn 0,5,10,15,0 InvMixColumn 0,5,10,15,0
InvMixColumn 4,9,14,3,4
InvMixColumn 8,13,2,7,8 InvMixColumn 8,13,2,7,8
InvMixColumn 4,9,14,3,4,dotax=1
mend mend
macro macro
InvMixColumn &A,&B,&C,&D,&i InvMixColumn &A,&B,&C,&D,&i,&skipldx,&dotax
aif C:&skipldx,.skip
ldx &state+&i+2 ldx &state+&i+2
.skip
lda Xtime9,X lda Xtime9,X
ldy &state+&i+0 ldy &state+&i+0
eor XtimeB,Y eor XtimeB,Y
@ -301,12 +303,17 @@
tay tay
lda InvSbox,Y lda InvSbox,Y
eor rk+(&round-1)*16+&C eor rk+(&round-1)*16+&C
aif (C:&dotax).AND.(&round<>1),.dotax
sta &out+&C sta &out+&C
ago .done
.dotax
tax
.done
mend mend
macro macro
InvFinalRoundStep &to,&from InvFinalRoundStep &to,&from,&dotax
lda state1+&from lda state1+&from
aif (rk+&round*16+&from)>255,.bigindex aif (rk+&round*16+&from)>255,.bigindex
@ -326,8 +333,12 @@
ldx #(&round-1)*16+&to ldx #(&round-1)*16+&to
eor rk,X eor rk,X
.cont2 .cont2
aif C:&dotax,.dotax
sta state2+&to sta state2+&to
ago .done
.dotax
tax
.done
mend mend
@ -344,15 +355,15 @@
InvFinalRoundStep 9,5 InvFinalRoundStep 9,5
InvFinalRoundStep 5,1 InvFinalRoundStep 5,1
InvFinalRoundStep 10,2
InvFinalRoundStep 2,10
InvFinalRoundStep 14,6
InvFinalRoundStep 6,14
InvFinalRoundStep 15,3 InvFinalRoundStep 15,3
InvFinalRoundStep 3,7 InvFinalRoundStep 3,7
InvFinalRoundStep 7,11 InvFinalRoundStep 7,11
InvFinalRoundStep 11,15 InvFinalRoundStep 11,15
InvFinalRoundStep 2,10
InvFinalRoundStep 10,2
InvFinalRoundStep 6,14
InvFinalRoundStep 14,6,1
mend mend