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