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