summaryrefslogtreecommitdiff
path: root/asm/SDK/NAND/nand.s
blob: d223a48849992374be30ec44d689eb61f417ba31 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
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