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