diff --git a/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/skinny_key_schedule3.c b/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/skinny_key_schedule3.c index d8a4f30..81c4406 100644 --- a/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/skinny_key_schedule3.c +++ b/romulus/Implementations/crypto_aead/romulusm1v12/armsrc/skinny_key_schedule3.c @@ -35,15 +35,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 1 // AC(c0 c1) - "ldrb.w r6, [r1,#0] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0x1 \n\t" // k0^rc // round key store "str.w r6, [r0,#512] \n\t" - "str.w r7, [r0,#516] \n\t" + "str.w r3, [r0,#516] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -90,15 +86,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 2 // AC(c0 c1) - "ldrb.w r6, [r1,#1] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0x3 \n\t" // k0^rc // round key store "str.w r6, [r0,#520] \n\t" - "str.w r7, [r0,#524] \n\t" + "str.w r3, [r0,#524] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -145,15 +137,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 3 // AC(c0 c1) - "ldrb.w r6, [r1,#2] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0x7 \n\t" // k0^rc // round key store "str.w r6, [r0,#528] \n\t" - "str.w r7, [r0,#532] \n\t" + "str.w r3, [r0,#532] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -200,15 +188,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 4 // AC(c0 c1) - "ldrb.w r6, [r1,#3] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0xf \n\t" // k0^rc // round key store "str.w r6, [r0,#536] \n\t" - "str.w r7, [r0,#540] \n\t" + "str.w r3, [r0,#540] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -255,11 +239,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 5 // AC(c0 c1) - "ldrb.w r6, [r1,#4] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0xf \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc // round key store "str.w r6, [r0,#544] \n\t" @@ -310,11 +291,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 6 // AC(c0 c1) - "ldrb.w r6, [r1,#5] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0xe \n\t" // k0^rc // round key store "str.w r6, [r0,#552] \n\t" @@ -365,11 +343,9 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 7 // AC(c0 c1) - "ldrb.w r6, [r1,#6] \n\t" // load RC + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0xd \n\t" // k0^rc - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc // round key store "str.w r6, [r0,#560] \n\t" @@ -420,11 +396,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 8 // AC(c0 c1) - "ldrb.w r6, [r1,#7] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0xb \n\t" // k0^rc // round key store "str.w r6, [r0,#568] \n\t" @@ -475,11 +448,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 9 // AC(c0 c1) - "ldrb.w r6, [r1,#8] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x7 \n\t" // k0^rc // round key store "str.w r6, [r0,#576] \n\t" @@ -530,11 +500,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 10 // AC(c0 c1) - "ldrb.w r6, [r1,#9] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0xf \n\t" // k0^rc // round key store "str.w r6, [r0,#584] \n\t" @@ -585,11 +552,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 11 // AC(c0 c1) - "ldrb.w r6, [r1,#10] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0xe \n\t" // k0^rc // round key store "str.w r6, [r0,#592] \n\t" @@ -640,11 +604,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 12 // AC(c0 c1) - "ldrb.w r6, [r1,#11] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0xc \n\t" // k0^rc // round key store "str.w r6, [r0,#600] \n\t" @@ -695,11 +656,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 13 // AC(c0 c1) - "ldrb.w r6, [r1,#12] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x9 \n\t" // k0^rc // round key store "str.w r6, [r0,#608] \n\t" @@ -750,11 +708,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 14 // AC(c0 c1) - "ldrb.w r6, [r1,#13] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x3 \n\t" // k0^rc // round key store "str.w r6, [r0,#616] \n\t" @@ -805,11 +760,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 15 // AC(c0 c1) - "ldrb.w r6, [r1,#14] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x7 \n\t" // k0^rc // round key store "str.w r6, [r0,#624] \n\t" @@ -860,15 +812,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 16 // AC(c0 c1) - "ldrb.w r6, [r1,#15] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0xe \n\t" // k0^rc // round key store "str.w r6, [r0,#632] \n\t" - "str.w r7, [r0,#636] \n\t" + "str.w r3, [r0,#636] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -915,11 +863,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 17 // AC(c0 c1) - "ldrb.w r6, [r1,#16] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0xd \n\t" // k0^rc // round key store "str.w r6, [r0,#640] \n\t" @@ -970,11 +915,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 18 // AC(c0 c1) - "ldrb.w r6, [r1,#17] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0xa \n\t" // k0^rc // round key store "str.w r6, [r0,#648] \n\t" @@ -1025,11 +967,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 19 // AC(c0 c1) - "ldrb.w r6, [r1,#18] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x5 \n\t" // k0^rc // round key store "str.w r6, [r0,#656] \n\t" @@ -1080,11 +1019,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 20 // AC(c0 c1) - "ldrb.w r6, [r1,#19] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0xb \n\t" // k0^rc // round key store "str.w r6, [r0,#664] \n\t" @@ -1135,11 +1071,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 21 // AC(c0 c1) - "ldrb.w r6, [r1,#20] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x6 \n\t" // k0^rc // round key store "str.w r6, [r0,#672] \n\t" @@ -1190,11 +1123,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 22 // AC(c0 c1) - "ldrb.w r6, [r1,#21] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0xc \n\t" // k0^rc // round key store "str.w r6, [r0,#680] \n\t" @@ -1245,11 +1175,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 23 // AC(c0 c1) - "ldrb.w r6, [r1,#22] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x8 \n\t" // k0^rc // round key store "str.w r6, [r0,#688] \n\t" @@ -1300,11 +1227,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 24 // AC(c0 c1) - "ldrb.w r6, [r1,#23] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x0 \n\t" // k0^rc // round key store "str.w r6, [r0,#696] \n\t" @@ -1355,11 +1279,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 25 // AC(c0 c1) - "ldrb.w r6, [r1,#24] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x1 \n\t" // k0^rc // round key store "str.w r6, [r0,#704] \n\t" @@ -1410,15 +1331,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 26 // AC(c0 c1) - "ldrb.w r6, [r1,#25] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0x2 \n\t" // k0^rc // round key store "str.w r6, [r0,#712] \n\t" - "str.w r7, [r0,#716] \n\t" + "str.w r3, [r0,#716] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -1465,15 +1382,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 27 // AC(c0 c1) - "ldrb.w r6, [r1,#26] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0x5 \n\t" // k0^rc // round key store "str.w r6, [r0,#720] \n\t" - "str.w r7, [r0,#724] \n\t" + "str.w r3, [r0,#724] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -1520,15 +1433,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 28 // AC(c0 c1) - "ldrb.w r6, [r1,#27] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0xb \n\t" // k0^rc // round key store "str.w r6, [r0,#728] \n\t" - "str.w r7, [r0,#732] \n\t" + "str.w r3, [r0,#732] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -1575,11 +1484,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 29 // AC(c0 c1) - "ldrb.w r6, [r1,#28] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x7 \n\t" // k0^rc // round key store "str.w r6, [r0,#736] \n\t" @@ -1630,11 +1536,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 30 // AC(c0 c1) - "ldrb.w r6, [r1,#29] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0xe \n\t" // k0^rc // round key store "str.w r6, [r0,#744] \n\t" @@ -1685,11 +1588,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 31 // AC(c0 c1) - "ldrb.w r6, [r1,#30] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0xc \n\t" // k0^rc // round key store "str.w r6, [r0,#752] \n\t" @@ -1740,11 +1640,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 32 // AC(c0 c1) - "ldrb.w r6, [r1,#31] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x8 \n\t" // k0^rc // round key store "str.w r6, [r0,#760] \n\t" @@ -1795,11 +1692,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 33 // AC(c0 c1) - "ldrb.w r6, [r1,#32] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x1 \n\t" // k0^rc // round key store "str.w r6, [r0,#768] \n\t" @@ -1850,11 +1744,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 34 // AC(c0 c1) - "ldrb.w r6, [r1,#33] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x3 \n\t" // k0^rc // round key store "str.w r6, [r0,#776] \n\t" @@ -1905,15 +1796,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 35 // AC(c0 c1) - "ldrb.w r6, [r1,#34] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0x6 \n\t" // k0^rc // round key store "str.w r6, [r0,#784] \n\t" - "str.w r7, [r0,#788] \n\t" + "str.w r3, [r0,#788] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -1960,15 +1847,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 36 // AC(c0 c1) - "ldrb.w r6, [r1,#35] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0xd \n\t" // k0^rc // round key store "str.w r6, [r0,#792] \n\t" - "str.w r7, [r0,#796] \n\t" + "str.w r3, [r0,#796] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -2015,11 +1898,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 37 // AC(c0 c1) - "ldrb.w r6, [r1,#36] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0xb \n\t" // k0^rc // round key store "str.w r6, [r0,#800] \n\t" @@ -2070,11 +1950,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 38 // AC(c0 c1) - "ldrb.w r6, [r1,#37] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x6 \n\t" // k0^rc // round key store "str.w r6, [r0,#808] \n\t" @@ -2125,11 +2002,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 39 // AC(c0 c1) - "ldrb.w r6, [r1,#38] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0xd \n\t" // k0^rc // round key store "str.w r6, [r0,#816] \n\t" @@ -2180,11 +2054,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 40 // AC(c0 c1) - "ldrb.w r6, [r1,#39] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0xa \n\t" // k0^rc // round key store "str.w r6, [r0,#824] \n\t" @@ -2235,11 +2106,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 41 // AC(c0 c1) - "ldrb.w r6, [r1,#40] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x4 \n\t" // k0^rc // round key store "str.w r6, [r0,#832] \n\t" @@ -2290,11 +2158,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 42 // AC(c0 c1) - "ldrb.w r6, [r1,#41] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x9 \n\t" // k0^rc // round key store "str.w r6, [r0,#840] \n\t" @@ -2345,11 +2210,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 43 // AC(c0 c1) - "ldrb.w r6, [r1,#42] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x2 \n\t" // k0^rc // round key store "str.w r6, [r0,#848] \n\t" @@ -2400,11 +2262,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 44 // AC(c0 c1) - "ldrb.w r6, [r1,#43] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x4 \n\t" // k0^rc // round key store "str.w r6, [r0,#856] \n\t" @@ -2455,15 +2314,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 45 // AC(c0 c1) - "ldrb.w r6, [r1,#44] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0x8 \n\t" // k0^rc // round key store "str.w r6, [r0,#864] \n\t" - "str.w r7, [r0,#868] \n\t" + "str.w r3, [r0,#868] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -2510,11 +2365,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 46 // AC(c0 c1) - "ldrb.w r6, [r1,#45] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x1 \n\t" // k0^rc // round key store "str.w r6, [r0,#872] \n\t" @@ -2565,11 +2417,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 47 // AC(c0 c1) - "ldrb.w r6, [r1,#46] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x2 \n\t" // k0^rc // round key store "str.w r6, [r0,#880] \n\t" @@ -2620,15 +2469,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 48 // AC(c0 c1) - "ldrb.w r6, [r1,#47] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0x4 \n\t" // k0^rc // round key store "str.w r6, [r0,#888] \n\t" - "str.w r7, [r0,#892] \n\t" + "str.w r3, [r0,#892] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -2675,15 +2520,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 49 // AC(c0 c1) - "ldrb.w r6, [r1,#48] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0x9 \n\t" // k0^rc // round key store "str.w r6, [r0,#896] \n\t" - "str.w r7, [r0,#900] \n\t" + "str.w r3, [r0,#900] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -2730,11 +2571,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 50 // AC(c0 c1) - "ldrb.w r6, [r1,#49] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x3 \n\t" // k0^rc // round key store "str.w r6, [r0,#904] \n\t" @@ -2785,11 +2623,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 51 // AC(c0 c1) - "ldrb.w r6, [r1,#50] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x6 \n\t" // k0^rc // round key store "str.w r6, [r0,#912] \n\t" @@ -2840,15 +2675,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 52 // AC(c0 c1) - "ldrb.w r6, [r1,#51] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0xc \n\t" // k0^rc // round key store "str.w r6, [r0,#920] \n\t" - "str.w r7, [r0,#924] \n\t" + "str.w r3, [r0,#924] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -2895,11 +2726,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 53 // AC(c0 c1) - "ldrb.w r6, [r1,#52] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x9 \n\t" // k0^rc // round key store "str.w r6, [r0,#928] \n\t" @@ -2950,11 +2778,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 54 // AC(c0 c1) - "ldrb.w r6, [r1,#53] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x2 \n\t" // k0^rc // round key store "str.w r6, [r0,#936] \n\t" @@ -3005,12 +2830,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 55 // AC(c0 c1) - "ldrb.w r6, [r1,#54] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc - + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x5 \n\t" // k0^rc // round key store "str.w r6, [r0,#944] \n\t" "str.w r7, [r0,#948] \n\t" @@ -3060,15 +2881,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 56 // AC(c0 c1) - "ldrb.w r6, [r1,#55] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0xa \n\t" // k0^rc // round key store "str.w r6, [r0,#952] \n\t" - "str.w r7, [r0,#956] \n\t" + "str.w r3, [r0,#956] \n\t" // permutation diff --git a/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/skinny_key_schedule3.c b/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/skinny_key_schedule3.c index d8a4f30..81c4406 100644 --- a/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/skinny_key_schedule3.c +++ b/romulus/Implementations/crypto_aead/romulusn1v12/armsrc/skinny_key_schedule3.c @@ -35,15 +35,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 1 // AC(c0 c1) - "ldrb.w r6, [r1,#0] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0x1 \n\t" // k0^rc // round key store "str.w r6, [r0,#512] \n\t" - "str.w r7, [r0,#516] \n\t" + "str.w r3, [r0,#516] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -90,15 +86,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 2 // AC(c0 c1) - "ldrb.w r6, [r1,#1] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0x3 \n\t" // k0^rc // round key store "str.w r6, [r0,#520] \n\t" - "str.w r7, [r0,#524] \n\t" + "str.w r3, [r0,#524] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -145,15 +137,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 3 // AC(c0 c1) - "ldrb.w r6, [r1,#2] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0x7 \n\t" // k0^rc // round key store "str.w r6, [r0,#528] \n\t" - "str.w r7, [r0,#532] \n\t" + "str.w r3, [r0,#532] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -200,15 +188,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 4 // AC(c0 c1) - "ldrb.w r6, [r1,#3] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0xf \n\t" // k0^rc // round key store "str.w r6, [r0,#536] \n\t" - "str.w r7, [r0,#540] \n\t" + "str.w r3, [r0,#540] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -255,11 +239,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 5 // AC(c0 c1) - "ldrb.w r6, [r1,#4] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0xf \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc // round key store "str.w r6, [r0,#544] \n\t" @@ -310,11 +291,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 6 // AC(c0 c1) - "ldrb.w r6, [r1,#5] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0xe \n\t" // k0^rc // round key store "str.w r6, [r0,#552] \n\t" @@ -365,11 +343,9 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 7 // AC(c0 c1) - "ldrb.w r6, [r1,#6] \n\t" // load RC + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0xd \n\t" // k0^rc - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc // round key store "str.w r6, [r0,#560] \n\t" @@ -420,11 +396,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 8 // AC(c0 c1) - "ldrb.w r6, [r1,#7] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0xb \n\t" // k0^rc // round key store "str.w r6, [r0,#568] \n\t" @@ -475,11 +448,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 9 // AC(c0 c1) - "ldrb.w r6, [r1,#8] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x7 \n\t" // k0^rc // round key store "str.w r6, [r0,#576] \n\t" @@ -530,11 +500,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 10 // AC(c0 c1) - "ldrb.w r6, [r1,#9] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0xf \n\t" // k0^rc // round key store "str.w r6, [r0,#584] \n\t" @@ -585,11 +552,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 11 // AC(c0 c1) - "ldrb.w r6, [r1,#10] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0xe \n\t" // k0^rc // round key store "str.w r6, [r0,#592] \n\t" @@ -640,11 +604,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 12 // AC(c0 c1) - "ldrb.w r6, [r1,#11] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0xc \n\t" // k0^rc // round key store "str.w r6, [r0,#600] \n\t" @@ -695,11 +656,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 13 // AC(c0 c1) - "ldrb.w r6, [r1,#12] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x9 \n\t" // k0^rc // round key store "str.w r6, [r0,#608] \n\t" @@ -750,11 +708,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 14 // AC(c0 c1) - "ldrb.w r6, [r1,#13] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x3 \n\t" // k0^rc // round key store "str.w r6, [r0,#616] \n\t" @@ -805,11 +760,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 15 // AC(c0 c1) - "ldrb.w r6, [r1,#14] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x7 \n\t" // k0^rc // round key store "str.w r6, [r0,#624] \n\t" @@ -860,15 +812,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 16 // AC(c0 c1) - "ldrb.w r6, [r1,#15] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0xe \n\t" // k0^rc // round key store "str.w r6, [r0,#632] \n\t" - "str.w r7, [r0,#636] \n\t" + "str.w r3, [r0,#636] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -915,11 +863,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 17 // AC(c0 c1) - "ldrb.w r6, [r1,#16] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0xd \n\t" // k0^rc // round key store "str.w r6, [r0,#640] \n\t" @@ -970,11 +915,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 18 // AC(c0 c1) - "ldrb.w r6, [r1,#17] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0xa \n\t" // k0^rc // round key store "str.w r6, [r0,#648] \n\t" @@ -1025,11 +967,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 19 // AC(c0 c1) - "ldrb.w r6, [r1,#18] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x5 \n\t" // k0^rc // round key store "str.w r6, [r0,#656] \n\t" @@ -1080,11 +1019,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 20 // AC(c0 c1) - "ldrb.w r6, [r1,#19] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0xb \n\t" // k0^rc // round key store "str.w r6, [r0,#664] \n\t" @@ -1135,11 +1071,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 21 // AC(c0 c1) - "ldrb.w r6, [r1,#20] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x6 \n\t" // k0^rc // round key store "str.w r6, [r0,#672] \n\t" @@ -1190,11 +1123,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 22 // AC(c0 c1) - "ldrb.w r6, [r1,#21] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0xc \n\t" // k0^rc // round key store "str.w r6, [r0,#680] \n\t" @@ -1245,11 +1175,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 23 // AC(c0 c1) - "ldrb.w r6, [r1,#22] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x8 \n\t" // k0^rc // round key store "str.w r6, [r0,#688] \n\t" @@ -1300,11 +1227,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 24 // AC(c0 c1) - "ldrb.w r6, [r1,#23] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x0 \n\t" // k0^rc // round key store "str.w r6, [r0,#696] \n\t" @@ -1355,11 +1279,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 25 // AC(c0 c1) - "ldrb.w r6, [r1,#24] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x1 \n\t" // k0^rc // round key store "str.w r6, [r0,#704] \n\t" @@ -1410,15 +1331,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 26 // AC(c0 c1) - "ldrb.w r6, [r1,#25] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0x2 \n\t" // k0^rc // round key store "str.w r6, [r0,#712] \n\t" - "str.w r7, [r0,#716] \n\t" + "str.w r3, [r0,#716] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -1465,15 +1382,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 27 // AC(c0 c1) - "ldrb.w r6, [r1,#26] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0x5 \n\t" // k0^rc // round key store "str.w r6, [r0,#720] \n\t" - "str.w r7, [r0,#724] \n\t" + "str.w r3, [r0,#724] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -1520,15 +1433,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 28 // AC(c0 c1) - "ldrb.w r6, [r1,#27] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0xb \n\t" // k0^rc // round key store "str.w r6, [r0,#728] \n\t" - "str.w r7, [r0,#732] \n\t" + "str.w r3, [r0,#732] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -1575,11 +1484,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 29 // AC(c0 c1) - "ldrb.w r6, [r1,#28] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x7 \n\t" // k0^rc // round key store "str.w r6, [r0,#736] \n\t" @@ -1630,11 +1536,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 30 // AC(c0 c1) - "ldrb.w r6, [r1,#29] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0xe \n\t" // k0^rc // round key store "str.w r6, [r0,#744] \n\t" @@ -1685,11 +1588,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 31 // AC(c0 c1) - "ldrb.w r6, [r1,#30] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0xc \n\t" // k0^rc // round key store "str.w r6, [r0,#752] \n\t" @@ -1740,11 +1640,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 32 // AC(c0 c1) - "ldrb.w r6, [r1,#31] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x8 \n\t" // k0^rc // round key store "str.w r6, [r0,#760] \n\t" @@ -1795,11 +1692,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 33 // AC(c0 c1) - "ldrb.w r6, [r1,#32] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x1 \n\t" // k0^rc // round key store "str.w r6, [r0,#768] \n\t" @@ -1850,11 +1744,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 34 // AC(c0 c1) - "ldrb.w r6, [r1,#33] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x3 \n\t" // k0^rc // round key store "str.w r6, [r0,#776] \n\t" @@ -1905,15 +1796,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 35 // AC(c0 c1) - "ldrb.w r6, [r1,#34] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0x6 \n\t" // k0^rc // round key store "str.w r6, [r0,#784] \n\t" - "str.w r7, [r0,#788] \n\t" + "str.w r3, [r0,#788] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -1960,15 +1847,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 36 // AC(c0 c1) - "ldrb.w r6, [r1,#35] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0xd \n\t" // k0^rc // round key store "str.w r6, [r0,#792] \n\t" - "str.w r7, [r0,#796] \n\t" + "str.w r3, [r0,#796] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -2015,11 +1898,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 37 // AC(c0 c1) - "ldrb.w r6, [r1,#36] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0xb \n\t" // k0^rc // round key store "str.w r6, [r0,#800] \n\t" @@ -2070,11 +1950,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 38 // AC(c0 c1) - "ldrb.w r6, [r1,#37] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x6 \n\t" // k0^rc // round key store "str.w r6, [r0,#808] \n\t" @@ -2125,11 +2002,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 39 // AC(c0 c1) - "ldrb.w r6, [r1,#38] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0xd \n\t" // k0^rc // round key store "str.w r6, [r0,#816] \n\t" @@ -2180,11 +2054,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 40 // AC(c0 c1) - "ldrb.w r6, [r1,#39] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0xa \n\t" // k0^rc // round key store "str.w r6, [r0,#824] \n\t" @@ -2235,11 +2106,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 41 // AC(c0 c1) - "ldrb.w r6, [r1,#40] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x4 \n\t" // k0^rc // round key store "str.w r6, [r0,#832] \n\t" @@ -2290,11 +2158,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 42 // AC(c0 c1) - "ldrb.w r6, [r1,#41] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x9 \n\t" // k0^rc // round key store "str.w r6, [r0,#840] \n\t" @@ -2345,11 +2210,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 43 // AC(c0 c1) - "ldrb.w r6, [r1,#42] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x2 \n\t" // k0^rc // round key store "str.w r6, [r0,#848] \n\t" @@ -2400,11 +2262,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 44 // AC(c0 c1) - "ldrb.w r6, [r1,#43] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x4 \n\t" // k0^rc // round key store "str.w r6, [r0,#856] \n\t" @@ -2455,15 +2314,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 45 // AC(c0 c1) - "ldrb.w r6, [r1,#44] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0x8 \n\t" // k0^rc // round key store "str.w r6, [r0,#864] \n\t" - "str.w r7, [r0,#868] \n\t" + "str.w r3, [r0,#868] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -2510,11 +2365,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 46 // AC(c0 c1) - "ldrb.w r6, [r1,#45] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x1 \n\t" // k0^rc // round key store "str.w r6, [r0,#872] \n\t" @@ -2565,11 +2417,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 47 // AC(c0 c1) - "ldrb.w r6, [r1,#46] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x2 \n\t" // k0^rc // round key store "str.w r6, [r0,#880] \n\t" @@ -2620,15 +2469,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 48 // AC(c0 c1) - "ldrb.w r6, [r1,#47] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0x4 \n\t" // k0^rc // round key store "str.w r6, [r0,#888] \n\t" - "str.w r7, [r0,#892] \n\t" + "str.w r3, [r0,#892] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -2675,15 +2520,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 49 // AC(c0 c1) - "ldrb.w r6, [r1,#48] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0x9 \n\t" // k0^rc // round key store "str.w r6, [r0,#896] \n\t" - "str.w r7, [r0,#900] \n\t" + "str.w r3, [r0,#900] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -2730,11 +2571,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 50 // AC(c0 c1) - "ldrb.w r6, [r1,#49] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x3 \n\t" // k0^rc // round key store "str.w r6, [r0,#904] \n\t" @@ -2785,11 +2623,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 51 // AC(c0 c1) - "ldrb.w r6, [r1,#50] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x6 \n\t" // k0^rc // round key store "str.w r6, [r0,#912] \n\t" @@ -2840,15 +2675,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 52 // AC(c0 c1) - "ldrb.w r6, [r1,#51] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0xc \n\t" // k0^rc // round key store "str.w r6, [r0,#920] \n\t" - "str.w r7, [r0,#924] \n\t" + "str.w r3, [r0,#924] \n\t" // permutation // r2 (k3 k2 k1 k0) k13 k8 k15 k9 @@ -2895,11 +2726,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 53 // AC(c0 c1) - "ldrb.w r6, [r1,#52] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x1 \n\t" // k0^rc + "eor.w r6, r2, #0x9 \n\t" // k0^rc // round key store "str.w r6, [r0,#928] \n\t" @@ -2950,11 +2778,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 54 // AC(c0 c1) - "ldrb.w r6, [r1,#53] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r7, r3, #0x3 \n\t" // k0^rc + "eor.w r6, r2, #0x2 \n\t" // k0^rc // round key store "str.w r6, [r0,#936] \n\t" @@ -3005,12 +2830,8 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 55 // AC(c0 c1) - "ldrb.w r6, [r1,#54] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc - + "eor.w r7, r3, #0x2 \n\t" // k0^rc + "eor.w r6, r2, #0x5 \n\t" // k0^rc // round key store "str.w r6, [r0,#944] \n\t" "str.w r7, [r0,#948] \n\t" @@ -3060,15 +2881,11 @@ void RunEncryptionKeyScheduleTK3(unsigned char *roundKeys, unsigned char *pRC) // round 56 // AC(c0 c1) - "ldrb.w r6, [r1,#55] \n\t" // load RC - - "eor.w r7, r3, r6, lsr #4 \n\t" // k4^rc - "and.w r6, r6, #0xf \n\t" - "eor.w r6, r6, r2 \n\t" // k0^rc + "eor.w r6, r2, #0xa \n\t" // k0^rc // round key store "str.w r6, [r0,#952] \n\t" - "str.w r7, [r0,#956] \n\t" + "str.w r3, [r0,#956] \n\t" // permutation