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
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global AllocUsedBlockFromFreeBlock_
AllocUsedBlockFromFreeBlock_:
/* 80296938 00292598 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8029693C 0029259C 7C 08 02 A6 */ mflr r0
/* 80296940 002925A0 90 01 00 24 */ stw r0, 0x24(r1)
/* 80296944 002925A4 39 61 00 20 */ addi r11, r1, 0x20
/* 80296948 002925A8 4B F3 07 DD */ bl _savegpr_26
/* 8029694C 002925AC 81 04 00 08 */ lwz r8, 8(r4)
/* 80296950 002925B0 7F C6 2A 14 */ add r30, r6, r5
/* 80296954 002925B4 A0 C4 00 02 */ lhz r6, 2(r4)
/* 80296958 002925B8 3B A5 FF F0 */ addi r29, r5, -16
/* 8029695C 002925BC 80 04 00 04 */ lwz r0, 4(r4)
/* 80296960 002925C0 2C 08 00 00 */ cmpwi r8, 0
/* 80296964 002925C4 54 C9 C6 7E */ rlwinm r9, r6, 0x18, 0x19, 0x1f
/* 80296968 002925C8 81 44 00 0C */ lwz r10, 0xc(r4)
/* 8029696C 002925CC 7C C4 02 14 */ add r6, r4, r0
/* 80296970 002925D0 7C BB 2B 78 */ mr r27, r5
/* 80296974 002925D4 7C 7A 1B 78 */ mr r26, r3
/* 80296978 002925D8 7C FC 3B 78 */ mr r28, r7
/* 8029697C 002925DC 7F BF EB 78 */ mr r31, r29
/* 80296980 002925E0 7C A9 20 50 */ subf r5, r9, r4
/* 80296984 002925E4 38 C6 00 10 */ addi r6, r6, 0x10
/* 80296988 002925E8 41 82 00 0C */ beq lbl_80296994
/* 8029698C 002925EC 91 48 00 0C */ stw r10, 0xc(r8)
/* 80296990 002925F0 48 00 00 08 */ b lbl_80296998
lbl_80296994:
/* 80296994 002925F4 91 43 00 00 */ stw r10, 0(r3)
lbl_80296998:
/* 80296998 002925F8 2C 0A 00 00 */ cmpwi r10, 0
/* 8029699C 002925FC 41 82 00 0C */ beq lbl_802969A8
/* 802969A0 00292600 91 0A 00 08 */ stw r8, 8(r10)
/* 802969A4 00292604 48 00 00 08 */ b lbl_802969AC
lbl_802969A8:
/* 802969A8 00292608 91 03 00 04 */ stw r8, 4(r3)
lbl_802969AC:
/* 802969AC 0029260C 7C 05 E8 50 */ subf r0, r5, r29
/* 802969B0 00292610 28 00 00 14 */ cmplwi r0, 0x14
/* 802969B4 00292614 40 80 00 0C */ bge lbl_802969C0
/* 802969B8 00292618 7C BF 2B 78 */ mr r31, r5
/* 802969BC 0029261C 48 00 00 60 */ b lbl_80296A1C
lbl_802969C0:
/* 802969C0 00292620 38 80 46 52 */ li r4, 0x4652
/* 802969C4 00292624 38 05 00 10 */ addi r0, r5, 0x10
/* 802969C8 00292628 B0 85 00 00 */ sth r4, 0(r5)
/* 802969CC 0029262C 38 80 00 00 */ li r4, 0
/* 802969D0 00292630 7C 00 E8 50 */ subf r0, r0, r29
/* 802969D4 00292634 2C 08 00 00 */ cmpwi r8, 0
/* 802969D8 00292638 B0 85 00 02 */ sth r4, 2(r5)
/* 802969DC 0029263C 90 05 00 04 */ stw r0, 4(r5)
/* 802969E0 00292640 90 85 00 0C */ stw r4, 0xc(r5)
/* 802969E4 00292644 91 05 00 08 */ stw r8, 8(r5)
/* 802969E8 00292648 41 82 00 10 */ beq lbl_802969F8
/* 802969EC 0029264C 80 88 00 0C */ lwz r4, 0xc(r8)
/* 802969F0 00292650 90 A8 00 0C */ stw r5, 0xc(r8)
/* 802969F4 00292654 48 00 00 0C */ b lbl_80296A00
lbl_802969F8:
/* 802969F8 00292658 80 83 00 00 */ lwz r4, 0(r3)
/* 802969FC 0029265C 90 A3 00 00 */ stw r5, 0(r3)
lbl_80296A00:
/* 80296A00 00292660 2C 04 00 00 */ cmpwi r4, 0
/* 80296A04 00292664 90 85 00 0C */ stw r4, 0xc(r5)
/* 80296A08 00292668 41 82 00 0C */ beq lbl_80296A14
/* 80296A0C 0029266C 90 A4 00 08 */ stw r5, 8(r4)
/* 80296A10 00292670 48 00 00 08 */ b lbl_80296A18
lbl_80296A14:
/* 80296A14 00292674 90 A3 00 04 */ stw r5, 4(r3)
lbl_80296A18:
/* 80296A18 00292678 7C A8 2B 78 */ mr r8, r5
lbl_80296A1C:
/* 80296A1C 0029267C 7C 1E 30 50 */ subf r0, r30, r6
/* 80296A20 00292680 28 00 00 14 */ cmplwi r0, 0x14
/* 80296A24 00292684 40 80 00 0C */ bge lbl_80296A30
/* 80296A28 00292688 7C DE 33 78 */ mr r30, r6
/* 80296A2C 0029268C 48 00 00 5C */ b lbl_80296A88
lbl_80296A30:
/* 80296A30 00292690 38 80 46 52 */ li r4, 0x4652
/* 80296A34 00292694 38 1E 00 10 */ addi r0, r30, 0x10
/* 80296A38 00292698 B0 9E 00 00 */ sth r4, 0(r30)
/* 80296A3C 0029269C 38 80 00 00 */ li r4, 0
/* 80296A40 002926A0 7C 00 30 50 */ subf r0, r0, r6
/* 80296A44 002926A4 2C 08 00 00 */ cmpwi r8, 0
/* 80296A48 002926A8 B0 9E 00 02 */ sth r4, 2(r30)
/* 80296A4C 002926AC 90 1E 00 04 */ stw r0, 4(r30)
/* 80296A50 002926B0 90 9E 00 0C */ stw r4, 0xc(r30)
/* 80296A54 002926B4 91 1E 00 08 */ stw r8, 8(r30)
/* 80296A58 002926B8 41 82 00 10 */ beq lbl_80296A68
/* 80296A5C 002926BC 80 88 00 0C */ lwz r4, 0xc(r8)
/* 80296A60 002926C0 93 C8 00 0C */ stw r30, 0xc(r8)
/* 80296A64 002926C4 48 00 00 0C */ b lbl_80296A70
lbl_80296A68:
/* 80296A68 002926C8 80 83 00 00 */ lwz r4, 0(r3)
/* 80296A6C 002926CC 93 C3 00 00 */ stw r30, 0(r3)
lbl_80296A70:
/* 80296A70 002926D0 2C 04 00 00 */ cmpwi r4, 0
/* 80296A74 002926D4 90 9E 00 0C */ stw r4, 0xc(r30)
/* 80296A78 002926D8 41 82 00 0C */ beq lbl_80296A84
/* 80296A7C 002926DC 93 C4 00 08 */ stw r30, 8(r4)
/* 80296A80 002926E0 48 00 00 08 */ b lbl_80296A88
lbl_80296A84:
/* 80296A84 002926E4 93 C3 00 04 */ stw r30, 4(r3)
lbl_80296A88:
/* 80296A88 002926E8 80 03 FF FC */ lwz r0, -4(r3)
/* 80296A8C 002926EC 7C BF F0 50 */ subf r5, r31, r30
/* 80296A90 002926F0 54 00 07 FF */ clrlwi. r0, r0, 0x1f
/* 80296A94 002926F4 41 82 00 10 */ beq lbl_80296AA4
/* 80296A98 002926F8 7F E3 FB 78 */ mr r3, r31
/* 80296A9C 002926FC 38 80 00 00 */ li r4, 0
/* 80296AA0 00292700 4B D6 D6 65 */ bl memset
lbl_80296AA4:
/* 80296AA4 00292704 38 A0 00 00 */ li r5, 0
/* 80296AA8 00292708 38 9D 00 10 */ addi r4, r29, 0x10
/* 80296AAC 0029270C 7C A3 2B 78 */ mr r3, r5
/* 80296AB0 00292710 38 C0 55 44 */ li r6, 0x5544
/* 80296AB4 00292714 7C 84 F0 50 */ subf r4, r4, r30
/* 80296AB8 00292718 7C 1F E8 50 */ subf r0, r31, r29
/* 80296ABC 0029271C 53 83 7C 20 */ rlwimi r3, r28, 0xf, 0x10, 0x10
/* 80296AC0 00292720 B0 DD 00 00 */ sth r6, 0(r29)
/* 80296AC4 00292724 50 03 44 6E */ rlwimi r3, r0, 8, 0x11, 0x17
/* 80296AC8 00292728 90 9D 00 04 */ stw r4, 4(r29)
/* 80296ACC 0029272C 90 BD 00 08 */ stw r5, 8(r29)
/* 80296AD0 00292730 90 BD 00 0C */ stw r5, 0xc(r29)
/* 80296AD4 00292734 B0 7D 00 02 */ sth r3, 2(r29)
/* 80296AD8 00292738 A0 1A 00 10 */ lhz r0, 0x10(r26)
/* 80296ADC 0029273C 50 03 06 3E */ rlwimi r3, r0, 0, 0x18, 0x1f
/* 80296AE0 00292740 B0 7D 00 02 */ sth r3, 2(r29)
/* 80296AE4 00292744 80 9A 00 0C */ lwz r4, 0xc(r26)
/* 80296AE8 00292748 2C 04 00 00 */ cmpwi r4, 0
/* 80296AEC 0029274C 90 9D 00 08 */ stw r4, 8(r29)
/* 80296AF0 00292750 41 82 00 10 */ beq lbl_80296B00
/* 80296AF4 00292754 80 64 00 0C */ lwz r3, 0xc(r4)
/* 80296AF8 00292758 93 A4 00 0C */ stw r29, 0xc(r4)
/* 80296AFC 0029275C 48 00 00 0C */ b lbl_80296B08
lbl_80296B00:
/* 80296B00 00292760 80 7A 00 08 */ lwz r3, 8(r26)
/* 80296B04 00292764 93 BA 00 08 */ stw r29, 8(r26)
lbl_80296B08:
/* 80296B08 00292768 2C 03 00 00 */ cmpwi r3, 0
/* 80296B0C 0029276C 90 7D 00 0C */ stw r3, 0xc(r29)
/* 80296B10 00292770 41 82 00 0C */ beq lbl_80296B1C
/* 80296B14 00292774 93 A3 00 08 */ stw r29, 8(r3)
/* 80296B18 00292778 48 00 00 08 */ b lbl_80296B20
lbl_80296B1C:
/* 80296B1C 0029277C 93 BA 00 0C */ stw r29, 0xc(r26)
lbl_80296B20:
/* 80296B20 00292780 39 61 00 20 */ addi r11, r1, 0x20
/* 80296B24 00292784 7F 63 DB 78 */ mr r3, r27
/* 80296B28 00292788 4B F3 06 49 */ bl _restgpr_26
/* 80296B2C 0029278C 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80296B30 00292790 7C 08 03 A6 */ mtlr r0
/* 80296B34 00292794 38 21 00 20 */ addi r1, r1, 0x20
/* 80296B38 00292798 4E 80 00 20 */ blr
.global AllocFromHead_
AllocFromHead_:
/* 80296B3C 0029279C 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80296B40 002927A0 7C 08 02 A6 */ mflr r0
/* 80296B44 002927A4 38 63 00 3C */ addi r3, r3, 0x3c
/* 80296B48 002927A8 7C 86 23 78 */ mr r6, r4
/* 80296B4C 002927AC 90 01 00 24 */ stw r0, 0x24(r1)
/* 80296B50 002927B0 38 05 FF FF */ addi r0, r5, -1
/* 80296B54 002927B4 7C 08 00 F8 */ nor r8, r0, r0
/* 80296B58 002927B8 39 80 00 00 */ li r12, 0
/* 80296B5C 002927BC 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 80296B60 002927C0 3B E0 FF FF */ li r31, -1
/* 80296B64 002927C4 93 C1 00 18 */ stw r30, 0x18(r1)
/* 80296B68 002927C8 3B C0 00 00 */ li r30, 0
/* 80296B6C 002927CC 93 A1 00 14 */ stw r29, 0x14(r1)
/* 80296B70 002927D0 A0 E3 00 12 */ lhz r7, 0x12(r3)
/* 80296B74 002927D4 81 63 00 00 */ lwz r11, 0(r3)
/* 80296B78 002927D8 54 E0 07 FE */ clrlwi r0, r7, 0x1f
/* 80296B7C 002927DC 7C 00 00 34 */ cntlzw r0, r0
/* 80296B80 002927E0 54 0A D9 7E */ srwi r10, r0, 5
/* 80296B84 002927E4 48 00 00 50 */ b lbl_80296BD4
lbl_80296B88:
/* 80296B88 002927E8 3B AB 00 10 */ addi r29, r11, 0x10
/* 80296B8C 002927EC 81 2B 00 04 */ lwz r9, 4(r11)
/* 80296B90 002927F0 7C E5 EA 14 */ add r7, r5, r29
/* 80296B94 002927F4 38 07 FF FF */ addi r0, r7, -1
/* 80296B98 002927F8 7D 07 00 38 */ and r7, r8, r0
/* 80296B9C 002927FC 7C 1D 38 50 */ subf r0, r29, r7
/* 80296BA0 00292800 7C 04 02 14 */ add r0, r4, r0
/* 80296BA4 00292804 7C 09 00 40 */ cmplw r9, r0
/* 80296BA8 00292808 41 80 00 28 */ blt lbl_80296BD0
/* 80296BAC 0029280C 7C 1F 48 40 */ cmplw r31, r9
/* 80296BB0 00292810 40 81 00 20 */ ble lbl_80296BD0
/* 80296BB4 00292814 2C 0A 00 00 */ cmpwi r10, 0
/* 80296BB8 00292818 7D 6C 5B 78 */ mr r12, r11
/* 80296BBC 0029281C 7D 3F 4B 78 */ mr r31, r9
/* 80296BC0 00292820 7C FE 3B 78 */ mr r30, r7
/* 80296BC4 00292824 40 82 00 18 */ bne lbl_80296BDC
/* 80296BC8 00292828 7C 09 20 40 */ cmplw r9, r4
/* 80296BCC 0029282C 41 82 00 10 */ beq lbl_80296BDC
lbl_80296BD0:
/* 80296BD0 00292830 81 6B 00 0C */ lwz r11, 0xc(r11)
lbl_80296BD4:
/* 80296BD4 00292834 2C 0B 00 00 */ cmpwi r11, 0
/* 80296BD8 00292838 40 82 FF B0 */ bne lbl_80296B88
lbl_80296BDC:
/* 80296BDC 0029283C 2C 0C 00 00 */ cmpwi r12, 0
/* 80296BE0 00292840 41 82 00 18 */ beq lbl_80296BF8
/* 80296BE4 00292844 7D 84 63 78 */ mr r4, r12
/* 80296BE8 00292848 7F C5 F3 78 */ mr r5, r30
/* 80296BEC 0029284C 38 E0 00 00 */ li r7, 0
/* 80296BF0 00292850 4B FF FD 49 */ bl AllocUsedBlockFromFreeBlock_
/* 80296BF4 00292854 48 00 00 08 */ b lbl_80296BFC
lbl_80296BF8:
/* 80296BF8 00292858 38 60 00 00 */ li r3, 0
lbl_80296BFC:
/* 80296BFC 0029285C 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80296C00 00292860 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 80296C04 00292864 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 80296C08 00292868 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 80296C0C 0029286C 7C 08 03 A6 */ mtlr r0
/* 80296C10 00292870 38 21 00 20 */ addi r1, r1, 0x20
/* 80296C14 00292874 4E 80 00 20 */ blr
.global AllocFromTail_
AllocFromTail_:
/* 80296C18 00292878 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80296C1C 0029287C 7C 08 02 A6 */ mflr r0
/* 80296C20 00292880 38 63 00 3C */ addi r3, r3, 0x3c
/* 80296C24 00292884 7C 86 23 78 */ mr r6, r4
/* 80296C28 00292888 90 01 00 14 */ stw r0, 0x14(r1)
/* 80296C2C 0029288C 38 05 FF FF */ addi r0, r5, -1
/* 80296C30 00292890 7C 07 00 F8 */ nor r7, r0, r0
/* 80296C34 00292894 39 60 00 00 */ li r11, 0
/* 80296C38 00292898 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80296C3C 0029289C 39 80 FF FF */ li r12, -1
/* 80296C40 002928A0 93 C1 00 08 */ stw r30, 8(r1)
/* 80296C44 002928A4 A0 A3 00 12 */ lhz r5, 0x12(r3)
/* 80296C48 002928A8 81 43 00 04 */ lwz r10, 4(r3)
/* 80296C4C 002928AC 54 A0 07 FE */ clrlwi r0, r5, 0x1f
/* 80296C50 002928B0 38 A0 00 00 */ li r5, 0
/* 80296C54 002928B4 7C 00 00 34 */ cntlzw r0, r0
/* 80296C58 002928B8 54 09 D9 7E */ srwi r9, r0, 5
/* 80296C5C 002928BC 48 00 00 48 */ b lbl_80296CA4
lbl_80296C60:
/* 80296C60 002928C0 81 0A 00 04 */ lwz r8, 4(r10)
/* 80296C64 002928C4 3B EA 00 10 */ addi r31, r10, 0x10
/* 80296C68 002928C8 7C 08 FA 14 */ add r0, r8, r31
/* 80296C6C 002928CC 7C 04 00 50 */ subf r0, r4, r0
/* 80296C70 002928D0 7C FE 00 38 */ and r30, r7, r0
/* 80296C74 002928D4 7C 1F F0 51 */ subf. r0, r31, r30
/* 80296C78 002928D8 41 80 00 28 */ blt lbl_80296CA0
/* 80296C7C 002928DC 7C 0C 40 40 */ cmplw r12, r8
/* 80296C80 002928E0 40 81 00 20 */ ble lbl_80296CA0
/* 80296C84 002928E4 2C 09 00 00 */ cmpwi r9, 0
/* 80296C88 002928E8 7D 4B 53 78 */ mr r11, r10
/* 80296C8C 002928EC 7D 0C 43 78 */ mr r12, r8
/* 80296C90 002928F0 7F C5 F3 78 */ mr r5, r30
/* 80296C94 002928F4 40 82 00 18 */ bne lbl_80296CAC
/* 80296C98 002928F8 7C 08 20 40 */ cmplw r8, r4
/* 80296C9C 002928FC 41 82 00 10 */ beq lbl_80296CAC
lbl_80296CA0:
/* 80296CA0 00292900 81 4A 00 08 */ lwz r10, 8(r10)
lbl_80296CA4:
/* 80296CA4 00292904 2C 0A 00 00 */ cmpwi r10, 0
/* 80296CA8 00292908 40 82 FF B8 */ bne lbl_80296C60
lbl_80296CAC:
/* 80296CAC 0029290C 2C 0B 00 00 */ cmpwi r11, 0
/* 80296CB0 00292910 41 82 00 14 */ beq lbl_80296CC4
/* 80296CB4 00292914 7D 64 5B 78 */ mr r4, r11
/* 80296CB8 00292918 38 E0 00 01 */ li r7, 1
/* 80296CBC 0029291C 4B FF FC 7D */ bl AllocUsedBlockFromFreeBlock_
/* 80296CC0 00292920 48 00 00 08 */ b lbl_80296CC8
lbl_80296CC4:
/* 80296CC4 00292924 38 60 00 00 */ li r3, 0
lbl_80296CC8:
/* 80296CC8 00292928 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80296CCC 0029292C 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 80296CD0 00292930 83 C1 00 08 */ lwz r30, 8(r1)
/* 80296CD4 00292934 7C 08 03 A6 */ mtlr r0
/* 80296CD8 00292938 38 21 00 10 */ addi r1, r1, 0x10
/* 80296CDC 0029293C 4E 80 00 20 */ blr
.global RecycleRegion_
RecycleRegion_:
/* 80296CE0 00292940 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80296CE4 00292944 39 00 00 00 */ li r8, 0
/* 80296CE8 00292948 80 A4 00 00 */ lwz r5, 0(r4)
/* 80296CEC 0029294C 80 04 00 04 */ lwz r0, 4(r4)
/* 80296CF0 00292950 90 A1 00 08 */ stw r5, 8(r1)
/* 80296CF4 00292954 80 C3 00 00 */ lwz r6, 0(r3)
/* 80296CF8 00292958 90 01 00 0C */ stw r0, 0xc(r1)
/* 80296CFC 0029295C 48 00 00 6C */ b lbl_80296D68
lbl_80296D00:
/* 80296D00 00292960 80 04 00 00 */ lwz r0, 0(r4)
/* 80296D04 00292964 7C 06 00 40 */ cmplw r6, r0
/* 80296D08 00292968 40 80 00 0C */ bge lbl_80296D14
/* 80296D0C 0029296C 7C C8 33 78 */ mr r8, r6
/* 80296D10 00292970 48 00 00 54 */ b lbl_80296D64
lbl_80296D14:
/* 80296D14 00292974 80 04 00 04 */ lwz r0, 4(r4)
/* 80296D18 00292978 7C 06 00 40 */ cmplw r6, r0
/* 80296D1C 0029297C 40 82 00 54 */ bne lbl_80296D70
/* 80296D20 00292980 80 06 00 04 */ lwz r0, 4(r6)
/* 80296D24 00292984 80 E6 00 08 */ lwz r7, 8(r6)
/* 80296D28 00292988 7C A6 02 14 */ add r5, r6, r0
/* 80296D2C 0029298C 80 C6 00 0C */ lwz r6, 0xc(r6)
/* 80296D30 00292990 38 05 00 10 */ addi r0, r5, 0x10
/* 80296D34 00292994 2C 07 00 00 */ cmpwi r7, 0
/* 80296D38 00292998 90 01 00 0C */ stw r0, 0xc(r1)
/* 80296D3C 0029299C 41 82 00 0C */ beq lbl_80296D48
/* 80296D40 002929A0 90 C7 00 0C */ stw r6, 0xc(r7)
/* 80296D44 002929A4 48 00 00 08 */ b lbl_80296D4C
lbl_80296D48:
/* 80296D48 002929A8 90 C3 00 00 */ stw r6, 0(r3)
lbl_80296D4C:
/* 80296D4C 002929AC 2C 06 00 00 */ cmpwi r6, 0
/* 80296D50 002929B0 41 82 00 0C */ beq lbl_80296D5C
/* 80296D54 002929B4 90 E6 00 08 */ stw r7, 8(r6)
/* 80296D58 002929B8 48 00 00 18 */ b lbl_80296D70
lbl_80296D5C:
/* 80296D5C 002929BC 90 E3 00 04 */ stw r7, 4(r3)
/* 80296D60 002929C0 48 00 00 10 */ b lbl_80296D70
lbl_80296D64:
/* 80296D64 002929C4 80 C6 00 0C */ lwz r6, 0xc(r6)
lbl_80296D68:
/* 80296D68 002929C8 2C 06 00 00 */ cmpwi r6, 0
/* 80296D6C 002929CC 40 82 FF 94 */ bne lbl_80296D00
lbl_80296D70:
/* 80296D70 002929D0 2C 08 00 00 */ cmpwi r8, 0
/* 80296D74 002929D4 41 82 00 54 */ beq lbl_80296DC8
/* 80296D78 002929D8 80 A8 00 04 */ lwz r5, 4(r8)
/* 80296D7C 002929DC 80 04 00 00 */ lwz r0, 0(r4)
/* 80296D80 002929E0 7C 88 2A 14 */ add r4, r8, r5
/* 80296D84 002929E4 38 84 00 10 */ addi r4, r4, 0x10
/* 80296D88 002929E8 7C 04 00 40 */ cmplw r4, r0
/* 80296D8C 002929EC 40 82 00 3C */ bne lbl_80296DC8
/* 80296D90 002929F0 80 A8 00 08 */ lwz r5, 8(r8)
/* 80296D94 002929F4 91 01 00 08 */ stw r8, 8(r1)
/* 80296D98 002929F8 2C 05 00 00 */ cmpwi r5, 0
/* 80296D9C 002929FC 80 88 00 0C */ lwz r4, 0xc(r8)
/* 80296DA0 00292A00 41 82 00 0C */ beq lbl_80296DAC
/* 80296DA4 00292A04 90 85 00 0C */ stw r4, 0xc(r5)
/* 80296DA8 00292A08 48 00 00 08 */ b lbl_80296DB0
lbl_80296DAC:
/* 80296DAC 00292A0C 90 83 00 00 */ stw r4, 0(r3)
lbl_80296DB0:
/* 80296DB0 00292A10 2C 04 00 00 */ cmpwi r4, 0
/* 80296DB4 00292A14 41 82 00 0C */ beq lbl_80296DC0
/* 80296DB8 00292A18 90 A4 00 08 */ stw r5, 8(r4)
/* 80296DBC 00292A1C 48 00 00 08 */ b lbl_80296DC4
lbl_80296DC0:
/* 80296DC0 00292A20 90 A3 00 04 */ stw r5, 4(r3)
lbl_80296DC4:
/* 80296DC4 00292A24 7C A8 2B 78 */ mr r8, r5
lbl_80296DC8:
/* 80296DC8 00292A28 80 C1 00 0C */ lwz r6, 0xc(r1)
/* 80296DCC 00292A2C 80 A1 00 08 */ lwz r5, 8(r1)
/* 80296DD0 00292A30 7C 05 30 50 */ subf r0, r5, r6
/* 80296DD4 00292A34 28 00 00 10 */ cmplwi r0, 0x10
/* 80296DD8 00292A38 40 80 00 0C */ bge lbl_80296DE4
/* 80296DDC 00292A3C 38 60 00 00 */ li r3, 0
/* 80296DE0 00292A40 48 00 00 60 */ b lbl_80296E40
lbl_80296DE4:
/* 80296DE4 00292A44 38 80 46 52 */ li r4, 0x4652
/* 80296DE8 00292A48 38 05 00 10 */ addi r0, r5, 0x10
/* 80296DEC 00292A4C B0 85 00 00 */ sth r4, 0(r5)
/* 80296DF0 00292A50 38 80 00 00 */ li r4, 0
/* 80296DF4 00292A54 7C 00 30 50 */ subf r0, r0, r6
/* 80296DF8 00292A58 2C 08 00 00 */ cmpwi r8, 0
/* 80296DFC 00292A5C B0 85 00 02 */ sth r4, 2(r5)
/* 80296E00 00292A60 90 05 00 04 */ stw r0, 4(r5)
/* 80296E04 00292A64 90 85 00 0C */ stw r4, 0xc(r5)
/* 80296E08 00292A68 91 05 00 08 */ stw r8, 8(r5)
/* 80296E0C 00292A6C 41 82 00 10 */ beq lbl_80296E1C
/* 80296E10 00292A70 80 88 00 0C */ lwz r4, 0xc(r8)
/* 80296E14 00292A74 90 A8 00 0C */ stw r5, 0xc(r8)
/* 80296E18 00292A78 48 00 00 0C */ b lbl_80296E24
lbl_80296E1C:
/* 80296E1C 00292A7C 80 83 00 00 */ lwz r4, 0(r3)
/* 80296E20 00292A80 90 A3 00 00 */ stw r5, 0(r3)
lbl_80296E24:
/* 80296E24 00292A84 2C 04 00 00 */ cmpwi r4, 0
/* 80296E28 00292A88 90 85 00 0C */ stw r4, 0xc(r5)
/* 80296E2C 00292A8C 41 82 00 0C */ beq lbl_80296E38
/* 80296E30 00292A90 90 A4 00 08 */ stw r5, 8(r4)
/* 80296E34 00292A94 48 00 00 08 */ b lbl_80296E3C
lbl_80296E38:
/* 80296E38 00292A98 90 A3 00 04 */ stw r5, 4(r3)
lbl_80296E3C:
/* 80296E3C 00292A9C 38 60 00 01 */ li r3, 1
lbl_80296E40:
/* 80296E40 00292AA0 38 21 00 10 */ addi r1, r1, 0x10
/* 80296E44 00292AA4 4E 80 00 20 */ blr
.global MEMCreateExpHeapEx
MEMCreateExpHeapEx:
/* 80296E48 00292AA8 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80296E4C 00292AAC 7C 08 02 A6 */ mflr r0
/* 80296E50 00292AB0 7C 84 1A 14 */ add r4, r4, r3
/* 80296E54 00292AB4 90 01 00 14 */ stw r0, 0x14(r1)
/* 80296E58 00292AB8 38 03 00 03 */ addi r0, r3, 3
/* 80296E5C 00292ABC 54 86 00 3A */ rlwinm r6, r4, 0, 0, 0x1d
/* 80296E60 00292AC0 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80296E64 00292AC4 54 1F 00 3A */ rlwinm r31, r0, 0, 0, 0x1d
/* 80296E68 00292AC8 7C 1F 30 40 */ cmplw r31, r6
/* 80296E6C 00292ACC 41 81 00 10 */ bgt lbl_80296E7C
/* 80296E70 00292AD0 7C 1F 30 50 */ subf r0, r31, r6
/* 80296E74 00292AD4 28 00 00 64 */ cmplwi r0, 0x64
/* 80296E78 00292AD8 40 80 00 0C */ bge lbl_80296E84
lbl_80296E7C:
/* 80296E7C 00292ADC 38 60 00 00 */ li r3, 0
/* 80296E80 00292AE0 48 00 00 64 */ b lbl_80296EE4
lbl_80296E84:
/* 80296E84 00292AE4 3C 80 45 58 */ lis r4, 0x45585048@ha
/* 80296E88 00292AE8 7C A7 2B 78 */ mr r7, r5
/* 80296E8C 00292AEC 7F E3 FB 78 */ mr r3, r31
/* 80296E90 00292AF0 38 BF 00 50 */ addi r5, r31, 0x50
/* 80296E94 00292AF4 38 84 50 48 */ addi r4, r4, 0x45585048@l
/* 80296E98 00292AF8 4B FF F7 75 */ bl MEMiInitHeapHead
/* 80296E9C 00292AFC 38 A0 00 00 */ li r5, 0
/* 80296EA0 00292B00 38 80 46 52 */ li r4, 0x4652
/* 80296EA4 00292B04 B0 BF 00 4C */ sth r5, 0x4c(r31)
/* 80296EA8 00292B08 7F E3 FB 78 */ mr r3, r31
/* 80296EAC 00292B0C B0 BF 00 4E */ sth r5, 0x4e(r31)
/* 80296EB0 00292B10 80 DF 00 18 */ lwz r6, 0x18(r31)
/* 80296EB4 00292B14 80 FF 00 1C */ lwz r7, 0x1c(r31)
/* 80296EB8 00292B18 38 06 00 10 */ addi r0, r6, 0x10
/* 80296EBC 00292B1C B0 86 00 00 */ sth r4, 0(r6)
/* 80296EC0 00292B20 7C 00 38 50 */ subf r0, r0, r7
/* 80296EC4 00292B24 B0 A6 00 02 */ sth r5, 2(r6)
/* 80296EC8 00292B28 90 06 00 04 */ stw r0, 4(r6)
/* 80296ECC 00292B2C 90 A6 00 08 */ stw r5, 8(r6)
/* 80296ED0 00292B30 90 A6 00 0C */ stw r5, 0xc(r6)
/* 80296ED4 00292B34 90 DF 00 3C */ stw r6, 0x3c(r31)
/* 80296ED8 00292B38 90 DF 00 40 */ stw r6, 0x40(r31)
/* 80296EDC 00292B3C 90 BF 00 44 */ stw r5, 0x44(r31)
/* 80296EE0 00292B40 90 BF 00 48 */ stw r5, 0x48(r31)
lbl_80296EE4:
/* 80296EE4 00292B44 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80296EE8 00292B48 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 80296EEC 00292B4C 7C 08 03 A6 */ mtlr r0
/* 80296EF0 00292B50 38 21 00 10 */ addi r1, r1, 0x10
/* 80296EF4 00292B54 4E 80 00 20 */ blr
.global MEMDestroyExpHeap
MEMDestroyExpHeap:
/* 80296EF8 00292B58 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80296EFC 00292B5C 7C 08 02 A6 */ mflr r0
/* 80296F00 00292B60 90 01 00 14 */ stw r0, 0x14(r1)
/* 80296F04 00292B64 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80296F08 00292B68 7C 7F 1B 78 */ mr r31, r3
/* 80296F0C 00292B6C 4B FF F8 C1 */ bl MEMiFinalizeHeap
/* 80296F10 00292B70 7F E3 FB 78 */ mr r3, r31
/* 80296F14 00292B74 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 80296F18 00292B78 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80296F1C 00292B7C 7C 08 03 A6 */ mtlr r0
/* 80296F20 00292B80 38 21 00 10 */ addi r1, r1, 0x10
/* 80296F24 00292B84 4E 80 00 20 */ blr
.global MEMAllocFromExpHeapEx
MEMAllocFromExpHeapEx:
/* 80296F28 00292B88 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80296F2C 00292B8C 7C 08 02 A6 */ mflr r0
/* 80296F30 00292B90 2C 04 00 00 */ cmpwi r4, 0
/* 80296F34 00292B94 90 01 00 24 */ stw r0, 0x24(r1)
/* 80296F38 00292B98 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 80296F3C 00292B9C 7C BF 2B 78 */ mr r31, r5
/* 80296F40 00292BA0 93 C1 00 18 */ stw r30, 0x18(r1)
/* 80296F44 00292BA4 7C 9E 23 78 */ mr r30, r4
/* 80296F48 00292BA8 93 A1 00 14 */ stw r29, 0x14(r1)
/* 80296F4C 00292BAC 7C 7D 1B 78 */ mr r29, r3
/* 80296F50 00292BB0 40 82 00 08 */ bne lbl_80296F58
/* 80296F54 00292BB4 3B C0 00 01 */ li r30, 1
lbl_80296F58:
/* 80296F58 00292BB8 80 03 00 38 */ lwz r0, 0x38(r3)
/* 80296F5C 00292BBC 38 9E 00 03 */ addi r4, r30, 3
/* 80296F60 00292BC0 54 9E 00 3A */ rlwinm r30, r4, 0, 0, 0x1d
/* 80296F64 00292BC4 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 80296F68 00292BC8 41 82 00 0C */ beq lbl_80296F74
/* 80296F6C 00292BCC 38 63 00 20 */ addi r3, r3, 0x20
/* 80296F70 00292BD0 4B FD 89 D9 */ bl OSLockMutex
lbl_80296F74:
/* 80296F74 00292BD4 2C 1F 00 00 */ cmpwi r31, 0
/* 80296F78 00292BD8 41 80 00 18 */ blt lbl_80296F90
/* 80296F7C 00292BDC 7F A3 EB 78 */ mr r3, r29
/* 80296F80 00292BE0 7F C4 F3 78 */ mr r4, r30
/* 80296F84 00292BE4 7F E5 FB 78 */ mr r5, r31
/* 80296F88 00292BE8 4B FF FB B5 */ bl AllocFromHead_
/* 80296F8C 00292BEC 48 00 00 14 */ b lbl_80296FA0
lbl_80296F90:
/* 80296F90 00292BF0 7F A3 EB 78 */ mr r3, r29
/* 80296F94 00292BF4 7F C4 F3 78 */ mr r4, r30
/* 80296F98 00292BF8 7C BF 00 D0 */ neg r5, r31
/* 80296F9C 00292BFC 4B FF FC 7D */ bl AllocFromTail_
lbl_80296FA0:
/* 80296FA0 00292C00 80 1D 00 38 */ lwz r0, 0x38(r29)
/* 80296FA4 00292C04 7C 7F 1B 78 */ mr r31, r3
/* 80296FA8 00292C08 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 80296FAC 00292C0C 41 82 00 0C */ beq lbl_80296FB8
/* 80296FB0 00292C10 38 7D 00 20 */ addi r3, r29, 0x20
/* 80296FB4 00292C14 4B FD 8A 71 */ bl OSUnlockMutex
lbl_80296FB8:
/* 80296FB8 00292C18 7F E3 FB 78 */ mr r3, r31
/* 80296FBC 00292C1C 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 80296FC0 00292C20 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 80296FC4 00292C24 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 80296FC8 00292C28 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80296FCC 00292C2C 7C 08 03 A6 */ mtlr r0
/* 80296FD0 00292C30 38 21 00 20 */ addi r1, r1, 0x20
/* 80296FD4 00292C34 4E 80 00 20 */ blr
.global MEMResizeForMBlockExpHeap
MEMResizeForMBlockExpHeap:
/* 80296FD8 00292C38 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 80296FDC 00292C3C 7C 08 02 A6 */ mflr r0
/* 80296FE0 00292C40 90 01 00 34 */ stw r0, 0x34(r1)
/* 80296FE4 00292C44 39 61 00 30 */ addi r11, r1, 0x30
/* 80296FE8 00292C48 4B F3 01 3D */ bl _savegpr_26
/* 80296FEC 00292C4C 38 A5 00 03 */ addi r5, r5, 3
/* 80296FF0 00292C50 80 04 FF F4 */ lwz r0, -0xc(r4)
/* 80296FF4 00292C54 54 BD 00 3A */ rlwinm r29, r5, 0, 0, 0x1d
/* 80296FF8 00292C58 3B C4 FF F0 */ addi r30, r4, -16
/* 80296FFC 00292C5C 7C 1D 00 40 */ cmplw r29, r0
/* 80297000 00292C60 7C 7B 1B 78 */ mr r27, r3
/* 80297004 00292C64 7C 9C 23 78 */ mr r28, r4
/* 80297008 00292C68 3B E3 00 3C */ addi r31, r3, 0x3c
/* 8029700C 00292C6C 40 82 00 0C */ bne lbl_80297018
/* 80297010 00292C70 7F A3 EB 78 */ mr r3, r29
/* 80297014 00292C74 48 00 01 98 */ b lbl_802971AC
lbl_80297018:
/* 80297018 00292C78 80 03 00 38 */ lwz r0, 0x38(r3)
/* 8029701C 00292C7C 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 80297020 00292C80 41 82 00 0C */ beq lbl_8029702C
/* 80297024 00292C84 38 63 00 20 */ addi r3, r3, 0x20
/* 80297028 00292C88 4B FD 89 21 */ bl OSLockMutex
lbl_8029702C:
/* 8029702C 00292C8C 83 5E 00 04 */ lwz r26, 4(r30)
/* 80297030 00292C90 7C 1D D0 40 */ cmplw r29, r26
/* 80297034 00292C94 40 81 01 2C */ ble lbl_80297160
/* 80297038 00292C98 7C 7E D2 14 */ add r3, r30, r26
/* 8029703C 00292C9C 80 FF 00 00 */ lwz r7, 0(r31)
/* 80297040 00292CA0 38 03 00 10 */ addi r0, r3, 0x10
/* 80297044 00292CA4 48 00 00 10 */ b lbl_80297054
lbl_80297048:
/* 80297048 00292CA8 7C 07 00 40 */ cmplw r7, r0
/* 8029704C 00292CAC 41 82 00 10 */ beq lbl_8029705C
/* 80297050 00292CB0 80 E7 00 0C */ lwz r7, 0xc(r7)
lbl_80297054:
/* 80297054 00292CB4 2C 07 00 00 */ cmpwi r7, 0
/* 80297058 00292CB8 40 82 FF F0 */ bne lbl_80297048
lbl_8029705C:
/* 8029705C 00292CBC 2C 07 00 00 */ cmpwi r7, 0
/* 80297060 00292CC0 41 82 00 18 */ beq lbl_80297078
/* 80297064 00292CC4 80 87 00 04 */ lwz r4, 4(r7)
/* 80297068 00292CC8 7C 7A 22 14 */ add r3, r26, r4
/* 8029706C 00292CCC 38 03 00 10 */ addi r0, r3, 0x10
/* 80297070 00292CD0 7C 1D 00 40 */ cmplw r29, r0
/* 80297074 00292CD4 40 81 00 0C */ ble lbl_80297080
lbl_80297078:
/* 80297078 00292CD8 38 60 00 00 */ li r3, 0
/* 8029707C 00292CDC 48 00 01 30 */ b lbl_802971AC
lbl_80297080:
/* 80297080 00292CE0 80 A7 00 08 */ lwz r5, 8(r7)
/* 80297084 00292CE4 7C 67 22 14 */ add r3, r7, r4
/* 80297088 00292CE8 A0 07 00 02 */ lhz r0, 2(r7)
/* 8029708C 00292CEC 38 C3 00 10 */ addi r6, r3, 0x10
/* 80297090 00292CF0 2C 05 00 00 */ cmpwi r5, 0
/* 80297094 00292CF4 80 87 00 0C */ lwz r4, 0xc(r7)
/* 80297098 00292CF8 54 00 C6 7E */ rlwinm r0, r0, 0x18, 0x19, 0x1f
/* 8029709C 00292CFC 7C 60 38 50 */ subf r3, r0, r7
/* 802970A0 00292D00 41 82 00 0C */ beq lbl_802970AC
/* 802970A4 00292D04 90 85 00 0C */ stw r4, 0xc(r5)
/* 802970A8 00292D08 48 00 00 08 */ b lbl_802970B0
lbl_802970AC:
/* 802970AC 00292D0C 90 9F 00 00 */ stw r4, 0(r31)
lbl_802970B0:
/* 802970B0 00292D10 2C 04 00 00 */ cmpwi r4, 0
/* 802970B4 00292D14 41 82 00 0C */ beq lbl_802970C0
/* 802970B8 00292D18 90 A4 00 08 */ stw r5, 8(r4)
/* 802970BC 00292D1C 48 00 00 08 */ b lbl_802970C4
lbl_802970C0:
/* 802970C0 00292D20 90 BF 00 04 */ stw r5, 4(r31)
lbl_802970C4:
/* 802970C4 00292D24 7C FD E2 14 */ add r7, r29, r28
/* 802970C8 00292D28 7C 07 30 50 */ subf r0, r7, r6
/* 802970CC 00292D2C 28 00 00 10 */ cmplwi r0, 0x10
/* 802970D0 00292D30 40 80 00 08 */ bge lbl_802970D8
/* 802970D4 00292D34 7C C7 33 78 */ mr r7, r6
lbl_802970D8:
/* 802970D8 00292D38 7C 07 30 50 */ subf r0, r7, r6
/* 802970DC 00292D3C 7C 9C 38 50 */ subf r4, r28, r7
/* 802970E0 00292D40 28 00 00 10 */ cmplwi r0, 0x10
/* 802970E4 00292D44 90 9E 00 04 */ stw r4, 4(r30)
/* 802970E8 00292D48 41 80 00 5C */ blt lbl_80297144
/* 802970EC 00292D4C 38 80 46 52 */ li r4, 0x4652
/* 802970F0 00292D50 38 07 00 10 */ addi r0, r7, 0x10
/* 802970F4 00292D54 B0 87 00 00 */ sth r4, 0(r7)
/* 802970F8 00292D58 38 80 00 00 */ li r4, 0
/* 802970FC 00292D5C 7C 00 30 50 */ subf r0, r0, r6
/* 80297100 00292D60 2C 05 00 00 */ cmpwi r5, 0
/* 80297104 00292D64 B0 87 00 02 */ sth r4, 2(r7)
/* 80297108 00292D68 90 07 00 04 */ stw r0, 4(r7)
/* 8029710C 00292D6C 90 87 00 0C */ stw r4, 0xc(r7)
/* 80297110 00292D70 90 A7 00 08 */ stw r5, 8(r7)
/* 80297114 00292D74 41 82 00 10 */ beq lbl_80297124
/* 80297118 00292D78 80 85 00 0C */ lwz r4, 0xc(r5)
/* 8029711C 00292D7C 90 E5 00 0C */ stw r7, 0xc(r5)
/* 80297120 00292D80 48 00 00 0C */ b lbl_8029712C
lbl_80297124:
/* 80297124 00292D84 80 9F 00 00 */ lwz r4, 0(r31)
/* 80297128 00292D88 90 FF 00 00 */ stw r7, 0(r31)
lbl_8029712C:
/* 8029712C 00292D8C 2C 04 00 00 */ cmpwi r4, 0
/* 80297130 00292D90 90 87 00 0C */ stw r4, 0xc(r7)
/* 80297134 00292D94 41 82 00 0C */ beq lbl_80297140
/* 80297138 00292D98 90 E4 00 08 */ stw r7, 8(r4)
/* 8029713C 00292D9C 48 00 00 08 */ b lbl_80297144
lbl_80297140:
/* 80297140 00292DA0 90 FF 00 04 */ stw r7, 4(r31)
lbl_80297144:
/* 80297144 00292DA4 80 1B 00 38 */ lwz r0, 0x38(r27)
/* 80297148 00292DA8 7C A3 38 50 */ subf r5, r3, r7
/* 8029714C 00292DAC 54 00 07 FF */ clrlwi. r0, r0, 0x1f
/* 80297150 00292DB0 41 82 00 44 */ beq lbl_80297194
/* 80297154 00292DB4 38 80 00 00 */ li r4, 0
/* 80297158 00292DB8 4B D6 CF AD */ bl memset
/* 8029715C 00292DBC 48 00 00 38 */ b lbl_80297194
lbl_80297160:
/* 80297160 00292DC0 7C 1D E2 14 */ add r0, r29, r28
/* 80297164 00292DC4 7F E3 FB 78 */ mr r3, r31
/* 80297168 00292DC8 90 01 00 08 */ stw r0, 8(r1)
/* 8029716C 00292DCC 38 81 00 08 */ addi r4, r1, 8
/* 80297170 00292DD0 80 1E 00 04 */ lwz r0, 4(r30)
/* 80297174 00292DD4 7C BE 02 14 */ add r5, r30, r0
/* 80297178 00292DD8 38 05 00 10 */ addi r0, r5, 0x10
/* 8029717C 00292DDC 90 01 00 0C */ stw r0, 0xc(r1)
/* 80297180 00292DE0 93 BE 00 04 */ stw r29, 4(r30)
/* 80297184 00292DE4 4B FF FB 5D */ bl RecycleRegion_
/* 80297188 00292DE8 2C 03 00 00 */ cmpwi r3, 0
/* 8029718C 00292DEC 40 82 00 08 */ bne lbl_80297194
/* 80297190 00292DF0 93 5E 00 04 */ stw r26, 4(r30)
lbl_80297194:
/* 80297194 00292DF4 80 1B 00 38 */ lwz r0, 0x38(r27)
/* 80297198 00292DF8 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 8029719C 00292DFC 41 82 00 0C */ beq lbl_802971A8
/* 802971A0 00292E00 38 7B 00 20 */ addi r3, r27, 0x20
/* 802971A4 00292E04 4B FD 88 81 */ bl OSUnlockMutex
lbl_802971A8:
/* 802971A8 00292E08 80 7E 00 04 */ lwz r3, 4(r30)
lbl_802971AC:
/* 802971AC 00292E0C 39 61 00 30 */ addi r11, r1, 0x30
/* 802971B0 00292E10 4B F2 FF C1 */ bl _restgpr_26
/* 802971B4 00292E14 80 01 00 34 */ lwz r0, 0x34(r1)
/* 802971B8 00292E18 7C 08 03 A6 */ mtlr r0
/* 802971BC 00292E1C 38 21 00 30 */ addi r1, r1, 0x30
/* 802971C0 00292E20 4E 80 00 20 */ blr
.global MEMFreeToExpHeap
MEMFreeToExpHeap:
/* 802971C4 00292E24 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802971C8 00292E28 7C 08 02 A6 */ mflr r0
/* 802971CC 00292E2C 2C 04 00 00 */ cmpwi r4, 0
/* 802971D0 00292E30 90 01 00 24 */ stw r0, 0x24(r1)
/* 802971D4 00292E34 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 802971D8 00292E38 93 C1 00 18 */ stw r30, 0x18(r1)
/* 802971DC 00292E3C 93 A1 00 14 */ stw r29, 0x14(r1)
/* 802971E0 00292E40 7C 7D 1B 78 */ mr r29, r3
/* 802971E4 00292E44 41 82 00 90 */ beq lbl_80297274
/* 802971E8 00292E48 80 03 00 38 */ lwz r0, 0x38(r3)
/* 802971EC 00292E4C 3B E3 00 3C */ addi r31, r3, 0x3c
/* 802971F0 00292E50 3B C4 FF F0 */ addi r30, r4, -16
/* 802971F4 00292E54 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 802971F8 00292E58 41 82 00 0C */ beq lbl_80297204
/* 802971FC 00292E5C 38 63 00 20 */ addi r3, r3, 0x20
/* 80297200 00292E60 4B FD 87 49 */ bl OSLockMutex
lbl_80297204:
/* 80297204 00292E64 A0 1E 00 02 */ lhz r0, 2(r30)
/* 80297208 00292E68 54 00 C6 7E */ rlwinm r0, r0, 0x18, 0x19, 0x1f
/* 8029720C 00292E6C 7C 00 F0 50 */ subf r0, r0, r30
/* 80297210 00292E70 90 01 00 08 */ stw r0, 8(r1)
/* 80297214 00292E74 80 1E 00 04 */ lwz r0, 4(r30)
/* 80297218 00292E78 7C 7E 02 14 */ add r3, r30, r0
/* 8029721C 00292E7C 38 03 00 10 */ addi r0, r3, 0x10
/* 80297220 00292E80 90 01 00 0C */ stw r0, 0xc(r1)
/* 80297224 00292E84 80 9E 00 08 */ lwz r4, 8(r30)
/* 80297228 00292E88 80 7E 00 0C */ lwz r3, 0xc(r30)
/* 8029722C 00292E8C 2C 04 00 00 */ cmpwi r4, 0
/* 80297230 00292E90 41 82 00 0C */ beq lbl_8029723C
/* 80297234 00292E94 90 64 00 0C */ stw r3, 0xc(r4)
/* 80297238 00292E98 48 00 00 08 */ b lbl_80297240
lbl_8029723C:
/* 8029723C 00292E9C 90 7F 00 08 */ stw r3, 8(r31)
lbl_80297240:
/* 80297240 00292EA0 2C 03 00 00 */ cmpwi r3, 0
/* 80297244 00292EA4 41 82 00 0C */ beq lbl_80297250
/* 80297248 00292EA8 90 83 00 08 */ stw r4, 8(r3)
/* 8029724C 00292EAC 48 00 00 08 */ b lbl_80297254
lbl_80297250:
/* 80297250 00292EB0 90 9F 00 0C */ stw r4, 0xc(r31)
lbl_80297254:
/* 80297254 00292EB4 7F E3 FB 78 */ mr r3, r31
/* 80297258 00292EB8 38 81 00 08 */ addi r4, r1, 8
/* 8029725C 00292EBC 4B FF FA 85 */ bl RecycleRegion_
/* 80297260 00292EC0 80 1D 00 38 */ lwz r0, 0x38(r29)
/* 80297264 00292EC4 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 80297268 00292EC8 41 82 00 0C */ beq lbl_80297274
/* 8029726C 00292ECC 38 7D 00 20 */ addi r3, r29, 0x20
/* 80297270 00292ED0 4B FD 87 B5 */ bl OSUnlockMutex
lbl_80297274:
/* 80297274 00292ED4 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80297278 00292ED8 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 8029727C 00292EDC 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 80297280 00292EE0 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 80297284 00292EE4 7C 08 03 A6 */ mtlr r0
/* 80297288 00292EE8 38 21 00 20 */ addi r1, r1, 0x20
/* 8029728C 00292EEC 4E 80 00 20 */ blr
.global MEMGetTotalFreeSizeForExpHeap
MEMGetTotalFreeSizeForExpHeap:
/* 80297290 00292EF0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80297294 00292EF4 7C 08 02 A6 */ mflr r0
/* 80297298 00292EF8 90 01 00 14 */ stw r0, 0x14(r1)
/* 8029729C 00292EFC 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802972A0 00292F00 3B E0 00 00 */ li r31, 0
/* 802972A4 00292F04 93 C1 00 08 */ stw r30, 8(r1)
/* 802972A8 00292F08 7C 7E 1B 78 */ mr r30, r3
/* 802972AC 00292F0C 80 03 00 38 */ lwz r0, 0x38(r3)
/* 802972B0 00292F10 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 802972B4 00292F14 41 82 00 0C */ beq lbl_802972C0
/* 802972B8 00292F18 38 63 00 20 */ addi r3, r3, 0x20
/* 802972BC 00292F1C 4B FD 86 8D */ bl OSLockMutex
lbl_802972C0:
/* 802972C0 00292F20 80 7E 00 3C */ lwz r3, 0x3c(r30)
/* 802972C4 00292F24 48 00 00 10 */ b lbl_802972D4
lbl_802972C8:
/* 802972C8 00292F28 80 03 00 04 */ lwz r0, 4(r3)
/* 802972CC 00292F2C 80 63 00 0C */ lwz r3, 0xc(r3)
/* 802972D0 00292F30 7F FF 02 14 */ add r31, r31, r0
lbl_802972D4:
/* 802972D4 00292F34 2C 03 00 00 */ cmpwi r3, 0
/* 802972D8 00292F38 40 82 FF F0 */ bne lbl_802972C8
/* 802972DC 00292F3C 80 1E 00 38 */ lwz r0, 0x38(r30)
/* 802972E0 00292F40 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 802972E4 00292F44 41 82 00 0C */ beq lbl_802972F0
/* 802972E8 00292F48 38 7E 00 20 */ addi r3, r30, 0x20
/* 802972EC 00292F4C 4B FD 87 39 */ bl OSUnlockMutex
lbl_802972F0:
/* 802972F0 00292F50 7F E3 FB 78 */ mr r3, r31
/* 802972F4 00292F54 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802972F8 00292F58 83 C1 00 08 */ lwz r30, 8(r1)
/* 802972FC 00292F5C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80297300 00292F60 7C 08 03 A6 */ mtlr r0
/* 80297304 00292F64 38 21 00 10 */ addi r1, r1, 0x10
/* 80297308 00292F68 4E 80 00 20 */ blr
.global MEMSetGroupIDForExpHeap
MEMSetGroupIDForExpHeap:
/* 8029730C 00292F6C 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80297310 00292F70 7C 08 02 A6 */ mflr r0
/* 80297314 00292F74 90 01 00 24 */ stw r0, 0x24(r1)
/* 80297318 00292F78 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 8029731C 00292F7C 93 C1 00 18 */ stw r30, 0x18(r1)
/* 80297320 00292F80 7C 9E 23 78 */ mr r30, r4
/* 80297324 00292F84 93 A1 00 14 */ stw r29, 0x14(r1)
/* 80297328 00292F88 7C 7D 1B 78 */ mr r29, r3
/* 8029732C 00292F8C 4B FD 74 31 */ bl OSDisableInterrupts
/* 80297330 00292F90 A3 FD 00 4C */ lhz r31, 0x4c(r29)
/* 80297334 00292F94 B3 DD 00 4C */ sth r30, 0x4c(r29)
/* 80297338 00292F98 4B FD 74 4D */ bl OSRestoreInterrupts
/* 8029733C 00292F9C 7F E3 FB 78 */ mr r3, r31
/* 80297340 00292FA0 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 80297344 00292FA4 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 80297348 00292FA8 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 8029734C 00292FAC 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80297350 00292FB0 7C 08 03 A6 */ mtlr r0
/* 80297354 00292FB4 38 21 00 20 */ addi r1, r1, 0x20
/* 80297358 00292FB8 4E 80 00 20 */ blr
.global MEMVisitAllocatedForExpHeap
MEMVisitAllocatedForExpHeap:
/* 8029735C 00292FBC 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80297360 00292FC0 7C 08 02 A6 */ mflr r0
/* 80297364 00292FC4 90 01 00 24 */ stw r0, 0x24(r1)
/* 80297368 00292FC8 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 8029736C 00292FCC 93 C1 00 18 */ stw r30, 0x18(r1)
/* 80297370 00292FD0 7C BE 2B 78 */ mr r30, r5
/* 80297374 00292FD4 93 A1 00 14 */ stw r29, 0x14(r1)
/* 80297378 00292FD8 7C 9D 23 78 */ mr r29, r4
/* 8029737C 00292FDC 93 81 00 10 */ stw r28, 0x10(r1)
/* 80297380 00292FE0 7C 7C 1B 78 */ mr r28, r3
/* 80297384 00292FE4 80 03 00 38 */ lwz r0, 0x38(r3)
/* 80297388 00292FE8 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 8029738C 00292FEC 41 82 00 0C */ beq lbl_80297398
/* 80297390 00292FF0 38 63 00 20 */ addi r3, r3, 0x20
/* 80297394 00292FF4 4B FD 85 B5 */ bl OSLockMutex
lbl_80297398:
/* 80297398 00292FF8 83 FC 00 44 */ lwz r31, 0x44(r28)
/* 8029739C 00292FFC 48 00 00 20 */ b lbl_802973BC
lbl_802973A0:
/* 802973A0 00293000 7F AC EB 78 */ mr r12, r29
/* 802973A4 00293004 38 7F 00 10 */ addi r3, r31, 0x10
/* 802973A8 00293008 7F 84 E3 78 */ mr r4, r28
/* 802973AC 0029300C 7F C5 F3 78 */ mr r5, r30
/* 802973B0 00293010 83 FF 00 0C */ lwz r31, 0xc(r31)
/* 802973B4 00293014 7D 89 03 A6 */ mtctr r12
/* 802973B8 00293018 4E 80 04 21 */ bctrl
lbl_802973BC:
/* 802973BC 0029301C 2C 1F 00 00 */ cmpwi r31, 0
/* 802973C0 00293020 40 82 FF E0 */ bne lbl_802973A0
/* 802973C4 00293024 80 1C 00 38 */ lwz r0, 0x38(r28)
/* 802973C8 00293028 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 802973CC 0029302C 41 82 00 0C */ beq lbl_802973D8
/* 802973D0 00293030 38 7C 00 20 */ addi r3, r28, 0x20
/* 802973D4 00293034 4B FD 86 51 */ bl OSUnlockMutex
lbl_802973D8:
/* 802973D8 00293038 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802973DC 0029303C 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 802973E0 00293040 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 802973E4 00293044 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 802973E8 00293048 83 81 00 10 */ lwz r28, 0x10(r1)
/* 802973EC 0029304C 7C 08 03 A6 */ mtlr r0
/* 802973F0 00293050 38 21 00 20 */ addi r1, r1, 0x20
/* 802973F4 00293054 4E 80 00 20 */ blr
.global MEMGetSizeForMBlockExpHeap
MEMGetSizeForMBlockExpHeap:
/* 802973F8 00293058 80 63 FF F4 */ lwz r3, -0xc(r3)
/* 802973FC 0029305C 4E 80 00 20 */ blr
.global MEMGetGroupIDForMBlockExpHeap
MEMGetGroupIDForMBlockExpHeap:
/* 80297400 00293060 A0 03 FF F2 */ lhz r0, -0xe(r3)
/* 80297404 00293064 54 03 06 3E */ clrlwi r3, r0, 0x18
/* 80297408 00293068 4E 80 00 20 */ blr
|