summaryrefslogtreecommitdiff
path: root/asm/SDK/IPC/memory.s
blob: 69e943a9e9aeb0e75da87b020ba332c7eea5c29c (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
.include "macros.inc"

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

.global iosCreateHeap
iosCreateHeap:
/* 802A4004 0029FC64  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802A4008 0029FC68  7C 08 02 A6 */	mflr r0
/* 802A400C 0029FC6C  90 01 00 24 */	stw r0, 0x24(r1)
/* 802A4010 0029FC70  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802A4014 0029FC74  3B E0 FF FC */	li r31, -4
/* 802A4018 0029FC78  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802A401C 0029FC7C  7C 9E 23 78 */	mr r30, r4
/* 802A4020 0029FC80  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802A4024 0029FC84  7C 7D 1B 78 */	mr r29, r3
/* 802A4028 0029FC88  4B FC A7 35 */	bl OSDisableInterrupts
/* 802A402C 0029FC8C  57 A0 06 FF */	clrlwi. r0, r29, 0x1b
/* 802A4030 0029FC90  40 82 00 E0 */	bne lbl_802A4110
/* 802A4034 0029FC94  3C 80 80 53 */	lis r4, 0x8053
/* 802A4038 0029FC98  84 04 6B B0 */	lwzu r0, 0x6bb0(r4)
/* 802A403C 0029FC9C  3B E0 00 00 */	li r31, 0
/* 802A4040 0029FCA0  2C 00 00 00 */	cmpwi r0, 0
/* 802A4044 0029FCA4  41 82 00 78 */	beq lbl_802A40BC
/* 802A4048 0029FCA8  80 04 00 10 */	lwz r0, 0x10(r4)
/* 802A404C 0029FCAC  3B E0 00 01 */	li r31, 1
/* 802A4050 0029FCB0  2C 00 00 00 */	cmpwi r0, 0
/* 802A4054 0029FCB4  41 82 00 68 */	beq lbl_802A40BC
/* 802A4058 0029FCB8  80 04 00 20 */	lwz r0, 0x20(r4)
/* 802A405C 0029FCBC  3B E0 00 02 */	li r31, 2
/* 802A4060 0029FCC0  2C 00 00 00 */	cmpwi r0, 0
/* 802A4064 0029FCC4  41 82 00 58 */	beq lbl_802A40BC
/* 802A4068 0029FCC8  80 04 00 30 */	lwz r0, 0x30(r4)
/* 802A406C 0029FCCC  3B E0 00 03 */	li r31, 3
/* 802A4070 0029FCD0  2C 00 00 00 */	cmpwi r0, 0
/* 802A4074 0029FCD4  41 82 00 48 */	beq lbl_802A40BC
/* 802A4078 0029FCD8  80 04 00 40 */	lwz r0, 0x40(r4)
/* 802A407C 0029FCDC  3B E0 00 04 */	li r31, 4
/* 802A4080 0029FCE0  2C 00 00 00 */	cmpwi r0, 0
/* 802A4084 0029FCE4  41 82 00 38 */	beq lbl_802A40BC
/* 802A4088 0029FCE8  80 04 00 50 */	lwz r0, 0x50(r4)
/* 802A408C 0029FCEC  3B E0 00 05 */	li r31, 5
/* 802A4090 0029FCF0  2C 00 00 00 */	cmpwi r0, 0
/* 802A4094 0029FCF4  41 82 00 28 */	beq lbl_802A40BC
/* 802A4098 0029FCF8  80 04 00 60 */	lwz r0, 0x60(r4)
/* 802A409C 0029FCFC  3B E0 00 06 */	li r31, 6
/* 802A40A0 0029FD00  2C 00 00 00 */	cmpwi r0, 0
/* 802A40A4 0029FD04  41 82 00 18 */	beq lbl_802A40BC
/* 802A40A8 0029FD08  80 04 00 70 */	lwz r0, 0x70(r4)
/* 802A40AC 0029FD0C  3B E0 00 07 */	li r31, 7
/* 802A40B0 0029FD10  2C 00 00 00 */	cmpwi r0, 0
/* 802A40B4 0029FD14  41 82 00 08 */	beq lbl_802A40BC
/* 802A40B8 0029FD18  3B E0 00 08 */	li r31, 8
lbl_802A40BC:
/* 802A40BC 0029FD1C  2C 1F 00 08 */	cmpwi r31, 8
/* 802A40C0 0029FD20  40 82 00 0C */	bne lbl_802A40CC
/* 802A40C4 0029FD24  3B E0 FF FB */	li r31, -5
/* 802A40C8 0029FD28  48 00 00 48 */	b lbl_802A4110
lbl_802A40CC:
/* 802A40CC 0029FD2C  3C A0 80 53 */	lis r5, lbl_80536BB0@ha
/* 802A40D0 0029FD30  57 E0 20 36 */	slwi r0, r31, 4
/* 802A40D4 0029FD34  38 A5 6B B0 */	addi r5, r5, lbl_80536BB0@l
/* 802A40D8 0029FD38  3C 80 BA BE */	lis r4, 0xbabe
/* 802A40DC 0029FD3C  7C C5 02 14 */	add r6, r5, r0
/* 802A40E0 0029FD40  38 00 00 00 */	li r0, 0
/* 802A40E4 0029FD44  93 A6 00 00 */	stw r29, 0(r6)
/* 802A40E8 0029FD48  38 BE FF F0 */	addi r5, r30, -16
/* 802A40EC 0029FD4C  93 C6 00 08 */	stw r30, 8(r6)
/* 802A40F0 0029FD50  93 A6 00 0C */	stw r29, 0xc(r6)
/* 802A40F4 0029FD54  90 9D 00 00 */	stw r4, 0(r29)
/* 802A40F8 0029FD58  80 86 00 0C */	lwz r4, 0xc(r6)
/* 802A40FC 0029FD5C  90 A4 00 04 */	stw r5, 4(r4)
/* 802A4100 0029FD60  80 86 00 0C */	lwz r4, 0xc(r6)
/* 802A4104 0029FD64  90 04 00 08 */	stw r0, 8(r4)
/* 802A4108 0029FD68  80 86 00 0C */	lwz r4, 0xc(r6)
/* 802A410C 0029FD6C  90 04 00 0C */	stw r0, 0xc(r4)
lbl_802A4110:
/* 802A4110 0029FD70  4B FC A6 75 */	bl OSRestoreInterrupts
/* 802A4114 0029FD74  7F E3 FB 78 */	mr r3, r31
/* 802A4118 0029FD78  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802A411C 0029FD7C  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802A4120 0029FD80  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802A4124 0029FD84  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802A4128 0029FD88  7C 08 03 A6 */	mtlr r0
/* 802A412C 0029FD8C  38 21 00 20 */	addi r1, r1, 0x20
/* 802A4130 0029FD90  4E 80 00 20 */	blr
__iosAlloc:
/* 802A4134 0029FD94  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802A4138 0029FD98  7C 08 02 A6 */	mflr r0
/* 802A413C 0029FD9C  90 01 00 24 */	stw r0, 0x24(r1)
/* 802A4140 0029FDA0  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802A4144 0029FDA4  3B E0 00 00 */	li r31, 0
/* 802A4148 0029FDA8  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802A414C 0029FDAC  7C BE 2B 78 */	mr r30, r5
/* 802A4150 0029FDB0  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802A4154 0029FDB4  7C 9D 23 78 */	mr r29, r4
/* 802A4158 0029FDB8  93 81 00 10 */	stw r28, 0x10(r1)
/* 802A415C 0029FDBC  7C 7C 1B 78 */	mr r28, r3
/* 802A4160 0029FDC0  4B FC A5 FD */	bl OSDisableInterrupts
/* 802A4164 0029FDC4  2C 1D 00 00 */	cmpwi r29, 0
/* 802A4168 0029FDC8  41 82 01 A8 */	beq lbl_802A4310
/* 802A416C 0029FDCC  2C 1E 00 00 */	cmpwi r30, 0
/* 802A4170 0029FDD0  41 82 01 A0 */	beq lbl_802A4310
/* 802A4174 0029FDD4  38 1E FF FF */	addi r0, r30, -1
/* 802A4178 0029FDD8  7F C0 00 39 */	and. r0, r30, r0
/* 802A417C 0029FDDC  40 82 01 94 */	bne lbl_802A4310
/* 802A4180 0029FDE0  28 1E 00 20 */	cmplwi r30, 0x20
/* 802A4184 0029FDE4  40 80 00 08 */	bge lbl_802A418C
/* 802A4188 0029FDE8  3B C0 00 20 */	li r30, 0x20
lbl_802A418C:
/* 802A418C 0029FDEC  2C 1C 00 00 */	cmpwi r28, 0
/* 802A4190 0029FDF0  38 1D 00 1F */	addi r0, r29, 0x1f
/* 802A4194 0029FDF4  54 1D 00 34 */	rlwinm r29, r0, 0, 0, 0x1a
/* 802A4198 0029FDF8  41 80 00 24 */	blt lbl_802A41BC
/* 802A419C 0029FDFC  2C 1C 00 08 */	cmpwi r28, 8
/* 802A41A0 0029FE00  40 80 00 1C */	bge lbl_802A41BC
/* 802A41A4 0029FE04  3C 80 80 53 */	lis r4, lbl_80536BB0@ha
/* 802A41A8 0029FE08  57 80 20 36 */	slwi r0, r28, 4
/* 802A41AC 0029FE0C  38 84 6B B0 */	addi r4, r4, lbl_80536BB0@l
/* 802A41B0 0029FE10  7C 04 00 6E */	lwzux r0, r4, r0
/* 802A41B4 0029FE14  2C 00 00 00 */	cmpwi r0, 0
/* 802A41B8 0029FE18  40 82 00 0C */	bne lbl_802A41C4
lbl_802A41BC:
/* 802A41BC 0029FE1C  3B E0 00 00 */	li r31, 0
/* 802A41C0 0029FE20  48 00 01 50 */	b lbl_802A4310
lbl_802A41C4:
/* 802A41C4 0029FE24  81 04 00 0C */	lwz r8, 0xc(r4)
/* 802A41C8 0029FE28  38 DE FF FF */	addi r6, r30, -1
/* 802A41CC 0029FE2C  38 A0 00 00 */	li r5, 0
/* 802A41D0 0029FE30  48 00 00 58 */	b lbl_802A4228
lbl_802A41D4:
/* 802A41D4 0029FE34  80 E8 00 04 */	lwz r7, 4(r8)
/* 802A41D8 0029FE38  38 08 00 10 */	addi r0, r8, 0x10
/* 802A41DC 0029FE3C  7C 00 30 38 */	and r0, r0, r6
/* 802A41E0 0029FE40  7C 07 E8 40 */	cmplw r7, r29
/* 802A41E4 0029FE44  7C 00 F0 50 */	subf r0, r0, r30
/* 802A41E8 0029FE48  7C C0 00 38 */	and r0, r6, r0
/* 802A41EC 0029FE4C  40 82 00 14 */	bne lbl_802A4200
/* 802A41F0 0029FE50  2C 00 00 00 */	cmpwi r0, 0
/* 802A41F4 0029FE54  40 82 00 0C */	bne lbl_802A4200
/* 802A41F8 0029FE58  7D 05 43 78 */	mr r5, r8
/* 802A41FC 0029FE5C  48 00 00 34 */	b lbl_802A4230
lbl_802A4200:
/* 802A4200 0029FE60  7C 1D 02 14 */	add r0, r29, r0
/* 802A4204 0029FE64  7C 07 00 40 */	cmplw r7, r0
/* 802A4208 0029FE68  41 80 00 1C */	blt lbl_802A4224
/* 802A420C 0029FE6C  2C 05 00 00 */	cmpwi r5, 0
/* 802A4210 0029FE70  41 82 00 10 */	beq lbl_802A4220
/* 802A4214 0029FE74  80 05 00 04 */	lwz r0, 4(r5)
/* 802A4218 0029FE78  7C 07 00 40 */	cmplw r7, r0
/* 802A421C 0029FE7C  40 80 00 08 */	bge lbl_802A4224
lbl_802A4220:
/* 802A4220 0029FE80  7D 05 43 78 */	mr r5, r8
lbl_802A4224:
/* 802A4224 0029FE84  81 08 00 0C */	lwz r8, 0xc(r8)
lbl_802A4228:
/* 802A4228 0029FE88  2C 08 00 00 */	cmpwi r8, 0
/* 802A422C 0029FE8C  40 82 FF A8 */	bne lbl_802A41D4
lbl_802A4230:
/* 802A4230 0029FE90  2C 05 00 00 */	cmpwi r5, 0
/* 802A4234 0029FE94  41 82 00 DC */	beq lbl_802A4310
/* 802A4238 0029FE98  38 FE FF FF */	addi r7, r30, -1
/* 802A423C 0029FE9C  38 05 00 10 */	addi r0, r5, 0x10
/* 802A4240 0029FEA0  7C 00 38 38 */	and r0, r0, r7
/* 802A4244 0029FEA4  80 C5 00 04 */	lwz r6, 4(r5)
/* 802A4248 0029FEA8  7C 00 F0 50 */	subf r0, r0, r30
/* 802A424C 0029FEAC  7C E8 00 38 */	and r8, r7, r0
/* 802A4250 0029FEB0  7C FD 42 14 */	add r7, r29, r8
/* 802A4254 0029FEB4  38 07 00 10 */	addi r0, r7, 0x10
/* 802A4258 0029FEB8  7C 06 00 40 */	cmplw r6, r0
/* 802A425C 0029FEBC  40 81 00 48 */	ble lbl_802A42A4
/* 802A4260 0029FEC0  7C C5 EA 14 */	add r6, r5, r29
/* 802A4264 0029FEC4  3C 00 BA BE */	lis r0, 0xbabe
/* 802A4268 0029FEC8  7D 28 32 14 */	add r9, r8, r6
/* 802A426C 0029FECC  90 09 00 10 */	stw r0, 0x10(r9)
/* 802A4270 0029FED0  80 05 00 04 */	lwz r0, 4(r5)
/* 802A4274 0029FED4  7C 1D 00 50 */	subf r0, r29, r0
/* 802A4278 0029FED8  7C C8 00 50 */	subf r6, r8, r0
/* 802A427C 0029FEDC  38 06 FF F0 */	addi r0, r6, -16
/* 802A4280 0029FEE0  90 09 00 14 */	stw r0, 0x14(r9)
/* 802A4284 0029FEE4  80 C5 00 0C */	lwz r6, 0xc(r5)
/* 802A4288 0029FEE8  2C 06 00 00 */	cmpwi r6, 0
/* 802A428C 0029FEEC  90 C9 00 1C */	stw r6, 0x1c(r9)
/* 802A4290 0029FEF0  39 29 00 10 */	addi r9, r9, 0x10
/* 802A4294 0029FEF4  41 82 00 08 */	beq lbl_802A429C
/* 802A4298 0029FEF8  91 26 00 08 */	stw r9, 8(r6)
lbl_802A429C:
/* 802A429C 0029FEFC  91 25 00 0C */	stw r9, 0xc(r5)
/* 802A42A0 0029FF00  90 E5 00 04 */	stw r7, 4(r5)
lbl_802A42A4:
/* 802A42A4 0029FF04  3C C0 BA BE */	lis r6, 0xBABE0001@ha
/* 802A42A8 0029FF08  38 06 00 01 */	addi r0, r6, 0xBABE0001@l
/* 802A42AC 0029FF0C  90 05 00 00 */	stw r0, 0(r5)
/* 802A42B0 0029FF10  80 C5 00 08 */	lwz r6, 8(r5)
/* 802A42B4 0029FF14  2C 06 00 00 */	cmpwi r6, 0
/* 802A42B8 0029FF18  41 82 00 10 */	beq lbl_802A42C8
/* 802A42BC 0029FF1C  80 05 00 0C */	lwz r0, 0xc(r5)
/* 802A42C0 0029FF20  90 06 00 0C */	stw r0, 0xc(r6)
/* 802A42C4 0029FF24  48 00 00 0C */	b lbl_802A42D0
lbl_802A42C8:
/* 802A42C8 0029FF28  80 05 00 0C */	lwz r0, 0xc(r5)
/* 802A42CC 0029FF2C  90 04 00 0C */	stw r0, 0xc(r4)
lbl_802A42D0:
/* 802A42D0 0029FF30  80 85 00 0C */	lwz r4, 0xc(r5)
/* 802A42D4 0029FF34  2C 04 00 00 */	cmpwi r4, 0
/* 802A42D8 0029FF38  41 82 00 0C */	beq lbl_802A42E4
/* 802A42DC 0029FF3C  80 05 00 08 */	lwz r0, 8(r5)
/* 802A42E0 0029FF40  90 04 00 08 */	stw r0, 8(r4)
lbl_802A42E4:
/* 802A42E4 0029FF44  38 00 00 00 */	li r0, 0
/* 802A42E8 0029FF48  7F E5 42 14 */	add r31, r5, r8
/* 802A42EC 0029FF4C  90 05 00 0C */	stw r0, 0xc(r5)
/* 802A42F0 0029FF50  2C 08 00 00 */	cmpwi r8, 0
/* 802A42F4 0029FF54  3B FF 00 10 */	addi r31, r31, 0x10
/* 802A42F8 0029FF58  90 05 00 08 */	stw r0, 8(r5)
/* 802A42FC 0029FF5C  41 82 00 14 */	beq lbl_802A4310
/* 802A4300 0029FF60  3C 80 BA BE */	lis r4, 0xBABE0002@ha
/* 802A4304 0029FF64  38 04 00 02 */	addi r0, r4, 0xBABE0002@l
/* 802A4308 0029FF68  90 1F FF F0 */	stw r0, -0x10(r31)
/* 802A430C 0029FF6C  90 BF FF F8 */	stw r5, -8(r31)
lbl_802A4310:
/* 802A4310 0029FF70  4B FC A4 75 */	bl OSRestoreInterrupts
/* 802A4314 0029FF74  7F E3 FB 78 */	mr r3, r31
/* 802A4318 0029FF78  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802A431C 0029FF7C  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802A4320 0029FF80  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802A4324 0029FF84  83 81 00 10 */	lwz r28, 0x10(r1)
/* 802A4328 0029FF88  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802A432C 0029FF8C  7C 08 03 A6 */	mtlr r0
/* 802A4330 0029FF90  38 21 00 20 */	addi r1, r1, 0x20
/* 802A4334 0029FF94  4E 80 00 20 */	blr

.global iosAllocAligned
iosAllocAligned:
/* 802A4338 0029FF98  4B FF FD FC */	b __iosAlloc

.global iosFree
iosFree:
/* 802A433C 0029FF9C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802A4340 0029FFA0  7C 08 02 A6 */	mflr r0
/* 802A4344 0029FFA4  90 01 00 24 */	stw r0, 0x24(r1)
/* 802A4348 0029FFA8  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802A434C 0029FFAC  3B E0 FF FC */	li r31, -4
/* 802A4350 0029FFB0  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802A4354 0029FFB4  7C 9E 23 78 */	mr r30, r4
/* 802A4358 0029FFB8  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802A435C 0029FFBC  7C 7D 1B 78 */	mr r29, r3
/* 802A4360 0029FFC0  4B FC A3 FD */	bl OSDisableInterrupts
/* 802A4364 0029FFC4  2C 1E 00 00 */	cmpwi r30, 0
/* 802A4368 0029FFC8  41 82 01 9C */	beq lbl_802A4504
/* 802A436C 0029FFCC  2C 1D 00 00 */	cmpwi r29, 0
/* 802A4370 0029FFD0  41 80 00 28 */	blt lbl_802A4398
/* 802A4374 0029FFD4  2C 1D 00 08 */	cmpwi r29, 8
/* 802A4378 0029FFD8  40 80 00 20 */	bge lbl_802A4398
/* 802A437C 0029FFDC  3C 80 80 53 */	lis r4, lbl_80536BB0@ha
/* 802A4380 0029FFE0  57 A0 20 36 */	slwi r0, r29, 4
/* 802A4384 0029FFE4  38 84 6B B0 */	addi r4, r4, lbl_80536BB0@l
/* 802A4388 0029FFE8  7C A4 02 14 */	add r5, r4, r0
/* 802A438C 0029FFEC  7C 84 00 2E */	lwzx r4, r4, r0
/* 802A4390 0029FFF0  2C 04 00 00 */	cmpwi r4, 0
/* 802A4394 0029FFF4  40 82 00 0C */	bne lbl_802A43A0
lbl_802A4398:
/* 802A4398 0029FFF8  3B E0 FF FC */	li r31, -4
/* 802A439C 0029FFFC  48 00 01 68 */	b lbl_802A4504
lbl_802A43A0:
/* 802A43A0 002A0000  38 04 00 10 */	addi r0, r4, 0x10
/* 802A43A4 002A0004  7C 1E 00 40 */	cmplw r30, r0
/* 802A43A8 002A0008  41 80 01 5C */	blt lbl_802A4504
/* 802A43AC 002A000C  80 05 00 08 */	lwz r0, 8(r5)
/* 802A43B0 002A0010  7C 04 02 14 */	add r0, r4, r0
/* 802A43B4 002A0014  7C 1E 00 40 */	cmplw r30, r0
/* 802A43B8 002A0018  41 81 01 4C */	bgt lbl_802A4504
/* 802A43BC 002A001C  80 9E FF F0 */	lwz r4, -0x10(r30)
/* 802A43C0 002A0020  38 DE FF F0 */	addi r6, r30, -16
/* 802A43C4 002A0024  3C 04 45 42 */	addis r0, r4, 0x4542
/* 802A43C8 002A0028  28 00 00 02 */	cmplwi r0, 2
/* 802A43CC 002A002C  40 82 00 08 */	bne lbl_802A43D4
/* 802A43D0 002A0030  80 C6 00 08 */	lwz r6, 8(r6)
lbl_802A43D4:
/* 802A43D4 002A0034  80 86 00 00 */	lwz r4, 0(r6)
/* 802A43D8 002A0038  3C 04 45 42 */	addis r0, r4, 0x4542
/* 802A43DC 002A003C  28 00 00 01 */	cmplwi r0, 1
/* 802A43E0 002A0040  40 82 01 24 */	bne lbl_802A4504
/* 802A43E4 002A0044  3C 00 BA BE */	lis r0, 0xbabe
/* 802A43E8 002A0048  90 06 00 00 */	stw r0, 0(r6)
/* 802A43EC 002A004C  80 85 00 0C */	lwz r4, 0xc(r5)
/* 802A43F0 002A0050  7C 87 23 78 */	mr r7, r4
/* 802A43F4 002A0054  48 00 00 1C */	b lbl_802A4410
lbl_802A43F8:
/* 802A43F8 002A0058  80 07 00 0C */	lwz r0, 0xc(r7)
/* 802A43FC 002A005C  2C 00 00 00 */	cmpwi r0, 0
/* 802A4400 002A0060  41 82 00 18 */	beq lbl_802A4418
/* 802A4404 002A0064  7C 00 30 40 */	cmplw r0, r6
/* 802A4408 002A0068  41 81 00 10 */	bgt lbl_802A4418
/* 802A440C 002A006C  7C 07 03 78 */	mr r7, r0
lbl_802A4410:
/* 802A4410 002A0070  2C 07 00 00 */	cmpwi r7, 0
/* 802A4414 002A0074  40 82 FF E4 */	bne lbl_802A43F8
lbl_802A4418:
/* 802A4418 002A0078  2C 07 00 00 */	cmpwi r7, 0
/* 802A441C 002A007C  41 82 00 30 */	beq lbl_802A444C
/* 802A4420 002A0080  7C 06 38 40 */	cmplw r6, r7
/* 802A4424 002A0084  40 81 00 28 */	ble lbl_802A444C
/* 802A4428 002A0088  90 E6 00 08 */	stw r7, 8(r6)
/* 802A442C 002A008C  80 07 00 0C */	lwz r0, 0xc(r7)
/* 802A4430 002A0090  90 06 00 0C */	stw r0, 0xc(r6)
/* 802A4434 002A0094  90 C7 00 0C */	stw r6, 0xc(r7)
/* 802A4438 002A0098  80 86 00 0C */	lwz r4, 0xc(r6)
/* 802A443C 002A009C  2C 04 00 00 */	cmpwi r4, 0
/* 802A4440 002A00A0  41 82 00 2C */	beq lbl_802A446C
/* 802A4444 002A00A4  90 C4 00 08 */	stw r6, 8(r4)
/* 802A4448 002A00A8  48 00 00 24 */	b lbl_802A446C
lbl_802A444C:
/* 802A444C 002A00AC  90 86 00 0C */	stw r4, 0xc(r6)
/* 802A4450 002A00B0  38 00 00 00 */	li r0, 0
/* 802A4454 002A00B4  90 C5 00 0C */	stw r6, 0xc(r5)
/* 802A4458 002A00B8  90 06 00 08 */	stw r0, 8(r6)
/* 802A445C 002A00BC  80 86 00 0C */	lwz r4, 0xc(r6)
/* 802A4460 002A00C0  2C 04 00 00 */	cmpwi r4, 0
/* 802A4464 002A00C4  41 82 00 08 */	beq lbl_802A446C
/* 802A4468 002A00C8  90 C4 00 08 */	stw r6, 8(r4)
lbl_802A446C:
/* 802A446C 002A00CC  2C 06 00 00 */	cmpwi r6, 0
/* 802A4470 002A00D0  41 82 00 44 */	beq lbl_802A44B4
/* 802A4474 002A00D4  80 06 00 04 */	lwz r0, 4(r6)
/* 802A4478 002A00D8  80 A6 00 0C */	lwz r5, 0xc(r6)
/* 802A447C 002A00DC  7C 86 02 14 */	add r4, r6, r0
/* 802A4480 002A00E0  38 04 00 10 */	addi r0, r4, 0x10
/* 802A4484 002A00E4  7C 05 00 40 */	cmplw r5, r0
/* 802A4488 002A00E8  40 82 00 2C */	bne lbl_802A44B4
/* 802A448C 002A00EC  80 85 00 0C */	lwz r4, 0xc(r5)
/* 802A4490 002A00F0  2C 04 00 00 */	cmpwi r4, 0
/* 802A4494 002A00F4  90 86 00 0C */	stw r4, 0xc(r6)
/* 802A4498 002A00F8  41 82 00 08 */	beq lbl_802A44A0
/* 802A449C 002A00FC  90 C4 00 08 */	stw r6, 8(r4)
lbl_802A44A0:
/* 802A44A0 002A0100  80 86 00 04 */	lwz r4, 4(r6)
/* 802A44A4 002A0104  80 05 00 04 */	lwz r0, 4(r5)
/* 802A44A8 002A0108  7C 80 22 14 */	add r4, r0, r4
/* 802A44AC 002A010C  38 04 00 10 */	addi r0, r4, 0x10
/* 802A44B0 002A0110  90 06 00 04 */	stw r0, 4(r6)
lbl_802A44B4:
/* 802A44B4 002A0114  80 A6 00 08 */	lwz r5, 8(r6)
/* 802A44B8 002A0118  2C 05 00 00 */	cmpwi r5, 0
/* 802A44BC 002A011C  41 82 00 44 */	beq lbl_802A4500
/* 802A44C0 002A0120  80 05 00 04 */	lwz r0, 4(r5)
/* 802A44C4 002A0124  80 C5 00 0C */	lwz r6, 0xc(r5)
/* 802A44C8 002A0128  7C 85 02 14 */	add r4, r5, r0
/* 802A44CC 002A012C  38 04 00 10 */	addi r0, r4, 0x10
/* 802A44D0 002A0130  7C 06 00 40 */	cmplw r6, r0
/* 802A44D4 002A0134  40 82 00 2C */	bne lbl_802A4500
/* 802A44D8 002A0138  80 86 00 0C */	lwz r4, 0xc(r6)
/* 802A44DC 002A013C  2C 04 00 00 */	cmpwi r4, 0
/* 802A44E0 002A0140  90 85 00 0C */	stw r4, 0xc(r5)
/* 802A44E4 002A0144  41 82 00 08 */	beq lbl_802A44EC
/* 802A44E8 002A0148  90 A4 00 08 */	stw r5, 8(r4)
lbl_802A44EC:
/* 802A44EC 002A014C  80 85 00 04 */	lwz r4, 4(r5)
/* 802A44F0 002A0150  80 06 00 04 */	lwz r0, 4(r6)
/* 802A44F4 002A0154  7C 80 22 14 */	add r4, r0, r4
/* 802A44F8 002A0158  38 04 00 10 */	addi r0, r4, 0x10
/* 802A44FC 002A015C  90 05 00 04 */	stw r0, 4(r5)
lbl_802A4500:
/* 802A4500 002A0160  3B E0 00 00 */	li r31, 0
lbl_802A4504:
/* 802A4504 002A0164  4B FC A2 81 */	bl OSRestoreInterrupts
/* 802A4508 002A0168  7F E3 FB 78 */	mr r3, r31
/* 802A450C 002A016C  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802A4510 002A0170  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802A4514 002A0174  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802A4518 002A0178  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802A451C 002A017C  7C 08 03 A6 */	mtlr r0
/* 802A4520 002A0180  38 21 00 20 */	addi r1, r1, 0x20
/* 802A4524 002A0184  4E 80 00 20 */	blr