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
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global VFIsAvailable
VFIsAvailable:
/* 8031A4A0 00316100 80 6D AF E8 */ lwz r3, lbl_806402A8-_SDA_BASE_(r13)
/* 8031A4A4 00316104 7C 03 00 D0 */ neg r0, r3
/* 8031A4A8 00316108 7C 00 1B 78 */ or r0, r0, r3
/* 8031A4AC 0031610C 54 03 0F FE */ srwi r3, r0, 0x1f
/* 8031A4B0 00316110 4E 80 00 20 */ blr
.global VFInit
VFInit:
/* 8031A4B4 00316114 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8031A4B8 00316118 7C 08 02 A6 */ mflr r0
/* 8031A4BC 0031611C 90 01 00 14 */ stw r0, 0x14(r1)
/* 8031A4C0 00316120 80 0D AF EC */ lwz r0, lbl_806402AC-_SDA_BASE_(r13)
/* 8031A4C4 00316124 2C 00 00 00 */ cmpwi r0, 0
/* 8031A4C8 00316128 40 82 00 18 */ bne lbl_8031A4E0
/* 8031A4CC 0031612C 3C 60 80 5A */ lis r3, lbl_805A7580@ha
/* 8031A4D0 00316130 38 63 75 80 */ addi r3, r3, lbl_805A7580@l
/* 8031A4D4 00316134 4B F5 54 3D */ bl OSInitMutex
/* 8031A4D8 00316138 38 00 00 01 */ li r0, 1
/* 8031A4DC 0031613C 90 0D AF EC */ stw r0, lbl_806402AC-_SDA_BASE_(r13)
lbl_8031A4E0:
/* 8031A4E0 00316140 80 0D AF EC */ lwz r0, lbl_806402AC-_SDA_BASE_(r13)
/* 8031A4E4 00316144 2C 00 00 00 */ cmpwi r0, 0
/* 8031A4E8 00316148 41 82 00 10 */ beq lbl_8031A4F8
/* 8031A4EC 0031614C 3C 60 80 5A */ lis r3, lbl_805A7580@ha
/* 8031A4F0 00316150 38 63 75 80 */ addi r3, r3, lbl_805A7580@l
/* 8031A4F4 00316154 4B F5 54 55 */ bl OSLockMutex
lbl_8031A4F8:
/* 8031A4F8 00316158 80 0D AF E8 */ lwz r0, lbl_806402A8-_SDA_BASE_(r13)
/* 8031A4FC 0031615C 2C 00 00 00 */ cmpwi r0, 0
/* 8031A500 00316160 40 82 00 3C */ bne lbl_8031A53C
/* 8031A504 00316164 38 00 00 01 */ li r0, 1
/* 8031A508 00316168 3C 60 80 5A */ lis r3, lbl_805A75A0@ha
/* 8031A50C 0031616C 3C 80 00 07 */ lis r4, 0x00068000@ha
/* 8031A510 00316170 90 0D AF E8 */ stw r0, lbl_806402A8-_SDA_BASE_(r13)
/* 8031A514 00316174 38 63 75 A0 */ addi r3, r3, lbl_805A75A0@l
/* 8031A518 00316178 38 84 80 00 */ addi r4, r4, 0x00068000@l
/* 8031A51C 0031617C 48 00 07 05 */ bl VFSysInit
/* 8031A520 00316180 38 60 00 00 */ li r3, 0
/* 8031A524 00316184 38 80 00 00 */ li r4, 0
/* 8031A528 00316188 4B FE E8 89 */ bl VFipdm_init_diskmanager
/* 8031A52C 0031618C 38 60 00 00 */ li r3, 0
/* 8031A530 00316190 38 80 00 00 */ li r4, 0
/* 8031A534 00316194 4B FF FE A1 */ bl VFipf2_init_prfile2
/* 8031A538 00316198 48 00 13 25 */ bl dHash_InitHashTable
lbl_8031A53C:
/* 8031A53C 0031619C 80 0D AF EC */ lwz r0, lbl_806402AC-_SDA_BASE_(r13)
/* 8031A540 003161A0 2C 00 00 00 */ cmpwi r0, 0
/* 8031A544 003161A4 41 82 00 10 */ beq lbl_8031A554
/* 8031A548 003161A8 3C 60 80 5A */ lis r3, lbl_805A7580@ha
/* 8031A54C 003161AC 38 63 75 80 */ addi r3, r3, lbl_805A7580@l
/* 8031A550 003161B0 4B F5 54 D5 */ bl OSUnlockMutex
lbl_8031A554:
/* 8031A554 003161B4 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8031A558 003161B8 7C 08 03 A6 */ mtlr r0
/* 8031A55C 003161BC 38 21 00 10 */ addi r1, r1, 0x10
/* 8031A560 003161C0 4E 80 00 20 */ blr
.global VFFinalize
VFFinalize:
/* 8031A564 003161C4 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8031A568 003161C8 7C 08 02 A6 */ mflr r0
/* 8031A56C 003161CC 90 01 00 14 */ stw r0, 0x14(r1)
/* 8031A570 003161D0 80 0D AF EC */ lwz r0, lbl_806402AC-_SDA_BASE_(r13)
/* 8031A574 003161D4 2C 00 00 00 */ cmpwi r0, 0
/* 8031A578 003161D8 41 82 00 10 */ beq lbl_8031A588
/* 8031A57C 003161DC 3C 60 80 5A */ lis r3, lbl_805A7580@ha
/* 8031A580 003161E0 38 63 75 80 */ addi r3, r3, lbl_805A7580@l
/* 8031A584 003161E4 4B F5 53 C5 */ bl OSLockMutex
lbl_8031A588:
/* 8031A588 003161E8 80 0D AF E8 */ lwz r0, lbl_806402A8-_SDA_BASE_(r13)
/* 8031A58C 003161EC 2C 00 00 00 */ cmpwi r0, 0
/* 8031A590 003161F0 41 82 00 10 */ beq lbl_8031A5A0
/* 8031A594 003161F4 48 00 08 11 */ bl VFSysFinalize
/* 8031A598 003161F8 38 00 00 00 */ li r0, 0
/* 8031A59C 003161FC 90 0D AF E8 */ stw r0, lbl_806402A8-_SDA_BASE_(r13)
lbl_8031A5A0:
/* 8031A5A0 00316200 80 0D AF EC */ lwz r0, lbl_806402AC-_SDA_BASE_(r13)
/* 8031A5A4 00316204 2C 00 00 00 */ cmpwi r0, 0
/* 8031A5A8 00316208 41 82 00 10 */ beq lbl_8031A5B8
/* 8031A5AC 0031620C 3C 60 80 5A */ lis r3, lbl_805A7580@ha
/* 8031A5B0 00316210 38 63 75 80 */ addi r3, r3, lbl_805A7580@l
/* 8031A5B4 00316214 4B F5 54 71 */ bl OSUnlockMutex
lbl_8031A5B8:
/* 8031A5B8 00316218 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8031A5BC 0031621C 7C 08 03 A6 */ mtlr r0
/* 8031A5C0 00316220 38 21 00 10 */ addi r1, r1, 0x10
/* 8031A5C4 00316224 4E 80 00 20 */ blr
.global VF_path2handleidx
VF_path2handleidx:
/* 8031A5C8 00316228 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8031A5CC 0031622C 7C 08 02 A6 */ mflr r0
/* 8031A5D0 00316230 38 A0 00 08 */ li r5, 8
/* 8031A5D4 00316234 90 01 00 24 */ stw r0, 0x24(r1)
/* 8031A5D8 00316238 38 00 FF FF */ li r0, -1
/* 8031A5DC 0031623C 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 8031A5E0 00316240 7C 9F 23 78 */ mr r31, r4
/* 8031A5E4 00316244 93 C1 00 18 */ stw r30, 0x18(r1)
/* 8031A5E8 00316248 3B C0 00 00 */ li r30, 0
/* 8031A5EC 0031624C 93 A1 00 14 */ stw r29, 0x14(r1)
/* 8031A5F0 00316250 7C 9D 23 78 */ mr r29, r4
/* 8031A5F4 00316254 38 80 00 00 */ li r4, 0
/* 8031A5F8 00316258 93 81 00 10 */ stw r28, 0x10(r1)
/* 8031A5FC 0031625C 7C 7C 1B 78 */ mr r28, r3
/* 8031A600 00316260 90 03 00 00 */ stw r0, 0(r3)
/* 8031A604 00316264 38 61 00 08 */ addi r3, r1, 8
/* 8031A608 00316268 4B FE A9 CD */ bl VFipf_memset
/* 8031A60C 0031626C 38 61 00 08 */ addi r3, r1, 8
/* 8031A610 00316270 48 00 00 64 */ b lbl_8031A674
lbl_8031A614:
/* 8031A614 00316274 7C 80 07 74 */ extsb r0, r4
/* 8031A618 00316278 2C 00 00 5C */ cmpwi r0, 0x5c
/* 8031A61C 0031627C 41 82 00 64 */ beq lbl_8031A680
/* 8031A620 00316280 2C 00 00 2F */ cmpwi r0, 0x2f
/* 8031A624 00316284 41 82 00 5C */ beq lbl_8031A680
/* 8031A628 00316288 2C 00 00 3A */ cmpwi r0, 0x3a
/* 8031A62C 0031628C 40 82 00 30 */ bne lbl_8031A65C
/* 8031A630 00316290 38 61 00 08 */ addi r3, r1, 8
/* 8031A634 00316294 48 00 14 BD */ bl dHash_GetArg
/* 8031A638 00316298 2C 03 FF FF */ cmpwi r3, -1
/* 8031A63C 0031629C 90 7C 00 00 */ stw r3, 0(r28)
/* 8031A640 003162A0 41 82 00 0C */ beq lbl_8031A64C
/* 8031A644 003162A4 2C 1E 00 07 */ cmpwi r30, 7
/* 8031A648 003162A8 40 81 00 0C */ ble lbl_8031A654
lbl_8031A64C:
/* 8031A64C 003162AC 3B A0 00 00 */ li r29, 0
/* 8031A650 003162B0 48 00 00 30 */ b lbl_8031A680
lbl_8031A654:
/* 8031A654 003162B4 3B BF 00 01 */ addi r29, r31, 1
/* 8031A658 003162B8 48 00 00 28 */ b lbl_8031A680
lbl_8031A65C:
/* 8031A65C 003162BC 2C 1E 00 07 */ cmpwi r30, 7
/* 8031A660 003162C0 40 80 00 08 */ bge lbl_8031A668
/* 8031A664 003162C4 98 83 00 00 */ stb r4, 0(r3)
lbl_8031A668:
/* 8031A668 003162C8 3B FF 00 01 */ addi r31, r31, 1
/* 8031A66C 003162CC 38 63 00 01 */ addi r3, r3, 1
/* 8031A670 003162D0 3B DE 00 01 */ addi r30, r30, 1
lbl_8031A674:
/* 8031A674 003162D4 88 9F 00 00 */ lbz r4, 0(r31)
/* 8031A678 003162D8 7C 80 07 75 */ extsb. r0, r4
/* 8031A67C 003162DC 40 82 FF 98 */ bne lbl_8031A614
lbl_8031A680:
/* 8031A680 003162E0 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 8031A684 003162E4 7F A3 EB 78 */ mr r3, r29
/* 8031A688 003162E8 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 8031A68C 003162EC 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 8031A690 003162F0 83 81 00 10 */ lwz r28, 0x10(r1)
/* 8031A694 003162F4 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8031A698 003162F8 7C 08 03 A6 */ mtlr r0
/* 8031A69C 003162FC 38 21 00 20 */ addi r1, r1, 0x20
/* 8031A6A0 00316300 4E 80 00 20 */ blr
.global VFOpenFile
VFOpenFile:
/* 8031A6A4 00316304 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8031A6A8 00316308 7C 08 02 A6 */ mflr r0
/* 8031A6AC 0031630C 38 A0 FF FF */ li r5, -1
/* 8031A6B0 00316310 90 01 00 24 */ stw r0, 0x24(r1)
/* 8031A6B4 00316314 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 8031A6B8 00316318 7C 9F 23 78 */ mr r31, r4
/* 8031A6BC 0031631C 93 C1 00 18 */ stw r30, 0x18(r1)
/* 8031A6C0 00316320 7C 7E 1B 78 */ mr r30, r3
/* 8031A6C4 00316324 80 0D AF EC */ lwz r0, lbl_806402AC-_SDA_BASE_(r13)
/* 8031A6C8 00316328 90 A1 00 08 */ stw r5, 8(r1)
/* 8031A6CC 0031632C 2C 00 00 00 */ cmpwi r0, 0
/* 8031A6D0 00316330 41 82 00 10 */ beq lbl_8031A6E0
/* 8031A6D4 00316334 3C 60 80 5A */ lis r3, lbl_805A7580@ha
/* 8031A6D8 00316338 38 63 75 80 */ addi r3, r3, lbl_805A7580@l
/* 8031A6DC 0031633C 4B F5 52 6D */ bl OSLockMutex
lbl_8031A6E0:
/* 8031A6E0 00316340 7F C4 F3 78 */ mr r4, r30
/* 8031A6E4 00316344 38 61 00 08 */ addi r3, r1, 8
/* 8031A6E8 00316348 4B FF FE E1 */ bl VF_path2handleidx
/* 8031A6EC 0031634C 2C 03 00 00 */ cmpwi r3, 0
/* 8031A6F0 00316350 7C 64 1B 78 */ mr r4, r3
/* 8031A6F4 00316354 40 82 00 30 */ bne lbl_8031A724
/* 8031A6F8 00316358 3C 60 00 01 */ lis r3, 0x0000B003@ha
/* 8031A6FC 0031635C 38 63 B0 03 */ addi r3, r3, 0x0000B003@l
/* 8031A700 00316360 48 00 03 6D */ bl VFSysSetLastError
/* 8031A704 00316364 80 0D AF EC */ lwz r0, lbl_806402AC-_SDA_BASE_(r13)
/* 8031A708 00316368 2C 00 00 00 */ cmpwi r0, 0
/* 8031A70C 0031636C 41 82 00 10 */ beq lbl_8031A71C
/* 8031A710 00316370 3C 60 80 5A */ lis r3, lbl_805A7580@ha
/* 8031A714 00316374 38 63 75 80 */ addi r3, r3, lbl_805A7580@l
/* 8031A718 00316378 4B F5 53 0D */ bl OSUnlockMutex
lbl_8031A71C:
/* 8031A71C 0031637C 38 60 00 00 */ li r3, 0
/* 8031A720 00316380 48 00 00 48 */ b lbl_8031A768
lbl_8031A724:
/* 8031A724 00316384 80 01 00 08 */ lwz r0, 8(r1)
/* 8031A728 00316388 2C 00 FF FF */ cmpwi r0, -1
/* 8031A72C 0031638C 41 82 00 14 */ beq lbl_8031A740
/* 8031A730 00316390 7C 03 03 78 */ mr r3, r0
/* 8031A734 00316394 7F E5 FB 78 */ mr r5, r31
/* 8031A738 00316398 48 00 08 E5 */ bl VFSysOpenFile
/* 8031A73C 0031639C 48 00 00 0C */ b lbl_8031A748
lbl_8031A740:
/* 8031A740 003163A0 7F E4 FB 78 */ mr r4, r31
/* 8031A744 003163A4 48 00 07 ED */ bl VFSysOpenFile_current
lbl_8031A748:
/* 8031A748 003163A8 80 0D AF EC */ lwz r0, lbl_806402AC-_SDA_BASE_(r13)
/* 8031A74C 003163AC 7C 7F 1B 78 */ mr r31, r3
/* 8031A750 003163B0 2C 00 00 00 */ cmpwi r0, 0
/* 8031A754 003163B4 41 82 00 10 */ beq lbl_8031A764
/* 8031A758 003163B8 3C 60 80 5A */ lis r3, lbl_805A7580@ha
/* 8031A75C 003163BC 38 63 75 80 */ addi r3, r3, lbl_805A7580@l
/* 8031A760 003163C0 4B F5 52 C5 */ bl OSUnlockMutex
lbl_8031A764:
/* 8031A764 003163C4 7F E3 FB 78 */ mr r3, r31
lbl_8031A768:
/* 8031A768 003163C8 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8031A76C 003163CC 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 8031A770 003163D0 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 8031A774 003163D4 7C 08 03 A6 */ mtlr r0
/* 8031A778 003163D8 38 21 00 20 */ addi r1, r1, 0x20
/* 8031A77C 003163DC 4E 80 00 20 */ blr
.global VFCloseFile
VFCloseFile:
/* 8031A780 003163E0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8031A784 003163E4 7C 08 02 A6 */ mflr r0
/* 8031A788 003163E8 90 01 00 14 */ stw r0, 0x14(r1)
/* 8031A78C 003163EC 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8031A790 003163F0 7C 7F 1B 78 */ mr r31, r3
/* 8031A794 003163F4 80 0D AF EC */ lwz r0, lbl_806402AC-_SDA_BASE_(r13)
/* 8031A798 003163F8 2C 00 00 00 */ cmpwi r0, 0
/* 8031A79C 003163FC 41 82 00 10 */ beq lbl_8031A7AC
/* 8031A7A0 00316400 3C 60 80 5A */ lis r3, lbl_805A7580@ha
/* 8031A7A4 00316404 38 63 75 80 */ addi r3, r3, lbl_805A7580@l
/* 8031A7A8 00316408 4B F5 51 A1 */ bl OSLockMutex
lbl_8031A7AC:
/* 8031A7AC 0031640C 7F E3 FB 78 */ mr r3, r31
/* 8031A7B0 00316410 48 00 09 A9 */ bl VFSysCloseFile
/* 8031A7B4 00316414 7C 7F 1B 78 */ mr r31, r3
/* 8031A7B8 00316418 48 00 02 B5 */ bl VFSysSetLastError
/* 8031A7BC 0031641C 80 0D AF EC */ lwz r0, lbl_806402AC-_SDA_BASE_(r13)
/* 8031A7C0 00316420 2C 00 00 00 */ cmpwi r0, 0
/* 8031A7C4 00316424 41 82 00 10 */ beq lbl_8031A7D4
/* 8031A7C8 00316428 3C 60 80 5A */ lis r3, lbl_805A7580@ha
/* 8031A7CC 0031642C 38 63 75 80 */ addi r3, r3, lbl_805A7580@l
/* 8031A7D0 00316430 4B F5 52 55 */ bl OSUnlockMutex
lbl_8031A7D4:
/* 8031A7D4 00316434 7F E3 FB 78 */ mr r3, r31
/* 8031A7D8 00316438 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8031A7DC 0031643C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8031A7E0 00316440 7C 08 03 A6 */ mtlr r0
/* 8031A7E4 00316444 38 21 00 10 */ addi r1, r1, 0x10
/* 8031A7E8 00316448 4E 80 00 20 */ blr
.global VFSeekFile
VFSeekFile:
/* 8031A7EC 0031644C 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8031A7F0 00316450 7C 08 02 A6 */ mflr r0
/* 8031A7F4 00316454 90 01 00 24 */ stw r0, 0x24(r1)
/* 8031A7F8 00316458 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 8031A7FC 0031645C 7C BF 2B 78 */ mr r31, r5
/* 8031A800 00316460 93 C1 00 18 */ stw r30, 0x18(r1)
/* 8031A804 00316464 7C 9E 23 78 */ mr r30, r4
/* 8031A808 00316468 93 A1 00 14 */ stw r29, 0x14(r1)
/* 8031A80C 0031646C 7C 7D 1B 78 */ mr r29, r3
/* 8031A810 00316470 80 0D AF EC */ lwz r0, lbl_806402AC-_SDA_BASE_(r13)
/* 8031A814 00316474 2C 00 00 00 */ cmpwi r0, 0
/* 8031A818 00316478 41 82 00 10 */ beq lbl_8031A828
/* 8031A81C 0031647C 3C 60 80 5A */ lis r3, lbl_805A7580@ha
/* 8031A820 00316480 38 63 75 80 */ addi r3, r3, lbl_805A7580@l
/* 8031A824 00316484 4B F5 51 25 */ bl OSLockMutex
lbl_8031A828:
/* 8031A828 00316488 7F A3 EB 78 */ mr r3, r29
/* 8031A82C 0031648C 7F C4 F3 78 */ mr r4, r30
/* 8031A830 00316490 7F E5 FB 78 */ mr r5, r31
/* 8031A834 00316494 48 00 0A 0D */ bl VFSysSeekFile
/* 8031A838 00316498 7C 7F 1B 78 */ mr r31, r3
/* 8031A83C 0031649C 48 00 02 31 */ bl VFSysSetLastError
/* 8031A840 003164A0 80 0D AF EC */ lwz r0, lbl_806402AC-_SDA_BASE_(r13)
/* 8031A844 003164A4 2C 00 00 00 */ cmpwi r0, 0
/* 8031A848 003164A8 41 82 00 10 */ beq lbl_8031A858
/* 8031A84C 003164AC 3C 60 80 5A */ lis r3, lbl_805A7580@ha
/* 8031A850 003164B0 38 63 75 80 */ addi r3, r3, lbl_805A7580@l
/* 8031A854 003164B4 4B F5 51 D1 */ bl OSUnlockMutex
lbl_8031A858:
/* 8031A858 003164B8 7F E3 FB 78 */ mr r3, r31
/* 8031A85C 003164BC 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 8031A860 003164C0 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 8031A864 003164C4 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 8031A868 003164C8 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8031A86C 003164CC 7C 08 03 A6 */ mtlr r0
/* 8031A870 003164D0 38 21 00 20 */ addi r1, r1, 0x20
/* 8031A874 003164D4 4E 80 00 20 */ blr
.global VFReadFile
VFReadFile:
/* 8031A878 003164D8 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8031A87C 003164DC 7C 08 02 A6 */ mflr r0
/* 8031A880 003164E0 90 01 00 24 */ stw r0, 0x24(r1)
/* 8031A884 003164E4 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 8031A888 003164E8 7C DF 33 78 */ mr r31, r6
/* 8031A88C 003164EC 93 C1 00 18 */ stw r30, 0x18(r1)
/* 8031A890 003164F0 7C BE 2B 78 */ mr r30, r5
/* 8031A894 003164F4 93 A1 00 14 */ stw r29, 0x14(r1)
/* 8031A898 003164F8 7C 9D 23 78 */ mr r29, r4
/* 8031A89C 003164FC 93 81 00 10 */ stw r28, 0x10(r1)
/* 8031A8A0 00316500 7C 7C 1B 78 */ mr r28, r3
/* 8031A8A4 00316504 80 0D AF EC */ lwz r0, lbl_806402AC-_SDA_BASE_(r13)
/* 8031A8A8 00316508 2C 00 00 00 */ cmpwi r0, 0
/* 8031A8AC 0031650C 41 82 00 10 */ beq lbl_8031A8BC
/* 8031A8B0 00316510 3C 60 80 5A */ lis r3, lbl_805A7580@ha
/* 8031A8B4 00316514 38 63 75 80 */ addi r3, r3, lbl_805A7580@l
/* 8031A8B8 00316518 4B F5 50 91 */ bl OSLockMutex
lbl_8031A8BC:
/* 8031A8BC 0031651C 7F E3 FB 78 */ mr r3, r31
/* 8031A8C0 00316520 7F A4 EB 78 */ mr r4, r29
/* 8031A8C4 00316524 7F C5 F3 78 */ mr r5, r30
/* 8031A8C8 00316528 7F 86 E3 78 */ mr r6, r28
/* 8031A8CC 0031652C 48 00 0A 7D */ bl VFSysReadFile
/* 8031A8D0 00316530 7C 7F 1B 78 */ mr r31, r3
/* 8031A8D4 00316534 48 00 01 99 */ bl VFSysSetLastError
/* 8031A8D8 00316538 80 0D AF EC */ lwz r0, lbl_806402AC-_SDA_BASE_(r13)
/* 8031A8DC 0031653C 2C 00 00 00 */ cmpwi r0, 0
/* 8031A8E0 00316540 41 82 00 10 */ beq lbl_8031A8F0
/* 8031A8E4 00316544 3C 60 80 5A */ lis r3, lbl_805A7580@ha
/* 8031A8E8 00316548 38 63 75 80 */ addi r3, r3, lbl_805A7580@l
/* 8031A8EC 0031654C 4B F5 51 39 */ bl OSUnlockMutex
lbl_8031A8F0:
/* 8031A8F0 00316550 7F E3 FB 78 */ mr r3, r31
/* 8031A8F4 00316554 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 8031A8F8 00316558 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 8031A8FC 0031655C 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 8031A900 00316560 83 81 00 10 */ lwz r28, 0x10(r1)
/* 8031A904 00316564 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8031A908 00316568 7C 08 03 A6 */ mtlr r0
/* 8031A90C 0031656C 38 21 00 20 */ addi r1, r1, 0x20
/* 8031A910 00316570 4E 80 00 20 */ blr
.global VFWriteFile
VFWriteFile:
/* 8031A914 00316574 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8031A918 00316578 7C 08 02 A6 */ mflr r0
/* 8031A91C 0031657C 90 01 00 24 */ stw r0, 0x24(r1)
/* 8031A920 00316580 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 8031A924 00316584 7C BF 2B 78 */ mr r31, r5
/* 8031A928 00316588 93 C1 00 18 */ stw r30, 0x18(r1)
/* 8031A92C 0031658C 7C 9E 23 78 */ mr r30, r4
/* 8031A930 00316590 93 A1 00 14 */ stw r29, 0x14(r1)
/* 8031A934 00316594 7C 7D 1B 78 */ mr r29, r3
/* 8031A938 00316598 80 0D AF EC */ lwz r0, lbl_806402AC-_SDA_BASE_(r13)
/* 8031A93C 0031659C 2C 00 00 00 */ cmpwi r0, 0
/* 8031A940 003165A0 41 82 00 10 */ beq lbl_8031A950
/* 8031A944 003165A4 3C 60 80 5A */ lis r3, lbl_805A7580@ha
/* 8031A948 003165A8 38 63 75 80 */ addi r3, r3, lbl_805A7580@l
/* 8031A94C 003165AC 4B F5 4F FD */ bl OSLockMutex
lbl_8031A950:
/* 8031A950 003165B0 7F C3 F3 78 */ mr r3, r30
/* 8031A954 003165B4 7F E4 FB 78 */ mr r4, r31
/* 8031A958 003165B8 7F A5 EB 78 */ mr r5, r29
/* 8031A95C 003165BC 48 00 0B 65 */ bl VFSysWriteFile
/* 8031A960 003165C0 7C 7F 1B 78 */ mr r31, r3
/* 8031A964 003165C4 48 00 01 09 */ bl VFSysSetLastError
/* 8031A968 003165C8 80 0D AF EC */ lwz r0, lbl_806402AC-_SDA_BASE_(r13)
/* 8031A96C 003165CC 2C 00 00 00 */ cmpwi r0, 0
/* 8031A970 003165D0 41 82 00 10 */ beq lbl_8031A980
/* 8031A974 003165D4 3C 60 80 5A */ lis r3, lbl_805A7580@ha
/* 8031A978 003165D8 38 63 75 80 */ addi r3, r3, lbl_805A7580@l
/* 8031A97C 003165DC 4B F5 50 A9 */ bl OSUnlockMutex
lbl_8031A980:
/* 8031A980 003165E0 7F E3 FB 78 */ mr r3, r31
/* 8031A984 003165E4 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 8031A988 003165E8 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 8031A98C 003165EC 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 8031A990 003165F0 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8031A994 003165F4 7C 08 03 A6 */ mtlr r0
/* 8031A998 003165F8 38 21 00 20 */ addi r1, r1, 0x20
/* 8031A99C 003165FC 4E 80 00 20 */ blr
.global VFGetFileSizeByFd
VFGetFileSizeByFd:
/* 8031A9A0 00316600 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8031A9A4 00316604 7C 08 02 A6 */ mflr r0
/* 8031A9A8 00316608 7C 64 1B 78 */ mr r4, r3
/* 8031A9AC 0031660C 90 01 00 14 */ stw r0, 0x14(r1)
/* 8031A9B0 00316610 38 00 FF FF */ li r0, -1
/* 8031A9B4 00316614 38 61 00 08 */ addi r3, r1, 8
/* 8031A9B8 00316618 90 01 00 08 */ stw r0, 8(r1)
/* 8031A9BC 0031661C 48 00 0C 11 */ bl VFSysGetFileSizeByFd
/* 8031A9C0 00316620 2C 03 00 00 */ cmpwi r3, 0
/* 8031A9C4 00316624 41 82 00 08 */ beq lbl_8031A9CC
/* 8031A9C8 00316628 48 00 00 A5 */ bl VFSysSetLastError
lbl_8031A9CC:
/* 8031A9CC 0031662C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8031A9D0 00316630 80 61 00 08 */ lwz r3, 8(r1)
/* 8031A9D4 00316634 7C 08 03 A6 */ mtlr r0
/* 8031A9D8 00316638 38 21 00 10 */ addi r1, r1, 0x10
/* 8031A9DC 0031663C 4E 80 00 20 */ blr
.global VFGetLastError
VFGetLastError:
/* 8031A9E0 00316640 48 00 0C 54 */ b VFSysGetLastError
.global VFGetLastDeviceError
VFGetLastDeviceError:
/* 8031A9E4 00316644 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8031A9E8 00316648 7C 08 02 A6 */ mflr r0
/* 8031A9EC 0031664C 90 01 00 14 */ stw r0, 0x14(r1)
/* 8031A9F0 00316650 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8031A9F4 00316654 7C 7F 1B 78 */ mr r31, r3
/* 8031A9F8 00316658 80 0D AF EC */ lwz r0, lbl_806402AC-_SDA_BASE_(r13)
/* 8031A9FC 0031665C 2C 00 00 00 */ cmpwi r0, 0
/* 8031AA00 00316660 41 82 00 10 */ beq lbl_8031AA10
/* 8031AA04 00316664 3C 60 80 5A */ lis r3, lbl_805A7580@ha
/* 8031AA08 00316668 38 63 75 80 */ addi r3, r3, lbl_805A7580@l
/* 8031AA0C 0031666C 4B F5 4F 3D */ bl OSLockMutex
lbl_8031AA10:
/* 8031AA10 00316670 2C 1F 00 00 */ cmpwi r31, 0
/* 8031AA14 00316674 41 82 00 18 */ beq lbl_8031AA2C
/* 8031AA18 00316678 7F E3 FB 78 */ mr r3, r31
/* 8031AA1C 0031667C 48 00 10 D5 */ bl dHash_GetArg
/* 8031AA20 00316680 48 00 0C C9 */ bl VFSysGetLastDeviceError
/* 8031AA24 00316684 7C 7F 1B 78 */ mr r31, r3
/* 8031AA28 00316688 48 00 00 0C */ b lbl_8031AA34
lbl_8031AA2C:
/* 8031AA2C 0031668C 48 00 0C 11 */ bl VFSysGetLastDeviceError_current
/* 8031AA30 00316690 7C 7F 1B 78 */ mr r31, r3
lbl_8031AA34:
/* 8031AA34 00316694 7F E3 FB 78 */ mr r3, r31
/* 8031AA38 00316698 48 00 00 35 */ bl VFSysSetLastError
/* 8031AA3C 0031669C 80 0D AF EC */ lwz r0, lbl_806402AC-_SDA_BASE_(r13)
/* 8031AA40 003166A0 2C 00 00 00 */ cmpwi r0, 0
/* 8031AA44 003166A4 41 82 00 10 */ beq lbl_8031AA54
/* 8031AA48 003166A8 3C 60 80 5A */ lis r3, lbl_805A7580@ha
/* 8031AA4C 003166AC 38 63 75 80 */ addi r3, r3, lbl_805A7580@l
/* 8031AA50 003166B0 4B F5 4F D5 */ bl OSUnlockMutex
lbl_8031AA54:
/* 8031AA54 003166B4 7F E3 FB 78 */ mr r3, r31
/* 8031AA58 003166B8 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8031AA5C 003166BC 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8031AA60 003166C0 7C 08 03 A6 */ mtlr r0
/* 8031AA64 003166C4 38 21 00 10 */ addi r1, r1, 0x10
/* 8031AA68 003166C8 4E 80 00 20 */ blr
|