summaryrefslogtreecommitdiff
path: root/asm/SDK
diff options
context:
space:
mode:
Diffstat (limited to 'asm/SDK')
-rw-r--r--asm/SDK/GX/GXAttr.s1263
-rw-r--r--asm/SDK/GX/GXBump.s591
-rw-r--r--asm/SDK/GX/GXDisplayList.s135
-rw-r--r--asm/SDK/GX/GXDraw.s257
-rw-r--r--asm/SDK/GX/GXFifo.s853
-rw-r--r--asm/SDK/GX/GXFrameBuf.s781
-rw-r--r--asm/SDK/GX/GXGeometry.s422
-rw-r--r--asm/SDK/GX/GXInit.s1194
-rw-r--r--asm/SDK/GX/GXLight.s512
-rw-r--r--asm/SDK/GX/GXMisc.s657
-rw-r--r--asm/SDK/GX/GXPerf.s548
-rw-r--r--asm/SDK/GX/GXPixel.s547
-rw-r--r--asm/SDK/GX/GXTev.s493
-rw-r--r--asm/SDK/GX/GXTexture.s970
-rw-r--r--asm/SDK/GX/GXTransform.s463
-rw-r--r--asm/SDK/HBM/HBMBase.s54
-rw-r--r--asm/SDK/HBM/HBMGUIManager.s34
-rw-r--r--asm/SDK/MTX/mtx.s757
-rw-r--r--asm/SDK/MTX/mtx44.s148
-rw-r--r--asm/SDK/MTX/mtxvec.s51
-rw-r--r--asm/SDK/MTX/quat.s420
-rw-r--r--asm/SDK/MTX/vec.s254
-rw-r--r--asm/SDK/OS/OSFatal.s2
23 files changed, 11361 insertions, 45 deletions
diff --git a/asm/SDK/GX/GXAttr.s b/asm/SDK/GX/GXAttr.s
new file mode 100644
index 0000000..d44b005
--- /dev/null
+++ b/asm/SDK/GX/GXAttr.s
@@ -0,0 +1,1263 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global GXSetVtxDesc
+GXSetVtxDesc:
+/* 8027F3F4 0027B054 28 03 00 19 */ cmplwi r3, 0x19
+/* 8027F3F8 0027B058 41 81 02 10 */ bgt lbl_8027F608
+/* 8027F3FC 0027B05C 3C A0 80 43 */ lis r5, lbl_80434D10@ha
+/* 8027F400 0027B060 54 60 10 3A */ slwi r0, r3, 2
+/* 8027F404 0027B064 38 A5 4D 10 */ addi r5, r5, lbl_80434D10@l
+/* 8027F408 0027B068 7C A5 00 2E */ lwzx r5, r5, r0
+/* 8027F40C 0027B06C 7C A9 03 A6 */ mtctr r5
+/* 8027F410 0027B070 4E 80 04 20 */ bctr
+/* 8027F414 0027B074 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F418 0027B078 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8027F41C 0027B07C 50 80 07 FE */ rlwimi r0, r4, 0, 0x1f, 0x1f
+/* 8027F420 0027B080 90 03 00 14 */ stw r0, 0x14(r3)
+/* 8027F424 0027B084 48 00 01 E4 */ b lbl_8027F608
+/* 8027F428 0027B088 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F42C 0027B08C 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8027F430 0027B090 50 80 0F BC */ rlwimi r0, r4, 1, 0x1e, 0x1e
+/* 8027F434 0027B094 90 03 00 14 */ stw r0, 0x14(r3)
+/* 8027F438 0027B098 48 00 01 D0 */ b lbl_8027F608
+/* 8027F43C 0027B09C 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F440 0027B0A0 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8027F444 0027B0A4 50 80 17 7A */ rlwimi r0, r4, 2, 0x1d, 0x1d
+/* 8027F448 0027B0A8 90 03 00 14 */ stw r0, 0x14(r3)
+/* 8027F44C 0027B0AC 48 00 01 BC */ b lbl_8027F608
+/* 8027F450 0027B0B0 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F454 0027B0B4 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8027F458 0027B0B8 50 80 1F 38 */ rlwimi r0, r4, 3, 0x1c, 0x1c
+/* 8027F45C 0027B0BC 90 03 00 14 */ stw r0, 0x14(r3)
+/* 8027F460 0027B0C0 48 00 01 A8 */ b lbl_8027F608
+/* 8027F464 0027B0C4 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F468 0027B0C8 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8027F46C 0027B0CC 50 80 26 F6 */ rlwimi r0, r4, 4, 0x1b, 0x1b
+/* 8027F470 0027B0D0 90 03 00 14 */ stw r0, 0x14(r3)
+/* 8027F474 0027B0D4 48 00 01 94 */ b lbl_8027F608
+/* 8027F478 0027B0D8 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F47C 0027B0DC 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8027F480 0027B0E0 50 80 2E B4 */ rlwimi r0, r4, 5, 0x1a, 0x1a
+/* 8027F484 0027B0E4 90 03 00 14 */ stw r0, 0x14(r3)
+/* 8027F488 0027B0E8 48 00 01 80 */ b lbl_8027F608
+/* 8027F48C 0027B0EC 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F490 0027B0F0 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8027F494 0027B0F4 50 80 36 72 */ rlwimi r0, r4, 6, 0x19, 0x19
+/* 8027F498 0027B0F8 90 03 00 14 */ stw r0, 0x14(r3)
+/* 8027F49C 0027B0FC 48 00 01 6C */ b lbl_8027F608
+/* 8027F4A0 0027B100 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F4A4 0027B104 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8027F4A8 0027B108 50 80 3E 30 */ rlwimi r0, r4, 7, 0x18, 0x18
+/* 8027F4AC 0027B10C 90 03 00 14 */ stw r0, 0x14(r3)
+/* 8027F4B0 0027B110 48 00 01 58 */ b lbl_8027F608
+/* 8027F4B4 0027B114 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F4B8 0027B118 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8027F4BC 0027B11C 50 80 45 EE */ rlwimi r0, r4, 8, 0x17, 0x17
+/* 8027F4C0 0027B120 90 03 00 14 */ stw r0, 0x14(r3)
+/* 8027F4C4 0027B124 48 00 01 44 */ b lbl_8027F608
+/* 8027F4C8 0027B128 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F4CC 0027B12C 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8027F4D0 0027B130 50 80 4D 6C */ rlwimi r0, r4, 9, 0x15, 0x16
+/* 8027F4D4 0027B134 90 03 00 14 */ stw r0, 0x14(r3)
+/* 8027F4D8 0027B138 48 00 01 30 */ b lbl_8027F608
+/* 8027F4DC 0027B13C 2C 04 00 00 */ cmpwi r4, 0
+/* 8027F4E0 0027B140 41 82 00 20 */ beq lbl_8027F500
+/* 8027F4E4 0027B144 80 A2 A0 D0 */ lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F4E8 0027B148 38 60 00 01 */ li r3, 1
+/* 8027F4EC 0027B14C 38 00 00 00 */ li r0, 0
+/* 8027F4F0 0027B150 98 65 05 24 */ stb r3, 0x524(r5)
+/* 8027F4F4 0027B154 98 05 05 25 */ stb r0, 0x525(r5)
+/* 8027F4F8 0027B158 90 85 05 20 */ stw r4, 0x520(r5)
+/* 8027F4FC 0027B15C 48 00 01 0C */ b lbl_8027F608
+lbl_8027F500:
+/* 8027F500 0027B160 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F504 0027B164 38 00 00 00 */ li r0, 0
+/* 8027F508 0027B168 98 03 05 24 */ stb r0, 0x524(r3)
+/* 8027F50C 0027B16C 48 00 00 FC */ b lbl_8027F608
+/* 8027F510 0027B170 2C 04 00 00 */ cmpwi r4, 0
+/* 8027F514 0027B174 41 82 00 20 */ beq lbl_8027F534
+/* 8027F518 0027B178 80 A2 A0 D0 */ lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F51C 0027B17C 38 60 00 01 */ li r3, 1
+/* 8027F520 0027B180 38 00 00 00 */ li r0, 0
+/* 8027F524 0027B184 98 65 05 25 */ stb r3, 0x525(r5)
+/* 8027F528 0027B188 98 05 05 24 */ stb r0, 0x524(r5)
+/* 8027F52C 0027B18C 90 85 05 20 */ stw r4, 0x520(r5)
+/* 8027F530 0027B190 48 00 00 D8 */ b lbl_8027F608
+lbl_8027F534:
+/* 8027F534 0027B194 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F538 0027B198 38 00 00 00 */ li r0, 0
+/* 8027F53C 0027B19C 98 03 05 25 */ stb r0, 0x525(r3)
+/* 8027F540 0027B1A0 48 00 00 C8 */ b lbl_8027F608
+/* 8027F544 0027B1A4 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F548 0027B1A8 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8027F54C 0027B1AC 50 80 6C 64 */ rlwimi r0, r4, 0xd, 0x11, 0x12
+/* 8027F550 0027B1B0 90 03 00 14 */ stw r0, 0x14(r3)
+/* 8027F554 0027B1B4 48 00 00 B4 */ b lbl_8027F608
+/* 8027F558 0027B1B8 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F55C 0027B1BC 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8027F560 0027B1C0 50 80 7B E0 */ rlwimi r0, r4, 0xf, 0xf, 0x10
+/* 8027F564 0027B1C4 90 03 00 14 */ stw r0, 0x14(r3)
+/* 8027F568 0027B1C8 48 00 00 A0 */ b lbl_8027F608
+/* 8027F56C 0027B1CC 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F570 0027B1D0 80 03 00 18 */ lwz r0, 0x18(r3)
+/* 8027F574 0027B1D4 50 80 07 BE */ rlwimi r0, r4, 0, 0x1e, 0x1f
+/* 8027F578 0027B1D8 90 03 00 18 */ stw r0, 0x18(r3)
+/* 8027F57C 0027B1DC 48 00 00 8C */ b lbl_8027F608
+/* 8027F580 0027B1E0 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F584 0027B1E4 80 03 00 18 */ lwz r0, 0x18(r3)
+/* 8027F588 0027B1E8 50 80 17 3A */ rlwimi r0, r4, 2, 0x1c, 0x1d
+/* 8027F58C 0027B1EC 90 03 00 18 */ stw r0, 0x18(r3)
+/* 8027F590 0027B1F0 48 00 00 78 */ b lbl_8027F608
+/* 8027F594 0027B1F4 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F598 0027B1F8 80 03 00 18 */ lwz r0, 0x18(r3)
+/* 8027F59C 0027B1FC 50 80 26 B6 */ rlwimi r0, r4, 4, 0x1a, 0x1b
+/* 8027F5A0 0027B200 90 03 00 18 */ stw r0, 0x18(r3)
+/* 8027F5A4 0027B204 48 00 00 64 */ b lbl_8027F608
+/* 8027F5A8 0027B208 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F5AC 0027B20C 80 03 00 18 */ lwz r0, 0x18(r3)
+/* 8027F5B0 0027B210 50 80 36 32 */ rlwimi r0, r4, 6, 0x18, 0x19
+/* 8027F5B4 0027B214 90 03 00 18 */ stw r0, 0x18(r3)
+/* 8027F5B8 0027B218 48 00 00 50 */ b lbl_8027F608
+/* 8027F5BC 0027B21C 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F5C0 0027B220 80 03 00 18 */ lwz r0, 0x18(r3)
+/* 8027F5C4 0027B224 50 80 45 AE */ rlwimi r0, r4, 8, 0x16, 0x17
+/* 8027F5C8 0027B228 90 03 00 18 */ stw r0, 0x18(r3)
+/* 8027F5CC 0027B22C 48 00 00 3C */ b lbl_8027F608
+/* 8027F5D0 0027B230 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F5D4 0027B234 80 03 00 18 */ lwz r0, 0x18(r3)
+/* 8027F5D8 0027B238 50 80 55 2A */ rlwimi r0, r4, 0xa, 0x14, 0x15
+/* 8027F5DC 0027B23C 90 03 00 18 */ stw r0, 0x18(r3)
+/* 8027F5E0 0027B240 48 00 00 28 */ b lbl_8027F608
+/* 8027F5E4 0027B244 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F5E8 0027B248 80 03 00 18 */ lwz r0, 0x18(r3)
+/* 8027F5EC 0027B24C 50 80 64 A6 */ rlwimi r0, r4, 0xc, 0x12, 0x13
+/* 8027F5F0 0027B250 90 03 00 18 */ stw r0, 0x18(r3)
+/* 8027F5F4 0027B254 48 00 00 14 */ b lbl_8027F608
+/* 8027F5F8 0027B258 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F5FC 0027B25C 80 03 00 18 */ lwz r0, 0x18(r3)
+/* 8027F600 0027B260 50 80 74 22 */ rlwimi r0, r4, 0xe, 0x10, 0x11
+/* 8027F604 0027B264 90 03 00 18 */ stw r0, 0x18(r3)
+lbl_8027F608:
+/* 8027F608 0027B268 80 82 A0 D0 */ lwz r4, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F60C 0027B26C 88 04 05 24 */ lbz r0, 0x524(r4)
+/* 8027F610 0027B270 2C 00 00 00 */ cmpwi r0, 0
+/* 8027F614 0027B274 40 82 00 10 */ bne lbl_8027F624
+/* 8027F618 0027B278 88 04 05 25 */ lbz r0, 0x525(r4)
+/* 8027F61C 0027B27C 2C 00 00 00 */ cmpwi r0, 0
+/* 8027F620 0027B280 41 82 00 1C */ beq lbl_8027F63C
+lbl_8027F624:
+/* 8027F624 0027B284 80 A2 A0 D0 */ lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F628 0027B288 80 05 05 20 */ lwz r0, 0x520(r5)
+/* 8027F62C 0027B28C 80 65 00 14 */ lwz r3, 0x14(r5)
+/* 8027F630 0027B290 50 03 5C E8 */ rlwimi r3, r0, 0xb, 0x13, 0x14
+/* 8027F634 0027B294 90 65 00 14 */ stw r3, 0x14(r5)
+/* 8027F638 0027B298 48 00 00 10 */ b lbl_8027F648
+lbl_8027F63C:
+/* 8027F63C 0027B29C 80 04 00 14 */ lwz r0, 0x14(r4)
+/* 8027F640 0027B2A0 54 00 05 64 */ rlwinm r0, r0, 0, 0x15, 0x12
+/* 8027F644 0027B2A4 90 04 00 14 */ stw r0, 0x14(r4)
+lbl_8027F648:
+/* 8027F648 0027B2A8 80 04 05 FC */ lwz r0, 0x5fc(r4)
+/* 8027F64C 0027B2AC 60 00 00 08 */ ori r0, r0, 8
+/* 8027F650 0027B2B0 90 04 05 FC */ stw r0, 0x5fc(r4)
+/* 8027F654 0027B2B4 4E 80 00 20 */ blr
+
+.global GXSetVtxDescv
+GXSetVtxDescv:
+/* 8027F658 0027B2B8 80 A2 A0 D0 */ lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F65C 0027B2BC 38 E0 00 00 */ li r7, 0
+/* 8027F660 0027B2C0 39 00 00 01 */ li r8, 1
+/* 8027F664 0027B2C4 3C 80 80 43 */ lis r4, 0x8043
+/* 8027F668 0027B2C8 48 00 01 A8 */ b lbl_8027F810
+lbl_8027F66C:
+/* 8027F66C 0027B2CC 80 C3 00 00 */ lwz r6, 0(r3)
+/* 8027F670 0027B2D0 80 03 00 04 */ lwz r0, 4(r3)
+/* 8027F674 0027B2D4 28 06 00 19 */ cmplwi r6, 0x19
+/* 8027F678 0027B2D8 41 81 01 94 */ bgt lbl_8027F80C
+/* 8027F67C 0027B2DC 39 24 4D 78 */ addi r9, r4, 0x4d78
+/* 8027F680 0027B2E0 54 C6 10 3A */ slwi r6, r6, 2
+/* 8027F684 0027B2E4 7D 29 30 2E */ lwzx r9, r9, r6
+/* 8027F688 0027B2E8 7D 29 03 A6 */ mtctr r9
+/* 8027F68C 0027B2EC 4E 80 04 20 */ bctr
+/* 8027F690 0027B2F0 80 C5 00 14 */ lwz r6, 0x14(r5)
+/* 8027F694 0027B2F4 50 06 07 FE */ rlwimi r6, r0, 0, 0x1f, 0x1f
+/* 8027F698 0027B2F8 90 C5 00 14 */ stw r6, 0x14(r5)
+/* 8027F69C 0027B2FC 48 00 01 70 */ b lbl_8027F80C
+/* 8027F6A0 0027B300 80 C5 00 14 */ lwz r6, 0x14(r5)
+/* 8027F6A4 0027B304 50 06 0F BC */ rlwimi r6, r0, 1, 0x1e, 0x1e
+/* 8027F6A8 0027B308 90 C5 00 14 */ stw r6, 0x14(r5)
+/* 8027F6AC 0027B30C 48 00 01 60 */ b lbl_8027F80C
+/* 8027F6B0 0027B310 80 C5 00 14 */ lwz r6, 0x14(r5)
+/* 8027F6B4 0027B314 50 06 17 7A */ rlwimi r6, r0, 2, 0x1d, 0x1d
+/* 8027F6B8 0027B318 90 C5 00 14 */ stw r6, 0x14(r5)
+/* 8027F6BC 0027B31C 48 00 01 50 */ b lbl_8027F80C
+/* 8027F6C0 0027B320 80 C5 00 14 */ lwz r6, 0x14(r5)
+/* 8027F6C4 0027B324 50 06 1F 38 */ rlwimi r6, r0, 3, 0x1c, 0x1c
+/* 8027F6C8 0027B328 90 C5 00 14 */ stw r6, 0x14(r5)
+/* 8027F6CC 0027B32C 48 00 01 40 */ b lbl_8027F80C
+/* 8027F6D0 0027B330 80 C5 00 14 */ lwz r6, 0x14(r5)
+/* 8027F6D4 0027B334 50 06 26 F6 */ rlwimi r6, r0, 4, 0x1b, 0x1b
+/* 8027F6D8 0027B338 90 C5 00 14 */ stw r6, 0x14(r5)
+/* 8027F6DC 0027B33C 48 00 01 30 */ b lbl_8027F80C
+/* 8027F6E0 0027B340 80 C5 00 14 */ lwz r6, 0x14(r5)
+/* 8027F6E4 0027B344 50 06 2E B4 */ rlwimi r6, r0, 5, 0x1a, 0x1a
+/* 8027F6E8 0027B348 90 C5 00 14 */ stw r6, 0x14(r5)
+/* 8027F6EC 0027B34C 48 00 01 20 */ b lbl_8027F80C
+/* 8027F6F0 0027B350 80 C5 00 14 */ lwz r6, 0x14(r5)
+/* 8027F6F4 0027B354 50 06 36 72 */ rlwimi r6, r0, 6, 0x19, 0x19
+/* 8027F6F8 0027B358 90 C5 00 14 */ stw r6, 0x14(r5)
+/* 8027F6FC 0027B35C 48 00 01 10 */ b lbl_8027F80C
+/* 8027F700 0027B360 80 C5 00 14 */ lwz r6, 0x14(r5)
+/* 8027F704 0027B364 50 06 3E 30 */ rlwimi r6, r0, 7, 0x18, 0x18
+/* 8027F708 0027B368 90 C5 00 14 */ stw r6, 0x14(r5)
+/* 8027F70C 0027B36C 48 00 01 00 */ b lbl_8027F80C
+/* 8027F710 0027B370 80 C5 00 14 */ lwz r6, 0x14(r5)
+/* 8027F714 0027B374 50 06 45 EE */ rlwimi r6, r0, 8, 0x17, 0x17
+/* 8027F718 0027B378 90 C5 00 14 */ stw r6, 0x14(r5)
+/* 8027F71C 0027B37C 48 00 00 F0 */ b lbl_8027F80C
+/* 8027F720 0027B380 80 C5 00 14 */ lwz r6, 0x14(r5)
+/* 8027F724 0027B384 50 06 4D 6C */ rlwimi r6, r0, 9, 0x15, 0x16
+/* 8027F728 0027B388 90 C5 00 14 */ stw r6, 0x14(r5)
+/* 8027F72C 0027B38C 48 00 00 E0 */ b lbl_8027F80C
+/* 8027F730 0027B390 2C 00 00 00 */ cmpwi r0, 0
+/* 8027F734 0027B394 41 82 00 14 */ beq lbl_8027F748
+/* 8027F738 0027B398 99 05 05 24 */ stb r8, 0x524(r5)
+/* 8027F73C 0027B39C 98 E5 05 25 */ stb r7, 0x525(r5)
+/* 8027F740 0027B3A0 90 05 05 20 */ stw r0, 0x520(r5)
+/* 8027F744 0027B3A4 48 00 00 C8 */ b lbl_8027F80C
+lbl_8027F748:
+/* 8027F748 0027B3A8 98 E5 05 24 */ stb r7, 0x524(r5)
+/* 8027F74C 0027B3AC 48 00 00 C0 */ b lbl_8027F80C
+/* 8027F750 0027B3B0 2C 00 00 00 */ cmpwi r0, 0
+/* 8027F754 0027B3B4 41 82 00 14 */ beq lbl_8027F768
+/* 8027F758 0027B3B8 99 05 05 25 */ stb r8, 0x525(r5)
+/* 8027F75C 0027B3BC 98 E5 05 24 */ stb r7, 0x524(r5)
+/* 8027F760 0027B3C0 90 05 05 20 */ stw r0, 0x520(r5)
+/* 8027F764 0027B3C4 48 00 00 A8 */ b lbl_8027F80C
+lbl_8027F768:
+/* 8027F768 0027B3C8 98 E5 05 25 */ stb r7, 0x525(r5)
+/* 8027F76C 0027B3CC 48 00 00 A0 */ b lbl_8027F80C
+/* 8027F770 0027B3D0 80 C5 00 14 */ lwz r6, 0x14(r5)
+/* 8027F774 0027B3D4 50 06 6C 64 */ rlwimi r6, r0, 0xd, 0x11, 0x12
+/* 8027F778 0027B3D8 90 C5 00 14 */ stw r6, 0x14(r5)
+/* 8027F77C 0027B3DC 48 00 00 90 */ b lbl_8027F80C
+/* 8027F780 0027B3E0 80 C5 00 14 */ lwz r6, 0x14(r5)
+/* 8027F784 0027B3E4 50 06 7B E0 */ rlwimi r6, r0, 0xf, 0xf, 0x10
+/* 8027F788 0027B3E8 90 C5 00 14 */ stw r6, 0x14(r5)
+/* 8027F78C 0027B3EC 48 00 00 80 */ b lbl_8027F80C
+/* 8027F790 0027B3F0 80 C5 00 18 */ lwz r6, 0x18(r5)
+/* 8027F794 0027B3F4 50 06 07 BE */ rlwimi r6, r0, 0, 0x1e, 0x1f
+/* 8027F798 0027B3F8 90 C5 00 18 */ stw r6, 0x18(r5)
+/* 8027F79C 0027B3FC 48 00 00 70 */ b lbl_8027F80C
+/* 8027F7A0 0027B400 80 C5 00 18 */ lwz r6, 0x18(r5)
+/* 8027F7A4 0027B404 50 06 17 3A */ rlwimi r6, r0, 2, 0x1c, 0x1d
+/* 8027F7A8 0027B408 90 C5 00 18 */ stw r6, 0x18(r5)
+/* 8027F7AC 0027B40C 48 00 00 60 */ b lbl_8027F80C
+/* 8027F7B0 0027B410 80 C5 00 18 */ lwz r6, 0x18(r5)
+/* 8027F7B4 0027B414 50 06 26 B6 */ rlwimi r6, r0, 4, 0x1a, 0x1b
+/* 8027F7B8 0027B418 90 C5 00 18 */ stw r6, 0x18(r5)
+/* 8027F7BC 0027B41C 48 00 00 50 */ b lbl_8027F80C
+/* 8027F7C0 0027B420 80 C5 00 18 */ lwz r6, 0x18(r5)
+/* 8027F7C4 0027B424 50 06 36 32 */ rlwimi r6, r0, 6, 0x18, 0x19
+/* 8027F7C8 0027B428 90 C5 00 18 */ stw r6, 0x18(r5)
+/* 8027F7CC 0027B42C 48 00 00 40 */ b lbl_8027F80C
+/* 8027F7D0 0027B430 80 C5 00 18 */ lwz r6, 0x18(r5)
+/* 8027F7D4 0027B434 50 06 45 AE */ rlwimi r6, r0, 8, 0x16, 0x17
+/* 8027F7D8 0027B438 90 C5 00 18 */ stw r6, 0x18(r5)
+/* 8027F7DC 0027B43C 48 00 00 30 */ b lbl_8027F80C
+/* 8027F7E0 0027B440 80 C5 00 18 */ lwz r6, 0x18(r5)
+/* 8027F7E4 0027B444 50 06 55 2A */ rlwimi r6, r0, 0xa, 0x14, 0x15
+/* 8027F7E8 0027B448 90 C5 00 18 */ stw r6, 0x18(r5)
+/* 8027F7EC 0027B44C 48 00 00 20 */ b lbl_8027F80C
+/* 8027F7F0 0027B450 80 C5 00 18 */ lwz r6, 0x18(r5)
+/* 8027F7F4 0027B454 50 06 64 A6 */ rlwimi r6, r0, 0xc, 0x12, 0x13
+/* 8027F7F8 0027B458 90 C5 00 18 */ stw r6, 0x18(r5)
+/* 8027F7FC 0027B45C 48 00 00 10 */ b lbl_8027F80C
+/* 8027F800 0027B460 80 C5 00 18 */ lwz r6, 0x18(r5)
+/* 8027F804 0027B464 50 06 74 22 */ rlwimi r6, r0, 0xe, 0x10, 0x11
+/* 8027F808 0027B468 90 C5 00 18 */ stw r6, 0x18(r5)
+lbl_8027F80C:
+/* 8027F80C 0027B46C 38 63 00 08 */ addi r3, r3, 8
+lbl_8027F810:
+/* 8027F810 0027B470 80 03 00 00 */ lwz r0, 0(r3)
+/* 8027F814 0027B474 2C 00 00 FF */ cmpwi r0, 0xff
+/* 8027F818 0027B478 40 82 FE 54 */ bne lbl_8027F66C
+/* 8027F81C 0027B47C 88 05 05 24 */ lbz r0, 0x524(r5)
+/* 8027F820 0027B480 2C 00 00 00 */ cmpwi r0, 0
+/* 8027F824 0027B484 40 82 00 10 */ bne lbl_8027F834
+/* 8027F828 0027B488 88 05 05 25 */ lbz r0, 0x525(r5)
+/* 8027F82C 0027B48C 2C 00 00 00 */ cmpwi r0, 0
+/* 8027F830 0027B490 41 82 00 18 */ beq lbl_8027F848
+lbl_8027F834:
+/* 8027F834 0027B494 80 05 05 20 */ lwz r0, 0x520(r5)
+/* 8027F838 0027B498 80 65 00 14 */ lwz r3, 0x14(r5)
+/* 8027F83C 0027B49C 50 03 5C E8 */ rlwimi r3, r0, 0xb, 0x13, 0x14
+/* 8027F840 0027B4A0 90 65 00 14 */ stw r3, 0x14(r5)
+/* 8027F844 0027B4A4 48 00 00 10 */ b lbl_8027F854
+lbl_8027F848:
+/* 8027F848 0027B4A8 80 05 00 14 */ lwz r0, 0x14(r5)
+/* 8027F84C 0027B4AC 54 00 05 64 */ rlwinm r0, r0, 0, 0x15, 0x12
+/* 8027F850 0027B4B0 90 05 00 14 */ stw r0, 0x14(r5)
+lbl_8027F854:
+/* 8027F854 0027B4B4 80 05 05 FC */ lwz r0, 0x5fc(r5)
+/* 8027F858 0027B4B8 60 00 00 08 */ ori r0, r0, 8
+/* 8027F85C 0027B4BC 90 05 05 FC */ stw r0, 0x5fc(r5)
+/* 8027F860 0027B4C0 4E 80 00 20 */ blr
+
+.global __GXSetVCD
+__GXSetVCD:
+/* 8027F864 0027B4C4 3C A0 CC 01 */ lis r5, 0xCC008000@ha
+/* 8027F868 0027B4C8 38 C0 00 08 */ li r6, 8
+/* 8027F86C 0027B4CC 98 C5 80 00 */ stb r6, 0xCC008000@l(r5)
+/* 8027F870 0027B4D0 38 80 00 50 */ li r4, 0x50
+/* 8027F874 0027B4D4 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F878 0027B4D8 38 00 00 60 */ li r0, 0x60
+/* 8027F87C 0027B4DC 98 85 80 00 */ stb r4, -0x8000(r5)
+/* 8027F880 0027B4E0 80 83 00 14 */ lwz r4, 0x14(r3)
+/* 8027F884 0027B4E4 90 85 80 00 */ stw r4, -0x8000(r5)
+/* 8027F888 0027B4E8 98 C5 80 00 */ stb r6, -0x8000(r5)
+/* 8027F88C 0027B4EC 98 05 80 00 */ stb r0, -0x8000(r5)
+/* 8027F890 0027B4F0 80 03 00 18 */ lwz r0, 0x18(r3)
+/* 8027F894 0027B4F4 90 05 80 00 */ stw r0, -0x8000(r5)
+/* 8027F898 0027B4F8 88 03 05 25 */ lbz r0, 0x525(r3)
+/* 8027F89C 0027B4FC 2C 00 00 00 */ cmpwi r0, 0
+/* 8027F8A0 0027B500 41 82 00 0C */ beq lbl_8027F8AC
+/* 8027F8A4 0027B504 39 00 00 02 */ li r8, 2
+/* 8027F8A8 0027B508 48 00 00 14 */ b lbl_8027F8BC
+lbl_8027F8AC:
+/* 8027F8AC 0027B50C 88 83 05 24 */ lbz r4, 0x524(r3)
+/* 8027F8B0 0027B510 7C 04 00 D0 */ neg r0, r4
+/* 8027F8B4 0027B514 7C 00 23 78 */ or r0, r0, r4
+/* 8027F8B8 0027B518 54 08 0F FE */ srwi r8, r0, 0x1f
+lbl_8027F8BC:
+/* 8027F8BC 0027B51C 80 A3 00 14 */ lwz r5, 0x14(r3)
+/* 8027F8C0 0027B520 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 8027F8C4 0027B524 80 83 00 18 */ lwz r4, 0x18(r3)
+/* 8027F8C8 0027B528 38 00 00 10 */ li r0, 0x10
+/* 8027F8CC 0027B52C 54 A7 9F 3E */ rlwinm r7, r5, 0x13, 0x1c, 0x1f
+/* 8027F8D0 0027B530 38 A0 10 08 */ li r5, 0x1008
+/* 8027F8D4 0027B534 7C E7 00 34 */ cntlzw r7, r7
+/* 8027F8D8 0027B538 54 84 04 3E */ clrlwi r4, r4, 0x10
+/* 8027F8DC 0027B53C 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 8027F8E0 0027B540 20 E7 00 21 */ subfic r7, r7, 0x21
+/* 8027F8E4 0027B544 7C 80 00 34 */ cntlzw r0, r4
+/* 8027F8E8 0027B548 55 04 10 3A */ slwi r4, r8, 2
+/* 8027F8EC 0027B54C 20 00 00 21 */ subfic r0, r0, 0x21
+/* 8027F8F0 0027B550 54 E7 F8 7E */ srwi r7, r7, 1
+/* 8027F8F4 0027B554 54 00 18 36 */ rlwinm r0, r0, 3, 0, 0x1b
+/* 8027F8F8 0027B558 90 A6 80 00 */ stw r5, -0x8000(r6)
+/* 8027F8FC 0027B55C 7C 05 3B 78 */ or r5, r0, r7
+/* 8027F900 0027B560 7C A4 23 78 */ or r4, r5, r4
+/* 8027F904 0027B564 38 00 00 01 */ li r0, 1
+/* 8027F908 0027B568 90 86 80 00 */ stw r4, -0x8000(r6)
+/* 8027F90C 0027B56C B0 03 00 02 */ sth r0, 2(r3)
+/* 8027F910 0027B570 4E 80 00 20 */ blr
+
+.global __GXCalculateVLim
+__GXCalculateVLim:
+/* 8027F914 0027B574 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8027F918 0027B578 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F91C 0027B57C 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8027F920 0027B580 A0 03 00 04 */ lhz r0, 4(r3)
+/* 8027F924 0027B584 2C 00 00 00 */ cmpwi r0, 0
+/* 8027F928 0027B588 41 82 01 0C */ beq lbl_8027FA34
+/* 8027F92C 0027B58C 81 23 00 14 */ lwz r9, 0x14(r3)
+/* 8027F930 0027B590 38 ED 88 60 */ addi r7, r13, lbl_8063DB20-_SDA_BASE_
+/* 8027F934 0027B594 80 A3 00 1C */ lwz r5, 0x1c(r3)
+/* 8027F938 0027B598 55 20 07 FE */ clrlwi r0, r9, 0x1f
+/* 8027F93C 0027B59C 55 24 FF FE */ rlwinm r4, r9, 0x1f, 0x1f, 0x1f
+/* 8027F940 0027B5A0 7C 00 22 14 */ add r0, r0, r4
+/* 8027F944 0027B5A4 54 A8 BF FE */ rlwinm r8, r5, 0x17, 0x1f, 0x1f
+/* 8027F948 0027B5A8 55 24 F7 FE */ rlwinm r4, r9, 0x1e, 0x1f, 0x1f
+/* 8027F94C 0027B5AC 55 25 AF BE */ rlwinm r5, r9, 0x15, 0x1e, 0x1f
+/* 8027F950 0027B5B0 7C 00 22 14 */ add r0, r0, r4
+/* 8027F954 0027B5B4 2C 08 00 01 */ cmpwi r8, 1
+/* 8027F958 0027B5B8 55 24 EF FE */ rlwinm r4, r9, 0x1d, 0x1f, 0x1f
+/* 8027F95C 0027B5BC 55 26 D7 FE */ rlwinm r6, r9, 0x1a, 0x1f, 0x1f
+/* 8027F960 0027B5C0 7C 00 22 14 */ add r0, r0, r4
+/* 8027F964 0027B5C4 55 28 C7 FE */ rlwinm r8, r9, 0x18, 0x1f, 0x1f
+/* 8027F968 0027B5C8 55 24 E7 FE */ rlwinm r4, r9, 0x1c, 0x1f, 0x1f
+/* 8027F96C 0027B5CC 83 E3 00 18 */ lwz r31, 0x18(r3)
+/* 8027F970 0027B5D0 7C 00 22 14 */ add r0, r0, r4
+/* 8027F974 0027B5D4 7C A7 28 AE */ lbzx r5, r7, r5
+/* 8027F978 0027B5D8 55 24 DF FE */ rlwinm r4, r9, 0x1b, 0x1f, 0x1f
+/* 8027F97C 0027B5DC 7C 00 22 14 */ add r0, r0, r4
+/* 8027F980 0027B5E0 7C 00 32 14 */ add r0, r0, r6
+/* 8027F984 0027B5E4 55 26 CF FE */ rlwinm r6, r9, 0x19, 0x1f, 0x1f
+/* 8027F988 0027B5E8 7C 00 32 14 */ add r0, r0, r6
+/* 8027F98C 0027B5EC 55 24 BF BE */ rlwinm r4, r9, 0x17, 0x1e, 0x1f
+/* 8027F990 0027B5F0 7C C7 20 AE */ lbzx r6, r7, r4
+/* 8027F994 0027B5F4 7C 00 42 14 */ add r0, r0, r8
+/* 8027F998 0027B5F8 38 80 00 01 */ li r4, 1
+/* 8027F99C 0027B5FC 7C 00 32 14 */ add r0, r0, r6
+/* 8027F9A0 0027B600 40 82 00 08 */ bne lbl_8027F9A8
+/* 8027F9A4 0027B604 38 80 00 03 */ li r4, 3
+lbl_8027F9A8:
+/* 8027F9A8 0027B608 7D 05 21 D6 */ mullw r8, r5, r4
+/* 8027F9AC 0027B60C 38 ED 88 58 */ addi r7, r13, lbl_8063DB18-_SDA_BASE_
+/* 8027F9B0 0027B610 55 24 9F BE */ rlwinm r4, r9, 0x13, 0x1e, 0x1f
+/* 8027F9B4 0027B614 55 25 8F BE */ rlwinm r5, r9, 0x11, 0x1e, 0x1f
+/* 8027F9B8 0027B618 7C C7 20 AE */ lbzx r6, r7, r4
+/* 8027F9BC 0027B61C 7C A7 28 AE */ lbzx r5, r7, r5
+/* 8027F9C0 0027B620 7C 00 42 14 */ add r0, r0, r8
+/* 8027F9C4 0027B624 39 8D 88 5C */ addi r12, r13, lbl_8063DB1C-_SDA_BASE_
+/* 8027F9C8 0027B628 7C 00 32 14 */ add r0, r0, r6
+/* 8027F9CC 0027B62C 57 E4 07 BE */ clrlwi r4, r31, 0x1e
+/* 8027F9D0 0027B630 57 EA F7 BE */ rlwinm r10, r31, 0x1e, 0x1e, 0x1f
+/* 8027F9D4 0027B634 7D 6C 20 AE */ lbzx r11, r12, r4
+/* 8027F9D8 0027B638 7C 00 2A 14 */ add r0, r0, r5
+/* 8027F9DC 0027B63C 57 E9 E7 BE */ rlwinm r9, r31, 0x1c, 0x1e, 0x1f
+/* 8027F9E0 0027B640 57 E8 D7 BE */ rlwinm r8, r31, 0x1a, 0x1e, 0x1f
+/* 8027F9E4 0027B644 57 E7 C7 BE */ rlwinm r7, r31, 0x18, 0x1e, 0x1f
+/* 8027F9E8 0027B648 57 E6 B7 BE */ rlwinm r6, r31, 0x16, 0x1e, 0x1f
+/* 8027F9EC 0027B64C 57 E5 A7 BE */ rlwinm r5, r31, 0x14, 0x1e, 0x1f
+/* 8027F9F0 0027B650 57 E4 97 BE */ rlwinm r4, r31, 0x12, 0x1e, 0x1f
+/* 8027F9F4 0027B654 7D 4C 50 AE */ lbzx r10, r12, r10
+/* 8027F9F8 0027B658 7C 00 5A 14 */ add r0, r0, r11
+/* 8027F9FC 0027B65C 7D 2C 48 AE */ lbzx r9, r12, r9
+/* 8027FA00 0027B660 7C 00 52 14 */ add r0, r0, r10
+/* 8027FA04 0027B664 7D 0C 40 AE */ lbzx r8, r12, r8
+/* 8027FA08 0027B668 7C 00 4A 14 */ add r0, r0, r9
+/* 8027FA0C 0027B66C 7C EC 38 AE */ lbzx r7, r12, r7
+/* 8027FA10 0027B670 7C 00 42 14 */ add r0, r0, r8
+/* 8027FA14 0027B674 7C CC 30 AE */ lbzx r6, r12, r6
+/* 8027FA18 0027B678 7C 00 3A 14 */ add r0, r0, r7
+/* 8027FA1C 0027B67C 7C AC 28 AE */ lbzx r5, r12, r5
+/* 8027FA20 0027B680 7C 00 32 14 */ add r0, r0, r6
+/* 8027FA24 0027B684 7C 8C 20 AE */ lbzx r4, r12, r4
+/* 8027FA28 0027B688 7C 00 2A 14 */ add r0, r0, r5
+/* 8027FA2C 0027B68C 7C 00 22 14 */ add r0, r0, r4
+/* 8027FA30 0027B690 B0 03 00 06 */ sth r0, 6(r3)
+lbl_8027FA34:
+/* 8027FA34 0027B694 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8027FA38 0027B698 38 21 00 10 */ addi r1, r1, 0x10
+/* 8027FA3C 0027B69C 4E 80 00 20 */ blr
+
+.global GXGetVtxDesc
+GXGetVtxDesc:
+/* 8027FA40 0027B6A0 28 03 00 19 */ cmplwi r3, 0x19
+/* 8027FA44 0027B6A4 41 81 01 A4 */ bgt lbl_8027FBE8
+/* 8027FA48 0027B6A8 3C A0 80 43 */ lis r5, lbl_80434DE0@ha
+/* 8027FA4C 0027B6AC 54 60 10 3A */ slwi r0, r3, 2
+/* 8027FA50 0027B6B0 38 A5 4D E0 */ addi r5, r5, lbl_80434DE0@l
+/* 8027FA54 0027B6B4 7C A5 00 2E */ lwzx r5, r5, r0
+/* 8027FA58 0027B6B8 7C A9 03 A6 */ mtctr r5
+/* 8027FA5C 0027B6BC 4E 80 04 20 */ bctr
+/* 8027FA60 0027B6C0 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FA64 0027B6C4 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8027FA68 0027B6C8 54 00 07 FE */ clrlwi r0, r0, 0x1f
+/* 8027FA6C 0027B6CC 48 00 01 80 */ b lbl_8027FBEC
+/* 8027FA70 0027B6D0 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FA74 0027B6D4 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8027FA78 0027B6D8 54 00 FF FE */ rlwinm r0, r0, 0x1f, 0x1f, 0x1f
+/* 8027FA7C 0027B6DC 48 00 01 70 */ b lbl_8027FBEC
+/* 8027FA80 0027B6E0 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FA84 0027B6E4 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8027FA88 0027B6E8 54 00 F7 FE */ rlwinm r0, r0, 0x1e, 0x1f, 0x1f
+/* 8027FA8C 0027B6EC 48 00 01 60 */ b lbl_8027FBEC
+/* 8027FA90 0027B6F0 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FA94 0027B6F4 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8027FA98 0027B6F8 54 00 EF FE */ rlwinm r0, r0, 0x1d, 0x1f, 0x1f
+/* 8027FA9C 0027B6FC 48 00 01 50 */ b lbl_8027FBEC
+/* 8027FAA0 0027B700 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FAA4 0027B704 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8027FAA8 0027B708 54 00 E7 FE */ rlwinm r0, r0, 0x1c, 0x1f, 0x1f
+/* 8027FAAC 0027B70C 48 00 01 40 */ b lbl_8027FBEC
+/* 8027FAB0 0027B710 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FAB4 0027B714 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8027FAB8 0027B718 54 00 DF FE */ rlwinm r0, r0, 0x1b, 0x1f, 0x1f
+/* 8027FABC 0027B71C 48 00 01 30 */ b lbl_8027FBEC
+/* 8027FAC0 0027B720 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FAC4 0027B724 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8027FAC8 0027B728 54 00 D7 FE */ rlwinm r0, r0, 0x1a, 0x1f, 0x1f
+/* 8027FACC 0027B72C 48 00 01 20 */ b lbl_8027FBEC
+/* 8027FAD0 0027B730 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FAD4 0027B734 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8027FAD8 0027B738 54 00 CF FE */ rlwinm r0, r0, 0x19, 0x1f, 0x1f
+/* 8027FADC 0027B73C 48 00 01 10 */ b lbl_8027FBEC
+/* 8027FAE0 0027B740 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FAE4 0027B744 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8027FAE8 0027B748 54 00 C7 FE */ rlwinm r0, r0, 0x18, 0x1f, 0x1f
+/* 8027FAEC 0027B74C 48 00 01 00 */ b lbl_8027FBEC
+/* 8027FAF0 0027B750 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FAF4 0027B754 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8027FAF8 0027B758 54 00 BF BE */ rlwinm r0, r0, 0x17, 0x1e, 0x1f
+/* 8027FAFC 0027B75C 48 00 00 F0 */ b lbl_8027FBEC
+/* 8027FB00 0027B760 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FB04 0027B764 88 03 05 24 */ lbz r0, 0x524(r3)
+/* 8027FB08 0027B768 2C 00 00 00 */ cmpwi r0, 0
+/* 8027FB0C 0027B76C 41 82 00 10 */ beq lbl_8027FB1C
+/* 8027FB10 0027B770 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8027FB14 0027B774 54 00 AF BE */ rlwinm r0, r0, 0x15, 0x1e, 0x1f
+/* 8027FB18 0027B778 48 00 00 D4 */ b lbl_8027FBEC
+lbl_8027FB1C:
+/* 8027FB1C 0027B77C 38 00 00 00 */ li r0, 0
+/* 8027FB20 0027B780 48 00 00 CC */ b lbl_8027FBEC
+/* 8027FB24 0027B784 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FB28 0027B788 88 03 05 25 */ lbz r0, 0x525(r3)
+/* 8027FB2C 0027B78C 2C 00 00 00 */ cmpwi r0, 0
+/* 8027FB30 0027B790 41 82 00 10 */ beq lbl_8027FB40
+/* 8027FB34 0027B794 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8027FB38 0027B798 54 00 AF BE */ rlwinm r0, r0, 0x15, 0x1e, 0x1f
+/* 8027FB3C 0027B79C 48 00 00 B0 */ b lbl_8027FBEC
+lbl_8027FB40:
+/* 8027FB40 0027B7A0 38 00 00 00 */ li r0, 0
+/* 8027FB44 0027B7A4 48 00 00 A8 */ b lbl_8027FBEC
+/* 8027FB48 0027B7A8 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FB4C 0027B7AC 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8027FB50 0027B7B0 54 00 9F BE */ rlwinm r0, r0, 0x13, 0x1e, 0x1f
+/* 8027FB54 0027B7B4 48 00 00 98 */ b lbl_8027FBEC
+/* 8027FB58 0027B7B8 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FB5C 0027B7BC 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8027FB60 0027B7C0 54 00 8F BE */ rlwinm r0, r0, 0x11, 0x1e, 0x1f
+/* 8027FB64 0027B7C4 48 00 00 88 */ b lbl_8027FBEC
+/* 8027FB68 0027B7C8 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FB6C 0027B7CC 80 03 00 18 */ lwz r0, 0x18(r3)
+/* 8027FB70 0027B7D0 54 00 07 BE */ clrlwi r0, r0, 0x1e
+/* 8027FB74 0027B7D4 48 00 00 78 */ b lbl_8027FBEC
+/* 8027FB78 0027B7D8 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FB7C 0027B7DC 80 03 00 18 */ lwz r0, 0x18(r3)
+/* 8027FB80 0027B7E0 54 00 F7 BE */ rlwinm r0, r0, 0x1e, 0x1e, 0x1f
+/* 8027FB84 0027B7E4 48 00 00 68 */ b lbl_8027FBEC
+/* 8027FB88 0027B7E8 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FB8C 0027B7EC 80 03 00 18 */ lwz r0, 0x18(r3)
+/* 8027FB90 0027B7F0 54 00 E7 BE */ rlwinm r0, r0, 0x1c, 0x1e, 0x1f
+/* 8027FB94 0027B7F4 48 00 00 58 */ b lbl_8027FBEC
+/* 8027FB98 0027B7F8 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FB9C 0027B7FC 80 03 00 18 */ lwz r0, 0x18(r3)
+/* 8027FBA0 0027B800 54 00 D7 BE */ rlwinm r0, r0, 0x1a, 0x1e, 0x1f
+/* 8027FBA4 0027B804 48 00 00 48 */ b lbl_8027FBEC
+/* 8027FBA8 0027B808 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FBAC 0027B80C 80 03 00 18 */ lwz r0, 0x18(r3)
+/* 8027FBB0 0027B810 54 00 C7 BE */ rlwinm r0, r0, 0x18, 0x1e, 0x1f
+/* 8027FBB4 0027B814 48 00 00 38 */ b lbl_8027FBEC
+/* 8027FBB8 0027B818 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FBBC 0027B81C 80 03 00 18 */ lwz r0, 0x18(r3)
+/* 8027FBC0 0027B820 54 00 B7 BE */ rlwinm r0, r0, 0x16, 0x1e, 0x1f
+/* 8027FBC4 0027B824 48 00 00 28 */ b lbl_8027FBEC
+/* 8027FBC8 0027B828 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FBCC 0027B82C 80 03 00 18 */ lwz r0, 0x18(r3)
+/* 8027FBD0 0027B830 54 00 A7 BE */ rlwinm r0, r0, 0x14, 0x1e, 0x1f
+/* 8027FBD4 0027B834 48 00 00 18 */ b lbl_8027FBEC
+/* 8027FBD8 0027B838 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FBDC 0027B83C 80 03 00 18 */ lwz r0, 0x18(r3)
+/* 8027FBE0 0027B840 54 00 97 BE */ rlwinm r0, r0, 0x12, 0x1e, 0x1f
+/* 8027FBE4 0027B844 48 00 00 08 */ b lbl_8027FBEC
+lbl_8027FBE8:
+/* 8027FBE8 0027B848 38 00 00 00 */ li r0, 0
+lbl_8027FBEC:
+/* 8027FBEC 0027B84C 90 04 00 00 */ stw r0, 0(r4)
+/* 8027FBF0 0027B850 4E 80 00 20 */ blr
+
+.global GXGetVtxDescv
+GXGetVtxDescv:
+/* 8027FBF4 0027B854 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8027FBF8 0027B858 7C 08 02 A6 */ mflr r0
+/* 8027FBFC 0027B85C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8027FC00 0027B860 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8027FC04 0027B864 3B E0 00 00 */ li r31, 0
+/* 8027FC08 0027B868 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8027FC0C 0027B86C 3B C0 00 00 */ li r30, 0
+/* 8027FC10 0027B870 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8027FC14 0027B874 7C 7D 1B 78 */ mr r29, r3
+lbl_8027FC18:
+/* 8027FC18 0027B878 7C 9D FA 14 */ add r4, r29, r31
+/* 8027FC1C 0027B87C 7F DD F9 2E */ stwx r30, r29, r31
+/* 8027FC20 0027B880 7F C3 F3 78 */ mr r3, r30
+/* 8027FC24 0027B884 38 84 00 04 */ addi r4, r4, 4
+/* 8027FC28 0027B888 4B FF FE 19 */ bl GXGetVtxDesc
+/* 8027FC2C 0027B88C 3B DE 00 01 */ addi r30, r30, 1
+/* 8027FC30 0027B890 3B FF 00 08 */ addi r31, r31, 8
+/* 8027FC34 0027B894 2C 1E 00 14 */ cmpwi r30, 0x14
+/* 8027FC38 0027B898 40 81 FF E0 */ ble lbl_8027FC18
+/* 8027FC3C 0027B89C 57 C3 18 38 */ slwi r3, r30, 3
+/* 8027FC40 0027B8A0 38 00 00 19 */ li r0, 0x19
+/* 8027FC44 0027B8A4 7C 9D 1A 14 */ add r4, r29, r3
+/* 8027FC48 0027B8A8 90 04 00 00 */ stw r0, 0(r4)
+/* 8027FC4C 0027B8AC 38 60 00 19 */ li r3, 0x19
+/* 8027FC50 0027B8B0 38 84 00 04 */ addi r4, r4, 4
+/* 8027FC54 0027B8B4 4B FF FD ED */ bl GXGetVtxDesc
+/* 8027FC58 0027B8B8 3B DE 00 01 */ addi r30, r30, 1
+/* 8027FC5C 0027B8BC 38 60 00 FF */ li r3, 0xff
+/* 8027FC60 0027B8C0 57 C0 18 38 */ slwi r0, r30, 3
+/* 8027FC64 0027B8C4 7C 7D 01 2E */ stwx r3, r29, r0
+/* 8027FC68 0027B8C8 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8027FC6C 0027B8CC 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8027FC70 0027B8D0 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8027FC74 0027B8D4 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8027FC78 0027B8D8 7C 08 03 A6 */ mtlr r0
+/* 8027FC7C 0027B8DC 38 21 00 20 */ addi r1, r1, 0x20
+/* 8027FC80 0027B8E0 4E 80 00 20 */ blr
+
+.global GXClearVtxDesc
+GXClearVtxDesc:
+/* 8027FC84 0027B8E4 80 A2 A0 D0 */ lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FC88 0027B8E8 38 00 00 01 */ li r0, 1
+/* 8027FC8C 0027B8EC 38 60 00 00 */ li r3, 0
+/* 8027FC90 0027B8F0 38 80 00 00 */ li r4, 0
+/* 8027FC94 0027B8F4 50 03 4D 6C */ rlwimi r3, r0, 9, 0x15, 0x16
+/* 8027FC98 0027B8F8 90 65 00 14 */ stw r3, 0x14(r5)
+/* 8027FC9C 0027B8FC 90 85 00 18 */ stw r4, 0x18(r5)
+/* 8027FCA0 0027B900 98 85 05 24 */ stb r4, 0x524(r5)
+/* 8027FCA4 0027B904 98 85 05 25 */ stb r4, 0x525(r5)
+/* 8027FCA8 0027B908 80 05 05 FC */ lwz r0, 0x5fc(r5)
+/* 8027FCAC 0027B90C 60 00 00 08 */ ori r0, r0, 8
+/* 8027FCB0 0027B910 90 05 05 FC */ stw r0, 0x5fc(r5)
+/* 8027FCB4 0027B914 4E 80 00 20 */ blr
+
+.global GXSetVtxAttrFmt
+GXSetVtxAttrFmt:
+/* 8027FCB8 0027B918 38 04 FF F7 */ addi r0, r4, -9
+/* 8027FCBC 0027B91C 81 02 A0 D0 */ lwz r8, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FCC0 0027B920 28 00 00 10 */ cmplwi r0, 0x10
+/* 8027FCC4 0027B924 54 64 10 3A */ slwi r4, r3, 2
+/* 8027FCC8 0027B928 7D 08 22 14 */ add r8, r8, r4
+/* 8027FCCC 0027B92C 41 81 01 5C */ bgt lbl_8027FE28
+/* 8027FCD0 0027B930 3C 80 80 43 */ lis r4, lbl_80434E48@ha
+/* 8027FCD4 0027B934 54 00 10 3A */ slwi r0, r0, 2
+/* 8027FCD8 0027B938 38 84 4E 48 */ addi r4, r4, lbl_80434E48@l
+/* 8027FCDC 0027B93C 7C 84 00 2E */ lwzx r4, r4, r0
+/* 8027FCE0 0027B940 7C 89 03 A6 */ mtctr r4
+/* 8027FCE4 0027B944 4E 80 04 20 */ bctr
+/* 8027FCE8 0027B948 80 08 00 1C */ lwz r0, 0x1c(r8)
+/* 8027FCEC 0027B94C 50 A0 07 FE */ rlwimi r0, r5, 0, 0x1f, 0x1f
+/* 8027FCF0 0027B950 50 C0 0F 3C */ rlwimi r0, r6, 1, 0x1c, 0x1e
+/* 8027FCF4 0027B954 50 E0 25 F6 */ rlwimi r0, r7, 4, 0x17, 0x1b
+/* 8027FCF8 0027B958 90 08 00 1C */ stw r0, 0x1c(r8)
+/* 8027FCFC 0027B95C 48 00 01 2C */ b lbl_8027FE28
+/* 8027FD00 0027B960 80 08 00 1C */ lwz r0, 0x1c(r8)
+/* 8027FD04 0027B964 50 C0 54 EA */ rlwimi r0, r6, 0xa, 0x13, 0x15
+/* 8027FD08 0027B968 2C 05 00 02 */ cmpwi r5, 2
+/* 8027FD0C 0027B96C 90 08 00 1C */ stw r0, 0x1c(r8)
+/* 8027FD10 0027B970 40 82 00 18 */ bne lbl_8027FD28
+/* 8027FD14 0027B974 80 08 00 1C */ lwz r0, 0x1c(r8)
+/* 8027FD18 0027B978 60 00 02 00 */ ori r0, r0, 0x200
+/* 8027FD1C 0027B97C 64 00 80 00 */ oris r0, r0, 0x8000
+/* 8027FD20 0027B980 90 08 00 1C */ stw r0, 0x1c(r8)
+/* 8027FD24 0027B984 48 00 01 04 */ b lbl_8027FE28
+lbl_8027FD28:
+/* 8027FD28 0027B988 80 08 00 1C */ lwz r0, 0x1c(r8)
+/* 8027FD2C 0027B98C 50 A0 4D AC */ rlwimi r0, r5, 9, 0x16, 0x16
+/* 8027FD30 0027B990 54 00 00 7E */ clrlwi r0, r0, 1
+/* 8027FD34 0027B994 90 08 00 1C */ stw r0, 0x1c(r8)
+/* 8027FD38 0027B998 48 00 00 F0 */ b lbl_8027FE28
+/* 8027FD3C 0027B99C 80 08 00 1C */ lwz r0, 0x1c(r8)
+/* 8027FD40 0027B9A0 50 A0 6C A4 */ rlwimi r0, r5, 0xd, 0x12, 0x12
+/* 8027FD44 0027B9A4 50 C0 73 E2 */ rlwimi r0, r6, 0xe, 0xf, 0x11
+/* 8027FD48 0027B9A8 90 08 00 1C */ stw r0, 0x1c(r8)
+/* 8027FD4C 0027B9AC 48 00 00 DC */ b lbl_8027FE28
+/* 8027FD50 0027B9B0 80 08 00 1C */ lwz r0, 0x1c(r8)
+/* 8027FD54 0027B9B4 50 A0 8B 9C */ rlwimi r0, r5, 0x11, 0xe, 0xe
+/* 8027FD58 0027B9B8 50 C0 92 DA */ rlwimi r0, r6, 0x12, 0xb, 0xd
+/* 8027FD5C 0027B9BC 90 08 00 1C */ stw r0, 0x1c(r8)
+/* 8027FD60 0027B9C0 48 00 00 C8 */ b lbl_8027FE28
+/* 8027FD64 0027B9C4 80 08 00 1C */ lwz r0, 0x1c(r8)
+/* 8027FD68 0027B9C8 50 A0 AA 94 */ rlwimi r0, r5, 0x15, 0xa, 0xa
+/* 8027FD6C 0027B9CC 50 C0 B1 D2 */ rlwimi r0, r6, 0x16, 7, 9
+/* 8027FD70 0027B9D0 50 E0 C8 8C */ rlwimi r0, r7, 0x19, 2, 6
+/* 8027FD74 0027B9D4 90 08 00 1C */ stw r0, 0x1c(r8)
+/* 8027FD78 0027B9D8 48 00 00 B0 */ b lbl_8027FE28
+/* 8027FD7C 0027B9DC 80 08 00 3C */ lwz r0, 0x3c(r8)
+/* 8027FD80 0027B9E0 50 A0 07 FE */ rlwimi r0, r5, 0, 0x1f, 0x1f
+/* 8027FD84 0027B9E4 50 C0 0F 3C */ rlwimi r0, r6, 1, 0x1c, 0x1e
+/* 8027FD88 0027B9E8 50 E0 25 F6 */ rlwimi r0, r7, 4, 0x17, 0x1b
+/* 8027FD8C 0027B9EC 90 08 00 3C */ stw r0, 0x3c(r8)
+/* 8027FD90 0027B9F0 48 00 00 98 */ b lbl_8027FE28
+/* 8027FD94 0027B9F4 80 08 00 3C */ lwz r0, 0x3c(r8)
+/* 8027FD98 0027B9F8 50 A0 4D AC */ rlwimi r0, r5, 9, 0x16, 0x16
+/* 8027FD9C 0027B9FC 50 C0 54 EA */ rlwimi r0, r6, 0xa, 0x13, 0x15
+/* 8027FDA0 0027BA00 50 E0 6B A4 */ rlwimi r0, r7, 0xd, 0xe, 0x12
+/* 8027FDA4 0027BA04 90 08 00 3C */ stw r0, 0x3c(r8)
+/* 8027FDA8 0027BA08 48 00 00 80 */ b lbl_8027FE28
+/* 8027FDAC 0027BA0C 80 08 00 3C */ lwz r0, 0x3c(r8)
+/* 8027FDB0 0027BA10 50 A0 93 5A */ rlwimi r0, r5, 0x12, 0xd, 0xd
+/* 8027FDB4 0027BA14 50 C0 9A 98 */ rlwimi r0, r6, 0x13, 0xa, 0xc
+/* 8027FDB8 0027BA18 50 E0 B1 52 */ rlwimi r0, r7, 0x16, 5, 9
+/* 8027FDBC 0027BA1C 90 08 00 3C */ stw r0, 0x3c(r8)
+/* 8027FDC0 0027BA20 48 00 00 68 */ b lbl_8027FE28
+/* 8027FDC4 0027BA24 80 08 00 3C */ lwz r0, 0x3c(r8)
+/* 8027FDC8 0027BA28 50 A0 D9 08 */ rlwimi r0, r5, 0x1b, 4, 4
+/* 8027FDCC 0027BA2C 50 C0 E0 46 */ rlwimi r0, r6, 0x1c, 1, 3
+/* 8027FDD0 0027BA30 90 08 00 3C */ stw r0, 0x3c(r8)
+/* 8027FDD4 0027BA34 80 08 00 5C */ lwz r0, 0x5c(r8)
+/* 8027FDD8 0027BA38 50 E0 06 FE */ rlwimi r0, r7, 0, 0x1b, 0x1f
+/* 8027FDDC 0027BA3C 90 08 00 5C */ stw r0, 0x5c(r8)
+/* 8027FDE0 0027BA40 48 00 00 48 */ b lbl_8027FE28
+/* 8027FDE4 0027BA44 80 08 00 5C */ lwz r0, 0x5c(r8)
+/* 8027FDE8 0027BA48 50 A0 2E B4 */ rlwimi r0, r5, 5, 0x1a, 0x1a
+/* 8027FDEC 0027BA4C 50 C0 35 F2 */ rlwimi r0, r6, 6, 0x17, 0x19
+/* 8027FDF0 0027BA50 50 E0 4C AC */ rlwimi r0, r7, 9, 0x12, 0x16
+/* 8027FDF4 0027BA54 90 08 00 5C */ stw r0, 0x5c(r8)
+/* 8027FDF8 0027BA58 48 00 00 30 */ b lbl_8027FE28
+/* 8027FDFC 0027BA5C 80 08 00 5C */ lwz r0, 0x5c(r8)
+/* 8027FE00 0027BA60 50 A0 74 62 */ rlwimi r0, r5, 0xe, 0x11, 0x11
+/* 8027FE04 0027BA64 50 C0 7B A0 */ rlwimi r0, r6, 0xf, 0xe, 0x10
+/* 8027FE08 0027BA68 50 E0 92 5A */ rlwimi r0, r7, 0x12, 9, 0xd
+/* 8027FE0C 0027BA6C 90 08 00 5C */ stw r0, 0x5c(r8)
+/* 8027FE10 0027BA70 48 00 00 18 */ b lbl_8027FE28
+/* 8027FE14 0027BA74 80 08 00 5C */ lwz r0, 0x5c(r8)
+/* 8027FE18 0027BA78 50 A0 BA 10 */ rlwimi r0, r5, 0x17, 8, 8
+/* 8027FE1C 0027BA7C 50 C0 C1 4E */ rlwimi r0, r6, 0x18, 5, 7
+/* 8027FE20 0027BA80 50 E0 D8 08 */ rlwimi r0, r7, 0x1b, 0, 4
+/* 8027FE24 0027BA84 90 08 00 5C */ stw r0, 0x5c(r8)
+lbl_8027FE28:
+/* 8027FE28 0027BA88 80 A2 A0 D0 */ lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FE2C 0027BA8C 54 60 06 3E */ clrlwi r0, r3, 0x18
+/* 8027FE30 0027BA90 38 60 00 01 */ li r3, 1
+/* 8027FE34 0027BA94 80 85 05 FC */ lwz r4, 0x5fc(r5)
+/* 8027FE38 0027BA98 7C 60 00 30 */ slw r0, r3, r0
+/* 8027FE3C 0027BA9C 54 00 06 3E */ clrlwi r0, r0, 0x18
+/* 8027FE40 0027BAA0 60 83 00 10 */ ori r3, r4, 0x10
+/* 8027FE44 0027BAA4 90 65 05 FC */ stw r3, 0x5fc(r5)
+/* 8027FE48 0027BAA8 88 65 05 FB */ lbz r3, 0x5fb(r5)
+/* 8027FE4C 0027BAAC 7C 60 03 78 */ or r0, r3, r0
+/* 8027FE50 0027BAB0 98 05 05 FB */ stb r0, 0x5fb(r5)
+/* 8027FE54 0027BAB4 4E 80 00 20 */ blr
+
+.global GXSetVtxAttrFmtv
+GXSetVtxAttrFmtv:
+/* 8027FE58 0027BAB8 80 C2 A0 D0 */ lwz r6, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FE5C 0027BABC 54 60 10 3A */ slwi r0, r3, 2
+/* 8027FE60 0027BAC0 3C A0 80 43 */ lis r5, 0x8043
+/* 8027FE64 0027BAC4 7D 06 02 14 */ add r8, r6, r0
+/* 8027FE68 0027BAC8 48 00 01 78 */ b lbl_8027FFE0
+lbl_8027FE6C:
+/* 8027FE6C 0027BACC 80 C4 00 00 */ lwz r6, 0(r4)
+/* 8027FE70 0027BAD0 88 E4 00 0C */ lbz r7, 0xc(r4)
+/* 8027FE74 0027BAD4 38 06 FF F7 */ addi r0, r6, -9
+/* 8027FE78 0027BAD8 81 44 00 08 */ lwz r10, 8(r4)
+/* 8027FE7C 0027BADC 28 00 00 10 */ cmplwi r0, 0x10
+/* 8027FE80 0027BAE0 81 24 00 04 */ lwz r9, 4(r4)
+/* 8027FE84 0027BAE4 41 81 01 58 */ bgt lbl_8027FFDC
+/* 8027FE88 0027BAE8 38 C5 4E 8C */ addi r6, r5, 0x4e8c
+/* 8027FE8C 0027BAEC 54 00 10 3A */ slwi r0, r0, 2
+/* 8027FE90 0027BAF0 7C C6 00 2E */ lwzx r6, r6, r0
+/* 8027FE94 0027BAF4 7C C9 03 A6 */ mtctr r6
+/* 8027FE98 0027BAF8 4E 80 04 20 */ bctr
+/* 8027FE9C 0027BAFC 80 08 00 1C */ lwz r0, 0x1c(r8)
+/* 8027FEA0 0027BB00 51 20 07 FE */ rlwimi r0, r9, 0, 0x1f, 0x1f
+/* 8027FEA4 0027BB04 51 40 0F 3C */ rlwimi r0, r10, 1, 0x1c, 0x1e
+/* 8027FEA8 0027BB08 50 E0 25 F6 */ rlwimi r0, r7, 4, 0x17, 0x1b
+/* 8027FEAC 0027BB0C 90 08 00 1C */ stw r0, 0x1c(r8)
+/* 8027FEB0 0027BB10 48 00 01 2C */ b lbl_8027FFDC
+/* 8027FEB4 0027BB14 80 08 00 1C */ lwz r0, 0x1c(r8)
+/* 8027FEB8 0027BB18 51 40 54 EA */ rlwimi r0, r10, 0xa, 0x13, 0x15
+/* 8027FEBC 0027BB1C 2C 09 00 02 */ cmpwi r9, 2
+/* 8027FEC0 0027BB20 90 08 00 1C */ stw r0, 0x1c(r8)
+/* 8027FEC4 0027BB24 40 82 00 18 */ bne lbl_8027FEDC
+/* 8027FEC8 0027BB28 80 08 00 1C */ lwz r0, 0x1c(r8)
+/* 8027FECC 0027BB2C 60 00 02 00 */ ori r0, r0, 0x200
+/* 8027FED0 0027BB30 64 00 80 00 */ oris r0, r0, 0x8000
+/* 8027FED4 0027BB34 90 08 00 1C */ stw r0, 0x1c(r8)
+/* 8027FED8 0027BB38 48 00 01 04 */ b lbl_8027FFDC
+lbl_8027FEDC:
+/* 8027FEDC 0027BB3C 80 08 00 1C */ lwz r0, 0x1c(r8)
+/* 8027FEE0 0027BB40 51 20 4D AC */ rlwimi r0, r9, 9, 0x16, 0x16
+/* 8027FEE4 0027BB44 54 00 00 7E */ clrlwi r0, r0, 1
+/* 8027FEE8 0027BB48 90 08 00 1C */ stw r0, 0x1c(r8)
+/* 8027FEEC 0027BB4C 48 00 00 F0 */ b lbl_8027FFDC
+/* 8027FEF0 0027BB50 80 08 00 1C */ lwz r0, 0x1c(r8)
+/* 8027FEF4 0027BB54 51 20 6C A4 */ rlwimi r0, r9, 0xd, 0x12, 0x12
+/* 8027FEF8 0027BB58 51 40 73 E2 */ rlwimi r0, r10, 0xe, 0xf, 0x11
+/* 8027FEFC 0027BB5C 90 08 00 1C */ stw r0, 0x1c(r8)
+/* 8027FF00 0027BB60 48 00 00 DC */ b lbl_8027FFDC
+/* 8027FF04 0027BB64 80 08 00 1C */ lwz r0, 0x1c(r8)
+/* 8027FF08 0027BB68 51 20 8B 9C */ rlwimi r0, r9, 0x11, 0xe, 0xe
+/* 8027FF0C 0027BB6C 51 40 92 DA */ rlwimi r0, r10, 0x12, 0xb, 0xd
+/* 8027FF10 0027BB70 90 08 00 1C */ stw r0, 0x1c(r8)
+/* 8027FF14 0027BB74 48 00 00 C8 */ b lbl_8027FFDC
+/* 8027FF18 0027BB78 80 08 00 1C */ lwz r0, 0x1c(r8)
+/* 8027FF1C 0027BB7C 51 20 AA 94 */ rlwimi r0, r9, 0x15, 0xa, 0xa
+/* 8027FF20 0027BB80 51 40 B1 D2 */ rlwimi r0, r10, 0x16, 7, 9
+/* 8027FF24 0027BB84 50 E0 C8 8C */ rlwimi r0, r7, 0x19, 2, 6
+/* 8027FF28 0027BB88 90 08 00 1C */ stw r0, 0x1c(r8)
+/* 8027FF2C 0027BB8C 48 00 00 B0 */ b lbl_8027FFDC
+/* 8027FF30 0027BB90 80 08 00 3C */ lwz r0, 0x3c(r8)
+/* 8027FF34 0027BB94 51 20 07 FE */ rlwimi r0, r9, 0, 0x1f, 0x1f
+/* 8027FF38 0027BB98 51 40 0F 3C */ rlwimi r0, r10, 1, 0x1c, 0x1e
+/* 8027FF3C 0027BB9C 50 E0 25 F6 */ rlwimi r0, r7, 4, 0x17, 0x1b
+/* 8027FF40 0027BBA0 90 08 00 3C */ stw r0, 0x3c(r8)
+/* 8027FF44 0027BBA4 48 00 00 98 */ b lbl_8027FFDC
+/* 8027FF48 0027BBA8 80 08 00 3C */ lwz r0, 0x3c(r8)
+/* 8027FF4C 0027BBAC 51 20 4D AC */ rlwimi r0, r9, 9, 0x16, 0x16
+/* 8027FF50 0027BBB0 51 40 54 EA */ rlwimi r0, r10, 0xa, 0x13, 0x15
+/* 8027FF54 0027BBB4 50 E0 6B A4 */ rlwimi r0, r7, 0xd, 0xe, 0x12
+/* 8027FF58 0027BBB8 90 08 00 3C */ stw r0, 0x3c(r8)
+/* 8027FF5C 0027BBBC 48 00 00 80 */ b lbl_8027FFDC
+/* 8027FF60 0027BBC0 80 08 00 3C */ lwz r0, 0x3c(r8)
+/* 8027FF64 0027BBC4 51 20 93 5A */ rlwimi r0, r9, 0x12, 0xd, 0xd
+/* 8027FF68 0027BBC8 51 40 9A 98 */ rlwimi r0, r10, 0x13, 0xa, 0xc
+/* 8027FF6C 0027BBCC 50 E0 B1 52 */ rlwimi r0, r7, 0x16, 5, 9
+/* 8027FF70 0027BBD0 90 08 00 3C */ stw r0, 0x3c(r8)
+/* 8027FF74 0027BBD4 48 00 00 68 */ b lbl_8027FFDC
+/* 8027FF78 0027BBD8 80 08 00 3C */ lwz r0, 0x3c(r8)
+/* 8027FF7C 0027BBDC 51 20 D9 08 */ rlwimi r0, r9, 0x1b, 4, 4
+/* 8027FF80 0027BBE0 51 40 E0 46 */ rlwimi r0, r10, 0x1c, 1, 3
+/* 8027FF84 0027BBE4 90 08 00 3C */ stw r0, 0x3c(r8)
+/* 8027FF88 0027BBE8 80 08 00 5C */ lwz r0, 0x5c(r8)
+/* 8027FF8C 0027BBEC 50 E0 06 FE */ rlwimi r0, r7, 0, 0x1b, 0x1f
+/* 8027FF90 0027BBF0 90 08 00 5C */ stw r0, 0x5c(r8)
+/* 8027FF94 0027BBF4 48 00 00 48 */ b lbl_8027FFDC
+/* 8027FF98 0027BBF8 80 08 00 5C */ lwz r0, 0x5c(r8)
+/* 8027FF9C 0027BBFC 51 20 2E B4 */ rlwimi r0, r9, 5, 0x1a, 0x1a
+/* 8027FFA0 0027BC00 51 40 35 F2 */ rlwimi r0, r10, 6, 0x17, 0x19
+/* 8027FFA4 0027BC04 50 E0 4C AC */ rlwimi r0, r7, 9, 0x12, 0x16
+/* 8027FFA8 0027BC08 90 08 00 5C */ stw r0, 0x5c(r8)
+/* 8027FFAC 0027BC0C 48 00 00 30 */ b lbl_8027FFDC
+/* 8027FFB0 0027BC10 80 08 00 5C */ lwz r0, 0x5c(r8)
+/* 8027FFB4 0027BC14 51 20 74 62 */ rlwimi r0, r9, 0xe, 0x11, 0x11
+/* 8027FFB8 0027BC18 51 40 7B A0 */ rlwimi r0, r10, 0xf, 0xe, 0x10
+/* 8027FFBC 0027BC1C 50 E0 92 5A */ rlwimi r0, r7, 0x12, 9, 0xd
+/* 8027FFC0 0027BC20 90 08 00 5C */ stw r0, 0x5c(r8)
+/* 8027FFC4 0027BC24 48 00 00 18 */ b lbl_8027FFDC
+/* 8027FFC8 0027BC28 80 08 00 5C */ lwz r0, 0x5c(r8)
+/* 8027FFCC 0027BC2C 51 20 BA 10 */ rlwimi r0, r9, 0x17, 8, 8
+/* 8027FFD0 0027BC30 51 40 C1 4E */ rlwimi r0, r10, 0x18, 5, 7
+/* 8027FFD4 0027BC34 50 E0 D8 08 */ rlwimi r0, r7, 0x1b, 0, 4
+/* 8027FFD8 0027BC38 90 08 00 5C */ stw r0, 0x5c(r8)
+lbl_8027FFDC:
+/* 8027FFDC 0027BC3C 38 84 00 10 */ addi r4, r4, 0x10
+lbl_8027FFE0:
+/* 8027FFE0 0027BC40 80 04 00 00 */ lwz r0, 0(r4)
+/* 8027FFE4 0027BC44 2C 00 00 FF */ cmpwi r0, 0xff
+/* 8027FFE8 0027BC48 40 82 FE 84 */ bne lbl_8027FE6C
+/* 8027FFEC 0027BC4C 80 A2 A0 D0 */ lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027FFF0 0027BC50 54 60 06 3E */ clrlwi r0, r3, 0x18
+/* 8027FFF4 0027BC54 38 60 00 01 */ li r3, 1
+/* 8027FFF8 0027BC58 80 85 05 FC */ lwz r4, 0x5fc(r5)
+/* 8027FFFC 0027BC5C 7C 60 00 30 */ slw r0, r3, r0
+/* 80280000 0027BC60 54 00 06 3E */ clrlwi r0, r0, 0x18
+/* 80280004 0027BC64 60 83 00 10 */ ori r3, r4, 0x10
+/* 80280008 0027BC68 90 65 05 FC */ stw r3, 0x5fc(r5)
+/* 8028000C 0027BC6C 88 65 05 FB */ lbz r3, 0x5fb(r5)
+/* 80280010 0027BC70 7C 60 03 78 */ or r0, r3, r0
+/* 80280014 0027BC74 98 05 05 FB */ stb r0, 0x5fb(r5)
+/* 80280018 0027BC78 4E 80 00 20 */ blr
+
+.global __GXSetVAT
+__GXSetVAT:
+/* 8028001C 0027BC7C 81 02 A0 D0 */ lwz r8, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80280020 0027BC80 39 20 00 00 */ li r9, 0
+/* 80280024 0027BC84 38 C0 00 08 */ li r6, 8
+/* 80280028 0027BC88 3C A0 CC 01 */ lis r5, 0xcc01
+/* 8028002C 0027BC8C 89 48 05 FB */ lbz r10, 0x5fb(r8)
+/* 80280030 0027BC90 7D 07 43 78 */ mr r7, r8
+lbl_80280034:
+/* 80280034 0027BC94 55 40 07 FF */ clrlwi. r0, r10, 0x1f
+/* 80280038 0027BC98 41 82 00 40 */ beq lbl_80280078
+/* 8028003C 0027BC9C 98 C5 80 00 */ stb r6, -0x8000(r5)
+/* 80280040 0027BCA0 61 24 00 70 */ ori r4, r9, 0x70
+/* 80280044 0027BCA4 61 23 00 80 */ ori r3, r9, 0x80
+/* 80280048 0027BCA8 61 20 00 90 */ ori r0, r9, 0x90
+/* 8028004C 0027BCAC 98 85 80 00 */ stb r4, -0x8000(r5)
+/* 80280050 0027BCB0 80 87 00 1C */ lwz r4, 0x1c(r7)
+/* 80280054 0027BCB4 90 85 80 00 */ stw r4, -0x8000(r5)
+/* 80280058 0027BCB8 98 C5 80 00 */ stb r6, -0x8000(r5)
+/* 8028005C 0027BCBC 98 65 80 00 */ stb r3, -0x8000(r5)
+/* 80280060 0027BCC0 80 67 00 3C */ lwz r3, 0x3c(r7)
+/* 80280064 0027BCC4 90 65 80 00 */ stw r3, -0x8000(r5)
+/* 80280068 0027BCC8 98 C5 80 00 */ stb r6, -0x8000(r5)
+/* 8028006C 0027BCCC 98 05 80 00 */ stb r0, -0x8000(r5)
+/* 80280070 0027BCD0 80 07 00 5C */ lwz r0, 0x5c(r7)
+/* 80280074 0027BCD4 90 05 80 00 */ stw r0, -0x8000(r5)
+lbl_80280078:
+/* 80280078 0027BCD8 55 4A F8 7F */ rlwinm. r10, r10, 0x1f, 1, 0x1f
+/* 8028007C 0027BCDC 39 29 00 01 */ addi r9, r9, 1
+/* 80280080 0027BCE0 38 E7 00 04 */ addi r7, r7, 4
+/* 80280084 0027BCE4 40 82 FF B0 */ bne lbl_80280034
+/* 80280088 0027BCE8 38 00 00 00 */ li r0, 0
+/* 8028008C 0027BCEC 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80280090 0027BCF0 98 03 80 00 */ stb r0, 0xCC008000@l(r3)
+/* 80280094 0027BCF4 98 08 05 FB */ stb r0, 0x5fb(r8)
+/* 80280098 0027BCF8 4E 80 00 20 */ blr
+
+.global GXGetVtxAttrFmt
+GXGetVtxAttrFmt:
+/* 8028009C 0027BCFC 38 04 FF F7 */ addi r0, r4, -9
+/* 802800A0 0027BD00 80 82 A0 D0 */ lwz r4, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802800A4 0027BD04 28 00 00 10 */ cmplwi r0, 0x10
+/* 802800A8 0027BD08 54 63 10 3A */ slwi r3, r3, 2
+/* 802800AC 0027BD0C 7C 64 1A 14 */ add r3, r4, r3
+/* 802800B0 0027BD10 41 81 02 40 */ bgt lbl_802802F0
+/* 802800B4 0027BD14 3C 80 80 43 */ lis r4, lbl_80434ED0@ha
+/* 802800B8 0027BD18 54 00 10 3A */ slwi r0, r0, 2
+/* 802800BC 0027BD1C 38 84 4E D0 */ addi r4, r4, lbl_80434ED0@l
+/* 802800C0 0027BD20 7C 84 00 2E */ lwzx r4, r4, r0
+/* 802800C4 0027BD24 7C 89 03 A6 */ mtctr r4
+/* 802800C8 0027BD28 4E 80 04 20 */ bctr
+/* 802800CC 0027BD2C 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 802800D0 0027BD30 54 00 07 FE */ clrlwi r0, r0, 0x1f
+/* 802800D4 0027BD34 90 05 00 00 */ stw r0, 0(r5)
+/* 802800D8 0027BD38 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 802800DC 0027BD3C 54 00 FF 7E */ rlwinm r0, r0, 0x1f, 0x1d, 0x1f
+/* 802800E0 0027BD40 90 06 00 00 */ stw r0, 0(r6)
+/* 802800E4 0027BD44 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 802800E8 0027BD48 54 00 E6 FE */ rlwinm r0, r0, 0x1c, 0x1b, 0x1f
+/* 802800EC 0027BD4C 98 07 00 00 */ stb r0, 0(r7)
+/* 802800F0 0027BD50 4E 80 00 20 */ blr
+/* 802800F4 0027BD54 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 802800F8 0027BD58 54 00 BF FE */ rlwinm r0, r0, 0x17, 0x1f, 0x1f
+/* 802800FC 0027BD5C 2C 00 00 01 */ cmpwi r0, 1
+/* 80280100 0027BD60 90 05 00 00 */ stw r0, 0(r5)
+/* 80280104 0027BD64 40 82 00 18 */ bne lbl_8028011C
+/* 80280108 0027BD68 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8028010C 0027BD6C 54 00 0F FF */ rlwinm. r0, r0, 1, 0x1f, 0x1f
+/* 80280110 0027BD70 41 82 00 0C */ beq lbl_8028011C
+/* 80280114 0027BD74 38 00 00 02 */ li r0, 2
+/* 80280118 0027BD78 90 05 00 00 */ stw r0, 0(r5)
+lbl_8028011C:
+/* 8028011C 0027BD7C 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 80280120 0027BD80 54 00 B7 7E */ rlwinm r0, r0, 0x16, 0x1d, 0x1f
+/* 80280124 0027BD84 2C 00 00 02 */ cmpwi r0, 2
+/* 80280128 0027BD88 90 06 00 00 */ stw r0, 0(r6)
+/* 8028012C 0027BD8C 41 82 00 30 */ beq lbl_8028015C
+/* 80280130 0027BD90 40 80 00 10 */ bge lbl_80280140
+/* 80280134 0027BD94 2C 00 00 01 */ cmpwi r0, 1
+/* 80280138 0027BD98 40 80 00 14 */ bge lbl_8028014C
+/* 8028013C 0027BD9C 48 00 00 20 */ b lbl_8028015C
+lbl_80280140:
+/* 80280140 0027BDA0 2C 00 00 04 */ cmpwi r0, 4
+/* 80280144 0027BDA4 40 80 00 18 */ bge lbl_8028015C
+/* 80280148 0027BDA8 48 00 00 0C */ b lbl_80280154
+lbl_8028014C:
+/* 8028014C 0027BDAC 38 00 00 06 */ li r0, 6
+/* 80280150 0027BDB0 48 00 00 10 */ b lbl_80280160
+lbl_80280154:
+/* 80280154 0027BDB4 38 00 00 0E */ li r0, 0xe
+/* 80280158 0027BDB8 48 00 00 08 */ b lbl_80280160
+lbl_8028015C:
+/* 8028015C 0027BDBC 38 00 00 00 */ li r0, 0
+lbl_80280160:
+/* 80280160 0027BDC0 98 07 00 00 */ stb r0, 0(r7)
+/* 80280164 0027BDC4 4E 80 00 20 */ blr
+/* 80280168 0027BDC8 80 83 00 1C */ lwz r4, 0x1c(r3)
+/* 8028016C 0027BDCC 38 00 00 00 */ li r0, 0
+/* 80280170 0027BDD0 54 84 9F FE */ rlwinm r4, r4, 0x13, 0x1f, 0x1f
+/* 80280174 0027BDD4 90 85 00 00 */ stw r4, 0(r5)
+/* 80280178 0027BDD8 80 63 00 1C */ lwz r3, 0x1c(r3)
+/* 8028017C 0027BDDC 54 63 97 7E */ rlwinm r3, r3, 0x12, 0x1d, 0x1f
+/* 80280180 0027BDE0 90 66 00 00 */ stw r3, 0(r6)
+/* 80280184 0027BDE4 98 07 00 00 */ stb r0, 0(r7)
+/* 80280188 0027BDE8 4E 80 00 20 */ blr
+/* 8028018C 0027BDEC 80 83 00 1C */ lwz r4, 0x1c(r3)
+/* 80280190 0027BDF0 38 00 00 00 */ li r0, 0
+/* 80280194 0027BDF4 54 84 7F FE */ rlwinm r4, r4, 0xf, 0x1f, 0x1f
+/* 80280198 0027BDF8 90 85 00 00 */ stw r4, 0(r5)
+/* 8028019C 0027BDFC 80 63 00 1C */ lwz r3, 0x1c(r3)
+/* 802801A0 0027BE00 54 63 77 7E */ rlwinm r3, r3, 0xe, 0x1d, 0x1f
+/* 802801A4 0027BE04 90 66 00 00 */ stw r3, 0(r6)
+/* 802801A8 0027BE08 98 07 00 00 */ stb r0, 0(r7)
+/* 802801AC 0027BE0C 4E 80 00 20 */ blr
+/* 802801B0 0027BE10 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 802801B4 0027BE14 54 00 5F FE */ rlwinm r0, r0, 0xb, 0x1f, 0x1f
+/* 802801B8 0027BE18 90 05 00 00 */ stw r0, 0(r5)
+/* 802801BC 0027BE1C 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 802801C0 0027BE20 54 00 57 7E */ rlwinm r0, r0, 0xa, 0x1d, 0x1f
+/* 802801C4 0027BE24 90 06 00 00 */ stw r0, 0(r6)
+/* 802801C8 0027BE28 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 802801CC 0027BE2C 54 00 3E FE */ rlwinm r0, r0, 7, 0x1b, 0x1f
+/* 802801D0 0027BE30 98 07 00 00 */ stb r0, 0(r7)
+/* 802801D4 0027BE34 4E 80 00 20 */ blr
+/* 802801D8 0027BE38 80 03 00 3C */ lwz r0, 0x3c(r3)
+/* 802801DC 0027BE3C 54 00 07 FE */ clrlwi r0, r0, 0x1f
+/* 802801E0 0027BE40 90 05 00 00 */ stw r0, 0(r5)
+/* 802801E4 0027BE44 80 03 00 3C */ lwz r0, 0x3c(r3)
+/* 802801E8 0027BE48 54 00 FF 7E */ rlwinm r0, r0, 0x1f, 0x1d, 0x1f
+/* 802801EC 0027BE4C 90 06 00 00 */ stw r0, 0(r6)
+/* 802801F0 0027BE50 80 03 00 3C */ lwz r0, 0x3c(r3)
+/* 802801F4 0027BE54 54 00 E6 FE */ rlwinm r0, r0, 0x1c, 0x1b, 0x1f
+/* 802801F8 0027BE58 98 07 00 00 */ stb r0, 0(r7)
+/* 802801FC 0027BE5C 4E 80 00 20 */ blr
+/* 80280200 0027BE60 80 03 00 3C */ lwz r0, 0x3c(r3)
+/* 80280204 0027BE64 54 00 BF FE */ rlwinm r0, r0, 0x17, 0x1f, 0x1f
+/* 80280208 0027BE68 90 05 00 00 */ stw r0, 0(r5)
+/* 8028020C 0027BE6C 80 03 00 3C */ lwz r0, 0x3c(r3)
+/* 80280210 0027BE70 54 00 B7 7E */ rlwinm r0, r0, 0x16, 0x1d, 0x1f
+/* 80280214 0027BE74 90 06 00 00 */ stw r0, 0(r6)
+/* 80280218 0027BE78 80 03 00 3C */ lwz r0, 0x3c(r3)
+/* 8028021C 0027BE7C 54 00 9E FE */ rlwinm r0, r0, 0x13, 0x1b, 0x1f
+/* 80280220 0027BE80 98 07 00 00 */ stb r0, 0(r7)
+/* 80280224 0027BE84 4E 80 00 20 */ blr
+/* 80280228 0027BE88 80 03 00 3C */ lwz r0, 0x3c(r3)
+/* 8028022C 0027BE8C 54 00 77 FE */ rlwinm r0, r0, 0xe, 0x1f, 0x1f
+/* 80280230 0027BE90 90 05 00 00 */ stw r0, 0(r5)
+/* 80280234 0027BE94 80 03 00 3C */ lwz r0, 0x3c(r3)
+/* 80280238 0027BE98 54 00 6F 7E */ rlwinm r0, r0, 0xd, 0x1d, 0x1f
+/* 8028023C 0027BE9C 90 06 00 00 */ stw r0, 0(r6)
+/* 80280240 0027BEA0 80 03 00 3C */ lwz r0, 0x3c(r3)
+/* 80280244 0027BEA4 54 00 56 FE */ rlwinm r0, r0, 0xa, 0x1b, 0x1f
+/* 80280248 0027BEA8 98 07 00 00 */ stb r0, 0(r7)
+/* 8028024C 0027BEAC 4E 80 00 20 */ blr
+/* 80280250 0027BEB0 80 03 00 3C */ lwz r0, 0x3c(r3)
+/* 80280254 0027BEB4 54 00 2F FE */ rlwinm r0, r0, 5, 0x1f, 0x1f
+/* 80280258 0027BEB8 90 05 00 00 */ stw r0, 0(r5)
+/* 8028025C 0027BEBC 80 03 00 3C */ lwz r0, 0x3c(r3)
+/* 80280260 0027BEC0 54 00 27 7E */ rlwinm r0, r0, 4, 0x1d, 0x1f
+/* 80280264 0027BEC4 90 06 00 00 */ stw r0, 0(r6)
+/* 80280268 0027BEC8 80 03 00 5C */ lwz r0, 0x5c(r3)
+/* 8028026C 0027BECC 54 00 06 FE */ clrlwi r0, r0, 0x1b
+/* 80280270 0027BED0 98 07 00 00 */ stb r0, 0(r7)
+/* 80280274 0027BED4 4E 80 00 20 */ blr
+/* 80280278 0027BED8 80 03 00 5C */ lwz r0, 0x5c(r3)
+/* 8028027C 0027BEDC 54 00 DF FE */ rlwinm r0, r0, 0x1b, 0x1f, 0x1f
+/* 80280280 0027BEE0 90 05 00 00 */ stw r0, 0(r5)
+/* 80280284 0027BEE4 80 03 00 5C */ lwz r0, 0x5c(r3)
+/* 80280288 0027BEE8 54 00 D7 7E */ rlwinm r0, r0, 0x1a, 0x1d, 0x1f
+/* 8028028C 0027BEEC 90 06 00 00 */ stw r0, 0(r6)
+/* 80280290 0027BEF0 80 03 00 5C */ lwz r0, 0x5c(r3)
+/* 80280294 0027BEF4 54 00 BE FE */ rlwinm r0, r0, 0x17, 0x1b, 0x1f
+/* 80280298 0027BEF8 98 07 00 00 */ stb r0, 0(r7)
+/* 8028029C 0027BEFC 4E 80 00 20 */ blr
+/* 802802A0 0027BF00 80 03 00 5C */ lwz r0, 0x5c(r3)
+/* 802802A4 0027BF04 54 00 97 FE */ rlwinm r0, r0, 0x12, 0x1f, 0x1f
+/* 802802A8 0027BF08 90 05 00 00 */ stw r0, 0(r5)
+/* 802802AC 0027BF0C 80 03 00 5C */ lwz r0, 0x5c(r3)
+/* 802802B0 0027BF10 54 00 8F 7E */ rlwinm r0, r0, 0x11, 0x1d, 0x1f
+/* 802802B4 0027BF14 90 06 00 00 */ stw r0, 0(r6)
+/* 802802B8 0027BF18 80 03 00 5C */ lwz r0, 0x5c(r3)
+/* 802802BC 0027BF1C 54 00 76 FE */ rlwinm r0, r0, 0xe, 0x1b, 0x1f
+/* 802802C0 0027BF20 98 07 00 00 */ stb r0, 0(r7)
+/* 802802C4 0027BF24 4E 80 00 20 */ blr
+/* 802802C8 0027BF28 80 03 00 5C */ lwz r0, 0x5c(r3)
+/* 802802CC 0027BF2C 54 00 4F FE */ rlwinm r0, r0, 9, 0x1f, 0x1f
+/* 802802D0 0027BF30 90 05 00 00 */ stw r0, 0(r5)
+/* 802802D4 0027BF34 80 03 00 5C */ lwz r0, 0x5c(r3)
+/* 802802D8 0027BF38 54 00 47 7E */ rlwinm r0, r0, 8, 0x1d, 0x1f
+/* 802802DC 0027BF3C 90 06 00 00 */ stw r0, 0(r6)
+/* 802802E0 0027BF40 80 03 00 5C */ lwz r0, 0x5c(r3)
+/* 802802E4 0027BF44 54 00 2E FE */ srwi r0, r0, 0x1b
+/* 802802E8 0027BF48 98 07 00 00 */ stb r0, 0(r7)
+/* 802802EC 0027BF4C 4E 80 00 20 */ blr
+lbl_802802F0:
+/* 802802F0 0027BF50 38 60 00 01 */ li r3, 1
+/* 802802F4 0027BF54 38 00 00 00 */ li r0, 0
+/* 802802F8 0027BF58 90 65 00 00 */ stw r3, 0(r5)
+/* 802802FC 0027BF5C 90 06 00 00 */ stw r0, 0(r6)
+/* 80280300 0027BF60 98 07 00 00 */ stb r0, 0(r7)
+/* 80280304 0027BF64 4E 80 00 20 */ blr
+
+.global GXGetVtxAttrFmtv
+GXGetVtxAttrFmtv:
+/* 80280308 0027BF68 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8028030C 0027BF6C 7C 08 02 A6 */ mflr r0
+/* 80280310 0027BF70 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80280314 0027BF74 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80280318 0027BF78 3B E0 00 09 */ li r31, 9
+/* 8028031C 0027BF7C 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80280320 0027BF80 7C 9E 23 78 */ mr r30, r4
+/* 80280324 0027BF84 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 80280328 0027BF88 7C 7D 1B 78 */ mr r29, r3
+lbl_8028032C:
+/* 8028032C 0027BF8C 93 FE 00 00 */ stw r31, 0(r30)
+/* 80280330 0027BF90 7F A3 EB 78 */ mr r3, r29
+/* 80280334 0027BF94 7F E4 FB 78 */ mr r4, r31
+/* 80280338 0027BF98 38 BE 00 04 */ addi r5, r30, 4
+/* 8028033C 0027BF9C 38 DE 00 08 */ addi r6, r30, 8
+/* 80280340 0027BFA0 38 FE 00 0C */ addi r7, r30, 0xc
+/* 80280344 0027BFA4 4B FF FD 59 */ bl GXGetVtxAttrFmt
+/* 80280348 0027BFA8 3B FF 00 01 */ addi r31, r31, 1
+/* 8028034C 0027BFAC 3B DE 00 10 */ addi r30, r30, 0x10
+/* 80280350 0027BFB0 2C 1F 00 14 */ cmpwi r31, 0x14
+/* 80280354 0027BFB4 40 81 FF D8 */ ble lbl_8028032C
+/* 80280358 0027BFB8 38 00 00 FF */ li r0, 0xff
+/* 8028035C 0027BFBC 90 1E 00 00 */ stw r0, 0(r30)
+/* 80280360 0027BFC0 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80280364 0027BFC4 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 80280368 0027BFC8 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8028036C 0027BFCC 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80280370 0027BFD0 7C 08 03 A6 */ mtlr r0
+/* 80280374 0027BFD4 38 21 00 20 */ addi r1, r1, 0x20
+/* 80280378 0027BFD8 4E 80 00 20 */ blr
+
+.global GXSetArray
+GXSetArray:
+/* 8028037C 0027BFDC 2C 03 00 19 */ cmpwi r3, 0x19
+/* 80280380 0027BFE0 40 82 00 08 */ bne lbl_80280388
+/* 80280384 0027BFE4 38 60 00 0A */ li r3, 0xa
+lbl_80280388:
+/* 80280388 0027BFE8 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 8028038C 0027BFEC 38 E0 00 08 */ li r7, 8
+/* 80280390 0027BFF0 39 03 FF F7 */ addi r8, r3, -9
+/* 80280394 0027BFF4 98 E6 80 00 */ stb r7, 0xCC008000@l(r6)
+/* 80280398 0027BFF8 61 00 00 A0 */ ori r0, r8, 0xa0
+/* 8028039C 0027BFFC 54 83 00 BE */ clrlwi r3, r4, 2
+/* 802803A0 0027C000 98 06 80 00 */ stb r0, -0x8000(r6)
+/* 802803A4 0027C004 61 00 00 B0 */ ori r0, r8, 0xb0
+/* 802803A8 0027C008 90 66 80 00 */ stw r3, -0x8000(r6)
+/* 802803AC 0027C00C 98 E6 80 00 */ stb r7, -0x8000(r6)
+/* 802803B0 0027C010 98 06 80 00 */ stb r0, -0x8000(r6)
+/* 802803B4 0027C014 90 A6 80 00 */ stw r5, -0x8000(r6)
+/* 802803B8 0027C018 4E 80 00 20 */ blr
+
+.global GXInvalidateVtxCache
+GXInvalidateVtxCache:
+/* 802803BC 0027C01C 38 00 00 48 */ li r0, 0x48
+/* 802803C0 0027C020 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 802803C4 0027C024 98 03 80 00 */ stb r0, 0xCC008000@l(r3)
+/* 802803C8 0027C028 4E 80 00 20 */ blr
+
+.global GXSetTexCoordGen2
+GXSetTexCoordGen2:
+/* 802803CC 0027C02C 28 05 00 14 */ cmplwi r5, 0x14
+/* 802803D0 0027C030 39 60 00 00 */ li r11, 0
+/* 802803D4 0027C034 39 80 00 00 */ li r12, 0
+/* 802803D8 0027C038 39 40 00 05 */ li r10, 5
+/* 802803DC 0027C03C 41 81 00 98 */ bgt lbl_80280474
+/* 802803E0 0027C040 3D 20 80 43 */ lis r9, lbl_80434F30@ha
+/* 802803E4 0027C044 54 A0 10 3A */ slwi r0, r5, 2
+/* 802803E8 0027C048 39 29 4F 30 */ addi r9, r9, lbl_80434F30@l
+/* 802803EC 0027C04C 7D 29 00 2E */ lwzx r9, r9, r0
+/* 802803F0 0027C050 7D 29 03 A6 */ mtctr r9
+/* 802803F4 0027C054 4E 80 04 20 */ bctr
+/* 802803F8 0027C058 39 40 00 00 */ li r10, 0
+/* 802803FC 0027C05C 39 80 00 01 */ li r12, 1
+/* 80280400 0027C060 48 00 00 74 */ b lbl_80280474
+/* 80280404 0027C064 39 40 00 01 */ li r10, 1
+/* 80280408 0027C068 39 80 00 01 */ li r12, 1
+/* 8028040C 0027C06C 48 00 00 68 */ b lbl_80280474
+/* 80280410 0027C070 39 40 00 03 */ li r10, 3
+/* 80280414 0027C074 39 80 00 01 */ li r12, 1
+/* 80280418 0027C078 48 00 00 5C */ b lbl_80280474
+/* 8028041C 0027C07C 39 40 00 04 */ li r10, 4
+/* 80280420 0027C080 39 80 00 01 */ li r12, 1
+/* 80280424 0027C084 48 00 00 50 */ b lbl_80280474
+/* 80280428 0027C088 39 40 00 02 */ li r10, 2
+/* 8028042C 0027C08C 48 00 00 48 */ b lbl_80280474
+/* 80280430 0027C090 39 40 00 02 */ li r10, 2
+/* 80280434 0027C094 48 00 00 40 */ b lbl_80280474
+/* 80280438 0027C098 39 40 00 05 */ li r10, 5
+/* 8028043C 0027C09C 48 00 00 38 */ b lbl_80280474
+/* 80280440 0027C0A0 39 40 00 06 */ li r10, 6
+/* 80280444 0027C0A4 48 00 00 30 */ b lbl_80280474
+/* 80280448 0027C0A8 39 40 00 07 */ li r10, 7
+/* 8028044C 0027C0AC 48 00 00 28 */ b lbl_80280474
+/* 80280450 0027C0B0 39 40 00 08 */ li r10, 8
+/* 80280454 0027C0B4 48 00 00 20 */ b lbl_80280474
+/* 80280458 0027C0B8 39 40 00 09 */ li r10, 9
+/* 8028045C 0027C0BC 48 00 00 18 */ b lbl_80280474
+/* 80280460 0027C0C0 39 40 00 0A */ li r10, 0xa
+/* 80280464 0027C0C4 48 00 00 10 */ b lbl_80280474
+/* 80280468 0027C0C8 39 40 00 0B */ li r10, 0xb
+/* 8028046C 0027C0CC 48 00 00 08 */ b lbl_80280474
+/* 80280470 0027C0D0 39 40 00 0C */ li r10, 0xc
+lbl_80280474:
+/* 80280474 0027C0D4 2C 04 00 01 */ cmpwi r4, 1
+/* 80280478 0027C0D8 41 82 00 24 */ beq lbl_8028049C
+/* 8028047C 0027C0DC 40 80 00 10 */ bge lbl_8028048C
+/* 80280480 0027C0E0 2C 04 00 00 */ cmpwi r4, 0
+/* 80280484 0027C0E4 40 80 00 28 */ bge lbl_802804AC
+/* 80280488 0027C0E8 48 00 00 8C */ b lbl_80280514
+lbl_8028048C:
+/* 8028048C 0027C0EC 2C 04 00 0A */ cmpwi r4, 0xa
+/* 80280490 0027C0F0 41 82 00 58 */ beq lbl_802804E8
+/* 80280494 0027C0F4 40 80 00 80 */ bge lbl_80280514
+/* 80280498 0027C0F8 48 00 00 28 */ b lbl_802804C0
+lbl_8028049C:
+/* 8028049C 0027C0FC 39 60 00 00 */ li r11, 0
+/* 802804A0 0027C100 51 8B 17 7A */ rlwimi r11, r12, 2, 0x1d, 0x1d
+/* 802804A4 0027C104 51 4B 3D 30 */ rlwimi r11, r10, 7, 0x14, 0x18
+/* 802804A8 0027C108 48 00 00 6C */ b lbl_80280514
+lbl_802804AC:
+/* 802804AC 0027C10C 38 00 00 00 */ li r0, 0
+/* 802804B0 0027C110 60 0B 00 02 */ ori r11, r0, 2
+/* 802804B4 0027C114 51 8B 17 7A */ rlwimi r11, r12, 2, 0x1d, 0x1d
+/* 802804B8 0027C118 51 4B 3D 30 */ rlwimi r11, r10, 7, 0x14, 0x18
+/* 802804BC 0027C11C 48 00 00 58 */ b lbl_80280514
+lbl_802804C0:
+/* 802804C0 0027C120 39 20 00 01 */ li r9, 1
+/* 802804C4 0027C124 38 A5 FF F4 */ addi r5, r5, -12
+/* 802804C8 0027C128 39 60 00 00 */ li r11, 0
+/* 802804CC 0027C12C 38 04 FF FE */ addi r0, r4, -2
+/* 802804D0 0027C130 51 8B 17 7A */ rlwimi r11, r12, 2, 0x1d, 0x1d
+/* 802804D4 0027C134 51 2B 26 76 */ rlwimi r11, r9, 4, 0x19, 0x1b
+/* 802804D8 0027C138 51 4B 3D 30 */ rlwimi r11, r10, 7, 0x14, 0x18
+/* 802804DC 0027C13C 50 AB 64 66 */ rlwimi r11, r5, 0xc, 0x11, 0x13
+/* 802804E0 0027C140 50 0B 7B A0 */ rlwimi r11, r0, 0xf, 0xe, 0x10
+/* 802804E4 0027C144 48 00 00 30 */ b lbl_80280514
+lbl_802804E8:
+/* 802804E8 0027C148 2C 05 00 13 */ cmpwi r5, 0x13
+/* 802804EC 0027C14C 39 60 00 00 */ li r11, 0
+/* 802804F0 0027C150 51 8B 17 7A */ rlwimi r11, r12, 2, 0x1d, 0x1d
+/* 802804F4 0027C154 40 82 00 10 */ bne lbl_80280504
+/* 802804F8 0027C158 38 00 00 02 */ li r0, 2
+/* 802804FC 0027C15C 50 0B 26 76 */ rlwimi r11, r0, 4, 0x19, 0x1b
+/* 80280500 0027C160 48 00 00 0C */ b lbl_8028050C
+lbl_80280504:
+/* 80280504 0027C164 38 00 00 03 */ li r0, 3
+/* 80280508 0027C168 50 0B 26 76 */ rlwimi r11, r0, 4, 0x19, 0x1b
+lbl_8028050C:
+/* 8028050C 0027C16C 38 00 00 02 */ li r0, 2
+/* 80280510 0027C170 50 0B 3D 30 */ rlwimi r11, r0, 7, 0x14, 0x18
+lbl_80280514:
+/* 80280514 0027C174 81 42 A0 D0 */ lwz r10, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80280518 0027C178 54 69 10 3A */ slwi r9, r3, 2
+/* 8028051C 0027C17C 38 08 FF C0 */ addi r0, r8, -64
+/* 80280520 0027C180 38 80 00 00 */ li r4, 0
+/* 80280524 0027C184 7D 0A 4A 14 */ add r8, r10, r9
+/* 80280528 0027C188 3C A0 00 01 */ lis r5, 1
+/* 8028052C 0027C18C 91 68 00 C8 */ stw r11, 0xc8(r8)
+/* 80280530 0027C190 50 04 06 BE */ rlwimi r4, r0, 0, 0x1a, 0x1f
+/* 80280534 0027C194 7C A0 18 30 */ slw r0, r5, r3
+/* 80280538 0027C198 28 03 00 06 */ cmplwi r3, 6
+/* 8028053C 0027C19C 80 AA 05 FC */ lwz r5, 0x5fc(r10)
+/* 80280540 0027C1A0 50 E4 45 EE */ rlwimi r4, r7, 8, 0x17, 0x17
+/* 80280544 0027C1A4 7C A0 03 78 */ or r0, r5, r0
+/* 80280548 0027C1A8 90 0A 05 FC */ stw r0, 0x5fc(r10)
+/* 8028054C 0027C1AC 90 88 00 E8 */ stw r4, 0xe8(r8)
+/* 80280550 0027C1B0 41 81 00 88 */ bgt lbl_802805D8
+/* 80280554 0027C1B4 3C 60 80 43 */ lis r3, lbl_80434F14@ha
+/* 80280558 0027C1B8 38 63 4F 14 */ addi r3, r3, lbl_80434F14@l
+/* 8028055C 0027C1BC 7C 63 48 2E */ lwzx r3, r3, r9
+/* 80280560 0027C1C0 7C 69 03 A6 */ mtctr r3
+/* 80280564 0027C1C4 4E 80 04 20 */ bctr
+/* 80280568 0027C1C8 80 0A 00 80 */ lwz r0, 0x80(r10)
+/* 8028056C 0027C1CC 50 C0 35 32 */ rlwimi r0, r6, 6, 0x14, 0x19
+/* 80280570 0027C1D0 90 0A 00 80 */ stw r0, 0x80(r10)
+/* 80280574 0027C1D4 48 00 00 70 */ b lbl_802805E4
+/* 80280578 0027C1D8 80 0A 00 80 */ lwz r0, 0x80(r10)
+/* 8028057C 0027C1DC 50 C0 63 A6 */ rlwimi r0, r6, 0xc, 0xe, 0x13
+/* 80280580 0027C1E0 90 0A 00 80 */ stw r0, 0x80(r10)
+/* 80280584 0027C1E4 48 00 00 60 */ b lbl_802805E4
+/* 80280588 0027C1E8 80 0A 00 80 */ lwz r0, 0x80(r10)
+/* 8028058C 0027C1EC 50 C0 92 1A */ rlwimi r0, r6, 0x12, 8, 0xd
+/* 80280590 0027C1F0 90 0A 00 80 */ stw r0, 0x80(r10)
+/* 80280594 0027C1F4 48 00 00 50 */ b lbl_802805E4
+/* 80280598 0027C1F8 80 0A 00 80 */ lwz r0, 0x80(r10)
+/* 8028059C 0027C1FC 50 C0 C0 8E */ rlwimi r0, r6, 0x18, 2, 7
+/* 802805A0 0027C200 90 0A 00 80 */ stw r0, 0x80(r10)
+/* 802805A4 0027C204 48 00 00 40 */ b lbl_802805E4
+/* 802805A8 0027C208 80 0A 00 84 */ lwz r0, 0x84(r10)
+/* 802805AC 0027C20C 50 C0 06 BE */ rlwimi r0, r6, 0, 0x1a, 0x1f
+/* 802805B0 0027C210 90 0A 00 84 */ stw r0, 0x84(r10)
+/* 802805B4 0027C214 48 00 00 30 */ b lbl_802805E4
+/* 802805B8 0027C218 80 0A 00 84 */ lwz r0, 0x84(r10)
+/* 802805BC 0027C21C 50 C0 35 32 */ rlwimi r0, r6, 6, 0x14, 0x19
+/* 802805C0 0027C220 90 0A 00 84 */ stw r0, 0x84(r10)
+/* 802805C4 0027C224 48 00 00 20 */ b lbl_802805E4
+/* 802805C8 0027C228 80 0A 00 84 */ lwz r0, 0x84(r10)
+/* 802805CC 0027C22C 50 C0 63 A6 */ rlwimi r0, r6, 0xc, 0xe, 0x13
+/* 802805D0 0027C230 90 0A 00 84 */ stw r0, 0x84(r10)
+/* 802805D4 0027C234 48 00 00 10 */ b lbl_802805E4
+lbl_802805D8:
+/* 802805D8 0027C238 80 0A 00 84 */ lwz r0, 0x84(r10)
+/* 802805DC 0027C23C 50 C0 92 1A */ rlwimi r0, r6, 0x12, 8, 0xd
+/* 802805E0 0027C240 90 0A 00 84 */ stw r0, 0x84(r10)
+lbl_802805E4:
+/* 802805E4 0027C244 80 0A 05 FC */ lwz r0, 0x5fc(r10)
+/* 802805E8 0027C248 64 00 04 00 */ oris r0, r0, 0x400
+/* 802805EC 0027C24C 90 0A 05 FC */ stw r0, 0x5fc(r10)
+/* 802805F0 0027C250 4E 80 00 20 */ blr
+
+.global GXSetNumTexGens
+GXSetNumTexGens:
+/* 802805F4 0027C254 80 82 A0 D0 */ lwz r4, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802805F8 0027C258 80 04 02 54 */ lwz r0, 0x254(r4)
+/* 802805FC 0027C25C 50 60 07 3E */ rlwimi r0, r3, 0, 0x1c, 0x1f
+/* 80280600 0027C260 90 04 02 54 */ stw r0, 0x254(r4)
+/* 80280604 0027C264 80 04 05 FC */ lwz r0, 0x5fc(r4)
+/* 80280608 0027C268 64 00 02 00 */ oris r0, r0, 0x200
+/* 8028060C 0027C26C 60 00 00 04 */ ori r0, r0, 4
+/* 80280610 0027C270 90 04 05 FC */ stw r0, 0x5fc(r4)
+/* 80280614 0027C274 4E 80 00 20 */ blr
diff --git a/asm/SDK/GX/GXBump.s b/asm/SDK/GX/GXBump.s
new file mode 100644
index 0000000..598cdfe
--- /dev/null
+++ b/asm/SDK/GX/GXBump.s
@@ -0,0 +1,591 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global GXSetTevIndirect
+GXSetTevIndirect:
+/* 80283364 0027EFC4 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80283368 0027EFC8 39 80 00 00 */ li r12, 0
+/* 8028336C 0027EFCC 50 8C 07 BE */ rlwimi r12, r4, 0, 0x1e, 0x1f
+/* 80283370 0027EFD0 38 83 00 10 */ addi r4, r3, 0x10
+/* 80283374 0027EFD4 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80283378 0027EFD8 50 AC 17 3A */ rlwimi r12, r5, 2, 0x1c, 0x1d
+/* 8028337C 0027EFDC 3D 60 CC 01 */ lis r11, 0xCC008000@ha
+/* 80283380 0027EFE0 38 00 00 61 */ li r0, 0x61
+/* 80283384 0027EFE4 98 0B 80 00 */ stb r0, 0xCC008000@l(r11)
+/* 80283388 0027EFE8 50 CC 26 76 */ rlwimi r12, r6, 4, 0x19, 0x1b
+/* 8028338C 0027EFEC 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80283390 0027EFF0 38 00 00 00 */ li r0, 0
+/* 80283394 0027EFF4 88 A1 00 1B */ lbz r5, 0x1b(r1)
+/* 80283398 0027EFF8 53 EC 3D F0 */ rlwimi r12, r31, 7, 0x17, 0x18
+/* 8028339C 0027EFFC 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802833A0 0027F000 50 EC 4C EC */ rlwimi r12, r7, 9, 0x13, 0x16
+/* 802833A4 0027F004 51 0C 6C 24 */ rlwimi r12, r8, 0xd, 0x10, 0x12
+/* 802833A8 0027F008 51 2C 83 5E */ rlwimi r12, r9, 0x10, 0xd, 0xf
+/* 802833AC 0027F00C 50 AC 9B 18 */ rlwimi r12, r5, 0x13, 0xc, 0xc
+/* 802833B0 0027F010 51 4C A2 D6 */ rlwimi r12, r10, 0x14, 0xb, 0xb
+/* 802833B4 0027F014 50 8C C0 0E */ rlwimi r12, r4, 0x18, 0, 7
+/* 802833B8 0027F018 91 8B 80 00 */ stw r12, -0x8000(r11)
+/* 802833BC 0027F01C B0 03 00 02 */ sth r0, 2(r3)
+/* 802833C0 0027F020 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802833C4 0027F024 38 21 00 10 */ addi r1, r1, 0x10
+/* 802833C8 0027F028 4E 80 00 20 */ blr
+
+.global GXSetIndTexMtx
+GXSetIndTexMtx:
+/* 802833CC 0027F02C 2C 03 00 08 */ cmpwi r3, 8
+/* 802833D0 0027F030 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 802833D4 0027F034 41 82 00 44 */ beq lbl_80283418
+/* 802833D8 0027F038 40 80 00 1C */ bge lbl_802833F4
+/* 802833DC 0027F03C 2C 03 00 04 */ cmpwi r3, 4
+/* 802833E0 0027F040 41 82 00 38 */ beq lbl_80283418
+/* 802833E4 0027F044 40 80 00 24 */ bge lbl_80283408
+/* 802833E8 0027F048 2C 03 00 01 */ cmpwi r3, 1
+/* 802833EC 0027F04C 40 80 00 14 */ bge lbl_80283400
+/* 802833F0 0027F050 48 00 00 28 */ b lbl_80283418
+lbl_802833F4:
+/* 802833F4 0027F054 2C 03 00 0C */ cmpwi r3, 0xc
+/* 802833F8 0027F058 40 80 00 20 */ bge lbl_80283418
+/* 802833FC 0027F05C 48 00 00 14 */ b lbl_80283410
+lbl_80283400:
+/* 80283400 0027F060 38 63 FF FF */ addi r3, r3, -1
+/* 80283404 0027F064 48 00 00 18 */ b lbl_8028341C
+lbl_80283408:
+/* 80283408 0027F068 38 63 FF FB */ addi r3, r3, -5
+/* 8028340C 0027F06C 48 00 00 10 */ b lbl_8028341C
+lbl_80283410:
+/* 80283410 0027F070 38 63 FF F7 */ addi r3, r3, -9
+/* 80283414 0027F074 48 00 00 08 */ b lbl_8028341C
+lbl_80283418:
+/* 80283418 0027F078 38 60 00 00 */ li r3, 0
+lbl_8028341C:
+/* 8028341C 0027F07C C0 C2 A1 68 */ lfs f6, lbl_80642768-_SDA2_BASE_(r2)
+/* 80283420 0027F080 54 60 10 3A */ slwi r0, r3, 2
+/* 80283424 0027F084 C0 24 00 00 */ lfs f1, 0(r4)
+/* 80283428 0027F088 7D 23 00 50 */ subf r9, r3, r0
+/* 8028342C 0027F08C C0 04 00 0C */ lfs f0, 0xc(r4)
+/* 80283430 0027F090 39 05 00 11 */ addi r8, r5, 0x11
+/* 80283434 0027F094 EC 26 00 72 */ fmuls f1, f6, f1
+/* 80283438 0027F098 C0 64 00 04 */ lfs f3, 4(r4)
+/* 8028343C 0027F09C EC 06 00 32 */ fmuls f0, f6, f0
+/* 80283440 0027F0A0 C0 44 00 10 */ lfs f2, 0x10(r4)
+/* 80283444 0027F0A4 EC 66 00 F2 */ fmuls f3, f6, f3
+/* 80283448 0027F0A8 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 8028344C 0027F0AC FC A0 08 1E */ fctiwz f5, f1
+/* 80283450 0027F0B0 C0 24 00 08 */ lfs f1, 8(r4)
+/* 80283454 0027F0B4 FC 80 00 1E */ fctiwz f4, f0
+/* 80283458 0027F0B8 C0 04 00 14 */ lfs f0, 0x14(r4)
+/* 8028345C 0027F0BC EC 46 00 B2 */ fmuls f2, f6, f2
+/* 80283460 0027F0C0 38 E0 00 61 */ li r7, 0x61
+/* 80283464 0027F0C4 D8 A1 00 08 */ stfd f5, 8(r1)
+/* 80283468 0027F0C8 FC 60 18 1E */ fctiwz f3, f3
+/* 8028346C 0027F0CC EC 26 00 72 */ fmuls f1, f6, f1
+/* 80283470 0027F0D0 38 A0 00 00 */ li r5, 0
+/* 80283474 0027F0D4 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 80283478 0027F0D8 FC 40 10 1E */ fctiwz f2, f2
+/* 8028347C 0027F0DC EC 06 00 32 */ fmuls f0, f6, f0
+/* 80283480 0027F0E0 FC 20 08 1E */ fctiwz f1, f1
+/* 80283484 0027F0E4 D8 81 00 10 */ stfd f4, 0x10(r1)
+/* 80283488 0027F0E8 50 05 05 7E */ rlwimi r5, r0, 0, 0x15, 0x1f
+/* 8028348C 0027F0EC FC 00 00 1E */ fctiwz f0, f0
+/* 80283490 0027F0F0 38 69 00 06 */ addi r3, r9, 6
+/* 80283494 0027F0F4 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80283498 0027F0F8 D8 61 00 18 */ stfd f3, 0x18(r1)
+/* 8028349C 0027F0FC 38 80 00 00 */ li r4, 0
+/* 802834A0 0027F100 50 05 5A A8 */ rlwimi r5, r0, 0xb, 0xa, 0x14
+/* 802834A4 0027F104 80 01 00 1C */ lwz r0, 0x1c(r1)
+/* 802834A8 0027F108 51 05 B2 12 */ rlwimi r5, r8, 0x16, 8, 9
+/* 802834AC 0027F10C 50 65 C0 0E */ rlwimi r5, r3, 0x18, 0, 7
+/* 802834B0 0027F110 98 E6 80 00 */ stb r7, 0xCC008000@l(r6)
+/* 802834B4 0027F114 50 04 05 7E */ rlwimi r4, r0, 0, 0x15, 0x1f
+/* 802834B8 0027F118 38 69 00 07 */ addi r3, r9, 7
+/* 802834BC 0027F11C 90 A6 80 00 */ stw r5, -0x8000(r6)
+/* 802834C0 0027F120 38 A0 00 00 */ li r5, 0
+/* 802834C4 0027F124 D8 41 00 20 */ stfd f2, 0x20(r1)
+/* 802834C8 0027F128 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802834CC 0027F12C D8 21 00 28 */ stfd f1, 0x28(r1)
+/* 802834D0 0027F130 50 04 5A A8 */ rlwimi r4, r0, 0xb, 0xa, 0x14
+/* 802834D4 0027F134 80 01 00 2C */ lwz r0, 0x2c(r1)
+/* 802834D8 0027F138 51 04 A2 12 */ rlwimi r4, r8, 0x14, 8, 9
+/* 802834DC 0027F13C 50 64 C0 0E */ rlwimi r4, r3, 0x18, 0, 7
+/* 802834E0 0027F140 98 E6 80 00 */ stb r7, -0x8000(r6)
+/* 802834E4 0027F144 50 05 05 7E */ rlwimi r5, r0, 0, 0x15, 0x1f
+/* 802834E8 0027F148 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802834EC 0027F14C 90 86 80 00 */ stw r4, -0x8000(r6)
+/* 802834F0 0027F150 38 89 00 08 */ addi r4, r9, 8
+/* 802834F4 0027F154 D8 01 00 30 */ stfd f0, 0x30(r1)
+/* 802834F8 0027F158 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 802834FC 0027F15C 98 E6 80 00 */ stb r7, -0x8000(r6)
+/* 80283500 0027F160 50 05 5A A8 */ rlwimi r5, r0, 0xb, 0xa, 0x14
+/* 80283504 0027F164 38 00 00 00 */ li r0, 0
+/* 80283508 0027F168 51 05 92 12 */ rlwimi r5, r8, 0x12, 8, 9
+/* 8028350C 0027F16C 50 85 C0 0E */ rlwimi r5, r4, 0x18, 0, 7
+/* 80283510 0027F170 90 A6 80 00 */ stw r5, -0x8000(r6)
+/* 80283514 0027F174 B0 03 00 02 */ sth r0, 2(r3)
+/* 80283518 0027F178 38 21 00 40 */ addi r1, r1, 0x40
+/* 8028351C 0027F17C 4E 80 00 20 */ blr
+
+.global GXSetIndTexCoordScale
+GXSetIndTexCoordScale:
+/* 80283520 0027F180 2C 03 00 02 */ cmpwi r3, 2
+/* 80283524 0027F184 41 82 00 8C */ beq lbl_802835B0
+/* 80283528 0027F188 40 80 00 14 */ bge lbl_8028353C
+/* 8028352C 0027F18C 2C 03 00 00 */ cmpwi r3, 0
+/* 80283530 0027F190 41 82 00 18 */ beq lbl_80283548
+/* 80283534 0027F194 40 80 00 48 */ bge lbl_8028357C
+/* 80283538 0027F198 48 00 00 DC */ b lbl_80283614
+lbl_8028353C:
+/* 8028353C 0027F19C 2C 03 00 04 */ cmpwi r3, 4
+/* 80283540 0027F1A0 40 80 00 D4 */ bge lbl_80283614
+/* 80283544 0027F1A4 48 00 00 A0 */ b lbl_802835E4
+lbl_80283548:
+/* 80283548 0027F1A8 81 02 A0 D0 */ lwz r8, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8028354C 0027F1AC 38 C0 00 25 */ li r6, 0x25
+/* 80283550 0027F1B0 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80283554 0027F1B4 38 00 00 61 */ li r0, 0x61
+/* 80283558 0027F1B8 80 E8 01 78 */ lwz r7, 0x178(r8)
+/* 8028355C 0027F1BC 50 87 07 3E */ rlwimi r7, r4, 0, 0x1c, 0x1f
+/* 80283560 0027F1C0 50 A7 26 36 */ rlwimi r7, r5, 4, 0x18, 0x1b
+/* 80283564 0027F1C4 50 C7 C0 0E */ rlwimi r7, r6, 0x18, 0, 7
+/* 80283568 0027F1C8 90 E8 01 78 */ stw r7, 0x178(r8)
+/* 8028356C 0027F1CC 98 03 80 00 */ stb r0, 0xCC008000@l(r3)
+/* 80283570 0027F1D0 80 08 01 78 */ lwz r0, 0x178(r8)
+/* 80283574 0027F1D4 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 80283578 0027F1D8 48 00 00 9C */ b lbl_80283614
+lbl_8028357C:
+/* 8028357C 0027F1DC 81 02 A0 D0 */ lwz r8, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80283580 0027F1E0 38 C0 00 25 */ li r6, 0x25
+/* 80283584 0027F1E4 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80283588 0027F1E8 38 00 00 61 */ li r0, 0x61
+/* 8028358C 0027F1EC 80 E8 01 78 */ lwz r7, 0x178(r8)
+/* 80283590 0027F1F0 50 87 45 2E */ rlwimi r7, r4, 8, 0x14, 0x17
+/* 80283594 0027F1F4 50 A7 64 26 */ rlwimi r7, r5, 0xc, 0x10, 0x13
+/* 80283598 0027F1F8 50 C7 C0 0E */ rlwimi r7, r6, 0x18, 0, 7
+/* 8028359C 0027F1FC 90 E8 01 78 */ stw r7, 0x178(r8)
+/* 802835A0 0027F200 98 03 80 00 */ stb r0, 0xCC008000@l(r3)
+/* 802835A4 0027F204 80 08 01 78 */ lwz r0, 0x178(r8)
+/* 802835A8 0027F208 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 802835AC 0027F20C 48 00 00 68 */ b lbl_80283614
+lbl_802835B0:
+/* 802835B0 0027F210 81 02 A0 D0 */ lwz r8, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802835B4 0027F214 38 C0 00 26 */ li r6, 0x26
+/* 802835B8 0027F218 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 802835BC 0027F21C 38 00 00 61 */ li r0, 0x61
+/* 802835C0 0027F220 80 E8 01 7C */ lwz r7, 0x17c(r8)
+/* 802835C4 0027F224 50 87 07 3E */ rlwimi r7, r4, 0, 0x1c, 0x1f
+/* 802835C8 0027F228 50 A7 26 36 */ rlwimi r7, r5, 4, 0x18, 0x1b
+/* 802835CC 0027F22C 50 C7 C0 0E */ rlwimi r7, r6, 0x18, 0, 7
+/* 802835D0 0027F230 90 E8 01 7C */ stw r7, 0x17c(r8)
+/* 802835D4 0027F234 98 03 80 00 */ stb r0, 0xCC008000@l(r3)
+/* 802835D8 0027F238 80 08 01 7C */ lwz r0, 0x17c(r8)
+/* 802835DC 0027F23C 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 802835E0 0027F240 48 00 00 34 */ b lbl_80283614
+lbl_802835E4:
+/* 802835E4 0027F244 81 02 A0 D0 */ lwz r8, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802835E8 0027F248 38 C0 00 26 */ li r6, 0x26
+/* 802835EC 0027F24C 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 802835F0 0027F250 38 00 00 61 */ li r0, 0x61
+/* 802835F4 0027F254 80 E8 01 7C */ lwz r7, 0x17c(r8)
+/* 802835F8 0027F258 50 87 45 2E */ rlwimi r7, r4, 8, 0x14, 0x17
+/* 802835FC 0027F25C 50 A7 64 26 */ rlwimi r7, r5, 0xc, 0x10, 0x13
+/* 80283600 0027F260 50 C7 C0 0E */ rlwimi r7, r6, 0x18, 0, 7
+/* 80283604 0027F264 90 E8 01 7C */ stw r7, 0x17c(r8)
+/* 80283608 0027F268 98 03 80 00 */ stb r0, 0xCC008000@l(r3)
+/* 8028360C 0027F26C 80 08 01 7C */ lwz r0, 0x17c(r8)
+/* 80283610 0027F270 90 03 80 00 */ stw r0, -0x8000(r3)
+lbl_80283614:
+/* 80283614 0027F274 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80283618 0027F278 38 00 00 00 */ li r0, 0
+/* 8028361C 0027F27C B0 03 00 02 */ sth r0, 2(r3)
+/* 80283620 0027F280 4E 80 00 20 */ blr
+
+.global GXSetIndTexOrder
+GXSetIndTexOrder:
+/* 80283624 0027F284 2C 05 00 FF */ cmpwi r5, 0xff
+/* 80283628 0027F288 40 82 00 08 */ bne lbl_80283630
+/* 8028362C 0027F28C 38 A0 00 00 */ li r5, 0
+lbl_80283630:
+/* 80283630 0027F290 2C 04 00 FF */ cmpwi r4, 0xff
+/* 80283634 0027F294 40 82 00 08 */ bne lbl_8028363C
+/* 80283638 0027F298 38 80 00 00 */ li r4, 0
+lbl_8028363C:
+/* 8028363C 0027F29C 2C 03 00 02 */ cmpwi r3, 2
+/* 80283640 0027F2A0 41 82 00 54 */ beq lbl_80283694
+/* 80283644 0027F2A4 40 80 00 14 */ bge lbl_80283658
+/* 80283648 0027F2A8 2C 03 00 00 */ cmpwi r3, 0
+/* 8028364C 0027F2AC 41 82 00 18 */ beq lbl_80283664
+/* 80283650 0027F2B0 40 80 00 2C */ bge lbl_8028367C
+/* 80283654 0027F2B4 48 00 00 6C */ b lbl_802836C0
+lbl_80283658:
+/* 80283658 0027F2B8 2C 03 00 04 */ cmpwi r3, 4
+/* 8028365C 0027F2BC 40 80 00 64 */ bge lbl_802836C0
+/* 80283660 0027F2C0 48 00 00 4C */ b lbl_802836AC
+lbl_80283664:
+/* 80283664 0027F2C4 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80283668 0027F2C8 80 03 01 70 */ lwz r0, 0x170(r3)
+/* 8028366C 0027F2CC 50 A0 07 7E */ rlwimi r0, r5, 0, 0x1d, 0x1f
+/* 80283670 0027F2D0 50 80 1E B8 */ rlwimi r0, r4, 3, 0x1a, 0x1c
+/* 80283674 0027F2D4 90 03 01 70 */ stw r0, 0x170(r3)
+/* 80283678 0027F2D8 48 00 00 48 */ b lbl_802836C0
+lbl_8028367C:
+/* 8028367C 0027F2DC 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80283680 0027F2E0 80 03 01 70 */ lwz r0, 0x170(r3)
+/* 80283684 0027F2E4 50 A0 35 F2 */ rlwimi r0, r5, 6, 0x17, 0x19
+/* 80283688 0027F2E8 50 80 4D 2C */ rlwimi r0, r4, 9, 0x14, 0x16
+/* 8028368C 0027F2EC 90 03 01 70 */ stw r0, 0x170(r3)
+/* 80283690 0027F2F0 48 00 00 30 */ b lbl_802836C0
+lbl_80283694:
+/* 80283694 0027F2F4 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80283698 0027F2F8 80 03 01 70 */ lwz r0, 0x170(r3)
+/* 8028369C 0027F2FC 50 A0 64 66 */ rlwimi r0, r5, 0xc, 0x11, 0x13
+/* 802836A0 0027F300 50 80 7B A0 */ rlwimi r0, r4, 0xf, 0xe, 0x10
+/* 802836A4 0027F304 90 03 01 70 */ stw r0, 0x170(r3)
+/* 802836A8 0027F308 48 00 00 18 */ b lbl_802836C0
+lbl_802836AC:
+/* 802836AC 0027F30C 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802836B0 0027F310 80 03 01 70 */ lwz r0, 0x170(r3)
+/* 802836B4 0027F314 50 A0 92 DA */ rlwimi r0, r5, 0x12, 0xb, 0xd
+/* 802836B8 0027F318 50 80 AA 14 */ rlwimi r0, r4, 0x15, 8, 0xa
+/* 802836BC 0027F31C 90 03 01 70 */ stw r0, 0x170(r3)
+lbl_802836C0:
+/* 802836C0 0027F320 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 802836C4 0027F324 38 00 00 61 */ li r0, 0x61
+/* 802836C8 0027F328 98 04 80 00 */ stb r0, 0xCC008000@l(r4)
+/* 802836CC 0027F32C 38 00 00 00 */ li r0, 0
+/* 802836D0 0027F330 80 A2 A0 D0 */ lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802836D4 0027F334 80 65 01 70 */ lwz r3, 0x170(r5)
+/* 802836D8 0027F338 90 64 80 00 */ stw r3, -0x8000(r4)
+/* 802836DC 0027F33C 80 65 05 FC */ lwz r3, 0x5fc(r5)
+/* 802836E0 0027F340 60 63 00 03 */ ori r3, r3, 3
+/* 802836E4 0027F344 90 65 05 FC */ stw r3, 0x5fc(r5)
+/* 802836E8 0027F348 B0 05 00 02 */ sth r0, 2(r5)
+/* 802836EC 0027F34C 4E 80 00 20 */ blr
+
+.global GXSetNumIndStages
+GXSetNumIndStages:
+/* 802836F0 0027F350 80 82 A0 D0 */ lwz r4, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802836F4 0027F354 80 04 02 54 */ lwz r0, 0x254(r4)
+/* 802836F8 0027F358 50 60 83 5E */ rlwimi r0, r3, 0x10, 0xd, 0xf
+/* 802836FC 0027F35C 90 04 02 54 */ stw r0, 0x254(r4)
+/* 80283700 0027F360 80 04 05 FC */ lwz r0, 0x5fc(r4)
+/* 80283704 0027F364 60 00 00 06 */ ori r0, r0, 6
+/* 80283708 0027F368 90 04 05 FC */ stw r0, 0x5fc(r4)
+/* 8028370C 0027F36C 4E 80 00 20 */ blr
+
+.global GXSetTevDirect
+GXSetTevDirect:
+/* 80283710 0027F370 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80283714 0027F374 7C 08 02 A6 */ mflr r0
+/* 80283718 0027F378 38 80 00 00 */ li r4, 0
+/* 8028371C 0027F37C 38 A0 00 00 */ li r5, 0
+/* 80283720 0027F380 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80283724 0027F384 38 00 00 00 */ li r0, 0
+/* 80283728 0027F388 38 C0 00 00 */ li r6, 0
+/* 8028372C 0027F38C 38 E0 00 00 */ li r7, 0
+/* 80283730 0027F390 90 01 00 08 */ stw r0, 8(r1)
+/* 80283734 0027F394 39 00 00 00 */ li r8, 0
+/* 80283738 0027F398 39 20 00 00 */ li r9, 0
+/* 8028373C 0027F39C 39 40 00 00 */ li r10, 0
+/* 80283740 0027F3A0 90 01 00 0C */ stw r0, 0xc(r1)
+/* 80283744 0027F3A4 4B FF FC 21 */ bl GXSetTevIndirect
+/* 80283748 0027F3A8 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8028374C 0027F3AC 7C 08 03 A6 */ mtlr r0
+/* 80283750 0027F3B0 38 21 00 10 */ addi r1, r1, 0x10
+/* 80283754 0027F3B4 4E 80 00 20 */ blr
+
+.global GXSetTevIndWarp
+GXSetTevIndWarp:
+/* 80283758 0027F3B8 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8028375C 0027F3BC 7C 08 02 A6 */ mflr r0
+/* 80283760 0027F3C0 2C 06 00 00 */ cmpwi r6, 0
+/* 80283764 0027F3C4 39 00 00 00 */ li r8, 0
+/* 80283768 0027F3C8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8028376C 0027F3CC 41 82 00 08 */ beq lbl_80283774
+/* 80283770 0027F3D0 39 00 00 06 */ li r8, 6
+lbl_80283774:
+/* 80283774 0027F3D4 38 C0 00 00 */ li r6, 0
+/* 80283778 0027F3D8 2C 05 00 00 */ cmpwi r5, 0
+/* 8028377C 0027F3DC 90 C1 00 08 */ stw r6, 8(r1)
+/* 80283780 0027F3E0 38 A0 00 00 */ li r5, 0
+/* 80283784 0027F3E4 90 C1 00 0C */ stw r6, 0xc(r1)
+/* 80283788 0027F3E8 41 82 00 08 */ beq lbl_80283790
+/* 8028378C 0027F3EC 38 C0 00 07 */ li r6, 7
+lbl_80283790:
+/* 80283790 0027F3F0 7D 09 43 78 */ mr r9, r8
+/* 80283794 0027F3F4 39 40 00 00 */ li r10, 0
+/* 80283798 0027F3F8 4B FF FB CD */ bl GXSetTevIndirect
+/* 8028379C 0027F3FC 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802837A0 0027F400 7C 08 03 A6 */ mtlr r0
+/* 802837A4 0027F404 38 21 00 10 */ addi r1, r1, 0x10
+/* 802837A8 0027F408 4E 80 00 20 */ blr
+
+.global GXSetTevIndTile
+GXSetTevIndTile:
+/* 802837AC 0027F40C 94 21 FF A0 */ stwu r1, -0x60(r1)
+/* 802837B0 0027F410 7C 08 02 A6 */ mflr r0
+/* 802837B4 0027F414 90 01 00 64 */ stw r0, 0x64(r1)
+/* 802837B8 0027F418 39 61 00 60 */ addi r11, r1, 0x60
+/* 802837BC 0027F41C 4B F4 39 61 */ bl _savegpr_24
+/* 802837C0 0027F420 2C 05 00 40 */ cmpwi r5, 0x40
+/* 802837C4 0027F424 83 81 00 68 */ lwz r28, 0x68(r1)
+/* 802837C8 0027F428 83 A1 00 6C */ lwz r29, 0x6c(r1)
+/* 802837CC 0027F42C 7C 78 1B 78 */ mr r24, r3
+/* 802837D0 0027F430 7C 99 23 78 */ mr r25, r4
+/* 802837D4 0027F434 7D 3A 4B 78 */ mr r26, r9
+/* 802837D8 0027F438 7D 5B 53 78 */ mr r27, r10
+/* 802837DC 0027F43C 41 82 00 48 */ beq lbl_80283824
+/* 802837E0 0027F440 40 80 00 1C */ bge lbl_802837FC
+/* 802837E4 0027F444 2C 05 00 20 */ cmpwi r5, 0x20
+/* 802837E8 0027F448 41 82 00 44 */ beq lbl_8028382C
+/* 802837EC 0027F44C 40 80 00 50 */ bge lbl_8028383C
+/* 802837F0 0027F450 2C 05 00 10 */ cmpwi r5, 0x10
+/* 802837F4 0027F454 41 82 00 40 */ beq lbl_80283834
+/* 802837F8 0027F458 48 00 00 44 */ b lbl_8028383C
+lbl_802837FC:
+/* 802837FC 0027F45C 2C 05 01 00 */ cmpwi r5, 0x100
+/* 80283800 0027F460 41 82 00 14 */ beq lbl_80283814
+/* 80283804 0027F464 40 80 00 38 */ bge lbl_8028383C
+/* 80283808 0027F468 2C 05 00 80 */ cmpwi r5, 0x80
+/* 8028380C 0027F46C 41 82 00 10 */ beq lbl_8028381C
+/* 80283810 0027F470 48 00 00 2C */ b lbl_8028383C
+lbl_80283814:
+/* 80283814 0027F474 3B E0 00 01 */ li r31, 1
+/* 80283818 0027F478 48 00 00 28 */ b lbl_80283840
+lbl_8028381C:
+/* 8028381C 0027F47C 3B E0 00 02 */ li r31, 2
+/* 80283820 0027F480 48 00 00 20 */ b lbl_80283840
+lbl_80283824:
+/* 80283824 0027F484 3B E0 00 03 */ li r31, 3
+/* 80283828 0027F488 48 00 00 18 */ b lbl_80283840
+lbl_8028382C:
+/* 8028382C 0027F48C 3B E0 00 04 */ li r31, 4
+/* 80283830 0027F490 48 00 00 10 */ b lbl_80283840
+lbl_80283834:
+/* 80283834 0027F494 3B E0 00 05 */ li r31, 5
+/* 80283838 0027F498 48 00 00 08 */ b lbl_80283840
+lbl_8028383C:
+/* 8028383C 0027F49C 3B E0 00 00 */ li r31, 0
+lbl_80283840:
+/* 80283840 0027F4A0 2C 06 00 40 */ cmpwi r6, 0x40
+/* 80283844 0027F4A4 41 82 00 48 */ beq lbl_8028388C
+/* 80283848 0027F4A8 40 80 00 1C */ bge lbl_80283864
+/* 8028384C 0027F4AC 2C 06 00 20 */ cmpwi r6, 0x20
+/* 80283850 0027F4B0 41 82 00 44 */ beq lbl_80283894
+/* 80283854 0027F4B4 40 80 00 50 */ bge lbl_802838A4
+/* 80283858 0027F4B8 2C 06 00 10 */ cmpwi r6, 0x10
+/* 8028385C 0027F4BC 41 82 00 40 */ beq lbl_8028389C
+/* 80283860 0027F4C0 48 00 00 44 */ b lbl_802838A4
+lbl_80283864:
+/* 80283864 0027F4C4 2C 06 01 00 */ cmpwi r6, 0x100
+/* 80283868 0027F4C8 41 82 00 14 */ beq lbl_8028387C
+/* 8028386C 0027F4CC 40 80 00 38 */ bge lbl_802838A4
+/* 80283870 0027F4D0 2C 06 00 80 */ cmpwi r6, 0x80
+/* 80283874 0027F4D4 41 82 00 10 */ beq lbl_80283884
+/* 80283878 0027F4D8 48 00 00 2C */ b lbl_802838A4
+lbl_8028387C:
+/* 8028387C 0027F4DC 3B C0 00 01 */ li r30, 1
+/* 80283880 0027F4E0 48 00 00 28 */ b lbl_802838A8
+lbl_80283884:
+/* 80283884 0027F4E4 3B C0 00 02 */ li r30, 2
+/* 80283888 0027F4E8 48 00 00 20 */ b lbl_802838A8
+lbl_8028388C:
+/* 8028388C 0027F4EC 3B C0 00 03 */ li r30, 3
+/* 80283890 0027F4F0 48 00 00 18 */ b lbl_802838A8
+lbl_80283894:
+/* 80283894 0027F4F4 3B C0 00 04 */ li r30, 4
+/* 80283898 0027F4F8 48 00 00 10 */ b lbl_802838A8
+lbl_8028389C:
+/* 8028389C 0027F4FC 3B C0 00 05 */ li r30, 5
+/* 802838A0 0027F500 48 00 00 08 */ b lbl_802838A8
+lbl_802838A4:
+/* 802838A4 0027F504 3B C0 00 00 */ li r30, 0
+lbl_802838A8:
+/* 802838A8 0027F508 3C 00 43 30 */ lis r0, 0x4330
+/* 802838AC 0027F50C C0 22 A1 70 */ lfs f1, lbl_80642770-_SDA2_BASE_(r2)
+/* 802838B0 0027F510 90 E1 00 2C */ stw r7, 0x2c(r1)
+/* 802838B4 0027F514 7F 63 DB 78 */ mr r3, r27
+/* 802838B8 0027F518 C8 82 A1 78 */ lfd f4, lbl_80642778-_SDA2_BASE_(r2)
+/* 802838BC 0027F51C 38 81 00 10 */ addi r4, r1, 0x10
+/* 802838C0 0027F520 90 01 00 28 */ stw r0, 0x28(r1)
+/* 802838C4 0027F524 38 A0 00 0A */ li r5, 0xa
+/* 802838C8 0027F528 C0 62 A1 6C */ lfs f3, lbl_8064276C-_SDA2_BASE_(r2)
+/* 802838CC 0027F52C C8 01 00 28 */ lfd f0, 0x28(r1)
+/* 802838D0 0027F530 91 01 00 34 */ stw r8, 0x34(r1)
+/* 802838D4 0027F534 EC 40 20 28 */ fsubs f2, f0, f4
+/* 802838D8 0027F538 90 01 00 30 */ stw r0, 0x30(r1)
+/* 802838DC 0027F53C C8 01 00 30 */ lfd f0, 0x30(r1)
+/* 802838E0 0027F540 EC 42 00 F2 */ fmuls f2, f2, f3
+/* 802838E4 0027F544 D0 21 00 18 */ stfs f1, 0x18(r1)
+/* 802838E8 0027F548 EC 00 20 28 */ fsubs f0, f0, f4
+/* 802838EC 0027F54C D0 41 00 10 */ stfs f2, 0x10(r1)
+/* 802838F0 0027F550 EC 00 00 F2 */ fmuls f0, f0, f3
+/* 802838F4 0027F554 D0 21 00 14 */ stfs f1, 0x14(r1)
+/* 802838F8 0027F558 D0 21 00 24 */ stfs f1, 0x24(r1)
+/* 802838FC 0027F55C D0 01 00 20 */ stfs f0, 0x20(r1)
+/* 80283900 0027F560 D0 21 00 1C */ stfs f1, 0x1c(r1)
+/* 80283904 0027F564 4B FF FA C9 */ bl GXSetIndTexMtx
+/* 80283908 0027F568 38 00 00 01 */ li r0, 1
+/* 8028390C 0027F56C 7F 03 C3 78 */ mr r3, r24
+/* 80283910 0027F570 90 01 00 08 */ stw r0, 8(r1)
+/* 80283914 0027F574 7F 24 CB 78 */ mr r4, r25
+/* 80283918 0027F578 7F 45 D3 78 */ mr r5, r26
+/* 8028391C 0027F57C 7F 86 E3 78 */ mr r6, r28
+/* 80283920 0027F580 93 A1 00 0C */ stw r29, 0xc(r1)
+/* 80283924 0027F584 7F 67 DB 78 */ mr r7, r27
+/* 80283928 0027F588 7F E8 FB 78 */ mr r8, r31
+/* 8028392C 0027F58C 7F C9 F3 78 */ mr r9, r30
+/* 80283930 0027F590 39 40 00 00 */ li r10, 0
+/* 80283934 0027F594 4B FF FA 31 */ bl GXSetTevIndirect
+/* 80283938 0027F598 39 61 00 60 */ addi r11, r1, 0x60
+/* 8028393C 0027F59C 4B F4 38 2D */ bl _restgpr_24
+/* 80283940 0027F5A0 80 01 00 64 */ lwz r0, 0x64(r1)
+/* 80283944 0027F5A4 7C 08 03 A6 */ mtlr r0
+/* 80283948 0027F5A8 38 21 00 60 */ addi r1, r1, 0x60
+/* 8028394C 0027F5AC 4E 80 00 20 */ blr
+
+.global GXSetTevIndBumpST
+GXSetTevIndBumpST:
+/* 80283950 0027F5B0 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80283954 0027F5B4 7C 08 02 A6 */ mflr r0
+/* 80283958 0027F5B8 2C 05 00 02 */ cmpwi r5, 2
+/* 8028395C 0027F5BC 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80283960 0027F5C0 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80283964 0027F5C4 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80283968 0027F5C8 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8028396C 0027F5CC 7C 9D 23 78 */ mr r29, r4
+/* 80283970 0027F5D0 93 81 00 10 */ stw r28, 0x10(r1)
+/* 80283974 0027F5D4 7C 7C 1B 78 */ mr r28, r3
+/* 80283978 0027F5D8 41 82 00 2C */ beq lbl_802839A4
+/* 8028397C 0027F5DC 40 80 00 10 */ bge lbl_8028398C
+/* 80283980 0027F5E0 2C 05 00 01 */ cmpwi r5, 1
+/* 80283984 0027F5E4 40 80 00 14 */ bge lbl_80283998
+/* 80283988 0027F5E8 48 00 00 30 */ b lbl_802839B8
+lbl_8028398C:
+/* 8028398C 0027F5EC 2C 05 00 04 */ cmpwi r5, 4
+/* 80283990 0027F5F0 40 80 00 28 */ bge lbl_802839B8
+/* 80283994 0027F5F4 48 00 00 1C */ b lbl_802839B0
+lbl_80283998:
+/* 80283998 0027F5F8 38 E0 00 05 */ li r7, 5
+/* 8028399C 0027F5FC 3B C0 00 09 */ li r30, 9
+/* 802839A0 0027F600 48 00 00 18 */ b lbl_802839B8
+lbl_802839A4:
+/* 802839A4 0027F604 38 E0 00 06 */ li r7, 6
+/* 802839A8 0027F608 3B C0 00 0A */ li r30, 0xa
+/* 802839AC 0027F60C 48 00 00 0C */ b lbl_802839B8
+lbl_802839B0:
+/* 802839B0 0027F610 38 E0 00 07 */ li r7, 7
+/* 802839B4 0027F614 3B C0 00 0B */ li r30, 0xb
+lbl_802839B8:
+/* 802839B8 0027F618 3B E0 00 00 */ li r31, 0
+/* 802839BC 0027F61C 7F 83 E3 78 */ mr r3, r28
+/* 802839C0 0027F620 93 E1 00 08 */ stw r31, 8(r1)
+/* 802839C4 0027F624 7F A4 EB 78 */ mr r4, r29
+/* 802839C8 0027F628 38 A0 00 00 */ li r5, 0
+/* 802839CC 0027F62C 38 C0 00 03 */ li r6, 3
+/* 802839D0 0027F630 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802839D4 0027F634 39 00 00 06 */ li r8, 6
+/* 802839D8 0027F638 39 20 00 06 */ li r9, 6
+/* 802839DC 0027F63C 39 40 00 00 */ li r10, 0
+/* 802839E0 0027F640 4B FF F9 85 */ bl GXSetTevIndirect
+/* 802839E4 0027F644 93 E1 00 08 */ stw r31, 8(r1)
+/* 802839E8 0027F648 7F A4 EB 78 */ mr r4, r29
+/* 802839EC 0027F64C 7F C7 F3 78 */ mr r7, r30
+/* 802839F0 0027F650 38 7C 00 01 */ addi r3, r28, 1
+/* 802839F4 0027F654 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802839F8 0027F658 38 A0 00 00 */ li r5, 0
+/* 802839FC 0027F65C 38 C0 00 03 */ li r6, 3
+/* 80283A00 0027F660 39 00 00 06 */ li r8, 6
+/* 80283A04 0027F664 39 20 00 06 */ li r9, 6
+/* 80283A08 0027F668 39 40 00 01 */ li r10, 1
+/* 80283A0C 0027F66C 4B FF F9 59 */ bl GXSetTevIndirect
+/* 80283A10 0027F670 93 E1 00 08 */ stw r31, 8(r1)
+/* 80283A14 0027F674 7F A4 EB 78 */ mr r4, r29
+/* 80283A18 0027F678 38 7C 00 02 */ addi r3, r28, 2
+/* 80283A1C 0027F67C 38 A0 00 00 */ li r5, 0
+/* 80283A20 0027F680 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80283A24 0027F684 38 C0 00 00 */ li r6, 0
+/* 80283A28 0027F688 38 E0 00 00 */ li r7, 0
+/* 80283A2C 0027F68C 39 00 00 00 */ li r8, 0
+/* 80283A30 0027F690 39 20 00 00 */ li r9, 0
+/* 80283A34 0027F694 39 40 00 01 */ li r10, 1
+/* 80283A38 0027F698 4B FF F9 2D */ bl GXSetTevIndirect
+/* 80283A3C 0027F69C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80283A40 0027F6A0 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80283A44 0027F6A4 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 80283A48 0027F6A8 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 80283A4C 0027F6AC 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 80283A50 0027F6B0 7C 08 03 A6 */ mtlr r0
+/* 80283A54 0027F6B4 38 21 00 20 */ addi r1, r1, 0x20
+/* 80283A58 0027F6B8 4E 80 00 20 */ blr
+
+.global GXSetTevIndBumpXYZ
+GXSetTevIndBumpXYZ:
+/* 80283A5C 0027F6BC 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80283A60 0027F6C0 7C 08 02 A6 */ mflr r0
+/* 80283A64 0027F6C4 7C A7 2B 78 */ mr r7, r5
+/* 80283A68 0027F6C8 38 A0 00 00 */ li r5, 0
+/* 80283A6C 0027F6CC 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80283A70 0027F6D0 38 00 00 00 */ li r0, 0
+/* 80283A74 0027F6D4 38 C0 00 07 */ li r6, 7
+/* 80283A78 0027F6D8 39 00 00 00 */ li r8, 0
+/* 80283A7C 0027F6DC 90 01 00 08 */ stw r0, 8(r1)
+/* 80283A80 0027F6E0 39 20 00 00 */ li r9, 0
+/* 80283A84 0027F6E4 39 40 00 00 */ li r10, 0
+/* 80283A88 0027F6E8 90 01 00 0C */ stw r0, 0xc(r1)
+/* 80283A8C 0027F6EC 4B FF F8 D9 */ bl GXSetTevIndirect
+/* 80283A90 0027F6F0 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80283A94 0027F6F4 7C 08 03 A6 */ mtlr r0
+/* 80283A98 0027F6F8 38 21 00 10 */ addi r1, r1, 0x10
+/* 80283A9C 0027F6FC 4E 80 00 20 */ blr
+
+.global GXSetTevIndRepeat
+GXSetTevIndRepeat:
+/* 80283AA0 0027F700 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80283AA4 0027F704 7C 08 02 A6 */ mflr r0
+/* 80283AA8 0027F708 38 80 00 00 */ li r4, 0
+/* 80283AAC 0027F70C 38 A0 00 00 */ li r5, 0
+/* 80283AB0 0027F710 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80283AB4 0027F714 38 00 00 00 */ li r0, 0
+/* 80283AB8 0027F718 38 C0 00 00 */ li r6, 0
+/* 80283ABC 0027F71C 38 E0 00 00 */ li r7, 0
+/* 80283AC0 0027F720 90 01 00 08 */ stw r0, 8(r1)
+/* 80283AC4 0027F724 39 00 00 06 */ li r8, 6
+/* 80283AC8 0027F728 39 20 00 06 */ li r9, 6
+/* 80283ACC 0027F72C 39 40 00 01 */ li r10, 1
+/* 80283AD0 0027F730 90 01 00 0C */ stw r0, 0xc(r1)
+/* 80283AD4 0027F734 4B FF F8 91 */ bl GXSetTevIndirect
+/* 80283AD8 0027F738 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80283ADC 0027F73C 7C 08 03 A6 */ mtlr r0
+/* 80283AE0 0027F740 38 21 00 10 */ addi r1, r1, 0x10
+/* 80283AE4 0027F744 4E 80 00 20 */ blr
+
+.global __GXUpdateBPMask
+__GXUpdateBPMask:
+/* 80283AE8 0027F748 4E 80 00 20 */ blr
+
+.global __GXSetIndirectMask
+__GXSetIndirectMask:
+/* 80283AEC 0027F74C 80 E2 A0 D0 */ lwz r7, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80283AF0 0027F750 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 80283AF4 0027F754 38 A0 00 61 */ li r5, 0x61
+/* 80283AF8 0027F758 38 00 00 00 */ li r0, 0
+/* 80283AFC 0027F75C 80 C7 01 74 */ lwz r6, 0x174(r7)
+/* 80283B00 0027F760 50 66 06 3E */ rlwimi r6, r3, 0, 0x18, 0x1f
+/* 80283B04 0027F764 90 C7 01 74 */ stw r6, 0x174(r7)
+/* 80283B08 0027F768 98 A4 80 00 */ stb r5, 0xCC008000@l(r4)
+/* 80283B0C 0027F76C 80 67 01 74 */ lwz r3, 0x174(r7)
+/* 80283B10 0027F770 90 64 80 00 */ stw r3, -0x8000(r4)
+/* 80283B14 0027F774 B0 07 00 02 */ sth r0, 2(r7)
+/* 80283B18 0027F778 4E 80 00 20 */ blr
+
+.global __GXFlushTextureState
+__GXFlushTextureState:
+/* 80283B1C 0027F77C 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 80283B20 0027F780 38 00 00 61 */ li r0, 0x61
+/* 80283B24 0027F784 98 04 80 00 */ stb r0, 0xCC008000@l(r4)
+/* 80283B28 0027F788 38 00 00 00 */ li r0, 0
+/* 80283B2C 0027F78C 80 A2 A0 D0 */ lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80283B30 0027F790 80 65 01 74 */ lwz r3, 0x174(r5)
+/* 80283B34 0027F794 90 64 80 00 */ stw r3, -0x8000(r4)
+/* 80283B38 0027F798 B0 05 00 02 */ sth r0, 2(r5)
+/* 80283B3C 0027F79C 4E 80 00 20 */ blr
diff --git a/asm/SDK/GX/GXDisplayList.s b/asm/SDK/GX/GXDisplayList.s
new file mode 100644
index 0000000..9ba2e85
--- /dev/null
+++ b/asm/SDK/GX/GXDisplayList.s
@@ -0,0 +1,135 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global GXBeginDisplayList
+GXBeginDisplayList:
+/* 8028663C 0028229C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80286640 002822A0 7C 08 02 A6 */ mflr r0
+/* 80286644 002822A4 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80286648 002822A8 39 61 00 20 */ addi r11, r1, 0x20
+/* 8028664C 002822AC 4B F4 0A DD */ bl _savegpr_27
+/* 80286650 002822B0 83 C2 A0 D0 */ lwz r30, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80286654 002822B4 3F E0 80 51 */ lis r31, lbl_80516280@ha
+/* 80286658 002822B8 3B FF 62 80 */ addi r31, r31, lbl_80516280@l
+/* 8028665C 002822BC 7C 7B 1B 78 */ mr r27, r3
+/* 80286660 002822C0 80 1E 05 FC */ lwz r0, 0x5fc(r30)
+/* 80286664 002822C4 7C 9C 23 78 */ mr r28, r4
+/* 80286668 002822C8 3B BF 00 00 */ addi r29, r31, 0
+/* 8028666C 002822CC 2C 00 00 00 */ cmpwi r0, 0
+/* 80286670 002822D0 41 82 00 08 */ beq lbl_80286678
+/* 80286674 002822D4 4B FF A8 5D */ bl __GXSetDirtyState
+lbl_80286678:
+/* 80286678 002822D8 88 1E 05 F9 */ lbz r0, 0x5f9(r30)
+/* 8028667C 002822DC 2C 00 00 00 */ cmpwi r0, 0
+/* 80286680 002822E0 41 82 00 14 */ beq lbl_80286694
+/* 80286684 002822E4 7F C4 F3 78 */ mr r4, r30
+/* 80286688 002822E8 38 7F 00 80 */ addi r3, r31, 0x80
+/* 8028668C 002822EC 38 A0 06 00 */ li r5, 0x600
+/* 80286690 002822F0 4B D7 D9 71 */ bl memcpy
+lbl_80286694:
+/* 80286694 002822F4 7C 7B E2 14 */ add r3, r27, r28
+/* 80286698 002822F8 38 80 00 00 */ li r4, 0
+/* 8028669C 002822FC 38 A3 FF FC */ addi r5, r3, -4
+/* 802866A0 00282300 93 7D 00 00 */ stw r27, 0(r29)
+/* 802866A4 00282304 38 00 00 01 */ li r0, 1
+/* 802866A8 00282308 38 7F 06 80 */ addi r3, r31, 0x680
+/* 802866AC 0028230C 90 BD 00 04 */ stw r5, 4(r29)
+/* 802866B0 00282310 93 9D 00 08 */ stw r28, 8(r29)
+/* 802866B4 00282314 90 9D 00 1C */ stw r4, 0x1c(r29)
+/* 802866B8 00282318 93 7D 00 14 */ stw r27, 0x14(r29)
+/* 802866BC 0028231C 93 7D 00 18 */ stw r27, 0x18(r29)
+/* 802866C0 00282320 98 1E 05 F8 */ stb r0, 0x5f8(r30)
+/* 802866C4 00282324 4B FF 89 D1 */ bl GXGetCPUFifo
+/* 802866C8 00282328 38 7F 00 00 */ addi r3, r31, 0
+/* 802866CC 0028232C 4B FF 84 05 */ bl GXSetCPUFifo
+/* 802866D0 00282330 4B FF A0 31 */ bl GXResetWriteGatherPipe
+/* 802866D4 00282334 39 61 00 20 */ addi r11, r1, 0x20
+/* 802866D8 00282338 4B F4 0A 9D */ bl _restgpr_27
+/* 802866DC 0028233C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802866E0 00282340 7C 08 03 A6 */ mtlr r0
+/* 802866E4 00282344 38 21 00 20 */ addi r1, r1, 0x20
+/* 802866E8 00282348 4E 80 00 20 */ blr
+
+.global GXEndDisplayList
+GXEndDisplayList:
+/* 802866EC 0028234C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802866F0 00282350 7C 08 02 A6 */ mflr r0
+/* 802866F4 00282354 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802866F8 00282358 39 61 00 20 */ addi r11, r1, 0x20
+/* 802866FC 0028235C 4B F4 0A 29 */ bl _savegpr_26
+/* 80286700 00282360 3F C0 80 51 */ lis r30, lbl_80516280@ha
+/* 80286704 00282364 3B DE 62 80 */ addi r30, r30, lbl_80516280@l
+/* 80286708 00282368 38 7E 00 00 */ addi r3, r30, 0
+/* 8028670C 0028236C 4B FF 89 89 */ bl GXGetCPUFifo
+/* 80286710 00282370 38 7E 00 00 */ addi r3, r30, 0
+/* 80286714 00282374 4B FF 8A 31 */ bl GXGetFifoWrap
+/* 80286718 00282378 7C 7F 1B 78 */ mr r31, r3
+/* 8028671C 0028237C 38 7E 06 80 */ addi r3, r30, 0x680
+/* 80286720 00282380 4B FF 83 B1 */ bl GXSetCPUFifo
+/* 80286724 00282384 83 A2 A0 D0 */ lwz r29, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80286728 00282388 88 1D 05 F9 */ lbz r0, 0x5f9(r29)
+/* 8028672C 0028238C 2C 00 00 00 */ cmpwi r0, 0
+/* 80286730 00282390 41 82 00 30 */ beq lbl_80286760
+/* 80286734 00282394 4B FE 80 29 */ bl OSDisableInterrupts
+/* 80286738 00282398 83 82 A0 D0 */ lwz r28, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8028673C 0028239C 7C 7B 1B 78 */ mr r27, r3
+/* 80286740 002823A0 38 9E 00 80 */ addi r4, r30, 0x80
+/* 80286744 002823A4 38 A0 06 00 */ li r5, 0x600
+/* 80286748 002823A8 83 5C 00 08 */ lwz r26, 8(r28)
+/* 8028674C 002823AC 7F 83 E3 78 */ mr r3, r28
+/* 80286750 002823B0 4B D7 D8 B1 */ bl memcpy
+/* 80286754 002823B4 93 5C 00 08 */ stw r26, 8(r28)
+/* 80286758 002823B8 7F 63 DB 78 */ mr r3, r27
+/* 8028675C 002823BC 4B FE 80 29 */ bl OSRestoreInterrupts
+lbl_80286760:
+/* 80286760 002823C0 57 E0 06 3F */ clrlwi. r0, r31, 0x18
+/* 80286764 002823C4 38 00 00 00 */ li r0, 0
+/* 80286768 002823C8 98 1D 05 F8 */ stb r0, 0x5f8(r29)
+/* 8028676C 002823CC 40 82 00 10 */ bne lbl_8028677C
+/* 80286770 002823D0 38 7E 00 00 */ addi r3, r30, 0
+/* 80286774 002823D4 4B FF 89 C9 */ bl GXGetFifoCount
+/* 80286778 002823D8 48 00 00 08 */ b lbl_80286780
+lbl_8028677C:
+/* 8028677C 002823DC 38 60 00 00 */ li r3, 0
+lbl_80286780:
+/* 80286780 002823E0 39 61 00 20 */ addi r11, r1, 0x20
+/* 80286784 002823E4 4B F4 09 ED */ bl _restgpr_26
+/* 80286788 002823E8 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8028678C 002823EC 7C 08 03 A6 */ mtlr r0
+/* 80286790 002823F0 38 21 00 20 */ addi r1, r1, 0x20
+/* 80286794 002823F4 4E 80 00 20 */ blr
+
+.global GXCallDisplayList
+GXCallDisplayList:
+/* 80286798 002823F8 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8028679C 002823FC 7C 08 02 A6 */ mflr r0
+/* 802867A0 00282400 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802867A4 00282404 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802867A8 00282408 83 E2 A0 D0 */ lwz r31, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802867AC 0028240C 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802867B0 00282410 7C 9E 23 78 */ mr r30, r4
+/* 802867B4 00282414 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802867B8 00282418 7C 7D 1B 78 */ mr r29, r3
+/* 802867BC 0028241C 80 1F 05 FC */ lwz r0, 0x5fc(r31)
+/* 802867C0 00282420 2C 00 00 00 */ cmpwi r0, 0
+/* 802867C4 00282424 41 82 00 08 */ beq lbl_802867CC
+/* 802867C8 00282428 4B FF A7 09 */ bl __GXSetDirtyState
+lbl_802867CC:
+/* 802867CC 0028242C 80 1F 00 00 */ lwz r0, 0(r31)
+/* 802867D0 00282430 2C 00 00 00 */ cmpwi r0, 0
+/* 802867D4 00282434 40 82 00 08 */ bne lbl_802867DC
+/* 802867D8 00282438 4B FF AA BD */ bl __GXSendFlushPrim
+lbl_802867DC:
+/* 802867DC 0028243C 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 802867E0 00282440 38 00 00 40 */ li r0, 0x40
+/* 802867E4 00282444 98 03 80 00 */ stb r0, 0xCC008000@l(r3)
+/* 802867E8 00282448 93 A3 80 00 */ stw r29, -0x8000(r3)
+/* 802867EC 0028244C 93 C3 80 00 */ stw r30, -0x8000(r3)
+/* 802867F0 00282450 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802867F4 00282454 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802867F8 00282458 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802867FC 0028245C 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 80286800 00282460 7C 08 03 A6 */ mtlr r0
+/* 80286804 00282464 38 21 00 20 */ addi r1, r1, 0x20
+/* 80286808 00282468 4E 80 00 20 */ blr
diff --git a/asm/SDK/GX/GXDraw.s b/asm/SDK/GX/GXDraw.s
new file mode 100644
index 0000000..e09b11d
--- /dev/null
+++ b/asm/SDK/GX/GXDraw.s
@@ -0,0 +1,257 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global GXDrawSphere
+GXDrawSphere:
+/* 8028582C 0028148C 94 21 FE F0 */ stwu r1, -0x110(r1)
+/* 80285830 00281490 7C 08 02 A6 */ mflr r0
+/* 80285834 00281494 90 01 01 14 */ stw r0, 0x114(r1)
+/* 80285838 00281498 DB E1 01 00 */ stfd f31, 0x100(r1)
+/* 8028583C 0028149C F3 E1 01 08 */ psq_st f31, 264(r1), 0, qr0
+/* 80285840 002814A0 DB C1 00 F0 */ stfd f30, 0xf0(r1)
+/* 80285844 002814A4 F3 C1 00 F8 */ psq_st f30, 248(r1), 0, qr0
+/* 80285848 002814A8 DB A1 00 E0 */ stfd f29, 0xe0(r1)
+/* 8028584C 002814AC F3 A1 00 E8 */ psq_st f29, 232(r1), 0, qr0
+/* 80285850 002814B0 DB 81 00 D0 */ stfd f28, 0xd0(r1)
+/* 80285854 002814B4 F3 81 00 D8 */ psq_st f28, 216(r1), 0, qr0
+/* 80285858 002814B8 DB 61 00 C0 */ stfd f27, 0xc0(r1)
+/* 8028585C 002814BC F3 61 00 C8 */ psq_st f27, 200(r1), 0, qr0
+/* 80285860 002814C0 DB 41 00 B0 */ stfd f26, 0xb0(r1)
+/* 80285864 002814C4 F3 41 00 B8 */ psq_st f26, 184(r1), 0, qr0
+/* 80285868 002814C8 DB 21 00 A0 */ stfd f25, 0xa0(r1)
+/* 8028586C 002814CC F3 21 00 A8 */ psq_st f25, 168(r1), 0, qr0
+/* 80285870 002814D0 DB 01 00 90 */ stfd f24, 0x90(r1)
+/* 80285874 002814D4 F3 01 00 98 */ psq_st f24, 152(r1), 0, qr0
+/* 80285878 002814D8 DA E1 00 80 */ stfd f23, 0x80(r1)
+/* 8028587C 002814DC F2 E1 00 88 */ psq_st f23, 136(r1), 0, qr0
+/* 80285880 002814E0 DA C1 00 70 */ stfd f22, 0x70(r1)
+/* 80285884 002814E4 F2 C1 00 78 */ psq_st f22, 120(r1), 0, qr0
+/* 80285888 002814E8 DA A1 00 60 */ stfd f21, 0x60(r1)
+/* 8028588C 002814EC F2 A1 00 68 */ psq_st f21, 104(r1), 0, qr0
+/* 80285890 002814F0 DA 81 00 50 */ stfd f20, 0x50(r1)
+/* 80285894 002814F4 F2 81 00 58 */ psq_st f20, 88(r1), 0, qr0
+/* 80285898 002814F8 DA 61 00 40 */ stfd f19, 0x40(r1)
+/* 8028589C 002814FC F2 61 00 48 */ psq_st f19, 72(r1), 0, qr0
+/* 802858A0 00281500 39 61 00 40 */ addi r11, r1, 0x40
+/* 802858A4 00281504 4B F4 18 7D */ bl _savegpr_25
+/* 802858A8 00281508 3C 00 43 30 */ lis r0, 0x4330
+/* 802858AC 0028150C 90 61 00 14 */ stw r3, 0x14(r1)
+/* 802858B0 00281510 7C 79 1B 78 */ mr r25, r3
+/* 802858B4 00281514 C8 82 A1 F0 */ lfd f4, lbl_806427F0-_SDA2_BASE_(r2)
+/* 802858B8 00281518 90 01 00 10 */ stw r0, 0x10(r1)
+/* 802858BC 0028151C 7C 9A 23 78 */ mr r26, r4
+/* 802858C0 00281520 C0 42 A1 D4 */ lfs f2, lbl_806427D4-_SDA2_BASE_(r2)
+/* 802858C4 00281524 38 60 00 0D */ li r3, 0xd
+/* 802858C8 00281528 90 81 00 1C */ stw r4, 0x1c(r1)
+/* 802858CC 0028152C 38 81 00 08 */ addi r4, r1, 8
+/* 802858D0 00281530 C8 01 00 10 */ lfd f0, 0x10(r1)
+/* 802858D4 00281534 90 01 00 18 */ stw r0, 0x18(r1)
+/* 802858D8 00281538 EC 60 20 28 */ fsubs f3, f0, f4
+/* 802858DC 0028153C C0 02 A1 F8 */ lfs f0, lbl_806427F8-_SDA2_BASE_(r2)
+/* 802858E0 00281540 C8 21 00 18 */ lfd f1, 0x18(r1)
+/* 802858E4 00281544 C3 42 A1 D0 */ lfs f26, lbl_806427D0-_SDA2_BASE_(r2)
+/* 802858E8 00281548 EC 21 20 28 */ fsubs f1, f1, f4
+/* 802858EC 0028154C EF 22 18 24 */ fdivs f25, f2, f3
+/* 802858F0 00281550 EF 00 08 24 */ fdivs f24, f0, f1
+/* 802858F4 00281554 4B FF A1 4D */ bl GXGetVtxDesc
+/* 802858F8 00281558 3C 60 80 51 */ lis r3, lbl_80515FF8@ha
+/* 802858FC 0028155C 38 63 5F F8 */ addi r3, r3, lbl_80515FF8@l
+/* 80285900 00281560 4B FF A2 F5 */ bl GXGetVtxDescv
+/* 80285904 00281564 3C 80 80 51 */ lis r4, lbl_805160D0@ha
+/* 80285908 00281568 38 60 00 03 */ li r3, 3
+/* 8028590C 0028156C 38 84 60 D0 */ addi r4, r4, lbl_805160D0@l
+/* 80285910 00281570 4B FF A9 F9 */ bl GXGetVtxAttrFmtv
+/* 80285914 00281574 4B FF A3 71 */ bl GXClearVtxDesc
+/* 80285918 00281578 38 60 00 09 */ li r3, 9
+/* 8028591C 0028157C 38 80 00 01 */ li r4, 1
+/* 80285920 00281580 4B FF 9A D5 */ bl GXSetVtxDesc
+/* 80285924 00281584 38 60 00 0A */ li r3, 0xa
+/* 80285928 00281588 38 80 00 01 */ li r4, 1
+/* 8028592C 0028158C 4B FF 9A C9 */ bl GXSetVtxDesc
+/* 80285930 00281590 38 60 00 03 */ li r3, 3
+/* 80285934 00281594 38 80 00 09 */ li r4, 9
+/* 80285938 00281598 38 A0 00 01 */ li r5, 1
+/* 8028593C 0028159C 38 C0 00 04 */ li r6, 4
+/* 80285940 002815A0 38 E0 00 00 */ li r7, 0
+/* 80285944 002815A4 4B FF A3 75 */ bl GXSetVtxAttrFmt
+/* 80285948 002815A8 38 60 00 03 */ li r3, 3
+/* 8028594C 002815AC 38 80 00 0A */ li r4, 0xa
+/* 80285950 002815B0 38 A0 00 00 */ li r5, 0
+/* 80285954 002815B4 38 C0 00 04 */ li r6, 4
+/* 80285958 002815B8 38 E0 00 00 */ li r7, 0
+/* 8028595C 002815BC 4B FF A3 5D */ bl GXSetVtxAttrFmt
+/* 80285960 002815C0 80 01 00 08 */ lwz r0, 8(r1)
+/* 80285964 002815C4 2C 00 00 00 */ cmpwi r0, 0
+/* 80285968 002815C8 41 82 00 28 */ beq lbl_80285990
+/* 8028596C 002815CC 38 60 00 0D */ li r3, 0xd
+/* 80285970 002815D0 38 80 00 01 */ li r4, 1
+/* 80285974 002815D4 4B FF 9A 81 */ bl GXSetVtxDesc
+/* 80285978 002815D8 38 60 00 03 */ li r3, 3
+/* 8028597C 002815DC 38 80 00 0D */ li r4, 0xd
+/* 80285980 002815E0 38 A0 00 01 */ li r5, 1
+/* 80285984 002815E4 38 C0 00 04 */ li r6, 4
+/* 80285988 002815E8 38 E0 00 00 */ li r7, 0
+/* 8028598C 002815EC 4B FF A3 2D */ bl GXSetVtxAttrFmt
+lbl_80285990:
+/* 80285990 002815F0 38 1A 00 01 */ addi r0, r26, 1
+/* 80285994 002815F4 CB 82 A1 E8 */ lfd f28, lbl_806427E8-_SDA2_BASE_(r2)
+/* 80285998 002815F8 CB C2 A1 F0 */ lfd f30, lbl_806427F0-_SDA2_BASE_(r2)
+/* 8028599C 002815FC 54 1E 08 3C */ slwi r30, r0, 1
+/* 802859A0 00281600 3B 80 00 00 */ li r28, 0
+/* 802859A4 00281604 3F E0 CC 01 */ lis r31, 0xcc01
+/* 802859A8 00281608 48 00 01 B0 */ b lbl_80285B58
+lbl_802859AC:
+/* 802859AC 0028160C 6F 80 80 00 */ xoris r0, r28, 0x8000
+/* 802859B0 00281610 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802859B4 00281614 C8 01 00 10 */ lfd f0, 0x10(r1)
+/* 802859B8 00281618 EC 00 E0 28 */ fsubs f0, f0, f28
+/* 802859BC 0028161C EE 80 06 72 */ fmuls f20, f0, f25
+/* 802859C0 00281620 FC 20 A0 90 */ fmr f1, f20
+/* 802859C4 00281624 EE B4 C8 2A */ fadds f21, f20, f25
+/* 802859C8 00281628 4B F4 EA BD */ bl sin
+/* 802859CC 0028162C FC 00 08 18 */ frsp f0, f1
+/* 802859D0 00281630 FC 20 A8 90 */ fmr f1, f21
+/* 802859D4 00281634 EE FA 00 32 */ fmuls f23, f26, f0
+/* 802859D8 00281638 4B F4 EA AD */ bl sin
+/* 802859DC 0028163C FC 00 08 18 */ frsp f0, f1
+/* 802859E0 00281640 FC 20 A0 90 */ fmr f1, f20
+/* 802859E4 00281644 EE DA 00 32 */ fmuls f22, f26, f0
+/* 802859E8 00281648 4B F4 E6 91 */ bl cos
+/* 802859EC 0028164C FC 00 08 18 */ frsp f0, f1
+/* 802859F0 00281650 FC 20 A8 90 */ fmr f1, f21
+/* 802859F4 00281654 EE BA 00 32 */ fmuls f21, f26, f0
+/* 802859F8 00281658 4B F4 E6 81 */ bl cos
+/* 802859FC 0028165C FC 00 08 18 */ frsp f0, f1
+/* 80285A00 00281660 57 C5 04 3E */ clrlwi r5, r30, 0x10
+/* 80285A04 00281664 38 60 00 98 */ li r3, 0x98
+/* 80285A08 00281668 38 80 00 03 */ li r4, 3
+/* 80285A0C 0028166C EE 9A 00 32 */ fmuls f20, f26, f0
+/* 80285A10 00281670 4B FF B7 39 */ bl GXBegin
+/* 80285A14 00281674 EF B4 D0 24 */ fdivs f29, f20, f26
+/* 80285A18 00281678 83 A1 00 08 */ lwz r29, 8(r1)
+/* 80285A1C 0028167C 3B 60 00 00 */ li r27, 0
+/* 80285A20 00281680 EF F5 D0 24 */ fdivs f31, f21, f26
+/* 80285A24 00281684 48 00 01 28 */ b lbl_80285B4C
+lbl_80285A28:
+/* 80285A28 00281688 6F 60 80 00 */ xoris r0, r27, 0x8000
+/* 80285A2C 0028168C 90 01 00 1C */ stw r0, 0x1c(r1)
+/* 80285A30 00281690 C8 01 00 18 */ lfd f0, 0x18(r1)
+/* 80285A34 00281694 EC 00 E0 28 */ fsubs f0, f0, f28
+/* 80285A38 00281698 EE 60 06 32 */ fmuls f19, f0, f24
+/* 80285A3C 0028169C FC 20 98 90 */ fmr f1, f19
+/* 80285A40 002816A0 4B F4 E6 39 */ bl cos
+/* 80285A44 002816A4 FF 60 08 18 */ frsp f27, f1
+/* 80285A48 002816A8 FC 20 98 90 */ fmr f1, f19
+/* 80285A4C 002816AC 4B F4 EA 39 */ bl sin
+/* 80285A50 002816B0 FC 80 08 18 */ frsp f4, f1
+/* 80285A54 002816B4 2C 1D 00 00 */ cmpwi r29, 0
+/* 80285A58 002816B8 EC 5B 05 B2 */ fmuls f2, f27, f22
+/* 80285A5C 002816BC EC 04 05 B2 */ fmuls f0, f4, f22
+/* 80285A60 002816C0 D0 5F 80 00 */ stfs f2, -0x8000(r31)
+/* 80285A64 002816C4 EC 22 D0 24 */ fdivs f1, f2, f26
+/* 80285A68 002816C8 D0 1F 80 00 */ stfs f0, -0x8000(r31)
+/* 80285A6C 002816CC D2 9F 80 00 */ stfs f20, -0x8000(r31)
+/* 80285A70 002816D0 EC 00 D0 24 */ fdivs f0, f0, f26
+/* 80285A74 002816D4 D0 3F 80 00 */ stfs f1, -0x8000(r31)
+/* 80285A78 002816D8 D0 1F 80 00 */ stfs f0, -0x8000(r31)
+/* 80285A7C 002816DC D3 BF 80 00 */ stfs f29, -0x8000(r31)
+/* 80285A80 002816E0 41 82 00 50 */ beq lbl_80285AD0
+/* 80285A84 002816E4 6F 63 80 00 */ xoris r3, r27, 0x8000
+/* 80285A88 002816E8 93 41 00 1C */ stw r26, 0x1c(r1)
+/* 80285A8C 002816EC 38 1C 00 01 */ addi r0, r28, 1
+/* 80285A90 002816F0 90 61 00 14 */ stw r3, 0x14(r1)
+/* 80285A94 002816F4 6C 00 80 00 */ xoris r0, r0, 0x8000
+/* 80285A98 002816F8 C8 01 00 18 */ lfd f0, 0x18(r1)
+/* 80285A9C 002816FC C8 21 00 10 */ lfd f1, 0x10(r1)
+/* 80285AA0 00281700 93 21 00 1C */ stw r25, 0x1c(r1)
+/* 80285AA4 00281704 EC 40 F0 28 */ fsubs f2, f0, f30
+/* 80285AA8 00281708 EC 61 E0 28 */ fsubs f3, f1, f28
+/* 80285AAC 0028170C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80285AB0 00281710 C8 01 00 18 */ lfd f0, 0x18(r1)
+/* 80285AB4 00281714 C8 21 00 10 */ lfd f1, 0x10(r1)
+/* 80285AB8 00281718 EC 43 10 24 */ fdivs f2, f3, f2
+/* 80285ABC 0028171C EC 21 E0 28 */ fsubs f1, f1, f28
+/* 80285AC0 00281720 D0 5F 80 00 */ stfs f2, -0x8000(r31)
+/* 80285AC4 00281724 EC 00 F0 28 */ fsubs f0, f0, f30
+/* 80285AC8 00281728 EC 01 00 24 */ fdivs f0, f1, f0
+/* 80285ACC 0028172C D0 1F 80 00 */ stfs f0, -0x8000(r31)
+lbl_80285AD0:
+/* 80285AD0 00281730 EC 5B 05 F2 */ fmuls f2, f27, f23
+/* 80285AD4 00281734 2C 1D 00 00 */ cmpwi r29, 0
+/* 80285AD8 00281738 EC 04 05 F2 */ fmuls f0, f4, f23
+/* 80285ADC 0028173C D0 5F 80 00 */ stfs f2, -0x8000(r31)
+/* 80285AE0 00281740 EC 22 D0 24 */ fdivs f1, f2, f26
+/* 80285AE4 00281744 D0 1F 80 00 */ stfs f0, -0x8000(r31)
+/* 80285AE8 00281748 D2 BF 80 00 */ stfs f21, -0x8000(r31)
+/* 80285AEC 0028174C EC 00 D0 24 */ fdivs f0, f0, f26
+/* 80285AF0 00281750 D0 3F 80 00 */ stfs f1, -0x8000(r31)
+/* 80285AF4 00281754 D0 1F 80 00 */ stfs f0, -0x8000(r31)
+/* 80285AF8 00281758 D3 FF 80 00 */ stfs f31, -0x8000(r31)
+/* 80285AFC 0028175C 41 82 00 4C */ beq lbl_80285B48
+/* 80285B00 00281760 6F 63 80 00 */ xoris r3, r27, 0x8000
+/* 80285B04 00281764 93 41 00 1C */ stw r26, 0x1c(r1)
+/* 80285B08 00281768 6F 80 80 00 */ xoris r0, r28, 0x8000
+/* 80285B0C 0028176C 90 61 00 14 */ stw r3, 0x14(r1)
+/* 80285B10 00281770 C8 01 00 18 */ lfd f0, 0x18(r1)
+/* 80285B14 00281774 C8 21 00 10 */ lfd f1, 0x10(r1)
+/* 80285B18 00281778 93 21 00 1C */ stw r25, 0x1c(r1)
+/* 80285B1C 0028177C EC 40 F0 28 */ fsubs f2, f0, f30
+/* 80285B20 00281780 EC 61 E0 28 */ fsubs f3, f1, f28
+/* 80285B24 00281784 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80285B28 00281788 C8 01 00 18 */ lfd f0, 0x18(r1)
+/* 80285B2C 0028178C C8 21 00 10 */ lfd f1, 0x10(r1)
+/* 80285B30 00281790 EC 43 10 24 */ fdivs f2, f3, f2
+/* 80285B34 00281794 EC 21 E0 28 */ fsubs f1, f1, f28
+/* 80285B38 00281798 D0 5F 80 00 */ stfs f2, -0x8000(r31)
+/* 80285B3C 0028179C EC 00 F0 28 */ fsubs f0, f0, f30
+/* 80285B40 002817A0 EC 01 00 24 */ fdivs f0, f1, f0
+/* 80285B44 002817A4 D0 1F 80 00 */ stfs f0, -0x8000(r31)
+lbl_80285B48:
+/* 80285B48 002817A8 3B 7B 00 01 */ addi r27, r27, 1
+lbl_80285B4C:
+/* 80285B4C 002817AC 7C 1B D0 00 */ cmpw r27, r26
+/* 80285B50 002817B0 40 81 FE D8 */ ble lbl_80285A28
+/* 80285B54 002817B4 3B 9C 00 01 */ addi r28, r28, 1
+lbl_80285B58:
+/* 80285B58 002817B8 7C 1C C8 00 */ cmpw r28, r25
+/* 80285B5C 002817BC 41 80 FE 50 */ blt lbl_802859AC
+/* 80285B60 002817C0 3C 60 80 51 */ lis r3, lbl_80515FF8@ha
+/* 80285B64 002817C4 38 63 5F F8 */ addi r3, r3, lbl_80515FF8@l
+/* 80285B68 002817C8 4B FF 9A F1 */ bl GXSetVtxDescv
+/* 80285B6C 002817CC 3C 80 80 51 */ lis r4, lbl_805160D0@ha
+/* 80285B70 002817D0 38 60 00 03 */ li r3, 3
+/* 80285B74 002817D4 38 84 60 D0 */ addi r4, r4, lbl_805160D0@l
+/* 80285B78 002817D8 4B FF A2 E1 */ bl GXSetVtxAttrFmtv
+/* 80285B7C 002817DC E3 E1 01 08 */ psq_l f31, 264(r1), 0, qr0
+/* 80285B80 002817E0 CB E1 01 00 */ lfd f31, 0x100(r1)
+/* 80285B84 002817E4 E3 C1 00 F8 */ psq_l f30, 248(r1), 0, qr0
+/* 80285B88 002817E8 CB C1 00 F0 */ lfd f30, 0xf0(r1)
+/* 80285B8C 002817EC E3 A1 00 E8 */ psq_l f29, 232(r1), 0, qr0
+/* 80285B90 002817F0 CB A1 00 E0 */ lfd f29, 0xe0(r1)
+/* 80285B94 002817F4 E3 81 00 D8 */ psq_l f28, 216(r1), 0, qr0
+/* 80285B98 002817F8 CB 81 00 D0 */ lfd f28, 0xd0(r1)
+/* 80285B9C 002817FC E3 61 00 C8 */ psq_l f27, 200(r1), 0, qr0
+/* 80285BA0 00281800 CB 61 00 C0 */ lfd f27, 0xc0(r1)
+/* 80285BA4 00281804 E3 41 00 B8 */ psq_l f26, 184(r1), 0, qr0
+/* 80285BA8 00281808 CB 41 00 B0 */ lfd f26, 0xb0(r1)
+/* 80285BAC 0028180C E3 21 00 A8 */ psq_l f25, 168(r1), 0, qr0
+/* 80285BB0 00281810 CB 21 00 A0 */ lfd f25, 0xa0(r1)
+/* 80285BB4 00281814 E3 01 00 98 */ psq_l f24, 152(r1), 0, qr0
+/* 80285BB8 00281818 CB 01 00 90 */ lfd f24, 0x90(r1)
+/* 80285BBC 0028181C E2 E1 00 88 */ psq_l f23, 136(r1), 0, qr0
+/* 80285BC0 00281820 CA E1 00 80 */ lfd f23, 0x80(r1)
+/* 80285BC4 00281824 E2 C1 00 78 */ psq_l f22, 120(r1), 0, qr0
+/* 80285BC8 00281828 CA C1 00 70 */ lfd f22, 0x70(r1)
+/* 80285BCC 0028182C E2 A1 00 68 */ psq_l f21, 104(r1), 0, qr0
+/* 80285BD0 00281830 CA A1 00 60 */ lfd f21, 0x60(r1)
+/* 80285BD4 00281834 E2 81 00 58 */ psq_l f20, 88(r1), 0, qr0
+/* 80285BD8 00281838 CA 81 00 50 */ lfd f20, 0x50(r1)
+/* 80285BDC 0028183C E2 61 00 48 */ psq_l f19, 72(r1), 0, qr0
+/* 80285BE0 00281840 39 61 00 40 */ addi r11, r1, 0x40
+/* 80285BE4 00281844 CA 61 00 40 */ lfd f19, 0x40(r1)
+/* 80285BE8 00281848 4B F4 15 85 */ bl _restgpr_25
+/* 80285BEC 0028184C 80 01 01 14 */ lwz r0, 0x114(r1)
+/* 80285BF0 00281850 7C 08 03 A6 */ mtlr r0
+/* 80285BF4 00281854 38 21 01 10 */ addi r1, r1, 0x110
+/* 80285BF8 00281858 4E 80 00 20 */ blr
diff --git a/asm/SDK/GX/GXFifo.s b/asm/SDK/GX/GXFifo.s
new file mode 100644
index 0000000..80701df
--- /dev/null
+++ b/asm/SDK/GX/GXFifo.s
@@ -0,0 +1,853 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global GXCPInterruptHandler
+GXCPInterruptHandler:
+/* 8027E7EC 0027A44C 94 21 FD 20 */ stwu r1, -0x2e0(r1)
+/* 8027E7F0 0027A450 7C 08 02 A6 */ mflr r0
+/* 8027E7F4 0027A454 90 01 02 E4 */ stw r0, 0x2e4(r1)
+/* 8027E7F8 0027A458 93 E1 02 DC */ stw r31, 0x2dc(r1)
+/* 8027E7FC 0027A45C 83 E2 A0 D0 */ lwz r31, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027E800 0027A460 93 C1 02 D8 */ stw r30, 0x2d8(r1)
+/* 8027E804 0027A464 7C 9E 23 78 */ mr r30, r4
+/* 8027E808 0027A468 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027E80C 0027A46C A0 03 00 00 */ lhz r0, 0(r3)
+/* 8027E810 0027A470 90 1F 00 0C */ stw r0, 0xc(r31)
+/* 8027E814 0027A474 80 1F 00 08 */ lwz r0, 8(r31)
+/* 8027E818 0027A478 54 00 EF FF */ rlwinm. r0, r0, 0x1d, 0x1f, 0x1f
+/* 8027E81C 0027A47C 41 82 00 50 */ beq lbl_8027E86C
+/* 8027E820 0027A480 80 1F 00 0C */ lwz r0, 0xc(r31)
+/* 8027E824 0027A484 54 00 FF FF */ rlwinm. r0, r0, 0x1f, 0x1f, 0x1f
+/* 8027E828 0027A488 41 82 00 44 */ beq lbl_8027E86C
+/* 8027E82C 0027A48C 80 6D A9 CC */ lwz r3, lbl_8063FC8C-_SDA_BASE_(r13)
+/* 8027E830 0027A490 4B FF 37 19 */ bl OSResumeThread
+/* 8027E834 0027A494 38 00 00 00 */ li r0, 0
+/* 8027E838 0027A498 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027E83C 0027A49C 90 0D A9 C8 */ stw r0, lbl_8063FC88-_SDA_BASE_(r13)
+/* 8027E840 0027A4A0 80 03 00 10 */ lwz r0, 0x10(r3)
+/* 8027E844 0027A4A4 60 00 00 03 */ ori r0, r0, 3
+/* 8027E848 0027A4A8 90 03 00 10 */ stw r0, 0x10(r3)
+/* 8027E84C 0027A4AC 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027E850 0027A4B0 B0 03 00 04 */ sth r0, 4(r3)
+/* 8027E854 0027A4B4 80 1F 00 08 */ lwz r0, 8(r31)
+/* 8027E858 0027A4B8 60 00 00 04 */ ori r0, r0, 4
+/* 8027E85C 0027A4BC 54 00 07 76 */ rlwinm r0, r0, 0, 0x1d, 0x1b
+/* 8027E860 0027A4C0 90 1F 00 08 */ stw r0, 8(r31)
+/* 8027E864 0027A4C4 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027E868 0027A4C8 B0 03 00 02 */ sth r0, 2(r3)
+lbl_8027E86C:
+/* 8027E86C 0027A4CC 80 1F 00 08 */ lwz r0, 8(r31)
+/* 8027E870 0027A4D0 54 00 F7 FF */ rlwinm. r0, r0, 0x1e, 0x1f, 0x1f
+/* 8027E874 0027A4D4 41 82 00 60 */ beq lbl_8027E8D4
+/* 8027E878 0027A4D8 80 1F 00 0C */ lwz r0, 0xc(r31)
+/* 8027E87C 0027A4DC 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 8027E880 0027A4E0 41 82 00 54 */ beq lbl_8027E8D4
+/* 8027E884 0027A4E4 80 6D A9 BC */ lwz r3, lbl_8063FC7C-_SDA_BASE_(r13)
+/* 8027E888 0027A4E8 38 00 00 01 */ li r0, 1
+/* 8027E88C 0027A4EC 80 A2 A0 D0 */ lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027E890 0027A4F0 38 63 00 01 */ addi r3, r3, 1
+/* 8027E894 0027A4F4 90 6D A9 BC */ stw r3, lbl_8063FC7C-_SDA_BASE_(r13)
+/* 8027E898 0027A4F8 80 7F 00 08 */ lwz r3, 8(r31)
+/* 8027E89C 0027A4FC 54 64 07 B8 */ rlwinm r4, r3, 0, 0x1e, 0x1c
+/* 8027E8A0 0027A500 60 84 00 08 */ ori r4, r4, 8
+/* 8027E8A4 0027A504 90 9F 00 08 */ stw r4, 8(r31)
+/* 8027E8A8 0027A508 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027E8AC 0027A50C B0 83 00 02 */ sth r4, 2(r3)
+/* 8027E8B0 0027A510 80 65 00 10 */ lwz r3, 0x10(r5)
+/* 8027E8B4 0027A514 60 63 00 01 */ ori r3, r3, 1
+/* 8027E8B8 0027A518 54 64 07 FA */ rlwinm r4, r3, 0, 0x1f, 0x1d
+/* 8027E8BC 0027A51C 90 85 00 10 */ stw r4, 0x10(r5)
+/* 8027E8C0 0027A520 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027E8C4 0027A524 B0 83 00 04 */ sth r4, 4(r3)
+/* 8027E8C8 0027A528 90 0D A9 C8 */ stw r0, lbl_8063FC88-_SDA_BASE_(r13)
+/* 8027E8CC 0027A52C 80 6D A9 CC */ lwz r3, lbl_8063FC8C-_SDA_BASE_(r13)
+/* 8027E8D0 0027A530 4B FF 39 11 */ bl OSSuspendThread
+lbl_8027E8D4:
+/* 8027E8D4 0027A534 80 7F 00 08 */ lwz r3, 8(r31)
+/* 8027E8D8 0027A538 54 60 DF FF */ rlwinm. r0, r3, 0x1b, 0x1f, 0x1f
+/* 8027E8DC 0027A53C 41 82 00 58 */ beq lbl_8027E934
+/* 8027E8E0 0027A540 80 1F 00 0C */ lwz r0, 0xc(r31)
+/* 8027E8E4 0027A544 54 00 E7 FF */ rlwinm. r0, r0, 0x1c, 0x1f, 0x1f
+/* 8027E8E8 0027A548 41 82 00 4C */ beq lbl_8027E934
+/* 8027E8EC 0027A54C 54 60 06 F2 */ rlwinm r0, r3, 0, 0x1b, 0x19
+/* 8027E8F0 0027A550 90 1F 00 08 */ stw r0, 8(r31)
+/* 8027E8F4 0027A554 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027E8F8 0027A558 B0 03 00 02 */ sth r0, 2(r3)
+/* 8027E8FC 0027A55C 80 0D A9 C4 */ lwz r0, lbl_8063FC84-_SDA_BASE_(r13)
+/* 8027E900 0027A560 2C 00 00 00 */ cmpwi r0, 0
+/* 8027E904 0027A564 41 82 00 30 */ beq lbl_8027E934
+/* 8027E908 0027A568 38 61 00 08 */ addi r3, r1, 8
+/* 8027E90C 0027A56C 4B FE C7 85 */ bl OSClearContext
+/* 8027E910 0027A570 38 61 00 08 */ addi r3, r1, 8
+/* 8027E914 0027A574 4B FE C5 55 */ bl OSSetCurrentContext
+/* 8027E918 0027A578 81 8D A9 C4 */ lwz r12, lbl_8063FC84-_SDA_BASE_(r13)
+/* 8027E91C 0027A57C 7D 89 03 A6 */ mtctr r12
+/* 8027E920 0027A580 4E 80 04 21 */ bctrl
+/* 8027E924 0027A584 38 61 00 08 */ addi r3, r1, 8
+/* 8027E928 0027A588 4B FE C7 69 */ bl OSClearContext
+/* 8027E92C 0027A58C 7F C3 F3 78 */ mr r3, r30
+/* 8027E930 0027A590 4B FE C5 39 */ bl OSSetCurrentContext
+lbl_8027E934:
+/* 8027E934 0027A594 80 01 02 E4 */ lwz r0, 0x2e4(r1)
+/* 8027E938 0027A598 83 E1 02 DC */ lwz r31, 0x2dc(r1)
+/* 8027E93C 0027A59C 83 C1 02 D8 */ lwz r30, 0x2d8(r1)
+/* 8027E940 0027A5A0 7C 08 03 A6 */ mtlr r0
+/* 8027E944 0027A5A4 38 21 02 E0 */ addi r1, r1, 0x2e0
+/* 8027E948 0027A5A8 4E 80 00 20 */ blr
+
+.global GXInitFifoBase
+GXInitFifoBase:
+/* 8027E94C 0027A5AC 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8027E950 0027A5B0 7C 08 02 A6 */ mflr r0
+/* 8027E954 0027A5B4 7C E4 2A 14 */ add r7, r4, r5
+/* 8027E958 0027A5B8 38 C5 C0 00 */ addi r6, r5, -16384
+/* 8027E95C 0027A5BC 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8027E960 0027A5C0 38 E7 FF FC */ addi r7, r7, -4
+/* 8027E964 0027A5C4 54 A0 F8 74 */ rlwinm r0, r5, 0x1f, 1, 0x1a
+/* 8027E968 0027A5C8 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8027E96C 0027A5CC 3B E0 00 00 */ li r31, 0
+/* 8027E970 0027A5D0 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8027E974 0027A5D4 7C 9E 23 78 */ mr r30, r4
+/* 8027E978 0027A5D8 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8027E97C 0027A5DC 7C 7D 1B 78 */ mr r29, r3
+/* 8027E980 0027A5E0 90 83 00 00 */ stw r4, 0(r3)
+/* 8027E984 0027A5E4 90 E3 00 04 */ stw r7, 4(r3)
+/* 8027E988 0027A5E8 90 A3 00 08 */ stw r5, 8(r3)
+/* 8027E98C 0027A5EC 93 E3 00 1C */ stw r31, 0x1c(r3)
+/* 8027E990 0027A5F0 90 C3 00 0C */ stw r6, 0xc(r3)
+/* 8027E994 0027A5F4 90 03 00 10 */ stw r0, 0x10(r3)
+/* 8027E998 0027A5F8 4B FE FD C5 */ bl OSDisableInterrupts
+/* 8027E99C 0027A5FC 2C 1F 00 00 */ cmpwi r31, 0
+/* 8027E9A0 0027A600 93 DD 00 14 */ stw r30, 0x14(r29)
+/* 8027E9A4 0027A604 93 DD 00 18 */ stw r30, 0x18(r29)
+/* 8027E9A8 0027A608 93 FD 00 1C */ stw r31, 0x1c(r29)
+/* 8027E9AC 0027A60C 40 80 00 0C */ bge lbl_8027E9B8
+/* 8027E9B0 0027A610 80 1D 00 08 */ lwz r0, 8(r29)
+/* 8027E9B4 0027A614 90 1D 00 1C */ stw r0, 0x1c(r29)
+lbl_8027E9B8:
+/* 8027E9B8 0027A618 4B FE FD CD */ bl OSRestoreInterrupts
+/* 8027E9BC 0027A61C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8027E9C0 0027A620 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8027E9C4 0027A624 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8027E9C8 0027A628 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8027E9CC 0027A62C 7C 08 03 A6 */ mtlr r0
+/* 8027E9D0 0027A630 38 21 00 20 */ addi r1, r1, 0x20
+/* 8027E9D4 0027A634 4E 80 00 20 */ blr
+
+.global CPGPLinkCheck
+CPGPLinkCheck:
+/* 8027E9D8 0027A638 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8027E9DC 0027A63C 7C 08 02 A6 */ mflr r0
+/* 8027E9E0 0027A640 38 E0 00 00 */ li r7, 0
+/* 8027E9E4 0027A644 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8027E9E8 0027A648 88 0D A9 B8 */ lbz r0, lbl_8063FC78-_SDA_BASE_(r13)
+/* 8027E9EC 0027A64C 2C 00 00 00 */ cmpwi r0, 0
+/* 8027E9F0 0027A650 41 82 00 10 */ beq lbl_8027EA00
+/* 8027E9F4 0027A654 88 0D A9 B9 */ lbz r0, lbl_8063FC79-_SDA_BASE_(r13)
+/* 8027E9F8 0027A658 2C 00 00 00 */ cmpwi r0, 0
+/* 8027E9FC 0027A65C 40 82 00 0C */ bne lbl_8027EA08
+lbl_8027EA00:
+/* 8027EA00 0027A660 38 60 00 00 */ li r3, 0
+/* 8027EA04 0027A664 48 00 00 BC */ b lbl_8027EAC0
+lbl_8027EA08:
+/* 8027EA08 0027A668 3C 80 80 51 */ lis r4, lbl_80515FB0@ha
+/* 8027EA0C 0027A66C 3C 60 80 51 */ lis r3, lbl_80515FD4@ha
+/* 8027EA10 0027A670 80 C4 5F B0 */ lwz r6, lbl_80515FB0@l(r4)
+/* 8027EA14 0027A674 80 83 5F D4 */ lwz r4, lbl_80515FD4@l(r3)
+/* 8027EA18 0027A678 7C 04 30 40 */ cmplw r4, r6
+/* 8027EA1C 0027A67C 40 82 00 08 */ bne lbl_8027EA24
+/* 8027EA20 0027A680 38 E0 00 01 */ li r7, 1
+lbl_8027EA24:
+/* 8027EA24 0027A684 3C A0 80 51 */ lis r5, lbl_80515FB0@ha
+/* 8027EA28 0027A688 3C 60 80 51 */ lis r3, lbl_80515FD4@ha
+/* 8027EA2C 0027A68C 38 A5 5F B0 */ addi r5, r5, lbl_80515FB0@l
+/* 8027EA30 0027A690 38 63 5F D4 */ addi r3, r3, lbl_80515FD4@l
+/* 8027EA34 0027A694 80 05 00 04 */ lwz r0, 4(r5)
+/* 8027EA38 0027A698 80 A3 00 04 */ lwz r5, 4(r3)
+/* 8027EA3C 0027A69C 7C 05 00 40 */ cmplw r5, r0
+/* 8027EA40 0027A6A0 40 82 00 08 */ bne lbl_8027EA48
+/* 8027EA44 0027A6A4 38 E7 00 01 */ addi r7, r7, 1
+lbl_8027EA48:
+/* 8027EA48 0027A6A8 28 07 00 02 */ cmplwi r7, 2
+/* 8027EA4C 0027A6AC 40 82 00 0C */ bne lbl_8027EA58
+/* 8027EA50 0027A6B0 38 60 00 01 */ li r3, 1
+/* 8027EA54 0027A6B4 48 00 00 6C */ b lbl_8027EAC0
+lbl_8027EA58:
+/* 8027EA58 0027A6B8 7C 66 28 51 */ subf. r3, r6, r5
+/* 8027EA5C 0027A6BC 7C C4 00 50 */ subf r6, r4, r0
+/* 8027EA60 0027A6C0 38 00 00 00 */ li r0, 0
+/* 8027EA64 0027A6C4 40 81 00 0C */ ble lbl_8027EA70
+/* 8027EA68 0027A6C8 2C 06 00 00 */ cmpwi r6, 0
+/* 8027EA6C 0027A6CC 41 81 00 14 */ bgt lbl_8027EA80
+lbl_8027EA70:
+/* 8027EA70 0027A6D0 2C 03 00 00 */ cmpwi r3, 0
+/* 8027EA74 0027A6D4 40 80 00 10 */ bge lbl_8027EA84
+/* 8027EA78 0027A6D8 2C 06 00 00 */ cmpwi r6, 0
+/* 8027EA7C 0027A6DC 40 80 00 08 */ bge lbl_8027EA84
+lbl_8027EA80:
+/* 8027EA80 0027A6E0 38 00 00 01 */ li r0, 1
+lbl_8027EA84:
+/* 8027EA84 0027A6E4 2C 00 00 00 */ cmpwi r0, 0
+/* 8027EA88 0027A6E8 41 82 00 34 */ beq lbl_8027EABC
+/* 8027EA8C 0027A6EC 3C 60 80 43 */ lis r3, lbl_80434CE0@ha
+/* 8027EA90 0027A6F0 38 63 4C E0 */ addi r3, r3, lbl_80434CE0@l
+/* 8027EA94 0027A6F4 4C C6 31 82 */ crclr 6
+/* 8027EA98 0027A6F8 4B D8 90 2D */ bl func_80007AC4
+/* 8027EA9C 0027A6FC 3C 80 80 51 */ lis r4, lbl_80515FB0@ha
+/* 8027EAA0 0027A700 3C 60 80 43 */ lis r3, lbl_80434CF8@ha
+/* 8027EAA4 0027A704 38 A4 5F B0 */ addi r5, r4, lbl_80515FB0@l
+/* 8027EAA8 0027A708 80 84 5F B0 */ lwz r4, 0x5fb0(r4)
+/* 8027EAAC 0027A70C 80 A5 00 04 */ lwz r5, 4(r5)
+/* 8027EAB0 0027A710 38 63 4C F8 */ addi r3, r3, lbl_80434CF8@l
+/* 8027EAB4 0027A714 4C C6 31 82 */ crclr 6
+/* 8027EAB8 0027A718 4B D8 90 0D */ bl func_80007AC4
+lbl_8027EABC:
+/* 8027EABC 0027A71C 38 60 00 00 */ li r3, 0
+lbl_8027EAC0:
+/* 8027EAC0 0027A720 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8027EAC4 0027A724 7C 08 03 A6 */ mtlr r0
+/* 8027EAC8 0027A728 38 21 00 10 */ addi r1, r1, 0x10
+/* 8027EACC 0027A72C 4E 80 00 20 */ blr
+
+.global GXSetCPUFifo
+GXSetCPUFifo:
+/* 8027EAD0 0027A730 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8027EAD4 0027A734 7C 08 02 A6 */ mflr r0
+/* 8027EAD8 0027A738 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8027EADC 0027A73C 39 61 00 20 */ addi r11, r1, 0x20
+/* 8027EAE0 0027A740 4B F4 86 49 */ bl _savegpr_27
+/* 8027EAE4 0027A744 7C 7B 1B 78 */ mr r27, r3
+/* 8027EAE8 0027A748 4B FE FC 75 */ bl OSDisableInterrupts
+/* 8027EAEC 0027A74C 2C 1B 00 00 */ cmpwi r27, 0
+/* 8027EAF0 0027A750 7C 7E 1B 78 */ mr r30, r3
+/* 8027EAF4 0027A754 40 82 00 28 */ bne lbl_8027EB1C
+/* 8027EAF8 0027A758 3C 80 80 51 */ lis r4, lbl_80515FD4@ha
+/* 8027EAFC 0027A75C 38 00 00 00 */ li r0, 0
+/* 8027EB00 0027A760 38 84 5F D4 */ addi r4, r4, lbl_80515FD4@l
+/* 8027EB04 0027A764 98 0D A9 B8 */ stb r0, lbl_8063FC78-_SDA_BASE_(r13)
+/* 8027EB08 0027A768 98 0D A9 D0 */ stb r0, lbl_8063FC90-_SDA_BASE_(r13)
+/* 8027EB0C 0027A76C 98 04 00 22 */ stb r0, 0x22(r4)
+/* 8027EB10 0027A770 98 04 00 21 */ stb r0, 0x21(r4)
+/* 8027EB14 0027A774 4B FE FC 71 */ bl OSRestoreInterrupts
+/* 8027EB18 0027A778 48 00 01 80 */ b lbl_8027EC98
+lbl_8027EB1C:
+/* 8027EB1C 0027A77C 3F 80 80 51 */ lis r28, lbl_80515FD4@ha
+/* 8027EB20 0027A780 80 7B 00 00 */ lwz r3, 0(r27)
+/* 8027EB24 0027A784 80 1B 00 04 */ lwz r0, 4(r27)
+/* 8027EB28 0027A788 3B FC 5F D4 */ addi r31, r28, lbl_80515FD4@l
+/* 8027EB2C 0027A78C 3B A0 00 01 */ li r29, 1
+/* 8027EB30 0027A790 90 7F 00 00 */ stw r3, 0(r31)
+/* 8027EB34 0027A794 90 1F 00 04 */ stw r0, 4(r31)
+/* 8027EB38 0027A798 80 7B 00 08 */ lwz r3, 8(r27)
+/* 8027EB3C 0027A79C 80 1B 00 0C */ lwz r0, 0xc(r27)
+/* 8027EB40 0027A7A0 90 7F 00 08 */ stw r3, 8(r31)
+/* 8027EB44 0027A7A4 90 1F 00 0C */ stw r0, 0xc(r31)
+/* 8027EB48 0027A7A8 80 7B 00 10 */ lwz r3, 0x10(r27)
+/* 8027EB4C 0027A7AC 80 1B 00 14 */ lwz r0, 0x14(r27)
+/* 8027EB50 0027A7B0 90 7F 00 10 */ stw r3, 0x10(r31)
+/* 8027EB54 0027A7B4 90 1F 00 14 */ stw r0, 0x14(r31)
+/* 8027EB58 0027A7B8 80 7B 00 18 */ lwz r3, 0x18(r27)
+/* 8027EB5C 0027A7BC 80 1B 00 1C */ lwz r0, 0x1c(r27)
+/* 8027EB60 0027A7C0 90 7F 00 18 */ stw r3, 0x18(r31)
+/* 8027EB64 0027A7C4 90 1F 00 1C */ stw r0, 0x1c(r31)
+/* 8027EB68 0027A7C8 80 1B 00 20 */ lwz r0, 0x20(r27)
+/* 8027EB6C 0027A7CC 90 1F 00 20 */ stw r0, 0x20(r31)
+/* 8027EB70 0027A7D0 9B AD A9 B8 */ stb r29, lbl_8063FC78-_SDA_BASE_(r13)
+/* 8027EB74 0027A7D4 9B BF 00 21 */ stb r29, 0x21(r31)
+/* 8027EB78 0027A7D8 4B FF FE 61 */ bl CPGPLinkCheck
+/* 8027EB7C 0027A7DC 54 60 06 3F */ clrlwi. r0, r3, 0x18
+/* 8027EB80 0027A7E0 41 82 00 88 */ beq lbl_8027EC08
+/* 8027EB84 0027A7E4 80 9C 5F D4 */ lwz r4, 0x5fd4(r28)
+/* 8027EB88 0027A7E8 38 00 00 00 */ li r0, 0
+/* 8027EB8C 0027A7EC 9B AD A9 D0 */ stb r29, lbl_8063FC90-_SDA_BASE_(r13)
+/* 8027EB90 0027A7F0 80 6D A9 90 */ lwz r3, lbl_8063FC50-_SDA_BASE_(r13)
+/* 8027EB94 0027A7F4 54 84 00 BE */ clrlwi r4, r4, 2
+/* 8027EB98 0027A7F8 9B BF 00 22 */ stb r29, 0x22(r31)
+/* 8027EB9C 0027A7FC 80 A2 A0 D0 */ lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027EBA0 0027A800 90 83 00 0C */ stw r4, 0xc(r3)
+/* 8027EBA4 0027A804 80 9F 00 04 */ lwz r4, 4(r31)
+/* 8027EBA8 0027A808 80 6D A9 90 */ lwz r3, lbl_8063FC50-_SDA_BASE_(r13)
+/* 8027EBAC 0027A80C 54 84 00 BE */ clrlwi r4, r4, 2
+/* 8027EBB0 0027A810 90 83 00 10 */ stw r4, 0x10(r3)
+/* 8027EBB4 0027A814 80 9F 00 18 */ lwz r4, 0x18(r31)
+/* 8027EBB8 0027A818 80 6D A9 90 */ lwz r3, lbl_8063FC50-_SDA_BASE_(r13)
+/* 8027EBBC 0027A81C 50 80 00 F4 */ rlwimi r0, r4, 0, 3, 0x1a
+/* 8027EBC0 0027A820 90 03 00 14 */ stw r0, 0x14(r3)
+/* 8027EBC4 0027A824 80 05 00 10 */ lwz r0, 0x10(r5)
+/* 8027EBC8 0027A828 60 00 00 03 */ ori r0, r0, 3
+/* 8027EBCC 0027A82C 90 05 00 10 */ stw r0, 0x10(r5)
+/* 8027EBD0 0027A830 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EBD4 0027A834 B0 03 00 04 */ sth r0, 4(r3)
+/* 8027EBD8 0027A838 80 05 00 08 */ lwz r0, 8(r5)
+/* 8027EBDC 0027A83C 60 00 00 04 */ ori r0, r0, 4
+/* 8027EBE0 0027A840 54 00 07 76 */ rlwinm r0, r0, 0, 0x1d, 0x1b
+/* 8027EBE4 0027A844 90 05 00 08 */ stw r0, 8(r5)
+/* 8027EBE8 0027A848 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EBEC 0027A84C B0 03 00 02 */ sth r0, 2(r3)
+/* 8027EBF0 0027A850 80 05 00 08 */ lwz r0, 8(r5)
+/* 8027EBF4 0027A854 60 00 00 10 */ ori r0, r0, 0x10
+/* 8027EBF8 0027A858 90 05 00 08 */ stw r0, 8(r5)
+/* 8027EBFC 0027A85C 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EC00 0027A860 B0 03 00 02 */ sth r0, 2(r3)
+/* 8027EC04 0027A864 48 00 00 88 */ b lbl_8027EC8C
+lbl_8027EC08:
+/* 8027EC08 0027A868 88 0D A9 D0 */ lbz r0, lbl_8063FC90-_SDA_BASE_(r13)
+/* 8027EC0C 0027A86C 38 80 00 00 */ li r4, 0
+/* 8027EC10 0027A870 98 9F 00 22 */ stb r4, 0x22(r31)
+/* 8027EC14 0027A874 2C 00 00 00 */ cmpwi r0, 0
+/* 8027EC18 0027A878 41 82 00 20 */ beq lbl_8027EC38
+/* 8027EC1C 0027A87C 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027EC20 0027A880 80 03 00 08 */ lwz r0, 8(r3)
+/* 8027EC24 0027A884 54 00 07 34 */ rlwinm r0, r0, 0, 0x1c, 0x1a
+/* 8027EC28 0027A888 90 03 00 08 */ stw r0, 8(r3)
+/* 8027EC2C 0027A88C 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EC30 0027A890 B0 03 00 02 */ sth r0, 2(r3)
+/* 8027EC34 0027A894 98 8D A9 D0 */ stb r4, lbl_8063FC90-_SDA_BASE_(r13)
+lbl_8027EC38:
+/* 8027EC38 0027A898 80 E2 A0 D0 */ lwz r7, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027EC3C 0027A89C 3C 60 80 51 */ lis r3, lbl_80515FD4@ha
+/* 8027EC40 0027A8A0 38 A3 5F D4 */ addi r5, r3, lbl_80515FD4@l
+/* 8027EC44 0027A8A4 38 00 00 00 */ li r0, 0
+/* 8027EC48 0027A8A8 80 87 00 08 */ lwz r4, 8(r7)
+/* 8027EC4C 0027A8AC 54 86 07 B6 */ rlwinm r6, r4, 0, 0x1e, 0x1b
+/* 8027EC50 0027A8B0 90 C7 00 08 */ stw r6, 8(r7)
+/* 8027EC54 0027A8B4 80 8D A9 94 */ lwz r4, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EC58 0027A8B8 B0 C4 00 02 */ sth r6, 2(r4)
+/* 8027EC5C 0027A8BC 80 83 5F D4 */ lwz r4, 0x5fd4(r3)
+/* 8027EC60 0027A8C0 80 6D A9 90 */ lwz r3, lbl_8063FC50-_SDA_BASE_(r13)
+/* 8027EC64 0027A8C4 54 84 00 BE */ clrlwi r4, r4, 2
+/* 8027EC68 0027A8C8 90 83 00 0C */ stw r4, 0xc(r3)
+/* 8027EC6C 0027A8CC 80 85 00 04 */ lwz r4, 4(r5)
+/* 8027EC70 0027A8D0 80 6D A9 90 */ lwz r3, lbl_8063FC50-_SDA_BASE_(r13)
+/* 8027EC74 0027A8D4 54 84 00 BE */ clrlwi r4, r4, 2
+/* 8027EC78 0027A8D8 90 83 00 10 */ stw r4, 0x10(r3)
+/* 8027EC7C 0027A8DC 80 85 00 18 */ lwz r4, 0x18(r5)
+/* 8027EC80 0027A8E0 80 6D A9 90 */ lwz r3, lbl_8063FC50-_SDA_BASE_(r13)
+/* 8027EC84 0027A8E4 50 80 00 F4 */ rlwimi r0, r4, 0, 3, 0x1a
+/* 8027EC88 0027A8E8 90 03 00 14 */ stw r0, 0x14(r3)
+lbl_8027EC8C:
+/* 8027EC8C 0027A8EC 4B FE 95 D5 */ bl PPCSync
+/* 8027EC90 0027A8F0 7F C3 F3 78 */ mr r3, r30
+/* 8027EC94 0027A8F4 4B FE FA F1 */ bl OSRestoreInterrupts
+lbl_8027EC98:
+/* 8027EC98 0027A8F8 39 61 00 20 */ addi r11, r1, 0x20
+/* 8027EC9C 0027A8FC 4B F4 84 D9 */ bl _restgpr_27
+/* 8027ECA0 0027A900 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8027ECA4 0027A904 7C 08 03 A6 */ mtlr r0
+/* 8027ECA8 0027A908 38 21 00 20 */ addi r1, r1, 0x20
+/* 8027ECAC 0027A90C 4E 80 00 20 */ blr
+
+.global GXSetGPFifo
+GXSetGPFifo:
+/* 8027ECB0 0027A910 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8027ECB4 0027A914 7C 08 02 A6 */ mflr r0
+/* 8027ECB8 0027A918 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8027ECBC 0027A91C 39 61 00 20 */ addi r11, r1, 0x20
+/* 8027ECC0 0027A920 4B F4 84 69 */ bl _savegpr_27
+/* 8027ECC4 0027A924 7C 7B 1B 78 */ mr r27, r3
+/* 8027ECC8 0027A928 4B FE FA 95 */ bl OSDisableInterrupts
+/* 8027ECCC 0027A92C 83 A2 A0 D0 */ lwz r29, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027ECD0 0027A930 2C 1B 00 00 */ cmpwi r27, 0
+/* 8027ECD4 0027A934 7C 7C 1B 78 */ mr r28, r3
+/* 8027ECD8 0027A938 80 1D 00 08 */ lwz r0, 8(r29)
+/* 8027ECDC 0027A93C 54 00 00 3C */ rlwinm r0, r0, 0, 0, 0x1e
+/* 8027ECE0 0027A940 90 1D 00 08 */ stw r0, 8(r29)
+/* 8027ECE4 0027A944 80 8D A9 94 */ lwz r4, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027ECE8 0027A948 B0 04 00 02 */ sth r0, 2(r4)
+/* 8027ECEC 0027A94C 80 1D 00 08 */ lwz r0, 8(r29)
+/* 8027ECF0 0027A950 54 00 07 B6 */ rlwinm r0, r0, 0, 0x1e, 0x1b
+/* 8027ECF4 0027A954 90 1D 00 08 */ stw r0, 8(r29)
+/* 8027ECF8 0027A958 80 8D A9 94 */ lwz r4, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027ECFC 0027A95C B0 04 00 02 */ sth r0, 2(r4)
+/* 8027ED00 0027A960 40 82 00 3C */ bne lbl_8027ED3C
+/* 8027ED04 0027A964 38 C0 00 00 */ li r6, 0
+/* 8027ED08 0027A968 3C 80 80 51 */ lis r4, lbl_80515FB0@ha
+/* 8027ED0C 0027A96C 98 CD A9 B9 */ stb r6, lbl_8063FC79-_SDA_BASE_(r13)
+/* 8027ED10 0027A970 38 84 5F B0 */ addi r4, r4, lbl_80515FB0@l
+/* 8027ED14 0027A974 98 CD A9 D0 */ stb r6, lbl_8063FC90-_SDA_BASE_(r13)
+/* 8027ED18 0027A978 80 1D 00 08 */ lwz r0, 8(r29)
+/* 8027ED1C 0027A97C 54 00 07 34 */ rlwinm r0, r0, 0, 0x1c, 0x1a
+/* 8027ED20 0027A980 90 1D 00 08 */ stw r0, 8(r29)
+/* 8027ED24 0027A984 80 AD A9 94 */ lwz r5, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027ED28 0027A988 B0 05 00 02 */ sth r0, 2(r5)
+/* 8027ED2C 0027A98C 98 C4 00 21 */ stb r6, 0x21(r4)
+/* 8027ED30 0027A990 98 C4 00 22 */ stb r6, 0x22(r4)
+/* 8027ED34 0027A994 4B FE FA 51 */ bl OSRestoreInterrupts
+/* 8027ED38 0027A998 48 00 01 F0 */ b lbl_8027EF28
+lbl_8027ED3C:
+/* 8027ED3C 0027A99C 3C 60 80 51 */ lis r3, lbl_80515FB0@ha
+/* 8027ED40 0027A9A0 80 DB 00 00 */ lwz r6, 0(r27)
+/* 8027ED44 0027A9A4 80 1B 00 04 */ lwz r0, 4(r27)
+/* 8027ED48 0027A9A8 3B C3 5F B0 */ addi r30, r3, lbl_80515FB0@l
+/* 8027ED4C 0027A9AC 3B E0 00 01 */ li r31, 1
+/* 8027ED50 0027A9B0 80 8D A9 94 */ lwz r4, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027ED54 0027A9B4 90 DE 00 00 */ stw r6, 0(r30)
+/* 8027ED58 0027A9B8 90 1E 00 04 */ stw r0, 4(r30)
+/* 8027ED5C 0027A9BC 80 BB 00 08 */ lwz r5, 8(r27)
+/* 8027ED60 0027A9C0 80 1B 00 0C */ lwz r0, 0xc(r27)
+/* 8027ED64 0027A9C4 90 BE 00 08 */ stw r5, 8(r30)
+/* 8027ED68 0027A9C8 90 1E 00 0C */ stw r0, 0xc(r30)
+/* 8027ED6C 0027A9CC 80 BB 00 10 */ lwz r5, 0x10(r27)
+/* 8027ED70 0027A9D0 80 1B 00 14 */ lwz r0, 0x14(r27)
+/* 8027ED74 0027A9D4 90 BE 00 10 */ stw r5, 0x10(r30)
+/* 8027ED78 0027A9D8 90 1E 00 14 */ stw r0, 0x14(r30)
+/* 8027ED7C 0027A9DC 80 BB 00 18 */ lwz r5, 0x18(r27)
+/* 8027ED80 0027A9E0 80 1B 00 1C */ lwz r0, 0x1c(r27)
+/* 8027ED84 0027A9E4 90 BE 00 18 */ stw r5, 0x18(r30)
+/* 8027ED88 0027A9E8 90 1E 00 1C */ stw r0, 0x1c(r30)
+/* 8027ED8C 0027A9EC 80 1B 00 20 */ lwz r0, 0x20(r27)
+/* 8027ED90 0027A9F0 90 1E 00 20 */ stw r0, 0x20(r30)
+/* 8027ED94 0027A9F4 9B ED A9 B9 */ stb r31, lbl_8063FC79-_SDA_BASE_(r13)
+/* 8027ED98 0027A9F8 9B FE 00 22 */ stb r31, 0x22(r30)
+/* 8027ED9C 0027A9FC B0 C4 00 20 */ sth r6, 0x20(r4)
+/* 8027EDA0 0027AA00 80 1E 00 04 */ lwz r0, 4(r30)
+/* 8027EDA4 0027AA04 80 8D A9 94 */ lwz r4, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EDA8 0027AA08 B0 04 00 24 */ sth r0, 0x24(r4)
+/* 8027EDAC 0027AA0C 80 1E 00 1C */ lwz r0, 0x1c(r30)
+/* 8027EDB0 0027AA10 80 8D A9 94 */ lwz r4, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EDB4 0027AA14 B0 04 00 30 */ sth r0, 0x30(r4)
+/* 8027EDB8 0027AA18 80 1E 00 18 */ lwz r0, 0x18(r30)
+/* 8027EDBC 0027AA1C 80 8D A9 94 */ lwz r4, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EDC0 0027AA20 B0 04 00 34 */ sth r0, 0x34(r4)
+/* 8027EDC4 0027AA24 80 1E 00 14 */ lwz r0, 0x14(r30)
+/* 8027EDC8 0027AA28 80 8D A9 94 */ lwz r4, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EDCC 0027AA2C B0 04 00 38 */ sth r0, 0x38(r4)
+/* 8027EDD0 0027AA30 80 1E 00 0C */ lwz r0, 0xc(r30)
+/* 8027EDD4 0027AA34 80 8D A9 94 */ lwz r4, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EDD8 0027AA38 B0 04 00 28 */ sth r0, 0x28(r4)
+/* 8027EDDC 0027AA3C 80 1E 00 10 */ lwz r0, 0x10(r30)
+/* 8027EDE0 0027AA40 80 8D A9 94 */ lwz r4, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EDE4 0027AA44 B0 04 00 2C */ sth r0, 0x2c(r4)
+/* 8027EDE8 0027AA48 80 03 5F B0 */ lwz r0, 0x5fb0(r3)
+/* 8027EDEC 0027AA4C 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EDF0 0027AA50 54 00 84 BE */ rlwinm r0, r0, 0x10, 0x12, 0x1f
+/* 8027EDF4 0027AA54 B0 03 00 22 */ sth r0, 0x22(r3)
+/* 8027EDF8 0027AA58 80 1E 00 04 */ lwz r0, 4(r30)
+/* 8027EDFC 0027AA5C 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EE00 0027AA60 54 00 84 BE */ rlwinm r0, r0, 0x10, 0x12, 0x1f
+/* 8027EE04 0027AA64 B0 03 00 26 */ sth r0, 0x26(r3)
+/* 8027EE08 0027AA68 80 1E 00 1C */ lwz r0, 0x1c(r30)
+/* 8027EE0C 0027AA6C 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EE10 0027AA70 7C 00 86 70 */ srawi r0, r0, 0x10
+/* 8027EE14 0027AA74 B0 03 00 32 */ sth r0, 0x32(r3)
+/* 8027EE18 0027AA78 80 1E 00 18 */ lwz r0, 0x18(r30)
+/* 8027EE1C 0027AA7C 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EE20 0027AA80 54 00 84 BE */ rlwinm r0, r0, 0x10, 0x12, 0x1f
+/* 8027EE24 0027AA84 B0 03 00 36 */ sth r0, 0x36(r3)
+/* 8027EE28 0027AA88 80 1E 00 14 */ lwz r0, 0x14(r30)
+/* 8027EE2C 0027AA8C 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EE30 0027AA90 54 00 84 BE */ rlwinm r0, r0, 0x10, 0x12, 0x1f
+/* 8027EE34 0027AA94 B0 03 00 3A */ sth r0, 0x3a(r3)
+/* 8027EE38 0027AA98 80 1E 00 0C */ lwz r0, 0xc(r30)
+/* 8027EE3C 0027AA9C 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EE40 0027AAA0 54 00 84 3E */ srwi r0, r0, 0x10
+/* 8027EE44 0027AAA4 B0 03 00 2A */ sth r0, 0x2a(r3)
+/* 8027EE48 0027AAA8 80 1E 00 10 */ lwz r0, 0x10(r30)
+/* 8027EE4C 0027AAAC 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EE50 0027AAB0 54 00 84 3E */ srwi r0, r0, 0x10
+/* 8027EE54 0027AAB4 B0 03 00 2E */ sth r0, 0x2e(r3)
+/* 8027EE58 0027AAB8 4B FE 94 09 */ bl PPCSync
+/* 8027EE5C 0027AABC 4B FF FB 7D */ bl CPGPLinkCheck
+/* 8027EE60 0027AAC0 54 60 06 3F */ clrlwi. r0, r3, 0x18
+/* 8027EE64 0027AAC4 41 82 00 3C */ beq lbl_8027EEA0
+/* 8027EE68 0027AAC8 9B ED A9 D0 */ stb r31, lbl_8063FC90-_SDA_BASE_(r13)
+/* 8027EE6C 0027AACC 9B FE 00 21 */ stb r31, 0x21(r30)
+/* 8027EE70 0027AAD0 80 1D 00 08 */ lwz r0, 8(r29)
+/* 8027EE74 0027AAD4 60 00 00 04 */ ori r0, r0, 4
+/* 8027EE78 0027AAD8 54 00 07 76 */ rlwinm r0, r0, 0, 0x1d, 0x1b
+/* 8027EE7C 0027AADC 90 1D 00 08 */ stw r0, 8(r29)
+/* 8027EE80 0027AAE0 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EE84 0027AAE4 B0 03 00 02 */ sth r0, 2(r3)
+/* 8027EE88 0027AAE8 80 1D 00 08 */ lwz r0, 8(r29)
+/* 8027EE8C 0027AAEC 60 00 00 10 */ ori r0, r0, 0x10
+/* 8027EE90 0027AAF0 90 1D 00 08 */ stw r0, 8(r29)
+/* 8027EE94 0027AAF4 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EE98 0027AAF8 B0 03 00 02 */ sth r0, 2(r3)
+/* 8027EE9C 0027AAFC 48 00 00 38 */ b lbl_8027EED4
+lbl_8027EEA0:
+/* 8027EEA0 0027AB00 38 00 00 00 */ li r0, 0
+/* 8027EEA4 0027AB04 98 0D A9 D0 */ stb r0, lbl_8063FC90-_SDA_BASE_(r13)
+/* 8027EEA8 0027AB08 98 1E 00 21 */ stb r0, 0x21(r30)
+/* 8027EEAC 0027AB0C 80 1D 00 08 */ lwz r0, 8(r29)
+/* 8027EEB0 0027AB10 54 00 07 B6 */ rlwinm r0, r0, 0, 0x1e, 0x1b
+/* 8027EEB4 0027AB14 90 1D 00 08 */ stw r0, 8(r29)
+/* 8027EEB8 0027AB18 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EEBC 0027AB1C B0 03 00 02 */ sth r0, 2(r3)
+/* 8027EEC0 0027AB20 80 1D 00 08 */ lwz r0, 8(r29)
+/* 8027EEC4 0027AB24 54 00 07 34 */ rlwinm r0, r0, 0, 0x1c, 0x1a
+/* 8027EEC8 0027AB28 90 1D 00 08 */ stw r0, 8(r29)
+/* 8027EECC 0027AB2C 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EED0 0027AB30 B0 03 00 02 */ sth r0, 2(r3)
+lbl_8027EED4:
+/* 8027EED4 0027AB34 80 1D 00 08 */ lwz r0, 8(r29)
+/* 8027EED8 0027AB38 7F 83 E3 78 */ mr r3, r28
+/* 8027EEDC 0027AB3C 80 8D A9 94 */ lwz r4, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EEE0 0027AB40 54 00 07 FA */ rlwinm r0, r0, 0, 0x1f, 0x1d
+/* 8027EEE4 0027AB44 80 A2 A0 D0 */ lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027EEE8 0027AB48 54 00 06 F2 */ rlwinm r0, r0, 0, 0x1b, 0x19
+/* 8027EEEC 0027AB4C B0 04 00 02 */ sth r0, 2(r4)
+/* 8027EEF0 0027AB50 80 1D 00 08 */ lwz r0, 8(r29)
+/* 8027EEF4 0027AB54 80 8D A9 94 */ lwz r4, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EEF8 0027AB58 B0 04 00 02 */ sth r0, 2(r4)
+/* 8027EEFC 0027AB5C 80 05 00 10 */ lwz r0, 0x10(r5)
+/* 8027EF00 0027AB60 60 00 00 03 */ ori r0, r0, 3
+/* 8027EF04 0027AB64 90 05 00 10 */ stw r0, 0x10(r5)
+/* 8027EF08 0027AB68 80 8D A9 94 */ lwz r4, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EF0C 0027AB6C B0 04 00 04 */ sth r0, 4(r4)
+/* 8027EF10 0027AB70 80 1D 00 08 */ lwz r0, 8(r29)
+/* 8027EF14 0027AB74 60 00 00 01 */ ori r0, r0, 1
+/* 8027EF18 0027AB78 90 1D 00 08 */ stw r0, 8(r29)
+/* 8027EF1C 0027AB7C 80 8D A9 94 */ lwz r4, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EF20 0027AB80 B0 04 00 02 */ sth r0, 2(r4)
+/* 8027EF24 0027AB84 4B FE F8 61 */ bl OSRestoreInterrupts
+lbl_8027EF28:
+/* 8027EF28 0027AB88 39 61 00 20 */ addi r11, r1, 0x20
+/* 8027EF2C 0027AB8C 4B F4 82 49 */ bl _restgpr_27
+/* 8027EF30 0027AB90 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8027EF34 0027AB94 7C 08 03 A6 */ mtlr r0
+/* 8027EF38 0027AB98 38 21 00 20 */ addi r1, r1, 0x20
+/* 8027EF3C 0027AB9C 4E 80 00 20 */ blr
+
+.global __GXSaveFifo
+__GXSaveFifo:
+/* 8027EF40 0027ABA0 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8027EF44 0027ABA4 7C 08 02 A6 */ mflr r0
+/* 8027EF48 0027ABA8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8027EF4C 0027ABAC 4B FE F8 11 */ bl OSDisableInterrupts
+/* 8027EF50 0027ABB0 88 CD A9 B8 */ lbz r6, lbl_8063FC78-_SDA_BASE_(r13)
+/* 8027EF54 0027ABB4 2C 06 00 00 */ cmpwi r6, 0
+/* 8027EF58 0027ABB8 41 82 00 28 */ beq lbl_8027EF80
+/* 8027EF5C 0027ABBC 80 AD A9 90 */ lwz r5, lbl_8063FC50-_SDA_BASE_(r13)
+/* 8027EF60 0027ABC0 3C 80 80 51 */ lis r4, lbl_80515FD4@ha
+/* 8027EF64 0027ABC4 38 84 5F D4 */ addi r4, r4, lbl_80515FD4@l
+/* 8027EF68 0027ABC8 80 05 00 14 */ lwz r0, 0x14(r5)
+/* 8027EF6C 0027ABCC 54 05 00 F4 */ rlwinm r5, r0, 0, 3, 0x1a
+/* 8027EF70 0027ABD0 54 00 1F FE */ rlwinm r0, r0, 3, 0x1f, 0x1f
+/* 8027EF74 0027ABD4 3C A5 80 00 */ addis r5, r5, 0x8000
+/* 8027EF78 0027ABD8 98 04 00 20 */ stb r0, 0x20(r4)
+/* 8027EF7C 0027ABDC 90 A4 00 18 */ stw r5, 0x18(r4)
+lbl_8027EF80:
+/* 8027EF80 0027ABE0 88 0D A9 B9 */ lbz r0, lbl_8063FC79-_SDA_BASE_(r13)
+/* 8027EF84 0027ABE4 2C 00 00 00 */ cmpwi r0, 0
+/* 8027EF88 0027ABE8 41 82 00 34 */ beq lbl_8027EFBC
+/* 8027EF8C 0027ABEC 80 ED A9 94 */ lwz r7, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027EF90 0027ABF0 3C 80 80 51 */ lis r4, lbl_80515FB0@ha
+/* 8027EF94 0027ABF4 38 84 5F B0 */ addi r4, r4, lbl_80515FB0@l
+/* 8027EF98 0027ABF8 A0 07 00 3A */ lhz r0, 0x3a(r7)
+/* 8027EF9C 0027ABFC A0 A7 00 38 */ lhz r5, 0x38(r7)
+/* 8027EFA0 0027AC00 50 05 80 1E */ rlwimi r5, r0, 0x10, 0, 0xf
+/* 8027EFA4 0027AC04 3C 05 80 00 */ addis r0, r5, 0x8000
+/* 8027EFA8 0027AC08 90 04 00 14 */ stw r0, 0x14(r4)
+/* 8027EFAC 0027AC0C A0 07 00 32 */ lhz r0, 0x32(r7)
+/* 8027EFB0 0027AC10 A0 A7 00 30 */ lhz r5, 0x30(r7)
+/* 8027EFB4 0027AC14 50 05 80 1E */ rlwimi r5, r0, 0x10, 0, 0xf
+/* 8027EFB8 0027AC18 90 A4 00 1C */ stw r5, 0x1c(r4)
+lbl_8027EFBC:
+/* 8027EFBC 0027AC1C 88 0D A9 D0 */ lbz r0, lbl_8063FC90-_SDA_BASE_(r13)
+/* 8027EFC0 0027AC20 2C 00 00 00 */ cmpwi r0, 0
+/* 8027EFC4 0027AC24 41 82 00 38 */ beq lbl_8027EFFC
+/* 8027EFC8 0027AC28 3D 00 80 51 */ lis r8, lbl_80515FB0@ha
+/* 8027EFCC 0027AC2C 3C C0 80 51 */ lis r6, lbl_80515FD4@ha
+/* 8027EFD0 0027AC30 39 08 5F B0 */ addi r8, r8, lbl_80515FB0@l
+/* 8027EFD4 0027AC34 38 C6 5F D4 */ addi r6, r6, lbl_80515FD4@l
+/* 8027EFD8 0027AC38 80 E8 00 14 */ lwz r7, 0x14(r8)
+/* 8027EFDC 0027AC3C 80 A8 00 1C */ lwz r5, 0x1c(r8)
+/* 8027EFE0 0027AC40 80 86 00 18 */ lwz r4, 0x18(r6)
+/* 8027EFE4 0027AC44 88 06 00 20 */ lbz r0, 0x20(r6)
+/* 8027EFE8 0027AC48 90 E6 00 14 */ stw r7, 0x14(r6)
+/* 8027EFEC 0027AC4C 90 A6 00 1C */ stw r5, 0x1c(r6)
+/* 8027EFF0 0027AC50 90 88 00 18 */ stw r4, 0x18(r8)
+/* 8027EFF4 0027AC54 98 08 00 20 */ stb r0, 0x20(r8)
+/* 8027EFF8 0027AC58 48 00 00 34 */ b lbl_8027F02C
+lbl_8027EFFC:
+/* 8027EFFC 0027AC5C 2C 06 00 00 */ cmpwi r6, 0
+/* 8027F000 0027AC60 41 82 00 2C */ beq lbl_8027F02C
+/* 8027F004 0027AC64 3C A0 80 51 */ lis r5, lbl_80515FD4@ha
+/* 8027F008 0027AC68 38 A5 5F D4 */ addi r5, r5, lbl_80515FD4@l
+/* 8027F00C 0027AC6C 80 85 00 14 */ lwz r4, 0x14(r5)
+/* 8027F010 0027AC70 80 05 00 18 */ lwz r0, 0x18(r5)
+/* 8027F014 0027AC74 7C 84 00 51 */ subf. r4, r4, r0
+/* 8027F018 0027AC78 90 85 00 1C */ stw r4, 0x1c(r5)
+/* 8027F01C 0027AC7C 40 80 00 10 */ bge lbl_8027F02C
+/* 8027F020 0027AC80 80 05 00 08 */ lwz r0, 8(r5)
+/* 8027F024 0027AC84 7C 04 02 14 */ add r0, r4, r0
+/* 8027F028 0027AC88 90 05 00 1C */ stw r0, 0x1c(r5)
+lbl_8027F02C:
+/* 8027F02C 0027AC8C 4B FE F7 59 */ bl OSRestoreInterrupts
+/* 8027F030 0027AC90 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8027F034 0027AC94 7C 08 03 A6 */ mtlr r0
+/* 8027F038 0027AC98 38 21 00 10 */ addi r1, r1, 0x10
+/* 8027F03C 0027AC9C 4E 80 00 20 */ blr
+
+.global __GXIsGPFifoReady
+__GXIsGPFifoReady:
+/* 8027F040 0027ACA0 88 6D A9 B9 */ lbz r3, lbl_8063FC79-_SDA_BASE_(r13)
+/* 8027F044 0027ACA4 4E 80 00 20 */ blr
+
+.global GXGetGPStatus
+GXGetGPStatus:
+/* 8027F048 0027ACA8 81 0D A9 94 */ lwz r8, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027F04C 0027ACAC 81 22 A0 D0 */ lwz r9, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F050 0027ACB0 A0 08 00 00 */ lhz r0, 0(r8)
+/* 8027F054 0027ACB4 90 09 00 0C */ stw r0, 0xc(r9)
+/* 8027F058 0027ACB8 54 00 07 FE */ clrlwi r0, r0, 0x1f
+/* 8027F05C 0027ACBC 98 03 00 00 */ stb r0, 0(r3)
+/* 8027F060 0027ACC0 80 09 00 0C */ lwz r0, 0xc(r9)
+/* 8027F064 0027ACC4 54 00 FF FE */ rlwinm r0, r0, 0x1f, 0x1f, 0x1f
+/* 8027F068 0027ACC8 98 04 00 00 */ stb r0, 0(r4)
+/* 8027F06C 0027ACCC 80 09 00 0C */ lwz r0, 0xc(r9)
+/* 8027F070 0027ACD0 54 00 F7 FE */ rlwinm r0, r0, 0x1e, 0x1f, 0x1f
+/* 8027F074 0027ACD4 98 05 00 00 */ stb r0, 0(r5)
+/* 8027F078 0027ACD8 80 09 00 0C */ lwz r0, 0xc(r9)
+/* 8027F07C 0027ACDC 54 00 EF FE */ rlwinm r0, r0, 0x1d, 0x1f, 0x1f
+/* 8027F080 0027ACE0 98 06 00 00 */ stb r0, 0(r6)
+/* 8027F084 0027ACE4 80 09 00 0C */ lwz r0, 0xc(r9)
+/* 8027F088 0027ACE8 54 00 E7 FE */ rlwinm r0, r0, 0x1c, 0x1f, 0x1f
+/* 8027F08C 0027ACEC 98 07 00 00 */ stb r0, 0(r7)
+/* 8027F090 0027ACF0 4E 80 00 20 */ blr
+
+.global GXGetCPUFifo
+GXGetCPUFifo:
+/* 8027F094 0027ACF4 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8027F098 0027ACF8 7C 08 02 A6 */ mflr r0
+/* 8027F09C 0027ACFC 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8027F0A0 0027AD00 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8027F0A4 0027AD04 7C 7F 1B 78 */ mr r31, r3
+/* 8027F0A8 0027AD08 88 0D A9 B8 */ lbz r0, lbl_8063FC78-_SDA_BASE_(r13)
+/* 8027F0AC 0027AD0C 2C 00 00 00 */ cmpwi r0, 0
+/* 8027F0B0 0027AD10 40 82 00 0C */ bne lbl_8027F0BC
+/* 8027F0B4 0027AD14 38 60 00 00 */ li r3, 0
+/* 8027F0B8 0027AD18 48 00 00 5C */ b lbl_8027F114
+lbl_8027F0BC:
+/* 8027F0BC 0027AD1C 48 00 15 E9 */ bl GXFlush
+/* 8027F0C0 0027AD20 4B FF FE 81 */ bl __GXSaveFifo
+/* 8027F0C4 0027AD24 3C A0 80 51 */ lis r5, lbl_80510004@ha
+/* 8027F0C8 0027AD28 84 85 5F D4 */ lwzu r4, 0x5fd4(r5)
+/* 8027F0CC 0027AD2C 38 60 00 01 */ li r3, 1
+/* 8027F0D0 0027AD30 80 05 00 04 */ lwz r0, lbl_80510004@l(r5)
+/* 8027F0D4 0027AD34 90 9F 00 00 */ stw r4, 0(r31)
+/* 8027F0D8 0027AD38 90 1F 00 04 */ stw r0, 4(r31)
+/* 8027F0DC 0027AD3C 80 85 00 08 */ lwz r4, 8(r5)
+/* 8027F0E0 0027AD40 80 05 00 0C */ lwz r0, 0xc(r5)
+/* 8027F0E4 0027AD44 90 9F 00 08 */ stw r4, 8(r31)
+/* 8027F0E8 0027AD48 90 1F 00 0C */ stw r0, 0xc(r31)
+/* 8027F0EC 0027AD4C 80 85 00 10 */ lwz r4, 0x10(r5)
+/* 8027F0F0 0027AD50 80 05 00 14 */ lwz r0, 0x14(r5)
+/* 8027F0F4 0027AD54 90 9F 00 10 */ stw r4, 0x10(r31)
+/* 8027F0F8 0027AD58 90 1F 00 14 */ stw r0, 0x14(r31)
+/* 8027F0FC 0027AD5C 80 85 00 18 */ lwz r4, 0x18(r5)
+/* 8027F100 0027AD60 80 05 00 1C */ lwz r0, 0x1c(r5)
+/* 8027F104 0027AD64 90 9F 00 18 */ stw r4, 0x18(r31)
+/* 8027F108 0027AD68 90 1F 00 1C */ stw r0, 0x1c(r31)
+/* 8027F10C 0027AD6C 80 05 00 20 */ lwz r0, 0x20(r5)
+/* 8027F110 0027AD70 90 1F 00 20 */ stw r0, 0x20(r31)
+lbl_8027F114:
+/* 8027F114 0027AD74 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8027F118 0027AD78 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8027F11C 0027AD7C 7C 08 03 A6 */ mtlr r0
+/* 8027F120 0027AD80 38 21 00 10 */ addi r1, r1, 0x10
+/* 8027F124 0027AD84 4E 80 00 20 */ blr
+
+# either GXGetFifoPtrs or GXGetFifoLimits
+.global func_8027F128
+func_8027F128:
+/* 8027F128 0027AD88 80 C3 00 14 */ lwz r6, 0x14(r3)
+/* 8027F12C 0027AD8C 80 03 00 18 */ lwz r0, 0x18(r3)
+/* 8027F130 0027AD90 90 C4 00 00 */ stw r6, 0(r4)
+/* 8027F134 0027AD94 90 05 00 00 */ stw r0, 0(r5)
+/* 8027F138 0027AD98 4E 80 00 20 */ blr
+
+.global GXGetFifoCount
+GXGetFifoCount:
+/* 8027F13C 0027AD9C 80 63 00 1C */ lwz r3, 0x1c(r3)
+/* 8027F140 0027ADA0 4E 80 00 20 */ blr
+
+.global GXGetFifoWrap
+GXGetFifoWrap:
+/* 8027F144 0027ADA4 88 63 00 20 */ lbz r3, 0x20(r3)
+/* 8027F148 0027ADA8 4E 80 00 20 */ blr
+
+.global GXSetBreakPtCallback
+GXSetBreakPtCallback:
+/* 8027F14C 0027ADAC 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8027F150 0027ADB0 7C 08 02 A6 */ mflr r0
+/* 8027F154 0027ADB4 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8027F158 0027ADB8 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8027F15C 0027ADBC 93 C1 00 08 */ stw r30, 8(r1)
+/* 8027F160 0027ADC0 7C 7E 1B 78 */ mr r30, r3
+/* 8027F164 0027ADC4 83 ED A9 C4 */ lwz r31, lbl_8063FC84-_SDA_BASE_(r13)
+/* 8027F168 0027ADC8 4B FE F5 F5 */ bl OSDisableInterrupts
+/* 8027F16C 0027ADCC 93 CD A9 C4 */ stw r30, lbl_8063FC84-_SDA_BASE_(r13)
+/* 8027F170 0027ADD0 4B FE F6 15 */ bl OSRestoreInterrupts
+/* 8027F174 0027ADD4 7F E3 FB 78 */ mr r3, r31
+/* 8027F178 0027ADD8 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8027F17C 0027ADDC 83 C1 00 08 */ lwz r30, 8(r1)
+/* 8027F180 0027ADE0 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8027F184 0027ADE4 7C 08 03 A6 */ mtlr r0
+/* 8027F188 0027ADE8 38 21 00 10 */ addi r1, r1, 0x10
+/* 8027F18C 0027ADEC 4E 80 00 20 */ blr
+
+.global GXDisableBreakPt
+GXDisableBreakPt:
+/* 8027F190 0027ADF0 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8027F194 0027ADF4 7C 08 02 A6 */ mflr r0
+/* 8027F198 0027ADF8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8027F19C 0027ADFC 4B FE F5 C1 */ bl OSDisableInterrupts
+/* 8027F1A0 0027AE00 80 C2 A0 D0 */ lwz r6, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F1A4 0027AE04 38 00 00 00 */ li r0, 0
+/* 8027F1A8 0027AE08 80 86 00 08 */ lwz r4, 8(r6)
+/* 8027F1AC 0027AE0C 54 84 07 FA */ rlwinm r4, r4, 0, 0x1f, 0x1d
+/* 8027F1B0 0027AE10 54 85 06 F2 */ rlwinm r5, r4, 0, 0x1b, 0x19
+/* 8027F1B4 0027AE14 90 A6 00 08 */ stw r5, 8(r6)
+/* 8027F1B8 0027AE18 80 8D A9 94 */ lwz r4, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027F1BC 0027AE1C B0 A4 00 02 */ sth r5, 2(r4)
+/* 8027F1C0 0027AE20 90 0D A9 C0 */ stw r0, lbl_8063FC80-_SDA_BASE_(r13)
+/* 8027F1C4 0027AE24 4B FE F5 C1 */ bl OSRestoreInterrupts
+/* 8027F1C8 0027AE28 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8027F1CC 0027AE2C 7C 08 03 A6 */ mtlr r0
+/* 8027F1D0 0027AE30 38 21 00 10 */ addi r1, r1, 0x10
+/* 8027F1D4 0027AE34 4E 80 00 20 */ blr
+
+.global __GXFifoInit
+__GXFifoInit:
+/* 8027F1D8 0027AE38 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8027F1DC 0027AE3C 7C 08 02 A6 */ mflr r0
+/* 8027F1E0 0027AE40 3C 80 80 28 */ lis r4, GXCPInterruptHandler@ha
+/* 8027F1E4 0027AE44 38 60 00 11 */ li r3, 0x11
+/* 8027F1E8 0027AE48 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8027F1EC 0027AE4C 38 84 E7 EC */ addi r4, r4, GXCPInterruptHandler@l
+/* 8027F1F0 0027AE50 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8027F1F4 0027AE54 4B FE F5 B5 */ bl __OSSetInterruptHandler
+/* 8027F1F8 0027AE58 38 60 40 00 */ li r3, 0x4000
+/* 8027F1FC 0027AE5C 4B FE F9 71 */ bl __OSUnmaskInterrupts
+/* 8027F200 0027AE60 4B FF 20 F9 */ bl OSGetCurrentThread
+/* 8027F204 0027AE64 3B E0 00 00 */ li r31, 0
+/* 8027F208 0027AE68 90 6D A9 CC */ stw r3, lbl_8063FC8C-_SDA_BASE_(r13)
+/* 8027F20C 0027AE6C 3C 60 80 51 */ lis r3, lbl_80515FD4@ha
+/* 8027F210 0027AE70 38 80 00 00 */ li r4, 0
+/* 8027F214 0027AE74 93 ED A9 C8 */ stw r31, lbl_8063FC88-_SDA_BASE_(r13)
+/* 8027F218 0027AE78 38 63 5F D4 */ addi r3, r3, lbl_80515FD4@l
+/* 8027F21C 0027AE7C 38 A0 00 24 */ li r5, 0x24
+/* 8027F220 0027AE80 4B D8 4E E5 */ bl memset
+/* 8027F224 0027AE84 3C 60 80 51 */ lis r3, lbl_80515FB0@ha
+/* 8027F228 0027AE88 38 80 00 00 */ li r4, 0
+/* 8027F22C 0027AE8C 38 63 5F B0 */ addi r3, r3, lbl_80515FB0@l
+/* 8027F230 0027AE90 38 A0 00 24 */ li r5, 0x24
+/* 8027F234 0027AE94 4B D8 4E D1 */ bl memset
+/* 8027F238 0027AE98 9B ED A9 B8 */ stb r31, lbl_8063FC78-_SDA_BASE_(r13)
+/* 8027F23C 0027AE9C 9B ED A9 B9 */ stb r31, lbl_8063FC79-_SDA_BASE_(r13)
+/* 8027F240 0027AEA0 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8027F244 0027AEA4 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8027F248 0027AEA8 7C 08 03 A6 */ mtlr r0
+/* 8027F24C 0027AEAC 38 21 00 10 */ addi r1, r1, 0x10
+/* 8027F250 0027AEB0 4E 80 00 20 */ blr
+
+.global __GXCleanGPFifo
+__GXCleanGPFifo:
+/* 8027F254 0027AEB4 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8027F258 0027AEB8 7C 08 02 A6 */ mflr r0
+/* 8027F25C 0027AEBC 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8027F260 0027AEC0 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8027F264 0027AEC4 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8027F268 0027AEC8 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8027F26C 0027AECC 93 81 00 10 */ stw r28, 0x10(r1)
+/* 8027F270 0027AED0 88 0D A9 B9 */ lbz r0, lbl_8063FC79-_SDA_BASE_(r13)
+/* 8027F274 0027AED4 2C 00 00 00 */ cmpwi r0, 0
+/* 8027F278 0027AED8 41 82 01 5C */ beq lbl_8027F3D4
+/* 8027F27C 0027AEDC 4B FE F4 E1 */ bl OSDisableInterrupts
+/* 8027F280 0027AEE0 83 A2 A0 D0 */ lwz r29, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F284 0027AEE4 3F C0 80 51 */ lis r30, lbl_80515FB0@ha
+/* 8027F288 0027AEE8 7C 7C 1B 78 */ mr r28, r3
+/* 8027F28C 0027AEEC 3B E0 00 00 */ li r31, 0
+/* 8027F290 0027AEF0 80 1D 00 08 */ lwz r0, 8(r29)
+/* 8027F294 0027AEF4 3B DE 5F B0 */ addi r30, r30, lbl_80515FB0@l
+/* 8027F298 0027AEF8 54 00 00 3C */ rlwinm r0, r0, 0, 0, 0x1e
+/* 8027F29C 0027AEFC 90 1D 00 08 */ stw r0, 8(r29)
+/* 8027F2A0 0027AF00 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027F2A4 0027AF04 B0 03 00 02 */ sth r0, 2(r3)
+/* 8027F2A8 0027AF08 80 1D 00 08 */ lwz r0, 8(r29)
+/* 8027F2AC 0027AF0C 54 00 07 B6 */ rlwinm r0, r0, 0, 0x1e, 0x1b
+/* 8027F2B0 0027AF10 90 1D 00 08 */ stw r0, 8(r29)
+/* 8027F2B4 0027AF14 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027F2B8 0027AF18 B0 03 00 02 */ sth r0, 2(r3)
+/* 8027F2BC 0027AF1C 80 1E 00 18 */ lwz r0, 0x18(r30)
+/* 8027F2C0 0027AF20 93 FE 00 1C */ stw r31, 0x1c(r30)
+/* 8027F2C4 0027AF24 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027F2C8 0027AF28 90 1E 00 14 */ stw r0, 0x14(r30)
+/* 8027F2CC 0027AF2C B3 E3 00 30 */ sth r31, 0x30(r3)
+/* 8027F2D0 0027AF30 80 1E 00 18 */ lwz r0, 0x18(r30)
+/* 8027F2D4 0027AF34 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027F2D8 0027AF38 B0 03 00 34 */ sth r0, 0x34(r3)
+/* 8027F2DC 0027AF3C 80 1E 00 14 */ lwz r0, 0x14(r30)
+/* 8027F2E0 0027AF40 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027F2E4 0027AF44 B0 03 00 38 */ sth r0, 0x38(r3)
+/* 8027F2E8 0027AF48 80 1E 00 1C */ lwz r0, 0x1c(r30)
+/* 8027F2EC 0027AF4C 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027F2F0 0027AF50 7C 00 86 70 */ srawi r0, r0, 0x10
+/* 8027F2F4 0027AF54 B0 03 00 32 */ sth r0, 0x32(r3)
+/* 8027F2F8 0027AF58 80 1E 00 18 */ lwz r0, 0x18(r30)
+/* 8027F2FC 0027AF5C 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027F300 0027AF60 54 00 84 BE */ rlwinm r0, r0, 0x10, 0x12, 0x1f
+/* 8027F304 0027AF64 B0 03 00 36 */ sth r0, 0x36(r3)
+/* 8027F308 0027AF68 80 1E 00 14 */ lwz r0, 0x14(r30)
+/* 8027F30C 0027AF6C 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027F310 0027AF70 54 00 84 BE */ rlwinm r0, r0, 0x10, 0x12, 0x1f
+/* 8027F314 0027AF74 B0 03 00 3A */ sth r0, 0x3a(r3)
+/* 8027F318 0027AF78 4B FE 8F 49 */ bl PPCSync
+/* 8027F31C 0027AF7C 88 0D A9 D0 */ lbz r0, lbl_8063FC90-_SDA_BASE_(r13)
+/* 8027F320 0027AF80 2C 00 00 00 */ cmpwi r0, 0
+/* 8027F324 0027AF84 41 82 00 5C */ beq lbl_8027F380
+/* 8027F328 0027AF88 3C A0 80 51 */ lis r5, lbl_80515FD4@ha
+/* 8027F32C 0027AF8C 80 9E 00 18 */ lwz r4, 0x18(r30)
+/* 8027F330 0027AF90 38 A5 5F D4 */ addi r5, r5, lbl_80515FD4@l
+/* 8027F334 0027AF94 80 7E 00 14 */ lwz r3, 0x14(r30)
+/* 8027F338 0027AF98 80 1E 00 1C */ lwz r0, 0x1c(r30)
+/* 8027F33C 0027AF9C 50 9F 00 F4 */ rlwimi r31, r4, 0, 3, 0x1a
+/* 8027F340 0027AFA0 90 65 00 14 */ stw r3, 0x14(r5)
+/* 8027F344 0027AFA4 80 6D A9 90 */ lwz r3, lbl_8063FC50-_SDA_BASE_(r13)
+/* 8027F348 0027AFA8 90 85 00 18 */ stw r4, 0x18(r5)
+/* 8027F34C 0027AFAC 90 05 00 1C */ stw r0, 0x1c(r5)
+/* 8027F350 0027AFB0 93 E3 00 14 */ stw r31, 0x14(r3)
+/* 8027F354 0027AFB4 80 1D 00 08 */ lwz r0, 8(r29)
+/* 8027F358 0027AFB8 60 00 00 04 */ ori r0, r0, 4
+/* 8027F35C 0027AFBC 54 00 07 76 */ rlwinm r0, r0, 0, 0x1d, 0x1b
+/* 8027F360 0027AFC0 90 1D 00 08 */ stw r0, 8(r29)
+/* 8027F364 0027AFC4 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027F368 0027AFC8 B0 03 00 02 */ sth r0, 2(r3)
+/* 8027F36C 0027AFCC 80 1D 00 08 */ lwz r0, 8(r29)
+/* 8027F370 0027AFD0 60 00 00 10 */ ori r0, r0, 0x10
+/* 8027F374 0027AFD4 90 1D 00 08 */ stw r0, 8(r29)
+/* 8027F378 0027AFD8 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027F37C 0027AFDC B0 03 00 02 */ sth r0, 2(r3)
+lbl_8027F380:
+/* 8027F380 0027AFE0 80 9D 00 08 */ lwz r4, 8(r29)
+/* 8027F384 0027AFE4 38 00 00 00 */ li r0, 0
+/* 8027F388 0027AFE8 80 C2 A0 D0 */ lwz r6, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027F38C 0027AFEC 7F 83 E3 78 */ mr r3, r28
+/* 8027F390 0027AFF0 54 84 07 FA */ rlwinm r4, r4, 0, 0x1f, 0x1d
+/* 8027F394 0027AFF4 54 85 06 F2 */ rlwinm r5, r4, 0, 0x1b, 0x19
+/* 8027F398 0027AFF8 90 BD 00 08 */ stw r5, 8(r29)
+/* 8027F39C 0027AFFC 80 8D A9 94 */ lwz r4, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027F3A0 0027B000 B0 A4 00 02 */ sth r5, 2(r4)
+/* 8027F3A4 0027B004 90 0D A9 C0 */ stw r0, lbl_8063FC80-_SDA_BASE_(r13)
+/* 8027F3A8 0027B008 80 06 00 10 */ lwz r0, 0x10(r6)
+/* 8027F3AC 0027B00C 60 00 00 03 */ ori r0, r0, 3
+/* 8027F3B0 0027B010 90 06 00 10 */ stw r0, 0x10(r6)
+/* 8027F3B4 0027B014 80 8D A9 94 */ lwz r4, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027F3B8 0027B018 B0 04 00 04 */ sth r0, 4(r4)
+/* 8027F3BC 0027B01C 80 1D 00 08 */ lwz r0, 8(r29)
+/* 8027F3C0 0027B020 60 00 00 01 */ ori r0, r0, 1
+/* 8027F3C4 0027B024 90 1D 00 08 */ stw r0, 8(r29)
+/* 8027F3C8 0027B028 80 8D A9 94 */ lwz r4, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027F3CC 0027B02C B0 04 00 02 */ sth r0, 2(r4)
+/* 8027F3D0 0027B030 4B FE F3 B5 */ bl OSRestoreInterrupts
+lbl_8027F3D4:
+/* 8027F3D4 0027B034 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8027F3D8 0027B038 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8027F3DC 0027B03C 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8027F3E0 0027B040 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8027F3E4 0027B044 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 8027F3E8 0027B048 7C 08 03 A6 */ mtlr r0
+/* 8027F3EC 0027B04C 38 21 00 20 */ addi r1, r1, 0x20
+/* 8027F3F0 0027B050 4E 80 00 20 */ blr
diff --git a/asm/SDK/GX/GXFrameBuf.s b/asm/SDK/GX/GXFrameBuf.s
new file mode 100644
index 0000000..061587d
--- /dev/null
+++ b/asm/SDK/GX/GXFrameBuf.s
@@ -0,0 +1,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
diff --git a/asm/SDK/GX/GXGeometry.s b/asm/SDK/GX/GXGeometry.s
new file mode 100644
index 0000000..bfda501
--- /dev/null
+++ b/asm/SDK/GX/GXGeometry.s
@@ -0,0 +1,422 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global __GXSetDirtyState
+__GXSetDirtyState:
+/* 80280ED0 0027CB30 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80280ED4 0027CB34 7C 08 02 A6 */ mflr r0
+/* 80280ED8 0027CB38 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80280EDC 0027CB3C 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80280EE0 0027CB40 83 E2 A0 D0 */ lwz r31, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80280EE4 0027CB44 93 C1 00 08 */ stw r30, 8(r1)
+/* 80280EE8 0027CB48 83 DF 05 FC */ lwz r30, 0x5fc(r31)
+/* 80280EEC 0027CB4C 57 C0 07 FF */ clrlwi. r0, r30, 0x1f
+/* 80280EF0 0027CB50 41 82 00 08 */ beq lbl_80280EF8
+/* 80280EF4 0027CB54 48 00 1F B5 */ bl __GXSetSUTexRegs
+lbl_80280EF8:
+/* 80280EF8 0027CB58 57 C0 07 BD */ rlwinm. r0, r30, 0, 0x1e, 0x1e
+/* 80280EFC 0027CB5C 41 82 00 08 */ beq lbl_80280F04
+/* 80280F00 0027CB60 48 00 2B E9 */ bl __GXUpdateBPMask
+lbl_80280F04:
+/* 80280F04 0027CB64 57 C0 07 7B */ rlwinm. r0, r30, 0, 0x1d, 0x1d
+/* 80280F08 0027CB68 41 82 00 24 */ beq lbl_80280F2C
+/* 80280F0C 0027CB6C 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 80280F10 0027CB70 38 00 00 61 */ li r0, 0x61
+/* 80280F14 0027CB74 98 04 80 00 */ stb r0, 0xCC008000@l(r4)
+/* 80280F18 0027CB78 38 00 00 00 */ li r0, 0
+/* 80280F1C 0027CB7C 80 A2 A0 D0 */ lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80280F20 0027CB80 80 65 02 54 */ lwz r3, 0x254(r5)
+/* 80280F24 0027CB84 90 64 80 00 */ stw r3, -0x8000(r4)
+/* 80280F28 0027CB88 B0 05 00 02 */ sth r0, 2(r5)
+lbl_80280F2C:
+/* 80280F2C 0027CB8C 57 C0 07 39 */ rlwinm. r0, r30, 0, 0x1c, 0x1c
+/* 80280F30 0027CB90 41 82 00 08 */ beq lbl_80280F38
+/* 80280F34 0027CB94 4B FF E9 31 */ bl __GXSetVCD
+lbl_80280F38:
+/* 80280F38 0027CB98 57 C0 06 F7 */ rlwinm. r0, r30, 0, 0x1b, 0x1b
+/* 80280F3C 0027CB9C 41 82 00 08 */ beq lbl_80280F44
+/* 80280F40 0027CBA0 4B FF F0 DD */ bl __GXSetVAT
+lbl_80280F44:
+/* 80280F44 0027CBA4 57 C0 06 F9 */ rlwinm. r0, r30, 0, 0x1b, 0x1c
+/* 80280F48 0027CBA8 41 82 00 08 */ beq lbl_80280F50
+/* 80280F4C 0027CBAC 4B FF E9 C9 */ bl __GXCalculateVLim
+lbl_80280F50:
+/* 80280F50 0027CBB0 57 DE 00 2F */ rlwinm. r30, r30, 0, 0, 0x17
+/* 80280F54 0027CBB4 41 82 01 D4 */ beq lbl_80281128
+/* 80280F58 0027CBB8 57 C4 05 2F */ rlwinm. r4, r30, 0, 0x14, 0x17
+/* 80280F5C 0027CBBC 41 82 00 94 */ beq lbl_80280FF0
+/* 80280F60 0027CBC0 54 80 05 EF */ rlwinm. r0, r4, 0, 0x17, 0x17
+/* 80280F64 0027CBC4 41 82 00 20 */ beq lbl_80280F84
+/* 80280F68 0027CBC8 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80280F6C 0027CBCC 38 00 00 10 */ li r0, 0x10
+/* 80280F70 0027CBD0 98 03 80 00 */ stb r0, 0xCC008000@l(r3)
+/* 80280F74 0027CBD4 38 00 10 0A */ li r0, 0x100a
+/* 80280F78 0027CBD8 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 80280F7C 0027CBDC 80 1F 00 A8 */ lwz r0, 0xa8(r31)
+/* 80280F80 0027CBE0 90 03 80 00 */ stw r0, -0x8000(r3)
+lbl_80280F84:
+/* 80280F84 0027CBE4 54 80 05 AD */ rlwinm. r0, r4, 0, 0x16, 0x16
+/* 80280F88 0027CBE8 41 82 00 20 */ beq lbl_80280FA8
+/* 80280F8C 0027CBEC 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80280F90 0027CBF0 38 00 00 10 */ li r0, 0x10
+/* 80280F94 0027CBF4 98 03 80 00 */ stb r0, 0xCC008000@l(r3)
+/* 80280F98 0027CBF8 38 00 10 0B */ li r0, 0x100b
+/* 80280F9C 0027CBFC 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 80280FA0 0027CC00 80 1F 00 AC */ lwz r0, 0xac(r31)
+/* 80280FA4 0027CC04 90 03 80 00 */ stw r0, -0x8000(r3)
+lbl_80280FA8:
+/* 80280FA8 0027CC08 54 80 05 6B */ rlwinm. r0, r4, 0, 0x15, 0x15
+/* 80280FAC 0027CC0C 41 82 00 20 */ beq lbl_80280FCC
+/* 80280FB0 0027CC10 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80280FB4 0027CC14 38 00 00 10 */ li r0, 0x10
+/* 80280FB8 0027CC18 98 03 80 00 */ stb r0, 0xCC008000@l(r3)
+/* 80280FBC 0027CC1C 38 00 10 0C */ li r0, 0x100c
+/* 80280FC0 0027CC20 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 80280FC4 0027CC24 80 1F 00 B0 */ lwz r0, 0xb0(r31)
+/* 80280FC8 0027CC28 90 03 80 00 */ stw r0, -0x8000(r3)
+lbl_80280FCC:
+/* 80280FCC 0027CC2C 54 80 05 29 */ rlwinm. r0, r4, 0, 0x14, 0x14
+/* 80280FD0 0027CC30 41 82 00 20 */ beq lbl_80280FF0
+/* 80280FD4 0027CC34 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80280FD8 0027CC38 38 00 00 10 */ li r0, 0x10
+/* 80280FDC 0027CC3C 98 03 80 00 */ stb r0, 0xCC008000@l(r3)
+/* 80280FE0 0027CC40 38 00 10 0D */ li r0, 0x100d
+/* 80280FE4 0027CC44 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 80280FE8 0027CC48 80 1F 00 B4 */ lwz r0, 0xb4(r31)
+/* 80280FEC 0027CC4C 90 03 80 00 */ stw r0, -0x8000(r3)
+lbl_80280FF0:
+/* 80280FF0 0027CC50 57 C7 01 CE */ rlwinm r7, r30, 0, 7, 7
+/* 80280FF4 0027CC54 53 C7 04 27 */ rlwimi. r7, r30, 0, 0x10, 0x13
+/* 80280FF8 0027CC58 41 82 00 70 */ beq lbl_80281068
+/* 80280FFC 0027CC5C 54 E0 01 CF */ rlwinm. r0, r7, 0, 7, 7
+/* 80281000 0027CC60 38 C0 10 0E */ li r6, 0x100e
+/* 80281004 0027CC64 41 82 00 24 */ beq lbl_80281028
+/* 80281008 0027CC68 80 BF 02 54 */ lwz r5, 0x254(r31)
+/* 8028100C 0027CC6C 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80281010 0027CC70 38 80 00 10 */ li r4, 0x10
+/* 80281014 0027CC74 38 00 10 09 */ li r0, 0x1009
+/* 80281018 0027CC78 98 83 80 00 */ stb r4, 0xCC008000@l(r3)
+/* 8028101C 0027CC7C 54 A4 E7 7E */ rlwinm r4, r5, 0x1c, 0x1d, 0x1f
+/* 80281020 0027CC80 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 80281024 0027CC84 90 83 80 00 */ stw r4, -0x8000(r3)
+lbl_80281028:
+/* 80281028 0027CC88 7F E5 FB 78 */ mr r5, r31
+/* 8028102C 0027CC8C 54 E7 A7 3E */ rlwinm r7, r7, 0x14, 0x1c, 0x1f
+/* 80281030 0027CC90 38 80 00 10 */ li r4, 0x10
+/* 80281034 0027CC94 3C 60 CC 01 */ lis r3, 0xcc01
+/* 80281038 0027CC98 48 00 00 28 */ b lbl_80281060
+lbl_8028103C:
+/* 8028103C 0027CC9C 54 E0 07 FF */ clrlwi. r0, r7, 0x1f
+/* 80281040 0027CCA0 41 82 00 14 */ beq lbl_80281054
+/* 80281044 0027CCA4 98 83 80 00 */ stb r4, -0x8000(r3)
+/* 80281048 0027CCA8 90 C3 80 00 */ stw r6, -0x8000(r3)
+/* 8028104C 0027CCAC 80 05 00 B8 */ lwz r0, 0xb8(r5)
+/* 80281050 0027CCB0 90 03 80 00 */ stw r0, -0x8000(r3)
+lbl_80281054:
+/* 80281054 0027CCB4 54 E7 F8 7E */ srwi r7, r7, 1
+/* 80281058 0027CCB8 38 A5 00 04 */ addi r5, r5, 4
+/* 8028105C 0027CCBC 38 C6 00 01 */ addi r6, r6, 1
+lbl_80281060:
+/* 80281060 0027CCC0 2C 07 00 00 */ cmpwi r7, 0
+/* 80281064 0027CCC4 40 82 FF D8 */ bne lbl_8028103C
+lbl_80281068:
+/* 80281068 0027CCC8 77 C8 02 FF */ andis. r8, r30, 0x2ff
+/* 8028106C 0027CCCC 41 82 00 84 */ beq lbl_802810F0
+/* 80281070 0027CCD0 55 00 01 8D */ rlwinm. r0, r8, 0, 6, 6
+/* 80281074 0027CCD4 38 C0 10 40 */ li r6, 0x1040
+/* 80281078 0027CCD8 41 82 00 24 */ beq lbl_8028109C
+/* 8028107C 0027CCDC 80 BF 02 54 */ lwz r5, 0x254(r31)
+/* 80281080 0027CCE0 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80281084 0027CCE4 38 80 00 10 */ li r4, 0x10
+/* 80281088 0027CCE8 38 00 10 3F */ li r0, 0x103f
+/* 8028108C 0027CCEC 98 83 80 00 */ stb r4, 0xCC008000@l(r3)
+/* 80281090 0027CCF0 54 A4 07 3E */ clrlwi r4, r5, 0x1c
+/* 80281094 0027CCF4 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 80281098 0027CCF8 90 83 80 00 */ stw r4, -0x8000(r3)
+lbl_8028109C:
+/* 8028109C 0027CCFC 7F E7 FB 78 */ mr r7, r31
+/* 802810A0 0027CD00 55 08 86 3E */ rlwinm r8, r8, 0x10, 0x18, 0x1f
+/* 802810A4 0027CD04 38 80 00 10 */ li r4, 0x10
+/* 802810A8 0027CD08 3C 60 CC 01 */ lis r3, 0xcc01
+/* 802810AC 0027CD0C 48 00 00 3C */ b lbl_802810E8
+lbl_802810B0:
+/* 802810B0 0027CD10 55 00 07 FF */ clrlwi. r0, r8, 0x1f
+/* 802810B4 0027CD14 38 A6 00 10 */ addi r5, r6, 0x10
+/* 802810B8 0027CD18 41 82 00 24 */ beq lbl_802810DC
+/* 802810BC 0027CD1C 98 83 80 00 */ stb r4, -0x8000(r3)
+/* 802810C0 0027CD20 90 C3 80 00 */ stw r6, -0x8000(r3)
+/* 802810C4 0027CD24 80 07 00 C8 */ lwz r0, 0xc8(r7)
+/* 802810C8 0027CD28 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 802810CC 0027CD2C 98 83 80 00 */ stb r4, -0x8000(r3)
+/* 802810D0 0027CD30 90 A3 80 00 */ stw r5, -0x8000(r3)
+/* 802810D4 0027CD34 80 07 00 E8 */ lwz r0, 0xe8(r7)
+/* 802810D8 0027CD38 90 03 80 00 */ stw r0, -0x8000(r3)
+lbl_802810DC:
+/* 802810DC 0027CD3C 55 08 F8 7E */ srwi r8, r8, 1
+/* 802810E0 0027CD40 38 C6 00 01 */ addi r6, r6, 1
+/* 802810E4 0027CD44 38 E7 00 04 */ addi r7, r7, 4
+lbl_802810E8:
+/* 802810E8 0027CD48 2C 08 00 00 */ cmpwi r8, 0
+/* 802810EC 0027CD4C 40 82 FF C4 */ bne lbl_802810B0
+lbl_802810F0:
+/* 802810F0 0027CD50 57 C0 01 4B */ rlwinm. r0, r30, 0, 5, 5
+/* 802810F4 0027CD54 41 82 00 14 */ beq lbl_80281108
+/* 802810F8 0027CD58 38 60 00 00 */ li r3, 0
+/* 802810FC 0027CD5C 48 00 5C CD */ bl __GXSetMatrixIndex
+/* 80281100 0027CD60 38 60 00 05 */ li r3, 5
+/* 80281104 0027CD64 48 00 5C C5 */ bl __GXSetMatrixIndex
+lbl_80281108:
+/* 80281108 0027CD68 57 C0 00 C7 */ rlwinm. r0, r30, 0, 3, 3
+/* 8028110C 0027CD6C 41 82 00 08 */ beq lbl_80281114
+/* 80281110 0027CD70 48 00 5A F5 */ bl __GXSetViewport
+lbl_80281114:
+/* 80281114 0027CD74 57 C0 01 09 */ rlwinm. r0, r30, 0, 4, 4
+/* 80281118 0027CD78 41 82 00 08 */ beq lbl_80281120
+/* 8028111C 0027CD7C 48 00 58 79 */ bl __GXSetProjection
+lbl_80281120:
+/* 80281120 0027CD80 38 00 00 01 */ li r0, 1
+/* 80281124 0027CD84 B0 1F 00 02 */ sth r0, 2(r31)
+lbl_80281128:
+/* 80281128 0027CD88 38 00 00 00 */ li r0, 0
+/* 8028112C 0027CD8C 90 1F 05 FC */ stw r0, 0x5fc(r31)
+/* 80281130 0027CD90 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80281134 0027CD94 83 C1 00 08 */ lwz r30, 8(r1)
+/* 80281138 0027CD98 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8028113C 0027CD9C 7C 08 03 A6 */ mtlr r0
+/* 80281140 0027CDA0 38 21 00 10 */ addi r1, r1, 0x10
+/* 80281144 0027CDA4 4E 80 00 20 */ blr
+
+.global GXBegin
+GXBegin:
+/* 80281148 0027CDA8 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8028114C 0027CDAC 7C 08 02 A6 */ mflr r0
+/* 80281150 0027CDB0 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80281154 0027CDB4 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80281158 0027CDB8 83 E2 A0 D0 */ lwz r31, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8028115C 0027CDBC 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80281160 0027CDC0 7C BE 2B 78 */ mr r30, r5
+/* 80281164 0027CDC4 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 80281168 0027CDC8 7C 9D 23 78 */ mr r29, r4
+/* 8028116C 0027CDCC 93 81 00 10 */ stw r28, 0x10(r1)
+/* 80281170 0027CDD0 7C 7C 1B 78 */ mr r28, r3
+/* 80281174 0027CDD4 80 1F 05 FC */ lwz r0, 0x5fc(r31)
+/* 80281178 0027CDD8 2C 00 00 00 */ cmpwi r0, 0
+/* 8028117C 0027CDDC 41 82 00 08 */ beq lbl_80281184
+/* 80281180 0027CDE0 4B FF FD 51 */ bl __GXSetDirtyState
+lbl_80281184:
+/* 80281184 0027CDE4 80 1F 00 00 */ lwz r0, 0(r31)
+/* 80281188 0027CDE8 2C 00 00 00 */ cmpwi r0, 0
+/* 8028118C 0027CDEC 40 82 00 D8 */ bne lbl_80281264
+/* 80281190 0027CDF0 80 E2 A0 D0 */ lwz r7, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80281194 0027CDF4 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80281198 0027CDF8 38 00 00 98 */ li r0, 0x98
+/* 8028119C 0027CDFC 38 C0 00 00 */ li r6, 0
+/* 802811A0 0027CE00 A0 A7 00 04 */ lhz r5, 4(r7)
+/* 802811A4 0027CE04 A0 87 00 06 */ lhz r4, 6(r7)
+/* 802811A8 0027CE08 98 03 80 00 */ stb r0, 0xCC008000@l(r3)
+/* 802811AC 0027CE0C 7C A5 21 D7 */ mullw. r5, r5, r4
+/* 802811B0 0027CE10 A0 07 00 04 */ lhz r0, 4(r7)
+/* 802811B4 0027CE14 B0 03 80 00 */ sth r0, -0x8000(r3)
+/* 802811B8 0027CE18 41 82 00 A4 */ beq lbl_8028125C
+/* 802811BC 0027CE1C 38 65 00 03 */ addi r3, r5, 3
+/* 802811C0 0027CE20 38 E5 FF E0 */ addi r7, r5, -32
+/* 802811C4 0027CE24 54 60 F0 BE */ srwi r0, r3, 2
+/* 802811C8 0027CE28 28 00 00 08 */ cmplwi r0, 8
+/* 802811CC 0027CE2C 40 81 00 68 */ ble lbl_80281234
+/* 802811D0 0027CE30 28 03 00 03 */ cmplwi r3, 3
+/* 802811D4 0027CE34 38 00 00 00 */ li r0, 0
+/* 802811D8 0027CE38 41 80 00 10 */ blt lbl_802811E8
+/* 802811DC 0027CE3C 7C 05 18 40 */ cmplw r5, r3
+/* 802811E0 0027CE40 41 81 00 08 */ bgt lbl_802811E8
+/* 802811E4 0027CE44 38 00 00 01 */ li r0, 1
+lbl_802811E8:
+/* 802811E8 0027CE48 2C 00 00 00 */ cmpwi r0, 0
+/* 802811EC 0027CE4C 41 82 00 48 */ beq lbl_80281234
+/* 802811F0 0027CE50 38 07 00 1F */ addi r0, r7, 0x1f
+/* 802811F4 0027CE54 38 80 00 00 */ li r4, 0
+/* 802811F8 0027CE58 54 00 D9 7E */ srwi r0, r0, 5
+/* 802811FC 0027CE5C 3C 60 CC 01 */ lis r3, 0xcc01
+/* 80281200 0027CE60 7C 09 03 A6 */ mtctr r0
+/* 80281204 0027CE64 28 07 00 00 */ cmplwi r7, 0
+/* 80281208 0027CE68 40 81 00 2C */ ble lbl_80281234
+lbl_8028120C:
+/* 8028120C 0027CE6C 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 80281210 0027CE70 38 C6 00 20 */ addi r6, r6, 0x20
+/* 80281214 0027CE74 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 80281218 0027CE78 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 8028121C 0027CE7C 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 80281220 0027CE80 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 80281224 0027CE84 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 80281228 0027CE88 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 8028122C 0027CE8C 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 80281230 0027CE90 42 00 FF DC */ bdnz lbl_8028120C
+lbl_80281234:
+/* 80281234 0027CE94 38 05 00 03 */ addi r0, r5, 3
+/* 80281238 0027CE98 38 80 00 00 */ li r4, 0
+/* 8028123C 0027CE9C 7C 06 00 50 */ subf r0, r6, r0
+/* 80281240 0027CEA0 3C 60 CC 01 */ lis r3, 0xcc01
+/* 80281244 0027CEA4 54 00 F0 BE */ srwi r0, r0, 2
+/* 80281248 0027CEA8 7C 09 03 A6 */ mtctr r0
+/* 8028124C 0027CEAC 7C 06 28 40 */ cmplw r6, r5
+/* 80281250 0027CEB0 40 80 00 0C */ bge lbl_8028125C
+lbl_80281254:
+/* 80281254 0027CEB4 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 80281258 0027CEB8 42 00 FF FC */ bdnz lbl_80281254
+lbl_8028125C:
+/* 8028125C 0027CEBC 38 00 00 01 */ li r0, 1
+/* 80281260 0027CEC0 B0 1F 00 02 */ sth r0, 2(r31)
+lbl_80281264:
+/* 80281264 0027CEC4 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80281268 0027CEC8 7F A0 E3 78 */ or r0, r29, r28
+/* 8028126C 0027CECC 98 03 80 00 */ stb r0, 0xCC008000@l(r3)
+/* 80281270 0027CED0 B3 C3 80 00 */ sth r30, -0x8000(r3)
+/* 80281274 0027CED4 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80281278 0027CED8 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8028127C 0027CEDC 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 80281280 0027CEE0 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 80281284 0027CEE4 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 80281288 0027CEE8 7C 08 03 A6 */ mtlr r0
+/* 8028128C 0027CEEC 38 21 00 20 */ addi r1, r1, 0x20
+/* 80281290 0027CEF0 4E 80 00 20 */ blr
+
+.global __GXSendFlushPrim
+__GXSendFlushPrim:
+/* 80281294 0027CEF4 80 C2 A0 D0 */ lwz r6, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80281298 0027CEF8 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 8028129C 0027CEFC 38 00 00 98 */ li r0, 0x98
+/* 802812A0 0027CF00 38 E0 00 00 */ li r7, 0
+/* 802812A4 0027CF04 A0 A6 00 04 */ lhz r5, 4(r6)
+/* 802812A8 0027CF08 A0 86 00 06 */ lhz r4, 6(r6)
+/* 802812AC 0027CF0C 98 03 80 00 */ stb r0, 0xCC008000@l(r3)
+/* 802812B0 0027CF10 7D 05 21 D7 */ mullw. r8, r5, r4
+/* 802812B4 0027CF14 A0 06 00 04 */ lhz r0, 4(r6)
+/* 802812B8 0027CF18 B0 03 80 00 */ sth r0, -0x8000(r3)
+/* 802812BC 0027CF1C 41 82 00 A4 */ beq lbl_80281360
+/* 802812C0 0027CF20 38 68 00 03 */ addi r3, r8, 3
+/* 802812C4 0027CF24 38 A8 FF E0 */ addi r5, r8, -32
+/* 802812C8 0027CF28 54 60 F0 BE */ srwi r0, r3, 2
+/* 802812CC 0027CF2C 28 00 00 08 */ cmplwi r0, 8
+/* 802812D0 0027CF30 40 81 00 68 */ ble lbl_80281338
+/* 802812D4 0027CF34 28 03 00 03 */ cmplwi r3, 3
+/* 802812D8 0027CF38 38 00 00 00 */ li r0, 0
+/* 802812DC 0027CF3C 41 80 00 10 */ blt lbl_802812EC
+/* 802812E0 0027CF40 7C 08 18 40 */ cmplw r8, r3
+/* 802812E4 0027CF44 41 81 00 08 */ bgt lbl_802812EC
+/* 802812E8 0027CF48 38 00 00 01 */ li r0, 1
+lbl_802812EC:
+/* 802812EC 0027CF4C 2C 00 00 00 */ cmpwi r0, 0
+/* 802812F0 0027CF50 41 82 00 48 */ beq lbl_80281338
+/* 802812F4 0027CF54 38 05 00 1F */ addi r0, r5, 0x1f
+/* 802812F8 0027CF58 38 80 00 00 */ li r4, 0
+/* 802812FC 0027CF5C 54 00 D9 7E */ srwi r0, r0, 5
+/* 80281300 0027CF60 3C 60 CC 01 */ lis r3, 0xcc01
+/* 80281304 0027CF64 7C 09 03 A6 */ mtctr r0
+/* 80281308 0027CF68 28 05 00 00 */ cmplwi r5, 0
+/* 8028130C 0027CF6C 40 81 00 2C */ ble lbl_80281338
+lbl_80281310:
+/* 80281310 0027CF70 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 80281314 0027CF74 38 E7 00 20 */ addi r7, r7, 0x20
+/* 80281318 0027CF78 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 8028131C 0027CF7C 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 80281320 0027CF80 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 80281324 0027CF84 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 80281328 0027CF88 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 8028132C 0027CF8C 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 80281330 0027CF90 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 80281334 0027CF94 42 00 FF DC */ bdnz lbl_80281310
+lbl_80281338:
+/* 80281338 0027CF98 38 08 00 03 */ addi r0, r8, 3
+/* 8028133C 0027CF9C 38 80 00 00 */ li r4, 0
+/* 80281340 0027CFA0 7C 07 00 50 */ subf r0, r7, r0
+/* 80281344 0027CFA4 3C 60 CC 01 */ lis r3, 0xcc01
+/* 80281348 0027CFA8 54 00 F0 BE */ srwi r0, r0, 2
+/* 8028134C 0027CFAC 7C 09 03 A6 */ mtctr r0
+/* 80281350 0027CFB0 7C 07 40 40 */ cmplw r7, r8
+/* 80281354 0027CFB4 40 80 00 0C */ bge lbl_80281360
+lbl_80281358:
+/* 80281358 0027CFB8 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 8028135C 0027CFBC 42 00 FF FC */ bdnz lbl_80281358
+lbl_80281360:
+/* 80281360 0027CFC0 38 00 00 01 */ li r0, 1
+/* 80281364 0027CFC4 B0 06 00 02 */ sth r0, 2(r6)
+/* 80281368 0027CFC8 4E 80 00 20 */ blr
+
+.global GXSetLineWidth
+GXSetLineWidth:
+/* 8028136C 0027CFCC 81 02 A0 D0 */ lwz r8, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80281370 0027CFD0 3C A0 CC 01 */ lis r5, 0xCC008000@ha
+/* 80281374 0027CFD4 38 C0 00 61 */ li r6, 0x61
+/* 80281378 0027CFD8 38 00 00 00 */ li r0, 0
+/* 8028137C 0027CFDC 80 E8 00 7C */ lwz r7, 0x7c(r8)
+/* 80281380 0027CFE0 50 67 06 3E */ rlwimi r7, r3, 0, 0x18, 0x1f
+/* 80281384 0027CFE4 50 87 83 5E */ rlwimi r7, r4, 0x10, 0xd, 0xf
+/* 80281388 0027CFE8 90 E8 00 7C */ stw r7, 0x7c(r8)
+/* 8028138C 0027CFEC 98 C5 80 00 */ stb r6, 0xCC008000@l(r5)
+/* 80281390 0027CFF0 80 68 00 7C */ lwz r3, 0x7c(r8)
+/* 80281394 0027CFF4 90 65 80 00 */ stw r3, -0x8000(r5)
+/* 80281398 0027CFF8 B0 08 00 02 */ sth r0, 2(r8)
+/* 8028139C 0027CFFC 4E 80 00 20 */ blr
+
+.global GXSetPointSize
+GXSetPointSize:
+/* 802813A0 0027D000 81 02 A0 D0 */ lwz r8, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802813A4 0027D004 3C A0 CC 01 */ lis r5, 0xCC008000@ha
+/* 802813A8 0027D008 38 C0 00 61 */ li r6, 0x61
+/* 802813AC 0027D00C 38 00 00 00 */ li r0, 0
+/* 802813B0 0027D010 80 E8 00 7C */ lwz r7, 0x7c(r8)
+/* 802813B4 0027D014 50 67 44 2E */ rlwimi r7, r3, 8, 0x10, 0x17
+/* 802813B8 0027D018 50 87 9A 98 */ rlwimi r7, r4, 0x13, 0xa, 0xc
+/* 802813BC 0027D01C 90 E8 00 7C */ stw r7, 0x7c(r8)
+/* 802813C0 0027D020 98 C5 80 00 */ stb r6, 0xCC008000@l(r5)
+/* 802813C4 0027D024 80 68 00 7C */ lwz r3, 0x7c(r8)
+/* 802813C8 0027D028 90 65 80 00 */ stw r3, -0x8000(r5)
+/* 802813CC 0027D02C B0 08 00 02 */ sth r0, 2(r8)
+/* 802813D0 0027D030 4E 80 00 20 */ blr
+
+.global GXEnableTexOffsets
+GXEnableTexOffsets:
+/* 802813D4 0027D034 81 22 A0 D0 */ lwz r9, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802813D8 0027D038 54 60 10 3A */ slwi r0, r3, 2
+/* 802813DC 0027D03C 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 802813E0 0027D040 38 60 00 61 */ li r3, 0x61
+/* 802813E4 0027D044 7D 09 02 14 */ add r8, r9, r0
+/* 802813E8 0027D048 38 00 00 00 */ li r0, 0
+/* 802813EC 0027D04C 80 E8 01 08 */ lwz r7, 0x108(r8)
+/* 802813F0 0027D050 50 87 93 5A */ rlwimi r7, r4, 0x12, 0xd, 0xd
+/* 802813F4 0027D054 50 A7 9B 18 */ rlwimi r7, r5, 0x13, 0xc, 0xc
+/* 802813F8 0027D058 90 E8 01 08 */ stw r7, 0x108(r8)
+/* 802813FC 0027D05C 98 66 80 00 */ stb r3, 0xCC008000@l(r6)
+/* 80281400 0027D060 80 68 01 08 */ lwz r3, 0x108(r8)
+/* 80281404 0027D064 90 66 80 00 */ stw r3, -0x8000(r6)
+/* 80281408 0027D068 B0 09 00 02 */ sth r0, 2(r9)
+/* 8028140C 0027D06C 4E 80 00 20 */ blr
+
+.global GXSetCullMode
+GXSetCullMode:
+/* 80281410 0027D070 80 82 A0 D0 */ lwz r4, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80281414 0027D074 54 65 FF FE */ rlwinm r5, r3, 0x1f, 0x1f, 0x1f
+/* 80281418 0027D078 50 65 0F BC */ rlwimi r5, r3, 1, 0x1e, 0x1e
+/* 8028141C 0027D07C 80 04 02 54 */ lwz r0, 0x254(r4)
+/* 80281420 0027D080 50 A0 74 22 */ rlwimi r0, r5, 0xe, 0x10, 0x11
+/* 80281424 0027D084 90 04 02 54 */ stw r0, 0x254(r4)
+/* 80281428 0027D088 80 04 05 FC */ lwz r0, 0x5fc(r4)
+/* 8028142C 0027D08C 60 00 00 04 */ ori r0, r0, 4
+/* 80281430 0027D090 90 04 05 FC */ stw r0, 0x5fc(r4)
+/* 80281434 0027D094 4E 80 00 20 */ blr
+
+.global GXSetCoPlanar
+GXSetCoPlanar:
+/* 80281438 0027D098 80 E2 A0 D0 */ lwz r7, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8028143C 0027D09C 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 80281440 0027D0A0 38 A0 00 61 */ li r5, 0x61
+/* 80281444 0027D0A4 3C 00 FE 08 */ lis r0, 0xfe08
+/* 80281448 0027D0A8 80 C7 02 54 */ lwz r6, 0x254(r7)
+/* 8028144C 0027D0AC 50 66 9B 18 */ rlwimi r6, r3, 0x13, 0xc, 0xc
+/* 80281450 0027D0B0 90 C7 02 54 */ stw r6, 0x254(r7)
+/* 80281454 0027D0B4 98 A4 80 00 */ stb r5, 0xCC008000@l(r4)
+/* 80281458 0027D0B8 90 04 80 00 */ stw r0, -0x8000(r4)
+/* 8028145C 0027D0BC 98 A4 80 00 */ stb r5, -0x8000(r4)
+/* 80281460 0027D0C0 80 07 02 54 */ lwz r0, 0x254(r7)
+/* 80281464 0027D0C4 90 04 80 00 */ stw r0, -0x8000(r4)
+/* 80281468 0027D0C8 4E 80 00 20 */ blr
diff --git a/asm/SDK/GX/GXInit.s b/asm/SDK/GX/GXInit.s
new file mode 100644
index 0000000..b4ec32a
--- /dev/null
+++ b/asm/SDK/GX/GXInit.s
@@ -0,0 +1,1194 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global __GXDefaultTexRegionCallback
+__GXDefaultTexRegionCallback:
+/* 8027D624 00279284 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8027D628 00279288 7C 08 02 A6 */ mflr r0
+/* 8027D62C 0027928C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8027D630 00279290 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8027D634 00279294 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8027D638 00279298 7C 9E 23 78 */ mr r30, r4
+/* 8027D63C 0027929C 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8027D640 002792A0 7C 7D 1B 78 */ mr r29, r3
+/* 8027D644 002792A4 48 00 54 01 */ bl GXGetTexObjFmt
+/* 8027D648 002792A8 7C 7F 1B 78 */ mr r31, r3
+/* 8027D64C 002792AC 7F A3 EB 78 */ mr r3, r29
+/* 8027D650 002792B0 48 00 53 FD */ bl GXGetTexObjMipMap
+/* 8027D654 002792B4 57 C0 E8 04 */ slwi r0, r30, 0x1d
+/* 8027D658 002792B8 57 C4 0F FE */ srwi r4, r30, 0x1f
+/* 8027D65C 002792BC 7C 04 00 50 */ subf r0, r4, r0
+/* 8027D660 002792C0 2C 1F 00 07 */ cmpwi r31, 7
+/* 8027D664 002792C4 54 00 18 3E */ rotlwi r0, r0, 3
+/* 8027D668 002792C8 7F C0 22 14 */ add r30, r0, r4
+/* 8027D66C 002792CC 41 82 00 64 */ beq lbl_8027D6D0
+/* 8027D670 002792D0 40 80 00 10 */ bge lbl_8027D680
+/* 8027D674 002792D4 2C 1F 00 06 */ cmpwi r31, 6
+/* 8027D678 002792D8 40 80 00 14 */ bge lbl_8027D68C
+/* 8027D67C 002792DC 48 00 00 54 */ b lbl_8027D6D0
+lbl_8027D680:
+/* 8027D680 002792E0 2C 1F 00 0B */ cmpwi r31, 0xb
+/* 8027D684 002792E4 40 80 00 4C */ bge lbl_8027D6D0
+/* 8027D688 002792E8 48 00 00 34 */ b lbl_8027D6BC
+lbl_8027D68C:
+/* 8027D68C 002792EC 54 60 06 3F */ clrlwi. r0, r3, 0x18
+/* 8027D690 002792F0 41 82 00 18 */ beq lbl_8027D6A8
+/* 8027D694 002792F4 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027D698 002792F8 57 C0 20 36 */ slwi r0, r30, 4
+/* 8027D69C 002792FC 7C 63 02 14 */ add r3, r3, r0
+/* 8027D6A0 00279300 38 63 03 58 */ addi r3, r3, 0x358
+/* 8027D6A4 00279304 48 00 00 58 */ b lbl_8027D6FC
+lbl_8027D6A8:
+/* 8027D6A8 00279308 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027D6AC 0027930C 57 C0 20 36 */ slwi r0, r30, 4
+/* 8027D6B0 00279310 7C 63 02 14 */ add r3, r3, r0
+/* 8027D6B4 00279314 38 63 02 D8 */ addi r3, r3, 0x2d8
+/* 8027D6B8 00279318 48 00 00 44 */ b lbl_8027D6FC
+lbl_8027D6BC:
+/* 8027D6BC 0027931C 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027D6C0 00279320 57 C0 20 36 */ slwi r0, r30, 4
+/* 8027D6C4 00279324 7C 63 02 14 */ add r3, r3, r0
+/* 8027D6C8 00279328 38 63 02 58 */ addi r3, r3, 0x258
+/* 8027D6CC 0027932C 48 00 00 30 */ b lbl_8027D6FC
+lbl_8027D6D0:
+/* 8027D6D0 00279330 54 60 06 3F */ clrlwi. r0, r3, 0x18
+/* 8027D6D4 00279334 41 82 00 18 */ beq lbl_8027D6EC
+/* 8027D6D8 00279338 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027D6DC 0027933C 57 C0 20 36 */ slwi r0, r30, 4
+/* 8027D6E0 00279340 7C 63 02 14 */ add r3, r3, r0
+/* 8027D6E4 00279344 38 63 02 D8 */ addi r3, r3, 0x2d8
+/* 8027D6E8 00279348 48 00 00 14 */ b lbl_8027D6FC
+lbl_8027D6EC:
+/* 8027D6EC 0027934C 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027D6F0 00279350 57 C0 20 36 */ slwi r0, r30, 4
+/* 8027D6F4 00279354 7C 63 02 14 */ add r3, r3, r0
+/* 8027D6F8 00279358 38 63 02 58 */ addi r3, r3, 0x258
+lbl_8027D6FC:
+/* 8027D6FC 0027935C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8027D700 00279360 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8027D704 00279364 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8027D708 00279368 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8027D70C 0027936C 7C 08 03 A6 */ mtlr r0
+/* 8027D710 00279370 38 21 00 20 */ addi r1, r1, 0x20
+/* 8027D714 00279374 4E 80 00 20 */ blr
+
+.global __GXDefaultTlutRegionCallback
+__GXDefaultTlutRegionCallback:
+/* 8027D718 00279378 28 03 00 14 */ cmplwi r3, 0x14
+/* 8027D71C 0027937C 41 80 00 0C */ blt lbl_8027D728
+/* 8027D720 00279380 38 60 00 00 */ li r3, 0
+/* 8027D724 00279384 4E 80 00 20 */ blr
+lbl_8027D728:
+/* 8027D728 00279388 80 82 A0 D0 */ lwz r4, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027D72C 0027938C 54 60 20 36 */ slwi r0, r3, 4
+/* 8027D730 00279390 7C 64 02 14 */ add r3, r4, r0
+/* 8027D734 00279394 38 63 03 D8 */ addi r3, r3, 0x3d8
+/* 8027D738 00279398 4E 80 00 20 */ blr
+
+.global __GXShutdown
+__GXShutdown:
+/* 8027D73C 0027939C 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8027D740 002793A0 7C 08 02 A6 */ mflr r0
+/* 8027D744 002793A4 2C 03 00 00 */ cmpwi r3, 0
+/* 8027D748 002793A8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8027D74C 002793AC 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8027D750 002793B0 40 82 00 D8 */ bne lbl_8027D828
+/* 8027D754 002793B4 80 0D A9 B0 */ lwz r0, lbl_8063FC70-_SDA_BASE_(r13)
+/* 8027D758 002793B8 2C 00 00 00 */ cmpwi r0, 0
+/* 8027D75C 002793BC 40 82 00 48 */ bne lbl_8027D7A4
+/* 8027D760 002793C0 80 AD A9 9C */ lwz r5, lbl_8063FC5C-_SDA_BASE_(r13)
+/* 8027D764 002793C4 A0 85 00 4E */ lhz r4, 0x4e(r5)
+lbl_8027D768:
+/* 8027D768 002793C8 7C 80 23 78 */ mr r0, r4
+/* 8027D76C 002793CC A0 65 00 50 */ lhz r3, 0x50(r5)
+/* 8027D770 002793D0 A0 85 00 4E */ lhz r4, 0x4e(r5)
+/* 8027D774 002793D4 7C 04 00 40 */ cmplw r4, r0
+/* 8027D778 002793D8 40 82 FF F0 */ bne lbl_8027D768
+/* 8027D77C 002793DC 54 80 80 1E */ slwi r0, r4, 0x10
+/* 8027D780 002793E0 7C 00 1B 78 */ or r0, r0, r3
+/* 8027D784 002793E4 90 0D A9 A0 */ stw r0, lbl_8063FC60-_SDA_BASE_(r13)
+/* 8027D788 002793E8 4B FF 50 31 */ bl OSGetTime
+/* 8027D78C 002793EC 38 00 00 01 */ li r0, 1
+/* 8027D790 002793F0 90 6D A9 A8 */ stw r3, lbl_8063FC68-_SDA_BASE_(r13)
+/* 8027D794 002793F4 38 60 00 00 */ li r3, 0
+/* 8027D798 002793F8 90 8D A9 AC */ stw r4, lbl_8063FC6C-_SDA_BASE_(r13)
+/* 8027D79C 002793FC 90 0D A9 B0 */ stw r0, lbl_8063FC70-_SDA_BASE_(r13)
+/* 8027D7A0 00279400 48 00 00 F4 */ b lbl_8027D894
+lbl_8027D7A4:
+/* 8027D7A4 00279404 4B FF 50 15 */ bl OSGetTime
+/* 8027D7A8 00279408 80 AD A9 9C */ lwz r5, lbl_8063FC5C-_SDA_BASE_(r13)
+/* 8027D7AC 0027940C A0 E5 00 4E */ lhz r7, 0x4e(r5)
+lbl_8027D7B0:
+/* 8027D7B0 00279410 7C E0 3B 78 */ mr r0, r7
+/* 8027D7B4 00279414 A1 45 00 50 */ lhz r10, 0x50(r5)
+/* 8027D7B8 00279418 A0 E5 00 4E */ lhz r7, 0x4e(r5)
+/* 8027D7BC 0027941C 7C 07 00 40 */ cmplw r7, r0
+/* 8027D7C0 00279420 40 82 FF F0 */ bne lbl_8027D7B0
+/* 8027D7C4 00279424 80 AD A9 AC */ lwz r5, lbl_8063FC6C-_SDA_BASE_(r13)
+/* 8027D7C8 00279428 38 00 00 00 */ li r0, 0
+/* 8027D7CC 0027942C 80 CD A9 A8 */ lwz r6, lbl_8063FC68-_SDA_BASE_(r13)
+/* 8027D7D0 00279430 54 E9 80 1E */ slwi r9, r7, 0x10
+/* 8027D7D4 00279434 7D 05 20 10 */ subfc r8, r5, r4
+/* 8027D7D8 00279438 38 A0 00 0A */ li r5, 0xa
+/* 8027D7DC 0027943C 7C E6 19 10 */ subfe r7, r6, r3
+/* 8027D7E0 00279440 6C 06 80 00 */ xoris r6, r0, 0x8000
+/* 8027D7E4 00279444 7C A5 40 10 */ subfc r5, r5, r8
+/* 8027D7E8 00279448 6C E0 80 00 */ xoris r0, r7, 0x8000
+/* 8027D7EC 0027944C 7C C6 01 10 */ subfe r6, r6, r0
+/* 8027D7F0 00279450 7D 25 53 78 */ or r5, r9, r10
+/* 8027D7F4 00279454 7C C0 01 10 */ subfe r6, r0, r0
+/* 8027D7F8 00279458 7C C6 00 D1 */ neg. r6, r6
+/* 8027D7FC 0027945C 41 82 00 0C */ beq lbl_8027D808
+/* 8027D800 00279460 38 60 00 00 */ li r3, 0
+/* 8027D804 00279464 48 00 00 90 */ b lbl_8027D894
+lbl_8027D808:
+/* 8027D808 00279468 80 0D A9 A0 */ lwz r0, lbl_8063FC60-_SDA_BASE_(r13)
+/* 8027D80C 0027946C 7C 05 00 40 */ cmplw r5, r0
+/* 8027D810 00279470 41 82 00 80 */ beq lbl_8027D890
+/* 8027D814 00279474 90 6D A9 A8 */ stw r3, lbl_8063FC68-_SDA_BASE_(r13)
+/* 8027D818 00279478 38 60 00 00 */ li r3, 0
+/* 8027D81C 0027947C 90 AD A9 A0 */ stw r5, lbl_8063FC60-_SDA_BASE_(r13)
+/* 8027D820 00279480 90 8D A9 AC */ stw r4, lbl_8063FC6C-_SDA_BASE_(r13)
+/* 8027D824 00279484 48 00 00 70 */ b lbl_8027D894
+lbl_8027D828:
+/* 8027D828 00279488 38 60 00 00 */ li r3, 0
+/* 8027D82C 0027948C 48 00 19 21 */ bl GXSetBreakPtCallback
+/* 8027D830 00279490 38 60 00 00 */ li r3, 0
+/* 8027D834 00279494 48 00 34 AD */ bl GXSetDrawSyncCallback
+/* 8027D838 00279498 38 60 00 00 */ li r3, 0
+/* 8027D83C 0027949C 48 00 35 6D */ bl GXSetDrawDoneCallback
+/* 8027D840 002794A0 3B E0 00 00 */ li r31, 0
+/* 8027D844 002794A4 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 8027D848 002794A8 93 E3 80 00 */ stw r31, 0xCC008000@l(r3)
+/* 8027D84C 002794AC 93 E3 80 00 */ stw r31, -0x8000(r3)
+/* 8027D850 002794B0 93 E3 80 00 */ stw r31, -0x8000(r3)
+/* 8027D854 002794B4 93 E3 80 00 */ stw r31, -0x8000(r3)
+/* 8027D858 002794B8 93 E3 80 00 */ stw r31, -0x8000(r3)
+/* 8027D85C 002794BC 93 E3 80 00 */ stw r31, -0x8000(r3)
+/* 8027D860 002794C0 93 E3 80 00 */ stw r31, -0x8000(r3)
+/* 8027D864 002794C4 93 E3 80 00 */ stw r31, -0x8000(r3)
+/* 8027D868 002794C8 4B FE A9 F9 */ bl PPCSync
+/* 8027D86C 002794CC 80 8D A9 94 */ lwz r4, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027D870 002794D0 38 A0 00 03 */ li r5, 3
+/* 8027D874 002794D4 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027D878 002794D8 38 00 00 01 */ li r0, 1
+/* 8027D87C 002794DC B3 E4 00 02 */ sth r31, 2(r4)
+/* 8027D880 002794E0 80 8D A9 94 */ lwz r4, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027D884 002794E4 B0 A4 00 04 */ sth r5, 4(r4)
+/* 8027D888 002794E8 98 03 05 FA */ stb r0, 0x5fa(r3)
+/* 8027D88C 002794EC 48 00 2E A9 */ bl __GXAbort
+lbl_8027D890:
+/* 8027D890 002794F0 38 60 00 01 */ li r3, 1
+lbl_8027D894:
+/* 8027D894 002794F4 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8027D898 002794F8 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8027D89C 002794FC 7C 08 03 A6 */ mtlr r0
+/* 8027D8A0 00279500 38 21 00 10 */ addi r1, r1, 0x10
+/* 8027D8A4 00279504 4E 80 00 20 */ blr
+
+.global __GXInitRevisionBits
+__GXInitRevisionBits:
+/* 8027D8A8 00279508 38 00 00 02 */ li r0, 2
+/* 8027D8AC 0027950C 80 C2 A0 D0 */ lwz r6, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027D8B0 00279510 38 E0 00 00 */ li r7, 0
+/* 8027D8B4 00279514 38 A0 00 08 */ li r5, 8
+/* 8027D8B8 00279518 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 8027D8BC 0027951C 7C 09 03 A6 */ mtctr r0
+lbl_8027D8C0:
+/* 8027D8C0 00279520 80 06 00 1C */ lwz r0, 0x1c(r6)
+/* 8027D8C4 00279524 60 E3 00 80 */ ori r3, r7, 0x80
+/* 8027D8C8 00279528 38 E7 00 01 */ addi r7, r7, 1
+/* 8027D8CC 0027952C 64 00 40 00 */ oris r0, r0, 0x4000
+/* 8027D8D0 00279530 90 06 00 1C */ stw r0, 0x1c(r6)
+/* 8027D8D4 00279534 80 06 00 3C */ lwz r0, 0x3c(r6)
+/* 8027D8D8 00279538 64 00 80 00 */ oris r0, r0, 0x8000
+/* 8027D8DC 0027953C 90 06 00 3C */ stw r0, 0x3c(r6)
+/* 8027D8E0 00279540 98 A4 80 00 */ stb r5, 0xCC008000@l(r4)
+/* 8027D8E4 00279544 98 64 80 00 */ stb r3, -0x8000(r4)
+/* 8027D8E8 00279548 60 E3 00 80 */ ori r3, r7, 0x80
+/* 8027D8EC 0027954C 38 E7 00 01 */ addi r7, r7, 1
+/* 8027D8F0 00279550 80 06 00 3C */ lwz r0, 0x3c(r6)
+/* 8027D8F4 00279554 90 04 80 00 */ stw r0, -0x8000(r4)
+/* 8027D8F8 00279558 80 06 00 20 */ lwz r0, 0x20(r6)
+/* 8027D8FC 0027955C 64 00 40 00 */ oris r0, r0, 0x4000
+/* 8027D900 00279560 90 06 00 20 */ stw r0, 0x20(r6)
+/* 8027D904 00279564 80 06 00 40 */ lwz r0, 0x40(r6)
+/* 8027D908 00279568 64 00 80 00 */ oris r0, r0, 0x8000
+/* 8027D90C 0027956C 90 06 00 40 */ stw r0, 0x40(r6)
+/* 8027D910 00279570 98 A4 80 00 */ stb r5, -0x8000(r4)
+/* 8027D914 00279574 98 64 80 00 */ stb r3, -0x8000(r4)
+/* 8027D918 00279578 60 E3 00 80 */ ori r3, r7, 0x80
+/* 8027D91C 0027957C 38 E7 00 01 */ addi r7, r7, 1
+/* 8027D920 00279580 80 06 00 40 */ lwz r0, 0x40(r6)
+/* 8027D924 00279584 90 04 80 00 */ stw r0, -0x8000(r4)
+/* 8027D928 00279588 80 06 00 24 */ lwz r0, 0x24(r6)
+/* 8027D92C 0027958C 64 00 40 00 */ oris r0, r0, 0x4000
+/* 8027D930 00279590 90 06 00 24 */ stw r0, 0x24(r6)
+/* 8027D934 00279594 80 06 00 44 */ lwz r0, 0x44(r6)
+/* 8027D938 00279598 64 00 80 00 */ oris r0, r0, 0x8000
+/* 8027D93C 0027959C 90 06 00 44 */ stw r0, 0x44(r6)
+/* 8027D940 002795A0 98 A4 80 00 */ stb r5, -0x8000(r4)
+/* 8027D944 002795A4 98 64 80 00 */ stb r3, -0x8000(r4)
+/* 8027D948 002795A8 60 E3 00 80 */ ori r3, r7, 0x80
+/* 8027D94C 002795AC 38 E7 00 01 */ addi r7, r7, 1
+/* 8027D950 002795B0 80 06 00 44 */ lwz r0, 0x44(r6)
+/* 8027D954 002795B4 90 04 80 00 */ stw r0, -0x8000(r4)
+/* 8027D958 002795B8 80 06 00 28 */ lwz r0, 0x28(r6)
+/* 8027D95C 002795BC 64 00 40 00 */ oris r0, r0, 0x4000
+/* 8027D960 002795C0 90 06 00 28 */ stw r0, 0x28(r6)
+/* 8027D964 002795C4 80 06 00 48 */ lwz r0, 0x48(r6)
+/* 8027D968 002795C8 64 00 80 00 */ oris r0, r0, 0x8000
+/* 8027D96C 002795CC 90 06 00 48 */ stw r0, 0x48(r6)
+/* 8027D970 002795D0 98 A4 80 00 */ stb r5, -0x8000(r4)
+/* 8027D974 002795D4 98 64 80 00 */ stb r3, -0x8000(r4)
+/* 8027D978 002795D8 80 06 00 48 */ lwz r0, 0x48(r6)
+/* 8027D97C 002795DC 38 C6 00 10 */ addi r6, r6, 0x10
+/* 8027D980 002795E0 90 04 80 00 */ stw r0, -0x8000(r4)
+/* 8027D984 002795E4 42 00 FF 3C */ bdnz lbl_8027D8C0
+/* 8027D988 002795E8 3C E0 CC 01 */ lis r7, 0xCC008000@ha
+/* 8027D98C 002795EC 39 00 00 10 */ li r8, 0x10
+/* 8027D990 002795F0 99 07 80 00 */ stb r8, 0xCC008000@l(r7)
+/* 8027D994 002795F4 38 80 00 00 */ li r4, 0
+/* 8027D998 002795F8 38 00 10 00 */ li r0, 0x1000
+/* 8027D99C 002795FC 38 A0 10 12 */ li r5, 0x1012
+/* 8027D9A0 00279600 90 07 80 00 */ stw r0, -0x8000(r7)
+/* 8027D9A4 00279604 60 83 00 3F */ ori r3, r4, 0x3f
+/* 8027D9A8 00279608 60 86 00 01 */ ori r6, r4, 1
+/* 8027D9AC 0027960C 38 00 00 61 */ li r0, 0x61
+/* 8027D9B0 00279610 90 67 80 00 */ stw r3, -0x8000(r7)
+/* 8027D9B4 00279614 38 60 00 58 */ li r3, 0x58
+/* 8027D9B8 00279618 60 84 00 0F */ ori r4, r4, 0xf
+/* 8027D9BC 0027961C 99 07 80 00 */ stb r8, -0x8000(r7)
+/* 8027D9C0 00279620 50 64 C0 0E */ rlwimi r4, r3, 0x18, 0, 7
+/* 8027D9C4 00279624 90 A7 80 00 */ stw r5, -0x8000(r7)
+/* 8027D9C8 00279628 90 C7 80 00 */ stw r6, -0x8000(r7)
+/* 8027D9CC 0027962C 98 07 80 00 */ stb r0, -0x8000(r7)
+/* 8027D9D0 00279630 90 87 80 00 */ stw r4, -0x8000(r7)
+/* 8027D9D4 00279634 4E 80 00 20 */ blr
+
+.global GXInit
+GXInit:
+/* 8027D9D8 00279638 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8027D9DC 0027963C 7C 08 02 A6 */ mflr r0
+/* 8027D9E0 00279640 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8027D9E4 00279644 39 61 00 20 */ addi r11, r1, 0x20
+/* 8027D9E8 00279648 4B F4 97 3D */ bl _savegpr_26
+/* 8027D9EC 0027964C 7C 7B 1B 78 */ mr r27, r3
+/* 8027D9F0 00279650 80 6D 88 50 */ lwz r3, lbl_8063DB10-_SDA_BASE_(r13)
+/* 8027D9F4 00279654 7C 9A 23 78 */ mr r26, r4
+/* 8027D9F8 00279658 4B FE BC 59 */ bl OSRegisterVersion
+/* 8027D9FC 0027965C 83 E2 A0 D0 */ lwz r31, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027DA00 00279660 38 00 00 00 */ li r0, 0
+/* 8027DA04 00279664 3B A0 00 01 */ li r29, 1
+/* 8027DA08 00279668 38 60 00 01 */ li r3, 1
+/* 8027DA0C 0027966C 98 1F 05 F8 */ stb r0, 0x5f8(r31)
+/* 8027DA10 00279670 38 80 00 00 */ li r4, 0
+/* 8027DA14 00279674 9B BF 05 F9 */ stb r29, 0x5f9(r31)
+/* 8027DA18 00279678 9B BF 05 FA */ stb r29, 0x5fa(r31)
+/* 8027DA1C 0027967C 90 1F 05 E4 */ stw r0, 0x5e4(r31)
+/* 8027DA20 00279680 90 1F 05 E8 */ stw r0, 0x5e8(r31)
+/* 8027DA24 00279684 48 00 2B F5 */ bl GXSetMisc
+/* 8027DA28 00279688 3C 80 CC 00 */ lis r4, 0xCC003000@ha
+/* 8027DA2C 0027968C 38 A4 30 00 */ addi r5, r4, 0xCC003000@l
+/* 8027DA30 00279690 90 8D A9 94 */ stw r4, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027DA34 00279694 38 64 10 00 */ addi r3, r4, 0x1000
+/* 8027DA38 00279698 38 04 40 00 */ addi r0, r4, 0x4000
+/* 8027DA3C 0027969C 90 AD A9 90 */ stw r5, lbl_8063FC50-_SDA_BASE_(r13)
+/* 8027DA40 002796A0 90 6D A9 98 */ stw r3, lbl_8063FC58-_SDA_BASE_(r13)
+/* 8027DA44 002796A4 90 0D A9 9C */ stw r0, lbl_8063FC5C-_SDA_BASE_(r13)
+/* 8027DA48 002796A8 48 00 17 91 */ bl __GXFifoInit
+/* 8027DA4C 002796AC 3F 80 80 51 */ lis r28, lbl_80515930@ha
+/* 8027DA50 002796B0 7F 64 DB 78 */ mr r4, r27
+/* 8027DA54 002796B4 7F 45 D3 78 */ mr r5, r26
+/* 8027DA58 002796B8 38 7C 59 30 */ addi r3, r28, lbl_80515930@l
+/* 8027DA5C 002796BC 48 00 0E F1 */ bl GXInitFifoBase
+/* 8027DA60 002796C0 38 7C 59 30 */ addi r3, r28, 0x5930
+/* 8027DA64 002796C4 48 00 10 6D */ bl GXSetCPUFifo
+/* 8027DA68 002796C8 38 7C 59 30 */ addi r3, r28, 0x5930
+/* 8027DA6C 002796CC 48 00 12 45 */ bl GXSetGPFifo
+/* 8027DA70 002796D0 80 0D A9 B4 */ lwz r0, lbl_8063FC74-_SDA_BASE_(r13)
+/* 8027DA74 002796D4 2C 00 00 00 */ cmpwi r0, 0
+/* 8027DA78 002796D8 40 82 00 14 */ bne lbl_8027DA8C
+/* 8027DA7C 002796DC 3C 60 80 43 */ lis r3, lbl_80434CD0@ha
+/* 8027DA80 002796E0 38 63 4C D0 */ addi r3, r3, lbl_80434CD0@l
+/* 8027DA84 002796E4 4B FF 22 0D */ bl OSRegisterShutdownFunction
+/* 8027DA88 002796E8 93 AD A9 B4 */ stw r29, lbl_8063FC74-_SDA_BASE_(r13)
+lbl_8027DA8C:
+/* 8027DA8C 002796EC 48 00 33 E1 */ bl __GXPEInit
+/* 8027DA90 002796F0 4B FE A8 65 */ bl PPCMfhid2
+/* 8027DA94 002796F4 3C 80 0C 01 */ lis r4, 0x0C008000@ha
+/* 8027DA98 002796F8 7C 7C 1B 78 */ mr r28, r3
+/* 8027DA9C 002796FC 38 64 80 00 */ addi r3, r4, 0x0C008000@l
+/* 8027DAA0 00279700 4B FE A8 71 */ bl PPCMtwpar
+/* 8027DAA4 00279704 67 83 40 00 */ oris r3, r28, 0x4000
+/* 8027DAA8 00279708 4B FE A8 55 */ bl PPCMthid2
+/* 8027DAAC 0027970C 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027DAB0 00279710 39 00 00 00 */ li r8, 0
+/* 8027DAB4 00279714 38 00 00 0F */ li r0, 0xf
+/* 8027DAB8 00279718 38 A0 00 FF */ li r5, 0xff
+/* 8027DABC 0027971C 91 03 02 54 */ stw r8, 0x254(r3)
+/* 8027DAC0 00279720 50 05 C0 0E */ rlwimi r5, r0, 0x18, 0, 7
+/* 8027DAC4 00279724 38 00 00 22 */ li r0, 0x22
+/* 8027DAC8 00279728 38 80 00 00 */ li r4, 0
+/* 8027DACC 0027972C 90 A3 01 74 */ stw r5, 0x174(r3)
+/* 8027DAD0 00279730 50 04 C0 0E */ rlwimi r4, r0, 0x18, 0, 7
+/* 8027DAD4 00279734 38 00 00 08 */ li r0, 8
+/* 8027DAD8 00279738 7C 69 1B 78 */ mr r9, r3
+/* 8027DADC 0027973C 90 83 00 7C */ stw r4, 0x7c(r3)
+/* 8027DAE0 00279740 3B 40 00 00 */ li r26, 0
+/* 8027DAE4 00279744 39 40 00 C0 */ li r10, 0xc0
+/* 8027DAE8 00279748 38 C0 00 FF */ li r6, 0xff
+/* 8027DAEC 0027974C 7C 09 03 A6 */ mtctr r0
+lbl_8027DAF0:
+/* 8027DAF0 00279750 91 09 01 80 */ stw r8, 0x180(r9)
+/* 8027DAF4 00279754 57 4C F8 7E */ srwi r12, r26, 1
+/* 8027DAF8 00279758 57 47 08 3A */ rlwinm r7, r26, 1, 0, 0x1d
+/* 8027DAFC 0027975C 39 6A 00 01 */ addi r11, r10, 1
+/* 8027DB00 00279760 91 09 01 C0 */ stw r8, 0x1c0(r9)
+/* 8027DB04 00279764 7F 63 3A 14 */ add r27, r3, r7
+/* 8027DB08 00279768 3B 5A 00 01 */ addi r26, r26, 1
+/* 8027DB0C 0027976C 38 AC 00 F6 */ addi r5, r12, 0xf6
+/* 8027DB10 00279770 91 1B 01 50 */ stw r8, 0x150(r27)
+/* 8027DB14 00279774 38 0C 00 28 */ addi r0, r12, 0x28
+/* 8027DB18 00279778 57 47 08 3A */ rlwinm r7, r26, 1, 0, 0x1d
+/* 8027DB1C 0027977C 57 4C F8 7E */ srwi r12, r26, 1
+/* 8027DB20 00279780 90 C9 05 A4 */ stw r6, 0x5a4(r9)
+/* 8027DB24 00279784 3B 5A 00 01 */ addi r26, r26, 1
+/* 8027DB28 00279788 80 89 01 80 */ lwz r4, 0x180(r9)
+/* 8027DB2C 0027978C 51 44 C0 0E */ rlwimi r4, r10, 0x18, 0, 7
+/* 8027DB30 00279790 90 89 01 80 */ stw r4, 0x180(r9)
+/* 8027DB34 00279794 80 89 01 C0 */ lwz r4, 0x1c0(r9)
+/* 8027DB38 00279798 51 64 C0 0E */ rlwimi r4, r11, 0x18, 0, 7
+/* 8027DB3C 0027979C 39 6A 00 03 */ addi r11, r10, 3
+/* 8027DB40 002797A0 39 4A 00 02 */ addi r10, r10, 2
+/* 8027DB44 002797A4 90 89 01 C0 */ stw r4, 0x1c0(r9)
+/* 8027DB48 002797A8 80 9B 02 00 */ lwz r4, 0x200(r27)
+/* 8027DB4C 002797AC 50 A4 C0 0E */ rlwimi r4, r5, 0x18, 0, 7
+/* 8027DB50 002797B0 38 AC 00 F6 */ addi r5, r12, 0xf6
+/* 8027DB54 002797B4 90 9B 02 00 */ stw r4, 0x200(r27)
+/* 8027DB58 002797B8 80 9B 01 50 */ lwz r4, 0x150(r27)
+/* 8027DB5C 002797BC 50 04 C0 0E */ rlwimi r4, r0, 0x18, 0, 7
+/* 8027DB60 002797C0 38 0C 00 28 */ addi r0, r12, 0x28
+/* 8027DB64 002797C4 90 9B 01 50 */ stw r4, 0x150(r27)
+/* 8027DB68 002797C8 7F 63 3A 14 */ add r27, r3, r7
+/* 8027DB6C 002797CC 91 09 01 84 */ stw r8, 0x184(r9)
+/* 8027DB70 002797D0 91 09 01 C4 */ stw r8, 0x1c4(r9)
+/* 8027DB74 002797D4 91 1B 01 50 */ stw r8, 0x150(r27)
+/* 8027DB78 002797D8 90 C9 05 A8 */ stw r6, 0x5a8(r9)
+/* 8027DB7C 002797DC 80 89 01 84 */ lwz r4, 0x184(r9)
+/* 8027DB80 002797E0 51 44 C0 0E */ rlwimi r4, r10, 0x18, 0, 7
+/* 8027DB84 002797E4 39 4A 00 02 */ addi r10, r10, 2
+/* 8027DB88 002797E8 90 89 01 84 */ stw r4, 0x184(r9)
+/* 8027DB8C 002797EC 80 89 01 C4 */ lwz r4, 0x1c4(r9)
+/* 8027DB90 002797F0 51 64 C0 0E */ rlwimi r4, r11, 0x18, 0, 7
+/* 8027DB94 002797F4 90 89 01 C4 */ stw r4, 0x1c4(r9)
+/* 8027DB98 002797F8 39 29 00 08 */ addi r9, r9, 8
+/* 8027DB9C 002797FC 80 9B 02 00 */ lwz r4, 0x200(r27)
+/* 8027DBA0 00279800 50 A4 C0 0E */ rlwimi r4, r5, 0x18, 0, 7
+/* 8027DBA4 00279804 90 9B 02 00 */ stw r4, 0x200(r27)
+/* 8027DBA8 00279808 80 9B 01 50 */ lwz r4, 0x150(r27)
+/* 8027DBAC 0027980C 50 04 C0 0E */ rlwimi r4, r0, 0x18, 0, 7
+/* 8027DBB0 00279810 90 9B 01 50 */ stw r4, 0x150(r27)
+/* 8027DBB4 00279814 42 00 FF 3C */ bdnz lbl_8027DAF0
+/* 8027DBB8 00279818 38 00 00 27 */ li r0, 0x27
+/* 8027DBBC 0027981C 38 80 00 00 */ li r4, 0
+/* 8027DBC0 00279820 50 04 C0 0E */ rlwimi r4, r0, 0x18, 0, 7
+/* 8027DBC4 00279824 38 A0 00 30 */ li r5, 0x30
+/* 8027DBC8 00279828 38 00 00 02 */ li r0, 2
+/* 8027DBCC 0027982C 90 9F 01 70 */ stw r4, 0x170(r31)
+/* 8027DBD0 00279830 7C 09 03 A6 */ mtctr r0
+lbl_8027DBD4:
+/* 8027DBD4 00279834 38 80 00 00 */ li r4, 0
+/* 8027DBD8 00279838 38 C5 00 01 */ addi r6, r5, 1
+/* 8027DBDC 0027983C 50 A4 C0 0E */ rlwimi r4, r5, 0x18, 0, 7
+/* 8027DBE0 00279840 38 00 00 00 */ li r0, 0
+/* 8027DBE4 00279844 90 83 01 08 */ stw r4, 0x108(r3)
+/* 8027DBE8 00279848 50 C0 C0 0E */ rlwimi r0, r6, 0x18, 0, 7
+/* 8027DBEC 0027984C 38 C5 00 03 */ addi r6, r5, 3
+/* 8027DBF0 00279850 38 A5 00 02 */ addi r5, r5, 2
+/* 8027DBF4 00279854 90 03 01 28 */ stw r0, 0x128(r3)
+/* 8027DBF8 00279858 38 80 00 00 */ li r4, 0
+/* 8027DBFC 0027985C 50 A4 C0 0E */ rlwimi r4, r5, 0x18, 0, 7
+/* 8027DC00 00279860 38 00 00 00 */ li r0, 0
+/* 8027DC04 00279864 90 83 01 0C */ stw r4, 0x10c(r3)
+/* 8027DC08 00279868 50 C0 C0 0E */ rlwimi r0, r6, 0x18, 0, 7
+/* 8027DC0C 0027986C 38 C5 00 03 */ addi r6, r5, 3
+/* 8027DC10 00279870 38 A5 00 02 */ addi r5, r5, 2
+/* 8027DC14 00279874 90 03 01 2C */ stw r0, 0x12c(r3)
+/* 8027DC18 00279878 38 80 00 00 */ li r4, 0
+/* 8027DC1C 0027987C 50 A4 C0 0E */ rlwimi r4, r5, 0x18, 0, 7
+/* 8027DC20 00279880 38 00 00 00 */ li r0, 0
+/* 8027DC24 00279884 90 83 01 10 */ stw r4, 0x110(r3)
+/* 8027DC28 00279888 50 C0 C0 0E */ rlwimi r0, r6, 0x18, 0, 7
+/* 8027DC2C 0027988C 38 C5 00 03 */ addi r6, r5, 3
+/* 8027DC30 00279890 38 A5 00 02 */ addi r5, r5, 2
+/* 8027DC34 00279894 90 03 01 30 */ stw r0, 0x130(r3)
+/* 8027DC38 00279898 38 80 00 00 */ li r4, 0
+/* 8027DC3C 0027989C 50 A4 C0 0E */ rlwimi r4, r5, 0x18, 0, 7
+/* 8027DC40 002798A0 38 00 00 00 */ li r0, 0
+/* 8027DC44 002798A4 90 83 01 14 */ stw r4, 0x114(r3)
+/* 8027DC48 002798A8 50 C0 C0 0E */ rlwimi r0, r6, 0x18, 0, 7
+/* 8027DC4C 002798AC 38 A5 00 02 */ addi r5, r5, 2
+/* 8027DC50 002798B0 90 03 01 34 */ stw r0, 0x134(r3)
+/* 8027DC54 002798B4 38 63 00 10 */ addi r3, r3, 0x10
+/* 8027DC58 002798B8 42 00 FF 7C */ bdnz lbl_8027DBD4
+/* 8027DC5C 002798BC 83 C2 A0 D0 */ lwz r30, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027DC60 002798C0 3C 60 10 62 */ lis r3, 0x10624DD3@ha
+/* 8027DC64 002798C4 38 80 00 20 */ li r4, 0x20
+/* 8027DC68 002798C8 38 00 00 21 */ li r0, 0x21
+/* 8027DC6C 002798CC 80 BE 01 48 */ lwz r5, 0x148(r30)
+/* 8027DC70 002798D0 50 85 C0 0E */ rlwimi r5, r4, 0x18, 0, 7
+/* 8027DC74 002798D4 39 00 00 41 */ li r8, 0x41
+/* 8027DC78 002798D8 38 E0 00 42 */ li r7, 0x42
+/* 8027DC7C 002798DC 90 BE 01 48 */ stw r5, 0x148(r30)
+/* 8027DC80 002798E0 38 C0 00 40 */ li r6, 0x40
+/* 8027DC84 002798E4 38 A0 00 43 */ li r5, 0x43
+/* 8027DC88 002798E8 C0 22 A0 D4 */ lfs f1, lbl_806426D4-_SDA2_BASE_(r2)
+/* 8027DC8C 002798EC 80 9E 01 4C */ lwz r4, 0x14c(r30)
+/* 8027DC90 002798F0 50 04 C0 0E */ rlwimi r4, r0, 0x18, 0, 7
+/* 8027DC94 002798F4 C0 02 A0 D8 */ lfs f0, lbl_806426D8-_SDA2_BASE_(r2)
+/* 8027DC98 002798F8 38 00 00 00 */ li r0, 0
+/* 8027DC9C 002798FC 90 9E 01 4C */ stw r4, 0x14c(r30)
+/* 8027DCA0 00279900 3C 80 80 00 */ lis r4, 0x800000F8@ha
+/* 8027DCA4 00279904 38 63 4D D3 */ addi r3, r3, 0x10624DD3@l
+/* 8027DCA8 00279908 81 3E 02 20 */ lwz r9, 0x220(r30)
+/* 8027DCAC 0027990C 51 09 C0 0E */ rlwimi r9, r8, 0x18, 0, 7
+/* 8027DCB0 00279910 91 3E 02 20 */ stw r9, 0x220(r30)
+/* 8027DCB4 00279914 81 1E 02 24 */ lwz r8, 0x224(r30)
+/* 8027DCB8 00279918 50 E8 C0 0E */ rlwimi r8, r7, 0x18, 0, 7
+/* 8027DCBC 0027991C 91 1E 02 24 */ stw r8, 0x224(r30)
+/* 8027DCC0 00279920 80 FE 02 28 */ lwz r7, 0x228(r30)
+/* 8027DCC4 00279924 50 C7 C0 0E */ rlwimi r7, r6, 0x18, 0, 7
+/* 8027DCC8 00279928 90 FE 02 28 */ stw r7, 0x228(r30)
+/* 8027DCCC 0027992C 80 DE 02 2C */ lwz r6, 0x22c(r30)
+/* 8027DCD0 00279930 50 A6 C0 0E */ rlwimi r6, r5, 0x18, 0, 7
+/* 8027DCD4 00279934 90 DE 02 2C */ stw r6, 0x22c(r30)
+/* 8027DCD8 00279938 80 BE 02 4C */ lwz r5, 0x24c(r30)
+/* 8027DCDC 0027993C 54 A5 06 6C */ rlwinm r5, r5, 0, 0x19, 0x16
+/* 8027DCE0 00279940 90 BE 02 4C */ stw r5, 0x24c(r30)
+/* 8027DCE4 00279944 D0 3E 05 60 */ stfs f1, 0x560(r30)
+/* 8027DCE8 00279948 D0 1E 05 5C */ stfs f0, 0x55c(r30)
+/* 8027DCEC 0027994C 90 1E 05 FC */ stw r0, 0x5fc(r30)
+/* 8027DCF0 00279950 98 1E 05 FB */ stb r0, 0x5fb(r30)
+/* 8027DCF4 00279954 80 04 00 F8 */ lwz r0, 0x800000F8@l(r4)
+/* 8027DCF8 00279958 7C 03 00 16 */ mulhwu r0, r3, r0
+/* 8027DCFC 0027995C 54 1A D9 7E */ srwi r26, r0, 5
+/* 8027DD00 00279960 48 00 5E 1D */ bl __GXFlushTextureState
+/* 8027DD04 00279964 57 40 AA FE */ srwi r0, r26, 0xb
+/* 8027DD08 00279968 3F A0 CC 01 */ lis r29, 0xCC008000@ha
+/* 8027DD0C 0027996C 3B 80 00 61 */ li r28, 0x61
+/* 8027DD10 00279970 64 00 69 00 */ oris r0, r0, 0x6900
+/* 8027DD14 00279974 9B 9D 80 00 */ stb r28, 0xCC008000@l(r29)
+/* 8027DD18 00279978 60 00 04 00 */ ori r0, r0, 0x400
+/* 8027DD1C 0027997C 90 1D 80 00 */ stw r0, -0x8000(r29)
+/* 8027DD20 00279980 48 00 5D FD */ bl __GXFlushTextureState
+/* 8027DD24 00279984 3C 60 3E 10 */ lis r3, 0x3E0F83E1@ha
+/* 8027DD28 00279988 9B 9D 80 00 */ stb r28, -0x8000(r29)
+/* 8027DD2C 0027998C 38 03 83 E1 */ addi r0, r3, 0x3E0F83E1@l
+/* 8027DD30 00279990 7C 00 D0 16 */ mulhwu r0, r0, r26
+/* 8027DD34 00279994 54 00 B2 BE */ srwi r0, r0, 0xa
+/* 8027DD38 00279998 64 00 46 00 */ oris r0, r0, 0x4600
+/* 8027DD3C 0027999C 60 00 02 00 */ ori r0, r0, 0x200
+/* 8027DD40 002799A0 90 1D 80 00 */ stw r0, -0x8000(r29)
+/* 8027DD44 002799A4 4B FF FB 65 */ bl __GXInitRevisionBits
+/* 8027DD48 002799A8 3F 80 80 43 */ lis r28, lbl_80434C10@ha
+/* 8027DD4C 002799AC 3B BE 02 58 */ addi r29, r30, 0x258
+/* 8027DD50 002799B0 3B 7E 02 D8 */ addi r27, r30, 0x2d8
+/* 8027DD54 002799B4 3B DE 03 58 */ addi r30, r30, 0x358
+/* 8027DD58 002799B8 3B 9C 4C 10 */ addi r28, r28, lbl_80434C10@l
+/* 8027DD5C 002799BC 3B 40 00 00 */ li r26, 0
+lbl_8027DD60:
+/* 8027DD60 002799C0 80 BC 00 00 */ lwz r5, 0(r28)
+/* 8027DD64 002799C4 7F A3 EB 78 */ mr r3, r29
+/* 8027DD68 002799C8 80 FC 00 20 */ lwz r7, 0x20(r28)
+/* 8027DD6C 002799CC 38 80 00 00 */ li r4, 0
+/* 8027DD70 002799D0 38 C0 00 00 */ li r6, 0
+/* 8027DD74 002799D4 39 00 00 00 */ li r8, 0
+/* 8027DD78 002799D8 48 00 4F 5D */ bl GXInitTexCacheRegion
+/* 8027DD7C 002799DC 80 BC 00 40 */ lwz r5, 0x40(r28)
+/* 8027DD80 002799E0 7F 63 DB 78 */ mr r3, r27
+/* 8027DD84 002799E4 80 FC 00 60 */ lwz r7, 0x60(r28)
+/* 8027DD88 002799E8 38 80 00 00 */ li r4, 0
+/* 8027DD8C 002799EC 38 C0 00 00 */ li r6, 0
+/* 8027DD90 002799F0 39 00 00 00 */ li r8, 0
+/* 8027DD94 002799F4 48 00 4F 41 */ bl GXInitTexCacheRegion
+/* 8027DD98 002799F8 80 BC 00 80 */ lwz r5, 0x80(r28)
+/* 8027DD9C 002799FC 7F C3 F3 78 */ mr r3, r30
+/* 8027DDA0 00279A00 80 FC 00 A0 */ lwz r7, 0xa0(r28)
+/* 8027DDA4 00279A04 38 80 00 01 */ li r4, 1
+/* 8027DDA8 00279A08 38 C0 00 00 */ li r6, 0
+/* 8027DDAC 00279A0C 39 00 00 00 */ li r8, 0
+/* 8027DDB0 00279A10 48 00 4F 25 */ bl GXInitTexCacheRegion
+/* 8027DDB4 00279A14 3B 5A 00 01 */ addi r26, r26, 1
+/* 8027DDB8 00279A18 3B BD 00 10 */ addi r29, r29, 0x10
+/* 8027DDBC 00279A1C 28 1A 00 08 */ cmplwi r26, 8
+/* 8027DDC0 00279A20 3B 7B 00 10 */ addi r27, r27, 0x10
+/* 8027DDC4 00279A24 3B DE 00 10 */ addi r30, r30, 0x10
+/* 8027DDC8 00279A28 3B 9C 00 04 */ addi r28, r28, 4
+/* 8027DDCC 00279A2C 41 80 FF 94 */ blt lbl_8027DD60
+/* 8027DDD0 00279A30 3B BF 03 D8 */ addi r29, r31, 0x3d8
+/* 8027DDD4 00279A34 3B 60 00 00 */ li r27, 0
+/* 8027DDD8 00279A38 3F 80 00 0C */ lis r28, 0xc
+lbl_8027DDDC:
+/* 8027DDDC 00279A3C 7F A3 EB 78 */ mr r3, r29
+/* 8027DDE0 00279A40 7F 84 E3 78 */ mr r4, r28
+/* 8027DDE4 00279A44 38 A0 00 10 */ li r5, 0x10
+/* 8027DDE8 00279A48 48 00 4F A1 */ bl GXInitTlutRegion
+/* 8027DDEC 00279A4C 3B 7B 00 01 */ addi r27, r27, 1
+/* 8027DDF0 00279A50 3B BD 00 10 */ addi r29, r29, 0x10
+/* 8027DDF4 00279A54 28 1B 00 10 */ cmplwi r27, 0x10
+/* 8027DDF8 00279A58 3B 9C 20 00 */ addi r28, r28, 0x2000
+/* 8027DDFC 00279A5C 41 80 FF E0 */ blt lbl_8027DDDC
+/* 8027DE00 00279A60 3B BF 03 D8 */ addi r29, r31, 0x3d8
+/* 8027DE04 00279A64 3B 60 00 00 */ li r27, 0
+/* 8027DE08 00279A68 3F 80 00 0E */ lis r28, 0xe
+lbl_8027DE0C:
+/* 8027DE0C 00279A6C 38 1B 00 10 */ addi r0, r27, 0x10
+/* 8027DE10 00279A70 7F 84 E3 78 */ mr r4, r28
+/* 8027DE14 00279A74 54 00 20 36 */ slwi r0, r0, 4
+/* 8027DE18 00279A78 38 A0 00 40 */ li r5, 0x40
+/* 8027DE1C 00279A7C 7C 7D 02 14 */ add r3, r29, r0
+/* 8027DE20 00279A80 48 00 4F 69 */ bl GXInitTlutRegion
+/* 8027DE24 00279A84 3B 7B 00 01 */ addi r27, r27, 1
+/* 8027DE28 00279A88 3F 9C 00 01 */ addis r28, r28, 1
+/* 8027DE2C 00279A8C 28 1B 00 04 */ cmplwi r27, 4
+/* 8027DE30 00279A90 3B 9C 80 00 */ addi r28, r28, -32768
+/* 8027DE34 00279A94 41 80 FF D8 */ blt lbl_8027DE0C
+/* 8027DE38 00279A98 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 8027DE3C 00279A9C 39 80 00 00 */ li r12, 0
+/* 8027DE40 00279AA0 3D 20 CC 01 */ lis r9, 0xCC008000@ha
+/* 8027DE44 00279AA4 39 40 00 08 */ li r10, 8
+/* 8027DE48 00279AA8 B1 83 00 06 */ sth r12, 6(r3)
+/* 8027DE4C 00279AAC 38 60 00 20 */ li r3, 0x20
+/* 8027DE50 00279AB0 39 00 00 10 */ li r8, 0x10
+/* 8027DE54 00279AB4 38 E0 10 06 */ li r7, 0x1006
+/* 8027DE58 00279AB8 80 1F 05 F4 */ lwz r0, 0x5f4(r31)
+/* 8027DE5C 00279ABC 38 C0 00 61 */ li r6, 0x61
+/* 8027DE60 00279AC0 3C A0 23 00 */ lis r5, 0x2300
+/* 8027DE64 00279AC4 3C 80 24 00 */ lis r4, 0x2400
+/* 8027DE68 00279AC8 54 0B 07 2E */ rlwinm r11, r0, 0, 0x1c, 0x17
+/* 8027DE6C 00279ACC 3C 00 67 00 */ lis r0, 0x6700
+/* 8027DE70 00279AD0 91 7F 05 F4 */ stw r11, 0x5f4(r31)
+/* 8027DE74 00279AD4 99 49 80 00 */ stb r10, 0xCC008000@l(r9)
+/* 8027DE78 00279AD8 98 69 80 00 */ stb r3, -0x8000(r9)
+/* 8027DE7C 00279ADC 80 7F 05 F4 */ lwz r3, 0x5f4(r31)
+/* 8027DE80 00279AE0 90 69 80 00 */ stw r3, -0x8000(r9)
+/* 8027DE84 00279AE4 38 60 00 00 */ li r3, 0
+/* 8027DE88 00279AE8 99 09 80 00 */ stb r8, -0x8000(r9)
+/* 8027DE8C 00279AEC 90 E9 80 00 */ stw r7, -0x8000(r9)
+/* 8027DE90 00279AF0 91 89 80 00 */ stw r12, -0x8000(r9)
+/* 8027DE94 00279AF4 98 C9 80 00 */ stb r6, -0x8000(r9)
+/* 8027DE98 00279AF8 90 A9 80 00 */ stw r5, -0x8000(r9)
+/* 8027DE9C 00279AFC 98 C9 80 00 */ stb r6, -0x8000(r9)
+/* 8027DEA0 00279B00 90 89 80 00 */ stw r4, -0x8000(r9)
+/* 8027DEA4 00279B04 98 C9 80 00 */ stb r6, -0x8000(r9)
+/* 8027DEA8 00279B08 90 09 80 00 */ stw r0, -0x8000(r9)
+/* 8027DEAC 00279B0C 48 00 5C 41 */ bl __GXSetIndirectMask
+/* 8027DEB0 00279B10 38 60 00 02 */ li r3, 2
+/* 8027DEB4 00279B14 48 00 51 5D */ bl __GXSetTmemConfig
+/* 8027DEB8 00279B18 48 00 00 25 */ bl __GXInitGX
+/* 8027DEBC 00279B1C 3C 60 80 51 */ lis r3, lbl_80515930@ha
+/* 8027DEC0 00279B20 39 61 00 20 */ addi r11, r1, 0x20
+/* 8027DEC4 00279B24 38 63 59 30 */ addi r3, r3, lbl_80515930@l
+/* 8027DEC8 00279B28 4B F4 92 A9 */ bl _restgpr_26
+/* 8027DECC 00279B2C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8027DED0 00279B30 7C 08 03 A6 */ mtlr r0
+/* 8027DED4 00279B34 38 21 00 20 */ addi r1, r1, 0x20
+/* 8027DED8 00279B38 4E 80 00 20 */ blr
+
+.global __GXInitGX
+__GXInitGX:
+/* 8027DEDC 00279B3C 94 21 FF 60 */ stwu r1, -0xa0(r1)
+/* 8027DEE0 00279B40 7C 08 02 A6 */ mflr r0
+/* 8027DEE4 00279B44 3D 40 43 30 */ lis r10, 0x4330
+/* 8027DEE8 00279B48 90 01 00 A4 */ stw r0, 0xa4(r1)
+/* 8027DEEC 00279B4C 93 E1 00 9C */ stw r31, 0x9c(r1)
+/* 8027DEF0 00279B50 3B E0 00 00 */ li r31, 0
+/* 8027DEF4 00279B54 93 C1 00 98 */ stw r30, 0x98(r1)
+/* 8027DEF8 00279B58 3F C0 80 43 */ lis r30, lbl_80434AA0@ha
+/* 8027DEFC 00279B5C 3B DE 4A A0 */ addi r30, r30, lbl_80434AA0@l
+/* 8027DF00 00279B60 93 A1 00 94 */ stw r29, 0x94(r1)
+/* 8027DF04 00279B64 93 81 00 90 */ stw r28, 0x90(r1)
+/* 8027DF08 00279B68 89 22 A0 DC */ lbz r9, lbl_806426DC-_SDA2_BASE_(r2)
+/* 8027DF0C 00279B6C 89 02 A0 DD */ lbz r8, lbl_806426DD-_SDA2_BASE_(r2)
+/* 8027DF10 00279B70 88 E2 A0 DE */ lbz r7, lbl_806426DE-_SDA2_BASE_(r2)
+/* 8027DF14 00279B74 88 C2 A0 DF */ lbz r6, lbl_806426DF-_SDA2_BASE_(r2)
+/* 8027DF18 00279B78 88 A2 A0 E0 */ lbz r5, lbl_806426E0-_SDA2_BASE_(r2)
+/* 8027DF1C 00279B7C 88 82 A0 E1 */ lbz r4, lbl_806426E1-_SDA2_BASE_(r2)
+/* 8027DF20 00279B80 88 62 A0 E2 */ lbz r3, lbl_806426E2-_SDA2_BASE_(r2)
+/* 8027DF24 00279B84 88 02 A0 E3 */ lbz r0, lbl_806426E3-_SDA2_BASE_(r2)
+/* 8027DF28 00279B88 91 41 00 78 */ stw r10, 0x78(r1)
+/* 8027DF2C 00279B8C 91 41 00 80 */ stw r10, 0x80(r1)
+/* 8027DF30 00279B90 99 21 00 24 */ stb r9, 0x24(r1)
+/* 8027DF34 00279B94 99 01 00 25 */ stb r8, 0x25(r1)
+/* 8027DF38 00279B98 98 E1 00 26 */ stb r7, 0x26(r1)
+/* 8027DF3C 00279B9C 98 C1 00 27 */ stb r6, 0x27(r1)
+/* 8027DF40 00279BA0 98 A1 00 20 */ stb r5, 0x20(r1)
+/* 8027DF44 00279BA4 98 81 00 21 */ stb r4, 0x21(r1)
+/* 8027DF48 00279BA8 98 61 00 22 */ stb r3, 0x22(r1)
+/* 8027DF4C 00279BAC 98 01 00 23 */ stb r0, 0x23(r1)
+/* 8027DF50 00279BB0 4B FF BA 85 */ bl VIGetTvFormat
+/* 8027DF54 00279BB4 2C 03 00 02 */ cmpwi r3, 2
+/* 8027DF58 00279BB8 41 82 00 48 */ beq lbl_8027DFA0
+/* 8027DF5C 00279BBC 40 80 00 14 */ bge lbl_8027DF70
+/* 8027DF60 00279BC0 2C 03 00 00 */ cmpwi r3, 0
+/* 8027DF64 00279BC4 41 82 00 18 */ beq lbl_8027DF7C
+/* 8027DF68 00279BC8 40 80 00 20 */ bge lbl_8027DF88
+/* 8027DF6C 00279BCC 48 00 00 40 */ b lbl_8027DFAC
+lbl_8027DF70:
+/* 8027DF70 00279BD0 2C 03 00 05 */ cmpwi r3, 5
+/* 8027DF74 00279BD4 41 82 00 20 */ beq lbl_8027DF94
+/* 8027DF78 00279BD8 48 00 00 34 */ b lbl_8027DFAC
+lbl_8027DF7C:
+/* 8027DF7C 00279BDC 3F A0 80 43 */ lis r29, lbl_80435078@ha
+/* 8027DF80 00279BE0 3B BD 50 78 */ addi r29, r29, lbl_80435078@l
+/* 8027DF84 00279BE4 48 00 00 30 */ b lbl_8027DFB4
+lbl_8027DF88:
+/* 8027DF88 00279BE8 3F A0 80 43 */ lis r29, lbl_80435474@ha
+/* 8027DF8C 00279BEC 3B BD 54 74 */ addi r29, r29, lbl_80435474@l
+/* 8027DF90 00279BF0 48 00 00 24 */ b lbl_8027DFB4
+lbl_8027DF94:
+/* 8027DF94 00279BF4 3F A0 80 43 */ lis r29, lbl_80435618@ha
+/* 8027DF98 00279BF8 3B BD 56 18 */ addi r29, r29, lbl_80435618@l
+/* 8027DF9C 00279BFC 48 00 00 18 */ b lbl_8027DFB4
+lbl_8027DFA0:
+/* 8027DFA0 00279C00 3F A0 80 43 */ lis r29, lbl_804352D0@ha
+/* 8027DFA4 00279C04 3B BD 52 D0 */ addi r29, r29, lbl_804352D0@l
+/* 8027DFA8 00279C08 48 00 00 0C */ b lbl_8027DFB4
+lbl_8027DFAC:
+/* 8027DFAC 00279C0C 3F A0 80 43 */ lis r29, lbl_80435078@ha
+/* 8027DFB0 00279C10 3B BD 50 78 */ addi r29, r29, lbl_80435078@l
+lbl_8027DFB4:
+/* 8027DFB4 00279C14 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8027DFB8 00279C18 3C 80 01 00 */ lis r4, 0x00FFFFFF@ha
+/* 8027DFBC 00279C1C 38 61 00 1C */ addi r3, r1, 0x1c
+/* 8027DFC0 00279C20 90 01 00 1C */ stw r0, 0x1c(r1)
+/* 8027DFC4 00279C24 38 84 FF FF */ addi r4, r4, 0x00FFFFFF@l
+/* 8027DFC8 00279C28 48 00 3A 35 */ bl GXSetCopyClear
+/* 8027DFCC 00279C2C 38 60 00 00 */ li r3, 0
+/* 8027DFD0 00279C30 38 80 00 01 */ li r4, 1
+/* 8027DFD4 00279C34 38 A0 00 04 */ li r5, 4
+/* 8027DFD8 00279C38 38 C0 00 3C */ li r6, 0x3c
+/* 8027DFDC 00279C3C 38 E0 00 00 */ li r7, 0
+/* 8027DFE0 00279C40 39 00 00 7D */ li r8, 0x7d
+/* 8027DFE4 00279C44 48 00 23 E9 */ bl GXSetTexCoordGen2
+/* 8027DFE8 00279C48 38 60 00 01 */ li r3, 1
+/* 8027DFEC 00279C4C 38 80 00 01 */ li r4, 1
+/* 8027DFF0 00279C50 38 A0 00 05 */ li r5, 5
+/* 8027DFF4 00279C54 38 C0 00 3C */ li r6, 0x3c
+/* 8027DFF8 00279C58 38 E0 00 00 */ li r7, 0
+/* 8027DFFC 00279C5C 39 00 00 7D */ li r8, 0x7d
+/* 8027E000 00279C60 48 00 23 CD */ bl GXSetTexCoordGen2
+/* 8027E004 00279C64 38 60 00 02 */ li r3, 2
+/* 8027E008 00279C68 38 80 00 01 */ li r4, 1
+/* 8027E00C 00279C6C 38 A0 00 06 */ li r5, 6
+/* 8027E010 00279C70 38 C0 00 3C */ li r6, 0x3c
+/* 8027E014 00279C74 38 E0 00 00 */ li r7, 0
+/* 8027E018 00279C78 39 00 00 7D */ li r8, 0x7d
+/* 8027E01C 00279C7C 48 00 23 B1 */ bl GXSetTexCoordGen2
+/* 8027E020 00279C80 38 60 00 03 */ li r3, 3
+/* 8027E024 00279C84 38 80 00 01 */ li r4, 1
+/* 8027E028 00279C88 38 A0 00 07 */ li r5, 7
+/* 8027E02C 00279C8C 38 C0 00 3C */ li r6, 0x3c
+/* 8027E030 00279C90 38 E0 00 00 */ li r7, 0
+/* 8027E034 00279C94 39 00 00 7D */ li r8, 0x7d
+/* 8027E038 00279C98 48 00 23 95 */ bl GXSetTexCoordGen2
+/* 8027E03C 00279C9C 38 60 00 04 */ li r3, 4
+/* 8027E040 00279CA0 38 80 00 01 */ li r4, 1
+/* 8027E044 00279CA4 38 A0 00 08 */ li r5, 8
+/* 8027E048 00279CA8 38 C0 00 3C */ li r6, 0x3c
+/* 8027E04C 00279CAC 38 E0 00 00 */ li r7, 0
+/* 8027E050 00279CB0 39 00 00 7D */ li r8, 0x7d
+/* 8027E054 00279CB4 48 00 23 79 */ bl GXSetTexCoordGen2
+/* 8027E058 00279CB8 38 60 00 05 */ li r3, 5
+/* 8027E05C 00279CBC 38 80 00 01 */ li r4, 1
+/* 8027E060 00279CC0 38 A0 00 09 */ li r5, 9
+/* 8027E064 00279CC4 38 C0 00 3C */ li r6, 0x3c
+/* 8027E068 00279CC8 38 E0 00 00 */ li r7, 0
+/* 8027E06C 00279CCC 39 00 00 7D */ li r8, 0x7d
+/* 8027E070 00279CD0 48 00 23 5D */ bl GXSetTexCoordGen2
+/* 8027E074 00279CD4 38 60 00 06 */ li r3, 6
+/* 8027E078 00279CD8 38 80 00 01 */ li r4, 1
+/* 8027E07C 00279CDC 38 A0 00 0A */ li r5, 0xa
+/* 8027E080 00279CE0 38 C0 00 3C */ li r6, 0x3c
+/* 8027E084 00279CE4 38 E0 00 00 */ li r7, 0
+/* 8027E088 00279CE8 39 00 00 7D */ li r8, 0x7d
+/* 8027E08C 00279CEC 48 00 23 41 */ bl GXSetTexCoordGen2
+/* 8027E090 00279CF0 38 60 00 07 */ li r3, 7
+/* 8027E094 00279CF4 38 80 00 01 */ li r4, 1
+/* 8027E098 00279CF8 38 A0 00 0B */ li r5, 0xb
+/* 8027E09C 00279CFC 38 C0 00 3C */ li r6, 0x3c
+/* 8027E0A0 00279D00 38 E0 00 00 */ li r7, 0
+/* 8027E0A4 00279D04 39 00 00 7D */ li r8, 0x7d
+/* 8027E0A8 00279D08 48 00 23 25 */ bl GXSetTexCoordGen2
+/* 8027E0AC 00279D0C 38 60 00 01 */ li r3, 1
+/* 8027E0B0 00279D10 48 00 25 45 */ bl GXSetNumTexGens
+/* 8027E0B4 00279D14 48 00 1B D1 */ bl GXClearVtxDesc
+/* 8027E0B8 00279D18 48 00 23 05 */ bl GXInvalidateVtxCache
+/* 8027E0BC 00279D1C 3B 80 00 09 */ li r28, 9
+lbl_8027E0C0:
+/* 8027E0C0 00279D20 80 82 A0 D0 */ lwz r4, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8027E0C4 00279D24 7F 83 E3 78 */ mr r3, r28
+/* 8027E0C8 00279D28 38 A0 00 00 */ li r5, 0
+/* 8027E0CC 00279D2C 48 00 22 B1 */ bl GXSetArray
+/* 8027E0D0 00279D30 3B 9C 00 01 */ addi r28, r28, 1
+/* 8027E0D4 00279D34 28 1C 00 18 */ cmplwi r28, 0x18
+/* 8027E0D8 00279D38 40 81 FF E8 */ ble lbl_8027E0C0
+/* 8027E0DC 00279D3C 3B 80 00 00 */ li r28, 0
+lbl_8027E0E0:
+/* 8027E0E0 00279D40 7F 83 E3 78 */ mr r3, r28
+/* 8027E0E4 00279D44 38 9E 00 80 */ addi r4, r30, 0x80
+/* 8027E0E8 00279D48 48 00 1D 71 */ bl GXSetVtxAttrFmtv
+/* 8027E0EC 00279D4C 3B 9C 00 01 */ addi r28, r28, 1
+/* 8027E0F0 00279D50 28 1C 00 08 */ cmplwi r28, 8
+/* 8027E0F4 00279D54 41 80 FF EC */ blt lbl_8027E0E0
+/* 8027E0F8 00279D58 38 60 00 06 */ li r3, 6
+/* 8027E0FC 00279D5C 38 80 00 00 */ li r4, 0
+/* 8027E100 00279D60 48 00 32 6D */ bl GXSetLineWidth
+/* 8027E104 00279D64 38 60 00 06 */ li r3, 6
+/* 8027E108 00279D68 38 80 00 00 */ li r4, 0
+/* 8027E10C 00279D6C 48 00 32 95 */ bl GXSetPointSize
+/* 8027E110 00279D70 38 60 00 00 */ li r3, 0
+/* 8027E114 00279D74 38 80 00 00 */ li r4, 0
+/* 8027E118 00279D78 38 A0 00 00 */ li r5, 0
+/* 8027E11C 00279D7C 48 00 32 B9 */ bl GXEnableTexOffsets
+/* 8027E120 00279D80 38 60 00 01 */ li r3, 1
+/* 8027E124 00279D84 38 80 00 00 */ li r4, 0
+/* 8027E128 00279D88 38 A0 00 00 */ li r5, 0
+/* 8027E12C 00279D8C 48 00 32 A9 */ bl GXEnableTexOffsets
+/* 8027E130 00279D90 38 60 00 02 */ li r3, 2
+/* 8027E134 00279D94 38 80 00 00 */ li r4, 0
+/* 8027E138 00279D98 38 A0 00 00 */ li r5, 0
+/* 8027E13C 00279D9C 48 00 32 99 */ bl GXEnableTexOffsets
+/* 8027E140 00279DA0 38 60 00 03 */ li r3, 3
+/* 8027E144 00279DA4 38 80 00 00 */ li r4, 0
+/* 8027E148 00279DA8 38 A0 00 00 */ li r5, 0
+/* 8027E14C 00279DAC 48 00 32 89 */ bl GXEnableTexOffsets
+/* 8027E150 00279DB0 38 60 00 04 */ li r3, 4
+/* 8027E154 00279DB4 38 80 00 00 */ li r4, 0
+/* 8027E158 00279DB8 38 A0 00 00 */ li r5, 0
+/* 8027E15C 00279DBC 48 00 32 79 */ bl GXEnableTexOffsets
+/* 8027E160 00279DC0 38 60 00 05 */ li r3, 5
+/* 8027E164 00279DC4 38 80 00 00 */ li r4, 0
+/* 8027E168 00279DC8 38 A0 00 00 */ li r5, 0
+/* 8027E16C 00279DCC 48 00 32 69 */ bl GXEnableTexOffsets
+/* 8027E170 00279DD0 38 60 00 06 */ li r3, 6
+/* 8027E174 00279DD4 38 80 00 00 */ li r4, 0
+/* 8027E178 00279DD8 38 A0 00 00 */ li r5, 0
+/* 8027E17C 00279DDC 48 00 32 59 */ bl GXEnableTexOffsets
+/* 8027E180 00279DE0 38 60 00 07 */ li r3, 7
+/* 8027E184 00279DE4 38 80 00 00 */ li r4, 0
+/* 8027E188 00279DE8 38 A0 00 00 */ li r5, 0
+/* 8027E18C 00279DEC 48 00 32 49 */ bl GXEnableTexOffsets
+/* 8027E190 00279DF0 C0 02 A0 D8 */ lfs f0, lbl_806426D8-_SDA2_BASE_(r2)
+/* 8027E194 00279DF4 38 61 00 48 */ addi r3, r1, 0x48
+/* 8027E198 00279DF8 C0 22 A0 E4 */ lfs f1, lbl_806426E4-_SDA2_BASE_(r2)
+/* 8027E19C 00279DFC 38 80 00 00 */ li r4, 0
+/* 8027E1A0 00279E00 D0 01 00 4C */ stfs f0, 0x4c(r1)
+/* 8027E1A4 00279E04 D0 21 00 48 */ stfs f1, 0x48(r1)
+/* 8027E1A8 00279E08 D0 01 00 50 */ stfs f0, 0x50(r1)
+/* 8027E1AC 00279E0C D0 01 00 54 */ stfs f0, 0x54(r1)
+/* 8027E1B0 00279E10 D0 01 00 58 */ stfs f0, 0x58(r1)
+/* 8027E1B4 00279E14 D0 21 00 5C */ stfs f1, 0x5c(r1)
+/* 8027E1B8 00279E18 D0 01 00 60 */ stfs f0, 0x60(r1)
+/* 8027E1BC 00279E1C D0 01 00 64 */ stfs f0, 0x64(r1)
+/* 8027E1C0 00279E20 D0 01 00 68 */ stfs f0, 0x68(r1)
+/* 8027E1C4 00279E24 D0 01 00 6C */ stfs f0, 0x6c(r1)
+/* 8027E1C8 00279E28 D0 21 00 70 */ stfs f1, 0x70(r1)
+/* 8027E1CC 00279E2C D0 01 00 74 */ stfs f0, 0x74(r1)
+/* 8027E1D0 00279E30 48 00 88 B9 */ bl GXLoadPosMtxImm
+/* 8027E1D4 00279E34 38 61 00 48 */ addi r3, r1, 0x48
+/* 8027E1D8 00279E38 38 80 00 00 */ li r4, 0
+/* 8027E1DC 00279E3C 48 00 88 FD */ bl GXLoadNrmMtxImm
+/* 8027E1E0 00279E40 38 60 00 00 */ li r3, 0
+/* 8027E1E4 00279E44 48 00 89 4D */ bl GXSetCurrentMtx
+/* 8027E1E8 00279E48 38 61 00 48 */ addi r3, r1, 0x48
+/* 8027E1EC 00279E4C 38 80 00 3C */ li r4, 0x3c
+/* 8027E1F0 00279E50 38 A0 00 00 */ li r5, 0
+/* 8027E1F4 00279E54 48 00 89 5D */ bl GXLoadTexMtxImm
+/* 8027E1F8 00279E58 38 61 00 48 */ addi r3, r1, 0x48
+/* 8027E1FC 00279E5C 38 80 00 7D */ li r4, 0x7d
+/* 8027E200 00279E60 38 A0 00 00 */ li r5, 0
+/* 8027E204 00279E64 48 00 89 4D */ bl GXLoadTexMtxImm
+/* 8027E208 00279E68 A0 7D 00 04 */ lhz r3, 4(r29)
+/* 8027E20C 00279E6C A0 1D 00 08 */ lhz r0, 8(r29)
+/* 8027E210 00279E70 90 61 00 7C */ stw r3, 0x7c(r1)
+/* 8027E214 00279E74 C0 22 A0 D8 */ lfs f1, lbl_806426D8-_SDA2_BASE_(r2)
+/* 8027E218 00279E78 90 01 00 84 */ stw r0, 0x84(r1)
+/* 8027E21C 00279E7C C8 82 A0 F0 */ lfd f4, lbl_806426F0-_SDA2_BASE_(r2)
+/* 8027E220 00279E80 FC 40 08 90 */ fmr f2, f1
+/* 8027E224 00279E84 C8 61 00 78 */ lfd f3, 0x78(r1)
+/* 8027E228 00279E88 FC A0 08 90 */ fmr f5, f1
+/* 8027E22C 00279E8C C8 01 00 80 */ lfd f0, 0x80(r1)
+/* 8027E230 00279E90 EC 63 20 28 */ fsubs f3, f3, f4
+/* 8027E234 00279E94 C0 C2 A0 E4 */ lfs f6, lbl_806426E4-_SDA2_BASE_(r2)
+/* 8027E238 00279E98 EC 80 20 28 */ fsubs f4, f0, f4
+/* 8027E23C 00279E9C 48 00 8A 95 */ bl GXSetViewport
+/* 8027E240 00279EA0 38 7E 01 50 */ addi r3, r30, 0x150
+/* 8027E244 00279EA4 48 00 87 F9 */ bl GXSetProjectionv
+/* 8027E248 00279EA8 38 60 00 00 */ li r3, 0
+/* 8027E24C 00279EAC 48 00 31 ED */ bl GXSetCoPlanar
+/* 8027E250 00279EB0 38 60 00 02 */ li r3, 2
+/* 8027E254 00279EB4 48 00 31 BD */ bl GXSetCullMode
+/* 8027E258 00279EB8 38 60 00 00 */ li r3, 0
+/* 8027E25C 00279EBC 48 00 8B 45 */ bl GXSetClipMode
+/* 8027E260 00279EC0 A0 BD 00 04 */ lhz r5, 4(r29)
+/* 8027E264 00279EC4 38 60 00 00 */ li r3, 0
+/* 8027E268 00279EC8 A0 DD 00 06 */ lhz r6, 6(r29)
+/* 8027E26C 00279ECC 38 80 00 00 */ li r4, 0
+/* 8027E270 00279ED0 48 00 8A 8D */ bl GXSetScissor
+/* 8027E274 00279ED4 38 60 00 00 */ li r3, 0
+/* 8027E278 00279ED8 38 80 00 00 */ li r4, 0
+/* 8027E27C 00279EDC 48 00 8A E9 */ bl GXSetScissorBoxOffset
+/* 8027E280 00279EE0 38 60 00 00 */ li r3, 0
+/* 8027E284 00279EE4 48 00 42 C5 */ bl GXSetNumChans
+/* 8027E288 00279EE8 38 60 00 04 */ li r3, 4
+/* 8027E28C 00279EEC 38 80 00 00 */ li r4, 0
+/* 8027E290 00279EF0 38 A0 00 00 */ li r5, 0
+/* 8027E294 00279EF4 38 C0 00 01 */ li r6, 1
+/* 8027E298 00279EF8 38 E0 00 00 */ li r7, 0
+/* 8027E29C 00279EFC 39 00 00 00 */ li r8, 0
+/* 8027E2A0 00279F00 39 20 00 02 */ li r9, 2
+/* 8027E2A4 00279F04 48 00 42 C9 */ bl GXSetChanCtrl
+/* 8027E2A8 00279F08 93 E1 00 18 */ stw r31, 0x18(r1)
+/* 8027E2AC 00279F0C 38 81 00 18 */ addi r4, r1, 0x18
+/* 8027E2B0 00279F10 38 60 00 04 */ li r3, 4
+/* 8027E2B4 00279F14 48 00 40 E5 */ bl GXSetChanAmbColor
+/* 8027E2B8 00279F18 80 01 00 20 */ lwz r0, 0x20(r1)
+/* 8027E2BC 00279F1C 38 81 00 14 */ addi r4, r1, 0x14
+/* 8027E2C0 00279F20 38 60 00 04 */ li r3, 4
+/* 8027E2C4 00279F24 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8027E2C8 00279F28 48 00 41 A9 */ bl GXSetChanMatColor
+/* 8027E2CC 00279F2C 38 60 00 05 */ li r3, 5
+/* 8027E2D0 00279F30 38 80 00 00 */ li r4, 0
+/* 8027E2D4 00279F34 38 A0 00 00 */ li r5, 0
+/* 8027E2D8 00279F38 38 C0 00 01 */ li r6, 1
+/* 8027E2DC 00279F3C 38 E0 00 00 */ li r7, 0
+/* 8027E2E0 00279F40 39 00 00 00 */ li r8, 0
+/* 8027E2E4 00279F44 39 20 00 02 */ li r9, 2
+/* 8027E2E8 00279F48 48 00 42 85 */ bl GXSetChanCtrl
+/* 8027E2EC 00279F4C 93 E1 00 10 */ stw r31, 0x10(r1)
+/* 8027E2F0 00279F50 38 81 00 10 */ addi r4, r1, 0x10
+/* 8027E2F4 00279F54 38 60 00 05 */ li r3, 5
+/* 8027E2F8 00279F58 48 00 40 A1 */ bl GXSetChanAmbColor
+/* 8027E2FC 00279F5C 80 01 00 20 */ lwz r0, 0x20(r1)
+/* 8027E300 00279F60 38 81 00 0C */ addi r4, r1, 0xc
+/* 8027E304 00279F64 38 60 00 05 */ li r3, 5
+/* 8027E308 00279F68 90 01 00 0C */ stw r0, 0xc(r1)
+/* 8027E30C 00279F6C 48 00 41 65 */ bl GXSetChanMatColor
+/* 8027E310 00279F70 48 00 4A 99 */ bl GXInvalidateTexAll
+/* 8027E314 00279F74 3C 60 80 28 */ lis r3, __GXDefaultTexRegionCallback@ha
+/* 8027E318 00279F78 38 63 D6 24 */ addi r3, r3, __GXDefaultTexRegionCallback@l
+/* 8027E31C 00279F7C 48 00 4A D5 */ bl GXSetTexRegionCallback
+/* 8027E320 00279F80 3C 60 80 28 */ lis r3, __GXDefaultTlutRegionCallback@ha
+/* 8027E324 00279F84 38 63 D7 18 */ addi r3, r3, __GXDefaultTlutRegionCallback@l
+/* 8027E328 00279F88 48 00 4A DD */ bl GXSetTlutRegionCallback
+/* 8027E32C 00279F8C 38 61 00 28 */ addi r3, r1, 0x28
+/* 8027E330 00279F90 38 9E 00 60 */ addi r4, r30, 0x60
+/* 8027E334 00279F94 38 A0 00 04 */ li r5, 4
+/* 8027E338 00279F98 38 C0 00 04 */ li r6, 4
+/* 8027E33C 00279F9C 38 E0 00 03 */ li r7, 3
+/* 8027E340 00279FA0 39 00 00 00 */ li r8, 0
+/* 8027E344 00279FA4 39 20 00 00 */ li r9, 0
+/* 8027E348 00279FA8 39 40 00 00 */ li r10, 0
+/* 8027E34C 00279FAC 48 00 43 85 */ bl GXInitTexObj
+/* 8027E350 00279FB0 38 61 00 28 */ addi r3, r1, 0x28
+/* 8027E354 00279FB4 38 80 00 00 */ li r4, 0
+/* 8027E358 00279FB8 48 00 48 6D */ bl GXLoadTexObj
+/* 8027E35C 00279FBC 38 61 00 28 */ addi r3, r1, 0x28
+/* 8027E360 00279FC0 38 80 00 01 */ li r4, 1
+/* 8027E364 00279FC4 48 00 48 61 */ bl GXLoadTexObj
+/* 8027E368 00279FC8 38 61 00 28 */ addi r3, r1, 0x28
+/* 8027E36C 00279FCC 38 80 00 02 */ li r4, 2
+/* 8027E370 00279FD0 48 00 48 55 */ bl GXLoadTexObj
+/* 8027E374 00279FD4 38 61 00 28 */ addi r3, r1, 0x28
+/* 8027E378 00279FD8 38 80 00 03 */ li r4, 3
+/* 8027E37C 00279FDC 48 00 48 49 */ bl GXLoadTexObj
+/* 8027E380 00279FE0 38 61 00 28 */ addi r3, r1, 0x28
+/* 8027E384 00279FE4 38 80 00 04 */ li r4, 4
+/* 8027E388 00279FE8 48 00 48 3D */ bl GXLoadTexObj
+/* 8027E38C 00279FEC 38 61 00 28 */ addi r3, r1, 0x28
+/* 8027E390 00279FF0 38 80 00 05 */ li r4, 5
+/* 8027E394 00279FF4 48 00 48 31 */ bl GXLoadTexObj
+/* 8027E398 00279FF8 38 61 00 28 */ addi r3, r1, 0x28
+/* 8027E39C 00279FFC 38 80 00 06 */ li r4, 6
+/* 8027E3A0 0027A000 48 00 48 25 */ bl GXLoadTexObj
+/* 8027E3A4 0027A004 38 61 00 28 */ addi r3, r1, 0x28
+/* 8027E3A8 0027A008 38 80 00 07 */ li r4, 7
+/* 8027E3AC 0027A00C 48 00 48 19 */ bl GXLoadTexObj
+/* 8027E3B0 0027A010 38 60 00 00 */ li r3, 0
+/* 8027E3B4 0027A014 38 80 00 00 */ li r4, 0
+/* 8027E3B8 0027A018 38 A0 00 00 */ li r5, 0
+/* 8027E3BC 0027A01C 38 C0 00 04 */ li r6, 4
+/* 8027E3C0 0027A020 48 00 5C 81 */ bl GXSetTevOrder
+/* 8027E3C4 0027A024 38 60 00 01 */ li r3, 1
+/* 8027E3C8 0027A028 38 80 00 01 */ li r4, 1
+/* 8027E3CC 0027A02C 38 A0 00 01 */ li r5, 1
+/* 8027E3D0 0027A030 38 C0 00 04 */ li r6, 4
+/* 8027E3D4 0027A034 48 00 5C 6D */ bl GXSetTevOrder
+/* 8027E3D8 0027A038 38 60 00 02 */ li r3, 2
+/* 8027E3DC 0027A03C 38 80 00 02 */ li r4, 2
+/* 8027E3E0 0027A040 38 A0 00 02 */ li r5, 2
+/* 8027E3E4 0027A044 38 C0 00 04 */ li r6, 4
+/* 8027E3E8 0027A048 48 00 5C 59 */ bl GXSetTevOrder
+/* 8027E3EC 0027A04C 38 60 00 03 */ li r3, 3
+/* 8027E3F0 0027A050 38 80 00 03 */ li r4, 3
+/* 8027E3F4 0027A054 38 A0 00 03 */ li r5, 3
+/* 8027E3F8 0027A058 38 C0 00 04 */ li r6, 4
+/* 8027E3FC 0027A05C 48 00 5C 45 */ bl GXSetTevOrder
+/* 8027E400 0027A060 38 60 00 04 */ li r3, 4
+/* 8027E404 0027A064 38 80 00 04 */ li r4, 4
+/* 8027E408 0027A068 38 A0 00 04 */ li r5, 4
+/* 8027E40C 0027A06C 38 C0 00 04 */ li r6, 4
+/* 8027E410 0027A070 48 00 5C 31 */ bl GXSetTevOrder
+/* 8027E414 0027A074 38 60 00 05 */ li r3, 5
+/* 8027E418 0027A078 38 80 00 05 */ li r4, 5
+/* 8027E41C 0027A07C 38 A0 00 05 */ li r5, 5
+/* 8027E420 0027A080 38 C0 00 04 */ li r6, 4
+/* 8027E424 0027A084 48 00 5C 1D */ bl GXSetTevOrder
+/* 8027E428 0027A088 38 60 00 06 */ li r3, 6
+/* 8027E42C 0027A08C 38 80 00 06 */ li r4, 6
+/* 8027E430 0027A090 38 A0 00 06 */ li r5, 6
+/* 8027E434 0027A094 38 C0 00 04 */ li r6, 4
+/* 8027E438 0027A098 48 00 5C 09 */ bl GXSetTevOrder
+/* 8027E43C 0027A09C 38 60 00 07 */ li r3, 7
+/* 8027E440 0027A0A0 38 80 00 07 */ li r4, 7
+/* 8027E444 0027A0A4 38 A0 00 07 */ li r5, 7
+/* 8027E448 0027A0A8 38 C0 00 04 */ li r6, 4
+/* 8027E44C 0027A0AC 48 00 5B F5 */ bl GXSetTevOrder
+/* 8027E450 0027A0B0 38 60 00 08 */ li r3, 8
+/* 8027E454 0027A0B4 38 80 00 FF */ li r4, 0xff
+/* 8027E458 0027A0B8 38 A0 00 FF */ li r5, 0xff
+/* 8027E45C 0027A0BC 38 C0 00 FF */ li r6, 0xff
+/* 8027E460 0027A0C0 48 00 5B E1 */ bl GXSetTevOrder
+/* 8027E464 0027A0C4 38 60 00 09 */ li r3, 9
+/* 8027E468 0027A0C8 38 80 00 FF */ li r4, 0xff
+/* 8027E46C 0027A0CC 38 A0 00 FF */ li r5, 0xff
+/* 8027E470 0027A0D0 38 C0 00 FF */ li r6, 0xff
+/* 8027E474 0027A0D4 48 00 5B CD */ bl GXSetTevOrder
+/* 8027E478 0027A0D8 38 60 00 0A */ li r3, 0xa
+/* 8027E47C 0027A0DC 38 80 00 FF */ li r4, 0xff
+/* 8027E480 0027A0E0 38 A0 00 FF */ li r5, 0xff
+/* 8027E484 0027A0E4 38 C0 00 FF */ li r6, 0xff
+/* 8027E488 0027A0E8 48 00 5B B9 */ bl GXSetTevOrder
+/* 8027E48C 0027A0EC 38 60 00 0B */ li r3, 0xb
+/* 8027E490 0027A0F0 38 80 00 FF */ li r4, 0xff
+/* 8027E494 0027A0F4 38 A0 00 FF */ li r5, 0xff
+/* 8027E498 0027A0F8 38 C0 00 FF */ li r6, 0xff
+/* 8027E49C 0027A0FC 48 00 5B A5 */ bl GXSetTevOrder
+/* 8027E4A0 0027A100 38 60 00 0C */ li r3, 0xc
+/* 8027E4A4 0027A104 38 80 00 FF */ li r4, 0xff
+/* 8027E4A8 0027A108 38 A0 00 FF */ li r5, 0xff
+/* 8027E4AC 0027A10C 38 C0 00 FF */ li r6, 0xff
+/* 8027E4B0 0027A110 48 00 5B 91 */ bl GXSetTevOrder
+/* 8027E4B4 0027A114 38 60 00 0D */ li r3, 0xd
+/* 8027E4B8 0027A118 38 80 00 FF */ li r4, 0xff
+/* 8027E4BC 0027A11C 38 A0 00 FF */ li r5, 0xff
+/* 8027E4C0 0027A120 38 C0 00 FF */ li r6, 0xff
+/* 8027E4C4 0027A124 48 00 5B 7D */ bl GXSetTevOrder
+/* 8027E4C8 0027A128 38 60 00 0E */ li r3, 0xe
+/* 8027E4CC 0027A12C 38 80 00 FF */ li r4, 0xff
+/* 8027E4D0 0027A130 38 A0 00 FF */ li r5, 0xff
+/* 8027E4D4 0027A134 38 C0 00 FF */ li r6, 0xff
+/* 8027E4D8 0027A138 48 00 5B 69 */ bl GXSetTevOrder
+/* 8027E4DC 0027A13C 38 60 00 0F */ li r3, 0xf
+/* 8027E4E0 0027A140 38 80 00 FF */ li r4, 0xff
+/* 8027E4E4 0027A144 38 A0 00 FF */ li r5, 0xff
+/* 8027E4E8 0027A148 38 C0 00 FF */ li r6, 0xff
+/* 8027E4EC 0027A14C 48 00 5B 55 */ bl GXSetTevOrder
+/* 8027E4F0 0027A150 38 60 00 01 */ li r3, 1
+/* 8027E4F4 0027A154 48 00 5C A9 */ bl GXSetNumTevStages
+/* 8027E4F8 0027A158 38 60 00 00 */ li r3, 0
+/* 8027E4FC 0027A15C 38 80 00 03 */ li r4, 3
+/* 8027E500 0027A160 48 00 56 41 */ bl GXSetTevOp
+/* 8027E504 0027A164 38 60 00 07 */ li r3, 7
+/* 8027E508 0027A168 38 80 00 00 */ li r4, 0
+/* 8027E50C 0027A16C 38 A0 00 00 */ li r5, 0
+/* 8027E510 0027A170 38 C0 00 07 */ li r6, 7
+/* 8027E514 0027A174 38 E0 00 00 */ li r7, 0
+/* 8027E518 0027A178 48 00 5A 65 */ bl GXSetAlphaCompare
+/* 8027E51C 0027A17C 38 60 00 00 */ li r3, 0
+/* 8027E520 0027A180 38 80 00 11 */ li r4, 0x11
+/* 8027E524 0027A184 38 A0 00 00 */ li r5, 0
+/* 8027E528 0027A188 48 00 5A 8D */ bl GXSetZTexture
+/* 8027E52C 0027A18C 3B 80 00 00 */ li r28, 0
+lbl_8027E530:
+/* 8027E530 0027A190 7F 83 E3 78 */ mr r3, r28
+/* 8027E534 0027A194 38 80 00 06 */ li r4, 6
+/* 8027E538 0027A198 48 00 58 ED */ bl GXSetTevKColorSel
+/* 8027E53C 0027A19C 7F 83 E3 78 */ mr r3, r28
+/* 8027E540 0027A1A0 38 80 00 00 */ li r4, 0
+/* 8027E544 0027A1A4 48 00 59 31 */ bl GXSetTevKAlphaSel
+/* 8027E548 0027A1A8 7F 83 E3 78 */ mr r3, r28
+/* 8027E54C 0027A1AC 38 80 00 00 */ li r4, 0
+/* 8027E550 0027A1B0 38 A0 00 00 */ li r5, 0
+/* 8027E554 0027A1B4 48 00 59 71 */ bl GXSetTevSwapMode
+/* 8027E558 0027A1B8 3B 9C 00 01 */ addi r28, r28, 1
+/* 8027E55C 0027A1BC 28 1C 00 10 */ cmplwi r28, 0x10
+/* 8027E560 0027A1C0 41 80 FF D0 */ blt lbl_8027E530
+/* 8027E564 0027A1C4 38 60 00 00 */ li r3, 0
+/* 8027E568 0027A1C8 38 80 00 00 */ li r4, 0
+/* 8027E56C 0027A1CC 38 A0 00 01 */ li r5, 1
+/* 8027E570 0027A1D0 38 C0 00 02 */ li r6, 2
+/* 8027E574 0027A1D4 38 E0 00 03 */ li r7, 3
+/* 8027E578 0027A1D8 48 00 59 89 */ bl GXSetTevSwapModeTable
+/* 8027E57C 0027A1DC 38 60 00 01 */ li r3, 1
+/* 8027E580 0027A1E0 38 80 00 00 */ li r4, 0
+/* 8027E584 0027A1E4 38 A0 00 00 */ li r5, 0
+/* 8027E588 0027A1E8 38 C0 00 00 */ li r6, 0
+/* 8027E58C 0027A1EC 38 E0 00 03 */ li r7, 3
+/* 8027E590 0027A1F0 48 00 59 71 */ bl GXSetTevSwapModeTable
+/* 8027E594 0027A1F4 38 60 00 02 */ li r3, 2
+/* 8027E598 0027A1F8 38 80 00 01 */ li r4, 1
+/* 8027E59C 0027A1FC 38 A0 00 01 */ li r5, 1
+/* 8027E5A0 0027A200 38 C0 00 01 */ li r6, 1
+/* 8027E5A4 0027A204 38 E0 00 03 */ li r7, 3
+/* 8027E5A8 0027A208 48 00 59 59 */ bl GXSetTevSwapModeTable
+/* 8027E5AC 0027A20C 38 60 00 03 */ li r3, 3
+/* 8027E5B0 0027A210 38 80 00 02 */ li r4, 2
+/* 8027E5B4 0027A214 38 A0 00 02 */ li r5, 2
+/* 8027E5B8 0027A218 38 C0 00 02 */ li r6, 2
+/* 8027E5BC 0027A21C 38 E0 00 03 */ li r7, 3
+/* 8027E5C0 0027A220 48 00 59 41 */ bl GXSetTevSwapModeTable
+/* 8027E5C4 0027A224 3B 80 00 00 */ li r28, 0
+lbl_8027E5C8:
+/* 8027E5C8 0027A228 7F 83 E3 78 */ mr r3, r28
+/* 8027E5CC 0027A22C 48 00 51 45 */ bl GXSetTevDirect
+/* 8027E5D0 0027A230 3B 9C 00 01 */ addi r28, r28, 1
+/* 8027E5D4 0027A234 28 1C 00 10 */ cmplwi r28, 0x10
+/* 8027E5D8 0027A238 41 80 FF F0 */ blt lbl_8027E5C8
+/* 8027E5DC 0027A23C 38 60 00 00 */ li r3, 0
+/* 8027E5E0 0027A240 48 00 51 11 */ bl GXSetNumIndStages
+/* 8027E5E4 0027A244 38 60 00 00 */ li r3, 0
+/* 8027E5E8 0027A248 38 80 00 00 */ li r4, 0
+/* 8027E5EC 0027A24C 38 A0 00 00 */ li r5, 0
+/* 8027E5F0 0027A250 48 00 4F 31 */ bl GXSetIndTexCoordScale
+/* 8027E5F4 0027A254 38 60 00 01 */ li r3, 1
+/* 8027E5F8 0027A258 38 80 00 00 */ li r4, 0
+/* 8027E5FC 0027A25C 38 A0 00 00 */ li r5, 0
+/* 8027E600 0027A260 48 00 4F 21 */ bl GXSetIndTexCoordScale
+/* 8027E604 0027A264 38 60 00 02 */ li r3, 2
+/* 8027E608 0027A268 38 80 00 00 */ li r4, 0
+/* 8027E60C 0027A26C 38 A0 00 00 */ li r5, 0
+/* 8027E610 0027A270 48 00 4F 11 */ bl GXSetIndTexCoordScale
+/* 8027E614 0027A274 38 60 00 03 */ li r3, 3
+/* 8027E618 0027A278 38 80 00 00 */ li r4, 0
+/* 8027E61C 0027A27C 38 A0 00 00 */ li r5, 0
+/* 8027E620 0027A280 48 00 4F 01 */ bl GXSetIndTexCoordScale
+/* 8027E624 0027A284 C0 42 A0 E4 */ lfs f2, lbl_806426E4-_SDA2_BASE_(r2)
+/* 8027E628 0027A288 38 81 00 08 */ addi r4, r1, 8
+/* 8027E62C 0027A28C 93 E1 00 08 */ stw r31, 8(r1)
+/* 8027E630 0027A290 38 60 00 00 */ li r3, 0
+/* 8027E634 0027A294 FC 80 10 90 */ fmr f4, f2
+/* 8027E638 0027A298 C0 22 A0 D8 */ lfs f1, lbl_806426D8-_SDA2_BASE_(r2)
+/* 8027E63C 0027A29C C0 62 A0 E8 */ lfs f3, lbl_806426E8-_SDA2_BASE_(r2)
+/* 8027E640 0027A2A0 48 00 5B 81 */ bl GXSetFog
+/* 8027E644 0027A2A4 38 60 00 00 */ li r3, 0
+/* 8027E648 0027A2A8 38 80 00 00 */ li r4, 0
+/* 8027E64C 0027A2AC 38 A0 00 00 */ li r5, 0
+/* 8027E650 0027A2B0 48 00 5F 29 */ bl GXSetFogRangeAdj
+/* 8027E654 0027A2B4 38 60 00 00 */ li r3, 0
+/* 8027E658 0027A2B8 38 80 00 04 */ li r4, 4
+/* 8027E65C 0027A2BC 38 A0 00 05 */ li r5, 5
+/* 8027E660 0027A2C0 38 C0 00 00 */ li r6, 0
+/* 8027E664 0027A2C4 48 00 60 39 */ bl GXSetBlendMode
+/* 8027E668 0027A2C8 38 60 00 01 */ li r3, 1
+/* 8027E66C 0027A2CC 48 00 60 81 */ bl GXSetColorUpdate
+/* 8027E670 0027A2D0 38 60 00 01 */ li r3, 1
+/* 8027E674 0027A2D4 48 00 60 A5 */ bl GXSetAlphaUpdate
+/* 8027E678 0027A2D8 38 60 00 01 */ li r3, 1
+/* 8027E67C 0027A2DC 38 80 00 03 */ li r4, 3
+/* 8027E680 0027A2E0 38 A0 00 01 */ li r5, 1
+/* 8027E684 0027A2E4 48 00 60 C1 */ bl GXSetZMode
+/* 8027E688 0027A2E8 38 60 00 01 */ li r3, 1
+/* 8027E68C 0027A2EC 48 00 60 ED */ bl GXSetZCompLoc
+/* 8027E690 0027A2F0 38 60 00 01 */ li r3, 1
+/* 8027E694 0027A2F4 48 00 61 BD */ bl GXSetDither
+/* 8027E698 0027A2F8 38 60 00 00 */ li r3, 0
+/* 8027E69C 0027A2FC 38 80 00 00 */ li r4, 0
+/* 8027E6A0 0027A300 48 00 61 DD */ bl GXSetDstAlpha
+/* 8027E6A4 0027A304 38 60 00 00 */ li r3, 0
+/* 8027E6A8 0027A308 38 80 00 00 */ li r4, 0
+/* 8027E6AC 0027A30C 48 00 60 FD */ bl GXSetPixelFmt
+/* 8027E6B0 0027A310 38 60 00 01 */ li r3, 1
+/* 8027E6B4 0027A314 38 80 00 01 */ li r4, 1
+/* 8027E6B8 0027A318 48 00 61 F5 */ bl GXSetFieldMask
+/* 8027E6BC 0027A31C A0 1D 00 08 */ lhz r0, 8(r29)
+/* 8027E6C0 0027A320 A0 7D 00 10 */ lhz r3, 0x10(r29)
+/* 8027E6C4 0027A324 54 00 08 3C */ slwi r0, r0, 1
+/* 8027E6C8 0027A328 7C 03 00 00 */ cmpw r3, r0
+/* 8027E6CC 0027A32C 40 82 00 0C */ bne lbl_8027E6D8
+/* 8027E6D0 0027A330 38 80 00 01 */ li r4, 1
+/* 8027E6D4 0027A334 48 00 00 08 */ b lbl_8027E6DC
+lbl_8027E6D8:
+/* 8027E6D8 0027A338 38 80 00 00 */ li r4, 0
+lbl_8027E6DC:
+/* 8027E6DC 0027A33C 88 7D 00 18 */ lbz r3, 0x18(r29)
+/* 8027E6E0 0027A340 48 00 62 01 */ bl GXSetFieldMode
+/* 8027E6E4 0027A344 A0 BD 00 04 */ lhz r5, 4(r29)
+/* 8027E6E8 0027A348 38 60 00 00 */ li r3, 0
+/* 8027E6EC 0027A34C A0 DD 00 06 */ lhz r6, 6(r29)
+/* 8027E6F0 0027A350 38 80 00 00 */ li r4, 0
+/* 8027E6F4 0027A354 48 00 2D 79 */ bl GXSetDispCopySrc
+/* 8027E6F8 0027A358 A0 7D 00 04 */ lhz r3, 4(r29)
+/* 8027E6FC 0027A35C A0 9D 00 06 */ lhz r4, 6(r29)
+/* 8027E700 0027A360 48 00 2D ED */ bl GXSetDispCopyDst
+/* 8027E704 0027A364 A0 7D 00 08 */ lhz r3, 8(r29)
+/* 8027E708 0027A368 A0 1D 00 06 */ lhz r0, 6(r29)
+/* 8027E70C 0027A36C 90 61 00 7C */ stw r3, 0x7c(r1)
+/* 8027E710 0027A370 C8 42 A0 F0 */ lfd f2, lbl_806426F0-_SDA2_BASE_(r2)
+/* 8027E714 0027A374 90 01 00 84 */ stw r0, 0x84(r1)
+/* 8027E718 0027A378 C8 21 00 78 */ lfd f1, 0x78(r1)
+/* 8027E71C 0027A37C C8 01 00 80 */ lfd f0, 0x80(r1)
+/* 8027E720 0027A380 EC 21 10 28 */ fsubs f1, f1, f2
+/* 8027E724 0027A384 EC 00 10 28 */ fsubs f0, f0, f2
+/* 8027E728 0027A388 EC 21 00 24 */ fdivs f1, f1, f0
+/* 8027E72C 0027A38C 48 00 32 05 */ bl GXSetDispCopyYScale
+/* 8027E730 0027A390 38 60 00 03 */ li r3, 3
+/* 8027E734 0027A394 48 00 2F 19 */ bl GXSetCopyClamp
+/* 8027E738 0027A398 88 7D 00 19 */ lbz r3, 0x19(r29)
+/* 8027E73C 0027A39C 38 9D 00 1A */ addi r4, r29, 0x1a
+/* 8027E740 0027A3A0 38 DD 00 32 */ addi r6, r29, 0x32
+/* 8027E744 0027A3A4 38 A0 00 01 */ li r5, 1
+/* 8027E748 0027A3A8 48 00 33 2D */ bl GXSetCopyFilter
+/* 8027E74C 0027A3AC 38 60 00 00 */ li r3, 0
+/* 8027E750 0027A3B0 48 00 35 09 */ bl GXSetDispCopyGamma
+/* 8027E754 0027A3B4 38 60 00 00 */ li r3, 0
+/* 8027E758 0027A3B8 48 00 2E D5 */ bl GXSetDispCopyFrame2Field
+/* 8027E75C 0027A3BC 48 00 37 A5 */ bl GXClearBoundingBox
+/* 8027E760 0027A3C0 38 60 00 01 */ li r3, 1
+/* 8027E764 0027A3C4 48 00 25 21 */ bl GXPokeColorUpdate
+/* 8027E768 0027A3C8 38 60 00 01 */ li r3, 1
+/* 8027E76C 0027A3CC 48 00 24 A9 */ bl GXPokeAlphaUpdate
+/* 8027E770 0027A3D0 38 60 00 00 */ li r3, 0
+/* 8027E774 0027A3D4 48 00 25 3D */ bl GXPokeDither
+/* 8027E778 0027A3D8 38 60 00 00 */ li r3, 0
+/* 8027E77C 0027A3DC 38 80 00 00 */ li r4, 0
+/* 8027E780 0027A3E0 38 A0 00 01 */ li r5, 1
+/* 8027E784 0027A3E4 38 C0 00 0F */ li r6, 0xf
+/* 8027E788 0027A3E8 48 00 24 A1 */ bl GXPokeBlendMode
+/* 8027E78C 0027A3EC 38 60 00 07 */ li r3, 7
+/* 8027E790 0027A3F0 38 80 00 00 */ li r4, 0
+/* 8027E794 0027A3F4 48 00 24 59 */ bl GXPokeAlphaMode
+/* 8027E798 0027A3F8 38 60 00 01 */ li r3, 1
+/* 8027E79C 0027A3FC 48 00 24 61 */ bl GXPokeAlphaRead
+/* 8027E7A0 0027A400 38 60 00 00 */ li r3, 0
+/* 8027E7A4 0027A404 38 80 00 00 */ li r4, 0
+/* 8027E7A8 0027A408 48 00 24 F1 */ bl GXPokeDstAlpha
+/* 8027E7AC 0027A40C 38 60 00 01 */ li r3, 1
+/* 8027E7B0 0027A410 38 80 00 07 */ li r4, 7
+/* 8027E7B4 0027A414 38 A0 00 01 */ li r5, 1
+/* 8027E7B8 0027A418 48 00 25 0D */ bl GXPokeZMode
+/* 8027E7BC 0027A41C 38 60 00 23 */ li r3, 0x23
+/* 8027E7C0 0027A420 38 80 00 16 */ li r4, 0x16
+/* 8027E7C4 0027A424 48 00 86 8D */ bl GXSetGPMetric
+/* 8027E7C8 0027A428 48 00 8E B5 */ bl GXClearGPMetric
+/* 8027E7CC 0027A42C 80 01 00 A4 */ lwz r0, 0xa4(r1)
+/* 8027E7D0 0027A430 83 E1 00 9C */ lwz r31, 0x9c(r1)
+/* 8027E7D4 0027A434 83 C1 00 98 */ lwz r30, 0x98(r1)
+/* 8027E7D8 0027A438 83 A1 00 94 */ lwz r29, 0x94(r1)
+/* 8027E7DC 0027A43C 83 81 00 90 */ lwz r28, 0x90(r1)
+/* 8027E7E0 0027A440 7C 08 03 A6 */ mtlr r0
+/* 8027E7E4 0027A444 38 21 00 A0 */ addi r1, r1, 0xa0
+/* 8027E7E8 0027A448 4E 80 00 20 */ blr
diff --git a/asm/SDK/GX/GXLight.s b/asm/SDK/GX/GXLight.s
new file mode 100644
index 0000000..4c45792
--- /dev/null
+++ b/asm/SDK/GX/GXLight.s
@@ -0,0 +1,512 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global GXInitLightAttn
+GXInitLightAttn:
+/* 80281F38 0027DB98 D0 23 00 10 */ stfs f1, 0x10(r3)
+/* 80281F3C 0027DB9C D0 43 00 14 */ stfs f2, 0x14(r3)
+/* 80281F40 0027DBA0 D0 63 00 18 */ stfs f3, 0x18(r3)
+/* 80281F44 0027DBA4 D0 83 00 1C */ stfs f4, 0x1c(r3)
+/* 80281F48 0027DBA8 D0 A3 00 20 */ stfs f5, 0x20(r3)
+/* 80281F4C 0027DBAC D0 C3 00 24 */ stfs f6, 0x24(r3)
+/* 80281F50 0027DBB0 4E 80 00 20 */ blr
+
+.global GXInitLightSpot
+GXInitLightSpot:
+/* 80281F54 0027DBB4 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80281F58 0027DBB8 7C 08 02 A6 */ mflr r0
+/* 80281F5C 0027DBBC C0 02 A1 08 */ lfs f0, lbl_80642708-_SDA2_BASE_(r2)
+/* 80281F60 0027DBC0 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80281F64 0027DBC4 FC 01 00 40 */ fcmpo cr0, f1, f0
+/* 80281F68 0027DBC8 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80281F6C 0027DBCC 7C 9F 23 78 */ mr r31, r4
+/* 80281F70 0027DBD0 93 C1 00 08 */ stw r30, 8(r1)
+/* 80281F74 0027DBD4 7C 7E 1B 78 */ mr r30, r3
+/* 80281F78 0027DBD8 4C 40 13 82 */ cror 2, 0, 2
+/* 80281F7C 0027DBDC 41 82 00 10 */ beq lbl_80281F8C
+/* 80281F80 0027DBE0 C0 02 A1 0C */ lfs f0, lbl_8064270C-_SDA2_BASE_(r2)
+/* 80281F84 0027DBE4 FC 01 00 40 */ fcmpo cr0, f1, f0
+/* 80281F88 0027DBE8 40 81 00 08 */ ble lbl_80281F90
+lbl_80281F8C:
+/* 80281F8C 0027DBEC 3B E0 00 00 */ li r31, 0
+lbl_80281F90:
+/* 80281F90 0027DBF0 C0 42 A1 10 */ lfs f2, lbl_80642710-_SDA2_BASE_(r2)
+/* 80281F94 0027DBF4 C0 02 A1 14 */ lfs f0, lbl_80642714-_SDA2_BASE_(r2)
+/* 80281F98 0027DBF8 EC 22 00 72 */ fmuls f1, f2, f1
+/* 80281F9C 0027DBFC EC 21 00 24 */ fdivs f1, f1, f0
+/* 80281FA0 0027DC00 4B F5 20 D9 */ bl cos
+/* 80281FA4 0027DC04 28 1F 00 06 */ cmplwi r31, 6
+/* 80281FA8 0027DC08 FC A0 08 18 */ frsp f5, f1
+/* 80281FAC 0027DC0C 41 81 01 00 */ bgt lbl_802820AC
+/* 80281FB0 0027DC10 3C 60 80 43 */ lis r3, lbl_80435780@ha
+/* 80281FB4 0027DC14 57 E0 10 3A */ slwi r0, r31, 2
+/* 80281FB8 0027DC18 38 63 57 80 */ addi r3, r3, lbl_80435780@l
+/* 80281FBC 0027DC1C 7C 63 00 2E */ lwzx r3, r3, r0
+/* 80281FC0 0027DC20 7C 69 03 A6 */ mtctr r3
+/* 80281FC4 0027DC24 4E 80 04 20 */ bctr
+/* 80281FC8 0027DC28 C0 02 A1 18 */ lfs f0, lbl_80642718-_SDA2_BASE_(r2)
+/* 80281FCC 0027DC2C C0 22 A1 1C */ lfs f1, lbl_8064271C-_SDA2_BASE_(r2)
+/* 80281FD0 0027DC30 EC 60 01 72 */ fmuls f3, f0, f5
+/* 80281FD4 0027DC34 C0 C2 A1 08 */ lfs f6, lbl_80642708-_SDA2_BASE_(r2)
+/* 80281FD8 0027DC38 48 00 00 E0 */ b lbl_802820B8
+/* 80281FDC 0027DC3C C0 42 A1 20 */ lfs f2, lbl_80642720-_SDA2_BASE_(r2)
+/* 80281FE0 0027DC40 FC 00 28 50 */ fneg f0, f5
+/* 80281FE4 0027DC44 C0 C2 A1 08 */ lfs f6, lbl_80642708-_SDA2_BASE_(r2)
+/* 80281FE8 0027DC48 EC 22 28 28 */ fsubs f1, f2, f5
+/* 80281FEC 0027DC4C EC 22 08 24 */ fdivs f1, f2, f1
+/* 80281FF0 0027DC50 EC 60 00 72 */ fmuls f3, f0, f1
+/* 80281FF4 0027DC54 48 00 00 C4 */ b lbl_802820B8
+/* 80281FF8 0027DC58 C0 42 A1 20 */ lfs f2, lbl_80642720-_SDA2_BASE_(r2)
+/* 80281FFC 0027DC5C FC 00 28 50 */ fneg f0, f5
+/* 80282000 0027DC60 C0 62 A1 08 */ lfs f3, lbl_80642708-_SDA2_BASE_(r2)
+/* 80282004 0027DC64 EC 22 28 28 */ fsubs f1, f2, f5
+/* 80282008 0027DC68 EC C2 08 24 */ fdivs f6, f2, f1
+/* 8028200C 0027DC6C EC 20 01 B2 */ fmuls f1, f0, f6
+/* 80282010 0027DC70 48 00 00 A8 */ b lbl_802820B8
+/* 80282014 0027DC74 C0 62 A1 20 */ lfs f3, lbl_80642720-_SDA2_BASE_(r2)
+/* 80282018 0027DC78 C0 22 A1 24 */ lfs f1, lbl_80642724-_SDA2_BASE_(r2)
+/* 8028201C 0027DC7C EC 43 28 28 */ fsubs f2, f3, f5
+/* 80282020 0027DC80 EC 05 08 28 */ fsubs f0, f5, f1
+/* 80282024 0027DC84 EC 42 00 B2 */ fmuls f2, f2, f2
+/* 80282028 0027DC88 EC 05 00 32 */ fmuls f0, f5, f0
+/* 8028202C 0027DC8C EC 43 10 24 */ fdivs f2, f3, f2
+/* 80282030 0027DC90 EC 62 00 32 */ fmuls f3, f2, f0
+/* 80282034 0027DC94 EC 21 00 B2 */ fmuls f1, f1, f2
+/* 80282038 0027DC98 FC C0 10 50 */ fneg f6, f2
+/* 8028203C 0027DC9C 48 00 00 7C */ b lbl_802820B8
+/* 80282040 0027DCA0 C0 82 A1 20 */ lfs f4, lbl_80642720-_SDA2_BASE_(r2)
+/* 80282044 0027DCA4 C0 02 A1 2C */ lfs f0, lbl_8064272C-_SDA2_BASE_(r2)
+/* 80282048 0027DCA8 EC 64 28 28 */ fsubs f3, f4, f5
+/* 8028204C 0027DCAC C0 42 A1 28 */ lfs f2, lbl_80642728-_SDA2_BASE_(r2)
+/* 80282050 0027DCB0 EC 24 28 2A */ fadds f1, f4, f5
+/* 80282054 0027DCB4 EC 63 00 F2 */ fmuls f3, f3, f3
+/* 80282058 0027DCB8 EC 00 00 72 */ fmuls f0, f0, f1
+/* 8028205C 0027DCBC EC 24 18 24 */ fdivs f1, f4, f3
+/* 80282060 0027DCC0 EC C2 00 72 */ fmuls f6, f2, f1
+/* 80282064 0027DCC4 EC 20 00 72 */ fmuls f1, f0, f1
+/* 80282068 0027DCC8 EC 66 01 72 */ fmuls f3, f6, f5
+/* 8028206C 0027DCCC 48 00 00 4C */ b lbl_802820B8
+/* 80282070 0027DCD0 C0 82 A1 20 */ lfs f4, lbl_80642720-_SDA2_BASE_(r2)
+/* 80282074 0027DCD4 C0 02 A1 24 */ lfs f0, lbl_80642724-_SDA2_BASE_(r2)
+/* 80282078 0027DCD8 EC 64 28 28 */ fsubs f3, f4, f5
+/* 8028207C 0027DCDC C0 22 A1 2C */ lfs f1, lbl_8064272C-_SDA2_BASE_(r2)
+/* 80282080 0027DCE0 EC 40 01 72 */ fmuls f2, f0, f5
+/* 80282084 0027DCE4 C0 02 A1 30 */ lfs f0, lbl_80642730-_SDA2_BASE_(r2)
+/* 80282088 0027DCE8 EC 21 01 72 */ fmuls f1, f1, f5
+/* 8028208C 0027DCEC EC 63 00 F2 */ fmuls f3, f3, f3
+/* 80282090 0027DCF0 EC 42 01 72 */ fmuls f2, f2, f5
+/* 80282094 0027DCF4 EC 64 18 24 */ fdivs f3, f4, f3
+/* 80282098 0027DCF8 EC 43 00 B2 */ fmuls f2, f3, f2
+/* 8028209C 0027DCFC EC 21 00 F2 */ fmuls f1, f1, f3
+/* 802820A0 0027DD00 EC C0 00 F2 */ fmuls f6, f0, f3
+/* 802820A4 0027DD04 EC 64 10 28 */ fsubs f3, f4, f2
+/* 802820A8 0027DD08 48 00 00 10 */ b lbl_802820B8
+lbl_802820AC:
+/* 802820AC 0027DD0C C0 22 A1 08 */ lfs f1, lbl_80642708-_SDA2_BASE_(r2)
+/* 802820B0 0027DD10 C0 62 A1 20 */ lfs f3, lbl_80642720-_SDA2_BASE_(r2)
+/* 802820B4 0027DD14 FC C0 08 90 */ fmr f6, f1
+lbl_802820B8:
+/* 802820B8 0027DD18 D0 7E 00 10 */ stfs f3, 0x10(r30)
+/* 802820BC 0027DD1C D0 3E 00 14 */ stfs f1, 0x14(r30)
+/* 802820C0 0027DD20 D0 DE 00 18 */ stfs f6, 0x18(r30)
+/* 802820C4 0027DD24 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802820C8 0027DD28 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802820CC 0027DD2C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802820D0 0027DD30 7C 08 03 A6 */ mtlr r0
+/* 802820D4 0027DD34 38 21 00 10 */ addi r1, r1, 0x10
+/* 802820D8 0027DD38 4E 80 00 20 */ blr
+
+.global GXInitLightDistAttn
+GXInitLightDistAttn:
+/* 802820DC 0027DD3C C0 02 A1 08 */ lfs f0, lbl_80642708-_SDA2_BASE_(r2)
+/* 802820E0 0027DD40 FC 01 00 40 */ fcmpo cr0, f1, f0
+/* 802820E4 0027DD44 40 80 00 08 */ bge lbl_802820EC
+/* 802820E8 0027DD48 38 80 00 00 */ li r4, 0
+lbl_802820EC:
+/* 802820EC 0027DD4C C0 02 A1 08 */ lfs f0, lbl_80642708-_SDA2_BASE_(r2)
+/* 802820F0 0027DD50 FC 02 00 40 */ fcmpo cr0, f2, f0
+/* 802820F4 0027DD54 4C 40 13 82 */ cror 2, 0, 2
+/* 802820F8 0027DD58 41 82 00 14 */ beq lbl_8028210C
+/* 802820FC 0027DD5C C0 02 A1 20 */ lfs f0, lbl_80642720-_SDA2_BASE_(r2)
+/* 80282100 0027DD60 FC 02 00 40 */ fcmpo cr0, f2, f0
+/* 80282104 0027DD64 4C 41 13 82 */ cror 2, 1, 2
+/* 80282108 0027DD68 40 82 00 08 */ bne lbl_80282110
+lbl_8028210C:
+/* 8028210C 0027DD6C 38 80 00 00 */ li r4, 0
+lbl_80282110:
+/* 80282110 0027DD70 2C 04 00 02 */ cmpwi r4, 2
+/* 80282114 0027DD74 41 82 00 3C */ beq lbl_80282150
+/* 80282118 0027DD78 40 80 00 14 */ bge lbl_8028212C
+/* 8028211C 0027DD7C 2C 04 00 00 */ cmpwi r4, 0
+/* 80282120 0027DD80 41 82 00 70 */ beq lbl_80282190
+/* 80282124 0027DD84 40 80 00 14 */ bge lbl_80282138
+/* 80282128 0027DD88 48 00 00 68 */ b lbl_80282190
+lbl_8028212C:
+/* 8028212C 0027DD8C 2C 04 00 04 */ cmpwi r4, 4
+/* 80282130 0027DD90 40 80 00 60 */ bge lbl_80282190
+/* 80282134 0027DD94 48 00 00 40 */ b lbl_80282174
+lbl_80282138:
+/* 80282138 0027DD98 C0 A2 A1 20 */ lfs f5, lbl_80642720-_SDA2_BASE_(r2)
+/* 8028213C 0027DD9C EC 02 00 72 */ fmuls f0, f2, f1
+/* 80282140 0027DDA0 C0 82 A1 08 */ lfs f4, lbl_80642708-_SDA2_BASE_(r2)
+/* 80282144 0027DDA4 EC 25 10 28 */ fsubs f1, f5, f2
+/* 80282148 0027DDA8 EC 61 00 24 */ fdivs f3, f1, f0
+/* 8028214C 0027DDAC 48 00 00 50 */ b lbl_8028219C
+lbl_80282150:
+/* 80282150 0027DDB0 C0 A2 A1 20 */ lfs f5, lbl_80642720-_SDA2_BASE_(r2)
+/* 80282154 0027DDB4 EC 62 00 72 */ fmuls f3, f2, f1
+/* 80282158 0027DDB8 C0 82 A1 34 */ lfs f4, lbl_80642734-_SDA2_BASE_(r2)
+/* 8028215C 0027DDBC EC 45 10 28 */ fsubs f2, f5, f2
+/* 80282160 0027DDC0 EC 01 00 F2 */ fmuls f0, f1, f3
+/* 80282164 0027DDC4 EC 24 00 B2 */ fmuls f1, f4, f2
+/* 80282168 0027DDC8 EC 61 18 24 */ fdivs f3, f1, f3
+/* 8028216C 0027DDCC EC 81 00 24 */ fdivs f4, f1, f0
+/* 80282170 0027DDD0 48 00 00 2C */ b lbl_8028219C
+lbl_80282174:
+/* 80282174 0027DDD4 EC 02 00 72 */ fmuls f0, f2, f1
+/* 80282178 0027DDD8 C0 A2 A1 20 */ lfs f5, lbl_80642720-_SDA2_BASE_(r2)
+/* 8028217C 0027DDDC C0 62 A1 08 */ lfs f3, lbl_80642708-_SDA2_BASE_(r2)
+/* 80282180 0027DDE0 EC 45 10 28 */ fsubs f2, f5, f2
+/* 80282184 0027DDE4 EC 01 00 32 */ fmuls f0, f1, f0
+/* 80282188 0027DDE8 EC 82 00 24 */ fdivs f4, f2, f0
+/* 8028218C 0027DDEC 48 00 00 10 */ b lbl_8028219C
+lbl_80282190:
+/* 80282190 0027DDF0 C0 62 A1 08 */ lfs f3, lbl_80642708-_SDA2_BASE_(r2)
+/* 80282194 0027DDF4 C0 A2 A1 20 */ lfs f5, lbl_80642720-_SDA2_BASE_(r2)
+/* 80282198 0027DDF8 FC 80 18 90 */ fmr f4, f3
+lbl_8028219C:
+/* 8028219C 0027DDFC D0 A3 00 1C */ stfs f5, 0x1c(r3)
+/* 802821A0 0027DE00 D0 63 00 20 */ stfs f3, 0x20(r3)
+/* 802821A4 0027DE04 D0 83 00 24 */ stfs f4, 0x24(r3)
+/* 802821A8 0027DE08 4E 80 00 20 */ blr
+
+.global GXInitLightPos
+GXInitLightPos:
+/* 802821AC 0027DE0C D0 23 00 28 */ stfs f1, 0x28(r3)
+/* 802821B0 0027DE10 D0 43 00 2C */ stfs f2, 0x2c(r3)
+/* 802821B4 0027DE14 D0 63 00 30 */ stfs f3, 0x30(r3)
+/* 802821B8 0027DE18 4E 80 00 20 */ blr
+
+.global GXInitLightDir
+GXInitLightDir:
+/* 802821BC 0027DE1C FC 80 08 50 */ fneg f4, f1
+/* 802821C0 0027DE20 FC 20 10 50 */ fneg f1, f2
+/* 802821C4 0027DE24 FC 00 18 50 */ fneg f0, f3
+/* 802821C8 0027DE28 D0 83 00 34 */ stfs f4, 0x34(r3)
+/* 802821CC 0027DE2C D0 23 00 38 */ stfs f1, 0x38(r3)
+/* 802821D0 0027DE30 D0 03 00 3C */ stfs f0, 0x3c(r3)
+/* 802821D4 0027DE34 4E 80 00 20 */ blr
+
+.global GXInitSpecularDir
+GXInitSpecularDir:
+/* 802821D8 0027DE38 94 21 FF 90 */ stwu r1, -0x70(r1)
+/* 802821DC 0027DE3C 7C 08 02 A6 */ mflr r0
+/* 802821E0 0027DE40 90 01 00 74 */ stw r0, 0x74(r1)
+/* 802821E4 0027DE44 DB E1 00 60 */ stfd f31, 0x60(r1)
+/* 802821E8 0027DE48 F3 E1 00 68 */ psq_st f31, 104(r1), 0, qr0
+/* 802821EC 0027DE4C DB C1 00 50 */ stfd f30, 0x50(r1)
+/* 802821F0 0027DE50 F3 C1 00 58 */ psq_st f30, 88(r1), 0, qr0
+/* 802821F4 0027DE54 DB A1 00 40 */ stfd f29, 0x40(r1)
+/* 802821F8 0027DE58 F3 A1 00 48 */ psq_st f29, 72(r1), 0, qr0
+/* 802821FC 0027DE5C DB 81 00 30 */ stfd f28, 0x30(r1)
+/* 80282200 0027DE60 F3 81 00 38 */ psq_st f28, 56(r1), 0, qr0
+/* 80282204 0027DE64 DB 61 00 20 */ stfd f27, 0x20(r1)
+/* 80282208 0027DE68 F3 61 00 28 */ psq_st f27, 40(r1), 0, qr0
+/* 8028220C 0027DE6C DB 41 00 10 */ stfd f26, 0x10(r1)
+/* 80282210 0027DE70 F3 41 00 18 */ psq_st f26, 24(r1), 0, qr0
+/* 80282214 0027DE74 FF E0 08 50 */ fneg f31, f1
+/* 80282218 0027DE78 FF C0 10 50 */ fneg f30, f2
+/* 8028221C 0027DE7C C0 82 A1 20 */ lfs f4, lbl_80642720-_SDA2_BASE_(r2)
+/* 80282220 0027DE80 FC C0 18 50 */ fneg f6, f3
+/* 80282224 0027DE84 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80282228 0027DE88 EC BF 07 F2 */ fmuls f5, f31, f31
+/* 8028222C 0027DE8C FF 40 08 90 */ fmr f26, f1
+/* 80282230 0027DE90 EF A4 30 2A */ fadds f29, f4, f6
+/* 80282234 0027DE94 C0 02 A1 08 */ lfs f0, lbl_80642708-_SDA2_BASE_(r2)
+/* 80282238 0027DE98 EC 9E 07 B2 */ fmuls f4, f30, f30
+/* 8028223C 0027DE9C 7C 7F 1B 78 */ mr r31, r3
+/* 80282240 0027DEA0 FF 60 10 90 */ fmr f27, f2
+/* 80282244 0027DEA4 EC DD 07 72 */ fmuls f6, f29, f29
+/* 80282248 0027DEA8 EC 25 20 2A */ fadds f1, f5, f4
+/* 8028224C 0027DEAC FF 80 18 90 */ fmr f28, f3
+/* 80282250 0027DEB0 EC 26 08 2A */ fadds f1, f6, f1
+/* 80282254 0027DEB4 FC 00 08 00 */ fcmpu cr0, f0, f1
+/* 80282258 0027DEB8 41 82 00 14 */ beq lbl_8028226C
+/* 8028225C 0027DEBC 4B F5 25 D9 */ bl sqrt
+/* 80282260 0027DEC0 FC 20 08 18 */ frsp f1, f1
+/* 80282264 0027DEC4 C0 02 A1 20 */ lfs f0, lbl_80642720-_SDA2_BASE_(r2)
+/* 80282268 0027DEC8 EC 20 08 24 */ fdivs f1, f0, f1
+lbl_8028226C:
+/* 8028226C 0027DECC C0 02 A1 38 */ lfs f0, lbl_80642738-_SDA2_BASE_(r2)
+/* 80282270 0027DED0 EC BF 00 72 */ fmuls f5, f31, f1
+/* 80282274 0027DED4 EC 9E 00 72 */ fmuls f4, f30, f1
+/* 80282278 0027DED8 EC 7D 00 72 */ fmuls f3, f29, f1
+/* 8028227C 0027DEDC EC 40 06 B2 */ fmuls f2, f0, f26
+/* 80282280 0027DEE0 D0 BF 00 34 */ stfs f5, 0x34(r31)
+/* 80282284 0027DEE4 EC 20 06 F2 */ fmuls f1, f0, f27
+/* 80282288 0027DEE8 EC 00 07 32 */ fmuls f0, f0, f28
+/* 8028228C 0027DEEC D0 9F 00 38 */ stfs f4, 0x38(r31)
+/* 80282290 0027DEF0 D0 7F 00 3C */ stfs f3, 0x3c(r31)
+/* 80282294 0027DEF4 D0 5F 00 28 */ stfs f2, 0x28(r31)
+/* 80282298 0027DEF8 D0 3F 00 2C */ stfs f1, 0x2c(r31)
+/* 8028229C 0027DEFC D0 1F 00 30 */ stfs f0, 0x30(r31)
+/* 802822A0 0027DF00 E3 E1 00 68 */ psq_l f31, 104(r1), 0, qr0
+/* 802822A4 0027DF04 CB E1 00 60 */ lfd f31, 0x60(r1)
+/* 802822A8 0027DF08 E3 C1 00 58 */ psq_l f30, 88(r1), 0, qr0
+/* 802822AC 0027DF0C CB C1 00 50 */ lfd f30, 0x50(r1)
+/* 802822B0 0027DF10 E3 A1 00 48 */ psq_l f29, 72(r1), 0, qr0
+/* 802822B4 0027DF14 CB A1 00 40 */ lfd f29, 0x40(r1)
+/* 802822B8 0027DF18 E3 81 00 38 */ psq_l f28, 56(r1), 0, qr0
+/* 802822BC 0027DF1C CB 81 00 30 */ lfd f28, 0x30(r1)
+/* 802822C0 0027DF20 E3 61 00 28 */ psq_l f27, 40(r1), 0, qr0
+/* 802822C4 0027DF24 CB 61 00 20 */ lfd f27, 0x20(r1)
+/* 802822C8 0027DF28 E3 41 00 18 */ psq_l f26, 24(r1), 0, qr0
+/* 802822CC 0027DF2C CB 41 00 10 */ lfd f26, 0x10(r1)
+/* 802822D0 0027DF30 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802822D4 0027DF34 80 01 00 74 */ lwz r0, 0x74(r1)
+/* 802822D8 0027DF38 7C 08 03 A6 */ mtlr r0
+/* 802822DC 0027DF3C 38 21 00 70 */ addi r1, r1, 0x70
+/* 802822E0 0027DF40 4E 80 00 20 */ blr
+
+.global GXInitSpecularDirHA
+GXInitSpecularDirHA:
+/* 802822E4 0027DF44 C0 02 A1 38 */ lfs f0, lbl_80642738-_SDA2_BASE_(r2)
+/* 802822E8 0027DF48 D0 83 00 34 */ stfs f4, 0x34(r3)
+/* 802822EC 0027DF4C EC 80 00 72 */ fmuls f4, f0, f1
+/* 802822F0 0027DF50 EC 20 00 B2 */ fmuls f1, f0, f2
+/* 802822F4 0027DF54 D0 A3 00 38 */ stfs f5, 0x38(r3)
+/* 802822F8 0027DF58 EC 00 00 F2 */ fmuls f0, f0, f3
+/* 802822FC 0027DF5C D0 C3 00 3C */ stfs f6, 0x3c(r3)
+/* 80282300 0027DF60 D0 83 00 28 */ stfs f4, 0x28(r3)
+/* 80282304 0027DF64 D0 23 00 2C */ stfs f1, 0x2c(r3)
+/* 80282308 0027DF68 D0 03 00 30 */ stfs f0, 0x30(r3)
+/* 8028230C 0027DF6C 4E 80 00 20 */ blr
+
+.global GXInitLightColor
+GXInitLightColor:
+/* 80282310 0027DF70 80 04 00 00 */ lwz r0, 0(r4)
+/* 80282314 0027DF74 90 03 00 0C */ stw r0, 0xc(r3)
+/* 80282318 0027DF78 4E 80 00 20 */ blr
+
+.global GXLoadLightObjImm
+GXLoadLightObjImm:
+/* 8028231C 0027DF7C 7C 80 00 34 */ cntlzw r0, r4
+/* 80282320 0027DF80 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 80282324 0027DF84 20 A0 00 1F */ subfic r5, r0, 0x1f
+/* 80282328 0027DF88 38 00 00 10 */ li r0, 0x10
+/* 8028232C 0027DF8C 54 A5 26 76 */ rlwinm r5, r5, 4, 0x19, 0x1b
+/* 80282330 0027DF90 98 04 80 00 */ stb r0, 0xCC008000@l(r4)
+/* 80282334 0027DF94 38 05 06 00 */ addi r0, r5, 0x600
+/* 80282338 0027DF98 64 00 00 0F */ oris r0, r0, 0xf
+/* 8028233C 0027DF9C 90 04 80 00 */ stw r0, -0x8000(r4)
+/* 80282340 0027DFA0 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 80282344 0027DFA4 7C C6 32 78 */ xor r6, r6, r6
+/* 80282348 0027DFA8 E0 A3 00 10 */ psq_l f5, 16(r3), 0, qr0
+/* 8028234C 0027DFAC E0 83 00 18 */ psq_l f4, 24(r3), 0, qr0
+/* 80282350 0027DFB0 E0 63 00 20 */ psq_l f3, 32(r3), 0, qr0
+/* 80282354 0027DFB4 E0 43 00 28 */ psq_l f2, 40(r3), 0, qr0
+/* 80282358 0027DFB8 E0 23 00 30 */ psq_l f1, 48(r3), 0, qr0
+/* 8028235C 0027DFBC E0 03 00 38 */ psq_l f0, 56(r3), 0, qr0
+/* 80282360 0027DFC0 94 C4 80 00 */ stwu r6, -0x8000(r4)
+/* 80282364 0027DFC4 90 C4 00 00 */ stw r6, 0(r4)
+/* 80282368 0027DFC8 90 C4 00 00 */ stw r6, 0(r4)
+/* 8028236C 0027DFCC 90 04 00 00 */ stw r0, 0(r4)
+/* 80282370 0027DFD0 F0 A4 00 00 */ psq_st f5, 0(r4), 0, qr0
+/* 80282374 0027DFD4 F0 84 00 00 */ psq_st f4, 0(r4), 0, qr0
+/* 80282378 0027DFD8 F0 64 00 00 */ psq_st f3, 0(r4), 0, qr0
+/* 8028237C 0027DFDC F0 44 00 00 */ psq_st f2, 0(r4), 0, qr0
+/* 80282380 0027DFE0 F0 24 00 00 */ psq_st f1, 0(r4), 0, qr0
+/* 80282384 0027DFE4 F0 04 00 00 */ psq_st f0, 0(r4), 0, qr0
+/* 80282388 0027DFE8 38 00 00 01 */ li r0, 1
+/* 8028238C 0027DFEC 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80282390 0027DFF0 B0 03 00 02 */ sth r0, 2(r3)
+/* 80282394 0027DFF4 4E 80 00 20 */ blr
+
+.global GXSetChanAmbColor
+GXSetChanAmbColor:
+/* 80282398 0027DFF8 2C 03 00 03 */ cmpwi r3, 3
+/* 8028239C 0027DFFC 41 82 00 78 */ beq lbl_80282414
+/* 802823A0 0027E000 40 80 00 1C */ bge lbl_802823BC
+/* 802823A4 0027E004 2C 03 00 01 */ cmpwi r3, 1
+/* 802823A8 0027E008 41 82 00 3C */ beq lbl_802823E4
+/* 802823AC 0027E00C 40 80 00 50 */ bge lbl_802823FC
+/* 802823B0 0027E010 2C 03 00 00 */ cmpwi r3, 0
+/* 802823B4 0027E014 40 80 00 18 */ bge lbl_802823CC
+/* 802823B8 0027E018 4E 80 00 20 */ blr
+lbl_802823BC:
+/* 802823BC 0027E01C 2C 03 00 05 */ cmpwi r3, 5
+/* 802823C0 0027E020 41 82 00 78 */ beq lbl_80282438
+/* 802823C4 0027E024 4C 80 00 20 */ bgelr
+/* 802823C8 0027E028 48 00 00 64 */ b lbl_8028242C
+lbl_802823CC:
+/* 802823CC 0027E02C 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802823D0 0027E030 39 00 00 00 */ li r8, 0
+/* 802823D4 0027E034 80 04 00 00 */ lwz r0, 0(r4)
+/* 802823D8 0027E038 80 E3 00 A8 */ lwz r7, 0xa8(r3)
+/* 802823DC 0027E03C 50 07 00 2E */ rlwimi r7, r0, 0, 0, 0x17
+/* 802823E0 0027E040 48 00 00 68 */ b lbl_80282448
+lbl_802823E4:
+/* 802823E4 0027E044 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802823E8 0027E048 39 00 00 01 */ li r8, 1
+/* 802823EC 0027E04C 80 04 00 00 */ lwz r0, 0(r4)
+/* 802823F0 0027E050 80 E3 00 AC */ lwz r7, 0xac(r3)
+/* 802823F4 0027E054 50 07 00 2E */ rlwimi r7, r0, 0, 0, 0x17
+/* 802823F8 0027E058 48 00 00 50 */ b lbl_80282448
+lbl_802823FC:
+/* 802823FC 0027E05C 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80282400 0027E060 39 00 00 00 */ li r8, 0
+/* 80282404 0027E064 88 04 00 03 */ lbz r0, 3(r4)
+/* 80282408 0027E068 80 E3 00 A8 */ lwz r7, 0xa8(r3)
+/* 8028240C 0027E06C 50 07 06 3E */ rlwimi r7, r0, 0, 0x18, 0x1f
+/* 80282410 0027E070 48 00 00 38 */ b lbl_80282448
+lbl_80282414:
+/* 80282414 0027E074 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80282418 0027E078 39 00 00 01 */ li r8, 1
+/* 8028241C 0027E07C 88 04 00 03 */ lbz r0, 3(r4)
+/* 80282420 0027E080 80 E3 00 AC */ lwz r7, 0xac(r3)
+/* 80282424 0027E084 50 07 06 3E */ rlwimi r7, r0, 0, 0x18, 0x1f
+/* 80282428 0027E088 48 00 00 20 */ b lbl_80282448
+lbl_8028242C:
+/* 8028242C 0027E08C 80 E4 00 00 */ lwz r7, 0(r4)
+/* 80282430 0027E090 39 00 00 00 */ li r8, 0
+/* 80282434 0027E094 48 00 00 14 */ b lbl_80282448
+lbl_80282438:
+/* 80282438 0027E098 80 E4 00 00 */ lwz r7, 0(r4)
+/* 8028243C 0027E09C 39 00 00 01 */ li r8, 1
+/* 80282440 0027E0A0 48 00 00 08 */ b lbl_80282448
+/* 80282444 0027E0A4 4E 80 00 20 */ blr
+lbl_80282448:
+/* 80282448 0027E0A8 80 C2 A0 D0 */ lwz r6, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8028244C 0027E0AC 38 60 01 00 */ li r3, 0x100
+/* 80282450 0027E0B0 55 00 10 3A */ slwi r0, r8, 2
+/* 80282454 0027E0B4 80 A6 05 FC */ lwz r5, 0x5fc(r6)
+/* 80282458 0027E0B8 7C 64 40 30 */ slw r4, r3, r8
+/* 8028245C 0027E0BC 7C 66 02 14 */ add r3, r6, r0
+/* 80282460 0027E0C0 7C A0 23 78 */ or r0, r5, r4
+/* 80282464 0027E0C4 90 06 05 FC */ stw r0, 0x5fc(r6)
+/* 80282468 0027E0C8 90 E3 00 A8 */ stw r7, 0xa8(r3)
+/* 8028246C 0027E0CC 4E 80 00 20 */ blr
+
+.global GXSetChanMatColor
+GXSetChanMatColor:
+/* 80282470 0027E0D0 2C 03 00 03 */ cmpwi r3, 3
+/* 80282474 0027E0D4 41 82 00 78 */ beq lbl_802824EC
+/* 80282478 0027E0D8 40 80 00 1C */ bge lbl_80282494
+/* 8028247C 0027E0DC 2C 03 00 01 */ cmpwi r3, 1
+/* 80282480 0027E0E0 41 82 00 3C */ beq lbl_802824BC
+/* 80282484 0027E0E4 40 80 00 50 */ bge lbl_802824D4
+/* 80282488 0027E0E8 2C 03 00 00 */ cmpwi r3, 0
+/* 8028248C 0027E0EC 40 80 00 18 */ bge lbl_802824A4
+/* 80282490 0027E0F0 4E 80 00 20 */ blr
+lbl_80282494:
+/* 80282494 0027E0F4 2C 03 00 05 */ cmpwi r3, 5
+/* 80282498 0027E0F8 41 82 00 78 */ beq lbl_80282510
+/* 8028249C 0027E0FC 4C 80 00 20 */ bgelr
+/* 802824A0 0027E100 48 00 00 64 */ b lbl_80282504
+lbl_802824A4:
+/* 802824A4 0027E104 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802824A8 0027E108 39 00 00 00 */ li r8, 0
+/* 802824AC 0027E10C 80 04 00 00 */ lwz r0, 0(r4)
+/* 802824B0 0027E110 80 E3 00 B0 */ lwz r7, 0xb0(r3)
+/* 802824B4 0027E114 50 07 00 2E */ rlwimi r7, r0, 0, 0, 0x17
+/* 802824B8 0027E118 48 00 00 68 */ b lbl_80282520
+lbl_802824BC:
+/* 802824BC 0027E11C 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802824C0 0027E120 39 00 00 01 */ li r8, 1
+/* 802824C4 0027E124 80 04 00 00 */ lwz r0, 0(r4)
+/* 802824C8 0027E128 80 E3 00 B4 */ lwz r7, 0xb4(r3)
+/* 802824CC 0027E12C 50 07 00 2E */ rlwimi r7, r0, 0, 0, 0x17
+/* 802824D0 0027E130 48 00 00 50 */ b lbl_80282520
+lbl_802824D4:
+/* 802824D4 0027E134 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802824D8 0027E138 39 00 00 00 */ li r8, 0
+/* 802824DC 0027E13C 88 04 00 03 */ lbz r0, 3(r4)
+/* 802824E0 0027E140 80 E3 00 B0 */ lwz r7, 0xb0(r3)
+/* 802824E4 0027E144 50 07 06 3E */ rlwimi r7, r0, 0, 0x18, 0x1f
+/* 802824E8 0027E148 48 00 00 38 */ b lbl_80282520
+lbl_802824EC:
+/* 802824EC 0027E14C 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802824F0 0027E150 39 00 00 01 */ li r8, 1
+/* 802824F4 0027E154 88 04 00 03 */ lbz r0, 3(r4)
+/* 802824F8 0027E158 80 E3 00 B4 */ lwz r7, 0xb4(r3)
+/* 802824FC 0027E15C 50 07 06 3E */ rlwimi r7, r0, 0, 0x18, 0x1f
+/* 80282500 0027E160 48 00 00 20 */ b lbl_80282520
+lbl_80282504:
+/* 80282504 0027E164 80 E4 00 00 */ lwz r7, 0(r4)
+/* 80282508 0027E168 39 00 00 00 */ li r8, 0
+/* 8028250C 0027E16C 48 00 00 14 */ b lbl_80282520
+lbl_80282510:
+/* 80282510 0027E170 80 E4 00 00 */ lwz r7, 0(r4)
+/* 80282514 0027E174 39 00 00 01 */ li r8, 1
+/* 80282518 0027E178 48 00 00 08 */ b lbl_80282520
+/* 8028251C 0027E17C 4E 80 00 20 */ blr
+lbl_80282520:
+/* 80282520 0027E180 80 C2 A0 D0 */ lwz r6, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80282524 0027E184 38 60 04 00 */ li r3, 0x400
+/* 80282528 0027E188 55 00 10 3A */ slwi r0, r8, 2
+/* 8028252C 0027E18C 80 A6 05 FC */ lwz r5, 0x5fc(r6)
+/* 80282530 0027E190 7C 64 40 30 */ slw r4, r3, r8
+/* 80282534 0027E194 7C 66 02 14 */ add r3, r6, r0
+/* 80282538 0027E198 7C A0 23 78 */ or r0, r5, r4
+/* 8028253C 0027E19C 90 06 05 FC */ stw r0, 0x5fc(r6)
+/* 80282540 0027E1A0 90 E3 00 B0 */ stw r7, 0xb0(r3)
+/* 80282544 0027E1A4 4E 80 00 20 */ blr
+
+.global GXSetNumChans
+GXSetNumChans:
+/* 80282548 0027E1A8 80 82 A0 D0 */ lwz r4, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8028254C 0027E1AC 80 04 02 54 */ lwz r0, 0x254(r4)
+/* 80282550 0027E1B0 50 60 26 76 */ rlwimi r0, r3, 4, 0x19, 0x1b
+/* 80282554 0027E1B4 90 04 02 54 */ stw r0, 0x254(r4)
+/* 80282558 0027E1B8 80 04 05 FC */ lwz r0, 0x5fc(r4)
+/* 8028255C 0027E1BC 64 00 01 00 */ oris r0, r0, 0x100
+/* 80282560 0027E1C0 60 00 00 04 */ ori r0, r0, 4
+/* 80282564 0027E1C4 90 04 05 FC */ stw r0, 0x5fc(r4)
+/* 80282568 0027E1C8 4E 80 00 20 */ blr
+
+.global GXSetChanCtrl
+GXSetChanCtrl:
+/* 8028256C 0027E1CC 2C 09 00 00 */ cmpwi r9, 0
+/* 80282570 0027E1D0 39 40 00 00 */ li r10, 0
+/* 80282574 0027E1D4 50 8A 0F BC */ rlwimi r10, r4, 1, 0x1e, 0x1e
+/* 80282578 0027E1D8 54 6B 07 BE */ clrlwi r11, r3, 0x1e
+/* 8028257C 0027E1DC 50 CA 07 FE */ rlwimi r10, r6, 0, 0x1f, 0x1f
+/* 80282580 0027E1E0 50 AA 36 72 */ rlwimi r10, r5, 6, 0x19, 0x19
+/* 80282584 0027E1E4 40 82 00 08 */ bne lbl_8028258C
+/* 80282588 0027E1E8 39 00 00 00 */ li r8, 0
+lbl_8028258C:
+/* 8028258C 0027E1EC 20 A9 00 02 */ subfic r5, r9, 2
+/* 80282590 0027E1F0 38 89 FF FE */ addi r4, r9, -2
+/* 80282594 0027E1F4 7C 09 00 D0 */ neg r0, r9
+/* 80282598 0027E1F8 51 0A 3D F0 */ rlwimi r10, r8, 7, 0x17, 0x18
+/* 8028259C 0027E1FC 7C A4 23 78 */ or r4, r5, r4
+/* 802825A0 0027E200 80 A2 A0 D0 */ lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802825A4 0027E204 50 8A 55 AC */ rlwimi r10, r4, 0xa, 0x16, 0x16
+/* 802825A8 0027E208 7C 00 4B 78 */ or r0, r0, r9
+/* 802825AC 0027E20C 50 0A 5D 6A */ rlwimi r10, r0, 0xb, 0x15, 0x15
+/* 802825B0 0027E210 55 64 10 3A */ slwi r4, r11, 2
+/* 802825B4 0027E214 50 EA 16 BA */ rlwimi r10, r7, 2, 0x1a, 0x1d
+/* 802825B8 0027E218 38 00 10 00 */ li r0, 0x1000
+/* 802825BC 0027E21C 7C 85 22 14 */ add r4, r5, r4
+/* 802825C0 0027E220 2C 03 00 04 */ cmpwi r3, 4
+/* 802825C4 0027E224 50 EA 3C 68 */ rlwimi r10, r7, 7, 0x11, 0x14
+/* 802825C8 0027E228 7C 00 58 30 */ slw r0, r0, r11
+/* 802825CC 0027E22C 91 44 00 B8 */ stw r10, 0xb8(r4)
+/* 802825D0 0027E230 80 85 05 FC */ lwz r4, 0x5fc(r5)
+/* 802825D4 0027E234 7C 80 03 78 */ or r0, r4, r0
+/* 802825D8 0027E238 90 05 05 FC */ stw r0, 0x5fc(r5)
+/* 802825DC 0027E23C 40 82 00 18 */ bne lbl_802825F4
+/* 802825E0 0027E240 91 45 00 C0 */ stw r10, 0xc0(r5)
+/* 802825E4 0027E244 80 05 05 FC */ lwz r0, 0x5fc(r5)
+/* 802825E8 0027E248 60 00 50 00 */ ori r0, r0, 0x5000
+/* 802825EC 0027E24C 90 05 05 FC */ stw r0, 0x5fc(r5)
+/* 802825F0 0027E250 4E 80 00 20 */ blr
+lbl_802825F4:
+/* 802825F4 0027E254 2C 03 00 05 */ cmpwi r3, 5
+/* 802825F8 0027E258 4C 82 00 20 */ bnelr
+/* 802825FC 0027E25C 91 45 00 C4 */ stw r10, 0xc4(r5)
+/* 80282600 0027E260 80 05 05 FC */ lwz r0, 0x5fc(r5)
+/* 80282604 0027E264 60 00 A0 00 */ ori r0, r0, 0xa000
+/* 80282608 0027E268 90 05 05 FC */ stw r0, 0x5fc(r5)
+/* 8028260C 0027E26C 4E 80 00 20 */ blr
diff --git a/asm/SDK/GX/GXMisc.s b/asm/SDK/GX/GXMisc.s
new file mode 100644
index 0000000..197662d
--- /dev/null
+++ b/asm/SDK/GX/GXMisc.s
@@ -0,0 +1,657 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global GXSetMisc
+GXSetMisc:
+/* 80280618 0027C278 2C 03 00 02 */ cmpwi r3, 2
+/* 8028061C 0027C27C 41 82 00 58 */ beq lbl_80280674
+/* 80280620 0027C280 40 80 00 14 */ bge lbl_80280634
+/* 80280624 0027C284 2C 03 00 00 */ cmpwi r3, 0
+/* 80280628 0027C288 4D 82 00 20 */ beqlr
+/* 8028062C 0027C28C 40 80 00 14 */ bge lbl_80280640
+/* 80280630 0027C290 4E 80 00 20 */ blr
+lbl_80280634:
+/* 80280634 0027C294 2C 03 00 04 */ cmpwi r3, 4
+/* 80280638 0027C298 4C 80 00 20 */ bgelr
+/* 8028063C 0027C29C 48 00 00 50 */ b lbl_8028068C
+lbl_80280640:
+/* 80280640 0027C2A0 54 80 04 3F */ clrlwi. r0, r4, 0x10
+/* 80280644 0027C2A4 80 A2 A0 D0 */ lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80280648 0027C2A8 B0 85 00 04 */ sth r4, 4(r5)
+/* 8028064C 0027C2AC 7C 03 00 34 */ cntlzw r3, r0
+/* 80280650 0027C2B0 38 00 00 01 */ li r0, 1
+/* 80280654 0027C2B4 54 63 DC 3E */ rlwinm r3, r3, 0x1b, 0x10, 0x1f
+/* 80280658 0027C2B8 B0 65 00 00 */ sth r3, 0(r5)
+/* 8028065C 0027C2BC B0 05 00 02 */ sth r0, 2(r5)
+/* 80280660 0027C2C0 4D 82 00 20 */ beqlr
+/* 80280664 0027C2C4 80 05 05 FC */ lwz r0, 0x5fc(r5)
+/* 80280668 0027C2C8 60 00 00 08 */ ori r0, r0, 8
+/* 8028066C 0027C2CC 90 05 05 FC */ stw r0, 0x5fc(r5)
+/* 80280670 0027C2D0 4E 80 00 20 */ blr
+lbl_80280674:
+/* 80280674 0027C2D4 7C 04 00 D0 */ neg r0, r4
+/* 80280678 0027C2D8 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8028067C 0027C2DC 7C 00 23 78 */ or r0, r0, r4
+/* 80280680 0027C2E0 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 80280684 0027C2E4 98 03 05 F9 */ stb r0, 0x5f9(r3)
+/* 80280688 0027C2E8 4E 80 00 20 */ blr
+lbl_8028068C:
+/* 8028068C 0027C2EC 7C 04 00 D0 */ neg r0, r4
+/* 80280690 0027C2F0 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80280694 0027C2F4 7C 00 23 78 */ or r0, r0, r4
+/* 80280698 0027C2F8 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 8028069C 0027C2FC 98 03 05 FA */ stb r0, 0x5fa(r3)
+/* 802806A0 0027C300 4E 80 00 20 */ blr
+
+.global GXFlush
+GXFlush:
+/* 802806A4 0027C304 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802806A8 0027C308 7C 08 02 A6 */ mflr r0
+/* 802806AC 0027C30C 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802806B0 0027C310 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802806B4 0027C314 80 03 05 FC */ lwz r0, 0x5fc(r3)
+/* 802806B8 0027C318 2C 00 00 00 */ cmpwi r0, 0
+/* 802806BC 0027C31C 41 82 00 08 */ beq lbl_802806C4
+/* 802806C0 0027C320 48 00 08 11 */ bl __GXSetDirtyState
+lbl_802806C4:
+/* 802806C4 0027C324 38 00 00 00 */ li r0, 0
+/* 802806C8 0027C328 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 802806CC 0027C32C 90 03 80 00 */ stw r0, 0xCC008000@l(r3)
+/* 802806D0 0027C330 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 802806D4 0027C334 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 802806D8 0027C338 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 802806DC 0027C33C 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 802806E0 0027C340 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 802806E4 0027C344 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 802806E8 0027C348 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 802806EC 0027C34C 4B FE 7B 75 */ bl PPCSync
+/* 802806F0 0027C350 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802806F4 0027C354 7C 08 03 A6 */ mtlr r0
+/* 802806F8 0027C358 38 21 00 10 */ addi r1, r1, 0x10
+/* 802806FC 0027C35C 4E 80 00 20 */ blr
+
+.global GXResetWriteGatherPipe
+GXResetWriteGatherPipe:
+/* 80280700 0027C360 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80280704 0027C364 7C 08 02 A6 */ mflr r0
+/* 80280708 0027C368 90 01 00 14 */ stw r0, 0x14(r1)
+lbl_8028070C:
+/* 8028070C 0027C36C 4B FE 7B F9 */ bl PPCMfwpar
+/* 80280710 0027C370 54 60 07 FF */ clrlwi. r0, r3, 0x1f
+/* 80280714 0027C374 40 82 FF F8 */ bne lbl_8028070C
+/* 80280718 0027C378 3C 60 0C 01 */ lis r3, 0x0C008000@ha
+/* 8028071C 0027C37C 38 63 80 00 */ addi r3, r3, 0x0C008000@l
+/* 80280720 0027C380 4B FE 7B F1 */ bl PPCMtwpar
+/* 80280724 0027C384 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80280728 0027C388 7C 08 03 A6 */ mtlr r0
+/* 8028072C 0027C38C 38 21 00 10 */ addi r1, r1, 0x10
+/* 80280730 0027C390 4E 80 00 20 */ blr
+
+.global __GXAbort
+__GXAbort:
+/* 80280734 0027C394 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80280738 0027C398 7C 08 02 A6 */ mflr r0
+/* 8028073C 0027C39C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80280740 0027C3A0 39 61 00 20 */ addi r11, r1, 0x20
+/* 80280744 0027C3A4 4B F4 69 E5 */ bl _savegpr_27
+/* 80280748 0027C3A8 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8028074C 0027C3AC 88 03 05 FA */ lbz r0, 0x5fa(r3)
+/* 80280750 0027C3B0 2C 00 00 00 */ cmpwi r0, 0
+/* 80280754 0027C3B4 41 82 00 A0 */ beq lbl_802807F4
+/* 80280758 0027C3B8 4B FF E8 E9 */ bl __GXIsGPFifoReady
+/* 8028075C 0027C3BC 54 60 06 3F */ clrlwi. r0, r3, 0x18
+/* 80280760 0027C3C0 41 82 00 94 */ beq lbl_802807F4
+/* 80280764 0027C3C4 80 AD A9 9C */ lwz r5, lbl_8063FC5C-_SDA_BASE_(r13)
+/* 80280768 0027C3C8 A0 05 00 4E */ lhz r0, 0x4e(r5)
+lbl_8028076C:
+/* 8028076C 0027C3CC 7C 03 03 78 */ mr r3, r0
+/* 80280770 0027C3D0 A0 85 00 50 */ lhz r4, 0x50(r5)
+/* 80280774 0027C3D4 A0 05 00 4E */ lhz r0, 0x4e(r5)
+/* 80280778 0027C3D8 7C 00 18 40 */ cmplw r0, r3
+/* 8028077C 0027C3DC 40 82 FF F0 */ bne lbl_8028076C
+/* 80280780 0027C3E0 54 03 80 1E */ slwi r3, r0, 0x10
+/* 80280784 0027C3E4 38 00 00 00 */ li r0, 0
+/* 80280788 0027C3E8 7C 7B 23 78 */ or r27, r3, r4
+/* 8028078C 0027C3EC 3B A0 00 08 */ li r29, 8
+/* 80280790 0027C3F0 6C 1C 80 00 */ xoris r28, r0, 0x8000
+lbl_80280794:
+/* 80280794 0027C3F4 4B FF 20 25 */ bl OSGetTime
+/* 80280798 0027C3F8 7C 9F 23 78 */ mr r31, r4
+/* 8028079C 0027C3FC 7C 7E 1B 78 */ mr r30, r3
+lbl_802807A0:
+/* 802807A0 0027C400 4B FF 20 19 */ bl OSGetTime
+/* 802807A4 0027C404 7C 9F 20 10 */ subfc r4, r31, r4
+/* 802807A8 0027C408 7C 1E 19 10 */ subfe r0, r30, r3
+/* 802807AC 0027C40C 6C 03 80 00 */ xoris r3, r0, 0x8000
+/* 802807B0 0027C410 7C 04 E8 10 */ subfc r0, r4, r29
+/* 802807B4 0027C414 7C 63 E1 10 */ subfe r3, r3, r28
+/* 802807B8 0027C418 7C 7C E1 10 */ subfe r3, r28, r28
+/* 802807BC 0027C41C 7C 63 00 D1 */ neg. r3, r3
+/* 802807C0 0027C420 41 82 FF E0 */ beq lbl_802807A0
+/* 802807C4 0027C424 80 AD A9 9C */ lwz r5, lbl_8063FC5C-_SDA_BASE_(r13)
+/* 802807C8 0027C428 A0 05 00 4E */ lhz r0, 0x4e(r5)
+lbl_802807CC:
+/* 802807CC 0027C42C 7C 03 03 78 */ mr r3, r0
+/* 802807D0 0027C430 A0 85 00 50 */ lhz r4, 0x50(r5)
+/* 802807D4 0027C434 A0 05 00 4E */ lhz r0, 0x4e(r5)
+/* 802807D8 0027C438 7C 00 18 40 */ cmplw r0, r3
+/* 802807DC 0027C43C 40 82 FF F0 */ bne lbl_802807CC
+/* 802807E0 0027C440 54 00 80 1E */ slwi r0, r0, 0x10
+/* 802807E4 0027C444 7C 00 23 78 */ or r0, r0, r4
+/* 802807E8 0027C448 7C 00 D8 40 */ cmplw r0, r27
+/* 802807EC 0027C44C 7C 1B 03 78 */ mr r27, r0
+/* 802807F0 0027C450 40 82 FF A4 */ bne lbl_80280794
+lbl_802807F4:
+/* 802807F4 0027C454 38 00 00 01 */ li r0, 1
+/* 802807F8 0027C458 3C 60 CC 00 */ lis r3, 0xCC003018@ha
+/* 802807FC 0027C45C 90 03 30 18 */ stw r0, 0xCC003018@l(r3)
+/* 80280800 0027C460 4B FF 1F B9 */ bl OSGetTime
+/* 80280804 0027C464 38 00 00 00 */ li r0, 0
+/* 80280808 0027C468 7C 9F 23 78 */ mr r31, r4
+/* 8028080C 0027C46C 7C 7E 1B 78 */ mr r30, r3
+/* 80280810 0027C470 3B A0 00 32 */ li r29, 0x32
+/* 80280814 0027C474 6C 1C 80 00 */ xoris r28, r0, 0x8000
+lbl_80280818:
+/* 80280818 0027C478 4B FF 1F A1 */ bl OSGetTime
+/* 8028081C 0027C47C 7C 9F 20 10 */ subfc r4, r31, r4
+/* 80280820 0027C480 7C 1E 19 10 */ subfe r0, r30, r3
+/* 80280824 0027C484 6C 03 80 00 */ xoris r3, r0, 0x8000
+/* 80280828 0027C488 7C 04 E8 10 */ subfc r0, r4, r29
+/* 8028082C 0027C48C 7C 63 E1 10 */ subfe r3, r3, r28
+/* 80280830 0027C490 7C 7C E1 10 */ subfe r3, r28, r28
+/* 80280834 0027C494 7C 63 00 D1 */ neg. r3, r3
+/* 80280838 0027C498 41 82 FF E0 */ beq lbl_80280818
+/* 8028083C 0027C49C 3B C0 00 00 */ li r30, 0
+/* 80280840 0027C4A0 3C 60 CC 00 */ lis r3, 0xCC003018@ha
+/* 80280844 0027C4A4 93 C3 30 18 */ stw r30, 0xCC003018@l(r3)
+/* 80280848 0027C4A8 4B FF 1F 71 */ bl OSGetTime
+/* 8028084C 0027C4AC 6F DF 80 00 */ xoris r31, r30, 0x8000
+/* 80280850 0027C4B0 7C 9C 23 78 */ mr r28, r4
+/* 80280854 0027C4B4 7C 7D 1B 78 */ mr r29, r3
+/* 80280858 0027C4B8 3B C0 00 05 */ li r30, 5
+lbl_8028085C:
+/* 8028085C 0027C4BC 4B FF 1F 5D */ bl OSGetTime
+/* 80280860 0027C4C0 7C 9C 20 10 */ subfc r4, r28, r4
+/* 80280864 0027C4C4 7C 1D 19 10 */ subfe r0, r29, r3
+/* 80280868 0027C4C8 6C 03 80 00 */ xoris r3, r0, 0x8000
+/* 8028086C 0027C4CC 7C 04 F0 10 */ subfc r0, r4, r30
+/* 80280870 0027C4D0 7C 63 F9 10 */ subfe r3, r3, r31
+/* 80280874 0027C4D4 7C 7F F9 10 */ subfe r3, r31, r31
+/* 80280878 0027C4D8 7C 63 00 D1 */ neg. r3, r3
+/* 8028087C 0027C4DC 41 82 FF E0 */ beq lbl_8028085C
+/* 80280880 0027C4E0 39 61 00 20 */ addi r11, r1, 0x20
+/* 80280884 0027C4E4 4B F4 68 F1 */ bl _restgpr_27
+/* 80280888 0027C4E8 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8028088C 0027C4EC 7C 08 03 A6 */ mtlr r0
+/* 80280890 0027C4F0 38 21 00 20 */ addi r1, r1, 0x20
+/* 80280894 0027C4F4 4E 80 00 20 */ blr
+
+.global GXAbortFrame
+GXAbortFrame:
+/* 80280898 0027C4F8 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8028089C 0027C4FC 7C 08 02 A6 */ mflr r0
+/* 802808A0 0027C500 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802808A4 0027C504 39 61 00 20 */ addi r11, r1, 0x20
+/* 802808A8 0027C508 4B F4 68 7D */ bl _savegpr_26
+/* 802808AC 0027C50C 83 E2 A0 D0 */ lwz r31, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802808B0 0027C510 88 1F 05 FA */ lbz r0, 0x5fa(r31)
+/* 802808B4 0027C514 2C 00 00 00 */ cmpwi r0, 0
+/* 802808B8 0027C518 41 82 00 A0 */ beq lbl_80280958
+/* 802808BC 0027C51C 4B FF E7 85 */ bl __GXIsGPFifoReady
+/* 802808C0 0027C520 54 60 06 3F */ clrlwi. r0, r3, 0x18
+/* 802808C4 0027C524 41 82 00 94 */ beq lbl_80280958
+/* 802808C8 0027C528 80 AD A9 9C */ lwz r5, lbl_8063FC5C-_SDA_BASE_(r13)
+/* 802808CC 0027C52C A0 65 00 4E */ lhz r3, 0x4e(r5)
+lbl_802808D0:
+/* 802808D0 0027C530 7C 60 1B 78 */ mr r0, r3
+/* 802808D4 0027C534 A0 85 00 50 */ lhz r4, 0x50(r5)
+/* 802808D8 0027C538 A0 65 00 4E */ lhz r3, 0x4e(r5)
+/* 802808DC 0027C53C 7C 03 00 40 */ cmplw r3, r0
+/* 802808E0 0027C540 40 82 FF F0 */ bne lbl_802808D0
+/* 802808E4 0027C544 54 63 80 1E */ slwi r3, r3, 0x10
+/* 802808E8 0027C548 38 00 00 00 */ li r0, 0
+/* 802808EC 0027C54C 7C 7A 23 78 */ or r26, r3, r4
+/* 802808F0 0027C550 3B 80 00 08 */ li r28, 8
+/* 802808F4 0027C554 6C 1B 80 00 */ xoris r27, r0, 0x8000
+lbl_802808F8:
+/* 802808F8 0027C558 4B FF 1E C1 */ bl OSGetTime
+/* 802808FC 0027C55C 7C 9E 23 78 */ mr r30, r4
+/* 80280900 0027C560 7C 7D 1B 78 */ mr r29, r3
+lbl_80280904:
+/* 80280904 0027C564 4B FF 1E B5 */ bl OSGetTime
+/* 80280908 0027C568 7C 9E 20 10 */ subfc r4, r30, r4
+/* 8028090C 0027C56C 7C 1D 19 10 */ subfe r0, r29, r3
+/* 80280910 0027C570 6C 03 80 00 */ xoris r3, r0, 0x8000
+/* 80280914 0027C574 7C 04 E0 10 */ subfc r0, r4, r28
+/* 80280918 0027C578 7C 63 D9 10 */ subfe r3, r3, r27
+/* 8028091C 0027C57C 7C 7B D9 10 */ subfe r3, r27, r27
+/* 80280920 0027C580 7C 63 00 D1 */ neg. r3, r3
+/* 80280924 0027C584 41 82 FF E0 */ beq lbl_80280904
+/* 80280928 0027C588 80 AD A9 9C */ lwz r5, lbl_8063FC5C-_SDA_BASE_(r13)
+/* 8028092C 0027C58C A0 85 00 4E */ lhz r4, 0x4e(r5)
+lbl_80280930:
+/* 80280930 0027C590 7C 80 23 78 */ mr r0, r4
+/* 80280934 0027C594 A0 65 00 50 */ lhz r3, 0x50(r5)
+/* 80280938 0027C598 A0 85 00 4E */ lhz r4, 0x4e(r5)
+/* 8028093C 0027C59C 7C 04 00 40 */ cmplw r4, r0
+/* 80280940 0027C5A0 40 82 FF F0 */ bne lbl_80280930
+/* 80280944 0027C5A4 54 80 80 1E */ slwi r0, r4, 0x10
+/* 80280948 0027C5A8 7C 00 1B 78 */ or r0, r0, r3
+/* 8028094C 0027C5AC 7C 00 D0 40 */ cmplw r0, r26
+/* 80280950 0027C5B0 7C 1A 03 78 */ mr r26, r0
+/* 80280954 0027C5B4 40 82 FF A4 */ bne lbl_802808F8
+lbl_80280958:
+/* 80280958 0027C5B8 38 00 00 01 */ li r0, 1
+/* 8028095C 0027C5BC 3C 60 CC 00 */ lis r3, 0xCC003018@ha
+/* 80280960 0027C5C0 90 03 30 18 */ stw r0, 0xCC003018@l(r3)
+/* 80280964 0027C5C4 4B FF 1E 55 */ bl OSGetTime
+/* 80280968 0027C5C8 38 00 00 00 */ li r0, 0
+/* 8028096C 0027C5CC 7C 9E 23 78 */ mr r30, r4
+/* 80280970 0027C5D0 7C 7D 1B 78 */ mr r29, r3
+/* 80280974 0027C5D4 3B 80 00 32 */ li r28, 0x32
+/* 80280978 0027C5D8 6C 1B 80 00 */ xoris r27, r0, 0x8000
+lbl_8028097C:
+/* 8028097C 0027C5DC 4B FF 1E 3D */ bl OSGetTime
+/* 80280980 0027C5E0 7C 9E 20 10 */ subfc r4, r30, r4
+/* 80280984 0027C5E4 7C 1D 19 10 */ subfe r0, r29, r3
+/* 80280988 0027C5E8 6C 03 80 00 */ xoris r3, r0, 0x8000
+/* 8028098C 0027C5EC 7C 04 E0 10 */ subfc r0, r4, r28
+/* 80280990 0027C5F0 7C 63 D9 10 */ subfe r3, r3, r27
+/* 80280994 0027C5F4 7C 7B D9 10 */ subfe r3, r27, r27
+/* 80280998 0027C5F8 7C 63 00 D1 */ neg. r3, r3
+/* 8028099C 0027C5FC 41 82 FF E0 */ beq lbl_8028097C
+/* 802809A0 0027C600 3B A0 00 00 */ li r29, 0
+/* 802809A4 0027C604 3C 60 CC 00 */ lis r3, 0xCC003018@ha
+/* 802809A8 0027C608 93 A3 30 18 */ stw r29, 0xCC003018@l(r3)
+/* 802809AC 0027C60C 4B FF 1E 0D */ bl OSGetTime
+/* 802809B0 0027C610 6F BE 80 00 */ xoris r30, r29, 0x8000
+/* 802809B4 0027C614 7C 9B 23 78 */ mr r27, r4
+/* 802809B8 0027C618 7C 7C 1B 78 */ mr r28, r3
+/* 802809BC 0027C61C 3B A0 00 05 */ li r29, 5
+lbl_802809C0:
+/* 802809C0 0027C620 4B FF 1D F9 */ bl OSGetTime
+/* 802809C4 0027C624 7C 9B 20 10 */ subfc r4, r27, r4
+/* 802809C8 0027C628 7C 1C 19 10 */ subfe r0, r28, r3
+/* 802809CC 0027C62C 6C 03 80 00 */ xoris r3, r0, 0x8000
+/* 802809D0 0027C630 7C 04 E8 10 */ subfc r0, r4, r29
+/* 802809D4 0027C634 7C 63 F1 10 */ subfe r3, r3, r30
+/* 802809D8 0027C638 7C 7E F1 10 */ subfe r3, r30, r30
+/* 802809DC 0027C63C 7C 63 00 D1 */ neg. r3, r3
+/* 802809E0 0027C640 41 82 FF E0 */ beq lbl_802809C0
+/* 802809E4 0027C644 4B FF E6 5D */ bl __GXIsGPFifoReady
+/* 802809E8 0027C648 54 60 06 3F */ clrlwi. r0, r3, 0x18
+/* 802809EC 0027C64C 41 82 00 48 */ beq lbl_80280A34
+/* 802809F0 0027C650 4B FF E8 65 */ bl __GXCleanGPFifo
+/* 802809F4 0027C654 4B FF CE B5 */ bl __GXInitRevisionBits
+/* 802809F8 0027C658 38 00 00 00 */ li r0, 0
+/* 802809FC 0027C65C 90 1F 05 FC */ stw r0, 0x5fc(r31)
+/* 80280A00 0027C660 48 00 00 08 */ b lbl_80280A08
+/* 80280A04 0027C664 48 00 04 CD */ bl __GXSetDirtyState
+lbl_80280A08:
+/* 80280A08 0027C668 38 00 00 00 */ li r0, 0
+/* 80280A0C 0027C66C 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80280A10 0027C670 90 03 80 00 */ stw r0, 0xCC008000@l(r3)
+/* 80280A14 0027C674 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 80280A18 0027C678 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 80280A1C 0027C67C 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 80280A20 0027C680 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 80280A24 0027C684 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 80280A28 0027C688 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 80280A2C 0027C68C 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 80280A30 0027C690 4B FE 78 31 */ bl PPCSync
+lbl_80280A34:
+/* 80280A34 0027C694 39 61 00 20 */ addi r11, r1, 0x20
+/* 80280A38 0027C698 4B F4 67 39 */ bl _restgpr_26
+/* 80280A3C 0027C69C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80280A40 0027C6A0 7C 08 03 A6 */ mtlr r0
+/* 80280A44 0027C6A4 38 21 00 20 */ addi r1, r1, 0x20
+/* 80280A48 0027C6A8 4E 80 00 20 */ blr
+
+.global GXSetDrawSync
+GXSetDrawSync:
+/* 80280A4C 0027C6AC 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80280A50 0027C6B0 7C 08 02 A6 */ mflr r0
+/* 80280A54 0027C6B4 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80280A58 0027C6B8 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80280A5C 0027C6BC 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80280A60 0027C6C0 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 80280A64 0027C6C4 7C 7D 1B 78 */ mr r29, r3
+/* 80280A68 0027C6C8 4B FE DC F5 */ bl OSDisableInterrupts
+/* 80280A6C 0027C6CC 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 80280A70 0027C6D0 38 A0 00 61 */ li r5, 0x61
+/* 80280A74 0027C6D4 98 A4 80 00 */ stb r5, 0xCC008000@l(r4)
+/* 80280A78 0027C6D8 67 A6 48 00 */ oris r6, r29, 0x4800
+/* 80280A7C 0027C6DC 38 00 00 47 */ li r0, 0x47
+/* 80280A80 0027C6E0 83 C2 A0 D0 */ lwz r30, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80280A84 0027C6E4 90 C4 80 00 */ stw r6, -0x8000(r4)
+/* 80280A88 0027C6E8 53 A6 04 3E */ rlwimi r6, r29, 0, 0x10, 0x1f
+/* 80280A8C 0027C6EC 50 06 C0 0E */ rlwimi r6, r0, 0x18, 0, 7
+/* 80280A90 0027C6F0 7C 7D 1B 78 */ mr r29, r3
+/* 80280A94 0027C6F4 98 A4 80 00 */ stb r5, -0x8000(r4)
+/* 80280A98 0027C6F8 90 C4 80 00 */ stw r6, -0x8000(r4)
+/* 80280A9C 0027C6FC 80 1E 05 FC */ lwz r0, 0x5fc(r30)
+/* 80280AA0 0027C700 2C 00 00 00 */ cmpwi r0, 0
+/* 80280AA4 0027C704 41 82 00 08 */ beq lbl_80280AAC
+/* 80280AA8 0027C708 48 00 04 29 */ bl __GXSetDirtyState
+lbl_80280AAC:
+/* 80280AAC 0027C70C 3B E0 00 00 */ li r31, 0
+/* 80280AB0 0027C710 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80280AB4 0027C714 93 E3 80 00 */ stw r31, 0xCC008000@l(r3)
+/* 80280AB8 0027C718 93 E3 80 00 */ stw r31, -0x8000(r3)
+/* 80280ABC 0027C71C 93 E3 80 00 */ stw r31, -0x8000(r3)
+/* 80280AC0 0027C720 93 E3 80 00 */ stw r31, -0x8000(r3)
+/* 80280AC4 0027C724 93 E3 80 00 */ stw r31, -0x8000(r3)
+/* 80280AC8 0027C728 93 E3 80 00 */ stw r31, -0x8000(r3)
+/* 80280ACC 0027C72C 93 E3 80 00 */ stw r31, -0x8000(r3)
+/* 80280AD0 0027C730 93 E3 80 00 */ stw r31, -0x8000(r3)
+/* 80280AD4 0027C734 4B FE 77 8D */ bl PPCSync
+/* 80280AD8 0027C738 7F A3 EB 78 */ mr r3, r29
+/* 80280ADC 0027C73C 4B FE DC A9 */ bl OSRestoreInterrupts
+/* 80280AE0 0027C740 B3 FE 00 02 */ sth r31, 2(r30)
+/* 80280AE4 0027C744 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80280AE8 0027C748 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 80280AEC 0027C74C 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 80280AF0 0027C750 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80280AF4 0027C754 7C 08 03 A6 */ mtlr r0
+/* 80280AF8 0027C758 38 21 00 20 */ addi r1, r1, 0x20
+/* 80280AFC 0027C75C 4E 80 00 20 */ blr
+
+.global GXReadDrawSync
+GXReadDrawSync:
+/* 80280B00 0027C760 80 6D A9 98 */ lwz r3, lbl_8063FC58-_SDA_BASE_(r13)
+/* 80280B04 0027C764 A0 63 00 0E */ lhz r3, 0xe(r3)
+/* 80280B08 0027C768 4E 80 00 20 */ blr
+
+.global GXSetDrawDone
+GXSetDrawDone:
+/* 80280B0C 0027C76C 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80280B10 0027C770 7C 08 02 A6 */ mflr r0
+/* 80280B14 0027C774 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80280B18 0027C778 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80280B1C 0027C77C 93 C1 00 08 */ stw r30, 8(r1)
+/* 80280B20 0027C780 4B FE DC 3D */ bl OSDisableInterrupts
+/* 80280B24 0027C784 3C A0 CC 01 */ lis r5, 0xCC008000@ha
+/* 80280B28 0027C788 38 00 00 61 */ li r0, 0x61
+/* 80280B2C 0027C78C 3C 80 45 00 */ lis r4, 0x45000002@ha
+/* 80280B30 0027C790 98 05 80 00 */ stb r0, 0xCC008000@l(r5)
+/* 80280B34 0027C794 38 04 00 02 */ addi r0, r4, 0x45000002@l
+/* 80280B38 0027C798 80 82 A0 D0 */ lwz r4, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80280B3C 0027C79C 90 05 80 00 */ stw r0, -0x8000(r5)
+/* 80280B40 0027C7A0 7C 7E 1B 78 */ mr r30, r3
+/* 80280B44 0027C7A4 80 04 05 FC */ lwz r0, 0x5fc(r4)
+/* 80280B48 0027C7A8 2C 00 00 00 */ cmpwi r0, 0
+/* 80280B4C 0027C7AC 41 82 00 08 */ beq lbl_80280B54
+/* 80280B50 0027C7B0 48 00 03 81 */ bl __GXSetDirtyState
+lbl_80280B54:
+/* 80280B54 0027C7B4 3B E0 00 00 */ li r31, 0
+/* 80280B58 0027C7B8 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80280B5C 0027C7BC 93 E3 80 00 */ stw r31, 0xCC008000@l(r3)
+/* 80280B60 0027C7C0 93 E3 80 00 */ stw r31, -0x8000(r3)
+/* 80280B64 0027C7C4 93 E3 80 00 */ stw r31, -0x8000(r3)
+/* 80280B68 0027C7C8 93 E3 80 00 */ stw r31, -0x8000(r3)
+/* 80280B6C 0027C7CC 93 E3 80 00 */ stw r31, -0x8000(r3)
+/* 80280B70 0027C7D0 93 E3 80 00 */ stw r31, -0x8000(r3)
+/* 80280B74 0027C7D4 93 E3 80 00 */ stw r31, -0x8000(r3)
+/* 80280B78 0027C7D8 93 E3 80 00 */ stw r31, -0x8000(r3)
+/* 80280B7C 0027C7DC 4B FE 76 E5 */ bl PPCSync
+/* 80280B80 0027C7E0 9B ED A9 E0 */ stb r31, lbl_8063FCA0-_SDA_BASE_(r13)
+/* 80280B84 0027C7E4 7F C3 F3 78 */ mr r3, r30
+/* 80280B88 0027C7E8 4B FE DB FD */ bl OSRestoreInterrupts
+/* 80280B8C 0027C7EC 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80280B90 0027C7F0 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80280B94 0027C7F4 83 C1 00 08 */ lwz r30, 8(r1)
+/* 80280B98 0027C7F8 7C 08 03 A6 */ mtlr r0
+/* 80280B9C 0027C7FC 38 21 00 10 */ addi r1, r1, 0x10
+/* 80280BA0 0027C800 4E 80 00 20 */ blr
+
+.global GXPixModeSync
+GXPixModeSync:
+/* 80280BA4 0027C804 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 80280BA8 0027C808 38 00 00 61 */ li r0, 0x61
+/* 80280BAC 0027C80C 98 04 80 00 */ stb r0, 0xCC008000@l(r4)
+/* 80280BB0 0027C810 38 00 00 00 */ li r0, 0
+/* 80280BB4 0027C814 80 A2 A0 D0 */ lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80280BB8 0027C818 80 65 02 2C */ lwz r3, 0x22c(r5)
+/* 80280BBC 0027C81C 90 64 80 00 */ stw r3, -0x8000(r4)
+/* 80280BC0 0027C820 B0 05 00 02 */ sth r0, 2(r5)
+/* 80280BC4 0027C824 4E 80 00 20 */ blr
+
+.global GXTexModeSync
+GXTexModeSync:
+/* 80280BC8 0027C828 3C A0 CC 01 */ lis r5, 0xCC008000@ha
+/* 80280BCC 0027C82C 38 00 00 61 */ li r0, 0x61
+/* 80280BD0 0027C830 98 05 80 00 */ stb r0, 0xCC008000@l(r5)
+/* 80280BD4 0027C834 3C 80 63 00 */ lis r4, 0x6300
+/* 80280BD8 0027C838 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80280BDC 0027C83C 38 00 00 00 */ li r0, 0
+/* 80280BE0 0027C840 90 85 80 00 */ stw r4, -0x8000(r5)
+/* 80280BE4 0027C844 B0 03 00 02 */ sth r0, 2(r3)
+/* 80280BE8 0027C848 4E 80 00 20 */ blr
+
+.global GXPokeAlphaMode
+GXPokeAlphaMode:
+/* 80280BEC 0027C84C 80 AD A9 98 */ lwz r5, lbl_8063FC58-_SDA_BASE_(r13)
+/* 80280BF0 0027C850 50 64 40 2E */ rlwimi r4, r3, 8, 0, 0x17
+/* 80280BF4 0027C854 B0 85 00 06 */ sth r4, 6(r5)
+/* 80280BF8 0027C858 4E 80 00 20 */ blr
+
+.global GXPokeAlphaRead
+GXPokeAlphaRead:
+/* 80280BFC 0027C85C 38 00 00 00 */ li r0, 0
+/* 80280C00 0027C860 80 8D A9 98 */ lwz r4, lbl_8063FC58-_SDA_BASE_(r13)
+/* 80280C04 0027C864 50 60 07 BE */ rlwimi r0, r3, 0, 0x1e, 0x1f
+/* 80280C08 0027C868 60 00 00 04 */ ori r0, r0, 4
+/* 80280C0C 0027C86C B0 04 00 08 */ sth r0, 8(r4)
+/* 80280C10 0027C870 4E 80 00 20 */ blr
+
+.global GXPokeAlphaUpdate
+GXPokeAlphaUpdate:
+/* 80280C14 0027C874 80 8D A9 98 */ lwz r4, lbl_8063FC58-_SDA_BASE_(r13)
+/* 80280C18 0027C878 A0 04 00 02 */ lhz r0, 2(r4)
+/* 80280C1C 0027C87C 50 60 26 F6 */ rlwimi r0, r3, 4, 0x1b, 0x1b
+/* 80280C20 0027C880 B0 04 00 02 */ sth r0, 2(r4)
+/* 80280C24 0027C884 4E 80 00 20 */ blr
+
+.global GXPokeBlendMode
+GXPokeBlendMode:
+/* 80280C28 0027C888 80 ED A9 98 */ lwz r7, lbl_8063FC58-_SDA_BASE_(r13)
+/* 80280C2C 0027C88C 2C 03 00 01 */ cmpwi r3, 1
+/* 80280C30 0027C890 38 00 00 00 */ li r0, 0
+/* 80280C34 0027C894 A1 27 00 02 */ lhz r9, 2(r7)
+/* 80280C38 0027C898 41 82 00 0C */ beq lbl_80280C44
+/* 80280C3C 0027C89C 2C 03 00 03 */ cmpwi r3, 3
+/* 80280C40 0027C8A0 40 82 00 08 */ bne lbl_80280C48
+lbl_80280C44:
+/* 80280C44 0027C8A4 38 00 00 01 */ li r0, 1
+lbl_80280C48:
+/* 80280C48 0027C8A8 38 E3 FF FD */ addi r7, r3, -3
+/* 80280C4C 0027C8AC 50 09 07 FE */ rlwimi r9, r0, 0, 0x1f, 0x1f
+/* 80280C50 0027C8B0 38 03 FF FE */ addi r0, r3, -2
+/* 80280C54 0027C8B4 80 6D A9 98 */ lwz r3, lbl_8063FC58-_SDA_BASE_(r13)
+/* 80280C58 0027C8B8 7C E8 00 34 */ cntlzw r8, r7
+/* 80280C5C 0027C8BC 7C 07 00 34 */ cntlzw r7, r0
+/* 80280C60 0027C8C0 38 00 00 41 */ li r0, 0x41
+/* 80280C64 0027C8C4 51 09 35 28 */ rlwimi r9, r8, 6, 0x14, 0x14
+/* 80280C68 0027C8C8 50 E9 E7 BC */ rlwimi r9, r7, 0x1c, 0x1e, 0x1e
+/* 80280C6C 0027C8CC 50 C9 64 26 */ rlwimi r9, r6, 0xc, 0x10, 0x13
+/* 80280C70 0027C8D0 50 89 45 6E */ rlwimi r9, r4, 8, 0x15, 0x17
+/* 80280C74 0027C8D4 50 A9 2E 34 */ rlwimi r9, r5, 5, 0x18, 0x1a
+/* 80280C78 0027C8D8 50 09 C0 0E */ rlwimi r9, r0, 0x18, 0, 7
+/* 80280C7C 0027C8DC B1 23 00 02 */ sth r9, 2(r3)
+/* 80280C80 0027C8E0 4E 80 00 20 */ blr
+
+.global GXPokeColorUpdate
+GXPokeColorUpdate:
+/* 80280C84 0027C8E4 80 8D A9 98 */ lwz r4, lbl_8063FC58-_SDA_BASE_(r13)
+/* 80280C88 0027C8E8 A0 04 00 02 */ lhz r0, 2(r4)
+/* 80280C8C 0027C8EC 50 60 1F 38 */ rlwimi r0, r3, 3, 0x1c, 0x1c
+/* 80280C90 0027C8F0 B0 04 00 02 */ sth r0, 2(r4)
+/* 80280C94 0027C8F4 4E 80 00 20 */ blr
+
+.global GXPokeDstAlpha
+GXPokeDstAlpha:
+/* 80280C98 0027C8F8 80 AD A9 98 */ lwz r5, lbl_8063FC58-_SDA_BASE_(r13)
+/* 80280C9C 0027C8FC 38 00 00 00 */ li r0, 0
+/* 80280CA0 0027C900 50 80 06 3E */ rlwimi r0, r4, 0, 0x18, 0x1f
+/* 80280CA4 0027C904 50 60 45 EE */ rlwimi r0, r3, 8, 0x17, 0x17
+/* 80280CA8 0027C908 B0 05 00 04 */ sth r0, 4(r5)
+/* 80280CAC 0027C90C 4E 80 00 20 */ blr
+
+.global GXPokeDither
+GXPokeDither:
+/* 80280CB0 0027C910 80 8D A9 98 */ lwz r4, lbl_8063FC58-_SDA_BASE_(r13)
+/* 80280CB4 0027C914 A0 04 00 02 */ lhz r0, 2(r4)
+/* 80280CB8 0027C918 50 60 17 7A */ rlwimi r0, r3, 2, 0x1d, 0x1d
+/* 80280CBC 0027C91C B0 04 00 02 */ sth r0, 2(r4)
+/* 80280CC0 0027C920 4E 80 00 20 */ blr
+
+.global GXPokeZMode
+GXPokeZMode:
+/* 80280CC4 0027C924 80 CD A9 98 */ lwz r6, lbl_8063FC58-_SDA_BASE_(r13)
+/* 80280CC8 0027C928 38 00 00 00 */ li r0, 0
+/* 80280CCC 0027C92C 50 60 07 FE */ rlwimi r0, r3, 0, 0x1f, 0x1f
+/* 80280CD0 0027C930 50 80 0F 3C */ rlwimi r0, r4, 1, 0x1c, 0x1e
+/* 80280CD4 0027C934 50 A0 26 F6 */ rlwimi r0, r5, 4, 0x1b, 0x1b
+/* 80280CD8 0027C938 B0 06 00 00 */ sth r0, 0(r6)
+/* 80280CDC 0027C93C 4E 80 00 20 */ blr
+
+.global GXSetDrawSyncCallback
+GXSetDrawSyncCallback:
+/* 80280CE0 0027C940 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80280CE4 0027C944 7C 08 02 A6 */ mflr r0
+/* 80280CE8 0027C948 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80280CEC 0027C94C 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80280CF0 0027C950 93 C1 00 08 */ stw r30, 8(r1)
+/* 80280CF4 0027C954 7C 7E 1B 78 */ mr r30, r3
+/* 80280CF8 0027C958 83 ED A9 E8 */ lwz r31, lbl_8063FCA8-_SDA_BASE_(r13)
+/* 80280CFC 0027C95C 4B FE DA 61 */ bl OSDisableInterrupts
+/* 80280D00 0027C960 93 CD A9 E8 */ stw r30, lbl_8063FCA8-_SDA_BASE_(r13)
+/* 80280D04 0027C964 4B FE DA 81 */ bl OSRestoreInterrupts
+/* 80280D08 0027C968 7F E3 FB 78 */ mr r3, r31
+/* 80280D0C 0027C96C 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80280D10 0027C970 83 C1 00 08 */ lwz r30, 8(r1)
+/* 80280D14 0027C974 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80280D18 0027C978 7C 08 03 A6 */ mtlr r0
+/* 80280D1C 0027C97C 38 21 00 10 */ addi r1, r1, 0x10
+/* 80280D20 0027C980 4E 80 00 20 */ blr
+
+.global GXTokenInterruptHandler
+GXTokenInterruptHandler:
+/* 80280D24 0027C984 94 21 FD 20 */ stwu r1, -0x2e0(r1)
+/* 80280D28 0027C988 7C 08 02 A6 */ mflr r0
+/* 80280D2C 0027C98C 90 01 02 E4 */ stw r0, 0x2e4(r1)
+/* 80280D30 0027C990 93 E1 02 DC */ stw r31, 0x2dc(r1)
+/* 80280D34 0027C994 93 C1 02 D8 */ stw r30, 0x2d8(r1)
+/* 80280D38 0027C998 7C 9E 23 78 */ mr r30, r4
+/* 80280D3C 0027C99C 80 0D A9 E8 */ lwz r0, lbl_8063FCA8-_SDA_BASE_(r13)
+/* 80280D40 0027C9A0 80 6D A9 98 */ lwz r3, lbl_8063FC58-_SDA_BASE_(r13)
+/* 80280D44 0027C9A4 2C 00 00 00 */ cmpwi r0, 0
+/* 80280D48 0027C9A8 A3 E3 00 0E */ lhz r31, 0xe(r3)
+/* 80280D4C 0027C9AC 41 82 00 34 */ beq lbl_80280D80
+/* 80280D50 0027C9B0 38 61 00 08 */ addi r3, r1, 8
+/* 80280D54 0027C9B4 4B FE A3 3D */ bl OSClearContext
+/* 80280D58 0027C9B8 38 61 00 08 */ addi r3, r1, 8
+/* 80280D5C 0027C9BC 4B FE A1 0D */ bl OSSetCurrentContext
+/* 80280D60 0027C9C0 81 8D A9 E8 */ lwz r12, lbl_8063FCA8-_SDA_BASE_(r13)
+/* 80280D64 0027C9C4 7F E3 FB 78 */ mr r3, r31
+/* 80280D68 0027C9C8 7D 89 03 A6 */ mtctr r12
+/* 80280D6C 0027C9CC 4E 80 04 21 */ bctrl
+/* 80280D70 0027C9D0 38 61 00 08 */ addi r3, r1, 8
+/* 80280D74 0027C9D4 4B FE A3 1D */ bl OSClearContext
+/* 80280D78 0027C9D8 7F C3 F3 78 */ mr r3, r30
+/* 80280D7C 0027C9DC 4B FE A0 ED */ bl OSSetCurrentContext
+lbl_80280D80:
+/* 80280D80 0027C9E0 80 6D A9 98 */ lwz r3, lbl_8063FC58-_SDA_BASE_(r13)
+/* 80280D84 0027C9E4 A0 03 00 0A */ lhz r0, 0xa(r3)
+/* 80280D88 0027C9E8 60 00 00 04 */ ori r0, r0, 4
+/* 80280D8C 0027C9EC B0 03 00 0A */ sth r0, 0xa(r3)
+/* 80280D90 0027C9F0 80 01 02 E4 */ lwz r0, 0x2e4(r1)
+/* 80280D94 0027C9F4 83 E1 02 DC */ lwz r31, 0x2dc(r1)
+/* 80280D98 0027C9F8 83 C1 02 D8 */ lwz r30, 0x2d8(r1)
+/* 80280D9C 0027C9FC 7C 08 03 A6 */ mtlr r0
+/* 80280DA0 0027CA00 38 21 02 E0 */ addi r1, r1, 0x2e0
+/* 80280DA4 0027CA04 4E 80 00 20 */ blr
+
+.global GXSetDrawDoneCallback
+GXSetDrawDoneCallback:
+/* 80280DA8 0027CA08 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80280DAC 0027CA0C 7C 08 02 A6 */ mflr r0
+/* 80280DB0 0027CA10 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80280DB4 0027CA14 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80280DB8 0027CA18 93 C1 00 08 */ stw r30, 8(r1)
+/* 80280DBC 0027CA1C 7C 7E 1B 78 */ mr r30, r3
+/* 80280DC0 0027CA20 83 ED A9 E4 */ lwz r31, lbl_8063FCA4-_SDA_BASE_(r13)
+/* 80280DC4 0027CA24 4B FE D9 99 */ bl OSDisableInterrupts
+/* 80280DC8 0027CA28 93 CD A9 E4 */ stw r30, lbl_8063FCA4-_SDA_BASE_(r13)
+/* 80280DCC 0027CA2C 4B FE D9 B9 */ bl OSRestoreInterrupts
+/* 80280DD0 0027CA30 7F E3 FB 78 */ mr r3, r31
+/* 80280DD4 0027CA34 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80280DD8 0027CA38 83 C1 00 08 */ lwz r30, 8(r1)
+/* 80280DDC 0027CA3C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80280DE0 0027CA40 7C 08 03 A6 */ mtlr r0
+/* 80280DE4 0027CA44 38 21 00 10 */ addi r1, r1, 0x10
+/* 80280DE8 0027CA48 4E 80 00 20 */ blr
+
+GXFinishInterruptHandler:
+/* 80280DEC 0027CA4C 94 21 FD 20 */ stwu r1, -0x2e0(r1)
+/* 80280DF0 0027CA50 7C 08 02 A6 */ mflr r0
+/* 80280DF4 0027CA54 38 60 00 01 */ li r3, 1
+/* 80280DF8 0027CA58 90 01 02 E4 */ stw r0, 0x2e4(r1)
+/* 80280DFC 0027CA5C 93 E1 02 DC */ stw r31, 0x2dc(r1)
+/* 80280E00 0027CA60 7C 9F 23 78 */ mr r31, r4
+/* 80280E04 0027CA64 80 AD A9 98 */ lwz r5, lbl_8063FC58-_SDA_BASE_(r13)
+/* 80280E08 0027CA68 A0 05 00 0A */ lhz r0, 0xa(r5)
+/* 80280E0C 0027CA6C 60 00 00 08 */ ori r0, r0, 8
+/* 80280E10 0027CA70 B0 05 00 0A */ sth r0, 0xa(r5)
+/* 80280E14 0027CA74 80 0D A9 E4 */ lwz r0, lbl_8063FCA4-_SDA_BASE_(r13)
+/* 80280E18 0027CA78 98 6D A9 E0 */ stb r3, lbl_8063FCA0-_SDA_BASE_(r13)
+/* 80280E1C 0027CA7C 2C 00 00 00 */ cmpwi r0, 0
+/* 80280E20 0027CA80 41 82 00 30 */ beq lbl_80280E50
+/* 80280E24 0027CA84 38 61 00 08 */ addi r3, r1, 8
+/* 80280E28 0027CA88 4B FE A2 69 */ bl OSClearContext
+/* 80280E2C 0027CA8C 38 61 00 08 */ addi r3, r1, 8
+/* 80280E30 0027CA90 4B FE A0 39 */ bl OSSetCurrentContext
+/* 80280E34 0027CA94 81 8D A9 E4 */ lwz r12, lbl_8063FCA4-_SDA_BASE_(r13)
+/* 80280E38 0027CA98 7D 89 03 A6 */ mtctr r12
+/* 80280E3C 0027CA9C 4E 80 04 21 */ bctrl
+/* 80280E40 0027CAA0 38 61 00 08 */ addi r3, r1, 8
+/* 80280E44 0027CAA4 4B FE A2 4D */ bl OSClearContext
+/* 80280E48 0027CAA8 7F E3 FB 78 */ mr r3, r31
+/* 80280E4C 0027CAAC 4B FE A0 1D */ bl OSSetCurrentContext
+lbl_80280E50:
+/* 80280E50 0027CAB0 38 6D A9 D8 */ addi r3, r13, lbl_8063FC98-_SDA_BASE_
+/* 80280E54 0027CAB4 4B FF 16 0D */ bl OSWakeupThread
+/* 80280E58 0027CAB8 80 01 02 E4 */ lwz r0, 0x2e4(r1)
+/* 80280E5C 0027CABC 83 E1 02 DC */ lwz r31, 0x2dc(r1)
+/* 80280E60 0027CAC0 7C 08 03 A6 */ mtlr r0
+/* 80280E64 0027CAC4 38 21 02 E0 */ addi r1, r1, 0x2e0
+/* 80280E68 0027CAC8 4E 80 00 20 */ blr
+
+.global __GXPEInit
+__GXPEInit:
+/* 80280E6C 0027CACC 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80280E70 0027CAD0 7C 08 02 A6 */ mflr r0
+/* 80280E74 0027CAD4 3C 80 80 28 */ lis r4, GXTokenInterruptHandler@ha
+/* 80280E78 0027CAD8 38 60 00 12 */ li r3, 0x12
+/* 80280E7C 0027CADC 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80280E80 0027CAE0 38 84 0D 24 */ addi r4, r4, GXTokenInterruptHandler@l
+/* 80280E84 0027CAE4 4B FE D9 25 */ bl __OSSetInterruptHandler
+/* 80280E88 0027CAE8 3C 80 80 28 */ lis r4, GXFinishInterruptHandler@ha
+/* 80280E8C 0027CAEC 38 60 00 13 */ li r3, 0x13
+/* 80280E90 0027CAF0 38 84 0D EC */ addi r4, r4, GXFinishInterruptHandler@l
+/* 80280E94 0027CAF4 4B FE D9 15 */ bl __OSSetInterruptHandler
+/* 80280E98 0027CAF8 38 6D A9 D8 */ addi r3, r13, lbl_8063FC98-_SDA_BASE_
+/* 80280E9C 0027CAFC 4B FF 04 4D */ bl OSInitThreadQueue
+/* 80280EA0 0027CB00 38 60 20 00 */ li r3, 0x2000
+/* 80280EA4 0027CB04 4B FE DC C9 */ bl __OSUnmaskInterrupts
+/* 80280EA8 0027CB08 38 60 10 00 */ li r3, 0x1000
+/* 80280EAC 0027CB0C 4B FE DC C1 */ bl __OSUnmaskInterrupts
+/* 80280EB0 0027CB10 80 6D A9 98 */ lwz r3, lbl_8063FC58-_SDA_BASE_(r13)
+/* 80280EB4 0027CB14 A0 03 00 0A */ lhz r0, 0xa(r3)
+/* 80280EB8 0027CB18 60 00 00 0F */ ori r0, r0, 0xf
+/* 80280EBC 0027CB1C B0 03 00 0A */ sth r0, 0xa(r3)
+/* 80280EC0 0027CB20 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80280EC4 0027CB24 7C 08 03 A6 */ mtlr r0
+/* 80280EC8 0027CB28 38 21 00 10 */ addi r1, r1, 0x10
+/* 80280ECC 0027CB2C 4E 80 00 20 */ blr
diff --git a/asm/SDK/GX/GXPerf.s b/asm/SDK/GX/GXPerf.s
new file mode 100644
index 0000000..f6e3a19
--- /dev/null
+++ b/asm/SDK/GX/GXPerf.s
@@ -0,0 +1,548 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global GXSetGPMetric
+GXSetGPMetric:
+/* 80286E50 00282AB0 80 A2 A0 D0 */ lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80286E54 00282AB4 80 05 05 EC */ lwz r0, 0x5ec(r5)
+/* 80286E58 00282AB8 2C 00 00 22 */ cmpwi r0, 0x22
+/* 80286E5C 00282ABC 41 82 00 2C */ beq lbl_80286E88
+/* 80286E60 00282AC0 40 80 00 74 */ bge lbl_80286ED4
+/* 80286E64 00282AC4 2C 00 00 0B */ cmpwi r0, 0xb
+/* 80286E68 00282AC8 40 80 00 10 */ bge lbl_80286E78
+/* 80286E6C 00282ACC 2C 00 00 00 */ cmpwi r0, 0
+/* 80286E70 00282AD0 40 80 00 18 */ bge lbl_80286E88
+/* 80286E74 00282AD4 48 00 00 60 */ b lbl_80286ED4
+lbl_80286E78:
+/* 80286E78 00282AD8 2C 00 00 1B */ cmpwi r0, 0x1b
+/* 80286E7C 00282ADC 40 80 00 44 */ bge lbl_80286EC0
+/* 80286E80 00282AE0 48 00 00 28 */ b lbl_80286EA8
+/* 80286E84 00282AE4 48 00 00 50 */ b lbl_80286ED4
+lbl_80286E88:
+/* 80286E88 00282AE8 3C E0 CC 01 */ lis r7, 0xCC008000@ha
+/* 80286E8C 00282AEC 38 00 00 10 */ li r0, 0x10
+/* 80286E90 00282AF0 98 07 80 00 */ stb r0, 0xCC008000@l(r7)
+/* 80286E94 00282AF4 38 C0 10 06 */ li r6, 0x1006
+/* 80286E98 00282AF8 38 00 00 00 */ li r0, 0
+/* 80286E9C 00282AFC 90 C7 80 00 */ stw r6, -0x8000(r7)
+/* 80286EA0 00282B00 90 07 80 00 */ stw r0, -0x8000(r7)
+/* 80286EA4 00282B04 48 00 00 30 */ b lbl_80286ED4
+lbl_80286EA8:
+/* 80286EA8 00282B08 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80286EAC 00282B0C 38 00 00 61 */ li r0, 0x61
+/* 80286EB0 00282B10 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 80286EB4 00282B14 3C 00 23 00 */ lis r0, 0x2300
+/* 80286EB8 00282B18 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 80286EBC 00282B1C 48 00 00 18 */ b lbl_80286ED4
+lbl_80286EC0:
+/* 80286EC0 00282B20 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80286EC4 00282B24 38 00 00 61 */ li r0, 0x61
+/* 80286EC8 00282B28 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 80286ECC 00282B2C 3C 00 24 00 */ lis r0, 0x2400
+/* 80286ED0 00282B30 90 06 80 00 */ stw r0, -0x8000(r6)
+lbl_80286ED4:
+/* 80286ED4 00282B34 80 05 05 F0 */ lwz r0, 0x5f0(r5)
+/* 80286ED8 00282B38 2C 00 00 15 */ cmpwi r0, 0x15
+/* 80286EDC 00282B3C 41 82 00 2C */ beq lbl_80286F08
+/* 80286EE0 00282B40 40 80 00 78 */ bge lbl_80286F58
+/* 80286EE4 00282B44 2C 00 00 09 */ cmpwi r0, 9
+/* 80286EE8 00282B48 40 80 00 10 */ bge lbl_80286EF8
+/* 80286EEC 00282B4C 2C 00 00 00 */ cmpwi r0, 0
+/* 80286EF0 00282B50 40 80 00 18 */ bge lbl_80286F08
+/* 80286EF4 00282B54 48 00 00 64 */ b lbl_80286F58
+lbl_80286EF8:
+/* 80286EF8 00282B58 2C 00 00 11 */ cmpwi r0, 0x11
+/* 80286EFC 00282B5C 40 80 00 50 */ bge lbl_80286F4C
+/* 80286F00 00282B60 48 00 00 20 */ b lbl_80286F20
+/* 80286F04 00282B64 48 00 00 54 */ b lbl_80286F58
+lbl_80286F08:
+/* 80286F08 00282B68 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80286F0C 00282B6C 38 00 00 61 */ li r0, 0x61
+/* 80286F10 00282B70 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 80286F14 00282B74 3C 00 67 00 */ lis r0, 0x6700
+/* 80286F18 00282B78 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 80286F1C 00282B7C 48 00 00 3C */ b lbl_80286F58
+lbl_80286F20:
+/* 80286F20 00282B80 81 05 05 F4 */ lwz r8, 0x5f4(r5)
+/* 80286F24 00282B84 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80286F28 00282B88 38 E0 00 08 */ li r7, 8
+/* 80286F2C 00282B8C 38 00 00 20 */ li r0, 0x20
+/* 80286F30 00282B90 55 08 07 2E */ rlwinm r8, r8, 0, 0x1c, 0x17
+/* 80286F34 00282B94 91 05 05 F4 */ stw r8, 0x5f4(r5)
+/* 80286F38 00282B98 98 E6 80 00 */ stb r7, 0xCC008000@l(r6)
+/* 80286F3C 00282B9C 98 06 80 00 */ stb r0, -0x8000(r6)
+/* 80286F40 00282BA0 80 05 05 F4 */ lwz r0, 0x5f4(r5)
+/* 80286F44 00282BA4 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 80286F48 00282BA8 48 00 00 10 */ b lbl_80286F58
+lbl_80286F4C:
+/* 80286F4C 00282BAC 80 CD A9 94 */ lwz r6, lbl_8063FC54-_SDA_BASE_(r13)
+/* 80286F50 00282BB0 38 00 00 00 */ li r0, 0
+/* 80286F54 00282BB4 B0 06 00 06 */ sth r0, 6(r6)
+lbl_80286F58:
+/* 80286F58 00282BB8 28 03 00 23 */ cmplwi r3, 0x23
+/* 80286F5C 00282BBC 90 65 05 EC */ stw r3, 0x5ec(r5)
+/* 80286F60 00282BC0 41 81 04 1C */ bgt lbl_8028737C
+/* 80286F64 00282BC4 3C C0 80 43 */ lis r6, lbl_80435CD4@ha
+/* 80286F68 00282BC8 54 60 10 3A */ slwi r0, r3, 2
+/* 80286F6C 00282BCC 38 C6 5C D4 */ addi r6, r6, lbl_80435CD4@l
+/* 80286F70 00282BD0 7C C6 00 2E */ lwzx r6, r6, r0
+/* 80286F74 00282BD4 7C C9 03 A6 */ mtctr r6
+/* 80286F78 00282BD8 4E 80 04 20 */ bctr
+/* 80286F7C 00282BDC 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80286F80 00282BE0 38 00 00 10 */ li r0, 0x10
+/* 80286F84 00282BE4 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 80286F88 00282BE8 38 60 10 06 */ li r3, 0x1006
+/* 80286F8C 00282BEC 38 00 02 73 */ li r0, 0x273
+/* 80286F90 00282BF0 90 66 80 00 */ stw r3, -0x8000(r6)
+/* 80286F94 00282BF4 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 80286F98 00282BF8 48 00 03 E4 */ b lbl_8028737C
+/* 80286F9C 00282BFC 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80286FA0 00282C00 38 00 00 10 */ li r0, 0x10
+/* 80286FA4 00282C04 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 80286FA8 00282C08 38 60 10 06 */ li r3, 0x1006
+/* 80286FAC 00282C0C 38 00 01 4A */ li r0, 0x14a
+/* 80286FB0 00282C10 90 66 80 00 */ stw r3, -0x8000(r6)
+/* 80286FB4 00282C14 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 80286FB8 00282C18 48 00 03 C4 */ b lbl_8028737C
+/* 80286FBC 00282C1C 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80286FC0 00282C20 38 00 00 10 */ li r0, 0x10
+/* 80286FC4 00282C24 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 80286FC8 00282C28 38 60 10 06 */ li r3, 0x1006
+/* 80286FCC 00282C2C 38 00 01 6B */ li r0, 0x16b
+/* 80286FD0 00282C30 90 66 80 00 */ stw r3, -0x8000(r6)
+/* 80286FD4 00282C34 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 80286FD8 00282C38 48 00 03 A4 */ b lbl_8028737C
+/* 80286FDC 00282C3C 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80286FE0 00282C40 38 00 00 10 */ li r0, 0x10
+/* 80286FE4 00282C44 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 80286FE8 00282C48 38 60 10 06 */ li r3, 0x1006
+/* 80286FEC 00282C4C 38 00 00 84 */ li r0, 0x84
+/* 80286FF0 00282C50 90 66 80 00 */ stw r3, -0x8000(r6)
+/* 80286FF4 00282C54 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 80286FF8 00282C58 48 00 03 84 */ b lbl_8028737C
+/* 80286FFC 00282C5C 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80287000 00282C60 38 00 00 10 */ li r0, 0x10
+/* 80287004 00282C64 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 80287008 00282C68 38 60 10 06 */ li r3, 0x1006
+/* 8028700C 00282C6C 38 00 00 C6 */ li r0, 0xc6
+/* 80287010 00282C70 90 66 80 00 */ stw r3, -0x8000(r6)
+/* 80287014 00282C74 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 80287018 00282C78 48 00 03 64 */ b lbl_8028737C
+/* 8028701C 00282C7C 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80287020 00282C80 38 00 00 10 */ li r0, 0x10
+/* 80287024 00282C84 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 80287028 00282C88 38 60 10 06 */ li r3, 0x1006
+/* 8028702C 00282C8C 38 00 02 10 */ li r0, 0x210
+/* 80287030 00282C90 90 66 80 00 */ stw r3, -0x8000(r6)
+/* 80287034 00282C94 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 80287038 00282C98 48 00 03 44 */ b lbl_8028737C
+/* 8028703C 00282C9C 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80287040 00282CA0 38 00 00 10 */ li r0, 0x10
+/* 80287044 00282CA4 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 80287048 00282CA8 38 60 10 06 */ li r3, 0x1006
+/* 8028704C 00282CAC 38 00 02 52 */ li r0, 0x252
+/* 80287050 00282CB0 90 66 80 00 */ stw r3, -0x8000(r6)
+/* 80287054 00282CB4 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 80287058 00282CB8 48 00 03 24 */ b lbl_8028737C
+/* 8028705C 00282CBC 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80287060 00282CC0 38 00 00 10 */ li r0, 0x10
+/* 80287064 00282CC4 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 80287068 00282CC8 38 60 10 06 */ li r3, 0x1006
+/* 8028706C 00282CCC 38 00 02 31 */ li r0, 0x231
+/* 80287070 00282CD0 90 66 80 00 */ stw r3, -0x8000(r6)
+/* 80287074 00282CD4 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 80287078 00282CD8 48 00 03 04 */ b lbl_8028737C
+/* 8028707C 00282CDC 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80287080 00282CE0 38 00 00 10 */ li r0, 0x10
+/* 80287084 00282CE4 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 80287088 00282CE8 38 60 10 06 */ li r3, 0x1006
+/* 8028708C 00282CEC 38 00 01 AD */ li r0, 0x1ad
+/* 80287090 00282CF0 90 66 80 00 */ stw r3, -0x8000(r6)
+/* 80287094 00282CF4 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 80287098 00282CF8 48 00 02 E4 */ b lbl_8028737C
+/* 8028709C 00282CFC 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 802870A0 00282D00 38 00 00 10 */ li r0, 0x10
+/* 802870A4 00282D04 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 802870A8 00282D08 38 60 10 06 */ li r3, 0x1006
+/* 802870AC 00282D0C 38 00 01 CE */ li r0, 0x1ce
+/* 802870B0 00282D10 90 66 80 00 */ stw r3, -0x8000(r6)
+/* 802870B4 00282D14 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 802870B8 00282D18 48 00 02 C4 */ b lbl_8028737C
+/* 802870BC 00282D1C 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 802870C0 00282D20 38 00 00 10 */ li r0, 0x10
+/* 802870C4 00282D24 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 802870C8 00282D28 38 60 10 06 */ li r3, 0x1006
+/* 802870CC 00282D2C 38 00 00 21 */ li r0, 0x21
+/* 802870D0 00282D30 90 66 80 00 */ stw r3, -0x8000(r6)
+/* 802870D4 00282D34 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 802870D8 00282D38 48 00 02 A4 */ b lbl_8028737C
+/* 802870DC 00282D3C 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 802870E0 00282D40 38 00 00 10 */ li r0, 0x10
+/* 802870E4 00282D44 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 802870E8 00282D48 38 60 10 06 */ li r3, 0x1006
+/* 802870EC 00282D4C 38 00 01 53 */ li r0, 0x153
+/* 802870F0 00282D50 90 66 80 00 */ stw r3, -0x8000(r6)
+/* 802870F4 00282D54 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 802870F8 00282D58 48 00 02 84 */ b lbl_8028737C
+/* 802870FC 00282D5C 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80287100 00282D60 38 00 00 61 */ li r0, 0x61
+/* 80287104 00282D64 3C 60 23 01 */ lis r3, 0x2300AE7F@ha
+/* 80287108 00282D68 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 8028710C 00282D6C 38 03 AE 7F */ addi r0, r3, 0x2300AE7F@l
+/* 80287110 00282D70 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 80287114 00282D74 48 00 02 68 */ b lbl_8028737C
+/* 80287118 00282D78 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 8028711C 00282D7C 38 00 00 61 */ li r0, 0x61
+/* 80287120 00282D80 3C 60 23 01 */ lis r3, 0x23008E7F@ha
+/* 80287124 00282D84 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 80287128 00282D88 38 03 8E 7F */ addi r0, r3, 0x23008E7F@l
+/* 8028712C 00282D8C 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 80287130 00282D90 48 00 02 4C */ b lbl_8028737C
+/* 80287134 00282D94 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80287138 00282D98 38 00 00 61 */ li r0, 0x61
+/* 8028713C 00282D9C 3C 60 23 01 */ lis r3, 0x23009E7F@ha
+/* 80287140 00282DA0 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 80287144 00282DA4 38 03 9E 7F */ addi r0, r3, 0x23009E7F@l
+/* 80287148 00282DA8 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 8028714C 00282DAC 48 00 02 30 */ b lbl_8028737C
+/* 80287150 00282DB0 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80287154 00282DB4 38 00 00 61 */ li r0, 0x61
+/* 80287158 00282DB8 3C 60 23 00 */ lis r3, 0x23001E7F@ha
+/* 8028715C 00282DBC 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 80287160 00282DC0 38 03 1E 7F */ addi r0, r3, 0x23001E7F@l
+/* 80287164 00282DC4 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 80287168 00282DC8 48 00 02 14 */ b lbl_8028737C
+/* 8028716C 00282DCC 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80287170 00282DD0 38 00 00 61 */ li r0, 0x61
+/* 80287174 00282DD4 3C 60 23 01 */ lis r3, 0x2300AC3F@ha
+/* 80287178 00282DD8 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 8028717C 00282DDC 38 03 AC 3F */ addi r0, r3, 0x2300AC3F@l
+/* 80287180 00282DE0 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 80287184 00282DE4 48 00 01 F8 */ b lbl_8028737C
+/* 80287188 00282DE8 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 8028718C 00282DEC 38 00 00 61 */ li r0, 0x61
+/* 80287190 00282DF0 3C 60 23 01 */ lis r3, 0x2300AC7F@ha
+/* 80287194 00282DF4 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 80287198 00282DF8 38 03 AC 7F */ addi r0, r3, 0x2300AC7F@l
+/* 8028719C 00282DFC 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 802871A0 00282E00 48 00 01 DC */ b lbl_8028737C
+/* 802871A4 00282E04 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 802871A8 00282E08 38 00 00 61 */ li r0, 0x61
+/* 802871AC 00282E0C 3C 60 23 01 */ lis r3, 0x2300ACBF@ha
+/* 802871B0 00282E10 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 802871B4 00282E14 38 03 AC BF */ addi r0, r3, 0x2300ACBF@l
+/* 802871B8 00282E18 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 802871BC 00282E1C 48 00 01 C0 */ b lbl_8028737C
+/* 802871C0 00282E20 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 802871C4 00282E24 38 00 00 61 */ li r0, 0x61
+/* 802871C8 00282E28 3C 60 23 01 */ lis r3, 0x2300ACFF@ha
+/* 802871CC 00282E2C 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 802871D0 00282E30 38 03 AC FF */ addi r0, r3, 0x2300ACFF@l
+/* 802871D4 00282E34 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 802871D8 00282E38 48 00 01 A4 */ b lbl_8028737C
+/* 802871DC 00282E3C 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 802871E0 00282E40 38 00 00 61 */ li r0, 0x61
+/* 802871E4 00282E44 3C 60 23 01 */ lis r3, 0x2300AD3F@ha
+/* 802871E8 00282E48 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 802871EC 00282E4C 38 03 AD 3F */ addi r0, r3, 0x2300AD3F@l
+/* 802871F0 00282E50 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 802871F4 00282E54 48 00 01 88 */ b lbl_8028737C
+/* 802871F8 00282E58 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 802871FC 00282E5C 38 00 00 61 */ li r0, 0x61
+/* 80287200 00282E60 3C 60 23 01 */ lis r3, 0x2300AD7F@ha
+/* 80287204 00282E64 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 80287208 00282E68 38 03 AD 7F */ addi r0, r3, 0x2300AD7F@l
+/* 8028720C 00282E6C 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 80287210 00282E70 48 00 01 6C */ b lbl_8028737C
+/* 80287214 00282E74 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80287218 00282E78 38 00 00 61 */ li r0, 0x61
+/* 8028721C 00282E7C 3C 60 23 01 */ lis r3, 0x2300ADBF@ha
+/* 80287220 00282E80 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 80287224 00282E84 38 03 AD BF */ addi r0, r3, 0x2300ADBF@l
+/* 80287228 00282E88 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 8028722C 00282E8C 48 00 01 50 */ b lbl_8028737C
+/* 80287230 00282E90 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80287234 00282E94 38 00 00 61 */ li r0, 0x61
+/* 80287238 00282E98 3C 60 23 01 */ lis r3, 0x2300ADFF@ha
+/* 8028723C 00282E9C 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 80287240 00282EA0 38 03 AD FF */ addi r0, r3, 0x2300ADFF@l
+/* 80287244 00282EA4 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 80287248 00282EA8 48 00 01 34 */ b lbl_8028737C
+/* 8028724C 00282EAC 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80287250 00282EB0 38 00 00 61 */ li r0, 0x61
+/* 80287254 00282EB4 3C 60 23 01 */ lis r3, 0x2300AE3F@ha
+/* 80287258 00282EB8 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 8028725C 00282EBC 38 03 AE 3F */ addi r0, r3, 0x2300AE3F@l
+/* 80287260 00282EC0 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 80287264 00282EC4 48 00 01 18 */ b lbl_8028737C
+/* 80287268 00282EC8 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 8028726C 00282ECC 38 00 00 61 */ li r0, 0x61
+/* 80287270 00282ED0 3C 60 23 01 */ lis r3, 0x2300A27F@ha
+/* 80287274 00282ED4 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 80287278 00282ED8 38 03 A2 7F */ addi r0, r3, 0x2300A27F@l
+/* 8028727C 00282EDC 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 80287280 00282EE0 48 00 00 FC */ b lbl_8028737C
+/* 80287284 00282EE4 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80287288 00282EE8 38 00 00 61 */ li r0, 0x61
+/* 8028728C 00282EEC 3C 60 23 01 */ lis r3, 0x2300A67F@ha
+/* 80287290 00282EF0 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 80287294 00282EF4 38 03 A6 7F */ addi r0, r3, 0x2300A67F@l
+/* 80287298 00282EF8 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 8028729C 00282EFC 48 00 00 E0 */ b lbl_8028737C
+/* 802872A0 00282F00 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 802872A4 00282F04 38 00 00 61 */ li r0, 0x61
+/* 802872A8 00282F08 3C 60 23 01 */ lis r3, 0x2300AA7F@ha
+/* 802872AC 00282F0C 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 802872B0 00282F10 38 03 AA 7F */ addi r0, r3, 0x2300AA7F@l
+/* 802872B4 00282F14 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 802872B8 00282F18 48 00 00 C4 */ b lbl_8028737C
+/* 802872BC 00282F1C 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 802872C0 00282F20 38 00 00 61 */ li r0, 0x61
+/* 802872C4 00282F24 3C 60 24 03 */ lis r3, 0x2402C0C6@ha
+/* 802872C8 00282F28 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 802872CC 00282F2C 38 03 C0 C6 */ addi r0, r3, 0x2402C0C6@l
+/* 802872D0 00282F30 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 802872D4 00282F34 48 00 00 A8 */ b lbl_8028737C
+/* 802872D8 00282F38 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 802872DC 00282F3C 38 00 00 61 */ li r0, 0x61
+/* 802872E0 00282F40 3C 60 24 03 */ lis r3, 0x2402C16B@ha
+/* 802872E4 00282F44 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 802872E8 00282F48 38 03 C1 6B */ addi r0, r3, 0x2402C16B@l
+/* 802872EC 00282F4C 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 802872F0 00282F50 48 00 00 8C */ b lbl_8028737C
+/* 802872F4 00282F54 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 802872F8 00282F58 38 00 00 61 */ li r0, 0x61
+/* 802872FC 00282F5C 3C 60 24 03 */ lis r3, 0x2402C0E7@ha
+/* 80287300 00282F60 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 80287304 00282F64 38 03 C0 E7 */ addi r0, r3, 0x2402C0E7@l
+/* 80287308 00282F68 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 8028730C 00282F6C 48 00 00 70 */ b lbl_8028737C
+/* 80287310 00282F70 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80287314 00282F74 38 00 00 61 */ li r0, 0x61
+/* 80287318 00282F78 3C 60 24 03 */ lis r3, 0x2402C108@ha
+/* 8028731C 00282F7C 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 80287320 00282F80 38 03 C1 08 */ addi r0, r3, 0x2402C108@l
+/* 80287324 00282F84 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 80287328 00282F88 48 00 00 54 */ b lbl_8028737C
+/* 8028732C 00282F8C 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80287330 00282F90 38 00 00 61 */ li r0, 0x61
+/* 80287334 00282F94 3C 60 24 03 */ lis r3, 0x2402C129@ha
+/* 80287338 00282F98 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 8028733C 00282F9C 38 03 C1 29 */ addi r0, r3, 0x2402C129@l
+/* 80287340 00282FA0 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 80287344 00282FA4 48 00 00 38 */ b lbl_8028737C
+/* 80287348 00282FA8 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 8028734C 00282FAC 38 00 00 61 */ li r0, 0x61
+/* 80287350 00282FB0 3C 60 24 03 */ lis r3, 0x2402C14A@ha
+/* 80287354 00282FB4 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 80287358 00282FB8 38 03 C1 4A */ addi r0, r3, 0x2402C14A@l
+/* 8028735C 00282FBC 90 06 80 00 */ stw r0, -0x8000(r6)
+/* 80287360 00282FC0 48 00 00 1C */ b lbl_8028737C
+/* 80287364 00282FC4 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80287368 00282FC8 38 00 00 61 */ li r0, 0x61
+/* 8028736C 00282FCC 3C 60 24 03 */ lis r3, 0x2402C1AD@ha
+/* 80287370 00282FD0 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 80287374 00282FD4 38 03 C1 AD */ addi r0, r3, 0x2402C1AD@l
+/* 80287378 00282FD8 90 06 80 00 */ stw r0, -0x8000(r6)
+lbl_8028737C:
+/* 8028737C 00282FDC 28 04 00 16 */ cmplwi r4, 0x16
+/* 80287380 00282FE0 90 85 05 F0 */ stw r4, 0x5f0(r5)
+/* 80287384 00282FE4 41 81 02 EC */ bgt lbl_80287670
+/* 80287388 00282FE8 3C 60 80 43 */ lis r3, lbl_80435C78@ha
+/* 8028738C 00282FEC 54 80 10 3A */ slwi r0, r4, 2
+/* 80287390 00282FF0 38 63 5C 78 */ addi r3, r3, lbl_80435C78@l
+/* 80287394 00282FF4 7C 63 00 2E */ lwzx r3, r3, r0
+/* 80287398 00282FF8 7C 69 03 A6 */ mtctr r3
+/* 8028739C 00282FFC 4E 80 04 20 */ bctr
+/* 802873A0 00283000 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 802873A4 00283004 38 00 00 61 */ li r0, 0x61
+/* 802873A8 00283008 3C 60 67 00 */ lis r3, 0x67000042@ha
+/* 802873AC 0028300C 98 04 80 00 */ stb r0, 0xCC008000@l(r4)
+/* 802873B0 00283010 38 03 00 42 */ addi r0, r3, 0x67000042@l
+/* 802873B4 00283014 90 04 80 00 */ stw r0, -0x8000(r4)
+/* 802873B8 00283018 48 00 02 B8 */ b lbl_80287670
+/* 802873BC 0028301C 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 802873C0 00283020 38 00 00 61 */ li r0, 0x61
+/* 802873C4 00283024 3C 60 67 00 */ lis r3, 0x67000084@ha
+/* 802873C8 00283028 98 04 80 00 */ stb r0, 0xCC008000@l(r4)
+/* 802873CC 0028302C 38 03 00 84 */ addi r0, r3, 0x67000084@l
+/* 802873D0 00283030 90 04 80 00 */ stw r0, -0x8000(r4)
+/* 802873D4 00283034 48 00 02 9C */ b lbl_80287670
+/* 802873D8 00283038 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 802873DC 0028303C 38 00 00 61 */ li r0, 0x61
+/* 802873E0 00283040 3C 60 67 00 */ lis r3, 0x67000063@ha
+/* 802873E4 00283044 98 04 80 00 */ stb r0, 0xCC008000@l(r4)
+/* 802873E8 00283048 38 03 00 63 */ addi r0, r3, 0x67000063@l
+/* 802873EC 0028304C 90 04 80 00 */ stw r0, -0x8000(r4)
+/* 802873F0 00283050 48 00 02 80 */ b lbl_80287670
+/* 802873F4 00283054 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 802873F8 00283058 38 00 00 61 */ li r0, 0x61
+/* 802873FC 0028305C 3C 60 67 00 */ lis r3, 0x67000129@ha
+/* 80287400 00283060 98 04 80 00 */ stb r0, 0xCC008000@l(r4)
+/* 80287404 00283064 38 03 01 29 */ addi r0, r3, 0x67000129@l
+/* 80287408 00283068 90 04 80 00 */ stw r0, -0x8000(r4)
+/* 8028740C 0028306C 48 00 02 64 */ b lbl_80287670
+/* 80287410 00283070 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 80287414 00283074 38 00 00 61 */ li r0, 0x61
+/* 80287418 00283078 3C 60 67 00 */ lis r3, 0x67000252@ha
+/* 8028741C 0028307C 98 04 80 00 */ stb r0, 0xCC008000@l(r4)
+/* 80287420 00283080 38 03 02 52 */ addi r0, r3, 0x67000252@l
+/* 80287424 00283084 90 04 80 00 */ stw r0, -0x8000(r4)
+/* 80287428 00283088 48 00 02 48 */ b lbl_80287670
+/* 8028742C 0028308C 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 80287430 00283090 38 00 00 61 */ li r0, 0x61
+/* 80287434 00283094 3C 60 67 00 */ lis r3, 0x67000021@ha
+/* 80287438 00283098 98 04 80 00 */ stb r0, 0xCC008000@l(r4)
+/* 8028743C 0028309C 38 03 00 21 */ addi r0, r3, 0x67000021@l
+/* 80287440 002830A0 90 04 80 00 */ stw r0, -0x8000(r4)
+/* 80287444 002830A4 48 00 02 2C */ b lbl_80287670
+/* 80287448 002830A8 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 8028744C 002830AC 38 00 00 61 */ li r0, 0x61
+/* 80287450 002830B0 3C 60 67 00 */ lis r3, 0x6700014B@ha
+/* 80287454 002830B4 98 04 80 00 */ stb r0, 0xCC008000@l(r4)
+/* 80287458 002830B8 38 03 01 4B */ addi r0, r3, 0x6700014B@l
+/* 8028745C 002830BC 90 04 80 00 */ stw r0, -0x8000(r4)
+/* 80287460 002830C0 48 00 02 10 */ b lbl_80287670
+/* 80287464 002830C4 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 80287468 002830C8 38 00 00 61 */ li r0, 0x61
+/* 8028746C 002830CC 3C 60 67 00 */ lis r3, 0x6700018D@ha
+/* 80287470 002830D0 98 04 80 00 */ stb r0, 0xCC008000@l(r4)
+/* 80287474 002830D4 38 03 01 8D */ addi r0, r3, 0x6700018D@l
+/* 80287478 002830D8 90 04 80 00 */ stw r0, -0x8000(r4)
+/* 8028747C 002830DC 48 00 01 F4 */ b lbl_80287670
+/* 80287480 002830E0 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 80287484 002830E4 38 00 00 61 */ li r0, 0x61
+/* 80287488 002830E8 3C 60 67 00 */ lis r3, 0x670001CF@ha
+/* 8028748C 002830EC 98 04 80 00 */ stb r0, 0xCC008000@l(r4)
+/* 80287490 002830F0 38 03 01 CF */ addi r0, r3, 0x670001CF@l
+/* 80287494 002830F4 90 04 80 00 */ stw r0, -0x8000(r4)
+/* 80287498 002830F8 48 00 01 D8 */ b lbl_80287670
+/* 8028749C 002830FC 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 802874A0 00283100 38 00 00 61 */ li r0, 0x61
+/* 802874A4 00283104 3C 60 67 00 */ lis r3, 0x67000211@ha
+/* 802874A8 00283108 98 04 80 00 */ stb r0, 0xCC008000@l(r4)
+/* 802874AC 0028310C 38 03 02 11 */ addi r0, r3, 0x67000211@l
+/* 802874B0 00283110 90 04 80 00 */ stw r0, -0x8000(r4)
+/* 802874B4 00283114 48 00 01 BC */ b lbl_80287670
+/* 802874B8 00283118 80 85 05 F4 */ lwz r4, 0x5f4(r5)
+/* 802874BC 0028311C 38 00 00 02 */ li r0, 2
+/* 802874C0 00283120 50 04 26 36 */ rlwimi r4, r0, 4, 0x18, 0x1b
+/* 802874C4 00283124 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 802874C8 00283128 90 85 05 F4 */ stw r4, 0x5f4(r5)
+/* 802874CC 0028312C 38 80 00 08 */ li r4, 8
+/* 802874D0 00283130 38 00 00 20 */ li r0, 0x20
+/* 802874D4 00283134 98 83 80 00 */ stb r4, 0xCC008000@l(r3)
+/* 802874D8 00283138 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 802874DC 0028313C 80 05 05 F4 */ lwz r0, 0x5f4(r5)
+/* 802874E0 00283140 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 802874E4 00283144 48 00 01 8C */ b lbl_80287670
+/* 802874E8 00283148 80 85 05 F4 */ lwz r4, 0x5f4(r5)
+/* 802874EC 0028314C 38 00 00 03 */ li r0, 3
+/* 802874F0 00283150 50 04 26 36 */ rlwimi r4, r0, 4, 0x18, 0x1b
+/* 802874F4 00283154 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 802874F8 00283158 90 85 05 F4 */ stw r4, 0x5f4(r5)
+/* 802874FC 0028315C 38 80 00 08 */ li r4, 8
+/* 80287500 00283160 38 00 00 20 */ li r0, 0x20
+/* 80287504 00283164 98 83 80 00 */ stb r4, 0xCC008000@l(r3)
+/* 80287508 00283168 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 8028750C 0028316C 80 05 05 F4 */ lwz r0, 0x5f4(r5)
+/* 80287510 00283170 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 80287514 00283174 48 00 01 5C */ b lbl_80287670
+/* 80287518 00283178 80 85 05 F4 */ lwz r4, 0x5f4(r5)
+/* 8028751C 0028317C 38 00 00 04 */ li r0, 4
+/* 80287520 00283180 50 04 26 36 */ rlwimi r4, r0, 4, 0x18, 0x1b
+/* 80287524 00283184 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80287528 00283188 90 85 05 F4 */ stw r4, 0x5f4(r5)
+/* 8028752C 0028318C 38 80 00 08 */ li r4, 8
+/* 80287530 00283190 38 00 00 20 */ li r0, 0x20
+/* 80287534 00283194 98 83 80 00 */ stb r4, 0xCC008000@l(r3)
+/* 80287538 00283198 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 8028753C 0028319C 80 05 05 F4 */ lwz r0, 0x5f4(r5)
+/* 80287540 002831A0 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 80287544 002831A4 48 00 01 2C */ b lbl_80287670
+/* 80287548 002831A8 80 85 05 F4 */ lwz r4, 0x5f4(r5)
+/* 8028754C 002831AC 38 00 00 05 */ li r0, 5
+/* 80287550 002831B0 50 04 26 36 */ rlwimi r4, r0, 4, 0x18, 0x1b
+/* 80287554 002831B4 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80287558 002831B8 90 85 05 F4 */ stw r4, 0x5f4(r5)
+/* 8028755C 002831BC 38 80 00 08 */ li r4, 8
+/* 80287560 002831C0 38 00 00 20 */ li r0, 0x20
+/* 80287564 002831C4 98 83 80 00 */ stb r4, 0xCC008000@l(r3)
+/* 80287568 002831C8 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 8028756C 002831CC 80 05 05 F4 */ lwz r0, 0x5f4(r5)
+/* 80287570 002831D0 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 80287574 002831D4 48 00 00 FC */ b lbl_80287670
+/* 80287578 002831D8 80 85 05 F4 */ lwz r4, 0x5f4(r5)
+/* 8028757C 002831DC 38 00 00 06 */ li r0, 6
+/* 80287580 002831E0 50 04 26 36 */ rlwimi r4, r0, 4, 0x18, 0x1b
+/* 80287584 002831E4 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80287588 002831E8 90 85 05 F4 */ stw r4, 0x5f4(r5)
+/* 8028758C 002831EC 38 80 00 08 */ li r4, 8
+/* 80287590 002831F0 38 00 00 20 */ li r0, 0x20
+/* 80287594 002831F4 98 83 80 00 */ stb r4, 0xCC008000@l(r3)
+/* 80287598 002831F8 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 8028759C 002831FC 80 05 05 F4 */ lwz r0, 0x5f4(r5)
+/* 802875A0 00283200 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 802875A4 00283204 48 00 00 CC */ b lbl_80287670
+/* 802875A8 00283208 80 85 05 F4 */ lwz r4, 0x5f4(r5)
+/* 802875AC 0028320C 38 00 00 07 */ li r0, 7
+/* 802875B0 00283210 50 04 26 36 */ rlwimi r4, r0, 4, 0x18, 0x1b
+/* 802875B4 00283214 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 802875B8 00283218 90 85 05 F4 */ stw r4, 0x5f4(r5)
+/* 802875BC 0028321C 38 80 00 08 */ li r4, 8
+/* 802875C0 00283220 38 00 00 20 */ li r0, 0x20
+/* 802875C4 00283224 98 83 80 00 */ stb r4, 0xCC008000@l(r3)
+/* 802875C8 00283228 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 802875CC 0028322C 80 05 05 F4 */ lwz r0, 0x5f4(r5)
+/* 802875D0 00283230 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 802875D4 00283234 48 00 00 9C */ b lbl_80287670
+/* 802875D8 00283238 80 85 05 F4 */ lwz r4, 0x5f4(r5)
+/* 802875DC 0028323C 38 00 00 09 */ li r0, 9
+/* 802875E0 00283240 50 04 26 36 */ rlwimi r4, r0, 4, 0x18, 0x1b
+/* 802875E4 00283244 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 802875E8 00283248 90 85 05 F4 */ stw r4, 0x5f4(r5)
+/* 802875EC 0028324C 38 80 00 08 */ li r4, 8
+/* 802875F0 00283250 38 00 00 20 */ li r0, 0x20
+/* 802875F4 00283254 98 83 80 00 */ stb r4, 0xCC008000@l(r3)
+/* 802875F8 00283258 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 802875FC 0028325C 80 05 05 F4 */ lwz r0, 0x5f4(r5)
+/* 80287600 00283260 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 80287604 00283264 48 00 00 6C */ b lbl_80287670
+/* 80287608 00283268 38 80 00 08 */ li r4, 8
+/* 8028760C 0028326C 80 05 05 F4 */ lwz r0, 0x5f4(r5)
+/* 80287610 00283270 50 80 26 36 */ rlwimi r0, r4, 4, 0x18, 0x1b
+/* 80287614 00283274 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80287618 00283278 90 05 05 F4 */ stw r0, 0x5f4(r5)
+/* 8028761C 0028327C 38 00 00 20 */ li r0, 0x20
+/* 80287620 00283280 98 83 80 00 */ stb r4, 0xCC008000@l(r3)
+/* 80287624 00283284 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 80287628 00283288 80 05 05 F4 */ lwz r0, 0x5f4(r5)
+/* 8028762C 0028328C 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 80287630 00283290 48 00 00 40 */ b lbl_80287670
+/* 80287634 00283294 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 80287638 00283298 38 00 00 02 */ li r0, 2
+/* 8028763C 0028329C B0 03 00 06 */ sth r0, 6(r3)
+/* 80287640 002832A0 48 00 00 30 */ b lbl_80287670
+/* 80287644 002832A4 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 80287648 002832A8 38 00 00 03 */ li r0, 3
+/* 8028764C 002832AC B0 03 00 06 */ sth r0, 6(r3)
+/* 80287650 002832B0 48 00 00 20 */ b lbl_80287670
+/* 80287654 002832B4 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 80287658 002832B8 38 00 00 04 */ li r0, 4
+/* 8028765C 002832BC B0 03 00 06 */ sth r0, 6(r3)
+/* 80287660 002832C0 48 00 00 10 */ b lbl_80287670
+/* 80287664 002832C4 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 80287668 002832C8 38 00 00 05 */ li r0, 5
+/* 8028766C 002832CC B0 03 00 06 */ sth r0, 6(r3)
+lbl_80287670:
+/* 80287670 002832D0 38 00 00 00 */ li r0, 0
+/* 80287674 002832D4 B0 05 00 02 */ sth r0, 2(r5)
+/* 80287678 002832D8 4E 80 00 20 */ blr
+
+.global GXClearGPMetric
+GXClearGPMetric:
+/* 8028767C 002832DC 80 6D A9 94 */ lwz r3, lbl_8063FC54-_SDA_BASE_(r13)
+/* 80287680 002832E0 38 00 00 04 */ li r0, 4
+/* 80287684 002832E4 B0 03 00 04 */ sth r0, 4(r3)
+/* 80287688 002832E8 4E 80 00 20 */ blr
diff --git a/asm/SDK/GX/GXPixel.s b/asm/SDK/GX/GXPixel.s
new file mode 100644
index 0000000..730cbd8
--- /dev/null
+++ b/asm/SDK/GX/GXPixel.s
@@ -0,0 +1,547 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global GXSetFog
+GXSetFog:
+/* 802841C0 0027FE20 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 802841C4 0027FE24 7C 08 02 A6 */ mflr r0
+/* 802841C8 0027FE28 90 01 00 44 */ stw r0, 0x44(r1)
+/* 802841CC 0027FE2C DB E1 00 30 */ stfd f31, 0x30(r1)
+/* 802841D0 0027FE30 F3 E1 00 38 */ psq_st f31, 56(r1), 0, qr0
+/* 802841D4 0027FE34 39 00 00 00 */ li r8, 0
+/* 802841D8 0027FE38 39 20 00 00 */ li r9, 0
+/* 802841DC 0027FE3C 93 E1 00 2C */ stw r31, 0x2c(r1)
+/* 802841E0 0027FE40 54 7F 07 7E */ clrlwi r31, r3, 0x1d
+/* 802841E4 0027FE44 93 C1 00 28 */ stw r30, 0x28(r1)
+/* 802841E8 0027FE48 54 7E EF FF */ rlwinm. r30, r3, 0x1d, 0x1f, 0x1f
+/* 802841EC 0027FE4C 93 A1 00 24 */ stw r29, 0x24(r1)
+/* 802841F0 0027FE50 7C 9D 23 78 */ mr r29, r4
+/* 802841F4 0027FE54 93 81 00 20 */ stw r28, 0x20(r1)
+/* 802841F8 0027FE58 41 82 00 4C */ beq lbl_80284244
+/* 802841FC 0027FE5C FC 04 18 00 */ fcmpu cr0, f4, f3
+/* 80284200 0027FE60 41 82 00 0C */ beq lbl_8028420C
+/* 80284204 0027FE64 FC 02 08 00 */ fcmpu cr0, f2, f1
+/* 80284208 0027FE68 40 82 00 14 */ bne lbl_8028421C
+lbl_8028420C:
+/* 8028420C 0027FE6C C0 02 A1 80 */ lfs f0, lbl_80642780-_SDA2_BASE_(r2)
+/* 80284210 0027FE70 D0 01 00 0C */ stfs f0, 0xc(r1)
+/* 80284214 0027FE74 D0 01 00 08 */ stfs f0, 8(r1)
+/* 80284218 0027FE78 48 00 01 1C */ b lbl_80284334
+lbl_8028421C:
+/* 8028421C 0027FE7C EC C2 08 28 */ fsubs f6, f2, f1
+/* 80284220 0027FE80 C0 A2 A1 84 */ lfs f5, lbl_80642784-_SDA2_BASE_(r2)
+/* 80284224 0027FE84 EC 44 18 28 */ fsubs f2, f4, f3
+/* 80284228 0027FE88 EC 01 18 28 */ fsubs f0, f1, f3
+/* 8028422C 0027FE8C EC 65 30 24 */ fdivs f3, f5, f6
+/* 80284230 0027FE90 EC 23 00 B2 */ fmuls f1, f3, f2
+/* 80284234 0027FE94 EC 03 00 32 */ fmuls f0, f3, f0
+/* 80284238 0027FE98 D0 21 00 0C */ stfs f1, 0xc(r1)
+/* 8028423C 0027FE9C D0 01 00 08 */ stfs f0, 8(r1)
+/* 80284240 0027FEA0 48 00 00 F4 */ b lbl_80284334
+lbl_80284244:
+/* 80284244 0027FEA4 FC 04 18 00 */ fcmpu cr0, f4, f3
+/* 80284248 0027FEA8 41 82 00 0C */ beq lbl_80284254
+/* 8028424C 0027FEAC FC 02 08 00 */ fcmpu cr0, f2, f1
+/* 80284250 0027FEB0 40 82 00 14 */ bne lbl_80284264
+lbl_80284254:
+/* 80284254 0027FEB4 C0 62 A1 80 */ lfs f3, lbl_80642780-_SDA2_BASE_(r2)
+/* 80284258 0027FEB8 C0 82 A1 88 */ lfs f4, lbl_80642788-_SDA2_BASE_(r2)
+/* 8028425C 0027FEBC FF E0 18 90 */ fmr f31, f3
+/* 80284260 0027FEC0 48 00 00 20 */ b lbl_80284280
+lbl_80284264:
+/* 80284264 0027FEC4 EC 04 18 28 */ fsubs f0, f4, f3
+/* 80284268 0027FEC8 EC 42 08 28 */ fsubs f2, f2, f1
+/* 8028426C 0027FECC EC 64 00 F2 */ fmuls f3, f4, f3
+/* 80284270 0027FED0 EC 84 00 24 */ fdivs f4, f4, f0
+/* 80284274 0027FED4 EC 00 00 B2 */ fmuls f0, f0, f2
+/* 80284278 0027FED8 EF E1 10 24 */ fdivs f31, f1, f2
+/* 8028427C 0027FEDC EC 63 00 24 */ fdivs f3, f3, f0
+lbl_80284280:
+/* 80284280 0027FEE0 C0 22 A1 88 */ lfs f1, lbl_80642788-_SDA2_BASE_(r2)
+/* 80284284 0027FEE4 3B 80 00 00 */ li r28, 0
+/* 80284288 0027FEE8 C8 02 A1 90 */ lfd f0, lbl_80642790-_SDA2_BASE_(r2)
+/* 8028428C 0027FEEC 48 00 00 0C */ b lbl_80284298
+lbl_80284290:
+/* 80284290 0027FEF0 EC 84 00 72 */ fmuls f4, f4, f1
+/* 80284294 0027FEF4 3B 9C 00 01 */ addi r28, r28, 1
+lbl_80284298:
+/* 80284298 0027FEF8 FC 04 00 40 */ fcmpo cr0, f4, f0
+/* 8028429C 0027FEFC 41 81 FF F4 */ bgt lbl_80284290
+/* 802842A0 0027FF00 C8 02 A1 A0 */ lfd f0, lbl_806427A0-_SDA2_BASE_(r2)
+/* 802842A4 0027FF04 C0 42 A1 98 */ lfs f2, lbl_80642798-_SDA2_BASE_(r2)
+/* 802842A8 0027FF08 C0 22 A1 80 */ lfs f1, lbl_80642780-_SDA2_BASE_(r2)
+/* 802842AC 0027FF0C 48 00 00 0C */ b lbl_802842B8
+lbl_802842B0:
+/* 802842B0 0027FF10 EC 84 00 B2 */ fmuls f4, f4, f2
+/* 802842B4 0027FF14 3B 9C FF FF */ addi r28, r28, -1
+lbl_802842B8:
+/* 802842B8 0027FF18 FC 04 08 40 */ fcmpo cr0, f4, f1
+/* 802842BC 0027FF1C 7C 00 00 26 */ mfcr r0
+/* 802842C0 0027FF20 54 00 17 FF */ rlwinm. r0, r0, 2, 0x1f, 0x1f
+/* 802842C4 0027FF24 41 82 00 0C */ beq lbl_802842D0
+/* 802842C8 0027FF28 FC 04 00 40 */ fcmpo cr0, f4, f0
+/* 802842CC 0027FF2C 41 80 FF E4 */ blt lbl_802842B0
+lbl_802842D0:
+/* 802842D0 0027FF30 38 1C 00 01 */ addi r0, r28, 1
+/* 802842D4 0027FF34 38 60 00 01 */ li r3, 1
+/* 802842D8 0027FF38 7C 63 00 30 */ slw r3, r3, r0
+/* 802842DC 0027FF3C C0 02 A1 A8 */ lfs f0, lbl_806427A8-_SDA2_BASE_(r2)
+/* 802842E0 0027FF40 3C 00 43 30 */ lis r0, 0x4330
+/* 802842E4 0027FF44 C8 42 A1 B0 */ lfd f2, lbl_806427B0-_SDA2_BASE_(r2)
+/* 802842E8 0027FF48 6C 63 80 00 */ xoris r3, r3, 0x8000
+/* 802842EC 0027FF4C 90 01 00 10 */ stw r0, 0x10(r1)
+/* 802842F0 0027FF50 EC 20 01 32 */ fmuls f1, f0, f4
+/* 802842F4 0027FF54 90 61 00 14 */ stw r3, 0x14(r1)
+/* 802842F8 0027FF58 C8 01 00 10 */ lfd f0, 0x10(r1)
+/* 802842FC 0027FF5C EC 00 10 28 */ fsubs f0, f0, f2
+/* 80284300 0027FF60 EC 03 00 24 */ fdivs f0, f3, f0
+/* 80284304 0027FF64 D0 01 00 0C */ stfs f0, 0xc(r1)
+/* 80284308 0027FF68 4B F4 2C F9 */ bl __cvt_fp2unsigned
+/* 8028430C 0027FF6C 38 1C 00 01 */ addi r0, r28, 1
+/* 80284310 0027FF70 39 00 00 00 */ li r8, 0
+/* 80284314 0027FF74 50 68 02 3E */ rlwimi r8, r3, 0, 8, 0x1f
+/* 80284318 0027FF78 39 20 00 00 */ li r9, 0
+/* 8028431C 0027FF7C 50 09 06 FE */ rlwimi r9, r0, 0, 0x1b, 0x1f
+/* 80284320 0027FF80 38 60 00 EF */ li r3, 0xef
+/* 80284324 0027FF84 38 00 00 F0 */ li r0, 0xf0
+/* 80284328 0027FF88 D3 E1 00 08 */ stfs f31, 8(r1)
+/* 8028432C 0027FF8C 50 68 C0 0E */ rlwimi r8, r3, 0x18, 0, 7
+/* 80284330 0027FF90 50 09 C0 0E */ rlwimi r9, r0, 0x18, 0, 7
+lbl_80284334:
+/* 80284334 0027FF94 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 80284338 0027FF98 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 8028433C 0027FF9C 38 A0 00 61 */ li r5, 0x61
+/* 80284340 0027FFA0 38 00 00 EE */ li r0, 0xee
+/* 80284344 0027FFA4 38 C0 00 00 */ li r6, 0
+/* 80284348 0027FFA8 98 A4 80 00 */ stb r5, 0xCC008000@l(r4)
+/* 8028434C 0027FFAC 50 66 A5 7E */ rlwimi r6, r3, 0x14, 0x15, 0x1f
+/* 80284350 0027FFB0 81 41 00 08 */ lwz r10, 8(r1)
+/* 80284354 0027FFB4 50 66 A3 68 */ rlwimi r6, r3, 0x14, 0xd, 0x14
+/* 80284358 0027FFB8 38 E0 00 00 */ li r7, 0
+/* 8028435C 0027FFBC 50 66 A3 18 */ rlwimi r6, r3, 0x14, 0xc, 0xc
+/* 80284360 0027FFC0 38 60 00 F1 */ li r3, 0xf1
+/* 80284364 0027FFC4 50 06 C0 0E */ rlwimi r6, r0, 0x18, 0, 7
+/* 80284368 0027FFC8 51 47 A5 7E */ rlwimi r7, r10, 0x14, 0x15, 0x1f
+/* 8028436C 0027FFCC 90 C4 80 00 */ stw r6, -0x8000(r4)
+/* 80284370 0027FFD0 51 47 A3 68 */ rlwimi r7, r10, 0x14, 0xd, 0x14
+/* 80284374 0027FFD4 51 47 A3 18 */ rlwimi r7, r10, 0x14, 0xc, 0xc
+/* 80284378 0027FFD8 80 1D 00 00 */ lwz r0, 0(r29)
+/* 8028437C 0027FFDC 98 A4 80 00 */ stb r5, -0x8000(r4)
+/* 80284380 0027FFE0 53 C7 A2 D6 */ rlwimi r7, r30, 0x14, 0xb, 0xb
+/* 80284384 0027FFE4 53 E7 AA 14 */ rlwimi r7, r31, 0x15, 8, 0xa
+/* 80284388 0027FFE8 38 C0 00 00 */ li r6, 0
+/* 8028438C 0027FFEC 91 04 80 00 */ stw r8, -0x8000(r4)
+/* 80284390 0027FFF0 50 67 C0 0E */ rlwimi r7, r3, 0x18, 0, 7
+/* 80284394 0027FFF4 50 06 C2 3E */ rlwimi r6, r0, 0x18, 8, 0x1f
+/* 80284398 0027FFF8 38 00 00 F2 */ li r0, 0xf2
+/* 8028439C 0027FFFC 98 A4 80 00 */ stb r5, -0x8000(r4)
+/* 802843A0 00280000 50 06 C0 0E */ rlwimi r6, r0, 0x18, 0, 7
+/* 802843A4 00280004 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802843A8 00280008 38 00 00 00 */ li r0, 0
+/* 802843AC 0028000C 91 24 80 00 */ stw r9, -0x8000(r4)
+/* 802843B0 00280010 98 A4 80 00 */ stb r5, -0x8000(r4)
+/* 802843B4 00280014 90 E4 80 00 */ stw r7, -0x8000(r4)
+/* 802843B8 00280018 98 A4 80 00 */ stb r5, -0x8000(r4)
+/* 802843BC 0028001C 90 C4 80 00 */ stw r6, -0x8000(r4)
+/* 802843C0 00280020 B0 03 00 02 */ sth r0, 2(r3)
+/* 802843C4 00280024 E3 E1 00 38 */ psq_l f31, 56(r1), 0, qr0
+/* 802843C8 00280028 CB E1 00 30 */ lfd f31, 0x30(r1)
+/* 802843CC 0028002C 83 E1 00 2C */ lwz r31, 0x2c(r1)
+/* 802843D0 00280030 83 C1 00 28 */ lwz r30, 0x28(r1)
+/* 802843D4 00280034 83 A1 00 24 */ lwz r29, 0x24(r1)
+/* 802843D8 00280038 83 81 00 20 */ lwz r28, 0x20(r1)
+/* 802843DC 0028003C 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 802843E0 00280040 7C 08 03 A6 */ mtlr r0
+/* 802843E4 00280044 38 21 00 40 */ addi r1, r1, 0x40
+/* 802843E8 00280048 4E 80 00 20 */ blr
+
+.global GXSetFogColor
+GXSetFogColor:
+/* 802843EC 0028004C 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 802843F0 00280050 38 00 00 61 */ li r0, 0x61
+/* 802843F4 00280054 98 04 80 00 */ stb r0, 0xCC008000@l(r4)
+/* 802843F8 00280058 3C A0 F2 00 */ lis r5, 0xf200
+/* 802843FC 0028005C 80 63 00 00 */ lwz r3, 0(r3)
+/* 80284400 00280060 38 00 00 00 */ li r0, 0
+/* 80284404 00280064 50 65 C2 3E */ rlwimi r5, r3, 0x18, 8, 0x1f
+/* 80284408 00280068 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8028440C 0028006C 90 A4 80 00 */ stw r5, -0x8000(r4)
+/* 80284410 00280070 B0 03 00 02 */ sth r0, 2(r3)
+/* 80284414 00280074 4E 80 00 20 */ blr
+
+.global GXInitFogAdjTable
+GXInitFogAdjTable:
+/* 80284418 00280078 94 21 FF 80 */ stwu r1, -0x80(r1)
+/* 8028441C 0028007C 7C 08 02 A6 */ mflr r0
+/* 80284420 00280080 90 01 00 84 */ stw r0, 0x84(r1)
+/* 80284424 00280084 DB E1 00 70 */ stfd f31, 0x70(r1)
+/* 80284428 00280088 F3 E1 00 78 */ psq_st f31, 120(r1), 0, qr0
+/* 8028442C 0028008C DB C1 00 60 */ stfd f30, 0x60(r1)
+/* 80284430 00280090 F3 C1 00 68 */ psq_st f30, 104(r1), 0, qr0
+/* 80284434 00280094 DB A1 00 50 */ stfd f29, 0x50(r1)
+/* 80284438 00280098 F3 A1 00 58 */ psq_st f29, 88(r1), 0, qr0
+/* 8028443C 0028009C DB 81 00 40 */ stfd f28, 0x40(r1)
+/* 80284440 002800A0 F3 81 00 48 */ psq_st f28, 72(r1), 0, qr0
+/* 80284444 002800A4 DB 61 00 30 */ stfd f27, 0x30(r1)
+/* 80284448 002800A8 F3 61 00 38 */ psq_st f27, 56(r1), 0, qr0
+/* 8028444C 002800AC DB 41 00 20 */ stfd f26, 0x20(r1)
+/* 80284450 002800B0 F3 41 00 28 */ psq_st f26, 40(r1), 0, qr0
+/* 80284454 002800B4 C8 22 A1 B8 */ lfd f1, lbl_806427B8-_SDA2_BASE_(r2)
+/* 80284458 002800B8 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8028445C 002800BC C0 05 00 3C */ lfs f0, 0x3c(r5)
+/* 80284460 002800C0 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80284464 002800C4 FC 01 00 00 */ fcmpu cr0, f1, f0
+/* 80284468 002800C8 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8028446C 002800CC 40 82 00 24 */ bne lbl_80284490
+/* 80284470 002800D0 C0 45 00 28 */ lfs f2, 0x28(r5)
+/* 80284474 002800D4 C0 02 A1 84 */ lfs f0, lbl_80642784-_SDA2_BASE_(r2)
+/* 80284478 002800D8 C0 25 00 2C */ lfs f1, 0x2c(r5)
+/* 8028447C 002800DC EC 42 00 28 */ fsubs f2, f2, f0
+/* 80284480 002800E0 C0 05 00 00 */ lfs f0, 0(r5)
+/* 80284484 002800E4 EC 21 10 24 */ fdivs f1, f1, f2
+/* 80284488 002800E8 EF 41 00 24 */ fdivs f26, f1, f0
+/* 8028448C 002800EC 48 00 00 18 */ b lbl_802844A4
+lbl_80284490:
+/* 80284490 002800F0 C0 42 A1 84 */ lfs f2, lbl_80642784-_SDA2_BASE_(r2)
+/* 80284494 002800F4 C0 25 00 00 */ lfs f1, 0(r5)
+/* 80284498 002800F8 C0 02 A1 C0 */ lfs f0, lbl_806427C0-_SDA2_BASE_(r2)
+/* 8028449C 002800FC EF 42 08 24 */ fdivs f26, f2, f1
+/* 802844A0 00280100 EC 20 06 B2 */ fmuls f1, f0, f26
+lbl_802844A4:
+/* 802844A4 00280104 3F E0 43 30 */ lis r31, 0x4330
+/* 802844A8 00280108 90 81 00 0C */ stw r4, 0xc(r1)
+/* 802844AC 0028010C CB 82 A1 C8 */ lfd f28, lbl_806427C8-_SDA2_BASE_(r2)
+/* 802844B0 00280110 EF A1 00 72 */ fmuls f29, f1, f1
+/* 802844B4 00280114 93 E1 00 08 */ stw r31, 8(r1)
+/* 802844B8 00280118 7C 7E 1B 78 */ mr r30, r3
+/* 802844BC 0028011C C0 02 A1 98 */ lfs f0, lbl_80642798-_SDA2_BASE_(r2)
+/* 802844C0 00280120 3B A0 00 00 */ li r29, 0
+/* 802844C4 00280124 C8 21 00 08 */ lfd f1, 8(r1)
+/* 802844C8 00280128 C3 C2 A1 84 */ lfs f30, lbl_80642784-_SDA2_BASE_(r2)
+/* 802844CC 0028012C EC 21 E0 28 */ fsubs f1, f1, f28
+/* 802844D0 00280130 C3 E2 A1 C4 */ lfs f31, lbl_806427C4-_SDA2_BASE_(r2)
+/* 802844D4 00280134 EF 60 08 24 */ fdivs f27, f0, f1
+lbl_802844D8:
+/* 802844D8 00280138 38 1D 00 01 */ addi r0, r29, 1
+/* 802844DC 0028013C 93 E1 00 08 */ stw r31, 8(r1)
+/* 802844E0 00280140 54 00 28 34 */ slwi r0, r0, 5
+/* 802844E4 00280144 90 01 00 0C */ stw r0, 0xc(r1)
+/* 802844E8 00280148 C8 01 00 08 */ lfd f0, 8(r1)
+/* 802844EC 0028014C EC 00 E0 28 */ fsubs f0, f0, f28
+/* 802844F0 00280150 EC 00 06 F2 */ fmuls f0, f0, f27
+/* 802844F4 00280154 EC 00 06 B2 */ fmuls f0, f0, f26
+/* 802844F8 00280158 EC 00 00 32 */ fmuls f0, f0, f0
+/* 802844FC 0028015C EC 00 E8 24 */ fdivs f0, f0, f29
+/* 80284500 00280160 EC 3E 00 2A */ fadds f1, f30, f0
+/* 80284504 00280164 4B F5 03 31 */ bl sqrt
+/* 80284508 00280168 FC 00 08 18 */ frsp f0, f1
+/* 8028450C 0028016C EC 3F 00 32 */ fmuls f1, f31, f0
+/* 80284510 00280170 4B F4 2A F1 */ bl __cvt_fp2unsigned
+/* 80284514 00280174 3B BD 00 01 */ addi r29, r29, 1
+/* 80284518 00280178 54 60 05 3E */ clrlwi r0, r3, 0x14
+/* 8028451C 0028017C 28 1D 00 0A */ cmplwi r29, 0xa
+/* 80284520 00280180 B0 1E 00 00 */ sth r0, 0(r30)
+/* 80284524 00280184 3B DE 00 02 */ addi r30, r30, 2
+/* 80284528 00280188 41 80 FF B0 */ blt lbl_802844D8
+/* 8028452C 0028018C E3 E1 00 78 */ psq_l f31, 120(r1), 0, qr0
+/* 80284530 00280190 CB E1 00 70 */ lfd f31, 0x70(r1)
+/* 80284534 00280194 E3 C1 00 68 */ psq_l f30, 104(r1), 0, qr0
+/* 80284538 00280198 CB C1 00 60 */ lfd f30, 0x60(r1)
+/* 8028453C 0028019C E3 A1 00 58 */ psq_l f29, 88(r1), 0, qr0
+/* 80284540 002801A0 CB A1 00 50 */ lfd f29, 0x50(r1)
+/* 80284544 002801A4 E3 81 00 48 */ psq_l f28, 72(r1), 0, qr0
+/* 80284548 002801A8 CB 81 00 40 */ lfd f28, 0x40(r1)
+/* 8028454C 002801AC E3 61 00 38 */ psq_l f27, 56(r1), 0, qr0
+/* 80284550 002801B0 CB 61 00 30 */ lfd f27, 0x30(r1)
+/* 80284554 002801B4 E3 41 00 28 */ psq_l f26, 40(r1), 0, qr0
+/* 80284558 002801B8 CB 41 00 20 */ lfd f26, 0x20(r1)
+/* 8028455C 002801BC 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80284560 002801C0 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 80284564 002801C4 80 01 00 84 */ lwz r0, 0x84(r1)
+/* 80284568 002801C8 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8028456C 002801CC 7C 08 03 A6 */ mtlr r0
+/* 80284570 002801D0 38 21 00 80 */ addi r1, r1, 0x80
+/* 80284574 002801D4 4E 80 00 20 */ blr
+
+.global GXSetFogRangeAdj
+GXSetFogRangeAdj:
+/* 80284578 002801D8 2C 03 00 00 */ cmpwi r3, 0
+/* 8028457C 002801DC 41 82 00 E8 */ beq lbl_80284664
+/* 80284580 002801E0 A1 85 00 00 */ lhz r12, 0(r5)
+/* 80284584 002801E4 39 60 00 00 */ li r11, 0
+/* 80284588 002801E8 A1 45 00 02 */ lhz r10, 2(r5)
+/* 8028458C 002801EC 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80284590 002801F0 51 8B 05 3E */ rlwimi r11, r12, 0, 0x14, 0x1f
+/* 80284594 002801F4 38 00 00 61 */ li r0, 0x61
+/* 80284598 002801F8 7D 69 5B 78 */ mr r9, r11
+/* 8028459C 002801FC 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 802845A0 00280200 51 49 62 26 */ rlwimi r9, r10, 0xc, 8, 0x13
+/* 802845A4 00280204 38 E0 00 E9 */ li r7, 0xe9
+/* 802845A8 00280208 7D 28 4B 78 */ mr r8, r9
+/* 802845AC 0028020C A1 85 00 04 */ lhz r12, 4(r5)
+/* 802845B0 00280210 50 E8 C0 0E */ rlwimi r8, r7, 0x18, 0, 7
+/* 802845B4 00280214 39 60 00 00 */ li r11, 0
+/* 802845B8 00280218 51 8B 05 3E */ rlwimi r11, r12, 0, 0x14, 0x1f
+/* 802845BC 0028021C 91 06 80 00 */ stw r8, -0x8000(r6)
+/* 802845C0 00280220 7D 69 5B 78 */ mr r9, r11
+/* 802845C4 00280224 A1 45 00 06 */ lhz r10, 6(r5)
+/* 802845C8 00280228 38 E0 00 EA */ li r7, 0xea
+/* 802845CC 0028022C 98 06 80 00 */ stb r0, -0x8000(r6)
+/* 802845D0 00280230 51 49 62 26 */ rlwimi r9, r10, 0xc, 8, 0x13
+/* 802845D4 00280234 A1 85 00 08 */ lhz r12, 8(r5)
+/* 802845D8 00280238 7D 28 4B 78 */ mr r8, r9
+/* 802845DC 0028023C 39 60 00 00 */ li r11, 0
+/* 802845E0 00280240 50 E8 C0 0E */ rlwimi r8, r7, 0x18, 0, 7
+/* 802845E4 00280244 A1 45 00 0A */ lhz r10, 0xa(r5)
+/* 802845E8 00280248 51 8B 05 3E */ rlwimi r11, r12, 0, 0x14, 0x1f
+/* 802845EC 0028024C 91 06 80 00 */ stw r8, -0x8000(r6)
+/* 802845F0 00280250 7D 69 5B 78 */ mr r9, r11
+/* 802845F4 00280254 38 E0 00 EB */ li r7, 0xeb
+/* 802845F8 00280258 51 49 62 26 */ rlwimi r9, r10, 0xc, 8, 0x13
+/* 802845FC 0028025C 98 06 80 00 */ stb r0, -0x8000(r6)
+/* 80284600 00280260 7D 28 4B 78 */ mr r8, r9
+/* 80284604 00280264 A1 85 00 0C */ lhz r12, 0xc(r5)
+/* 80284608 00280268 50 E8 C0 0E */ rlwimi r8, r7, 0x18, 0, 7
+/* 8028460C 0028026C 39 60 00 00 */ li r11, 0
+/* 80284610 00280270 51 8B 05 3E */ rlwimi r11, r12, 0, 0x14, 0x1f
+/* 80284614 00280274 91 06 80 00 */ stw r8, -0x8000(r6)
+/* 80284618 00280278 7D 69 5B 78 */ mr r9, r11
+/* 8028461C 0028027C A1 45 00 0E */ lhz r10, 0xe(r5)
+/* 80284620 00280280 38 E0 00 EC */ li r7, 0xec
+/* 80284624 00280284 98 06 80 00 */ stb r0, -0x8000(r6)
+/* 80284628 00280288 51 49 62 26 */ rlwimi r9, r10, 0xc, 8, 0x13
+/* 8028462C 0028028C A1 85 00 10 */ lhz r12, 0x10(r5)
+/* 80284630 00280290 7D 28 4B 78 */ mr r8, r9
+/* 80284634 00280294 39 60 00 00 */ li r11, 0
+/* 80284638 00280298 50 E8 C0 0E */ rlwimi r8, r7, 0x18, 0, 7
+/* 8028463C 0028029C A1 45 00 12 */ lhz r10, 0x12(r5)
+/* 80284640 002802A0 91 06 80 00 */ stw r8, -0x8000(r6)
+/* 80284644 002802A4 51 8B 05 3E */ rlwimi r11, r12, 0, 0x14, 0x1f
+/* 80284648 002802A8 7D 69 5B 78 */ mr r9, r11
+/* 8028464C 002802AC 38 E0 00 ED */ li r7, 0xed
+/* 80284650 002802B0 51 49 62 26 */ rlwimi r9, r10, 0xc, 8, 0x13
+/* 80284654 002802B4 98 06 80 00 */ stb r0, -0x8000(r6)
+/* 80284658 002802B8 7D 28 4B 78 */ mr r8, r9
+/* 8028465C 002802BC 50 E8 C0 0E */ rlwimi r8, r7, 0x18, 0, 7
+/* 80284660 002802C0 91 06 80 00 */ stw r8, -0x8000(r6)
+lbl_80284664:
+/* 80284664 002802C4 38 04 01 56 */ addi r0, r4, 0x156
+/* 80284668 002802C8 38 C0 00 00 */ li r6, 0
+/* 8028466C 002802CC 50 06 05 BE */ rlwimi r6, r0, 0, 0x16, 0x1f
+/* 80284670 002802D0 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 80284674 002802D4 38 00 00 61 */ li r0, 0x61
+/* 80284678 002802D8 38 A0 00 E8 */ li r5, 0xe8
+/* 8028467C 002802DC 50 66 55 6A */ rlwimi r6, r3, 0xa, 0x15, 0x15
+/* 80284680 002802E0 98 04 80 00 */ stb r0, 0xCC008000@l(r4)
+/* 80284684 002802E4 50 A6 C0 0E */ rlwimi r6, r5, 0x18, 0, 7
+/* 80284688 002802E8 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8028468C 002802EC 90 C4 80 00 */ stw r6, -0x8000(r4)
+/* 80284690 002802F0 38 00 00 00 */ li r0, 0
+/* 80284694 002802F4 B0 03 00 02 */ sth r0, 2(r3)
+/* 80284698 002802F8 4E 80 00 20 */ blr
+
+.global GXSetBlendMode
+GXSetBlendMode:
+/* 8028469C 002802FC 81 42 A0 D0 */ lwz r10, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802846A0 00280300 38 03 FF FD */ addi r0, r3, -3
+/* 802846A4 00280304 39 03 FF FE */ addi r8, r3, -2
+/* 802846A8 00280308 3C E0 CC 01 */ lis r7, 0xCC008000@ha
+/* 802846AC 0028030C 7C 00 00 34 */ cntlzw r0, r0
+/* 802846B0 00280310 81 2A 02 20 */ lwz r9, 0x220(r10)
+/* 802846B4 00280314 50 09 35 28 */ rlwimi r9, r0, 6, 0x14, 0x14
+/* 802846B8 00280318 7D 08 00 34 */ cntlzw r8, r8
+/* 802846BC 0028031C 38 00 00 61 */ li r0, 0x61
+/* 802846C0 00280320 98 07 80 00 */ stb r0, 0xCC008000@l(r7)
+/* 802846C4 00280324 50 69 07 FE */ rlwimi r9, r3, 0, 0x1f, 0x1f
+/* 802846C8 00280328 51 09 E7 BC */ rlwimi r9, r8, 0x1c, 0x1e, 0x1e
+/* 802846CC 0028032C 38 00 00 00 */ li r0, 0
+/* 802846D0 00280330 50 C9 64 26 */ rlwimi r9, r6, 0xc, 0x10, 0x13
+/* 802846D4 00280334 50 89 45 6E */ rlwimi r9, r4, 8, 0x15, 0x17
+/* 802846D8 00280338 50 A9 2E 34 */ rlwimi r9, r5, 5, 0x18, 0x1a
+/* 802846DC 0028033C 91 27 80 00 */ stw r9, -0x8000(r7)
+/* 802846E0 00280340 91 2A 02 20 */ stw r9, 0x220(r10)
+/* 802846E4 00280344 B0 0A 00 02 */ sth r0, 2(r10)
+/* 802846E8 00280348 4E 80 00 20 */ blr
+
+.global GXSetColorUpdate
+GXSetColorUpdate:
+/* 802846EC 0028034C 80 E2 A0 D0 */ lwz r7, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802846F0 00280350 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 802846F4 00280354 38 A0 00 61 */ li r5, 0x61
+/* 802846F8 00280358 38 00 00 00 */ li r0, 0
+/* 802846FC 0028035C 80 C7 02 20 */ lwz r6, 0x220(r7)
+/* 80284700 00280360 50 66 1F 38 */ rlwimi r6, r3, 3, 0x1c, 0x1c
+/* 80284704 00280364 98 A4 80 00 */ stb r5, 0xCC008000@l(r4)
+/* 80284708 00280368 90 C4 80 00 */ stw r6, -0x8000(r4)
+/* 8028470C 0028036C 90 C7 02 20 */ stw r6, 0x220(r7)
+/* 80284710 00280370 B0 07 00 02 */ sth r0, 2(r7)
+/* 80284714 00280374 4E 80 00 20 */ blr
+
+.global GXSetAlphaUpdate
+GXSetAlphaUpdate:
+/* 80284718 00280378 80 E2 A0 D0 */ lwz r7, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8028471C 0028037C 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 80284720 00280380 38 A0 00 61 */ li r5, 0x61
+/* 80284724 00280384 38 00 00 00 */ li r0, 0
+/* 80284728 00280388 80 C7 02 20 */ lwz r6, 0x220(r7)
+/* 8028472C 0028038C 50 66 26 F6 */ rlwimi r6, r3, 4, 0x1b, 0x1b
+/* 80284730 00280390 98 A4 80 00 */ stb r5, 0xCC008000@l(r4)
+/* 80284734 00280394 90 C4 80 00 */ stw r6, -0x8000(r4)
+/* 80284738 00280398 90 C7 02 20 */ stw r6, 0x220(r7)
+/* 8028473C 0028039C B0 07 00 02 */ sth r0, 2(r7)
+/* 80284740 002803A0 4E 80 00 20 */ blr
+
+.global GXSetZMode
+GXSetZMode:
+/* 80284744 002803A4 81 22 A0 D0 */ lwz r9, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80284748 002803A8 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 8028474C 002803AC 38 E0 00 61 */ li r7, 0x61
+/* 80284750 002803B0 38 00 00 00 */ li r0, 0
+/* 80284754 002803B4 81 09 02 28 */ lwz r8, 0x228(r9)
+/* 80284758 002803B8 50 68 07 FE */ rlwimi r8, r3, 0, 0x1f, 0x1f
+/* 8028475C 002803BC 50 88 0F 3C */ rlwimi r8, r4, 1, 0x1c, 0x1e
+/* 80284760 002803C0 98 E6 80 00 */ stb r7, 0xCC008000@l(r6)
+/* 80284764 002803C4 50 A8 26 F6 */ rlwimi r8, r5, 4, 0x1b, 0x1b
+/* 80284768 002803C8 91 06 80 00 */ stw r8, -0x8000(r6)
+/* 8028476C 002803CC 91 09 02 28 */ stw r8, 0x228(r9)
+/* 80284770 002803D0 B0 09 00 02 */ sth r0, 2(r9)
+/* 80284774 002803D4 4E 80 00 20 */ blr
+
+.global GXSetZCompLoc
+GXSetZCompLoc:
+/* 80284778 002803D8 80 E2 A0 D0 */ lwz r7, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8028477C 002803DC 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 80284780 002803E0 38 A0 00 61 */ li r5, 0x61
+/* 80284784 002803E4 38 00 00 00 */ li r0, 0
+/* 80284788 002803E8 80 C7 02 2C */ lwz r6, 0x22c(r7)
+/* 8028478C 002803EC 50 66 36 72 */ rlwimi r6, r3, 6, 0x19, 0x19
+/* 80284790 002803F0 90 C7 02 2C */ stw r6, 0x22c(r7)
+/* 80284794 002803F4 98 A4 80 00 */ stb r5, 0xCC008000@l(r4)
+/* 80284798 002803F8 80 67 02 2C */ lwz r3, 0x22c(r7)
+/* 8028479C 002803FC 90 64 80 00 */ stw r3, -0x8000(r4)
+/* 802847A0 00280400 B0 07 00 02 */ sth r0, 2(r7)
+/* 802847A4 00280404 4E 80 00 20 */ blr
+
+.global GXSetPixelFmt
+GXSetPixelFmt:
+/* 802847A8 00280408 81 22 A0 D0 */ lwz r9, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802847AC 0028040C 3C C0 80 43 */ lis r6, lbl_80435948@ha
+/* 802847B0 00280410 54 67 10 3A */ slwi r7, r3, 2
+/* 802847B4 00280414 38 C6 59 48 */ addi r6, r6, lbl_80435948@l
+/* 802847B8 00280418 81 09 02 2C */ lwz r8, 0x22c(r9)
+/* 802847BC 0028041C 7C 06 38 2E */ lwzx r0, r6, r7
+/* 802847C0 00280420 7D 05 43 78 */ mr r5, r8
+/* 802847C4 00280424 50 05 07 7E */ rlwimi r5, r0, 0, 0x1d, 0x1f
+/* 802847C8 00280428 50 85 1E B8 */ rlwimi r5, r4, 3, 0x1a, 0x1c
+/* 802847CC 0028042C 7C 08 28 40 */ cmplw r8, r5
+/* 802847D0 00280430 90 A9 02 2C */ stw r5, 0x22c(r9)
+/* 802847D4 00280434 41 82 00 38 */ beq lbl_8028480C
+/* 802847D8 00280438 3C A0 CC 01 */ lis r5, 0xCC008000@ha
+/* 802847DC 0028043C 38 00 00 61 */ li r0, 0x61
+/* 802847E0 00280440 98 05 80 00 */ stb r0, 0xCC008000@l(r5)
+/* 802847E4 00280444 38 03 FF FE */ addi r0, r3, -2
+/* 802847E8 00280448 7C 04 00 34 */ cntlzw r4, r0
+/* 802847EC 0028044C 80 09 02 2C */ lwz r0, 0x22c(r9)
+/* 802847F0 00280450 90 05 80 00 */ stw r0, -0x8000(r5)
+/* 802847F4 00280454 80 09 02 54 */ lwz r0, 0x254(r9)
+/* 802847F8 00280458 50 80 25 AC */ rlwimi r0, r4, 4, 0x16, 0x16
+/* 802847FC 0028045C 90 09 02 54 */ stw r0, 0x254(r9)
+/* 80284800 00280460 80 09 05 FC */ lwz r0, 0x5fc(r9)
+/* 80284804 00280464 60 00 00 04 */ ori r0, r0, 4
+/* 80284808 00280468 90 09 05 FC */ stw r0, 0x5fc(r9)
+lbl_8028480C:
+/* 8028480C 0028046C 7C 06 38 2E */ lwzx r0, r6, r7
+/* 80284810 00280470 28 00 00 04 */ cmplwi r0, 4
+/* 80284814 00280474 40 82 00 30 */ bne lbl_80284844
+/* 80284818 00280478 38 03 FF FC */ addi r0, r3, -4
+/* 8028481C 0028047C 80 89 02 24 */ lwz r4, 0x224(r9)
+/* 80284820 00280480 50 04 4D 6C */ rlwimi r4, r0, 9, 0x15, 0x16
+/* 80284824 00280484 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80284828 00280488 38 00 00 42 */ li r0, 0x42
+/* 8028482C 0028048C 50 04 C0 0E */ rlwimi r4, r0, 0x18, 0, 7
+/* 80284830 00280490 90 89 02 24 */ stw r4, 0x224(r9)
+/* 80284834 00280494 38 00 00 61 */ li r0, 0x61
+/* 80284838 00280498 98 03 80 00 */ stb r0, 0xCC008000@l(r3)
+/* 8028483C 0028049C 80 09 02 24 */ lwz r0, 0x224(r9)
+/* 80284840 002804A0 90 03 80 00 */ stw r0, -0x8000(r3)
+lbl_80284844:
+/* 80284844 002804A4 38 00 00 00 */ li r0, 0
+/* 80284848 002804A8 B0 09 00 02 */ sth r0, 2(r9)
+/* 8028484C 002804AC 4E 80 00 20 */ blr
+
+.global GXSetDither
+GXSetDither:
+/* 80284850 002804B0 80 E2 A0 D0 */ lwz r7, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80284854 002804B4 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 80284858 002804B8 38 A0 00 61 */ li r5, 0x61
+/* 8028485C 002804BC 38 00 00 00 */ li r0, 0
+/* 80284860 002804C0 80 C7 02 20 */ lwz r6, 0x220(r7)
+/* 80284864 002804C4 50 66 17 7A */ rlwimi r6, r3, 2, 0x1d, 0x1d
+/* 80284868 002804C8 98 A4 80 00 */ stb r5, 0xCC008000@l(r4)
+/* 8028486C 002804CC 90 C4 80 00 */ stw r6, -0x8000(r4)
+/* 80284870 002804D0 90 C7 02 20 */ stw r6, 0x220(r7)
+/* 80284874 002804D4 B0 07 00 02 */ sth r0, 2(r7)
+/* 80284878 002804D8 4E 80 00 20 */ blr
+
+.global GXSetDstAlpha
+GXSetDstAlpha:
+/* 8028487C 002804DC 81 02 A0 D0 */ lwz r8, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80284880 002804E0 3C A0 CC 01 */ lis r5, 0xCC008000@ha
+/* 80284884 002804E4 38 C0 00 61 */ li r6, 0x61
+/* 80284888 002804E8 38 00 00 00 */ li r0, 0
+/* 8028488C 002804EC 80 E8 02 24 */ lwz r7, 0x224(r8)
+/* 80284890 002804F0 50 87 06 3E */ rlwimi r7, r4, 0, 0x18, 0x1f
+/* 80284894 002804F4 50 67 45 EE */ rlwimi r7, r3, 8, 0x17, 0x17
+/* 80284898 002804F8 98 C5 80 00 */ stb r6, 0xCC008000@l(r5)
+/* 8028489C 002804FC 90 E5 80 00 */ stw r7, -0x8000(r5)
+/* 802848A0 00280500 90 E8 02 24 */ stw r7, 0x224(r8)
+/* 802848A4 00280504 B0 08 00 02 */ sth r0, 2(r8)
+/* 802848A8 00280508 4E 80 00 20 */ blr
+
+.global GXSetFieldMask
+GXSetFieldMask:
+/* 802848AC 0028050C 3C A0 CC 01 */ lis r5, 0xCC008000@ha
+/* 802848B0 00280510 38 00 00 61 */ li r0, 0x61
+/* 802848B4 00280514 98 05 80 00 */ stb r0, 0xCC008000@l(r5)
+/* 802848B8 00280518 38 00 00 44 */ li r0, 0x44
+/* 802848BC 0028051C 38 C0 00 00 */ li r6, 0
+/* 802848C0 00280520 50 86 07 FE */ rlwimi r6, r4, 0, 0x1f, 0x1f
+/* 802848C4 00280524 50 66 0F BC */ rlwimi r6, r3, 1, 0x1e, 0x1e
+/* 802848C8 00280528 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802848CC 0028052C 50 06 C0 0E */ rlwimi r6, r0, 0x18, 0, 7
+/* 802848D0 00280530 38 00 00 00 */ li r0, 0
+/* 802848D4 00280534 90 C5 80 00 */ stw r6, -0x8000(r5)
+/* 802848D8 00280538 B0 03 00 02 */ sth r0, 2(r3)
+/* 802848DC 0028053C 4E 80 00 20 */ blr
+
+.global GXSetFieldMode
+GXSetFieldMode:
+/* 802848E0 00280540 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802848E4 00280544 7C 08 02 A6 */ mflr r0
+/* 802848E8 00280548 80 A2 A0 D0 */ lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802848EC 0028054C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802848F0 00280550 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802848F4 00280554 3F E0 CC 01 */ lis r31, 0xCC008000@ha
+/* 802848F8 00280558 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802848FC 0028055C 3B C0 00 61 */ li r30, 0x61
+/* 80284900 00280560 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 80284904 00280564 7C 7D 1B 78 */ mr r29, r3
+/* 80284908 00280568 80 05 00 7C */ lwz r0, 0x7c(r5)
+/* 8028490C 0028056C 50 80 B2 52 */ rlwimi r0, r4, 0x16, 9, 9
+/* 80284910 00280570 90 05 00 7C */ stw r0, 0x7c(r5)
+/* 80284914 00280574 9B DF 80 00 */ stb r30, 0xCC008000@l(r31)
+/* 80284918 00280578 80 05 00 7C */ lwz r0, 0x7c(r5)
+/* 8028491C 0028057C 90 1F 80 00 */ stw r0, -0x8000(r31)
+/* 80284920 00280580 4B FF F1 FD */ bl __GXFlushTextureState
+/* 80284924 00280584 9B DF 80 00 */ stb r30, -0x8000(r31)
+/* 80284928 00280588 67 A0 68 00 */ oris r0, r29, 0x6800
+/* 8028492C 0028058C 90 1F 80 00 */ stw r0, -0x8000(r31)
+/* 80284930 00280590 4B FF F1 ED */ bl __GXFlushTextureState
+/* 80284934 00280594 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80284938 00280598 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8028493C 0028059C 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 80284940 002805A0 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 80284944 002805A4 7C 08 03 A6 */ mtlr r0
+/* 80284948 002805A8 38 21 00 20 */ addi r1, r1, 0x20
+/* 8028494C 002805AC 4E 80 00 20 */ blr
diff --git a/asm/SDK/GX/GXTev.s b/asm/SDK/GX/GXTev.s
new file mode 100644
index 0000000..26362b2
--- /dev/null
+++ b/asm/SDK/GX/GXTev.s
@@ -0,0 +1,493 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global GXSetTevOp
+GXSetTevOp:
+/* 80283B40 0027F7A0 2C 03 00 00 */ cmpwi r3, 0
+/* 80283B44 0027F7A4 3C A0 80 43 */ lis r5, lbl_804358D0@ha
+/* 80283B48 0027F7A8 38 A5 58 D0 */ addi r5, r5, lbl_804358D0@l
+/* 80283B4C 0027F7AC 40 82 00 1C */ bne lbl_80283B68
+/* 80283B50 0027F7B0 54 86 10 3A */ slwi r6, r4, 2
+/* 80283B54 0027F7B4 38 85 00 00 */ addi r4, r5, 0
+/* 80283B58 0027F7B8 38 05 00 28 */ addi r0, r5, 0x28
+/* 80283B5C 0027F7BC 7D 04 32 14 */ add r8, r4, r6
+/* 80283B60 0027F7C0 7D 20 32 14 */ add r9, r0, r6
+/* 80283B64 0027F7C4 48 00 00 18 */ b lbl_80283B7C
+lbl_80283B68:
+/* 80283B68 0027F7C8 54 86 10 3A */ slwi r6, r4, 2
+/* 80283B6C 0027F7CC 38 85 00 14 */ addi r4, r5, 0x14
+/* 80283B70 0027F7D0 38 05 00 3C */ addi r0, r5, 0x3c
+/* 80283B74 0027F7D4 7D 04 32 14 */ add r8, r4, r6
+/* 80283B78 0027F7D8 7D 20 32 14 */ add r9, r0, r6
+lbl_80283B7C:
+/* 80283B7C 0027F7DC 80 E2 A0 D0 */ lwz r7, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80283B80 0027F7E0 54 60 10 3A */ slwi r0, r3, 2
+/* 80283B84 0027F7E4 80 68 00 00 */ lwz r3, 0(r8)
+/* 80283B88 0027F7E8 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 80283B8C 0027F7EC 7C C7 02 14 */ add r6, r7, r0
+/* 80283B90 0027F7F0 38 A0 00 61 */ li r5, 0x61
+/* 80283B94 0027F7F4 81 06 01 80 */ lwz r8, 0x180(r6)
+/* 80283B98 0027F7F8 38 00 00 00 */ li r0, 0
+/* 80283B9C 0027F7FC 98 A4 80 00 */ stb r5, 0xCC008000@l(r4)
+/* 80283BA0 0027F800 55 08 00 0E */ rlwinm r8, r8, 0, 0, 7
+/* 80283BA4 0027F804 50 68 02 3E */ rlwimi r8, r3, 0, 8, 0x1f
+/* 80283BA8 0027F808 91 04 80 00 */ stw r8, -0x8000(r4)
+/* 80283BAC 0027F80C 91 06 01 80 */ stw r8, 0x180(r6)
+/* 80283BB0 0027F810 81 06 01 C0 */ lwz r8, 0x1c0(r6)
+/* 80283BB4 0027F814 80 69 00 00 */ lwz r3, 0(r9)
+/* 80283BB8 0027F818 55 08 07 0E */ rlwinm r8, r8, 0, 0x1c, 7
+/* 80283BBC 0027F81C 98 A4 80 00 */ stb r5, -0x8000(r4)
+/* 80283BC0 0027F820 50 68 02 36 */ rlwimi r8, r3, 0, 8, 0x1b
+/* 80283BC4 0027F824 91 04 80 00 */ stw r8, -0x8000(r4)
+/* 80283BC8 0027F828 91 06 01 C0 */ stw r8, 0x1c0(r6)
+/* 80283BCC 0027F82C B0 07 00 02 */ sth r0, 2(r7)
+/* 80283BD0 0027F830 4E 80 00 20 */ blr
+
+.global GXSetTevColorIn
+GXSetTevColorIn:
+/* 80283BD4 0027F834 81 62 A0 D0 */ lwz r11, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80283BD8 0027F838 54 60 10 3A */ slwi r0, r3, 2
+/* 80283BDC 0027F83C 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80283BE0 0027F840 39 00 00 61 */ li r8, 0x61
+/* 80283BE4 0027F844 7D 4B 02 14 */ add r10, r11, r0
+/* 80283BE8 0027F848 38 00 00 00 */ li r0, 0
+/* 80283BEC 0027F84C 81 2A 01 80 */ lwz r9, 0x180(r10)
+/* 80283BF0 0027F850 50 89 64 26 */ rlwimi r9, r4, 0xc, 0x10, 0x13
+/* 80283BF4 0027F854 50 A9 45 2E */ rlwimi r9, r5, 8, 0x14, 0x17
+/* 80283BF8 0027F858 99 03 80 00 */ stb r8, 0xCC008000@l(r3)
+/* 80283BFC 0027F85C 50 C9 26 36 */ rlwimi r9, r6, 4, 0x18, 0x1b
+/* 80283C00 0027F860 50 E9 07 3E */ rlwimi r9, r7, 0, 0x1c, 0x1f
+/* 80283C04 0027F864 91 23 80 00 */ stw r9, -0x8000(r3)
+/* 80283C08 0027F868 91 2A 01 80 */ stw r9, 0x180(r10)
+/* 80283C0C 0027F86C B0 0B 00 02 */ sth r0, 2(r11)
+/* 80283C10 0027F870 4E 80 00 20 */ blr
+
+.global GXSetTevAlphaIn
+GXSetTevAlphaIn:
+/* 80283C14 0027F874 81 62 A0 D0 */ lwz r11, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80283C18 0027F878 54 60 10 3A */ slwi r0, r3, 2
+/* 80283C1C 0027F87C 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80283C20 0027F880 39 00 00 61 */ li r8, 0x61
+/* 80283C24 0027F884 7D 4B 02 14 */ add r10, r11, r0
+/* 80283C28 0027F888 38 00 00 00 */ li r0, 0
+/* 80283C2C 0027F88C 81 2A 01 C0 */ lwz r9, 0x1c0(r10)
+/* 80283C30 0027F890 50 89 6C 24 */ rlwimi r9, r4, 0xd, 0x10, 0x12
+/* 80283C34 0027F894 50 A9 54 EA */ rlwimi r9, r5, 0xa, 0x13, 0x15
+/* 80283C38 0027F898 99 03 80 00 */ stb r8, 0xCC008000@l(r3)
+/* 80283C3C 0027F89C 50 C9 3D B0 */ rlwimi r9, r6, 7, 0x16, 0x18
+/* 80283C40 0027F8A0 50 E9 26 76 */ rlwimi r9, r7, 4, 0x19, 0x1b
+/* 80283C44 0027F8A4 91 23 80 00 */ stw r9, -0x8000(r3)
+/* 80283C48 0027F8A8 91 2A 01 C0 */ stw r9, 0x1c0(r10)
+/* 80283C4C 0027F8AC B0 0B 00 02 */ sth r0, 2(r11)
+/* 80283C50 0027F8B0 4E 80 00 20 */ blr
+
+.global GXSetTevColorOp
+GXSetTevColorOp:
+/* 80283C54 0027F8B4 81 42 A0 D0 */ lwz r10, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80283C58 0027F8B8 54 60 10 3A */ slwi r0, r3, 2
+/* 80283C5C 0027F8BC 2C 04 00 01 */ cmpwi r4, 1
+/* 80283C60 0027F8C0 7D 2A 02 14 */ add r9, r10, r0
+/* 80283C64 0027F8C4 81 69 01 80 */ lwz r11, 0x180(r9)
+/* 80283C68 0027F8C8 50 8B 93 5A */ rlwimi r11, r4, 0x12, 0xd, 0xd
+/* 80283C6C 0027F8CC 41 81 00 10 */ bgt lbl_80283C7C
+/* 80283C70 0027F8D0 50 CB A2 96 */ rlwimi r11, r6, 0x14, 0xa, 0xb
+/* 80283C74 0027F8D4 50 AB 83 9E */ rlwimi r11, r5, 0x10, 0xe, 0xf
+/* 80283C78 0027F8D8 48 00 00 0C */ b lbl_80283C84
+lbl_80283C7C:
+/* 80283C7C 0027F8DC 50 8B 9A 96 */ rlwimi r11, r4, 0x13, 0xa, 0xb
+/* 80283C80 0027F8E0 65 6B 00 03 */ oris r11, r11, 3
+lbl_80283C84:
+/* 80283C84 0027F8E4 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80283C88 0027F8E8 38 00 00 61 */ li r0, 0x61
+/* 80283C8C 0027F8EC 98 03 80 00 */ stb r0, 0xCC008000@l(r3)
+/* 80283C90 0027F8F0 50 EB 9B 18 */ rlwimi r11, r7, 0x13, 0xc, 0xc
+/* 80283C94 0027F8F4 51 0B B2 12 */ rlwimi r11, r8, 0x16, 8, 9
+/* 80283C98 0027F8F8 38 00 00 00 */ li r0, 0
+/* 80283C9C 0027F8FC 91 63 80 00 */ stw r11, -0x8000(r3)
+/* 80283CA0 0027F900 91 69 01 80 */ stw r11, 0x180(r9)
+/* 80283CA4 0027F904 B0 0A 00 02 */ sth r0, 2(r10)
+/* 80283CA8 0027F908 4E 80 00 20 */ blr
+
+.global GXSetTevAlphaOp
+GXSetTevAlphaOp:
+/* 80283CAC 0027F90C 81 42 A0 D0 */ lwz r10, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80283CB0 0027F910 54 60 10 3A */ slwi r0, r3, 2
+/* 80283CB4 0027F914 2C 04 00 01 */ cmpwi r4, 1
+/* 80283CB8 0027F918 7D 2A 02 14 */ add r9, r10, r0
+/* 80283CBC 0027F91C 81 69 01 C0 */ lwz r11, 0x1c0(r9)
+/* 80283CC0 0027F920 50 8B 93 5A */ rlwimi r11, r4, 0x12, 0xd, 0xd
+/* 80283CC4 0027F924 41 81 00 10 */ bgt lbl_80283CD4
+/* 80283CC8 0027F928 50 CB A2 96 */ rlwimi r11, r6, 0x14, 0xa, 0xb
+/* 80283CCC 0027F92C 50 AB 83 9E */ rlwimi r11, r5, 0x10, 0xe, 0xf
+/* 80283CD0 0027F930 48 00 00 0C */ b lbl_80283CDC
+lbl_80283CD4:
+/* 80283CD4 0027F934 50 8B 9A 96 */ rlwimi r11, r4, 0x13, 0xa, 0xb
+/* 80283CD8 0027F938 65 6B 00 03 */ oris r11, r11, 3
+lbl_80283CDC:
+/* 80283CDC 0027F93C 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80283CE0 0027F940 38 00 00 61 */ li r0, 0x61
+/* 80283CE4 0027F944 98 03 80 00 */ stb r0, 0xCC008000@l(r3)
+/* 80283CE8 0027F948 50 EB 9B 18 */ rlwimi r11, r7, 0x13, 0xc, 0xc
+/* 80283CEC 0027F94C 51 0B B2 12 */ rlwimi r11, r8, 0x16, 8, 9
+/* 80283CF0 0027F950 38 00 00 00 */ li r0, 0
+/* 80283CF4 0027F954 91 63 80 00 */ stw r11, -0x8000(r3)
+/* 80283CF8 0027F958 91 69 01 C0 */ stw r11, 0x1c0(r9)
+/* 80283CFC 0027F95C B0 0A 00 02 */ sth r0, 2(r10)
+/* 80283D00 0027F960 4E 80 00 20 */ blr
+
+.global GXSetTevColor
+GXSetTevColor:
+/* 80283D04 0027F964 54 63 08 3C */ slwi r3, r3, 1
+/* 80283D08 0027F968 81 04 00 00 */ lwz r8, 0(r4)
+/* 80283D0C 0027F96C 38 03 00 E0 */ addi r0, r3, 0xe0
+/* 80283D10 0027F970 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 80283D14 0027F974 54 07 C0 0E */ slwi r7, r0, 0x18
+/* 80283D18 0027F978 38 A0 00 61 */ li r5, 0x61
+/* 80283D1C 0027F97C 51 07 46 3E */ rlwimi r7, r8, 8, 0x18, 0x1f
+/* 80283D20 0027F980 98 A4 80 00 */ stb r5, 0xCC008000@l(r4)
+/* 80283D24 0027F984 51 07 63 26 */ rlwimi r7, r8, 0xc, 0xc, 0x13
+/* 80283D28 0027F988 38 03 00 E1 */ addi r0, r3, 0xe1
+/* 80283D2C 0027F98C 90 E4 80 00 */ stw r7, -0x8000(r4)
+/* 80283D30 0027F990 54 06 C0 0E */ slwi r6, r0, 0x18
+/* 80283D34 0027F994 51 06 C6 3E */ rlwimi r6, r8, 0x18, 0x18, 0x1f
+/* 80283D38 0027F998 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80283D3C 0027F99C 98 A4 80 00 */ stb r5, -0x8000(r4)
+/* 80283D40 0027F9A0 51 06 E3 26 */ rlwimi r6, r8, 0x1c, 0xc, 0x13
+/* 80283D44 0027F9A4 38 00 00 00 */ li r0, 0
+/* 80283D48 0027F9A8 90 C4 80 00 */ stw r6, -0x8000(r4)
+/* 80283D4C 0027F9AC 98 A4 80 00 */ stb r5, -0x8000(r4)
+/* 80283D50 0027F9B0 90 C4 80 00 */ stw r6, -0x8000(r4)
+/* 80283D54 0027F9B4 98 A4 80 00 */ stb r5, -0x8000(r4)
+/* 80283D58 0027F9B8 90 C4 80 00 */ stw r6, -0x8000(r4)
+/* 80283D5C 0027F9BC B0 03 00 02 */ sth r0, 2(r3)
+/* 80283D60 0027F9C0 4E 80 00 20 */ blr
+
+.global GXSetTevColorS10
+GXSetTevColorS10:
+/* 80283D64 0027F9C4 54 63 08 3C */ slwi r3, r3, 1
+/* 80283D68 0027F9C8 81 04 00 00 */ lwz r8, 0(r4)
+/* 80283D6C 0027F9CC 38 03 00 E0 */ addi r0, r3, 0xe0
+/* 80283D70 0027F9D0 3C A0 CC 01 */ lis r5, 0xCC008000@ha
+/* 80283D74 0027F9D4 54 07 C0 0E */ slwi r7, r0, 0x18
+/* 80283D78 0027F9D8 38 C0 00 61 */ li r6, 0x61
+/* 80283D7C 0027F9DC 81 24 00 04 */ lwz r9, 4(r4)
+/* 80283D80 0027F9E0 51 07 85 7E */ rlwimi r7, r8, 0x10, 0x15, 0x1f
+/* 80283D84 0027F9E4 98 C5 80 00 */ stb r6, 0xCC008000@l(r5)
+/* 80283D88 0027F9E8 38 03 00 E1 */ addi r0, r3, 0xe1
+/* 80283D8C 0027F9EC 51 27 62 66 */ rlwimi r7, r9, 0xc, 9, 0x13
+/* 80283D90 0027F9F0 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80283D94 0027F9F4 54 04 C0 0E */ slwi r4, r0, 0x18
+/* 80283D98 0027F9F8 90 E5 80 00 */ stw r7, -0x8000(r5)
+/* 80283D9C 0027F9FC 51 24 85 7E */ rlwimi r4, r9, 0x10, 0x15, 0x1f
+/* 80283DA0 0027FA00 38 00 00 00 */ li r0, 0
+/* 80283DA4 0027FA04 98 C5 80 00 */ stb r6, -0x8000(r5)
+/* 80283DA8 0027FA08 51 04 62 66 */ rlwimi r4, r8, 0xc, 9, 0x13
+/* 80283DAC 0027FA0C 90 85 80 00 */ stw r4, -0x8000(r5)
+/* 80283DB0 0027FA10 98 C5 80 00 */ stb r6, -0x8000(r5)
+/* 80283DB4 0027FA14 90 85 80 00 */ stw r4, -0x8000(r5)
+/* 80283DB8 0027FA18 98 C5 80 00 */ stb r6, -0x8000(r5)
+/* 80283DBC 0027FA1C 90 85 80 00 */ stw r4, -0x8000(r5)
+/* 80283DC0 0027FA20 B0 03 00 02 */ sth r0, 2(r3)
+/* 80283DC4 0027FA24 4E 80 00 20 */ blr
+
+.global GXSetTevKColor
+GXSetTevKColor:
+/* 80283DC8 0027FA28 54 66 08 3C */ slwi r6, r3, 1
+/* 80283DCC 0027FA2C 81 24 00 00 */ lwz r9, 0(r4)
+/* 80283DD0 0027FA30 38 66 00 E0 */ addi r3, r6, 0xe0
+/* 80283DD4 0027FA34 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 80283DD8 0027FA38 54 68 C0 0E */ slwi r8, r3, 0x18
+/* 80283DDC 0027FA3C 38 A0 00 61 */ li r5, 0x61
+/* 80283DE0 0027FA40 51 28 46 3E */ rlwimi r8, r9, 8, 0x18, 0x1f
+/* 80283DE4 0027FA44 98 A4 80 00 */ stb r5, 0xCC008000@l(r4)
+/* 80283DE8 0027FA48 38 E0 00 08 */ li r7, 8
+/* 80283DEC 0027FA4C 38 06 00 E1 */ addi r0, r6, 0xe1
+/* 80283DF0 0027FA50 51 28 63 26 */ rlwimi r8, r9, 0xc, 0xc, 0x13
+/* 80283DF4 0027FA54 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80283DF8 0027FA58 54 06 C0 0E */ slwi r6, r0, 0x18
+/* 80283DFC 0027FA5C 38 00 00 00 */ li r0, 0
+/* 80283E00 0027FA60 50 E8 A2 16 */ rlwimi r8, r7, 0x14, 8, 0xb
+/* 80283E04 0027FA64 91 04 80 00 */ stw r8, -0x8000(r4)
+/* 80283E08 0027FA68 51 26 C6 3E */ rlwimi r6, r9, 0x18, 0x18, 0x1f
+/* 80283E0C 0027FA6C 51 26 E3 26 */ rlwimi r6, r9, 0x1c, 0xc, 0x13
+/* 80283E10 0027FA70 98 A4 80 00 */ stb r5, -0x8000(r4)
+/* 80283E14 0027FA74 50 E6 A2 16 */ rlwimi r6, r7, 0x14, 8, 0xb
+/* 80283E18 0027FA78 90 C4 80 00 */ stw r6, -0x8000(r4)
+/* 80283E1C 0027FA7C B0 03 00 02 */ sth r0, 2(r3)
+/* 80283E20 0027FA80 4E 80 00 20 */ blr
+
+.global GXSetTevKColorSel
+GXSetTevKColorSel:
+/* 80283E24 0027FA84 54 60 07 FF */ clrlwi. r0, r3, 0x1f
+/* 80283E28 0027FA88 80 A2 A0 D0 */ lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80283E2C 0027FA8C 54 60 08 3A */ rlwinm r0, r3, 1, 0, 0x1d
+/* 80283E30 0027FA90 7C 65 02 14 */ add r3, r5, r0
+/* 80283E34 0027FA94 41 82 00 14 */ beq lbl_80283E48
+/* 80283E38 0027FA98 80 03 02 00 */ lwz r0, 0x200(r3)
+/* 80283E3C 0027FA9C 50 80 73 62 */ rlwimi r0, r4, 0xe, 0xd, 0x11
+/* 80283E40 0027FAA0 90 03 02 00 */ stw r0, 0x200(r3)
+/* 80283E44 0027FAA4 48 00 00 10 */ b lbl_80283E54
+lbl_80283E48:
+/* 80283E48 0027FAA8 80 03 02 00 */ lwz r0, 0x200(r3)
+/* 80283E4C 0027FAAC 50 80 25 F6 */ rlwimi r0, r4, 4, 0x17, 0x1b
+/* 80283E50 0027FAB0 90 03 02 00 */ stw r0, 0x200(r3)
+lbl_80283E54:
+/* 80283E54 0027FAB4 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 80283E58 0027FAB8 38 00 00 61 */ li r0, 0x61
+/* 80283E5C 0027FABC 98 04 80 00 */ stb r0, 0xCC008000@l(r4)
+/* 80283E60 0027FAC0 38 00 00 00 */ li r0, 0
+/* 80283E64 0027FAC4 80 63 02 00 */ lwz r3, 0x200(r3)
+/* 80283E68 0027FAC8 90 64 80 00 */ stw r3, -0x8000(r4)
+/* 80283E6C 0027FACC B0 05 00 02 */ sth r0, 2(r5)
+/* 80283E70 0027FAD0 4E 80 00 20 */ blr
+
+.global GXSetTevKAlphaSel
+GXSetTevKAlphaSel:
+/* 80283E74 0027FAD4 54 60 07 FF */ clrlwi. r0, r3, 0x1f
+/* 80283E78 0027FAD8 80 A2 A0 D0 */ lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80283E7C 0027FADC 54 60 08 3A */ rlwinm r0, r3, 1, 0, 0x1d
+/* 80283E80 0027FAE0 7C 65 02 14 */ add r3, r5, r0
+/* 80283E84 0027FAE4 41 82 00 14 */ beq lbl_80283E98
+/* 80283E88 0027FAE8 80 03 02 00 */ lwz r0, 0x200(r3)
+/* 80283E8C 0027FAEC 50 80 9A 18 */ rlwimi r0, r4, 0x13, 8, 0xc
+/* 80283E90 0027FAF0 90 03 02 00 */ stw r0, 0x200(r3)
+/* 80283E94 0027FAF4 48 00 00 10 */ b lbl_80283EA4
+lbl_80283E98:
+/* 80283E98 0027FAF8 80 03 02 00 */ lwz r0, 0x200(r3)
+/* 80283E9C 0027FAFC 50 80 4C AC */ rlwimi r0, r4, 9, 0x12, 0x16
+/* 80283EA0 0027FB00 90 03 02 00 */ stw r0, 0x200(r3)
+lbl_80283EA4:
+/* 80283EA4 0027FB04 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 80283EA8 0027FB08 38 00 00 61 */ li r0, 0x61
+/* 80283EAC 0027FB0C 98 04 80 00 */ stb r0, 0xCC008000@l(r4)
+/* 80283EB0 0027FB10 38 00 00 00 */ li r0, 0
+/* 80283EB4 0027FB14 80 63 02 00 */ lwz r3, 0x200(r3)
+/* 80283EB8 0027FB18 90 64 80 00 */ stw r3, -0x8000(r4)
+/* 80283EBC 0027FB1C B0 05 00 02 */ sth r0, 2(r5)
+/* 80283EC0 0027FB20 4E 80 00 20 */ blr
+
+.global GXSetTevSwapMode
+GXSetTevSwapMode:
+/* 80283EC4 0027FB24 81 22 A0 D0 */ lwz r9, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80283EC8 0027FB28 54 60 10 3A */ slwi r0, r3, 2
+/* 80283ECC 0027FB2C 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80283ED0 0027FB30 38 60 00 61 */ li r3, 0x61
+/* 80283ED4 0027FB34 7D 09 02 14 */ add r8, r9, r0
+/* 80283ED8 0027FB38 38 00 00 00 */ li r0, 0
+/* 80283EDC 0027FB3C 80 E8 01 C0 */ lwz r7, 0x1c0(r8)
+/* 80283EE0 0027FB40 50 87 07 BE */ rlwimi r7, r4, 0, 0x1e, 0x1f
+/* 80283EE4 0027FB44 50 A7 17 3A */ rlwimi r7, r5, 2, 0x1c, 0x1d
+/* 80283EE8 0027FB48 90 E8 01 C0 */ stw r7, 0x1c0(r8)
+/* 80283EEC 0027FB4C 98 66 80 00 */ stb r3, 0xCC008000@l(r6)
+/* 80283EF0 0027FB50 80 68 01 C0 */ lwz r3, 0x1c0(r8)
+/* 80283EF4 0027FB54 90 66 80 00 */ stw r3, -0x8000(r6)
+/* 80283EF8 0027FB58 B0 09 00 02 */ sth r0, 2(r9)
+/* 80283EFC 0027FB5C 4E 80 00 20 */ blr
+
+.global GXSetTevSwapModeTable
+GXSetTevSwapModeTable:
+/* 80283F00 0027FB60 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80283F04 0027FB64 54 6B 18 38 */ slwi r11, r3, 3
+/* 80283F08 0027FB68 54 6C 08 3C */ slwi r12, r3, 1
+/* 80283F0C 0027FB6C 3D 00 CC 01 */ lis r8, 0xCC008000@ha
+/* 80283F10 0027FB70 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80283F14 0027FB74 39 20 00 61 */ li r9, 0x61
+/* 80283F18 0027FB78 38 6C 00 01 */ addi r3, r12, 1
+/* 80283F1C 0027FB7C 38 00 00 00 */ li r0, 0
+/* 80283F20 0027FB80 93 C1 00 08 */ stw r30, 8(r1)
+/* 80283F24 0027FB84 83 C2 A0 D0 */ lwz r30, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80283F28 0027FB88 3B FE 02 00 */ addi r31, r30, 0x200
+/* 80283F2C 0027FB8C 7D 5F 58 2E */ lwzx r10, r31, r11
+/* 80283F30 0027FB90 50 8A 07 BE */ rlwimi r10, r4, 0, 0x1e, 0x1f
+/* 80283F34 0027FB94 50 AA 17 3A */ rlwimi r10, r5, 2, 0x1c, 0x1d
+/* 80283F38 0027FB98 54 64 10 3A */ slwi r4, r3, 2
+/* 80283F3C 0027FB9C 7D 5F 59 2E */ stwx r10, r31, r11
+/* 80283F40 0027FBA0 99 28 80 00 */ stb r9, 0xCC008000@l(r8)
+/* 80283F44 0027FBA4 7C 7F 58 2E */ lwzx r3, r31, r11
+/* 80283F48 0027FBA8 90 68 80 00 */ stw r3, -0x8000(r8)
+/* 80283F4C 0027FBAC 7C 7F 20 2E */ lwzx r3, r31, r4
+/* 80283F50 0027FBB0 50 C3 07 BE */ rlwimi r3, r6, 0, 0x1e, 0x1f
+/* 80283F54 0027FBB4 50 E3 17 3A */ rlwimi r3, r7, 2, 0x1c, 0x1d
+/* 80283F58 0027FBB8 7C 7F 21 2E */ stwx r3, r31, r4
+/* 80283F5C 0027FBBC 99 28 80 00 */ stb r9, -0x8000(r8)
+/* 80283F60 0027FBC0 7C 7F 20 2E */ lwzx r3, r31, r4
+/* 80283F64 0027FBC4 90 68 80 00 */ stw r3, -0x8000(r8)
+/* 80283F68 0027FBC8 B0 1E 00 02 */ sth r0, 2(r30)
+/* 80283F6C 0027FBCC 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80283F70 0027FBD0 83 C1 00 08 */ lwz r30, 8(r1)
+/* 80283F74 0027FBD4 38 21 00 10 */ addi r1, r1, 0x10
+/* 80283F78 0027FBD8 4E 80 00 20 */ blr
+
+.global GXSetAlphaCompare
+GXSetAlphaCompare:
+/* 80283F7C 0027FBDC 3D 00 CC 01 */ lis r8, 0xCC008000@ha
+/* 80283F80 0027FBE0 38 00 00 61 */ li r0, 0x61
+/* 80283F84 0027FBE4 98 08 80 00 */ stb r0, 0xCC008000@l(r8)
+/* 80283F88 0027FBE8 3D 20 F3 00 */ lis r9, 0xf300
+/* 80283F8C 0027FBEC 50 89 06 3E */ rlwimi r9, r4, 0, 0x18, 0x1f
+/* 80283F90 0027FBF0 80 82 A0 D0 */ lwz r4, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80283F94 0027FBF4 50 E9 44 2E */ rlwimi r9, r7, 8, 0x10, 0x17
+/* 80283F98 0027FBF8 38 00 00 00 */ li r0, 0
+/* 80283F9C 0027FBFC 50 69 83 5E */ rlwimi r9, r3, 0x10, 0xd, 0xf
+/* 80283FA0 0027FC00 50 C9 9A 98 */ rlwimi r9, r6, 0x13, 0xa, 0xc
+/* 80283FA4 0027FC04 50 A9 B2 12 */ rlwimi r9, r5, 0x16, 8, 9
+/* 80283FA8 0027FC08 91 28 80 00 */ stw r9, -0x8000(r8)
+/* 80283FAC 0027FC0C B0 04 00 02 */ sth r0, 2(r4)
+/* 80283FB0 0027FC10 4E 80 00 20 */ blr
+
+.global GXSetZTexture
+GXSetZTexture:
+/* 80283FB4 0027FC14 2C 04 00 13 */ cmpwi r4, 0x13
+/* 80283FB8 0027FC18 38 E0 00 00 */ li r7, 0
+/* 80283FBC 0027FC1C 38 00 00 F4 */ li r0, 0xf4
+/* 80283FC0 0027FC20 50 A7 02 3E */ rlwimi r7, r5, 0, 8, 0x1f
+/* 80283FC4 0027FC24 50 07 C0 0E */ rlwimi r7, r0, 0x18, 0, 7
+/* 80283FC8 0027FC28 41 82 00 28 */ beq lbl_80283FF0
+/* 80283FCC 0027FC2C 40 80 00 10 */ bge lbl_80283FDC
+/* 80283FD0 0027FC30 2C 04 00 11 */ cmpwi r4, 0x11
+/* 80283FD4 0027FC34 41 82 00 14 */ beq lbl_80283FE8
+/* 80283FD8 0027FC38 48 00 00 28 */ b lbl_80284000
+lbl_80283FDC:
+/* 80283FDC 0027FC3C 2C 04 00 16 */ cmpwi r4, 0x16
+/* 80283FE0 0027FC40 41 82 00 18 */ beq lbl_80283FF8
+/* 80283FE4 0027FC44 48 00 00 1C */ b lbl_80284000
+lbl_80283FE8:
+/* 80283FE8 0027FC48 38 A0 00 00 */ li r5, 0
+/* 80283FEC 0027FC4C 48 00 00 18 */ b lbl_80284004
+lbl_80283FF0:
+/* 80283FF0 0027FC50 38 A0 00 01 */ li r5, 1
+/* 80283FF4 0027FC54 48 00 00 10 */ b lbl_80284004
+lbl_80283FF8:
+/* 80283FF8 0027FC58 38 A0 00 02 */ li r5, 2
+/* 80283FFC 0027FC5C 48 00 00 08 */ b lbl_80284004
+lbl_80284000:
+/* 80284000 0027FC60 38 A0 00 02 */ li r5, 2
+lbl_80284004:
+/* 80284004 0027FC64 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 80284008 0027FC68 38 00 00 61 */ li r0, 0x61
+/* 8028400C 0027FC6C 98 04 80 00 */ stb r0, 0xCC008000@l(r4)
+/* 80284010 0027FC70 38 C0 00 00 */ li r6, 0
+/* 80284014 0027FC74 50 A6 07 BE */ rlwimi r6, r5, 0, 0x1e, 0x1f
+/* 80284018 0027FC78 38 A0 00 F5 */ li r5, 0xf5
+/* 8028401C 0027FC7C 90 E4 80 00 */ stw r7, -0x8000(r4)
+/* 80284020 0027FC80 50 66 17 3A */ rlwimi r6, r3, 2, 0x1c, 0x1d
+/* 80284024 0027FC84 50 A6 C0 0E */ rlwimi r6, r5, 0x18, 0, 7
+/* 80284028 0027FC88 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 8028402C 0027FC8C 98 04 80 00 */ stb r0, -0x8000(r4)
+/* 80284030 0027FC90 38 00 00 00 */ li r0, 0
+/* 80284034 0027FC94 90 C4 80 00 */ stw r6, -0x8000(r4)
+/* 80284038 0027FC98 B0 03 00 02 */ sth r0, 2(r3)
+/* 8028403C 0027FC9C 4E 80 00 20 */ blr
+
+.global GXSetTevOrder
+GXSetTevOrder:
+/* 80284040 0027FCA0 54 AB 06 2C */ rlwinm r11, r5, 0, 0x18, 0x16
+/* 80284044 0027FCA4 38 E0 00 08 */ li r7, 8
+/* 80284048 0027FCA8 54 69 0F FE */ srwi r9, r3, 0x1f
+/* 8028404C 0027FCAC 81 42 A0 D0 */ lwz r10, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80284050 0027FCB0 7C 07 58 10 */ subfc r0, r7, r11
+/* 80284054 0027FCB4 54 68 10 3A */ slwi r8, r3, 2
+/* 80284058 0027FCB8 7C 07 01 94 */ addze r0, r7
+/* 8028405C 0027FCBC 7D 29 1A 14 */ add r9, r9, r3
+/* 80284060 0027FCC0 7C EA 42 14 */ add r7, r10, r8
+/* 80284064 0027FCC4 2C 04 00 08 */ cmpwi r4, 8
+/* 80284068 0027FCC8 55 28 08 3A */ rlwinm r8, r9, 1, 0, 0x1d
+/* 8028406C 0027FCCC 20 00 00 08 */ subfic r0, r0, 8
+/* 80284070 0027FCD0 90 A7 05 A4 */ stw r5, 0x5a4(r7)
+/* 80284074 0027FCD4 7C EA 42 14 */ add r7, r10, r8
+/* 80284078 0027FCD8 7D 69 00 78 */ andc r9, r11, r0
+/* 8028407C 0027FCDC 41 80 00 20 */ blt lbl_8028409C
+/* 80284080 0027FCE0 38 00 00 01 */ li r0, 1
+/* 80284084 0027FCE4 81 0A 05 E8 */ lwz r8, 0x5e8(r10)
+/* 80284088 0027FCE8 7C 00 18 30 */ slw r0, r0, r3
+/* 8028408C 0027FCEC 38 80 00 00 */ li r4, 0
+/* 80284090 0027FCF0 7D 00 00 78 */ andc r0, r8, r0
+/* 80284094 0027FCF4 90 0A 05 E8 */ stw r0, 0x5e8(r10)
+/* 80284098 0027FCF8 48 00 00 18 */ b lbl_802840B0
+lbl_8028409C:
+/* 8028409C 0027FCFC 38 00 00 01 */ li r0, 1
+/* 802840A0 0027FD00 81 0A 05 E8 */ lwz r8, 0x5e8(r10)
+/* 802840A4 0027FD04 7C 00 18 30 */ slw r0, r0, r3
+/* 802840A8 0027FD08 7D 00 03 78 */ or r0, r8, r0
+/* 802840AC 0027FD0C 90 0A 05 E8 */ stw r0, 0x5e8(r10)
+lbl_802840B0:
+/* 802840B0 0027FD10 54 60 07 FF */ clrlwi. r0, r3, 0x1f
+/* 802840B4 0027FD14 41 82 00 60 */ beq lbl_80284114
+/* 802840B8 0027FD18 81 07 01 50 */ lwz r8, 0x150(r7)
+/* 802840BC 0027FD1C 51 28 64 66 */ rlwimi r8, r9, 0xc, 0x11, 0x13
+/* 802840C0 0027FD20 50 88 7B A0 */ rlwimi r8, r4, 0xf, 0xe, 0x10
+/* 802840C4 0027FD24 2C 06 00 FF */ cmpwi r6, 0xff
+/* 802840C8 0027FD28 91 07 01 50 */ stw r8, 0x150(r7)
+/* 802840CC 0027FD2C 40 82 00 0C */ bne lbl_802840D8
+/* 802840D0 0027FD30 38 00 00 07 */ li r0, 7
+/* 802840D4 0027FD34 48 00 00 14 */ b lbl_802840E8
+lbl_802840D8:
+/* 802840D8 0027FD38 3C 60 80 43 */ lis r3, lbl_80435920@ha
+/* 802840DC 0027FD3C 54 C0 10 3A */ slwi r0, r6, 2
+/* 802840E0 0027FD40 38 63 59 20 */ addi r3, r3, lbl_80435920@l
+/* 802840E4 0027FD44 7C 03 00 2E */ lwzx r0, r3, r0
+lbl_802840E8:
+/* 802840E8 0027FD48 50 08 9A 98 */ rlwimi r8, r0, 0x13, 0xa, 0xc
+/* 802840EC 0027FD4C 2C 05 00 FF */ cmpwi r5, 0xff
+/* 802840F0 0027FD50 91 07 01 50 */ stw r8, 0x150(r7)
+/* 802840F4 0027FD54 38 60 00 00 */ li r3, 0
+/* 802840F8 0027FD58 41 82 00 10 */ beq lbl_80284108
+/* 802840FC 0027FD5C 54 A0 05 EF */ rlwinm. r0, r5, 0, 0x17, 0x17
+/* 80284100 0027FD60 40 82 00 08 */ bne lbl_80284108
+/* 80284104 0027FD64 38 60 00 01 */ li r3, 1
+lbl_80284108:
+/* 80284108 0027FD68 50 68 93 5A */ rlwimi r8, r3, 0x12, 0xd, 0xd
+/* 8028410C 0027FD6C 91 07 01 50 */ stw r8, 0x150(r7)
+/* 80284110 0027FD70 48 00 00 5C */ b lbl_8028416C
+lbl_80284114:
+/* 80284114 0027FD74 81 07 01 50 */ lwz r8, 0x150(r7)
+/* 80284118 0027FD78 51 28 07 7E */ rlwimi r8, r9, 0, 0x1d, 0x1f
+/* 8028411C 0027FD7C 50 88 1E B8 */ rlwimi r8, r4, 3, 0x1a, 0x1c
+/* 80284120 0027FD80 2C 06 00 FF */ cmpwi r6, 0xff
+/* 80284124 0027FD84 91 07 01 50 */ stw r8, 0x150(r7)
+/* 80284128 0027FD88 40 82 00 0C */ bne lbl_80284134
+/* 8028412C 0027FD8C 38 00 00 07 */ li r0, 7
+/* 80284130 0027FD90 48 00 00 14 */ b lbl_80284144
+lbl_80284134:
+/* 80284134 0027FD94 3C 60 80 43 */ lis r3, lbl_80435920@ha
+/* 80284138 0027FD98 54 C0 10 3A */ slwi r0, r6, 2
+/* 8028413C 0027FD9C 38 63 59 20 */ addi r3, r3, lbl_80435920@l
+/* 80284140 0027FDA0 7C 03 00 2E */ lwzx r0, r3, r0
+lbl_80284144:
+/* 80284144 0027FDA4 50 08 3D B0 */ rlwimi r8, r0, 7, 0x16, 0x18
+/* 80284148 0027FDA8 2C 05 00 FF */ cmpwi r5, 0xff
+/* 8028414C 0027FDAC 91 07 01 50 */ stw r8, 0x150(r7)
+/* 80284150 0027FDB0 38 60 00 00 */ li r3, 0
+/* 80284154 0027FDB4 41 82 00 10 */ beq lbl_80284164
+/* 80284158 0027FDB8 54 A0 05 EF */ rlwinm. r0, r5, 0, 0x17, 0x17
+/* 8028415C 0027FDBC 40 82 00 08 */ bne lbl_80284164
+/* 80284160 0027FDC0 38 60 00 01 */ li r3, 1
+lbl_80284164:
+/* 80284164 0027FDC4 50 68 36 72 */ rlwimi r8, r3, 6, 0x19, 0x19
+/* 80284168 0027FDC8 91 07 01 50 */ stw r8, 0x150(r7)
+lbl_8028416C:
+/* 8028416C 0027FDCC 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 80284170 0027FDD0 38 00 00 61 */ li r0, 0x61
+/* 80284174 0027FDD4 98 04 80 00 */ stb r0, 0xCC008000@l(r4)
+/* 80284178 0027FDD8 38 00 00 00 */ li r0, 0
+/* 8028417C 0027FDDC 80 A2 A0 D0 */ lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80284180 0027FDE0 80 67 01 50 */ lwz r3, 0x150(r7)
+/* 80284184 0027FDE4 90 64 80 00 */ stw r3, -0x8000(r4)
+/* 80284188 0027FDE8 B0 05 00 02 */ sth r0, 2(r5)
+/* 8028418C 0027FDEC 80 05 05 FC */ lwz r0, 0x5fc(r5)
+/* 80284190 0027FDF0 60 00 00 01 */ ori r0, r0, 1
+/* 80284194 0027FDF4 90 05 05 FC */ stw r0, 0x5fc(r5)
+/* 80284198 0027FDF8 4E 80 00 20 */ blr
+
+.global GXSetNumTevStages
+GXSetNumTevStages:
+/* 8028419C 0027FDFC 80 82 A0 D0 */ lwz r4, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802841A0 0027FE00 38 03 FF FF */ addi r0, r3, -1
+/* 802841A4 0027FE04 80 64 02 54 */ lwz r3, 0x254(r4)
+/* 802841A8 0027FE08 50 03 54 AA */ rlwimi r3, r0, 0xa, 0x12, 0x15
+/* 802841AC 0027FE0C 90 64 02 54 */ stw r3, 0x254(r4)
+/* 802841B0 0027FE10 80 04 05 FC */ lwz r0, 0x5fc(r4)
+/* 802841B4 0027FE14 60 00 00 04 */ ori r0, r0, 4
+/* 802841B8 0027FE18 90 04 05 FC */ stw r0, 0x5fc(r4)
+/* 802841BC 0027FE1C 4E 80 00 20 */ blr
diff --git a/asm/SDK/GX/GXTexture.s b/asm/SDK/GX/GXTexture.s
new file mode 100644
index 0000000..0aa481a
--- /dev/null
+++ b/asm/SDK/GX/GXTexture.s
@@ -0,0 +1,970 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global __GetImageTileCount
+__GetImageTileCount:
+/* 80282610 0027E270 28 03 00 3C */ cmplwi r3, 0x3c
+/* 80282614 0027E274 41 81 00 40 */ bgt lbl_80282654
+/* 80282618 0027E278 3D 20 80 43 */ lis r9, lbl_804357A0@ha
+/* 8028261C 0027E27C 54 60 10 3A */ slwi r0, r3, 2
+/* 80282620 0027E280 39 29 57 A0 */ addi r9, r9, lbl_804357A0@l
+/* 80282624 0027E284 7D 29 00 2E */ lwzx r9, r9, r0
+/* 80282628 0027E288 7D 29 03 A6 */ mtctr r9
+/* 8028262C 0027E28C 4E 80 04 20 */ bctr
+/* 80282630 0027E290 39 60 00 03 */ li r11, 3
+/* 80282634 0027E294 39 80 00 03 */ li r12, 3
+/* 80282638 0027E298 48 00 00 24 */ b lbl_8028265C
+/* 8028263C 0027E29C 39 60 00 03 */ li r11, 3
+/* 80282640 0027E2A0 39 80 00 02 */ li r12, 2
+/* 80282644 0027E2A4 48 00 00 18 */ b lbl_8028265C
+/* 80282648 0027E2A8 39 60 00 02 */ li r11, 2
+/* 8028264C 0027E2AC 39 80 00 02 */ li r12, 2
+/* 80282650 0027E2B0 48 00 00 0C */ b lbl_8028265C
+lbl_80282654:
+/* 80282654 0027E2B4 39 80 00 00 */ li r12, 0
+/* 80282658 0027E2B8 39 60 00 00 */ li r11, 0
+lbl_8028265C:
+/* 8028265C 0027E2BC 2C 04 00 00 */ cmpwi r4, 0
+/* 80282660 0027E2C0 40 82 00 08 */ bne lbl_80282668
+/* 80282664 0027E2C4 38 80 00 01 */ li r4, 1
+lbl_80282668:
+/* 80282668 0027E2C8 2C 05 00 00 */ cmpwi r5, 0
+/* 8028266C 0027E2CC 40 82 00 08 */ bne lbl_80282674
+/* 80282670 0027E2D0 38 A0 00 01 */ li r5, 1
+lbl_80282674:
+/* 80282674 0027E2D4 39 40 00 01 */ li r10, 1
+/* 80282678 0027E2D8 2C 03 00 06 */ cmpwi r3, 6
+/* 8028267C 0027E2DC 7D 40 58 30 */ slw r0, r10, r11
+/* 80282680 0027E2E0 39 20 00 00 */ li r9, 0
+/* 80282684 0027E2E4 7C 84 02 14 */ add r4, r4, r0
+/* 80282688 0027E2E8 7D 40 60 30 */ slw r0, r10, r12
+/* 8028268C 0027E2EC 38 84 FF FF */ addi r4, r4, -1
+/* 80282690 0027E2F0 7C 8A 5E 30 */ sraw r10, r4, r11
+/* 80282694 0027E2F4 7C 85 02 14 */ add r4, r5, r0
+/* 80282698 0027E2F8 91 46 00 00 */ stw r10, 0(r6)
+/* 8028269C 0027E2FC 38 04 FF FF */ addi r0, r4, -1
+/* 802826A0 0027E300 7C 00 66 30 */ sraw r0, r0, r12
+/* 802826A4 0027E304 90 07 00 00 */ stw r0, 0(r7)
+/* 802826A8 0027E308 41 82 00 0C */ beq lbl_802826B4
+/* 802826AC 0027E30C 2C 03 00 16 */ cmpwi r3, 0x16
+/* 802826B0 0027E310 40 82 00 08 */ bne lbl_802826B8
+lbl_802826B4:
+/* 802826B4 0027E314 39 20 00 01 */ li r9, 1
+lbl_802826B8:
+/* 802826B8 0027E318 7C 09 00 D0 */ neg r0, r9
+/* 802826BC 0027E31C 7C 00 4B 78 */ or r0, r0, r9
+/* 802826C0 0027E320 54 03 0F FE */ srwi r3, r0, 0x1f
+/* 802826C4 0027E324 38 03 00 01 */ addi r0, r3, 1
+/* 802826C8 0027E328 90 08 00 00 */ stw r0, 0(r8)
+/* 802826CC 0027E32C 4E 80 00 20 */ blr
+
+.global GXInitTexObj
+GXInitTexObj:
+/* 802826D0 0027E330 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 802826D4 0027E334 7C 08 02 A6 */ mflr r0
+/* 802826D8 0027E338 90 01 00 44 */ stw r0, 0x44(r1)
+/* 802826DC 0027E33C 39 61 00 40 */ addi r11, r1, 0x40
+/* 802826E0 0027E340 4B F4 4A 3D */ bl _savegpr_24
+/* 802826E4 0027E344 7C 9B 23 78 */ mr r27, r4
+/* 802826E8 0027E348 7C BC 2B 78 */ mr r28, r5
+/* 802826EC 0027E34C 7C 7F 1B 78 */ mr r31, r3
+/* 802826F0 0027E350 7C DD 33 78 */ mr r29, r6
+/* 802826F4 0027E354 7C FE 3B 78 */ mr r30, r7
+/* 802826F8 0027E358 7D 18 43 78 */ mr r24, r8
+/* 802826FC 0027E35C 7D 39 4B 78 */ mr r25, r9
+/* 80282700 0027E360 7D 5A 53 78 */ mr r26, r10
+/* 80282704 0027E364 38 80 00 00 */ li r4, 0
+/* 80282708 0027E368 38 A0 00 20 */ li r5, 0x20
+/* 8028270C 0027E36C 4B D8 19 F9 */ bl memset
+/* 80282710 0027E370 80 1F 00 00 */ lwz r0, 0(r31)
+/* 80282714 0027E374 53 00 07 BE */ rlwimi r0, r24, 0, 0x1e, 0x1f
+/* 80282718 0027E378 53 20 17 3A */ rlwimi r0, r25, 2, 0x1c, 0x1d
+/* 8028271C 0027E37C 2C 1A 00 00 */ cmpwi r26, 0
+/* 80282720 0027E380 60 04 00 10 */ ori r4, r0, 0x10
+/* 80282724 0027E384 90 9F 00 00 */ stw r4, 0(r31)
+/* 80282728 0027E388 41 82 00 90 */ beq lbl_802827B8
+/* 8028272C 0027E38C 88 7F 00 1F */ lbz r3, 0x1f(r31)
+/* 80282730 0027E390 38 1E FF F8 */ addi r0, r30, -8
+/* 80282734 0027E394 28 00 00 02 */ cmplwi r0, 2
+/* 80282738 0027E398 60 60 00 01 */ ori r0, r3, 1
+/* 8028273C 0027E39C 98 1F 00 1F */ stb r0, 0x1f(r31)
+/* 80282740 0027E3A0 41 81 00 14 */ bgt lbl_80282754
+/* 80282744 0027E3A4 38 00 00 05 */ li r0, 5
+/* 80282748 0027E3A8 50 04 2E 34 */ rlwimi r4, r0, 5, 0x18, 0x1a
+/* 8028274C 0027E3AC 90 9F 00 00 */ stw r4, 0(r31)
+/* 80282750 0027E3B0 48 00 00 10 */ b lbl_80282760
+lbl_80282754:
+/* 80282754 0027E3B4 38 00 00 06 */ li r0, 6
+/* 80282758 0027E3B8 50 04 2E 34 */ rlwimi r4, r0, 5, 0x18, 0x1a
+/* 8028275C 0027E3BC 90 9F 00 00 */ stw r4, 0(r31)
+lbl_80282760:
+/* 80282760 0027E3C0 7C 1C E8 40 */ cmplw r28, r29
+/* 80282764 0027E3C4 40 81 00 10 */ ble lbl_80282774
+/* 80282768 0027E3C8 7F 80 00 34 */ cntlzw r0, r28
+/* 8028276C 0027E3CC 20 60 00 1F */ subfic r3, r0, 0x1f
+/* 80282770 0027E3D0 48 00 00 0C */ b lbl_8028277C
+lbl_80282774:
+/* 80282774 0027E3D4 7F A0 00 34 */ cntlzw r0, r29
+/* 80282778 0027E3D8 20 60 00 1F */ subfic r3, r0, 0x1f
+lbl_8028277C:
+/* 8028277C 0027E3DC 3C 00 43 30 */ lis r0, 0x4330
+/* 80282780 0027E3E0 90 61 00 0C */ stw r3, 0xc(r1)
+/* 80282784 0027E3E4 C8 42 A1 48 */ lfd f2, lbl_80642748-_SDA2_BASE_(r2)
+/* 80282788 0027E3E8 90 01 00 08 */ stw r0, 8(r1)
+/* 8028278C 0027E3EC C0 02 A1 40 */ lfs f0, lbl_80642740-_SDA2_BASE_(r2)
+/* 80282790 0027E3F0 C8 21 00 08 */ lfd f1, 8(r1)
+/* 80282794 0027E3F4 80 1F 00 04 */ lwz r0, 4(r31)
+/* 80282798 0027E3F8 EC 21 10 28 */ fsubs f1, f1, f2
+/* 8028279C 0027E3FC EC 00 00 72 */ fmuls f0, f0, f1
+/* 802827A0 0027E400 FC 00 00 1E */ fctiwz f0, f0
+/* 802827A4 0027E404 D8 01 00 10 */ stfd f0, 0x10(r1)
+/* 802827A8 0027E408 80 61 00 14 */ lwz r3, 0x14(r1)
+/* 802827AC 0027E40C 50 60 44 2E */ rlwimi r0, r3, 8, 0x10, 0x17
+/* 802827B0 0027E410 90 1F 00 04 */ stw r0, 4(r31)
+/* 802827B4 0027E414 48 00 00 10 */ b lbl_802827C4
+lbl_802827B8:
+/* 802827B8 0027E418 38 00 00 04 */ li r0, 4
+/* 802827BC 0027E41C 50 04 2E 34 */ rlwimi r4, r0, 5, 0x18, 0x1a
+/* 802827C0 0027E420 90 9F 00 00 */ stw r4, 0(r31)
+lbl_802827C4:
+/* 802827C4 0027E424 38 1C FF FF */ addi r0, r28, -1
+/* 802827C8 0027E428 80 7F 00 08 */ lwz r3, 8(r31)
+/* 802827CC 0027E42C 50 03 05 BE */ rlwimi r3, r0, 0, 0x16, 0x1f
+/* 802827D0 0027E430 57 C4 07 3E */ clrlwi r4, r30, 0x1c
+/* 802827D4 0027E434 38 1D FF FF */ addi r0, r29, -1
+/* 802827D8 0027E438 93 DF 00 14 */ stw r30, 0x14(r31)
+/* 802827DC 0027E43C 50 03 53 2A */ rlwimi r3, r0, 0xa, 0xc, 0x15
+/* 802827E0 0027E440 80 1F 00 0C */ lwz r0, 0xc(r31)
+/* 802827E4 0027E444 53 60 DA 3E */ rlwimi r0, r27, 0x1b, 8, 0x1f
+/* 802827E8 0027E448 28 04 00 0E */ cmplwi r4, 0xe
+/* 802827EC 0027E44C 53 C3 A2 16 */ rlwimi r3, r30, 0x14, 8, 0xb
+/* 802827F0 0027E450 90 1F 00 0C */ stw r0, 0xc(r31)
+/* 802827F4 0027E454 90 7F 00 08 */ stw r3, 8(r31)
+/* 802827F8 0027E458 41 81 00 80 */ bgt lbl_80282878
+/* 802827FC 0027E45C 3C 60 80 43 */ lis r3, lbl_80435894@ha
+/* 80282800 0027E460 54 80 10 3A */ slwi r0, r4, 2
+/* 80282804 0027E464 38 63 58 94 */ addi r3, r3, lbl_80435894@l
+/* 80282808 0027E468 7C 63 00 2E */ lwzx r3, r3, r0
+/* 8028280C 0027E46C 7C 69 03 A6 */ mtctr r3
+/* 80282810 0027E470 4E 80 04 20 */ bctr
+/* 80282814 0027E474 38 00 00 01 */ li r0, 1
+/* 80282818 0027E478 38 C0 00 03 */ li r6, 3
+/* 8028281C 0027E47C 98 1F 00 1E */ stb r0, 0x1e(r31)
+/* 80282820 0027E480 38 E0 00 03 */ li r7, 3
+/* 80282824 0027E484 48 00 00 64 */ b lbl_80282888
+/* 80282828 0027E488 38 00 00 02 */ li r0, 2
+/* 8028282C 0027E48C 38 C0 00 03 */ li r6, 3
+/* 80282830 0027E490 98 1F 00 1E */ stb r0, 0x1e(r31)
+/* 80282834 0027E494 38 E0 00 02 */ li r7, 2
+/* 80282838 0027E498 48 00 00 50 */ b lbl_80282888
+/* 8028283C 0027E49C 38 00 00 02 */ li r0, 2
+/* 80282840 0027E4A0 38 C0 00 02 */ li r6, 2
+/* 80282844 0027E4A4 98 1F 00 1E */ stb r0, 0x1e(r31)
+/* 80282848 0027E4A8 38 E0 00 02 */ li r7, 2
+/* 8028284C 0027E4AC 48 00 00 3C */ b lbl_80282888
+/* 80282850 0027E4B0 38 00 00 03 */ li r0, 3
+/* 80282854 0027E4B4 38 C0 00 02 */ li r6, 2
+/* 80282858 0027E4B8 98 1F 00 1E */ stb r0, 0x1e(r31)
+/* 8028285C 0027E4BC 38 E0 00 02 */ li r7, 2
+/* 80282860 0027E4C0 48 00 00 28 */ b lbl_80282888
+/* 80282864 0027E4C4 38 00 00 00 */ li r0, 0
+/* 80282868 0027E4C8 38 C0 00 03 */ li r6, 3
+/* 8028286C 0027E4CC 98 1F 00 1E */ stb r0, 0x1e(r31)
+/* 80282870 0027E4D0 38 E0 00 03 */ li r7, 3
+/* 80282874 0027E4D4 48 00 00 14 */ b lbl_80282888
+lbl_80282878:
+/* 80282878 0027E4D8 38 00 00 02 */ li r0, 2
+/* 8028287C 0027E4DC 38 C0 00 02 */ li r6, 2
+/* 80282880 0027E4E0 98 1F 00 1E */ stb r0, 0x1e(r31)
+/* 80282884 0027E4E4 38 E0 00 02 */ li r7, 2
+lbl_80282888:
+/* 80282888 0027E4E8 38 A0 00 01 */ li r5, 1
+/* 8028288C 0027E4EC 88 1F 00 1F */ lbz r0, 0x1f(r31)
+/* 80282890 0027E4F0 7C A3 30 30 */ slw r3, r5, r6
+/* 80282894 0027E4F4 39 61 00 40 */ addi r11, r1, 0x40
+/* 80282898 0027E4F8 7C 9C 1A 14 */ add r4, r28, r3
+/* 8028289C 0027E4FC 60 00 00 02 */ ori r0, r0, 2
+/* 802828A0 0027E500 7C A3 38 30 */ slw r3, r5, r7
+/* 802828A4 0027E504 98 1F 00 1F */ stb r0, 0x1f(r31)
+/* 802828A8 0027E508 38 84 FF FF */ addi r4, r4, -1
+/* 802828AC 0027E50C 7C 7D 1A 14 */ add r3, r29, r3
+/* 802828B0 0027E510 7C 84 36 30 */ sraw r4, r4, r6
+/* 802828B4 0027E514 38 03 FF FF */ addi r0, r3, -1
+/* 802828B8 0027E518 7C 00 3E 30 */ sraw r0, r0, r7
+/* 802828BC 0027E51C 7C 04 01 D6 */ mullw r0, r4, r0
+/* 802828C0 0027E520 54 00 04 7E */ clrlwi r0, r0, 0x11
+/* 802828C4 0027E524 B0 1F 00 1C */ sth r0, 0x1c(r31)
+/* 802828C8 0027E528 4B F4 48 A1 */ bl _restgpr_24
+/* 802828CC 0027E52C 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 802828D0 0027E530 7C 08 03 A6 */ mtlr r0
+/* 802828D4 0027E534 38 21 00 40 */ addi r1, r1, 0x40
+/* 802828D8 0027E538 4E 80 00 20 */ blr
+
+.global GXInitTexObjCI
+GXInitTexObjCI:
+/* 802828DC 0027E53C 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802828E0 0027E540 7C 08 02 A6 */ mflr r0
+/* 802828E4 0027E544 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802828E8 0027E548 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802828EC 0027E54C 83 E1 00 18 */ lwz r31, 0x18(r1)
+/* 802828F0 0027E550 93 C1 00 08 */ stw r30, 8(r1)
+/* 802828F4 0027E554 7C 7E 1B 78 */ mr r30, r3
+/* 802828F8 0027E558 4B FF FD D9 */ bl GXInitTexObj
+/* 802828FC 0027E55C 88 1E 00 1F */ lbz r0, 0x1f(r30)
+/* 80282900 0027E560 93 FE 00 18 */ stw r31, 0x18(r30)
+/* 80282904 0027E564 54 00 07 FA */ rlwinm r0, r0, 0, 0x1f, 0x1d
+/* 80282908 0027E568 98 1E 00 1F */ stb r0, 0x1f(r30)
+/* 8028290C 0027E56C 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80282910 0027E570 83 C1 00 08 */ lwz r30, 8(r1)
+/* 80282914 0027E574 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80282918 0027E578 7C 08 03 A6 */ mtlr r0
+/* 8028291C 0027E57C 38 21 00 10 */ addi r1, r1, 0x10
+/* 80282920 0027E580 4E 80 00 20 */ blr
+
+.global GXInitTexObjLOD
+GXInitTexObjLOD:
+/* 80282924 0027E584 C0 02 A1 50 */ lfs f0, lbl_80642750-_SDA2_BASE_(r2)
+/* 80282928 0027E588 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8028292C 0027E58C FC 03 00 40 */ fcmpo cr0, f3, f0
+/* 80282930 0027E590 40 80 00 0C */ bge lbl_8028293C
+/* 80282934 0027E594 FC 60 00 90 */ fmr f3, f0
+/* 80282938 0027E598 48 00 00 18 */ b lbl_80282950
+lbl_8028293C:
+/* 8028293C 0027E59C C0 02 A1 58 */ lfs f0, lbl_80642758-_SDA2_BASE_(r2)
+/* 80282940 0027E5A0 FC 03 00 40 */ fcmpo cr0, f3, f0
+/* 80282944 0027E5A4 4C 41 13 82 */ cror 2, 1, 2
+/* 80282948 0027E5A8 40 82 00 08 */ bne lbl_80282950
+/* 8028294C 0027E5AC C0 62 A1 54 */ lfs f3, lbl_80642754-_SDA2_BASE_(r2)
+lbl_80282950:
+/* 80282950 0027E5B0 C0 82 A1 5C */ lfs f4, lbl_8064275C-_SDA2_BASE_(r2)
+/* 80282954 0027E5B4 38 05 FF FF */ addi r0, r5, -1
+/* 80282958 0027E5B8 7C 09 00 34 */ cntlzw r9, r0
+/* 8028295C 0027E5BC C0 02 A1 60 */ lfs f0, lbl_80642760-_SDA2_BASE_(r2)
+/* 80282960 0027E5C0 EC 64 00 F2 */ fmuls f3, f4, f3
+/* 80282964 0027E5C4 7C E0 00 34 */ cntlzw r0, r7
+/* 80282968 0027E5C8 81 43 00 00 */ lwz r10, 0(r3)
+/* 8028296C 0027E5CC 38 AD 88 A0 */ addi r5, r13, lbl_8063DB60-_SDA_BASE_
+/* 80282970 0027E5D0 FC 01 00 40 */ fcmpo cr0, f1, f0
+/* 80282974 0027E5D4 FC 60 18 1E */ fctiwz f3, f3
+/* 80282978 0027E5D8 D8 61 00 08 */ stfd f3, 8(r1)
+/* 8028297C 0027E5DC 80 E1 00 0C */ lwz r7, 0xc(r1)
+/* 80282980 0027E5E0 50 EA 4B EC */ rlwimi r10, r7, 9, 0xf, 0x16
+/* 80282984 0027E5E4 51 2A FE F6 */ rlwimi r10, r9, 0x1f, 0x1b, 0x1b
+/* 80282988 0027E5E8 91 43 00 00 */ stw r10, 0(r3)
+/* 8028298C 0027E5EC 7C 85 20 AE */ lbzx r4, r5, r4
+/* 80282990 0027E5F0 50 8A 2E 34 */ rlwimi r10, r4, 5, 0x18, 0x1a
+/* 80282994 0027E5F4 50 0A 1D EE */ rlwimi r10, r0, 3, 0x17, 0x17
+/* 80282998 0027E5F8 55 40 03 D8 */ rlwinm r0, r10, 0, 0xf, 0xc
+/* 8028299C 0027E5FC 51 00 9A D8 */ rlwimi r0, r8, 0x13, 0xb, 0xc
+/* 802829A0 0027E600 50 C0 AA 94 */ rlwimi r0, r6, 0x15, 0xa, 0xa
+/* 802829A4 0027E604 90 03 00 00 */ stw r0, 0(r3)
+/* 802829A8 0027E608 40 80 00 0C */ bge lbl_802829B4
+/* 802829AC 0027E60C FC 20 00 90 */ fmr f1, f0
+/* 802829B0 0027E610 48 00 00 14 */ b lbl_802829C4
+lbl_802829B4:
+/* 802829B4 0027E614 C0 02 A1 64 */ lfs f0, lbl_80642764-_SDA2_BASE_(r2)
+/* 802829B8 0027E618 FC 01 00 40 */ fcmpo cr0, f1, f0
+/* 802829BC 0027E61C 40 81 00 08 */ ble lbl_802829C4
+/* 802829C0 0027E620 FC 20 00 90 */ fmr f1, f0
+lbl_802829C4:
+/* 802829C4 0027E624 C0 62 A1 40 */ lfs f3, lbl_80642740-_SDA2_BASE_(r2)
+/* 802829C8 0027E628 C0 02 A1 60 */ lfs f0, lbl_80642760-_SDA2_BASE_(r2)
+/* 802829CC 0027E62C EC 23 00 72 */ fmuls f1, f3, f1
+/* 802829D0 0027E630 FC 02 00 40 */ fcmpo cr0, f2, f0
+/* 802829D4 0027E634 FC 20 08 1E */ fctiwz f1, f1
+/* 802829D8 0027E638 D8 21 00 08 */ stfd f1, 8(r1)
+/* 802829DC 0027E63C 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 802829E0 0027E640 40 80 00 0C */ bge lbl_802829EC
+/* 802829E4 0027E644 FC 40 00 90 */ fmr f2, f0
+/* 802829E8 0027E648 48 00 00 14 */ b lbl_802829FC
+lbl_802829EC:
+/* 802829EC 0027E64C C0 02 A1 64 */ lfs f0, lbl_80642764-_SDA2_BASE_(r2)
+/* 802829F0 0027E650 FC 02 00 40 */ fcmpo cr0, f2, f0
+/* 802829F4 0027E654 40 81 00 08 */ ble lbl_802829FC
+/* 802829F8 0027E658 FC 40 00 90 */ fmr f2, f0
+lbl_802829FC:
+/* 802829FC 0027E65C C0 02 A1 40 */ lfs f0, lbl_80642740-_SDA2_BASE_(r2)
+/* 80282A00 0027E660 80 03 00 04 */ lwz r0, 4(r3)
+/* 80282A04 0027E664 50 80 06 3E */ rlwimi r0, r4, 0, 0x18, 0x1f
+/* 80282A08 0027E668 EC 00 00 B2 */ fmuls f0, f0, f2
+/* 80282A0C 0027E66C FC 00 00 1E */ fctiwz f0, f0
+/* 80282A10 0027E670 D8 01 00 08 */ stfd f0, 8(r1)
+/* 80282A14 0027E674 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 80282A18 0027E678 50 80 44 2E */ rlwimi r0, r4, 8, 0x10, 0x17
+/* 80282A1C 0027E67C 90 03 00 04 */ stw r0, 4(r3)
+/* 80282A20 0027E680 38 21 00 10 */ addi r1, r1, 0x10
+/* 80282A24 0027E684 4E 80 00 20 */ blr
+
+.global GXInitTexObjWrapMode
+GXInitTexObjWrapMode:
+/* 80282A28 0027E688 80 03 00 00 */ lwz r0, 0(r3)
+/* 80282A2C 0027E68C 50 80 07 BE */ rlwimi r0, r4, 0, 0x1e, 0x1f
+/* 80282A30 0027E690 50 A0 17 3A */ rlwimi r0, r5, 2, 0x1c, 0x1d
+/* 80282A34 0027E694 90 03 00 00 */ stw r0, 0(r3)
+/* 80282A38 0027E698 4E 80 00 20 */ blr
+
+.global GXInitTexObjTlut
+GXInitTexObjTlut:
+/* 80282A3C 0027E69C 90 83 00 18 */ stw r4, 0x18(r3)
+/* 80282A40 0027E6A0 4E 80 00 20 */ blr
+
+.global GXGetTexObjFmt
+GXGetTexObjFmt:
+/* 80282A44 0027E6A4 80 63 00 14 */ lwz r3, 0x14(r3)
+/* 80282A48 0027E6A8 4E 80 00 20 */ blr
+
+.global GXGetTexObjMipMap
+GXGetTexObjMipMap:
+/* 80282A4C 0027E6AC 88 03 00 1F */ lbz r0, 0x1f(r3)
+/* 80282A50 0027E6B0 54 03 07 FE */ clrlwi r3, r0, 0x1f
+/* 80282A54 0027E6B4 4E 80 00 20 */ blr
+
+.global GXGetTexObjTlut
+GXGetTexObjTlut:
+/* 80282A58 0027E6B8 80 63 00 18 */ lwz r3, 0x18(r3)
+/* 80282A5C 0027E6BC 4E 80 00 20 */ blr
+
+.global GXLoadTexObjPreLoaded
+GXLoadTexObjPreLoaded:
+/* 80282A60 0027E6C0 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80282A64 0027E6C4 7C 08 02 A6 */ mflr r0
+/* 80282A68 0027E6C8 39 6D 88 68 */ addi r11, r13, lbl_8063DB28-_SDA_BASE_
+/* 80282A6C 0027E6CC 39 4D 88 70 */ addi r10, r13, lbl_8063DB30-_SDA_BASE_
+/* 80282A70 0027E6D0 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80282A74 0027E6D4 39 2D 88 78 */ addi r9, r13, lbl_8063DB38-_SDA_BASE_
+/* 80282A78 0027E6D8 81 83 00 00 */ lwz r12, 0(r3)
+/* 80282A7C 0027E6DC 39 0D 88 80 */ addi r8, r13, lbl_8063DB40-_SDA_BASE_
+/* 80282A80 0027E6E0 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80282A84 0027E6E4 38 ED 88 88 */ addi r7, r13, lbl_8063DB48-_SDA_BASE_
+/* 80282A88 0027E6E8 38 CD 88 90 */ addi r6, r13, lbl_8063DB50-_SDA_BASE_
+/* 80282A8C 0027E6EC 7C BF 2B 78 */ mr r31, r5
+/* 80282A90 0027E6F0 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80282A94 0027E6F4 7C 7E 1B 78 */ mr r30, r3
+/* 80282A98 0027E6F8 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 80282A9C 0027E6FC 3F A0 CC 01 */ lis r29, 0xCC008000@ha
+/* 80282AA0 0027E700 93 81 00 10 */ stw r28, 0x10(r1)
+/* 80282AA4 0027E704 3B 80 00 61 */ li r28, 0x61
+/* 80282AA8 0027E708 7C 0B 28 AE */ lbzx r0, r11, r5
+/* 80282AAC 0027E70C 81 63 00 04 */ lwz r11, 4(r3)
+/* 80282AB0 0027E710 50 0C C0 0E */ rlwimi r12, r0, 0x18, 0, 7
+/* 80282AB4 0027E714 7C 0A 28 AE */ lbzx r0, r10, r5
+/* 80282AB8 0027E718 7D 49 28 AE */ lbzx r10, r9, r5
+/* 80282ABC 0027E71C 50 0B C0 0E */ rlwimi r11, r0, 0x18, 0, 7
+/* 80282AC0 0027E720 7C 07 28 AE */ lbzx r0, r7, r5
+/* 80282AC4 0027E724 7D 08 28 AE */ lbzx r8, r8, r5
+/* 80282AC8 0027E728 7C A6 28 AE */ lbzx r5, r6, r5
+/* 80282ACC 0027E72C 81 23 00 08 */ lwz r9, 8(r3)
+/* 80282AD0 0027E730 51 49 C0 0E */ rlwimi r9, r10, 0x18, 0, 7
+/* 80282AD4 0027E734 9B 9D 80 00 */ stb r28, 0xCC008000@l(r29)
+/* 80282AD8 0027E738 80 E4 00 00 */ lwz r7, 0(r4)
+/* 80282ADC 0027E73C 51 07 C0 0E */ rlwimi r7, r8, 0x18, 0, 7
+/* 80282AE0 0027E740 91 9D 80 00 */ stw r12, -0x8000(r29)
+/* 80282AE4 0027E744 80 C4 00 04 */ lwz r6, 4(r4)
+/* 80282AE8 0027E748 50 06 C0 0E */ rlwimi r6, r0, 0x18, 0, 7
+/* 80282AEC 0027E74C 9B 9D 80 00 */ stb r28, -0x8000(r29)
+/* 80282AF0 0027E750 88 03 00 1F */ lbz r0, 0x1f(r3)
+/* 80282AF4 0027E754 91 7D 80 00 */ stw r11, -0x8000(r29)
+/* 80282AF8 0027E758 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 80282AFC 0027E75C 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 80282B00 0027E760 9B 9D 80 00 */ stb r28, -0x8000(r29)
+/* 80282B04 0027E764 50 A0 C0 0E */ rlwimi r0, r5, 0x18, 0, 7
+/* 80282B08 0027E768 91 3D 80 00 */ stw r9, -0x8000(r29)
+/* 80282B0C 0027E76C 9B 9D 80 00 */ stb r28, -0x8000(r29)
+/* 80282B10 0027E770 90 FD 80 00 */ stw r7, -0x8000(r29)
+/* 80282B14 0027E774 9B 9D 80 00 */ stb r28, -0x8000(r29)
+/* 80282B18 0027E778 90 DD 80 00 */ stw r6, -0x8000(r29)
+/* 80282B1C 0027E77C 9B 9D 80 00 */ stb r28, -0x8000(r29)
+/* 80282B20 0027E780 91 83 00 00 */ stw r12, 0(r3)
+/* 80282B24 0027E784 91 63 00 04 */ stw r11, 4(r3)
+/* 80282B28 0027E788 91 23 00 08 */ stw r9, 8(r3)
+/* 80282B2C 0027E78C 90 E4 00 00 */ stw r7, 0(r4)
+/* 80282B30 0027E790 90 C4 00 04 */ stw r6, 4(r4)
+/* 80282B34 0027E794 90 03 00 0C */ stw r0, 0xc(r3)
+/* 80282B38 0027E798 90 1D 80 00 */ stw r0, -0x8000(r29)
+/* 80282B3C 0027E79C 40 82 00 38 */ bne lbl_80282B74
+/* 80282B40 0027E7A0 80 82 A0 D0 */ lwz r4, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80282B44 0027E7A4 80 63 00 18 */ lwz r3, 0x18(r3)
+/* 80282B48 0027E7A8 81 84 05 1C */ lwz r12, 0x51c(r4)
+/* 80282B4C 0027E7AC 7D 89 03 A6 */ mtctr r12
+/* 80282B50 0027E7B0 4E 80 04 21 */ bctrl
+/* 80282B54 0027E7B4 38 8D 88 98 */ addi r4, r13, lbl_8063DB58-_SDA_BASE_
+/* 80282B58 0027E7B8 80 03 00 04 */ lwz r0, 4(r3)
+/* 80282B5C 0027E7BC 7C 84 F8 AE */ lbzx r4, r4, r31
+/* 80282B60 0027E7C0 50 80 C0 0E */ rlwimi r0, r4, 0x18, 0, 7
+/* 80282B64 0027E7C4 90 03 00 04 */ stw r0, 4(r3)
+/* 80282B68 0027E7C8 9B 9D 80 00 */ stb r28, -0x8000(r29)
+/* 80282B6C 0027E7CC 80 03 00 04 */ lwz r0, 4(r3)
+/* 80282B70 0027E7D0 90 1D 80 00 */ stw r0, -0x8000(r29)
+lbl_80282B74:
+/* 80282B74 0027E7D4 80 C2 A0 D0 */ lwz r6, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80282B78 0027E7D8 57 E3 10 3A */ slwi r3, r31, 2
+/* 80282B7C 0027E7DC 80 BE 00 08 */ lwz r5, 8(r30)
+/* 80282B80 0027E7E0 38 00 00 00 */ li r0, 0
+/* 80282B84 0027E7E4 7C 86 1A 14 */ add r4, r6, r3
+/* 80282B88 0027E7E8 80 7E 00 00 */ lwz r3, 0(r30)
+/* 80282B8C 0027E7EC 90 A4 05 64 */ stw r5, 0x564(r4)
+/* 80282B90 0027E7F0 90 64 05 84 */ stw r3, 0x584(r4)
+/* 80282B94 0027E7F4 80 66 05 FC */ lwz r3, 0x5fc(r6)
+/* 80282B98 0027E7F8 60 63 00 01 */ ori r3, r3, 1
+/* 80282B9C 0027E7FC 90 66 05 FC */ stw r3, 0x5fc(r6)
+/* 80282BA0 0027E800 B0 06 00 02 */ sth r0, 2(r6)
+/* 80282BA4 0027E804 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80282BA8 0027E808 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 80282BAC 0027E80C 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 80282BB0 0027E810 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 80282BB4 0027E814 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80282BB8 0027E818 7C 08 03 A6 */ mtlr r0
+/* 80282BBC 0027E81C 38 21 00 20 */ addi r1, r1, 0x20
+/* 80282BC0 0027E820 4E 80 00 20 */ blr
+
+.global GXLoadTexObj
+GXLoadTexObj:
+/* 80282BC4 0027E824 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80282BC8 0027E828 7C 08 02 A6 */ mflr r0
+/* 80282BCC 0027E82C 80 A2 A0 D0 */ lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80282BD0 0027E830 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80282BD4 0027E834 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80282BD8 0027E838 7C 9F 23 78 */ mr r31, r4
+/* 80282BDC 0027E83C 93 C1 00 08 */ stw r30, 8(r1)
+/* 80282BE0 0027E840 7C 7E 1B 78 */ mr r30, r3
+/* 80282BE4 0027E844 81 85 05 18 */ lwz r12, 0x518(r5)
+/* 80282BE8 0027E848 7D 89 03 A6 */ mtctr r12
+/* 80282BEC 0027E84C 4E 80 04 21 */ bctrl
+/* 80282BF0 0027E850 7C 64 1B 78 */ mr r4, r3
+/* 80282BF4 0027E854 7F C3 F3 78 */ mr r3, r30
+/* 80282BF8 0027E858 7F E5 FB 78 */ mr r5, r31
+/* 80282BFC 0027E85C 4B FF FE 65 */ bl GXLoadTexObjPreLoaded
+/* 80282C00 0027E860 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80282C04 0027E864 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80282C08 0027E868 83 C1 00 08 */ lwz r30, 8(r1)
+/* 80282C0C 0027E86C 7C 08 03 A6 */ mtlr r0
+/* 80282C10 0027E870 38 21 00 10 */ addi r1, r1, 0x10
+/* 80282C14 0027E874 4E 80 00 20 */ blr
+
+.global GXInitTlutObj
+GXInitTlutObj:
+/* 80282C18 0027E878 80 E3 00 04 */ lwz r7, 4(r3)
+/* 80282C1C 0027E87C 38 00 00 64 */ li r0, 0x64
+/* 80282C20 0027E880 50 87 DA 3E */ rlwimi r7, r4, 0x1b, 8, 0x1f
+/* 80282C24 0027E884 38 80 00 00 */ li r4, 0
+/* 80282C28 0027E888 50 A4 55 2A */ rlwimi r4, r5, 0xa, 0x14, 0x15
+/* 80282C2C 0027E88C B0 C3 00 08 */ sth r6, 8(r3)
+/* 80282C30 0027E890 50 07 C0 0E */ rlwimi r7, r0, 0x18, 0, 7
+/* 80282C34 0027E894 90 83 00 00 */ stw r4, 0(r3)
+/* 80282C38 0027E898 90 E3 00 04 */ stw r7, 4(r3)
+/* 80282C3C 0027E89C 4E 80 00 20 */ blr
+
+.global GXLoadTlut
+GXLoadTlut:
+/* 80282C40 0027E8A0 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80282C44 0027E8A4 7C 08 02 A6 */ mflr r0
+/* 80282C48 0027E8A8 80 A2 A0 D0 */ lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80282C4C 0027E8AC 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80282C50 0027E8B0 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80282C54 0027E8B4 93 C1 00 08 */ stw r30, 8(r1)
+/* 80282C58 0027E8B8 7C 7E 1B 78 */ mr r30, r3
+/* 80282C5C 0027E8BC 7C 83 23 78 */ mr r3, r4
+/* 80282C60 0027E8C0 81 85 05 1C */ lwz r12, 0x51c(r5)
+/* 80282C64 0027E8C4 7D 89 03 A6 */ mtctr r12
+/* 80282C68 0027E8C8 4E 80 04 21 */ bctrl
+/* 80282C6C 0027E8CC 7C 7F 1B 78 */ mr r31, r3
+/* 80282C70 0027E8D0 48 00 0E AD */ bl __GXFlushTextureState
+/* 80282C74 0027E8D4 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80282C78 0027E8D8 38 80 00 61 */ li r4, 0x61
+/* 80282C7C 0027E8DC 98 83 80 00 */ stb r4, 0xCC008000@l(r3)
+/* 80282C80 0027E8E0 80 1E 00 04 */ lwz r0, 4(r30)
+/* 80282C84 0027E8E4 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 80282C88 0027E8E8 98 83 80 00 */ stb r4, -0x8000(r3)
+/* 80282C8C 0027E8EC 80 1F 00 00 */ lwz r0, 0(r31)
+/* 80282C90 0027E8F0 90 03 80 00 */ stw r0, -0x8000(r3)
+/* 80282C94 0027E8F4 48 00 0E 89 */ bl __GXFlushTextureState
+/* 80282C98 0027E8F8 80 1F 00 00 */ lwz r0, 0(r31)
+/* 80282C9C 0027E8FC 80 9E 00 00 */ lwz r4, 0(r30)
+/* 80282CA0 0027E900 50 04 05 BE */ rlwimi r4, r0, 0, 0x16, 0x1f
+/* 80282CA4 0027E904 80 7E 00 04 */ lwz r3, 4(r30)
+/* 80282CA8 0027E908 90 9F 00 04 */ stw r4, 4(r31)
+/* 80282CAC 0027E90C 80 1E 00 08 */ lwz r0, 8(r30)
+/* 80282CB0 0027E910 90 7F 00 08 */ stw r3, 8(r31)
+/* 80282CB4 0027E914 90 1F 00 0C */ stw r0, 0xc(r31)
+/* 80282CB8 0027E918 90 9E 00 00 */ stw r4, 0(r30)
+/* 80282CBC 0027E91C 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80282CC0 0027E920 83 C1 00 08 */ lwz r30, 8(r1)
+/* 80282CC4 0027E924 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80282CC8 0027E928 7C 08 03 A6 */ mtlr r0
+/* 80282CCC 0027E92C 38 21 00 10 */ addi r1, r1, 0x10
+/* 80282CD0 0027E930 4E 80 00 20 */ blr
+
+.global GXInitTexCacheRegion
+GXInitTexCacheRegion:
+/* 80282CD4 0027E934 2C 06 00 01 */ cmpwi r6, 1
+/* 80282CD8 0027E938 41 82 00 28 */ beq lbl_80282D00
+/* 80282CDC 0027E93C 40 80 00 10 */ bge lbl_80282CEC
+/* 80282CE0 0027E940 2C 06 00 00 */ cmpwi r6, 0
+/* 80282CE4 0027E944 40 80 00 14 */ bge lbl_80282CF8
+/* 80282CE8 0027E948 48 00 00 24 */ b lbl_80282D0C
+lbl_80282CEC:
+/* 80282CEC 0027E94C 2C 06 00 03 */ cmpwi r6, 3
+/* 80282CF0 0027E950 40 80 00 1C */ bge lbl_80282D0C
+/* 80282CF4 0027E954 48 00 00 14 */ b lbl_80282D08
+lbl_80282CF8:
+/* 80282CF8 0027E958 38 C0 00 03 */ li r6, 3
+/* 80282CFC 0027E95C 48 00 00 10 */ b lbl_80282D0C
+lbl_80282D00:
+/* 80282D00 0027E960 38 C0 00 04 */ li r6, 4
+/* 80282D04 0027E964 48 00 00 08 */ b lbl_80282D0C
+lbl_80282D08:
+/* 80282D08 0027E968 38 C0 00 05 */ li r6, 5
+lbl_80282D0C:
+/* 80282D0C 0027E96C 38 00 00 00 */ li r0, 0
+/* 80282D10 0027E970 2C 08 00 02 */ cmpwi r8, 2
+/* 80282D14 0027E974 50 A0 DC 7E */ rlwimi r0, r5, 0x1b, 0x11, 0x1f
+/* 80282D18 0027E978 50 C0 7B A0 */ rlwimi r0, r6, 0xf, 0xe, 0x10
+/* 80282D1C 0027E97C 50 C0 92 DA */ rlwimi r0, r6, 0x12, 0xb, 0xd
+/* 80282D20 0027E980 90 03 00 00 */ stw r0, 0(r3)
+/* 80282D24 0027E984 41 82 00 34 */ beq lbl_80282D58
+/* 80282D28 0027E988 40 80 00 14 */ bge lbl_80282D3C
+/* 80282D2C 0027E98C 2C 08 00 00 */ cmpwi r8, 0
+/* 80282D30 0027E990 41 82 00 18 */ beq lbl_80282D48
+/* 80282D34 0027E994 40 80 00 1C */ bge lbl_80282D50
+/* 80282D38 0027E998 48 00 00 2C */ b lbl_80282D64
+lbl_80282D3C:
+/* 80282D3C 0027E99C 2C 08 00 04 */ cmpwi r8, 4
+/* 80282D40 0027E9A0 40 80 00 24 */ bge lbl_80282D64
+/* 80282D44 0027E9A4 48 00 00 1C */ b lbl_80282D60
+lbl_80282D48:
+/* 80282D48 0027E9A8 38 C0 00 03 */ li r6, 3
+/* 80282D4C 0027E9AC 48 00 00 18 */ b lbl_80282D64
+lbl_80282D50:
+/* 80282D50 0027E9B0 38 C0 00 04 */ li r6, 4
+/* 80282D54 0027E9B4 48 00 00 10 */ b lbl_80282D64
+lbl_80282D58:
+/* 80282D58 0027E9B8 38 C0 00 05 */ li r6, 5
+/* 80282D5C 0027E9BC 48 00 00 08 */ b lbl_80282D64
+lbl_80282D60:
+/* 80282D60 0027E9C0 38 C0 00 00 */ li r6, 0
+lbl_80282D64:
+/* 80282D64 0027E9C4 38 A0 00 00 */ li r5, 0
+/* 80282D68 0027E9C8 38 00 00 01 */ li r0, 1
+/* 80282D6C 0027E9CC 50 E5 DC 7E */ rlwimi r5, r7, 0x1b, 0x11, 0x1f
+/* 80282D70 0027E9D0 98 83 00 0C */ stb r4, 0xc(r3)
+/* 80282D74 0027E9D4 50 C5 7B A0 */ rlwimi r5, r6, 0xf, 0xe, 0x10
+/* 80282D78 0027E9D8 50 C5 92 DA */ rlwimi r5, r6, 0x12, 0xb, 0xd
+/* 80282D7C 0027E9DC 98 03 00 0D */ stb r0, 0xd(r3)
+/* 80282D80 0027E9E0 90 A3 00 04 */ stw r5, 4(r3)
+/* 80282D84 0027E9E4 4E 80 00 20 */ blr
+
+.global GXInitTlutRegion
+GXInitTlutRegion:
+/* 80282D88 0027E9E8 3C 04 FF F8 */ addis r0, r4, 0xfff8
+/* 80282D8C 0027E9EC 38 80 00 00 */ li r4, 0
+/* 80282D90 0027E9F0 50 04 BD BE */ rlwimi r4, r0, 0x17, 0x16, 0x1f
+/* 80282D94 0027E9F4 38 00 00 65 */ li r0, 0x65
+/* 80282D98 0027E9F8 50 A4 52 EA */ rlwimi r4, r5, 0xa, 0xb, 0x15
+/* 80282D9C 0027E9FC 50 04 C0 0E */ rlwimi r4, r0, 0x18, 0, 7
+/* 80282DA0 0027EA00 90 83 00 00 */ stw r4, 0(r3)
+/* 80282DA4 0027EA04 4E 80 00 20 */ blr
+
+.global GXInvalidateTexAll
+GXInvalidateTexAll:
+/* 80282DA8 0027EA08 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80282DAC 0027EA0C 7C 08 02 A6 */ mflr r0
+/* 80282DB0 0027EA10 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80282DB4 0027EA14 48 00 0D 69 */ bl __GXFlushTextureState
+/* 80282DB8 0027EA18 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 80282DBC 0027EA1C 38 A0 00 61 */ li r5, 0x61
+/* 80282DC0 0027EA20 3C 60 66 00 */ lis r3, 0x66001000@ha
+/* 80282DC4 0027EA24 98 A4 80 00 */ stb r5, 0xCC008000@l(r4)
+/* 80282DC8 0027EA28 38 03 10 00 */ addi r0, r3, 0x66001000@l
+/* 80282DCC 0027EA2C 90 04 80 00 */ stw r0, -0x8000(r4)
+/* 80282DD0 0027EA30 38 03 11 00 */ addi r0, r3, 0x1100
+/* 80282DD4 0027EA34 98 A4 80 00 */ stb r5, -0x8000(r4)
+/* 80282DD8 0027EA38 90 04 80 00 */ stw r0, -0x8000(r4)
+/* 80282DDC 0027EA3C 48 00 0D 41 */ bl __GXFlushTextureState
+/* 80282DE0 0027EA40 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80282DE4 0027EA44 7C 08 03 A6 */ mtlr r0
+/* 80282DE8 0027EA48 38 21 00 10 */ addi r1, r1, 0x10
+/* 80282DEC 0027EA4C 4E 80 00 20 */ blr
+
+.global GXSetTexRegionCallback
+GXSetTexRegionCallback:
+/* 80282DF0 0027EA50 80 82 A0 D0 */ lwz r4, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80282DF4 0027EA54 7C 60 1B 78 */ mr r0, r3
+/* 80282DF8 0027EA58 80 64 05 18 */ lwz r3, 0x518(r4)
+/* 80282DFC 0027EA5C 90 04 05 18 */ stw r0, 0x518(r4)
+/* 80282E00 0027EA60 4E 80 00 20 */ blr
+
+.global GXSetTlutRegionCallback
+GXSetTlutRegionCallback:
+/* 80282E04 0027EA64 80 82 A0 D0 */ lwz r4, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80282E08 0027EA68 7C 60 1B 78 */ mr r0, r3
+/* 80282E0C 0027EA6C 80 64 05 1C */ lwz r3, 0x51c(r4)
+/* 80282E10 0027EA70 90 04 05 1C */ stw r0, 0x51c(r4)
+/* 80282E14 0027EA74 4E 80 00 20 */ blr
+
+.global __SetSURegs
+__SetSURegs:
+/* 80282E18 0027EA78 81 62 A0 D0 */ lwz r11, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80282E1C 0027EA7C 54 86 10 3A */ slwi r6, r4, 2
+/* 80282E20 0027EA80 54 60 10 3A */ slwi r0, r3, 2
+/* 80282E24 0027EA84 3C A0 CC 01 */ lis r5, 0xCC008000@ha
+/* 80282E28 0027EA88 7D 4B 02 14 */ add r10, r11, r0
+/* 80282E2C 0027EA8C 7D 2B 32 14 */ add r9, r11, r6
+/* 80282E30 0027EA90 80 6A 05 64 */ lwz r3, 0x564(r10)
+/* 80282E34 0027EA94 38 80 00 61 */ li r4, 0x61
+/* 80282E38 0027EA98 81 09 01 08 */ lwz r8, 0x108(r9)
+/* 80282E3C 0027EA9C 38 00 00 00 */ li r0, 0
+/* 80282E40 0027EAA0 54 66 05 BE */ clrlwi r6, r3, 0x16
+/* 80282E44 0027EAA4 54 63 B5 BE */ rlwinm r3, r3, 0x16, 0x16, 0x1f
+/* 80282E48 0027EAA8 50 C8 04 3E */ rlwimi r8, r6, 0, 0x10, 0x1f
+/* 80282E4C 0027EAAC 91 09 01 08 */ stw r8, 0x108(r9)
+/* 80282E50 0027EAB0 80 E9 01 28 */ lwz r7, 0x128(r9)
+/* 80282E54 0027EAB4 50 67 04 3E */ rlwimi r7, r3, 0, 0x10, 0x1f
+/* 80282E58 0027EAB8 90 E9 01 28 */ stw r7, 0x128(r9)
+/* 80282E5C 0027EABC 80 6A 05 84 */ lwz r3, 0x584(r10)
+/* 80282E60 0027EAC0 54 66 07 BE */ clrlwi r6, r3, 0x1e
+/* 80282E64 0027EAC4 54 63 F7 BE */ rlwinm r3, r3, 0x1e, 0x1e, 0x1f
+/* 80282E68 0027EAC8 38 C6 FF FF */ addi r6, r6, -1
+/* 80282E6C 0027EACC 7C C6 00 34 */ cntlzw r6, r6
+/* 80282E70 0027EAD0 38 63 FF FF */ addi r3, r3, -1
+/* 80282E74 0027EAD4 50 C8 5B DE */ rlwimi r8, r6, 0xb, 0xf, 0xf
+/* 80282E78 0027EAD8 7C 63 00 34 */ cntlzw r3, r3
+/* 80282E7C 0027EADC 91 09 01 08 */ stw r8, 0x108(r9)
+/* 80282E80 0027EAE0 50 67 5B DE */ rlwimi r7, r3, 0xb, 0xf, 0xf
+/* 80282E84 0027EAE4 90 E9 01 28 */ stw r7, 0x128(r9)
+/* 80282E88 0027EAE8 98 85 80 00 */ stb r4, 0xCC008000@l(r5)
+/* 80282E8C 0027EAEC 80 69 01 08 */ lwz r3, 0x108(r9)
+/* 80282E90 0027EAF0 90 65 80 00 */ stw r3, -0x8000(r5)
+/* 80282E94 0027EAF4 98 85 80 00 */ stb r4, -0x8000(r5)
+/* 80282E98 0027EAF8 80 69 01 28 */ lwz r3, 0x128(r9)
+/* 80282E9C 0027EAFC 90 65 80 00 */ stw r3, -0x8000(r5)
+/* 80282EA0 0027EB00 B0 0B 00 02 */ sth r0, 2(r11)
+/* 80282EA4 0027EB04 4E 80 00 20 */ blr
+
+.global __GXSetSUTexRegs
+__GXSetSUTexRegs:
+/* 80282EA8 0027EB08 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80282EAC 0027EB0C 7C 08 02 A6 */ mflr r0
+/* 80282EB0 0027EB10 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80282EB4 0027EB14 39 61 00 30 */ addi r11, r1, 0x30
+/* 80282EB8 0027EB18 4B F4 42 61 */ bl _savegpr_23
+/* 80282EBC 0027EB1C 83 A2 A0 D0 */ lwz r29, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80282EC0 0027EB20 80 1D 05 E4 */ lwz r0, 0x5e4(r29)
+/* 80282EC4 0027EB24 28 00 00 FF */ cmplwi r0, 0xff
+/* 80282EC8 0027EB28 41 82 01 30 */ beq lbl_80282FF8
+/* 80282ECC 0027EB2C 80 1D 02 54 */ lwz r0, 0x254(r29)
+/* 80282ED0 0027EB30 3B 80 00 00 */ li r28, 0
+/* 80282ED4 0027EB34 3A E0 00 01 */ li r23, 1
+/* 80282ED8 0027EB38 54 03 B7 3E */ rlwinm r3, r0, 0x16, 0x1c, 0x1f
+/* 80282EDC 0027EB3C 54 1B 87 7E */ rlwinm r27, r0, 0x10, 0x1d, 0x1f
+/* 80282EE0 0027EB40 3B 43 00 01 */ addi r26, r3, 1
+/* 80282EE4 0027EB44 48 00 00 88 */ b lbl_80282F6C
+lbl_80282EE8:
+/* 80282EE8 0027EB48 2C 1C 00 02 */ cmpwi r28, 2
+/* 80282EEC 0027EB4C 41 82 00 44 */ beq lbl_80282F30
+/* 80282EF0 0027EB50 40 80 00 14 */ bge lbl_80282F04
+/* 80282EF4 0027EB54 2C 1C 00 00 */ cmpwi r28, 0
+/* 80282EF8 0027EB58 41 82 00 18 */ beq lbl_80282F10
+/* 80282EFC 0027EB5C 40 80 00 24 */ bge lbl_80282F20
+/* 80282F00 0027EB60 48 00 00 4C */ b lbl_80282F4C
+lbl_80282F04:
+/* 80282F04 0027EB64 2C 1C 00 04 */ cmpwi r28, 4
+/* 80282F08 0027EB68 40 80 00 44 */ bge lbl_80282F4C
+/* 80282F0C 0027EB6C 48 00 00 34 */ b lbl_80282F40
+lbl_80282F10:
+/* 80282F10 0027EB70 80 1D 01 70 */ lwz r0, 0x170(r29)
+/* 80282F14 0027EB74 54 19 07 7E */ clrlwi r25, r0, 0x1d
+/* 80282F18 0027EB78 54 18 EF 7E */ rlwinm r24, r0, 0x1d, 0x1d, 0x1f
+/* 80282F1C 0027EB7C 48 00 00 30 */ b lbl_80282F4C
+lbl_80282F20:
+/* 80282F20 0027EB80 80 1D 01 70 */ lwz r0, 0x170(r29)
+/* 80282F24 0027EB84 54 19 D7 7E */ rlwinm r25, r0, 0x1a, 0x1d, 0x1f
+/* 80282F28 0027EB88 54 18 BF 7E */ rlwinm r24, r0, 0x17, 0x1d, 0x1f
+/* 80282F2C 0027EB8C 48 00 00 20 */ b lbl_80282F4C
+lbl_80282F30:
+/* 80282F30 0027EB90 80 1D 01 70 */ lwz r0, 0x170(r29)
+/* 80282F34 0027EB94 54 19 A7 7E */ rlwinm r25, r0, 0x14, 0x1d, 0x1f
+/* 80282F38 0027EB98 54 18 8F 7E */ rlwinm r24, r0, 0x11, 0x1d, 0x1f
+/* 80282F3C 0027EB9C 48 00 00 10 */ b lbl_80282F4C
+lbl_80282F40:
+/* 80282F40 0027EBA0 80 1D 01 70 */ lwz r0, 0x170(r29)
+/* 80282F44 0027EBA4 54 19 77 7E */ rlwinm r25, r0, 0xe, 0x1d, 0x1f
+/* 80282F48 0027EBA8 54 18 5F 7E */ rlwinm r24, r0, 0xb, 0x1d, 0x1f
+lbl_80282F4C:
+/* 80282F4C 0027EBAC 80 7D 05 E4 */ lwz r3, 0x5e4(r29)
+/* 80282F50 0027EBB0 7E E0 C0 30 */ slw r0, r23, r24
+/* 80282F54 0027EBB4 7C 60 00 39 */ and. r0, r3, r0
+/* 80282F58 0027EBB8 40 82 00 10 */ bne lbl_80282F68
+/* 80282F5C 0027EBBC 7F 23 CB 78 */ mr r3, r25
+/* 80282F60 0027EBC0 7F 04 C3 78 */ mr r4, r24
+/* 80282F64 0027EBC4 4B FF FE B5 */ bl __SetSURegs
+lbl_80282F68:
+/* 80282F68 0027EBC8 3B 9C 00 01 */ addi r28, r28, 1
+lbl_80282F6C:
+/* 80282F6C 0027EBCC 7C 1C D8 40 */ cmplw r28, r27
+/* 80282F70 0027EBD0 41 80 FF 78 */ blt lbl_80282EE8
+/* 80282F74 0027EBD4 83 82 A0 D0 */ lwz r28, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80282F78 0027EBD8 3B 60 00 00 */ li r27, 0
+/* 80282F7C 0027EBDC 3A E0 00 01 */ li r23, 1
+/* 80282F80 0027EBE0 7F 9F E3 78 */ mr r31, r28
+/* 80282F84 0027EBE4 3B DC 01 50 */ addi r30, r28, 0x150
+/* 80282F88 0027EBE8 48 00 00 68 */ b lbl_80282FF0
+lbl_80282F8C:
+/* 80282F8C 0027EBEC 57 60 07 FF */ clrlwi. r0, r27, 0x1f
+/* 80282F90 0027EBF0 80 1F 05 A4 */ lwz r0, 0x5a4(r31)
+/* 80282F94 0027EBF4 57 63 08 3A */ rlwinm r3, r27, 1, 0, 0x1d
+/* 80282F98 0027EBF8 54 19 06 2C */ rlwinm r25, r0, 0, 0x18, 0x16
+/* 80282F9C 0027EBFC 41 82 00 10 */ beq lbl_80282FAC
+/* 80282FA0 0027EC00 7C 1E 18 2E */ lwzx r0, r30, r3
+/* 80282FA4 0027EC04 54 18 8F 7E */ rlwinm r24, r0, 0x11, 0x1d, 0x1f
+/* 80282FA8 0027EC08 48 00 00 0C */ b lbl_80282FB4
+lbl_80282FAC:
+/* 80282FAC 0027EC0C 7C 1E 18 2E */ lwzx r0, r30, r3
+/* 80282FB0 0027EC10 54 18 EF 7E */ rlwinm r24, r0, 0x1d, 0x1d, 0x1f
+lbl_80282FB4:
+/* 80282FB4 0027EC14 28 19 00 FF */ cmplwi r25, 0xff
+/* 80282FB8 0027EC18 41 82 00 30 */ beq lbl_80282FE8
+/* 80282FBC 0027EC1C 80 7D 05 E4 */ lwz r3, 0x5e4(r29)
+/* 80282FC0 0027EC20 7E E0 C0 30 */ slw r0, r23, r24
+/* 80282FC4 0027EC24 7C 60 00 39 */ and. r0, r3, r0
+/* 80282FC8 0027EC28 40 82 00 20 */ bne lbl_80282FE8
+/* 80282FCC 0027EC2C 80 7C 05 E8 */ lwz r3, 0x5e8(r28)
+/* 80282FD0 0027EC30 7E E0 D8 30 */ slw r0, r23, r27
+/* 80282FD4 0027EC34 7C 60 00 39 */ and. r0, r3, r0
+/* 80282FD8 0027EC38 41 82 00 10 */ beq lbl_80282FE8
+/* 80282FDC 0027EC3C 7F 23 CB 78 */ mr r3, r25
+/* 80282FE0 0027EC40 7F 04 C3 78 */ mr r4, r24
+/* 80282FE4 0027EC44 4B FF FE 35 */ bl __SetSURegs
+lbl_80282FE8:
+/* 80282FE8 0027EC48 3B FF 00 04 */ addi r31, r31, 4
+/* 80282FEC 0027EC4C 3B 7B 00 01 */ addi r27, r27, 1
+lbl_80282FF0:
+/* 80282FF0 0027EC50 7C 1B D0 40 */ cmplw r27, r26
+/* 80282FF4 0027EC54 41 80 FF 98 */ blt lbl_80282F8C
+lbl_80282FF8:
+/* 80282FF8 0027EC58 39 61 00 30 */ addi r11, r1, 0x30
+/* 80282FFC 0027EC5C 4B F4 41 69 */ bl _restgpr_23
+/* 80283000 0027EC60 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80283004 0027EC64 7C 08 03 A6 */ mtlr r0
+/* 80283008 0027EC68 38 21 00 30 */ addi r1, r1, 0x30
+/* 8028300C 0027EC6C 4E 80 00 20 */ blr
+
+.global __GXSetTmemConfig
+__GXSetTmemConfig:
+/* 80283010 0027EC70 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80283014 0027EC74 2C 03 00 01 */ cmpwi r3, 1
+/* 80283018 0027EC78 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8028301C 0027EC7C 93 C1 00 08 */ stw r30, 8(r1)
+/* 80283020 0027EC80 41 82 01 20 */ beq lbl_80283140
+/* 80283024 0027EC84 40 80 00 08 */ bge lbl_8028302C
+/* 80283028 0027EC88 48 00 02 24 */ b lbl_8028324C
+lbl_8028302C:
+/* 8028302C 0027EC8C 2C 03 00 03 */ cmpwi r3, 3
+/* 80283030 0027EC90 40 80 02 1C */ bge lbl_8028324C
+/* 80283034 0027EC94 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80283038 0027EC98 38 00 00 61 */ li r0, 0x61
+/* 8028303C 0027EC9C 3C 80 8C 0E */ lis r4, 0x8C0D8000@ha
+/* 80283040 0027ECA0 98 03 80 00 */ stb r0, 0xCC008000@l(r3)
+/* 80283044 0027ECA4 38 84 80 00 */ addi r4, r4, 0x8C0D8000@l
+/* 80283048 0027ECA8 3C A0 90 0E */ lis r5, 0x900DC000@ha
+/* 8028304C 0027ECAC 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 80283050 0027ECB0 3C 80 8D 0E */ lis r4, 0x8D0D8800@ha
+/* 80283054 0027ECB4 3F E0 91 0E */ lis r31, 0x910DC800@ha
+/* 80283058 0027ECB8 3F C0 8E 0E */ lis r30, 0x8E0D9000@ha
+/* 8028305C 0027ECBC 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 80283060 0027ECC0 38 A5 C0 00 */ addi r5, r5, 0x900DC000@l
+/* 80283064 0027ECC4 3D 80 92 0E */ lis r12, 0x920DD000@ha
+/* 80283068 0027ECC8 3D 60 8F 0E */ lis r11, 0x8F0D9800@ha
+/* 8028306C 0027ECCC 90 A3 80 00 */ stw r5, -0x8000(r3)
+/* 80283070 0027ECD0 3D 40 93 0E */ lis r10, 0x930DD800@ha
+/* 80283074 0027ECD4 3D 20 AC 0E */ lis r9, 0xAC0DA000@ha
+/* 80283078 0027ECD8 3D 00 B0 0E */ lis r8, 0xB00DC400@ha
+/* 8028307C 0027ECDC 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 80283080 0027ECE0 38 84 88 00 */ addi r4, r4, 0x8D0D8800@l
+/* 80283084 0027ECE4 3C E0 AD 0E */ lis r7, 0xAD0DA800@ha
+/* 80283088 0027ECE8 3C C0 B1 0E */ lis r6, 0xB10DCC00@ha
+/* 8028308C 0027ECEC 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 80283090 0027ECF0 3C A0 AE 0E */ lis r5, 0xAE0DB000@ha
+/* 80283094 0027ECF4 3C 80 B2 0E */ lis r4, 0xB20DD400@ha
+/* 80283098 0027ECF8 3B FF C8 00 */ addi r31, r31, 0x910DC800@l
+/* 8028309C 0027ECFC 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 802830A0 0027ED00 3B DE 90 00 */ addi r30, r30, 0x8E0D9000@l
+/* 802830A4 0027ED04 39 8C D0 00 */ addi r12, r12, 0x920DD000@l
+/* 802830A8 0027ED08 39 6B 98 00 */ addi r11, r11, 0x8F0D9800@l
+/* 802830AC 0027ED0C 93 E3 80 00 */ stw r31, -0x8000(r3)
+/* 802830B0 0027ED10 39 4A D8 00 */ addi r10, r10, 0x930DD800@l
+/* 802830B4 0027ED14 39 29 A0 00 */ addi r9, r9, 0xAC0DA000@l
+/* 802830B8 0027ED18 39 08 C4 00 */ addi r8, r8, 0xB00DC400@l
+/* 802830BC 0027ED1C 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 802830C0 0027ED20 38 E7 A8 00 */ addi r7, r7, 0xAD0DA800@l
+/* 802830C4 0027ED24 38 C6 CC 00 */ addi r6, r6, 0xB10DCC00@l
+/* 802830C8 0027ED28 38 A5 B0 00 */ addi r5, r5, 0xAE0DB000@l
+/* 802830CC 0027ED2C 93 C3 80 00 */ stw r30, -0x8000(r3)
+/* 802830D0 0027ED30 38 84 D4 00 */ addi r4, r4, 0xB20DD400@l
+/* 802830D4 0027ED34 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 802830D8 0027ED38 91 83 80 00 */ stw r12, -0x8000(r3)
+/* 802830DC 0027ED3C 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 802830E0 0027ED40 91 63 80 00 */ stw r11, -0x8000(r3)
+/* 802830E4 0027ED44 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 802830E8 0027ED48 91 43 80 00 */ stw r10, -0x8000(r3)
+/* 802830EC 0027ED4C 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 802830F0 0027ED50 91 23 80 00 */ stw r9, -0x8000(r3)
+/* 802830F4 0027ED54 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 802830F8 0027ED58 91 03 80 00 */ stw r8, -0x8000(r3)
+/* 802830FC 0027ED5C 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 80283100 0027ED60 90 E3 80 00 */ stw r7, -0x8000(r3)
+/* 80283104 0027ED64 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 80283108 0027ED68 90 C3 80 00 */ stw r6, -0x8000(r3)
+/* 8028310C 0027ED6C 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 80283110 0027ED70 90 A3 80 00 */ stw r5, -0x8000(r3)
+/* 80283114 0027ED74 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 80283118 0027ED78 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 8028311C 0027ED7C 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 80283120 0027ED80 3C A0 AF 0E */ lis r5, 0xAF0DB800@ha
+/* 80283124 0027ED84 3C 80 B3 0E */ lis r4, 0xB30DDC00@ha
+/* 80283128 0027ED88 38 A5 B8 00 */ addi r5, r5, 0xAF0DB800@l
+/* 8028312C 0027ED8C 90 A3 80 00 */ stw r5, -0x8000(r3)
+/* 80283130 0027ED90 38 84 DC 00 */ addi r4, r4, 0xB30DDC00@l
+/* 80283134 0027ED94 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 80283138 0027ED98 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 8028313C 0027ED9C 48 00 02 18 */ b lbl_80283354
+lbl_80283140:
+/* 80283140 0027EDA0 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80283144 0027EDA4 38 00 00 61 */ li r0, 0x61
+/* 80283148 0027EDA8 3C 80 8C 0E */ lis r4, 0x8C0D8000@ha
+/* 8028314C 0027EDAC 98 03 80 00 */ stb r0, 0xCC008000@l(r3)
+/* 80283150 0027EDB0 38 84 80 00 */ addi r4, r4, 0x8C0D8000@l
+/* 80283154 0027EDB4 3C A0 90 0E */ lis r5, 0x900DC000@ha
+/* 80283158 0027EDB8 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 8028315C 0027EDBC 3C 80 8D 0E */ lis r4, 0x8D0D8800@ha
+/* 80283160 0027EDC0 3F E0 91 0E */ lis r31, 0x910DC800@ha
+/* 80283164 0027EDC4 3F C0 8E 0E */ lis r30, 0x8E0D9000@ha
+/* 80283168 0027EDC8 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 8028316C 0027EDCC 38 A5 C0 00 */ addi r5, r5, 0x900DC000@l
+/* 80283170 0027EDD0 3D 80 92 0E */ lis r12, 0x920DD000@ha
+/* 80283174 0027EDD4 3D 60 8F 0E */ lis r11, 0x8F0D9800@ha
+/* 80283178 0027EDD8 90 A3 80 00 */ stw r5, -0x8000(r3)
+/* 8028317C 0027EDDC 3D 40 93 0E */ lis r10, 0x930DD800@ha
+/* 80283180 0027EDE0 3D 20 AC 0E */ lis r9, 0xAC0DA000@ha
+/* 80283184 0027EDE4 3D 00 B0 0E */ lis r8, 0xB00DE000@ha
+/* 80283188 0027EDE8 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 8028318C 0027EDEC 38 84 88 00 */ addi r4, r4, 0x8D0D8800@l
+/* 80283190 0027EDF0 3C E0 AD 0E */ lis r7, 0xAD0DA800@ha
+/* 80283194 0027EDF4 3C C0 B1 0E */ lis r6, 0xB10DE800@ha
+/* 80283198 0027EDF8 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 8028319C 0027EDFC 3C A0 AE 0E */ lis r5, 0xAE0DB000@ha
+/* 802831A0 0027EE00 3C 80 B2 0E */ lis r4, 0xB20DF000@ha
+/* 802831A4 0027EE04 3B FF C8 00 */ addi r31, r31, 0x910DC800@l
+/* 802831A8 0027EE08 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 802831AC 0027EE0C 3B DE 90 00 */ addi r30, r30, 0x8E0D9000@l
+/* 802831B0 0027EE10 39 8C D0 00 */ addi r12, r12, 0x920DD000@l
+/* 802831B4 0027EE14 39 6B 98 00 */ addi r11, r11, 0x8F0D9800@l
+/* 802831B8 0027EE18 93 E3 80 00 */ stw r31, -0x8000(r3)
+/* 802831BC 0027EE1C 39 4A D8 00 */ addi r10, r10, 0x930DD800@l
+/* 802831C0 0027EE20 39 29 A0 00 */ addi r9, r9, 0xAC0DA000@l
+/* 802831C4 0027EE24 39 08 E0 00 */ addi r8, r8, 0xB00DE000@l
+/* 802831C8 0027EE28 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 802831CC 0027EE2C 38 E7 A8 00 */ addi r7, r7, 0xAD0DA800@l
+/* 802831D0 0027EE30 38 C6 E8 00 */ addi r6, r6, 0xB10DE800@l
+/* 802831D4 0027EE34 38 A5 B0 00 */ addi r5, r5, 0xAE0DB000@l
+/* 802831D8 0027EE38 93 C3 80 00 */ stw r30, -0x8000(r3)
+/* 802831DC 0027EE3C 38 84 F0 00 */ addi r4, r4, 0xB20DF000@l
+/* 802831E0 0027EE40 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 802831E4 0027EE44 91 83 80 00 */ stw r12, -0x8000(r3)
+/* 802831E8 0027EE48 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 802831EC 0027EE4C 91 63 80 00 */ stw r11, -0x8000(r3)
+/* 802831F0 0027EE50 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 802831F4 0027EE54 91 43 80 00 */ stw r10, -0x8000(r3)
+/* 802831F8 0027EE58 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 802831FC 0027EE5C 91 23 80 00 */ stw r9, -0x8000(r3)
+/* 80283200 0027EE60 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 80283204 0027EE64 91 03 80 00 */ stw r8, -0x8000(r3)
+/* 80283208 0027EE68 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 8028320C 0027EE6C 90 E3 80 00 */ stw r7, -0x8000(r3)
+/* 80283210 0027EE70 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 80283214 0027EE74 90 C3 80 00 */ stw r6, -0x8000(r3)
+/* 80283218 0027EE78 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 8028321C 0027EE7C 90 A3 80 00 */ stw r5, -0x8000(r3)
+/* 80283220 0027EE80 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 80283224 0027EE84 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 80283228 0027EE88 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 8028322C 0027EE8C 3C A0 AF 0E */ lis r5, 0xAF0DB800@ha
+/* 80283230 0027EE90 3C 80 B3 0E */ lis r4, 0xB30DF800@ha
+/* 80283234 0027EE94 38 A5 B8 00 */ addi r5, r5, 0xAF0DB800@l
+/* 80283238 0027EE98 90 A3 80 00 */ stw r5, -0x8000(r3)
+/* 8028323C 0027EE9C 38 84 F8 00 */ addi r4, r4, 0xB30DF800@l
+/* 80283240 0027EEA0 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 80283244 0027EEA4 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 80283248 0027EEA8 48 00 01 0C */ b lbl_80283354
+lbl_8028324C:
+/* 8028324C 0027EEAC 3C 60 CC 01 */ lis r3, 0xCC008000@ha
+/* 80283250 0027EEB0 38 00 00 61 */ li r0, 0x61
+/* 80283254 0027EEB4 3C 80 8C 0E */ lis r4, 0x8C0D8000@ha
+/* 80283258 0027EEB8 98 03 80 00 */ stb r0, 0xCC008000@l(r3)
+/* 8028325C 0027EEBC 38 84 80 00 */ addi r4, r4, 0x8C0D8000@l
+/* 80283260 0027EEC0 3C A0 90 0E */ lis r5, 0x900DC000@ha
+/* 80283264 0027EEC4 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 80283268 0027EEC8 3C 80 8D 0E */ lis r4, 0x8D0D8400@ha
+/* 8028326C 0027EECC 3F C0 91 0E */ lis r30, 0x910DC400@ha
+/* 80283270 0027EED0 3F E0 8E 0E */ lis r31, 0x8E0D8800@ha
+/* 80283274 0027EED4 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 80283278 0027EED8 38 A5 C0 00 */ addi r5, r5, 0x900DC000@l
+/* 8028327C 0027EEDC 3D 80 92 0E */ lis r12, 0x920DC800@ha
+/* 80283280 0027EEE0 3D 60 8F 0E */ lis r11, 0x8F0D8C00@ha
+/* 80283284 0027EEE4 90 A3 80 00 */ stw r5, -0x8000(r3)
+/* 80283288 0027EEE8 3D 40 93 0E */ lis r10, 0x930DCC00@ha
+/* 8028328C 0027EEEC 3D 20 AC 0E */ lis r9, 0xAC0D9000@ha
+/* 80283290 0027EEF0 3D 00 B0 0E */ lis r8, 0xB00DD000@ha
+/* 80283294 0027EEF4 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 80283298 0027EEF8 38 84 84 00 */ addi r4, r4, 0x8D0D8400@l
+/* 8028329C 0027EEFC 3C E0 AD 0E */ lis r7, 0xAD0D9400@ha
+/* 802832A0 0027EF00 3C C0 B1 0E */ lis r6, 0xB10DD400@ha
+/* 802832A4 0027EF04 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 802832A8 0027EF08 3C A0 AE 0E */ lis r5, 0xAE0D9800@ha
+/* 802832AC 0027EF0C 3C 80 B2 0E */ lis r4, 0xB20DD800@ha
+/* 802832B0 0027EF10 3B DE C4 00 */ addi r30, r30, 0x910DC400@l
+/* 802832B4 0027EF14 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 802832B8 0027EF18 3B FF 88 00 */ addi r31, r31, 0x8E0D8800@l
+/* 802832BC 0027EF1C 39 8C C8 00 */ addi r12, r12, 0x920DC800@l
+/* 802832C0 0027EF20 39 6B 8C 00 */ addi r11, r11, 0x8F0D8C00@l
+/* 802832C4 0027EF24 93 C3 80 00 */ stw r30, -0x8000(r3)
+/* 802832C8 0027EF28 39 4A CC 00 */ addi r10, r10, 0x930DCC00@l
+/* 802832CC 0027EF2C 39 29 90 00 */ addi r9, r9, 0xAC0D9000@l
+/* 802832D0 0027EF30 39 08 D0 00 */ addi r8, r8, 0xB00DD000@l
+/* 802832D4 0027EF34 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 802832D8 0027EF38 38 E7 94 00 */ addi r7, r7, 0xAD0D9400@l
+/* 802832DC 0027EF3C 38 C6 D4 00 */ addi r6, r6, 0xB10DD400@l
+/* 802832E0 0027EF40 38 A5 98 00 */ addi r5, r5, 0xAE0D9800@l
+/* 802832E4 0027EF44 93 E3 80 00 */ stw r31, -0x8000(r3)
+/* 802832E8 0027EF48 38 84 D8 00 */ addi r4, r4, 0xB20DD800@l
+/* 802832EC 0027EF4C 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 802832F0 0027EF50 91 83 80 00 */ stw r12, -0x8000(r3)
+/* 802832F4 0027EF54 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 802832F8 0027EF58 91 63 80 00 */ stw r11, -0x8000(r3)
+/* 802832FC 0027EF5C 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 80283300 0027EF60 91 43 80 00 */ stw r10, -0x8000(r3)
+/* 80283304 0027EF64 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 80283308 0027EF68 91 23 80 00 */ stw r9, -0x8000(r3)
+/* 8028330C 0027EF6C 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 80283310 0027EF70 91 03 80 00 */ stw r8, -0x8000(r3)
+/* 80283314 0027EF74 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 80283318 0027EF78 90 E3 80 00 */ stw r7, -0x8000(r3)
+/* 8028331C 0027EF7C 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 80283320 0027EF80 90 C3 80 00 */ stw r6, -0x8000(r3)
+/* 80283324 0027EF84 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 80283328 0027EF88 90 A3 80 00 */ stw r5, -0x8000(r3)
+/* 8028332C 0027EF8C 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 80283330 0027EF90 90 83 80 00 */ stw r4, -0x8000(r3)
+/* 80283334 0027EF94 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 80283338 0027EF98 3C A0 AF 0E */ lis r5, 0xAF0D9C00@ha
+/* 8028333C 0027EF9C 3C 80 B3 0E */ lis r4, 0xB30DDC00@ha
+/* 80283340 0027EFA0 38 A5 9C 00 */ addi r5, r5, 0xAF0D9C00@l
+/* 80283344 0027EFA4 90 A3 80 00 */ stw r5, -0x8000(r3)
+/* 80283348 0027EFA8 38 84 DC 00 */ addi r4, r4, 0xB30DDC00@l
+/* 8028334C 0027EFAC 98 03 80 00 */ stb r0, -0x8000(r3)
+/* 80283350 0027EFB0 90 83 80 00 */ stw r4, -0x8000(r3)
+lbl_80283354:
+/* 80283354 0027EFB4 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80283358 0027EFB8 83 C1 00 08 */ lwz r30, 8(r1)
+/* 8028335C 0027EFBC 38 21 00 10 */ addi r1, r1, 0x10
+/* 80283360 0027EFC0 4E 80 00 20 */ blr
diff --git a/asm/SDK/GX/GXTransform.s b/asm/SDK/GX/GXTransform.s
new file mode 100644
index 0000000..31d9029
--- /dev/null
+++ b/asm/SDK/GX/GXTransform.s
@@ -0,0 +1,463 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global GXProject
+GXProject:
+/* 8028680C 0028246C C0 A3 00 00 */ lfs f5, 0(r3)
+/* 80286810 00282470 C0 83 00 04 */ lfs f4, 4(r3)
+/* 80286814 00282474 C0 03 00 10 */ lfs f0, 0x10(r3)
+/* 80286818 00282478 ED 85 00 72 */ fmuls f12, f5, f1
+/* 8028681C 0028247C C0 A3 00 14 */ lfs f5, 0x14(r3)
+/* 80286820 00282480 EC E4 00 B2 */ fmuls f7, f4, f2
+/* 80286824 00282484 ED 20 00 72 */ fmuls f9, f0, f1
+/* 80286828 00282488 C0 83 00 20 */ lfs f4, 0x20(r3)
+/* 8028682C 0028248C ED 05 00 B2 */ fmuls f8, f5, f2
+/* 80286830 00282490 EC A4 00 72 */ fmuls f5, f4, f1
+/* 80286834 00282494 C0 03 00 24 */ lfs f0, 0x24(r3)
+/* 80286838 00282498 C1 63 00 08 */ lfs f11, 8(r3)
+/* 8028683C 0028249C EC 80 00 B2 */ fmuls f4, f0, f2
+/* 80286840 002824A0 C1 43 00 18 */ lfs f10, 0x18(r3)
+/* 80286844 002824A4 C0 C3 00 28 */ lfs f6, 0x28(r3)
+/* 80286848 002824A8 ED AB 00 F2 */ fmuls f13, f11, f3
+/* 8028684C 002824AC C1 63 00 0C */ lfs f11, 0xc(r3)
+/* 80286850 002824B0 EC 0C 38 2A */ fadds f0, f12, f7
+/* 80286854 002824B4 ED 09 40 2A */ fadds f8, f9, f8
+/* 80286858 002824B8 C0 E3 00 1C */ lfs f7, 0x1c(r3)
+/* 8028685C 002824BC ED 4A 00 F2 */ fmuls f10, f10, f3
+/* 80286860 002824C0 ED 2D 00 2A */ fadds f9, f13, f0
+/* 80286864 002824C4 C0 43 00 2C */ lfs f2, 0x2c(r3)
+/* 80286868 002824C8 EC C6 00 F2 */ fmuls f6, f6, f3
+/* 8028686C 002824CC EC 65 20 2A */ fadds f3, f5, f4
+/* 80286870 002824D0 C0 22 A2 00 */ lfs f1, lbl_80642800-_SDA2_BASE_(r2)
+/* 80286874 002824D4 EC 8A 40 2A */ fadds f4, f10, f8
+/* 80286878 002824D8 C0 04 00 00 */ lfs f0, 0(r4)
+/* 8028687C 002824DC ED 2B 48 2A */ fadds f9, f11, f9
+/* 80286880 002824E0 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80286884 002824E4 ED 07 20 2A */ fadds f8, f7, f4
+/* 80286888 002824E8 EC 66 18 2A */ fadds f3, f6, f3
+/* 8028688C 002824EC D1 21 00 08 */ stfs f9, 8(r1)
+/* 80286890 002824F0 FC 01 00 00 */ fcmpu cr0, f1, f0
+/* 80286894 002824F4 D1 01 00 0C */ stfs f8, 0xc(r1)
+/* 80286898 002824F8 EC E2 18 2A */ fadds f7, f2, f3
+/* 8028689C 002824FC D0 E1 00 10 */ stfs f7, 0x10(r1)
+/* 802868A0 00282500 40 82 00 4C */ bne lbl_802868EC
+/* 802868A4 00282504 FC 20 38 50 */ fneg f1, f7
+/* 802868A8 00282508 C0 02 A2 04 */ lfs f0, lbl_80642804-_SDA2_BASE_(r2)
+/* 802868AC 0028250C C0 C4 00 04 */ lfs f6, 4(r4)
+/* 802868B0 00282510 C0 A4 00 08 */ lfs f5, 8(r4)
+/* 802868B4 00282514 EC 00 08 24 */ fdivs f0, f0, f1
+/* 802868B8 00282518 C0 84 00 0C */ lfs f4, 0xc(r4)
+/* 802868BC 0028251C C0 64 00 10 */ lfs f3, 0x10(r4)
+/* 802868C0 00282520 C0 44 00 14 */ lfs f2, 0x14(r4)
+/* 802868C4 00282524 C0 24 00 18 */ lfs f1, 0x18(r4)
+/* 802868C8 00282528 EC 47 00 B2 */ fmuls f2, f7, f2
+/* 802868CC 0028252C EC C9 01 B2 */ fmuls f6, f9, f6
+/* 802868D0 00282530 EC A7 01 72 */ fmuls f5, f7, f5
+/* 802868D4 00282534 EC 67 00 F2 */ fmuls f3, f7, f3
+/* 802868D8 00282538 EC 88 01 32 */ fmuls f4, f8, f4
+/* 802868DC 0028253C EC E6 28 2A */ fadds f7, f6, f5
+/* 802868E0 00282540 ED 41 10 2A */ fadds f10, f1, f2
+/* 802868E4 00282544 EC 64 18 2A */ fadds f3, f4, f3
+/* 802868E8 00282548 48 00 00 38 */ b lbl_80286920
+lbl_802868EC:
+/* 802868EC 0028254C C0 44 00 04 */ lfs f2, 4(r4)
+/* 802868F0 00282550 C0 24 00 0C */ lfs f1, 0xc(r4)
+/* 802868F4 00282554 C0 04 00 14 */ lfs f0, 0x14(r4)
+/* 802868F8 00282558 EC C9 00 B2 */ fmuls f6, f9, f2
+/* 802868FC 0028255C EC 88 00 72 */ fmuls f4, f8, f1
+/* 80286900 00282560 C0 64 00 10 */ lfs f3, 0x10(r4)
+/* 80286904 00282564 EC 47 00 32 */ fmuls f2, f7, f0
+/* 80286908 00282568 C0 A4 00 08 */ lfs f5, 8(r4)
+/* 8028690C 0028256C C0 24 00 18 */ lfs f1, 0x18(r4)
+/* 80286910 00282570 EC E5 30 2A */ fadds f7, f5, f6
+/* 80286914 00282574 EC 63 20 2A */ fadds f3, f3, f4
+/* 80286918 00282578 C0 02 A2 04 */ lfs f0, lbl_80642804-_SDA2_BASE_(r2)
+/* 8028691C 0028257C ED 41 10 2A */ fadds f10, f1, f2
+lbl_80286920:
+/* 80286920 00282580 C0 C5 00 08 */ lfs f6, 8(r5)
+/* 80286924 00282584 FC 20 18 50 */ fneg f1, f3
+/* 80286928 00282588 C0 A5 00 0C */ lfs f5, 0xc(r5)
+/* 8028692C 0028258C EC 87 01 B2 */ fmuls f4, f7, f6
+/* 80286930 00282590 C1 22 A2 08 */ lfs f9, lbl_80642808-_SDA2_BASE_(r2)
+/* 80286934 00282594 EC 61 01 72 */ fmuls f3, f1, f5
+/* 80286938 00282598 C0 45 00 14 */ lfs f2, 0x14(r5)
+/* 8028693C 0028259C C0 25 00 10 */ lfs f1, 0x10(r5)
+/* 80286940 002825A0 ED 06 02 72 */ fmuls f8, f6, f9
+/* 80286944 002825A4 EC E4 02 72 */ fmuls f7, f4, f9
+/* 80286948 002825A8 C0 C5 00 00 */ lfs f6, 0(r5)
+/* 8028694C 002825AC EC 83 02 72 */ fmuls f4, f3, f9
+/* 80286950 002825B0 C0 65 00 04 */ lfs f3, 4(r5)
+/* 80286954 002825B4 EC 22 08 28 */ fsubs f1, f2, f1
+/* 80286958 002825B8 EC E0 01 F2 */ fmuls f7, f0, f7
+/* 8028695C 002825BC EC 80 01 32 */ fmuls f4, f0, f4
+/* 80286960 002825C0 EC 2A 00 72 */ fmuls f1, f10, f1
+/* 80286964 002825C4 EC C6 38 2A */ fadds f6, f6, f7
+/* 80286968 002825C8 EC 63 20 2A */ fadds f3, f3, f4
+/* 8028696C 002825CC EC A5 02 72 */ fmuls f5, f5, f9
+/* 80286970 002825D0 EC 00 00 72 */ fmuls f0, f0, f1
+/* 80286974 002825D4 EC 88 30 2A */ fadds f4, f8, f6
+/* 80286978 002825D8 EC 25 18 2A */ fadds f1, f5, f3
+/* 8028697C 002825DC EC 02 00 2A */ fadds f0, f2, f0
+/* 80286980 002825E0 D0 86 00 00 */ stfs f4, 0(r6)
+/* 80286984 002825E4 D0 27 00 00 */ stfs f1, 0(r7)
+/* 80286988 002825E8 D0 08 00 00 */ stfs f0, 0(r8)
+/* 8028698C 002825EC 38 21 00 20 */ addi r1, r1, 0x20
+/* 80286990 002825F0 4E 80 00 20 */ blr
+
+.global __GXSetProjection
+__GXSetProjection:
+/* 80286994 002825F4 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 80286998 002825F8 38 00 00 10 */ li r0, 0x10
+/* 8028699C 002825FC 3C 60 00 06 */ lis r3, 0x00061020@ha
+/* 802869A0 00282600 98 04 80 00 */ stb r0, 0xCC008000@l(r4)
+/* 802869A4 00282604 38 03 10 20 */ addi r0, r3, 0x00061020@l
+/* 802869A8 00282608 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802869AC 0028260C 90 04 80 00 */ stw r0, -0x8000(r4)
+/* 802869B0 00282610 38 A4 80 00 */ addi r5, r4, -32768
+/* 802869B4 00282614 E0 43 05 2C */ psq_l f2, 1324(r3), 0, qr0
+/* 802869B8 00282618 E0 23 05 34 */ psq_l f1, 1332(r3), 0, qr0
+/* 802869BC 0028261C E0 03 05 3C */ psq_l f0, 1340(r3), 0, qr0
+/* 802869C0 00282620 F0 45 00 00 */ psq_st f2, 0(r5), 0, qr0
+/* 802869C4 00282624 F0 25 00 00 */ psq_st f1, 0(r5), 0, qr0
+/* 802869C8 00282628 F0 05 00 00 */ psq_st f0, 0(r5), 0, qr0
+/* 802869CC 0028262C 80 03 05 28 */ lwz r0, 0x528(r3)
+/* 802869D0 00282630 90 04 80 00 */ stw r0, -0x8000(r4)
+/* 802869D4 00282634 4E 80 00 20 */ blr
+
+.global GXSetProjection
+GXSetProjection:
+/* 802869D8 00282638 80 A2 A0 D0 */ lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
+/* 802869DC 0028263C 2C 04 00 01 */ cmpwi r4, 1
+/* 802869E0 00282640 C0 23 00 00 */ lfs f1, 0(r3)
+/* 802869E4 00282644 90 85 05 28 */ stw r4, 0x528(r5)
+/* 802869E8 00282648 C0 03 00 14 */ lfs f0, 0x14(r3)
+/* 802869EC 0028264C D0 25 05 2C */ stfs f1, 0x52c(r5)
+/* 802869F0 00282650 C0 23 00 28 */ lfs f1, 0x28(r3)
+/* 802869F4 00282654 D0 05 05 34 */ stfs f0, 0x534(r5)
+/* 802869F8 00282658 C0 03 00 2C */ lfs f0, 0x2c(r3)
+/* 802869FC 0028265C D0 25 05 3C */ stfs f1, 0x53c(r5)
+/* 80286A00 00282660 D0 05 05 40 */ stfs f0, 0x540(r5)
+/* 80286A04 00282664 40 82 00 18 */ bne lbl_80286A1C
+/* 80286A08 00282668 C0 23 00 0C */ lfs f1, 0xc(r3)
+/* 80286A0C 0028266C C0 03 00 1C */ lfs f0, 0x1c(r3)
+/* 80286A10 00282670 D0 25 05 30 */ stfs f1, 0x530(r5)
+/* 80286A14 00282674 D0 05 05 38 */ stfs f0, 0x538(r5)
+/* 80286A18 00282678 48 00 00 14 */ b lbl_80286A2C
+lbl_80286A1C:
+/* 80286A1C 0028267C C0 23 00 08 */ lfs f1, 8(r3)
+/* 80286A20 00282680 C0 03 00 18 */ lfs f0, 0x18(r3)
+/* 80286A24 00282684 D0 25 05 30 */ stfs f1, 0x530(r5)
+/* 80286A28 00282688 D0 05 05 38 */ stfs f0, 0x538(r5)
+lbl_80286A2C:
+/* 80286A2C 0028268C 80 05 05 FC */ lwz r0, 0x5fc(r5)
+/* 80286A30 00282690 64 00 08 00 */ oris r0, r0, 0x800
+/* 80286A34 00282694 90 05 05 FC */ stw r0, 0x5fc(r5)
+/* 80286A38 00282698 4E 80 00 20 */ blr
+
+.global GXSetProjectionv
+GXSetProjectionv:
+/* 80286A3C 0028269C C0 22 A2 00 */ lfs f1, lbl_80642800-_SDA2_BASE_(r2)
+/* 80286A40 002826A0 C0 03 00 00 */ lfs f0, 0(r3)
+/* 80286A44 002826A4 FC 01 00 00 */ fcmpu cr0, f1, f0
+/* 80286A48 002826A8 40 82 00 0C */ bne lbl_80286A54
+/* 80286A4C 002826AC 38 00 00 00 */ li r0, 0
+/* 80286A50 002826B0 48 00 00 08 */ b lbl_80286A58
+lbl_80286A54:
+/* 80286A54 002826B4 38 00 00 01 */ li r0, 1
+lbl_80286A58:
+/* 80286A58 002826B8 80 82 A0 D0 */ lwz r4, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80286A5C 002826BC 90 04 05 28 */ stw r0, 0x528(r4)
+/* 80286A60 002826C0 E0 43 00 04 */ psq_l f2, 4(r3), 0, qr0
+/* 80286A64 002826C4 E0 23 00 0C */ psq_l f1, 12(r3), 0, qr0
+/* 80286A68 002826C8 E0 03 00 14 */ psq_l f0, 20(r3), 0, qr0
+/* 80286A6C 002826CC F0 44 05 2C */ psq_st f2, 1324(r4), 0, qr0
+/* 80286A70 002826D0 F0 24 05 34 */ psq_st f1, 1332(r4), 0, qr0
+/* 80286A74 002826D4 F0 04 05 3C */ psq_st f0, 1340(r4), 0, qr0
+/* 80286A78 002826D8 80 04 05 FC */ lwz r0, 0x5fc(r4)
+/* 80286A7C 002826DC 64 00 08 00 */ oris r0, r0, 0x800
+/* 80286A80 002826E0 90 04 05 FC */ stw r0, 0x5fc(r4)
+/* 80286A84 002826E4 4E 80 00 20 */ blr
+
+.global GXLoadPosMtxImm
+GXLoadPosMtxImm:
+/* 80286A88 002826E8 3C A0 CC 01 */ lis r5, 0xCC008000@ha
+/* 80286A8C 002826EC 38 00 00 10 */ li r0, 0x10
+/* 80286A90 002826F0 54 84 10 3A */ slwi r4, r4, 2
+/* 80286A94 002826F4 98 05 80 00 */ stb r0, 0xCC008000@l(r5)
+/* 80286A98 002826F8 64 80 00 0B */ oris r0, r4, 0xb
+/* 80286A9C 002826FC 90 05 80 00 */ stw r0, -0x8000(r5)
+/* 80286AA0 00282700 38 85 80 00 */ addi r4, r5, -32768
+/* 80286AA4 00282704 E0 A3 00 00 */ psq_l f5, 0(r3), 0, qr0
+/* 80286AA8 00282708 E0 83 00 08 */ psq_l f4, 8(r3), 0, qr0
+/* 80286AAC 0028270C E0 63 00 10 */ psq_l f3, 16(r3), 0, qr0
+/* 80286AB0 00282710 E0 43 00 18 */ psq_l f2, 24(r3), 0, qr0
+/* 80286AB4 00282714 E0 23 00 20 */ psq_l f1, 32(r3), 0, qr0
+/* 80286AB8 00282718 E0 03 00 28 */ psq_l f0, 40(r3), 0, qr0
+/* 80286ABC 0028271C F0 A4 00 00 */ psq_st f5, 0(r4), 0, qr0
+/* 80286AC0 00282720 F0 84 00 00 */ psq_st f4, 0(r4), 0, qr0
+/* 80286AC4 00282724 F0 64 00 00 */ psq_st f3, 0(r4), 0, qr0
+/* 80286AC8 00282728 F0 44 00 00 */ psq_st f2, 0(r4), 0, qr0
+/* 80286ACC 0028272C F0 24 00 00 */ psq_st f1, 0(r4), 0, qr0
+/* 80286AD0 00282730 F0 04 00 00 */ psq_st f0, 0(r4), 0, qr0
+/* 80286AD4 00282734 4E 80 00 20 */ blr
+
+.global GXLoadNrmMtxImm
+GXLoadNrmMtxImm:
+/* 80286AD8 00282738 54 80 10 3A */ slwi r0, r4, 2
+/* 80286ADC 0028273C 3C A0 CC 01 */ lis r5, 0xCC008000@ha
+/* 80286AE0 00282740 7C 84 00 50 */ subf r4, r4, r0
+/* 80286AE4 00282744 38 00 00 10 */ li r0, 0x10
+/* 80286AE8 00282748 38 84 04 00 */ addi r4, r4, 0x400
+/* 80286AEC 0028274C 98 05 80 00 */ stb r0, 0xCC008000@l(r5)
+/* 80286AF0 00282750 64 80 00 08 */ oris r0, r4, 8
+/* 80286AF4 00282754 90 05 80 00 */ stw r0, -0x8000(r5)
+/* 80286AF8 00282758 38 85 80 00 */ addi r4, r5, -32768
+/* 80286AFC 0028275C E0 A3 00 00 */ psq_l f5, 0(r3), 0, qr0
+/* 80286B00 00282760 C0 83 00 08 */ lfs f4, 8(r3)
+/* 80286B04 00282764 E0 63 00 10 */ psq_l f3, 16(r3), 0, qr0
+/* 80286B08 00282768 C0 43 00 18 */ lfs f2, 0x18(r3)
+/* 80286B0C 0028276C E0 23 00 20 */ psq_l f1, 32(r3), 0, qr0
+/* 80286B10 00282770 C0 03 00 28 */ lfs f0, 0x28(r3)
+/* 80286B14 00282774 F0 A4 00 00 */ psq_st f5, 0(r4), 0, qr0
+/* 80286B18 00282778 D0 85 80 00 */ stfs f4, -0x8000(r5)
+/* 80286B1C 0028277C F0 64 00 00 */ psq_st f3, 0(r4), 0, qr0
+/* 80286B20 00282780 D0 45 80 00 */ stfs f2, -0x8000(r5)
+/* 80286B24 00282784 F0 24 00 00 */ psq_st f1, 0(r4), 0, qr0
+/* 80286B28 00282788 D0 05 80 00 */ stfs f0, -0x8000(r5)
+/* 80286B2C 0028278C 4E 80 00 20 */ blr
+
+.global GXSetCurrentMtx
+GXSetCurrentMtx:
+/* 80286B30 00282790 80 82 A0 D0 */ lwz r4, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80286B34 00282794 80 04 00 80 */ lwz r0, 0x80(r4)
+/* 80286B38 00282798 50 60 06 BE */ rlwimi r0, r3, 0, 0x1a, 0x1f
+/* 80286B3C 0028279C 90 04 00 80 */ stw r0, 0x80(r4)
+/* 80286B40 002827A0 80 04 05 FC */ lwz r0, 0x5fc(r4)
+/* 80286B44 002827A4 64 00 04 00 */ oris r0, r0, 0x400
+/* 80286B48 002827A8 90 04 05 FC */ stw r0, 0x5fc(r4)
+/* 80286B4C 002827AC 4E 80 00 20 */ blr
+
+.global GXLoadTexMtxImm
+GXLoadTexMtxImm:
+/* 80286B50 002827B0 28 04 00 40 */ cmplwi r4, 0x40
+/* 80286B54 002827B4 41 80 00 14 */ blt lbl_80286B68
+/* 80286B58 002827B8 38 04 FF C0 */ addi r0, r4, -64
+/* 80286B5C 002827BC 54 04 10 3A */ slwi r4, r0, 2
+/* 80286B60 002827C0 38 E4 05 00 */ addi r7, r4, 0x500
+/* 80286B64 002827C4 48 00 00 08 */ b lbl_80286B6C
+lbl_80286B68:
+/* 80286B68 002827C8 54 87 10 3A */ slwi r7, r4, 2
+lbl_80286B6C:
+/* 80286B6C 002827CC 2C 05 00 01 */ cmpwi r5, 1
+/* 80286B70 002827D0 40 82 00 0C */ bne lbl_80286B7C
+/* 80286B74 002827D4 38 80 00 08 */ li r4, 8
+/* 80286B78 002827D8 48 00 00 08 */ b lbl_80286B80
+lbl_80286B7C:
+/* 80286B7C 002827DC 38 80 00 0C */ li r4, 0xc
+lbl_80286B80:
+/* 80286B80 002827E0 38 C4 FF FF */ addi r6, r4, -1
+/* 80286B84 002827E4 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 80286B88 002827E8 38 00 00 10 */ li r0, 0x10
+/* 80286B8C 002827EC 2C 05 00 00 */ cmpwi r5, 0
+/* 80286B90 002827F0 54 C5 80 1E */ slwi r5, r6, 0x10
+/* 80286B94 002827F4 98 04 80 00 */ stb r0, 0xCC008000@l(r4)
+/* 80286B98 002827F8 7C E0 2B 78 */ or r0, r7, r5
+/* 80286B9C 002827FC 90 04 80 00 */ stw r0, -0x8000(r4)
+/* 80286BA0 00282800 40 82 00 3C */ bne lbl_80286BDC
+/* 80286BA4 00282804 38 84 80 00 */ addi r4, r4, -32768
+/* 80286BA8 00282808 E0 A3 00 00 */ psq_l f5, 0(r3), 0, qr0
+/* 80286BAC 0028280C E0 83 00 08 */ psq_l f4, 8(r3), 0, qr0
+/* 80286BB0 00282810 E0 63 00 10 */ psq_l f3, 16(r3), 0, qr0
+/* 80286BB4 00282814 E0 43 00 18 */ psq_l f2, 24(r3), 0, qr0
+/* 80286BB8 00282818 E0 23 00 20 */ psq_l f1, 32(r3), 0, qr0
+/* 80286BBC 0028281C E0 03 00 28 */ psq_l f0, 40(r3), 0, qr0
+/* 80286BC0 00282820 F0 A4 00 00 */ psq_st f5, 0(r4), 0, qr0
+/* 80286BC4 00282824 F0 84 00 00 */ psq_st f4, 0(r4), 0, qr0
+/* 80286BC8 00282828 F0 64 00 00 */ psq_st f3, 0(r4), 0, qr0
+/* 80286BCC 0028282C F0 44 00 00 */ psq_st f2, 0(r4), 0, qr0
+/* 80286BD0 00282830 F0 24 00 00 */ psq_st f1, 0(r4), 0, qr0
+/* 80286BD4 00282834 F0 04 00 00 */ psq_st f0, 0(r4), 0, qr0
+/* 80286BD8 00282838 4E 80 00 20 */ blr
+lbl_80286BDC:
+/* 80286BDC 0028283C 38 84 80 00 */ addi r4, r4, -32768
+/* 80286BE0 00282840 E0 63 00 00 */ psq_l f3, 0(r3), 0, qr0
+/* 80286BE4 00282844 E0 43 00 08 */ psq_l f2, 8(r3), 0, qr0
+/* 80286BE8 00282848 E0 23 00 10 */ psq_l f1, 16(r3), 0, qr0
+/* 80286BEC 0028284C E0 03 00 18 */ psq_l f0, 24(r3), 0, qr0
+/* 80286BF0 00282850 F0 64 00 00 */ psq_st f3, 0(r4), 0, qr0
+/* 80286BF4 00282854 F0 44 00 00 */ psq_st f2, 0(r4), 0, qr0
+/* 80286BF8 00282858 F0 24 00 00 */ psq_st f1, 0(r4), 0, qr0
+/* 80286BFC 0028285C F0 04 00 00 */ psq_st f0, 0(r4), 0, qr0
+/* 80286C00 00282860 4E 80 00 20 */ blr
+
+.global __GXSetViewport
+__GXSetViewport:
+/* 80286C04 00282864 80 C2 A0 D0 */ lwz r6, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80286C08 00282868 3C 60 00 05 */ lis r3, 0x0005101A@ha
+/* 80286C0C 0028286C C0 C2 A2 08 */ lfs f6, lbl_80642808-_SDA2_BASE_(r2)
+/* 80286C10 00282870 3C 80 CC 01 */ lis r4, 0xCC008000@ha
+/* 80286C14 00282874 C0 46 05 50 */ lfs f2, 0x550(r6)
+/* 80286C18 00282878 38 A0 00 10 */ li r5, 0x10
+/* 80286C1C 0028287C C0 66 05 4C */ lfs f3, 0x54c(r6)
+/* 80286C20 00282880 38 03 10 1A */ addi r0, r3, 0x0005101A@l
+/* 80286C24 00282884 FC 20 10 50 */ fneg f1, f2
+/* 80286C28 00282888 C0 06 05 44 */ lfs f0, 0x544(r6)
+/* 80286C2C 0028288C EC E3 01 B2 */ fmuls f7, f3, f6
+/* 80286C30 00282890 C0 86 05 48 */ lfs f4, 0x548(r6)
+/* 80286C34 00282894 EC A2 01 B2 */ fmuls f5, f2, f6
+/* 80286C38 00282898 C0 66 05 54 */ lfs f3, 0x554(r6)
+/* 80286C3C 0028289C ED 01 01 B2 */ fmuls f8, f1, f6
+/* 80286C40 002828A0 C0 46 05 60 */ lfs f2, 0x560(r6)
+/* 80286C44 002828A4 C0 26 05 58 */ lfs f1, 0x558(r6)
+/* 80286C48 002828A8 EC C0 38 2A */ fadds f6, f0, f7
+/* 80286C4C 002828AC C0 06 05 5C */ lfs f0, 0x55c(r6)
+/* 80286C50 002828B0 EC 63 00 B2 */ fmuls f3, f3, f2
+/* 80286C54 002828B4 ED 21 00 B2 */ fmuls f9, f1, f2
+/* 80286C58 002828B8 98 A4 80 00 */ stb r5, 0xCC008000@l(r4)
+/* 80286C5C 002828BC C0 42 A2 0C */ lfs f2, lbl_8064280C-_SDA2_BASE_(r2)
+/* 80286C60 002828C0 EC 24 28 2A */ fadds f1, f4, f5
+/* 80286C64 002828C4 90 04 80 00 */ stw r0, -0x8000(r4)
+/* 80286C68 002828C8 EC 69 18 28 */ fsubs f3, f9, f3
+/* 80286C6C 002828CC D0 E4 80 00 */ stfs f7, -0x8000(r4)
+/* 80286C70 002828D0 EC 82 30 2A */ fadds f4, f2, f6
+/* 80286C74 002828D4 EC 22 08 2A */ fadds f1, f2, f1
+/* 80286C78 002828D8 D1 04 80 00 */ stfs f8, -0x8000(r4)
+/* 80286C7C 002828DC EC 09 00 2A */ fadds f0, f9, f0
+/* 80286C80 002828E0 D0 64 80 00 */ stfs f3, -0x8000(r4)
+/* 80286C84 002828E4 D0 84 80 00 */ stfs f4, -0x8000(r4)
+/* 80286C88 002828E8 D0 24 80 00 */ stfs f1, -0x8000(r4)
+/* 80286C8C 002828EC D0 04 80 00 */ stfs f0, -0x8000(r4)
+/* 80286C90 002828F0 4E 80 00 20 */ blr
+
+.global GXSetViewportJitter
+GXSetViewportJitter:
+/* 80286C94 002828F4 2C 03 00 00 */ cmpwi r3, 0
+/* 80286C98 002828F8 40 82 00 0C */ bne lbl_80286CA4
+/* 80286C9C 002828FC C0 02 A2 08 */ lfs f0, lbl_80642808-_SDA2_BASE_(r2)
+/* 80286CA0 00282900 EC 42 00 28 */ fsubs f2, f2, f0
+lbl_80286CA4:
+/* 80286CA4 00282904 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80286CA8 00282908 D0 23 05 44 */ stfs f1, 0x544(r3)
+/* 80286CAC 0028290C D0 43 05 48 */ stfs f2, 0x548(r3)
+/* 80286CB0 00282910 D0 63 05 4C */ stfs f3, 0x54c(r3)
+/* 80286CB4 00282914 D0 83 05 50 */ stfs f4, 0x550(r3)
+/* 80286CB8 00282918 D0 A3 05 54 */ stfs f5, 0x554(r3)
+/* 80286CBC 0028291C D0 C3 05 58 */ stfs f6, 0x558(r3)
+/* 80286CC0 00282920 80 03 05 FC */ lwz r0, 0x5fc(r3)
+/* 80286CC4 00282924 64 00 10 00 */ oris r0, r0, 0x1000
+/* 80286CC8 00282928 90 03 05 FC */ stw r0, 0x5fc(r3)
+/* 80286CCC 0028292C 4E 80 00 20 */ blr
+
+.global GXSetViewport
+GXSetViewport:
+/* 80286CD0 00282930 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80286CD4 00282934 D0 23 05 44 */ stfs f1, 0x544(r3)
+/* 80286CD8 00282938 D0 43 05 48 */ stfs f2, 0x548(r3)
+/* 80286CDC 0028293C D0 63 05 4C */ stfs f3, 0x54c(r3)
+/* 80286CE0 00282940 D0 83 05 50 */ stfs f4, 0x550(r3)
+/* 80286CE4 00282944 D0 A3 05 54 */ stfs f5, 0x554(r3)
+/* 80286CE8 00282948 D0 C3 05 58 */ stfs f6, 0x558(r3)
+/* 80286CEC 0028294C 80 03 05 FC */ lwz r0, 0x5fc(r3)
+/* 80286CF0 00282950 64 00 10 00 */ oris r0, r0, 0x1000
+/* 80286CF4 00282954 90 03 05 FC */ stw r0, 0x5fc(r3)
+/* 80286CF8 00282958 4E 80 00 20 */ blr
+
+.global GXSetScissor
+GXSetScissor:
+/* 80286CFC 0028295C 81 02 A0 D0 */ lwz r8, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80286D00 00282960 38 84 01 56 */ addi r4, r4, 0x156
+/* 80286D04 00282964 39 23 01 56 */ addi r9, r3, 0x156
+/* 80286D08 00282968 3C E0 CC 01 */ lis r7, 0xCC008000@ha
+/* 80286D0C 0028296C 80 08 01 48 */ lwz r0, 0x148(r8)
+/* 80286D10 00282970 50 80 05 7E */ rlwimi r0, r4, 0, 0x15, 0x1f
+/* 80286D14 00282974 51 20 62 66 */ rlwimi r0, r9, 0xc, 9, 0x13
+/* 80286D18 00282978 7C C4 32 14 */ add r6, r4, r6
+/* 80286D1C 0028297C 90 08 01 48 */ stw r0, 0x148(r8)
+/* 80286D20 00282980 7C 69 2A 14 */ add r3, r9, r5
+/* 80286D24 00282984 38 A6 FF FF */ addi r5, r6, -1
+/* 80286D28 00282988 38 80 00 61 */ li r4, 0x61
+/* 80286D2C 0028298C 80 C8 01 4C */ lwz r6, 0x14c(r8)
+/* 80286D30 00282990 38 63 FF FF */ addi r3, r3, -1
+/* 80286D34 00282994 50 A6 05 7E */ rlwimi r6, r5, 0, 0x15, 0x1f
+/* 80286D38 00282998 38 00 00 00 */ li r0, 0
+/* 80286D3C 0028299C 50 66 62 66 */ rlwimi r6, r3, 0xc, 9, 0x13
+/* 80286D40 002829A0 90 C8 01 4C */ stw r6, 0x14c(r8)
+/* 80286D44 002829A4 98 87 80 00 */ stb r4, 0xCC008000@l(r7)
+/* 80286D48 002829A8 80 68 01 48 */ lwz r3, 0x148(r8)
+/* 80286D4C 002829AC 90 67 80 00 */ stw r3, -0x8000(r7)
+/* 80286D50 002829B0 98 87 80 00 */ stb r4, -0x8000(r7)
+/* 80286D54 002829B4 80 68 01 4C */ lwz r3, 0x14c(r8)
+/* 80286D58 002829B8 90 67 80 00 */ stw r3, -0x8000(r7)
+/* 80286D5C 002829BC B0 08 00 02 */ sth r0, 2(r8)
+/* 80286D60 002829C0 4E 80 00 20 */ blr
+
+.global GXSetScissorBoxOffset
+GXSetScissorBoxOffset:
+/* 80286D64 002829C4 38 03 01 56 */ addi r0, r3, 0x156
+/* 80286D68 002829C8 38 C0 00 00 */ li r6, 0
+/* 80286D6C 002829CC 50 06 FD BE */ rlwimi r6, r0, 0x1f, 0x16, 0x1f
+/* 80286D70 002829D0 3C A0 CC 01 */ lis r5, 0xCC008000@ha
+/* 80286D74 002829D4 38 00 00 61 */ li r0, 0x61
+/* 80286D78 002829D8 38 64 01 56 */ addi r3, r4, 0x156
+/* 80286D7C 002829DC 98 05 80 00 */ stb r0, 0xCC008000@l(r5)
+/* 80286D80 002829E0 50 66 4B 2A */ rlwimi r6, r3, 9, 0xc, 0x15
+/* 80286D84 002829E4 38 00 00 59 */ li r0, 0x59
+/* 80286D88 002829E8 80 62 A0 D0 */ lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80286D8C 002829EC 50 06 C0 0E */ rlwimi r6, r0, 0x18, 0, 7
+/* 80286D90 002829F0 90 C5 80 00 */ stw r6, -0x8000(r5)
+/* 80286D94 002829F4 38 00 00 00 */ li r0, 0
+/* 80286D98 002829F8 B0 03 00 02 */ sth r0, 2(r3)
+/* 80286D9C 002829FC 4E 80 00 20 */ blr
+
+.global GXSetClipMode
+GXSetClipMode:
+/* 80286DA0 00282A00 3C C0 CC 01 */ lis r6, 0xCC008000@ha
+/* 80286DA4 00282A04 38 00 00 10 */ li r0, 0x10
+/* 80286DA8 00282A08 98 06 80 00 */ stb r0, 0xCC008000@l(r6)
+/* 80286DAC 00282A0C 38 A0 10 05 */ li r5, 0x1005
+/* 80286DB0 00282A10 80 82 A0 D0 */ lwz r4, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80286DB4 00282A14 38 00 00 01 */ li r0, 1
+/* 80286DB8 00282A18 90 A6 80 00 */ stw r5, -0x8000(r6)
+/* 80286DBC 00282A1C 90 66 80 00 */ stw r3, -0x8000(r6)
+/* 80286DC0 00282A20 B0 04 00 02 */ sth r0, 2(r4)
+/* 80286DC4 00282A24 4E 80 00 20 */ blr
+
+.global __GXSetMatrixIndex
+__GXSetMatrixIndex:
+/* 80286DC8 00282A28 2C 03 00 05 */ cmpwi r3, 5
+/* 80286DCC 00282A2C 40 80 00 40 */ bge lbl_80286E0C
+/* 80286DD0 00282A30 3C A0 CC 01 */ lis r5, 0xCC008000@ha
+/* 80286DD4 00282A34 38 00 00 08 */ li r0, 8
+/* 80286DD8 00282A38 98 05 80 00 */ stb r0, 0xCC008000@l(r5)
+/* 80286DDC 00282A3C 38 00 00 30 */ li r0, 0x30
+/* 80286DE0 00282A40 80 C2 A0 D0 */ lwz r6, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80286DE4 00282A44 38 60 00 10 */ li r3, 0x10
+/* 80286DE8 00282A48 98 05 80 00 */ stb r0, -0x8000(r5)
+/* 80286DEC 00282A4C 38 00 10 18 */ li r0, 0x1018
+/* 80286DF0 00282A50 80 86 00 80 */ lwz r4, 0x80(r6)
+/* 80286DF4 00282A54 90 85 80 00 */ stw r4, -0x8000(r5)
+/* 80286DF8 00282A58 98 65 80 00 */ stb r3, -0x8000(r5)
+/* 80286DFC 00282A5C 90 05 80 00 */ stw r0, -0x8000(r5)
+/* 80286E00 00282A60 80 06 00 80 */ lwz r0, 0x80(r6)
+/* 80286E04 00282A64 90 05 80 00 */ stw r0, -0x8000(r5)
+/* 80286E08 00282A68 48 00 00 3C */ b lbl_80286E44
+lbl_80286E0C:
+/* 80286E0C 00282A6C 3C A0 CC 01 */ lis r5, 0xCC008000@ha
+/* 80286E10 00282A70 38 00 00 08 */ li r0, 8
+/* 80286E14 00282A74 98 05 80 00 */ stb r0, 0xCC008000@l(r5)
+/* 80286E18 00282A78 38 00 00 40 */ li r0, 0x40
+/* 80286E1C 00282A7C 80 C2 A0 D0 */ lwz r6, lbl_806426D0-_SDA2_BASE_(r2)
+/* 80286E20 00282A80 38 60 00 10 */ li r3, 0x10
+/* 80286E24 00282A84 98 05 80 00 */ stb r0, -0x8000(r5)
+/* 80286E28 00282A88 38 00 10 19 */ li r0, 0x1019
+/* 80286E2C 00282A8C 80 86 00 84 */ lwz r4, 0x84(r6)
+/* 80286E30 00282A90 90 85 80 00 */ stw r4, -0x8000(r5)
+/* 80286E34 00282A94 98 65 80 00 */ stb r3, -0x8000(r5)
+/* 80286E38 00282A98 90 05 80 00 */ stw r0, -0x8000(r5)
+/* 80286E3C 00282A9C 80 06 00 84 */ lwz r0, 0x84(r6)
+/* 80286E40 00282AA0 90 05 80 00 */ stw r0, -0x8000(r5)
+lbl_80286E44:
+/* 80286E44 00282AA4 38 00 00 01 */ li r0, 1
+/* 80286E48 00282AA8 B0 06 00 02 */ sth r0, 2(r6)
+/* 80286E4C 00282AAC 4E 80 00 20 */ blr
diff --git a/asm/SDK/HBM/HBMBase.s b/asm/SDK/HBM/HBMBase.s
index 49789c3..02c73fc 100644
--- a/asm/SDK/HBM/HBMBase.s
+++ b/asm/SDK/HBM/HBMBase.s
@@ -228,11 +228,11 @@ lbl_8039A30C:
/* 8039A348 00395FA8 9B E1 00 0F */ stb r31, 0xf(r1)
/* 8039A34C 00395FAC 80 01 00 0C */ lwz r0, 0xc(r1)
/* 8039A350 00395FB0 90 01 00 08 */ stw r0, 8(r1)
-/* 8039A354 00395FB4 4B EE 99 B1 */ bl func_80283D04
+/* 8039A354 00395FB4 4B EE 99 B1 */ bl GXSetTevColor
/* 8039A358 00395FB8 38 60 00 80 */ li r3, 0x80
/* 8039A35C 00395FBC 38 80 00 00 */ li r4, 0
/* 8039A360 00395FC0 38 A0 00 04 */ li r5, 4
-/* 8039A364 00395FC4 4B EE 6D E5 */ bl func_80281148
+/* 8039A364 00395FC4 4B EE 6D E5 */ bl GXBegin
/* 8039A368 00395FC8 C0 02 A9 28 */ lfs f0, lbl_80642F28-_SDA2_BASE_(r2)
/* 8039A36C 00395FCC 3C 60 CC 01 */ lis r3, 0xCC008000@ha
/* 8039A370 00395FD0 D0 03 80 00 */ stfs f0, 0xCC008000@l(r3)
@@ -1177,7 +1177,7 @@ lbl_8039B078:
/* 8039B0C8 00396D28 98 1F 02 58 */ stb r0, 0x258(r31)
/* 8039B0CC 00396D2C D0 01 00 10 */ stfs f0, 0x10(r1)
/* 8039B0D0 00396D30 D0 1F 02 4C */ stfs f0, 0x24c(r31)
-/* 8039B0D4 00396D34 4B EE 0E 59 */ bl func_8027BF2C
+/* 8039B0D4 00396D34 4B EE 0E 59 */ bl PSMTXIdentity
/* 8039B0D8 00396D38 80 61 00 18 */ lwz r3, 0x18(r1)
/* 8039B0DC 00396D3C 3B DC 09 9C */ addi r30, r28, 0x99c
/* 8039B0E0 00396D40 80 01 00 1C */ lwz r0, 0x1c(r1)
@@ -1500,7 +1500,7 @@ init__Q210homebutton10HomeButtonFv:
/* 8039B51C 0039717C 98 A3 00 8E */ stb r5, 0x8e(r3)
lbl_8039B520:
/* 8039B520 00397180 38 60 00 00 */ li r3, 0
-/* 8039B524 00397184 4B EE 5E ED */ bl func_80281410
+/* 8039B524 00397184 4B EE 5E ED */ bl GXSetCullMode
/* 8039B528 00397188 38 00 00 00 */ li r0, 0
/* 8039B52C 0039718C 90 1E 00 1C */ stw r0, 0x1c(r30)
/* 8039B530 00397190 90 1E 00 20 */ stw r0, 0x20(r30)
@@ -10089,7 +10089,7 @@ lbl_803A2F1C:
/* 803A2F8C 0039EBEC D0 03 00 48 */ stfs f0, 0x48(r3)
lbl_803A2F90:
/* 803A2F90 0039EBF0 38 60 00 00 */ li r3, 0
-/* 803A2F94 0039EBF4 4B ED E4 7D */ bl func_80281410
+/* 803A2F94 0039EBF4 4B ED E4 7D */ bl GXSetCullMode
/* 803A2F98 0039EBF8 80 01 00 24 */ lwz r0, 0x24(r1)
/* 803A2F9C 0039EBFC 7C 08 03 A6 */ mtlr r0
/* 803A2FA0 0039EC00 38 21 00 20 */ addi r1, r1, 0x20
@@ -10305,24 +10305,24 @@ initgx__10homebuttonFv:
/* 803A3270 0039EED0 7C 08 02 A6 */ mflr r0
/* 803A3274 0039EED4 90 01 00 44 */ stw r0, 0x44(r1)
/* 803A3278 0039EED8 38 61 00 08 */ addi r3, r1, 8
-/* 803A327C 0039EEDC 4B ED 8C B1 */ bl func_8027BF2C
+/* 803A327C 0039EEDC 4B ED 8C B1 */ bl PSMTXIdentity
/* 803A3280 0039EEE0 38 61 00 08 */ addi r3, r1, 8
/* 803A3284 0039EEE4 38 80 00 00 */ li r4, 0
/* 803A3288 0039EEE8 4B EE 38 01 */ bl GXLoadPosMtxImm
/* 803A328C 0039EEEC 38 60 00 00 */ li r3, 0
-/* 803A3290 0039EEF0 4B EE 38 A1 */ bl func_80286B30
-/* 803A3294 0039EEF4 4B ED C9 F1 */ bl func_8027FC84
+/* 803A3290 0039EEF0 4B EE 38 A1 */ bl GXSetCurrentMtx
+/* 803A3294 0039EEF4 4B ED C9 F1 */ bl GXClearVtxDesc
/* 803A3298 0039EEF8 38 60 00 09 */ li r3, 9
/* 803A329C 0039EEFC 38 80 00 01 */ li r4, 1
-/* 803A32A0 0039EF00 4B ED C1 55 */ bl func_8027F3F4
+/* 803A32A0 0039EF00 4B ED C1 55 */ bl GXSetVtxDesc
/* 803A32A4 0039EF04 38 60 00 00 */ li r3, 0
/* 803A32A8 0039EF08 38 80 00 09 */ li r4, 9
/* 803A32AC 0039EF0C 38 A0 00 00 */ li r5, 0
/* 803A32B0 0039EF10 38 C0 00 04 */ li r6, 4
/* 803A32B4 0039EF14 38 E0 00 00 */ li r7, 0
-/* 803A32B8 0039EF18 4B ED CA 01 */ bl func_8027FCB8
+/* 803A32B8 0039EF18 4B ED CA 01 */ bl GXSetVtxAttrFmt
/* 803A32BC 0039EF1C 38 60 00 01 */ li r3, 1
-/* 803A32C0 0039EF20 4B ED F2 89 */ bl func_80282548
+/* 803A32C0 0039EF20 4B ED F2 89 */ bl GXSetNumChans
/* 803A32C4 0039EF24 38 60 00 04 */ li r3, 4
/* 803A32C8 0039EF28 38 80 00 00 */ li r4, 0
/* 803A32CC 0039EF2C 38 A0 00 00 */ li r5, 0
@@ -10330,7 +10330,7 @@ initgx__10homebuttonFv:
/* 803A32D4 0039EF34 38 E0 00 00 */ li r7, 0
/* 803A32D8 0039EF38 39 00 00 00 */ li r8, 0
/* 803A32DC 0039EF3C 39 20 00 02 */ li r9, 2
-/* 803A32E0 0039EF40 4B ED F2 8D */ bl func_8028256C
+/* 803A32E0 0039EF40 4B ED F2 8D */ bl GXSetChanCtrl
/* 803A32E4 0039EF44 38 60 00 05 */ li r3, 5
/* 803A32E8 0039EF48 38 80 00 00 */ li r4, 0
/* 803A32EC 0039EF4C 38 A0 00 00 */ li r5, 0
@@ -10338,73 +10338,73 @@ initgx__10homebuttonFv:
/* 803A32F4 0039EF54 38 E0 00 00 */ li r7, 0
/* 803A32F8 0039EF58 39 00 00 00 */ li r8, 0
/* 803A32FC 0039EF5C 39 20 00 02 */ li r9, 2
-/* 803A3300 0039EF60 4B ED F2 6D */ bl func_8028256C
+/* 803A3300 0039EF60 4B ED F2 6D */ bl GXSetChanCtrl
/* 803A3304 0039EF64 38 60 00 00 */ li r3, 0
-/* 803A3308 0039EF68 4B ED D2 ED */ bl func_802805F4
+/* 803A3308 0039EF68 4B ED D2 ED */ bl GXSetNumTexGens
/* 803A330C 0039EF6C 38 60 00 01 */ li r3, 1
-/* 803A3310 0039EF70 4B EE 0E 8D */ bl func_8028419C
+/* 803A3310 0039EF70 4B EE 0E 8D */ bl GXSetNumTevStages
/* 803A3314 0039EF74 38 60 00 00 */ li r3, 0
/* 803A3318 0039EF78 38 80 00 FF */ li r4, 0xff
/* 803A331C 0039EF7C 38 A0 00 FF */ li r5, 0xff
/* 803A3320 0039EF80 38 C0 00 FF */ li r6, 0xff
-/* 803A3324 0039EF84 4B EE 0D 1D */ bl func_80284040
+/* 803A3324 0039EF84 4B EE 0D 1D */ bl GXSetTevOrder
/* 803A3328 0039EF88 38 60 00 00 */ li r3, 0
/* 803A332C 0039EF8C 38 80 00 0F */ li r4, 0xf
/* 803A3330 0039EF90 38 A0 00 0F */ li r5, 0xf
/* 803A3334 0039EF94 38 C0 00 0F */ li r6, 0xf
/* 803A3338 0039EF98 38 E0 00 02 */ li r7, 2
-/* 803A333C 0039EF9C 4B EE 08 99 */ bl func_80283BD4
+/* 803A333C 0039EF9C 4B EE 08 99 */ bl GXSetTevColorIn
/* 803A3340 0039EFA0 38 60 00 00 */ li r3, 0
/* 803A3344 0039EFA4 38 80 00 00 */ li r4, 0
/* 803A3348 0039EFA8 38 A0 00 00 */ li r5, 0
/* 803A334C 0039EFAC 38 C0 00 00 */ li r6, 0
/* 803A3350 0039EFB0 38 E0 00 01 */ li r7, 1
/* 803A3354 0039EFB4 39 00 00 00 */ li r8, 0
-/* 803A3358 0039EFB8 4B EE 08 FD */ bl func_80283C54
+/* 803A3358 0039EFB8 4B EE 08 FD */ bl GXSetTevColorOp
/* 803A335C 0039EFBC 38 60 00 00 */ li r3, 0
/* 803A3360 0039EFC0 38 80 00 07 */ li r4, 7
/* 803A3364 0039EFC4 38 A0 00 07 */ li r5, 7
/* 803A3368 0039EFC8 38 C0 00 07 */ li r6, 7
/* 803A336C 0039EFCC 38 E0 00 01 */ li r7, 1
-/* 803A3370 0039EFD0 4B EE 08 A5 */ bl func_80283C14
+/* 803A3370 0039EFD0 4B EE 08 A5 */ bl GXSetTevAlphaIn
/* 803A3374 0039EFD4 38 60 00 00 */ li r3, 0
/* 803A3378 0039EFD8 38 80 00 00 */ li r4, 0
/* 803A337C 0039EFDC 38 A0 00 00 */ li r5, 0
/* 803A3380 0039EFE0 38 C0 00 00 */ li r6, 0
/* 803A3384 0039EFE4 38 E0 00 01 */ li r7, 1
/* 803A3388 0039EFE8 39 00 00 00 */ li r8, 0
-/* 803A338C 0039EFEC 4B EE 09 21 */ bl func_80283CAC
+/* 803A338C 0039EFEC 4B EE 09 21 */ bl GXSetTevAlphaOp
/* 803A3390 0039EFF0 38 60 00 07 */ li r3, 7
/* 803A3394 0039EFF4 38 80 00 00 */ li r4, 0
/* 803A3398 0039EFF8 38 A0 00 01 */ li r5, 1
/* 803A339C 0039EFFC 38 C0 00 07 */ li r6, 7
/* 803A33A0 0039F000 38 E0 00 00 */ li r7, 0
-/* 803A33A4 0039F004 4B EE 0B D9 */ bl func_80283F7C
+/* 803A33A4 0039F004 4B EE 0B D9 */ bl GXSetAlphaCompare
/* 803A33A8 0039F008 38 60 00 01 */ li r3, 1
/* 803A33AC 0039F00C 38 80 00 04 */ li r4, 4
/* 803A33B0 0039F010 38 A0 00 05 */ li r5, 5
/* 803A33B4 0039F014 38 C0 00 05 */ li r6, 5
-/* 803A33B8 0039F018 4B EE 12 E5 */ bl func_8028469C
+/* 803A33B8 0039F018 4B EE 12 E5 */ bl GXSetBlendMode
/* 803A33BC 0039F01C 38 60 00 00 */ li r3, 0
-/* 803A33C0 0039F020 4B EE 13 59 */ bl func_80284718
+/* 803A33C0 0039F020 4B EE 13 59 */ bl GXSetAlphaUpdate
/* 803A33C4 0039F024 38 60 00 00 */ li r3, 0
/* 803A33C8 0039F028 38 80 00 07 */ li r4, 7
/* 803A33CC 0039F02C 38 A0 00 00 */ li r5, 0
-/* 803A33D0 0039F030 4B EE 13 75 */ bl func_80284744
+/* 803A33D0 0039F030 4B EE 13 75 */ bl GXSetZMode
/* 803A33D4 0039F034 38 60 00 00 */ li r3, 0
/* 803A33D8 0039F038 4B ED E8 81 */ bl GXSetDispCopyGamma
/* 803A33DC 0039F03C 38 60 00 00 */ li r3, 0
-/* 803A33E0 0039F040 4B EE 03 11 */ bl func_802836F0
+/* 803A33E0 0039F040 4B EE 03 11 */ bl GXSetNumIndStages
/* 803A33E4 0039F044 38 60 00 00 */ li r3, 0
/* 803A33E8 0039F048 38 80 00 00 */ li r4, 0
/* 803A33EC 0039F04C 38 A0 00 01 */ li r5, 1
/* 803A33F0 0039F050 38 C0 00 02 */ li r6, 2
/* 803A33F4 0039F054 38 E0 00 03 */ li r7, 3
-/* 803A33F8 0039F058 4B EE 0B 09 */ bl func_80283F00
+/* 803A33F8 0039F058 4B EE 0B 09 */ bl GXSetTevSwapModeTable
/* 803A33FC 0039F05C 38 60 00 00 */ li r3, 0
/* 803A3400 0039F060 38 80 00 00 */ li r4, 0
/* 803A3404 0039F064 38 A0 00 00 */ li r5, 0
-/* 803A3408 0039F068 4B EE 0A BD */ bl func_80283EC4
+/* 803A3408 0039F068 4B EE 0A BD */ bl GXSetTevSwapMode
/* 803A340C 0039F06C 80 01 00 44 */ lwz r0, 0x44(r1)
/* 803A3410 0039F070 7C 08 03 A6 */ mtlr r0
/* 803A3414 0039F074 38 21 00 40 */ addi r1, r1, 0x40
diff --git a/asm/SDK/HBM/HBMGUIManager.s b/asm/SDK/HBM/HBMGUIManager.s
index 56fcf5f..9b370b5 100644
--- a/asm/SDK/HBM/HBMGUIManager.s
+++ b/asm/SDK/HBM/HBMGUIManager.s
@@ -26,29 +26,29 @@ drawLine___Q210homebutton3guiFfffffUcR8_GXColor:
/* 803A39B0 0039F610 93 C1 00 38 */ stw r30, 0x38(r1)
/* 803A39B4 0039F614 FF E0 28 90 */ fmr f31, f5
/* 803A39B8 0039F618 7C 7E 1B 78 */ mr r30, r3
-/* 803A39BC 0039F61C 4B ED C2 C9 */ bl func_8027FC84
+/* 803A39BC 0039F61C 4B ED C2 C9 */ bl GXClearVtxDesc
/* 803A39C0 0039F620 38 60 00 09 */ li r3, 9
/* 803A39C4 0039F624 38 80 00 01 */ li r4, 1
-/* 803A39C8 0039F628 4B ED BA 2D */ bl func_8027F3F4
+/* 803A39C8 0039F628 4B ED BA 2D */ bl GXSetVtxDesc
/* 803A39CC 0039F62C 38 60 00 0B */ li r3, 0xb
/* 803A39D0 0039F630 38 80 00 01 */ li r4, 1
-/* 803A39D4 0039F634 4B ED BA 21 */ bl func_8027F3F4
+/* 803A39D4 0039F634 4B ED BA 21 */ bl GXSetVtxDesc
/* 803A39D8 0039F638 38 60 00 00 */ li r3, 0
/* 803A39DC 0039F63C 38 80 00 09 */ li r4, 9
/* 803A39E0 0039F640 38 A0 00 01 */ li r5, 1
/* 803A39E4 0039F644 38 C0 00 04 */ li r6, 4
/* 803A39E8 0039F648 38 E0 00 00 */ li r7, 0
-/* 803A39EC 0039F64C 4B ED C2 CD */ bl func_8027FCB8
+/* 803A39EC 0039F64C 4B ED C2 CD */ bl GXSetVtxAttrFmt
/* 803A39F0 0039F650 38 60 00 00 */ li r3, 0
/* 803A39F4 0039F654 38 80 00 0B */ li r4, 0xb
/* 803A39F8 0039F658 38 A0 00 01 */ li r5, 1
/* 803A39FC 0039F65C 38 C0 00 05 */ li r6, 5
/* 803A3A00 0039F660 38 E0 00 00 */ li r7, 0
-/* 803A3A04 0039F664 4B ED C2 B5 */ bl func_8027FCB8
+/* 803A3A04 0039F664 4B ED C2 B5 */ bl GXSetVtxAttrFmt
/* 803A3A08 0039F668 38 60 00 00 */ li r3, 0
-/* 803A3A0C 0039F66C 4B ED DA 05 */ bl func_80281410
+/* 803A3A0C 0039F66C 4B ED DA 05 */ bl GXSetCullMode
/* 803A3A10 0039F670 38 60 00 01 */ li r3, 1
-/* 803A3A14 0039F674 4B ED EB 35 */ bl func_80282548
+/* 803A3A14 0039F674 4B ED EB 35 */ bl GXSetNumChans
/* 803A3A18 0039F678 38 60 00 04 */ li r3, 4
/* 803A3A1C 0039F67C 38 80 00 00 */ li r4, 0
/* 803A3A20 0039F680 38 A0 00 01 */ li r5, 1
@@ -56,24 +56,24 @@ drawLine___Q210homebutton3guiFfffffUcR8_GXColor:
/* 803A3A28 0039F688 38 E0 00 00 */ li r7, 0
/* 803A3A2C 0039F68C 39 00 00 00 */ li r8, 0
/* 803A3A30 0039F690 39 20 00 02 */ li r9, 2
-/* 803A3A34 0039F694 4B ED EB 39 */ bl func_8028256C
+/* 803A3A34 0039F694 4B ED EB 39 */ bl GXSetChanCtrl
/* 803A3A38 0039F698 38 60 00 00 */ li r3, 0
-/* 803A3A3C 0039F69C 4B ED CB B9 */ bl func_802805F4
+/* 803A3A3C 0039F69C 4B ED CB B9 */ bl GXSetNumTexGens
/* 803A3A40 0039F6A0 38 60 00 01 */ li r3, 1
-/* 803A3A44 0039F6A4 4B EE 07 59 */ bl func_8028419C
+/* 803A3A44 0039F6A4 4B EE 07 59 */ bl GXSetNumTevStages
/* 803A3A48 0039F6A8 38 60 00 00 */ li r3, 0
/* 803A3A4C 0039F6AC 38 80 00 04 */ li r4, 4
-/* 803A3A50 0039F6B0 4B EE 00 F1 */ bl func_80283B40
+/* 803A3A50 0039F6B0 4B EE 00 F1 */ bl GXSetTevOp
/* 803A3A54 0039F6B4 38 60 00 00 */ li r3, 0
/* 803A3A58 0039F6B8 38 80 00 FF */ li r4, 0xff
/* 803A3A5C 0039F6BC 38 A0 00 FF */ li r5, 0xff
/* 803A3A60 0039F6C0 38 C0 00 04 */ li r6, 4
-/* 803A3A64 0039F6C4 4B EE 05 DD */ bl func_80284040
+/* 803A3A64 0039F6C4 4B EE 05 DD */ bl GXSetTevOrder
/* 803A3A68 0039F6C8 38 60 00 00 */ li r3, 0
/* 803A3A6C 0039F6CC 38 80 00 00 */ li r4, 0
/* 803A3A70 0039F6D0 38 A0 00 00 */ li r5, 0
/* 803A3A74 0039F6D4 38 C0 00 05 */ li r6, 5
-/* 803A3A78 0039F6D8 4B EE 0C 25 */ bl func_8028469C
+/* 803A3A78 0039F6D8 4B EE 0C 25 */ bl GXSetBlendMode
/* 803A3A7C 0039F6DC C0 22 A9 B0 */ lfs f1, lbl_80642FB0-_SDA2_BASE_(r2)
/* 803A3A80 0039F6E0 38 61 00 08 */ addi r3, r1, 8
/* 803A3A84 0039F6E4 FC 40 08 90 */ fmr f2, f1
@@ -84,11 +84,11 @@ drawLine___Q210homebutton3guiFfffffUcR8_GXColor:
/* 803A3A98 0039F6F8 4B EE 2F F1 */ bl GXLoadPosMtxImm
/* 803A3A9C 0039F6FC 7F C3 F3 78 */ mr r3, r30
/* 803A3AA0 0039F700 38 80 00 00 */ li r4, 0
-/* 803A3AA4 0039F704 4B ED D8 C9 */ bl func_8028136C
+/* 803A3AA4 0039F704 4B ED D8 C9 */ bl GXSetLineWidth
/* 803A3AA8 0039F708 38 60 00 A8 */ li r3, 0xa8
/* 803A3AAC 0039F70C 38 80 00 00 */ li r4, 0
/* 803A3AB0 0039F710 38 A0 00 02 */ li r5, 2
-/* 803A3AB4 0039F714 4B ED D6 95 */ bl func_80281148
+/* 803A3AB4 0039F714 4B ED D6 95 */ bl GXBegin
/* 803A3AB8 0039F718 3C 60 CC 01 */ lis r3, 0xCC008000@ha
/* 803A3ABC 0039F71C D3 63 80 00 */ stfs f27, 0xCC008000@l(r3)
/* 803A3AC0 0039F720 D3 83 80 00 */ stfs f28, -0x8000(r3)
@@ -1179,7 +1179,7 @@ lbl_803A491C:
/* 803A491C 003A057C 80 7E 00 2C */ lwz r3, 0x2c(r30)
/* 803A4920 003A0580 38 81 00 38 */ addi r4, r1, 0x38
/* 803A4924 003A0584 38 63 00 84 */ addi r3, r3, 0x84
-/* 803A4928 003A0588 4B ED 77 81 */ bl func_8027C0A8
+/* 803A4928 003A0588 4B ED 77 81 */ bl PSMTXInverse
/* 803A492C 003A058C C0 02 A9 B0 */ lfs f0, lbl_80642FB0-_SDA2_BASE_(r2)
/* 803A4930 003A0590 38 61 00 38 */ addi r3, r1, 0x38
/* 803A4934 003A0594 D3 C1 00 08 */ stfs f30, 8(r1)
@@ -1187,7 +1187,7 @@ lbl_803A491C:
/* 803A493C 003A059C 38 A1 00 28 */ addi r5, r1, 0x28
/* 803A4940 003A05A0 D3 E1 00 0C */ stfs f31, 0xc(r1)
/* 803A4944 003A05A4 D0 01 00 10 */ stfs f0, 0x10(r1)
-/* 803A4948 003A05A8 4B ED 80 B5 */ bl func_8027C9FC
+/* 803A4948 003A05A8 4B ED 80 B5 */ bl PSMTXMultVec
/* 803A494C 003A05AC 80 9E 00 2C */ lwz r4, 0x2c(r30)
/* 803A4950 003A05B0 7F E5 FB 78 */ mr r5, r31
/* 803A4954 003A05B4 38 61 00 18 */ addi r3, r1, 0x18
diff --git a/asm/SDK/MTX/mtx.s b/asm/SDK/MTX/mtx.s
new file mode 100644
index 0000000..c902a54
--- /dev/null
+++ b/asm/SDK/MTX/mtx.s
@@ -0,0 +1,757 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global PSMTXIdentity
+PSMTXIdentity:
+/* 8027BF2C 00277B8C C0 02 A0 74 */ lfs f0, lbl_80642674-_SDA2_BASE_(r2)
+/* 8027BF30 00277B90 C0 22 A0 70 */ lfs f1, lbl_80642670-_SDA2_BASE_(r2)
+/* 8027BF34 00277B94 F0 03 00 08 */ psq_st f0, 8(r3), 0, qr0
+/* 8027BF38 00277B98 10 41 04 A0 */ ps_merge10 f2, f1, f0
+/* 8027BF3C 00277B9C 10 20 0C 60 */ ps_merge01 f1, f0, f1
+/* 8027BF40 00277BA0 F0 03 00 18 */ psq_st f0, 24(r3), 0, qr0
+/* 8027BF44 00277BA4 F0 03 00 20 */ psq_st f0, 32(r3), 0, qr0
+/* 8027BF48 00277BA8 F0 23 00 10 */ psq_st f1, 16(r3), 0, qr0
+/* 8027BF4C 00277BAC F0 43 00 00 */ psq_st f2, 0(r3), 0, qr0
+/* 8027BF50 00277BB0 F0 43 00 28 */ psq_st f2, 40(r3), 0, qr0
+/* 8027BF54 00277BB4 4E 80 00 20 */ blr
+
+.global PSMTXCopy
+PSMTXCopy:
+/* 8027BF58 00277BB8 E0 03 00 00 */ psq_l f0, 0(r3), 0, qr0
+/* 8027BF5C 00277BBC F0 04 00 00 */ psq_st f0, 0(r4), 0, qr0
+/* 8027BF60 00277BC0 E0 23 00 08 */ psq_l f1, 8(r3), 0, qr0
+/* 8027BF64 00277BC4 F0 24 00 08 */ psq_st f1, 8(r4), 0, qr0
+/* 8027BF68 00277BC8 E0 43 00 10 */ psq_l f2, 16(r3), 0, qr0
+/* 8027BF6C 00277BCC F0 44 00 10 */ psq_st f2, 16(r4), 0, qr0
+/* 8027BF70 00277BD0 E0 63 00 18 */ psq_l f3, 24(r3), 0, qr0
+/* 8027BF74 00277BD4 F0 64 00 18 */ psq_st f3, 24(r4), 0, qr0
+/* 8027BF78 00277BD8 E0 83 00 20 */ psq_l f4, 32(r3), 0, qr0
+/* 8027BF7C 00277BDC F0 84 00 20 */ psq_st f4, 32(r4), 0, qr0
+/* 8027BF80 00277BE0 E0 A3 00 28 */ psq_l f5, 40(r3), 0, qr0
+/* 8027BF84 00277BE4 F0 A4 00 28 */ psq_st f5, 40(r4), 0, qr0
+/* 8027BF88 00277BE8 4E 80 00 20 */ blr
+
+.global PSMTXConcat
+PSMTXConcat:
+/* 8027BF8C 00277BEC 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 8027BF90 00277BF0 E0 03 00 00 */ psq_l f0, 0(r3), 0, qr0
+/* 8027BF94 00277BF4 D9 C1 00 08 */ stfd f14, 8(r1)
+/* 8027BF98 00277BF8 E0 C4 00 00 */ psq_l f6, 0(r4), 0, qr0
+/* 8027BF9C 00277BFC 3C C0 80 64 */ lis r6, lbl_8063DB08@ha
+/* 8027BFA0 00277C00 E0 E4 00 08 */ psq_l f7, 8(r4), 0, qr0
+/* 8027BFA4 00277C04 D9 E1 00 10 */ stfd f15, 0x10(r1)
+/* 8027BFA8 00277C08 38 C6 DB 08 */ addi r6, r6, lbl_8063DB08@l
+/* 8027BFAC 00277C0C DB E1 00 28 */ stfd f31, 0x28(r1)
+/* 8027BFB0 00277C10 E1 04 00 10 */ psq_l f8, 16(r4), 0, qr0
+/* 8027BFB4 00277C14 11 86 00 18 */ ps_muls0 f12, f6, f0
+/* 8027BFB8 00277C18 E0 43 00 10 */ psq_l f2, 16(r3), 0, qr0
+/* 8027BFBC 00277C1C 11 A7 00 18 */ ps_muls0 f13, f7, f0
+/* 8027BFC0 00277C20 E3 E6 00 00 */ psq_l f31, 0(r6), 0, qr0
+/* 8027BFC4 00277C24 11 C6 00 98 */ ps_muls0 f14, f6, f2
+/* 8027BFC8 00277C28 E1 24 00 18 */ psq_l f9, 24(r4), 0, qr0
+/* 8027BFCC 00277C2C 11 E7 00 98 */ ps_muls0 f15, f7, f2
+/* 8027BFD0 00277C30 E0 23 00 08 */ psq_l f1, 8(r3), 0, qr0
+/* 8027BFD4 00277C34 11 88 60 1E */ ps_madds1 f12, f8, f0, f12
+/* 8027BFD8 00277C38 E0 63 00 18 */ psq_l f3, 24(r3), 0, qr0
+/* 8027BFDC 00277C3C 11 C8 70 9E */ ps_madds1 f14, f8, f2, f14
+/* 8027BFE0 00277C40 E1 44 00 20 */ psq_l f10, 32(r4), 0, qr0
+/* 8027BFE4 00277C44 11 A9 68 1E */ ps_madds1 f13, f9, f0, f13
+/* 8027BFE8 00277C48 E1 64 00 28 */ psq_l f11, 40(r4), 0, qr0
+/* 8027BFEC 00277C4C 11 E9 78 9E */ ps_madds1 f15, f9, f2, f15
+/* 8027BFF0 00277C50 E0 83 00 20 */ psq_l f4, 32(r3), 0, qr0
+/* 8027BFF4 00277C54 E0 A3 00 28 */ psq_l f5, 40(r3), 0, qr0
+/* 8027BFF8 00277C58 11 8A 60 5C */ ps_madds0 f12, f10, f1, f12
+/* 8027BFFC 00277C5C 11 AB 68 5C */ ps_madds0 f13, f11, f1, f13
+/* 8027C000 00277C60 11 CA 70 DC */ ps_madds0 f14, f10, f3, f14
+/* 8027C004 00277C64 11 EB 78 DC */ ps_madds0 f15, f11, f3, f15
+/* 8027C008 00277C68 F1 85 00 00 */ psq_st f12, 0(r5), 0, qr0
+/* 8027C00C 00277C6C 10 46 01 18 */ ps_muls0 f2, f6, f4
+/* 8027C010 00277C70 11 BF 68 5E */ ps_madds1 f13, f31, f1, f13
+/* 8027C014 00277C74 10 07 01 18 */ ps_muls0 f0, f7, f4
+/* 8027C018 00277C78 F1 C5 00 10 */ psq_st f14, 16(r5), 0, qr0
+/* 8027C01C 00277C7C 11 FF 78 DE */ ps_madds1 f15, f31, f3, f15
+/* 8027C020 00277C80 F1 A5 00 08 */ psq_st f13, 8(r5), 0, qr0
+/* 8027C024 00277C84 10 48 11 1E */ ps_madds1 f2, f8, f4, f2
+/* 8027C028 00277C88 10 09 01 1E */ ps_madds1 f0, f9, f4, f0
+/* 8027C02C 00277C8C 10 4A 11 5C */ ps_madds0 f2, f10, f5, f2
+/* 8027C030 00277C90 C9 C1 00 08 */ lfd f14, 8(r1)
+/* 8027C034 00277C94 F1 E5 00 18 */ psq_st f15, 24(r5), 0, qr0
+/* 8027C038 00277C98 10 0B 01 5C */ ps_madds0 f0, f11, f5, f0
+/* 8027C03C 00277C9C F0 45 00 20 */ psq_st f2, 32(r5), 0, qr0
+/* 8027C040 00277CA0 10 1F 01 5E */ ps_madds1 f0, f31, f5, f0
+/* 8027C044 00277CA4 C9 E1 00 10 */ lfd f15, 0x10(r1)
+/* 8027C048 00277CA8 F0 05 00 28 */ psq_st f0, 40(r5), 0, qr0
+/* 8027C04C 00277CAC CB E1 00 28 */ lfd f31, 0x28(r1)
+/* 8027C050 00277CB0 38 21 00 40 */ addi r1, r1, 0x40
+/* 8027C054 00277CB4 4E 80 00 20 */ blr
+
+.global PSMTXTranspose
+PSMTXTranspose:
+/* 8027C058 00277CB8 E0 23 00 00 */ psq_l f1, 0(r3), 0, qr0
+/* 8027C05C 00277CBC E0 43 00 10 */ psq_l f2, 16(r3), 0, qr0
+/* 8027C060 00277CC0 C0 02 A0 74 */ lfs f0, lbl_80642674-_SDA2_BASE_(r2)
+/* 8027C064 00277CC4 10 81 14 20 */ ps_merge00 f4, f1, f2
+/* 8027C068 00277CC8 E0 63 80 08 */ psq_l f3, 8(r3), 1, qr0
+/* 8027C06C 00277CCC 10 A1 14 E0 */ ps_merge11 f5, f1, f2
+/* 8027C070 00277CD0 E0 43 80 18 */ psq_l f2, 24(r3), 1, qr0
+/* 8027C074 00277CD4 E0 23 00 20 */ psq_l f1, 32(r3), 0, qr0
+/* 8027C078 00277CD8 10 43 14 20 */ ps_merge00 f2, f3, f2
+/* 8027C07C 00277CDC F0 84 00 00 */ psq_st f4, 0(r4), 0, qr0
+/* 8027C080 00277CE0 10 81 04 20 */ ps_merge00 f4, f1, f0
+/* 8027C084 00277CE4 C0 63 00 28 */ lfs f3, 0x28(r3)
+/* 8027C088 00277CE8 F0 A4 00 10 */ psq_st f5, 16(r4), 0, qr0
+/* 8027C08C 00277CEC 10 A1 04 A0 */ ps_merge10 f5, f1, f0
+/* 8027C090 00277CF0 D0 04 00 2C */ stfs f0, 0x2c(r4)
+/* 8027C094 00277CF4 F0 44 00 20 */ psq_st f2, 32(r4), 0, qr0
+/* 8027C098 00277CF8 F0 84 00 08 */ psq_st f4, 8(r4), 0, qr0
+/* 8027C09C 00277CFC F0 A4 00 18 */ psq_st f5, 24(r4), 0, qr0
+/* 8027C0A0 00277D00 D0 64 00 28 */ stfs f3, 0x28(r4)
+/* 8027C0A4 00277D04 4E 80 00 20 */ blr
+
+.global PSMTXInverse
+PSMTXInverse:
+/* 8027C0A8 00277D08 E0 03 80 00 */ psq_l f0, 0(r3), 1, qr0
+/* 8027C0AC 00277D0C E0 23 00 04 */ psq_l f1, 4(r3), 0, qr0
+/* 8027C0B0 00277D10 E0 43 80 10 */ psq_l f2, 16(r3), 1, qr0
+/* 8027C0B4 00277D14 10 C1 04 A0 */ ps_merge10 f6, f1, f0
+/* 8027C0B8 00277D18 E0 63 00 14 */ psq_l f3, 20(r3), 0, qr0
+/* 8027C0BC 00277D1C E0 83 80 20 */ psq_l f4, 32(r3), 1, qr0
+/* 8027C0C0 00277D20 10 E3 14 A0 */ ps_merge10 f7, f3, f2
+/* 8027C0C4 00277D24 E0 A3 00 24 */ psq_l f5, 36(r3), 0, qr0
+/* 8027C0C8 00277D28 11 63 01 B2 */ ps_mul f11, f3, f6
+/* 8027C0CC 00277D2C 11 A5 01 F2 */ ps_mul f13, f5, f7
+/* 8027C0D0 00277D30 11 05 24 A0 */ ps_merge10 f8, f5, f4
+/* 8027C0D4 00277D34 11 61 59 F8 */ ps_msub f11, f1, f7, f11
+/* 8027C0D8 00277D38 11 81 02 32 */ ps_mul f12, f1, f8
+/* 8027C0DC 00277D3C 11 A3 6A 38 */ ps_msub f13, f3, f8, f13
+/* 8027C0E0 00277D40 11 43 01 32 */ ps_mul f10, f3, f4
+/* 8027C0E4 00277D44 11 85 61 B8 */ ps_msub f12, f5, f6, f12
+/* 8027C0E8 00277D48 11 20 01 72 */ ps_mul f9, f0, f5
+/* 8027C0EC 00277D4C 11 01 00 B2 */ ps_mul f8, f1, f2
+/* 8027C0F0 00277D50 10 C6 30 28 */ ps_sub f6, f6, f6
+/* 8027C0F4 00277D54 11 42 51 78 */ ps_msub f10, f2, f5, f10
+/* 8027C0F8 00277D58 10 E0 03 72 */ ps_mul f7, f0, f13
+/* 8027C0FC 00277D5C 11 21 49 38 */ ps_msub f9, f1, f4, f9
+/* 8027C100 00277D60 10 E2 3B 3A */ ps_madd f7, f2, f12, f7
+/* 8027C104 00277D64 11 00 40 F8 */ ps_msub f8, f0, f3, f8
+/* 8027C108 00277D68 10 E4 3A FA */ ps_madd f7, f4, f11, f7
+/* 8027C10C 00277D6C 10 07 30 40 */ ps_cmpo0 cr0, f7, f6
+/* 8027C110 00277D70 40 82 00 0C */ bne lbl_8027C11C
+/* 8027C114 00277D74 38 60 00 00 */ li r3, 0
+/* 8027C118 00277D78 4E 80 00 20 */ blr
+lbl_8027C11C:
+/* 8027C11C 00277D7C EC 00 38 30 */ fres f0, f7
+/* 8027C120 00277D80 10 C0 00 2A */ ps_add f6, f0, f0
+/* 8027C124 00277D84 10 A0 00 32 */ ps_mul f5, f0, f0
+/* 8027C128 00277D88 10 07 31 7C */ ps_nmsub f0, f7, f5, f6
+/* 8027C12C 00277D8C C0 23 00 0C */ lfs f1, 0xc(r3)
+/* 8027C130 00277D90 11 AD 00 18 */ ps_muls0 f13, f13, f0
+/* 8027C134 00277D94 C0 43 00 1C */ lfs f2, 0x1c(r3)
+/* 8027C138 00277D98 11 8C 00 18 */ ps_muls0 f12, f12, f0
+/* 8027C13C 00277D9C C0 63 00 2C */ lfs f3, 0x2c(r3)
+/* 8027C140 00277DA0 11 6B 00 18 */ ps_muls0 f11, f11, f0
+/* 8027C144 00277DA4 10 AD 64 20 */ ps_merge00 f5, f13, f12
+/* 8027C148 00277DA8 11 4A 00 18 */ ps_muls0 f10, f10, f0
+/* 8027C14C 00277DAC 10 8D 64 E0 */ ps_merge11 f4, f13, f12
+/* 8027C150 00277DB0 11 29 00 18 */ ps_muls0 f9, f9, f0
+/* 8027C154 00277DB4 F0 A4 00 00 */ psq_st f5, 0(r4), 0, qr0
+/* 8027C158 00277DB8 10 CD 00 72 */ ps_mul f6, f13, f1
+/* 8027C15C 00277DBC F0 84 00 10 */ psq_st f4, 16(r4), 0, qr0
+/* 8027C160 00277DC0 11 08 00 18 */ ps_muls0 f8, f8, f0
+/* 8027C164 00277DC4 10 CC 30 BA */ ps_madd f6, f12, f2, f6
+/* 8027C168 00277DC8 F1 44 80 20 */ psq_st f10, 32(r4), 1, qr0
+/* 8027C16C 00277DCC 10 CB 30 FE */ ps_nmadd f6, f11, f3, f6
+/* 8027C170 00277DD0 F1 24 80 24 */ psq_st f9, 36(r4), 1, qr0
+/* 8027C174 00277DD4 10 EA 00 72 */ ps_mul f7, f10, f1
+/* 8027C178 00277DD8 10 AB 34 20 */ ps_merge00 f5, f11, f6
+/* 8027C17C 00277DDC F1 04 80 28 */ psq_st f8, 40(r4), 1, qr0
+/* 8027C180 00277DE0 10 8B 34 E0 */ ps_merge11 f4, f11, f6
+/* 8027C184 00277DE4 F0 A4 00 08 */ psq_st f5, 8(r4), 0, qr0
+/* 8027C188 00277DE8 10 E9 38 BA */ ps_madd f7, f9, f2, f7
+/* 8027C18C 00277DEC F0 84 00 18 */ psq_st f4, 24(r4), 0, qr0
+/* 8027C190 00277DF0 10 E8 38 FE */ ps_nmadd f7, f8, f3, f7
+/* 8027C194 00277DF4 38 60 00 01 */ li r3, 1
+/* 8027C198 00277DF8 F0 E4 80 2C */ psq_st f7, 44(r4), 1, qr0
+/* 8027C19C 00277DFC 4E 80 00 20 */ blr
+
+.global PSMTXInvXpose
+PSMTXInvXpose:
+/* 8027C1A0 00277E00 E0 03 80 00 */ psq_l f0, 0(r3), 1, qr0
+/* 8027C1A4 00277E04 E0 23 00 04 */ psq_l f1, 4(r3), 0, qr0
+/* 8027C1A8 00277E08 E0 43 80 10 */ psq_l f2, 16(r3), 1, qr0
+/* 8027C1AC 00277E0C 10 C1 04 A0 */ ps_merge10 f6, f1, f0
+/* 8027C1B0 00277E10 E0 63 00 14 */ psq_l f3, 20(r3), 0, qr0
+/* 8027C1B4 00277E14 E0 83 80 20 */ psq_l f4, 32(r3), 1, qr0
+/* 8027C1B8 00277E18 10 E3 14 A0 */ ps_merge10 f7, f3, f2
+/* 8027C1BC 00277E1C E0 A3 00 24 */ psq_l f5, 36(r3), 0, qr0
+/* 8027C1C0 00277E20 11 63 01 B2 */ ps_mul f11, f3, f6
+/* 8027C1C4 00277E24 11 05 24 A0 */ ps_merge10 f8, f5, f4
+/* 8027C1C8 00277E28 11 A5 01 F2 */ ps_mul f13, f5, f7
+/* 8027C1CC 00277E2C 11 61 59 F8 */ ps_msub f11, f1, f7, f11
+/* 8027C1D0 00277E30 11 81 02 32 */ ps_mul f12, f1, f8
+/* 8027C1D4 00277E34 11 A3 6A 38 */ ps_msub f13, f3, f8, f13
+/* 8027C1D8 00277E38 11 85 61 B8 */ ps_msub f12, f5, f6, f12
+/* 8027C1DC 00277E3C 11 43 01 32 */ ps_mul f10, f3, f4
+/* 8027C1E0 00277E40 11 20 01 72 */ ps_mul f9, f0, f5
+/* 8027C1E4 00277E44 11 01 00 B2 */ ps_mul f8, f1, f2
+/* 8027C1E8 00277E48 11 42 51 78 */ ps_msub f10, f2, f5, f10
+/* 8027C1EC 00277E4C 11 21 49 38 */ ps_msub f9, f1, f4, f9
+/* 8027C1F0 00277E50 11 00 40 F8 */ ps_msub f8, f0, f3, f8
+/* 8027C1F4 00277E54 10 E0 03 72 */ ps_mul f7, f0, f13
+/* 8027C1F8 00277E58 10 21 08 28 */ ps_sub f1, f1, f1
+/* 8027C1FC 00277E5C 10 E2 3B 3A */ ps_madd f7, f2, f12, f7
+/* 8027C200 00277E60 10 E4 3A FA */ ps_madd f7, f4, f11, f7
+/* 8027C204 00277E64 10 07 08 40 */ ps_cmpo0 cr0, f7, f1
+/* 8027C208 00277E68 40 82 00 0C */ bne lbl_8027C214
+/* 8027C20C 00277E6C 38 60 00 00 */ li r3, 0
+/* 8027C210 00277E70 4E 80 00 20 */ blr
+lbl_8027C214:
+/* 8027C214 00277E74 EC 00 38 30 */ fres f0, f7
+/* 8027C218 00277E78 F0 24 80 0C */ psq_st f1, 12(r4), 1, qr0
+/* 8027C21C 00277E7C 10 C0 00 2A */ ps_add f6, f0, f0
+/* 8027C220 00277E80 10 A0 00 32 */ ps_mul f5, f0, f0
+/* 8027C224 00277E84 F0 24 80 1C */ psq_st f1, 28(r4), 1, qr0
+/* 8027C228 00277E88 10 07 31 7C */ ps_nmsub f0, f7, f5, f6
+/* 8027C22C 00277E8C F0 24 80 2C */ psq_st f1, 44(r4), 1, qr0
+/* 8027C230 00277E90 11 AD 00 18 */ ps_muls0 f13, f13, f0
+/* 8027C234 00277E94 11 8C 00 18 */ ps_muls0 f12, f12, f0
+/* 8027C238 00277E98 11 6B 00 18 */ ps_muls0 f11, f11, f0
+/* 8027C23C 00277E9C F1 A4 00 00 */ psq_st f13, 0(r4), 0, qr0
+/* 8027C240 00277EA0 F1 84 00 10 */ psq_st f12, 16(r4), 0, qr0
+/* 8027C244 00277EA4 11 4A 00 18 */ ps_muls0 f10, f10, f0
+/* 8027C248 00277EA8 11 29 00 18 */ ps_muls0 f9, f9, f0
+/* 8027C24C 00277EAC F1 64 00 20 */ psq_st f11, 32(r4), 0, qr0
+/* 8027C250 00277EB0 F1 44 80 08 */ psq_st f10, 8(r4), 1, qr0
+/* 8027C254 00277EB4 11 08 00 18 */ ps_muls0 f8, f8, f0
+/* 8027C258 00277EB8 38 60 00 01 */ li r3, 1
+/* 8027C25C 00277EBC F1 24 80 18 */ psq_st f9, 24(r4), 1, qr0
+/* 8027C260 00277EC0 F1 04 80 28 */ psq_st f8, 40(r4), 1, qr0
+/* 8027C264 00277EC4 4E 80 00 20 */ blr
+
+.global PSMTXRotRad
+PSMTXRotRad:
+/* 8027C268 00277EC8 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 8027C26C 00277ECC 7C 08 02 A6 */ mflr r0
+/* 8027C270 00277ED0 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8027C274 00277ED4 DB E1 00 20 */ stfd f31, 0x20(r1)
+/* 8027C278 00277ED8 F3 E1 00 28 */ psq_st f31, 40(r1), 0, qr0
+/* 8027C27C 00277EDC DB C1 00 10 */ stfd f30, 0x10(r1)
+/* 8027C280 00277EE0 F3 C1 00 18 */ psq_st f30, 24(r1), 0, qr0
+/* 8027C284 00277EE4 FF C0 08 90 */ fmr f30, f1
+/* 8027C288 00277EE8 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8027C28C 00277EEC 7C 9F 23 78 */ mr r31, r4
+/* 8027C290 00277EF0 93 C1 00 08 */ stw r30, 8(r1)
+/* 8027C294 00277EF4 7C 7E 1B 78 */ mr r30, r3
+/* 8027C298 00277EF8 4B F5 81 ED */ bl sin
+/* 8027C29C 00277EFC FF E0 08 18 */ frsp f31, f1
+/* 8027C2A0 00277F00 FC 20 F0 90 */ fmr f1, f30
+/* 8027C2A4 00277F04 4B F5 7D D5 */ bl cos
+/* 8027C2A8 00277F08 FC 40 08 18 */ frsp f2, f1
+/* 8027C2AC 00277F0C 7F C3 F3 78 */ mr r3, r30
+/* 8027C2B0 00277F10 FC 20 F8 90 */ fmr f1, f31
+/* 8027C2B4 00277F14 7F E4 07 74 */ extsb r4, r31
+/* 8027C2B8 00277F18 48 00 00 2D */ bl PSMTXRotTrig
+/* 8027C2BC 00277F1C E3 E1 00 28 */ psq_l f31, 40(r1), 0, qr0
+/* 8027C2C0 00277F20 CB E1 00 20 */ lfd f31, 0x20(r1)
+/* 8027C2C4 00277F24 E3 C1 00 18 */ psq_l f30, 24(r1), 0, qr0
+/* 8027C2C8 00277F28 CB C1 00 10 */ lfd f30, 0x10(r1)
+/* 8027C2CC 00277F2C 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8027C2D0 00277F30 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8027C2D4 00277F34 83 C1 00 08 */ lwz r30, 8(r1)
+/* 8027C2D8 00277F38 7C 08 03 A6 */ mtlr r0
+/* 8027C2DC 00277F3C 38 21 00 30 */ addi r1, r1, 0x30
+/* 8027C2E0 00277F40 4E 80 00 20 */ blr
+
+.global PSMTXRotTrig
+PSMTXRotTrig:
+/* 8027C2E4 00277F44 FC A0 08 18 */ frsp f5, f1
+/* 8027C2E8 00277F48 60 80 00 20 */ ori r0, r4, 0x20
+/* 8027C2EC 00277F4C FC 80 10 18 */ frsp f4, f2
+/* 8027C2F0 00277F50 28 00 00 78 */ cmplwi r0, 0x78
+/* 8027C2F4 00277F54 C0 02 A0 74 */ lfs f0, lbl_80642674-_SDA2_BASE_(r2)
+/* 8027C2F8 00277F58 10 40 28 50 */ ps_neg f2, f5
+/* 8027C2FC 00277F5C C0 22 A0 70 */ lfs f1, lbl_80642670-_SDA2_BASE_(r2)
+/* 8027C300 00277F60 41 82 00 18 */ beq lbl_8027C318
+/* 8027C304 00277F64 28 00 00 79 */ cmplwi r0, 0x79
+/* 8027C308 00277F68 41 82 00 38 */ beq lbl_8027C340
+/* 8027C30C 00277F6C 28 00 00 7A */ cmplwi r0, 0x7a
+/* 8027C310 00277F70 41 82 00 5C */ beq lbl_8027C36C
+/* 8027C314 00277F74 4E 80 00 20 */ blr
+lbl_8027C318:
+/* 8027C318 00277F78 10 65 24 20 */ ps_merge00 f3, f5, f4
+/* 8027C31C 00277F7C F0 23 80 00 */ psq_st f1, 0(r3), 1, qr0
+/* 8027C320 00277F80 10 24 14 20 */ ps_merge00 f1, f4, f2
+/* 8027C324 00277F84 F0 03 00 04 */ psq_st f0, 4(r3), 0, qr0
+/* 8027C328 00277F88 F0 03 00 0C */ psq_st f0, 12(r3), 0, qr0
+/* 8027C32C 00277F8C F0 03 00 1C */ psq_st f0, 28(r3), 0, qr0
+/* 8027C330 00277F90 F0 03 80 2C */ psq_st f0, 44(r3), 1, qr0
+/* 8027C334 00277F94 F0 63 00 24 */ psq_st f3, 36(r3), 0, qr0
+/* 8027C338 00277F98 F0 23 00 14 */ psq_st f1, 20(r3), 0, qr0
+/* 8027C33C 00277F9C 4E 80 00 20 */ blr
+lbl_8027C340:
+/* 8027C340 00277FA0 10 64 04 20 */ ps_merge00 f3, f4, f0
+/* 8027C344 00277FA4 F0 03 00 18 */ psq_st f0, 24(r3), 0, qr0
+/* 8027C348 00277FA8 10 20 0C 20 */ ps_merge00 f1, f0, f1
+/* 8027C34C 00277FAC 10 42 04 20 */ ps_merge00 f2, f2, f0
+/* 8027C350 00277FB0 10 05 04 20 */ ps_merge00 f0, f5, f0
+/* 8027C354 00277FB4 F0 63 00 00 */ psq_st f3, 0(r3), 0, qr0
+/* 8027C358 00277FB8 F0 63 00 28 */ psq_st f3, 40(r3), 0, qr0
+/* 8027C35C 00277FBC F0 23 00 10 */ psq_st f1, 16(r3), 0, qr0
+/* 8027C360 00277FC0 F0 03 00 08 */ psq_st f0, 8(r3), 0, qr0
+/* 8027C364 00277FC4 F0 43 00 20 */ psq_st f2, 32(r3), 0, qr0
+/* 8027C368 00277FC8 4E 80 00 20 */ blr
+lbl_8027C36C:
+/* 8027C36C 00277FCC 10 65 24 20 */ ps_merge00 f3, f5, f4
+/* 8027C370 00277FD0 F0 03 00 08 */ psq_st f0, 8(r3), 0, qr0
+/* 8027C374 00277FD4 10 44 14 20 */ ps_merge00 f2, f4, f2
+/* 8027C378 00277FD8 10 21 04 20 */ ps_merge00 f1, f1, f0
+/* 8027C37C 00277FDC F0 03 00 18 */ psq_st f0, 24(r3), 0, qr0
+/* 8027C380 00277FE0 F0 03 00 20 */ psq_st f0, 32(r3), 0, qr0
+/* 8027C384 00277FE4 F0 63 00 10 */ psq_st f3, 16(r3), 0, qr0
+/* 8027C388 00277FE8 F0 43 00 00 */ psq_st f2, 0(r3), 0, qr0
+/* 8027C38C 00277FEC F0 23 00 28 */ psq_st f1, 40(r3), 0, qr0
+/* 8027C390 00277FF0 4E 80 00 20 */ blr
+
+.global __PSMTXRotAxisRadInternal
+__PSMTXRotAxisRadInternal:
+/* 8027C394 00277FF4 E0 64 00 00 */ psq_l f3, 0(r4), 0, qr0
+/* 8027C398 00277FF8 FD 60 10 18 */ frsp f11, f2
+/* 8027C39C 00277FFC C1 42 A0 78 */ lfs f10, lbl_80642678-_SDA2_BASE_(r2)
+/* 8027C3A0 00278000 FD 80 08 18 */ frsp f12, f1
+/* 8027C3A4 00278004 10 83 00 F2 */ ps_mul f4, f3, f3
+/* 8027C3A8 00278008 C0 44 00 08 */ lfs f2, 8(r4)
+/* 8027C3AC 0027800C ED 0A 50 2A */ fadds f8, f10, f10
+/* 8027C3B0 00278010 C1 22 A0 7C */ lfs f9, lbl_8064267C-_SDA2_BASE_(r2)
+/* 8027C3B4 00278014 EC 2A 50 28 */ fsubs f1, f10, f10
+/* 8027C3B8 00278018 10 A2 20 BA */ ps_madd f5, f2, f2, f4
+/* 8027C3BC 0027801C EC 08 58 28 */ fsubs f0, f8, f11
+/* 8027C3C0 00278020 11 6B 5C 20 */ ps_merge00 f11, f11, f11
+/* 8027C3C4 00278024 10 C5 20 94 */ ps_sum0 f6, f5, f2, f4
+/* 8027C3C8 00278028 FC E0 30 34 */ frsqrte f7, f6
+/* 8027C3CC 0027802C EC 87 01 F2 */ fmuls f4, f7, f7
+/* 8027C3D0 00278030 EC A7 02 B2 */ fmuls f5, f7, f10
+/* 8027C3D4 00278034 EC 84 49 BC */ fnmsubs f4, f4, f6, f9
+/* 8027C3D8 00278038 EC E4 01 72 */ fmuls f7, f4, f5
+/* 8027C3DC 0027803C 10 63 01 D8 */ ps_muls0 f3, f3, f7
+/* 8027C3E0 00278040 10 42 01 D8 */ ps_muls0 f2, f2, f7
+/* 8027C3E4 00278044 10 C3 00 18 */ ps_muls0 f6, f3, f0
+/* 8027C3E8 00278048 10 E2 00 18 */ ps_muls0 f7, f2, f0
+/* 8027C3EC 0027804C 11 43 03 18 */ ps_muls0 f10, f3, f12
+/* 8027C3F0 00278050 10 A6 00 DA */ ps_muls1 f5, f6, f3
+/* 8027C3F4 00278054 10 86 00 D8 */ ps_muls0 f4, f6, f3
+/* 8027C3F8 00278058 10 C6 00 98 */ ps_muls0 f6, f6, f2
+/* 8027C3FC 0027805C EC 02 2B 3C */ fnmsubs f0, f2, f12, f5
+/* 8027C400 00278060 10 60 50 50 */ ps_neg f3, f10
+/* 8027C404 00278064 ED 02 2B 3A */ fmadds f8, f2, f12, f5
+/* 8027C408 00278068 10 84 58 14 */ ps_sum0 f4, f4, f0, f11
+/* 8027C40C 0027806C 10 03 30 54 */ ps_sum0 f0, f3, f1, f6
+/* 8027C410 00278070 10 E7 00 98 */ ps_muls0 f7, f7, f2
+/* 8027C414 00278074 11 26 50 54 */ ps_sum0 f9, f6, f1, f10
+/* 8027C418 00278078 F0 83 00 00 */ psq_st f4, 0(r3), 0, qr0
+/* 8027C41C 0027807C 10 66 19 94 */ ps_sum0 f3, f6, f6, f3
+/* 8027C420 00278080 10 AB 2A 16 */ ps_sum1 f5, f11, f8, f5
+/* 8027C424 00278084 F0 03 00 18 */ psq_st f0, 24(r3), 0, qr0
+/* 8027C428 00278088 10 E7 58 54 */ ps_sum0 f7, f7, f1, f11
+/* 8027C42C 0027808C 10 CA 30 D6 */ ps_sum1 f6, f10, f3, f6
+/* 8027C430 00278090 F1 23 00 08 */ psq_st f9, 8(r3), 0, qr0
+/* 8027C434 00278094 F0 A3 00 10 */ psq_st f5, 16(r3), 0, qr0
+/* 8027C438 00278098 F0 C3 00 20 */ psq_st f6, 32(r3), 0, qr0
+/* 8027C43C 0027809C F0 E3 00 28 */ psq_st f7, 40(r3), 0, qr0
+/* 8027C440 002780A0 4E 80 00 20 */ blr
+
+.global PSMTXRotAxisRad
+PSMTXRotAxisRad:
+/* 8027C444 002780A4 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 8027C448 002780A8 7C 08 02 A6 */ mflr r0
+/* 8027C44C 002780AC 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8027C450 002780B0 DB E1 00 20 */ stfd f31, 0x20(r1)
+/* 8027C454 002780B4 F3 E1 00 28 */ psq_st f31, 40(r1), 0, qr0
+/* 8027C458 002780B8 DB C1 00 10 */ stfd f30, 0x10(r1)
+/* 8027C45C 002780BC F3 C1 00 18 */ psq_st f30, 24(r1), 0, qr0
+/* 8027C460 002780C0 FF C0 08 90 */ fmr f30, f1
+/* 8027C464 002780C4 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8027C468 002780C8 7C 9F 23 78 */ mr r31, r4
+/* 8027C46C 002780CC 93 C1 00 08 */ stw r30, 8(r1)
+/* 8027C470 002780D0 7C 7E 1B 78 */ mr r30, r3
+/* 8027C474 002780D4 4B F5 80 11 */ bl sin
+/* 8027C478 002780D8 FF E0 08 18 */ frsp f31, f1
+/* 8027C47C 002780DC FC 20 F0 90 */ fmr f1, f30
+/* 8027C480 002780E0 4B F5 7B F9 */ bl cos
+/* 8027C484 002780E4 FC 40 08 18 */ frsp f2, f1
+/* 8027C488 002780E8 7F C3 F3 78 */ mr r3, r30
+/* 8027C48C 002780EC FC 20 F8 90 */ fmr f1, f31
+/* 8027C490 002780F0 7F E4 FB 78 */ mr r4, r31
+/* 8027C494 002780F4 4B FF FF 01 */ bl __PSMTXRotAxisRadInternal
+/* 8027C498 002780F8 E3 E1 00 28 */ psq_l f31, 40(r1), 0, qr0
+/* 8027C49C 002780FC CB E1 00 20 */ lfd f31, 0x20(r1)
+/* 8027C4A0 00278100 E3 C1 00 18 */ psq_l f30, 24(r1), 0, qr0
+/* 8027C4A4 00278104 CB C1 00 10 */ lfd f30, 0x10(r1)
+/* 8027C4A8 00278108 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8027C4AC 0027810C 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8027C4B0 00278110 83 C1 00 08 */ lwz r30, 8(r1)
+/* 8027C4B4 00278114 7C 08 03 A6 */ mtlr r0
+/* 8027C4B8 00278118 38 21 00 30 */ addi r1, r1, 0x30
+/* 8027C4BC 0027811C 4E 80 00 20 */ blr
+
+.global PSMTXTrans
+PSMTXTrans:
+/* 8027C4C0 00278120 C0 02 A0 74 */ lfs f0, lbl_80642674-_SDA2_BASE_(r2)
+/* 8027C4C4 00278124 C0 82 A0 70 */ lfs f4, lbl_80642670-_SDA2_BASE_(r2)
+/* 8027C4C8 00278128 D0 23 00 0C */ stfs f1, 0xc(r3)
+/* 8027C4CC 0027812C D0 43 00 1C */ stfs f2, 0x1c(r3)
+/* 8027C4D0 00278130 F0 03 00 04 */ psq_st f0, 4(r3), 0, qr0
+/* 8027C4D4 00278134 F0 03 00 20 */ psq_st f0, 32(r3), 0, qr0
+/* 8027C4D8 00278138 D0 03 00 10 */ stfs f0, 0x10(r3)
+/* 8027C4DC 0027813C D0 83 00 14 */ stfs f4, 0x14(r3)
+/* 8027C4E0 00278140 D0 03 00 18 */ stfs f0, 0x18(r3)
+/* 8027C4E4 00278144 D0 83 00 28 */ stfs f4, 0x28(r3)
+/* 8027C4E8 00278148 D0 63 00 2C */ stfs f3, 0x2c(r3)
+/* 8027C4EC 0027814C D0 83 00 00 */ stfs f4, 0(r3)
+/* 8027C4F0 00278150 4E 80 00 20 */ blr
+
+.global PSMTXTransApply
+PSMTXTransApply:
+/* 8027C4F4 00278154 E0 83 00 00 */ psq_l f4, 0(r3), 0, qr0
+/* 8027C4F8 00278158 FC 20 08 18 */ frsp f1, f1
+/* 8027C4FC 0027815C E0 A3 00 08 */ psq_l f5, 8(r3), 0, qr0
+/* 8027C500 00278160 FC 40 10 18 */ frsp f2, f2
+/* 8027C504 00278164 E0 E3 00 18 */ psq_l f7, 24(r3), 0, qr0
+/* 8027C508 00278168 FC 60 18 18 */ frsp f3, f3
+/* 8027C50C 0027816C E1 03 00 28 */ psq_l f8, 40(r3), 0, qr0
+/* 8027C510 00278170 F0 84 00 00 */ psq_st f4, 0(r4), 0, qr0
+/* 8027C514 00278174 10 A1 29 56 */ ps_sum1 f5, f1, f5, f5
+/* 8027C518 00278178 E0 C3 00 10 */ psq_l f6, 16(r3), 0, qr0
+/* 8027C51C 0027817C F0 A4 00 08 */ psq_st f5, 8(r4), 0, qr0
+/* 8027C520 00278180 10 E2 39 D6 */ ps_sum1 f7, f2, f7, f7
+/* 8027C524 00278184 E1 23 00 20 */ psq_l f9, 32(r3), 0, qr0
+/* 8027C528 00278188 F0 C4 00 10 */ psq_st f6, 16(r4), 0, qr0
+/* 8027C52C 0027818C 11 03 42 16 */ ps_sum1 f8, f3, f8, f8
+/* 8027C530 00278190 F0 E4 00 18 */ psq_st f7, 24(r4), 0, qr0
+/* 8027C534 00278194 F1 24 00 20 */ psq_st f9, 32(r4), 0, qr0
+/* 8027C538 00278198 F1 04 00 28 */ psq_st f8, 40(r4), 0, qr0
+/* 8027C53C 0027819C 4E 80 00 20 */ blr
+
+.global PSMTXScale
+PSMTXScale:
+/* 8027C540 002781A0 C0 02 A0 74 */ lfs f0, lbl_80642674-_SDA2_BASE_(r2)
+/* 8027C544 002781A4 D0 23 00 00 */ stfs f1, 0(r3)
+/* 8027C548 002781A8 F0 03 00 04 */ psq_st f0, 4(r3), 0, qr0
+/* 8027C54C 002781AC F0 03 00 0C */ psq_st f0, 12(r3), 0, qr0
+/* 8027C550 002781B0 D0 43 00 14 */ stfs f2, 0x14(r3)
+/* 8027C554 002781B4 F0 03 00 18 */ psq_st f0, 24(r3), 0, qr0
+/* 8027C558 002781B8 F0 03 00 20 */ psq_st f0, 32(r3), 0, qr0
+/* 8027C55C 002781BC D0 63 00 28 */ stfs f3, 0x28(r3)
+/* 8027C560 002781C0 D0 03 00 2C */ stfs f0, 0x2c(r3)
+/* 8027C564 002781C4 4E 80 00 20 */ blr
+
+.global PSMTXScaleApply
+PSMTXScaleApply:
+/* 8027C568 002781C8 FC 20 08 18 */ frsp f1, f1
+/* 8027C56C 002781CC E0 83 00 00 */ psq_l f4, 0(r3), 0, qr0
+/* 8027C570 002781D0 FC 40 10 18 */ frsp f2, f2
+/* 8027C574 002781D4 E0 A3 00 08 */ psq_l f5, 8(r3), 0, qr0
+/* 8027C578 002781D8 FC 60 18 18 */ frsp f3, f3
+/* 8027C57C 002781DC 10 84 00 58 */ ps_muls0 f4, f4, f1
+/* 8027C580 002781E0 E0 C3 00 10 */ psq_l f6, 16(r3), 0, qr0
+/* 8027C584 002781E4 10 A5 00 58 */ ps_muls0 f5, f5, f1
+/* 8027C588 002781E8 E0 E3 00 18 */ psq_l f7, 24(r3), 0, qr0
+/* 8027C58C 002781EC 10 C6 00 98 */ ps_muls0 f6, f6, f2
+/* 8027C590 002781F0 E1 03 00 20 */ psq_l f8, 32(r3), 0, qr0
+/* 8027C594 002781F4 F0 84 00 00 */ psq_st f4, 0(r4), 0, qr0
+/* 8027C598 002781F8 10 E7 00 98 */ ps_muls0 f7, f7, f2
+/* 8027C59C 002781FC E0 43 00 28 */ psq_l f2, 40(r3), 0, qr0
+/* 8027C5A0 00278200 F0 A4 00 08 */ psq_st f5, 8(r4), 0, qr0
+/* 8027C5A4 00278204 11 08 00 D8 */ ps_muls0 f8, f8, f3
+/* 8027C5A8 00278208 F0 C4 00 10 */ psq_st f6, 16(r4), 0, qr0
+/* 8027C5AC 0027820C 10 42 00 D8 */ ps_muls0 f2, f2, f3
+/* 8027C5B0 00278210 F0 E4 00 18 */ psq_st f7, 24(r4), 0, qr0
+/* 8027C5B4 00278214 F1 04 00 20 */ psq_st f8, 32(r4), 0, qr0
+/* 8027C5B8 00278218 F0 44 00 28 */ psq_st f2, 40(r4), 0, qr0
+/* 8027C5BC 0027821C 4E 80 00 20 */ blr
+
+.global PSMTXQuat
+PSMTXQuat:
+/* 8027C5C0 00278220 E0 84 00 00 */ psq_l f4, 0(r4), 0, qr0
+/* 8027C5C4 00278224 E0 A4 00 08 */ psq_l f5, 8(r4), 0, qr0
+/* 8027C5C8 00278228 10 C4 01 32 */ ps_mul f6, f4, f4
+/* 8027C5CC 0027822C C0 22 A0 70 */ lfs f1, lbl_80642670-_SDA2_BASE_(r2)
+/* 8027C5D0 00278230 11 24 24 A0 */ ps_merge10 f9, f4, f4
+/* 8027C5D4 00278234 EC 01 08 28 */ fsubs f0, f1, f1
+/* 8027C5D8 00278238 11 05 31 7A */ ps_madd f8, f5, f5, f6
+/* 8027C5DC 0027823C 11 45 01 5A */ ps_muls1 f10, f5, f5
+/* 8027C5E0 00278240 EC 41 08 2A */ fadds f2, f1, f1
+/* 8027C5E4 00278244 F0 03 80 0C */ psq_st f0, 12(r3), 1, qr0
+/* 8027C5E8 00278248 10 68 42 14 */ ps_sum0 f3, f8, f8, f8
+/* 8027C5EC 0027824C 10 E5 01 72 */ ps_mul f7, f5, f5
+/* 8027C5F0 00278250 F0 03 80 2C */ psq_st f0, 44(r3), 1, qr0
+/* 8027C5F4 00278254 11 84 52 7A */ ps_madd f12, f4, f9, f10
+/* 8027C5F8 00278258 ED A0 18 30 */ fres f13, f3
+/* 8027C5FC 0027825C 10 63 13 7C */ ps_nmsub f3, f3, f13, f2
+/* 8027C600 00278260 11 69 01 5A */ ps_muls1 f11, f9, f5
+/* 8027C604 00278264 11 44 52 78 */ ps_msub f10, f4, f9, f10
+/* 8027C608 00278268 10 6D 00 F2 */ ps_mul f3, f13, f3
+/* 8027C60C 0027826C 11 24 59 5C */ ps_madds0 f9, f4, f5, f11
+/* 8027C610 00278270 11 07 32 16 */ ps_sum1 f8, f7, f8, f6
+/* 8027C614 00278274 EC 63 00 B2 */ fmuls f3, f3, f2
+/* 8027C618 00278278 11 6B 48 BC */ ps_nmsub f11, f11, f2, f9
+/* 8027C61C 0027827C 10 C6 31 94 */ ps_sum0 f6, f6, f6, f6
+/* 8027C620 00278280 11 29 00 F2 */ ps_mul f9, f9, f3
+/* 8027C624 00278284 11 6B 00 F2 */ ps_mul f11, f11, f3
+/* 8027C628 00278288 11 08 08 FC */ ps_nmsub f8, f8, f3, f1
+/* 8027C62C 0027828C 11 8C 00 F2 */ ps_mul f12, f12, f3
+/* 8027C630 00278290 F1 23 80 08 */ psq_st f9, 8(r3), 1, qr0
+/* 8027C634 00278294 11 4A 00 F2 */ ps_mul f10, f10, f3
+/* 8027C638 00278298 10 EB 04 A0 */ ps_merge10 f7, f11, f0
+/* 8027C63C 0027829C 10 AC 44 20 */ ps_merge00 f5, f12, f8
+/* 8027C640 002782A0 10 88 54 A0 */ ps_merge10 f4, f8, f10
+/* 8027C644 002782A4 11 AB 4C 60 */ ps_merge01 f13, f11, f9
+/* 8027C648 002782A8 F0 E3 00 18 */ psq_st f7, 24(r3), 0, qr0
+/* 8027C64C 002782AC 10 C6 08 FC */ ps_nmsub f6, f6, f3, f1
+/* 8027C650 002782B0 F0 A3 00 10 */ psq_st f5, 16(r3), 0, qr0
+/* 8027C654 002782B4 F0 C3 80 28 */ psq_st f6, 40(r3), 1, qr0
+/* 8027C658 002782B8 F0 83 00 00 */ psq_st f4, 0(r3), 0, qr0
+/* 8027C65C 002782BC F1 A3 00 20 */ psq_st f13, 32(r3), 0, qr0
+/* 8027C660 002782C0 4E 80 00 20 */ blr
+
+.global C_MTXLookAt
+C_MTXLookAt:
+/* 8027C664 002782C4 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 8027C668 002782C8 7C 08 02 A6 */ mflr r0
+/* 8027C66C 002782CC C0 24 00 00 */ lfs f1, 0(r4)
+/* 8027C670 002782D0 90 01 00 44 */ stw r0, 0x44(r1)
+/* 8027C674 002782D4 C0 06 00 00 */ lfs f0, 0(r6)
+/* 8027C678 002782D8 93 E1 00 3C */ stw r31, 0x3c(r1)
+/* 8027C67C 002782DC 7C BF 2B 78 */ mr r31, r5
+/* 8027C680 002782E0 EC 81 00 28 */ fsubs f4, f1, f0
+/* 8027C684 002782E4 C0 64 00 04 */ lfs f3, 4(r4)
+/* 8027C688 002782E8 93 C1 00 38 */ stw r30, 0x38(r1)
+/* 8027C68C 002782EC 7C 9E 23 78 */ mr r30, r4
+/* 8027C690 002782F0 C0 46 00 04 */ lfs f2, 4(r6)
+/* 8027C694 002782F4 93 A1 00 34 */ stw r29, 0x34(r1)
+/* 8027C698 002782F8 EC 43 10 28 */ fsubs f2, f3, f2
+/* 8027C69C 002782FC C0 24 00 08 */ lfs f1, 8(r4)
+/* 8027C6A0 00278300 C0 06 00 08 */ lfs f0, 8(r6)
+/* 8027C6A4 00278304 7C 7D 1B 78 */ mr r29, r3
+/* 8027C6A8 00278308 38 61 00 20 */ addi r3, r1, 0x20
+/* 8027C6AC 0027830C D0 81 00 20 */ stfs f4, 0x20(r1)
+/* 8027C6B0 00278310 EC 01 00 28 */ fsubs f0, f1, f0
+/* 8027C6B4 00278314 D0 41 00 24 */ stfs f2, 0x24(r1)
+/* 8027C6B8 00278318 7C 64 1B 78 */ mr r4, r3
+/* 8027C6BC 0027831C D0 01 00 28 */ stfs f0, 0x28(r1)
+/* 8027C6C0 00278320 48 00 06 69 */ bl PSVECNormalize
+/* 8027C6C4 00278324 7F E3 FB 78 */ mr r3, r31
+/* 8027C6C8 00278328 38 81 00 20 */ addi r4, r1, 0x20
+/* 8027C6CC 0027832C 38 A1 00 14 */ addi r5, r1, 0x14
+/* 8027C6D0 00278330 48 00 07 19 */ bl PSVECCrossProduct
+/* 8027C6D4 00278334 38 61 00 14 */ addi r3, r1, 0x14
+/* 8027C6D8 00278338 7C 64 1B 78 */ mr r4, r3
+/* 8027C6DC 0027833C 48 00 06 4D */ bl PSVECNormalize
+/* 8027C6E0 00278340 38 61 00 20 */ addi r3, r1, 0x20
+/* 8027C6E4 00278344 38 81 00 14 */ addi r4, r1, 0x14
+/* 8027C6E8 00278348 38 A1 00 08 */ addi r5, r1, 8
+/* 8027C6EC 0027834C 48 00 06 FD */ bl PSVECCrossProduct
+/* 8027C6F0 00278350 C0 01 00 14 */ lfs f0, 0x14(r1)
+/* 8027C6F4 00278354 C0 9E 00 00 */ lfs f4, 0(r30)
+/* 8027C6F8 00278358 D0 1D 00 00 */ stfs f0, 0(r29)
+/* 8027C6FC 0027835C C0 7E 00 04 */ lfs f3, 4(r30)
+/* 8027C700 00278360 C0 01 00 18 */ lfs f0, 0x18(r1)
+/* 8027C704 00278364 C0 BE 00 08 */ lfs f5, 8(r30)
+/* 8027C708 00278368 D0 1D 00 04 */ stfs f0, 4(r29)
+/* 8027C70C 0027836C C0 01 00 1C */ lfs f0, 0x1c(r1)
+/* 8027C710 00278370 D0 1D 00 08 */ stfs f0, 8(r29)
+/* 8027C714 00278374 C0 21 00 14 */ lfs f1, 0x14(r1)
+/* 8027C718 00278378 C0 01 00 18 */ lfs f0, 0x18(r1)
+/* 8027C71C 0027837C EC 24 00 72 */ fmuls f1, f4, f1
+/* 8027C720 00278380 C0 41 00 1C */ lfs f2, 0x1c(r1)
+/* 8027C724 00278384 EC 03 00 32 */ fmuls f0, f3, f0
+/* 8027C728 00278388 EC 45 00 B2 */ fmuls f2, f5, f2
+/* 8027C72C 0027838C EC 01 00 2A */ fadds f0, f1, f0
+/* 8027C730 00278390 EC 02 00 2A */ fadds f0, f2, f0
+/* 8027C734 00278394 FC 00 00 50 */ fneg f0, f0
+/* 8027C738 00278398 D0 1D 00 0C */ stfs f0, 0xc(r29)
+/* 8027C73C 0027839C C0 01 00 08 */ lfs f0, 8(r1)
+/* 8027C740 002783A0 D0 1D 00 10 */ stfs f0, 0x10(r29)
+/* 8027C744 002783A4 C0 01 00 0C */ lfs f0, 0xc(r1)
+/* 8027C748 002783A8 D0 1D 00 14 */ stfs f0, 0x14(r29)
+/* 8027C74C 002783AC C0 01 00 10 */ lfs f0, 0x10(r1)
+/* 8027C750 002783B0 D0 1D 00 18 */ stfs f0, 0x18(r29)
+/* 8027C754 002783B4 C0 21 00 08 */ lfs f1, 8(r1)
+/* 8027C758 002783B8 C0 01 00 0C */ lfs f0, 0xc(r1)
+/* 8027C75C 002783BC C0 41 00 10 */ lfs f2, 0x10(r1)
+/* 8027C760 002783C0 EC 24 00 72 */ fmuls f1, f4, f1
+/* 8027C764 002783C4 EC 03 00 32 */ fmuls f0, f3, f0
+/* 8027C768 002783C8 EC 45 00 B2 */ fmuls f2, f5, f2
+/* 8027C76C 002783CC EC 01 00 2A */ fadds f0, f1, f0
+/* 8027C770 002783D0 EC 02 00 2A */ fadds f0, f2, f0
+/* 8027C774 002783D4 FC 00 00 50 */ fneg f0, f0
+/* 8027C778 002783D8 D0 1D 00 1C */ stfs f0, 0x1c(r29)
+/* 8027C77C 002783DC C0 01 00 20 */ lfs f0, 0x20(r1)
+/* 8027C780 002783E0 D0 1D 00 20 */ stfs f0, 0x20(r29)
+/* 8027C784 002783E4 C0 01 00 24 */ lfs f0, 0x24(r1)
+/* 8027C788 002783E8 D0 1D 00 24 */ stfs f0, 0x24(r29)
+/* 8027C78C 002783EC C0 01 00 28 */ lfs f0, 0x28(r1)
+/* 8027C790 002783F0 D0 1D 00 28 */ stfs f0, 0x28(r29)
+/* 8027C794 002783F4 C0 21 00 20 */ lfs f1, 0x20(r1)
+/* 8027C798 002783F8 C0 01 00 24 */ lfs f0, 0x24(r1)
+/* 8027C79C 002783FC C0 41 00 28 */ lfs f2, 0x28(r1)
+/* 8027C7A0 00278400 EC 24 00 72 */ fmuls f1, f4, f1
+/* 8027C7A4 00278404 EC 03 00 32 */ fmuls f0, f3, f0
+/* 8027C7A8 00278408 EC 45 00 B2 */ fmuls f2, f5, f2
+/* 8027C7AC 0027840C EC 01 00 2A */ fadds f0, f1, f0
+/* 8027C7B0 00278410 EC 02 00 2A */ fadds f0, f2, f0
+/* 8027C7B4 00278414 FC 00 00 50 */ fneg f0, f0
+/* 8027C7B8 00278418 D0 1D 00 2C */ stfs f0, 0x2c(r29)
+/* 8027C7BC 0027841C 83 E1 00 3C */ lwz r31, 0x3c(r1)
+/* 8027C7C0 00278420 83 C1 00 38 */ lwz r30, 0x38(r1)
+/* 8027C7C4 00278424 83 A1 00 34 */ lwz r29, 0x34(r1)
+/* 8027C7C8 00278428 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 8027C7CC 0027842C 7C 08 03 A6 */ mtlr r0
+/* 8027C7D0 00278430 38 21 00 40 */ addi r1, r1, 0x40
+/* 8027C7D4 00278434 4E 80 00 20 */ blr
+
+.global C_MTXLightFrustum
+C_MTXLightFrustum:
+/* 8027C7D8 00278438 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8027C7DC 0027843C DB E1 00 10 */ stfd f31, 0x10(r1)
+/* 8027C7E0 00278440 F3 E1 00 18 */ psq_st f31, 24(r1), 0, qr0
+/* 8027C7E4 00278444 EC 04 18 28 */ fsubs f0, f4, f3
+/* 8027C7E8 00278448 C1 42 A0 74 */ lfs f10, lbl_80642674-_SDA2_BASE_(r2)
+/* 8027C7EC 0027844C C1 82 A0 70 */ lfs f12, lbl_80642670-_SDA2_BASE_(r2)
+/* 8027C7F0 00278450 ED 21 10 28 */ fsubs f9, f1, f2
+/* 8027C7F4 00278454 C1 62 A0 80 */ lfs f11, lbl_80642680-_SDA2_BASE_(r2)
+/* 8027C7F8 00278458 EC 64 18 2A */ fadds f3, f4, f3
+/* 8027C7FC 0027845C ED AC 00 24 */ fdivs f13, f12, f0
+/* 8027C800 00278460 C0 02 A0 84 */ lfs f0, lbl_80642684-_SDA2_BASE_(r2)
+/* 8027C804 00278464 C3 E1 00 28 */ lfs f31, 0x28(r1)
+/* 8027C808 00278468 D0 03 00 28 */ stfs f0, 0x28(r3)
+/* 8027C80C 0027846C D1 43 00 04 */ stfs f10, 4(r3)
+/* 8027C810 00278470 D1 43 00 0C */ stfs f10, 0xc(r3)
+/* 8027C814 00278474 EC 8B 01 72 */ fmuls f4, f11, f5
+/* 8027C818 00278478 D1 43 00 10 */ stfs f10, 0x10(r3)
+/* 8027C81C 0027847C EC 01 10 2A */ fadds f0, f1, f2
+/* 8027C820 00278480 EC 2D 00 F2 */ fmuls f1, f13, f3
+/* 8027C824 00278484 D1 43 00 1C */ stfs f10, 0x1c(r3)
+/* 8027C828 00278488 EC AC 48 24 */ fdivs f5, f12, f9
+/* 8027C82C 0027848C D1 43 00 20 */ stfs f10, 0x20(r3)
+/* 8027C830 00278490 D1 43 00 24 */ stfs f10, 0x24(r3)
+/* 8027C834 00278494 D1 43 00 2C */ stfs f10, 0x2c(r3)
+/* 8027C838 00278498 EC 46 00 72 */ fmuls f2, f6, f1
+/* 8027C83C 0027849C EC 05 00 32 */ fmuls f0, f5, f0
+/* 8027C840 002784A0 EC 64 03 72 */ fmuls f3, f4, f13
+/* 8027C844 002784A4 EC 24 01 72 */ fmuls f1, f4, f5
+/* 8027C848 002784A8 EC 07 00 32 */ fmuls f0, f7, f0
+/* 8027C84C 002784AC EC 66 00 F2 */ fmuls f3, f6, f3
+/* 8027C850 002784B0 EC 42 40 28 */ fsubs f2, f2, f8
+/* 8027C854 002784B4 EC 27 00 72 */ fmuls f1, f7, f1
+/* 8027C858 002784B8 EC 00 F8 28 */ fsubs f0, f0, f31
+/* 8027C85C 002784BC D0 63 00 00 */ stfs f3, 0(r3)
+/* 8027C860 002784C0 D0 43 00 08 */ stfs f2, 8(r3)
+/* 8027C864 002784C4 D0 23 00 14 */ stfs f1, 0x14(r3)
+/* 8027C868 002784C8 D0 03 00 18 */ stfs f0, 0x18(r3)
+/* 8027C86C 002784CC E3 E1 00 18 */ psq_l f31, 24(r1), 0, qr0
+/* 8027C870 002784D0 CB E1 00 10 */ lfd f31, 0x10(r1)
+/* 8027C874 002784D4 38 21 00 20 */ addi r1, r1, 0x20
+/* 8027C878 002784D8 4E 80 00 20 */ blr
+
+.global C_MTXLightPerspective
+C_MTXLightPerspective:
+/* 8027C87C 002784DC 94 21 FF A0 */ stwu r1, -0x60(r1)
+/* 8027C880 002784E0 7C 08 02 A6 */ mflr r0
+/* 8027C884 002784E4 90 01 00 64 */ stw r0, 0x64(r1)
+/* 8027C888 002784E8 DB E1 00 50 */ stfd f31, 0x50(r1)
+/* 8027C88C 002784EC F3 E1 00 58 */ psq_st f31, 88(r1), 0, qr0
+/* 8027C890 002784F0 DB C1 00 40 */ stfd f30, 0x40(r1)
+/* 8027C894 002784F4 F3 C1 00 48 */ psq_st f30, 72(r1), 0, qr0
+/* 8027C898 002784F8 DB A1 00 30 */ stfd f29, 0x30(r1)
+/* 8027C89C 002784FC F3 A1 00 38 */ psq_st f29, 56(r1), 0, qr0
+/* 8027C8A0 00278500 DB 81 00 20 */ stfd f28, 0x20(r1)
+/* 8027C8A4 00278504 F3 81 00 28 */ psq_st f28, 40(r1), 0, qr0
+/* 8027C8A8 00278508 DB 61 00 10 */ stfd f27, 0x10(r1)
+/* 8027C8AC 0027850C F3 61 00 18 */ psq_st f27, 24(r1), 0, qr0
+/* 8027C8B0 00278510 FF 60 10 90 */ fmr f27, f2
+/* 8027C8B4 00278514 C0 E2 A0 78 */ lfs f7, lbl_80642678-_SDA2_BASE_(r2)
+/* 8027C8B8 00278518 FF 80 18 90 */ fmr f28, f3
+/* 8027C8BC 0027851C 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8027C8C0 00278520 FF A0 20 90 */ fmr f29, f4
+/* 8027C8C4 00278524 EC 27 00 72 */ fmuls f1, f7, f1
+/* 8027C8C8 00278528 C0 02 A0 88 */ lfs f0, lbl_80642688-_SDA2_BASE_(r2)
+/* 8027C8CC 0027852C FF C0 28 90 */ fmr f30, f5
+/* 8027C8D0 00278530 FF E0 30 90 */ fmr f31, f6
+/* 8027C8D4 00278534 7C 7F 1B 78 */ mr r31, r3
+/* 8027C8D8 00278538 EC 20 00 72 */ fmuls f1, f0, f1
+/* 8027C8DC 0027853C 4B F5 7C 81 */ bl tan
+/* 8027C8E0 00278540 FC A0 08 18 */ frsp f5, f1
+/* 8027C8E4 00278544 C0 62 A0 74 */ lfs f3, lbl_80642674-_SDA2_BASE_(r2)
+/* 8027C8E8 00278548 C0 82 A0 70 */ lfs f4, lbl_80642670-_SDA2_BASE_(r2)
+/* 8027C8EC 0027854C FC 20 F8 50 */ fneg f1, f31
+/* 8027C8F0 00278550 C0 02 A0 84 */ lfs f0, lbl_80642684-_SDA2_BASE_(r2)
+/* 8027C8F4 00278554 FC 40 F0 50 */ fneg f2, f30
+/* 8027C8F8 00278558 EC 84 28 24 */ fdivs f4, f4, f5
+/* 8027C8FC 0027855C D0 3F 00 18 */ stfs f1, 0x18(r31)
+/* 8027C900 00278560 D0 1F 00 28 */ stfs f0, 0x28(r31)
+/* 8027C904 00278564 D0 7F 00 04 */ stfs f3, 4(r31)
+/* 8027C908 00278568 D0 5F 00 08 */ stfs f2, 8(r31)
+/* 8027C90C 0027856C D0 7F 00 0C */ stfs f3, 0xc(r31)
+/* 8027C910 00278570 EC 24 D8 24 */ fdivs f1, f4, f27
+/* 8027C914 00278574 D0 7F 00 10 */ stfs f3, 0x10(r31)
+/* 8027C918 00278578 D0 7F 00 1C */ stfs f3, 0x1c(r31)
+/* 8027C91C 0027857C D0 7F 00 20 */ stfs f3, 0x20(r31)
+/* 8027C920 00278580 D0 7F 00 24 */ stfs f3, 0x24(r31)
+/* 8027C924 00278584 D0 7F 00 2C */ stfs f3, 0x2c(r31)
+/* 8027C928 00278588 EC 3C 00 72 */ fmuls f1, f28, f1
+/* 8027C92C 0027858C EC 04 07 72 */ fmuls f0, f4, f29
+/* 8027C930 00278590 D0 3F 00 00 */ stfs f1, 0(r31)
+/* 8027C934 00278594 D0 1F 00 14 */ stfs f0, 0x14(r31)
+/* 8027C938 00278598 E3 E1 00 58 */ psq_l f31, 88(r1), 0, qr0
+/* 8027C93C 0027859C CB E1 00 50 */ lfd f31, 0x50(r1)
+/* 8027C940 002785A0 E3 C1 00 48 */ psq_l f30, 72(r1), 0, qr0
+/* 8027C944 002785A4 CB C1 00 40 */ lfd f30, 0x40(r1)
+/* 8027C948 002785A8 E3 A1 00 38 */ psq_l f29, 56(r1), 0, qr0
+/* 8027C94C 002785AC CB A1 00 30 */ lfd f29, 0x30(r1)
+/* 8027C950 002785B0 E3 81 00 28 */ psq_l f28, 40(r1), 0, qr0
+/* 8027C954 002785B4 CB 81 00 20 */ lfd f28, 0x20(r1)
+/* 8027C958 002785B8 E3 61 00 18 */ psq_l f27, 24(r1), 0, qr0
+/* 8027C95C 002785BC CB 61 00 10 */ lfd f27, 0x10(r1)
+/* 8027C960 002785C0 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8027C964 002785C4 80 01 00 64 */ lwz r0, 0x64(r1)
+/* 8027C968 002785C8 7C 08 03 A6 */ mtlr r0
+/* 8027C96C 002785CC 38 21 00 60 */ addi r1, r1, 0x60
+/* 8027C970 002785D0 4E 80 00 20 */ blr
+
+.global C_MTXLightOrtho
+C_MTXLightOrtho:
+/* 8027C974 002785D4 ED 64 18 28 */ fsubs f11, f4, f3
+/* 8027C978 002785D8 C1 22 A0 74 */ lfs f9, lbl_80642674-_SDA2_BASE_(r2)
+/* 8027C97C 002785DC C1 42 A0 70 */ lfs f10, lbl_80642670-_SDA2_BASE_(r2)
+/* 8027C980 002785E0 EC 01 10 28 */ fsubs f0, f1, f2
+/* 8027C984 002785E4 EC 64 18 2A */ fadds f3, f4, f3
+/* 8027C988 002785E8 C0 82 A0 80 */ lfs f4, lbl_80642680-_SDA2_BASE_(r2)
+/* 8027C98C 002785EC ED 8A 58 24 */ fdivs f12, f10, f11
+/* 8027C990 002785F0 D1 23 00 04 */ stfs f9, 4(r3)
+/* 8027C994 002785F4 D1 23 00 08 */ stfs f9, 8(r3)
+/* 8027C998 002785F8 D1 23 00 10 */ stfs f9, 0x10(r3)
+/* 8027C99C 002785FC D1 23 00 18 */ stfs f9, 0x18(r3)
+/* 8027C9A0 00278600 D1 23 00 20 */ stfs f9, 0x20(r3)
+/* 8027C9A4 00278604 ED 6A 00 24 */ fdivs f11, f10, f0
+/* 8027C9A8 00278608 D1 23 00 24 */ stfs f9, 0x24(r3)
+/* 8027C9AC 0027860C D1 23 00 28 */ stfs f9, 0x28(r3)
+/* 8027C9B0 00278610 D1 43 00 2C */ stfs f10, 0x2c(r3)
+/* 8027C9B4 00278614 EC 01 10 2A */ fadds f0, f1, f2
+/* 8027C9B8 00278618 FC 20 18 50 */ fneg f1, f3
+/* 8027C9BC 0027861C EC 64 03 32 */ fmuls f3, f4, f12
+/* 8027C9C0 00278620 FC 00 00 50 */ fneg f0, f0
+/* 8027C9C4 00278624 EC 4C 00 72 */ fmuls f2, f12, f1
+/* 8027C9C8 00278628 EC 24 02 F2 */ fmuls f1, f4, f11
+/* 8027C9CC 0027862C EC 0B 00 32 */ fmuls f0, f11, f0
+/* 8027C9D0 00278630 EC 45 00 B2 */ fmuls f2, f5, f2
+/* 8027C9D4 00278634 EC 63 01 72 */ fmuls f3, f3, f5
+/* 8027C9D8 00278638 EC 06 00 32 */ fmuls f0, f6, f0
+/* 8027C9DC 0027863C EC 47 10 2A */ fadds f2, f7, f2
+/* 8027C9E0 00278640 EC 21 01 B2 */ fmuls f1, f1, f6
+/* 8027C9E4 00278644 D0 63 00 00 */ stfs f3, 0(r3)
+/* 8027C9E8 00278648 EC 08 00 2A */ fadds f0, f8, f0
+/* 8027C9EC 0027864C D0 43 00 0C */ stfs f2, 0xc(r3)
+/* 8027C9F0 00278650 D0 23 00 14 */ stfs f1, 0x14(r3)
+/* 8027C9F4 00278654 D0 03 00 1C */ stfs f0, 0x1c(r3)
+/* 8027C9F8 00278658 4E 80 00 20 */ blr
diff --git a/asm/SDK/MTX/mtx44.s b/asm/SDK/MTX/mtx44.s
new file mode 100644
index 0000000..578f1d8
--- /dev/null
+++ b/asm/SDK/MTX/mtx44.s
@@ -0,0 +1,148 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global C_MTXFrustum
+C_MTXFrustum:
+/* 8027CAA4 00278704 EC 04 18 28 */ fsubs f0, f4, f3
+/* 8027CAA8 00278708 C1 22 A0 98 */ lfs f9, lbl_80642698-_SDA2_BASE_(r2)
+/* 8027CAAC 0027870C C1 62 A0 90 */ lfs f11, lbl_80642690-_SDA2_BASE_(r2)
+/* 8027CAB0 00278710 ED 01 10 28 */ fsubs f8, f1, f2
+/* 8027CAB4 00278714 EC E6 28 28 */ fsubs f7, f6, f5
+/* 8027CAB8 00278718 C1 42 A0 94 */ lfs f10, lbl_80642694-_SDA2_BASE_(r2)
+/* 8027CABC 0027871C ED 8B 00 24 */ fdivs f12, f11, f0
+/* 8027CAC0 00278720 C0 02 A0 9C */ lfs f0, lbl_8064269C-_SDA2_BASE_(r2)
+/* 8027CAC4 00278724 D1 23 00 04 */ stfs f9, 4(r3)
+/* 8027CAC8 00278728 D0 03 00 38 */ stfs f0, 0x38(r3)
+/* 8027CACC 0027872C D1 23 00 0C */ stfs f9, 0xc(r3)
+/* 8027CAD0 00278730 D1 23 00 10 */ stfs f9, 0x10(r3)
+/* 8027CAD4 00278734 ED 0B 40 24 */ fdivs f8, f11, f8
+/* 8027CAD8 00278738 D1 23 00 1C */ stfs f9, 0x1c(r3)
+/* 8027CADC 0027873C D1 23 00 20 */ stfs f9, 0x20(r3)
+/* 8027CAE0 00278740 D1 23 00 24 */ stfs f9, 0x24(r3)
+/* 8027CAE4 00278744 D1 23 00 30 */ stfs f9, 0x30(r3)
+/* 8027CAE8 00278748 D1 23 00 34 */ stfs f9, 0x34(r3)
+/* 8027CAEC 0027874C EC 01 10 2A */ fadds f0, f1, f2
+/* 8027CAF0 00278750 D1 23 00 3C */ stfs f9, 0x3c(r3)
+/* 8027CAF4 00278754 EC 64 18 2A */ fadds f3, f4, f3
+/* 8027CAF8 00278758 ED 4A 01 72 */ fmuls f10, f10, f5
+/* 8027CAFC 0027875C EC 08 00 32 */ fmuls f0, f8, f0
+/* 8027CB00 00278760 EC 4C 00 F2 */ fmuls f2, f12, f3
+/* 8027CB04 00278764 EC 2A 02 32 */ fmuls f1, f10, f8
+/* 8027CB08 00278768 EC 8A 03 32 */ fmuls f4, f10, f12
+/* 8027CB0C 0027876C D0 03 00 18 */ stfs f0, 0x18(r3)
+/* 8027CB10 00278770 EC C6 01 72 */ fmuls f6, f6, f5
+/* 8027CB14 00278774 D0 23 00 14 */ stfs f1, 0x14(r3)
+/* 8027CB18 00278778 EC 6B 38 24 */ fdivs f3, f11, f7
+/* 8027CB1C 0027877C D0 83 00 00 */ stfs f4, 0(r3)
+/* 8027CB20 00278780 D0 43 00 08 */ stfs f2, 8(r3)
+/* 8027CB24 00278784 FC 20 28 50 */ fneg f1, f5
+/* 8027CB28 00278788 FC 00 30 50 */ fneg f0, f6
+/* 8027CB2C 0027878C EC 21 00 F2 */ fmuls f1, f1, f3
+/* 8027CB30 00278790 EC 03 00 32 */ fmuls f0, f3, f0
+/* 8027CB34 00278794 D0 23 00 28 */ stfs f1, 0x28(r3)
+/* 8027CB38 00278798 D0 03 00 2C */ stfs f0, 0x2c(r3)
+/* 8027CB3C 0027879C 4E 80 00 20 */ blr
+
+.global C_MTXPerspective
+C_MTXPerspective:
+/* 8027CB40 002787A0 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 8027CB44 002787A4 7C 08 02 A6 */ mflr r0
+/* 8027CB48 002787A8 90 01 00 44 */ stw r0, 0x44(r1)
+/* 8027CB4C 002787AC DB E1 00 30 */ stfd f31, 0x30(r1)
+/* 8027CB50 002787B0 F3 E1 00 38 */ psq_st f31, 56(r1), 0, qr0
+/* 8027CB54 002787B4 DB C1 00 20 */ stfd f30, 0x20(r1)
+/* 8027CB58 002787B8 F3 C1 00 28 */ psq_st f30, 40(r1), 0, qr0
+/* 8027CB5C 002787BC DB A1 00 10 */ stfd f29, 0x10(r1)
+/* 8027CB60 002787C0 F3 A1 00 18 */ psq_st f29, 24(r1), 0, qr0
+/* 8027CB64 002787C4 FF A0 10 90 */ fmr f29, f2
+/* 8027CB68 002787C8 C0 A2 A0 A0 */ lfs f5, lbl_806426A0-_SDA2_BASE_(r2)
+/* 8027CB6C 002787CC FF C0 18 90 */ fmr f30, f3
+/* 8027CB70 002787D0 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8027CB74 002787D4 FF E0 20 90 */ fmr f31, f4
+/* 8027CB78 002787D8 EC 25 00 72 */ fmuls f1, f5, f1
+/* 8027CB7C 002787DC C0 02 A0 A4 */ lfs f0, lbl_806426A4-_SDA2_BASE_(r2)
+/* 8027CB80 002787E0 7C 7F 1B 78 */ mr r31, r3
+/* 8027CB84 002787E4 EC 20 00 72 */ fmuls f1, f0, f1
+/* 8027CB88 002787E8 4B F5 79 D5 */ bl tan
+/* 8027CB8C 002787EC FC 80 08 18 */ frsp f4, f1
+/* 8027CB90 002787F0 C0 62 A0 98 */ lfs f3, lbl_80642698-_SDA2_BASE_(r2)
+/* 8027CB94 002787F4 C0 A2 A0 90 */ lfs f5, lbl_80642690-_SDA2_BASE_(r2)
+/* 8027CB98 002787F8 EC 5F F0 28 */ fsubs f2, f31, f30
+/* 8027CB9C 002787FC C0 02 A0 9C */ lfs f0, lbl_8064269C-_SDA2_BASE_(r2)
+/* 8027CBA0 00278800 EC 3F 07 B2 */ fmuls f1, f31, f30
+/* 8027CBA4 00278804 EC C5 20 24 */ fdivs f6, f5, f4
+/* 8027CBA8 00278808 D0 1F 00 38 */ stfs f0, 0x38(r31)
+/* 8027CBAC 0027880C D0 7F 00 04 */ stfs f3, 4(r31)
+/* 8027CBB0 00278810 D0 7F 00 08 */ stfs f3, 8(r31)
+/* 8027CBB4 00278814 D0 7F 00 0C */ stfs f3, 0xc(r31)
+/* 8027CBB8 00278818 D0 7F 00 10 */ stfs f3, 0x10(r31)
+/* 8027CBBC 0027881C EC A5 10 24 */ fdivs f5, f5, f2
+/* 8027CBC0 00278820 D0 7F 00 18 */ stfs f3, 0x18(r31)
+/* 8027CBC4 00278824 D0 DF 00 14 */ stfs f6, 0x14(r31)
+/* 8027CBC8 00278828 D0 7F 00 1C */ stfs f3, 0x1c(r31)
+/* 8027CBCC 0027882C D0 7F 00 20 */ stfs f3, 0x20(r31)
+/* 8027CBD0 00278830 D0 7F 00 24 */ stfs f3, 0x24(r31)
+/* 8027CBD4 00278834 EC 86 E8 24 */ fdivs f4, f6, f29
+/* 8027CBD8 00278838 D0 7F 00 30 */ stfs f3, 0x30(r31)
+/* 8027CBDC 0027883C D0 7F 00 34 */ stfs f3, 0x34(r31)
+/* 8027CBE0 00278840 D0 7F 00 3C */ stfs f3, 0x3c(r31)
+/* 8027CBE4 00278844 FC 00 08 50 */ fneg f0, f1
+/* 8027CBE8 00278848 D0 9F 00 00 */ stfs f4, 0(r31)
+/* 8027CBEC 0027884C FC 40 F0 50 */ fneg f2, f30
+/* 8027CBF0 00278850 EC 05 00 32 */ fmuls f0, f5, f0
+/* 8027CBF4 00278854 EC 22 01 72 */ fmuls f1, f2, f5
+/* 8027CBF8 00278858 D0 1F 00 2C */ stfs f0, 0x2c(r31)
+/* 8027CBFC 0027885C D0 3F 00 28 */ stfs f1, 0x28(r31)
+/* 8027CC00 00278860 E3 E1 00 38 */ psq_l f31, 56(r1), 0, qr0
+/* 8027CC04 00278864 CB E1 00 30 */ lfd f31, 0x30(r1)
+/* 8027CC08 00278868 E3 C1 00 28 */ psq_l f30, 40(r1), 0, qr0
+/* 8027CC0C 0027886C CB C1 00 20 */ lfd f30, 0x20(r1)
+/* 8027CC10 00278870 E3 A1 00 18 */ psq_l f29, 24(r1), 0, qr0
+/* 8027CC14 00278874 CB A1 00 10 */ lfd f29, 0x10(r1)
+/* 8027CC18 00278878 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8027CC1C 0027887C 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 8027CC20 00278880 7C 08 03 A6 */ mtlr r0
+/* 8027CC24 00278884 38 21 00 40 */ addi r1, r1, 0x40
+/* 8027CC28 00278888 4E 80 00 20 */ blr
+
+.global C_MTXOrtho
+C_MTXOrtho:
+/* 8027CC2C 0027888C ED 64 18 28 */ fsubs f11, f4, f3
+/* 8027CC30 00278890 C1 02 A0 98 */ lfs f8, lbl_80642698-_SDA2_BASE_(r2)
+/* 8027CC34 00278894 C1 42 A0 90 */ lfs f10, lbl_80642690-_SDA2_BASE_(r2)
+/* 8027CC38 00278898 EC E1 10 28 */ fsubs f7, f1, f2
+/* 8027CC3C 0027889C EC 06 28 28 */ fsubs f0, f6, f5
+/* 8027CC40 002788A0 C1 22 A0 94 */ lfs f9, lbl_80642694-_SDA2_BASE_(r2)
+/* 8027CC44 002788A4 ED 8A 58 24 */ fdivs f12, f10, f11
+/* 8027CC48 002788A8 C0 A2 A0 9C */ lfs f5, lbl_8064269C-_SDA2_BASE_(r2)
+/* 8027CC4C 002788AC D1 03 00 04 */ stfs f8, 4(r3)
+/* 8027CC50 002788B0 D1 03 00 08 */ stfs f8, 8(r3)
+/* 8027CC54 002788B4 D1 03 00 10 */ stfs f8, 0x10(r3)
+/* 8027CC58 002788B8 D1 03 00 18 */ stfs f8, 0x18(r3)
+/* 8027CC5C 002788BC ED 6A 38 24 */ fdivs f11, f10, f7
+/* 8027CC60 002788C0 D1 03 00 20 */ stfs f8, 0x20(r3)
+/* 8027CC64 002788C4 D1 03 00 24 */ stfs f8, 0x24(r3)
+/* 8027CC68 002788C8 D1 03 00 30 */ stfs f8, 0x30(r3)
+/* 8027CC6C 002788CC D1 03 00 34 */ stfs f8, 0x34(r3)
+/* 8027CC70 002788D0 D1 03 00 38 */ stfs f8, 0x38(r3)
+/* 8027CC74 002788D4 EC EA 00 24 */ fdivs f7, f10, f0
+/* 8027CC78 002788D8 D1 43 00 3C */ stfs f10, 0x3c(r3)
+/* 8027CC7C 002788DC FC 00 30 50 */ fneg f0, f6
+/* 8027CC80 002788E0 EC 21 10 2A */ fadds f1, f1, f2
+/* 8027CC84 002788E4 EC 64 18 2A */ fadds f3, f4, f3
+/* 8027CC88 002788E8 EC C9 03 32 */ fmuls f6, f9, f12
+/* 8027CC8C 002788EC EC 00 01 F2 */ fmuls f0, f0, f7
+/* 8027CC90 002788F0 FC 40 18 50 */ fneg f2, f3
+/* 8027CC94 002788F4 EC 69 02 F2 */ fmuls f3, f9, f11
+/* 8027CC98 002788F8 D0 C3 00 00 */ stfs f6, 0(r3)
+/* 8027CC9C 002788FC FC 20 08 50 */ fneg f1, f1
+/* 8027CCA0 00278900 EC 8C 00 B2 */ fmuls f4, f12, f2
+/* 8027CCA4 00278904 D0 03 00 2C */ stfs f0, 0x2c(r3)
+/* 8027CCA8 00278908 EC 4B 00 72 */ fmuls f2, f11, f1
+/* 8027CCAC 0027890C D0 63 00 14 */ stfs f3, 0x14(r3)
+/* 8027CCB0 00278910 EC 25 01 F2 */ fmuls f1, f5, f7
+/* 8027CCB4 00278914 D0 83 00 0C */ stfs f4, 0xc(r3)
+/* 8027CCB8 00278918 D0 43 00 1C */ stfs f2, 0x1c(r3)
+/* 8027CCBC 0027891C D0 23 00 28 */ stfs f1, 0x28(r3)
+/* 8027CCC0 00278920 4E 80 00 20 */ blr
diff --git a/asm/SDK/MTX/mtxvec.s b/asm/SDK/MTX/mtxvec.s
new file mode 100644
index 0000000..9e2787f
--- /dev/null
+++ b/asm/SDK/MTX/mtxvec.s
@@ -0,0 +1,51 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global PSMTXMultVec
+PSMTXMultVec:
+/* 8027C9FC 0027865C E0 04 00 00 */ psq_l f0, 0(r4), 0, qr0
+/* 8027CA00 00278660 E0 43 00 00 */ psq_l f2, 0(r3), 0, qr0
+/* 8027CA04 00278664 E0 24 80 08 */ psq_l f1, 8(r4), 1, qr0
+/* 8027CA08 00278668 10 82 00 32 */ ps_mul f4, f2, f0
+/* 8027CA0C 0027866C E0 63 00 08 */ psq_l f3, 8(r3), 0, qr0
+/* 8027CA10 00278670 10 A3 20 7A */ ps_madd f5, f3, f1, f4
+/* 8027CA14 00278674 E1 03 00 10 */ psq_l f8, 16(r3), 0, qr0
+/* 8027CA18 00278678 10 C5 29 94 */ ps_sum0 f6, f5, f6, f5
+/* 8027CA1C 0027867C E1 23 00 18 */ psq_l f9, 24(r3), 0, qr0
+/* 8027CA20 00278680 11 48 00 32 */ ps_mul f10, f8, f0
+/* 8027CA24 00278684 F0 C5 80 00 */ psq_st f6, 0(r5), 1, qr0
+/* 8027CA28 00278688 11 69 50 7A */ ps_madd f11, f9, f1, f10
+/* 8027CA2C 0027868C E0 43 00 20 */ psq_l f2, 32(r3), 0, qr0
+/* 8027CA30 00278690 11 8B 5B 14 */ ps_sum0 f12, f11, f12, f11
+/* 8027CA34 00278694 E0 63 00 28 */ psq_l f3, 40(r3), 0, qr0
+/* 8027CA38 00278698 10 82 00 32 */ ps_mul f4, f2, f0
+/* 8027CA3C 0027869C F1 85 80 04 */ psq_st f12, 4(r5), 1, qr0
+/* 8027CA40 002786A0 10 A3 20 7A */ ps_madd f5, f3, f1, f4
+/* 8027CA44 002786A4 10 C5 29 94 */ ps_sum0 f6, f5, f6, f5
+/* 8027CA48 002786A8 F0 C5 80 08 */ psq_st f6, 8(r5), 1, qr0
+/* 8027CA4C 002786AC 4E 80 00 20 */ blr
+
+.global PSMTXMultVecSR
+PSMTXMultVecSR:
+/* 8027CA50 002786B0 E0 03 00 00 */ psq_l f0, 0(r3), 0, qr0
+/* 8027CA54 002786B4 E0 C4 00 00 */ psq_l f6, 0(r4), 0, qr0
+/* 8027CA58 002786B8 E0 43 00 10 */ psq_l f2, 16(r3), 0, qr0
+/* 8027CA5C 002786BC 11 00 01 B2 */ ps_mul f8, f0, f6
+/* 8027CA60 002786C0 E0 83 00 20 */ psq_l f4, 32(r3), 0, qr0
+/* 8027CA64 002786C4 11 42 01 B2 */ ps_mul f10, f2, f6
+/* 8027CA68 002786C8 E0 E4 80 08 */ psq_l f7, 8(r4), 1, qr0
+/* 8027CA6C 002786CC 11 84 01 B2 */ ps_mul f12, f4, f6
+/* 8027CA70 002786D0 E0 63 00 18 */ psq_l f3, 24(r3), 0, qr0
+/* 8027CA74 002786D4 11 08 42 14 */ ps_sum0 f8, f8, f8, f8
+/* 8027CA78 002786D8 E0 A3 00 28 */ psq_l f5, 40(r3), 0, qr0
+/* 8027CA7C 002786DC 11 4A 52 94 */ ps_sum0 f10, f10, f10, f10
+/* 8027CA80 002786E0 E0 23 00 08 */ psq_l f1, 8(r3), 0, qr0
+/* 8027CA84 002786E4 11 8C 63 14 */ ps_sum0 f12, f12, f12, f12
+/* 8027CA88 002786E8 11 21 41 FA */ ps_madd f9, f1, f7, f8
+/* 8027CA8C 002786EC F1 25 80 00 */ psq_st f9, 0(r5), 1, qr0
+/* 8027CA90 002786F0 11 63 51 FA */ ps_madd f11, f3, f7, f10
+/* 8027CA94 002786F4 F1 65 80 04 */ psq_st f11, 4(r5), 1, qr0
+/* 8027CA98 002786F8 11 A5 61 FA */ ps_madd f13, f5, f7, f12
+/* 8027CA9C 002786FC F1 A5 80 08 */ psq_st f13, 8(r5), 1, qr0
+/* 8027CAA0 00278700 4E 80 00 20 */ blr
diff --git a/asm/SDK/MTX/quat.s b/asm/SDK/MTX/quat.s
new file mode 100644
index 0000000..bcb16e1
--- /dev/null
+++ b/asm/SDK/MTX/quat.s
@@ -0,0 +1,420 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global PSQUATMultiply
+PSQUATMultiply:
+/* 8027D024 00278C84 E0 03 00 00 */ psq_l f0, 0(r3), 0, qr0
+/* 8027D028 00278C88 E0 23 00 08 */ psq_l f1, 8(r3), 0, qr0
+/* 8027D02C 00278C8C 10 A0 00 50 */ ps_neg f5, f0
+/* 8027D030 00278C90 E0 44 00 00 */ psq_l f2, 0(r4), 0, qr0
+/* 8027D034 00278C94 10 C0 08 50 */ ps_neg f6, f1
+/* 8027D038 00278C98 E0 64 00 08 */ psq_l f3, 8(r4), 0, qr0
+/* 8027D03C 00278C9C 10 E1 00 98 */ ps_muls0 f7, f1, f2
+/* 8027D040 00278CA0 10 85 04 60 */ ps_merge01 f4, f5, f0
+/* 8027D044 00278CA4 10 26 0C 60 */ ps_merge01 f1, f6, f1
+/* 8027D048 00278CA8 10 A5 00 98 */ ps_muls0 f5, f5, f2
+/* 8027D04C 00278CAC 11 04 00 9A */ ps_muls1 f8, f4, f2
+/* 8027D050 00278CB0 10 E4 38 DC */ ps_madds0 f7, f4, f3, f7
+/* 8027D054 00278CB4 10 41 00 9A */ ps_muls1 f2, f1, f2
+/* 8027D058 00278CB8 10 A1 28 DC */ ps_madds0 f5, f1, f3, f5
+/* 8027D05C 00278CBC 10 E7 3C A0 */ ps_merge10 f7, f7, f7
+/* 8027D060 00278CC0 10 40 10 DE */ ps_madds1 f2, f0, f3, f2
+/* 8027D064 00278CC4 10 A5 2C A0 */ ps_merge10 f5, f5, f5
+/* 8027D068 00278CC8 11 06 40 DE */ ps_madds1 f8, f6, f3, f8
+/* 8027D06C 00278CCC 10 E7 10 2A */ ps_add f7, f7, f2
+/* 8027D070 00278CD0 10 A5 40 28 */ ps_sub f5, f5, f8
+/* 8027D074 00278CD4 F0 E5 00 00 */ psq_st f7, 0(r5), 0, qr0
+/* 8027D078 00278CD8 F0 A5 00 08 */ psq_st f5, 8(r5), 0, qr0
+/* 8027D07C 00278CDC 4E 80 00 20 */ blr
+
+.global PSQUATInverse
+PSQUATInverse:
+/* 8027D080 00278CE0 E0 03 00 00 */ psq_l f0, 0(r3), 0, qr0
+/* 8027D084 00278CE4 C0 A2 A0 B8 */ lfs f5, lbl_806426B8-_SDA2_BASE_(r2)
+/* 8027D088 00278CE8 10 40 00 32 */ ps_mul f2, f0, f0
+/* 8027D08C 00278CEC E0 23 00 08 */ psq_l f1, 8(r3), 0, qr0
+/* 8027D090 00278CF0 10 85 28 28 */ ps_sub f4, f5, f5
+/* 8027D094 00278CF4 10 65 28 2A */ ps_add f3, f5, f5
+/* 8027D098 00278CF8 10 41 10 7A */ ps_madd f2, f1, f1, f2
+/* 8027D09C 00278CFC 10 42 10 94 */ ps_sum0 f2, f2, f2, f2
+/* 8027D0A0 00278D00 FC 02 20 00 */ fcmpu cr0, f2, f4
+/* 8027D0A4 00278D04 41 82 00 10 */ beq lbl_8027D0B4
+/* 8027D0A8 00278D08 EC A0 10 30 */ fres f5, f2
+/* 8027D0AC 00278D0C 10 42 19 7C */ ps_nmsub f2, f2, f5, f3
+/* 8027D0B0 00278D10 10 A5 00 B2 */ ps_mul f5, f5, f2
+lbl_8027D0B4:
+/* 8027D0B4 00278D14 10 60 28 50 */ ps_neg f3, f5
+/* 8027D0B8 00278D18 10 45 00 5A */ ps_muls1 f2, f5, f1
+/* 8027D0BC 00278D1C 10 00 00 D8 */ ps_muls0 f0, f0, f3
+/* 8027D0C0 00278D20 10 21 00 D8 */ ps_muls0 f1, f1, f3
+/* 8027D0C4 00278D24 F0 44 80 0C */ psq_st f2, 12(r4), 1, qr0
+/* 8027D0C8 00278D28 F0 04 00 00 */ psq_st f0, 0(r4), 0, qr0
+/* 8027D0CC 00278D2C F0 24 80 08 */ psq_st f1, 8(r4), 1, qr0
+/* 8027D0D0 00278D30 4E 80 00 20 */ blr
+
+.global PSQUATDivide
+PSQUATDivide:
+/* 8027D0D4 00278D34 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8027D0D8 00278D38 7C 08 02 A6 */ mflr r0
+/* 8027D0DC 00278D3C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8027D0E0 00278D40 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8027D0E4 00278D44 7C BF 2B 78 */ mr r31, r5
+/* 8027D0E8 00278D48 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8027D0EC 00278D4C 7C 7E 1B 78 */ mr r30, r3
+/* 8027D0F0 00278D50 7C 83 23 78 */ mr r3, r4
+/* 8027D0F4 00278D54 38 81 00 08 */ addi r4, r1, 8
+/* 8027D0F8 00278D58 4B FF FF 89 */ bl PSQUATInverse
+/* 8027D0FC 00278D5C 7F C4 F3 78 */ mr r4, r30
+/* 8027D100 00278D60 7F E5 FB 78 */ mr r5, r31
+/* 8027D104 00278D64 38 61 00 08 */ addi r3, r1, 8
+/* 8027D108 00278D68 4B FF FF 1D */ bl PSQUATMultiply
+/* 8027D10C 00278D6C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8027D110 00278D70 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8027D114 00278D74 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8027D118 00278D78 7C 08 03 A6 */ mtlr r0
+/* 8027D11C 00278D7C 38 21 00 20 */ addi r1, r1, 0x20
+/* 8027D120 00278D80 4E 80 00 20 */ blr
+
+.global C_QUATRotAxisRad
+C_QUATRotAxisRad:
+/* 8027D124 00278D84 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 8027D128 00278D88 7C 08 02 A6 */ mflr r0
+/* 8027D12C 00278D8C 90 01 00 44 */ stw r0, 0x44(r1)
+/* 8027D130 00278D90 DB E1 00 30 */ stfd f31, 0x30(r1)
+/* 8027D134 00278D94 F3 E1 00 38 */ psq_st f31, 56(r1), 0, qr0
+/* 8027D138 00278D98 DB C1 00 20 */ stfd f30, 0x20(r1)
+/* 8027D13C 00278D9C F3 C1 00 28 */ psq_st f30, 40(r1), 0, qr0
+/* 8027D140 00278DA0 FF C0 08 90 */ fmr f30, f1
+/* 8027D144 00278DA4 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8027D148 00278DA8 7C 7F 1B 78 */ mr r31, r3
+/* 8027D14C 00278DAC 7C 83 23 78 */ mr r3, r4
+/* 8027D150 00278DB0 38 81 00 08 */ addi r4, r1, 8
+/* 8027D154 00278DB4 4B FF FB D5 */ bl PSVECNormalize
+/* 8027D158 00278DB8 C0 02 A0 C0 */ lfs f0, lbl_806426C0-_SDA2_BASE_(r2)
+/* 8027D15C 00278DBC EF C0 07 B2 */ fmuls f30, f0, f30
+/* 8027D160 00278DC0 FC 20 F0 90 */ fmr f1, f30
+/* 8027D164 00278DC4 4B F5 73 21 */ bl sin
+/* 8027D168 00278DC8 FF E0 08 18 */ frsp f31, f1
+/* 8027D16C 00278DCC FC 20 F0 90 */ fmr f1, f30
+/* 8027D170 00278DD0 4B F5 6F 09 */ bl cos
+/* 8027D174 00278DD4 C0 01 00 08 */ lfs f0, 8(r1)
+/* 8027D178 00278DD8 FC 20 08 18 */ frsp f1, f1
+/* 8027D17C 00278DDC EC 1F 00 32 */ fmuls f0, f31, f0
+/* 8027D180 00278DE0 D0 1F 00 00 */ stfs f0, 0(r31)
+/* 8027D184 00278DE4 C0 01 00 0C */ lfs f0, 0xc(r1)
+/* 8027D188 00278DE8 EC 1F 00 32 */ fmuls f0, f31, f0
+/* 8027D18C 00278DEC D0 1F 00 04 */ stfs f0, 4(r31)
+/* 8027D190 00278DF0 C0 01 00 10 */ lfs f0, 0x10(r1)
+/* 8027D194 00278DF4 EC 1F 00 32 */ fmuls f0, f31, f0
+/* 8027D198 00278DF8 D0 3F 00 0C */ stfs f1, 0xc(r31)
+/* 8027D19C 00278DFC D0 1F 00 08 */ stfs f0, 8(r31)
+/* 8027D1A0 00278E00 E3 E1 00 38 */ psq_l f31, 56(r1), 0, qr0
+/* 8027D1A4 00278E04 CB E1 00 30 */ lfd f31, 0x30(r1)
+/* 8027D1A8 00278E08 E3 C1 00 28 */ psq_l f30, 40(r1), 0, qr0
+/* 8027D1AC 00278E0C CB C1 00 20 */ lfd f30, 0x20(r1)
+/* 8027D1B0 00278E10 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8027D1B4 00278E14 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 8027D1B8 00278E18 7C 08 03 A6 */ mtlr r0
+/* 8027D1BC 00278E1C 38 21 00 40 */ addi r1, r1, 0x40
+/* 8027D1C0 00278E20 4E 80 00 20 */ blr
+
+.global C_QUATMtx
+C_QUATMtx:
+/* 8027D1C4 00278E24 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 8027D1C8 00278E28 7C 08 02 A6 */ mflr r0
+/* 8027D1CC 00278E2C 90 01 00 44 */ stw r0, 0x44(r1)
+/* 8027D1D0 00278E30 39 61 00 40 */ addi r11, r1, 0x40
+/* 8027D1D4 00278E34 4B F4 9F 4D */ bl _savegpr_25
+/* 8027D1D8 00278E38 C0 64 00 00 */ lfs f3, 0(r4)
+/* 8027D1DC 00278E3C 3C C0 80 40 */ lis r6, lbl_80400004@ha
+/* 8027D1E0 00278E40 C0 44 00 14 */ lfs f2, 0x14(r4)
+/* 8027D1E4 00278E44 7C 7F 1B 78 */ mr r31, r3
+/* 8027D1E8 00278E48 84 A6 D9 A8 */ lwzu r5, -0x2658(r6)
+/* 8027D1EC 00278E4C 7C 99 23 78 */ mr r25, r4
+/* 8027D1F0 00278E50 EC 23 10 2A */ fadds f1, f3, f2
+/* 8027D1F4 00278E54 C0 04 00 28 */ lfs f0, 0x28(r4)
+/* 8027D1F8 00278E58 80 66 00 04 */ lwz r3, lbl_80400004@l(r6)
+/* 8027D1FC 00278E5C 80 06 00 08 */ lwz r0, 8(r6)
+/* 8027D200 00278E60 EC 20 08 2A */ fadds f1, f0, f1
+/* 8027D204 00278E64 C0 02 A0 BC */ lfs f0, lbl_806426BC-_SDA2_BASE_(r2)
+/* 8027D208 00278E68 90 A1 00 14 */ stw r5, 0x14(r1)
+/* 8027D20C 00278E6C FC 01 00 40 */ fcmpo cr0, f1, f0
+/* 8027D210 00278E70 90 61 00 18 */ stw r3, 0x18(r1)
+/* 8027D214 00278E74 90 01 00 1C */ stw r0, 0x1c(r1)
+/* 8027D218 00278E78 40 81 00 64 */ ble lbl_8027D27C
+/* 8027D21C 00278E7C C0 02 A0 B8 */ lfs f0, lbl_806426B8-_SDA2_BASE_(r2)
+/* 8027D220 00278E80 EC 20 08 2A */ fadds f1, f0, f1
+/* 8027D224 00278E84 4B F5 76 11 */ bl sqrt
+/* 8027D228 00278E88 FC E0 08 18 */ frsp f7, f1
+/* 8027D22C 00278E8C C0 C2 A0 C0 */ lfs f6, lbl_806426C0-_SDA2_BASE_(r2)
+/* 8027D230 00278E90 C0 B9 00 24 */ lfs f5, 0x24(r25)
+/* 8027D234 00278E94 C0 99 00 18 */ lfs f4, 0x18(r25)
+/* 8027D238 00278E98 ED 06 38 24 */ fdivs f8, f6, f7
+/* 8027D23C 00278E9C C0 79 00 08 */ lfs f3, 8(r25)
+/* 8027D240 00278EA0 C0 59 00 20 */ lfs f2, 0x20(r25)
+/* 8027D244 00278EA4 C0 39 00 10 */ lfs f1, 0x10(r25)
+/* 8027D248 00278EA8 C0 19 00 04 */ lfs f0, 4(r25)
+/* 8027D24C 00278EAC EC 85 20 28 */ fsubs f4, f5, f4
+/* 8027D250 00278EB0 EC 43 10 28 */ fsubs f2, f3, f2
+/* 8027D254 00278EB4 EC 01 00 28 */ fsubs f0, f1, f0
+/* 8027D258 00278EB8 EC A6 01 F2 */ fmuls f5, f6, f7
+/* 8027D25C 00278EBC EC 68 01 32 */ fmuls f3, f8, f4
+/* 8027D260 00278EC0 EC 28 00 B2 */ fmuls f1, f8, f2
+/* 8027D264 00278EC4 EC 08 00 32 */ fmuls f0, f8, f0
+/* 8027D268 00278EC8 D0 BF 00 0C */ stfs f5, 0xc(r31)
+/* 8027D26C 00278ECC D0 7F 00 00 */ stfs f3, 0(r31)
+/* 8027D270 00278ED0 D0 3F 00 04 */ stfs f1, 4(r31)
+/* 8027D274 00278ED4 D0 1F 00 08 */ stfs f0, 8(r31)
+/* 8027D278 00278ED8 48 00 01 00 */ b lbl_8027D378
+lbl_8027D27C:
+/* 8027D27C 00278EDC FC 02 18 40 */ fcmpo cr0, f2, f3
+/* 8027D280 00278EE0 38 A0 00 00 */ li r5, 0
+/* 8027D284 00278EE4 40 81 00 08 */ ble lbl_8027D28C
+/* 8027D288 00278EE8 38 A0 00 01 */ li r5, 1
+lbl_8027D28C:
+/* 8027D28C 00278EEC 54 A0 20 36 */ slwi r0, r5, 4
+/* 8027D290 00278EF0 54 A3 10 3A */ slwi r3, r5, 2
+/* 8027D294 00278EF4 7C 04 02 14 */ add r0, r4, r0
+/* 8027D298 00278EF8 C0 24 00 28 */ lfs f1, 0x28(r4)
+/* 8027D29C 00278EFC 7C 03 04 2E */ lfsx f0, r3, r0
+/* 8027D2A0 00278F00 FC 01 00 40 */ fcmpo cr0, f1, f0
+/* 8027D2A4 00278F04 40 81 00 08 */ ble lbl_8027D2AC
+/* 8027D2A8 00278F08 38 A0 00 02 */ li r5, 2
+lbl_8027D2AC:
+/* 8027D2AC 00278F0C 54 BA 10 3A */ slwi r26, r5, 2
+/* 8027D2B0 00278F10 38 61 00 14 */ addi r3, r1, 0x14
+/* 8027D2B4 00278F14 7C C3 D0 2E */ lwzx r6, r3, r26
+/* 8027D2B8 00278F18 54 A0 20 36 */ slwi r0, r5, 4
+/* 8027D2BC 00278F1C 7F 24 02 14 */ add r25, r4, r0
+/* 8027D2C0 00278F20 C0 02 A0 B8 */ lfs f0, lbl_806426B8-_SDA2_BASE_(r2)
+/* 8027D2C4 00278F24 54 DC 10 3A */ slwi r28, r6, 2
+/* 8027D2C8 00278F28 54 C0 20 36 */ slwi r0, r6, 4
+/* 8027D2CC 00278F2C 7C 63 E0 2E */ lwzx r3, r3, r28
+/* 8027D2D0 00278F30 7F A4 02 14 */ add r29, r4, r0
+/* 8027D2D4 00278F34 7C 7D E4 2E */ lfsx f3, r29, r28
+/* 8027D2D8 00278F38 54 60 20 36 */ slwi r0, r3, 4
+/* 8027D2DC 00278F3C 54 7E 10 3A */ slwi r30, r3, 2
+/* 8027D2E0 00278F40 7F 64 02 14 */ add r27, r4, r0
+/* 8027D2E4 00278F44 7C 39 D4 2E */ lfsx f1, r25, r26
+/* 8027D2E8 00278F48 7C 5B F4 2E */ lfsx f2, r27, r30
+/* 8027D2EC 00278F4C EC 43 10 2A */ fadds f2, f3, f2
+/* 8027D2F0 00278F50 EC 21 10 28 */ fsubs f1, f1, f2
+/* 8027D2F4 00278F54 EC 20 08 2A */ fadds f1, f0, f1
+/* 8027D2F8 00278F58 4B F5 75 3D */ bl sqrt
+/* 8027D2FC 00278F5C FC A0 08 18 */ frsp f5, f1
+/* 8027D300 00278F60 C0 42 A0 C0 */ lfs f2, lbl_806426C0-_SDA2_BASE_(r2)
+/* 8027D304 00278F64 C0 02 A0 BC */ lfs f0, lbl_806426BC-_SDA2_BASE_(r2)
+/* 8027D308 00278F68 38 61 00 08 */ addi r3, r1, 8
+/* 8027D30C 00278F6C EC 22 01 72 */ fmuls f1, f2, f5
+/* 8027D310 00278F70 FC 00 28 00 */ fcmpu cr0, f0, f5
+/* 8027D314 00278F74 7C 23 D5 2E */ stfsx f1, r3, r26
+/* 8027D318 00278F78 41 82 00 08 */ beq lbl_8027D320
+/* 8027D31C 00278F7C EC A2 28 24 */ fdivs f5, f2, f5
+lbl_8027D320:
+/* 8027D320 00278F80 7C 59 E4 2E */ lfsx f2, r25, r28
+/* 8027D324 00278F84 38 61 00 08 */ addi r3, r1, 8
+/* 8027D328 00278F88 7C 1D D4 2E */ lfsx f0, r29, r26
+/* 8027D32C 00278F8C 7C 39 F4 2E */ lfsx f1, r25, r30
+/* 8027D330 00278F90 EC 42 00 2A */ fadds f2, f2, f0
+/* 8027D334 00278F94 7C 1B D4 2E */ lfsx f0, r27, r26
+/* 8027D338 00278F98 7C 9B E4 2E */ lfsx f4, r27, r28
+/* 8027D33C 00278F9C EC 01 00 2A */ fadds f0, f1, f0
+/* 8027D340 00278FA0 7C 7D F4 2E */ lfsx f3, r29, r30
+/* 8027D344 00278FA4 EC 25 00 B2 */ fmuls f1, f5, f2
+/* 8027D348 00278FA8 EC 44 18 28 */ fsubs f2, f4, f3
+/* 8027D34C 00278FAC EC 05 00 32 */ fmuls f0, f5, f0
+/* 8027D350 00278FB0 7C 23 E5 2E */ stfsx f1, r3, r28
+/* 8027D354 00278FB4 EC 65 00 B2 */ fmuls f3, f5, f2
+/* 8027D358 00278FB8 7C 03 F5 2E */ stfsx f0, r3, r30
+/* 8027D35C 00278FBC C0 41 00 08 */ lfs f2, 8(r1)
+/* 8027D360 00278FC0 C0 21 00 0C */ lfs f1, 0xc(r1)
+/* 8027D364 00278FC4 C0 01 00 10 */ lfs f0, 0x10(r1)
+/* 8027D368 00278FC8 D0 7F 00 0C */ stfs f3, 0xc(r31)
+/* 8027D36C 00278FCC D0 5F 00 00 */ stfs f2, 0(r31)
+/* 8027D370 00278FD0 D0 3F 00 04 */ stfs f1, 4(r31)
+/* 8027D374 00278FD4 D0 1F 00 08 */ stfs f0, 8(r31)
+lbl_8027D378:
+/* 8027D378 00278FD8 39 61 00 40 */ addi r11, r1, 0x40
+/* 8027D37C 00278FDC 4B F4 9D F1 */ bl _restgpr_25
+/* 8027D380 00278FE0 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 8027D384 00278FE4 7C 08 03 A6 */ mtlr r0
+/* 8027D388 00278FE8 38 21 00 40 */ addi r1, r1, 0x40
+/* 8027D38C 00278FEC 4E 80 00 20 */ blr
+
+.global C_QUATSlerp
+C_QUATSlerp:
+/* 8027D390 00278FF0 94 21 FF A0 */ stwu r1, -0x60(r1)
+/* 8027D394 00278FF4 7C 08 02 A6 */ mflr r0
+/* 8027D398 00278FF8 90 01 00 64 */ stw r0, 0x64(r1)
+/* 8027D39C 00278FFC DB E1 00 50 */ stfd f31, 0x50(r1)
+/* 8027D3A0 00279000 F3 E1 00 58 */ psq_st f31, 88(r1), 0, qr0
+/* 8027D3A4 00279004 DB C1 00 40 */ stfd f30, 0x40(r1)
+/* 8027D3A8 00279008 F3 C1 00 48 */ psq_st f30, 72(r1), 0, qr0
+/* 8027D3AC 0027900C DB A1 00 30 */ stfd f29, 0x30(r1)
+/* 8027D3B0 00279010 F3 A1 00 38 */ psq_st f29, 56(r1), 0, qr0
+/* 8027D3B4 00279014 DB 81 00 20 */ stfd f28, 0x20(r1)
+/* 8027D3B8 00279018 F3 81 00 28 */ psq_st f28, 40(r1), 0, qr0
+/* 8027D3BC 0027901C FF E0 08 90 */ fmr f31, f1
+/* 8027D3C0 00279020 C0 83 00 00 */ lfs f4, 0(r3)
+/* 8027D3C4 00279024 C0 64 00 00 */ lfs f3, 0(r4)
+/* 8027D3C8 00279028 C0 43 00 04 */ lfs f2, 4(r3)
+/* 8027D3CC 0027902C C0 04 00 04 */ lfs f0, 4(r4)
+/* 8027D3D0 00279030 EC 64 00 F2 */ fmuls f3, f4, f3
+/* 8027D3D4 00279034 C0 83 00 08 */ lfs f4, 8(r3)
+/* 8027D3D8 00279038 EC 02 00 32 */ fmuls f0, f2, f0
+/* 8027D3DC 0027903C C0 44 00 08 */ lfs f2, 8(r4)
+/* 8027D3E0 00279040 C0 C3 00 0C */ lfs f6, 0xc(r3)
+/* 8027D3E4 00279044 EC 84 00 B2 */ fmuls f4, f4, f2
+/* 8027D3E8 00279048 C0 A4 00 0C */ lfs f5, 0xc(r4)
+/* 8027D3EC 0027904C EC 43 00 2A */ fadds f2, f3, f0
+/* 8027D3F0 00279050 EC 66 01 72 */ fmuls f3, f6, f5
+/* 8027D3F4 00279054 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8027D3F8 00279058 C0 02 A0 BC */ lfs f0, lbl_806426BC-_SDA2_BASE_(r2)
+/* 8027D3FC 0027905C EC 44 10 2A */ fadds f2, f4, f2
+/* 8027D400 00279060 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8027D404 00279064 C3 C2 A0 B8 */ lfs f30, lbl_806426B8-_SDA2_BASE_(r2)
+/* 8027D408 00279068 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8027D40C 0027906C 7C 7D 1B 78 */ mr r29, r3
+/* 8027D410 00279070 EC 43 10 2A */ fadds f2, f3, f2
+/* 8027D414 00279074 7C 9E 23 78 */ mr r30, r4
+/* 8027D418 00279078 7C BF 2B 78 */ mr r31, r5
+/* 8027D41C 0027907C FC 02 00 40 */ fcmpo cr0, f2, f0
+/* 8027D420 00279080 40 80 00 0C */ bge lbl_8027D42C
+/* 8027D424 00279084 FC 40 10 50 */ fneg f2, f2
+/* 8027D428 00279088 FF C0 F0 50 */ fneg f30, f30
+lbl_8027D42C:
+/* 8027D42C 0027908C C0 02 A0 C4 */ lfs f0, lbl_806426C4-_SDA2_BASE_(r2)
+/* 8027D430 00279090 FC 02 00 40 */ fcmpo cr0, f2, f0
+/* 8027D434 00279094 4C 40 13 82 */ cror 2, 0, 2
+/* 8027D438 00279098 40 82 00 4C */ bne lbl_8027D484
+/* 8027D43C 0027909C FC 20 10 90 */ fmr f1, f2
+/* 8027D440 002790A0 4B F5 71 95 */ bl acos
+/* 8027D444 002790A4 FF A0 08 18 */ frsp f29, f1
+/* 8027D448 002790A8 FC 20 E8 90 */ fmr f1, f29
+/* 8027D44C 002790AC 4B F5 70 39 */ bl sin
+/* 8027D450 002790B0 C0 02 A0 B8 */ lfs f0, lbl_806426B8-_SDA2_BASE_(r2)
+/* 8027D454 002790B4 FF 80 08 18 */ frsp f28, f1
+/* 8027D458 002790B8 EC 00 F8 28 */ fsubs f0, f0, f31
+/* 8027D45C 002790BC EC 20 07 72 */ fmuls f1, f0, f29
+/* 8027D460 002790C0 4B F5 70 25 */ bl sin
+/* 8027D464 002790C4 FC 00 08 18 */ frsp f0, f1
+/* 8027D468 002790C8 EC 3F 07 72 */ fmuls f1, f31, f29
+/* 8027D46C 002790CC EF E0 E0 24 */ fdivs f31, f0, f28
+/* 8027D470 002790D0 4B F5 70 15 */ bl sin
+/* 8027D474 002790D4 FC 00 08 18 */ frsp f0, f1
+/* 8027D478 002790D8 EC 00 E0 24 */ fdivs f0, f0, f28
+/* 8027D47C 002790DC EF DE 00 32 */ fmuls f30, f30, f0
+/* 8027D480 002790E0 48 00 00 10 */ b lbl_8027D490
+lbl_8027D484:
+/* 8027D484 002790E4 C0 02 A0 B8 */ lfs f0, lbl_806426B8-_SDA2_BASE_(r2)
+/* 8027D488 002790E8 EF DE 00 72 */ fmuls f30, f30, f1
+/* 8027D48C 002790EC EF E0 08 28 */ fsubs f31, f0, f1
+lbl_8027D490:
+/* 8027D490 002790F0 C0 1D 00 00 */ lfs f0, 0(r29)
+/* 8027D494 002790F4 C0 5E 00 00 */ lfs f2, 0(r30)
+/* 8027D498 002790F8 C0 3D 00 04 */ lfs f1, 4(r29)
+/* 8027D49C 002790FC EC FF 00 32 */ fmuls f7, f31, f0
+/* 8027D4A0 00279100 C0 1E 00 04 */ lfs f0, 4(r30)
+/* 8027D4A4 00279104 EC DE 00 B2 */ fmuls f6, f30, f2
+/* 8027D4A8 00279108 C0 7D 00 08 */ lfs f3, 8(r29)
+/* 8027D4AC 0027910C EC BF 00 72 */ fmuls f5, f31, f1
+/* 8027D4B0 00279110 EC 9E 00 32 */ fmuls f4, f30, f0
+/* 8027D4B4 00279114 C0 5E 00 08 */ lfs f2, 8(r30)
+/* 8027D4B8 00279118 EC 7F 00 F2 */ fmuls f3, f31, f3
+/* 8027D4BC 0027911C C0 3D 00 0C */ lfs f1, 0xc(r29)
+/* 8027D4C0 00279120 EC C7 30 2A */ fadds f6, f7, f6
+/* 8027D4C4 00279124 C0 1E 00 0C */ lfs f0, 0xc(r30)
+/* 8027D4C8 00279128 EC 5E 00 B2 */ fmuls f2, f30, f2
+/* 8027D4CC 0027912C EC 85 20 2A */ fadds f4, f5, f4
+/* 8027D4D0 00279130 D0 DF 00 00 */ stfs f6, 0(r31)
+/* 8027D4D4 00279134 EC 3F 00 72 */ fmuls f1, f31, f1
+/* 8027D4D8 00279138 EC 1E 00 32 */ fmuls f0, f30, f0
+/* 8027D4DC 0027913C EC 43 10 2A */ fadds f2, f3, f2
+/* 8027D4E0 00279140 D0 9F 00 04 */ stfs f4, 4(r31)
+/* 8027D4E4 00279144 EC 01 00 2A */ fadds f0, f1, f0
+/* 8027D4E8 00279148 D0 5F 00 08 */ stfs f2, 8(r31)
+/* 8027D4EC 0027914C D0 1F 00 0C */ stfs f0, 0xc(r31)
+/* 8027D4F0 00279150 E3 E1 00 58 */ psq_l f31, 88(r1), 0, qr0
+/* 8027D4F4 00279154 CB E1 00 50 */ lfd f31, 0x50(r1)
+/* 8027D4F8 00279158 E3 C1 00 48 */ psq_l f30, 72(r1), 0, qr0
+/* 8027D4FC 0027915C CB C1 00 40 */ lfd f30, 0x40(r1)
+/* 8027D500 00279160 E3 A1 00 38 */ psq_l f29, 56(r1), 0, qr0
+/* 8027D504 00279164 CB A1 00 30 */ lfd f29, 0x30(r1)
+/* 8027D508 00279168 E3 81 00 28 */ psq_l f28, 40(r1), 0, qr0
+/* 8027D50C 0027916C CB 81 00 20 */ lfd f28, 0x20(r1)
+/* 8027D510 00279170 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8027D514 00279174 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8027D518 00279178 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8027D51C 0027917C 80 01 00 64 */ lwz r0, 0x64(r1)
+/* 8027D520 00279180 7C 08 03 A6 */ mtlr r0
+/* 8027D524 00279184 38 21 00 60 */ addi r1, r1, 0x60
+/* 8027D528 00279188 4E 80 00 20 */ blr
+
+.global C_QUATSquad
+C_QUATSquad:
+/* 8027D52C 0027918C 94 21 FF A0 */ stwu r1, -0x60(r1)
+/* 8027D530 00279190 7C 08 02 A6 */ mflr r0
+/* 8027D534 00279194 90 01 00 64 */ stw r0, 0x64(r1)
+/* 8027D538 00279198 DB E1 00 50 */ stfd f31, 0x50(r1)
+/* 8027D53C 0027919C F3 E1 00 58 */ psq_st f31, 88(r1), 0, qr0
+/* 8027D540 002791A0 DB C1 00 40 */ stfd f30, 0x40(r1)
+/* 8027D544 002791A4 F3 C1 00 48 */ psq_st f30, 72(r1), 0, qr0
+/* 8027D548 002791A8 FF C0 08 90 */ fmr f30, f1
+/* 8027D54C 002791AC C0 42 A0 C8 */ lfs f2, lbl_806426C8-_SDA2_BASE_(r2)
+/* 8027D550 002791B0 93 E1 00 3C */ stw r31, 0x3c(r1)
+/* 8027D554 002791B4 7C FF 3B 78 */ mr r31, r7
+/* 8027D558 002791B8 C0 02 A0 B8 */ lfs f0, lbl_806426B8-_SDA2_BASE_(r2)
+/* 8027D55C 002791BC EC 42 00 72 */ fmuls f2, f2, f1
+/* 8027D560 002791C0 93 C1 00 38 */ stw r30, 0x38(r1)
+/* 8027D564 002791C4 7C BE 2B 78 */ mr r30, r5
+/* 8027D568 002791C8 EC 00 08 28 */ fsubs f0, f0, f1
+/* 8027D56C 002791CC 38 A1 00 18 */ addi r5, r1, 0x18
+/* 8027D570 002791D0 93 A1 00 34 */ stw r29, 0x34(r1)
+/* 8027D574 002791D4 7C 9D 23 78 */ mr r29, r4
+/* 8027D578 002791D8 7C C4 33 78 */ mr r4, r6
+/* 8027D57C 002791DC EF E2 00 32 */ fmuls f31, f2, f0
+/* 8027D580 002791E0 4B FF FE 11 */ bl C_QUATSlerp
+/* 8027D584 002791E4 FC 20 F0 90 */ fmr f1, f30
+/* 8027D588 002791E8 7F A3 EB 78 */ mr r3, r29
+/* 8027D58C 002791EC 7F C4 F3 78 */ mr r4, r30
+/* 8027D590 002791F0 38 A1 00 08 */ addi r5, r1, 8
+/* 8027D594 002791F4 4B FF FD FD */ bl C_QUATSlerp
+/* 8027D598 002791F8 FC 20 F8 90 */ fmr f1, f31
+/* 8027D59C 002791FC 7F E5 FB 78 */ mr r5, r31
+/* 8027D5A0 00279200 38 61 00 18 */ addi r3, r1, 0x18
+/* 8027D5A4 00279204 38 81 00 08 */ addi r4, r1, 8
+/* 8027D5A8 00279208 4B FF FD E9 */ bl C_QUATSlerp
+/* 8027D5AC 0027920C E3 E1 00 58 */ psq_l f31, 88(r1), 0, qr0
+/* 8027D5B0 00279210 CB E1 00 50 */ lfd f31, 0x50(r1)
+/* 8027D5B4 00279214 E3 C1 00 48 */ psq_l f30, 72(r1), 0, qr0
+/* 8027D5B8 00279218 CB C1 00 40 */ lfd f30, 0x40(r1)
+/* 8027D5BC 0027921C 83 E1 00 3C */ lwz r31, 0x3c(r1)
+/* 8027D5C0 00279220 83 C1 00 38 */ lwz r30, 0x38(r1)
+/* 8027D5C4 00279224 80 01 00 64 */ lwz r0, 0x64(r1)
+/* 8027D5C8 00279228 83 A1 00 34 */ lwz r29, 0x34(r1)
+/* 8027D5CC 0027922C 7C 08 03 A6 */ mtlr r0
+/* 8027D5D0 00279230 38 21 00 60 */ addi r1, r1, 0x60
+/* 8027D5D4 00279234 4E 80 00 20 */ blr
+
+.global func_8027D5D8
+func_8027D5D8:
+/* 8027D5D8 00279238 E0 03 00 00 */ psq_l f0, 0(r3), 0, qr0
+/* 8027D5DC 0027923C E0 43 00 10 */ psq_l f2, 16(r3), 0, qr0
+/* 8027D5E0 00279240 E0 83 00 20 */ psq_l f4, 32(r3), 0, qr0
+/* 8027D5E4 00279244 E0 23 00 08 */ psq_l f1, 8(r3), 0, qr0
+/* 8027D5E8 00279248 10 C0 14 20 */ ps_merge00 f6, f0, f2
+/* 8027D5EC 0027924C E0 63 00 18 */ psq_l f3, 24(r3), 0, qr0
+/* 8027D5F0 00279250 11 84 04 60 */ ps_merge01 f12, f4, f0
+/* 8027D5F4 00279254 E0 A3 00 28 */ psq_l f5, 40(r3), 0, qr0
+/* 8027D5F8 00279258 10 E2 24 E0 */ ps_merge11 f7, f2, f4
+/* 8027D5FC 0027925C F0 C4 00 00 */ psq_st f6, 0(r4), 0, qr0
+/* 8027D600 00279260 11 01 1C 20 */ ps_merge00 f8, f1, f3
+/* 8027D604 00279264 F1 84 00 08 */ psq_st f12, 8(r4), 0, qr0
+/* 8027D608 00279268 11 25 0C 60 */ ps_merge01 f9, f5, f1
+/* 8027D60C 0027926C F0 E4 00 10 */ psq_st f7, 16(r4), 0, qr0
+/* 8027D610 00279270 11 43 2C E0 */ ps_merge11 f10, f3, f5
+/* 8027D614 00279274 F1 04 00 18 */ psq_st f8, 24(r4), 0, qr0
+/* 8027D618 00279278 F1 24 00 20 */ psq_st f9, 32(r4), 0, qr0
+/* 8027D61C 0027927C F1 44 00 28 */ psq_st f10, 40(r4), 0, qr0
+/* 8027D620 00279280 4E 80 00 20 */ blr
diff --git a/asm/SDK/MTX/vec.s b/asm/SDK/MTX/vec.s
new file mode 100644
index 0000000..ba5f316
--- /dev/null
+++ b/asm/SDK/MTX/vec.s
@@ -0,0 +1,254 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global PSVECAdd
+PSVECAdd:
+/* 8027CCC4 00278924 E0 43 00 00 */ psq_l f2, 0(r3), 0, qr0
+/* 8027CCC8 00278928 E0 84 00 00 */ psq_l f4, 0(r4), 0, qr0
+/* 8027CCCC 0027892C 10 C2 20 2A */ ps_add f6, f2, f4
+/* 8027CCD0 00278930 F0 C5 00 00 */ psq_st f6, 0(r5), 0, qr0
+/* 8027CCD4 00278934 E0 63 80 08 */ psq_l f3, 8(r3), 1, qr0
+/* 8027CCD8 00278938 E0 A4 80 08 */ psq_l f5, 8(r4), 1, qr0
+/* 8027CCDC 0027893C 10 E3 28 2A */ ps_add f7, f3, f5
+/* 8027CCE0 00278940 F0 E5 80 08 */ psq_st f7, 8(r5), 1, qr0
+/* 8027CCE4 00278944 4E 80 00 20 */ blr
+
+.global PSVECSubtract
+PSVECSubtract:
+/* 8027CCE8 00278948 E0 43 00 00 */ psq_l f2, 0(r3), 0, qr0
+/* 8027CCEC 0027894C E0 84 00 00 */ psq_l f4, 0(r4), 0, qr0
+/* 8027CCF0 00278950 10 C2 20 28 */ ps_sub f6, f2, f4
+/* 8027CCF4 00278954 F0 C5 00 00 */ psq_st f6, 0(r5), 0, qr0
+/* 8027CCF8 00278958 E0 63 80 08 */ psq_l f3, 8(r3), 1, qr0
+/* 8027CCFC 0027895C E0 A4 80 08 */ psq_l f5, 8(r4), 1, qr0
+/* 8027CD00 00278960 10 E3 28 28 */ ps_sub f7, f3, f5
+/* 8027CD04 00278964 F0 E5 80 08 */ psq_st f7, 8(r5), 1, qr0
+/* 8027CD08 00278968 4E 80 00 20 */ blr
+
+.global PSVECScale
+PSVECScale:
+/* 8027CD0C 0027896C E0 03 00 00 */ psq_l f0, 0(r3), 0, qr0
+/* 8027CD10 00278970 E0 43 80 08 */ psq_l f2, 8(r3), 1, qr0
+/* 8027CD14 00278974 10 00 00 58 */ ps_muls0 f0, f0, f1
+/* 8027CD18 00278978 10 22 00 58 */ ps_muls0 f1, f2, f1
+/* 8027CD1C 0027897C F0 04 00 00 */ psq_st f0, 0(r4), 0, qr0
+/* 8027CD20 00278980 F0 24 80 08 */ psq_st f1, 8(r4), 1, qr0
+/* 8027CD24 00278984 4E 80 00 20 */ blr
+
+.global PSVECNormalize
+PSVECNormalize:
+/* 8027CD28 00278988 E0 43 00 00 */ psq_l f2, 0(r3), 0, qr0
+/* 8027CD2C 0027898C E0 63 80 08 */ psq_l f3, 8(r3), 1, qr0
+/* 8027CD30 00278990 10 A2 00 B2 */ ps_mul f5, f2, f2
+/* 8027CD34 00278994 C0 02 A0 A8 */ lfs f0, lbl_806426A8-_SDA2_BASE_(r2)
+/* 8027CD38 00278998 C0 22 A0 AC */ lfs f1, lbl_806426AC-_SDA2_BASE_(r2)
+/* 8027CD3C 0027899C 10 83 28 FA */ ps_madd f4, f3, f3, f5
+/* 8027CD40 002789A0 10 84 28 D4 */ ps_sum0 f4, f4, f3, f5
+/* 8027CD44 002789A4 FC A0 20 34 */ frsqrte f5, f4
+/* 8027CD48 002789A8 EC C5 01 72 */ fmuls f6, f5, f5
+/* 8027CD4C 002789AC EC 05 00 32 */ fmuls f0, f5, f0
+/* 8027CD50 002789B0 EC C6 09 3C */ fnmsubs f6, f6, f4, f1
+/* 8027CD54 002789B4 EC A6 00 32 */ fmuls f5, f6, f0
+/* 8027CD58 002789B8 10 42 01 58 */ ps_muls0 f2, f2, f5
+/* 8027CD5C 002789BC 10 63 01 58 */ ps_muls0 f3, f3, f5
+/* 8027CD60 002789C0 F0 44 00 00 */ psq_st f2, 0(r4), 0, qr0
+/* 8027CD64 002789C4 F0 64 80 08 */ psq_st f3, 8(r4), 1, qr0
+/* 8027CD68 002789C8 4E 80 00 20 */ blr
+
+.global PSVECSquareMag
+PSVECSquareMag:
+/* 8027CD6C 002789CC E0 03 00 00 */ psq_l f0, 0(r3), 0, qr0
+/* 8027CD70 002789D0 C0 23 00 08 */ lfs f1, 8(r3)
+/* 8027CD74 002789D4 10 00 00 32 */ ps_mul f0, f0, f0
+/* 8027CD78 002789D8 10 21 00 7A */ ps_madd f1, f1, f1, f0
+/* 8027CD7C 002789DC 10 21 00 14 */ ps_sum0 f1, f1, f0, f0
+/* 8027CD80 002789E0 4E 80 00 20 */ blr
+
+.global PSVECMag
+PSVECMag:
+/* 8027CD84 002789E4 E0 03 00 00 */ psq_l f0, 0(r3), 0, qr0
+/* 8027CD88 002789E8 C0 82 A0 A8 */ lfs f4, lbl_806426A8-_SDA2_BASE_(r2)
+/* 8027CD8C 002789EC 10 00 00 32 */ ps_mul f0, f0, f0
+/* 8027CD90 002789F0 C0 23 00 08 */ lfs f1, 8(r3)
+/* 8027CD94 002789F4 EC 44 20 28 */ fsubs f2, f4, f4
+/* 8027CD98 002789F8 10 21 00 7A */ ps_madd f1, f1, f1, f0
+/* 8027CD9C 002789FC 10 21 00 14 */ ps_sum0 f1, f1, f0, f0
+/* 8027CDA0 00278A00 FC 01 10 00 */ fcmpu cr0, f1, f2
+/* 8027CDA4 00278A04 4D 82 00 20 */ beqlr
+/* 8027CDA8 00278A08 FC 00 08 34 */ frsqrte f0, f1
+/* 8027CDAC 00278A0C C0 62 A0 AC */ lfs f3, lbl_806426AC-_SDA2_BASE_(r2)
+/* 8027CDB0 00278A10 EC 40 00 32 */ fmuls f2, f0, f0
+/* 8027CDB4 00278A14 EC 00 01 32 */ fmuls f0, f0, f4
+/* 8027CDB8 00278A18 EC 42 18 7C */ fnmsubs f2, f2, f1, f3
+/* 8027CDBC 00278A1C EC 02 00 32 */ fmuls f0, f2, f0
+/* 8027CDC0 00278A20 EC 21 00 32 */ fmuls f1, f1, f0
+/* 8027CDC4 00278A24 4E 80 00 20 */ blr
+
+.global PSQUATDotProduct
+PSQUATDotProduct:
+/* 8027CDC8 00278A28 E0 43 00 04 */ psq_l f2, 4(r3), 0, qr0
+/* 8027CDCC 00278A2C E0 64 00 04 */ psq_l f3, 4(r4), 0, qr0
+/* 8027CDD0 00278A30 10 42 00 F2 */ ps_mul f2, f2, f3
+/* 8027CDD4 00278A34 E0 A3 00 00 */ psq_l f5, 0(r3), 0, qr0
+/* 8027CDD8 00278A38 E0 84 00 00 */ psq_l f4, 0(r4), 0, qr0
+/* 8027CDDC 00278A3C 10 65 11 3A */ ps_madd f3, f5, f4, f2
+/* 8027CDE0 00278A40 10 23 10 94 */ ps_sum0 f1, f3, f2, f2
+/* 8027CDE4 00278A44 4E 80 00 20 */ blr
+
+.global PSVECCrossProduct
+PSVECCrossProduct:
+/* 8027CDE8 00278A48 E0 24 00 00 */ psq_l f1, 0(r4), 0, qr0
+/* 8027CDEC 00278A4C C0 43 00 08 */ lfs f2, 8(r3)
+/* 8027CDF0 00278A50 E0 03 00 00 */ psq_l f0, 0(r3), 0, qr0
+/* 8027CDF4 00278A54 10 C1 0C A0 */ ps_merge10 f6, f1, f1
+/* 8027CDF8 00278A58 C0 64 00 08 */ lfs f3, 8(r4)
+/* 8027CDFC 00278A5C 10 81 00 B2 */ ps_mul f4, f1, f2
+/* 8027CE00 00278A60 10 E1 00 18 */ ps_muls0 f7, f1, f0
+/* 8027CE04 00278A64 10 A0 20 F8 */ ps_msub f5, f0, f3, f4
+/* 8027CE08 00278A68 11 00 39 B8 */ ps_msub f8, f0, f6, f7
+/* 8027CE0C 00278A6C 11 25 2C E0 */ ps_merge11 f9, f5, f5
+/* 8027CE10 00278A70 11 45 44 60 */ ps_merge01 f10, f5, f8
+/* 8027CE14 00278A74 F1 25 80 00 */ psq_st f9, 0(r5), 1, qr0
+/* 8027CE18 00278A78 11 40 50 50 */ ps_neg f10, f10
+/* 8027CE1C 00278A7C F1 45 00 04 */ psq_st f10, 4(r5), 0, qr0
+/* 8027CE20 00278A80 4E 80 00 20 */ blr
+
+.global C_VECHalfAngle
+C_VECHalfAngle:
+/* 8027CE24 00278A84 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 8027CE28 00278A88 7C 08 02 A6 */ mflr r0
+/* 8027CE2C 00278A8C C0 43 00 00 */ lfs f2, 0(r3)
+/* 8027CE30 00278A90 C0 23 00 04 */ lfs f1, 4(r3)
+/* 8027CE34 00278A94 C0 03 00 08 */ lfs f0, 8(r3)
+/* 8027CE38 00278A98 FC A0 10 50 */ fneg f5, f2
+/* 8027CE3C 00278A9C C0 44 00 00 */ lfs f2, 0(r4)
+/* 8027CE40 00278AA0 FC 80 08 50 */ fneg f4, f1
+/* 8027CE44 00278AA4 C0 24 00 04 */ lfs f1, 4(r4)
+/* 8027CE48 00278AA8 FC 60 00 50 */ fneg f3, f0
+/* 8027CE4C 00278AAC C0 04 00 08 */ lfs f0, 8(r4)
+/* 8027CE50 00278AB0 90 01 00 44 */ stw r0, 0x44(r1)
+/* 8027CE54 00278AB4 38 61 00 20 */ addi r3, r1, 0x20
+/* 8027CE58 00278AB8 FC 40 10 50 */ fneg f2, f2
+/* 8027CE5C 00278ABC 7C 64 1B 78 */ mr r4, r3
+/* 8027CE60 00278AC0 93 E1 00 3C */ stw r31, 0x3c(r1)
+/* 8027CE64 00278AC4 FC 20 08 50 */ fneg f1, f1
+/* 8027CE68 00278AC8 FC 00 00 50 */ fneg f0, f0
+/* 8027CE6C 00278ACC 7C BF 2B 78 */ mr r31, r5
+/* 8027CE70 00278AD0 D0 A1 00 20 */ stfs f5, 0x20(r1)
+/* 8027CE74 00278AD4 D0 81 00 24 */ stfs f4, 0x24(r1)
+/* 8027CE78 00278AD8 D0 61 00 28 */ stfs f3, 0x28(r1)
+/* 8027CE7C 00278ADC D0 41 00 14 */ stfs f2, 0x14(r1)
+/* 8027CE80 00278AE0 D0 21 00 18 */ stfs f1, 0x18(r1)
+/* 8027CE84 00278AE4 D0 01 00 1C */ stfs f0, 0x1c(r1)
+/* 8027CE88 00278AE8 4B FF FE A1 */ bl PSVECNormalize
+/* 8027CE8C 00278AEC 38 61 00 14 */ addi r3, r1, 0x14
+/* 8027CE90 00278AF0 7C 64 1B 78 */ mr r4, r3
+/* 8027CE94 00278AF4 4B FF FE 95 */ bl PSVECNormalize
+/* 8027CE98 00278AF8 38 61 00 20 */ addi r3, r1, 0x20
+/* 8027CE9C 00278AFC 38 81 00 14 */ addi r4, r1, 0x14
+/* 8027CEA0 00278B00 38 A1 00 08 */ addi r5, r1, 8
+/* 8027CEA4 00278B04 4B FF FE 21 */ bl PSVECAdd
+/* 8027CEA8 00278B08 38 61 00 08 */ addi r3, r1, 8
+/* 8027CEAC 00278B0C 7C 64 1B 78 */ mr r4, r3
+/* 8027CEB0 00278B10 4B FF FF 19 */ bl PSQUATDotProduct
+/* 8027CEB4 00278B14 C0 02 A0 B0 */ lfs f0, lbl_806426B0-_SDA2_BASE_(r2)
+/* 8027CEB8 00278B18 FC 01 00 40 */ fcmpo cr0, f1, f0
+/* 8027CEBC 00278B1C 40 81 00 14 */ ble lbl_8027CED0
+/* 8027CEC0 00278B20 7F E4 FB 78 */ mr r4, r31
+/* 8027CEC4 00278B24 38 61 00 08 */ addi r3, r1, 8
+/* 8027CEC8 00278B28 4B FF FE 61 */ bl PSVECNormalize
+/* 8027CECC 00278B2C 48 00 00 1C */ b lbl_8027CEE8
+lbl_8027CED0:
+/* 8027CED0 00278B30 80 61 00 08 */ lwz r3, 8(r1)
+/* 8027CED4 00278B34 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 8027CED8 00278B38 90 7F 00 00 */ stw r3, 0(r31)
+/* 8027CEDC 00278B3C 90 1F 00 04 */ stw r0, 4(r31)
+/* 8027CEE0 00278B40 80 01 00 10 */ lwz r0, 0x10(r1)
+/* 8027CEE4 00278B44 90 1F 00 08 */ stw r0, 8(r31)
+lbl_8027CEE8:
+/* 8027CEE8 00278B48 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 8027CEEC 00278B4C 83 E1 00 3C */ lwz r31, 0x3c(r1)
+/* 8027CEF0 00278B50 7C 08 03 A6 */ mtlr r0
+/* 8027CEF4 00278B54 38 21 00 40 */ addi r1, r1, 0x40
+/* 8027CEF8 00278B58 4E 80 00 20 */ blr
+
+.global C_VECReflect
+C_VECReflect:
+/* 8027CEFC 00278B5C 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 8027CF00 00278B60 7C 08 02 A6 */ mflr r0
+/* 8027CF04 00278B64 C0 43 00 00 */ lfs f2, 0(r3)
+/* 8027CF08 00278B68 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8027CF0C 00278B6C C0 23 00 04 */ lfs f1, 4(r3)
+/* 8027CF10 00278B70 FC 40 10 50 */ fneg f2, f2
+/* 8027CF14 00278B74 C0 03 00 08 */ lfs f0, 8(r3)
+/* 8027CF18 00278B78 38 61 00 14 */ addi r3, r1, 0x14
+/* 8027CF1C 00278B7C 93 E1 00 2C */ stw r31, 0x2c(r1)
+/* 8027CF20 00278B80 FC 20 08 50 */ fneg f1, f1
+/* 8027CF24 00278B84 FC 00 00 50 */ fneg f0, f0
+/* 8027CF28 00278B88 93 C1 00 28 */ stw r30, 0x28(r1)
+/* 8027CF2C 00278B8C 7C 9E 23 78 */ mr r30, r4
+/* 8027CF30 00278B90 7C BF 2B 78 */ mr r31, r5
+/* 8027CF34 00278B94 7C 64 1B 78 */ mr r4, r3
+/* 8027CF38 00278B98 D0 41 00 14 */ stfs f2, 0x14(r1)
+/* 8027CF3C 00278B9C D0 21 00 18 */ stfs f1, 0x18(r1)
+/* 8027CF40 00278BA0 D0 01 00 1C */ stfs f0, 0x1c(r1)
+/* 8027CF44 00278BA4 4B FF FD E5 */ bl PSVECNormalize
+/* 8027CF48 00278BA8 7F C3 F3 78 */ mr r3, r30
+/* 8027CF4C 00278BAC 38 81 00 08 */ addi r4, r1, 8
+/* 8027CF50 00278BB0 4B FF FD D9 */ bl PSVECNormalize
+/* 8027CF54 00278BB4 38 61 00 14 */ addi r3, r1, 0x14
+/* 8027CF58 00278BB8 38 81 00 08 */ addi r4, r1, 8
+/* 8027CF5C 00278BBC 4B FF FE 6D */ bl PSQUATDotProduct
+/* 8027CF60 00278BC0 C0 62 A0 B4 */ lfs f3, lbl_806426B4-_SDA2_BASE_(r2)
+/* 8027CF64 00278BC4 7F E3 FB 78 */ mr r3, r31
+/* 8027CF68 00278BC8 C0 41 00 08 */ lfs f2, 8(r1)
+/* 8027CF6C 00278BCC 7F E4 FB 78 */ mr r4, r31
+/* 8027CF70 00278BD0 C0 01 00 14 */ lfs f0, 0x14(r1)
+/* 8027CF74 00278BD4 EC 43 00 B2 */ fmuls f2, f3, f2
+/* 8027CF78 00278BD8 EC 42 00 72 */ fmuls f2, f2, f1
+/* 8027CF7C 00278BDC EC 02 00 28 */ fsubs f0, f2, f0
+/* 8027CF80 00278BE0 D0 1F 00 00 */ stfs f0, 0(r31)
+/* 8027CF84 00278BE4 C0 41 00 0C */ lfs f2, 0xc(r1)
+/* 8027CF88 00278BE8 C0 01 00 18 */ lfs f0, 0x18(r1)
+/* 8027CF8C 00278BEC EC 43 00 B2 */ fmuls f2, f3, f2
+/* 8027CF90 00278BF0 EC 42 00 72 */ fmuls f2, f2, f1
+/* 8027CF94 00278BF4 EC 02 00 28 */ fsubs f0, f2, f0
+/* 8027CF98 00278BF8 D0 1F 00 04 */ stfs f0, 4(r31)
+/* 8027CF9C 00278BFC C0 41 00 10 */ lfs f2, 0x10(r1)
+/* 8027CFA0 00278C00 C0 01 00 1C */ lfs f0, 0x1c(r1)
+/* 8027CFA4 00278C04 EC 43 00 B2 */ fmuls f2, f3, f2
+/* 8027CFA8 00278C08 EC 22 00 72 */ fmuls f1, f2, f1
+/* 8027CFAC 00278C0C EC 01 00 28 */ fsubs f0, f1, f0
+/* 8027CFB0 00278C10 D0 1F 00 08 */ stfs f0, 8(r31)
+/* 8027CFB4 00278C14 4B FF FD 75 */ bl PSVECNormalize
+/* 8027CFB8 00278C18 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8027CFBC 00278C1C 83 E1 00 2C */ lwz r31, 0x2c(r1)
+/* 8027CFC0 00278C20 83 C1 00 28 */ lwz r30, 0x28(r1)
+/* 8027CFC4 00278C24 7C 08 03 A6 */ mtlr r0
+/* 8027CFC8 00278C28 38 21 00 30 */ addi r1, r1, 0x30
+/* 8027CFCC 00278C2C 4E 80 00 20 */ blr
+
+.global PSVECDistance
+PSVECDistance:
+/* 8027CFD0 00278C30 E0 03 00 04 */ psq_l f0, 4(r3), 0, qr0
+/* 8027CFD4 00278C34 E0 24 00 04 */ psq_l f1, 4(r4), 0, qr0
+/* 8027CFD8 00278C38 C0 62 A0 A8 */ lfs f3, lbl_806426A8-_SDA2_BASE_(r2)
+/* 8027CFDC 00278C3C 10 40 08 28 */ ps_sub f2, f0, f1
+/* 8027CFE0 00278C40 E0 03 00 00 */ psq_l f0, 0(r3), 0, qr0
+/* 8027CFE4 00278C44 E0 24 00 00 */ psq_l f1, 0(r4), 0, qr0
+/* 8027CFE8 00278C48 EC 83 18 28 */ fsubs f4, f3, f3
+/* 8027CFEC 00278C4C 10 42 00 B2 */ ps_mul f2, f2, f2
+/* 8027CFF0 00278C50 10 00 08 28 */ ps_sub f0, f0, f1
+/* 8027CFF4 00278C54 10 20 10 3A */ ps_madd f1, f0, f0, f2
+/* 8027CFF8 00278C58 10 21 10 94 */ ps_sum0 f1, f1, f2, f2
+/* 8027CFFC 00278C5C FC 04 08 00 */ fcmpu cr0, f4, f1
+/* 8027D000 00278C60 4D 82 00 20 */ beqlr
+/* 8027D004 00278C64 FC 00 08 34 */ frsqrte f0, f1
+/* 8027D008 00278C68 C0 82 A0 AC */ lfs f4, lbl_806426AC-_SDA2_BASE_(r2)
+/* 8027D00C 00278C6C EC 40 00 32 */ fmuls f2, f0, f0
+/* 8027D010 00278C70 EC 00 00 F2 */ fmuls f0, f0, f3
+/* 8027D014 00278C74 EC 42 20 7C */ fnmsubs f2, f2, f1, f4
+/* 8027D018 00278C78 EC 02 00 32 */ fmuls f0, f2, f0
+/* 8027D01C 00278C7C EC 21 00 32 */ fmuls f1, f1, f0
+/* 8027D020 00278C80 4E 80 00 20 */ blr
diff --git a/asm/SDK/OS/OSFatal.s b/asm/SDK/OS/OSFatal.s
index 48724b9..f497fed 100644
--- a/asm/SDK/OS/OSFatal.s
+++ b/asm/SDK/OS/OSFatal.s
@@ -391,7 +391,7 @@ lbl_8026D3E8:
/* 8026D3FC 0026905C 38 60 00 08 */ li r3, 8
/* 8026D400 00269060 38 84 95 94 */ addi r4, r4, OSDefaultExceptionHandler@l
/* 8026D404 00269064 4B FF C0 D1 */ bl __OSSetExceptionHandler
-/* 8026D408 00269068 48 01 34 91 */ bl func_80280898
+/* 8026D408 00269068 48 01 34 91 */ bl GXAbortFrame
/* 8026D40C 0026906C 3C 60 81 40 */ lis r3, 0x8140
/* 8026D410 00269070 4B FF CD 15 */ bl OSSetArenaLo
/* 8026D414 00269074 3C 60 80 00 */ lis r3, 0x80000038@ha