summaryrefslogtreecommitdiff
path: root/asm/SDK/AX/AXAlloc.s
blob: a3a5687a2aed3192494dc15cd7da663d2b5f357f (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
.include "macros.inc"

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

.global __AXGetStackHead
__AXGetStackHead:
/* 8028F094 0028ACF4  3C 80 80 52 */	lis r4, lbl_8051B8C0@ha
/* 8028F098 0028ACF8  54 60 10 3A */	slwi r0, r3, 2
/* 8028F09C 0028ACFC  38 84 B8 C0 */	addi r4, r4, lbl_8051B8C0@l
/* 8028F0A0 0028AD00  7C 64 00 2E */	lwzx r3, r4, r0
/* 8028F0A4 0028AD04  4E 80 00 20 */	blr

.global __AXServiceCallbackStack
__AXServiceCallbackStack:
/* 8028F0A8 0028AD08  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8028F0AC 0028AD0C  7C 08 02 A6 */	mflr r0
/* 8028F0B0 0028AD10  90 01 00 24 */	stw r0, 0x24(r1)
/* 8028F0B4 0028AD14  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8028F0B8 0028AD18  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8028F0BC 0028AD1C  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8028F0C0 0028AD20  83 AD AB 18 */	lwz r29, lbl_8063FDD8-_SDA_BASE_(r13)
/* 8028F0C4 0028AD24  2C 1D 00 00 */	cmpwi r29, 0
/* 8028F0C8 0028AD28  41 82 00 0C */	beq lbl_8028F0D4
/* 8028F0CC 0028AD2C  80 1D 00 08 */	lwz r0, 8(r29)
/* 8028F0D0 0028AD30  90 0D AB 18 */	stw r0, lbl_8063FDD8-_SDA_BASE_(r13)
lbl_8028F0D4:
/* 8028F0D4 0028AD34  3F C0 80 52 */	lis r30, 0x8052
/* 8028F0D8 0028AD38  3B E0 00 00 */	li r31, 0
/* 8028F0DC 0028AD3C  48 00 00 54 */	b lbl_8028F130
lbl_8028F0E0:
/* 8028F0E0 0028AD40  80 1D 00 0C */	lwz r0, 0xc(r29)
/* 8028F0E4 0028AD44  2C 00 00 00 */	cmpwi r0, 0
/* 8028F0E8 0028AD48  41 82 00 34 */	beq lbl_8028F11C
/* 8028F0EC 0028AD4C  81 9D 00 10 */	lwz r12, 0x10(r29)
/* 8028F0F0 0028AD50  2C 0C 00 00 */	cmpwi r12, 0
/* 8028F0F4 0028AD54  41 82 00 10 */	beq lbl_8028F104
/* 8028F0F8 0028AD58  7F A3 EB 78 */	mr r3, r29
/* 8028F0FC 0028AD5C  7D 89 03 A6 */	mtctr r12
/* 8028F100 0028AD60  4E 80 04 21 */	bctrl
lbl_8028F104:
/* 8028F104 0028AD64  7F A3 EB 78 */	mr r3, r29
/* 8028F108 0028AD68  48 00 01 29 */	bl __AXRemoveFromStack
/* 8028F10C 0028AD6C  80 1E B8 C0 */	lwz r0, -0x4740(r30)
/* 8028F110 0028AD70  90 1D 00 00 */	stw r0, 0(r29)
/* 8028F114 0028AD74  93 BE B8 C0 */	stw r29, -0x4740(r30)
/* 8028F118 0028AD78  93 FD 00 0C */	stw r31, 0xc(r29)
lbl_8028F11C:
/* 8028F11C 0028AD7C  83 AD AB 18 */	lwz r29, lbl_8063FDD8-_SDA_BASE_(r13)
/* 8028F120 0028AD80  2C 1D 00 00 */	cmpwi r29, 0
/* 8028F124 0028AD84  41 82 00 0C */	beq lbl_8028F130
/* 8028F128 0028AD88  80 1D 00 08 */	lwz r0, 8(r29)
/* 8028F12C 0028AD8C  90 0D AB 18 */	stw r0, lbl_8063FDD8-_SDA_BASE_(r13)
lbl_8028F130:
/* 8028F130 0028AD90  2C 1D 00 00 */	cmpwi r29, 0
/* 8028F134 0028AD94  40 82 FF AC */	bne lbl_8028F0E0
/* 8028F138 0028AD98  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8028F13C 0028AD9C  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8028F140 0028ADA0  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8028F144 0028ADA4  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8028F148 0028ADA8  7C 08 03 A6 */	mtlr r0
/* 8028F14C 0028ADAC  38 21 00 20 */	addi r1, r1, 0x20
/* 8028F150 0028ADB0  4E 80 00 20 */	blr

.global __AXAllocInit
__AXAllocInit:
/* 8028F154 0028ADB4  38 60 00 00 */	li r3, 0
/* 8028F158 0028ADB8  3C 80 80 52 */	lis r4, lbl_8051B940@ha
/* 8028F15C 0028ADBC  3C A0 80 52 */	lis r5, lbl_8051B8C0@ha
/* 8028F160 0028ADC0  38 00 00 02 */	li r0, 2
/* 8028F164 0028ADC4  90 6D AB 18 */	stw r3, lbl_8063FDD8-_SDA_BASE_(r13)
/* 8028F168 0028ADC8  38 84 B9 40 */	addi r4, r4, lbl_8051B940@l
/* 8028F16C 0028ADCC  38 A5 B8 C0 */	addi r5, r5, lbl_8051B8C0@l
/* 8028F170 0028ADD0  7C 09 03 A6 */	mtctr r0
lbl_8028F174:
/* 8028F174 0028ADD4  90 64 00 00 */	stw r3, 0(r4)
/* 8028F178 0028ADD8  90 65 00 00 */	stw r3, 0(r5)
/* 8028F17C 0028ADDC  90 64 00 04 */	stw r3, 4(r4)
/* 8028F180 0028ADE0  90 65 00 04 */	stw r3, 4(r5)
/* 8028F184 0028ADE4  90 64 00 08 */	stw r3, 8(r4)
/* 8028F188 0028ADE8  90 65 00 08 */	stw r3, 8(r5)
/* 8028F18C 0028ADEC  90 64 00 0C */	stw r3, 0xc(r4)
/* 8028F190 0028ADF0  90 65 00 0C */	stw r3, 0xc(r5)
/* 8028F194 0028ADF4  90 64 00 10 */	stw r3, 0x10(r4)
/* 8028F198 0028ADF8  90 65 00 10 */	stw r3, 0x10(r5)
/* 8028F19C 0028ADFC  90 64 00 14 */	stw r3, 0x14(r4)
/* 8028F1A0 0028AE00  90 65 00 14 */	stw r3, 0x14(r5)
/* 8028F1A4 0028AE04  90 64 00 18 */	stw r3, 0x18(r4)
/* 8028F1A8 0028AE08  90 65 00 18 */	stw r3, 0x18(r5)
/* 8028F1AC 0028AE0C  90 64 00 1C */	stw r3, 0x1c(r4)
/* 8028F1B0 0028AE10  90 65 00 1C */	stw r3, 0x1c(r5)
/* 8028F1B4 0028AE14  90 64 00 20 */	stw r3, 0x20(r4)
/* 8028F1B8 0028AE18  90 65 00 20 */	stw r3, 0x20(r5)
/* 8028F1BC 0028AE1C  90 64 00 24 */	stw r3, 0x24(r4)
/* 8028F1C0 0028AE20  90 65 00 24 */	stw r3, 0x24(r5)
/* 8028F1C4 0028AE24  90 64 00 28 */	stw r3, 0x28(r4)
/* 8028F1C8 0028AE28  90 65 00 28 */	stw r3, 0x28(r5)
/* 8028F1CC 0028AE2C  90 64 00 2C */	stw r3, 0x2c(r4)
/* 8028F1D0 0028AE30  90 65 00 2C */	stw r3, 0x2c(r5)
/* 8028F1D4 0028AE34  90 64 00 30 */	stw r3, 0x30(r4)
/* 8028F1D8 0028AE38  90 65 00 30 */	stw r3, 0x30(r5)
/* 8028F1DC 0028AE3C  90 64 00 34 */	stw r3, 0x34(r4)
/* 8028F1E0 0028AE40  90 65 00 34 */	stw r3, 0x34(r5)
/* 8028F1E4 0028AE44  90 64 00 38 */	stw r3, 0x38(r4)
/* 8028F1E8 0028AE48  90 65 00 38 */	stw r3, 0x38(r5)
/* 8028F1EC 0028AE4C  90 64 00 3C */	stw r3, 0x3c(r4)
/* 8028F1F0 0028AE50  38 84 00 40 */	addi r4, r4, 0x40
/* 8028F1F4 0028AE54  90 65 00 3C */	stw r3, 0x3c(r5)
/* 8028F1F8 0028AE58  38 A5 00 40 */	addi r5, r5, 0x40
/* 8028F1FC 0028AE5C  42 00 FF 78 */	bdnz lbl_8028F174
/* 8028F200 0028AE60  4E 80 00 20 */	blr

.global __AXPushFreeStack
__AXPushFreeStack:
/* 8028F204 0028AE64  3C A0 80 52 */	lis r5, lbl_8051B8C0@ha
/* 8028F208 0028AE68  38 00 00 00 */	li r0, 0
/* 8028F20C 0028AE6C  80 85 B8 C0 */	lwz r4, lbl_8051B8C0@l(r5)
/* 8028F210 0028AE70  90 83 00 00 */	stw r4, 0(r3)
/* 8028F214 0028AE74  90 65 B8 C0 */	stw r3, -0x4740(r5)
/* 8028F218 0028AE78  90 03 00 0C */	stw r0, 0xc(r3)
/* 8028F21C 0028AE7C  4E 80 00 20 */	blr

.global __AXPushCallbackStack
__AXPushCallbackStack:
/* 8028F220 0028AE80  80 0D AB 18 */	lwz r0, lbl_8063FDD8-_SDA_BASE_(r13)
/* 8028F224 0028AE84  90 03 00 08 */	stw r0, 8(r3)
/* 8028F228 0028AE88  90 6D AB 18 */	stw r3, lbl_8063FDD8-_SDA_BASE_(r13)
/* 8028F22C 0028AE8C  4E 80 00 20 */	blr

.global __AXRemoveFromStack
__AXRemoveFromStack:
/* 8028F230 0028AE90  80 03 00 0C */	lwz r0, 0xc(r3)
/* 8028F234 0028AE94  3C A0 80 52 */	lis r5, lbl_8051B8C0@ha
/* 8028F238 0028AE98  3C 80 80 52 */	lis r4, lbl_8051B940@ha
/* 8028F23C 0028AE9C  54 06 10 3A */	slwi r6, r0, 2
/* 8028F240 0028AEA0  38 A5 B8 C0 */	addi r5, r5, lbl_8051B8C0@l
/* 8028F244 0028AEA4  38 84 B9 40 */	addi r4, r4, lbl_8051B940@l
/* 8028F248 0028AEA8  7C 05 30 2E */	lwzx r0, r5, r6
/* 8028F24C 0028AEAC  7C E4 30 2E */	lwzx r7, r4, r6
/* 8028F250 0028AEB0  7C 00 38 40 */	cmplw r0, r7
/* 8028F254 0028AEB4  40 82 00 14 */	bne lbl_8028F268
/* 8028F258 0028AEB8  38 00 00 00 */	li r0, 0
/* 8028F25C 0028AEBC  7C 04 31 2E */	stwx r0, r4, r6
/* 8028F260 0028AEC0  7C 05 31 2E */	stwx r0, r5, r6
/* 8028F264 0028AEC4  4E 80 00 20 */	blr
lbl_8028F268:
/* 8028F268 0028AEC8  7C 03 00 40 */	cmplw r3, r0
/* 8028F26C 0028AECC  40 82 00 18 */	bne lbl_8028F284
/* 8028F270 0028AED0  80 63 00 00 */	lwz r3, 0(r3)
/* 8028F274 0028AED4  38 00 00 00 */	li r0, 0
/* 8028F278 0028AED8  7C 65 31 2E */	stwx r3, r5, r6
/* 8028F27C 0028AEDC  90 03 00 04 */	stw r0, 4(r3)
/* 8028F280 0028AEE0  4E 80 00 20 */	blr
lbl_8028F284:
/* 8028F284 0028AEE4  7C 03 38 40 */	cmplw r3, r7
/* 8028F288 0028AEE8  40 82 00 18 */	bne lbl_8028F2A0
/* 8028F28C 0028AEEC  80 63 00 04 */	lwz r3, 4(r3)
/* 8028F290 0028AEF0  38 00 00 00 */	li r0, 0
/* 8028F294 0028AEF4  7C 64 31 2E */	stwx r3, r4, r6
/* 8028F298 0028AEF8  90 03 00 00 */	stw r0, 0(r3)
/* 8028F29C 0028AEFC  4E 80 00 20 */	blr
lbl_8028F2A0:
/* 8028F2A0 0028AF00  80 83 00 04 */	lwz r4, 4(r3)
/* 8028F2A4 0028AF04  80 63 00 00 */	lwz r3, 0(r3)
/* 8028F2A8 0028AF08  90 64 00 00 */	stw r3, 0(r4)
/* 8028F2AC 0028AF0C  90 83 00 04 */	stw r4, 4(r3)
/* 8028F2B0 0028AF10  4E 80 00 20 */	blr

.global AXFreeVoice
AXFreeVoice:
/* 8028F2B4 0028AF14  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8028F2B8 0028AF18  7C 08 02 A6 */	mflr r0
/* 8028F2BC 0028AF1C  90 01 00 14 */	stw r0, 0x14(r1)
/* 8028F2C0 0028AF20  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8028F2C4 0028AF24  93 C1 00 08 */	stw r30, 8(r1)
/* 8028F2C8 0028AF28  7C 7E 1B 78 */	mr r30, r3
/* 8028F2CC 0028AF2C  4B FD F4 91 */	bl OSDisableInterrupts
/* 8028F2D0 0028AF30  7C 7F 1B 78 */	mr r31, r3
/* 8028F2D4 0028AF34  7F C3 F3 78 */	mr r3, r30
/* 8028F2D8 0028AF38  4B FF FF 59 */	bl __AXRemoveFromStack
/* 8028F2DC 0028AF3C  A0 1E 00 38 */	lhz r0, 0x38(r30)
/* 8028F2E0 0028AF40  28 00 00 01 */	cmplwi r0, 1
/* 8028F2E4 0028AF44  40 82 00 0C */	bne lbl_8028F2F0
/* 8028F2E8 0028AF48  38 00 00 01 */	li r0, 1
/* 8028F2EC 0028AF4C  90 1E 00 20 */	stw r0, 0x20(r30)
lbl_8028F2F0:
/* 8028F2F0 0028AF50  7F C3 F3 78 */	mr r3, r30
/* 8028F2F4 0028AF54  48 00 29 79 */	bl __AXSetPBDefault
/* 8028F2F8 0028AF58  3C A0 80 52 */	lis r5, lbl_8051B8C0@ha
/* 8028F2FC 0028AF5C  38 00 00 00 */	li r0, 0
/* 8028F300 0028AF60  80 85 B8 C0 */	lwz r4, lbl_8051B8C0@l(r5)
/* 8028F304 0028AF64  7F E3 FB 78 */	mr r3, r31
/* 8028F308 0028AF68  90 9E 00 00 */	stw r4, 0(r30)
/* 8028F30C 0028AF6C  93 C5 B8 C0 */	stw r30, -0x4740(r5)
/* 8028F310 0028AF70  90 1E 00 0C */	stw r0, 0xc(r30)
/* 8028F314 0028AF74  4B FD F4 71 */	bl OSRestoreInterrupts
/* 8028F318 0028AF78  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8028F31C 0028AF7C  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8028F320 0028AF80  83 C1 00 08 */	lwz r30, 8(r1)
/* 8028F324 0028AF84  7C 08 03 A6 */	mtlr r0
/* 8028F328 0028AF88  38 21 00 10 */	addi r1, r1, 0x10
/* 8028F32C 0028AF8C  4E 80 00 20 */	blr

.global AXAcquireVoice
AXAcquireVoice:
/* 8028F330 0028AF90  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8028F334 0028AF94  7C 08 02 A6 */	mflr r0
/* 8028F338 0028AF98  90 01 00 24 */	stw r0, 0x24(r1)
/* 8028F33C 0028AF9C  39 61 00 20 */	addi r11, r1, 0x20
/* 8028F340 0028AFA0  4B F3 7D E9 */	bl _savegpr_27
/* 8028F344 0028AFA4  7C 7B 1B 78 */	mr r27, r3
/* 8028F348 0028AFA8  7C 9C 23 78 */	mr r28, r4
/* 8028F34C 0028AFAC  7C BD 2B 78 */	mr r29, r5
/* 8028F350 0028AFB0  4B FD F4 0D */	bl OSDisableInterrupts
/* 8028F354 0028AFB4  3C 80 80 52 */	lis r4, lbl_8051B8C0@ha
/* 8028F358 0028AFB8  7C 7F 1B 78 */	mr r31, r3
/* 8028F35C 0028AFBC  83 C4 B8 C0 */	lwz r30, lbl_8051B8C0@l(r4)
/* 8028F360 0028AFC0  2C 1E 00 00 */	cmpwi r30, 0
/* 8028F364 0028AFC4  41 82 00 0C */	beq lbl_8028F370
/* 8028F368 0028AFC8  80 1E 00 00 */	lwz r0, 0(r30)
/* 8028F36C 0028AFCC  90 04 B8 C0 */	stw r0, -0x4740(r4)
lbl_8028F370:
/* 8028F370 0028AFD0  2C 1E 00 00 */	cmpwi r30, 0
/* 8028F374 0028AFD4  40 82 00 B8 */	bne lbl_8028F42C
/* 8028F378 0028AFD8  3C 60 80 52 */	lis r3, lbl_8051B8C0@ha
/* 8028F37C 0028AFDC  3C 80 80 52 */	lis r4, lbl_8051B940@ha
/* 8028F380 0028AFE0  38 63 B8 C0 */	addi r3, r3, lbl_8051B8C0@l
/* 8028F384 0028AFE4  38 1B FF FF */	addi r0, r27, -1
/* 8028F388 0028AFE8  38 84 B9 40 */	addi r4, r4, lbl_8051B940@l
/* 8028F38C 0028AFEC  38 A3 00 04 */	addi r5, r3, 4
/* 8028F390 0028AFF0  38 60 00 00 */	li r3, 0
/* 8028F394 0028AFF4  38 C4 00 04 */	addi r6, r4, 4
/* 8028F398 0028AFF8  7C 09 03 A6 */	mtctr r0
/* 8028F39C 0028AFFC  28 1B 00 01 */	cmplwi r27, 1
/* 8028F3A0 0028B000  40 81 00 8C */	ble lbl_8028F42C
lbl_8028F3A4:
/* 8028F3A4 0028B004  80 05 00 00 */	lwz r0, 0(r5)
/* 8028F3A8 0028B008  3B C0 00 00 */	li r30, 0
/* 8028F3AC 0028B00C  2C 00 00 00 */	cmpwi r0, 0
/* 8028F3B0 0028B010  41 82 00 38 */	beq lbl_8028F3E8
/* 8028F3B4 0028B014  80 E6 00 00 */	lwz r7, 0(r6)
/* 8028F3B8 0028B018  7C 00 38 40 */	cmplw r0, r7
/* 8028F3BC 0028B01C  40 82 00 14 */	bne lbl_8028F3D0
/* 8028F3C0 0028B020  90 66 00 00 */	stw r3, 0(r6)
/* 8028F3C4 0028B024  7C 1E 03 78 */	mr r30, r0
/* 8028F3C8 0028B028  90 65 00 00 */	stw r3, 0(r5)
/* 8028F3CC 0028B02C  48 00 00 1C */	b lbl_8028F3E8
lbl_8028F3D0:
/* 8028F3D0 0028B030  2C 07 00 00 */	cmpwi r7, 0
/* 8028F3D4 0028B034  41 82 00 14 */	beq lbl_8028F3E8
/* 8028F3D8 0028B038  80 87 00 04 */	lwz r4, 4(r7)
/* 8028F3DC 0028B03C  7C FE 3B 78 */	mr r30, r7
/* 8028F3E0 0028B040  90 86 00 00 */	stw r4, 0(r6)
/* 8028F3E4 0028B044  90 64 00 00 */	stw r3, 0(r4)
lbl_8028F3E8:
/* 8028F3E8 0028B048  2C 1E 00 00 */	cmpwi r30, 0
/* 8028F3EC 0028B04C  41 82 00 34 */	beq lbl_8028F420
/* 8028F3F0 0028B050  A0 1E 00 38 */	lhz r0, 0x38(r30)
/* 8028F3F4 0028B054  28 00 00 01 */	cmplwi r0, 1
/* 8028F3F8 0028B058  40 82 00 0C */	bne lbl_8028F404
/* 8028F3FC 0028B05C  38 00 00 01 */	li r0, 1
/* 8028F400 0028B060  90 1E 00 20 */	stw r0, 0x20(r30)
lbl_8028F404:
/* 8028F404 0028B064  81 9E 00 10 */	lwz r12, 0x10(r30)
/* 8028F408 0028B068  2C 0C 00 00 */	cmpwi r12, 0
/* 8028F40C 0028B06C  41 82 00 20 */	beq lbl_8028F42C
/* 8028F410 0028B070  7F C3 F3 78 */	mr r3, r30
/* 8028F414 0028B074  7D 89 03 A6 */	mtctr r12
/* 8028F418 0028B078  4E 80 04 21 */	bctrl
/* 8028F41C 0028B07C  48 00 00 10 */	b lbl_8028F42C
lbl_8028F420:
/* 8028F420 0028B080  38 A5 00 04 */	addi r5, r5, 4
/* 8028F424 0028B084  38 C6 00 04 */	addi r6, r6, 4
/* 8028F428 0028B088  42 00 FF 7C */	bdnz lbl_8028F3A4
lbl_8028F42C:
/* 8028F42C 0028B08C  2C 1E 00 00 */	cmpwi r30, 0
/* 8028F430 0028B090  41 82 00 5C */	beq lbl_8028F48C
/* 8028F434 0028B094  3C 80 80 52 */	lis r4, lbl_8051B8C0@ha
/* 8028F438 0028B098  57 65 10 3A */	slwi r5, r27, 2
/* 8028F43C 0028B09C  38 84 B8 C0 */	addi r4, r4, lbl_8051B8C0@l
/* 8028F440 0028B0A0  38 00 00 00 */	li r0, 0
/* 8028F444 0028B0A4  7C 64 28 2E */	lwzx r3, r4, r5
/* 8028F448 0028B0A8  90 7E 00 00 */	stw r3, 0(r30)
/* 8028F44C 0028B0AC  2C 03 00 00 */	cmpwi r3, 0
/* 8028F450 0028B0B0  90 1E 00 04 */	stw r0, 4(r30)
/* 8028F454 0028B0B4  41 82 00 14 */	beq lbl_8028F468
/* 8028F458 0028B0B8  7C 64 28 2E */	lwzx r3, r4, r5
/* 8028F45C 0028B0BC  93 C3 00 04 */	stw r30, 4(r3)
/* 8028F460 0028B0C0  7F C4 29 2E */	stwx r30, r4, r5
/* 8028F464 0028B0C4  48 00 00 14 */	b lbl_8028F478
lbl_8028F468:
/* 8028F468 0028B0C8  3C 60 80 52 */	lis r3, lbl_8051B940@ha
/* 8028F46C 0028B0CC  7F C4 29 2E */	stwx r30, r4, r5
/* 8028F470 0028B0D0  38 63 B9 40 */	addi r3, r3, lbl_8051B940@l
/* 8028F474 0028B0D4  7F C3 29 2E */	stwx r30, r3, r5
lbl_8028F478:
/* 8028F478 0028B0D8  93 7E 00 0C */	stw r27, 0xc(r30)
/* 8028F47C 0028B0DC  7F C3 F3 78 */	mr r3, r30
/* 8028F480 0028B0E0  93 9E 00 10 */	stw r28, 0x10(r30)
/* 8028F484 0028B0E4  93 BE 00 14 */	stw r29, 0x14(r30)
/* 8028F488 0028B0E8  48 00 27 E5 */	bl __AXSetPBDefault
lbl_8028F48C:
/* 8028F48C 0028B0EC  7F E3 FB 78 */	mr r3, r31
/* 8028F490 0028B0F0  4B FD F2 F5 */	bl OSRestoreInterrupts
/* 8028F494 0028B0F4  39 61 00 20 */	addi r11, r1, 0x20
/* 8028F498 0028B0F8  7F C3 F3 78 */	mr r3, r30
/* 8028F49C 0028B0FC  4B F3 7C D9 */	bl _restgpr_27
/* 8028F4A0 0028B100  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8028F4A4 0028B104  7C 08 03 A6 */	mtlr r0
/* 8028F4A8 0028B108  38 21 00 20 */	addi r1, r1, 0x20
/* 8028F4AC 0028B10C  4E 80 00 20 */	blr

.global AXSetVoicePriority
AXSetVoicePriority:
/* 8028F4B0 0028B110  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8028F4B4 0028B114  7C 08 02 A6 */	mflr r0
/* 8028F4B8 0028B118  90 01 00 24 */	stw r0, 0x24(r1)
/* 8028F4BC 0028B11C  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8028F4C0 0028B120  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8028F4C4 0028B124  7C 9E 23 78 */	mr r30, r4
/* 8028F4C8 0028B128  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8028F4CC 0028B12C  7C 7D 1B 78 */	mr r29, r3
/* 8028F4D0 0028B130  4B FD F2 8D */	bl OSDisableInterrupts
/* 8028F4D4 0028B134  7C 7F 1B 78 */	mr r31, r3
/* 8028F4D8 0028B138  7F A3 EB 78 */	mr r3, r29
/* 8028F4DC 0028B13C  4B FF FD 55 */	bl __AXRemoveFromStack
/* 8028F4E0 0028B140  3C 80 80 52 */	lis r4, lbl_8051B8C0@ha
/* 8028F4E4 0028B144  57 C5 10 3A */	slwi r5, r30, 2
/* 8028F4E8 0028B148  38 84 B8 C0 */	addi r4, r4, lbl_8051B8C0@l
/* 8028F4EC 0028B14C  38 00 00 00 */	li r0, 0
/* 8028F4F0 0028B150  7C 64 28 2E */	lwzx r3, r4, r5
/* 8028F4F4 0028B154  2C 03 00 00 */	cmpwi r3, 0
/* 8028F4F8 0028B158  90 7D 00 00 */	stw r3, 0(r29)
/* 8028F4FC 0028B15C  90 1D 00 04 */	stw r0, 4(r29)
/* 8028F500 0028B160  41 82 00 14 */	beq lbl_8028F514
/* 8028F504 0028B164  7C 64 28 2E */	lwzx r3, r4, r5
/* 8028F508 0028B168  93 A3 00 04 */	stw r29, 4(r3)
/* 8028F50C 0028B16C  7F A4 29 2E */	stwx r29, r4, r5
/* 8028F510 0028B170  48 00 00 14 */	b lbl_8028F524
lbl_8028F514:
/* 8028F514 0028B174  3C 60 80 52 */	lis r3, lbl_8051B940@ha
/* 8028F518 0028B178  7F A4 29 2E */	stwx r29, r4, r5
/* 8028F51C 0028B17C  38 63 B9 40 */	addi r3, r3, lbl_8051B940@l
/* 8028F520 0028B180  7F A3 29 2E */	stwx r29, r3, r5
lbl_8028F524:
/* 8028F524 0028B184  93 DD 00 0C */	stw r30, 0xc(r29)
/* 8028F528 0028B188  7F E3 FB 78 */	mr r3, r31
/* 8028F52C 0028B18C  4B FD F2 59 */	bl OSRestoreInterrupts
/* 8028F530 0028B190  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8028F534 0028B194  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8028F538 0028B198  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8028F53C 0028B19C  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8028F540 0028B1A0  7C 08 03 A6 */	mtlr r0
/* 8028F544 0028B1A4  38 21 00 20 */	addi r1, r1, 0x20
/* 8028F548 0028B1A8  4E 80 00 20 */	blr