xref: /netbsd-src/crypto/external/bsd/openssl/lib/libcrypto/arch/mips/sha1-mips64.S (revision e0ea3921ea68e51b93ffc215f08ae1647c8e1796)
1*e0ea3921Schristos#include "mips_arch.h"
26410c867Schristos
36410c867Schristos.text
46410c867Schristos
56410c867Schristos.set	noat
66410c867Schristos.set	noreorder
76410c867Schristos.align	5
86410c867Schristos.globl	sha1_block_data_order
96410c867Schristos.ent	sha1_block_data_order
106410c867Schristossha1_block_data_order:
116410c867Schristos	.frame	$29,16*8,$31
126410c867Schristos	.mask	0xc0ff0000,-8
136410c867Schristos	.set	noreorder
14*e0ea3921Schristos	dsubu $29,16*8
156410c867Schristos	sd	$31,(16-1)*8($29)
166410c867Schristos	sd	$30,(16-2)*8($29)
176410c867Schristos	sd	$23,(16-3)*8($29)
186410c867Schristos	sd	$22,(16-4)*8($29)
196410c867Schristos	sd	$21,(16-5)*8($29)
206410c867Schristos	sd	$20,(16-6)*8($29)
216410c867Schristos	sd	$19,(16-7)*8($29)
226410c867Schristos	sd	$18,(16-8)*8($29)
236410c867Schristos	sd	$17,(16-9)*8($29)
246410c867Schristos	sd	$16,(16-10)*8($29)
256410c867Schristos	dsll $6,6
26*e0ea3921Schristos	daddu $6,$5
276410c867Schristos	sd	$6,0($29)
286410c867Schristos	lw	$1,0($4)
296410c867Schristos	lw	$2,4($4)
306410c867Schristos	lw	$3,8($4)
316410c867Schristos	lw	$7,12($4)
326410c867Schristos	b	.Loop
336410c867Schristos	lw	$24,16($4)
346410c867Schristos.align	4
356410c867Schristos.Loop:
366410c867Schristos	.set	reorder
37*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
38*e0ea3921Schristos	lui	$31,0x5a82
39*e0ea3921Schristos	lw	$8,($5)
40*e0ea3921Schristos	ori	$31,0x7999	# K_00_19
41*e0ea3921Schristos#else
426410c867Schristos	lwl	$8,3($5)
436410c867Schristos	lui	$31,0x5a82
446410c867Schristos	lwr	$8,0($5)
456410c867Schristos	ori	$31,0x7999	# K_00_19
46*e0ea3921Schristos#endif
476410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
486410c867Schristos	wsbh	$8,$8	# byte swap(0)
496410c867Schristos	rotr	$8,$8,16
506410c867Schristos#else
516410c867Schristos	srl	$25,$8,24	# byte swap(0)
526410c867Schristos	srl	$6,$8,8
536410c867Schristos	andi	$30,$8,0xFF00
546410c867Schristos	sll	$8,$8,24
556410c867Schristos	andi	$6,0xFF00
566410c867Schristos	sll	$30,$30,8
576410c867Schristos	or	$8,$25
586410c867Schristos	or	$6,$30
596410c867Schristos	or	$8,$6
606410c867Schristos#endif
616410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
626410c867Schristos	addu	$24,$31		# 0
636410c867Schristos	xor	$25,$3,$7
646410c867Schristos	rotr	$6,$1,27
656410c867Schristos	and	$25,$2
666410c867Schristos	addu	$24,$6
67*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
68*e0ea3921Schristos	 lw	$9,1*4($5)
69*e0ea3921Schristos#else
70*e0ea3921Schristos	 lwl	$9,1*4+3($5)
716410c867Schristos	 lwr	$9,1*4+0($5)
72*e0ea3921Schristos#endif
736410c867Schristos	xor	$25,$7
746410c867Schristos	addu	$24,$8
756410c867Schristos	rotr	$2,$2,2
766410c867Schristos	addu	$24,$25
776410c867Schristos#else
786410c867Schristos	 lwl	$9,1*4+3($5)
796410c867Schristos	sll	$25,$1,5	# 0
806410c867Schristos	addu	$24,$31
816410c867Schristos	 lwr	$9,1*4+0($5)
826410c867Schristos	srl	$6,$1,27
836410c867Schristos	addu	$24,$25
846410c867Schristos	xor	$25,$3,$7
856410c867Schristos	addu	$24,$6
866410c867Schristos	sll	$30,$2,30
876410c867Schristos	and	$25,$2
886410c867Schristos	srl	$2,$2,2
896410c867Schristos	xor	$25,$7
906410c867Schristos	addu	$24,$8
916410c867Schristos	or	$2,$30
926410c867Schristos	addu	$24,$25
936410c867Schristos#endif
946410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
956410c867Schristos	wsbh	$9,$9	# byte swap(1)
966410c867Schristos	rotr	$9,$9,16
976410c867Schristos#else
986410c867Schristos	srl	$25,$9,24	# byte swap(1)
996410c867Schristos	srl	$6,$9,8
1006410c867Schristos	andi	$30,$9,0xFF00
1016410c867Schristos	sll	$9,$9,24
1026410c867Schristos	andi	$6,0xFF00
1036410c867Schristos	sll	$30,$30,8
1046410c867Schristos	or	$9,$25
1056410c867Schristos	or	$6,$30
1066410c867Schristos	or	$9,$6
1076410c867Schristos#endif
1086410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1096410c867Schristos	addu	$7,$31		# 1
1106410c867Schristos	xor	$25,$2,$3
1116410c867Schristos	rotr	$6,$24,27
1126410c867Schristos	and	$25,$1
1136410c867Schristos	addu	$7,$6
114*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
115*e0ea3921Schristos	 lw	$10,2*4($5)
116*e0ea3921Schristos#else
117*e0ea3921Schristos	 lwl	$10,2*4+3($5)
1186410c867Schristos	 lwr	$10,2*4+0($5)
119*e0ea3921Schristos#endif
1206410c867Schristos	xor	$25,$3
1216410c867Schristos	addu	$7,$9
1226410c867Schristos	rotr	$1,$1,2
1236410c867Schristos	addu	$7,$25
1246410c867Schristos#else
1256410c867Schristos	 lwl	$10,2*4+3($5)
1266410c867Schristos	sll	$25,$24,5	# 1
1276410c867Schristos	addu	$7,$31
1286410c867Schristos	 lwr	$10,2*4+0($5)
1296410c867Schristos	srl	$6,$24,27
1306410c867Schristos	addu	$7,$25
1316410c867Schristos	xor	$25,$2,$3
1326410c867Schristos	addu	$7,$6
1336410c867Schristos	sll	$30,$1,30
1346410c867Schristos	and	$25,$1
1356410c867Schristos	srl	$1,$1,2
1366410c867Schristos	xor	$25,$3
1376410c867Schristos	addu	$7,$9
1386410c867Schristos	or	$1,$30
1396410c867Schristos	addu	$7,$25
1406410c867Schristos#endif
1416410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1426410c867Schristos	wsbh	$10,$10	# byte swap(2)
1436410c867Schristos	rotr	$10,$10,16
1446410c867Schristos#else
1456410c867Schristos	srl	$25,$10,24	# byte swap(2)
1466410c867Schristos	srl	$6,$10,8
1476410c867Schristos	andi	$30,$10,0xFF00
1486410c867Schristos	sll	$10,$10,24
1496410c867Schristos	andi	$6,0xFF00
1506410c867Schristos	sll	$30,$30,8
1516410c867Schristos	or	$10,$25
1526410c867Schristos	or	$6,$30
1536410c867Schristos	or	$10,$6
1546410c867Schristos#endif
1556410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1566410c867Schristos	addu	$3,$31		# 2
1576410c867Schristos	xor	$25,$1,$2
1586410c867Schristos	rotr	$6,$7,27
1596410c867Schristos	and	$25,$24
1606410c867Schristos	addu	$3,$6
161*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
162*e0ea3921Schristos	 lw	$11,3*4($5)
163*e0ea3921Schristos#else
164*e0ea3921Schristos	 lwl	$11,3*4+3($5)
1656410c867Schristos	 lwr	$11,3*4+0($5)
166*e0ea3921Schristos#endif
1676410c867Schristos	xor	$25,$2
1686410c867Schristos	addu	$3,$10
1696410c867Schristos	rotr	$24,$24,2
1706410c867Schristos	addu	$3,$25
1716410c867Schristos#else
1726410c867Schristos	 lwl	$11,3*4+3($5)
1736410c867Schristos	sll	$25,$7,5	# 2
1746410c867Schristos	addu	$3,$31
1756410c867Schristos	 lwr	$11,3*4+0($5)
1766410c867Schristos	srl	$6,$7,27
1776410c867Schristos	addu	$3,$25
1786410c867Schristos	xor	$25,$1,$2
1796410c867Schristos	addu	$3,$6
1806410c867Schristos	sll	$30,$24,30
1816410c867Schristos	and	$25,$24
1826410c867Schristos	srl	$24,$24,2
1836410c867Schristos	xor	$25,$2
1846410c867Schristos	addu	$3,$10
1856410c867Schristos	or	$24,$30
1866410c867Schristos	addu	$3,$25
1876410c867Schristos#endif
1886410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
1896410c867Schristos	wsbh	$11,$11	# byte swap(3)
1906410c867Schristos	rotr	$11,$11,16
1916410c867Schristos#else
1926410c867Schristos	srl	$25,$11,24	# byte swap(3)
1936410c867Schristos	srl	$6,$11,8
1946410c867Schristos	andi	$30,$11,0xFF00
1956410c867Schristos	sll	$11,$11,24
1966410c867Schristos	andi	$6,0xFF00
1976410c867Schristos	sll	$30,$30,8
1986410c867Schristos	or	$11,$25
1996410c867Schristos	or	$6,$30
2006410c867Schristos	or	$11,$6
2016410c867Schristos#endif
2026410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2036410c867Schristos	addu	$2,$31		# 3
2046410c867Schristos	xor	$25,$24,$1
2056410c867Schristos	rotr	$6,$3,27
2066410c867Schristos	and	$25,$7
2076410c867Schristos	addu	$2,$6
208*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
209*e0ea3921Schristos	 lw	$12,4*4($5)
210*e0ea3921Schristos#else
211*e0ea3921Schristos	 lwl	$12,4*4+3($5)
2126410c867Schristos	 lwr	$12,4*4+0($5)
213*e0ea3921Schristos#endif
2146410c867Schristos	xor	$25,$1
2156410c867Schristos	addu	$2,$11
2166410c867Schristos	rotr	$7,$7,2
2176410c867Schristos	addu	$2,$25
2186410c867Schristos#else
2196410c867Schristos	 lwl	$12,4*4+3($5)
2206410c867Schristos	sll	$25,$3,5	# 3
2216410c867Schristos	addu	$2,$31
2226410c867Schristos	 lwr	$12,4*4+0($5)
2236410c867Schristos	srl	$6,$3,27
2246410c867Schristos	addu	$2,$25
2256410c867Schristos	xor	$25,$24,$1
2266410c867Schristos	addu	$2,$6
2276410c867Schristos	sll	$30,$7,30
2286410c867Schristos	and	$25,$7
2296410c867Schristos	srl	$7,$7,2
2306410c867Schristos	xor	$25,$1
2316410c867Schristos	addu	$2,$11
2326410c867Schristos	or	$7,$30
2336410c867Schristos	addu	$2,$25
2346410c867Schristos#endif
2356410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2366410c867Schristos	wsbh	$12,$12	# byte swap(4)
2376410c867Schristos	rotr	$12,$12,16
2386410c867Schristos#else
2396410c867Schristos	srl	$25,$12,24	# byte swap(4)
2406410c867Schristos	srl	$6,$12,8
2416410c867Schristos	andi	$30,$12,0xFF00
2426410c867Schristos	sll	$12,$12,24
2436410c867Schristos	andi	$6,0xFF00
2446410c867Schristos	sll	$30,$30,8
2456410c867Schristos	or	$12,$25
2466410c867Schristos	or	$6,$30
2476410c867Schristos	or	$12,$6
2486410c867Schristos#endif
2496410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2506410c867Schristos	addu	$1,$31		# 4
2516410c867Schristos	xor	$25,$7,$24
2526410c867Schristos	rotr	$6,$2,27
2536410c867Schristos	and	$25,$3
2546410c867Schristos	addu	$1,$6
255*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
256*e0ea3921Schristos	 lw	$13,5*4($5)
257*e0ea3921Schristos#else
258*e0ea3921Schristos	 lwl	$13,5*4+3($5)
2596410c867Schristos	 lwr	$13,5*4+0($5)
260*e0ea3921Schristos#endif
2616410c867Schristos	xor	$25,$24
2626410c867Schristos	addu	$1,$12
2636410c867Schristos	rotr	$3,$3,2
2646410c867Schristos	addu	$1,$25
2656410c867Schristos#else
2666410c867Schristos	 lwl	$13,5*4+3($5)
2676410c867Schristos	sll	$25,$2,5	# 4
2686410c867Schristos	addu	$1,$31
2696410c867Schristos	 lwr	$13,5*4+0($5)
2706410c867Schristos	srl	$6,$2,27
2716410c867Schristos	addu	$1,$25
2726410c867Schristos	xor	$25,$7,$24
2736410c867Schristos	addu	$1,$6
2746410c867Schristos	sll	$30,$3,30
2756410c867Schristos	and	$25,$3
2766410c867Schristos	srl	$3,$3,2
2776410c867Schristos	xor	$25,$24
2786410c867Schristos	addu	$1,$12
2796410c867Schristos	or	$3,$30
2806410c867Schristos	addu	$1,$25
2816410c867Schristos#endif
2826410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2836410c867Schristos	wsbh	$13,$13	# byte swap(5)
2846410c867Schristos	rotr	$13,$13,16
2856410c867Schristos#else
2866410c867Schristos	srl	$25,$13,24	# byte swap(5)
2876410c867Schristos	srl	$6,$13,8
2886410c867Schristos	andi	$30,$13,0xFF00
2896410c867Schristos	sll	$13,$13,24
2906410c867Schristos	andi	$6,0xFF00
2916410c867Schristos	sll	$30,$30,8
2926410c867Schristos	or	$13,$25
2936410c867Schristos	or	$6,$30
2946410c867Schristos	or	$13,$6
2956410c867Schristos#endif
2966410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
2976410c867Schristos	addu	$24,$31		# 5
2986410c867Schristos	xor	$25,$3,$7
2996410c867Schristos	rotr	$6,$1,27
3006410c867Schristos	and	$25,$2
3016410c867Schristos	addu	$24,$6
302*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
303*e0ea3921Schristos	 lw	$14,6*4($5)
304*e0ea3921Schristos#else
305*e0ea3921Schristos	 lwl	$14,6*4+3($5)
3066410c867Schristos	 lwr	$14,6*4+0($5)
307*e0ea3921Schristos#endif
3086410c867Schristos	xor	$25,$7
3096410c867Schristos	addu	$24,$13
3106410c867Schristos	rotr	$2,$2,2
3116410c867Schristos	addu	$24,$25
3126410c867Schristos#else
3136410c867Schristos	 lwl	$14,6*4+3($5)
3146410c867Schristos	sll	$25,$1,5	# 5
3156410c867Schristos	addu	$24,$31
3166410c867Schristos	 lwr	$14,6*4+0($5)
3176410c867Schristos	srl	$6,$1,27
3186410c867Schristos	addu	$24,$25
3196410c867Schristos	xor	$25,$3,$7
3206410c867Schristos	addu	$24,$6
3216410c867Schristos	sll	$30,$2,30
3226410c867Schristos	and	$25,$2
3236410c867Schristos	srl	$2,$2,2
3246410c867Schristos	xor	$25,$7
3256410c867Schristos	addu	$24,$13
3266410c867Schristos	or	$2,$30
3276410c867Schristos	addu	$24,$25
3286410c867Schristos#endif
3296410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
3306410c867Schristos	wsbh	$14,$14	# byte swap(6)
3316410c867Schristos	rotr	$14,$14,16
3326410c867Schristos#else
3336410c867Schristos	srl	$25,$14,24	# byte swap(6)
3346410c867Schristos	srl	$6,$14,8
3356410c867Schristos	andi	$30,$14,0xFF00
3366410c867Schristos	sll	$14,$14,24
3376410c867Schristos	andi	$6,0xFF00
3386410c867Schristos	sll	$30,$30,8
3396410c867Schristos	or	$14,$25
3406410c867Schristos	or	$6,$30
3416410c867Schristos	or	$14,$6
3426410c867Schristos#endif
3436410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
3446410c867Schristos	addu	$7,$31		# 6
3456410c867Schristos	xor	$25,$2,$3
3466410c867Schristos	rotr	$6,$24,27
3476410c867Schristos	and	$25,$1
3486410c867Schristos	addu	$7,$6
349*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
350*e0ea3921Schristos	 lw	$15,7*4($5)
351*e0ea3921Schristos#else
352*e0ea3921Schristos	 lwl	$15,7*4+3($5)
3536410c867Schristos	 lwr	$15,7*4+0($5)
354*e0ea3921Schristos#endif
3556410c867Schristos	xor	$25,$3
3566410c867Schristos	addu	$7,$14
3576410c867Schristos	rotr	$1,$1,2
3586410c867Schristos	addu	$7,$25
3596410c867Schristos#else
3606410c867Schristos	 lwl	$15,7*4+3($5)
3616410c867Schristos	sll	$25,$24,5	# 6
3626410c867Schristos	addu	$7,$31
3636410c867Schristos	 lwr	$15,7*4+0($5)
3646410c867Schristos	srl	$6,$24,27
3656410c867Schristos	addu	$7,$25
3666410c867Schristos	xor	$25,$2,$3
3676410c867Schristos	addu	$7,$6
3686410c867Schristos	sll	$30,$1,30
3696410c867Schristos	and	$25,$1
3706410c867Schristos	srl	$1,$1,2
3716410c867Schristos	xor	$25,$3
3726410c867Schristos	addu	$7,$14
3736410c867Schristos	or	$1,$30
3746410c867Schristos	addu	$7,$25
3756410c867Schristos#endif
3766410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
3776410c867Schristos	wsbh	$15,$15	# byte swap(7)
3786410c867Schristos	rotr	$15,$15,16
3796410c867Schristos#else
3806410c867Schristos	srl	$25,$15,24	# byte swap(7)
3816410c867Schristos	srl	$6,$15,8
3826410c867Schristos	andi	$30,$15,0xFF00
3836410c867Schristos	sll	$15,$15,24
3846410c867Schristos	andi	$6,0xFF00
3856410c867Schristos	sll	$30,$30,8
3866410c867Schristos	or	$15,$25
3876410c867Schristos	or	$6,$30
3886410c867Schristos	or	$15,$6
3896410c867Schristos#endif
3906410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
3916410c867Schristos	addu	$3,$31		# 7
3926410c867Schristos	xor	$25,$1,$2
3936410c867Schristos	rotr	$6,$7,27
3946410c867Schristos	and	$25,$24
3956410c867Schristos	addu	$3,$6
396*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
397*e0ea3921Schristos	 lw	$16,8*4($5)
398*e0ea3921Schristos#else
399*e0ea3921Schristos	 lwl	$16,8*4+3($5)
4006410c867Schristos	 lwr	$16,8*4+0($5)
401*e0ea3921Schristos#endif
4026410c867Schristos	xor	$25,$2
4036410c867Schristos	addu	$3,$15
4046410c867Schristos	rotr	$24,$24,2
4056410c867Schristos	addu	$3,$25
4066410c867Schristos#else
4076410c867Schristos	 lwl	$16,8*4+3($5)
4086410c867Schristos	sll	$25,$7,5	# 7
4096410c867Schristos	addu	$3,$31
4106410c867Schristos	 lwr	$16,8*4+0($5)
4116410c867Schristos	srl	$6,$7,27
4126410c867Schristos	addu	$3,$25
4136410c867Schristos	xor	$25,$1,$2
4146410c867Schristos	addu	$3,$6
4156410c867Schristos	sll	$30,$24,30
4166410c867Schristos	and	$25,$24
4176410c867Schristos	srl	$24,$24,2
4186410c867Schristos	xor	$25,$2
4196410c867Schristos	addu	$3,$15
4206410c867Schristos	or	$24,$30
4216410c867Schristos	addu	$3,$25
4226410c867Schristos#endif
4236410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
4246410c867Schristos	wsbh	$16,$16	# byte swap(8)
4256410c867Schristos	rotr	$16,$16,16
4266410c867Schristos#else
4276410c867Schristos	srl	$25,$16,24	# byte swap(8)
4286410c867Schristos	srl	$6,$16,8
4296410c867Schristos	andi	$30,$16,0xFF00
4306410c867Schristos	sll	$16,$16,24
4316410c867Schristos	andi	$6,0xFF00
4326410c867Schristos	sll	$30,$30,8
4336410c867Schristos	or	$16,$25
4346410c867Schristos	or	$6,$30
4356410c867Schristos	or	$16,$6
4366410c867Schristos#endif
4376410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
4386410c867Schristos	addu	$2,$31		# 8
4396410c867Schristos	xor	$25,$24,$1
4406410c867Schristos	rotr	$6,$3,27
4416410c867Schristos	and	$25,$7
4426410c867Schristos	addu	$2,$6
443*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
444*e0ea3921Schristos	 lw	$17,9*4($5)
445*e0ea3921Schristos#else
446*e0ea3921Schristos	 lwl	$17,9*4+3($5)
4476410c867Schristos	 lwr	$17,9*4+0($5)
448*e0ea3921Schristos#endif
4496410c867Schristos	xor	$25,$1
4506410c867Schristos	addu	$2,$16
4516410c867Schristos	rotr	$7,$7,2
4526410c867Schristos	addu	$2,$25
4536410c867Schristos#else
4546410c867Schristos	 lwl	$17,9*4+3($5)
4556410c867Schristos	sll	$25,$3,5	# 8
4566410c867Schristos	addu	$2,$31
4576410c867Schristos	 lwr	$17,9*4+0($5)
4586410c867Schristos	srl	$6,$3,27
4596410c867Schristos	addu	$2,$25
4606410c867Schristos	xor	$25,$24,$1
4616410c867Schristos	addu	$2,$6
4626410c867Schristos	sll	$30,$7,30
4636410c867Schristos	and	$25,$7
4646410c867Schristos	srl	$7,$7,2
4656410c867Schristos	xor	$25,$1
4666410c867Schristos	addu	$2,$16
4676410c867Schristos	or	$7,$30
4686410c867Schristos	addu	$2,$25
4696410c867Schristos#endif
4706410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
4716410c867Schristos	wsbh	$17,$17	# byte swap(9)
4726410c867Schristos	rotr	$17,$17,16
4736410c867Schristos#else
4746410c867Schristos	srl	$25,$17,24	# byte swap(9)
4756410c867Schristos	srl	$6,$17,8
4766410c867Schristos	andi	$30,$17,0xFF00
4776410c867Schristos	sll	$17,$17,24
4786410c867Schristos	andi	$6,0xFF00
4796410c867Schristos	sll	$30,$30,8
4806410c867Schristos	or	$17,$25
4816410c867Schristos	or	$6,$30
4826410c867Schristos	or	$17,$6
4836410c867Schristos#endif
4846410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
4856410c867Schristos	addu	$1,$31		# 9
4866410c867Schristos	xor	$25,$7,$24
4876410c867Schristos	rotr	$6,$2,27
4886410c867Schristos	and	$25,$3
4896410c867Schristos	addu	$1,$6
490*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
491*e0ea3921Schristos	 lw	$18,10*4($5)
492*e0ea3921Schristos#else
493*e0ea3921Schristos	 lwl	$18,10*4+3($5)
4946410c867Schristos	 lwr	$18,10*4+0($5)
495*e0ea3921Schristos#endif
4966410c867Schristos	xor	$25,$24
4976410c867Schristos	addu	$1,$17
4986410c867Schristos	rotr	$3,$3,2
4996410c867Schristos	addu	$1,$25
5006410c867Schristos#else
5016410c867Schristos	 lwl	$18,10*4+3($5)
5026410c867Schristos	sll	$25,$2,5	# 9
5036410c867Schristos	addu	$1,$31
5046410c867Schristos	 lwr	$18,10*4+0($5)
5056410c867Schristos	srl	$6,$2,27
5066410c867Schristos	addu	$1,$25
5076410c867Schristos	xor	$25,$7,$24
5086410c867Schristos	addu	$1,$6
5096410c867Schristos	sll	$30,$3,30
5106410c867Schristos	and	$25,$3
5116410c867Schristos	srl	$3,$3,2
5126410c867Schristos	xor	$25,$24
5136410c867Schristos	addu	$1,$17
5146410c867Schristos	or	$3,$30
5156410c867Schristos	addu	$1,$25
5166410c867Schristos#endif
5176410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
5186410c867Schristos	wsbh	$18,$18	# byte swap(10)
5196410c867Schristos	rotr	$18,$18,16
5206410c867Schristos#else
5216410c867Schristos	srl	$25,$18,24	# byte swap(10)
5226410c867Schristos	srl	$6,$18,8
5236410c867Schristos	andi	$30,$18,0xFF00
5246410c867Schristos	sll	$18,$18,24
5256410c867Schristos	andi	$6,0xFF00
5266410c867Schristos	sll	$30,$30,8
5276410c867Schristos	or	$18,$25
5286410c867Schristos	or	$6,$30
5296410c867Schristos	or	$18,$6
5306410c867Schristos#endif
5316410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
5326410c867Schristos	addu	$24,$31		# 10
5336410c867Schristos	xor	$25,$3,$7
5346410c867Schristos	rotr	$6,$1,27
5356410c867Schristos	and	$25,$2
5366410c867Schristos	addu	$24,$6
537*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
538*e0ea3921Schristos	 lw	$19,11*4($5)
539*e0ea3921Schristos#else
540*e0ea3921Schristos	 lwl	$19,11*4+3($5)
5416410c867Schristos	 lwr	$19,11*4+0($5)
542*e0ea3921Schristos#endif
5436410c867Schristos	xor	$25,$7
5446410c867Schristos	addu	$24,$18
5456410c867Schristos	rotr	$2,$2,2
5466410c867Schristos	addu	$24,$25
5476410c867Schristos#else
5486410c867Schristos	 lwl	$19,11*4+3($5)
5496410c867Schristos	sll	$25,$1,5	# 10
5506410c867Schristos	addu	$24,$31
5516410c867Schristos	 lwr	$19,11*4+0($5)
5526410c867Schristos	srl	$6,$1,27
5536410c867Schristos	addu	$24,$25
5546410c867Schristos	xor	$25,$3,$7
5556410c867Schristos	addu	$24,$6
5566410c867Schristos	sll	$30,$2,30
5576410c867Schristos	and	$25,$2
5586410c867Schristos	srl	$2,$2,2
5596410c867Schristos	xor	$25,$7
5606410c867Schristos	addu	$24,$18
5616410c867Schristos	or	$2,$30
5626410c867Schristos	addu	$24,$25
5636410c867Schristos#endif
5646410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
5656410c867Schristos	wsbh	$19,$19	# byte swap(11)
5666410c867Schristos	rotr	$19,$19,16
5676410c867Schristos#else
5686410c867Schristos	srl	$25,$19,24	# byte swap(11)
5696410c867Schristos	srl	$6,$19,8
5706410c867Schristos	andi	$30,$19,0xFF00
5716410c867Schristos	sll	$19,$19,24
5726410c867Schristos	andi	$6,0xFF00
5736410c867Schristos	sll	$30,$30,8
5746410c867Schristos	or	$19,$25
5756410c867Schristos	or	$6,$30
5766410c867Schristos	or	$19,$6
5776410c867Schristos#endif
5786410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
5796410c867Schristos	addu	$7,$31		# 11
5806410c867Schristos	xor	$25,$2,$3
5816410c867Schristos	rotr	$6,$24,27
5826410c867Schristos	and	$25,$1
5836410c867Schristos	addu	$7,$6
584*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
585*e0ea3921Schristos	 lw	$20,12*4($5)
586*e0ea3921Schristos#else
587*e0ea3921Schristos	 lwl	$20,12*4+3($5)
5886410c867Schristos	 lwr	$20,12*4+0($5)
589*e0ea3921Schristos#endif
5906410c867Schristos	xor	$25,$3
5916410c867Schristos	addu	$7,$19
5926410c867Schristos	rotr	$1,$1,2
5936410c867Schristos	addu	$7,$25
5946410c867Schristos#else
5956410c867Schristos	 lwl	$20,12*4+3($5)
5966410c867Schristos	sll	$25,$24,5	# 11
5976410c867Schristos	addu	$7,$31
5986410c867Schristos	 lwr	$20,12*4+0($5)
5996410c867Schristos	srl	$6,$24,27
6006410c867Schristos	addu	$7,$25
6016410c867Schristos	xor	$25,$2,$3
6026410c867Schristos	addu	$7,$6
6036410c867Schristos	sll	$30,$1,30
6046410c867Schristos	and	$25,$1
6056410c867Schristos	srl	$1,$1,2
6066410c867Schristos	xor	$25,$3
6076410c867Schristos	addu	$7,$19
6086410c867Schristos	or	$1,$30
6096410c867Schristos	addu	$7,$25
6106410c867Schristos#endif
6116410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
6126410c867Schristos	wsbh	$20,$20	# byte swap(12)
6136410c867Schristos	rotr	$20,$20,16
6146410c867Schristos#else
6156410c867Schristos	srl	$25,$20,24	# byte swap(12)
6166410c867Schristos	srl	$6,$20,8
6176410c867Schristos	andi	$30,$20,0xFF00
6186410c867Schristos	sll	$20,$20,24
6196410c867Schristos	andi	$6,0xFF00
6206410c867Schristos	sll	$30,$30,8
6216410c867Schristos	or	$20,$25
6226410c867Schristos	or	$6,$30
6236410c867Schristos	or	$20,$6
6246410c867Schristos#endif
6256410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
6266410c867Schristos	addu	$3,$31		# 12
6276410c867Schristos	xor	$25,$1,$2
6286410c867Schristos	rotr	$6,$7,27
6296410c867Schristos	and	$25,$24
6306410c867Schristos	addu	$3,$6
631*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
632*e0ea3921Schristos	 lw	$21,13*4($5)
633*e0ea3921Schristos#else
634*e0ea3921Schristos	 lwl	$21,13*4+3($5)
6356410c867Schristos	 lwr	$21,13*4+0($5)
636*e0ea3921Schristos#endif
6376410c867Schristos	xor	$25,$2
6386410c867Schristos	addu	$3,$20
6396410c867Schristos	rotr	$24,$24,2
6406410c867Schristos	addu	$3,$25
6416410c867Schristos#else
6426410c867Schristos	 lwl	$21,13*4+3($5)
6436410c867Schristos	sll	$25,$7,5	# 12
6446410c867Schristos	addu	$3,$31
6456410c867Schristos	 lwr	$21,13*4+0($5)
6466410c867Schristos	srl	$6,$7,27
6476410c867Schristos	addu	$3,$25
6486410c867Schristos	xor	$25,$1,$2
6496410c867Schristos	addu	$3,$6
6506410c867Schristos	sll	$30,$24,30
6516410c867Schristos	and	$25,$24
6526410c867Schristos	srl	$24,$24,2
6536410c867Schristos	xor	$25,$2
6546410c867Schristos	addu	$3,$20
6556410c867Schristos	or	$24,$30
6566410c867Schristos	addu	$3,$25
6576410c867Schristos#endif
6586410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
6596410c867Schristos	wsbh	$21,$21	# byte swap(13)
6606410c867Schristos	rotr	$21,$21,16
6616410c867Schristos#else
6626410c867Schristos	srl	$25,$21,24	# byte swap(13)
6636410c867Schristos	srl	$6,$21,8
6646410c867Schristos	andi	$30,$21,0xFF00
6656410c867Schristos	sll	$21,$21,24
6666410c867Schristos	andi	$6,0xFF00
6676410c867Schristos	sll	$30,$30,8
6686410c867Schristos	or	$21,$25
6696410c867Schristos	or	$6,$30
6706410c867Schristos	or	$21,$6
6716410c867Schristos#endif
6726410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
6736410c867Schristos	addu	$2,$31		# 13
6746410c867Schristos	xor	$25,$24,$1
6756410c867Schristos	rotr	$6,$3,27
6766410c867Schristos	and	$25,$7
6776410c867Schristos	addu	$2,$6
678*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
679*e0ea3921Schristos	 lw	$22,14*4($5)
680*e0ea3921Schristos#else
681*e0ea3921Schristos	 lwl	$22,14*4+3($5)
6826410c867Schristos	 lwr	$22,14*4+0($5)
683*e0ea3921Schristos#endif
6846410c867Schristos	xor	$25,$1
6856410c867Schristos	addu	$2,$21
6866410c867Schristos	rotr	$7,$7,2
6876410c867Schristos	addu	$2,$25
6886410c867Schristos#else
6896410c867Schristos	 lwl	$22,14*4+3($5)
6906410c867Schristos	sll	$25,$3,5	# 13
6916410c867Schristos	addu	$2,$31
6926410c867Schristos	 lwr	$22,14*4+0($5)
6936410c867Schristos	srl	$6,$3,27
6946410c867Schristos	addu	$2,$25
6956410c867Schristos	xor	$25,$24,$1
6966410c867Schristos	addu	$2,$6
6976410c867Schristos	sll	$30,$7,30
6986410c867Schristos	and	$25,$7
6996410c867Schristos	srl	$7,$7,2
7006410c867Schristos	xor	$25,$1
7016410c867Schristos	addu	$2,$21
7026410c867Schristos	or	$7,$30
7036410c867Schristos	addu	$2,$25
7046410c867Schristos#endif
7056410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
7066410c867Schristos	wsbh	$22,$22	# byte swap(14)
7076410c867Schristos	rotr	$22,$22,16
7086410c867Schristos#else
7096410c867Schristos	srl	$25,$22,24	# byte swap(14)
7106410c867Schristos	srl	$6,$22,8
7116410c867Schristos	andi	$30,$22,0xFF00
7126410c867Schristos	sll	$22,$22,24
7136410c867Schristos	andi	$6,0xFF00
7146410c867Schristos	sll	$30,$30,8
7156410c867Schristos	or	$22,$25
7166410c867Schristos	or	$6,$30
7176410c867Schristos	or	$22,$6
7186410c867Schristos#endif
7196410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
7206410c867Schristos	addu	$1,$31		# 14
7216410c867Schristos	xor	$25,$7,$24
7226410c867Schristos	rotr	$6,$2,27
7236410c867Schristos	and	$25,$3
7246410c867Schristos	addu	$1,$6
725*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6)
726*e0ea3921Schristos	 lw	$23,15*4($5)
727*e0ea3921Schristos#else
728*e0ea3921Schristos	 lwl	$23,15*4+3($5)
7296410c867Schristos	 lwr	$23,15*4+0($5)
730*e0ea3921Schristos#endif
7316410c867Schristos	xor	$25,$24
7326410c867Schristos	addu	$1,$22
7336410c867Schristos	rotr	$3,$3,2
7346410c867Schristos	addu	$1,$25
7356410c867Schristos#else
7366410c867Schristos	 lwl	$23,15*4+3($5)
7376410c867Schristos	sll	$25,$2,5	# 14
7386410c867Schristos	addu	$1,$31
7396410c867Schristos	 lwr	$23,15*4+0($5)
7406410c867Schristos	srl	$6,$2,27
7416410c867Schristos	addu	$1,$25
7426410c867Schristos	xor	$25,$7,$24
7436410c867Schristos	addu	$1,$6
7446410c867Schristos	sll	$30,$3,30
7456410c867Schristos	and	$25,$3
7466410c867Schristos	srl	$3,$3,2
7476410c867Schristos	xor	$25,$24
7486410c867Schristos	addu	$1,$22
7496410c867Schristos	or	$3,$30
7506410c867Schristos	addu	$1,$25
7516410c867Schristos#endif
7526410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
7536410c867Schristos	wsbh	$23,$23	# byte swap(15)
7546410c867Schristos	rotr	$23,$23,16
7556410c867Schristos#else
7566410c867Schristos	srl	$25,$23,24	# byte swap(15)
7576410c867Schristos	srl	$6,$23,8
7586410c867Schristos	andi	$30,$23,0xFF00
7596410c867Schristos	sll	$23,$23,24
7606410c867Schristos	andi	$6,0xFF00
7616410c867Schristos	sll	$30,$30,8
7626410c867Schristos	or	$23,$25
7636410c867Schristos	or	$23,$6
7646410c867Schristos	or	$23,$30
7656410c867Schristos#endif
7666410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
7676410c867Schristos	addu	$24,$31		# 15
7686410c867Schristos	 xor	$8,$10
7696410c867Schristos	xor	$25,$3,$7
7706410c867Schristos	rotr	$6,$1,27
7716410c867Schristos	 xor	$8,$16
7726410c867Schristos	and	$25,$2
7736410c867Schristos	addu	$24,$6
7746410c867Schristos	 xor	$8,$21
7756410c867Schristos	xor	$25,$7
7766410c867Schristos	addu	$24,$23
7776410c867Schristos	 rotr	$8,$8,31
7786410c867Schristos	rotr	$2,$2,2
7796410c867Schristos	addu	$24,$25
7806410c867Schristos#else
7816410c867Schristos	 xor	$8,$10
7826410c867Schristos	sll	$25,$1,5	# 15
7836410c867Schristos	addu	$24,$31
7846410c867Schristos	srl	$6,$1,27
7856410c867Schristos	addu	$24,$25
7866410c867Schristos	 xor	$8,$16
7876410c867Schristos	xor	$25,$3,$7
7886410c867Schristos	addu	$24,$6
7896410c867Schristos	 xor	$8,$21
7906410c867Schristos	sll	$30,$2,30
7916410c867Schristos	and	$25,$2
7926410c867Schristos	 srl	$6,$8,31
7936410c867Schristos	 addu	$8,$8
7946410c867Schristos	srl	$2,$2,2
7956410c867Schristos	xor	$25,$7
7966410c867Schristos	 or	$8,$6
7976410c867Schristos	addu	$24,$23
7986410c867Schristos	or	$2,$30
7996410c867Schristos	addu	$24,$25
8006410c867Schristos#endif
8016410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
8026410c867Schristos	addu	$7,$31		# 16
8036410c867Schristos	 xor	$9,$11
8046410c867Schristos	xor	$25,$2,$3
8056410c867Schristos	rotr	$6,$24,27
8066410c867Schristos	 xor	$9,$17
8076410c867Schristos	and	$25,$1
8086410c867Schristos	addu	$7,$6
8096410c867Schristos	 xor	$9,$22
8106410c867Schristos	xor	$25,$3
8116410c867Schristos	addu	$7,$8
8126410c867Schristos	 rotr	$9,$9,31
8136410c867Schristos	rotr	$1,$1,2
8146410c867Schristos	addu	$7,$25
8156410c867Schristos#else
8166410c867Schristos	 xor	$9,$11
8176410c867Schristos	sll	$25,$24,5	# 16
8186410c867Schristos	addu	$7,$31
8196410c867Schristos	srl	$6,$24,27
8206410c867Schristos	addu	$7,$25
8216410c867Schristos	 xor	$9,$17
8226410c867Schristos	xor	$25,$2,$3
8236410c867Schristos	addu	$7,$6
8246410c867Schristos	 xor	$9,$22
8256410c867Schristos	sll	$30,$1,30
8266410c867Schristos	and	$25,$1
8276410c867Schristos	 srl	$6,$9,31
8286410c867Schristos	 addu	$9,$9
8296410c867Schristos	srl	$1,$1,2
8306410c867Schristos	xor	$25,$3
8316410c867Schristos	 or	$9,$6
8326410c867Schristos	addu	$7,$8
8336410c867Schristos	or	$1,$30
8346410c867Schristos	addu	$7,$25
8356410c867Schristos#endif
8366410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
8376410c867Schristos	addu	$3,$31		# 17
8386410c867Schristos	 xor	$10,$12
8396410c867Schristos	xor	$25,$1,$2
8406410c867Schristos	rotr	$6,$7,27
8416410c867Schristos	 xor	$10,$18
8426410c867Schristos	and	$25,$24
8436410c867Schristos	addu	$3,$6
8446410c867Schristos	 xor	$10,$23
8456410c867Schristos	xor	$25,$2
8466410c867Schristos	addu	$3,$9
8476410c867Schristos	 rotr	$10,$10,31
8486410c867Schristos	rotr	$24,$24,2
8496410c867Schristos	addu	$3,$25
8506410c867Schristos#else
8516410c867Schristos	 xor	$10,$12
8526410c867Schristos	sll	$25,$7,5	# 17
8536410c867Schristos	addu	$3,$31
8546410c867Schristos	srl	$6,$7,27
8556410c867Schristos	addu	$3,$25
8566410c867Schristos	 xor	$10,$18
8576410c867Schristos	xor	$25,$1,$2
8586410c867Schristos	addu	$3,$6
8596410c867Schristos	 xor	$10,$23
8606410c867Schristos	sll	$30,$24,30
8616410c867Schristos	and	$25,$24
8626410c867Schristos	 srl	$6,$10,31
8636410c867Schristos	 addu	$10,$10
8646410c867Schristos	srl	$24,$24,2
8656410c867Schristos	xor	$25,$2
8666410c867Schristos	 or	$10,$6
8676410c867Schristos	addu	$3,$9
8686410c867Schristos	or	$24,$30
8696410c867Schristos	addu	$3,$25
8706410c867Schristos#endif
8716410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
8726410c867Schristos	addu	$2,$31		# 18
8736410c867Schristos	 xor	$11,$13
8746410c867Schristos	xor	$25,$24,$1
8756410c867Schristos	rotr	$6,$3,27
8766410c867Schristos	 xor	$11,$19
8776410c867Schristos	and	$25,$7
8786410c867Schristos	addu	$2,$6
8796410c867Schristos	 xor	$11,$8
8806410c867Schristos	xor	$25,$1
8816410c867Schristos	addu	$2,$10
8826410c867Schristos	 rotr	$11,$11,31
8836410c867Schristos	rotr	$7,$7,2
8846410c867Schristos	addu	$2,$25
8856410c867Schristos#else
8866410c867Schristos	 xor	$11,$13
8876410c867Schristos	sll	$25,$3,5	# 18
8886410c867Schristos	addu	$2,$31
8896410c867Schristos	srl	$6,$3,27
8906410c867Schristos	addu	$2,$25
8916410c867Schristos	 xor	$11,$19
8926410c867Schristos	xor	$25,$24,$1
8936410c867Schristos	addu	$2,$6
8946410c867Schristos	 xor	$11,$8
8956410c867Schristos	sll	$30,$7,30
8966410c867Schristos	and	$25,$7
8976410c867Schristos	 srl	$6,$11,31
8986410c867Schristos	 addu	$11,$11
8996410c867Schristos	srl	$7,$7,2
9006410c867Schristos	xor	$25,$1
9016410c867Schristos	 or	$11,$6
9026410c867Schristos	addu	$2,$10
9036410c867Schristos	or	$7,$30
9046410c867Schristos	addu	$2,$25
9056410c867Schristos#endif
9066410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
9076410c867Schristos	addu	$1,$31		# 19
9086410c867Schristos	 xor	$12,$14
9096410c867Schristos	xor	$25,$7,$24
9106410c867Schristos	rotr	$6,$2,27
9116410c867Schristos	 xor	$12,$20
9126410c867Schristos	and	$25,$3
9136410c867Schristos	addu	$1,$6
9146410c867Schristos	 xor	$12,$9
9156410c867Schristos	xor	$25,$24
9166410c867Schristos	addu	$1,$11
9176410c867Schristos	 rotr	$12,$12,31
9186410c867Schristos	rotr	$3,$3,2
9196410c867Schristos	addu	$1,$25
9206410c867Schristos#else
9216410c867Schristos	 xor	$12,$14
9226410c867Schristos	sll	$25,$2,5	# 19
9236410c867Schristos	addu	$1,$31
9246410c867Schristos	srl	$6,$2,27
9256410c867Schristos	addu	$1,$25
9266410c867Schristos	 xor	$12,$20
9276410c867Schristos	xor	$25,$7,$24
9286410c867Schristos	addu	$1,$6
9296410c867Schristos	 xor	$12,$9
9306410c867Schristos	sll	$30,$3,30
9316410c867Schristos	and	$25,$3
9326410c867Schristos	 srl	$6,$12,31
9336410c867Schristos	 addu	$12,$12
9346410c867Schristos	srl	$3,$3,2
9356410c867Schristos	xor	$25,$24
9366410c867Schristos	 or	$12,$6
9376410c867Schristos	addu	$1,$11
9386410c867Schristos	or	$3,$30
9396410c867Schristos	addu	$1,$25
9406410c867Schristos#endif
9416410c867Schristos	lui	$31,0x6ed9
9426410c867Schristos	ori	$31,0xeba1	# K_20_39
9436410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
9446410c867Schristos	 xor	$13,$15
9456410c867Schristos	addu	$24,$31		# 20
9466410c867Schristos	rotr	$6,$1,27
9476410c867Schristos	 xor	$13,$21
9486410c867Schristos	xor	$25,$3,$7
9496410c867Schristos	addu	$24,$6
9506410c867Schristos	 xor	$13,$10
9516410c867Schristos	xor	$25,$2
9526410c867Schristos	addu	$24,$12
9536410c867Schristos	 rotr	$13,$13,31
9546410c867Schristos	rotr	$2,$2,2
9556410c867Schristos	addu	$24,$25
9566410c867Schristos#else
9576410c867Schristos	 xor	$13,$15
9586410c867Schristos	sll	$25,$1,5	# 20
9596410c867Schristos	addu	$24,$31
9606410c867Schristos	srl	$6,$1,27
9616410c867Schristos	addu	$24,$25
9626410c867Schristos	 xor	$13,$21
9636410c867Schristos	xor	$25,$3,$7
9646410c867Schristos	addu	$24,$6
9656410c867Schristos	 xor	$13,$10
9666410c867Schristos	sll	$30,$2,30
9676410c867Schristos	xor	$25,$2
9686410c867Schristos	 srl	$6,$13,31
9696410c867Schristos	 addu	$13,$13
9706410c867Schristos	srl	$2,$2,2
9716410c867Schristos	addu	$24,$12
9726410c867Schristos	 or	$13,$6
9736410c867Schristos	or	$2,$30
9746410c867Schristos	addu	$24,$25
9756410c867Schristos#endif
9766410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
9776410c867Schristos	 xor	$14,$16
9786410c867Schristos	addu	$7,$31		# 21
9796410c867Schristos	rotr	$6,$24,27
9806410c867Schristos	 xor	$14,$22
9816410c867Schristos	xor	$25,$2,$3
9826410c867Schristos	addu	$7,$6
9836410c867Schristos	 xor	$14,$11
9846410c867Schristos	xor	$25,$1
9856410c867Schristos	addu	$7,$13
9866410c867Schristos	 rotr	$14,$14,31
9876410c867Schristos	rotr	$1,$1,2
9886410c867Schristos	addu	$7,$25
9896410c867Schristos#else
9906410c867Schristos	 xor	$14,$16
9916410c867Schristos	sll	$25,$24,5	# 21
9926410c867Schristos	addu	$7,$31
9936410c867Schristos	srl	$6,$24,27
9946410c867Schristos	addu	$7,$25
9956410c867Schristos	 xor	$14,$22
9966410c867Schristos	xor	$25,$2,$3
9976410c867Schristos	addu	$7,$6
9986410c867Schristos	 xor	$14,$11
9996410c867Schristos	sll	$30,$1,30
10006410c867Schristos	xor	$25,$1
10016410c867Schristos	 srl	$6,$14,31
10026410c867Schristos	 addu	$14,$14
10036410c867Schristos	srl	$1,$1,2
10046410c867Schristos	addu	$7,$13
10056410c867Schristos	 or	$14,$6
10066410c867Schristos	or	$1,$30
10076410c867Schristos	addu	$7,$25
10086410c867Schristos#endif
10096410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
10106410c867Schristos	 xor	$15,$17
10116410c867Schristos	addu	$3,$31		# 22
10126410c867Schristos	rotr	$6,$7,27
10136410c867Schristos	 xor	$15,$23
10146410c867Schristos	xor	$25,$1,$2
10156410c867Schristos	addu	$3,$6
10166410c867Schristos	 xor	$15,$12
10176410c867Schristos	xor	$25,$24
10186410c867Schristos	addu	$3,$14
10196410c867Schristos	 rotr	$15,$15,31
10206410c867Schristos	rotr	$24,$24,2
10216410c867Schristos	addu	$3,$25
10226410c867Schristos#else
10236410c867Schristos	 xor	$15,$17
10246410c867Schristos	sll	$25,$7,5	# 22
10256410c867Schristos	addu	$3,$31
10266410c867Schristos	srl	$6,$7,27
10276410c867Schristos	addu	$3,$25
10286410c867Schristos	 xor	$15,$23
10296410c867Schristos	xor	$25,$1,$2
10306410c867Schristos	addu	$3,$6
10316410c867Schristos	 xor	$15,$12
10326410c867Schristos	sll	$30,$24,30
10336410c867Schristos	xor	$25,$24
10346410c867Schristos	 srl	$6,$15,31
10356410c867Schristos	 addu	$15,$15
10366410c867Schristos	srl	$24,$24,2
10376410c867Schristos	addu	$3,$14
10386410c867Schristos	 or	$15,$6
10396410c867Schristos	or	$24,$30
10406410c867Schristos	addu	$3,$25
10416410c867Schristos#endif
10426410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
10436410c867Schristos	 xor	$16,$18
10446410c867Schristos	addu	$2,$31		# 23
10456410c867Schristos	rotr	$6,$3,27
10466410c867Schristos	 xor	$16,$8
10476410c867Schristos	xor	$25,$24,$1
10486410c867Schristos	addu	$2,$6
10496410c867Schristos	 xor	$16,$13
10506410c867Schristos	xor	$25,$7
10516410c867Schristos	addu	$2,$15
10526410c867Schristos	 rotr	$16,$16,31
10536410c867Schristos	rotr	$7,$7,2
10546410c867Schristos	addu	$2,$25
10556410c867Schristos#else
10566410c867Schristos	 xor	$16,$18
10576410c867Schristos	sll	$25,$3,5	# 23
10586410c867Schristos	addu	$2,$31
10596410c867Schristos	srl	$6,$3,27
10606410c867Schristos	addu	$2,$25
10616410c867Schristos	 xor	$16,$8
10626410c867Schristos	xor	$25,$24,$1
10636410c867Schristos	addu	$2,$6
10646410c867Schristos	 xor	$16,$13
10656410c867Schristos	sll	$30,$7,30
10666410c867Schristos	xor	$25,$7
10676410c867Schristos	 srl	$6,$16,31
10686410c867Schristos	 addu	$16,$16
10696410c867Schristos	srl	$7,$7,2
10706410c867Schristos	addu	$2,$15
10716410c867Schristos	 or	$16,$6
10726410c867Schristos	or	$7,$30
10736410c867Schristos	addu	$2,$25
10746410c867Schristos#endif
10756410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
10766410c867Schristos	 xor	$17,$19
10776410c867Schristos	addu	$1,$31		# 24
10786410c867Schristos	rotr	$6,$2,27
10796410c867Schristos	 xor	$17,$9
10806410c867Schristos	xor	$25,$7,$24
10816410c867Schristos	addu	$1,$6
10826410c867Schristos	 xor	$17,$14
10836410c867Schristos	xor	$25,$3
10846410c867Schristos	addu	$1,$16
10856410c867Schristos	 rotr	$17,$17,31
10866410c867Schristos	rotr	$3,$3,2
10876410c867Schristos	addu	$1,$25
10886410c867Schristos#else
10896410c867Schristos	 xor	$17,$19
10906410c867Schristos	sll	$25,$2,5	# 24
10916410c867Schristos	addu	$1,$31
10926410c867Schristos	srl	$6,$2,27
10936410c867Schristos	addu	$1,$25
10946410c867Schristos	 xor	$17,$9
10956410c867Schristos	xor	$25,$7,$24
10966410c867Schristos	addu	$1,$6
10976410c867Schristos	 xor	$17,$14
10986410c867Schristos	sll	$30,$3,30
10996410c867Schristos	xor	$25,$3
11006410c867Schristos	 srl	$6,$17,31
11016410c867Schristos	 addu	$17,$17
11026410c867Schristos	srl	$3,$3,2
11036410c867Schristos	addu	$1,$16
11046410c867Schristos	 or	$17,$6
11056410c867Schristos	or	$3,$30
11066410c867Schristos	addu	$1,$25
11076410c867Schristos#endif
11086410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
11096410c867Schristos	 xor	$18,$20
11106410c867Schristos	addu	$24,$31		# 25
11116410c867Schristos	rotr	$6,$1,27
11126410c867Schristos	 xor	$18,$10
11136410c867Schristos	xor	$25,$3,$7
11146410c867Schristos	addu	$24,$6
11156410c867Schristos	 xor	$18,$15
11166410c867Schristos	xor	$25,$2
11176410c867Schristos	addu	$24,$17
11186410c867Schristos	 rotr	$18,$18,31
11196410c867Schristos	rotr	$2,$2,2
11206410c867Schristos	addu	$24,$25
11216410c867Schristos#else
11226410c867Schristos	 xor	$18,$20
11236410c867Schristos	sll	$25,$1,5	# 25
11246410c867Schristos	addu	$24,$31
11256410c867Schristos	srl	$6,$1,27
11266410c867Schristos	addu	$24,$25
11276410c867Schristos	 xor	$18,$10
11286410c867Schristos	xor	$25,$3,$7
11296410c867Schristos	addu	$24,$6
11306410c867Schristos	 xor	$18,$15
11316410c867Schristos	sll	$30,$2,30
11326410c867Schristos	xor	$25,$2
11336410c867Schristos	 srl	$6,$18,31
11346410c867Schristos	 addu	$18,$18
11356410c867Schristos	srl	$2,$2,2
11366410c867Schristos	addu	$24,$17
11376410c867Schristos	 or	$18,$6
11386410c867Schristos	or	$2,$30
11396410c867Schristos	addu	$24,$25
11406410c867Schristos#endif
11416410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
11426410c867Schristos	 xor	$19,$21
11436410c867Schristos	addu	$7,$31		# 26
11446410c867Schristos	rotr	$6,$24,27
11456410c867Schristos	 xor	$19,$11
11466410c867Schristos	xor	$25,$2,$3
11476410c867Schristos	addu	$7,$6
11486410c867Schristos	 xor	$19,$16
11496410c867Schristos	xor	$25,$1
11506410c867Schristos	addu	$7,$18
11516410c867Schristos	 rotr	$19,$19,31
11526410c867Schristos	rotr	$1,$1,2
11536410c867Schristos	addu	$7,$25
11546410c867Schristos#else
11556410c867Schristos	 xor	$19,$21
11566410c867Schristos	sll	$25,$24,5	# 26
11576410c867Schristos	addu	$7,$31
11586410c867Schristos	srl	$6,$24,27
11596410c867Schristos	addu	$7,$25
11606410c867Schristos	 xor	$19,$11
11616410c867Schristos	xor	$25,$2,$3
11626410c867Schristos	addu	$7,$6
11636410c867Schristos	 xor	$19,$16
11646410c867Schristos	sll	$30,$1,30
11656410c867Schristos	xor	$25,$1
11666410c867Schristos	 srl	$6,$19,31
11676410c867Schristos	 addu	$19,$19
11686410c867Schristos	srl	$1,$1,2
11696410c867Schristos	addu	$7,$18
11706410c867Schristos	 or	$19,$6
11716410c867Schristos	or	$1,$30
11726410c867Schristos	addu	$7,$25
11736410c867Schristos#endif
11746410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
11756410c867Schristos	 xor	$20,$22
11766410c867Schristos	addu	$3,$31		# 27
11776410c867Schristos	rotr	$6,$7,27
11786410c867Schristos	 xor	$20,$12
11796410c867Schristos	xor	$25,$1,$2
11806410c867Schristos	addu	$3,$6
11816410c867Schristos	 xor	$20,$17
11826410c867Schristos	xor	$25,$24
11836410c867Schristos	addu	$3,$19
11846410c867Schristos	 rotr	$20,$20,31
11856410c867Schristos	rotr	$24,$24,2
11866410c867Schristos	addu	$3,$25
11876410c867Schristos#else
11886410c867Schristos	 xor	$20,$22
11896410c867Schristos	sll	$25,$7,5	# 27
11906410c867Schristos	addu	$3,$31
11916410c867Schristos	srl	$6,$7,27
11926410c867Schristos	addu	$3,$25
11936410c867Schristos	 xor	$20,$12
11946410c867Schristos	xor	$25,$1,$2
11956410c867Schristos	addu	$3,$6
11966410c867Schristos	 xor	$20,$17
11976410c867Schristos	sll	$30,$24,30
11986410c867Schristos	xor	$25,$24
11996410c867Schristos	 srl	$6,$20,31
12006410c867Schristos	 addu	$20,$20
12016410c867Schristos	srl	$24,$24,2
12026410c867Schristos	addu	$3,$19
12036410c867Schristos	 or	$20,$6
12046410c867Schristos	or	$24,$30
12056410c867Schristos	addu	$3,$25
12066410c867Schristos#endif
12076410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
12086410c867Schristos	 xor	$21,$23
12096410c867Schristos	addu	$2,$31		# 28
12106410c867Schristos	rotr	$6,$3,27
12116410c867Schristos	 xor	$21,$13
12126410c867Schristos	xor	$25,$24,$1
12136410c867Schristos	addu	$2,$6
12146410c867Schristos	 xor	$21,$18
12156410c867Schristos	xor	$25,$7
12166410c867Schristos	addu	$2,$20
12176410c867Schristos	 rotr	$21,$21,31
12186410c867Schristos	rotr	$7,$7,2
12196410c867Schristos	addu	$2,$25
12206410c867Schristos#else
12216410c867Schristos	 xor	$21,$23
12226410c867Schristos	sll	$25,$3,5	# 28
12236410c867Schristos	addu	$2,$31
12246410c867Schristos	srl	$6,$3,27
12256410c867Schristos	addu	$2,$25
12266410c867Schristos	 xor	$21,$13
12276410c867Schristos	xor	$25,$24,$1
12286410c867Schristos	addu	$2,$6
12296410c867Schristos	 xor	$21,$18
12306410c867Schristos	sll	$30,$7,30
12316410c867Schristos	xor	$25,$7
12326410c867Schristos	 srl	$6,$21,31
12336410c867Schristos	 addu	$21,$21
12346410c867Schristos	srl	$7,$7,2
12356410c867Schristos	addu	$2,$20
12366410c867Schristos	 or	$21,$6
12376410c867Schristos	or	$7,$30
12386410c867Schristos	addu	$2,$25
12396410c867Schristos#endif
12406410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
12416410c867Schristos	 xor	$22,$8
12426410c867Schristos	addu	$1,$31		# 29
12436410c867Schristos	rotr	$6,$2,27
12446410c867Schristos	 xor	$22,$14
12456410c867Schristos	xor	$25,$7,$24
12466410c867Schristos	addu	$1,$6
12476410c867Schristos	 xor	$22,$19
12486410c867Schristos	xor	$25,$3
12496410c867Schristos	addu	$1,$21
12506410c867Schristos	 rotr	$22,$22,31
12516410c867Schristos	rotr	$3,$3,2
12526410c867Schristos	addu	$1,$25
12536410c867Schristos#else
12546410c867Schristos	 xor	$22,$8
12556410c867Schristos	sll	$25,$2,5	# 29
12566410c867Schristos	addu	$1,$31
12576410c867Schristos	srl	$6,$2,27
12586410c867Schristos	addu	$1,$25
12596410c867Schristos	 xor	$22,$14
12606410c867Schristos	xor	$25,$7,$24
12616410c867Schristos	addu	$1,$6
12626410c867Schristos	 xor	$22,$19
12636410c867Schristos	sll	$30,$3,30
12646410c867Schristos	xor	$25,$3
12656410c867Schristos	 srl	$6,$22,31
12666410c867Schristos	 addu	$22,$22
12676410c867Schristos	srl	$3,$3,2
12686410c867Schristos	addu	$1,$21
12696410c867Schristos	 or	$22,$6
12706410c867Schristos	or	$3,$30
12716410c867Schristos	addu	$1,$25
12726410c867Schristos#endif
12736410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
12746410c867Schristos	 xor	$23,$9
12756410c867Schristos	addu	$24,$31		# 30
12766410c867Schristos	rotr	$6,$1,27
12776410c867Schristos	 xor	$23,$15
12786410c867Schristos	xor	$25,$3,$7
12796410c867Schristos	addu	$24,$6
12806410c867Schristos	 xor	$23,$20
12816410c867Schristos	xor	$25,$2
12826410c867Schristos	addu	$24,$22
12836410c867Schristos	 rotr	$23,$23,31
12846410c867Schristos	rotr	$2,$2,2
12856410c867Schristos	addu	$24,$25
12866410c867Schristos#else
12876410c867Schristos	 xor	$23,$9
12886410c867Schristos	sll	$25,$1,5	# 30
12896410c867Schristos	addu	$24,$31
12906410c867Schristos	srl	$6,$1,27
12916410c867Schristos	addu	$24,$25
12926410c867Schristos	 xor	$23,$15
12936410c867Schristos	xor	$25,$3,$7
12946410c867Schristos	addu	$24,$6
12956410c867Schristos	 xor	$23,$20
12966410c867Schristos	sll	$30,$2,30
12976410c867Schristos	xor	$25,$2
12986410c867Schristos	 srl	$6,$23,31
12996410c867Schristos	 addu	$23,$23
13006410c867Schristos	srl	$2,$2,2
13016410c867Schristos	addu	$24,$22
13026410c867Schristos	 or	$23,$6
13036410c867Schristos	or	$2,$30
13046410c867Schristos	addu	$24,$25
13056410c867Schristos#endif
13066410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
13076410c867Schristos	 xor	$8,$10
13086410c867Schristos	addu	$7,$31		# 31
13096410c867Schristos	rotr	$6,$24,27
13106410c867Schristos	 xor	$8,$16
13116410c867Schristos	xor	$25,$2,$3
13126410c867Schristos	addu	$7,$6
13136410c867Schristos	 xor	$8,$21
13146410c867Schristos	xor	$25,$1
13156410c867Schristos	addu	$7,$23
13166410c867Schristos	 rotr	$8,$8,31
13176410c867Schristos	rotr	$1,$1,2
13186410c867Schristos	addu	$7,$25
13196410c867Schristos#else
13206410c867Schristos	 xor	$8,$10
13216410c867Schristos	sll	$25,$24,5	# 31
13226410c867Schristos	addu	$7,$31
13236410c867Schristos	srl	$6,$24,27
13246410c867Schristos	addu	$7,$25
13256410c867Schristos	 xor	$8,$16
13266410c867Schristos	xor	$25,$2,$3
13276410c867Schristos	addu	$7,$6
13286410c867Schristos	 xor	$8,$21
13296410c867Schristos	sll	$30,$1,30
13306410c867Schristos	xor	$25,$1
13316410c867Schristos	 srl	$6,$8,31
13326410c867Schristos	 addu	$8,$8
13336410c867Schristos	srl	$1,$1,2
13346410c867Schristos	addu	$7,$23
13356410c867Schristos	 or	$8,$6
13366410c867Schristos	or	$1,$30
13376410c867Schristos	addu	$7,$25
13386410c867Schristos#endif
13396410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
13406410c867Schristos	 xor	$9,$11
13416410c867Schristos	addu	$3,$31		# 32
13426410c867Schristos	rotr	$6,$7,27
13436410c867Schristos	 xor	$9,$17
13446410c867Schristos	xor	$25,$1,$2
13456410c867Schristos	addu	$3,$6
13466410c867Schristos	 xor	$9,$22
13476410c867Schristos	xor	$25,$24
13486410c867Schristos	addu	$3,$8
13496410c867Schristos	 rotr	$9,$9,31
13506410c867Schristos	rotr	$24,$24,2
13516410c867Schristos	addu	$3,$25
13526410c867Schristos#else
13536410c867Schristos	 xor	$9,$11
13546410c867Schristos	sll	$25,$7,5	# 32
13556410c867Schristos	addu	$3,$31
13566410c867Schristos	srl	$6,$7,27
13576410c867Schristos	addu	$3,$25
13586410c867Schristos	 xor	$9,$17
13596410c867Schristos	xor	$25,$1,$2
13606410c867Schristos	addu	$3,$6
13616410c867Schristos	 xor	$9,$22
13626410c867Schristos	sll	$30,$24,30
13636410c867Schristos	xor	$25,$24
13646410c867Schristos	 srl	$6,$9,31
13656410c867Schristos	 addu	$9,$9
13666410c867Schristos	srl	$24,$24,2
13676410c867Schristos	addu	$3,$8
13686410c867Schristos	 or	$9,$6
13696410c867Schristos	or	$24,$30
13706410c867Schristos	addu	$3,$25
13716410c867Schristos#endif
13726410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
13736410c867Schristos	 xor	$10,$12
13746410c867Schristos	addu	$2,$31		# 33
13756410c867Schristos	rotr	$6,$3,27
13766410c867Schristos	 xor	$10,$18
13776410c867Schristos	xor	$25,$24,$1
13786410c867Schristos	addu	$2,$6
13796410c867Schristos	 xor	$10,$23
13806410c867Schristos	xor	$25,$7
13816410c867Schristos	addu	$2,$9
13826410c867Schristos	 rotr	$10,$10,31
13836410c867Schristos	rotr	$7,$7,2
13846410c867Schristos	addu	$2,$25
13856410c867Schristos#else
13866410c867Schristos	 xor	$10,$12
13876410c867Schristos	sll	$25,$3,5	# 33
13886410c867Schristos	addu	$2,$31
13896410c867Schristos	srl	$6,$3,27
13906410c867Schristos	addu	$2,$25
13916410c867Schristos	 xor	$10,$18
13926410c867Schristos	xor	$25,$24,$1
13936410c867Schristos	addu	$2,$6
13946410c867Schristos	 xor	$10,$23
13956410c867Schristos	sll	$30,$7,30
13966410c867Schristos	xor	$25,$7
13976410c867Schristos	 srl	$6,$10,31
13986410c867Schristos	 addu	$10,$10
13996410c867Schristos	srl	$7,$7,2
14006410c867Schristos	addu	$2,$9
14016410c867Schristos	 or	$10,$6
14026410c867Schristos	or	$7,$30
14036410c867Schristos	addu	$2,$25
14046410c867Schristos#endif
14056410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
14066410c867Schristos	 xor	$11,$13
14076410c867Schristos	addu	$1,$31		# 34
14086410c867Schristos	rotr	$6,$2,27
14096410c867Schristos	 xor	$11,$19
14106410c867Schristos	xor	$25,$7,$24
14116410c867Schristos	addu	$1,$6
14126410c867Schristos	 xor	$11,$8
14136410c867Schristos	xor	$25,$3
14146410c867Schristos	addu	$1,$10
14156410c867Schristos	 rotr	$11,$11,31
14166410c867Schristos	rotr	$3,$3,2
14176410c867Schristos	addu	$1,$25
14186410c867Schristos#else
14196410c867Schristos	 xor	$11,$13
14206410c867Schristos	sll	$25,$2,5	# 34
14216410c867Schristos	addu	$1,$31
14226410c867Schristos	srl	$6,$2,27
14236410c867Schristos	addu	$1,$25
14246410c867Schristos	 xor	$11,$19
14256410c867Schristos	xor	$25,$7,$24
14266410c867Schristos	addu	$1,$6
14276410c867Schristos	 xor	$11,$8
14286410c867Schristos	sll	$30,$3,30
14296410c867Schristos	xor	$25,$3
14306410c867Schristos	 srl	$6,$11,31
14316410c867Schristos	 addu	$11,$11
14326410c867Schristos	srl	$3,$3,2
14336410c867Schristos	addu	$1,$10
14346410c867Schristos	 or	$11,$6
14356410c867Schristos	or	$3,$30
14366410c867Schristos	addu	$1,$25
14376410c867Schristos#endif
14386410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
14396410c867Schristos	 xor	$12,$14
14406410c867Schristos	addu	$24,$31		# 35
14416410c867Schristos	rotr	$6,$1,27
14426410c867Schristos	 xor	$12,$20
14436410c867Schristos	xor	$25,$3,$7
14446410c867Schristos	addu	$24,$6
14456410c867Schristos	 xor	$12,$9
14466410c867Schristos	xor	$25,$2
14476410c867Schristos	addu	$24,$11
14486410c867Schristos	 rotr	$12,$12,31
14496410c867Schristos	rotr	$2,$2,2
14506410c867Schristos	addu	$24,$25
14516410c867Schristos#else
14526410c867Schristos	 xor	$12,$14
14536410c867Schristos	sll	$25,$1,5	# 35
14546410c867Schristos	addu	$24,$31
14556410c867Schristos	srl	$6,$1,27
14566410c867Schristos	addu	$24,$25
14576410c867Schristos	 xor	$12,$20
14586410c867Schristos	xor	$25,$3,$7
14596410c867Schristos	addu	$24,$6
14606410c867Schristos	 xor	$12,$9
14616410c867Schristos	sll	$30,$2,30
14626410c867Schristos	xor	$25,$2
14636410c867Schristos	 srl	$6,$12,31
14646410c867Schristos	 addu	$12,$12
14656410c867Schristos	srl	$2,$2,2
14666410c867Schristos	addu	$24,$11
14676410c867Schristos	 or	$12,$6
14686410c867Schristos	or	$2,$30
14696410c867Schristos	addu	$24,$25
14706410c867Schristos#endif
14716410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
14726410c867Schristos	 xor	$13,$15
14736410c867Schristos	addu	$7,$31		# 36
14746410c867Schristos	rotr	$6,$24,27
14756410c867Schristos	 xor	$13,$21
14766410c867Schristos	xor	$25,$2,$3
14776410c867Schristos	addu	$7,$6
14786410c867Schristos	 xor	$13,$10
14796410c867Schristos	xor	$25,$1
14806410c867Schristos	addu	$7,$12
14816410c867Schristos	 rotr	$13,$13,31
14826410c867Schristos	rotr	$1,$1,2
14836410c867Schristos	addu	$7,$25
14846410c867Schristos#else
14856410c867Schristos	 xor	$13,$15
14866410c867Schristos	sll	$25,$24,5	# 36
14876410c867Schristos	addu	$7,$31
14886410c867Schristos	srl	$6,$24,27
14896410c867Schristos	addu	$7,$25
14906410c867Schristos	 xor	$13,$21
14916410c867Schristos	xor	$25,$2,$3
14926410c867Schristos	addu	$7,$6
14936410c867Schristos	 xor	$13,$10
14946410c867Schristos	sll	$30,$1,30
14956410c867Schristos	xor	$25,$1
14966410c867Schristos	 srl	$6,$13,31
14976410c867Schristos	 addu	$13,$13
14986410c867Schristos	srl	$1,$1,2
14996410c867Schristos	addu	$7,$12
15006410c867Schristos	 or	$13,$6
15016410c867Schristos	or	$1,$30
15026410c867Schristos	addu	$7,$25
15036410c867Schristos#endif
15046410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
15056410c867Schristos	 xor	$14,$16
15066410c867Schristos	addu	$3,$31		# 37
15076410c867Schristos	rotr	$6,$7,27
15086410c867Schristos	 xor	$14,$22
15096410c867Schristos	xor	$25,$1,$2
15106410c867Schristos	addu	$3,$6
15116410c867Schristos	 xor	$14,$11
15126410c867Schristos	xor	$25,$24
15136410c867Schristos	addu	$3,$13
15146410c867Schristos	 rotr	$14,$14,31
15156410c867Schristos	rotr	$24,$24,2
15166410c867Schristos	addu	$3,$25
15176410c867Schristos#else
15186410c867Schristos	 xor	$14,$16
15196410c867Schristos	sll	$25,$7,5	# 37
15206410c867Schristos	addu	$3,$31
15216410c867Schristos	srl	$6,$7,27
15226410c867Schristos	addu	$3,$25
15236410c867Schristos	 xor	$14,$22
15246410c867Schristos	xor	$25,$1,$2
15256410c867Schristos	addu	$3,$6
15266410c867Schristos	 xor	$14,$11
15276410c867Schristos	sll	$30,$24,30
15286410c867Schristos	xor	$25,$24
15296410c867Schristos	 srl	$6,$14,31
15306410c867Schristos	 addu	$14,$14
15316410c867Schristos	srl	$24,$24,2
15326410c867Schristos	addu	$3,$13
15336410c867Schristos	 or	$14,$6
15346410c867Schristos	or	$24,$30
15356410c867Schristos	addu	$3,$25
15366410c867Schristos#endif
15376410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
15386410c867Schristos	 xor	$15,$17
15396410c867Schristos	addu	$2,$31		# 38
15406410c867Schristos	rotr	$6,$3,27
15416410c867Schristos	 xor	$15,$23
15426410c867Schristos	xor	$25,$24,$1
15436410c867Schristos	addu	$2,$6
15446410c867Schristos	 xor	$15,$12
15456410c867Schristos	xor	$25,$7
15466410c867Schristos	addu	$2,$14
15476410c867Schristos	 rotr	$15,$15,31
15486410c867Schristos	rotr	$7,$7,2
15496410c867Schristos	addu	$2,$25
15506410c867Schristos#else
15516410c867Schristos	 xor	$15,$17
15526410c867Schristos	sll	$25,$3,5	# 38
15536410c867Schristos	addu	$2,$31
15546410c867Schristos	srl	$6,$3,27
15556410c867Schristos	addu	$2,$25
15566410c867Schristos	 xor	$15,$23
15576410c867Schristos	xor	$25,$24,$1
15586410c867Schristos	addu	$2,$6
15596410c867Schristos	 xor	$15,$12
15606410c867Schristos	sll	$30,$7,30
15616410c867Schristos	xor	$25,$7
15626410c867Schristos	 srl	$6,$15,31
15636410c867Schristos	 addu	$15,$15
15646410c867Schristos	srl	$7,$7,2
15656410c867Schristos	addu	$2,$14
15666410c867Schristos	 or	$15,$6
15676410c867Schristos	or	$7,$30
15686410c867Schristos	addu	$2,$25
15696410c867Schristos#endif
15706410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
15716410c867Schristos	 xor	$16,$18
15726410c867Schristos	addu	$1,$31		# 39
15736410c867Schristos	rotr	$6,$2,27
15746410c867Schristos	 xor	$16,$8
15756410c867Schristos	xor	$25,$7,$24
15766410c867Schristos	addu	$1,$6
15776410c867Schristos	 xor	$16,$13
15786410c867Schristos	xor	$25,$3
15796410c867Schristos	addu	$1,$15
15806410c867Schristos	 rotr	$16,$16,31
15816410c867Schristos	rotr	$3,$3,2
15826410c867Schristos	addu	$1,$25
15836410c867Schristos#else
15846410c867Schristos	 xor	$16,$18
15856410c867Schristos	sll	$25,$2,5	# 39
15866410c867Schristos	addu	$1,$31
15876410c867Schristos	srl	$6,$2,27
15886410c867Schristos	addu	$1,$25
15896410c867Schristos	 xor	$16,$8
15906410c867Schristos	xor	$25,$7,$24
15916410c867Schristos	addu	$1,$6
15926410c867Schristos	 xor	$16,$13
15936410c867Schristos	sll	$30,$3,30
15946410c867Schristos	xor	$25,$3
15956410c867Schristos	 srl	$6,$16,31
15966410c867Schristos	 addu	$16,$16
15976410c867Schristos	srl	$3,$3,2
15986410c867Schristos	addu	$1,$15
15996410c867Schristos	 or	$16,$6
16006410c867Schristos	or	$3,$30
16016410c867Schristos	addu	$1,$25
16026410c867Schristos#endif
16036410c867Schristos	lui	$31,0x8f1b
16046410c867Schristos	ori	$31,0xbcdc	# K_40_59
16056410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
16066410c867Schristos	addu	$24,$31		# 40
16076410c867Schristos	and	$25,$3,$7
16086410c867Schristos	 xor	$17,$19
16096410c867Schristos	rotr	$6,$1,27
16106410c867Schristos	addu	$24,$25
16116410c867Schristos	 xor	$17,$9
16126410c867Schristos	xor	$25,$3,$7
16136410c867Schristos	addu	$24,$6
16146410c867Schristos	 xor	$17,$14
16156410c867Schristos	and	$25,$2
16166410c867Schristos	addu	$24,$16
16176410c867Schristos	 rotr	$17,$17,31
16186410c867Schristos	rotr	$2,$2,2
16196410c867Schristos	addu	$24,$25
16206410c867Schristos#else
16216410c867Schristos	 xor	$17,$19
16226410c867Schristos	sll	$25,$1,5	# 40
16236410c867Schristos	addu	$24,$31
16246410c867Schristos	srl	$6,$1,27
16256410c867Schristos	addu	$24,$25
16266410c867Schristos	 xor	$17,$9
16276410c867Schristos	and	$25,$3,$7
16286410c867Schristos	addu	$24,$6
16296410c867Schristos	 xor	$17,$14
16306410c867Schristos	sll	$30,$2,30
16316410c867Schristos	addu	$24,$25
16326410c867Schristos	 srl	$6,$17,31
16336410c867Schristos	xor	$25,$3,$7
16346410c867Schristos	 addu	$17,$17
16356410c867Schristos	and	$25,$2
16366410c867Schristos	srl	$2,$2,2
16376410c867Schristos	 or	$17,$6
16386410c867Schristos	addu	$24,$16
16396410c867Schristos	or	$2,$30
16406410c867Schristos	addu	$24,$25
16416410c867Schristos#endif
16426410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
16436410c867Schristos	addu	$7,$31		# 41
16446410c867Schristos	and	$25,$2,$3
16456410c867Schristos	 xor	$18,$20
16466410c867Schristos	rotr	$6,$24,27
16476410c867Schristos	addu	$7,$25
16486410c867Schristos	 xor	$18,$10
16496410c867Schristos	xor	$25,$2,$3
16506410c867Schristos	addu	$7,$6
16516410c867Schristos	 xor	$18,$15
16526410c867Schristos	and	$25,$1
16536410c867Schristos	addu	$7,$17
16546410c867Schristos	 rotr	$18,$18,31
16556410c867Schristos	rotr	$1,$1,2
16566410c867Schristos	addu	$7,$25
16576410c867Schristos#else
16586410c867Schristos	 xor	$18,$20
16596410c867Schristos	sll	$25,$24,5	# 41
16606410c867Schristos	addu	$7,$31
16616410c867Schristos	srl	$6,$24,27
16626410c867Schristos	addu	$7,$25
16636410c867Schristos	 xor	$18,$10
16646410c867Schristos	and	$25,$2,$3
16656410c867Schristos	addu	$7,$6
16666410c867Schristos	 xor	$18,$15
16676410c867Schristos	sll	$30,$1,30
16686410c867Schristos	addu	$7,$25
16696410c867Schristos	 srl	$6,$18,31
16706410c867Schristos	xor	$25,$2,$3
16716410c867Schristos	 addu	$18,$18
16726410c867Schristos	and	$25,$1
16736410c867Schristos	srl	$1,$1,2
16746410c867Schristos	 or	$18,$6
16756410c867Schristos	addu	$7,$17
16766410c867Schristos	or	$1,$30
16776410c867Schristos	addu	$7,$25
16786410c867Schristos#endif
16796410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
16806410c867Schristos	addu	$3,$31		# 42
16816410c867Schristos	and	$25,$1,$2
16826410c867Schristos	 xor	$19,$21
16836410c867Schristos	rotr	$6,$7,27
16846410c867Schristos	addu	$3,$25
16856410c867Schristos	 xor	$19,$11
16866410c867Schristos	xor	$25,$1,$2
16876410c867Schristos	addu	$3,$6
16886410c867Schristos	 xor	$19,$16
16896410c867Schristos	and	$25,$24
16906410c867Schristos	addu	$3,$18
16916410c867Schristos	 rotr	$19,$19,31
16926410c867Schristos	rotr	$24,$24,2
16936410c867Schristos	addu	$3,$25
16946410c867Schristos#else
16956410c867Schristos	 xor	$19,$21
16966410c867Schristos	sll	$25,$7,5	# 42
16976410c867Schristos	addu	$3,$31
16986410c867Schristos	srl	$6,$7,27
16996410c867Schristos	addu	$3,$25
17006410c867Schristos	 xor	$19,$11
17016410c867Schristos	and	$25,$1,$2
17026410c867Schristos	addu	$3,$6
17036410c867Schristos	 xor	$19,$16
17046410c867Schristos	sll	$30,$24,30
17056410c867Schristos	addu	$3,$25
17066410c867Schristos	 srl	$6,$19,31
17076410c867Schristos	xor	$25,$1,$2
17086410c867Schristos	 addu	$19,$19
17096410c867Schristos	and	$25,$24
17106410c867Schristos	srl	$24,$24,2
17116410c867Schristos	 or	$19,$6
17126410c867Schristos	addu	$3,$18
17136410c867Schristos	or	$24,$30
17146410c867Schristos	addu	$3,$25
17156410c867Schristos#endif
17166410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
17176410c867Schristos	addu	$2,$31		# 43
17186410c867Schristos	and	$25,$24,$1
17196410c867Schristos	 xor	$20,$22
17206410c867Schristos	rotr	$6,$3,27
17216410c867Schristos	addu	$2,$25
17226410c867Schristos	 xor	$20,$12
17236410c867Schristos	xor	$25,$24,$1
17246410c867Schristos	addu	$2,$6
17256410c867Schristos	 xor	$20,$17
17266410c867Schristos	and	$25,$7
17276410c867Schristos	addu	$2,$19
17286410c867Schristos	 rotr	$20,$20,31
17296410c867Schristos	rotr	$7,$7,2
17306410c867Schristos	addu	$2,$25
17316410c867Schristos#else
17326410c867Schristos	 xor	$20,$22
17336410c867Schristos	sll	$25,$3,5	# 43
17346410c867Schristos	addu	$2,$31
17356410c867Schristos	srl	$6,$3,27
17366410c867Schristos	addu	$2,$25
17376410c867Schristos	 xor	$20,$12
17386410c867Schristos	and	$25,$24,$1
17396410c867Schristos	addu	$2,$6
17406410c867Schristos	 xor	$20,$17
17416410c867Schristos	sll	$30,$7,30
17426410c867Schristos	addu	$2,$25
17436410c867Schristos	 srl	$6,$20,31
17446410c867Schristos	xor	$25,$24,$1
17456410c867Schristos	 addu	$20,$20
17466410c867Schristos	and	$25,$7
17476410c867Schristos	srl	$7,$7,2
17486410c867Schristos	 or	$20,$6
17496410c867Schristos	addu	$2,$19
17506410c867Schristos	or	$7,$30
17516410c867Schristos	addu	$2,$25
17526410c867Schristos#endif
17536410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
17546410c867Schristos	addu	$1,$31		# 44
17556410c867Schristos	and	$25,$7,$24
17566410c867Schristos	 xor	$21,$23
17576410c867Schristos	rotr	$6,$2,27
17586410c867Schristos	addu	$1,$25
17596410c867Schristos	 xor	$21,$13
17606410c867Schristos	xor	$25,$7,$24
17616410c867Schristos	addu	$1,$6
17626410c867Schristos	 xor	$21,$18
17636410c867Schristos	and	$25,$3
17646410c867Schristos	addu	$1,$20
17656410c867Schristos	 rotr	$21,$21,31
17666410c867Schristos	rotr	$3,$3,2
17676410c867Schristos	addu	$1,$25
17686410c867Schristos#else
17696410c867Schristos	 xor	$21,$23
17706410c867Schristos	sll	$25,$2,5	# 44
17716410c867Schristos	addu	$1,$31
17726410c867Schristos	srl	$6,$2,27
17736410c867Schristos	addu	$1,$25
17746410c867Schristos	 xor	$21,$13
17756410c867Schristos	and	$25,$7,$24
17766410c867Schristos	addu	$1,$6
17776410c867Schristos	 xor	$21,$18
17786410c867Schristos	sll	$30,$3,30
17796410c867Schristos	addu	$1,$25
17806410c867Schristos	 srl	$6,$21,31
17816410c867Schristos	xor	$25,$7,$24
17826410c867Schristos	 addu	$21,$21
17836410c867Schristos	and	$25,$3
17846410c867Schristos	srl	$3,$3,2
17856410c867Schristos	 or	$21,$6
17866410c867Schristos	addu	$1,$20
17876410c867Schristos	or	$3,$30
17886410c867Schristos	addu	$1,$25
17896410c867Schristos#endif
17906410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
17916410c867Schristos	addu	$24,$31		# 45
17926410c867Schristos	and	$25,$3,$7
17936410c867Schristos	 xor	$22,$8
17946410c867Schristos	rotr	$6,$1,27
17956410c867Schristos	addu	$24,$25
17966410c867Schristos	 xor	$22,$14
17976410c867Schristos	xor	$25,$3,$7
17986410c867Schristos	addu	$24,$6
17996410c867Schristos	 xor	$22,$19
18006410c867Schristos	and	$25,$2
18016410c867Schristos	addu	$24,$21
18026410c867Schristos	 rotr	$22,$22,31
18036410c867Schristos	rotr	$2,$2,2
18046410c867Schristos	addu	$24,$25
18056410c867Schristos#else
18066410c867Schristos	 xor	$22,$8
18076410c867Schristos	sll	$25,$1,5	# 45
18086410c867Schristos	addu	$24,$31
18096410c867Schristos	srl	$6,$1,27
18106410c867Schristos	addu	$24,$25
18116410c867Schristos	 xor	$22,$14
18126410c867Schristos	and	$25,$3,$7
18136410c867Schristos	addu	$24,$6
18146410c867Schristos	 xor	$22,$19
18156410c867Schristos	sll	$30,$2,30
18166410c867Schristos	addu	$24,$25
18176410c867Schristos	 srl	$6,$22,31
18186410c867Schristos	xor	$25,$3,$7
18196410c867Schristos	 addu	$22,$22
18206410c867Schristos	and	$25,$2
18216410c867Schristos	srl	$2,$2,2
18226410c867Schristos	 or	$22,$6
18236410c867Schristos	addu	$24,$21
18246410c867Schristos	or	$2,$30
18256410c867Schristos	addu	$24,$25
18266410c867Schristos#endif
18276410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
18286410c867Schristos	addu	$7,$31		# 46
18296410c867Schristos	and	$25,$2,$3
18306410c867Schristos	 xor	$23,$9
18316410c867Schristos	rotr	$6,$24,27
18326410c867Schristos	addu	$7,$25
18336410c867Schristos	 xor	$23,$15
18346410c867Schristos	xor	$25,$2,$3
18356410c867Schristos	addu	$7,$6
18366410c867Schristos	 xor	$23,$20
18376410c867Schristos	and	$25,$1
18386410c867Schristos	addu	$7,$22
18396410c867Schristos	 rotr	$23,$23,31
18406410c867Schristos	rotr	$1,$1,2
18416410c867Schristos	addu	$7,$25
18426410c867Schristos#else
18436410c867Schristos	 xor	$23,$9
18446410c867Schristos	sll	$25,$24,5	# 46
18456410c867Schristos	addu	$7,$31
18466410c867Schristos	srl	$6,$24,27
18476410c867Schristos	addu	$7,$25
18486410c867Schristos	 xor	$23,$15
18496410c867Schristos	and	$25,$2,$3
18506410c867Schristos	addu	$7,$6
18516410c867Schristos	 xor	$23,$20
18526410c867Schristos	sll	$30,$1,30
18536410c867Schristos	addu	$7,$25
18546410c867Schristos	 srl	$6,$23,31
18556410c867Schristos	xor	$25,$2,$3
18566410c867Schristos	 addu	$23,$23
18576410c867Schristos	and	$25,$1
18586410c867Schristos	srl	$1,$1,2
18596410c867Schristos	 or	$23,$6
18606410c867Schristos	addu	$7,$22
18616410c867Schristos	or	$1,$30
18626410c867Schristos	addu	$7,$25
18636410c867Schristos#endif
18646410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
18656410c867Schristos	addu	$3,$31		# 47
18666410c867Schristos	and	$25,$1,$2
18676410c867Schristos	 xor	$8,$10
18686410c867Schristos	rotr	$6,$7,27
18696410c867Schristos	addu	$3,$25
18706410c867Schristos	 xor	$8,$16
18716410c867Schristos	xor	$25,$1,$2
18726410c867Schristos	addu	$3,$6
18736410c867Schristos	 xor	$8,$21
18746410c867Schristos	and	$25,$24
18756410c867Schristos	addu	$3,$23
18766410c867Schristos	 rotr	$8,$8,31
18776410c867Schristos	rotr	$24,$24,2
18786410c867Schristos	addu	$3,$25
18796410c867Schristos#else
18806410c867Schristos	 xor	$8,$10
18816410c867Schristos	sll	$25,$7,5	# 47
18826410c867Schristos	addu	$3,$31
18836410c867Schristos	srl	$6,$7,27
18846410c867Schristos	addu	$3,$25
18856410c867Schristos	 xor	$8,$16
18866410c867Schristos	and	$25,$1,$2
18876410c867Schristos	addu	$3,$6
18886410c867Schristos	 xor	$8,$21
18896410c867Schristos	sll	$30,$24,30
18906410c867Schristos	addu	$3,$25
18916410c867Schristos	 srl	$6,$8,31
18926410c867Schristos	xor	$25,$1,$2
18936410c867Schristos	 addu	$8,$8
18946410c867Schristos	and	$25,$24
18956410c867Schristos	srl	$24,$24,2
18966410c867Schristos	 or	$8,$6
18976410c867Schristos	addu	$3,$23
18986410c867Schristos	or	$24,$30
18996410c867Schristos	addu	$3,$25
19006410c867Schristos#endif
19016410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
19026410c867Schristos	addu	$2,$31		# 48
19036410c867Schristos	and	$25,$24,$1
19046410c867Schristos	 xor	$9,$11
19056410c867Schristos	rotr	$6,$3,27
19066410c867Schristos	addu	$2,$25
19076410c867Schristos	 xor	$9,$17
19086410c867Schristos	xor	$25,$24,$1
19096410c867Schristos	addu	$2,$6
19106410c867Schristos	 xor	$9,$22
19116410c867Schristos	and	$25,$7
19126410c867Schristos	addu	$2,$8
19136410c867Schristos	 rotr	$9,$9,31
19146410c867Schristos	rotr	$7,$7,2
19156410c867Schristos	addu	$2,$25
19166410c867Schristos#else
19176410c867Schristos	 xor	$9,$11
19186410c867Schristos	sll	$25,$3,5	# 48
19196410c867Schristos	addu	$2,$31
19206410c867Schristos	srl	$6,$3,27
19216410c867Schristos	addu	$2,$25
19226410c867Schristos	 xor	$9,$17
19236410c867Schristos	and	$25,$24,$1
19246410c867Schristos	addu	$2,$6
19256410c867Schristos	 xor	$9,$22
19266410c867Schristos	sll	$30,$7,30
19276410c867Schristos	addu	$2,$25
19286410c867Schristos	 srl	$6,$9,31
19296410c867Schristos	xor	$25,$24,$1
19306410c867Schristos	 addu	$9,$9
19316410c867Schristos	and	$25,$7
19326410c867Schristos	srl	$7,$7,2
19336410c867Schristos	 or	$9,$6
19346410c867Schristos	addu	$2,$8
19356410c867Schristos	or	$7,$30
19366410c867Schristos	addu	$2,$25
19376410c867Schristos#endif
19386410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
19396410c867Schristos	addu	$1,$31		# 49
19406410c867Schristos	and	$25,$7,$24
19416410c867Schristos	 xor	$10,$12
19426410c867Schristos	rotr	$6,$2,27
19436410c867Schristos	addu	$1,$25
19446410c867Schristos	 xor	$10,$18
19456410c867Schristos	xor	$25,$7,$24
19466410c867Schristos	addu	$1,$6
19476410c867Schristos	 xor	$10,$23
19486410c867Schristos	and	$25,$3
19496410c867Schristos	addu	$1,$9
19506410c867Schristos	 rotr	$10,$10,31
19516410c867Schristos	rotr	$3,$3,2
19526410c867Schristos	addu	$1,$25
19536410c867Schristos#else
19546410c867Schristos	 xor	$10,$12
19556410c867Schristos	sll	$25,$2,5	# 49
19566410c867Schristos	addu	$1,$31
19576410c867Schristos	srl	$6,$2,27
19586410c867Schristos	addu	$1,$25
19596410c867Schristos	 xor	$10,$18
19606410c867Schristos	and	$25,$7,$24
19616410c867Schristos	addu	$1,$6
19626410c867Schristos	 xor	$10,$23
19636410c867Schristos	sll	$30,$3,30
19646410c867Schristos	addu	$1,$25
19656410c867Schristos	 srl	$6,$10,31
19666410c867Schristos	xor	$25,$7,$24
19676410c867Schristos	 addu	$10,$10
19686410c867Schristos	and	$25,$3
19696410c867Schristos	srl	$3,$3,2
19706410c867Schristos	 or	$10,$6
19716410c867Schristos	addu	$1,$9
19726410c867Schristos	or	$3,$30
19736410c867Schristos	addu	$1,$25
19746410c867Schristos#endif
19756410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
19766410c867Schristos	addu	$24,$31		# 50
19776410c867Schristos	and	$25,$3,$7
19786410c867Schristos	 xor	$11,$13
19796410c867Schristos	rotr	$6,$1,27
19806410c867Schristos	addu	$24,$25
19816410c867Schristos	 xor	$11,$19
19826410c867Schristos	xor	$25,$3,$7
19836410c867Schristos	addu	$24,$6
19846410c867Schristos	 xor	$11,$8
19856410c867Schristos	and	$25,$2
19866410c867Schristos	addu	$24,$10
19876410c867Schristos	 rotr	$11,$11,31
19886410c867Schristos	rotr	$2,$2,2
19896410c867Schristos	addu	$24,$25
19906410c867Schristos#else
19916410c867Schristos	 xor	$11,$13
19926410c867Schristos	sll	$25,$1,5	# 50
19936410c867Schristos	addu	$24,$31
19946410c867Schristos	srl	$6,$1,27
19956410c867Schristos	addu	$24,$25
19966410c867Schristos	 xor	$11,$19
19976410c867Schristos	and	$25,$3,$7
19986410c867Schristos	addu	$24,$6
19996410c867Schristos	 xor	$11,$8
20006410c867Schristos	sll	$30,$2,30
20016410c867Schristos	addu	$24,$25
20026410c867Schristos	 srl	$6,$11,31
20036410c867Schristos	xor	$25,$3,$7
20046410c867Schristos	 addu	$11,$11
20056410c867Schristos	and	$25,$2
20066410c867Schristos	srl	$2,$2,2
20076410c867Schristos	 or	$11,$6
20086410c867Schristos	addu	$24,$10
20096410c867Schristos	or	$2,$30
20106410c867Schristos	addu	$24,$25
20116410c867Schristos#endif
20126410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
20136410c867Schristos	addu	$7,$31		# 51
20146410c867Schristos	and	$25,$2,$3
20156410c867Schristos	 xor	$12,$14
20166410c867Schristos	rotr	$6,$24,27
20176410c867Schristos	addu	$7,$25
20186410c867Schristos	 xor	$12,$20
20196410c867Schristos	xor	$25,$2,$3
20206410c867Schristos	addu	$7,$6
20216410c867Schristos	 xor	$12,$9
20226410c867Schristos	and	$25,$1
20236410c867Schristos	addu	$7,$11
20246410c867Schristos	 rotr	$12,$12,31
20256410c867Schristos	rotr	$1,$1,2
20266410c867Schristos	addu	$7,$25
20276410c867Schristos#else
20286410c867Schristos	 xor	$12,$14
20296410c867Schristos	sll	$25,$24,5	# 51
20306410c867Schristos	addu	$7,$31
20316410c867Schristos	srl	$6,$24,27
20326410c867Schristos	addu	$7,$25
20336410c867Schristos	 xor	$12,$20
20346410c867Schristos	and	$25,$2,$3
20356410c867Schristos	addu	$7,$6
20366410c867Schristos	 xor	$12,$9
20376410c867Schristos	sll	$30,$1,30
20386410c867Schristos	addu	$7,$25
20396410c867Schristos	 srl	$6,$12,31
20406410c867Schristos	xor	$25,$2,$3
20416410c867Schristos	 addu	$12,$12
20426410c867Schristos	and	$25,$1
20436410c867Schristos	srl	$1,$1,2
20446410c867Schristos	 or	$12,$6
20456410c867Schristos	addu	$7,$11
20466410c867Schristos	or	$1,$30
20476410c867Schristos	addu	$7,$25
20486410c867Schristos#endif
20496410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
20506410c867Schristos	addu	$3,$31		# 52
20516410c867Schristos	and	$25,$1,$2
20526410c867Schristos	 xor	$13,$15
20536410c867Schristos	rotr	$6,$7,27
20546410c867Schristos	addu	$3,$25
20556410c867Schristos	 xor	$13,$21
20566410c867Schristos	xor	$25,$1,$2
20576410c867Schristos	addu	$3,$6
20586410c867Schristos	 xor	$13,$10
20596410c867Schristos	and	$25,$24
20606410c867Schristos	addu	$3,$12
20616410c867Schristos	 rotr	$13,$13,31
20626410c867Schristos	rotr	$24,$24,2
20636410c867Schristos	addu	$3,$25
20646410c867Schristos#else
20656410c867Schristos	 xor	$13,$15
20666410c867Schristos	sll	$25,$7,5	# 52
20676410c867Schristos	addu	$3,$31
20686410c867Schristos	srl	$6,$7,27
20696410c867Schristos	addu	$3,$25
20706410c867Schristos	 xor	$13,$21
20716410c867Schristos	and	$25,$1,$2
20726410c867Schristos	addu	$3,$6
20736410c867Schristos	 xor	$13,$10
20746410c867Schristos	sll	$30,$24,30
20756410c867Schristos	addu	$3,$25
20766410c867Schristos	 srl	$6,$13,31
20776410c867Schristos	xor	$25,$1,$2
20786410c867Schristos	 addu	$13,$13
20796410c867Schristos	and	$25,$24
20806410c867Schristos	srl	$24,$24,2
20816410c867Schristos	 or	$13,$6
20826410c867Schristos	addu	$3,$12
20836410c867Schristos	or	$24,$30
20846410c867Schristos	addu	$3,$25
20856410c867Schristos#endif
20866410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
20876410c867Schristos	addu	$2,$31		# 53
20886410c867Schristos	and	$25,$24,$1
20896410c867Schristos	 xor	$14,$16
20906410c867Schristos	rotr	$6,$3,27
20916410c867Schristos	addu	$2,$25
20926410c867Schristos	 xor	$14,$22
20936410c867Schristos	xor	$25,$24,$1
20946410c867Schristos	addu	$2,$6
20956410c867Schristos	 xor	$14,$11
20966410c867Schristos	and	$25,$7
20976410c867Schristos	addu	$2,$13
20986410c867Schristos	 rotr	$14,$14,31
20996410c867Schristos	rotr	$7,$7,2
21006410c867Schristos	addu	$2,$25
21016410c867Schristos#else
21026410c867Schristos	 xor	$14,$16
21036410c867Schristos	sll	$25,$3,5	# 53
21046410c867Schristos	addu	$2,$31
21056410c867Schristos	srl	$6,$3,27
21066410c867Schristos	addu	$2,$25
21076410c867Schristos	 xor	$14,$22
21086410c867Schristos	and	$25,$24,$1
21096410c867Schristos	addu	$2,$6
21106410c867Schristos	 xor	$14,$11
21116410c867Schristos	sll	$30,$7,30
21126410c867Schristos	addu	$2,$25
21136410c867Schristos	 srl	$6,$14,31
21146410c867Schristos	xor	$25,$24,$1
21156410c867Schristos	 addu	$14,$14
21166410c867Schristos	and	$25,$7
21176410c867Schristos	srl	$7,$7,2
21186410c867Schristos	 or	$14,$6
21196410c867Schristos	addu	$2,$13
21206410c867Schristos	or	$7,$30
21216410c867Schristos	addu	$2,$25
21226410c867Schristos#endif
21236410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
21246410c867Schristos	addu	$1,$31		# 54
21256410c867Schristos	and	$25,$7,$24
21266410c867Schristos	 xor	$15,$17
21276410c867Schristos	rotr	$6,$2,27
21286410c867Schristos	addu	$1,$25
21296410c867Schristos	 xor	$15,$23
21306410c867Schristos	xor	$25,$7,$24
21316410c867Schristos	addu	$1,$6
21326410c867Schristos	 xor	$15,$12
21336410c867Schristos	and	$25,$3
21346410c867Schristos	addu	$1,$14
21356410c867Schristos	 rotr	$15,$15,31
21366410c867Schristos	rotr	$3,$3,2
21376410c867Schristos	addu	$1,$25
21386410c867Schristos#else
21396410c867Schristos	 xor	$15,$17
21406410c867Schristos	sll	$25,$2,5	# 54
21416410c867Schristos	addu	$1,$31
21426410c867Schristos	srl	$6,$2,27
21436410c867Schristos	addu	$1,$25
21446410c867Schristos	 xor	$15,$23
21456410c867Schristos	and	$25,$7,$24
21466410c867Schristos	addu	$1,$6
21476410c867Schristos	 xor	$15,$12
21486410c867Schristos	sll	$30,$3,30
21496410c867Schristos	addu	$1,$25
21506410c867Schristos	 srl	$6,$15,31
21516410c867Schristos	xor	$25,$7,$24
21526410c867Schristos	 addu	$15,$15
21536410c867Schristos	and	$25,$3
21546410c867Schristos	srl	$3,$3,2
21556410c867Schristos	 or	$15,$6
21566410c867Schristos	addu	$1,$14
21576410c867Schristos	or	$3,$30
21586410c867Schristos	addu	$1,$25
21596410c867Schristos#endif
21606410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
21616410c867Schristos	addu	$24,$31		# 55
21626410c867Schristos	and	$25,$3,$7
21636410c867Schristos	 xor	$16,$18
21646410c867Schristos	rotr	$6,$1,27
21656410c867Schristos	addu	$24,$25
21666410c867Schristos	 xor	$16,$8
21676410c867Schristos	xor	$25,$3,$7
21686410c867Schristos	addu	$24,$6
21696410c867Schristos	 xor	$16,$13
21706410c867Schristos	and	$25,$2
21716410c867Schristos	addu	$24,$15
21726410c867Schristos	 rotr	$16,$16,31
21736410c867Schristos	rotr	$2,$2,2
21746410c867Schristos	addu	$24,$25
21756410c867Schristos#else
21766410c867Schristos	 xor	$16,$18
21776410c867Schristos	sll	$25,$1,5	# 55
21786410c867Schristos	addu	$24,$31
21796410c867Schristos	srl	$6,$1,27
21806410c867Schristos	addu	$24,$25
21816410c867Schristos	 xor	$16,$8
21826410c867Schristos	and	$25,$3,$7
21836410c867Schristos	addu	$24,$6
21846410c867Schristos	 xor	$16,$13
21856410c867Schristos	sll	$30,$2,30
21866410c867Schristos	addu	$24,$25
21876410c867Schristos	 srl	$6,$16,31
21886410c867Schristos	xor	$25,$3,$7
21896410c867Schristos	 addu	$16,$16
21906410c867Schristos	and	$25,$2
21916410c867Schristos	srl	$2,$2,2
21926410c867Schristos	 or	$16,$6
21936410c867Schristos	addu	$24,$15
21946410c867Schristos	or	$2,$30
21956410c867Schristos	addu	$24,$25
21966410c867Schristos#endif
21976410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
21986410c867Schristos	addu	$7,$31		# 56
21996410c867Schristos	and	$25,$2,$3
22006410c867Schristos	 xor	$17,$19
22016410c867Schristos	rotr	$6,$24,27
22026410c867Schristos	addu	$7,$25
22036410c867Schristos	 xor	$17,$9
22046410c867Schristos	xor	$25,$2,$3
22056410c867Schristos	addu	$7,$6
22066410c867Schristos	 xor	$17,$14
22076410c867Schristos	and	$25,$1
22086410c867Schristos	addu	$7,$16
22096410c867Schristos	 rotr	$17,$17,31
22106410c867Schristos	rotr	$1,$1,2
22116410c867Schristos	addu	$7,$25
22126410c867Schristos#else
22136410c867Schristos	 xor	$17,$19
22146410c867Schristos	sll	$25,$24,5	# 56
22156410c867Schristos	addu	$7,$31
22166410c867Schristos	srl	$6,$24,27
22176410c867Schristos	addu	$7,$25
22186410c867Schristos	 xor	$17,$9
22196410c867Schristos	and	$25,$2,$3
22206410c867Schristos	addu	$7,$6
22216410c867Schristos	 xor	$17,$14
22226410c867Schristos	sll	$30,$1,30
22236410c867Schristos	addu	$7,$25
22246410c867Schristos	 srl	$6,$17,31
22256410c867Schristos	xor	$25,$2,$3
22266410c867Schristos	 addu	$17,$17
22276410c867Schristos	and	$25,$1
22286410c867Schristos	srl	$1,$1,2
22296410c867Schristos	 or	$17,$6
22306410c867Schristos	addu	$7,$16
22316410c867Schristos	or	$1,$30
22326410c867Schristos	addu	$7,$25
22336410c867Schristos#endif
22346410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
22356410c867Schristos	addu	$3,$31		# 57
22366410c867Schristos	and	$25,$1,$2
22376410c867Schristos	 xor	$18,$20
22386410c867Schristos	rotr	$6,$7,27
22396410c867Schristos	addu	$3,$25
22406410c867Schristos	 xor	$18,$10
22416410c867Schristos	xor	$25,$1,$2
22426410c867Schristos	addu	$3,$6
22436410c867Schristos	 xor	$18,$15
22446410c867Schristos	and	$25,$24
22456410c867Schristos	addu	$3,$17
22466410c867Schristos	 rotr	$18,$18,31
22476410c867Schristos	rotr	$24,$24,2
22486410c867Schristos	addu	$3,$25
22496410c867Schristos#else
22506410c867Schristos	 xor	$18,$20
22516410c867Schristos	sll	$25,$7,5	# 57
22526410c867Schristos	addu	$3,$31
22536410c867Schristos	srl	$6,$7,27
22546410c867Schristos	addu	$3,$25
22556410c867Schristos	 xor	$18,$10
22566410c867Schristos	and	$25,$1,$2
22576410c867Schristos	addu	$3,$6
22586410c867Schristos	 xor	$18,$15
22596410c867Schristos	sll	$30,$24,30
22606410c867Schristos	addu	$3,$25
22616410c867Schristos	 srl	$6,$18,31
22626410c867Schristos	xor	$25,$1,$2
22636410c867Schristos	 addu	$18,$18
22646410c867Schristos	and	$25,$24
22656410c867Schristos	srl	$24,$24,2
22666410c867Schristos	 or	$18,$6
22676410c867Schristos	addu	$3,$17
22686410c867Schristos	or	$24,$30
22696410c867Schristos	addu	$3,$25
22706410c867Schristos#endif
22716410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
22726410c867Schristos	addu	$2,$31		# 58
22736410c867Schristos	and	$25,$24,$1
22746410c867Schristos	 xor	$19,$21
22756410c867Schristos	rotr	$6,$3,27
22766410c867Schristos	addu	$2,$25
22776410c867Schristos	 xor	$19,$11
22786410c867Schristos	xor	$25,$24,$1
22796410c867Schristos	addu	$2,$6
22806410c867Schristos	 xor	$19,$16
22816410c867Schristos	and	$25,$7
22826410c867Schristos	addu	$2,$18
22836410c867Schristos	 rotr	$19,$19,31
22846410c867Schristos	rotr	$7,$7,2
22856410c867Schristos	addu	$2,$25
22866410c867Schristos#else
22876410c867Schristos	 xor	$19,$21
22886410c867Schristos	sll	$25,$3,5	# 58
22896410c867Schristos	addu	$2,$31
22906410c867Schristos	srl	$6,$3,27
22916410c867Schristos	addu	$2,$25
22926410c867Schristos	 xor	$19,$11
22936410c867Schristos	and	$25,$24,$1
22946410c867Schristos	addu	$2,$6
22956410c867Schristos	 xor	$19,$16
22966410c867Schristos	sll	$30,$7,30
22976410c867Schristos	addu	$2,$25
22986410c867Schristos	 srl	$6,$19,31
22996410c867Schristos	xor	$25,$24,$1
23006410c867Schristos	 addu	$19,$19
23016410c867Schristos	and	$25,$7
23026410c867Schristos	srl	$7,$7,2
23036410c867Schristos	 or	$19,$6
23046410c867Schristos	addu	$2,$18
23056410c867Schristos	or	$7,$30
23066410c867Schristos	addu	$2,$25
23076410c867Schristos#endif
23086410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
23096410c867Schristos	addu	$1,$31		# 59
23106410c867Schristos	and	$25,$7,$24
23116410c867Schristos	 xor	$20,$22
23126410c867Schristos	rotr	$6,$2,27
23136410c867Schristos	addu	$1,$25
23146410c867Schristos	 xor	$20,$12
23156410c867Schristos	xor	$25,$7,$24
23166410c867Schristos	addu	$1,$6
23176410c867Schristos	 xor	$20,$17
23186410c867Schristos	and	$25,$3
23196410c867Schristos	addu	$1,$19
23206410c867Schristos	 rotr	$20,$20,31
23216410c867Schristos	rotr	$3,$3,2
23226410c867Schristos	addu	$1,$25
23236410c867Schristos#else
23246410c867Schristos	 xor	$20,$22
23256410c867Schristos	sll	$25,$2,5	# 59
23266410c867Schristos	addu	$1,$31
23276410c867Schristos	srl	$6,$2,27
23286410c867Schristos	addu	$1,$25
23296410c867Schristos	 xor	$20,$12
23306410c867Schristos	and	$25,$7,$24
23316410c867Schristos	addu	$1,$6
23326410c867Schristos	 xor	$20,$17
23336410c867Schristos	sll	$30,$3,30
23346410c867Schristos	addu	$1,$25
23356410c867Schristos	 srl	$6,$20,31
23366410c867Schristos	xor	$25,$7,$24
23376410c867Schristos	 addu	$20,$20
23386410c867Schristos	and	$25,$3
23396410c867Schristos	srl	$3,$3,2
23406410c867Schristos	 or	$20,$6
23416410c867Schristos	addu	$1,$19
23426410c867Schristos	or	$3,$30
23436410c867Schristos	addu	$1,$25
23446410c867Schristos#endif
23456410c867Schristos	lui	$31,0xca62
23466410c867Schristos	ori	$31,0xc1d6	# K_60_79
23476410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
23486410c867Schristos	 xor	$21,$23
23496410c867Schristos	addu	$24,$31		# 60
23506410c867Schristos	rotr	$6,$1,27
23516410c867Schristos	 xor	$21,$13
23526410c867Schristos	xor	$25,$3,$7
23536410c867Schristos	addu	$24,$6
23546410c867Schristos	 xor	$21,$18
23556410c867Schristos	xor	$25,$2
23566410c867Schristos	addu	$24,$20
23576410c867Schristos	 rotr	$21,$21,31
23586410c867Schristos	rotr	$2,$2,2
23596410c867Schristos	addu	$24,$25
23606410c867Schristos#else
23616410c867Schristos	 xor	$21,$23
23626410c867Schristos	sll	$25,$1,5	# 60
23636410c867Schristos	addu	$24,$31
23646410c867Schristos	srl	$6,$1,27
23656410c867Schristos	addu	$24,$25
23666410c867Schristos	 xor	$21,$13
23676410c867Schristos	xor	$25,$3,$7
23686410c867Schristos	addu	$24,$6
23696410c867Schristos	 xor	$21,$18
23706410c867Schristos	sll	$30,$2,30
23716410c867Schristos	xor	$25,$2
23726410c867Schristos	 srl	$6,$21,31
23736410c867Schristos	 addu	$21,$21
23746410c867Schristos	srl	$2,$2,2
23756410c867Schristos	addu	$24,$20
23766410c867Schristos	 or	$21,$6
23776410c867Schristos	or	$2,$30
23786410c867Schristos	addu	$24,$25
23796410c867Schristos#endif
23806410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
23816410c867Schristos	 xor	$22,$8
23826410c867Schristos	addu	$7,$31		# 61
23836410c867Schristos	rotr	$6,$24,27
23846410c867Schristos	 xor	$22,$14
23856410c867Schristos	xor	$25,$2,$3
23866410c867Schristos	addu	$7,$6
23876410c867Schristos	 xor	$22,$19
23886410c867Schristos	xor	$25,$1
23896410c867Schristos	addu	$7,$21
23906410c867Schristos	 rotr	$22,$22,31
23916410c867Schristos	rotr	$1,$1,2
23926410c867Schristos	addu	$7,$25
23936410c867Schristos#else
23946410c867Schristos	 xor	$22,$8
23956410c867Schristos	sll	$25,$24,5	# 61
23966410c867Schristos	addu	$7,$31
23976410c867Schristos	srl	$6,$24,27
23986410c867Schristos	addu	$7,$25
23996410c867Schristos	 xor	$22,$14
24006410c867Schristos	xor	$25,$2,$3
24016410c867Schristos	addu	$7,$6
24026410c867Schristos	 xor	$22,$19
24036410c867Schristos	sll	$30,$1,30
24046410c867Schristos	xor	$25,$1
24056410c867Schristos	 srl	$6,$22,31
24066410c867Schristos	 addu	$22,$22
24076410c867Schristos	srl	$1,$1,2
24086410c867Schristos	addu	$7,$21
24096410c867Schristos	 or	$22,$6
24106410c867Schristos	or	$1,$30
24116410c867Schristos	addu	$7,$25
24126410c867Schristos#endif
24136410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
24146410c867Schristos	 xor	$23,$9
24156410c867Schristos	addu	$3,$31		# 62
24166410c867Schristos	rotr	$6,$7,27
24176410c867Schristos	 xor	$23,$15
24186410c867Schristos	xor	$25,$1,$2
24196410c867Schristos	addu	$3,$6
24206410c867Schristos	 xor	$23,$20
24216410c867Schristos	xor	$25,$24
24226410c867Schristos	addu	$3,$22
24236410c867Schristos	 rotr	$23,$23,31
24246410c867Schristos	rotr	$24,$24,2
24256410c867Schristos	addu	$3,$25
24266410c867Schristos#else
24276410c867Schristos	 xor	$23,$9
24286410c867Schristos	sll	$25,$7,5	# 62
24296410c867Schristos	addu	$3,$31
24306410c867Schristos	srl	$6,$7,27
24316410c867Schristos	addu	$3,$25
24326410c867Schristos	 xor	$23,$15
24336410c867Schristos	xor	$25,$1,$2
24346410c867Schristos	addu	$3,$6
24356410c867Schristos	 xor	$23,$20
24366410c867Schristos	sll	$30,$24,30
24376410c867Schristos	xor	$25,$24
24386410c867Schristos	 srl	$6,$23,31
24396410c867Schristos	 addu	$23,$23
24406410c867Schristos	srl	$24,$24,2
24416410c867Schristos	addu	$3,$22
24426410c867Schristos	 or	$23,$6
24436410c867Schristos	or	$24,$30
24446410c867Schristos	addu	$3,$25
24456410c867Schristos#endif
24466410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
24476410c867Schristos	 xor	$8,$10
24486410c867Schristos	addu	$2,$31		# 63
24496410c867Schristos	rotr	$6,$3,27
24506410c867Schristos	 xor	$8,$16
24516410c867Schristos	xor	$25,$24,$1
24526410c867Schristos	addu	$2,$6
24536410c867Schristos	 xor	$8,$21
24546410c867Schristos	xor	$25,$7
24556410c867Schristos	addu	$2,$23
24566410c867Schristos	 rotr	$8,$8,31
24576410c867Schristos	rotr	$7,$7,2
24586410c867Schristos	addu	$2,$25
24596410c867Schristos#else
24606410c867Schristos	 xor	$8,$10
24616410c867Schristos	sll	$25,$3,5	# 63
24626410c867Schristos	addu	$2,$31
24636410c867Schristos	srl	$6,$3,27
24646410c867Schristos	addu	$2,$25
24656410c867Schristos	 xor	$8,$16
24666410c867Schristos	xor	$25,$24,$1
24676410c867Schristos	addu	$2,$6
24686410c867Schristos	 xor	$8,$21
24696410c867Schristos	sll	$30,$7,30
24706410c867Schristos	xor	$25,$7
24716410c867Schristos	 srl	$6,$8,31
24726410c867Schristos	 addu	$8,$8
24736410c867Schristos	srl	$7,$7,2
24746410c867Schristos	addu	$2,$23
24756410c867Schristos	 or	$8,$6
24766410c867Schristos	or	$7,$30
24776410c867Schristos	addu	$2,$25
24786410c867Schristos#endif
24796410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
24806410c867Schristos	 xor	$9,$11
24816410c867Schristos	addu	$1,$31		# 64
24826410c867Schristos	rotr	$6,$2,27
24836410c867Schristos	 xor	$9,$17
24846410c867Schristos	xor	$25,$7,$24
24856410c867Schristos	addu	$1,$6
24866410c867Schristos	 xor	$9,$22
24876410c867Schristos	xor	$25,$3
24886410c867Schristos	addu	$1,$8
24896410c867Schristos	 rotr	$9,$9,31
24906410c867Schristos	rotr	$3,$3,2
24916410c867Schristos	addu	$1,$25
24926410c867Schristos#else
24936410c867Schristos	 xor	$9,$11
24946410c867Schristos	sll	$25,$2,5	# 64
24956410c867Schristos	addu	$1,$31
24966410c867Schristos	srl	$6,$2,27
24976410c867Schristos	addu	$1,$25
24986410c867Schristos	 xor	$9,$17
24996410c867Schristos	xor	$25,$7,$24
25006410c867Schristos	addu	$1,$6
25016410c867Schristos	 xor	$9,$22
25026410c867Schristos	sll	$30,$3,30
25036410c867Schristos	xor	$25,$3
25046410c867Schristos	 srl	$6,$9,31
25056410c867Schristos	 addu	$9,$9
25066410c867Schristos	srl	$3,$3,2
25076410c867Schristos	addu	$1,$8
25086410c867Schristos	 or	$9,$6
25096410c867Schristos	or	$3,$30
25106410c867Schristos	addu	$1,$25
25116410c867Schristos#endif
25126410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
25136410c867Schristos	 xor	$10,$12
25146410c867Schristos	addu	$24,$31		# 65
25156410c867Schristos	rotr	$6,$1,27
25166410c867Schristos	 xor	$10,$18
25176410c867Schristos	xor	$25,$3,$7
25186410c867Schristos	addu	$24,$6
25196410c867Schristos	 xor	$10,$23
25206410c867Schristos	xor	$25,$2
25216410c867Schristos	addu	$24,$9
25226410c867Schristos	 rotr	$10,$10,31
25236410c867Schristos	rotr	$2,$2,2
25246410c867Schristos	addu	$24,$25
25256410c867Schristos#else
25266410c867Schristos	 xor	$10,$12
25276410c867Schristos	sll	$25,$1,5	# 65
25286410c867Schristos	addu	$24,$31
25296410c867Schristos	srl	$6,$1,27
25306410c867Schristos	addu	$24,$25
25316410c867Schristos	 xor	$10,$18
25326410c867Schristos	xor	$25,$3,$7
25336410c867Schristos	addu	$24,$6
25346410c867Schristos	 xor	$10,$23
25356410c867Schristos	sll	$30,$2,30
25366410c867Schristos	xor	$25,$2
25376410c867Schristos	 srl	$6,$10,31
25386410c867Schristos	 addu	$10,$10
25396410c867Schristos	srl	$2,$2,2
25406410c867Schristos	addu	$24,$9
25416410c867Schristos	 or	$10,$6
25426410c867Schristos	or	$2,$30
25436410c867Schristos	addu	$24,$25
25446410c867Schristos#endif
25456410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
25466410c867Schristos	 xor	$11,$13
25476410c867Schristos	addu	$7,$31		# 66
25486410c867Schristos	rotr	$6,$24,27
25496410c867Schristos	 xor	$11,$19
25506410c867Schristos	xor	$25,$2,$3
25516410c867Schristos	addu	$7,$6
25526410c867Schristos	 xor	$11,$8
25536410c867Schristos	xor	$25,$1
25546410c867Schristos	addu	$7,$10
25556410c867Schristos	 rotr	$11,$11,31
25566410c867Schristos	rotr	$1,$1,2
25576410c867Schristos	addu	$7,$25
25586410c867Schristos#else
25596410c867Schristos	 xor	$11,$13
25606410c867Schristos	sll	$25,$24,5	# 66
25616410c867Schristos	addu	$7,$31
25626410c867Schristos	srl	$6,$24,27
25636410c867Schristos	addu	$7,$25
25646410c867Schristos	 xor	$11,$19
25656410c867Schristos	xor	$25,$2,$3
25666410c867Schristos	addu	$7,$6
25676410c867Schristos	 xor	$11,$8
25686410c867Schristos	sll	$30,$1,30
25696410c867Schristos	xor	$25,$1
25706410c867Schristos	 srl	$6,$11,31
25716410c867Schristos	 addu	$11,$11
25726410c867Schristos	srl	$1,$1,2
25736410c867Schristos	addu	$7,$10
25746410c867Schristos	 or	$11,$6
25756410c867Schristos	or	$1,$30
25766410c867Schristos	addu	$7,$25
25776410c867Schristos#endif
25786410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
25796410c867Schristos	 xor	$12,$14
25806410c867Schristos	addu	$3,$31		# 67
25816410c867Schristos	rotr	$6,$7,27
25826410c867Schristos	 xor	$12,$20
25836410c867Schristos	xor	$25,$1,$2
25846410c867Schristos	addu	$3,$6
25856410c867Schristos	 xor	$12,$9
25866410c867Schristos	xor	$25,$24
25876410c867Schristos	addu	$3,$11
25886410c867Schristos	 rotr	$12,$12,31
25896410c867Schristos	rotr	$24,$24,2
25906410c867Schristos	addu	$3,$25
25916410c867Schristos#else
25926410c867Schristos	 xor	$12,$14
25936410c867Schristos	sll	$25,$7,5	# 67
25946410c867Schristos	addu	$3,$31
25956410c867Schristos	srl	$6,$7,27
25966410c867Schristos	addu	$3,$25
25976410c867Schristos	 xor	$12,$20
25986410c867Schristos	xor	$25,$1,$2
25996410c867Schristos	addu	$3,$6
26006410c867Schristos	 xor	$12,$9
26016410c867Schristos	sll	$30,$24,30
26026410c867Schristos	xor	$25,$24
26036410c867Schristos	 srl	$6,$12,31
26046410c867Schristos	 addu	$12,$12
26056410c867Schristos	srl	$24,$24,2
26066410c867Schristos	addu	$3,$11
26076410c867Schristos	 or	$12,$6
26086410c867Schristos	or	$24,$30
26096410c867Schristos	addu	$3,$25
26106410c867Schristos#endif
26116410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
26126410c867Schristos	 xor	$13,$15
26136410c867Schristos	addu	$2,$31		# 68
26146410c867Schristos	rotr	$6,$3,27
26156410c867Schristos	 xor	$13,$21
26166410c867Schristos	xor	$25,$24,$1
26176410c867Schristos	addu	$2,$6
26186410c867Schristos	 xor	$13,$10
26196410c867Schristos	xor	$25,$7
26206410c867Schristos	addu	$2,$12
26216410c867Schristos	 rotr	$13,$13,31
26226410c867Schristos	rotr	$7,$7,2
26236410c867Schristos	addu	$2,$25
26246410c867Schristos#else
26256410c867Schristos	 xor	$13,$15
26266410c867Schristos	sll	$25,$3,5	# 68
26276410c867Schristos	addu	$2,$31
26286410c867Schristos	srl	$6,$3,27
26296410c867Schristos	addu	$2,$25
26306410c867Schristos	 xor	$13,$21
26316410c867Schristos	xor	$25,$24,$1
26326410c867Schristos	addu	$2,$6
26336410c867Schristos	 xor	$13,$10
26346410c867Schristos	sll	$30,$7,30
26356410c867Schristos	xor	$25,$7
26366410c867Schristos	 srl	$6,$13,31
26376410c867Schristos	 addu	$13,$13
26386410c867Schristos	srl	$7,$7,2
26396410c867Schristos	addu	$2,$12
26406410c867Schristos	 or	$13,$6
26416410c867Schristos	or	$7,$30
26426410c867Schristos	addu	$2,$25
26436410c867Schristos#endif
26446410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
26456410c867Schristos	 xor	$14,$16
26466410c867Schristos	addu	$1,$31		# 69
26476410c867Schristos	rotr	$6,$2,27
26486410c867Schristos	 xor	$14,$22
26496410c867Schristos	xor	$25,$7,$24
26506410c867Schristos	addu	$1,$6
26516410c867Schristos	 xor	$14,$11
26526410c867Schristos	xor	$25,$3
26536410c867Schristos	addu	$1,$13
26546410c867Schristos	 rotr	$14,$14,31
26556410c867Schristos	rotr	$3,$3,2
26566410c867Schristos	addu	$1,$25
26576410c867Schristos#else
26586410c867Schristos	 xor	$14,$16
26596410c867Schristos	sll	$25,$2,5	# 69
26606410c867Schristos	addu	$1,$31
26616410c867Schristos	srl	$6,$2,27
26626410c867Schristos	addu	$1,$25
26636410c867Schristos	 xor	$14,$22
26646410c867Schristos	xor	$25,$7,$24
26656410c867Schristos	addu	$1,$6
26666410c867Schristos	 xor	$14,$11
26676410c867Schristos	sll	$30,$3,30
26686410c867Schristos	xor	$25,$3
26696410c867Schristos	 srl	$6,$14,31
26706410c867Schristos	 addu	$14,$14
26716410c867Schristos	srl	$3,$3,2
26726410c867Schristos	addu	$1,$13
26736410c867Schristos	 or	$14,$6
26746410c867Schristos	or	$3,$30
26756410c867Schristos	addu	$1,$25
26766410c867Schristos#endif
26776410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
26786410c867Schristos	 xor	$15,$17
26796410c867Schristos	addu	$24,$31		# 70
26806410c867Schristos	rotr	$6,$1,27
26816410c867Schristos	 xor	$15,$23
26826410c867Schristos	xor	$25,$3,$7
26836410c867Schristos	addu	$24,$6
26846410c867Schristos	 xor	$15,$12
26856410c867Schristos	xor	$25,$2
26866410c867Schristos	addu	$24,$14
26876410c867Schristos	 rotr	$15,$15,31
26886410c867Schristos	rotr	$2,$2,2
26896410c867Schristos	addu	$24,$25
26906410c867Schristos#else
26916410c867Schristos	 xor	$15,$17
26926410c867Schristos	sll	$25,$1,5	# 70
26936410c867Schristos	addu	$24,$31
26946410c867Schristos	srl	$6,$1,27
26956410c867Schristos	addu	$24,$25
26966410c867Schristos	 xor	$15,$23
26976410c867Schristos	xor	$25,$3,$7
26986410c867Schristos	addu	$24,$6
26996410c867Schristos	 xor	$15,$12
27006410c867Schristos	sll	$30,$2,30
27016410c867Schristos	xor	$25,$2
27026410c867Schristos	 srl	$6,$15,31
27036410c867Schristos	 addu	$15,$15
27046410c867Schristos	srl	$2,$2,2
27056410c867Schristos	addu	$24,$14
27066410c867Schristos	 or	$15,$6
27076410c867Schristos	or	$2,$30
27086410c867Schristos	addu	$24,$25
27096410c867Schristos#endif
27106410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
27116410c867Schristos	 xor	$16,$18
27126410c867Schristos	addu	$7,$31		# 71
27136410c867Schristos	rotr	$6,$24,27
27146410c867Schristos	 xor	$16,$8
27156410c867Schristos	xor	$25,$2,$3
27166410c867Schristos	addu	$7,$6
27176410c867Schristos	 xor	$16,$13
27186410c867Schristos	xor	$25,$1
27196410c867Schristos	addu	$7,$15
27206410c867Schristos	 rotr	$16,$16,31
27216410c867Schristos	rotr	$1,$1,2
27226410c867Schristos	addu	$7,$25
27236410c867Schristos#else
27246410c867Schristos	 xor	$16,$18
27256410c867Schristos	sll	$25,$24,5	# 71
27266410c867Schristos	addu	$7,$31
27276410c867Schristos	srl	$6,$24,27
27286410c867Schristos	addu	$7,$25
27296410c867Schristos	 xor	$16,$8
27306410c867Schristos	xor	$25,$2,$3
27316410c867Schristos	addu	$7,$6
27326410c867Schristos	 xor	$16,$13
27336410c867Schristos	sll	$30,$1,30
27346410c867Schristos	xor	$25,$1
27356410c867Schristos	 srl	$6,$16,31
27366410c867Schristos	 addu	$16,$16
27376410c867Schristos	srl	$1,$1,2
27386410c867Schristos	addu	$7,$15
27396410c867Schristos	 or	$16,$6
27406410c867Schristos	or	$1,$30
27416410c867Schristos	addu	$7,$25
27426410c867Schristos#endif
27436410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
27446410c867Schristos	 xor	$17,$19
27456410c867Schristos	addu	$3,$31		# 72
27466410c867Schristos	rotr	$6,$7,27
27476410c867Schristos	 xor	$17,$9
27486410c867Schristos	xor	$25,$1,$2
27496410c867Schristos	addu	$3,$6
27506410c867Schristos	 xor	$17,$14
27516410c867Schristos	xor	$25,$24
27526410c867Schristos	addu	$3,$16
27536410c867Schristos	 rotr	$17,$17,31
27546410c867Schristos	rotr	$24,$24,2
27556410c867Schristos	addu	$3,$25
27566410c867Schristos#else
27576410c867Schristos	 xor	$17,$19
27586410c867Schristos	sll	$25,$7,5	# 72
27596410c867Schristos	addu	$3,$31
27606410c867Schristos	srl	$6,$7,27
27616410c867Schristos	addu	$3,$25
27626410c867Schristos	 xor	$17,$9
27636410c867Schristos	xor	$25,$1,$2
27646410c867Schristos	addu	$3,$6
27656410c867Schristos	 xor	$17,$14
27666410c867Schristos	sll	$30,$24,30
27676410c867Schristos	xor	$25,$24
27686410c867Schristos	 srl	$6,$17,31
27696410c867Schristos	 addu	$17,$17
27706410c867Schristos	srl	$24,$24,2
27716410c867Schristos	addu	$3,$16
27726410c867Schristos	 or	$17,$6
27736410c867Schristos	or	$24,$30
27746410c867Schristos	addu	$3,$25
27756410c867Schristos#endif
27766410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
27776410c867Schristos	 xor	$18,$20
27786410c867Schristos	addu	$2,$31		# 73
27796410c867Schristos	rotr	$6,$3,27
27806410c867Schristos	 xor	$18,$10
27816410c867Schristos	xor	$25,$24,$1
27826410c867Schristos	addu	$2,$6
27836410c867Schristos	 xor	$18,$15
27846410c867Schristos	xor	$25,$7
27856410c867Schristos	addu	$2,$17
27866410c867Schristos	 rotr	$18,$18,31
27876410c867Schristos	rotr	$7,$7,2
27886410c867Schristos	addu	$2,$25
27896410c867Schristos#else
27906410c867Schristos	 xor	$18,$20
27916410c867Schristos	sll	$25,$3,5	# 73
27926410c867Schristos	addu	$2,$31
27936410c867Schristos	srl	$6,$3,27
27946410c867Schristos	addu	$2,$25
27956410c867Schristos	 xor	$18,$10
27966410c867Schristos	xor	$25,$24,$1
27976410c867Schristos	addu	$2,$6
27986410c867Schristos	 xor	$18,$15
27996410c867Schristos	sll	$30,$7,30
28006410c867Schristos	xor	$25,$7
28016410c867Schristos	 srl	$6,$18,31
28026410c867Schristos	 addu	$18,$18
28036410c867Schristos	srl	$7,$7,2
28046410c867Schristos	addu	$2,$17
28056410c867Schristos	 or	$18,$6
28066410c867Schristos	or	$7,$30
28076410c867Schristos	addu	$2,$25
28086410c867Schristos#endif
28096410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
28106410c867Schristos	 xor	$19,$21
28116410c867Schristos	addu	$1,$31		# 74
28126410c867Schristos	rotr	$6,$2,27
28136410c867Schristos	 xor	$19,$11
28146410c867Schristos	xor	$25,$7,$24
28156410c867Schristos	addu	$1,$6
28166410c867Schristos	 xor	$19,$16
28176410c867Schristos	xor	$25,$3
28186410c867Schristos	addu	$1,$18
28196410c867Schristos	 rotr	$19,$19,31
28206410c867Schristos	rotr	$3,$3,2
28216410c867Schristos	addu	$1,$25
28226410c867Schristos#else
28236410c867Schristos	 xor	$19,$21
28246410c867Schristos	sll	$25,$2,5	# 74
28256410c867Schristos	addu	$1,$31
28266410c867Schristos	srl	$6,$2,27
28276410c867Schristos	addu	$1,$25
28286410c867Schristos	 xor	$19,$11
28296410c867Schristos	xor	$25,$7,$24
28306410c867Schristos	addu	$1,$6
28316410c867Schristos	 xor	$19,$16
28326410c867Schristos	sll	$30,$3,30
28336410c867Schristos	xor	$25,$3
28346410c867Schristos	 srl	$6,$19,31
28356410c867Schristos	 addu	$19,$19
28366410c867Schristos	srl	$3,$3,2
28376410c867Schristos	addu	$1,$18
28386410c867Schristos	 or	$19,$6
28396410c867Schristos	or	$3,$30
28406410c867Schristos	addu	$1,$25
28416410c867Schristos#endif
28426410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
28436410c867Schristos	 xor	$20,$22
28446410c867Schristos	addu	$24,$31		# 75
28456410c867Schristos	rotr	$6,$1,27
28466410c867Schristos	 xor	$20,$12
28476410c867Schristos	xor	$25,$3,$7
28486410c867Schristos	addu	$24,$6
28496410c867Schristos	 xor	$20,$17
28506410c867Schristos	xor	$25,$2
28516410c867Schristos	addu	$24,$19
28526410c867Schristos	 rotr	$20,$20,31
28536410c867Schristos	rotr	$2,$2,2
28546410c867Schristos	addu	$24,$25
28556410c867Schristos#else
28566410c867Schristos	 xor	$20,$22
28576410c867Schristos	sll	$25,$1,5	# 75
28586410c867Schristos	addu	$24,$31
28596410c867Schristos	srl	$6,$1,27
28606410c867Schristos	addu	$24,$25
28616410c867Schristos	 xor	$20,$12
28626410c867Schristos	xor	$25,$3,$7
28636410c867Schristos	addu	$24,$6
28646410c867Schristos	 xor	$20,$17
28656410c867Schristos	sll	$30,$2,30
28666410c867Schristos	xor	$25,$2
28676410c867Schristos	 srl	$6,$20,31
28686410c867Schristos	 addu	$20,$20
28696410c867Schristos	srl	$2,$2,2
28706410c867Schristos	addu	$24,$19
28716410c867Schristos	 or	$20,$6
28726410c867Schristos	or	$2,$30
28736410c867Schristos	addu	$24,$25
28746410c867Schristos#endif
28756410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
28766410c867Schristos	 xor	$21,$23
28776410c867Schristos	addu	$7,$31		# 76
28786410c867Schristos	rotr	$6,$24,27
28796410c867Schristos	 xor	$21,$13
28806410c867Schristos	xor	$25,$2,$3
28816410c867Schristos	addu	$7,$6
28826410c867Schristos	 xor	$21,$18
28836410c867Schristos	xor	$25,$1
28846410c867Schristos	addu	$7,$20
28856410c867Schristos	 rotr	$21,$21,31
28866410c867Schristos	rotr	$1,$1,2
28876410c867Schristos	addu	$7,$25
28886410c867Schristos#else
28896410c867Schristos	 xor	$21,$23
28906410c867Schristos	sll	$25,$24,5	# 76
28916410c867Schristos	addu	$7,$31
28926410c867Schristos	srl	$6,$24,27
28936410c867Schristos	addu	$7,$25
28946410c867Schristos	 xor	$21,$13
28956410c867Schristos	xor	$25,$2,$3
28966410c867Schristos	addu	$7,$6
28976410c867Schristos	 xor	$21,$18
28986410c867Schristos	sll	$30,$1,30
28996410c867Schristos	xor	$25,$1
29006410c867Schristos	 srl	$6,$21,31
29016410c867Schristos	 addu	$21,$21
29026410c867Schristos	srl	$1,$1,2
29036410c867Schristos	addu	$7,$20
29046410c867Schristos	 or	$21,$6
29056410c867Schristos	or	$1,$30
29066410c867Schristos	addu	$7,$25
29076410c867Schristos#endif
29086410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
29096410c867Schristos	 xor	$22,$8
29106410c867Schristos	addu	$3,$31		# 77
29116410c867Schristos	rotr	$6,$7,27
29126410c867Schristos	 xor	$22,$14
29136410c867Schristos	xor	$25,$1,$2
29146410c867Schristos	addu	$3,$6
29156410c867Schristos	 xor	$22,$19
29166410c867Schristos	xor	$25,$24
29176410c867Schristos	addu	$3,$21
29186410c867Schristos	 rotr	$22,$22,31
29196410c867Schristos	rotr	$24,$24,2
29206410c867Schristos	addu	$3,$25
29216410c867Schristos#else
29226410c867Schristos	 xor	$22,$8
29236410c867Schristos	sll	$25,$7,5	# 77
29246410c867Schristos	addu	$3,$31
29256410c867Schristos	srl	$6,$7,27
29266410c867Schristos	addu	$3,$25
29276410c867Schristos	 xor	$22,$14
29286410c867Schristos	xor	$25,$1,$2
29296410c867Schristos	addu	$3,$6
29306410c867Schristos	 xor	$22,$19
29316410c867Schristos	sll	$30,$24,30
29326410c867Schristos	xor	$25,$24
29336410c867Schristos	 srl	$6,$22,31
29346410c867Schristos	 addu	$22,$22
29356410c867Schristos	srl	$24,$24,2
29366410c867Schristos	addu	$3,$21
29376410c867Schristos	 or	$22,$6
29386410c867Schristos	or	$24,$30
29396410c867Schristos	addu	$3,$25
29406410c867Schristos#endif
29416410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
29426410c867Schristos	 xor	$23,$9
29436410c867Schristos	addu	$2,$31		# 78
29446410c867Schristos	rotr	$6,$3,27
29456410c867Schristos	 xor	$23,$15
29466410c867Schristos	xor	$25,$24,$1
29476410c867Schristos	addu	$2,$6
29486410c867Schristos	 xor	$23,$20
29496410c867Schristos	xor	$25,$7
29506410c867Schristos	addu	$2,$22
29516410c867Schristos	 rotr	$23,$23,31
29526410c867Schristos	rotr	$7,$7,2
29536410c867Schristos	addu	$2,$25
29546410c867Schristos#else
29556410c867Schristos	 xor	$23,$9
29566410c867Schristos	sll	$25,$3,5	# 78
29576410c867Schristos	addu	$2,$31
29586410c867Schristos	srl	$6,$3,27
29596410c867Schristos	addu	$2,$25
29606410c867Schristos	 xor	$23,$15
29616410c867Schristos	xor	$25,$24,$1
29626410c867Schristos	addu	$2,$6
29636410c867Schristos	 xor	$23,$20
29646410c867Schristos	sll	$30,$7,30
29656410c867Schristos	xor	$25,$7
29666410c867Schristos	 srl	$6,$23,31
29676410c867Schristos	 addu	$23,$23
29686410c867Schristos	srl	$7,$7,2
29696410c867Schristos	addu	$2,$22
29706410c867Schristos	 or	$23,$6
29716410c867Schristos	or	$7,$30
29726410c867Schristos	addu	$2,$25
29736410c867Schristos#endif
29746410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
29756410c867Schristos	 lw	$8,0($4)
29766410c867Schristos	addu	$1,$31		# 79
29776410c867Schristos	 lw	$9,4($4)
29786410c867Schristos	rotr	$6,$2,27
29796410c867Schristos	 lw	$10,8($4)
29806410c867Schristos	xor	$25,$7,$24
29816410c867Schristos	addu	$1,$6
29826410c867Schristos	 lw	$11,12($4)
29836410c867Schristos	xor	$25,$3
29846410c867Schristos	addu	$1,$23
29856410c867Schristos	 lw	$12,16($4)
29866410c867Schristos	rotr	$3,$3,2
29876410c867Schristos	addu	$1,$25
29886410c867Schristos#else
29896410c867Schristos	 lw	$8,0($4)
29906410c867Schristos	sll	$25,$2,5	# 79
29916410c867Schristos	addu	$1,$31
29926410c867Schristos	 lw	$9,4($4)
29936410c867Schristos	srl	$6,$2,27
29946410c867Schristos	addu	$1,$25
29956410c867Schristos	 lw	$10,8($4)
29966410c867Schristos	xor	$25,$7,$24
29976410c867Schristos	addu	$1,$6
29986410c867Schristos	 lw	$11,12($4)
29996410c867Schristos	sll	$30,$3,30
30006410c867Schristos	xor	$25,$3
30016410c867Schristos	 lw	$12,16($4)
30026410c867Schristos	srl	$3,$3,2
30036410c867Schristos	addu	$1,$23
30046410c867Schristos	or	$3,$30
30056410c867Schristos	addu	$1,$25
30066410c867Schristos#endif
3007*e0ea3921Schristos	daddu $5,64
30086410c867Schristos	ld	$6,0($29)
30096410c867Schristos
30106410c867Schristos	addu	$1,$8
30116410c867Schristos	addu	$2,$9
30126410c867Schristos	sw	$1,0($4)
30136410c867Schristos	addu	$3,$10
30146410c867Schristos	addu	$7,$11
30156410c867Schristos	sw	$2,4($4)
30166410c867Schristos	addu	$24,$12
30176410c867Schristos	sw	$3,8($4)
30186410c867Schristos	sw	$7,12($4)
30196410c867Schristos	sw	$24,16($4)
30206410c867Schristos	.set	noreorder
30216410c867Schristos	bne	$5,$6,.Loop
30226410c867Schristos	nop
30236410c867Schristos
30246410c867Schristos	.set	noreorder
30256410c867Schristos	ld	$31,(16-1)*8($29)
30266410c867Schristos	ld	$30,(16-2)*8($29)
30276410c867Schristos	ld	$23,(16-3)*8($29)
30286410c867Schristos	ld	$22,(16-4)*8($29)
30296410c867Schristos	ld	$21,(16-5)*8($29)
30306410c867Schristos	ld	$20,(16-6)*8($29)
30316410c867Schristos	ld	$19,(16-7)*8($29)
30326410c867Schristos	ld	$18,(16-8)*8($29)
30336410c867Schristos	ld	$17,(16-9)*8($29)
30346410c867Schristos	ld	$16,(16-10)*8($29)
30356410c867Schristos	jr	$31
3036*e0ea3921Schristos	daddu $29,16*8
30376410c867Schristos.end	sha1_block_data_order
30386410c867Schristos.rdata
30396410c867Schristos.asciiz	"SHA1 for MIPS, CRYPTOGAMS by <appro@openssl.org>"
3040