summaryrefslogtreecommitdiff
path: root/asm/SDK/AXFX/AXFXDelay.s
blob: f9ba3b22627a7a437c6b886f1fdd27ea4a25ecf7 (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
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
.include "macros.inc"

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

.global AXFXDelayGetMemSize
AXFXDelayGetMemSize:
/* 802944C8 00290128  80 A3 00 40 */	lwz r5, 0x40(r3)
/* 802944CC 0029012C  80 83 00 44 */	lwz r4, 0x44(r3)
/* 802944D0 00290130  80 03 00 48 */	lwz r0, 0x48(r3)
/* 802944D4 00290134  7C 65 22 14 */	add r3, r5, r4
/* 802944D8 00290138  7C 63 02 14 */	add r3, r3, r0
/* 802944DC 0029013C  54 63 38 30 */	slwi r3, r3, 7
/* 802944E0 00290140  4E 80 00 20 */	blr

.global AXFXDelayInit
AXFXDelayInit:
/* 802944E4 00290144  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802944E8 00290148  7C 08 02 A6 */	mflr r0
/* 802944EC 0029014C  90 01 00 24 */	stw r0, 0x24(r1)
/* 802944F0 00290150  39 61 00 20 */	addi r11, r1, 0x20
/* 802944F4 00290154  4B F3 2C 35 */	bl _savegpr_27
/* 802944F8 00290158  7C 7E 1B 78 */	mr r30, r3
/* 802944FC 0029015C  4B FD A2 61 */	bl OSDisableInterrupts
/* 80294500 00290160  38 80 00 01 */	li r4, 1
/* 80294504 00290164  38 00 00 03 */	li r0, 3
/* 80294508 00290168  7C 7F 1B 78 */	mr r31, r3
/* 8029450C 0029016C  7F C3 F3 78 */	mr r3, r30
/* 80294510 00290170  90 9E 00 3C */	stw r4, 0x3c(r30)
/* 80294514 00290174  7C 09 03 A6 */	mtctr r0
lbl_80294518:
/* 80294518 00290178  80 03 00 40 */	lwz r0, 0x40(r3)
/* 8029451C 0029017C  2C 00 00 00 */	cmpwi r0, 0
/* 80294520 00290180  40 82 00 64 */	bne lbl_80294584
/* 80294524 00290184  4B FD A2 39 */	bl OSDisableInterrupts
/* 80294528 00290188  80 1E 00 3C */	lwz r0, 0x3c(r30)
/* 8029452C 0029018C  7C 7B 1B 78 */	mr r27, r3
/* 80294530 00290190  3B 80 00 00 */	li r28, 0
/* 80294534 00290194  3B A0 00 00 */	li r29, 0
/* 80294538 00290198  60 00 00 01 */	ori r0, r0, 1
/* 8029453C 0029019C  90 1E 00 3C */	stw r0, 0x3c(r30)
lbl_80294540:
/* 80294540 002901A0  80 7E 00 00 */	lwz r3, 0(r30)
/* 80294544 002901A4  2C 03 00 00 */	cmpwi r3, 0
/* 80294548 002901A8  41 82 00 14 */	beq lbl_8029455C
/* 8029454C 002901AC  81 8D 88 FC */	lwz r12, lbl_8063DBBC-_SDA_BASE_(r13)
/* 80294550 002901B0  7D 89 03 A6 */	mtctr r12
/* 80294554 002901B4  4E 80 04 21 */	bctrl
/* 80294558 002901B8  93 BE 00 00 */	stw r29, 0(r30)
lbl_8029455C:
/* 8029455C 002901BC  3B 9C 00 01 */	addi r28, r28, 1
/* 80294560 002901C0  3B DE 00 04 */	addi r30, r30, 4
/* 80294564 002901C4  28 1C 00 03 */	cmplwi r28, 3
/* 80294568 002901C8  41 80 FF D8 */	blt lbl_80294540
/* 8029456C 002901CC  7F 63 DB 78 */	mr r3, r27
/* 80294570 002901D0  4B FD A2 15 */	bl OSRestoreInterrupts
/* 80294574 002901D4  7F E3 FB 78 */	mr r3, r31
/* 80294578 002901D8  4B FD A2 0D */	bl OSRestoreInterrupts
/* 8029457C 002901DC  38 60 00 00 */	li r3, 0
/* 80294580 002901E0  48 00 01 4C */	b lbl_802946CC
lbl_80294584:
/* 80294584 002901E4  54 00 28 34 */	slwi r0, r0, 5
/* 80294588 002901E8  90 03 00 18 */	stw r0, 0x18(r3)
/* 8029458C 002901EC  38 63 00 04 */	addi r3, r3, 4
/* 80294590 002901F0  42 00 FF 88 */	bdnz lbl_80294518
/* 80294594 002901F4  7F DC F3 78 */	mr r28, r30
/* 80294598 002901F8  3B 60 00 00 */	li r27, 0
lbl_8029459C:
/* 8029459C 002901FC  80 1C 00 18 */	lwz r0, 0x18(r28)
/* 802945A0 00290200  81 8D 88 F8 */	lwz r12, lbl_8063DBB8-_SDA_BASE_(r13)
/* 802945A4 00290204  54 03 10 3A */	slwi r3, r0, 2
/* 802945A8 00290208  7D 89 03 A6 */	mtctr r12
/* 802945AC 0029020C  4E 80 04 21 */	bctrl
/* 802945B0 00290210  2C 03 00 00 */	cmpwi r3, 0
/* 802945B4 00290214  90 7C 00 00 */	stw r3, 0(r28)
/* 802945B8 00290218  40 82 00 0C */	bne lbl_802945C4
/* 802945BC 0029021C  38 00 00 00 */	li r0, 0
/* 802945C0 00290220  48 00 00 18 */	b lbl_802945D8
lbl_802945C4:
/* 802945C4 00290224  3B 7B 00 01 */	addi r27, r27, 1
/* 802945C8 00290228  3B 9C 00 04 */	addi r28, r28, 4
/* 802945CC 0029022C  28 1B 00 03 */	cmplwi r27, 3
/* 802945D0 00290230  41 80 FF CC */	blt lbl_8029459C
/* 802945D4 00290234  38 00 00 01 */	li r0, 1
lbl_802945D8:
/* 802945D8 00290238  2C 00 00 00 */	cmpwi r0, 0
/* 802945DC 0029023C  40 82 00 64 */	bne lbl_80294640
/* 802945E0 00290240  4B FD A1 7D */	bl OSDisableInterrupts
/* 802945E4 00290244  80 1E 00 3C */	lwz r0, 0x3c(r30)
/* 802945E8 00290248  7C 7C 1B 78 */	mr r28, r3
/* 802945EC 0029024C  3B 60 00 00 */	li r27, 0
/* 802945F0 00290250  3B A0 00 00 */	li r29, 0
/* 802945F4 00290254  60 00 00 01 */	ori r0, r0, 1
/* 802945F8 00290258  90 1E 00 3C */	stw r0, 0x3c(r30)
lbl_802945FC:
/* 802945FC 0029025C  80 7E 00 00 */	lwz r3, 0(r30)
/* 80294600 00290260  2C 03 00 00 */	cmpwi r3, 0
/* 80294604 00290264  41 82 00 14 */	beq lbl_80294618
/* 80294608 00290268  81 8D 88 FC */	lwz r12, lbl_8063DBBC-_SDA_BASE_(r13)
/* 8029460C 0029026C  7D 89 03 A6 */	mtctr r12
/* 80294610 00290270  4E 80 04 21 */	bctrl
/* 80294614 00290274  93 BE 00 00 */	stw r29, 0(r30)
lbl_80294618:
/* 80294618 00290278  3B 7B 00 01 */	addi r27, r27, 1
/* 8029461C 0029027C  3B DE 00 04 */	addi r30, r30, 4
/* 80294620 00290280  28 1B 00 03 */	cmplwi r27, 3
/* 80294624 00290284  41 80 FF D8 */	blt lbl_802945FC
/* 80294628 00290288  7F 83 E3 78 */	mr r3, r28
/* 8029462C 0029028C  4B FD A1 59 */	bl OSRestoreInterrupts
/* 80294630 00290290  7F E3 FB 78 */	mr r3, r31
/* 80294634 00290294  4B FD A1 51 */	bl OSRestoreInterrupts
/* 80294638 00290298  38 60 00 00 */	li r3, 0
/* 8029463C 0029029C  48 00 00 90 */	b lbl_802946CC
lbl_80294640:
/* 80294640 002902A0  7F C3 F3 78 */	mr r3, r30
/* 80294644 002902A4  48 00 03 D5 */	bl __InitParams
/* 80294648 002902A8  2C 03 00 00 */	cmpwi r3, 0
/* 8029464C 002902AC  40 82 00 64 */	bne lbl_802946B0
/* 80294650 002902B0  4B FD A1 0D */	bl OSDisableInterrupts
/* 80294654 002902B4  80 1E 00 3C */	lwz r0, 0x3c(r30)
/* 80294658 002902B8  7C 7C 1B 78 */	mr r28, r3
/* 8029465C 002902BC  3B 60 00 00 */	li r27, 0
/* 80294660 002902C0  3B A0 00 00 */	li r29, 0
/* 80294664 002902C4  60 00 00 01 */	ori r0, r0, 1
/* 80294668 002902C8  90 1E 00 3C */	stw r0, 0x3c(r30)
lbl_8029466C:
/* 8029466C 002902CC  80 7E 00 00 */	lwz r3, 0(r30)
/* 80294670 002902D0  2C 03 00 00 */	cmpwi r3, 0
/* 80294674 002902D4  41 82 00 14 */	beq lbl_80294688
/* 80294678 002902D8  81 8D 88 FC */	lwz r12, lbl_8063DBBC-_SDA_BASE_(r13)
/* 8029467C 002902DC  7D 89 03 A6 */	mtctr r12
/* 80294680 002902E0  4E 80 04 21 */	bctrl
/* 80294684 002902E4  93 BE 00 00 */	stw r29, 0(r30)
lbl_80294688:
/* 80294688 002902E8  3B 7B 00 01 */	addi r27, r27, 1
/* 8029468C 002902EC  3B DE 00 04 */	addi r30, r30, 4
/* 80294690 002902F0  28 1B 00 03 */	cmplwi r27, 3
/* 80294694 002902F4  41 80 FF D8 */	blt lbl_8029466C
/* 80294698 002902F8  7F 83 E3 78 */	mr r3, r28
/* 8029469C 002902FC  4B FD A0 E9 */	bl OSRestoreInterrupts
/* 802946A0 00290300  7F E3 FB 78 */	mr r3, r31
/* 802946A4 00290304  4B FD A0 E1 */	bl OSRestoreInterrupts
/* 802946A8 00290308  38 60 00 00 */	li r3, 0
/* 802946AC 0029030C  48 00 00 20 */	b lbl_802946CC
lbl_802946B0:
/* 802946B0 00290310  80 1E 00 3C */	lwz r0, 0x3c(r30)
/* 802946B4 00290314  7F E3 FB 78 */	mr r3, r31
/* 802946B8 00290318  60 00 00 02 */	ori r0, r0, 2
/* 802946BC 0029031C  54 00 00 3C */	rlwinm r0, r0, 0, 0, 0x1e
/* 802946C0 00290320  90 1E 00 3C */	stw r0, 0x3c(r30)
/* 802946C4 00290324  4B FD A0 C1 */	bl OSRestoreInterrupts
/* 802946C8 00290328  38 60 00 01 */	li r3, 1
lbl_802946CC:
/* 802946CC 0029032C  39 61 00 20 */	addi r11, r1, 0x20
/* 802946D0 00290330  4B F3 2A A5 */	bl _restgpr_27
/* 802946D4 00290334  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802946D8 00290338  7C 08 03 A6 */	mtlr r0
/* 802946DC 0029033C  38 21 00 20 */	addi r1, r1, 0x20
/* 802946E0 00290340  4E 80 00 20 */	blr

.global AXFXDelaySettings
AXFXDelaySettings:
/* 802946E4 00290344  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802946E8 00290348  7C 08 02 A6 */	mflr r0
/* 802946EC 0029034C  90 01 00 24 */	stw r0, 0x24(r1)
/* 802946F0 00290350  39 61 00 20 */	addi r11, r1, 0x20
/* 802946F4 00290354  4B F3 2A 31 */	bl _savegpr_26
/* 802946F8 00290358  7C 7F 1B 78 */	mr r31, r3
/* 802946FC 0029035C  4B FD A0 61 */	bl OSDisableInterrupts
/* 80294700 00290360  80 1F 00 3C */	lwz r0, 0x3c(r31)
/* 80294704 00290364  7C 7A 1B 78 */	mr r26, r3
/* 80294708 00290368  60 00 00 01 */	ori r0, r0, 1
/* 8029470C 0029036C  90 1F 00 3C */	stw r0, 0x3c(r31)
/* 80294710 00290370  4B FD A0 4D */	bl OSDisableInterrupts
/* 80294714 00290374  80 1F 00 3C */	lwz r0, 0x3c(r31)
/* 80294718 00290378  7C 7C 1B 78 */	mr r28, r3
/* 8029471C 0029037C  7F FB FB 78 */	mr r27, r31
/* 80294720 00290380  3B A0 00 00 */	li r29, 0
/* 80294724 00290384  60 00 00 01 */	ori r0, r0, 1
/* 80294728 00290388  3B C0 00 00 */	li r30, 0
/* 8029472C 0029038C  90 1F 00 3C */	stw r0, 0x3c(r31)
lbl_80294730:
/* 80294730 00290390  80 7B 00 00 */	lwz r3, 0(r27)
/* 80294734 00290394  2C 03 00 00 */	cmpwi r3, 0
/* 80294738 00290398  41 82 00 14 */	beq lbl_8029474C
/* 8029473C 0029039C  81 8D 88 FC */	lwz r12, lbl_8063DBBC-_SDA_BASE_(r13)
/* 80294740 002903A0  7D 89 03 A6 */	mtctr r12
/* 80294744 002903A4  4E 80 04 21 */	bctrl
/* 80294748 002903A8  93 DB 00 00 */	stw r30, 0(r27)
lbl_8029474C:
/* 8029474C 002903AC  3B BD 00 01 */	addi r29, r29, 1
/* 80294750 002903B0  3B 7B 00 04 */	addi r27, r27, 4
/* 80294754 002903B4  28 1D 00 03 */	cmplwi r29, 3
/* 80294758 002903B8  41 80 FF D8 */	blt lbl_80294730
/* 8029475C 002903BC  7F 83 E3 78 */	mr r3, r28
/* 80294760 002903C0  4B FD A0 25 */	bl OSRestoreInterrupts
/* 80294764 002903C4  7F E3 FB 78 */	mr r3, r31
/* 80294768 002903C8  4B FF FD 7D */	bl AXFXDelayInit
/* 8029476C 002903CC  2C 03 00 00 */	cmpwi r3, 0
/* 80294770 002903D0  40 82 00 64 */	bne lbl_802947D4
/* 80294774 002903D4  4B FD 9F E9 */	bl OSDisableInterrupts
/* 80294778 002903D8  80 1F 00 3C */	lwz r0, 0x3c(r31)
/* 8029477C 002903DC  7C 7D 1B 78 */	mr r29, r3
/* 80294780 002903E0  3B 80 00 00 */	li r28, 0
/* 80294784 002903E4  3B C0 00 00 */	li r30, 0
/* 80294788 002903E8  60 00 00 01 */	ori r0, r0, 1
/* 8029478C 002903EC  90 1F 00 3C */	stw r0, 0x3c(r31)
lbl_80294790:
/* 80294790 002903F0  80 7F 00 00 */	lwz r3, 0(r31)
/* 80294794 002903F4  2C 03 00 00 */	cmpwi r3, 0
/* 80294798 002903F8  41 82 00 14 */	beq lbl_802947AC
/* 8029479C 002903FC  81 8D 88 FC */	lwz r12, lbl_8063DBBC-_SDA_BASE_(r13)
/* 802947A0 00290400  7D 89 03 A6 */	mtctr r12
/* 802947A4 00290404  4E 80 04 21 */	bctrl
/* 802947A8 00290408  93 DF 00 00 */	stw r30, 0(r31)
lbl_802947AC:
/* 802947AC 0029040C  3B 9C 00 01 */	addi r28, r28, 1
/* 802947B0 00290410  3B FF 00 04 */	addi r31, r31, 4
/* 802947B4 00290414  28 1C 00 03 */	cmplwi r28, 3
/* 802947B8 00290418  41 80 FF D8 */	blt lbl_80294790
/* 802947BC 0029041C  7F A3 EB 78 */	mr r3, r29
/* 802947C0 00290420  4B FD 9F C5 */	bl OSRestoreInterrupts
/* 802947C4 00290424  7F 43 D3 78 */	mr r3, r26
/* 802947C8 00290428  4B FD 9F BD */	bl OSRestoreInterrupts
/* 802947CC 0029042C  38 60 00 00 */	li r3, 0
/* 802947D0 00290430  48 00 00 20 */	b lbl_802947F0
lbl_802947D4:
/* 802947D4 00290434  80 1F 00 3C */	lwz r0, 0x3c(r31)
/* 802947D8 00290438  7F 43 D3 78 */	mr r3, r26
/* 802947DC 0029043C  60 00 00 02 */	ori r0, r0, 2
/* 802947E0 00290440  54 00 00 3C */	rlwinm r0, r0, 0, 0, 0x1e
/* 802947E4 00290444  90 1F 00 3C */	stw r0, 0x3c(r31)
/* 802947E8 00290448  4B FD 9F 9D */	bl OSRestoreInterrupts
/* 802947EC 0029044C  38 60 00 01 */	li r3, 1
lbl_802947F0:
/* 802947F0 00290450  39 61 00 20 */	addi r11, r1, 0x20
/* 802947F4 00290454  4B F3 29 7D */	bl _restgpr_26
/* 802947F8 00290458  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802947FC 0029045C  7C 08 03 A6 */	mtlr r0
/* 80294800 00290460  38 21 00 20 */	addi r1, r1, 0x20
/* 80294804 00290464  4E 80 00 20 */	blr

.global AXFXDelayShutdown
AXFXDelayShutdown:
/* 80294808 00290468  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8029480C 0029046C  7C 08 02 A6 */	mflr r0
/* 80294810 00290470  90 01 00 24 */	stw r0, 0x24(r1)
/* 80294814 00290474  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80294818 00290478  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8029481C 0029047C  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80294820 00290480  93 81 00 10 */	stw r28, 0x10(r1)
/* 80294824 00290484  7C 7C 1B 78 */	mr r28, r3
/* 80294828 00290488  4B FD 9F 35 */	bl OSDisableInterrupts
/* 8029482C 0029048C  80 1C 00 3C */	lwz r0, 0x3c(r28)
/* 80294830 00290490  7C 7D 1B 78 */	mr r29, r3
/* 80294834 00290494  3B C0 00 00 */	li r30, 0
/* 80294838 00290498  3B E0 00 00 */	li r31, 0
/* 8029483C 0029049C  60 00 00 01 */	ori r0, r0, 1
/* 80294840 002904A0  90 1C 00 3C */	stw r0, 0x3c(r28)
lbl_80294844:
/* 80294844 002904A4  80 7C 00 00 */	lwz r3, 0(r28)
/* 80294848 002904A8  2C 03 00 00 */	cmpwi r3, 0
/* 8029484C 002904AC  41 82 00 14 */	beq lbl_80294860
/* 80294850 002904B0  81 8D 88 FC */	lwz r12, lbl_8063DBBC-_SDA_BASE_(r13)
/* 80294854 002904B4  7D 89 03 A6 */	mtctr r12
/* 80294858 002904B8  4E 80 04 21 */	bctrl
/* 8029485C 002904BC  93 FC 00 00 */	stw r31, 0(r28)
lbl_80294860:
/* 80294860 002904C0  3B DE 00 01 */	addi r30, r30, 1
/* 80294864 002904C4  3B 9C 00 04 */	addi r28, r28, 4
/* 80294868 002904C8  28 1E 00 03 */	cmplwi r30, 3
/* 8029486C 002904CC  41 80 FF D8 */	blt lbl_80294844
/* 80294870 002904D0  7F A3 EB 78 */	mr r3, r29
/* 80294874 002904D4  4B FD 9F 11 */	bl OSRestoreInterrupts
/* 80294878 002904D8  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8029487C 002904DC  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80294880 002904E0  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80294884 002904E4  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80294888 002904E8  83 81 00 10 */	lwz r28, 0x10(r1)
/* 8029488C 002904EC  7C 08 03 A6 */	mtlr r0
/* 80294890 002904F0  38 21 00 20 */	addi r1, r1, 0x20
/* 80294894 002904F4  4E 80 00 20 */	blr

.global AXFXDelayCallback
AXFXDelayCallback:
/* 80294898 002904F8  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8029489C 002904FC  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802948A0 00290500  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802948A4 00290504  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802948A8 00290508  93 81 00 10 */	stw r28, 0x10(r1)
/* 802948AC 0029050C  80 04 00 3C */	lwz r0, 0x3c(r4)
/* 802948B0 00290510  2C 00 00 00 */	cmpwi r0, 0
/* 802948B4 00290514  41 82 00 10 */	beq lbl_802948C4
/* 802948B8 00290518  54 00 07 FA */	rlwinm r0, r0, 0, 0x1f, 0x1d
/* 802948BC 0029051C  90 04 00 3C */	stw r0, 0x3c(r4)
/* 802948C0 00290520  48 00 01 40 */	b lbl_80294A00
lbl_802948C4:
/* 802948C4 00290524  38 00 00 60 */	li r0, 0x60
/* 802948C8 00290528  80 A3 00 00 */	lwz r5, 0(r3)
/* 802948CC 0029052C  80 C3 00 04 */	lwz r6, 4(r3)
/* 802948D0 00290530  39 60 00 00 */	li r11, 0
/* 802948D4 00290534  80 63 00 08 */	lwz r3, 8(r3)
/* 802948D8 00290538  7C 09 03 A6 */	mtctr r0
lbl_802948DC:
/* 802948DC 0029053C  80 04 00 0C */	lwz r0, 0xc(r4)
/* 802948E0 00290540  83 84 00 00 */	lwz r28, 0(r4)
/* 802948E4 00290544  54 1D 10 3A */	slwi r29, r0, 2
/* 802948E8 00290548  81 04 00 10 */	lwz r8, 0x10(r4)
/* 802948EC 0029054C  7C 1C E8 2E */	lwzx r0, r28, r29
/* 802948F0 00290550  80 E4 00 24 */	lwz r7, 0x24(r4)
/* 802948F4 00290554  55 1E 10 3A */	slwi r30, r8, 2
/* 802948F8 00290558  81 24 00 14 */	lwz r9, 0x14(r4)
/* 802948FC 0029055C  7D 00 39 D6 */	mullw r8, r0, r7
/* 80294900 00290560  80 E4 00 04 */	lwz r7, 4(r4)
/* 80294904 00290564  55 2C 10 3A */	slwi r12, r9, 2
/* 80294908 00290568  83 E4 00 08 */	lwz r31, 8(r4)
/* 8029490C 0029056C  81 45 00 00 */	lwz r10, 0(r5)
/* 80294910 00290570  7C E7 F0 2E */	lwzx r7, r7, r30
/* 80294914 00290574  7D 09 3E 70 */	srawi r9, r8, 7
/* 80294918 00290578  7D 1F 60 2E */	lwzx r8, r31, r12
/* 8029491C 0029057C  7D 2A 4A 14 */	add r9, r10, r9
/* 80294920 00290580  7D 3C E9 2E */	stwx r9, r28, r29
/* 80294924 00290584  81 44 00 28 */	lwz r10, 0x28(r4)
/* 80294928 00290588  81 24 00 10 */	lwz r9, 0x10(r4)
/* 8029492C 0029058C  7D 87 51 D6 */	mullw r12, r7, r10
/* 80294930 00290590  83 E6 00 00 */	lwz r31, 0(r6)
/* 80294934 00290594  81 44 00 04 */	lwz r10, 4(r4)
/* 80294938 00290598  55 29 10 3A */	slwi r9, r9, 2
/* 8029493C 0029059C  7D 8C 3E 70 */	srawi r12, r12, 7
/* 80294940 002905A0  7D 9F 62 14 */	add r12, r31, r12
/* 80294944 002905A4  7D 8A 49 2E */	stwx r12, r10, r9
/* 80294948 002905A8  81 44 00 2C */	lwz r10, 0x2c(r4)
/* 8029494C 002905AC  81 24 00 14 */	lwz r9, 0x14(r4)
/* 80294950 002905B0  7D 88 51 D6 */	mullw r12, r8, r10
/* 80294954 002905B4  83 E3 00 00 */	lwz r31, 0(r3)
/* 80294958 002905B8  81 44 00 08 */	lwz r10, 8(r4)
/* 8029495C 002905BC  55 29 10 3A */	slwi r9, r9, 2
/* 80294960 002905C0  7D 8C 3E 70 */	srawi r12, r12, 7
/* 80294964 002905C4  7D 9F 62 14 */	add r12, r31, r12
/* 80294968 002905C8  7D 8A 49 2E */	stwx r12, r10, r9
/* 8029496C 002905CC  81 44 00 0C */	lwz r10, 0xc(r4)
/* 80294970 002905D0  81 24 00 18 */	lwz r9, 0x18(r4)
/* 80294974 002905D4  39 4A 00 01 */	addi r10, r10, 1
/* 80294978 002905D8  7C 0A 48 40 */	cmplw r10, r9
/* 8029497C 002905DC  91 44 00 0C */	stw r10, 0xc(r4)
/* 80294980 002905E0  41 80 00 08 */	blt lbl_80294988
/* 80294984 002905E4  91 64 00 0C */	stw r11, 0xc(r4)
lbl_80294988:
/* 80294988 002905E8  81 44 00 10 */	lwz r10, 0x10(r4)
/* 8029498C 002905EC  81 24 00 1C */	lwz r9, 0x1c(r4)
/* 80294990 002905F0  39 4A 00 01 */	addi r10, r10, 1
/* 80294994 002905F4  7C 0A 48 40 */	cmplw r10, r9
/* 80294998 002905F8  91 44 00 10 */	stw r10, 0x10(r4)
/* 8029499C 002905FC  41 80 00 08 */	blt lbl_802949A4
/* 802949A0 00290600  91 64 00 10 */	stw r11, 0x10(r4)
lbl_802949A4:
/* 802949A4 00290604  81 44 00 14 */	lwz r10, 0x14(r4)
/* 802949A8 00290608  81 24 00 20 */	lwz r9, 0x20(r4)
/* 802949AC 0029060C  39 4A 00 01 */	addi r10, r10, 1
/* 802949B0 00290610  7C 0A 48 40 */	cmplw r10, r9
/* 802949B4 00290614  91 44 00 14 */	stw r10, 0x14(r4)
/* 802949B8 00290618  41 80 00 08 */	blt lbl_802949C0
/* 802949BC 0029061C  91 64 00 14 */	stw r11, 0x14(r4)
lbl_802949C0:
/* 802949C0 00290620  81 24 00 30 */	lwz r9, 0x30(r4)
/* 802949C4 00290624  7C 00 49 D6 */	mullw r0, r0, r9
/* 802949C8 00290628  7C 00 3E 70 */	srawi r0, r0, 7
/* 802949CC 0029062C  90 05 00 00 */	stw r0, 0(r5)
/* 802949D0 00290630  38 A5 00 04 */	addi r5, r5, 4
/* 802949D4 00290634  80 04 00 34 */	lwz r0, 0x34(r4)
/* 802949D8 00290638  7C 07 01 D6 */	mullw r0, r7, r0
/* 802949DC 0029063C  7C 00 3E 70 */	srawi r0, r0, 7
/* 802949E0 00290640  90 06 00 00 */	stw r0, 0(r6)
/* 802949E4 00290644  38 C6 00 04 */	addi r6, r6, 4
/* 802949E8 00290648  80 04 00 38 */	lwz r0, 0x38(r4)
/* 802949EC 0029064C  7C 08 01 D6 */	mullw r0, r8, r0
/* 802949F0 00290650  7C 00 3E 70 */	srawi r0, r0, 7
/* 802949F4 00290654  90 03 00 00 */	stw r0, 0(r3)
/* 802949F8 00290658  38 63 00 04 */	addi r3, r3, 4
/* 802949FC 0029065C  42 00 FE E0 */	bdnz lbl_802948DC
lbl_80294A00:
/* 80294A00 00290660  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80294A04 00290664  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80294A08 00290668  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80294A0C 0029066C  83 81 00 10 */	lwz r28, 0x10(r1)
/* 80294A10 00290670  38 21 00 20 */	addi r1, r1, 0x20
/* 80294A14 00290674  4E 80 00 20 */	blr

__InitParams:
/* 80294A18 00290678  94 21 FF 90 */	stwu r1, -0x70(r1)
/* 80294A1C 0029067C  7C 08 02 A6 */	mflr r0
/* 80294A20 00290680  90 01 00 74 */	stw r0, 0x74(r1)
/* 80294A24 00290684  DB E1 00 60 */	stfd f31, 0x60(r1)
/* 80294A28 00290688  F3 E1 00 68 */	psq_st f31, 104(r1), 0, qr0
/* 80294A2C 0029068C  DB C1 00 50 */	stfd f30, 0x50(r1)
/* 80294A30 00290690  F3 C1 00 58 */	psq_st f30, 88(r1), 0, qr0
/* 80294A34 00290694  DB A1 00 40 */	stfd f29, 0x40(r1)
/* 80294A38 00290698  F3 A1 00 48 */	psq_st f29, 72(r1), 0, qr0
/* 80294A3C 0029069C  CB A2 A2 D0 */	lfd f29, lbl_806428D0-_SDA2_BASE_(r2)
/* 80294A40 002906A0  93 E1 00 3C */	stw r31, 0x3c(r1)
/* 80294A44 002906A4  3F E0 43 30 */	lis r31, 0x4330
/* 80294A48 002906A8  C3 C2 A2 C8 */	lfs f30, lbl_806428C8-_SDA2_BASE_(r2)
/* 80294A4C 002906AC  93 C1 00 38 */	stw r30, 0x38(r1)
/* 80294A50 002906B0  3B C0 00 00 */	li r30, 0
/* 80294A54 002906B4  C3 E2 A2 CC */	lfs f31, lbl_806428CC-_SDA2_BASE_(r2)
/* 80294A58 002906B8  93 A1 00 34 */	stw r29, 0x34(r1)
/* 80294A5C 002906BC  7C 7D 1B 78 */	mr r29, r3
/* 80294A60 002906C0  93 81 00 30 */	stw r28, 0x30(r1)
/* 80294A64 002906C4  3B 80 00 00 */	li r28, 0
lbl_80294A68:
/* 80294A68 002906C8  80 1D 00 4C */	lwz r0, 0x4c(r29)
/* 80294A6C 002906CC  28 00 00 64 */	cmplwi r0, 0x64
/* 80294A70 002906D0  41 80 00 0C */	blt lbl_80294A7C
/* 80294A74 002906D4  38 60 00 00 */	li r3, 0
/* 80294A78 002906D8  48 00 00 AC */	b lbl_80294B24
lbl_80294A7C:
/* 80294A7C 002906DC  80 1D 00 58 */	lwz r0, 0x58(r29)
/* 80294A80 002906E0  28 00 00 64 */	cmplwi r0, 0x64
/* 80294A84 002906E4  40 81 00 0C */	ble lbl_80294A90
/* 80294A88 002906E8  38 60 00 00 */	li r3, 0
/* 80294A8C 002906EC  48 00 00 98 */	b lbl_80294B24
lbl_80294A90:
/* 80294A90 002906F0  80 7D 00 00 */	lwz r3, 0(r29)
/* 80294A94 002906F4  2C 03 00 00 */	cmpwi r3, 0
/* 80294A98 002906F8  40 82 00 0C */	bne lbl_80294AA4
/* 80294A9C 002906FC  38 60 00 00 */	li r3, 0
/* 80294AA0 00290700  48 00 00 84 */	b lbl_80294B24
lbl_80294AA4:
/* 80294AA4 00290704  80 1D 00 18 */	lwz r0, 0x18(r29)
/* 80294AA8 00290708  38 80 00 00 */	li r4, 0
/* 80294AAC 0029070C  54 05 10 3A */	slwi r5, r0, 2
/* 80294AB0 00290710  4B D6 F6 55 */	bl memset
/* 80294AB4 00290714  93 DD 00 0C */	stw r30, 0xc(r29)
/* 80294AB8 00290718  3B 9C 00 01 */	addi r28, r28, 1
/* 80294ABC 0029071C  28 1C 00 03 */	cmplwi r28, 3
/* 80294AC0 00290720  80 1D 00 4C */	lwz r0, 0x4c(r29)
/* 80294AC4 00290724  93 E1 00 08 */	stw r31, 8(r1)
/* 80294AC8 00290728  90 01 00 0C */	stw r0, 0xc(r1)
/* 80294ACC 0029072C  C8 01 00 08 */	lfd f0, 8(r1)
/* 80294AD0 00290730  93 E1 00 18 */	stw r31, 0x18(r1)
/* 80294AD4 00290734  EC 00 E8 28 */	fsubs f0, f0, f29
/* 80294AD8 00290738  EC 1E 00 32 */	fmuls f0, f30, f0
/* 80294ADC 0029073C  EC 00 F8 24 */	fdivs f0, f0, f31
/* 80294AE0 00290740  FC 00 00 1E */	fctiwz f0, f0
/* 80294AE4 00290744  D8 01 00 10 */	stfd f0, 0x10(r1)
/* 80294AE8 00290748  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80294AEC 0029074C  90 1D 00 24 */	stw r0, 0x24(r29)
/* 80294AF0 00290750  80 1D 00 58 */	lwz r0, 0x58(r29)
/* 80294AF4 00290754  90 01 00 1C */	stw r0, 0x1c(r1)
/* 80294AF8 00290758  C8 01 00 18 */	lfd f0, 0x18(r1)
/* 80294AFC 0029075C  EC 00 E8 28 */	fsubs f0, f0, f29
/* 80294B00 00290760  EC 1E 00 32 */	fmuls f0, f30, f0
/* 80294B04 00290764  EC 00 F8 24 */	fdivs f0, f0, f31
/* 80294B08 00290768  FC 00 00 1E */	fctiwz f0, f0
/* 80294B0C 0029076C  D8 01 00 20 */	stfd f0, 0x20(r1)
/* 80294B10 00290770  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80294B14 00290774  90 1D 00 30 */	stw r0, 0x30(r29)
/* 80294B18 00290778  3B BD 00 04 */	addi r29, r29, 4
/* 80294B1C 0029077C  41 80 FF 4C */	blt lbl_80294A68
/* 80294B20 00290780  38 60 00 01 */	li r3, 1
lbl_80294B24:
/* 80294B24 00290784  E3 E1 00 68 */	psq_l f31, 104(r1), 0, qr0
/* 80294B28 00290788  CB E1 00 60 */	lfd f31, 0x60(r1)
/* 80294B2C 0029078C  E3 C1 00 58 */	psq_l f30, 88(r1), 0, qr0
/* 80294B30 00290790  CB C1 00 50 */	lfd f30, 0x50(r1)
/* 80294B34 00290794  E3 A1 00 48 */	psq_l f29, 72(r1), 0, qr0
/* 80294B38 00290798  CB A1 00 40 */	lfd f29, 0x40(r1)
/* 80294B3C 0029079C  83 E1 00 3C */	lwz r31, 0x3c(r1)
/* 80294B40 002907A0  83 C1 00 38 */	lwz r30, 0x38(r1)
/* 80294B44 002907A4  83 A1 00 34 */	lwz r29, 0x34(r1)
/* 80294B48 002907A8  80 01 00 74 */	lwz r0, 0x74(r1)
/* 80294B4C 002907AC  83 81 00 30 */	lwz r28, 0x30(r1)
/* 80294B50 002907B0  7C 08 03 A6 */	mtlr r0
/* 80294B54 002907B4  38 21 00 70 */	addi r1, r1, 0x70
/* 80294B58 002907B8  4E 80 00 20 */	blr