summaryrefslogtreecommitdiff
path: root/asm/code_8004E9F0.s
blob: f61cc2a9c3557cf5d5fa652d2654a25c1775f537 (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
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
.include "macros.inc"

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

.global func_8004E9F0
func_8004E9F0:
/* 8004E9F0 0004A650  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8004E9F4 0004A654  7C 08 02 A6 */	mflr r0
/* 8004E9F8 0004A658  90 01 00 14 */	stw r0, 0x14(r1)
/* 8004E9FC 0004A65C  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8004EA00 0004A660  7C 7F 1B 78 */	mr r31, r3
/* 8004EA04 0004A664  38 63 00 14 */	addi r3, r3, 0x14
/* 8004EA08 0004A668  48 00 21 2D */	bl func_80050B34
/* 8004EA0C 0004A66C  C0 02 84 48 */	lfs f0, lbl_80640A48-_SDA2_BASE_(r2)
/* 8004EA10 0004A670  38 00 00 00 */	li r0, 0
/* 8004EA14 0004A674  90 1F 00 00 */	stw r0, 0(r31)
/* 8004EA18 0004A678  7F E3 FB 78 */	mr r3, r31
/* 8004EA1C 0004A67C  D0 1F 00 04 */	stfs f0, 4(r31)
/* 8004EA20 0004A680  D0 1F 00 08 */	stfs f0, 8(r31)
/* 8004EA24 0004A684  D0 1F 00 0C */	stfs f0, 0xc(r31)
/* 8004EA28 0004A688  D0 1F 00 10 */	stfs f0, 0x10(r31)
/* 8004EA2C 0004A68C  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8004EA30 0004A690  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8004EA34 0004A694  7C 08 03 A6 */	mtlr r0
/* 8004EA38 0004A698  38 21 00 10 */	addi r1, r1, 0x10
/* 8004EA3C 0004A69C  4E 80 00 20 */	blr

.global func_8004EA40
func_8004EA40:
/* 8004EA40 0004A6A0  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8004EA44 0004A6A4  7C 08 02 A6 */	mflr r0
/* 8004EA48 0004A6A8  2C 03 00 00 */	cmpwi r3, 0
/* 8004EA4C 0004A6AC  90 01 00 14 */	stw r0, 0x14(r1)
/* 8004EA50 0004A6B0  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8004EA54 0004A6B4  7C 9F 23 78 */	mr r31, r4
/* 8004EA58 0004A6B8  93 C1 00 08 */	stw r30, 8(r1)
/* 8004EA5C 0004A6BC  7C 7E 1B 78 */	mr r30, r3
/* 8004EA60 0004A6C0  41 82 00 18 */	beq lbl_8004EA78
/* 8004EA64 0004A6C4  48 00 00 31 */	bl func_8004EA94
/* 8004EA68 0004A6C8  2C 1F 00 00 */	cmpwi r31, 0
/* 8004EA6C 0004A6CC  40 81 00 0C */	ble lbl_8004EA78
/* 8004EA70 0004A6D0  7F C3 F3 78 */	mr r3, r30
/* 8004EA74 0004A6D4  48 18 C0 45 */	bl __dl__FPv
lbl_8004EA78:
/* 8004EA78 0004A6D8  7F C3 F3 78 */	mr r3, r30
/* 8004EA7C 0004A6DC  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8004EA80 0004A6E0  83 C1 00 08 */	lwz r30, 8(r1)
/* 8004EA84 0004A6E4  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8004EA88 0004A6E8  7C 08 03 A6 */	mtlr r0
/* 8004EA8C 0004A6EC  38 21 00 10 */	addi r1, r1, 0x10
/* 8004EA90 0004A6F0  4E 80 00 20 */	blr

.global func_8004EA94
func_8004EA94:
/* 8004EA94 0004A6F4  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8004EA98 0004A6F8  7C 08 02 A6 */	mflr r0
/* 8004EA9C 0004A6FC  90 01 00 14 */	stw r0, 0x14(r1)
/* 8004EAA0 0004A700  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8004EAA4 0004A704  7C 7F 1B 78 */	mr r31, r3
/* 8004EAA8 0004A708  80 03 00 00 */	lwz r0, 0(r3)
/* 8004EAAC 0004A70C  2C 00 00 00 */	cmpwi r0, 0
/* 8004EAB0 0004A710  41 82 00 14 */	beq lbl_8004EAC4
/* 8004EAB4 0004A714  7C 03 03 78 */	mr r3, r0
/* 8004EAB8 0004A718  48 19 1E 4D */	bl func_801E0904__11gUnkClass20Fv
/* 8004EABC 0004A71C  38 00 00 00 */	li r0, 0
/* 8004EAC0 0004A720  90 1F 00 00 */	stw r0, 0(r31)
lbl_8004EAC4:
/* 8004EAC4 0004A724  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8004EAC8 0004A728  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8004EACC 0004A72C  7C 08 03 A6 */	mtlr r0
/* 8004EAD0 0004A730  38 21 00 10 */	addi r1, r1, 0x10
/* 8004EAD4 0004A734  4E 80 00 20 */	blr

.global func_8004EAD8
func_8004EAD8:
/* 8004EAD8 0004A738  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8004EADC 0004A73C  3C E0 43 30 */	lis r7, 0x4330
/* 8004EAE0 0004A740  88 04 00 00 */	lbz r0, 0(r4)
/* 8004EAE4 0004A744  88 C4 00 01 */	lbz r6, 1(r4)
/* 8004EAE8 0004A748  90 01 00 0C */	stw r0, 0xc(r1)
/* 8004EAEC 0004A74C  C8 82 84 50 */	lfd f4, lbl_80640A50-_SDA2_BASE_(r2)
/* 8004EAF0 0004A750  90 E1 00 08 */	stw r7, 8(r1)
/* 8004EAF4 0004A754  88 64 00 02 */	lbz r3, 2(r4)
/* 8004EAF8 0004A758  C8 01 00 08 */	lfd f0, 8(r1)
/* 8004EAFC 0004A75C  90 E1 00 10 */	stw r7, 0x10(r1)
/* 8004EB00 0004A760  EC 60 20 28 */	fsubs f3, f0, f4
/* 8004EB04 0004A764  88 04 00 03 */	lbz r0, 3(r4)
/* 8004EB08 0004A768  90 C1 00 14 */	stw r6, 0x14(r1)
/* 8004EB0C 0004A76C  C8 01 00 10 */	lfd f0, 0x10(r1)
/* 8004EB10 0004A770  90 61 00 0C */	stw r3, 0xc(r1)
/* 8004EB14 0004A774  EC 40 20 28 */	fsubs f2, f0, f4
/* 8004EB18 0004A778  90 01 00 14 */	stw r0, 0x14(r1)
/* 8004EB1C 0004A77C  C8 21 00 08 */	lfd f1, 8(r1)
/* 8004EB20 0004A780  C8 01 00 10 */	lfd f0, 0x10(r1)
/* 8004EB24 0004A784  EC 21 20 28 */	fsubs f1, f1, f4
/* 8004EB28 0004A788  D0 65 00 00 */	stfs f3, 0(r5)
/* 8004EB2C 0004A78C  EC 00 20 28 */	fsubs f0, f0, f4
/* 8004EB30 0004A790  D0 45 00 04 */	stfs f2, 4(r5)
/* 8004EB34 0004A794  D0 25 00 08 */	stfs f1, 8(r5)
/* 8004EB38 0004A798  D0 05 00 0C */	stfs f0, 0xc(r5)
/* 8004EB3C 0004A79C  38 21 00 20 */	addi r1, r1, 0x20
/* 8004EB40 0004A7A0  4E 80 00 20 */	blr

.global func_8004EB44
func_8004EB44:
/* 8004EB44 0004A7A4  C0 04 00 00 */	lfs f0, 0(r4)
/* 8004EB48 0004A7A8  C0 44 00 04 */	lfs f2, 4(r4)
/* 8004EB4C 0004A7AC  C0 24 00 08 */	lfs f1, 8(r4)
/* 8004EB50 0004A7B0  FC 60 00 1E */	fctiwz f3, f0
/* 8004EB54 0004A7B4  C0 04 00 0C */	lfs f0, 0xc(r4)
/* 8004EB58 0004A7B8  FC 40 10 1E */	fctiwz f2, f2
/* 8004EB5C 0004A7BC  FC 20 08 1E */	fctiwz f1, f1
/* 8004EB60 0004A7C0  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 8004EB64 0004A7C4  FC 00 00 1E */	fctiwz f0, f0
/* 8004EB68 0004A7C8  D8 61 00 08 */	stfd f3, 8(r1)
/* 8004EB6C 0004A7CC  D8 41 00 10 */	stfd f2, 0x10(r1)
/* 8004EB70 0004A7D0  80 C1 00 0C */	lwz r6, 0xc(r1)
/* 8004EB74 0004A7D4  D8 21 00 18 */	stfd f1, 0x18(r1)
/* 8004EB78 0004A7D8  80 81 00 14 */	lwz r4, 0x14(r1)
/* 8004EB7C 0004A7DC  D8 01 00 20 */	stfd f0, 0x20(r1)
/* 8004EB80 0004A7E0  80 61 00 1C */	lwz r3, 0x1c(r1)
/* 8004EB84 0004A7E4  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8004EB88 0004A7E8  98 C5 00 00 */	stb r6, 0(r5)
/* 8004EB8C 0004A7EC  98 85 00 01 */	stb r4, 1(r5)
/* 8004EB90 0004A7F0  98 65 00 02 */	stb r3, 2(r5)
/* 8004EB94 0004A7F4  98 05 00 03 */	stb r0, 3(r5)
/* 8004EB98 0004A7F8  38 21 00 30 */	addi r1, r1, 0x30
/* 8004EB9C 0004A7FC  4E 80 00 20 */	blr

.global func_8004EBA0
func_8004EBA0:
/* 8004EBA0 0004A800  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8004EBA4 0004A804  7C 08 02 A6 */	mflr r0
/* 8004EBA8 0004A808  38 A3 00 04 */	addi r5, r3, 4
/* 8004EBAC 0004A80C  90 01 00 14 */	stw r0, 0x14(r1)
/* 8004EBB0 0004A810  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8004EBB4 0004A814  7C 9F 23 78 */	mr r31, r4
/* 8004EBB8 0004A818  93 C1 00 08 */	stw r30, 8(r1)
/* 8004EBBC 0004A81C  7C 7E 1B 78 */	mr r30, r3
/* 8004EBC0 0004A820  4B FF FF 19 */	bl func_8004EAD8
/* 8004EBC4 0004A824  80 7E 00 00 */	lwz r3, 0(r30)
/* 8004EBC8 0004A828  2C 03 00 00 */	cmpwi r3, 0
/* 8004EBCC 0004A82C  40 82 00 20 */	bne lbl_8004EBEC
/* 8004EBD0 0004A830  7F E3 FB 78 */	mr r3, r31
/* 8004EBD4 0004A834  38 80 00 00 */	li r4, 0
/* 8004EBD8 0004A838  38 A0 00 00 */	li r5, 0
/* 8004EBDC 0004A83C  38 C0 00 00 */	li r6, 0
/* 8004EBE0 0004A840  48 19 1C 31 */	bl func_801E0810__11gUnkClass20FUlUcUc
/* 8004EBE4 0004A844  90 7E 00 00 */	stw r3, 0(r30)
/* 8004EBE8 0004A848  48 00 00 0C */	b lbl_8004EBF4
lbl_8004EBEC:
/* 8004EBEC 0004A84C  7F E4 FB 78 */	mr r4, r31
/* 8004EBF0 0004A850  48 19 1D ED */	bl func_801E09DC__11gUnkClass20CFP11gUnkClass21
lbl_8004EBF4:
/* 8004EBF4 0004A854  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8004EBF8 0004A858  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8004EBFC 0004A85C  83 C1 00 08 */	lwz r30, 8(r1)
/* 8004EC00 0004A860  7C 08 03 A6 */	mtlr r0
/* 8004EC04 0004A864  38 21 00 10 */	addi r1, r1, 0x10
/* 8004EC08 0004A868  4E 80 00 20 */	blr

.global func_8004EC0C
func_8004EC0C:
/* 8004EC0C 0004A86C  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 8004EC10 0004A870  7C 08 02 A6 */	mflr r0
/* 8004EC14 0004A874  90 01 00 44 */	stw r0, 0x44(r1)
/* 8004EC18 0004A878  DB E1 00 38 */	stfd f31, 0x38(r1)
/* 8004EC1C 0004A87C  FF E0 08 90 */	fmr f31, f1
/* 8004EC20 0004A880  93 E1 00 34 */	stw r31, 0x34(r1)
/* 8004EC24 0004A884  7C BF 2B 78 */	mr r31, r5
/* 8004EC28 0004A888  93 C1 00 30 */	stw r30, 0x30(r1)
/* 8004EC2C 0004A88C  7C 9E 23 78 */	mr r30, r4
/* 8004EC30 0004A890  93 A1 00 2C */	stw r29, 0x2c(r1)
/* 8004EC34 0004A894  7C 7D 1B 78 */	mr r29, r3
/* 8004EC38 0004A898  80 03 00 00 */	lwz r0, 0(r3)
/* 8004EC3C 0004A89C  2C 00 00 00 */	cmpwi r0, 0
/* 8004EC40 0004A8A0  40 82 00 30 */	bne lbl_8004EC70
/* 8004EC44 0004A8A4  38 00 00 00 */	li r0, 0
/* 8004EC48 0004A8A8  38 61 00 08 */	addi r3, r1, 8
/* 8004EC4C 0004A8AC  98 01 00 08 */	stb r0, 8(r1)
/* 8004EC50 0004A8B0  38 80 00 00 */	li r4, 0
/* 8004EC54 0004A8B4  38 A0 00 00 */	li r5, 0
/* 8004EC58 0004A8B8  38 C0 00 00 */	li r6, 0
/* 8004EC5C 0004A8BC  98 01 00 09 */	stb r0, 9(r1)
/* 8004EC60 0004A8C0  98 01 00 0A */	stb r0, 0xa(r1)
/* 8004EC64 0004A8C4  98 01 00 0B */	stb r0, 0xb(r1)
/* 8004EC68 0004A8C8  48 19 1B A9 */	bl func_801E0810__11gUnkClass20FUlUcUc
/* 8004EC6C 0004A8CC  90 7D 00 00 */	stw r3, 0(r29)
lbl_8004EC70:
/* 8004EC70 0004A8D0  80 7D 00 00 */	lwz r3, 0(r29)
/* 8004EC74 0004A8D4  38 81 00 08 */	addi r4, r1, 8
/* 8004EC78 0004A8D8  48 19 1D 01 */	bl func_801E0978__11gUnkClass20CFP11gUnkClass21
/* 8004EC7C 0004A8DC  7F A3 EB 78 */	mr r3, r29
/* 8004EC80 0004A8E0  7F C4 F3 78 */	mr r4, r30
/* 8004EC84 0004A8E4  38 A1 00 10 */	addi r5, r1, 0x10
/* 8004EC88 0004A8E8  4B FF FE 51 */	bl func_8004EAD8
/* 8004EC8C 0004A8EC  7F A3 EB 78 */	mr r3, r29
/* 8004EC90 0004A8F0  38 81 00 08 */	addi r4, r1, 8
/* 8004EC94 0004A8F4  38 BD 00 04 */	addi r5, r29, 4
/* 8004EC98 0004A8F8  4B FF FE 41 */	bl func_8004EAD8
/* 8004EC9C 0004A8FC  FC 20 F8 90 */	fmr f1, f31
/* 8004ECA0 0004A900  38 9D 00 04 */	addi r4, r29, 4
/* 8004ECA4 0004A904  7C 86 23 78 */	mr r6, r4
/* 8004ECA8 0004A908  7F E7 FB 78 */	mr r7, r31
/* 8004ECAC 0004A90C  38 7D 00 14 */	addi r3, r29, 0x14
/* 8004ECB0 0004A910  38 A1 00 10 */	addi r5, r1, 0x10
/* 8004ECB4 0004A914  48 00 1E 99 */	bl func_80050B4C
/* 8004ECB8 0004A918  80 01 00 44 */	lwz r0, 0x44(r1)
/* 8004ECBC 0004A91C  CB E1 00 38 */	lfd f31, 0x38(r1)
/* 8004ECC0 0004A920  83 E1 00 34 */	lwz r31, 0x34(r1)
/* 8004ECC4 0004A924  83 C1 00 30 */	lwz r30, 0x30(r1)
/* 8004ECC8 0004A928  83 A1 00 2C */	lwz r29, 0x2c(r1)
/* 8004ECCC 0004A92C  7C 08 03 A6 */	mtlr r0
/* 8004ECD0 0004A930  38 21 00 40 */	addi r1, r1, 0x40
/* 8004ECD4 0004A934  4E 80 00 20 */	blr

.global func_8004ECD8
func_8004ECD8:
/* 8004ECD8 0004A938  38 63 00 14 */	addi r3, r3, 0x14
/* 8004ECDC 0004A93C  48 00 1F 04 */	b func_80050BE0

.global func_8004ECE0
func_8004ECE0:
/* 8004ECE0 0004A940  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8004ECE4 0004A944  7C 08 02 A6 */	mflr r0
/* 8004ECE8 0004A948  90 01 00 24 */	stw r0, 0x24(r1)
/* 8004ECEC 0004A94C  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8004ECF0 0004A950  7C 7F 1B 78 */	mr r31, r3
/* 8004ECF4 0004A954  80 03 00 00 */	lwz r0, 0(r3)
/* 8004ECF8 0004A958  2C 00 00 00 */	cmpwi r0, 0
/* 8004ECFC 0004A95C  41 82 00 3C */	beq lbl_8004ED38
/* 8004ED00 0004A960  81 83 00 4C */	lwz r12, 0x4c(r3)
/* 8004ED04 0004A964  81 8C 00 08 */	lwz r12, 8(r12)
/* 8004ED08 0004A968  7D 89 03 A6 */	mtctr r12
/* 8004ED0C 0004A96C  38 63 00 14 */	addi r3, r3, 0x14
/* 8004ED10 0004A970  4E 80 04 21 */	bctrl
/* 8004ED14 0004A974  2C 03 00 00 */	cmpwi r3, 0
/* 8004ED18 0004A978  41 82 00 20 */	beq lbl_8004ED38
/* 8004ED1C 0004A97C  7F E3 FB 78 */	mr r3, r31
/* 8004ED20 0004A980  38 9F 00 04 */	addi r4, r31, 4
/* 8004ED24 0004A984  38 A1 00 08 */	addi r5, r1, 8
/* 8004ED28 0004A988  4B FF FE 1D */	bl func_8004EB44
/* 8004ED2C 0004A98C  80 7F 00 00 */	lwz r3, 0(r31)
/* 8004ED30 0004A990  38 81 00 08 */	addi r4, r1, 8
/* 8004ED34 0004A994  48 19 1C A9 */	bl func_801E09DC__11gUnkClass20CFP11gUnkClass21
lbl_8004ED38:
/* 8004ED38 0004A998  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8004ED3C 0004A99C  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8004ED40 0004A9A0  7C 08 03 A6 */	mtlr r0
/* 8004ED44 0004A9A4  38 21 00 20 */	addi r1, r1, 0x20
/* 8004ED48 0004A9A8  4E 80 00 20 */	blr
lbl_8004ED4C:
/* 8004ED4C 0004A9AC  38 00 00 00 */	li r0, 0
/* 8004ED50 0004A9B0  90 03 00 04 */	stw r0, 4(r3)
/* 8004ED54 0004A9B4  98 03 00 00 */	stb r0, 0(r3)
/* 8004ED58 0004A9B8  4E 80 00 20 */	blr

.global lbl_8004ED5C
lbl_8004ED5C:
/* 8004ED5C 0004A9BC  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8004ED60 0004A9C0  7C 08 02 A6 */	mflr r0
/* 8004ED64 0004A9C4  2C 03 00 00 */	cmpwi r3, 0
/* 8004ED68 0004A9C8  90 01 00 14 */	stw r0, 0x14(r1)
/* 8004ED6C 0004A9CC  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8004ED70 0004A9D0  7C 9F 23 78 */	mr r31, r4
/* 8004ED74 0004A9D4  93 C1 00 08 */	stw r30, 8(r1)
/* 8004ED78 0004A9D8  7C 7E 1B 78 */	mr r30, r3
/* 8004ED7C 0004A9DC  41 82 00 18 */	beq lbl_8004ED94
/* 8004ED80 0004A9E0  48 00 00 31 */	bl func_8004EDB0
/* 8004ED84 0004A9E4  2C 1F 00 00 */	cmpwi r31, 0
/* 8004ED88 0004A9E8  40 81 00 0C */	ble lbl_8004ED94
/* 8004ED8C 0004A9EC  7F C3 F3 78 */	mr r3, r30
/* 8004ED90 0004A9F0  48 18 BD 29 */	bl __dl__FPv
lbl_8004ED94:
/* 8004ED94 0004A9F4  7F C3 F3 78 */	mr r3, r30
/* 8004ED98 0004A9F8  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8004ED9C 0004A9FC  83 C1 00 08 */	lwz r30, 8(r1)
/* 8004EDA0 0004AA00  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8004EDA4 0004AA04  7C 08 03 A6 */	mtlr r0
/* 8004EDA8 0004AA08  38 21 00 10 */	addi r1, r1, 0x10
/* 8004EDAC 0004AA0C  4E 80 00 20 */	blr

.global func_8004EDB0
func_8004EDB0:
/* 8004EDB0 0004AA10  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8004EDB4 0004AA14  7C 08 02 A6 */	mflr r0
/* 8004EDB8 0004AA18  90 01 00 24 */	stw r0, 0x24(r1)
/* 8004EDBC 0004AA1C  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8004EDC0 0004AA20  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8004EDC4 0004AA24  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8004EDC8 0004AA28  7C 7D 1B 78 */	mr r29, r3
/* 8004EDCC 0004AA2C  83 C3 00 04 */	lwz r30, 4(r3)
/* 8004EDD0 0004AA30  2C 1E 00 00 */	cmpwi r30, 0
/* 8004EDD4 0004AA34  41 82 00 70 */	beq lbl_8004EE44
/* 8004EDD8 0004AA38  88 1E 00 08 */	lbz r0, 8(r30)
/* 8004EDDC 0004AA3C  2C 00 00 00 */	cmpwi r0, 0
/* 8004EDE0 0004AA40  41 82 00 3C */	beq lbl_8004EE1C
/* 8004EDE4 0004AA44  83 FE 00 04 */	lwz r31, 4(r30)
/* 8004EDE8 0004AA48  57 E3 86 3E */	rlwinm r3, r31, 0x10, 0x18, 0x1f
/* 8004EDEC 0004AA4C  48 1E C2 6D */	bl func_8023B058
/* 8004EDF0 0004AA50  2C 03 00 00 */	cmpwi r3, 0
/* 8004EDF4 0004AA54  41 82 00 0C */	beq lbl_8004EE00
/* 8004EDF8 0004AA58  7F E4 FB 78 */	mr r4, r31
/* 8004EDFC 0004AA5C  48 1E C6 25 */	bl func_8023B420
lbl_8004EE00:
/* 8004EE00 0004AA60  81 9E 00 0C */	lwz r12, 0xc(r30)
/* 8004EE04 0004AA64  7F C3 F3 78 */	mr r3, r30
/* 8004EE08 0004AA68  81 8C 00 0C */	lwz r12, 0xc(r12)
/* 8004EE0C 0004AA6C  7D 89 03 A6 */	mtctr r12
/* 8004EE10 0004AA70  4E 80 04 21 */	bctrl
/* 8004EE14 0004AA74  38 00 00 00 */	li r0, 0
/* 8004EE18 0004AA78  98 1E 00 08 */	stb r0, 8(r30)
lbl_8004EE1C:
/* 8004EE1C 0004AA7C  80 7D 00 04 */	lwz r3, 4(r29)
/* 8004EE20 0004AA80  2C 03 00 00 */	cmpwi r3, 0
/* 8004EE24 0004AA84  41 82 00 18 */	beq lbl_8004EE3C
/* 8004EE28 0004AA88  81 83 00 0C */	lwz r12, 0xc(r3)
/* 8004EE2C 0004AA8C  38 80 00 01 */	li r4, 1
/* 8004EE30 0004AA90  81 8C 00 18 */	lwz r12, 0x18(r12)
/* 8004EE34 0004AA94  7D 89 03 A6 */	mtctr r12
/* 8004EE38 0004AA98  4E 80 04 21 */	bctrl
lbl_8004EE3C:
/* 8004EE3C 0004AA9C  38 00 00 00 */	li r0, 0
/* 8004EE40 0004AAA0  90 1D 00 04 */	stw r0, 4(r29)
lbl_8004EE44:
/* 8004EE44 0004AAA4  38 00 00 00 */	li r0, 0
/* 8004EE48 0004AAA8  98 1D 00 00 */	stb r0, 0(r29)
/* 8004EE4C 0004AAAC  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8004EE50 0004AAB0  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8004EE54 0004AAB4  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8004EE58 0004AAB8  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8004EE5C 0004AABC  7C 08 03 A6 */	mtlr r0
/* 8004EE60 0004AAC0  38 21 00 20 */	addi r1, r1, 0x20
/* 8004EE64 0004AAC4  4E 80 00 20 */	blr

.global func_8004EE68
func_8004EE68:
/* 8004EE68 0004AAC8  88 63 00 00 */	lbz r3, 0(r3)
/* 8004EE6C 0004AACC  4E 80 00 20 */	blr

.global func_8004EE70
func_8004EE70:
/* 8004EE70 0004AAD0  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 8004EE74 0004AAD4  7C 08 02 A6 */	mflr r0
/* 8004EE78 0004AAD8  90 01 00 44 */	stw r0, 0x44(r1)
/* 8004EE7C 0004AADC  DB E1 00 30 */	stfd f31, 0x30(r1)
/* 8004EE80 0004AAE0  F3 E1 00 38 */	psq_st f31, 56(r1), 0, qr0
/* 8004EE84 0004AAE4  FF E0 08 90 */	fmr f31, f1
/* 8004EE88 0004AAE8  93 E1 00 2C */	stw r31, 0x2c(r1)
/* 8004EE8C 0004AAEC  93 C1 00 28 */	stw r30, 0x28(r1)
/* 8004EE90 0004AAF0  7C FE 3B 78 */	mr r30, r7
/* 8004EE94 0004AAF4  93 A1 00 24 */	stw r29, 0x24(r1)
/* 8004EE98 0004AAF8  7C DD 33 78 */	mr r29, r6
/* 8004EE9C 0004AAFC  93 81 00 20 */	stw r28, 0x20(r1)
/* 8004EEA0 0004AB00  7C 7C 1B 78 */	mr r28, r3
/* 8004EEA4 0004AB04  7C 83 23 78 */	mr r3, r4
/* 8004EEA8 0004AB08  7C A4 2B 78 */	mr r4, r5
/* 8004EEAC 0004AB0C  48 18 C6 11 */	bl func_801DB4BC
/* 8004EEB0 0004AB10  2C 03 00 00 */	cmpwi r3, 0
/* 8004EEB4 0004AB14  7C 7F 1B 78 */	mr r31, r3
/* 8004EEB8 0004AB18  40 82 00 0C */	bne lbl_8004EEC4
/* 8004EEBC 0004AB1C  38 60 00 00 */	li r3, 0
/* 8004EEC0 0004AB20  48 00 00 FC */	b lbl_8004EFBC
lbl_8004EEC4:
/* 8004EEC4 0004AB24  7F 83 E3 78 */	mr r3, r28
/* 8004EEC8 0004AB28  4B FF FE E9 */	bl func_8004EDB0
/* 8004EECC 0004AB2C  48 18 BC 5D */	bl func_801DAB28
/* 8004EED0 0004AB30  2C 03 00 00 */	cmpwi r3, 0
/* 8004EED4 0004AB34  41 82 00 14 */	beq lbl_8004EEE8
/* 8004EED8 0004AB38  80 6D 96 38 */	lwz r3, lbl_8063E8F8-_SDA_BASE_(r13)
/* 8004EEDC 0004AB3C  38 80 00 78 */	li r4, 0x78
/* 8004EEE0 0004AB40  48 18 BD B5 */	bl func_801DAC94
/* 8004EEE4 0004AB44  48 00 00 08 */	b lbl_8004EEEC
lbl_8004EEE8:
/* 8004EEE8 0004AB48  38 60 00 00 */	li r3, 0
lbl_8004EEEC:
/* 8004EEEC 0004AB4C  2C 03 00 00 */	cmpwi r3, 0
/* 8004EEF0 0004AB50  41 82 00 0C */	beq lbl_8004EEFC
/* 8004EEF4 0004AB54  7F E4 FB 78 */	mr r4, r31
/* 8004EEF8 0004AB58  48 1D 0C 4D */	bl func_8021FB44
lbl_8004EEFC:
/* 8004EEFC 0004AB5C  2C 03 00 00 */	cmpwi r3, 0
/* 8004EF00 0004AB60  90 7C 00 04 */	stw r3, 4(r28)
/* 8004EF04 0004AB64  40 82 00 0C */	bne lbl_8004EF10
/* 8004EF08 0004AB68  38 60 00 00 */	li r3, 0
/* 8004EF0C 0004AB6C  48 00 00 B0 */	b lbl_8004EFBC
lbl_8004EF10:
/* 8004EF10 0004AB70  C0 1D 00 00 */	lfs f0, 0(r29)
/* 8004EF14 0004AB74  38 81 00 08 */	addi r4, r1, 8
/* 8004EF18 0004AB78  C0 3D 00 04 */	lfs f1, 4(r29)
/* 8004EF1C 0004AB7C  D0 03 00 14 */	stfs f0, 0x14(r3)
/* 8004EF20 0004AB80  C0 1D 00 08 */	lfs f0, 8(r29)
/* 8004EF24 0004AB84  D0 23 00 18 */	stfs f1, 0x18(r3)
/* 8004EF28 0004AB88  C0 22 84 58 */	lfs f1, lbl_80640A58-_SDA2_BASE_(r2)
/* 8004EF2C 0004AB8C  D0 03 00 1C */	stfs f0, 0x1c(r3)
/* 8004EF30 0004AB90  C0 02 84 5C */	lfs f0, lbl_80640A5C-_SDA2_BASE_(r2)
/* 8004EF34 0004AB94  D0 21 00 08 */	stfs f1, 8(r1)
/* 8004EF38 0004AB98  D0 01 00 0C */	stfs f0, 0xc(r1)
/* 8004EF3C 0004AB9C  D0 21 00 10 */	stfs f1, 0x10(r1)
/* 8004EF40 0004ABA0  80 7C 00 04 */	lwz r3, 4(r28)
/* 8004EF44 0004ABA4  48 1D 15 C1 */	bl func_80220504
/* 8004EF48 0004ABA8  C0 02 84 58 */	lfs f0, lbl_80640A58-_SDA2_BASE_(r2)
/* 8004EF4C 0004ABAC  80 7C 00 04 */	lwz r3, 4(r28)
/* 8004EF50 0004ABB0  C0 3E 00 00 */	lfs f1, 0(r30)
/* 8004EF54 0004ABB4  D0 03 00 44 */	stfs f0, 0x44(r3)
/* 8004EF58 0004ABB8  C0 1E 00 04 */	lfs f0, 4(r30)
/* 8004EF5C 0004ABBC  80 7C 00 04 */	lwz r3, 4(r28)
/* 8004EF60 0004ABC0  D0 23 00 48 */	stfs f1, 0x48(r3)
/* 8004EF64 0004ABC4  D0 03 00 4C */	stfs f0, 0x4c(r3)
/* 8004EF68 0004ABC8  80 7C 00 04 */	lwz r3, 4(r28)
/* 8004EF6C 0004ABCC  D3 E3 00 74 */	stfs f31, 0x74(r3)
/* 8004EF70 0004ABD0  83 FC 00 04 */	lwz r31, 4(r28)
/* 8004EF74 0004ABD4  81 9F 00 0C */	lwz r12, 0xc(r31)
/* 8004EF78 0004ABD8  7F E3 FB 78 */	mr r3, r31
/* 8004EF7C 0004ABDC  81 8C 00 08 */	lwz r12, 8(r12)
/* 8004EF80 0004ABE0  7D 89 03 A6 */	mtctr r12
/* 8004EF84 0004ABE4  4E 80 04 21 */	bctrl
/* 8004EF88 0004ABE8  54 60 06 3F */	clrlwi. r0, r3, 0x18
/* 8004EF8C 0004ABEC  98 7F 00 08 */	stb r3, 8(r31)
/* 8004EF90 0004ABF0  41 82 00 20 */	beq lbl_8004EFB0
/* 8004EF94 0004ABF4  83 FF 00 04 */	lwz r31, 4(r31)
/* 8004EF98 0004ABF8  57 E3 86 3E */	rlwinm r3, r31, 0x10, 0x18, 0x1f
/* 8004EF9C 0004ABFC  48 1E C0 BD */	bl func_8023B058
/* 8004EFA0 0004AC00  2C 03 00 00 */	cmpwi r3, 0
/* 8004EFA4 0004AC04  41 82 00 0C */	beq lbl_8004EFB0
/* 8004EFA8 0004AC08  7F E4 FB 78 */	mr r4, r31
/* 8004EFAC 0004AC0C  48 1E C4 0D */	bl func_8023B3B8
lbl_8004EFB0:
/* 8004EFB0 0004AC10  38 00 00 01 */	li r0, 1
/* 8004EFB4 0004AC14  38 60 00 01 */	li r3, 1
/* 8004EFB8 0004AC18  98 1C 00 00 */	stb r0, 0(r28)
lbl_8004EFBC:
/* 8004EFBC 0004AC1C  E3 E1 00 38 */	psq_l f31, 56(r1), 0, qr0
/* 8004EFC0 0004AC20  80 01 00 44 */	lwz r0, 0x44(r1)
/* 8004EFC4 0004AC24  CB E1 00 30 */	lfd f31, 0x30(r1)
/* 8004EFC8 0004AC28  83 E1 00 2C */	lwz r31, 0x2c(r1)
/* 8004EFCC 0004AC2C  83 C1 00 28 */	lwz r30, 0x28(r1)
/* 8004EFD0 0004AC30  83 A1 00 24 */	lwz r29, 0x24(r1)
/* 8004EFD4 0004AC34  83 81 00 20 */	lwz r28, 0x20(r1)
/* 8004EFD8 0004AC38  7C 08 03 A6 */	mtlr r0
/* 8004EFDC 0004AC3C  38 21 00 40 */	addi r1, r1, 0x40
/* 8004EFE0 0004AC40  4E 80 00 20 */	blr

.global func_8004EFE4
func_8004EFE4:
/* 8004EFE4 0004AC44  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8004EFE8 0004AC48  7C 08 02 A6 */	mflr r0
/* 8004EFEC 0004AC4C  90 01 00 24 */	stw r0, 0x24(r1)
/* 8004EFF0 0004AC50  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8004EFF4 0004AC54  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8004EFF8 0004AC58  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8004EFFC 0004AC5C  7C 7D 1B 78 */	mr r29, r3
/* 8004F000 0004AC60  4B FF FE 69 */	bl func_8004EE68
/* 8004F004 0004AC64  2C 03 00 00 */	cmpwi r3, 0
/* 8004F008 0004AC68  41 82 00 98 */	beq lbl_8004F0A0
/* 8004F00C 0004AC6C  83 DD 00 04 */	lwz r30, 4(r29)
/* 8004F010 0004AC70  C0 02 84 58 */	lfs f0, lbl_80640A58-_SDA2_BASE_(r2)
/* 8004F014 0004AC74  C0 3E 00 70 */	lfs f1, 0x70(r30)
/* 8004F018 0004AC78  FC 01 00 40 */	fcmpo cr0, f1, f0
/* 8004F01C 0004AC7C  4C 40 13 82 */	cror 2, 0, 2
/* 8004F020 0004AC80  40 82 00 80 */	bne lbl_8004F0A0
/* 8004F024 0004AC84  38 00 00 00 */	li r0, 0
/* 8004F028 0004AC88  2C 1E 00 00 */	cmpwi r30, 0
/* 8004F02C 0004AC8C  98 1D 00 00 */	stb r0, 0(r29)
/* 8004F030 0004AC90  41 82 00 70 */	beq lbl_8004F0A0
/* 8004F034 0004AC94  88 1E 00 08 */	lbz r0, 8(r30)
/* 8004F038 0004AC98  2C 00 00 00 */	cmpwi r0, 0
/* 8004F03C 0004AC9C  41 82 00 3C */	beq lbl_8004F078
/* 8004F040 0004ACA0  83 FE 00 04 */	lwz r31, 4(r30)
/* 8004F044 0004ACA4  57 E3 86 3E */	rlwinm r3, r31, 0x10, 0x18, 0x1f
/* 8004F048 0004ACA8  48 1E C0 11 */	bl func_8023B058
/* 8004F04C 0004ACAC  2C 03 00 00 */	cmpwi r3, 0
/* 8004F050 0004ACB0  41 82 00 0C */	beq lbl_8004F05C
/* 8004F054 0004ACB4  7F E4 FB 78 */	mr r4, r31
/* 8004F058 0004ACB8  48 1E C3 C9 */	bl func_8023B420
lbl_8004F05C:
/* 8004F05C 0004ACBC  81 9E 00 0C */	lwz r12, 0xc(r30)
/* 8004F060 0004ACC0  7F C3 F3 78 */	mr r3, r30
/* 8004F064 0004ACC4  81 8C 00 0C */	lwz r12, 0xc(r12)
/* 8004F068 0004ACC8  7D 89 03 A6 */	mtctr r12
/* 8004F06C 0004ACCC  4E 80 04 21 */	bctrl
/* 8004F070 0004ACD0  38 00 00 00 */	li r0, 0
/* 8004F074 0004ACD4  98 1E 00 08 */	stb r0, 8(r30)
lbl_8004F078:
/* 8004F078 0004ACD8  80 7D 00 04 */	lwz r3, 4(r29)
/* 8004F07C 0004ACDC  2C 03 00 00 */	cmpwi r3, 0
/* 8004F080 0004ACE0  41 82 00 18 */	beq lbl_8004F098
/* 8004F084 0004ACE4  81 83 00 0C */	lwz r12, 0xc(r3)
/* 8004F088 0004ACE8  38 80 00 01 */	li r4, 1
/* 8004F08C 0004ACEC  81 8C 00 18 */	lwz r12, 0x18(r12)
/* 8004F090 0004ACF0  7D 89 03 A6 */	mtctr r12
/* 8004F094 0004ACF4  4E 80 04 21 */	bctrl
lbl_8004F098:
/* 8004F098 0004ACF8  38 00 00 00 */	li r0, 0
/* 8004F09C 0004ACFC  90 1D 00 04 */	stw r0, 4(r29)
lbl_8004F0A0:
/* 8004F0A0 0004AD00  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8004F0A4 0004AD04  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8004F0A8 0004AD08  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8004F0AC 0004AD0C  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8004F0B0 0004AD10  7C 08 03 A6 */	mtlr r0
/* 8004F0B4 0004AD14  38 21 00 20 */	addi r1, r1, 0x20
/* 8004F0B8 0004AD18  4E 80 00 20 */	blr

.global func_8004F0BC
func_8004F0BC:
/* 8004F0BC 0004AD1C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8004F0C0 0004AD20  7C 08 02 A6 */	mflr r0
/* 8004F0C4 0004AD24  3C 80 80 05 */	lis r4, lbl_8004ED4C@ha
/* 8004F0C8 0004AD28  3C A0 80 05 */	lis r5, lbl_8004ED5C@ha
/* 8004F0CC 0004AD2C  90 01 00 14 */	stw r0, 0x14(r1)
/* 8004F0D0 0004AD30  38 C0 00 08 */	li r6, 8
/* 8004F0D4 0004AD34  38 84 ED 4C */	addi r4, r4, lbl_8004ED4C@l
/* 8004F0D8 0004AD38  38 A5 ED 5C */	addi r5, r5, lbl_8004ED5C@l
/* 8004F0DC 0004AD3C  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8004F0E0 0004AD40  7C 7F 1B 78 */	mr r31, r3
/* 8004F0E4 0004AD44  38 E0 00 20 */	li r7, 0x20
/* 8004F0E8 0004AD48  48 17 7D 81 */	bl __construct_array
/* 8004F0EC 0004AD4C  38 7F 01 00 */	addi r3, r31, 0x100
/* 8004F0F0 0004AD50  38 80 00 00 */	li r4, 0
/* 8004F0F4 0004AD54  38 A0 00 80 */	li r5, 0x80
/* 8004F0F8 0004AD58  4B FB 50 0D */	bl memset
/* 8004F0FC 0004AD5C  7F E3 FB 78 */	mr r3, r31
/* 8004F100 0004AD60  38 80 00 00 */	li r4, 0
/* 8004F104 0004AD64  38 A0 01 00 */	li r5, 0x100
/* 8004F108 0004AD68  4B FB 4F FD */	bl memset
/* 8004F10C 0004AD6C  C0 02 84 60 */	lfs f0, lbl_80640A60-_SDA2_BASE_(r2)
/* 8004F110 0004AD70  7F E3 FB 78 */	mr r3, r31
/* 8004F114 0004AD74  D0 1F 01 80 */	stfs f0, 0x180(r31)
/* 8004F118 0004AD78  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8004F11C 0004AD7C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8004F120 0004AD80  7C 08 03 A6 */	mtlr r0
/* 8004F124 0004AD84  38 21 00 10 */	addi r1, r1, 0x10
/* 8004F128 0004AD88  4E 80 00 20 */	blr

.global func_8004F12C
func_8004F12C:
/* 8004F12C 0004AD8C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8004F130 0004AD90  7C 08 02 A6 */	mflr r0
/* 8004F134 0004AD94  38 80 00 00 */	li r4, 0
/* 8004F138 0004AD98  38 A0 00 80 */	li r5, 0x80
/* 8004F13C 0004AD9C  90 01 00 14 */	stw r0, 0x14(r1)
/* 8004F140 0004ADA0  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8004F144 0004ADA4  7C 7F 1B 78 */	mr r31, r3
/* 8004F148 0004ADA8  38 63 01 00 */	addi r3, r3, 0x100
/* 8004F14C 0004ADAC  4B FB 4F B9 */	bl memset
/* 8004F150 0004ADB0  7F E3 FB 78 */	mr r3, r31
/* 8004F154 0004ADB4  38 80 00 00 */	li r4, 0
/* 8004F158 0004ADB8  38 A0 01 00 */	li r5, 0x100
/* 8004F15C 0004ADBC  4B FB 4F A9 */	bl memset
/* 8004F160 0004ADC0  C0 02 84 60 */	lfs f0, lbl_80640A60-_SDA2_BASE_(r2)
/* 8004F164 0004ADC4  3C A0 11 9C */	lis r5, 0x119C0C00@ha
/* 8004F168 0004ADC8  7F E3 FB 78 */	mr r3, r31
/* 8004F16C 0004ADCC  38 80 00 0C */	li r4, 0xc
/* 8004F170 0004ADD0  D0 1F 01 80 */	stfs f0, 0x180(r31)
/* 8004F174 0004ADD4  38 A5 0C 00 */	addi r5, r5, 0x119C0C00@l
/* 8004F178 0004ADD8  48 00 00 19 */	bl func_8004F190
/* 8004F17C 0004ADDC  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8004F180 0004ADE0  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8004F184 0004ADE4  7C 08 03 A6 */	mtlr r0
/* 8004F188 0004ADE8  38 21 00 10 */	addi r1, r1, 0x10
/* 8004F18C 0004ADEC  4E 80 00 20 */	blr

.global func_8004F190
func_8004F190:
/* 8004F190 0004ADF0  38 00 00 10 */	li r0, 0x10
/* 8004F194 0004ADF4  7C 66 1B 78 */	mr r6, r3
/* 8004F198 0004ADF8  38 E0 00 00 */	li r7, 0
/* 8004F19C 0004ADFC  7C 09 03 A6 */	mtctr r0
lbl_8004F1A0:
/* 8004F1A0 0004AE00  80 06 01 00 */	lwz r0, 0x100(r6)
/* 8004F1A4 0004AE04  2C 00 00 00 */	cmpwi r0, 0
/* 8004F1A8 0004AE08  40 82 00 1C */	bne lbl_8004F1C4
/* 8004F1AC 0004AE0C  54 E0 18 38 */	slwi r0, r7, 3
/* 8004F1B0 0004AE10  7C C3 02 14 */	add r6, r3, r0
/* 8004F1B4 0004AE14  38 67 00 01 */	addi r3, r7, 1
/* 8004F1B8 0004AE18  90 86 01 00 */	stw r4, 0x100(r6)
/* 8004F1BC 0004AE1C  90 A6 01 04 */	stw r5, 0x104(r6)
/* 8004F1C0 0004AE20  4E 80 00 20 */	blr
lbl_8004F1C4:
/* 8004F1C4 0004AE24  38 C6 00 08 */	addi r6, r6, 8
/* 8004F1C8 0004AE28  38 E7 00 01 */	addi r7, r7, 1
/* 8004F1CC 0004AE2C  42 00 FF D4 */	bdnz lbl_8004F1A0
/* 8004F1D0 0004AE30  38 60 00 00 */	li r3, 0
/* 8004F1D4 0004AE34  4E 80 00 20 */	blr

.global func_8004F1D8
func_8004F1D8:
/* 8004F1D8 0004AE38  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8004F1DC 0004AE3C  7C 08 02 A6 */	mflr r0
/* 8004F1E0 0004AE40  90 01 00 24 */	stw r0, 0x24(r1)
/* 8004F1E4 0004AE44  39 61 00 20 */	addi r11, r1, 0x20
/* 8004F1E8 0004AE48  48 17 7F 3D */	bl _savegpr_26
/* 8004F1EC 0004AE4C  2C 04 00 00 */	cmpwi r4, 0
/* 8004F1F0 0004AE50  7C 7A 1B 78 */	mr r26, r3
/* 8004F1F4 0004AE54  7C BB 2B 78 */	mr r27, r5
/* 8004F1F8 0004AE58  7C DC 33 78 */	mr r28, r6
/* 8004F1FC 0004AE5C  41 82 00 14 */	beq lbl_8004F210
/* 8004F200 0004AE60  28 04 00 0F */	cmplwi r4, 0xf
/* 8004F204 0004AE64  41 80 00 0C */	blt lbl_8004F210
/* 8004F208 0004AE68  38 60 00 00 */	li r3, 0
/* 8004F20C 0004AE6C  48 00 00 80 */	b lbl_8004F28C
lbl_8004F210:
/* 8004F210 0004AE70  38 04 FF FF */	addi r0, r4, -1
/* 8004F214 0004AE74  54 00 18 38 */	slwi r0, r0, 3
/* 8004F218 0004AE78  7F E3 02 14 */	add r31, r3, r0
/* 8004F21C 0004AE7C  80 7F 01 00 */	lwz r3, 0x100(r31)
/* 8004F220 0004AE80  80 9F 01 04 */	lwz r4, 0x104(r31)
/* 8004F224 0004AE84  48 18 C2 99 */	bl func_801DB4BC
/* 8004F228 0004AE88  2C 03 00 00 */	cmpwi r3, 0
/* 8004F22C 0004AE8C  40 82 00 0C */	bne lbl_8004F238
/* 8004F230 0004AE90  38 60 00 00 */	li r3, 0
/* 8004F234 0004AE94  48 00 00 58 */	b lbl_8004F28C
lbl_8004F238:
/* 8004F238 0004AE98  7F 5E D3 78 */	mr r30, r26
/* 8004F23C 0004AE9C  3B A0 00 00 */	li r29, 0
lbl_8004F240:
/* 8004F240 0004AEA0  7F C3 F3 78 */	mr r3, r30
/* 8004F244 0004AEA4  4B FF FC 25 */	bl func_8004EE68
/* 8004F248 0004AEA8  2C 03 00 00 */	cmpwi r3, 0
/* 8004F24C 0004AEAC  40 82 00 2C */	bne lbl_8004F278
/* 8004F250 0004AEB0  57 A0 18 38 */	slwi r0, r29, 3
/* 8004F254 0004AEB4  80 9F 01 00 */	lwz r4, 0x100(r31)
/* 8004F258 0004AEB8  80 BF 01 04 */	lwz r5, 0x104(r31)
/* 8004F25C 0004AEBC  7F 66 DB 78 */	mr r6, r27
/* 8004F260 0004AEC0  C0 3A 01 80 */	lfs f1, 0x180(r26)
/* 8004F264 0004AEC4  7F 87 E3 78 */	mr r7, r28
/* 8004F268 0004AEC8  7C 7A 02 14 */	add r3, r26, r0
/* 8004F26C 0004AECC  4B FF FC 05 */	bl func_8004EE70
/* 8004F270 0004AED0  38 7D 00 01 */	addi r3, r29, 1
/* 8004F274 0004AED4  48 00 00 18 */	b lbl_8004F28C
lbl_8004F278:
/* 8004F278 0004AED8  3B BD 00 01 */	addi r29, r29, 1
/* 8004F27C 0004AEDC  3B DE 00 08 */	addi r30, r30, 8
/* 8004F280 0004AEE0  28 1D 00 20 */	cmplwi r29, 0x20
/* 8004F284 0004AEE4  41 80 FF BC */	blt lbl_8004F240
/* 8004F288 0004AEE8  38 60 00 00 */	li r3, 0
lbl_8004F28C:
/* 8004F28C 0004AEEC  39 61 00 20 */	addi r11, r1, 0x20
/* 8004F290 0004AEF0  48 17 7E E1 */	bl _restgpr_26
/* 8004F294 0004AEF4  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8004F298 0004AEF8  7C 08 03 A6 */	mtlr r0
/* 8004F29C 0004AEFC  38 21 00 20 */	addi r1, r1, 0x20
/* 8004F2A0 0004AF00  4E 80 00 20 */	blr

.global func_8004F2A4
func_8004F2A4:
/* 8004F2A4 0004AF04  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8004F2A8 0004AF08  7C 08 02 A6 */	mflr r0
/* 8004F2AC 0004AF0C  90 01 00 24 */	stw r0, 0x24(r1)
/* 8004F2B0 0004AF10  DB E1 00 18 */	stfd f31, 0x18(r1)
/* 8004F2B4 0004AF14  FF E0 08 90 */	fmr f31, f1
/* 8004F2B8 0004AF18  93 E1 00 14 */	stw r31, 0x14(r1)
/* 8004F2BC 0004AF1C  7C 7F 1B 78 */	mr r31, r3
/* 8004F2C0 0004AF20  93 C1 00 10 */	stw r30, 0x10(r1)
/* 8004F2C4 0004AF24  3B C0 00 00 */	li r30, 0
lbl_8004F2C8:
/* 8004F2C8 0004AF28  FC 20 F8 90 */	fmr f1, f31
/* 8004F2CC 0004AF2C  7F E3 FB 78 */	mr r3, r31
/* 8004F2D0 0004AF30  4B FF FD 15 */	bl func_8004EFE4
/* 8004F2D4 0004AF34  3B DE 00 01 */	addi r30, r30, 1
/* 8004F2D8 0004AF38  3B FF 00 08 */	addi r31, r31, 8
/* 8004F2DC 0004AF3C  28 1E 00 20 */	cmplwi r30, 0x20
/* 8004F2E0 0004AF40  41 80 FF E8 */	blt lbl_8004F2C8
/* 8004F2E4 0004AF44  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8004F2E8 0004AF48  CB E1 00 18 */	lfd f31, 0x18(r1)
/* 8004F2EC 0004AF4C  83 E1 00 14 */	lwz r31, 0x14(r1)
/* 8004F2F0 0004AF50  83 C1 00 10 */	lwz r30, 0x10(r1)
/* 8004F2F4 0004AF54  7C 08 03 A6 */	mtlr r0
/* 8004F2F8 0004AF58  38 21 00 20 */	addi r1, r1, 0x20
/* 8004F2FC 0004AF5C  4E 80 00 20 */	blr

.global func_8004F300
func_8004F300:
/* 8004F300 0004AF60  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8004F304 0004AF64  7C 08 02 A6 */	mflr r0
/* 8004F308 0004AF68  90 01 00 14 */	stw r0, 0x14(r1)
/* 8004F30C 0004AF6C  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8004F310 0004AF70  7C 7F 1B 78 */	mr r31, r3
/* 8004F314 0004AF74  93 C1 00 08 */	stw r30, 8(r1)
/* 8004F318 0004AF78  3B C0 00 00 */	li r30, 0
lbl_8004F31C:
/* 8004F31C 0004AF7C  7F E3 FB 78 */	mr r3, r31
/* 8004F320 0004AF80  4B FF FB 49 */	bl func_8004EE68
/* 8004F324 0004AF84  2C 03 00 00 */	cmpwi r3, 0
/* 8004F328 0004AF88  41 82 00 0C */	beq lbl_8004F334
/* 8004F32C 0004AF8C  7F E3 FB 78 */	mr r3, r31
/* 8004F330 0004AF90  4B FF FA 81 */	bl func_8004EDB0
lbl_8004F334:
/* 8004F334 0004AF94  3B DE 00 01 */	addi r30, r30, 1
/* 8004F338 0004AF98  3B FF 00 08 */	addi r31, r31, 8
/* 8004F33C 0004AF9C  28 1E 00 20 */	cmplwi r30, 0x20
/* 8004F340 0004AFA0  41 80 FF DC */	blt lbl_8004F31C
/* 8004F344 0004AFA4  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8004F348 0004AFA8  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8004F34C 0004AFAC  83 C1 00 08 */	lwz r30, 8(r1)
/* 8004F350 0004AFB0  7C 08 03 A6 */	mtlr r0
/* 8004F354 0004AFB4  38 21 00 10 */	addi r1, r1, 0x10
/* 8004F358 0004AFB8  4E 80 00 20 */	blr

.global func_8004F35C
func_8004F35C:
/* 8004F35C 0004AFBC  38 A0 00 01 */	li r5, 1
/* 8004F360 0004AFC0  38 6D 98 40 */	addi r3, r13, lbl_8063EB00-_SDA_BASE_
/* 8004F364 0004AFC4  38 80 00 04 */	li r4, 4
/* 8004F368 0004AFC8  38 00 00 00 */	li r0, 0
/* 8004F36C 0004AFCC  98 AD 98 40 */	stb r5, lbl_8063EB00-_SDA_BASE_(r13)
/* 8004F370 0004AFD0  B0 83 00 02 */	sth r4, 2(r3)
/* 8004F374 0004AFD4  98 03 00 04 */	stb r0, 4(r3)
/* 8004F378 0004AFD8  4E 80 00 20 */	blr