diff options
Diffstat (limited to 'asm/SDK/OS')
-rw-r--r-- | asm/SDK/OS/OS.s | 12 | ||||
-rw-r--r-- | asm/SDK/OS/OSAlarm.s | 2 | ||||
-rw-r--r-- | asm/SDK/OS/OSContext.s | 4 | ||||
-rw-r--r-- | asm/SDK/OS/OSExec.s | 40 | ||||
-rw-r--r-- | asm/SDK/OS/OSFatal.s | 6 | ||||
-rw-r--r-- | asm/SDK/OS/OSInterrupt.s | 599 | ||||
-rw-r--r-- | asm/SDK/OS/OSLink.s | 12 | ||||
-rw-r--r-- | asm/SDK/OS/OSMemory.s | 582 | ||||
-rw-r--r-- | asm/SDK/OS/OSMessage.s | 150 | ||||
-rw-r--r-- | asm/SDK/OS/OSMutex.s | 240 | ||||
-rw-r--r-- | asm/SDK/OS/OSReboot.s | 38 | ||||
-rw-r--r-- | asm/SDK/OS/OSReset.s | 554 |
12 files changed, 2207 insertions, 32 deletions
diff --git a/asm/SDK/OS/OS.s b/asm/SDK/OS/OS.s index 623dfb7..2b26a35 100644 --- a/asm/SDK/OS/OS.s +++ b/asm/SDK/OS/OS.s @@ -223,7 +223,7 @@ lbl_80268684: /* 80268690 002642F0 38 63 00 21 */ addi r3, r3, 0x10000021@l /* 80268694 002642F4 48 00 00 F4 */ b lbl_80268788 lbl_80268698: -/* 80268698 002642F8 48 00 6A 71 */ bl func_8026F108 +/* 80268698 002642F8 48 00 6A 71 */ bl OSGetPhysicalMem2Size /* 8026869C 002642FC 2C 1F 00 02 */ cmpwi r31, 2 /* 802686A0 00264300 41 82 00 68 */ beq lbl_80268708 /* 802686A4 00264304 40 80 00 14 */ bge lbl_802686B8 @@ -742,9 +742,9 @@ lbl_80268D40: /* 80268DA4 00264A04 54 05 06 3E */ clrlwi r5, r0, 0x18 /* 80268DA8 00264A08 4C C6 31 82 */ crclr 6 /* 80268DAC 00264A0C 4B D9 ED 19 */ bl func_80007AC4 -/* 80268DB0 00264A10 48 00 63 71 */ bl func_8026F120 +/* 80268DB0 00264A10 48 00 63 71 */ bl OSGetConsoleSimulatedMem2Size /* 80268DB4 00264A14 7C 7E 1B 78 */ mr r30, r3 -/* 80268DB8 00264A18 48 00 63 5D */ bl func_8026F114 +/* 80268DB8 00264A18 48 00 63 5D */ bl OSGetConsoleSimulatedMem1Size /* 80268DBC 00264A1C 7C 03 F2 14 */ add r0, r3, r30 /* 80268DC0 00264A20 38 7F 01 A8 */ addi r3, r31, 0x1a8 /* 80268DC4 00264A24 54 04 65 3E */ srwi r4, r0, 0x14 @@ -931,8 +931,8 @@ lbl_8026905C: /* 80269060 00264CC0 48 00 01 CD */ bl OSExceptionInit /* 80269064 00264CC4 48 00 7F 9D */ bl func_80271000 /* 80269068 00264CC8 48 00 06 65 */ bl __OSInitAlarm -/* 8026906C 00264CCC 48 00 5E 75 */ bl func_8026EEE0 -/* 80269070 00264CD0 48 00 57 5D */ bl func_8026E7CC +/* 8026906C 00264CCC 48 00 5E 75 */ bl __OSModuleInit +/* 80269070 00264CD0 48 00 57 5D */ bl __OSInterruptInit /* 80269074 00264CD4 48 00 23 E1 */ bl __OSContextInit /* 80269078 00264CD8 48 00 1A 65 */ bl __OSCacheInit /* 8026907C 00264CDC 48 00 C6 05 */ bl func_80275680 @@ -946,7 +946,7 @@ lbl_8026905C: /* 8026909C 00264CFC 80 0D A7 68 */ lwz r0, lbl_8063FA28-_SDA_BASE_(r13) /* 802690A0 00264D00 2C 00 00 00 */ cmpwi r0, 0 /* 802690A4 00264D04 40 82 00 08 */ bne lbl_802690AC -/* 802690A8 00264D08 48 00 67 B9 */ bl func_8026F860 +/* 802690A8 00264D08 48 00 67 B9 */ bl __OSInitMemoryProtection lbl_802690AC: /* 802690AC 00264D0C 4B FF FA ED */ bl ReportOSInfo /* 802690B0 00264D10 80 8D 87 80 */ lwz r4, lbl_8063DA40-_SDA_BASE_(r13) diff --git a/asm/SDK/OS/OSAlarm.s b/asm/SDK/OS/OSAlarm.s index b5112aa..5917b24 100644 --- a/asm/SDK/OS/OSAlarm.s +++ b/asm/SDK/OS/OSAlarm.s @@ -21,7 +21,7 @@ __OSInitAlarm: /* 80269704 00265364 4B FF FD D1 */ bl __OSSetExceptionHandler /* 80269708 00265368 3C 60 80 42 */ lis r3, lbl_804269D0@ha /* 8026970C 0026536C 38 63 69 D0 */ addi r3, r3, lbl_804269D0@l -/* 80269710 00265370 48 00 65 81 */ bl func_8026FC90 +/* 80269710 00265370 48 00 65 81 */ bl OSRegisterShutdownFunction lbl_80269714: /* 80269714 00265374 80 01 00 14 */ lwz r0, 0x14(r1) /* 80269718 00265378 7C 08 03 A6 */ mtlr r0 diff --git a/asm/SDK/OS/OSContext.s b/asm/SDK/OS/OSContext.s index 718a60b..5279d5a 100644 --- a/asm/SDK/OS/OSContext.s +++ b/asm/SDK/OS/OSContext.s @@ -238,8 +238,8 @@ OSLoadContext: /* 8026AF58 00266BB8 38 A4 E7 5C */ addi r5, r4, OSDisableInterrupts@l /* 8026AF5C 00266BBC 7C 06 28 40 */ cmplw r6, r5 /* 8026AF60 00266BC0 40 81 00 18 */ ble lbl_8026AF78 -/* 8026AF64 00266BC4 3C 80 80 27 */ lis r4, lbl_8026E768@ha -/* 8026AF68 00266BC8 38 04 E7 68 */ addi r0, r4, lbl_8026E768@l +/* 8026AF64 00266BC4 3C 80 80 27 */ lis r4, __RAS_OSDisableInterrupts_end@ha +/* 8026AF68 00266BC8 38 04 E7 68 */ addi r0, r4, __RAS_OSDisableInterrupts_end@l /* 8026AF6C 00266BCC 7C 06 00 40 */ cmplw r6, r0 /* 8026AF70 00266BD0 40 80 00 08 */ bge lbl_8026AF78 /* 8026AF74 00266BD4 90 A3 01 98 */ stw r5, 0x198(r3) diff --git a/asm/SDK/OS/OSExec.s b/asm/SDK/OS/OSExec.s index 35e59dd..99f1b84 100644 --- a/asm/SDK/OS/OSExec.s +++ b/asm/SDK/OS/OSExec.s @@ -191,7 +191,7 @@ lbl_8026BD9C: /* 8026BDBC 00267A1C 38 63 71 98 */ addi r3, r3, lbl_80427198@l /* 8026BDC0 00267A20 4C C6 31 82 */ crclr 6 /* 8026BDC4 00267A24 4B D9 BD 01 */ bl func_80007AC4 -/* 8026BDC8 00267A28 48 00 45 5D */ bl func_80270324 +/* 8026BDC8 00267A28 48 00 45 5D */ bl __OSReturnToMenuForError lbl_8026BDCC: /* 8026BDCC 00267A2C 38 7F BD 00 */ addi r3, r31, -17152 /* 8026BDD0 00267A30 38 00 00 00 */ li r0, 0 @@ -214,7 +214,7 @@ lbl_8026BDF0: /* 8026BE10 00267A70 38 63 71 98 */ addi r3, r3, lbl_80427198@l /* 8026BE14 00267A74 4C C6 31 82 */ crclr 6 /* 8026BE18 00267A78 4B D9 BC AD */ bl func_80007AC4 -/* 8026BE1C 00267A7C 48 00 45 09 */ bl func_80270324 +/* 8026BE1C 00267A7C 48 00 45 09 */ bl __OSReturnToMenuForError lbl_8026BE20: /* 8026BE20 00267A80 38 7F BD 20 */ addi r3, r31, -17120 /* 8026BE24 00267A84 38 00 00 00 */ li r0, 0 @@ -238,7 +238,7 @@ lbl_8026BE48: /* 8026BE68 00267AC8 38 63 71 98 */ addi r3, r3, lbl_80427198@l /* 8026BE6C 00267ACC 4C C6 31 82 */ crclr 6 /* 8026BE70 00267AD0 4B D9 BC 55 */ bl func_80007AC4 -/* 8026BE74 00267AD4 48 00 44 B1 */ bl func_80270324 +/* 8026BE74 00267AD4 48 00 44 B1 */ bl __OSReturnToMenuForError lbl_8026BE78: /* 8026BE78 00267AD8 38 60 00 00 */ li r3, 0 /* 8026BE7C 00267ADC 80 CD A7 DC */ lwz r6, lbl_8063FA9C-_SDA_BASE_(r13) @@ -283,7 +283,7 @@ lbl_8026BEE8: /* 8026BF08 00267B68 38 63 71 98 */ addi r3, r3, lbl_80427198@l /* 8026BF0C 00267B6C 4C C6 31 82 */ crclr 6 /* 8026BF10 00267B70 4B D9 BB B5 */ bl func_80007AC4 -/* 8026BF14 00267B74 48 00 44 11 */ bl func_80270324 +/* 8026BF14 00267B74 48 00 44 11 */ bl __OSReturnToMenuForError lbl_8026BF18: /* 8026BF18 00267B78 38 00 00 00 */ li r0, 0 /* 8026BF1C 00267B7C 3C 60 80 27 */ lis r3, callback@ha @@ -302,7 +302,7 @@ lbl_8026BF2C: /* 8026BF4C 00267BAC 38 63 71 98 */ addi r3, r3, lbl_80427198@l /* 8026BF50 00267BB0 4C C6 31 82 */ crclr 6 /* 8026BF54 00267BB4 4B D9 BB 71 */ bl func_80007AC4 -/* 8026BF58 00267BB8 48 00 43 CD */ bl func_80270324 +/* 8026BF58 00267BB8 48 00 43 CD */ bl __OSReturnToMenuForError lbl_8026BF5C: /* 8026BF5C 00267BBC 38 BF BD 40 */ addi r5, r31, -17088 /* 8026BF60 00267BC0 3B A0 00 00 */ li r29, 0 @@ -402,7 +402,7 @@ lbl_8026C098: /* 8026C0B8 00267D18 38 63 71 98 */ addi r3, r3, lbl_80427198@l /* 8026C0BC 00267D1C 4C C6 31 82 */ crclr 6 /* 8026C0C0 00267D20 4B D9 BA 05 */ bl func_80007AC4 -/* 8026C0C4 00267D24 48 00 42 61 */ bl func_80270324 +/* 8026C0C4 00267D24 48 00 42 61 */ bl __OSReturnToMenuForError lbl_8026C0C8: /* 8026C0C8 00267D28 38 7F BD 00 */ addi r3, r31, -17152 /* 8026C0CC 00267D2C 38 00 00 00 */ li r0, 0 @@ -425,7 +425,7 @@ lbl_8026C0EC: /* 8026C10C 00267D6C 38 63 71 98 */ addi r3, r3, lbl_80427198@l /* 8026C110 00267D70 4C C6 31 82 */ crclr 6 /* 8026C114 00267D74 4B D9 B9 B1 */ bl func_80007AC4 -/* 8026C118 00267D78 48 00 42 0D */ bl func_80270324 +/* 8026C118 00267D78 48 00 42 0D */ bl __OSReturnToMenuForError lbl_8026C11C: /* 8026C11C 00267D7C 38 7F BD 20 */ addi r3, r31, -17120 /* 8026C120 00267D80 38 00 00 00 */ li r0, 0 @@ -449,7 +449,7 @@ lbl_8026C144: /* 8026C164 00267DC4 38 63 71 98 */ addi r3, r3, lbl_80427198@l /* 8026C168 00267DC8 4C C6 31 82 */ crclr 6 /* 8026C16C 00267DCC 4B D9 B9 59 */ bl func_80007AC4 -/* 8026C170 00267DD0 48 00 41 B5 */ bl func_80270324 +/* 8026C170 00267DD0 48 00 41 B5 */ bl __OSReturnToMenuForError lbl_8026C174: /* 8026C174 00267DD4 38 60 00 00 */ li r3, 0 /* 8026C178 00267DD8 80 CD A7 DC */ lwz r6, lbl_8063FA9C-_SDA_BASE_(r13) @@ -494,7 +494,7 @@ lbl_8026C1E4: /* 8026C204 00267E64 38 63 71 98 */ addi r3, r3, lbl_80427198@l /* 8026C208 00267E68 4C C6 31 82 */ crclr 6 /* 8026C20C 00267E6C 4B D9 B8 B9 */ bl func_80007AC4 -/* 8026C210 00267E70 48 00 41 15 */ bl func_80270324 +/* 8026C210 00267E70 48 00 41 15 */ bl __OSReturnToMenuForError lbl_8026C214: /* 8026C214 00267E74 39 61 00 30 */ addi r11, r1, 0x30 /* 8026C218 00267E78 4B F5 AF 5D */ bl _restgpr_27 @@ -711,9 +711,9 @@ lbl_8026C4F4: /* 8026C510 00268170 38 63 BC FC */ addi r3, r3, Callback@l /* 8026C514 00268174 48 02 01 F1 */ bl func_8028C704 /* 8026C518 00268178 38 60 FF F0 */ li r3, -16 -/* 8026C51C 0026817C 48 00 25 D1 */ bl func_8026EAEC +/* 8026C51C 0026817C 48 00 25 D1 */ bl __OSMaskInterrupts /* 8026C520 00268180 38 60 00 10 */ li r3, 0x10 -/* 8026C524 00268184 48 00 26 49 */ bl func_8026EB6C +/* 8026C524 00268184 48 00 26 49 */ bl __OSUnmaskInterrupts /* 8026C528 00268188 48 00 22 49 */ bl OSEnableInterrupts lbl_8026C52C: /* 8026C52C 0026818C 80 0D A7 E4 */ lwz r0, lbl_8063FAA4-_SDA_BASE_(r13) @@ -756,7 +756,7 @@ lbl_8026C5A0: /* 8026C5B8 00268218 2C 03 00 00 */ cmpwi r3, 0 /* 8026C5BC 0026821C 40 80 00 08 */ bge lbl_8026C5C4 lbl_8026C5C0: -/* 8026C5C0 00268220 48 00 3D 65 */ bl func_80270324 +/* 8026C5C0 00268220 48 00 3D 65 */ bl __OSReturnToMenuForError lbl_8026C5C4: /* 8026C5C4 00268224 38 61 00 E0 */ addi r3, r1, 0xe0 /* 8026C5C8 00268228 48 01 F8 3D */ bl func_8028BE04 @@ -790,7 +790,7 @@ lbl_8026C614: /* 8026C62C 0026828C 2C 03 00 00 */ cmpwi r3, 0 /* 8026C630 00268290 40 80 00 08 */ bge lbl_8026C638 lbl_8026C634: -/* 8026C634 00268294 48 00 3C F1 */ bl func_80270324 +/* 8026C634 00268294 48 00 3C F1 */ bl __OSReturnToMenuForError lbl_8026C638: /* 8026C638 00268298 38 61 01 10 */ addi r3, r1, 0x110 /* 8026C63C 0026829C 48 01 F7 C9 */ bl func_8028BE04 @@ -828,7 +828,7 @@ lbl_8026C69C: /* 8026C6B4 00268314 2C 03 00 00 */ cmpwi r3, 0 /* 8026C6B8 00268318 40 80 00 08 */ bge lbl_8026C6C0 lbl_8026C6BC: -/* 8026C6BC 0026831C 48 00 3C 69 */ bl func_80270324 +/* 8026C6BC 0026831C 48 00 3C 69 */ bl __OSReturnToMenuForError lbl_8026C6C0: /* 8026C6C0 00268320 38 61 01 40 */ addi r3, r1, 0x140 /* 8026C6C4 00268324 48 01 F7 41 */ bl func_8028BE04 @@ -865,7 +865,7 @@ lbl_8026C71C: /* 8026C734 00268394 2C 03 00 00 */ cmpwi r3, 0 /* 8026C738 00268398 40 80 00 08 */ bge lbl_8026C740 lbl_8026C73C: -/* 8026C73C 0026839C 48 00 3B E9 */ bl func_80270324 +/* 8026C73C 0026839C 48 00 3B E9 */ bl __OSReturnToMenuForError lbl_8026C740: /* 8026C740 002683A0 38 61 01 70 */ addi r3, r1, 0x170 /* 8026C744 002683A4 48 01 F6 C1 */ bl func_8028BE04 @@ -920,7 +920,7 @@ lbl_8026C7E8: /* 8026C800 00268460 2C 03 00 00 */ cmpwi r3, 0 /* 8026C804 00268464 40 80 00 08 */ bge lbl_8026C80C lbl_8026C808: -/* 8026C808 00268468 48 00 3B 1D */ bl func_80270324 +/* 8026C808 00268468 48 00 3B 1D */ bl __OSReturnToMenuForError lbl_8026C80C: /* 8026C80C 0026846C 38 61 00 B0 */ addi r3, r1, 0xb0 /* 8026C810 00268470 48 01 F5 F5 */ bl func_8028BE04 @@ -987,7 +987,7 @@ lbl_8026C8D8: /* 8026C8F0 00268550 2C 03 00 00 */ cmpwi r3, 0 /* 8026C8F4 00268554 40 80 00 08 */ bge lbl_8026C8FC lbl_8026C8F8: -/* 8026C8F8 00268558 48 00 3A 2D */ bl func_80270324 +/* 8026C8F8 00268558 48 00 3A 2D */ bl __OSReturnToMenuForError lbl_8026C8FC: /* 8026C8FC 0026855C 38 61 00 80 */ addi r3, r1, 0x80 /* 8026C900 00268560 48 01 F5 05 */ bl func_8028BE04 @@ -1060,7 +1060,7 @@ lbl_8026C9E4: /* 8026C9FC 0026865C 2C 03 00 00 */ cmpwi r3, 0 /* 8026CA00 00268660 40 80 00 08 */ bge lbl_8026CA08 lbl_8026CA04: -/* 8026CA04 00268664 48 00 39 21 */ bl func_80270324 +/* 8026CA04 00268664 48 00 39 21 */ bl __OSReturnToMenuForError lbl_8026CA08: /* 8026CA08 00268668 38 61 00 50 */ addi r3, r1, 0x50 /* 8026CA0C 0026866C 48 01 F3 F9 */ bl func_8028BE04 @@ -1100,7 +1100,7 @@ lbl_8026CA70: /* 8026CA88 002686E8 2C 03 00 00 */ cmpwi r3, 0 /* 8026CA8C 002686EC 40 80 00 08 */ bge lbl_8026CA94 lbl_8026CA90: -/* 8026CA90 002686F0 48 00 38 95 */ bl func_80270324 +/* 8026CA90 002686F0 48 00 38 95 */ bl __OSReturnToMenuForError lbl_8026CA94: /* 8026CA94 002686F4 38 61 00 20 */ addi r3, r1, 0x20 /* 8026CA98 002686F8 48 01 F3 6D */ bl func_8028BE04 @@ -1136,7 +1136,7 @@ __OSBootDol: /* 8026CB00 00268760 93 A1 00 34 */ stw r29, 0x34(r1) /* 8026CB04 00268764 7C 9D 23 78 */ mr r29, r4 /* 8026CB08 00268768 38 81 00 08 */ addi r4, r1, 8 -/* 8026CB0C 0026876C 48 00 31 71 */ bl func_8026FC7C +/* 8026CB0C 0026876C 48 00 31 71 */ bl OSGetSaveRegion /* 8026CB10 00268770 7F E5 FB 78 */ mr r5, r31 /* 8026CB14 00268774 38 61 00 10 */ addi r3, r1, 0x10 /* 8026CB18 00268778 38 8D 87 C8 */ addi r4, r13, lbl_8063DA88-_SDA_BASE_ diff --git a/asm/SDK/OS/OSFatal.s b/asm/SDK/OS/OSFatal.s index 611f14c..0931a20 100644 --- a/asm/SDK/OS/OSFatal.s +++ b/asm/SDK/OS/OSFatal.s @@ -309,7 +309,7 @@ OSFatal: /* 8026D2CC 00268F2C 4B FF D2 7D */ bl __OSStopAudioSystem
/* 8026D2D0 00268F30 48 00 AF 0D */ bl func_802781DC
/* 8026D2D4 00268F34 38 60 00 80 */ li r3, 0x80
-/* 8026D2D8 00268F38 48 00 18 95 */ bl func_8026EB6C
+/* 8026D2D8 00268F38 48 00 18 95 */ bl __OSUnmaskInterrupts
/* 8026D2DC 00268F3C 38 60 00 01 */ li r3, 1
/* 8026D2E0 00268F40 48 00 C5 49 */ bl func_80279828
/* 8026D2E4 00268F44 48 00 C3 C5 */ bl func_802796A8
@@ -335,7 +335,7 @@ lbl_8026D304: lbl_8026D330:
/* 8026D330 00268F90 38 60 00 00 */ li r3, 0
/* 8026D334 00268F94 38 80 00 00 */ li r4, 0
-/* 8026D338 00268F98 48 00 29 E1 */ bl func_8026FD18
+/* 8026D338 00268F98 48 00 29 E1 */ bl __OSCallShutdownFunctions
/* 8026D33C 00268F9C 2C 03 00 00 */ cmpwi r3, 0
/* 8026D340 00268FA0 40 82 00 40 */ bne lbl_8026D380
/* 8026D344 00268FA4 48 00 54 75 */ bl OSGetTime
@@ -357,7 +357,7 @@ lbl_8026D380: /* 8026D380 00268FE0 48 00 13 DD */ bl OSDisableInterrupts
/* 8026D384 00268FE4 38 60 00 01 */ li r3, 1
/* 8026D388 00268FE8 38 80 00 00 */ li r4, 0
-/* 8026D38C 00268FEC 48 00 29 8D */ bl func_8026FD18
+/* 8026D38C 00268FEC 48 00 29 8D */ bl __OSCallShutdownFunctions
/* 8026D390 00268FF0 38 60 00 00 */ li r3, 0
/* 8026D394 00268FF4 38 80 00 00 */ li r4, 0
/* 8026D398 00268FF8 48 00 79 45 */ bl func_80274CDC
diff --git a/asm/SDK/OS/OSInterrupt.s b/asm/SDK/OS/OSInterrupt.s new file mode 100644 index 0000000..b4810bd --- /dev/null +++ b/asm/SDK/OS/OSInterrupt.s @@ -0,0 +1,599 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global OSDisableInterrupts
+OSDisableInterrupts:
+/* 8026E75C 0026A3BC 7C 60 00 A6 */ mfmsr r3
+/* 8026E760 0026A3C0 54 64 04 5E */ rlwinm r4, r3, 0, 0x11, 0xf
+/* 8026E764 0026A3C4 7C 80 01 24 */ mtmsr r4
+.global __RAS_OSDisableInterrupts_end
+__RAS_OSDisableInterrupts_end:
+/* 8026E768 0026A3C8 54 63 8F FE */ rlwinm r3, r3, 0x11, 0x1f, 0x1f
+/* 8026E76C 0026A3CC 4E 80 00 20 */ blr
+
+.global OSEnableInterrupts
+OSEnableInterrupts:
+/* 8026E770 0026A3D0 7C 60 00 A6 */ mfmsr r3
+/* 8026E774 0026A3D4 60 64 80 00 */ ori r4, r3, 0x8000
+/* 8026E778 0026A3D8 7C 80 01 24 */ mtmsr r4
+/* 8026E77C 0026A3DC 54 63 8F FE */ rlwinm r3, r3, 0x11, 0x1f, 0x1f
+/* 8026E780 0026A3E0 4E 80 00 20 */ blr
+
+.global OSRestoreInterrupts
+OSRestoreInterrupts:
+/* 8026E784 0026A3E4 2C 03 00 00 */ cmpwi r3, 0
+/* 8026E788 0026A3E8 7C 80 00 A6 */ mfmsr r4
+/* 8026E78C 0026A3EC 41 82 00 0C */ beq lbl_8026E798
+/* 8026E790 0026A3F0 60 85 80 00 */ ori r5, r4, 0x8000
+/* 8026E794 0026A3F4 48 00 00 08 */ b lbl_8026E79C
+lbl_8026E798:
+/* 8026E798 0026A3F8 54 85 04 5E */ rlwinm r5, r4, 0, 0x11, 0xf
+lbl_8026E79C:
+/* 8026E79C 0026A3FC 7C A0 01 24 */ mtmsr r5
+/* 8026E7A0 0026A400 54 83 8F FE */ rlwinm r3, r4, 0x11, 0x1f, 0x1f
+/* 8026E7A4 0026A404 4E 80 00 20 */ blr
+
+.global __OSSetInterruptHandler
+__OSSetInterruptHandler:
+/* 8026E7A8 0026A408 80 AD A8 08 */ lwz r5, lbl_8063FAC8-_SDA_BASE_(r13)
+/* 8026E7AC 0026A40C 54 60 10 3A */ slwi r0, r3, 2
+/* 8026E7B0 0026A410 7C 65 00 2E */ lwzx r3, r5, r0
+/* 8026E7B4 0026A414 7C 85 01 2E */ stwx r4, r5, r0
+/* 8026E7B8 0026A418 4E 80 00 20 */ blr
+
+.global __OSGetInterruptHandler
+__OSGetInterruptHandler:
+/* 8026E7BC 0026A41C 80 8D A8 08 */ lwz r4, lbl_8063FAC8-_SDA_BASE_(r13)
+/* 8026E7C0 0026A420 54 60 10 3A */ slwi r0, r3, 2
+/* 8026E7C4 0026A424 7C 64 00 2E */ lwzx r3, r4, r0
+/* 8026E7C8 0026A428 4E 80 00 20 */ blr
+
+.global __OSInterruptInit
+__OSInterruptInit:
+/* 8026E7CC 0026A42C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8026E7D0 0026A430 7C 08 02 A6 */ mflr r0
+/* 8026E7D4 0026A434 38 80 00 00 */ li r4, 0
+/* 8026E7D8 0026A438 38 A0 00 80 */ li r5, 0x80
+/* 8026E7DC 0026A43C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8026E7E0 0026A440 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8026E7E4 0026A444 3F E0 80 00 */ lis r31, 0x80003040@ha
+/* 8026E7E8 0026A448 38 7F 30 40 */ addi r3, r31, 0x80003040@l
+/* 8026E7EC 0026A44C 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8026E7F0 0026A450 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8026E7F4 0026A454 90 6D A8 08 */ stw r3, lbl_8063FAC8-_SDA_BASE_(r13)
+/* 8026E7F8 0026A458 4B D9 59 0D */ bl memset
+/* 8026E7FC 0026A45C 38 C0 00 00 */ li r6, 0
+/* 8026E800 0026A460 38 A0 00 F0 */ li r5, 0xf0
+/* 8026E804 0026A464 90 DF 00 C4 */ stw r6, 0xc4(r31)
+/* 8026E808 0026A468 3C 80 CC 00 */ lis r4, 0xCC003004@ha
+/* 8026E80C 0026A46C 3C 00 40 00 */ lis r0, 0x4000
+/* 8026E810 0026A470 3C 60 CD 00 */ lis r3, 0xCD000034@ha
+/* 8026E814 0026A474 90 DF 00 C8 */ stw r6, 0xc8(r31)
+/* 8026E818 0026A478 3B C0 FF F0 */ li r30, -16
+/* 8026E81C 0026A47C 90 A4 30 04 */ stw r5, 0xCC003004@l(r4)
+/* 8026E820 0026A480 90 03 00 34 */ stw r0, 0xCD000034@l(r3)
+/* 8026E824 0026A484 4B FF FF 39 */ bl OSDisableInterrupts
+/* 8026E828 0026A488 80 1F 00 C4 */ lwz r0, 0xc4(r31)
+/* 8026E82C 0026A48C 7C 7D 1B 78 */ mr r29, r3
+/* 8026E830 0026A490 80 9F 00 C8 */ lwz r4, 0xc8(r31)
+/* 8026E834 0026A494 7F DE 03 78 */ or r30, r30, r0
+/* 8026E838 0026A498 7C 00 20 F8 */ nor r0, r0, r4
+/* 8026E83C 0026A49C 93 DF 00 C4 */ stw r30, 0xc4(r31)
+/* 8026E840 0026A4A0 54 03 00 36 */ rlwinm r3, r0, 0, 0, 0x1b
+/* 8026E844 0026A4A4 7F DE 23 78 */ or r30, r30, r4
+/* 8026E848 0026A4A8 48 00 00 0C */ b lbl_8026E854
+lbl_8026E84C:
+/* 8026E84C 0026A4AC 7F C4 F3 78 */ mr r4, r30
+/* 8026E850 0026A4B0 48 00 00 41 */ bl SetInterruptMask
+lbl_8026E854:
+/* 8026E854 0026A4B4 2C 03 00 00 */ cmpwi r3, 0
+/* 8026E858 0026A4B8 40 82 FF F4 */ bne lbl_8026E84C
+/* 8026E85C 0026A4BC 7F A3 EB 78 */ mr r3, r29
+/* 8026E860 0026A4C0 4B FF FF 25 */ bl OSRestoreInterrupts
+/* 8026E864 0026A4C4 3C 80 80 27 */ lis r4, ExternalInterruptHandler@ha
+/* 8026E868 0026A4C8 38 60 00 04 */ li r3, 4
+/* 8026E86C 0026A4CC 38 84 EE 90 */ addi r4, r4, ExternalInterruptHandler@l
+/* 8026E870 0026A4D0 4B FF AC 65 */ bl __OSSetExceptionHandler
+/* 8026E874 0026A4D4 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8026E878 0026A4D8 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8026E87C 0026A4DC 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8026E880 0026A4E0 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8026E884 0026A4E4 7C 08 03 A6 */ mtlr r0
+/* 8026E888 0026A4E8 38 21 00 20 */ addi r1, r1, 0x20
+/* 8026E88C 0026A4EC 4E 80 00 20 */ blr
+
+.global SetInterruptMask
+SetInterruptMask:
+/* 8026E890 0026A4F0 7C 60 00 34 */ cntlzw r0, r3
+/* 8026E894 0026A4F4 2C 00 00 0C */ cmpwi r0, 0xc
+/* 8026E898 0026A4F8 40 80 00 24 */ bge lbl_8026E8BC
+/* 8026E89C 0026A4FC 2C 00 00 08 */ cmpwi r0, 8
+/* 8026E8A0 0026A500 41 82 00 CC */ beq lbl_8026E96C
+/* 8026E8A4 0026A504 40 80 00 F4 */ bge lbl_8026E998
+/* 8026E8A8 0026A508 2C 00 00 05 */ cmpwi r0, 5
+/* 8026E8AC 0026A50C 40 80 00 80 */ bge lbl_8026E92C
+/* 8026E8B0 0026A510 2C 00 00 00 */ cmpwi r0, 0
+/* 8026E8B4 0026A514 40 80 00 28 */ bge lbl_8026E8DC
+/* 8026E8B8 0026A518 4E 80 00 20 */ blr
+lbl_8026E8BC:
+/* 8026E8BC 0026A51C 2C 00 00 11 */ cmpwi r0, 0x11
+/* 8026E8C0 0026A520 40 80 00 10 */ bge lbl_8026E8D0
+/* 8026E8C4 0026A524 2C 00 00 0F */ cmpwi r0, 0xf
+/* 8026E8C8 0026A528 40 80 01 58 */ bge lbl_8026EA20
+/* 8026E8CC 0026A52C 48 00 01 10 */ b lbl_8026E9DC
+lbl_8026E8D0:
+/* 8026E8D0 0026A530 2C 00 00 1C */ cmpwi r0, 0x1c
+/* 8026E8D4 0026A534 4C 80 00 20 */ bgelr
+/* 8026E8D8 0026A538 48 00 01 7C */ b lbl_8026EA54
+lbl_8026E8DC:
+/* 8026E8DC 0026A53C 54 80 00 01 */ rlwinm. r0, r4, 0, 0, 0
+/* 8026E8E0 0026A540 38 A0 00 00 */ li r5, 0
+/* 8026E8E4 0026A544 40 82 00 08 */ bne lbl_8026E8EC
+/* 8026E8E8 0026A548 60 A5 00 01 */ ori r5, r5, 1
+lbl_8026E8EC:
+/* 8026E8EC 0026A54C 54 80 00 43 */ rlwinm. r0, r4, 0, 1, 1
+/* 8026E8F0 0026A550 40 82 00 08 */ bne lbl_8026E8F8
+/* 8026E8F4 0026A554 60 A5 00 02 */ ori r5, r5, 2
+lbl_8026E8F8:
+/* 8026E8F8 0026A558 54 80 00 85 */ rlwinm. r0, r4, 0, 2, 2
+/* 8026E8FC 0026A55C 40 82 00 08 */ bne lbl_8026E904
+/* 8026E900 0026A560 60 A5 00 04 */ ori r5, r5, 4
+lbl_8026E904:
+/* 8026E904 0026A564 54 80 00 C7 */ rlwinm. r0, r4, 0, 3, 3
+/* 8026E908 0026A568 40 82 00 08 */ bne lbl_8026E910
+/* 8026E90C 0026A56C 60 A5 00 08 */ ori r5, r5, 8
+lbl_8026E910:
+/* 8026E910 0026A570 54 80 01 09 */ rlwinm. r0, r4, 0, 4, 4
+/* 8026E914 0026A574 40 82 00 08 */ bne lbl_8026E91C
+/* 8026E918 0026A578 60 A5 00 10 */ ori r5, r5, 0x10
+lbl_8026E91C:
+/* 8026E91C 0026A57C 3C 80 CC 00 */ lis r4, 0xCC00401C@ha
+/* 8026E920 0026A580 54 63 01 7E */ clrlwi r3, r3, 5
+/* 8026E924 0026A584 B0 A4 40 1C */ sth r5, 0xCC00401C@l(r4)
+/* 8026E928 0026A588 4E 80 00 20 */ blr
+lbl_8026E92C:
+/* 8026E92C 0026A58C 3C A0 CC 00 */ lis r5, 0xCC00500A@ha
+/* 8026E930 0026A590 54 80 01 4B */ rlwinm. r0, r4, 0, 5, 5
+/* 8026E934 0026A594 A0 A5 50 0A */ lhz r5, 0xCC00500A@l(r5)
+/* 8026E938 0026A598 54 A5 07 6C */ rlwinm r5, r5, 0, 0x1d, 0x16
+/* 8026E93C 0026A59C 40 82 00 08 */ bne lbl_8026E944
+/* 8026E940 0026A5A0 60 A5 00 10 */ ori r5, r5, 0x10
+lbl_8026E944:
+/* 8026E944 0026A5A4 54 80 01 8D */ rlwinm. r0, r4, 0, 6, 6
+/* 8026E948 0026A5A8 40 82 00 08 */ bne lbl_8026E950
+/* 8026E94C 0026A5AC 60 A5 00 40 */ ori r5, r5, 0x40
+lbl_8026E950:
+/* 8026E950 0026A5B0 54 80 01 CF */ rlwinm. r0, r4, 0, 7, 7
+/* 8026E954 0026A5B4 40 82 00 08 */ bne lbl_8026E95C
+/* 8026E958 0026A5B8 60 A5 01 00 */ ori r5, r5, 0x100
+lbl_8026E95C:
+/* 8026E95C 0026A5BC 3C 80 CC 00 */ lis r4, 0xCC00500A@ha
+/* 8026E960 0026A5C0 54 63 02 08 */ rlwinm r3, r3, 0, 8, 4
+/* 8026E964 0026A5C4 B0 A4 50 0A */ sth r5, 0xCC00500A@l(r4)
+/* 8026E968 0026A5C8 4E 80 00 20 */ blr
+lbl_8026E96C:
+/* 8026E96C 0026A5CC 54 80 02 11 */ rlwinm. r0, r4, 0, 8, 8
+/* 8026E970 0026A5D0 3C 80 CD 00 */ lis r4, 0xCD006C00@ha
+/* 8026E974 0026A5D4 80 A4 6C 00 */ lwz r5, 0xCD006C00@l(r4)
+/* 8026E978 0026A5D8 38 00 FF D3 */ li r0, -45
+/* 8026E97C 0026A5DC 7C A5 00 38 */ and r5, r5, r0
+/* 8026E980 0026A5E0 40 82 00 08 */ bne lbl_8026E988
+/* 8026E984 0026A5E4 60 A5 00 04 */ ori r5, r5, 4
+lbl_8026E988:
+/* 8026E988 0026A5E8 3C 80 CD 00 */ lis r4, 0xCD006C00@ha
+/* 8026E98C 0026A5EC 54 63 02 4E */ rlwinm r3, r3, 0, 9, 7
+/* 8026E990 0026A5F0 90 A4 6C 00 */ stw r5, 0xCD006C00@l(r4)
+/* 8026E994 0026A5F4 4E 80 00 20 */ blr
+lbl_8026E998:
+/* 8026E998 0026A5F8 54 80 02 53 */ rlwinm. r0, r4, 0, 9, 9
+/* 8026E99C 0026A5FC 3C A0 CD 00 */ lis r5, 0xCD006800@ha
+/* 8026E9A0 0026A600 80 A5 68 00 */ lwz r5, 0xCD006800@l(r5)
+/* 8026E9A4 0026A604 38 00 D3 F0 */ li r0, -11280
+/* 8026E9A8 0026A608 7C A5 00 38 */ and r5, r5, r0
+/* 8026E9AC 0026A60C 40 82 00 08 */ bne lbl_8026E9B4
+/* 8026E9B0 0026A610 60 A5 00 01 */ ori r5, r5, 1
+lbl_8026E9B4:
+/* 8026E9B4 0026A614 54 80 02 95 */ rlwinm. r0, r4, 0, 0xa, 0xa
+/* 8026E9B8 0026A618 40 82 00 08 */ bne lbl_8026E9C0
+/* 8026E9BC 0026A61C 60 A5 00 04 */ ori r5, r5, 4
+lbl_8026E9C0:
+/* 8026E9C0 0026A620 54 80 02 D7 */ rlwinm. r0, r4, 0, 0xb, 0xb
+/* 8026E9C4 0026A624 40 82 00 08 */ bne lbl_8026E9CC
+/* 8026E9C8 0026A628 60 A5 04 00 */ ori r5, r5, 0x400
+lbl_8026E9CC:
+/* 8026E9CC 0026A62C 3C 80 CD 00 */ lis r4, 0xCD006800@ha
+/* 8026E9D0 0026A630 54 63 03 10 */ rlwinm r3, r3, 0, 0xc, 8
+/* 8026E9D4 0026A634 90 A4 68 00 */ stw r5, 0xCD006800@l(r4)
+/* 8026E9D8 0026A638 4E 80 00 20 */ blr
+lbl_8026E9DC:
+/* 8026E9DC 0026A63C 54 80 03 19 */ rlwinm. r0, r4, 0, 0xc, 0xc
+/* 8026E9E0 0026A640 3C A0 CD 00 */ lis r5, 0xCD006814@ha
+/* 8026E9E4 0026A644 80 A5 68 14 */ lwz r5, 0xCD006814@l(r5)
+/* 8026E9E8 0026A648 38 00 F3 F0 */ li r0, -3088
+/* 8026E9EC 0026A64C 7C A5 00 38 */ and r5, r5, r0
+/* 8026E9F0 0026A650 40 82 00 08 */ bne lbl_8026E9F8
+/* 8026E9F4 0026A654 60 A5 00 01 */ ori r5, r5, 1
+lbl_8026E9F8:
+/* 8026E9F8 0026A658 54 80 03 5B */ rlwinm. r0, r4, 0, 0xd, 0xd
+/* 8026E9FC 0026A65C 40 82 00 08 */ bne lbl_8026EA04
+/* 8026EA00 0026A660 60 A5 00 04 */ ori r5, r5, 4
+lbl_8026EA04:
+/* 8026EA04 0026A664 54 80 03 9D */ rlwinm. r0, r4, 0, 0xe, 0xe
+/* 8026EA08 0026A668 40 82 00 08 */ bne lbl_8026EA10
+/* 8026EA0C 0026A66C 60 A5 04 00 */ ori r5, r5, 0x400
+lbl_8026EA10:
+/* 8026EA10 0026A670 3C 80 CD 00 */ lis r4, 0xCD006814@ha
+/* 8026EA14 0026A674 54 63 03 D6 */ rlwinm r3, r3, 0, 0xf, 0xb
+/* 8026EA18 0026A678 90 A4 68 14 */ stw r5, 0xCD006814@l(r4)
+/* 8026EA1C 0026A67C 4E 80 00 20 */ blr
+lbl_8026EA20:
+/* 8026EA20 0026A680 3C A0 CD 00 */ lis r5, 0xCD006828@ha
+/* 8026EA24 0026A684 54 80 03 DF */ rlwinm. r0, r4, 0, 0xf, 0xf
+/* 8026EA28 0026A688 80 A5 68 28 */ lwz r5, 0xCD006828@l(r5)
+/* 8026EA2C 0026A68C 54 A5 00 36 */ rlwinm r5, r5, 0, 0, 0x1b
+/* 8026EA30 0026A690 40 82 00 08 */ bne lbl_8026EA38
+/* 8026EA34 0026A694 60 A5 00 01 */ ori r5, r5, 1
+lbl_8026EA38:
+/* 8026EA38 0026A698 54 80 04 21 */ rlwinm. r0, r4, 0, 0x10, 0x10
+/* 8026EA3C 0026A69C 40 82 00 08 */ bne lbl_8026EA44
+/* 8026EA40 0026A6A0 60 A5 00 04 */ ori r5, r5, 4
+lbl_8026EA44:
+/* 8026EA44 0026A6A4 3C 80 CD 00 */ lis r4, 0xCD006828@ha
+/* 8026EA48 0026A6A8 54 63 04 5C */ rlwinm r3, r3, 0, 0x11, 0xe
+/* 8026EA4C 0026A6AC 90 A4 68 28 */ stw r5, 0xCD006828@l(r4)
+/* 8026EA50 0026A6B0 4E 80 00 20 */ blr
+lbl_8026EA54:
+/* 8026EA54 0026A6B4 54 80 04 63 */ rlwinm. r0, r4, 0, 0x11, 0x11
+/* 8026EA58 0026A6B8 38 A0 00 F0 */ li r5, 0xf0
+/* 8026EA5C 0026A6BC 40 82 00 08 */ bne lbl_8026EA64
+/* 8026EA60 0026A6C0 60 A5 08 00 */ ori r5, r5, 0x800
+lbl_8026EA64:
+/* 8026EA64 0026A6C4 54 80 05 29 */ rlwinm. r0, r4, 0, 0x14, 0x14
+/* 8026EA68 0026A6C8 40 82 00 08 */ bne lbl_8026EA70
+/* 8026EA6C 0026A6CC 60 A5 00 08 */ ori r5, r5, 8
+lbl_8026EA70:
+/* 8026EA70 0026A6D0 54 80 05 6B */ rlwinm. r0, r4, 0, 0x15, 0x15
+/* 8026EA74 0026A6D4 40 82 00 08 */ bne lbl_8026EA7C
+/* 8026EA78 0026A6D8 60 A5 00 04 */ ori r5, r5, 4
+lbl_8026EA7C:
+/* 8026EA7C 0026A6DC 54 80 05 AD */ rlwinm. r0, r4, 0, 0x16, 0x16
+/* 8026EA80 0026A6E0 40 82 00 08 */ bne lbl_8026EA88
+/* 8026EA84 0026A6E4 60 A5 00 02 */ ori r5, r5, 2
+lbl_8026EA88:
+/* 8026EA88 0026A6E8 54 80 05 EF */ rlwinm. r0, r4, 0, 0x17, 0x17
+/* 8026EA8C 0026A6EC 40 82 00 08 */ bne lbl_8026EA94
+/* 8026EA90 0026A6F0 60 A5 00 01 */ ori r5, r5, 1
+lbl_8026EA94:
+/* 8026EA94 0026A6F4 54 80 06 31 */ rlwinm. r0, r4, 0, 0x18, 0x18
+/* 8026EA98 0026A6F8 40 82 00 08 */ bne lbl_8026EAA0
+/* 8026EA9C 0026A6FC 60 A5 01 00 */ ori r5, r5, 0x100
+lbl_8026EAA0:
+/* 8026EAA0 0026A700 54 80 06 73 */ rlwinm. r0, r4, 0, 0x19, 0x19
+/* 8026EAA4 0026A704 40 82 00 08 */ bne lbl_8026EAAC
+/* 8026EAA8 0026A708 60 A5 10 00 */ ori r5, r5, 0x1000
+lbl_8026EAAC:
+/* 8026EAAC 0026A70C 54 80 04 A5 */ rlwinm. r0, r4, 0, 0x12, 0x12
+/* 8026EAB0 0026A710 40 82 00 08 */ bne lbl_8026EAB8
+/* 8026EAB4 0026A714 60 A5 02 00 */ ori r5, r5, 0x200
+lbl_8026EAB8:
+/* 8026EAB8 0026A718 54 80 04 E7 */ rlwinm. r0, r4, 0, 0x13, 0x13
+/* 8026EABC 0026A71C 40 82 00 08 */ bne lbl_8026EAC4
+/* 8026EAC0 0026A720 60 A5 04 00 */ ori r5, r5, 0x400
+lbl_8026EAC4:
+/* 8026EAC4 0026A724 54 80 06 B5 */ rlwinm. r0, r4, 0, 0x1a, 0x1a
+/* 8026EAC8 0026A728 40 82 00 08 */ bne lbl_8026EAD0
+/* 8026EACC 0026A72C 60 A5 20 00 */ ori r5, r5, 0x2000
+lbl_8026EAD0:
+/* 8026EAD0 0026A730 54 80 06 F7 */ rlwinm. r0, r4, 0, 0x1b, 0x1b
+/* 8026EAD4 0026A734 40 82 00 08 */ bne lbl_8026EADC
+/* 8026EAD8 0026A738 60 A5 40 00 */ ori r5, r5, 0x4000
+lbl_8026EADC:
+/* 8026EADC 0026A73C 3C 80 CC 00 */ lis r4, 0xCC003004@ha
+/* 8026EAE0 0026A740 54 63 07 20 */ rlwinm r3, r3, 0, 0x1c, 0x10
+/* 8026EAE4 0026A744 90 A4 30 04 */ stw r5, 0xCC003004@l(r4)
+/* 8026EAE8 0026A748 4E 80 00 20 */ blr
+
+.global __OSMaskInterrupts
+__OSMaskInterrupts:
+/* 8026EAEC 0026A74C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8026EAF0 0026A750 7C 08 02 A6 */ mflr r0
+/* 8026EAF4 0026A754 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8026EAF8 0026A758 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8026EAFC 0026A75C 7C 7F 1B 78 */ mr r31, r3
+/* 8026EB00 0026A760 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8026EB04 0026A764 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8026EB08 0026A768 4B FF FC 55 */ bl OSDisableInterrupts
+/* 8026EB0C 0026A76C 3C 80 80 00 */ lis r4, 0x800000C4@ha
+/* 8026EB10 0026A770 7C 7E 1B 78 */ mr r30, r3
+/* 8026EB14 0026A774 83 A4 00 C4 */ lwz r29, 0x800000C4@l(r4)
+/* 8026EB18 0026A778 80 A4 00 C8 */ lwz r5, 0xc8(r4)
+/* 8026EB1C 0026A77C 7F A0 2B 78 */ or r0, r29, r5
+/* 8026EB20 0026A780 7F E3 00 78 */ andc r3, r31, r0
+/* 8026EB24 0026A784 7F FF EB 78 */ or r31, r31, r29
+/* 8026EB28 0026A788 93 E4 00 C4 */ stw r31, 0xc4(r4)
+/* 8026EB2C 0026A78C 7F FF 2B 78 */ or r31, r31, r5
+/* 8026EB30 0026A790 48 00 00 0C */ b lbl_8026EB3C
+lbl_8026EB34:
+/* 8026EB34 0026A794 7F E4 FB 78 */ mr r4, r31
+/* 8026EB38 0026A798 4B FF FD 59 */ bl SetInterruptMask
+lbl_8026EB3C:
+/* 8026EB3C 0026A79C 2C 03 00 00 */ cmpwi r3, 0
+/* 8026EB40 0026A7A0 40 82 FF F4 */ bne lbl_8026EB34
+/* 8026EB44 0026A7A4 7F C3 F3 78 */ mr r3, r30
+/* 8026EB48 0026A7A8 4B FF FC 3D */ bl OSRestoreInterrupts
+/* 8026EB4C 0026A7AC 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8026EB50 0026A7B0 7F A3 EB 78 */ mr r3, r29
+/* 8026EB54 0026A7B4 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8026EB58 0026A7B8 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8026EB5C 0026A7BC 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8026EB60 0026A7C0 7C 08 03 A6 */ mtlr r0
+/* 8026EB64 0026A7C4 38 21 00 20 */ addi r1, r1, 0x20
+/* 8026EB68 0026A7C8 4E 80 00 20 */ blr
+
+.global __OSUnmaskInterrupts
+__OSUnmaskInterrupts:
+/* 8026EB6C 0026A7CC 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8026EB70 0026A7D0 7C 08 02 A6 */ mflr r0
+/* 8026EB74 0026A7D4 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8026EB78 0026A7D8 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8026EB7C 0026A7DC 7C 7F 1B 78 */ mr r31, r3
+/* 8026EB80 0026A7E0 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8026EB84 0026A7E4 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8026EB88 0026A7E8 4B FF FB D5 */ bl OSDisableInterrupts
+/* 8026EB8C 0026A7EC 3C 80 80 00 */ lis r4, 0x800000C4@ha
+/* 8026EB90 0026A7F0 7C 7E 1B 78 */ mr r30, r3
+/* 8026EB94 0026A7F4 83 A4 00 C4 */ lwz r29, 0x800000C4@l(r4)
+/* 8026EB98 0026A7F8 80 A4 00 C8 */ lwz r5, 0xc8(r4)
+/* 8026EB9C 0026A7FC 7F A0 2B 78 */ or r0, r29, r5
+/* 8026EBA0 0026A800 7F E3 00 38 */ and r3, r31, r0
+/* 8026EBA4 0026A804 7F BF F8 78 */ andc r31, r29, r31
+/* 8026EBA8 0026A808 93 E4 00 C4 */ stw r31, 0xc4(r4)
+/* 8026EBAC 0026A80C 7F FF 2B 78 */ or r31, r31, r5
+/* 8026EBB0 0026A810 48 00 00 0C */ b lbl_8026EBBC
+lbl_8026EBB4:
+/* 8026EBB4 0026A814 7F E4 FB 78 */ mr r4, r31
+/* 8026EBB8 0026A818 4B FF FC D9 */ bl SetInterruptMask
+lbl_8026EBBC:
+/* 8026EBBC 0026A81C 2C 03 00 00 */ cmpwi r3, 0
+/* 8026EBC0 0026A820 40 82 FF F4 */ bne lbl_8026EBB4
+/* 8026EBC4 0026A824 7F C3 F3 78 */ mr r3, r30
+/* 8026EBC8 0026A828 4B FF FB BD */ bl OSRestoreInterrupts
+/* 8026EBCC 0026A82C 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8026EBD0 0026A830 7F A3 EB 78 */ mr r3, r29
+/* 8026EBD4 0026A834 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8026EBD8 0026A838 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8026EBDC 0026A83C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8026EBE0 0026A840 7C 08 03 A6 */ mtlr r0
+/* 8026EBE4 0026A844 38 21 00 20 */ addi r1, r1, 0x20
+/* 8026EBE8 0026A848 4E 80 00 20 */ blr
+
+.global __OSDispatchInterrupt
+__OSDispatchInterrupt:
+/* 8026EBEC 0026A84C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8026EBF0 0026A850 7C 08 02 A6 */ mflr r0
+/* 8026EBF4 0026A854 3C 60 CC 00 */ lis r3, 0xCC003000@ha
+/* 8026EBF8 0026A858 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8026EBFC 0026A85C 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8026EC00 0026A860 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8026EC04 0026A864 7C 9E 23 78 */ mr r30, r4
+/* 8026EC08 0026A868 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8026EC0C 0026A86C 83 E3 30 00 */ lwz r31, 0xCC003000@l(r3)
+/* 8026EC10 0026A870 80 03 30 04 */ lwz r0, 0x3004(r3)
+/* 8026EC14 0026A874 57 FF 04 1D */ rlwinm. r31, r31, 0, 0x10, 0xe
+/* 8026EC18 0026A878 41 82 00 0C */ beq lbl_8026EC24
+/* 8026EC1C 0026A87C 7F E0 00 39 */ and. r0, r31, r0
+/* 8026EC20 0026A880 40 82 00 0C */ bne lbl_8026EC2C
+lbl_8026EC24:
+/* 8026EC24 0026A884 7F C3 F3 78 */ mr r3, r30
+/* 8026EC28 0026A888 4B FF C3 29 */ bl OSLoadContext
+lbl_8026EC2C:
+/* 8026EC2C 0026A88C 57 E0 06 31 */ rlwinm. r0, r31, 0, 0x18, 0x18
+/* 8026EC30 0026A890 38 00 00 00 */ li r0, 0
+/* 8026EC34 0026A894 41 82 00 48 */ beq lbl_8026EC7C
+/* 8026EC38 0026A898 3C 60 CC 00 */ lis r3, 0xCC00401E@ha
+/* 8026EC3C 0026A89C A0 83 40 1E */ lhz r4, 0xCC00401E@l(r3)
+/* 8026EC40 0026A8A0 54 83 07 FF */ clrlwi. r3, r4, 0x1f
+/* 8026EC44 0026A8A4 41 82 00 08 */ beq lbl_8026EC4C
+/* 8026EC48 0026A8A8 64 00 80 00 */ oris r0, r0, 0x8000
+lbl_8026EC4C:
+/* 8026EC4C 0026A8AC 54 83 07 BD */ rlwinm. r3, r4, 0, 0x1e, 0x1e
+/* 8026EC50 0026A8B0 41 82 00 08 */ beq lbl_8026EC58
+/* 8026EC54 0026A8B4 64 00 40 00 */ oris r0, r0, 0x4000
+lbl_8026EC58:
+/* 8026EC58 0026A8B8 54 83 07 7B */ rlwinm. r3, r4, 0, 0x1d, 0x1d
+/* 8026EC5C 0026A8BC 41 82 00 08 */ beq lbl_8026EC64
+/* 8026EC60 0026A8C0 64 00 20 00 */ oris r0, r0, 0x2000
+lbl_8026EC64:
+/* 8026EC64 0026A8C4 54 83 07 39 */ rlwinm. r3, r4, 0, 0x1c, 0x1c
+/* 8026EC68 0026A8C8 41 82 00 08 */ beq lbl_8026EC70
+/* 8026EC6C 0026A8CC 64 00 10 00 */ oris r0, r0, 0x1000
+lbl_8026EC70:
+/* 8026EC70 0026A8D0 54 83 06 F7 */ rlwinm. r3, r4, 0, 0x1b, 0x1b
+/* 8026EC74 0026A8D4 41 82 00 08 */ beq lbl_8026EC7C
+/* 8026EC78 0026A8D8 64 00 08 00 */ oris r0, r0, 0x800
+lbl_8026EC7C:
+/* 8026EC7C 0026A8DC 57 E3 06 73 */ rlwinm. r3, r31, 0, 0x19, 0x19
+/* 8026EC80 0026A8E0 41 82 00 30 */ beq lbl_8026ECB0
+/* 8026EC84 0026A8E4 3C 60 CC 00 */ lis r3, 0xCC00500A@ha
+/* 8026EC88 0026A8E8 A0 83 50 0A */ lhz r4, 0xCC00500A@l(r3)
+/* 8026EC8C 0026A8EC 54 83 07 39 */ rlwinm. r3, r4, 0, 0x1c, 0x1c
+/* 8026EC90 0026A8F0 41 82 00 08 */ beq lbl_8026EC98
+/* 8026EC94 0026A8F4 64 00 04 00 */ oris r0, r0, 0x400
+lbl_8026EC98:
+/* 8026EC98 0026A8F8 54 83 06 B5 */ rlwinm. r3, r4, 0, 0x1a, 0x1a
+/* 8026EC9C 0026A8FC 41 82 00 08 */ beq lbl_8026ECA4
+/* 8026ECA0 0026A900 64 00 02 00 */ oris r0, r0, 0x200
+lbl_8026ECA4:
+/* 8026ECA4 0026A904 54 83 06 31 */ rlwinm. r3, r4, 0, 0x18, 0x18
+/* 8026ECA8 0026A908 41 82 00 08 */ beq lbl_8026ECB0
+/* 8026ECAC 0026A90C 64 00 01 00 */ oris r0, r0, 0x100
+lbl_8026ECB0:
+/* 8026ECB0 0026A910 57 E3 06 B5 */ rlwinm. r3, r31, 0, 0x1a, 0x1a
+/* 8026ECB4 0026A914 41 82 00 18 */ beq lbl_8026ECCC
+/* 8026ECB8 0026A918 3C 60 CD 00 */ lis r3, 0xCD006C00@ha
+/* 8026ECBC 0026A91C 80 63 6C 00 */ lwz r3, 0xCD006C00@l(r3)
+/* 8026ECC0 0026A920 54 63 07 39 */ rlwinm. r3, r3, 0, 0x1c, 0x1c
+/* 8026ECC4 0026A924 41 82 00 08 */ beq lbl_8026ECCC
+/* 8026ECC8 0026A928 64 00 00 80 */ oris r0, r0, 0x80
+lbl_8026ECCC:
+/* 8026ECCC 0026A92C 57 E3 06 F7 */ rlwinm. r3, r31, 0, 0x1b, 0x1b
+/* 8026ECD0 0026A930 41 82 00 7C */ beq lbl_8026ED4C
+/* 8026ECD4 0026A934 3C 60 CD 00 */ lis r3, 0xCD006800@ha
+/* 8026ECD8 0026A938 80 83 68 00 */ lwz r4, 0xCD006800@l(r3)
+/* 8026ECDC 0026A93C 54 83 07 BD */ rlwinm. r3, r4, 0, 0x1e, 0x1e
+/* 8026ECE0 0026A940 41 82 00 08 */ beq lbl_8026ECE8
+/* 8026ECE4 0026A944 64 00 00 40 */ oris r0, r0, 0x40
+lbl_8026ECE8:
+/* 8026ECE8 0026A948 54 83 07 39 */ rlwinm. r3, r4, 0, 0x1c, 0x1c
+/* 8026ECEC 0026A94C 41 82 00 08 */ beq lbl_8026ECF4
+/* 8026ECF0 0026A950 64 00 00 20 */ oris r0, r0, 0x20
+lbl_8026ECF4:
+/* 8026ECF4 0026A954 54 83 05 29 */ rlwinm. r3, r4, 0, 0x14, 0x14
+/* 8026ECF8 0026A958 41 82 00 08 */ beq lbl_8026ED00
+/* 8026ECFC 0026A95C 64 00 00 10 */ oris r0, r0, 0x10
+lbl_8026ED00:
+/* 8026ED00 0026A960 3C 60 CD 00 */ lis r3, 0xCD006814@ha
+/* 8026ED04 0026A964 80 83 68 14 */ lwz r4, 0xCD006814@l(r3)
+/* 8026ED08 0026A968 54 83 07 BD */ rlwinm. r3, r4, 0, 0x1e, 0x1e
+/* 8026ED0C 0026A96C 41 82 00 08 */ beq lbl_8026ED14
+/* 8026ED10 0026A970 64 00 00 08 */ oris r0, r0, 8
+lbl_8026ED14:
+/* 8026ED14 0026A974 54 83 07 39 */ rlwinm. r3, r4, 0, 0x1c, 0x1c
+/* 8026ED18 0026A978 41 82 00 08 */ beq lbl_8026ED20
+/* 8026ED1C 0026A97C 64 00 00 04 */ oris r0, r0, 4
+lbl_8026ED20:
+/* 8026ED20 0026A980 54 83 05 29 */ rlwinm. r3, r4, 0, 0x14, 0x14
+/* 8026ED24 0026A984 41 82 00 08 */ beq lbl_8026ED2C
+/* 8026ED28 0026A988 64 00 00 02 */ oris r0, r0, 2
+lbl_8026ED2C:
+/* 8026ED2C 0026A98C 3C 60 CD 00 */ lis r3, 0xCD006828@ha
+/* 8026ED30 0026A990 80 83 68 28 */ lwz r4, 0xCD006828@l(r3)
+/* 8026ED34 0026A994 54 83 07 BD */ rlwinm. r3, r4, 0, 0x1e, 0x1e
+/* 8026ED38 0026A998 41 82 00 08 */ beq lbl_8026ED40
+/* 8026ED3C 0026A99C 64 00 00 01 */ oris r0, r0, 1
+lbl_8026ED40:
+/* 8026ED40 0026A9A0 54 83 07 39 */ rlwinm. r3, r4, 0, 0x1c, 0x1c
+/* 8026ED44 0026A9A4 41 82 00 08 */ beq lbl_8026ED4C
+/* 8026ED48 0026A9A8 60 00 80 00 */ ori r0, r0, 0x8000
+lbl_8026ED4C:
+/* 8026ED4C 0026A9AC 57 E3 04 A5 */ rlwinm. r3, r31, 0, 0x12, 0x12
+/* 8026ED50 0026A9B0 41 82 00 08 */ beq lbl_8026ED58
+/* 8026ED54 0026A9B4 60 00 00 20 */ ori r0, r0, 0x20
+lbl_8026ED58:
+/* 8026ED58 0026A9B8 57 E3 04 E7 */ rlwinm. r3, r31, 0, 0x13, 0x13
+/* 8026ED5C 0026A9BC 41 82 00 08 */ beq lbl_8026ED64
+/* 8026ED60 0026A9C0 60 00 00 40 */ ori r0, r0, 0x40
+lbl_8026ED64:
+/* 8026ED64 0026A9C4 57 E3 05 6B */ rlwinm. r3, r31, 0, 0x15, 0x15
+/* 8026ED68 0026A9C8 41 82 00 08 */ beq lbl_8026ED70
+/* 8026ED6C 0026A9CC 60 00 10 00 */ ori r0, r0, 0x1000
+lbl_8026ED70:
+/* 8026ED70 0026A9D0 57 E3 05 AD */ rlwinm. r3, r31, 0, 0x16, 0x16
+/* 8026ED74 0026A9D4 41 82 00 08 */ beq lbl_8026ED7C
+/* 8026ED78 0026A9D8 60 00 20 00 */ ori r0, r0, 0x2000
+lbl_8026ED7C:
+/* 8026ED7C 0026A9DC 57 E3 05 EF */ rlwinm. r3, r31, 0, 0x17, 0x17
+/* 8026ED80 0026A9E0 41 82 00 08 */ beq lbl_8026ED88
+/* 8026ED84 0026A9E4 60 00 00 80 */ ori r0, r0, 0x80
+lbl_8026ED88:
+/* 8026ED88 0026A9E8 57 E3 07 39 */ rlwinm. r3, r31, 0, 0x1c, 0x1c
+/* 8026ED8C 0026A9EC 41 82 00 08 */ beq lbl_8026ED94
+/* 8026ED90 0026A9F0 60 00 08 00 */ ori r0, r0, 0x800
+lbl_8026ED94:
+/* 8026ED94 0026A9F4 57 E3 07 7B */ rlwinm. r3, r31, 0, 0x1d, 0x1d
+/* 8026ED98 0026A9F8 41 82 00 08 */ beq lbl_8026EDA0
+/* 8026ED9C 0026A9FC 60 00 04 00 */ ori r0, r0, 0x400
+lbl_8026EDA0:
+/* 8026EDA0 0026AA00 57 E3 07 BD */ rlwinm. r3, r31, 0, 0x1e, 0x1e
+/* 8026EDA4 0026AA04 41 82 00 08 */ beq lbl_8026EDAC
+/* 8026EDA8 0026AA08 60 00 02 00 */ ori r0, r0, 0x200
+lbl_8026EDAC:
+/* 8026EDAC 0026AA0C 57 E3 05 29 */ rlwinm. r3, r31, 0, 0x14, 0x14
+/* 8026EDB0 0026AA10 41 82 00 08 */ beq lbl_8026EDB8
+/* 8026EDB4 0026AA14 60 00 40 00 */ ori r0, r0, 0x4000
+lbl_8026EDB8:
+/* 8026EDB8 0026AA18 57 E3 07 FF */ clrlwi. r3, r31, 0x1f
+/* 8026EDBC 0026AA1C 41 82 00 08 */ beq lbl_8026EDC4
+/* 8026EDC0 0026AA20 60 00 01 00 */ ori r0, r0, 0x100
+lbl_8026EDC4:
+/* 8026EDC4 0026AA24 57 E3 04 63 */ rlwinm. r3, r31, 0, 0x11, 0x11
+/* 8026EDC8 0026AA28 41 82 00 08 */ beq lbl_8026EDD0
+/* 8026EDCC 0026AA2C 60 00 00 10 */ ori r0, r0, 0x10
+lbl_8026EDD0:
+/* 8026EDD0 0026AA30 3C 60 80 00 */ lis r3, 0x800000C4@ha
+/* 8026EDD4 0026AA34 80 83 00 C4 */ lwz r4, 0x800000C4@l(r3)
+/* 8026EDD8 0026AA38 80 63 00 C8 */ lwz r3, 0xc8(r3)
+/* 8026EDDC 0026AA3C 7C 83 1B 78 */ or r3, r4, r3
+/* 8026EDE0 0026AA40 7C 03 18 79 */ andc. r3, r0, r3
+/* 8026EDE4 0026AA44 41 82 00 88 */ beq lbl_8026EE6C
+/* 8026EDE8 0026AA48 3C 80 80 42 */ lis r4, lbl_80427CD8@ha
+/* 8026EDEC 0026AA4C 38 84 7C D8 */ addi r4, r4, lbl_80427CD8@l
+lbl_8026EDF0:
+/* 8026EDF0 0026AA50 80 04 00 00 */ lwz r0, 0(r4)
+/* 8026EDF4 0026AA54 7C 60 00 39 */ and. r0, r3, r0
+/* 8026EDF8 0026AA58 41 82 00 10 */ beq lbl_8026EE08
+/* 8026EDFC 0026AA5C 7C 00 00 34 */ cntlzw r0, r0
+/* 8026EE00 0026AA60 7C 1D 07 34 */ extsh r29, r0
+/* 8026EE04 0026AA64 48 00 00 0C */ b lbl_8026EE10
+lbl_8026EE08:
+/* 8026EE08 0026AA68 38 84 00 04 */ addi r4, r4, 4
+/* 8026EE0C 0026AA6C 4B FF FF E4 */ b lbl_8026EDF0
+lbl_8026EE10:
+/* 8026EE10 0026AA70 80 6D A8 08 */ lwz r3, lbl_8063FAC8-_SDA_BASE_(r13)
+/* 8026EE14 0026AA74 57 A0 10 3A */ slwi r0, r29, 2
+/* 8026EE18 0026AA78 7F E3 00 2E */ lwzx r31, r3, r0
+/* 8026EE1C 0026AA7C 2C 1F 00 00 */ cmpwi r31, 0
+/* 8026EE20 0026AA80 41 82 00 4C */ beq lbl_8026EE6C
+/* 8026EE24 0026AA84 2C 1D 00 04 */ cmpwi r29, 4
+/* 8026EE28 0026AA88 40 81 00 1C */ ble lbl_8026EE44
+/* 8026EE2C 0026AA8C B3 AD A7 FC */ sth r29, lbl_8063FABC-_SDA_BASE_(r13)
+/* 8026EE30 0026AA90 48 00 39 89 */ bl OSGetTime
+/* 8026EE34 0026AA94 90 8D A8 04 */ stw r4, lbl_8063FAC4-_SDA_BASE_(r13)
+/* 8026EE38 0026AA98 90 6D A8 00 */ stw r3, lbl_8063FAC0-_SDA_BASE_(r13)
+/* 8026EE3C 0026AA9C 80 1E 01 98 */ lwz r0, 0x198(r30)
+/* 8026EE40 0026AAA0 90 0D A7 F8 */ stw r0, lbl_8063FAB8-_SDA_BASE_(r13)
+lbl_8026EE44:
+/* 8026EE44 0026AAA4 48 00 25 01 */ bl func_80271344
+/* 8026EE48 0026AAA8 7F EC FB 78 */ mr r12, r31
+/* 8026EE4C 0026AAAC 7F A3 EB 78 */ mr r3, r29
+/* 8026EE50 0026AAB0 7F C4 F3 78 */ mr r4, r30
+/* 8026EE54 0026AAB4 7D 89 03 A6 */ mtctr r12
+/* 8026EE58 0026AAB8 4E 80 04 21 */ bctrl
+/* 8026EE5C 0026AABC 48 00 25 25 */ bl func_80271380
+/* 8026EE60 0026AAC0 48 00 2A 2D */ bl func_8027188C
+/* 8026EE64 0026AAC4 7F C3 F3 78 */ mr r3, r30
+/* 8026EE68 0026AAC8 4B FF C0 E9 */ bl OSLoadContext
+lbl_8026EE6C:
+/* 8026EE6C 0026AACC 7F C3 F3 78 */ mr r3, r30
+/* 8026EE70 0026AAD0 4B FF C0 E1 */ bl OSLoadContext
+/* 8026EE74 0026AAD4 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8026EE78 0026AAD8 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8026EE7C 0026AADC 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8026EE80 0026AAE0 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8026EE84 0026AAE4 7C 08 03 A6 */ mtlr r0
+/* 8026EE88 0026AAE8 38 21 00 20 */ addi r1, r1, 0x20
+/* 8026EE8C 0026AAEC 4E 80 00 20 */ blr
+
+.global ExternalInterruptHandler
+ExternalInterruptHandler:
+/* 8026EE90 0026AAF0 90 04 00 00 */ stw r0, 0(r4)
+/* 8026EE94 0026AAF4 90 24 00 04 */ stw r1, 4(r4)
+/* 8026EE98 0026AAF8 90 44 00 08 */ stw r2, 8(r4)
+/* 8026EE9C 0026AAFC BC C4 00 18 */ stmw r6, 0x18(r4)
+/* 8026EEA0 0026AB00 7C 11 E2 A6 */ mfspr r0, 0x391
+/* 8026EEA4 0026AB04 90 04 01 A8 */ stw r0, 0x1a8(r4)
+/* 8026EEA8 0026AB08 7C 12 E2 A6 */ mfspr r0, 0x392
+/* 8026EEAC 0026AB0C 90 04 01 AC */ stw r0, 0x1ac(r4)
+/* 8026EEB0 0026AB10 7C 13 E2 A6 */ mfspr r0, 0x393
+/* 8026EEB4 0026AB14 90 04 01 B0 */ stw r0, 0x1b0(r4)
+/* 8026EEB8 0026AB18 7C 14 E2 A6 */ mfspr r0, 0x394
+/* 8026EEBC 0026AB1C 90 04 01 B4 */ stw r0, 0x1b4(r4)
+/* 8026EEC0 0026AB20 7C 15 E2 A6 */ mfspr r0, 0x395
+/* 8026EEC4 0026AB24 90 04 01 B8 */ stw r0, 0x1b8(r4)
+/* 8026EEC8 0026AB28 7C 16 E2 A6 */ mfspr r0, 0x396
+/* 8026EECC 0026AB2C 90 04 01 BC */ stw r0, 0x1bc(r4)
+/* 8026EED0 0026AB30 7C 17 E2 A6 */ mfspr r0, 0x397
+/* 8026EED4 0026AB34 90 04 01 C0 */ stw r0, 0x1c0(r4)
+/* 8026EED8 0026AB38 94 21 FF F8 */ stwu r1, -8(r1)
+/* 8026EEDC 0026AB3C 4B FF FD 10 */ b __OSDispatchInterrupt
diff --git a/asm/SDK/OS/OSLink.s b/asm/SDK/OS/OSLink.s new file mode 100644 index 0000000..cd134ae --- /dev/null +++ b/asm/SDK/OS/OSLink.s @@ -0,0 +1,12 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global __OSModuleInit
+__OSModuleInit:
+/* 8026EEE0 0026AB40 38 00 00 00 */ li r0, 0
+/* 8026EEE4 0026AB44 3C 60 80 00 */ lis r3, 0x800030CC@ha
+/* 8026EEE8 0026AB48 90 03 30 CC */ stw r0, 0x800030CC@l(r3)
+/* 8026EEEC 0026AB4C 90 03 30 C8 */ stw r0, 0x30c8(r3)
+/* 8026EEF0 0026AB50 90 03 30 D0 */ stw r0, 0x30d0(r3)
+/* 8026EEF4 0026AB54 4E 80 00 20 */ blr
diff --git a/asm/SDK/OS/OSMemory.s b/asm/SDK/OS/OSMemory.s new file mode 100644 index 0000000..0ab90cb --- /dev/null +++ b/asm/SDK/OS/OSMemory.s @@ -0,0 +1,582 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global OSGetPhysicalMem1Size
+OSGetPhysicalMem1Size:
+/* 8026F0FC 0026AD5C 3C 60 80 00 */ lis r3, 0x80003100@ha
+/* 8026F100 0026AD60 80 63 31 00 */ lwz r3, 0x80003100@l(r3)
+/* 8026F104 0026AD64 4E 80 00 20 */ blr
+
+.global OSGetPhysicalMem2Size
+OSGetPhysicalMem2Size:
+/* 8026F108 0026AD68 3C 60 80 00 */ lis r3, 0x80003118@ha
+/* 8026F10C 0026AD6C 80 63 31 18 */ lwz r3, 0x80003118@l(r3)
+/* 8026F110 0026AD70 4E 80 00 20 */ blr
+
+.global OSGetConsoleSimulatedMem1Size
+OSGetConsoleSimulatedMem1Size:
+/* 8026F114 0026AD74 3C 60 80 00 */ lis r3, 0x80003104@ha
+/* 8026F118 0026AD78 80 63 31 04 */ lwz r3, 0x80003104@l(r3)
+/* 8026F11C 0026AD7C 4E 80 00 20 */ blr
+
+.global OSGetConsoleSimulatedMem2Size
+OSGetConsoleSimulatedMem2Size:
+/* 8026F120 0026AD80 3C 60 80 00 */ lis r3, 0x8000311C@ha
+/* 8026F124 0026AD84 80 63 31 1C */ lwz r3, 0x8000311C@l(r3)
+/* 8026F128 0026AD88 4E 80 00 20 */ blr
+
+.global OnShutdown
+OnShutdown:
+/* 8026F12C 0026AD8C 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8026F130 0026AD90 7C 08 02 A6 */ mflr r0
+/* 8026F134 0026AD94 2C 03 00 00 */ cmpwi r3, 0
+/* 8026F138 0026AD98 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8026F13C 0026AD9C 41 82 00 18 */ beq lbl_8026F154
+/* 8026F140 0026ADA0 38 00 00 FF */ li r0, 0xff
+/* 8026F144 0026ADA4 3C 60 CC 00 */ lis r3, 0xCC004010@ha
+/* 8026F148 0026ADA8 B0 03 40 10 */ sth r0, 0xCC004010@l(r3)
+/* 8026F14C 0026ADAC 3C 60 F0 00 */ lis r3, 0xf000
+/* 8026F150 0026ADB0 4B FF F9 9D */ bl __OSMaskInterrupts
+lbl_8026F154:
+/* 8026F154 0026ADB4 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8026F158 0026ADB8 38 60 00 01 */ li r3, 1
+/* 8026F15C 0026ADBC 7C 08 03 A6 */ mtlr r0
+/* 8026F160 0026ADC0 38 21 00 10 */ addi r1, r1, 0x10
+/* 8026F164 0026ADC4 4E 80 00 20 */ blr
+
+.global MEMIntrruptHandler
+MEMIntrruptHandler:
+/* 8026F168 0026ADC8 3D 00 CC 00 */ lis r8, 0xCC00401E@ha
+/* 8026F16C 0026ADCC 3C 60 80 50 */ lis r3, lbl_80503CF0@ha
+/* 8026F170 0026ADD0 A0 A8 40 1E */ lhz r5, 0xCC00401E@l(r8)
+/* 8026F174 0026ADD4 38 00 00 00 */ li r0, 0
+/* 8026F178 0026ADD8 A0 E8 40 24 */ lhz r7, 0x4024(r8)
+/* 8026F17C 0026ADDC 38 63 3C F0 */ addi r3, r3, lbl_80503CF0@l
+/* 8026F180 0026ADE0 A0 C8 40 22 */ lhz r6, 0x4022(r8)
+/* 8026F184 0026ADE4 50 E6 81 9E */ rlwimi r6, r7, 0x10, 6, 0xf
+/* 8026F188 0026ADE8 B0 08 40 20 */ sth r0, 0x4020(r8)
+/* 8026F18C 0026ADEC 81 83 00 3C */ lwz r12, 0x3c(r3)
+/* 8026F190 0026ADF0 2C 0C 00 00 */ cmpwi r12, 0
+/* 8026F194 0026ADF4 41 82 00 14 */ beq lbl_8026F1A8
+/* 8026F198 0026ADF8 38 60 00 0F */ li r3, 0xf
+/* 8026F19C 0026ADFC 4C C6 31 82 */ crclr 6
+/* 8026F1A0 0026AE00 7D 89 03 A6 */ mtctr r12
+/* 8026F1A4 0026AE04 4E 80 04 20 */ bctr
+lbl_8026F1A8:
+/* 8026F1A8 0026AE08 38 60 00 0F */ li r3, 0xf
+/* 8026F1AC 0026AE0C 4B FF C6 A4 */ b __OSUnhandledException
+
+.global ConfigMEM1_24MB
+ConfigMEM1_24MB:
+/* 8026F1B0 0026AE10 38 E0 00 00 */ li r7, 0
+/* 8026F1B4 0026AE14 3C 80 00 00 */ lis r4, 0x00000002@ha
+/* 8026F1B8 0026AE18 38 84 00 02 */ addi r4, r4, 0x00000002@l
+/* 8026F1BC 0026AE1C 3C 60 80 00 */ lis r3, 0x800001FF@ha
+/* 8026F1C0 0026AE20 38 63 01 FF */ addi r3, r3, 0x800001FF@l
+/* 8026F1C4 0026AE24 3C C0 01 00 */ lis r6, 0x01000002@ha
+/* 8026F1C8 0026AE28 38 C6 00 02 */ addi r6, r6, 0x01000002@l
+/* 8026F1CC 0026AE2C 3C A0 81 00 */ lis r5, 0x810000FF@ha
+/* 8026F1D0 0026AE30 38 A5 00 FF */ addi r5, r5, 0x810000FF@l
+/* 8026F1D4 0026AE34 4C 00 01 2C */ isync
+/* 8026F1D8 0026AE38 7C F8 83 A6 */ mtdbatu 0, r7
+/* 8026F1DC 0026AE3C 7C 99 83 A6 */ mtdbatl 0, r4
+/* 8026F1E0 0026AE40 7C 78 83 A6 */ mtdbatu 0, r3
+/* 8026F1E4 0026AE44 4C 00 01 2C */ isync
+/* 8026F1E8 0026AE48 7C F0 83 A6 */ mtibatu 0, r7
+/* 8026F1EC 0026AE4C 7C 91 83 A6 */ mtibatl 0, r4
+/* 8026F1F0 0026AE50 7C 70 83 A6 */ mtibatu 0, r3
+/* 8026F1F4 0026AE54 4C 00 01 2C */ isync
+/* 8026F1F8 0026AE58 7C FC 83 A6 */ mtdbatu 2, r7
+/* 8026F1FC 0026AE5C 7C DD 83 A6 */ mtdbatl 2, r6
+/* 8026F200 0026AE60 7C BC 83 A6 */ mtdbatu 2, r5
+/* 8026F204 0026AE64 4C 00 01 2C */ isync
+/* 8026F208 0026AE68 7C F4 83 A6 */ mtibatu 2, r7
+/* 8026F20C 0026AE6C 7C D5 83 A6 */ mtibatl 2, r6
+/* 8026F210 0026AE70 7C B4 83 A6 */ mtibatu 2, r5
+/* 8026F214 0026AE74 4C 00 01 2C */ isync
+/* 8026F218 0026AE78 7C 60 00 A6 */ mfmsr r3
+/* 8026F21C 0026AE7C 60 63 00 30 */ ori r3, r3, 0x30
+/* 8026F220 0026AE80 7C 7B 03 A6 */ mtspr 0x1b, r3
+/* 8026F224 0026AE84 7C 68 02 A6 */ mflr r3
+/* 8026F228 0026AE88 7C 7A 03 A6 */ mtspr 0x1a, r3
+/* 8026F22C 0026AE8C 4C 00 00 64 */ rfi
+
+.global ConfigMEM1_48MB
+ConfigMEM1_48MB:
+/* 8026F230 0026AE90 38 E0 00 00 */ li r7, 0
+/* 8026F234 0026AE94 3C 80 00 00 */ lis r4, 0x00000002@ha
+/* 8026F238 0026AE98 38 84 00 02 */ addi r4, r4, 0x00000002@l
+/* 8026F23C 0026AE9C 3C 60 80 00 */ lis r3, 0x800003FF@ha
+/* 8026F240 0026AEA0 38 63 03 FF */ addi r3, r3, 0x800003FF@l
+/* 8026F244 0026AEA4 3C C0 02 00 */ lis r6, 0x02000002@ha
+/* 8026F248 0026AEA8 38 C6 00 02 */ addi r6, r6, 0x02000002@l
+/* 8026F24C 0026AEAC 3C A0 82 00 */ lis r5, 0x820001FF@ha
+/* 8026F250 0026AEB0 38 A5 01 FF */ addi r5, r5, 0x820001FF@l
+/* 8026F254 0026AEB4 4C 00 01 2C */ isync
+/* 8026F258 0026AEB8 7C F8 83 A6 */ mtdbatu 0, r7
+/* 8026F25C 0026AEBC 7C 99 83 A6 */ mtdbatl 0, r4
+/* 8026F260 0026AEC0 7C 78 83 A6 */ mtdbatu 0, r3
+/* 8026F264 0026AEC4 4C 00 01 2C */ isync
+/* 8026F268 0026AEC8 7C F0 83 A6 */ mtibatu 0, r7
+/* 8026F26C 0026AECC 7C 91 83 A6 */ mtibatl 0, r4
+/* 8026F270 0026AED0 7C 70 83 A6 */ mtibatu 0, r3
+/* 8026F274 0026AED4 4C 00 01 2C */ isync
+/* 8026F278 0026AED8 7C FC 83 A6 */ mtdbatu 2, r7
+/* 8026F27C 0026AEDC 7C DD 83 A6 */ mtdbatl 2, r6
+/* 8026F280 0026AEE0 7C BC 83 A6 */ mtdbatu 2, r5
+/* 8026F284 0026AEE4 4C 00 01 2C */ isync
+/* 8026F288 0026AEE8 7C F4 83 A6 */ mtibatu 2, r7
+/* 8026F28C 0026AEEC 7C D5 83 A6 */ mtibatl 2, r6
+/* 8026F290 0026AEF0 7C B4 83 A6 */ mtibatu 2, r5
+/* 8026F294 0026AEF4 4C 00 01 2C */ isync
+/* 8026F298 0026AEF8 7C 60 00 A6 */ mfmsr r3
+/* 8026F29C 0026AEFC 60 63 00 30 */ ori r3, r3, 0x30
+/* 8026F2A0 0026AF00 7C 7B 03 A6 */ mtspr 0x1b, r3
+/* 8026F2A4 0026AF04 7C 68 02 A6 */ mflr r3
+/* 8026F2A8 0026AF08 7C 7A 03 A6 */ mtspr 0x1a, r3
+/* 8026F2AC 0026AF0C 4C 00 00 64 */ rfi
+
+.global ConfigMEM2_52MB
+ConfigMEM2_52MB:
+/* 8026F2B0 0026AF10 38 E0 00 00 */ li r7, 0
+/* 8026F2B4 0026AF14 3C 80 10 00 */ lis r4, 0x10000002@ha
+/* 8026F2B8 0026AF18 38 84 00 02 */ addi r4, r4, 0x10000002@l
+/* 8026F2BC 0026AF1C 3C 60 90 00 */ lis r3, 0x900003FF@ha
+/* 8026F2C0 0026AF20 38 63 03 FF */ addi r3, r3, 0x900003FF@l
+/* 8026F2C4 0026AF24 3C C0 10 00 */ lis r6, 0x1000002A@ha
+/* 8026F2C8 0026AF28 38 C6 00 2A */ addi r6, r6, 0x1000002A@l
+/* 8026F2CC 0026AF2C 3C A0 D0 00 */ lis r5, 0xD00007FF@ha
+/* 8026F2D0 0026AF30 38 A5 07 FF */ addi r5, r5, 0xD00007FF@l
+/* 8026F2D4 0026AF34 4C 00 01 2C */ isync
+/* 8026F2D8 0026AF38 7C F8 8B A6 */ mtspr 0x238, r7
+/* 8026F2DC 0026AF3C 7C 99 8B A6 */ mtspr 0x239, r4
+/* 8026F2E0 0026AF40 7C 78 8B A6 */ mtspr 0x238, r3
+/* 8026F2E4 0026AF44 4C 00 01 2C */ isync
+/* 8026F2E8 0026AF48 7C F0 8B A6 */ mtspr 0x230, r7
+/* 8026F2EC 0026AF4C 7C 91 8B A6 */ mtspr 0x231, r4
+/* 8026F2F0 0026AF50 7C 70 8B A6 */ mtspr 0x230, r3
+/* 8026F2F4 0026AF54 4C 00 01 2C */ isync
+/* 8026F2F8 0026AF58 7C FA 8B A6 */ mtspr 0x23a, r7
+/* 8026F2FC 0026AF5C 7C DB 8B A6 */ mtspr 0x23b, r6
+/* 8026F300 0026AF60 7C BA 8B A6 */ mtspr 0x23a, r5
+/* 8026F304 0026AF64 4C 00 01 2C */ isync
+/* 8026F308 0026AF68 7C F2 8B A6 */ mtspr 0x232, r7
+/* 8026F30C 0026AF6C 7C F3 8B A6 */ mtspr 0x233, r7
+/* 8026F310 0026AF70 4C 00 01 2C */ isync
+/* 8026F314 0026AF74 3C 80 12 00 */ lis r4, 0x12000002@ha
+/* 8026F318 0026AF78 38 84 00 02 */ addi r4, r4, 0x12000002@l
+/* 8026F31C 0026AF7C 3C 60 92 00 */ lis r3, 0x920001FF@ha
+/* 8026F320 0026AF80 38 63 01 FF */ addi r3, r3, 0x920001FF@l
+/* 8026F324 0026AF84 3C C0 13 00 */ lis r6, 0x13000002@ha
+/* 8026F328 0026AF88 38 C6 00 02 */ addi r6, r6, 0x13000002@l
+/* 8026F32C 0026AF8C 3C A0 93 00 */ lis r5, 0x9300007F@ha
+/* 8026F330 0026AF90 38 A5 00 7F */ addi r5, r5, 0x9300007F@l
+/* 8026F334 0026AF94 4C 00 01 2C */ isync
+/* 8026F338 0026AF98 7C FC 8B A6 */ mtspr 0x23c, r7
+/* 8026F33C 0026AF9C 7C 9D 8B A6 */ mtspr 0x23d, r4
+/* 8026F340 0026AFA0 7C 7C 8B A6 */ mtspr 0x23c, r3
+/* 8026F344 0026AFA4 4C 00 01 2C */ isync
+/* 8026F348 0026AFA8 7C F4 8B A6 */ mtspr 0x234, r7
+/* 8026F34C 0026AFAC 7C 95 8B A6 */ mtspr 0x235, r4
+/* 8026F350 0026AFB0 7C 74 8B A6 */ mtspr 0x234, r3
+/* 8026F354 0026AFB4 4C 00 01 2C */ isync
+/* 8026F358 0026AFB8 7C FE 8B A6 */ mtspr 0x23e, r7
+/* 8026F35C 0026AFBC 7C DF 8B A6 */ mtspr 0x23f, r6
+/* 8026F360 0026AFC0 7C BE 8B A6 */ mtspr 0x23e, r5
+/* 8026F364 0026AFC4 4C 00 01 2C */ isync
+/* 8026F368 0026AFC8 7C F6 8B A6 */ mtspr 0x236, r7
+/* 8026F36C 0026AFCC 7C D7 8B A6 */ mtspr 0x237, r6
+/* 8026F370 0026AFD0 7C B6 8B A6 */ mtspr 0x236, r5
+/* 8026F374 0026AFD4 4C 00 01 2C */ isync
+/* 8026F378 0026AFD8 7C 60 00 A6 */ mfmsr r3
+/* 8026F37C 0026AFDC 60 63 00 30 */ ori r3, r3, 0x30
+/* 8026F380 0026AFE0 7C 7B 03 A6 */ mtspr 0x1b, r3
+/* 8026F384 0026AFE4 7C 68 02 A6 */ mflr r3
+/* 8026F388 0026AFE8 7C 7A 03 A6 */ mtspr 0x1a, r3
+/* 8026F38C 0026AFEC 4C 00 00 64 */ rfi
+
+.global ConfigMEM2_56MB
+ConfigMEM2_56MB:
+/* 8026F390 0026AFF0 38 E0 00 00 */ li r7, 0
+/* 8026F394 0026AFF4 3C 80 10 00 */ lis r4, 0x10000002@ha
+/* 8026F398 0026AFF8 38 84 00 02 */ addi r4, r4, 0x10000002@l
+/* 8026F39C 0026AFFC 3C 60 90 00 */ lis r3, 0x900003FF@ha
+/* 8026F3A0 0026B000 38 63 03 FF */ addi r3, r3, 0x900003FF@l
+/* 8026F3A4 0026B004 3C C0 10 00 */ lis r6, 0x1000002A@ha
+/* 8026F3A8 0026B008 38 C6 00 2A */ addi r6, r6, 0x1000002A@l
+/* 8026F3AC 0026B00C 3C A0 D0 00 */ lis r5, 0xD00007FF@ha
+/* 8026F3B0 0026B010 38 A5 07 FF */ addi r5, r5, 0xD00007FF@l
+/* 8026F3B4 0026B014 4C 00 01 2C */ isync
+/* 8026F3B8 0026B018 7C F8 8B A6 */ mtspr 0x238, r7
+/* 8026F3BC 0026B01C 7C 99 8B A6 */ mtspr 0x239, r4
+/* 8026F3C0 0026B020 7C 78 8B A6 */ mtspr 0x238, r3
+/* 8026F3C4 0026B024 4C 00 01 2C */ isync
+/* 8026F3C8 0026B028 7C F0 8B A6 */ mtspr 0x230, r7
+/* 8026F3CC 0026B02C 7C 91 8B A6 */ mtspr 0x231, r4
+/* 8026F3D0 0026B030 7C 70 8B A6 */ mtspr 0x230, r3
+/* 8026F3D4 0026B034 4C 00 01 2C */ isync
+/* 8026F3D8 0026B038 7C FA 8B A6 */ mtspr 0x23a, r7
+/* 8026F3DC 0026B03C 7C DB 8B A6 */ mtspr 0x23b, r6
+/* 8026F3E0 0026B040 7C BA 8B A6 */ mtspr 0x23a, r5
+/* 8026F3E4 0026B044 4C 00 01 2C */ isync
+/* 8026F3E8 0026B048 7C F2 8B A6 */ mtspr 0x232, r7
+/* 8026F3EC 0026B04C 7C F3 8B A6 */ mtspr 0x233, r7
+/* 8026F3F0 0026B050 4C 00 01 2C */ isync
+/* 8026F3F4 0026B054 3C 80 12 00 */ lis r4, 0x12000002@ha
+/* 8026F3F8 0026B058 38 84 00 02 */ addi r4, r4, 0x12000002@l
+/* 8026F3FC 0026B05C 3C 60 92 00 */ lis r3, 0x920001FF@ha
+/* 8026F400 0026B060 38 63 01 FF */ addi r3, r3, 0x920001FF@l
+/* 8026F404 0026B064 3C C0 13 00 */ lis r6, 0x13000002@ha
+/* 8026F408 0026B068 38 C6 00 02 */ addi r6, r6, 0x13000002@l
+/* 8026F40C 0026B06C 3C A0 93 00 */ lis r5, 0x930000FF@ha
+/* 8026F410 0026B070 38 A5 00 FF */ addi r5, r5, 0x930000FF@l
+/* 8026F414 0026B074 4C 00 01 2C */ isync
+/* 8026F418 0026B078 7C FC 8B A6 */ mtspr 0x23c, r7
+/* 8026F41C 0026B07C 7C 9D 8B A6 */ mtspr 0x23d, r4
+/* 8026F420 0026B080 7C 7C 8B A6 */ mtspr 0x23c, r3
+/* 8026F424 0026B084 4C 00 01 2C */ isync
+/* 8026F428 0026B088 7C F4 8B A6 */ mtspr 0x234, r7
+/* 8026F42C 0026B08C 7C 95 8B A6 */ mtspr 0x235, r4
+/* 8026F430 0026B090 7C 74 8B A6 */ mtspr 0x234, r3
+/* 8026F434 0026B094 4C 00 01 2C */ isync
+/* 8026F438 0026B098 7C FE 8B A6 */ mtspr 0x23e, r7
+/* 8026F43C 0026B09C 7C DF 8B A6 */ mtspr 0x23f, r6
+/* 8026F440 0026B0A0 7C BE 8B A6 */ mtspr 0x23e, r5
+/* 8026F444 0026B0A4 4C 00 01 2C */ isync
+/* 8026F448 0026B0A8 7C F6 8B A6 */ mtspr 0x236, r7
+/* 8026F44C 0026B0AC 7C D7 8B A6 */ mtspr 0x237, r6
+/* 8026F450 0026B0B0 7C B6 8B A6 */ mtspr 0x236, r5
+/* 8026F454 0026B0B4 4C 00 01 2C */ isync
+/* 8026F458 0026B0B8 7C 60 00 A6 */ mfmsr r3
+/* 8026F45C 0026B0BC 60 63 00 30 */ ori r3, r3, 0x30
+/* 8026F460 0026B0C0 7C 7B 03 A6 */ mtspr 0x1b, r3
+/* 8026F464 0026B0C4 7C 68 02 A6 */ mflr r3
+/* 8026F468 0026B0C8 7C 7A 03 A6 */ mtspr 0x1a, r3
+/* 8026F46C 0026B0CC 4C 00 00 64 */ rfi
+
+.global ConfigMEM2_64MB
+ConfigMEM2_64MB:
+/* 8026F470 0026B0D0 38 E0 00 00 */ li r7, 0
+/* 8026F474 0026B0D4 3C 80 10 00 */ lis r4, 0x10000002@ha
+/* 8026F478 0026B0D8 38 84 00 02 */ addi r4, r4, 0x10000002@l
+/* 8026F47C 0026B0DC 3C 60 90 00 */ lis r3, 0x900007FF@ha
+/* 8026F480 0026B0E0 38 63 07 FF */ addi r3, r3, 0x900007FF@l
+/* 8026F484 0026B0E4 3C C0 10 00 */ lis r6, 0x1000002A@ha
+/* 8026F488 0026B0E8 38 C6 00 2A */ addi r6, r6, 0x1000002A@l
+/* 8026F48C 0026B0EC 3C A0 D0 00 */ lis r5, 0xD00007FF@ha
+/* 8026F490 0026B0F0 38 A5 07 FF */ addi r5, r5, 0xD00007FF@l
+/* 8026F494 0026B0F4 4C 00 01 2C */ isync
+/* 8026F498 0026B0F8 7C F8 8B A6 */ mtspr 0x238, r7
+/* 8026F49C 0026B0FC 7C 99 8B A6 */ mtspr 0x239, r4
+/* 8026F4A0 0026B100 7C 78 8B A6 */ mtspr 0x238, r3
+/* 8026F4A4 0026B104 4C 00 01 2C */ isync
+/* 8026F4A8 0026B108 7C F0 8B A6 */ mtspr 0x230, r7
+/* 8026F4AC 0026B10C 7C 91 8B A6 */ mtspr 0x231, r4
+/* 8026F4B0 0026B110 7C 70 8B A6 */ mtspr 0x230, r3
+/* 8026F4B4 0026B114 4C 00 01 2C */ isync
+/* 8026F4B8 0026B118 7C FA 8B A6 */ mtspr 0x23a, r7
+/* 8026F4BC 0026B11C 7C DB 8B A6 */ mtspr 0x23b, r6
+/* 8026F4C0 0026B120 7C BA 8B A6 */ mtspr 0x23a, r5
+/* 8026F4C4 0026B124 4C 00 01 2C */ isync
+/* 8026F4C8 0026B128 7C F2 8B A6 */ mtspr 0x232, r7
+/* 8026F4CC 0026B12C 7C F3 8B A6 */ mtspr 0x233, r7
+/* 8026F4D0 0026B130 4C 00 01 2C */ isync
+/* 8026F4D4 0026B134 7C F4 8B A6 */ mtspr 0x234, r7
+/* 8026F4D8 0026B138 7C F5 8B A6 */ mtspr 0x235, r7
+/* 8026F4DC 0026B13C 4C 00 01 2C */ isync
+/* 8026F4E0 0026B140 7C F6 8B A6 */ mtspr 0x236, r7
+/* 8026F4E4 0026B144 7C F7 8B A6 */ mtspr 0x237, r7
+/* 8026F4E8 0026B148 4C 00 01 2C */ isync
+/* 8026F4EC 0026B14C 7C FC 8B A6 */ mtspr 0x23c, r7
+/* 8026F4F0 0026B150 7C FD 8B A6 */ mtspr 0x23d, r7
+/* 8026F4F4 0026B154 4C 00 01 2C */ isync
+/* 8026F4F8 0026B158 7C FE 8B A6 */ mtspr 0x23e, r7
+/* 8026F4FC 0026B15C 7C FF 8B A6 */ mtspr 0x23f, r7
+/* 8026F500 0026B160 4C 00 01 2C */ isync
+/* 8026F504 0026B164 7C 60 00 A6 */ mfmsr r3
+/* 8026F508 0026B168 60 63 00 30 */ ori r3, r3, 0x30
+/* 8026F50C 0026B16C 7C 7B 03 A6 */ mtspr 0x1b, r3
+/* 8026F510 0026B170 7C 68 02 A6 */ mflr r3
+/* 8026F514 0026B174 7C 7A 03 A6 */ mtspr 0x1a, r3
+/* 8026F518 0026B178 4C 00 00 64 */ rfi
+
+.global ConfigMEM2_112MB
+ConfigMEM2_112MB:
+/* 8026F51C 0026B17C 38 E0 00 00 */ li r7, 0
+/* 8026F520 0026B180 3C 80 10 00 */ lis r4, 0x10000002@ha
+/* 8026F524 0026B184 38 84 00 02 */ addi r4, r4, 0x10000002@l
+/* 8026F528 0026B188 3C 60 90 00 */ lis r3, 0x900007FF@ha
+/* 8026F52C 0026B18C 38 63 07 FF */ addi r3, r3, 0x900007FF@l
+/* 8026F530 0026B190 3C C0 10 00 */ lis r6, 0x1000002A@ha
+/* 8026F534 0026B194 38 C6 00 2A */ addi r6, r6, 0x1000002A@l
+/* 8026F538 0026B198 3C A0 D0 00 */ lis r5, 0xD0000FFF@ha
+/* 8026F53C 0026B19C 38 A5 0F FF */ addi r5, r5, 0xD0000FFF@l
+/* 8026F540 0026B1A0 4C 00 01 2C */ isync
+/* 8026F544 0026B1A4 7C F8 8B A6 */ mtspr 0x238, r7
+/* 8026F548 0026B1A8 7C 99 8B A6 */ mtspr 0x239, r4
+/* 8026F54C 0026B1AC 7C 78 8B A6 */ mtspr 0x238, r3
+/* 8026F550 0026B1B0 4C 00 01 2C */ isync
+/* 8026F554 0026B1B4 7C F0 8B A6 */ mtspr 0x230, r7
+/* 8026F558 0026B1B8 7C 91 8B A6 */ mtspr 0x231, r4
+/* 8026F55C 0026B1BC 7C 70 8B A6 */ mtspr 0x230, r3
+/* 8026F560 0026B1C0 4C 00 01 2C */ isync
+/* 8026F564 0026B1C4 7C FA 8B A6 */ mtspr 0x23a, r7
+/* 8026F568 0026B1C8 7C DB 8B A6 */ mtspr 0x23b, r6
+/* 8026F56C 0026B1CC 7C BA 8B A6 */ mtspr 0x23a, r5
+/* 8026F570 0026B1D0 4C 00 01 2C */ isync
+/* 8026F574 0026B1D4 7C F2 8B A6 */ mtspr 0x232, r7
+/* 8026F578 0026B1D8 7C F3 8B A6 */ mtspr 0x233, r7
+/* 8026F57C 0026B1DC 4C 00 01 2C */ isync
+/* 8026F580 0026B1E0 3C 80 14 00 */ lis r4, 0x14000002@ha
+/* 8026F584 0026B1E4 38 84 00 02 */ addi r4, r4, 0x14000002@l
+/* 8026F588 0026B1E8 3C 60 94 00 */ lis r3, 0x940003FF@ha
+/* 8026F58C 0026B1EC 38 63 03 FF */ addi r3, r3, 0x940003FF@l
+/* 8026F590 0026B1F0 3C C0 16 00 */ lis r6, 0x16000002@ha
+/* 8026F594 0026B1F4 38 C6 00 02 */ addi r6, r6, 0x16000002@l
+/* 8026F598 0026B1F8 3C A0 96 00 */ lis r5, 0x960001FF@ha
+/* 8026F59C 0026B1FC 38 A5 01 FF */ addi r5, r5, 0x960001FF@l
+/* 8026F5A0 0026B200 4C 00 01 2C */ isync
+/* 8026F5A4 0026B204 7C FC 8B A6 */ mtspr 0x23c, r7
+/* 8026F5A8 0026B208 7C 9D 8B A6 */ mtspr 0x23d, r4
+/* 8026F5AC 0026B20C 7C 7C 8B A6 */ mtspr 0x23c, r3
+/* 8026F5B0 0026B210 4C 00 01 2C */ isync
+/* 8026F5B4 0026B214 7C F4 8B A6 */ mtspr 0x234, r7
+/* 8026F5B8 0026B218 7C 95 8B A6 */ mtspr 0x235, r4
+/* 8026F5BC 0026B21C 7C 74 8B A6 */ mtspr 0x234, r3
+/* 8026F5C0 0026B220 4C 00 01 2C */ isync
+/* 8026F5C4 0026B224 7C FE 8B A6 */ mtspr 0x23e, r7
+/* 8026F5C8 0026B228 7C DF 8B A6 */ mtspr 0x23f, r6
+/* 8026F5CC 0026B22C 7C BE 8B A6 */ mtspr 0x23e, r5
+/* 8026F5D0 0026B230 4C 00 01 2C */ isync
+/* 8026F5D4 0026B234 7C F6 8B A6 */ mtspr 0x236, r7
+/* 8026F5D8 0026B238 7C D7 8B A6 */ mtspr 0x237, r6
+/* 8026F5DC 0026B23C 7C B6 8B A6 */ mtspr 0x236, r5
+/* 8026F5E0 0026B240 4C 00 01 2C */ isync
+/* 8026F5E4 0026B244 7C 60 00 A6 */ mfmsr r3
+/* 8026F5E8 0026B248 60 63 00 30 */ ori r3, r3, 0x30
+/* 8026F5EC 0026B24C 7C 7B 03 A6 */ mtspr 0x1b, r3
+/* 8026F5F0 0026B250 7C 68 02 A6 */ mflr r3
+/* 8026F5F4 0026B254 7C 7A 03 A6 */ mtspr 0x1a, r3
+/* 8026F5F8 0026B258 4C 00 00 64 */ rfi
+
+.global ConfigMEM2_128MB
+ConfigMEM2_128MB:
+/* 8026F5FC 0026B25C 38 E0 00 00 */ li r7, 0
+/* 8026F600 0026B260 3C 80 10 00 */ lis r4, 0x10000002@ha
+/* 8026F604 0026B264 38 84 00 02 */ addi r4, r4, 0x10000002@l
+/* 8026F608 0026B268 3C 60 90 00 */ lis r3, 0x90000FFF@ha
+/* 8026F60C 0026B26C 38 63 0F FF */ addi r3, r3, 0x90000FFF@l
+/* 8026F610 0026B270 3C C0 10 00 */ lis r6, 0x1000002A@ha
+/* 8026F614 0026B274 38 C6 00 2A */ addi r6, r6, 0x1000002A@l
+/* 8026F618 0026B278 3C A0 D0 00 */ lis r5, 0xD0000FFF@ha
+/* 8026F61C 0026B27C 38 A5 0F FF */ addi r5, r5, 0xD0000FFF@l
+/* 8026F620 0026B280 4C 00 01 2C */ isync
+/* 8026F624 0026B284 7C F8 8B A6 */ mtspr 0x238, r7
+/* 8026F628 0026B288 7C 99 8B A6 */ mtspr 0x239, r4
+/* 8026F62C 0026B28C 7C 78 8B A6 */ mtspr 0x238, r3
+/* 8026F630 0026B290 4C 00 01 2C */ isync
+/* 8026F634 0026B294 7C F0 8B A6 */ mtspr 0x230, r7
+/* 8026F638 0026B298 7C 91 8B A6 */ mtspr 0x231, r4
+/* 8026F63C 0026B29C 7C 70 8B A6 */ mtspr 0x230, r3
+/* 8026F640 0026B2A0 4C 00 01 2C */ isync
+/* 8026F644 0026B2A4 7C FA 8B A6 */ mtspr 0x23a, r7
+/* 8026F648 0026B2A8 7C DB 8B A6 */ mtspr 0x23b, r6
+/* 8026F64C 0026B2AC 7C BA 8B A6 */ mtspr 0x23a, r5
+/* 8026F650 0026B2B0 4C 00 01 2C */ isync
+/* 8026F654 0026B2B4 7C F2 8B A6 */ mtspr 0x232, r7
+/* 8026F658 0026B2B8 7C F3 8B A6 */ mtspr 0x233, r7
+/* 8026F65C 0026B2BC 4C 00 01 2C */ isync
+/* 8026F660 0026B2C0 7C F4 8B A6 */ mtspr 0x234, r7
+/* 8026F664 0026B2C4 7C F5 8B A6 */ mtspr 0x235, r7
+/* 8026F668 0026B2C8 4C 00 01 2C */ isync
+/* 8026F66C 0026B2CC 7C F6 8B A6 */ mtspr 0x236, r7
+/* 8026F670 0026B2D0 7C F7 8B A6 */ mtspr 0x237, r7
+/* 8026F674 0026B2D4 4C 00 01 2C */ isync
+/* 8026F678 0026B2D8 7C FC 8B A6 */ mtspr 0x23c, r7
+/* 8026F67C 0026B2DC 7C FD 8B A6 */ mtspr 0x23d, r7
+/* 8026F680 0026B2E0 4C 00 01 2C */ isync
+/* 8026F684 0026B2E4 7C FE 8B A6 */ mtspr 0x23e, r7
+/* 8026F688 0026B2E8 7C FF 8B A6 */ mtspr 0x23f, r7
+/* 8026F68C 0026B2EC 4C 00 01 2C */ isync
+/* 8026F690 0026B2F0 7C 60 00 A6 */ mfmsr r3
+/* 8026F694 0026B2F4 60 63 00 30 */ ori r3, r3, 0x30
+/* 8026F698 0026B2F8 7C 7B 03 A6 */ mtspr 0x1b, r3
+/* 8026F69C 0026B2FC 7C 68 02 A6 */ mflr r3
+/* 8026F6A0 0026B300 7C 7A 03 A6 */ mtspr 0x1a, r3
+/* 8026F6A4 0026B304 4C 00 00 64 */ rfi
+
+.global ConfigMEM_ES1_0
+ConfigMEM_ES1_0:
+/* 8026F6A8 0026B308 38 E0 00 00 */ li r7, 0
+/* 8026F6AC 0026B30C 3C 80 00 00 */ lis r4, 0x00000002@ha
+/* 8026F6B0 0026B310 38 84 00 02 */ addi r4, r4, 0x00000002@l
+/* 8026F6B4 0026B314 3C 60 80 00 */ lis r3, 0x80000FFF@ha
+/* 8026F6B8 0026B318 38 63 0F FF */ addi r3, r3, 0x80000FFF@l
+/* 8026F6BC 0026B31C 4C 00 01 2C */ isync
+/* 8026F6C0 0026B320 7C F8 83 A6 */ mtdbatu 0, r7
+/* 8026F6C4 0026B324 7C 99 83 A6 */ mtdbatl 0, r4
+/* 8026F6C8 0026B328 7C 78 83 A6 */ mtdbatu 0, r3
+/* 8026F6CC 0026B32C 4C 00 01 2C */ isync
+/* 8026F6D0 0026B330 7C F0 83 A6 */ mtibatu 0, r7
+/* 8026F6D4 0026B334 7C 91 83 A6 */ mtibatl 0, r4
+/* 8026F6D8 0026B338 7C 70 83 A6 */ mtibatu 0, r3
+/* 8026F6DC 0026B33C 4C 00 01 2C */ isync
+/* 8026F6E0 0026B340 7C 60 00 A6 */ mfmsr r3
+/* 8026F6E4 0026B344 60 63 00 30 */ ori r3, r3, 0x30
+/* 8026F6E8 0026B348 7C 7B 03 A6 */ mtspr 0x1b, r3
+/* 8026F6EC 0026B34C 7C 68 02 A6 */ mflr r3
+/* 8026F6F0 0026B350 7C 7A 03 A6 */ mtspr 0x1a, r3
+/* 8026F6F4 0026B354 4C 00 00 64 */ rfi
+
+.global RealMode
+RealMode:
+/* 8026F6F8 0026B358 54 63 00 BE */ clrlwi r3, r3, 2
+/* 8026F6FC 0026B35C 7C 7A 03 A6 */ mtspr 0x1a, r3
+/* 8026F700 0026B360 7C 60 00 A6 */ mfmsr r3
+/* 8026F704 0026B364 54 63 07 32 */ rlwinm r3, r3, 0, 0x1c, 0x19
+/* 8026F708 0026B368 7C 7B 03 A6 */ mtspr 0x1b, r3
+/* 8026F70C 0026B36C 4C 00 00 64 */ rfi
+
+.global BATConfig
+BATConfig:
+/* 8026F710 0026B370 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8026F714 0026B374 7C 08 02 A6 */ mflr r0
+/* 8026F718 0026B378 3C 60 80 00 */ lis r3, 0x80003138@ha
+/* 8026F71C 0026B37C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8026F720 0026B380 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8026F724 0026B384 80 03 31 38 */ lwz r0, 0x80003138@l(r3)
+/* 8026F728 0026B388 2C 00 00 00 */ cmpwi r0, 0
+/* 8026F72C 0026B38C 40 82 00 20 */ bne lbl_8026F74C
+/* 8026F730 0026B390 3C 00 80 27 */ lis r0, 0x8027
+/* 8026F734 0026B394 34 00 F0 FC */ addic. r0, r0, -3844
+/* 8026F738 0026B398 40 82 00 14 */ bne lbl_8026F74C
+/* 8026F73C 0026B39C 3C 60 80 27 */ lis r3, ConfigMEM_ES1_0@ha
+/* 8026F740 0026B3A0 38 63 F6 A8 */ addi r3, r3, ConfigMEM_ES1_0@l
+/* 8026F744 0026B3A4 4B FF FF B5 */ bl RealMode
+/* 8026F748 0026B3A8 48 00 01 04 */ b lbl_8026F84C
+lbl_8026F74C:
+/* 8026F74C 0026B3AC 3C 60 80 00 */ lis r3, 0x80003104@ha
+/* 8026F750 0026B3B0 83 E3 31 04 */ lwz r31, 0x80003104@l(r3)
+/* 8026F754 0026B3B4 80 03 31 00 */ lwz r0, 0x3100(r3)
+/* 8026F758 0026B3B8 7C 1F 00 40 */ cmplw r31, r0
+/* 8026F75C 0026B3BC 40 80 00 28 */ bge lbl_8026F784
+/* 8026F760 0026B3C0 3C 1F FE 80 */ addis r0, r31, 0xfe80
+/* 8026F764 0026B3C4 28 00 00 00 */ cmplwi r0, 0
+/* 8026F768 0026B3C8 40 82 00 1C */ bne lbl_8026F784
+/* 8026F76C 0026B3CC 3C 60 81 80 */ lis r3, 0x8180
+/* 8026F770 0026B3D0 3C 80 01 80 */ lis r4, 0x180
+/* 8026F774 0026B3D4 4B FF AE B5 */ bl DCInvalidateRange
+/* 8026F778 0026B3D8 38 00 00 02 */ li r0, 2
+/* 8026F77C 0026B3DC 3C 60 CC 00 */ lis r3, 0xCC004028@ha
+/* 8026F780 0026B3E0 B0 03 40 28 */ sth r0, 0xCC004028@l(r3)
+lbl_8026F784:
+/* 8026F784 0026B3E4 3C 00 01 80 */ lis r0, 0x180
+/* 8026F788 0026B3E8 7C 1F 00 40 */ cmplw r31, r0
+/* 8026F78C 0026B3EC 41 81 00 14 */ bgt lbl_8026F7A0
+/* 8026F790 0026B3F0 3C 60 80 27 */ lis r3, ConfigMEM1_24MB@ha
+/* 8026F794 0026B3F4 38 63 F1 B0 */ addi r3, r3, ConfigMEM1_24MB@l
+/* 8026F798 0026B3F8 4B FF FF 61 */ bl RealMode
+/* 8026F79C 0026B3FC 48 00 00 1C */ b lbl_8026F7B8
+lbl_8026F7A0:
+/* 8026F7A0 0026B400 3C 00 03 00 */ lis r0, 0x300
+/* 8026F7A4 0026B404 7C 1F 00 40 */ cmplw r31, r0
+/* 8026F7A8 0026B408 41 81 00 10 */ bgt lbl_8026F7B8
+/* 8026F7AC 0026B40C 3C 60 80 27 */ lis r3, ConfigMEM1_48MB@ha
+/* 8026F7B0 0026B410 38 63 F2 30 */ addi r3, r3, ConfigMEM1_48MB@l
+/* 8026F7B4 0026B414 4B FF FF 45 */ bl RealMode
+lbl_8026F7B8:
+/* 8026F7B8 0026B418 3C 60 80 00 */ lis r3, 0x8000311C@ha
+/* 8026F7BC 0026B41C 3C 00 04 00 */ lis r0, 0x400
+/* 8026F7C0 0026B420 80 83 31 1C */ lwz r4, 0x8000311C@l(r3)
+/* 8026F7C4 0026B424 80 63 31 20 */ lwz r3, 0x3120(r3)
+/* 8026F7C8 0026B428 7C 04 00 40 */ cmplw r4, r0
+/* 8026F7CC 0026B42C 41 81 00 4C */ bgt lbl_8026F818
+/* 8026F7D0 0026B430 3C 00 93 40 */ lis r0, 0x9340
+/* 8026F7D4 0026B434 7C 03 00 40 */ cmplw r3, r0
+/* 8026F7D8 0026B438 41 81 00 14 */ bgt lbl_8026F7EC
+/* 8026F7DC 0026B43C 3C 60 80 27 */ lis r3, ConfigMEM2_52MB@ha
+/* 8026F7E0 0026B440 38 63 F2 B0 */ addi r3, r3, ConfigMEM2_52MB@l
+/* 8026F7E4 0026B444 4B FF FF 15 */ bl RealMode
+/* 8026F7E8 0026B448 48 00 00 64 */ b lbl_8026F84C
+lbl_8026F7EC:
+/* 8026F7EC 0026B44C 3C 00 93 80 */ lis r0, 0x9380
+/* 8026F7F0 0026B450 7C 03 00 40 */ cmplw r3, r0
+/* 8026F7F4 0026B454 41 81 00 14 */ bgt lbl_8026F808
+/* 8026F7F8 0026B458 3C 60 80 27 */ lis r3, ConfigMEM2_56MB@ha
+/* 8026F7FC 0026B45C 38 63 F3 90 */ addi r3, r3, ConfigMEM2_56MB@l
+/* 8026F800 0026B460 4B FF FE F9 */ bl RealMode
+/* 8026F804 0026B464 48 00 00 48 */ b lbl_8026F84C
+lbl_8026F808:
+/* 8026F808 0026B468 3C 60 80 27 */ lis r3, ConfigMEM2_64MB@ha
+/* 8026F80C 0026B46C 38 63 F4 70 */ addi r3, r3, ConfigMEM2_64MB@l
+/* 8026F810 0026B470 4B FF FE E9 */ bl RealMode
+/* 8026F814 0026B474 48 00 00 38 */ b lbl_8026F84C
+lbl_8026F818:
+/* 8026F818 0026B478 3C 00 08 00 */ lis r0, 0x800
+/* 8026F81C 0026B47C 7C 04 00 40 */ cmplw r4, r0
+/* 8026F820 0026B480 41 81 00 2C */ bgt lbl_8026F84C
+/* 8026F824 0026B484 3C 00 97 00 */ lis r0, 0x9700
+/* 8026F828 0026B488 7C 03 00 40 */ cmplw r3, r0
+/* 8026F82C 0026B48C 41 81 00 14 */ bgt lbl_8026F840
+/* 8026F830 0026B490 3C 60 80 27 */ lis r3, ConfigMEM2_112MB@ha
+/* 8026F834 0026B494 38 63 F5 1C */ addi r3, r3, ConfigMEM2_112MB@l
+/* 8026F838 0026B498 4B FF FE C1 */ bl RealMode
+/* 8026F83C 0026B49C 48 00 00 10 */ b lbl_8026F84C
+lbl_8026F840:
+/* 8026F840 0026B4A0 3C 60 80 27 */ lis r3, ConfigMEM2_128MB@ha
+/* 8026F844 0026B4A4 38 63 F5 FC */ addi r3, r3, ConfigMEM2_128MB@l
+/* 8026F848 0026B4A8 4B FF FE B1 */ bl RealMode
+lbl_8026F84C:
+/* 8026F84C 0026B4AC 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8026F850 0026B4B0 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8026F854 0026B4B4 7C 08 03 A6 */ mtlr r0
+/* 8026F858 0026B4B8 38 21 00 10 */ addi r1, r1, 0x10
+/* 8026F85C 0026B4BC 4E 80 00 20 */ blr
+
+.global __OSInitMemoryProtection
+__OSInitMemoryProtection:
+/* 8026F860 0026B4C0 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8026F864 0026B4C4 7C 08 02 A6 */ mflr r0
+/* 8026F868 0026B4C8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8026F86C 0026B4CC 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8026F870 0026B4D0 93 C1 00 08 */ stw r30, 8(r1)
+/* 8026F874 0026B4D4 4B FF EE E9 */ bl OSDisableInterrupts
+/* 8026F878 0026B4D8 3C 80 CC 00 */ lis r4, 0xCC004020@ha
+/* 8026F87C 0026B4DC 38 00 00 00 */ li r0, 0
+/* 8026F880 0026B4E0 B0 04 40 20 */ sth r0, 0xCC004020@l(r4)
+/* 8026F884 0026B4E4 38 00 00 FF */ li r0, 0xff
+/* 8026F888 0026B4E8 7C 7E 1B 78 */ mr r30, r3
+/* 8026F88C 0026B4EC 3C 60 F0 00 */ lis r3, 0xf000
+/* 8026F890 0026B4F0 B0 04 40 10 */ sth r0, 0x4010(r4)
+/* 8026F894 0026B4F4 4B FF F2 59 */ bl __OSMaskInterrupts
+/* 8026F898 0026B4F8 3F E0 80 27 */ lis r31, MEMIntrruptHandler@ha
+/* 8026F89C 0026B4FC 38 60 00 00 */ li r3, 0
+/* 8026F8A0 0026B500 38 9F F1 68 */ addi r4, r31, MEMIntrruptHandler@l
+/* 8026F8A4 0026B504 4B FF EF 05 */ bl __OSSetInterruptHandler
+/* 8026F8A8 0026B508 38 9F F1 68 */ addi r4, r31, -3736
+/* 8026F8AC 0026B50C 38 60 00 01 */ li r3, 1
+/* 8026F8B0 0026B510 4B FF EE F9 */ bl __OSSetInterruptHandler
+/* 8026F8B4 0026B514 38 9F F1 68 */ addi r4, r31, -3736
+/* 8026F8B8 0026B518 38 60 00 02 */ li r3, 2
+/* 8026F8BC 0026B51C 4B FF EE ED */ bl __OSSetInterruptHandler
+/* 8026F8C0 0026B520 38 9F F1 68 */ addi r4, r31, -3736
+/* 8026F8C4 0026B524 38 60 00 03 */ li r3, 3
+/* 8026F8C8 0026B528 4B FF EE E1 */ bl __OSSetInterruptHandler
+/* 8026F8CC 0026B52C 38 9F F1 68 */ addi r4, r31, -3736
+/* 8026F8D0 0026B530 38 60 00 04 */ li r3, 4
+/* 8026F8D4 0026B534 4B FF EE D5 */ bl __OSSetInterruptHandler
+/* 8026F8D8 0026B538 3C 60 80 42 */ lis r3, lbl_80427D08@ha
+/* 8026F8DC 0026B53C 38 63 7D 08 */ addi r3, r3, lbl_80427D08@l
+/* 8026F8E0 0026B540 48 00 03 B1 */ bl OSRegisterShutdownFunction
+/* 8026F8E4 0026B544 4B FF FE 2D */ bl BATConfig
+/* 8026F8E8 0026B548 3C 60 08 00 */ lis r3, 0x800
+/* 8026F8EC 0026B54C 4B FF F2 81 */ bl __OSUnmaskInterrupts
+/* 8026F8F0 0026B550 7F C3 F3 78 */ mr r3, r30
+/* 8026F8F4 0026B554 4B FF EE 91 */ bl OSRestoreInterrupts
+/* 8026F8F8 0026B558 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8026F8FC 0026B55C 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8026F900 0026B560 83 C1 00 08 */ lwz r30, 8(r1)
+/* 8026F904 0026B564 7C 08 03 A6 */ mtlr r0
+/* 8026F908 0026B568 38 21 00 10 */ addi r1, r1, 0x10
+/* 8026F90C 0026B56C 4E 80 00 20 */ blr
diff --git a/asm/SDK/OS/OSMessage.s b/asm/SDK/OS/OSMessage.s new file mode 100644 index 0000000..a475bcc --- /dev/null +++ b/asm/SDK/OS/OSMessage.s @@ -0,0 +1,150 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global OSInitMessageQueue
+OSInitMessageQueue:
+/* 8026EEF8 0026AB58 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8026EEFC 0026AB5C 7C 08 02 A6 */ mflr r0
+/* 8026EF00 0026AB60 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8026EF04 0026AB64 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8026EF08 0026AB68 7C BF 2B 78 */ mr r31, r5
+/* 8026EF0C 0026AB6C 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8026EF10 0026AB70 7C 9E 23 78 */ mr r30, r4
+/* 8026EF14 0026AB74 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8026EF18 0026AB78 7C 7D 1B 78 */ mr r29, r3
+/* 8026EF1C 0026AB7C 48 00 23 CD */ bl func_802712E8
+/* 8026EF20 0026AB80 38 7D 00 08 */ addi r3, r29, 8
+/* 8026EF24 0026AB84 48 00 23 C5 */ bl func_802712E8
+/* 8026EF28 0026AB88 38 00 00 00 */ li r0, 0
+/* 8026EF2C 0026AB8C 93 DD 00 10 */ stw r30, 0x10(r29)
+/* 8026EF30 0026AB90 93 FD 00 14 */ stw r31, 0x14(r29)
+/* 8026EF34 0026AB94 90 1D 00 18 */ stw r0, 0x18(r29)
+/* 8026EF38 0026AB98 90 1D 00 1C */ stw r0, 0x1c(r29)
+/* 8026EF3C 0026AB9C 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8026EF40 0026ABA0 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8026EF44 0026ABA4 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8026EF48 0026ABA8 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8026EF4C 0026ABAC 7C 08 03 A6 */ mtlr r0
+/* 8026EF50 0026ABB0 38 21 00 20 */ addi r1, r1, 0x20
+/* 8026EF54 0026ABB4 4E 80 00 20 */ blr
+
+.global OSSendMessage
+OSSendMessage:
+/* 8026EF58 0026ABB8 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8026EF5C 0026ABBC 7C 08 02 A6 */ mflr r0
+/* 8026EF60 0026ABC0 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8026EF64 0026ABC4 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8026EF68 0026ABC8 7C BF 2B 78 */ mr r31, r5
+/* 8026EF6C 0026ABCC 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8026EF70 0026ABD0 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8026EF74 0026ABD4 7C 9D 23 78 */ mr r29, r4
+/* 8026EF78 0026ABD8 93 81 00 10 */ stw r28, 0x10(r1)
+/* 8026EF7C 0026ABDC 7C 7C 1B 78 */ mr r28, r3
+/* 8026EF80 0026ABE0 4B FF F7 DD */ bl OSDisableInterrupts
+/* 8026EF84 0026ABE4 7C 7E 1B 78 */ mr r30, r3
+/* 8026EF88 0026ABE8 57 FF 07 FE */ clrlwi r31, r31, 0x1f
+/* 8026EF8C 0026ABEC 48 00 00 24 */ b lbl_8026EFB0
+lbl_8026EF90:
+/* 8026EF90 0026ABF0 2C 1F 00 00 */ cmpwi r31, 0
+/* 8026EF94 0026ABF4 40 82 00 14 */ bne lbl_8026EFA8
+/* 8026EF98 0026ABF8 7F C3 F3 78 */ mr r3, r30
+/* 8026EF9C 0026ABFC 4B FF F7 E9 */ bl OSRestoreInterrupts
+/* 8026EFA0 0026AC00 38 60 00 00 */ li r3, 0
+/* 8026EFA4 0026AC04 48 00 00 5C */ b lbl_8026F000
+lbl_8026EFA8:
+/* 8026EFA8 0026AC08 7F 83 E3 78 */ mr r3, r28
+/* 8026EFAC 0026AC0C 48 00 33 C9 */ bl func_80272374
+lbl_8026EFB0:
+/* 8026EFB0 0026AC10 80 9C 00 1C */ lwz r4, 0x1c(r28)
+/* 8026EFB4 0026AC14 80 DC 00 14 */ lwz r6, 0x14(r28)
+/* 8026EFB8 0026AC18 7C 06 20 00 */ cmpw r6, r4
+/* 8026EFBC 0026AC1C 40 81 FF D4 */ ble lbl_8026EF90
+/* 8026EFC0 0026AC20 80 1C 00 18 */ lwz r0, 0x18(r28)
+/* 8026EFC4 0026AC24 38 7C 00 08 */ addi r3, r28, 8
+/* 8026EFC8 0026AC28 80 BC 00 10 */ lwz r5, 0x10(r28)
+/* 8026EFCC 0026AC2C 7C 80 22 14 */ add r4, r0, r4
+/* 8026EFD0 0026AC30 7C 04 33 D6 */ divw r0, r4, r6
+/* 8026EFD4 0026AC34 7C 00 31 D6 */ mullw r0, r0, r6
+/* 8026EFD8 0026AC38 7C 00 20 50 */ subf r0, r0, r4
+/* 8026EFDC 0026AC3C 54 00 10 3A */ slwi r0, r0, 2
+/* 8026EFE0 0026AC40 7F A5 01 2E */ stwx r29, r5, r0
+/* 8026EFE4 0026AC44 80 9C 00 1C */ lwz r4, 0x1c(r28)
+/* 8026EFE8 0026AC48 38 04 00 01 */ addi r0, r4, 1
+/* 8026EFEC 0026AC4C 90 1C 00 1C */ stw r0, 0x1c(r28)
+/* 8026EFF0 0026AC50 48 00 34 71 */ bl func_80272460
+/* 8026EFF4 0026AC54 7F C3 F3 78 */ mr r3, r30
+/* 8026EFF8 0026AC58 4B FF F7 8D */ bl OSRestoreInterrupts
+/* 8026EFFC 0026AC5C 38 60 00 01 */ li r3, 1
+lbl_8026F000:
+/* 8026F000 0026AC60 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8026F004 0026AC64 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8026F008 0026AC68 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8026F00C 0026AC6C 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8026F010 0026AC70 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 8026F014 0026AC74 7C 08 03 A6 */ mtlr r0
+/* 8026F018 0026AC78 38 21 00 20 */ addi r1, r1, 0x20
+/* 8026F01C 0026AC7C 4E 80 00 20 */ blr
+
+.global OSReceiveMessage
+OSReceiveMessage:
+/* 8026F020 0026AC80 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8026F024 0026AC84 7C 08 02 A6 */ mflr r0
+/* 8026F028 0026AC88 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8026F02C 0026AC8C 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8026F030 0026AC90 7C 7F 1B 78 */ mr r31, r3
+/* 8026F034 0026AC94 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8026F038 0026AC98 7C BE 2B 78 */ mr r30, r5
+/* 8026F03C 0026AC9C 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8026F040 0026ACA0 93 81 00 10 */ stw r28, 0x10(r1)
+/* 8026F044 0026ACA4 7C 9C 23 78 */ mr r28, r4
+/* 8026F048 0026ACA8 4B FF F7 15 */ bl OSDisableInterrupts
+/* 8026F04C 0026ACAC 7C 7D 1B 78 */ mr r29, r3
+/* 8026F050 0026ACB0 57 DE 07 FE */ clrlwi r30, r30, 0x1f
+/* 8026F054 0026ACB4 48 00 00 24 */ b lbl_8026F078
+lbl_8026F058:
+/* 8026F058 0026ACB8 2C 1E 00 00 */ cmpwi r30, 0
+/* 8026F05C 0026ACBC 40 82 00 14 */ bne lbl_8026F070
+/* 8026F060 0026ACC0 7F A3 EB 78 */ mr r3, r29
+/* 8026F064 0026ACC4 4B FF F7 21 */ bl OSRestoreInterrupts
+/* 8026F068 0026ACC8 38 60 00 00 */ li r3, 0
+/* 8026F06C 0026ACCC 48 00 00 70 */ b lbl_8026F0DC
+lbl_8026F070:
+/* 8026F070 0026ACD0 38 7F 00 08 */ addi r3, r31, 8
+/* 8026F074 0026ACD4 48 00 33 01 */ bl func_80272374
+lbl_8026F078:
+/* 8026F078 0026ACD8 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 8026F07C 0026ACDC 2C 00 00 00 */ cmpwi r0, 0
+/* 8026F080 0026ACE0 41 82 FF D8 */ beq lbl_8026F058
+/* 8026F084 0026ACE4 2C 1C 00 00 */ cmpwi r28, 0
+/* 8026F088 0026ACE8 41 82 00 18 */ beq lbl_8026F0A0
+/* 8026F08C 0026ACEC 80 1F 00 18 */ lwz r0, 0x18(r31)
+/* 8026F090 0026ACF0 80 7F 00 10 */ lwz r3, 0x10(r31)
+/* 8026F094 0026ACF4 54 00 10 3A */ slwi r0, r0, 2
+/* 8026F098 0026ACF8 7C 03 00 2E */ lwzx r0, r3, r0
+/* 8026F09C 0026ACFC 90 1C 00 00 */ stw r0, 0(r28)
+lbl_8026F0A0:
+/* 8026F0A0 0026AD00 80 9F 00 18 */ lwz r4, 0x18(r31)
+/* 8026F0A4 0026AD04 7F E3 FB 78 */ mr r3, r31
+/* 8026F0A8 0026AD08 80 DF 00 14 */ lwz r6, 0x14(r31)
+/* 8026F0AC 0026AD0C 38 E4 00 01 */ addi r7, r4, 1
+/* 8026F0B0 0026AD10 80 9F 00 1C */ lwz r4, 0x1c(r31)
+/* 8026F0B4 0026AD14 7C A7 33 D6 */ divw r5, r7, r6
+/* 8026F0B8 0026AD18 38 04 FF FF */ addi r0, r4, -1
+/* 8026F0BC 0026AD1C 90 1F 00 1C */ stw r0, 0x1c(r31)
+/* 8026F0C0 0026AD20 7C 05 31 D6 */ mullw r0, r5, r6
+/* 8026F0C4 0026AD24 7C 00 38 50 */ subf r0, r0, r7
+/* 8026F0C8 0026AD28 90 1F 00 18 */ stw r0, 0x18(r31)
+/* 8026F0CC 0026AD2C 48 00 33 95 */ bl func_80272460
+/* 8026F0D0 0026AD30 7F A3 EB 78 */ mr r3, r29
+/* 8026F0D4 0026AD34 4B FF F6 B1 */ bl OSRestoreInterrupts
+/* 8026F0D8 0026AD38 38 60 00 01 */ li r3, 1
+lbl_8026F0DC:
+/* 8026F0DC 0026AD3C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8026F0E0 0026AD40 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8026F0E4 0026AD44 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8026F0E8 0026AD48 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8026F0EC 0026AD4C 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 8026F0F0 0026AD50 7C 08 03 A6 */ mtlr r0
+/* 8026F0F4 0026AD54 38 21 00 20 */ addi r1, r1, 0x20
+/* 8026F0F8 0026AD58 4E 80 00 20 */ blr
diff --git a/asm/SDK/OS/OSMutex.s b/asm/SDK/OS/OSMutex.s new file mode 100644 index 0000000..ef2d4c1 --- /dev/null +++ b/asm/SDK/OS/OSMutex.s @@ -0,0 +1,240 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global OSInitMutex
+OSInitMutex:
+/* 8026F910 0026B570 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8026F914 0026B574 7C 08 02 A6 */ mflr r0
+/* 8026F918 0026B578 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8026F91C 0026B57C 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8026F920 0026B580 7C 7F 1B 78 */ mr r31, r3
+/* 8026F924 0026B584 48 00 19 C5 */ bl func_802712E8
+/* 8026F928 0026B588 38 00 00 00 */ li r0, 0
+/* 8026F92C 0026B58C 90 1F 00 08 */ stw r0, 8(r31)
+/* 8026F930 0026B590 90 1F 00 0C */ stw r0, 0xc(r31)
+/* 8026F934 0026B594 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8026F938 0026B598 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8026F93C 0026B59C 7C 08 03 A6 */ mtlr r0
+/* 8026F940 0026B5A0 38 21 00 10 */ addi r1, r1, 0x10
+/* 8026F944 0026B5A4 4E 80 00 20 */ blr
+
+.global OSLockMutex
+OSLockMutex:
+/* 8026F948 0026B5A8 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8026F94C 0026B5AC 7C 08 02 A6 */ mflr r0
+/* 8026F950 0026B5B0 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8026F954 0026B5B4 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8026F958 0026B5B8 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8026F95C 0026B5BC 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8026F960 0026B5C0 93 81 00 10 */ stw r28, 0x10(r1)
+/* 8026F964 0026B5C4 7C 7C 1B 78 */ mr r28, r3
+/* 8026F968 0026B5C8 4B FF ED F5 */ bl OSDisableInterrupts
+/* 8026F96C 0026B5CC 7C 7D 1B 78 */ mr r29, r3
+/* 8026F970 0026B5D0 48 00 19 89 */ bl func_802712F8
+/* 8026F974 0026B5D4 7C 7E 1B 78 */ mr r30, r3
+/* 8026F978 0026B5D8 3B E0 00 00 */ li r31, 0
+lbl_8026F97C:
+/* 8026F97C 0026B5DC 80 1C 00 08 */ lwz r0, 8(r28)
+/* 8026F980 0026B5E0 2C 00 00 00 */ cmpwi r0, 0
+/* 8026F984 0026B5E4 40 82 00 40 */ bne lbl_8026F9C4
+/* 8026F988 0026B5E8 80 7C 00 0C */ lwz r3, 0xc(r28)
+/* 8026F98C 0026B5EC 93 DC 00 08 */ stw r30, 8(r28)
+/* 8026F990 0026B5F0 38 03 00 01 */ addi r0, r3, 1
+/* 8026F994 0026B5F4 90 1C 00 0C */ stw r0, 0xc(r28)
+/* 8026F998 0026B5F8 80 7E 02 F8 */ lwz r3, 0x2f8(r30)
+/* 8026F99C 0026B5FC 2C 03 00 00 */ cmpwi r3, 0
+/* 8026F9A0 0026B600 40 82 00 0C */ bne lbl_8026F9AC
+/* 8026F9A4 0026B604 93 9E 02 F4 */ stw r28, 0x2f4(r30)
+/* 8026F9A8 0026B608 48 00 00 08 */ b lbl_8026F9B0
+lbl_8026F9AC:
+/* 8026F9AC 0026B60C 93 83 00 10 */ stw r28, 0x10(r3)
+lbl_8026F9B0:
+/* 8026F9B0 0026B610 38 00 00 00 */ li r0, 0
+/* 8026F9B4 0026B614 90 7C 00 14 */ stw r3, 0x14(r28)
+/* 8026F9B8 0026B618 90 1C 00 10 */ stw r0, 0x10(r28)
+/* 8026F9BC 0026B61C 93 9E 02 F8 */ stw r28, 0x2f8(r30)
+/* 8026F9C0 0026B620 48 00 00 3C */ b lbl_8026F9FC
+lbl_8026F9C4:
+/* 8026F9C4 0026B624 7C 00 F0 40 */ cmplw r0, r30
+/* 8026F9C8 0026B628 40 82 00 14 */ bne lbl_8026F9DC
+/* 8026F9CC 0026B62C 80 7C 00 0C */ lwz r3, 0xc(r28)
+/* 8026F9D0 0026B630 38 03 00 01 */ addi r0, r3, 1
+/* 8026F9D4 0026B634 90 1C 00 0C */ stw r0, 0xc(r28)
+/* 8026F9D8 0026B638 48 00 00 24 */ b lbl_8026F9FC
+lbl_8026F9DC:
+/* 8026F9DC 0026B63C 93 9E 02 F0 */ stw r28, 0x2f0(r30)
+/* 8026F9E0 0026B640 80 7C 00 08 */ lwz r3, 8(r28)
+/* 8026F9E4 0026B644 80 9E 02 D0 */ lwz r4, 0x2d0(r30)
+/* 8026F9E8 0026B648 48 00 1C 2D */ bl func_80271614
+/* 8026F9EC 0026B64C 7F 83 E3 78 */ mr r3, r28
+/* 8026F9F0 0026B650 48 00 29 85 */ bl func_80272374
+/* 8026F9F4 0026B654 93 FE 02 F0 */ stw r31, 0x2f0(r30)
+/* 8026F9F8 0026B658 4B FF FF 84 */ b lbl_8026F97C
+lbl_8026F9FC:
+/* 8026F9FC 0026B65C 7F A3 EB 78 */ mr r3, r29
+/* 8026FA00 0026B660 4B FF ED 85 */ bl OSRestoreInterrupts
+/* 8026FA04 0026B664 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8026FA08 0026B668 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8026FA0C 0026B66C 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8026FA10 0026B670 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8026FA14 0026B674 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 8026FA18 0026B678 7C 08 03 A6 */ mtlr r0
+/* 8026FA1C 0026B67C 38 21 00 20 */ addi r1, r1, 0x20
+/* 8026FA20 0026B680 4E 80 00 20 */ blr
+
+.global OSUnlockMutex
+OSUnlockMutex:
+/* 8026FA24 0026B684 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8026FA28 0026B688 7C 08 02 A6 */ mflr r0
+/* 8026FA2C 0026B68C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8026FA30 0026B690 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8026FA34 0026B694 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8026FA38 0026B698 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8026FA3C 0026B69C 7C 7D 1B 78 */ mr r29, r3
+/* 8026FA40 0026B6A0 4B FF ED 1D */ bl OSDisableInterrupts
+/* 8026FA44 0026B6A4 7C 7F 1B 78 */ mr r31, r3
+/* 8026FA48 0026B6A8 48 00 18 B1 */ bl func_802712F8
+/* 8026FA4C 0026B6AC 80 1D 00 08 */ lwz r0, 8(r29)
+/* 8026FA50 0026B6B0 7C 7E 1B 78 */ mr r30, r3
+/* 8026FA54 0026B6B4 7C 00 18 40 */ cmplw r0, r3
+/* 8026FA58 0026B6B8 40 82 00 70 */ bne lbl_8026FAC8
+/* 8026FA5C 0026B6BC 80 1D 00 0C */ lwz r0, 0xc(r29)
+/* 8026FA60 0026B6C0 34 00 FF FF */ addic. r0, r0, -1
+/* 8026FA64 0026B6C4 90 1D 00 0C */ stw r0, 0xc(r29)
+/* 8026FA68 0026B6C8 40 82 00 60 */ bne lbl_8026FAC8
+/* 8026FA6C 0026B6CC 80 9D 00 10 */ lwz r4, 0x10(r29)
+/* 8026FA70 0026B6D0 80 BD 00 14 */ lwz r5, 0x14(r29)
+/* 8026FA74 0026B6D4 2C 04 00 00 */ cmpwi r4, 0
+/* 8026FA78 0026B6D8 40 82 00 0C */ bne lbl_8026FA84
+/* 8026FA7C 0026B6DC 90 A3 02 F8 */ stw r5, 0x2f8(r3)
+/* 8026FA80 0026B6E0 48 00 00 08 */ b lbl_8026FA88
+lbl_8026FA84:
+/* 8026FA84 0026B6E4 90 A4 00 14 */ stw r5, 0x14(r4)
+lbl_8026FA88:
+/* 8026FA88 0026B6E8 2C 05 00 00 */ cmpwi r5, 0
+/* 8026FA8C 0026B6EC 40 82 00 0C */ bne lbl_8026FA98
+/* 8026FA90 0026B6F0 90 83 02 F4 */ stw r4, 0x2f4(r3)
+/* 8026FA94 0026B6F4 48 00 00 08 */ b lbl_8026FA9C
+lbl_8026FA98:
+/* 8026FA98 0026B6F8 90 85 00 10 */ stw r4, 0x10(r5)
+lbl_8026FA9C:
+/* 8026FA9C 0026B6FC 38 00 00 00 */ li r0, 0
+/* 8026FAA0 0026B700 90 1D 00 08 */ stw r0, 8(r29)
+/* 8026FAA4 0026B704 80 83 02 D0 */ lwz r4, 0x2d0(r3)
+/* 8026FAA8 0026B708 80 03 02 D4 */ lwz r0, 0x2d4(r3)
+/* 8026FAAC 0026B70C 7C 04 00 00 */ cmpw r4, r0
+/* 8026FAB0 0026B710 40 80 00 10 */ bge lbl_8026FAC0
+/* 8026FAB4 0026B714 7F C3 F3 78 */ mr r3, r30
+/* 8026FAB8 0026B718 48 00 19 6D */ bl func_80271424
+/* 8026FABC 0026B71C 90 7E 02 D0 */ stw r3, 0x2d0(r30)
+lbl_8026FAC0:
+/* 8026FAC0 0026B720 7F A3 EB 78 */ mr r3, r29
+/* 8026FAC4 0026B724 48 00 29 9D */ bl func_80272460
+lbl_8026FAC8:
+/* 8026FAC8 0026B728 7F E3 FB 78 */ mr r3, r31
+/* 8026FACC 0026B72C 4B FF EC B9 */ bl OSRestoreInterrupts
+/* 8026FAD0 0026B730 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8026FAD4 0026B734 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8026FAD8 0026B738 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8026FADC 0026B73C 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8026FAE0 0026B740 7C 08 03 A6 */ mtlr r0
+/* 8026FAE4 0026B744 38 21 00 20 */ addi r1, r1, 0x20
+/* 8026FAE8 0026B748 4E 80 00 20 */ blr
+
+.global __OSUnlockAllMutex
+__OSUnlockAllMutex:
+/* 8026FAEC 0026B74C 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8026FAF0 0026B750 7C 08 02 A6 */ mflr r0
+/* 8026FAF4 0026B754 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8026FAF8 0026B758 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8026FAFC 0026B75C 3B E0 00 00 */ li r31, 0
+/* 8026FB00 0026B760 93 C1 00 08 */ stw r30, 8(r1)
+/* 8026FB04 0026B764 7C 7E 1B 78 */ mr r30, r3
+/* 8026FB08 0026B768 48 00 00 2C */ b lbl_8026FB34
+lbl_8026FB0C:
+/* 8026FB0C 0026B76C 80 83 00 10 */ lwz r4, 0x10(r3)
+/* 8026FB10 0026B770 2C 04 00 00 */ cmpwi r4, 0
+/* 8026FB14 0026B774 40 82 00 0C */ bne lbl_8026FB20
+/* 8026FB18 0026B778 93 FE 02 F8 */ stw r31, 0x2f8(r30)
+/* 8026FB1C 0026B77C 48 00 00 08 */ b lbl_8026FB24
+lbl_8026FB20:
+/* 8026FB20 0026B780 93 E4 00 14 */ stw r31, 0x14(r4)
+lbl_8026FB24:
+/* 8026FB24 0026B784 90 9E 02 F4 */ stw r4, 0x2f4(r30)
+/* 8026FB28 0026B788 93 E3 00 0C */ stw r31, 0xc(r3)
+/* 8026FB2C 0026B78C 93 E3 00 08 */ stw r31, 8(r3)
+/* 8026FB30 0026B790 48 00 29 31 */ bl func_80272460
+lbl_8026FB34:
+/* 8026FB34 0026B794 80 7E 02 F4 */ lwz r3, 0x2f4(r30)
+/* 8026FB38 0026B798 2C 03 00 00 */ cmpwi r3, 0
+/* 8026FB3C 0026B79C 40 82 FF D0 */ bne lbl_8026FB0C
+/* 8026FB40 0026B7A0 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8026FB44 0026B7A4 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8026FB48 0026B7A8 83 C1 00 08 */ lwz r30, 8(r1)
+/* 8026FB4C 0026B7AC 7C 08 03 A6 */ mtlr r0
+/* 8026FB50 0026B7B0 38 21 00 10 */ addi r1, r1, 0x10
+/* 8026FB54 0026B7B4 4E 80 00 20 */ blr
+
+.global OSTryLockMutex
+OSTryLockMutex:
+/* 8026FB58 0026B7B8 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8026FB5C 0026B7BC 7C 08 02 A6 */ mflr r0
+/* 8026FB60 0026B7C0 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8026FB64 0026B7C4 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8026FB68 0026B7C8 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8026FB6C 0026B7CC 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8026FB70 0026B7D0 7C 7D 1B 78 */ mr r29, r3
+/* 8026FB74 0026B7D4 4B FF EB E9 */ bl OSDisableInterrupts
+/* 8026FB78 0026B7D8 7C 7F 1B 78 */ mr r31, r3
+/* 8026FB7C 0026B7DC 48 00 17 7D */ bl func_802712F8
+/* 8026FB80 0026B7E0 80 1D 00 08 */ lwz r0, 8(r29)
+/* 8026FB84 0026B7E4 2C 00 00 00 */ cmpwi r0, 0
+/* 8026FB88 0026B7E8 40 82 00 44 */ bne lbl_8026FBCC
+/* 8026FB8C 0026B7EC 80 9D 00 0C */ lwz r4, 0xc(r29)
+/* 8026FB90 0026B7F0 90 7D 00 08 */ stw r3, 8(r29)
+/* 8026FB94 0026B7F4 38 04 00 01 */ addi r0, r4, 1
+/* 8026FB98 0026B7F8 90 1D 00 0C */ stw r0, 0xc(r29)
+/* 8026FB9C 0026B7FC 80 83 02 F8 */ lwz r4, 0x2f8(r3)
+/* 8026FBA0 0026B800 2C 04 00 00 */ cmpwi r4, 0
+/* 8026FBA4 0026B804 40 82 00 0C */ bne lbl_8026FBB0
+/* 8026FBA8 0026B808 93 A3 02 F4 */ stw r29, 0x2f4(r3)
+/* 8026FBAC 0026B80C 48 00 00 08 */ b lbl_8026FBB4
+lbl_8026FBB0:
+/* 8026FBB0 0026B810 93 A4 00 10 */ stw r29, 0x10(r4)
+lbl_8026FBB4:
+/* 8026FBB4 0026B814 38 00 00 00 */ li r0, 0
+/* 8026FBB8 0026B818 90 9D 00 14 */ stw r4, 0x14(r29)
+/* 8026FBBC 0026B81C 3B C0 00 01 */ li r30, 1
+/* 8026FBC0 0026B820 90 1D 00 10 */ stw r0, 0x10(r29)
+/* 8026FBC4 0026B824 93 A3 02 F8 */ stw r29, 0x2f8(r3)
+/* 8026FBC8 0026B828 48 00 00 24 */ b lbl_8026FBEC
+lbl_8026FBCC:
+/* 8026FBCC 0026B82C 7C 00 18 40 */ cmplw r0, r3
+/* 8026FBD0 0026B830 40 82 00 18 */ bne lbl_8026FBE8
+/* 8026FBD4 0026B834 80 7D 00 0C */ lwz r3, 0xc(r29)
+/* 8026FBD8 0026B838 3B C0 00 01 */ li r30, 1
+/* 8026FBDC 0026B83C 38 03 00 01 */ addi r0, r3, 1
+/* 8026FBE0 0026B840 90 1D 00 0C */ stw r0, 0xc(r29)
+/* 8026FBE4 0026B844 48 00 00 08 */ b lbl_8026FBEC
+lbl_8026FBE8:
+/* 8026FBE8 0026B848 3B C0 00 00 */ li r30, 0
+lbl_8026FBEC:
+/* 8026FBEC 0026B84C 7F E3 FB 78 */ mr r3, r31
+/* 8026FBF0 0026B850 4B FF EB 95 */ bl OSRestoreInterrupts
+/* 8026FBF4 0026B854 7F C3 F3 78 */ mr r3, r30
+/* 8026FBF8 0026B858 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8026FBFC 0026B85C 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8026FC00 0026B860 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8026FC04 0026B864 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8026FC08 0026B868 7C 08 03 A6 */ mtlr r0
+/* 8026FC0C 0026B86C 38 21 00 20 */ addi r1, r1, 0x20
+/* 8026FC10 0026B870 4E 80 00 20 */ blr
+
+.global OSInitCond
+OSInitCond:
+/* 8026FC14 0026B874 48 00 16 D4 */ b func_802712E8
+
+.global OSSignalCond
+OSSignalCond:
+/* 8026FC18 0026B878 48 00 28 48 */ b func_80272460
diff --git a/asm/SDK/OS/OSReboot.s b/asm/SDK/OS/OSReboot.s new file mode 100644 index 0000000..fe42ffe --- /dev/null +++ b/asm/SDK/OS/OSReboot.s @@ -0,0 +1,38 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global __OSReboot
+__OSReboot:
+/* 8026FC1C 0026B87C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8026FC20 0026B880 7C 08 02 A6 */ mflr r0
+/* 8026FC24 0026B884 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8026FC28 0026B888 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8026FC2C 0026B88C 7C 9F 23 78 */ mr r31, r4
+/* 8026FC30 0026B890 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8026FC34 0026B894 7C 7E 1B 78 */ mr r30, r3
+/* 8026FC38 0026B898 4B FF EB 25 */ bl OSDisableInterrupts
+/* 8026FC3C 0026B89C 3C 60 81 28 */ lis r3, 0x8128
+/* 8026FC40 0026B8A0 4B FF A4 E5 */ bl OSSetArenaLo
+/* 8026FC44 0026B8A4 3C 60 81 2F */ lis r3, 0x812f
+/* 8026FC48 0026B8A8 4B FF A4 C5 */ bl OSSetArenaHi
+/* 8026FC4C 0026B8AC 38 00 00 00 */ li r0, 0
+/* 8026FC50 0026B8B0 7F E3 FB 78 */ mr r3, r31
+/* 8026FC54 0026B8B4 90 01 00 08 */ stw r0, 8(r1)
+/* 8026FC58 0026B8B8 67 C4 80 00 */ oris r4, r30, 0x8000
+/* 8026FC5C 0026B8BC 38 A1 00 08 */ addi r5, r1, 8
+/* 8026FC60 0026B8C0 4B FF CE 81 */ bl __OSBootDol
+/* 8026FC64 0026B8C4 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8026FC68 0026B8C8 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8026FC6C 0026B8CC 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8026FC70 0026B8D0 7C 08 03 A6 */ mtlr r0
+/* 8026FC74 0026B8D4 38 21 00 20 */ addi r1, r1, 0x20
+/* 8026FC78 0026B8D8 4E 80 00 20 */ blr
+
+.global OSGetSaveRegion
+OSGetSaveRegion:
+/* 8026FC7C 0026B8DC 80 0D A8 10 */ lwz r0, lbl_8063FAD0-_SDA_BASE_(r13)
+/* 8026FC80 0026B8E0 90 03 00 00 */ stw r0, 0(r3)
+/* 8026FC84 0026B8E4 80 0D A8 14 */ lwz r0, lbl_8063FAD4-_SDA_BASE_(r13)
+/* 8026FC88 0026B8E8 90 04 00 00 */ stw r0, 0(r4)
+/* 8026FC8C 0026B8EC 4E 80 00 20 */ blr
diff --git a/asm/SDK/OS/OSReset.s b/asm/SDK/OS/OSReset.s new file mode 100644 index 0000000..5fd90b8 --- /dev/null +++ b/asm/SDK/OS/OSReset.s @@ -0,0 +1,554 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global OSRegisterShutdownFunction
+OSRegisterShutdownFunction:
+/* 8026FC90 0026B8F0 80 AD A8 20 */ lwz r5, lbl_8063FAE0-_SDA_BASE_(r13)
+/* 8026FC94 0026B8F4 48 00 00 08 */ b lbl_8026FC9C
+lbl_8026FC98:
+/* 8026FC98 0026B8F8 80 A5 00 08 */ lwz r5, 8(r5)
+lbl_8026FC9C:
+/* 8026FC9C 0026B8FC 2C 05 00 00 */ cmpwi r5, 0
+/* 8026FCA0 0026B900 41 82 00 14 */ beq lbl_8026FCB4
+/* 8026FCA4 0026B904 80 85 00 04 */ lwz r4, 4(r5)
+/* 8026FCA8 0026B908 80 03 00 04 */ lwz r0, 4(r3)
+/* 8026FCAC 0026B90C 7C 04 00 40 */ cmplw r4, r0
+/* 8026FCB0 0026B910 40 81 FF E8 */ ble lbl_8026FC98
+lbl_8026FCB4:
+/* 8026FCB4 0026B914 2C 05 00 00 */ cmpwi r5, 0
+/* 8026FCB8 0026B918 40 82 00 38 */ bne lbl_8026FCF0
+/* 8026FCBC 0026B91C 38 8D A8 20 */ addi r4, r13, lbl_8063FAE0-_SDA_BASE_
+/* 8026FCC0 0026B920 80 84 00 04 */ lwz r4, 4(r4)
+/* 8026FCC4 0026B924 2C 04 00 00 */ cmpwi r4, 0
+/* 8026FCC8 0026B928 40 82 00 0C */ bne lbl_8026FCD4
+/* 8026FCCC 0026B92C 90 6D A8 20 */ stw r3, lbl_8063FAE0-_SDA_BASE_(r13)
+/* 8026FCD0 0026B930 48 00 00 08 */ b lbl_8026FCD8
+lbl_8026FCD4:
+/* 8026FCD4 0026B934 90 64 00 08 */ stw r3, 8(r4)
+lbl_8026FCD8:
+/* 8026FCD8 0026B938 38 00 00 00 */ li r0, 0
+/* 8026FCDC 0026B93C 90 83 00 0C */ stw r4, 0xc(r3)
+/* 8026FCE0 0026B940 38 8D A8 20 */ addi r4, r13, lbl_8063FAE0-_SDA_BASE_
+/* 8026FCE4 0026B944 90 03 00 08 */ stw r0, 8(r3)
+/* 8026FCE8 0026B948 90 64 00 04 */ stw r3, 4(r4)
+/* 8026FCEC 0026B94C 4E 80 00 20 */ blr
+lbl_8026FCF0:
+/* 8026FCF0 0026B950 90 A3 00 08 */ stw r5, 8(r3)
+/* 8026FCF4 0026B954 80 85 00 0C */ lwz r4, 0xc(r5)
+/* 8026FCF8 0026B958 90 65 00 0C */ stw r3, 0xc(r5)
+/* 8026FCFC 0026B95C 2C 04 00 00 */ cmpwi r4, 0
+/* 8026FD00 0026B960 90 83 00 0C */ stw r4, 0xc(r3)
+/* 8026FD04 0026B964 40 82 00 0C */ bne lbl_8026FD10
+/* 8026FD08 0026B968 90 6D A8 20 */ stw r3, lbl_8063FAE0-_SDA_BASE_(r13)
+/* 8026FD0C 0026B96C 4E 80 00 20 */ blr
+lbl_8026FD10:
+/* 8026FD10 0026B970 90 64 00 08 */ stw r3, 8(r4)
+/* 8026FD14 0026B974 4E 80 00 20 */ blr
+
+.global __OSCallShutdownFunctions
+__OSCallShutdownFunctions:
+/* 8026FD18 0026B978 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8026FD1C 0026B97C 7C 08 02 A6 */ mflr r0
+/* 8026FD20 0026B980 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8026FD24 0026B984 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8026FD28 0026B988 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8026FD2C 0026B98C 3B C0 00 00 */ li r30, 0
+/* 8026FD30 0026B990 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8026FD34 0026B994 7C 9D 23 78 */ mr r29, r4
+/* 8026FD38 0026B998 93 81 00 10 */ stw r28, 0x10(r1)
+/* 8026FD3C 0026B99C 7C 7C 1B 78 */ mr r28, r3
+/* 8026FD40 0026B9A0 38 60 00 00 */ li r3, 0
+/* 8026FD44 0026B9A4 83 ED A8 20 */ lwz r31, lbl_8063FAE0-_SDA_BASE_(r13)
+/* 8026FD48 0026B9A8 48 00 00 40 */ b lbl_8026FD88
+lbl_8026FD4C:
+/* 8026FD4C 0026B9AC 2C 1E 00 00 */ cmpwi r30, 0
+/* 8026FD50 0026B9B0 41 82 00 10 */ beq lbl_8026FD60
+/* 8026FD54 0026B9B4 80 1F 00 04 */ lwz r0, 4(r31)
+/* 8026FD58 0026B9B8 7C 03 00 40 */ cmplw r3, r0
+/* 8026FD5C 0026B9BC 40 82 00 34 */ bne lbl_8026FD90
+lbl_8026FD60:
+/* 8026FD60 0026B9C0 81 9F 00 00 */ lwz r12, 0(r31)
+/* 8026FD64 0026B9C4 7F 83 E3 78 */ mr r3, r28
+/* 8026FD68 0026B9C8 7F A4 EB 78 */ mr r4, r29
+/* 8026FD6C 0026B9CC 7D 89 03 A6 */ mtctr r12
+/* 8026FD70 0026B9D0 4E 80 04 21 */ bctrl
+/* 8026FD74 0026B9D4 7C 60 00 34 */ cntlzw r0, r3
+/* 8026FD78 0026B9D8 80 7F 00 04 */ lwz r3, 4(r31)
+/* 8026FD7C 0026B9DC 54 00 D9 7E */ srwi r0, r0, 5
+/* 8026FD80 0026B9E0 83 FF 00 08 */ lwz r31, 8(r31)
+/* 8026FD84 0026B9E4 7F DE 03 78 */ or r30, r30, r0
+lbl_8026FD88:
+/* 8026FD88 0026B9E8 2C 1F 00 00 */ cmpwi r31, 0
+/* 8026FD8C 0026B9EC 40 82 FF C0 */ bne lbl_8026FD4C
+lbl_8026FD90:
+/* 8026FD90 0026B9F0 48 00 0C 65 */ bl func_802709F4
+/* 8026FD94 0026B9F4 7C 60 00 34 */ cntlzw r0, r3
+/* 8026FD98 0026B9F8 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8026FD9C 0026B9FC 54 00 D9 7E */ srwi r0, r0, 5
+/* 8026FDA0 0026BA00 7F DE 03 78 */ or r30, r30, r0
+/* 8026FDA4 0026BA04 7F C0 00 34 */ cntlzw r0, r30
+/* 8026FDA8 0026BA08 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8026FDAC 0026BA0C 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8026FDB0 0026BA10 54 03 D9 7E */ srwi r3, r0, 5
+/* 8026FDB4 0026BA14 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 8026FDB8 0026BA18 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8026FDBC 0026BA1C 7C 08 03 A6 */ mtlr r0
+/* 8026FDC0 0026BA20 38 21 00 20 */ addi r1, r1, 0x20
+/* 8026FDC4 0026BA24 4E 80 00 20 */ blr
+
+.global __OSShutdownDevices
+__OSShutdownDevices:
+/* 8026FDC8 0026BA28 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8026FDCC 0026BA2C 7C 08 02 A6 */ mflr r0
+/* 8026FDD0 0026BA30 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8026FDD4 0026BA34 39 61 00 20 */ addi r11, r1, 0x20
+/* 8026FDD8 0026BA38 4B F5 73 51 */ bl _savegpr_27
+/* 8026FDDC 0026BA3C 2C 03 00 04 */ cmpwi r3, 4
+/* 8026FDE0 0026BA40 7C 7B 1B 78 */ mr r27, r3
+/* 8026FDE4 0026BA44 40 80 00 10 */ bge lbl_8026FDF4
+/* 8026FDE8 0026BA48 2C 03 00 00 */ cmpwi r3, 0
+/* 8026FDEC 0026BA4C 41 82 00 10 */ beq lbl_8026FDFC
+/* 8026FDF0 0026BA50 48 00 00 14 */ b lbl_8026FE04
+lbl_8026FDF4:
+/* 8026FDF4 0026BA54 2C 03 00 07 */ cmpwi r3, 7
+/* 8026FDF8 0026BA58 40 80 00 0C */ bge lbl_8026FE04
+lbl_8026FDFC:
+/* 8026FDFC 0026BA5C 3B 80 00 00 */ li r28, 0
+/* 8026FE00 0026BA60 48 00 00 08 */ b lbl_8026FE08
+lbl_8026FE04:
+/* 8026FE04 0026BA64 3B 80 00 01 */ li r28, 1
+lbl_8026FE08:
+/* 8026FE08 0026BA68 4B FF A7 41 */ bl __OSStopAudioSystem
+/* 8026FE0C 0026BA6C 2C 1C 00 00 */ cmpwi r28, 0
+/* 8026FE10 0026BA70 40 82 00 10 */ bne lbl_8026FE20
+/* 8026FE14 0026BA74 38 60 00 01 */ li r3, 1
+/* 8026FE18 0026BA78 48 03 5D 11 */ bl func_802A5B28
+/* 8026FE1C 0026BA7C 7C 7D 1B 78 */ mr r29, r3
+lbl_8026FE20:
+/* 8026FE20 0026BA80 83 CD A8 20 */ lwz r30, lbl_8063FAE0-_SDA_BASE_(r13)
+/* 8026FE24 0026BA84 38 60 00 00 */ li r3, 0
+/* 8026FE28 0026BA88 3B E0 00 00 */ li r31, 0
+/* 8026FE2C 0026BA8C 48 00 00 40 */ b lbl_8026FE6C
+lbl_8026FE30:
+/* 8026FE30 0026BA90 2C 1F 00 00 */ cmpwi r31, 0
+/* 8026FE34 0026BA94 41 82 00 10 */ beq lbl_8026FE44
+/* 8026FE38 0026BA98 80 1E 00 04 */ lwz r0, 4(r30)
+/* 8026FE3C 0026BA9C 7C 03 00 40 */ cmplw r3, r0
+/* 8026FE40 0026BAA0 40 82 00 34 */ bne lbl_8026FE74
+lbl_8026FE44:
+/* 8026FE44 0026BAA4 81 9E 00 00 */ lwz r12, 0(r30)
+/* 8026FE48 0026BAA8 7F 64 DB 78 */ mr r4, r27
+/* 8026FE4C 0026BAAC 38 60 00 00 */ li r3, 0
+/* 8026FE50 0026BAB0 7D 89 03 A6 */ mtctr r12
+/* 8026FE54 0026BAB4 4E 80 04 21 */ bctrl
+/* 8026FE58 0026BAB8 7C 60 00 34 */ cntlzw r0, r3
+/* 8026FE5C 0026BABC 80 7E 00 04 */ lwz r3, 4(r30)
+/* 8026FE60 0026BAC0 54 00 D9 7E */ srwi r0, r0, 5
+/* 8026FE64 0026BAC4 83 DE 00 08 */ lwz r30, 8(r30)
+/* 8026FE68 0026BAC8 7F FF 03 78 */ or r31, r31, r0
+lbl_8026FE6C:
+/* 8026FE6C 0026BACC 2C 1E 00 00 */ cmpwi r30, 0
+/* 8026FE70 0026BAD0 40 82 FF C0 */ bne lbl_8026FE30
+lbl_8026FE74:
+/* 8026FE74 0026BAD4 48 00 0B 81 */ bl func_802709F4
+/* 8026FE78 0026BAD8 7C 60 00 34 */ cntlzw r0, r3
+/* 8026FE7C 0026BADC 54 00 D9 7E */ srwi r0, r0, 5
+/* 8026FE80 0026BAE0 7F FF 03 79 */ or. r31, r31, r0
+/* 8026FE84 0026BAE4 40 82 FF 9C */ bne lbl_8026FE20
+lbl_8026FE88:
+/* 8026FE88 0026BAE8 48 00 0B 6D */ bl func_802709F4
+/* 8026FE8C 0026BAEC 2C 03 00 00 */ cmpwi r3, 0
+/* 8026FE90 0026BAF0 41 82 FF F8 */ beq lbl_8026FE88
+/* 8026FE94 0026BAF4 4B FF E8 C9 */ bl OSDisableInterrupts
+/* 8026FE98 0026BAF8 83 ED A8 20 */ lwz r31, lbl_8063FAE0-_SDA_BASE_(r13)
+/* 8026FE9C 0026BAFC 38 60 00 00 */ li r3, 0
+/* 8026FEA0 0026BB00 3B C0 00 00 */ li r30, 0
+/* 8026FEA4 0026BB04 48 00 00 40 */ b lbl_8026FEE4
+lbl_8026FEA8:
+/* 8026FEA8 0026BB08 2C 1E 00 00 */ cmpwi r30, 0
+/* 8026FEAC 0026BB0C 41 82 00 10 */ beq lbl_8026FEBC
+/* 8026FEB0 0026BB10 80 1F 00 04 */ lwz r0, 4(r31)
+/* 8026FEB4 0026BB14 7C 03 00 40 */ cmplw r3, r0
+/* 8026FEB8 0026BB18 40 82 00 34 */ bne lbl_8026FEEC
+lbl_8026FEBC:
+/* 8026FEBC 0026BB1C 81 9F 00 00 */ lwz r12, 0(r31)
+/* 8026FEC0 0026BB20 7F 64 DB 78 */ mr r4, r27
+/* 8026FEC4 0026BB24 38 60 00 01 */ li r3, 1
+/* 8026FEC8 0026BB28 7D 89 03 A6 */ mtctr r12
+/* 8026FECC 0026BB2C 4E 80 04 21 */ bctrl
+/* 8026FED0 0026BB30 7C 60 00 34 */ cntlzw r0, r3
+/* 8026FED4 0026BB34 80 7F 00 04 */ lwz r3, 4(r31)
+/* 8026FED8 0026BB38 54 00 D9 7E */ srwi r0, r0, 5
+/* 8026FEDC 0026BB3C 83 FF 00 08 */ lwz r31, 8(r31)
+/* 8026FEE0 0026BB40 7F DE 03 78 */ or r30, r30, r0
+lbl_8026FEE4:
+/* 8026FEE4 0026BB44 2C 1F 00 00 */ cmpwi r31, 0
+/* 8026FEE8 0026BB48 40 82 FF C0 */ bne lbl_8026FEA8
+lbl_8026FEEC:
+/* 8026FEEC 0026BB4C 48 00 0B 09 */ bl func_802709F4
+/* 8026FEF0 0026BB50 4B FF A9 A5 */ bl LCDisable
+/* 8026FEF4 0026BB54 2C 1C 00 00 */ cmpwi r28, 0
+/* 8026FEF8 0026BB58 40 82 00 0C */ bne lbl_8026FF04
+/* 8026FEFC 0026BB5C 7F A3 EB 78 */ mr r3, r29
+/* 8026FF00 0026BB60 48 03 5C 29 */ bl func_802A5B28
+lbl_8026FF04:
+/* 8026FF04 0026BB64 3C 60 80 00 */ lis r3, 0x800000DC@ha
+/* 8026FF08 0026BB68 80 63 00 DC */ lwz r3, 0x800000DC@l(r3)
+/* 8026FF0C 0026BB6C 48 00 00 2C */ b lbl_8026FF38
+lbl_8026FF10:
+/* 8026FF10 0026BB70 A0 03 02 C8 */ lhz r0, 0x2c8(r3)
+/* 8026FF14 0026BB74 83 C3 02 FC */ lwz r30, 0x2fc(r3)
+/* 8026FF18 0026BB78 2C 00 00 04 */ cmpwi r0, 4
+/* 8026FF1C 0026BB7C 41 82 00 14 */ beq lbl_8026FF30
+/* 8026FF20 0026BB80 40 80 00 14 */ bge lbl_8026FF34
+/* 8026FF24 0026BB84 2C 00 00 01 */ cmpwi r0, 1
+/* 8026FF28 0026BB88 41 82 00 08 */ beq lbl_8026FF30
+/* 8026FF2C 0026BB8C 48 00 00 08 */ b lbl_8026FF34
+lbl_8026FF30:
+/* 8026FF30 0026BB90 48 00 1D 01 */ bl func_80271C30
+lbl_8026FF34:
+/* 8026FF34 0026BB94 7F C3 F3 78 */ mr r3, r30
+lbl_8026FF38:
+/* 8026FF38 0026BB98 2C 03 00 00 */ cmpwi r3, 0
+/* 8026FF3C 0026BB9C 40 82 FF D4 */ bne lbl_8026FF10
+/* 8026FF40 0026BBA0 39 61 00 20 */ addi r11, r1, 0x20
+/* 8026FF44 0026BBA4 4B F5 72 31 */ bl _restgpr_27
+/* 8026FF48 0026BBA8 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8026FF4C 0026BBAC 7C 08 03 A6 */ mtlr r0
+/* 8026FF50 0026BBB0 38 21 00 20 */ addi r1, r1, 0x20
+/* 8026FF54 0026BBB4 4E 80 00 20 */ blr
+
+.global OSRebootSystem
+OSRebootSystem:
+/* 8026FF58 0026BBB8 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 8026FF5C 0026BBBC 7C 08 02 A6 */ mflr r0
+/* 8026FF60 0026BBC0 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8026FF64 0026BBC4 48 00 3D B9 */ bl func_80273D1C
+/* 8026FF68 0026BBC8 48 00 36 C5 */ bl func_8027362C
+/* 8026FF6C 0026BBCC 48 01 C8 C1 */ bl func_8028C82C
+/* 8026FF70 0026BBD0 38 61 00 10 */ addi r3, r1, 0x10
+/* 8026FF74 0026BBD4 48 00 40 75 */ bl func_80273FE8
+/* 8026FF78 0026BBD8 48 01 C4 89 */ bl func_8028C400
+/* 8026FF7C 0026BBDC 28 03 00 02 */ cmplwi r3, 2
+/* 8026FF80 0026BBE0 41 82 00 10 */ beq lbl_8026FF90
+/* 8026FF84 0026BBE4 38 00 00 03 */ li r0, 3
+/* 8026FF88 0026BBE8 98 01 00 16 */ stb r0, 0x16(r1)
+/* 8026FF8C 0026BBEC 48 00 00 40 */ b lbl_8026FFCC
+lbl_8026FF90:
+/* 8026FF90 0026BBF0 88 01 00 16 */ lbz r0, 0x16(r1)
+/* 8026FF94 0026BBF4 28 00 00 01 */ cmplwi r0, 1
+/* 8026FF98 0026BBF8 40 82 00 20 */ bne lbl_8026FFB8
+/* 8026FF9C 0026BBFC 38 61 00 08 */ addi r3, r1, 8
+/* 8026FFA0 0026BC00 48 00 0C 9D */ bl func_80270C3C
+/* 8026FFA4 0026BC04 2C 03 00 00 */ cmpwi r3, 0
+/* 8026FFA8 0026BC08 41 82 00 1C */ beq lbl_8026FFC4
+/* 8026FFAC 0026BC0C 80 01 00 08 */ lwz r0, 8(r1)
+/* 8026FFB0 0026BC10 2C 00 00 00 */ cmpwi r0, 0
+/* 8026FFB4 0026BC14 41 82 00 10 */ beq lbl_8026FFC4
+lbl_8026FFB8:
+/* 8026FFB8 0026BC18 38 00 00 02 */ li r0, 2
+/* 8026FFBC 0026BC1C 98 01 00 16 */ stb r0, 0x16(r1)
+/* 8026FFC0 0026BC20 48 00 00 0C */ b lbl_8026FFCC
+lbl_8026FFC4:
+/* 8026FFC4 0026BC24 38 00 00 01 */ li r0, 1
+/* 8026FFC8 0026BC28 98 01 00 16 */ stb r0, 0x16(r1)
+lbl_8026FFCC:
+/* 8026FFCC 0026BC2C 38 00 00 02 */ li r0, 2
+/* 8026FFD0 0026BC30 98 01 00 15 */ stb r0, 0x15(r1)
+/* 8026FFD4 0026BC34 48 00 0D 85 */ bl func_80270D58
+/* 8026FFD8 0026BC38 38 61 00 10 */ addi r3, r1, 0x10
+/* 8026FFDC 0026BC3C 48 00 3F 29 */ bl func_80273F04
+/* 8026FFE0 0026BC40 48 00 13 65 */ bl func_80271344
+/* 8026FFE4 0026BC44 38 60 00 01 */ li r3, 1
+/* 8026FFE8 0026BC48 4B FF FD E1 */ bl __OSShutdownDevices
+/* 8026FFEC 0026BC4C 48 00 34 99 */ bl func_80273484
+/* 8026FFF0 0026BC50 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8026FFF4 0026BC54 7C 08 03 A6 */ mtlr r0
+/* 8026FFF8 0026BC58 38 21 00 30 */ addi r1, r1, 0x30
+/* 8026FFFC 0026BC5C 4E 80 00 20 */ blr
+
+.global OSShutdownSystem
+OSShutdownSystem:
+/* 80270000 0026BC60 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 80270004 0026BC64 7C 08 02 A6 */ mflr r0
+/* 80270008 0026BC68 38 80 00 00 */ li r4, 0
+/* 8027000C 0026BC6C 38 A0 00 02 */ li r5, 2
+/* 80270010 0026BC70 90 01 00 44 */ stw r0, 0x44(r1)
+/* 80270014 0026BC74 38 61 00 08 */ addi r3, r1, 8
+/* 80270018 0026BC78 4B D9 40 ED */ bl memset
+/* 8027001C 0026BC7C 48 07 A9 31 */ bl func_802EA94C
+lbl_80270020:
+/* 80270020 0026BC80 48 07 A9 CD */ bl func_802EA9EC
+/* 80270024 0026BC84 28 03 00 01 */ cmplwi r3, 1
+/* 80270028 0026BC88 41 82 FF F8 */ beq lbl_80270020
+/* 8027002C 0026BC8C 38 61 00 08 */ addi r3, r1, 8
+/* 80270030 0026BC90 48 07 C4 0D */ bl func_802EC43C
+/* 80270034 0026BC94 48 00 3C E9 */ bl func_80273D1C
+/* 80270038 0026BC98 48 00 35 F5 */ bl func_8027362C
+/* 8027003C 0026BC9C 48 01 C7 F1 */ bl func_8028C82C
+/* 80270040 0026BCA0 38 61 00 18 */ addi r3, r1, 0x18
+/* 80270044 0026BCA4 48 00 3F A5 */ bl func_80273FE8
+/* 80270048 0026BCA8 48 01 C3 B9 */ bl func_8028C400
+/* 8027004C 0026BCAC 28 03 00 02 */ cmplwi r3, 2
+/* 80270050 0026BCB0 41 82 00 10 */ beq lbl_80270060
+/* 80270054 0026BCB4 38 00 00 03 */ li r0, 3
+/* 80270058 0026BCB8 98 01 00 1E */ stb r0, 0x1e(r1)
+/* 8027005C 0026BCBC 48 00 00 40 */ b lbl_8027009C
+lbl_80270060:
+/* 80270060 0026BCC0 88 01 00 1E */ lbz r0, 0x1e(r1)
+/* 80270064 0026BCC4 28 00 00 01 */ cmplwi r0, 1
+/* 80270068 0026BCC8 40 82 00 20 */ bne lbl_80270088
+/* 8027006C 0026BCCC 38 61 00 0C */ addi r3, r1, 0xc
+/* 80270070 0026BCD0 48 00 0B CD */ bl func_80270C3C
+/* 80270074 0026BCD4 2C 03 00 00 */ cmpwi r3, 0
+/* 80270078 0026BCD8 41 82 00 1C */ beq lbl_80270094
+/* 8027007C 0026BCDC 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 80270080 0026BCE0 2C 00 00 00 */ cmpwi r0, 0
+/* 80270084 0026BCE4 41 82 00 10 */ beq lbl_80270094
+lbl_80270088:
+/* 80270088 0026BCE8 38 00 00 02 */ li r0, 2
+/* 8027008C 0026BCEC 98 01 00 1E */ stb r0, 0x1e(r1)
+/* 80270090 0026BCF0 48 00 00 0C */ b lbl_8027009C
+lbl_80270094:
+/* 80270094 0026BCF4 38 00 00 01 */ li r0, 1
+/* 80270098 0026BCF8 98 01 00 1E */ stb r0, 0x1e(r1)
+lbl_8027009C:
+/* 8027009C 0026BCFC 88 01 00 08 */ lbz r0, 8(r1)
+/* 802700A0 0026BD00 28 00 00 01 */ cmplwi r0, 1
+/* 802700A4 0026BD04 40 82 00 10 */ bne lbl_802700B4
+/* 802700A8 0026BD08 38 00 00 05 */ li r0, 5
+/* 802700AC 0026BD0C 98 01 00 1D */ stb r0, 0x1d(r1)
+/* 802700B0 0026BD10 48 00 00 0C */ b lbl_802700BC
+lbl_802700B4:
+/* 802700B4 0026BD14 38 00 00 01 */ li r0, 1
+/* 802700B8 0026BD18 98 01 00 1D */ stb r0, 0x1d(r1)
+lbl_802700BC:
+/* 802700BC 0026BD1C 48 00 0C 9D */ bl func_80270D58
+/* 802700C0 0026BD20 38 61 00 18 */ addi r3, r1, 0x18
+/* 802700C4 0026BD24 48 00 3E 41 */ bl func_80273F04
+/* 802700C8 0026BD28 38 61 00 10 */ addi r3, r1, 0x10
+/* 802700CC 0026BD2C 4B FF 83 F5 */ bl __OSGetIOSRev
+/* 802700D0 0026BD30 88 01 00 08 */ lbz r0, 8(r1)
+/* 802700D4 0026BD34 28 00 00 01 */ cmplwi r0, 1
+/* 802700D8 0026BD38 40 82 00 1C */ bne lbl_802700F4
+/* 802700DC 0026BD3C 48 00 12 69 */ bl func_80271344
+/* 802700E0 0026BD40 38 60 00 05 */ li r3, 5
+/* 802700E4 0026BD44 4B FF FC E5 */ bl __OSShutdownDevices
+/* 802700E8 0026BD48 48 00 12 99 */ bl func_80271380
+/* 802700EC 0026BD4C 4B FF C1 41 */ bl __OSLaunchMenu
+/* 802700F0 0026BD50 48 00 00 14 */ b lbl_80270104
+lbl_802700F4:
+/* 802700F4 0026BD54 48 00 12 51 */ bl func_80271344
+/* 802700F8 0026BD58 38 60 00 02 */ li r3, 2
+/* 802700FC 0026BD5C 4B FF FC CD */ bl __OSShutdownDevices
+/* 80270100 0026BD60 48 00 33 0D */ bl func_8027340C
+lbl_80270104:
+/* 80270104 0026BD64 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 80270108 0026BD68 7C 08 03 A6 */ mtlr r0
+/* 8027010C 0026BD6C 38 21 00 40 */ addi r1, r1, 0x40
+/* 80270110 0026BD70 4E 80 00 20 */ blr
+
+.global __OSRebootForNANDAPP
+__OSRebootForNANDAPP:
+/* 80270114 0026BD74 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80270118 0026BD78 7C 08 02 A6 */ mflr r0
+/* 8027011C 0026BD7C 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80270120 0026BD80 93 E1 00 2C */ stw r31, 0x2c(r1)
+/* 80270124 0026BD84 93 C1 00 28 */ stw r30, 0x28(r1)
+/* 80270128 0026BD88 7C 7E 1B 78 */ mr r30, r3
+/* 8027012C 0026BD8C 3C 60 81 28 */ lis r3, 0x8128
+/* 80270130 0026BD90 4B FF 9F F5 */ bl OSSetArenaLo
+/* 80270134 0026BD94 3C 60 81 2F */ lis r3, 0x812f
+/* 80270138 0026BD98 4B FF 9F D5 */ bl OSSetArenaHi
+/* 8027013C 0026BD9C 38 60 10 20 */ li r3, 0x1020
+/* 80270140 0026BDA0 38 80 00 20 */ li r4, 0x20
+/* 80270144 0026BDA4 4B FF 9F E9 */ bl OSAllocFromMEM1ArenaLo
+/* 80270148 0026BDA8 7C 7F 1B 78 */ mr r31, r3
+/* 8027014C 0026BDAC 38 80 00 00 */ li r4, 0
+/* 80270150 0026BDB0 38 A0 10 20 */ li r5, 0x1020
+/* 80270154 0026BDB4 4B D9 3F B1 */ bl memset
+/* 80270158 0026BDB8 7F E3 FB 78 */ mr r3, r31
+/* 8027015C 0026BDBC 48 00 41 B1 */ bl func_8027430C
+/* 80270160 0026BDC0 38 60 00 01 */ li r3, 1
+/* 80270164 0026BDC4 67 C0 80 00 */ oris r0, r30, 0x8000
+/* 80270168 0026BDC8 90 7F 00 08 */ stw r3, 8(r31)
+/* 8027016C 0026BDCC 7F E3 FB 78 */ mr r3, r31
+/* 80270170 0026BDD0 90 1F 00 0C */ stw r0, 0xc(r31)
+/* 80270174 0026BDD4 48 00 40 41 */ bl func_802741B4
+/* 80270178 0026BDD8 38 61 00 08 */ addi r3, r1, 8
+/* 8027017C 0026BDDC 48 00 3E 6D */ bl func_80273FE8
+/* 80270180 0026BDE0 2C 03 00 00 */ cmpwi r3, 0
+/* 80270184 0026BDE4 41 82 00 14 */ beq lbl_80270198
+/* 80270188 0026BDE8 38 00 00 03 */ li r0, 3
+/* 8027018C 0026BDEC 38 61 00 08 */ addi r3, r1, 8
+/* 80270190 0026BDF0 98 01 00 0D */ stb r0, 0xd(r1)
+/* 80270194 0026BDF4 48 00 3D 71 */ bl func_80273F04
+lbl_80270198:
+/* 80270198 0026BDF8 48 00 11 AD */ bl func_80271344
+/* 8027019C 0026BDFC 38 60 00 04 */ li r3, 4
+/* 802701A0 0026BE00 4B FF FC 29 */ bl __OSShutdownDevices
+/* 802701A4 0026BE04 48 00 11 DD */ bl func_80271380
+/* 802701A8 0026BE08 4B FF C1 81 */ bl func_8026C328
+/* 802701AC 0026BE0C 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 802701B0 0026BE10 83 E1 00 2C */ lwz r31, 0x2c(r1)
+/* 802701B4 0026BE14 83 C1 00 28 */ lwz r30, 0x28(r1)
+/* 802701B8 0026BE18 7C 08 03 A6 */ mtlr r0
+/* 802701BC 0026BE1C 38 21 00 30 */ addi r1, r1, 0x30
+/* 802701C0 0026BE20 4E 80 00 20 */ blr
+
+.global OSRestart
+OSRestart:
+/* 802701C4 0026BE24 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802701C8 0026BE28 7C 08 02 A6 */ mflr r0
+/* 802701CC 0026BE2C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802701D0 0026BE30 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802701D4 0026BE34 93 C1 00 08 */ stw r30, 8(r1)
+/* 802701D8 0026BE38 7C 7E 1B 78 */ mr r30, r3
+/* 802701DC 0026BE3C 4B FF 94 D1 */ bl OSGetAppType
+/* 802701E0 0026BE40 7C 7F 1B 78 */ mr r31, r3
+/* 802701E4 0026BE44 48 00 3B 39 */ bl func_80273D1C
+/* 802701E8 0026BE48 48 00 34 45 */ bl func_8027362C
+/* 802701EC 0026BE4C 57 E0 06 3E */ clrlwi r0, r31, 0x18
+/* 802701F0 0026BE50 28 00 00 81 */ cmplwi r0, 0x81
+/* 802701F4 0026BE54 40 82 00 10 */ bne lbl_80270204
+/* 802701F8 0026BE58 7F C3 F3 78 */ mr r3, r30
+/* 802701FC 0026BE5C 4B FF FF 19 */ bl __OSRebootForNANDAPP
+/* 80270200 0026BE60 48 00 00 28 */ b lbl_80270228
+lbl_80270204:
+/* 80270204 0026BE64 28 00 00 80 */ cmplwi r0, 0x80
+/* 80270208 0026BE68 40 82 00 20 */ bne lbl_80270228
+/* 8027020C 0026BE6C 48 00 11 39 */ bl func_80271344
+/* 80270210 0026BE70 38 60 00 04 */ li r3, 4
+/* 80270214 0026BE74 4B FF FB B5 */ bl __OSShutdownDevices
+/* 80270218 0026BE78 48 00 11 69 */ bl func_80271380
+/* 8027021C 0026BE7C 80 8D A8 18 */ lwz r4, lbl_8063FAD8-_SDA_BASE_(r13)
+/* 80270220 0026BE80 7F C3 F3 78 */ mr r3, r30
+/* 80270224 0026BE84 4B FF F9 F9 */ bl __OSReboot
+lbl_80270228:
+/* 80270228 0026BE88 48 00 11 1D */ bl func_80271344
+/* 8027022C 0026BE8C 38 60 00 01 */ li r3, 1
+/* 80270230 0026BE90 4B FF FB 99 */ bl __OSShutdownDevices
+/* 80270234 0026BE94 48 00 32 51 */ bl func_80273484
+/* 80270238 0026BE98 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8027023C 0026BE9C 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80270240 0026BEA0 83 C1 00 08 */ lwz r30, 8(r1)
+/* 80270244 0026BEA4 7C 08 03 A6 */ mtlr r0
+/* 80270248 0026BEA8 38 21 00 10 */ addi r1, r1, 0x10
+/* 8027024C 0026BEAC 4E 80 00 20 */ blr
+
+.global OSReturnToMenu
+OSReturnToMenu:
+/* 80270250 0026BEB0 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80270254 0026BEB4 7C 08 02 A6 */ mflr r0
+/* 80270258 0026BEB8 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8027025C 0026BEBC 48 00 3A C1 */ bl func_80273D1C
+/* 80270260 0026BEC0 48 00 33 CD */ bl func_8027362C
+/* 80270264 0026BEC4 48 01 C5 C9 */ bl func_8028C82C
+/* 80270268 0026BEC8 38 61 00 10 */ addi r3, r1, 0x10
+/* 8027026C 0026BECC 48 00 3D 7D */ bl func_80273FE8
+/* 80270270 0026BED0 48 01 C1 91 */ bl func_8028C400
+/* 80270274 0026BED4 28 03 00 02 */ cmplwi r3, 2
+/* 80270278 0026BED8 41 82 00 10 */ beq lbl_80270288
+/* 8027027C 0026BEDC 38 00 00 03 */ li r0, 3
+/* 80270280 0026BEE0 98 01 00 16 */ stb r0, 0x16(r1)
+/* 80270284 0026BEE4 48 00 00 40 */ b lbl_802702C4
+lbl_80270288:
+/* 80270288 0026BEE8 88 01 00 16 */ lbz r0, 0x16(r1)
+/* 8027028C 0026BEEC 28 00 00 01 */ cmplwi r0, 1
+/* 80270290 0026BEF0 40 82 00 20 */ bne lbl_802702B0
+/* 80270294 0026BEF4 38 61 00 08 */ addi r3, r1, 8
+/* 80270298 0026BEF8 48 00 09 A5 */ bl func_80270C3C
+/* 8027029C 0026BEFC 2C 03 00 00 */ cmpwi r3, 0
+/* 802702A0 0026BF00 41 82 00 1C */ beq lbl_802702BC
+/* 802702A4 0026BF04 80 01 00 08 */ lwz r0, 8(r1)
+/* 802702A8 0026BF08 2C 00 00 00 */ cmpwi r0, 0
+/* 802702AC 0026BF0C 41 82 00 10 */ beq lbl_802702BC
+lbl_802702B0:
+/* 802702B0 0026BF10 38 00 00 02 */ li r0, 2
+/* 802702B4 0026BF14 98 01 00 16 */ stb r0, 0x16(r1)
+/* 802702B8 0026BF18 48 00 00 0C */ b lbl_802702C4
+lbl_802702BC:
+/* 802702BC 0026BF1C 38 00 00 01 */ li r0, 1
+/* 802702C0 0026BF20 98 01 00 16 */ stb r0, 0x16(r1)
+lbl_802702C4:
+/* 802702C4 0026BF24 38 00 00 03 */ li r0, 3
+/* 802702C8 0026BF28 98 01 00 15 */ stb r0, 0x15(r1)
+/* 802702CC 0026BF2C 48 00 0A 8D */ bl func_80270D58
+/* 802702D0 0026BF30 38 61 00 10 */ addi r3, r1, 0x10
+/* 802702D4 0026BF34 48 00 3C 31 */ bl func_80273F04
+/* 802702D8 0026BF38 48 00 10 6D */ bl func_80271344
+/* 802702DC 0026BF3C 38 60 00 05 */ li r3, 5
+/* 802702E0 0026BF40 4B FF FA E9 */ bl __OSShutdownDevices
+/* 802702E4 0026BF44 48 00 10 9D */ bl func_80271380
+/* 802702E8 0026BF48 4B FF BF 45 */ bl __OSLaunchMenu
+/* 802702EC 0026BF4C 48 00 10 59 */ bl func_80271344
+/* 802702F0 0026BF50 48 00 B7 C9 */ bl func_8027BAB8
+/* 802702F4 0026BF54 48 00 31 91 */ bl func_80273484
+/* 802702F8 0026BF58 3C 60 80 42 */ lis r3, lbl_80427D18@ha
+/* 802702FC 0026BF5C 3C A0 80 42 */ lis r5, lbl_80427D24@ha
+/* 80270300 0026BF60 38 63 7D 18 */ addi r3, r3, lbl_80427D18@l
+/* 80270304 0026BF64 38 80 03 4B */ li r4, 0x34b
+/* 80270308 0026BF68 38 A5 7D 24 */ addi r5, r5, lbl_80427D24@l
+/* 8027030C 0026BF6C 4C C6 31 82 */ crclr 6
+/* 80270310 0026BF70 4B FF B1 8D */ bl OSPanic
+/* 80270314 0026BF74 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80270318 0026BF78 7C 08 03 A6 */ mtlr r0
+/* 8027031C 0026BF7C 38 21 00 30 */ addi r1, r1, 0x30
+/* 80270320 0026BF80 4E 80 00 20 */ blr
+
+.global __OSReturnToMenuForError
+__OSReturnToMenuForError:
+/* 80270324 0026BF84 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80270328 0026BF88 7C 08 02 A6 */ mflr r0
+/* 8027032C 0026BF8C 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80270330 0026BF90 38 61 00 08 */ addi r3, r1, 8
+/* 80270334 0026BF94 48 00 3C B5 */ bl func_80273FE8
+/* 80270338 0026BF98 38 60 00 02 */ li r3, 2
+/* 8027033C 0026BF9C 38 00 00 03 */ li r0, 3
+/* 80270340 0026BFA0 98 61 00 0E */ stb r3, 0xe(r1)
+/* 80270344 0026BFA4 98 01 00 0D */ stb r0, 0xd(r1)
+/* 80270348 0026BFA8 48 00 0A 11 */ bl func_80270D58
+/* 8027034C 0026BFAC 38 61 00 08 */ addi r3, r1, 8
+/* 80270350 0026BFB0 48 00 3B B5 */ bl func_80273F04
+/* 80270354 0026BFB4 4B FF BE D9 */ bl __OSLaunchMenu
+/* 80270358 0026BFB8 48 00 0F ED */ bl func_80271344
+/* 8027035C 0026BFBC 48 00 B7 5D */ bl func_8027BAB8
+/* 80270360 0026BFC0 48 00 31 25 */ bl func_80273484
+/* 80270364 0026BFC4 3C 60 80 42 */ lis r3, lbl_80427D18@ha
+/* 80270368 0026BFC8 3C A0 80 42 */ lis r5, lbl_80427D54@ha
+/* 8027036C 0026BFCC 38 63 7D 18 */ addi r3, r3, lbl_80427D18@l
+/* 80270370 0026BFD0 38 80 03 65 */ li r4, 0x365
+/* 80270374 0026BFD4 38 A5 7D 54 */ addi r5, r5, lbl_80427D54@l
+/* 80270378 0026BFD8 4C C6 31 82 */ crclr 6
+/* 8027037C 0026BFDC 4B FF B1 21 */ bl OSPanic
+/* 80270380 0026BFE0 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80270384 0026BFE4 7C 08 03 A6 */ mtlr r0
+/* 80270388 0026BFE8 38 21 00 30 */ addi r1, r1, 0x30
+/* 8027038C 0026BFEC 4E 80 00 20 */ blr
+
+.global OSGetResetCode
+OSGetResetCode:
+/* 80270390 0026BFF0 3C 60 80 50 */ lis r3, lbl_80503C80@ha
+/* 80270394 0026BFF4 80 03 3C 80 */ lwz r0, lbl_80503C80@l(r3)
+/* 80270398 0026BFF8 2C 00 00 00 */ cmpwi r0, 0
+/* 8027039C 0026BFFC 41 82 00 14 */ beq lbl_802703B0
+/* 802703A0 0026C000 38 63 3C 80 */ addi r3, r3, 0x3c80
+/* 802703A4 0026C004 80 03 00 04 */ lwz r0, 4(r3)
+/* 802703A8 0026C008 64 03 80 00 */ oris r3, r0, 0x8000
+/* 802703AC 0026C00C 4E 80 00 20 */ blr
+lbl_802703B0:
+/* 802703B0 0026C010 3C 60 CC 00 */ lis r3, 0xCC003024@ha
+/* 802703B4 0026C014 80 03 30 24 */ lwz r0, 0xCC003024@l(r3)
+/* 802703B8 0026C018 54 03 E8 FE */ srwi r3, r0, 3
+/* 802703BC 0026C01C 4E 80 00 20 */ blr
+
+.global OSResetSystem
+OSResetSystem:
+/* 802703C0 0026C020 3C 60 80 42 */ lis r3, lbl_80427D18@ha
+/* 802703C4 0026C024 3C A0 80 42 */ lis r5, lbl_80427D88@ha
+/* 802703C8 0026C028 38 63 7D 18 */ addi r3, r3, lbl_80427D18@l
+/* 802703CC 0026C02C 38 80 03 FC */ li r4, 0x3fc
+/* 802703D0 0026C030 38 A5 7D 88 */ addi r5, r5, lbl_80427D88@l
+/* 802703D4 0026C034 4C C6 31 82 */ crclr 6
+/* 802703D8 0026C038 4B FF B0 C4 */ b OSPanic
|