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
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global VFiPFFAT16_ReadFATEntry
VFiPFFAT16_ReadFATEntry:
/* 80311C58 0030D8B8 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 80311C5C 0030D8BC 7C 08 02 A6 */ mflr r0
/* 80311C60 0030D8C0 90 01 00 34 */ stw r0, 0x34(r1)
/* 80311C64 0030D8C4 39 61 00 30 */ addi r11, r1, 0x30
/* 80311C68 0030D8C8 4B EB 54 BD */ bl _savegpr_26
/* 80311C6C 0030D8CC 2C 03 00 00 */ cmpwi r3, 0
/* 80311C70 0030D8D0 7C 7D 1B 78 */ mr r29, r3
/* 80311C74 0030D8D4 7C BE 2B 78 */ mr r30, r5
/* 80311C78 0030D8D8 40 82 00 14 */ bne lbl_80311C8C
/* 80311C7C 0030D8DC 38 00 FF FF */ li r0, -1
/* 80311C80 0030D8E0 38 60 00 0A */ li r3, 0xa
/* 80311C84 0030D8E4 90 05 00 00 */ stw r0, 0(r5)
/* 80311C88 0030D8E8 48 00 01 1C */ b lbl_80311DA4
lbl_80311C8C:
/* 80311C8C 0030D8EC 28 04 00 02 */ cmplwi r4, 2
/* 80311C90 0030D8F0 41 80 00 14 */ blt lbl_80311CA4
/* 80311C94 0030D8F4 80 C3 00 34 */ lwz r6, 0x34(r3)
/* 80311C98 0030D8F8 38 06 00 02 */ addi r0, r6, 2
/* 80311C9C 0030D8FC 7C 04 00 40 */ cmplw r4, r0
/* 80311CA0 0030D900 41 80 00 24 */ blt lbl_80311CC4
lbl_80311CA4:
/* 80311CA4 0030D904 2C 04 00 00 */ cmpwi r4, 0
/* 80311CA8 0030D908 41 82 00 1C */ beq lbl_80311CC4
/* 80311CAC 0030D90C 28 04 00 01 */ cmplwi r4, 1
/* 80311CB0 0030D910 41 82 00 14 */ beq lbl_80311CC4
/* 80311CB4 0030D914 38 00 FF FF */ li r0, -1
/* 80311CB8 0030D918 38 60 00 0E */ li r3, 0xe
/* 80311CBC 0030D91C 90 05 00 00 */ stw r0, 0(r5)
/* 80311CC0 0030D920 48 00 00 E4 */ b lbl_80311DA4
lbl_80311CC4:
/* 80311CC4 0030D924 A1 03 00 18 */ lhz r8, 0x18(r3)
/* 80311CC8 0030D928 54 87 08 3C */ slwi r7, r4, 1
/* 80311CCC 0030D92C 88 A3 00 20 */ lbz r5, 0x20(r3)
/* 80311CD0 0030D930 3B E0 00 01 */ li r31, 1
/* 80311CD4 0030D934 A0 83 00 00 */ lhz r4, 0(r3)
/* 80311CD8 0030D938 55 00 06 31 */ rlwinm. r0, r8, 0, 0x18, 0x18
/* 80311CDC 0030D93C 80 C3 00 28 */ lwz r6, 0x28(r3)
/* 80311CE0 0030D940 7C E3 2C 30 */ srw r3, r7, r5
/* 80311CE4 0030D944 38 04 FF FF */ addi r0, r4, -1
/* 80311CE8 0030D948 7C 66 1A 14 */ add r3, r6, r3
/* 80311CEC 0030D94C 7C E0 00 38 */ and r0, r7, r0
/* 80311CF0 0030D950 54 7C 04 3E */ clrlwi r28, r3, 0x10
/* 80311CF4 0030D954 54 1B 04 3E */ clrlwi r27, r0, 0x10
/* 80311CF8 0030D958 41 82 00 08 */ beq lbl_80311D00
/* 80311CFC 0030D95C 55 1F 07 7E */ clrlwi r31, r8, 0x1d
lbl_80311D00:
/* 80311D00 0030D960 7F A3 EB 78 */ mr r3, r29
/* 80311D04 0030D964 7F 85 E3 78 */ mr r5, r28
/* 80311D08 0030D968 7F 66 DB 78 */ mr r6, r27
/* 80311D0C 0030D96C 38 81 00 08 */ addi r4, r1, 8
/* 80311D10 0030D970 38 E0 00 02 */ li r7, 2
/* 80311D14 0030D974 48 00 6C 5D */ bl VFiPFSEC_ReadFAT
/* 80311D18 0030D978 2C 03 10 00 */ cmpwi r3, 0x1000
/* 80311D1C 0030D97C 7C 7A 1B 78 */ mr r26, r3
/* 80311D20 0030D980 40 82 00 50 */ bne lbl_80311D70
/* 80311D24 0030D984 81 9D 18 90 */ lwz r12, 0x1890(r29)
/* 80311D28 0030D988 2C 0C 00 00 */ cmpwi r12, 0
/* 80311D2C 0030D98C 41 82 00 44 */ beq lbl_80311D70
/* 80311D30 0030D990 80 7D 18 70 */ lwz r3, 0x1870(r29)
/* 80311D34 0030D994 7D 89 03 A6 */ mtctr r12
/* 80311D38 0030D998 4E 80 04 21 */ bctrl
/* 80311D3C 0030D99C 2C 03 00 00 */ cmpwi r3, 0
/* 80311D40 0030D9A0 41 82 00 48 */ beq lbl_80311D88
/* 80311D44 0030D9A4 2C 03 00 01 */ cmpwi r3, 1
/* 80311D48 0030D9A8 40 82 00 28 */ bne lbl_80311D70
/* 80311D4C 0030D9AC 88 1D 00 22 */ lbz r0, 0x22(r29)
/* 80311D50 0030D9B0 28 00 00 02 */ cmplwi r0, 2
/* 80311D54 0030D9B4 41 80 00 1C */ blt lbl_80311D70
/* 80311D58 0030D9B8 7C 1F 00 40 */ cmplw r31, r0
/* 80311D5C 0030D9BC 40 80 00 14 */ bge lbl_80311D70
/* 80311D60 0030D9C0 80 1D 00 0C */ lwz r0, 0xc(r29)
/* 80311D64 0030D9C4 3B FF 00 01 */ addi r31, r31, 1
/* 80311D68 0030D9C8 7F 9C 02 14 */ add r28, r28, r0
/* 80311D6C 0030D9CC 48 00 00 1C */ b lbl_80311D88
lbl_80311D70:
/* 80311D70 0030D9D0 2C 1A 00 00 */ cmpwi r26, 0
/* 80311D74 0030D9D4 41 82 00 14 */ beq lbl_80311D88
/* 80311D78 0030D9D8 38 00 FF FF */ li r0, -1
/* 80311D7C 0030D9DC 7F 43 D3 78 */ mr r3, r26
/* 80311D80 0030D9E0 90 1E 00 00 */ stw r0, 0(r30)
/* 80311D84 0030D9E4 48 00 00 20 */ b lbl_80311DA4
lbl_80311D88:
/* 80311D88 0030D9E8 2C 1A 00 00 */ cmpwi r26, 0
/* 80311D8C 0030D9EC 40 82 FF 74 */ bne lbl_80311D00
/* 80311D90 0030D9F0 A0 81 00 08 */ lhz r4, 8(r1)
/* 80311D94 0030D9F4 38 60 00 00 */ li r3, 0
/* 80311D98 0030D9F8 54 80 44 2E */ rlwinm r0, r4, 8, 0x10, 0x17
/* 80311D9C 0030D9FC 50 80 C6 3E */ rlwimi r0, r4, 0x18, 0x18, 0x1f
/* 80311DA0 0030DA00 90 1E 00 00 */ stw r0, 0(r30)
lbl_80311DA4:
/* 80311DA4 0030DA04 39 61 00 30 */ addi r11, r1, 0x30
/* 80311DA8 0030DA08 4B EB 53 C9 */ bl _restgpr_26
/* 80311DAC 0030DA0C 80 01 00 34 */ lwz r0, 0x34(r1)
/* 80311DB0 0030DA10 7C 08 03 A6 */ mtlr r0
/* 80311DB4 0030DA14 38 21 00 30 */ addi r1, r1, 0x30
/* 80311DB8 0030DA18 4E 80 00 20 */ blr
.global VFiPFFAT16_ReadFATEntryPage
VFiPFFAT16_ReadFATEntryPage:
/* 80311DBC 0030DA1C 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 80311DC0 0030DA20 7C 08 02 A6 */ mflr r0
/* 80311DC4 0030DA24 90 01 00 34 */ stw r0, 0x34(r1)
/* 80311DC8 0030DA28 39 61 00 30 */ addi r11, r1, 0x30
/* 80311DCC 0030DA2C 4B EB 53 55 */ bl _savegpr_25
/* 80311DD0 0030DA30 2C 03 00 00 */ cmpwi r3, 0
/* 80311DD4 0030DA34 7C 79 1B 78 */ mr r25, r3
/* 80311DD8 0030DA38 7C BA 2B 78 */ mr r26, r5
/* 80311DDC 0030DA3C 7C DB 33 78 */ mr r27, r6
/* 80311DE0 0030DA40 3B C0 00 00 */ li r30, 0
/* 80311DE4 0030DA44 40 82 00 0C */ bne lbl_80311DF0
/* 80311DE8 0030DA48 38 60 00 0A */ li r3, 0xa
/* 80311DEC 0030DA4C 48 00 01 74 */ b lbl_80311F60
lbl_80311DF0:
/* 80311DF0 0030DA50 28 04 00 02 */ cmplwi r4, 2
/* 80311DF4 0030DA54 41 80 00 14 */ blt lbl_80311E08
/* 80311DF8 0030DA58 80 A3 00 34 */ lwz r5, 0x34(r3)
/* 80311DFC 0030DA5C 38 05 00 02 */ addi r0, r5, 2
/* 80311E00 0030DA60 7C 04 00 40 */ cmplw r4, r0
/* 80311E04 0030DA64 41 80 00 1C */ blt lbl_80311E20
lbl_80311E08:
/* 80311E08 0030DA68 2C 04 00 00 */ cmpwi r4, 0
/* 80311E0C 0030DA6C 41 82 00 14 */ beq lbl_80311E20
/* 80311E10 0030DA70 28 04 00 01 */ cmplwi r4, 1
/* 80311E14 0030DA74 41 82 00 0C */ beq lbl_80311E20
/* 80311E18 0030DA78 38 60 00 0E */ li r3, 0xe
/* 80311E1C 0030DA7C 48 00 01 44 */ b lbl_80311F60
lbl_80311E20:
/* 80311E20 0030DA80 A0 A3 00 18 */ lhz r5, 0x18(r3)
/* 80311E24 0030DA84 54 9F 08 3C */ slwi r31, r4, 1
/* 80311E28 0030DA88 88 E3 00 20 */ lbz r7, 0x20(r3)
/* 80311E2C 0030DA8C 3B 80 00 01 */ li r28, 1
/* 80311E30 0030DA90 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
/* 80311E34 0030DA94 80 83 00 28 */ lwz r4, 0x28(r3)
/* 80311E38 0030DA98 7F E0 3C 30 */ srw r0, r31, r7
/* 80311E3C 0030DA9C 7C 04 02 14 */ add r0, r4, r0
/* 80311E40 0030DAA0 54 1D 04 3E */ clrlwi r29, r0, 0x10
/* 80311E44 0030DAA4 41 82 00 08 */ beq lbl_80311E4C
/* 80311E48 0030DAA8 54 BC 07 7E */ clrlwi r28, r5, 0x1d
lbl_80311E4C:
/* 80311E4C 0030DAAC 80 86 00 00 */ lwz r4, 0(r6)
/* 80311E50 0030DAB0 80 C4 00 18 */ lwz r6, 0x18(r4)
/* 80311E54 0030DAB4 7C 06 E8 40 */ cmplw r6, r29
/* 80311E58 0030DAB8 41 81 00 14 */ bgt lbl_80311E6C
/* 80311E5C 0030DABC 80 03 16 00 */ lwz r0, 0x1600(r3)
/* 80311E60 0030DAC0 7C 06 02 14 */ add r0, r6, r0
/* 80311E64 0030DAC4 7C 00 E8 40 */ cmplw r0, r29
/* 80311E68 0030DAC8 41 81 00 A8 */ bgt lbl_80311F10
lbl_80311E6C:
/* 80311E6C 0030DACC A0 04 00 02 */ lhz r0, 2(r4)
/* 80311E70 0030DAD0 28 00 00 01 */ cmplwi r0, 1
/* 80311E74 0030DAD4 40 82 00 18 */ bne lbl_80311E8C
/* 80311E78 0030DAD8 7F 23 CB 78 */ mr r3, r25
/* 80311E7C 0030DADC 4B FF DF ED */ bl VFiPFFAT_UpdateFATEntry
/* 80311E80 0030DAE0 2C 03 00 00 */ cmpwi r3, 0
/* 80311E84 0030DAE4 41 82 00 08 */ beq lbl_80311E8C
/* 80311E88 0030DAE8 48 00 00 D8 */ b lbl_80311F60
lbl_80311E8C:
/* 80311E8C 0030DAEC 7F 23 CB 78 */ mr r3, r25
/* 80311E90 0030DAF0 7F A4 EB 78 */ mr r4, r29
/* 80311E94 0030DAF4 7F 65 DB 78 */ mr r5, r27
/* 80311E98 0030DAF8 4B FF 89 B5 */ bl VFiPFCACHE_ReadFATPage
/* 80311E9C 0030DAFC 2C 03 10 00 */ cmpwi r3, 0x1000
/* 80311EA0 0030DB00 7C 7E 1B 78 */ mr r30, r3
/* 80311EA4 0030DB04 40 82 00 50 */ bne lbl_80311EF4
/* 80311EA8 0030DB08 81 99 18 90 */ lwz r12, 0x1890(r25)
/* 80311EAC 0030DB0C 2C 0C 00 00 */ cmpwi r12, 0
/* 80311EB0 0030DB10 41 82 00 44 */ beq lbl_80311EF4
/* 80311EB4 0030DB14 80 79 18 70 */ lwz r3, 0x1870(r25)
/* 80311EB8 0030DB18 7D 89 03 A6 */ mtctr r12
/* 80311EBC 0030DB1C 4E 80 04 21 */ bctrl
/* 80311EC0 0030DB20 2C 03 00 00 */ cmpwi r3, 0
/* 80311EC4 0030DB24 41 82 00 40 */ beq lbl_80311F04
/* 80311EC8 0030DB28 2C 03 00 01 */ cmpwi r3, 1
/* 80311ECC 0030DB2C 40 82 00 28 */ bne lbl_80311EF4
/* 80311ED0 0030DB30 88 19 00 22 */ lbz r0, 0x22(r25)
/* 80311ED4 0030DB34 28 00 00 02 */ cmplwi r0, 2
/* 80311ED8 0030DB38 41 80 00 1C */ blt lbl_80311EF4
/* 80311EDC 0030DB3C 7C 1C 00 40 */ cmplw r28, r0
/* 80311EE0 0030DB40 40 80 00 14 */ bge lbl_80311EF4
/* 80311EE4 0030DB44 80 19 00 0C */ lwz r0, 0xc(r25)
/* 80311EE8 0030DB48 3B 9C 00 01 */ addi r28, r28, 1
/* 80311EEC 0030DB4C 7F BD 02 14 */ add r29, r29, r0
/* 80311EF0 0030DB50 48 00 00 14 */ b lbl_80311F04
lbl_80311EF4:
/* 80311EF4 0030DB54 2C 1E 00 00 */ cmpwi r30, 0
/* 80311EF8 0030DB58 41 82 00 0C */ beq lbl_80311F04
/* 80311EFC 0030DB5C 7F C3 F3 78 */ mr r3, r30
/* 80311F00 0030DB60 48 00 00 60 */ b lbl_80311F60
lbl_80311F04:
/* 80311F04 0030DB64 2C 1E 00 00 */ cmpwi r30, 0
/* 80311F08 0030DB68 40 82 FF 84 */ bne lbl_80311E8C
/* 80311F0C 0030DB6C 48 00 00 2C */ b lbl_80311F38
lbl_80311F10:
/* 80311F10 0030DB70 80 04 00 04 */ lwz r0, 4(r4)
/* 80311F14 0030DB74 80 A4 00 08 */ lwz r5, 8(r4)
/* 80311F18 0030DB78 7C 00 28 50 */ subf r0, r0, r5
/* 80311F1C 0030DB7C 7C 00 3E 30 */ sraw r0, r0, r7
/* 80311F20 0030DB80 7C 06 02 14 */ add r0, r6, r0
/* 80311F24 0030DB84 7C 1D 00 40 */ cmplw r29, r0
/* 80311F28 0030DB88 41 82 00 10 */ beq lbl_80311F38
/* 80311F2C 0030DB8C A0 03 00 00 */ lhz r0, 0(r3)
/* 80311F30 0030DB90 7C 05 02 14 */ add r0, r5, r0
/* 80311F34 0030DB94 90 04 00 08 */ stw r0, 8(r4)
lbl_80311F38:
/* 80311F38 0030DB98 A0 B9 00 00 */ lhz r5, 0(r25)
/* 80311F3C 0030DB9C 7F C3 F3 78 */ mr r3, r30
/* 80311F40 0030DBA0 80 9B 00 00 */ lwz r4, 0(r27)
/* 80311F44 0030DBA4 38 05 FF FF */ addi r0, r5, -1
/* 80311F48 0030DBA8 80 84 00 08 */ lwz r4, 8(r4)
/* 80311F4C 0030DBAC 7F E0 00 38 */ and r0, r31, r0
/* 80311F50 0030DBB0 7C 84 02 2E */ lhzx r4, r4, r0
/* 80311F54 0030DBB4 54 80 44 2E */ rlwinm r0, r4, 8, 0x10, 0x17
/* 80311F58 0030DBB8 50 80 C6 3E */ rlwimi r0, r4, 0x18, 0x18, 0x1f
/* 80311F5C 0030DBBC 90 1A 00 00 */ stw r0, 0(r26)
lbl_80311F60:
/* 80311F60 0030DBC0 39 61 00 30 */ addi r11, r1, 0x30
/* 80311F64 0030DBC4 4B EB 52 09 */ bl _restgpr_25
/* 80311F68 0030DBC8 80 01 00 34 */ lwz r0, 0x34(r1)
/* 80311F6C 0030DBCC 7C 08 03 A6 */ mtlr r0
/* 80311F70 0030DBD0 38 21 00 30 */ addi r1, r1, 0x30
/* 80311F74 0030DBD4 4E 80 00 20 */ blr
.global VFiPFFAT16_WriteFATEntry
VFiPFFAT16_WriteFATEntry:
/* 80311F78 0030DBD8 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80311F7C 0030DBDC 7C 08 02 A6 */ mflr r0
/* 80311F80 0030DBE0 2C 03 00 00 */ cmpwi r3, 0
/* 80311F84 0030DBE4 90 01 00 14 */ stw r0, 0x14(r1)
/* 80311F88 0030DBE8 40 82 00 0C */ bne lbl_80311F94
/* 80311F8C 0030DBEC 38 60 00 0A */ li r3, 0xa
/* 80311F90 0030DBF0 48 00 00 70 */ b lbl_80312000
lbl_80311F94:
/* 80311F94 0030DBF4 28 04 00 02 */ cmplwi r4, 2
/* 80311F98 0030DBF8 41 80 00 14 */ blt lbl_80311FAC
/* 80311F9C 0030DBFC 80 C3 00 34 */ lwz r6, 0x34(r3)
/* 80311FA0 0030DC00 38 06 00 02 */ addi r0, r6, 2
/* 80311FA4 0030DC04 7C 04 00 40 */ cmplw r4, r0
/* 80311FA8 0030DC08 41 80 00 1C */ blt lbl_80311FC4
lbl_80311FAC:
/* 80311FAC 0030DC0C 2C 04 00 00 */ cmpwi r4, 0
/* 80311FB0 0030DC10 41 82 00 14 */ beq lbl_80311FC4
/* 80311FB4 0030DC14 28 04 00 01 */ cmplwi r4, 1
/* 80311FB8 0030DC18 41 82 00 0C */ beq lbl_80311FC4
/* 80311FBC 0030DC1C 38 60 00 0E */ li r3, 0xe
/* 80311FC0 0030DC20 48 00 00 40 */ b lbl_80312000
lbl_80311FC4:
/* 80311FC4 0030DC24 A0 C3 00 00 */ lhz r6, 0(r3)
/* 80311FC8 0030DC28 54 89 08 3C */ slwi r9, r4, 1
/* 80311FCC 0030DC2C 88 E3 00 20 */ lbz r7, 0x20(r3)
/* 80311FD0 0030DC30 38 01 00 08 */ addi r0, r1, 8
/* 80311FD4 0030DC34 38 86 FF FF */ addi r4, r6, -1
/* 80311FD8 0030DC38 81 03 00 28 */ lwz r8, 0x28(r3)
/* 80311FDC 0030DC3C 7D 26 3C 30 */ srw r6, r9, r7
/* 80311FE0 0030DC40 38 E0 00 02 */ li r7, 2
/* 80311FE4 0030DC44 7C C8 32 14 */ add r6, r8, r6
/* 80311FE8 0030DC48 7C A0 07 2C */ sthbrx r5, 0, r0
/* 80311FEC 0030DC4C 7D 24 20 38 */ and r4, r9, r4
/* 80311FF0 0030DC50 54 C5 04 3E */ clrlwi r5, r6, 0x10
/* 80311FF4 0030DC54 54 86 04 3E */ clrlwi r6, r4, 0x10
/* 80311FF8 0030DC58 38 81 00 08 */ addi r4, r1, 8
/* 80311FFC 0030DC5C 48 00 6D 0D */ bl VFiPFSEC_WriteFAT
lbl_80312000:
/* 80312000 0030DC60 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80312004 0030DC64 7C 08 03 A6 */ mtlr r0
/* 80312008 0030DC68 38 21 00 10 */ addi r1, r1, 0x10
/* 8031200C 0030DC6C 4E 80 00 20 */ blr
.global VFiPFFAT16_WriteFATEntryPage
VFiPFFAT16_WriteFATEntryPage:
/* 80312010 0030DC70 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 80312014 0030DC74 7C 08 02 A6 */ mflr r0
/* 80312018 0030DC78 90 01 00 34 */ stw r0, 0x34(r1)
/* 8031201C 0030DC7C 39 61 00 30 */ addi r11, r1, 0x30
/* 80312020 0030DC80 4B EB 51 01 */ bl _savegpr_25
/* 80312024 0030DC84 2C 03 00 00 */ cmpwi r3, 0
/* 80312028 0030DC88 7C 7A 1B 78 */ mr r26, r3
/* 8031202C 0030DC8C 7C BB 2B 78 */ mr r27, r5
/* 80312030 0030DC90 7C DC 33 78 */ mr r28, r6
/* 80312034 0030DC94 3B C0 00 00 */ li r30, 0
/* 80312038 0030DC98 40 82 00 0C */ bne lbl_80312044
/* 8031203C 0030DC9C 38 60 00 0A */ li r3, 0xa
/* 80312040 0030DCA0 48 00 01 78 */ b lbl_803121B8
lbl_80312044:
/* 80312044 0030DCA4 28 04 00 02 */ cmplwi r4, 2
/* 80312048 0030DCA8 41 80 00 14 */ blt lbl_8031205C
/* 8031204C 0030DCAC 80 A3 00 34 */ lwz r5, 0x34(r3)
/* 80312050 0030DCB0 38 05 00 02 */ addi r0, r5, 2
/* 80312054 0030DCB4 7C 04 00 40 */ cmplw r4, r0
/* 80312058 0030DCB8 41 80 00 1C */ blt lbl_80312074
lbl_8031205C:
/* 8031205C 0030DCBC 2C 04 00 00 */ cmpwi r4, 0
/* 80312060 0030DCC0 41 82 00 14 */ beq lbl_80312074
/* 80312064 0030DCC4 28 04 00 01 */ cmplwi r4, 1
/* 80312068 0030DCC8 41 82 00 0C */ beq lbl_80312074
/* 8031206C 0030DCCC 38 60 00 0E */ li r3, 0xe
/* 80312070 0030DCD0 48 00 01 48 */ b lbl_803121B8
lbl_80312074:
/* 80312074 0030DCD4 89 03 00 20 */ lbz r8, 0x20(r3)
/* 80312078 0030DCD8 54 87 08 3C */ slwi r7, r4, 1
/* 8031207C 0030DCDC 80 86 00 00 */ lwz r4, 0(r6)
/* 80312080 0030DCE0 80 A3 00 28 */ lwz r5, 0x28(r3)
/* 80312084 0030DCE4 7C E0 44 30 */ srw r0, r7, r8
/* 80312088 0030DCE8 A0 C3 00 00 */ lhz r6, 0(r3)
/* 8031208C 0030DCEC 7C 05 02 14 */ add r0, r5, r0
/* 80312090 0030DCF0 80 A4 00 18 */ lwz r5, 0x18(r4)
/* 80312094 0030DCF4 54 1D 04 3E */ clrlwi r29, r0, 0x10
/* 80312098 0030DCF8 38 06 FF FF */ addi r0, r6, -1
/* 8031209C 0030DCFC 7C E0 00 38 */ and r0, r7, r0
/* 803120A0 0030DD00 7C 05 E8 40 */ cmplw r5, r29
/* 803120A4 0030DD04 54 1F 04 3E */ clrlwi r31, r0, 0x10
/* 803120A8 0030DD08 41 81 00 14 */ bgt lbl_803120BC
/* 803120AC 0030DD0C 80 03 16 00 */ lwz r0, 0x1600(r3)
/* 803120B0 0030DD10 7C 05 02 14 */ add r0, r5, r0
/* 803120B4 0030DD14 7C 00 E8 40 */ cmplw r0, r29
/* 803120B8 0030DD18 41 81 00 B0 */ bgt lbl_80312168
lbl_803120BC:
/* 803120BC 0030DD1C 7F 43 D3 78 */ mr r3, r26
/* 803120C0 0030DD20 4B FF DD A9 */ bl VFiPFFAT_UpdateFATEntry
/* 803120C4 0030DD24 2C 03 00 00 */ cmpwi r3, 0
/* 803120C8 0030DD28 41 82 00 08 */ beq lbl_803120D0
/* 803120CC 0030DD2C 48 00 00 EC */ b lbl_803121B8
lbl_803120D0:
/* 803120D0 0030DD30 A0 7A 00 18 */ lhz r3, 0x18(r26)
/* 803120D4 0030DD34 3B 20 00 01 */ li r25, 1
/* 803120D8 0030DD38 54 60 06 31 */ rlwinm. r0, r3, 0, 0x18, 0x18
/* 803120DC 0030DD3C 41 82 00 08 */ beq lbl_803120E4
/* 803120E0 0030DD40 54 79 07 7E */ clrlwi r25, r3, 0x1d
lbl_803120E4:
/* 803120E4 0030DD44 7F 43 D3 78 */ mr r3, r26
/* 803120E8 0030DD48 7F A4 EB 78 */ mr r4, r29
/* 803120EC 0030DD4C 7F 85 E3 78 */ mr r5, r28
/* 803120F0 0030DD50 4B FF 87 5D */ bl VFiPFCACHE_ReadFATPage
/* 803120F4 0030DD54 2C 03 10 00 */ cmpwi r3, 0x1000
/* 803120F8 0030DD58 7C 7E 1B 78 */ mr r30, r3
/* 803120FC 0030DD5C 40 82 00 50 */ bne lbl_8031214C
/* 80312100 0030DD60 81 9A 18 90 */ lwz r12, 0x1890(r26)
/* 80312104 0030DD64 2C 0C 00 00 */ cmpwi r12, 0
/* 80312108 0030DD68 41 82 00 44 */ beq lbl_8031214C
/* 8031210C 0030DD6C 80 7A 18 70 */ lwz r3, 0x1870(r26)
/* 80312110 0030DD70 7D 89 03 A6 */ mtctr r12
/* 80312114 0030DD74 4E 80 04 21 */ bctrl
/* 80312118 0030DD78 2C 03 00 00 */ cmpwi r3, 0
/* 8031211C 0030DD7C 41 82 00 40 */ beq lbl_8031215C
/* 80312120 0030DD80 2C 03 00 01 */ cmpwi r3, 1
/* 80312124 0030DD84 40 82 00 28 */ bne lbl_8031214C
/* 80312128 0030DD88 88 1A 00 22 */ lbz r0, 0x22(r26)
/* 8031212C 0030DD8C 28 00 00 02 */ cmplwi r0, 2
/* 80312130 0030DD90 41 80 00 1C */ blt lbl_8031214C
/* 80312134 0030DD94 7C 19 00 40 */ cmplw r25, r0
/* 80312138 0030DD98 40 80 00 14 */ bge lbl_8031214C
/* 8031213C 0030DD9C 80 1A 00 0C */ lwz r0, 0xc(r26)
/* 80312140 0030DDA0 3B 39 00 01 */ addi r25, r25, 1
/* 80312144 0030DDA4 7F BD 02 14 */ add r29, r29, r0
/* 80312148 0030DDA8 48 00 00 14 */ b lbl_8031215C
lbl_8031214C:
/* 8031214C 0030DDAC 2C 1E 00 00 */ cmpwi r30, 0
/* 80312150 0030DDB0 41 82 00 0C */ beq lbl_8031215C
/* 80312154 0030DDB4 7F C3 F3 78 */ mr r3, r30
/* 80312158 0030DDB8 48 00 00 60 */ b lbl_803121B8
lbl_8031215C:
/* 8031215C 0030DDBC 2C 1E 00 00 */ cmpwi r30, 0
/* 80312160 0030DDC0 40 82 FF 84 */ bne lbl_803120E4
/* 80312164 0030DDC4 48 00 00 28 */ b lbl_8031218C
lbl_80312168:
/* 80312168 0030DDC8 80 04 00 04 */ lwz r0, 4(r4)
/* 8031216C 0030DDCC 80 64 00 08 */ lwz r3, 8(r4)
/* 80312170 0030DDD0 7C 00 18 50 */ subf r0, r0, r3
/* 80312174 0030DDD4 7C 00 46 30 */ sraw r0, r0, r8
/* 80312178 0030DDD8 7C 05 02 14 */ add r0, r5, r0
/* 8031217C 0030DDDC 7C 1D 00 40 */ cmplw r29, r0
/* 80312180 0030DDE0 41 82 00 0C */ beq lbl_8031218C
/* 80312184 0030DDE4 7C 03 32 14 */ add r0, r3, r6
/* 80312188 0030DDE8 90 04 00 08 */ stw r0, 8(r4)
lbl_8031218C:
/* 8031218C 0030DDEC 80 7C 00 00 */ lwz r3, 0(r28)
/* 80312190 0030DDF0 57 64 C6 3E */ rlwinm r4, r27, 0x18, 0x18, 0x1f
/* 80312194 0030DDF4 80 63 00 08 */ lwz r3, 8(r3)
/* 80312198 0030DDF8 7F 63 F9 AE */ stbx r27, r3, r31
/* 8031219C 0030DDFC 80 7C 00 00 */ lwz r3, 0(r28)
/* 803121A0 0030DE00 80 03 00 08 */ lwz r0, 8(r3)
/* 803121A4 0030DE04 7C 60 FA 14 */ add r3, r0, r31
/* 803121A8 0030DE08 98 83 00 01 */ stb r4, 1(r3)
/* 803121AC 0030DE0C 80 7C 00 00 */ lwz r3, 0(r28)
/* 803121B0 0030DE10 4B FF 84 41 */ bl VFiPFCACHE_UpdateModifiedSector
/* 803121B4 0030DE14 7F C3 F3 78 */ mr r3, r30
lbl_803121B8:
/* 803121B8 0030DE18 39 61 00 30 */ addi r11, r1, 0x30
/* 803121BC 0030DE1C 4B EB 4F B1 */ bl _restgpr_25
/* 803121C0 0030DE20 80 01 00 34 */ lwz r0, 0x34(r1)
/* 803121C4 0030DE24 7C 08 03 A6 */ mtlr r0
/* 803121C8 0030DE28 38 21 00 30 */ addi r1, r1, 0x30
/* 803121CC 0030DE2C 4E 80 00 20 */ blr
|