summaryrefslogtreecommitdiff
path: root/asm/SDK
diff options
context:
space:
mode:
Diffstat (limited to 'asm/SDK')
-rw-r--r--asm/SDK/GX/GXDisplayList.s135
-rw-r--r--asm/SDK/GX/GXDraw.s257
-rw-r--r--asm/SDK/GX/GXGeometry.s8
-rw-r--r--asm/SDK/GX/GXInit.s20
-rw-r--r--asm/SDK/GX/GXPerf.s548
-rw-r--r--asm/SDK/GX/GXTransform.s463
-rw-r--r--asm/SDK/HBM/HBMBase.s2
7 files changed, 1418 insertions, 15 deletions
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/GXGeometry.s b/asm/SDK/GX/GXGeometry.s
index ced9906..bfda501 100644
--- a/asm/SDK/GX/GXGeometry.s
+++ b/asm/SDK/GX/GXGeometry.s
@@ -163,17 +163,17 @@ 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 func_80286DC8
+/* 802810FC 0027CD5C 48 00 5C CD */ bl __GXSetMatrixIndex
/* 80281100 0027CD60 38 60 00 05 */ li r3, 5
-/* 80281104 0027CD64 48 00 5C C5 */ bl func_80286DC8
+/* 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 func_80286C04
+/* 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 func_80286994
+/* 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)
diff --git a/asm/SDK/GX/GXInit.s b/asm/SDK/GX/GXInit.s
index 5705adc..b4ec32a 100644
--- a/asm/SDK/GX/GXInit.s
+++ b/asm/SDK/GX/GXInit.s
@@ -800,17 +800,17 @@ lbl_8027E0E0:
/* 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 func_80286AD8
+/* 8027E1DC 00279E3C 48 00 88 FD */ bl GXLoadNrmMtxImm
/* 8027E1E0 00279E40 38 60 00 00 */ li r3, 0
-/* 8027E1E4 00279E44 48 00 89 4D */ bl func_80286B30
+/* 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 func_80286B50
+/* 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 func_80286B50
+/* 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)
@@ -824,23 +824,23 @@ lbl_8027E0E0:
/* 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 func_80286CD0
+/* 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 func_80286A3C
+/* 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 func_80286DA0
+/* 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 func_80286CFC
+/* 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 func_80286D64
+/* 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
@@ -1182,7 +1182,7 @@ lbl_8027E6DC:
/* 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 func_80286E50
+/* 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)
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/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 0cbc740..02c73fc 100644
--- a/asm/SDK/HBM/HBMBase.s
+++ b/asm/SDK/HBM/HBMBase.s
@@ -10310,7 +10310,7 @@ initgx__10homebuttonFv:
/* 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
+/* 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