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
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global VFiPFFAT12_ReadFATEntry
VFiPFFAT12_ReadFATEntry:
/* 80311170 0030CDD0 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 80311174 0030CDD4 7C 08 02 A6 */ mflr r0
/* 80311178 0030CDD8 90 01 00 34 */ stw r0, 0x34(r1)
/* 8031117C 0030CDDC 39 61 00 30 */ addi r11, r1, 0x30
/* 80311180 0030CDE0 4B EB 5F A1 */ bl _savegpr_25
/* 80311184 0030CDE4 2C 03 00 00 */ cmpwi r3, 0
/* 80311188 0030CDE8 7C 7C 1B 78 */ mr r28, r3
/* 8031118C 0030CDEC 7C 9D 23 78 */ mr r29, r4
/* 80311190 0030CDF0 7C BE 2B 78 */ mr r30, r5
/* 80311194 0030CDF4 40 82 00 14 */ bne lbl_803111A8
/* 80311198 0030CDF8 38 00 FF FF */ li r0, -1
/* 8031119C 0030CDFC 38 60 00 0A */ li r3, 0xa
/* 803111A0 0030CE00 90 05 00 00 */ stw r0, 0(r5)
/* 803111A4 0030CE04 48 00 01 98 */ b lbl_8031133C
lbl_803111A8:
/* 803111A8 0030CE08 28 04 00 02 */ cmplwi r4, 2
/* 803111AC 0030CE0C 41 80 00 14 */ blt lbl_803111C0
/* 803111B0 0030CE10 80 C3 00 34 */ lwz r6, 0x34(r3)
/* 803111B4 0030CE14 38 06 00 02 */ addi r0, r6, 2
/* 803111B8 0030CE18 7C 04 00 40 */ cmplw r4, r0
/* 803111BC 0030CE1C 41 80 00 24 */ blt lbl_803111E0
lbl_803111C0:
/* 803111C0 0030CE20 2C 04 00 00 */ cmpwi r4, 0
/* 803111C4 0030CE24 41 82 00 1C */ beq lbl_803111E0
/* 803111C8 0030CE28 28 04 00 01 */ cmplwi r4, 1
/* 803111CC 0030CE2C 41 82 00 14 */ beq lbl_803111E0
/* 803111D0 0030CE30 38 00 FF FF */ li r0, -1
/* 803111D4 0030CE34 38 60 00 0E */ li r3, 0xe
/* 803111D8 0030CE38 90 05 00 00 */ stw r0, 0(r5)
/* 803111DC 0030CE3C 48 00 01 60 */ b lbl_8031133C
lbl_803111E0:
/* 803111E0 0030CE40 7C 80 0E 70 */ srawi r0, r4, 1
/* 803111E4 0030CE44 A0 E3 00 18 */ lhz r7, 0x18(r3)
/* 803111E8 0030CE48 7C 04 02 14 */ add r0, r4, r0
/* 803111EC 0030CE4C 88 A3 00 20 */ lbz r5, 0x20(r3)
/* 803111F0 0030CE50 54 08 04 3E */ clrlwi r8, r0, 0x10
/* 803111F4 0030CE54 A0 83 00 00 */ lhz r4, 0(r3)
/* 803111F8 0030CE58 54 E0 06 31 */ rlwinm. r0, r7, 0, 0x18, 0x18
/* 803111FC 0030CE5C 80 C3 00 28 */ lwz r6, 0x28(r3)
/* 80311200 0030CE60 7D 03 2E 30 */ sraw r3, r8, r5
/* 80311204 0030CE64 3B E0 00 01 */ li r31, 1
/* 80311208 0030CE68 38 04 FF FF */ addi r0, r4, -1
/* 8031120C 0030CE6C 7C 66 1A 14 */ add r3, r6, r3
/* 80311210 0030CE70 54 79 04 3E */ clrlwi r25, r3, 0x10
/* 80311214 0030CE74 7D 00 00 38 */ and r0, r8, r0
/* 80311218 0030CE78 41 82 00 08 */ beq lbl_80311220
/* 8031121C 0030CE7C 54 FF 07 7E */ clrlwi r31, r7, 0x1d
lbl_80311220:
/* 80311220 0030CE80 54 1B 04 3E */ clrlwi r27, r0, 0x10
lbl_80311224:
/* 80311224 0030CE84 A0 7C 00 00 */ lhz r3, 0(r28)
/* 80311228 0030CE88 38 03 FF FF */ addi r0, r3, -1
/* 8031122C 0030CE8C 7C 1B 00 00 */ cmpw r27, r0
/* 80311230 0030CE90 40 80 00 24 */ bge lbl_80311254
/* 80311234 0030CE94 7F 83 E3 78 */ mr r3, r28
/* 80311238 0030CE98 7F 66 DB 78 */ mr r6, r27
/* 8031123C 0030CE9C 38 81 00 08 */ addi r4, r1, 8
/* 80311240 0030CEA0 57 25 04 3E */ clrlwi r5, r25, 0x10
/* 80311244 0030CEA4 38 E0 00 02 */ li r7, 2
/* 80311248 0030CEA8 48 00 77 29 */ bl VFiPFSEC_ReadFAT
/* 8031124C 0030CEAC 7C 7A 1B 78 */ mr r26, r3
/* 80311250 0030CEB0 48 00 00 48 */ b lbl_80311298
lbl_80311254:
/* 80311254 0030CEB4 7F 83 E3 78 */ mr r3, r28
/* 80311258 0030CEB8 7F 66 DB 78 */ mr r6, r27
/* 8031125C 0030CEBC 38 81 00 08 */ addi r4, r1, 8
/* 80311260 0030CEC0 57 25 04 3E */ clrlwi r5, r25, 0x10
/* 80311264 0030CEC4 38 E0 00 01 */ li r7, 1
/* 80311268 0030CEC8 48 00 77 09 */ bl VFiPFSEC_ReadFAT
/* 8031126C 0030CECC 2C 03 00 00 */ cmpwi r3, 0
/* 80311270 0030CED0 7C 7A 1B 78 */ mr r26, r3
/* 80311274 0030CED4 40 82 00 24 */ bne lbl_80311298
/* 80311278 0030CED8 57 25 04 3E */ clrlwi r5, r25, 0x10
/* 8031127C 0030CEDC 7F 83 E3 78 */ mr r3, r28
/* 80311280 0030CEE0 38 81 00 09 */ addi r4, r1, 9
/* 80311284 0030CEE4 38 C0 00 00 */ li r6, 0
/* 80311288 0030CEE8 38 A5 00 01 */ addi r5, r5, 1
/* 8031128C 0030CEEC 38 E0 00 01 */ li r7, 1
/* 80311290 0030CEF0 48 00 76 E1 */ bl VFiPFSEC_ReadFAT
/* 80311294 0030CEF4 7C 7A 1B 78 */ mr r26, r3
lbl_80311298:
/* 80311298 0030CEF8 2C 1A 10 00 */ cmpwi r26, 0x1000
/* 8031129C 0030CEFC 40 82 00 54 */ bne lbl_803112F0
/* 803112A0 0030CF00 81 9C 18 90 */ lwz r12, 0x1890(r28)
/* 803112A4 0030CF04 2C 0C 00 00 */ cmpwi r12, 0
/* 803112A8 0030CF08 41 82 00 48 */ beq lbl_803112F0
/* 803112AC 0030CF0C 80 7C 18 70 */ lwz r3, 0x1870(r28)
/* 803112B0 0030CF10 7D 89 03 A6 */ mtctr r12
/* 803112B4 0030CF14 4E 80 04 21 */ bctrl
/* 803112B8 0030CF18 2C 03 00 00 */ cmpwi r3, 0
/* 803112BC 0030CF1C 41 82 00 4C */ beq lbl_80311308
/* 803112C0 0030CF20 2C 03 00 01 */ cmpwi r3, 1
/* 803112C4 0030CF24 40 82 00 2C */ bne lbl_803112F0
/* 803112C8 0030CF28 88 1C 00 22 */ lbz r0, 0x22(r28)
/* 803112CC 0030CF2C 28 00 00 02 */ cmplwi r0, 2
/* 803112D0 0030CF30 41 80 00 20 */ blt lbl_803112F0
/* 803112D4 0030CF34 7C 1F 00 40 */ cmplw r31, r0
/* 803112D8 0030CF38 40 80 00 18 */ bge lbl_803112F0
/* 803112DC 0030CF3C 80 1C 00 0C */ lwz r0, 0xc(r28)
/* 803112E0 0030CF40 3B FF 00 01 */ addi r31, r31, 1
/* 803112E4 0030CF44 54 00 04 3E */ clrlwi r0, r0, 0x10
/* 803112E8 0030CF48 7F 39 02 14 */ add r25, r25, r0
/* 803112EC 0030CF4C 48 00 00 1C */ b lbl_80311308
lbl_803112F0:
/* 803112F0 0030CF50 2C 1A 00 00 */ cmpwi r26, 0
/* 803112F4 0030CF54 41 82 00 14 */ beq lbl_80311308
/* 803112F8 0030CF58 38 00 FF FF */ li r0, -1
/* 803112FC 0030CF5C 7F 43 D3 78 */ mr r3, r26
/* 80311300 0030CF60 90 1E 00 00 */ stw r0, 0(r30)
/* 80311304 0030CF64 48 00 00 38 */ b lbl_8031133C
lbl_80311308:
/* 80311308 0030CF68 2C 1A 00 00 */ cmpwi r26, 0
/* 8031130C 0030CF6C 40 82 FF 18 */ bne lbl_80311224
/* 80311310 0030CF70 57 A0 07 FF */ clrlwi. r0, r29, 0x1f
/* 80311314 0030CF74 A0 61 00 08 */ lhz r3, 8(r1)
/* 80311318 0030CF78 54 60 44 2E */ rlwinm r0, r3, 8, 0x10, 0x17
/* 8031131C 0030CF7C 50 60 C6 3E */ rlwimi r0, r3, 0x18, 0x18, 0x1f
/* 80311320 0030CF80 41 82 00 10 */ beq lbl_80311330
/* 80311324 0030CF84 54 00 E5 3E */ rlwinm r0, r0, 0x1c, 0x14, 0x1f
/* 80311328 0030CF88 90 1E 00 00 */ stw r0, 0(r30)
/* 8031132C 0030CF8C 48 00 00 0C */ b lbl_80311338
lbl_80311330:
/* 80311330 0030CF90 54 00 05 3E */ clrlwi r0, r0, 0x14
/* 80311334 0030CF94 90 1E 00 00 */ stw r0, 0(r30)
lbl_80311338:
/* 80311338 0030CF98 38 60 00 00 */ li r3, 0
lbl_8031133C:
/* 8031133C 0030CF9C 39 61 00 30 */ addi r11, r1, 0x30
/* 80311340 0030CFA0 4B EB 5E 2D */ bl _restgpr_25
/* 80311344 0030CFA4 80 01 00 34 */ lwz r0, 0x34(r1)
/* 80311348 0030CFA8 7C 08 03 A6 */ mtlr r0
/* 8031134C 0030CFAC 38 21 00 30 */ addi r1, r1, 0x30
/* 80311350 0030CFB0 4E 80 00 20 */ blr
.global VFiPFFAT12_ReadFATEntryPage
VFiPFFAT12_ReadFATEntryPage:
/* 80311354 0030CFB4 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 80311358 0030CFB8 7C 08 02 A6 */ mflr r0
/* 8031135C 0030CFBC 90 01 00 34 */ stw r0, 0x34(r1)
/* 80311360 0030CFC0 39 61 00 30 */ addi r11, r1, 0x30
/* 80311364 0030CFC4 4B EB 5D B9 */ bl _savegpr_24
/* 80311368 0030CFC8 2C 03 00 00 */ cmpwi r3, 0
/* 8031136C 0030CFCC 7C 78 1B 78 */ mr r24, r3
/* 80311370 0030CFD0 7C 99 23 78 */ mr r25, r4
/* 80311374 0030CFD4 7C BA 2B 78 */ mr r26, r5
/* 80311378 0030CFD8 7C DB 33 78 */ mr r27, r6
/* 8031137C 0030CFDC 40 82 00 0C */ bne lbl_80311388
/* 80311380 0030CFE0 38 60 00 0A */ li r3, 0xa
/* 80311384 0030CFE4 48 00 02 8C */ b lbl_80311610
lbl_80311388:
/* 80311388 0030CFE8 28 04 00 02 */ cmplwi r4, 2
/* 8031138C 0030CFEC 41 80 00 14 */ blt lbl_803113A0
/* 80311390 0030CFF0 80 A3 00 34 */ lwz r5, 0x34(r3)
/* 80311394 0030CFF4 38 05 00 02 */ addi r0, r5, 2
/* 80311398 0030CFF8 7C 04 00 40 */ cmplw r4, r0
/* 8031139C 0030CFFC 41 80 00 1C */ blt lbl_803113B8
lbl_803113A0:
/* 803113A0 0030D000 2C 04 00 00 */ cmpwi r4, 0
/* 803113A4 0030D004 41 82 00 14 */ beq lbl_803113B8
/* 803113A8 0030D008 28 04 00 01 */ cmplwi r4, 1
/* 803113AC 0030D00C 41 82 00 0C */ beq lbl_803113B8
/* 803113B0 0030D010 38 60 00 0E */ li r3, 0xe
/* 803113B4 0030D014 48 00 02 5C */ b lbl_80311610
lbl_803113B8:
/* 803113B8 0030D018 54 80 FC 7E */ rlwinm r0, r4, 0x1f, 0x11, 0x1f
/* 803113BC 0030D01C A0 A3 00 18 */ lhz r5, 0x18(r3)
/* 803113C0 0030D020 7C 04 02 14 */ add r0, r4, r0
/* 803113C4 0030D024 88 83 00 20 */ lbz r4, 0x20(r3)
/* 803113C8 0030D028 54 1F 04 3E */ clrlwi r31, r0, 0x10
/* 803113CC 0030D02C 80 63 00 28 */ lwz r3, 0x28(r3)
/* 803113D0 0030D030 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
/* 803113D4 0030D034 3B 80 00 01 */ li r28, 1
/* 803113D8 0030D038 7F E0 24 30 */ srw r0, r31, r4
/* 803113DC 0030D03C 7C 03 02 14 */ add r0, r3, r0
/* 803113E0 0030D040 54 1D 04 3E */ clrlwi r29, r0, 0x10
/* 803113E4 0030D044 41 82 00 08 */ beq lbl_803113EC
/* 803113E8 0030D048 54 BC 07 7E */ clrlwi r28, r5, 0x1d
lbl_803113EC:
/* 803113EC 0030D04C 3B C0 00 00 */ li r30, 0
lbl_803113F0:
/* 803113F0 0030D050 2C 1E 10 00 */ cmpwi r30, 0x1000
/* 803113F4 0030D054 40 82 00 5C */ bne lbl_80311450
/* 803113F8 0030D058 81 98 18 90 */ lwz r12, 0x1890(r24)
/* 803113FC 0030D05C 2C 0C 00 00 */ cmpwi r12, 0
/* 80311400 0030D060 41 82 00 50 */ beq lbl_80311450
/* 80311404 0030D064 80 78 18 70 */ lwz r3, 0x1870(r24)
/* 80311408 0030D068 7D 89 03 A6 */ mtctr r12
/* 8031140C 0030D06C 4E 80 04 21 */ bctrl
/* 80311410 0030D070 2C 03 00 00 */ cmpwi r3, 0
/* 80311414 0030D074 40 82 00 0C */ bne lbl_80311420
/* 80311418 0030D078 3B C0 00 00 */ li r30, 0
/* 8031141C 0030D07C 4B FF FF D4 */ b lbl_803113F0
lbl_80311420:
/* 80311420 0030D080 2C 03 00 01 */ cmpwi r3, 1
/* 80311424 0030D084 40 82 01 AC */ bne lbl_803115D0
/* 80311428 0030D088 88 18 00 22 */ lbz r0, 0x22(r24)
/* 8031142C 0030D08C 28 00 00 02 */ cmplwi r0, 2
/* 80311430 0030D090 41 80 01 A0 */ blt lbl_803115D0
/* 80311434 0030D094 7C 1C 00 40 */ cmplw r28, r0
/* 80311438 0030D098 40 80 01 98 */ bge lbl_803115D0
/* 8031143C 0030D09C 80 18 00 0C */ lwz r0, 0xc(r24)
/* 80311440 0030D0A0 3B C0 00 00 */ li r30, 0
/* 80311444 0030D0A4 3B 9C 00 01 */ addi r28, r28, 1
/* 80311448 0030D0A8 7F BD 02 14 */ add r29, r29, r0
/* 8031144C 0030D0AC 4B FF FF A4 */ b lbl_803113F0
lbl_80311450:
/* 80311450 0030D0B0 80 9B 00 00 */ lwz r4, 0(r27)
/* 80311454 0030D0B4 80 C4 00 18 */ lwz r6, 0x18(r4)
/* 80311458 0030D0B8 7C 06 E8 40 */ cmplw r6, r29
/* 8031145C 0030D0BC 41 81 00 14 */ bgt lbl_80311470
/* 80311460 0030D0C0 80 18 16 00 */ lwz r0, 0x1600(r24)
/* 80311464 0030D0C4 7C 06 02 14 */ add r0, r6, r0
/* 80311468 0030D0C8 7C 00 E8 40 */ cmplw r0, r29
/* 8031146C 0030D0CC 41 81 00 44 */ bgt lbl_803114B0
lbl_80311470:
/* 80311470 0030D0D0 A0 04 00 02 */ lhz r0, 2(r4)
/* 80311474 0030D0D4 28 00 00 01 */ cmplwi r0, 1
/* 80311478 0030D0D8 40 82 00 18 */ bne lbl_80311490
/* 8031147C 0030D0DC 7F 03 C3 78 */ mr r3, r24
/* 80311480 0030D0E0 4B FF E9 E9 */ bl VFiPFFAT_UpdateFATEntry
/* 80311484 0030D0E4 2C 03 00 00 */ cmpwi r3, 0
/* 80311488 0030D0E8 41 82 00 08 */ beq lbl_80311490
/* 8031148C 0030D0EC 48 00 01 84 */ b lbl_80311610
lbl_80311490:
/* 80311490 0030D0F0 7F 03 C3 78 */ mr r3, r24
/* 80311494 0030D0F4 7F A4 EB 78 */ mr r4, r29
/* 80311498 0030D0F8 7F 65 DB 78 */ mr r5, r27
/* 8031149C 0030D0FC 4B FF 93 B1 */ bl VFiPFCACHE_ReadFATPage
/* 803114A0 0030D100 2C 03 00 00 */ cmpwi r3, 0
/* 803114A4 0030D104 7C 7E 1B 78 */ mr r30, r3
/* 803114A8 0030D108 40 82 FF 48 */ bne lbl_803113F0
/* 803114AC 0030D10C 48 00 00 30 */ b lbl_803114DC
lbl_803114B0:
/* 803114B0 0030D110 80 64 00 04 */ lwz r3, 4(r4)
/* 803114B4 0030D114 80 A4 00 08 */ lwz r5, 8(r4)
/* 803114B8 0030D118 88 18 00 20 */ lbz r0, 0x20(r24)
/* 803114BC 0030D11C 7C 63 28 50 */ subf r3, r3, r5
/* 803114C0 0030D120 7C 60 06 30 */ sraw r0, r3, r0
/* 803114C4 0030D124 7C 06 02 14 */ add r0, r6, r0
/* 803114C8 0030D128 7C 1D 00 40 */ cmplw r29, r0
/* 803114CC 0030D12C 41 82 00 10 */ beq lbl_803114DC
/* 803114D0 0030D130 A0 18 00 00 */ lhz r0, 0(r24)
/* 803114D4 0030D134 7C 05 02 14 */ add r0, r5, r0
/* 803114D8 0030D138 90 04 00 08 */ stw r0, 8(r4)
lbl_803114DC:
/* 803114DC 0030D13C A0 78 00 00 */ lhz r3, 0(r24)
/* 803114E0 0030D140 38 03 FF FF */ addi r0, r3, -1
/* 803114E4 0030D144 7F E5 00 38 */ and r5, r31, r0
/* 803114E8 0030D148 7C 05 00 40 */ cmplw r5, r0
/* 803114EC 0030D14C 40 82 00 C4 */ bne lbl_803115B0
/* 803114F0 0030D150 80 7B 00 00 */ lwz r3, 0(r27)
/* 803114F4 0030D154 38 DD 00 01 */ addi r6, r29, 1
/* 803114F8 0030D158 80 63 00 08 */ lwz r3, 8(r3)
/* 803114FC 0030D15C 7C 03 28 AE */ lbzx r0, r3, r5
/* 80311500 0030D160 90 1A 00 00 */ stw r0, 0(r26)
/* 80311504 0030D164 80 9B 00 00 */ lwz r4, 0(r27)
/* 80311508 0030D168 80 E4 00 18 */ lwz r7, 0x18(r4)
/* 8031150C 0030D16C 7C 07 30 40 */ cmplw r7, r6
/* 80311510 0030D170 41 81 00 14 */ bgt lbl_80311524
/* 80311514 0030D174 80 18 16 00 */ lwz r0, 0x1600(r24)
/* 80311518 0030D178 7C 07 02 14 */ add r0, r7, r0
/* 8031151C 0030D17C 7C 00 30 40 */ cmplw r0, r6
/* 80311520 0030D180 41 81 00 44 */ bgt lbl_80311564
lbl_80311524:
/* 80311524 0030D184 A0 04 00 02 */ lhz r0, 2(r4)
/* 80311528 0030D188 28 00 00 01 */ cmplwi r0, 1
/* 8031152C 0030D18C 40 82 00 18 */ bne lbl_80311544
/* 80311530 0030D190 7F 03 C3 78 */ mr r3, r24
/* 80311534 0030D194 4B FF E9 35 */ bl VFiPFFAT_UpdateFATEntry
/* 80311538 0030D198 2C 03 00 00 */ cmpwi r3, 0
/* 8031153C 0030D19C 41 82 00 08 */ beq lbl_80311544
/* 80311540 0030D1A0 48 00 00 D0 */ b lbl_80311610
lbl_80311544:
/* 80311544 0030D1A4 7F 03 C3 78 */ mr r3, r24
/* 80311548 0030D1A8 7F 65 DB 78 */ mr r5, r27
/* 8031154C 0030D1AC 38 9D 00 01 */ addi r4, r29, 1
/* 80311550 0030D1B0 4B FF 92 FD */ bl VFiPFCACHE_ReadFATPage
/* 80311554 0030D1B4 2C 03 00 00 */ cmpwi r3, 0
/* 80311558 0030D1B8 7C 7E 1B 78 */ mr r30, r3
/* 8031155C 0030D1BC 41 82 00 34 */ beq lbl_80311590
/* 80311560 0030D1C0 48 00 00 B0 */ b lbl_80311610
lbl_80311564:
/* 80311564 0030D1C4 80 64 00 04 */ lwz r3, 4(r4)
/* 80311568 0030D1C8 80 A4 00 08 */ lwz r5, 8(r4)
/* 8031156C 0030D1CC 88 18 00 20 */ lbz r0, 0x20(r24)
/* 80311570 0030D1D0 7C 63 28 50 */ subf r3, r3, r5
/* 80311574 0030D1D4 7C 60 06 30 */ sraw r0, r3, r0
/* 80311578 0030D1D8 7C 07 02 14 */ add r0, r7, r0
/* 8031157C 0030D1DC 7C 06 00 40 */ cmplw r6, r0
/* 80311580 0030D1E0 41 82 00 10 */ beq lbl_80311590
/* 80311584 0030D1E4 A0 18 00 00 */ lhz r0, 0(r24)
/* 80311588 0030D1E8 7C 05 02 14 */ add r0, r5, r0
/* 8031158C 0030D1EC 90 04 00 08 */ stw r0, 8(r4)
lbl_80311590:
/* 80311590 0030D1F0 80 7B 00 00 */ lwz r3, 0(r27)
/* 80311594 0030D1F4 80 9A 00 00 */ lwz r4, 0(r26)
/* 80311598 0030D1F8 80 63 00 08 */ lwz r3, 8(r3)
/* 8031159C 0030D1FC 88 03 00 00 */ lbz r0, 0(r3)
/* 803115A0 0030D200 54 00 40 2E */ slwi r0, r0, 8
/* 803115A4 0030D204 7C 04 02 14 */ add r0, r4, r0
/* 803115A8 0030D208 90 1A 00 00 */ stw r0, 0(r26)
/* 803115AC 0030D20C 48 00 00 24 */ b lbl_803115D0
lbl_803115B0:
/* 803115B0 0030D210 80 7B 00 00 */ lwz r3, 0(r27)
/* 803115B4 0030D214 80 83 00 08 */ lwz r4, 8(r3)
/* 803115B8 0030D218 7C 64 2A 14 */ add r3, r4, r5
/* 803115BC 0030D21C 7C 04 28 AE */ lbzx r0, r4, r5
/* 803115C0 0030D220 88 63 00 01 */ lbz r3, 1(r3)
/* 803115C4 0030D224 54 63 40 2E */ slwi r3, r3, 8
/* 803115C8 0030D228 7C 03 02 14 */ add r0, r3, r0
/* 803115CC 0030D22C 90 1A 00 00 */ stw r0, 0(r26)
lbl_803115D0:
/* 803115D0 0030D230 2C 1E 00 00 */ cmpwi r30, 0
/* 803115D4 0030D234 41 82 00 14 */ beq lbl_803115E8
/* 803115D8 0030D238 38 00 FF FF */ li r0, -1
/* 803115DC 0030D23C 7F C3 F3 78 */ mr r3, r30
/* 803115E0 0030D240 90 1A 00 00 */ stw r0, 0(r26)
/* 803115E4 0030D244 48 00 00 2C */ b lbl_80311610
lbl_803115E8:
/* 803115E8 0030D248 57 20 07 FF */ clrlwi. r0, r25, 0x1f
/* 803115EC 0030D24C 41 82 00 14 */ beq lbl_80311600
/* 803115F0 0030D250 80 1A 00 00 */ lwz r0, 0(r26)
/* 803115F4 0030D254 54 00 E1 3E */ srwi r0, r0, 4
/* 803115F8 0030D258 90 1A 00 00 */ stw r0, 0(r26)
/* 803115FC 0030D25C 48 00 00 10 */ b lbl_8031160C
lbl_80311600:
/* 80311600 0030D260 80 1A 00 00 */ lwz r0, 0(r26)
/* 80311604 0030D264 54 00 05 3E */ clrlwi r0, r0, 0x14
/* 80311608 0030D268 90 1A 00 00 */ stw r0, 0(r26)
lbl_8031160C:
/* 8031160C 0030D26C 38 60 00 00 */ li r3, 0
lbl_80311610:
/* 80311610 0030D270 39 61 00 30 */ addi r11, r1, 0x30
/* 80311614 0030D274 4B EB 5B 55 */ bl _restgpr_24
/* 80311618 0030D278 80 01 00 34 */ lwz r0, 0x34(r1)
/* 8031161C 0030D27C 7C 08 03 A6 */ mtlr r0
/* 80311620 0030D280 38 21 00 30 */ addi r1, r1, 0x30
/* 80311624 0030D284 4E 80 00 20 */ blr
.global VFiPFFAT12_WriteFATEntry
VFiPFFAT12_WriteFATEntry:
/* 80311628 0030D288 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8031162C 0030D28C 7C 08 02 A6 */ mflr r0
/* 80311630 0030D290 2C 03 00 00 */ cmpwi r3, 0
/* 80311634 0030D294 90 01 00 24 */ stw r0, 0x24(r1)
/* 80311638 0030D298 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 8031163C 0030D29C 93 C1 00 18 */ stw r30, 0x18(r1)
/* 80311640 0030D2A0 7C BE 2B 78 */ mr r30, r5
/* 80311644 0030D2A4 93 A1 00 14 */ stw r29, 0x14(r1)
/* 80311648 0030D2A8 7C 7D 1B 78 */ mr r29, r3
/* 8031164C 0030D2AC 93 81 00 10 */ stw r28, 0x10(r1)
/* 80311650 0030D2B0 40 82 00 0C */ bne lbl_8031165C
/* 80311654 0030D2B4 38 60 00 0A */ li r3, 0xa
/* 80311658 0030D2B8 48 00 01 54 */ b lbl_803117AC
lbl_8031165C:
/* 8031165C 0030D2BC 28 04 00 02 */ cmplwi r4, 2
/* 80311660 0030D2C0 41 80 00 14 */ blt lbl_80311674
/* 80311664 0030D2C4 80 A3 00 34 */ lwz r5, 0x34(r3)
/* 80311668 0030D2C8 38 05 00 02 */ addi r0, r5, 2
/* 8031166C 0030D2CC 7C 04 00 40 */ cmplw r4, r0
/* 80311670 0030D2D0 41 80 00 1C */ blt lbl_8031168C
lbl_80311674:
/* 80311674 0030D2D4 2C 04 00 00 */ cmpwi r4, 0
/* 80311678 0030D2D8 41 82 00 14 */ beq lbl_8031168C
/* 8031167C 0030D2DC 28 04 00 01 */ cmplwi r4, 1
/* 80311680 0030D2E0 41 82 00 0C */ beq lbl_8031168C
/* 80311684 0030D2E4 38 60 00 0E */ li r3, 0xe
/* 80311688 0030D2E8 48 00 01 24 */ b lbl_803117AC
lbl_8031168C:
/* 8031168C 0030D2EC 54 80 07 FF */ clrlwi. r0, r4, 0x1f
/* 80311690 0030D2F0 7C 85 0E 70 */ srawi r5, r4, 1
/* 80311694 0030D2F4 7C 04 2A 14 */ add r0, r4, r5
/* 80311698 0030D2F8 A0 83 00 00 */ lhz r4, 0(r3)
/* 8031169C 0030D2FC 88 A3 00 20 */ lbz r5, 0x20(r3)
/* 803116A0 0030D300 54 07 04 3E */ clrlwi r7, r0, 0x10
/* 803116A4 0030D304 81 03 00 28 */ lwz r8, 0x28(r3)
/* 803116A8 0030D308 7C E0 2E 30 */ sraw r0, r7, r5
/* 803116AC 0030D30C 38 C4 FF FF */ addi r6, r4, -1
/* 803116B0 0030D310 7C 08 02 14 */ add r0, r8, r0
/* 803116B4 0030D314 54 1F 04 3E */ clrlwi r31, r0, 0x10
/* 803116B8 0030D318 7C FC 30 38 */ and r28, r7, r6
/* 803116BC 0030D31C 41 82 00 40 */ beq lbl_803116FC
/* 803116C0 0030D320 7F A3 EB 78 */ mr r3, r29
/* 803116C4 0030D324 7F E5 FB 78 */ mr r5, r31
/* 803116C8 0030D328 38 81 00 08 */ addi r4, r1, 8
/* 803116CC 0030D32C 57 86 04 3E */ clrlwi r6, r28, 0x10
/* 803116D0 0030D330 38 E0 00 01 */ li r7, 1
/* 803116D4 0030D334 48 00 72 9D */ bl VFiPFSEC_ReadFAT
/* 803116D8 0030D338 2C 03 00 00 */ cmpwi r3, 0
/* 803116DC 0030D33C 41 82 00 08 */ beq lbl_803116E4
/* 803116E0 0030D340 48 00 00 CC */ b lbl_803117AC
lbl_803116E4:
/* 803116E4 0030D344 88 01 00 08 */ lbz r0, 8(r1)
/* 803116E8 0030D348 57 C3 23 36 */ rlwinm r3, r30, 4, 0xc, 0x1b
/* 803116EC 0030D34C 54 00 07 3E */ clrlwi r0, r0, 0x1c
/* 803116F0 0030D350 7C 03 02 14 */ add r0, r3, r0
/* 803116F4 0030D354 54 03 04 3E */ clrlwi r3, r0, 0x10
/* 803116F8 0030D358 48 00 00 4C */ b lbl_80311744
lbl_803116FC:
/* 803116FC 0030D35C 38 E7 00 01 */ addi r7, r7, 1
/* 80311700 0030D360 7F A3 EB 78 */ mr r3, r29
/* 80311704 0030D364 7C E0 2E 30 */ sraw r0, r7, r5
/* 80311708 0030D368 38 81 00 08 */ addi r4, r1, 8
/* 8031170C 0030D36C 7C A8 02 14 */ add r5, r8, r0
/* 80311710 0030D370 7C E0 30 38 */ and r0, r7, r6
/* 80311714 0030D374 38 E0 00 01 */ li r7, 1
/* 80311718 0030D378 54 A5 04 3E */ clrlwi r5, r5, 0x10
/* 8031171C 0030D37C 54 06 04 3E */ clrlwi r6, r0, 0x10
/* 80311720 0030D380 48 00 72 51 */ bl VFiPFSEC_ReadFAT
/* 80311724 0030D384 2C 03 00 00 */ cmpwi r3, 0
/* 80311728 0030D388 41 82 00 08 */ beq lbl_80311730
/* 8031172C 0030D38C 48 00 00 80 */ b lbl_803117AC
lbl_80311730:
/* 80311730 0030D390 88 61 00 08 */ lbz r3, 8(r1)
/* 80311734 0030D394 57 C0 05 3E */ clrlwi r0, r30, 0x14
/* 80311738 0030D398 54 63 44 26 */ rlwinm r3, r3, 8, 0x10, 0x13
/* 8031173C 0030D39C 7C 03 02 14 */ add r0, r3, r0
/* 80311740 0030D3A0 54 03 04 3E */ clrlwi r3, r0, 0x10
lbl_80311744:
/* 80311744 0030D3A4 38 01 00 08 */ addi r0, r1, 8
/* 80311748 0030D3A8 57 86 04 3E */ clrlwi r6, r28, 0x10
/* 8031174C 0030D3AC 7C 60 07 2C */ sthbrx r3, 0, r0
/* 80311750 0030D3B0 A0 7D 00 00 */ lhz r3, 0(r29)
/* 80311754 0030D3B4 38 03 FF FF */ addi r0, r3, -1
/* 80311758 0030D3B8 7C 06 00 00 */ cmpw r6, r0
/* 8031175C 0030D3BC 40 80 00 1C */ bge lbl_80311778
/* 80311760 0030D3C0 7F A3 EB 78 */ mr r3, r29
/* 80311764 0030D3C4 7F E5 FB 78 */ mr r5, r31
/* 80311768 0030D3C8 38 81 00 08 */ addi r4, r1, 8
/* 8031176C 0030D3CC 38 E0 00 02 */ li r7, 2
/* 80311770 0030D3D0 48 00 75 99 */ bl VFiPFSEC_WriteFAT
/* 80311774 0030D3D4 48 00 00 38 */ b lbl_803117AC
lbl_80311778:
/* 80311778 0030D3D8 7F A3 EB 78 */ mr r3, r29
/* 8031177C 0030D3DC 7F E5 FB 78 */ mr r5, r31
/* 80311780 0030D3E0 38 81 00 08 */ addi r4, r1, 8
/* 80311784 0030D3E4 38 E0 00 01 */ li r7, 1
/* 80311788 0030D3E8 48 00 75 81 */ bl VFiPFSEC_WriteFAT
/* 8031178C 0030D3EC 2C 03 00 00 */ cmpwi r3, 0
/* 80311790 0030D3F0 40 82 00 1C */ bne lbl_803117AC
/* 80311794 0030D3F4 7F A3 EB 78 */ mr r3, r29
/* 80311798 0030D3F8 38 81 00 09 */ addi r4, r1, 9
/* 8031179C 0030D3FC 38 BF 00 01 */ addi r5, r31, 1
/* 803117A0 0030D400 38 C0 00 00 */ li r6, 0
/* 803117A4 0030D404 38 E0 00 01 */ li r7, 1
/* 803117A8 0030D408 48 00 75 61 */ bl VFiPFSEC_WriteFAT
lbl_803117AC:
/* 803117AC 0030D40C 80 01 00 24 */ lwz r0, 0x24(r1)
/* 803117B0 0030D410 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 803117B4 0030D414 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 803117B8 0030D418 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 803117BC 0030D41C 83 81 00 10 */ lwz r28, 0x10(r1)
/* 803117C0 0030D420 7C 08 03 A6 */ mtlr r0
/* 803117C4 0030D424 38 21 00 20 */ addi r1, r1, 0x20
/* 803117C8 0030D428 4E 80 00 20 */ blr
.global VFiPFFAT12_WriteFATEntryPage
VFiPFFAT12_WriteFATEntryPage:
/* 803117CC 0030D42C 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 803117D0 0030D430 7C 08 02 A6 */ mflr r0
/* 803117D4 0030D434 90 01 00 34 */ stw r0, 0x34(r1)
/* 803117D8 0030D438 39 61 00 30 */ addi r11, r1, 0x30
/* 803117DC 0030D43C 4B EB 59 41 */ bl _savegpr_24
/* 803117E0 0030D440 2C 03 00 00 */ cmpwi r3, 0
/* 803117E4 0030D444 7C 79 1B 78 */ mr r25, r3
/* 803117E8 0030D448 7C 9A 23 78 */ mr r26, r4
/* 803117EC 0030D44C 7C BB 2B 78 */ mr r27, r5
/* 803117F0 0030D450 7C DC 33 78 */ mr r28, r6
/* 803117F4 0030D454 3B C0 00 00 */ li r30, 0
/* 803117F8 0030D458 40 82 00 0C */ bne lbl_80311804
/* 803117FC 0030D45C 38 60 00 0A */ li r3, 0xa
/* 80311800 0030D460 48 00 04 40 */ b lbl_80311C40
lbl_80311804:
/* 80311804 0030D464 28 04 00 02 */ cmplwi r4, 2
/* 80311808 0030D468 41 80 00 14 */ blt lbl_8031181C
/* 8031180C 0030D46C 80 A3 00 34 */ lwz r5, 0x34(r3)
/* 80311810 0030D470 38 05 00 02 */ addi r0, r5, 2
/* 80311814 0030D474 7C 04 00 40 */ cmplw r4, r0
/* 80311818 0030D478 41 80 00 1C */ blt lbl_80311834
lbl_8031181C:
/* 8031181C 0030D47C 2C 04 00 00 */ cmpwi r4, 0
/* 80311820 0030D480 41 82 00 14 */ beq lbl_80311834
/* 80311824 0030D484 28 04 00 01 */ cmplwi r4, 1
/* 80311828 0030D488 41 82 00 0C */ beq lbl_80311834
/* 8031182C 0030D48C 38 60 00 0E */ li r3, 0xe
/* 80311830 0030D490 48 00 04 10 */ b lbl_80311C40
lbl_80311834:
/* 80311834 0030D494 54 80 FC 7E */ rlwinm r0, r4, 0x1f, 0x11, 0x1f
/* 80311838 0030D498 88 E3 00 20 */ lbz r7, 0x20(r3)
/* 8031183C 0030D49C 7C 04 02 14 */ add r0, r4, r0
/* 80311840 0030D4A0 80 A6 00 00 */ lwz r5, 0(r6)
/* 80311844 0030D4A4 54 06 04 3E */ clrlwi r6, r0, 0x10
/* 80311848 0030D4A8 80 83 00 28 */ lwz r4, 0x28(r3)
/* 8031184C 0030D4AC 7C C0 3C 30 */ srw r0, r6, r7
/* 80311850 0030D4B0 A1 03 00 00 */ lhz r8, 0(r3)
/* 80311854 0030D4B4 7C 04 02 14 */ add r0, r4, r0
/* 80311858 0030D4B8 80 85 00 18 */ lwz r4, 0x18(r5)
/* 8031185C 0030D4BC 54 1D 04 3E */ clrlwi r29, r0, 0x10
/* 80311860 0030D4C0 7C 04 E8 40 */ cmplw r4, r29
/* 80311864 0030D4C4 38 08 FF FF */ addi r0, r8, -1
/* 80311868 0030D4C8 7C DF 00 38 */ and r31, r6, r0
/* 8031186C 0030D4CC 41 81 00 14 */ bgt lbl_80311880
/* 80311870 0030D4D0 80 03 16 00 */ lwz r0, 0x1600(r3)
/* 80311874 0030D4D4 7C 04 02 14 */ add r0, r4, r0
/* 80311878 0030D4D8 7C 00 E8 40 */ cmplw r0, r29
/* 8031187C 0030D4DC 41 81 00 B4 */ bgt lbl_80311930
lbl_80311880:
/* 80311880 0030D4E0 7F 23 CB 78 */ mr r3, r25
/* 80311884 0030D4E4 7C A4 2B 78 */ mr r4, r5
/* 80311888 0030D4E8 4B FF E5 E1 */ bl VFiPFFAT_UpdateFATEntry
/* 8031188C 0030D4EC 2C 03 00 00 */ cmpwi r3, 0
/* 80311890 0030D4F0 41 82 00 08 */ beq lbl_80311898
/* 80311894 0030D4F4 48 00 03 AC */ b lbl_80311C40
lbl_80311898:
/* 80311898 0030D4F8 A0 79 00 18 */ lhz r3, 0x18(r25)
/* 8031189C 0030D4FC 3B 00 00 01 */ li r24, 1
/* 803118A0 0030D500 54 60 06 31 */ rlwinm. r0, r3, 0, 0x18, 0x18
/* 803118A4 0030D504 41 82 00 08 */ beq lbl_803118AC
/* 803118A8 0030D508 54 78 07 7E */ clrlwi r24, r3, 0x1d
lbl_803118AC:
/* 803118AC 0030D50C 7F 23 CB 78 */ mr r3, r25
/* 803118B0 0030D510 7F A4 EB 78 */ mr r4, r29
/* 803118B4 0030D514 7F 85 E3 78 */ mr r5, r28
/* 803118B8 0030D518 4B FF 8F 95 */ bl VFiPFCACHE_ReadFATPage
/* 803118BC 0030D51C 2C 03 10 00 */ cmpwi r3, 0x1000
/* 803118C0 0030D520 7C 7E 1B 78 */ mr r30, r3
/* 803118C4 0030D524 40 82 00 50 */ bne lbl_80311914
/* 803118C8 0030D528 81 99 18 90 */ lwz r12, 0x1890(r25)
/* 803118CC 0030D52C 2C 0C 00 00 */ cmpwi r12, 0
/* 803118D0 0030D530 41 82 00 44 */ beq lbl_80311914
/* 803118D4 0030D534 80 79 18 70 */ lwz r3, 0x1870(r25)
/* 803118D8 0030D538 7D 89 03 A6 */ mtctr r12
/* 803118DC 0030D53C 4E 80 04 21 */ bctrl
/* 803118E0 0030D540 2C 03 00 00 */ cmpwi r3, 0
/* 803118E4 0030D544 41 82 00 40 */ beq lbl_80311924
/* 803118E8 0030D548 2C 03 00 01 */ cmpwi r3, 1
/* 803118EC 0030D54C 40 82 00 28 */ bne lbl_80311914
/* 803118F0 0030D550 88 19 00 22 */ lbz r0, 0x22(r25)
/* 803118F4 0030D554 28 00 00 02 */ cmplwi r0, 2
/* 803118F8 0030D558 41 80 00 1C */ blt lbl_80311914
/* 803118FC 0030D55C 7C 18 00 40 */ cmplw r24, r0
/* 80311900 0030D560 40 80 00 14 */ bge lbl_80311914
/* 80311904 0030D564 80 19 00 0C */ lwz r0, 0xc(r25)
/* 80311908 0030D568 3B 18 00 01 */ addi r24, r24, 1
/* 8031190C 0030D56C 7F BD 02 14 */ add r29, r29, r0
/* 80311910 0030D570 48 00 00 14 */ b lbl_80311924
lbl_80311914:
/* 80311914 0030D574 2C 1E 00 00 */ cmpwi r30, 0
/* 80311918 0030D578 41 82 00 0C */ beq lbl_80311924
/* 8031191C 0030D57C 7F C3 F3 78 */ mr r3, r30
/* 80311920 0030D580 48 00 03 20 */ b lbl_80311C40
lbl_80311924:
/* 80311924 0030D584 2C 1E 00 00 */ cmpwi r30, 0
/* 80311928 0030D588 40 82 FF 84 */ bne lbl_803118AC
/* 8031192C 0030D58C 48 00 00 28 */ b lbl_80311954
lbl_80311930:
/* 80311930 0030D590 80 05 00 04 */ lwz r0, 4(r5)
/* 80311934 0030D594 80 65 00 08 */ lwz r3, 8(r5)
/* 80311938 0030D598 7C 00 18 50 */ subf r0, r0, r3
/* 8031193C 0030D59C 7C 00 3E 30 */ sraw r0, r0, r7
/* 80311940 0030D5A0 7C 04 02 14 */ add r0, r4, r0
/* 80311944 0030D5A4 7C 1D 00 40 */ cmplw r29, r0
/* 80311948 0030D5A8 41 82 00 0C */ beq lbl_80311954
/* 8031194C 0030D5AC 7C 03 42 14 */ add r0, r3, r8
/* 80311950 0030D5B0 90 05 00 08 */ stw r0, 8(r5)
lbl_80311954:
/* 80311954 0030D5B4 57 40 07 FF */ clrlwi. r0, r26, 0x1f
/* 80311958 0030D5B8 41 82 01 70 */ beq lbl_80311AC8
/* 8031195C 0030D5BC 80 9C 00 00 */ lwz r4, 0(r28)
/* 80311960 0030D5C0 57 E3 04 3E */ clrlwi r3, r31, 0x10
/* 80311964 0030D5C4 80 84 00 08 */ lwz r4, 8(r4)
/* 80311968 0030D5C8 7C 04 18 AE */ lbzx r0, r4, r3
/* 8031196C 0030D5CC 54 00 07 3E */ clrlwi r0, r0, 0x1c
/* 80311970 0030D5D0 53 60 26 36 */ rlwimi r0, r27, 4, 0x18, 0x1b
/* 80311974 0030D5D4 7C 04 19 AE */ stbx r0, r4, r3
/* 80311978 0030D5D8 80 7C 00 00 */ lwz r3, 0(r28)
/* 8031197C 0030D5DC 4B FF 8C 75 */ bl VFiPFCACHE_UpdateModifiedSector
/* 80311980 0030D5E0 A1 19 00 00 */ lhz r8, 0(r25)
/* 80311984 0030D5E4 57 E5 04 3E */ clrlwi r5, r31, 0x10
/* 80311988 0030D5E8 38 08 FF FF */ addi r0, r8, -1
/* 8031198C 0030D5EC 7C 05 00 40 */ cmplw r5, r0
/* 80311990 0030D5F0 40 82 01 20 */ bne lbl_80311AB0
/* 80311994 0030D5F4 80 9C 00 00 */ lwz r4, 0(r28)
/* 80311998 0030D5F8 38 DD 00 01 */ addi r6, r29, 1
/* 8031199C 0030D5FC 80 E4 00 18 */ lwz r7, 0x18(r4)
/* 803119A0 0030D600 7C 07 30 40 */ cmplw r7, r6
/* 803119A4 0030D604 41 81 00 14 */ bgt lbl_803119B8
/* 803119A8 0030D608 80 19 16 00 */ lwz r0, 0x1600(r25)
/* 803119AC 0030D60C 7C 07 02 14 */ add r0, r7, r0
/* 803119B0 0030D610 7C 00 30 40 */ cmplw r0, r6
/* 803119B4 0030D614 41 81 00 B8 */ bgt lbl_80311A6C
lbl_803119B8:
/* 803119B8 0030D618 7F 23 CB 78 */ mr r3, r25
/* 803119BC 0030D61C 4B FF E4 AD */ bl VFiPFFAT_UpdateFATEntry
/* 803119C0 0030D620 2C 03 00 00 */ cmpwi r3, 0
/* 803119C4 0030D624 41 82 00 08 */ beq lbl_803119CC
/* 803119C8 0030D628 48 00 02 78 */ b lbl_80311C40
lbl_803119CC:
/* 803119CC 0030D62C A0 79 00 18 */ lhz r3, 0x18(r25)
/* 803119D0 0030D630 3B 40 00 01 */ li r26, 1
/* 803119D4 0030D634 54 60 06 31 */ rlwinm. r0, r3, 0, 0x18, 0x18
/* 803119D8 0030D638 41 82 00 08 */ beq lbl_803119E0
/* 803119DC 0030D63C 54 7A 07 7E */ clrlwi r26, r3, 0x1d
lbl_803119E0:
/* 803119E0 0030D640 7F 23 CB 78 */ mr r3, r25
/* 803119E4 0030D644 7F 85 E3 78 */ mr r5, r28
/* 803119E8 0030D648 38 9D 00 01 */ addi r4, r29, 1
/* 803119EC 0030D64C 4B FF 8E 61 */ bl VFiPFCACHE_ReadFATPage
/* 803119F0 0030D650 2C 03 10 00 */ cmpwi r3, 0x1000
/* 803119F4 0030D654 7C 7E 1B 78 */ mr r30, r3
/* 803119F8 0030D658 40 82 00 50 */ bne lbl_80311A48
/* 803119FC 0030D65C 81 99 18 90 */ lwz r12, 0x1890(r25)
/* 80311A00 0030D660 2C 0C 00 00 */ cmpwi r12, 0
/* 80311A04 0030D664 41 82 00 44 */ beq lbl_80311A48
/* 80311A08 0030D668 80 79 18 70 */ lwz r3, 0x1870(r25)
/* 80311A0C 0030D66C 7D 89 03 A6 */ mtctr r12
/* 80311A10 0030D670 4E 80 04 21 */ bctrl
/* 80311A14 0030D674 2C 03 00 00 */ cmpwi r3, 0
/* 80311A18 0030D678 41 82 00 40 */ beq lbl_80311A58
/* 80311A1C 0030D67C 2C 03 00 01 */ cmpwi r3, 1
/* 80311A20 0030D680 40 82 00 28 */ bne lbl_80311A48
/* 80311A24 0030D684 88 19 00 22 */ lbz r0, 0x22(r25)
/* 80311A28 0030D688 28 00 00 02 */ cmplwi r0, 2
/* 80311A2C 0030D68C 41 80 00 1C */ blt lbl_80311A48
/* 80311A30 0030D690 7C 1A 00 40 */ cmplw r26, r0
/* 80311A34 0030D694 40 80 00 14 */ bge lbl_80311A48
/* 80311A38 0030D698 80 19 00 0C */ lwz r0, 0xc(r25)
/* 80311A3C 0030D69C 3B 5A 00 01 */ addi r26, r26, 1
/* 80311A40 0030D6A0 7F BD 02 14 */ add r29, r29, r0
/* 80311A44 0030D6A4 48 00 00 14 */ b lbl_80311A58
lbl_80311A48:
/* 80311A48 0030D6A8 2C 1E 00 00 */ cmpwi r30, 0
/* 80311A4C 0030D6AC 41 82 00 0C */ beq lbl_80311A58
/* 80311A50 0030D6B0 7F C3 F3 78 */ mr r3, r30
/* 80311A54 0030D6B4 48 00 01 EC */ b lbl_80311C40
lbl_80311A58:
/* 80311A58 0030D6B8 2C 1E 00 00 */ cmpwi r30, 0
/* 80311A5C 0030D6BC 40 82 FF 84 */ bne lbl_803119E0
/* 80311A60 0030D6C0 80 7C 00 00 */ lwz r3, 0(r28)
/* 80311A64 0030D6C4 4B FF 8B 8D */ bl VFiPFCACHE_UpdateModifiedSector
/* 80311A68 0030D6C8 48 00 00 34 */ b lbl_80311A9C
lbl_80311A6C:
/* 80311A6C 0030D6CC 80 64 00 04 */ lwz r3, 4(r4)
/* 80311A70 0030D6D0 80 A4 00 08 */ lwz r5, 8(r4)
/* 80311A74 0030D6D4 88 19 00 20 */ lbz r0, 0x20(r25)
/* 80311A78 0030D6D8 7C 63 28 50 */ subf r3, r3, r5
/* 80311A7C 0030D6DC 7C 60 06 30 */ sraw r0, r3, r0
/* 80311A80 0030D6E0 7C 07 02 14 */ add r0, r7, r0
/* 80311A84 0030D6E4 7C 06 00 40 */ cmplw r6, r0
/* 80311A88 0030D6E8 41 82 00 14 */ beq lbl_80311A9C
/* 80311A8C 0030D6EC 7C 05 42 14 */ add r0, r5, r8
/* 80311A90 0030D6F0 90 04 00 08 */ stw r0, 8(r4)
/* 80311A94 0030D6F4 80 7C 00 00 */ lwz r3, 0(r28)
/* 80311A98 0030D6F8 4B FF 8B 59 */ bl VFiPFCACHE_UpdateModifiedSector
lbl_80311A9C:
/* 80311A9C 0030D6FC 80 7C 00 00 */ lwz r3, 0(r28)
/* 80311AA0 0030D700 57 60 E6 3E */ rlwinm r0, r27, 0x1c, 0x18, 0x1f
/* 80311AA4 0030D704 80 63 00 08 */ lwz r3, 8(r3)
/* 80311AA8 0030D708 98 03 00 00 */ stb r0, 0(r3)
/* 80311AAC 0030D70C 48 00 01 90 */ b lbl_80311C3C
lbl_80311AB0:
/* 80311AB0 0030D710 80 7C 00 00 */ lwz r3, 0(r28)
/* 80311AB4 0030D714 57 64 E6 3E */ rlwinm r4, r27, 0x1c, 0x18, 0x1f
/* 80311AB8 0030D718 80 03 00 08 */ lwz r0, 8(r3)
/* 80311ABC 0030D71C 7C 65 02 14 */ add r3, r5, r0
/* 80311AC0 0030D720 98 83 00 01 */ stb r4, 1(r3)
/* 80311AC4 0030D724 48 00 01 78 */ b lbl_80311C3C
lbl_80311AC8:
/* 80311AC8 0030D728 80 7C 00 00 */ lwz r3, 0(r28)
/* 80311ACC 0030D72C 57 E0 04 3E */ clrlwi r0, r31, 0x10
/* 80311AD0 0030D730 80 63 00 08 */ lwz r3, 8(r3)
/* 80311AD4 0030D734 7F 63 01 AE */ stbx r27, r3, r0
/* 80311AD8 0030D738 80 7C 00 00 */ lwz r3, 0(r28)
/* 80311ADC 0030D73C 4B FF 8B 15 */ bl VFiPFCACHE_UpdateModifiedSector
/* 80311AE0 0030D740 A1 19 00 00 */ lhz r8, 0(r25)
/* 80311AE4 0030D744 57 E5 04 3E */ clrlwi r5, r31, 0x10
/* 80311AE8 0030D748 38 08 FF FF */ addi r0, r8, -1
/* 80311AEC 0030D74C 7C 05 00 40 */ cmplw r5, r0
/* 80311AF0 0030D750 40 82 01 2C */ bne lbl_80311C1C
/* 80311AF4 0030D754 80 9C 00 00 */ lwz r4, 0(r28)
/* 80311AF8 0030D758 38 DD 00 01 */ addi r6, r29, 1
/* 80311AFC 0030D75C 80 E4 00 18 */ lwz r7, 0x18(r4)
/* 80311B00 0030D760 7C 07 30 40 */ cmplw r7, r6
/* 80311B04 0030D764 41 81 00 14 */ bgt lbl_80311B18
/* 80311B08 0030D768 80 19 16 00 */ lwz r0, 0x1600(r25)
/* 80311B0C 0030D76C 7C 07 02 14 */ add r0, r7, r0
/* 80311B10 0030D770 7C 00 30 40 */ cmplw r0, r6
/* 80311B14 0030D774 41 81 00 B8 */ bgt lbl_80311BCC
lbl_80311B18:
/* 80311B18 0030D778 7F 23 CB 78 */ mr r3, r25
/* 80311B1C 0030D77C 4B FF E3 4D */ bl VFiPFFAT_UpdateFATEntry
/* 80311B20 0030D780 2C 03 00 00 */ cmpwi r3, 0
/* 80311B24 0030D784 41 82 00 08 */ beq lbl_80311B2C
/* 80311B28 0030D788 48 00 01 18 */ b lbl_80311C40
lbl_80311B2C:
/* 80311B2C 0030D78C A0 79 00 18 */ lhz r3, 0x18(r25)
/* 80311B30 0030D790 3B 40 00 01 */ li r26, 1
/* 80311B34 0030D794 54 60 06 31 */ rlwinm. r0, r3, 0, 0x18, 0x18
/* 80311B38 0030D798 41 82 00 08 */ beq lbl_80311B40
/* 80311B3C 0030D79C 54 7A 07 7E */ clrlwi r26, r3, 0x1d
lbl_80311B40:
/* 80311B40 0030D7A0 7F 23 CB 78 */ mr r3, r25
/* 80311B44 0030D7A4 7F 85 E3 78 */ mr r5, r28
/* 80311B48 0030D7A8 38 9D 00 01 */ addi r4, r29, 1
/* 80311B4C 0030D7AC 4B FF 8D 01 */ bl VFiPFCACHE_ReadFATPage
/* 80311B50 0030D7B0 2C 03 10 00 */ cmpwi r3, 0x1000
/* 80311B54 0030D7B4 7C 7E 1B 78 */ mr r30, r3
/* 80311B58 0030D7B8 40 82 00 50 */ bne lbl_80311BA8
/* 80311B5C 0030D7BC 81 99 18 90 */ lwz r12, 0x1890(r25)
/* 80311B60 0030D7C0 2C 0C 00 00 */ cmpwi r12, 0
/* 80311B64 0030D7C4 41 82 00 44 */ beq lbl_80311BA8
/* 80311B68 0030D7C8 80 79 18 70 */ lwz r3, 0x1870(r25)
/* 80311B6C 0030D7CC 7D 89 03 A6 */ mtctr r12
/* 80311B70 0030D7D0 4E 80 04 21 */ bctrl
/* 80311B74 0030D7D4 2C 03 00 00 */ cmpwi r3, 0
/* 80311B78 0030D7D8 41 82 00 40 */ beq lbl_80311BB8
/* 80311B7C 0030D7DC 2C 03 00 01 */ cmpwi r3, 1
/* 80311B80 0030D7E0 40 82 00 28 */ bne lbl_80311BA8
/* 80311B84 0030D7E4 88 19 00 22 */ lbz r0, 0x22(r25)
/* 80311B88 0030D7E8 28 00 00 02 */ cmplwi r0, 2
/* 80311B8C 0030D7EC 41 80 00 1C */ blt lbl_80311BA8
/* 80311B90 0030D7F0 7C 1A 00 40 */ cmplw r26, r0
/* 80311B94 0030D7F4 40 80 00 14 */ bge lbl_80311BA8
/* 80311B98 0030D7F8 80 19 00 0C */ lwz r0, 0xc(r25)
/* 80311B9C 0030D7FC 3B 5A 00 01 */ addi r26, r26, 1
/* 80311BA0 0030D800 7F BD 02 14 */ add r29, r29, r0
/* 80311BA4 0030D804 48 00 00 14 */ b lbl_80311BB8
lbl_80311BA8:
/* 80311BA8 0030D808 2C 1E 00 00 */ cmpwi r30, 0
/* 80311BAC 0030D80C 41 82 00 0C */ beq lbl_80311BB8
/* 80311BB0 0030D810 7F C3 F3 78 */ mr r3, r30
/* 80311BB4 0030D814 48 00 00 8C */ b lbl_80311C40
lbl_80311BB8:
/* 80311BB8 0030D818 2C 1E 00 00 */ cmpwi r30, 0
/* 80311BBC 0030D81C 40 82 FF 84 */ bne lbl_80311B40
/* 80311BC0 0030D820 80 7C 00 00 */ lwz r3, 0(r28)
/* 80311BC4 0030D824 4B FF 8A 2D */ bl VFiPFCACHE_UpdateModifiedSector
/* 80311BC8 0030D828 48 00 00 34 */ b lbl_80311BFC
lbl_80311BCC:
/* 80311BCC 0030D82C 80 64 00 04 */ lwz r3, 4(r4)
/* 80311BD0 0030D830 80 A4 00 08 */ lwz r5, 8(r4)
/* 80311BD4 0030D834 88 19 00 20 */ lbz r0, 0x20(r25)
/* 80311BD8 0030D838 7C 63 28 50 */ subf r3, r3, r5
/* 80311BDC 0030D83C 7C 60 06 30 */ sraw r0, r3, r0
/* 80311BE0 0030D840 7C 07 02 14 */ add r0, r7, r0
/* 80311BE4 0030D844 7C 06 00 40 */ cmplw r6, r0
/* 80311BE8 0030D848 41 82 00 14 */ beq lbl_80311BFC
/* 80311BEC 0030D84C 7C 05 42 14 */ add r0, r5, r8
/* 80311BF0 0030D850 90 04 00 08 */ stw r0, 8(r4)
/* 80311BF4 0030D854 80 7C 00 00 */ lwz r3, 0(r28)
/* 80311BF8 0030D858 4B FF 89 F9 */ bl VFiPFCACHE_UpdateModifiedSector
lbl_80311BFC:
/* 80311BFC 0030D85C 80 7C 00 00 */ lwz r3, 0(r28)
/* 80311C00 0030D860 57 60 C6 3E */ rlwinm r0, r27, 0x18, 0x18, 0x1f
/* 80311C04 0030D864 80 83 00 08 */ lwz r4, 8(r3)
/* 80311C08 0030D868 88 64 00 00 */ lbz r3, 0(r4)
/* 80311C0C 0030D86C 54 63 06 36 */ rlwinm r3, r3, 0, 0x18, 0x1b
/* 80311C10 0030D870 7C 60 03 78 */ or r0, r3, r0
/* 80311C14 0030D874 98 04 00 00 */ stb r0, 0(r4)
/* 80311C18 0030D878 48 00 00 24 */ b lbl_80311C3C
lbl_80311C1C:
/* 80311C1C 0030D87C 80 9C 00 00 */ lwz r4, 0(r28)
/* 80311C20 0030D880 57 63 C6 3E */ rlwinm r3, r27, 0x18, 0x18, 0x1f
/* 80311C24 0030D884 80 04 00 08 */ lwz r0, 8(r4)
/* 80311C28 0030D888 7C 85 02 14 */ add r4, r5, r0
/* 80311C2C 0030D88C 88 04 00 01 */ lbz r0, 1(r4)
/* 80311C30 0030D890 54 00 06 36 */ rlwinm r0, r0, 0, 0x18, 0x1b
/* 80311C34 0030D894 7C 60 03 78 */ or r0, r3, r0
/* 80311C38 0030D898 98 04 00 01 */ stb r0, 1(r4)
lbl_80311C3C:
/* 80311C3C 0030D89C 7F C3 F3 78 */ mr r3, r30
lbl_80311C40:
/* 80311C40 0030D8A0 39 61 00 30 */ addi r11, r1, 0x30
/* 80311C44 0030D8A4 4B EB 55 25 */ bl _restgpr_24
/* 80311C48 0030D8A8 80 01 00 34 */ lwz r0, 0x34(r1)
/* 80311C4C 0030D8AC 7C 08 03 A6 */ mtlr r0
/* 80311C50 0030D8B0 38 21 00 30 */ addi r1, r1, 0x30
/* 80311C54 0030D8B4 4E 80 00 20 */ blr
|