1#ifdef __linux__
2#include <asm/regdef.h>
3#else
4#include <asm.h>
5#include <regdef.h>
6#endif
7
8.text
9
10.set	noat
11.set	noreorder
12.globl	sha1_block_data_order
13.align	5
14.ent	sha1_block_data_order
15sha1_block_data_order:
16	lda	sp,-64(sp)
17	stq	ra,0(sp)
18	stq	s0,8(sp)
19	stq	s1,16(sp)
20	stq	s2,24(sp)
21	stq	s3,32(sp)
22	stq	s4,40(sp)
23	stq	s5,48(sp)
24	stq	fp,56(sp)
25	.mask	0x0400fe00,-64
26	.frame	sp,64,ra
27	.prologue 0
28
29	ldl	a3,0(a0)
30	ldl	a4,4(a0)
31	sll	a2,6,a2
32	ldl	a5,8(a0)
33	ldl	t8,12(a0)
34	ldl	t9,16(a0)
35	addq	a1,a2,a2
36
37.Lloop:
38	.set	noreorder
39	ldah	AT,23170(zero)
40	zapnot	a4,0xf,a4
41	lda	AT,31129(AT)	# K_00_19
42	ldq_u	$0,0+0(a1)
43	ldq_u	$1,0+7(a1)
44	ldq_u	$2,(0+2)*4+0(a1)
45	ldq_u	$3,(0+2)*4+7(a1)
46	extql	$0,a1,$0
47	extqh	$1,a1,$1
48
49	or	$1,$0,$0	# pair of 32-bit values are fetched
50
51	srl	$0,24,t10		# vectorized byte swap
52	srl	$0,8,ra
53
54	sll	$0,8,t12
55	sll	$0,24,$0
56	zapnot	t10,0x11,t10
57	zapnot	ra,0x22,ra
58
59	zapnot	$0,0x88,$0
60	or	t10,ra,t10
61	zapnot	t12,0x44,t12
62	sll	a3,5,t11
63
64	or	$0,t10,$0
65	addl	AT,t9,t9
66	and	a4,a5,ra
67	zapnot	a3,0xf,a3
68
69	or	$0,t12,$0
70	srl	a3,27,t10
71	bic	t8,a4,t12
72	sll	a4,30,a4
73
74	extll	$0,4,$1	# extract upper half
75	or	ra,t12,ra
76	addl	$0,t9,t9
77
78	addl	t11,t9,t9
79	srl	a4,32,t12
80	zapnot	$0,0xf,$0
81
82	addl	t10,t9,t9
83	addl	ra,t9,t9
84	or	t12,a4,a4
85	sll	t9,5,t11
86	addl	AT,t8,t8
87	and	a3,a4,ra
88	zapnot	t9,0xf,t9
89
90	srl	t9,27,t10
91	addl	$1,t8,t8
92	bic	a5,a3,t12
93	sll	a3,30,a3
94
95	or	ra,t12,ra
96	addl	t11,t8,t8
97	srl	a3,32,t12
98	zapnot	$1,0xf,$1
99
100	addl	t10,t8,t8
101	addl	ra,t8,t8
102	or	t12,a3,a3
103	ldq_u	$4,(2+2)*4+0(a1)
104	ldq_u	$5,(2+2)*4+7(a1)
105	extql	$2,a1,$2
106	extqh	$3,a1,$3
107
108	or	$3,$2,$2	# pair of 32-bit values are fetched
109
110	srl	$2,24,t10		# vectorized byte swap
111	srl	$2,8,ra
112
113	sll	$2,8,t12
114	sll	$2,24,$2
115	zapnot	t10,0x11,t10
116	zapnot	ra,0x22,ra
117
118	zapnot	$2,0x88,$2
119	or	t10,ra,t10
120	zapnot	t12,0x44,t12
121	sll	t8,5,t11
122
123	or	$2,t10,$2
124	addl	AT,a5,a5
125	and	t9,a3,ra
126	zapnot	t8,0xf,t8
127
128	or	$2,t12,$2
129	srl	t8,27,t10
130	bic	a4,t9,t12
131	sll	t9,30,t9
132
133	extll	$2,4,$3	# extract upper half
134	or	ra,t12,ra
135	addl	$2,a5,a5
136
137	addl	t11,a5,a5
138	srl	t9,32,t12
139	zapnot	$2,0xf,$2
140
141	addl	t10,a5,a5
142	addl	ra,a5,a5
143	or	t12,t9,t9
144	sll	a5,5,t11
145	addl	AT,a4,a4
146	and	t8,t9,ra
147	zapnot	a5,0xf,a5
148
149	srl	a5,27,t10
150	addl	$3,a4,a4
151	bic	a3,t8,t12
152	sll	t8,30,t8
153
154	or	ra,t12,ra
155	addl	t11,a4,a4
156	srl	t8,32,t12
157	zapnot	$3,0xf,$3
158
159	addl	t10,a4,a4
160	addl	ra,a4,a4
161	or	t12,t8,t8
162	ldq_u	$6,(4+2)*4+0(a1)
163	ldq_u	$7,(4+2)*4+7(a1)
164	extql	$4,a1,$4
165	extqh	$5,a1,$5
166
167	or	$5,$4,$4	# pair of 32-bit values are fetched
168
169	srl	$4,24,t10		# vectorized byte swap
170	srl	$4,8,ra
171
172	sll	$4,8,t12
173	sll	$4,24,$4
174	zapnot	t10,0x11,t10
175	zapnot	ra,0x22,ra
176
177	zapnot	$4,0x88,$4
178	or	t10,ra,t10
179	zapnot	t12,0x44,t12
180	sll	a4,5,t11
181
182	or	$4,t10,$4
183	addl	AT,a3,a3
184	and	a5,t8,ra
185	zapnot	a4,0xf,a4
186
187	or	$4,t12,$4
188	srl	a4,27,t10
189	bic	t9,a5,t12
190	sll	a5,30,a5
191
192	extll	$4,4,$5	# extract upper half
193	or	ra,t12,ra
194	addl	$4,a3,a3
195
196	addl	t11,a3,a3
197	srl	a5,32,t12
198	zapnot	$4,0xf,$4
199
200	addl	t10,a3,a3
201	addl	ra,a3,a3
202	or	t12,a5,a5
203	sll	a3,5,t11
204	addl	AT,t9,t9
205	and	a4,a5,ra
206	zapnot	a3,0xf,a3
207
208	srl	a3,27,t10
209	addl	$5,t9,t9
210	bic	t8,a4,t12
211	sll	a4,30,a4
212
213	or	ra,t12,ra
214	addl	t11,t9,t9
215	srl	a4,32,t12
216	zapnot	$5,0xf,$5
217
218	addl	t10,t9,t9
219	addl	ra,t9,t9
220	or	t12,a4,a4
221	ldq_u	$8,(6+2)*4+0(a1)
222	ldq_u	$9,(6+2)*4+7(a1)
223	extql	$6,a1,$6
224	extqh	$7,a1,$7
225
226	or	$7,$6,$6	# pair of 32-bit values are fetched
227
228	srl	$6,24,t10		# vectorized byte swap
229	srl	$6,8,ra
230
231	sll	$6,8,t12
232	sll	$6,24,$6
233	zapnot	t10,0x11,t10
234	zapnot	ra,0x22,ra
235
236	zapnot	$6,0x88,$6
237	or	t10,ra,t10
238	zapnot	t12,0x44,t12
239	sll	t9,5,t11
240
241	or	$6,t10,$6
242	addl	AT,t8,t8
243	and	a3,a4,ra
244	zapnot	t9,0xf,t9
245
246	or	$6,t12,$6
247	srl	t9,27,t10
248	bic	a5,a3,t12
249	sll	a3,30,a3
250
251	extll	$6,4,$7	# extract upper half
252	or	ra,t12,ra
253	addl	$6,t8,t8
254
255	addl	t11,t8,t8
256	srl	a3,32,t12
257	zapnot	$6,0xf,$6
258
259	addl	t10,t8,t8
260	addl	ra,t8,t8
261	or	t12,a3,a3
262	sll	t8,5,t11
263	addl	AT,a5,a5
264	and	t9,a3,ra
265	zapnot	t8,0xf,t8
266
267	srl	t8,27,t10
268	addl	$7,a5,a5
269	bic	a4,t9,t12
270	sll	t9,30,t9
271
272	or	ra,t12,ra
273	addl	t11,a5,a5
274	srl	t9,32,t12
275	zapnot	$7,0xf,$7
276
277	addl	t10,a5,a5
278	addl	ra,a5,a5
279	or	t12,t9,t9
280	ldq_u	$10,(8+2)*4+0(a1)
281	ldq_u	$11,(8+2)*4+7(a1)
282	extql	$8,a1,$8
283	extqh	$9,a1,$9
284
285	or	$9,$8,$8	# pair of 32-bit values are fetched
286
287	srl	$8,24,t10		# vectorized byte swap
288	srl	$8,8,ra
289
290	sll	$8,8,t12
291	sll	$8,24,$8
292	zapnot	t10,0x11,t10
293	zapnot	ra,0x22,ra
294
295	zapnot	$8,0x88,$8
296	or	t10,ra,t10
297	zapnot	t12,0x44,t12
298	sll	a5,5,t11
299
300	or	$8,t10,$8
301	addl	AT,a4,a4
302	and	t8,t9,ra
303	zapnot	a5,0xf,a5
304
305	or	$8,t12,$8
306	srl	a5,27,t10
307	bic	a3,t8,t12
308	sll	t8,30,t8
309
310	extll	$8,4,$9	# extract upper half
311	or	ra,t12,ra
312	addl	$8,a4,a4
313
314	addl	t11,a4,a4
315	srl	t8,32,t12
316	zapnot	$8,0xf,$8
317
318	addl	t10,a4,a4
319	addl	ra,a4,a4
320	or	t12,t8,t8
321	sll	a4,5,t11
322	addl	AT,a3,a3
323	and	a5,t8,ra
324	zapnot	a4,0xf,a4
325
326	srl	a4,27,t10
327	addl	$9,a3,a3
328	bic	t9,a5,t12
329	sll	a5,30,a5
330
331	or	ra,t12,ra
332	addl	t11,a3,a3
333	srl	a5,32,t12
334	zapnot	$9,0xf,$9
335
336	addl	t10,a3,a3
337	addl	ra,a3,a3
338	or	t12,a5,a5
339	ldq_u	$12,(10+2)*4+0(a1)
340	ldq_u	$13,(10+2)*4+7(a1)
341	extql	$10,a1,$10
342	extqh	$11,a1,$11
343
344	or	$11,$10,$10	# pair of 32-bit values are fetched
345
346	srl	$10,24,t10		# vectorized byte swap
347	srl	$10,8,ra
348
349	sll	$10,8,t12
350	sll	$10,24,$10
351	zapnot	t10,0x11,t10
352	zapnot	ra,0x22,ra
353
354	zapnot	$10,0x88,$10
355	or	t10,ra,t10
356	zapnot	t12,0x44,t12
357	sll	a3,5,t11
358
359	or	$10,t10,$10
360	addl	AT,t9,t9
361	and	a4,a5,ra
362	zapnot	a3,0xf,a3
363
364	or	$10,t12,$10
365	srl	a3,27,t10
366	bic	t8,a4,t12
367	sll	a4,30,a4
368
369	extll	$10,4,$11	# extract upper half
370	or	ra,t12,ra
371	addl	$10,t9,t9
372
373	addl	t11,t9,t9
374	srl	a4,32,t12
375	zapnot	$10,0xf,$10
376
377	addl	t10,t9,t9
378	addl	ra,t9,t9
379	or	t12,a4,a4
380	sll	t9,5,t11
381	addl	AT,t8,t8
382	and	a3,a4,ra
383	zapnot	t9,0xf,t9
384
385	srl	t9,27,t10
386	addl	$11,t8,t8
387	bic	a5,a3,t12
388	sll	a3,30,a3
389
390	or	ra,t12,ra
391	addl	t11,t8,t8
392	srl	a3,32,t12
393	zapnot	$11,0xf,$11
394
395	addl	t10,t8,t8
396	addl	ra,t8,t8
397	or	t12,a3,a3
398	ldq_u	$14,(12+2)*4+0(a1)
399	ldq_u	$15,(12+2)*4+7(a1)
400	extql	$12,a1,$12
401	extqh	$13,a1,$13
402
403	or	$13,$12,$12	# pair of 32-bit values are fetched
404
405	srl	$12,24,t10		# vectorized byte swap
406	srl	$12,8,ra
407
408	sll	$12,8,t12
409	sll	$12,24,$12
410	zapnot	t10,0x11,t10
411	zapnot	ra,0x22,ra
412
413	zapnot	$12,0x88,$12
414	or	t10,ra,t10
415	zapnot	t12,0x44,t12
416	sll	t8,5,t11
417
418	or	$12,t10,$12
419	addl	AT,a5,a5
420	and	t9,a3,ra
421	zapnot	t8,0xf,t8
422
423	or	$12,t12,$12
424	srl	t8,27,t10
425	bic	a4,t9,t12
426	sll	t9,30,t9
427
428	extll	$12,4,$13	# extract upper half
429	or	ra,t12,ra
430	addl	$12,a5,a5
431
432	addl	t11,a5,a5
433	srl	t9,32,t12
434	zapnot	$12,0xf,$12
435
436	addl	t10,a5,a5
437	addl	ra,a5,a5
438	or	t12,t9,t9
439	sll	a5,5,t11
440	addl	AT,a4,a4
441	and	t8,t9,ra
442	zapnot	a5,0xf,a5
443
444	srl	a5,27,t10
445	addl	$13,a4,a4
446	bic	a3,t8,t12
447	sll	t8,30,t8
448
449	or	ra,t12,ra
450	addl	t11,a4,a4
451	srl	t8,32,t12
452	zapnot	$13,0xf,$13
453
454	addl	t10,a4,a4
455	addl	ra,a4,a4
456	or	t12,t8,t8
457	extql	$14,a1,$14
458	extqh	$15,a1,$15
459
460	or	$15,$14,$14	# pair of 32-bit values are fetched
461
462	srl	$14,24,t10		# vectorized byte swap
463	srl	$14,8,ra
464
465	sll	$14,8,t12
466	sll	$14,24,$14
467	zapnot	t10,0x11,t10
468	zapnot	ra,0x22,ra
469
470	zapnot	$14,0x88,$14
471	or	t10,ra,t10
472	zapnot	t12,0x44,t12
473	sll	a4,5,t11
474
475	or	$14,t10,$14
476	addl	AT,a3,a3
477	and	a5,t8,ra
478	zapnot	a4,0xf,a4
479
480	or	$14,t12,$14
481	srl	a4,27,t10
482	bic	t9,a5,t12
483	sll	a5,30,a5
484
485	extll	$14,4,$15	# extract upper half
486	or	ra,t12,ra
487	addl	$14,a3,a3
488
489	addl	t11,a3,a3
490	srl	a5,32,t12
491	zapnot	$14,0xf,$14
492
493	addl	t10,a3,a3
494	addl	ra,a3,a3
495	or	t12,a5,a5
496	sll	a3,5,t11
497	addl	AT,t9,t9
498	and	a4,a5,ra
499	xor	$2,$0,$0
500
501	zapnot	a3,0xf,a3
502	addl	$15,t9,t9
503	bic	t8,a4,t12
504	xor	$8,$0,$0
505
506	srl	a3,27,t10
507	addl	t11,t9,t9
508	or	ra,t12,ra
509	xor	$13,$0,$0
510
511	sll	a4,30,a4
512	addl	t10,t9,t9
513	srl	$0,31,t11
514
515	addl	ra,t9,t9
516	srl	a4,32,t12
517	addl	$0,$0,$0
518
519	or	t12,a4,a4
520	zapnot	$15,0xf,$15
521	or	t11,$0,$0
522	sll	t9,5,t11
523	addl	AT,t8,t8
524	and	a3,a4,ra
525	xor	$3,$1,$1
526
527	zapnot	t9,0xf,t9
528	addl	$0,t8,t8
529	bic	a5,a3,t12
530	xor	$9,$1,$1
531
532	srl	t9,27,t10
533	addl	t11,t8,t8
534	or	ra,t12,ra
535	xor	$14,$1,$1
536
537	sll	a3,30,a3
538	addl	t10,t8,t8
539	srl	$1,31,t11
540
541	addl	ra,t8,t8
542	srl	a3,32,t12
543	addl	$1,$1,$1
544
545	or	t12,a3,a3
546	zapnot	$0,0xf,$0
547	or	t11,$1,$1
548	sll	t8,5,t11
549	addl	AT,a5,a5
550	and	t9,a3,ra
551	xor	$4,$2,$2
552
553	zapnot	t8,0xf,t8
554	addl	$1,a5,a5
555	bic	a4,t9,t12
556	xor	$10,$2,$2
557
558	srl	t8,27,t10
559	addl	t11,a5,a5
560	or	ra,t12,ra
561	xor	$15,$2,$2
562
563	sll	t9,30,t9
564	addl	t10,a5,a5
565	srl	$2,31,t11
566
567	addl	ra,a5,a5
568	srl	t9,32,t12
569	addl	$2,$2,$2
570
571	or	t12,t9,t9
572	zapnot	$1,0xf,$1
573	or	t11,$2,$2
574	sll	a5,5,t11
575	addl	AT,a4,a4
576	and	t8,t9,ra
577	xor	$5,$3,$3
578
579	zapnot	a5,0xf,a5
580	addl	$2,a4,a4
581	bic	a3,t8,t12
582	xor	$11,$3,$3
583
584	srl	a5,27,t10
585	addl	t11,a4,a4
586	or	ra,t12,ra
587	xor	$0,$3,$3
588
589	sll	t8,30,t8
590	addl	t10,a4,a4
591	srl	$3,31,t11
592
593	addl	ra,a4,a4
594	srl	t8,32,t12
595	addl	$3,$3,$3
596
597	or	t12,t8,t8
598	zapnot	$2,0xf,$2
599	or	t11,$3,$3
600	sll	a4,5,t11
601	addl	AT,a3,a3
602	and	a5,t8,ra
603	xor	$6,$4,$4
604
605	zapnot	a4,0xf,a4
606	addl	$3,a3,a3
607	bic	t9,a5,t12
608	xor	$12,$4,$4
609
610	srl	a4,27,t10
611	addl	t11,a3,a3
612	or	ra,t12,ra
613	xor	$1,$4,$4
614
615	sll	a5,30,a5
616	addl	t10,a3,a3
617	srl	$4,31,t11
618
619	addl	ra,a3,a3
620	srl	a5,32,t12
621	addl	$4,$4,$4
622
623	or	t12,a5,a5
624	zapnot	$3,0xf,$3
625	or	t11,$4,$4
626	ldah	AT,28378(zero)
627	lda	AT,-5215(AT)	# K_20_39
628	sll	a3,5,t11
629	addl	AT,t9,t9
630	zapnot	a3,0xf,a3
631	xor	$7,$5,$5
632
633	sll	a4,30,t12
634	addl	t11,t9,t9
635	xor	a4,a5,ra
636	xor	$13,$5,$5
637
638	srl	a4,2,a4
639	addl	$4,t9,t9
640	xor	t8,ra,ra
641	xor	$2,$5,$5
642
643	srl	$5,31,t11
644	addl	ra,t9,t9
645	srl	a3,27,t10
646	addl	$5,$5,$5
647
648	or	t12,a4,a4
649	addl	t10,t9,t9
650	or	t11,$5,$5
651	zapnot	$4,0xf,$4
652	sll	t9,5,t11
653	addl	AT,t8,t8
654	zapnot	t9,0xf,t9
655	xor	$8,$6,$6
656
657	sll	a3,30,t12
658	addl	t11,t8,t8
659	xor	a3,a4,ra
660	xor	$14,$6,$6
661
662	srl	a3,2,a3
663	addl	$5,t8,t8
664	xor	a5,ra,ra
665	xor	$3,$6,$6
666
667	srl	$6,31,t11
668	addl	ra,t8,t8
669	srl	t9,27,t10
670	addl	$6,$6,$6
671
672	or	t12,a3,a3
673	addl	t10,t8,t8
674	or	t11,$6,$6
675	zapnot	$5,0xf,$5
676	sll	t8,5,t11
677	addl	AT,a5,a5
678	zapnot	t8,0xf,t8
679	xor	$9,$7,$7
680
681	sll	t9,30,t12
682	addl	t11,a5,a5
683	xor	t9,a3,ra
684	xor	$15,$7,$7
685
686	srl	t9,2,t9
687	addl	$6,a5,a5
688	xor	a4,ra,ra
689	xor	$4,$7,$7
690
691	srl	$7,31,t11
692	addl	ra,a5,a5
693	srl	t8,27,t10
694	addl	$7,$7,$7
695
696	or	t12,t9,t9
697	addl	t10,a5,a5
698	or	t11,$7,$7
699	zapnot	$6,0xf,$6
700	sll	a5,5,t11
701	addl	AT,a4,a4
702	zapnot	a5,0xf,a5
703	xor	$10,$8,$8
704
705	sll	t8,30,t12
706	addl	t11,a4,a4
707	xor	t8,t9,ra
708	xor	$0,$8,$8
709
710	srl	t8,2,t8
711	addl	$7,a4,a4
712	xor	a3,ra,ra
713	xor	$5,$8,$8
714
715	srl	$8,31,t11
716	addl	ra,a4,a4
717	srl	a5,27,t10
718	addl	$8,$8,$8
719
720	or	t12,t8,t8
721	addl	t10,a4,a4
722	or	t11,$8,$8
723	zapnot	$7,0xf,$7
724	sll	a4,5,t11
725	addl	AT,a3,a3
726	zapnot	a4,0xf,a4
727	xor	$11,$9,$9
728
729	sll	a5,30,t12
730	addl	t11,a3,a3
731	xor	a5,t8,ra
732	xor	$1,$9,$9
733
734	srl	a5,2,a5
735	addl	$8,a3,a3
736	xor	t9,ra,ra
737	xor	$6,$9,$9
738
739	srl	$9,31,t11
740	addl	ra,a3,a3
741	srl	a4,27,t10
742	addl	$9,$9,$9
743
744	or	t12,a5,a5
745	addl	t10,a3,a3
746	or	t11,$9,$9
747	zapnot	$8,0xf,$8
748	sll	a3,5,t11
749	addl	AT,t9,t9
750	zapnot	a3,0xf,a3
751	xor	$12,$10,$10
752
753	sll	a4,30,t12
754	addl	t11,t9,t9
755	xor	a4,a5,ra
756	xor	$2,$10,$10
757
758	srl	a4,2,a4
759	addl	$9,t9,t9
760	xor	t8,ra,ra
761	xor	$7,$10,$10
762
763	srl	$10,31,t11
764	addl	ra,t9,t9
765	srl	a3,27,t10
766	addl	$10,$10,$10
767
768	or	t12,a4,a4
769	addl	t10,t9,t9
770	or	t11,$10,$10
771	zapnot	$9,0xf,$9
772	sll	t9,5,t11
773	addl	AT,t8,t8
774	zapnot	t9,0xf,t9
775	xor	$13,$11,$11
776
777	sll	a3,30,t12
778	addl	t11,t8,t8
779	xor	a3,a4,ra
780	xor	$3,$11,$11
781
782	srl	a3,2,a3
783	addl	$10,t8,t8
784	xor	a5,ra,ra
785	xor	$8,$11,$11
786
787	srl	$11,31,t11
788	addl	ra,t8,t8
789	srl	t9,27,t10
790	addl	$11,$11,$11
791
792	or	t12,a3,a3
793	addl	t10,t8,t8
794	or	t11,$11,$11
795	zapnot	$10,0xf,$10
796	sll	t8,5,t11
797	addl	AT,a5,a5
798	zapnot	t8,0xf,t8
799	xor	$14,$12,$12
800
801	sll	t9,30,t12
802	addl	t11,a5,a5
803	xor	t9,a3,ra
804	xor	$4,$12,$12
805
806	srl	t9,2,t9
807	addl	$11,a5,a5
808	xor	a4,ra,ra
809	xor	$9,$12,$12
810
811	srl	$12,31,t11
812	addl	ra,a5,a5
813	srl	t8,27,t10
814	addl	$12,$12,$12
815
816	or	t12,t9,t9
817	addl	t10,a5,a5
818	or	t11,$12,$12
819	zapnot	$11,0xf,$11
820	sll	a5,5,t11
821	addl	AT,a4,a4
822	zapnot	a5,0xf,a5
823	xor	$15,$13,$13
824
825	sll	t8,30,t12
826	addl	t11,a4,a4
827	xor	t8,t9,ra
828	xor	$5,$13,$13
829
830	srl	t8,2,t8
831	addl	$12,a4,a4
832	xor	a3,ra,ra
833	xor	$10,$13,$13
834
835	srl	$13,31,t11
836	addl	ra,a4,a4
837	srl	a5,27,t10
838	addl	$13,$13,$13
839
840	or	t12,t8,t8
841	addl	t10,a4,a4
842	or	t11,$13,$13
843	zapnot	$12,0xf,$12
844	sll	a4,5,t11
845	addl	AT,a3,a3
846	zapnot	a4,0xf,a4
847	xor	$0,$14,$14
848
849	sll	a5,30,t12
850	addl	t11,a3,a3
851	xor	a5,t8,ra
852	xor	$6,$14,$14
853
854	srl	a5,2,a5
855	addl	$13,a3,a3
856	xor	t9,ra,ra
857	xor	$11,$14,$14
858
859	srl	$14,31,t11
860	addl	ra,a3,a3
861	srl	a4,27,t10
862	addl	$14,$14,$14
863
864	or	t12,a5,a5
865	addl	t10,a3,a3
866	or	t11,$14,$14
867	zapnot	$13,0xf,$13
868	sll	a3,5,t11
869	addl	AT,t9,t9
870	zapnot	a3,0xf,a3
871	xor	$1,$15,$15
872
873	sll	a4,30,t12
874	addl	t11,t9,t9
875	xor	a4,a5,ra
876	xor	$7,$15,$15
877
878	srl	a4,2,a4
879	addl	$14,t9,t9
880	xor	t8,ra,ra
881	xor	$12,$15,$15
882
883	srl	$15,31,t11
884	addl	ra,t9,t9
885	srl	a3,27,t10
886	addl	$15,$15,$15
887
888	or	t12,a4,a4
889	addl	t10,t9,t9
890	or	t11,$15,$15
891	zapnot	$14,0xf,$14
892	sll	t9,5,t11
893	addl	AT,t8,t8
894	zapnot	t9,0xf,t9
895	xor	$2,$0,$0
896
897	sll	a3,30,t12
898	addl	t11,t8,t8
899	xor	a3,a4,ra
900	xor	$8,$0,$0
901
902	srl	a3,2,a3
903	addl	$15,t8,t8
904	xor	a5,ra,ra
905	xor	$13,$0,$0
906
907	srl	$0,31,t11
908	addl	ra,t8,t8
909	srl	t9,27,t10
910	addl	$0,$0,$0
911
912	or	t12,a3,a3
913	addl	t10,t8,t8
914	or	t11,$0,$0
915	zapnot	$15,0xf,$15
916	sll	t8,5,t11
917	addl	AT,a5,a5
918	zapnot	t8,0xf,t8
919	xor	$3,$1,$1
920
921	sll	t9,30,t12
922	addl	t11,a5,a5
923	xor	t9,a3,ra
924	xor	$9,$1,$1
925
926	srl	t9,2,t9
927	addl	$0,a5,a5
928	xor	a4,ra,ra
929	xor	$14,$1,$1
930
931	srl	$1,31,t11
932	addl	ra,a5,a5
933	srl	t8,27,t10
934	addl	$1,$1,$1
935
936	or	t12,t9,t9
937	addl	t10,a5,a5
938	or	t11,$1,$1
939	zapnot	$0,0xf,$0
940	sll	a5,5,t11
941	addl	AT,a4,a4
942	zapnot	a5,0xf,a5
943	xor	$4,$2,$2
944
945	sll	t8,30,t12
946	addl	t11,a4,a4
947	xor	t8,t9,ra
948	xor	$10,$2,$2
949
950	srl	t8,2,t8
951	addl	$1,a4,a4
952	xor	a3,ra,ra
953	xor	$15,$2,$2
954
955	srl	$2,31,t11
956	addl	ra,a4,a4
957	srl	a5,27,t10
958	addl	$2,$2,$2
959
960	or	t12,t8,t8
961	addl	t10,a4,a4
962	or	t11,$2,$2
963	zapnot	$1,0xf,$1
964	sll	a4,5,t11
965	addl	AT,a3,a3
966	zapnot	a4,0xf,a4
967	xor	$5,$3,$3
968
969	sll	a5,30,t12
970	addl	t11,a3,a3
971	xor	a5,t8,ra
972	xor	$11,$3,$3
973
974	srl	a5,2,a5
975	addl	$2,a3,a3
976	xor	t9,ra,ra
977	xor	$0,$3,$3
978
979	srl	$3,31,t11
980	addl	ra,a3,a3
981	srl	a4,27,t10
982	addl	$3,$3,$3
983
984	or	t12,a5,a5
985	addl	t10,a3,a3
986	or	t11,$3,$3
987	zapnot	$2,0xf,$2
988	sll	a3,5,t11
989	addl	AT,t9,t9
990	zapnot	a3,0xf,a3
991	xor	$6,$4,$4
992
993	sll	a4,30,t12
994	addl	t11,t9,t9
995	xor	a4,a5,ra
996	xor	$12,$4,$4
997
998	srl	a4,2,a4
999	addl	$3,t9,t9
1000	xor	t8,ra,ra
1001	xor	$1,$4,$4
1002
1003	srl	$4,31,t11
1004	addl	ra,t9,t9
1005	srl	a3,27,t10
1006	addl	$4,$4,$4
1007
1008	or	t12,a4,a4
1009	addl	t10,t9,t9
1010	or	t11,$4,$4
1011	zapnot	$3,0xf,$3
1012	sll	t9,5,t11
1013	addl	AT,t8,t8
1014	zapnot	t9,0xf,t9
1015	xor	$7,$5,$5
1016
1017	sll	a3,30,t12
1018	addl	t11,t8,t8
1019	xor	a3,a4,ra
1020	xor	$13,$5,$5
1021
1022	srl	a3,2,a3
1023	addl	$4,t8,t8
1024	xor	a5,ra,ra
1025	xor	$2,$5,$5
1026
1027	srl	$5,31,t11
1028	addl	ra,t8,t8
1029	srl	t9,27,t10
1030	addl	$5,$5,$5
1031
1032	or	t12,a3,a3
1033	addl	t10,t8,t8
1034	or	t11,$5,$5
1035	zapnot	$4,0xf,$4
1036	sll	t8,5,t11
1037	addl	AT,a5,a5
1038	zapnot	t8,0xf,t8
1039	xor	$8,$6,$6
1040
1041	sll	t9,30,t12
1042	addl	t11,a5,a5
1043	xor	t9,a3,ra
1044	xor	$14,$6,$6
1045
1046	srl	t9,2,t9
1047	addl	$5,a5,a5
1048	xor	a4,ra,ra
1049	xor	$3,$6,$6
1050
1051	srl	$6,31,t11
1052	addl	ra,a5,a5
1053	srl	t8,27,t10
1054	addl	$6,$6,$6
1055
1056	or	t12,t9,t9
1057	addl	t10,a5,a5
1058	or	t11,$6,$6
1059	zapnot	$5,0xf,$5
1060	sll	a5,5,t11
1061	addl	AT,a4,a4
1062	zapnot	a5,0xf,a5
1063	xor	$9,$7,$7
1064
1065	sll	t8,30,t12
1066	addl	t11,a4,a4
1067	xor	t8,t9,ra
1068	xor	$15,$7,$7
1069
1070	srl	t8,2,t8
1071	addl	$6,a4,a4
1072	xor	a3,ra,ra
1073	xor	$4,$7,$7
1074
1075	srl	$7,31,t11
1076	addl	ra,a4,a4
1077	srl	a5,27,t10
1078	addl	$7,$7,$7
1079
1080	or	t12,t8,t8
1081	addl	t10,a4,a4
1082	or	t11,$7,$7
1083	zapnot	$6,0xf,$6
1084	sll	a4,5,t11
1085	addl	AT,a3,a3
1086	zapnot	a4,0xf,a4
1087	xor	$10,$8,$8
1088
1089	sll	a5,30,t12
1090	addl	t11,a3,a3
1091	xor	a5,t8,ra
1092	xor	$0,$8,$8
1093
1094	srl	a5,2,a5
1095	addl	$7,a3,a3
1096	xor	t9,ra,ra
1097	xor	$5,$8,$8
1098
1099	srl	$8,31,t11
1100	addl	ra,a3,a3
1101	srl	a4,27,t10
1102	addl	$8,$8,$8
1103
1104	or	t12,a5,a5
1105	addl	t10,a3,a3
1106	or	t11,$8,$8
1107	zapnot	$7,0xf,$7
1108	ldah	AT,-28900(zero)
1109	lda	AT,-17188(AT)	# K_40_59
1110	sll	a3,5,t11
1111	addl	AT,t9,t9
1112	zapnot	a3,0xf,a3
1113	xor	$11,$9,$9
1114
1115	srl	a3,27,t10
1116	and	a4,a5,ra
1117	and	a4,t8,t12
1118	xor	$1,$9,$9
1119
1120	sll	a4,30,a4
1121	addl	t11,t9,t9
1122	xor	$6,$9,$9
1123
1124	srl	$9,31,t11
1125	addl	t10,t9,t9
1126	or	ra,t12,ra
1127	and	a5,t8,t12
1128
1129	or	ra,t12,ra
1130	srl	a4,32,t12
1131	addl	$8,t9,t9
1132	addl	$9,$9,$9
1133
1134	or	t12,a4,a4
1135	addl	ra,t9,t9
1136	or	t11,$9,$9
1137	zapnot	$8,0xf,$8
1138	sll	t9,5,t11
1139	addl	AT,t8,t8
1140	zapnot	t9,0xf,t9
1141	xor	$12,$10,$10
1142
1143	srl	t9,27,t10
1144	and	a3,a4,ra
1145	and	a3,a5,t12
1146	xor	$2,$10,$10
1147
1148	sll	a3,30,a3
1149	addl	t11,t8,t8
1150	xor	$7,$10,$10
1151
1152	srl	$10,31,t11
1153	addl	t10,t8,t8
1154	or	ra,t12,ra
1155	and	a4,a5,t12
1156
1157	or	ra,t12,ra
1158	srl	a3,32,t12
1159	addl	$9,t8,t8
1160	addl	$10,$10,$10
1161
1162	or	t12,a3,a3
1163	addl	ra,t8,t8
1164	or	t11,$10,$10
1165	zapnot	$9,0xf,$9
1166	sll	t8,5,t11
1167	addl	AT,a5,a5
1168	zapnot	t8,0xf,t8
1169	xor	$13,$11,$11
1170
1171	srl	t8,27,t10
1172	and	t9,a3,ra
1173	and	t9,a4,t12
1174	xor	$3,$11,$11
1175
1176	sll	t9,30,t9
1177	addl	t11,a5,a5
1178	xor	$8,$11,$11
1179
1180	srl	$11,31,t11
1181	addl	t10,a5,a5
1182	or	ra,t12,ra
1183	and	a3,a4,t12
1184
1185	or	ra,t12,ra
1186	srl	t9,32,t12
1187	addl	$10,a5,a5
1188	addl	$11,$11,$11
1189
1190	or	t12,t9,t9
1191	addl	ra,a5,a5
1192	or	t11,$11,$11
1193	zapnot	$10,0xf,$10
1194	sll	a5,5,t11
1195	addl	AT,a4,a4
1196	zapnot	a5,0xf,a5
1197	xor	$14,$12,$12
1198
1199	srl	a5,27,t10
1200	and	t8,t9,ra
1201	and	t8,a3,t12
1202	xor	$4,$12,$12
1203
1204	sll	t8,30,t8
1205	addl	t11,a4,a4
1206	xor	$9,$12,$12
1207
1208	srl	$12,31,t11
1209	addl	t10,a4,a4
1210	or	ra,t12,ra
1211	and	t9,a3,t12
1212
1213	or	ra,t12,ra
1214	srl	t8,32,t12
1215	addl	$11,a4,a4
1216	addl	$12,$12,$12
1217
1218	or	t12,t8,t8
1219	addl	ra,a4,a4
1220	or	t11,$12,$12
1221	zapnot	$11,0xf,$11
1222	sll	a4,5,t11
1223	addl	AT,a3,a3
1224	zapnot	a4,0xf,a4
1225	xor	$15,$13,$13
1226
1227	srl	a4,27,t10
1228	and	a5,t8,ra
1229	and	a5,t9,t12
1230	xor	$5,$13,$13
1231
1232	sll	a5,30,a5
1233	addl	t11,a3,a3
1234	xor	$10,$13,$13
1235
1236	srl	$13,31,t11
1237	addl	t10,a3,a3
1238	or	ra,t12,ra
1239	and	t8,t9,t12
1240
1241	or	ra,t12,ra
1242	srl	a5,32,t12
1243	addl	$12,a3,a3
1244	addl	$13,$13,$13
1245
1246	or	t12,a5,a5
1247	addl	ra,a3,a3
1248	or	t11,$13,$13
1249	zapnot	$12,0xf,$12
1250	sll	a3,5,t11
1251	addl	AT,t9,t9
1252	zapnot	a3,0xf,a3
1253	xor	$0,$14,$14
1254
1255	srl	a3,27,t10
1256	and	a4,a5,ra
1257	and	a4,t8,t12
1258	xor	$6,$14,$14
1259
1260	sll	a4,30,a4
1261	addl	t11,t9,t9
1262	xor	$11,$14,$14
1263
1264	srl	$14,31,t11
1265	addl	t10,t9,t9
1266	or	ra,t12,ra
1267	and	a5,t8,t12
1268
1269	or	ra,t12,ra
1270	srl	a4,32,t12
1271	addl	$13,t9,t9
1272	addl	$14,$14,$14
1273
1274	or	t12,a4,a4
1275	addl	ra,t9,t9
1276	or	t11,$14,$14
1277	zapnot	$13,0xf,$13
1278	sll	t9,5,t11
1279	addl	AT,t8,t8
1280	zapnot	t9,0xf,t9
1281	xor	$1,$15,$15
1282
1283	srl	t9,27,t10
1284	and	a3,a4,ra
1285	and	a3,a5,t12
1286	xor	$7,$15,$15
1287
1288	sll	a3,30,a3
1289	addl	t11,t8,t8
1290	xor	$12,$15,$15
1291
1292	srl	$15,31,t11
1293	addl	t10,t8,t8
1294	or	ra,t12,ra
1295	and	a4,a5,t12
1296
1297	or	ra,t12,ra
1298	srl	a3,32,t12
1299	addl	$14,t8,t8
1300	addl	$15,$15,$15
1301
1302	or	t12,a3,a3
1303	addl	ra,t8,t8
1304	or	t11,$15,$15
1305	zapnot	$14,0xf,$14
1306	sll	t8,5,t11
1307	addl	AT,a5,a5
1308	zapnot	t8,0xf,t8
1309	xor	$2,$0,$0
1310
1311	srl	t8,27,t10
1312	and	t9,a3,ra
1313	and	t9,a4,t12
1314	xor	$8,$0,$0
1315
1316	sll	t9,30,t9
1317	addl	t11,a5,a5
1318	xor	$13,$0,$0
1319
1320	srl	$0,31,t11
1321	addl	t10,a5,a5
1322	or	ra,t12,ra
1323	and	a3,a4,t12
1324
1325	or	ra,t12,ra
1326	srl	t9,32,t12
1327	addl	$15,a5,a5
1328	addl	$0,$0,$0
1329
1330	or	t12,t9,t9
1331	addl	ra,a5,a5
1332	or	t11,$0,$0
1333	zapnot	$15,0xf,$15
1334	sll	a5,5,t11
1335	addl	AT,a4,a4
1336	zapnot	a5,0xf,a5
1337	xor	$3,$1,$1
1338
1339	srl	a5,27,t10
1340	and	t8,t9,ra
1341	and	t8,a3,t12
1342	xor	$9,$1,$1
1343
1344	sll	t8,30,t8
1345	addl	t11,a4,a4
1346	xor	$14,$1,$1
1347
1348	srl	$1,31,t11
1349	addl	t10,a4,a4
1350	or	ra,t12,ra
1351	and	t9,a3,t12
1352
1353	or	ra,t12,ra
1354	srl	t8,32,t12
1355	addl	$0,a4,a4
1356	addl	$1,$1,$1
1357
1358	or	t12,t8,t8
1359	addl	ra,a4,a4
1360	or	t11,$1,$1
1361	zapnot	$0,0xf,$0
1362	sll	a4,5,t11
1363	addl	AT,a3,a3
1364	zapnot	a4,0xf,a4
1365	xor	$4,$2,$2
1366
1367	srl	a4,27,t10
1368	and	a5,t8,ra
1369	and	a5,t9,t12
1370	xor	$10,$2,$2
1371
1372	sll	a5,30,a5
1373	addl	t11,a3,a3
1374	xor	$15,$2,$2
1375
1376	srl	$2,31,t11
1377	addl	t10,a3,a3
1378	or	ra,t12,ra
1379	and	t8,t9,t12
1380
1381	or	ra,t12,ra
1382	srl	a5,32,t12
1383	addl	$1,a3,a3
1384	addl	$2,$2,$2
1385
1386	or	t12,a5,a5
1387	addl	ra,a3,a3
1388	or	t11,$2,$2
1389	zapnot	$1,0xf,$1
1390	sll	a3,5,t11
1391	addl	AT,t9,t9
1392	zapnot	a3,0xf,a3
1393	xor	$5,$3,$3
1394
1395	srl	a3,27,t10
1396	and	a4,a5,ra
1397	and	a4,t8,t12
1398	xor	$11,$3,$3
1399
1400	sll	a4,30,a4
1401	addl	t11,t9,t9
1402	xor	$0,$3,$3
1403
1404	srl	$3,31,t11
1405	addl	t10,t9,t9
1406	or	ra,t12,ra
1407	and	a5,t8,t12
1408
1409	or	ra,t12,ra
1410	srl	a4,32,t12
1411	addl	$2,t9,t9
1412	addl	$3,$3,$3
1413
1414	or	t12,a4,a4
1415	addl	ra,t9,t9
1416	or	t11,$3,$3
1417	zapnot	$2,0xf,$2
1418	sll	t9,5,t11
1419	addl	AT,t8,t8
1420	zapnot	t9,0xf,t9
1421	xor	$6,$4,$4
1422
1423	srl	t9,27,t10
1424	and	a3,a4,ra
1425	and	a3,a5,t12
1426	xor	$12,$4,$4
1427
1428	sll	a3,30,a3
1429	addl	t11,t8,t8
1430	xor	$1,$4,$4
1431
1432	srl	$4,31,t11
1433	addl	t10,t8,t8
1434	or	ra,t12,ra
1435	and	a4,a5,t12
1436
1437	or	ra,t12,ra
1438	srl	a3,32,t12
1439	addl	$3,t8,t8
1440	addl	$4,$4,$4
1441
1442	or	t12,a3,a3
1443	addl	ra,t8,t8
1444	or	t11,$4,$4
1445	zapnot	$3,0xf,$3
1446	sll	t8,5,t11
1447	addl	AT,a5,a5
1448	zapnot	t8,0xf,t8
1449	xor	$7,$5,$5
1450
1451	srl	t8,27,t10
1452	and	t9,a3,ra
1453	and	t9,a4,t12
1454	xor	$13,$5,$5
1455
1456	sll	t9,30,t9
1457	addl	t11,a5,a5
1458	xor	$2,$5,$5
1459
1460	srl	$5,31,t11
1461	addl	t10,a5,a5
1462	or	ra,t12,ra
1463	and	a3,a4,t12
1464
1465	or	ra,t12,ra
1466	srl	t9,32,t12
1467	addl	$4,a5,a5
1468	addl	$5,$5,$5
1469
1470	or	t12,t9,t9
1471	addl	ra,a5,a5
1472	or	t11,$5,$5
1473	zapnot	$4,0xf,$4
1474	sll	a5,5,t11
1475	addl	AT,a4,a4
1476	zapnot	a5,0xf,a5
1477	xor	$8,$6,$6
1478
1479	srl	a5,27,t10
1480	and	t8,t9,ra
1481	and	t8,a3,t12
1482	xor	$14,$6,$6
1483
1484	sll	t8,30,t8
1485	addl	t11,a4,a4
1486	xor	$3,$6,$6
1487
1488	srl	$6,31,t11
1489	addl	t10,a4,a4
1490	or	ra,t12,ra
1491	and	t9,a3,t12
1492
1493	or	ra,t12,ra
1494	srl	t8,32,t12
1495	addl	$5,a4,a4
1496	addl	$6,$6,$6
1497
1498	or	t12,t8,t8
1499	addl	ra,a4,a4
1500	or	t11,$6,$6
1501	zapnot	$5,0xf,$5
1502	sll	a4,5,t11
1503	addl	AT,a3,a3
1504	zapnot	a4,0xf,a4
1505	xor	$9,$7,$7
1506
1507	srl	a4,27,t10
1508	and	a5,t8,ra
1509	and	a5,t9,t12
1510	xor	$15,$7,$7
1511
1512	sll	a5,30,a5
1513	addl	t11,a3,a3
1514	xor	$4,$7,$7
1515
1516	srl	$7,31,t11
1517	addl	t10,a3,a3
1518	or	ra,t12,ra
1519	and	t8,t9,t12
1520
1521	or	ra,t12,ra
1522	srl	a5,32,t12
1523	addl	$6,a3,a3
1524	addl	$7,$7,$7
1525
1526	or	t12,a5,a5
1527	addl	ra,a3,a3
1528	or	t11,$7,$7
1529	zapnot	$6,0xf,$6
1530	sll	a3,5,t11
1531	addl	AT,t9,t9
1532	zapnot	a3,0xf,a3
1533	xor	$10,$8,$8
1534
1535	srl	a3,27,t10
1536	and	a4,a5,ra
1537	and	a4,t8,t12
1538	xor	$0,$8,$8
1539
1540	sll	a4,30,a4
1541	addl	t11,t9,t9
1542	xor	$5,$8,$8
1543
1544	srl	$8,31,t11
1545	addl	t10,t9,t9
1546	or	ra,t12,ra
1547	and	a5,t8,t12
1548
1549	or	ra,t12,ra
1550	srl	a4,32,t12
1551	addl	$7,t9,t9
1552	addl	$8,$8,$8
1553
1554	or	t12,a4,a4
1555	addl	ra,t9,t9
1556	or	t11,$8,$8
1557	zapnot	$7,0xf,$7
1558	sll	t9,5,t11
1559	addl	AT,t8,t8
1560	zapnot	t9,0xf,t9
1561	xor	$11,$9,$9
1562
1563	srl	t9,27,t10
1564	and	a3,a4,ra
1565	and	a3,a5,t12
1566	xor	$1,$9,$9
1567
1568	sll	a3,30,a3
1569	addl	t11,t8,t8
1570	xor	$6,$9,$9
1571
1572	srl	$9,31,t11
1573	addl	t10,t8,t8
1574	or	ra,t12,ra
1575	and	a4,a5,t12
1576
1577	or	ra,t12,ra
1578	srl	a3,32,t12
1579	addl	$8,t8,t8
1580	addl	$9,$9,$9
1581
1582	or	t12,a3,a3
1583	addl	ra,t8,t8
1584	or	t11,$9,$9
1585	zapnot	$8,0xf,$8
1586	sll	t8,5,t11
1587	addl	AT,a5,a5
1588	zapnot	t8,0xf,t8
1589	xor	$12,$10,$10
1590
1591	srl	t8,27,t10
1592	and	t9,a3,ra
1593	and	t9,a4,t12
1594	xor	$2,$10,$10
1595
1596	sll	t9,30,t9
1597	addl	t11,a5,a5
1598	xor	$7,$10,$10
1599
1600	srl	$10,31,t11
1601	addl	t10,a5,a5
1602	or	ra,t12,ra
1603	and	a3,a4,t12
1604
1605	or	ra,t12,ra
1606	srl	t9,32,t12
1607	addl	$9,a5,a5
1608	addl	$10,$10,$10
1609
1610	or	t12,t9,t9
1611	addl	ra,a5,a5
1612	or	t11,$10,$10
1613	zapnot	$9,0xf,$9
1614	sll	a5,5,t11
1615	addl	AT,a4,a4
1616	zapnot	a5,0xf,a5
1617	xor	$13,$11,$11
1618
1619	srl	a5,27,t10
1620	and	t8,t9,ra
1621	and	t8,a3,t12
1622	xor	$3,$11,$11
1623
1624	sll	t8,30,t8
1625	addl	t11,a4,a4
1626	xor	$8,$11,$11
1627
1628	srl	$11,31,t11
1629	addl	t10,a4,a4
1630	or	ra,t12,ra
1631	and	t9,a3,t12
1632
1633	or	ra,t12,ra
1634	srl	t8,32,t12
1635	addl	$10,a4,a4
1636	addl	$11,$11,$11
1637
1638	or	t12,t8,t8
1639	addl	ra,a4,a4
1640	or	t11,$11,$11
1641	zapnot	$10,0xf,$10
1642	sll	a4,5,t11
1643	addl	AT,a3,a3
1644	zapnot	a4,0xf,a4
1645	xor	$14,$12,$12
1646
1647	srl	a4,27,t10
1648	and	a5,t8,ra
1649	and	a5,t9,t12
1650	xor	$4,$12,$12
1651
1652	sll	a5,30,a5
1653	addl	t11,a3,a3
1654	xor	$9,$12,$12
1655
1656	srl	$12,31,t11
1657	addl	t10,a3,a3
1658	or	ra,t12,ra
1659	and	t8,t9,t12
1660
1661	or	ra,t12,ra
1662	srl	a5,32,t12
1663	addl	$11,a3,a3
1664	addl	$12,$12,$12
1665
1666	or	t12,a5,a5
1667	addl	ra,a3,a3
1668	or	t11,$12,$12
1669	zapnot	$11,0xf,$11
1670	ldah	AT,-13725(zero)
1671	lda	AT,-15914(AT)	# K_60_79
1672	sll	a3,5,t11
1673	addl	AT,t9,t9
1674	zapnot	a3,0xf,a3
1675	xor	$15,$13,$13
1676
1677	sll	a4,30,t12
1678	addl	t11,t9,t9
1679	xor	a4,a5,ra
1680	xor	$5,$13,$13
1681
1682	srl	a4,2,a4
1683	addl	$12,t9,t9
1684	xor	t8,ra,ra
1685	xor	$10,$13,$13
1686
1687	srl	$13,31,t11
1688	addl	ra,t9,t9
1689	srl	a3,27,t10
1690	addl	$13,$13,$13
1691
1692	or	t12,a4,a4
1693	addl	t10,t9,t9
1694	or	t11,$13,$13
1695	zapnot	$12,0xf,$12
1696	sll	t9,5,t11
1697	addl	AT,t8,t8
1698	zapnot	t9,0xf,t9
1699	xor	$0,$14,$14
1700
1701	sll	a3,30,t12
1702	addl	t11,t8,t8
1703	xor	a3,a4,ra
1704	xor	$6,$14,$14
1705
1706	srl	a3,2,a3
1707	addl	$13,t8,t8
1708	xor	a5,ra,ra
1709	xor	$11,$14,$14
1710
1711	srl	$14,31,t11
1712	addl	ra,t8,t8
1713	srl	t9,27,t10
1714	addl	$14,$14,$14
1715
1716	or	t12,a3,a3
1717	addl	t10,t8,t8
1718	or	t11,$14,$14
1719	zapnot	$13,0xf,$13
1720	sll	t8,5,t11
1721	addl	AT,a5,a5
1722	zapnot	t8,0xf,t8
1723	xor	$1,$15,$15
1724
1725	sll	t9,30,t12
1726	addl	t11,a5,a5
1727	xor	t9,a3,ra
1728	xor	$7,$15,$15
1729
1730	srl	t9,2,t9
1731	addl	$14,a5,a5
1732	xor	a4,ra,ra
1733	xor	$12,$15,$15
1734
1735	srl	$15,31,t11
1736	addl	ra,a5,a5
1737	srl	t8,27,t10
1738	addl	$15,$15,$15
1739
1740	or	t12,t9,t9
1741	addl	t10,a5,a5
1742	or	t11,$15,$15
1743	zapnot	$14,0xf,$14
1744	sll	a5,5,t11
1745	addl	AT,a4,a4
1746	zapnot	a5,0xf,a5
1747	xor	$2,$0,$0
1748
1749	sll	t8,30,t12
1750	addl	t11,a4,a4
1751	xor	t8,t9,ra
1752	xor	$8,$0,$0
1753
1754	srl	t8,2,t8
1755	addl	$15,a4,a4
1756	xor	a3,ra,ra
1757	xor	$13,$0,$0
1758
1759	srl	$0,31,t11
1760	addl	ra,a4,a4
1761	srl	a5,27,t10
1762	addl	$0,$0,$0
1763
1764	or	t12,t8,t8
1765	addl	t10,a4,a4
1766	or	t11,$0,$0
1767	zapnot	$15,0xf,$15
1768	sll	a4,5,t11
1769	addl	AT,a3,a3
1770	zapnot	a4,0xf,a4
1771	xor	$3,$1,$1
1772
1773	sll	a5,30,t12
1774	addl	t11,a3,a3
1775	xor	a5,t8,ra
1776	xor	$9,$1,$1
1777
1778	srl	a5,2,a5
1779	addl	$0,a3,a3
1780	xor	t9,ra,ra
1781	xor	$14,$1,$1
1782
1783	srl	$1,31,t11
1784	addl	ra,a3,a3
1785	srl	a4,27,t10
1786	addl	$1,$1,$1
1787
1788	or	t12,a5,a5
1789	addl	t10,a3,a3
1790	or	t11,$1,$1
1791	zapnot	$0,0xf,$0
1792	sll	a3,5,t11
1793	addl	AT,t9,t9
1794	zapnot	a3,0xf,a3
1795	xor	$4,$2,$2
1796
1797	sll	a4,30,t12
1798	addl	t11,t9,t9
1799	xor	a4,a5,ra
1800	xor	$10,$2,$2
1801
1802	srl	a4,2,a4
1803	addl	$1,t9,t9
1804	xor	t8,ra,ra
1805	xor	$15,$2,$2
1806
1807	srl	$2,31,t11
1808	addl	ra,t9,t9
1809	srl	a3,27,t10
1810	addl	$2,$2,$2
1811
1812	or	t12,a4,a4
1813	addl	t10,t9,t9
1814	or	t11,$2,$2
1815	zapnot	$1,0xf,$1
1816	sll	t9,5,t11
1817	addl	AT,t8,t8
1818	zapnot	t9,0xf,t9
1819	xor	$5,$3,$3
1820
1821	sll	a3,30,t12
1822	addl	t11,t8,t8
1823	xor	a3,a4,ra
1824	xor	$11,$3,$3
1825
1826	srl	a3,2,a3
1827	addl	$2,t8,t8
1828	xor	a5,ra,ra
1829	xor	$0,$3,$3
1830
1831	srl	$3,31,t11
1832	addl	ra,t8,t8
1833	srl	t9,27,t10
1834	addl	$3,$3,$3
1835
1836	or	t12,a3,a3
1837	addl	t10,t8,t8
1838	or	t11,$3,$3
1839	zapnot	$2,0xf,$2
1840	sll	t8,5,t11
1841	addl	AT,a5,a5
1842	zapnot	t8,0xf,t8
1843	xor	$6,$4,$4
1844
1845	sll	t9,30,t12
1846	addl	t11,a5,a5
1847	xor	t9,a3,ra
1848	xor	$12,$4,$4
1849
1850	srl	t9,2,t9
1851	addl	$3,a5,a5
1852	xor	a4,ra,ra
1853	xor	$1,$4,$4
1854
1855	srl	$4,31,t11
1856	addl	ra,a5,a5
1857	srl	t8,27,t10
1858	addl	$4,$4,$4
1859
1860	or	t12,t9,t9
1861	addl	t10,a5,a5
1862	or	t11,$4,$4
1863	zapnot	$3,0xf,$3
1864	sll	a5,5,t11
1865	addl	AT,a4,a4
1866	zapnot	a5,0xf,a5
1867	xor	$7,$5,$5
1868
1869	sll	t8,30,t12
1870	addl	t11,a4,a4
1871	xor	t8,t9,ra
1872	xor	$13,$5,$5
1873
1874	srl	t8,2,t8
1875	addl	$4,a4,a4
1876	xor	a3,ra,ra
1877	xor	$2,$5,$5
1878
1879	srl	$5,31,t11
1880	addl	ra,a4,a4
1881	srl	a5,27,t10
1882	addl	$5,$5,$5
1883
1884	or	t12,t8,t8
1885	addl	t10,a4,a4
1886	or	t11,$5,$5
1887	zapnot	$4,0xf,$4
1888	sll	a4,5,t11
1889	addl	AT,a3,a3
1890	zapnot	a4,0xf,a4
1891	xor	$8,$6,$6
1892
1893	sll	a5,30,t12
1894	addl	t11,a3,a3
1895	xor	a5,t8,ra
1896	xor	$14,$6,$6
1897
1898	srl	a5,2,a5
1899	addl	$5,a3,a3
1900	xor	t9,ra,ra
1901	xor	$3,$6,$6
1902
1903	srl	$6,31,t11
1904	addl	ra,a3,a3
1905	srl	a4,27,t10
1906	addl	$6,$6,$6
1907
1908	or	t12,a5,a5
1909	addl	t10,a3,a3
1910	or	t11,$6,$6
1911	zapnot	$5,0xf,$5
1912	sll	a3,5,t11
1913	addl	AT,t9,t9
1914	zapnot	a3,0xf,a3
1915	xor	$9,$7,$7
1916
1917	sll	a4,30,t12
1918	addl	t11,t9,t9
1919	xor	a4,a5,ra
1920	xor	$15,$7,$7
1921
1922	srl	a4,2,a4
1923	addl	$6,t9,t9
1924	xor	t8,ra,ra
1925	xor	$4,$7,$7
1926
1927	srl	$7,31,t11
1928	addl	ra,t9,t9
1929	srl	a3,27,t10
1930	addl	$7,$7,$7
1931
1932	or	t12,a4,a4
1933	addl	t10,t9,t9
1934	or	t11,$7,$7
1935	zapnot	$6,0xf,$6
1936	sll	t9,5,t11
1937	addl	AT,t8,t8
1938	zapnot	t9,0xf,t9
1939	xor	$10,$8,$8
1940
1941	sll	a3,30,t12
1942	addl	t11,t8,t8
1943	xor	a3,a4,ra
1944	xor	$0,$8,$8
1945
1946	srl	a3,2,a3
1947	addl	$7,t8,t8
1948	xor	a5,ra,ra
1949	xor	$5,$8,$8
1950
1951	srl	$8,31,t11
1952	addl	ra,t8,t8
1953	srl	t9,27,t10
1954	addl	$8,$8,$8
1955
1956	or	t12,a3,a3
1957	addl	t10,t8,t8
1958	or	t11,$8,$8
1959	zapnot	$7,0xf,$7
1960	sll	t8,5,t11
1961	addl	AT,a5,a5
1962	zapnot	t8,0xf,t8
1963	xor	$11,$9,$9
1964
1965	sll	t9,30,t12
1966	addl	t11,a5,a5
1967	xor	t9,a3,ra
1968	xor	$1,$9,$9
1969
1970	srl	t9,2,t9
1971	addl	$8,a5,a5
1972	xor	a4,ra,ra
1973	xor	$6,$9,$9
1974
1975	srl	$9,31,t11
1976	addl	ra,a5,a5
1977	srl	t8,27,t10
1978	addl	$9,$9,$9
1979
1980	or	t12,t9,t9
1981	addl	t10,a5,a5
1982	or	t11,$9,$9
1983	zapnot	$8,0xf,$8
1984	sll	a5,5,t11
1985	addl	AT,a4,a4
1986	zapnot	a5,0xf,a5
1987	xor	$12,$10,$10
1988
1989	sll	t8,30,t12
1990	addl	t11,a4,a4
1991	xor	t8,t9,ra
1992	xor	$2,$10,$10
1993
1994	srl	t8,2,t8
1995	addl	$9,a4,a4
1996	xor	a3,ra,ra
1997	xor	$7,$10,$10
1998
1999	srl	$10,31,t11
2000	addl	ra,a4,a4
2001	srl	a5,27,t10
2002	addl	$10,$10,$10
2003
2004	or	t12,t8,t8
2005	addl	t10,a4,a4
2006	or	t11,$10,$10
2007	zapnot	$9,0xf,$9
2008	sll	a4,5,t11
2009	addl	AT,a3,a3
2010	zapnot	a4,0xf,a4
2011	xor	$13,$11,$11
2012
2013	sll	a5,30,t12
2014	addl	t11,a3,a3
2015	xor	a5,t8,ra
2016	xor	$3,$11,$11
2017
2018	srl	a5,2,a5
2019	addl	$10,a3,a3
2020	xor	t9,ra,ra
2021	xor	$8,$11,$11
2022
2023	srl	$11,31,t11
2024	addl	ra,a3,a3
2025	srl	a4,27,t10
2026	addl	$11,$11,$11
2027
2028	or	t12,a5,a5
2029	addl	t10,a3,a3
2030	or	t11,$11,$11
2031	zapnot	$10,0xf,$10
2032	sll	a3,5,t11
2033	addl	AT,t9,t9
2034	zapnot	a3,0xf,a3
2035	xor	$14,$12,$12
2036
2037	sll	a4,30,t12
2038	addl	t11,t9,t9
2039	xor	a4,a5,ra
2040	xor	$4,$12,$12
2041
2042	srl	a4,2,a4
2043	addl	$11,t9,t9
2044	xor	t8,ra,ra
2045	xor	$9,$12,$12
2046
2047	srl	$12,31,t11
2048	addl	ra,t9,t9
2049	srl	a3,27,t10
2050	addl	$12,$12,$12
2051
2052	or	t12,a4,a4
2053	addl	t10,t9,t9
2054	or	t11,$12,$12
2055	zapnot	$11,0xf,$11
2056	sll	t9,5,t11
2057	addl	AT,t8,t8
2058	zapnot	t9,0xf,t9
2059	xor	$15,$13,$13
2060
2061	sll	a3,30,t12
2062	addl	t11,t8,t8
2063	xor	a3,a4,ra
2064	xor	$5,$13,$13
2065
2066	srl	a3,2,a3
2067	addl	$12,t8,t8
2068	xor	a5,ra,ra
2069	xor	$10,$13,$13
2070
2071	srl	$13,31,t11
2072	addl	ra,t8,t8
2073	srl	t9,27,t10
2074	addl	$13,$13,$13
2075
2076	or	t12,a3,a3
2077	addl	t10,t8,t8
2078	or	t11,$13,$13
2079	zapnot	$12,0xf,$12
2080	sll	t8,5,t11
2081	addl	AT,a5,a5
2082	zapnot	t8,0xf,t8
2083	xor	$0,$14,$14
2084
2085	sll	t9,30,t12
2086	addl	t11,a5,a5
2087	xor	t9,a3,ra
2088	xor	$6,$14,$14
2089
2090	srl	t9,2,t9
2091	addl	$13,a5,a5
2092	xor	a4,ra,ra
2093	xor	$11,$14,$14
2094
2095	srl	$14,31,t11
2096	addl	ra,a5,a5
2097	srl	t8,27,t10
2098	addl	$14,$14,$14
2099
2100	or	t12,t9,t9
2101	addl	t10,a5,a5
2102	or	t11,$14,$14
2103	sll	a5,5,t11
2104	addl	AT,a4,a4
2105	zapnot	a5,0xf,a5
2106	xor	$1,$15,$15
2107
2108	sll	t8,30,t12
2109	addl	t11,a4,a4
2110	xor	t8,t9,ra
2111	xor	$7,$15,$15
2112
2113	srl	t8,2,t8
2114	addl	$14,a4,a4
2115	xor	a3,ra,ra
2116	xor	$12,$15,$15
2117
2118	srl	$15,31,t11
2119	addl	ra,a4,a4
2120	srl	a5,27,t10
2121	addl	$15,$15,$15
2122
2123	or	t12,t8,t8
2124	addl	t10,a4,a4
2125	or	t11,$15,$15
2126	sll	a4,5,t11
2127	addl	AT,a3,a3
2128	zapnot	a4,0xf,a4
2129	ldl	$0,0(a0)
2130
2131	sll	a5,30,t12
2132	addl	t11,a3,a3
2133	xor	a5,t8,ra
2134	ldl	$1,4(a0)
2135
2136	srl	a5,2,a5
2137	addl	$15,a3,a3
2138	xor	t9,ra,ra
2139	ldl	$2,8(a0)
2140
2141	srl	a4,27,t10
2142	addl	ra,a3,a3
2143	ldl	$3,12(a0)
2144
2145	or	t12,a5,a5
2146	addl	t10,a3,a3
2147	ldl	$4,16(a0)
2148	addl	$0,a3,a3
2149	addl	$1,a4,a4
2150	addl	$2,a5,a5
2151	addl	$3,t8,t8
2152	addl	$4,t9,t9
2153	stl	a3,0(a0)
2154	stl	a4,4(a0)
2155	addq	a1,64,a1
2156	stl	a5,8(a0)
2157	stl	t8,12(a0)
2158	stl	t9,16(a0)
2159	cmpult	a1,a2,t11
2160	bne	t11,.Lloop
2161
2162	.set	noreorder
2163	ldq	ra,0(sp)
2164	ldq	s0,8(sp)
2165	ldq	s1,16(sp)
2166	ldq	s2,24(sp)
2167	ldq	s3,32(sp)
2168	ldq	s4,40(sp)
2169	ldq	s5,48(sp)
2170	ldq	fp,56(sp)
2171	lda	sp,64(sp)
2172	ret	(ra)
2173.end	sha1_block_data_order
2174.ascii	"SHA1 block transform for Alpha, CRYPTOGAMS by <appro@openssl.org>"
2175.align	2
2176