diff options
Diffstat (limited to 'asm/SDK')
-rw-r--r-- | asm/SDK/DVD/dvderror.s | 12 | ||||
-rw-r--r-- | asm/SDK/NAND/NANDCheck.s | 207 | ||||
-rw-r--r-- | asm/SDK/NAND/NANDCore.s | 1671 | ||||
-rw-r--r-- | asm/SDK/NAND/NANDOpenClose.s | 939 | ||||
-rw-r--r-- | asm/SDK/NAND/nand.s | 1092 | ||||
-rw-r--r-- | asm/SDK/OS/OSNandbootInfo.s | 14 | ||||
-rw-r--r-- | asm/SDK/OS/OSPlayRecord.s | 24 | ||||
-rw-r--r-- | asm/SDK/OS/OSStateFlags.s | 16 |
8 files changed, 3942 insertions, 33 deletions
diff --git a/asm/SDK/DVD/dvderror.s b/asm/SDK/DVD/dvderror.s index c3355e2..d8382ef 100644 --- a/asm/SDK/DVD/dvderror.s +++ b/asm/SDK/DVD/dvderror.s @@ -25,7 +25,7 @@ cbForNandWrite: /* 8028CC28 00288888 38 63 B5 80 */ addi r3, r3, lbl_8051B580@l
/* 8028CC2C 0028888C 38 84 CB E4 */ addi r4, r4, cbForNandClose@l
/* 8028CC30 00288890 38 A5 B6 10 */ addi r5, r5, lbl_8051B610@l
-/* 8028CC34 00288894 48 05 BA C1 */ bl func_802E86F4
+/* 8028CC34 00288894 48 05 BA C1 */ bl NANDCloseAsync
/* 8028CC38 00288898 2C 03 00 00 */ cmpwi r3, 0
/* 8028CC3C 0028889C 41 82 00 20 */ beq lbl_8028CC5C
/* 8028CC40 002888A0 81 8D AA 98 */ lwz r12, lbl_8063FD58-_SDA_BASE_(r13)
@@ -57,14 +57,14 @@ cbForNandOpen: /* 8028CC98 002888F8 38 FF 00 90 */ addi r7, r31, 0x90
/* 8028CC9C 002888FC 38 C6 CC 10 */ addi r6, r6, cbForNandWrite@l
/* 8028CCA0 00288900 38 A0 00 80 */ li r5, 0x80
-/* 8028CCA4 00288904 48 05 AD 65 */ bl func_802E7A08
+/* 8028CCA4 00288904 48 05 AD 65 */ bl NANDWriteAsync
/* 8028CCA8 00288908 2C 03 00 00 */ cmpwi r3, 0
/* 8028CCAC 0028890C 41 82 00 5C */ beq lbl_8028CD08
/* 8028CCB0 00288910 3C 80 80 29 */ lis r4, cbForNandClose@ha
/* 8028CCB4 00288914 38 7F 00 00 */ addi r3, r31, 0
/* 8028CCB8 00288918 38 84 CB E4 */ addi r4, r4, cbForNandClose@l
/* 8028CCBC 0028891C 38 BF 00 90 */ addi r5, r31, 0x90
-/* 8028CCC0 00288920 48 05 BA 35 */ bl func_802E86F4
+/* 8028CCC0 00288920 48 05 BA 35 */ bl NANDCloseAsync
/* 8028CCC4 00288924 2C 03 00 00 */ cmpwi r3, 0
/* 8028CCC8 00288928 41 82 00 40 */ beq lbl_8028CD08
/* 8028CCCC 0028892C 81 8D AA 98 */ lwz r12, lbl_8063FD58-_SDA_BASE_(r13)
@@ -108,7 +108,7 @@ lbl_8028CD38: /* 8028CD50 002889B0 38 C6 CC 6C */ addi r6, r6, cbForNandOpen@l
/* 8028CD54 002889B4 38 E7 B6 10 */ addi r7, r7, lbl_8051B610@l
/* 8028CD58 002889B8 38 A0 00 02 */ li r5, 2
-/* 8028CD5C 002889BC 48 05 B8 3D */ bl func_802E8598
+/* 8028CD5C 002889BC 48 05 B8 3D */ bl NANDPrivateOpenAsync
/* 8028CD60 002889C0 2C 03 00 00 */ cmpwi r3, 0
/* 8028CD64 002889C4 41 82 00 40 */ beq lbl_8028CDA4
/* 8028CD68 002889C8 81 8D AA 98 */ lwz r12, lbl_8063FD58-_SDA_BASE_(r13)
@@ -150,7 +150,7 @@ lbl_8028CDD0: /* 8028CDE4 00288A44 38 C6 CD 1C */ addi r6, r6, cbForNandCreate@l
/* 8028CDE8 00288A48 38 E7 B6 10 */ addi r7, r7, lbl_8051B610@l
/* 8028CDEC 00288A4C 38 A0 00 00 */ li r5, 0
-/* 8028CDF0 00288A50 48 05 A8 E9 */ bl func_802E76D8
+/* 8028CDF0 00288A50 48 05 A8 E9 */ bl NANDPrivateCreateAsync
/* 8028CDF4 00288A54 2C 03 00 00 */ cmpwi r3, 0
/* 8028CDF8 00288A58 41 82 00 40 */ beq lbl_8028CE38
/* 8028CDFC 00288A5C 81 8D AA 98 */ lwz r12, lbl_8063FD58-_SDA_BASE_(r13)
@@ -202,7 +202,7 @@ __DVDStoreErrorCode: /* 8028CEA0 00288B00 38 E7 B6 10 */ addi r7, r7, lbl_8051B610@l
/* 8028CEA4 00288B04 38 80 00 3F */ li r4, 0x3f
/* 8028CEA8 00288B08 38 A0 00 00 */ li r5, 0
-/* 8028CEAC 00288B0C 48 05 AF A9 */ bl func_802E7E54
+/* 8028CEAC 00288B0C 48 05 AF A9 */ bl NANDPrivateCreateDirAsync
/* 8028CEB0 00288B10 2C 03 00 00 */ cmpwi r3, 0
/* 8028CEB4 00288B14 41 82 00 20 */ beq lbl_8028CED4
/* 8028CEB8 00288B18 81 8D AA 98 */ lwz r12, lbl_8063FD58-_SDA_BASE_(r13)
diff --git a/asm/SDK/NAND/NANDCheck.s b/asm/SDK/NAND/NANDCheck.s new file mode 100644 index 0000000..49be04a --- /dev/null +++ b/asm/SDK/NAND/NANDCheck.s @@ -0,0 +1,207 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global NANDCheckAsync
+NANDCheckAsync:
+/* 802EA66C 002E62CC 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802EA670 002E62D0 7C 08 02 A6 */ mflr r0
+/* 802EA674 002E62D4 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802EA678 002E62D8 39 61 00 20 */ addi r11, r1, 0x20
+/* 802EA67C 002E62DC 4B ED CA AD */ bl _savegpr_27
+/* 802EA680 002E62E0 7C 7B 1B 78 */ mr r27, r3
+/* 802EA684 002E62E4 7C 9C 23 78 */ mr r28, r4
+/* 802EA688 002E62E8 7C BD 2B 78 */ mr r29, r5
+/* 802EA68C 002E62EC 7C DE 33 78 */ mr r30, r6
+/* 802EA690 002E62F0 7C FF 3B 78 */ mr r31, r7
+/* 802EA694 002E62F4 4B FF ED 5D */ bl nandIsInitialized
+/* 802EA698 002E62F8 2C 03 00 00 */ cmpwi r3, 0
+/* 802EA69C 002E62FC 40 82 00 0C */ bne lbl_802EA6A8
+/* 802EA6A0 002E6300 38 60 FF 80 */ li r3, -128
+/* 802EA6A4 002E6304 48 00 00 5C */ b lbl_802EA700
+lbl_802EA6A8:
+/* 802EA6A8 002E6308 3C 60 80 44 */ lis r3, lbl_80445800@ha
+/* 802EA6AC 002E630C 38 80 00 00 */ li r4, 0
+/* 802EA6B0 002E6310 38 63 58 00 */ addi r3, r3, lbl_80445800@l
+/* 802EA6B4 002E6314 38 00 00 14 */ li r0, 0x14
+/* 802EA6B8 002E6318 93 DF 00 04 */ stw r30, 4(r31)
+/* 802EA6BC 002E631C 93 7F 00 90 */ stw r27, 0x90(r31)
+/* 802EA6C0 002E6320 93 9F 00 94 */ stw r28, 0x94(r31)
+/* 802EA6C4 002E6324 93 BF 00 98 */ stw r29, 0x98(r31)
+/* 802EA6C8 002E6328 90 9F 00 A4 */ stw r4, 0xa4(r31)
+/* 802EA6CC 002E632C 90 9F 00 A8 */ stw r4, 0xa8(r31)
+/* 802EA6D0 002E6330 90 9F 00 AC */ stw r4, 0xac(r31)
+/* 802EA6D4 002E6334 90 9F 00 B0 */ stw r4, 0xb0(r31)
+/* 802EA6D8 002E6338 90 7F 00 B4 */ stw r3, 0xb4(r31)
+/* 802EA6DC 002E633C 90 1F 00 7C */ stw r0, 0x7c(r31)
+/* 802EA6E0 002E6340 4B FF FE 09 */ bl nandGetHomeDir
+/* 802EA6E4 002E6344 3C C0 80 2F */ lis r6, nandUserAreaCallback@ha
+/* 802EA6E8 002E6348 7F E7 FB 78 */ mr r7, r31
+/* 802EA6EC 002E634C 38 9F 00 9C */ addi r4, r31, 0x9c
+/* 802EA6F0 002E6350 38 BF 00 A0 */ addi r5, r31, 0xa0
+/* 802EA6F4 002E6354 38 C6 A7 18 */ addi r6, r6, nandUserAreaCallback@l
+/* 802EA6F8 002E6358 4B FB AC 41 */ bl ISFS_GetUsageAsync
+/* 802EA6FC 002E635C 4B FF ED 0D */ bl nandConvertErrorCode
+lbl_802EA700:
+/* 802EA700 002E6360 39 61 00 20 */ addi r11, r1, 0x20
+/* 802EA704 002E6364 4B ED CA 71 */ bl _restgpr_27
+/* 802EA708 002E6368 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802EA70C 002E636C 7C 08 03 A6 */ mtlr r0
+/* 802EA710 002E6370 38 21 00 20 */ addi r1, r1, 0x20
+/* 802EA714 002E6374 4E 80 00 20 */ blr
+
+nandUserAreaCallback:
+/* 802EA718 002E6378 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802EA71C 002E637C 7C 08 02 A6 */ mflr r0
+/* 802EA720 002E6380 2C 03 00 00 */ cmpwi r3, 0
+/* 802EA724 002E6384 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802EA728 002E6388 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802EA72C 002E638C 7C 9F 23 78 */ mr r31, r4
+/* 802EA730 002E6390 41 82 00 0C */ beq lbl_802EA73C
+/* 802EA734 002E6394 2C 03 FF 96 */ cmpwi r3, -106
+/* 802EA738 002E6398 40 82 01 EC */ bne lbl_802EA924
+lbl_802EA73C:
+/* 802EA73C 002E639C 80 A4 00 B4 */ lwz r5, 0xb4(r4)
+/* 802EA740 002E63A0 2C 03 00 00 */ cmpwi r3, 0
+/* 802EA744 002E63A4 80 65 00 00 */ lwz r3, 0(r5)
+/* 802EA748 002E63A8 40 82 00 24 */ bne lbl_802EA76C
+/* 802EA74C 002E63AC 80 E4 00 A4 */ lwz r7, 0xa4(r4)
+/* 802EA750 002E63B0 80 C4 00 AC */ lwz r6, 0xac(r4)
+/* 802EA754 002E63B4 80 A4 00 A8 */ lwz r5, 0xa8(r4)
+/* 802EA758 002E63B8 80 04 00 B0 */ lwz r0, 0xb0(r4)
+/* 802EA75C 002E63BC 7C C7 32 14 */ add r6, r7, r6
+/* 802EA760 002E63C0 90 C4 00 A4 */ stw r6, 0xa4(r4)
+/* 802EA764 002E63C4 7C 05 02 14 */ add r0, r5, r0
+/* 802EA768 002E63C8 90 04 00 A8 */ stw r0, 0xa8(r4)
+lbl_802EA76C:
+/* 802EA76C 002E63CC 2C 03 00 00 */ cmpwi r3, 0
+/* 802EA770 002E63D0 41 82 00 48 */ beq lbl_802EA7B8
+/* 802EA774 002E63D4 80 A4 00 B4 */ lwz r5, 0xb4(r4)
+/* 802EA778 002E63D8 3C C0 80 2F */ lis r6, nandUserAreaCallback@ha
+/* 802EA77C 002E63DC 7F E7 FB 78 */ mr r7, r31
+/* 802EA780 002E63E0 38 05 00 04 */ addi r0, r5, 4
+/* 802EA784 002E63E4 38 BF 00 B0 */ addi r5, r31, 0xb0
+/* 802EA788 002E63E8 90 04 00 B4 */ stw r0, 0xb4(r4)
+/* 802EA78C 002E63EC 38 84 00 AC */ addi r4, r4, 0xac
+/* 802EA790 002E63F0 38 C6 A7 18 */ addi r6, r6, nandUserAreaCallback@l
+/* 802EA794 002E63F4 4B FB AB A5 */ bl ISFS_GetUsageAsync
+/* 802EA798 002E63F8 2C 03 00 00 */ cmpwi r3, 0
+/* 802EA79C 002E63FC 41 82 01 9C */ beq lbl_802EA938
+/* 802EA7A0 002E6400 4B FF EC 69 */ bl nandConvertErrorCode
+/* 802EA7A4 002E6404 81 9F 00 04 */ lwz r12, 4(r31)
+/* 802EA7A8 002E6408 7F E4 FB 78 */ mr r4, r31
+/* 802EA7AC 002E640C 7D 89 03 A6 */ mtctr r12
+/* 802EA7B0 002E6410 4E 80 04 21 */ bctrl
+/* 802EA7B4 002E6414 48 00 01 84 */ b lbl_802EA938
+lbl_802EA7B8:
+/* 802EA7B8 002E6418 80 04 00 7C */ lwz r0, 0x7c(r4)
+/* 802EA7BC 002E641C 2C 00 00 14 */ cmpwi r0, 0x14
+/* 802EA7C0 002E6420 40 82 00 84 */ bne lbl_802EA844
+/* 802EA7C4 002E6424 80 64 00 90 */ lwz r3, 0x90(r4)
+/* 802EA7C8 002E6428 39 00 00 00 */ li r8, 0
+/* 802EA7CC 002E642C 80 04 00 9C */ lwz r0, 0x9c(r4)
+/* 802EA7D0 002E6430 80 E4 00 A8 */ lwz r7, 0xa8(r4)
+/* 802EA7D4 002E6434 7C 00 1A 14 */ add r0, r0, r3
+/* 802EA7D8 002E6438 80 C4 00 A4 */ lwz r6, 0xa4(r4)
+/* 802EA7DC 002E643C 28 00 04 00 */ cmplwi r0, 0x400
+/* 802EA7E0 002E6440 80 04 00 A0 */ lwz r0, 0xa0(r4)
+/* 802EA7E4 002E6444 80 A4 00 94 */ lwz r5, 0x94(r4)
+/* 802EA7E8 002E6448 40 81 00 08 */ ble lbl_802EA7F0
+/* 802EA7EC 002E644C 61 08 00 01 */ ori r8, r8, 1
+lbl_802EA7F0:
+/* 802EA7F0 002E6450 7C 00 2A 14 */ add r0, r0, r5
+/* 802EA7F4 002E6454 28 00 00 21 */ cmplwi r0, 0x21
+/* 802EA7F8 002E6458 40 81 00 08 */ ble lbl_802EA800
+/* 802EA7FC 002E645C 61 08 00 02 */ ori r8, r8, 2
+lbl_802EA800:
+/* 802EA800 002E6460 7C 06 1A 14 */ add r0, r6, r3
+/* 802EA804 002E6464 28 00 44 00 */ cmplwi r0, 0x4400
+/* 802EA808 002E6468 40 81 00 08 */ ble lbl_802EA810
+/* 802EA80C 002E646C 61 08 00 04 */ ori r8, r8, 4
+lbl_802EA810:
+/* 802EA810 002E6470 7C 07 2A 14 */ add r0, r7, r5
+/* 802EA814 002E6474 28 00 0F A0 */ cmplwi r0, 0xfa0
+/* 802EA818 002E6478 40 81 00 08 */ ble lbl_802EA820
+/* 802EA81C 002E647C 61 08 00 08 */ ori r8, r8, 8
+lbl_802EA820:
+/* 802EA820 002E6480 80 84 00 98 */ lwz r4, 0x98(r4)
+/* 802EA824 002E6484 38 60 00 00 */ li r3, 0
+/* 802EA828 002E6488 91 04 00 00 */ stw r8, 0(r4)
+/* 802EA82C 002E648C 4B FF EB DD */ bl nandConvertErrorCode
+/* 802EA830 002E6490 81 9F 00 04 */ lwz r12, 4(r31)
+/* 802EA834 002E6494 7F E4 FB 78 */ mr r4, r31
+/* 802EA838 002E6498 7D 89 03 A6 */ mtctr r12
+/* 802EA83C 002E649C 4E 80 04 21 */ bctrl
+/* 802EA840 002E64A0 48 00 00 F8 */ b lbl_802EA938
+lbl_802EA844:
+/* 802EA844 002E64A4 2C 00 00 15 */ cmpwi r0, 0x15
+/* 802EA848 002E64A8 40 82 00 A8 */ bne lbl_802EA8F0
+/* 802EA84C 002E64AC 80 A4 00 A4 */ lwz r5, 0xa4(r4)
+/* 802EA850 002E64B0 38 60 44 00 */ li r3, 0x4400
+/* 802EA854 002E64B4 81 24 00 A8 */ lwz r9, 0xa8(r4)
+/* 802EA858 002E64B8 38 00 0F A0 */ li r0, 0xfa0
+/* 802EA85C 002E64BC 7C 65 18 10 */ subfc r3, r5, r3
+/* 802EA860 002E64C0 81 44 00 9C */ lwz r10, 0x9c(r4)
+/* 802EA864 002E64C4 7D 03 19 10 */ subfe r8, r3, r3
+/* 802EA868 002E64C8 81 64 00 A0 */ lwz r11, 0xa0(r4)
+/* 802EA86C 002E64CC 20 C5 44 00 */ subfic r6, r5, 0x4400
+/* 802EA870 002E64D0 38 60 04 00 */ li r3, 0x400
+/* 802EA874 002E64D4 7C A9 00 10 */ subfc r5, r9, r0
+/* 802EA878 002E64D8 38 00 00 21 */ li r0, 0x21
+/* 802EA87C 002E64DC 7C E5 29 10 */ subfe r7, r5, r5
+/* 802EA880 002E64E0 7C C8 40 78 */ andc r8, r6, r8
+/* 802EA884 002E64E4 20 C9 0F A0 */ subfic r6, r9, 0xfa0
+/* 802EA888 002E64E8 7C 6A 18 10 */ subfc r3, r10, r3
+/* 802EA88C 002E64EC 7C A3 19 10 */ subfe r5, r3, r3
+/* 802EA890 002E64F0 7C C6 38 78 */ andc r6, r6, r7
+/* 802EA894 002E64F4 20 6A 04 00 */ subfic r3, r10, 0x400
+/* 802EA898 002E64F8 7C 65 28 78 */ andc r5, r3, r5
+/* 802EA89C 002E64FC 7C 0B 00 10 */ subfc r0, r11, r0
+/* 802EA8A0 002E6500 7C 60 01 10 */ subfe r3, r0, r0
+/* 802EA8A4 002E6504 20 0B 00 21 */ subfic r0, r11, 0x21
+/* 802EA8A8 002E6508 7C 08 28 40 */ cmplw r8, r5
+/* 802EA8AC 002E650C 7C 00 18 78 */ andc r0, r0, r3
+/* 802EA8B0 002E6510 40 80 00 08 */ bge lbl_802EA8B8
+/* 802EA8B4 002E6514 7D 05 43 78 */ mr r5, r8
+lbl_802EA8B8:
+/* 802EA8B8 002E6518 80 64 00 0C */ lwz r3, 0xc(r4)
+/* 802EA8BC 002E651C 7C 06 00 40 */ cmplw r6, r0
+/* 802EA8C0 002E6520 90 A3 00 00 */ stw r5, 0(r3)
+/* 802EA8C4 002E6524 40 80 00 08 */ bge lbl_802EA8CC
+/* 802EA8C8 002E6528 7C C0 33 78 */ mr r0, r6
+lbl_802EA8CC:
+/* 802EA8CC 002E652C 80 84 00 10 */ lwz r4, 0x10(r4)
+/* 802EA8D0 002E6530 38 60 00 00 */ li r3, 0
+/* 802EA8D4 002E6534 90 04 00 00 */ stw r0, 0(r4)
+/* 802EA8D8 002E6538 4B FF EB 31 */ bl nandConvertErrorCode
+/* 802EA8DC 002E653C 81 9F 00 04 */ lwz r12, 4(r31)
+/* 802EA8E0 002E6540 7F E4 FB 78 */ mr r4, r31
+/* 802EA8E4 002E6544 7D 89 03 A6 */ mtctr r12
+/* 802EA8E8 002E6548 4E 80 04 21 */ bctrl
+/* 802EA8EC 002E654C 48 00 00 4C */ b lbl_802EA938
+lbl_802EA8F0:
+/* 802EA8F0 002E6550 3C 60 80 44 */ lis r3, lbl_80445844@ha
+/* 802EA8F4 002E6554 3C 80 80 44 */ lis r4, lbl_8044582C@ha
+/* 802EA8F8 002E6558 38 63 58 44 */ addi r3, r3, lbl_80445844@l
+/* 802EA8FC 002E655C 38 84 58 2C */ addi r4, r4, lbl_8044582C@l
+/* 802EA900 002E6560 4C C6 31 82 */ crclr 6
+/* 802EA904 002E6564 4B D1 D1 C1 */ bl func_80007AC4
+/* 802EA908 002E6568 38 60 FF 8B */ li r3, -117
+/* 802EA90C 002E656C 4B FF EA FD */ bl nandConvertErrorCode
+/* 802EA910 002E6570 81 9F 00 04 */ lwz r12, 4(r31)
+/* 802EA914 002E6574 7F E4 FB 78 */ mr r4, r31
+/* 802EA918 002E6578 7D 89 03 A6 */ mtctr r12
+/* 802EA91C 002E657C 4E 80 04 21 */ bctrl
+/* 802EA920 002E6580 48 00 00 18 */ b lbl_802EA938
+lbl_802EA924:
+/* 802EA924 002E6584 4B FF EA E5 */ bl nandConvertErrorCode
+/* 802EA928 002E6588 81 9F 00 04 */ lwz r12, 4(r31)
+/* 802EA92C 002E658C 7F E4 FB 78 */ mr r4, r31
+/* 802EA930 002E6590 7D 89 03 A6 */ mtctr r12
+/* 802EA934 002E6594 4E 80 04 21 */ bctrl
+lbl_802EA938:
+/* 802EA938 002E6598 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802EA93C 002E659C 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802EA940 002E65A0 7C 08 03 A6 */ mtlr r0
+/* 802EA944 002E65A4 38 21 00 10 */ addi r1, r1, 0x10
+/* 802EA948 002E65A8 4E 80 00 20 */ blr
diff --git a/asm/SDK/NAND/NANDCore.s b/asm/SDK/NAND/NANDCore.s new file mode 100644 index 0000000..477d62b --- /dev/null +++ b/asm/SDK/NAND/NANDCore.s @@ -0,0 +1,1671 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global nandRemoveTailToken
+nandRemoveTailToken:
+/* 802E8FE8 002E4C48 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802E8FEC 002E4C4C 7C 08 02 A6 */ mflr r0
+/* 802E8FF0 002E4C50 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E8FF4 002E4C54 88 04 00 00 */ lbz r0, 0(r4)
+/* 802E8FF8 002E4C58 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802E8FFC 002E4C5C 2C 00 00 2F */ cmpwi r0, 0x2f
+/* 802E9000 002E4C60 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802E9004 002E4C64 7C 9E 23 78 */ mr r30, r4
+/* 802E9008 002E4C68 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802E900C 002E4C6C 7C 7D 1B 78 */ mr r29, r3
+/* 802E9010 002E4C70 40 82 00 24 */ bne lbl_802E9034
+/* 802E9014 002E4C74 88 04 00 01 */ lbz r0, 1(r4)
+/* 802E9018 002E4C78 7C 00 07 75 */ extsb. r0, r0
+/* 802E901C 002E4C7C 40 82 00 18 */ bne lbl_802E9034
+/* 802E9020 002E4C80 38 80 00 2F */ li r4, 0x2f
+/* 802E9024 002E4C84 38 00 00 00 */ li r0, 0
+/* 802E9028 002E4C88 98 83 00 00 */ stb r4, 0(r3)
+/* 802E902C 002E4C8C 98 03 00 01 */ stb r0, 1(r3)
+/* 802E9030 002E4C90 48 00 00 70 */ b lbl_802E90A0
+lbl_802E9034:
+/* 802E9034 002E4C94 7F C3 F3 78 */ mr r3, r30
+/* 802E9038 002E4C98 4B ED DB 2D */ bl strlen
+/* 802E903C 002E4C9C 37 E3 FF FF */ addic. r31, r3, -1
+/* 802E9040 002E4CA0 38 1F 00 01 */ addi r0, r31, 1
+/* 802E9044 002E4CA4 7C 7E FA 14 */ add r3, r30, r31
+/* 802E9048 002E4CA8 7C 09 03 A6 */ mtctr r0
+/* 802E904C 002E4CAC 41 80 00 54 */ blt lbl_802E90A0
+lbl_802E9050:
+/* 802E9050 002E4CB0 88 03 00 00 */ lbz r0, 0(r3)
+/* 802E9054 002E4CB4 2C 00 00 2F */ cmpwi r0, 0x2f
+/* 802E9058 002E4CB8 40 82 00 3C */ bne lbl_802E9094
+/* 802E905C 002E4CBC 2C 1F 00 00 */ cmpwi r31, 0
+/* 802E9060 002E4CC0 41 82 00 20 */ beq lbl_802E9080
+/* 802E9064 002E4CC4 7F A3 EB 78 */ mr r3, r29
+/* 802E9068 002E4CC8 7F C4 F3 78 */ mr r4, r30
+/* 802E906C 002E4CCC 7F E5 FB 78 */ mr r5, r31
+/* 802E9070 002E4CD0 4B EE 53 21 */ bl strncpy
+/* 802E9074 002E4CD4 38 00 00 00 */ li r0, 0
+/* 802E9078 002E4CD8 7C 1D F9 AE */ stbx r0, r29, r31
+/* 802E907C 002E4CDC 48 00 00 24 */ b lbl_802E90A0
+lbl_802E9080:
+/* 802E9080 002E4CE0 38 60 00 2F */ li r3, 0x2f
+/* 802E9084 002E4CE4 38 00 00 00 */ li r0, 0
+/* 802E9088 002E4CE8 98 7D 00 00 */ stb r3, 0(r29)
+/* 802E908C 002E4CEC 98 1D 00 01 */ stb r0, 1(r29)
+/* 802E9090 002E4CF0 48 00 00 10 */ b lbl_802E90A0
+lbl_802E9094:
+/* 802E9094 002E4CF4 3B FF FF FF */ addi r31, r31, -1
+/* 802E9098 002E4CF8 38 63 FF FF */ addi r3, r3, -1
+/* 802E909C 002E4CFC 42 00 FF B4 */ bdnz lbl_802E9050
+lbl_802E90A0:
+/* 802E90A0 002E4D00 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802E90A4 002E4D04 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802E90A8 002E4D08 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802E90AC 002E4D0C 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802E90B0 002E4D10 7C 08 03 A6 */ mtlr r0
+/* 802E90B4 002E4D14 38 21 00 20 */ addi r1, r1, 0x20
+/* 802E90B8 002E4D18 4E 80 00 20 */ blr
+
+.global nandGetHeadToken
+nandGetHeadToken:
+/* 802E90BC 002E4D1C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802E90C0 002E4D20 7C 08 02 A6 */ mflr r0
+/* 802E90C4 002E4D24 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E90C8 002E4D28 39 61 00 20 */ addi r11, r1, 0x20
+/* 802E90CC 002E4D2C 4B ED E0 5D */ bl _savegpr_27
+/* 802E90D0 002E4D30 7C 7B 1B 78 */ mr r27, r3
+/* 802E90D4 002E4D34 7C 9C 23 78 */ mr r28, r4
+/* 802E90D8 002E4D38 7C BD 2B 78 */ mr r29, r5
+/* 802E90DC 002E4D3C 7C BF 2B 78 */ mr r31, r5
+/* 802E90E0 002E4D40 3B C0 00 00 */ li r30, 0
+/* 802E90E4 002E4D44 48 00 00 84 */ b lbl_802E9168
+lbl_802E90E8:
+/* 802E90E8 002E4D48 88 1F 00 00 */ lbz r0, 0(r31)
+/* 802E90EC 002E4D4C 7C 00 07 74 */ extsb r0, r0
+/* 802E90F0 002E4D50 2C 00 00 2F */ cmpwi r0, 0x2f
+/* 802E90F4 002E4D54 40 82 00 44 */ bne lbl_802E9138
+/* 802E90F8 002E4D58 7F 63 DB 78 */ mr r3, r27
+/* 802E90FC 002E4D5C 7F A4 EB 78 */ mr r4, r29
+/* 802E9100 002E4D60 7F C5 F3 78 */ mr r5, r30
+/* 802E9104 002E4D64 4B EE 52 8D */ bl strncpy
+/* 802E9108 002E4D68 7C 9E EA 14 */ add r4, r30, r29
+/* 802E910C 002E4D6C 38 60 00 00 */ li r3, 0
+/* 802E9110 002E4D70 88 04 00 01 */ lbz r0, 1(r4)
+/* 802E9114 002E4D74 7C 7B F1 AE */ stbx r3, r27, r30
+/* 802E9118 002E4D78 7C 00 07 75 */ extsb. r0, r0
+/* 802E911C 002E4D7C 40 82 00 0C */ bne lbl_802E9128
+/* 802E9120 002E4D80 98 7C 00 00 */ stb r3, 0(r28)
+/* 802E9124 002E4D84 48 00 00 54 */ b lbl_802E9178
+lbl_802E9128:
+/* 802E9128 002E4D88 7F 83 E3 78 */ mr r3, r28
+/* 802E912C 002E4D8C 38 84 00 01 */ addi r4, r4, 1
+/* 802E9130 002E4D90 4B EE 51 A1 */ bl strcpy
+/* 802E9134 002E4D94 48 00 00 44 */ b lbl_802E9178
+lbl_802E9138:
+/* 802E9138 002E4D98 2C 00 00 00 */ cmpwi r0, 0
+/* 802E913C 002E4D9C 40 82 00 24 */ bne lbl_802E9160
+/* 802E9140 002E4DA0 7F 63 DB 78 */ mr r3, r27
+/* 802E9144 002E4DA4 7F A4 EB 78 */ mr r4, r29
+/* 802E9148 002E4DA8 7F C5 F3 78 */ mr r5, r30
+/* 802E914C 002E4DAC 4B EE 52 45 */ bl strncpy
+/* 802E9150 002E4DB0 38 00 00 00 */ li r0, 0
+/* 802E9154 002E4DB4 7C 1B F1 AE */ stbx r0, r27, r30
+/* 802E9158 002E4DB8 98 1C 00 00 */ stb r0, 0(r28)
+/* 802E915C 002E4DBC 48 00 00 1C */ b lbl_802E9178
+lbl_802E9160:
+/* 802E9160 002E4DC0 3B DE 00 01 */ addi r30, r30, 1
+/* 802E9164 002E4DC4 3B FF 00 01 */ addi r31, r31, 1
+lbl_802E9168:
+/* 802E9168 002E4DC8 7F A3 EB 78 */ mr r3, r29
+/* 802E916C 002E4DCC 4B ED D9 F9 */ bl strlen
+/* 802E9170 002E4DD0 7C 1E 18 40 */ cmplw r30, r3
+/* 802E9174 002E4DD4 40 81 FF 74 */ ble lbl_802E90E8
+lbl_802E9178:
+/* 802E9178 002E4DD8 39 61 00 20 */ addi r11, r1, 0x20
+/* 802E917C 002E4DDC 4B ED DF F9 */ bl _restgpr_27
+/* 802E9180 002E4DE0 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802E9184 002E4DE4 7C 08 03 A6 */ mtlr r0
+/* 802E9188 002E4DE8 38 21 00 20 */ addi r1, r1, 0x20
+/* 802E918C 002E4DEC 4E 80 00 20 */ blr
+
+.global nandGetRelativeName
+nandGetRelativeName:
+/* 802E9190 002E4DF0 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802E9194 002E4DF4 7C 08 02 A6 */ mflr r0
+/* 802E9198 002E4DF8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802E919C 002E4DFC 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802E91A0 002E4E00 7C 9F 23 78 */ mr r31, r4
+/* 802E91A4 002E4E04 93 C1 00 08 */ stw r30, 8(r1)
+/* 802E91A8 002E4E08 7C 7E 1B 78 */ mr r30, r3
+/* 802E91AC 002E4E0C 38 6D 8A 84 */ addi r3, r13, lbl_8063DD44-_SDA_BASE_
+/* 802E91B0 002E4E10 4B EE 52 9D */ bl strcmp
+/* 802E91B4 002E4E14 2C 03 00 00 */ cmpwi r3, 0
+/* 802E91B8 002E4E18 40 82 00 14 */ bne lbl_802E91CC
+/* 802E91BC 002E4E1C 7F C3 F3 78 */ mr r3, r30
+/* 802E91C0 002E4E20 38 8D 8A 88 */ addi r4, r13, lbl_8063DD48-_SDA_BASE_
+/* 802E91C4 002E4E24 4B EE 51 0D */ bl strcpy
+/* 802E91C8 002E4E28 48 00 00 48 */ b lbl_802E9210
+lbl_802E91CC:
+/* 802E91CC 002E4E2C 7F E3 FB 78 */ mr r3, r31
+/* 802E91D0 002E4E30 4B ED D9 95 */ bl strlen
+/* 802E91D4 002E4E34 34 83 FF FF */ addic. r4, r3, -1
+/* 802E91D8 002E4E38 38 04 00 01 */ addi r0, r4, 1
+/* 802E91DC 002E4E3C 7C 7F 22 14 */ add r3, r31, r4
+/* 802E91E0 002E4E40 7C 09 03 A6 */ mtctr r0
+/* 802E91E4 002E4E44 41 80 00 1C */ blt lbl_802E9200
+lbl_802E91E8:
+/* 802E91E8 002E4E48 88 03 00 00 */ lbz r0, 0(r3)
+/* 802E91EC 002E4E4C 2C 00 00 2F */ cmpwi r0, 0x2f
+/* 802E91F0 002E4E50 41 82 00 10 */ beq lbl_802E9200
+/* 802E91F4 002E4E54 38 84 FF FF */ addi r4, r4, -1
+/* 802E91F8 002E4E58 38 63 FF FF */ addi r3, r3, -1
+/* 802E91FC 002E4E5C 42 00 FF EC */ bdnz lbl_802E91E8
+lbl_802E9200:
+/* 802E9200 002E4E60 7C 9F 22 14 */ add r4, r31, r4
+/* 802E9204 002E4E64 7F C3 F3 78 */ mr r3, r30
+/* 802E9208 002E4E68 38 84 00 01 */ addi r4, r4, 1
+/* 802E920C 002E4E6C 4B EE 50 C5 */ bl strcpy
+lbl_802E9210:
+/* 802E9210 002E4E70 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802E9214 002E4E74 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802E9218 002E4E78 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802E921C 002E4E7C 7C 08 03 A6 */ mtlr r0
+/* 802E9220 002E4E80 38 21 00 10 */ addi r1, r1, 0x10
+/* 802E9224 002E4E84 4E 80 00 20 */ blr
+
+.global nandConvertPath
+nandConvertPath:
+/* 802E9228 002E4E88 94 21 FD E0 */ stwu r1, -0x220(r1)
+/* 802E922C 002E4E8C 7C 08 02 A6 */ mflr r0
+/* 802E9230 002E4E90 90 01 02 24 */ stw r0, 0x224(r1)
+/* 802E9234 002E4E94 93 E1 02 1C */ stw r31, 0x21c(r1)
+/* 802E9238 002E4E98 7C BF 2B 78 */ mr r31, r5
+/* 802E923C 002E4E9C 93 C1 02 18 */ stw r30, 0x218(r1)
+/* 802E9240 002E4EA0 7C 9E 23 78 */ mr r30, r4
+/* 802E9244 002E4EA4 93 A1 02 14 */ stw r29, 0x214(r1)
+/* 802E9248 002E4EA8 7C 7D 1B 78 */ mr r29, r3
+/* 802E924C 002E4EAC 7F E3 FB 78 */ mr r3, r31
+/* 802E9250 002E4EB0 4B ED D9 15 */ bl strlen
+/* 802E9254 002E4EB4 2C 03 00 00 */ cmpwi r3, 0
+/* 802E9258 002E4EB8 40 82 00 14 */ bne lbl_802E926C
+/* 802E925C 002E4EBC 7F A3 EB 78 */ mr r3, r29
+/* 802E9260 002E4EC0 7F C4 F3 78 */ mr r4, r30
+/* 802E9264 002E4EC4 4B EE 50 6D */ bl strcpy
+/* 802E9268 002E4EC8 48 00 00 E0 */ b lbl_802E9348
+lbl_802E926C:
+/* 802E926C 002E4ECC 7F E5 FB 78 */ mr r5, r31
+/* 802E9270 002E4ED0 38 61 01 88 */ addi r3, r1, 0x188
+/* 802E9274 002E4ED4 38 81 01 08 */ addi r4, r1, 0x108
+/* 802E9278 002E4ED8 4B FF FE 45 */ bl nandGetHeadToken
+/* 802E927C 002E4EDC 38 61 01 88 */ addi r3, r1, 0x188
+/* 802E9280 002E4EE0 38 8D 8A 8C */ addi r4, r13, lbl_8063DD4C-_SDA_BASE_
+/* 802E9284 002E4EE4 4B EE 51 C9 */ bl strcmp
+/* 802E9288 002E4EE8 2C 03 00 00 */ cmpwi r3, 0
+/* 802E928C 002E4EEC 40 82 00 18 */ bne lbl_802E92A4
+/* 802E9290 002E4EF0 7F A3 EB 78 */ mr r3, r29
+/* 802E9294 002E4EF4 7F C4 F3 78 */ mr r4, r30
+/* 802E9298 002E4EF8 38 A1 01 08 */ addi r5, r1, 0x108
+/* 802E929C 002E4EFC 4B FF FF 8D */ bl nandConvertPath
+/* 802E92A0 002E4F00 48 00 00 A8 */ b lbl_802E9348
+lbl_802E92A4:
+/* 802E92A4 002E4F04 38 61 01 88 */ addi r3, r1, 0x188
+/* 802E92A8 002E4F08 38 8D 8A 90 */ addi r4, r13, lbl_8063DD50-_SDA_BASE_
+/* 802E92AC 002E4F0C 4B EE 51 A1 */ bl strcmp
+/* 802E92B0 002E4F10 2C 03 00 00 */ cmpwi r3, 0
+/* 802E92B4 002E4F14 40 82 00 24 */ bne lbl_802E92D8
+/* 802E92B8 002E4F18 7F C4 F3 78 */ mr r4, r30
+/* 802E92BC 002E4F1C 38 61 00 88 */ addi r3, r1, 0x88
+/* 802E92C0 002E4F20 4B FF FD 29 */ bl nandRemoveTailToken
+/* 802E92C4 002E4F24 7F A3 EB 78 */ mr r3, r29
+/* 802E92C8 002E4F28 38 81 00 88 */ addi r4, r1, 0x88
+/* 802E92CC 002E4F2C 38 A1 01 08 */ addi r5, r1, 0x108
+/* 802E92D0 002E4F30 4B FF FF 59 */ bl nandConvertPath
+/* 802E92D4 002E4F34 48 00 00 74 */ b lbl_802E9348
+lbl_802E92D8:
+/* 802E92D8 002E4F38 88 01 01 88 */ lbz r0, 0x188(r1)
+/* 802E92DC 002E4F3C 7C 00 07 75 */ extsb. r0, r0
+/* 802E92E0 002E4F40 41 82 00 5C */ beq lbl_802E933C
+/* 802E92E4 002E4F44 7F C3 F3 78 */ mr r3, r30
+/* 802E92E8 002E4F48 38 8D 8A 84 */ addi r4, r13, lbl_8063DD44-_SDA_BASE_
+/* 802E92EC 002E4F4C 4B EE 51 61 */ bl strcmp
+/* 802E92F0 002E4F50 2C 03 00 00 */ cmpwi r3, 0
+/* 802E92F4 002E4F54 40 82 00 1C */ bne lbl_802E9310
+/* 802E92F8 002E4F58 38 61 00 08 */ addi r3, r1, 8
+/* 802E92FC 002E4F5C 38 A1 01 88 */ addi r5, r1, 0x188
+/* 802E9300 002E4F60 38 8D 8A 94 */ addi r4, r13, lbl_8063DD54-_SDA_BASE_
+/* 802E9304 002E4F64 4C C6 31 82 */ crclr 6
+/* 802E9308 002E4F68 4B EE 37 F5 */ bl sprintf
+/* 802E930C 002E4F6C 48 00 00 1C */ b lbl_802E9328
+lbl_802E9310:
+/* 802E9310 002E4F70 7F C5 F3 78 */ mr r5, r30
+/* 802E9314 002E4F74 38 61 00 08 */ addi r3, r1, 8
+/* 802E9318 002E4F78 38 C1 01 88 */ addi r6, r1, 0x188
+/* 802E931C 002E4F7C 38 8D 8A 98 */ addi r4, r13, lbl_8063DD58-_SDA_BASE_
+/* 802E9320 002E4F80 4C C6 31 82 */ crclr 6
+/* 802E9324 002E4F84 4B EE 37 D9 */ bl sprintf
+lbl_802E9328:
+/* 802E9328 002E4F88 7F A3 EB 78 */ mr r3, r29
+/* 802E932C 002E4F8C 38 81 00 08 */ addi r4, r1, 8
+/* 802E9330 002E4F90 38 A1 01 08 */ addi r5, r1, 0x108
+/* 802E9334 002E4F94 4B FF FE F5 */ bl nandConvertPath
+/* 802E9338 002E4F98 48 00 00 10 */ b lbl_802E9348
+lbl_802E933C:
+/* 802E933C 002E4F9C 7F A3 EB 78 */ mr r3, r29
+/* 802E9340 002E4FA0 7F C4 F3 78 */ mr r4, r30
+/* 802E9344 002E4FA4 4B EE 4F 8D */ bl strcpy
+lbl_802E9348:
+/* 802E9348 002E4FA8 80 01 02 24 */ lwz r0, 0x224(r1)
+/* 802E934C 002E4FAC 83 E1 02 1C */ lwz r31, 0x21c(r1)
+/* 802E9350 002E4FB0 83 C1 02 18 */ lwz r30, 0x218(r1)
+/* 802E9354 002E4FB4 83 A1 02 14 */ lwz r29, 0x214(r1)
+/* 802E9358 002E4FB8 7C 08 03 A6 */ mtlr r0
+/* 802E935C 002E4FBC 38 21 02 20 */ addi r1, r1, 0x220
+/* 802E9360 002E4FC0 4E 80 00 20 */ blr
+
+.global nandIsPrivatePath
+nandIsPrivatePath:
+/* 802E9364 002E4FC4 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802E9368 002E4FC8 7C 08 02 A6 */ mflr r0
+/* 802E936C 002E4FCC 3C 80 80 44 */ lis r4, lbl_80445710@ha
+/* 802E9370 002E4FD0 38 A0 00 08 */ li r5, 8
+/* 802E9374 002E4FD4 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802E9378 002E4FD8 38 84 57 10 */ addi r4, r4, lbl_80445710@l
+/* 802E937C 002E4FDC 4B EE 51 ED */ bl strncmp
+/* 802E9380 002E4FE0 7C 60 00 34 */ cntlzw r0, r3
+/* 802E9384 002E4FE4 54 03 D9 7E */ srwi r3, r0, 5
+/* 802E9388 002E4FE8 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802E938C 002E4FEC 7C 08 03 A6 */ mtlr r0
+/* 802E9390 002E4FF0 38 21 00 10 */ addi r1, r1, 0x10
+/* 802E9394 002E4FF4 4E 80 00 20 */ blr
+
+.global nandIsUnderPrivatePath
+nandIsUnderPrivatePath:
+/* 802E9398 002E4FF8 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802E939C 002E4FFC 7C 08 02 A6 */ mflr r0
+/* 802E93A0 002E5000 3C 80 80 44 */ lis r4, lbl_8044571C@ha
+/* 802E93A4 002E5004 38 A0 00 09 */ li r5, 9
+/* 802E93A8 002E5008 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802E93AC 002E500C 38 84 57 1C */ addi r4, r4, lbl_8044571C@l
+/* 802E93B0 002E5010 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802E93B4 002E5014 7C 7F 1B 78 */ mr r31, r3
+/* 802E93B8 002E5018 4B EE 51 B1 */ bl strncmp
+/* 802E93BC 002E501C 2C 03 00 00 */ cmpwi r3, 0
+/* 802E93C0 002E5020 40 82 00 18 */ bne lbl_802E93D8
+/* 802E93C4 002E5024 88 1F 00 09 */ lbz r0, 9(r31)
+/* 802E93C8 002E5028 7C 00 07 75 */ extsb. r0, r0
+/* 802E93CC 002E502C 41 82 00 0C */ beq lbl_802E93D8
+/* 802E93D0 002E5030 38 60 00 01 */ li r3, 1
+/* 802E93D4 002E5034 48 00 00 08 */ b lbl_802E93DC
+lbl_802E93D8:
+/* 802E93D8 002E5038 38 60 00 00 */ li r3, 0
+lbl_802E93DC:
+/* 802E93DC 002E503C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802E93E0 002E5040 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802E93E4 002E5044 7C 08 03 A6 */ mtlr r0
+/* 802E93E8 002E5048 38 21 00 10 */ addi r1, r1, 0x10
+/* 802E93EC 002E504C 4E 80 00 20 */ blr
+
+.global nandIsInitialized
+nandIsInitialized:
+/* 802E93F0 002E5050 80 6D AF 08 */ lwz r3, lbl_806401C8-_SDA_BASE_(r13)
+/* 802E93F4 002E5054 38 03 FF FE */ addi r0, r3, -2
+/* 802E93F8 002E5058 7C 00 00 34 */ cntlzw r0, r0
+/* 802E93FC 002E505C 54 03 D9 7E */ srwi r3, r0, 5
+/* 802E9400 002E5060 4E 80 00 20 */ blr
+
+.global nandReportErrorCode
+nandReportErrorCode:
+/* 802E9404 002E5064 4E 80 00 20 */ blr
+
+.global nandConvertErrorCode
+nandConvertErrorCode:
+/* 802E9408 002E5068 94 21 FE B0 */ stwu r1, -0x150(r1)
+/* 802E940C 002E506C 7C 08 02 A6 */ mflr r0
+/* 802E9410 002E5070 3C 80 80 40 */ lis r4, lbl_803FDF20@ha
+/* 802E9414 002E5074 90 01 01 54 */ stw r0, 0x154(r1)
+/* 802E9418 002E5078 38 84 DF 20 */ addi r4, r4, lbl_803FDF20@l
+/* 802E941C 002E507C 38 00 00 28 */ li r0, 0x28
+/* 802E9420 002E5080 38 C1 00 04 */ addi r6, r1, 4
+/* 802E9424 002E5084 93 E1 01 4C */ stw r31, 0x14c(r1)
+/* 802E9428 002E5088 38 A4 FF FC */ addi r5, r4, -4
+/* 802E942C 002E508C 93 C1 01 48 */ stw r30, 0x148(r1)
+/* 802E9430 002E5090 7C 7E 1B 78 */ mr r30, r3
+/* 802E9434 002E5094 7C 09 03 A6 */ mtctr r0
+lbl_802E9438:
+/* 802E9438 002E5098 80 85 00 04 */ lwz r4, 4(r5)
+/* 802E943C 002E509C 84 05 00 08 */ lwzu r0, 8(r5)
+/* 802E9440 002E50A0 90 86 00 04 */ stw r4, 4(r6)
+/* 802E9444 002E50A4 94 06 00 08 */ stwu r0, 8(r6)
+/* 802E9448 002E50A8 42 00 FF F0 */ bdnz lbl_802E9438
+/* 802E944C 002E50AC 2C 03 00 00 */ cmpwi r3, 0
+/* 802E9450 002E50B0 3B E0 00 00 */ li r31, 0
+/* 802E9454 002E50B4 41 80 00 0C */ blt lbl_802E9460
+/* 802E9458 002E50B8 7F C3 F3 78 */ mr r3, r30
+/* 802E945C 002E50BC 48 00 00 64 */ b lbl_802E94C0
+lbl_802E9460:
+/* 802E9460 002E50C0 38 00 00 28 */ li r0, 0x28
+/* 802E9464 002E50C4 38 81 00 08 */ addi r4, r1, 8
+/* 802E9468 002E50C8 7C 09 03 A6 */ mtctr r0
+lbl_802E946C:
+/* 802E946C 002E50CC 80 04 00 00 */ lwz r0, 0(r4)
+/* 802E9470 002E50D0 7C 03 00 00 */ cmpw r3, r0
+/* 802E9474 002E50D4 40 82 00 20 */ bne lbl_802E9494
+/* 802E9478 002E50D8 7F C3 F3 78 */ mr r3, r30
+/* 802E947C 002E50DC 4B FF FF 89 */ bl nandReportErrorCode
+/* 802E9480 002E50E0 38 1F 00 01 */ addi r0, r31, 1
+/* 802E9484 002E50E4 38 61 00 08 */ addi r3, r1, 8
+/* 802E9488 002E50E8 54 00 10 3A */ slwi r0, r0, 2
+/* 802E948C 002E50EC 7C 63 00 2E */ lwzx r3, r3, r0
+/* 802E9490 002E50F0 48 00 00 30 */ b lbl_802E94C0
+lbl_802E9494:
+/* 802E9494 002E50F4 38 84 00 08 */ addi r4, r4, 8
+/* 802E9498 002E50F8 3B FF 00 02 */ addi r31, r31, 2
+/* 802E949C 002E50FC 42 00 FF D0 */ bdnz lbl_802E946C
+/* 802E94A0 002E5100 3C 60 80 44 */ lis r3, lbl_80445728@ha
+/* 802E94A4 002E5104 7F C4 F3 78 */ mr r4, r30
+/* 802E94A8 002E5108 38 63 57 28 */ addi r3, r3, lbl_80445728@l
+/* 802E94AC 002E510C 4C C6 31 82 */ crclr 6
+/* 802E94B0 002E5110 4B D1 E6 15 */ bl func_80007AC4
+/* 802E94B4 002E5114 7F C3 F3 78 */ mr r3, r30
+/* 802E94B8 002E5118 4B FF FF 4D */ bl nandReportErrorCode
+/* 802E94BC 002E511C 38 60 FF C0 */ li r3, -64
+lbl_802E94C0:
+/* 802E94C0 002E5120 80 01 01 54 */ lwz r0, 0x154(r1)
+/* 802E94C4 002E5124 83 E1 01 4C */ lwz r31, 0x14c(r1)
+/* 802E94C8 002E5128 83 C1 01 48 */ lwz r30, 0x148(r1)
+/* 802E94CC 002E512C 7C 08 03 A6 */ mtlr r0
+/* 802E94D0 002E5130 38 21 01 50 */ addi r1, r1, 0x150
+/* 802E94D4 002E5134 4E 80 00 20 */ blr
+
+.global nandGenerateAbsPath
+nandGenerateAbsPath:
+/* 802E94D8 002E5138 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802E94DC 002E513C 7C 08 02 A6 */ mflr r0
+/* 802E94E0 002E5140 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802E94E4 002E5144 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802E94E8 002E5148 7C 9F 23 78 */ mr r31, r4
+/* 802E94EC 002E514C 93 C1 00 08 */ stw r30, 8(r1)
+/* 802E94F0 002E5150 7C 7E 1B 78 */ mr r30, r3
+/* 802E94F4 002E5154 7F E3 FB 78 */ mr r3, r31
+/* 802E94F8 002E5158 4B ED D6 6D */ bl strlen
+/* 802E94FC 002E515C 2C 03 00 00 */ cmpwi r3, 0
+/* 802E9500 002E5160 40 82 00 14 */ bne lbl_802E9514
+/* 802E9504 002E5164 7F C3 F3 78 */ mr r3, r30
+/* 802E9508 002E5168 38 8D 8A 88 */ addi r4, r13, lbl_8063DD48-_SDA_BASE_
+/* 802E950C 002E516C 4B EE 4D C5 */ bl strcpy
+/* 802E9510 002E5170 48 00 00 78 */ b lbl_802E9588
+lbl_802E9514:
+/* 802E9514 002E5174 88 1F 00 00 */ lbz r0, 0(r31)
+/* 802E9518 002E5178 2C 00 00 2F */ cmpwi r0, 0x2f
+/* 802E951C 002E517C 40 82 00 0C */ bne lbl_802E9528
+/* 802E9520 002E5180 38 00 00 00 */ li r0, 0
+/* 802E9524 002E5184 48 00 00 08 */ b lbl_802E952C
+lbl_802E9528:
+/* 802E9528 002E5188 38 00 00 01 */ li r0, 1
+lbl_802E952C:
+/* 802E952C 002E518C 2C 00 00 00 */ cmpwi r0, 0
+/* 802E9530 002E5190 41 82 00 1C */ beq lbl_802E954C
+/* 802E9534 002E5194 3C 80 80 44 */ lis r4, lbl_804456C0@ha
+/* 802E9538 002E5198 7F C3 F3 78 */ mr r3, r30
+/* 802E953C 002E519C 7F E5 FB 78 */ mr r5, r31
+/* 802E9540 002E51A0 38 84 56 C0 */ addi r4, r4, lbl_804456C0@l
+/* 802E9544 002E51A4 4B FF FC E5 */ bl nandConvertPath
+/* 802E9548 002E51A8 48 00 00 40 */ b lbl_802E9588
+lbl_802E954C:
+/* 802E954C 002E51AC 7F C3 F3 78 */ mr r3, r30
+/* 802E9550 002E51B0 7F E4 FB 78 */ mr r4, r31
+/* 802E9554 002E51B4 4B EE 4D 7D */ bl strcpy
+/* 802E9558 002E51B8 7F C3 F3 78 */ mr r3, r30
+/* 802E955C 002E51BC 4B ED D6 09 */ bl strlen
+/* 802E9560 002E51C0 2C 03 00 00 */ cmpwi r3, 0
+/* 802E9564 002E51C4 41 82 00 24 */ beq lbl_802E9588
+/* 802E9568 002E51C8 7C 83 F2 14 */ add r4, r3, r30
+/* 802E956C 002E51CC 88 04 FF FF */ lbz r0, -1(r4)
+/* 802E9570 002E51D0 2C 00 00 2F */ cmpwi r0, 0x2f
+/* 802E9574 002E51D4 40 82 00 14 */ bne lbl_802E9588
+/* 802E9578 002E51D8 34 03 FF FF */ addic. r0, r3, -1
+/* 802E957C 002E51DC 41 82 00 0C */ beq lbl_802E9588
+/* 802E9580 002E51E0 38 00 00 00 */ li r0, 0
+/* 802E9584 002E51E4 98 04 FF FF */ stb r0, -1(r4)
+lbl_802E9588:
+/* 802E9588 002E51E8 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802E958C 002E51EC 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802E9590 002E51F0 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802E9594 002E51F4 7C 08 03 A6 */ mtlr r0
+/* 802E9598 002E51F8 38 21 00 10 */ addi r1, r1, 0x10
+/* 802E959C 002E51FC 4E 80 00 20 */ blr
+
+.global nandGetParentDirectory
+nandGetParentDirectory:
+/* 802E95A0 002E5200 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802E95A4 002E5204 7C 08 02 A6 */ mflr r0
+/* 802E95A8 002E5208 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E95AC 002E520C 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802E95B0 002E5210 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802E95B4 002E5214 7C 9E 23 78 */ mr r30, r4
+/* 802E95B8 002E5218 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802E95BC 002E521C 7C 7D 1B 78 */ mr r29, r3
+/* 802E95C0 002E5220 7F C3 F3 78 */ mr r3, r30
+/* 802E95C4 002E5224 4B ED D5 A1 */ bl strlen
+/* 802E95C8 002E5228 38 03 00 01 */ addi r0, r3, 1
+/* 802E95CC 002E522C 7C 7F 1B 78 */ mr r31, r3
+/* 802E95D0 002E5230 7C 9E 1A 14 */ add r4, r30, r3
+/* 802E95D4 002E5234 7C 09 03 A6 */ mtctr r0
+/* 802E95D8 002E5238 2C 03 00 00 */ cmpwi r3, 0
+/* 802E95DC 002E523C 41 80 00 1C */ blt lbl_802E95F8
+lbl_802E95E0:
+/* 802E95E0 002E5240 88 04 00 00 */ lbz r0, 0(r4)
+/* 802E95E4 002E5244 2C 00 00 2F */ cmpwi r0, 0x2f
+/* 802E95E8 002E5248 41 82 00 10 */ beq lbl_802E95F8
+/* 802E95EC 002E524C 3B FF FF FF */ addi r31, r31, -1
+/* 802E95F0 002E5250 38 84 FF FF */ addi r4, r4, -1
+/* 802E95F4 002E5254 42 00 FF EC */ bdnz lbl_802E95E0
+lbl_802E95F8:
+/* 802E95F8 002E5258 2C 1F 00 00 */ cmpwi r31, 0
+/* 802E95FC 002E525C 40 82 00 14 */ bne lbl_802E9610
+/* 802E9600 002E5260 7F A3 EB 78 */ mr r3, r29
+/* 802E9604 002E5264 38 8D 8A 84 */ addi r4, r13, lbl_8063DD44-_SDA_BASE_
+/* 802E9608 002E5268 4B EE 4C C9 */ bl strcpy
+/* 802E960C 002E526C 48 00 00 1C */ b lbl_802E9628
+lbl_802E9610:
+/* 802E9610 002E5270 7F A3 EB 78 */ mr r3, r29
+/* 802E9614 002E5274 7F C4 F3 78 */ mr r4, r30
+/* 802E9618 002E5278 7F E5 FB 78 */ mr r5, r31
+/* 802E961C 002E527C 4B EE 4D 75 */ bl strncpy
+/* 802E9620 002E5280 38 00 00 00 */ li r0, 0
+/* 802E9624 002E5284 7C 1D F9 AE */ stbx r0, r29, r31
+lbl_802E9628:
+/* 802E9628 002E5288 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802E962C 002E528C 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802E9630 002E5290 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802E9634 002E5294 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802E9638 002E5298 7C 08 03 A6 */ mtlr r0
+/* 802E963C 002E529C 38 21 00 20 */ addi r1, r1, 0x20
+/* 802E9640 002E52A0 4E 80 00 20 */ blr
+
+.global NANDInit
+NANDInit:
+/* 802E9644 002E52A4 54 2B 06 FE */ clrlwi r11, r1, 0x1b
+/* 802E9648 002E52A8 7C 2C 0B 78 */ mr r12, r1
+/* 802E964C 002E52AC 21 6B FD 40 */ subfic r11, r11, -704
+/* 802E9650 002E52B0 7C 21 59 6E */ stwux r1, r1, r11
+/* 802E9654 002E52B4 7C 08 02 A6 */ mflr r0
+/* 802E9658 002E52B8 90 0C 00 04 */ stw r0, 4(r12)
+/* 802E965C 002E52BC 93 EC FF FC */ stw r31, -4(r12)
+/* 802E9660 002E52C0 3F E0 80 44 */ lis r31, lbl_80445660@ha
+/* 802E9664 002E52C4 3B FF 56 60 */ addi r31, r31, lbl_80445660@l
+/* 802E9668 002E52C8 93 CC FF F8 */ stw r30, -8(r12)
+/* 802E966C 002E52CC 93 AC FF F4 */ stw r29, -0xc(r12)
+/* 802E9670 002E52D0 93 8C FF F0 */ stw r28, -0x10(r12)
+/* 802E9674 002E52D4 4B F8 50 E9 */ bl OSDisableInterrupts
+/* 802E9678 002E52D8 80 0D AF 08 */ lwz r0, lbl_806401C8-_SDA_BASE_(r13)
+/* 802E967C 002E52DC 2C 00 00 01 */ cmpwi r0, 1
+/* 802E9680 002E52E0 40 82 00 10 */ bne lbl_802E9690
+/* 802E9684 002E52E4 4B F8 51 01 */ bl OSRestoreInterrupts
+/* 802E9688 002E52E8 38 60 FF FD */ li r3, -3
+/* 802E968C 002E52EC 48 00 02 08 */ b lbl_802E9894
+lbl_802E9690:
+/* 802E9690 002E52F0 2C 00 00 02 */ cmpwi r0, 2
+/* 802E9694 002E52F4 40 82 00 10 */ bne lbl_802E96A4
+/* 802E9698 002E52F8 4B F8 50 ED */ bl OSRestoreInterrupts
+/* 802E969C 002E52FC 38 60 00 00 */ li r3, 0
+/* 802E96A0 002E5300 48 00 01 F4 */ b lbl_802E9894
+lbl_802E96A4:
+/* 802E96A4 002E5304 38 00 00 01 */ li r0, 1
+/* 802E96A8 002E5308 90 0D AF 08 */ stw r0, lbl_806401C8-_SDA_BASE_(r13)
+/* 802E96AC 002E530C 4B F8 50 D9 */ bl OSRestoreInterrupts
+/* 802E96B0 002E5310 4B FB B0 3D */ bl ISFS_OpenLib
+/* 802E96B4 002E5314 2C 03 00 00 */ cmpwi r3, 0
+/* 802E96B8 002E5318 7C 7C 1B 78 */ mr r28, r3
+/* 802E96BC 002E531C 40 82 01 2C */ bne lbl_802E97E8
+/* 802E96C0 002E5320 38 60 FF FF */ li r3, -1
+/* 802E96C4 002E5324 3B 80 00 00 */ li r28, 0
+/* 802E96C8 002E5328 90 61 00 20 */ stw r3, 0x20(r1)
+/* 802E96CC 002E532C 38 6D 8A A0 */ addi r3, r13, lbl_8063DD60-_SDA_BASE_
+/* 802E96D0 002E5330 38 80 00 00 */ li r4, 0
+/* 802E96D4 002E5334 4B FB 9A 85 */ bl IOS_Open
+/* 802E96D8 002E5338 2C 03 00 00 */ cmpwi r3, 0
+/* 802E96DC 002E533C 90 61 00 20 */ stw r3, 0x20(r1)
+/* 802E96E0 002E5340 40 80 00 08 */ bge lbl_802E96E8
+/* 802E96E4 002E5344 7C 7C 1B 78 */ mr r28, r3
+lbl_802E96E8:
+/* 802E96E8 002E5348 2C 1C 00 00 */ cmpwi r28, 0
+/* 802E96EC 002E534C 40 82 00 64 */ bne lbl_802E9750
+/* 802E96F0 002E5350 2C 03 00 00 */ cmpwi r3, 0
+/* 802E96F4 002E5354 38 E1 00 40 */ addi r7, r1, 0x40
+/* 802E96F8 002E5358 41 80 00 14 */ blt lbl_802E970C
+/* 802E96FC 002E535C 38 81 00 28 */ addi r4, r1, 0x28
+/* 802E9700 002E5360 38 00 00 00 */ li r0, 0
+/* 802E9704 002E5364 7C 04 00 40 */ cmplw r4, r0
+/* 802E9708 002E5368 40 82 00 0C */ bne lbl_802E9714
+lbl_802E970C:
+/* 802E970C 002E536C 38 60 FC 07 */ li r3, -1017
+/* 802E9710 002E5370 48 00 00 3C */ b lbl_802E974C
+lbl_802E9714:
+/* 802E9714 002E5374 38 81 00 60 */ addi r4, r1, 0x60
+/* 802E9718 002E5378 38 00 00 08 */ li r0, 8
+/* 802E971C 002E537C 90 81 00 40 */ stw r4, 0x40(r1)
+/* 802E9720 002E5380 38 80 00 20 */ li r4, 0x20
+/* 802E9724 002E5384 38 A0 00 00 */ li r5, 0
+/* 802E9728 002E5388 38 C0 00 01 */ li r6, 1
+/* 802E972C 002E538C 90 01 00 44 */ stw r0, 0x44(r1)
+/* 802E9730 002E5390 4B FB A7 11 */ bl IOS_Ioctlv
+/* 802E9734 002E5394 2C 03 00 00 */ cmpwi r3, 0
+/* 802E9738 002E5398 40 82 00 14 */ bne lbl_802E974C
+/* 802E973C 002E539C 80 01 00 60 */ lwz r0, 0x60(r1)
+/* 802E9740 002E53A0 80 81 00 64 */ lwz r4, 0x64(r1)
+/* 802E9744 002E53A4 90 01 00 28 */ stw r0, 0x28(r1)
+/* 802E9748 002E53A8 90 81 00 2C */ stw r4, 0x2c(r1)
+lbl_802E974C:
+/* 802E974C 002E53AC 7C 7C 1B 78 */ mr r28, r3
+lbl_802E9750:
+/* 802E9750 002E53B0 2C 1C 00 00 */ cmpwi r28, 0
+/* 802E9754 002E53B4 40 82 00 20 */ bne lbl_802E9774
+/* 802E9758 002E53B8 3C E0 80 57 */ lis r7, lbl_80570E80@ha
+/* 802E975C 002E53BC 80 A1 00 28 */ lwz r5, 0x28(r1)
+/* 802E9760 002E53C0 80 C1 00 2C */ lwz r6, 0x2c(r1)
+/* 802E9764 002E53C4 38 61 00 20 */ addi r3, r1, 0x20
+/* 802E9768 002E53C8 38 E7 0E 80 */ addi r7, r7, lbl_80570E80@l
+/* 802E976C 002E53CC 48 00 0E 65 */ bl _ES_GetDataDir
+/* 802E9770 002E53D0 7C 7C 1B 78 */ mr r28, r3
+lbl_802E9774:
+/* 802E9774 002E53D4 2C 1C 00 00 */ cmpwi r28, 0
+/* 802E9778 002E53D8 40 82 00 14 */ bne lbl_802E978C
+/* 802E977C 002E53DC 3C 80 80 57 */ lis r4, lbl_80570E80@ha
+/* 802E9780 002E53E0 38 7F 00 60 */ addi r3, r31, 0x60
+/* 802E9784 002E53E4 38 84 0E 80 */ addi r4, r4, lbl_80570E80@l
+/* 802E9788 002E53E8 4B EE 4B 49 */ bl strcpy
+lbl_802E978C:
+/* 802E978C 002E53EC 80 61 00 20 */ lwz r3, 0x20(r1)
+/* 802E9790 002E53F0 2C 03 00 00 */ cmpwi r3, 0
+/* 802E9794 002E53F4 41 80 00 18 */ blt lbl_802E97AC
+/* 802E9798 002E53F8 4B FB 9B A1 */ bl IOS_Close
+/* 802E979C 002E53FC 2C 03 00 00 */ cmpwi r3, 0
+/* 802E97A0 002E5400 40 82 00 0C */ bne lbl_802E97AC
+/* 802E97A4 002E5404 38 60 FF FF */ li r3, -1
+/* 802E97A8 002E5408 90 61 00 20 */ stw r3, 0x20(r1)
+lbl_802E97AC:
+/* 802E97AC 002E540C 2C 1C 00 00 */ cmpwi r28, 0
+/* 802E97B0 002E5410 41 82 00 10 */ beq lbl_802E97C0
+/* 802E97B4 002E5414 38 7F 00 FC */ addi r3, r31, 0xfc
+/* 802E97B8 002E5418 4C C6 31 82 */ crclr 6
+/* 802E97BC 002E541C 4B D1 E3 09 */ bl func_80007AC4
+lbl_802E97C0:
+/* 802E97C0 002E5420 38 7F 00 A0 */ addi r3, r31, 0xa0
+/* 802E97C4 002E5424 4B F8 64 CD */ bl OSRegisterShutdownFunction
+/* 802E97C8 002E5428 4B F8 4F 95 */ bl OSDisableInterrupts
+/* 802E97CC 002E542C 38 00 00 02 */ li r0, 2
+/* 802E97D0 002E5430 90 0D AF 08 */ stw r0, lbl_806401C8-_SDA_BASE_(r13)
+/* 802E97D4 002E5434 4B F8 4F B1 */ bl OSRestoreInterrupts
+/* 802E97D8 002E5438 80 6D 8A 80 */ lwz r3, lbl_8063DD40-_SDA_BASE_(r13)
+/* 802E97DC 002E543C 4B F7 FE 75 */ bl OSRegisterVersion
+/* 802E97E0 002E5440 38 60 00 00 */ li r3, 0
+/* 802E97E4 002E5444 48 00 00 B0 */ b lbl_802E9894
+lbl_802E97E8:
+/* 802E97E8 002E5448 4B F8 4F 75 */ bl OSDisableInterrupts
+/* 802E97EC 002E544C 38 00 00 00 */ li r0, 0
+/* 802E97F0 002E5450 90 0D AF 08 */ stw r0, lbl_806401C8-_SDA_BASE_(r13)
+/* 802E97F4 002E5454 4B F8 4F 91 */ bl OSRestoreInterrupts
+/* 802E97F8 002E5458 3C 60 80 40 */ lis r3, lbl_803FDF20@ha
+/* 802E97FC 002E545C 38 00 00 28 */ li r0, 0x28
+/* 802E9800 002E5460 38 63 DF 20 */ addi r3, r3, lbl_803FDF20@l
+/* 802E9804 002E5464 38 A1 01 5C */ addi r5, r1, 0x15c
+/* 802E9808 002E5468 38 83 FF FC */ addi r4, r3, -4
+/* 802E980C 002E546C 7C 09 03 A6 */ mtctr r0
+lbl_802E9810:
+/* 802E9810 002E5470 80 64 00 04 */ lwz r3, 4(r4)
+/* 802E9814 002E5474 84 04 00 08 */ lwzu r0, 8(r4)
+/* 802E9818 002E5478 90 65 00 04 */ stw r3, 4(r5)
+/* 802E981C 002E547C 94 05 00 08 */ stwu r0, 8(r5)
+/* 802E9820 002E5480 42 00 FF F0 */ bdnz lbl_802E9810
+/* 802E9824 002E5484 2C 1C 00 00 */ cmpwi r28, 0
+/* 802E9828 002E5488 3B A0 00 00 */ li r29, 0
+/* 802E982C 002E548C 38 60 00 00 */ li r3, 0
+/* 802E9830 002E5490 41 80 00 08 */ blt lbl_802E9838
+/* 802E9834 002E5494 48 00 00 5C */ b lbl_802E9890
+lbl_802E9838:
+/* 802E9838 002E5498 38 00 00 28 */ li r0, 0x28
+/* 802E983C 002E549C 3B C1 01 60 */ addi r30, r1, 0x160
+/* 802E9840 002E54A0 7C 09 03 A6 */ mtctr r0
+lbl_802E9844:
+/* 802E9844 002E54A4 7C 1E 18 2E */ lwzx r0, r30, r3
+/* 802E9848 002E54A8 7C 1C 00 00 */ cmpw r28, r0
+/* 802E984C 002E54AC 40 82 00 1C */ bne lbl_802E9868
+/* 802E9850 002E54B0 7F 83 E3 78 */ mr r3, r28
+/* 802E9854 002E54B4 4B FF FB B1 */ bl nandReportErrorCode
+/* 802E9858 002E54B8 38 1D 00 01 */ addi r0, r29, 1
+/* 802E985C 002E54BC 54 00 10 3A */ slwi r0, r0, 2
+/* 802E9860 002E54C0 7F 9E 00 2E */ lwzx r28, r30, r0
+/* 802E9864 002E54C4 48 00 00 2C */ b lbl_802E9890
+lbl_802E9868:
+/* 802E9868 002E54C8 3B BD 00 02 */ addi r29, r29, 2
+/* 802E986C 002E54CC 38 63 00 08 */ addi r3, r3, 8
+/* 802E9870 002E54D0 42 00 FF D4 */ bdnz lbl_802E9844
+/* 802E9874 002E54D4 7F 84 E3 78 */ mr r4, r28
+/* 802E9878 002E54D8 38 7F 00 C8 */ addi r3, r31, 0xc8
+/* 802E987C 002E54DC 4C C6 31 82 */ crclr 6
+/* 802E9880 002E54E0 4B D1 E2 45 */ bl func_80007AC4
+/* 802E9884 002E54E4 7F 83 E3 78 */ mr r3, r28
+/* 802E9888 002E54E8 4B FF FB 7D */ bl nandReportErrorCode
+/* 802E988C 002E54EC 3B 80 FF C0 */ li r28, -64
+lbl_802E9890:
+/* 802E9890 002E54F0 7F 83 E3 78 */ mr r3, r28
+lbl_802E9894:
+/* 802E9894 002E54F4 81 41 00 00 */ lwz r10, 0(r1)
+/* 802E9898 002E54F8 80 0A 00 04 */ lwz r0, 4(r10)
+/* 802E989C 002E54FC 83 EA FF FC */ lwz r31, -4(r10)
+/* 802E98A0 002E5500 83 CA FF F8 */ lwz r30, -8(r10)
+/* 802E98A4 002E5504 83 AA FF F4 */ lwz r29, -0xc(r10)
+/* 802E98A8 002E5508 83 8A FF F0 */ lwz r28, -0x10(r10)
+/* 802E98AC 002E550C 7C 08 03 A6 */ mtlr r0
+/* 802E98B0 002E5510 7D 41 53 78 */ mr r1, r10
+/* 802E98B4 002E5514 4E 80 00 20 */ blr
+
+nandOnShutdown:
+/* 802E98B8 002E5518 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 802E98BC 002E551C 7C 08 02 A6 */ mflr r0
+/* 802E98C0 002E5520 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802E98C4 002E5524 39 61 00 30 */ addi r11, r1, 0x30
+/* 802E98C8 002E5528 4B ED D8 5D */ bl _savegpr_26
+/* 802E98CC 002E552C 2C 03 00 00 */ cmpwi r3, 0
+/* 802E98D0 002E5530 40 82 00 98 */ bne lbl_802E9968
+/* 802E98D4 002E5534 28 04 00 02 */ cmplwi r4, 2
+/* 802E98D8 002E5538 40 82 00 88 */ bne lbl_802E9960
+/* 802E98DC 002E553C 3B 40 00 00 */ li r26, 0
+/* 802E98E0 002E5540 93 41 00 08 */ stw r26, 8(r1)
+/* 802E98E4 002E5544 4B F8 8E D5 */ bl OSGetTime
+/* 802E98E8 002E5548 3C A0 80 2F */ lis r5, nandShutdownCallback@ha
+/* 802E98EC 002E554C 7C 9B 23 78 */ mr r27, r4
+/* 802E98F0 002E5550 7C 7C 1B 78 */ mr r28, r3
+/* 802E98F4 002E5554 38 81 00 08 */ addi r4, r1, 8
+/* 802E98F8 002E5558 38 65 99 84 */ addi r3, r5, nandShutdownCallback@l
+/* 802E98FC 002E555C 4B FB C1 9D */ bl ISFS_ShutdownAsync
+/* 802E9900 002E5560 3C 60 10 62 */ lis r3, 0x10624DD3@ha
+/* 802E9904 002E5564 3F C0 80 00 */ lis r30, 0x8000
+/* 802E9908 002E5568 3B A3 4D D3 */ addi r29, r3, 0x10624DD3@l
+/* 802E990C 002E556C 3B E0 01 F4 */ li r31, 0x1f4
+/* 802E9910 002E5570 48 00 00 10 */ b lbl_802E9920
+lbl_802E9914:
+/* 802E9914 002E5574 80 01 00 08 */ lwz r0, 8(r1)
+/* 802E9918 002E5578 2C 00 00 00 */ cmpwi r0, 0
+/* 802E991C 002E557C 40 82 00 44 */ bne lbl_802E9960
+lbl_802E9920:
+/* 802E9920 002E5580 4B F8 8E 99 */ bl OSGetTime
+/* 802E9924 002E5584 80 1E 00 F8 */ lwz r0, 0xf8(r30)
+/* 802E9928 002E5588 7C 9B 20 10 */ subfc r4, r27, r4
+/* 802E992C 002E558C 7C 7C 19 10 */ subfe r3, r28, r3
+/* 802E9930 002E5590 38 A0 00 00 */ li r5, 0
+/* 802E9934 002E5594 54 00 F0 BE */ srwi r0, r0, 2
+/* 802E9938 002E5598 7C 1D 00 16 */ mulhwu r0, r29, r0
+/* 802E993C 002E559C 54 06 D1 BE */ srwi r6, r0, 6
+/* 802E9940 002E55A0 4B ED D9 39 */ bl __div2i
+/* 802E9944 002E55A4 6C 60 80 00 */ xoris r0, r3, 0x8000
+/* 802E9948 002E55A8 6F 45 80 00 */ xoris r5, r26, 0x8000
+/* 802E994C 002E55AC 7C 7F 20 10 */ subfc r3, r31, r4
+/* 802E9950 002E55B0 7C A5 01 10 */ subfe r5, r5, r0
+/* 802E9954 002E55B4 7C A0 01 10 */ subfe r5, r0, r0
+/* 802E9958 002E55B8 7C A5 00 D1 */ neg. r5, r5
+/* 802E995C 002E55BC 40 82 FF B8 */ bne lbl_802E9914
+lbl_802E9960:
+/* 802E9960 002E55C0 38 60 00 01 */ li r3, 1
+/* 802E9964 002E55C4 48 00 00 08 */ b lbl_802E996C
+lbl_802E9968:
+/* 802E9968 002E55C8 38 60 00 01 */ li r3, 1
+lbl_802E996C:
+/* 802E996C 002E55CC 39 61 00 30 */ addi r11, r1, 0x30
+/* 802E9970 002E55D0 4B ED D8 01 */ bl _restgpr_26
+/* 802E9974 002E55D4 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 802E9978 002E55D8 7C 08 03 A6 */ mtlr r0
+/* 802E997C 002E55DC 38 21 00 30 */ addi r1, r1, 0x30
+/* 802E9980 002E55E0 4E 80 00 20 */ blr
+
+.global nandShutdownCallback
+nandShutdownCallback:
+/* 802E9984 002E55E4 38 00 00 01 */ li r0, 1
+/* 802E9988 002E55E8 90 04 00 00 */ stw r0, 0(r4)
+/* 802E998C 002E55EC 4E 80 00 20 */ blr
+
+.global nandChangeDir
+nandChangeDir:
+/* 802E9990 002E55F0 94 21 FF A0 */ stwu r1, -0x60(r1)
+/* 802E9994 002E55F4 7C 08 02 A6 */ mflr r0
+/* 802E9998 002E55F8 2C 05 00 00 */ cmpwi r5, 0
+/* 802E999C 002E55FC 90 01 00 64 */ stw r0, 0x64(r1)
+/* 802E99A0 002E5600 93 E1 00 5C */ stw r31, 0x5c(r1)
+/* 802E99A4 002E5604 7C DF 33 78 */ mr r31, r6
+/* 802E99A8 002E5608 93 C1 00 58 */ stw r30, 0x58(r1)
+/* 802E99AC 002E560C 7C 9E 23 78 */ mr r30, r4
+/* 802E99B0 002E5610 93 A1 00 54 */ stw r29, 0x54(r1)
+/* 802E99B4 002E5614 7C 7D 1B 78 */ mr r29, r3
+/* 802E99B8 002E5618 41 82 00 F4 */ beq lbl_802E9AAC
+/* 802E99BC 002E561C 4B ED D1 A9 */ bl strlen
+/* 802E99C0 002E5620 2C 03 00 00 */ cmpwi r3, 0
+/* 802E99C4 002E5624 40 82 00 14 */ bne lbl_802E99D8
+/* 802E99C8 002E5628 38 7E 00 34 */ addi r3, r30, 0x34
+/* 802E99CC 002E562C 38 8D 8A 88 */ addi r4, r13, lbl_8063DD48-_SDA_BASE_
+/* 802E99D0 002E5630 4B EE 49 01 */ bl strcpy
+/* 802E99D4 002E5634 48 00 00 78 */ b lbl_802E9A4C
+lbl_802E99D8:
+/* 802E99D8 002E5638 88 1D 00 00 */ lbz r0, 0(r29)
+/* 802E99DC 002E563C 2C 00 00 2F */ cmpwi r0, 0x2f
+/* 802E99E0 002E5640 40 82 00 0C */ bne lbl_802E99EC
+/* 802E99E4 002E5644 38 00 00 00 */ li r0, 0
+/* 802E99E8 002E5648 48 00 00 08 */ b lbl_802E99F0
+lbl_802E99EC:
+/* 802E99EC 002E564C 38 00 00 01 */ li r0, 1
+lbl_802E99F0:
+/* 802E99F0 002E5650 2C 00 00 00 */ cmpwi r0, 0
+/* 802E99F4 002E5654 41 82 00 1C */ beq lbl_802E9A10
+/* 802E99F8 002E5658 3C 80 80 44 */ lis r4, lbl_804456C0@ha
+/* 802E99FC 002E565C 7F A5 EB 78 */ mr r5, r29
+/* 802E9A00 002E5660 38 7E 00 34 */ addi r3, r30, 0x34
+/* 802E9A04 002E5664 38 84 56 C0 */ addi r4, r4, lbl_804456C0@l
+/* 802E9A08 002E5668 4B FF F8 21 */ bl nandConvertPath
+/* 802E9A0C 002E566C 48 00 00 40 */ b lbl_802E9A4C
+lbl_802E9A10:
+/* 802E9A10 002E5670 7F A4 EB 78 */ mr r4, r29
+/* 802E9A14 002E5674 38 7E 00 34 */ addi r3, r30, 0x34
+/* 802E9A18 002E5678 4B EE 48 B9 */ bl strcpy
+/* 802E9A1C 002E567C 38 7E 00 34 */ addi r3, r30, 0x34
+/* 802E9A20 002E5680 4B ED D1 45 */ bl strlen
+/* 802E9A24 002E5684 2C 03 00 00 */ cmpwi r3, 0
+/* 802E9A28 002E5688 41 82 00 24 */ beq lbl_802E9A4C
+/* 802E9A2C 002E568C 7C 83 F2 14 */ add r4, r3, r30
+/* 802E9A30 002E5690 88 04 00 33 */ lbz r0, 0x33(r4)
+/* 802E9A34 002E5694 2C 00 00 2F */ cmpwi r0, 0x2f
+/* 802E9A38 002E5698 40 82 00 14 */ bne lbl_802E9A4C
+/* 802E9A3C 002E569C 34 03 FF FF */ addic. r0, r3, -1
+/* 802E9A40 002E56A0 41 82 00 0C */ beq lbl_802E9A4C
+/* 802E9A44 002E56A4 38 00 00 00 */ li r0, 0
+/* 802E9A48 002E56A8 98 04 00 33 */ stb r0, 0x33(r4)
+lbl_802E9A4C:
+/* 802E9A4C 002E56AC 2C 1F 00 00 */ cmpwi r31, 0
+/* 802E9A50 002E56B0 40 82 00 3C */ bne lbl_802E9A8C
+/* 802E9A54 002E56B4 3C 80 80 44 */ lis r4, lbl_80445710@ha
+/* 802E9A58 002E56B8 38 7E 00 34 */ addi r3, r30, 0x34
+/* 802E9A5C 002E56BC 38 84 57 10 */ addi r4, r4, lbl_80445710@l
+/* 802E9A60 002E56C0 38 A0 00 08 */ li r5, 8
+/* 802E9A64 002E56C4 4B EE 4B 05 */ bl strncmp
+/* 802E9A68 002E56C8 2C 03 00 00 */ cmpwi r3, 0
+/* 802E9A6C 002E56CC 40 82 00 0C */ bne lbl_802E9A78
+/* 802E9A70 002E56D0 38 00 00 01 */ li r0, 1
+/* 802E9A74 002E56D4 48 00 00 08 */ b lbl_802E9A7C
+lbl_802E9A78:
+/* 802E9A78 002E56D8 38 00 00 00 */ li r0, 0
+lbl_802E9A7C:
+/* 802E9A7C 002E56DC 2C 00 00 00 */ cmpwi r0, 0
+/* 802E9A80 002E56E0 41 82 00 0C */ beq lbl_802E9A8C
+/* 802E9A84 002E56E4 38 60 FF 9A */ li r3, -102
+/* 802E9A88 002E56E8 48 00 01 80 */ b lbl_802E9C08
+lbl_802E9A8C:
+/* 802E9A8C 002E56EC 3C C0 80 2F */ lis r6, nandChangeDirCallback@ha
+/* 802E9A90 002E56F0 7F C7 F3 78 */ mr r7, r30
+/* 802E9A94 002E56F4 38 7E 00 34 */ addi r3, r30, 0x34
+/* 802E9A98 002E56F8 38 BE 00 30 */ addi r5, r30, 0x30
+/* 802E9A9C 002E56FC 38 C6 9D 1C */ addi r6, r6, nandChangeDirCallback@l
+/* 802E9AA0 002E5700 38 80 00 00 */ li r4, 0
+/* 802E9AA4 002E5704 4B FB B2 15 */ bl ISFS_ReadDirAsync
+/* 802E9AA8 002E5708 48 00 01 60 */ b lbl_802E9C08
+lbl_802E9AAC:
+/* 802E9AAC 002E570C 38 00 00 00 */ li r0, 0
+/* 802E9AB0 002E5710 90 01 00 08 */ stw r0, 8(r1)
+/* 802E9AB4 002E5714 90 01 00 10 */ stw r0, 0x10(r1)
+/* 802E9AB8 002E5718 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802E9ABC 002E571C 90 01 00 18 */ stw r0, 0x18(r1)
+/* 802E9AC0 002E5720 90 01 00 1C */ stw r0, 0x1c(r1)
+/* 802E9AC4 002E5724 90 01 00 20 */ stw r0, 0x20(r1)
+/* 802E9AC8 002E5728 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E9ACC 002E572C 90 01 00 28 */ stw r0, 0x28(r1)
+/* 802E9AD0 002E5730 90 01 00 2C */ stw r0, 0x2c(r1)
+/* 802E9AD4 002E5734 90 01 00 30 */ stw r0, 0x30(r1)
+/* 802E9AD8 002E5738 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802E9ADC 002E573C 90 01 00 38 */ stw r0, 0x38(r1)
+/* 802E9AE0 002E5740 90 01 00 3C */ stw r0, 0x3c(r1)
+/* 802E9AE4 002E5744 90 01 00 40 */ stw r0, 0x40(r1)
+/* 802E9AE8 002E5748 90 01 00 44 */ stw r0, 0x44(r1)
+/* 802E9AEC 002E574C 90 01 00 48 */ stw r0, 0x48(r1)
+/* 802E9AF0 002E5750 90 01 00 4C */ stw r0, 0x4c(r1)
+/* 802E9AF4 002E5754 4B ED D0 71 */ bl strlen
+/* 802E9AF8 002E5758 2C 03 00 00 */ cmpwi r3, 0
+/* 802E9AFC 002E575C 40 82 00 14 */ bne lbl_802E9B10
+/* 802E9B00 002E5760 38 61 00 10 */ addi r3, r1, 0x10
+/* 802E9B04 002E5764 38 8D 8A 88 */ addi r4, r13, lbl_8063DD48-_SDA_BASE_
+/* 802E9B08 002E5768 4B EE 47 C9 */ bl strcpy
+/* 802E9B0C 002E576C 48 00 00 7C */ b lbl_802E9B88
+lbl_802E9B10:
+/* 802E9B10 002E5770 88 1D 00 00 */ lbz r0, 0(r29)
+/* 802E9B14 002E5774 2C 00 00 2F */ cmpwi r0, 0x2f
+/* 802E9B18 002E5778 40 82 00 0C */ bne lbl_802E9B24
+/* 802E9B1C 002E577C 38 00 00 00 */ li r0, 0
+/* 802E9B20 002E5780 48 00 00 08 */ b lbl_802E9B28
+lbl_802E9B24:
+/* 802E9B24 002E5784 38 00 00 01 */ li r0, 1
+lbl_802E9B28:
+/* 802E9B28 002E5788 2C 00 00 00 */ cmpwi r0, 0
+/* 802E9B2C 002E578C 41 82 00 1C */ beq lbl_802E9B48
+/* 802E9B30 002E5790 3C 80 80 44 */ lis r4, lbl_804456C0@ha
+/* 802E9B34 002E5794 7F A5 EB 78 */ mr r5, r29
+/* 802E9B38 002E5798 38 61 00 10 */ addi r3, r1, 0x10
+/* 802E9B3C 002E579C 38 84 56 C0 */ addi r4, r4, lbl_804456C0@l
+/* 802E9B40 002E57A0 4B FF F6 E9 */ bl nandConvertPath
+/* 802E9B44 002E57A4 48 00 00 44 */ b lbl_802E9B88
+lbl_802E9B48:
+/* 802E9B48 002E57A8 7F A4 EB 78 */ mr r4, r29
+/* 802E9B4C 002E57AC 38 61 00 10 */ addi r3, r1, 0x10
+/* 802E9B50 002E57B0 4B EE 47 81 */ bl strcpy
+/* 802E9B54 002E57B4 38 61 00 10 */ addi r3, r1, 0x10
+/* 802E9B58 002E57B8 4B ED D0 0D */ bl strlen
+/* 802E9B5C 002E57BC 2C 03 00 00 */ cmpwi r3, 0
+/* 802E9B60 002E57C0 41 82 00 28 */ beq lbl_802E9B88
+/* 802E9B64 002E57C4 38 01 00 10 */ addi r0, r1, 0x10
+/* 802E9B68 002E57C8 7C 83 02 14 */ add r4, r3, r0
+/* 802E9B6C 002E57CC 88 04 FF FF */ lbz r0, -1(r4)
+/* 802E9B70 002E57D0 2C 00 00 2F */ cmpwi r0, 0x2f
+/* 802E9B74 002E57D4 40 82 00 14 */ bne lbl_802E9B88
+/* 802E9B78 002E57D8 34 03 FF FF */ addic. r0, r3, -1
+/* 802E9B7C 002E57DC 41 82 00 0C */ beq lbl_802E9B88
+/* 802E9B80 002E57E0 38 00 00 00 */ li r0, 0
+/* 802E9B84 002E57E4 98 04 FF FF */ stb r0, -1(r4)
+lbl_802E9B88:
+/* 802E9B88 002E57E8 2C 1F 00 00 */ cmpwi r31, 0
+/* 802E9B8C 002E57EC 40 82 00 3C */ bne lbl_802E9BC8
+/* 802E9B90 002E57F0 3C 80 80 44 */ lis r4, lbl_80445710@ha
+/* 802E9B94 002E57F4 38 61 00 10 */ addi r3, r1, 0x10
+/* 802E9B98 002E57F8 38 84 57 10 */ addi r4, r4, lbl_80445710@l
+/* 802E9B9C 002E57FC 38 A0 00 08 */ li r5, 8
+/* 802E9BA0 002E5800 4B EE 49 C9 */ bl strncmp
+/* 802E9BA4 002E5804 2C 03 00 00 */ cmpwi r3, 0
+/* 802E9BA8 002E5808 40 82 00 0C */ bne lbl_802E9BB4
+/* 802E9BAC 002E580C 38 00 00 01 */ li r0, 1
+/* 802E9BB0 002E5810 48 00 00 08 */ b lbl_802E9BB8
+lbl_802E9BB4:
+/* 802E9BB4 002E5814 38 00 00 00 */ li r0, 0
+lbl_802E9BB8:
+/* 802E9BB8 002E5818 2C 00 00 00 */ cmpwi r0, 0
+/* 802E9BBC 002E581C 41 82 00 0C */ beq lbl_802E9BC8
+/* 802E9BC0 002E5820 38 60 FF 9A */ li r3, -102
+/* 802E9BC4 002E5824 48 00 00 44 */ b lbl_802E9C08
+lbl_802E9BC8:
+/* 802E9BC8 002E5828 38 61 00 10 */ addi r3, r1, 0x10
+/* 802E9BCC 002E582C 38 A1 00 08 */ addi r5, r1, 8
+/* 802E9BD0 002E5830 38 80 00 00 */ li r4, 0
+/* 802E9BD4 002E5834 4B FB AF 91 */ bl ISFS_ReadDir
+/* 802E9BD8 002E5838 2C 03 00 00 */ cmpwi r3, 0
+/* 802E9BDC 002E583C 7C 7F 1B 78 */ mr r31, r3
+/* 802E9BE0 002E5840 40 82 00 24 */ bne lbl_802E9C04
+/* 802E9BE4 002E5844 4B F8 4B 79 */ bl OSDisableInterrupts
+/* 802E9BE8 002E5848 3C 80 80 44 */ lis r4, lbl_804456C0@ha
+/* 802E9BEC 002E584C 7C 7E 1B 78 */ mr r30, r3
+/* 802E9BF0 002E5850 38 64 56 C0 */ addi r3, r4, lbl_804456C0@l
+/* 802E9BF4 002E5854 38 81 00 10 */ addi r4, r1, 0x10
+/* 802E9BF8 002E5858 4B EE 46 D9 */ bl strcpy
+/* 802E9BFC 002E585C 7F C3 F3 78 */ mr r3, r30
+/* 802E9C00 002E5860 4B F8 4B 85 */ bl OSRestoreInterrupts
+lbl_802E9C04:
+/* 802E9C04 002E5864 7F E3 FB 78 */ mr r3, r31
+lbl_802E9C08:
+/* 802E9C08 002E5868 80 01 00 64 */ lwz r0, 0x64(r1)
+/* 802E9C0C 002E586C 83 E1 00 5C */ lwz r31, 0x5c(r1)
+/* 802E9C10 002E5870 83 C1 00 58 */ lwz r30, 0x58(r1)
+/* 802E9C14 002E5874 83 A1 00 54 */ lwz r29, 0x54(r1)
+/* 802E9C18 002E5878 7C 08 03 A6 */ mtlr r0
+/* 802E9C1C 002E587C 38 21 00 60 */ addi r1, r1, 0x60
+/* 802E9C20 002E5880 4E 80 00 20 */ blr
+
+# either NANDChangeDirAsync or NANDPrivateChangeDirAsync
+.global func_802E9C24
+func_802E9C24:
+/* 802E9C24 002E5884 94 21 FE B0 */ stwu r1, -0x150(r1)
+/* 802E9C28 002E5888 7C 08 02 A6 */ mflr r0
+/* 802E9C2C 002E588C 90 01 01 54 */ stw r0, 0x154(r1)
+/* 802E9C30 002E5890 93 E1 01 4C */ stw r31, 0x14c(r1)
+/* 802E9C34 002E5894 93 C1 01 48 */ stw r30, 0x148(r1)
+/* 802E9C38 002E5898 80 0D AF 08 */ lwz r0, lbl_806401C8-_SDA_BASE_(r13)
+/* 802E9C3C 002E589C 2C 00 00 02 */ cmpwi r0, 2
+/* 802E9C40 002E58A0 41 82 00 0C */ beq lbl_802E9C4C
+/* 802E9C44 002E58A4 38 60 FF 80 */ li r3, -128
+/* 802E9C48 002E58A8 48 00 00 BC */ b lbl_802E9D04
+lbl_802E9C4C:
+/* 802E9C4C 002E58AC 90 85 00 04 */ stw r4, 4(r5)
+/* 802E9C50 002E58B0 7C A4 2B 78 */ mr r4, r5
+/* 802E9C54 002E58B4 38 A0 00 01 */ li r5, 1
+/* 802E9C58 002E58B8 38 C0 00 00 */ li r6, 0
+/* 802E9C5C 002E58BC 4B FF FD 35 */ bl nandChangeDir
+/* 802E9C60 002E58C0 3C 80 80 40 */ lis r4, lbl_803FDF20@ha
+/* 802E9C64 002E58C4 38 00 00 28 */ li r0, 0x28
+/* 802E9C68 002E58C8 38 84 DF 20 */ addi r4, r4, lbl_803FDF20@l
+/* 802E9C6C 002E58CC 7C 7F 1B 78 */ mr r31, r3
+/* 802E9C70 002E58D0 38 C1 00 04 */ addi r6, r1, 4
+/* 802E9C74 002E58D4 38 A4 FF FC */ addi r5, r4, -4
+/* 802E9C78 002E58D8 7C 09 03 A6 */ mtctr r0
+lbl_802E9C7C:
+/* 802E9C7C 002E58DC 80 85 00 04 */ lwz r4, 4(r5)
+/* 802E9C80 002E58E0 84 05 00 08 */ lwzu r0, 8(r5)
+/* 802E9C84 002E58E4 90 86 00 04 */ stw r4, 4(r6)
+/* 802E9C88 002E58E8 94 06 00 08 */ stwu r0, 8(r6)
+/* 802E9C8C 002E58EC 42 00 FF F0 */ bdnz lbl_802E9C7C
+/* 802E9C90 002E58F0 2C 03 00 00 */ cmpwi r3, 0
+/* 802E9C94 002E58F4 3B C0 00 00 */ li r30, 0
+/* 802E9C98 002E58F8 41 80 00 08 */ blt lbl_802E9CA0
+/* 802E9C9C 002E58FC 48 00 00 64 */ b lbl_802E9D00
+lbl_802E9CA0:
+/* 802E9CA0 002E5900 38 00 00 28 */ li r0, 0x28
+/* 802E9CA4 002E5904 38 81 00 08 */ addi r4, r1, 8
+/* 802E9CA8 002E5908 7C 09 03 A6 */ mtctr r0
+lbl_802E9CAC:
+/* 802E9CAC 002E590C 80 04 00 00 */ lwz r0, 0(r4)
+/* 802E9CB0 002E5910 7C 03 00 00 */ cmpw r3, r0
+/* 802E9CB4 002E5914 40 82 00 20 */ bne lbl_802E9CD4
+/* 802E9CB8 002E5918 7F E3 FB 78 */ mr r3, r31
+/* 802E9CBC 002E591C 4B FF F7 49 */ bl nandReportErrorCode
+/* 802E9CC0 002E5920 38 1E 00 01 */ addi r0, r30, 1
+/* 802E9CC4 002E5924 38 61 00 08 */ addi r3, r1, 8
+/* 802E9CC8 002E5928 54 00 10 3A */ slwi r0, r0, 2
+/* 802E9CCC 002E592C 7F E3 00 2E */ lwzx r31, r3, r0
+/* 802E9CD0 002E5930 48 00 00 30 */ b lbl_802E9D00
+lbl_802E9CD4:
+/* 802E9CD4 002E5934 38 84 00 08 */ addi r4, r4, 8
+/* 802E9CD8 002E5938 3B DE 00 02 */ addi r30, r30, 2
+/* 802E9CDC 002E593C 42 00 FF D0 */ bdnz lbl_802E9CAC
+/* 802E9CE0 002E5940 3C 60 80 44 */ lis r3, lbl_80445728@ha
+/* 802E9CE4 002E5944 7F E4 FB 78 */ mr r4, r31
+/* 802E9CE8 002E5948 38 63 57 28 */ addi r3, r3, lbl_80445728@l
+/* 802E9CEC 002E594C 4C C6 31 82 */ crclr 6
+/* 802E9CF0 002E5950 4B D1 DD D5 */ bl func_80007AC4
+/* 802E9CF4 002E5954 7F E3 FB 78 */ mr r3, r31
+/* 802E9CF8 002E5958 4B FF F7 0D */ bl nandReportErrorCode
+/* 802E9CFC 002E595C 3B E0 FF C0 */ li r31, -64
+lbl_802E9D00:
+/* 802E9D00 002E5960 7F E3 FB 78 */ mr r3, r31
+lbl_802E9D04:
+/* 802E9D04 002E5964 80 01 01 54 */ lwz r0, 0x154(r1)
+/* 802E9D08 002E5968 83 E1 01 4C */ lwz r31, 0x14c(r1)
+/* 802E9D0C 002E596C 83 C1 01 48 */ lwz r30, 0x148(r1)
+/* 802E9D10 002E5970 7C 08 03 A6 */ mtlr r0
+/* 802E9D14 002E5974 38 21 01 50 */ addi r1, r1, 0x150
+/* 802E9D18 002E5978 4E 80 00 20 */ blr
+
+nandChangeDirCallback:
+/* 802E9D1C 002E597C 94 21 FE A0 */ stwu r1, -0x160(r1)
+/* 802E9D20 002E5980 7C 08 02 A6 */ mflr r0
+/* 802E9D24 002E5984 2C 03 00 00 */ cmpwi r3, 0
+/* 802E9D28 002E5988 90 01 01 64 */ stw r0, 0x164(r1)
+/* 802E9D2C 002E598C 93 E1 01 5C */ stw r31, 0x15c(r1)
+/* 802E9D30 002E5990 93 C1 01 58 */ stw r30, 0x158(r1)
+/* 802E9D34 002E5994 93 A1 01 54 */ stw r29, 0x154(r1)
+/* 802E9D38 002E5998 7C 9D 23 78 */ mr r29, r4
+/* 802E9D3C 002E599C 93 81 01 50 */ stw r28, 0x150(r1)
+/* 802E9D40 002E59A0 7C 7C 1B 78 */ mr r28, r3
+/* 802E9D44 002E59A4 40 82 00 24 */ bne lbl_802E9D68
+/* 802E9D48 002E59A8 4B F8 4A 15 */ bl OSDisableInterrupts
+/* 802E9D4C 002E59AC 3C 80 80 44 */ lis r4, lbl_804456C0@ha
+/* 802E9D50 002E59B0 7C 7E 1B 78 */ mr r30, r3
+/* 802E9D54 002E59B4 38 64 56 C0 */ addi r3, r4, lbl_804456C0@l
+/* 802E9D58 002E59B8 38 9D 00 34 */ addi r4, r29, 0x34
+/* 802E9D5C 002E59BC 4B EE 45 75 */ bl strcpy
+/* 802E9D60 002E59C0 7F C3 F3 78 */ mr r3, r30
+/* 802E9D64 002E59C4 4B F8 4A 21 */ bl OSRestoreInterrupts
+lbl_802E9D68:
+/* 802E9D68 002E59C8 3C 60 80 40 */ lis r3, lbl_803FDF20@ha
+/* 802E9D6C 002E59CC 38 00 00 28 */ li r0, 0x28
+/* 802E9D70 002E59D0 38 63 DF 20 */ addi r3, r3, lbl_803FDF20@l
+/* 802E9D74 002E59D4 38 A1 00 04 */ addi r5, r1, 4
+/* 802E9D78 002E59D8 38 83 FF FC */ addi r4, r3, -4
+/* 802E9D7C 002E59DC 7C 09 03 A6 */ mtctr r0
+lbl_802E9D80:
+/* 802E9D80 002E59E0 80 64 00 04 */ lwz r3, 4(r4)
+/* 802E9D84 002E59E4 84 04 00 08 */ lwzu r0, 8(r4)
+/* 802E9D88 002E59E8 90 65 00 04 */ stw r3, 4(r5)
+/* 802E9D8C 002E59EC 94 05 00 08 */ stwu r0, 8(r5)
+/* 802E9D90 002E59F0 42 00 FF F0 */ bdnz lbl_802E9D80
+/* 802E9D94 002E59F4 2C 1C 00 00 */ cmpwi r28, 0
+/* 802E9D98 002E59F8 3B C0 00 00 */ li r30, 0
+/* 802E9D9C 002E59FC 38 60 00 00 */ li r3, 0
+/* 802E9DA0 002E5A00 41 80 00 08 */ blt lbl_802E9DA8
+/* 802E9DA4 002E5A04 48 00 00 60 */ b lbl_802E9E04
+lbl_802E9DA8:
+/* 802E9DA8 002E5A08 38 00 00 28 */ li r0, 0x28
+/* 802E9DAC 002E5A0C 3B E1 00 08 */ addi r31, r1, 8
+/* 802E9DB0 002E5A10 7C 09 03 A6 */ mtctr r0
+lbl_802E9DB4:
+/* 802E9DB4 002E5A14 7C 1F 18 2E */ lwzx r0, r31, r3
+/* 802E9DB8 002E5A18 7C 1C 00 00 */ cmpw r28, r0
+/* 802E9DBC 002E5A1C 40 82 00 1C */ bne lbl_802E9DD8
+/* 802E9DC0 002E5A20 7F 83 E3 78 */ mr r3, r28
+/* 802E9DC4 002E5A24 4B FF F6 41 */ bl nandReportErrorCode
+/* 802E9DC8 002E5A28 38 1E 00 01 */ addi r0, r30, 1
+/* 802E9DCC 002E5A2C 54 00 10 3A */ slwi r0, r0, 2
+/* 802E9DD0 002E5A30 7F 9F 00 2E */ lwzx r28, r31, r0
+/* 802E9DD4 002E5A34 48 00 00 30 */ b lbl_802E9E04
+lbl_802E9DD8:
+/* 802E9DD8 002E5A38 3B DE 00 02 */ addi r30, r30, 2
+/* 802E9DDC 002E5A3C 38 63 00 08 */ addi r3, r3, 8
+/* 802E9DE0 002E5A40 42 00 FF D4 */ bdnz lbl_802E9DB4
+/* 802E9DE4 002E5A44 3C 60 80 44 */ lis r3, lbl_80445728@ha
+/* 802E9DE8 002E5A48 7F 84 E3 78 */ mr r4, r28
+/* 802E9DEC 002E5A4C 38 63 57 28 */ addi r3, r3, lbl_80445728@l
+/* 802E9DF0 002E5A50 4C C6 31 82 */ crclr 6
+/* 802E9DF4 002E5A54 4B D1 DC D1 */ bl func_80007AC4
+/* 802E9DF8 002E5A58 7F 83 E3 78 */ mr r3, r28
+/* 802E9DFC 002E5A5C 4B FF F6 09 */ bl nandReportErrorCode
+/* 802E9E00 002E5A60 3B 80 FF C0 */ li r28, -64
+lbl_802E9E04:
+/* 802E9E04 002E5A64 81 9D 00 04 */ lwz r12, 4(r29)
+/* 802E9E08 002E5A68 7F 83 E3 78 */ mr r3, r28
+/* 802E9E0C 002E5A6C 7F A4 EB 78 */ mr r4, r29
+/* 802E9E10 002E5A70 7D 89 03 A6 */ mtctr r12
+/* 802E9E14 002E5A74 4E 80 04 21 */ bctrl
+/* 802E9E18 002E5A78 80 01 01 64 */ lwz r0, 0x164(r1)
+/* 802E9E1C 002E5A7C 83 E1 01 5C */ lwz r31, 0x15c(r1)
+/* 802E9E20 002E5A80 83 C1 01 58 */ lwz r30, 0x158(r1)
+/* 802E9E24 002E5A84 83 A1 01 54 */ lwz r29, 0x154(r1)
+/* 802E9E28 002E5A88 83 81 01 50 */ lwz r28, 0x150(r1)
+/* 802E9E2C 002E5A8C 7C 08 03 A6 */ mtlr r0
+/* 802E9E30 002E5A90 38 21 01 60 */ addi r1, r1, 0x160
+/* 802E9E34 002E5A94 4E 80 00 20 */ blr
+
+.global NANDGetCurrentDir
+NANDGetCurrentDir:
+/* 802E9E38 002E5A98 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802E9E3C 002E5A9C 7C 08 02 A6 */ mflr r0
+/* 802E9E40 002E5AA0 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802E9E44 002E5AA4 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802E9E48 002E5AA8 93 C1 00 08 */ stw r30, 8(r1)
+/* 802E9E4C 002E5AAC 7C 7E 1B 78 */ mr r30, r3
+/* 802E9E50 002E5AB0 80 0D AF 08 */ lwz r0, lbl_806401C8-_SDA_BASE_(r13)
+/* 802E9E54 002E5AB4 2C 00 00 02 */ cmpwi r0, 2
+/* 802E9E58 002E5AB8 40 82 00 0C */ bne lbl_802E9E64
+/* 802E9E5C 002E5ABC 38 00 00 01 */ li r0, 1
+/* 802E9E60 002E5AC0 48 00 00 08 */ b lbl_802E9E68
+lbl_802E9E64:
+/* 802E9E64 002E5AC4 38 00 00 00 */ li r0, 0
+lbl_802E9E68:
+/* 802E9E68 002E5AC8 2C 00 00 00 */ cmpwi r0, 0
+/* 802E9E6C 002E5ACC 40 82 00 0C */ bne lbl_802E9E78
+/* 802E9E70 002E5AD0 38 60 FF 80 */ li r3, -128
+/* 802E9E74 002E5AD4 48 00 00 28 */ b lbl_802E9E9C
+lbl_802E9E78:
+/* 802E9E78 002E5AD8 4B F8 48 E5 */ bl OSDisableInterrupts
+/* 802E9E7C 002E5ADC 3C 80 80 44 */ lis r4, lbl_804456C0@ha
+/* 802E9E80 002E5AE0 7C 7F 1B 78 */ mr r31, r3
+/* 802E9E84 002E5AE4 7F C3 F3 78 */ mr r3, r30
+/* 802E9E88 002E5AE8 38 84 56 C0 */ addi r4, r4, lbl_804456C0@l
+/* 802E9E8C 002E5AEC 4B EE 44 45 */ bl strcpy
+/* 802E9E90 002E5AF0 7F E3 FB 78 */ mr r3, r31
+/* 802E9E94 002E5AF4 4B F8 48 F1 */ bl OSRestoreInterrupts
+/* 802E9E98 002E5AF8 38 60 00 00 */ li r3, 0
+lbl_802E9E9C:
+/* 802E9E9C 002E5AFC 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802E9EA0 002E5B00 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802E9EA4 002E5B04 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802E9EA8 002E5B08 7C 08 03 A6 */ mtlr r0
+/* 802E9EAC 002E5B0C 38 21 00 10 */ addi r1, r1, 0x10
+/* 802E9EB0 002E5B10 4E 80 00 20 */ blr
+
+.global NANDGetHomeDir
+NANDGetHomeDir:
+/* 802E9EB4 002E5B14 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802E9EB8 002E5B18 7C 08 02 A6 */ mflr r0
+/* 802E9EBC 002E5B1C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802E9EC0 002E5B20 80 0D AF 08 */ lwz r0, lbl_806401C8-_SDA_BASE_(r13)
+/* 802E9EC4 002E5B24 2C 00 00 02 */ cmpwi r0, 2
+/* 802E9EC8 002E5B28 40 82 00 0C */ bne lbl_802E9ED4
+/* 802E9ECC 002E5B2C 38 00 00 01 */ li r0, 1
+/* 802E9ED0 002E5B30 48 00 00 08 */ b lbl_802E9ED8
+lbl_802E9ED4:
+/* 802E9ED4 002E5B34 38 00 00 00 */ li r0, 0
+lbl_802E9ED8:
+/* 802E9ED8 002E5B38 2C 00 00 00 */ cmpwi r0, 0
+/* 802E9EDC 002E5B3C 40 82 00 0C */ bne lbl_802E9EE8
+/* 802E9EE0 002E5B40 38 60 FF 80 */ li r3, -128
+/* 802E9EE4 002E5B44 48 00 00 14 */ b lbl_802E9EF8
+lbl_802E9EE8:
+/* 802E9EE8 002E5B48 3C 80 80 57 */ lis r4, lbl_80570E80@ha
+/* 802E9EEC 002E5B4C 38 84 0E 80 */ addi r4, r4, lbl_80570E80@l
+/* 802E9EF0 002E5B50 4B EE 43 E1 */ bl strcpy
+/* 802E9EF4 002E5B54 38 60 00 00 */ li r3, 0
+lbl_802E9EF8:
+/* 802E9EF8 002E5B58 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802E9EFC 002E5B5C 7C 08 03 A6 */ mtlr r0
+/* 802E9F00 002E5B60 38 21 00 10 */ addi r1, r1, 0x10
+/* 802E9F04 002E5B64 4E 80 00 20 */ blr
+
+.global nandCallback
+nandCallback:
+/* 802E9F08 002E5B68 94 21 FE A0 */ stwu r1, -0x160(r1)
+/* 802E9F0C 002E5B6C 7C 08 02 A6 */ mflr r0
+/* 802E9F10 002E5B70 3C A0 80 40 */ lis r5, lbl_803FDF20@ha
+/* 802E9F14 002E5B74 90 01 01 64 */ stw r0, 0x164(r1)
+/* 802E9F18 002E5B78 38 A5 DF 20 */ addi r5, r5, lbl_803FDF20@l
+/* 802E9F1C 002E5B7C 38 00 00 28 */ li r0, 0x28
+/* 802E9F20 002E5B80 38 C1 00 04 */ addi r6, r1, 4
+/* 802E9F24 002E5B84 93 E1 01 5C */ stw r31, 0x15c(r1)
+/* 802E9F28 002E5B88 38 A5 FF FC */ addi r5, r5, -4
+/* 802E9F2C 002E5B8C 93 C1 01 58 */ stw r30, 0x158(r1)
+/* 802E9F30 002E5B90 7C 9E 23 78 */ mr r30, r4
+/* 802E9F34 002E5B94 93 A1 01 54 */ stw r29, 0x154(r1)
+/* 802E9F38 002E5B98 7C 7D 1B 78 */ mr r29, r3
+/* 802E9F3C 002E5B9C 7C 09 03 A6 */ mtctr r0
+lbl_802E9F40:
+/* 802E9F40 002E5BA0 80 85 00 04 */ lwz r4, 4(r5)
+/* 802E9F44 002E5BA4 84 05 00 08 */ lwzu r0, 8(r5)
+/* 802E9F48 002E5BA8 90 86 00 04 */ stw r4, 4(r6)
+/* 802E9F4C 002E5BAC 94 06 00 08 */ stwu r0, 8(r6)
+/* 802E9F50 002E5BB0 42 00 FF F0 */ bdnz lbl_802E9F40
+/* 802E9F54 002E5BB4 2C 03 00 00 */ cmpwi r3, 0
+/* 802E9F58 002E5BB8 3B E0 00 00 */ li r31, 0
+/* 802E9F5C 002E5BBC 41 80 00 08 */ blt lbl_802E9F64
+/* 802E9F60 002E5BC0 48 00 00 64 */ b lbl_802E9FC4
+lbl_802E9F64:
+/* 802E9F64 002E5BC4 38 00 00 28 */ li r0, 0x28
+/* 802E9F68 002E5BC8 38 81 00 08 */ addi r4, r1, 8
+/* 802E9F6C 002E5BCC 7C 09 03 A6 */ mtctr r0
+lbl_802E9F70:
+/* 802E9F70 002E5BD0 80 04 00 00 */ lwz r0, 0(r4)
+/* 802E9F74 002E5BD4 7C 03 00 00 */ cmpw r3, r0
+/* 802E9F78 002E5BD8 40 82 00 20 */ bne lbl_802E9F98
+/* 802E9F7C 002E5BDC 7F A3 EB 78 */ mr r3, r29
+/* 802E9F80 002E5BE0 4B FF F4 85 */ bl nandReportErrorCode
+/* 802E9F84 002E5BE4 38 1F 00 01 */ addi r0, r31, 1
+/* 802E9F88 002E5BE8 38 61 00 08 */ addi r3, r1, 8
+/* 802E9F8C 002E5BEC 54 00 10 3A */ slwi r0, r0, 2
+/* 802E9F90 002E5BF0 7F A3 00 2E */ lwzx r29, r3, r0
+/* 802E9F94 002E5BF4 48 00 00 30 */ b lbl_802E9FC4
+lbl_802E9F98:
+/* 802E9F98 002E5BF8 38 84 00 08 */ addi r4, r4, 8
+/* 802E9F9C 002E5BFC 3B FF 00 02 */ addi r31, r31, 2
+/* 802E9FA0 002E5C00 42 00 FF D0 */ bdnz lbl_802E9F70
+/* 802E9FA4 002E5C04 3C 60 80 44 */ lis r3, lbl_80445728@ha
+/* 802E9FA8 002E5C08 7F A4 EB 78 */ mr r4, r29
+/* 802E9FAC 002E5C0C 38 63 57 28 */ addi r3, r3, lbl_80445728@l
+/* 802E9FB0 002E5C10 4C C6 31 82 */ crclr 6
+/* 802E9FB4 002E5C14 4B D1 DB 11 */ bl func_80007AC4
+/* 802E9FB8 002E5C18 7F A3 EB 78 */ mr r3, r29
+/* 802E9FBC 002E5C1C 4B FF F4 49 */ bl nandReportErrorCode
+/* 802E9FC0 002E5C20 3B A0 FF C0 */ li r29, -64
+lbl_802E9FC4:
+/* 802E9FC4 002E5C24 81 9E 00 04 */ lwz r12, 4(r30)
+/* 802E9FC8 002E5C28 7F A3 EB 78 */ mr r3, r29
+/* 802E9FCC 002E5C2C 7F C4 F3 78 */ mr r4, r30
+/* 802E9FD0 002E5C30 7D 89 03 A6 */ mtctr r12
+/* 802E9FD4 002E5C34 4E 80 04 21 */ bctrl
+/* 802E9FD8 002E5C38 80 01 01 64 */ lwz r0, 0x164(r1)
+/* 802E9FDC 002E5C3C 83 E1 01 5C */ lwz r31, 0x15c(r1)
+/* 802E9FE0 002E5C40 83 C1 01 58 */ lwz r30, 0x158(r1)
+/* 802E9FE4 002E5C44 83 A1 01 54 */ lwz r29, 0x154(r1)
+/* 802E9FE8 002E5C48 7C 08 03 A6 */ mtlr r0
+/* 802E9FEC 002E5C4C 38 21 01 60 */ addi r1, r1, 0x160
+/* 802E9FF0 002E5C50 4E 80 00 20 */ blr
+
+.global nandGetType
+nandGetType:
+/* 802E9FF4 002E5C54 94 21 FF 90 */ stwu r1, -0x70(r1)
+/* 802E9FF8 002E5C58 7C 08 02 A6 */ mflr r0
+/* 802E9FFC 002E5C5C 90 01 00 74 */ stw r0, 0x74(r1)
+/* 802EA000 002E5C60 39 61 00 70 */ addi r11, r1, 0x70
+/* 802EA004 002E5C64 4B ED D1 25 */ bl _savegpr_27
+/* 802EA008 002E5C68 7C 7B 1B 78 */ mr r27, r3
+/* 802EA00C 002E5C6C 7C 9E 23 78 */ mr r30, r4
+/* 802EA010 002E5C70 7C BC 2B 78 */ mr r28, r5
+/* 802EA014 002E5C74 7C DD 33 78 */ mr r29, r6
+/* 802EA018 002E5C78 7C FF 3B 78 */ mr r31, r7
+/* 802EA01C 002E5C7C 4B ED CB 49 */ bl strlen
+/* 802EA020 002E5C80 2C 03 00 00 */ cmpwi r3, 0
+/* 802EA024 002E5C84 40 82 00 0C */ bne lbl_802EA030
+/* 802EA028 002E5C88 38 60 FF 9B */ li r3, -101
+/* 802EA02C 002E5C8C 48 00 02 84 */ b lbl_802EA2B0
+lbl_802EA030:
+/* 802EA030 002E5C90 2C 1D 00 00 */ cmpwi r29, 0
+/* 802EA034 002E5C94 41 82 01 08 */ beq lbl_802EA13C
+/* 802EA038 002E5C98 7F 63 DB 78 */ mr r3, r27
+/* 802EA03C 002E5C9C 4B ED CB 29 */ bl strlen
+/* 802EA040 002E5CA0 2C 03 00 00 */ cmpwi r3, 0
+/* 802EA044 002E5CA4 40 82 00 14 */ bne lbl_802EA058
+/* 802EA048 002E5CA8 38 7C 00 34 */ addi r3, r28, 0x34
+/* 802EA04C 002E5CAC 38 8D 8A 88 */ addi r4, r13, lbl_8063DD48-_SDA_BASE_
+/* 802EA050 002E5CB0 4B EE 42 81 */ bl strcpy
+/* 802EA054 002E5CB4 48 00 00 78 */ b lbl_802EA0CC
+lbl_802EA058:
+/* 802EA058 002E5CB8 88 1B 00 00 */ lbz r0, 0(r27)
+/* 802EA05C 002E5CBC 2C 00 00 2F */ cmpwi r0, 0x2f
+/* 802EA060 002E5CC0 40 82 00 0C */ bne lbl_802EA06C
+/* 802EA064 002E5CC4 38 00 00 00 */ li r0, 0
+/* 802EA068 002E5CC8 48 00 00 08 */ b lbl_802EA070
+lbl_802EA06C:
+/* 802EA06C 002E5CCC 38 00 00 01 */ li r0, 1
+lbl_802EA070:
+/* 802EA070 002E5CD0 2C 00 00 00 */ cmpwi r0, 0
+/* 802EA074 002E5CD4 41 82 00 1C */ beq lbl_802EA090
+/* 802EA078 002E5CD8 3C 80 80 44 */ lis r4, lbl_804456C0@ha
+/* 802EA07C 002E5CDC 7F 65 DB 78 */ mr r5, r27
+/* 802EA080 002E5CE0 38 7C 00 34 */ addi r3, r28, 0x34
+/* 802EA084 002E5CE4 38 84 56 C0 */ addi r4, r4, lbl_804456C0@l
+/* 802EA088 002E5CE8 4B FF F1 A1 */ bl nandConvertPath
+/* 802EA08C 002E5CEC 48 00 00 40 */ b lbl_802EA0CC
+lbl_802EA090:
+/* 802EA090 002E5CF0 7F 64 DB 78 */ mr r4, r27
+/* 802EA094 002E5CF4 38 7C 00 34 */ addi r3, r28, 0x34
+/* 802EA098 002E5CF8 4B EE 42 39 */ bl strcpy
+/* 802EA09C 002E5CFC 38 7C 00 34 */ addi r3, r28, 0x34
+/* 802EA0A0 002E5D00 4B ED CA C5 */ bl strlen
+/* 802EA0A4 002E5D04 2C 03 00 00 */ cmpwi r3, 0
+/* 802EA0A8 002E5D08 41 82 00 24 */ beq lbl_802EA0CC
+/* 802EA0AC 002E5D0C 7C 83 E2 14 */ add r4, r3, r28
+/* 802EA0B0 002E5D10 88 04 00 33 */ lbz r0, 0x33(r4)
+/* 802EA0B4 002E5D14 2C 00 00 2F */ cmpwi r0, 0x2f
+/* 802EA0B8 002E5D18 40 82 00 14 */ bne lbl_802EA0CC
+/* 802EA0BC 002E5D1C 34 03 FF FF */ addic. r0, r3, -1
+/* 802EA0C0 002E5D20 41 82 00 0C */ beq lbl_802EA0CC
+/* 802EA0C4 002E5D24 38 00 00 00 */ li r0, 0
+/* 802EA0C8 002E5D28 98 04 00 33 */ stb r0, 0x33(r4)
+lbl_802EA0CC:
+/* 802EA0CC 002E5D2C 2C 1F 00 00 */ cmpwi r31, 0
+/* 802EA0D0 002E5D30 40 82 00 48 */ bne lbl_802EA118
+/* 802EA0D4 002E5D34 3C 80 80 44 */ lis r4, lbl_8044571C@ha
+/* 802EA0D8 002E5D38 38 7C 00 34 */ addi r3, r28, 0x34
+/* 802EA0DC 002E5D3C 38 84 57 1C */ addi r4, r4, lbl_8044571C@l
+/* 802EA0E0 002E5D40 38 A0 00 09 */ li r5, 9
+/* 802EA0E4 002E5D44 4B EE 44 85 */ bl strncmp
+/* 802EA0E8 002E5D48 2C 03 00 00 */ cmpwi r3, 0
+/* 802EA0EC 002E5D4C 40 82 00 18 */ bne lbl_802EA104
+/* 802EA0F0 002E5D50 88 1C 00 3D */ lbz r0, 0x3d(r28)
+/* 802EA0F4 002E5D54 7C 00 07 75 */ extsb. r0, r0
+/* 802EA0F8 002E5D58 41 82 00 0C */ beq lbl_802EA104
+/* 802EA0FC 002E5D5C 38 00 00 01 */ li r0, 1
+/* 802EA100 002E5D60 48 00 00 08 */ b lbl_802EA108
+lbl_802EA104:
+/* 802EA104 002E5D64 38 00 00 00 */ li r0, 0
+lbl_802EA108:
+/* 802EA108 002E5D68 2C 00 00 00 */ cmpwi r0, 0
+/* 802EA10C 002E5D6C 41 82 00 0C */ beq lbl_802EA118
+/* 802EA110 002E5D70 38 60 FF 9A */ li r3, -102
+/* 802EA114 002E5D74 48 00 01 9C */ b lbl_802EA2B0
+lbl_802EA118:
+/* 802EA118 002E5D78 3C C0 80 2F */ lis r6, nandGetTypeCallback@ha
+/* 802EA11C 002E5D7C 93 DC 00 88 */ stw r30, 0x88(r28)
+/* 802EA120 002E5D80 7F 87 E3 78 */ mr r7, r28
+/* 802EA124 002E5D84 38 7C 00 34 */ addi r3, r28, 0x34
+/* 802EA128 002E5D88 38 BC 00 30 */ addi r5, r28, 0x30
+/* 802EA12C 002E5D8C 38 C6 A3 C0 */ addi r6, r6, nandGetTypeCallback@l
+/* 802EA130 002E5D90 38 80 00 00 */ li r4, 0
+/* 802EA134 002E5D94 4B FB AB 85 */ bl ISFS_ReadDirAsync
+/* 802EA138 002E5D98 48 00 01 78 */ b lbl_802EA2B0
+lbl_802EA13C:
+/* 802EA13C 002E5D9C 38 00 00 00 */ li r0, 0
+/* 802EA140 002E5DA0 7F 63 DB 78 */ mr r3, r27
+/* 802EA144 002E5DA4 90 01 00 10 */ stw r0, 0x10(r1)
+/* 802EA148 002E5DA8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802EA14C 002E5DAC 90 01 00 18 */ stw r0, 0x18(r1)
+/* 802EA150 002E5DB0 90 01 00 1C */ stw r0, 0x1c(r1)
+/* 802EA154 002E5DB4 90 01 00 20 */ stw r0, 0x20(r1)
+/* 802EA158 002E5DB8 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802EA15C 002E5DBC 90 01 00 28 */ stw r0, 0x28(r1)
+/* 802EA160 002E5DC0 90 01 00 2C */ stw r0, 0x2c(r1)
+/* 802EA164 002E5DC4 90 01 00 30 */ stw r0, 0x30(r1)
+/* 802EA168 002E5DC8 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802EA16C 002E5DCC 90 01 00 38 */ stw r0, 0x38(r1)
+/* 802EA170 002E5DD0 90 01 00 3C */ stw r0, 0x3c(r1)
+/* 802EA174 002E5DD4 90 01 00 40 */ stw r0, 0x40(r1)
+/* 802EA178 002E5DD8 90 01 00 44 */ stw r0, 0x44(r1)
+/* 802EA17C 002E5DDC 90 01 00 48 */ stw r0, 0x48(r1)
+/* 802EA180 002E5DE0 90 01 00 4C */ stw r0, 0x4c(r1)
+/* 802EA184 002E5DE4 4B ED C9 E1 */ bl strlen
+/* 802EA188 002E5DE8 2C 03 00 00 */ cmpwi r3, 0
+/* 802EA18C 002E5DEC 40 82 00 14 */ bne lbl_802EA1A0
+/* 802EA190 002E5DF0 38 61 00 10 */ addi r3, r1, 0x10
+/* 802EA194 002E5DF4 38 8D 8A 88 */ addi r4, r13, lbl_8063DD48-_SDA_BASE_
+/* 802EA198 002E5DF8 4B EE 41 39 */ bl strcpy
+/* 802EA19C 002E5DFC 48 00 00 7C */ b lbl_802EA218
+lbl_802EA1A0:
+/* 802EA1A0 002E5E00 88 1B 00 00 */ lbz r0, 0(r27)
+/* 802EA1A4 002E5E04 2C 00 00 2F */ cmpwi r0, 0x2f
+/* 802EA1A8 002E5E08 40 82 00 0C */ bne lbl_802EA1B4
+/* 802EA1AC 002E5E0C 38 00 00 00 */ li r0, 0
+/* 802EA1B0 002E5E10 48 00 00 08 */ b lbl_802EA1B8
+lbl_802EA1B4:
+/* 802EA1B4 002E5E14 38 00 00 01 */ li r0, 1
+lbl_802EA1B8:
+/* 802EA1B8 002E5E18 2C 00 00 00 */ cmpwi r0, 0
+/* 802EA1BC 002E5E1C 41 82 00 1C */ beq lbl_802EA1D8
+/* 802EA1C0 002E5E20 3C 80 80 44 */ lis r4, lbl_804456C0@ha
+/* 802EA1C4 002E5E24 7F 65 DB 78 */ mr r5, r27
+/* 802EA1C8 002E5E28 38 61 00 10 */ addi r3, r1, 0x10
+/* 802EA1CC 002E5E2C 38 84 56 C0 */ addi r4, r4, lbl_804456C0@l
+/* 802EA1D0 002E5E30 4B FF F0 59 */ bl nandConvertPath
+/* 802EA1D4 002E5E34 48 00 00 44 */ b lbl_802EA218
+lbl_802EA1D8:
+/* 802EA1D8 002E5E38 7F 64 DB 78 */ mr r4, r27
+/* 802EA1DC 002E5E3C 38 61 00 10 */ addi r3, r1, 0x10
+/* 802EA1E0 002E5E40 4B EE 40 F1 */ bl strcpy
+/* 802EA1E4 002E5E44 38 61 00 10 */ addi r3, r1, 0x10
+/* 802EA1E8 002E5E48 4B ED C9 7D */ bl strlen
+/* 802EA1EC 002E5E4C 2C 03 00 00 */ cmpwi r3, 0
+/* 802EA1F0 002E5E50 41 82 00 28 */ beq lbl_802EA218
+/* 802EA1F4 002E5E54 38 01 00 10 */ addi r0, r1, 0x10
+/* 802EA1F8 002E5E58 7C 83 02 14 */ add r4, r3, r0
+/* 802EA1FC 002E5E5C 88 04 FF FF */ lbz r0, -1(r4)
+/* 802EA200 002E5E60 2C 00 00 2F */ cmpwi r0, 0x2f
+/* 802EA204 002E5E64 40 82 00 14 */ bne lbl_802EA218
+/* 802EA208 002E5E68 34 03 FF FF */ addic. r0, r3, -1
+/* 802EA20C 002E5E6C 41 82 00 0C */ beq lbl_802EA218
+/* 802EA210 002E5E70 38 00 00 00 */ li r0, 0
+/* 802EA214 002E5E74 98 04 FF FF */ stb r0, -1(r4)
+lbl_802EA218:
+/* 802EA218 002E5E78 2C 1F 00 00 */ cmpwi r31, 0
+/* 802EA21C 002E5E7C 40 82 00 48 */ bne lbl_802EA264
+/* 802EA220 002E5E80 3C 80 80 44 */ lis r4, lbl_8044571C@ha
+/* 802EA224 002E5E84 38 61 00 10 */ addi r3, r1, 0x10
+/* 802EA228 002E5E88 38 84 57 1C */ addi r4, r4, lbl_8044571C@l
+/* 802EA22C 002E5E8C 38 A0 00 09 */ li r5, 9
+/* 802EA230 002E5E90 4B EE 43 39 */ bl strncmp
+/* 802EA234 002E5E94 2C 03 00 00 */ cmpwi r3, 0
+/* 802EA238 002E5E98 40 82 00 18 */ bne lbl_802EA250
+/* 802EA23C 002E5E9C 88 01 00 19 */ lbz r0, 0x19(r1)
+/* 802EA240 002E5EA0 7C 00 07 75 */ extsb. r0, r0
+/* 802EA244 002E5EA4 41 82 00 0C */ beq lbl_802EA250
+/* 802EA248 002E5EA8 38 00 00 01 */ li r0, 1
+/* 802EA24C 002E5EAC 48 00 00 08 */ b lbl_802EA254
+lbl_802EA250:
+/* 802EA250 002E5EB0 38 00 00 00 */ li r0, 0
+lbl_802EA254:
+/* 802EA254 002E5EB4 2C 00 00 00 */ cmpwi r0, 0
+/* 802EA258 002E5EB8 41 82 00 0C */ beq lbl_802EA264
+/* 802EA25C 002E5EBC 38 60 FF 9A */ li r3, -102
+/* 802EA260 002E5EC0 48 00 00 50 */ b lbl_802EA2B0
+lbl_802EA264:
+/* 802EA264 002E5EC4 38 00 00 00 */ li r0, 0
+/* 802EA268 002E5EC8 38 61 00 10 */ addi r3, r1, 0x10
+/* 802EA26C 002E5ECC 90 01 00 08 */ stw r0, 8(r1)
+/* 802EA270 002E5ED0 38 A1 00 08 */ addi r5, r1, 8
+/* 802EA274 002E5ED4 38 80 00 00 */ li r4, 0
+/* 802EA278 002E5ED8 4B FB A8 ED */ bl ISFS_ReadDir
+/* 802EA27C 002E5EDC 2C 03 00 00 */ cmpwi r3, 0
+/* 802EA280 002E5EE0 41 82 00 0C */ beq lbl_802EA28C
+/* 802EA284 002E5EE4 2C 03 FF 9A */ cmpwi r3, -102
+/* 802EA288 002E5EE8 40 82 00 14 */ bne lbl_802EA29C
+lbl_802EA28C:
+/* 802EA28C 002E5EEC 38 00 00 02 */ li r0, 2
+/* 802EA290 002E5EF0 38 60 00 00 */ li r3, 0
+/* 802EA294 002E5EF4 98 1E 00 00 */ stb r0, 0(r30)
+/* 802EA298 002E5EF8 48 00 00 18 */ b lbl_802EA2B0
+lbl_802EA29C:
+/* 802EA29C 002E5EFC 2C 03 FF 9B */ cmpwi r3, -101
+/* 802EA2A0 002E5F00 40 82 00 10 */ bne lbl_802EA2B0
+/* 802EA2A4 002E5F04 38 00 00 01 */ li r0, 1
+/* 802EA2A8 002E5F08 38 60 00 00 */ li r3, 0
+/* 802EA2AC 002E5F0C 98 1E 00 00 */ stb r0, 0(r30)
+lbl_802EA2B0:
+/* 802EA2B0 002E5F10 39 61 00 70 */ addi r11, r1, 0x70
+/* 802EA2B4 002E5F14 4B ED CE C1 */ bl _restgpr_27
+/* 802EA2B8 002E5F18 80 01 00 74 */ lwz r0, 0x74(r1)
+/* 802EA2BC 002E5F1C 7C 08 03 A6 */ mtlr r0
+/* 802EA2C0 002E5F20 38 21 00 70 */ addi r1, r1, 0x70
+/* 802EA2C4 002E5F24 4E 80 00 20 */ blr
+
+.global NANDPrivateGetTypeAsync
+NANDPrivateGetTypeAsync:
+/* 802EA2C8 002E5F28 94 21 FE B0 */ stwu r1, -0x150(r1)
+/* 802EA2CC 002E5F2C 7C 08 02 A6 */ mflr r0
+/* 802EA2D0 002E5F30 90 01 01 54 */ stw r0, 0x154(r1)
+/* 802EA2D4 002E5F34 93 E1 01 4C */ stw r31, 0x14c(r1)
+/* 802EA2D8 002E5F38 93 C1 01 48 */ stw r30, 0x148(r1)
+/* 802EA2DC 002E5F3C 80 0D AF 08 */ lwz r0, lbl_806401C8-_SDA_BASE_(r13)
+/* 802EA2E0 002E5F40 2C 00 00 02 */ cmpwi r0, 2
+/* 802EA2E4 002E5F44 41 82 00 0C */ beq lbl_802EA2F0
+/* 802EA2E8 002E5F48 38 60 FF 80 */ li r3, -128
+/* 802EA2EC 002E5F4C 48 00 00 BC */ b lbl_802EA3A8
+lbl_802EA2F0:
+/* 802EA2F0 002E5F50 90 A6 00 04 */ stw r5, 4(r6)
+/* 802EA2F4 002E5F54 7C C5 33 78 */ mr r5, r6
+/* 802EA2F8 002E5F58 38 C0 00 01 */ li r6, 1
+/* 802EA2FC 002E5F5C 38 E0 00 01 */ li r7, 1
+/* 802EA300 002E5F60 4B FF FC F5 */ bl nandGetType
+/* 802EA304 002E5F64 3C 80 80 40 */ lis r4, lbl_803FDF20@ha
+/* 802EA308 002E5F68 38 00 00 28 */ li r0, 0x28
+/* 802EA30C 002E5F6C 38 84 DF 20 */ addi r4, r4, lbl_803FDF20@l
+/* 802EA310 002E5F70 7C 7F 1B 78 */ mr r31, r3
+/* 802EA314 002E5F74 38 C1 00 04 */ addi r6, r1, 4
+/* 802EA318 002E5F78 38 A4 FF FC */ addi r5, r4, -4
+/* 802EA31C 002E5F7C 7C 09 03 A6 */ mtctr r0
+lbl_802EA320:
+/* 802EA320 002E5F80 80 85 00 04 */ lwz r4, 4(r5)
+/* 802EA324 002E5F84 84 05 00 08 */ lwzu r0, 8(r5)
+/* 802EA328 002E5F88 90 86 00 04 */ stw r4, 4(r6)
+/* 802EA32C 002E5F8C 94 06 00 08 */ stwu r0, 8(r6)
+/* 802EA330 002E5F90 42 00 FF F0 */ bdnz lbl_802EA320
+/* 802EA334 002E5F94 2C 03 00 00 */ cmpwi r3, 0
+/* 802EA338 002E5F98 3B C0 00 00 */ li r30, 0
+/* 802EA33C 002E5F9C 41 80 00 08 */ blt lbl_802EA344
+/* 802EA340 002E5FA0 48 00 00 64 */ b lbl_802EA3A4
+lbl_802EA344:
+/* 802EA344 002E5FA4 38 00 00 28 */ li r0, 0x28
+/* 802EA348 002E5FA8 38 81 00 08 */ addi r4, r1, 8
+/* 802EA34C 002E5FAC 7C 09 03 A6 */ mtctr r0
+lbl_802EA350:
+/* 802EA350 002E5FB0 80 04 00 00 */ lwz r0, 0(r4)
+/* 802EA354 002E5FB4 7C 03 00 00 */ cmpw r3, r0
+/* 802EA358 002E5FB8 40 82 00 20 */ bne lbl_802EA378
+/* 802EA35C 002E5FBC 7F E3 FB 78 */ mr r3, r31
+/* 802EA360 002E5FC0 4B FF F0 A5 */ bl nandReportErrorCode
+/* 802EA364 002E5FC4 38 1E 00 01 */ addi r0, r30, 1
+/* 802EA368 002E5FC8 38 61 00 08 */ addi r3, r1, 8
+/* 802EA36C 002E5FCC 54 00 10 3A */ slwi r0, r0, 2
+/* 802EA370 002E5FD0 7F E3 00 2E */ lwzx r31, r3, r0
+/* 802EA374 002E5FD4 48 00 00 30 */ b lbl_802EA3A4
+lbl_802EA378:
+/* 802EA378 002E5FD8 38 84 00 08 */ addi r4, r4, 8
+/* 802EA37C 002E5FDC 3B DE 00 02 */ addi r30, r30, 2
+/* 802EA380 002E5FE0 42 00 FF D0 */ bdnz lbl_802EA350
+/* 802EA384 002E5FE4 3C 60 80 44 */ lis r3, lbl_80445728@ha
+/* 802EA388 002E5FE8 7F E4 FB 78 */ mr r4, r31
+/* 802EA38C 002E5FEC 38 63 57 28 */ addi r3, r3, lbl_80445728@l
+/* 802EA390 002E5FF0 4C C6 31 82 */ crclr 6
+/* 802EA394 002E5FF4 4B D1 D7 31 */ bl func_80007AC4
+/* 802EA398 002E5FF8 7F E3 FB 78 */ mr r3, r31
+/* 802EA39C 002E5FFC 4B FF F0 69 */ bl nandReportErrorCode
+/* 802EA3A0 002E6000 3B E0 FF C0 */ li r31, -64
+lbl_802EA3A4:
+/* 802EA3A4 002E6004 7F E3 FB 78 */ mr r3, r31
+lbl_802EA3A8:
+/* 802EA3A8 002E6008 80 01 01 54 */ lwz r0, 0x154(r1)
+/* 802EA3AC 002E600C 83 E1 01 4C */ lwz r31, 0x14c(r1)
+/* 802EA3B0 002E6010 83 C1 01 48 */ lwz r30, 0x148(r1)
+/* 802EA3B4 002E6014 7C 08 03 A6 */ mtlr r0
+/* 802EA3B8 002E6018 38 21 01 50 */ addi r1, r1, 0x150
+/* 802EA3BC 002E601C 4E 80 00 20 */ blr
+
+nandGetTypeCallback:
+/* 802EA3C0 002E6020 94 21 FE A0 */ stwu r1, -0x160(r1)
+/* 802EA3C4 002E6024 7C 08 02 A6 */ mflr r0
+/* 802EA3C8 002E6028 2C 03 00 00 */ cmpwi r3, 0
+/* 802EA3CC 002E602C 90 01 01 64 */ stw r0, 0x164(r1)
+/* 802EA3D0 002E6030 93 E1 01 5C */ stw r31, 0x15c(r1)
+/* 802EA3D4 002E6034 7C 9F 23 78 */ mr r31, r4
+/* 802EA3D8 002E6038 93 C1 01 58 */ stw r30, 0x158(r1)
+/* 802EA3DC 002E603C 93 A1 01 54 */ stw r29, 0x154(r1)
+/* 802EA3E0 002E6040 7C 7D 1B 78 */ mr r29, r3
+/* 802EA3E4 002E6044 41 82 00 0C */ beq lbl_802EA3F0
+/* 802EA3E8 002E6048 2C 03 FF 9A */ cmpwi r3, -102
+/* 802EA3EC 002E604C 40 82 00 18 */ bne lbl_802EA404
+lbl_802EA3F0:
+/* 802EA3F0 002E6050 80 64 00 88 */ lwz r3, 0x88(r4)
+/* 802EA3F4 002E6054 38 00 00 02 */ li r0, 2
+/* 802EA3F8 002E6058 3B A0 00 00 */ li r29, 0
+/* 802EA3FC 002E605C 98 03 00 00 */ stb r0, 0(r3)
+/* 802EA400 002E6060 48 00 00 1C */ b lbl_802EA41C
+lbl_802EA404:
+/* 802EA404 002E6064 2C 03 FF 9B */ cmpwi r3, -101
+/* 802EA408 002E6068 40 82 00 14 */ bne lbl_802EA41C
+/* 802EA40C 002E606C 80 64 00 88 */ lwz r3, 0x88(r4)
+/* 802EA410 002E6070 38 00 00 01 */ li r0, 1
+/* 802EA414 002E6074 3B A0 00 00 */ li r29, 0
+/* 802EA418 002E6078 98 03 00 00 */ stb r0, 0(r3)
+lbl_802EA41C:
+/* 802EA41C 002E607C 3C 60 80 40 */ lis r3, lbl_803FDF20@ha
+/* 802EA420 002E6080 38 00 00 28 */ li r0, 0x28
+/* 802EA424 002E6084 38 63 DF 20 */ addi r3, r3, lbl_803FDF20@l
+/* 802EA428 002E6088 38 A1 00 04 */ addi r5, r1, 4
+/* 802EA42C 002E608C 38 83 FF FC */ addi r4, r3, -4
+/* 802EA430 002E6090 7C 09 03 A6 */ mtctr r0
+lbl_802EA434:
+/* 802EA434 002E6094 80 64 00 04 */ lwz r3, 4(r4)
+/* 802EA438 002E6098 84 04 00 08 */ lwzu r0, 8(r4)
+/* 802EA43C 002E609C 90 65 00 04 */ stw r3, 4(r5)
+/* 802EA440 002E60A0 94 05 00 08 */ stwu r0, 8(r5)
+/* 802EA444 002E60A4 42 00 FF F0 */ bdnz lbl_802EA434
+/* 802EA448 002E60A8 2C 1D 00 00 */ cmpwi r29, 0
+/* 802EA44C 002E60AC 3B C0 00 00 */ li r30, 0
+/* 802EA450 002E60B0 41 80 00 08 */ blt lbl_802EA458
+/* 802EA454 002E60B4 48 00 00 64 */ b lbl_802EA4B8
+lbl_802EA458:
+/* 802EA458 002E60B8 38 00 00 28 */ li r0, 0x28
+/* 802EA45C 002E60BC 38 61 00 08 */ addi r3, r1, 8
+/* 802EA460 002E60C0 7C 09 03 A6 */ mtctr r0
+lbl_802EA464:
+/* 802EA464 002E60C4 80 03 00 00 */ lwz r0, 0(r3)
+/* 802EA468 002E60C8 7C 1D 00 00 */ cmpw r29, r0
+/* 802EA46C 002E60CC 40 82 00 20 */ bne lbl_802EA48C
+/* 802EA470 002E60D0 7F A3 EB 78 */ mr r3, r29
+/* 802EA474 002E60D4 4B FF EF 91 */ bl nandReportErrorCode
+/* 802EA478 002E60D8 38 1E 00 01 */ addi r0, r30, 1
+/* 802EA47C 002E60DC 38 61 00 08 */ addi r3, r1, 8
+/* 802EA480 002E60E0 54 00 10 3A */ slwi r0, r0, 2
+/* 802EA484 002E60E4 7F A3 00 2E */ lwzx r29, r3, r0
+/* 802EA488 002E60E8 48 00 00 30 */ b lbl_802EA4B8
+lbl_802EA48C:
+/* 802EA48C 002E60EC 38 63 00 08 */ addi r3, r3, 8
+/* 802EA490 002E60F0 3B DE 00 02 */ addi r30, r30, 2
+/* 802EA494 002E60F4 42 00 FF D0 */ bdnz lbl_802EA464
+/* 802EA498 002E60F8 3C 60 80 44 */ lis r3, lbl_80445728@ha
+/* 802EA49C 002E60FC 7F A4 EB 78 */ mr r4, r29
+/* 802EA4A0 002E6100 38 63 57 28 */ addi r3, r3, lbl_80445728@l
+/* 802EA4A4 002E6104 4C C6 31 82 */ crclr 6
+/* 802EA4A8 002E6108 4B D1 D6 1D */ bl func_80007AC4
+/* 802EA4AC 002E610C 7F A3 EB 78 */ mr r3, r29
+/* 802EA4B0 002E6110 4B FF EF 55 */ bl nandReportErrorCode
+/* 802EA4B4 002E6114 3B A0 FF C0 */ li r29, -64
+lbl_802EA4B8:
+/* 802EA4B8 002E6118 81 9F 00 04 */ lwz r12, 4(r31)
+/* 802EA4BC 002E611C 7F A3 EB 78 */ mr r3, r29
+/* 802EA4C0 002E6120 7F E4 FB 78 */ mr r4, r31
+/* 802EA4C4 002E6124 7D 89 03 A6 */ mtctr r12
+/* 802EA4C8 002E6128 4E 80 04 21 */ bctrl
+/* 802EA4CC 002E612C 80 01 01 64 */ lwz r0, 0x164(r1)
+/* 802EA4D0 002E6130 83 E1 01 5C */ lwz r31, 0x15c(r1)
+/* 802EA4D4 002E6134 83 C1 01 58 */ lwz r30, 0x158(r1)
+/* 802EA4D8 002E6138 83 A1 01 54 */ lwz r29, 0x154(r1)
+/* 802EA4DC 002E613C 7C 08 03 A6 */ mtlr r0
+/* 802EA4E0 002E6140 38 21 01 60 */ addi r1, r1, 0x160
+/* 802EA4E4 002E6144 4E 80 00 20 */ blr
+
+.global nandGetHomeDir
+nandGetHomeDir:
+/* 802EA4E8 002E6148 3C 60 80 57 */ lis r3, lbl_80570E80@ha
+/* 802EA4EC 002E614C 38 63 0E 80 */ addi r3, r3, lbl_80570E80@l
+/* 802EA4F0 002E6150 4E 80 00 20 */ blr
+
+.global NANDInitBanner
+NANDInitBanner:
+/* 802EA4F4 002E6154 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802EA4F8 002E6158 7C 08 02 A6 */ mflr r0
+/* 802EA4FC 002E615C 3C E0 00 01 */ lis r7, 0x0000F0A0@ha
+/* 802EA500 002E6160 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802EA504 002E6164 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802EA508 002E6168 7C DF 33 78 */ mr r31, r6
+/* 802EA50C 002E616C 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802EA510 002E6170 7C BE 2B 78 */ mr r30, r5
+/* 802EA514 002E6174 38 A7 F0 A0 */ addi r5, r7, 0x0000F0A0@l
+/* 802EA518 002E6178 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802EA51C 002E617C 7C 9D 23 78 */ mr r29, r4
+/* 802EA520 002E6180 38 80 00 00 */ li r4, 0
+/* 802EA524 002E6184 93 81 00 10 */ stw r28, 0x10(r1)
+/* 802EA528 002E6188 7C 7C 1B 78 */ mr r28, r3
+/* 802EA52C 002E618C 4B D1 9B D9 */ bl memset
+/* 802EA530 002E6190 3C 60 57 49 */ lis r3, 0x5749424E@ha
+/* 802EA534 002E6194 93 BC 00 04 */ stw r29, 4(r28)
+/* 802EA538 002E6198 38 03 42 4E */ addi r0, r3, 0x5749424E@l
+/* 802EA53C 002E619C 38 8D 8A A8 */ addi r4, r13, lbl_8063DD68-_SDA_BASE_
+/* 802EA540 002E61A0 90 1C 00 00 */ stw r0, 0(r28)
+/* 802EA544 002E61A4 7F C3 F3 78 */ mr r3, r30
+/* 802EA548 002E61A8 4B EE 62 E9 */ bl wcscmp
+/* 802EA54C 002E61AC 2C 03 00 00 */ cmpwi r3, 0
+/* 802EA550 002E61B0 40 82 00 18 */ bne lbl_802EA568
+/* 802EA554 002E61B4 38 7C 00 20 */ addi r3, r28, 0x20
+/* 802EA558 002E61B8 38 8D 8A AC */ addi r4, r13, lbl_8063DD6C-_SDA_BASE_
+/* 802EA55C 002E61BC 38 A0 00 20 */ li r5, 0x20
+/* 802EA560 002E61C0 4B EE 62 8D */ bl wcsncpy
+/* 802EA564 002E61C4 48 00 00 14 */ b lbl_802EA578
+lbl_802EA568:
+/* 802EA568 002E61C8 7F C4 F3 78 */ mr r4, r30
+/* 802EA56C 002E61CC 38 7C 00 20 */ addi r3, r28, 0x20
+/* 802EA570 002E61D0 38 A0 00 20 */ li r5, 0x20
+/* 802EA574 002E61D4 4B EE 62 79 */ bl wcsncpy
+lbl_802EA578:
+/* 802EA578 002E61D8 7F E3 FB 78 */ mr r3, r31
+/* 802EA57C 002E61DC 38 8D 8A A8 */ addi r4, r13, lbl_8063DD68-_SDA_BASE_
+/* 802EA580 002E61E0 4B EE 62 B1 */ bl wcscmp
+/* 802EA584 002E61E4 2C 03 00 00 */ cmpwi r3, 0
+/* 802EA588 002E61E8 40 82 00 18 */ bne lbl_802EA5A0
+/* 802EA58C 002E61EC 38 7C 00 60 */ addi r3, r28, 0x60
+/* 802EA590 002E61F0 38 8D 8A AC */ addi r4, r13, lbl_8063DD6C-_SDA_BASE_
+/* 802EA594 002E61F4 38 A0 00 20 */ li r5, 0x20
+/* 802EA598 002E61F8 4B EE 62 55 */ bl wcsncpy
+/* 802EA59C 002E61FC 48 00 00 14 */ b lbl_802EA5B0
+lbl_802EA5A0:
+/* 802EA5A0 002E6200 7F E4 FB 78 */ mr r4, r31
+/* 802EA5A4 002E6204 38 7C 00 60 */ addi r3, r28, 0x60
+/* 802EA5A8 002E6208 38 A0 00 20 */ li r5, 0x20
+/* 802EA5AC 002E620C 4B EE 62 41 */ bl wcsncpy
+lbl_802EA5B0:
+/* 802EA5B0 002E6210 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802EA5B4 002E6214 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802EA5B8 002E6218 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802EA5BC 002E621C 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802EA5C0 002E6220 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 802EA5C4 002E6224 7C 08 03 A6 */ mtlr r0
+/* 802EA5C8 002E6228 38 21 00 20 */ addi r1, r1, 0x20
+/* 802EA5CC 002E622C 4E 80 00 20 */ blr
+
+# could also be _ESP_GetDataDir
+.global _ES_GetDataDir
+_ES_GetDataDir:
+/* 802EA5D0 002E6230 54 2B 06 FE */ clrlwi r11, r1, 0x1b
+/* 802EA5D4 002E6234 7C 2C 0B 78 */ mr r12, r1
+/* 802EA5D8 002E6238 21 6B FE C0 */ subfic r11, r11, -320
+/* 802EA5DC 002E623C 7C 21 59 6E */ stwux r1, r1, r11
+/* 802EA5E0 002E6240 7C 08 02 A6 */ mflr r0
+/* 802EA5E4 002E6244 90 0C 00 04 */ stw r0, 4(r12)
+/* 802EA5E8 002E6248 39 21 00 20 */ addi r9, r1, 0x20
+/* 802EA5EC 002E624C 39 41 00 40 */ addi r10, r1, 0x40
+/* 802EA5F0 002E6250 80 03 00 00 */ lwz r0, 0(r3)
+/* 802EA5F4 002E6254 2C 00 00 00 */ cmpwi r0, 0
+/* 802EA5F8 002E6258 41 80 00 10 */ blt lbl_802EA608
+/* 802EA5FC 002E625C 38 00 00 00 */ li r0, 0
+/* 802EA600 002E6260 7C 07 00 40 */ cmplw r7, r0
+/* 802EA604 002E6264 40 82 00 0C */ bne lbl_802EA610
+lbl_802EA608:
+/* 802EA608 002E6268 38 60 FC 07 */ li r3, -1017
+/* 802EA60C 002E626C 48 00 00 4C */ b lbl_802EA658
+lbl_802EA610:
+/* 802EA610 002E6270 54 E0 06 FF */ clrlwi. r0, r7, 0x1b
+/* 802EA614 002E6274 41 82 00 0C */ beq lbl_802EA620
+/* 802EA618 002E6278 38 60 FC 07 */ li r3, -1017
+/* 802EA61C 002E627C 48 00 00 3C */ b lbl_802EA658
+lbl_802EA620:
+/* 802EA620 002E6280 39 00 00 08 */ li r8, 8
+/* 802EA624 002E6284 38 00 00 1E */ li r0, 0x1e
+/* 802EA628 002E6288 90 C1 00 44 */ stw r6, 0x44(r1)
+/* 802EA62C 002E628C 38 80 00 1D */ li r4, 0x1d
+/* 802EA630 002E6290 38 C0 00 01 */ li r6, 1
+/* 802EA634 002E6294 90 A1 00 40 */ stw r5, 0x40(r1)
+/* 802EA638 002E6298 38 A0 00 01 */ li r5, 1
+/* 802EA63C 002E629C 90 E1 00 28 */ stw r7, 0x28(r1)
+/* 802EA640 002E62A0 7D 27 4B 78 */ mr r7, r9
+/* 802EA644 002E62A4 91 41 00 20 */ stw r10, 0x20(r1)
+/* 802EA648 002E62A8 91 01 00 24 */ stw r8, 0x24(r1)
+/* 802EA64C 002E62AC 90 01 00 2C */ stw r0, 0x2c(r1)
+/* 802EA650 002E62B0 80 63 00 00 */ lwz r3, 0(r3)
+/* 802EA654 002E62B4 4B FB 97 ED */ bl IOS_Ioctlv
+lbl_802EA658:
+/* 802EA658 002E62B8 81 41 00 00 */ lwz r10, 0(r1)
+/* 802EA65C 002E62BC 80 0A 00 04 */ lwz r0, 4(r10)
+/* 802EA660 002E62C0 7C 08 03 A6 */ mtlr r0
+/* 802EA664 002E62C4 7D 41 53 78 */ mr r1, r10
+/* 802EA668 002E62C8 4E 80 00 20 */ blr
diff --git a/asm/SDK/NAND/NANDOpenClose.s b/asm/SDK/NAND/NANDOpenClose.s new file mode 100644 index 0000000..dbee6ef --- /dev/null +++ b/asm/SDK/NAND/NANDOpenClose.s @@ -0,0 +1,939 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global nandOpen
+nandOpen:
+/* 802E82F4 002E3F54 94 21 FF A0 */ stwu r1, -0x60(r1)
+/* 802E82F8 002E3F58 7C 08 02 A6 */ mflr r0
+/* 802E82FC 002E3F5C 90 01 00 64 */ stw r0, 0x64(r1)
+/* 802E8300 002E3F60 39 61 00 60 */ addi r11, r1, 0x60
+/* 802E8304 002E3F64 4B ED EE 25 */ bl _savegpr_27
+/* 802E8308 002E3F68 38 00 00 00 */ li r0, 0
+/* 802E830C 002E3F6C 7C 9B 23 78 */ mr r27, r4
+/* 802E8310 002E3F70 90 01 00 08 */ stw r0, 8(r1)
+/* 802E8314 002E3F74 7C 64 1B 78 */ mr r4, r3
+/* 802E8318 002E3F78 7C BC 2B 78 */ mr r28, r5
+/* 802E831C 002E3F7C 7C DD 33 78 */ mr r29, r6
+/* 802E8320 002E3F80 90 01 00 0C */ stw r0, 0xc(r1)
+/* 802E8324 002E3F84 7C FE 3B 78 */ mr r30, r7
+/* 802E8328 002E3F88 38 61 00 08 */ addi r3, r1, 8
+/* 802E832C 002E3F8C 3B E0 00 00 */ li r31, 0
+/* 802E8330 002E3F90 90 01 00 10 */ stw r0, 0x10(r1)
+/* 802E8334 002E3F94 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802E8338 002E3F98 90 01 00 18 */ stw r0, 0x18(r1)
+/* 802E833C 002E3F9C 90 01 00 1C */ stw r0, 0x1c(r1)
+/* 802E8340 002E3FA0 90 01 00 20 */ stw r0, 0x20(r1)
+/* 802E8344 002E3FA4 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E8348 002E3FA8 90 01 00 28 */ stw r0, 0x28(r1)
+/* 802E834C 002E3FAC 90 01 00 2C */ stw r0, 0x2c(r1)
+/* 802E8350 002E3FB0 90 01 00 30 */ stw r0, 0x30(r1)
+/* 802E8354 002E3FB4 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802E8358 002E3FB8 90 01 00 38 */ stw r0, 0x38(r1)
+/* 802E835C 002E3FBC 90 01 00 3C */ stw r0, 0x3c(r1)
+/* 802E8360 002E3FC0 90 01 00 40 */ stw r0, 0x40(r1)
+/* 802E8364 002E3FC4 90 01 00 44 */ stw r0, 0x44(r1)
+/* 802E8368 002E3FC8 48 00 11 71 */ bl nandGenerateAbsPath
+/* 802E836C 002E3FCC 2C 1E 00 00 */ cmpwi r30, 0
+/* 802E8370 002E3FD0 40 82 00 1C */ bne lbl_802E838C
+/* 802E8374 002E3FD4 38 61 00 08 */ addi r3, r1, 8
+/* 802E8378 002E3FD8 48 00 0F ED */ bl nandIsPrivatePath
+/* 802E837C 002E3FDC 2C 03 00 00 */ cmpwi r3, 0
+/* 802E8380 002E3FE0 41 82 00 0C */ beq lbl_802E838C
+/* 802E8384 002E3FE4 38 60 FF 9A */ li r3, -102
+/* 802E8388 002E3FE8 48 00 00 68 */ b lbl_802E83F0
+lbl_802E838C:
+/* 802E838C 002E3FEC 2C 1B 00 02 */ cmpwi r27, 2
+/* 802E8390 002E3FF0 41 82 00 2C */ beq lbl_802E83BC
+/* 802E8394 002E3FF4 40 80 00 10 */ bge lbl_802E83A4
+/* 802E8398 002E3FF8 2C 1B 00 01 */ cmpwi r27, 1
+/* 802E839C 002E3FFC 40 80 00 18 */ bge lbl_802E83B4
+/* 802E83A0 002E4000 48 00 00 20 */ b lbl_802E83C0
+lbl_802E83A4:
+/* 802E83A4 002E4004 2C 1B 00 04 */ cmpwi r27, 4
+/* 802E83A8 002E4008 40 80 00 18 */ bge lbl_802E83C0
+/* 802E83AC 002E400C 3B E0 00 03 */ li r31, 3
+/* 802E83B0 002E4010 48 00 00 10 */ b lbl_802E83C0
+lbl_802E83B4:
+/* 802E83B4 002E4014 3B E0 00 01 */ li r31, 1
+/* 802E83B8 002E4018 48 00 00 08 */ b lbl_802E83C0
+lbl_802E83BC:
+/* 802E83BC 002E401C 3B E0 00 02 */ li r31, 2
+lbl_802E83C0:
+/* 802E83C0 002E4020 2C 1D 00 00 */ cmpwi r29, 0
+/* 802E83C4 002E4024 41 82 00 20 */ beq lbl_802E83E4
+/* 802E83C8 002E4028 3C A0 80 2F */ lis r5, nandOpenCallback@ha
+/* 802E83CC 002E402C 7F E4 FB 78 */ mr r4, r31
+/* 802E83D0 002E4030 7F 86 E3 78 */ mr r6, r28
+/* 802E83D4 002E4034 38 61 00 08 */ addi r3, r1, 8
+/* 802E83D8 002E4038 38 A5 86 10 */ addi r5, r5, nandOpenCallback@l
+/* 802E83DC 002E403C 4B FB D3 31 */ bl ISFS_OpenAsync
+/* 802E83E0 002E4040 48 00 00 10 */ b lbl_802E83F0
+lbl_802E83E4:
+/* 802E83E4 002E4044 7F E4 FB 78 */ mr r4, r31
+/* 802E83E8 002E4048 38 61 00 08 */ addi r3, r1, 8
+/* 802E83EC 002E404C 4B FB D2 59 */ bl ISFS_Open
+lbl_802E83F0:
+/* 802E83F0 002E4050 39 61 00 60 */ addi r11, r1, 0x60
+/* 802E83F4 002E4054 4B ED ED 81 */ bl _restgpr_27
+/* 802E83F8 002E4058 80 01 00 64 */ lwz r0, 0x64(r1)
+/* 802E83FC 002E405C 7C 08 03 A6 */ mtlr r0
+/* 802E8400 002E4060 38 21 00 60 */ addi r1, r1, 0x60
+/* 802E8404 002E4064 4E 80 00 20 */ blr
+
+.global NANDOpen
+NANDOpen:
+/* 802E8408 002E4068 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802E840C 002E406C 7C 08 02 A6 */ mflr r0
+/* 802E8410 002E4070 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E8414 002E4074 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802E8418 002E4078 7C BF 2B 78 */ mr r31, r5
+/* 802E841C 002E407C 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802E8420 002E4080 7C 9E 23 78 */ mr r30, r4
+/* 802E8424 002E4084 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802E8428 002E4088 7C 7D 1B 78 */ mr r29, r3
+/* 802E842C 002E408C 48 00 0F C5 */ bl nandIsInitialized
+/* 802E8430 002E4090 2C 03 00 00 */ cmpwi r3, 0
+/* 802E8434 002E4094 40 82 00 0C */ bne lbl_802E8440
+/* 802E8438 002E4098 38 60 FF 80 */ li r3, -128
+/* 802E843C 002E409C 48 00 00 3C */ b lbl_802E8478
+lbl_802E8440:
+/* 802E8440 002E40A0 7F A3 EB 78 */ mr r3, r29
+/* 802E8444 002E40A4 7F E4 FB 78 */ mr r4, r31
+/* 802E8448 002E40A8 38 A0 00 00 */ li r5, 0
+/* 802E844C 002E40AC 38 C0 00 00 */ li r6, 0
+/* 802E8450 002E40B0 38 E0 00 00 */ li r7, 0
+/* 802E8454 002E40B4 4B FF FE A1 */ bl nandOpen
+/* 802E8458 002E40B8 2C 03 00 00 */ cmpwi r3, 0
+/* 802E845C 002E40BC 41 80 00 18 */ blt lbl_802E8474
+/* 802E8460 002E40C0 38 00 00 01 */ li r0, 1
+/* 802E8464 002E40C4 90 7E 00 00 */ stw r3, 0(r30)
+/* 802E8468 002E40C8 38 60 00 00 */ li r3, 0
+/* 802E846C 002E40CC 98 1E 00 8A */ stb r0, 0x8a(r30)
+/* 802E8470 002E40D0 48 00 00 08 */ b lbl_802E8478
+lbl_802E8474:
+/* 802E8474 002E40D4 48 00 0F 95 */ bl nandConvertErrorCode
+lbl_802E8478:
+/* 802E8478 002E40D8 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802E847C 002E40DC 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802E8480 002E40E0 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802E8484 002E40E4 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802E8488 002E40E8 7C 08 03 A6 */ mtlr r0
+/* 802E848C 002E40EC 38 21 00 20 */ addi r1, r1, 0x20
+/* 802E8490 002E40F0 4E 80 00 20 */ blr
+
+.global NANDPrivateOpen
+NANDPrivateOpen:
+/* 802E8494 002E40F4 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802E8498 002E40F8 7C 08 02 A6 */ mflr r0
+/* 802E849C 002E40FC 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E84A0 002E4100 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802E84A4 002E4104 7C BF 2B 78 */ mr r31, r5
+/* 802E84A8 002E4108 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802E84AC 002E410C 7C 9E 23 78 */ mr r30, r4
+/* 802E84B0 002E4110 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802E84B4 002E4114 7C 7D 1B 78 */ mr r29, r3
+/* 802E84B8 002E4118 48 00 0F 39 */ bl nandIsInitialized
+/* 802E84BC 002E411C 2C 03 00 00 */ cmpwi r3, 0
+/* 802E84C0 002E4120 40 82 00 0C */ bne lbl_802E84CC
+/* 802E84C4 002E4124 38 60 FF 80 */ li r3, -128
+/* 802E84C8 002E4128 48 00 00 3C */ b lbl_802E8504
+lbl_802E84CC:
+/* 802E84CC 002E412C 7F A3 EB 78 */ mr r3, r29
+/* 802E84D0 002E4130 7F E4 FB 78 */ mr r4, r31
+/* 802E84D4 002E4134 38 A0 00 00 */ li r5, 0
+/* 802E84D8 002E4138 38 C0 00 00 */ li r6, 0
+/* 802E84DC 002E413C 38 E0 00 01 */ li r7, 1
+/* 802E84E0 002E4140 4B FF FE 15 */ bl nandOpen
+/* 802E84E4 002E4144 2C 03 00 00 */ cmpwi r3, 0
+/* 802E84E8 002E4148 41 80 00 18 */ blt lbl_802E8500
+/* 802E84EC 002E414C 38 00 00 01 */ li r0, 1
+/* 802E84F0 002E4150 90 7E 00 00 */ stw r3, 0(r30)
+/* 802E84F4 002E4154 38 60 00 00 */ li r3, 0
+/* 802E84F8 002E4158 98 1E 00 8A */ stb r0, 0x8a(r30)
+/* 802E84FC 002E415C 48 00 00 08 */ b lbl_802E8504
+lbl_802E8500:
+/* 802E8500 002E4160 48 00 0F 09 */ bl nandConvertErrorCode
+lbl_802E8504:
+/* 802E8504 002E4164 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802E8508 002E4168 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802E850C 002E416C 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802E8510 002E4170 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802E8514 002E4174 7C 08 03 A6 */ mtlr r0
+/* 802E8518 002E4178 38 21 00 20 */ addi r1, r1, 0x20
+/* 802E851C 002E417C 4E 80 00 20 */ blr
+
+.global NANDOpenAsync
+NANDOpenAsync:
+/* 802E8520 002E4180 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802E8524 002E4184 7C 08 02 A6 */ mflr r0
+/* 802E8528 002E4188 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E852C 002E418C 39 61 00 20 */ addi r11, r1, 0x20
+/* 802E8530 002E4190 4B ED EB F9 */ bl _savegpr_27
+/* 802E8534 002E4194 7C 7B 1B 78 */ mr r27, r3
+/* 802E8538 002E4198 7C 9C 23 78 */ mr r28, r4
+/* 802E853C 002E419C 7C BD 2B 78 */ mr r29, r5
+/* 802E8540 002E41A0 7C DE 33 78 */ mr r30, r6
+/* 802E8544 002E41A4 7C FF 3B 78 */ mr r31, r7
+/* 802E8548 002E41A8 48 00 0E A9 */ bl nandIsInitialized
+/* 802E854C 002E41AC 2C 03 00 00 */ cmpwi r3, 0
+/* 802E8550 002E41B0 40 82 00 0C */ bne lbl_802E855C
+/* 802E8554 002E41B4 38 60 FF 80 */ li r3, -128
+/* 802E8558 002E41B8 48 00 00 28 */ b lbl_802E8580
+lbl_802E855C:
+/* 802E855C 002E41BC 93 DF 00 04 */ stw r30, 4(r31)
+/* 802E8560 002E41C0 7F 63 DB 78 */ mr r3, r27
+/* 802E8564 002E41C4 7F A4 EB 78 */ mr r4, r29
+/* 802E8568 002E41C8 7F E5 FB 78 */ mr r5, r31
+/* 802E856C 002E41CC 93 9F 00 08 */ stw r28, 8(r31)
+/* 802E8570 002E41D0 38 C0 00 01 */ li r6, 1
+/* 802E8574 002E41D4 38 E0 00 00 */ li r7, 0
+/* 802E8578 002E41D8 4B FF FD 7D */ bl nandOpen
+/* 802E857C 002E41DC 48 00 0E 8D */ bl nandConvertErrorCode
+lbl_802E8580:
+/* 802E8580 002E41E0 39 61 00 20 */ addi r11, r1, 0x20
+/* 802E8584 002E41E4 4B ED EB F1 */ bl _restgpr_27
+/* 802E8588 002E41E8 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802E858C 002E41EC 7C 08 03 A6 */ mtlr r0
+/* 802E8590 002E41F0 38 21 00 20 */ addi r1, r1, 0x20
+/* 802E8594 002E41F4 4E 80 00 20 */ blr
+
+.global NANDPrivateOpenAsync
+NANDPrivateOpenAsync:
+/* 802E8598 002E41F8 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802E859C 002E41FC 7C 08 02 A6 */ mflr r0
+/* 802E85A0 002E4200 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E85A4 002E4204 39 61 00 20 */ addi r11, r1, 0x20
+/* 802E85A8 002E4208 4B ED EB 81 */ bl _savegpr_27
+/* 802E85AC 002E420C 7C 7B 1B 78 */ mr r27, r3
+/* 802E85B0 002E4210 7C 9C 23 78 */ mr r28, r4
+/* 802E85B4 002E4214 7C BD 2B 78 */ mr r29, r5
+/* 802E85B8 002E4218 7C DE 33 78 */ mr r30, r6
+/* 802E85BC 002E421C 7C FF 3B 78 */ mr r31, r7
+/* 802E85C0 002E4220 48 00 0E 31 */ bl nandIsInitialized
+/* 802E85C4 002E4224 2C 03 00 00 */ cmpwi r3, 0
+/* 802E85C8 002E4228 40 82 00 0C */ bne lbl_802E85D4
+/* 802E85CC 002E422C 38 60 FF 80 */ li r3, -128
+/* 802E85D0 002E4230 48 00 00 28 */ b lbl_802E85F8
+lbl_802E85D4:
+/* 802E85D4 002E4234 93 DF 00 04 */ stw r30, 4(r31)
+/* 802E85D8 002E4238 7F 63 DB 78 */ mr r3, r27
+/* 802E85DC 002E423C 7F A4 EB 78 */ mr r4, r29
+/* 802E85E0 002E4240 7F E5 FB 78 */ mr r5, r31
+/* 802E85E4 002E4244 93 9F 00 08 */ stw r28, 8(r31)
+/* 802E85E8 002E4248 38 C0 00 01 */ li r6, 1
+/* 802E85EC 002E424C 38 E0 00 01 */ li r7, 1
+/* 802E85F0 002E4250 4B FF FD 05 */ bl nandOpen
+/* 802E85F4 002E4254 48 00 0E 15 */ bl nandConvertErrorCode
+lbl_802E85F8:
+/* 802E85F8 002E4258 39 61 00 20 */ addi r11, r1, 0x20
+/* 802E85FC 002E425C 4B ED EB 79 */ bl _restgpr_27
+/* 802E8600 002E4260 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802E8604 002E4264 7C 08 03 A6 */ mtlr r0
+/* 802E8608 002E4268 38 21 00 20 */ addi r1, r1, 0x20
+/* 802E860C 002E426C 4E 80 00 20 */ blr
+
+nandOpenCallback:
+/* 802E8610 002E4270 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802E8614 002E4274 7C 08 02 A6 */ mflr r0
+/* 802E8618 002E4278 2C 03 00 00 */ cmpwi r3, 0
+/* 802E861C 002E427C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802E8620 002E4280 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802E8624 002E4284 7C 9F 23 78 */ mr r31, r4
+/* 802E8628 002E4288 41 80 00 38 */ blt lbl_802E8660
+/* 802E862C 002E428C 80 A4 00 08 */ lwz r5, 8(r4)
+/* 802E8630 002E4290 38 C0 00 02 */ li r6, 2
+/* 802E8634 002E4294 38 00 00 01 */ li r0, 1
+/* 802E8638 002E4298 90 65 00 00 */ stw r3, 0(r5)
+/* 802E863C 002E429C 38 60 00 00 */ li r3, 0
+/* 802E8640 002E42A0 80 A4 00 08 */ lwz r5, 8(r4)
+/* 802E8644 002E42A4 98 C5 00 89 */ stb r6, 0x89(r5)
+/* 802E8648 002E42A8 80 A4 00 08 */ lwz r5, 8(r4)
+/* 802E864C 002E42AC 98 05 00 8A */ stb r0, 0x8a(r5)
+/* 802E8650 002E42B0 81 84 00 04 */ lwz r12, 4(r4)
+/* 802E8654 002E42B4 7D 89 03 A6 */ mtctr r12
+/* 802E8658 002E42B8 4E 80 04 21 */ bctrl
+/* 802E865C 002E42BC 48 00 00 18 */ b lbl_802E8674
+lbl_802E8660:
+/* 802E8660 002E42C0 48 00 0D A9 */ bl nandConvertErrorCode
+/* 802E8664 002E42C4 81 9F 00 04 */ lwz r12, 4(r31)
+/* 802E8668 002E42C8 7F E4 FB 78 */ mr r4, r31
+/* 802E866C 002E42CC 7D 89 03 A6 */ mtctr r12
+/* 802E8670 002E42D0 4E 80 04 21 */ bctrl
+lbl_802E8674:
+/* 802E8674 002E42D4 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802E8678 002E42D8 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802E867C 002E42DC 7C 08 03 A6 */ mtlr r0
+/* 802E8680 002E42E0 38 21 00 10 */ addi r1, r1, 0x10
+/* 802E8684 002E42E4 4E 80 00 20 */ blr
+
+.global NANDClose
+NANDClose:
+/* 802E8688 002E42E8 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802E868C 002E42EC 7C 08 02 A6 */ mflr r0
+/* 802E8690 002E42F0 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802E8694 002E42F4 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802E8698 002E42F8 7C 7F 1B 78 */ mr r31, r3
+/* 802E869C 002E42FC 48 00 0D 55 */ bl nandIsInitialized
+/* 802E86A0 002E4300 2C 03 00 00 */ cmpwi r3, 0
+/* 802E86A4 002E4304 40 82 00 0C */ bne lbl_802E86B0
+/* 802E86A8 002E4308 38 60 FF 80 */ li r3, -128
+/* 802E86AC 002E430C 48 00 00 34 */ b lbl_802E86E0
+lbl_802E86B0:
+/* 802E86B0 002E4310 88 1F 00 8A */ lbz r0, 0x8a(r31)
+/* 802E86B4 002E4314 28 00 00 01 */ cmplwi r0, 1
+/* 802E86B8 002E4318 41 82 00 0C */ beq lbl_802E86C4
+/* 802E86BC 002E431C 38 60 FF F8 */ li r3, -8
+/* 802E86C0 002E4320 48 00 00 20 */ b lbl_802E86E0
+lbl_802E86C4:
+/* 802E86C4 002E4324 80 7F 00 00 */ lwz r3, 0(r31)
+/* 802E86C8 002E4328 4B FB D3 49 */ bl ISFS_Close
+/* 802E86CC 002E432C 2C 03 00 00 */ cmpwi r3, 0
+/* 802E86D0 002E4330 40 82 00 0C */ bne lbl_802E86DC
+/* 802E86D4 002E4334 38 00 00 02 */ li r0, 2
+/* 802E86D8 002E4338 98 1F 00 8A */ stb r0, 0x8a(r31)
+lbl_802E86DC:
+/* 802E86DC 002E433C 48 00 0D 2D */ bl nandConvertErrorCode
+lbl_802E86E0:
+/* 802E86E0 002E4340 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802E86E4 002E4344 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802E86E8 002E4348 7C 08 03 A6 */ mtlr r0
+/* 802E86EC 002E434C 38 21 00 10 */ addi r1, r1, 0x10
+/* 802E86F0 002E4350 4E 80 00 20 */ blr
+
+.global NANDCloseAsync
+NANDCloseAsync:
+/* 802E86F4 002E4354 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802E86F8 002E4358 7C 08 02 A6 */ mflr r0
+/* 802E86FC 002E435C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E8700 002E4360 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802E8704 002E4364 7C BF 2B 78 */ mr r31, r5
+/* 802E8708 002E4368 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802E870C 002E436C 7C 9E 23 78 */ mr r30, r4
+/* 802E8710 002E4370 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802E8714 002E4374 7C 7D 1B 78 */ mr r29, r3
+/* 802E8718 002E4378 48 00 0C D9 */ bl nandIsInitialized
+/* 802E871C 002E437C 2C 03 00 00 */ cmpwi r3, 0
+/* 802E8720 002E4380 40 82 00 0C */ bne lbl_802E872C
+/* 802E8724 002E4384 38 60 FF 80 */ li r3, -128
+/* 802E8728 002E4388 48 00 00 38 */ b lbl_802E8760
+lbl_802E872C:
+/* 802E872C 002E438C 88 1D 00 8A */ lbz r0, 0x8a(r29)
+/* 802E8730 002E4390 28 00 00 01 */ cmplwi r0, 1
+/* 802E8734 002E4394 41 82 00 0C */ beq lbl_802E8740
+/* 802E8738 002E4398 38 60 FF F8 */ li r3, -8
+/* 802E873C 002E439C 48 00 00 24 */ b lbl_802E8760
+lbl_802E8740:
+/* 802E8740 002E43A0 93 DF 00 04 */ stw r30, 4(r31)
+/* 802E8744 002E43A4 3C 80 80 2F */ lis r4, nandCloseCallback@ha
+/* 802E8748 002E43A8 7F E5 FB 78 */ mr r5, r31
+/* 802E874C 002E43AC 93 BF 00 08 */ stw r29, 8(r31)
+/* 802E8750 002E43B0 38 84 8F 8C */ addi r4, r4, nandCloseCallback@l
+/* 802E8754 002E43B4 80 7D 00 00 */ lwz r3, 0(r29)
+/* 802E8758 002E43B8 4B FB D2 BD */ bl ISFS_CloseAsync
+/* 802E875C 002E43BC 48 00 0C AD */ bl nandConvertErrorCode
+lbl_802E8760:
+/* 802E8760 002E43C0 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802E8764 002E43C4 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802E8768 002E43C8 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802E876C 002E43CC 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802E8770 002E43D0 7C 08 03 A6 */ mtlr r0
+/* 802E8774 002E43D4 38 21 00 20 */ addi r1, r1, 0x20
+/* 802E8778 002E43D8 4E 80 00 20 */ blr
+
+.global nandSafeOpenAsync
+nandSafeOpenAsync:
+/* 802E877C 002E43DC 39 40 00 00 */ li r10, 0
+/* 802E8780 002E43E0 48 00 00 04 */ b lbl_802E8784
+lbl_802E8784:
+/* 802E8784 002E43E4 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 802E8788 002E43E8 7C 08 02 A6 */ mflr r0
+/* 802E878C 002E43EC 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802E8790 002E43F0 39 61 00 30 */ addi r11, r1, 0x30
+/* 802E8794 002E43F4 4B ED E9 89 */ bl _savegpr_24
+/* 802E8798 002E43F8 7C 78 1B 78 */ mr r24, r3
+/* 802E879C 002E43FC 7C 99 23 78 */ mr r25, r4
+/* 802E87A0 002E4400 7C BA 2B 78 */ mr r26, r5
+/* 802E87A4 002E4404 7C DB 33 78 */ mr r27, r6
+/* 802E87A8 002E4408 7C FC 3B 78 */ mr r28, r7
+/* 802E87AC 002E440C 7D 1D 43 78 */ mr r29, r8
+/* 802E87B0 002E4410 7D 3E 4B 78 */ mr r30, r9
+/* 802E87B4 002E4414 7D 5F 53 78 */ mr r31, r10
+/* 802E87B8 002E4418 48 00 0C 39 */ bl nandIsInitialized
+/* 802E87BC 002E441C 2C 03 00 00 */ cmpwi r3, 0
+/* 802E87C0 002E4420 40 82 00 0C */ bne lbl_802E87CC
+/* 802E87C4 002E4424 38 60 FF 80 */ li r3, -128
+/* 802E87C8 002E4428 48 00 00 EC */ b lbl_802E88B4
+lbl_802E87CC:
+/* 802E87CC 002E442C 38 00 00 00 */ li r0, 0
+/* 802E87D0 002E4430 9B 59 00 88 */ stb r26, 0x88(r25)
+/* 802E87D4 002E4434 7F 04 C3 78 */ mr r4, r24
+/* 802E87D8 002E4438 38 79 00 08 */ addi r3, r25, 8
+/* 802E87DC 002E443C 98 19 00 89 */ stb r0, 0x89(r25)
+/* 802E87E0 002E4440 48 00 0C F9 */ bl nandGenerateAbsPath
+/* 802E87E4 002E4444 2C 1F 00 00 */ cmpwi r31, 0
+/* 802E87E8 002E4448 40 82 00 1C */ bne lbl_802E8804
+/* 802E87EC 002E444C 38 79 00 08 */ addi r3, r25, 8
+/* 802E87F0 002E4450 48 00 0B 75 */ bl nandIsPrivatePath
+/* 802E87F4 002E4454 2C 03 00 00 */ cmpwi r3, 0
+/* 802E87F8 002E4458 41 82 00 0C */ beq lbl_802E8804
+/* 802E87FC 002E445C 38 60 FF FF */ li r3, -1
+/* 802E8800 002E4460 48 00 00 B4 */ b lbl_802E88B4
+lbl_802E8804:
+/* 802E8804 002E4464 28 1A 00 01 */ cmplwi r26, 1
+/* 802E8808 002E4468 40 82 00 3C */ bne lbl_802E8844
+/* 802E880C 002E446C 3C A0 80 2F */ lis r5, nandReadOpenCallback@ha
+/* 802E8810 002E4470 93 3E 00 08 */ stw r25, 8(r30)
+/* 802E8814 002E4474 7F C6 F3 78 */ mr r6, r30
+/* 802E8818 002E4478 38 79 00 08 */ addi r3, r25, 8
+/* 802E881C 002E447C 93 BE 00 04 */ stw r29, 4(r30)
+/* 802E8820 002E4480 38 A5 8C 60 */ addi r5, r5, nandReadOpenCallback@l
+/* 802E8824 002E4484 38 80 00 01 */ li r4, 1
+/* 802E8828 002E4488 4B FB CE E5 */ bl ISFS_OpenAsync
+/* 802E882C 002E448C 2C 03 00 00 */ cmpwi r3, 0
+/* 802E8830 002E4490 40 82 00 0C */ bne lbl_802E883C
+/* 802E8834 002E4494 38 60 00 00 */ li r3, 0
+/* 802E8838 002E4498 48 00 00 7C */ b lbl_802E88B4
+lbl_802E883C:
+/* 802E883C 002E449C 48 00 0B CD */ bl nandConvertErrorCode
+/* 802E8840 002E44A0 48 00 00 74 */ b lbl_802E88B4
+lbl_802E8844:
+/* 802E8844 002E44A4 38 1A 00 FE */ addi r0, r26, 0xfe
+/* 802E8848 002E44A8 54 00 06 3E */ clrlwi r0, r0, 0x18
+/* 802E884C 002E44AC 28 00 00 01 */ cmplwi r0, 1
+/* 802E8850 002E44B0 41 81 00 60 */ bgt lbl_802E88B0
+/* 802E8854 002E44B4 3B E0 00 00 */ li r31, 0
+/* 802E8858 002E44B8 3C 60 80 44 */ lis r3, lbl_80445640@ha
+/* 802E885C 002E44BC 3D 00 80 2F */ lis r8, nandSafeOpenCallback@ha
+/* 802E8860 002E44C0 93 3E 00 08 */ stw r25, 8(r30)
+/* 802E8864 002E44C4 7F C9 F3 78 */ mr r9, r30
+/* 802E8868 002E44C8 38 63 56 40 */ addi r3, r3, lbl_80445640@l
+/* 802E886C 002E44CC 93 BE 00 04 */ stw r29, 4(r30)
+/* 802E8870 002E44D0 39 08 88 CC */ addi r8, r8, nandSafeOpenCallback@l
+/* 802E8874 002E44D4 38 80 00 00 */ li r4, 0
+/* 802E8878 002E44D8 38 A0 00 03 */ li r5, 3
+/* 802E887C 002E44DC 93 FE 00 7C */ stw r31, 0x7c(r30)
+/* 802E8880 002E44E0 38 C0 00 03 */ li r6, 3
+/* 802E8884 002E44E4 38 E0 00 03 */ li r7, 3
+/* 802E8888 002E44E8 93 7E 00 80 */ stw r27, 0x80(r30)
+/* 802E888C 002E44EC 93 9E 00 84 */ stw r28, 0x84(r30)
+/* 802E8890 002E44F0 4B FB C1 E1 */ bl ISFS_CreateDirAsync
+/* 802E8894 002E44F4 2C 03 00 00 */ cmpwi r3, 0
+/* 802E8898 002E44F8 40 82 00 08 */ bne lbl_802E88A0
+/* 802E889C 002E44FC 48 00 00 0C */ b lbl_802E88A8
+lbl_802E88A0:
+/* 802E88A0 002E4500 48 00 0B 69 */ bl nandConvertErrorCode
+/* 802E88A4 002E4504 7C 7F 1B 78 */ mr r31, r3
+lbl_802E88A8:
+/* 802E88A8 002E4508 7F E3 FB 78 */ mr r3, r31
+/* 802E88AC 002E450C 48 00 00 08 */ b lbl_802E88B4
+lbl_802E88B0:
+/* 802E88B0 002E4510 38 60 FF F8 */ li r3, -8
+lbl_802E88B4:
+/* 802E88B4 002E4514 39 61 00 30 */ addi r11, r1, 0x30
+/* 802E88B8 002E4518 4B ED E8 B1 */ bl _restgpr_24
+/* 802E88BC 002E451C 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 802E88C0 002E4520 7C 08 03 A6 */ mtlr r0
+/* 802E88C4 002E4524 38 21 00 30 */ addi r1, r1, 0x30
+/* 802E88C8 002E4528 4E 80 00 20 */ blr
+
+nandSafeOpenCallback:
+/* 802E88CC 002E452C 94 21 FF 90 */ stwu r1, -0x70(r1)
+/* 802E88D0 002E4530 7C 08 02 A6 */ mflr r0
+/* 802E88D4 002E4534 2C 03 00 00 */ cmpwi r3, 0
+/* 802E88D8 002E4538 90 01 00 74 */ stw r0, 0x74(r1)
+/* 802E88DC 002E453C 93 E1 00 6C */ stw r31, 0x6c(r1)
+/* 802E88E0 002E4540 7C 9F 23 78 */ mr r31, r4
+/* 802E88E4 002E4544 93 C1 00 68 */ stw r30, 0x68(r1)
+/* 802E88E8 002E4548 93 A1 00 64 */ stw r29, 0x64(r1)
+/* 802E88EC 002E454C 93 81 00 60 */ stw r28, 0x60(r1)
+/* 802E88F0 002E4550 7C 7C 1B 78 */ mr r28, r3
+/* 802E88F4 002E4554 40 80 00 18 */ bge lbl_802E890C
+/* 802E88F8 002E4558 2C 03 FF 97 */ cmpwi r3, -105
+/* 802E88FC 002E455C 40 82 03 2C */ bne lbl_802E8C28
+/* 802E8900 002E4560 80 04 00 7C */ lwz r0, 0x7c(r4)
+/* 802E8904 002E4564 2C 00 00 00 */ cmpwi r0, 0
+/* 802E8908 002E4568 40 82 03 20 */ bne lbl_802E8C28
+lbl_802E890C:
+/* 802E890C 002E456C 80 04 00 7C */ lwz r0, 0x7c(r4)
+/* 802E8910 002E4570 38 C0 FF 8B */ li r6, -117
+/* 802E8914 002E4574 83 A4 00 08 */ lwz r29, 8(r4)
+/* 802E8918 002E4578 2C 00 00 00 */ cmpwi r0, 0
+/* 802E891C 002E457C 40 82 00 0C */ bne lbl_802E8928
+/* 802E8920 002E4580 38 00 00 01 */ li r0, 1
+/* 802E8924 002E4584 98 1D 00 89 */ stb r0, 0x89(r29)
+lbl_802E8928:
+/* 802E8928 002E4588 80 A4 00 7C */ lwz r5, 0x7c(r4)
+/* 802E892C 002E458C 38 05 00 01 */ addi r0, r5, 1
+/* 802E8930 002E4590 2C 00 00 01 */ cmpwi r0, 1
+/* 802E8934 002E4594 90 04 00 7C */ stw r0, 0x7c(r4)
+/* 802E8938 002E4598 40 82 00 38 */ bne lbl_802E8970
+/* 802E893C 002E459C 3D 40 80 2F */ lis r10, nandSafeOpenCallback@ha
+/* 802E8940 002E45A0 90 81 00 08 */ stw r4, 8(r1)
+/* 802E8944 002E45A4 38 7D 00 08 */ addi r3, r29, 8
+/* 802E8948 002E45A8 38 A4 00 1C */ addi r5, r4, 0x1c
+/* 802E894C 002E45AC 38 C4 00 20 */ addi r6, r4, 0x20
+/* 802E8950 002E45B0 38 E4 00 24 */ addi r7, r4, 0x24
+/* 802E8954 002E45B4 39 04 00 28 */ addi r8, r4, 0x28
+/* 802E8958 002E45B8 39 24 00 2C */ addi r9, r4, 0x2c
+/* 802E895C 002E45BC 39 4A 88 CC */ addi r10, r10, nandSafeOpenCallback@l
+/* 802E8960 002E45C0 38 84 00 18 */ addi r4, r4, 0x18
+/* 802E8964 002E45C4 4B FB C5 F5 */ bl ISFS_GetAttrAsync
+/* 802E8968 002E45C8 7C 66 1B 78 */ mr r6, r3
+/* 802E896C 002E45CC 48 00 02 98 */ b lbl_802E8C04
+lbl_802E8970:
+/* 802E8970 002E45D0 2C 00 00 02 */ cmpwi r0, 2
+/* 802E8974 002E45D4 40 82 00 24 */ bne lbl_802E8998
+/* 802E8978 002E45D8 3C A0 80 2F */ lis r5, nandSafeOpenCallback@ha
+/* 802E897C 002E45DC 7F E6 FB 78 */ mr r6, r31
+/* 802E8980 002E45E0 38 7D 00 08 */ addi r3, r29, 8
+/* 802E8984 002E45E4 38 80 00 01 */ li r4, 1
+/* 802E8988 002E45E8 38 A5 88 CC */ addi r5, r5, nandSafeOpenCallback@l
+/* 802E898C 002E45EC 4B FB CD 81 */ bl ISFS_OpenAsync
+/* 802E8990 002E45F0 7C 66 1B 78 */ mr r6, r3
+/* 802E8994 002E45F4 48 00 02 70 */ b lbl_802E8C04
+lbl_802E8998:
+/* 802E8998 002E45F8 2C 00 00 03 */ cmpwi r0, 3
+/* 802E899C 002E45FC 40 82 00 70 */ bne lbl_802E8A0C
+/* 802E89A0 002E4600 38 00 00 02 */ li r0, 2
+/* 802E89A4 002E4604 98 1D 00 89 */ stb r0, 0x89(r29)
+/* 802E89A8 002E4608 4B F8 5D B5 */ bl OSDisableInterrupts
+/* 802E89AC 002E460C 83 CD AF 00 */ lwz r30, lbl_806401C0-_SDA_BASE_(r13)
+/* 802E89B0 002E4610 38 1E 00 01 */ addi r0, r30, 1
+/* 802E89B4 002E4614 90 0D AF 00 */ stw r0, lbl_806401C0-_SDA_BASE_(r13)
+/* 802E89B8 002E4618 4B F8 5D CD */ bl OSRestoreInterrupts
+/* 802E89BC 002E461C 93 DF 00 8C */ stw r30, 0x8c(r31)
+/* 802E89C0 002E4620 3C A0 80 44 */ lis r5, lbl_80445640@ha
+/* 802E89C4 002E4624 38 61 00 20 */ addi r3, r1, 0x20
+/* 802E89C8 002E4628 38 8D 8A 78 */ addi r4, r13, lbl_8063DD38-_SDA_BASE_
+/* 802E89CC 002E462C 93 9D 00 04 */ stw r28, 4(r29)
+/* 802E89D0 002E4630 38 A5 56 40 */ addi r5, r5, lbl_80445640@l
+/* 802E89D4 002E4634 80 DF 00 8C */ lwz r6, 0x8c(r31)
+/* 802E89D8 002E4638 4C C6 31 82 */ crclr 6
+/* 802E89DC 002E463C 4B EE 41 21 */ bl sprintf
+/* 802E89E0 002E4640 3D 00 80 2F */ lis r8, nandSafeOpenCallback@ha
+/* 802E89E4 002E4644 7F E9 FB 78 */ mr r9, r31
+/* 802E89E8 002E4648 38 61 00 20 */ addi r3, r1, 0x20
+/* 802E89EC 002E464C 38 80 00 00 */ li r4, 0
+/* 802E89F0 002E4650 39 08 88 CC */ addi r8, r8, nandSafeOpenCallback@l
+/* 802E89F4 002E4654 38 A0 00 03 */ li r5, 3
+/* 802E89F8 002E4658 38 C0 00 00 */ li r6, 0
+/* 802E89FC 002E465C 38 E0 00 00 */ li r7, 0
+/* 802E8A00 002E4660 4B FB C0 71 */ bl ISFS_CreateDirAsync
+/* 802E8A04 002E4664 7C 66 1B 78 */ mr r6, r3
+/* 802E8A08 002E4668 48 00 01 FC */ b lbl_802E8C04
+lbl_802E8A0C:
+/* 802E8A0C 002E466C 2C 00 00 04 */ cmpwi r0, 4
+/* 802E8A10 002E4670 40 82 00 68 */ bne lbl_802E8A78
+/* 802E8A14 002E4674 38 00 00 03 */ li r0, 3
+/* 802E8A18 002E4678 38 61 00 10 */ addi r3, r1, 0x10
+/* 802E8A1C 002E467C 98 1D 00 89 */ stb r0, 0x89(r29)
+/* 802E8A20 002E4680 38 9D 00 08 */ addi r4, r29, 8
+/* 802E8A24 002E4684 48 00 07 6D */ bl nandGetRelativeName
+/* 802E8A28 002E4688 3C 80 80 44 */ lis r4, lbl_8044564C@ha
+/* 802E8A2C 002E468C 3C A0 80 44 */ lis r5, lbl_80445640@ha
+/* 802E8A30 002E4690 80 DF 00 8C */ lwz r6, 0x8c(r31)
+/* 802E8A34 002E4694 38 7D 00 48 */ addi r3, r29, 0x48
+/* 802E8A38 002E4698 38 84 56 4C */ addi r4, r4, lbl_8044564C@l
+/* 802E8A3C 002E469C 38 A5 56 40 */ addi r5, r5, lbl_80445640@l
+/* 802E8A40 002E46A0 38 E1 00 10 */ addi r7, r1, 0x10
+/* 802E8A44 002E46A4 4C C6 31 82 */ crclr 6
+/* 802E8A48 002E46A8 4B EE 40 B5 */ bl sprintf
+/* 802E8A4C 002E46AC 3D 00 80 2F */ lis r8, nandSafeOpenCallback@ha
+/* 802E8A50 002E46B0 80 9F 00 20 */ lwz r4, 0x20(r31)
+/* 802E8A54 002E46B4 80 BF 00 24 */ lwz r5, 0x24(r31)
+/* 802E8A58 002E46B8 7F E9 FB 78 */ mr r9, r31
+/* 802E8A5C 002E46BC 80 DF 00 28 */ lwz r6, 0x28(r31)
+/* 802E8A60 002E46C0 38 7D 00 48 */ addi r3, r29, 0x48
+/* 802E8A64 002E46C4 80 FF 00 2C */ lwz r7, 0x2c(r31)
+/* 802E8A68 002E46C8 39 08 88 CC */ addi r8, r8, nandSafeOpenCallback@l
+/* 802E8A6C 002E46CC 4B FB CA E5 */ bl ISFS_CreateFileAsync
+/* 802E8A70 002E46D0 7C 66 1B 78 */ mr r6, r3
+/* 802E8A74 002E46D4 48 00 01 90 */ b lbl_802E8C04
+lbl_802E8A78:
+/* 802E8A78 002E46D8 2C 00 00 05 */ cmpwi r0, 5
+/* 802E8A7C 002E46DC 40 82 00 68 */ bne lbl_802E8AE4
+/* 802E8A80 002E46E0 38 00 00 04 */ li r0, 4
+/* 802E8A84 002E46E4 98 1D 00 89 */ stb r0, 0x89(r29)
+/* 802E8A88 002E46E8 88 1D 00 88 */ lbz r0, 0x88(r29)
+/* 802E8A8C 002E46EC 28 00 00 02 */ cmplwi r0, 2
+/* 802E8A90 002E46F0 40 82 00 24 */ bne lbl_802E8AB4
+/* 802E8A94 002E46F4 3C A0 80 2F */ lis r5, nandSafeOpenCallback@ha
+/* 802E8A98 002E46F8 7F E6 FB 78 */ mr r6, r31
+/* 802E8A9C 002E46FC 38 7D 00 48 */ addi r3, r29, 0x48
+/* 802E8AA0 002E4700 38 80 00 02 */ li r4, 2
+/* 802E8AA4 002E4704 38 A5 88 CC */ addi r5, r5, nandSafeOpenCallback@l
+/* 802E8AA8 002E4708 4B FB CC 65 */ bl ISFS_OpenAsync
+/* 802E8AAC 002E470C 7C 66 1B 78 */ mr r6, r3
+/* 802E8AB0 002E4710 48 00 01 54 */ b lbl_802E8C04
+lbl_802E8AB4:
+/* 802E8AB4 002E4714 28 00 00 03 */ cmplwi r0, 3
+/* 802E8AB8 002E4718 40 82 00 24 */ bne lbl_802E8ADC
+/* 802E8ABC 002E471C 3C A0 80 2F */ lis r5, nandSafeOpenCallback@ha
+/* 802E8AC0 002E4720 7F E6 FB 78 */ mr r6, r31
+/* 802E8AC4 002E4724 38 7D 00 48 */ addi r3, r29, 0x48
+/* 802E8AC8 002E4728 38 80 00 03 */ li r4, 3
+/* 802E8ACC 002E472C 38 A5 88 CC */ addi r5, r5, nandSafeOpenCallback@l
+/* 802E8AD0 002E4730 4B FB CC 3D */ bl ISFS_OpenAsync
+/* 802E8AD4 002E4734 7C 66 1B 78 */ mr r6, r3
+/* 802E8AD8 002E4738 48 00 01 2C */ b lbl_802E8C04
+lbl_802E8ADC:
+/* 802E8ADC 002E473C 38 C0 FF 8B */ li r6, -117
+/* 802E8AE0 002E4740 48 00 01 24 */ b lbl_802E8C04
+lbl_802E8AE4:
+/* 802E8AE4 002E4744 2C 00 00 06 */ cmpwi r0, 6
+/* 802E8AE8 002E4748 40 82 00 3C */ bne lbl_802E8B24
+/* 802E8AEC 002E474C 90 7D 00 00 */ stw r3, 0(r29)
+/* 802E8AF0 002E4750 38 60 00 05 */ li r3, 5
+/* 802E8AF4 002E4754 3C C0 80 2F */ lis r6, nandSafeOpenCallback@ha
+/* 802E8AF8 002E4758 38 00 00 07 */ li r0, 7
+/* 802E8AFC 002E475C 98 7D 00 89 */ stb r3, 0x89(r29)
+/* 802E8B00 002E4760 7F E7 FB 78 */ mr r7, r31
+/* 802E8B04 002E4764 38 C6 88 CC */ addi r6, r6, nandSafeOpenCallback@l
+/* 802E8B08 002E4768 90 04 00 7C */ stw r0, 0x7c(r4)
+/* 802E8B0C 002E476C 80 84 00 80 */ lwz r4, 0x80(r4)
+/* 802E8B10 002E4770 80 7D 00 04 */ lwz r3, 4(r29)
+/* 802E8B14 002E4774 80 BF 00 84 */ lwz r5, 0x84(r31)
+/* 802E8B18 002E4778 4B FB CD 91 */ bl ISFS_ReadAsync
+/* 802E8B1C 002E477C 7C 66 1B 78 */ mr r6, r3
+/* 802E8B20 002E4780 48 00 00 E4 */ b lbl_802E8C04
+lbl_802E8B24:
+/* 802E8B24 002E4784 2C 00 00 07 */ cmpwi r0, 7
+/* 802E8B28 002E4788 40 82 00 28 */ bne lbl_802E8B50
+/* 802E8B2C 002E478C 3C C0 80 2F */ lis r6, nandSafeOpenCallback@ha
+/* 802E8B30 002E4790 80 7D 00 04 */ lwz r3, 4(r29)
+/* 802E8B34 002E4794 80 84 00 80 */ lwz r4, 0x80(r4)
+/* 802E8B38 002E4798 7F E7 FB 78 */ mr r7, r31
+/* 802E8B3C 002E479C 80 BF 00 84 */ lwz r5, 0x84(r31)
+/* 802E8B40 002E47A0 38 C6 88 CC */ addi r6, r6, nandSafeOpenCallback@l
+/* 802E8B44 002E47A4 4B FB CD 65 */ bl ISFS_ReadAsync
+/* 802E8B48 002E47A8 7C 66 1B 78 */ mr r6, r3
+/* 802E8B4C 002E47AC 48 00 00 B8 */ b lbl_802E8C04
+lbl_802E8B50:
+/* 802E8B50 002E47B0 2C 00 00 08 */ cmpwi r0, 8
+/* 802E8B54 002E47B4 40 82 00 60 */ bne lbl_802E8BB4
+/* 802E8B58 002E47B8 2C 03 00 00 */ cmpwi r3, 0
+/* 802E8B5C 002E47BC 40 81 00 30 */ ble lbl_802E8B8C
+/* 802E8B60 002E47C0 38 00 00 06 */ li r0, 6
+/* 802E8B64 002E47C4 3C C0 80 2F */ lis r6, nandSafeOpenCallback@ha
+/* 802E8B68 002E47C8 90 04 00 7C */ stw r0, 0x7c(r4)
+/* 802E8B6C 002E47CC 7F 85 E3 78 */ mr r5, r28
+/* 802E8B70 002E47D0 80 84 00 80 */ lwz r4, 0x80(r4)
+/* 802E8B74 002E47D4 7F E7 FB 78 */ mr r7, r31
+/* 802E8B78 002E47D8 80 7D 00 00 */ lwz r3, 0(r29)
+/* 802E8B7C 002E47DC 38 C6 88 CC */ addi r6, r6, nandSafeOpenCallback@l
+/* 802E8B80 002E47E0 4B FB CD ED */ bl ISFS_WriteAsync
+/* 802E8B84 002E47E4 7C 66 1B 78 */ mr r6, r3
+/* 802E8B88 002E47E8 48 00 00 7C */ b lbl_802E8C04
+lbl_802E8B8C:
+/* 802E8B8C 002E47EC 40 82 00 78 */ bne lbl_802E8C04
+/* 802E8B90 002E47F0 3C C0 80 2F */ lis r6, nandSafeOpenCallback@ha
+/* 802E8B94 002E47F4 80 7D 00 00 */ lwz r3, 0(r29)
+/* 802E8B98 002E47F8 7F E7 FB 78 */ mr r7, r31
+/* 802E8B9C 002E47FC 38 80 00 00 */ li r4, 0
+/* 802E8BA0 002E4800 38 C6 88 CC */ addi r6, r6, nandSafeOpenCallback@l
+/* 802E8BA4 002E4804 38 A0 00 00 */ li r5, 0
+/* 802E8BA8 002E4808 4B FB CC 55 */ bl ISFS_SeekAsync
+/* 802E8BAC 002E480C 7C 66 1B 78 */ mr r6, r3
+/* 802E8BB0 002E4810 48 00 00 54 */ b lbl_802E8C04
+lbl_802E8BB4:
+/* 802E8BB4 002E4814 2C 00 00 09 */ cmpwi r0, 9
+/* 802E8BB8 002E4818 40 82 00 4C */ bne lbl_802E8C04
+/* 802E8BBC 002E481C 2C 03 00 00 */ cmpwi r3, 0
+/* 802E8BC0 002E4820 40 82 00 28 */ bne lbl_802E8BE8
+/* 802E8BC4 002E4824 38 00 00 03 */ li r0, 3
+/* 802E8BC8 002E4828 38 60 00 00 */ li r3, 0
+/* 802E8BCC 002E482C 98 1D 00 8A */ stb r0, 0x8a(r29)
+/* 802E8BD0 002E4830 48 00 08 39 */ bl nandConvertErrorCode
+/* 802E8BD4 002E4834 81 9F 00 04 */ lwz r12, 4(r31)
+/* 802E8BD8 002E4838 7F E4 FB 78 */ mr r4, r31
+/* 802E8BDC 002E483C 7D 89 03 A6 */ mtctr r12
+/* 802E8BE0 002E4840 4E 80 04 21 */ bctrl
+/* 802E8BE4 002E4844 48 00 00 5C */ b lbl_802E8C40
+lbl_802E8BE8:
+/* 802E8BE8 002E4848 7F 83 E3 78 */ mr r3, r28
+/* 802E8BEC 002E484C 48 00 08 1D */ bl nandConvertErrorCode
+/* 802E8BF0 002E4850 81 9F 00 04 */ lwz r12, 4(r31)
+/* 802E8BF4 002E4854 7F E4 FB 78 */ mr r4, r31
+/* 802E8BF8 002E4858 7D 89 03 A6 */ mtctr r12
+/* 802E8BFC 002E485C 4E 80 04 21 */ bctrl
+/* 802E8C00 002E4860 48 00 00 40 */ b lbl_802E8C40
+lbl_802E8C04:
+/* 802E8C04 002E4864 2C 06 00 00 */ cmpwi r6, 0
+/* 802E8C08 002E4868 41 82 00 38 */ beq lbl_802E8C40
+/* 802E8C0C 002E486C 7C C3 33 78 */ mr r3, r6
+/* 802E8C10 002E4870 48 00 07 F9 */ bl nandConvertErrorCode
+/* 802E8C14 002E4874 81 9F 00 04 */ lwz r12, 4(r31)
+/* 802E8C18 002E4878 7F E4 FB 78 */ mr r4, r31
+/* 802E8C1C 002E487C 7D 89 03 A6 */ mtctr r12
+/* 802E8C20 002E4880 4E 80 04 21 */ bctrl
+/* 802E8C24 002E4884 48 00 00 1C */ b lbl_802E8C40
+lbl_802E8C28:
+/* 802E8C28 002E4888 7F 83 E3 78 */ mr r3, r28
+/* 802E8C2C 002E488C 48 00 07 DD */ bl nandConvertErrorCode
+/* 802E8C30 002E4890 81 9F 00 04 */ lwz r12, 4(r31)
+/* 802E8C34 002E4894 7F E4 FB 78 */ mr r4, r31
+/* 802E8C38 002E4898 7D 89 03 A6 */ mtctr r12
+/* 802E8C3C 002E489C 4E 80 04 21 */ bctrl
+lbl_802E8C40:
+/* 802E8C40 002E48A0 80 01 00 74 */ lwz r0, 0x74(r1)
+/* 802E8C44 002E48A4 83 E1 00 6C */ lwz r31, 0x6c(r1)
+/* 802E8C48 002E48A8 83 C1 00 68 */ lwz r30, 0x68(r1)
+/* 802E8C4C 002E48AC 83 A1 00 64 */ lwz r29, 0x64(r1)
+/* 802E8C50 002E48B0 83 81 00 60 */ lwz r28, 0x60(r1)
+/* 802E8C54 002E48B4 7C 08 03 A6 */ mtlr r0
+/* 802E8C58 002E48B8 38 21 00 70 */ addi r1, r1, 0x70
+/* 802E8C5C 002E48BC 4E 80 00 20 */ blr
+
+nandReadOpenCallback:
+/* 802E8C60 002E48C0 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802E8C64 002E48C4 7C 08 02 A6 */ mflr r0
+/* 802E8C68 002E48C8 2C 03 00 00 */ cmpwi r3, 0
+/* 802E8C6C 002E48CC 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802E8C70 002E48D0 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802E8C74 002E48D4 7C 9F 23 78 */ mr r31, r4
+/* 802E8C78 002E48D8 41 80 00 38 */ blt lbl_802E8CB0
+/* 802E8C7C 002E48DC 80 A4 00 08 */ lwz r5, 8(r4)
+/* 802E8C80 002E48E0 38 C0 00 02 */ li r6, 2
+/* 802E8C84 002E48E4 38 00 00 03 */ li r0, 3
+/* 802E8C88 002E48E8 90 65 00 00 */ stw r3, 0(r5)
+/* 802E8C8C 002E48EC 38 60 00 00 */ li r3, 0
+/* 802E8C90 002E48F0 80 A4 00 08 */ lwz r5, 8(r4)
+/* 802E8C94 002E48F4 98 C5 00 89 */ stb r6, 0x89(r5)
+/* 802E8C98 002E48F8 80 A4 00 08 */ lwz r5, 8(r4)
+/* 802E8C9C 002E48FC 98 05 00 8A */ stb r0, 0x8a(r5)
+/* 802E8CA0 002E4900 81 84 00 04 */ lwz r12, 4(r4)
+/* 802E8CA4 002E4904 7D 89 03 A6 */ mtctr r12
+/* 802E8CA8 002E4908 4E 80 04 21 */ bctrl
+/* 802E8CAC 002E490C 48 00 00 18 */ b lbl_802E8CC4
+lbl_802E8CB0:
+/* 802E8CB0 002E4910 48 00 07 59 */ bl nandConvertErrorCode
+/* 802E8CB4 002E4914 81 9F 00 04 */ lwz r12, 4(r31)
+/* 802E8CB8 002E4918 7F E4 FB 78 */ mr r4, r31
+/* 802E8CBC 002E491C 7D 89 03 A6 */ mtctr r12
+/* 802E8CC0 002E4920 4E 80 04 21 */ bctrl
+lbl_802E8CC4:
+/* 802E8CC4 002E4924 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802E8CC8 002E4928 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802E8CCC 002E492C 7C 08 03 A6 */ mtlr r0
+/* 802E8CD0 002E4930 38 21 00 10 */ addi r1, r1, 0x10
+/* 802E8CD4 002E4934 4E 80 00 20 */ blr
+
+.global NANDSafeCloseAsync
+NANDSafeCloseAsync:
+/* 802E8CD8 002E4938 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802E8CDC 002E493C 7C 08 02 A6 */ mflr r0
+/* 802E8CE0 002E4940 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E8CE4 002E4944 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802E8CE8 002E4948 7C BF 2B 78 */ mr r31, r5
+/* 802E8CEC 002E494C 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802E8CF0 002E4950 7C 9E 23 78 */ mr r30, r4
+/* 802E8CF4 002E4954 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802E8CF8 002E4958 7C 7D 1B 78 */ mr r29, r3
+/* 802E8CFC 002E495C 48 00 06 F5 */ bl nandIsInitialized
+/* 802E8D00 002E4960 2C 03 00 00 */ cmpwi r3, 0
+/* 802E8D04 002E4964 40 82 00 0C */ bne lbl_802E8D10
+/* 802E8D08 002E4968 38 60 FF 80 */ li r3, -128
+/* 802E8D0C 002E496C 48 00 00 84 */ b lbl_802E8D90
+lbl_802E8D10:
+/* 802E8D10 002E4970 88 1D 00 8A */ lbz r0, 0x8a(r29)
+/* 802E8D14 002E4974 28 00 00 03 */ cmplwi r0, 3
+/* 802E8D18 002E4978 41 82 00 0C */ beq lbl_802E8D24
+/* 802E8D1C 002E497C 38 60 FF F8 */ li r3, -8
+/* 802E8D20 002E4980 48 00 00 70 */ b lbl_802E8D90
+lbl_802E8D24:
+/* 802E8D24 002E4984 88 7D 00 88 */ lbz r3, 0x88(r29)
+/* 802E8D28 002E4988 28 03 00 01 */ cmplwi r3, 1
+/* 802E8D2C 002E498C 40 82 00 24 */ bne lbl_802E8D50
+/* 802E8D30 002E4990 93 BF 00 08 */ stw r29, 8(r31)
+/* 802E8D34 002E4994 3C 80 80 2F */ lis r4, nandReadCloseCallback@ha
+/* 802E8D38 002E4998 7F E5 FB 78 */ mr r5, r31
+/* 802E8D3C 002E499C 93 DF 00 04 */ stw r30, 4(r31)
+/* 802E8D40 002E49A0 38 84 8F 30 */ addi r4, r4, nandReadCloseCallback@l
+/* 802E8D44 002E49A4 80 7D 00 00 */ lwz r3, 0(r29)
+/* 802E8D48 002E49A8 4B FB CC CD */ bl ISFS_CloseAsync
+/* 802E8D4C 002E49AC 48 00 00 40 */ b lbl_802E8D8C
+lbl_802E8D50:
+/* 802E8D50 002E49B0 38 03 00 FE */ addi r0, r3, 0xfe
+/* 802E8D54 002E49B4 54 00 06 3E */ clrlwi r0, r0, 0x18
+/* 802E8D58 002E49B8 28 00 00 01 */ cmplwi r0, 1
+/* 802E8D5C 002E49BC 41 81 00 2C */ bgt lbl_802E8D88
+/* 802E8D60 002E49C0 38 00 00 0A */ li r0, 0xa
+/* 802E8D64 002E49C4 3C 80 80 2F */ lis r4, nandSafeCloseCallback@ha
+/* 802E8D68 002E49C8 93 BF 00 08 */ stw r29, 8(r31)
+/* 802E8D6C 002E49CC 7F E5 FB 78 */ mr r5, r31
+/* 802E8D70 002E49D0 38 84 8D AC */ addi r4, r4, nandSafeCloseCallback@l
+/* 802E8D74 002E49D4 93 DF 00 04 */ stw r30, 4(r31)
+/* 802E8D78 002E49D8 90 1F 00 7C */ stw r0, 0x7c(r31)
+/* 802E8D7C 002E49DC 80 7D 00 00 */ lwz r3, 0(r29)
+/* 802E8D80 002E49E0 4B FB CC 95 */ bl ISFS_CloseAsync
+/* 802E8D84 002E49E4 48 00 00 08 */ b lbl_802E8D8C
+lbl_802E8D88:
+/* 802E8D88 002E49E8 38 60 FF 9B */ li r3, -101
+lbl_802E8D8C:
+/* 802E8D8C 002E49EC 48 00 06 7D */ bl nandConvertErrorCode
+lbl_802E8D90:
+/* 802E8D90 002E49F0 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802E8D94 002E49F4 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802E8D98 002E49F8 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802E8D9C 002E49FC 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802E8DA0 002E4A00 7C 08 03 A6 */ mtlr r0
+/* 802E8DA4 002E4A04 38 21 00 20 */ addi r1, r1, 0x20
+/* 802E8DA8 002E4A08 4E 80 00 20 */ blr
+
+nandSafeCloseCallback:
+/* 802E8DAC 002E4A0C 94 21 FF B0 */ stwu r1, -0x50(r1)
+/* 802E8DB0 002E4A10 7C 08 02 A6 */ mflr r0
+/* 802E8DB4 002E4A14 2C 03 00 00 */ cmpwi r3, 0
+/* 802E8DB8 002E4A18 90 01 00 54 */ stw r0, 0x54(r1)
+/* 802E8DBC 002E4A1C 93 E1 00 4C */ stw r31, 0x4c(r1)
+/* 802E8DC0 002E4A20 7C 9F 23 78 */ mr r31, r4
+/* 802E8DC4 002E4A24 40 82 01 44 */ bne lbl_802E8F08
+/* 802E8DC8 002E4A28 80 A4 00 7C */ lwz r5, 0x7c(r4)
+/* 802E8DCC 002E4A2C 38 C0 FF 8B */ li r6, -117
+/* 802E8DD0 002E4A30 80 E4 00 08 */ lwz r7, 8(r4)
+/* 802E8DD4 002E4A34 38 05 00 01 */ addi r0, r5, 1
+/* 802E8DD8 002E4A38 2C 00 00 0B */ cmpwi r0, 0xb
+/* 802E8DDC 002E4A3C 90 04 00 7C */ stw r0, 0x7c(r4)
+/* 802E8DE0 002E4A40 40 82 00 28 */ bne lbl_802E8E08
+/* 802E8DE4 002E4A44 38 00 00 06 */ li r0, 6
+/* 802E8DE8 002E4A48 3C 80 80 2F */ lis r4, nandSafeCloseCallback@ha
+/* 802E8DEC 002E4A4C 98 07 00 89 */ stb r0, 0x89(r7)
+/* 802E8DF0 002E4A50 7F E5 FB 78 */ mr r5, r31
+/* 802E8DF4 002E4A54 38 84 8D AC */ addi r4, r4, nandSafeCloseCallback@l
+/* 802E8DF8 002E4A58 80 67 00 04 */ lwz r3, 4(r7)
+/* 802E8DFC 002E4A5C 4B FB CC 19 */ bl ISFS_CloseAsync
+/* 802E8E00 002E4A60 7C 66 1B 78 */ mr r6, r3
+/* 802E8E04 002E4A64 48 00 00 E0 */ b lbl_802E8EE4
+lbl_802E8E08:
+/* 802E8E08 002E4A68 2C 00 00 0C */ cmpwi r0, 0xc
+/* 802E8E0C 002E4A6C 40 82 00 2C */ bne lbl_802E8E38
+/* 802E8E10 002E4A70 38 00 00 07 */ li r0, 7
+/* 802E8E14 002E4A74 3C A0 80 2F */ lis r5, nandSafeCloseCallback@ha
+/* 802E8E18 002E4A78 98 07 00 89 */ stb r0, 0x89(r7)
+/* 802E8E1C 002E4A7C 7F E6 FB 78 */ mr r6, r31
+/* 802E8E20 002E4A80 38 67 00 48 */ addi r3, r7, 0x48
+/* 802E8E24 002E4A84 38 87 00 08 */ addi r4, r7, 8
+/* 802E8E28 002E4A88 38 A5 8D AC */ addi r5, r5, nandSafeCloseCallback@l
+/* 802E8E2C 002E4A8C 4B FB C4 09 */ bl ISFS_RenameAsync
+/* 802E8E30 002E4A90 7C 66 1B 78 */ mr r6, r3
+/* 802E8E34 002E4A94 48 00 00 B0 */ b lbl_802E8EE4
+lbl_802E8E38:
+/* 802E8E38 002E4A98 2C 00 00 0D */ cmpwi r0, 0xd
+/* 802E8E3C 002E4A9C 40 82 00 78 */ bne lbl_802E8EB4
+/* 802E8E40 002E4AA0 38 A0 00 00 */ li r5, 0
+/* 802E8E44 002E4AA4 38 00 00 08 */ li r0, 8
+/* 802E8E48 002E4AA8 90 A1 00 08 */ stw r5, 8(r1)
+/* 802E8E4C 002E4AAC 38 61 00 08 */ addi r3, r1, 8
+/* 802E8E50 002E4AB0 38 87 00 48 */ addi r4, r7, 0x48
+/* 802E8E54 002E4AB4 90 A1 00 0C */ stw r5, 0xc(r1)
+/* 802E8E58 002E4AB8 90 A1 00 10 */ stw r5, 0x10(r1)
+/* 802E8E5C 002E4ABC 90 A1 00 14 */ stw r5, 0x14(r1)
+/* 802E8E60 002E4AC0 90 A1 00 18 */ stw r5, 0x18(r1)
+/* 802E8E64 002E4AC4 90 A1 00 1C */ stw r5, 0x1c(r1)
+/* 802E8E68 002E4AC8 90 A1 00 20 */ stw r5, 0x20(r1)
+/* 802E8E6C 002E4ACC 90 A1 00 24 */ stw r5, 0x24(r1)
+/* 802E8E70 002E4AD0 90 A1 00 28 */ stw r5, 0x28(r1)
+/* 802E8E74 002E4AD4 90 A1 00 2C */ stw r5, 0x2c(r1)
+/* 802E8E78 002E4AD8 90 A1 00 30 */ stw r5, 0x30(r1)
+/* 802E8E7C 002E4ADC 90 A1 00 34 */ stw r5, 0x34(r1)
+/* 802E8E80 002E4AE0 90 A1 00 38 */ stw r5, 0x38(r1)
+/* 802E8E84 002E4AE4 90 A1 00 3C */ stw r5, 0x3c(r1)
+/* 802E8E88 002E4AE8 90 A1 00 40 */ stw r5, 0x40(r1)
+/* 802E8E8C 002E4AEC 90 A1 00 44 */ stw r5, 0x44(r1)
+/* 802E8E90 002E4AF0 98 07 00 89 */ stb r0, 0x89(r7)
+/* 802E8E94 002E4AF4 48 00 07 0D */ bl nandGetParentDirectory
+/* 802E8E98 002E4AF8 3C 80 80 2F */ lis r4, nandSafeCloseCallback@ha
+/* 802E8E9C 002E4AFC 7F E5 FB 78 */ mr r5, r31
+/* 802E8EA0 002E4B00 38 61 00 08 */ addi r3, r1, 8
+/* 802E8EA4 002E4B04 38 84 8D AC */ addi r4, r4, nandSafeCloseCallback@l
+/* 802E8EA8 002E4B08 4B FB C2 BD */ bl ISFS_DeleteAsync
+/* 802E8EAC 002E4B0C 7C 66 1B 78 */ mr r6, r3
+/* 802E8EB0 002E4B10 48 00 00 34 */ b lbl_802E8EE4
+lbl_802E8EB4:
+/* 802E8EB4 002E4B14 2C 00 00 0E */ cmpwi r0, 0xe
+/* 802E8EB8 002E4B18 40 82 00 2C */ bne lbl_802E8EE4
+/* 802E8EBC 002E4B1C 38 80 00 09 */ li r4, 9
+/* 802E8EC0 002E4B20 38 00 00 04 */ li r0, 4
+/* 802E8EC4 002E4B24 98 87 00 89 */ stb r4, 0x89(r7)
+/* 802E8EC8 002E4B28 98 07 00 8A */ stb r0, 0x8a(r7)
+/* 802E8ECC 002E4B2C 48 00 05 3D */ bl nandConvertErrorCode
+/* 802E8ED0 002E4B30 81 9F 00 04 */ lwz r12, 4(r31)
+/* 802E8ED4 002E4B34 7F E4 FB 78 */ mr r4, r31
+/* 802E8ED8 002E4B38 7D 89 03 A6 */ mtctr r12
+/* 802E8EDC 002E4B3C 4E 80 04 21 */ bctrl
+/* 802E8EE0 002E4B40 48 00 00 3C */ b lbl_802E8F1C
+lbl_802E8EE4:
+/* 802E8EE4 002E4B44 2C 06 00 00 */ cmpwi r6, 0
+/* 802E8EE8 002E4B48 41 82 00 34 */ beq lbl_802E8F1C
+/* 802E8EEC 002E4B4C 7C C3 33 78 */ mr r3, r6
+/* 802E8EF0 002E4B50 48 00 05 19 */ bl nandConvertErrorCode
+/* 802E8EF4 002E4B54 81 9F 00 04 */ lwz r12, 4(r31)
+/* 802E8EF8 002E4B58 7F E4 FB 78 */ mr r4, r31
+/* 802E8EFC 002E4B5C 7D 89 03 A6 */ mtctr r12
+/* 802E8F00 002E4B60 4E 80 04 21 */ bctrl
+/* 802E8F04 002E4B64 48 00 00 18 */ b lbl_802E8F1C
+lbl_802E8F08:
+/* 802E8F08 002E4B68 48 00 05 01 */ bl nandConvertErrorCode
+/* 802E8F0C 002E4B6C 81 9F 00 04 */ lwz r12, 4(r31)
+/* 802E8F10 002E4B70 7F E4 FB 78 */ mr r4, r31
+/* 802E8F14 002E4B74 7D 89 03 A6 */ mtctr r12
+/* 802E8F18 002E4B78 4E 80 04 21 */ bctrl
+lbl_802E8F1C:
+/* 802E8F1C 002E4B7C 80 01 00 54 */ lwz r0, 0x54(r1)
+/* 802E8F20 002E4B80 83 E1 00 4C */ lwz r31, 0x4c(r1)
+/* 802E8F24 002E4B84 7C 08 03 A6 */ mtlr r0
+/* 802E8F28 002E4B88 38 21 00 50 */ addi r1, r1, 0x50
+/* 802E8F2C 002E4B8C 4E 80 00 20 */ blr
+
+nandReadCloseCallback:
+/* 802E8F30 002E4B90 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802E8F34 002E4B94 7C 08 02 A6 */ mflr r0
+/* 802E8F38 002E4B98 2C 03 00 00 */ cmpwi r3, 0
+/* 802E8F3C 002E4B9C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802E8F40 002E4BA0 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802E8F44 002E4BA4 7C 9F 23 78 */ mr r31, r4
+/* 802E8F48 002E4BA8 40 82 00 1C */ bne lbl_802E8F64
+/* 802E8F4C 002E4BAC 80 A4 00 08 */ lwz r5, 8(r4)
+/* 802E8F50 002E4BB0 38 C0 00 07 */ li r6, 7
+/* 802E8F54 002E4BB4 38 00 00 04 */ li r0, 4
+/* 802E8F58 002E4BB8 98 C5 00 89 */ stb r6, 0x89(r5)
+/* 802E8F5C 002E4BBC 80 84 00 08 */ lwz r4, 8(r4)
+/* 802E8F60 002E4BC0 98 04 00 8A */ stb r0, 0x8a(r4)
+lbl_802E8F64:
+/* 802E8F64 002E4BC4 48 00 04 A5 */ bl nandConvertErrorCode
+/* 802E8F68 002E4BC8 81 9F 00 04 */ lwz r12, 4(r31)
+/* 802E8F6C 002E4BCC 7F E4 FB 78 */ mr r4, r31
+/* 802E8F70 002E4BD0 7D 89 03 A6 */ mtctr r12
+/* 802E8F74 002E4BD4 4E 80 04 21 */ bctrl
+/* 802E8F78 002E4BD8 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802E8F7C 002E4BDC 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802E8F80 002E4BE0 7C 08 03 A6 */ mtlr r0
+/* 802E8F84 002E4BE4 38 21 00 10 */ addi r1, r1, 0x10
+/* 802E8F88 002E4BE8 4E 80 00 20 */ blr
+
+nandCloseCallback:
+/* 802E8F8C 002E4BEC 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802E8F90 002E4BF0 7C 08 02 A6 */ mflr r0
+/* 802E8F94 002E4BF4 2C 03 00 00 */ cmpwi r3, 0
+/* 802E8F98 002E4BF8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802E8F9C 002E4BFC 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802E8FA0 002E4C00 7C 9F 23 78 */ mr r31, r4
+/* 802E8FA4 002E4C04 40 82 00 1C */ bne lbl_802E8FC0
+/* 802E8FA8 002E4C08 80 A4 00 08 */ lwz r5, 8(r4)
+/* 802E8FAC 002E4C0C 38 C0 00 07 */ li r6, 7
+/* 802E8FB0 002E4C10 38 00 00 02 */ li r0, 2
+/* 802E8FB4 002E4C14 98 C5 00 89 */ stb r6, 0x89(r5)
+/* 802E8FB8 002E4C18 80 84 00 08 */ lwz r4, 8(r4)
+/* 802E8FBC 002E4C1C 98 04 00 8A */ stb r0, 0x8a(r4)
+lbl_802E8FC0:
+/* 802E8FC0 002E4C20 48 00 04 49 */ bl nandConvertErrorCode
+/* 802E8FC4 002E4C24 81 9F 00 04 */ lwz r12, 4(r31)
+/* 802E8FC8 002E4C28 7F E4 FB 78 */ mr r4, r31
+/* 802E8FCC 002E4C2C 7D 89 03 A6 */ mtctr r12
+/* 802E8FD0 002E4C30 4E 80 04 21 */ bctrl
+/* 802E8FD4 002E4C34 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802E8FD8 002E4C38 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802E8FDC 002E4C3C 7C 08 03 A6 */ mtlr r0
+/* 802E8FE0 002E4C40 38 21 00 10 */ addi r1, r1, 0x10
+/* 802E8FE4 002E4C44 4E 80 00 20 */ blr
diff --git a/asm/SDK/NAND/nand.s b/asm/SDK/NAND/nand.s new file mode 100644 index 0000000..d223a48 --- /dev/null +++ b/asm/SDK/NAND/nand.s @@ -0,0 +1,1092 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global nandCreate
+nandCreate:
+/* 802E7450 002E30B0 94 21 FF 90 */ stwu r1, -0x70(r1)
+/* 802E7454 002E30B4 7C 08 02 A6 */ mflr r0
+/* 802E7458 002E30B8 90 01 00 74 */ stw r0, 0x74(r1)
+/* 802E745C 002E30BC 39 61 00 70 */ addi r11, r1, 0x70
+/* 802E7460 002E30C0 4B ED FC C9 */ bl _savegpr_27
+/* 802E7464 002E30C4 38 00 00 00 */ li r0, 0
+/* 802E7468 002E30C8 7C 9B 23 78 */ mr r27, r4
+/* 802E746C 002E30CC 90 01 00 18 */ stw r0, 0x18(r1)
+/* 802E7470 002E30D0 7C 64 1B 78 */ mr r4, r3
+/* 802E7474 002E30D4 7C BC 2B 78 */ mr r28, r5
+/* 802E7478 002E30D8 7C DD 33 78 */ mr r29, r6
+/* 802E747C 002E30DC 90 01 00 1C */ stw r0, 0x1c(r1)
+/* 802E7480 002E30E0 7C FE 3B 78 */ mr r30, r7
+/* 802E7484 002E30E4 7D 1F 43 78 */ mr r31, r8
+/* 802E7488 002E30E8 38 61 00 18 */ addi r3, r1, 0x18
+/* 802E748C 002E30EC 90 01 00 20 */ stw r0, 0x20(r1)
+/* 802E7490 002E30F0 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E7494 002E30F4 90 01 00 28 */ stw r0, 0x28(r1)
+/* 802E7498 002E30F8 90 01 00 2C */ stw r0, 0x2c(r1)
+/* 802E749C 002E30FC 90 01 00 30 */ stw r0, 0x30(r1)
+/* 802E74A0 002E3100 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802E74A4 002E3104 90 01 00 38 */ stw r0, 0x38(r1)
+/* 802E74A8 002E3108 90 01 00 3C */ stw r0, 0x3c(r1)
+/* 802E74AC 002E310C 90 01 00 40 */ stw r0, 0x40(r1)
+/* 802E74B0 002E3110 90 01 00 44 */ stw r0, 0x44(r1)
+/* 802E74B4 002E3114 90 01 00 48 */ stw r0, 0x48(r1)
+/* 802E74B8 002E3118 90 01 00 4C */ stw r0, 0x4c(r1)
+/* 802E74BC 002E311C 90 01 00 50 */ stw r0, 0x50(r1)
+/* 802E74C0 002E3120 90 01 00 54 */ stw r0, 0x54(r1)
+/* 802E74C4 002E3124 90 01 00 10 */ stw r0, 0x10(r1)
+/* 802E74C8 002E3128 90 01 00 0C */ stw r0, 0xc(r1)
+/* 802E74CC 002E312C 90 01 00 08 */ stw r0, 8(r1)
+/* 802E74D0 002E3130 48 00 20 09 */ bl nandGenerateAbsPath
+/* 802E74D4 002E3134 2C 1F 00 00 */ cmpwi r31, 0
+/* 802E74D8 002E3138 40 82 00 1C */ bne lbl_802E74F4
+/* 802E74DC 002E313C 38 61 00 18 */ addi r3, r1, 0x18
+/* 802E74E0 002E3140 48 00 1E 85 */ bl nandIsPrivatePath
+/* 802E74E4 002E3144 2C 03 00 00 */ cmpwi r3, 0
+/* 802E74E8 002E3148 41 82 00 0C */ beq lbl_802E74F4
+/* 802E74EC 002E314C 38 60 FF 9A */ li r3, -102
+/* 802E74F0 002E3150 48 00 00 70 */ b lbl_802E7560
+lbl_802E74F4:
+/* 802E74F4 002E3154 57 60 06 F7 */ rlwinm. r0, r27, 0, 0x1b, 0x1b
+/* 802E74F8 002E3158 40 82 00 0C */ bne lbl_802E7504
+/* 802E74FC 002E315C 38 60 FF 9B */ li r3, -101
+/* 802E7500 002E3160 48 00 00 60 */ b lbl_802E7560
+lbl_802E7504:
+/* 802E7504 002E3164 7F 63 DB 78 */ mr r3, r27
+/* 802E7508 002E3168 38 81 00 10 */ addi r4, r1, 0x10
+/* 802E750C 002E316C 38 A1 00 0C */ addi r5, r1, 0xc
+/* 802E7510 002E3170 38 C1 00 08 */ addi r6, r1, 8
+/* 802E7514 002E3174 48 00 0A 95 */ bl nandSplitPerm
+/* 802E7518 002E3178 2C 1E 00 00 */ cmpwi r30, 0
+/* 802E751C 002E317C 41 82 00 2C */ beq lbl_802E7548
+/* 802E7520 002E3180 3D 00 80 2F */ lis r8, nandCallback@ha
+/* 802E7524 002E3184 80 A1 00 10 */ lwz r5, 0x10(r1)
+/* 802E7528 002E3188 80 C1 00 0C */ lwz r6, 0xc(r1)
+/* 802E752C 002E318C 7F 84 E3 78 */ mr r4, r28
+/* 802E7530 002E3190 80 E1 00 08 */ lwz r7, 8(r1)
+/* 802E7534 002E3194 7F A9 EB 78 */ mr r9, r29
+/* 802E7538 002E3198 38 61 00 18 */ addi r3, r1, 0x18
+/* 802E753C 002E319C 39 08 9F 08 */ addi r8, r8, nandCallback@l
+/* 802E7540 002E31A0 4B FB E0 11 */ bl ISFS_CreateFileAsync
+/* 802E7544 002E31A4 48 00 00 1C */ b lbl_802E7560
+lbl_802E7548:
+/* 802E7548 002E31A8 80 A1 00 10 */ lwz r5, 0x10(r1)
+/* 802E754C 002E31AC 7F 84 E3 78 */ mr r4, r28
+/* 802E7550 002E31B0 80 C1 00 0C */ lwz r6, 0xc(r1)
+/* 802E7554 002E31B4 38 61 00 18 */ addi r3, r1, 0x18
+/* 802E7558 002E31B8 80 E1 00 08 */ lwz r7, 8(r1)
+/* 802E755C 002E31BC 4B FB DF 01 */ bl ISFS_CreateFile
+lbl_802E7560:
+/* 802E7560 002E31C0 39 61 00 70 */ addi r11, r1, 0x70
+/* 802E7564 002E31C4 4B ED FC 11 */ bl _restgpr_27
+/* 802E7568 002E31C8 80 01 00 74 */ lwz r0, 0x74(r1)
+/* 802E756C 002E31CC 7C 08 03 A6 */ mtlr r0
+/* 802E7570 002E31D0 38 21 00 70 */ addi r1, r1, 0x70
+/* 802E7574 002E31D4 4E 80 00 20 */ blr
+
+.global NANDCreate
+NANDCreate:
+/* 802E7578 002E31D8 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802E757C 002E31DC 7C 08 02 A6 */ mflr r0
+/* 802E7580 002E31E0 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E7584 002E31E4 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802E7588 002E31E8 7C BF 2B 78 */ mr r31, r5
+/* 802E758C 002E31EC 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802E7590 002E31F0 7C 9E 23 78 */ mr r30, r4
+/* 802E7594 002E31F4 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802E7598 002E31F8 7C 7D 1B 78 */ mr r29, r3
+/* 802E759C 002E31FC 48 00 1E 55 */ bl nandIsInitialized
+/* 802E75A0 002E3200 2C 03 00 00 */ cmpwi r3, 0
+/* 802E75A4 002E3204 41 82 00 28 */ beq lbl_802E75CC
+/* 802E75A8 002E3208 7F A3 EB 78 */ mr r3, r29
+/* 802E75AC 002E320C 7F C4 F3 78 */ mr r4, r30
+/* 802E75B0 002E3210 7F E5 FB 78 */ mr r5, r31
+/* 802E75B4 002E3214 38 C0 00 00 */ li r6, 0
+/* 802E75B8 002E3218 38 E0 00 00 */ li r7, 0
+/* 802E75BC 002E321C 39 00 00 00 */ li r8, 0
+/* 802E75C0 002E3220 4B FF FE 91 */ bl nandCreate
+/* 802E75C4 002E3224 48 00 1E 45 */ bl nandConvertErrorCode
+/* 802E75C8 002E3228 48 00 00 08 */ b lbl_802E75D0
+lbl_802E75CC:
+/* 802E75CC 002E322C 38 60 FF 80 */ li r3, -128
+lbl_802E75D0:
+/* 802E75D0 002E3230 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802E75D4 002E3234 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802E75D8 002E3238 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802E75DC 002E323C 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802E75E0 002E3240 7C 08 03 A6 */ mtlr r0
+/* 802E75E4 002E3244 38 21 00 20 */ addi r1, r1, 0x20
+/* 802E75E8 002E3248 4E 80 00 20 */ blr
+
+.global NANDPrivateCreate
+NANDPrivateCreate:
+/* 802E75EC 002E324C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802E75F0 002E3250 7C 08 02 A6 */ mflr r0
+/* 802E75F4 002E3254 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E75F8 002E3258 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802E75FC 002E325C 7C BF 2B 78 */ mr r31, r5
+/* 802E7600 002E3260 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802E7604 002E3264 7C 9E 23 78 */ mr r30, r4
+/* 802E7608 002E3268 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802E760C 002E326C 7C 7D 1B 78 */ mr r29, r3
+/* 802E7610 002E3270 48 00 1D E1 */ bl nandIsInitialized
+/* 802E7614 002E3274 2C 03 00 00 */ cmpwi r3, 0
+/* 802E7618 002E3278 41 82 00 28 */ beq lbl_802E7640
+/* 802E761C 002E327C 7F A3 EB 78 */ mr r3, r29
+/* 802E7620 002E3280 7F C4 F3 78 */ mr r4, r30
+/* 802E7624 002E3284 7F E5 FB 78 */ mr r5, r31
+/* 802E7628 002E3288 38 C0 00 00 */ li r6, 0
+/* 802E762C 002E328C 38 E0 00 00 */ li r7, 0
+/* 802E7630 002E3290 39 00 00 01 */ li r8, 1
+/* 802E7634 002E3294 4B FF FE 1D */ bl nandCreate
+/* 802E7638 002E3298 48 00 1D D1 */ bl nandConvertErrorCode
+/* 802E763C 002E329C 48 00 00 08 */ b lbl_802E7644
+lbl_802E7640:
+/* 802E7640 002E32A0 38 60 FF 80 */ li r3, -128
+lbl_802E7644:
+/* 802E7644 002E32A4 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802E7648 002E32A8 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802E764C 002E32AC 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802E7650 002E32B0 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802E7654 002E32B4 7C 08 03 A6 */ mtlr r0
+/* 802E7658 002E32B8 38 21 00 20 */ addi r1, r1, 0x20
+/* 802E765C 002E32BC 4E 80 00 20 */ blr
+
+.global NANDCreateAsync
+NANDCreateAsync:
+/* 802E7660 002E32C0 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802E7664 002E32C4 7C 08 02 A6 */ mflr r0
+/* 802E7668 002E32C8 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E766C 002E32CC 39 61 00 20 */ addi r11, r1, 0x20
+/* 802E7670 002E32D0 4B ED FA B9 */ bl _savegpr_27
+/* 802E7674 002E32D4 7C 7B 1B 78 */ mr r27, r3
+/* 802E7678 002E32D8 7C 9C 23 78 */ mr r28, r4
+/* 802E767C 002E32DC 7C BD 2B 78 */ mr r29, r5
+/* 802E7680 002E32E0 7C DE 33 78 */ mr r30, r6
+/* 802E7684 002E32E4 7C FF 3B 78 */ mr r31, r7
+/* 802E7688 002E32E8 48 00 1D 69 */ bl nandIsInitialized
+/* 802E768C 002E32EC 2C 03 00 00 */ cmpwi r3, 0
+/* 802E7690 002E32F0 40 82 00 0C */ bne lbl_802E769C
+/* 802E7694 002E32F4 38 60 FF 80 */ li r3, -128
+/* 802E7698 002E32F8 48 00 00 28 */ b lbl_802E76C0
+lbl_802E769C:
+/* 802E769C 002E32FC 93 DF 00 04 */ stw r30, 4(r31)
+/* 802E76A0 002E3300 7F 63 DB 78 */ mr r3, r27
+/* 802E76A4 002E3304 7F 84 E3 78 */ mr r4, r28
+/* 802E76A8 002E3308 7F A5 EB 78 */ mr r5, r29
+/* 802E76AC 002E330C 7F E6 FB 78 */ mr r6, r31
+/* 802E76B0 002E3310 38 E0 00 01 */ li r7, 1
+/* 802E76B4 002E3314 39 00 00 00 */ li r8, 0
+/* 802E76B8 002E3318 4B FF FD 99 */ bl nandCreate
+/* 802E76BC 002E331C 48 00 1D 4D */ bl nandConvertErrorCode
+lbl_802E76C0:
+/* 802E76C0 002E3320 39 61 00 20 */ addi r11, r1, 0x20
+/* 802E76C4 002E3324 4B ED FA B1 */ bl _restgpr_27
+/* 802E76C8 002E3328 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802E76CC 002E332C 7C 08 03 A6 */ mtlr r0
+/* 802E76D0 002E3330 38 21 00 20 */ addi r1, r1, 0x20
+/* 802E76D4 002E3334 4E 80 00 20 */ blr
+
+.global NANDPrivateCreateAsync
+NANDPrivateCreateAsync:
+/* 802E76D8 002E3338 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802E76DC 002E333C 7C 08 02 A6 */ mflr r0
+/* 802E76E0 002E3340 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E76E4 002E3344 39 61 00 20 */ addi r11, r1, 0x20
+/* 802E76E8 002E3348 4B ED FA 41 */ bl _savegpr_27
+/* 802E76EC 002E334C 7C 7B 1B 78 */ mr r27, r3
+/* 802E76F0 002E3350 7C 9C 23 78 */ mr r28, r4
+/* 802E76F4 002E3354 7C BD 2B 78 */ mr r29, r5
+/* 802E76F8 002E3358 7C DE 33 78 */ mr r30, r6
+/* 802E76FC 002E335C 7C FF 3B 78 */ mr r31, r7
+/* 802E7700 002E3360 48 00 1C F1 */ bl nandIsInitialized
+/* 802E7704 002E3364 2C 03 00 00 */ cmpwi r3, 0
+/* 802E7708 002E3368 40 82 00 0C */ bne lbl_802E7714
+/* 802E770C 002E336C 38 60 FF 80 */ li r3, -128
+/* 802E7710 002E3370 48 00 00 28 */ b lbl_802E7738
+lbl_802E7714:
+/* 802E7714 002E3374 93 DF 00 04 */ stw r30, 4(r31)
+/* 802E7718 002E3378 7F 63 DB 78 */ mr r3, r27
+/* 802E771C 002E337C 7F 84 E3 78 */ mr r4, r28
+/* 802E7720 002E3380 7F A5 EB 78 */ mr r5, r29
+/* 802E7724 002E3384 7F E6 FB 78 */ mr r6, r31
+/* 802E7728 002E3388 38 E0 00 01 */ li r7, 1
+/* 802E772C 002E338C 39 00 00 01 */ li r8, 1
+/* 802E7730 002E3390 4B FF FD 21 */ bl nandCreate
+/* 802E7734 002E3394 48 00 1C D5 */ bl nandConvertErrorCode
+lbl_802E7738:
+/* 802E7738 002E3398 39 61 00 20 */ addi r11, r1, 0x20
+/* 802E773C 002E339C 4B ED FA 39 */ bl _restgpr_27
+/* 802E7740 002E33A0 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802E7744 002E33A4 7C 08 03 A6 */ mtlr r0
+/* 802E7748 002E33A8 38 21 00 20 */ addi r1, r1, 0x20
+/* 802E774C 002E33AC 4E 80 00 20 */ blr
+
+.global NANDDelete
+NANDDelete:
+/* 802E7750 002E33B0 94 21 FF B0 */ stwu r1, -0x50(r1)
+/* 802E7754 002E33B4 7C 08 02 A6 */ mflr r0
+/* 802E7758 002E33B8 90 01 00 54 */ stw r0, 0x54(r1)
+/* 802E775C 002E33BC 93 E1 00 4C */ stw r31, 0x4c(r1)
+/* 802E7760 002E33C0 7C 7F 1B 78 */ mr r31, r3
+/* 802E7764 002E33C4 48 00 1C 8D */ bl nandIsInitialized
+/* 802E7768 002E33C8 2C 03 00 00 */ cmpwi r3, 0
+/* 802E776C 002E33CC 40 82 00 0C */ bne lbl_802E7778
+/* 802E7770 002E33D0 38 60 FF 80 */ li r3, -128
+/* 802E7774 002E33D4 48 00 00 78 */ b lbl_802E77EC
+lbl_802E7778:
+/* 802E7778 002E33D8 38 00 00 00 */ li r0, 0
+/* 802E777C 002E33DC 7F E4 FB 78 */ mr r4, r31
+/* 802E7780 002E33E0 90 01 00 08 */ stw r0, 8(r1)
+/* 802E7784 002E33E4 38 61 00 08 */ addi r3, r1, 8
+/* 802E7788 002E33E8 90 01 00 0C */ stw r0, 0xc(r1)
+/* 802E778C 002E33EC 90 01 00 10 */ stw r0, 0x10(r1)
+/* 802E7790 002E33F0 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802E7794 002E33F4 90 01 00 18 */ stw r0, 0x18(r1)
+/* 802E7798 002E33F8 90 01 00 1C */ stw r0, 0x1c(r1)
+/* 802E779C 002E33FC 90 01 00 20 */ stw r0, 0x20(r1)
+/* 802E77A0 002E3400 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E77A4 002E3404 90 01 00 28 */ stw r0, 0x28(r1)
+/* 802E77A8 002E3408 90 01 00 2C */ stw r0, 0x2c(r1)
+/* 802E77AC 002E340C 90 01 00 30 */ stw r0, 0x30(r1)
+/* 802E77B0 002E3410 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802E77B4 002E3414 90 01 00 38 */ stw r0, 0x38(r1)
+/* 802E77B8 002E3418 90 01 00 3C */ stw r0, 0x3c(r1)
+/* 802E77BC 002E341C 90 01 00 40 */ stw r0, 0x40(r1)
+/* 802E77C0 002E3420 90 01 00 44 */ stw r0, 0x44(r1)
+/* 802E77C4 002E3424 48 00 1D 15 */ bl nandGenerateAbsPath
+/* 802E77C8 002E3428 38 61 00 08 */ addi r3, r1, 8
+/* 802E77CC 002E342C 48 00 1B 99 */ bl nandIsPrivatePath
+/* 802E77D0 002E3430 2C 03 00 00 */ cmpwi r3, 0
+/* 802E77D4 002E3434 41 82 00 0C */ beq lbl_802E77E0
+/* 802E77D8 002E3438 38 60 FF 9A */ li r3, -102
+/* 802E77DC 002E343C 48 00 00 0C */ b lbl_802E77E8
+lbl_802E77E0:
+/* 802E77E0 002E3440 38 61 00 08 */ addi r3, r1, 8
+/* 802E77E4 002E3444 4B FB D8 A9 */ bl ISFS_Delete
+lbl_802E77E8:
+/* 802E77E8 002E3448 48 00 1C 21 */ bl nandConvertErrorCode
+lbl_802E77EC:
+/* 802E77EC 002E344C 80 01 00 54 */ lwz r0, 0x54(r1)
+/* 802E77F0 002E3450 83 E1 00 4C */ lwz r31, 0x4c(r1)
+/* 802E77F4 002E3454 7C 08 03 A6 */ mtlr r0
+/* 802E77F8 002E3458 38 21 00 50 */ addi r1, r1, 0x50
+/* 802E77FC 002E345C 4E 80 00 20 */ blr
+
+.global NANDPrivateDeleteAsync
+NANDPrivateDeleteAsync:
+/* 802E7800 002E3460 94 21 FF A0 */ stwu r1, -0x60(r1)
+/* 802E7804 002E3464 7C 08 02 A6 */ mflr r0
+/* 802E7808 002E3468 90 01 00 64 */ stw r0, 0x64(r1)
+/* 802E780C 002E346C 93 E1 00 5C */ stw r31, 0x5c(r1)
+/* 802E7810 002E3470 7C BF 2B 78 */ mr r31, r5
+/* 802E7814 002E3474 93 C1 00 58 */ stw r30, 0x58(r1)
+/* 802E7818 002E3478 7C 9E 23 78 */ mr r30, r4
+/* 802E781C 002E347C 93 A1 00 54 */ stw r29, 0x54(r1)
+/* 802E7820 002E3480 7C 7D 1B 78 */ mr r29, r3
+/* 802E7824 002E3484 48 00 1B CD */ bl nandIsInitialized
+/* 802E7828 002E3488 2C 03 00 00 */ cmpwi r3, 0
+/* 802E782C 002E348C 40 82 00 0C */ bne lbl_802E7838
+/* 802E7830 002E3490 38 60 FF 80 */ li r3, -128
+/* 802E7834 002E3494 48 00 00 70 */ b lbl_802E78A4
+lbl_802E7838:
+/* 802E7838 002E3498 93 DF 00 04 */ stw r30, 4(r31)
+/* 802E783C 002E349C 38 00 00 00 */ li r0, 0
+/* 802E7840 002E34A0 7F A4 EB 78 */ mr r4, r29
+/* 802E7844 002E34A4 38 61 00 08 */ addi r3, r1, 8
+/* 802E7848 002E34A8 90 01 00 08 */ stw r0, 8(r1)
+/* 802E784C 002E34AC 90 01 00 0C */ stw r0, 0xc(r1)
+/* 802E7850 002E34B0 90 01 00 10 */ stw r0, 0x10(r1)
+/* 802E7854 002E34B4 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802E7858 002E34B8 90 01 00 18 */ stw r0, 0x18(r1)
+/* 802E785C 002E34BC 90 01 00 1C */ stw r0, 0x1c(r1)
+/* 802E7860 002E34C0 90 01 00 20 */ stw r0, 0x20(r1)
+/* 802E7864 002E34C4 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E7868 002E34C8 90 01 00 28 */ stw r0, 0x28(r1)
+/* 802E786C 002E34CC 90 01 00 2C */ stw r0, 0x2c(r1)
+/* 802E7870 002E34D0 90 01 00 30 */ stw r0, 0x30(r1)
+/* 802E7874 002E34D4 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802E7878 002E34D8 90 01 00 38 */ stw r0, 0x38(r1)
+/* 802E787C 002E34DC 90 01 00 3C */ stw r0, 0x3c(r1)
+/* 802E7880 002E34E0 90 01 00 40 */ stw r0, 0x40(r1)
+/* 802E7884 002E34E4 90 01 00 44 */ stw r0, 0x44(r1)
+/* 802E7888 002E34E8 48 00 1C 51 */ bl nandGenerateAbsPath
+/* 802E788C 002E34EC 3C 80 80 2F */ lis r4, nandCallback@ha
+/* 802E7890 002E34F0 7F E5 FB 78 */ mr r5, r31
+/* 802E7894 002E34F4 38 61 00 08 */ addi r3, r1, 8
+/* 802E7898 002E34F8 38 84 9F 08 */ addi r4, r4, nandCallback@l
+/* 802E789C 002E34FC 4B FB D8 C9 */ bl ISFS_DeleteAsync
+/* 802E78A0 002E3500 48 00 1B 69 */ bl nandConvertErrorCode
+lbl_802E78A4:
+/* 802E78A4 002E3504 80 01 00 64 */ lwz r0, 0x64(r1)
+/* 802E78A8 002E3508 83 E1 00 5C */ lwz r31, 0x5c(r1)
+/* 802E78AC 002E350C 83 C1 00 58 */ lwz r30, 0x58(r1)
+/* 802E78B0 002E3510 83 A1 00 54 */ lwz r29, 0x54(r1)
+/* 802E78B4 002E3514 7C 08 03 A6 */ mtlr r0
+/* 802E78B8 002E3518 38 21 00 60 */ addi r1, r1, 0x60
+/* 802E78BC 002E351C 4E 80 00 20 */ blr
+
+.global NANDRead
+NANDRead:
+/* 802E78C0 002E3520 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802E78C4 002E3524 7C 08 02 A6 */ mflr r0
+/* 802E78C8 002E3528 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E78CC 002E352C 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802E78D0 002E3530 7C BF 2B 78 */ mr r31, r5
+/* 802E78D4 002E3534 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802E78D8 002E3538 7C 9E 23 78 */ mr r30, r4
+/* 802E78DC 002E353C 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802E78E0 002E3540 7C 7D 1B 78 */ mr r29, r3
+/* 802E78E4 002E3544 48 00 1B 0D */ bl nandIsInitialized
+/* 802E78E8 002E3548 2C 03 00 00 */ cmpwi r3, 0
+/* 802E78EC 002E354C 41 82 00 1C */ beq lbl_802E7908
+/* 802E78F0 002E3550 80 7D 00 00 */ lwz r3, 0(r29)
+/* 802E78F4 002E3554 7F C4 F3 78 */ mr r4, r30
+/* 802E78F8 002E3558 7F E5 FB 78 */ mr r5, r31
+/* 802E78FC 002E355C 4B FB DF 8D */ bl ISFS_Read
+/* 802E7900 002E3560 48 00 1B 09 */ bl nandConvertErrorCode
+/* 802E7904 002E3564 48 00 00 08 */ b lbl_802E790C
+lbl_802E7908:
+/* 802E7908 002E3568 38 60 FF 80 */ li r3, -128
+lbl_802E790C:
+/* 802E790C 002E356C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802E7910 002E3570 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802E7914 002E3574 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802E7918 002E3578 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802E791C 002E357C 7C 08 03 A6 */ mtlr r0
+/* 802E7920 002E3580 38 21 00 20 */ addi r1, r1, 0x20
+/* 802E7924 002E3584 4E 80 00 20 */ blr
+
+.global NANDReadAsync
+NANDReadAsync:
+/* 802E7928 002E3588 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802E792C 002E358C 7C 08 02 A6 */ mflr r0
+/* 802E7930 002E3590 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E7934 002E3594 39 61 00 20 */ addi r11, r1, 0x20
+/* 802E7938 002E3598 4B ED F7 F1 */ bl _savegpr_27
+/* 802E793C 002E359C 7C 7B 1B 78 */ mr r27, r3
+/* 802E7940 002E35A0 7C 9C 23 78 */ mr r28, r4
+/* 802E7944 002E35A4 7C BD 2B 78 */ mr r29, r5
+/* 802E7948 002E35A8 7C DE 33 78 */ mr r30, r6
+/* 802E794C 002E35AC 7C FF 3B 78 */ mr r31, r7
+/* 802E7950 002E35B0 48 00 1A A1 */ bl nandIsInitialized
+/* 802E7954 002E35B4 2C 03 00 00 */ cmpwi r3, 0
+/* 802E7958 002E35B8 40 82 00 0C */ bne lbl_802E7964
+/* 802E795C 002E35BC 38 60 FF 80 */ li r3, -128
+/* 802E7960 002E35C0 48 00 00 28 */ b lbl_802E7988
+lbl_802E7964:
+/* 802E7964 002E35C4 93 DF 00 04 */ stw r30, 4(r31)
+/* 802E7968 002E35C8 3C C0 80 2F */ lis r6, nandCallback@ha
+/* 802E796C 002E35CC 7F 84 E3 78 */ mr r4, r28
+/* 802E7970 002E35D0 7F A5 EB 78 */ mr r5, r29
+/* 802E7974 002E35D4 80 7B 00 00 */ lwz r3, 0(r27)
+/* 802E7978 002E35D8 7F E7 FB 78 */ mr r7, r31
+/* 802E797C 002E35DC 38 C6 9F 08 */ addi r6, r6, nandCallback@l
+/* 802E7980 002E35E0 4B FB DF 29 */ bl ISFS_ReadAsync
+/* 802E7984 002E35E4 48 00 1A 85 */ bl nandConvertErrorCode
+lbl_802E7988:
+/* 802E7988 002E35E8 39 61 00 20 */ addi r11, r1, 0x20
+/* 802E798C 002E35EC 4B ED F7 E9 */ bl _restgpr_27
+/* 802E7990 002E35F0 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802E7994 002E35F4 7C 08 03 A6 */ mtlr r0
+/* 802E7998 002E35F8 38 21 00 20 */ addi r1, r1, 0x20
+/* 802E799C 002E35FC 4E 80 00 20 */ blr
+
+.global NANDWrite
+NANDWrite:
+/* 802E79A0 002E3600 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802E79A4 002E3604 7C 08 02 A6 */ mflr r0
+/* 802E79A8 002E3608 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E79AC 002E360C 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802E79B0 002E3610 7C BF 2B 78 */ mr r31, r5
+/* 802E79B4 002E3614 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802E79B8 002E3618 7C 9E 23 78 */ mr r30, r4
+/* 802E79BC 002E361C 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802E79C0 002E3620 7C 7D 1B 78 */ mr r29, r3
+/* 802E79C4 002E3624 48 00 1A 2D */ bl nandIsInitialized
+/* 802E79C8 002E3628 2C 03 00 00 */ cmpwi r3, 0
+/* 802E79CC 002E362C 41 82 00 1C */ beq lbl_802E79E8
+/* 802E79D0 002E3630 80 7D 00 00 */ lwz r3, 0(r29)
+/* 802E79D4 002E3634 7F C4 F3 78 */ mr r4, r30
+/* 802E79D8 002E3638 7F E5 FB 78 */ mr r5, r31
+/* 802E79DC 002E363C 4B FB DF 71 */ bl ISFS_Write
+/* 802E79E0 002E3640 48 00 1A 29 */ bl nandConvertErrorCode
+/* 802E79E4 002E3644 48 00 00 08 */ b lbl_802E79EC
+lbl_802E79E8:
+/* 802E79E8 002E3648 38 60 FF 80 */ li r3, -128
+lbl_802E79EC:
+/* 802E79EC 002E364C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802E79F0 002E3650 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802E79F4 002E3654 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802E79F8 002E3658 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802E79FC 002E365C 7C 08 03 A6 */ mtlr r0
+/* 802E7A00 002E3660 38 21 00 20 */ addi r1, r1, 0x20
+/* 802E7A04 002E3664 4E 80 00 20 */ blr
+
+.global NANDWriteAsync
+NANDWriteAsync:
+/* 802E7A08 002E3668 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802E7A0C 002E366C 7C 08 02 A6 */ mflr r0
+/* 802E7A10 002E3670 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E7A14 002E3674 39 61 00 20 */ addi r11, r1, 0x20
+/* 802E7A18 002E3678 4B ED F7 11 */ bl _savegpr_27
+/* 802E7A1C 002E367C 7C 7B 1B 78 */ mr r27, r3
+/* 802E7A20 002E3680 7C 9C 23 78 */ mr r28, r4
+/* 802E7A24 002E3684 7C BD 2B 78 */ mr r29, r5
+/* 802E7A28 002E3688 7C DE 33 78 */ mr r30, r6
+/* 802E7A2C 002E368C 7C FF 3B 78 */ mr r31, r7
+/* 802E7A30 002E3690 48 00 19 C1 */ bl nandIsInitialized
+/* 802E7A34 002E3694 2C 03 00 00 */ cmpwi r3, 0
+/* 802E7A38 002E3698 40 82 00 0C */ bne lbl_802E7A44
+/* 802E7A3C 002E369C 38 60 FF 80 */ li r3, -128
+/* 802E7A40 002E36A0 48 00 00 28 */ b lbl_802E7A68
+lbl_802E7A44:
+/* 802E7A44 002E36A4 93 DF 00 04 */ stw r30, 4(r31)
+/* 802E7A48 002E36A8 3C C0 80 2F */ lis r6, nandCallback@ha
+/* 802E7A4C 002E36AC 7F 84 E3 78 */ mr r4, r28
+/* 802E7A50 002E36B0 7F A5 EB 78 */ mr r5, r29
+/* 802E7A54 002E36B4 80 7B 00 00 */ lwz r3, 0(r27)
+/* 802E7A58 002E36B8 7F E7 FB 78 */ mr r7, r31
+/* 802E7A5C 002E36BC 38 C6 9F 08 */ addi r6, r6, nandCallback@l
+/* 802E7A60 002E36C0 4B FB DF 0D */ bl ISFS_WriteAsync
+/* 802E7A64 002E36C4 48 00 19 A5 */ bl nandConvertErrorCode
+lbl_802E7A68:
+/* 802E7A68 002E36C8 39 61 00 20 */ addi r11, r1, 0x20
+/* 802E7A6C 002E36CC 4B ED F7 09 */ bl _restgpr_27
+/* 802E7A70 002E36D0 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802E7A74 002E36D4 7C 08 03 A6 */ mtlr r0
+/* 802E7A78 002E36D8 38 21 00 20 */ addi r1, r1, 0x20
+/* 802E7A7C 002E36DC 4E 80 00 20 */ blr
+
+.global NANDSeek
+NANDSeek:
+/* 802E7A80 002E36E0 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802E7A84 002E36E4 7C 08 02 A6 */ mflr r0
+/* 802E7A88 002E36E8 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E7A8C 002E36EC 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802E7A90 002E36F0 7C BF 2B 78 */ mr r31, r5
+/* 802E7A94 002E36F4 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802E7A98 002E36F8 7C 9E 23 78 */ mr r30, r4
+/* 802E7A9C 002E36FC 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802E7AA0 002E3700 7C 7D 1B 78 */ mr r29, r3
+/* 802E7AA4 002E3704 48 00 19 4D */ bl nandIsInitialized
+/* 802E7AA8 002E3708 2C 03 00 00 */ cmpwi r3, 0
+/* 802E7AAC 002E370C 40 82 00 0C */ bne lbl_802E7AB8
+/* 802E7AB0 002E3710 38 60 FF 80 */ li r3, -128
+/* 802E7AB4 002E3714 48 00 00 50 */ b lbl_802E7B04
+lbl_802E7AB8:
+/* 802E7AB8 002E3718 2C 1F 00 01 */ cmpwi r31, 1
+/* 802E7ABC 002E371C 80 7D 00 00 */ lwz r3, 0(r29)
+/* 802E7AC0 002E3720 38 A0 FF FF */ li r5, -1
+/* 802E7AC4 002E3724 41 82 00 28 */ beq lbl_802E7AEC
+/* 802E7AC8 002E3728 40 80 00 10 */ bge lbl_802E7AD8
+/* 802E7ACC 002E372C 2C 1F 00 00 */ cmpwi r31, 0
+/* 802E7AD0 002E3730 40 80 00 14 */ bge lbl_802E7AE4
+/* 802E7AD4 002E3734 48 00 00 24 */ b lbl_802E7AF8
+lbl_802E7AD8:
+/* 802E7AD8 002E3738 2C 1F 00 03 */ cmpwi r31, 3
+/* 802E7ADC 002E373C 40 80 00 1C */ bge lbl_802E7AF8
+/* 802E7AE0 002E3740 48 00 00 14 */ b lbl_802E7AF4
+lbl_802E7AE4:
+/* 802E7AE4 002E3744 38 A0 00 00 */ li r5, 0
+/* 802E7AE8 002E3748 48 00 00 10 */ b lbl_802E7AF8
+lbl_802E7AEC:
+/* 802E7AEC 002E374C 38 A0 00 01 */ li r5, 1
+/* 802E7AF0 002E3750 48 00 00 08 */ b lbl_802E7AF8
+lbl_802E7AF4:
+/* 802E7AF4 002E3754 38 A0 00 02 */ li r5, 2
+lbl_802E7AF8:
+/* 802E7AF8 002E3758 7F C4 F3 78 */ mr r4, r30
+/* 802E7AFC 002E375C 4B FB DC FD */ bl ISFS_Seek
+/* 802E7B00 002E3760 48 00 19 09 */ bl nandConvertErrorCode
+lbl_802E7B04:
+/* 802E7B04 002E3764 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802E7B08 002E3768 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802E7B0C 002E376C 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802E7B10 002E3770 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802E7B14 002E3774 7C 08 03 A6 */ mtlr r0
+/* 802E7B18 002E3778 38 21 00 20 */ addi r1, r1, 0x20
+/* 802E7B1C 002E377C 4E 80 00 20 */ blr
+
+.global NANDSeekAsync
+NANDSeekAsync:
+/* 802E7B20 002E3780 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802E7B24 002E3784 7C 08 02 A6 */ mflr r0
+/* 802E7B28 002E3788 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E7B2C 002E378C 39 61 00 20 */ addi r11, r1, 0x20
+/* 802E7B30 002E3790 4B ED F5 F9 */ bl _savegpr_27
+/* 802E7B34 002E3794 7C 7B 1B 78 */ mr r27, r3
+/* 802E7B38 002E3798 7C 9C 23 78 */ mr r28, r4
+/* 802E7B3C 002E379C 7C BD 2B 78 */ mr r29, r5
+/* 802E7B40 002E37A0 7C DE 33 78 */ mr r30, r6
+/* 802E7B44 002E37A4 7C FF 3B 78 */ mr r31, r7
+/* 802E7B48 002E37A8 48 00 18 A9 */ bl nandIsInitialized
+/* 802E7B4C 002E37AC 2C 03 00 00 */ cmpwi r3, 0
+/* 802E7B50 002E37B0 40 82 00 0C */ bne lbl_802E7B5C
+/* 802E7B54 002E37B4 38 60 FF 80 */ li r3, -128
+/* 802E7B58 002E37B8 48 00 00 60 */ b lbl_802E7BB8
+lbl_802E7B5C:
+/* 802E7B5C 002E37BC 93 DF 00 04 */ stw r30, 4(r31)
+/* 802E7B60 002E37C0 2C 1D 00 01 */ cmpwi r29, 1
+/* 802E7B64 002E37C4 38 A0 FF FF */ li r5, -1
+/* 802E7B68 002E37C8 80 7B 00 00 */ lwz r3, 0(r27)
+/* 802E7B6C 002E37CC 41 82 00 28 */ beq lbl_802E7B94
+/* 802E7B70 002E37D0 40 80 00 10 */ bge lbl_802E7B80
+/* 802E7B74 002E37D4 2C 1D 00 00 */ cmpwi r29, 0
+/* 802E7B78 002E37D8 40 80 00 14 */ bge lbl_802E7B8C
+/* 802E7B7C 002E37DC 48 00 00 24 */ b lbl_802E7BA0
+lbl_802E7B80:
+/* 802E7B80 002E37E0 2C 1D 00 03 */ cmpwi r29, 3
+/* 802E7B84 002E37E4 40 80 00 1C */ bge lbl_802E7BA0
+/* 802E7B88 002E37E8 48 00 00 14 */ b lbl_802E7B9C
+lbl_802E7B8C:
+/* 802E7B8C 002E37EC 38 A0 00 00 */ li r5, 0
+/* 802E7B90 002E37F0 48 00 00 10 */ b lbl_802E7BA0
+lbl_802E7B94:
+/* 802E7B94 002E37F4 38 A0 00 01 */ li r5, 1
+/* 802E7B98 002E37F8 48 00 00 08 */ b lbl_802E7BA0
+lbl_802E7B9C:
+/* 802E7B9C 002E37FC 38 A0 00 02 */ li r5, 2
+lbl_802E7BA0:
+/* 802E7BA0 002E3800 3C C0 80 2F */ lis r6, nandCallback@ha
+/* 802E7BA4 002E3804 7F 84 E3 78 */ mr r4, r28
+/* 802E7BA8 002E3808 7F E7 FB 78 */ mr r7, r31
+/* 802E7BAC 002E380C 38 C6 9F 08 */ addi r6, r6, nandCallback@l
+/* 802E7BB0 002E3810 4B FB DC 4D */ bl ISFS_SeekAsync
+/* 802E7BB4 002E3814 48 00 18 55 */ bl nandConvertErrorCode
+lbl_802E7BB8:
+/* 802E7BB8 002E3818 39 61 00 20 */ addi r11, r1, 0x20
+/* 802E7BBC 002E381C 4B ED F5 B9 */ bl _restgpr_27
+/* 802E7BC0 002E3820 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802E7BC4 002E3824 7C 08 03 A6 */ mtlr r0
+/* 802E7BC8 002E3828 38 21 00 20 */ addi r1, r1, 0x20
+/* 802E7BCC 002E382C 4E 80 00 20 */ blr
+
+.global NANDReadDirAsync
+NANDReadDirAsync:
+/* 802E7BD0 002E3830 94 21 FF A0 */ stwu r1, -0x60(r1)
+/* 802E7BD4 002E3834 7C 08 02 A6 */ mflr r0
+/* 802E7BD8 002E3838 90 01 00 64 */ stw r0, 0x64(r1)
+/* 802E7BDC 002E383C 39 61 00 60 */ addi r11, r1, 0x60
+/* 802E7BE0 002E3840 4B ED F5 49 */ bl _savegpr_27
+/* 802E7BE4 002E3844 7C 7B 1B 78 */ mr r27, r3
+/* 802E7BE8 002E3848 7C 9C 23 78 */ mr r28, r4
+/* 802E7BEC 002E384C 7C BD 2B 78 */ mr r29, r5
+/* 802E7BF0 002E3850 7C DE 33 78 */ mr r30, r6
+/* 802E7BF4 002E3854 7C FF 3B 78 */ mr r31, r7
+/* 802E7BF8 002E3858 48 00 17 F9 */ bl nandIsInitialized
+/* 802E7BFC 002E385C 2C 03 00 00 */ cmpwi r3, 0
+/* 802E7C00 002E3860 40 82 00 0C */ bne lbl_802E7C0C
+/* 802E7C04 002E3864 38 60 FF 80 */ li r3, -128
+/* 802E7C08 002E3868 48 00 00 90 */ b lbl_802E7C98
+lbl_802E7C0C:
+/* 802E7C0C 002E386C 93 DF 00 04 */ stw r30, 4(r31)
+/* 802E7C10 002E3870 38 00 00 00 */ li r0, 0
+/* 802E7C14 002E3874 7F 64 DB 78 */ mr r4, r27
+/* 802E7C18 002E3878 38 61 00 08 */ addi r3, r1, 8
+/* 802E7C1C 002E387C 90 01 00 08 */ stw r0, 8(r1)
+/* 802E7C20 002E3880 90 01 00 0C */ stw r0, 0xc(r1)
+/* 802E7C24 002E3884 90 01 00 10 */ stw r0, 0x10(r1)
+/* 802E7C28 002E3888 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802E7C2C 002E388C 90 01 00 18 */ stw r0, 0x18(r1)
+/* 802E7C30 002E3890 90 01 00 1C */ stw r0, 0x1c(r1)
+/* 802E7C34 002E3894 90 01 00 20 */ stw r0, 0x20(r1)
+/* 802E7C38 002E3898 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E7C3C 002E389C 90 01 00 28 */ stw r0, 0x28(r1)
+/* 802E7C40 002E38A0 90 01 00 2C */ stw r0, 0x2c(r1)
+/* 802E7C44 002E38A4 90 01 00 30 */ stw r0, 0x30(r1)
+/* 802E7C48 002E38A8 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802E7C4C 002E38AC 90 01 00 38 */ stw r0, 0x38(r1)
+/* 802E7C50 002E38B0 90 01 00 3C */ stw r0, 0x3c(r1)
+/* 802E7C54 002E38B4 90 01 00 40 */ stw r0, 0x40(r1)
+/* 802E7C58 002E38B8 90 01 00 44 */ stw r0, 0x44(r1)
+/* 802E7C5C 002E38BC 48 00 18 7D */ bl nandGenerateAbsPath
+/* 802E7C60 002E38C0 38 61 00 08 */ addi r3, r1, 8
+/* 802E7C64 002E38C4 48 00 17 01 */ bl nandIsPrivatePath
+/* 802E7C68 002E38C8 2C 03 00 00 */ cmpwi r3, 0
+/* 802E7C6C 002E38CC 41 82 00 0C */ beq lbl_802E7C78
+/* 802E7C70 002E38D0 38 60 FF 9A */ li r3, -102
+/* 802E7C74 002E38D4 48 00 00 20 */ b lbl_802E7C94
+lbl_802E7C78:
+/* 802E7C78 002E38D8 3C C0 80 2F */ lis r6, nandCallback@ha
+/* 802E7C7C 002E38DC 7F 84 E3 78 */ mr r4, r28
+/* 802E7C80 002E38E0 7F A5 EB 78 */ mr r5, r29
+/* 802E7C84 002E38E4 7F E7 FB 78 */ mr r7, r31
+/* 802E7C88 002E38E8 38 61 00 08 */ addi r3, r1, 8
+/* 802E7C8C 002E38EC 38 C6 9F 08 */ addi r6, r6, nandCallback@l
+/* 802E7C90 002E38F0 4B FB D0 29 */ bl ISFS_ReadDirAsync
+lbl_802E7C94:
+/* 802E7C94 002E38F4 48 00 17 75 */ bl nandConvertErrorCode
+lbl_802E7C98:
+/* 802E7C98 002E38F8 39 61 00 60 */ addi r11, r1, 0x60
+/* 802E7C9C 002E38FC 4B ED F4 D9 */ bl _restgpr_27
+/* 802E7CA0 002E3900 80 01 00 64 */ lwz r0, 0x64(r1)
+/* 802E7CA4 002E3904 7C 08 03 A6 */ mtlr r0
+/* 802E7CA8 002E3908 38 21 00 60 */ addi r1, r1, 0x60
+/* 802E7CAC 002E390C 4E 80 00 20 */ blr
+
+.global nandCreateDir
+nandCreateDir:
+/* 802E7CB0 002E3910 94 21 FF 90 */ stwu r1, -0x70(r1)
+/* 802E7CB4 002E3914 7C 08 02 A6 */ mflr r0
+/* 802E7CB8 002E3918 90 01 00 74 */ stw r0, 0x74(r1)
+/* 802E7CBC 002E391C 39 61 00 70 */ addi r11, r1, 0x70
+/* 802E7CC0 002E3920 4B ED F4 69 */ bl _savegpr_27
+/* 802E7CC4 002E3924 38 00 00 00 */ li r0, 0
+/* 802E7CC8 002E3928 7C 9B 23 78 */ mr r27, r4
+/* 802E7CCC 002E392C 90 01 00 18 */ stw r0, 0x18(r1)
+/* 802E7CD0 002E3930 7C 64 1B 78 */ mr r4, r3
+/* 802E7CD4 002E3934 7C BC 2B 78 */ mr r28, r5
+/* 802E7CD8 002E3938 7C DD 33 78 */ mr r29, r6
+/* 802E7CDC 002E393C 90 01 00 1C */ stw r0, 0x1c(r1)
+/* 802E7CE0 002E3940 7C FE 3B 78 */ mr r30, r7
+/* 802E7CE4 002E3944 7D 1F 43 78 */ mr r31, r8
+/* 802E7CE8 002E3948 38 61 00 18 */ addi r3, r1, 0x18
+/* 802E7CEC 002E394C 90 01 00 20 */ stw r0, 0x20(r1)
+/* 802E7CF0 002E3950 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E7CF4 002E3954 90 01 00 28 */ stw r0, 0x28(r1)
+/* 802E7CF8 002E3958 90 01 00 2C */ stw r0, 0x2c(r1)
+/* 802E7CFC 002E395C 90 01 00 30 */ stw r0, 0x30(r1)
+/* 802E7D00 002E3960 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802E7D04 002E3964 90 01 00 38 */ stw r0, 0x38(r1)
+/* 802E7D08 002E3968 90 01 00 3C */ stw r0, 0x3c(r1)
+/* 802E7D0C 002E396C 90 01 00 40 */ stw r0, 0x40(r1)
+/* 802E7D10 002E3970 90 01 00 44 */ stw r0, 0x44(r1)
+/* 802E7D14 002E3974 90 01 00 48 */ stw r0, 0x48(r1)
+/* 802E7D18 002E3978 90 01 00 4C */ stw r0, 0x4c(r1)
+/* 802E7D1C 002E397C 90 01 00 50 */ stw r0, 0x50(r1)
+/* 802E7D20 002E3980 90 01 00 54 */ stw r0, 0x54(r1)
+/* 802E7D24 002E3984 48 00 17 B5 */ bl nandGenerateAbsPath
+/* 802E7D28 002E3988 2C 1F 00 00 */ cmpwi r31, 0
+/* 802E7D2C 002E398C 40 82 00 1C */ bne lbl_802E7D48
+/* 802E7D30 002E3990 38 61 00 18 */ addi r3, r1, 0x18
+/* 802E7D34 002E3994 48 00 16 31 */ bl nandIsPrivatePath
+/* 802E7D38 002E3998 2C 03 00 00 */ cmpwi r3, 0
+/* 802E7D3C 002E399C 41 82 00 0C */ beq lbl_802E7D48
+/* 802E7D40 002E39A0 38 60 FF 9A */ li r3, -102
+/* 802E7D44 002E39A4 48 00 00 80 */ b lbl_802E7DC4
+lbl_802E7D48:
+/* 802E7D48 002E39A8 57 60 06 F7 */ rlwinm. r0, r27, 0, 0x1b, 0x1b
+/* 802E7D4C 002E39AC 40 82 00 0C */ bne lbl_802E7D58
+/* 802E7D50 002E39B0 38 60 FF 9B */ li r3, -101
+/* 802E7D54 002E39B4 48 00 00 70 */ b lbl_802E7DC4
+lbl_802E7D58:
+/* 802E7D58 002E39B8 38 00 00 00 */ li r0, 0
+/* 802E7D5C 002E39BC 7F 63 DB 78 */ mr r3, r27
+/* 802E7D60 002E39C0 90 01 00 10 */ stw r0, 0x10(r1)
+/* 802E7D64 002E39C4 38 81 00 10 */ addi r4, r1, 0x10
+/* 802E7D68 002E39C8 38 A1 00 0C */ addi r5, r1, 0xc
+/* 802E7D6C 002E39CC 38 C1 00 08 */ addi r6, r1, 8
+/* 802E7D70 002E39D0 90 01 00 0C */ stw r0, 0xc(r1)
+/* 802E7D74 002E39D4 90 01 00 08 */ stw r0, 8(r1)
+/* 802E7D78 002E39D8 48 00 02 31 */ bl nandSplitPerm
+/* 802E7D7C 002E39DC 2C 1E 00 00 */ cmpwi r30, 0
+/* 802E7D80 002E39E0 41 82 00 2C */ beq lbl_802E7DAC
+/* 802E7D84 002E39E4 3D 00 80 2F */ lis r8, nandCallback@ha
+/* 802E7D88 002E39E8 80 A1 00 10 */ lwz r5, 0x10(r1)
+/* 802E7D8C 002E39EC 80 C1 00 0C */ lwz r6, 0xc(r1)
+/* 802E7D90 002E39F0 7F 84 E3 78 */ mr r4, r28
+/* 802E7D94 002E39F4 80 E1 00 08 */ lwz r7, 8(r1)
+/* 802E7D98 002E39F8 7F A9 EB 78 */ mr r9, r29
+/* 802E7D9C 002E39FC 38 61 00 18 */ addi r3, r1, 0x18
+/* 802E7DA0 002E3A00 39 08 9F 08 */ addi r8, r8, nandCallback@l
+/* 802E7DA4 002E3A04 4B FB CC CD */ bl ISFS_CreateDirAsync
+/* 802E7DA8 002E3A08 48 00 00 1C */ b lbl_802E7DC4
+lbl_802E7DAC:
+/* 802E7DAC 002E3A0C 80 A1 00 10 */ lwz r5, 0x10(r1)
+/* 802E7DB0 002E3A10 7F 84 E3 78 */ mr r4, r28
+/* 802E7DB4 002E3A14 80 C1 00 0C */ lwz r6, 0xc(r1)
+/* 802E7DB8 002E3A18 38 61 00 18 */ addi r3, r1, 0x18
+/* 802E7DBC 002E3A1C 80 E1 00 08 */ lwz r7, 8(r1)
+/* 802E7DC0 002E3A20 4B FB CB BD */ bl ISFS_CreateDir
+lbl_802E7DC4:
+/* 802E7DC4 002E3A24 39 61 00 70 */ addi r11, r1, 0x70
+/* 802E7DC8 002E3A28 4B ED F3 AD */ bl _restgpr_27
+/* 802E7DCC 002E3A2C 80 01 00 74 */ lwz r0, 0x74(r1)
+/* 802E7DD0 002E3A30 7C 08 03 A6 */ mtlr r0
+/* 802E7DD4 002E3A34 38 21 00 70 */ addi r1, r1, 0x70
+/* 802E7DD8 002E3A38 4E 80 00 20 */ blr
+
+.global NANDCreateDirAsync
+NANDCreateDirAsync:
+/* 802E7DDC 002E3A3C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802E7DE0 002E3A40 7C 08 02 A6 */ mflr r0
+/* 802E7DE4 002E3A44 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E7DE8 002E3A48 39 61 00 20 */ addi r11, r1, 0x20
+/* 802E7DEC 002E3A4C 4B ED F3 3D */ bl _savegpr_27
+/* 802E7DF0 002E3A50 7C 7B 1B 78 */ mr r27, r3
+/* 802E7DF4 002E3A54 7C 9C 23 78 */ mr r28, r4
+/* 802E7DF8 002E3A58 7C BD 2B 78 */ mr r29, r5
+/* 802E7DFC 002E3A5C 7C DE 33 78 */ mr r30, r6
+/* 802E7E00 002E3A60 7C FF 3B 78 */ mr r31, r7
+/* 802E7E04 002E3A64 48 00 15 ED */ bl nandIsInitialized
+/* 802E7E08 002E3A68 2C 03 00 00 */ cmpwi r3, 0
+/* 802E7E0C 002E3A6C 40 82 00 0C */ bne lbl_802E7E18
+/* 802E7E10 002E3A70 38 60 FF 80 */ li r3, -128
+/* 802E7E14 002E3A74 48 00 00 28 */ b lbl_802E7E3C
+lbl_802E7E18:
+/* 802E7E18 002E3A78 93 DF 00 04 */ stw r30, 4(r31)
+/* 802E7E1C 002E3A7C 7F 63 DB 78 */ mr r3, r27
+/* 802E7E20 002E3A80 7F 84 E3 78 */ mr r4, r28
+/* 802E7E24 002E3A84 7F A5 EB 78 */ mr r5, r29
+/* 802E7E28 002E3A88 7F E6 FB 78 */ mr r6, r31
+/* 802E7E2C 002E3A8C 38 E0 00 01 */ li r7, 1
+/* 802E7E30 002E3A90 39 00 00 00 */ li r8, 0
+/* 802E7E34 002E3A94 4B FF FE 7D */ bl nandCreateDir
+/* 802E7E38 002E3A98 48 00 15 D1 */ bl nandConvertErrorCode
+lbl_802E7E3C:
+/* 802E7E3C 002E3A9C 39 61 00 20 */ addi r11, r1, 0x20
+/* 802E7E40 002E3AA0 4B ED F3 35 */ bl _restgpr_27
+/* 802E7E44 002E3AA4 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802E7E48 002E3AA8 7C 08 03 A6 */ mtlr r0
+/* 802E7E4C 002E3AAC 38 21 00 20 */ addi r1, r1, 0x20
+/* 802E7E50 002E3AB0 4E 80 00 20 */ blr
+
+.global NANDPrivateCreateDirAsync
+NANDPrivateCreateDirAsync:
+/* 802E7E54 002E3AB4 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802E7E58 002E3AB8 7C 08 02 A6 */ mflr r0
+/* 802E7E5C 002E3ABC 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E7E60 002E3AC0 39 61 00 20 */ addi r11, r1, 0x20
+/* 802E7E64 002E3AC4 4B ED F2 C5 */ bl _savegpr_27
+/* 802E7E68 002E3AC8 7C 7B 1B 78 */ mr r27, r3
+/* 802E7E6C 002E3ACC 7C 9C 23 78 */ mr r28, r4
+/* 802E7E70 002E3AD0 7C BD 2B 78 */ mr r29, r5
+/* 802E7E74 002E3AD4 7C DE 33 78 */ mr r30, r6
+/* 802E7E78 002E3AD8 7C FF 3B 78 */ mr r31, r7
+/* 802E7E7C 002E3ADC 48 00 15 75 */ bl nandIsInitialized
+/* 802E7E80 002E3AE0 2C 03 00 00 */ cmpwi r3, 0
+/* 802E7E84 002E3AE4 40 82 00 0C */ bne lbl_802E7E90
+/* 802E7E88 002E3AE8 38 60 FF 80 */ li r3, -128
+/* 802E7E8C 002E3AEC 48 00 00 28 */ b lbl_802E7EB4
+lbl_802E7E90:
+/* 802E7E90 002E3AF0 93 DF 00 04 */ stw r30, 4(r31)
+/* 802E7E94 002E3AF4 7F 63 DB 78 */ mr r3, r27
+/* 802E7E98 002E3AF8 7F 84 E3 78 */ mr r4, r28
+/* 802E7E9C 002E3AFC 7F A5 EB 78 */ mr r5, r29
+/* 802E7EA0 002E3B00 7F E6 FB 78 */ mr r6, r31
+/* 802E7EA4 002E3B04 38 E0 00 01 */ li r7, 1
+/* 802E7EA8 002E3B08 39 00 00 01 */ li r8, 1
+/* 802E7EAC 002E3B0C 4B FF FE 05 */ bl nandCreateDir
+/* 802E7EB0 002E3B10 48 00 15 59 */ bl nandConvertErrorCode
+lbl_802E7EB4:
+/* 802E7EB4 002E3B14 39 61 00 20 */ addi r11, r1, 0x20
+/* 802E7EB8 002E3B18 4B ED F2 BD */ bl _restgpr_27
+/* 802E7EBC 002E3B1C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802E7EC0 002E3B20 7C 08 03 A6 */ mtlr r0
+/* 802E7EC4 002E3B24 38 21 00 20 */ addi r1, r1, 0x20
+/* 802E7EC8 002E3B28 4E 80 00 20 */ blr
+
+.global NANDGetLength
+NANDGetLength:
+/* 802E7ECC 002E3B2C 54 2B 06 FE */ clrlwi r11, r1, 0x1b
+/* 802E7ED0 002E3B30 7C 2C 0B 78 */ mr r12, r1
+/* 802E7ED4 002E3B34 21 6B FF A0 */ subfic r11, r11, -96
+/* 802E7ED8 002E3B38 7C 21 59 6E */ stwux r1, r1, r11
+/* 802E7EDC 002E3B3C 7C 08 02 A6 */ mflr r0
+/* 802E7EE0 002E3B40 90 0C 00 04 */ stw r0, 4(r12)
+/* 802E7EE4 002E3B44 93 EC FF FC */ stw r31, -4(r12)
+/* 802E7EE8 002E3B48 7C 9F 23 78 */ mr r31, r4
+/* 802E7EEC 002E3B4C 93 CC FF F8 */ stw r30, -8(r12)
+/* 802E7EF0 002E3B50 7C 7E 1B 78 */ mr r30, r3
+/* 802E7EF4 002E3B54 48 00 14 FD */ bl nandIsInitialized
+/* 802E7EF8 002E3B58 2C 03 00 00 */ cmpwi r3, 0
+/* 802E7EFC 002E3B5C 40 82 00 0C */ bne lbl_802E7F08
+/* 802E7F00 002E3B60 38 60 FF 80 */ li r3, -128
+/* 802E7F04 002E3B64 48 00 00 34 */ b lbl_802E7F38
+lbl_802E7F08:
+/* 802E7F08 002E3B68 80 7E 00 00 */ lwz r3, 0(r30)
+/* 802E7F0C 002E3B6C 38 81 00 20 */ addi r4, r1, 0x20
+/* 802E7F10 002E3B70 4B FB D8 B5 */ bl ISFS_GetFileStats
+/* 802E7F14 002E3B74 2C 03 00 00 */ cmpwi r3, 0
+/* 802E7F18 002E3B78 40 82 00 1C */ bne lbl_802E7F34
+/* 802E7F1C 002E3B7C 2C 1F 00 00 */ cmpwi r31, 0
+/* 802E7F20 002E3B80 41 82 00 14 */ beq lbl_802E7F34
+/* 802E7F24 002E3B84 80 01 00 20 */ lwz r0, 0x20(r1)
+/* 802E7F28 002E3B88 90 1F 00 00 */ stw r0, 0(r31)
+/* 802E7F2C 002E3B8C 48 00 00 08 */ b lbl_802E7F34
+/* 802E7F30 002E3B90 90 00 00 00 */ stw r0, 0(0)
+lbl_802E7F34:
+/* 802E7F34 002E3B94 48 00 14 D5 */ bl nandConvertErrorCode
+lbl_802E7F38:
+/* 802E7F38 002E3B98 81 41 00 00 */ lwz r10, 0(r1)
+/* 802E7F3C 002E3B9C 80 0A 00 04 */ lwz r0, 4(r10)
+/* 802E7F40 002E3BA0 83 EA FF FC */ lwz r31, -4(r10)
+/* 802E7F44 002E3BA4 83 CA FF F8 */ lwz r30, -8(r10)
+/* 802E7F48 002E3BA8 7C 08 03 A6 */ mtlr r0
+/* 802E7F4C 002E3BAC 7D 41 53 78 */ mr r1, r10
+/* 802E7F50 002E3BB0 4E 80 00 20 */ blr
+
+.global nandComposePerm
+nandComposePerm:
+/* 802E7F54 002E3BB4 54 80 07 FF */ clrlwi. r0, r4, 0x1f
+/* 802E7F58 002E3BB8 38 E0 00 00 */ li r7, 0
+/* 802E7F5C 002E3BBC 41 82 00 08 */ beq lbl_802E7F64
+/* 802E7F60 002E3BC0 60 E7 00 10 */ ori r7, r7, 0x10
+lbl_802E7F64:
+/* 802E7F64 002E3BC4 54 80 07 BD */ rlwinm. r0, r4, 0, 0x1e, 0x1e
+/* 802E7F68 002E3BC8 41 82 00 08 */ beq lbl_802E7F70
+/* 802E7F6C 002E3BCC 60 E7 00 20 */ ori r7, r7, 0x20
+lbl_802E7F70:
+/* 802E7F70 002E3BD0 54 A0 07 FF */ clrlwi. r0, r5, 0x1f
+/* 802E7F74 002E3BD4 41 82 00 08 */ beq lbl_802E7F7C
+/* 802E7F78 002E3BD8 60 E7 00 04 */ ori r7, r7, 4
+lbl_802E7F7C:
+/* 802E7F7C 002E3BDC 54 A0 07 BD */ rlwinm. r0, r5, 0, 0x1e, 0x1e
+/* 802E7F80 002E3BE0 41 82 00 08 */ beq lbl_802E7F88
+/* 802E7F84 002E3BE4 60 E7 00 08 */ ori r7, r7, 8
+lbl_802E7F88:
+/* 802E7F88 002E3BE8 54 C0 07 FF */ clrlwi. r0, r6, 0x1f
+/* 802E7F8C 002E3BEC 41 82 00 08 */ beq lbl_802E7F94
+/* 802E7F90 002E3BF0 60 E7 00 01 */ ori r7, r7, 1
+lbl_802E7F94:
+/* 802E7F94 002E3BF4 54 C0 07 BD */ rlwinm. r0, r6, 0, 0x1e, 0x1e
+/* 802E7F98 002E3BF8 41 82 00 08 */ beq lbl_802E7FA0
+/* 802E7F9C 002E3BFC 60 E7 00 02 */ ori r7, r7, 2
+lbl_802E7FA0:
+/* 802E7FA0 002E3C00 98 E3 00 00 */ stb r7, 0(r3)
+/* 802E7FA4 002E3C04 4E 80 00 20 */ blr
+
+.global nandSplitPerm
+nandSplitPerm:
+/* 802E7FA8 002E3C08 38 E0 00 00 */ li r7, 0
+/* 802E7FAC 002E3C0C 54 60 06 F7 */ rlwinm. r0, r3, 0, 0x1b, 0x1b
+/* 802E7FB0 002E3C10 90 E4 00 00 */ stw r7, 0(r4)
+/* 802E7FB4 002E3C14 90 E5 00 00 */ stw r7, 0(r5)
+/* 802E7FB8 002E3C18 90 E6 00 00 */ stw r7, 0(r6)
+/* 802E7FBC 002E3C1C 41 82 00 10 */ beq lbl_802E7FCC
+/* 802E7FC0 002E3C20 80 04 00 00 */ lwz r0, 0(r4)
+/* 802E7FC4 002E3C24 60 00 00 01 */ ori r0, r0, 1
+/* 802E7FC8 002E3C28 90 04 00 00 */ stw r0, 0(r4)
+lbl_802E7FCC:
+/* 802E7FCC 002E3C2C 54 60 06 B5 */ rlwinm. r0, r3, 0, 0x1a, 0x1a
+/* 802E7FD0 002E3C30 41 82 00 10 */ beq lbl_802E7FE0
+/* 802E7FD4 002E3C34 80 04 00 00 */ lwz r0, 0(r4)
+/* 802E7FD8 002E3C38 60 00 00 02 */ ori r0, r0, 2
+/* 802E7FDC 002E3C3C 90 04 00 00 */ stw r0, 0(r4)
+lbl_802E7FE0:
+/* 802E7FE0 002E3C40 54 60 07 7B */ rlwinm. r0, r3, 0, 0x1d, 0x1d
+/* 802E7FE4 002E3C44 41 82 00 10 */ beq lbl_802E7FF4
+/* 802E7FE8 002E3C48 80 05 00 00 */ lwz r0, 0(r5)
+/* 802E7FEC 002E3C4C 60 00 00 01 */ ori r0, r0, 1
+/* 802E7FF0 002E3C50 90 05 00 00 */ stw r0, 0(r5)
+lbl_802E7FF4:
+/* 802E7FF4 002E3C54 54 60 07 39 */ rlwinm. r0, r3, 0, 0x1c, 0x1c
+/* 802E7FF8 002E3C58 41 82 00 10 */ beq lbl_802E8008
+/* 802E7FFC 002E3C5C 80 05 00 00 */ lwz r0, 0(r5)
+/* 802E8000 002E3C60 60 00 00 02 */ ori r0, r0, 2
+/* 802E8004 002E3C64 90 05 00 00 */ stw r0, 0(r5)
+lbl_802E8008:
+/* 802E8008 002E3C68 54 60 07 FF */ clrlwi. r0, r3, 0x1f
+/* 802E800C 002E3C6C 41 82 00 10 */ beq lbl_802E801C
+/* 802E8010 002E3C70 80 06 00 00 */ lwz r0, 0(r6)
+/* 802E8014 002E3C74 60 00 00 01 */ ori r0, r0, 1
+/* 802E8018 002E3C78 90 06 00 00 */ stw r0, 0(r6)
+lbl_802E801C:
+/* 802E801C 002E3C7C 54 60 07 BD */ rlwinm. r0, r3, 0, 0x1e, 0x1e
+/* 802E8020 002E3C80 4D 82 00 20 */ beqlr
+/* 802E8024 002E3C84 80 06 00 00 */ lwz r0, 0(r6)
+/* 802E8028 002E3C88 60 00 00 02 */ ori r0, r0, 2
+/* 802E802C 002E3C8C 90 06 00 00 */ stw r0, 0(r6)
+/* 802E8030 002E3C90 4E 80 00 20 */ blr
+
+.global nandGetStatus
+nandGetStatus:
+/* 802E8034 002E3C94 94 21 FF 90 */ stwu r1, -0x70(r1)
+/* 802E8038 002E3C98 7C 08 02 A6 */ mflr r0
+/* 802E803C 002E3C9C 90 01 00 74 */ stw r0, 0x74(r1)
+/* 802E8040 002E3CA0 38 00 00 00 */ li r0, 0
+/* 802E8044 002E3CA4 93 E1 00 6C */ stw r31, 0x6c(r1)
+/* 802E8048 002E3CA8 7C FF 3B 78 */ mr r31, r7
+/* 802E804C 002E3CAC 93 C1 00 68 */ stw r30, 0x68(r1)
+/* 802E8050 002E3CB0 7C DE 33 78 */ mr r30, r6
+/* 802E8054 002E3CB4 93 A1 00 64 */ stw r29, 0x64(r1)
+/* 802E8058 002E3CB8 7C BD 2B 78 */ mr r29, r5
+/* 802E805C 002E3CBC 93 81 00 60 */ stw r28, 0x60(r1)
+/* 802E8060 002E3CC0 7C 9C 23 78 */ mr r28, r4
+/* 802E8064 002E3CC4 7C 64 1B 78 */ mr r4, r3
+/* 802E8068 002E3CC8 38 61 00 20 */ addi r3, r1, 0x20
+/* 802E806C 002E3CCC 90 01 00 20 */ stw r0, 0x20(r1)
+/* 802E8070 002E3CD0 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E8074 002E3CD4 90 01 00 28 */ stw r0, 0x28(r1)
+/* 802E8078 002E3CD8 90 01 00 2C */ stw r0, 0x2c(r1)
+/* 802E807C 002E3CDC 90 01 00 30 */ stw r0, 0x30(r1)
+/* 802E8080 002E3CE0 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802E8084 002E3CE4 90 01 00 38 */ stw r0, 0x38(r1)
+/* 802E8088 002E3CE8 90 01 00 3C */ stw r0, 0x3c(r1)
+/* 802E808C 002E3CEC 90 01 00 40 */ stw r0, 0x40(r1)
+/* 802E8090 002E3CF0 90 01 00 44 */ stw r0, 0x44(r1)
+/* 802E8094 002E3CF4 90 01 00 48 */ stw r0, 0x48(r1)
+/* 802E8098 002E3CF8 90 01 00 4C */ stw r0, 0x4c(r1)
+/* 802E809C 002E3CFC 90 01 00 50 */ stw r0, 0x50(r1)
+/* 802E80A0 002E3D00 90 01 00 54 */ stw r0, 0x54(r1)
+/* 802E80A4 002E3D04 90 01 00 58 */ stw r0, 0x58(r1)
+/* 802E80A8 002E3D08 90 01 00 5C */ stw r0, 0x5c(r1)
+/* 802E80AC 002E3D0C 48 00 14 2D */ bl nandGenerateAbsPath
+/* 802E80B0 002E3D10 2C 1F 00 00 */ cmpwi r31, 0
+/* 802E80B4 002E3D14 40 82 00 1C */ bne lbl_802E80D0
+/* 802E80B8 002E3D18 38 61 00 20 */ addi r3, r1, 0x20
+/* 802E80BC 002E3D1C 48 00 12 DD */ bl nandIsUnderPrivatePath
+/* 802E80C0 002E3D20 2C 03 00 00 */ cmpwi r3, 0
+/* 802E80C4 002E3D24 41 82 00 0C */ beq lbl_802E80D0
+/* 802E80C8 002E3D28 38 60 FF 9A */ li r3, -102
+/* 802E80CC 002E3D2C 48 00 00 9C */ b lbl_802E8168
+lbl_802E80D0:
+/* 802E80D0 002E3D30 2C 1E 00 00 */ cmpwi r30, 0
+/* 802E80D4 002E3D34 41 82 00 34 */ beq lbl_802E8108
+/* 802E80D8 002E3D38 3D 40 80 2F */ lis r10, nandGetStatusCallback@ha
+/* 802E80DC 002E3D3C 93 A1 00 08 */ stw r29, 8(r1)
+/* 802E80E0 002E3D40 7F 84 E3 78 */ mr r4, r28
+/* 802E80E4 002E3D44 38 61 00 20 */ addi r3, r1, 0x20
+/* 802E80E8 002E3D48 38 BC 00 04 */ addi r5, r28, 4
+/* 802E80EC 002E3D4C 38 DD 00 20 */ addi r6, r29, 0x20
+/* 802E80F0 002E3D50 38 FD 00 24 */ addi r7, r29, 0x24
+/* 802E80F4 002E3D54 39 1D 00 28 */ addi r8, r29, 0x28
+/* 802E80F8 002E3D58 39 3D 00 2C */ addi r9, r29, 0x2c
+/* 802E80FC 002E3D5C 39 4A 81 88 */ addi r10, r10, nandGetStatusCallback@l
+/* 802E8100 002E3D60 4B FB CE 59 */ bl ISFS_GetAttrAsync
+/* 802E8104 002E3D64 48 00 00 64 */ b lbl_802E8168
+lbl_802E8108:
+/* 802E8108 002E3D68 38 00 00 00 */ li r0, 0
+/* 802E810C 002E3D6C 7F 84 E3 78 */ mr r4, r28
+/* 802E8110 002E3D70 90 01 00 1C */ stw r0, 0x1c(r1)
+/* 802E8114 002E3D74 38 61 00 20 */ addi r3, r1, 0x20
+/* 802E8118 002E3D78 38 BC 00 04 */ addi r5, r28, 4
+/* 802E811C 002E3D7C 38 C1 00 1C */ addi r6, r1, 0x1c
+/* 802E8120 002E3D80 90 01 00 18 */ stw r0, 0x18(r1)
+/* 802E8124 002E3D84 38 E1 00 18 */ addi r7, r1, 0x18
+/* 802E8128 002E3D88 39 01 00 14 */ addi r8, r1, 0x14
+/* 802E812C 002E3D8C 39 21 00 10 */ addi r9, r1, 0x10
+/* 802E8130 002E3D90 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802E8134 002E3D94 90 01 00 10 */ stw r0, 0x10(r1)
+/* 802E8138 002E3D98 4B FB CC C9 */ bl ISFS_GetAttr
+/* 802E813C 002E3D9C 2C 03 00 00 */ cmpwi r3, 0
+/* 802E8140 002E3DA0 7C 7F 1B 78 */ mr r31, r3
+/* 802E8144 002E3DA4 40 82 00 20 */ bne lbl_802E8164
+/* 802E8148 002E3DA8 80 81 00 18 */ lwz r4, 0x18(r1)
+/* 802E814C 002E3DAC 38 7C 00 07 */ addi r3, r28, 7
+/* 802E8150 002E3DB0 80 A1 00 14 */ lwz r5, 0x14(r1)
+/* 802E8154 002E3DB4 80 C1 00 10 */ lwz r6, 0x10(r1)
+/* 802E8158 002E3DB8 4B FF FD FD */ bl nandComposePerm
+/* 802E815C 002E3DBC 80 01 00 1C */ lwz r0, 0x1c(r1)
+/* 802E8160 002E3DC0 98 1C 00 06 */ stb r0, 6(r28)
+lbl_802E8164:
+/* 802E8164 002E3DC4 7F E3 FB 78 */ mr r3, r31
+lbl_802E8168:
+/* 802E8168 002E3DC8 80 01 00 74 */ lwz r0, 0x74(r1)
+/* 802E816C 002E3DCC 83 E1 00 6C */ lwz r31, 0x6c(r1)
+/* 802E8170 002E3DD0 83 C1 00 68 */ lwz r30, 0x68(r1)
+/* 802E8174 002E3DD4 83 A1 00 64 */ lwz r29, 0x64(r1)
+/* 802E8178 002E3DD8 83 81 00 60 */ lwz r28, 0x60(r1)
+/* 802E817C 002E3DDC 7C 08 03 A6 */ mtlr r0
+/* 802E8180 002E3DE0 38 21 00 70 */ addi r1, r1, 0x70
+/* 802E8184 002E3DE4 4E 80 00 20 */ blr
+
+nandGetStatusCallback:
+/* 802E8188 002E3DE8 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802E818C 002E3DEC 7C 08 02 A6 */ mflr r0
+/* 802E8190 002E3DF0 2C 03 00 00 */ cmpwi r3, 0
+/* 802E8194 002E3DF4 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802E8198 002E3DF8 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802E819C 002E3DFC 7C 9F 23 78 */ mr r31, r4
+/* 802E81A0 002E3E00 93 C1 00 08 */ stw r30, 8(r1)
+/* 802E81A4 002E3E04 7C 7E 1B 78 */ mr r30, r3
+/* 802E81A8 002E3E08 40 82 00 24 */ bne lbl_802E81CC
+/* 802E81AC 002E3E0C 80 A4 00 14 */ lwz r5, 0x14(r4)
+/* 802E81B0 002E3E10 80 04 00 20 */ lwz r0, 0x20(r4)
+/* 802E81B4 002E3E14 38 65 00 07 */ addi r3, r5, 7
+/* 802E81B8 002E3E18 98 05 00 06 */ stb r0, 6(r5)
+/* 802E81BC 002E3E1C 80 84 00 24 */ lwz r4, 0x24(r4)
+/* 802E81C0 002E3E20 80 BF 00 28 */ lwz r5, 0x28(r31)
+/* 802E81C4 002E3E24 80 DF 00 2C */ lwz r6, 0x2c(r31)
+/* 802E81C8 002E3E28 4B FF FD 8D */ bl nandComposePerm
+lbl_802E81CC:
+/* 802E81CC 002E3E2C 7F C3 F3 78 */ mr r3, r30
+/* 802E81D0 002E3E30 48 00 12 39 */ bl nandConvertErrorCode
+/* 802E81D4 002E3E34 81 9F 00 04 */ lwz r12, 4(r31)
+/* 802E81D8 002E3E38 7F E4 FB 78 */ mr r4, r31
+/* 802E81DC 002E3E3C 7D 89 03 A6 */ mtctr r12
+/* 802E81E0 002E3E40 4E 80 04 21 */ bctrl
+/* 802E81E4 002E3E44 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802E81E8 002E3E48 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802E81EC 002E3E4C 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802E81F0 002E3E50 7C 08 03 A6 */ mtlr r0
+/* 802E81F4 002E3E54 38 21 00 10 */ addi r1, r1, 0x10
+/* 802E81F8 002E3E58 4E 80 00 20 */ blr
+
+.global NANDGetStatus
+NANDGetStatus:
+/* 802E81FC 002E3E5C 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802E8200 002E3E60 7C 08 02 A6 */ mflr r0
+/* 802E8204 002E3E64 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802E8208 002E3E68 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802E820C 002E3E6C 7C 9F 23 78 */ mr r31, r4
+/* 802E8210 002E3E70 93 C1 00 08 */ stw r30, 8(r1)
+/* 802E8214 002E3E74 7C 7E 1B 78 */ mr r30, r3
+/* 802E8218 002E3E78 48 00 11 D9 */ bl nandIsInitialized
+/* 802E821C 002E3E7C 2C 03 00 00 */ cmpwi r3, 0
+/* 802E8220 002E3E80 41 82 00 24 */ beq lbl_802E8244
+/* 802E8224 002E3E84 7F C3 F3 78 */ mr r3, r30
+/* 802E8228 002E3E88 7F E4 FB 78 */ mr r4, r31
+/* 802E822C 002E3E8C 38 A0 00 00 */ li r5, 0
+/* 802E8230 002E3E90 38 C0 00 00 */ li r6, 0
+/* 802E8234 002E3E94 38 E0 00 00 */ li r7, 0
+/* 802E8238 002E3E98 4B FF FD FD */ bl nandGetStatus
+/* 802E823C 002E3E9C 48 00 11 CD */ bl nandConvertErrorCode
+/* 802E8240 002E3EA0 48 00 00 08 */ b lbl_802E8248
+lbl_802E8244:
+/* 802E8244 002E3EA4 38 60 FF 80 */ li r3, -128
+lbl_802E8248:
+/* 802E8248 002E3EA8 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802E824C 002E3EAC 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802E8250 002E3EB0 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802E8254 002E3EB4 7C 08 03 A6 */ mtlr r0
+/* 802E8258 002E3EB8 38 21 00 10 */ addi r1, r1, 0x10
+/* 802E825C 002E3EBC 4E 80 00 20 */ blr
+
+.global NANDPrivateGetStatusAsync
+NANDPrivateGetStatusAsync:
+/* 802E8260 002E3EC0 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802E8264 002E3EC4 7C 08 02 A6 */ mflr r0
+/* 802E8268 002E3EC8 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802E826C 002E3ECC 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802E8270 002E3ED0 7C DF 33 78 */ mr r31, r6
+/* 802E8274 002E3ED4 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802E8278 002E3ED8 7C BE 2B 78 */ mr r30, r5
+/* 802E827C 002E3EDC 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802E8280 002E3EE0 7C 9D 23 78 */ mr r29, r4
+/* 802E8284 002E3EE4 93 81 00 10 */ stw r28, 0x10(r1)
+/* 802E8288 002E3EE8 7C 7C 1B 78 */ mr r28, r3
+/* 802E828C 002E3EEC 48 00 11 65 */ bl nandIsInitialized
+/* 802E8290 002E3EF0 2C 03 00 00 */ cmpwi r3, 0
+/* 802E8294 002E3EF4 40 82 00 0C */ bne lbl_802E82A0
+/* 802E8298 002E3EF8 38 60 FF 80 */ li r3, -128
+/* 802E829C 002E3EFC 48 00 00 28 */ b lbl_802E82C4
+lbl_802E82A0:
+/* 802E82A0 002E3F00 93 DF 00 04 */ stw r30, 4(r31)
+/* 802E82A4 002E3F04 7F 83 E3 78 */ mr r3, r28
+/* 802E82A8 002E3F08 7F A4 EB 78 */ mr r4, r29
+/* 802E82AC 002E3F0C 7F E5 FB 78 */ mr r5, r31
+/* 802E82B0 002E3F10 93 BF 00 14 */ stw r29, 0x14(r31)
+/* 802E82B4 002E3F14 38 C0 00 01 */ li r6, 1
+/* 802E82B8 002E3F18 38 E0 00 01 */ li r7, 1
+/* 802E82BC 002E3F1C 4B FF FD 79 */ bl nandGetStatus
+/* 802E82C0 002E3F20 48 00 11 49 */ bl nandConvertErrorCode
+lbl_802E82C4:
+/* 802E82C4 002E3F24 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802E82C8 002E3F28 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802E82CC 002E3F2C 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802E82D0 002E3F30 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802E82D4 002E3F34 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 802E82D8 002E3F38 7C 08 03 A6 */ mtlr r0
+/* 802E82DC 002E3F3C 38 21 00 20 */ addi r1, r1, 0x20
+/* 802E82E0 002E3F40 4E 80 00 20 */ blr
+
+.global NANDSetUserData
+NANDSetUserData:
+/* 802E82E4 002E3F44 90 83 00 00 */ stw r4, 0(r3)
+/* 802E82E8 002E3F48 4E 80 00 20 */ blr
+
+.global NANDGetUserData
+NANDGetUserData:
+/* 802E82EC 002E3F4C 80 63 00 00 */ lwz r3, 0(r3)
+/* 802E82F0 002E3F50 4E 80 00 20 */ blr
diff --git a/asm/SDK/OS/OSNandbootInfo.s b/asm/SDK/OS/OSNandbootInfo.s index 308da8c..4e008f2 100644 --- a/asm/SDK/OS/OSNandbootInfo.s +++ b/asm/SDK/OS/OSNandbootInfo.s @@ -67,22 +67,22 @@ lbl_802741D8: /* 802742A0 0026FF00 7C E7 02 14 */ add r7, r7, r0
/* 802742A4 0026FF04 90 E3 00 00 */ stw r7, 0(r3)
/* 802742A8 0026FF08 38 66 3F 08 */ addi r3, r6, lbl_80433F08@l
-/* 802742AC 0026FF0C 48 07 41 E9 */ bl func_802E8494
+/* 802742AC 0026FF0C 48 07 41 E9 */ bl NANDPrivateOpen
/* 802742B0 0026FF10 2C 03 00 00 */ cmpwi r3, 0
/* 802742B4 0026FF14 40 82 00 40 */ bne lbl_802742F4
/* 802742B8 0026FF18 7F E4 FB 78 */ mr r4, r31
/* 802742BC 0026FF1C 38 61 00 08 */ addi r3, r1, 8
/* 802742C0 0026FF20 38 A0 10 20 */ li r5, 0x1020
-/* 802742C4 0026FF24 48 07 36 DD */ bl func_802E79A0
+/* 802742C4 0026FF24 48 07 36 DD */ bl NANDWrite
/* 802742C8 0026FF28 28 03 10 20 */ cmplwi r3, 0x1020
/* 802742CC 0026FF2C 41 82 00 14 */ beq lbl_802742E0
/* 802742D0 0026FF30 38 61 00 08 */ addi r3, r1, 8
-/* 802742D4 0026FF34 48 07 43 B5 */ bl func_802E8688
+/* 802742D4 0026FF34 48 07 43 B5 */ bl NANDClose
/* 802742D8 0026FF38 38 60 00 00 */ li r3, 0
/* 802742DC 0026FF3C 48 00 00 1C */ b lbl_802742F8
lbl_802742E0:
/* 802742E0 0026FF40 38 61 00 08 */ addi r3, r1, 8
-/* 802742E4 0026FF44 48 07 43 A5 */ bl func_802E8688
+/* 802742E4 0026FF44 48 07 43 A5 */ bl NANDClose
/* 802742E8 0026FF48 7C 60 00 34 */ cntlzw r0, r3
/* 802742EC 0026FF4C 54 03 D9 7E */ srwi r3, r0, 5
/* 802742F0 0026FF50 48 00 00 08 */ b lbl_802742F8
@@ -109,16 +109,16 @@ func_8027430C: /* 80274328 0026FF88 38 64 3F 08 */ addi r3, r4, lbl_80433F08@l
/* 8027432C 0026FF8C 38 81 00 08 */ addi r4, r1, 8
/* 80274330 0026FF90 93 C1 00 98 */ stw r30, 0x98(r1)
-/* 80274334 0026FF94 48 07 41 61 */ bl func_802E8494
+/* 80274334 0026FF94 48 07 41 61 */ bl NANDPrivateOpen
/* 80274338 0026FF98 2C 03 00 00 */ cmpwi r3, 0
/* 8027433C 0026FF9C 40 82 00 40 */ bne lbl_8027437C
/* 80274340 0026FFA0 7F E4 FB 78 */ mr r4, r31
/* 80274344 0026FFA4 38 61 00 08 */ addi r3, r1, 8
/* 80274348 0026FFA8 38 A0 10 20 */ li r5, 0x1020
-/* 8027434C 0026FFAC 48 07 35 75 */ bl func_802E78C0
+/* 8027434C 0026FFAC 48 07 35 75 */ bl NANDRead
/* 80274350 0026FFB0 7C 7E 1B 78 */ mr r30, r3
/* 80274354 0026FFB4 38 61 00 08 */ addi r3, r1, 8
-/* 80274358 0026FFB8 48 07 43 31 */ bl func_802E8688
+/* 80274358 0026FFB8 48 07 43 31 */ bl NANDClose
/* 8027435C 0026FFBC 28 1E 10 20 */ cmplwi r30, 0x1020
/* 80274360 0026FFC0 41 82 00 34 */ beq lbl_80274394
/* 80274364 0026FFC4 7F E3 FB 78 */ mr r3, r31
diff --git a/asm/SDK/OS/OSPlayRecord.s b/asm/SDK/OS/OSPlayRecord.s index 6b5468d..b31cbf9 100644 --- a/asm/SDK/OS/OSPlayRecord.s +++ b/asm/SDK/OS/OSPlayRecord.s @@ -199,7 +199,7 @@ lbl_80273AB8: /* 80273AC8 0026F728 38 C6 38 18 */ addi r6, r6, PlayRecordCallback@l
/* 80273ACC 0026F72C 38 FF 01 40 */ addi r7, r31, 0x140
/* 80273AD0 0026F730 38 A0 00 03 */ li r5, 3
-/* 80273AD4 0026F734 48 07 4A 4D */ bl func_802E8520
+/* 80273AD4 0026F734 48 07 4A 4D */ bl NANDOpenAsync
/* 80273AD8 0026F738 7C 7E 1B 78 */ mr r30, r3
/* 80273ADC 0026F73C 48 00 00 F8 */ b lbl_80273BD4
lbl_80273AE0:
@@ -209,7 +209,7 @@ lbl_80273AE0: /* 80273AEC 0026F74C 38 FF 01 40 */ addi r7, r31, 0x140
/* 80273AF0 0026F750 38 C6 38 18 */ addi r6, r6, PlayRecordCallback@l
/* 80273AF4 0026F754 38 A0 00 80 */ li r5, 0x80
-/* 80273AF8 0026F758 48 07 3E 31 */ bl func_802E7928
+/* 80273AF8 0026F758 48 07 3E 31 */ bl NANDReadAsync
/* 80273AFC 0026F75C 7C 7E 1B 78 */ mr r30, r3
/* 80273B00 0026F760 48 00 00 D4 */ b lbl_80273BD4
lbl_80273B04:
@@ -219,7 +219,7 @@ lbl_80273B04: /* 80273B10 0026F770 38 FF 01 40 */ addi r7, r31, 0x140
/* 80273B14 0026F774 38 80 00 00 */ li r4, 0
/* 80273B18 0026F778 38 A0 00 00 */ li r5, 0
-/* 80273B1C 0026F77C 48 07 40 05 */ bl func_802E7B20
+/* 80273B1C 0026F77C 48 07 40 05 */ bl NANDSeekAsync
/* 80273B20 0026F780 7C 7E 1B 78 */ mr r30, r3
/* 80273B24 0026F784 48 00 00 B0 */ b lbl_80273BD4
lbl_80273B28:
@@ -259,7 +259,7 @@ lbl_80273B84: /* 80273BA4 0026F804 38 C6 38 18 */ addi r6, r6, PlayRecordCallback@l
/* 80273BA8 0026F808 38 FF 01 40 */ addi r7, r31, 0x140
/* 80273BAC 0026F80C 38 A0 00 80 */ li r5, 0x80
-/* 80273BB0 0026F810 48 07 3E 59 */ bl func_802E7A08
+/* 80273BB0 0026F810 48 07 3E 59 */ bl NANDWriteAsync
/* 80273BB4 0026F814 7C 7E 1B 78 */ mr r30, r3
/* 80273BB8 0026F818 48 00 00 1C */ b lbl_80273BD4
lbl_80273BBC:
@@ -267,7 +267,7 @@ lbl_80273BBC: /* 80273BC0 0026F820 38 7F 00 B0 */ addi r3, r31, 0xb0
/* 80273BC4 0026F824 38 84 38 18 */ addi r4, r4, PlayRecordCallback@l
/* 80273BC8 0026F828 38 BF 01 40 */ addi r5, r31, 0x140
-/* 80273BCC 0026F82C 48 07 4B 29 */ bl func_802E86F4
+/* 80273BCC 0026F82C 48 07 4B 29 */ bl NANDCloseAsync
/* 80273BD0 0026F830 7C 7E 1B 78 */ mr r30, r3
lbl_80273BD4:
/* 80273BD4 0026F834 2C 1E 00 00 */ cmpwi r30, 0
@@ -307,7 +307,7 @@ lbl_80273C44: /* 80273C50 0026F8B0 38 7F 00 B0 */ addi r3, r31, 0xb0
/* 80273C54 0026F8B4 38 84 38 18 */ addi r4, r4, PlayRecordCallback@l
/* 80273C58 0026F8B8 38 BF 01 40 */ addi r5, r31, 0x140
-/* 80273C5C 0026F8BC 48 07 4A 99 */ bl func_802E86F4
+/* 80273C5C 0026F8BC 48 07 4A 99 */ bl NANDCloseAsync
/* 80273C60 0026F8C0 2C 03 FF FD */ cmpwi r3, -3
/* 80273C64 0026F8C4 7C 7E 1B 78 */ mr r30, r3
/* 80273C68 0026F8C8 40 82 00 40 */ bne lbl_80273CA8
@@ -343,7 +343,7 @@ __OSStartPlayRecord: /* 80273CC8 0026F928 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80273CCC 0026F92C 7C 08 02 A6 */ mflr r0
/* 80273CD0 0026F930 90 01 00 14 */ stw r0, 0x14(r1)
-/* 80273CD4 0026F934 48 07 59 71 */ bl func_802E9644
+/* 80273CD4 0026F934 48 07 59 71 */ bl NANDInit
/* 80273CD8 0026F938 2C 03 00 00 */ cmpwi r3, 0
/* 80273CDC 0026F93C 40 82 00 30 */ bne lbl_80273D0C
/* 80273CE0 0026F940 38 00 00 00 */ li r0, 0
@@ -413,9 +413,9 @@ lbl_80273DB0: /* 80273DC4 0026FA24 38 7D 00 B0 */ addi r3, r29, 0xb0
/* 80273DC8 0026FA28 38 9D 00 00 */ addi r4, r29, 0
/* 80273DCC 0026FA2C 38 A0 00 80 */ li r5, 0x80
-/* 80273DD0 0026FA30 48 07 3B D1 */ bl func_802E79A0
+/* 80273DD0 0026FA30 48 07 3B D1 */ bl NANDWrite
/* 80273DD4 0026FA34 38 7D 00 B0 */ addi r3, r29, 0xb0
-/* 80273DD8 0026FA38 48 07 48 B1 */ bl func_802E8688
+/* 80273DD8 0026FA38 48 07 48 B1 */ bl NANDClose
/* 80273DDC 0026FA3C 48 00 01 08 */ b lbl_80273EE4
lbl_80273DE0:
/* 80273DE0 0026FA40 80 0D A8 78 */ lwz r0, lbl_8063FB38-_SDA_BASE_(r13)
@@ -472,7 +472,7 @@ lbl_80273E94: /* 80273E9C 0026FAFC 40 80 00 48 */ bge lbl_80273EE4
lbl_80273EA0:
/* 80273EA0 0026FB00 38 7D 00 B0 */ addi r3, r29, 0xb0
-/* 80273EA4 0026FB04 48 07 47 E5 */ bl func_802E8688
+/* 80273EA4 0026FB04 48 07 47 E5 */ bl NANDClose
/* 80273EA8 0026FB08 48 00 00 3C */ b lbl_80273EE4
lbl_80273EAC:
/* 80273EAC 0026FB0C 80 0D A8 7C */ lwz r0, lbl_8063FB3C-_SDA_BASE_(r13)
@@ -482,14 +482,14 @@ lbl_80273EAC: /* 80273EBC 0026FB1C 2C 00 00 00 */ cmpwi r0, 0
/* 80273EC0 0026FB20 40 82 00 24 */ bne lbl_80273EE4
/* 80273EC4 0026FB24 38 7D 00 B0 */ addi r3, r29, 0xb0
-/* 80273EC8 0026FB28 48 07 47 C1 */ bl func_802E8688
+/* 80273EC8 0026FB28 48 07 47 C1 */ bl NANDClose
/* 80273ECC 0026FB2C 48 00 00 18 */ b lbl_80273EE4
lbl_80273ED0:
/* 80273ED0 0026FB30 80 0D A8 78 */ lwz r0, lbl_8063FB38-_SDA_BASE_(r13)
/* 80273ED4 0026FB34 2C 00 00 00 */ cmpwi r0, 0
/* 80273ED8 0026FB38 41 82 00 0C */ beq lbl_80273EE4
/* 80273EDC 0026FB3C 38 7D 00 B0 */ addi r3, r29, 0xb0
-/* 80273EE0 0026FB40 48 07 47 A9 */ bl func_802E8688
+/* 80273EE0 0026FB40 48 07 47 A9 */ bl NANDClose
lbl_80273EE4:
/* 80273EE4 0026FB44 38 00 00 09 */ li r0, 9
/* 80273EE8 0026FB48 90 0D 87 F0 */ stw r0, lbl_8063DAB0-_SDA_BASE_(r13)
diff --git a/asm/SDK/OS/OSStateFlags.s b/asm/SDK/OS/OSStateFlags.s index 7be7ba6..16bc09f 100644 --- a/asm/SDK/OS/OSStateFlags.s +++ b/asm/SDK/OS/OSStateFlags.s @@ -33,22 +33,22 @@ __OSWriteStateFlags: /* 80273F6C 0026FBCC 80 1F 00 1C */ lwz r0, 0x1c(r31)
/* 80273F70 0026FBD0 7C C6 02 14 */ add r6, r6, r0
/* 80273F74 0026FBD4 90 DE 54 A0 */ stw r6, 0x54a0(r30)
-/* 80273F78 0026FBD8 48 07 44 91 */ bl func_802E8408
+/* 80273F78 0026FBD8 48 07 44 91 */ bl NANDOpen
/* 80273F7C 0026FBDC 2C 03 00 00 */ cmpwi r3, 0
/* 80273F80 0026FBE0 40 82 00 44 */ bne lbl_80273FC4
/* 80273F84 0026FBE4 7F E4 FB 78 */ mr r4, r31
/* 80273F88 0026FBE8 38 61 00 08 */ addi r3, r1, 8
/* 80273F8C 0026FBEC 38 A0 00 20 */ li r5, 0x20
-/* 80273F90 0026FBF0 48 07 3A 11 */ bl func_802E79A0
+/* 80273F90 0026FBF0 48 07 3A 11 */ bl NANDWrite
/* 80273F94 0026FBF4 28 03 00 20 */ cmplwi r3, 0x20
/* 80273F98 0026FBF8 41 82 00 14 */ beq lbl_80273FAC
/* 80273F9C 0026FBFC 38 61 00 08 */ addi r3, r1, 8
-/* 80273FA0 0026FC00 48 07 46 E9 */ bl func_802E8688
+/* 80273FA0 0026FC00 48 07 46 E9 */ bl NANDClose
/* 80273FA4 0026FC04 38 60 00 00 */ li r3, 0
/* 80273FA8 0026FC08 48 00 00 28 */ b lbl_80273FD0
lbl_80273FAC:
/* 80273FAC 0026FC0C 38 61 00 08 */ addi r3, r1, 8
-/* 80273FB0 0026FC10 48 07 46 D9 */ bl func_802E8688
+/* 80273FB0 0026FC10 48 07 46 D9 */ bl NANDClose
/* 80273FB4 0026FC14 2C 03 00 00 */ cmpwi r3, 0
/* 80273FB8 0026FC18 41 82 00 14 */ beq lbl_80273FCC
/* 80273FBC 0026FC1C 38 60 00 00 */ li r3, 0
@@ -80,21 +80,21 @@ __OSReadStateFlags: /* 8027400C 0026FC6C 93 81 00 A0 */ stw r28, 0xa0(r1)
/* 80274010 0026FC70 7C 7C 1B 78 */ mr r28, r3
/* 80274014 0026FC74 38 7D 3D 78 */ addi r3, r29, lbl_80433D78@l
-/* 80274018 0026FC78 48 07 43 F1 */ bl func_802E8408
+/* 80274018 0026FC78 48 07 43 F1 */ bl NANDOpen
/* 8027401C 0026FC7C 2C 03 00 00 */ cmpwi r3, 0
/* 80274020 0026FC80 40 82 00 4C */ bne lbl_8027406C
/* 80274024 0026FC84 3F C0 80 51 */ lis r30, lbl_805154A0@ha
/* 80274028 0026FC88 38 61 00 08 */ addi r3, r1, 8
/* 8027402C 0026FC8C 38 9E 54 A0 */ addi r4, r30, lbl_805154A0@l
/* 80274030 0026FC90 38 A0 00 20 */ li r5, 0x20
-/* 80274034 0026FC94 48 07 38 8D */ bl func_802E78C0
+/* 80274034 0026FC94 48 07 38 8D */ bl NANDRead
/* 80274038 0026FC98 7C 7F 1B 78 */ mr r31, r3
/* 8027403C 0026FC9C 38 61 00 08 */ addi r3, r1, 8
-/* 80274040 0026FCA0 48 07 46 49 */ bl func_802E8688
+/* 80274040 0026FCA0 48 07 46 49 */ bl NANDClose
/* 80274044 0026FCA4 28 1F 00 20 */ cmplwi r31, 0x20
/* 80274048 0026FCA8 41 82 00 3C */ beq lbl_80274084
/* 8027404C 0026FCAC 38 7D 3D 78 */ addi r3, r29, 0x3d78
-/* 80274050 0026FCB0 48 07 37 01 */ bl func_802E7750
+/* 80274050 0026FCB0 48 07 37 01 */ bl NANDDelete
/* 80274054 0026FCB4 7F 83 E3 78 */ mr r3, r28
/* 80274058 0026FCB8 38 80 00 00 */ li r4, 0
/* 8027405C 0026FCBC 38 A0 00 20 */ li r5, 0x20
|