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