blob: a2a92d7bf3e4d45a48380cb8df0bfa2f54551ac4 [file] [log] [blame]
Robert Sloanc9abfe42018-11-26 12:19:07 -08001// This file is generated from a similarly-named Perl script in the BoringSSL
2// source tree. Do not edit by hand.
3
Robert Sloan726e9d12018-09-11 11:45:04 -07004#if defined(__has_feature)
5#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM)
6#define OPENSSL_NO_ASM
7#endif
8#endif
9
10#if !defined(OPENSSL_NO_ASM)
11#if defined(BORINGSSL_PREFIX)
12#include <boringssl_prefix_symbols_asm.h>
13#endif
Robert Sloan8ff03552017-06-14 12:40:58 -070014// Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved.
15//
16// Licensed under the OpenSSL license (the "License"). You may not use
17// this file except in compliance with the License. You can obtain a copy
18// in the file LICENSE in the source distribution or at
19// https://www.openssl.org/source/license.html
20
21// ====================================================================
22// Written by Andy Polyakov <appro@openssl.org> for the OpenSSL
23// project. The module is, however, dual licensed under OpenSSL and
24// CRYPTOGAMS licenses depending on where you obtain it. For further
25// details see http://www.openssl.org/~appro/cryptogams/.
26//
27// Permission to use under GPLv2 terms is granted.
28// ====================================================================
29//
30// SHA256/512 for ARMv8.
31//
32// Performance in cycles per processed byte and improvement coefficient
33// over code generated with "default" compiler:
34//
35// SHA256-hw SHA256(*) SHA512
36// Apple A7 1.97 10.5 (+33%) 6.73 (-1%(**))
37// Cortex-A53 2.38 15.5 (+115%) 10.0 (+150%(***))
38// Cortex-A57 2.31 11.6 (+86%) 7.51 (+260%(***))
39// Denver 2.01 10.5 (+26%) 6.70 (+8%)
40// X-Gene 20.0 (+100%) 12.8 (+300%(***))
41// Mongoose 2.36 13.0 (+50%) 8.36 (+33%)
42//
43// (*) Software SHA256 results are of lesser relevance, presented
44// mostly for informational purposes.
45// (**) The result is a trade-off: it's possible to improve it by
46// 10% (or by 1 cycle per round), but at the cost of 20% loss
47// on Cortex-A53 (or by 4 cycles per round).
48// (***) Super-impressive coefficients over gcc-generated code are
49// indication of some compiler "pathology", most notably code
50// generated with -mgeneral-regs-only is significanty faster
51// and the gap is only 40-90%.
52
53#ifndef __KERNEL__
54# include <openssl/arm_arch.h>
55#endif
56
57.text
58
59
60.globl _sha512_block_data_order
61.private_extern _sha512_block_data_order
62
63.align 6
64_sha512_block_data_order:
65 stp x29,x30,[sp,#-128]!
66 add x29,sp,#0
67
68 stp x19,x20,[sp,#16]
69 stp x21,x22,[sp,#32]
70 stp x23,x24,[sp,#48]
71 stp x25,x26,[sp,#64]
72 stp x27,x28,[sp,#80]
73 sub sp,sp,#4*8
74
75 ldp x20,x21,[x0] // load context
76 ldp x22,x23,[x0,#2*8]
77 ldp x24,x25,[x0,#4*8]
78 add x2,x1,x2,lsl#7 // end of input
79 ldp x26,x27,[x0,#6*8]
Robert Sloanc9abfe42018-11-26 12:19:07 -080080 adrp x30,LK512@PAGE
81 add x30,x30,LK512@PAGEOFF
Robert Sloan8ff03552017-06-14 12:40:58 -070082 stp x0,x2,[x29,#96]
83
84Loop:
85 ldp x3,x4,[x1],#2*8
86 ldr x19,[x30],#8 // *K++
87 eor x28,x21,x22 // magic seed
88 str x1,[x29,#112]
89#ifndef __ARMEB__
90 rev x3,x3 // 0
91#endif
92 ror x16,x24,#14
93 add x27,x27,x19 // h+=K[i]
94 eor x6,x24,x24,ror#23
95 and x17,x25,x24
96 bic x19,x26,x24
97 add x27,x27,x3 // h+=X[i]
98 orr x17,x17,x19 // Ch(e,f,g)
99 eor x19,x20,x21 // a^b, b^c in next round
100 eor x16,x16,x6,ror#18 // Sigma1(e)
101 ror x6,x20,#28
102 add x27,x27,x17 // h+=Ch(e,f,g)
103 eor x17,x20,x20,ror#5
104 add x27,x27,x16 // h+=Sigma1(e)
105 and x28,x28,x19 // (b^c)&=(a^b)
106 add x23,x23,x27 // d+=h
107 eor x28,x28,x21 // Maj(a,b,c)
108 eor x17,x6,x17,ror#34 // Sigma0(a)
109 add x27,x27,x28 // h+=Maj(a,b,c)
110 ldr x28,[x30],#8 // *K++, x19 in next round
111 //add x27,x27,x17 // h+=Sigma0(a)
112#ifndef __ARMEB__
113 rev x4,x4 // 1
114#endif
115 ldp x5,x6,[x1],#2*8
116 add x27,x27,x17 // h+=Sigma0(a)
117 ror x16,x23,#14
118 add x26,x26,x28 // h+=K[i]
119 eor x7,x23,x23,ror#23
120 and x17,x24,x23
121 bic x28,x25,x23
122 add x26,x26,x4 // h+=X[i]
123 orr x17,x17,x28 // Ch(e,f,g)
124 eor x28,x27,x20 // a^b, b^c in next round
125 eor x16,x16,x7,ror#18 // Sigma1(e)
126 ror x7,x27,#28
127 add x26,x26,x17 // h+=Ch(e,f,g)
128 eor x17,x27,x27,ror#5
129 add x26,x26,x16 // h+=Sigma1(e)
130 and x19,x19,x28 // (b^c)&=(a^b)
131 add x22,x22,x26 // d+=h
132 eor x19,x19,x20 // Maj(a,b,c)
133 eor x17,x7,x17,ror#34 // Sigma0(a)
134 add x26,x26,x19 // h+=Maj(a,b,c)
135 ldr x19,[x30],#8 // *K++, x28 in next round
136 //add x26,x26,x17 // h+=Sigma0(a)
137#ifndef __ARMEB__
138 rev x5,x5 // 2
139#endif
140 add x26,x26,x17 // h+=Sigma0(a)
141 ror x16,x22,#14
142 add x25,x25,x19 // h+=K[i]
143 eor x8,x22,x22,ror#23
144 and x17,x23,x22
145 bic x19,x24,x22
146 add x25,x25,x5 // h+=X[i]
147 orr x17,x17,x19 // Ch(e,f,g)
148 eor x19,x26,x27 // a^b, b^c in next round
149 eor x16,x16,x8,ror#18 // Sigma1(e)
150 ror x8,x26,#28
151 add x25,x25,x17 // h+=Ch(e,f,g)
152 eor x17,x26,x26,ror#5
153 add x25,x25,x16 // h+=Sigma1(e)
154 and x28,x28,x19 // (b^c)&=(a^b)
155 add x21,x21,x25 // d+=h
156 eor x28,x28,x27 // Maj(a,b,c)
157 eor x17,x8,x17,ror#34 // Sigma0(a)
158 add x25,x25,x28 // h+=Maj(a,b,c)
159 ldr x28,[x30],#8 // *K++, x19 in next round
160 //add x25,x25,x17 // h+=Sigma0(a)
161#ifndef __ARMEB__
162 rev x6,x6 // 3
163#endif
164 ldp x7,x8,[x1],#2*8
165 add x25,x25,x17 // h+=Sigma0(a)
166 ror x16,x21,#14
167 add x24,x24,x28 // h+=K[i]
168 eor x9,x21,x21,ror#23
169 and x17,x22,x21
170 bic x28,x23,x21
171 add x24,x24,x6 // h+=X[i]
172 orr x17,x17,x28 // Ch(e,f,g)
173 eor x28,x25,x26 // a^b, b^c in next round
174 eor x16,x16,x9,ror#18 // Sigma1(e)
175 ror x9,x25,#28
176 add x24,x24,x17 // h+=Ch(e,f,g)
177 eor x17,x25,x25,ror#5
178 add x24,x24,x16 // h+=Sigma1(e)
179 and x19,x19,x28 // (b^c)&=(a^b)
180 add x20,x20,x24 // d+=h
181 eor x19,x19,x26 // Maj(a,b,c)
182 eor x17,x9,x17,ror#34 // Sigma0(a)
183 add x24,x24,x19 // h+=Maj(a,b,c)
184 ldr x19,[x30],#8 // *K++, x28 in next round
185 //add x24,x24,x17 // h+=Sigma0(a)
186#ifndef __ARMEB__
187 rev x7,x7 // 4
188#endif
189 add x24,x24,x17 // h+=Sigma0(a)
190 ror x16,x20,#14
191 add x23,x23,x19 // h+=K[i]
192 eor x10,x20,x20,ror#23
193 and x17,x21,x20
194 bic x19,x22,x20
195 add x23,x23,x7 // h+=X[i]
196 orr x17,x17,x19 // Ch(e,f,g)
197 eor x19,x24,x25 // a^b, b^c in next round
198 eor x16,x16,x10,ror#18 // Sigma1(e)
199 ror x10,x24,#28
200 add x23,x23,x17 // h+=Ch(e,f,g)
201 eor x17,x24,x24,ror#5
202 add x23,x23,x16 // h+=Sigma1(e)
203 and x28,x28,x19 // (b^c)&=(a^b)
204 add x27,x27,x23 // d+=h
205 eor x28,x28,x25 // Maj(a,b,c)
206 eor x17,x10,x17,ror#34 // Sigma0(a)
207 add x23,x23,x28 // h+=Maj(a,b,c)
208 ldr x28,[x30],#8 // *K++, x19 in next round
209 //add x23,x23,x17 // h+=Sigma0(a)
210#ifndef __ARMEB__
211 rev x8,x8 // 5
212#endif
213 ldp x9,x10,[x1],#2*8
214 add x23,x23,x17 // h+=Sigma0(a)
215 ror x16,x27,#14
216 add x22,x22,x28 // h+=K[i]
217 eor x11,x27,x27,ror#23
218 and x17,x20,x27
219 bic x28,x21,x27
220 add x22,x22,x8 // h+=X[i]
221 orr x17,x17,x28 // Ch(e,f,g)
222 eor x28,x23,x24 // a^b, b^c in next round
223 eor x16,x16,x11,ror#18 // Sigma1(e)
224 ror x11,x23,#28
225 add x22,x22,x17 // h+=Ch(e,f,g)
226 eor x17,x23,x23,ror#5
227 add x22,x22,x16 // h+=Sigma1(e)
228 and x19,x19,x28 // (b^c)&=(a^b)
229 add x26,x26,x22 // d+=h
230 eor x19,x19,x24 // Maj(a,b,c)
231 eor x17,x11,x17,ror#34 // Sigma0(a)
232 add x22,x22,x19 // h+=Maj(a,b,c)
233 ldr x19,[x30],#8 // *K++, x28 in next round
234 //add x22,x22,x17 // h+=Sigma0(a)
235#ifndef __ARMEB__
236 rev x9,x9 // 6
237#endif
238 add x22,x22,x17 // h+=Sigma0(a)
239 ror x16,x26,#14
240 add x21,x21,x19 // h+=K[i]
241 eor x12,x26,x26,ror#23
242 and x17,x27,x26
243 bic x19,x20,x26
244 add x21,x21,x9 // h+=X[i]
245 orr x17,x17,x19 // Ch(e,f,g)
246 eor x19,x22,x23 // a^b, b^c in next round
247 eor x16,x16,x12,ror#18 // Sigma1(e)
248 ror x12,x22,#28
249 add x21,x21,x17 // h+=Ch(e,f,g)
250 eor x17,x22,x22,ror#5
251 add x21,x21,x16 // h+=Sigma1(e)
252 and x28,x28,x19 // (b^c)&=(a^b)
253 add x25,x25,x21 // d+=h
254 eor x28,x28,x23 // Maj(a,b,c)
255 eor x17,x12,x17,ror#34 // Sigma0(a)
256 add x21,x21,x28 // h+=Maj(a,b,c)
257 ldr x28,[x30],#8 // *K++, x19 in next round
258 //add x21,x21,x17 // h+=Sigma0(a)
259#ifndef __ARMEB__
260 rev x10,x10 // 7
261#endif
262 ldp x11,x12,[x1],#2*8
263 add x21,x21,x17 // h+=Sigma0(a)
264 ror x16,x25,#14
265 add x20,x20,x28 // h+=K[i]
266 eor x13,x25,x25,ror#23
267 and x17,x26,x25
268 bic x28,x27,x25
269 add x20,x20,x10 // h+=X[i]
270 orr x17,x17,x28 // Ch(e,f,g)
271 eor x28,x21,x22 // a^b, b^c in next round
272 eor x16,x16,x13,ror#18 // Sigma1(e)
273 ror x13,x21,#28
274 add x20,x20,x17 // h+=Ch(e,f,g)
275 eor x17,x21,x21,ror#5
276 add x20,x20,x16 // h+=Sigma1(e)
277 and x19,x19,x28 // (b^c)&=(a^b)
278 add x24,x24,x20 // d+=h
279 eor x19,x19,x22 // Maj(a,b,c)
280 eor x17,x13,x17,ror#34 // Sigma0(a)
281 add x20,x20,x19 // h+=Maj(a,b,c)
282 ldr x19,[x30],#8 // *K++, x28 in next round
283 //add x20,x20,x17 // h+=Sigma0(a)
284#ifndef __ARMEB__
285 rev x11,x11 // 8
286#endif
287 add x20,x20,x17 // h+=Sigma0(a)
288 ror x16,x24,#14
289 add x27,x27,x19 // h+=K[i]
290 eor x14,x24,x24,ror#23
291 and x17,x25,x24
292 bic x19,x26,x24
293 add x27,x27,x11 // h+=X[i]
294 orr x17,x17,x19 // Ch(e,f,g)
295 eor x19,x20,x21 // a^b, b^c in next round
296 eor x16,x16,x14,ror#18 // Sigma1(e)
297 ror x14,x20,#28
298 add x27,x27,x17 // h+=Ch(e,f,g)
299 eor x17,x20,x20,ror#5
300 add x27,x27,x16 // h+=Sigma1(e)
301 and x28,x28,x19 // (b^c)&=(a^b)
302 add x23,x23,x27 // d+=h
303 eor x28,x28,x21 // Maj(a,b,c)
304 eor x17,x14,x17,ror#34 // Sigma0(a)
305 add x27,x27,x28 // h+=Maj(a,b,c)
306 ldr x28,[x30],#8 // *K++, x19 in next round
307 //add x27,x27,x17 // h+=Sigma0(a)
308#ifndef __ARMEB__
309 rev x12,x12 // 9
310#endif
311 ldp x13,x14,[x1],#2*8
312 add x27,x27,x17 // h+=Sigma0(a)
313 ror x16,x23,#14
314 add x26,x26,x28 // h+=K[i]
315 eor x15,x23,x23,ror#23
316 and x17,x24,x23
317 bic x28,x25,x23
318 add x26,x26,x12 // h+=X[i]
319 orr x17,x17,x28 // Ch(e,f,g)
320 eor x28,x27,x20 // a^b, b^c in next round
321 eor x16,x16,x15,ror#18 // Sigma1(e)
322 ror x15,x27,#28
323 add x26,x26,x17 // h+=Ch(e,f,g)
324 eor x17,x27,x27,ror#5
325 add x26,x26,x16 // h+=Sigma1(e)
326 and x19,x19,x28 // (b^c)&=(a^b)
327 add x22,x22,x26 // d+=h
328 eor x19,x19,x20 // Maj(a,b,c)
329 eor x17,x15,x17,ror#34 // Sigma0(a)
330 add x26,x26,x19 // h+=Maj(a,b,c)
331 ldr x19,[x30],#8 // *K++, x28 in next round
332 //add x26,x26,x17 // h+=Sigma0(a)
333#ifndef __ARMEB__
334 rev x13,x13 // 10
335#endif
336 add x26,x26,x17 // h+=Sigma0(a)
337 ror x16,x22,#14
338 add x25,x25,x19 // h+=K[i]
339 eor x0,x22,x22,ror#23
340 and x17,x23,x22
341 bic x19,x24,x22
342 add x25,x25,x13 // h+=X[i]
343 orr x17,x17,x19 // Ch(e,f,g)
344 eor x19,x26,x27 // a^b, b^c in next round
345 eor x16,x16,x0,ror#18 // Sigma1(e)
346 ror x0,x26,#28
347 add x25,x25,x17 // h+=Ch(e,f,g)
348 eor x17,x26,x26,ror#5
349 add x25,x25,x16 // h+=Sigma1(e)
350 and x28,x28,x19 // (b^c)&=(a^b)
351 add x21,x21,x25 // d+=h
352 eor x28,x28,x27 // Maj(a,b,c)
353 eor x17,x0,x17,ror#34 // Sigma0(a)
354 add x25,x25,x28 // h+=Maj(a,b,c)
355 ldr x28,[x30],#8 // *K++, x19 in next round
356 //add x25,x25,x17 // h+=Sigma0(a)
357#ifndef __ARMEB__
358 rev x14,x14 // 11
359#endif
360 ldp x15,x0,[x1],#2*8
361 add x25,x25,x17 // h+=Sigma0(a)
362 str x6,[sp,#24]
363 ror x16,x21,#14
364 add x24,x24,x28 // h+=K[i]
365 eor x6,x21,x21,ror#23
366 and x17,x22,x21
367 bic x28,x23,x21
368 add x24,x24,x14 // h+=X[i]
369 orr x17,x17,x28 // Ch(e,f,g)
370 eor x28,x25,x26 // a^b, b^c in next round
371 eor x16,x16,x6,ror#18 // Sigma1(e)
372 ror x6,x25,#28
373 add x24,x24,x17 // h+=Ch(e,f,g)
374 eor x17,x25,x25,ror#5
375 add x24,x24,x16 // h+=Sigma1(e)
376 and x19,x19,x28 // (b^c)&=(a^b)
377 add x20,x20,x24 // d+=h
378 eor x19,x19,x26 // Maj(a,b,c)
379 eor x17,x6,x17,ror#34 // Sigma0(a)
380 add x24,x24,x19 // h+=Maj(a,b,c)
381 ldr x19,[x30],#8 // *K++, x28 in next round
382 //add x24,x24,x17 // h+=Sigma0(a)
383#ifndef __ARMEB__
384 rev x15,x15 // 12
385#endif
386 add x24,x24,x17 // h+=Sigma0(a)
387 str x7,[sp,#0]
388 ror x16,x20,#14
389 add x23,x23,x19 // h+=K[i]
390 eor x7,x20,x20,ror#23
391 and x17,x21,x20
392 bic x19,x22,x20
393 add x23,x23,x15 // h+=X[i]
394 orr x17,x17,x19 // Ch(e,f,g)
395 eor x19,x24,x25 // a^b, b^c in next round
396 eor x16,x16,x7,ror#18 // Sigma1(e)
397 ror x7,x24,#28
398 add x23,x23,x17 // h+=Ch(e,f,g)
399 eor x17,x24,x24,ror#5
400 add x23,x23,x16 // h+=Sigma1(e)
401 and x28,x28,x19 // (b^c)&=(a^b)
402 add x27,x27,x23 // d+=h
403 eor x28,x28,x25 // Maj(a,b,c)
404 eor x17,x7,x17,ror#34 // Sigma0(a)
405 add x23,x23,x28 // h+=Maj(a,b,c)
406 ldr x28,[x30],#8 // *K++, x19 in next round
407 //add x23,x23,x17 // h+=Sigma0(a)
408#ifndef __ARMEB__
409 rev x0,x0 // 13
410#endif
411 ldp x1,x2,[x1]
412 add x23,x23,x17 // h+=Sigma0(a)
413 str x8,[sp,#8]
414 ror x16,x27,#14
415 add x22,x22,x28 // h+=K[i]
416 eor x8,x27,x27,ror#23
417 and x17,x20,x27
418 bic x28,x21,x27
419 add x22,x22,x0 // h+=X[i]
420 orr x17,x17,x28 // Ch(e,f,g)
421 eor x28,x23,x24 // a^b, b^c in next round
422 eor x16,x16,x8,ror#18 // Sigma1(e)
423 ror x8,x23,#28
424 add x22,x22,x17 // h+=Ch(e,f,g)
425 eor x17,x23,x23,ror#5
426 add x22,x22,x16 // h+=Sigma1(e)
427 and x19,x19,x28 // (b^c)&=(a^b)
428 add x26,x26,x22 // d+=h
429 eor x19,x19,x24 // Maj(a,b,c)
430 eor x17,x8,x17,ror#34 // Sigma0(a)
431 add x22,x22,x19 // h+=Maj(a,b,c)
432 ldr x19,[x30],#8 // *K++, x28 in next round
433 //add x22,x22,x17 // h+=Sigma0(a)
434#ifndef __ARMEB__
435 rev x1,x1 // 14
436#endif
437 ldr x6,[sp,#24]
438 add x22,x22,x17 // h+=Sigma0(a)
439 str x9,[sp,#16]
440 ror x16,x26,#14
441 add x21,x21,x19 // h+=K[i]
442 eor x9,x26,x26,ror#23
443 and x17,x27,x26
444 bic x19,x20,x26
445 add x21,x21,x1 // h+=X[i]
446 orr x17,x17,x19 // Ch(e,f,g)
447 eor x19,x22,x23 // a^b, b^c in next round
448 eor x16,x16,x9,ror#18 // Sigma1(e)
449 ror x9,x22,#28
450 add x21,x21,x17 // h+=Ch(e,f,g)
451 eor x17,x22,x22,ror#5
452 add x21,x21,x16 // h+=Sigma1(e)
453 and x28,x28,x19 // (b^c)&=(a^b)
454 add x25,x25,x21 // d+=h
455 eor x28,x28,x23 // Maj(a,b,c)
456 eor x17,x9,x17,ror#34 // Sigma0(a)
457 add x21,x21,x28 // h+=Maj(a,b,c)
458 ldr x28,[x30],#8 // *K++, x19 in next round
459 //add x21,x21,x17 // h+=Sigma0(a)
460#ifndef __ARMEB__
461 rev x2,x2 // 15
462#endif
463 ldr x7,[sp,#0]
464 add x21,x21,x17 // h+=Sigma0(a)
465 str x10,[sp,#24]
466 ror x16,x25,#14
467 add x20,x20,x28 // h+=K[i]
468 ror x9,x4,#1
469 and x17,x26,x25
470 ror x8,x1,#19
471 bic x28,x27,x25
472 ror x10,x21,#28
473 add x20,x20,x2 // h+=X[i]
474 eor x16,x16,x25,ror#18
475 eor x9,x9,x4,ror#8
476 orr x17,x17,x28 // Ch(e,f,g)
477 eor x28,x21,x22 // a^b, b^c in next round
478 eor x16,x16,x25,ror#41 // Sigma1(e)
479 eor x10,x10,x21,ror#34
480 add x20,x20,x17 // h+=Ch(e,f,g)
481 and x19,x19,x28 // (b^c)&=(a^b)
482 eor x8,x8,x1,ror#61
483 eor x9,x9,x4,lsr#7 // sigma0(X[i+1])
484 add x20,x20,x16 // h+=Sigma1(e)
485 eor x19,x19,x22 // Maj(a,b,c)
486 eor x17,x10,x21,ror#39 // Sigma0(a)
487 eor x8,x8,x1,lsr#6 // sigma1(X[i+14])
488 add x3,x3,x12
489 add x24,x24,x20 // d+=h
490 add x20,x20,x19 // h+=Maj(a,b,c)
491 ldr x19,[x30],#8 // *K++, x28 in next round
492 add x3,x3,x9
493 add x20,x20,x17 // h+=Sigma0(a)
494 add x3,x3,x8
495Loop_16_xx:
496 ldr x8,[sp,#8]
497 str x11,[sp,#0]
498 ror x16,x24,#14
499 add x27,x27,x19 // h+=K[i]
500 ror x10,x5,#1
501 and x17,x25,x24
502 ror x9,x2,#19
503 bic x19,x26,x24
504 ror x11,x20,#28
505 add x27,x27,x3 // h+=X[i]
506 eor x16,x16,x24,ror#18
507 eor x10,x10,x5,ror#8
508 orr x17,x17,x19 // Ch(e,f,g)
509 eor x19,x20,x21 // a^b, b^c in next round
510 eor x16,x16,x24,ror#41 // Sigma1(e)
511 eor x11,x11,x20,ror#34
512 add x27,x27,x17 // h+=Ch(e,f,g)
513 and x28,x28,x19 // (b^c)&=(a^b)
514 eor x9,x9,x2,ror#61
515 eor x10,x10,x5,lsr#7 // sigma0(X[i+1])
516 add x27,x27,x16 // h+=Sigma1(e)
517 eor x28,x28,x21 // Maj(a,b,c)
518 eor x17,x11,x20,ror#39 // Sigma0(a)
519 eor x9,x9,x2,lsr#6 // sigma1(X[i+14])
520 add x4,x4,x13
521 add x23,x23,x27 // d+=h
522 add x27,x27,x28 // h+=Maj(a,b,c)
523 ldr x28,[x30],#8 // *K++, x19 in next round
524 add x4,x4,x10
525 add x27,x27,x17 // h+=Sigma0(a)
526 add x4,x4,x9
527 ldr x9,[sp,#16]
528 str x12,[sp,#8]
529 ror x16,x23,#14
530 add x26,x26,x28 // h+=K[i]
531 ror x11,x6,#1
532 and x17,x24,x23
533 ror x10,x3,#19
534 bic x28,x25,x23
535 ror x12,x27,#28
536 add x26,x26,x4 // h+=X[i]
537 eor x16,x16,x23,ror#18
538 eor x11,x11,x6,ror#8
539 orr x17,x17,x28 // Ch(e,f,g)
540 eor x28,x27,x20 // a^b, b^c in next round
541 eor x16,x16,x23,ror#41 // Sigma1(e)
542 eor x12,x12,x27,ror#34
543 add x26,x26,x17 // h+=Ch(e,f,g)
544 and x19,x19,x28 // (b^c)&=(a^b)
545 eor x10,x10,x3,ror#61
546 eor x11,x11,x6,lsr#7 // sigma0(X[i+1])
547 add x26,x26,x16 // h+=Sigma1(e)
548 eor x19,x19,x20 // Maj(a,b,c)
549 eor x17,x12,x27,ror#39 // Sigma0(a)
550 eor x10,x10,x3,lsr#6 // sigma1(X[i+14])
551 add x5,x5,x14
552 add x22,x22,x26 // d+=h
553 add x26,x26,x19 // h+=Maj(a,b,c)
554 ldr x19,[x30],#8 // *K++, x28 in next round
555 add x5,x5,x11
556 add x26,x26,x17 // h+=Sigma0(a)
557 add x5,x5,x10
558 ldr x10,[sp,#24]
559 str x13,[sp,#16]
560 ror x16,x22,#14
561 add x25,x25,x19 // h+=K[i]
562 ror x12,x7,#1
563 and x17,x23,x22
564 ror x11,x4,#19
565 bic x19,x24,x22
566 ror x13,x26,#28
567 add x25,x25,x5 // h+=X[i]
568 eor x16,x16,x22,ror#18
569 eor x12,x12,x7,ror#8
570 orr x17,x17,x19 // Ch(e,f,g)
571 eor x19,x26,x27 // a^b, b^c in next round
572 eor x16,x16,x22,ror#41 // Sigma1(e)
573 eor x13,x13,x26,ror#34
574 add x25,x25,x17 // h+=Ch(e,f,g)
575 and x28,x28,x19 // (b^c)&=(a^b)
576 eor x11,x11,x4,ror#61
577 eor x12,x12,x7,lsr#7 // sigma0(X[i+1])
578 add x25,x25,x16 // h+=Sigma1(e)
579 eor x28,x28,x27 // Maj(a,b,c)
580 eor x17,x13,x26,ror#39 // Sigma0(a)
581 eor x11,x11,x4,lsr#6 // sigma1(X[i+14])
582 add x6,x6,x15
583 add x21,x21,x25 // d+=h
584 add x25,x25,x28 // h+=Maj(a,b,c)
585 ldr x28,[x30],#8 // *K++, x19 in next round
586 add x6,x6,x12
587 add x25,x25,x17 // h+=Sigma0(a)
588 add x6,x6,x11
589 ldr x11,[sp,#0]
590 str x14,[sp,#24]
591 ror x16,x21,#14
592 add x24,x24,x28 // h+=K[i]
593 ror x13,x8,#1
594 and x17,x22,x21
595 ror x12,x5,#19
596 bic x28,x23,x21
597 ror x14,x25,#28
598 add x24,x24,x6 // h+=X[i]
599 eor x16,x16,x21,ror#18
600 eor x13,x13,x8,ror#8
601 orr x17,x17,x28 // Ch(e,f,g)
602 eor x28,x25,x26 // a^b, b^c in next round
603 eor x16,x16,x21,ror#41 // Sigma1(e)
604 eor x14,x14,x25,ror#34
605 add x24,x24,x17 // h+=Ch(e,f,g)
606 and x19,x19,x28 // (b^c)&=(a^b)
607 eor x12,x12,x5,ror#61
608 eor x13,x13,x8,lsr#7 // sigma0(X[i+1])
609 add x24,x24,x16 // h+=Sigma1(e)
610 eor x19,x19,x26 // Maj(a,b,c)
611 eor x17,x14,x25,ror#39 // Sigma0(a)
612 eor x12,x12,x5,lsr#6 // sigma1(X[i+14])
613 add x7,x7,x0
614 add x20,x20,x24 // d+=h
615 add x24,x24,x19 // h+=Maj(a,b,c)
616 ldr x19,[x30],#8 // *K++, x28 in next round
617 add x7,x7,x13
618 add x24,x24,x17 // h+=Sigma0(a)
619 add x7,x7,x12
620 ldr x12,[sp,#8]
621 str x15,[sp,#0]
622 ror x16,x20,#14
623 add x23,x23,x19 // h+=K[i]
624 ror x14,x9,#1
625 and x17,x21,x20
626 ror x13,x6,#19
627 bic x19,x22,x20
628 ror x15,x24,#28
629 add x23,x23,x7 // h+=X[i]
630 eor x16,x16,x20,ror#18
631 eor x14,x14,x9,ror#8
632 orr x17,x17,x19 // Ch(e,f,g)
633 eor x19,x24,x25 // a^b, b^c in next round
634 eor x16,x16,x20,ror#41 // Sigma1(e)
635 eor x15,x15,x24,ror#34
636 add x23,x23,x17 // h+=Ch(e,f,g)
637 and x28,x28,x19 // (b^c)&=(a^b)
638 eor x13,x13,x6,ror#61
639 eor x14,x14,x9,lsr#7 // sigma0(X[i+1])
640 add x23,x23,x16 // h+=Sigma1(e)
641 eor x28,x28,x25 // Maj(a,b,c)
642 eor x17,x15,x24,ror#39 // Sigma0(a)
643 eor x13,x13,x6,lsr#6 // sigma1(X[i+14])
644 add x8,x8,x1
645 add x27,x27,x23 // d+=h
646 add x23,x23,x28 // h+=Maj(a,b,c)
647 ldr x28,[x30],#8 // *K++, x19 in next round
648 add x8,x8,x14
649 add x23,x23,x17 // h+=Sigma0(a)
650 add x8,x8,x13
651 ldr x13,[sp,#16]
652 str x0,[sp,#8]
653 ror x16,x27,#14
654 add x22,x22,x28 // h+=K[i]
655 ror x15,x10,#1
656 and x17,x20,x27
657 ror x14,x7,#19
658 bic x28,x21,x27
659 ror x0,x23,#28
660 add x22,x22,x8 // h+=X[i]
661 eor x16,x16,x27,ror#18
662 eor x15,x15,x10,ror#8
663 orr x17,x17,x28 // Ch(e,f,g)
664 eor x28,x23,x24 // a^b, b^c in next round
665 eor x16,x16,x27,ror#41 // Sigma1(e)
666 eor x0,x0,x23,ror#34
667 add x22,x22,x17 // h+=Ch(e,f,g)
668 and x19,x19,x28 // (b^c)&=(a^b)
669 eor x14,x14,x7,ror#61
670 eor x15,x15,x10,lsr#7 // sigma0(X[i+1])
671 add x22,x22,x16 // h+=Sigma1(e)
672 eor x19,x19,x24 // Maj(a,b,c)
673 eor x17,x0,x23,ror#39 // Sigma0(a)
674 eor x14,x14,x7,lsr#6 // sigma1(X[i+14])
675 add x9,x9,x2
676 add x26,x26,x22 // d+=h
677 add x22,x22,x19 // h+=Maj(a,b,c)
678 ldr x19,[x30],#8 // *K++, x28 in next round
679 add x9,x9,x15
680 add x22,x22,x17 // h+=Sigma0(a)
681 add x9,x9,x14
682 ldr x14,[sp,#24]
683 str x1,[sp,#16]
684 ror x16,x26,#14
685 add x21,x21,x19 // h+=K[i]
686 ror x0,x11,#1
687 and x17,x27,x26
688 ror x15,x8,#19
689 bic x19,x20,x26
690 ror x1,x22,#28
691 add x21,x21,x9 // h+=X[i]
692 eor x16,x16,x26,ror#18
693 eor x0,x0,x11,ror#8
694 orr x17,x17,x19 // Ch(e,f,g)
695 eor x19,x22,x23 // a^b, b^c in next round
696 eor x16,x16,x26,ror#41 // Sigma1(e)
697 eor x1,x1,x22,ror#34
698 add x21,x21,x17 // h+=Ch(e,f,g)
699 and x28,x28,x19 // (b^c)&=(a^b)
700 eor x15,x15,x8,ror#61
701 eor x0,x0,x11,lsr#7 // sigma0(X[i+1])
702 add x21,x21,x16 // h+=Sigma1(e)
703 eor x28,x28,x23 // Maj(a,b,c)
704 eor x17,x1,x22,ror#39 // Sigma0(a)
705 eor x15,x15,x8,lsr#6 // sigma1(X[i+14])
706 add x10,x10,x3
707 add x25,x25,x21 // d+=h
708 add x21,x21,x28 // h+=Maj(a,b,c)
709 ldr x28,[x30],#8 // *K++, x19 in next round
710 add x10,x10,x0
711 add x21,x21,x17 // h+=Sigma0(a)
712 add x10,x10,x15
713 ldr x15,[sp,#0]
714 str x2,[sp,#24]
715 ror x16,x25,#14
716 add x20,x20,x28 // h+=K[i]
717 ror x1,x12,#1
718 and x17,x26,x25
719 ror x0,x9,#19
720 bic x28,x27,x25
721 ror x2,x21,#28
722 add x20,x20,x10 // h+=X[i]
723 eor x16,x16,x25,ror#18
724 eor x1,x1,x12,ror#8
725 orr x17,x17,x28 // Ch(e,f,g)
726 eor x28,x21,x22 // a^b, b^c in next round
727 eor x16,x16,x25,ror#41 // Sigma1(e)
728 eor x2,x2,x21,ror#34
729 add x20,x20,x17 // h+=Ch(e,f,g)
730 and x19,x19,x28 // (b^c)&=(a^b)
731 eor x0,x0,x9,ror#61
732 eor x1,x1,x12,lsr#7 // sigma0(X[i+1])
733 add x20,x20,x16 // h+=Sigma1(e)
734 eor x19,x19,x22 // Maj(a,b,c)
735 eor x17,x2,x21,ror#39 // Sigma0(a)
736 eor x0,x0,x9,lsr#6 // sigma1(X[i+14])
737 add x11,x11,x4
738 add x24,x24,x20 // d+=h
739 add x20,x20,x19 // h+=Maj(a,b,c)
740 ldr x19,[x30],#8 // *K++, x28 in next round
741 add x11,x11,x1
742 add x20,x20,x17 // h+=Sigma0(a)
743 add x11,x11,x0
744 ldr x0,[sp,#8]
745 str x3,[sp,#0]
746 ror x16,x24,#14
747 add x27,x27,x19 // h+=K[i]
748 ror x2,x13,#1
749 and x17,x25,x24
750 ror x1,x10,#19
751 bic x19,x26,x24
752 ror x3,x20,#28
753 add x27,x27,x11 // h+=X[i]
754 eor x16,x16,x24,ror#18
755 eor x2,x2,x13,ror#8
756 orr x17,x17,x19 // Ch(e,f,g)
757 eor x19,x20,x21 // a^b, b^c in next round
758 eor x16,x16,x24,ror#41 // Sigma1(e)
759 eor x3,x3,x20,ror#34
760 add x27,x27,x17 // h+=Ch(e,f,g)
761 and x28,x28,x19 // (b^c)&=(a^b)
762 eor x1,x1,x10,ror#61
763 eor x2,x2,x13,lsr#7 // sigma0(X[i+1])
764 add x27,x27,x16 // h+=Sigma1(e)
765 eor x28,x28,x21 // Maj(a,b,c)
766 eor x17,x3,x20,ror#39 // Sigma0(a)
767 eor x1,x1,x10,lsr#6 // sigma1(X[i+14])
768 add x12,x12,x5
769 add x23,x23,x27 // d+=h
770 add x27,x27,x28 // h+=Maj(a,b,c)
771 ldr x28,[x30],#8 // *K++, x19 in next round
772 add x12,x12,x2
773 add x27,x27,x17 // h+=Sigma0(a)
774 add x12,x12,x1
775 ldr x1,[sp,#16]
776 str x4,[sp,#8]
777 ror x16,x23,#14
778 add x26,x26,x28 // h+=K[i]
779 ror x3,x14,#1
780 and x17,x24,x23
781 ror x2,x11,#19
782 bic x28,x25,x23
783 ror x4,x27,#28
784 add x26,x26,x12 // h+=X[i]
785 eor x16,x16,x23,ror#18
786 eor x3,x3,x14,ror#8
787 orr x17,x17,x28 // Ch(e,f,g)
788 eor x28,x27,x20 // a^b, b^c in next round
789 eor x16,x16,x23,ror#41 // Sigma1(e)
790 eor x4,x4,x27,ror#34
791 add x26,x26,x17 // h+=Ch(e,f,g)
792 and x19,x19,x28 // (b^c)&=(a^b)
793 eor x2,x2,x11,ror#61
794 eor x3,x3,x14,lsr#7 // sigma0(X[i+1])
795 add x26,x26,x16 // h+=Sigma1(e)
796 eor x19,x19,x20 // Maj(a,b,c)
797 eor x17,x4,x27,ror#39 // Sigma0(a)
798 eor x2,x2,x11,lsr#6 // sigma1(X[i+14])
799 add x13,x13,x6
800 add x22,x22,x26 // d+=h
801 add x26,x26,x19 // h+=Maj(a,b,c)
802 ldr x19,[x30],#8 // *K++, x28 in next round
803 add x13,x13,x3
804 add x26,x26,x17 // h+=Sigma0(a)
805 add x13,x13,x2
806 ldr x2,[sp,#24]
807 str x5,[sp,#16]
808 ror x16,x22,#14
809 add x25,x25,x19 // h+=K[i]
810 ror x4,x15,#1
811 and x17,x23,x22
812 ror x3,x12,#19
813 bic x19,x24,x22
814 ror x5,x26,#28
815 add x25,x25,x13 // h+=X[i]
816 eor x16,x16,x22,ror#18
817 eor x4,x4,x15,ror#8
818 orr x17,x17,x19 // Ch(e,f,g)
819 eor x19,x26,x27 // a^b, b^c in next round
820 eor x16,x16,x22,ror#41 // Sigma1(e)
821 eor x5,x5,x26,ror#34
822 add x25,x25,x17 // h+=Ch(e,f,g)
823 and x28,x28,x19 // (b^c)&=(a^b)
824 eor x3,x3,x12,ror#61
825 eor x4,x4,x15,lsr#7 // sigma0(X[i+1])
826 add x25,x25,x16 // h+=Sigma1(e)
827 eor x28,x28,x27 // Maj(a,b,c)
828 eor x17,x5,x26,ror#39 // Sigma0(a)
829 eor x3,x3,x12,lsr#6 // sigma1(X[i+14])
830 add x14,x14,x7
831 add x21,x21,x25 // d+=h
832 add x25,x25,x28 // h+=Maj(a,b,c)
833 ldr x28,[x30],#8 // *K++, x19 in next round
834 add x14,x14,x4
835 add x25,x25,x17 // h+=Sigma0(a)
836 add x14,x14,x3
837 ldr x3,[sp,#0]
838 str x6,[sp,#24]
839 ror x16,x21,#14
840 add x24,x24,x28 // h+=K[i]
841 ror x5,x0,#1
842 and x17,x22,x21
843 ror x4,x13,#19
844 bic x28,x23,x21
845 ror x6,x25,#28
846 add x24,x24,x14 // h+=X[i]
847 eor x16,x16,x21,ror#18
848 eor x5,x5,x0,ror#8
849 orr x17,x17,x28 // Ch(e,f,g)
850 eor x28,x25,x26 // a^b, b^c in next round
851 eor x16,x16,x21,ror#41 // Sigma1(e)
852 eor x6,x6,x25,ror#34
853 add x24,x24,x17 // h+=Ch(e,f,g)
854 and x19,x19,x28 // (b^c)&=(a^b)
855 eor x4,x4,x13,ror#61
856 eor x5,x5,x0,lsr#7 // sigma0(X[i+1])
857 add x24,x24,x16 // h+=Sigma1(e)
858 eor x19,x19,x26 // Maj(a,b,c)
859 eor x17,x6,x25,ror#39 // Sigma0(a)
860 eor x4,x4,x13,lsr#6 // sigma1(X[i+14])
861 add x15,x15,x8
862 add x20,x20,x24 // d+=h
863 add x24,x24,x19 // h+=Maj(a,b,c)
864 ldr x19,[x30],#8 // *K++, x28 in next round
865 add x15,x15,x5
866 add x24,x24,x17 // h+=Sigma0(a)
867 add x15,x15,x4
868 ldr x4,[sp,#8]
869 str x7,[sp,#0]
870 ror x16,x20,#14
871 add x23,x23,x19 // h+=K[i]
872 ror x6,x1,#1
873 and x17,x21,x20
874 ror x5,x14,#19
875 bic x19,x22,x20
876 ror x7,x24,#28
877 add x23,x23,x15 // h+=X[i]
878 eor x16,x16,x20,ror#18
879 eor x6,x6,x1,ror#8
880 orr x17,x17,x19 // Ch(e,f,g)
881 eor x19,x24,x25 // a^b, b^c in next round
882 eor x16,x16,x20,ror#41 // Sigma1(e)
883 eor x7,x7,x24,ror#34
884 add x23,x23,x17 // h+=Ch(e,f,g)
885 and x28,x28,x19 // (b^c)&=(a^b)
886 eor x5,x5,x14,ror#61
887 eor x6,x6,x1,lsr#7 // sigma0(X[i+1])
888 add x23,x23,x16 // h+=Sigma1(e)
889 eor x28,x28,x25 // Maj(a,b,c)
890 eor x17,x7,x24,ror#39 // Sigma0(a)
891 eor x5,x5,x14,lsr#6 // sigma1(X[i+14])
892 add x0,x0,x9
893 add x27,x27,x23 // d+=h
894 add x23,x23,x28 // h+=Maj(a,b,c)
895 ldr x28,[x30],#8 // *K++, x19 in next round
896 add x0,x0,x6
897 add x23,x23,x17 // h+=Sigma0(a)
898 add x0,x0,x5
899 ldr x5,[sp,#16]
900 str x8,[sp,#8]
901 ror x16,x27,#14
902 add x22,x22,x28 // h+=K[i]
903 ror x7,x2,#1
904 and x17,x20,x27
905 ror x6,x15,#19
906 bic x28,x21,x27
907 ror x8,x23,#28
908 add x22,x22,x0 // h+=X[i]
909 eor x16,x16,x27,ror#18
910 eor x7,x7,x2,ror#8
911 orr x17,x17,x28 // Ch(e,f,g)
912 eor x28,x23,x24 // a^b, b^c in next round
913 eor x16,x16,x27,ror#41 // Sigma1(e)
914 eor x8,x8,x23,ror#34
915 add x22,x22,x17 // h+=Ch(e,f,g)
916 and x19,x19,x28 // (b^c)&=(a^b)
917 eor x6,x6,x15,ror#61
918 eor x7,x7,x2,lsr#7 // sigma0(X[i+1])
919 add x22,x22,x16 // h+=Sigma1(e)
920 eor x19,x19,x24 // Maj(a,b,c)
921 eor x17,x8,x23,ror#39 // Sigma0(a)
922 eor x6,x6,x15,lsr#6 // sigma1(X[i+14])
923 add x1,x1,x10
924 add x26,x26,x22 // d+=h
925 add x22,x22,x19 // h+=Maj(a,b,c)
926 ldr x19,[x30],#8 // *K++, x28 in next round
927 add x1,x1,x7
928 add x22,x22,x17 // h+=Sigma0(a)
929 add x1,x1,x6
930 ldr x6,[sp,#24]
931 str x9,[sp,#16]
932 ror x16,x26,#14
933 add x21,x21,x19 // h+=K[i]
934 ror x8,x3,#1
935 and x17,x27,x26
936 ror x7,x0,#19
937 bic x19,x20,x26
938 ror x9,x22,#28
939 add x21,x21,x1 // h+=X[i]
940 eor x16,x16,x26,ror#18
941 eor x8,x8,x3,ror#8
942 orr x17,x17,x19 // Ch(e,f,g)
943 eor x19,x22,x23 // a^b, b^c in next round
944 eor x16,x16,x26,ror#41 // Sigma1(e)
945 eor x9,x9,x22,ror#34
946 add x21,x21,x17 // h+=Ch(e,f,g)
947 and x28,x28,x19 // (b^c)&=(a^b)
948 eor x7,x7,x0,ror#61
949 eor x8,x8,x3,lsr#7 // sigma0(X[i+1])
950 add x21,x21,x16 // h+=Sigma1(e)
951 eor x28,x28,x23 // Maj(a,b,c)
952 eor x17,x9,x22,ror#39 // Sigma0(a)
953 eor x7,x7,x0,lsr#6 // sigma1(X[i+14])
954 add x2,x2,x11
955 add x25,x25,x21 // d+=h
956 add x21,x21,x28 // h+=Maj(a,b,c)
957 ldr x28,[x30],#8 // *K++, x19 in next round
958 add x2,x2,x8
959 add x21,x21,x17 // h+=Sigma0(a)
960 add x2,x2,x7
961 ldr x7,[sp,#0]
962 str x10,[sp,#24]
963 ror x16,x25,#14
964 add x20,x20,x28 // h+=K[i]
965 ror x9,x4,#1
966 and x17,x26,x25
967 ror x8,x1,#19
968 bic x28,x27,x25
969 ror x10,x21,#28
970 add x20,x20,x2 // h+=X[i]
971 eor x16,x16,x25,ror#18
972 eor x9,x9,x4,ror#8
973 orr x17,x17,x28 // Ch(e,f,g)
974 eor x28,x21,x22 // a^b, b^c in next round
975 eor x16,x16,x25,ror#41 // Sigma1(e)
976 eor x10,x10,x21,ror#34
977 add x20,x20,x17 // h+=Ch(e,f,g)
978 and x19,x19,x28 // (b^c)&=(a^b)
979 eor x8,x8,x1,ror#61
980 eor x9,x9,x4,lsr#7 // sigma0(X[i+1])
981 add x20,x20,x16 // h+=Sigma1(e)
982 eor x19,x19,x22 // Maj(a,b,c)
983 eor x17,x10,x21,ror#39 // Sigma0(a)
984 eor x8,x8,x1,lsr#6 // sigma1(X[i+14])
985 add x3,x3,x12
986 add x24,x24,x20 // d+=h
987 add x20,x20,x19 // h+=Maj(a,b,c)
988 ldr x19,[x30],#8 // *K++, x28 in next round
989 add x3,x3,x9
990 add x20,x20,x17 // h+=Sigma0(a)
991 add x3,x3,x8
992 cbnz x19,Loop_16_xx
993
994 ldp x0,x2,[x29,#96]
995 ldr x1,[x29,#112]
996 sub x30,x30,#648 // rewind
997
998 ldp x3,x4,[x0]
999 ldp x5,x6,[x0,#2*8]
1000 add x1,x1,#14*8 // advance input pointer
1001 ldp x7,x8,[x0,#4*8]
1002 add x20,x20,x3
1003 ldp x9,x10,[x0,#6*8]
1004 add x21,x21,x4
1005 add x22,x22,x5
1006 add x23,x23,x6
1007 stp x20,x21,[x0]
1008 add x24,x24,x7
1009 add x25,x25,x8
1010 stp x22,x23,[x0,#2*8]
1011 add x26,x26,x9
1012 add x27,x27,x10
1013 cmp x1,x2
1014 stp x24,x25,[x0,#4*8]
1015 stp x26,x27,[x0,#6*8]
1016 b.ne Loop
1017
1018 ldp x19,x20,[x29,#16]
1019 add sp,sp,#4*8
1020 ldp x21,x22,[x29,#32]
1021 ldp x23,x24,[x29,#48]
1022 ldp x25,x26,[x29,#64]
1023 ldp x27,x28,[x29,#80]
1024 ldp x29,x30,[sp],#128
1025 ret
1026
1027
Robert Sloanc9abfe42018-11-26 12:19:07 -08001028.section __TEXT,__const
Robert Sloan8ff03552017-06-14 12:40:58 -07001029.align 6
1030
1031LK512:
1032.quad 0x428a2f98d728ae22,0x7137449123ef65cd
1033.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
1034.quad 0x3956c25bf348b538,0x59f111f1b605d019
1035.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118
1036.quad 0xd807aa98a3030242,0x12835b0145706fbe
1037.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
1038.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1
1039.quad 0x9bdc06a725c71235,0xc19bf174cf692694
1040.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3
1041.quad 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
1042.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483
1043.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5
1044.quad 0x983e5152ee66dfab,0xa831c66d2db43210
1045.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4
1046.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725
1047.quad 0x06ca6351e003826f,0x142929670a0e6e70
1048.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926
1049.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df
1050.quad 0x650a73548baf63de,0x766a0abb3c77b2a8
1051.quad 0x81c2c92e47edaee6,0x92722c851482353b
1052.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001
1053.quad 0xc24b8b70d0f89791,0xc76c51a30654be30
1054.quad 0xd192e819d6ef5218,0xd69906245565a910
1055.quad 0xf40e35855771202a,0x106aa07032bbd1b8
1056.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53
1057.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
1058.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
1059.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
1060.quad 0x748f82ee5defb2fc,0x78a5636f43172f60
1061.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec
1062.quad 0x90befffa23631e28,0xa4506cebde82bde9
1063.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b
1064.quad 0xca273eceea26619c,0xd186b8c721c0c207
1065.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
1066.quad 0x06f067aa72176fba,0x0a637dc5a2c898a6
1067.quad 0x113f9804bef90dae,0x1b710b35131c471b
1068.quad 0x28db77f523047d84,0x32caab7b40c72493
1069.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
1070.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a
1071.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817
1072.quad 0 // terminator
1073
Robert Sloan8ff03552017-06-14 12:40:58 -07001074.byte 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
1075.align 2
1076.align 2
1077#ifndef __KERNEL__
1078.comm _OPENSSL_armcap_P,4,4
Robert Sloanf068def2018-10-10 18:45:40 -07001079.private_extern _OPENSSL_armcap_P
Robert Sloan8ff03552017-06-14 12:40:58 -07001080#endif
Robert Sloan726e9d12018-09-11 11:45:04 -07001081#endif // !OPENSSL_NO_ASM