summaryrefslogtreecommitdiff
path: root/asm/code_801DAAE0.s
blob: 8967364e47c13ad58c1b44124481616447e92080 (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
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
445
.include "macros.inc"

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

.global func_801DAAE0
func_801DAAE0:
/* 801DAAE0 001D6740  3C 60 80 49 */	lis r3, lbl_804912B0@ha
/* 801DAAE4 001D6744  38 00 00 10 */	li r0, 0x10
/* 801DAAE8 001D6748  38 63 12 B0 */	addi r3, r3, lbl_804912B0@l
/* 801DAAEC 001D674C  38 80 00 00 */	li r4, 0
/* 801DAAF0 001D6750  7C 09 03 A6 */	mtctr r0
lbl_801DAAF4:
/* 801DAAF4 001D6754  88 03 00 00 */	lbz r0, 0(r3)
/* 801DAAF8 001D6758  2C 00 00 00 */	cmpwi r0, 0
/* 801DAAFC 001D675C  40 82 00 18 */	bne lbl_801DAB14
/* 801DAB00 001D6760  1C 04 00 0C */	mulli r0, r4, 0xc
/* 801DAB04 001D6764  3C 60 80 49 */	lis r3, lbl_804912B0@ha
/* 801DAB08 001D6768  38 63 12 B0 */	addi r3, r3, lbl_804912B0@l
/* 801DAB0C 001D676C  7C 63 02 14 */	add r3, r3, r0
/* 801DAB10 001D6770  4E 80 00 20 */	blr
lbl_801DAB14:
/* 801DAB14 001D6774  38 63 00 0C */	addi r3, r3, 0xc
/* 801DAB18 001D6778  38 84 00 01 */	addi r4, r4, 1
/* 801DAB1C 001D677C  42 00 FF D8 */	bdnz lbl_801DAAF4
/* 801DAB20 001D6780  38 60 00 00 */	li r3, 0
/* 801DAB24 001D6784  4E 80 00 20 */	blr

.global func_801DAB28
func_801DAB28:
/* 801DAB28 001D6788  88 6D A0 16 */	lbz r3, lbl_8063F2D6-_SDA_BASE_(r13)
/* 801DAB2C 001D678C  4E 80 00 20 */	blr

.global func_801DAB30
func_801DAB30:
/* 801DAB30 001D6790  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 801DAB34 001D6794  7C 08 02 A6 */	mflr r0
/* 801DAB38 001D6798  3C 60 80 49 */	lis r3, lbl_804912B0@ha
/* 801DAB3C 001D679C  38 80 00 00 */	li r4, 0
/* 801DAB40 001D67A0  90 01 00 14 */	stw r0, 0x14(r1)
/* 801DAB44 001D67A4  38 63 12 B0 */	addi r3, r3, lbl_804912B0@l
/* 801DAB48 001D67A8  38 A0 00 C0 */	li r5, 0xc0
/* 801DAB4C 001D67AC  4B E2 95 B9 */	bl memset
/* 801DAB50 001D67B0  38 60 00 00 */	li r3, 0
/* 801DAB54 001D67B4  38 00 00 01 */	li r0, 1
/* 801DAB58 001D67B8  90 6D A0 18 */	stw r3, lbl_8063F2D8-_SDA_BASE_(r13)
/* 801DAB5C 001D67BC  B0 6D A0 1C */	sth r3, lbl_8063F2DC-_SDA_BASE_(r13)
/* 801DAB60 001D67C0  98 0D A0 16 */	stb r0, lbl_8063F2D6-_SDA_BASE_(r13)
/* 801DAB64 001D67C4  98 6D A0 17 */	stb r3, lbl_8063F2D7-_SDA_BASE_(r13)
/* 801DAB68 001D67C8  80 01 00 14 */	lwz r0, 0x14(r1)
/* 801DAB6C 001D67CC  7C 08 03 A6 */	mtlr r0
/* 801DAB70 001D67D0  38 21 00 10 */	addi r1, r1, 0x10
/* 801DAB74 001D67D4  4E 80 00 20 */	blr

.global func_801DAB78
func_801DAB78:
/* 801DAB78 001D67D8  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 801DAB7C 001D67DC  7C 08 02 A6 */	mflr r0
/* 801DAB80 001D67E0  90 01 00 24 */	stw r0, 0x24(r1)
/* 801DAB84 001D67E4  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 801DAB88 001D67E8  93 C1 00 18 */	stw r30, 0x18(r1)
/* 801DAB8C 001D67EC  7C BE 2B 78 */	mr r30, r5
/* 801DAB90 001D67F0  93 A1 00 14 */	stw r29, 0x14(r1)
/* 801DAB94 001D67F4  7C 9D 23 78 */	mr r29, r4
/* 801DAB98 001D67F8  93 81 00 10 */	stw r28, 0x10(r1)
/* 801DAB9C 001D67FC  7C 7C 1B 78 */	mr r28, r3
/* 801DABA0 001D6800  4B FF FF 89 */	bl func_801DAB28
/* 801DABA4 001D6804  2C 03 00 00 */	cmpwi r3, 0
/* 801DABA8 001D6808  40 82 00 0C */	bne lbl_801DABB4
/* 801DABAC 001D680C  38 60 00 00 */	li r3, 0
/* 801DABB0 001D6810  48 00 00 3C */	b lbl_801DABEC
lbl_801DABB4:
/* 801DABB4 001D6814  4B FF FF 2D */	bl func_801DAAE0
/* 801DABB8 001D6818  2C 03 00 00 */	cmpwi r3, 0
/* 801DABBC 001D681C  7C 7F 1B 78 */	mr r31, r3
/* 801DABC0 001D6820  40 82 00 0C */	bne lbl_801DABCC
/* 801DABC4 001D6824  38 60 00 00 */	li r3, 0
/* 801DABC8 001D6828  48 00 00 24 */	b lbl_801DABEC
lbl_801DABCC:
/* 801DABCC 001D682C  7F 83 E3 78 */	mr r3, r28
/* 801DABD0 001D6830  7F A4 EB 78 */	mr r4, r29
/* 801DABD4 001D6834  7F C5 F3 78 */	mr r5, r30
/* 801DABD8 001D6838  48 0B C2 71 */	bl MEMCreateExpHeapEx
/* 801DABDC 001D683C  38 00 00 01 */	li r0, 1
/* 801DABE0 001D6840  98 1F 00 00 */	stb r0, 0(r31)
/* 801DABE4 001D6844  90 7F 00 04 */	stw r3, 4(r31)
/* 801DABE8 001D6848  93 BF 00 08 */	stw r29, 8(r31)
lbl_801DABEC:
/* 801DABEC 001D684C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 801DABF0 001D6850  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 801DABF4 001D6854  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 801DABF8 001D6858  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 801DABFC 001D685C  83 81 00 10 */	lwz r28, 0x10(r1)
/* 801DAC00 001D6860  7C 08 03 A6 */	mtlr r0
/* 801DAC04 001D6864  38 21 00 20 */	addi r1, r1, 0x20
/* 801DAC08 001D6868  4E 80 00 20 */	blr

.global func_801DAC0C
func_801DAC0C:
/* 801DAC0C 001D686C  80 6D A0 18 */	lwz r3, lbl_8063F2D8-_SDA_BASE_(r13)
/* 801DAC10 001D6870  4E 80 00 20 */	blr

.global func_801DAC14
func_801DAC14:
/* 801DAC14 001D6874  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 801DAC18 001D6878  7C 08 02 A6 */	mflr r0
/* 801DAC1C 001D687C  90 01 00 14 */	stw r0, 0x14(r1)
/* 801DAC20 001D6880  93 E1 00 0C */	stw r31, 0xc(r1)
/* 801DAC24 001D6884  7C 7F 1B 78 */	mr r31, r3
/* 801DAC28 001D6888  4B FF FF E5 */	bl func_801DAC0C
/* 801DAC2C 001D688C  93 ED A0 18 */	stw r31, lbl_8063F2D8-_SDA_BASE_(r13)
/* 801DAC30 001D6890  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 801DAC34 001D6894  80 01 00 14 */	lwz r0, 0x14(r1)
/* 801DAC38 001D6898  7C 08 03 A6 */	mtlr r0
/* 801DAC3C 001D689C  38 21 00 10 */	addi r1, r1, 0x10
/* 801DAC40 001D68A0  4E 80 00 20 */	blr

.global func_801DAC44
func_801DAC44:
/* 801DAC44 001D68A4  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 801DAC48 001D68A8  7C 08 02 A6 */	mflr r0
/* 801DAC4C 001D68AC  54 64 06 3E */	clrlwi r4, r3, 0x18
/* 801DAC50 001D68B0  90 01 00 14 */	stw r0, 0x14(r1)
/* 801DAC54 001D68B4  93 E1 00 0C */	stw r31, 0xc(r1)
/* 801DAC58 001D68B8  A3 ED A0 1C */	lhz r31, lbl_8063F2DC-_SDA_BASE_(r13)
/* 801DAC5C 001D68BC  B0 6D A0 1C */	sth r3, lbl_8063F2DC-_SDA_BASE_(r13)
/* 801DAC60 001D68C0  80 6D 96 28 */	lwz r3, lbl_8063E8E8-_SDA_BASE_(r13)
/* 801DAC64 001D68C4  48 0B C6 A9 */	bl MEMSetGroupIDForExpHeap
/* 801DAC68 001D68C8  A0 0D A0 1C */	lhz r0, lbl_8063F2DC-_SDA_BASE_(r13)
/* 801DAC6C 001D68CC  80 6D 96 2C */	lwz r3, lbl_8063E8EC-_SDA_BASE_(r13)
/* 801DAC70 001D68D0  54 04 06 3E */	clrlwi r4, r0, 0x18
/* 801DAC74 001D68D4  48 0B C6 99 */	bl MEMSetGroupIDForExpHeap
/* 801DAC78 001D68D8  7F E3 FB 78 */	mr r3, r31
/* 801DAC7C 001D68DC  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 801DAC80 001D68E0  80 01 00 14 */	lwz r0, 0x14(r1)
/* 801DAC84 001D68E4  7C 08 03 A6 */	mtlr r0
/* 801DAC88 001D68E8  38 21 00 10 */	addi r1, r1, 0x10
/* 801DAC8C 001D68EC  4E 80 00 20 */	blr

.global func_801DAC90
func_801DAC90:
/* 801DAC90 001D68F0  48 0B C6 7C */	b MEMSetGroupIDForExpHeap

.global func_801DAC94
func_801DAC94:
/* 801DAC94 001D68F4  38 A0 00 20 */	li r5, 0x20
/* 801DAC98 001D68F8  48 0B C2 90 */	b MEMAllocFromExpHeapEx
lbl_801DAC9C:
/* 801DAC9C 001D68FC  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 801DACA0 001D6900  7C 08 02 A6 */	mflr r0
/* 801DACA4 001D6904  90 01 00 24 */	stw r0, 0x24(r1)
/* 801DACA8 001D6908  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 801DACAC 001D690C  93 C1 00 18 */	stw r30, 0x18(r1)
/* 801DACB0 001D6910  7C BE 2B 78 */	mr r30, r5
/* 801DACB4 001D6914  93 A1 00 14 */	stw r29, 0x14(r1)
/* 801DACB8 001D6918  7C 9D 23 78 */	mr r29, r4
/* 801DACBC 001D691C  4B FF FF D9 */	bl func_801DAC94
/* 801DACC0 001D6920  2C 03 00 00 */	cmpwi r3, 0
/* 801DACC4 001D6924  7C 7F 1B 78 */	mr r31, r3
/* 801DACC8 001D6928  40 82 00 0C */	bne lbl_801DACD4
/* 801DACCC 001D692C  38 60 00 00 */	li r3, 0
/* 801DACD0 001D6930  48 00 00 14 */	b lbl_801DACE4
lbl_801DACD4:
/* 801DACD4 001D6934  7F C4 F3 78 */	mr r4, r30
/* 801DACD8 001D6938  7F A5 EB 78 */	mr r5, r29
/* 801DACDC 001D693C  4B E2 94 29 */	bl memset
/* 801DACE0 001D6940  7F E3 FB 78 */	mr r3, r31
lbl_801DACE4:
/* 801DACE4 001D6944  80 01 00 24 */	lwz r0, 0x24(r1)
/* 801DACE8 001D6948  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 801DACEC 001D694C  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 801DACF0 001D6950  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 801DACF4 001D6954  7C 08 03 A6 */	mtlr r0
/* 801DACF8 001D6958  38 21 00 20 */	addi r1, r1, 0x20
/* 801DACFC 001D695C  4E 80 00 20 */	blr

.global func_801DAD00
func_801DAD00:
/* 801DAD00 001D6960  38 A0 00 00 */	li r5, 0
/* 801DAD04 001D6964  4B FF FF 98 */	b lbl_801DAC9C

.global func_801DAD08
func_801DAD08:
/* 801DAD08 001D6968  48 0B C2 20 */	b MEMAllocFromExpHeapEx

.global func_801DAD0C
func_801DAD0C:
/* 801DAD0C 001D696C  2C 05 00 00 */	cmpwi r5, 0
/* 801DAD10 001D6970  40 81 00 08 */	ble lbl_801DAD18
/* 801DAD14 001D6974  7C A5 00 D0 */	neg r5, r5
lbl_801DAD18:
/* 801DAD18 001D6978  48 0B C2 10 */	b MEMAllocFromExpHeapEx

.global func_801DAD1C
func_801DAD1C:
/* 801DAD1C 001D697C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 801DAD20 001D6980  7C 08 02 A6 */	mflr r0
/* 801DAD24 001D6984  90 01 00 14 */	stw r0, 0x14(r1)
/* 801DAD28 001D6988  48 0B C2 B1 */	bl MEMResizeForMBlockExpHeap
/* 801DAD2C 001D698C  7C 03 00 D0 */	neg r0, r3
/* 801DAD30 001D6990  7C 00 1B 78 */	or r0, r0, r3
/* 801DAD34 001D6994  54 03 0F FE */	srwi r3, r0, 0x1f
/* 801DAD38 001D6998  80 01 00 14 */	lwz r0, 0x14(r1)
/* 801DAD3C 001D699C  7C 08 03 A6 */	mtlr r0
/* 801DAD40 001D69A0  38 21 00 10 */	addi r1, r1, 0x10
/* 801DAD44 001D69A4  4E 80 00 20 */	blr

.global func_801DAD48
func_801DAD48:
/* 801DAD48 001D69A8  2C 04 00 00 */	cmpwi r4, 0
/* 801DAD4C 001D69AC  4D 82 00 20 */	beqlr
/* 801DAD50 001D69B0  48 0B C4 74 */	b MEMFreeToExpHeap
/* 801DAD54 001D69B4  4E 80 00 20 */	blr

.global func_801DAD58
func_801DAD58:
/* 801DAD58 001D69B8  7C 83 23 78 */	mr r3, r4
/* 801DAD5C 001D69BC  48 0B C6 9C */	b MEMGetSizeForMBlockExpHeap

.global func_801DAD60
func_801DAD60:
/* 801DAD60 001D69C0  48 0B C5 30 */	b MEMGetTotalFreeSizeForExpHeap

.global func_801DAD64
func_801DAD64:
/* 801DAD64 001D69C4  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 801DAD68 001D69C8  7C 08 02 A6 */	mflr r0
/* 801DAD6C 001D69CC  90 01 00 14 */	stw r0, 0x14(r1)
/* 801DAD70 001D69D0  93 E1 00 0C */	stw r31, 0xc(r1)
/* 801DAD74 001D69D4  7C 7F 1B 78 */	mr r31, r3
/* 801DAD78 001D69D8  4B FF FE 95 */	bl func_801DAC0C
/* 801DAD7C 001D69DC  7F E4 FB 78 */	mr r4, r31
/* 801DAD80 001D69E0  4B FF FF 15 */	bl func_801DAC94
/* 801DAD84 001D69E4  80 01 00 14 */	lwz r0, 0x14(r1)
/* 801DAD88 001D69E8  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 801DAD8C 001D69EC  7C 08 03 A6 */	mtlr r0
/* 801DAD90 001D69F0  38 21 00 10 */	addi r1, r1, 0x10
/* 801DAD94 001D69F4  4E 80 00 20 */	blr

.global func_801DAD98
func_801DAD98:
/* 801DAD98 001D69F8  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 801DAD9C 001D69FC  7C 08 02 A6 */	mflr r0
/* 801DADA0 001D6A00  90 01 00 14 */	stw r0, 0x14(r1)
/* 801DADA4 001D6A04  93 E1 00 0C */	stw r31, 0xc(r1)
/* 801DADA8 001D6A08  7C 7F 1B 78 */	mr r31, r3
/* 801DADAC 001D6A0C  4B FF FE 61 */	bl func_801DAC0C
/* 801DADB0 001D6A10  7F E4 FB 78 */	mr r4, r31
/* 801DADB4 001D6A14  4B FF FF 4D */	bl func_801DAD00
/* 801DADB8 001D6A18  80 01 00 14 */	lwz r0, 0x14(r1)
/* 801DADBC 001D6A1C  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 801DADC0 001D6A20  7C 08 03 A6 */	mtlr r0
/* 801DADC4 001D6A24  38 21 00 10 */	addi r1, r1, 0x10
/* 801DADC8 001D6A28  4E 80 00 20 */	blr

.global func_801DADCC
func_801DADCC:
/* 801DADCC 001D6A2C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 801DADD0 001D6A30  7C 08 02 A6 */	mflr r0
/* 801DADD4 001D6A34  90 01 00 14 */	stw r0, 0x14(r1)
/* 801DADD8 001D6A38  93 E1 00 0C */	stw r31, 0xc(r1)
/* 801DADDC 001D6A3C  7C 9F 23 78 */	mr r31, r4
/* 801DADE0 001D6A40  93 C1 00 08 */	stw r30, 8(r1)
/* 801DADE4 001D6A44  7C 7E 1B 78 */	mr r30, r3
/* 801DADE8 001D6A48  4B FF FE 25 */	bl func_801DAC0C
/* 801DADEC 001D6A4C  7F C4 F3 78 */	mr r4, r30
/* 801DADF0 001D6A50  7F E5 FB 78 */	mr r5, r31
/* 801DADF4 001D6A54  4B FF FF 15 */	bl func_801DAD08
/* 801DADF8 001D6A58  80 01 00 14 */	lwz r0, 0x14(r1)
/* 801DADFC 001D6A5C  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 801DAE00 001D6A60  83 C1 00 08 */	lwz r30, 8(r1)
/* 801DAE04 001D6A64  7C 08 03 A6 */	mtlr r0
/* 801DAE08 001D6A68  38 21 00 10 */	addi r1, r1, 0x10
/* 801DAE0C 001D6A6C  4E 80 00 20 */	blr

.global func_801DAE10
func_801DAE10:
/* 801DAE10 001D6A70  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 801DAE14 001D6A74  7C 08 02 A6 */	mflr r0
/* 801DAE18 001D6A78  2C 04 00 00 */	cmpwi r4, 0
/* 801DAE1C 001D6A7C  90 01 00 14 */	stw r0, 0x14(r1)
/* 801DAE20 001D6A80  93 E1 00 0C */	stw r31, 0xc(r1)
/* 801DAE24 001D6A84  7C 9F 23 78 */	mr r31, r4
/* 801DAE28 001D6A88  93 C1 00 08 */	stw r30, 8(r1)
/* 801DAE2C 001D6A8C  7C 7E 1B 78 */	mr r30, r3
/* 801DAE30 001D6A90  40 81 00 08 */	ble lbl_801DAE38
/* 801DAE34 001D6A94  7F E4 00 D0 */	neg r31, r4
lbl_801DAE38:
/* 801DAE38 001D6A98  4B FF FD D5 */	bl func_801DAC0C
/* 801DAE3C 001D6A9C  7F C4 F3 78 */	mr r4, r30
/* 801DAE40 001D6AA0  7F E5 FB 78 */	mr r5, r31
/* 801DAE44 001D6AA4  4B FF FE C5 */	bl func_801DAD08
/* 801DAE48 001D6AA8  80 01 00 14 */	lwz r0, 0x14(r1)
/* 801DAE4C 001D6AAC  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 801DAE50 001D6AB0  83 C1 00 08 */	lwz r30, 8(r1)
/* 801DAE54 001D6AB4  7C 08 03 A6 */	mtlr r0
/* 801DAE58 001D6AB8  38 21 00 10 */	addi r1, r1, 0x10
/* 801DAE5C 001D6ABC  4E 80 00 20 */	blr

.global func_801DAE60
func_801DAE60:
/* 801DAE60 001D6AC0  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 801DAE64 001D6AC4  7C 08 02 A6 */	mflr r0
/* 801DAE68 001D6AC8  90 01 00 14 */	stw r0, 0x14(r1)
/* 801DAE6C 001D6ACC  93 E1 00 0C */	stw r31, 0xc(r1)
/* 801DAE70 001D6AD0  7C 9F 23 78 */	mr r31, r4
/* 801DAE74 001D6AD4  93 C1 00 08 */	stw r30, 8(r1)
/* 801DAE78 001D6AD8  7C 7E 1B 78 */	mr r30, r3
/* 801DAE7C 001D6ADC  4B FF FD 91 */	bl func_801DAC0C
/* 801DAE80 001D6AE0  7F C4 F3 78 */	mr r4, r30
/* 801DAE84 001D6AE4  7F E5 FB 78 */	mr r5, r31
/* 801DAE88 001D6AE8  4B FF FE 95 */	bl func_801DAD1C
/* 801DAE8C 001D6AEC  80 01 00 14 */	lwz r0, 0x14(r1)
/* 801DAE90 001D6AF0  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 801DAE94 001D6AF4  83 C1 00 08 */	lwz r30, 8(r1)
/* 801DAE98 001D6AF8  7C 08 03 A6 */	mtlr r0
/* 801DAE9C 001D6AFC  38 21 00 10 */	addi r1, r1, 0x10
/* 801DAEA0 001D6B00  4E 80 00 20 */	blr

.global func_801DAEA4
func_801DAEA4:
/* 801DAEA4 001D6B04  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 801DAEA8 001D6B08  7C 08 02 A6 */	mflr r0
/* 801DAEAC 001D6B0C  2C 03 00 00 */	cmpwi r3, 0
/* 801DAEB0 001D6B10  90 01 00 14 */	stw r0, 0x14(r1)
/* 801DAEB4 001D6B14  93 E1 00 0C */	stw r31, 0xc(r1)
/* 801DAEB8 001D6B18  7C 7F 1B 78 */	mr r31, r3
/* 801DAEBC 001D6B1C  41 82 00 10 */	beq lbl_801DAECC
/* 801DAEC0 001D6B20  4B FF FD 4D */	bl func_801DAC0C
/* 801DAEC4 001D6B24  7F E4 FB 78 */	mr r4, r31
/* 801DAEC8 001D6B28  4B FF FE 81 */	bl func_801DAD48
lbl_801DAECC:
/* 801DAECC 001D6B2C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 801DAED0 001D6B30  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 801DAED4 001D6B34  7C 08 03 A6 */	mtlr r0
/* 801DAED8 001D6B38  38 21 00 10 */	addi r1, r1, 0x10
/* 801DAEDC 001D6B3C  4E 80 00 20 */	blr

.global func_801DAEE0
func_801DAEE0:
/* 801DAEE0 001D6B40  2C 03 00 00 */	cmpwi r3, 0
/* 801DAEE4 001D6B44  40 82 00 0C */	bne lbl_801DAEF0
/* 801DAEE8 001D6B48  38 60 00 00 */	li r3, 0
/* 801DAEEC 001D6B4C  4E 80 00 20 */	blr
lbl_801DAEF0:
/* 801DAEF0 001D6B50  48 0B C5 08 */	b MEMGetSizeForMBlockExpHeap
/* 801DAEF4 001D6B54  4E 80 00 20 */	blr

.global func_801DAEF8
func_801DAEF8:
/* 801DAEF8 001D6B58  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 801DAEFC 001D6B5C  7C 08 02 A6 */	mflr r0
/* 801DAF00 001D6B60  90 01 00 14 */	stw r0, 0x14(r1)
/* 801DAF04 001D6B64  4B FF FD 09 */	bl func_801DAC0C
/* 801DAF08 001D6B68  4B FF FE 59 */	bl func_801DAD60
/* 801DAF0C 001D6B6C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 801DAF10 001D6B70  7C 08 03 A6 */	mtlr r0
/* 801DAF14 001D6B74  38 21 00 10 */	addi r1, r1, 0x10
/* 801DAF18 001D6B78  4E 80 00 20 */	blr
lbl_801DAF1C:
/* 801DAF1C 001D6B7C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 801DAF20 001D6B80  7C 08 02 A6 */	mflr r0
/* 801DAF24 001D6B84  90 01 00 14 */	stw r0, 0x14(r1)
/* 801DAF28 001D6B88  93 E1 00 0C */	stw r31, 0xc(r1)
/* 801DAF2C 001D6B8C  7C BF 2B 78 */	mr r31, r5
/* 801DAF30 001D6B90  93 C1 00 08 */	stw r30, 8(r1)
/* 801DAF34 001D6B94  7C 7E 1B 78 */	mr r30, r3
/* 801DAF38 001D6B98  48 0B C4 C9 */	bl MEMGetGroupIDForMBlockExpHeap
/* 801DAF3C 001D6B9C  A0 1F 00 04 */	lhz r0, 4(r31)
/* 801DAF40 001D6BA0  54 63 04 3E */	clrlwi r3, r3, 0x10
/* 801DAF44 001D6BA4  7C 00 18 40 */	cmplw r0, r3
/* 801DAF48 001D6BA8  40 82 00 10 */	bne lbl_801DAF58
/* 801DAF4C 001D6BAC  80 7F 00 00 */	lwz r3, 0(r31)
/* 801DAF50 001D6BB0  7F C4 F3 78 */	mr r4, r30
/* 801DAF54 001D6BB4  48 0B C2 71 */	bl MEMFreeToExpHeap
lbl_801DAF58:
/* 801DAF58 001D6BB8  80 01 00 14 */	lwz r0, 0x14(r1)
/* 801DAF5C 001D6BBC  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 801DAF60 001D6BC0  83 C1 00 08 */	lwz r30, 8(r1)
/* 801DAF64 001D6BC4  7C 08 03 A6 */	mtlr r0
/* 801DAF68 001D6BC8  38 21 00 10 */	addi r1, r1, 0x10
/* 801DAF6C 001D6BCC  4E 80 00 20 */	blr

.global func_801DAF70
func_801DAF70:
/* 801DAF70 001D6BD0  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 801DAF74 001D6BD4  7C 08 02 A6 */	mflr r0
/* 801DAF78 001D6BD8  3C C0 80 1E */	lis r6, lbl_801DAF1C@ha
/* 801DAF7C 001D6BDC  90 01 00 24 */	stw r0, 0x24(r1)
/* 801DAF80 001D6BE0  38 00 00 00 */	li r0, 0
/* 801DAF84 001D6BE4  38 A1 00 08 */	addi r5, r1, 8
/* 801DAF88 001D6BE8  B0 81 00 0C */	sth r4, 0xc(r1)
/* 801DAF8C 001D6BEC  38 86 AF 1C */	addi r4, r6, lbl_801DAF1C@l
/* 801DAF90 001D6BF0  90 61 00 08 */	stw r3, 8(r1)
/* 801DAF94 001D6BF4  90 01 00 10 */	stw r0, 0x10(r1)
/* 801DAF98 001D6BF8  48 0B C3 C5 */	bl MEMVisitAllocatedForExpHeap
/* 801DAF9C 001D6BFC  80 01 00 24 */	lwz r0, 0x24(r1)
/* 801DAFA0 001D6C00  7C 08 03 A6 */	mtlr r0
/* 801DAFA4 001D6C04  38 21 00 20 */	addi r1, r1, 0x20
/* 801DAFA8 001D6C08  4E 80 00 20 */	blr

.global func_801DAFAC
func_801DAFAC:
/* 801DAFAC 001D6C0C  54 60 06 FF */	clrlwi. r0, r3, 0x1b
/* 801DAFB0 001D6C10  40 82 00 14 */	bne lbl_801DAFC4
/* 801DAFB4 001D6C14  54 80 06 FF */	clrlwi. r0, r4, 0x1b
/* 801DAFB8 001D6C18  40 82 00 0C */	bne lbl_801DAFC4
/* 801DAFBC 001D6C1C  54 A0 06 FF */	clrlwi. r0, r5, 0x1b
/* 801DAFC0 001D6C20  41 82 00 08 */	beq lbl_801DAFC8
lbl_801DAFC4:
/* 801DAFC4 001D6C24  4B E2 90 3C */	b memcpy
lbl_801DAFC8:
/* 801DAFC8 001D6C28  54 A5 D9 7E */	srwi r5, r5, 5
/* 801DAFCC 001D6C2C  7C A9 03 A6 */	mtctr r5
/* 801DAFD0 001D6C30  38 63 FF FC */	addi r3, r3, -4
/* 801DAFD4 001D6C34  38 84 FF FC */	addi r4, r4, -4
lbl_801DAFD8:
/* 801DAFD8 001D6C38  84 04 00 04 */	lwzu r0, 4(r4)
/* 801DAFDC 001D6C3C  84 A4 00 04 */	lwzu r5, 4(r4)
/* 801DAFE0 001D6C40  84 C4 00 04 */	lwzu r6, 4(r4)
/* 801DAFE4 001D6C44  84 E4 00 04 */	lwzu r7, 4(r4)
/* 801DAFE8 001D6C48  85 04 00 04 */	lwzu r8, 4(r4)
/* 801DAFEC 001D6C4C  85 24 00 04 */	lwzu r9, 4(r4)
/* 801DAFF0 001D6C50  85 44 00 04 */	lwzu r10, 4(r4)
/* 801DAFF4 001D6C54  85 64 00 04 */	lwzu r11, 4(r4)
/* 801DAFF8 001D6C58  94 03 00 04 */	stwu r0, 4(r3)
/* 801DAFFC 001D6C5C  94 A3 00 04 */	stwu r5, 4(r3)
/* 801DB000 001D6C60  94 C3 00 04 */	stwu r6, 4(r3)
/* 801DB004 001D6C64  94 E3 00 04 */	stwu r7, 4(r3)
/* 801DB008 001D6C68  95 03 00 04 */	stwu r8, 4(r3)
/* 801DB00C 001D6C6C  95 23 00 04 */	stwu r9, 4(r3)
/* 801DB010 001D6C70  95 43 00 04 */	stwu r10, 4(r3)
/* 801DB014 001D6C74  95 63 00 04 */	stwu r11, 4(r3)
/* 801DB018 001D6C78  42 00 FF C0 */	bdnz lbl_801DAFD8
/* 801DB01C 001D6C7C  4E 80 00 20 */	blr

.global func_801DB020
func_801DB020:
/* 801DB020 001D6C80  38 A0 00 01 */	li r5, 1
/* 801DB024 001D6C84  38 6D A0 10 */	addi r3, r13, lbl_8063F2D0-_SDA_BASE_
/* 801DB028 001D6C88  38 80 00 04 */	li r4, 4
/* 801DB02C 001D6C8C  38 00 00 00 */	li r0, 0
/* 801DB030 001D6C90  98 AD A0 10 */	stb r5, lbl_8063F2D0-_SDA_BASE_(r13)
/* 801DB034 001D6C94  B0 83 00 02 */	sth r4, 2(r3)
/* 801DB038 001D6C98  98 03 00 04 */	stb r0, 4(r3)
/* 801DB03C 001D6C9C  4E 80 00 20 */	blr