summaryrefslogtreecommitdiff
path: root/asm/SDK/NAND/NANDOpenClose.s
blob: dbee6efc3e4e3fdf4a7357cc463a1abc348a4c95 (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
.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