OLD | NEW |
| (Empty) |
1 #include "arm_arch.h" | |
2 | |
3 .text | |
4 .code 32 | |
5 | |
6 .type K256,%object | |
7 .align 5 | |
8 K256: | |
9 .word 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 | |
10 .word 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 | |
11 .word 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 | |
12 .word 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 | |
13 .word 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc | |
14 .word 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da | |
15 .word 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 | |
16 .word 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 | |
17 .word 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 | |
18 .word 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 | |
19 .word 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 | |
20 .word 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 | |
21 .word 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 | |
22 .word 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 | |
23 .word 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 | |
24 .word 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 | |
25 .size K256,.-K256 | |
26 | |
27 .global sha256_block_data_order | |
28 .type sha256_block_data_order,%function | |
29 sha256_block_data_order: | |
30 sub r3,pc,#8 @ sha256_block_data_order | |
31 add r2,r1,r2,lsl#6 @ len to point at the end of inp | |
32 stmdb sp!,{r0,r1,r2,r4-r11,lr} | |
33 ldmia r0,{r4,r5,r6,r7,r8,r9,r10,r11} | |
34 sub r14,r3,#256 @ K256 | |
35 sub sp,sp,#16*4 @ alloca(X[16]) | |
36 .Loop: | |
37 #if __ARM_ARCH__>=7 | |
38 ldr r3,[r1],#4 | |
39 #else | |
40 ldrb r3,[r1,#3] @ 0 | |
41 ldrb r12,[r1,#2] | |
42 ldrb r2,[r1,#1] | |
43 ldrb r0,[r1],#4 | |
44 orr r3,r3,r12,lsl#8 | |
45 orr r3,r3,r2,lsl#16 | |
46 orr r3,r3,r0,lsl#24 | |
47 #endif | |
48 mov r0,r8,ror#6 | |
49 ldr r12,[r14],#4 @ *K256++ | |
50 eor r0,r0,r8,ror#11 | |
51 eor r2,r9,r10 | |
52 #if 0>=16 | |
53 add r3,r3,r1 @ from BODY_16_xx | |
54 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
55 rev r3,r3 | |
56 #endif | |
57 #if 0==15 | |
58 str r1,[sp,#17*4] @ leave room for r1 | |
59 #endif | |
60 eor r0,r0,r8,ror#25 @ Sigma1(e) | |
61 and r2,r2,r8 | |
62 str r3,[sp,#0*4] | |
63 add r3,r3,r0 | |
64 eor r2,r2,r10 @ Ch(e,f,g) | |
65 add r3,r3,r11 | |
66 mov r11,r4,ror#2 | |
67 add r3,r3,r2 | |
68 eor r11,r11,r4,ror#13 | |
69 add r3,r3,r12 | |
70 eor r11,r11,r4,ror#22 @ Sigma0(a) | |
71 #if 0>=15 | |
72 ldr r1,[sp,#2*4] @ from BODY_16_xx | |
73 #endif | |
74 orr r0,r4,r5 | |
75 and r2,r4,r5 | |
76 and r0,r0,r6 | |
77 add r11,r11,r3 | |
78 orr r0,r0,r2 @ Maj(a,b,c) | |
79 add r7,r7,r3 | |
80 add r11,r11,r0 | |
81 #if __ARM_ARCH__>=7 | |
82 ldr r3,[r1],#4 | |
83 #else | |
84 ldrb r3,[r1,#3] @ 1 | |
85 ldrb r12,[r1,#2] | |
86 ldrb r2,[r1,#1] | |
87 ldrb r0,[r1],#4 | |
88 orr r3,r3,r12,lsl#8 | |
89 orr r3,r3,r2,lsl#16 | |
90 orr r3,r3,r0,lsl#24 | |
91 #endif | |
92 mov r0,r7,ror#6 | |
93 ldr r12,[r14],#4 @ *K256++ | |
94 eor r0,r0,r7,ror#11 | |
95 eor r2,r8,r9 | |
96 #if 1>=16 | |
97 add r3,r3,r1 @ from BODY_16_xx | |
98 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
99 rev r3,r3 | |
100 #endif | |
101 #if 1==15 | |
102 str r1,[sp,#17*4] @ leave room for r1 | |
103 #endif | |
104 eor r0,r0,r7,ror#25 @ Sigma1(e) | |
105 and r2,r2,r7 | |
106 str r3,[sp,#1*4] | |
107 add r3,r3,r0 | |
108 eor r2,r2,r9 @ Ch(e,f,g) | |
109 add r3,r3,r10 | |
110 mov r10,r11,ror#2 | |
111 add r3,r3,r2 | |
112 eor r10,r10,r11,ror#13 | |
113 add r3,r3,r12 | |
114 eor r10,r10,r11,ror#22 @ Sigma0(a) | |
115 #if 1>=15 | |
116 ldr r1,[sp,#3*4] @ from BODY_16_xx | |
117 #endif | |
118 orr r0,r11,r4 | |
119 and r2,r11,r4 | |
120 and r0,r0,r5 | |
121 add r10,r10,r3 | |
122 orr r0,r0,r2 @ Maj(a,b,c) | |
123 add r6,r6,r3 | |
124 add r10,r10,r0 | |
125 #if __ARM_ARCH__>=7 | |
126 ldr r3,[r1],#4 | |
127 #else | |
128 ldrb r3,[r1,#3] @ 2 | |
129 ldrb r12,[r1,#2] | |
130 ldrb r2,[r1,#1] | |
131 ldrb r0,[r1],#4 | |
132 orr r3,r3,r12,lsl#8 | |
133 orr r3,r3,r2,lsl#16 | |
134 orr r3,r3,r0,lsl#24 | |
135 #endif | |
136 mov r0,r6,ror#6 | |
137 ldr r12,[r14],#4 @ *K256++ | |
138 eor r0,r0,r6,ror#11 | |
139 eor r2,r7,r8 | |
140 #if 2>=16 | |
141 add r3,r3,r1 @ from BODY_16_xx | |
142 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
143 rev r3,r3 | |
144 #endif | |
145 #if 2==15 | |
146 str r1,[sp,#17*4] @ leave room for r1 | |
147 #endif | |
148 eor r0,r0,r6,ror#25 @ Sigma1(e) | |
149 and r2,r2,r6 | |
150 str r3,[sp,#2*4] | |
151 add r3,r3,r0 | |
152 eor r2,r2,r8 @ Ch(e,f,g) | |
153 add r3,r3,r9 | |
154 mov r9,r10,ror#2 | |
155 add r3,r3,r2 | |
156 eor r9,r9,r10,ror#13 | |
157 add r3,r3,r12 | |
158 eor r9,r9,r10,ror#22 @ Sigma0(a) | |
159 #if 2>=15 | |
160 ldr r1,[sp,#4*4] @ from BODY_16_xx | |
161 #endif | |
162 orr r0,r10,r11 | |
163 and r2,r10,r11 | |
164 and r0,r0,r4 | |
165 add r9,r9,r3 | |
166 orr r0,r0,r2 @ Maj(a,b,c) | |
167 add r5,r5,r3 | |
168 add r9,r9,r0 | |
169 #if __ARM_ARCH__>=7 | |
170 ldr r3,[r1],#4 | |
171 #else | |
172 ldrb r3,[r1,#3] @ 3 | |
173 ldrb r12,[r1,#2] | |
174 ldrb r2,[r1,#1] | |
175 ldrb r0,[r1],#4 | |
176 orr r3,r3,r12,lsl#8 | |
177 orr r3,r3,r2,lsl#16 | |
178 orr r3,r3,r0,lsl#24 | |
179 #endif | |
180 mov r0,r5,ror#6 | |
181 ldr r12,[r14],#4 @ *K256++ | |
182 eor r0,r0,r5,ror#11 | |
183 eor r2,r6,r7 | |
184 #if 3>=16 | |
185 add r3,r3,r1 @ from BODY_16_xx | |
186 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
187 rev r3,r3 | |
188 #endif | |
189 #if 3==15 | |
190 str r1,[sp,#17*4] @ leave room for r1 | |
191 #endif | |
192 eor r0,r0,r5,ror#25 @ Sigma1(e) | |
193 and r2,r2,r5 | |
194 str r3,[sp,#3*4] | |
195 add r3,r3,r0 | |
196 eor r2,r2,r7 @ Ch(e,f,g) | |
197 add r3,r3,r8 | |
198 mov r8,r9,ror#2 | |
199 add r3,r3,r2 | |
200 eor r8,r8,r9,ror#13 | |
201 add r3,r3,r12 | |
202 eor r8,r8,r9,ror#22 @ Sigma0(a) | |
203 #if 3>=15 | |
204 ldr r1,[sp,#5*4] @ from BODY_16_xx | |
205 #endif | |
206 orr r0,r9,r10 | |
207 and r2,r9,r10 | |
208 and r0,r0,r11 | |
209 add r8,r8,r3 | |
210 orr r0,r0,r2 @ Maj(a,b,c) | |
211 add r4,r4,r3 | |
212 add r8,r8,r0 | |
213 #if __ARM_ARCH__>=7 | |
214 ldr r3,[r1],#4 | |
215 #else | |
216 ldrb r3,[r1,#3] @ 4 | |
217 ldrb r12,[r1,#2] | |
218 ldrb r2,[r1,#1] | |
219 ldrb r0,[r1],#4 | |
220 orr r3,r3,r12,lsl#8 | |
221 orr r3,r3,r2,lsl#16 | |
222 orr r3,r3,r0,lsl#24 | |
223 #endif | |
224 mov r0,r4,ror#6 | |
225 ldr r12,[r14],#4 @ *K256++ | |
226 eor r0,r0,r4,ror#11 | |
227 eor r2,r5,r6 | |
228 #if 4>=16 | |
229 add r3,r3,r1 @ from BODY_16_xx | |
230 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
231 rev r3,r3 | |
232 #endif | |
233 #if 4==15 | |
234 str r1,[sp,#17*4] @ leave room for r1 | |
235 #endif | |
236 eor r0,r0,r4,ror#25 @ Sigma1(e) | |
237 and r2,r2,r4 | |
238 str r3,[sp,#4*4] | |
239 add r3,r3,r0 | |
240 eor r2,r2,r6 @ Ch(e,f,g) | |
241 add r3,r3,r7 | |
242 mov r7,r8,ror#2 | |
243 add r3,r3,r2 | |
244 eor r7,r7,r8,ror#13 | |
245 add r3,r3,r12 | |
246 eor r7,r7,r8,ror#22 @ Sigma0(a) | |
247 #if 4>=15 | |
248 ldr r1,[sp,#6*4] @ from BODY_16_xx | |
249 #endif | |
250 orr r0,r8,r9 | |
251 and r2,r8,r9 | |
252 and r0,r0,r10 | |
253 add r7,r7,r3 | |
254 orr r0,r0,r2 @ Maj(a,b,c) | |
255 add r11,r11,r3 | |
256 add r7,r7,r0 | |
257 #if __ARM_ARCH__>=7 | |
258 ldr r3,[r1],#4 | |
259 #else | |
260 ldrb r3,[r1,#3] @ 5 | |
261 ldrb r12,[r1,#2] | |
262 ldrb r2,[r1,#1] | |
263 ldrb r0,[r1],#4 | |
264 orr r3,r3,r12,lsl#8 | |
265 orr r3,r3,r2,lsl#16 | |
266 orr r3,r3,r0,lsl#24 | |
267 #endif | |
268 mov r0,r11,ror#6 | |
269 ldr r12,[r14],#4 @ *K256++ | |
270 eor r0,r0,r11,ror#11 | |
271 eor r2,r4,r5 | |
272 #if 5>=16 | |
273 add r3,r3,r1 @ from BODY_16_xx | |
274 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
275 rev r3,r3 | |
276 #endif | |
277 #if 5==15 | |
278 str r1,[sp,#17*4] @ leave room for r1 | |
279 #endif | |
280 eor r0,r0,r11,ror#25 @ Sigma1(e) | |
281 and r2,r2,r11 | |
282 str r3,[sp,#5*4] | |
283 add r3,r3,r0 | |
284 eor r2,r2,r5 @ Ch(e,f,g) | |
285 add r3,r3,r6 | |
286 mov r6,r7,ror#2 | |
287 add r3,r3,r2 | |
288 eor r6,r6,r7,ror#13 | |
289 add r3,r3,r12 | |
290 eor r6,r6,r7,ror#22 @ Sigma0(a) | |
291 #if 5>=15 | |
292 ldr r1,[sp,#7*4] @ from BODY_16_xx | |
293 #endif | |
294 orr r0,r7,r8 | |
295 and r2,r7,r8 | |
296 and r0,r0,r9 | |
297 add r6,r6,r3 | |
298 orr r0,r0,r2 @ Maj(a,b,c) | |
299 add r10,r10,r3 | |
300 add r6,r6,r0 | |
301 #if __ARM_ARCH__>=7 | |
302 ldr r3,[r1],#4 | |
303 #else | |
304 ldrb r3,[r1,#3] @ 6 | |
305 ldrb r12,[r1,#2] | |
306 ldrb r2,[r1,#1] | |
307 ldrb r0,[r1],#4 | |
308 orr r3,r3,r12,lsl#8 | |
309 orr r3,r3,r2,lsl#16 | |
310 orr r3,r3,r0,lsl#24 | |
311 #endif | |
312 mov r0,r10,ror#6 | |
313 ldr r12,[r14],#4 @ *K256++ | |
314 eor r0,r0,r10,ror#11 | |
315 eor r2,r11,r4 | |
316 #if 6>=16 | |
317 add r3,r3,r1 @ from BODY_16_xx | |
318 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
319 rev r3,r3 | |
320 #endif | |
321 #if 6==15 | |
322 str r1,[sp,#17*4] @ leave room for r1 | |
323 #endif | |
324 eor r0,r0,r10,ror#25 @ Sigma1(e) | |
325 and r2,r2,r10 | |
326 str r3,[sp,#6*4] | |
327 add r3,r3,r0 | |
328 eor r2,r2,r4 @ Ch(e,f,g) | |
329 add r3,r3,r5 | |
330 mov r5,r6,ror#2 | |
331 add r3,r3,r2 | |
332 eor r5,r5,r6,ror#13 | |
333 add r3,r3,r12 | |
334 eor r5,r5,r6,ror#22 @ Sigma0(a) | |
335 #if 6>=15 | |
336 ldr r1,[sp,#8*4] @ from BODY_16_xx | |
337 #endif | |
338 orr r0,r6,r7 | |
339 and r2,r6,r7 | |
340 and r0,r0,r8 | |
341 add r5,r5,r3 | |
342 orr r0,r0,r2 @ Maj(a,b,c) | |
343 add r9,r9,r3 | |
344 add r5,r5,r0 | |
345 #if __ARM_ARCH__>=7 | |
346 ldr r3,[r1],#4 | |
347 #else | |
348 ldrb r3,[r1,#3] @ 7 | |
349 ldrb r12,[r1,#2] | |
350 ldrb r2,[r1,#1] | |
351 ldrb r0,[r1],#4 | |
352 orr r3,r3,r12,lsl#8 | |
353 orr r3,r3,r2,lsl#16 | |
354 orr r3,r3,r0,lsl#24 | |
355 #endif | |
356 mov r0,r9,ror#6 | |
357 ldr r12,[r14],#4 @ *K256++ | |
358 eor r0,r0,r9,ror#11 | |
359 eor r2,r10,r11 | |
360 #if 7>=16 | |
361 add r3,r3,r1 @ from BODY_16_xx | |
362 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
363 rev r3,r3 | |
364 #endif | |
365 #if 7==15 | |
366 str r1,[sp,#17*4] @ leave room for r1 | |
367 #endif | |
368 eor r0,r0,r9,ror#25 @ Sigma1(e) | |
369 and r2,r2,r9 | |
370 str r3,[sp,#7*4] | |
371 add r3,r3,r0 | |
372 eor r2,r2,r11 @ Ch(e,f,g) | |
373 add r3,r3,r4 | |
374 mov r4,r5,ror#2 | |
375 add r3,r3,r2 | |
376 eor r4,r4,r5,ror#13 | |
377 add r3,r3,r12 | |
378 eor r4,r4,r5,ror#22 @ Sigma0(a) | |
379 #if 7>=15 | |
380 ldr r1,[sp,#9*4] @ from BODY_16_xx | |
381 #endif | |
382 orr r0,r5,r6 | |
383 and r2,r5,r6 | |
384 and r0,r0,r7 | |
385 add r4,r4,r3 | |
386 orr r0,r0,r2 @ Maj(a,b,c) | |
387 add r8,r8,r3 | |
388 add r4,r4,r0 | |
389 #if __ARM_ARCH__>=7 | |
390 ldr r3,[r1],#4 | |
391 #else | |
392 ldrb r3,[r1,#3] @ 8 | |
393 ldrb r12,[r1,#2] | |
394 ldrb r2,[r1,#1] | |
395 ldrb r0,[r1],#4 | |
396 orr r3,r3,r12,lsl#8 | |
397 orr r3,r3,r2,lsl#16 | |
398 orr r3,r3,r0,lsl#24 | |
399 #endif | |
400 mov r0,r8,ror#6 | |
401 ldr r12,[r14],#4 @ *K256++ | |
402 eor r0,r0,r8,ror#11 | |
403 eor r2,r9,r10 | |
404 #if 8>=16 | |
405 add r3,r3,r1 @ from BODY_16_xx | |
406 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
407 rev r3,r3 | |
408 #endif | |
409 #if 8==15 | |
410 str r1,[sp,#17*4] @ leave room for r1 | |
411 #endif | |
412 eor r0,r0,r8,ror#25 @ Sigma1(e) | |
413 and r2,r2,r8 | |
414 str r3,[sp,#8*4] | |
415 add r3,r3,r0 | |
416 eor r2,r2,r10 @ Ch(e,f,g) | |
417 add r3,r3,r11 | |
418 mov r11,r4,ror#2 | |
419 add r3,r3,r2 | |
420 eor r11,r11,r4,ror#13 | |
421 add r3,r3,r12 | |
422 eor r11,r11,r4,ror#22 @ Sigma0(a) | |
423 #if 8>=15 | |
424 ldr r1,[sp,#10*4] @ from BODY_16_xx | |
425 #endif | |
426 orr r0,r4,r5 | |
427 and r2,r4,r5 | |
428 and r0,r0,r6 | |
429 add r11,r11,r3 | |
430 orr r0,r0,r2 @ Maj(a,b,c) | |
431 add r7,r7,r3 | |
432 add r11,r11,r0 | |
433 #if __ARM_ARCH__>=7 | |
434 ldr r3,[r1],#4 | |
435 #else | |
436 ldrb r3,[r1,#3] @ 9 | |
437 ldrb r12,[r1,#2] | |
438 ldrb r2,[r1,#1] | |
439 ldrb r0,[r1],#4 | |
440 orr r3,r3,r12,lsl#8 | |
441 orr r3,r3,r2,lsl#16 | |
442 orr r3,r3,r0,lsl#24 | |
443 #endif | |
444 mov r0,r7,ror#6 | |
445 ldr r12,[r14],#4 @ *K256++ | |
446 eor r0,r0,r7,ror#11 | |
447 eor r2,r8,r9 | |
448 #if 9>=16 | |
449 add r3,r3,r1 @ from BODY_16_xx | |
450 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
451 rev r3,r3 | |
452 #endif | |
453 #if 9==15 | |
454 str r1,[sp,#17*4] @ leave room for r1 | |
455 #endif | |
456 eor r0,r0,r7,ror#25 @ Sigma1(e) | |
457 and r2,r2,r7 | |
458 str r3,[sp,#9*4] | |
459 add r3,r3,r0 | |
460 eor r2,r2,r9 @ Ch(e,f,g) | |
461 add r3,r3,r10 | |
462 mov r10,r11,ror#2 | |
463 add r3,r3,r2 | |
464 eor r10,r10,r11,ror#13 | |
465 add r3,r3,r12 | |
466 eor r10,r10,r11,ror#22 @ Sigma0(a) | |
467 #if 9>=15 | |
468 ldr r1,[sp,#11*4] @ from BODY_16_xx | |
469 #endif | |
470 orr r0,r11,r4 | |
471 and r2,r11,r4 | |
472 and r0,r0,r5 | |
473 add r10,r10,r3 | |
474 orr r0,r0,r2 @ Maj(a,b,c) | |
475 add r6,r6,r3 | |
476 add r10,r10,r0 | |
477 #if __ARM_ARCH__>=7 | |
478 ldr r3,[r1],#4 | |
479 #else | |
480 ldrb r3,[r1,#3] @ 10 | |
481 ldrb r12,[r1,#2] | |
482 ldrb r2,[r1,#1] | |
483 ldrb r0,[r1],#4 | |
484 orr r3,r3,r12,lsl#8 | |
485 orr r3,r3,r2,lsl#16 | |
486 orr r3,r3,r0,lsl#24 | |
487 #endif | |
488 mov r0,r6,ror#6 | |
489 ldr r12,[r14],#4 @ *K256++ | |
490 eor r0,r0,r6,ror#11 | |
491 eor r2,r7,r8 | |
492 #if 10>=16 | |
493 add r3,r3,r1 @ from BODY_16_xx | |
494 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
495 rev r3,r3 | |
496 #endif | |
497 #if 10==15 | |
498 str r1,[sp,#17*4] @ leave room for r1 | |
499 #endif | |
500 eor r0,r0,r6,ror#25 @ Sigma1(e) | |
501 and r2,r2,r6 | |
502 str r3,[sp,#10*4] | |
503 add r3,r3,r0 | |
504 eor r2,r2,r8 @ Ch(e,f,g) | |
505 add r3,r3,r9 | |
506 mov r9,r10,ror#2 | |
507 add r3,r3,r2 | |
508 eor r9,r9,r10,ror#13 | |
509 add r3,r3,r12 | |
510 eor r9,r9,r10,ror#22 @ Sigma0(a) | |
511 #if 10>=15 | |
512 ldr r1,[sp,#12*4] @ from BODY_16_xx | |
513 #endif | |
514 orr r0,r10,r11 | |
515 and r2,r10,r11 | |
516 and r0,r0,r4 | |
517 add r9,r9,r3 | |
518 orr r0,r0,r2 @ Maj(a,b,c) | |
519 add r5,r5,r3 | |
520 add r9,r9,r0 | |
521 #if __ARM_ARCH__>=7 | |
522 ldr r3,[r1],#4 | |
523 #else | |
524 ldrb r3,[r1,#3] @ 11 | |
525 ldrb r12,[r1,#2] | |
526 ldrb r2,[r1,#1] | |
527 ldrb r0,[r1],#4 | |
528 orr r3,r3,r12,lsl#8 | |
529 orr r3,r3,r2,lsl#16 | |
530 orr r3,r3,r0,lsl#24 | |
531 #endif | |
532 mov r0,r5,ror#6 | |
533 ldr r12,[r14],#4 @ *K256++ | |
534 eor r0,r0,r5,ror#11 | |
535 eor r2,r6,r7 | |
536 #if 11>=16 | |
537 add r3,r3,r1 @ from BODY_16_xx | |
538 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
539 rev r3,r3 | |
540 #endif | |
541 #if 11==15 | |
542 str r1,[sp,#17*4] @ leave room for r1 | |
543 #endif | |
544 eor r0,r0,r5,ror#25 @ Sigma1(e) | |
545 and r2,r2,r5 | |
546 str r3,[sp,#11*4] | |
547 add r3,r3,r0 | |
548 eor r2,r2,r7 @ Ch(e,f,g) | |
549 add r3,r3,r8 | |
550 mov r8,r9,ror#2 | |
551 add r3,r3,r2 | |
552 eor r8,r8,r9,ror#13 | |
553 add r3,r3,r12 | |
554 eor r8,r8,r9,ror#22 @ Sigma0(a) | |
555 #if 11>=15 | |
556 ldr r1,[sp,#13*4] @ from BODY_16_xx | |
557 #endif | |
558 orr r0,r9,r10 | |
559 and r2,r9,r10 | |
560 and r0,r0,r11 | |
561 add r8,r8,r3 | |
562 orr r0,r0,r2 @ Maj(a,b,c) | |
563 add r4,r4,r3 | |
564 add r8,r8,r0 | |
565 #if __ARM_ARCH__>=7 | |
566 ldr r3,[r1],#4 | |
567 #else | |
568 ldrb r3,[r1,#3] @ 12 | |
569 ldrb r12,[r1,#2] | |
570 ldrb r2,[r1,#1] | |
571 ldrb r0,[r1],#4 | |
572 orr r3,r3,r12,lsl#8 | |
573 orr r3,r3,r2,lsl#16 | |
574 orr r3,r3,r0,lsl#24 | |
575 #endif | |
576 mov r0,r4,ror#6 | |
577 ldr r12,[r14],#4 @ *K256++ | |
578 eor r0,r0,r4,ror#11 | |
579 eor r2,r5,r6 | |
580 #if 12>=16 | |
581 add r3,r3,r1 @ from BODY_16_xx | |
582 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
583 rev r3,r3 | |
584 #endif | |
585 #if 12==15 | |
586 str r1,[sp,#17*4] @ leave room for r1 | |
587 #endif | |
588 eor r0,r0,r4,ror#25 @ Sigma1(e) | |
589 and r2,r2,r4 | |
590 str r3,[sp,#12*4] | |
591 add r3,r3,r0 | |
592 eor r2,r2,r6 @ Ch(e,f,g) | |
593 add r3,r3,r7 | |
594 mov r7,r8,ror#2 | |
595 add r3,r3,r2 | |
596 eor r7,r7,r8,ror#13 | |
597 add r3,r3,r12 | |
598 eor r7,r7,r8,ror#22 @ Sigma0(a) | |
599 #if 12>=15 | |
600 ldr r1,[sp,#14*4] @ from BODY_16_xx | |
601 #endif | |
602 orr r0,r8,r9 | |
603 and r2,r8,r9 | |
604 and r0,r0,r10 | |
605 add r7,r7,r3 | |
606 orr r0,r0,r2 @ Maj(a,b,c) | |
607 add r11,r11,r3 | |
608 add r7,r7,r0 | |
609 #if __ARM_ARCH__>=7 | |
610 ldr r3,[r1],#4 | |
611 #else | |
612 ldrb r3,[r1,#3] @ 13 | |
613 ldrb r12,[r1,#2] | |
614 ldrb r2,[r1,#1] | |
615 ldrb r0,[r1],#4 | |
616 orr r3,r3,r12,lsl#8 | |
617 orr r3,r3,r2,lsl#16 | |
618 orr r3,r3,r0,lsl#24 | |
619 #endif | |
620 mov r0,r11,ror#6 | |
621 ldr r12,[r14],#4 @ *K256++ | |
622 eor r0,r0,r11,ror#11 | |
623 eor r2,r4,r5 | |
624 #if 13>=16 | |
625 add r3,r3,r1 @ from BODY_16_xx | |
626 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
627 rev r3,r3 | |
628 #endif | |
629 #if 13==15 | |
630 str r1,[sp,#17*4] @ leave room for r1 | |
631 #endif | |
632 eor r0,r0,r11,ror#25 @ Sigma1(e) | |
633 and r2,r2,r11 | |
634 str r3,[sp,#13*4] | |
635 add r3,r3,r0 | |
636 eor r2,r2,r5 @ Ch(e,f,g) | |
637 add r3,r3,r6 | |
638 mov r6,r7,ror#2 | |
639 add r3,r3,r2 | |
640 eor r6,r6,r7,ror#13 | |
641 add r3,r3,r12 | |
642 eor r6,r6,r7,ror#22 @ Sigma0(a) | |
643 #if 13>=15 | |
644 ldr r1,[sp,#15*4] @ from BODY_16_xx | |
645 #endif | |
646 orr r0,r7,r8 | |
647 and r2,r7,r8 | |
648 and r0,r0,r9 | |
649 add r6,r6,r3 | |
650 orr r0,r0,r2 @ Maj(a,b,c) | |
651 add r10,r10,r3 | |
652 add r6,r6,r0 | |
653 #if __ARM_ARCH__>=7 | |
654 ldr r3,[r1],#4 | |
655 #else | |
656 ldrb r3,[r1,#3] @ 14 | |
657 ldrb r12,[r1,#2] | |
658 ldrb r2,[r1,#1] | |
659 ldrb r0,[r1],#4 | |
660 orr r3,r3,r12,lsl#8 | |
661 orr r3,r3,r2,lsl#16 | |
662 orr r3,r3,r0,lsl#24 | |
663 #endif | |
664 mov r0,r10,ror#6 | |
665 ldr r12,[r14],#4 @ *K256++ | |
666 eor r0,r0,r10,ror#11 | |
667 eor r2,r11,r4 | |
668 #if 14>=16 | |
669 add r3,r3,r1 @ from BODY_16_xx | |
670 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
671 rev r3,r3 | |
672 #endif | |
673 #if 14==15 | |
674 str r1,[sp,#17*4] @ leave room for r1 | |
675 #endif | |
676 eor r0,r0,r10,ror#25 @ Sigma1(e) | |
677 and r2,r2,r10 | |
678 str r3,[sp,#14*4] | |
679 add r3,r3,r0 | |
680 eor r2,r2,r4 @ Ch(e,f,g) | |
681 add r3,r3,r5 | |
682 mov r5,r6,ror#2 | |
683 add r3,r3,r2 | |
684 eor r5,r5,r6,ror#13 | |
685 add r3,r3,r12 | |
686 eor r5,r5,r6,ror#22 @ Sigma0(a) | |
687 #if 14>=15 | |
688 ldr r1,[sp,#0*4] @ from BODY_16_xx | |
689 #endif | |
690 orr r0,r6,r7 | |
691 and r2,r6,r7 | |
692 and r0,r0,r8 | |
693 add r5,r5,r3 | |
694 orr r0,r0,r2 @ Maj(a,b,c) | |
695 add r9,r9,r3 | |
696 add r5,r5,r0 | |
697 #if __ARM_ARCH__>=7 | |
698 ldr r3,[r1],#4 | |
699 #else | |
700 ldrb r3,[r1,#3] @ 15 | |
701 ldrb r12,[r1,#2] | |
702 ldrb r2,[r1,#1] | |
703 ldrb r0,[r1],#4 | |
704 orr r3,r3,r12,lsl#8 | |
705 orr r3,r3,r2,lsl#16 | |
706 orr r3,r3,r0,lsl#24 | |
707 #endif | |
708 mov r0,r9,ror#6 | |
709 ldr r12,[r14],#4 @ *K256++ | |
710 eor r0,r0,r9,ror#11 | |
711 eor r2,r10,r11 | |
712 #if 15>=16 | |
713 add r3,r3,r1 @ from BODY_16_xx | |
714 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
715 rev r3,r3 | |
716 #endif | |
717 #if 15==15 | |
718 str r1,[sp,#17*4] @ leave room for r1 | |
719 #endif | |
720 eor r0,r0,r9,ror#25 @ Sigma1(e) | |
721 and r2,r2,r9 | |
722 str r3,[sp,#15*4] | |
723 add r3,r3,r0 | |
724 eor r2,r2,r11 @ Ch(e,f,g) | |
725 add r3,r3,r4 | |
726 mov r4,r5,ror#2 | |
727 add r3,r3,r2 | |
728 eor r4,r4,r5,ror#13 | |
729 add r3,r3,r12 | |
730 eor r4,r4,r5,ror#22 @ Sigma0(a) | |
731 #if 15>=15 | |
732 ldr r1,[sp,#1*4] @ from BODY_16_xx | |
733 #endif | |
734 orr r0,r5,r6 | |
735 and r2,r5,r6 | |
736 and r0,r0,r7 | |
737 add r4,r4,r3 | |
738 orr r0,r0,r2 @ Maj(a,b,c) | |
739 add r8,r8,r3 | |
740 add r4,r4,r0 | |
741 .Lrounds_16_xx: | |
742 @ ldr r1,[sp,#1*4] @ 16 | |
743 ldr r12,[sp,#14*4] | |
744 mov r0,r1,ror#7 | |
745 ldr r3,[sp,#0*4] | |
746 eor r0,r0,r1,ror#18 | |
747 ldr r2,[sp,#9*4] | |
748 eor r0,r0,r1,lsr#3 @ sigma0(X[i+1]) | |
749 mov r1,r12,ror#17 | |
750 add r3,r3,r0 | |
751 eor r1,r1,r12,ror#19 | |
752 add r3,r3,r2 | |
753 eor r1,r1,r12,lsr#10 @ sigma1(X[i+14]) | |
754 @ add r3,r3,r1 | |
755 mov r0,r8,ror#6 | |
756 ldr r12,[r14],#4 @ *K256++ | |
757 eor r0,r0,r8,ror#11 | |
758 eor r2,r9,r10 | |
759 #if 16>=16 | |
760 add r3,r3,r1 @ from BODY_16_xx | |
761 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
762 rev r3,r3 | |
763 #endif | |
764 #if 16==15 | |
765 str r1,[sp,#17*4] @ leave room for r1 | |
766 #endif | |
767 eor r0,r0,r8,ror#25 @ Sigma1(e) | |
768 and r2,r2,r8 | |
769 str r3,[sp,#0*4] | |
770 add r3,r3,r0 | |
771 eor r2,r2,r10 @ Ch(e,f,g) | |
772 add r3,r3,r11 | |
773 mov r11,r4,ror#2 | |
774 add r3,r3,r2 | |
775 eor r11,r11,r4,ror#13 | |
776 add r3,r3,r12 | |
777 eor r11,r11,r4,ror#22 @ Sigma0(a) | |
778 #if 16>=15 | |
779 ldr r1,[sp,#2*4] @ from BODY_16_xx | |
780 #endif | |
781 orr r0,r4,r5 | |
782 and r2,r4,r5 | |
783 and r0,r0,r6 | |
784 add r11,r11,r3 | |
785 orr r0,r0,r2 @ Maj(a,b,c) | |
786 add r7,r7,r3 | |
787 add r11,r11,r0 | |
788 @ ldr r1,[sp,#2*4] @ 17 | |
789 ldr r12,[sp,#15*4] | |
790 mov r0,r1,ror#7 | |
791 ldr r3,[sp,#1*4] | |
792 eor r0,r0,r1,ror#18 | |
793 ldr r2,[sp,#10*4] | |
794 eor r0,r0,r1,lsr#3 @ sigma0(X[i+1]) | |
795 mov r1,r12,ror#17 | |
796 add r3,r3,r0 | |
797 eor r1,r1,r12,ror#19 | |
798 add r3,r3,r2 | |
799 eor r1,r1,r12,lsr#10 @ sigma1(X[i+14]) | |
800 @ add r3,r3,r1 | |
801 mov r0,r7,ror#6 | |
802 ldr r12,[r14],#4 @ *K256++ | |
803 eor r0,r0,r7,ror#11 | |
804 eor r2,r8,r9 | |
805 #if 17>=16 | |
806 add r3,r3,r1 @ from BODY_16_xx | |
807 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
808 rev r3,r3 | |
809 #endif | |
810 #if 17==15 | |
811 str r1,[sp,#17*4] @ leave room for r1 | |
812 #endif | |
813 eor r0,r0,r7,ror#25 @ Sigma1(e) | |
814 and r2,r2,r7 | |
815 str r3,[sp,#1*4] | |
816 add r3,r3,r0 | |
817 eor r2,r2,r9 @ Ch(e,f,g) | |
818 add r3,r3,r10 | |
819 mov r10,r11,ror#2 | |
820 add r3,r3,r2 | |
821 eor r10,r10,r11,ror#13 | |
822 add r3,r3,r12 | |
823 eor r10,r10,r11,ror#22 @ Sigma0(a) | |
824 #if 17>=15 | |
825 ldr r1,[sp,#3*4] @ from BODY_16_xx | |
826 #endif | |
827 orr r0,r11,r4 | |
828 and r2,r11,r4 | |
829 and r0,r0,r5 | |
830 add r10,r10,r3 | |
831 orr r0,r0,r2 @ Maj(a,b,c) | |
832 add r6,r6,r3 | |
833 add r10,r10,r0 | |
834 @ ldr r1,[sp,#3*4] @ 18 | |
835 ldr r12,[sp,#0*4] | |
836 mov r0,r1,ror#7 | |
837 ldr r3,[sp,#2*4] | |
838 eor r0,r0,r1,ror#18 | |
839 ldr r2,[sp,#11*4] | |
840 eor r0,r0,r1,lsr#3 @ sigma0(X[i+1]) | |
841 mov r1,r12,ror#17 | |
842 add r3,r3,r0 | |
843 eor r1,r1,r12,ror#19 | |
844 add r3,r3,r2 | |
845 eor r1,r1,r12,lsr#10 @ sigma1(X[i+14]) | |
846 @ add r3,r3,r1 | |
847 mov r0,r6,ror#6 | |
848 ldr r12,[r14],#4 @ *K256++ | |
849 eor r0,r0,r6,ror#11 | |
850 eor r2,r7,r8 | |
851 #if 18>=16 | |
852 add r3,r3,r1 @ from BODY_16_xx | |
853 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
854 rev r3,r3 | |
855 #endif | |
856 #if 18==15 | |
857 str r1,[sp,#17*4] @ leave room for r1 | |
858 #endif | |
859 eor r0,r0,r6,ror#25 @ Sigma1(e) | |
860 and r2,r2,r6 | |
861 str r3,[sp,#2*4] | |
862 add r3,r3,r0 | |
863 eor r2,r2,r8 @ Ch(e,f,g) | |
864 add r3,r3,r9 | |
865 mov r9,r10,ror#2 | |
866 add r3,r3,r2 | |
867 eor r9,r9,r10,ror#13 | |
868 add r3,r3,r12 | |
869 eor r9,r9,r10,ror#22 @ Sigma0(a) | |
870 #if 18>=15 | |
871 ldr r1,[sp,#4*4] @ from BODY_16_xx | |
872 #endif | |
873 orr r0,r10,r11 | |
874 and r2,r10,r11 | |
875 and r0,r0,r4 | |
876 add r9,r9,r3 | |
877 orr r0,r0,r2 @ Maj(a,b,c) | |
878 add r5,r5,r3 | |
879 add r9,r9,r0 | |
880 @ ldr r1,[sp,#4*4] @ 19 | |
881 ldr r12,[sp,#1*4] | |
882 mov r0,r1,ror#7 | |
883 ldr r3,[sp,#3*4] | |
884 eor r0,r0,r1,ror#18 | |
885 ldr r2,[sp,#12*4] | |
886 eor r0,r0,r1,lsr#3 @ sigma0(X[i+1]) | |
887 mov r1,r12,ror#17 | |
888 add r3,r3,r0 | |
889 eor r1,r1,r12,ror#19 | |
890 add r3,r3,r2 | |
891 eor r1,r1,r12,lsr#10 @ sigma1(X[i+14]) | |
892 @ add r3,r3,r1 | |
893 mov r0,r5,ror#6 | |
894 ldr r12,[r14],#4 @ *K256++ | |
895 eor r0,r0,r5,ror#11 | |
896 eor r2,r6,r7 | |
897 #if 19>=16 | |
898 add r3,r3,r1 @ from BODY_16_xx | |
899 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
900 rev r3,r3 | |
901 #endif | |
902 #if 19==15 | |
903 str r1,[sp,#17*4] @ leave room for r1 | |
904 #endif | |
905 eor r0,r0,r5,ror#25 @ Sigma1(e) | |
906 and r2,r2,r5 | |
907 str r3,[sp,#3*4] | |
908 add r3,r3,r0 | |
909 eor r2,r2,r7 @ Ch(e,f,g) | |
910 add r3,r3,r8 | |
911 mov r8,r9,ror#2 | |
912 add r3,r3,r2 | |
913 eor r8,r8,r9,ror#13 | |
914 add r3,r3,r12 | |
915 eor r8,r8,r9,ror#22 @ Sigma0(a) | |
916 #if 19>=15 | |
917 ldr r1,[sp,#5*4] @ from BODY_16_xx | |
918 #endif | |
919 orr r0,r9,r10 | |
920 and r2,r9,r10 | |
921 and r0,r0,r11 | |
922 add r8,r8,r3 | |
923 orr r0,r0,r2 @ Maj(a,b,c) | |
924 add r4,r4,r3 | |
925 add r8,r8,r0 | |
926 @ ldr r1,[sp,#5*4] @ 20 | |
927 ldr r12,[sp,#2*4] | |
928 mov r0,r1,ror#7 | |
929 ldr r3,[sp,#4*4] | |
930 eor r0,r0,r1,ror#18 | |
931 ldr r2,[sp,#13*4] | |
932 eor r0,r0,r1,lsr#3 @ sigma0(X[i+1]) | |
933 mov r1,r12,ror#17 | |
934 add r3,r3,r0 | |
935 eor r1,r1,r12,ror#19 | |
936 add r3,r3,r2 | |
937 eor r1,r1,r12,lsr#10 @ sigma1(X[i+14]) | |
938 @ add r3,r3,r1 | |
939 mov r0,r4,ror#6 | |
940 ldr r12,[r14],#4 @ *K256++ | |
941 eor r0,r0,r4,ror#11 | |
942 eor r2,r5,r6 | |
943 #if 20>=16 | |
944 add r3,r3,r1 @ from BODY_16_xx | |
945 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
946 rev r3,r3 | |
947 #endif | |
948 #if 20==15 | |
949 str r1,[sp,#17*4] @ leave room for r1 | |
950 #endif | |
951 eor r0,r0,r4,ror#25 @ Sigma1(e) | |
952 and r2,r2,r4 | |
953 str r3,[sp,#4*4] | |
954 add r3,r3,r0 | |
955 eor r2,r2,r6 @ Ch(e,f,g) | |
956 add r3,r3,r7 | |
957 mov r7,r8,ror#2 | |
958 add r3,r3,r2 | |
959 eor r7,r7,r8,ror#13 | |
960 add r3,r3,r12 | |
961 eor r7,r7,r8,ror#22 @ Sigma0(a) | |
962 #if 20>=15 | |
963 ldr r1,[sp,#6*4] @ from BODY_16_xx | |
964 #endif | |
965 orr r0,r8,r9 | |
966 and r2,r8,r9 | |
967 and r0,r0,r10 | |
968 add r7,r7,r3 | |
969 orr r0,r0,r2 @ Maj(a,b,c) | |
970 add r11,r11,r3 | |
971 add r7,r7,r0 | |
972 @ ldr r1,[sp,#6*4] @ 21 | |
973 ldr r12,[sp,#3*4] | |
974 mov r0,r1,ror#7 | |
975 ldr r3,[sp,#5*4] | |
976 eor r0,r0,r1,ror#18 | |
977 ldr r2,[sp,#14*4] | |
978 eor r0,r0,r1,lsr#3 @ sigma0(X[i+1]) | |
979 mov r1,r12,ror#17 | |
980 add r3,r3,r0 | |
981 eor r1,r1,r12,ror#19 | |
982 add r3,r3,r2 | |
983 eor r1,r1,r12,lsr#10 @ sigma1(X[i+14]) | |
984 @ add r3,r3,r1 | |
985 mov r0,r11,ror#6 | |
986 ldr r12,[r14],#4 @ *K256++ | |
987 eor r0,r0,r11,ror#11 | |
988 eor r2,r4,r5 | |
989 #if 21>=16 | |
990 add r3,r3,r1 @ from BODY_16_xx | |
991 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
992 rev r3,r3 | |
993 #endif | |
994 #if 21==15 | |
995 str r1,[sp,#17*4] @ leave room for r1 | |
996 #endif | |
997 eor r0,r0,r11,ror#25 @ Sigma1(e) | |
998 and r2,r2,r11 | |
999 str r3,[sp,#5*4] | |
1000 add r3,r3,r0 | |
1001 eor r2,r2,r5 @ Ch(e,f,g) | |
1002 add r3,r3,r6 | |
1003 mov r6,r7,ror#2 | |
1004 add r3,r3,r2 | |
1005 eor r6,r6,r7,ror#13 | |
1006 add r3,r3,r12 | |
1007 eor r6,r6,r7,ror#22 @ Sigma0(a) | |
1008 #if 21>=15 | |
1009 ldr r1,[sp,#7*4] @ from BODY_16_xx | |
1010 #endif | |
1011 orr r0,r7,r8 | |
1012 and r2,r7,r8 | |
1013 and r0,r0,r9 | |
1014 add r6,r6,r3 | |
1015 orr r0,r0,r2 @ Maj(a,b,c) | |
1016 add r10,r10,r3 | |
1017 add r6,r6,r0 | |
1018 @ ldr r1,[sp,#7*4] @ 22 | |
1019 ldr r12,[sp,#4*4] | |
1020 mov r0,r1,ror#7 | |
1021 ldr r3,[sp,#6*4] | |
1022 eor r0,r0,r1,ror#18 | |
1023 ldr r2,[sp,#15*4] | |
1024 eor r0,r0,r1,lsr#3 @ sigma0(X[i+1]) | |
1025 mov r1,r12,ror#17 | |
1026 add r3,r3,r0 | |
1027 eor r1,r1,r12,ror#19 | |
1028 add r3,r3,r2 | |
1029 eor r1,r1,r12,lsr#10 @ sigma1(X[i+14]) | |
1030 @ add r3,r3,r1 | |
1031 mov r0,r10,ror#6 | |
1032 ldr r12,[r14],#4 @ *K256++ | |
1033 eor r0,r0,r10,ror#11 | |
1034 eor r2,r11,r4 | |
1035 #if 22>=16 | |
1036 add r3,r3,r1 @ from BODY_16_xx | |
1037 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
1038 rev r3,r3 | |
1039 #endif | |
1040 #if 22==15 | |
1041 str r1,[sp,#17*4] @ leave room for r1 | |
1042 #endif | |
1043 eor r0,r0,r10,ror#25 @ Sigma1(e) | |
1044 and r2,r2,r10 | |
1045 str r3,[sp,#6*4] | |
1046 add r3,r3,r0 | |
1047 eor r2,r2,r4 @ Ch(e,f,g) | |
1048 add r3,r3,r5 | |
1049 mov r5,r6,ror#2 | |
1050 add r3,r3,r2 | |
1051 eor r5,r5,r6,ror#13 | |
1052 add r3,r3,r12 | |
1053 eor r5,r5,r6,ror#22 @ Sigma0(a) | |
1054 #if 22>=15 | |
1055 ldr r1,[sp,#8*4] @ from BODY_16_xx | |
1056 #endif | |
1057 orr r0,r6,r7 | |
1058 and r2,r6,r7 | |
1059 and r0,r0,r8 | |
1060 add r5,r5,r3 | |
1061 orr r0,r0,r2 @ Maj(a,b,c) | |
1062 add r9,r9,r3 | |
1063 add r5,r5,r0 | |
1064 @ ldr r1,[sp,#8*4] @ 23 | |
1065 ldr r12,[sp,#5*4] | |
1066 mov r0,r1,ror#7 | |
1067 ldr r3,[sp,#7*4] | |
1068 eor r0,r0,r1,ror#18 | |
1069 ldr r2,[sp,#0*4] | |
1070 eor r0,r0,r1,lsr#3 @ sigma0(X[i+1]) | |
1071 mov r1,r12,ror#17 | |
1072 add r3,r3,r0 | |
1073 eor r1,r1,r12,ror#19 | |
1074 add r3,r3,r2 | |
1075 eor r1,r1,r12,lsr#10 @ sigma1(X[i+14]) | |
1076 @ add r3,r3,r1 | |
1077 mov r0,r9,ror#6 | |
1078 ldr r12,[r14],#4 @ *K256++ | |
1079 eor r0,r0,r9,ror#11 | |
1080 eor r2,r10,r11 | |
1081 #if 23>=16 | |
1082 add r3,r3,r1 @ from BODY_16_xx | |
1083 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
1084 rev r3,r3 | |
1085 #endif | |
1086 #if 23==15 | |
1087 str r1,[sp,#17*4] @ leave room for r1 | |
1088 #endif | |
1089 eor r0,r0,r9,ror#25 @ Sigma1(e) | |
1090 and r2,r2,r9 | |
1091 str r3,[sp,#7*4] | |
1092 add r3,r3,r0 | |
1093 eor r2,r2,r11 @ Ch(e,f,g) | |
1094 add r3,r3,r4 | |
1095 mov r4,r5,ror#2 | |
1096 add r3,r3,r2 | |
1097 eor r4,r4,r5,ror#13 | |
1098 add r3,r3,r12 | |
1099 eor r4,r4,r5,ror#22 @ Sigma0(a) | |
1100 #if 23>=15 | |
1101 ldr r1,[sp,#9*4] @ from BODY_16_xx | |
1102 #endif | |
1103 orr r0,r5,r6 | |
1104 and r2,r5,r6 | |
1105 and r0,r0,r7 | |
1106 add r4,r4,r3 | |
1107 orr r0,r0,r2 @ Maj(a,b,c) | |
1108 add r8,r8,r3 | |
1109 add r4,r4,r0 | |
1110 @ ldr r1,[sp,#9*4] @ 24 | |
1111 ldr r12,[sp,#6*4] | |
1112 mov r0,r1,ror#7 | |
1113 ldr r3,[sp,#8*4] | |
1114 eor r0,r0,r1,ror#18 | |
1115 ldr r2,[sp,#1*4] | |
1116 eor r0,r0,r1,lsr#3 @ sigma0(X[i+1]) | |
1117 mov r1,r12,ror#17 | |
1118 add r3,r3,r0 | |
1119 eor r1,r1,r12,ror#19 | |
1120 add r3,r3,r2 | |
1121 eor r1,r1,r12,lsr#10 @ sigma1(X[i+14]) | |
1122 @ add r3,r3,r1 | |
1123 mov r0,r8,ror#6 | |
1124 ldr r12,[r14],#4 @ *K256++ | |
1125 eor r0,r0,r8,ror#11 | |
1126 eor r2,r9,r10 | |
1127 #if 24>=16 | |
1128 add r3,r3,r1 @ from BODY_16_xx | |
1129 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
1130 rev r3,r3 | |
1131 #endif | |
1132 #if 24==15 | |
1133 str r1,[sp,#17*4] @ leave room for r1 | |
1134 #endif | |
1135 eor r0,r0,r8,ror#25 @ Sigma1(e) | |
1136 and r2,r2,r8 | |
1137 str r3,[sp,#8*4] | |
1138 add r3,r3,r0 | |
1139 eor r2,r2,r10 @ Ch(e,f,g) | |
1140 add r3,r3,r11 | |
1141 mov r11,r4,ror#2 | |
1142 add r3,r3,r2 | |
1143 eor r11,r11,r4,ror#13 | |
1144 add r3,r3,r12 | |
1145 eor r11,r11,r4,ror#22 @ Sigma0(a) | |
1146 #if 24>=15 | |
1147 ldr r1,[sp,#10*4] @ from BODY_16_xx | |
1148 #endif | |
1149 orr r0,r4,r5 | |
1150 and r2,r4,r5 | |
1151 and r0,r0,r6 | |
1152 add r11,r11,r3 | |
1153 orr r0,r0,r2 @ Maj(a,b,c) | |
1154 add r7,r7,r3 | |
1155 add r11,r11,r0 | |
1156 @ ldr r1,[sp,#10*4] @ 25 | |
1157 ldr r12,[sp,#7*4] | |
1158 mov r0,r1,ror#7 | |
1159 ldr r3,[sp,#9*4] | |
1160 eor r0,r0,r1,ror#18 | |
1161 ldr r2,[sp,#2*4] | |
1162 eor r0,r0,r1,lsr#3 @ sigma0(X[i+1]) | |
1163 mov r1,r12,ror#17 | |
1164 add r3,r3,r0 | |
1165 eor r1,r1,r12,ror#19 | |
1166 add r3,r3,r2 | |
1167 eor r1,r1,r12,lsr#10 @ sigma1(X[i+14]) | |
1168 @ add r3,r3,r1 | |
1169 mov r0,r7,ror#6 | |
1170 ldr r12,[r14],#4 @ *K256++ | |
1171 eor r0,r0,r7,ror#11 | |
1172 eor r2,r8,r9 | |
1173 #if 25>=16 | |
1174 add r3,r3,r1 @ from BODY_16_xx | |
1175 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
1176 rev r3,r3 | |
1177 #endif | |
1178 #if 25==15 | |
1179 str r1,[sp,#17*4] @ leave room for r1 | |
1180 #endif | |
1181 eor r0,r0,r7,ror#25 @ Sigma1(e) | |
1182 and r2,r2,r7 | |
1183 str r3,[sp,#9*4] | |
1184 add r3,r3,r0 | |
1185 eor r2,r2,r9 @ Ch(e,f,g) | |
1186 add r3,r3,r10 | |
1187 mov r10,r11,ror#2 | |
1188 add r3,r3,r2 | |
1189 eor r10,r10,r11,ror#13 | |
1190 add r3,r3,r12 | |
1191 eor r10,r10,r11,ror#22 @ Sigma0(a) | |
1192 #if 25>=15 | |
1193 ldr r1,[sp,#11*4] @ from BODY_16_xx | |
1194 #endif | |
1195 orr r0,r11,r4 | |
1196 and r2,r11,r4 | |
1197 and r0,r0,r5 | |
1198 add r10,r10,r3 | |
1199 orr r0,r0,r2 @ Maj(a,b,c) | |
1200 add r6,r6,r3 | |
1201 add r10,r10,r0 | |
1202 @ ldr r1,[sp,#11*4] @ 26 | |
1203 ldr r12,[sp,#8*4] | |
1204 mov r0,r1,ror#7 | |
1205 ldr r3,[sp,#10*4] | |
1206 eor r0,r0,r1,ror#18 | |
1207 ldr r2,[sp,#3*4] | |
1208 eor r0,r0,r1,lsr#3 @ sigma0(X[i+1]) | |
1209 mov r1,r12,ror#17 | |
1210 add r3,r3,r0 | |
1211 eor r1,r1,r12,ror#19 | |
1212 add r3,r3,r2 | |
1213 eor r1,r1,r12,lsr#10 @ sigma1(X[i+14]) | |
1214 @ add r3,r3,r1 | |
1215 mov r0,r6,ror#6 | |
1216 ldr r12,[r14],#4 @ *K256++ | |
1217 eor r0,r0,r6,ror#11 | |
1218 eor r2,r7,r8 | |
1219 #if 26>=16 | |
1220 add r3,r3,r1 @ from BODY_16_xx | |
1221 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
1222 rev r3,r3 | |
1223 #endif | |
1224 #if 26==15 | |
1225 str r1,[sp,#17*4] @ leave room for r1 | |
1226 #endif | |
1227 eor r0,r0,r6,ror#25 @ Sigma1(e) | |
1228 and r2,r2,r6 | |
1229 str r3,[sp,#10*4] | |
1230 add r3,r3,r0 | |
1231 eor r2,r2,r8 @ Ch(e,f,g) | |
1232 add r3,r3,r9 | |
1233 mov r9,r10,ror#2 | |
1234 add r3,r3,r2 | |
1235 eor r9,r9,r10,ror#13 | |
1236 add r3,r3,r12 | |
1237 eor r9,r9,r10,ror#22 @ Sigma0(a) | |
1238 #if 26>=15 | |
1239 ldr r1,[sp,#12*4] @ from BODY_16_xx | |
1240 #endif | |
1241 orr r0,r10,r11 | |
1242 and r2,r10,r11 | |
1243 and r0,r0,r4 | |
1244 add r9,r9,r3 | |
1245 orr r0,r0,r2 @ Maj(a,b,c) | |
1246 add r5,r5,r3 | |
1247 add r9,r9,r0 | |
1248 @ ldr r1,[sp,#12*4] @ 27 | |
1249 ldr r12,[sp,#9*4] | |
1250 mov r0,r1,ror#7 | |
1251 ldr r3,[sp,#11*4] | |
1252 eor r0,r0,r1,ror#18 | |
1253 ldr r2,[sp,#4*4] | |
1254 eor r0,r0,r1,lsr#3 @ sigma0(X[i+1]) | |
1255 mov r1,r12,ror#17 | |
1256 add r3,r3,r0 | |
1257 eor r1,r1,r12,ror#19 | |
1258 add r3,r3,r2 | |
1259 eor r1,r1,r12,lsr#10 @ sigma1(X[i+14]) | |
1260 @ add r3,r3,r1 | |
1261 mov r0,r5,ror#6 | |
1262 ldr r12,[r14],#4 @ *K256++ | |
1263 eor r0,r0,r5,ror#11 | |
1264 eor r2,r6,r7 | |
1265 #if 27>=16 | |
1266 add r3,r3,r1 @ from BODY_16_xx | |
1267 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
1268 rev r3,r3 | |
1269 #endif | |
1270 #if 27==15 | |
1271 str r1,[sp,#17*4] @ leave room for r1 | |
1272 #endif | |
1273 eor r0,r0,r5,ror#25 @ Sigma1(e) | |
1274 and r2,r2,r5 | |
1275 str r3,[sp,#11*4] | |
1276 add r3,r3,r0 | |
1277 eor r2,r2,r7 @ Ch(e,f,g) | |
1278 add r3,r3,r8 | |
1279 mov r8,r9,ror#2 | |
1280 add r3,r3,r2 | |
1281 eor r8,r8,r9,ror#13 | |
1282 add r3,r3,r12 | |
1283 eor r8,r8,r9,ror#22 @ Sigma0(a) | |
1284 #if 27>=15 | |
1285 ldr r1,[sp,#13*4] @ from BODY_16_xx | |
1286 #endif | |
1287 orr r0,r9,r10 | |
1288 and r2,r9,r10 | |
1289 and r0,r0,r11 | |
1290 add r8,r8,r3 | |
1291 orr r0,r0,r2 @ Maj(a,b,c) | |
1292 add r4,r4,r3 | |
1293 add r8,r8,r0 | |
1294 @ ldr r1,[sp,#13*4] @ 28 | |
1295 ldr r12,[sp,#10*4] | |
1296 mov r0,r1,ror#7 | |
1297 ldr r3,[sp,#12*4] | |
1298 eor r0,r0,r1,ror#18 | |
1299 ldr r2,[sp,#5*4] | |
1300 eor r0,r0,r1,lsr#3 @ sigma0(X[i+1]) | |
1301 mov r1,r12,ror#17 | |
1302 add r3,r3,r0 | |
1303 eor r1,r1,r12,ror#19 | |
1304 add r3,r3,r2 | |
1305 eor r1,r1,r12,lsr#10 @ sigma1(X[i+14]) | |
1306 @ add r3,r3,r1 | |
1307 mov r0,r4,ror#6 | |
1308 ldr r12,[r14],#4 @ *K256++ | |
1309 eor r0,r0,r4,ror#11 | |
1310 eor r2,r5,r6 | |
1311 #if 28>=16 | |
1312 add r3,r3,r1 @ from BODY_16_xx | |
1313 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
1314 rev r3,r3 | |
1315 #endif | |
1316 #if 28==15 | |
1317 str r1,[sp,#17*4] @ leave room for r1 | |
1318 #endif | |
1319 eor r0,r0,r4,ror#25 @ Sigma1(e) | |
1320 and r2,r2,r4 | |
1321 str r3,[sp,#12*4] | |
1322 add r3,r3,r0 | |
1323 eor r2,r2,r6 @ Ch(e,f,g) | |
1324 add r3,r3,r7 | |
1325 mov r7,r8,ror#2 | |
1326 add r3,r3,r2 | |
1327 eor r7,r7,r8,ror#13 | |
1328 add r3,r3,r12 | |
1329 eor r7,r7,r8,ror#22 @ Sigma0(a) | |
1330 #if 28>=15 | |
1331 ldr r1,[sp,#14*4] @ from BODY_16_xx | |
1332 #endif | |
1333 orr r0,r8,r9 | |
1334 and r2,r8,r9 | |
1335 and r0,r0,r10 | |
1336 add r7,r7,r3 | |
1337 orr r0,r0,r2 @ Maj(a,b,c) | |
1338 add r11,r11,r3 | |
1339 add r7,r7,r0 | |
1340 @ ldr r1,[sp,#14*4] @ 29 | |
1341 ldr r12,[sp,#11*4] | |
1342 mov r0,r1,ror#7 | |
1343 ldr r3,[sp,#13*4] | |
1344 eor r0,r0,r1,ror#18 | |
1345 ldr r2,[sp,#6*4] | |
1346 eor r0,r0,r1,lsr#3 @ sigma0(X[i+1]) | |
1347 mov r1,r12,ror#17 | |
1348 add r3,r3,r0 | |
1349 eor r1,r1,r12,ror#19 | |
1350 add r3,r3,r2 | |
1351 eor r1,r1,r12,lsr#10 @ sigma1(X[i+14]) | |
1352 @ add r3,r3,r1 | |
1353 mov r0,r11,ror#6 | |
1354 ldr r12,[r14],#4 @ *K256++ | |
1355 eor r0,r0,r11,ror#11 | |
1356 eor r2,r4,r5 | |
1357 #if 29>=16 | |
1358 add r3,r3,r1 @ from BODY_16_xx | |
1359 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
1360 rev r3,r3 | |
1361 #endif | |
1362 #if 29==15 | |
1363 str r1,[sp,#17*4] @ leave room for r1 | |
1364 #endif | |
1365 eor r0,r0,r11,ror#25 @ Sigma1(e) | |
1366 and r2,r2,r11 | |
1367 str r3,[sp,#13*4] | |
1368 add r3,r3,r0 | |
1369 eor r2,r2,r5 @ Ch(e,f,g) | |
1370 add r3,r3,r6 | |
1371 mov r6,r7,ror#2 | |
1372 add r3,r3,r2 | |
1373 eor r6,r6,r7,ror#13 | |
1374 add r3,r3,r12 | |
1375 eor r6,r6,r7,ror#22 @ Sigma0(a) | |
1376 #if 29>=15 | |
1377 ldr r1,[sp,#15*4] @ from BODY_16_xx | |
1378 #endif | |
1379 orr r0,r7,r8 | |
1380 and r2,r7,r8 | |
1381 and r0,r0,r9 | |
1382 add r6,r6,r3 | |
1383 orr r0,r0,r2 @ Maj(a,b,c) | |
1384 add r10,r10,r3 | |
1385 add r6,r6,r0 | |
1386 @ ldr r1,[sp,#15*4] @ 30 | |
1387 ldr r12,[sp,#12*4] | |
1388 mov r0,r1,ror#7 | |
1389 ldr r3,[sp,#14*4] | |
1390 eor r0,r0,r1,ror#18 | |
1391 ldr r2,[sp,#7*4] | |
1392 eor r0,r0,r1,lsr#3 @ sigma0(X[i+1]) | |
1393 mov r1,r12,ror#17 | |
1394 add r3,r3,r0 | |
1395 eor r1,r1,r12,ror#19 | |
1396 add r3,r3,r2 | |
1397 eor r1,r1,r12,lsr#10 @ sigma1(X[i+14]) | |
1398 @ add r3,r3,r1 | |
1399 mov r0,r10,ror#6 | |
1400 ldr r12,[r14],#4 @ *K256++ | |
1401 eor r0,r0,r10,ror#11 | |
1402 eor r2,r11,r4 | |
1403 #if 30>=16 | |
1404 add r3,r3,r1 @ from BODY_16_xx | |
1405 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
1406 rev r3,r3 | |
1407 #endif | |
1408 #if 30==15 | |
1409 str r1,[sp,#17*4] @ leave room for r1 | |
1410 #endif | |
1411 eor r0,r0,r10,ror#25 @ Sigma1(e) | |
1412 and r2,r2,r10 | |
1413 str r3,[sp,#14*4] | |
1414 add r3,r3,r0 | |
1415 eor r2,r2,r4 @ Ch(e,f,g) | |
1416 add r3,r3,r5 | |
1417 mov r5,r6,ror#2 | |
1418 add r3,r3,r2 | |
1419 eor r5,r5,r6,ror#13 | |
1420 add r3,r3,r12 | |
1421 eor r5,r5,r6,ror#22 @ Sigma0(a) | |
1422 #if 30>=15 | |
1423 ldr r1,[sp,#0*4] @ from BODY_16_xx | |
1424 #endif | |
1425 orr r0,r6,r7 | |
1426 and r2,r6,r7 | |
1427 and r0,r0,r8 | |
1428 add r5,r5,r3 | |
1429 orr r0,r0,r2 @ Maj(a,b,c) | |
1430 add r9,r9,r3 | |
1431 add r5,r5,r0 | |
1432 @ ldr r1,[sp,#0*4] @ 31 | |
1433 ldr r12,[sp,#13*4] | |
1434 mov r0,r1,ror#7 | |
1435 ldr r3,[sp,#15*4] | |
1436 eor r0,r0,r1,ror#18 | |
1437 ldr r2,[sp,#8*4] | |
1438 eor r0,r0,r1,lsr#3 @ sigma0(X[i+1]) | |
1439 mov r1,r12,ror#17 | |
1440 add r3,r3,r0 | |
1441 eor r1,r1,r12,ror#19 | |
1442 add r3,r3,r2 | |
1443 eor r1,r1,r12,lsr#10 @ sigma1(X[i+14]) | |
1444 @ add r3,r3,r1 | |
1445 mov r0,r9,ror#6 | |
1446 ldr r12,[r14],#4 @ *K256++ | |
1447 eor r0,r0,r9,ror#11 | |
1448 eor r2,r10,r11 | |
1449 #if 31>=16 | |
1450 add r3,r3,r1 @ from BODY_16_xx | |
1451 #elif __ARM_ARCH__>=7 && defined(__ARMEL__) | |
1452 rev r3,r3 | |
1453 #endif | |
1454 #if 31==15 | |
1455 str r1,[sp,#17*4] @ leave room for r1 | |
1456 #endif | |
1457 eor r0,r0,r9,ror#25 @ Sigma1(e) | |
1458 and r2,r2,r9 | |
1459 str r3,[sp,#15*4] | |
1460 add r3,r3,r0 | |
1461 eor r2,r2,r11 @ Ch(e,f,g) | |
1462 add r3,r3,r4 | |
1463 mov r4,r5,ror#2 | |
1464 add r3,r3,r2 | |
1465 eor r4,r4,r5,ror#13 | |
1466 add r3,r3,r12 | |
1467 eor r4,r4,r5,ror#22 @ Sigma0(a) | |
1468 #if 31>=15 | |
1469 ldr r1,[sp,#1*4] @ from BODY_16_xx | |
1470 #endif | |
1471 orr r0,r5,r6 | |
1472 and r2,r5,r6 | |
1473 and r0,r0,r7 | |
1474 add r4,r4,r3 | |
1475 orr r0,r0,r2 @ Maj(a,b,c) | |
1476 add r8,r8,r3 | |
1477 add r4,r4,r0 | |
1478 and r12,r12,#0xff | |
1479 cmp r12,#0xf2 | |
1480 bne .Lrounds_16_xx | |
1481 | |
1482 ldr r3,[sp,#16*4] @ pull ctx | |
1483 ldr r0,[r3,#0] | |
1484 ldr r2,[r3,#4] | |
1485 ldr r12,[r3,#8] | |
1486 add r4,r4,r0 | |
1487 ldr r0,[r3,#12] | |
1488 add r5,r5,r2 | |
1489 ldr r2,[r3,#16] | |
1490 add r6,r6,r12 | |
1491 ldr r12,[r3,#20] | |
1492 add r7,r7,r0 | |
1493 ldr r0,[r3,#24] | |
1494 add r8,r8,r2 | |
1495 ldr r2,[r3,#28] | |
1496 add r9,r9,r12 | |
1497 ldr r1,[sp,#17*4] @ pull inp | |
1498 ldr r12,[sp,#18*4] @ pull inp+len | |
1499 add r10,r10,r0 | |
1500 add r11,r11,r2 | |
1501 stmia r3,{r4,r5,r6,r7,r8,r9,r10,r11} | |
1502 cmp r1,r12 | |
1503 sub r14,r14,#256 @ rewind Ktbl | |
1504 bne .Loop | |
1505 | |
1506 add sp,sp,#19*4 @ destroy frame | |
1507 #if __ARM_ARCH__>=5 | |
1508 ldmia sp!,{r4-r11,pc} | |
1509 #else | |
1510 ldmia sp!,{r4-r11,lr} | |
1511 tst lr,#1 | |
1512 moveq pc,lr @ be binary compatible with V4, yet | |
1513 .word 0xe12fff1e @ interoperable with Thumb ISA:-
) | |
1514 #endif | |
1515 .size sha256_block_data_order,.-sha256_block_data_order | |
1516 .asciz "SHA256 block transform for ARMv4, CRYPTOGAMS by <appro@openssl.org>" | |
1517 .align 2 | |
OLD | NEW |