Files
tp/asm/JKernel/JKRAramHeap.s
T

361 lines
17 KiB
ArmAsm

.include "macros.inc"
.section .text, "ax" # 802d2e44
.global JKRAramHeap
JKRAramHeap:
/* 802D2E44 002CFD84 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802D2E48 002CFD88 7C 08 02 A6 */ mflr r0
/* 802D2E4C 002CFD8C 90 01 00 24 */ stw r0, 0x24(r1)
/* 802D2E50 002CFD90 39 61 00 20 */ addi r11, r1, 0x20
/* 802D2E54 002CFD94 48 08 F3 89 */ bl _savegpr_29
/* 802D2E58 002CFD98 7C 7D 1B 78 */ mr r29, r3
/* 802D2E5C 002CFD9C 7C 9E 23 78 */ mr r30, r4
/* 802D2E60 002CFDA0 7C BF 2B 78 */ mr r31, r5
/* 802D2E64 002CFDA4 4B FF E6 19 */ bl JKRDisposer
/* 802D2E68 002CFDA8 3C 60 80 3D */ lis r3, lbl_803CC168@ha
/* 802D2E6C 002CFDAC 38 03 C1 68 */ addi r0, r3, lbl_803CC168@l
/* 802D2E70 002CFDB0 90 1D 00 00 */ stw r0, 0(r29)
/* 802D2E74 002CFDB4 38 7D 00 18 */ addi r3, r29, 0x18
/* 802D2E78 002CFDB8 48 06 C1 91 */ bl OSInitMutex
/* 802D2E7C 002CFDBC 7F A3 EB 78 */ mr r3, r29
/* 802D2E80 002CFDC0 4B FF B9 BD */ bl JKRHeap_NS_findFromRoot
/* 802D2E84 002CFDC4 90 7D 00 30 */ stw r3, 0x30(r29)
/* 802D2E88 002CFDC8 57 E0 00 34 */ rlwinm r0, r31, 0, 0, 0x1a
/* 802D2E8C 002CFDCC 90 1D 00 3C */ stw r0, 0x3c(r29)
/* 802D2E90 002CFDD0 38 1E 00 1F */ addi r0, r30, 0x1f
/* 802D2E94 002CFDD4 54 00 00 34 */ rlwinm r0, r0, 0, 0, 0x1a
/* 802D2E98 002CFDD8 90 1D 00 34 */ stw r0, 0x34(r29)
/* 802D2E9C 002CFDDC 80 7D 00 34 */ lwz r3, 0x34(r29)
/* 802D2EA0 002CFDE0 80 1D 00 3C */ lwz r0, 0x3c(r29)
/* 802D2EA4 002CFDE4 7C 03 02 14 */ add r0, r3, r0
/* 802D2EA8 002CFDE8 90 1D 00 38 */ stw r0, 0x38(r29)
/* 802D2EAC 002CFDEC 38 00 00 FF */ li r0, 0xff
/* 802D2EB0 002CFDF0 98 1D 00 40 */ stb r0, 0x40(r29)
/* 802D2EB4 002CFDF4 38 60 00 24 */ li r3, 0x24
/* 802D2EB8 002CFDF8 80 9D 00 30 */ lwz r4, 0x30(r29)
/* 802D2EBC 002CFDFC 38 A0 00 00 */ li r5, 0
/* 802D2EC0 002CFE00 4B FF BD D9 */ bl __nw_X2_
/* 802D2EC4 002CFE04 7C 64 1B 79 */ or. r4, r3, r3
/* 802D2EC8 002CFE08 41 82 00 20 */ beq lbl_802D2EE8
/* 802D2ECC 002CFE0C 80 9D 00 34 */ lwz r4, 0x34(r29)
/* 802D2ED0 002CFE10 38 A0 00 00 */ li r5, 0
/* 802D2ED4 002CFE14 80 DD 00 3C */ lwz r6, 0x3c(r29)
/* 802D2ED8 002CFE18 38 E0 00 FF */ li r7, 0xff
/* 802D2EDC 002CFE1C 39 00 00 00 */ li r8, 0
/* 802D2EE0 002CFE20 48 00 04 25 */ bl JKRAramBlock
/* 802D2EE4 002CFE24 7C 64 1B 78 */ mr r4, r3
lbl_802D2EE8:
/* 802D2EE8 002CFE28 3C 60 80 43 */ lis r3, lbl_8043430C@ha
/* 802D2EEC 002CFE2C 38 63 43 0C */ addi r3, r3, lbl_8043430C@l
/* 802D2EF0 002CFE30 38 84 00 04 */ addi r4, r4, 4
/* 802D2EF4 002CFE34 48 00 90 59 */ bl JSUPtrList_NS_append
/* 802D2EF8 002CFE38 7F A3 EB 78 */ mr r3, r29
/* 802D2EFC 002CFE3C 39 61 00 20 */ addi r11, r1, 0x20
/* 802D2F00 002CFE40 48 08 F3 29 */ bl _restgpr_29
/* 802D2F04 002CFE44 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802D2F08 002CFE48 7C 08 03 A6 */ mtlr r0
/* 802D2F0C 002CFE4C 38 21 00 20 */ addi r1, r1, 0x20
/* 802D2F10 002CFE50 4E 80 00 20 */ blr
/* 802D2F14 002CFE54 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802D2F18 002CFE58 7C 08 02 A6 */ mflr r0
/* 802D2F1C 002CFE5C 90 01 00 24 */ stw r0, 0x24(r1)
/* 802D2F20 002CFE60 39 61 00 20 */ addi r11, r1, 0x20
/* 802D2F24 002CFE64 48 08 F2 B9 */ bl _savegpr_29
/* 802D2F28 002CFE68 7C 7D 1B 79 */ or. r29, r3, r3
/* 802D2F2C 002CFE6C 7C 9E 23 78 */ mr r30, r4
/* 802D2F30 002CFE70 41 82 00 70 */ beq lbl_802D2FA0
/* 802D2F34 002CFE74 3C 60 80 3D */ lis r3, lbl_803CC168@ha
/* 802D2F38 002CFE78 38 03 C1 68 */ addi r0, r3, lbl_803CC168@l
/* 802D2F3C 002CFE7C 90 1D 00 00 */ stw r0, 0(r29)
/* 802D2F40 002CFE80 3C 60 80 43 */ lis r3, lbl_8043430C@ha
/* 802D2F44 002CFE84 83 E3 43 0C */ lwz r31, lbl_8043430C@l(r3)
/* 802D2F48 002CFE88 48 00 00 34 */ b lbl_802D2F7C
lbl_802D2F4C:
/* 802D2F4C 002CFE8C 93 E1 00 08 */ stw r31, 8(r1)
/* 802D2F50 002CFE90 83 FF 00 0C */ lwz r31, 0xc(r31)
/* 802D2F54 002CFE94 80 61 00 08 */ lwz r3, 8(r1)
/* 802D2F58 002CFE98 90 61 00 0C */ stw r3, 0xc(r1)
/* 802D2F5C 002CFE9C 80 63 00 00 */ lwz r3, 0(r3)
/* 802D2F60 002CFEA0 28 03 00 00 */ cmplwi r3, 0
/* 802D2F64 002CFEA4 41 82 00 18 */ beq lbl_802D2F7C
/* 802D2F68 002CFEA8 38 80 00 01 */ li r4, 1
/* 802D2F6C 002CFEAC 81 83 00 00 */ lwz r12, 0(r3)
/* 802D2F70 002CFEB0 81 8C 00 08 */ lwz r12, 8(r12)
/* 802D2F74 002CFEB4 7D 89 03 A6 */ mtctr r12
/* 802D2F78 002CFEB8 4E 80 04 21 */ bctrl
lbl_802D2F7C:
/* 802D2F7C 002CFEBC 28 1F 00 00 */ cmplwi r31, 0
/* 802D2F80 002CFEC0 40 82 FF CC */ bne lbl_802D2F4C
/* 802D2F84 002CFEC4 7F A3 EB 78 */ mr r3, r29
/* 802D2F88 002CFEC8 38 80 00 00 */ li r4, 0
/* 802D2F8C 002CFECC 4B FF E5 59 */ bl JKRDisposer_NS_dtor
/* 802D2F90 002CFED0 7F C0 07 35 */ extsh. r0, r30
/* 802D2F94 002CFED4 40 81 00 0C */ ble lbl_802D2FA0
/* 802D2F98 002CFED8 7F A3 EB 78 */ mr r3, r29
/* 802D2F9C 002CFEDC 4B FF BD A1 */ bl __dl
lbl_802D2FA0:
/* 802D2FA0 002CFEE0 7F A3 EB 78 */ mr r3, r29
/* 802D2FA4 002CFEE4 39 61 00 20 */ addi r11, r1, 0x20
/* 802D2FA8 002CFEE8 48 08 F2 81 */ bl _restgpr_29
/* 802D2FAC 002CFEEC 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802D2FB0 002CFEF0 7C 08 03 A6 */ mtlr r0
/* 802D2FB4 002CFEF4 38 21 00 20 */ addi r1, r1, 0x20
/* 802D2FB8 002CFEF8 4E 80 00 20 */ blr
.global JKRAramHeap_NS_alloc
JKRAramHeap_NS_alloc:
/* 802D2FBC 002CFEFC 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802D2FC0 002CFF00 7C 08 02 A6 */ mflr r0
/* 802D2FC4 002CFF04 90 01 00 24 */ stw r0, 0x24(r1)
/* 802D2FC8 002CFF08 39 61 00 20 */ addi r11, r1, 0x20
/* 802D2FCC 002CFF0C 48 08 F2 11 */ bl _savegpr_29
/* 802D2FD0 002CFF10 7C 7D 1B 78 */ mr r29, r3
/* 802D2FD4 002CFF14 7C 9E 23 78 */ mr r30, r4
/* 802D2FD8 002CFF18 7C BF 2B 78 */ mr r31, r5
/* 802D2FDC 002CFF1C 38 7D 00 18 */ addi r3, r29, 0x18
/* 802D2FE0 002CFF20 48 06 C0 61 */ bl OSLockMutex
/* 802D2FE4 002CFF24 2C 1F 00 00 */ cmpwi r31, 0
/* 802D2FE8 002CFF28 40 82 00 18 */ bne lbl_802D3000
/* 802D2FEC 002CFF2C 7F A3 EB 78 */ mr r3, r29
/* 802D2FF0 002CFF30 7F C4 F3 78 */ mr r4, r30
/* 802D2FF4 002CFF34 48 00 00 41 */ bl JKRAramHeap_NS_allocFromHead
/* 802D2FF8 002CFF38 7C 7F 1B 78 */ mr r31, r3
/* 802D2FFC 002CFF3C 48 00 00 14 */ b lbl_802D3010
lbl_802D3000:
/* 802D3000 002CFF40 7F A3 EB 78 */ mr r3, r29
/* 802D3004 002CFF44 7F C4 F3 78 */ mr r4, r30
/* 802D3008 002CFF48 48 00 00 B5 */ bl JKRAramHeap_NS_allocFromTail
/* 802D300C 002CFF4C 7C 7F 1B 78 */ mr r31, r3
lbl_802D3010:
/* 802D3010 002CFF50 38 7D 00 18 */ addi r3, r29, 0x18
/* 802D3014 002CFF54 48 06 C1 09 */ bl OSUnlockMutex
/* 802D3018 002CFF58 7F E3 FB 78 */ mr r3, r31
/* 802D301C 002CFF5C 39 61 00 20 */ addi r11, r1, 0x20
/* 802D3020 002CFF60 48 08 F2 09 */ bl _restgpr_29
/* 802D3024 002CFF64 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802D3028 002CFF68 7C 08 03 A6 */ mtlr r0
/* 802D302C 002CFF6C 38 21 00 20 */ addi r1, r1, 0x20
/* 802D3030 002CFF70 4E 80 00 20 */ blr
.global JKRAramHeap_NS_allocFromHead
JKRAramHeap_NS_allocFromHead:
/* 802D3034 002CFF74 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802D3038 002CFF78 7C 08 02 A6 */ mflr r0
/* 802D303C 002CFF7C 90 01 00 14 */ stw r0, 0x14(r1)
/* 802D3040 002CFF80 7C 66 1B 78 */ mr r6, r3
/* 802D3044 002CFF84 38 04 00 1F */ addi r0, r4, 0x1f
/* 802D3048 002CFF88 54 04 00 34 */ rlwinm r4, r0, 0, 0, 0x1a
/* 802D304C 002CFF8C 39 00 FF FF */ li r8, -1
/* 802D3050 002CFF90 38 60 00 00 */ li r3, 0
/* 802D3054 002CFF94 3C A0 80 43 */ lis r5, lbl_8043430C@ha
/* 802D3058 002CFF98 80 E5 43 0C */ lwz r7, lbl_8043430C@l(r5)
/* 802D305C 002CFF9C 48 00 00 30 */ b lbl_802D308C
lbl_802D3060:
/* 802D3060 002CFFA0 80 A7 00 00 */ lwz r5, 0(r7)
/* 802D3064 002CFFA4 80 05 00 1C */ lwz r0, 0x1c(r5)
/* 802D3068 002CFFA8 7C 00 20 40 */ cmplw r0, r4
/* 802D306C 002CFFAC 41 80 00 1C */ blt lbl_802D3088
/* 802D3070 002CFFB0 7C 08 00 40 */ cmplw r8, r0
/* 802D3074 002CFFB4 40 81 00 14 */ ble lbl_802D3088
/* 802D3078 002CFFB8 7C 08 03 78 */ mr r8, r0
/* 802D307C 002CFFBC 7C A3 2B 78 */ mr r3, r5
/* 802D3080 002CFFC0 7C 00 20 40 */ cmplw r0, r4
/* 802D3084 002CFFC4 41 82 00 10 */ beq lbl_802D3094
lbl_802D3088:
/* 802D3088 002CFFC8 80 E7 00 0C */ lwz r7, 0xc(r7)
lbl_802D308C:
/* 802D308C 002CFFCC 28 07 00 00 */ cmplwi r7, 0
/* 802D3090 002CFFD0 40 82 FF D0 */ bne lbl_802D3060
lbl_802D3094:
/* 802D3094 002CFFD4 28 03 00 00 */ cmplwi r3, 0
/* 802D3098 002CFFD8 41 82 00 10 */ beq lbl_802D30A8
/* 802D309C 002CFFDC 88 A6 00 40 */ lbz r5, 0x40(r6)
/* 802D30A0 002CFFE0 48 00 03 95 */ bl JKRAramBlock_NS_allocHead
/* 802D30A4 002CFFE4 48 00 00 08 */ b lbl_802D30AC
lbl_802D30A8:
/* 802D30A8 002CFFE8 38 60 00 00 */ li r3, 0
lbl_802D30AC:
/* 802D30AC 002CFFEC 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802D30B0 002CFFF0 7C 08 03 A6 */ mtlr r0
/* 802D30B4 002CFFF4 38 21 00 10 */ addi r1, r1, 0x10
/* 802D30B8 002CFFF8 4E 80 00 20 */ blr
.global JKRAramHeap_NS_allocFromTail
JKRAramHeap_NS_allocFromTail:
/* 802D30BC 002CFFFC 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802D30C0 002D0000 7C 08 02 A6 */ mflr r0
/* 802D30C4 002D0004 90 01 00 14 */ stw r0, 0x14(r1)
/* 802D30C8 002D0008 7C 66 1B 78 */ mr r6, r3
/* 802D30CC 002D000C 38 04 00 1F */ addi r0, r4, 0x1f
/* 802D30D0 002D0010 54 04 00 34 */ rlwinm r4, r0, 0, 0, 0x1a
/* 802D30D4 002D0014 38 60 00 00 */ li r3, 0
/* 802D30D8 002D0018 3C A0 80 43 */ lis r5, lbl_8043430C@ha
/* 802D30DC 002D001C 38 A5 43 0C */ addi r5, r5, lbl_8043430C@l
/* 802D30E0 002D0020 80 E5 00 04 */ lwz r7, 4(r5)
/* 802D30E4 002D0024 48 00 00 20 */ b lbl_802D3104
lbl_802D30E8:
/* 802D30E8 002D0028 80 A7 00 00 */ lwz r5, 0(r7)
/* 802D30EC 002D002C 80 05 00 1C */ lwz r0, 0x1c(r5)
/* 802D30F0 002D0030 7C 00 20 40 */ cmplw r0, r4
/* 802D30F4 002D0034 41 80 00 0C */ blt lbl_802D3100
/* 802D30F8 002D0038 7C A3 2B 78 */ mr r3, r5
/* 802D30FC 002D003C 48 00 00 10 */ b lbl_802D310C
lbl_802D3100:
/* 802D3100 002D0040 80 E7 00 08 */ lwz r7, 8(r7)
lbl_802D3104:
/* 802D3104 002D0044 28 07 00 00 */ cmplwi r7, 0
/* 802D3108 002D0048 40 82 FF E0 */ bne lbl_802D30E8
lbl_802D310C:
/* 802D310C 002D004C 28 03 00 00 */ cmplwi r3, 0
/* 802D3110 002D0050 41 82 00 10 */ beq lbl_802D3120
/* 802D3114 002D0054 88 A6 00 40 */ lbz r5, 0x40(r6)
/* 802D3118 002D0058 48 00 03 B9 */ bl JKRAramBlock_NS_allocTail
/* 802D311C 002D005C 48 00 00 08 */ b lbl_802D3124
lbl_802D3120:
/* 802D3120 002D0060 38 60 00 00 */ li r3, 0
lbl_802D3124:
/* 802D3124 002D0064 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802D3128 002D0068 7C 08 03 A6 */ mtlr r0
/* 802D312C 002D006C 38 21 00 10 */ addi r1, r1, 0x10
/* 802D3130 002D0070 4E 80 00 20 */ blr
.global JKRAramHeap_NS_getFreeSize
JKRAramHeap_NS_getFreeSize:
/* 802D3134 002D0074 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802D3138 002D0078 7C 08 02 A6 */ mflr r0
/* 802D313C 002D007C 90 01 00 14 */ stw r0, 0x14(r1)
/* 802D3140 002D0080 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802D3144 002D0084 93 C1 00 08 */ stw r30, 8(r1)
/* 802D3148 002D0088 7C 7E 1B 78 */ mr r30, r3
/* 802D314C 002D008C 3B E0 00 00 */ li r31, 0
/* 802D3150 002D0090 38 7E 00 18 */ addi r3, r30, 0x18
/* 802D3154 002D0094 48 06 BE ED */ bl OSLockMutex
/* 802D3158 002D0098 3C 60 80 43 */ lis r3, lbl_8043430C@ha
/* 802D315C 002D009C 38 63 43 0C */ addi r3, r3, lbl_8043430C@l
/* 802D3160 002D00A0 80 63 00 00 */ lwz r3, 0(r3)
/* 802D3164 002D00A4 48 00 00 1C */ b lbl_802D3180
lbl_802D3168:
/* 802D3168 002D00A8 80 83 00 00 */ lwz r4, 0(r3)
/* 802D316C 002D00AC 80 04 00 1C */ lwz r0, 0x1c(r4)
/* 802D3170 002D00B0 7C 00 F8 40 */ cmplw r0, r31
/* 802D3174 002D00B4 40 81 00 08 */ ble lbl_802D317C
/* 802D3178 002D00B8 7C 1F 03 78 */ mr r31, r0
lbl_802D317C:
/* 802D317C 002D00BC 80 63 00 0C */ lwz r3, 0xc(r3)
lbl_802D3180:
/* 802D3180 002D00C0 28 03 00 00 */ cmplwi r3, 0
/* 802D3184 002D00C4 40 82 FF E4 */ bne lbl_802D3168
/* 802D3188 002D00C8 38 7E 00 18 */ addi r3, r30, 0x18
/* 802D318C 002D00CC 48 06 BF 91 */ bl OSUnlockMutex
/* 802D3190 002D00D0 7F E3 FB 78 */ mr r3, r31
/* 802D3194 002D00D4 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802D3198 002D00D8 83 C1 00 08 */ lwz r30, 8(r1)
/* 802D319C 002D00DC 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802D31A0 002D00E0 7C 08 03 A6 */ mtlr r0
/* 802D31A4 002D00E4 38 21 00 10 */ addi r1, r1, 0x10
/* 802D31A8 002D00E8 4E 80 00 20 */ blr
.global JKRAramHeap_NS_getTotalFreeSize
JKRAramHeap_NS_getTotalFreeSize:
/* 802D31AC 002D00EC 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802D31B0 002D00F0 7C 08 02 A6 */ mflr r0
/* 802D31B4 002D00F4 90 01 00 14 */ stw r0, 0x14(r1)
/* 802D31B8 002D00F8 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802D31BC 002D00FC 93 C1 00 08 */ stw r30, 8(r1)
/* 802D31C0 002D0100 7C 7E 1B 78 */ mr r30, r3
/* 802D31C4 002D0104 3B E0 00 00 */ li r31, 0
/* 802D31C8 002D0108 38 7E 00 18 */ addi r3, r30, 0x18
/* 802D31CC 002D010C 48 06 BE 75 */ bl OSLockMutex
/* 802D31D0 002D0110 3C 60 80 43 */ lis r3, lbl_8043430C@ha
/* 802D31D4 002D0114 80 83 43 0C */ lwz r4, lbl_8043430C@l(r3)
/* 802D31D8 002D0118 48 00 00 14 */ b lbl_802D31EC
lbl_802D31DC:
/* 802D31DC 002D011C 80 64 00 00 */ lwz r3, 0(r4)
/* 802D31E0 002D0120 80 03 00 1C */ lwz r0, 0x1c(r3)
/* 802D31E4 002D0124 7F FF 02 14 */ add r31, r31, r0
/* 802D31E8 002D0128 80 84 00 0C */ lwz r4, 0xc(r4)
lbl_802D31EC:
/* 802D31EC 002D012C 28 04 00 00 */ cmplwi r4, 0
/* 802D31F0 002D0130 40 82 FF EC */ bne lbl_802D31DC
/* 802D31F4 002D0134 38 7E 00 18 */ addi r3, r30, 0x18
/* 802D31F8 002D0138 48 06 BF 25 */ bl OSUnlockMutex
/* 802D31FC 002D013C 7F E3 FB 78 */ mr r3, r31
/* 802D3200 002D0140 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802D3204 002D0144 83 C1 00 08 */ lwz r30, 8(r1)
/* 802D3208 002D0148 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802D320C 002D014C 7C 08 03 A6 */ mtlr r0
/* 802D3210 002D0150 38 21 00 10 */ addi r1, r1, 0x10
/* 802D3214 002D0154 4E 80 00 20 */ blr
.global JKRAramHeap_NS_dump
JKRAramHeap_NS_dump:
/* 802D3218 002D0158 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802D321C 002D015C 7C 08 02 A6 */ mflr r0
/* 802D3220 002D0160 90 01 00 14 */ stw r0, 0x14(r1)
/* 802D3224 002D0164 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802D3228 002D0168 7C 7F 1B 78 */ mr r31, r3
/* 802D322C 002D016C 38 7F 00 18 */ addi r3, r31, 0x18
/* 802D3230 002D0170 48 06 BE 11 */ bl OSLockMutex
/* 802D3234 002D0174 3C 60 80 43 */ lis r3, lbl_8043430C@ha
/* 802D3238 002D0178 38 63 43 0C */ addi r3, r3, lbl_8043430C@l
/* 802D323C 002D017C 80 63 00 00 */ lwz r3, 0(r3)
/* 802D3240 002D0180 48 00 00 08 */ b lbl_802D3248
lbl_802D3244:
/* 802D3244 002D0184 80 63 00 0C */ lwz r3, 0xc(r3)
lbl_802D3248:
/* 802D3248 002D0188 28 03 00 00 */ cmplwi r3, 0
/* 802D324C 002D018C 40 82 FF F8 */ bne lbl_802D3244
/* 802D3250 002D0190 38 7F 00 18 */ addi r3, r31, 0x18
/* 802D3254 002D0194 48 06 BE C9 */ bl OSUnlockMutex
/* 802D3258 002D0198 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802D325C 002D019C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802D3260 002D01A0 7C 08 03 A6 */ mtlr r0
/* 802D3264 002D01A4 38 21 00 10 */ addi r1, r1, 0x10
/* 802D3268 002D01A8 4E 80 00 20 */ blr
/* 802D326C 002D01AC 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802D3270 002D01B0 7C 08 02 A6 */ mflr r0
/* 802D3274 002D01B4 90 01 00 14 */ stw r0, 0x14(r1)
/* 802D3278 002D01B8 3C 60 80 43 */ lis r3, lbl_8043430C@ha
/* 802D327C 002D01BC 38 63 43 0C */ addi r3, r3, lbl_8043430C@l
/* 802D3280 002D01C0 48 00 8C 95 */ bl JSUPtrList_NS_initiate
/* 802D3284 002D01C4 3C 60 80 43 */ lis r3, lbl_8043430C@ha
/* 802D3288 002D01C8 38 63 43 0C */ addi r3, r3, lbl_8043430C@l
.global JSUList_NS_dtor_X5_
/* 802D328C 002D01CC 3C 80 80 2D */ lis r4, JSUList_NS_dtor_X5_@ha
.global JSUList_NS_dtor_X5_
/* 802D3290 002D01D0 38 84 32 B0 */ addi r4, r4, JSUList_NS_dtor_X5_@l
/* 802D3294 002D01D4 3C A0 80 43 */ lis r5, lbl_80434300@ha
/* 802D3298 002D01D8 38 A5 43 00 */ addi r5, r5, lbl_80434300@l
/* 802D329C 002D01DC 48 08 E9 89 */ bl func_80361C24
/* 802D32A0 002D01E0 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802D32A4 002D01E4 7C 08 03 A6 */ mtlr r0
/* 802D32A8 002D01E8 38 21 00 10 */ addi r1, r1, 0x10
/* 802D32AC 002D01EC 4E 80 00 20 */ blr
.global JSUList_NS_dtor_X5_
JSUList_NS_dtor_X5_:
/* 802D32B0 002D01F0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802D32B4 002D01F4 7C 08 02 A6 */ mflr r0
/* 802D32B8 002D01F8 90 01 00 14 */ stw r0, 0x14(r1)
/* 802D32BC 002D01FC 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802D32C0 002D0200 93 C1 00 08 */ stw r30, 8(r1)
/* 802D32C4 002D0204 7C 7E 1B 79 */ or. r30, r3, r3
/* 802D32C8 002D0208 7C 9F 23 78 */ mr r31, r4
/* 802D32CC 002D020C 41 82 00 1C */ beq lbl_802D32E8
/* 802D32D0 002D0210 38 80 00 00 */ li r4, 0
/* 802D32D4 002D0214 48 00 8B D9 */ bl JSUPtrList_NS_dtor
/* 802D32D8 002D0218 7F E0 07 35 */ extsh. r0, r31
/* 802D32DC 002D021C 40 81 00 0C */ ble lbl_802D32E8
/* 802D32E0 002D0220 7F C3 F3 78 */ mr r3, r30
/* 802D32E4 002D0224 4B FF BA 59 */ bl __dl
lbl_802D32E8:
/* 802D32E8 002D0228 7F C3 F3 78 */ mr r3, r30
/* 802D32EC 002D022C 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802D32F0 002D0230 83 C1 00 08 */ lwz r30, 8(r1)
/* 802D32F4 002D0234 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802D32F8 002D0238 7C 08 03 A6 */ mtlr r0
/* 802D32FC 002D023C 38 21 00 10 */ addi r1, r1, 0x10
/* 802D3300 002D0240 4E 80 00 20 */ blr