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
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global VFiPFFAT32_ReadFATEntry
VFiPFFAT32_ReadFATEntry:
/* 803121D0 0030DE30 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 803121D4 0030DE34 7C 08 02 A6 */ mflr r0
/* 803121D8 0030DE38 90 01 00 34 */ stw r0, 0x34(r1)
/* 803121DC 0030DE3C 39 61 00 30 */ addi r11, r1, 0x30
/* 803121E0 0030DE40 4B EB 4F 45 */ bl _savegpr_26
/* 803121E4 0030DE44 2C 03 00 00 */ cmpwi r3, 0
/* 803121E8 0030DE48 7C 7D 1B 78 */ mr r29, r3
/* 803121EC 0030DE4C 7C BE 2B 78 */ mr r30, r5
/* 803121F0 0030DE50 40 82 00 14 */ bne lbl_80312204
/* 803121F4 0030DE54 38 00 FF FF */ li r0, -1
/* 803121F8 0030DE58 38 60 00 0A */ li r3, 0xa
/* 803121FC 0030DE5C 90 05 00 00 */ stw r0, 0(r5)
/* 80312200 0030DE60 48 00 01 2C */ b lbl_8031232C
lbl_80312204:
/* 80312204 0030DE64 28 04 00 02 */ cmplwi r4, 2
/* 80312208 0030DE68 41 80 00 14 */ blt lbl_8031221C
/* 8031220C 0030DE6C 80 C3 00 34 */ lwz r6, 0x34(r3)
/* 80312210 0030DE70 38 06 00 02 */ addi r0, r6, 2
/* 80312214 0030DE74 7C 04 00 40 */ cmplw r4, r0
/* 80312218 0030DE78 41 80 00 24 */ blt lbl_8031223C
lbl_8031221C:
/* 8031221C 0030DE7C 2C 04 00 00 */ cmpwi r4, 0
/* 80312220 0030DE80 41 82 00 1C */ beq lbl_8031223C
/* 80312224 0030DE84 28 04 00 01 */ cmplwi r4, 1
/* 80312228 0030DE88 41 82 00 14 */ beq lbl_8031223C
/* 8031222C 0030DE8C 38 00 FF FF */ li r0, -1
/* 80312230 0030DE90 38 60 00 0E */ li r3, 0xe
/* 80312234 0030DE94 90 05 00 00 */ stw r0, 0(r5)
/* 80312238 0030DE98 48 00 00 F4 */ b lbl_8031232C
lbl_8031223C:
/* 8031223C 0030DE9C A0 E3 00 18 */ lhz r7, 0x18(r3)
/* 80312240 0030DEA0 54 88 10 3A */ slwi r8, r4, 2
/* 80312244 0030DEA4 88 A3 00 20 */ lbz r5, 0x20(r3)
/* 80312248 0030DEA8 3B E0 00 01 */ li r31, 1
/* 8031224C 0030DEAC A0 83 00 00 */ lhz r4, 0(r3)
/* 80312250 0030DEB0 54 E0 06 31 */ rlwinm. r0, r7, 0, 0x18, 0x18
/* 80312254 0030DEB4 80 C3 00 28 */ lwz r6, 0x28(r3)
/* 80312258 0030DEB8 7D 03 2C 30 */ srw r3, r8, r5
/* 8031225C 0030DEBC 38 04 FF FF */ addi r0, r4, -1
/* 80312260 0030DEC0 7C 66 1A 14 */ add r3, r6, r3
/* 80312264 0030DEC4 7D 00 00 38 */ and r0, r8, r0
/* 80312268 0030DEC8 54 7C 04 3E */ clrlwi r28, r3, 0x10
/* 8031226C 0030DECC 54 1B 04 3E */ clrlwi r27, r0, 0x10
/* 80312270 0030DED0 41 82 00 08 */ beq lbl_80312278
/* 80312274 0030DED4 54 FF 07 7E */ clrlwi r31, r7, 0x1d
lbl_80312278:
/* 80312278 0030DED8 7F A3 EB 78 */ mr r3, r29
/* 8031227C 0030DEDC 7F 85 E3 78 */ mr r5, r28
/* 80312280 0030DEE0 7F 66 DB 78 */ mr r6, r27
/* 80312284 0030DEE4 38 81 00 08 */ addi r4, r1, 8
/* 80312288 0030DEE8 38 E0 00 04 */ li r7, 4
/* 8031228C 0030DEEC 48 00 66 E5 */ bl VFiPFSEC_ReadFAT
/* 80312290 0030DEF0 2C 03 10 00 */ cmpwi r3, 0x1000
/* 80312294 0030DEF4 7C 7A 1B 78 */ mr r26, r3
/* 80312298 0030DEF8 40 82 00 50 */ bne lbl_803122E8
/* 8031229C 0030DEFC 81 9D 18 90 */ lwz r12, 0x1890(r29)
/* 803122A0 0030DF00 2C 0C 00 00 */ cmpwi r12, 0
/* 803122A4 0030DF04 41 82 00 44 */ beq lbl_803122E8
/* 803122A8 0030DF08 80 7D 18 70 */ lwz r3, 0x1870(r29)
/* 803122AC 0030DF0C 7D 89 03 A6 */ mtctr r12
/* 803122B0 0030DF10 4E 80 04 21 */ bctrl
/* 803122B4 0030DF14 2C 03 00 00 */ cmpwi r3, 0
/* 803122B8 0030DF18 41 82 00 48 */ beq lbl_80312300
/* 803122BC 0030DF1C 2C 03 00 01 */ cmpwi r3, 1
/* 803122C0 0030DF20 40 82 00 28 */ bne lbl_803122E8
/* 803122C4 0030DF24 88 1D 00 22 */ lbz r0, 0x22(r29)
/* 803122C8 0030DF28 28 00 00 02 */ cmplwi r0, 2
/* 803122CC 0030DF2C 41 80 00 1C */ blt lbl_803122E8
/* 803122D0 0030DF30 7C 1F 00 40 */ cmplw r31, r0
/* 803122D4 0030DF34 40 80 00 14 */ bge lbl_803122E8
/* 803122D8 0030DF38 80 1D 00 0C */ lwz r0, 0xc(r29)
/* 803122DC 0030DF3C 3B FF 00 01 */ addi r31, r31, 1
/* 803122E0 0030DF40 7F 9C 02 14 */ add r28, r28, r0
/* 803122E4 0030DF44 48 00 00 1C */ b lbl_80312300
lbl_803122E8:
/* 803122E8 0030DF48 2C 1A 00 00 */ cmpwi r26, 0
/* 803122EC 0030DF4C 41 82 00 14 */ beq lbl_80312300
/* 803122F0 0030DF50 38 00 FF FF */ li r0, -1
/* 803122F4 0030DF54 7F 43 D3 78 */ mr r3, r26
/* 803122F8 0030DF58 90 1E 00 00 */ stw r0, 0(r30)
/* 803122FC 0030DF5C 48 00 00 30 */ b lbl_8031232C
lbl_80312300:
/* 80312300 0030DF60 2C 1A 00 00 */ cmpwi r26, 0
/* 80312304 0030DF64 40 82 FF 74 */ bne lbl_80312278
/* 80312308 0030DF68 80 A1 00 08 */ lwz r5, 8(r1)
/* 8031230C 0030DF6C 38 60 00 00 */ li r3, 0
/* 80312310 0030DF70 54 A4 42 1E */ rlwinm r4, r5, 8, 8, 0xf
/* 80312314 0030DF74 54 A0 C4 2E */ rlwinm r0, r5, 0x18, 0x10, 0x17
/* 80312318 0030DF78 50 A4 C0 0E */ rlwimi r4, r5, 0x18, 0, 7
/* 8031231C 0030DF7C 50 A0 46 3E */ rlwimi r0, r5, 8, 0x18, 0x1f
/* 80312320 0030DF80 7C 80 03 78 */ or r0, r4, r0
/* 80312324 0030DF84 54 00 01 3E */ clrlwi r0, r0, 4
/* 80312328 0030DF88 90 1E 00 00 */ stw r0, 0(r30)
lbl_8031232C:
/* 8031232C 0030DF8C 39 61 00 30 */ addi r11, r1, 0x30
/* 80312330 0030DF90 4B EB 4E 41 */ bl _restgpr_26
/* 80312334 0030DF94 80 01 00 34 */ lwz r0, 0x34(r1)
/* 80312338 0030DF98 7C 08 03 A6 */ mtlr r0
/* 8031233C 0030DF9C 38 21 00 30 */ addi r1, r1, 0x30
/* 80312340 0030DFA0 4E 80 00 20 */ blr
.global VFiPFFAT32_ReadFATEntryPage
VFiPFFAT32_ReadFATEntryPage:
/* 80312344 0030DFA4 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 80312348 0030DFA8 7C 08 02 A6 */ mflr r0
/* 8031234C 0030DFAC 90 01 00 34 */ stw r0, 0x34(r1)
/* 80312350 0030DFB0 39 61 00 30 */ addi r11, r1, 0x30
/* 80312354 0030DFB4 4B EB 4D CD */ bl _savegpr_25
/* 80312358 0030DFB8 2C 03 00 00 */ cmpwi r3, 0
/* 8031235C 0030DFBC 7C 79 1B 78 */ mr r25, r3
/* 80312360 0030DFC0 7C BA 2B 78 */ mr r26, r5
/* 80312364 0030DFC4 7C DB 33 78 */ mr r27, r6
/* 80312368 0030DFC8 3B C0 00 00 */ li r30, 0
/* 8031236C 0030DFCC 40 82 00 0C */ bne lbl_80312378
/* 80312370 0030DFD0 38 60 00 0A */ li r3, 0xa
/* 80312374 0030DFD4 48 00 01 84 */ b lbl_803124F8
lbl_80312378:
/* 80312378 0030DFD8 28 04 00 02 */ cmplwi r4, 2
/* 8031237C 0030DFDC 41 80 00 14 */ blt lbl_80312390
/* 80312380 0030DFE0 80 A3 00 34 */ lwz r5, 0x34(r3)
/* 80312384 0030DFE4 38 05 00 02 */ addi r0, r5, 2
/* 80312388 0030DFE8 7C 04 00 40 */ cmplw r4, r0
/* 8031238C 0030DFEC 41 80 00 1C */ blt lbl_803123A8
lbl_80312390:
/* 80312390 0030DFF0 2C 04 00 00 */ cmpwi r4, 0
/* 80312394 0030DFF4 41 82 00 14 */ beq lbl_803123A8
/* 80312398 0030DFF8 28 04 00 01 */ cmplwi r4, 1
/* 8031239C 0030DFFC 41 82 00 0C */ beq lbl_803123A8
/* 803123A0 0030E000 38 60 00 0E */ li r3, 0xe
/* 803123A4 0030E004 48 00 01 54 */ b lbl_803124F8
lbl_803123A8:
/* 803123A8 0030E008 A0 A3 00 18 */ lhz r5, 0x18(r3)
/* 803123AC 0030E00C 54 9F 10 3A */ slwi r31, r4, 2
/* 803123B0 0030E010 88 E3 00 20 */ lbz r7, 0x20(r3)
/* 803123B4 0030E014 3B 80 00 01 */ li r28, 1
/* 803123B8 0030E018 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
/* 803123BC 0030E01C 80 83 00 28 */ lwz r4, 0x28(r3)
/* 803123C0 0030E020 7F E0 3C 30 */ srw r0, r31, r7
/* 803123C4 0030E024 7C 04 02 14 */ add r0, r4, r0
/* 803123C8 0030E028 54 1D 04 3E */ clrlwi r29, r0, 0x10
/* 803123CC 0030E02C 41 82 00 08 */ beq lbl_803123D4
/* 803123D0 0030E030 54 BC 07 7E */ clrlwi r28, r5, 0x1d
lbl_803123D4:
/* 803123D4 0030E034 80 86 00 00 */ lwz r4, 0(r6)
/* 803123D8 0030E038 80 C4 00 18 */ lwz r6, 0x18(r4)
/* 803123DC 0030E03C 7C 06 E8 40 */ cmplw r6, r29
/* 803123E0 0030E040 41 81 00 14 */ bgt lbl_803123F4
/* 803123E4 0030E044 80 03 16 00 */ lwz r0, 0x1600(r3)
/* 803123E8 0030E048 7C 06 02 14 */ add r0, r6, r0
/* 803123EC 0030E04C 7C 00 E8 40 */ cmplw r0, r29
/* 803123F0 0030E050 41 81 00 A8 */ bgt lbl_80312498
lbl_803123F4:
/* 803123F4 0030E054 A0 04 00 02 */ lhz r0, 2(r4)
/* 803123F8 0030E058 28 00 00 01 */ cmplwi r0, 1
/* 803123FC 0030E05C 40 82 00 18 */ bne lbl_80312414
/* 80312400 0030E060 7F 23 CB 78 */ mr r3, r25
/* 80312404 0030E064 4B FF DA 65 */ bl VFiPFFAT_UpdateFATEntry
/* 80312408 0030E068 2C 03 00 00 */ cmpwi r3, 0
/* 8031240C 0030E06C 41 82 00 08 */ beq lbl_80312414
/* 80312410 0030E070 48 00 00 E8 */ b lbl_803124F8
lbl_80312414:
/* 80312414 0030E074 7F 23 CB 78 */ mr r3, r25
/* 80312418 0030E078 7F A4 EB 78 */ mr r4, r29
/* 8031241C 0030E07C 7F 65 DB 78 */ mr r5, r27
/* 80312420 0030E080 4B FF 84 2D */ bl VFiPFCACHE_ReadFATPage
/* 80312424 0030E084 2C 03 10 00 */ cmpwi r3, 0x1000
/* 80312428 0030E088 7C 7E 1B 78 */ mr r30, r3
/* 8031242C 0030E08C 40 82 00 50 */ bne lbl_8031247C
/* 80312430 0030E090 81 99 18 90 */ lwz r12, 0x1890(r25)
/* 80312434 0030E094 2C 0C 00 00 */ cmpwi r12, 0
/* 80312438 0030E098 41 82 00 44 */ beq lbl_8031247C
/* 8031243C 0030E09C 80 79 18 70 */ lwz r3, 0x1870(r25)
/* 80312440 0030E0A0 7D 89 03 A6 */ mtctr r12
/* 80312444 0030E0A4 4E 80 04 21 */ bctrl
/* 80312448 0030E0A8 2C 03 00 00 */ cmpwi r3, 0
/* 8031244C 0030E0AC 41 82 00 40 */ beq lbl_8031248C
/* 80312450 0030E0B0 2C 03 00 01 */ cmpwi r3, 1
/* 80312454 0030E0B4 40 82 00 28 */ bne lbl_8031247C
/* 80312458 0030E0B8 88 19 00 22 */ lbz r0, 0x22(r25)
/* 8031245C 0030E0BC 28 00 00 02 */ cmplwi r0, 2
/* 80312460 0030E0C0 41 80 00 1C */ blt lbl_8031247C
/* 80312464 0030E0C4 7C 1C 00 40 */ cmplw r28, r0
/* 80312468 0030E0C8 40 80 00 14 */ bge lbl_8031247C
/* 8031246C 0030E0CC 80 19 00 0C */ lwz r0, 0xc(r25)
/* 80312470 0030E0D0 3B 9C 00 01 */ addi r28, r28, 1
/* 80312474 0030E0D4 7F BD 02 14 */ add r29, r29, r0
/* 80312478 0030E0D8 48 00 00 14 */ b lbl_8031248C
lbl_8031247C:
/* 8031247C 0030E0DC 2C 1E 00 00 */ cmpwi r30, 0
/* 80312480 0030E0E0 41 82 00 0C */ beq lbl_8031248C
/* 80312484 0030E0E4 7F C3 F3 78 */ mr r3, r30
/* 80312488 0030E0E8 48 00 00 70 */ b lbl_803124F8
lbl_8031248C:
/* 8031248C 0030E0EC 2C 1E 00 00 */ cmpwi r30, 0
/* 80312490 0030E0F0 40 82 FF 84 */ bne lbl_80312414
/* 80312494 0030E0F4 48 00 00 2C */ b lbl_803124C0
lbl_80312498:
/* 80312498 0030E0F8 80 04 00 04 */ lwz r0, 4(r4)
/* 8031249C 0030E0FC 80 A4 00 08 */ lwz r5, 8(r4)
/* 803124A0 0030E100 7C 00 28 50 */ subf r0, r0, r5
/* 803124A4 0030E104 7C 00 3E 30 */ sraw r0, r0, r7
/* 803124A8 0030E108 7C 06 02 14 */ add r0, r6, r0
/* 803124AC 0030E10C 7C 1D 00 40 */ cmplw r29, r0
/* 803124B0 0030E110 41 82 00 10 */ beq lbl_803124C0
/* 803124B4 0030E114 A0 03 00 00 */ lhz r0, 0(r3)
/* 803124B8 0030E118 7C 05 02 14 */ add r0, r5, r0
/* 803124BC 0030E11C 90 04 00 08 */ stw r0, 8(r4)
lbl_803124C0:
/* 803124C0 0030E120 A0 B9 00 00 */ lhz r5, 0(r25)
/* 803124C4 0030E124 7F C3 F3 78 */ mr r3, r30
/* 803124C8 0030E128 80 9B 00 00 */ lwz r4, 0(r27)
/* 803124CC 0030E12C 38 05 FF FF */ addi r0, r5, -1
/* 803124D0 0030E130 80 84 00 08 */ lwz r4, 8(r4)
/* 803124D4 0030E134 7F E0 00 38 */ and r0, r31, r0
/* 803124D8 0030E138 7C A4 00 2E */ lwzx r5, r4, r0
/* 803124DC 0030E13C 54 A4 42 1E */ rlwinm r4, r5, 8, 8, 0xf
/* 803124E0 0030E140 54 A0 C4 2E */ rlwinm r0, r5, 0x18, 0x10, 0x17
/* 803124E4 0030E144 50 A4 C0 0E */ rlwimi r4, r5, 0x18, 0, 7
/* 803124E8 0030E148 50 A0 46 3E */ rlwimi r0, r5, 8, 0x18, 0x1f
/* 803124EC 0030E14C 7C 80 03 78 */ or r0, r4, r0
/* 803124F0 0030E150 54 00 01 3E */ clrlwi r0, r0, 4
/* 803124F4 0030E154 90 1A 00 00 */ stw r0, 0(r26)
lbl_803124F8:
/* 803124F8 0030E158 39 61 00 30 */ addi r11, r1, 0x30
/* 803124FC 0030E15C 4B EB 4C 71 */ bl _restgpr_25
/* 80312500 0030E160 80 01 00 34 */ lwz r0, 0x34(r1)
/* 80312504 0030E164 7C 08 03 A6 */ mtlr r0
/* 80312508 0030E168 38 21 00 30 */ addi r1, r1, 0x30
/* 8031250C 0030E16C 4E 80 00 20 */ blr
.global VFiPFFAT32_WriteFATEntry
VFiPFFAT32_WriteFATEntry:
/* 80312510 0030E170 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80312514 0030E174 7C 08 02 A6 */ mflr r0
/* 80312518 0030E178 2C 03 00 00 */ cmpwi r3, 0
/* 8031251C 0030E17C 90 01 00 24 */ stw r0, 0x24(r1)
/* 80312520 0030E180 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 80312524 0030E184 7C BF 2B 78 */ mr r31, r5
/* 80312528 0030E188 93 C1 00 18 */ stw r30, 0x18(r1)
/* 8031252C 0030E18C 93 A1 00 14 */ stw r29, 0x14(r1)
/* 80312530 0030E190 93 81 00 10 */ stw r28, 0x10(r1)
/* 80312534 0030E194 7C 7C 1B 78 */ mr r28, r3
/* 80312538 0030E198 40 82 00 0C */ bne lbl_80312544
/* 8031253C 0030E19C 38 60 00 0A */ li r3, 0xa
/* 80312540 0030E1A0 48 00 00 D0 */ b lbl_80312610
lbl_80312544:
/* 80312544 0030E1A4 28 04 00 02 */ cmplwi r4, 2
/* 80312548 0030E1A8 41 80 00 14 */ blt lbl_8031255C
/* 8031254C 0030E1AC 80 A3 00 34 */ lwz r5, 0x34(r3)
/* 80312550 0030E1B0 38 05 00 02 */ addi r0, r5, 2
/* 80312554 0030E1B4 7C 04 00 40 */ cmplw r4, r0
/* 80312558 0030E1B8 41 80 00 1C */ blt lbl_80312574
lbl_8031255C:
/* 8031255C 0030E1BC 2C 04 00 00 */ cmpwi r4, 0
/* 80312560 0030E1C0 41 82 00 14 */ beq lbl_80312574
/* 80312564 0030E1C4 28 04 00 01 */ cmplwi r4, 1
/* 80312568 0030E1C8 41 82 00 0C */ beq lbl_80312574
/* 8031256C 0030E1CC 38 60 00 0E */ li r3, 0xe
/* 80312570 0030E1D0 48 00 00 A0 */ b lbl_80312610
lbl_80312574:
/* 80312574 0030E1D4 A0 A3 00 00 */ lhz r5, 0(r3)
/* 80312578 0030E1D8 54 88 10 3A */ slwi r8, r4, 2
/* 8031257C 0030E1DC 88 C3 00 20 */ lbz r6, 0x20(r3)
/* 80312580 0030E1E0 38 81 00 08 */ addi r4, r1, 8
/* 80312584 0030E1E4 38 05 FF FF */ addi r0, r5, -1
/* 80312588 0030E1E8 80 E3 00 28 */ lwz r7, 0x28(r3)
/* 8031258C 0030E1EC 7D 05 34 30 */ srw r5, r8, r6
/* 80312590 0030E1F0 7F 83 E3 78 */ mr r3, r28
/* 80312594 0030E1F4 7C A7 2A 14 */ add r5, r7, r5
/* 80312598 0030E1F8 7D 00 00 38 */ and r0, r8, r0
/* 8031259C 0030E1FC 54 BE 04 3E */ clrlwi r30, r5, 0x10
/* 803125A0 0030E200 38 E0 00 04 */ li r7, 4
/* 803125A4 0030E204 54 1D 04 3E */ clrlwi r29, r0, 0x10
/* 803125A8 0030E208 7F C5 F3 78 */ mr r5, r30
/* 803125AC 0030E20C 7F A6 EB 78 */ mr r6, r29
/* 803125B0 0030E210 48 00 63 C1 */ bl VFiPFSEC_ReadFAT
/* 803125B4 0030E214 2C 03 00 00 */ cmpwi r3, 0
/* 803125B8 0030E218 41 82 00 08 */ beq lbl_803125C0
/* 803125BC 0030E21C 48 00 00 54 */ b lbl_80312610
lbl_803125C0:
/* 803125C0 0030E220 80 E1 00 08 */ lwz r7, 8(r1)
/* 803125C4 0030E224 7F 83 E3 78 */ mr r3, r28
/* 803125C8 0030E228 7F C5 F3 78 */ mr r5, r30
/* 803125CC 0030E22C 7F A6 EB 78 */ mr r6, r29
/* 803125D0 0030E230 54 E8 42 1E */ rlwinm r8, r7, 8, 8, 0xf
/* 803125D4 0030E234 54 E0 C4 2E */ rlwinm r0, r7, 0x18, 0x10, 0x17
/* 803125D8 0030E238 50 E8 C0 0E */ rlwimi r8, r7, 0x18, 0, 7
/* 803125DC 0030E23C 38 81 00 08 */ addi r4, r1, 8
/* 803125E0 0030E240 50 E0 46 3E */ rlwimi r0, r7, 8, 0x18, 0x1f
/* 803125E4 0030E244 38 E0 00 04 */ li r7, 4
/* 803125E8 0030E248 7D 00 03 78 */ or r0, r8, r0
/* 803125EC 0030E24C 54 09 00 06 */ rlwinm r9, r0, 0, 0, 3
/* 803125F0 0030E250 53 E9 01 3E */ rlwimi r9, r31, 0, 4, 0x1f
/* 803125F4 0030E254 55 28 42 1E */ rlwinm r8, r9, 8, 8, 0xf
/* 803125F8 0030E258 55 20 C4 2E */ rlwinm r0, r9, 0x18, 0x10, 0x17
/* 803125FC 0030E25C 51 28 C0 0E */ rlwimi r8, r9, 0x18, 0, 7
/* 80312600 0030E260 51 20 46 3E */ rlwimi r0, r9, 8, 0x18, 0x1f
/* 80312604 0030E264 7D 00 03 78 */ or r0, r8, r0
/* 80312608 0030E268 90 01 00 08 */ stw r0, 8(r1)
/* 8031260C 0030E26C 48 00 66 FD */ bl VFiPFSEC_WriteFAT
lbl_80312610:
/* 80312610 0030E270 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80312614 0030E274 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 80312618 0030E278 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 8031261C 0030E27C 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 80312620 0030E280 83 81 00 10 */ lwz r28, 0x10(r1)
/* 80312624 0030E284 7C 08 03 A6 */ mtlr r0
/* 80312628 0030E288 38 21 00 20 */ addi r1, r1, 0x20
/* 8031262C 0030E28C 4E 80 00 20 */ blr
.global VFiPFFAT32_WriteFATEntryPage
VFiPFFAT32_WriteFATEntryPage:
/* 80312630 0030E290 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 80312634 0030E294 7C 08 02 A6 */ mflr r0
/* 80312638 0030E298 90 01 00 34 */ stw r0, 0x34(r1)
/* 8031263C 0030E29C 39 61 00 30 */ addi r11, r1, 0x30
/* 80312640 0030E2A0 4B EB 4A E1 */ bl _savegpr_25
/* 80312644 0030E2A4 2C 03 00 00 */ cmpwi r3, 0
/* 80312648 0030E2A8 7C 7A 1B 78 */ mr r26, r3
/* 8031264C 0030E2AC 7C BB 2B 78 */ mr r27, r5
/* 80312650 0030E2B0 7C DC 33 78 */ mr r28, r6
/* 80312654 0030E2B4 3B C0 00 00 */ li r30, 0
/* 80312658 0030E2B8 40 82 00 0C */ bne lbl_80312664
/* 8031265C 0030E2BC 38 60 00 0A */ li r3, 0xa
/* 80312660 0030E2C0 48 00 01 98 */ b lbl_803127F8
lbl_80312664:
/* 80312664 0030E2C4 28 04 00 02 */ cmplwi r4, 2
/* 80312668 0030E2C8 41 80 00 14 */ blt lbl_8031267C
/* 8031266C 0030E2CC 80 A3 00 34 */ lwz r5, 0x34(r3)
/* 80312670 0030E2D0 38 05 00 02 */ addi r0, r5, 2
/* 80312674 0030E2D4 7C 04 00 40 */ cmplw r4, r0
/* 80312678 0030E2D8 41 80 00 1C */ blt lbl_80312694
lbl_8031267C:
/* 8031267C 0030E2DC 2C 04 00 00 */ cmpwi r4, 0
/* 80312680 0030E2E0 41 82 00 14 */ beq lbl_80312694
/* 80312684 0030E2E4 28 04 00 01 */ cmplwi r4, 1
/* 80312688 0030E2E8 41 82 00 0C */ beq lbl_80312694
/* 8031268C 0030E2EC 38 60 00 0E */ li r3, 0xe
/* 80312690 0030E2F0 48 00 01 68 */ b lbl_803127F8
lbl_80312694:
/* 80312694 0030E2F4 88 E3 00 20 */ lbz r7, 0x20(r3)
/* 80312698 0030E2F8 54 88 10 3A */ slwi r8, r4, 2
/* 8031269C 0030E2FC 80 86 00 00 */ lwz r4, 0(r6)
/* 803126A0 0030E300 80 A3 00 28 */ lwz r5, 0x28(r3)
/* 803126A4 0030E304 7D 00 3C 30 */ srw r0, r8, r7
/* 803126A8 0030E308 A0 C3 00 00 */ lhz r6, 0(r3)
/* 803126AC 0030E30C 7C 05 02 14 */ add r0, r5, r0
/* 803126B0 0030E310 80 A4 00 18 */ lwz r5, 0x18(r4)
/* 803126B4 0030E314 54 1D 04 3E */ clrlwi r29, r0, 0x10
/* 803126B8 0030E318 38 06 FF FF */ addi r0, r6, -1
/* 803126BC 0030E31C 7D 00 00 38 */ and r0, r8, r0
/* 803126C0 0030E320 7C 05 E8 40 */ cmplw r5, r29
/* 803126C4 0030E324 54 1F 04 3E */ clrlwi r31, r0, 0x10
/* 803126C8 0030E328 41 81 00 14 */ bgt lbl_803126DC
/* 803126CC 0030E32C 80 03 16 00 */ lwz r0, 0x1600(r3)
/* 803126D0 0030E330 7C 05 02 14 */ add r0, r5, r0
/* 803126D4 0030E334 7C 00 E8 40 */ cmplw r0, r29
/* 803126D8 0030E338 41 81 00 B0 */ bgt lbl_80312788
lbl_803126DC:
/* 803126DC 0030E33C 7F 43 D3 78 */ mr r3, r26
/* 803126E0 0030E340 4B FF D7 89 */ bl VFiPFFAT_UpdateFATEntry
/* 803126E4 0030E344 2C 03 00 00 */ cmpwi r3, 0
/* 803126E8 0030E348 41 82 00 08 */ beq lbl_803126F0
/* 803126EC 0030E34C 48 00 01 0C */ b lbl_803127F8
lbl_803126F0:
/* 803126F0 0030E350 A0 7A 00 18 */ lhz r3, 0x18(r26)
/* 803126F4 0030E354 3B 20 00 01 */ li r25, 1
/* 803126F8 0030E358 54 60 06 31 */ rlwinm. r0, r3, 0, 0x18, 0x18
/* 803126FC 0030E35C 41 82 00 08 */ beq lbl_80312704
/* 80312700 0030E360 54 79 07 7E */ clrlwi r25, r3, 0x1d
lbl_80312704:
/* 80312704 0030E364 7F 43 D3 78 */ mr r3, r26
/* 80312708 0030E368 7F A4 EB 78 */ mr r4, r29
/* 8031270C 0030E36C 7F 85 E3 78 */ mr r5, r28
/* 80312710 0030E370 4B FF 81 3D */ bl VFiPFCACHE_ReadFATPage
/* 80312714 0030E374 2C 03 10 00 */ cmpwi r3, 0x1000
/* 80312718 0030E378 7C 7E 1B 78 */ mr r30, r3
/* 8031271C 0030E37C 40 82 00 50 */ bne lbl_8031276C
/* 80312720 0030E380 81 9A 18 90 */ lwz r12, 0x1890(r26)
/* 80312724 0030E384 2C 0C 00 00 */ cmpwi r12, 0
/* 80312728 0030E388 41 82 00 44 */ beq lbl_8031276C
/* 8031272C 0030E38C 80 7A 18 70 */ lwz r3, 0x1870(r26)
/* 80312730 0030E390 7D 89 03 A6 */ mtctr r12
/* 80312734 0030E394 4E 80 04 21 */ bctrl
/* 80312738 0030E398 2C 03 00 00 */ cmpwi r3, 0
/* 8031273C 0030E39C 41 82 00 40 */ beq lbl_8031277C
/* 80312740 0030E3A0 2C 03 00 01 */ cmpwi r3, 1
/* 80312744 0030E3A4 40 82 00 28 */ bne lbl_8031276C
/* 80312748 0030E3A8 88 1A 00 22 */ lbz r0, 0x22(r26)
/* 8031274C 0030E3AC 28 00 00 02 */ cmplwi r0, 2
/* 80312750 0030E3B0 41 80 00 1C */ blt lbl_8031276C
/* 80312754 0030E3B4 7C 19 00 40 */ cmplw r25, r0
/* 80312758 0030E3B8 40 80 00 14 */ bge lbl_8031276C
/* 8031275C 0030E3BC 80 1A 00 0C */ lwz r0, 0xc(r26)
/* 80312760 0030E3C0 3B 39 00 01 */ addi r25, r25, 1
/* 80312764 0030E3C4 7F BD 02 14 */ add r29, r29, r0
/* 80312768 0030E3C8 48 00 00 14 */ b lbl_8031277C
lbl_8031276C:
/* 8031276C 0030E3CC 2C 1E 00 00 */ cmpwi r30, 0
/* 80312770 0030E3D0 41 82 00 0C */ beq lbl_8031277C
/* 80312774 0030E3D4 7F C3 F3 78 */ mr r3, r30
/* 80312778 0030E3D8 48 00 00 80 */ b lbl_803127F8
lbl_8031277C:
/* 8031277C 0030E3DC 2C 1E 00 00 */ cmpwi r30, 0
/* 80312780 0030E3E0 40 82 FF 84 */ bne lbl_80312704
/* 80312784 0030E3E4 48 00 00 28 */ b lbl_803127AC
lbl_80312788:
/* 80312788 0030E3E8 80 04 00 04 */ lwz r0, 4(r4)
/* 8031278C 0030E3EC 80 64 00 08 */ lwz r3, 8(r4)
/* 80312790 0030E3F0 7C 00 18 50 */ subf r0, r0, r3
/* 80312794 0030E3F4 7C 00 3E 30 */ sraw r0, r0, r7
/* 80312798 0030E3F8 7C 05 02 14 */ add r0, r5, r0
/* 8031279C 0030E3FC 7C 1D 00 40 */ cmplw r29, r0
/* 803127A0 0030E400 41 82 00 0C */ beq lbl_803127AC
/* 803127A4 0030E404 7C 03 32 14 */ add r0, r3, r6
/* 803127A8 0030E408 90 04 00 08 */ stw r0, 8(r4)
lbl_803127AC:
/* 803127AC 0030E40C 80 7C 00 00 */ lwz r3, 0(r28)
/* 803127B0 0030E410 80 83 00 08 */ lwz r4, 8(r3)
/* 803127B4 0030E414 7C A4 F8 2E */ lwzx r5, r4, r31
/* 803127B8 0030E418 54 A3 42 1E */ rlwinm r3, r5, 8, 8, 0xf
/* 803127BC 0030E41C 54 A0 C4 2E */ rlwinm r0, r5, 0x18, 0x10, 0x17
/* 803127C0 0030E420 50 A3 C0 0E */ rlwimi r3, r5, 0x18, 0, 7
/* 803127C4 0030E424 50 A0 46 3E */ rlwimi r0, r5, 8, 0x18, 0x1f
/* 803127C8 0030E428 7C 60 03 78 */ or r0, r3, r0
/* 803127CC 0030E42C 54 05 00 06 */ rlwinm r5, r0, 0, 0, 3
/* 803127D0 0030E430 53 65 01 3E */ rlwimi r5, r27, 0, 4, 0x1f
/* 803127D4 0030E434 54 A3 42 1E */ rlwinm r3, r5, 8, 8, 0xf
/* 803127D8 0030E438 54 A0 C4 2E */ rlwinm r0, r5, 0x18, 0x10, 0x17
/* 803127DC 0030E43C 50 A3 C0 0E */ rlwimi r3, r5, 0x18, 0, 7
/* 803127E0 0030E440 50 A0 46 3E */ rlwimi r0, r5, 8, 0x18, 0x1f
/* 803127E4 0030E444 7C 60 03 78 */ or r0, r3, r0
/* 803127E8 0030E448 7C 04 F9 2E */ stwx r0, r4, r31
/* 803127EC 0030E44C 80 7C 00 00 */ lwz r3, 0(r28)
/* 803127F0 0030E450 4B FF 7E 01 */ bl VFiPFCACHE_UpdateModifiedSector
/* 803127F4 0030E454 7F C3 F3 78 */ mr r3, r30
lbl_803127F8:
/* 803127F8 0030E458 39 61 00 30 */ addi r11, r1, 0x30
/* 803127FC 0030E45C 4B EB 49 71 */ bl _restgpr_25
/* 80312800 0030E460 80 01 00 34 */ lwz r0, 0x34(r1)
/* 80312804 0030E464 7C 08 03 A6 */ mtlr r0
/* 80312808 0030E468 38 21 00 30 */ addi r1, r1, 0x30
/* 8031280C 0030E46C 4E 80 00 20 */ blr
|