c05391ce93e4789e7a1d7e7c93a3d118cb217121
[picodrive.git] / Pico / Draw_amips.s
1 # vim:filetype=mips
2
3 # several drawing related functions for Allegrex MIPS
4 # (c) Copyright 2007, Grazvydas "notaz" Ignotas
5 # All Rights Reserved
6
7 .set noreorder # don't reorder any instructions
8 .set noat      # don't use $at
9
10 .text
11 .align 4
12
13 # void amips_clut(unsigned short *dst, unsigned char *src, unsigned short *pal, int count)
14
15 .global amips_clut
16
17 amips_clut:
18     srl     $a3, 2
19 amips_clut_loop:
20     lbu     $t0, 0($a1)           # tried lw here, no improvement noticed
21     lbu     $t1, 1($a1)
22     lbu     $t2, 2($a1)
23     lbu     $t3, 3($a1)
24     sll     $t0, 1
25     sll     $t1, 1
26     sll     $t2, 1
27     sll     $t3, 1
28     addu    $t0, $a2
29     addu    $t1, $a2
30     addu    $t2, $a2
31     addu    $t3, $a2
32     lhu     $t0, 0($t0)
33     lhu     $t1, 0($t1)
34     lhu     $t2, 0($t2)
35     lhu     $t3, 0($t3)
36     ins     $t0, $t1, 16, 16      # ins rt, rs, pos, size - Insert size bits starting
37     ins     $t2, $t3, 16, 16      #  from the LSB of rs into rt starting at position pos
38     sw      $t0, 0($a0)
39     sw      $t2, 4($a0)
40     addiu   $a0, 8
41     addiu   $a3, -1
42     bnez    $a3, amips_clut_loop
43     addiu   $a1, 4
44     jr      $ra
45     nop
46
47
48 # $a0 - pd, $a1 - tile word, $a2 - pal
49 # ext rt, rs, pos, size  // Extract size bits from position pos in rs and store in rt 
50
51 .macro TilePixelPrep shift dreg offs
52 .if \shift
53     ext     \dreg, $a1, \shift, 4
54 .else
55     andi    \dreg, $a1, 0xf
56 .endif
57 .if \offs
58     sltu    $t8, $0, \dreg
59     ins     $t9, $t8, \offs, 1
60 .else
61     sltu    $t9, $0, \dreg
62 .endif
63 .endm
64
65 .macro TileStartCode
66     sll     $a1, $a1, 1
67     lui     $t1, %hi(Pico+0x10000)
68     addu    $a1, $a1, $t1
69     lw      $a1, %lo(Pico+0x10000)($a1)  # Pico.vram + addr
70     beqz    $a1, TileEmpty
71     rotr    $t1, $a1, 4
72     beq     $t1, $a1, SingleColor
73     and     $v0, $0                      # not empty tile
74 .endm
75
76 .macro TileEndCode
77     xori    $t8, $t9, 0xff
78     beqz    $t8, tile11111111            # common case
79     lui     $v1, %hi(HighCol)
80     lui     $t8, %hi(TileTable)
81     ins     $t8, $t9, 2, 8
82     lw      $t8, %lo(TileTable)($t8)
83     lw      $v1, %lo(HighCol)($v1)
84     jr      $t8
85     addu    $a0, $v1
86 .endm
87
88
89 .global TileNorm
90
91 TileNorm:
92     TileStartCode
93     TilePixelPrep 12, $t0, 0
94     TilePixelPrep  8, $t1, 1
95     TilePixelPrep  4, $t2, 2
96     TilePixelPrep  0, $t3, 3
97     TilePixelPrep 28, $t4, 4
98     TilePixelPrep 24, $t5, 5
99     TilePixelPrep 20, $t6, 6
100     TilePixelPrep 16, $t7, 7
101     TileEndCode
102
103
104 .global TileFlip
105
106 TileFlip:
107     TileStartCode
108     TilePixelPrep 16, $t0, 0
109     TilePixelPrep 20, $t1, 1
110     TilePixelPrep 24, $t2, 2
111     TilePixelPrep 28, $t3, 3
112     TilePixelPrep  0, $t4, 4
113     TilePixelPrep  4, $t5, 5
114     TilePixelPrep  8, $t6, 6
115     TilePixelPrep 12, $t7, 7
116     TileEndCode
117
118
119 SingleColor:
120     lui     $t9, %hi(HighCol)
121     lw      $t9, %lo(HighCol)($t9)
122     andi    $t0, $a1, 0xf
123     or      $t0, $t0, $a2
124     addu    $a0, $t9
125     sb      $t0, 0($a0)
126     sb      $t0, 1($a0)
127     sb      $t0, 2($a0)
128     sb      $t0, 3($a0)
129     sb      $t0, 4($a0)
130     sb      $t0, 5($a0)
131     sb      $t0, 6($a0)
132     jr      $ra
133     sb      $t0, 7($a0)
134
135 TileEmpty:
136     jr      $ra
137     or      $v0, $0, 1                   # empty tile
138
139 tile11111111:
140     lw      $v1, %lo(HighCol)($v1)
141     or      $t0, $t0, $a2
142     addu    $a0, $v1
143     sb      $t0, 0($a0)
144 tile11111110:
145     or      $t1, $t1, $a2
146     sb      $t1, 1($a0)
147 tile11111100:
148     or      $t2, $t2, $a2
149     sb      $t2, 2($a0)
150 tile11111000:
151     or      $t3, $t3, $a2
152     sb      $t3, 3($a0)
153 tile11110000:
154     or      $t4, $t4, $a2
155     sb      $t4, 4($a0)
156 tile11100000:
157     or      $t5, $t5, $a2
158     sb      $t5, 5($a0)
159 tile11000000:
160     or      $t6, $t6, $a2
161     sb      $t6, 6($a0)
162 tile10000000:
163     or      $t7, $t7, $a2
164     jr      $ra
165     sb      $t7, 7($a0)
166 tile11111101:
167     or      $t0, $t0, $a2
168     sb      $t0, 0($a0)
169     or      $t2, $t2, $a2
170     sb      $t2, 2($a0)
171     or      $t3, $t3, $a2
172     sb      $t3, 3($a0)
173     or      $t4, $t4, $a2
174     sb      $t4, 4($a0)
175     or      $t5, $t5, $a2
176     sb      $t5, 5($a0)
177     or      $t6, $t6, $a2
178     sb      $t6, 6($a0)
179     or      $t7, $t7, $a2
180     jr      $ra
181     sb      $t7, 7($a0)
182 tile11111011:
183     or      $t0, $t0, $a2
184     sb      $t0, 0($a0)
185 tile11111010:
186     or      $t1, $t1, $a2
187     sb      $t1, 1($a0)
188     or      $t3, $t3, $a2
189     sb      $t3, 3($a0)
190     or      $t4, $t4, $a2
191     sb      $t4, 4($a0)
192     or      $t5, $t5, $a2
193     sb      $t5, 5($a0)
194     or      $t6, $t6, $a2
195     sb      $t6, 6($a0)
196     or      $t7, $t7, $a2
197     jr      $ra
198     sb      $t7, 7($a0)
199 tile11111001:
200     or      $t0, $t0, $a2
201     sb      $t0, 0($a0)
202     or      $t3, $t3, $a2
203     sb      $t3, 3($a0)
204     or      $t4, $t4, $a2
205     sb      $t4, 4($a0)
206     or      $t5, $t5, $a2
207     sb      $t5, 5($a0)
208     or      $t6, $t6, $a2
209     sb      $t6, 6($a0)
210     or      $t7, $t7, $a2
211     jr      $ra
212     sb      $t7, 7($a0)
213 tile11110111:
214     or      $t0, $t0, $a2
215     sb      $t0, 0($a0)
216 tile11110110:
217     or      $t1, $t1, $a2
218     sb      $t1, 1($a0)
219 tile11110100:
220     or      $t2, $t2, $a2
221     sb      $t2, 2($a0)
222     or      $t4, $t4, $a2
223     sb      $t4, 4($a0)
224     or      $t5, $t5, $a2
225     sb      $t5, 5($a0)
226     or      $t6, $t6, $a2
227     sb      $t6, 6($a0)
228     or      $t7, $t7, $a2
229     jr      $ra
230     sb      $t7, 7($a0)
231 tile11110101:
232     or      $t0, $t0, $a2
233     sb      $t0, 0($a0)
234     or      $t2, $t2, $a2
235     sb      $t2, 2($a0)
236     or      $t4, $t4, $a2
237     sb      $t4, 4($a0)
238     or      $t5, $t5, $a2
239     sb      $t5, 5($a0)
240     or      $t6, $t6, $a2
241     sb      $t6, 6($a0)
242     or      $t7, $t7, $a2
243     jr      $ra
244     sb      $t7, 7($a0)
245 tile11110011:
246     or      $t0, $t0, $a2
247     sb      $t0, 0($a0)
248 tile11110010:
249     or      $t1, $t1, $a2
250     sb      $t1, 1($a0)
251     or      $t4, $t4, $a2
252     sb      $t4, 4($a0)
253     or      $t5, $t5, $a2
254     sb      $t5, 5($a0)
255     or      $t6, $t6, $a2
256     sb      $t6, 6($a0)
257     or      $t7, $t7, $a2
258     jr      $ra
259     sb      $t7, 7($a0)
260 tile11110001:
261     or      $t0, $t0, $a2
262     sb      $t0, 0($a0)
263     or      $t4, $t4, $a2
264     sb      $t4, 4($a0)
265     or      $t5, $t5, $a2
266     sb      $t5, 5($a0)
267     or      $t6, $t6, $a2
268     sb      $t6, 6($a0)
269     or      $t7, $t7, $a2
270     jr      $ra
271     sb      $t7, 7($a0)
272 tile11101111:
273     or      $t0, $t0, $a2
274     sb      $t0, 0($a0)
275 tile11101110:
276     or      $t1, $t1, $a2
277     sb      $t1, 1($a0)
278 tile11101100:
279     or      $t2, $t2, $a2
280     sb      $t2, 2($a0)
281 tile11101000:
282     or      $t3, $t3, $a2
283     sb      $t3, 3($a0)
284     or      $t5, $t5, $a2
285     sb      $t5, 5($a0)
286     or      $t6, $t6, $a2
287     sb      $t6, 6($a0)
288     or      $t7, $t7, $a2
289     jr      $ra
290     sb      $t7, 7($a0)
291 tile11101101:
292     or      $t0, $t0, $a2
293     sb      $t0, 0($a0)
294     or      $t2, $t2, $a2
295     sb      $t2, 2($a0)
296     or      $t3, $t3, $a2
297     sb      $t3, 3($a0)
298     or      $t5, $t5, $a2
299     sb      $t5, 5($a0)
300     or      $t6, $t6, $a2
301     sb      $t6, 6($a0)
302     or      $t7, $t7, $a2
303     jr      $ra
304     sb      $t7, 7($a0)
305 tile11101011:
306     or      $t0, $t0, $a2
307     sb      $t0, 0($a0)
308 tile11101010:
309     or      $t1, $t1, $a2
310     sb      $t1, 1($a0)
311     or      $t3, $t3, $a2
312     sb      $t3, 3($a0)
313     or      $t5, $t5, $a2
314     sb      $t5, 5($a0)
315     or      $t6, $t6, $a2
316     sb      $t6, 6($a0)
317     or      $t7, $t7, $a2
318     jr      $ra
319     sb      $t7, 7($a0)
320 tile11101001:
321     or      $t0, $t0, $a2
322     sb      $t0, 0($a0)
323     or      $t3, $t3, $a2
324     sb      $t3, 3($a0)
325     or      $t5, $t5, $a2
326     sb      $t5, 5($a0)
327     or      $t6, $t6, $a2
328     sb      $t6, 6($a0)
329     or      $t7, $t7, $a2
330     jr      $ra
331     sb      $t7, 7($a0)
332 tile11100111:
333     or      $t0, $t0, $a2
334     sb      $t0, 0($a0)
335 tile11100110:
336     or      $t1, $t1, $a2
337     sb      $t1, 1($a0)
338 tile11100100:
339     or      $t2, $t2, $a2
340     sb      $t2, 2($a0)
341     or      $t5, $t5, $a2
342     sb      $t5, 5($a0)
343     or      $t6, $t6, $a2
344     sb      $t6, 6($a0)
345     or      $t7, $t7, $a2
346     jr      $ra
347     sb      $t7, 7($a0)
348 tile11100101:
349     or      $t0, $t0, $a2
350     sb      $t0, 0($a0)
351     or      $t2, $t2, $a2
352     sb      $t2, 2($a0)
353     or      $t5, $t5, $a2
354     sb      $t5, 5($a0)
355     or      $t6, $t6, $a2
356     sb      $t6, 6($a0)
357     or      $t7, $t7, $a2
358     jr      $ra
359     sb      $t7, 7($a0)
360 tile11100011:
361     or      $t0, $t0, $a2
362     sb      $t0, 0($a0)
363 tile11100010:
364     or      $t1, $t1, $a2
365     sb      $t1, 1($a0)
366     or      $t5, $t5, $a2
367     sb      $t5, 5($a0)
368     or      $t6, $t6, $a2
369     sb      $t6, 6($a0)
370     or      $t7, $t7, $a2
371     jr      $ra
372     sb      $t7, 7($a0)
373 tile11100001:
374     or      $t0, $t0, $a2
375     sb      $t0, 0($a0)
376     or      $t5, $t5, $a2
377     sb      $t5, 5($a0)
378     or      $t6, $t6, $a2
379     sb      $t6, 6($a0)
380     or      $t7, $t7, $a2
381     jr      $ra
382     sb      $t7, 7($a0)
383 tile11011111:
384     or      $t0, $t0, $a2
385     sb      $t0, 0($a0)
386 tile11011110:
387     or      $t1, $t1, $a2
388     sb      $t1, 1($a0)
389 tile11011100:
390     or      $t2, $t2, $a2
391     sb      $t2, 2($a0)
392 tile11011000:
393     or      $t3, $t3, $a2
394     sb      $t3, 3($a0)
395 tile11010000:
396     or      $t4, $t4, $a2
397     sb      $t4, 4($a0)
398     or      $t6, $t6, $a2
399     sb      $t6, 6($a0)
400     or      $t7, $t7, $a2
401     jr      $ra
402     sb      $t7, 7($a0)
403 tile11011101:
404     or      $t0, $t0, $a2
405     sb      $t0, 0($a0)
406     or      $t2, $t2, $a2
407     sb      $t2, 2($a0)
408     or      $t3, $t3, $a2
409     sb      $t3, 3($a0)
410     or      $t4, $t4, $a2
411     sb      $t4, 4($a0)
412     or      $t6, $t6, $a2
413     sb      $t6, 6($a0)
414     or      $t7, $t7, $a2
415     jr      $ra
416     sb      $t7, 7($a0)
417 tile11011011:
418     or      $t0, $t0, $a2
419     sb      $t0, 0($a0)
420 tile11011010:
421     or      $t1, $t1, $a2
422     sb      $t1, 1($a0)
423     or      $t3, $t3, $a2
424     sb      $t3, 3($a0)
425     or      $t4, $t4, $a2
426     sb      $t4, 4($a0)
427     or      $t6, $t6, $a2
428     sb      $t6, 6($a0)
429     or      $t7, $t7, $a2
430     jr      $ra
431     sb      $t7, 7($a0)
432 tile11011001:
433     or      $t0, $t0, $a2
434     sb      $t0, 0($a0)
435     or      $t3, $t3, $a2
436     sb      $t3, 3($a0)
437     or      $t4, $t4, $a2
438     sb      $t4, 4($a0)
439     or      $t6, $t6, $a2
440     sb      $t6, 6($a0)
441     or      $t7, $t7, $a2
442     jr      $ra
443     sb      $t7, 7($a0)
444 tile11010111:
445     or      $t0, $t0, $a2
446     sb      $t0, 0($a0)
447 tile11010110:
448     or      $t1, $t1, $a2
449     sb      $t1, 1($a0)
450 tile11010100:
451     or      $t2, $t2, $a2
452     sb      $t2, 2($a0)
453     or      $t4, $t4, $a2
454     sb      $t4, 4($a0)
455     or      $t6, $t6, $a2
456     sb      $t6, 6($a0)
457     or      $t7, $t7, $a2
458     jr      $ra
459     sb      $t7, 7($a0)
460 tile11010101:
461     or      $t0, $t0, $a2
462     sb      $t0, 0($a0)
463     or      $t2, $t2, $a2
464     sb      $t2, 2($a0)
465     or      $t4, $t4, $a2
466     sb      $t4, 4($a0)
467     or      $t6, $t6, $a2
468     sb      $t6, 6($a0)
469     or      $t7, $t7, $a2
470     jr      $ra
471     sb      $t7, 7($a0)
472 tile11010011:
473     or      $t0, $t0, $a2
474     sb      $t0, 0($a0)
475 tile11010010:
476     or      $t1, $t1, $a2
477     sb      $t1, 1($a0)
478     or      $t4, $t4, $a2
479     sb      $t4, 4($a0)
480     or      $t6, $t6, $a2
481     sb      $t6, 6($a0)
482     or      $t7, $t7, $a2
483     jr      $ra
484     sb      $t7, 7($a0)
485 tile11010001:
486     or      $t0, $t0, $a2
487     sb      $t0, 0($a0)
488     or      $t4, $t4, $a2
489     sb      $t4, 4($a0)
490     or      $t6, $t6, $a2
491     sb      $t6, 6($a0)
492     or      $t7, $t7, $a2
493     jr      $ra
494     sb      $t7, 7($a0)
495 tile11001111:
496     or      $t0, $t0, $a2
497     sb      $t0, 0($a0)
498 tile11001110:
499     or      $t1, $t1, $a2
500     sb      $t1, 1($a0)
501 tile11001100:
502     or      $t2, $t2, $a2
503     sb      $t2, 2($a0)
504 tile11001000:
505     or      $t3, $t3, $a2
506     sb      $t3, 3($a0)
507     or      $t6, $t6, $a2
508     sb      $t6, 6($a0)
509     or      $t7, $t7, $a2
510     jr      $ra
511     sb      $t7, 7($a0)
512 tile11001101:
513     or      $t0, $t0, $a2
514     sb      $t0, 0($a0)
515     or      $t2, $t2, $a2
516     sb      $t2, 2($a0)
517     or      $t3, $t3, $a2
518     sb      $t3, 3($a0)
519     or      $t6, $t6, $a2
520     sb      $t6, 6($a0)
521     or      $t7, $t7, $a2
522     jr      $ra
523     sb      $t7, 7($a0)
524 tile11001011:
525     or      $t0, $t0, $a2
526     sb      $t0, 0($a0)
527 tile11001010:
528     or      $t1, $t1, $a2
529     sb      $t1, 1($a0)
530     or      $t3, $t3, $a2
531     sb      $t3, 3($a0)
532     or      $t6, $t6, $a2
533     sb      $t6, 6($a0)
534     or      $t7, $t7, $a2
535     jr      $ra
536     sb      $t7, 7($a0)
537 tile11001001:
538     or      $t0, $t0, $a2
539     sb      $t0, 0($a0)
540     or      $t3, $t3, $a2
541     sb      $t3, 3($a0)
542     or      $t6, $t6, $a2
543     sb      $t6, 6($a0)
544     or      $t7, $t7, $a2
545     jr      $ra
546     sb      $t7, 7($a0)
547 tile11000111:
548     or      $t0, $t0, $a2
549     sb      $t0, 0($a0)
550 tile11000110:
551     or      $t1, $t1, $a2
552     sb      $t1, 1($a0)
553 tile11000100:
554     or      $t2, $t2, $a2
555     sb      $t2, 2($a0)
556     or      $t6, $t6, $a2
557     sb      $t6, 6($a0)
558     or      $t7, $t7, $a2
559     jr      $ra
560     sb      $t7, 7($a0)
561 tile11000101:
562     or      $t0, $t0, $a2
563     sb      $t0, 0($a0)
564     or      $t2, $t2, $a2
565     sb      $t2, 2($a0)
566     or      $t6, $t6, $a2
567     sb      $t6, 6($a0)
568     or      $t7, $t7, $a2
569     jr      $ra
570     sb      $t7, 7($a0)
571 tile11000011:
572     or      $t0, $t0, $a2
573     sb      $t0, 0($a0)
574 tile11000010:
575     or      $t1, $t1, $a2
576     sb      $t1, 1($a0)
577     or      $t6, $t6, $a2
578     sb      $t6, 6($a0)
579     or      $t7, $t7, $a2
580     jr      $ra
581     sb      $t7, 7($a0)
582 tile11000001:
583     or      $t0, $t0, $a2
584     sb      $t0, 0($a0)
585     or      $t6, $t6, $a2
586     sb      $t6, 6($a0)
587     or      $t7, $t7, $a2
588     jr      $ra
589     sb      $t7, 7($a0)
590 tile10111111:
591     or      $t0, $t0, $a2
592     sb      $t0, 0($a0)
593 tile10111110:
594     or      $t1, $t1, $a2
595     sb      $t1, 1($a0)
596 tile10111100:
597     or      $t2, $t2, $a2
598     sb      $t2, 2($a0)
599 tile10111000:
600     or      $t3, $t3, $a2
601     sb      $t3, 3($a0)
602 tile10110000:
603     or      $t4, $t4, $a2
604     sb      $t4, 4($a0)
605 tile10100000:
606     or      $t5, $t5, $a2
607     sb      $t5, 5($a0)
608     or      $t7, $t7, $a2
609     jr      $ra
610     sb      $t7, 7($a0)
611 tile10111101:
612     or      $t0, $t0, $a2
613     sb      $t0, 0($a0)
614     or      $t2, $t2, $a2
615     sb      $t2, 2($a0)
616     or      $t3, $t3, $a2
617     sb      $t3, 3($a0)
618     or      $t4, $t4, $a2
619     sb      $t4, 4($a0)
620     or      $t5, $t5, $a2
621     sb      $t5, 5($a0)
622     or      $t7, $t7, $a2
623     jr      $ra
624     sb      $t7, 7($a0)
625 tile10111011:
626     or      $t0, $t0, $a2
627     sb      $t0, 0($a0)
628 tile10111010:
629     or      $t1, $t1, $a2
630     sb      $t1, 1($a0)
631     or      $t3, $t3, $a2
632     sb      $t3, 3($a0)
633     or      $t4, $t4, $a2
634     sb      $t4, 4($a0)
635     or      $t5, $t5, $a2
636     sb      $t5, 5($a0)
637     or      $t7, $t7, $a2
638     jr      $ra
639     sb      $t7, 7($a0)
640 tile10111001:
641     or      $t0, $t0, $a2
642     sb      $t0, 0($a0)
643     or      $t3, $t3, $a2
644     sb      $t3, 3($a0)
645     or      $t4, $t4, $a2
646     sb      $t4, 4($a0)
647     or      $t5, $t5, $a2
648     sb      $t5, 5($a0)
649     or      $t7, $t7, $a2
650     jr      $ra
651     sb      $t7, 7($a0)
652 tile10110111:
653     or      $t0, $t0, $a2
654     sb      $t0, 0($a0)
655 tile10110110:
656     or      $t1, $t1, $a2
657     sb      $t1, 1($a0)
658 tile10110100:
659     or      $t2, $t2, $a2
660     sb      $t2, 2($a0)
661     or      $t4, $t4, $a2
662     sb      $t4, 4($a0)
663     or      $t5, $t5, $a2
664     sb      $t5, 5($a0)
665     or      $t7, $t7, $a2
666     jr      $ra
667     sb      $t7, 7($a0)
668 tile10110101:
669     or      $t0, $t0, $a2
670     sb      $t0, 0($a0)
671     or      $t2, $t2, $a2
672     sb      $t2, 2($a0)
673     or      $t4, $t4, $a2
674     sb      $t4, 4($a0)
675     or      $t5, $t5, $a2
676     sb      $t5, 5($a0)
677     or      $t7, $t7, $a2
678     jr      $ra
679     sb      $t7, 7($a0)
680 tile10110011:
681     or      $t0, $t0, $a2
682     sb      $t0, 0($a0)
683 tile10110010:
684     or      $t1, $t1, $a2
685     sb      $t1, 1($a0)
686     or      $t4, $t4, $a2
687     sb      $t4, 4($a0)
688     or      $t5, $t5, $a2
689     sb      $t5, 5($a0)
690     or      $t7, $t7, $a2
691     jr      $ra
692     sb      $t7, 7($a0)
693 tile10110001:
694     or      $t0, $t0, $a2
695     sb      $t0, 0($a0)
696     or      $t4, $t4, $a2
697     sb      $t4, 4($a0)
698     or      $t5, $t5, $a2
699     sb      $t5, 5($a0)
700     or      $t7, $t7, $a2
701     jr      $ra
702     sb      $t7, 7($a0)
703 tile10101111:
704     or      $t0, $t0, $a2
705     sb      $t0, 0($a0)
706 tile10101110:
707     or      $t1, $t1, $a2
708     sb      $t1, 1($a0)
709 tile10101100:
710     or      $t2, $t2, $a2
711     sb      $t2, 2($a0)
712 tile10101000:
713     or      $t3, $t3, $a2
714     sb      $t3, 3($a0)
715     or      $t5, $t5, $a2
716     sb      $t5, 5($a0)
717     or      $t7, $t7, $a2
718     jr      $ra
719     sb      $t7, 7($a0)
720 tile10101101:
721     or      $t0, $t0, $a2
722     sb      $t0, 0($a0)
723     or      $t2, $t2, $a2
724     sb      $t2, 2($a0)
725     or      $t3, $t3, $a2
726     sb      $t3, 3($a0)
727     or      $t5, $t5, $a2
728     sb      $t5, 5($a0)
729     or      $t7, $t7, $a2
730     jr      $ra
731     sb      $t7, 7($a0)
732 tile10101011:
733     or      $t0, $t0, $a2
734     sb      $t0, 0($a0)
735 tile10101010:
736     or      $t1, $t1, $a2
737     sb      $t1, 1($a0)
738     or      $t3, $t3, $a2
739     sb      $t3, 3($a0)
740     or      $t5, $t5, $a2
741     sb      $t5, 5($a0)
742     or      $t7, $t7, $a2
743     jr      $ra
744     sb      $t7, 7($a0)
745 tile10101001:
746     or      $t0, $t0, $a2
747     sb      $t0, 0($a0)
748     or      $t3, $t3, $a2
749     sb      $t3, 3($a0)
750     or      $t5, $t5, $a2
751     sb      $t5, 5($a0)
752     or      $t7, $t7, $a2
753     jr      $ra
754     sb      $t7, 7($a0)
755 tile10100111:
756     or      $t0, $t0, $a2
757     sb      $t0, 0($a0)
758 tile10100110:
759     or      $t1, $t1, $a2
760     sb      $t1, 1($a0)
761 tile10100100:
762     or      $t2, $t2, $a2
763     sb      $t2, 2($a0)
764     or      $t5, $t5, $a2
765     sb      $t5, 5($a0)
766     or      $t7, $t7, $a2
767     jr      $ra
768     sb      $t7, 7($a0)
769 tile10100101:
770     or      $t0, $t0, $a2
771     sb      $t0, 0($a0)
772     or      $t2, $t2, $a2
773     sb      $t2, 2($a0)
774     or      $t5, $t5, $a2
775     sb      $t5, 5($a0)
776     or      $t7, $t7, $a2
777     jr      $ra
778     sb      $t7, 7($a0)
779 tile10100011:
780     or      $t0, $t0, $a2
781     sb      $t0, 0($a0)
782 tile10100010:
783     or      $t1, $t1, $a2
784     sb      $t1, 1($a0)
785     or      $t5, $t5, $a2
786     sb      $t5, 5($a0)
787     or      $t7, $t7, $a2
788     jr      $ra
789     sb      $t7, 7($a0)
790 tile10100001:
791     or      $t0, $t0, $a2
792     sb      $t0, 0($a0)
793     or      $t5, $t5, $a2
794     sb      $t5, 5($a0)
795     or      $t7, $t7, $a2
796     jr      $ra
797     sb      $t7, 7($a0)
798 tile10011111:
799     or      $t0, $t0, $a2
800     sb      $t0, 0($a0)
801 tile10011110:
802     or      $t1, $t1, $a2
803     sb      $t1, 1($a0)
804 tile10011100:
805     or      $t2, $t2, $a2
806     sb      $t2, 2($a0)
807 tile10011000:
808     or      $t3, $t3, $a2
809     sb      $t3, 3($a0)
810 tile10010000:
811     or      $t4, $t4, $a2
812     sb      $t4, 4($a0)
813     or      $t7, $t7, $a2
814     jr      $ra
815     sb      $t7, 7($a0)
816 tile10011101:
817     or      $t0, $t0, $a2
818     sb      $t0, 0($a0)
819     or      $t2, $t2, $a2
820     sb      $t2, 2($a0)
821     or      $t3, $t3, $a2
822     sb      $t3, 3($a0)
823     or      $t4, $t4, $a2
824     sb      $t4, 4($a0)
825     or      $t7, $t7, $a2
826     jr      $ra
827     sb      $t7, 7($a0)
828 tile10011011:
829     or      $t0, $t0, $a2
830     sb      $t0, 0($a0)
831 tile10011010:
832     or      $t1, $t1, $a2
833     sb      $t1, 1($a0)
834     or      $t3, $t3, $a2
835     sb      $t3, 3($a0)
836     or      $t4, $t4, $a2
837     sb      $t4, 4($a0)
838     or      $t7, $t7, $a2
839     jr      $ra
840     sb      $t7, 7($a0)
841 tile10011001:
842     or      $t0, $t0, $a2
843     sb      $t0, 0($a0)
844     or      $t3, $t3, $a2
845     sb      $t3, 3($a0)
846     or      $t4, $t4, $a2
847     sb      $t4, 4($a0)
848     or      $t7, $t7, $a2
849     jr      $ra
850     sb      $t7, 7($a0)
851 tile10010111:
852     or      $t0, $t0, $a2
853     sb      $t0, 0($a0)
854 tile10010110:
855     or      $t1, $t1, $a2
856     sb      $t1, 1($a0)
857 tile10010100:
858     or      $t2, $t2, $a2
859     sb      $t2, 2($a0)
860     or      $t4, $t4, $a2
861     sb      $t4, 4($a0)
862     or      $t7, $t7, $a2
863     jr      $ra
864     sb      $t7, 7($a0)
865 tile10010101:
866     or      $t0, $t0, $a2
867     sb      $t0, 0($a0)
868     or      $t2, $t2, $a2
869     sb      $t2, 2($a0)
870     or      $t4, $t4, $a2
871     sb      $t4, 4($a0)
872     or      $t7, $t7, $a2
873     jr      $ra
874     sb      $t7, 7($a0)
875 tile10010011:
876     or      $t0, $t0, $a2
877     sb      $t0, 0($a0)
878 tile10010010:
879     or      $t1, $t1, $a2
880     sb      $t1, 1($a0)
881     or      $t4, $t4, $a2
882     sb      $t4, 4($a0)
883     or      $t7, $t7, $a2
884     jr      $ra
885     sb      $t7, 7($a0)
886 tile10010001:
887     or      $t0, $t0, $a2
888     sb      $t0, 0($a0)
889     or      $t4, $t4, $a2
890     sb      $t4, 4($a0)
891     or      $t7, $t7, $a2
892     jr      $ra
893     sb      $t7, 7($a0)
894 tile10001111:
895     or      $t0, $t0, $a2
896     sb      $t0, 0($a0)
897 tile10001110:
898     or      $t1, $t1, $a2
899     sb      $t1, 1($a0)
900 tile10001100:
901     or      $t2, $t2, $a2
902     sb      $t2, 2($a0)
903 tile10001000:
904     or      $t3, $t3, $a2
905     sb      $t3, 3($a0)
906     or      $t7, $t7, $a2
907     jr      $ra
908     sb      $t7, 7($a0)
909 tile10001101:
910     or      $t0, $t0, $a2
911     sb      $t0, 0($a0)
912     or      $t2, $t2, $a2
913     sb      $t2, 2($a0)
914     or      $t3, $t3, $a2
915     sb      $t3, 3($a0)
916     or      $t7, $t7, $a2
917     jr      $ra
918     sb      $t7, 7($a0)
919 tile10001011:
920     or      $t0, $t0, $a2
921     sb      $t0, 0($a0)
922 tile10001010:
923     or      $t1, $t1, $a2
924     sb      $t1, 1($a0)
925     or      $t3, $t3, $a2
926     sb      $t3, 3($a0)
927     or      $t7, $t7, $a2
928     jr      $ra
929     sb      $t7, 7($a0)
930 tile10001001:
931     or      $t0, $t0, $a2
932     sb      $t0, 0($a0)
933     or      $t3, $t3, $a2
934     sb      $t3, 3($a0)
935     or      $t7, $t7, $a2
936     jr      $ra
937     sb      $t7, 7($a0)
938 tile10000111:
939     or      $t0, $t0, $a2
940     sb      $t0, 0($a0)
941 tile10000110:
942     or      $t1, $t1, $a2
943     sb      $t1, 1($a0)
944 tile10000100:
945     or      $t2, $t2, $a2
946     sb      $t2, 2($a0)
947     or      $t7, $t7, $a2
948     jr      $ra
949     sb      $t7, 7($a0)
950 tile10000101:
951     or      $t0, $t0, $a2
952     sb      $t0, 0($a0)
953     or      $t2, $t2, $a2
954     sb      $t2, 2($a0)
955     or      $t7, $t7, $a2
956     jr      $ra
957     sb      $t7, 7($a0)
958 tile10000011:
959     or      $t0, $t0, $a2
960     sb      $t0, 0($a0)
961 tile10000010:
962     or      $t1, $t1, $a2
963     sb      $t1, 1($a0)
964     or      $t7, $t7, $a2
965     jr      $ra
966     sb      $t7, 7($a0)
967 tile10000001:
968     or      $t0, $t0, $a2
969     sb      $t0, 0($a0)
970     or      $t7, $t7, $a2
971     jr      $ra
972     sb      $t7, 7($a0)
973 tile01111111:
974     or      $t0, $t0, $a2
975     sb      $t0, 0($a0)
976 tile01111110:
977     or      $t1, $t1, $a2
978     sb      $t1, 1($a0)
979 tile01111100:
980     or      $t2, $t2, $a2
981     sb      $t2, 2($a0)
982 tile01111000:
983     or      $t3, $t3, $a2
984     sb      $t3, 3($a0)
985 tile01110000:
986     or      $t4, $t4, $a2
987     sb      $t4, 4($a0)
988 tile01100000:
989     or      $t5, $t5, $a2
990     sb      $t5, 5($a0)
991 tile01000000:
992     or      $t6, $t6, $a2
993     jr      $ra
994     sb      $t6, 6($a0)
995 tile00000000:
996 tile01111101:
997     or      $t0, $t0, $a2
998     sb      $t0, 0($a0)
999     or      $t2, $t2, $a2
1000     sb      $t2, 2($a0)
1001     or      $t3, $t3, $a2
1002     sb      $t3, 3($a0)
1003     or      $t4, $t4, $a2
1004     sb      $t4, 4($a0)
1005     or      $t5, $t5, $a2
1006     sb      $t5, 5($a0)
1007     or      $t6, $t6, $a2
1008     jr      $ra
1009     sb      $t6, 6($a0)
1010 tile01111011:
1011     or      $t0, $t0, $a2
1012     sb      $t0, 0($a0)
1013 tile01111010:
1014     or      $t1, $t1, $a2
1015     sb      $t1, 1($a0)
1016     or      $t3, $t3, $a2
1017     sb      $t3, 3($a0)
1018     or      $t4, $t4, $a2
1019     sb      $t4, 4($a0)
1020     or      $t5, $t5, $a2
1021     sb      $t5, 5($a0)
1022     or      $t6, $t6, $a2
1023     jr      $ra
1024     sb      $t6, 6($a0)
1025 tile01111001:
1026     or      $t0, $t0, $a2
1027     sb      $t0, 0($a0)
1028     or      $t3, $t3, $a2
1029     sb      $t3, 3($a0)
1030     or      $t4, $t4, $a2
1031     sb      $t4, 4($a0)
1032     or      $t5, $t5, $a2
1033     sb      $t5, 5($a0)
1034     or      $t6, $t6, $a2
1035     jr      $ra
1036     sb      $t6, 6($a0)
1037 tile01110111:
1038     or      $t0, $t0, $a2
1039     sb      $t0, 0($a0)
1040 tile01110110:
1041     or      $t1, $t1, $a2
1042     sb      $t1, 1($a0)
1043 tile01110100:
1044     or      $t2, $t2, $a2
1045     sb      $t2, 2($a0)
1046     or      $t4, $t4, $a2
1047     sb      $t4, 4($a0)
1048     or      $t5, $t5, $a2
1049     sb      $t5, 5($a0)
1050     or      $t6, $t6, $a2
1051     jr      $ra
1052     sb      $t6, 6($a0)
1053 tile01110101:
1054     or      $t0, $t0, $a2
1055     sb      $t0, 0($a0)
1056     or      $t2, $t2, $a2
1057     sb      $t2, 2($a0)
1058     or      $t4, $t4, $a2
1059     sb      $t4, 4($a0)
1060     or      $t5, $t5, $a2
1061     sb      $t5, 5($a0)
1062     or      $t6, $t6, $a2
1063     jr      $ra
1064     sb      $t6, 6($a0)
1065 tile01110011:
1066     or      $t0, $t0, $a2
1067     sb      $t0, 0($a0)
1068 tile01110010:
1069     or      $t1, $t1, $a2
1070     sb      $t1, 1($a0)
1071     or      $t4, $t4, $a2
1072     sb      $t4, 4($a0)
1073     or      $t5, $t5, $a2
1074     sb      $t5, 5($a0)
1075     or      $t6, $t6, $a2
1076     jr      $ra
1077     sb      $t6, 6($a0)
1078 tile01110001:
1079     or      $t0, $t0, $a2
1080     sb      $t0, 0($a0)
1081     or      $t4, $t4, $a2
1082     sb      $t4, 4($a0)
1083     or      $t5, $t5, $a2
1084     sb      $t5, 5($a0)
1085     or      $t6, $t6, $a2
1086     jr      $ra
1087     sb      $t6, 6($a0)
1088 tile01101111:
1089     or      $t0, $t0, $a2
1090     sb      $t0, 0($a0)
1091 tile01101110:
1092     or      $t1, $t1, $a2
1093     sb      $t1, 1($a0)
1094 tile01101100:
1095     or      $t2, $t2, $a2
1096     sb      $t2, 2($a0)
1097 tile01101000:
1098     or      $t3, $t3, $a2
1099     sb      $t3, 3($a0)
1100     or      $t5, $t5, $a2
1101     sb      $t5, 5($a0)
1102     or      $t6, $t6, $a2
1103     jr      $ra
1104     sb      $t6, 6($a0)
1105 tile01101101:
1106     or      $t0, $t0, $a2
1107     sb      $t0, 0($a0)
1108     or      $t2, $t2, $a2
1109     sb      $t2, 2($a0)
1110     or      $t3, $t3, $a2
1111     sb      $t3, 3($a0)
1112     or      $t5, $t5, $a2
1113     sb      $t5, 5($a0)
1114     or      $t6, $t6, $a2
1115     jr      $ra
1116     sb      $t6, 6($a0)
1117 tile01101011:
1118     or      $t0, $t0, $a2
1119     sb      $t0, 0($a0)
1120 tile01101010:
1121     or      $t1, $t1, $a2
1122     sb      $t1, 1($a0)
1123     or      $t3, $t3, $a2
1124     sb      $t3, 3($a0)
1125     or      $t5, $t5, $a2
1126     sb      $t5, 5($a0)
1127     or      $t6, $t6, $a2
1128     jr      $ra
1129     sb      $t6, 6($a0)
1130 tile01101001:
1131     or      $t0, $t0, $a2
1132     sb      $t0, 0($a0)
1133     or      $t3, $t3, $a2
1134     sb      $t3, 3($a0)
1135     or      $t5, $t5, $a2
1136     sb      $t5, 5($a0)
1137     or      $t6, $t6, $a2
1138     jr      $ra
1139     sb      $t6, 6($a0)
1140 tile01100111:
1141     or      $t0, $t0, $a2
1142     sb      $t0, 0($a0)
1143 tile01100110:
1144     or      $t1, $t1, $a2
1145     sb      $t1, 1($a0)
1146 tile01100100:
1147     or      $t2, $t2, $a2
1148     sb      $t2, 2($a0)
1149     or      $t5, $t5, $a2
1150     sb      $t5, 5($a0)
1151     or      $t6, $t6, $a2
1152     jr      $ra
1153     sb      $t6, 6($a0)
1154 tile01100101:
1155     or      $t0, $t0, $a2
1156     sb      $t0, 0($a0)
1157     or      $t2, $t2, $a2
1158     sb      $t2, 2($a0)
1159     or      $t5, $t5, $a2
1160     sb      $t5, 5($a0)
1161     or      $t6, $t6, $a2
1162     jr      $ra
1163     sb      $t6, 6($a0)
1164 tile01100011:
1165     or      $t0, $t0, $a2
1166     sb      $t0, 0($a0)
1167 tile01100010:
1168     or      $t1, $t1, $a2
1169     sb      $t1, 1($a0)
1170     or      $t5, $t5, $a2
1171     sb      $t5, 5($a0)
1172     or      $t6, $t6, $a2
1173     jr      $ra
1174     sb      $t6, 6($a0)
1175 tile01100001:
1176     or      $t0, $t0, $a2
1177     sb      $t0, 0($a0)
1178     or      $t5, $t5, $a2
1179     sb      $t5, 5($a0)
1180     or      $t6, $t6, $a2
1181     jr      $ra
1182     sb      $t6, 6($a0)
1183 tile01011111:
1184     or      $t0, $t0, $a2
1185     sb      $t0, 0($a0)
1186 tile01011110:
1187     or      $t1, $t1, $a2
1188     sb      $t1, 1($a0)
1189 tile01011100:
1190     or      $t2, $t2, $a2
1191     sb      $t2, 2($a0)
1192 tile01011000:
1193     or      $t3, $t3, $a2
1194     sb      $t3, 3($a0)
1195 tile01010000:
1196     or      $t4, $t4, $a2
1197     sb      $t4, 4($a0)
1198     or      $t6, $t6, $a2
1199     jr      $ra
1200     sb      $t6, 6($a0)
1201 tile01011101:
1202     or      $t0, $t0, $a2
1203     sb      $t0, 0($a0)
1204     or      $t2, $t2, $a2
1205     sb      $t2, 2($a0)
1206     or      $t3, $t3, $a2
1207     sb      $t3, 3($a0)
1208     or      $t4, $t4, $a2
1209     sb      $t4, 4($a0)
1210     or      $t6, $t6, $a2
1211     jr      $ra
1212     sb      $t6, 6($a0)
1213 tile01011011:
1214     or      $t0, $t0, $a2
1215     sb      $t0, 0($a0)
1216 tile01011010:
1217     or      $t1, $t1, $a2
1218     sb      $t1, 1($a0)
1219     or      $t3, $t3, $a2
1220     sb      $t3, 3($a0)
1221     or      $t4, $t4, $a2
1222     sb      $t4, 4($a0)
1223     or      $t6, $t6, $a2
1224     jr      $ra
1225     sb      $t6, 6($a0)
1226 tile01011001:
1227     or      $t0, $t0, $a2
1228     sb      $t0, 0($a0)
1229     or      $t3, $t3, $a2
1230     sb      $t3, 3($a0)
1231     or      $t4, $t4, $a2
1232     sb      $t4, 4($a0)
1233     or      $t6, $t6, $a2
1234     jr      $ra
1235     sb      $t6, 6($a0)
1236 tile01010111:
1237     or      $t0, $t0, $a2
1238     sb      $t0, 0($a0)
1239 tile01010110:
1240     or      $t1, $t1, $a2
1241     sb      $t1, 1($a0)
1242 tile01010100:
1243     or      $t2, $t2, $a2
1244     sb      $t2, 2($a0)
1245     or      $t4, $t4, $a2
1246     sb      $t4, 4($a0)
1247     or      $t6, $t6, $a2
1248     jr      $ra
1249     sb      $t6, 6($a0)
1250 tile01010101:
1251     or      $t0, $t0, $a2
1252     sb      $t0, 0($a0)
1253     or      $t2, $t2, $a2
1254     sb      $t2, 2($a0)
1255     or      $t4, $t4, $a2
1256     sb      $t4, 4($a0)
1257     or      $t6, $t6, $a2
1258     jr      $ra
1259     sb      $t6, 6($a0)
1260 tile01010011:
1261     or      $t0, $t0, $a2
1262     sb      $t0, 0($a0)
1263 tile01010010:
1264     or      $t1, $t1, $a2
1265     sb      $t1, 1($a0)
1266     or      $t4, $t4, $a2
1267     sb      $t4, 4($a0)
1268     or      $t6, $t6, $a2
1269     jr      $ra
1270     sb      $t6, 6($a0)
1271 tile01010001:
1272     or      $t0, $t0, $a2
1273     sb      $t0, 0($a0)
1274     or      $t4, $t4, $a2
1275     sb      $t4, 4($a0)
1276     or      $t6, $t6, $a2
1277     jr      $ra
1278     sb      $t6, 6($a0)
1279 tile01001111:
1280     or      $t0, $t0, $a2
1281     sb      $t0, 0($a0)
1282 tile01001110:
1283     or      $t1, $t1, $a2
1284     sb      $t1, 1($a0)
1285 tile01001100:
1286     or      $t2, $t2, $a2
1287     sb      $t2, 2($a0)
1288 tile01001000:
1289     or      $t3, $t3, $a2
1290     sb      $t3, 3($a0)
1291     or      $t6, $t6, $a2
1292     jr      $ra
1293     sb      $t6, 6($a0)
1294 tile01001101:
1295     or      $t0, $t0, $a2
1296     sb      $t0, 0($a0)
1297     or      $t2, $t2, $a2
1298     sb      $t2, 2($a0)
1299     or      $t3, $t3, $a2
1300     sb      $t3, 3($a0)
1301     or      $t6, $t6, $a2
1302     jr      $ra
1303     sb      $t6, 6($a0)
1304 tile01001011:
1305     or      $t0, $t0, $a2
1306     sb      $t0, 0($a0)
1307 tile01001010:
1308     or      $t1, $t1, $a2
1309     sb      $t1, 1($a0)
1310     or      $t3, $t3, $a2
1311     sb      $t3, 3($a0)
1312     or      $t6, $t6, $a2
1313     jr      $ra
1314     sb      $t6, 6($a0)
1315 tile01001001:
1316     or      $t0, $t0, $a2
1317     sb      $t0, 0($a0)
1318     or      $t3, $t3, $a2
1319     sb      $t3, 3($a0)
1320     or      $t6, $t6, $a2
1321     jr      $ra
1322     sb      $t6, 6($a0)
1323 tile01000111:
1324     or      $t0, $t0, $a2
1325     sb      $t0, 0($a0)
1326 tile01000110:
1327     or      $t1, $t1, $a2
1328     sb      $t1, 1($a0)
1329 tile01000100:
1330     or      $t2, $t2, $a2
1331     sb      $t2, 2($a0)
1332     or      $t6, $t6, $a2
1333     jr      $ra
1334     sb      $t6, 6($a0)
1335 tile01000101:
1336     or      $t0, $t0, $a2
1337     sb      $t0, 0($a0)
1338     or      $t2, $t2, $a2
1339     sb      $t2, 2($a0)
1340     or      $t6, $t6, $a2
1341     jr      $ra
1342     sb      $t6, 6($a0)
1343 tile01000011:
1344     or      $t0, $t0, $a2
1345     sb      $t0, 0($a0)
1346 tile01000010:
1347     or      $t1, $t1, $a2
1348     sb      $t1, 1($a0)
1349     or      $t6, $t6, $a2
1350     jr      $ra
1351     sb      $t6, 6($a0)
1352 tile01000001:
1353     or      $t0, $t0, $a2
1354     sb      $t0, 0($a0)
1355     or      $t6, $t6, $a2
1356     jr      $ra
1357     sb      $t6, 6($a0)
1358 tile00111111:
1359     or      $t0, $t0, $a2
1360     sb      $t0, 0($a0)
1361 tile00111110:
1362     or      $t1, $t1, $a2
1363     sb      $t1, 1($a0)
1364 tile00111100:
1365     or      $t2, $t2, $a2
1366     sb      $t2, 2($a0)
1367 tile00111000:
1368     or      $t3, $t3, $a2
1369     sb      $t3, 3($a0)
1370 tile00110000:
1371     or      $t4, $t4, $a2
1372     sb      $t4, 4($a0)
1373 tile00100000:
1374     or      $t5, $t5, $a2
1375     jr      $ra
1376     sb      $t5, 5($a0)
1377 tile00111101:
1378     or      $t0, $t0, $a2
1379     sb      $t0, 0($a0)
1380     or      $t2, $t2, $a2
1381     sb      $t2, 2($a0)
1382     or      $t3, $t3, $a2
1383     sb      $t3, 3($a0)
1384     or      $t4, $t4, $a2
1385     sb      $t4, 4($a0)
1386     or      $t5, $t5, $a2
1387     jr      $ra
1388     sb      $t5, 5($a0)
1389 tile00111011:
1390     or      $t0, $t0, $a2
1391     sb      $t0, 0($a0)
1392 tile00111010:
1393     or      $t1, $t1, $a2
1394     sb      $t1, 1($a0)
1395     or      $t3, $t3, $a2
1396     sb      $t3, 3($a0)
1397     or      $t4, $t4, $a2
1398     sb      $t4, 4($a0)
1399     or      $t5, $t5, $a2
1400     jr      $ra
1401     sb      $t5, 5($a0)
1402 tile00111001:
1403     or      $t0, $t0, $a2
1404     sb      $t0, 0($a0)
1405     or      $t3, $t3, $a2
1406     sb      $t3, 3($a0)
1407     or      $t4, $t4, $a2
1408     sb      $t4, 4($a0)
1409     or      $t5, $t5, $a2
1410     jr      $ra
1411     sb      $t5, 5($a0)
1412 tile00110111:
1413     or      $t0, $t0, $a2
1414     sb      $t0, 0($a0)
1415 tile00110110:
1416     or      $t1, $t1, $a2
1417     sb      $t1, 1($a0)
1418 tile00110100:
1419     or      $t2, $t2, $a2
1420     sb      $t2, 2($a0)
1421     or      $t4, $t4, $a2
1422     sb      $t4, 4($a0)
1423     or      $t5, $t5, $a2
1424     jr      $ra
1425     sb      $t5, 5($a0)
1426 tile00110101:
1427     or      $t0, $t0, $a2
1428     sb      $t0, 0($a0)
1429     or      $t2, $t2, $a2
1430     sb      $t2, 2($a0)
1431     or      $t4, $t4, $a2
1432     sb      $t4, 4($a0)
1433     or      $t5, $t5, $a2
1434     jr      $ra
1435     sb      $t5, 5($a0)
1436 tile00110011:
1437     or      $t0, $t0, $a2
1438     sb      $t0, 0($a0)
1439 tile00110010:
1440     or      $t1, $t1, $a2
1441     sb      $t1, 1($a0)
1442     or      $t4, $t4, $a2
1443     sb      $t4, 4($a0)
1444     or      $t5, $t5, $a2
1445     jr      $ra
1446     sb      $t5, 5($a0)
1447 tile00110001:
1448     or      $t0, $t0, $a2
1449     sb      $t0, 0($a0)
1450     or      $t4, $t4, $a2
1451     sb      $t4, 4($a0)
1452     or      $t5, $t5, $a2
1453     jr      $ra
1454     sb      $t5, 5($a0)
1455 tile00101111:
1456     or      $t0, $t0, $a2
1457     sb      $t0, 0($a0)
1458 tile00101110:
1459     or      $t1, $t1, $a2
1460     sb      $t1, 1($a0)
1461 tile00101100:
1462     or      $t2, $t2, $a2
1463     sb      $t2, 2($a0)
1464 tile00101000:
1465     or      $t3, $t3, $a2
1466     sb      $t3, 3($a0)
1467     or      $t5, $t5, $a2
1468     jr      $ra
1469     sb      $t5, 5($a0)
1470 tile00101101:
1471     or      $t0, $t0, $a2
1472     sb      $t0, 0($a0)
1473     or      $t2, $t2, $a2
1474     sb      $t2, 2($a0)
1475     or      $t3, $t3, $a2
1476     sb      $t3, 3($a0)
1477     or      $t5, $t5, $a2
1478     jr      $ra
1479     sb      $t5, 5($a0)
1480 tile00101011:
1481     or      $t0, $t0, $a2
1482     sb      $t0, 0($a0)
1483 tile00101010:
1484     or      $t1, $t1, $a2
1485     sb      $t1, 1($a0)
1486     or      $t3, $t3, $a2
1487     sb      $t3, 3($a0)
1488     or      $t5, $t5, $a2
1489     jr      $ra
1490     sb      $t5, 5($a0)
1491 tile00101001:
1492     or      $t0, $t0, $a2
1493     sb      $t0, 0($a0)
1494     or      $t3, $t3, $a2
1495     sb      $t3, 3($a0)
1496     or      $t5, $t5, $a2
1497     jr      $ra
1498     sb      $t5, 5($a0)
1499 tile00100111:
1500     or      $t0, $t0, $a2
1501     sb      $t0, 0($a0)
1502 tile00100110:
1503     or      $t1, $t1, $a2
1504     sb      $t1, 1($a0)
1505 tile00100100:
1506     or      $t2, $t2, $a2
1507     sb      $t2, 2($a0)
1508     or      $t5, $t5, $a2
1509     jr      $ra
1510     sb      $t5, 5($a0)
1511 tile00100101:
1512     or      $t0, $t0, $a2
1513     sb      $t0, 0($a0)
1514     or      $t2, $t2, $a2
1515     sb      $t2, 2($a0)
1516     or      $t5, $t5, $a2
1517     jr      $ra
1518     sb      $t5, 5($a0)
1519 tile00100011:
1520     or      $t0, $t0, $a2
1521     sb      $t0, 0($a0)
1522 tile00100010:
1523     or      $t1, $t1, $a2
1524     sb      $t1, 1($a0)
1525     or      $t5, $t5, $a2
1526     jr      $ra
1527     sb      $t5, 5($a0)
1528 tile00100001:
1529     or      $t0, $t0, $a2
1530     sb      $t0, 0($a0)
1531     or      $t5, $t5, $a2
1532     jr      $ra
1533     sb      $t5, 5($a0)
1534 tile00011111:
1535     or      $t0, $t0, $a2
1536     sb      $t0, 0($a0)
1537 tile00011110:
1538     or      $t1, $t1, $a2
1539     sb      $t1, 1($a0)
1540 tile00011100:
1541     or      $t2, $t2, $a2
1542     sb      $t2, 2($a0)
1543 tile00011000:
1544     or      $t3, $t3, $a2
1545     sb      $t3, 3($a0)
1546 tile00010000:
1547     or      $t4, $t4, $a2
1548     jr      $ra
1549     sb      $t4, 4($a0)
1550 tile00011101:
1551     or      $t0, $t0, $a2
1552     sb      $t0, 0($a0)
1553     or      $t2, $t2, $a2
1554     sb      $t2, 2($a0)
1555     or      $t3, $t3, $a2
1556     sb      $t3, 3($a0)
1557     or      $t4, $t4, $a2
1558     jr      $ra
1559     sb      $t4, 4($a0)
1560 tile00011011:
1561     or      $t0, $t0, $a2
1562     sb      $t0, 0($a0)
1563 tile00011010:
1564     or      $t1, $t1, $a2
1565     sb      $t1, 1($a0)
1566     or      $t3, $t3, $a2
1567     sb      $t3, 3($a0)
1568     or      $t4, $t4, $a2
1569     jr      $ra
1570     sb      $t4, 4($a0)
1571 tile00011001:
1572     or      $t0, $t0, $a2
1573     sb      $t0, 0($a0)
1574     or      $t3, $t3, $a2
1575     sb      $t3, 3($a0)
1576     or      $t4, $t4, $a2
1577     jr      $ra
1578     sb      $t4, 4($a0)
1579 tile00010111:
1580     or      $t0, $t0, $a2
1581     sb      $t0, 0($a0)
1582 tile00010110:
1583     or      $t1, $t1, $a2
1584     sb      $t1, 1($a0)
1585 tile00010100:
1586     or      $t2, $t2, $a2
1587     sb      $t2, 2($a0)
1588     or      $t4, $t4, $a2
1589     jr      $ra
1590     sb      $t4, 4($a0)
1591 tile00010101:
1592     or      $t0, $t0, $a2
1593     sb      $t0, 0($a0)
1594     or      $t2, $t2, $a2
1595     sb      $t2, 2($a0)
1596     or      $t4, $t4, $a2
1597     jr      $ra
1598     sb      $t4, 4($a0)
1599 tile00010011:
1600     or      $t0, $t0, $a2
1601     sb      $t0, 0($a0)
1602 tile00010010:
1603     or      $t1, $t1, $a2
1604     sb      $t1, 1($a0)
1605     or      $t4, $t4, $a2
1606     jr      $ra
1607     sb      $t4, 4($a0)
1608 tile00010001:
1609     or      $t0, $t0, $a2
1610     sb      $t0, 0($a0)
1611     or      $t4, $t4, $a2
1612     jr      $ra
1613     sb      $t4, 4($a0)
1614 tile00001111:
1615     or      $t0, $t0, $a2
1616     sb      $t0, 0($a0)
1617 tile00001110:
1618     or      $t1, $t1, $a2
1619     sb      $t1, 1($a0)
1620 tile00001100:
1621     or      $t2, $t2, $a2
1622     sb      $t2, 2($a0)
1623 tile00001000:
1624     or      $t3, $t3, $a2
1625     jr      $ra
1626     sb      $t3, 3($a0)
1627 tile00001101:
1628     or      $t0, $t0, $a2
1629     sb      $t0, 0($a0)
1630     or      $t2, $t2, $a2
1631     sb      $t2, 2($a0)
1632     or      $t3, $t3, $a2
1633     jr      $ra
1634     sb      $t3, 3($a0)
1635 tile00001011:
1636     or      $t0, $t0, $a2
1637     sb      $t0, 0($a0)
1638 tile00001010:
1639     or      $t1, $t1, $a2
1640     sb      $t1, 1($a0)
1641     or      $t3, $t3, $a2
1642     jr      $ra
1643     sb      $t3, 3($a0)
1644 tile00001001:
1645     or      $t0, $t0, $a2
1646     sb      $t0, 0($a0)
1647     or      $t3, $t3, $a2
1648     jr      $ra
1649     sb      $t3, 3($a0)
1650 tile00000111:
1651     or      $t0, $t0, $a2
1652     sb      $t0, 0($a0)
1653 tile00000110:
1654     or      $t1, $t1, $a2
1655     sb      $t1, 1($a0)
1656 tile00000100:
1657     or      $t2, $t2, $a2
1658     jr      $ra
1659     sb      $t2, 2($a0)
1660 tile00000101:
1661     or      $t0, $t0, $a2
1662     sb      $t0, 0($a0)
1663     or      $t2, $t2, $a2
1664     jr      $ra
1665     sb      $t2, 2($a0)
1666 tile00000011:
1667     or      $t0, $t0, $a2
1668     sb      $t0, 0($a0)
1669 tile00000010:
1670     or      $t1, $t1, $a2
1671     jr      $ra
1672     sb      $t1, 1($a0)
1673 tile00000001:
1674     or      $t0, $t0, $a2
1675     jr      $ra
1676     sb      $t0, 0($a0)
1677
1678 .data
1679 .align 4
1680
1681 TileTable:
1682   .long 000000000000, tile00000001, tile00000010, tile00000011, tile00000100, tile00000101, tile00000110, tile00000111
1683   .long tile00001000, tile00001001, tile00001010, tile00001011, tile00001100, tile00001101, tile00001110, tile00001111
1684   .long tile00010000, tile00010001, tile00010010, tile00010011, tile00010100, tile00010101, tile00010110, tile00010111
1685   .long tile00011000, tile00011001, tile00011010, tile00011011, tile00011100, tile00011101, tile00011110, tile00011111
1686   .long tile00100000, tile00100001, tile00100010, tile00100011, tile00100100, tile00100101, tile00100110, tile00100111
1687   .long tile00101000, tile00101001, tile00101010, tile00101011, tile00101100, tile00101101, tile00101110, tile00101111
1688   .long tile00110000, tile00110001, tile00110010, tile00110011, tile00110100, tile00110101, tile00110110, tile00110111
1689   .long tile00111000, tile00111001, tile00111010, tile00111011, tile00111100, tile00111101, tile00111110, tile00111111
1690   .long tile01000000, tile01000001, tile01000010, tile01000011, tile01000100, tile01000101, tile01000110, tile01000111
1691   .long tile01001000, tile01001001, tile01001010, tile01001011, tile01001100, tile01001101, tile01001110, tile01001111
1692   .long tile01010000, tile01010001, tile01010010, tile01010011, tile01010100, tile01010101, tile01010110, tile01010111
1693   .long tile01011000, tile01011001, tile01011010, tile01011011, tile01011100, tile01011101, tile01011110, tile01011111
1694   .long tile01100000, tile01100001, tile01100010, tile01100011, tile01100100, tile01100101, tile01100110, tile01100111
1695   .long tile01101000, tile01101001, tile01101010, tile01101011, tile01101100, tile01101101, tile01101110, tile01101111
1696   .long tile01110000, tile01110001, tile01110010, tile01110011, tile01110100, tile01110101, tile01110110, tile01110111
1697   .long tile01111000, tile01111001, tile01111010, tile01111011, tile01111100, tile01111101, tile01111110, tile01111111
1698   .long tile10000000, tile10000001, tile10000010, tile10000011, tile10000100, tile10000101, tile10000110, tile10000111
1699   .long tile10001000, tile10001001, tile10001010, tile10001011, tile10001100, tile10001101, tile10001110, tile10001111
1700   .long tile10010000, tile10010001, tile10010010, tile10010011, tile10010100, tile10010101, tile10010110, tile10010111
1701   .long tile10011000, tile10011001, tile10011010, tile10011011, tile10011100, tile10011101, tile10011110, tile10011111
1702   .long tile10100000, tile10100001, tile10100010, tile10100011, tile10100100, tile10100101, tile10100110, tile10100111
1703   .long tile10101000, tile10101001, tile10101010, tile10101011, tile10101100, tile10101101, tile10101110, tile10101111
1704   .long tile10110000, tile10110001, tile10110010, tile10110011, tile10110100, tile10110101, tile10110110, tile10110111
1705   .long tile10111000, tile10111001, tile10111010, tile10111011, tile10111100, tile10111101, tile10111110, tile10111111
1706   .long tile11000000, tile11000001, tile11000010, tile11000011, tile11000100, tile11000101, tile11000110, tile11000111
1707   .long tile11001000, tile11001001, tile11001010, tile11001011, tile11001100, tile11001101, tile11001110, tile11001111
1708   .long tile11010000, tile11010001, tile11010010, tile11010011, tile11010100, tile11010101, tile11010110, tile11010111
1709   .long tile11011000, tile11011001, tile11011010, tile11011011, tile11011100, tile11011101, tile11011110, tile11011111
1710   .long tile11100000, tile11100001, tile11100010, tile11100011, tile11100100, tile11100101, tile11100110, tile11100111
1711   .long tile11101000, tile11101001, tile11101010, tile11101011, tile11101100, tile11101101, tile11101110, tile11101111
1712   .long tile11110000, tile11110001, tile11110010, tile11110011, tile11110100, tile11110101, tile11110110, tile11110111
1713   .long tile11111000, tile11111001, tile11111010, tile11111011, tile11111100, tile11111101, tile11111110, tile11111111
1714
1715