1#include "mips_arch.h"
2
3.text
4
5.set	noat
6.set	noreorder
7.align	5
8.globl	sha1_block_data_order
9.ent	sha1_block_data_order
10sha1_block_data_order:
11	.frame	$29,16*4,$31
12	.mask	0xc0ff0000,-4
13	.set	noreorder
14	subu $29,16*4
15	sw	$31,(16-1)*4($29)
16	sw	$30,(16-2)*4($29)
17	sw	$23,(16-3)*4($29)
18	sw	$22,(16-4)*4($29)
19	sw	$21,(16-5)*4($29)
20	sw	$20,(16-6)*4($29)
21	sw	$19,(16-7)*4($29)
22	sw	$18,(16-8)*4($29)
23	sw	$17,(16-9)*4($29)
24	sw	$16,(16-10)*4($29)
25	sll $6,6
26	addu $6,$5
27	sw	$6,0($29)
28	lw	$1,0($4)
29	lw	$2,4($4)
30	lw	$3,8($4)
31	lw	$7,12($4)
32	b	.Loop
33	lw	$24,16($4)
34.align	4
35.Loop:
36	.set	reorder
37#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
38	lui	$31,0x5a82
39	lw	$8,($5)
40	ori	$31,0x7999	# K_00_19
41#else
42	lwl	$8,3($5)
43	lui	$31,0x5a82
44	lwr	$8,0($5)
45	ori	$31,0x7999	# K_00_19
46#endif
47#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
48	wsbh	$8,$8	# byte swap(0)
49	rotr	$8,$8,16
50#else
51	srl	$25,$8,24	# byte swap(0)
52	srl	$6,$8,8
53	andi	$30,$8,0xFF00
54	sll	$8,$8,24
55	andi	$6,0xFF00
56	sll	$30,$30,8
57	or	$8,$25
58	or	$6,$30
59	or	$8,$6
60#endif
61#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
62	addu	$24,$31		# 0
63	xor	$25,$3,$7
64	rotr	$6,$1,27
65	and	$25,$2
66	addu	$24,$6
67#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
68	 lw	$9,1*4($5)
69#else
70	 lwl	$9,1*4+3($5)
71	 lwr	$9,1*4+0($5)
72#endif
73	xor	$25,$7
74	addu	$24,$8
75	rotr	$2,$2,2
76	addu	$24,$25
77#else
78	 lwl	$9,1*4+3($5)
79	sll	$25,$1,5	# 0
80	addu	$24,$31
81	 lwr	$9,1*4+0($5)
82	srl	$6,$1,27
83	addu	$24,$25
84	xor	$25,$3,$7
85	addu	$24,$6
86	sll	$30,$2,30
87	and	$25,$2
88	srl	$2,$2,2
89	xor	$25,$7
90	addu	$24,$8
91	or	$2,$30
92	addu	$24,$25
93#endif
94#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
95	wsbh	$9,$9	# byte swap(1)
96	rotr	$9,$9,16
97#else
98	srl	$25,$9,24	# byte swap(1)
99	srl	$6,$9,8
100	andi	$30,$9,0xFF00
101	sll	$9,$9,24
102	andi	$6,0xFF00
103	sll	$30,$30,8
104	or	$9,$25
105	or	$6,$30
106	or	$9,$6
107#endif
108#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
109	addu	$7,$31		# 1
110	xor	$25,$2,$3
111	rotr	$6,$24,27
112	and	$25,$1
113	addu	$7,$6
114#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
115	 lw	$10,2*4($5)
116#else
117	 lwl	$10,2*4+3($5)
118	 lwr	$10,2*4+0($5)
119#endif
120	xor	$25,$3
121	addu	$7,$9
122	rotr	$1,$1,2
123	addu	$7,$25
124#else
125	 lwl	$10,2*4+3($5)
126	sll	$25,$24,5	# 1
127	addu	$7,$31
128	 lwr	$10,2*4+0($5)
129	srl	$6,$24,27
130	addu	$7,$25
131	xor	$25,$2,$3
132	addu	$7,$6
133	sll	$30,$1,30
134	and	$25,$1
135	srl	$1,$1,2
136	xor	$25,$3
137	addu	$7,$9
138	or	$1,$30
139	addu	$7,$25
140#endif
141#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
142	wsbh	$10,$10	# byte swap(2)
143	rotr	$10,$10,16
144#else
145	srl	$25,$10,24	# byte swap(2)
146	srl	$6,$10,8
147	andi	$30,$10,0xFF00
148	sll	$10,$10,24
149	andi	$6,0xFF00
150	sll	$30,$30,8
151	or	$10,$25
152	or	$6,$30
153	or	$10,$6
154#endif
155#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
156	addu	$3,$31		# 2
157	xor	$25,$1,$2
158	rotr	$6,$7,27
159	and	$25,$24
160	addu	$3,$6
161#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
162	 lw	$11,3*4($5)
163#else
164	 lwl	$11,3*4+3($5)
165	 lwr	$11,3*4+0($5)
166#endif
167	xor	$25,$2
168	addu	$3,$10
169	rotr	$24,$24,2
170	addu	$3,$25
171#else
172	 lwl	$11,3*4+3($5)
173	sll	$25,$7,5	# 2
174	addu	$3,$31
175	 lwr	$11,3*4+0($5)
176	srl	$6,$7,27
177	addu	$3,$25
178	xor	$25,$1,$2
179	addu	$3,$6
180	sll	$30,$24,30
181	and	$25,$24
182	srl	$24,$24,2
183	xor	$25,$2
184	addu	$3,$10
185	or	$24,$30
186	addu	$3,$25
187#endif
188#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
189	wsbh	$11,$11	# byte swap(3)
190	rotr	$11,$11,16
191#else
192	srl	$25,$11,24	# byte swap(3)
193	srl	$6,$11,8
194	andi	$30,$11,0xFF00
195	sll	$11,$11,24
196	andi	$6,0xFF00
197	sll	$30,$30,8
198	or	$11,$25
199	or	$6,$30
200	or	$11,$6
201#endif
202#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
203	addu	$2,$31		# 3
204	xor	$25,$24,$1
205	rotr	$6,$3,27
206	and	$25,$7
207	addu	$2,$6
208#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
209	 lw	$12,4*4($5)
210#else
211	 lwl	$12,4*4+3($5)
212	 lwr	$12,4*4+0($5)
213#endif
214	xor	$25,$1
215	addu	$2,$11
216	rotr	$7,$7,2
217	addu	$2,$25
218#else
219	 lwl	$12,4*4+3($5)
220	sll	$25,$3,5	# 3
221	addu	$2,$31
222	 lwr	$12,4*4+0($5)
223	srl	$6,$3,27
224	addu	$2,$25
225	xor	$25,$24,$1
226	addu	$2,$6
227	sll	$30,$7,30
228	and	$25,$7
229	srl	$7,$7,2
230	xor	$25,$1
231	addu	$2,$11
232	or	$7,$30
233	addu	$2,$25
234#endif
235#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
236	wsbh	$12,$12	# byte swap(4)
237	rotr	$12,$12,16
238#else
239	srl	$25,$12,24	# byte swap(4)
240	srl	$6,$12,8
241	andi	$30,$12,0xFF00
242	sll	$12,$12,24
243	andi	$6,0xFF00
244	sll	$30,$30,8
245	or	$12,$25
246	or	$6,$30
247	or	$12,$6
248#endif
249#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
250	addu	$1,$31		# 4
251	xor	$25,$7,$24
252	rotr	$6,$2,27
253	and	$25,$3
254	addu	$1,$6
255#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
256	 lw	$13,5*4($5)
257#else
258	 lwl	$13,5*4+3($5)
259	 lwr	$13,5*4+0($5)
260#endif
261	xor	$25,$24
262	addu	$1,$12
263	rotr	$3,$3,2
264	addu	$1,$25
265#else
266	 lwl	$13,5*4+3($5)
267	sll	$25,$2,5	# 4
268	addu	$1,$31
269	 lwr	$13,5*4+0($5)
270	srl	$6,$2,27
271	addu	$1,$25
272	xor	$25,$7,$24
273	addu	$1,$6
274	sll	$30,$3,30
275	and	$25,$3
276	srl	$3,$3,2
277	xor	$25,$24
278	addu	$1,$12
279	or	$3,$30
280	addu	$1,$25
281#endif
282#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
283	wsbh	$13,$13	# byte swap(5)
284	rotr	$13,$13,16
285#else
286	srl	$25,$13,24	# byte swap(5)
287	srl	$6,$13,8
288	andi	$30,$13,0xFF00
289	sll	$13,$13,24
290	andi	$6,0xFF00
291	sll	$30,$30,8
292	or	$13,$25
293	or	$6,$30
294	or	$13,$6
295#endif
296#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
297	addu	$24,$31		# 5
298	xor	$25,$3,$7
299	rotr	$6,$1,27
300	and	$25,$2
301	addu	$24,$6
302#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
303	 lw	$14,6*4($5)
304#else
305	 lwl	$14,6*4+3($5)
306	 lwr	$14,6*4+0($5)
307#endif
308	xor	$25,$7
309	addu	$24,$13
310	rotr	$2,$2,2
311	addu	$24,$25
312#else
313	 lwl	$14,6*4+3($5)
314	sll	$25,$1,5	# 5
315	addu	$24,$31
316	 lwr	$14,6*4+0($5)
317	srl	$6,$1,27
318	addu	$24,$25
319	xor	$25,$3,$7
320	addu	$24,$6
321	sll	$30,$2,30
322	and	$25,$2
323	srl	$2,$2,2
324	xor	$25,$7
325	addu	$24,$13
326	or	$2,$30
327	addu	$24,$25
328#endif
329#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
330	wsbh	$14,$14	# byte swap(6)
331	rotr	$14,$14,16
332#else
333	srl	$25,$14,24	# byte swap(6)
334	srl	$6,$14,8
335	andi	$30,$14,0xFF00
336	sll	$14,$14,24
337	andi	$6,0xFF00
338	sll	$30,$30,8
339	or	$14,$25
340	or	$6,$30
341	or	$14,$6
342#endif
343#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
344	addu	$7,$31		# 6
345	xor	$25,$2,$3
346	rotr	$6,$24,27
347	and	$25,$1
348	addu	$7,$6
349#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
350	 lw	$15,7*4($5)
351#else
352	 lwl	$15,7*4+3($5)
353	 lwr	$15,7*4+0($5)
354#endif
355	xor	$25,$3
356	addu	$7,$14
357	rotr	$1,$1,2
358	addu	$7,$25
359#else
360	 lwl	$15,7*4+3($5)
361	sll	$25,$24,5	# 6
362	addu	$7,$31
363	 lwr	$15,7*4+0($5)
364	srl	$6,$24,27
365	addu	$7,$25
366	xor	$25,$2,$3
367	addu	$7,$6
368	sll	$30,$1,30
369	and	$25,$1
370	srl	$1,$1,2
371	xor	$25,$3
372	addu	$7,$14
373	or	$1,$30
374	addu	$7,$25
375#endif
376#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
377	wsbh	$15,$15	# byte swap(7)
378	rotr	$15,$15,16
379#else
380	srl	$25,$15,24	# byte swap(7)
381	srl	$6,$15,8
382	andi	$30,$15,0xFF00
383	sll	$15,$15,24
384	andi	$6,0xFF00
385	sll	$30,$30,8
386	or	$15,$25
387	or	$6,$30
388	or	$15,$6
389#endif
390#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
391	addu	$3,$31		# 7
392	xor	$25,$1,$2
393	rotr	$6,$7,27
394	and	$25,$24
395	addu	$3,$6
396#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
397	 lw	$16,8*4($5)
398#else
399	 lwl	$16,8*4+3($5)
400	 lwr	$16,8*4+0($5)
401#endif
402	xor	$25,$2
403	addu	$3,$15
404	rotr	$24,$24,2
405	addu	$3,$25
406#else
407	 lwl	$16,8*4+3($5)
408	sll	$25,$7,5	# 7
409	addu	$3,$31
410	 lwr	$16,8*4+0($5)
411	srl	$6,$7,27
412	addu	$3,$25
413	xor	$25,$1,$2
414	addu	$3,$6
415	sll	$30,$24,30
416	and	$25,$24
417	srl	$24,$24,2
418	xor	$25,$2
419	addu	$3,$15
420	or	$24,$30
421	addu	$3,$25
422#endif
423#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
424	wsbh	$16,$16	# byte swap(8)
425	rotr	$16,$16,16
426#else
427	srl	$25,$16,24	# byte swap(8)
428	srl	$6,$16,8
429	andi	$30,$16,0xFF00
430	sll	$16,$16,24
431	andi	$6,0xFF00
432	sll	$30,$30,8
433	or	$16,$25
434	or	$6,$30
435	or	$16,$6
436#endif
437#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
438	addu	$2,$31		# 8
439	xor	$25,$24,$1
440	rotr	$6,$3,27
441	and	$25,$7
442	addu	$2,$6
443#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
444	 lw	$17,9*4($5)
445#else
446	 lwl	$17,9*4+3($5)
447	 lwr	$17,9*4+0($5)
448#endif
449	xor	$25,$1
450	addu	$2,$16
451	rotr	$7,$7,2
452	addu	$2,$25
453#else
454	 lwl	$17,9*4+3($5)
455	sll	$25,$3,5	# 8
456	addu	$2,$31
457	 lwr	$17,9*4+0($5)
458	srl	$6,$3,27
459	addu	$2,$25
460	xor	$25,$24,$1
461	addu	$2,$6
462	sll	$30,$7,30
463	and	$25,$7
464	srl	$7,$7,2
465	xor	$25,$1
466	addu	$2,$16
467	or	$7,$30
468	addu	$2,$25
469#endif
470#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
471	wsbh	$17,$17	# byte swap(9)
472	rotr	$17,$17,16
473#else
474	srl	$25,$17,24	# byte swap(9)
475	srl	$6,$17,8
476	andi	$30,$17,0xFF00
477	sll	$17,$17,24
478	andi	$6,0xFF00
479	sll	$30,$30,8
480	or	$17,$25
481	or	$6,$30
482	or	$17,$6
483#endif
484#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
485	addu	$1,$31		# 9
486	xor	$25,$7,$24
487	rotr	$6,$2,27
488	and	$25,$3
489	addu	$1,$6
490#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
491	 lw	$18,10*4($5)
492#else
493	 lwl	$18,10*4+3($5)
494	 lwr	$18,10*4+0($5)
495#endif
496	xor	$25,$24
497	addu	$1,$17
498	rotr	$3,$3,2
499	addu	$1,$25
500#else
501	 lwl	$18,10*4+3($5)
502	sll	$25,$2,5	# 9
503	addu	$1,$31
504	 lwr	$18,10*4+0($5)
505	srl	$6,$2,27
506	addu	$1,$25
507	xor	$25,$7,$24
508	addu	$1,$6
509	sll	$30,$3,30
510	and	$25,$3
511	srl	$3,$3,2
512	xor	$25,$24
513	addu	$1,$17
514	or	$3,$30
515	addu	$1,$25
516#endif
517#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
518	wsbh	$18,$18	# byte swap(10)
519	rotr	$18,$18,16
520#else
521	srl	$25,$18,24	# byte swap(10)
522	srl	$6,$18,8
523	andi	$30,$18,0xFF00
524	sll	$18,$18,24
525	andi	$6,0xFF00
526	sll	$30,$30,8
527	or	$18,$25
528	or	$6,$30
529	or	$18,$6
530#endif
531#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
532	addu	$24,$31		# 10
533	xor	$25,$3,$7
534	rotr	$6,$1,27
535	and	$25,$2
536	addu	$24,$6
537#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
538	 lw	$19,11*4($5)
539#else
540	 lwl	$19,11*4+3($5)
541	 lwr	$19,11*4+0($5)
542#endif
543	xor	$25,$7
544	addu	$24,$18
545	rotr	$2,$2,2
546	addu	$24,$25
547#else
548	 lwl	$19,11*4+3($5)
549	sll	$25,$1,5	# 10
550	addu	$24,$31
551	 lwr	$19,11*4+0($5)
552	srl	$6,$1,27
553	addu	$24,$25
554	xor	$25,$3,$7
555	addu	$24,$6
556	sll	$30,$2,30
557	and	$25,$2
558	srl	$2,$2,2
559	xor	$25,$7
560	addu	$24,$18
561	or	$2,$30
562	addu	$24,$25
563#endif
564#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
565	wsbh	$19,$19	# byte swap(11)
566	rotr	$19,$19,16
567#else
568	srl	$25,$19,24	# byte swap(11)
569	srl	$6,$19,8
570	andi	$30,$19,0xFF00
571	sll	$19,$19,24
572	andi	$6,0xFF00
573	sll	$30,$30,8
574	or	$19,$25
575	or	$6,$30
576	or	$19,$6
577#endif
578#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
579	addu	$7,$31		# 11
580	xor	$25,$2,$3
581	rotr	$6,$24,27
582	and	$25,$1
583	addu	$7,$6
584#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
585	 lw	$20,12*4($5)
586#else
587	 lwl	$20,12*4+3($5)
588	 lwr	$20,12*4+0($5)
589#endif
590	xor	$25,$3
591	addu	$7,$19
592	rotr	$1,$1,2
593	addu	$7,$25
594#else
595	 lwl	$20,12*4+3($5)
596	sll	$25,$24,5	# 11
597	addu	$7,$31
598	 lwr	$20,12*4+0($5)
599	srl	$6,$24,27
600	addu	$7,$25
601	xor	$25,$2,$3
602	addu	$7,$6
603	sll	$30,$1,30
604	and	$25,$1
605	srl	$1,$1,2
606	xor	$25,$3
607	addu	$7,$19
608	or	$1,$30
609	addu	$7,$25
610#endif
611#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
612	wsbh	$20,$20	# byte swap(12)
613	rotr	$20,$20,16
614#else
615	srl	$25,$20,24	# byte swap(12)
616	srl	$6,$20,8
617	andi	$30,$20,0xFF00
618	sll	$20,$20,24
619	andi	$6,0xFF00
620	sll	$30,$30,8
621	or	$20,$25
622	or	$6,$30
623	or	$20,$6
624#endif
625#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
626	addu	$3,$31		# 12
627	xor	$25,$1,$2
628	rotr	$6,$7,27
629	and	$25,$24
630	addu	$3,$6
631#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
632	 lw	$21,13*4($5)
633#else
634	 lwl	$21,13*4+3($5)
635	 lwr	$21,13*4+0($5)
636#endif
637	xor	$25,$2
638	addu	$3,$20
639	rotr	$24,$24,2
640	addu	$3,$25
641#else
642	 lwl	$21,13*4+3($5)
643	sll	$25,$7,5	# 12
644	addu	$3,$31
645	 lwr	$21,13*4+0($5)
646	srl	$6,$7,27
647	addu	$3,$25
648	xor	$25,$1,$2
649	addu	$3,$6
650	sll	$30,$24,30
651	and	$25,$24
652	srl	$24,$24,2
653	xor	$25,$2
654	addu	$3,$20
655	or	$24,$30
656	addu	$3,$25
657#endif
658#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
659	wsbh	$21,$21	# byte swap(13)
660	rotr	$21,$21,16
661#else
662	srl	$25,$21,24	# byte swap(13)
663	srl	$6,$21,8
664	andi	$30,$21,0xFF00
665	sll	$21,$21,24
666	andi	$6,0xFF00
667	sll	$30,$30,8
668	or	$21,$25
669	or	$6,$30
670	or	$21,$6
671#endif
672#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
673	addu	$2,$31		# 13
674	xor	$25,$24,$1
675	rotr	$6,$3,27
676	and	$25,$7
677	addu	$2,$6
678#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
679	 lw	$22,14*4($5)
680#else
681	 lwl	$22,14*4+3($5)
682	 lwr	$22,14*4+0($5)
683#endif
684	xor	$25,$1
685	addu	$2,$21
686	rotr	$7,$7,2
687	addu	$2,$25
688#else
689	 lwl	$22,14*4+3($5)
690	sll	$25,$3,5	# 13
691	addu	$2,$31
692	 lwr	$22,14*4+0($5)
693	srl	$6,$3,27
694	addu	$2,$25
695	xor	$25,$24,$1
696	addu	$2,$6
697	sll	$30,$7,30
698	and	$25,$7
699	srl	$7,$7,2
700	xor	$25,$1
701	addu	$2,$21
702	or	$7,$30
703	addu	$2,$25
704#endif
705#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
706	wsbh	$22,$22	# byte swap(14)
707	rotr	$22,$22,16
708#else
709	srl	$25,$22,24	# byte swap(14)
710	srl	$6,$22,8
711	andi	$30,$22,0xFF00
712	sll	$22,$22,24
713	andi	$6,0xFF00
714	sll	$30,$30,8
715	or	$22,$25
716	or	$6,$30
717	or	$22,$6
718#endif
719#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
720	addu	$1,$31		# 14
721	xor	$25,$7,$24
722	rotr	$6,$2,27
723	and	$25,$3
724	addu	$1,$6
725#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
726	 lw	$23,15*4($5)
727#else
728	 lwl	$23,15*4+3($5)
729	 lwr	$23,15*4+0($5)
730#endif
731	xor	$25,$24
732	addu	$1,$22
733	rotr	$3,$3,2
734	addu	$1,$25
735#else
736	 lwl	$23,15*4+3($5)
737	sll	$25,$2,5	# 14
738	addu	$1,$31
739	 lwr	$23,15*4+0($5)
740	srl	$6,$2,27
741	addu	$1,$25
742	xor	$25,$7,$24
743	addu	$1,$6
744	sll	$30,$3,30
745	and	$25,$3
746	srl	$3,$3,2
747	xor	$25,$24
748	addu	$1,$22
749	or	$3,$30
750	addu	$1,$25
751#endif
752#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
753	wsbh	$23,$23	# byte swap(15)
754	rotr	$23,$23,16
755#else
756	srl	$25,$23,24	# byte swap(15)
757	srl	$6,$23,8
758	andi	$30,$23,0xFF00
759	sll	$23,$23,24
760	andi	$6,0xFF00
761	sll	$30,$30,8
762	or	$23,$25
763	or	$23,$6
764	or	$23,$30
765#endif
766#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
767	addu	$24,$31		# 15
768	 xor	$8,$10
769	xor	$25,$3,$7
770	rotr	$6,$1,27
771	 xor	$8,$16
772	and	$25,$2
773	addu	$24,$6
774	 xor	$8,$21
775	xor	$25,$7
776	addu	$24,$23
777	 rotr	$8,$8,31
778	rotr	$2,$2,2
779	addu	$24,$25
780#else
781	 xor	$8,$10
782	sll	$25,$1,5	# 15
783	addu	$24,$31
784	srl	$6,$1,27
785	addu	$24,$25
786	 xor	$8,$16
787	xor	$25,$3,$7
788	addu	$24,$6
789	 xor	$8,$21
790	sll	$30,$2,30
791	and	$25,$2
792	 srl	$6,$8,31
793	 addu	$8,$8
794	srl	$2,$2,2
795	xor	$25,$7
796	 or	$8,$6
797	addu	$24,$23
798	or	$2,$30
799	addu	$24,$25
800#endif
801#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
802	addu	$7,$31		# 16
803	 xor	$9,$11
804	xor	$25,$2,$3
805	rotr	$6,$24,27
806	 xor	$9,$17
807	and	$25,$1
808	addu	$7,$6
809	 xor	$9,$22
810	xor	$25,$3
811	addu	$7,$8
812	 rotr	$9,$9,31
813	rotr	$1,$1,2
814	addu	$7,$25
815#else
816	 xor	$9,$11
817	sll	$25,$24,5	# 16
818	addu	$7,$31
819	srl	$6,$24,27
820	addu	$7,$25
821	 xor	$9,$17
822	xor	$25,$2,$3
823	addu	$7,$6
824	 xor	$9,$22
825	sll	$30,$1,30
826	and	$25,$1
827	 srl	$6,$9,31
828	 addu	$9,$9
829	srl	$1,$1,2
830	xor	$25,$3
831	 or	$9,$6
832	addu	$7,$8
833	or	$1,$30
834	addu	$7,$25
835#endif
836#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
837	addu	$3,$31		# 17
838	 xor	$10,$12
839	xor	$25,$1,$2
840	rotr	$6,$7,27
841	 xor	$10,$18
842	and	$25,$24
843	addu	$3,$6
844	 xor	$10,$23
845	xor	$25,$2
846	addu	$3,$9
847	 rotr	$10,$10,31
848	rotr	$24,$24,2
849	addu	$3,$25
850#else
851	 xor	$10,$12
852	sll	$25,$7,5	# 17
853	addu	$3,$31
854	srl	$6,$7,27
855	addu	$3,$25
856	 xor	$10,$18
857	xor	$25,$1,$2
858	addu	$3,$6
859	 xor	$10,$23
860	sll	$30,$24,30
861	and	$25,$24
862	 srl	$6,$10,31
863	 addu	$10,$10
864	srl	$24,$24,2
865	xor	$25,$2
866	 or	$10,$6
867	addu	$3,$9
868	or	$24,$30
869	addu	$3,$25
870#endif
871#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
872	addu	$2,$31		# 18
873	 xor	$11,$13
874	xor	$25,$24,$1
875	rotr	$6,$3,27
876	 xor	$11,$19
877	and	$25,$7
878	addu	$2,$6
879	 xor	$11,$8
880	xor	$25,$1
881	addu	$2,$10
882	 rotr	$11,$11,31
883	rotr	$7,$7,2
884	addu	$2,$25
885#else
886	 xor	$11,$13
887	sll	$25,$3,5	# 18
888	addu	$2,$31
889	srl	$6,$3,27
890	addu	$2,$25
891	 xor	$11,$19
892	xor	$25,$24,$1
893	addu	$2,$6
894	 xor	$11,$8
895	sll	$30,$7,30
896	and	$25,$7
897	 srl	$6,$11,31
898	 addu	$11,$11
899	srl	$7,$7,2
900	xor	$25,$1
901	 or	$11,$6
902	addu	$2,$10
903	or	$7,$30
904	addu	$2,$25
905#endif
906#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
907	addu	$1,$31		# 19
908	 xor	$12,$14
909	xor	$25,$7,$24
910	rotr	$6,$2,27
911	 xor	$12,$20
912	and	$25,$3
913	addu	$1,$6
914	 xor	$12,$9
915	xor	$25,$24
916	addu	$1,$11
917	 rotr	$12,$12,31
918	rotr	$3,$3,2
919	addu	$1,$25
920#else
921	 xor	$12,$14
922	sll	$25,$2,5	# 19
923	addu	$1,$31
924	srl	$6,$2,27
925	addu	$1,$25
926	 xor	$12,$20
927	xor	$25,$7,$24
928	addu	$1,$6
929	 xor	$12,$9
930	sll	$30,$3,30
931	and	$25,$3
932	 srl	$6,$12,31
933	 addu	$12,$12
934	srl	$3,$3,2
935	xor	$25,$24
936	 or	$12,$6
937	addu	$1,$11
938	or	$3,$30
939	addu	$1,$25
940#endif
941	lui	$31,0x6ed9
942	ori	$31,0xeba1	# K_20_39
943#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
944	 xor	$13,$15
945	addu	$24,$31		# 20
946	rotr	$6,$1,27
947	 xor	$13,$21
948	xor	$25,$3,$7
949	addu	$24,$6
950	 xor	$13,$10
951	xor	$25,$2
952	addu	$24,$12
953	 rotr	$13,$13,31
954	rotr	$2,$2,2
955	addu	$24,$25
956#else
957	 xor	$13,$15
958	sll	$25,$1,5	# 20
959	addu	$24,$31
960	srl	$6,$1,27
961	addu	$24,$25
962	 xor	$13,$21
963	xor	$25,$3,$7
964	addu	$24,$6
965	 xor	$13,$10
966	sll	$30,$2,30
967	xor	$25,$2
968	 srl	$6,$13,31
969	 addu	$13,$13
970	srl	$2,$2,2
971	addu	$24,$12
972	 or	$13,$6
973	or	$2,$30
974	addu	$24,$25
975#endif
976#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
977	 xor	$14,$16
978	addu	$7,$31		# 21
979	rotr	$6,$24,27
980	 xor	$14,$22
981	xor	$25,$2,$3
982	addu	$7,$6
983	 xor	$14,$11
984	xor	$25,$1
985	addu	$7,$13
986	 rotr	$14,$14,31
987	rotr	$1,$1,2
988	addu	$7,$25
989#else
990	 xor	$14,$16
991	sll	$25,$24,5	# 21
992	addu	$7,$31
993	srl	$6,$24,27
994	addu	$7,$25
995	 xor	$14,$22
996	xor	$25,$2,$3
997	addu	$7,$6
998	 xor	$14,$11
999	sll	$30,$1,30
1000	xor	$25,$1
1001	 srl	$6,$14,31
1002	 addu	$14,$14
1003	srl	$1,$1,2
1004	addu	$7,$13
1005	 or	$14,$6
1006	or	$1,$30
1007	addu	$7,$25
1008#endif
1009#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1010	 xor	$15,$17
1011	addu	$3,$31		# 22
1012	rotr	$6,$7,27
1013	 xor	$15,$23
1014	xor	$25,$1,$2
1015	addu	$3,$6
1016	 xor	$15,$12
1017	xor	$25,$24
1018	addu	$3,$14
1019	 rotr	$15,$15,31
1020	rotr	$24,$24,2
1021	addu	$3,$25
1022#else
1023	 xor	$15,$17
1024	sll	$25,$7,5	# 22
1025	addu	$3,$31
1026	srl	$6,$7,27
1027	addu	$3,$25
1028	 xor	$15,$23
1029	xor	$25,$1,$2
1030	addu	$3,$6
1031	 xor	$15,$12
1032	sll	$30,$24,30
1033	xor	$25,$24
1034	 srl	$6,$15,31
1035	 addu	$15,$15
1036	srl	$24,$24,2
1037	addu	$3,$14
1038	 or	$15,$6
1039	or	$24,$30
1040	addu	$3,$25
1041#endif
1042#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1043	 xor	$16,$18
1044	addu	$2,$31		# 23
1045	rotr	$6,$3,27
1046	 xor	$16,$8
1047	xor	$25,$24,$1
1048	addu	$2,$6
1049	 xor	$16,$13
1050	xor	$25,$7
1051	addu	$2,$15
1052	 rotr	$16,$16,31
1053	rotr	$7,$7,2
1054	addu	$2,$25
1055#else
1056	 xor	$16,$18
1057	sll	$25,$3,5	# 23
1058	addu	$2,$31
1059	srl	$6,$3,27
1060	addu	$2,$25
1061	 xor	$16,$8
1062	xor	$25,$24,$1
1063	addu	$2,$6
1064	 xor	$16,$13
1065	sll	$30,$7,30
1066	xor	$25,$7
1067	 srl	$6,$16,31
1068	 addu	$16,$16
1069	srl	$7,$7,2
1070	addu	$2,$15
1071	 or	$16,$6
1072	or	$7,$30
1073	addu	$2,$25
1074#endif
1075#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1076	 xor	$17,$19
1077	addu	$1,$31		# 24
1078	rotr	$6,$2,27
1079	 xor	$17,$9
1080	xor	$25,$7,$24
1081	addu	$1,$6
1082	 xor	$17,$14
1083	xor	$25,$3
1084	addu	$1,$16
1085	 rotr	$17,$17,31
1086	rotr	$3,$3,2
1087	addu	$1,$25
1088#else
1089	 xor	$17,$19
1090	sll	$25,$2,5	# 24
1091	addu	$1,$31
1092	srl	$6,$2,27
1093	addu	$1,$25
1094	 xor	$17,$9
1095	xor	$25,$7,$24
1096	addu	$1,$6
1097	 xor	$17,$14
1098	sll	$30,$3,30
1099	xor	$25,$3
1100	 srl	$6,$17,31
1101	 addu	$17,$17
1102	srl	$3,$3,2
1103	addu	$1,$16
1104	 or	$17,$6
1105	or	$3,$30
1106	addu	$1,$25
1107#endif
1108#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1109	 xor	$18,$20
1110	addu	$24,$31		# 25
1111	rotr	$6,$1,27
1112	 xor	$18,$10
1113	xor	$25,$3,$7
1114	addu	$24,$6
1115	 xor	$18,$15
1116	xor	$25,$2
1117	addu	$24,$17
1118	 rotr	$18,$18,31
1119	rotr	$2,$2,2
1120	addu	$24,$25
1121#else
1122	 xor	$18,$20
1123	sll	$25,$1,5	# 25
1124	addu	$24,$31
1125	srl	$6,$1,27
1126	addu	$24,$25
1127	 xor	$18,$10
1128	xor	$25,$3,$7
1129	addu	$24,$6
1130	 xor	$18,$15
1131	sll	$30,$2,30
1132	xor	$25,$2
1133	 srl	$6,$18,31
1134	 addu	$18,$18
1135	srl	$2,$2,2
1136	addu	$24,$17
1137	 or	$18,$6
1138	or	$2,$30
1139	addu	$24,$25
1140#endif
1141#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1142	 xor	$19,$21
1143	addu	$7,$31		# 26
1144	rotr	$6,$24,27
1145	 xor	$19,$11
1146	xor	$25,$2,$3
1147	addu	$7,$6
1148	 xor	$19,$16
1149	xor	$25,$1
1150	addu	$7,$18
1151	 rotr	$19,$19,31
1152	rotr	$1,$1,2
1153	addu	$7,$25
1154#else
1155	 xor	$19,$21
1156	sll	$25,$24,5	# 26
1157	addu	$7,$31
1158	srl	$6,$24,27
1159	addu	$7,$25
1160	 xor	$19,$11
1161	xor	$25,$2,$3
1162	addu	$7,$6
1163	 xor	$19,$16
1164	sll	$30,$1,30
1165	xor	$25,$1
1166	 srl	$6,$19,31
1167	 addu	$19,$19
1168	srl	$1,$1,2
1169	addu	$7,$18
1170	 or	$19,$6
1171	or	$1,$30
1172	addu	$7,$25
1173#endif
1174#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1175	 xor	$20,$22
1176	addu	$3,$31		# 27
1177	rotr	$6,$7,27
1178	 xor	$20,$12
1179	xor	$25,$1,$2
1180	addu	$3,$6
1181	 xor	$20,$17
1182	xor	$25,$24
1183	addu	$3,$19
1184	 rotr	$20,$20,31
1185	rotr	$24,$24,2
1186	addu	$3,$25
1187#else
1188	 xor	$20,$22
1189	sll	$25,$7,5	# 27
1190	addu	$3,$31
1191	srl	$6,$7,27
1192	addu	$3,$25
1193	 xor	$20,$12
1194	xor	$25,$1,$2
1195	addu	$3,$6
1196	 xor	$20,$17
1197	sll	$30,$24,30
1198	xor	$25,$24
1199	 srl	$6,$20,31
1200	 addu	$20,$20
1201	srl	$24,$24,2
1202	addu	$3,$19
1203	 or	$20,$6
1204	or	$24,$30
1205	addu	$3,$25
1206#endif
1207#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1208	 xor	$21,$23
1209	addu	$2,$31		# 28
1210	rotr	$6,$3,27
1211	 xor	$21,$13
1212	xor	$25,$24,$1
1213	addu	$2,$6
1214	 xor	$21,$18
1215	xor	$25,$7
1216	addu	$2,$20
1217	 rotr	$21,$21,31
1218	rotr	$7,$7,2
1219	addu	$2,$25
1220#else
1221	 xor	$21,$23
1222	sll	$25,$3,5	# 28
1223	addu	$2,$31
1224	srl	$6,$3,27
1225	addu	$2,$25
1226	 xor	$21,$13
1227	xor	$25,$24,$1
1228	addu	$2,$6
1229	 xor	$21,$18
1230	sll	$30,$7,30
1231	xor	$25,$7
1232	 srl	$6,$21,31
1233	 addu	$21,$21
1234	srl	$7,$7,2
1235	addu	$2,$20
1236	 or	$21,$6
1237	or	$7,$30
1238	addu	$2,$25
1239#endif
1240#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1241	 xor	$22,$8
1242	addu	$1,$31		# 29
1243	rotr	$6,$2,27
1244	 xor	$22,$14
1245	xor	$25,$7,$24
1246	addu	$1,$6
1247	 xor	$22,$19
1248	xor	$25,$3
1249	addu	$1,$21
1250	 rotr	$22,$22,31
1251	rotr	$3,$3,2
1252	addu	$1,$25
1253#else
1254	 xor	$22,$8
1255	sll	$25,$2,5	# 29
1256	addu	$1,$31
1257	srl	$6,$2,27
1258	addu	$1,$25
1259	 xor	$22,$14
1260	xor	$25,$7,$24
1261	addu	$1,$6
1262	 xor	$22,$19
1263	sll	$30,$3,30
1264	xor	$25,$3
1265	 srl	$6,$22,31
1266	 addu	$22,$22
1267	srl	$3,$3,2
1268	addu	$1,$21
1269	 or	$22,$6
1270	or	$3,$30
1271	addu	$1,$25
1272#endif
1273#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1274	 xor	$23,$9
1275	addu	$24,$31		# 30
1276	rotr	$6,$1,27
1277	 xor	$23,$15
1278	xor	$25,$3,$7
1279	addu	$24,$6
1280	 xor	$23,$20
1281	xor	$25,$2
1282	addu	$24,$22
1283	 rotr	$23,$23,31
1284	rotr	$2,$2,2
1285	addu	$24,$25
1286#else
1287	 xor	$23,$9
1288	sll	$25,$1,5	# 30
1289	addu	$24,$31
1290	srl	$6,$1,27
1291	addu	$24,$25
1292	 xor	$23,$15
1293	xor	$25,$3,$7
1294	addu	$24,$6
1295	 xor	$23,$20
1296	sll	$30,$2,30
1297	xor	$25,$2
1298	 srl	$6,$23,31
1299	 addu	$23,$23
1300	srl	$2,$2,2
1301	addu	$24,$22
1302	 or	$23,$6
1303	or	$2,$30
1304	addu	$24,$25
1305#endif
1306#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1307	 xor	$8,$10
1308	addu	$7,$31		# 31
1309	rotr	$6,$24,27
1310	 xor	$8,$16
1311	xor	$25,$2,$3
1312	addu	$7,$6
1313	 xor	$8,$21
1314	xor	$25,$1
1315	addu	$7,$23
1316	 rotr	$8,$8,31
1317	rotr	$1,$1,2
1318	addu	$7,$25
1319#else
1320	 xor	$8,$10
1321	sll	$25,$24,5	# 31
1322	addu	$7,$31
1323	srl	$6,$24,27
1324	addu	$7,$25
1325	 xor	$8,$16
1326	xor	$25,$2,$3
1327	addu	$7,$6
1328	 xor	$8,$21
1329	sll	$30,$1,30
1330	xor	$25,$1
1331	 srl	$6,$8,31
1332	 addu	$8,$8
1333	srl	$1,$1,2
1334	addu	$7,$23
1335	 or	$8,$6
1336	or	$1,$30
1337	addu	$7,$25
1338#endif
1339#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1340	 xor	$9,$11
1341	addu	$3,$31		# 32
1342	rotr	$6,$7,27
1343	 xor	$9,$17
1344	xor	$25,$1,$2
1345	addu	$3,$6
1346	 xor	$9,$22
1347	xor	$25,$24
1348	addu	$3,$8
1349	 rotr	$9,$9,31
1350	rotr	$24,$24,2
1351	addu	$3,$25
1352#else
1353	 xor	$9,$11
1354	sll	$25,$7,5	# 32
1355	addu	$3,$31
1356	srl	$6,$7,27
1357	addu	$3,$25
1358	 xor	$9,$17
1359	xor	$25,$1,$2
1360	addu	$3,$6
1361	 xor	$9,$22
1362	sll	$30,$24,30
1363	xor	$25,$24
1364	 srl	$6,$9,31
1365	 addu	$9,$9
1366	srl	$24,$24,2
1367	addu	$3,$8
1368	 or	$9,$6
1369	or	$24,$30
1370	addu	$3,$25
1371#endif
1372#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1373	 xor	$10,$12
1374	addu	$2,$31		# 33
1375	rotr	$6,$3,27
1376	 xor	$10,$18
1377	xor	$25,$24,$1
1378	addu	$2,$6
1379	 xor	$10,$23
1380	xor	$25,$7
1381	addu	$2,$9
1382	 rotr	$10,$10,31
1383	rotr	$7,$7,2
1384	addu	$2,$25
1385#else
1386	 xor	$10,$12
1387	sll	$25,$3,5	# 33
1388	addu	$2,$31
1389	srl	$6,$3,27
1390	addu	$2,$25
1391	 xor	$10,$18
1392	xor	$25,$24,$1
1393	addu	$2,$6
1394	 xor	$10,$23
1395	sll	$30,$7,30
1396	xor	$25,$7
1397	 srl	$6,$10,31
1398	 addu	$10,$10
1399	srl	$7,$7,2
1400	addu	$2,$9
1401	 or	$10,$6
1402	or	$7,$30
1403	addu	$2,$25
1404#endif
1405#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1406	 xor	$11,$13
1407	addu	$1,$31		# 34
1408	rotr	$6,$2,27
1409	 xor	$11,$19
1410	xor	$25,$7,$24
1411	addu	$1,$6
1412	 xor	$11,$8
1413	xor	$25,$3
1414	addu	$1,$10
1415	 rotr	$11,$11,31
1416	rotr	$3,$3,2
1417	addu	$1,$25
1418#else
1419	 xor	$11,$13
1420	sll	$25,$2,5	# 34
1421	addu	$1,$31
1422	srl	$6,$2,27
1423	addu	$1,$25
1424	 xor	$11,$19
1425	xor	$25,$7,$24
1426	addu	$1,$6
1427	 xor	$11,$8
1428	sll	$30,$3,30
1429	xor	$25,$3
1430	 srl	$6,$11,31
1431	 addu	$11,$11
1432	srl	$3,$3,2
1433	addu	$1,$10
1434	 or	$11,$6
1435	or	$3,$30
1436	addu	$1,$25
1437#endif
1438#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1439	 xor	$12,$14
1440	addu	$24,$31		# 35
1441	rotr	$6,$1,27
1442	 xor	$12,$20
1443	xor	$25,$3,$7
1444	addu	$24,$6
1445	 xor	$12,$9
1446	xor	$25,$2
1447	addu	$24,$11
1448	 rotr	$12,$12,31
1449	rotr	$2,$2,2
1450	addu	$24,$25
1451#else
1452	 xor	$12,$14
1453	sll	$25,$1,5	# 35
1454	addu	$24,$31
1455	srl	$6,$1,27
1456	addu	$24,$25
1457	 xor	$12,$20
1458	xor	$25,$3,$7
1459	addu	$24,$6
1460	 xor	$12,$9
1461	sll	$30,$2,30
1462	xor	$25,$2
1463	 srl	$6,$12,31
1464	 addu	$12,$12
1465	srl	$2,$2,2
1466	addu	$24,$11
1467	 or	$12,$6
1468	or	$2,$30
1469	addu	$24,$25
1470#endif
1471#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1472	 xor	$13,$15
1473	addu	$7,$31		# 36
1474	rotr	$6,$24,27
1475	 xor	$13,$21
1476	xor	$25,$2,$3
1477	addu	$7,$6
1478	 xor	$13,$10
1479	xor	$25,$1
1480	addu	$7,$12
1481	 rotr	$13,$13,31
1482	rotr	$1,$1,2
1483	addu	$7,$25
1484#else
1485	 xor	$13,$15
1486	sll	$25,$24,5	# 36
1487	addu	$7,$31
1488	srl	$6,$24,27
1489	addu	$7,$25
1490	 xor	$13,$21
1491	xor	$25,$2,$3
1492	addu	$7,$6
1493	 xor	$13,$10
1494	sll	$30,$1,30
1495	xor	$25,$1
1496	 srl	$6,$13,31
1497	 addu	$13,$13
1498	srl	$1,$1,2
1499	addu	$7,$12
1500	 or	$13,$6
1501	or	$1,$30
1502	addu	$7,$25
1503#endif
1504#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1505	 xor	$14,$16
1506	addu	$3,$31		# 37
1507	rotr	$6,$7,27
1508	 xor	$14,$22
1509	xor	$25,$1,$2
1510	addu	$3,$6
1511	 xor	$14,$11
1512	xor	$25,$24
1513	addu	$3,$13
1514	 rotr	$14,$14,31
1515	rotr	$24,$24,2
1516	addu	$3,$25
1517#else
1518	 xor	$14,$16
1519	sll	$25,$7,5	# 37
1520	addu	$3,$31
1521	srl	$6,$7,27
1522	addu	$3,$25
1523	 xor	$14,$22
1524	xor	$25,$1,$2
1525	addu	$3,$6
1526	 xor	$14,$11
1527	sll	$30,$24,30
1528	xor	$25,$24
1529	 srl	$6,$14,31
1530	 addu	$14,$14
1531	srl	$24,$24,2
1532	addu	$3,$13
1533	 or	$14,$6
1534	or	$24,$30
1535	addu	$3,$25
1536#endif
1537#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1538	 xor	$15,$17
1539	addu	$2,$31		# 38
1540	rotr	$6,$3,27
1541	 xor	$15,$23
1542	xor	$25,$24,$1
1543	addu	$2,$6
1544	 xor	$15,$12
1545	xor	$25,$7
1546	addu	$2,$14
1547	 rotr	$15,$15,31
1548	rotr	$7,$7,2
1549	addu	$2,$25
1550#else
1551	 xor	$15,$17
1552	sll	$25,$3,5	# 38
1553	addu	$2,$31
1554	srl	$6,$3,27
1555	addu	$2,$25
1556	 xor	$15,$23
1557	xor	$25,$24,$1
1558	addu	$2,$6
1559	 xor	$15,$12
1560	sll	$30,$7,30
1561	xor	$25,$7
1562	 srl	$6,$15,31
1563	 addu	$15,$15
1564	srl	$7,$7,2
1565	addu	$2,$14
1566	 or	$15,$6
1567	or	$7,$30
1568	addu	$2,$25
1569#endif
1570#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1571	 xor	$16,$18
1572	addu	$1,$31		# 39
1573	rotr	$6,$2,27
1574	 xor	$16,$8
1575	xor	$25,$7,$24
1576	addu	$1,$6
1577	 xor	$16,$13
1578	xor	$25,$3
1579	addu	$1,$15
1580	 rotr	$16,$16,31
1581	rotr	$3,$3,2
1582	addu	$1,$25
1583#else
1584	 xor	$16,$18
1585	sll	$25,$2,5	# 39
1586	addu	$1,$31
1587	srl	$6,$2,27
1588	addu	$1,$25
1589	 xor	$16,$8
1590	xor	$25,$7,$24
1591	addu	$1,$6
1592	 xor	$16,$13
1593	sll	$30,$3,30
1594	xor	$25,$3
1595	 srl	$6,$16,31
1596	 addu	$16,$16
1597	srl	$3,$3,2
1598	addu	$1,$15
1599	 or	$16,$6
1600	or	$3,$30
1601	addu	$1,$25
1602#endif
1603	lui	$31,0x8f1b
1604	ori	$31,0xbcdc	# K_40_59
1605#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1606	addu	$24,$31		# 40
1607	and	$25,$3,$7
1608	 xor	$17,$19
1609	rotr	$6,$1,27
1610	addu	$24,$25
1611	 xor	$17,$9
1612	xor	$25,$3,$7
1613	addu	$24,$6
1614	 xor	$17,$14
1615	and	$25,$2
1616	addu	$24,$16
1617	 rotr	$17,$17,31
1618	rotr	$2,$2,2
1619	addu	$24,$25
1620#else
1621	 xor	$17,$19
1622	sll	$25,$1,5	# 40
1623	addu	$24,$31
1624	srl	$6,$1,27
1625	addu	$24,$25
1626	 xor	$17,$9
1627	and	$25,$3,$7
1628	addu	$24,$6
1629	 xor	$17,$14
1630	sll	$30,$2,30
1631	addu	$24,$25
1632	 srl	$6,$17,31
1633	xor	$25,$3,$7
1634	 addu	$17,$17
1635	and	$25,$2
1636	srl	$2,$2,2
1637	 or	$17,$6
1638	addu	$24,$16
1639	or	$2,$30
1640	addu	$24,$25
1641#endif
1642#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1643	addu	$7,$31		# 41
1644	and	$25,$2,$3
1645	 xor	$18,$20
1646	rotr	$6,$24,27
1647	addu	$7,$25
1648	 xor	$18,$10
1649	xor	$25,$2,$3
1650	addu	$7,$6
1651	 xor	$18,$15
1652	and	$25,$1
1653	addu	$7,$17
1654	 rotr	$18,$18,31
1655	rotr	$1,$1,2
1656	addu	$7,$25
1657#else
1658	 xor	$18,$20
1659	sll	$25,$24,5	# 41
1660	addu	$7,$31
1661	srl	$6,$24,27
1662	addu	$7,$25
1663	 xor	$18,$10
1664	and	$25,$2,$3
1665	addu	$7,$6
1666	 xor	$18,$15
1667	sll	$30,$1,30
1668	addu	$7,$25
1669	 srl	$6,$18,31
1670	xor	$25,$2,$3
1671	 addu	$18,$18
1672	and	$25,$1
1673	srl	$1,$1,2
1674	 or	$18,$6
1675	addu	$7,$17
1676	or	$1,$30
1677	addu	$7,$25
1678#endif
1679#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1680	addu	$3,$31		# 42
1681	and	$25,$1,$2
1682	 xor	$19,$21
1683	rotr	$6,$7,27
1684	addu	$3,$25
1685	 xor	$19,$11
1686	xor	$25,$1,$2
1687	addu	$3,$6
1688	 xor	$19,$16
1689	and	$25,$24
1690	addu	$3,$18
1691	 rotr	$19,$19,31
1692	rotr	$24,$24,2
1693	addu	$3,$25
1694#else
1695	 xor	$19,$21
1696	sll	$25,$7,5	# 42
1697	addu	$3,$31
1698	srl	$6,$7,27
1699	addu	$3,$25
1700	 xor	$19,$11
1701	and	$25,$1,$2
1702	addu	$3,$6
1703	 xor	$19,$16
1704	sll	$30,$24,30
1705	addu	$3,$25
1706	 srl	$6,$19,31
1707	xor	$25,$1,$2
1708	 addu	$19,$19
1709	and	$25,$24
1710	srl	$24,$24,2
1711	 or	$19,$6
1712	addu	$3,$18
1713	or	$24,$30
1714	addu	$3,$25
1715#endif
1716#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1717	addu	$2,$31		# 43
1718	and	$25,$24,$1
1719	 xor	$20,$22
1720	rotr	$6,$3,27
1721	addu	$2,$25
1722	 xor	$20,$12
1723	xor	$25,$24,$1
1724	addu	$2,$6
1725	 xor	$20,$17
1726	and	$25,$7
1727	addu	$2,$19
1728	 rotr	$20,$20,31
1729	rotr	$7,$7,2
1730	addu	$2,$25
1731#else
1732	 xor	$20,$22
1733	sll	$25,$3,5	# 43
1734	addu	$2,$31
1735	srl	$6,$3,27
1736	addu	$2,$25
1737	 xor	$20,$12
1738	and	$25,$24,$1
1739	addu	$2,$6
1740	 xor	$20,$17
1741	sll	$30,$7,30
1742	addu	$2,$25
1743	 srl	$6,$20,31
1744	xor	$25,$24,$1
1745	 addu	$20,$20
1746	and	$25,$7
1747	srl	$7,$7,2
1748	 or	$20,$6
1749	addu	$2,$19
1750	or	$7,$30
1751	addu	$2,$25
1752#endif
1753#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1754	addu	$1,$31		# 44
1755	and	$25,$7,$24
1756	 xor	$21,$23
1757	rotr	$6,$2,27
1758	addu	$1,$25
1759	 xor	$21,$13
1760	xor	$25,$7,$24
1761	addu	$1,$6
1762	 xor	$21,$18
1763	and	$25,$3
1764	addu	$1,$20
1765	 rotr	$21,$21,31
1766	rotr	$3,$3,2
1767	addu	$1,$25
1768#else
1769	 xor	$21,$23
1770	sll	$25,$2,5	# 44
1771	addu	$1,$31
1772	srl	$6,$2,27
1773	addu	$1,$25
1774	 xor	$21,$13
1775	and	$25,$7,$24
1776	addu	$1,$6
1777	 xor	$21,$18
1778	sll	$30,$3,30
1779	addu	$1,$25
1780	 srl	$6,$21,31
1781	xor	$25,$7,$24
1782	 addu	$21,$21
1783	and	$25,$3
1784	srl	$3,$3,2
1785	 or	$21,$6
1786	addu	$1,$20
1787	or	$3,$30
1788	addu	$1,$25
1789#endif
1790#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1791	addu	$24,$31		# 45
1792	and	$25,$3,$7
1793	 xor	$22,$8
1794	rotr	$6,$1,27
1795	addu	$24,$25
1796	 xor	$22,$14
1797	xor	$25,$3,$7
1798	addu	$24,$6
1799	 xor	$22,$19
1800	and	$25,$2
1801	addu	$24,$21
1802	 rotr	$22,$22,31
1803	rotr	$2,$2,2
1804	addu	$24,$25
1805#else
1806	 xor	$22,$8
1807	sll	$25,$1,5	# 45
1808	addu	$24,$31
1809	srl	$6,$1,27
1810	addu	$24,$25
1811	 xor	$22,$14
1812	and	$25,$3,$7
1813	addu	$24,$6
1814	 xor	$22,$19
1815	sll	$30,$2,30
1816	addu	$24,$25
1817	 srl	$6,$22,31
1818	xor	$25,$3,$7
1819	 addu	$22,$22
1820	and	$25,$2
1821	srl	$2,$2,2
1822	 or	$22,$6
1823	addu	$24,$21
1824	or	$2,$30
1825	addu	$24,$25
1826#endif
1827#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1828	addu	$7,$31		# 46
1829	and	$25,$2,$3
1830	 xor	$23,$9
1831	rotr	$6,$24,27
1832	addu	$7,$25
1833	 xor	$23,$15
1834	xor	$25,$2,$3
1835	addu	$7,$6
1836	 xor	$23,$20
1837	and	$25,$1
1838	addu	$7,$22
1839	 rotr	$23,$23,31
1840	rotr	$1,$1,2
1841	addu	$7,$25
1842#else
1843	 xor	$23,$9
1844	sll	$25,$24,5	# 46
1845	addu	$7,$31
1846	srl	$6,$24,27
1847	addu	$7,$25
1848	 xor	$23,$15
1849	and	$25,$2,$3
1850	addu	$7,$6
1851	 xor	$23,$20
1852	sll	$30,$1,30
1853	addu	$7,$25
1854	 srl	$6,$23,31
1855	xor	$25,$2,$3
1856	 addu	$23,$23
1857	and	$25,$1
1858	srl	$1,$1,2
1859	 or	$23,$6
1860	addu	$7,$22
1861	or	$1,$30
1862	addu	$7,$25
1863#endif
1864#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1865	addu	$3,$31		# 47
1866	and	$25,$1,$2
1867	 xor	$8,$10
1868	rotr	$6,$7,27
1869	addu	$3,$25
1870	 xor	$8,$16
1871	xor	$25,$1,$2
1872	addu	$3,$6
1873	 xor	$8,$21
1874	and	$25,$24
1875	addu	$3,$23
1876	 rotr	$8,$8,31
1877	rotr	$24,$24,2
1878	addu	$3,$25
1879#else
1880	 xor	$8,$10
1881	sll	$25,$7,5	# 47
1882	addu	$3,$31
1883	srl	$6,$7,27
1884	addu	$3,$25
1885	 xor	$8,$16
1886	and	$25,$1,$2
1887	addu	$3,$6
1888	 xor	$8,$21
1889	sll	$30,$24,30
1890	addu	$3,$25
1891	 srl	$6,$8,31
1892	xor	$25,$1,$2
1893	 addu	$8,$8
1894	and	$25,$24
1895	srl	$24,$24,2
1896	 or	$8,$6
1897	addu	$3,$23
1898	or	$24,$30
1899	addu	$3,$25
1900#endif
1901#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1902	addu	$2,$31		# 48
1903	and	$25,$24,$1
1904	 xor	$9,$11
1905	rotr	$6,$3,27
1906	addu	$2,$25
1907	 xor	$9,$17
1908	xor	$25,$24,$1
1909	addu	$2,$6
1910	 xor	$9,$22
1911	and	$25,$7
1912	addu	$2,$8
1913	 rotr	$9,$9,31
1914	rotr	$7,$7,2
1915	addu	$2,$25
1916#else
1917	 xor	$9,$11
1918	sll	$25,$3,5	# 48
1919	addu	$2,$31
1920	srl	$6,$3,27
1921	addu	$2,$25
1922	 xor	$9,$17
1923	and	$25,$24,$1
1924	addu	$2,$6
1925	 xor	$9,$22
1926	sll	$30,$7,30
1927	addu	$2,$25
1928	 srl	$6,$9,31
1929	xor	$25,$24,$1
1930	 addu	$9,$9
1931	and	$25,$7
1932	srl	$7,$7,2
1933	 or	$9,$6
1934	addu	$2,$8
1935	or	$7,$30
1936	addu	$2,$25
1937#endif
1938#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1939	addu	$1,$31		# 49
1940	and	$25,$7,$24
1941	 xor	$10,$12
1942	rotr	$6,$2,27
1943	addu	$1,$25
1944	 xor	$10,$18
1945	xor	$25,$7,$24
1946	addu	$1,$6
1947	 xor	$10,$23
1948	and	$25,$3
1949	addu	$1,$9
1950	 rotr	$10,$10,31
1951	rotr	$3,$3,2
1952	addu	$1,$25
1953#else
1954	 xor	$10,$12
1955	sll	$25,$2,5	# 49
1956	addu	$1,$31
1957	srl	$6,$2,27
1958	addu	$1,$25
1959	 xor	$10,$18
1960	and	$25,$7,$24
1961	addu	$1,$6
1962	 xor	$10,$23
1963	sll	$30,$3,30
1964	addu	$1,$25
1965	 srl	$6,$10,31
1966	xor	$25,$7,$24
1967	 addu	$10,$10
1968	and	$25,$3
1969	srl	$3,$3,2
1970	 or	$10,$6
1971	addu	$1,$9
1972	or	$3,$30
1973	addu	$1,$25
1974#endif
1975#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1976	addu	$24,$31		# 50
1977	and	$25,$3,$7
1978	 xor	$11,$13
1979	rotr	$6,$1,27
1980	addu	$24,$25
1981	 xor	$11,$19
1982	xor	$25,$3,$7
1983	addu	$24,$6
1984	 xor	$11,$8
1985	and	$25,$2
1986	addu	$24,$10
1987	 rotr	$11,$11,31
1988	rotr	$2,$2,2
1989	addu	$24,$25
1990#else
1991	 xor	$11,$13
1992	sll	$25,$1,5	# 50
1993	addu	$24,$31
1994	srl	$6,$1,27
1995	addu	$24,$25
1996	 xor	$11,$19
1997	and	$25,$3,$7
1998	addu	$24,$6
1999	 xor	$11,$8
2000	sll	$30,$2,30
2001	addu	$24,$25
2002	 srl	$6,$11,31
2003	xor	$25,$3,$7
2004	 addu	$11,$11
2005	and	$25,$2
2006	srl	$2,$2,2
2007	 or	$11,$6
2008	addu	$24,$10
2009	or	$2,$30
2010	addu	$24,$25
2011#endif
2012#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2013	addu	$7,$31		# 51
2014	and	$25,$2,$3
2015	 xor	$12,$14
2016	rotr	$6,$24,27
2017	addu	$7,$25
2018	 xor	$12,$20
2019	xor	$25,$2,$3
2020	addu	$7,$6
2021	 xor	$12,$9
2022	and	$25,$1
2023	addu	$7,$11
2024	 rotr	$12,$12,31
2025	rotr	$1,$1,2
2026	addu	$7,$25
2027#else
2028	 xor	$12,$14
2029	sll	$25,$24,5	# 51
2030	addu	$7,$31
2031	srl	$6,$24,27
2032	addu	$7,$25
2033	 xor	$12,$20
2034	and	$25,$2,$3
2035	addu	$7,$6
2036	 xor	$12,$9
2037	sll	$30,$1,30
2038	addu	$7,$25
2039	 srl	$6,$12,31
2040	xor	$25,$2,$3
2041	 addu	$12,$12
2042	and	$25,$1
2043	srl	$1,$1,2
2044	 or	$12,$6
2045	addu	$7,$11
2046	or	$1,$30
2047	addu	$7,$25
2048#endif
2049#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2050	addu	$3,$31		# 52
2051	and	$25,$1,$2
2052	 xor	$13,$15
2053	rotr	$6,$7,27
2054	addu	$3,$25
2055	 xor	$13,$21
2056	xor	$25,$1,$2
2057	addu	$3,$6
2058	 xor	$13,$10
2059	and	$25,$24
2060	addu	$3,$12
2061	 rotr	$13,$13,31
2062	rotr	$24,$24,2
2063	addu	$3,$25
2064#else
2065	 xor	$13,$15
2066	sll	$25,$7,5	# 52
2067	addu	$3,$31
2068	srl	$6,$7,27
2069	addu	$3,$25
2070	 xor	$13,$21
2071	and	$25,$1,$2
2072	addu	$3,$6
2073	 xor	$13,$10
2074	sll	$30,$24,30
2075	addu	$3,$25
2076	 srl	$6,$13,31
2077	xor	$25,$1,$2
2078	 addu	$13,$13
2079	and	$25,$24
2080	srl	$24,$24,2
2081	 or	$13,$6
2082	addu	$3,$12
2083	or	$24,$30
2084	addu	$3,$25
2085#endif
2086#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2087	addu	$2,$31		# 53
2088	and	$25,$24,$1
2089	 xor	$14,$16
2090	rotr	$6,$3,27
2091	addu	$2,$25
2092	 xor	$14,$22
2093	xor	$25,$24,$1
2094	addu	$2,$6
2095	 xor	$14,$11
2096	and	$25,$7
2097	addu	$2,$13
2098	 rotr	$14,$14,31
2099	rotr	$7,$7,2
2100	addu	$2,$25
2101#else
2102	 xor	$14,$16
2103	sll	$25,$3,5	# 53
2104	addu	$2,$31
2105	srl	$6,$3,27
2106	addu	$2,$25
2107	 xor	$14,$22
2108	and	$25,$24,$1
2109	addu	$2,$6
2110	 xor	$14,$11
2111	sll	$30,$7,30
2112	addu	$2,$25
2113	 srl	$6,$14,31
2114	xor	$25,$24,$1
2115	 addu	$14,$14
2116	and	$25,$7
2117	srl	$7,$7,2
2118	 or	$14,$6
2119	addu	$2,$13
2120	or	$7,$30
2121	addu	$2,$25
2122#endif
2123#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2124	addu	$1,$31		# 54
2125	and	$25,$7,$24
2126	 xor	$15,$17
2127	rotr	$6,$2,27
2128	addu	$1,$25
2129	 xor	$15,$23
2130	xor	$25,$7,$24
2131	addu	$1,$6
2132	 xor	$15,$12
2133	and	$25,$3
2134	addu	$1,$14
2135	 rotr	$15,$15,31
2136	rotr	$3,$3,2
2137	addu	$1,$25
2138#else
2139	 xor	$15,$17
2140	sll	$25,$2,5	# 54
2141	addu	$1,$31
2142	srl	$6,$2,27
2143	addu	$1,$25
2144	 xor	$15,$23
2145	and	$25,$7,$24
2146	addu	$1,$6
2147	 xor	$15,$12
2148	sll	$30,$3,30
2149	addu	$1,$25
2150	 srl	$6,$15,31
2151	xor	$25,$7,$24
2152	 addu	$15,$15
2153	and	$25,$3
2154	srl	$3,$3,2
2155	 or	$15,$6
2156	addu	$1,$14
2157	or	$3,$30
2158	addu	$1,$25
2159#endif
2160#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2161	addu	$24,$31		# 55
2162	and	$25,$3,$7
2163	 xor	$16,$18
2164	rotr	$6,$1,27
2165	addu	$24,$25
2166	 xor	$16,$8
2167	xor	$25,$3,$7
2168	addu	$24,$6
2169	 xor	$16,$13
2170	and	$25,$2
2171	addu	$24,$15
2172	 rotr	$16,$16,31
2173	rotr	$2,$2,2
2174	addu	$24,$25
2175#else
2176	 xor	$16,$18
2177	sll	$25,$1,5	# 55
2178	addu	$24,$31
2179	srl	$6,$1,27
2180	addu	$24,$25
2181	 xor	$16,$8
2182	and	$25,$3,$7
2183	addu	$24,$6
2184	 xor	$16,$13
2185	sll	$30,$2,30
2186	addu	$24,$25
2187	 srl	$6,$16,31
2188	xor	$25,$3,$7
2189	 addu	$16,$16
2190	and	$25,$2
2191	srl	$2,$2,2
2192	 or	$16,$6
2193	addu	$24,$15
2194	or	$2,$30
2195	addu	$24,$25
2196#endif
2197#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2198	addu	$7,$31		# 56
2199	and	$25,$2,$3
2200	 xor	$17,$19
2201	rotr	$6,$24,27
2202	addu	$7,$25
2203	 xor	$17,$9
2204	xor	$25,$2,$3
2205	addu	$7,$6
2206	 xor	$17,$14
2207	and	$25,$1
2208	addu	$7,$16
2209	 rotr	$17,$17,31
2210	rotr	$1,$1,2
2211	addu	$7,$25
2212#else
2213	 xor	$17,$19
2214	sll	$25,$24,5	# 56
2215	addu	$7,$31
2216	srl	$6,$24,27
2217	addu	$7,$25
2218	 xor	$17,$9
2219	and	$25,$2,$3
2220	addu	$7,$6
2221	 xor	$17,$14
2222	sll	$30,$1,30
2223	addu	$7,$25
2224	 srl	$6,$17,31
2225	xor	$25,$2,$3
2226	 addu	$17,$17
2227	and	$25,$1
2228	srl	$1,$1,2
2229	 or	$17,$6
2230	addu	$7,$16
2231	or	$1,$30
2232	addu	$7,$25
2233#endif
2234#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2235	addu	$3,$31		# 57
2236	and	$25,$1,$2
2237	 xor	$18,$20
2238	rotr	$6,$7,27
2239	addu	$3,$25
2240	 xor	$18,$10
2241	xor	$25,$1,$2
2242	addu	$3,$6
2243	 xor	$18,$15
2244	and	$25,$24
2245	addu	$3,$17
2246	 rotr	$18,$18,31
2247	rotr	$24,$24,2
2248	addu	$3,$25
2249#else
2250	 xor	$18,$20
2251	sll	$25,$7,5	# 57
2252	addu	$3,$31
2253	srl	$6,$7,27
2254	addu	$3,$25
2255	 xor	$18,$10
2256	and	$25,$1,$2
2257	addu	$3,$6
2258	 xor	$18,$15
2259	sll	$30,$24,30
2260	addu	$3,$25
2261	 srl	$6,$18,31
2262	xor	$25,$1,$2
2263	 addu	$18,$18
2264	and	$25,$24
2265	srl	$24,$24,2
2266	 or	$18,$6
2267	addu	$3,$17
2268	or	$24,$30
2269	addu	$3,$25
2270#endif
2271#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2272	addu	$2,$31		# 58
2273	and	$25,$24,$1
2274	 xor	$19,$21
2275	rotr	$6,$3,27
2276	addu	$2,$25
2277	 xor	$19,$11
2278	xor	$25,$24,$1
2279	addu	$2,$6
2280	 xor	$19,$16
2281	and	$25,$7
2282	addu	$2,$18
2283	 rotr	$19,$19,31
2284	rotr	$7,$7,2
2285	addu	$2,$25
2286#else
2287	 xor	$19,$21
2288	sll	$25,$3,5	# 58
2289	addu	$2,$31
2290	srl	$6,$3,27
2291	addu	$2,$25
2292	 xor	$19,$11
2293	and	$25,$24,$1
2294	addu	$2,$6
2295	 xor	$19,$16
2296	sll	$30,$7,30
2297	addu	$2,$25
2298	 srl	$6,$19,31
2299	xor	$25,$24,$1
2300	 addu	$19,$19
2301	and	$25,$7
2302	srl	$7,$7,2
2303	 or	$19,$6
2304	addu	$2,$18
2305	or	$7,$30
2306	addu	$2,$25
2307#endif
2308#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2309	addu	$1,$31		# 59
2310	and	$25,$7,$24
2311	 xor	$20,$22
2312	rotr	$6,$2,27
2313	addu	$1,$25
2314	 xor	$20,$12
2315	xor	$25,$7,$24
2316	addu	$1,$6
2317	 xor	$20,$17
2318	and	$25,$3
2319	addu	$1,$19
2320	 rotr	$20,$20,31
2321	rotr	$3,$3,2
2322	addu	$1,$25
2323#else
2324	 xor	$20,$22
2325	sll	$25,$2,5	# 59
2326	addu	$1,$31
2327	srl	$6,$2,27
2328	addu	$1,$25
2329	 xor	$20,$12
2330	and	$25,$7,$24
2331	addu	$1,$6
2332	 xor	$20,$17
2333	sll	$30,$3,30
2334	addu	$1,$25
2335	 srl	$6,$20,31
2336	xor	$25,$7,$24
2337	 addu	$20,$20
2338	and	$25,$3
2339	srl	$3,$3,2
2340	 or	$20,$6
2341	addu	$1,$19
2342	or	$3,$30
2343	addu	$1,$25
2344#endif
2345	lui	$31,0xca62
2346	ori	$31,0xc1d6	# K_60_79
2347#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2348	 xor	$21,$23
2349	addu	$24,$31		# 60
2350	rotr	$6,$1,27
2351	 xor	$21,$13
2352	xor	$25,$3,$7
2353	addu	$24,$6
2354	 xor	$21,$18
2355	xor	$25,$2
2356	addu	$24,$20
2357	 rotr	$21,$21,31
2358	rotr	$2,$2,2
2359	addu	$24,$25
2360#else
2361	 xor	$21,$23
2362	sll	$25,$1,5	# 60
2363	addu	$24,$31
2364	srl	$6,$1,27
2365	addu	$24,$25
2366	 xor	$21,$13
2367	xor	$25,$3,$7
2368	addu	$24,$6
2369	 xor	$21,$18
2370	sll	$30,$2,30
2371	xor	$25,$2
2372	 srl	$6,$21,31
2373	 addu	$21,$21
2374	srl	$2,$2,2
2375	addu	$24,$20
2376	 or	$21,$6
2377	or	$2,$30
2378	addu	$24,$25
2379#endif
2380#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2381	 xor	$22,$8
2382	addu	$7,$31		# 61
2383	rotr	$6,$24,27
2384	 xor	$22,$14
2385	xor	$25,$2,$3
2386	addu	$7,$6
2387	 xor	$22,$19
2388	xor	$25,$1
2389	addu	$7,$21
2390	 rotr	$22,$22,31
2391	rotr	$1,$1,2
2392	addu	$7,$25
2393#else
2394	 xor	$22,$8
2395	sll	$25,$24,5	# 61
2396	addu	$7,$31
2397	srl	$6,$24,27
2398	addu	$7,$25
2399	 xor	$22,$14
2400	xor	$25,$2,$3
2401	addu	$7,$6
2402	 xor	$22,$19
2403	sll	$30,$1,30
2404	xor	$25,$1
2405	 srl	$6,$22,31
2406	 addu	$22,$22
2407	srl	$1,$1,2
2408	addu	$7,$21
2409	 or	$22,$6
2410	or	$1,$30
2411	addu	$7,$25
2412#endif
2413#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2414	 xor	$23,$9
2415	addu	$3,$31		# 62
2416	rotr	$6,$7,27
2417	 xor	$23,$15
2418	xor	$25,$1,$2
2419	addu	$3,$6
2420	 xor	$23,$20
2421	xor	$25,$24
2422	addu	$3,$22
2423	 rotr	$23,$23,31
2424	rotr	$24,$24,2
2425	addu	$3,$25
2426#else
2427	 xor	$23,$9
2428	sll	$25,$7,5	# 62
2429	addu	$3,$31
2430	srl	$6,$7,27
2431	addu	$3,$25
2432	 xor	$23,$15
2433	xor	$25,$1,$2
2434	addu	$3,$6
2435	 xor	$23,$20
2436	sll	$30,$24,30
2437	xor	$25,$24
2438	 srl	$6,$23,31
2439	 addu	$23,$23
2440	srl	$24,$24,2
2441	addu	$3,$22
2442	 or	$23,$6
2443	or	$24,$30
2444	addu	$3,$25
2445#endif
2446#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2447	 xor	$8,$10
2448	addu	$2,$31		# 63
2449	rotr	$6,$3,27
2450	 xor	$8,$16
2451	xor	$25,$24,$1
2452	addu	$2,$6
2453	 xor	$8,$21
2454	xor	$25,$7
2455	addu	$2,$23
2456	 rotr	$8,$8,31
2457	rotr	$7,$7,2
2458	addu	$2,$25
2459#else
2460	 xor	$8,$10
2461	sll	$25,$3,5	# 63
2462	addu	$2,$31
2463	srl	$6,$3,27
2464	addu	$2,$25
2465	 xor	$8,$16
2466	xor	$25,$24,$1
2467	addu	$2,$6
2468	 xor	$8,$21
2469	sll	$30,$7,30
2470	xor	$25,$7
2471	 srl	$6,$8,31
2472	 addu	$8,$8
2473	srl	$7,$7,2
2474	addu	$2,$23
2475	 or	$8,$6
2476	or	$7,$30
2477	addu	$2,$25
2478#endif
2479#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2480	 xor	$9,$11
2481	addu	$1,$31		# 64
2482	rotr	$6,$2,27
2483	 xor	$9,$17
2484	xor	$25,$7,$24
2485	addu	$1,$6
2486	 xor	$9,$22
2487	xor	$25,$3
2488	addu	$1,$8
2489	 rotr	$9,$9,31
2490	rotr	$3,$3,2
2491	addu	$1,$25
2492#else
2493	 xor	$9,$11
2494	sll	$25,$2,5	# 64
2495	addu	$1,$31
2496	srl	$6,$2,27
2497	addu	$1,$25
2498	 xor	$9,$17
2499	xor	$25,$7,$24
2500	addu	$1,$6
2501	 xor	$9,$22
2502	sll	$30,$3,30
2503	xor	$25,$3
2504	 srl	$6,$9,31
2505	 addu	$9,$9
2506	srl	$3,$3,2
2507	addu	$1,$8
2508	 or	$9,$6
2509	or	$3,$30
2510	addu	$1,$25
2511#endif
2512#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2513	 xor	$10,$12
2514	addu	$24,$31		# 65
2515	rotr	$6,$1,27
2516	 xor	$10,$18
2517	xor	$25,$3,$7
2518	addu	$24,$6
2519	 xor	$10,$23
2520	xor	$25,$2
2521	addu	$24,$9
2522	 rotr	$10,$10,31
2523	rotr	$2,$2,2
2524	addu	$24,$25
2525#else
2526	 xor	$10,$12
2527	sll	$25,$1,5	# 65
2528	addu	$24,$31
2529	srl	$6,$1,27
2530	addu	$24,$25
2531	 xor	$10,$18
2532	xor	$25,$3,$7
2533	addu	$24,$6
2534	 xor	$10,$23
2535	sll	$30,$2,30
2536	xor	$25,$2
2537	 srl	$6,$10,31
2538	 addu	$10,$10
2539	srl	$2,$2,2
2540	addu	$24,$9
2541	 or	$10,$6
2542	or	$2,$30
2543	addu	$24,$25
2544#endif
2545#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2546	 xor	$11,$13
2547	addu	$7,$31		# 66
2548	rotr	$6,$24,27
2549	 xor	$11,$19
2550	xor	$25,$2,$3
2551	addu	$7,$6
2552	 xor	$11,$8
2553	xor	$25,$1
2554	addu	$7,$10
2555	 rotr	$11,$11,31
2556	rotr	$1,$1,2
2557	addu	$7,$25
2558#else
2559	 xor	$11,$13
2560	sll	$25,$24,5	# 66
2561	addu	$7,$31
2562	srl	$6,$24,27
2563	addu	$7,$25
2564	 xor	$11,$19
2565	xor	$25,$2,$3
2566	addu	$7,$6
2567	 xor	$11,$8
2568	sll	$30,$1,30
2569	xor	$25,$1
2570	 srl	$6,$11,31
2571	 addu	$11,$11
2572	srl	$1,$1,2
2573	addu	$7,$10
2574	 or	$11,$6
2575	or	$1,$30
2576	addu	$7,$25
2577#endif
2578#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2579	 xor	$12,$14
2580	addu	$3,$31		# 67
2581	rotr	$6,$7,27
2582	 xor	$12,$20
2583	xor	$25,$1,$2
2584	addu	$3,$6
2585	 xor	$12,$9
2586	xor	$25,$24
2587	addu	$3,$11
2588	 rotr	$12,$12,31
2589	rotr	$24,$24,2
2590	addu	$3,$25
2591#else
2592	 xor	$12,$14
2593	sll	$25,$7,5	# 67
2594	addu	$3,$31
2595	srl	$6,$7,27
2596	addu	$3,$25
2597	 xor	$12,$20
2598	xor	$25,$1,$2
2599	addu	$3,$6
2600	 xor	$12,$9
2601	sll	$30,$24,30
2602	xor	$25,$24
2603	 srl	$6,$12,31
2604	 addu	$12,$12
2605	srl	$24,$24,2
2606	addu	$3,$11
2607	 or	$12,$6
2608	or	$24,$30
2609	addu	$3,$25
2610#endif
2611#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2612	 xor	$13,$15
2613	addu	$2,$31		# 68
2614	rotr	$6,$3,27
2615	 xor	$13,$21
2616	xor	$25,$24,$1
2617	addu	$2,$6
2618	 xor	$13,$10
2619	xor	$25,$7
2620	addu	$2,$12
2621	 rotr	$13,$13,31
2622	rotr	$7,$7,2
2623	addu	$2,$25
2624#else
2625	 xor	$13,$15
2626	sll	$25,$3,5	# 68
2627	addu	$2,$31
2628	srl	$6,$3,27
2629	addu	$2,$25
2630	 xor	$13,$21
2631	xor	$25,$24,$1
2632	addu	$2,$6
2633	 xor	$13,$10
2634	sll	$30,$7,30
2635	xor	$25,$7
2636	 srl	$6,$13,31
2637	 addu	$13,$13
2638	srl	$7,$7,2
2639	addu	$2,$12
2640	 or	$13,$6
2641	or	$7,$30
2642	addu	$2,$25
2643#endif
2644#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2645	 xor	$14,$16
2646	addu	$1,$31		# 69
2647	rotr	$6,$2,27
2648	 xor	$14,$22
2649	xor	$25,$7,$24
2650	addu	$1,$6
2651	 xor	$14,$11
2652	xor	$25,$3
2653	addu	$1,$13
2654	 rotr	$14,$14,31
2655	rotr	$3,$3,2
2656	addu	$1,$25
2657#else
2658	 xor	$14,$16
2659	sll	$25,$2,5	# 69
2660	addu	$1,$31
2661	srl	$6,$2,27
2662	addu	$1,$25
2663	 xor	$14,$22
2664	xor	$25,$7,$24
2665	addu	$1,$6
2666	 xor	$14,$11
2667	sll	$30,$3,30
2668	xor	$25,$3
2669	 srl	$6,$14,31
2670	 addu	$14,$14
2671	srl	$3,$3,2
2672	addu	$1,$13
2673	 or	$14,$6
2674	or	$3,$30
2675	addu	$1,$25
2676#endif
2677#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2678	 xor	$15,$17
2679	addu	$24,$31		# 70
2680	rotr	$6,$1,27
2681	 xor	$15,$23
2682	xor	$25,$3,$7
2683	addu	$24,$6
2684	 xor	$15,$12
2685	xor	$25,$2
2686	addu	$24,$14
2687	 rotr	$15,$15,31
2688	rotr	$2,$2,2
2689	addu	$24,$25
2690#else
2691	 xor	$15,$17
2692	sll	$25,$1,5	# 70
2693	addu	$24,$31
2694	srl	$6,$1,27
2695	addu	$24,$25
2696	 xor	$15,$23
2697	xor	$25,$3,$7
2698	addu	$24,$6
2699	 xor	$15,$12
2700	sll	$30,$2,30
2701	xor	$25,$2
2702	 srl	$6,$15,31
2703	 addu	$15,$15
2704	srl	$2,$2,2
2705	addu	$24,$14
2706	 or	$15,$6
2707	or	$2,$30
2708	addu	$24,$25
2709#endif
2710#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2711	 xor	$16,$18
2712	addu	$7,$31		# 71
2713	rotr	$6,$24,27
2714	 xor	$16,$8
2715	xor	$25,$2,$3
2716	addu	$7,$6
2717	 xor	$16,$13
2718	xor	$25,$1
2719	addu	$7,$15
2720	 rotr	$16,$16,31
2721	rotr	$1,$1,2
2722	addu	$7,$25
2723#else
2724	 xor	$16,$18
2725	sll	$25,$24,5	# 71
2726	addu	$7,$31
2727	srl	$6,$24,27
2728	addu	$7,$25
2729	 xor	$16,$8
2730	xor	$25,$2,$3
2731	addu	$7,$6
2732	 xor	$16,$13
2733	sll	$30,$1,30
2734	xor	$25,$1
2735	 srl	$6,$16,31
2736	 addu	$16,$16
2737	srl	$1,$1,2
2738	addu	$7,$15
2739	 or	$16,$6
2740	or	$1,$30
2741	addu	$7,$25
2742#endif
2743#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2744	 xor	$17,$19
2745	addu	$3,$31		# 72
2746	rotr	$6,$7,27
2747	 xor	$17,$9
2748	xor	$25,$1,$2
2749	addu	$3,$6
2750	 xor	$17,$14
2751	xor	$25,$24
2752	addu	$3,$16
2753	 rotr	$17,$17,31
2754	rotr	$24,$24,2
2755	addu	$3,$25
2756#else
2757	 xor	$17,$19
2758	sll	$25,$7,5	# 72
2759	addu	$3,$31
2760	srl	$6,$7,27
2761	addu	$3,$25
2762	 xor	$17,$9
2763	xor	$25,$1,$2
2764	addu	$3,$6
2765	 xor	$17,$14
2766	sll	$30,$24,30
2767	xor	$25,$24
2768	 srl	$6,$17,31
2769	 addu	$17,$17
2770	srl	$24,$24,2
2771	addu	$3,$16
2772	 or	$17,$6
2773	or	$24,$30
2774	addu	$3,$25
2775#endif
2776#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2777	 xor	$18,$20
2778	addu	$2,$31		# 73
2779	rotr	$6,$3,27
2780	 xor	$18,$10
2781	xor	$25,$24,$1
2782	addu	$2,$6
2783	 xor	$18,$15
2784	xor	$25,$7
2785	addu	$2,$17
2786	 rotr	$18,$18,31
2787	rotr	$7,$7,2
2788	addu	$2,$25
2789#else
2790	 xor	$18,$20
2791	sll	$25,$3,5	# 73
2792	addu	$2,$31
2793	srl	$6,$3,27
2794	addu	$2,$25
2795	 xor	$18,$10
2796	xor	$25,$24,$1
2797	addu	$2,$6
2798	 xor	$18,$15
2799	sll	$30,$7,30
2800	xor	$25,$7
2801	 srl	$6,$18,31
2802	 addu	$18,$18
2803	srl	$7,$7,2
2804	addu	$2,$17
2805	 or	$18,$6
2806	or	$7,$30
2807	addu	$2,$25
2808#endif
2809#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2810	 xor	$19,$21
2811	addu	$1,$31		# 74
2812	rotr	$6,$2,27
2813	 xor	$19,$11
2814	xor	$25,$7,$24
2815	addu	$1,$6
2816	 xor	$19,$16
2817	xor	$25,$3
2818	addu	$1,$18
2819	 rotr	$19,$19,31
2820	rotr	$3,$3,2
2821	addu	$1,$25
2822#else
2823	 xor	$19,$21
2824	sll	$25,$2,5	# 74
2825	addu	$1,$31
2826	srl	$6,$2,27
2827	addu	$1,$25
2828	 xor	$19,$11
2829	xor	$25,$7,$24
2830	addu	$1,$6
2831	 xor	$19,$16
2832	sll	$30,$3,30
2833	xor	$25,$3
2834	 srl	$6,$19,31
2835	 addu	$19,$19
2836	srl	$3,$3,2
2837	addu	$1,$18
2838	 or	$19,$6
2839	or	$3,$30
2840	addu	$1,$25
2841#endif
2842#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2843	 xor	$20,$22
2844	addu	$24,$31		# 75
2845	rotr	$6,$1,27
2846	 xor	$20,$12
2847	xor	$25,$3,$7
2848	addu	$24,$6
2849	 xor	$20,$17
2850	xor	$25,$2
2851	addu	$24,$19
2852	 rotr	$20,$20,31
2853	rotr	$2,$2,2
2854	addu	$24,$25
2855#else
2856	 xor	$20,$22
2857	sll	$25,$1,5	# 75
2858	addu	$24,$31
2859	srl	$6,$1,27
2860	addu	$24,$25
2861	 xor	$20,$12
2862	xor	$25,$3,$7
2863	addu	$24,$6
2864	 xor	$20,$17
2865	sll	$30,$2,30
2866	xor	$25,$2
2867	 srl	$6,$20,31
2868	 addu	$20,$20
2869	srl	$2,$2,2
2870	addu	$24,$19
2871	 or	$20,$6
2872	or	$2,$30
2873	addu	$24,$25
2874#endif
2875#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2876	 xor	$21,$23
2877	addu	$7,$31		# 76
2878	rotr	$6,$24,27
2879	 xor	$21,$13
2880	xor	$25,$2,$3
2881	addu	$7,$6
2882	 xor	$21,$18
2883	xor	$25,$1
2884	addu	$7,$20
2885	 rotr	$21,$21,31
2886	rotr	$1,$1,2
2887	addu	$7,$25
2888#else
2889	 xor	$21,$23
2890	sll	$25,$24,5	# 76
2891	addu	$7,$31
2892	srl	$6,$24,27
2893	addu	$7,$25
2894	 xor	$21,$13
2895	xor	$25,$2,$3
2896	addu	$7,$6
2897	 xor	$21,$18
2898	sll	$30,$1,30
2899	xor	$25,$1
2900	 srl	$6,$21,31
2901	 addu	$21,$21
2902	srl	$1,$1,2
2903	addu	$7,$20
2904	 or	$21,$6
2905	or	$1,$30
2906	addu	$7,$25
2907#endif
2908#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2909	 xor	$22,$8
2910	addu	$3,$31		# 77
2911	rotr	$6,$7,27
2912	 xor	$22,$14
2913	xor	$25,$1,$2
2914	addu	$3,$6
2915	 xor	$22,$19
2916	xor	$25,$24
2917	addu	$3,$21
2918	 rotr	$22,$22,31
2919	rotr	$24,$24,2
2920	addu	$3,$25
2921#else
2922	 xor	$22,$8
2923	sll	$25,$7,5	# 77
2924	addu	$3,$31
2925	srl	$6,$7,27
2926	addu	$3,$25
2927	 xor	$22,$14
2928	xor	$25,$1,$2
2929	addu	$3,$6
2930	 xor	$22,$19
2931	sll	$30,$24,30
2932	xor	$25,$24
2933	 srl	$6,$22,31
2934	 addu	$22,$22
2935	srl	$24,$24,2
2936	addu	$3,$21
2937	 or	$22,$6
2938	or	$24,$30
2939	addu	$3,$25
2940#endif
2941#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2942	 xor	$23,$9
2943	addu	$2,$31		# 78
2944	rotr	$6,$3,27
2945	 xor	$23,$15
2946	xor	$25,$24,$1
2947	addu	$2,$6
2948	 xor	$23,$20
2949	xor	$25,$7
2950	addu	$2,$22
2951	 rotr	$23,$23,31
2952	rotr	$7,$7,2
2953	addu	$2,$25
2954#else
2955	 xor	$23,$9
2956	sll	$25,$3,5	# 78
2957	addu	$2,$31
2958	srl	$6,$3,27
2959	addu	$2,$25
2960	 xor	$23,$15
2961	xor	$25,$24,$1
2962	addu	$2,$6
2963	 xor	$23,$20
2964	sll	$30,$7,30
2965	xor	$25,$7
2966	 srl	$6,$23,31
2967	 addu	$23,$23
2968	srl	$7,$7,2
2969	addu	$2,$22
2970	 or	$23,$6
2971	or	$7,$30
2972	addu	$2,$25
2973#endif
2974#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2975	 lw	$8,0($4)
2976	addu	$1,$31		# 79
2977	 lw	$9,4($4)
2978	rotr	$6,$2,27
2979	 lw	$10,8($4)
2980	xor	$25,$7,$24
2981	addu	$1,$6
2982	 lw	$11,12($4)
2983	xor	$25,$3
2984	addu	$1,$23
2985	 lw	$12,16($4)
2986	rotr	$3,$3,2
2987	addu	$1,$25
2988#else
2989	 lw	$8,0($4)
2990	sll	$25,$2,5	# 79
2991	addu	$1,$31
2992	 lw	$9,4($4)
2993	srl	$6,$2,27
2994	addu	$1,$25
2995	 lw	$10,8($4)
2996	xor	$25,$7,$24
2997	addu	$1,$6
2998	 lw	$11,12($4)
2999	sll	$30,$3,30
3000	xor	$25,$3
3001	 lw	$12,16($4)
3002	srl	$3,$3,2
3003	addu	$1,$23
3004	or	$3,$30
3005	addu	$1,$25
3006#endif
3007	addu $5,64
3008	lw	$6,0($29)
3009
3010	addu	$1,$8
3011	addu	$2,$9
3012	sw	$1,0($4)
3013	addu	$3,$10
3014	addu	$7,$11
3015	sw	$2,4($4)
3016	addu	$24,$12
3017	sw	$3,8($4)
3018	sw	$7,12($4)
3019	sw	$24,16($4)
3020	.set	noreorder
3021	bne	$5,$6,.Loop
3022	nop
3023
3024	.set	noreorder
3025	lw	$31,(16-1)*4($29)
3026	lw	$30,(16-2)*4($29)
3027	lw	$23,(16-3)*4($29)
3028	lw	$22,(16-4)*4($29)
3029	lw	$21,(16-5)*4($29)
3030	lw	$20,(16-6)*4($29)
3031	lw	$19,(16-7)*4($29)
3032	lw	$18,(16-8)*4($29)
3033	lw	$17,(16-9)*4($29)
3034	lw	$16,(16-10)*4($29)
3035	jr	$31
3036	addu $29,16*4
3037.end	sha1_block_data_order
3038.rdata
3039.asciiz	"SHA1 for MIPS, CRYPTOGAMS by <appro@openssl.org>"
3040