1392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#include "arm_arch.h"
2392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.text
4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.code	32
5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type	K256,%object
7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	5
8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectK256:
9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0xd192e819,0xd6990624,0xf40e3585,0x106aa070
21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word	0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	K256,.-K256
26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global	sha256_block_data_order
28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type	sha256_block_data_order,%function
29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectsha256_block_data_order:
30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sub	r3,pc,#8		@ sha256_block_data_order
31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r2,r1,r2,lsl#6	@ len to point at the end of inp
32392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	stmdb	sp!,{r0,r1,r2,r4-r11,lr}
33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldmia	r0,{r4,r5,r6,r7,r8,r9,r10,r11}
34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sub	r14,r3,#256		@ K256
35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sub	sp,sp,#16*4		@ alloca(X[16])
36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.Loop:
37392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=7
38392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r3,[r1],#4
39392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r3,[r1,#3]			@ 0
41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r12,[r1,#2]
42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r2,[r1,#1]
43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r0,[r1],#4
44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r12,lsl#8
45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r2,lsl#16
46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r0,lsl#24
47392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r8,ror#6
49392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r8,ror#11
51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r9,r10
52392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 0>=16
53392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
54392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
55392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
56392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
57392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 0==15
58392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
59392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
6043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r8,ror#25	@ Sigma1(e)
61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r8
62392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#0*4]
6343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r10			@ Ch(e,f,g)
65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r11
66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r11,r4,ror#2
6743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r11,r11,r4,ror#13
6943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r11,r11,r4,ror#22		@ Sigma0(a)
71392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 0>=15
72392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#2*4]		@ from BODY_16_xx
73392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r4,r5
75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r4,r5
7643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r6
7743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r11,r11,r3
78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r7,r7,r3
8043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r11,r11,r0
81392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=7
82392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r3,[r1],#4
83392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r3,[r1,#3]			@ 1
85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r12,[r1,#2]
86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r2,[r1,#1]
87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r0,[r1],#4
88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r12,lsl#8
89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r2,lsl#16
90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r0,lsl#24
91392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r7,ror#6
93392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r7,ror#11
95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r8,r9
96392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 1>=16
97392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
98392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
99392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
100392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
101392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 1==15
102392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
103392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
10443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r7,ror#25	@ Sigma1(e)
105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r7
106392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#1*4]
10743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r9			@ Ch(e,f,g)
109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r10
110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r10,r11,ror#2
11143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r10,r10,r11,ror#13
11343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r10,r10,r11,ror#22		@ Sigma0(a)
115392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 1>=15
116392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#3*4]		@ from BODY_16_xx
117392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r11,r4
119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r11,r4
12043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r5
12143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r10,r10,r3
122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r6,r6,r3
12443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r10,r10,r0
125392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=7
126392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r3,[r1],#4
127392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r3,[r1,#3]			@ 2
129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r12,[r1,#2]
130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r2,[r1,#1]
131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r0,[r1],#4
132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r12,lsl#8
133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r2,lsl#16
134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r0,lsl#24
135392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r6,ror#6
137392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r6,ror#11
139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r7,r8
140392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 2>=16
141392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
142392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
143392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
144392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
145392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 2==15
146392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
147392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
14843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r6,ror#25	@ Sigma1(e)
149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r6
150392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#2*4]
15143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r8			@ Ch(e,f,g)
153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r9
154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r9,r10,ror#2
15543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r9,r9,r10,ror#13
15743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r9,r9,r10,ror#22		@ Sigma0(a)
159392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 2>=15
160392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#4*4]		@ from BODY_16_xx
161392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r10,r11
163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r10,r11
16443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r4
16543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r9,r9,r3
166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r5,r5,r3
16843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r9,r9,r0
169392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=7
170392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r3,[r1],#4
171392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r3,[r1,#3]			@ 3
173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r12,[r1,#2]
174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r2,[r1,#1]
175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r0,[r1],#4
176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r12,lsl#8
177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r2,lsl#16
178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r0,lsl#24
179392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r5,ror#6
181392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r5,ror#11
183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r6,r7
184392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 3>=16
185392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
186392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
187392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
188392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
189392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 3==15
190392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
191392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
19243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r5,ror#25	@ Sigma1(e)
193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r5
194392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#3*4]
19543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r7			@ Ch(e,f,g)
197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r8
198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r8,r9,ror#2
19943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r8,r8,r9,ror#13
20143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r8,r8,r9,ror#22		@ Sigma0(a)
203392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 3>=15
204392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#5*4]		@ from BODY_16_xx
205392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r9,r10
207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r9,r10
20843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r11
20943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r8,r8,r3
210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r4,r4,r3
21243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r8,r8,r0
213392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=7
214392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r3,[r1],#4
215392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r3,[r1,#3]			@ 4
217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r12,[r1,#2]
218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r2,[r1,#1]
219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r0,[r1],#4
220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r12,lsl#8
221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r2,lsl#16
222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r0,lsl#24
223392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r4,ror#6
225392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r4,ror#11
227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r5,r6
228392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 4>=16
229392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
230392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
231392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
232392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
233392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 4==15
234392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
235392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
23643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r4,ror#25	@ Sigma1(e)
237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r4
238392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#4*4]
23943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r6			@ Ch(e,f,g)
241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r7
242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r7,r8,ror#2
24343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r7,r7,r8,ror#13
24543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r7,r7,r8,ror#22		@ Sigma0(a)
247392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 4>=15
248392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#6*4]		@ from BODY_16_xx
249392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r8,r9
251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r8,r9
25243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r10
25343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r7,r7,r3
254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r11,r11,r3
25643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r7,r7,r0
257392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=7
258392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r3,[r1],#4
259392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
260656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r3,[r1,#3]			@ 5
261656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r12,[r1,#2]
262656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r2,[r1,#1]
263656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r0,[r1],#4
264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r12,lsl#8
265656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r2,lsl#16
266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r0,lsl#24
267392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
268656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r11,ror#6
269392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
270656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r11,ror#11
271656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r4,r5
272392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 5>=16
273392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
274392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
275392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
276392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
277392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 5==15
278392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
279392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
28043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r11,ror#25	@ Sigma1(e)
281656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r11
282392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#5*4]
28343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
284656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r5			@ Ch(e,f,g)
285656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r6
286656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r6,r7,ror#2
28743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
288656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r6,r6,r7,ror#13
28943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
290656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r6,r6,r7,ror#22		@ Sigma0(a)
291392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 5>=15
292392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#7*4]		@ from BODY_16_xx
293392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
294656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r7,r8
295656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r7,r8
29643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r9
29743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r6,r6,r3
298656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
299656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r10,r10,r3
30043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r6,r6,r0
301392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=7
302392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r3,[r1],#4
303392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
304656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r3,[r1,#3]			@ 6
305656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r12,[r1,#2]
306656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r2,[r1,#1]
307656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r0,[r1],#4
308656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r12,lsl#8
309656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r2,lsl#16
310656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r0,lsl#24
311392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
312656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r10,ror#6
313392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
314656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r10,ror#11
315656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r11,r4
316392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 6>=16
317392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
318392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
319392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
320392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
321392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 6==15
322392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
323392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
32443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r10,ror#25	@ Sigma1(e)
325656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r10
326392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#6*4]
32743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
328656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r4			@ Ch(e,f,g)
329656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r5
330656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r5,r6,ror#2
33143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
332656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r5,r5,r6,ror#13
33343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
334656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r5,r5,r6,ror#22		@ Sigma0(a)
335392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 6>=15
336392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#8*4]		@ from BODY_16_xx
337392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
338656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r6,r7
339656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r6,r7
34043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r8
34143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r5,r5,r3
342656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
343656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r9,r9,r3
34443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r5,r5,r0
345392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=7
346392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r3,[r1],#4
347392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
348656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r3,[r1,#3]			@ 7
349656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r12,[r1,#2]
350656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r2,[r1,#1]
351656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r0,[r1],#4
352656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r12,lsl#8
353656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r2,lsl#16
354656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r0,lsl#24
355392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
356656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r9,ror#6
357392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
358656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r9,ror#11
359656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r10,r11
360392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 7>=16
361392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
362392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
363392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
364392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
365392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 7==15
366392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
367392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
36843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r9,ror#25	@ Sigma1(e)
369656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r9
370392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#7*4]
37143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
372656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r11			@ Ch(e,f,g)
373656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r4
374656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r4,r5,ror#2
37543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
376656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r4,r4,r5,ror#13
37743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
378656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r4,r4,r5,ror#22		@ Sigma0(a)
379392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 7>=15
380392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#9*4]		@ from BODY_16_xx
381392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
382656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r5,r6
383656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r5,r6
38443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r7
38543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r4,r4,r3
386656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
387656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r8,r8,r3
38843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r4,r4,r0
389392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=7
390392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r3,[r1],#4
391392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
392656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r3,[r1,#3]			@ 8
393656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r12,[r1,#2]
394656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r2,[r1,#1]
395656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r0,[r1],#4
396656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r12,lsl#8
397656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r2,lsl#16
398656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r0,lsl#24
399392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
400656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r8,ror#6
401392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
402656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r8,ror#11
403656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r9,r10
404392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 8>=16
405392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
406392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
407392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
408392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
409392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 8==15
410392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
411392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
41243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r8,ror#25	@ Sigma1(e)
413656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r8
414392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#8*4]
41543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
416656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r10			@ Ch(e,f,g)
417656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r11
418656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r11,r4,ror#2
41943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
420656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r11,r11,r4,ror#13
42143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
422656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r11,r11,r4,ror#22		@ Sigma0(a)
423392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 8>=15
424392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#10*4]		@ from BODY_16_xx
425392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
426656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r4,r5
427656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r4,r5
42843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r6
42943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r11,r11,r3
430656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
431656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r7,r7,r3
43243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r11,r11,r0
433392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=7
434392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r3,[r1],#4
435392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
436656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r3,[r1,#3]			@ 9
437656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r12,[r1,#2]
438656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r2,[r1,#1]
439656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r0,[r1],#4
440656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r12,lsl#8
441656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r2,lsl#16
442656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r0,lsl#24
443392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
444656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r7,ror#6
445392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
446656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r7,ror#11
447656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r8,r9
448392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 9>=16
449392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
450392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
451392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
452392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
453392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 9==15
454392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
455392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
45643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r7,ror#25	@ Sigma1(e)
457656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r7
458392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#9*4]
45943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
460656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r9			@ Ch(e,f,g)
461656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r10
462656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r10,r11,ror#2
46343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
464656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r10,r10,r11,ror#13
46543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
466656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r10,r10,r11,ror#22		@ Sigma0(a)
467392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 9>=15
468392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#11*4]		@ from BODY_16_xx
469392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
470656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r11,r4
471656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r11,r4
47243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r5
47343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r10,r10,r3
474656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
475656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r6,r6,r3
47643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r10,r10,r0
477392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=7
478392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r3,[r1],#4
479392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
480656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r3,[r1,#3]			@ 10
481656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r12,[r1,#2]
482656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r2,[r1,#1]
483656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r0,[r1],#4
484656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r12,lsl#8
485656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r2,lsl#16
486656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r0,lsl#24
487392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
488656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r6,ror#6
489392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
490656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r6,ror#11
491656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r7,r8
492392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 10>=16
493392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
494392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
495392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
496392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
497392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 10==15
498392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
499392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
50043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r6,ror#25	@ Sigma1(e)
501656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r6
502392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#10*4]
50343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
504656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r8			@ Ch(e,f,g)
505656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r9
506656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r9,r10,ror#2
50743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
508656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r9,r9,r10,ror#13
50943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
510656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r9,r9,r10,ror#22		@ Sigma0(a)
511392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 10>=15
512392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#12*4]		@ from BODY_16_xx
513392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
514656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r10,r11
515656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r10,r11
51643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r4
51743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r9,r9,r3
518656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
519656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r5,r5,r3
52043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r9,r9,r0
521392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=7
522392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r3,[r1],#4
523392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
524656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r3,[r1,#3]			@ 11
525656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r12,[r1,#2]
526656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r2,[r1,#1]
527656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r0,[r1],#4
528656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r12,lsl#8
529656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r2,lsl#16
530656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r0,lsl#24
531392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
532656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r5,ror#6
533392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
534656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r5,ror#11
535656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r6,r7
536392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 11>=16
537392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
538392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
539392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
540392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
541392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 11==15
542392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
543392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
54443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r5,ror#25	@ Sigma1(e)
545656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r5
546392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#11*4]
54743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
548656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r7			@ Ch(e,f,g)
549656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r8
550656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r8,r9,ror#2
55143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
552656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r8,r8,r9,ror#13
55343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
554656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r8,r8,r9,ror#22		@ Sigma0(a)
555392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 11>=15
556392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#13*4]		@ from BODY_16_xx
557392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
558656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r9,r10
559656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r9,r10
56043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r11
56143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r8,r8,r3
562656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
563656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r4,r4,r3
56443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r8,r8,r0
565392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=7
566392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r3,[r1],#4
567392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
568656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r3,[r1,#3]			@ 12
569656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r12,[r1,#2]
570656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r2,[r1,#1]
571656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r0,[r1],#4
572656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r12,lsl#8
573656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r2,lsl#16
574656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r0,lsl#24
575392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
576656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r4,ror#6
577392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
578656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r4,ror#11
579656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r5,r6
580392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 12>=16
581392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
582392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
583392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
584392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
585392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 12==15
586392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
587392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
58843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r4,ror#25	@ Sigma1(e)
589656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r4
590392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#12*4]
59143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
592656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r6			@ Ch(e,f,g)
593656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r7
594656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r7,r8,ror#2
59543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
596656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r7,r7,r8,ror#13
59743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
598656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r7,r7,r8,ror#22		@ Sigma0(a)
599392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 12>=15
600392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#14*4]		@ from BODY_16_xx
601392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
602656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r8,r9
603656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r8,r9
60443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r10
60543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r7,r7,r3
606656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
607656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r11,r11,r3
60843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r7,r7,r0
609392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=7
610392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r3,[r1],#4
611392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
612656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r3,[r1,#3]			@ 13
613656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r12,[r1,#2]
614656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r2,[r1,#1]
615656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r0,[r1],#4
616656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r12,lsl#8
617656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r2,lsl#16
618656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r0,lsl#24
619392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
620656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r11,ror#6
621392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
622656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r11,ror#11
623656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r4,r5
624392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 13>=16
625392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
626392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
627392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
628392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
629392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 13==15
630392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
631392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
63243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r11,ror#25	@ Sigma1(e)
633656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r11
634392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#13*4]
63543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
636656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r5			@ Ch(e,f,g)
637656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r6
638656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r6,r7,ror#2
63943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
640656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r6,r6,r7,ror#13
64143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
642656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r6,r6,r7,ror#22		@ Sigma0(a)
643392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 13>=15
644392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#15*4]		@ from BODY_16_xx
645392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
646656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r7,r8
647656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r7,r8
64843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r9
64943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r6,r6,r3
650656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
651656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r10,r10,r3
65243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r6,r6,r0
653392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=7
654392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r3,[r1],#4
655392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
656656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r3,[r1,#3]			@ 14
657656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r12,[r1,#2]
658656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r2,[r1,#1]
659656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r0,[r1],#4
660656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r12,lsl#8
661656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r2,lsl#16
662656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r0,lsl#24
663392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
664656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r10,ror#6
665392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
666656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r10,ror#11
667656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r11,r4
668392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 14>=16
669392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
670392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
671392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
672392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
673392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 14==15
674392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
675392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
67643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r10,ror#25	@ Sigma1(e)
677656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r10
678392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#14*4]
67943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
680656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r4			@ Ch(e,f,g)
681656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r5
682656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r5,r6,ror#2
68343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
684656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r5,r5,r6,ror#13
68543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
686656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r5,r5,r6,ror#22		@ Sigma0(a)
687392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 14>=15
688392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#0*4]		@ from BODY_16_xx
689392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
690656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r6,r7
691656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r6,r7
69243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r8
69343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r5,r5,r3
694656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
695656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r9,r9,r3
69643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r5,r5,r0
697392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=7
698392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r3,[r1],#4
699392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
700656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r3,[r1,#3]			@ 15
701656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r12,[r1,#2]
702656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r2,[r1,#1]
703656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldrb	r0,[r1],#4
704656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r12,lsl#8
705656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r2,lsl#16
706656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r3,r3,r0,lsl#24
707392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
708656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r9,ror#6
709392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
710656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r9,ror#11
711656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r10,r11
712392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 15>=16
713392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
714392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
715392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
716392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
717392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 15==15
718392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
719392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
72043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r9,ror#25	@ Sigma1(e)
721656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r9
722392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#15*4]
72343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
724656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r11			@ Ch(e,f,g)
725656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r4
726656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r4,r5,ror#2
72743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
728656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r4,r4,r5,ror#13
72943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
730656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r4,r4,r5,ror#22		@ Sigma0(a)
731392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 15>=15
732392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#1*4]		@ from BODY_16_xx
733392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
734656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r5,r6
735656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r5,r6
73643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r7
73743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r4,r4,r3
738656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
739656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r8,r8,r3
74043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r4,r4,r0
741656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.Lrounds_16_xx:
742392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ ldr	r1,[sp,#1*4]		@ 16
743656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r12,[sp,#14*4]
744392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r0,r1,ror#7
745656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r3,[sp,#0*4]
746392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,ror#18
747392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r2,[sp,#9*4]
748392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,lsr#3	@ sigma0(X[i+1])
749392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r1,r12,ror#17
75043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
751392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,ror#19
752656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r2
753392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,lsr#10	@ sigma1(X[i+14])
754392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ add	r3,r3,r1
755656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r8,ror#6
756392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
757656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r8,ror#11
758656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r9,r10
759392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 16>=16
760392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
761392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
762392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
763392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
764392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 16==15
765392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
766392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
76743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r8,ror#25	@ Sigma1(e)
768656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r8
769392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#0*4]
77043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
771656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r10			@ Ch(e,f,g)
772656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r11
773656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r11,r4,ror#2
77443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
775656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r11,r11,r4,ror#13
77643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
777656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r11,r11,r4,ror#22		@ Sigma0(a)
778392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 16>=15
779392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#2*4]		@ from BODY_16_xx
780392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
781656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r4,r5
782656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r4,r5
78343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r6
78443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r11,r11,r3
785656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
786656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r7,r7,r3
78743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r11,r11,r0
788392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ ldr	r1,[sp,#2*4]		@ 17
789656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r12,[sp,#15*4]
790392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r0,r1,ror#7
791656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r3,[sp,#1*4]
792392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,ror#18
793392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r2,[sp,#10*4]
794392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,lsr#3	@ sigma0(X[i+1])
795392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r1,r12,ror#17
79643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
797392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,ror#19
798656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r2
799392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,lsr#10	@ sigma1(X[i+14])
800392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ add	r3,r3,r1
801656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r7,ror#6
802392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
803656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r7,ror#11
804656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r8,r9
805392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 17>=16
806392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
807392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
808392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
809392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
810392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 17==15
811392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
812392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
81343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r7,ror#25	@ Sigma1(e)
814656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r7
815392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#1*4]
81643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
817656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r9			@ Ch(e,f,g)
818656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r10
819656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r10,r11,ror#2
82043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
821656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r10,r10,r11,ror#13
82243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
823656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r10,r10,r11,ror#22		@ Sigma0(a)
824392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 17>=15
825392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#3*4]		@ from BODY_16_xx
826392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
827656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r11,r4
828656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r11,r4
82943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r5
83043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r10,r10,r3
831656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
832656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r6,r6,r3
83343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r10,r10,r0
834392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ ldr	r1,[sp,#3*4]		@ 18
835656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r12,[sp,#0*4]
836392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r0,r1,ror#7
837656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r3,[sp,#2*4]
838392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,ror#18
839392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r2,[sp,#11*4]
840392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,lsr#3	@ sigma0(X[i+1])
841392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r1,r12,ror#17
84243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
843392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,ror#19
844656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r2
845392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,lsr#10	@ sigma1(X[i+14])
846392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ add	r3,r3,r1
847656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r6,ror#6
848392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
849656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r6,ror#11
850656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r7,r8
851392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 18>=16
852392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
853392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
854392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
855392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
856392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 18==15
857392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
858392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
85943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r6,ror#25	@ Sigma1(e)
860656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r6
861392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#2*4]
86243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
863656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r8			@ Ch(e,f,g)
864656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r9
865656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r9,r10,ror#2
86643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
867656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r9,r9,r10,ror#13
86843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
869656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r9,r9,r10,ror#22		@ Sigma0(a)
870392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 18>=15
871392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#4*4]		@ from BODY_16_xx
872392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
873656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r10,r11
874656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r10,r11
87543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r4
87643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r9,r9,r3
877656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
878656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r5,r5,r3
87943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r9,r9,r0
880392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ ldr	r1,[sp,#4*4]		@ 19
881656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r12,[sp,#1*4]
882392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r0,r1,ror#7
883656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r3,[sp,#3*4]
884392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,ror#18
885392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r2,[sp,#12*4]
886392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,lsr#3	@ sigma0(X[i+1])
887392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r1,r12,ror#17
88843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
889392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,ror#19
890656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r2
891392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,lsr#10	@ sigma1(X[i+14])
892392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ add	r3,r3,r1
893656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r5,ror#6
894392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
895656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r5,ror#11
896656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r6,r7
897392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 19>=16
898392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
899392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
900392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
901392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
902392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 19==15
903392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
904392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
90543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r5,ror#25	@ Sigma1(e)
906656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r5
907392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#3*4]
90843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
909656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r7			@ Ch(e,f,g)
910656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r8
911656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r8,r9,ror#2
91243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
913656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r8,r8,r9,ror#13
91443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
915656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r8,r8,r9,ror#22		@ Sigma0(a)
916392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 19>=15
917392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#5*4]		@ from BODY_16_xx
918392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
919656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r9,r10
920656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r9,r10
92143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r11
92243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r8,r8,r3
923656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
924656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r4,r4,r3
92543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r8,r8,r0
926392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ ldr	r1,[sp,#5*4]		@ 20
927656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r12,[sp,#2*4]
928392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r0,r1,ror#7
929656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r3,[sp,#4*4]
930392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,ror#18
931392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r2,[sp,#13*4]
932392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,lsr#3	@ sigma0(X[i+1])
933392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r1,r12,ror#17
93443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
935392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,ror#19
936656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r2
937392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,lsr#10	@ sigma1(X[i+14])
938392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ add	r3,r3,r1
939656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r4,ror#6
940392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
941656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r4,ror#11
942656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r5,r6
943392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 20>=16
944392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
945392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
946392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
947392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
948392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 20==15
949392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
950392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
95143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r4,ror#25	@ Sigma1(e)
952656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r4
953392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#4*4]
95443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
955656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r6			@ Ch(e,f,g)
956656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r7
957656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r7,r8,ror#2
95843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
959656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r7,r7,r8,ror#13
96043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
961656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r7,r7,r8,ror#22		@ Sigma0(a)
962392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 20>=15
963392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#6*4]		@ from BODY_16_xx
964392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
965656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r8,r9
966656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r8,r9
96743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r10
96843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r7,r7,r3
969656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
970656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r11,r11,r3
97143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r7,r7,r0
972392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ ldr	r1,[sp,#6*4]		@ 21
973656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r12,[sp,#3*4]
974392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r0,r1,ror#7
975656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r3,[sp,#5*4]
976392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,ror#18
977392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r2,[sp,#14*4]
978392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,lsr#3	@ sigma0(X[i+1])
979392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r1,r12,ror#17
98043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
981392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,ror#19
982656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r2
983392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,lsr#10	@ sigma1(X[i+14])
984392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ add	r3,r3,r1
985656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r11,ror#6
986392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
987656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r11,ror#11
988656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r4,r5
989392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 21>=16
990392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
991392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
992392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
993392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
994392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 21==15
995392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
996392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
99743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r11,ror#25	@ Sigma1(e)
998656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r11
999392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#5*4]
100043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
1001656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r5			@ Ch(e,f,g)
1002656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r6
1003656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r6,r7,ror#2
100443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
1005656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r6,r6,r7,ror#13
100643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
1007656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r6,r6,r7,ror#22		@ Sigma0(a)
1008392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 21>=15
1009392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#7*4]		@ from BODY_16_xx
1010392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
1011656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r7,r8
1012656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r7,r8
101343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r9
101443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r6,r6,r3
1015656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
1016656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r10,r10,r3
101743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r6,r6,r0
1018392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ ldr	r1,[sp,#7*4]		@ 22
1019656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r12,[sp,#4*4]
1020392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r0,r1,ror#7
1021656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r3,[sp,#6*4]
1022392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,ror#18
1023392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r2,[sp,#15*4]
1024392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,lsr#3	@ sigma0(X[i+1])
1025392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r1,r12,ror#17
102643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
1027392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,ror#19
1028656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r2
1029392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,lsr#10	@ sigma1(X[i+14])
1030392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ add	r3,r3,r1
1031656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r10,ror#6
1032392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
1033656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r10,ror#11
1034656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r11,r4
1035392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 22>=16
1036392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
1037392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
1038392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
1039392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
1040392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 22==15
1041392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
1042392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
104343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r10,ror#25	@ Sigma1(e)
1044656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r10
1045392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#6*4]
104643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
1047656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r4			@ Ch(e,f,g)
1048656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r5
1049656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r5,r6,ror#2
105043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
1051656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r5,r5,r6,ror#13
105243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
1053656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r5,r5,r6,ror#22		@ Sigma0(a)
1054392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 22>=15
1055392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#8*4]		@ from BODY_16_xx
1056392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
1057656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r6,r7
1058656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r6,r7
105943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r8
106043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r5,r5,r3
1061656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
1062656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r9,r9,r3
106343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r5,r5,r0
1064392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ ldr	r1,[sp,#8*4]		@ 23
1065656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r12,[sp,#5*4]
1066392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r0,r1,ror#7
1067656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r3,[sp,#7*4]
1068392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,ror#18
1069392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r2,[sp,#0*4]
1070392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,lsr#3	@ sigma0(X[i+1])
1071392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r1,r12,ror#17
107243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
1073392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,ror#19
1074656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r2
1075392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,lsr#10	@ sigma1(X[i+14])
1076392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ add	r3,r3,r1
1077656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r9,ror#6
1078392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
1079656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r9,ror#11
1080656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r10,r11
1081392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 23>=16
1082392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
1083392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
1084392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
1085392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
1086392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 23==15
1087392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
1088392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
108943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r9,ror#25	@ Sigma1(e)
1090656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r9
1091392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#7*4]
109243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
1093656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r11			@ Ch(e,f,g)
1094656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r4
1095656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r4,r5,ror#2
109643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
1097656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r4,r4,r5,ror#13
109843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
1099656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r4,r4,r5,ror#22		@ Sigma0(a)
1100392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 23>=15
1101392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#9*4]		@ from BODY_16_xx
1102392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
1103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r5,r6
1104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r5,r6
110543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r7
110643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r4,r4,r3
1107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
1108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r8,r8,r3
110943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r4,r4,r0
1110392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ ldr	r1,[sp,#9*4]		@ 24
1111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r12,[sp,#6*4]
1112392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r0,r1,ror#7
1113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r3,[sp,#8*4]
1114392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,ror#18
1115392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r2,[sp,#1*4]
1116392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,lsr#3	@ sigma0(X[i+1])
1117392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r1,r12,ror#17
111843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
1119392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,ror#19
1120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r2
1121392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,lsr#10	@ sigma1(X[i+14])
1122392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ add	r3,r3,r1
1123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r8,ror#6
1124392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
1125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r8,ror#11
1126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r9,r10
1127392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 24>=16
1128392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
1129392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
1130392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
1131392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
1132392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 24==15
1133392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
1134392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
113543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r8,ror#25	@ Sigma1(e)
1136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r8
1137392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#8*4]
113843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
1139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r10			@ Ch(e,f,g)
1140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r11
1141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r11,r4,ror#2
114243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
1143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r11,r11,r4,ror#13
114443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
1145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r11,r11,r4,ror#22		@ Sigma0(a)
1146392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 24>=15
1147392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#10*4]		@ from BODY_16_xx
1148392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
1149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r4,r5
1150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r4,r5
115143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r6
115243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r11,r11,r3
1153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
1154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r7,r7,r3
115543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r11,r11,r0
1156392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ ldr	r1,[sp,#10*4]		@ 25
1157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r12,[sp,#7*4]
1158392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r0,r1,ror#7
1159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r3,[sp,#9*4]
1160392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,ror#18
1161392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r2,[sp,#2*4]
1162392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,lsr#3	@ sigma0(X[i+1])
1163392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r1,r12,ror#17
116443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
1165392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,ror#19
1166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r2
1167392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,lsr#10	@ sigma1(X[i+14])
1168392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ add	r3,r3,r1
1169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r7,ror#6
1170392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
1171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r7,ror#11
1172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r8,r9
1173392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 25>=16
1174392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
1175392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
1176392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
1177392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
1178392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 25==15
1179392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
1180392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
118143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r7,ror#25	@ Sigma1(e)
1182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r7
1183392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#9*4]
118443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
1185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r9			@ Ch(e,f,g)
1186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r10
1187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r10,r11,ror#2
118843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
1189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r10,r10,r11,ror#13
119043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
1191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r10,r10,r11,ror#22		@ Sigma0(a)
1192392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 25>=15
1193392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#11*4]		@ from BODY_16_xx
1194392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
1195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r11,r4
1196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r11,r4
119743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r5
119843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r10,r10,r3
1199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
1200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r6,r6,r3
120143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r10,r10,r0
1202392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ ldr	r1,[sp,#11*4]		@ 26
1203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r12,[sp,#8*4]
1204392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r0,r1,ror#7
1205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r3,[sp,#10*4]
1206392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,ror#18
1207392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r2,[sp,#3*4]
1208392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,lsr#3	@ sigma0(X[i+1])
1209392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r1,r12,ror#17
121043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
1211392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,ror#19
1212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r2
1213392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,lsr#10	@ sigma1(X[i+14])
1214392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ add	r3,r3,r1
1215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r6,ror#6
1216392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
1217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r6,ror#11
1218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r7,r8
1219392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 26>=16
1220392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
1221392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
1222392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
1223392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
1224392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 26==15
1225392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
1226392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
122743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r6,ror#25	@ Sigma1(e)
1228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r6
1229392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#10*4]
123043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
1231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r8			@ Ch(e,f,g)
1232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r9
1233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r9,r10,ror#2
123443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
1235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r9,r9,r10,ror#13
123643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
1237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r9,r9,r10,ror#22		@ Sigma0(a)
1238392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 26>=15
1239392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#12*4]		@ from BODY_16_xx
1240392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
1241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r10,r11
1242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r10,r11
124343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r4
124443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r9,r9,r3
1245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
1246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r5,r5,r3
124743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r9,r9,r0
1248392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ ldr	r1,[sp,#12*4]		@ 27
1249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r12,[sp,#9*4]
1250392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r0,r1,ror#7
1251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r3,[sp,#11*4]
1252392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,ror#18
1253392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r2,[sp,#4*4]
1254392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,lsr#3	@ sigma0(X[i+1])
1255392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r1,r12,ror#17
125643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
1257392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,ror#19
1258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r2
1259392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,lsr#10	@ sigma1(X[i+14])
1260392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ add	r3,r3,r1
1261656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r5,ror#6
1262392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
1263656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r5,ror#11
1264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r6,r7
1265392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 27>=16
1266392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
1267392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
1268392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
1269392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
1270392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 27==15
1271392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
1272392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
127343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r5,ror#25	@ Sigma1(e)
1274656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r5
1275392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#11*4]
127643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
1277656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r7			@ Ch(e,f,g)
1278656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r8
1279656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r8,r9,ror#2
128043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
1281656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r8,r8,r9,ror#13
128243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
1283656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r8,r8,r9,ror#22		@ Sigma0(a)
1284392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 27>=15
1285392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#13*4]		@ from BODY_16_xx
1286392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
1287656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r9,r10
1288656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r9,r10
128943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r11
129043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r8,r8,r3
1291656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
1292656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r4,r4,r3
129343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r8,r8,r0
1294392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ ldr	r1,[sp,#13*4]		@ 28
1295656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r12,[sp,#10*4]
1296392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r0,r1,ror#7
1297656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r3,[sp,#12*4]
1298392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,ror#18
1299392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r2,[sp,#5*4]
1300392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,lsr#3	@ sigma0(X[i+1])
1301392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r1,r12,ror#17
130243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
1303392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,ror#19
1304656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r2
1305392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,lsr#10	@ sigma1(X[i+14])
1306392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ add	r3,r3,r1
1307656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r4,ror#6
1308392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
1309656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r4,ror#11
1310656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r5,r6
1311392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 28>=16
1312392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
1313392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
1314392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
1315392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
1316392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 28==15
1317392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
1318392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
131943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r4,ror#25	@ Sigma1(e)
1320656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r4
1321392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#12*4]
132243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
1323656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r6			@ Ch(e,f,g)
1324656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r7
1325656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r7,r8,ror#2
132643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
1327656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r7,r7,r8,ror#13
132843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
1329656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r7,r7,r8,ror#22		@ Sigma0(a)
1330392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 28>=15
1331392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#14*4]		@ from BODY_16_xx
1332392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
1333656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r8,r9
1334656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r8,r9
133543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r10
133643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r7,r7,r3
1337656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
1338656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r11,r11,r3
133943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r7,r7,r0
1340392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ ldr	r1,[sp,#14*4]		@ 29
1341656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r12,[sp,#11*4]
1342392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r0,r1,ror#7
1343656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r3,[sp,#13*4]
1344392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,ror#18
1345392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r2,[sp,#6*4]
1346392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,lsr#3	@ sigma0(X[i+1])
1347392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r1,r12,ror#17
134843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
1349392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,ror#19
1350656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r2
1351392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,lsr#10	@ sigma1(X[i+14])
1352392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ add	r3,r3,r1
1353656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r11,ror#6
1354392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
1355656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r11,ror#11
1356656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r4,r5
1357392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 29>=16
1358392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
1359392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
1360392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
1361392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
1362392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 29==15
1363392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
1364392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
136543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r11,ror#25	@ Sigma1(e)
1366656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r11
1367392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#13*4]
136843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
1369656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r5			@ Ch(e,f,g)
1370656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r6
1371656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r6,r7,ror#2
137243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
1373656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r6,r6,r7,ror#13
137443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
1375656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r6,r6,r7,ror#22		@ Sigma0(a)
1376392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 29>=15
1377392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#15*4]		@ from BODY_16_xx
1378392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
1379656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r7,r8
1380656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r7,r8
138143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r9
138243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r6,r6,r3
1383656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
1384656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r10,r10,r3
138543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r6,r6,r0
1386392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ ldr	r1,[sp,#15*4]		@ 30
1387656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r12,[sp,#12*4]
1388392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r0,r1,ror#7
1389656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r3,[sp,#14*4]
1390392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,ror#18
1391392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r2,[sp,#7*4]
1392392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,lsr#3	@ sigma0(X[i+1])
1393392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r1,r12,ror#17
139443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
1395392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,ror#19
1396656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r2
1397392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,lsr#10	@ sigma1(X[i+14])
1398392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ add	r3,r3,r1
1399656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r10,ror#6
1400392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
1401656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r10,ror#11
1402656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r11,r4
1403392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 30>=16
1404392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
1405392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
1406392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
1407392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
1408392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 30==15
1409392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
1410392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
141143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r10,ror#25	@ Sigma1(e)
1412656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r10
1413392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#14*4]
141443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
1415656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r4			@ Ch(e,f,g)
1416656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r5
1417656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r5,r6,ror#2
141843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
1419656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r5,r5,r6,ror#13
142043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
1421656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r5,r5,r6,ror#22		@ Sigma0(a)
1422392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 30>=15
1423392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#0*4]		@ from BODY_16_xx
1424392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
1425656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r6,r7
1426656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r6,r7
142743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r8
142843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r5,r5,r3
1429656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
1430656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r9,r9,r3
143143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r5,r5,r0
1432392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ ldr	r1,[sp,#0*4]		@ 31
1433656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r12,[sp,#13*4]
1434392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r0,r1,ror#7
1435656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r3,[sp,#15*4]
1436392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,ror#18
1437392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r2,[sp,#8*4]
1438392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r0,r0,r1,lsr#3	@ sigma0(X[i+1])
1439392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	mov	r1,r12,ror#17
144043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
1441392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,ror#19
1442656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r2
1443392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	eor	r1,r1,r12,lsr#10	@ sigma1(X[i+14])
1444392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	@ add	r3,r3,r1
1445656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r0,r9,ror#6
1446392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r12,[r14],#4			@ *K256++
1447656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r0,r0,r9,ror#11
1448656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r10,r11
1449392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 31>=16
1450392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	add	r3,r3,r1			@ from BODY_16_xx
1451392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#elif __ARM_ARCH__>=7 && defined(__ARMEL__)
1452392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	rev	r3,r3
1453392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
1454392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 31==15
1455392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r1,[sp,#17*4]			@ leave room for r1
1456392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
145743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	eor	r0,r0,r9,ror#25	@ Sigma1(e)
1458656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r2,r9
1459392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	str	r3,[sp,#15*4]
146043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r0
1461656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r2,r2,r11			@ Ch(e,f,g)
1462656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r3,r3,r4
1463656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	r4,r5,ror#2
146443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r2
1465656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r4,r4,r5,ror#13
146643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r3,r3,r12
1467656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	eor	r4,r4,r5,ror#22		@ Sigma0(a)
1468392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if 31>=15
1469392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldr	r1,[sp,#1*4]		@ from BODY_16_xx
1470392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
1471656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r5,r6
1472656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r2,r5,r6
147343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	r0,r0,r7
147443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r4,r4,r3
1475656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	orr	r0,r0,r2			@ Maj(a,b,c)
1476656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r8,r8,r3
147743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	add	r4,r4,r0
1478656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	r12,r12,#0xff
1479656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	cmp	r12,#0xf2
1480656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bne	.Lrounds_16_xx
1481656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1482656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r3,[sp,#16*4]		@ pull ctx
1483656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r0,[r3,#0]
1484656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r2,[r3,#4]
1485656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r12,[r3,#8]
1486656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r4,r4,r0
1487656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r0,[r3,#12]
1488656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r5,r5,r2
1489656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r2,[r3,#16]
1490656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r6,r6,r12
1491656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r12,[r3,#20]
1492656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r7,r7,r0
1493656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r0,[r3,#24]
1494656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r8,r8,r2
1495656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r2,[r3,#28]
1496656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r9,r9,r12
1497656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r1,[sp,#17*4]		@ pull inp
1498656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ldr	r12,[sp,#18*4]		@ pull inp+len
1499656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r10,r10,r0
1500656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	r11,r11,r2
1501656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stmia	r3,{r4,r5,r6,r7,r8,r9,r10,r11}
1502656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	cmp	r1,r12
1503656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sub	r14,r14,#256	@ rewind Ktbl
1504656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bne	.Loop
1505656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1506656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	sp,sp,#19*4	@ destroy frame
1507392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=5
1508392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldmia	sp!,{r4-r11,pc}
1509392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else
1510392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	ldmia	sp!,{r4-r11,lr}
1511656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	tst	lr,#1
1512656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	moveq	pc,lr			@ be binary compatible with V4, yet
1513656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	.word	0xe12fff1e			@ interoperable with Thumb ISA:-)
1514392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
1515656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size   sha256_block_data_order,.-sha256_block_data_order
1516656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.asciz  "SHA256 block transform for ARMv4, CRYPTOGAMS by <appro@openssl.org>"
1517221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom.align	2
1518