xref: /netbsd-src/crypto/external/bsd/openssl/lib/libcrypto/arch/mips/sha1-mips.S (revision e0ea3921ea68e51b93ffc215f08ae1647c8e1796)
1*e0ea3921Schristos#include "mips_arch.h"
276c4f342Schristos
376c4f342Schristos.text
476c4f342Schristos
576c4f342Schristos.set	noat
676c4f342Schristos.set	noreorder
776c4f342Schristos.align	5
876c4f342Schristos.globl	sha1_block_data_order
976c4f342Schristos.ent	sha1_block_data_order
1076c4f342Schristossha1_block_data_order:
1176c4f342Schristos	.frame	$29,16*4,$31
1276c4f342Schristos	.mask	0xc0ff0000,-4
1376c4f342Schristos	.set	noreorder
14*e0ea3921Schristos	subu $29,16*4
1576c4f342Schristos	sw	$31,(16-1)*4($29)
1676c4f342Schristos	sw	$30,(16-2)*4($29)
1776c4f342Schristos	sw	$23,(16-3)*4($29)
1876c4f342Schristos	sw	$22,(16-4)*4($29)
1976c4f342Schristos	sw	$21,(16-5)*4($29)
2076c4f342Schristos	sw	$20,(16-6)*4($29)
2176c4f342Schristos	sw	$19,(16-7)*4($29)
2276c4f342Schristos	sw	$18,(16-8)*4($29)
2376c4f342Schristos	sw	$17,(16-9)*4($29)
2476c4f342Schristos	sw	$16,(16-10)*4($29)
2576c4f342Schristos	sll $6,6
26*e0ea3921Schristos	addu $6,$5
2776c4f342Schristos	sw	$6,0($29)
2876c4f342Schristos	lw	$1,0($4)
2976c4f342Schristos	lw	$2,4($4)
3076c4f342Schristos	lw	$3,8($4)
3176c4f342Schristos	lw	$7,12($4)
3276c4f342Schristos	b	.Loop
3376c4f342Schristos	lw	$24,16($4)
3476c4f342Schristos.align	4
3576c4f342Schristos.Loop:
3676c4f342Schristos	.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
4276c4f342Schristos	lwl	$8,3($5)
4376c4f342Schristos	lui	$31,0x5a82
4476c4f342Schristos	lwr	$8,0($5)
4576c4f342Schristos	ori	$31,0x7999	# K_00_19
46*e0ea3921Schristos#endif
4776c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
4876c4f342Schristos	wsbh	$8,$8	# byte swap(0)
4976c4f342Schristos	rotr	$8,$8,16
5076c4f342Schristos#else
5176c4f342Schristos	srl	$25,$8,24	# byte swap(0)
5276c4f342Schristos	srl	$6,$8,8
5376c4f342Schristos	andi	$30,$8,0xFF00
5476c4f342Schristos	sll	$8,$8,24
5576c4f342Schristos	andi	$6,0xFF00
5676c4f342Schristos	sll	$30,$30,8
5776c4f342Schristos	or	$8,$25
5876c4f342Schristos	or	$6,$30
5976c4f342Schristos	or	$8,$6
6076c4f342Schristos#endif
6176c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
6276c4f342Schristos	addu	$24,$31		# 0
6376c4f342Schristos	xor	$25,$3,$7
6476c4f342Schristos	rotr	$6,$1,27
6576c4f342Schristos	and	$25,$2
6676c4f342Schristos	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)
7176c4f342Schristos	 lwr	$9,1*4+0($5)
72*e0ea3921Schristos#endif
7376c4f342Schristos	xor	$25,$7
7476c4f342Schristos	addu	$24,$8
7576c4f342Schristos	rotr	$2,$2,2
7676c4f342Schristos	addu	$24,$25
7776c4f342Schristos#else
7876c4f342Schristos	 lwl	$9,1*4+3($5)
7976c4f342Schristos	sll	$25,$1,5	# 0
8076c4f342Schristos	addu	$24,$31
8176c4f342Schristos	 lwr	$9,1*4+0($5)
8276c4f342Schristos	srl	$6,$1,27
8376c4f342Schristos	addu	$24,$25
8476c4f342Schristos	xor	$25,$3,$7
8576c4f342Schristos	addu	$24,$6
8676c4f342Schristos	sll	$30,$2,30
8776c4f342Schristos	and	$25,$2
8876c4f342Schristos	srl	$2,$2,2
8976c4f342Schristos	xor	$25,$7
9076c4f342Schristos	addu	$24,$8
9176c4f342Schristos	or	$2,$30
9276c4f342Schristos	addu	$24,$25
9376c4f342Schristos#endif
9476c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
9576c4f342Schristos	wsbh	$9,$9	# byte swap(1)
9676c4f342Schristos	rotr	$9,$9,16
9776c4f342Schristos#else
9876c4f342Schristos	srl	$25,$9,24	# byte swap(1)
9976c4f342Schristos	srl	$6,$9,8
10076c4f342Schristos	andi	$30,$9,0xFF00
10176c4f342Schristos	sll	$9,$9,24
10276c4f342Schristos	andi	$6,0xFF00
10376c4f342Schristos	sll	$30,$30,8
10476c4f342Schristos	or	$9,$25
10576c4f342Schristos	or	$6,$30
10676c4f342Schristos	or	$9,$6
10776c4f342Schristos#endif
10876c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
10976c4f342Schristos	addu	$7,$31		# 1
11076c4f342Schristos	xor	$25,$2,$3
11176c4f342Schristos	rotr	$6,$24,27
11276c4f342Schristos	and	$25,$1
11376c4f342Schristos	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)
11876c4f342Schristos	 lwr	$10,2*4+0($5)
119*e0ea3921Schristos#endif
12076c4f342Schristos	xor	$25,$3
12176c4f342Schristos	addu	$7,$9
12276c4f342Schristos	rotr	$1,$1,2
12376c4f342Schristos	addu	$7,$25
12476c4f342Schristos#else
12576c4f342Schristos	 lwl	$10,2*4+3($5)
12676c4f342Schristos	sll	$25,$24,5	# 1
12776c4f342Schristos	addu	$7,$31
12876c4f342Schristos	 lwr	$10,2*4+0($5)
12976c4f342Schristos	srl	$6,$24,27
13076c4f342Schristos	addu	$7,$25
13176c4f342Schristos	xor	$25,$2,$3
13276c4f342Schristos	addu	$7,$6
13376c4f342Schristos	sll	$30,$1,30
13476c4f342Schristos	and	$25,$1
13576c4f342Schristos	srl	$1,$1,2
13676c4f342Schristos	xor	$25,$3
13776c4f342Schristos	addu	$7,$9
13876c4f342Schristos	or	$1,$30
13976c4f342Schristos	addu	$7,$25
14076c4f342Schristos#endif
14176c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
14276c4f342Schristos	wsbh	$10,$10	# byte swap(2)
14376c4f342Schristos	rotr	$10,$10,16
14476c4f342Schristos#else
14576c4f342Schristos	srl	$25,$10,24	# byte swap(2)
14676c4f342Schristos	srl	$6,$10,8
14776c4f342Schristos	andi	$30,$10,0xFF00
14876c4f342Schristos	sll	$10,$10,24
14976c4f342Schristos	andi	$6,0xFF00
15076c4f342Schristos	sll	$30,$30,8
15176c4f342Schristos	or	$10,$25
15276c4f342Schristos	or	$6,$30
15376c4f342Schristos	or	$10,$6
15476c4f342Schristos#endif
15576c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
15676c4f342Schristos	addu	$3,$31		# 2
15776c4f342Schristos	xor	$25,$1,$2
15876c4f342Schristos	rotr	$6,$7,27
15976c4f342Schristos	and	$25,$24
16076c4f342Schristos	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)
16576c4f342Schristos	 lwr	$11,3*4+0($5)
166*e0ea3921Schristos#endif
16776c4f342Schristos	xor	$25,$2
16876c4f342Schristos	addu	$3,$10
16976c4f342Schristos	rotr	$24,$24,2
17076c4f342Schristos	addu	$3,$25
17176c4f342Schristos#else
17276c4f342Schristos	 lwl	$11,3*4+3($5)
17376c4f342Schristos	sll	$25,$7,5	# 2
17476c4f342Schristos	addu	$3,$31
17576c4f342Schristos	 lwr	$11,3*4+0($5)
17676c4f342Schristos	srl	$6,$7,27
17776c4f342Schristos	addu	$3,$25
17876c4f342Schristos	xor	$25,$1,$2
17976c4f342Schristos	addu	$3,$6
18076c4f342Schristos	sll	$30,$24,30
18176c4f342Schristos	and	$25,$24
18276c4f342Schristos	srl	$24,$24,2
18376c4f342Schristos	xor	$25,$2
18476c4f342Schristos	addu	$3,$10
18576c4f342Schristos	or	$24,$30
18676c4f342Schristos	addu	$3,$25
18776c4f342Schristos#endif
18876c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
18976c4f342Schristos	wsbh	$11,$11	# byte swap(3)
19076c4f342Schristos	rotr	$11,$11,16
19176c4f342Schristos#else
19276c4f342Schristos	srl	$25,$11,24	# byte swap(3)
19376c4f342Schristos	srl	$6,$11,8
19476c4f342Schristos	andi	$30,$11,0xFF00
19576c4f342Schristos	sll	$11,$11,24
19676c4f342Schristos	andi	$6,0xFF00
19776c4f342Schristos	sll	$30,$30,8
19876c4f342Schristos	or	$11,$25
19976c4f342Schristos	or	$6,$30
20076c4f342Schristos	or	$11,$6
20176c4f342Schristos#endif
20276c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
20376c4f342Schristos	addu	$2,$31		# 3
20476c4f342Schristos	xor	$25,$24,$1
20576c4f342Schristos	rotr	$6,$3,27
20676c4f342Schristos	and	$25,$7
20776c4f342Schristos	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)
21276c4f342Schristos	 lwr	$12,4*4+0($5)
213*e0ea3921Schristos#endif
21476c4f342Schristos	xor	$25,$1
21576c4f342Schristos	addu	$2,$11
21676c4f342Schristos	rotr	$7,$7,2
21776c4f342Schristos	addu	$2,$25
21876c4f342Schristos#else
21976c4f342Schristos	 lwl	$12,4*4+3($5)
22076c4f342Schristos	sll	$25,$3,5	# 3
22176c4f342Schristos	addu	$2,$31
22276c4f342Schristos	 lwr	$12,4*4+0($5)
22376c4f342Schristos	srl	$6,$3,27
22476c4f342Schristos	addu	$2,$25
22576c4f342Schristos	xor	$25,$24,$1
22676c4f342Schristos	addu	$2,$6
22776c4f342Schristos	sll	$30,$7,30
22876c4f342Schristos	and	$25,$7
22976c4f342Schristos	srl	$7,$7,2
23076c4f342Schristos	xor	$25,$1
23176c4f342Schristos	addu	$2,$11
23276c4f342Schristos	or	$7,$30
23376c4f342Schristos	addu	$2,$25
23476c4f342Schristos#endif
23576c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
23676c4f342Schristos	wsbh	$12,$12	# byte swap(4)
23776c4f342Schristos	rotr	$12,$12,16
23876c4f342Schristos#else
23976c4f342Schristos	srl	$25,$12,24	# byte swap(4)
24076c4f342Schristos	srl	$6,$12,8
24176c4f342Schristos	andi	$30,$12,0xFF00
24276c4f342Schristos	sll	$12,$12,24
24376c4f342Schristos	andi	$6,0xFF00
24476c4f342Schristos	sll	$30,$30,8
24576c4f342Schristos	or	$12,$25
24676c4f342Schristos	or	$6,$30
24776c4f342Schristos	or	$12,$6
24876c4f342Schristos#endif
24976c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
25076c4f342Schristos	addu	$1,$31		# 4
25176c4f342Schristos	xor	$25,$7,$24
25276c4f342Schristos	rotr	$6,$2,27
25376c4f342Schristos	and	$25,$3
25476c4f342Schristos	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)
25976c4f342Schristos	 lwr	$13,5*4+0($5)
260*e0ea3921Schristos#endif
26176c4f342Schristos	xor	$25,$24
26276c4f342Schristos	addu	$1,$12
26376c4f342Schristos	rotr	$3,$3,2
26476c4f342Schristos	addu	$1,$25
26576c4f342Schristos#else
26676c4f342Schristos	 lwl	$13,5*4+3($5)
26776c4f342Schristos	sll	$25,$2,5	# 4
26876c4f342Schristos	addu	$1,$31
26976c4f342Schristos	 lwr	$13,5*4+0($5)
27076c4f342Schristos	srl	$6,$2,27
27176c4f342Schristos	addu	$1,$25
27276c4f342Schristos	xor	$25,$7,$24
27376c4f342Schristos	addu	$1,$6
27476c4f342Schristos	sll	$30,$3,30
27576c4f342Schristos	and	$25,$3
27676c4f342Schristos	srl	$3,$3,2
27776c4f342Schristos	xor	$25,$24
27876c4f342Schristos	addu	$1,$12
27976c4f342Schristos	or	$3,$30
28076c4f342Schristos	addu	$1,$25
28176c4f342Schristos#endif
28276c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
28376c4f342Schristos	wsbh	$13,$13	# byte swap(5)
28476c4f342Schristos	rotr	$13,$13,16
28576c4f342Schristos#else
28676c4f342Schristos	srl	$25,$13,24	# byte swap(5)
28776c4f342Schristos	srl	$6,$13,8
28876c4f342Schristos	andi	$30,$13,0xFF00
28976c4f342Schristos	sll	$13,$13,24
29076c4f342Schristos	andi	$6,0xFF00
29176c4f342Schristos	sll	$30,$30,8
29276c4f342Schristos	or	$13,$25
29376c4f342Schristos	or	$6,$30
29476c4f342Schristos	or	$13,$6
29576c4f342Schristos#endif
29676c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
29776c4f342Schristos	addu	$24,$31		# 5
29876c4f342Schristos	xor	$25,$3,$7
29976c4f342Schristos	rotr	$6,$1,27
30076c4f342Schristos	and	$25,$2
30176c4f342Schristos	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)
30676c4f342Schristos	 lwr	$14,6*4+0($5)
307*e0ea3921Schristos#endif
30876c4f342Schristos	xor	$25,$7
30976c4f342Schristos	addu	$24,$13
31076c4f342Schristos	rotr	$2,$2,2
31176c4f342Schristos	addu	$24,$25
31276c4f342Schristos#else
31376c4f342Schristos	 lwl	$14,6*4+3($5)
31476c4f342Schristos	sll	$25,$1,5	# 5
31576c4f342Schristos	addu	$24,$31
31676c4f342Schristos	 lwr	$14,6*4+0($5)
31776c4f342Schristos	srl	$6,$1,27
31876c4f342Schristos	addu	$24,$25
31976c4f342Schristos	xor	$25,$3,$7
32076c4f342Schristos	addu	$24,$6
32176c4f342Schristos	sll	$30,$2,30
32276c4f342Schristos	and	$25,$2
32376c4f342Schristos	srl	$2,$2,2
32476c4f342Schristos	xor	$25,$7
32576c4f342Schristos	addu	$24,$13
32676c4f342Schristos	or	$2,$30
32776c4f342Schristos	addu	$24,$25
32876c4f342Schristos#endif
32976c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
33076c4f342Schristos	wsbh	$14,$14	# byte swap(6)
33176c4f342Schristos	rotr	$14,$14,16
33276c4f342Schristos#else
33376c4f342Schristos	srl	$25,$14,24	# byte swap(6)
33476c4f342Schristos	srl	$6,$14,8
33576c4f342Schristos	andi	$30,$14,0xFF00
33676c4f342Schristos	sll	$14,$14,24
33776c4f342Schristos	andi	$6,0xFF00
33876c4f342Schristos	sll	$30,$30,8
33976c4f342Schristos	or	$14,$25
34076c4f342Schristos	or	$6,$30
34176c4f342Schristos	or	$14,$6
34276c4f342Schristos#endif
34376c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
34476c4f342Schristos	addu	$7,$31		# 6
34576c4f342Schristos	xor	$25,$2,$3
34676c4f342Schristos	rotr	$6,$24,27
34776c4f342Schristos	and	$25,$1
34876c4f342Schristos	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)
35376c4f342Schristos	 lwr	$15,7*4+0($5)
354*e0ea3921Schristos#endif
35576c4f342Schristos	xor	$25,$3
35676c4f342Schristos	addu	$7,$14
35776c4f342Schristos	rotr	$1,$1,2
35876c4f342Schristos	addu	$7,$25
35976c4f342Schristos#else
36076c4f342Schristos	 lwl	$15,7*4+3($5)
36176c4f342Schristos	sll	$25,$24,5	# 6
36276c4f342Schristos	addu	$7,$31
36376c4f342Schristos	 lwr	$15,7*4+0($5)
36476c4f342Schristos	srl	$6,$24,27
36576c4f342Schristos	addu	$7,$25
36676c4f342Schristos	xor	$25,$2,$3
36776c4f342Schristos	addu	$7,$6
36876c4f342Schristos	sll	$30,$1,30
36976c4f342Schristos	and	$25,$1
37076c4f342Schristos	srl	$1,$1,2
37176c4f342Schristos	xor	$25,$3
37276c4f342Schristos	addu	$7,$14
37376c4f342Schristos	or	$1,$30
37476c4f342Schristos	addu	$7,$25
37576c4f342Schristos#endif
37676c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
37776c4f342Schristos	wsbh	$15,$15	# byte swap(7)
37876c4f342Schristos	rotr	$15,$15,16
37976c4f342Schristos#else
38076c4f342Schristos	srl	$25,$15,24	# byte swap(7)
38176c4f342Schristos	srl	$6,$15,8
38276c4f342Schristos	andi	$30,$15,0xFF00
38376c4f342Schristos	sll	$15,$15,24
38476c4f342Schristos	andi	$6,0xFF00
38576c4f342Schristos	sll	$30,$30,8
38676c4f342Schristos	or	$15,$25
38776c4f342Schristos	or	$6,$30
38876c4f342Schristos	or	$15,$6
38976c4f342Schristos#endif
39076c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
39176c4f342Schristos	addu	$3,$31		# 7
39276c4f342Schristos	xor	$25,$1,$2
39376c4f342Schristos	rotr	$6,$7,27
39476c4f342Schristos	and	$25,$24
39576c4f342Schristos	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)
40076c4f342Schristos	 lwr	$16,8*4+0($5)
401*e0ea3921Schristos#endif
40276c4f342Schristos	xor	$25,$2
40376c4f342Schristos	addu	$3,$15
40476c4f342Schristos	rotr	$24,$24,2
40576c4f342Schristos	addu	$3,$25
40676c4f342Schristos#else
40776c4f342Schristos	 lwl	$16,8*4+3($5)
40876c4f342Schristos	sll	$25,$7,5	# 7
40976c4f342Schristos	addu	$3,$31
41076c4f342Schristos	 lwr	$16,8*4+0($5)
41176c4f342Schristos	srl	$6,$7,27
41276c4f342Schristos	addu	$3,$25
41376c4f342Schristos	xor	$25,$1,$2
41476c4f342Schristos	addu	$3,$6
41576c4f342Schristos	sll	$30,$24,30
41676c4f342Schristos	and	$25,$24
41776c4f342Schristos	srl	$24,$24,2
41876c4f342Schristos	xor	$25,$2
41976c4f342Schristos	addu	$3,$15
42076c4f342Schristos	or	$24,$30
42176c4f342Schristos	addu	$3,$25
42276c4f342Schristos#endif
42376c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
42476c4f342Schristos	wsbh	$16,$16	# byte swap(8)
42576c4f342Schristos	rotr	$16,$16,16
42676c4f342Schristos#else
42776c4f342Schristos	srl	$25,$16,24	# byte swap(8)
42876c4f342Schristos	srl	$6,$16,8
42976c4f342Schristos	andi	$30,$16,0xFF00
43076c4f342Schristos	sll	$16,$16,24
43176c4f342Schristos	andi	$6,0xFF00
43276c4f342Schristos	sll	$30,$30,8
43376c4f342Schristos	or	$16,$25
43476c4f342Schristos	or	$6,$30
43576c4f342Schristos	or	$16,$6
43676c4f342Schristos#endif
43776c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
43876c4f342Schristos	addu	$2,$31		# 8
43976c4f342Schristos	xor	$25,$24,$1
44076c4f342Schristos	rotr	$6,$3,27
44176c4f342Schristos	and	$25,$7
44276c4f342Schristos	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)
44776c4f342Schristos	 lwr	$17,9*4+0($5)
448*e0ea3921Schristos#endif
44976c4f342Schristos	xor	$25,$1
45076c4f342Schristos	addu	$2,$16
45176c4f342Schristos	rotr	$7,$7,2
45276c4f342Schristos	addu	$2,$25
45376c4f342Schristos#else
45476c4f342Schristos	 lwl	$17,9*4+3($5)
45576c4f342Schristos	sll	$25,$3,5	# 8
45676c4f342Schristos	addu	$2,$31
45776c4f342Schristos	 lwr	$17,9*4+0($5)
45876c4f342Schristos	srl	$6,$3,27
45976c4f342Schristos	addu	$2,$25
46076c4f342Schristos	xor	$25,$24,$1
46176c4f342Schristos	addu	$2,$6
46276c4f342Schristos	sll	$30,$7,30
46376c4f342Schristos	and	$25,$7
46476c4f342Schristos	srl	$7,$7,2
46576c4f342Schristos	xor	$25,$1
46676c4f342Schristos	addu	$2,$16
46776c4f342Schristos	or	$7,$30
46876c4f342Schristos	addu	$2,$25
46976c4f342Schristos#endif
47076c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
47176c4f342Schristos	wsbh	$17,$17	# byte swap(9)
47276c4f342Schristos	rotr	$17,$17,16
47376c4f342Schristos#else
47476c4f342Schristos	srl	$25,$17,24	# byte swap(9)
47576c4f342Schristos	srl	$6,$17,8
47676c4f342Schristos	andi	$30,$17,0xFF00
47776c4f342Schristos	sll	$17,$17,24
47876c4f342Schristos	andi	$6,0xFF00
47976c4f342Schristos	sll	$30,$30,8
48076c4f342Schristos	or	$17,$25
48176c4f342Schristos	or	$6,$30
48276c4f342Schristos	or	$17,$6
48376c4f342Schristos#endif
48476c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
48576c4f342Schristos	addu	$1,$31		# 9
48676c4f342Schristos	xor	$25,$7,$24
48776c4f342Schristos	rotr	$6,$2,27
48876c4f342Schristos	and	$25,$3
48976c4f342Schristos	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)
49476c4f342Schristos	 lwr	$18,10*4+0($5)
495*e0ea3921Schristos#endif
49676c4f342Schristos	xor	$25,$24
49776c4f342Schristos	addu	$1,$17
49876c4f342Schristos	rotr	$3,$3,2
49976c4f342Schristos	addu	$1,$25
50076c4f342Schristos#else
50176c4f342Schristos	 lwl	$18,10*4+3($5)
50276c4f342Schristos	sll	$25,$2,5	# 9
50376c4f342Schristos	addu	$1,$31
50476c4f342Schristos	 lwr	$18,10*4+0($5)
50576c4f342Schristos	srl	$6,$2,27
50676c4f342Schristos	addu	$1,$25
50776c4f342Schristos	xor	$25,$7,$24
50876c4f342Schristos	addu	$1,$6
50976c4f342Schristos	sll	$30,$3,30
51076c4f342Schristos	and	$25,$3
51176c4f342Schristos	srl	$3,$3,2
51276c4f342Schristos	xor	$25,$24
51376c4f342Schristos	addu	$1,$17
51476c4f342Schristos	or	$3,$30
51576c4f342Schristos	addu	$1,$25
51676c4f342Schristos#endif
51776c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
51876c4f342Schristos	wsbh	$18,$18	# byte swap(10)
51976c4f342Schristos	rotr	$18,$18,16
52076c4f342Schristos#else
52176c4f342Schristos	srl	$25,$18,24	# byte swap(10)
52276c4f342Schristos	srl	$6,$18,8
52376c4f342Schristos	andi	$30,$18,0xFF00
52476c4f342Schristos	sll	$18,$18,24
52576c4f342Schristos	andi	$6,0xFF00
52676c4f342Schristos	sll	$30,$30,8
52776c4f342Schristos	or	$18,$25
52876c4f342Schristos	or	$6,$30
52976c4f342Schristos	or	$18,$6
53076c4f342Schristos#endif
53176c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
53276c4f342Schristos	addu	$24,$31		# 10
53376c4f342Schristos	xor	$25,$3,$7
53476c4f342Schristos	rotr	$6,$1,27
53576c4f342Schristos	and	$25,$2
53676c4f342Schristos	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)
54176c4f342Schristos	 lwr	$19,11*4+0($5)
542*e0ea3921Schristos#endif
54376c4f342Schristos	xor	$25,$7
54476c4f342Schristos	addu	$24,$18
54576c4f342Schristos	rotr	$2,$2,2
54676c4f342Schristos	addu	$24,$25
54776c4f342Schristos#else
54876c4f342Schristos	 lwl	$19,11*4+3($5)
54976c4f342Schristos	sll	$25,$1,5	# 10
55076c4f342Schristos	addu	$24,$31
55176c4f342Schristos	 lwr	$19,11*4+0($5)
55276c4f342Schristos	srl	$6,$1,27
55376c4f342Schristos	addu	$24,$25
55476c4f342Schristos	xor	$25,$3,$7
55576c4f342Schristos	addu	$24,$6
55676c4f342Schristos	sll	$30,$2,30
55776c4f342Schristos	and	$25,$2
55876c4f342Schristos	srl	$2,$2,2
55976c4f342Schristos	xor	$25,$7
56076c4f342Schristos	addu	$24,$18
56176c4f342Schristos	or	$2,$30
56276c4f342Schristos	addu	$24,$25
56376c4f342Schristos#endif
56476c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
56576c4f342Schristos	wsbh	$19,$19	# byte swap(11)
56676c4f342Schristos	rotr	$19,$19,16
56776c4f342Schristos#else
56876c4f342Schristos	srl	$25,$19,24	# byte swap(11)
56976c4f342Schristos	srl	$6,$19,8
57076c4f342Schristos	andi	$30,$19,0xFF00
57176c4f342Schristos	sll	$19,$19,24
57276c4f342Schristos	andi	$6,0xFF00
57376c4f342Schristos	sll	$30,$30,8
57476c4f342Schristos	or	$19,$25
57576c4f342Schristos	or	$6,$30
57676c4f342Schristos	or	$19,$6
57776c4f342Schristos#endif
57876c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
57976c4f342Schristos	addu	$7,$31		# 11
58076c4f342Schristos	xor	$25,$2,$3
58176c4f342Schristos	rotr	$6,$24,27
58276c4f342Schristos	and	$25,$1
58376c4f342Schristos	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)
58876c4f342Schristos	 lwr	$20,12*4+0($5)
589*e0ea3921Schristos#endif
59076c4f342Schristos	xor	$25,$3
59176c4f342Schristos	addu	$7,$19
59276c4f342Schristos	rotr	$1,$1,2
59376c4f342Schristos	addu	$7,$25
59476c4f342Schristos#else
59576c4f342Schristos	 lwl	$20,12*4+3($5)
59676c4f342Schristos	sll	$25,$24,5	# 11
59776c4f342Schristos	addu	$7,$31
59876c4f342Schristos	 lwr	$20,12*4+0($5)
59976c4f342Schristos	srl	$6,$24,27
60076c4f342Schristos	addu	$7,$25
60176c4f342Schristos	xor	$25,$2,$3
60276c4f342Schristos	addu	$7,$6
60376c4f342Schristos	sll	$30,$1,30
60476c4f342Schristos	and	$25,$1
60576c4f342Schristos	srl	$1,$1,2
60676c4f342Schristos	xor	$25,$3
60776c4f342Schristos	addu	$7,$19
60876c4f342Schristos	or	$1,$30
60976c4f342Schristos	addu	$7,$25
61076c4f342Schristos#endif
61176c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
61276c4f342Schristos	wsbh	$20,$20	# byte swap(12)
61376c4f342Schristos	rotr	$20,$20,16
61476c4f342Schristos#else
61576c4f342Schristos	srl	$25,$20,24	# byte swap(12)
61676c4f342Schristos	srl	$6,$20,8
61776c4f342Schristos	andi	$30,$20,0xFF00
61876c4f342Schristos	sll	$20,$20,24
61976c4f342Schristos	andi	$6,0xFF00
62076c4f342Schristos	sll	$30,$30,8
62176c4f342Schristos	or	$20,$25
62276c4f342Schristos	or	$6,$30
62376c4f342Schristos	or	$20,$6
62476c4f342Schristos#endif
62576c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
62676c4f342Schristos	addu	$3,$31		# 12
62776c4f342Schristos	xor	$25,$1,$2
62876c4f342Schristos	rotr	$6,$7,27
62976c4f342Schristos	and	$25,$24
63076c4f342Schristos	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)
63576c4f342Schristos	 lwr	$21,13*4+0($5)
636*e0ea3921Schristos#endif
63776c4f342Schristos	xor	$25,$2
63876c4f342Schristos	addu	$3,$20
63976c4f342Schristos	rotr	$24,$24,2
64076c4f342Schristos	addu	$3,$25
64176c4f342Schristos#else
64276c4f342Schristos	 lwl	$21,13*4+3($5)
64376c4f342Schristos	sll	$25,$7,5	# 12
64476c4f342Schristos	addu	$3,$31
64576c4f342Schristos	 lwr	$21,13*4+0($5)
64676c4f342Schristos	srl	$6,$7,27
64776c4f342Schristos	addu	$3,$25
64876c4f342Schristos	xor	$25,$1,$2
64976c4f342Schristos	addu	$3,$6
65076c4f342Schristos	sll	$30,$24,30
65176c4f342Schristos	and	$25,$24
65276c4f342Schristos	srl	$24,$24,2
65376c4f342Schristos	xor	$25,$2
65476c4f342Schristos	addu	$3,$20
65576c4f342Schristos	or	$24,$30
65676c4f342Schristos	addu	$3,$25
65776c4f342Schristos#endif
65876c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
65976c4f342Schristos	wsbh	$21,$21	# byte swap(13)
66076c4f342Schristos	rotr	$21,$21,16
66176c4f342Schristos#else
66276c4f342Schristos	srl	$25,$21,24	# byte swap(13)
66376c4f342Schristos	srl	$6,$21,8
66476c4f342Schristos	andi	$30,$21,0xFF00
66576c4f342Schristos	sll	$21,$21,24
66676c4f342Schristos	andi	$6,0xFF00
66776c4f342Schristos	sll	$30,$30,8
66876c4f342Schristos	or	$21,$25
66976c4f342Schristos	or	$6,$30
67076c4f342Schristos	or	$21,$6
67176c4f342Schristos#endif
67276c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
67376c4f342Schristos	addu	$2,$31		# 13
67476c4f342Schristos	xor	$25,$24,$1
67576c4f342Schristos	rotr	$6,$3,27
67676c4f342Schristos	and	$25,$7
67776c4f342Schristos	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)
68276c4f342Schristos	 lwr	$22,14*4+0($5)
683*e0ea3921Schristos#endif
68476c4f342Schristos	xor	$25,$1
68576c4f342Schristos	addu	$2,$21
68676c4f342Schristos	rotr	$7,$7,2
68776c4f342Schristos	addu	$2,$25
68876c4f342Schristos#else
68976c4f342Schristos	 lwl	$22,14*4+3($5)
69076c4f342Schristos	sll	$25,$3,5	# 13
69176c4f342Schristos	addu	$2,$31
69276c4f342Schristos	 lwr	$22,14*4+0($5)
69376c4f342Schristos	srl	$6,$3,27
69476c4f342Schristos	addu	$2,$25
69576c4f342Schristos	xor	$25,$24,$1
69676c4f342Schristos	addu	$2,$6
69776c4f342Schristos	sll	$30,$7,30
69876c4f342Schristos	and	$25,$7
69976c4f342Schristos	srl	$7,$7,2
70076c4f342Schristos	xor	$25,$1
70176c4f342Schristos	addu	$2,$21
70276c4f342Schristos	or	$7,$30
70376c4f342Schristos	addu	$2,$25
70476c4f342Schristos#endif
70576c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
70676c4f342Schristos	wsbh	$22,$22	# byte swap(14)
70776c4f342Schristos	rotr	$22,$22,16
70876c4f342Schristos#else
70976c4f342Schristos	srl	$25,$22,24	# byte swap(14)
71076c4f342Schristos	srl	$6,$22,8
71176c4f342Schristos	andi	$30,$22,0xFF00
71276c4f342Schristos	sll	$22,$22,24
71376c4f342Schristos	andi	$6,0xFF00
71476c4f342Schristos	sll	$30,$30,8
71576c4f342Schristos	or	$22,$25
71676c4f342Schristos	or	$6,$30
71776c4f342Schristos	or	$22,$6
71876c4f342Schristos#endif
71976c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
72076c4f342Schristos	addu	$1,$31		# 14
72176c4f342Schristos	xor	$25,$7,$24
72276c4f342Schristos	rotr	$6,$2,27
72376c4f342Schristos	and	$25,$3
72476c4f342Schristos	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)
72976c4f342Schristos	 lwr	$23,15*4+0($5)
730*e0ea3921Schristos#endif
73176c4f342Schristos	xor	$25,$24
73276c4f342Schristos	addu	$1,$22
73376c4f342Schristos	rotr	$3,$3,2
73476c4f342Schristos	addu	$1,$25
73576c4f342Schristos#else
73676c4f342Schristos	 lwl	$23,15*4+3($5)
73776c4f342Schristos	sll	$25,$2,5	# 14
73876c4f342Schristos	addu	$1,$31
73976c4f342Schristos	 lwr	$23,15*4+0($5)
74076c4f342Schristos	srl	$6,$2,27
74176c4f342Schristos	addu	$1,$25
74276c4f342Schristos	xor	$25,$7,$24
74376c4f342Schristos	addu	$1,$6
74476c4f342Schristos	sll	$30,$3,30
74576c4f342Schristos	and	$25,$3
74676c4f342Schristos	srl	$3,$3,2
74776c4f342Schristos	xor	$25,$24
74876c4f342Schristos	addu	$1,$22
74976c4f342Schristos	or	$3,$30
75076c4f342Schristos	addu	$1,$25
75176c4f342Schristos#endif
75276c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
75376c4f342Schristos	wsbh	$23,$23	# byte swap(15)
75476c4f342Schristos	rotr	$23,$23,16
75576c4f342Schristos#else
75676c4f342Schristos	srl	$25,$23,24	# byte swap(15)
75776c4f342Schristos	srl	$6,$23,8
75876c4f342Schristos	andi	$30,$23,0xFF00
75976c4f342Schristos	sll	$23,$23,24
76076c4f342Schristos	andi	$6,0xFF00
76176c4f342Schristos	sll	$30,$30,8
76276c4f342Schristos	or	$23,$25
76376c4f342Schristos	or	$23,$6
76476c4f342Schristos	or	$23,$30
76576c4f342Schristos#endif
76676c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
76776c4f342Schristos	addu	$24,$31		# 15
76876c4f342Schristos	 xor	$8,$10
76976c4f342Schristos	xor	$25,$3,$7
77076c4f342Schristos	rotr	$6,$1,27
77176c4f342Schristos	 xor	$8,$16
77276c4f342Schristos	and	$25,$2
77376c4f342Schristos	addu	$24,$6
77476c4f342Schristos	 xor	$8,$21
77576c4f342Schristos	xor	$25,$7
77676c4f342Schristos	addu	$24,$23
77776c4f342Schristos	 rotr	$8,$8,31
77876c4f342Schristos	rotr	$2,$2,2
77976c4f342Schristos	addu	$24,$25
78076c4f342Schristos#else
78176c4f342Schristos	 xor	$8,$10
78276c4f342Schristos	sll	$25,$1,5	# 15
78376c4f342Schristos	addu	$24,$31
78476c4f342Schristos	srl	$6,$1,27
78576c4f342Schristos	addu	$24,$25
78676c4f342Schristos	 xor	$8,$16
78776c4f342Schristos	xor	$25,$3,$7
78876c4f342Schristos	addu	$24,$6
78976c4f342Schristos	 xor	$8,$21
79076c4f342Schristos	sll	$30,$2,30
79176c4f342Schristos	and	$25,$2
79276c4f342Schristos	 srl	$6,$8,31
79376c4f342Schristos	 addu	$8,$8
79476c4f342Schristos	srl	$2,$2,2
79576c4f342Schristos	xor	$25,$7
79676c4f342Schristos	 or	$8,$6
79776c4f342Schristos	addu	$24,$23
79876c4f342Schristos	or	$2,$30
79976c4f342Schristos	addu	$24,$25
80076c4f342Schristos#endif
80176c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
80276c4f342Schristos	addu	$7,$31		# 16
80376c4f342Schristos	 xor	$9,$11
80476c4f342Schristos	xor	$25,$2,$3
80576c4f342Schristos	rotr	$6,$24,27
80676c4f342Schristos	 xor	$9,$17
80776c4f342Schristos	and	$25,$1
80876c4f342Schristos	addu	$7,$6
80976c4f342Schristos	 xor	$9,$22
81076c4f342Schristos	xor	$25,$3
81176c4f342Schristos	addu	$7,$8
81276c4f342Schristos	 rotr	$9,$9,31
81376c4f342Schristos	rotr	$1,$1,2
81476c4f342Schristos	addu	$7,$25
81576c4f342Schristos#else
81676c4f342Schristos	 xor	$9,$11
81776c4f342Schristos	sll	$25,$24,5	# 16
81876c4f342Schristos	addu	$7,$31
81976c4f342Schristos	srl	$6,$24,27
82076c4f342Schristos	addu	$7,$25
82176c4f342Schristos	 xor	$9,$17
82276c4f342Schristos	xor	$25,$2,$3
82376c4f342Schristos	addu	$7,$6
82476c4f342Schristos	 xor	$9,$22
82576c4f342Schristos	sll	$30,$1,30
82676c4f342Schristos	and	$25,$1
82776c4f342Schristos	 srl	$6,$9,31
82876c4f342Schristos	 addu	$9,$9
82976c4f342Schristos	srl	$1,$1,2
83076c4f342Schristos	xor	$25,$3
83176c4f342Schristos	 or	$9,$6
83276c4f342Schristos	addu	$7,$8
83376c4f342Schristos	or	$1,$30
83476c4f342Schristos	addu	$7,$25
83576c4f342Schristos#endif
83676c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
83776c4f342Schristos	addu	$3,$31		# 17
83876c4f342Schristos	 xor	$10,$12
83976c4f342Schristos	xor	$25,$1,$2
84076c4f342Schristos	rotr	$6,$7,27
84176c4f342Schristos	 xor	$10,$18
84276c4f342Schristos	and	$25,$24
84376c4f342Schristos	addu	$3,$6
84476c4f342Schristos	 xor	$10,$23
84576c4f342Schristos	xor	$25,$2
84676c4f342Schristos	addu	$3,$9
84776c4f342Schristos	 rotr	$10,$10,31
84876c4f342Schristos	rotr	$24,$24,2
84976c4f342Schristos	addu	$3,$25
85076c4f342Schristos#else
85176c4f342Schristos	 xor	$10,$12
85276c4f342Schristos	sll	$25,$7,5	# 17
85376c4f342Schristos	addu	$3,$31
85476c4f342Schristos	srl	$6,$7,27
85576c4f342Schristos	addu	$3,$25
85676c4f342Schristos	 xor	$10,$18
85776c4f342Schristos	xor	$25,$1,$2
85876c4f342Schristos	addu	$3,$6
85976c4f342Schristos	 xor	$10,$23
86076c4f342Schristos	sll	$30,$24,30
86176c4f342Schristos	and	$25,$24
86276c4f342Schristos	 srl	$6,$10,31
86376c4f342Schristos	 addu	$10,$10
86476c4f342Schristos	srl	$24,$24,2
86576c4f342Schristos	xor	$25,$2
86676c4f342Schristos	 or	$10,$6
86776c4f342Schristos	addu	$3,$9
86876c4f342Schristos	or	$24,$30
86976c4f342Schristos	addu	$3,$25
87076c4f342Schristos#endif
87176c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
87276c4f342Schristos	addu	$2,$31		# 18
87376c4f342Schristos	 xor	$11,$13
87476c4f342Schristos	xor	$25,$24,$1
87576c4f342Schristos	rotr	$6,$3,27
87676c4f342Schristos	 xor	$11,$19
87776c4f342Schristos	and	$25,$7
87876c4f342Schristos	addu	$2,$6
87976c4f342Schristos	 xor	$11,$8
88076c4f342Schristos	xor	$25,$1
88176c4f342Schristos	addu	$2,$10
88276c4f342Schristos	 rotr	$11,$11,31
88376c4f342Schristos	rotr	$7,$7,2
88476c4f342Schristos	addu	$2,$25
88576c4f342Schristos#else
88676c4f342Schristos	 xor	$11,$13
88776c4f342Schristos	sll	$25,$3,5	# 18
88876c4f342Schristos	addu	$2,$31
88976c4f342Schristos	srl	$6,$3,27
89076c4f342Schristos	addu	$2,$25
89176c4f342Schristos	 xor	$11,$19
89276c4f342Schristos	xor	$25,$24,$1
89376c4f342Schristos	addu	$2,$6
89476c4f342Schristos	 xor	$11,$8
89576c4f342Schristos	sll	$30,$7,30
89676c4f342Schristos	and	$25,$7
89776c4f342Schristos	 srl	$6,$11,31
89876c4f342Schristos	 addu	$11,$11
89976c4f342Schristos	srl	$7,$7,2
90076c4f342Schristos	xor	$25,$1
90176c4f342Schristos	 or	$11,$6
90276c4f342Schristos	addu	$2,$10
90376c4f342Schristos	or	$7,$30
90476c4f342Schristos	addu	$2,$25
90576c4f342Schristos#endif
90676c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
90776c4f342Schristos	addu	$1,$31		# 19
90876c4f342Schristos	 xor	$12,$14
90976c4f342Schristos	xor	$25,$7,$24
91076c4f342Schristos	rotr	$6,$2,27
91176c4f342Schristos	 xor	$12,$20
91276c4f342Schristos	and	$25,$3
91376c4f342Schristos	addu	$1,$6
91476c4f342Schristos	 xor	$12,$9
91576c4f342Schristos	xor	$25,$24
91676c4f342Schristos	addu	$1,$11
91776c4f342Schristos	 rotr	$12,$12,31
91876c4f342Schristos	rotr	$3,$3,2
91976c4f342Schristos	addu	$1,$25
92076c4f342Schristos#else
92176c4f342Schristos	 xor	$12,$14
92276c4f342Schristos	sll	$25,$2,5	# 19
92376c4f342Schristos	addu	$1,$31
92476c4f342Schristos	srl	$6,$2,27
92576c4f342Schristos	addu	$1,$25
92676c4f342Schristos	 xor	$12,$20
92776c4f342Schristos	xor	$25,$7,$24
92876c4f342Schristos	addu	$1,$6
92976c4f342Schristos	 xor	$12,$9
93076c4f342Schristos	sll	$30,$3,30
93176c4f342Schristos	and	$25,$3
93276c4f342Schristos	 srl	$6,$12,31
93376c4f342Schristos	 addu	$12,$12
93476c4f342Schristos	srl	$3,$3,2
93576c4f342Schristos	xor	$25,$24
93676c4f342Schristos	 or	$12,$6
93776c4f342Schristos	addu	$1,$11
93876c4f342Schristos	or	$3,$30
93976c4f342Schristos	addu	$1,$25
94076c4f342Schristos#endif
94176c4f342Schristos	lui	$31,0x6ed9
94276c4f342Schristos	ori	$31,0xeba1	# K_20_39
94376c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
94476c4f342Schristos	 xor	$13,$15
94576c4f342Schristos	addu	$24,$31		# 20
94676c4f342Schristos	rotr	$6,$1,27
94776c4f342Schristos	 xor	$13,$21
94876c4f342Schristos	xor	$25,$3,$7
94976c4f342Schristos	addu	$24,$6
95076c4f342Schristos	 xor	$13,$10
95176c4f342Schristos	xor	$25,$2
95276c4f342Schristos	addu	$24,$12
95376c4f342Schristos	 rotr	$13,$13,31
95476c4f342Schristos	rotr	$2,$2,2
95576c4f342Schristos	addu	$24,$25
95676c4f342Schristos#else
95776c4f342Schristos	 xor	$13,$15
95876c4f342Schristos	sll	$25,$1,5	# 20
95976c4f342Schristos	addu	$24,$31
96076c4f342Schristos	srl	$6,$1,27
96176c4f342Schristos	addu	$24,$25
96276c4f342Schristos	 xor	$13,$21
96376c4f342Schristos	xor	$25,$3,$7
96476c4f342Schristos	addu	$24,$6
96576c4f342Schristos	 xor	$13,$10
96676c4f342Schristos	sll	$30,$2,30
96776c4f342Schristos	xor	$25,$2
96876c4f342Schristos	 srl	$6,$13,31
96976c4f342Schristos	 addu	$13,$13
97076c4f342Schristos	srl	$2,$2,2
97176c4f342Schristos	addu	$24,$12
97276c4f342Schristos	 or	$13,$6
97376c4f342Schristos	or	$2,$30
97476c4f342Schristos	addu	$24,$25
97576c4f342Schristos#endif
97676c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
97776c4f342Schristos	 xor	$14,$16
97876c4f342Schristos	addu	$7,$31		# 21
97976c4f342Schristos	rotr	$6,$24,27
98076c4f342Schristos	 xor	$14,$22
98176c4f342Schristos	xor	$25,$2,$3
98276c4f342Schristos	addu	$7,$6
98376c4f342Schristos	 xor	$14,$11
98476c4f342Schristos	xor	$25,$1
98576c4f342Schristos	addu	$7,$13
98676c4f342Schristos	 rotr	$14,$14,31
98776c4f342Schristos	rotr	$1,$1,2
98876c4f342Schristos	addu	$7,$25
98976c4f342Schristos#else
99076c4f342Schristos	 xor	$14,$16
99176c4f342Schristos	sll	$25,$24,5	# 21
99276c4f342Schristos	addu	$7,$31
99376c4f342Schristos	srl	$6,$24,27
99476c4f342Schristos	addu	$7,$25
99576c4f342Schristos	 xor	$14,$22
99676c4f342Schristos	xor	$25,$2,$3
99776c4f342Schristos	addu	$7,$6
99876c4f342Schristos	 xor	$14,$11
99976c4f342Schristos	sll	$30,$1,30
100076c4f342Schristos	xor	$25,$1
100176c4f342Schristos	 srl	$6,$14,31
100276c4f342Schristos	 addu	$14,$14
100376c4f342Schristos	srl	$1,$1,2
100476c4f342Schristos	addu	$7,$13
100576c4f342Schristos	 or	$14,$6
100676c4f342Schristos	or	$1,$30
100776c4f342Schristos	addu	$7,$25
100876c4f342Schristos#endif
100976c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
101076c4f342Schristos	 xor	$15,$17
101176c4f342Schristos	addu	$3,$31		# 22
101276c4f342Schristos	rotr	$6,$7,27
101376c4f342Schristos	 xor	$15,$23
101476c4f342Schristos	xor	$25,$1,$2
101576c4f342Schristos	addu	$3,$6
101676c4f342Schristos	 xor	$15,$12
101776c4f342Schristos	xor	$25,$24
101876c4f342Schristos	addu	$3,$14
101976c4f342Schristos	 rotr	$15,$15,31
102076c4f342Schristos	rotr	$24,$24,2
102176c4f342Schristos	addu	$3,$25
102276c4f342Schristos#else
102376c4f342Schristos	 xor	$15,$17
102476c4f342Schristos	sll	$25,$7,5	# 22
102576c4f342Schristos	addu	$3,$31
102676c4f342Schristos	srl	$6,$7,27
102776c4f342Schristos	addu	$3,$25
102876c4f342Schristos	 xor	$15,$23
102976c4f342Schristos	xor	$25,$1,$2
103076c4f342Schristos	addu	$3,$6
103176c4f342Schristos	 xor	$15,$12
103276c4f342Schristos	sll	$30,$24,30
103376c4f342Schristos	xor	$25,$24
103476c4f342Schristos	 srl	$6,$15,31
103576c4f342Schristos	 addu	$15,$15
103676c4f342Schristos	srl	$24,$24,2
103776c4f342Schristos	addu	$3,$14
103876c4f342Schristos	 or	$15,$6
103976c4f342Schristos	or	$24,$30
104076c4f342Schristos	addu	$3,$25
104176c4f342Schristos#endif
104276c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
104376c4f342Schristos	 xor	$16,$18
104476c4f342Schristos	addu	$2,$31		# 23
104576c4f342Schristos	rotr	$6,$3,27
104676c4f342Schristos	 xor	$16,$8
104776c4f342Schristos	xor	$25,$24,$1
104876c4f342Schristos	addu	$2,$6
104976c4f342Schristos	 xor	$16,$13
105076c4f342Schristos	xor	$25,$7
105176c4f342Schristos	addu	$2,$15
105276c4f342Schristos	 rotr	$16,$16,31
105376c4f342Schristos	rotr	$7,$7,2
105476c4f342Schristos	addu	$2,$25
105576c4f342Schristos#else
105676c4f342Schristos	 xor	$16,$18
105776c4f342Schristos	sll	$25,$3,5	# 23
105876c4f342Schristos	addu	$2,$31
105976c4f342Schristos	srl	$6,$3,27
106076c4f342Schristos	addu	$2,$25
106176c4f342Schristos	 xor	$16,$8
106276c4f342Schristos	xor	$25,$24,$1
106376c4f342Schristos	addu	$2,$6
106476c4f342Schristos	 xor	$16,$13
106576c4f342Schristos	sll	$30,$7,30
106676c4f342Schristos	xor	$25,$7
106776c4f342Schristos	 srl	$6,$16,31
106876c4f342Schristos	 addu	$16,$16
106976c4f342Schristos	srl	$7,$7,2
107076c4f342Schristos	addu	$2,$15
107176c4f342Schristos	 or	$16,$6
107276c4f342Schristos	or	$7,$30
107376c4f342Schristos	addu	$2,$25
107476c4f342Schristos#endif
107576c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
107676c4f342Schristos	 xor	$17,$19
107776c4f342Schristos	addu	$1,$31		# 24
107876c4f342Schristos	rotr	$6,$2,27
107976c4f342Schristos	 xor	$17,$9
108076c4f342Schristos	xor	$25,$7,$24
108176c4f342Schristos	addu	$1,$6
108276c4f342Schristos	 xor	$17,$14
108376c4f342Schristos	xor	$25,$3
108476c4f342Schristos	addu	$1,$16
108576c4f342Schristos	 rotr	$17,$17,31
108676c4f342Schristos	rotr	$3,$3,2
108776c4f342Schristos	addu	$1,$25
108876c4f342Schristos#else
108976c4f342Schristos	 xor	$17,$19
109076c4f342Schristos	sll	$25,$2,5	# 24
109176c4f342Schristos	addu	$1,$31
109276c4f342Schristos	srl	$6,$2,27
109376c4f342Schristos	addu	$1,$25
109476c4f342Schristos	 xor	$17,$9
109576c4f342Schristos	xor	$25,$7,$24
109676c4f342Schristos	addu	$1,$6
109776c4f342Schristos	 xor	$17,$14
109876c4f342Schristos	sll	$30,$3,30
109976c4f342Schristos	xor	$25,$3
110076c4f342Schristos	 srl	$6,$17,31
110176c4f342Schristos	 addu	$17,$17
110276c4f342Schristos	srl	$3,$3,2
110376c4f342Schristos	addu	$1,$16
110476c4f342Schristos	 or	$17,$6
110576c4f342Schristos	or	$3,$30
110676c4f342Schristos	addu	$1,$25
110776c4f342Schristos#endif
110876c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
110976c4f342Schristos	 xor	$18,$20
111076c4f342Schristos	addu	$24,$31		# 25
111176c4f342Schristos	rotr	$6,$1,27
111276c4f342Schristos	 xor	$18,$10
111376c4f342Schristos	xor	$25,$3,$7
111476c4f342Schristos	addu	$24,$6
111576c4f342Schristos	 xor	$18,$15
111676c4f342Schristos	xor	$25,$2
111776c4f342Schristos	addu	$24,$17
111876c4f342Schristos	 rotr	$18,$18,31
111976c4f342Schristos	rotr	$2,$2,2
112076c4f342Schristos	addu	$24,$25
112176c4f342Schristos#else
112276c4f342Schristos	 xor	$18,$20
112376c4f342Schristos	sll	$25,$1,5	# 25
112476c4f342Schristos	addu	$24,$31
112576c4f342Schristos	srl	$6,$1,27
112676c4f342Schristos	addu	$24,$25
112776c4f342Schristos	 xor	$18,$10
112876c4f342Schristos	xor	$25,$3,$7
112976c4f342Schristos	addu	$24,$6
113076c4f342Schristos	 xor	$18,$15
113176c4f342Schristos	sll	$30,$2,30
113276c4f342Schristos	xor	$25,$2
113376c4f342Schristos	 srl	$6,$18,31
113476c4f342Schristos	 addu	$18,$18
113576c4f342Schristos	srl	$2,$2,2
113676c4f342Schristos	addu	$24,$17
113776c4f342Schristos	 or	$18,$6
113876c4f342Schristos	or	$2,$30
113976c4f342Schristos	addu	$24,$25
114076c4f342Schristos#endif
114176c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
114276c4f342Schristos	 xor	$19,$21
114376c4f342Schristos	addu	$7,$31		# 26
114476c4f342Schristos	rotr	$6,$24,27
114576c4f342Schristos	 xor	$19,$11
114676c4f342Schristos	xor	$25,$2,$3
114776c4f342Schristos	addu	$7,$6
114876c4f342Schristos	 xor	$19,$16
114976c4f342Schristos	xor	$25,$1
115076c4f342Schristos	addu	$7,$18
115176c4f342Schristos	 rotr	$19,$19,31
115276c4f342Schristos	rotr	$1,$1,2
115376c4f342Schristos	addu	$7,$25
115476c4f342Schristos#else
115576c4f342Schristos	 xor	$19,$21
115676c4f342Schristos	sll	$25,$24,5	# 26
115776c4f342Schristos	addu	$7,$31
115876c4f342Schristos	srl	$6,$24,27
115976c4f342Schristos	addu	$7,$25
116076c4f342Schristos	 xor	$19,$11
116176c4f342Schristos	xor	$25,$2,$3
116276c4f342Schristos	addu	$7,$6
116376c4f342Schristos	 xor	$19,$16
116476c4f342Schristos	sll	$30,$1,30
116576c4f342Schristos	xor	$25,$1
116676c4f342Schristos	 srl	$6,$19,31
116776c4f342Schristos	 addu	$19,$19
116876c4f342Schristos	srl	$1,$1,2
116976c4f342Schristos	addu	$7,$18
117076c4f342Schristos	 or	$19,$6
117176c4f342Schristos	or	$1,$30
117276c4f342Schristos	addu	$7,$25
117376c4f342Schristos#endif
117476c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
117576c4f342Schristos	 xor	$20,$22
117676c4f342Schristos	addu	$3,$31		# 27
117776c4f342Schristos	rotr	$6,$7,27
117876c4f342Schristos	 xor	$20,$12
117976c4f342Schristos	xor	$25,$1,$2
118076c4f342Schristos	addu	$3,$6
118176c4f342Schristos	 xor	$20,$17
118276c4f342Schristos	xor	$25,$24
118376c4f342Schristos	addu	$3,$19
118476c4f342Schristos	 rotr	$20,$20,31
118576c4f342Schristos	rotr	$24,$24,2
118676c4f342Schristos	addu	$3,$25
118776c4f342Schristos#else
118876c4f342Schristos	 xor	$20,$22
118976c4f342Schristos	sll	$25,$7,5	# 27
119076c4f342Schristos	addu	$3,$31
119176c4f342Schristos	srl	$6,$7,27
119276c4f342Schristos	addu	$3,$25
119376c4f342Schristos	 xor	$20,$12
119476c4f342Schristos	xor	$25,$1,$2
119576c4f342Schristos	addu	$3,$6
119676c4f342Schristos	 xor	$20,$17
119776c4f342Schristos	sll	$30,$24,30
119876c4f342Schristos	xor	$25,$24
119976c4f342Schristos	 srl	$6,$20,31
120076c4f342Schristos	 addu	$20,$20
120176c4f342Schristos	srl	$24,$24,2
120276c4f342Schristos	addu	$3,$19
120376c4f342Schristos	 or	$20,$6
120476c4f342Schristos	or	$24,$30
120576c4f342Schristos	addu	$3,$25
120676c4f342Schristos#endif
120776c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
120876c4f342Schristos	 xor	$21,$23
120976c4f342Schristos	addu	$2,$31		# 28
121076c4f342Schristos	rotr	$6,$3,27
121176c4f342Schristos	 xor	$21,$13
121276c4f342Schristos	xor	$25,$24,$1
121376c4f342Schristos	addu	$2,$6
121476c4f342Schristos	 xor	$21,$18
121576c4f342Schristos	xor	$25,$7
121676c4f342Schristos	addu	$2,$20
121776c4f342Schristos	 rotr	$21,$21,31
121876c4f342Schristos	rotr	$7,$7,2
121976c4f342Schristos	addu	$2,$25
122076c4f342Schristos#else
122176c4f342Schristos	 xor	$21,$23
122276c4f342Schristos	sll	$25,$3,5	# 28
122376c4f342Schristos	addu	$2,$31
122476c4f342Schristos	srl	$6,$3,27
122576c4f342Schristos	addu	$2,$25
122676c4f342Schristos	 xor	$21,$13
122776c4f342Schristos	xor	$25,$24,$1
122876c4f342Schristos	addu	$2,$6
122976c4f342Schristos	 xor	$21,$18
123076c4f342Schristos	sll	$30,$7,30
123176c4f342Schristos	xor	$25,$7
123276c4f342Schristos	 srl	$6,$21,31
123376c4f342Schristos	 addu	$21,$21
123476c4f342Schristos	srl	$7,$7,2
123576c4f342Schristos	addu	$2,$20
123676c4f342Schristos	 or	$21,$6
123776c4f342Schristos	or	$7,$30
123876c4f342Schristos	addu	$2,$25
123976c4f342Schristos#endif
124076c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
124176c4f342Schristos	 xor	$22,$8
124276c4f342Schristos	addu	$1,$31		# 29
124376c4f342Schristos	rotr	$6,$2,27
124476c4f342Schristos	 xor	$22,$14
124576c4f342Schristos	xor	$25,$7,$24
124676c4f342Schristos	addu	$1,$6
124776c4f342Schristos	 xor	$22,$19
124876c4f342Schristos	xor	$25,$3
124976c4f342Schristos	addu	$1,$21
125076c4f342Schristos	 rotr	$22,$22,31
125176c4f342Schristos	rotr	$3,$3,2
125276c4f342Schristos	addu	$1,$25
125376c4f342Schristos#else
125476c4f342Schristos	 xor	$22,$8
125576c4f342Schristos	sll	$25,$2,5	# 29
125676c4f342Schristos	addu	$1,$31
125776c4f342Schristos	srl	$6,$2,27
125876c4f342Schristos	addu	$1,$25
125976c4f342Schristos	 xor	$22,$14
126076c4f342Schristos	xor	$25,$7,$24
126176c4f342Schristos	addu	$1,$6
126276c4f342Schristos	 xor	$22,$19
126376c4f342Schristos	sll	$30,$3,30
126476c4f342Schristos	xor	$25,$3
126576c4f342Schristos	 srl	$6,$22,31
126676c4f342Schristos	 addu	$22,$22
126776c4f342Schristos	srl	$3,$3,2
126876c4f342Schristos	addu	$1,$21
126976c4f342Schristos	 or	$22,$6
127076c4f342Schristos	or	$3,$30
127176c4f342Schristos	addu	$1,$25
127276c4f342Schristos#endif
127376c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
127476c4f342Schristos	 xor	$23,$9
127576c4f342Schristos	addu	$24,$31		# 30
127676c4f342Schristos	rotr	$6,$1,27
127776c4f342Schristos	 xor	$23,$15
127876c4f342Schristos	xor	$25,$3,$7
127976c4f342Schristos	addu	$24,$6
128076c4f342Schristos	 xor	$23,$20
128176c4f342Schristos	xor	$25,$2
128276c4f342Schristos	addu	$24,$22
128376c4f342Schristos	 rotr	$23,$23,31
128476c4f342Schristos	rotr	$2,$2,2
128576c4f342Schristos	addu	$24,$25
128676c4f342Schristos#else
128776c4f342Schristos	 xor	$23,$9
128876c4f342Schristos	sll	$25,$1,5	# 30
128976c4f342Schristos	addu	$24,$31
129076c4f342Schristos	srl	$6,$1,27
129176c4f342Schristos	addu	$24,$25
129276c4f342Schristos	 xor	$23,$15
129376c4f342Schristos	xor	$25,$3,$7
129476c4f342Schristos	addu	$24,$6
129576c4f342Schristos	 xor	$23,$20
129676c4f342Schristos	sll	$30,$2,30
129776c4f342Schristos	xor	$25,$2
129876c4f342Schristos	 srl	$6,$23,31
129976c4f342Schristos	 addu	$23,$23
130076c4f342Schristos	srl	$2,$2,2
130176c4f342Schristos	addu	$24,$22
130276c4f342Schristos	 or	$23,$6
130376c4f342Schristos	or	$2,$30
130476c4f342Schristos	addu	$24,$25
130576c4f342Schristos#endif
130676c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
130776c4f342Schristos	 xor	$8,$10
130876c4f342Schristos	addu	$7,$31		# 31
130976c4f342Schristos	rotr	$6,$24,27
131076c4f342Schristos	 xor	$8,$16
131176c4f342Schristos	xor	$25,$2,$3
131276c4f342Schristos	addu	$7,$6
131376c4f342Schristos	 xor	$8,$21
131476c4f342Schristos	xor	$25,$1
131576c4f342Schristos	addu	$7,$23
131676c4f342Schristos	 rotr	$8,$8,31
131776c4f342Schristos	rotr	$1,$1,2
131876c4f342Schristos	addu	$7,$25
131976c4f342Schristos#else
132076c4f342Schristos	 xor	$8,$10
132176c4f342Schristos	sll	$25,$24,5	# 31
132276c4f342Schristos	addu	$7,$31
132376c4f342Schristos	srl	$6,$24,27
132476c4f342Schristos	addu	$7,$25
132576c4f342Schristos	 xor	$8,$16
132676c4f342Schristos	xor	$25,$2,$3
132776c4f342Schristos	addu	$7,$6
132876c4f342Schristos	 xor	$8,$21
132976c4f342Schristos	sll	$30,$1,30
133076c4f342Schristos	xor	$25,$1
133176c4f342Schristos	 srl	$6,$8,31
133276c4f342Schristos	 addu	$8,$8
133376c4f342Schristos	srl	$1,$1,2
133476c4f342Schristos	addu	$7,$23
133576c4f342Schristos	 or	$8,$6
133676c4f342Schristos	or	$1,$30
133776c4f342Schristos	addu	$7,$25
133876c4f342Schristos#endif
133976c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
134076c4f342Schristos	 xor	$9,$11
134176c4f342Schristos	addu	$3,$31		# 32
134276c4f342Schristos	rotr	$6,$7,27
134376c4f342Schristos	 xor	$9,$17
134476c4f342Schristos	xor	$25,$1,$2
134576c4f342Schristos	addu	$3,$6
134676c4f342Schristos	 xor	$9,$22
134776c4f342Schristos	xor	$25,$24
134876c4f342Schristos	addu	$3,$8
134976c4f342Schristos	 rotr	$9,$9,31
135076c4f342Schristos	rotr	$24,$24,2
135176c4f342Schristos	addu	$3,$25
135276c4f342Schristos#else
135376c4f342Schristos	 xor	$9,$11
135476c4f342Schristos	sll	$25,$7,5	# 32
135576c4f342Schristos	addu	$3,$31
135676c4f342Schristos	srl	$6,$7,27
135776c4f342Schristos	addu	$3,$25
135876c4f342Schristos	 xor	$9,$17
135976c4f342Schristos	xor	$25,$1,$2
136076c4f342Schristos	addu	$3,$6
136176c4f342Schristos	 xor	$9,$22
136276c4f342Schristos	sll	$30,$24,30
136376c4f342Schristos	xor	$25,$24
136476c4f342Schristos	 srl	$6,$9,31
136576c4f342Schristos	 addu	$9,$9
136676c4f342Schristos	srl	$24,$24,2
136776c4f342Schristos	addu	$3,$8
136876c4f342Schristos	 or	$9,$6
136976c4f342Schristos	or	$24,$30
137076c4f342Schristos	addu	$3,$25
137176c4f342Schristos#endif
137276c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
137376c4f342Schristos	 xor	$10,$12
137476c4f342Schristos	addu	$2,$31		# 33
137576c4f342Schristos	rotr	$6,$3,27
137676c4f342Schristos	 xor	$10,$18
137776c4f342Schristos	xor	$25,$24,$1
137876c4f342Schristos	addu	$2,$6
137976c4f342Schristos	 xor	$10,$23
138076c4f342Schristos	xor	$25,$7
138176c4f342Schristos	addu	$2,$9
138276c4f342Schristos	 rotr	$10,$10,31
138376c4f342Schristos	rotr	$7,$7,2
138476c4f342Schristos	addu	$2,$25
138576c4f342Schristos#else
138676c4f342Schristos	 xor	$10,$12
138776c4f342Schristos	sll	$25,$3,5	# 33
138876c4f342Schristos	addu	$2,$31
138976c4f342Schristos	srl	$6,$3,27
139076c4f342Schristos	addu	$2,$25
139176c4f342Schristos	 xor	$10,$18
139276c4f342Schristos	xor	$25,$24,$1
139376c4f342Schristos	addu	$2,$6
139476c4f342Schristos	 xor	$10,$23
139576c4f342Schristos	sll	$30,$7,30
139676c4f342Schristos	xor	$25,$7
139776c4f342Schristos	 srl	$6,$10,31
139876c4f342Schristos	 addu	$10,$10
139976c4f342Schristos	srl	$7,$7,2
140076c4f342Schristos	addu	$2,$9
140176c4f342Schristos	 or	$10,$6
140276c4f342Schristos	or	$7,$30
140376c4f342Schristos	addu	$2,$25
140476c4f342Schristos#endif
140576c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
140676c4f342Schristos	 xor	$11,$13
140776c4f342Schristos	addu	$1,$31		# 34
140876c4f342Schristos	rotr	$6,$2,27
140976c4f342Schristos	 xor	$11,$19
141076c4f342Schristos	xor	$25,$7,$24
141176c4f342Schristos	addu	$1,$6
141276c4f342Schristos	 xor	$11,$8
141376c4f342Schristos	xor	$25,$3
141476c4f342Schristos	addu	$1,$10
141576c4f342Schristos	 rotr	$11,$11,31
141676c4f342Schristos	rotr	$3,$3,2
141776c4f342Schristos	addu	$1,$25
141876c4f342Schristos#else
141976c4f342Schristos	 xor	$11,$13
142076c4f342Schristos	sll	$25,$2,5	# 34
142176c4f342Schristos	addu	$1,$31
142276c4f342Schristos	srl	$6,$2,27
142376c4f342Schristos	addu	$1,$25
142476c4f342Schristos	 xor	$11,$19
142576c4f342Schristos	xor	$25,$7,$24
142676c4f342Schristos	addu	$1,$6
142776c4f342Schristos	 xor	$11,$8
142876c4f342Schristos	sll	$30,$3,30
142976c4f342Schristos	xor	$25,$3
143076c4f342Schristos	 srl	$6,$11,31
143176c4f342Schristos	 addu	$11,$11
143276c4f342Schristos	srl	$3,$3,2
143376c4f342Schristos	addu	$1,$10
143476c4f342Schristos	 or	$11,$6
143576c4f342Schristos	or	$3,$30
143676c4f342Schristos	addu	$1,$25
143776c4f342Schristos#endif
143876c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
143976c4f342Schristos	 xor	$12,$14
144076c4f342Schristos	addu	$24,$31		# 35
144176c4f342Schristos	rotr	$6,$1,27
144276c4f342Schristos	 xor	$12,$20
144376c4f342Schristos	xor	$25,$3,$7
144476c4f342Schristos	addu	$24,$6
144576c4f342Schristos	 xor	$12,$9
144676c4f342Schristos	xor	$25,$2
144776c4f342Schristos	addu	$24,$11
144876c4f342Schristos	 rotr	$12,$12,31
144976c4f342Schristos	rotr	$2,$2,2
145076c4f342Schristos	addu	$24,$25
145176c4f342Schristos#else
145276c4f342Schristos	 xor	$12,$14
145376c4f342Schristos	sll	$25,$1,5	# 35
145476c4f342Schristos	addu	$24,$31
145576c4f342Schristos	srl	$6,$1,27
145676c4f342Schristos	addu	$24,$25
145776c4f342Schristos	 xor	$12,$20
145876c4f342Schristos	xor	$25,$3,$7
145976c4f342Schristos	addu	$24,$6
146076c4f342Schristos	 xor	$12,$9
146176c4f342Schristos	sll	$30,$2,30
146276c4f342Schristos	xor	$25,$2
146376c4f342Schristos	 srl	$6,$12,31
146476c4f342Schristos	 addu	$12,$12
146576c4f342Schristos	srl	$2,$2,2
146676c4f342Schristos	addu	$24,$11
146776c4f342Schristos	 or	$12,$6
146876c4f342Schristos	or	$2,$30
146976c4f342Schristos	addu	$24,$25
147076c4f342Schristos#endif
147176c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
147276c4f342Schristos	 xor	$13,$15
147376c4f342Schristos	addu	$7,$31		# 36
147476c4f342Schristos	rotr	$6,$24,27
147576c4f342Schristos	 xor	$13,$21
147676c4f342Schristos	xor	$25,$2,$3
147776c4f342Schristos	addu	$7,$6
147876c4f342Schristos	 xor	$13,$10
147976c4f342Schristos	xor	$25,$1
148076c4f342Schristos	addu	$7,$12
148176c4f342Schristos	 rotr	$13,$13,31
148276c4f342Schristos	rotr	$1,$1,2
148376c4f342Schristos	addu	$7,$25
148476c4f342Schristos#else
148576c4f342Schristos	 xor	$13,$15
148676c4f342Schristos	sll	$25,$24,5	# 36
148776c4f342Schristos	addu	$7,$31
148876c4f342Schristos	srl	$6,$24,27
148976c4f342Schristos	addu	$7,$25
149076c4f342Schristos	 xor	$13,$21
149176c4f342Schristos	xor	$25,$2,$3
149276c4f342Schristos	addu	$7,$6
149376c4f342Schristos	 xor	$13,$10
149476c4f342Schristos	sll	$30,$1,30
149576c4f342Schristos	xor	$25,$1
149676c4f342Schristos	 srl	$6,$13,31
149776c4f342Schristos	 addu	$13,$13
149876c4f342Schristos	srl	$1,$1,2
149976c4f342Schristos	addu	$7,$12
150076c4f342Schristos	 or	$13,$6
150176c4f342Schristos	or	$1,$30
150276c4f342Schristos	addu	$7,$25
150376c4f342Schristos#endif
150476c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
150576c4f342Schristos	 xor	$14,$16
150676c4f342Schristos	addu	$3,$31		# 37
150776c4f342Schristos	rotr	$6,$7,27
150876c4f342Schristos	 xor	$14,$22
150976c4f342Schristos	xor	$25,$1,$2
151076c4f342Schristos	addu	$3,$6
151176c4f342Schristos	 xor	$14,$11
151276c4f342Schristos	xor	$25,$24
151376c4f342Schristos	addu	$3,$13
151476c4f342Schristos	 rotr	$14,$14,31
151576c4f342Schristos	rotr	$24,$24,2
151676c4f342Schristos	addu	$3,$25
151776c4f342Schristos#else
151876c4f342Schristos	 xor	$14,$16
151976c4f342Schristos	sll	$25,$7,5	# 37
152076c4f342Schristos	addu	$3,$31
152176c4f342Schristos	srl	$6,$7,27
152276c4f342Schristos	addu	$3,$25
152376c4f342Schristos	 xor	$14,$22
152476c4f342Schristos	xor	$25,$1,$2
152576c4f342Schristos	addu	$3,$6
152676c4f342Schristos	 xor	$14,$11
152776c4f342Schristos	sll	$30,$24,30
152876c4f342Schristos	xor	$25,$24
152976c4f342Schristos	 srl	$6,$14,31
153076c4f342Schristos	 addu	$14,$14
153176c4f342Schristos	srl	$24,$24,2
153276c4f342Schristos	addu	$3,$13
153376c4f342Schristos	 or	$14,$6
153476c4f342Schristos	or	$24,$30
153576c4f342Schristos	addu	$3,$25
153676c4f342Schristos#endif
153776c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
153876c4f342Schristos	 xor	$15,$17
153976c4f342Schristos	addu	$2,$31		# 38
154076c4f342Schristos	rotr	$6,$3,27
154176c4f342Schristos	 xor	$15,$23
154276c4f342Schristos	xor	$25,$24,$1
154376c4f342Schristos	addu	$2,$6
154476c4f342Schristos	 xor	$15,$12
154576c4f342Schristos	xor	$25,$7
154676c4f342Schristos	addu	$2,$14
154776c4f342Schristos	 rotr	$15,$15,31
154876c4f342Schristos	rotr	$7,$7,2
154976c4f342Schristos	addu	$2,$25
155076c4f342Schristos#else
155176c4f342Schristos	 xor	$15,$17
155276c4f342Schristos	sll	$25,$3,5	# 38
155376c4f342Schristos	addu	$2,$31
155476c4f342Schristos	srl	$6,$3,27
155576c4f342Schristos	addu	$2,$25
155676c4f342Schristos	 xor	$15,$23
155776c4f342Schristos	xor	$25,$24,$1
155876c4f342Schristos	addu	$2,$6
155976c4f342Schristos	 xor	$15,$12
156076c4f342Schristos	sll	$30,$7,30
156176c4f342Schristos	xor	$25,$7
156276c4f342Schristos	 srl	$6,$15,31
156376c4f342Schristos	 addu	$15,$15
156476c4f342Schristos	srl	$7,$7,2
156576c4f342Schristos	addu	$2,$14
156676c4f342Schristos	 or	$15,$6
156776c4f342Schristos	or	$7,$30
156876c4f342Schristos	addu	$2,$25
156976c4f342Schristos#endif
157076c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
157176c4f342Schristos	 xor	$16,$18
157276c4f342Schristos	addu	$1,$31		# 39
157376c4f342Schristos	rotr	$6,$2,27
157476c4f342Schristos	 xor	$16,$8
157576c4f342Schristos	xor	$25,$7,$24
157676c4f342Schristos	addu	$1,$6
157776c4f342Schristos	 xor	$16,$13
157876c4f342Schristos	xor	$25,$3
157976c4f342Schristos	addu	$1,$15
158076c4f342Schristos	 rotr	$16,$16,31
158176c4f342Schristos	rotr	$3,$3,2
158276c4f342Schristos	addu	$1,$25
158376c4f342Schristos#else
158476c4f342Schristos	 xor	$16,$18
158576c4f342Schristos	sll	$25,$2,5	# 39
158676c4f342Schristos	addu	$1,$31
158776c4f342Schristos	srl	$6,$2,27
158876c4f342Schristos	addu	$1,$25
158976c4f342Schristos	 xor	$16,$8
159076c4f342Schristos	xor	$25,$7,$24
159176c4f342Schristos	addu	$1,$6
159276c4f342Schristos	 xor	$16,$13
159376c4f342Schristos	sll	$30,$3,30
159476c4f342Schristos	xor	$25,$3
159576c4f342Schristos	 srl	$6,$16,31
159676c4f342Schristos	 addu	$16,$16
159776c4f342Schristos	srl	$3,$3,2
159876c4f342Schristos	addu	$1,$15
159976c4f342Schristos	 or	$16,$6
160076c4f342Schristos	or	$3,$30
160176c4f342Schristos	addu	$1,$25
160276c4f342Schristos#endif
160376c4f342Schristos	lui	$31,0x8f1b
160476c4f342Schristos	ori	$31,0xbcdc	# K_40_59
160576c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
160676c4f342Schristos	addu	$24,$31		# 40
160776c4f342Schristos	and	$25,$3,$7
160876c4f342Schristos	 xor	$17,$19
160976c4f342Schristos	rotr	$6,$1,27
161076c4f342Schristos	addu	$24,$25
161176c4f342Schristos	 xor	$17,$9
161276c4f342Schristos	xor	$25,$3,$7
161376c4f342Schristos	addu	$24,$6
161476c4f342Schristos	 xor	$17,$14
161576c4f342Schristos	and	$25,$2
161676c4f342Schristos	addu	$24,$16
161776c4f342Schristos	 rotr	$17,$17,31
161876c4f342Schristos	rotr	$2,$2,2
161976c4f342Schristos	addu	$24,$25
162076c4f342Schristos#else
162176c4f342Schristos	 xor	$17,$19
162276c4f342Schristos	sll	$25,$1,5	# 40
162376c4f342Schristos	addu	$24,$31
162476c4f342Schristos	srl	$6,$1,27
162576c4f342Schristos	addu	$24,$25
162676c4f342Schristos	 xor	$17,$9
162776c4f342Schristos	and	$25,$3,$7
162876c4f342Schristos	addu	$24,$6
162976c4f342Schristos	 xor	$17,$14
163076c4f342Schristos	sll	$30,$2,30
163176c4f342Schristos	addu	$24,$25
163276c4f342Schristos	 srl	$6,$17,31
163376c4f342Schristos	xor	$25,$3,$7
163476c4f342Schristos	 addu	$17,$17
163576c4f342Schristos	and	$25,$2
163676c4f342Schristos	srl	$2,$2,2
163776c4f342Schristos	 or	$17,$6
163876c4f342Schristos	addu	$24,$16
163976c4f342Schristos	or	$2,$30
164076c4f342Schristos	addu	$24,$25
164176c4f342Schristos#endif
164276c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
164376c4f342Schristos	addu	$7,$31		# 41
164476c4f342Schristos	and	$25,$2,$3
164576c4f342Schristos	 xor	$18,$20
164676c4f342Schristos	rotr	$6,$24,27
164776c4f342Schristos	addu	$7,$25
164876c4f342Schristos	 xor	$18,$10
164976c4f342Schristos	xor	$25,$2,$3
165076c4f342Schristos	addu	$7,$6
165176c4f342Schristos	 xor	$18,$15
165276c4f342Schristos	and	$25,$1
165376c4f342Schristos	addu	$7,$17
165476c4f342Schristos	 rotr	$18,$18,31
165576c4f342Schristos	rotr	$1,$1,2
165676c4f342Schristos	addu	$7,$25
165776c4f342Schristos#else
165876c4f342Schristos	 xor	$18,$20
165976c4f342Schristos	sll	$25,$24,5	# 41
166076c4f342Schristos	addu	$7,$31
166176c4f342Schristos	srl	$6,$24,27
166276c4f342Schristos	addu	$7,$25
166376c4f342Schristos	 xor	$18,$10
166476c4f342Schristos	and	$25,$2,$3
166576c4f342Schristos	addu	$7,$6
166676c4f342Schristos	 xor	$18,$15
166776c4f342Schristos	sll	$30,$1,30
166876c4f342Schristos	addu	$7,$25
166976c4f342Schristos	 srl	$6,$18,31
167076c4f342Schristos	xor	$25,$2,$3
167176c4f342Schristos	 addu	$18,$18
167276c4f342Schristos	and	$25,$1
167376c4f342Schristos	srl	$1,$1,2
167476c4f342Schristos	 or	$18,$6
167576c4f342Schristos	addu	$7,$17
167676c4f342Schristos	or	$1,$30
167776c4f342Schristos	addu	$7,$25
167876c4f342Schristos#endif
167976c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
168076c4f342Schristos	addu	$3,$31		# 42
168176c4f342Schristos	and	$25,$1,$2
168276c4f342Schristos	 xor	$19,$21
168376c4f342Schristos	rotr	$6,$7,27
168476c4f342Schristos	addu	$3,$25
168576c4f342Schristos	 xor	$19,$11
168676c4f342Schristos	xor	$25,$1,$2
168776c4f342Schristos	addu	$3,$6
168876c4f342Schristos	 xor	$19,$16
168976c4f342Schristos	and	$25,$24
169076c4f342Schristos	addu	$3,$18
169176c4f342Schristos	 rotr	$19,$19,31
169276c4f342Schristos	rotr	$24,$24,2
169376c4f342Schristos	addu	$3,$25
169476c4f342Schristos#else
169576c4f342Schristos	 xor	$19,$21
169676c4f342Schristos	sll	$25,$7,5	# 42
169776c4f342Schristos	addu	$3,$31
169876c4f342Schristos	srl	$6,$7,27
169976c4f342Schristos	addu	$3,$25
170076c4f342Schristos	 xor	$19,$11
170176c4f342Schristos	and	$25,$1,$2
170276c4f342Schristos	addu	$3,$6
170376c4f342Schristos	 xor	$19,$16
170476c4f342Schristos	sll	$30,$24,30
170576c4f342Schristos	addu	$3,$25
170676c4f342Schristos	 srl	$6,$19,31
170776c4f342Schristos	xor	$25,$1,$2
170876c4f342Schristos	 addu	$19,$19
170976c4f342Schristos	and	$25,$24
171076c4f342Schristos	srl	$24,$24,2
171176c4f342Schristos	 or	$19,$6
171276c4f342Schristos	addu	$3,$18
171376c4f342Schristos	or	$24,$30
171476c4f342Schristos	addu	$3,$25
171576c4f342Schristos#endif
171676c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
171776c4f342Schristos	addu	$2,$31		# 43
171876c4f342Schristos	and	$25,$24,$1
171976c4f342Schristos	 xor	$20,$22
172076c4f342Schristos	rotr	$6,$3,27
172176c4f342Schristos	addu	$2,$25
172276c4f342Schristos	 xor	$20,$12
172376c4f342Schristos	xor	$25,$24,$1
172476c4f342Schristos	addu	$2,$6
172576c4f342Schristos	 xor	$20,$17
172676c4f342Schristos	and	$25,$7
172776c4f342Schristos	addu	$2,$19
172876c4f342Schristos	 rotr	$20,$20,31
172976c4f342Schristos	rotr	$7,$7,2
173076c4f342Schristos	addu	$2,$25
173176c4f342Schristos#else
173276c4f342Schristos	 xor	$20,$22
173376c4f342Schristos	sll	$25,$3,5	# 43
173476c4f342Schristos	addu	$2,$31
173576c4f342Schristos	srl	$6,$3,27
173676c4f342Schristos	addu	$2,$25
173776c4f342Schristos	 xor	$20,$12
173876c4f342Schristos	and	$25,$24,$1
173976c4f342Schristos	addu	$2,$6
174076c4f342Schristos	 xor	$20,$17
174176c4f342Schristos	sll	$30,$7,30
174276c4f342Schristos	addu	$2,$25
174376c4f342Schristos	 srl	$6,$20,31
174476c4f342Schristos	xor	$25,$24,$1
174576c4f342Schristos	 addu	$20,$20
174676c4f342Schristos	and	$25,$7
174776c4f342Schristos	srl	$7,$7,2
174876c4f342Schristos	 or	$20,$6
174976c4f342Schristos	addu	$2,$19
175076c4f342Schristos	or	$7,$30
175176c4f342Schristos	addu	$2,$25
175276c4f342Schristos#endif
175376c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
175476c4f342Schristos	addu	$1,$31		# 44
175576c4f342Schristos	and	$25,$7,$24
175676c4f342Schristos	 xor	$21,$23
175776c4f342Schristos	rotr	$6,$2,27
175876c4f342Schristos	addu	$1,$25
175976c4f342Schristos	 xor	$21,$13
176076c4f342Schristos	xor	$25,$7,$24
176176c4f342Schristos	addu	$1,$6
176276c4f342Schristos	 xor	$21,$18
176376c4f342Schristos	and	$25,$3
176476c4f342Schristos	addu	$1,$20
176576c4f342Schristos	 rotr	$21,$21,31
176676c4f342Schristos	rotr	$3,$3,2
176776c4f342Schristos	addu	$1,$25
176876c4f342Schristos#else
176976c4f342Schristos	 xor	$21,$23
177076c4f342Schristos	sll	$25,$2,5	# 44
177176c4f342Schristos	addu	$1,$31
177276c4f342Schristos	srl	$6,$2,27
177376c4f342Schristos	addu	$1,$25
177476c4f342Schristos	 xor	$21,$13
177576c4f342Schristos	and	$25,$7,$24
177676c4f342Schristos	addu	$1,$6
177776c4f342Schristos	 xor	$21,$18
177876c4f342Schristos	sll	$30,$3,30
177976c4f342Schristos	addu	$1,$25
178076c4f342Schristos	 srl	$6,$21,31
178176c4f342Schristos	xor	$25,$7,$24
178276c4f342Schristos	 addu	$21,$21
178376c4f342Schristos	and	$25,$3
178476c4f342Schristos	srl	$3,$3,2
178576c4f342Schristos	 or	$21,$6
178676c4f342Schristos	addu	$1,$20
178776c4f342Schristos	or	$3,$30
178876c4f342Schristos	addu	$1,$25
178976c4f342Schristos#endif
179076c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
179176c4f342Schristos	addu	$24,$31		# 45
179276c4f342Schristos	and	$25,$3,$7
179376c4f342Schristos	 xor	$22,$8
179476c4f342Schristos	rotr	$6,$1,27
179576c4f342Schristos	addu	$24,$25
179676c4f342Schristos	 xor	$22,$14
179776c4f342Schristos	xor	$25,$3,$7
179876c4f342Schristos	addu	$24,$6
179976c4f342Schristos	 xor	$22,$19
180076c4f342Schristos	and	$25,$2
180176c4f342Schristos	addu	$24,$21
180276c4f342Schristos	 rotr	$22,$22,31
180376c4f342Schristos	rotr	$2,$2,2
180476c4f342Schristos	addu	$24,$25
180576c4f342Schristos#else
180676c4f342Schristos	 xor	$22,$8
180776c4f342Schristos	sll	$25,$1,5	# 45
180876c4f342Schristos	addu	$24,$31
180976c4f342Schristos	srl	$6,$1,27
181076c4f342Schristos	addu	$24,$25
181176c4f342Schristos	 xor	$22,$14
181276c4f342Schristos	and	$25,$3,$7
181376c4f342Schristos	addu	$24,$6
181476c4f342Schristos	 xor	$22,$19
181576c4f342Schristos	sll	$30,$2,30
181676c4f342Schristos	addu	$24,$25
181776c4f342Schristos	 srl	$6,$22,31
181876c4f342Schristos	xor	$25,$3,$7
181976c4f342Schristos	 addu	$22,$22
182076c4f342Schristos	and	$25,$2
182176c4f342Schristos	srl	$2,$2,2
182276c4f342Schristos	 or	$22,$6
182376c4f342Schristos	addu	$24,$21
182476c4f342Schristos	or	$2,$30
182576c4f342Schristos	addu	$24,$25
182676c4f342Schristos#endif
182776c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
182876c4f342Schristos	addu	$7,$31		# 46
182976c4f342Schristos	and	$25,$2,$3
183076c4f342Schristos	 xor	$23,$9
183176c4f342Schristos	rotr	$6,$24,27
183276c4f342Schristos	addu	$7,$25
183376c4f342Schristos	 xor	$23,$15
183476c4f342Schristos	xor	$25,$2,$3
183576c4f342Schristos	addu	$7,$6
183676c4f342Schristos	 xor	$23,$20
183776c4f342Schristos	and	$25,$1
183876c4f342Schristos	addu	$7,$22
183976c4f342Schristos	 rotr	$23,$23,31
184076c4f342Schristos	rotr	$1,$1,2
184176c4f342Schristos	addu	$7,$25
184276c4f342Schristos#else
184376c4f342Schristos	 xor	$23,$9
184476c4f342Schristos	sll	$25,$24,5	# 46
184576c4f342Schristos	addu	$7,$31
184676c4f342Schristos	srl	$6,$24,27
184776c4f342Schristos	addu	$7,$25
184876c4f342Schristos	 xor	$23,$15
184976c4f342Schristos	and	$25,$2,$3
185076c4f342Schristos	addu	$7,$6
185176c4f342Schristos	 xor	$23,$20
185276c4f342Schristos	sll	$30,$1,30
185376c4f342Schristos	addu	$7,$25
185476c4f342Schristos	 srl	$6,$23,31
185576c4f342Schristos	xor	$25,$2,$3
185676c4f342Schristos	 addu	$23,$23
185776c4f342Schristos	and	$25,$1
185876c4f342Schristos	srl	$1,$1,2
185976c4f342Schristos	 or	$23,$6
186076c4f342Schristos	addu	$7,$22
186176c4f342Schristos	or	$1,$30
186276c4f342Schristos	addu	$7,$25
186376c4f342Schristos#endif
186476c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
186576c4f342Schristos	addu	$3,$31		# 47
186676c4f342Schristos	and	$25,$1,$2
186776c4f342Schristos	 xor	$8,$10
186876c4f342Schristos	rotr	$6,$7,27
186976c4f342Schristos	addu	$3,$25
187076c4f342Schristos	 xor	$8,$16
187176c4f342Schristos	xor	$25,$1,$2
187276c4f342Schristos	addu	$3,$6
187376c4f342Schristos	 xor	$8,$21
187476c4f342Schristos	and	$25,$24
187576c4f342Schristos	addu	$3,$23
187676c4f342Schristos	 rotr	$8,$8,31
187776c4f342Schristos	rotr	$24,$24,2
187876c4f342Schristos	addu	$3,$25
187976c4f342Schristos#else
188076c4f342Schristos	 xor	$8,$10
188176c4f342Schristos	sll	$25,$7,5	# 47
188276c4f342Schristos	addu	$3,$31
188376c4f342Schristos	srl	$6,$7,27
188476c4f342Schristos	addu	$3,$25
188576c4f342Schristos	 xor	$8,$16
188676c4f342Schristos	and	$25,$1,$2
188776c4f342Schristos	addu	$3,$6
188876c4f342Schristos	 xor	$8,$21
188976c4f342Schristos	sll	$30,$24,30
189076c4f342Schristos	addu	$3,$25
189176c4f342Schristos	 srl	$6,$8,31
189276c4f342Schristos	xor	$25,$1,$2
189376c4f342Schristos	 addu	$8,$8
189476c4f342Schristos	and	$25,$24
189576c4f342Schristos	srl	$24,$24,2
189676c4f342Schristos	 or	$8,$6
189776c4f342Schristos	addu	$3,$23
189876c4f342Schristos	or	$24,$30
189976c4f342Schristos	addu	$3,$25
190076c4f342Schristos#endif
190176c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
190276c4f342Schristos	addu	$2,$31		# 48
190376c4f342Schristos	and	$25,$24,$1
190476c4f342Schristos	 xor	$9,$11
190576c4f342Schristos	rotr	$6,$3,27
190676c4f342Schristos	addu	$2,$25
190776c4f342Schristos	 xor	$9,$17
190876c4f342Schristos	xor	$25,$24,$1
190976c4f342Schristos	addu	$2,$6
191076c4f342Schristos	 xor	$9,$22
191176c4f342Schristos	and	$25,$7
191276c4f342Schristos	addu	$2,$8
191376c4f342Schristos	 rotr	$9,$9,31
191476c4f342Schristos	rotr	$7,$7,2
191576c4f342Schristos	addu	$2,$25
191676c4f342Schristos#else
191776c4f342Schristos	 xor	$9,$11
191876c4f342Schristos	sll	$25,$3,5	# 48
191976c4f342Schristos	addu	$2,$31
192076c4f342Schristos	srl	$6,$3,27
192176c4f342Schristos	addu	$2,$25
192276c4f342Schristos	 xor	$9,$17
192376c4f342Schristos	and	$25,$24,$1
192476c4f342Schristos	addu	$2,$6
192576c4f342Schristos	 xor	$9,$22
192676c4f342Schristos	sll	$30,$7,30
192776c4f342Schristos	addu	$2,$25
192876c4f342Schristos	 srl	$6,$9,31
192976c4f342Schristos	xor	$25,$24,$1
193076c4f342Schristos	 addu	$9,$9
193176c4f342Schristos	and	$25,$7
193276c4f342Schristos	srl	$7,$7,2
193376c4f342Schristos	 or	$9,$6
193476c4f342Schristos	addu	$2,$8
193576c4f342Schristos	or	$7,$30
193676c4f342Schristos	addu	$2,$25
193776c4f342Schristos#endif
193876c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
193976c4f342Schristos	addu	$1,$31		# 49
194076c4f342Schristos	and	$25,$7,$24
194176c4f342Schristos	 xor	$10,$12
194276c4f342Schristos	rotr	$6,$2,27
194376c4f342Schristos	addu	$1,$25
194476c4f342Schristos	 xor	$10,$18
194576c4f342Schristos	xor	$25,$7,$24
194676c4f342Schristos	addu	$1,$6
194776c4f342Schristos	 xor	$10,$23
194876c4f342Schristos	and	$25,$3
194976c4f342Schristos	addu	$1,$9
195076c4f342Schristos	 rotr	$10,$10,31
195176c4f342Schristos	rotr	$3,$3,2
195276c4f342Schristos	addu	$1,$25
195376c4f342Schristos#else
195476c4f342Schristos	 xor	$10,$12
195576c4f342Schristos	sll	$25,$2,5	# 49
195676c4f342Schristos	addu	$1,$31
195776c4f342Schristos	srl	$6,$2,27
195876c4f342Schristos	addu	$1,$25
195976c4f342Schristos	 xor	$10,$18
196076c4f342Schristos	and	$25,$7,$24
196176c4f342Schristos	addu	$1,$6
196276c4f342Schristos	 xor	$10,$23
196376c4f342Schristos	sll	$30,$3,30
196476c4f342Schristos	addu	$1,$25
196576c4f342Schristos	 srl	$6,$10,31
196676c4f342Schristos	xor	$25,$7,$24
196776c4f342Schristos	 addu	$10,$10
196876c4f342Schristos	and	$25,$3
196976c4f342Schristos	srl	$3,$3,2
197076c4f342Schristos	 or	$10,$6
197176c4f342Schristos	addu	$1,$9
197276c4f342Schristos	or	$3,$30
197376c4f342Schristos	addu	$1,$25
197476c4f342Schristos#endif
197576c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
197676c4f342Schristos	addu	$24,$31		# 50
197776c4f342Schristos	and	$25,$3,$7
197876c4f342Schristos	 xor	$11,$13
197976c4f342Schristos	rotr	$6,$1,27
198076c4f342Schristos	addu	$24,$25
198176c4f342Schristos	 xor	$11,$19
198276c4f342Schristos	xor	$25,$3,$7
198376c4f342Schristos	addu	$24,$6
198476c4f342Schristos	 xor	$11,$8
198576c4f342Schristos	and	$25,$2
198676c4f342Schristos	addu	$24,$10
198776c4f342Schristos	 rotr	$11,$11,31
198876c4f342Schristos	rotr	$2,$2,2
198976c4f342Schristos	addu	$24,$25
199076c4f342Schristos#else
199176c4f342Schristos	 xor	$11,$13
199276c4f342Schristos	sll	$25,$1,5	# 50
199376c4f342Schristos	addu	$24,$31
199476c4f342Schristos	srl	$6,$1,27
199576c4f342Schristos	addu	$24,$25
199676c4f342Schristos	 xor	$11,$19
199776c4f342Schristos	and	$25,$3,$7
199876c4f342Schristos	addu	$24,$6
199976c4f342Schristos	 xor	$11,$8
200076c4f342Schristos	sll	$30,$2,30
200176c4f342Schristos	addu	$24,$25
200276c4f342Schristos	 srl	$6,$11,31
200376c4f342Schristos	xor	$25,$3,$7
200476c4f342Schristos	 addu	$11,$11
200576c4f342Schristos	and	$25,$2
200676c4f342Schristos	srl	$2,$2,2
200776c4f342Schristos	 or	$11,$6
200876c4f342Schristos	addu	$24,$10
200976c4f342Schristos	or	$2,$30
201076c4f342Schristos	addu	$24,$25
201176c4f342Schristos#endif
201276c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
201376c4f342Schristos	addu	$7,$31		# 51
201476c4f342Schristos	and	$25,$2,$3
201576c4f342Schristos	 xor	$12,$14
201676c4f342Schristos	rotr	$6,$24,27
201776c4f342Schristos	addu	$7,$25
201876c4f342Schristos	 xor	$12,$20
201976c4f342Schristos	xor	$25,$2,$3
202076c4f342Schristos	addu	$7,$6
202176c4f342Schristos	 xor	$12,$9
202276c4f342Schristos	and	$25,$1
202376c4f342Schristos	addu	$7,$11
202476c4f342Schristos	 rotr	$12,$12,31
202576c4f342Schristos	rotr	$1,$1,2
202676c4f342Schristos	addu	$7,$25
202776c4f342Schristos#else
202876c4f342Schristos	 xor	$12,$14
202976c4f342Schristos	sll	$25,$24,5	# 51
203076c4f342Schristos	addu	$7,$31
203176c4f342Schristos	srl	$6,$24,27
203276c4f342Schristos	addu	$7,$25
203376c4f342Schristos	 xor	$12,$20
203476c4f342Schristos	and	$25,$2,$3
203576c4f342Schristos	addu	$7,$6
203676c4f342Schristos	 xor	$12,$9
203776c4f342Schristos	sll	$30,$1,30
203876c4f342Schristos	addu	$7,$25
203976c4f342Schristos	 srl	$6,$12,31
204076c4f342Schristos	xor	$25,$2,$3
204176c4f342Schristos	 addu	$12,$12
204276c4f342Schristos	and	$25,$1
204376c4f342Schristos	srl	$1,$1,2
204476c4f342Schristos	 or	$12,$6
204576c4f342Schristos	addu	$7,$11
204676c4f342Schristos	or	$1,$30
204776c4f342Schristos	addu	$7,$25
204876c4f342Schristos#endif
204976c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
205076c4f342Schristos	addu	$3,$31		# 52
205176c4f342Schristos	and	$25,$1,$2
205276c4f342Schristos	 xor	$13,$15
205376c4f342Schristos	rotr	$6,$7,27
205476c4f342Schristos	addu	$3,$25
205576c4f342Schristos	 xor	$13,$21
205676c4f342Schristos	xor	$25,$1,$2
205776c4f342Schristos	addu	$3,$6
205876c4f342Schristos	 xor	$13,$10
205976c4f342Schristos	and	$25,$24
206076c4f342Schristos	addu	$3,$12
206176c4f342Schristos	 rotr	$13,$13,31
206276c4f342Schristos	rotr	$24,$24,2
206376c4f342Schristos	addu	$3,$25
206476c4f342Schristos#else
206576c4f342Schristos	 xor	$13,$15
206676c4f342Schristos	sll	$25,$7,5	# 52
206776c4f342Schristos	addu	$3,$31
206876c4f342Schristos	srl	$6,$7,27
206976c4f342Schristos	addu	$3,$25
207076c4f342Schristos	 xor	$13,$21
207176c4f342Schristos	and	$25,$1,$2
207276c4f342Schristos	addu	$3,$6
207376c4f342Schristos	 xor	$13,$10
207476c4f342Schristos	sll	$30,$24,30
207576c4f342Schristos	addu	$3,$25
207676c4f342Schristos	 srl	$6,$13,31
207776c4f342Schristos	xor	$25,$1,$2
207876c4f342Schristos	 addu	$13,$13
207976c4f342Schristos	and	$25,$24
208076c4f342Schristos	srl	$24,$24,2
208176c4f342Schristos	 or	$13,$6
208276c4f342Schristos	addu	$3,$12
208376c4f342Schristos	or	$24,$30
208476c4f342Schristos	addu	$3,$25
208576c4f342Schristos#endif
208676c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
208776c4f342Schristos	addu	$2,$31		# 53
208876c4f342Schristos	and	$25,$24,$1
208976c4f342Schristos	 xor	$14,$16
209076c4f342Schristos	rotr	$6,$3,27
209176c4f342Schristos	addu	$2,$25
209276c4f342Schristos	 xor	$14,$22
209376c4f342Schristos	xor	$25,$24,$1
209476c4f342Schristos	addu	$2,$6
209576c4f342Schristos	 xor	$14,$11
209676c4f342Schristos	and	$25,$7
209776c4f342Schristos	addu	$2,$13
209876c4f342Schristos	 rotr	$14,$14,31
209976c4f342Schristos	rotr	$7,$7,2
210076c4f342Schristos	addu	$2,$25
210176c4f342Schristos#else
210276c4f342Schristos	 xor	$14,$16
210376c4f342Schristos	sll	$25,$3,5	# 53
210476c4f342Schristos	addu	$2,$31
210576c4f342Schristos	srl	$6,$3,27
210676c4f342Schristos	addu	$2,$25
210776c4f342Schristos	 xor	$14,$22
210876c4f342Schristos	and	$25,$24,$1
210976c4f342Schristos	addu	$2,$6
211076c4f342Schristos	 xor	$14,$11
211176c4f342Schristos	sll	$30,$7,30
211276c4f342Schristos	addu	$2,$25
211376c4f342Schristos	 srl	$6,$14,31
211476c4f342Schristos	xor	$25,$24,$1
211576c4f342Schristos	 addu	$14,$14
211676c4f342Schristos	and	$25,$7
211776c4f342Schristos	srl	$7,$7,2
211876c4f342Schristos	 or	$14,$6
211976c4f342Schristos	addu	$2,$13
212076c4f342Schristos	or	$7,$30
212176c4f342Schristos	addu	$2,$25
212276c4f342Schristos#endif
212376c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
212476c4f342Schristos	addu	$1,$31		# 54
212576c4f342Schristos	and	$25,$7,$24
212676c4f342Schristos	 xor	$15,$17
212776c4f342Schristos	rotr	$6,$2,27
212876c4f342Schristos	addu	$1,$25
212976c4f342Schristos	 xor	$15,$23
213076c4f342Schristos	xor	$25,$7,$24
213176c4f342Schristos	addu	$1,$6
213276c4f342Schristos	 xor	$15,$12
213376c4f342Schristos	and	$25,$3
213476c4f342Schristos	addu	$1,$14
213576c4f342Schristos	 rotr	$15,$15,31
213676c4f342Schristos	rotr	$3,$3,2
213776c4f342Schristos	addu	$1,$25
213876c4f342Schristos#else
213976c4f342Schristos	 xor	$15,$17
214076c4f342Schristos	sll	$25,$2,5	# 54
214176c4f342Schristos	addu	$1,$31
214276c4f342Schristos	srl	$6,$2,27
214376c4f342Schristos	addu	$1,$25
214476c4f342Schristos	 xor	$15,$23
214576c4f342Schristos	and	$25,$7,$24
214676c4f342Schristos	addu	$1,$6
214776c4f342Schristos	 xor	$15,$12
214876c4f342Schristos	sll	$30,$3,30
214976c4f342Schristos	addu	$1,$25
215076c4f342Schristos	 srl	$6,$15,31
215176c4f342Schristos	xor	$25,$7,$24
215276c4f342Schristos	 addu	$15,$15
215376c4f342Schristos	and	$25,$3
215476c4f342Schristos	srl	$3,$3,2
215576c4f342Schristos	 or	$15,$6
215676c4f342Schristos	addu	$1,$14
215776c4f342Schristos	or	$3,$30
215876c4f342Schristos	addu	$1,$25
215976c4f342Schristos#endif
216076c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
216176c4f342Schristos	addu	$24,$31		# 55
216276c4f342Schristos	and	$25,$3,$7
216376c4f342Schristos	 xor	$16,$18
216476c4f342Schristos	rotr	$6,$1,27
216576c4f342Schristos	addu	$24,$25
216676c4f342Schristos	 xor	$16,$8
216776c4f342Schristos	xor	$25,$3,$7
216876c4f342Schristos	addu	$24,$6
216976c4f342Schristos	 xor	$16,$13
217076c4f342Schristos	and	$25,$2
217176c4f342Schristos	addu	$24,$15
217276c4f342Schristos	 rotr	$16,$16,31
217376c4f342Schristos	rotr	$2,$2,2
217476c4f342Schristos	addu	$24,$25
217576c4f342Schristos#else
217676c4f342Schristos	 xor	$16,$18
217776c4f342Schristos	sll	$25,$1,5	# 55
217876c4f342Schristos	addu	$24,$31
217976c4f342Schristos	srl	$6,$1,27
218076c4f342Schristos	addu	$24,$25
218176c4f342Schristos	 xor	$16,$8
218276c4f342Schristos	and	$25,$3,$7
218376c4f342Schristos	addu	$24,$6
218476c4f342Schristos	 xor	$16,$13
218576c4f342Schristos	sll	$30,$2,30
218676c4f342Schristos	addu	$24,$25
218776c4f342Schristos	 srl	$6,$16,31
218876c4f342Schristos	xor	$25,$3,$7
218976c4f342Schristos	 addu	$16,$16
219076c4f342Schristos	and	$25,$2
219176c4f342Schristos	srl	$2,$2,2
219276c4f342Schristos	 or	$16,$6
219376c4f342Schristos	addu	$24,$15
219476c4f342Schristos	or	$2,$30
219576c4f342Schristos	addu	$24,$25
219676c4f342Schristos#endif
219776c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
219876c4f342Schristos	addu	$7,$31		# 56
219976c4f342Schristos	and	$25,$2,$3
220076c4f342Schristos	 xor	$17,$19
220176c4f342Schristos	rotr	$6,$24,27
220276c4f342Schristos	addu	$7,$25
220376c4f342Schristos	 xor	$17,$9
220476c4f342Schristos	xor	$25,$2,$3
220576c4f342Schristos	addu	$7,$6
220676c4f342Schristos	 xor	$17,$14
220776c4f342Schristos	and	$25,$1
220876c4f342Schristos	addu	$7,$16
220976c4f342Schristos	 rotr	$17,$17,31
221076c4f342Schristos	rotr	$1,$1,2
221176c4f342Schristos	addu	$7,$25
221276c4f342Schristos#else
221376c4f342Schristos	 xor	$17,$19
221476c4f342Schristos	sll	$25,$24,5	# 56
221576c4f342Schristos	addu	$7,$31
221676c4f342Schristos	srl	$6,$24,27
221776c4f342Schristos	addu	$7,$25
221876c4f342Schristos	 xor	$17,$9
221976c4f342Schristos	and	$25,$2,$3
222076c4f342Schristos	addu	$7,$6
222176c4f342Schristos	 xor	$17,$14
222276c4f342Schristos	sll	$30,$1,30
222376c4f342Schristos	addu	$7,$25
222476c4f342Schristos	 srl	$6,$17,31
222576c4f342Schristos	xor	$25,$2,$3
222676c4f342Schristos	 addu	$17,$17
222776c4f342Schristos	and	$25,$1
222876c4f342Schristos	srl	$1,$1,2
222976c4f342Schristos	 or	$17,$6
223076c4f342Schristos	addu	$7,$16
223176c4f342Schristos	or	$1,$30
223276c4f342Schristos	addu	$7,$25
223376c4f342Schristos#endif
223476c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
223576c4f342Schristos	addu	$3,$31		# 57
223676c4f342Schristos	and	$25,$1,$2
223776c4f342Schristos	 xor	$18,$20
223876c4f342Schristos	rotr	$6,$7,27
223976c4f342Schristos	addu	$3,$25
224076c4f342Schristos	 xor	$18,$10
224176c4f342Schristos	xor	$25,$1,$2
224276c4f342Schristos	addu	$3,$6
224376c4f342Schristos	 xor	$18,$15
224476c4f342Schristos	and	$25,$24
224576c4f342Schristos	addu	$3,$17
224676c4f342Schristos	 rotr	$18,$18,31
224776c4f342Schristos	rotr	$24,$24,2
224876c4f342Schristos	addu	$3,$25
224976c4f342Schristos#else
225076c4f342Schristos	 xor	$18,$20
225176c4f342Schristos	sll	$25,$7,5	# 57
225276c4f342Schristos	addu	$3,$31
225376c4f342Schristos	srl	$6,$7,27
225476c4f342Schristos	addu	$3,$25
225576c4f342Schristos	 xor	$18,$10
225676c4f342Schristos	and	$25,$1,$2
225776c4f342Schristos	addu	$3,$6
225876c4f342Schristos	 xor	$18,$15
225976c4f342Schristos	sll	$30,$24,30
226076c4f342Schristos	addu	$3,$25
226176c4f342Schristos	 srl	$6,$18,31
226276c4f342Schristos	xor	$25,$1,$2
226376c4f342Schristos	 addu	$18,$18
226476c4f342Schristos	and	$25,$24
226576c4f342Schristos	srl	$24,$24,2
226676c4f342Schristos	 or	$18,$6
226776c4f342Schristos	addu	$3,$17
226876c4f342Schristos	or	$24,$30
226976c4f342Schristos	addu	$3,$25
227076c4f342Schristos#endif
227176c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
227276c4f342Schristos	addu	$2,$31		# 58
227376c4f342Schristos	and	$25,$24,$1
227476c4f342Schristos	 xor	$19,$21
227576c4f342Schristos	rotr	$6,$3,27
227676c4f342Schristos	addu	$2,$25
227776c4f342Schristos	 xor	$19,$11
227876c4f342Schristos	xor	$25,$24,$1
227976c4f342Schristos	addu	$2,$6
228076c4f342Schristos	 xor	$19,$16
228176c4f342Schristos	and	$25,$7
228276c4f342Schristos	addu	$2,$18
228376c4f342Schristos	 rotr	$19,$19,31
228476c4f342Schristos	rotr	$7,$7,2
228576c4f342Schristos	addu	$2,$25
228676c4f342Schristos#else
228776c4f342Schristos	 xor	$19,$21
228876c4f342Schristos	sll	$25,$3,5	# 58
228976c4f342Schristos	addu	$2,$31
229076c4f342Schristos	srl	$6,$3,27
229176c4f342Schristos	addu	$2,$25
229276c4f342Schristos	 xor	$19,$11
229376c4f342Schristos	and	$25,$24,$1
229476c4f342Schristos	addu	$2,$6
229576c4f342Schristos	 xor	$19,$16
229676c4f342Schristos	sll	$30,$7,30
229776c4f342Schristos	addu	$2,$25
229876c4f342Schristos	 srl	$6,$19,31
229976c4f342Schristos	xor	$25,$24,$1
230076c4f342Schristos	 addu	$19,$19
230176c4f342Schristos	and	$25,$7
230276c4f342Schristos	srl	$7,$7,2
230376c4f342Schristos	 or	$19,$6
230476c4f342Schristos	addu	$2,$18
230576c4f342Schristos	or	$7,$30
230676c4f342Schristos	addu	$2,$25
230776c4f342Schristos#endif
230876c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
230976c4f342Schristos	addu	$1,$31		# 59
231076c4f342Schristos	and	$25,$7,$24
231176c4f342Schristos	 xor	$20,$22
231276c4f342Schristos	rotr	$6,$2,27
231376c4f342Schristos	addu	$1,$25
231476c4f342Schristos	 xor	$20,$12
231576c4f342Schristos	xor	$25,$7,$24
231676c4f342Schristos	addu	$1,$6
231776c4f342Schristos	 xor	$20,$17
231876c4f342Schristos	and	$25,$3
231976c4f342Schristos	addu	$1,$19
232076c4f342Schristos	 rotr	$20,$20,31
232176c4f342Schristos	rotr	$3,$3,2
232276c4f342Schristos	addu	$1,$25
232376c4f342Schristos#else
232476c4f342Schristos	 xor	$20,$22
232576c4f342Schristos	sll	$25,$2,5	# 59
232676c4f342Schristos	addu	$1,$31
232776c4f342Schristos	srl	$6,$2,27
232876c4f342Schristos	addu	$1,$25
232976c4f342Schristos	 xor	$20,$12
233076c4f342Schristos	and	$25,$7,$24
233176c4f342Schristos	addu	$1,$6
233276c4f342Schristos	 xor	$20,$17
233376c4f342Schristos	sll	$30,$3,30
233476c4f342Schristos	addu	$1,$25
233576c4f342Schristos	 srl	$6,$20,31
233676c4f342Schristos	xor	$25,$7,$24
233776c4f342Schristos	 addu	$20,$20
233876c4f342Schristos	and	$25,$3
233976c4f342Schristos	srl	$3,$3,2
234076c4f342Schristos	 or	$20,$6
234176c4f342Schristos	addu	$1,$19
234276c4f342Schristos	or	$3,$30
234376c4f342Schristos	addu	$1,$25
234476c4f342Schristos#endif
234576c4f342Schristos	lui	$31,0xca62
234676c4f342Schristos	ori	$31,0xc1d6	# K_60_79
234776c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
234876c4f342Schristos	 xor	$21,$23
234976c4f342Schristos	addu	$24,$31		# 60
235076c4f342Schristos	rotr	$6,$1,27
235176c4f342Schristos	 xor	$21,$13
235276c4f342Schristos	xor	$25,$3,$7
235376c4f342Schristos	addu	$24,$6
235476c4f342Schristos	 xor	$21,$18
235576c4f342Schristos	xor	$25,$2
235676c4f342Schristos	addu	$24,$20
235776c4f342Schristos	 rotr	$21,$21,31
235876c4f342Schristos	rotr	$2,$2,2
235976c4f342Schristos	addu	$24,$25
236076c4f342Schristos#else
236176c4f342Schristos	 xor	$21,$23
236276c4f342Schristos	sll	$25,$1,5	# 60
236376c4f342Schristos	addu	$24,$31
236476c4f342Schristos	srl	$6,$1,27
236576c4f342Schristos	addu	$24,$25
236676c4f342Schristos	 xor	$21,$13
236776c4f342Schristos	xor	$25,$3,$7
236876c4f342Schristos	addu	$24,$6
236976c4f342Schristos	 xor	$21,$18
237076c4f342Schristos	sll	$30,$2,30
237176c4f342Schristos	xor	$25,$2
237276c4f342Schristos	 srl	$6,$21,31
237376c4f342Schristos	 addu	$21,$21
237476c4f342Schristos	srl	$2,$2,2
237576c4f342Schristos	addu	$24,$20
237676c4f342Schristos	 or	$21,$6
237776c4f342Schristos	or	$2,$30
237876c4f342Schristos	addu	$24,$25
237976c4f342Schristos#endif
238076c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
238176c4f342Schristos	 xor	$22,$8
238276c4f342Schristos	addu	$7,$31		# 61
238376c4f342Schristos	rotr	$6,$24,27
238476c4f342Schristos	 xor	$22,$14
238576c4f342Schristos	xor	$25,$2,$3
238676c4f342Schristos	addu	$7,$6
238776c4f342Schristos	 xor	$22,$19
238876c4f342Schristos	xor	$25,$1
238976c4f342Schristos	addu	$7,$21
239076c4f342Schristos	 rotr	$22,$22,31
239176c4f342Schristos	rotr	$1,$1,2
239276c4f342Schristos	addu	$7,$25
239376c4f342Schristos#else
239476c4f342Schristos	 xor	$22,$8
239576c4f342Schristos	sll	$25,$24,5	# 61
239676c4f342Schristos	addu	$7,$31
239776c4f342Schristos	srl	$6,$24,27
239876c4f342Schristos	addu	$7,$25
239976c4f342Schristos	 xor	$22,$14
240076c4f342Schristos	xor	$25,$2,$3
240176c4f342Schristos	addu	$7,$6
240276c4f342Schristos	 xor	$22,$19
240376c4f342Schristos	sll	$30,$1,30
240476c4f342Schristos	xor	$25,$1
240576c4f342Schristos	 srl	$6,$22,31
240676c4f342Schristos	 addu	$22,$22
240776c4f342Schristos	srl	$1,$1,2
240876c4f342Schristos	addu	$7,$21
240976c4f342Schristos	 or	$22,$6
241076c4f342Schristos	or	$1,$30
241176c4f342Schristos	addu	$7,$25
241276c4f342Schristos#endif
241376c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
241476c4f342Schristos	 xor	$23,$9
241576c4f342Schristos	addu	$3,$31		# 62
241676c4f342Schristos	rotr	$6,$7,27
241776c4f342Schristos	 xor	$23,$15
241876c4f342Schristos	xor	$25,$1,$2
241976c4f342Schristos	addu	$3,$6
242076c4f342Schristos	 xor	$23,$20
242176c4f342Schristos	xor	$25,$24
242276c4f342Schristos	addu	$3,$22
242376c4f342Schristos	 rotr	$23,$23,31
242476c4f342Schristos	rotr	$24,$24,2
242576c4f342Schristos	addu	$3,$25
242676c4f342Schristos#else
242776c4f342Schristos	 xor	$23,$9
242876c4f342Schristos	sll	$25,$7,5	# 62
242976c4f342Schristos	addu	$3,$31
243076c4f342Schristos	srl	$6,$7,27
243176c4f342Schristos	addu	$3,$25
243276c4f342Schristos	 xor	$23,$15
243376c4f342Schristos	xor	$25,$1,$2
243476c4f342Schristos	addu	$3,$6
243576c4f342Schristos	 xor	$23,$20
243676c4f342Schristos	sll	$30,$24,30
243776c4f342Schristos	xor	$25,$24
243876c4f342Schristos	 srl	$6,$23,31
243976c4f342Schristos	 addu	$23,$23
244076c4f342Schristos	srl	$24,$24,2
244176c4f342Schristos	addu	$3,$22
244276c4f342Schristos	 or	$23,$6
244376c4f342Schristos	or	$24,$30
244476c4f342Schristos	addu	$3,$25
244576c4f342Schristos#endif
244676c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
244776c4f342Schristos	 xor	$8,$10
244876c4f342Schristos	addu	$2,$31		# 63
244976c4f342Schristos	rotr	$6,$3,27
245076c4f342Schristos	 xor	$8,$16
245176c4f342Schristos	xor	$25,$24,$1
245276c4f342Schristos	addu	$2,$6
245376c4f342Schristos	 xor	$8,$21
245476c4f342Schristos	xor	$25,$7
245576c4f342Schristos	addu	$2,$23
245676c4f342Schristos	 rotr	$8,$8,31
245776c4f342Schristos	rotr	$7,$7,2
245876c4f342Schristos	addu	$2,$25
245976c4f342Schristos#else
246076c4f342Schristos	 xor	$8,$10
246176c4f342Schristos	sll	$25,$3,5	# 63
246276c4f342Schristos	addu	$2,$31
246376c4f342Schristos	srl	$6,$3,27
246476c4f342Schristos	addu	$2,$25
246576c4f342Schristos	 xor	$8,$16
246676c4f342Schristos	xor	$25,$24,$1
246776c4f342Schristos	addu	$2,$6
246876c4f342Schristos	 xor	$8,$21
246976c4f342Schristos	sll	$30,$7,30
247076c4f342Schristos	xor	$25,$7
247176c4f342Schristos	 srl	$6,$8,31
247276c4f342Schristos	 addu	$8,$8
247376c4f342Schristos	srl	$7,$7,2
247476c4f342Schristos	addu	$2,$23
247576c4f342Schristos	 or	$8,$6
247676c4f342Schristos	or	$7,$30
247776c4f342Schristos	addu	$2,$25
247876c4f342Schristos#endif
247976c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
248076c4f342Schristos	 xor	$9,$11
248176c4f342Schristos	addu	$1,$31		# 64
248276c4f342Schristos	rotr	$6,$2,27
248376c4f342Schristos	 xor	$9,$17
248476c4f342Schristos	xor	$25,$7,$24
248576c4f342Schristos	addu	$1,$6
248676c4f342Schristos	 xor	$9,$22
248776c4f342Schristos	xor	$25,$3
248876c4f342Schristos	addu	$1,$8
248976c4f342Schristos	 rotr	$9,$9,31
249076c4f342Schristos	rotr	$3,$3,2
249176c4f342Schristos	addu	$1,$25
249276c4f342Schristos#else
249376c4f342Schristos	 xor	$9,$11
249476c4f342Schristos	sll	$25,$2,5	# 64
249576c4f342Schristos	addu	$1,$31
249676c4f342Schristos	srl	$6,$2,27
249776c4f342Schristos	addu	$1,$25
249876c4f342Schristos	 xor	$9,$17
249976c4f342Schristos	xor	$25,$7,$24
250076c4f342Schristos	addu	$1,$6
250176c4f342Schristos	 xor	$9,$22
250276c4f342Schristos	sll	$30,$3,30
250376c4f342Schristos	xor	$25,$3
250476c4f342Schristos	 srl	$6,$9,31
250576c4f342Schristos	 addu	$9,$9
250676c4f342Schristos	srl	$3,$3,2
250776c4f342Schristos	addu	$1,$8
250876c4f342Schristos	 or	$9,$6
250976c4f342Schristos	or	$3,$30
251076c4f342Schristos	addu	$1,$25
251176c4f342Schristos#endif
251276c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
251376c4f342Schristos	 xor	$10,$12
251476c4f342Schristos	addu	$24,$31		# 65
251576c4f342Schristos	rotr	$6,$1,27
251676c4f342Schristos	 xor	$10,$18
251776c4f342Schristos	xor	$25,$3,$7
251876c4f342Schristos	addu	$24,$6
251976c4f342Schristos	 xor	$10,$23
252076c4f342Schristos	xor	$25,$2
252176c4f342Schristos	addu	$24,$9
252276c4f342Schristos	 rotr	$10,$10,31
252376c4f342Schristos	rotr	$2,$2,2
252476c4f342Schristos	addu	$24,$25
252576c4f342Schristos#else
252676c4f342Schristos	 xor	$10,$12
252776c4f342Schristos	sll	$25,$1,5	# 65
252876c4f342Schristos	addu	$24,$31
252976c4f342Schristos	srl	$6,$1,27
253076c4f342Schristos	addu	$24,$25
253176c4f342Schristos	 xor	$10,$18
253276c4f342Schristos	xor	$25,$3,$7
253376c4f342Schristos	addu	$24,$6
253476c4f342Schristos	 xor	$10,$23
253576c4f342Schristos	sll	$30,$2,30
253676c4f342Schristos	xor	$25,$2
253776c4f342Schristos	 srl	$6,$10,31
253876c4f342Schristos	 addu	$10,$10
253976c4f342Schristos	srl	$2,$2,2
254076c4f342Schristos	addu	$24,$9
254176c4f342Schristos	 or	$10,$6
254276c4f342Schristos	or	$2,$30
254376c4f342Schristos	addu	$24,$25
254476c4f342Schristos#endif
254576c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
254676c4f342Schristos	 xor	$11,$13
254776c4f342Schristos	addu	$7,$31		# 66
254876c4f342Schristos	rotr	$6,$24,27
254976c4f342Schristos	 xor	$11,$19
255076c4f342Schristos	xor	$25,$2,$3
255176c4f342Schristos	addu	$7,$6
255276c4f342Schristos	 xor	$11,$8
255376c4f342Schristos	xor	$25,$1
255476c4f342Schristos	addu	$7,$10
255576c4f342Schristos	 rotr	$11,$11,31
255676c4f342Schristos	rotr	$1,$1,2
255776c4f342Schristos	addu	$7,$25
255876c4f342Schristos#else
255976c4f342Schristos	 xor	$11,$13
256076c4f342Schristos	sll	$25,$24,5	# 66
256176c4f342Schristos	addu	$7,$31
256276c4f342Schristos	srl	$6,$24,27
256376c4f342Schristos	addu	$7,$25
256476c4f342Schristos	 xor	$11,$19
256576c4f342Schristos	xor	$25,$2,$3
256676c4f342Schristos	addu	$7,$6
256776c4f342Schristos	 xor	$11,$8
256876c4f342Schristos	sll	$30,$1,30
256976c4f342Schristos	xor	$25,$1
257076c4f342Schristos	 srl	$6,$11,31
257176c4f342Schristos	 addu	$11,$11
257276c4f342Schristos	srl	$1,$1,2
257376c4f342Schristos	addu	$7,$10
257476c4f342Schristos	 or	$11,$6
257576c4f342Schristos	or	$1,$30
257676c4f342Schristos	addu	$7,$25
257776c4f342Schristos#endif
257876c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
257976c4f342Schristos	 xor	$12,$14
258076c4f342Schristos	addu	$3,$31		# 67
258176c4f342Schristos	rotr	$6,$7,27
258276c4f342Schristos	 xor	$12,$20
258376c4f342Schristos	xor	$25,$1,$2
258476c4f342Schristos	addu	$3,$6
258576c4f342Schristos	 xor	$12,$9
258676c4f342Schristos	xor	$25,$24
258776c4f342Schristos	addu	$3,$11
258876c4f342Schristos	 rotr	$12,$12,31
258976c4f342Schristos	rotr	$24,$24,2
259076c4f342Schristos	addu	$3,$25
259176c4f342Schristos#else
259276c4f342Schristos	 xor	$12,$14
259376c4f342Schristos	sll	$25,$7,5	# 67
259476c4f342Schristos	addu	$3,$31
259576c4f342Schristos	srl	$6,$7,27
259676c4f342Schristos	addu	$3,$25
259776c4f342Schristos	 xor	$12,$20
259876c4f342Schristos	xor	$25,$1,$2
259976c4f342Schristos	addu	$3,$6
260076c4f342Schristos	 xor	$12,$9
260176c4f342Schristos	sll	$30,$24,30
260276c4f342Schristos	xor	$25,$24
260376c4f342Schristos	 srl	$6,$12,31
260476c4f342Schristos	 addu	$12,$12
260576c4f342Schristos	srl	$24,$24,2
260676c4f342Schristos	addu	$3,$11
260776c4f342Schristos	 or	$12,$6
260876c4f342Schristos	or	$24,$30
260976c4f342Schristos	addu	$3,$25
261076c4f342Schristos#endif
261176c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
261276c4f342Schristos	 xor	$13,$15
261376c4f342Schristos	addu	$2,$31		# 68
261476c4f342Schristos	rotr	$6,$3,27
261576c4f342Schristos	 xor	$13,$21
261676c4f342Schristos	xor	$25,$24,$1
261776c4f342Schristos	addu	$2,$6
261876c4f342Schristos	 xor	$13,$10
261976c4f342Schristos	xor	$25,$7
262076c4f342Schristos	addu	$2,$12
262176c4f342Schristos	 rotr	$13,$13,31
262276c4f342Schristos	rotr	$7,$7,2
262376c4f342Schristos	addu	$2,$25
262476c4f342Schristos#else
262576c4f342Schristos	 xor	$13,$15
262676c4f342Schristos	sll	$25,$3,5	# 68
262776c4f342Schristos	addu	$2,$31
262876c4f342Schristos	srl	$6,$3,27
262976c4f342Schristos	addu	$2,$25
263076c4f342Schristos	 xor	$13,$21
263176c4f342Schristos	xor	$25,$24,$1
263276c4f342Schristos	addu	$2,$6
263376c4f342Schristos	 xor	$13,$10
263476c4f342Schristos	sll	$30,$7,30
263576c4f342Schristos	xor	$25,$7
263676c4f342Schristos	 srl	$6,$13,31
263776c4f342Schristos	 addu	$13,$13
263876c4f342Schristos	srl	$7,$7,2
263976c4f342Schristos	addu	$2,$12
264076c4f342Schristos	 or	$13,$6
264176c4f342Schristos	or	$7,$30
264276c4f342Schristos	addu	$2,$25
264376c4f342Schristos#endif
264476c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
264576c4f342Schristos	 xor	$14,$16
264676c4f342Schristos	addu	$1,$31		# 69
264776c4f342Schristos	rotr	$6,$2,27
264876c4f342Schristos	 xor	$14,$22
264976c4f342Schristos	xor	$25,$7,$24
265076c4f342Schristos	addu	$1,$6
265176c4f342Schristos	 xor	$14,$11
265276c4f342Schristos	xor	$25,$3
265376c4f342Schristos	addu	$1,$13
265476c4f342Schristos	 rotr	$14,$14,31
265576c4f342Schristos	rotr	$3,$3,2
265676c4f342Schristos	addu	$1,$25
265776c4f342Schristos#else
265876c4f342Schristos	 xor	$14,$16
265976c4f342Schristos	sll	$25,$2,5	# 69
266076c4f342Schristos	addu	$1,$31
266176c4f342Schristos	srl	$6,$2,27
266276c4f342Schristos	addu	$1,$25
266376c4f342Schristos	 xor	$14,$22
266476c4f342Schristos	xor	$25,$7,$24
266576c4f342Schristos	addu	$1,$6
266676c4f342Schristos	 xor	$14,$11
266776c4f342Schristos	sll	$30,$3,30
266876c4f342Schristos	xor	$25,$3
266976c4f342Schristos	 srl	$6,$14,31
267076c4f342Schristos	 addu	$14,$14
267176c4f342Schristos	srl	$3,$3,2
267276c4f342Schristos	addu	$1,$13
267376c4f342Schristos	 or	$14,$6
267476c4f342Schristos	or	$3,$30
267576c4f342Schristos	addu	$1,$25
267676c4f342Schristos#endif
267776c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
267876c4f342Schristos	 xor	$15,$17
267976c4f342Schristos	addu	$24,$31		# 70
268076c4f342Schristos	rotr	$6,$1,27
268176c4f342Schristos	 xor	$15,$23
268276c4f342Schristos	xor	$25,$3,$7
268376c4f342Schristos	addu	$24,$6
268476c4f342Schristos	 xor	$15,$12
268576c4f342Schristos	xor	$25,$2
268676c4f342Schristos	addu	$24,$14
268776c4f342Schristos	 rotr	$15,$15,31
268876c4f342Schristos	rotr	$2,$2,2
268976c4f342Schristos	addu	$24,$25
269076c4f342Schristos#else
269176c4f342Schristos	 xor	$15,$17
269276c4f342Schristos	sll	$25,$1,5	# 70
269376c4f342Schristos	addu	$24,$31
269476c4f342Schristos	srl	$6,$1,27
269576c4f342Schristos	addu	$24,$25
269676c4f342Schristos	 xor	$15,$23
269776c4f342Schristos	xor	$25,$3,$7
269876c4f342Schristos	addu	$24,$6
269976c4f342Schristos	 xor	$15,$12
270076c4f342Schristos	sll	$30,$2,30
270176c4f342Schristos	xor	$25,$2
270276c4f342Schristos	 srl	$6,$15,31
270376c4f342Schristos	 addu	$15,$15
270476c4f342Schristos	srl	$2,$2,2
270576c4f342Schristos	addu	$24,$14
270676c4f342Schristos	 or	$15,$6
270776c4f342Schristos	or	$2,$30
270876c4f342Schristos	addu	$24,$25
270976c4f342Schristos#endif
271076c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
271176c4f342Schristos	 xor	$16,$18
271276c4f342Schristos	addu	$7,$31		# 71
271376c4f342Schristos	rotr	$6,$24,27
271476c4f342Schristos	 xor	$16,$8
271576c4f342Schristos	xor	$25,$2,$3
271676c4f342Schristos	addu	$7,$6
271776c4f342Schristos	 xor	$16,$13
271876c4f342Schristos	xor	$25,$1
271976c4f342Schristos	addu	$7,$15
272076c4f342Schristos	 rotr	$16,$16,31
272176c4f342Schristos	rotr	$1,$1,2
272276c4f342Schristos	addu	$7,$25
272376c4f342Schristos#else
272476c4f342Schristos	 xor	$16,$18
272576c4f342Schristos	sll	$25,$24,5	# 71
272676c4f342Schristos	addu	$7,$31
272776c4f342Schristos	srl	$6,$24,27
272876c4f342Schristos	addu	$7,$25
272976c4f342Schristos	 xor	$16,$8
273076c4f342Schristos	xor	$25,$2,$3
273176c4f342Schristos	addu	$7,$6
273276c4f342Schristos	 xor	$16,$13
273376c4f342Schristos	sll	$30,$1,30
273476c4f342Schristos	xor	$25,$1
273576c4f342Schristos	 srl	$6,$16,31
273676c4f342Schristos	 addu	$16,$16
273776c4f342Schristos	srl	$1,$1,2
273876c4f342Schristos	addu	$7,$15
273976c4f342Schristos	 or	$16,$6
274076c4f342Schristos	or	$1,$30
274176c4f342Schristos	addu	$7,$25
274276c4f342Schristos#endif
274376c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
274476c4f342Schristos	 xor	$17,$19
274576c4f342Schristos	addu	$3,$31		# 72
274676c4f342Schristos	rotr	$6,$7,27
274776c4f342Schristos	 xor	$17,$9
274876c4f342Schristos	xor	$25,$1,$2
274976c4f342Schristos	addu	$3,$6
275076c4f342Schristos	 xor	$17,$14
275176c4f342Schristos	xor	$25,$24
275276c4f342Schristos	addu	$3,$16
275376c4f342Schristos	 rotr	$17,$17,31
275476c4f342Schristos	rotr	$24,$24,2
275576c4f342Schristos	addu	$3,$25
275676c4f342Schristos#else
275776c4f342Schristos	 xor	$17,$19
275876c4f342Schristos	sll	$25,$7,5	# 72
275976c4f342Schristos	addu	$3,$31
276076c4f342Schristos	srl	$6,$7,27
276176c4f342Schristos	addu	$3,$25
276276c4f342Schristos	 xor	$17,$9
276376c4f342Schristos	xor	$25,$1,$2
276476c4f342Schristos	addu	$3,$6
276576c4f342Schristos	 xor	$17,$14
276676c4f342Schristos	sll	$30,$24,30
276776c4f342Schristos	xor	$25,$24
276876c4f342Schristos	 srl	$6,$17,31
276976c4f342Schristos	 addu	$17,$17
277076c4f342Schristos	srl	$24,$24,2
277176c4f342Schristos	addu	$3,$16
277276c4f342Schristos	 or	$17,$6
277376c4f342Schristos	or	$24,$30
277476c4f342Schristos	addu	$3,$25
277576c4f342Schristos#endif
277676c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
277776c4f342Schristos	 xor	$18,$20
277876c4f342Schristos	addu	$2,$31		# 73
277976c4f342Schristos	rotr	$6,$3,27
278076c4f342Schristos	 xor	$18,$10
278176c4f342Schristos	xor	$25,$24,$1
278276c4f342Schristos	addu	$2,$6
278376c4f342Schristos	 xor	$18,$15
278476c4f342Schristos	xor	$25,$7
278576c4f342Schristos	addu	$2,$17
278676c4f342Schristos	 rotr	$18,$18,31
278776c4f342Schristos	rotr	$7,$7,2
278876c4f342Schristos	addu	$2,$25
278976c4f342Schristos#else
279076c4f342Schristos	 xor	$18,$20
279176c4f342Schristos	sll	$25,$3,5	# 73
279276c4f342Schristos	addu	$2,$31
279376c4f342Schristos	srl	$6,$3,27
279476c4f342Schristos	addu	$2,$25
279576c4f342Schristos	 xor	$18,$10
279676c4f342Schristos	xor	$25,$24,$1
279776c4f342Schristos	addu	$2,$6
279876c4f342Schristos	 xor	$18,$15
279976c4f342Schristos	sll	$30,$7,30
280076c4f342Schristos	xor	$25,$7
280176c4f342Schristos	 srl	$6,$18,31
280276c4f342Schristos	 addu	$18,$18
280376c4f342Schristos	srl	$7,$7,2
280476c4f342Schristos	addu	$2,$17
280576c4f342Schristos	 or	$18,$6
280676c4f342Schristos	or	$7,$30
280776c4f342Schristos	addu	$2,$25
280876c4f342Schristos#endif
280976c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
281076c4f342Schristos	 xor	$19,$21
281176c4f342Schristos	addu	$1,$31		# 74
281276c4f342Schristos	rotr	$6,$2,27
281376c4f342Schristos	 xor	$19,$11
281476c4f342Schristos	xor	$25,$7,$24
281576c4f342Schristos	addu	$1,$6
281676c4f342Schristos	 xor	$19,$16
281776c4f342Schristos	xor	$25,$3
281876c4f342Schristos	addu	$1,$18
281976c4f342Schristos	 rotr	$19,$19,31
282076c4f342Schristos	rotr	$3,$3,2
282176c4f342Schristos	addu	$1,$25
282276c4f342Schristos#else
282376c4f342Schristos	 xor	$19,$21
282476c4f342Schristos	sll	$25,$2,5	# 74
282576c4f342Schristos	addu	$1,$31
282676c4f342Schristos	srl	$6,$2,27
282776c4f342Schristos	addu	$1,$25
282876c4f342Schristos	 xor	$19,$11
282976c4f342Schristos	xor	$25,$7,$24
283076c4f342Schristos	addu	$1,$6
283176c4f342Schristos	 xor	$19,$16
283276c4f342Schristos	sll	$30,$3,30
283376c4f342Schristos	xor	$25,$3
283476c4f342Schristos	 srl	$6,$19,31
283576c4f342Schristos	 addu	$19,$19
283676c4f342Schristos	srl	$3,$3,2
283776c4f342Schristos	addu	$1,$18
283876c4f342Schristos	 or	$19,$6
283976c4f342Schristos	or	$3,$30
284076c4f342Schristos	addu	$1,$25
284176c4f342Schristos#endif
284276c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
284376c4f342Schristos	 xor	$20,$22
284476c4f342Schristos	addu	$24,$31		# 75
284576c4f342Schristos	rotr	$6,$1,27
284676c4f342Schristos	 xor	$20,$12
284776c4f342Schristos	xor	$25,$3,$7
284876c4f342Schristos	addu	$24,$6
284976c4f342Schristos	 xor	$20,$17
285076c4f342Schristos	xor	$25,$2
285176c4f342Schristos	addu	$24,$19
285276c4f342Schristos	 rotr	$20,$20,31
285376c4f342Schristos	rotr	$2,$2,2
285476c4f342Schristos	addu	$24,$25
285576c4f342Schristos#else
285676c4f342Schristos	 xor	$20,$22
285776c4f342Schristos	sll	$25,$1,5	# 75
285876c4f342Schristos	addu	$24,$31
285976c4f342Schristos	srl	$6,$1,27
286076c4f342Schristos	addu	$24,$25
286176c4f342Schristos	 xor	$20,$12
286276c4f342Schristos	xor	$25,$3,$7
286376c4f342Schristos	addu	$24,$6
286476c4f342Schristos	 xor	$20,$17
286576c4f342Schristos	sll	$30,$2,30
286676c4f342Schristos	xor	$25,$2
286776c4f342Schristos	 srl	$6,$20,31
286876c4f342Schristos	 addu	$20,$20
286976c4f342Schristos	srl	$2,$2,2
287076c4f342Schristos	addu	$24,$19
287176c4f342Schristos	 or	$20,$6
287276c4f342Schristos	or	$2,$30
287376c4f342Schristos	addu	$24,$25
287476c4f342Schristos#endif
287576c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
287676c4f342Schristos	 xor	$21,$23
287776c4f342Schristos	addu	$7,$31		# 76
287876c4f342Schristos	rotr	$6,$24,27
287976c4f342Schristos	 xor	$21,$13
288076c4f342Schristos	xor	$25,$2,$3
288176c4f342Schristos	addu	$7,$6
288276c4f342Schristos	 xor	$21,$18
288376c4f342Schristos	xor	$25,$1
288476c4f342Schristos	addu	$7,$20
288576c4f342Schristos	 rotr	$21,$21,31
288676c4f342Schristos	rotr	$1,$1,2
288776c4f342Schristos	addu	$7,$25
288876c4f342Schristos#else
288976c4f342Schristos	 xor	$21,$23
289076c4f342Schristos	sll	$25,$24,5	# 76
289176c4f342Schristos	addu	$7,$31
289276c4f342Schristos	srl	$6,$24,27
289376c4f342Schristos	addu	$7,$25
289476c4f342Schristos	 xor	$21,$13
289576c4f342Schristos	xor	$25,$2,$3
289676c4f342Schristos	addu	$7,$6
289776c4f342Schristos	 xor	$21,$18
289876c4f342Schristos	sll	$30,$1,30
289976c4f342Schristos	xor	$25,$1
290076c4f342Schristos	 srl	$6,$21,31
290176c4f342Schristos	 addu	$21,$21
290276c4f342Schristos	srl	$1,$1,2
290376c4f342Schristos	addu	$7,$20
290476c4f342Schristos	 or	$21,$6
290576c4f342Schristos	or	$1,$30
290676c4f342Schristos	addu	$7,$25
290776c4f342Schristos#endif
290876c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
290976c4f342Schristos	 xor	$22,$8
291076c4f342Schristos	addu	$3,$31		# 77
291176c4f342Schristos	rotr	$6,$7,27
291276c4f342Schristos	 xor	$22,$14
291376c4f342Schristos	xor	$25,$1,$2
291476c4f342Schristos	addu	$3,$6
291576c4f342Schristos	 xor	$22,$19
291676c4f342Schristos	xor	$25,$24
291776c4f342Schristos	addu	$3,$21
291876c4f342Schristos	 rotr	$22,$22,31
291976c4f342Schristos	rotr	$24,$24,2
292076c4f342Schristos	addu	$3,$25
292176c4f342Schristos#else
292276c4f342Schristos	 xor	$22,$8
292376c4f342Schristos	sll	$25,$7,5	# 77
292476c4f342Schristos	addu	$3,$31
292576c4f342Schristos	srl	$6,$7,27
292676c4f342Schristos	addu	$3,$25
292776c4f342Schristos	 xor	$22,$14
292876c4f342Schristos	xor	$25,$1,$2
292976c4f342Schristos	addu	$3,$6
293076c4f342Schristos	 xor	$22,$19
293176c4f342Schristos	sll	$30,$24,30
293276c4f342Schristos	xor	$25,$24
293376c4f342Schristos	 srl	$6,$22,31
293476c4f342Schristos	 addu	$22,$22
293576c4f342Schristos	srl	$24,$24,2
293676c4f342Schristos	addu	$3,$21
293776c4f342Schristos	 or	$22,$6
293876c4f342Schristos	or	$24,$30
293976c4f342Schristos	addu	$3,$25
294076c4f342Schristos#endif
294176c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
294276c4f342Schristos	 xor	$23,$9
294376c4f342Schristos	addu	$2,$31		# 78
294476c4f342Schristos	rotr	$6,$3,27
294576c4f342Schristos	 xor	$23,$15
294676c4f342Schristos	xor	$25,$24,$1
294776c4f342Schristos	addu	$2,$6
294876c4f342Schristos	 xor	$23,$20
294976c4f342Schristos	xor	$25,$7
295076c4f342Schristos	addu	$2,$22
295176c4f342Schristos	 rotr	$23,$23,31
295276c4f342Schristos	rotr	$7,$7,2
295376c4f342Schristos	addu	$2,$25
295476c4f342Schristos#else
295576c4f342Schristos	 xor	$23,$9
295676c4f342Schristos	sll	$25,$3,5	# 78
295776c4f342Schristos	addu	$2,$31
295876c4f342Schristos	srl	$6,$3,27
295976c4f342Schristos	addu	$2,$25
296076c4f342Schristos	 xor	$23,$15
296176c4f342Schristos	xor	$25,$24,$1
296276c4f342Schristos	addu	$2,$6
296376c4f342Schristos	 xor	$23,$20
296476c4f342Schristos	sll	$30,$7,30
296576c4f342Schristos	xor	$25,$7
296676c4f342Schristos	 srl	$6,$23,31
296776c4f342Schristos	 addu	$23,$23
296876c4f342Schristos	srl	$7,$7,2
296976c4f342Schristos	addu	$2,$22
297076c4f342Schristos	 or	$23,$6
297176c4f342Schristos	or	$7,$30
297276c4f342Schristos	addu	$2,$25
297376c4f342Schristos#endif
297476c4f342Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2)
297576c4f342Schristos	 lw	$8,0($4)
297676c4f342Schristos	addu	$1,$31		# 79
297776c4f342Schristos	 lw	$9,4($4)
297876c4f342Schristos	rotr	$6,$2,27
297976c4f342Schristos	 lw	$10,8($4)
298076c4f342Schristos	xor	$25,$7,$24
298176c4f342Schristos	addu	$1,$6
298276c4f342Schristos	 lw	$11,12($4)
298376c4f342Schristos	xor	$25,$3
298476c4f342Schristos	addu	$1,$23
298576c4f342Schristos	 lw	$12,16($4)
298676c4f342Schristos	rotr	$3,$3,2
298776c4f342Schristos	addu	$1,$25
298876c4f342Schristos#else
298976c4f342Schristos	 lw	$8,0($4)
299076c4f342Schristos	sll	$25,$2,5	# 79
299176c4f342Schristos	addu	$1,$31
299276c4f342Schristos	 lw	$9,4($4)
299376c4f342Schristos	srl	$6,$2,27
299476c4f342Schristos	addu	$1,$25
299576c4f342Schristos	 lw	$10,8($4)
299676c4f342Schristos	xor	$25,$7,$24
299776c4f342Schristos	addu	$1,$6
299876c4f342Schristos	 lw	$11,12($4)
299976c4f342Schristos	sll	$30,$3,30
300076c4f342Schristos	xor	$25,$3
300176c4f342Schristos	 lw	$12,16($4)
300276c4f342Schristos	srl	$3,$3,2
300376c4f342Schristos	addu	$1,$23
300476c4f342Schristos	or	$3,$30
300576c4f342Schristos	addu	$1,$25
300676c4f342Schristos#endif
3007*e0ea3921Schristos	addu $5,64
300876c4f342Schristos	lw	$6,0($29)
300976c4f342Schristos
301076c4f342Schristos	addu	$1,$8
301176c4f342Schristos	addu	$2,$9
301276c4f342Schristos	sw	$1,0($4)
301376c4f342Schristos	addu	$3,$10
301476c4f342Schristos	addu	$7,$11
301576c4f342Schristos	sw	$2,4($4)
301676c4f342Schristos	addu	$24,$12
301776c4f342Schristos	sw	$3,8($4)
301876c4f342Schristos	sw	$7,12($4)
301976c4f342Schristos	sw	$24,16($4)
302076c4f342Schristos	.set	noreorder
302176c4f342Schristos	bne	$5,$6,.Loop
302276c4f342Schristos	nop
302376c4f342Schristos
302476c4f342Schristos	.set	noreorder
302576c4f342Schristos	lw	$31,(16-1)*4($29)
302676c4f342Schristos	lw	$30,(16-2)*4($29)
302776c4f342Schristos	lw	$23,(16-3)*4($29)
302876c4f342Schristos	lw	$22,(16-4)*4($29)
302976c4f342Schristos	lw	$21,(16-5)*4($29)
303076c4f342Schristos	lw	$20,(16-6)*4($29)
303176c4f342Schristos	lw	$19,(16-7)*4($29)
303276c4f342Schristos	lw	$18,(16-8)*4($29)
303376c4f342Schristos	lw	$17,(16-9)*4($29)
303476c4f342Schristos	lw	$16,(16-10)*4($29)
303576c4f342Schristos	jr	$31
3036*e0ea3921Schristos	addu $29,16*4
303776c4f342Schristos.end	sha1_block_data_order
303876c4f342Schristos.rdata
303976c4f342Schristos.asciiz	"SHA1 for MIPS, CRYPTOGAMS by <appro@openssl.org>"
3040