Commit ab62fe67 by Alexandre Adomnicai Committed by Enrico Pozzobon

romulus armsrc_NEC

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