1.section	".text",#alloc,#execinstr
2
3.align	64
4K256:
5.type	K256,#object
6	.long	0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5
7	.long	0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5
8	.long	0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3
9	.long	0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174
10	.long	0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc
11	.long	0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da
12	.long	0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7
13	.long	0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967
14	.long	0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13
15	.long	0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85
16	.long	0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3
17	.long	0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070
18	.long	0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5
19	.long	0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3
20	.long	0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208
21	.long	0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
22.size	K256,.-K256
23.globl	sha256_block_data_order
24sha256_block_data_order:
25	save	%sp,-112,%sp
26	and	%i1,7,%i4
27	sllx	%i2,6,%i2
28	andn	%i1,7,%i1
29	sll	%i4,3,%i4
30	add	%i1,%i2,%i2
31.Lpic:	call	.+8
32	add	%o7,K256-.Lpic,%i3
33
34	ld	[%i0+0],%l0
35	ld	[%i0+4],%l1
36	ld	[%i0+8],%l2
37	ld	[%i0+12],%l3
38	ld	[%i0+16],%l4
39	ld	[%i0+20],%l5
40	ld	[%i0+24],%l6
41	ld	[%i0+28],%l7
42
43.Lloop:
44	ldx	[%i1+0],%o0
45	ldx	[%i1+16],%o2
46	ldx	[%i1+32],%o4
47	ldx	[%i1+48],%g1
48	ldx	[%i1+8],%o1
49	ldx	[%i1+24],%o3
50	subcc	%g0,%i4,%i5 ! should be 64-%i4, but -%i4 works too
51	ldx	[%i1+40],%o5
52	bz,pt	%icc,.Laligned
53	ldx	[%i1+56],%o7
54
55	sllx	%o0,%i4,%o0
56	ldx	[%i1+64],%g2
57	srlx	%o1,%i5,%g4
58	sllx	%o1,%i4,%o1
59	or	%g4,%o0,%o0
60	srlx	%o2,%i5,%g4
61	sllx	%o2,%i4,%o2
62	or	%g4,%o1,%o1
63	srlx	%o3,%i5,%g4
64	sllx	%o3,%i4,%o3
65	or	%g4,%o2,%o2
66	srlx	%o4,%i5,%g4
67	sllx	%o4,%i4,%o4
68	or	%g4,%o3,%o3
69	srlx	%o5,%i5,%g4
70	sllx	%o5,%i4,%o5
71	or	%g4,%o4,%o4
72	srlx	%g1,%i5,%g4
73	sllx	%g1,%i4,%g1
74	or	%g4,%o5,%o5
75	srlx	%o7,%i5,%g4
76	sllx	%o7,%i4,%o7
77	or	%g4,%g1,%g1
78	srlx	%g2,%i5,%g2
79	or	%g2,%o7,%o7
80.Laligned:
81	srlx	%o0,32,%g2
82	add	%l7,%g2,%g2
83	srl	%l4,6,%l7	!! 0
84	xor	%l5,%l6,%g5
85	sll	%l4,7,%g4
86	and	%l4,%g5,%g5
87	srl	%l4,11,%g3
88	xor	%g4,%l7,%l7
89	sll	%l4,21,%g4
90	xor	%g3,%l7,%l7
91	srl	%l4,25,%g3
92	xor	%g4,%l7,%l7
93	sll	%l4,26,%g4
94	xor	%g3,%l7,%l7
95	xor	%l6,%g5,%g5		! Ch(e,f,g)
96	xor	%g4,%l7,%g3		! Sigma1(e)
97
98	srl	%l0,2,%l7
99	add	%g5,%g2,%g2
100	ld	[%i3+0],%g5	! K[0]
101	sll	%l0,10,%g4
102	add	%g3,%g2,%g2
103	srl	%l0,13,%g3
104	xor	%g4,%l7,%l7
105	sll	%l0,19,%g4
106	xor	%g3,%l7,%l7
107	srl	%l0,22,%g3
108	xor	%g4,%l7,%l7
109	sll	%l0,30,%g4
110	xor	%g3,%l7,%l7
111	xor	%g4,%l7,%l7		! Sigma0(a)
112
113	or	%l0,%l1,%g3
114	and	%l0,%l1,%g4
115	and	%l2,%g3,%g3
116	or	%g3,%g4,%g4	! Maj(a,b,c)
117	add	%g5,%g2,%g2		! +=K[0]
118	add	%g4,%l7,%l7
119
120	add	%g2,%l3,%l3
121	add	%g2,%l7,%l7
122	add	%o0,%l6,%g2
123	srl	%l3,6,%l6	!! 1
124	xor	%l4,%l5,%g5
125	sll	%l3,7,%g4
126	and	%l3,%g5,%g5
127	srl	%l3,11,%g3
128	xor	%g4,%l6,%l6
129	sll	%l3,21,%g4
130	xor	%g3,%l6,%l6
131	srl	%l3,25,%g3
132	xor	%g4,%l6,%l6
133	sll	%l3,26,%g4
134	xor	%g3,%l6,%l6
135	xor	%l5,%g5,%g5		! Ch(e,f,g)
136	xor	%g4,%l6,%g3		! Sigma1(e)
137
138	srl	%l7,2,%l6
139	add	%g5,%g2,%g2
140	ld	[%i3+4],%g5	! K[1]
141	sll	%l7,10,%g4
142	add	%g3,%g2,%g2
143	srl	%l7,13,%g3
144	xor	%g4,%l6,%l6
145	sll	%l7,19,%g4
146	xor	%g3,%l6,%l6
147	srl	%l7,22,%g3
148	xor	%g4,%l6,%l6
149	sll	%l7,30,%g4
150	xor	%g3,%l6,%l6
151	xor	%g4,%l6,%l6		! Sigma0(a)
152
153	or	%l7,%l0,%g3
154	and	%l7,%l0,%g4
155	and	%l1,%g3,%g3
156	or	%g3,%g4,%g4	! Maj(a,b,c)
157	add	%g5,%g2,%g2		! +=K[1]
158	add	%g4,%l6,%l6
159
160	add	%g2,%l2,%l2
161	add	%g2,%l6,%l6
162	srlx	%o1,32,%g2
163	add	%l5,%g2,%g2
164	srl	%l2,6,%l5	!! 2
165	xor	%l3,%l4,%g5
166	sll	%l2,7,%g4
167	and	%l2,%g5,%g5
168	srl	%l2,11,%g3
169	xor	%g4,%l5,%l5
170	sll	%l2,21,%g4
171	xor	%g3,%l5,%l5
172	srl	%l2,25,%g3
173	xor	%g4,%l5,%l5
174	sll	%l2,26,%g4
175	xor	%g3,%l5,%l5
176	xor	%l4,%g5,%g5		! Ch(e,f,g)
177	xor	%g4,%l5,%g3		! Sigma1(e)
178
179	srl	%l6,2,%l5
180	add	%g5,%g2,%g2
181	ld	[%i3+8],%g5	! K[2]
182	sll	%l6,10,%g4
183	add	%g3,%g2,%g2
184	srl	%l6,13,%g3
185	xor	%g4,%l5,%l5
186	sll	%l6,19,%g4
187	xor	%g3,%l5,%l5
188	srl	%l6,22,%g3
189	xor	%g4,%l5,%l5
190	sll	%l6,30,%g4
191	xor	%g3,%l5,%l5
192	xor	%g4,%l5,%l5		! Sigma0(a)
193
194	or	%l6,%l7,%g3
195	and	%l6,%l7,%g4
196	and	%l0,%g3,%g3
197	or	%g3,%g4,%g4	! Maj(a,b,c)
198	add	%g5,%g2,%g2		! +=K[2]
199	add	%g4,%l5,%l5
200
201	add	%g2,%l1,%l1
202	add	%g2,%l5,%l5
203	add	%o1,%l4,%g2
204	srl	%l1,6,%l4	!! 3
205	xor	%l2,%l3,%g5
206	sll	%l1,7,%g4
207	and	%l1,%g5,%g5
208	srl	%l1,11,%g3
209	xor	%g4,%l4,%l4
210	sll	%l1,21,%g4
211	xor	%g3,%l4,%l4
212	srl	%l1,25,%g3
213	xor	%g4,%l4,%l4
214	sll	%l1,26,%g4
215	xor	%g3,%l4,%l4
216	xor	%l3,%g5,%g5		! Ch(e,f,g)
217	xor	%g4,%l4,%g3		! Sigma1(e)
218
219	srl	%l5,2,%l4
220	add	%g5,%g2,%g2
221	ld	[%i3+12],%g5	! K[3]
222	sll	%l5,10,%g4
223	add	%g3,%g2,%g2
224	srl	%l5,13,%g3
225	xor	%g4,%l4,%l4
226	sll	%l5,19,%g4
227	xor	%g3,%l4,%l4
228	srl	%l5,22,%g3
229	xor	%g4,%l4,%l4
230	sll	%l5,30,%g4
231	xor	%g3,%l4,%l4
232	xor	%g4,%l4,%l4		! Sigma0(a)
233
234	or	%l5,%l6,%g3
235	and	%l5,%l6,%g4
236	and	%l7,%g3,%g3
237	or	%g3,%g4,%g4	! Maj(a,b,c)
238	add	%g5,%g2,%g2		! +=K[3]
239	add	%g4,%l4,%l4
240
241	add	%g2,%l0,%l0
242	add	%g2,%l4,%l4
243	srlx	%o2,32,%g2
244	add	%l3,%g2,%g2
245	srl	%l0,6,%l3	!! 4
246	xor	%l1,%l2,%g5
247	sll	%l0,7,%g4
248	and	%l0,%g5,%g5
249	srl	%l0,11,%g3
250	xor	%g4,%l3,%l3
251	sll	%l0,21,%g4
252	xor	%g3,%l3,%l3
253	srl	%l0,25,%g3
254	xor	%g4,%l3,%l3
255	sll	%l0,26,%g4
256	xor	%g3,%l3,%l3
257	xor	%l2,%g5,%g5		! Ch(e,f,g)
258	xor	%g4,%l3,%g3		! Sigma1(e)
259
260	srl	%l4,2,%l3
261	add	%g5,%g2,%g2
262	ld	[%i3+16],%g5	! K[4]
263	sll	%l4,10,%g4
264	add	%g3,%g2,%g2
265	srl	%l4,13,%g3
266	xor	%g4,%l3,%l3
267	sll	%l4,19,%g4
268	xor	%g3,%l3,%l3
269	srl	%l4,22,%g3
270	xor	%g4,%l3,%l3
271	sll	%l4,30,%g4
272	xor	%g3,%l3,%l3
273	xor	%g4,%l3,%l3		! Sigma0(a)
274
275	or	%l4,%l5,%g3
276	and	%l4,%l5,%g4
277	and	%l6,%g3,%g3
278	or	%g3,%g4,%g4	! Maj(a,b,c)
279	add	%g5,%g2,%g2		! +=K[4]
280	add	%g4,%l3,%l3
281
282	add	%g2,%l7,%l7
283	add	%g2,%l3,%l3
284	add	%o2,%l2,%g2
285	srl	%l7,6,%l2	!! 5
286	xor	%l0,%l1,%g5
287	sll	%l7,7,%g4
288	and	%l7,%g5,%g5
289	srl	%l7,11,%g3
290	xor	%g4,%l2,%l2
291	sll	%l7,21,%g4
292	xor	%g3,%l2,%l2
293	srl	%l7,25,%g3
294	xor	%g4,%l2,%l2
295	sll	%l7,26,%g4
296	xor	%g3,%l2,%l2
297	xor	%l1,%g5,%g5		! Ch(e,f,g)
298	xor	%g4,%l2,%g3		! Sigma1(e)
299
300	srl	%l3,2,%l2
301	add	%g5,%g2,%g2
302	ld	[%i3+20],%g5	! K[5]
303	sll	%l3,10,%g4
304	add	%g3,%g2,%g2
305	srl	%l3,13,%g3
306	xor	%g4,%l2,%l2
307	sll	%l3,19,%g4
308	xor	%g3,%l2,%l2
309	srl	%l3,22,%g3
310	xor	%g4,%l2,%l2
311	sll	%l3,30,%g4
312	xor	%g3,%l2,%l2
313	xor	%g4,%l2,%l2		! Sigma0(a)
314
315	or	%l3,%l4,%g3
316	and	%l3,%l4,%g4
317	and	%l5,%g3,%g3
318	or	%g3,%g4,%g4	! Maj(a,b,c)
319	add	%g5,%g2,%g2		! +=K[5]
320	add	%g4,%l2,%l2
321
322	add	%g2,%l6,%l6
323	add	%g2,%l2,%l2
324	srlx	%o3,32,%g2
325	add	%l1,%g2,%g2
326	srl	%l6,6,%l1	!! 6
327	xor	%l7,%l0,%g5
328	sll	%l6,7,%g4
329	and	%l6,%g5,%g5
330	srl	%l6,11,%g3
331	xor	%g4,%l1,%l1
332	sll	%l6,21,%g4
333	xor	%g3,%l1,%l1
334	srl	%l6,25,%g3
335	xor	%g4,%l1,%l1
336	sll	%l6,26,%g4
337	xor	%g3,%l1,%l1
338	xor	%l0,%g5,%g5		! Ch(e,f,g)
339	xor	%g4,%l1,%g3		! Sigma1(e)
340
341	srl	%l2,2,%l1
342	add	%g5,%g2,%g2
343	ld	[%i3+24],%g5	! K[6]
344	sll	%l2,10,%g4
345	add	%g3,%g2,%g2
346	srl	%l2,13,%g3
347	xor	%g4,%l1,%l1
348	sll	%l2,19,%g4
349	xor	%g3,%l1,%l1
350	srl	%l2,22,%g3
351	xor	%g4,%l1,%l1
352	sll	%l2,30,%g4
353	xor	%g3,%l1,%l1
354	xor	%g4,%l1,%l1		! Sigma0(a)
355
356	or	%l2,%l3,%g3
357	and	%l2,%l3,%g4
358	and	%l4,%g3,%g3
359	or	%g3,%g4,%g4	! Maj(a,b,c)
360	add	%g5,%g2,%g2		! +=K[6]
361	add	%g4,%l1,%l1
362
363	add	%g2,%l5,%l5
364	add	%g2,%l1,%l1
365	add	%o3,%l0,%g2
366	srl	%l5,6,%l0	!! 7
367	xor	%l6,%l7,%g5
368	sll	%l5,7,%g4
369	and	%l5,%g5,%g5
370	srl	%l5,11,%g3
371	xor	%g4,%l0,%l0
372	sll	%l5,21,%g4
373	xor	%g3,%l0,%l0
374	srl	%l5,25,%g3
375	xor	%g4,%l0,%l0
376	sll	%l5,26,%g4
377	xor	%g3,%l0,%l0
378	xor	%l7,%g5,%g5		! Ch(e,f,g)
379	xor	%g4,%l0,%g3		! Sigma1(e)
380
381	srl	%l1,2,%l0
382	add	%g5,%g2,%g2
383	ld	[%i3+28],%g5	! K[7]
384	sll	%l1,10,%g4
385	add	%g3,%g2,%g2
386	srl	%l1,13,%g3
387	xor	%g4,%l0,%l0
388	sll	%l1,19,%g4
389	xor	%g3,%l0,%l0
390	srl	%l1,22,%g3
391	xor	%g4,%l0,%l0
392	sll	%l1,30,%g4
393	xor	%g3,%l0,%l0
394	xor	%g4,%l0,%l0		! Sigma0(a)
395
396	or	%l1,%l2,%g3
397	and	%l1,%l2,%g4
398	and	%l3,%g3,%g3
399	or	%g3,%g4,%g4	! Maj(a,b,c)
400	add	%g5,%g2,%g2		! +=K[7]
401	add	%g4,%l0,%l0
402
403	add	%g2,%l4,%l4
404	add	%g2,%l0,%l0
405	srlx	%o4,32,%g2
406	add	%l7,%g2,%g2
407	srl	%l4,6,%l7	!! 8
408	xor	%l5,%l6,%g5
409	sll	%l4,7,%g4
410	and	%l4,%g5,%g5
411	srl	%l4,11,%g3
412	xor	%g4,%l7,%l7
413	sll	%l4,21,%g4
414	xor	%g3,%l7,%l7
415	srl	%l4,25,%g3
416	xor	%g4,%l7,%l7
417	sll	%l4,26,%g4
418	xor	%g3,%l7,%l7
419	xor	%l6,%g5,%g5		! Ch(e,f,g)
420	xor	%g4,%l7,%g3		! Sigma1(e)
421
422	srl	%l0,2,%l7
423	add	%g5,%g2,%g2
424	ld	[%i3+32],%g5	! K[8]
425	sll	%l0,10,%g4
426	add	%g3,%g2,%g2
427	srl	%l0,13,%g3
428	xor	%g4,%l7,%l7
429	sll	%l0,19,%g4
430	xor	%g3,%l7,%l7
431	srl	%l0,22,%g3
432	xor	%g4,%l7,%l7
433	sll	%l0,30,%g4
434	xor	%g3,%l7,%l7
435	xor	%g4,%l7,%l7		! Sigma0(a)
436
437	or	%l0,%l1,%g3
438	and	%l0,%l1,%g4
439	and	%l2,%g3,%g3
440	or	%g3,%g4,%g4	! Maj(a,b,c)
441	add	%g5,%g2,%g2		! +=K[8]
442	add	%g4,%l7,%l7
443
444	add	%g2,%l3,%l3
445	add	%g2,%l7,%l7
446	add	%o4,%l6,%g2
447	srl	%l3,6,%l6	!! 9
448	xor	%l4,%l5,%g5
449	sll	%l3,7,%g4
450	and	%l3,%g5,%g5
451	srl	%l3,11,%g3
452	xor	%g4,%l6,%l6
453	sll	%l3,21,%g4
454	xor	%g3,%l6,%l6
455	srl	%l3,25,%g3
456	xor	%g4,%l6,%l6
457	sll	%l3,26,%g4
458	xor	%g3,%l6,%l6
459	xor	%l5,%g5,%g5		! Ch(e,f,g)
460	xor	%g4,%l6,%g3		! Sigma1(e)
461
462	srl	%l7,2,%l6
463	add	%g5,%g2,%g2
464	ld	[%i3+36],%g5	! K[9]
465	sll	%l7,10,%g4
466	add	%g3,%g2,%g2
467	srl	%l7,13,%g3
468	xor	%g4,%l6,%l6
469	sll	%l7,19,%g4
470	xor	%g3,%l6,%l6
471	srl	%l7,22,%g3
472	xor	%g4,%l6,%l6
473	sll	%l7,30,%g4
474	xor	%g3,%l6,%l6
475	xor	%g4,%l6,%l6		! Sigma0(a)
476
477	or	%l7,%l0,%g3
478	and	%l7,%l0,%g4
479	and	%l1,%g3,%g3
480	or	%g3,%g4,%g4	! Maj(a,b,c)
481	add	%g5,%g2,%g2		! +=K[9]
482	add	%g4,%l6,%l6
483
484	add	%g2,%l2,%l2
485	add	%g2,%l6,%l6
486	srlx	%o5,32,%g2
487	add	%l5,%g2,%g2
488	srl	%l2,6,%l5	!! 10
489	xor	%l3,%l4,%g5
490	sll	%l2,7,%g4
491	and	%l2,%g5,%g5
492	srl	%l2,11,%g3
493	xor	%g4,%l5,%l5
494	sll	%l2,21,%g4
495	xor	%g3,%l5,%l5
496	srl	%l2,25,%g3
497	xor	%g4,%l5,%l5
498	sll	%l2,26,%g4
499	xor	%g3,%l5,%l5
500	xor	%l4,%g5,%g5		! Ch(e,f,g)
501	xor	%g4,%l5,%g3		! Sigma1(e)
502
503	srl	%l6,2,%l5
504	add	%g5,%g2,%g2
505	ld	[%i3+40],%g5	! K[10]
506	sll	%l6,10,%g4
507	add	%g3,%g2,%g2
508	srl	%l6,13,%g3
509	xor	%g4,%l5,%l5
510	sll	%l6,19,%g4
511	xor	%g3,%l5,%l5
512	srl	%l6,22,%g3
513	xor	%g4,%l5,%l5
514	sll	%l6,30,%g4
515	xor	%g3,%l5,%l5
516	xor	%g4,%l5,%l5		! Sigma0(a)
517
518	or	%l6,%l7,%g3
519	and	%l6,%l7,%g4
520	and	%l0,%g3,%g3
521	or	%g3,%g4,%g4	! Maj(a,b,c)
522	add	%g5,%g2,%g2		! +=K[10]
523	add	%g4,%l5,%l5
524
525	add	%g2,%l1,%l1
526	add	%g2,%l5,%l5
527	add	%o5,%l4,%g2
528	srl	%l1,6,%l4	!! 11
529	xor	%l2,%l3,%g5
530	sll	%l1,7,%g4
531	and	%l1,%g5,%g5
532	srl	%l1,11,%g3
533	xor	%g4,%l4,%l4
534	sll	%l1,21,%g4
535	xor	%g3,%l4,%l4
536	srl	%l1,25,%g3
537	xor	%g4,%l4,%l4
538	sll	%l1,26,%g4
539	xor	%g3,%l4,%l4
540	xor	%l3,%g5,%g5		! Ch(e,f,g)
541	xor	%g4,%l4,%g3		! Sigma1(e)
542
543	srl	%l5,2,%l4
544	add	%g5,%g2,%g2
545	ld	[%i3+44],%g5	! K[11]
546	sll	%l5,10,%g4
547	add	%g3,%g2,%g2
548	srl	%l5,13,%g3
549	xor	%g4,%l4,%l4
550	sll	%l5,19,%g4
551	xor	%g3,%l4,%l4
552	srl	%l5,22,%g3
553	xor	%g4,%l4,%l4
554	sll	%l5,30,%g4
555	xor	%g3,%l4,%l4
556	xor	%g4,%l4,%l4		! Sigma0(a)
557
558	or	%l5,%l6,%g3
559	and	%l5,%l6,%g4
560	and	%l7,%g3,%g3
561	or	%g3,%g4,%g4	! Maj(a,b,c)
562	add	%g5,%g2,%g2		! +=K[11]
563	add	%g4,%l4,%l4
564
565	add	%g2,%l0,%l0
566	add	%g2,%l4,%l4
567	srlx	%g1,32,%g2
568	add	%l3,%g2,%g2
569	srl	%l0,6,%l3	!! 12
570	xor	%l1,%l2,%g5
571	sll	%l0,7,%g4
572	and	%l0,%g5,%g5
573	srl	%l0,11,%g3
574	xor	%g4,%l3,%l3
575	sll	%l0,21,%g4
576	xor	%g3,%l3,%l3
577	srl	%l0,25,%g3
578	xor	%g4,%l3,%l3
579	sll	%l0,26,%g4
580	xor	%g3,%l3,%l3
581	xor	%l2,%g5,%g5		! Ch(e,f,g)
582	xor	%g4,%l3,%g3		! Sigma1(e)
583
584	srl	%l4,2,%l3
585	add	%g5,%g2,%g2
586	ld	[%i3+48],%g5	! K[12]
587	sll	%l4,10,%g4
588	add	%g3,%g2,%g2
589	srl	%l4,13,%g3
590	xor	%g4,%l3,%l3
591	sll	%l4,19,%g4
592	xor	%g3,%l3,%l3
593	srl	%l4,22,%g3
594	xor	%g4,%l3,%l3
595	sll	%l4,30,%g4
596	xor	%g3,%l3,%l3
597	xor	%g4,%l3,%l3		! Sigma0(a)
598
599	or	%l4,%l5,%g3
600	and	%l4,%l5,%g4
601	and	%l6,%g3,%g3
602	or	%g3,%g4,%g4	! Maj(a,b,c)
603	add	%g5,%g2,%g2		! +=K[12]
604	add	%g4,%l3,%l3
605
606	add	%g2,%l7,%l7
607	add	%g2,%l3,%l3
608	add	%g1,%l2,%g2
609	srl	%l7,6,%l2	!! 13
610	xor	%l0,%l1,%g5
611	sll	%l7,7,%g4
612	and	%l7,%g5,%g5
613	srl	%l7,11,%g3
614	xor	%g4,%l2,%l2
615	sll	%l7,21,%g4
616	xor	%g3,%l2,%l2
617	srl	%l7,25,%g3
618	xor	%g4,%l2,%l2
619	sll	%l7,26,%g4
620	xor	%g3,%l2,%l2
621	xor	%l1,%g5,%g5		! Ch(e,f,g)
622	xor	%g4,%l2,%g3		! Sigma1(e)
623
624	srl	%l3,2,%l2
625	add	%g5,%g2,%g2
626	ld	[%i3+52],%g5	! K[13]
627	sll	%l3,10,%g4
628	add	%g3,%g2,%g2
629	srl	%l3,13,%g3
630	xor	%g4,%l2,%l2
631	sll	%l3,19,%g4
632	xor	%g3,%l2,%l2
633	srl	%l3,22,%g3
634	xor	%g4,%l2,%l2
635	sll	%l3,30,%g4
636	xor	%g3,%l2,%l2
637	xor	%g4,%l2,%l2		! Sigma0(a)
638
639	or	%l3,%l4,%g3
640	and	%l3,%l4,%g4
641	and	%l5,%g3,%g3
642	or	%g3,%g4,%g4	! Maj(a,b,c)
643	add	%g5,%g2,%g2		! +=K[13]
644	add	%g4,%l2,%l2
645
646	add	%g2,%l6,%l6
647	add	%g2,%l2,%l2
648	srlx	%o7,32,%g2
649	add	%l1,%g2,%g2
650	srl	%l6,6,%l1	!! 14
651	xor	%l7,%l0,%g5
652	sll	%l6,7,%g4
653	and	%l6,%g5,%g5
654	srl	%l6,11,%g3
655	xor	%g4,%l1,%l1
656	sll	%l6,21,%g4
657	xor	%g3,%l1,%l1
658	srl	%l6,25,%g3
659	xor	%g4,%l1,%l1
660	sll	%l6,26,%g4
661	xor	%g3,%l1,%l1
662	xor	%l0,%g5,%g5		! Ch(e,f,g)
663	xor	%g4,%l1,%g3		! Sigma1(e)
664
665	srl	%l2,2,%l1
666	add	%g5,%g2,%g2
667	ld	[%i3+56],%g5	! K[14]
668	sll	%l2,10,%g4
669	add	%g3,%g2,%g2
670	srl	%l2,13,%g3
671	xor	%g4,%l1,%l1
672	sll	%l2,19,%g4
673	xor	%g3,%l1,%l1
674	srl	%l2,22,%g3
675	xor	%g4,%l1,%l1
676	sll	%l2,30,%g4
677	xor	%g3,%l1,%l1
678	xor	%g4,%l1,%l1		! Sigma0(a)
679
680	or	%l2,%l3,%g3
681	and	%l2,%l3,%g4
682	and	%l4,%g3,%g3
683	or	%g3,%g4,%g4	! Maj(a,b,c)
684	add	%g5,%g2,%g2		! +=K[14]
685	add	%g4,%l1,%l1
686
687	add	%g2,%l5,%l5
688	add	%g2,%l1,%l1
689	add	%o7,%l0,%g2
690	srl	%l5,6,%l0	!! 15
691	xor	%l6,%l7,%g5
692	sll	%l5,7,%g4
693	and	%l5,%g5,%g5
694	srl	%l5,11,%g3
695	xor	%g4,%l0,%l0
696	sll	%l5,21,%g4
697	xor	%g3,%l0,%l0
698	srl	%l5,25,%g3
699	xor	%g4,%l0,%l0
700	sll	%l5,26,%g4
701	xor	%g3,%l0,%l0
702	xor	%l7,%g5,%g5		! Ch(e,f,g)
703	xor	%g4,%l0,%g3		! Sigma1(e)
704
705	srl	%l1,2,%l0
706	add	%g5,%g2,%g2
707	ld	[%i3+60],%g5	! K[15]
708	sll	%l1,10,%g4
709	add	%g3,%g2,%g2
710	srl	%l1,13,%g3
711	xor	%g4,%l0,%l0
712	sll	%l1,19,%g4
713	xor	%g3,%l0,%l0
714	srl	%l1,22,%g3
715	xor	%g4,%l0,%l0
716	sll	%l1,30,%g4
717	xor	%g3,%l0,%l0
718	xor	%g4,%l0,%l0		! Sigma0(a)
719
720	or	%l1,%l2,%g3
721	and	%l1,%l2,%g4
722	and	%l3,%g3,%g3
723	or	%g3,%g4,%g4	! Maj(a,b,c)
724	add	%g5,%g2,%g2		! +=K[15]
725	add	%g4,%l0,%l0
726
727	add	%g2,%l4,%l4
728	add	%g2,%l0,%l0
729.L16_xx:
730	srl	%o0,3,%g2		!! Xupdate(16)
731	sll	%o0,14,%g4
732	srl	%o0,7,%g3
733	xor	%g4,%g2,%g2
734	sll	%g4,11,%g4
735	xor	%g3,%g2,%g2
736	srl	%o0,18,%g3
737	xor	%g4,%g2,%g2
738	srlx	%o7,32,%i5
739	srl	%i5,10,%g5
740	xor	%g3,%g2,%g2			! T1=sigma0(X[i+1])
741	sll	%i5,13,%g4
742	srl	%i5,17,%g3
743	xor	%g4,%g5,%g5
744	sll	%g4,2,%g4
745	xor	%g3,%g5,%g5
746	srl	%i5,19,%g3
747	xor	%g4,%g5,%g5
748	srlx	%o0,32,%g4		! X[i]
749	xor	%g3,%g5,%g5		! sigma1(X[i+14])
750	add	%o4,%g2,%g2			! +=X[i+9]
751	add	%g5,%g4,%g4
752	srl	%o0,0,%o0
753	add	%g4,%g2,%g2
754
755	sllx	%g2,32,%g3
756	or	%g3,%o0,%o0
757	add	%l7,%g2,%g2
758	srl	%l4,6,%l7	!! 16
759	xor	%l5,%l6,%g5
760	sll	%l4,7,%g4
761	and	%l4,%g5,%g5
762	srl	%l4,11,%g3
763	xor	%g4,%l7,%l7
764	sll	%l4,21,%g4
765	xor	%g3,%l7,%l7
766	srl	%l4,25,%g3
767	xor	%g4,%l7,%l7
768	sll	%l4,26,%g4
769	xor	%g3,%l7,%l7
770	xor	%l6,%g5,%g5		! Ch(e,f,g)
771	xor	%g4,%l7,%g3		! Sigma1(e)
772
773	srl	%l0,2,%l7
774	add	%g5,%g2,%g2
775	ld	[%i3+64],%g5	! K[16]
776	sll	%l0,10,%g4
777	add	%g3,%g2,%g2
778	srl	%l0,13,%g3
779	xor	%g4,%l7,%l7
780	sll	%l0,19,%g4
781	xor	%g3,%l7,%l7
782	srl	%l0,22,%g3
783	xor	%g4,%l7,%l7
784	sll	%l0,30,%g4
785	xor	%g3,%l7,%l7
786	xor	%g4,%l7,%l7		! Sigma0(a)
787
788	or	%l0,%l1,%g3
789	and	%l0,%l1,%g4
790	and	%l2,%g3,%g3
791	or	%g3,%g4,%g4	! Maj(a,b,c)
792	add	%g5,%g2,%g2		! +=K[16]
793	add	%g4,%l7,%l7
794
795	add	%g2,%l3,%l3
796	add	%g2,%l7,%l7
797	srlx	%o1,32,%i5
798	srl	%i5,3,%g2		!! Xupdate(17)
799	sll	%i5,14,%g4
800	srl	%i5,7,%g3
801	xor	%g4,%g2,%g2
802	sll	%g4,11,%g4
803	xor	%g3,%g2,%g2
804	srl	%i5,18,%g3
805	xor	%g4,%g2,%g2
806	srl	%o7,10,%g5
807	xor	%g3,%g2,%g2			! T1=sigma0(X[i+1])
808	sll	%o7,13,%g4
809	srl	%o7,17,%g3
810	xor	%g4,%g5,%g5
811	sll	%g4,2,%g4
812	xor	%g3,%g5,%g5
813	srl	%o7,19,%g3
814	xor	%g4,%g5,%g5
815	srlx	%o5,32,%g4	! X[i+9]
816	xor	%g3,%g5,%g5		! sigma1(X[i+14])
817	srl	%o0,0,%g3
818	add	%g5,%g4,%g4
819	add	%o0,%g2,%g2			! +=X[i]
820	xor	%g3,%o0,%o0
821	add	%g4,%g2,%g2
822
823	srl	%g2,0,%g2
824	or	%g2,%o0,%o0
825	add	%l6,%g2,%g2
826	srl	%l3,6,%l6	!! 17
827	xor	%l4,%l5,%g5
828	sll	%l3,7,%g4
829	and	%l3,%g5,%g5
830	srl	%l3,11,%g3
831	xor	%g4,%l6,%l6
832	sll	%l3,21,%g4
833	xor	%g3,%l6,%l6
834	srl	%l3,25,%g3
835	xor	%g4,%l6,%l6
836	sll	%l3,26,%g4
837	xor	%g3,%l6,%l6
838	xor	%l5,%g5,%g5		! Ch(e,f,g)
839	xor	%g4,%l6,%g3		! Sigma1(e)
840
841	srl	%l7,2,%l6
842	add	%g5,%g2,%g2
843	ld	[%i3+68],%g5	! K[17]
844	sll	%l7,10,%g4
845	add	%g3,%g2,%g2
846	srl	%l7,13,%g3
847	xor	%g4,%l6,%l6
848	sll	%l7,19,%g4
849	xor	%g3,%l6,%l6
850	srl	%l7,22,%g3
851	xor	%g4,%l6,%l6
852	sll	%l7,30,%g4
853	xor	%g3,%l6,%l6
854	xor	%g4,%l6,%l6		! Sigma0(a)
855
856	or	%l7,%l0,%g3
857	and	%l7,%l0,%g4
858	and	%l1,%g3,%g3
859	or	%g3,%g4,%g4	! Maj(a,b,c)
860	add	%g5,%g2,%g2		! +=K[17]
861	add	%g4,%l6,%l6
862
863	add	%g2,%l2,%l2
864	add	%g2,%l6,%l6
865	srl	%o1,3,%g2		!! Xupdate(18)
866	sll	%o1,14,%g4
867	srl	%o1,7,%g3
868	xor	%g4,%g2,%g2
869	sll	%g4,11,%g4
870	xor	%g3,%g2,%g2
871	srl	%o1,18,%g3
872	xor	%g4,%g2,%g2
873	srlx	%o0,32,%i5
874	srl	%i5,10,%g5
875	xor	%g3,%g2,%g2			! T1=sigma0(X[i+1])
876	sll	%i5,13,%g4
877	srl	%i5,17,%g3
878	xor	%g4,%g5,%g5
879	sll	%g4,2,%g4
880	xor	%g3,%g5,%g5
881	srl	%i5,19,%g3
882	xor	%g4,%g5,%g5
883	srlx	%o1,32,%g4		! X[i]
884	xor	%g3,%g5,%g5		! sigma1(X[i+14])
885	add	%o5,%g2,%g2			! +=X[i+9]
886	add	%g5,%g4,%g4
887	srl	%o1,0,%o1
888	add	%g4,%g2,%g2
889
890	sllx	%g2,32,%g3
891	or	%g3,%o1,%o1
892	add	%l5,%g2,%g2
893	srl	%l2,6,%l5	!! 18
894	xor	%l3,%l4,%g5
895	sll	%l2,7,%g4
896	and	%l2,%g5,%g5
897	srl	%l2,11,%g3
898	xor	%g4,%l5,%l5
899	sll	%l2,21,%g4
900	xor	%g3,%l5,%l5
901	srl	%l2,25,%g3
902	xor	%g4,%l5,%l5
903	sll	%l2,26,%g4
904	xor	%g3,%l5,%l5
905	xor	%l4,%g5,%g5		! Ch(e,f,g)
906	xor	%g4,%l5,%g3		! Sigma1(e)
907
908	srl	%l6,2,%l5
909	add	%g5,%g2,%g2
910	ld	[%i3+72],%g5	! K[18]
911	sll	%l6,10,%g4
912	add	%g3,%g2,%g2
913	srl	%l6,13,%g3
914	xor	%g4,%l5,%l5
915	sll	%l6,19,%g4
916	xor	%g3,%l5,%l5
917	srl	%l6,22,%g3
918	xor	%g4,%l5,%l5
919	sll	%l6,30,%g4
920	xor	%g3,%l5,%l5
921	xor	%g4,%l5,%l5		! Sigma0(a)
922
923	or	%l6,%l7,%g3
924	and	%l6,%l7,%g4
925	and	%l0,%g3,%g3
926	or	%g3,%g4,%g4	! Maj(a,b,c)
927	add	%g5,%g2,%g2		! +=K[18]
928	add	%g4,%l5,%l5
929
930	add	%g2,%l1,%l1
931	add	%g2,%l5,%l5
932	srlx	%o2,32,%i5
933	srl	%i5,3,%g2		!! Xupdate(19)
934	sll	%i5,14,%g4
935	srl	%i5,7,%g3
936	xor	%g4,%g2,%g2
937	sll	%g4,11,%g4
938	xor	%g3,%g2,%g2
939	srl	%i5,18,%g3
940	xor	%g4,%g2,%g2
941	srl	%o0,10,%g5
942	xor	%g3,%g2,%g2			! T1=sigma0(X[i+1])
943	sll	%o0,13,%g4
944	srl	%o0,17,%g3
945	xor	%g4,%g5,%g5
946	sll	%g4,2,%g4
947	xor	%g3,%g5,%g5
948	srl	%o0,19,%g3
949	xor	%g4,%g5,%g5
950	srlx	%g1,32,%g4	! X[i+9]
951	xor	%g3,%g5,%g5		! sigma1(X[i+14])
952	srl	%o1,0,%g3
953	add	%g5,%g4,%g4
954	add	%o1,%g2,%g2			! +=X[i]
955	xor	%g3,%o1,%o1
956	add	%g4,%g2,%g2
957
958	srl	%g2,0,%g2
959	or	%g2,%o1,%o1
960	add	%l4,%g2,%g2
961	srl	%l1,6,%l4	!! 19
962	xor	%l2,%l3,%g5
963	sll	%l1,7,%g4
964	and	%l1,%g5,%g5
965	srl	%l1,11,%g3
966	xor	%g4,%l4,%l4
967	sll	%l1,21,%g4
968	xor	%g3,%l4,%l4
969	srl	%l1,25,%g3
970	xor	%g4,%l4,%l4
971	sll	%l1,26,%g4
972	xor	%g3,%l4,%l4
973	xor	%l3,%g5,%g5		! Ch(e,f,g)
974	xor	%g4,%l4,%g3		! Sigma1(e)
975
976	srl	%l5,2,%l4
977	add	%g5,%g2,%g2
978	ld	[%i3+76],%g5	! K[19]
979	sll	%l5,10,%g4
980	add	%g3,%g2,%g2
981	srl	%l5,13,%g3
982	xor	%g4,%l4,%l4
983	sll	%l5,19,%g4
984	xor	%g3,%l4,%l4
985	srl	%l5,22,%g3
986	xor	%g4,%l4,%l4
987	sll	%l5,30,%g4
988	xor	%g3,%l4,%l4
989	xor	%g4,%l4,%l4		! Sigma0(a)
990
991	or	%l5,%l6,%g3
992	and	%l5,%l6,%g4
993	and	%l7,%g3,%g3
994	or	%g3,%g4,%g4	! Maj(a,b,c)
995	add	%g5,%g2,%g2		! +=K[19]
996	add	%g4,%l4,%l4
997
998	add	%g2,%l0,%l0
999	add	%g2,%l4,%l4
1000	srl	%o2,3,%g2		!! Xupdate(20)
1001	sll	%o2,14,%g4
1002	srl	%o2,7,%g3
1003	xor	%g4,%g2,%g2
1004	sll	%g4,11,%g4
1005	xor	%g3,%g2,%g2
1006	srl	%o2,18,%g3
1007	xor	%g4,%g2,%g2
1008	srlx	%o1,32,%i5
1009	srl	%i5,10,%g5
1010	xor	%g3,%g2,%g2			! T1=sigma0(X[i+1])
1011	sll	%i5,13,%g4
1012	srl	%i5,17,%g3
1013	xor	%g4,%g5,%g5
1014	sll	%g4,2,%g4
1015	xor	%g3,%g5,%g5
1016	srl	%i5,19,%g3
1017	xor	%g4,%g5,%g5
1018	srlx	%o2,32,%g4		! X[i]
1019	xor	%g3,%g5,%g5		! sigma1(X[i+14])
1020	add	%g1,%g2,%g2			! +=X[i+9]
1021	add	%g5,%g4,%g4
1022	srl	%o2,0,%o2
1023	add	%g4,%g2,%g2
1024
1025	sllx	%g2,32,%g3
1026	or	%g3,%o2,%o2
1027	add	%l3,%g2,%g2
1028	srl	%l0,6,%l3	!! 20
1029	xor	%l1,%l2,%g5
1030	sll	%l0,7,%g4
1031	and	%l0,%g5,%g5
1032	srl	%l0,11,%g3
1033	xor	%g4,%l3,%l3
1034	sll	%l0,21,%g4
1035	xor	%g3,%l3,%l3
1036	srl	%l0,25,%g3
1037	xor	%g4,%l3,%l3
1038	sll	%l0,26,%g4
1039	xor	%g3,%l3,%l3
1040	xor	%l2,%g5,%g5		! Ch(e,f,g)
1041	xor	%g4,%l3,%g3		! Sigma1(e)
1042
1043	srl	%l4,2,%l3
1044	add	%g5,%g2,%g2
1045	ld	[%i3+80],%g5	! K[20]
1046	sll	%l4,10,%g4
1047	add	%g3,%g2,%g2
1048	srl	%l4,13,%g3
1049	xor	%g4,%l3,%l3
1050	sll	%l4,19,%g4
1051	xor	%g3,%l3,%l3
1052	srl	%l4,22,%g3
1053	xor	%g4,%l3,%l3
1054	sll	%l4,30,%g4
1055	xor	%g3,%l3,%l3
1056	xor	%g4,%l3,%l3		! Sigma0(a)
1057
1058	or	%l4,%l5,%g3
1059	and	%l4,%l5,%g4
1060	and	%l6,%g3,%g3
1061	or	%g3,%g4,%g4	! Maj(a,b,c)
1062	add	%g5,%g2,%g2		! +=K[20]
1063	add	%g4,%l3,%l3
1064
1065	add	%g2,%l7,%l7
1066	add	%g2,%l3,%l3
1067	srlx	%o3,32,%i5
1068	srl	%i5,3,%g2		!! Xupdate(21)
1069	sll	%i5,14,%g4
1070	srl	%i5,7,%g3
1071	xor	%g4,%g2,%g2
1072	sll	%g4,11,%g4
1073	xor	%g3,%g2,%g2
1074	srl	%i5,18,%g3
1075	xor	%g4,%g2,%g2
1076	srl	%o1,10,%g5
1077	xor	%g3,%g2,%g2			! T1=sigma0(X[i+1])
1078	sll	%o1,13,%g4
1079	srl	%o1,17,%g3
1080	xor	%g4,%g5,%g5
1081	sll	%g4,2,%g4
1082	xor	%g3,%g5,%g5
1083	srl	%o1,19,%g3
1084	xor	%g4,%g5,%g5
1085	srlx	%o7,32,%g4	! X[i+9]
1086	xor	%g3,%g5,%g5		! sigma1(X[i+14])
1087	srl	%o2,0,%g3
1088	add	%g5,%g4,%g4
1089	add	%o2,%g2,%g2			! +=X[i]
1090	xor	%g3,%o2,%o2
1091	add	%g4,%g2,%g2
1092
1093	srl	%g2,0,%g2
1094	or	%g2,%o2,%o2
1095	add	%l2,%g2,%g2
1096	srl	%l7,6,%l2	!! 21
1097	xor	%l0,%l1,%g5
1098	sll	%l7,7,%g4
1099	and	%l7,%g5,%g5
1100	srl	%l7,11,%g3
1101	xor	%g4,%l2,%l2
1102	sll	%l7,21,%g4
1103	xor	%g3,%l2,%l2
1104	srl	%l7,25,%g3
1105	xor	%g4,%l2,%l2
1106	sll	%l7,26,%g4
1107	xor	%g3,%l2,%l2
1108	xor	%l1,%g5,%g5		! Ch(e,f,g)
1109	xor	%g4,%l2,%g3		! Sigma1(e)
1110
1111	srl	%l3,2,%l2
1112	add	%g5,%g2,%g2
1113	ld	[%i3+84],%g5	! K[21]
1114	sll	%l3,10,%g4
1115	add	%g3,%g2,%g2
1116	srl	%l3,13,%g3
1117	xor	%g4,%l2,%l2
1118	sll	%l3,19,%g4
1119	xor	%g3,%l2,%l2
1120	srl	%l3,22,%g3
1121	xor	%g4,%l2,%l2
1122	sll	%l3,30,%g4
1123	xor	%g3,%l2,%l2
1124	xor	%g4,%l2,%l2		! Sigma0(a)
1125
1126	or	%l3,%l4,%g3
1127	and	%l3,%l4,%g4
1128	and	%l5,%g3,%g3
1129	or	%g3,%g4,%g4	! Maj(a,b,c)
1130	add	%g5,%g2,%g2		! +=K[21]
1131	add	%g4,%l2,%l2
1132
1133	add	%g2,%l6,%l6
1134	add	%g2,%l2,%l2
1135	srl	%o3,3,%g2		!! Xupdate(22)
1136	sll	%o3,14,%g4
1137	srl	%o3,7,%g3
1138	xor	%g4,%g2,%g2
1139	sll	%g4,11,%g4
1140	xor	%g3,%g2,%g2
1141	srl	%o3,18,%g3
1142	xor	%g4,%g2,%g2
1143	srlx	%o2,32,%i5
1144	srl	%i5,10,%g5
1145	xor	%g3,%g2,%g2			! T1=sigma0(X[i+1])
1146	sll	%i5,13,%g4
1147	srl	%i5,17,%g3
1148	xor	%g4,%g5,%g5
1149	sll	%g4,2,%g4
1150	xor	%g3,%g5,%g5
1151	srl	%i5,19,%g3
1152	xor	%g4,%g5,%g5
1153	srlx	%o3,32,%g4		! X[i]
1154	xor	%g3,%g5,%g5		! sigma1(X[i+14])
1155	add	%o7,%g2,%g2			! +=X[i+9]
1156	add	%g5,%g4,%g4
1157	srl	%o3,0,%o3
1158	add	%g4,%g2,%g2
1159
1160	sllx	%g2,32,%g3
1161	or	%g3,%o3,%o3
1162	add	%l1,%g2,%g2
1163	srl	%l6,6,%l1	!! 22
1164	xor	%l7,%l0,%g5
1165	sll	%l6,7,%g4
1166	and	%l6,%g5,%g5
1167	srl	%l6,11,%g3
1168	xor	%g4,%l1,%l1
1169	sll	%l6,21,%g4
1170	xor	%g3,%l1,%l1
1171	srl	%l6,25,%g3
1172	xor	%g4,%l1,%l1
1173	sll	%l6,26,%g4
1174	xor	%g3,%l1,%l1
1175	xor	%l0,%g5,%g5		! Ch(e,f,g)
1176	xor	%g4,%l1,%g3		! Sigma1(e)
1177
1178	srl	%l2,2,%l1
1179	add	%g5,%g2,%g2
1180	ld	[%i3+88],%g5	! K[22]
1181	sll	%l2,10,%g4
1182	add	%g3,%g2,%g2
1183	srl	%l2,13,%g3
1184	xor	%g4,%l1,%l1
1185	sll	%l2,19,%g4
1186	xor	%g3,%l1,%l1
1187	srl	%l2,22,%g3
1188	xor	%g4,%l1,%l1
1189	sll	%l2,30,%g4
1190	xor	%g3,%l1,%l1
1191	xor	%g4,%l1,%l1		! Sigma0(a)
1192
1193	or	%l2,%l3,%g3
1194	and	%l2,%l3,%g4
1195	and	%l4,%g3,%g3
1196	or	%g3,%g4,%g4	! Maj(a,b,c)
1197	add	%g5,%g2,%g2		! +=K[22]
1198	add	%g4,%l1,%l1
1199
1200	add	%g2,%l5,%l5
1201	add	%g2,%l1,%l1
1202	srlx	%o4,32,%i5
1203	srl	%i5,3,%g2		!! Xupdate(23)
1204	sll	%i5,14,%g4
1205	srl	%i5,7,%g3
1206	xor	%g4,%g2,%g2
1207	sll	%g4,11,%g4
1208	xor	%g3,%g2,%g2
1209	srl	%i5,18,%g3
1210	xor	%g4,%g2,%g2
1211	srl	%o2,10,%g5
1212	xor	%g3,%g2,%g2			! T1=sigma0(X[i+1])
1213	sll	%o2,13,%g4
1214	srl	%o2,17,%g3
1215	xor	%g4,%g5,%g5
1216	sll	%g4,2,%g4
1217	xor	%g3,%g5,%g5
1218	srl	%o2,19,%g3
1219	xor	%g4,%g5,%g5
1220	srlx	%o0,32,%g4	! X[i+9]
1221	xor	%g3,%g5,%g5		! sigma1(X[i+14])
1222	srl	%o3,0,%g3
1223	add	%g5,%g4,%g4
1224	add	%o3,%g2,%g2			! +=X[i]
1225	xor	%g3,%o3,%o3
1226	add	%g4,%g2,%g2
1227
1228	srl	%g2,0,%g2
1229	or	%g2,%o3,%o3
1230	add	%l0,%g2,%g2
1231	srl	%l5,6,%l0	!! 23
1232	xor	%l6,%l7,%g5
1233	sll	%l5,7,%g4
1234	and	%l5,%g5,%g5
1235	srl	%l5,11,%g3
1236	xor	%g4,%l0,%l0
1237	sll	%l5,21,%g4
1238	xor	%g3,%l0,%l0
1239	srl	%l5,25,%g3
1240	xor	%g4,%l0,%l0
1241	sll	%l5,26,%g4
1242	xor	%g3,%l0,%l0
1243	xor	%l7,%g5,%g5		! Ch(e,f,g)
1244	xor	%g4,%l0,%g3		! Sigma1(e)
1245
1246	srl	%l1,2,%l0
1247	add	%g5,%g2,%g2
1248	ld	[%i3+92],%g5	! K[23]
1249	sll	%l1,10,%g4
1250	add	%g3,%g2,%g2
1251	srl	%l1,13,%g3
1252	xor	%g4,%l0,%l0
1253	sll	%l1,19,%g4
1254	xor	%g3,%l0,%l0
1255	srl	%l1,22,%g3
1256	xor	%g4,%l0,%l0
1257	sll	%l1,30,%g4
1258	xor	%g3,%l0,%l0
1259	xor	%g4,%l0,%l0		! Sigma0(a)
1260
1261	or	%l1,%l2,%g3
1262	and	%l1,%l2,%g4
1263	and	%l3,%g3,%g3
1264	or	%g3,%g4,%g4	! Maj(a,b,c)
1265	add	%g5,%g2,%g2		! +=K[23]
1266	add	%g4,%l0,%l0
1267
1268	add	%g2,%l4,%l4
1269	add	%g2,%l0,%l0
1270	srl	%o4,3,%g2		!! Xupdate(24)
1271	sll	%o4,14,%g4
1272	srl	%o4,7,%g3
1273	xor	%g4,%g2,%g2
1274	sll	%g4,11,%g4
1275	xor	%g3,%g2,%g2
1276	srl	%o4,18,%g3
1277	xor	%g4,%g2,%g2
1278	srlx	%o3,32,%i5
1279	srl	%i5,10,%g5
1280	xor	%g3,%g2,%g2			! T1=sigma0(X[i+1])
1281	sll	%i5,13,%g4
1282	srl	%i5,17,%g3
1283	xor	%g4,%g5,%g5
1284	sll	%g4,2,%g4
1285	xor	%g3,%g5,%g5
1286	srl	%i5,19,%g3
1287	xor	%g4,%g5,%g5
1288	srlx	%o4,32,%g4		! X[i]
1289	xor	%g3,%g5,%g5		! sigma1(X[i+14])
1290	add	%o0,%g2,%g2			! +=X[i+9]
1291	add	%g5,%g4,%g4
1292	srl	%o4,0,%o4
1293	add	%g4,%g2,%g2
1294
1295	sllx	%g2,32,%g3
1296	or	%g3,%o4,%o4
1297	add	%l7,%g2,%g2
1298	srl	%l4,6,%l7	!! 24
1299	xor	%l5,%l6,%g5
1300	sll	%l4,7,%g4
1301	and	%l4,%g5,%g5
1302	srl	%l4,11,%g3
1303	xor	%g4,%l7,%l7
1304	sll	%l4,21,%g4
1305	xor	%g3,%l7,%l7
1306	srl	%l4,25,%g3
1307	xor	%g4,%l7,%l7
1308	sll	%l4,26,%g4
1309	xor	%g3,%l7,%l7
1310	xor	%l6,%g5,%g5		! Ch(e,f,g)
1311	xor	%g4,%l7,%g3		! Sigma1(e)
1312
1313	srl	%l0,2,%l7
1314	add	%g5,%g2,%g2
1315	ld	[%i3+96],%g5	! K[24]
1316	sll	%l0,10,%g4
1317	add	%g3,%g2,%g2
1318	srl	%l0,13,%g3
1319	xor	%g4,%l7,%l7
1320	sll	%l0,19,%g4
1321	xor	%g3,%l7,%l7
1322	srl	%l0,22,%g3
1323	xor	%g4,%l7,%l7
1324	sll	%l0,30,%g4
1325	xor	%g3,%l7,%l7
1326	xor	%g4,%l7,%l7		! Sigma0(a)
1327
1328	or	%l0,%l1,%g3
1329	and	%l0,%l1,%g4
1330	and	%l2,%g3,%g3
1331	or	%g3,%g4,%g4	! Maj(a,b,c)
1332	add	%g5,%g2,%g2		! +=K[24]
1333	add	%g4,%l7,%l7
1334
1335	add	%g2,%l3,%l3
1336	add	%g2,%l7,%l7
1337	srlx	%o5,32,%i5
1338	srl	%i5,3,%g2		!! Xupdate(25)
1339	sll	%i5,14,%g4
1340	srl	%i5,7,%g3
1341	xor	%g4,%g2,%g2
1342	sll	%g4,11,%g4
1343	xor	%g3,%g2,%g2
1344	srl	%i5,18,%g3
1345	xor	%g4,%g2,%g2
1346	srl	%o3,10,%g5
1347	xor	%g3,%g2,%g2			! T1=sigma0(X[i+1])
1348	sll	%o3,13,%g4
1349	srl	%o3,17,%g3
1350	xor	%g4,%g5,%g5
1351	sll	%g4,2,%g4
1352	xor	%g3,%g5,%g5
1353	srl	%o3,19,%g3
1354	xor	%g4,%g5,%g5
1355	srlx	%o1,32,%g4	! X[i+9]
1356	xor	%g3,%g5,%g5		! sigma1(X[i+14])
1357	srl	%o4,0,%g3
1358	add	%g5,%g4,%g4
1359	add	%o4,%g2,%g2			! +=X[i]
1360	xor	%g3,%o4,%o4
1361	add	%g4,%g2,%g2
1362
1363	srl	%g2,0,%g2
1364	or	%g2,%o4,%o4
1365	add	%l6,%g2,%g2
1366	srl	%l3,6,%l6	!! 25
1367	xor	%l4,%l5,%g5
1368	sll	%l3,7,%g4
1369	and	%l3,%g5,%g5
1370	srl	%l3,11,%g3
1371	xor	%g4,%l6,%l6
1372	sll	%l3,21,%g4
1373	xor	%g3,%l6,%l6
1374	srl	%l3,25,%g3
1375	xor	%g4,%l6,%l6
1376	sll	%l3,26,%g4
1377	xor	%g3,%l6,%l6
1378	xor	%l5,%g5,%g5		! Ch(e,f,g)
1379	xor	%g4,%l6,%g3		! Sigma1(e)
1380
1381	srl	%l7,2,%l6
1382	add	%g5,%g2,%g2
1383	ld	[%i3+100],%g5	! K[25]
1384	sll	%l7,10,%g4
1385	add	%g3,%g2,%g2
1386	srl	%l7,13,%g3
1387	xor	%g4,%l6,%l6
1388	sll	%l7,19,%g4
1389	xor	%g3,%l6,%l6
1390	srl	%l7,22,%g3
1391	xor	%g4,%l6,%l6
1392	sll	%l7,30,%g4
1393	xor	%g3,%l6,%l6
1394	xor	%g4,%l6,%l6		! Sigma0(a)
1395
1396	or	%l7,%l0,%g3
1397	and	%l7,%l0,%g4
1398	and	%l1,%g3,%g3
1399	or	%g3,%g4,%g4	! Maj(a,b,c)
1400	add	%g5,%g2,%g2		! +=K[25]
1401	add	%g4,%l6,%l6
1402
1403	add	%g2,%l2,%l2
1404	add	%g2,%l6,%l6
1405	srl	%o5,3,%g2		!! Xupdate(26)
1406	sll	%o5,14,%g4
1407	srl	%o5,7,%g3
1408	xor	%g4,%g2,%g2
1409	sll	%g4,11,%g4
1410	xor	%g3,%g2,%g2
1411	srl	%o5,18,%g3
1412	xor	%g4,%g2,%g2
1413	srlx	%o4,32,%i5
1414	srl	%i5,10,%g5
1415	xor	%g3,%g2,%g2			! T1=sigma0(X[i+1])
1416	sll	%i5,13,%g4
1417	srl	%i5,17,%g3
1418	xor	%g4,%g5,%g5
1419	sll	%g4,2,%g4
1420	xor	%g3,%g5,%g5
1421	srl	%i5,19,%g3
1422	xor	%g4,%g5,%g5
1423	srlx	%o5,32,%g4		! X[i]
1424	xor	%g3,%g5,%g5		! sigma1(X[i+14])
1425	add	%o1,%g2,%g2			! +=X[i+9]
1426	add	%g5,%g4,%g4
1427	srl	%o5,0,%o5
1428	add	%g4,%g2,%g2
1429
1430	sllx	%g2,32,%g3
1431	or	%g3,%o5,%o5
1432	add	%l5,%g2,%g2
1433	srl	%l2,6,%l5	!! 26
1434	xor	%l3,%l4,%g5
1435	sll	%l2,7,%g4
1436	and	%l2,%g5,%g5
1437	srl	%l2,11,%g3
1438	xor	%g4,%l5,%l5
1439	sll	%l2,21,%g4
1440	xor	%g3,%l5,%l5
1441	srl	%l2,25,%g3
1442	xor	%g4,%l5,%l5
1443	sll	%l2,26,%g4
1444	xor	%g3,%l5,%l5
1445	xor	%l4,%g5,%g5		! Ch(e,f,g)
1446	xor	%g4,%l5,%g3		! Sigma1(e)
1447
1448	srl	%l6,2,%l5
1449	add	%g5,%g2,%g2
1450	ld	[%i3+104],%g5	! K[26]
1451	sll	%l6,10,%g4
1452	add	%g3,%g2,%g2
1453	srl	%l6,13,%g3
1454	xor	%g4,%l5,%l5
1455	sll	%l6,19,%g4
1456	xor	%g3,%l5,%l5
1457	srl	%l6,22,%g3
1458	xor	%g4,%l5,%l5
1459	sll	%l6,30,%g4
1460	xor	%g3,%l5,%l5
1461	xor	%g4,%l5,%l5		! Sigma0(a)
1462
1463	or	%l6,%l7,%g3
1464	and	%l6,%l7,%g4
1465	and	%l0,%g3,%g3
1466	or	%g3,%g4,%g4	! Maj(a,b,c)
1467	add	%g5,%g2,%g2		! +=K[26]
1468	add	%g4,%l5,%l5
1469
1470	add	%g2,%l1,%l1
1471	add	%g2,%l5,%l5
1472	srlx	%g1,32,%i5
1473	srl	%i5,3,%g2		!! Xupdate(27)
1474	sll	%i5,14,%g4
1475	srl	%i5,7,%g3
1476	xor	%g4,%g2,%g2
1477	sll	%g4,11,%g4
1478	xor	%g3,%g2,%g2
1479	srl	%i5,18,%g3
1480	xor	%g4,%g2,%g2
1481	srl	%o4,10,%g5
1482	xor	%g3,%g2,%g2			! T1=sigma0(X[i+1])
1483	sll	%o4,13,%g4
1484	srl	%o4,17,%g3
1485	xor	%g4,%g5,%g5
1486	sll	%g4,2,%g4
1487	xor	%g3,%g5,%g5
1488	srl	%o4,19,%g3
1489	xor	%g4,%g5,%g5
1490	srlx	%o2,32,%g4	! X[i+9]
1491	xor	%g3,%g5,%g5		! sigma1(X[i+14])
1492	srl	%o5,0,%g3
1493	add	%g5,%g4,%g4
1494	add	%o5,%g2,%g2			! +=X[i]
1495	xor	%g3,%o5,%o5
1496	add	%g4,%g2,%g2
1497
1498	srl	%g2,0,%g2
1499	or	%g2,%o5,%o5
1500	add	%l4,%g2,%g2
1501	srl	%l1,6,%l4	!! 27
1502	xor	%l2,%l3,%g5
1503	sll	%l1,7,%g4
1504	and	%l1,%g5,%g5
1505	srl	%l1,11,%g3
1506	xor	%g4,%l4,%l4
1507	sll	%l1,21,%g4
1508	xor	%g3,%l4,%l4
1509	srl	%l1,25,%g3
1510	xor	%g4,%l4,%l4
1511	sll	%l1,26,%g4
1512	xor	%g3,%l4,%l4
1513	xor	%l3,%g5,%g5		! Ch(e,f,g)
1514	xor	%g4,%l4,%g3		! Sigma1(e)
1515
1516	srl	%l5,2,%l4
1517	add	%g5,%g2,%g2
1518	ld	[%i3+108],%g5	! K[27]
1519	sll	%l5,10,%g4
1520	add	%g3,%g2,%g2
1521	srl	%l5,13,%g3
1522	xor	%g4,%l4,%l4
1523	sll	%l5,19,%g4
1524	xor	%g3,%l4,%l4
1525	srl	%l5,22,%g3
1526	xor	%g4,%l4,%l4
1527	sll	%l5,30,%g4
1528	xor	%g3,%l4,%l4
1529	xor	%g4,%l4,%l4		! Sigma0(a)
1530
1531	or	%l5,%l6,%g3
1532	and	%l5,%l6,%g4
1533	and	%l7,%g3,%g3
1534	or	%g3,%g4,%g4	! Maj(a,b,c)
1535	add	%g5,%g2,%g2		! +=K[27]
1536	add	%g4,%l4,%l4
1537
1538	add	%g2,%l0,%l0
1539	add	%g2,%l4,%l4
1540	srl	%g1,3,%g2		!! Xupdate(28)
1541	sll	%g1,14,%g4
1542	srl	%g1,7,%g3
1543	xor	%g4,%g2,%g2
1544	sll	%g4,11,%g4
1545	xor	%g3,%g2,%g2
1546	srl	%g1,18,%g3
1547	xor	%g4,%g2,%g2
1548	srlx	%o5,32,%i5
1549	srl	%i5,10,%g5
1550	xor	%g3,%g2,%g2			! T1=sigma0(X[i+1])
1551	sll	%i5,13,%g4
1552	srl	%i5,17,%g3
1553	xor	%g4,%g5,%g5
1554	sll	%g4,2,%g4
1555	xor	%g3,%g5,%g5
1556	srl	%i5,19,%g3
1557	xor	%g4,%g5,%g5
1558	srlx	%g1,32,%g4		! X[i]
1559	xor	%g3,%g5,%g5		! sigma1(X[i+14])
1560	add	%o2,%g2,%g2			! +=X[i+9]
1561	add	%g5,%g4,%g4
1562	srl	%g1,0,%g1
1563	add	%g4,%g2,%g2
1564
1565	sllx	%g2,32,%g3
1566	or	%g3,%g1,%g1
1567	add	%l3,%g2,%g2
1568	srl	%l0,6,%l3	!! 28
1569	xor	%l1,%l2,%g5
1570	sll	%l0,7,%g4
1571	and	%l0,%g5,%g5
1572	srl	%l0,11,%g3
1573	xor	%g4,%l3,%l3
1574	sll	%l0,21,%g4
1575	xor	%g3,%l3,%l3
1576	srl	%l0,25,%g3
1577	xor	%g4,%l3,%l3
1578	sll	%l0,26,%g4
1579	xor	%g3,%l3,%l3
1580	xor	%l2,%g5,%g5		! Ch(e,f,g)
1581	xor	%g4,%l3,%g3		! Sigma1(e)
1582
1583	srl	%l4,2,%l3
1584	add	%g5,%g2,%g2
1585	ld	[%i3+112],%g5	! K[28]
1586	sll	%l4,10,%g4
1587	add	%g3,%g2,%g2
1588	srl	%l4,13,%g3
1589	xor	%g4,%l3,%l3
1590	sll	%l4,19,%g4
1591	xor	%g3,%l3,%l3
1592	srl	%l4,22,%g3
1593	xor	%g4,%l3,%l3
1594	sll	%l4,30,%g4
1595	xor	%g3,%l3,%l3
1596	xor	%g4,%l3,%l3		! Sigma0(a)
1597
1598	or	%l4,%l5,%g3
1599	and	%l4,%l5,%g4
1600	and	%l6,%g3,%g3
1601	or	%g3,%g4,%g4	! Maj(a,b,c)
1602	add	%g5,%g2,%g2		! +=K[28]
1603	add	%g4,%l3,%l3
1604
1605	add	%g2,%l7,%l7
1606	add	%g2,%l3,%l3
1607	srlx	%o7,32,%i5
1608	srl	%i5,3,%g2		!! Xupdate(29)
1609	sll	%i5,14,%g4
1610	srl	%i5,7,%g3
1611	xor	%g4,%g2,%g2
1612	sll	%g4,11,%g4
1613	xor	%g3,%g2,%g2
1614	srl	%i5,18,%g3
1615	xor	%g4,%g2,%g2
1616	srl	%o5,10,%g5
1617	xor	%g3,%g2,%g2			! T1=sigma0(X[i+1])
1618	sll	%o5,13,%g4
1619	srl	%o5,17,%g3
1620	xor	%g4,%g5,%g5
1621	sll	%g4,2,%g4
1622	xor	%g3,%g5,%g5
1623	srl	%o5,19,%g3
1624	xor	%g4,%g5,%g5
1625	srlx	%o3,32,%g4	! X[i+9]
1626	xor	%g3,%g5,%g5		! sigma1(X[i+14])
1627	srl	%g1,0,%g3
1628	add	%g5,%g4,%g4
1629	add	%g1,%g2,%g2			! +=X[i]
1630	xor	%g3,%g1,%g1
1631	add	%g4,%g2,%g2
1632
1633	srl	%g2,0,%g2
1634	or	%g2,%g1,%g1
1635	add	%l2,%g2,%g2
1636	srl	%l7,6,%l2	!! 29
1637	xor	%l0,%l1,%g5
1638	sll	%l7,7,%g4
1639	and	%l7,%g5,%g5
1640	srl	%l7,11,%g3
1641	xor	%g4,%l2,%l2
1642	sll	%l7,21,%g4
1643	xor	%g3,%l2,%l2
1644	srl	%l7,25,%g3
1645	xor	%g4,%l2,%l2
1646	sll	%l7,26,%g4
1647	xor	%g3,%l2,%l2
1648	xor	%l1,%g5,%g5		! Ch(e,f,g)
1649	xor	%g4,%l2,%g3		! Sigma1(e)
1650
1651	srl	%l3,2,%l2
1652	add	%g5,%g2,%g2
1653	ld	[%i3+116],%g5	! K[29]
1654	sll	%l3,10,%g4
1655	add	%g3,%g2,%g2
1656	srl	%l3,13,%g3
1657	xor	%g4,%l2,%l2
1658	sll	%l3,19,%g4
1659	xor	%g3,%l2,%l2
1660	srl	%l3,22,%g3
1661	xor	%g4,%l2,%l2
1662	sll	%l3,30,%g4
1663	xor	%g3,%l2,%l2
1664	xor	%g4,%l2,%l2		! Sigma0(a)
1665
1666	or	%l3,%l4,%g3
1667	and	%l3,%l4,%g4
1668	and	%l5,%g3,%g3
1669	or	%g3,%g4,%g4	! Maj(a,b,c)
1670	add	%g5,%g2,%g2		! +=K[29]
1671	add	%g4,%l2,%l2
1672
1673	add	%g2,%l6,%l6
1674	add	%g2,%l2,%l2
1675	srl	%o7,3,%g2		!! Xupdate(30)
1676	sll	%o7,14,%g4
1677	srl	%o7,7,%g3
1678	xor	%g4,%g2,%g2
1679	sll	%g4,11,%g4
1680	xor	%g3,%g2,%g2
1681	srl	%o7,18,%g3
1682	xor	%g4,%g2,%g2
1683	srlx	%g1,32,%i5
1684	srl	%i5,10,%g5
1685	xor	%g3,%g2,%g2			! T1=sigma0(X[i+1])
1686	sll	%i5,13,%g4
1687	srl	%i5,17,%g3
1688	xor	%g4,%g5,%g5
1689	sll	%g4,2,%g4
1690	xor	%g3,%g5,%g5
1691	srl	%i5,19,%g3
1692	xor	%g4,%g5,%g5
1693	srlx	%o7,32,%g4		! X[i]
1694	xor	%g3,%g5,%g5		! sigma1(X[i+14])
1695	add	%o3,%g2,%g2			! +=X[i+9]
1696	add	%g5,%g4,%g4
1697	srl	%o7,0,%o7
1698	add	%g4,%g2,%g2
1699
1700	sllx	%g2,32,%g3
1701	or	%g3,%o7,%o7
1702	add	%l1,%g2,%g2
1703	srl	%l6,6,%l1	!! 30
1704	xor	%l7,%l0,%g5
1705	sll	%l6,7,%g4
1706	and	%l6,%g5,%g5
1707	srl	%l6,11,%g3
1708	xor	%g4,%l1,%l1
1709	sll	%l6,21,%g4
1710	xor	%g3,%l1,%l1
1711	srl	%l6,25,%g3
1712	xor	%g4,%l1,%l1
1713	sll	%l6,26,%g4
1714	xor	%g3,%l1,%l1
1715	xor	%l0,%g5,%g5		! Ch(e,f,g)
1716	xor	%g4,%l1,%g3		! Sigma1(e)
1717
1718	srl	%l2,2,%l1
1719	add	%g5,%g2,%g2
1720	ld	[%i3+120],%g5	! K[30]
1721	sll	%l2,10,%g4
1722	add	%g3,%g2,%g2
1723	srl	%l2,13,%g3
1724	xor	%g4,%l1,%l1
1725	sll	%l2,19,%g4
1726	xor	%g3,%l1,%l1
1727	srl	%l2,22,%g3
1728	xor	%g4,%l1,%l1
1729	sll	%l2,30,%g4
1730	xor	%g3,%l1,%l1
1731	xor	%g4,%l1,%l1		! Sigma0(a)
1732
1733	or	%l2,%l3,%g3
1734	and	%l2,%l3,%g4
1735	and	%l4,%g3,%g3
1736	or	%g3,%g4,%g4	! Maj(a,b,c)
1737	add	%g5,%g2,%g2		! +=K[30]
1738	add	%g4,%l1,%l1
1739
1740	add	%g2,%l5,%l5
1741	add	%g2,%l1,%l1
1742	srlx	%o0,32,%i5
1743	srl	%i5,3,%g2		!! Xupdate(31)
1744	sll	%i5,14,%g4
1745	srl	%i5,7,%g3
1746	xor	%g4,%g2,%g2
1747	sll	%g4,11,%g4
1748	xor	%g3,%g2,%g2
1749	srl	%i5,18,%g3
1750	xor	%g4,%g2,%g2
1751	srl	%g1,10,%g5
1752	xor	%g3,%g2,%g2			! T1=sigma0(X[i+1])
1753	sll	%g1,13,%g4
1754	srl	%g1,17,%g3
1755	xor	%g4,%g5,%g5
1756	sll	%g4,2,%g4
1757	xor	%g3,%g5,%g5
1758	srl	%g1,19,%g3
1759	xor	%g4,%g5,%g5
1760	srlx	%o4,32,%g4	! X[i+9]
1761	xor	%g3,%g5,%g5		! sigma1(X[i+14])
1762	srl	%o7,0,%g3
1763	add	%g5,%g4,%g4
1764	add	%o7,%g2,%g2			! +=X[i]
1765	xor	%g3,%o7,%o7
1766	add	%g4,%g2,%g2
1767
1768	srl	%g2,0,%g2
1769	or	%g2,%o7,%o7
1770	add	%l0,%g2,%g2
1771	srl	%l5,6,%l0	!! 31
1772	xor	%l6,%l7,%g5
1773	sll	%l5,7,%g4
1774	and	%l5,%g5,%g5
1775	srl	%l5,11,%g3
1776	xor	%g4,%l0,%l0
1777	sll	%l5,21,%g4
1778	xor	%g3,%l0,%l0
1779	srl	%l5,25,%g3
1780	xor	%g4,%l0,%l0
1781	sll	%l5,26,%g4
1782	xor	%g3,%l0,%l0
1783	xor	%l7,%g5,%g5		! Ch(e,f,g)
1784	xor	%g4,%l0,%g3		! Sigma1(e)
1785
1786	srl	%l1,2,%l0
1787	add	%g5,%g2,%g2
1788	ld	[%i3+124],%g5	! K[31]
1789	sll	%l1,10,%g4
1790	add	%g3,%g2,%g2
1791	srl	%l1,13,%g3
1792	xor	%g4,%l0,%l0
1793	sll	%l1,19,%g4
1794	xor	%g3,%l0,%l0
1795	srl	%l1,22,%g3
1796	xor	%g4,%l0,%l0
1797	sll	%l1,30,%g4
1798	xor	%g3,%l0,%l0
1799	xor	%g4,%l0,%l0		! Sigma0(a)
1800
1801	or	%l1,%l2,%g3
1802	and	%l1,%l2,%g4
1803	and	%l3,%g3,%g3
1804	or	%g3,%g4,%g4	! Maj(a,b,c)
1805	add	%g5,%g2,%g2		! +=K[31]
1806	add	%g4,%l0,%l0
1807
1808	add	%g2,%l4,%l4
1809	add	%g2,%l0,%l0
1810	and	%g5,0xfff,%g5
1811	cmp	%g5,2290
1812	bne	.L16_xx
1813	add	%i3,64,%i3	! Ktbl+=16
1814
1815	ld	[%i0+0],%o0
1816	ld	[%i0+4],%o1
1817	ld	[%i0+8],%o2
1818	ld	[%i0+12],%o3
1819	ld	[%i0+16],%o4
1820	ld	[%i0+20],%o5
1821	ld	[%i0+24],%g1
1822	ld	[%i0+28],%o7
1823
1824	add	%l0,%o0,%l0
1825	st	%l0,[%i0+0]
1826	add	%l1,%o1,%l1
1827	st	%l1,[%i0+4]
1828	add	%l2,%o2,%l2
1829	st	%l2,[%i0+8]
1830	add	%l3,%o3,%l3
1831	st	%l3,[%i0+12]
1832	add	%l4,%o4,%l4
1833	st	%l4,[%i0+16]
1834	add	%l5,%o5,%l5
1835	st	%l5,[%i0+20]
1836	add	%l6,%g1,%l6
1837	st	%l6,[%i0+24]
1838	add	%l7,%o7,%l7
1839	st	%l7,[%i0+28]
1840	add	%i1,64,%i1		! advance inp
1841	cmp	%i1,%i2
1842	bne	%icc,.Lloop
1843	sub	%i3,192,%i3	! rewind Ktbl
1844
1845	ret
1846	restore
1847.type	sha256_block_data_order,#function
1848.size	sha256_block_data_order,(.-sha256_block_data_order)
1849.asciz	"SHA256 block transform for SPARCv9, CRYPTOGAMS by <appro@openssl.org>"
1850.align	4
1851