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