summaryrefslogtreecommitdiff
path: root/asm/SDK/VF/pf_cluster.s
blob: 8719855e387d2e7538ef01368ba6c801a280cb76 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
.include "macros.inc"

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

.global VFiPFCLUSTER_UpdateLastAccessCluster
VFiPFCLUSTER_UpdateLastAccessCluster:
/* 8030AD80 003069E0  80 C3 00 1C */	lwz r6, 0x1c(r3)
/* 8030AD84 003069E4  2C 06 00 00 */	cmpwi r6, 0
/* 8030AD88 003069E8  40 82 00 1C */	bne lbl_8030ADA4
/* 8030AD8C 003069EC  80 83 00 08 */	lwz r4, 8(r3)
/* 8030AD90 003069F0  38 00 00 00 */	li r0, 0
/* 8030AD94 003069F4  90 04 00 1C */	stw r0, 0x1c(r4)
/* 8030AD98 003069F8  80 63 00 08 */	lwz r3, 8(r3)
/* 8030AD9C 003069FC  90 03 00 18 */	stw r0, 0x18(r3)
/* 8030ADA0 00306A00  4E 80 00 20 */	blr
lbl_8030ADA4:
/* 8030ADA4 00306A04  2C 03 00 00 */	cmpwi r3, 0
/* 8030ADA8 00306A08  40 82 00 0C */	bne lbl_8030ADB4
/* 8030ADAC 00306A0C  38 E0 00 00 */	li r7, 0
/* 8030ADB0 00306A10  48 00 00 0C */	b lbl_8030ADBC
lbl_8030ADB4:
/* 8030ADB4 00306A14  80 A3 00 08 */	lwz r5, 8(r3)
/* 8030ADB8 00306A18  80 E5 02 68 */	lwz r7, 0x268(r5)
lbl_8030ADBC:
/* 8030ADBC 00306A1C  A0 A7 00 00 */	lhz r5, 0(r7)
/* 8030ADC0 00306A20  38 05 FF FF */	addi r0, r5, -1
/* 8030ADC4 00306A24  7C C0 00 39 */	and. r0, r6, r0
/* 8030ADC8 00306A28  40 82 00 58 */	bne lbl_8030AE20
/* 8030ADCC 00306A2C  88 A7 00 06 */	lbz r5, 6(r7)
/* 8030ADD0 00306A30  80 C3 00 24 */	lwz r6, 0x24(r3)
/* 8030ADD4 00306A34  38 05 FF FF */	addi r0, r5, -1
/* 8030ADD8 00306A38  7C C0 00 39 */	and. r0, r6, r0
/* 8030ADDC 00306A3C  40 82 00 44 */	bne lbl_8030AE20
/* 8030ADE0 00306A40  2C 06 00 00 */	cmpwi r6, 0
/* 8030ADE4 00306A44  4D 82 00 20 */	beqlr
/* 8030ADE8 00306A48  88 07 00 21 */	lbz r0, 0x21(r7)
/* 8030ADEC 00306A4C  38 C6 FF FF */	addi r6, r6, -1
/* 8030ADF0 00306A50  80 A3 00 08 */	lwz r5, 8(r3)
/* 8030ADF4 00306A54  38 84 FF FF */	addi r4, r4, -1
/* 8030ADF8 00306A58  7C C0 04 30 */	srw r0, r6, r0
/* 8030ADFC 00306A5C  90 05 00 18 */	stw r0, 0x18(r5)
/* 8030AE00 00306A60  80 A7 00 30 */	lwz r5, 0x30(r7)
/* 8030AE04 00306A64  88 07 00 21 */	lbz r0, 0x21(r7)
/* 8030AE08 00306A68  7C 85 20 50 */	subf r4, r5, r4
/* 8030AE0C 00306A6C  80 63 00 08 */	lwz r3, 8(r3)
/* 8030AE10 00306A70  7C 84 04 30 */	srw r4, r4, r0
/* 8030AE14 00306A74  38 04 00 02 */	addi r0, r4, 2
/* 8030AE18 00306A78  90 03 00 1C */	stw r0, 0x1c(r3)
/* 8030AE1C 00306A7C  4E 80 00 20 */	blr
lbl_8030AE20:
/* 8030AE20 00306A80  80 C3 00 24 */	lwz r6, 0x24(r3)
/* 8030AE24 00306A84  88 07 00 21 */	lbz r0, 0x21(r7)
/* 8030AE28 00306A88  80 A3 00 08 */	lwz r5, 8(r3)
/* 8030AE2C 00306A8C  7C C0 04 30 */	srw r0, r6, r0
/* 8030AE30 00306A90  90 05 00 18 */	stw r0, 0x18(r5)
/* 8030AE34 00306A94  80 A7 00 30 */	lwz r5, 0x30(r7)
/* 8030AE38 00306A98  88 07 00 21 */	lbz r0, 0x21(r7)
/* 8030AE3C 00306A9C  7C 85 20 50 */	subf r4, r5, r4
/* 8030AE40 00306AA0  80 63 00 08 */	lwz r3, 8(r3)
/* 8030AE44 00306AA4  7C 84 04 30 */	srw r4, r4, r0
/* 8030AE48 00306AA8  38 04 00 02 */	addi r0, r4, 2
/* 8030AE4C 00306AAC  90 03 00 1C */	stw r0, 0x1c(r3)
/* 8030AE50 00306AB0  4E 80 00 20 */	blr

.global VFiPFCLUSTER_AppendCluster
VFiPFCLUSTER_AppendCluster:
/* 8030AE54 00306AB4  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 8030AE58 00306AB8  7C 08 02 A6 */	mflr r0
/* 8030AE5C 00306ABC  90 01 00 44 */	stw r0, 0x44(r1)
/* 8030AE60 00306AC0  39 61 00 40 */	addi r11, r1, 0x40
/* 8030AE64 00306AC4  4B EB C2 C1 */	bl _savegpr_26
/* 8030AE68 00306AC8  3C E0 80 58 */	lis r7, lbl_8057F5C8@ha
/* 8030AE6C 00306ACC  38 00 00 00 */	li r0, 0
/* 8030AE70 00306AD0  38 E7 F5 C8 */	addi r7, r7, lbl_8057F5C8@l
/* 8030AE74 00306AD4  90 05 00 00 */	stw r0, 0(r5)
/* 8030AE78 00306AD8  7C 07 18 40 */	cmplw r7, r3
/* 8030AE7C 00306ADC  7C 7B 1B 78 */	mr r27, r3
/* 8030AE80 00306AE0  7C 9C 23 78 */	mr r28, r4
/* 8030AE84 00306AE4  7C BD 2B 78 */	mr r29, r5
/* 8030AE88 00306AE8  7C DE 33 78 */	mr r30, r6
/* 8030AE8C 00306AEC  41 81 00 14 */	bgt lbl_8030AEA0
/* 8030AE90 00306AF0  3C A7 00 02 */	addis r5, r7, 2
/* 8030AE94 00306AF4  38 05 7F B8 */	addi r0, r5, 0x7fb8
/* 8030AE98 00306AF8  7C 00 18 40 */	cmplw r0, r3
/* 8030AE9C 00306AFC  40 80 00 0C */	bge lbl_8030AEA8
lbl_8030AEA0:
/* 8030AEA0 00306B00  38 60 00 0A */	li r3, 0xa
/* 8030AEA4 00306B04  48 00 01 D4 */	b lbl_8030B078
lbl_8030AEA8:
/* 8030AEA8 00306B08  2F 03 00 00 */	cmpwi cr6, r3, 0
/* 8030AEAC 00306B0C  41 9A 00 34 */	beq cr6, lbl_8030AEE0
/* 8030AEB0 00306B10  83 43 00 08 */	lwz r26, 8(r3)
/* 8030AEB4 00306B14  2C 1A 00 00 */	cmpwi r26, 0
/* 8030AEB8 00306B18  41 82 00 28 */	beq lbl_8030AEE0
/* 8030AEBC 00306B1C  80 03 00 00 */	lwz r0, 0(r3)
/* 8030AEC0 00306B20  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 8030AEC4 00306B24  41 82 00 1C */	beq lbl_8030AEE0
/* 8030AEC8 00306B28  80 1A 00 00 */	lwz r0, 0(r26)
/* 8030AECC 00306B2C  54 05 07 FE */	clrlwi r5, r0, 0x1f
/* 8030AED0 00306B30  2C 85 00 00 */	cmpwi cr1, r5, 0
/* 8030AED4 00306B34  41 86 00 0C */	beq cr1, lbl_8030AEE0
/* 8030AED8 00306B38  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 8030AEDC 00306B3C  40 82 00 0C */	bne lbl_8030AEE8
lbl_8030AEE0:
/* 8030AEE0 00306B40  38 60 00 26 */	li r3, 0x26
/* 8030AEE4 00306B44  48 00 01 94 */	b lbl_8030B078
lbl_8030AEE8:
/* 8030AEE8 00306B48  41 86 00 08 */	beq cr1, lbl_8030AEF0
/* 8030AEEC 00306B4C  40 82 00 0C */	bne lbl_8030AEF8
lbl_8030AEF0:
/* 8030AEF0 00306B50  38 60 00 26 */	li r3, 0x26
/* 8030AEF4 00306B54  48 00 01 84 */	b lbl_8030B078
lbl_8030AEF8:
/* 8030AEF8 00306B58  40 9A 00 0C */	bne cr6, lbl_8030AF04
/* 8030AEFC 00306B5C  3B E0 00 00 */	li r31, 0
/* 8030AF00 00306B60  48 00 00 08 */	b lbl_8030AF08
lbl_8030AF04:
/* 8030AF04 00306B64  83 FA 02 68 */	lwz r31, 0x268(r26)
lbl_8030AF08:
/* 8030AF08 00306B68  2C 1F 00 00 */	cmpwi r31, 0
/* 8030AF0C 00306B6C  40 82 00 0C */	bne lbl_8030AF18
/* 8030AF10 00306B70  38 60 00 26 */	li r3, 0x26
/* 8030AF14 00306B74  48 00 01 64 */	b lbl_8030B078
lbl_8030AF18:
/* 8030AF18 00306B78  81 83 00 1C */	lwz r12, 0x1c(r3)
/* 8030AF1C 00306B7C  38 A3 00 0C */	addi r5, r3, 0xc
/* 8030AF20 00306B80  81 63 00 20 */	lwz r11, 0x20(r3)
/* 8030AF24 00306B84  38 00 FF FF */	li r0, -1
/* 8030AF28 00306B88  81 43 00 24 */	lwz r10, 0x24(r3)
/* 8030AF2C 00306B8C  81 23 00 28 */	lwz r9, 0x28(r3)
/* 8030AF30 00306B90  81 03 00 0C */	lwz r8, 0xc(r3)
/* 8030AF34 00306B94  80 E3 00 10 */	lwz r7, 0x10(r3)
/* 8030AF38 00306B98  80 63 00 14 */	lwz r3, 0x14(r3)
/* 8030AF3C 00306B9C  91 81 00 18 */	stw r12, 0x18(r1)
/* 8030AF40 00306BA0  90 BA 00 34 */	stw r5, 0x34(r26)
/* 8030AF44 00306BA4  90 06 00 00 */	stw r0, 0(r6)
/* 8030AF48 00306BA8  A0 1F 18 7C */	lhz r0, 0x187c(r31)
/* 8030AF4C 00306BAC  91 61 00 1C */	stw r11, 0x1c(r1)
/* 8030AF50 00306BB0  54 00 07 7B */	rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 8030AF54 00306BB4  91 41 00 20 */	stw r10, 0x20(r1)
/* 8030AF58 00306BB8  91 21 00 24 */	stw r9, 0x24(r1)
/* 8030AF5C 00306BBC  91 01 00 0C */	stw r8, 0xc(r1)
/* 8030AF60 00306BC0  90 E1 00 10 */	stw r7, 0x10(r1)
/* 8030AF64 00306BC4  90 61 00 14 */	stw r3, 0x14(r1)
/* 8030AF68 00306BC8  41 82 00 24 */	beq lbl_8030AF8C
/* 8030AF6C 00306BCC  80 7F 00 38 */	lwz r3, 0x38(r31)
/* 8030AF70 00306BD0  3C 03 00 01 */	addis r0, r3, 1
/* 8030AF74 00306BD4  28 00 FF FF */	cmplwi r0, 0xffff
/* 8030AF78 00306BD8  41 82 00 14 */	beq lbl_8030AF8C
/* 8030AF7C 00306BDC  2C 03 00 00 */	cmpwi r3, 0
/* 8030AF80 00306BE0  40 82 00 0C */	bne lbl_8030AF8C
/* 8030AF84 00306BE4  38 60 00 06 */	li r3, 6
/* 8030AF88 00306BE8  48 00 00 F0 */	b lbl_8030B078
lbl_8030AF8C:
/* 8030AF8C 00306BEC  80 BB 00 08 */	lwz r5, 8(r27)
/* 8030AF90 00306BF0  7F 63 DB 78 */	mr r3, r27
/* 8030AF94 00306BF4  80 05 02 64 */	lwz r0, 0x264(r5)
/* 8030AF98 00306BF8  7C 80 22 14 */	add r4, r0, r4
/* 8030AF9C 00306BFC  48 00 8C CD */	bl VFiPFFILE_Cursor_MoveToClusterEnd
/* 8030AFA0 00306C00  80 7B 00 1C */	lwz r3, 0x1c(r27)
/* 8030AFA4 00306C04  3C 03 00 01 */	addis r0, r3, 1
/* 8030AFA8 00306C08  28 00 FF FF */	cmplwi r0, 0xffff
/* 8030AFAC 00306C0C  40 82 00 14 */	bne lbl_8030AFC0
/* 8030AFB0 00306C10  38 00 00 00 */	li r0, 0
/* 8030AFB4 00306C14  38 60 00 25 */	li r3, 0x25
/* 8030AFB8 00306C18  90 1D 00 00 */	stw r0, 0(r29)
/* 8030AFBC 00306C1C  48 00 00 BC */	b lbl_8030B078
lbl_8030AFC0:
/* 8030AFC0 00306C20  80 7B 00 08 */	lwz r3, 8(r27)
/* 8030AFC4 00306C24  7F 85 E3 78 */	mr r5, r28
/* 8030AFC8 00306C28  80 9B 00 24 */	lwz r4, 0x24(r27)
/* 8030AFCC 00306C2C  7F C6 F3 78 */	mr r6, r30
/* 8030AFD0 00306C30  38 63 00 04 */	addi r3, r3, 4
/* 8030AFD4 00306C34  38 E1 00 08 */	addi r7, r1, 8
/* 8030AFD8 00306C38  48 00 50 69 */	bl VFiPFFAT_GetSectorAllocated
/* 8030AFDC 00306C3C  2C 03 00 00 */	cmpwi r3, 0
/* 8030AFE0 00306C40  41 82 00 40 */	beq lbl_8030B020
/* 8030AFE4 00306C44  81 21 00 18 */	lwz r9, 0x18(r1)
/* 8030AFE8 00306C48  81 01 00 1C */	lwz r8, 0x1c(r1)
/* 8030AFEC 00306C4C  80 E1 00 20 */	lwz r7, 0x20(r1)
/* 8030AFF0 00306C50  80 C1 00 24 */	lwz r6, 0x24(r1)
/* 8030AFF4 00306C54  80 A1 00 0C */	lwz r5, 0xc(r1)
/* 8030AFF8 00306C58  80 81 00 10 */	lwz r4, 0x10(r1)
/* 8030AFFC 00306C5C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8030B000 00306C60  91 3B 00 1C */	stw r9, 0x1c(r27)
/* 8030B004 00306C64  91 1B 00 20 */	stw r8, 0x20(r27)
/* 8030B008 00306C68  90 FB 00 24 */	stw r7, 0x24(r27)
/* 8030B00C 00306C6C  90 DB 00 28 */	stw r6, 0x28(r27)
/* 8030B010 00306C70  90 BB 00 0C */	stw r5, 0xc(r27)
/* 8030B014 00306C74  90 9B 00 10 */	stw r4, 0x10(r27)
/* 8030B018 00306C78  90 1B 00 14 */	stw r0, 0x14(r27)
/* 8030B01C 00306C7C  48 00 00 5C */	b lbl_8030B078
lbl_8030B020:
/* 8030B020 00306C80  81 01 00 18 */	lwz r8, 0x18(r1)
/* 8030B024 00306C84  80 E1 00 1C */	lwz r7, 0x1c(r1)
/* 8030B028 00306C88  80 C1 00 20 */	lwz r6, 0x20(r1)
/* 8030B02C 00306C8C  80 A1 00 24 */	lwz r5, 0x24(r1)
/* 8030B030 00306C90  80 81 00 0C */	lwz r4, 0xc(r1)
/* 8030B034 00306C94  80 61 00 10 */	lwz r3, 0x10(r1)
/* 8030B038 00306C98  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8030B03C 00306C9C  91 1B 00 1C */	stw r8, 0x1c(r27)
/* 8030B040 00306CA0  90 FB 00 20 */	stw r7, 0x20(r27)
/* 8030B044 00306CA4  90 DB 00 24 */	stw r6, 0x24(r27)
/* 8030B048 00306CA8  90 BB 00 28 */	stw r5, 0x28(r27)
/* 8030B04C 00306CAC  90 9B 00 0C */	stw r4, 0xc(r27)
/* 8030B050 00306CB0  90 7B 00 10 */	stw r3, 0x10(r27)
/* 8030B054 00306CB4  90 1B 00 14 */	stw r0, 0x14(r27)
/* 8030B058 00306CB8  80 61 00 08 */	lwz r3, 8(r1)
/* 8030B05C 00306CBC  88 1F 00 20 */	lbz r0, 0x20(r31)
/* 8030B060 00306CC0  7C 60 00 30 */	slw r0, r3, r0
/* 8030B064 00306CC4  7C 1C 00 40 */	cmplw r28, r0
/* 8030B068 00306CC8  40 80 00 08 */	bge lbl_8030B070
/* 8030B06C 00306CCC  7F 80 E3 78 */	mr r0, r28
lbl_8030B070:
/* 8030B070 00306CD0  90 1D 00 00 */	stw r0, 0(r29)
/* 8030B074 00306CD4  38 60 00 00 */	li r3, 0
lbl_8030B078:
/* 8030B078 00306CD8  39 61 00 40 */	addi r11, r1, 0x40
/* 8030B07C 00306CDC  4B EB C0 F5 */	bl _restgpr_26
/* 8030B080 00306CE0  80 01 00 44 */	lwz r0, 0x44(r1)
/* 8030B084 00306CE4  7C 08 03 A6 */	mtlr r0
/* 8030B088 00306CE8  38 21 00 40 */	addi r1, r1, 0x40
/* 8030B08C 00306CEC  4E 80 00 20 */	blr

.global VFiPFCLUSTER_GetAppendSize
VFiPFCLUSTER_GetAppendSize:
/* 8030B090 00306CF0  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 8030B094 00306CF4  7C 08 02 A6 */	mflr r0
/* 8030B098 00306CF8  90 01 00 34 */	stw r0, 0x34(r1)
/* 8030B09C 00306CFC  39 61 00 30 */	addi r11, r1, 0x30
/* 8030B0A0 00306D00  4B EB C0 85 */	bl _savegpr_26
/* 8030B0A4 00306D04  3C A0 80 58 */	lis r5, lbl_8057F5C8@ha
/* 8030B0A8 00306D08  38 00 00 00 */	li r0, 0
/* 8030B0AC 00306D0C  38 A5 F5 C8 */	addi r5, r5, lbl_8057F5C8@l
/* 8030B0B0 00306D10  90 04 00 00 */	stw r0, 0(r4)
/* 8030B0B4 00306D14  7C 05 18 40 */	cmplw r5, r3
/* 8030B0B8 00306D18  7C 9F 23 78 */	mr r31, r4
/* 8030B0BC 00306D1C  41 81 00 14 */	bgt lbl_8030B0D0
/* 8030B0C0 00306D20  3C 85 00 02 */	addis r4, r5, 2
/* 8030B0C4 00306D24  38 04 7F B8 */	addi r0, r4, 0x7fb8
/* 8030B0C8 00306D28  7C 00 18 40 */	cmplw r0, r3
/* 8030B0CC 00306D2C  40 80 00 0C */	bge lbl_8030B0D8
lbl_8030B0D0:
/* 8030B0D0 00306D30  38 60 00 0A */	li r3, 0xa
/* 8030B0D4 00306D34  48 00 01 4C */	b lbl_8030B220
lbl_8030B0D8:
/* 8030B0D8 00306D38  2F 03 00 00 */	cmpwi cr6, r3, 0
/* 8030B0DC 00306D3C  41 9A 00 34 */	beq cr6, lbl_8030B110
/* 8030B0E0 00306D40  81 03 00 08 */	lwz r8, 8(r3)
/* 8030B0E4 00306D44  2C 08 00 00 */	cmpwi r8, 0
/* 8030B0E8 00306D48  41 82 00 28 */	beq lbl_8030B110
/* 8030B0EC 00306D4C  80 03 00 00 */	lwz r0, 0(r3)
/* 8030B0F0 00306D50  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 8030B0F4 00306D54  41 82 00 1C */	beq lbl_8030B110
/* 8030B0F8 00306D58  80 08 00 00 */	lwz r0, 0(r8)
/* 8030B0FC 00306D5C  54 03 07 FE */	clrlwi r3, r0, 0x1f
/* 8030B100 00306D60  2C 83 00 00 */	cmpwi cr1, r3, 0
/* 8030B104 00306D64  41 86 00 0C */	beq cr1, lbl_8030B110
/* 8030B108 00306D68  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 8030B10C 00306D6C  40 82 00 0C */	bne lbl_8030B118
lbl_8030B110:
/* 8030B110 00306D70  38 60 00 26 */	li r3, 0x26
/* 8030B114 00306D74  48 00 01 0C */	b lbl_8030B220
lbl_8030B118:
/* 8030B118 00306D78  41 86 00 08 */	beq cr1, lbl_8030B120
/* 8030B11C 00306D7C  40 82 00 0C */	bne lbl_8030B128
lbl_8030B120:
/* 8030B120 00306D80  38 60 00 26 */	li r3, 0x26
/* 8030B124 00306D84  48 00 00 FC */	b lbl_8030B220
lbl_8030B128:
/* 8030B128 00306D88  40 9A 00 0C */	bne cr6, lbl_8030B134
/* 8030B12C 00306D8C  3B A0 00 00 */	li r29, 0
/* 8030B130 00306D90  48 00 00 08 */	b lbl_8030B138
lbl_8030B134:
/* 8030B134 00306D94  83 A8 02 68 */	lwz r29, 0x268(r8)
lbl_8030B138:
/* 8030B138 00306D98  2C 1D 00 00 */	cmpwi r29, 0
/* 8030B13C 00306D9C  40 82 00 0C */	bne lbl_8030B148
/* 8030B140 00306DA0  38 60 00 26 */	li r3, 0x26
/* 8030B144 00306DA4  48 00 00 DC */	b lbl_8030B220
lbl_8030B148:
/* 8030B148 00306DA8  80 88 02 70 */	lwz r4, 0x270(r8)
/* 8030B14C 00306DAC  A0 7D 00 00 */	lhz r3, 0(r29)
/* 8030B150 00306DB0  88 1D 00 21 */	lbz r0, 0x21(r29)
/* 8030B154 00306DB4  2C 04 00 00 */	cmpwi r4, 0
/* 8030B158 00306DB8  7C 7C 00 30 */	slw r28, r3, r0
/* 8030B15C 00306DBC  41 82 00 C0 */	beq lbl_8030B21C
/* 8030B160 00306DC0  80 A8 02 64 */	lwz r5, 0x264(r8)
/* 8030B164 00306DC4  80 E8 00 14 */	lwz r7, 0x14(r8)
/* 8030B168 00306DC8  7C 05 E3 96 */	divwu r0, r5, r28
/* 8030B16C 00306DCC  2C 07 00 00 */	cmpwi r7, 0
/* 8030B170 00306DD0  7C 00 E1 D6 */	mullw r0, r0, r28
/* 8030B174 00306DD4  7C C0 28 50 */	subf r6, r0, r5
/* 8030B178 00306DD8  7C 06 00 D0 */	neg r0, r6
/* 8030B17C 00306DDC  7C 03 33 78 */	or r3, r0, r6
/* 8030B180 00306DE0  7C 06 E0 50 */	subf r0, r6, r28
/* 8030B184 00306DE4  7C 63 FE 70 */	srawi r3, r3, 0x1f
/* 8030B188 00306DE8  7C 00 18 38 */	and r0, r0, r3
/* 8030B18C 00306DEC  7F 65 02 14 */	add r27, r5, r0
/* 8030B190 00306DF0  41 82 00 10 */	beq lbl_8030B1A0
/* 8030B194 00306DF4  38 07 00 01 */	addi r0, r7, 1
/* 8030B198 00306DF8  7C 00 E1 D6 */	mullw r0, r0, r28
/* 8030B19C 00306DFC  48 00 00 78 */	b lbl_8030B214
lbl_8030B1A0:
/* 8030B1A0 00306E00  2C 05 00 00 */	cmpwi r5, 0
/* 8030B1A4 00306E04  41 82 00 20 */	beq lbl_8030B1C4
/* 8030B1A8 00306E08  38 68 00 04 */	addi r3, r8, 4
/* 8030B1AC 00306E0C  38 C1 00 10 */	addi r6, r1, 0x10
/* 8030B1B0 00306E10  38 E1 00 0C */	addi r7, r1, 0xc
/* 8030B1B4 00306E14  48 00 5B F9 */	bl VFiPFFAT_TraceClustersChain
/* 8030B1B8 00306E18  2C 03 00 00 */	cmpwi r3, 0
/* 8030B1BC 00306E1C  41 82 00 0C */	beq lbl_8030B1C8
/* 8030B1C0 00306E20  48 00 00 60 */	b lbl_8030B220
lbl_8030B1C4:
/* 8030B1C4 00306E24  90 81 00 0C */	stw r4, 0xc(r1)
lbl_8030B1C8:
/* 8030B1C8 00306E28  7F A3 EB 78 */	mr r3, r29
/* 8030B1CC 00306E2C  48 00 5F 89 */	bl VFiPFFAT_GetValueOfEOC2
/* 8030B1D0 00306E30  80 81 00 0C */	lwz r4, 0xc(r1)
/* 8030B1D4 00306E34  7C 7E 1B 78 */	mr r30, r3
/* 8030B1D8 00306E38  3B 40 00 00 */	li r26, 0
/* 8030B1DC 00306E3C  48 00 00 28 */	b lbl_8030B204
lbl_8030B1E0:
/* 8030B1E0 00306E40  7F A3 EB 78 */	mr r3, r29
/* 8030B1E4 00306E44  38 A1 00 08 */	addi r5, r1, 8
/* 8030B1E8 00306E48  3B 5A 00 01 */	addi r26, r26, 1
/* 8030B1EC 00306E4C  48 00 5E 01 */	bl VFiPFFAT_ReadValueToSpecifiedCluster
/* 8030B1F0 00306E50  2C 03 00 00 */	cmpwi r3, 0
/* 8030B1F4 00306E54  41 82 00 08 */	beq lbl_8030B1FC
/* 8030B1F8 00306E58  48 00 00 28 */	b lbl_8030B220
lbl_8030B1FC:
/* 8030B1FC 00306E5C  80 81 00 08 */	lwz r4, 8(r1)
/* 8030B200 00306E60  90 81 00 0C */	stw r4, 0xc(r1)
lbl_8030B204:
/* 8030B204 00306E64  7C 04 F0 40 */	cmplw r4, r30
/* 8030B208 00306E68  40 82 FF D8 */	bne lbl_8030B1E0
/* 8030B20C 00306E6C  7C 1A E1 D6 */	mullw r0, r26, r28
/* 8030B210 00306E70  7C 1B 02 14 */	add r0, r27, r0
lbl_8030B214:
/* 8030B214 00306E74  7C 1B 00 50 */	subf r0, r27, r0
/* 8030B218 00306E78  90 1F 00 00 */	stw r0, 0(r31)
lbl_8030B21C:
/* 8030B21C 00306E7C  38 60 00 00 */	li r3, 0
lbl_8030B220:
/* 8030B220 00306E80  39 61 00 30 */	addi r11, r1, 0x30
/* 8030B224 00306E84  4B EB BF 4D */	bl _restgpr_26
/* 8030B228 00306E88  80 01 00 34 */	lwz r0, 0x34(r1)
/* 8030B22C 00306E8C  7C 08 03 A6 */	mtlr r0
/* 8030B230 00306E90  38 21 00 30 */	addi r1, r1, 0x30
/* 8030B234 00306E94  4E 80 00 20 */	blr