summaryrefslogtreecommitdiff
path: root/asm/SDK/GX/GXFrameBuf.s
blob: 061587d8e8531024f25f87ae0760238e4332c280 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
.include "macros.inc"

.section .text, "ax"  # 0x80006980 - 0x803E1E60

.global GXSetDispCopySrc
GXSetDispCopySrc:
/* 8028146C 0027D0CC  38 E0 00 00 */	li r7, 0
/* 80281470 0027D0D0  38 05 FF FF */	addi r0, r5, -1
/* 80281474 0027D0D4  50 67 05 BE */	rlwimi r7, r3, 0, 0x16, 0x1f
/* 80281478 0027D0D8  38 60 00 00 */	li r3, 0
/* 8028147C 0027D0DC  50 87 53 2A */	rlwimi r7, r4, 0xa, 0xc, 0x15
/* 80281480 0027D0E0  38 80 00 49 */	li r4, 0x49
/* 80281484 0027D0E4  50 03 05 BE */	rlwimi r3, r0, 0, 0x16, 0x1f
/* 80281488 0027D0E8  38 06 FF FF */	addi r0, r6, -1
/* 8028148C 0027D0EC  50 03 53 2A */	rlwimi r3, r0, 0xa, 0xc, 0x15
/* 80281490 0027D0F0  80 A2 A0 D0 */	lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
/* 80281494 0027D0F4  50 87 C0 0E */	rlwimi r7, r4, 0x18, 0, 7
/* 80281498 0027D0F8  38 00 00 4A */	li r0, 0x4a
/* 8028149C 0027D0FC  90 E5 02 30 */	stw r7, 0x230(r5)
/* 802814A0 0027D100  50 03 C0 0E */	rlwimi r3, r0, 0x18, 0, 7
/* 802814A4 0027D104  90 65 02 34 */	stw r3, 0x234(r5)
/* 802814A8 0027D108  4E 80 00 20 */	blr

.global GXSetTexCopySrc
GXSetTexCopySrc:
/* 802814AC 0027D10C  38 E0 00 00 */	li r7, 0
/* 802814B0 0027D110  38 05 FF FF */	addi r0, r5, -1
/* 802814B4 0027D114  50 67 05 BE */	rlwimi r7, r3, 0, 0x16, 0x1f
/* 802814B8 0027D118  38 60 00 00 */	li r3, 0
/* 802814BC 0027D11C  50 87 53 2A */	rlwimi r7, r4, 0xa, 0xc, 0x15
/* 802814C0 0027D120  38 80 00 49 */	li r4, 0x49
/* 802814C4 0027D124  50 03 05 BE */	rlwimi r3, r0, 0, 0x16, 0x1f
/* 802814C8 0027D128  38 06 FF FF */	addi r0, r6, -1
/* 802814CC 0027D12C  50 03 53 2A */	rlwimi r3, r0, 0xa, 0xc, 0x15
/* 802814D0 0027D130  80 A2 A0 D0 */	lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
/* 802814D4 0027D134  50 87 C0 0E */	rlwimi r7, r4, 0x18, 0, 7
/* 802814D8 0027D138  38 00 00 4A */	li r0, 0x4a
/* 802814DC 0027D13C  90 E5 02 40 */	stw r7, 0x240(r5)
/* 802814E0 0027D140  50 03 C0 0E */	rlwimi r3, r0, 0x18, 0, 7
/* 802814E4 0027D144  90 65 02 44 */	stw r3, 0x244(r5)
/* 802814E8 0027D148  4E 80 00 20 */	blr

.global GXSetDispCopyDst
GXSetDispCopyDst:
/* 802814EC 0027D14C  54 60 0C 3C */	rlwinm r0, r3, 1, 0x10, 0x1e
/* 802814F0 0027D150  80 82 A0 D0 */	lwz r4, lbl_806426D0-_SDA2_BASE_(r2)
/* 802814F4 0027D154  7C 00 2E 70 */	srawi r0, r0, 5
/* 802814F8 0027D158  38 60 00 00 */	li r3, 0
/* 802814FC 0027D15C  50 03 05 BE */	rlwimi r3, r0, 0, 0x16, 0x1f
/* 80281500 0027D160  38 00 00 4D */	li r0, 0x4d
/* 80281504 0027D164  50 03 C0 0E */	rlwimi r3, r0, 0x18, 0, 7
/* 80281508 0027D168  90 64 02 38 */	stw r3, 0x238(r4)
/* 8028150C 0027D16C  4E 80 00 20 */	blr

.global GXSetTexCopyDst
GXSetTexCopyDst:
/* 80281510 0027D170  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 80281514 0027D174  7C 08 02 A6 */	mflr r0
/* 80281518 0027D178  80 E2 A0 D0 */	lwz r7, lbl_806426D0-_SDA2_BASE_(r2)
/* 8028151C 0027D17C  2C 05 00 13 */	cmpwi r5, 0x13
/* 80281520 0027D180  90 01 00 34 */	stw r0, 0x34(r1)
/* 80281524 0027D184  38 00 00 00 */	li r0, 0
/* 80281528 0027D188  7C 69 1B 78 */	mr r9, r3
/* 8028152C 0027D18C  7C 88 23 78 */	mr r8, r4
/* 80281530 0027D190  93 E1 00 2C */	stw r31, 0x2c(r1)
/* 80281534 0027D194  54 BF 07 3E */	clrlwi r31, r5, 0x1c
/* 80281538 0027D198  93 C1 00 28 */	stw r30, 0x28(r1)
/* 8028153C 0027D19C  7C DE 33 78 */	mr r30, r6
/* 80281540 0027D1A0  93 A1 00 24 */	stw r29, 0x24(r1)
/* 80281544 0027D1A4  93 81 00 20 */	stw r28, 0x20(r1)
/* 80281548 0027D1A8  98 07 02 50 */	stb r0, 0x250(r7)
/* 8028154C 0027D1AC  40 82 00 08 */	bne lbl_80281554
/* 80281550 0027D1B0  3B E0 00 0B */	li r31, 0xb
lbl_80281554:
/* 80281554 0027D1B4  2C 05 00 26 */	cmpwi r5, 0x26
/* 80281558 0027D1B8  41 82 00 1C */	beq lbl_80281574
/* 8028155C 0027D1BC  40 80 00 30 */	bge lbl_8028158C
/* 80281560 0027D1C0  2C 05 00 04 */	cmpwi r5, 4
/* 80281564 0027D1C4  40 80 00 28 */	bge lbl_8028158C
/* 80281568 0027D1C8  2C 05 00 00 */	cmpwi r5, 0
/* 8028156C 0027D1CC  40 80 00 08 */	bge lbl_80281574
/* 80281570 0027D1D0  48 00 00 1C */	b lbl_8028158C
lbl_80281574:
/* 80281574 0027D1D4  38 00 00 03 */	li r0, 3
/* 80281578 0027D1D8  80 67 02 4C */	lwz r3, 0x24c(r7)
/* 8028157C 0027D1DC  50 03 7B E0 */	rlwimi r3, r0, 0xf, 0xf, 0x10
/* 80281580 0027D1E0  3B A7 02 4C */	addi r29, r7, 0x24c
/* 80281584 0027D1E4  90 67 02 4C */	stw r3, 0x24c(r7)
/* 80281588 0027D1E8  48 00 00 18 */	b lbl_802815A0
lbl_8028158C:
/* 8028158C 0027D1EC  38 00 00 02 */	li r0, 2
/* 80281590 0027D1F0  80 67 02 4C */	lwz r3, 0x24c(r7)
/* 80281594 0027D1F4  50 03 7B E0 */	rlwimi r3, r0, 0xf, 0xf, 0x10
/* 80281598 0027D1F8  3B A7 02 4C */	addi r29, r7, 0x24c
/* 8028159C 0027D1FC  90 67 02 4C */	stw r3, 0x24c(r7)
lbl_802815A0:
/* 802815A0 0027D200  54 A0 E7 FE */	rlwinm r0, r5, 0x1c, 0x1f, 0x1f
/* 802815A4 0027D204  7C A3 2B 78 */	mr r3, r5
/* 802815A8 0027D208  98 07 02 50 */	stb r0, 0x250(r7)
/* 802815AC 0027D20C  7D 05 43 78 */	mr r5, r8
/* 802815B0 0027D210  83 82 A0 D0 */	lwz r28, lbl_806426D0-_SDA2_BASE_(r2)
/* 802815B4 0027D214  7D 24 4B 78 */	mr r4, r9
/* 802815B8 0027D218  80 1D 00 00 */	lwz r0, 0(r29)
/* 802815BC 0027D21C  53 E0 07 38 */	rlwimi r0, r31, 0, 0x1c, 0x1c
/* 802815C0 0027D220  38 C1 00 10 */	addi r6, r1, 0x10
/* 802815C4 0027D224  38 E1 00 0C */	addi r7, r1, 0xc
/* 802815C8 0027D228  90 1D 00 00 */	stw r0, 0(r29)
/* 802815CC 0027D22C  39 01 00 08 */	addi r8, r1, 8
/* 802815D0 0027D230  48 00 10 41 */	bl __GetImageTileCount
/* 802815D4 0027D234  38 00 00 00 */	li r0, 0
/* 802815D8 0027D238  38 60 00 00 */	li r3, 0
/* 802815DC 0027D23C  90 1C 02 48 */	stw r0, 0x248(r28)
/* 802815E0 0027D240  38 00 00 4D */	li r0, 0x4d
/* 802815E4 0027D244  80 A1 00 10 */	lwz r5, 0x10(r1)
/* 802815E8 0027D248  80 81 00 08 */	lwz r4, 8(r1)
/* 802815EC 0027D24C  7C 85 21 D6 */	mullw r4, r5, r4
/* 802815F0 0027D250  50 83 05 BE */	rlwimi r3, r4, 0, 0x16, 0x1f
/* 802815F4 0027D254  50 03 C0 0E */	rlwimi r3, r0, 0x18, 0, 7
/* 802815F8 0027D258  90 7C 02 48 */	stw r3, 0x248(r28)
/* 802815FC 0027D25C  80 1D 00 00 */	lwz r0, 0(r29)
/* 80281600 0027D260  53 C0 4D AC */	rlwimi r0, r30, 9, 0x16, 0x16
/* 80281604 0027D264  53 E0 26 76 */	rlwimi r0, r31, 4, 0x19, 0x1b
/* 80281608 0027D268  90 1D 00 00 */	stw r0, 0(r29)
/* 8028160C 0027D26C  83 E1 00 2C */	lwz r31, 0x2c(r1)
/* 80281610 0027D270  83 C1 00 28 */	lwz r30, 0x28(r1)
/* 80281614 0027D274  83 A1 00 24 */	lwz r29, 0x24(r1)
/* 80281618 0027D278  83 81 00 20 */	lwz r28, 0x20(r1)
/* 8028161C 0027D27C  80 01 00 34 */	lwz r0, 0x34(r1)
/* 80281620 0027D280  7C 08 03 A6 */	mtlr r0
/* 80281624 0027D284  38 21 00 30 */	addi r1, r1, 0x30
/* 80281628 0027D288  4E 80 00 20 */	blr

.global GXSetDispCopyFrame2Field
GXSetDispCopyFrame2Field:
/* 8028162C 0027D28C  80 82 A0 D0 */	lwz r4, lbl_806426D0-_SDA2_BASE_(r2)
/* 80281630 0027D290  80 04 02 3C */	lwz r0, 0x23c(r4)
/* 80281634 0027D294  50 60 64 A6 */	rlwimi r0, r3, 0xc, 0x12, 0x13
/* 80281638 0027D298  90 04 02 3C */	stw r0, 0x23c(r4)
/* 8028163C 0027D29C  80 04 02 4C */	lwz r0, 0x24c(r4)
/* 80281640 0027D2A0  54 00 05 22 */	rlwinm r0, r0, 0, 0x14, 0x11
/* 80281644 0027D2A4  90 04 02 4C */	stw r0, 0x24c(r4)
/* 80281648 0027D2A8  4E 80 00 20 */	blr

.global GXSetCopyClamp
GXSetCopyClamp:
/* 8028164C 0027D2AC  80 82 A0 D0 */	lwz r4, lbl_806426D0-_SDA2_BASE_(r2)
/* 80281650 0027D2B0  80 04 02 3C */	lwz r0, 0x23c(r4)
/* 80281654 0027D2B4  50 60 07 FE */	rlwimi r0, r3, 0, 0x1f, 0x1f
/* 80281658 0027D2B8  50 60 07 BC */	rlwimi r0, r3, 0, 0x1e, 0x1e
/* 8028165C 0027D2BC  90 04 02 3C */	stw r0, 0x23c(r4)
/* 80281660 0027D2C0  80 04 02 4C */	lwz r0, 0x24c(r4)
/* 80281664 0027D2C4  50 60 07 FE */	rlwimi r0, r3, 0, 0x1f, 0x1f
/* 80281668 0027D2C8  50 60 07 BC */	rlwimi r0, r3, 0, 0x1e, 0x1e
/* 8028166C 0027D2CC  90 04 02 4C */	stw r0, 0x24c(r4)
/* 80281670 0027D2D0  4E 80 00 20 */	blr

.global GXGetNumXfbLines
GXGetNumXfbLines:
/* 80281674 0027D2D4  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80281678 0027D2D8  7C 08 02 A6 */	mflr r0
/* 8028167C 0027D2DC  C0 02 A0 F8 */	lfs f0, lbl_806426F8-_SDA2_BASE_(r2)
/* 80281680 0027D2E0  90 01 00 14 */	stw r0, 0x14(r1)
/* 80281684 0027D2E4  EC 20 08 24 */	fdivs f1, f0, f1
/* 80281688 0027D2E8  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8028168C 0027D2EC  7C 7F 1B 78 */	mr r31, r3
/* 80281690 0027D2F0  4B F4 59 71 */	bl __cvt_fp2unsigned
/* 80281694 0027D2F4  38 1F FF FF */	addi r0, r31, -1
/* 80281698 0027D2F8  54 64 05 FE */	clrlwi r4, r3, 0x17
/* 8028169C 0027D2FC  54 00 40 2E */	slwi r0, r0, 8
/* 802816A0 0027D300  7C 60 23 96 */	divwu r3, r0, r4
/* 802816A4 0027D304  28 04 00 80 */	cmplwi r4, 0x80
/* 802816A8 0027D308  38 63 00 01 */	addi r3, r3, 1
/* 802816AC 0027D30C  40 81 00 30 */	ble lbl_802816DC
/* 802816B0 0027D310  28 04 01 00 */	cmplwi r4, 0x100
/* 802816B4 0027D314  40 80 00 28 */	bge lbl_802816DC
/* 802816B8 0027D318  48 00 00 08 */	b lbl_802816C0
lbl_802816BC:
/* 802816BC 0027D31C  54 84 F8 7E */	srwi r4, r4, 1
lbl_802816C0:
/* 802816C0 0027D320  54 80 07 FF */	clrlwi. r0, r4, 0x1f
/* 802816C4 0027D324  41 82 FF F8 */	beq lbl_802816BC
/* 802816C8 0027D328  7C 1F 23 96 */	divwu r0, r31, r4
/* 802816CC 0027D32C  7C 00 21 D6 */	mullw r0, r0, r4
/* 802816D0 0027D330  7C 00 F8 51 */	subf. r0, r0, r31
/* 802816D4 0027D334  40 82 00 08 */	bne lbl_802816DC
/* 802816D8 0027D338  38 63 00 01 */	addi r3, r3, 1
lbl_802816DC:
/* 802816DC 0027D33C  28 03 04 00 */	cmplwi r3, 0x400
/* 802816E0 0027D340  40 81 00 08 */	ble lbl_802816E8
/* 802816E4 0027D344  38 60 04 00 */	li r3, 0x400
lbl_802816E8:
/* 802816E8 0027D348  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 802816EC 0027D34C  54 63 04 3E */	clrlwi r3, r3, 0x10
/* 802816F0 0027D350  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802816F4 0027D354  7C 08 03 A6 */	mtlr r0
/* 802816F8 0027D358  38 21 00 10 */	addi r1, r1, 0x10
/* 802816FC 0027D35C  4E 80 00 20 */	blr

.global GXGetYScaleFactor
GXGetYScaleFactor:
/* 80281700 0027D360  94 21 FF 90 */	stwu r1, -0x70(r1)
/* 80281704 0027D364  7C 08 02 A6 */	mflr r0
/* 80281708 0027D368  90 01 00 74 */	stw r0, 0x74(r1)
/* 8028170C 0027D36C  DB E1 00 60 */	stfd f31, 0x60(r1)
/* 80281710 0027D370  F3 E1 00 68 */	psq_st f31, 104(r1), 0, qr0
/* 80281714 0027D374  DB C1 00 50 */	stfd f30, 0x50(r1)
/* 80281718 0027D378  F3 C1 00 58 */	psq_st f30, 88(r1), 0, qr0
/* 8028171C 0027D37C  DB A1 00 40 */	stfd f29, 0x40(r1)
/* 80281720 0027D380  F3 A1 00 48 */	psq_st f29, 72(r1), 0, qr0
/* 80281724 0027D384  DB 81 00 30 */	stfd f28, 0x30(r1)
/* 80281728 0027D388  F3 81 00 38 */	psq_st f28, 56(r1), 0, qr0
/* 8028172C 0027D38C  3C 00 43 30 */	lis r0, 0x4330
/* 80281730 0027D390  C8 62 A1 00 */	lfd f3, lbl_80642700-_SDA2_BASE_(r2)
/* 80281734 0027D394  90 01 00 08 */	stw r0, 8(r1)
/* 80281738 0027D398  C0 02 A0 F8 */	lfs f0, lbl_806426F8-_SDA2_BASE_(r2)
/* 8028173C 0027D39C  90 81 00 0C */	stw r4, 0xc(r1)
/* 80281740 0027D3A0  C8 21 00 08 */	lfd f1, 8(r1)
/* 80281744 0027D3A4  90 01 00 10 */	stw r0, 0x10(r1)
/* 80281748 0027D3A8  EC 41 18 28 */	fsubs f2, f1, f3
/* 8028174C 0027D3AC  90 61 00 14 */	stw r3, 0x14(r1)
/* 80281750 0027D3B0  C8 21 00 10 */	lfd f1, 0x10(r1)
/* 80281754 0027D3B4  93 E1 00 2C */	stw r31, 0x2c(r1)
/* 80281758 0027D3B8  EC 21 18 28 */	fsubs f1, f1, f3
/* 8028175C 0027D3BC  93 C1 00 28 */	stw r30, 0x28(r1)
/* 80281760 0027D3C0  EF 82 08 24 */	fdivs f28, f2, f1
/* 80281764 0027D3C4  93 A1 00 24 */	stw r29, 0x24(r1)
/* 80281768 0027D3C8  7C 9D 23 78 */	mr r29, r4
/* 8028176C 0027D3CC  93 81 00 20 */	stw r28, 0x20(r1)
/* 80281770 0027D3D0  7C 7C 1B 78 */	mr r28, r3
/* 80281774 0027D3D4  7F BE EB 78 */	mr r30, r29
/* 80281778 0027D3D8  EC 20 E0 24 */	fdivs f1, f0, f28
/* 8028177C 0027D3DC  4B F4 58 85 */	bl __cvt_fp2unsigned
/* 80281780 0027D3E0  38 1C FF FF */	addi r0, r28, -1
/* 80281784 0027D3E4  54 64 05 FE */	clrlwi r4, r3, 0x17
/* 80281788 0027D3E8  54 1F 40 2E */	slwi r31, r0, 8
/* 8028178C 0027D3EC  7C 7F 23 96 */	divwu r3, r31, r4
/* 80281790 0027D3F0  28 04 00 80 */	cmplwi r4, 0x80
/* 80281794 0027D3F4  38 63 00 01 */	addi r3, r3, 1
/* 80281798 0027D3F8  40 81 00 30 */	ble lbl_802817C8
/* 8028179C 0027D3FC  28 04 01 00 */	cmplwi r4, 0x100
/* 802817A0 0027D400  40 80 00 28 */	bge lbl_802817C8
/* 802817A4 0027D404  48 00 00 08 */	b lbl_802817AC
lbl_802817A8:
/* 802817A8 0027D408  54 84 F8 7E */	srwi r4, r4, 1
lbl_802817AC:
/* 802817AC 0027D40C  54 80 07 FF */	clrlwi. r0, r4, 0x1f
/* 802817B0 0027D410  41 82 FF F8 */	beq lbl_802817A8
/* 802817B4 0027D414  7C 1C 23 96 */	divwu r0, r28, r4
/* 802817B8 0027D418  7C 00 21 D6 */	mullw r0, r0, r4
/* 802817BC 0027D41C  7C 00 E0 51 */	subf. r0, r0, r28
/* 802817C0 0027D420  40 82 00 08 */	bne lbl_802817C8
/* 802817C4 0027D424  38 63 00 01 */	addi r3, r3, 1
lbl_802817C8:
/* 802817C8 0027D428  28 03 04 00 */	cmplwi r3, 0x400
/* 802817CC 0027D42C  40 81 00 08 */	ble lbl_802817D4
/* 802817D0 0027D430  38 60 04 00 */	li r3, 0x400
lbl_802817D4:
/* 802817D4 0027D434  CB E2 A1 00 */	lfd f31, lbl_80642700-_SDA2_BASE_(r2)
/* 802817D8 0027D438  C3 C2 A0 F8 */	lfs f30, lbl_806426F8-_SDA2_BASE_(r2)
/* 802817DC 0027D43C  48 00 00 78 */	b lbl_80281854
lbl_802817E0:
/* 802817E0 0027D440  3B DE FF FF */	addi r30, r30, -1
/* 802817E4 0027D444  93 81 00 14 */	stw r28, 0x14(r1)
/* 802817E8 0027D448  93 C1 00 0C */	stw r30, 0xc(r1)
/* 802817EC 0027D44C  C8 01 00 10 */	lfd f0, 0x10(r1)
/* 802817F0 0027D450  C8 21 00 08 */	lfd f1, 8(r1)
/* 802817F4 0027D454  EC 00 F8 28 */	fsubs f0, f0, f31
/* 802817F8 0027D458  EC 21 F8 28 */	fsubs f1, f1, f31
/* 802817FC 0027D45C  EF 81 00 24 */	fdivs f28, f1, f0
/* 80281800 0027D460  EC 3E E0 24 */	fdivs f1, f30, f28
/* 80281804 0027D464  4B F4 57 FD */	bl __cvt_fp2unsigned
/* 80281808 0027D468  54 64 05 FE */	clrlwi r4, r3, 0x17
/* 8028180C 0027D46C  7C 7F 23 96 */	divwu r3, r31, r4
/* 80281810 0027D470  28 04 00 80 */	cmplwi r4, 0x80
/* 80281814 0027D474  38 63 00 01 */	addi r3, r3, 1
/* 80281818 0027D478  40 81 00 30 */	ble lbl_80281848
/* 8028181C 0027D47C  28 04 01 00 */	cmplwi r4, 0x100
/* 80281820 0027D480  40 80 00 28 */	bge lbl_80281848
/* 80281824 0027D484  48 00 00 08 */	b lbl_8028182C
lbl_80281828:
/* 80281828 0027D488  54 84 F8 7E */	srwi r4, r4, 1
lbl_8028182C:
/* 8028182C 0027D48C  54 80 07 FF */	clrlwi. r0, r4, 0x1f
/* 80281830 0027D490  41 82 FF F8 */	beq lbl_80281828
/* 80281834 0027D494  7C 1C 23 96 */	divwu r0, r28, r4
/* 80281838 0027D498  7C 00 21 D6 */	mullw r0, r0, r4
/* 8028183C 0027D49C  7C 00 E0 51 */	subf. r0, r0, r28
/* 80281840 0027D4A0  40 82 00 08 */	bne lbl_80281848
/* 80281844 0027D4A4  38 63 00 01 */	addi r3, r3, 1
lbl_80281848:
/* 80281848 0027D4A8  28 03 04 00 */	cmplwi r3, 0x400
/* 8028184C 0027D4AC  40 81 00 08 */	ble lbl_80281854
/* 80281850 0027D4B0  38 60 04 00 */	li r3, 0x400
lbl_80281854:
/* 80281854 0027D4B4  7C 03 E8 40 */	cmplw r3, r29
/* 80281858 0027D4B8  41 81 FF 88 */	bgt lbl_802817E0
/* 8028185C 0027D4BC  FF A0 E0 90 */	fmr f29, f28
/* 80281860 0027D4C0  CB C2 A1 00 */	lfd f30, lbl_80642700-_SDA2_BASE_(r2)
/* 80281864 0027D4C4  C3 E2 A0 F8 */	lfs f31, lbl_806426F8-_SDA2_BASE_(r2)
/* 80281868 0027D4C8  48 00 00 7C */	b lbl_802818E4
lbl_8028186C:
/* 8028186C 0027D4CC  3B DE 00 01 */	addi r30, r30, 1
/* 80281870 0027D4D0  93 81 00 14 */	stw r28, 0x14(r1)
/* 80281874 0027D4D4  FF A0 E0 90 */	fmr f29, f28
/* 80281878 0027D4D8  93 C1 00 0C */	stw r30, 0xc(r1)
/* 8028187C 0027D4DC  C8 01 00 10 */	lfd f0, 0x10(r1)
/* 80281880 0027D4E0  C8 21 00 08 */	lfd f1, 8(r1)
/* 80281884 0027D4E4  EC 00 F0 28 */	fsubs f0, f0, f30
/* 80281888 0027D4E8  EC 21 F0 28 */	fsubs f1, f1, f30
/* 8028188C 0027D4EC  EF 81 00 24 */	fdivs f28, f1, f0
/* 80281890 0027D4F0  EC 3F E0 24 */	fdivs f1, f31, f28
/* 80281894 0027D4F4  4B F4 57 6D */	bl __cvt_fp2unsigned
/* 80281898 0027D4F8  54 64 05 FE */	clrlwi r4, r3, 0x17
/* 8028189C 0027D4FC  7C 7F 23 96 */	divwu r3, r31, r4
/* 802818A0 0027D500  28 04 00 80 */	cmplwi r4, 0x80
/* 802818A4 0027D504  38 63 00 01 */	addi r3, r3, 1
/* 802818A8 0027D508  40 81 00 30 */	ble lbl_802818D8
/* 802818AC 0027D50C  28 04 01 00 */	cmplwi r4, 0x100
/* 802818B0 0027D510  40 80 00 28 */	bge lbl_802818D8
/* 802818B4 0027D514  48 00 00 08 */	b lbl_802818BC
lbl_802818B8:
/* 802818B8 0027D518  54 84 F8 7E */	srwi r4, r4, 1
lbl_802818BC:
/* 802818BC 0027D51C  54 80 07 FF */	clrlwi. r0, r4, 0x1f
/* 802818C0 0027D520  41 82 FF F8 */	beq lbl_802818B8
/* 802818C4 0027D524  7C 1C 23 96 */	divwu r0, r28, r4
/* 802818C8 0027D528  7C 00 21 D6 */	mullw r0, r0, r4
/* 802818CC 0027D52C  7C 00 E0 51 */	subf. r0, r0, r28
/* 802818D0 0027D530  40 82 00 08 */	bne lbl_802818D8
/* 802818D4 0027D534  38 63 00 01 */	addi r3, r3, 1
lbl_802818D8:
/* 802818D8 0027D538  28 03 04 00 */	cmplwi r3, 0x400
/* 802818DC 0027D53C  40 81 00 08 */	ble lbl_802818E4
/* 802818E0 0027D540  38 60 04 00 */	li r3, 0x400
lbl_802818E4:
/* 802818E4 0027D544  7C 03 E8 40 */	cmplw r3, r29
/* 802818E8 0027D548  41 80 FF 84 */	blt lbl_8028186C
/* 802818EC 0027D54C  FC 20 E8 90 */	fmr f1, f29
/* 802818F0 0027D550  E3 E1 00 68 */	psq_l f31, 104(r1), 0, qr0
/* 802818F4 0027D554  CB E1 00 60 */	lfd f31, 0x60(r1)
/* 802818F8 0027D558  E3 C1 00 58 */	psq_l f30, 88(r1), 0, qr0
/* 802818FC 0027D55C  CB C1 00 50 */	lfd f30, 0x50(r1)
/* 80281900 0027D560  E3 A1 00 48 */	psq_l f29, 72(r1), 0, qr0
/* 80281904 0027D564  CB A1 00 40 */	lfd f29, 0x40(r1)
/* 80281908 0027D568  E3 81 00 38 */	psq_l f28, 56(r1), 0, qr0
/* 8028190C 0027D56C  CB 81 00 30 */	lfd f28, 0x30(r1)
/* 80281910 0027D570  83 E1 00 2C */	lwz r31, 0x2c(r1)
/* 80281914 0027D574  83 C1 00 28 */	lwz r30, 0x28(r1)
/* 80281918 0027D578  83 A1 00 24 */	lwz r29, 0x24(r1)
/* 8028191C 0027D57C  83 81 00 20 */	lwz r28, 0x20(r1)
/* 80281920 0027D580  80 01 00 74 */	lwz r0, 0x74(r1)
/* 80281924 0027D584  7C 08 03 A6 */	mtlr r0
/* 80281928 0027D588  38 21 00 70 */	addi r1, r1, 0x70
/* 8028192C 0027D58C  4E 80 00 20 */	blr

.global GXSetDispCopyYScale
GXSetDispCopyYScale:
/* 80281930 0027D590  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80281934 0027D594  7C 08 02 A6 */	mflr r0
/* 80281938 0027D598  C0 02 A0 F8 */	lfs f0, lbl_806426F8-_SDA2_BASE_(r2)
/* 8028193C 0027D59C  90 01 00 14 */	stw r0, 0x14(r1)
/* 80281940 0027D5A0  EC 20 08 24 */	fdivs f1, f0, f1
/* 80281944 0027D5A4  4B F4 56 BD */	bl __cvt_fp2unsigned
/* 80281948 0027D5A8  3C 80 CC 01 */	lis r4, 0xCC008000@ha
/* 8028194C 0027D5AC  38 00 00 61 */	li r0, 0x61
/* 80281950 0027D5B0  98 04 80 00 */	stb r0, 0xCC008000@l(r4)
/* 80281954 0027D5B4  38 00 00 4E */	li r0, 0x4e
/* 80281958 0027D5B8  38 A0 00 00 */	li r5, 0
/* 8028195C 0027D5BC  54 67 05 FE */	clrlwi r7, r3, 0x17
/* 80281960 0027D5C0  50 65 05 FE */	rlwimi r5, r3, 0, 0x17, 0x1f
/* 80281964 0027D5C4  80 C2 A0 D0 */	lwz r6, lbl_806426D0-_SDA2_BASE_(r2)
/* 80281968 0027D5C8  50 05 C0 0E */	rlwimi r5, r0, 0x18, 0, 7
/* 8028196C 0027D5CC  38 00 00 00 */	li r0, 0
/* 80281970 0027D5D0  90 A4 80 00 */	stw r5, -0x8000(r4)
/* 80281974 0027D5D4  20 67 01 00 */	subfic r3, r7, 0x100
/* 80281978 0027D5D8  28 07 00 80 */	cmplwi r7, 0x80
/* 8028197C 0027D5DC  B0 06 00 02 */	sth r0, 2(r6)
/* 80281980 0027D5E0  38 07 FF 00 */	addi r0, r7, -256
/* 80281984 0027D5E4  7C 63 03 78 */	or r3, r3, r0
/* 80281988 0027D5E8  80 06 02 3C */	lwz r0, 0x23c(r6)
/* 8028198C 0027D5EC  50 60 5D 6A */	rlwimi r0, r3, 0xb, 0x15, 0x15
/* 80281990 0027D5F0  90 06 02 3C */	stw r0, 0x23c(r6)
/* 80281994 0027D5F4  80 06 02 34 */	lwz r0, 0x234(r6)
/* 80281998 0027D5F8  54 03 B5 BE */	rlwinm r3, r0, 0x16, 0x16, 0x1f
/* 8028199C 0027D5FC  38 83 00 01 */	addi r4, r3, 1
/* 802819A0 0027D600  38 04 FF FF */	addi r0, r4, -1
/* 802819A4 0027D604  54 00 40 2E */	slwi r0, r0, 8
/* 802819A8 0027D608  7C 60 3B 96 */	divwu r3, r0, r7
/* 802819AC 0027D60C  38 63 00 01 */	addi r3, r3, 1
/* 802819B0 0027D610  40 81 00 30 */	ble lbl_802819E0
/* 802819B4 0027D614  28 07 01 00 */	cmplwi r7, 0x100
/* 802819B8 0027D618  40 80 00 28 */	bge lbl_802819E0
/* 802819BC 0027D61C  48 00 00 08 */	b lbl_802819C4
lbl_802819C0:
/* 802819C0 0027D620  54 E7 F8 7E */	srwi r7, r7, 1
lbl_802819C4:
/* 802819C4 0027D624  54 E0 07 FF */	clrlwi. r0, r7, 0x1f
/* 802819C8 0027D628  41 82 FF F8 */	beq lbl_802819C0
/* 802819CC 0027D62C  7C 04 3B 96 */	divwu r0, r4, r7
/* 802819D0 0027D630  7C 00 39 D6 */	mullw r0, r0, r7
/* 802819D4 0027D634  7C 00 20 51 */	subf. r0, r0, r4
/* 802819D8 0027D638  40 82 00 08 */	bne lbl_802819E0
/* 802819DC 0027D63C  38 63 00 01 */	addi r3, r3, 1
lbl_802819E0:
/* 802819E0 0027D640  28 03 04 00 */	cmplwi r3, 0x400
/* 802819E4 0027D644  40 81 00 08 */	ble lbl_802819EC
/* 802819E8 0027D648  38 60 04 00 */	li r3, 0x400
lbl_802819EC:
/* 802819EC 0027D64C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802819F0 0027D650  7C 08 03 A6 */	mtlr r0
/* 802819F4 0027D654  38 21 00 10 */	addi r1, r1, 0x10
/* 802819F8 0027D658  4E 80 00 20 */	blr

.global GXSetCopyClear
GXSetCopyClear:
/* 802819FC 0027D65C  88 C3 00 00 */	lbz r6, 0(r3)
/* 80281A00 0027D660  3C E0 CC 01 */	lis r7, 0xCC008000@ha
/* 80281A04 0027D664  39 00 00 61 */	li r8, 0x61
/* 80281A08 0027D668  88 03 00 03 */	lbz r0, 3(r3)
/* 80281A0C 0027D66C  39 40 00 00 */	li r10, 0
/* 80281A10 0027D670  99 07 80 00 */	stb r8, 0xCC008000@l(r7)
/* 80281A14 0027D674  50 CA 06 3E */	rlwimi r10, r6, 0, 0x18, 0x1f
/* 80281A18 0027D678  39 20 00 4F */	li r9, 0x4f
/* 80281A1C 0027D67C  50 0A 44 2E */	rlwimi r10, r0, 8, 0x10, 0x17
/* 80281A20 0027D680  88 03 00 02 */	lbz r0, 2(r3)
/* 80281A24 0027D684  51 2A C0 0E */	rlwimi r10, r9, 0x18, 0, 7
/* 80281A28 0027D688  38 C0 00 00 */	li r6, 0
/* 80281A2C 0027D68C  91 47 80 00 */	stw r10, -0x8000(r7)
/* 80281A30 0027D690  50 06 06 3E */	rlwimi r6, r0, 0, 0x18, 0x1f
/* 80281A34 0027D694  88 63 00 01 */	lbz r3, 1(r3)
/* 80281A38 0027D698  38 00 00 50 */	li r0, 0x50
/* 80281A3C 0027D69C  99 07 80 00 */	stb r8, -0x8000(r7)
/* 80281A40 0027D6A0  38 A0 00 00 */	li r5, 0
/* 80281A44 0027D6A4  50 66 44 2E */	rlwimi r6, r3, 8, 0x10, 0x17
/* 80281A48 0027D6A8  80 62 A0 D0 */	lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
/* 80281A4C 0027D6AC  50 06 C0 0E */	rlwimi r6, r0, 0x18, 0, 7
/* 80281A50 0027D6B0  38 00 00 51 */	li r0, 0x51
/* 80281A54 0027D6B4  90 C7 80 00 */	stw r6, -0x8000(r7)
/* 80281A58 0027D6B8  50 85 02 3E */	rlwimi r5, r4, 0, 8, 0x1f
/* 80281A5C 0027D6BC  50 05 C0 0E */	rlwimi r5, r0, 0x18, 0, 7
/* 80281A60 0027D6C0  38 00 00 00 */	li r0, 0
/* 80281A64 0027D6C4  99 07 80 00 */	stb r8, -0x8000(r7)
/* 80281A68 0027D6C8  90 A7 80 00 */	stw r5, -0x8000(r7)
/* 80281A6C 0027D6CC  B0 03 00 02 */	sth r0, 2(r3)
/* 80281A70 0027D6D0  4E 80 00 20 */	blr

.global GXSetCopyFilter
GXSetCopyFilter:
/* 80281A74 0027D6D4  2C 03 00 00 */	cmpwi r3, 0
/* 80281A78 0027D6D8  41 82 00 F8 */	beq lbl_80281B70
/* 80281A7C 0027D6DC  89 04 00 00 */	lbz r8, 0(r4)
/* 80281A80 0027D6E0  38 00 00 00 */	li r0, 0
/* 80281A84 0027D6E4  89 44 00 01 */	lbz r10, 1(r4)
/* 80281A88 0027D6E8  38 60 00 00 */	li r3, 0
/* 80281A8C 0027D6EC  51 00 07 3E */	rlwimi r0, r8, 0, 0x1c, 0x1f
/* 80281A90 0027D6F0  88 E4 00 06 */	lbz r7, 6(r4)
/* 80281A94 0027D6F4  51 40 26 36 */	rlwimi r0, r10, 4, 0x18, 0x1b
/* 80281A98 0027D6F8  89 04 00 0C */	lbz r8, 0xc(r4)
/* 80281A9C 0027D6FC  50 E3 07 3E */	rlwimi r3, r7, 0, 0x1c, 0x1f
/* 80281AA0 0027D700  38 E0 00 00 */	li r7, 0
/* 80281AA4 0027D704  51 07 07 3E */	rlwimi r7, r8, 0, 0x1c, 0x1f
/* 80281AA8 0027D708  89 44 00 0D */	lbz r10, 0xd(r4)
/* 80281AAC 0027D70C  89 64 00 07 */	lbz r11, 7(r4)
/* 80281AB0 0027D710  39 00 00 00 */	li r8, 0
/* 80281AB4 0027D714  51 47 26 36 */	rlwimi r7, r10, 4, 0x18, 0x1b
/* 80281AB8 0027D718  89 44 00 02 */	lbz r10, 2(r4)
/* 80281ABC 0027D71C  89 24 00 12 */	lbz r9, 0x12(r4)
/* 80281AC0 0027D720  51 63 26 36 */	rlwimi r3, r11, 4, 0x18, 0x1b
/* 80281AC4 0027D724  51 40 45 2E */	rlwimi r0, r10, 8, 0x14, 0x17
/* 80281AC8 0027D728  89 44 00 0E */	lbz r10, 0xe(r4)
/* 80281ACC 0027D72C  51 28 07 3E */	rlwimi r8, r9, 0, 0x1c, 0x1f
/* 80281AD0 0027D730  89 24 00 13 */	lbz r9, 0x13(r4)
/* 80281AD4 0027D734  51 47 45 2E */	rlwimi r7, r10, 8, 0x14, 0x17
/* 80281AD8 0027D738  89 44 00 03 */	lbz r10, 3(r4)
/* 80281ADC 0027D73C  51 28 26 36 */	rlwimi r8, r9, 4, 0x18, 0x1b
/* 80281AE0 0027D740  89 24 00 14 */	lbz r9, 0x14(r4)
/* 80281AE4 0027D744  51 40 64 26 */	rlwimi r0, r10, 0xc, 0x10, 0x13
/* 80281AE8 0027D748  89 44 00 0F */	lbz r10, 0xf(r4)
/* 80281AEC 0027D74C  51 28 45 2E */	rlwimi r8, r9, 8, 0x14, 0x17
/* 80281AF0 0027D750  89 24 00 15 */	lbz r9, 0x15(r4)
/* 80281AF4 0027D754  51 47 64 26 */	rlwimi r7, r10, 0xc, 0x10, 0x13
/* 80281AF8 0027D758  89 44 00 04 */	lbz r10, 4(r4)
/* 80281AFC 0027D75C  89 64 00 08 */	lbz r11, 8(r4)
/* 80281B00 0027D760  51 28 64 26 */	rlwimi r8, r9, 0xc, 0x10, 0x13
/* 80281B04 0027D764  51 40 83 1E */	rlwimi r0, r10, 0x10, 0xc, 0xf
/* 80281B08 0027D768  89 44 00 10 */	lbz r10, 0x10(r4)
/* 80281B0C 0027D76C  89 24 00 16 */	lbz r9, 0x16(r4)
/* 80281B10 0027D770  51 63 45 2E */	rlwimi r3, r11, 8, 0x14, 0x17
/* 80281B14 0027D774  89 64 00 09 */	lbz r11, 9(r4)
/* 80281B18 0027D778  51 47 83 1E */	rlwimi r7, r10, 0x10, 0xc, 0xf
/* 80281B1C 0027D77C  89 44 00 05 */	lbz r10, 5(r4)
/* 80281B20 0027D780  51 28 83 1E */	rlwimi r8, r9, 0x10, 0xc, 0xf
/* 80281B24 0027D784  89 24 00 11 */	lbz r9, 0x11(r4)
/* 80281B28 0027D788  51 63 64 26 */	rlwimi r3, r11, 0xc, 0x10, 0x13
/* 80281B2C 0027D78C  89 64 00 0A */	lbz r11, 0xa(r4)
/* 80281B30 0027D790  51 40 A2 16 */	rlwimi r0, r10, 0x14, 8, 0xb
/* 80281B34 0027D794  89 44 00 0B */	lbz r10, 0xb(r4)
/* 80281B38 0027D798  51 27 A2 16 */	rlwimi r7, r9, 0x14, 8, 0xb
/* 80281B3C 0027D79C  88 84 00 17 */	lbz r4, 0x17(r4)
/* 80281B40 0027D7A0  39 20 00 01 */	li r9, 1
/* 80281B44 0027D7A4  51 63 83 1E */	rlwimi r3, r11, 0x10, 0xc, 0xf
/* 80281B48 0027D7A8  51 43 A2 16 */	rlwimi r3, r10, 0x14, 8, 0xb
/* 80281B4C 0027D7AC  50 88 A2 16 */	rlwimi r8, r4, 0x14, 8, 0xb
/* 80281B50 0027D7B0  51 20 C0 0E */	rlwimi r0, r9, 0x18, 0, 7
/* 80281B54 0027D7B4  39 40 00 02 */	li r10, 2
/* 80281B58 0027D7B8  39 20 00 03 */	li r9, 3
/* 80281B5C 0027D7BC  38 80 00 04 */	li r4, 4
/* 80281B60 0027D7C0  51 43 C0 0E */	rlwimi r3, r10, 0x18, 0, 7
/* 80281B64 0027D7C4  51 27 C0 0E */	rlwimi r7, r9, 0x18, 0, 7
/* 80281B68 0027D7C8  50 88 C0 0E */	rlwimi r8, r4, 0x18, 0, 7
/* 80281B6C 0027D7CC  48 00 00 24 */	b lbl_80281B90
lbl_80281B70:
/* 80281B70 0027D7D0  3D 00 01 66 */	lis r8, 0x01666666@ha
/* 80281B74 0027D7D4  3C 60 02 66 */	lis r3, 0x02666666@ha
/* 80281B78 0027D7D8  3C E0 03 66 */	lis r7, 0x03666666@ha
/* 80281B7C 0027D7DC  3C 80 04 66 */	lis r4, 0x04666666@ha
/* 80281B80 0027D7E0  38 08 66 66 */	addi r0, r8, 0x01666666@l
/* 80281B84 0027D7E4  38 63 66 66 */	addi r3, r3, 0x02666666@l
/* 80281B88 0027D7E8  38 E7 66 66 */	addi r7, r7, 0x03666666@l
/* 80281B8C 0027D7EC  39 04 66 66 */	addi r8, r4, 0x04666666@l
lbl_80281B90:
/* 80281B90 0027D7F0  3D 20 CC 01 */	lis r9, 0xCC008000@ha
/* 80281B94 0027D7F4  39 40 00 61 */	li r10, 0x61
/* 80281B98 0027D7F8  99 49 80 00 */	stb r10, 0xCC008000@l(r9)
/* 80281B9C 0027D7FC  2C 05 00 00 */	cmpwi r5, 0
/* 80281BA0 0027D800  38 80 00 53 */	li r4, 0x53
/* 80281BA4 0027D804  39 60 00 00 */	li r11, 0
/* 80281BA8 0027D808  90 09 80 00 */	stw r0, -0x8000(r9)
/* 80281BAC 0027D80C  38 00 00 54 */	li r0, 0x54
/* 80281BB0 0027D810  39 80 00 00 */	li r12, 0
/* 80281BB4 0027D814  50 8B C0 0E */	rlwimi r11, r4, 0x18, 0, 7
/* 80281BB8 0027D818  99 49 80 00 */	stb r10, -0x8000(r9)
/* 80281BBC 0027D81C  50 0C C0 0E */	rlwimi r12, r0, 0x18, 0, 7
/* 80281BC0 0027D820  90 69 80 00 */	stw r3, -0x8000(r9)
/* 80281BC4 0027D824  99 49 80 00 */	stb r10, -0x8000(r9)
/* 80281BC8 0027D828  90 E9 80 00 */	stw r7, -0x8000(r9)
/* 80281BCC 0027D82C  99 49 80 00 */	stb r10, -0x8000(r9)
/* 80281BD0 0027D830  91 09 80 00 */	stw r8, -0x8000(r9)
/* 80281BD4 0027D834  41 82 00 40 */	beq lbl_80281C14
/* 80281BD8 0027D838  88 86 00 00 */	lbz r4, 0(r6)
/* 80281BDC 0027D83C  88 06 00 04 */	lbz r0, 4(r6)
/* 80281BE0 0027D840  50 8B 06 BE */	rlwimi r11, r4, 0, 0x1a, 0x1f
/* 80281BE4 0027D844  88 66 00 01 */	lbz r3, 1(r6)
/* 80281BE8 0027D848  50 0C 06 BE */	rlwimi r12, r0, 0, 0x1a, 0x1f
/* 80281BEC 0027D84C  88 A6 00 02 */	lbz r5, 2(r6)
/* 80281BF0 0027D850  50 6B 35 32 */	rlwimi r11, r3, 6, 0x14, 0x19
/* 80281BF4 0027D854  88 66 00 05 */	lbz r3, 5(r6)
/* 80281BF8 0027D858  88 86 00 03 */	lbz r4, 3(r6)
/* 80281BFC 0027D85C  50 AB 63 A6 */	rlwimi r11, r5, 0xc, 0xe, 0x13
/* 80281C00 0027D860  88 06 00 06 */	lbz r0, 6(r6)
/* 80281C04 0027D864  50 6C 35 32 */	rlwimi r12, r3, 6, 0x14, 0x19
/* 80281C08 0027D868  50 8B 92 1A */	rlwimi r11, r4, 0x12, 8, 0xd
/* 80281C0C 0027D86C  50 0C 63 A6 */	rlwimi r12, r0, 0xc, 0xe, 0x13
/* 80281C10 0027D870  48 00 00 20 */	b lbl_80281C30
lbl_80281C14:
/* 80281C14 0027D874  38 60 00 15 */	li r3, 0x15
/* 80281C18 0027D878  55 6B 00 26 */	rlwinm r11, r11, 0, 0, 0x13
/* 80281C1C 0027D87C  50 6C 06 BE */	rlwimi r12, r3, 0, 0x1a, 0x1f
/* 80281C20 0027D880  38 00 00 16 */	li r0, 0x16
/* 80281C24 0027D884  50 6B 63 A6 */	rlwimi r11, r3, 0xc, 0xe, 0x13
/* 80281C28 0027D888  50 0B 92 1A */	rlwimi r11, r0, 0x12, 8, 0xd
/* 80281C2C 0027D88C  55 8C 06 9A */	rlwinm r12, r12, 0, 0x1a, 0xd
lbl_80281C30:
/* 80281C30 0027D890  3C 80 CC 01 */	lis r4, 0xCC008000@ha
/* 80281C34 0027D894  38 A0 00 61 */	li r5, 0x61
/* 80281C38 0027D898  98 A4 80 00 */	stb r5, 0xCC008000@l(r4)
/* 80281C3C 0027D89C  38 00 00 00 */	li r0, 0
/* 80281C40 0027D8A0  80 62 A0 D0 */	lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
/* 80281C44 0027D8A4  91 64 80 00 */	stw r11, -0x8000(r4)
/* 80281C48 0027D8A8  98 A4 80 00 */	stb r5, -0x8000(r4)
/* 80281C4C 0027D8AC  91 84 80 00 */	stw r12, -0x8000(r4)
/* 80281C50 0027D8B0  B0 03 00 02 */	sth r0, 2(r3)
/* 80281C54 0027D8B4  4E 80 00 20 */	blr

.global GXSetDispCopyGamma
GXSetDispCopyGamma:
/* 80281C58 0027D8B8  80 82 A0 D0 */	lwz r4, lbl_806426D0-_SDA2_BASE_(r2)
/* 80281C5C 0027D8BC  80 04 02 3C */	lwz r0, 0x23c(r4)
/* 80281C60 0027D8C0  50 60 3D F0 */	rlwimi r0, r3, 7, 0x17, 0x18
/* 80281C64 0027D8C4  90 04 02 3C */	stw r0, 0x23c(r4)
/* 80281C68 0027D8C8  4E 80 00 20 */	blr

.global GXCopyDisp
GXCopyDisp:
/* 80281C6C 0027D8CC  2C 04 00 00 */	cmpwi r4, 0
/* 80281C70 0027D8D0  41 82 00 30 */	beq lbl_80281CA0
/* 80281C74 0027D8D4  80 E2 A0 D0 */	lwz r7, lbl_806426D0-_SDA2_BASE_(r2)
/* 80281C78 0027D8D8  3C A0 CC 01 */	lis r5, 0xCC008000@ha
/* 80281C7C 0027D8DC  38 00 00 61 */	li r0, 0x61
/* 80281C80 0027D8E0  80 C7 02 28 */	lwz r6, 0x228(r7)
/* 80281C84 0027D8E4  98 05 80 00 */	stb r0, 0xCC008000@l(r5)
/* 80281C88 0027D8E8  60 C6 00 0F */	ori r6, r6, 0xf
/* 80281C8C 0027D8EC  90 C5 80 00 */	stw r6, -0x8000(r5)
/* 80281C90 0027D8F0  80 C7 02 20 */	lwz r6, 0x220(r7)
/* 80281C94 0027D8F4  98 05 80 00 */	stb r0, -0x8000(r5)
/* 80281C98 0027D8F8  54 C0 00 3A */	rlwinm r0, r6, 0, 0, 0x1d
/* 80281C9C 0027D8FC  90 05 80 00 */	stw r0, -0x8000(r5)
lbl_80281CA0:
/* 80281CA0 0027D900  2C 04 00 00 */	cmpwi r4, 0
/* 80281CA4 0027D904  39 80 00 00 */	li r12, 0
/* 80281CA8 0027D908  40 82 00 1C */	bne lbl_80281CC4
/* 80281CAC 0027D90C  80 A2 A0 D0 */	lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
/* 80281CB0 0027D910  80 05 02 2C */	lwz r0, 0x22c(r5)
/* 80281CB4 0027D914  39 45 02 2C */	addi r10, r5, 0x22c
/* 80281CB8 0027D918  54 00 07 7E */	clrlwi r0, r0, 0x1d
/* 80281CBC 0027D91C  28 00 00 03 */	cmplwi r0, 3
/* 80281CC0 0027D920  40 82 00 34 */	bne lbl_80281CF4
lbl_80281CC4:
/* 80281CC4 0027D924  80 A2 A0 D0 */	lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
/* 80281CC8 0027D928  80 E5 02 2C */	lwz r7, 0x22c(r5)
/* 80281CCC 0027D92C  39 45 02 2C */	addi r10, r5, 0x22c
/* 80281CD0 0027D930  54 E0 D7 FE */	rlwinm r0, r7, 0x1a, 0x1f, 0x1f
/* 80281CD4 0027D934  28 00 00 01 */	cmplwi r0, 1
/* 80281CD8 0027D938  40 82 00 1C */	bne lbl_80281CF4
/* 80281CDC 0027D93C  3C C0 CC 01 */	lis r6, 0xCC008000@ha
/* 80281CE0 0027D940  38 00 00 61 */	li r0, 0x61
/* 80281CE4 0027D944  98 06 80 00 */	stb r0, 0xCC008000@l(r6)
/* 80281CE8 0027D948  54 E0 06 B0 */	rlwinm r0, r7, 0, 0x1a, 0x18
/* 80281CEC 0027D94C  39 80 00 01 */	li r12, 1
/* 80281CF0 0027D950  90 06 80 00 */	stw r0, -0x8000(r6)
lbl_80281CF4:
/* 80281CF4 0027D954  3D 00 CC 01 */	lis r8, 0xCC008000@ha
/* 80281CF8 0027D958  39 20 00 61 */	li r9, 0x61
/* 80281CFC 0027D95C  99 28 80 00 */	stb r9, 0xCC008000@l(r8)
/* 80281D00 0027D960  38 C0 00 00 */	li r6, 0
/* 80281D04 0027D964  81 62 A0 D0 */	lwz r11, lbl_806426D0-_SDA2_BASE_(r2)
/* 80281D08 0027D968  50 66 DA 3E */	rlwimi r6, r3, 0x1b, 8, 0x1f
/* 80281D0C 0027D96C  38 60 00 4B */	li r3, 0x4b
/* 80281D10 0027D970  38 00 00 52 */	li r0, 0x52
/* 80281D14 0027D974  80 EB 02 30 */	lwz r7, 0x230(r11)
/* 80281D18 0027D978  50 66 C0 0E */	rlwimi r6, r3, 0x18, 0, 7
/* 80281D1C 0027D97C  2C 04 00 00 */	cmpwi r4, 0
/* 80281D20 0027D980  90 E8 80 00 */	stw r7, -0x8000(r8)
/* 80281D24 0027D984  99 28 80 00 */	stb r9, -0x8000(r8)
/* 80281D28 0027D988  80 6B 02 34 */	lwz r3, 0x234(r11)
/* 80281D2C 0027D98C  90 68 80 00 */	stw r3, -0x8000(r8)
/* 80281D30 0027D990  99 28 80 00 */	stb r9, -0x8000(r8)
/* 80281D34 0027D994  80 6B 02 38 */	lwz r3, 0x238(r11)
/* 80281D38 0027D998  90 68 80 00 */	stw r3, -0x8000(r8)
/* 80281D3C 0027D99C  99 28 80 00 */	stb r9, -0x8000(r8)
/* 80281D40 0027D9A0  90 C8 80 00 */	stw r6, -0x8000(r8)
/* 80281D44 0027D9A4  80 6B 02 3C */	lwz r3, 0x23c(r11)
/* 80281D48 0027D9A8  50 83 5D 28 */	rlwimi r3, r4, 0xb, 0x14, 0x14
/* 80281D4C 0027D9AC  60 63 40 00 */	ori r3, r3, 0x4000
/* 80281D50 0027D9B0  50 03 C0 0E */	rlwimi r3, r0, 0x18, 0, 7
/* 80281D54 0027D9B4  90 6B 02 3C */	stw r3, 0x23c(r11)
/* 80281D58 0027D9B8  99 28 80 00 */	stb r9, -0x8000(r8)
/* 80281D5C 0027D9BC  80 0B 02 3C */	lwz r0, 0x23c(r11)
/* 80281D60 0027D9C0  90 08 80 00 */	stw r0, -0x8000(r8)
/* 80281D64 0027D9C4  41 82 00 1C */	beq lbl_80281D80
/* 80281D68 0027D9C8  99 28 80 00 */	stb r9, -0x8000(r8)
/* 80281D6C 0027D9CC  80 0B 02 28 */	lwz r0, 0x228(r11)
/* 80281D70 0027D9D0  90 08 80 00 */	stw r0, -0x8000(r8)
/* 80281D74 0027D9D4  99 28 80 00 */	stb r9, -0x8000(r8)
/* 80281D78 0027D9D8  80 0B 02 20 */	lwz r0, 0x220(r11)
/* 80281D7C 0027D9DC  90 08 80 00 */	stw r0, -0x8000(r8)
lbl_80281D80:
/* 80281D80 0027D9E0  2C 0C 00 00 */	cmpwi r12, 0
/* 80281D84 0027D9E4  41 82 00 18 */	beq lbl_80281D9C
/* 80281D88 0027D9E8  3C 60 CC 01 */	lis r3, 0xCC008000@ha
/* 80281D8C 0027D9EC  38 00 00 61 */	li r0, 0x61
/* 80281D90 0027D9F0  98 03 80 00 */	stb r0, 0xCC008000@l(r3)
/* 80281D94 0027D9F4  80 0A 00 00 */	lwz r0, 0(r10)
/* 80281D98 0027D9F8  90 03 80 00 */	stw r0, -0x8000(r3)
lbl_80281D9C:
/* 80281D9C 0027D9FC  38 00 00 00 */	li r0, 0
/* 80281DA0 0027DA00  B0 05 00 02 */	sth r0, 2(r5)
/* 80281DA4 0027DA04  4E 80 00 20 */	blr

.global GXCopyTex
GXCopyTex:
/* 80281DA8 0027DA08  2C 04 00 00 */	cmpwi r4, 0
/* 80281DAC 0027DA0C  41 82 00 30 */	beq lbl_80281DDC
/* 80281DB0 0027DA10  80 E2 A0 D0 */	lwz r7, lbl_806426D0-_SDA2_BASE_(r2)
/* 80281DB4 0027DA14  3C A0 CC 01 */	lis r5, 0xCC008000@ha
/* 80281DB8 0027DA18  38 00 00 61 */	li r0, 0x61
/* 80281DBC 0027DA1C  80 C7 02 28 */	lwz r6, 0x228(r7)
/* 80281DC0 0027DA20  98 05 80 00 */	stb r0, 0xCC008000@l(r5)
/* 80281DC4 0027DA24  60 C6 00 0F */	ori r6, r6, 0xf
/* 80281DC8 0027DA28  90 C5 80 00 */	stw r6, -0x8000(r5)
/* 80281DCC 0027DA2C  80 C7 02 20 */	lwz r6, 0x220(r7)
/* 80281DD0 0027DA30  98 05 80 00 */	stb r0, -0x8000(r5)
/* 80281DD4 0027DA34  54 C0 00 3A */	rlwinm r0, r6, 0, 0, 0x1d
/* 80281DD8 0027DA38  90 05 80 00 */	stw r0, -0x8000(r5)
lbl_80281DDC:
/* 80281DDC 0027DA3C  81 22 A0 D0 */	lwz r9, lbl_806426D0-_SDA2_BASE_(r2)
/* 80281DE0 0027DA40  39 60 00 00 */	li r11, 0
/* 80281DE4 0027DA44  88 09 02 50 */	lbz r0, 0x250(r9)
/* 80281DE8 0027DA48  80 C9 02 2C */	lwz r6, 0x22c(r9)
/* 80281DEC 0027DA4C  2C 00 00 00 */	cmpwi r0, 0
/* 80281DF0 0027DA50  41 82 00 1C */	beq lbl_80281E0C
/* 80281DF4 0027DA54  54 C0 07 7E */	clrlwi r0, r6, 0x1d
/* 80281DF8 0027DA58  28 00 00 03 */	cmplwi r0, 3
/* 80281DFC 0027DA5C  41 82 00 10 */	beq lbl_80281E0C
/* 80281E00 0027DA60  38 00 00 03 */	li r0, 3
/* 80281E04 0027DA64  39 60 00 01 */	li r11, 1
/* 80281E08 0027DA68  50 06 07 7E */	rlwimi r6, r0, 0, 0x1d, 0x1f
lbl_80281E0C:
/* 80281E0C 0027DA6C  2C 04 00 00 */	cmpwi r4, 0
/* 80281E10 0027DA70  40 82 00 10 */	bne lbl_80281E20
/* 80281E14 0027DA74  54 C0 07 7E */	clrlwi r0, r6, 0x1d
/* 80281E18 0027DA78  28 00 00 03 */	cmplwi r0, 3
/* 80281E1C 0027DA7C  40 82 00 18 */	bne lbl_80281E34
lbl_80281E20:
/* 80281E20 0027DA80  54 C0 D7 FE */	rlwinm r0, r6, 0x1a, 0x1f, 0x1f
/* 80281E24 0027DA84  28 00 00 01 */	cmplwi r0, 1
/* 80281E28 0027DA88  40 82 00 0C */	bne lbl_80281E34
/* 80281E2C 0027DA8C  39 60 00 01 */	li r11, 1
/* 80281E30 0027DA90  54 C6 06 B0 */	rlwinm r6, r6, 0, 0x1a, 0x18
lbl_80281E34:
/* 80281E34 0027DA94  2C 0B 00 00 */	cmpwi r11, 0
/* 80281E38 0027DA98  41 82 00 14 */	beq lbl_80281E4C
/* 80281E3C 0027DA9C  3C A0 CC 01 */	lis r5, 0xCC008000@ha
/* 80281E40 0027DAA0  38 00 00 61 */	li r0, 0x61
/* 80281E44 0027DAA4  98 05 80 00 */	stb r0, 0xCC008000@l(r5)
/* 80281E48 0027DAA8  90 C5 80 00 */	stw r6, -0x8000(r5)
lbl_80281E4C:
/* 80281E4C 0027DAAC  3C E0 CC 01 */	lis r7, 0xCC008000@ha
/* 80281E50 0027DAB0  39 00 00 61 */	li r8, 0x61
/* 80281E54 0027DAB4  99 07 80 00 */	stb r8, 0xCC008000@l(r7)
/* 80281E58 0027DAB8  38 A0 00 00 */	li r5, 0
/* 80281E5C 0027DABC  81 42 A0 D0 */	lwz r10, lbl_806426D0-_SDA2_BASE_(r2)
/* 80281E60 0027DAC0  50 65 DA 3E */	rlwimi r5, r3, 0x1b, 8, 0x1f
/* 80281E64 0027DAC4  38 60 00 4B */	li r3, 0x4b
/* 80281E68 0027DAC8  38 00 00 52 */	li r0, 0x52
/* 80281E6C 0027DACC  80 CA 02 40 */	lwz r6, 0x240(r10)
/* 80281E70 0027DAD0  50 65 C0 0E */	rlwimi r5, r3, 0x18, 0, 7
/* 80281E74 0027DAD4  2C 04 00 00 */	cmpwi r4, 0
/* 80281E78 0027DAD8  90 C7 80 00 */	stw r6, -0x8000(r7)
/* 80281E7C 0027DADC  99 07 80 00 */	stb r8, -0x8000(r7)
/* 80281E80 0027DAE0  80 6A 02 44 */	lwz r3, 0x244(r10)
/* 80281E84 0027DAE4  90 67 80 00 */	stw r3, -0x8000(r7)
/* 80281E88 0027DAE8  99 07 80 00 */	stb r8, -0x8000(r7)
/* 80281E8C 0027DAEC  80 6A 02 48 */	lwz r3, 0x248(r10)
/* 80281E90 0027DAF0  90 67 80 00 */	stw r3, -0x8000(r7)
/* 80281E94 0027DAF4  99 07 80 00 */	stb r8, -0x8000(r7)
/* 80281E98 0027DAF8  90 A7 80 00 */	stw r5, -0x8000(r7)
/* 80281E9C 0027DAFC  80 6A 02 4C */	lwz r3, 0x24c(r10)
/* 80281EA0 0027DB00  50 83 5D 28 */	rlwimi r3, r4, 0xb, 0x14, 0x14
/* 80281EA4 0027DB04  54 63 04 A0 */	rlwinm r3, r3, 0, 0x12, 0x10
/* 80281EA8 0027DB08  50 03 C0 0E */	rlwimi r3, r0, 0x18, 0, 7
/* 80281EAC 0027DB0C  90 6A 02 4C */	stw r3, 0x24c(r10)
/* 80281EB0 0027DB10  99 07 80 00 */	stb r8, -0x8000(r7)
/* 80281EB4 0027DB14  80 0A 02 4C */	lwz r0, 0x24c(r10)
/* 80281EB8 0027DB18  90 07 80 00 */	stw r0, -0x8000(r7)
/* 80281EBC 0027DB1C  41 82 00 1C */	beq lbl_80281ED8
/* 80281EC0 0027DB20  99 07 80 00 */	stb r8, -0x8000(r7)
/* 80281EC4 0027DB24  80 0A 02 28 */	lwz r0, 0x228(r10)
/* 80281EC8 0027DB28  90 07 80 00 */	stw r0, -0x8000(r7)
/* 80281ECC 0027DB2C  99 07 80 00 */	stb r8, -0x8000(r7)
/* 80281ED0 0027DB30  80 0A 02 20 */	lwz r0, 0x220(r10)
/* 80281ED4 0027DB34  90 07 80 00 */	stw r0, -0x8000(r7)
lbl_80281ED8:
/* 80281ED8 0027DB38  2C 0B 00 00 */	cmpwi r11, 0
/* 80281EDC 0027DB3C  41 82 00 18 */	beq lbl_80281EF4
/* 80281EE0 0027DB40  3C 60 CC 01 */	lis r3, 0xCC008000@ha
/* 80281EE4 0027DB44  38 00 00 61 */	li r0, 0x61
/* 80281EE8 0027DB48  98 03 80 00 */	stb r0, 0xCC008000@l(r3)
/* 80281EEC 0027DB4C  80 09 02 2C */	lwz r0, 0x22c(r9)
/* 80281EF0 0027DB50  90 03 80 00 */	stw r0, -0x8000(r3)
lbl_80281EF4:
/* 80281EF4 0027DB54  38 00 00 00 */	li r0, 0
/* 80281EF8 0027DB58  B0 09 00 02 */	sth r0, 2(r9)
/* 80281EFC 0027DB5C  4E 80 00 20 */	blr

.global GXClearBoundingBox
GXClearBoundingBox:
/* 80281F00 0027DB60  3C A0 CC 01 */	lis r5, 0xCC008000@ha
/* 80281F04 0027DB64  38 C0 00 61 */	li r6, 0x61
/* 80281F08 0027DB68  3C 60 55 00 */	lis r3, 0x550003FF@ha
/* 80281F0C 0027DB6C  98 C5 80 00 */	stb r6, 0xCC008000@l(r5)
/* 80281F10 0027DB70  38 03 03 FF */	addi r0, r3, 0x550003FF@l
/* 80281F14 0027DB74  90 05 80 00 */	stw r0, -0x8000(r5)
/* 80281F18 0027DB78  3C 60 56 00 */	lis r3, 0x560003FF@ha
/* 80281F1C 0027DB7C  38 83 03 FF */	addi r4, r3, 0x560003FF@l
/* 80281F20 0027DB80  80 62 A0 D0 */	lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
/* 80281F24 0027DB84  98 C5 80 00 */	stb r6, -0x8000(r5)
/* 80281F28 0027DB88  38 00 00 00 */	li r0, 0
/* 80281F2C 0027DB8C  90 85 80 00 */	stw r4, -0x8000(r5)
/* 80281F30 0027DB90  B0 03 00 02 */	sth r0, 2(r3)
/* 80281F34 0027DB94  4E 80 00 20 */	blr