aes-armv4.S revision 392aa7cc7d2b122614c5393c3e357da07fd07af3
1392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#include "arm_arch.h"
2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.text
3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.code	32
4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type	AES_Te,%object
6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	5
7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectAES_Te:
8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d
9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554
10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d
11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a
12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87
13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b
14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea
15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b
16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a
17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f
18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108
19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f
20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e
21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5
22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d
23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f
24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e
25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb
26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce
27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497
28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c
29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed
30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b
31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a
32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16
33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594
34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81
35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3
36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a
37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504
38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163
39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d
40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f
41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739
42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47
43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395
44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f
45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883
46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c
47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76
48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e
49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4
50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6
51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b
52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7
53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0
54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25
55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818
56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72
57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651
58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21
59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85
60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa
61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12
62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0
63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9
64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133
65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7
66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920
67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a
68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17
69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8
70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11
71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a
72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project@ Te4[256]
73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5
74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76
75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0
76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0
77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc
78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15
79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a
80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75
81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0
82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84
83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b
84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf
85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85
86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8
87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5
88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2
89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17
90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73
91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88
92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb
93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c
94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79
95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9
96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08
97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6
98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a
99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e
100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e
101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94
102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf
103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68
104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16
105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project@ rcon[]
106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x01000000, 0x02000000, 0x04000000, 0x08000000
107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x10000000, 0x20000000, 0x40000000, 0x80000000
108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x1B000000, 0x36000000, 0, 0, 0, 0, 0, 0
109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	AES_Te,.-AES_Te
110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project@ void AES_encrypt(const unsigned char *in, unsigned char *out,
112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project@ 		 const AES_KEY *key) {
113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global AES_encrypt
114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type   AES_encrypt,%function
115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	5
116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectAES_encrypt:
117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sub	r3,pc,#8		@ AES_encrypt
118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stmdb   sp!,{r1,r4-r12,lr}
119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r12,r0		@ inp
120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r11,r2
121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sub	r10,r3,#AES_encrypt-AES_Te	@ Te
122392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__<7
123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r0,[r12,#3]	@ load input data in endian-neutral
124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r4,[r12,#2]	@ manner...
125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r5,[r12,#1]
126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r6,[r12,#0]
127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r4,lsl#8
128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r1,[r12,#7]
12943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	orr	r0,r0,r5,lsl#16
130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r4,[r12,#6]
13143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	orr	r0,r0,r6,lsl#24
132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r5,[r12,#5]
133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r6,[r12,#4]
134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r1,r1,r4,lsl#8
135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r2,[r12,#11]
13643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	orr	r1,r1,r5,lsl#16
137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r4,[r12,#10]
13843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	orr	r1,r1,r6,lsl#24
139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r5,[r12,#9]
140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r6,[r12,#8]
141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r2,r2,r4,lsl#8
142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r3,[r12,#15]
14343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	orr	r2,r2,r5,lsl#16
144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r4,[r12,#14]
14543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	orr	r2,r2,r6,lsl#24
146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r5,[r12,#13]
147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r6,[r12,#12]
148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r4,lsl#8
149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r5,lsl#16
150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r6,lsl#24
151392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
152392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r0,[r12,#0]
153392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[r12,#4]
154392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r2,[r12,#8]
155392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r3,[r12,#12]
156392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef __ARMEL__
157392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r0,r0
158392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r1,r1
159392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r2,r2
160392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
161392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
162392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bl	_armv4_AES_encrypt
164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r12,[sp],#4		@ pop out
166392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=7
167392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef __ARMEL__
168392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r0,r0
169392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r1,r1
170392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r2,r2
171392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
172392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
173392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r0,[r12,#0]
174392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[r12,#4]
175392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r2,[r12,#8]
176392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[r12,#12]
177392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r4,r0,lsr#24		@ write output in endian-neutral
179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r5,r0,lsr#16		@ manner...
180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r6,r0,lsr#8
181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	strb	r4,[r12,#0]
182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	strb	r5,[r12,#1]
183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r4,r1,lsr#24
18443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	strb	r6,[r12,#2]
185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r5,r1,lsr#16
18643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	strb	r0,[r12,#3]
187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r6,r1,lsr#8
188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	strb	r4,[r12,#4]
189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	strb	r5,[r12,#5]
190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r4,r2,lsr#24
19143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	strb	r6,[r12,#6]
192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r5,r2,lsr#16
19343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	strb	r1,[r12,#7]
194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r6,r2,lsr#8
195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	strb	r4,[r12,#8]
196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	strb	r5,[r12,#9]
197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r4,r3,lsr#24
19843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	strb	r6,[r12,#10]
199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r5,r3,lsr#16
20043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	strb	r2,[r12,#11]
201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r6,r3,lsr#8
202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	strb	r4,[r12,#12]
203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	strb	r5,[r12,#13]
204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	strb	r6,[r12,#14]
205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	strb	r3,[r12,#15]
206392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
207392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=5
208392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldmia	sp!,{r4-r12,pc}
209392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldmia   sp!,{r4-r12,lr}
211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	tst	lr,#1
212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	moveq	pc,lr			@ be binary compatible with V4, yet
213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	.word	0xe12fff1e			@ interoperable with Thumb ISA:-)
214392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	AES_encrypt,.-AES_encrypt
216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type   _armv4_AES_encrypt,%function
218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	2
219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project_armv4_AES_encrypt:
220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	lr,[sp,#-4]!		@ push lr
22143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldmia	r11!,{r4-r7}
222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r4
22343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r12,[r11,#240-16]
224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r1,r1,r5
225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r6
226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r3,r3,r7
227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sub	r12,r12,#1
228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	lr,#255
229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
23043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r7,lr,r0
231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r8,lr,r0,lsr#8
232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r9,lr,r0,lsr#16
233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r0,lsr#24
23443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.Lenc_loop:
235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r4,[r10,r7,lsl#2]	@ Te3[s0>>0]
236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r7,lr,r1,lsr#16	@ i0
23743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r5,[r10,r8,lsl#2]	@ Te2[s0>>8]
238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r8,lr,r1
23943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r6,[r10,r9,lsl#2]	@ Te1[s0>>16]
240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r9,lr,r1,lsr#8
24143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r0,[r10,r0,lsl#2]	@ Te0[s0>>24]
242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r1,r1,lsr#24
24343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom
244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r7,[r10,r7,lsl#2]	@ Te1[s1>>16]
245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r8,[r10,r8,lsl#2]	@ Te3[s1>>0]
246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r9,[r10,r9,lsl#2]	@ Te2[s1>>8]
247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r7,ror#8
24843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r1,[r10,r1,lsl#2]	@ Te0[s1>>24]
249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r7,lr,r2,lsr#8	@ i0
25043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r5,r5,r8,ror#8
251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r8,lr,r2,lsr#16	@ i1
25243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r6,r6,r9,ror#8
253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r9,lr,r2
254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r7,[r10,r7,lsl#2]	@ Te2[s2>>8]
255392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r4,ror#24
256392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r8,[r10,r8,lsl#2]	@ Te1[s2>>16]
25743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	mov	r2,r2,lsr#24
25843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom
259656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r9,[r10,r9,lsl#2]	@ Te3[s2>>0]
260656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r7,ror#16
26143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r2,[r10,r2,lsl#2]	@ Te0[s2>>24]
262656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r7,lr,r3		@ i0
26343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r1,r1,r8,ror#8
264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r8,lr,r3,lsr#8	@ i1
26543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r6,r6,r9,ror#16
266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r9,lr,r3,lsr#16	@ i2
267656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r7,[r10,r7,lsl#2]	@ Te3[s3>>0]
268392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r2,r2,r5,ror#16
269392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r8,[r10,r8,lsl#2]	@ Te2[s3>>8]
27043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	mov	r3,r3,lsr#24
27143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom
272656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r9,[r10,r9,lsl#2]	@ Te1[s3>>16]
273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r7,ror#24
27443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r7,[r11],#16
275392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r8,ror#16
276392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r3,[r10,r3,lsl#2]	@ Te0[s3>>24]
277656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r9,ror#8
27843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r4,[r11,#-12]
279656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r3,r3,r6,ror#8
280656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
28143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r5,[r11,#-8]
28243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r7
28343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r6,[r11,#-4]
28443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r7,lr,r0
28543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r1,r1,r4
28643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r8,lr,r0,lsr#8
28743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r2,r2,r5
28843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r9,lr,r0,lsr#16
28943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r3,r3,r6
29043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	mov	r0,r0,lsr#24
291656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
292656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	subs	r12,r12,#1
293656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bne	.Lenc_loop
294656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
295656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r10,r10,#2
296656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
297656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r4,[r10,r7,lsl#2]	@ Te4[s0>>0]
298656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r7,lr,r1,lsr#16	@ i0
29943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldrb	r5,[r10,r8,lsl#2]	@ Te4[s0>>8]
300656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r8,lr,r1
30143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldrb	r6,[r10,r9,lsl#2]	@ Te4[s0>>16]
302656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r9,lr,r1,lsr#8
30343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldrb	r0,[r10,r0,lsl#2]	@ Te4[s0>>24]
304656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r1,r1,lsr#24
30543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom
306656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r7,[r10,r7,lsl#2]	@ Te4[s1>>16]
307656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r8,[r10,r8,lsl#2]	@ Te4[s1>>0]
308656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r9,[r10,r9,lsl#2]	@ Te4[s1>>8]
309656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r7,r0,lsl#8
31043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldrb	r1,[r10,r1,lsl#2]	@ Te4[s1>>24]
311656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r7,lr,r2,lsr#8	@ i0
31243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r5,r8,r5,lsl#8
313656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r8,lr,r2,lsr#16	@ i1
31443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r6,r9,r6,lsl#8
315656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r9,lr,r2
316656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r7,[r10,r7,lsl#2]	@ Te4[s2>>8]
317392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r4,r1,lsl#24
318392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldrb	r8,[r10,r8,lsl#2]	@ Te4[s2>>16]
31943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	mov	r2,r2,lsr#24
32043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom
321656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r9,[r10,r9,lsl#2]	@ Te4[s2>>0]
322656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r7,r0,lsl#8
32343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldrb	r2,[r10,r2,lsl#2]	@ Te4[s2>>24]
324656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r7,lr,r3		@ i0
32543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r1,r1,r8,lsl#16
326656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r8,lr,r3,lsr#8	@ i1
32743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r6,r9,r6,lsl#8
328656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r9,lr,r3,lsr#16	@ i2
329656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r7,[r10,r7,lsl#2]	@ Te4[s3>>0]
330392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r2,r5,r2,lsl#24
331392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldrb	r8,[r10,r8,lsl#2]	@ Te4[s3>>8]
33243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	mov	r3,r3,lsr#24
33343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom
334656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r9,[r10,r9,lsl#2]	@ Te4[s3>>16]
335656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r7,r0,lsl#8
33643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r7,[r11,#0]
337392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldrb	r3,[r10,r3,lsl#2]	@ Te4[s3>>24]
338656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r1,r1,r8,lsl#8
33943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r4,[r11,#4]
340656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r9,lsl#16
34143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r5,[r11,#8]
342656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r3,r6,r3,lsl#24
34343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r6,[r11,#12]
344656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
34543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r7
34643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r1,r1,r4
34743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r2,r2,r5
34843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r3,r3,r6
349656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
350656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sub	r10,r10,#2
35143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	pc,[sp],#4		@ pop and return
352656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	_armv4_AES_encrypt,.-_armv4_AES_encrypt
353656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
354392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom.global private_AES_set_encrypt_key
355392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom.type   private_AES_set_encrypt_key,%function
356656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	5
357392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromprivate_AES_set_encrypt_key:
358656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sub	r3,pc,#8		@ AES_set_encrypt_key
359656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	teq	r0,#0
360656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	moveq	r0,#-1
361656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	beq	.Labrt
362656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	teq	r2,#0
363656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	moveq	r0,#-1
364656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	beq	.Labrt
365656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
366656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	teq	r1,#128
367656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	beq	.Lok
368656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	teq	r1,#192
369656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	beq	.Lok
370656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	teq	r1,#256
371656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	movne	r0,#-1
372656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bne	.Labrt
373656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
374656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.Lok:	stmdb   sp!,{r4-r12,lr}
375392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	sub	r10,r3,#private_AES_set_encrypt_key-AES_Te-1024	@ Te4
376656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
377656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r12,r0		@ inp
378656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	lr,r1			@ bits
379656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r11,r2			@ key
380656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
381392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__<7
382656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r0,[r12,#3]	@ load input data in endian-neutral
383656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r4,[r12,#2]	@ manner...
384656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r5,[r12,#1]
385656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r6,[r12,#0]
386656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r4,lsl#8
387656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r1,[r12,#7]
38843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	orr	r0,r0,r5,lsl#16
389656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r4,[r12,#6]
39043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	orr	r0,r0,r6,lsl#24
391656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r5,[r12,#5]
392656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r6,[r12,#4]
393656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r1,r1,r4,lsl#8
394656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r2,[r12,#11]
39543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	orr	r1,r1,r5,lsl#16
396656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r4,[r12,#10]
39743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	orr	r1,r1,r6,lsl#24
398656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r5,[r12,#9]
399656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r6,[r12,#8]
400656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r2,r2,r4,lsl#8
401656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r3,[r12,#15]
40243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	orr	r2,r2,r5,lsl#16
403656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r4,[r12,#14]
40443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	orr	r2,r2,r6,lsl#24
405656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r5,[r12,#13]
406656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r6,[r12,#12]
407656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r4,lsl#8
408656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r0,[r11],#16
40943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	orr	r3,r3,r5,lsl#16
410656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r1,[r11,#-12]
41143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	orr	r3,r3,r6,lsl#24
412656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r2,[r11,#-8]
413656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r3,[r11,#-4]
414392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
415392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r0,[r12,#0]
416392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[r12,#4]
417392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r2,[r12,#8]
418392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r3,[r12,#12]
419392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef __ARMEL__
420392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r0,r0
421392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r1,r1
422392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r2,r2
423392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
424392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
425392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r0,[r11],#16
426392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[r11,#-12]
427392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r2,[r11,#-8]
428392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[r11,#-4]
429392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
430656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
431656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	teq	lr,#128
432656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bne	.Lnot128
433656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r12,#10
434656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r12,[r11,#240-16]
435656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r6,r10,#256			@ rcon
436656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	lr,#255
437656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
438656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L128_loop:
439656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r5,lr,r3,lsr#24
440656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r7,lr,r3,lsr#16
441656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r5,[r10,r5]
44243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r8,lr,r3,lsr#8
443656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r7,[r10,r7]
44443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r9,lr,r3
445656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r8,[r10,r8]
446656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r5,r5,r7,lsl#24
44743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldrb	r9,[r10,r9]
448656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r5,r5,r8,lsl#16
44943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r4,[r6],#4			@ rcon[i++]
450656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r5,r5,r9,lsl#8
451656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r5,r5,r4
452656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r5			@ rk[4]=rk[0]^...
453656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r1,r1,r0			@ rk[5]=rk[1]^rk[4]
454656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r0,[r11],#16
45543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r2,r2,r1			@ rk[6]=rk[2]^rk[5]
456656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r1,[r11,#-12]
45743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r3,r3,r2			@ rk[7]=rk[3]^rk[6]
458656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r2,[r11,#-8]
459656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	subs	r12,r12,#1
46043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	str	r3,[r11,#-4]
461656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bne	.L128_loop
462656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sub	r2,r11,#176
463656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	b	.Ldone
464656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
465656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.Lnot128:
466392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__<7
467656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r8,[r12,#19]
468656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r4,[r12,#18]
469656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r5,[r12,#17]
470656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r6,[r12,#16]
471656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r8,r8,r4,lsl#8
472656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r9,[r12,#23]
47343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	orr	r8,r8,r5,lsl#16
474656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r4,[r12,#22]
47543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	orr	r8,r8,r6,lsl#24
476656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r5,[r12,#21]
477656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r6,[r12,#20]
478656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r9,r9,r4,lsl#8
479656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r9,r9,r5,lsl#16
480656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r8,[r11],#8
48143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	orr	r9,r9,r6,lsl#24
482656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r9,[r11,#-4]
483392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
484392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r8,[r12,#16]
485392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r9,[r12,#20]
486392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef __ARMEL__
487392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r8,r8
488392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r9,r9
489392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
490392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r8,[r11],#8
491392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r9,[r11,#-4]
492392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
493656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
494656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	teq	lr,#192
495656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bne	.Lnot192
496656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r12,#12
497656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r12,[r11,#240-24]
498656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r6,r10,#256			@ rcon
499656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	lr,#255
500656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r12,#8
501656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
502656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L192_loop:
503656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r5,lr,r9,lsr#24
504656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r7,lr,r9,lsr#16
505656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r5,[r10,r5]
50643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r8,lr,r9,lsr#8
507656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r7,[r10,r7]
50843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r9,lr,r9
509656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r8,[r10,r8]
510656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r5,r5,r7,lsl#24
51143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldrb	r9,[r10,r9]
512656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r5,r5,r8,lsl#16
51343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r4,[r6],#4			@ rcon[i++]
514656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r5,r5,r9,lsl#8
515656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r9,r5,r4
516656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r9			@ rk[6]=rk[0]^...
517656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r1,r1,r0			@ rk[7]=rk[1]^rk[6]
518656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r0,[r11],#24
51943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r2,r2,r1			@ rk[8]=rk[2]^rk[7]
520656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r1,[r11,#-20]
52143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r3,r3,r2			@ rk[9]=rk[3]^rk[8]
522656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r2,[r11,#-16]
523656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	subs	r12,r12,#1
52443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	str	r3,[r11,#-12]
525656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	subeq	r2,r11,#216
526656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	beq	.Ldone
527656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
528656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r7,[r11,#-32]
529656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r8,[r11,#-28]
530656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r7,r7,r3			@ rk[10]=rk[4]^rk[9]
531656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r9,r8,r7			@ rk[11]=rk[5]^rk[10]
532656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r7,[r11,#-8]
533656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r9,[r11,#-4]
534656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	b	.L192_loop
535656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
536656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.Lnot192:
537392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__<7
538656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r8,[r12,#27]
539656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r4,[r12,#26]
540656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r5,[r12,#25]
541656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r6,[r12,#24]
542656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r8,r8,r4,lsl#8
543656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r9,[r12,#31]
54443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	orr	r8,r8,r5,lsl#16
545656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r4,[r12,#30]
54643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	orr	r8,r8,r6,lsl#24
547656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r5,[r12,#29]
548656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r6,[r12,#28]
549656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r9,r9,r4,lsl#8
550656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r9,r9,r5,lsl#16
551656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r8,[r11],#8
55243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	orr	r9,r9,r6,lsl#24
553656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r9,[r11,#-4]
554392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
555392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r8,[r12,#24]
556392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r9,[r12,#28]
557392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef __ARMEL__
558392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r8,r8
559392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r9,r9
560392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
561392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r8,[r11],#8
562392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r9,[r11,#-4]
563392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
564656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
565656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r12,#14
566656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r12,[r11,#240-32]
567656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r6,r10,#256			@ rcon
568656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	lr,#255
569656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r12,#7
570656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
571656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L256_loop:
572656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r5,lr,r9,lsr#24
573656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r7,lr,r9,lsr#16
574656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r5,[r10,r5]
57543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r8,lr,r9,lsr#8
576656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r7,[r10,r7]
57743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r9,lr,r9
578656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r8,[r10,r8]
579656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r5,r5,r7,lsl#24
58043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldrb	r9,[r10,r9]
581656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r5,r5,r8,lsl#16
58243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r4,[r6],#4			@ rcon[i++]
583656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r5,r5,r9,lsl#8
584656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r9,r5,r4
585656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r9			@ rk[8]=rk[0]^...
586656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r1,r1,r0			@ rk[9]=rk[1]^rk[8]
587656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r0,[r11],#32
58843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r2,r2,r1			@ rk[10]=rk[2]^rk[9]
589656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r1,[r11,#-28]
59043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r3,r3,r2			@ rk[11]=rk[3]^rk[10]
591656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r2,[r11,#-24]
592656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	subs	r12,r12,#1
59343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	str	r3,[r11,#-20]
594656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	subeq	r2,r11,#256
595656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	beq	.Ldone
596656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
597656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r5,lr,r3
598656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r7,lr,r3,lsr#8
599656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r5,[r10,r5]
60043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r8,lr,r3,lsr#16
601656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r7,[r10,r7]
60243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r9,lr,r3,lsr#24
603656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r8,[r10,r8]
604656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r5,r5,r7,lsl#8
60543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldrb	r9,[r10,r9]
606656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r5,r5,r8,lsl#16
60743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r4,[r11,#-48]
608656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r5,r5,r9,lsl#24
609656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
610656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r7,[r11,#-44]
611656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r8,[r11,#-40]
612656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r4,r4,r5			@ rk[12]=rk[4]^...
61343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r9,[r11,#-36]
614656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r7,r7,r4			@ rk[13]=rk[5]^rk[12]
615656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r4,[r11,#-16]
61643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r8,r8,r7			@ rk[14]=rk[6]^rk[13]
617656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r7,[r11,#-12]
61843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r9,r9,r8			@ rk[15]=rk[7]^rk[14]
619656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r8,[r11,#-8]
620656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r9,[r11,#-4]
621656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	b	.L256_loop
622656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
623656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.Ldone:	mov	r0,#0
624656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldmia   sp!,{r4-r12,lr}
625656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.Labrt:	tst	lr,#1
626656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	moveq	pc,lr			@ be binary compatible with V4, yet
627656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	.word	0xe12fff1e			@ interoperable with Thumb ISA:-)
628392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom.size	private_AES_set_encrypt_key,.-private_AES_set_encrypt_key
629656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
630392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom.global private_AES_set_decrypt_key
631392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom.type   private_AES_set_decrypt_key,%function
632656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	5
633392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromprivate_AES_set_decrypt_key:
634656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	lr,[sp,#-4]!            @ push lr
635392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	bl	private_AES_set_encrypt_key
636656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	teq	r0,#0
637656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrne	lr,[sp],#4              @ pop lr
638656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bne	.Labrt
639656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
640656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stmdb   sp!,{r4-r12}
641656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
642656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r12,[r2,#240]	@ AES_set_encrypt_key preserves r2,
643656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r11,r2			@ which is AES_KEY *key
644656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r7,r2
645656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r8,r2,r12,lsl#4
646656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
647656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.Linv:	ldr	r0,[r7]
648656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r1,[r7,#4]
649656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r2,[r7,#8]
650656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r3,[r7,#12]
651656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r4,[r8]
652656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r5,[r8,#4]
653656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r6,[r8,#8]
654656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r9,[r8,#12]
655656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r0,[r8],#-16
656656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r1,[r8,#16+4]
657656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r2,[r8,#16+8]
658656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r3,[r8,#16+12]
659656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r4,[r7],#16
660656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r5,[r7,#-12]
661656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r6,[r7,#-8]
662656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r9,[r7,#-4]
663656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	teq	r7,r8
664656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bne	.Linv
665656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r0,[r11,#16]!		@ prefetch tp1
666656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r7,#0x80
667656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r8,#0x1b
668656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r7,r7,#0x8000
669656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r8,r8,#0x1b00
670656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r7,r7,r7,lsl#16
671656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r8,r8,r8,lsl#16
672656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sub	r12,r12,#1
673656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mvn	r9,r7
674656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r12,r12,lsl#2	@ (rounds-1)*4
675656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
676656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.Lmix:	and	r4,r0,r7
677656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r1,r0,r9
678656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sub	r4,r4,r4,lsr#7
679656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r4,r4,r8
680656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r1,r4,r1,lsl#1	@ tp2
681656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
682656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r4,r1,r7
683656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r1,r9
684656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sub	r4,r4,r4,lsr#7
685656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r4,r4,r8
686656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r4,r2,lsl#1	@ tp4
687656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
688656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r4,r2,r7
689656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r3,r2,r9
690656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sub	r4,r4,r4,lsr#7
691656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r4,r4,r8
692656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r3,r4,r3,lsl#1	@ tp8
693656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
694656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r4,r1,r2
695656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r5,r0,r3		@ tp9
696656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r4,r4,r3		@ tpe
697656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r4,r4,r1,ror#24
698656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r4,r4,r5,ror#24	@ ^= ROTATE(tpb=tp9^tp2,8)
699656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r4,r4,r2,ror#16
700656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r4,r4,r5,ror#16	@ ^= ROTATE(tpd=tp9^tp4,16)
701656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r4,r4,r5,ror#8	@ ^= ROTATE(tp9,24)
702656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
703656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r0,[r11,#4]		@ prefetch tp1
704656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	r4,[r11],#4
705656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	subs	r12,r12,#1
706656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bne	.Lmix
707656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
708656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,#0
709392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=5
710392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldmia	sp!,{r4-r12,pc}
711392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
712656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldmia   sp!,{r4-r12,lr}
713656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	tst	lr,#1
714656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	moveq	pc,lr			@ be binary compatible with V4, yet
715656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	.word	0xe12fff1e			@ interoperable with Thumb ISA:-)
716392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
717392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom.size	private_AES_set_decrypt_key,.-private_AES_set_decrypt_key
718656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
719656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type	AES_Td,%object
720656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	5
721656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectAES_Td:
722656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96
723656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393
724656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25
725656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f
726656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1
727656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6
728656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da
729656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844
730656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd
731656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4
732656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45
733656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94
734656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7
735656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a
736656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5
737656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c
738656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1
739656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a
740656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75
741656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051
742656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46
743656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff
744656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77
745656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb
746656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000
747656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e
748656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927
749656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a
750656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e
751656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16
752656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d
753656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8
754656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd
755656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34
756656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163
757656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xd731dcca, 0x42638510, 0x13972240, 0x84c61120
758656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d
759656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0
760656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422
761656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef
762656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36
763656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4
764656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662
765656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5
766656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3
767656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b
768656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8
769656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6
770656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6
771656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0
772656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815
773656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f
774656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df
775656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f
776656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e
777656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713
778656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89
779656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c
780656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf
781656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86
782656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f
783656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541
784656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190
785656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742
786656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project@ Td4[256]
787656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38
788656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb
789656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87
790656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb
791656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d
792656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e
793656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2
794656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25
795656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16
796656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92
797656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda
798656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84
799656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a
800656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06
801656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02
802656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b
803656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea
804656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73
805656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85
806656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e
807656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89
808656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b
809656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20
810656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4
811656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31
812656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f
813656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d
814656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef
815656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0
816656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61
817656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26
818656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte	0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d
819656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	AES_Td,.-AES_Td
820656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
821656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project@ void AES_decrypt(const unsigned char *in, unsigned char *out,
822656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project@ 		 const AES_KEY *key) {
823656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global AES_decrypt
824656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type   AES_decrypt,%function
825656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	5
826656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectAES_decrypt:
827656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sub	r3,pc,#8		@ AES_decrypt
828656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stmdb   sp!,{r1,r4-r12,lr}
829656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r12,r0		@ inp
830656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r11,r2
831656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sub	r10,r3,#AES_decrypt-AES_Td		@ Td
832392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__<7
833656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r0,[r12,#3]	@ load input data in endian-neutral
834656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r4,[r12,#2]	@ manner...
835656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r5,[r12,#1]
836656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r6,[r12,#0]
837656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r4,lsl#8
838656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r1,[r12,#7]
83943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	orr	r0,r0,r5,lsl#16
840656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r4,[r12,#6]
84143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	orr	r0,r0,r6,lsl#24
842656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r5,[r12,#5]
843656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r6,[r12,#4]
844656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r1,r1,r4,lsl#8
845656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r2,[r12,#11]
84643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	orr	r1,r1,r5,lsl#16
847656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r4,[r12,#10]
84843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	orr	r1,r1,r6,lsl#24
849656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r5,[r12,#9]
850656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r6,[r12,#8]
851656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r2,r2,r4,lsl#8
852656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r3,[r12,#15]
85343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	orr	r2,r2,r5,lsl#16
854656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r4,[r12,#14]
85543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	orr	r2,r2,r6,lsl#24
856656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r5,[r12,#13]
857656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r6,[r12,#12]
858656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r4,lsl#8
859656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r5,lsl#16
860656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r6,lsl#24
861392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
862392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r0,[r12,#0]
863392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[r12,#4]
864392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r2,[r12,#8]
865392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r3,[r12,#12]
866392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef __ARMEL__
867392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r0,r0
868392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r1,r1
869392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r2,r2
870392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
871392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
872392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
873656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bl	_armv4_AES_decrypt
874656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
875656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r12,[sp],#4		@ pop out
876392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=7
877392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef __ARMEL__
878392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r0,r0
879392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r1,r1
880392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r2,r2
881392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
882392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
883392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r0,[r12,#0]
884392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[r12,#4]
885392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r2,[r12,#8]
886392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[r12,#12]
887392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
888656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r4,r0,lsr#24		@ write output in endian-neutral
889656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r5,r0,lsr#16		@ manner...
890656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r6,r0,lsr#8
891656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	strb	r4,[r12,#0]
892656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	strb	r5,[r12,#1]
893656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r4,r1,lsr#24
89443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	strb	r6,[r12,#2]
895656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r5,r1,lsr#16
89643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	strb	r0,[r12,#3]
897656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r6,r1,lsr#8
898656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	strb	r4,[r12,#4]
899656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	strb	r5,[r12,#5]
900656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r4,r2,lsr#24
90143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	strb	r6,[r12,#6]
902656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r5,r2,lsr#16
90343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	strb	r1,[r12,#7]
904656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r6,r2,lsr#8
905656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	strb	r4,[r12,#8]
906656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	strb	r5,[r12,#9]
907656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r4,r3,lsr#24
90843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	strb	r6,[r12,#10]
909656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r5,r3,lsr#16
91043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	strb	r2,[r12,#11]
911656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r6,r3,lsr#8
912656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	strb	r4,[r12,#12]
913656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	strb	r5,[r12,#13]
914656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	strb	r6,[r12,#14]
915656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	strb	r3,[r12,#15]
916392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
917392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=5
918392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldmia	sp!,{r4-r12,pc}
919392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
920656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldmia   sp!,{r4-r12,lr}
921656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	tst	lr,#1
922656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	moveq	pc,lr			@ be binary compatible with V4, yet
923656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	.word	0xe12fff1e			@ interoperable with Thumb ISA:-)
924392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
925656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	AES_decrypt,.-AES_decrypt
926656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
927656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type   _armv4_AES_decrypt,%function
928656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	2
929656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project_armv4_AES_decrypt:
930656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str	lr,[sp,#-4]!		@ push lr
93143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldmia	r11!,{r4-r7}
932656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r4
93343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r12,[r11,#240-16]
934656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r1,r1,r5
935656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r6
936656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r3,r3,r7
937656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sub	r12,r12,#1
938656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	lr,#255
939656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
940656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r7,lr,r0,lsr#16
941656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r8,lr,r0,lsr#8
942656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r9,lr,r0
943656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r0,lsr#24
94443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.Ldec_loop:
945656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r4,[r10,r7,lsl#2]	@ Td1[s0>>16]
946656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r7,lr,r1		@ i0
94743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r5,[r10,r8,lsl#2]	@ Td2[s0>>8]
948656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r8,lr,r1,lsr#16
94943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r6,[r10,r9,lsl#2]	@ Td3[s0>>0]
950656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r9,lr,r1,lsr#8
95143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r0,[r10,r0,lsl#2]	@ Td0[s0>>24]
952656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r1,r1,lsr#24
95343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom
954656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r7,[r10,r7,lsl#2]	@ Td3[s1>>0]
955656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r8,[r10,r8,lsl#2]	@ Td1[s1>>16]
956656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r9,[r10,r9,lsl#2]	@ Td2[s1>>8]
957656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r7,ror#24
95843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r1,[r10,r1,lsl#2]	@ Td0[s1>>24]
959656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r7,lr,r2,lsr#8	@ i0
96043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r5,r8,r5,ror#8
961656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r8,lr,r2		@ i1
96243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r6,r9,r6,ror#8
963656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r9,lr,r2,lsr#16
964656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r7,[r10,r7,lsl#2]	@ Td2[s2>>8]
965392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r4,ror#8
966392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r8,[r10,r8,lsl#2]	@ Td3[s2>>0]
96743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	mov	r2,r2,lsr#24
96843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom
969656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r9,[r10,r9,lsl#2]	@ Td1[s2>>16]
970656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r7,ror#16
97143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r2,[r10,r2,lsl#2]	@ Td0[s2>>24]
972656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r7,lr,r3,lsr#16	@ i0
97343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r1,r1,r8,ror#24
974656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r8,lr,r3,lsr#8	@ i1
97543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r6,r9,r6,ror#8
976656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r9,lr,r3		@ i2
977656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r7,[r10,r7,lsl#2]	@ Td1[s3>>16]
978392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r2,r2,r5,ror#8
979392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r8,[r10,r8,lsl#2]	@ Td2[s3>>8]
98043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	mov	r3,r3,lsr#24
98143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom
982656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r9,[r10,r9,lsl#2]	@ Td3[s3>>0]
983656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r7,ror#8
984392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r7,[r11],#16
985656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r1,r1,r8,ror#16
986392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r3,[r10,r3,lsl#2]	@ Td0[s3>>24]
987656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r9,ror#24
988656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
98943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r4,[r11,#-12]
99043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r7
991392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r5,[r11,#-8]
992392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r3,r3,r6,ror#8
99343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r6,[r11,#-4]
99443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r7,lr,r0,lsr#16
99543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r1,r1,r4
99643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r8,lr,r0,lsr#8
99743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r2,r2,r5
99843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r9,lr,r0
99943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r3,r3,r6
100043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	mov	r0,r0,lsr#24
1001656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1002656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	subs	r12,r12,#1
1003656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bne	.Ldec_loop
1004656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1005656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r10,r10,#1024
1006656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
100743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r5,[r10,#0]		@ prefetch Td4
100843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r6,[r10,#32]
100943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r4,[r10,#64]
101043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r5,[r10,#96]
101143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r6,[r10,#128]
101243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r4,[r10,#160]
101343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r5,[r10,#192]
101443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r6,[r10,#224]
1015656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
101643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldrb	r0,[r10,r0]		@ Td4[s0>>24]
1017656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r4,[r10,r7]		@ Td4[s0>>16]
1018656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r7,lr,r1		@ i0
101943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldrb	r5,[r10,r8]		@ Td4[s0>>8]
1020656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r8,lr,r1,lsr#16
102143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldrb	r6,[r10,r9]		@ Td4[s0>>0]
1022656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r9,lr,r1,lsr#8
102343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom
1024656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r7,[r10,r7]		@ Td4[s1>>0]
1025656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r1,[r10,r1,lsr#24]	@ Td4[s1>>24]
1026656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r8,[r10,r8]		@ Td4[s1>>16]
1027656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r7,r0,lsl#24
102843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldrb	r9,[r10,r9]		@ Td4[s1>>8]
1029656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r1,r4,r1,lsl#8
1030656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r7,lr,r2,lsr#8	@ i0
103143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r5,r5,r8,lsl#8
1032656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r8,lr,r2		@ i1
1033656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r7,[r10,r7]		@ Td4[s2>>8]
1034392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r6,r6,r9,lsl#8
1035392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldrb	r8,[r10,r8]		@ Td4[s2>>0]
103643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r9,lr,r2,lsr#16
103743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom
1038656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r2,[r10,r2,lsr#24]	@ Td4[s2>>24]
1039656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r7,lsl#8
104043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldrb	r9,[r10,r9]		@ Td4[s2>>16]
1041656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r1,r8,r1,lsl#16
1042656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r7,lr,r3,lsr#16	@ i0
104343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r2,r5,r2,lsl#16
1044656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r8,lr,r3,lsr#8	@ i1
1045656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r7,[r10,r7]		@ Td4[s3>>16]
1046392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r6,r6,r9,lsl#16
1047392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldrb	r8,[r10,r8]		@ Td4[s3>>8]
104843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r9,lr,r3		@ i2
104943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom
1050656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r9,[r10,r9]		@ Td4[s3>>0]
1051656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r3,[r10,r3,lsr#24]	@ Td4[s3>>24]
1052656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r7,lsl#16
105343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r7,[r11,#0]
1054656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r1,r1,r8,lsl#8
105543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r4,[r11,#4]
1056656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r9,r2,lsl#8
105743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r5,[r11,#8]
1058656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r3,r6,r3,lsl#24
105943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	r6,[r11,#12]
1060656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
106143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r7
106243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r1,r1,r4
106343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r2,r2,r5
106443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r3,r3,r6
1065656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1066656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sub	r10,r10,#1024
106743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldr	pc,[sp],#4		@ pop and return
1068656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	_armv4_AES_decrypt,.-_armv4_AES_decrypt
1069656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.asciz	"AES for ARMv4, CRYPTOGAMS by <appro@openssl.org>"
1070656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	2
1071