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