summaryrefslogtreecommitdiff
path: root/asm/SDK/VF/pf_driver.s
blob: 6984a5ebbb0338ffe1a46b0d9c48880a11fd4da4 (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
.include "macros.inc"

.section .text, "ax"  # 0x80006980 - 0x803E1E60

.global VFiPFDRV_GetBPBInformation
VFiPFDRV_GetBPBInformation:
/* 803058F4 00301554  94 21 FF 80 */	stwu r1, -0x80(r1)
/* 803058F8 00301558  7C 08 02 A6 */	mflr r0
/* 803058FC 0030155C  90 01 00 84 */	stw r0, 0x84(r1)
/* 80305900 00301560  93 E1 00 7C */	stw r31, 0x7c(r1)
/* 80305904 00301564  7C 9F 23 78 */	mr r31, r4
/* 80305908 00301568  38 81 00 08 */	addi r4, r1, 8
/* 8030590C 0030156C  48 00 0A 89 */	bl VFipdm_bpb_get_bpb_information
/* 80305910 00301570  2C 03 00 00 */	cmpwi r3, 0
/* 80305914 00301574  41 82 00 0C */	beq lbl_80305920
/* 80305918 00301578  38 60 00 07 */	li r3, 7
/* 8030591C 0030157C  48 00 00 B0 */	b lbl_803059CC
lbl_80305920:
/* 80305920 00301580  A0 01 00 10 */	lhz r0, 0x10(r1)
/* 80305924 00301584  38 60 00 00 */	li r3, 0
/* 80305928 00301588  B0 1F 00 00 */	sth r0, 0(r31)
/* 8030592C 0030158C  A0 01 00 14 */	lhz r0, 0x14(r1)
/* 80305930 00301590  B0 1F 00 02 */	sth r0, 2(r31)
/* 80305934 00301594  A0 01 00 16 */	lhz r0, 0x16(r1)
/* 80305938 00301598  B0 1F 00 04 */	sth r0, 4(r31)
/* 8030593C 0030159C  88 01 00 12 */	lbz r0, 0x12(r1)
/* 80305940 003015A0  98 1F 00 06 */	stb r0, 6(r31)
/* 80305944 003015A4  88 01 00 13 */	lbz r0, 0x13(r1)
/* 80305948 003015A8  98 1F 00 07 */	stb r0, 7(r31)
/* 8030594C 003015AC  80 01 00 70 */	lwz r0, 0x70(r1)
/* 80305950 003015B0  90 1F 00 08 */	stw r0, 8(r31)
/* 80305954 003015B4  80 01 00 74 */	lwz r0, 0x74(r1)
/* 80305958 003015B8  90 1F 00 0C */	stw r0, 0xc(r31)
/* 8030595C 003015BC  80 01 00 4C */	lwz r0, 0x4c(r1)
/* 80305960 003015C0  90 1F 00 10 */	stw r0, 0x10(r31)
/* 80305964 003015C4  A0 01 00 50 */	lhz r0, 0x50(r1)
/* 80305968 003015C8  B0 1F 00 14 */	sth r0, 0x14(r31)
/* 8030596C 003015CC  A0 01 00 52 */	lhz r0, 0x52(r1)
/* 80305970 003015D0  B0 1F 00 16 */	sth r0, 0x16(r31)
/* 80305974 003015D4  A0 01 00 48 */	lhz r0, 0x48(r1)
/* 80305978 003015D8  B0 1F 00 18 */	sth r0, 0x18(r31)
/* 8030597C 003015DC  88 01 00 2A */	lbz r0, 0x2a(r1)
/* 80305980 003015E0  98 1F 00 1A */	stb r0, 0x1a(r31)
/* 80305984 003015E4  80 01 00 58 */	lwz r0, 0x58(r1)
/* 80305988 003015E8  90 1F 00 1C */	stw r0, 0x1c(r31)
/* 8030598C 003015EC  88 01 00 5C */	lbz r0, 0x5c(r1)
/* 80305990 003015F0  98 1F 00 20 */	stb r0, 0x20(r31)
/* 80305994 003015F4  88 01 00 5D */	lbz r0, 0x5d(r1)
/* 80305998 003015F8  98 1F 00 21 */	stb r0, 0x21(r31)
/* 8030599C 003015FC  88 01 00 57 */	lbz r0, 0x57(r1)
/* 803059A0 00301600  98 1F 00 22 */	stb r0, 0x22(r31)
/* 803059A4 00301604  A0 01 00 5E */	lhz r0, 0x5e(r1)
/* 803059A8 00301608  B0 1F 00 24 */	sth r0, 0x24(r31)
/* 803059AC 0030160C  80 01 00 60 */	lwz r0, 0x60(r1)
/* 803059B0 00301610  90 1F 00 28 */	stw r0, 0x28(r31)
/* 803059B4 00301614  80 01 00 64 */	lwz r0, 0x64(r1)
/* 803059B8 00301618  90 1F 00 2C */	stw r0, 0x2c(r31)
/* 803059BC 0030161C  80 01 00 68 */	lwz r0, 0x68(r1)
/* 803059C0 00301620  90 1F 00 30 */	stw r0, 0x30(r31)
/* 803059C4 00301624  80 01 00 6C */	lwz r0, 0x6c(r1)
/* 803059C8 00301628  90 1F 00 34 */	stw r0, 0x34(r31)
lbl_803059CC:
/* 803059CC 0030162C  80 01 00 84 */	lwz r0, 0x84(r1)
/* 803059D0 00301630  83 E1 00 7C */	lwz r31, 0x7c(r1)
/* 803059D4 00301634  7C 08 03 A6 */	mtlr r0
/* 803059D8 00301638  38 21 00 80 */	addi r1, r1, 0x80
/* 803059DC 0030163C  4E 80 00 20 */	blr

.global VFiPFDRV_GetFSINFOInformation
VFiPFDRV_GetFSINFOInformation:
/* 803059E0 00301640  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 803059E4 00301644  7C 08 02 A6 */	mflr r0
/* 803059E8 00301648  38 80 FF FF */	li r4, -1
/* 803059EC 0030164C  90 01 00 34 */	stw r0, 0x34(r1)
/* 803059F0 00301650  38 A1 00 10 */	addi r5, r1, 0x10
/* 803059F4 00301654  93 E1 00 2C */	stw r31, 0x2c(r1)
/* 803059F8 00301658  93 C1 00 28 */	stw r30, 0x28(r1)
/* 803059FC 0030165C  7C 7E 1B 78 */	mr r30, r3
/* 80305A00 00301660  48 00 4C B9 */	bl VFiPFCACHE_AllocateDataPage
/* 80305A04 00301664  2C 03 00 00 */	cmpwi r3, 0
/* 80305A08 00301668  41 82 00 08 */	beq lbl_80305A10
/* 80305A0C 0030166C  48 00 01 78 */	b lbl_80305B84
lbl_80305A10:
/* 80305A10 00301670  80 81 00 10 */	lwz r4, 0x10(r1)
/* 80305A14 00301674  39 01 00 0C */	addi r8, r1, 0xc
/* 80305A18 00301678  80 7E 18 8C */	lwz r3, 0x188c(r30)
/* 80305A1C 0030167C  38 C0 00 01 */	li r6, 1
/* 80305A20 00301680  80 84 00 04 */	lwz r4, 4(r4)
/* 80305A24 00301684  A0 BE 00 14 */	lhz r5, 0x14(r30)
/* 80305A28 00301688  A0 FE 00 00 */	lhz r7, 0(r30)
/* 80305A2C 0030168C  48 00 25 AD */	bl VFipdm_part_logical_read
/* 80305A30 00301690  2C 03 00 00 */	cmpwi r3, 0
/* 80305A34 00301694  41 82 00 50 */	beq lbl_80305A84
/* 80305A38 00301698  2C 03 00 15 */	cmpwi r3, 0x15
/* 80305A3C 0030169C  40 82 00 24 */	bne lbl_80305A60
/* 80305A40 003016A0  80 7E 18 8C */	lwz r3, 0x188c(r30)
/* 80305A44 003016A4  48 00 2D 91 */	bl VFipdm_part_get_driver_error_code
/* 80305A48 003016A8  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80305A4C 003016AC  3B E0 10 00 */	li r31, 0x1000
/* 80305A50 003016B0  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80305A54 003016B4  90 64 00 20 */	stw r3, 0x20(r4)
/* 80305A58 003016B8  90 7E 18 70 */	stw r3, 0x1870(r30)
/* 80305A5C 003016BC  48 00 00 08 */	b lbl_80305A64
lbl_80305A60:
/* 80305A60 003016C0  3B E0 FF FF */	li r31, -1
lbl_80305A64:
/* 80305A64 003016C4  80 81 00 10 */	lwz r4, 0x10(r1)
/* 80305A68 003016C8  7F C3 F3 78 */	mr r3, r30
/* 80305A6C 003016CC  48 00 4D 51 */	bl VFiPFCACHE_FreeDataPage
/* 80305A70 003016D0  80 7E 18 8C */	lwz r3, 0x188c(r30)
/* 80305A74 003016D4  38 80 00 01 */	li r4, 1
/* 80305A78 003016D8  48 00 22 89 */	bl VFipdm_part_release_permission
/* 80305A7C 003016DC  7F E3 FB 78 */	mr r3, r31
/* 80305A80 003016E0  48 00 01 04 */	b lbl_80305B84
lbl_80305A84:
/* 80305A84 003016E4  80 61 00 10 */	lwz r3, 0x10(r1)
/* 80305A88 003016E8  38 81 00 08 */	addi r4, r1, 8
/* 80305A8C 003016EC  80 63 00 04 */	lwz r3, 4(r3)
/* 80305A90 003016F0  48 00 0F E5 */	bl VFipdm_bpb_check_fsinfo_sector
/* 80305A94 003016F4  2C 03 00 00 */	cmpwi r3, 0
/* 80305A98 003016F8  41 82 00 24 */	beq lbl_80305ABC
/* 80305A9C 003016FC  80 81 00 10 */	lwz r4, 0x10(r1)
/* 80305AA0 00301700  7F C3 F3 78 */	mr r3, r30
/* 80305AA4 00301704  48 00 4D 19 */	bl VFiPFCACHE_FreeDataPage
/* 80305AA8 00301708  80 7E 18 8C */	lwz r3, 0x188c(r30)
/* 80305AAC 0030170C  38 80 00 01 */	li r4, 1
/* 80305AB0 00301710  48 00 22 51 */	bl VFipdm_part_release_permission
/* 80305AB4 00301714  38 60 FF FF */	li r3, -1
/* 80305AB8 00301718  48 00 00 CC */	b lbl_80305B84
lbl_80305ABC:
/* 80305ABC 0030171C  80 01 00 08 */	lwz r0, 8(r1)
/* 80305AC0 00301720  2C 00 00 00 */	cmpwi r0, 0
/* 80305AC4 00301724  40 82 00 24 */	bne lbl_80305AE8
/* 80305AC8 00301728  80 81 00 10 */	lwz r4, 0x10(r1)
/* 80305ACC 0030172C  7F C3 F3 78 */	mr r3, r30
/* 80305AD0 00301730  48 00 4C ED */	bl VFiPFCACHE_FreeDataPage
/* 80305AD4 00301734  80 7E 18 8C */	lwz r3, 0x188c(r30)
/* 80305AD8 00301738  38 80 00 01 */	li r4, 1
/* 80305ADC 0030173C  48 00 22 25 */	bl VFipdm_part_release_permission
/* 80305AE0 00301740  38 60 00 07 */	li r3, 7
/* 80305AE4 00301744  48 00 00 A0 */	b lbl_80305B84
lbl_80305AE8:
/* 80305AE8 00301748  80 61 00 10 */	lwz r3, 0x10(r1)
/* 80305AEC 0030174C  38 81 00 18 */	addi r4, r1, 0x18
/* 80305AF0 00301750  80 63 00 04 */	lwz r3, 4(r3)
/* 80305AF4 00301754  48 00 0D D9 */	bl VFipdm_bpb_get_fsinfo_information
/* 80305AF8 00301758  2C 03 00 00 */	cmpwi r3, 0
/* 80305AFC 0030175C  41 82 00 0C */	beq lbl_80305B08
/* 80305B00 00301760  38 00 00 07 */	li r0, 7
/* 80305B04 00301764  48 00 00 48 */	b lbl_80305B4C
lbl_80305B08:
/* 80305B08 00301768  80 81 00 18 */	lwz r4, 0x18(r1)
/* 80305B0C 0030176C  28 04 00 02 */	cmplwi r4, 2
/* 80305B10 00301770  41 80 00 18 */	blt lbl_80305B28
/* 80305B14 00301774  80 7E 00 34 */	lwz r3, 0x34(r30)
/* 80305B18 00301778  38 03 00 02 */	addi r0, r3, 2
/* 80305B1C 0030177C  7C 04 00 40 */	cmplw r4, r0
/* 80305B20 00301780  40 80 00 08 */	bge lbl_80305B28
/* 80305B24 00301784  90 9E 00 38 */	stw r4, 0x38(r30)
lbl_80305B28:
/* 80305B28 00301788  80 81 00 1C */	lwz r4, 0x1c(r1)
/* 80305B2C 0030178C  28 04 00 02 */	cmplwi r4, 2
/* 80305B30 00301790  41 80 00 18 */	blt lbl_80305B48
/* 80305B34 00301794  80 7E 00 34 */	lwz r3, 0x34(r30)
/* 80305B38 00301798  38 03 00 02 */	addi r0, r3, 2
/* 80305B3C 0030179C  7C 04 00 40 */	cmplw r4, r0
/* 80305B40 003017A0  40 80 00 08 */	bge lbl_80305B48
/* 80305B44 003017A4  90 9E 00 3C */	stw r4, 0x3c(r30)
lbl_80305B48:
/* 80305B48 003017A8  38 00 00 00 */	li r0, 0
lbl_80305B4C:
/* 80305B4C 003017AC  2C 00 00 00 */	cmpwi r0, 0
/* 80305B50 003017B0  41 82 00 24 */	beq lbl_80305B74
/* 80305B54 003017B4  80 81 00 10 */	lwz r4, 0x10(r1)
/* 80305B58 003017B8  7F C3 F3 78 */	mr r3, r30
/* 80305B5C 003017BC  48 00 4C 61 */	bl VFiPFCACHE_FreeDataPage
/* 80305B60 003017C0  80 7E 18 8C */	lwz r3, 0x188c(r30)
/* 80305B64 003017C4  38 80 00 01 */	li r4, 1
/* 80305B68 003017C8  48 00 21 99 */	bl VFipdm_part_release_permission
/* 80305B6C 003017CC  38 60 FF FF */	li r3, -1
/* 80305B70 003017D0  48 00 00 14 */	b lbl_80305B84
lbl_80305B74:
/* 80305B74 003017D4  80 81 00 10 */	lwz r4, 0x10(r1)
/* 80305B78 003017D8  7F C3 F3 78 */	mr r3, r30
/* 80305B7C 003017DC  48 00 4C 41 */	bl VFiPFCACHE_FreeDataPage
/* 80305B80 003017E0  38 60 00 00 */	li r3, 0
lbl_80305B84:
/* 80305B84 003017E4  80 01 00 34 */	lwz r0, 0x34(r1)
/* 80305B88 003017E8  83 E1 00 2C */	lwz r31, 0x2c(r1)
/* 80305B8C 003017EC  83 C1 00 28 */	lwz r30, 0x28(r1)
/* 80305B90 003017F0  7C 08 03 A6 */	mtlr r0
/* 80305B94 003017F4  38 21 00 30 */	addi r1, r1, 0x30
/* 80305B98 003017F8  4E 80 00 20 */	blr

.global VFiPFDRV_StoreFreeCountToFSINFO
VFiPFDRV_StoreFreeCountToFSINFO:
/* 80305B9C 003017FC  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80305BA0 00301800  7C 08 02 A6 */	mflr r0
/* 80305BA4 00301804  38 80 FF FF */	li r4, -1
/* 80305BA8 00301808  90 01 00 24 */	stw r0, 0x24(r1)
/* 80305BAC 0030180C  38 A1 00 0C */	addi r5, r1, 0xc
/* 80305BB0 00301810  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80305BB4 00301814  7C 7F 1B 78 */	mr r31, r3
/* 80305BB8 00301818  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80305BBC 0030181C  48 00 4A FD */	bl VFiPFCACHE_AllocateDataPage
/* 80305BC0 00301820  2C 03 00 00 */	cmpwi r3, 0
/* 80305BC4 00301824  41 82 00 08 */	beq lbl_80305BCC
/* 80305BC8 00301828  48 00 01 70 */	b lbl_80305D38
lbl_80305BCC:
/* 80305BCC 0030182C  80 61 00 0C */	lwz r3, 0xc(r1)
/* 80305BD0 00301830  2C 1F 00 00 */	cmpwi r31, 0
/* 80305BD4 00301834  A0 BF 00 14 */	lhz r5, 0x14(r31)
/* 80305BD8 00301838  80 83 00 08 */	lwz r4, 8(r3)
/* 80305BDC 0030183C  40 82 00 0C */	bne lbl_80305BE8
/* 80305BE0 00301840  3B C0 00 0A */	li r30, 0xa
/* 80305BE4 00301844  48 00 00 54 */	b lbl_80305C38
lbl_80305BE8:
/* 80305BE8 00301848  80 7F 18 8C */	lwz r3, 0x188c(r31)
/* 80305BEC 0030184C  39 01 00 08 */	addi r8, r1, 8
/* 80305BF0 00301850  A0 FF 00 00 */	lhz r7, 0(r31)
/* 80305BF4 00301854  38 C0 00 01 */	li r6, 1
/* 80305BF8 00301858  48 00 23 E1 */	bl VFipdm_part_logical_read
/* 80305BFC 0030185C  2C 03 00 00 */	cmpwi r3, 0
/* 80305C00 00301860  41 82 00 34 */	beq lbl_80305C34
/* 80305C04 00301864  2C 03 00 15 */	cmpwi r3, 0x15
/* 80305C08 00301868  40 82 00 24 */	bne lbl_80305C2C
/* 80305C0C 0030186C  80 7F 18 8C */	lwz r3, 0x188c(r31)
/* 80305C10 00301870  48 00 2B C5 */	bl VFipdm_part_get_driver_error_code
/* 80305C14 00301874  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80305C18 00301878  3B C0 10 00 */	li r30, 0x1000
/* 80305C1C 0030187C  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80305C20 00301880  90 64 00 20 */	stw r3, 0x20(r4)
/* 80305C24 00301884  90 7F 18 70 */	stw r3, 0x1870(r31)
/* 80305C28 00301888  48 00 00 10 */	b lbl_80305C38
lbl_80305C2C:
/* 80305C2C 0030188C  3B C0 FF FF */	li r30, -1
/* 80305C30 00301890  48 00 00 08 */	b lbl_80305C38
lbl_80305C34:
/* 80305C34 00301894  3B C0 00 00 */	li r30, 0
lbl_80305C38:
/* 80305C38 00301898  2C 1E 00 00 */	cmpwi r30, 0
/* 80305C3C 0030189C  40 82 00 10 */	bne lbl_80305C4C
/* 80305C40 003018A0  80 01 00 08 */	lwz r0, 8(r1)
/* 80305C44 003018A4  28 00 00 01 */	cmplwi r0, 1
/* 80305C48 003018A8  41 82 00 08 */	beq lbl_80305C50
lbl_80305C4C:
/* 80305C4C 003018AC  3B C0 00 11 */	li r30, 0x11
lbl_80305C50:
/* 80305C50 003018B0  2C 1E 00 00 */	cmpwi r30, 0
/* 80305C54 003018B4  40 82 00 D4 */	bne lbl_80305D28
/* 80305C58 003018B8  80 61 00 0C */	lwz r3, 0xc(r1)
/* 80305C5C 003018BC  2C 1F 00 00 */	cmpwi r31, 0
/* 80305C60 003018C0  80 1F 00 38 */	lwz r0, 0x38(r31)
/* 80305C64 003018C4  80 63 00 08 */	lwz r3, 8(r3)
/* 80305C68 003018C8  98 03 01 E8 */	stb r0, 0x1e8(r3)
/* 80305C6C 003018CC  80 61 00 0C */	lwz r3, 0xc(r1)
/* 80305C70 003018D0  80 1F 00 38 */	lwz r0, 0x38(r31)
/* 80305C74 003018D4  80 63 00 08 */	lwz r3, 8(r3)
/* 80305C78 003018D8  54 00 C6 3E */	rlwinm r0, r0, 0x18, 0x18, 0x1f
/* 80305C7C 003018DC  98 03 01 E9 */	stb r0, 0x1e9(r3)
/* 80305C80 003018E0  80 61 00 0C */	lwz r3, 0xc(r1)
/* 80305C84 003018E4  80 1F 00 38 */	lwz r0, 0x38(r31)
/* 80305C88 003018E8  80 63 00 08 */	lwz r3, 8(r3)
/* 80305C8C 003018EC  54 00 86 3E */	rlwinm r0, r0, 0x10, 0x18, 0x1f
/* 80305C90 003018F0  98 03 01 EA */	stb r0, 0x1ea(r3)
/* 80305C94 003018F4  80 61 00 0C */	lwz r3, 0xc(r1)
/* 80305C98 003018F8  80 1F 00 38 */	lwz r0, 0x38(r31)
/* 80305C9C 003018FC  80 63 00 08 */	lwz r3, 8(r3)
/* 80305CA0 00301900  54 00 46 3E */	srwi r0, r0, 0x18
/* 80305CA4 00301904  98 03 01 EB */	stb r0, 0x1eb(r3)
/* 80305CA8 00301908  80 61 00 0C */	lwz r3, 0xc(r1)
/* 80305CAC 0030190C  A0 BF 00 14 */	lhz r5, 0x14(r31)
/* 80305CB0 00301910  80 83 00 08 */	lwz r4, 8(r3)
/* 80305CB4 00301914  40 82 00 0C */	bne lbl_80305CC0
/* 80305CB8 00301918  3B C0 00 0A */	li r30, 0xa
/* 80305CBC 0030191C  48 00 00 54 */	b lbl_80305D10
lbl_80305CC0:
/* 80305CC0 00301920  80 7F 18 8C */	lwz r3, 0x188c(r31)
/* 80305CC4 00301924  39 01 00 08 */	addi r8, r1, 8
/* 80305CC8 00301928  A0 FF 00 00 */	lhz r7, 0(r31)
/* 80305CCC 0030192C  38 C0 00 01 */	li r6, 1
/* 80305CD0 00301930  48 00 24 D1 */	bl VFipdm_part_logical_write
/* 80305CD4 00301934  2C 03 00 00 */	cmpwi r3, 0
/* 80305CD8 00301938  41 82 00 34 */	beq lbl_80305D0C
/* 80305CDC 0030193C  2C 03 00 15 */	cmpwi r3, 0x15
/* 80305CE0 00301940  40 82 00 24 */	bne lbl_80305D04
/* 80305CE4 00301944  80 7F 18 8C */	lwz r3, 0x188c(r31)
/* 80305CE8 00301948  48 00 2A ED */	bl VFipdm_part_get_driver_error_code
/* 80305CEC 0030194C  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80305CF0 00301950  3B C0 10 00 */	li r30, 0x1000
/* 80305CF4 00301954  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80305CF8 00301958  90 64 00 20 */	stw r3, 0x20(r4)
/* 80305CFC 0030195C  90 7F 18 70 */	stw r3, 0x1870(r31)
/* 80305D00 00301960  48 00 00 10 */	b lbl_80305D10
lbl_80305D04:
/* 80305D04 00301964  3B C0 FF FF */	li r30, -1
/* 80305D08 00301968  48 00 00 08 */	b lbl_80305D10
lbl_80305D0C:
/* 80305D0C 0030196C  3B C0 00 00 */	li r30, 0
lbl_80305D10:
/* 80305D10 00301970  2C 1E 00 00 */	cmpwi r30, 0
/* 80305D14 00301974  40 82 00 10 */	bne lbl_80305D24
/* 80305D18 00301978  80 01 00 08 */	lwz r0, 8(r1)
/* 80305D1C 0030197C  28 00 00 01 */	cmplwi r0, 1
/* 80305D20 00301980  41 82 00 08 */	beq lbl_80305D28
lbl_80305D24:
/* 80305D24 00301984  3B C0 00 11 */	li r30, 0x11
lbl_80305D28:
/* 80305D28 00301988  80 81 00 0C */	lwz r4, 0xc(r1)
/* 80305D2C 0030198C  7F E3 FB 78 */	mr r3, r31
/* 80305D30 00301990  48 00 4A 8D */	bl VFiPFCACHE_FreeDataPage
/* 80305D34 00301994  7F C3 F3 78 */	mr r3, r30
lbl_80305D38:
/* 80305D38 00301998  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80305D3C 0030199C  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80305D40 003019A0  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80305D44 003019A4  7C 08 03 A6 */	mtlr r0
/* 80305D48 003019A8  38 21 00 20 */	addi r1, r1, 0x20
/* 80305D4C 003019AC  4E 80 00 20 */	blr

.global VFiPFDRV_IsInserted
VFiPFDRV_IsInserted:
/* 80305D50 003019B0  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80305D54 003019B4  7C 08 02 A6 */	mflr r0
/* 80305D58 003019B8  90 01 00 14 */	stw r0, 0x14(r1)
/* 80305D5C 003019BC  38 81 00 08 */	addi r4, r1, 8
/* 80305D60 003019C0  80 63 18 8C */	lwz r3, 0x188c(r3)
/* 80305D64 003019C4  48 00 28 35 */	bl VFipdm_part_check_media_insert
/* 80305D68 003019C8  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80305D6C 003019CC  80 61 00 08 */	lwz r3, 8(r1)
/* 80305D70 003019D0  7C 08 03 A6 */	mtlr r0
/* 80305D74 003019D4  38 21 00 10 */	addi r1, r1, 0x10
/* 80305D78 003019D8  4E 80 00 20 */	blr

.global VFiPFDRV_IsDetected
VFiPFDRV_IsDetected:
/* 80305D7C 003019DC  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80305D80 003019E0  7C 08 02 A6 */	mflr r0
/* 80305D84 003019E4  90 01 00 14 */	stw r0, 0x14(r1)
/* 80305D88 003019E8  38 81 00 08 */	addi r4, r1, 8
/* 80305D8C 003019EC  80 63 18 8C */	lwz r3, 0x188c(r3)
/* 80305D90 003019F0  48 00 29 19 */	bl VFipdm_part_check_media_detect
/* 80305D94 003019F4  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80305D98 003019F8  80 61 00 08 */	lwz r3, 8(r1)
/* 80305D9C 003019FC  7C 08 03 A6 */	mtlr r0
/* 80305DA0 00301A00  38 21 00 10 */	addi r1, r1, 0x10
/* 80305DA4 00301A04  4E 80 00 20 */	blr

.global VFiPFDRV_IsWProtected
VFiPFDRV_IsWProtected:
/* 80305DA8 00301A08  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80305DAC 00301A0C  7C 08 02 A6 */	mflr r0
/* 80305DB0 00301A10  90 01 00 14 */	stw r0, 0x14(r1)
/* 80305DB4 00301A14  38 81 00 08 */	addi r4, r1, 8
/* 80305DB8 00301A18  80 63 18 8C */	lwz r3, 0x188c(r3)
/* 80305DBC 00301A1C  48 00 26 CD */	bl VFipdm_part_check_media_write_protect
/* 80305DC0 00301A20  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80305DC4 00301A24  80 61 00 08 */	lwz r3, 8(r1)
/* 80305DC8 00301A28  7C 08 03 A6 */	mtlr r0
/* 80305DCC 00301A2C  38 21 00 10 */	addi r1, r1, 0x10
/* 80305DD0 00301A30  4E 80 00 20 */	blr

.global VFiPFDRV_mount
VFiPFDRV_mount:
/* 80305DD4 00301A34  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 80305DD8 00301A38  7C 08 02 A6 */	mflr r0
/* 80305DDC 00301A3C  2C 03 00 00 */	cmpwi r3, 0
/* 80305DE0 00301A40  90 01 00 34 */	stw r0, 0x34(r1)
/* 80305DE4 00301A44  93 E1 00 2C */	stw r31, 0x2c(r1)
/* 80305DE8 00301A48  7C 7F 1B 78 */	mr r31, r3
/* 80305DEC 00301A4C  93 C1 00 28 */	stw r30, 0x28(r1)
/* 80305DF0 00301A50  40 82 00 0C */	bne lbl_80305DFC
/* 80305DF4 00301A54  38 60 00 0A */	li r3, 0xa
/* 80305DF8 00301A58  48 00 01 FC */	b lbl_80305FF4
lbl_80305DFC:
/* 80305DFC 00301A5C  80 63 18 8C */	lwz r3, 0x188c(r3)
/* 80305E00 00301A60  48 00 1D 1D */	bl VFipdm_part_get_permission
/* 80305E04 00301A64  2C 03 00 00 */	cmpwi r3, 0
/* 80305E08 00301A68  41 82 00 34 */	beq lbl_80305E3C
/* 80305E0C 00301A6C  2C 03 00 15 */	cmpwi r3, 0x15
/* 80305E10 00301A70  40 82 00 24 */	bne lbl_80305E34
/* 80305E14 00301A74  80 7F 18 8C */	lwz r3, 0x188c(r31)
/* 80305E18 00301A78  48 00 29 BD */	bl VFipdm_part_get_driver_error_code
/* 80305E1C 00301A7C  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80305E20 00301A80  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80305E24 00301A84  90 64 00 20 */	stw r3, 0x20(r4)
/* 80305E28 00301A88  90 7F 18 70 */	stw r3, 0x1870(r31)
/* 80305E2C 00301A8C  38 60 10 00 */	li r3, 0x1000
/* 80305E30 00301A90  48 00 01 C4 */	b lbl_80305FF4
lbl_80305E34:
/* 80305E34 00301A94  38 60 FF FF */	li r3, -1
/* 80305E38 00301A98  48 00 01 BC */	b lbl_80305FF4
lbl_80305E3C:
/* 80305E3C 00301A9C  80 7F 18 8C */	lwz r3, 0x188c(r31)
/* 80305E40 00301AA0  38 81 00 14 */	addi r4, r1, 0x14
/* 80305E44 00301AA4  48 00 25 25 */	bl VFipdm_part_get_media_information
/* 80305E48 00301AA8  2C 03 00 00 */	cmpwi r3, 0
/* 80305E4C 00301AAC  41 82 00 18 */	beq lbl_80305E64
/* 80305E50 00301AB0  80 7F 18 8C */	lwz r3, 0x188c(r31)
/* 80305E54 00301AB4  38 80 00 01 */	li r4, 1
/* 80305E58 00301AB8  48 00 1E A9 */	bl VFipdm_part_release_permission
/* 80305E5C 00301ABC  38 60 FF FF */	li r3, -1
/* 80305E60 00301AC0  48 00 01 94 */	b lbl_80305FF4
lbl_80305E64:
/* 80305E64 00301AC4  80 01 00 20 */	lwz r0, 0x20(r1)
/* 80305E68 00301AC8  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 80305E6C 00301ACC  41 82 00 18 */	beq lbl_80305E84
/* 80305E70 00301AD0  A0 1F 18 78 */	lhz r0, 0x1878(r31)
/* 80305E74 00301AD4  80 61 00 24 */	lwz r3, 0x24(r1)
/* 80305E78 00301AD8  60 00 00 10 */	ori r0, r0, 0x10
/* 80305E7C 00301ADC  B0 1F 18 78 */	sth r0, 0x1878(r31)
/* 80305E80 00301AE0  90 7F 18 94 */	stw r3, 0x1894(r31)
lbl_80305E84:
/* 80305E84 00301AE4  80 01 00 20 */	lwz r0, 0x20(r1)
/* 80305E88 00301AE8  54 00 07 39 */	rlwinm. r0, r0, 0, 0x1c, 0x1c
/* 80305E8C 00301AEC  41 82 00 10 */	beq lbl_80305E9C
/* 80305E90 00301AF0  A0 1F 18 78 */	lhz r0, 0x1878(r31)
/* 80305E94 00301AF4  60 00 00 20 */	ori r0, r0, 0x20
/* 80305E98 00301AF8  B0 1F 18 78 */	sth r0, 0x1878(r31)
lbl_80305E9C:
/* 80305E9C 00301AFC  7F E3 FB 78 */	mr r3, r31
/* 80305EA0 00301B00  38 A1 00 10 */	addi r5, r1, 0x10
/* 80305EA4 00301B04  38 80 FF FF */	li r4, -1
/* 80305EA8 00301B08  48 00 48 11 */	bl VFiPFCACHE_AllocateDataPage
/* 80305EAC 00301B0C  80 81 00 10 */	lwz r4, 0x10(r1)
/* 80305EB0 00301B10  39 01 00 0C */	addi r8, r1, 0xc
/* 80305EB4 00301B14  80 7F 18 8C */	lwz r3, 0x188c(r31)
/* 80305EB8 00301B18  38 A0 00 00 */	li r5, 0
/* 80305EBC 00301B1C  80 84 00 04 */	lwz r4, 4(r4)
/* 80305EC0 00301B20  38 C0 00 01 */	li r6, 1
/* 80305EC4 00301B24  38 E0 02 00 */	li r7, 0x200
/* 80305EC8 00301B28  48 00 21 11 */	bl VFipdm_part_logical_read
/* 80305ECC 00301B2C  2C 03 00 00 */	cmpwi r3, 0
/* 80305ED0 00301B30  41 82 00 50 */	beq lbl_80305F20
/* 80305ED4 00301B34  2C 03 00 15 */	cmpwi r3, 0x15
/* 80305ED8 00301B38  40 82 00 24 */	bne lbl_80305EFC
/* 80305EDC 00301B3C  80 7F 18 8C */	lwz r3, 0x188c(r31)
/* 80305EE0 00301B40  48 00 28 F5 */	bl VFipdm_part_get_driver_error_code
/* 80305EE4 00301B44  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80305EE8 00301B48  3B C0 10 00 */	li r30, 0x1000
/* 80305EEC 00301B4C  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80305EF0 00301B50  90 64 00 20 */	stw r3, 0x20(r4)
/* 80305EF4 00301B54  90 7F 18 70 */	stw r3, 0x1870(r31)
/* 80305EF8 00301B58  48 00 00 08 */	b lbl_80305F00
lbl_80305EFC:
/* 80305EFC 00301B5C  3B C0 FF FF */	li r30, -1
lbl_80305F00:
/* 80305F00 00301B60  80 81 00 10 */	lwz r4, 0x10(r1)
/* 80305F04 00301B64  7F E3 FB 78 */	mr r3, r31
/* 80305F08 00301B68  48 00 48 B5 */	bl VFiPFCACHE_FreeDataPage
/* 80305F0C 00301B6C  80 7F 18 8C */	lwz r3, 0x188c(r31)
/* 80305F10 00301B70  38 80 00 01 */	li r4, 1
/* 80305F14 00301B74  48 00 1D ED */	bl VFipdm_part_release_permission
/* 80305F18 00301B78  7F C3 F3 78 */	mr r3, r30
/* 80305F1C 00301B7C  48 00 00 D8 */	b lbl_80305FF4
lbl_80305F20:
/* 80305F20 00301B80  80 61 00 10 */	lwz r3, 0x10(r1)
/* 80305F24 00301B84  38 81 00 08 */	addi r4, r1, 8
/* 80305F28 00301B88  80 63 00 04 */	lwz r3, 4(r3)
/* 80305F2C 00301B8C  48 00 0A 01 */	bl VFipdm_bpb_check_boot_sector
/* 80305F30 00301B90  2C 03 00 00 */	cmpwi r3, 0
/* 80305F34 00301B94  41 82 00 24 */	beq lbl_80305F58
/* 80305F38 00301B98  80 81 00 10 */	lwz r4, 0x10(r1)
/* 80305F3C 00301B9C  7F E3 FB 78 */	mr r3, r31
/* 80305F40 00301BA0  48 00 48 7D */	bl VFiPFCACHE_FreeDataPage
/* 80305F44 00301BA4  80 7F 18 8C */	lwz r3, 0x188c(r31)
/* 80305F48 00301BA8  38 80 00 01 */	li r4, 1
/* 80305F4C 00301BAC  48 00 1D B5 */	bl VFipdm_part_release_permission
/* 80305F50 00301BB0  38 60 FF FF */	li r3, -1
/* 80305F54 00301BB4  48 00 00 A0 */	b lbl_80305FF4
lbl_80305F58:
/* 80305F58 00301BB8  80 01 00 08 */	lwz r0, 8(r1)
/* 80305F5C 00301BBC  2C 00 00 00 */	cmpwi r0, 0
/* 80305F60 00301BC0  40 82 00 24 */	bne lbl_80305F84
/* 80305F64 00301BC4  80 81 00 10 */	lwz r4, 0x10(r1)
/* 80305F68 00301BC8  7F E3 FB 78 */	mr r3, r31
/* 80305F6C 00301BCC  48 00 48 51 */	bl VFiPFCACHE_FreeDataPage
/* 80305F70 00301BD0  80 7F 18 8C */	lwz r3, 0x188c(r31)
/* 80305F74 00301BD4  38 80 00 01 */	li r4, 1
/* 80305F78 00301BD8  48 00 1D 89 */	bl VFipdm_part_release_permission
/* 80305F7C 00301BDC  38 60 00 07 */	li r3, 7
/* 80305F80 00301BE0  48 00 00 74 */	b lbl_80305FF4
lbl_80305F84:
/* 80305F84 00301BE4  80 61 00 10 */	lwz r3, 0x10(r1)
/* 80305F88 00301BE8  7F E4 FB 78 */	mr r4, r31
/* 80305F8C 00301BEC  80 63 00 04 */	lwz r3, 4(r3)
/* 80305F90 00301BF0  4B FF F9 65 */	bl VFiPFDRV_GetBPBInformation
/* 80305F94 00301BF4  2C 03 00 00 */	cmpwi r3, 0
/* 80305F98 00301BF8  7C 7E 1B 78 */	mr r30, r3
/* 80305F9C 00301BFC  41 82 00 24 */	beq lbl_80305FC0
/* 80305FA0 00301C00  80 81 00 10 */	lwz r4, 0x10(r1)
/* 80305FA4 00301C04  7F E3 FB 78 */	mr r3, r31
/* 80305FA8 00301C08  48 00 48 15 */	bl VFiPFCACHE_FreeDataPage
/* 80305FAC 00301C0C  80 7F 18 8C */	lwz r3, 0x188c(r31)
/* 80305FB0 00301C10  38 80 00 01 */	li r4, 1
/* 80305FB4 00301C14  48 00 1D 4D */	bl VFipdm_part_release_permission
/* 80305FB8 00301C18  7F C3 F3 78 */	mr r3, r30
/* 80305FBC 00301C1C  48 00 00 38 */	b lbl_80305FF4
lbl_80305FC0:
/* 80305FC0 00301C20  80 81 00 10 */	lwz r4, 0x10(r1)
/* 80305FC4 00301C24  7F E3 FB 78 */	mr r3, r31
/* 80305FC8 00301C28  48 00 47 F5 */	bl VFiPFCACHE_FreeDataPage
/* 80305FCC 00301C2C  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 80305FD0 00301C30  38 60 FF FF */	li r3, -1
/* 80305FD4 00301C34  90 7F 00 38 */	stw r3, 0x38(r31)
/* 80305FD8 00301C38  2C 00 00 02 */	cmpwi r0, 2
/* 80305FDC 00301C3C  90 7F 00 3C */	stw r3, 0x3c(r31)
/* 80305FE0 00301C40  40 82 00 10 */	bne lbl_80305FF0
/* 80305FE4 00301C44  7F E3 FB 78 */	mr r3, r31
/* 80305FE8 00301C48  4B FF F9 F9 */	bl VFiPFDRV_GetFSINFOInformation
/* 80305FEC 00301C4C  7C 7E 1B 78 */	mr r30, r3
lbl_80305FF0:
/* 80305FF0 00301C50  7F C3 F3 78 */	mr r3, r30
lbl_80305FF4:
/* 80305FF4 00301C54  80 01 00 34 */	lwz r0, 0x34(r1)
/* 80305FF8 00301C58  83 E1 00 2C */	lwz r31, 0x2c(r1)
/* 80305FFC 00301C5C  83 C1 00 28 */	lwz r30, 0x28(r1)
/* 80306000 00301C60  7C 08 03 A6 */	mtlr r0
/* 80306004 00301C64  38 21 00 30 */	addi r1, r1, 0x30
/* 80306008 00301C68  4E 80 00 20 */	blr

.global VFiPFDRV_unmount
VFiPFDRV_unmount:
/* 8030600C 00301C6C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80306010 00301C70  7C 08 02 A6 */	mflr r0
/* 80306014 00301C74  2C 03 00 00 */	cmpwi r3, 0
/* 80306018 00301C78  90 01 00 14 */	stw r0, 0x14(r1)
/* 8030601C 00301C7C  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80306020 00301C80  7C 7F 1B 78 */	mr r31, r3
/* 80306024 00301C84  40 82 00 0C */	bne lbl_80306030
/* 80306028 00301C88  38 60 00 0A */	li r3, 0xa
/* 8030602C 00301C8C  48 00 00 54 */	b lbl_80306080
lbl_80306030:
/* 80306030 00301C90  38 04 FF FF */	addi r0, r4, -1
/* 80306034 00301C94  80 63 18 8C */	lwz r3, 0x188c(r3)
/* 80306038 00301C98  7C 00 00 34 */	cntlzw r0, r0
/* 8030603C 00301C9C  54 04 D9 7E */	srwi r4, r0, 5
/* 80306040 00301CA0  48 00 1C C1 */	bl VFipdm_part_release_permission
/* 80306044 00301CA4  2C 03 00 00 */	cmpwi r3, 0
/* 80306048 00301CA8  41 82 00 34 */	beq lbl_8030607C
/* 8030604C 00301CAC  2C 03 00 15 */	cmpwi r3, 0x15
/* 80306050 00301CB0  40 82 00 24 */	bne lbl_80306074
/* 80306054 00301CB4  80 7F 18 8C */	lwz r3, 0x188c(r31)
/* 80306058 00301CB8  48 00 27 7D */	bl VFipdm_part_get_driver_error_code
/* 8030605C 00301CBC  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80306060 00301CC0  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80306064 00301CC4  90 64 00 20 */	stw r3, 0x20(r4)
/* 80306068 00301CC8  90 7F 18 70 */	stw r3, 0x1870(r31)
/* 8030606C 00301CCC  38 60 10 00 */	li r3, 0x1000
/* 80306070 00301CD0  48 00 00 10 */	b lbl_80306080
lbl_80306074:
/* 80306074 00301CD4  38 60 FF FF */	li r3, -1
/* 80306078 00301CD8  48 00 00 08 */	b lbl_80306080
lbl_8030607C:
/* 8030607C 00301CDC  38 60 00 00 */	li r3, 0
lbl_80306080:
/* 80306080 00301CE0  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80306084 00301CE4  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80306088 00301CE8  7C 08 03 A6 */	mtlr r0
/* 8030608C 00301CEC  38 21 00 10 */	addi r1, r1, 0x10
/* 80306090 00301CF0  4E 80 00 20 */	blr

.global VFiPFDRV_format
VFiPFDRV_format:
/* 80306094 00301CF4  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80306098 00301CF8  7C 08 02 A6 */	mflr r0
/* 8030609C 00301CFC  2C 03 00 00 */	cmpwi r3, 0
/* 803060A0 00301D00  90 01 00 14 */	stw r0, 0x14(r1)
/* 803060A4 00301D04  93 E1 00 0C */	stw r31, 0xc(r1)
/* 803060A8 00301D08  7C 9F 23 78 */	mr r31, r4
/* 803060AC 00301D0C  93 C1 00 08 */	stw r30, 8(r1)
/* 803060B0 00301D10  7C 7E 1B 78 */	mr r30, r3
/* 803060B4 00301D14  40 82 00 0C */	bne lbl_803060C0
/* 803060B8 00301D18  38 60 00 0A */	li r3, 0xa
/* 803060BC 00301D1C  48 00 00 E8 */	b lbl_803061A4
lbl_803060C0:
/* 803060C0 00301D20  A0 03 18 78 */	lhz r0, 0x1878(r3)
/* 803060C4 00301D24  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 803060C8 00301D28  40 82 00 44 */	bne lbl_8030610C
/* 803060CC 00301D2C  80 63 18 8C */	lwz r3, 0x188c(r3)
/* 803060D0 00301D30  48 00 1A 4D */	bl VFipdm_part_get_permission
/* 803060D4 00301D34  2C 03 00 00 */	cmpwi r3, 0
/* 803060D8 00301D38  41 82 00 34 */	beq lbl_8030610C
/* 803060DC 00301D3C  2C 03 00 15 */	cmpwi r3, 0x15
/* 803060E0 00301D40  40 82 00 24 */	bne lbl_80306104
/* 803060E4 00301D44  80 7E 18 8C */	lwz r3, 0x188c(r30)
/* 803060E8 00301D48  48 00 26 ED */	bl VFipdm_part_get_driver_error_code
/* 803060EC 00301D4C  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 803060F0 00301D50  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 803060F4 00301D54  90 64 00 20 */	stw r3, 0x20(r4)
/* 803060F8 00301D58  90 7E 18 70 */	stw r3, 0x1870(r30)
/* 803060FC 00301D5C  38 60 10 00 */	li r3, 0x1000
/* 80306100 00301D60  48 00 00 A4 */	b lbl_803061A4
lbl_80306104:
/* 80306104 00301D64  38 60 FF FF */	li r3, -1
/* 80306108 00301D68  48 00 00 9C */	b lbl_803061A4
lbl_8030610C:
/* 8030610C 00301D6C  80 7E 18 8C */	lwz r3, 0x188c(r30)
/* 80306110 00301D70  7F E4 FB 78 */	mr r4, r31
/* 80306114 00301D74  48 00 1D 79 */	bl VFipdm_part_format
/* 80306118 00301D78  2C 03 00 00 */	cmpwi r3, 0
/* 8030611C 00301D7C  41 82 00 34 */	beq lbl_80306150
/* 80306120 00301D80  2C 03 00 15 */	cmpwi r3, 0x15
/* 80306124 00301D84  40 82 00 24 */	bne lbl_80306148
/* 80306128 00301D88  80 7E 18 8C */	lwz r3, 0x188c(r30)
/* 8030612C 00301D8C  48 00 26 A9 */	bl VFipdm_part_get_driver_error_code
/* 80306130 00301D90  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80306134 00301D94  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80306138 00301D98  90 64 00 20 */	stw r3, 0x20(r4)
/* 8030613C 00301D9C  90 7E 18 70 */	stw r3, 0x1870(r30)
/* 80306140 00301DA0  38 60 10 00 */	li r3, 0x1000
/* 80306144 00301DA4  48 00 00 60 */	b lbl_803061A4
lbl_80306148:
/* 80306148 00301DA8  38 60 FF FF */	li r3, -1
/* 8030614C 00301DAC  48 00 00 58 */	b lbl_803061A4
lbl_80306150:
/* 80306150 00301DB0  A0 1E 18 78 */	lhz r0, 0x1878(r30)
/* 80306154 00301DB4  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 80306158 00301DB8  40 82 00 48 */	bne lbl_803061A0
/* 8030615C 00301DBC  80 7E 18 8C */	lwz r3, 0x188c(r30)
/* 80306160 00301DC0  38 80 00 01 */	li r4, 1
/* 80306164 00301DC4  48 00 1B 9D */	bl VFipdm_part_release_permission
/* 80306168 00301DC8  2C 03 00 00 */	cmpwi r3, 0
/* 8030616C 00301DCC  41 82 00 34 */	beq lbl_803061A0
/* 80306170 00301DD0  2C 03 00 15 */	cmpwi r3, 0x15
/* 80306174 00301DD4  40 82 00 24 */	bne lbl_80306198
/* 80306178 00301DD8  80 7E 18 8C */	lwz r3, 0x188c(r30)
/* 8030617C 00301DDC  48 00 26 59 */	bl VFipdm_part_get_driver_error_code
/* 80306180 00301DE0  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80306184 00301DE4  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80306188 00301DE8  90 64 00 20 */	stw r3, 0x20(r4)
/* 8030618C 00301DEC  90 7E 18 70 */	stw r3, 0x1870(r30)
/* 80306190 00301DF0  38 60 10 00 */	li r3, 0x1000
/* 80306194 00301DF4  48 00 00 10 */	b lbl_803061A4
lbl_80306198:
/* 80306198 00301DF8  38 60 FF FF */	li r3, -1
/* 8030619C 00301DFC  48 00 00 08 */	b lbl_803061A4
lbl_803061A0:
/* 803061A0 00301E00  38 60 00 00 */	li r3, 0
lbl_803061A4:
/* 803061A4 00301E04  80 01 00 14 */	lwz r0, 0x14(r1)
/* 803061A8 00301E08  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 803061AC 00301E0C  83 C1 00 08 */	lwz r30, 8(r1)
/* 803061B0 00301E10  7C 08 03 A6 */	mtlr r0
/* 803061B4 00301E14  38 21 00 10 */	addi r1, r1, 0x10
/* 803061B8 00301E18  4E 80 00 20 */	blr

.global VFiPFDRV_lread
VFiPFDRV_lread:
/* 803061BC 00301E1C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 803061C0 00301E20  7C 08 02 A6 */	mflr r0
/* 803061C4 00301E24  2C 03 00 00 */	cmpwi r3, 0
/* 803061C8 00301E28  90 01 00 14 */	stw r0, 0x14(r1)
/* 803061CC 00301E2C  93 E1 00 0C */	stw r31, 0xc(r1)
/* 803061D0 00301E30  7C 7F 1B 78 */	mr r31, r3
/* 803061D4 00301E34  40 82 00 0C */	bne lbl_803061E0
/* 803061D8 00301E38  38 60 00 0A */	li r3, 0xa
/* 803061DC 00301E3C  48 00 00 50 */	b lbl_8030622C
lbl_803061E0:
/* 803061E0 00301E40  7C E8 3B 78 */	mr r8, r7
/* 803061E4 00301E44  80 63 18 8C */	lwz r3, 0x188c(r3)
/* 803061E8 00301E48  A0 FF 00 00 */	lhz r7, 0(r31)
/* 803061EC 00301E4C  48 00 1D ED */	bl VFipdm_part_logical_read
/* 803061F0 00301E50  2C 03 00 00 */	cmpwi r3, 0
/* 803061F4 00301E54  41 82 00 34 */	beq lbl_80306228
/* 803061F8 00301E58  2C 03 00 15 */	cmpwi r3, 0x15
/* 803061FC 00301E5C  40 82 00 24 */	bne lbl_80306220
/* 80306200 00301E60  80 7F 18 8C */	lwz r3, 0x188c(r31)
/* 80306204 00301E64  48 00 25 D1 */	bl VFipdm_part_get_driver_error_code
/* 80306208 00301E68  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 8030620C 00301E6C  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80306210 00301E70  90 64 00 20 */	stw r3, 0x20(r4)
/* 80306214 00301E74  90 7F 18 70 */	stw r3, 0x1870(r31)
/* 80306218 00301E78  38 60 10 00 */	li r3, 0x1000
/* 8030621C 00301E7C  48 00 00 10 */	b lbl_8030622C
lbl_80306220:
/* 80306220 00301E80  38 60 FF FF */	li r3, -1
/* 80306224 00301E84  48 00 00 08 */	b lbl_8030622C
lbl_80306228:
/* 80306228 00301E88  38 60 00 00 */	li r3, 0
lbl_8030622C:
/* 8030622C 00301E8C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80306230 00301E90  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80306234 00301E94  7C 08 03 A6 */	mtlr r0
/* 80306238 00301E98  38 21 00 10 */	addi r1, r1, 0x10
/* 8030623C 00301E9C  4E 80 00 20 */	blr

.global VFiPFDRV_lwrite
VFiPFDRV_lwrite:
/* 80306240 00301EA0  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80306244 00301EA4  7C 08 02 A6 */	mflr r0
/* 80306248 00301EA8  2C 03 00 00 */	cmpwi r3, 0
/* 8030624C 00301EAC  90 01 00 14 */	stw r0, 0x14(r1)
/* 80306250 00301EB0  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80306254 00301EB4  7C 7F 1B 78 */	mr r31, r3
/* 80306258 00301EB8  40 82 00 0C */	bne lbl_80306264
/* 8030625C 00301EBC  38 60 00 0A */	li r3, 0xa
/* 80306260 00301EC0  48 00 00 50 */	b lbl_803062B0
lbl_80306264:
/* 80306264 00301EC4  7C E8 3B 78 */	mr r8, r7
/* 80306268 00301EC8  80 63 18 8C */	lwz r3, 0x188c(r3)
/* 8030626C 00301ECC  A0 FF 00 00 */	lhz r7, 0(r31)
/* 80306270 00301ED0  48 00 1F 31 */	bl VFipdm_part_logical_write
/* 80306274 00301ED4  2C 03 00 00 */	cmpwi r3, 0
/* 80306278 00301ED8  41 82 00 34 */	beq lbl_803062AC
/* 8030627C 00301EDC  2C 03 00 15 */	cmpwi r3, 0x15
/* 80306280 00301EE0  40 82 00 24 */	bne lbl_803062A4
/* 80306284 00301EE4  80 7F 18 8C */	lwz r3, 0x188c(r31)
/* 80306288 00301EE8  48 00 25 4D */	bl VFipdm_part_get_driver_error_code
/* 8030628C 00301EEC  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80306290 00301EF0  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80306294 00301EF4  90 64 00 20 */	stw r3, 0x20(r4)
/* 80306298 00301EF8  90 7F 18 70 */	stw r3, 0x1870(r31)
/* 8030629C 00301EFC  38 60 10 00 */	li r3, 0x1000
/* 803062A0 00301F00  48 00 00 10 */	b lbl_803062B0
lbl_803062A4:
/* 803062A4 00301F04  38 60 FF FF */	li r3, -1
/* 803062A8 00301F08  48 00 00 08 */	b lbl_803062B0
lbl_803062AC:
/* 803062AC 00301F0C  38 60 00 00 */	li r3, 0
lbl_803062B0:
/* 803062B0 00301F10  80 01 00 14 */	lwz r0, 0x14(r1)
/* 803062B4 00301F14  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 803062B8 00301F18  7C 08 03 A6 */	mtlr r0
/* 803062BC 00301F1C  38 21 00 10 */	addi r1, r1, 0x10
/* 803062C0 00301F20  4E 80 00 20 */	blr