Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
lwc
/
candidates
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
6ec7ff92
authored
Apr 07, 2020
by
Alexandre Adomnicai
Committed by
Enrico Pozzobon
Apr 07, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
romulus armsrc
parent
f33d270a
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
224 additions
and
590 deletions
+224
-590
romulus/Implementations/crypto_aead/romulusm1v12/armsrc/skinny_key_schedule3.c
+112
-295
romulus/Implementations/crypto_aead/romulusn1v12/armsrc/skinny_key_schedule3.c
+112
-295
No files found.
romulus/Implementations/crypto_aead/romulusm1v12/armsrc/skinny_key_schedule3.c
View file @
6ec7ff92
...
...
@@ -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 r
7
, [r0,#516]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#524]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#532]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#540]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#636]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#716]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#724]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#732]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#788]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#796]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#868]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#892]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#900]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#924]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#956]
\n\t
"
"str.w r
3
, [r0,#956]
\n\t
"
// permutation
...
...
romulus/Implementations/crypto_aead/romulusn1v12/armsrc/skinny_key_schedule3.c
View file @
6ec7ff92
...
...
@@ -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 r
7
, [r0,#516]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#524]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#532]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#540]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#636]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#716]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#724]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#732]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#788]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#796]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#868]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#892]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#900]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#924]
\n\t
"
"str.w r
3
, [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 r
7
, [r0,#956]
\n\t
"
"str.w r
3
, [r0,#956]
\n\t
"
// permutation
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment