summaryrefslogtreecommitdiff
path: root/asm/SDK/ARC/arc.s
blob: 8a7a0f121ae64ef1039277566c2c55a4416ab682 (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
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
.include "macros.inc"

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

.global ARCInitHandle
ARCInitHandle:
/* 802ECCF8 002E8958  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 802ECCFC 002E895C  7C 08 02 A6 */	mflr r0
/* 802ECD00 002E8960  90 01 00 14 */	stw r0, 0x14(r1)
/* 802ECD04 002E8964  93 E1 00 0C */	stw r31, 0xc(r1)
/* 802ECD08 002E8968  7C 9F 23 78 */	mr r31, r4
/* 802ECD0C 002E896C  93 C1 00 08 */	stw r30, 8(r1)
/* 802ECD10 002E8970  7C 7E 1B 78 */	mr r30, r3
/* 802ECD14 002E8974  80 A3 00 00 */	lwz r5, 0(r3)
/* 802ECD18 002E8978  3C 05 AA 56 */	addis r0, r5, 0xaa56
/* 802ECD1C 002E897C  28 00 38 2D */	cmplwi r0, 0x382d
/* 802ECD20 002E8980  41 82 00 1C */	beq lbl_802ECD3C
/* 802ECD24 002E8984  3C A0 80 44 */	lis r5, lbl_80445A80@ha
/* 802ECD28 002E8988  38 6D 8B E0 */	addi r3, r13, lbl_8063DEA0-_SDA_BASE_
/* 802ECD2C 002E898C  38 A5 5A 80 */	addi r5, r5, lbl_80445A80@l
/* 802ECD30 002E8990  38 80 00 4A */	li r4, 0x4a
/* 802ECD34 002E8994  4C C6 31 82 */	crclr 6
/* 802ECD38 002E8998  4B F7 E7 65 */	bl OSPanic
lbl_802ECD3C:
/* 802ECD3C 002E899C  93 DF 00 00 */	stw r30, 0(r31)
/* 802ECD40 002E89A0  38 00 00 00 */	li r0, 0
/* 802ECD44 002E89A4  38 60 00 01 */	li r3, 1
/* 802ECD48 002E89A8  80 9E 00 04 */	lwz r4, 4(r30)
/* 802ECD4C 002E89AC  7C DE 22 14 */	add r6, r30, r4
/* 802ECD50 002E89B0  90 DF 00 04 */	stw r6, 4(r31)
/* 802ECD54 002E89B4  80 9E 00 0C */	lwz r4, 0xc(r30)
/* 802ECD58 002E89B8  7C 9E 22 14 */	add r4, r30, r4
/* 802ECD5C 002E89BC  90 9F 00 08 */	stw r4, 8(r31)
/* 802ECD60 002E89C0  80 A6 00 08 */	lwz r5, 8(r6)
/* 802ECD64 002E89C4  1C 85 00 0C */	mulli r4, r5, 0xc
/* 802ECD68 002E89C8  90 BF 00 0C */	stw r5, 0xc(r31)
/* 802ECD6C 002E89CC  7C 86 22 14 */	add r4, r6, r4
/* 802ECD70 002E89D0  90 9F 00 10 */	stw r4, 0x10(r31)
/* 802ECD74 002E89D4  80 9E 00 08 */	lwz r4, 8(r30)
/* 802ECD78 002E89D8  90 9F 00 14 */	stw r4, 0x14(r31)
/* 802ECD7C 002E89DC  90 1F 00 18 */	stw r0, 0x18(r31)
/* 802ECD80 002E89E0  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 802ECD84 002E89E4  83 C1 00 08 */	lwz r30, 8(r1)
/* 802ECD88 002E89E8  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802ECD8C 002E89EC  7C 08 03 A6 */	mtlr r0
/* 802ECD90 002E89F0  38 21 00 10 */	addi r1, r1, 0x10
/* 802ECD94 002E89F4  4E 80 00 20 */	blr

.global ARCFastOpen
ARCFastOpen:
/* 802ECD98 002E89F8  2C 04 00 00 */	cmpwi r4, 0
/* 802ECD9C 002E89FC  80 C3 00 04 */	lwz r6, 4(r3)
/* 802ECDA0 002E8A00  41 80 00 20 */	blt lbl_802ECDC0
/* 802ECDA4 002E8A04  80 03 00 0C */	lwz r0, 0xc(r3)
/* 802ECDA8 002E8A08  7C 04 00 40 */	cmplw r4, r0
/* 802ECDAC 002E8A0C  40 80 00 14 */	bge lbl_802ECDC0
/* 802ECDB0 002E8A10  1C 84 00 0C */	mulli r4, r4, 0xc
/* 802ECDB4 002E8A14  7C 06 20 2E */	lwzx r0, r6, r4
/* 802ECDB8 002E8A18  54 00 00 0F */	rlwinm. r0, r0, 0, 0, 7
/* 802ECDBC 002E8A1C  41 82 00 0C */	beq lbl_802ECDC8
lbl_802ECDC0:
/* 802ECDC0 002E8A20  38 60 00 00 */	li r3, 0
/* 802ECDC4 002E8A24  4E 80 00 20 */	blr
lbl_802ECDC8:
/* 802ECDC8 002E8A28  90 65 00 00 */	stw r3, 0(r5)
/* 802ECDCC 002E8A2C  7C 86 22 14 */	add r4, r6, r4
/* 802ECDD0 002E8A30  38 60 00 01 */	li r3, 1
/* 802ECDD4 002E8A34  80 04 00 04 */	lwz r0, 4(r4)
/* 802ECDD8 002E8A38  90 05 00 04 */	stw r0, 4(r5)
/* 802ECDDC 002E8A3C  80 04 00 08 */	lwz r0, 8(r4)
/* 802ECDE0 002E8A40  90 05 00 08 */	stw r0, 8(r5)
/* 802ECDE4 002E8A44  4E 80 00 20 */	blr

.global ARCConvertPathToEntrynum
ARCConvertPathToEntrynum:
/* 802ECDE8 002E8A48  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 802ECDEC 002E8A4C  3C A0 80 42 */	lis r5, lbl_80422D48@ha
/* 802ECDF0 002E8A50  38 A5 2D 48 */	addi r5, r5, lbl_80422D48@l
/* 802ECDF4 002E8A54  93 E1 00 0C */	stw r31, 0xc(r1)
/* 802ECDF8 002E8A58  93 C1 00 08 */	stw r30, 8(r1)
/* 802ECDFC 002E8A5C  81 03 00 18 */	lwz r8, 0x18(r3)
/* 802ECE00 002E8A60  81 23 00 04 */	lwz r9, 4(r3)
/* 802ECE04 002E8A64  80 C5 00 38 */	lwz r6, 0x38(r5)
lbl_802ECE08:
/* 802ECE08 002E8A68  88 04 00 00 */	lbz r0, 0(r4)
/* 802ECE0C 002E8A6C  7C 00 07 75 */	extsb. r0, r0
/* 802ECE10 002E8A70  40 82 00 0C */	bne lbl_802ECE1C
/* 802ECE14 002E8A74  7D 03 43 78 */	mr r3, r8
/* 802ECE18 002E8A78  48 00 02 24 */	b lbl_802ED03C
lbl_802ECE1C:
/* 802ECE1C 002E8A7C  2C 00 00 2F */	cmpwi r0, 0x2f
/* 802ECE20 002E8A80  40 82 00 10 */	bne lbl_802ECE30
/* 802ECE24 002E8A84  39 00 00 00 */	li r8, 0
/* 802ECE28 002E8A88  38 84 00 01 */	addi r4, r4, 1
/* 802ECE2C 002E8A8C  4B FF FF DC */	b lbl_802ECE08
lbl_802ECE30:
/* 802ECE30 002E8A90  2C 00 00 2E */	cmpwi r0, 0x2e
/* 802ECE34 002E8A94  40 82 00 70 */	bne lbl_802ECEA4
/* 802ECE38 002E8A98  88 04 00 01 */	lbz r0, 1(r4)
/* 802ECE3C 002E8A9C  7C 00 07 74 */	extsb r0, r0
/* 802ECE40 002E8AA0  2C 00 00 2E */	cmpwi r0, 0x2e
/* 802ECE44 002E8AA4  40 82 00 40 */	bne lbl_802ECE84
/* 802ECE48 002E8AA8  88 04 00 02 */	lbz r0, 2(r4)
/* 802ECE4C 002E8AAC  7C 00 07 74 */	extsb r0, r0
/* 802ECE50 002E8AB0  2C 00 00 2F */	cmpwi r0, 0x2f
/* 802ECE54 002E8AB4  40 82 00 18 */	bne lbl_802ECE6C
/* 802ECE58 002E8AB8  1C 08 00 0C */	mulli r0, r8, 0xc
/* 802ECE5C 002E8ABC  38 84 00 03 */	addi r4, r4, 3
/* 802ECE60 002E8AC0  7C A9 02 14 */	add r5, r9, r0
/* 802ECE64 002E8AC4  81 05 00 04 */	lwz r8, 4(r5)
/* 802ECE68 002E8AC8  4B FF FF A0 */	b lbl_802ECE08
lbl_802ECE6C:
/* 802ECE6C 002E8ACC  2C 00 00 00 */	cmpwi r0, 0
/* 802ECE70 002E8AD0  40 82 00 34 */	bne lbl_802ECEA4
/* 802ECE74 002E8AD4  1C 08 00 0C */	mulli r0, r8, 0xc
/* 802ECE78 002E8AD8  7C 69 02 14 */	add r3, r9, r0
/* 802ECE7C 002E8ADC  80 63 00 04 */	lwz r3, 4(r3)
/* 802ECE80 002E8AE0  48 00 01 BC */	b lbl_802ED03C
lbl_802ECE84:
/* 802ECE84 002E8AE4  2C 00 00 2F */	cmpwi r0, 0x2f
/* 802ECE88 002E8AE8  40 82 00 0C */	bne lbl_802ECE94
/* 802ECE8C 002E8AEC  38 84 00 02 */	addi r4, r4, 2
/* 802ECE90 002E8AF0  4B FF FF 78 */	b lbl_802ECE08
lbl_802ECE94:
/* 802ECE94 002E8AF4  2C 00 00 00 */	cmpwi r0, 0
/* 802ECE98 002E8AF8  40 82 00 0C */	bne lbl_802ECEA4
/* 802ECE9C 002E8AFC  7D 03 43 78 */	mr r3, r8
/* 802ECEA0 002E8B00  48 00 01 9C */	b lbl_802ED03C
lbl_802ECEA4:
/* 802ECEA4 002E8B04  7C 87 23 78 */	mr r7, r4
/* 802ECEA8 002E8B08  48 00 00 08 */	b lbl_802ECEB0
lbl_802ECEAC:
/* 802ECEAC 002E8B0C  38 E7 00 01 */	addi r7, r7, 1
lbl_802ECEB0:
/* 802ECEB0 002E8B10  88 A7 00 00 */	lbz r5, 0(r7)
/* 802ECEB4 002E8B14  7C A0 07 75 */	extsb. r0, r5
/* 802ECEB8 002E8B18  41 82 00 0C */	beq lbl_802ECEC4
/* 802ECEBC 002E8B1C  2C 00 00 2F */	cmpwi r0, 0x2f
/* 802ECEC0 002E8B20  40 82 FF EC */	bne lbl_802ECEAC
lbl_802ECEC4:
/* 802ECEC4 002E8B24  1C 08 00 0C */	mulli r0, r8, 0xc
/* 802ECEC8 002E8B28  7C AB 07 74 */	extsb r11, r5
/* 802ECECC 002E8B2C  7C E4 38 50 */	subf r7, r4, r7
/* 802ECED0 002E8B30  7D 4B 00 D0 */	neg r10, r11
/* 802ECED4 002E8B34  7C A9 02 14 */	add r5, r9, r0
/* 802ECED8 002E8B38  39 08 00 01 */	addi r8, r8, 1
/* 802ECEDC 002E8B3C  7D 40 5B 78 */	or r0, r10, r11
/* 802ECEE0 002E8B40  80 A5 00 08 */	lwz r5, 8(r5)
/* 802ECEE4 002E8B44  54 00 0F FE */	srwi r0, r0, 0x1f
/* 802ECEE8 002E8B48  48 00 01 28 */	b lbl_802ED010
lbl_802ECEEC:
/* 802ECEEC 002E8B4C  1D 48 00 0C */	mulli r10, r8, 0xc
/* 802ECEF0 002E8B50  7D 89 52 14 */	add r12, r9, r10
lbl_802ECEF4:
/* 802ECEF4 002E8B54  83 EC 00 00 */	lwz r31, 0(r12)
/* 802ECEF8 002E8B58  57 EA 00 0F */	rlwinm. r10, r31, 0, 0, 7
/* 802ECEFC 002E8B5C  40 82 00 0C */	bne lbl_802ECF08
/* 802ECF00 002E8B60  2C 00 00 01 */	cmpwi r0, 1
/* 802ECF04 002E8B64  41 82 00 EC */	beq lbl_802ECFF0
lbl_802ECF08:
/* 802ECF08 002E8B68  81 63 00 10 */	lwz r11, 0x10(r3)
/* 802ECF0C 002E8B6C  57 EA 02 3E */	clrlwi r10, r31, 8
/* 802ECF10 002E8B70  7F CB 52 14 */	add r30, r11, r10
/* 802ECF14 002E8B74  7D 4B 50 AE */	lbzx r10, r11, r10
/* 802ECF18 002E8B78  2C 0A 00 2E */	cmpwi r10, 0x2e
/* 802ECF1C 002E8B7C  40 82 00 1C */	bne lbl_802ECF38
/* 802ECF20 002E8B80  89 5E 00 01 */	lbz r10, 1(r30)
/* 802ECF24 002E8B84  7D 4A 07 75 */	extsb. r10, r10
/* 802ECF28 002E8B88  40 82 00 10 */	bne lbl_802ECF38
/* 802ECF2C 002E8B8C  39 8C 00 0C */	addi r12, r12, 0xc
/* 802ECF30 002E8B90  39 08 00 01 */	addi r8, r8, 1
/* 802ECF34 002E8B94  4B FF FF C0 */	b lbl_802ECEF4
lbl_802ECF38:
/* 802ECF38 002E8B98  7C 8C 23 78 */	mr r12, r4
/* 802ECF3C 002E8B9C  48 00 00 7C */	b lbl_802ECFB8
lbl_802ECF40:
/* 802ECF40 002E8BA0  89 7E 00 00 */	lbz r11, 0(r30)
/* 802ECF44 002E8BA4  39 40 00 00 */	li r10, 0
/* 802ECF48 002E8BA8  3B DE 00 01 */	addi r30, r30, 1
/* 802ECF4C 002E8BAC  7D 7F 07 75 */	extsb. r31, r11
/* 802ECF50 002E8BB0  41 80 00 0C */	blt lbl_802ECF5C
/* 802ECF54 002E8BB4  2C 1F 01 00 */	cmpwi r31, 0x100
/* 802ECF58 002E8BB8  41 80 00 08 */	blt lbl_802ECF60
lbl_802ECF5C:
/* 802ECF5C 002E8BBC  39 40 00 01 */	li r10, 1
lbl_802ECF60:
/* 802ECF60 002E8BC0  2C 0A 00 00 */	cmpwi r10, 0
/* 802ECF64 002E8BC4  41 82 00 08 */	beq lbl_802ECF6C
/* 802ECF68 002E8BC8  48 00 00 0C */	b lbl_802ECF74
lbl_802ECF6C:
/* 802ECF6C 002E8BCC  81 46 00 10 */	lwz r10, 0x10(r6)
/* 802ECF70 002E8BD0  7F EA F8 AE */	lbzx r31, r10, r31
lbl_802ECF74:
/* 802ECF74 002E8BD4  89 6C 00 00 */	lbz r11, 0(r12)
/* 802ECF78 002E8BD8  39 40 00 00 */	li r10, 0
/* 802ECF7C 002E8BDC  39 8C 00 01 */	addi r12, r12, 1
/* 802ECF80 002E8BE0  7D 6B 07 75 */	extsb. r11, r11
/* 802ECF84 002E8BE4  41 80 00 0C */	blt lbl_802ECF90
/* 802ECF88 002E8BE8  2C 0B 01 00 */	cmpwi r11, 0x100
/* 802ECF8C 002E8BEC  41 80 00 08 */	blt lbl_802ECF94
lbl_802ECF90:
/* 802ECF90 002E8BF0  39 40 00 01 */	li r10, 1
lbl_802ECF94:
/* 802ECF94 002E8BF4  2C 0A 00 00 */	cmpwi r10, 0
/* 802ECF98 002E8BF8  41 82 00 08 */	beq lbl_802ECFA0
/* 802ECF9C 002E8BFC  48 00 00 0C */	b lbl_802ECFA8
lbl_802ECFA0:
/* 802ECFA0 002E8C00  81 46 00 10 */	lwz r10, 0x10(r6)
/* 802ECFA4 002E8C04  7D 6A 58 AE */	lbzx r11, r10, r11
lbl_802ECFA8:
/* 802ECFA8 002E8C08  7C 0B F8 00 */	cmpw r11, r31
/* 802ECFAC 002E8C0C  41 82 00 0C */	beq lbl_802ECFB8
/* 802ECFB0 002E8C10  39 40 00 00 */	li r10, 0
/* 802ECFB4 002E8C14  48 00 00 34 */	b lbl_802ECFE8
lbl_802ECFB8:
/* 802ECFB8 002E8C18  89 5E 00 00 */	lbz r10, 0(r30)
/* 802ECFBC 002E8C1C  7D 4A 07 75 */	extsb. r10, r10
/* 802ECFC0 002E8C20  40 82 FF 80 */	bne lbl_802ECF40
/* 802ECFC4 002E8C24  89 4C 00 00 */	lbz r10, 0(r12)
/* 802ECFC8 002E8C28  7D 4A 07 74 */	extsb r10, r10
/* 802ECFCC 002E8C2C  2C 0A 00 2F */	cmpwi r10, 0x2f
/* 802ECFD0 002E8C30  41 82 00 0C */	beq lbl_802ECFDC
/* 802ECFD4 002E8C34  2C 0A 00 00 */	cmpwi r10, 0
/* 802ECFD8 002E8C38  40 82 00 0C */	bne lbl_802ECFE4
lbl_802ECFDC:
/* 802ECFDC 002E8C3C  39 40 00 01 */	li r10, 1
/* 802ECFE0 002E8C40  48 00 00 08 */	b lbl_802ECFE8
lbl_802ECFE4:
/* 802ECFE4 002E8C44  39 40 00 00 */	li r10, 0
lbl_802ECFE8:
/* 802ECFE8 002E8C48  2C 0A 00 01 */	cmpwi r10, 1
/* 802ECFEC 002E8C4C  41 82 00 34 */	beq lbl_802ED020
lbl_802ECFF0:
/* 802ECFF0 002E8C50  1D 48 00 0C */	mulli r10, r8, 0xc
/* 802ECFF4 002E8C54  7D 69 52 14 */	add r11, r9, r10
/* 802ECFF8 002E8C58  7D 49 50 2E */	lwzx r10, r9, r10
/* 802ECFFC 002E8C5C  55 4A 00 0F */	rlwinm. r10, r10, 0, 0, 7
/* 802ED000 002E8C60  41 82 00 0C */	beq lbl_802ED00C
/* 802ED004 002E8C64  81 0B 00 08 */	lwz r8, 8(r11)
/* 802ED008 002E8C68  48 00 00 08 */	b lbl_802ED010
lbl_802ED00C:
/* 802ED00C 002E8C6C  39 08 00 01 */	addi r8, r8, 1
lbl_802ED010:
/* 802ED010 002E8C70  7C 08 28 40 */	cmplw r8, r5
/* 802ED014 002E8C74  41 80 FE D8 */	blt lbl_802ECEEC
/* 802ED018 002E8C78  38 60 FF FF */	li r3, -1
/* 802ED01C 002E8C7C  48 00 00 20 */	b lbl_802ED03C
lbl_802ED020:
/* 802ED020 002E8C80  2C 00 00 00 */	cmpwi r0, 0
/* 802ED024 002E8C84  40 82 00 0C */	bne lbl_802ED030
/* 802ED028 002E8C88  7D 03 43 78 */	mr r3, r8
/* 802ED02C 002E8C8C  48 00 00 10 */	b lbl_802ED03C
lbl_802ED030:
/* 802ED030 002E8C90  7C 87 22 14 */	add r4, r7, r4
/* 802ED034 002E8C94  38 84 00 01 */	addi r4, r4, 1
/* 802ED038 002E8C98  4B FF FD D0 */	b lbl_802ECE08
lbl_802ED03C:
/* 802ED03C 002E8C9C  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 802ED040 002E8CA0  83 C1 00 08 */	lwz r30, 8(r1)
/* 802ED044 002E8CA4  38 21 00 10 */	addi r1, r1, 0x10
/* 802ED048 002E8CA8  4E 80 00 20 */	blr

.global ARCGetStartAddrInMem
ARCGetStartAddrInMem:
/* 802ED04C 002E8CAC  80 83 00 00 */	lwz r4, 0(r3)
/* 802ED050 002E8CB0  80 03 00 04 */	lwz r0, 4(r3)
/* 802ED054 002E8CB4  80 64 00 00 */	lwz r3, 0(r4)
/* 802ED058 002E8CB8  7C 63 02 14 */	add r3, r3, r0
/* 802ED05C 002E8CBC  4E 80 00 20 */	blr

.global ARCGetLength
ARCGetLength:
/* 802ED060 002E8CC0  80 63 00 08 */	lwz r3, 8(r3)
/* 802ED064 002E8CC4  4E 80 00 20 */	blr

.global ARCClose
ARCClose:
/* 802ED068 002E8CC8  38 60 00 01 */	li r3, 1
/* 802ED06C 002E8CCC  4E 80 00 20 */	blr

.global ARCChangeDir
ARCChangeDir:
/* 802ED070 002E8CD0  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 802ED074 002E8CD4  7C 08 02 A6 */	mflr r0
/* 802ED078 002E8CD8  90 01 00 14 */	stw r0, 0x14(r1)
/* 802ED07C 002E8CDC  93 E1 00 0C */	stw r31, 0xc(r1)
/* 802ED080 002E8CE0  7C 7F 1B 78 */	mr r31, r3
/* 802ED084 002E8CE4  4B FF FD 65 */	bl ARCConvertPathToEntrynum
/* 802ED088 002E8CE8  2C 03 00 00 */	cmpwi r3, 0
/* 802ED08C 002E8CEC  80 9F 00 04 */	lwz r4, 4(r31)
/* 802ED090 002E8CF0  41 80 00 14 */	blt lbl_802ED0A4
/* 802ED094 002E8CF4  1C 03 00 0C */	mulli r0, r3, 0xc
/* 802ED098 002E8CF8  7C 04 00 2E */	lwzx r0, r4, r0
/* 802ED09C 002E8CFC  54 00 00 0F */	rlwinm. r0, r0, 0, 0, 7
/* 802ED0A0 002E8D00  40 82 00 0C */	bne lbl_802ED0AC
lbl_802ED0A4:
/* 802ED0A4 002E8D04  38 60 00 00 */	li r3, 0
/* 802ED0A8 002E8D08  48 00 00 0C */	b lbl_802ED0B4
lbl_802ED0AC:
/* 802ED0AC 002E8D0C  90 7F 00 18 */	stw r3, 0x18(r31)
/* 802ED0B0 002E8D10  38 60 00 01 */	li r3, 1
lbl_802ED0B4:
/* 802ED0B4 002E8D14  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802ED0B8 002E8D18  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 802ED0BC 002E8D1C  7C 08 03 A6 */	mtlr r0
/* 802ED0C0 002E8D20  38 21 00 10 */	addi r1, r1, 0x10
/* 802ED0C4 002E8D24  4E 80 00 20 */	blr

.global ARCOpenDir
ARCOpenDir:
/* 802ED0C8 002E8D28  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 802ED0CC 002E8D2C  7C 08 02 A6 */	mflr r0
/* 802ED0D0 002E8D30  90 01 00 14 */	stw r0, 0x14(r1)
/* 802ED0D4 002E8D34  93 E1 00 0C */	stw r31, 0xc(r1)
/* 802ED0D8 002E8D38  7C BF 2B 78 */	mr r31, r5
/* 802ED0DC 002E8D3C  93 C1 00 08 */	stw r30, 8(r1)
/* 802ED0E0 002E8D40  7C 7E 1B 78 */	mr r30, r3
/* 802ED0E4 002E8D44  4B FF FD 05 */	bl ARCConvertPathToEntrynum
/* 802ED0E8 002E8D48  2C 03 00 00 */	cmpwi r3, 0
/* 802ED0EC 002E8D4C  80 BE 00 04 */	lwz r5, 4(r30)
/* 802ED0F0 002E8D50  41 80 00 14 */	blt lbl_802ED104
/* 802ED0F4 002E8D54  1C 83 00 0C */	mulli r4, r3, 0xc
/* 802ED0F8 002E8D58  7C 05 20 2E */	lwzx r0, r5, r4
/* 802ED0FC 002E8D5C  54 00 00 0F */	rlwinm. r0, r0, 0, 0, 7
/* 802ED100 002E8D60  40 82 00 0C */	bne lbl_802ED10C
lbl_802ED104:
/* 802ED104 002E8D64  38 60 00 00 */	li r3, 0
/* 802ED108 002E8D68  48 00 00 24 */	b lbl_802ED12C
lbl_802ED10C:
/* 802ED10C 002E8D6C  38 03 00 01 */	addi r0, r3, 1
/* 802ED110 002E8D70  90 7F 00 04 */	stw r3, 4(r31)
/* 802ED114 002E8D74  7C 85 22 14 */	add r4, r5, r4
/* 802ED118 002E8D78  38 60 00 01 */	li r3, 1
/* 802ED11C 002E8D7C  93 DF 00 00 */	stw r30, 0(r31)
/* 802ED120 002E8D80  90 1F 00 08 */	stw r0, 8(r31)
/* 802ED124 002E8D84  80 04 00 08 */	lwz r0, 8(r4)
/* 802ED128 002E8D88  90 1F 00 0C */	stw r0, 0xc(r31)
lbl_802ED12C:
/* 802ED12C 002E8D8C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802ED130 002E8D90  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 802ED134 002E8D94  83 C1 00 08 */	lwz r30, 8(r1)
/* 802ED138 002E8D98  7C 08 03 A6 */	mtlr r0
/* 802ED13C 002E8D9C  38 21 00 10 */	addi r1, r1, 0x10
/* 802ED140 002E8DA0  4E 80 00 20 */	blr

.global ARCReadDir
ARCReadDir:
/* 802ED144 002E8DA4  80 E3 00 08 */	lwz r7, 8(r3)
/* 802ED148 002E8DA8  81 23 00 00 */	lwz r9, 0(r3)
/* 802ED14C 002E8DAC  1C 07 00 0C */	mulli r0, r7, 0xc
/* 802ED150 002E8DB0  81 09 00 04 */	lwz r8, 4(r9)
/* 802ED154 002E8DB4  7C C8 02 14 */	add r6, r8, r0
lbl_802ED158:
/* 802ED158 002E8DB8  80 03 00 04 */	lwz r0, 4(r3)
/* 802ED15C 002E8DBC  7C 07 00 40 */	cmplw r7, r0
/* 802ED160 002E8DC0  40 81 00 10 */	ble lbl_802ED170
/* 802ED164 002E8DC4  80 03 00 0C */	lwz r0, 0xc(r3)
/* 802ED168 002E8DC8  7C 00 38 40 */	cmplw r0, r7
/* 802ED16C 002E8DCC  41 81 00 0C */	bgt lbl_802ED178
lbl_802ED170:
/* 802ED170 002E8DD0  38 60 00 00 */	li r3, 0
/* 802ED174 002E8DD4  4E 80 00 20 */	blr
lbl_802ED178:
/* 802ED178 002E8DD8  91 24 00 00 */	stw r9, 0(r4)
/* 802ED17C 002E8DDC  90 E4 00 04 */	stw r7, 4(r4)
/* 802ED180 002E8DE0  80 06 00 00 */	lwz r0, 0(r6)
/* 802ED184 002E8DE4  54 05 00 0E */	rlwinm r5, r0, 0, 0, 7
/* 802ED188 002E8DE8  7C 05 00 D0 */	neg r0, r5
/* 802ED18C 002E8DEC  7C 00 2B 78 */	or r0, r0, r5
/* 802ED190 002E8DF0  54 00 0F FE */	srwi r0, r0, 0x1f
/* 802ED194 002E8DF4  90 04 00 08 */	stw r0, 8(r4)
/* 802ED198 002E8DF8  80 06 00 00 */	lwz r0, 0(r6)
/* 802ED19C 002E8DFC  80 A9 00 10 */	lwz r5, 0x10(r9)
/* 802ED1A0 002E8E00  54 00 02 3E */	clrlwi r0, r0, 8
/* 802ED1A4 002E8E04  7C A5 02 14 */	add r5, r5, r0
/* 802ED1A8 002E8E08  90 A4 00 0C */	stw r5, 0xc(r4)
/* 802ED1AC 002E8E0C  88 05 00 00 */	lbz r0, 0(r5)
/* 802ED1B0 002E8E10  2C 00 00 2E */	cmpwi r0, 0x2e
/* 802ED1B4 002E8E14  40 82 00 1C */	bne lbl_802ED1D0
/* 802ED1B8 002E8E18  88 05 00 01 */	lbz r0, 1(r5)
/* 802ED1BC 002E8E1C  7C 00 07 75 */	extsb. r0, r0
/* 802ED1C0 002E8E20  40 82 00 10 */	bne lbl_802ED1D0
/* 802ED1C4 002E8E24  38 C6 00 0C */	addi r6, r6, 0xc
/* 802ED1C8 002E8E28  38 E7 00 01 */	addi r7, r7, 1
/* 802ED1CC 002E8E2C  4B FF FF 8C */	b lbl_802ED158
lbl_802ED1D0:
/* 802ED1D0 002E8E30  1C 87 00 0C */	mulli r4, r7, 0xc
/* 802ED1D4 002E8E34  7C 08 20 2E */	lwzx r0, r8, r4
/* 802ED1D8 002E8E38  54 00 00 0F */	rlwinm. r0, r0, 0, 0, 7
/* 802ED1DC 002E8E3C  41 82 00 10 */	beq lbl_802ED1EC
/* 802ED1E0 002E8E40  7C 88 22 14 */	add r4, r8, r4
/* 802ED1E4 002E8E44  80 04 00 08 */	lwz r0, 8(r4)
/* 802ED1E8 002E8E48  48 00 00 08 */	b lbl_802ED1F0
lbl_802ED1EC:
/* 802ED1EC 002E8E4C  38 07 00 01 */	addi r0, r7, 1
lbl_802ED1F0:
/* 802ED1F0 002E8E50  90 03 00 08 */	stw r0, 8(r3)
/* 802ED1F4 002E8E54  38 60 00 01 */	li r3, 1
/* 802ED1F8 002E8E58  4E 80 00 20 */	blr

.global ARCCloseDir
ARCCloseDir:
/* 802ED1FC 002E8E5C  38 60 00 01 */	li r3, 1
/* 802ED200 002E8E60  4E 80 00 20 */	blr