summaryrefslogtreecommitdiff
path: root/asm/code_8016E2B8.s
blob: 40ae4b755026b875d70c289e97ef1c568f3bf8dc (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
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
.include "macros.inc"

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


.global lbl_8016E2B8
lbl_8016E2B8:
/* 8016E2B8 00169F18  80 0D 9F 08 */	lwz r0, lbl_8063F1C8-_SDA_BASE_(r13)
/* 8016E2BC 00169F1C  7C 65 1B 78 */	mr r5, r3
/* 8016E2C0 00169F20  2C 00 00 00 */	cmpwi r0, 0
/* 8016E2C4 00169F24  4D 82 00 20 */	beqlr
/* 8016E2C8 00169F28  7C 03 03 78 */	mr r3, r0
/* 8016E2CC 00169F2C  38 80 00 03 */	li r4, 3
/* 8016E2D0 00169F30  4C C6 31 82 */	crclr 6
/* 8016E2D4 00169F34  48 00 03 48 */	b lbl_8016E61C
/* 8016E2D8 00169F38  4E 80 00 20 */	blr

.global func_8016E2DC
func_8016E2DC:
/* 8016E2DC 00169F3C  38 60 00 01 */	li r3, 1
/* 8016E2E0 00169F40  48 00 00 04 */	b func_8016E2E4

.global func_8016E2E4
func_8016E2E4:
/* 8016E2E4 00169F44  80 0D 9F 0C */	lwz r0, lbl_8063F1CC-_SDA_BASE_(r13)
/* 8016E2E8 00169F48  3C 80 80 49 */	lis r4, lbl_8048CDD8@ha
/* 8016E2EC 00169F4C  38 84 CD D8 */	addi r4, r4, lbl_8048CDD8@l
/* 8016E2F0 00169F50  7C 09 03 A6 */	mtctr r0
/* 8016E2F4 00169F54  2C 00 00 00 */	cmpwi r0, 0
/* 8016E2F8 00169F58  40 81 00 18 */	ble lbl_8016E310
lbl_8016E2FC:
/* 8016E2FC 00169F5C  80 04 00 00 */	lwz r0, 0(r4)
/* 8016E300 00169F60  7C 03 00 00 */	cmpw r3, r0
/* 8016E304 00169F64  4D 82 00 20 */	beqlr
/* 8016E308 00169F68  38 84 00 04 */	addi r4, r4, 4
/* 8016E30C 00169F6C  42 00 FF F0 */	bdnz lbl_8016E2FC
lbl_8016E310:
/* 8016E310 00169F70  80 AD 9F 0C */	lwz r5, lbl_8063F1CC-_SDA_BASE_(r13)
/* 8016E314 00169F74  3C 80 80 49 */	lis r4, lbl_8048CDD8@ha
/* 8016E318 00169F78  38 84 CD D8 */	addi r4, r4, lbl_8048CDD8@l
/* 8016E31C 00169F7C  54 A0 10 3A */	slwi r0, r5, 2
/* 8016E320 00169F80  38 A5 00 01 */	addi r5, r5, 1
/* 8016E324 00169F84  7C 64 01 2E */	stwx r3, r4, r0
/* 8016E328 00169F88  90 AD 9F 0C */	stw r5, lbl_8063F1CC-_SDA_BASE_(r13)
/* 8016E32C 00169F8C  4E 80 00 20 */	blr

.global func_8016E330
func_8016E330:
/* 8016E330 00169F90  80 0D 9F 08 */	lwz r0, lbl_8063F1C8-_SDA_BASE_(r13)
/* 8016E334 00169F94  54 89 10 3A */	slwi r9, r4, 2
/* 8016E338 00169F98  3C E0 00 01 */	lis r7, 0x0000FFFF@ha
/* 8016E33C 00169F9C  2C 03 00 07 */	cmpwi r3, 7
/* 8016E340 00169FA0  7D 00 4A 14 */	add r8, r0, r9
/* 8016E344 00169FA4  90 68 00 10 */	stw r3, 0x10(r8)
/* 8016E348 00169FA8  38 07 FF FF */	addi r0, r7, 0x0000FFFF@l
/* 8016E34C 00169FAC  80 ED 9F 08 */	lwz r7, lbl_8063F1C8-_SDA_BASE_(r13)
/* 8016E350 00169FB0  7C E7 4A 14 */	add r7, r7, r9
/* 8016E354 00169FB4  90 67 00 20 */	stw r3, 0x20(r7)
/* 8016E358 00169FB8  80 6D 9F 08 */	lwz r3, lbl_8063F1C8-_SDA_BASE_(r13)
/* 8016E35C 00169FBC  7C 63 4A 14 */	add r3, r3, r9
/* 8016E360 00169FC0  90 83 00 40 */	stw r4, 0x40(r3)
/* 8016E364 00169FC4  80 6D 9F 08 */	lwz r3, lbl_8063F1C8-_SDA_BASE_(r13)
/* 8016E368 00169FC8  7C 63 4A 14 */	add r3, r3, r9
/* 8016E36C 00169FCC  90 A3 00 50 */	stw r5, 0x50(r3)
/* 8016E370 00169FD0  80 6D 9F 08 */	lwz r3, lbl_8063F1C8-_SDA_BASE_(r13)
/* 8016E374 00169FD4  7C 63 4A 14 */	add r3, r3, r9
/* 8016E378 00169FD8  90 C3 00 30 */	stw r6, 0x30(r3)
/* 8016E37C 00169FDC  80 6D 9F 08 */	lwz r3, lbl_8063F1C8-_SDA_BASE_(r13)
/* 8016E380 00169FE0  7C 03 49 2E */	stwx r0, r3, r9
/* 8016E384 00169FE4  4D 82 00 20 */	beqlr
/* 8016E388 00169FE8  38 60 00 03 */	li r3, 3
/* 8016E38C 00169FEC  4B FF FF 58 */	b func_8016E2E4
/* 8016E390 00169FF0  4E 80 00 20 */	blr

.global func_8016E394
func_8016E394:
/* 8016E394 00169FF4  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8016E398 00169FF8  7C 08 02 A6 */	mflr r0
/* 8016E39C 00169FFC  54 68 10 3A */	slwi r8, r3, 2
/* 8016E3A0 0016A000  38 E0 00 0B */	li r7, 0xb
/* 8016E3A4 0016A004  90 01 00 24 */	stw r0, 0x24(r1)
/* 8016E3A8 0016A008  38 60 00 01 */	li r3, 1
/* 8016E3AC 0016A00C  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8016E3B0 0016A010  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8016E3B4 0016A014  7C DE 33 78 */	mr r30, r6
/* 8016E3B8 0016A018  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8016E3BC 0016A01C  7C BD 2B 78 */	mr r29, r5
/* 8016E3C0 0016A020  80 0D 9F 08 */	lwz r0, lbl_8063F1C8-_SDA_BASE_(r13)
/* 8016E3C4 0016A024  7C A0 42 14 */	add r5, r0, r8
/* 8016E3C8 0016A028  38 00 00 00 */	li r0, 0
/* 8016E3CC 0016A02C  90 E5 00 10 */	stw r7, 0x10(r5)
/* 8016E3D0 0016A030  38 A0 00 24 */	li r5, 0x24
/* 8016E3D4 0016A034  80 CD 9F 08 */	lwz r6, lbl_8063F1C8-_SDA_BASE_(r13)
/* 8016E3D8 0016A038  7C C6 42 14 */	add r6, r6, r8
/* 8016E3DC 0016A03C  83 E6 00 60 */	lwz r31, 0x60(r6)
/* 8016E3E0 0016A040  98 7F 00 00 */	stb r3, 0(r31)
/* 8016E3E4 0016A044  98 1F 00 01 */	stb r0, 1(r31)
/* 8016E3E8 0016A048  98 1F 00 02 */	stb r0, 2(r31)
/* 8016E3EC 0016A04C  98 1F 00 03 */	stb r0, 3(r31)
/* 8016E3F0 0016A050  3B FF 00 04 */	addi r31, r31, 4
/* 8016E3F4 0016A054  7F E3 FB 78 */	mr r3, r31
/* 8016E3F8 0016A058  4B E9 5C 09 */	bl memcpy
/* 8016E3FC 0016A05C  7F A4 EB 78 */	mr r4, r29
/* 8016E400 0016A060  7F C5 F3 78 */	mr r5, r30
/* 8016E404 0016A064  38 7F 00 24 */	addi r3, r31, 0x24
/* 8016E408 0016A068  4B E9 5B F9 */	bl memcpy
/* 8016E40C 0016A06C  38 60 00 0B */	li r3, 0xb
/* 8016E410 0016A070  4B FF FE D5 */	bl func_8016E2E4
/* 8016E414 0016A074  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8016E418 0016A078  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8016E41C 0016A07C  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8016E420 0016A080  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8016E424 0016A084  7C 08 03 A6 */	mtlr r0
/* 8016E428 0016A088  38 21 00 20 */	addi r1, r1, 0x20
/* 8016E42C 0016A08C  4E 80 00 20 */	blr

.global func_8016E430
func_8016E430:
/* 8016E430 0016A090  80 8D 9F 08 */	lwz r4, lbl_8063F1C8-_SDA_BASE_(r13)
/* 8016E434 0016A094  54 60 15 BA */	rlwinm r0, r3, 2, 0x16, 0x1d
/* 8016E438 0016A098  7C 64 02 14 */	add r3, r4, r0
/* 8016E43C 0016A09C  80 63 00 10 */	lwz r3, 0x10(r3)
/* 8016E440 0016A0A0  4E 80 00 20 */	blr

.global func_8016E444
func_8016E444:
/* 8016E444 0016A0A4  80 0D 9F 08 */	lwz r0, lbl_8063F1C8-_SDA_BASE_(r13)
/* 8016E448 0016A0A8  38 80 00 01 */	li r4, 1
/* 8016E44C 0016A0AC  7C 60 1A 14 */	add r3, r0, r3
/* 8016E450 0016A0B0  98 83 00 78 */	stb r4, 0x78(r3)
/* 8016E454 0016A0B4  4E 80 00 20 */	blr

.global func_8016E458
func_8016E458:
/* 8016E458 0016A0B8  80 0D 9F 08 */	lwz r0, lbl_8063F1C8-_SDA_BASE_(r13)
/* 8016E45C 0016A0BC  38 A0 00 01 */	li r5, 1
/* 8016E460 0016A0C0  7C 80 1A 14 */	add r4, r0, r3
/* 8016E464 0016A0C4  98 A4 00 7C */	stb r5, 0x7c(r4)
/* 8016E468 0016A0C8  80 0D 9F 08 */	lwz r0, lbl_8063F1C8-_SDA_BASE_(r13)
/* 8016E46C 0016A0CC  7C 60 1A 14 */	add r3, r0, r3
/* 8016E470 0016A0D0  98 A3 00 80 */	stb r5, 0x80(r3)
/* 8016E474 0016A0D4  4E 80 00 20 */	blr

.global VMBASEGetVirtualAddrFromPageInMRAM
VMBASEGetVirtualAddrFromPageInMRAM:
/* 8016E478 0016A0D8  80 8D 9F 08 */	lwz r4, lbl_8063F1C8-_SDA_BASE_(r13)
/* 8016E47C 0016A0DC  54 60 15 BA */	rlwinm r0, r3, 2, 0x16, 0x1d
/* 8016E480 0016A0E0  7C 64 00 2E */	lwzx r3, r4, r0
/* 8016E484 0016A0E4  4E 80 00 20 */	blr

.global func_8016E488
func_8016E488:
/* 8016E488 0016A0E8  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8016E48C 0016A0EC  7C 08 02 A6 */	mflr r0
/* 8016E490 0016A0F0  38 80 05 14 */	li r4, 0x514
/* 8016E494 0016A0F4  90 01 00 14 */	stw r0, 0x14(r1)
/* 8016E498 0016A0F8  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8016E49C 0016A0FC  93 C1 00 08 */	stw r30, 8(r1)
/* 8016E4A0 0016A100  7C 7E 1B 78 */	mr r30, r3
/* 8016E4A4 0016A104  90 6D 9F 08 */	stw r3, lbl_8063F1C8-_SDA_BASE_(r13)
/* 8016E4A8 0016A108  80 6D 96 2C */	lwz r3, lbl_8063E8EC-_SDA_BASE_(r13)
/* 8016E4AC 0016A10C  48 06 C7 E9 */	bl func_801DAC94
/* 8016E4B0 0016A110  7C 7F 1B 78 */	mr r31, r3
/* 8016E4B4 0016A114  38 80 00 00 */	li r4, 0
/* 8016E4B8 0016A118  38 A0 05 14 */	li r5, 0x514
/* 8016E4BC 0016A11C  4B E9 5C 49 */	bl memset
/* 8016E4C0 0016A120  38 80 00 00 */	li r4, 0
/* 8016E4C4 0016A124  38 00 00 FF */	li r0, 0xff
/* 8016E4C8 0016A128  90 9E 00 00 */	stw r4, 0(r30)
/* 8016E4CC 0016A12C  3C A0 80 49 */	lis r5, lbl_8048CDD8@ha
/* 8016E4D0 0016A130  7F C3 F3 78 */	mr r3, r30
/* 8016E4D4 0016A134  90 9E 00 10 */	stw r4, 0x10(r30)
/* 8016E4D8 0016A138  90 9E 00 20 */	stw r4, 0x20(r30)
/* 8016E4DC 0016A13C  90 9E 00 30 */	stw r4, 0x30(r30)
/* 8016E4E0 0016A140  90 1E 00 40 */	stw r0, 0x40(r30)
/* 8016E4E4 0016A144  90 9E 00 50 */	stw r4, 0x50(r30)
/* 8016E4E8 0016A148  94 85 CD D8 */	stwu r4, lbl_8048CDD8@l(r5)
/* 8016E4EC 0016A14C  98 9E 00 74 */	stb r4, 0x74(r30)
/* 8016E4F0 0016A150  98 9E 00 78 */	stb r4, 0x78(r30)
/* 8016E4F4 0016A154  98 9E 00 7C */	stb r4, 0x7c(r30)
/* 8016E4F8 0016A158  98 9E 00 80 */	stb r4, 0x80(r30)
/* 8016E4FC 0016A15C  93 FE 00 60 */	stw r31, 0x60(r30)
/* 8016E500 0016A160  3B FF 01 04 */	addi r31, r31, 0x104
/* 8016E504 0016A164  90 9E 00 04 */	stw r4, 4(r30)
/* 8016E508 0016A168  90 9E 00 14 */	stw r4, 0x14(r30)
/* 8016E50C 0016A16C  90 9E 00 24 */	stw r4, 0x24(r30)
/* 8016E510 0016A170  90 9E 00 34 */	stw r4, 0x34(r30)
/* 8016E514 0016A174  90 1E 00 44 */	stw r0, 0x44(r30)
/* 8016E518 0016A178  90 9E 00 54 */	stw r4, 0x54(r30)
/* 8016E51C 0016A17C  90 85 00 04 */	stw r4, 4(r5)
/* 8016E520 0016A180  98 9E 00 75 */	stb r4, 0x75(r30)
/* 8016E524 0016A184  98 9E 00 79 */	stb r4, 0x79(r30)
/* 8016E528 0016A188  98 9E 00 7D */	stb r4, 0x7d(r30)
/* 8016E52C 0016A18C  98 9E 00 81 */	stb r4, 0x81(r30)
/* 8016E530 0016A190  93 FE 00 64 */	stw r31, 0x64(r30)
/* 8016E534 0016A194  3B FF 01 04 */	addi r31, r31, 0x104
/* 8016E538 0016A198  90 9E 00 08 */	stw r4, 8(r30)
/* 8016E53C 0016A19C  90 9E 00 18 */	stw r4, 0x18(r30)
/* 8016E540 0016A1A0  90 9E 00 28 */	stw r4, 0x28(r30)
/* 8016E544 0016A1A4  90 9E 00 38 */	stw r4, 0x38(r30)
/* 8016E548 0016A1A8  90 1E 00 48 */	stw r0, 0x48(r30)
/* 8016E54C 0016A1AC  90 9E 00 58 */	stw r4, 0x58(r30)
/* 8016E550 0016A1B0  90 85 00 08 */	stw r4, 8(r5)
/* 8016E554 0016A1B4  98 9E 00 76 */	stb r4, 0x76(r30)
/* 8016E558 0016A1B8  98 9E 00 7A */	stb r4, 0x7a(r30)
/* 8016E55C 0016A1BC  98 9E 00 7E */	stb r4, 0x7e(r30)
/* 8016E560 0016A1C0  98 9E 00 82 */	stb r4, 0x82(r30)
/* 8016E564 0016A1C4  93 FE 00 68 */	stw r31, 0x68(r30)
/* 8016E568 0016A1C8  3B FF 01 04 */	addi r31, r31, 0x104
/* 8016E56C 0016A1CC  90 9E 00 0C */	stw r4, 0xc(r30)
/* 8016E570 0016A1D0  90 9E 00 1C */	stw r4, 0x1c(r30)
/* 8016E574 0016A1D4  90 9E 00 2C */	stw r4, 0x2c(r30)
/* 8016E578 0016A1D8  90 9E 00 3C */	stw r4, 0x3c(r30)
/* 8016E57C 0016A1DC  90 1E 00 4C */	stw r0, 0x4c(r30)
/* 8016E580 0016A1E0  90 9E 00 5C */	stw r4, 0x5c(r30)
/* 8016E584 0016A1E4  90 85 00 0C */	stw r4, 0xc(r5)
/* 8016E588 0016A1E8  98 9E 00 77 */	stb r4, 0x77(r30)
/* 8016E58C 0016A1EC  98 9E 00 7B */	stb r4, 0x7b(r30)
/* 8016E590 0016A1F0  98 9E 00 7F */	stb r4, 0x7f(r30)
/* 8016E594 0016A1F4  98 9E 00 83 */	stb r4, 0x83(r30)
/* 8016E598 0016A1F8  93 FE 00 6C */	stw r31, 0x6c(r30)
/* 8016E59C 0016A1FC  3B FF 01 04 */	addi r31, r31, 0x104
/* 8016E5A0 0016A200  93 FE 00 70 */	stw r31, 0x70(r30)
/* 8016E5A4 0016A204  90 8D 9F 0C */	stw r4, lbl_8063F1CC-_SDA_BASE_(r13)
/* 8016E5A8 0016A208  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8016E5AC 0016A20C  83 C1 00 08 */	lwz r30, 8(r1)
/* 8016E5B0 0016A210  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8016E5B4 0016A214  7C 08 03 A6 */	mtlr r0
/* 8016E5B8 0016A218  38 21 00 10 */	addi r1, r1, 0x10
/* 8016E5BC 0016A21C  4E 80 00 20 */	blr

.global func_8016E5C0
func_8016E5C0:
/* 8016E5C0 0016A220  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8016E5C4 0016A224  7C 08 02 A6 */	mflr r0
/* 8016E5C8 0016A228  2C 03 00 00 */	cmpwi r3, 0
/* 8016E5CC 0016A22C  90 01 00 14 */	stw r0, 0x14(r1)
/* 8016E5D0 0016A230  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8016E5D4 0016A234  7C 9F 23 78 */	mr r31, r4
/* 8016E5D8 0016A238  93 C1 00 08 */	stw r30, 8(r1)
/* 8016E5DC 0016A23C  7C 7E 1B 78 */	mr r30, r3
/* 8016E5E0 0016A240  41 82 00 20 */	beq lbl_8016E600
/* 8016E5E4 0016A244  80 6D 96 2C */	lwz r3, lbl_8063E8EC-_SDA_BASE_(r13)
/* 8016E5E8 0016A248  80 9E 00 60 */	lwz r4, 0x60(r30)
/* 8016E5EC 0016A24C  48 06 C7 5D */	bl func_801DAD48
/* 8016E5F0 0016A250  2C 1F 00 00 */	cmpwi r31, 0
/* 8016E5F4 0016A254  40 81 00 0C */	ble lbl_8016E600
/* 8016E5F8 0016A258  7F C3 F3 78 */	mr r3, r30
/* 8016E5FC 0016A25C  48 06 C4 BD */	bl __dl__FPv
lbl_8016E600:
/* 8016E600 0016A260  7F C3 F3 78 */	mr r3, r30
/* 8016E604 0016A264  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8016E608 0016A268  83 C1 00 08 */	lwz r30, 8(r1)
/* 8016E60C 0016A26C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8016E610 0016A270  7C 08 03 A6 */	mtlr r0
/* 8016E614 0016A274  38 21 00 10 */	addi r1, r1, 0x10
/* 8016E618 0016A278  4E 80 00 20 */	blr
lbl_8016E61C: #__blank?
/* 8016E61C 0016A27C  94 21 FF 90 */	stwu r1, -0x70(r1)
/* 8016E620 0016A280  40 86 00 24 */	bne cr1, lbl_8016E644
/* 8016E624 0016A284  D8 21 00 28 */	stfd f1, 0x28(r1)
/* 8016E628 0016A288  D8 41 00 30 */	stfd f2, 0x30(r1)
/* 8016E62C 0016A28C  D8 61 00 38 */	stfd f3, 0x38(r1)
/* 8016E630 0016A290  D8 81 00 40 */	stfd f4, 0x40(r1)
/* 8016E634 0016A294  D8 A1 00 48 */	stfd f5, 0x48(r1)
/* 8016E638 0016A298  D8 C1 00 50 */	stfd f6, 0x50(r1)
/* 8016E63C 0016A29C  D8 E1 00 58 */	stfd f7, 0x58(r1)
/* 8016E640 0016A2A0  D9 01 00 60 */	stfd f8, 0x60(r1)
lbl_8016E644:
/* 8016E644 0016A2A4  90 61 00 08 */	stw r3, 8(r1)
/* 8016E648 0016A2A8  90 81 00 0C */	stw r4, 0xc(r1)
/* 8016E64C 0016A2AC  90 A1 00 10 */	stw r5, 0x10(r1)
/* 8016E650 0016A2B0  90 C1 00 14 */	stw r6, 0x14(r1)
/* 8016E654 0016A2B4  90 E1 00 18 */	stw r7, 0x18(r1)
/* 8016E658 0016A2B8  91 01 00 1C */	stw r8, 0x1c(r1)
/* 8016E65C 0016A2BC  91 21 00 20 */	stw r9, 0x20(r1)
/* 8016E660 0016A2C0  91 41 00 24 */	stw r10, 0x24(r1)
/* 8016E664 0016A2C4  38 21 00 70 */	addi r1, r1, 0x70
/* 8016E668 0016A2C8  4E 80 00 20 */	blr

.global func_8016E66C
func_8016E66C:
/* 8016E66C 0016A2CC  80 6D 9F 08 */	lwz r3, lbl_8063F1C8-_SDA_BASE_(r13)
/* 8016E670 0016A2D0  48 00 00 04 */	b lbl_8016E674
lbl_8016E674:
/* 8016E674 0016A2D4  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8016E678 0016A2D8  7C 08 02 A6 */	mflr r0
/* 8016E67C 0016A2DC  90 01 00 14 */	stw r0, 0x14(r1)
/* 8016E680 0016A2E0  48 26 B7 89 */	bl func_803D9E08
/* 8016E684 0016A2E4  2C 03 00 00 */	cmpwi r3, 0
/* 8016E688 0016A2E8  41 82 00 14 */	beq lbl_8016E69C
/* 8016E68C 0016A2EC  38 60 00 06 */	li r3, 6
/* 8016E690 0016A2F0  4B FF FC 55 */	bl func_8016E2E4
/* 8016E694 0016A2F4  38 60 00 06 */	li r3, 6
/* 8016E698 0016A2F8  48 00 00 08 */	b lbl_8016E6A0
lbl_8016E69C:
/* 8016E69C 0016A2FC  80 6D 9F 0C */	lwz r3, lbl_8063F1CC-_SDA_BASE_(r13)
lbl_8016E6A0:
/* 8016E6A0 0016A300  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8016E6A4 0016A304  7C 08 03 A6 */	mtlr r0
/* 8016E6A8 0016A308  38 21 00 10 */	addi r1, r1, 0x10
/* 8016E6AC 0016A30C  4E 80 00 20 */	blr

.global func_8016E6B0
func_8016E6B0:
/* 8016E6B0 0016A310  80 0D 9F 0C */	lwz r0, lbl_8063F1CC-_SDA_BASE_(r13)
/* 8016E6B4 0016A314  2C 00 00 00 */	cmpwi r0, 0
/* 8016E6B8 0016A318  41 82 00 4C */	beq lbl_8016E704
/* 8016E6BC 0016A31C  34 00 FF FF */	addic. r0, r0, -1
/* 8016E6C0 0016A320  3D 00 80 49 */	lis r8, lbl_8048CDD8@ha
/* 8016E6C4 0016A324  80 68 CD D8 */	lwz r3, lbl_8048CDD8@l(r8)
/* 8016E6C8 0016A328  90 0D 9F 0C */	stw r0, lbl_8063F1CC-_SDA_BASE_(r13)
/* 8016E6CC 0016A32C  41 82 00 2C */	beq lbl_8016E6F8
/* 8016E6D0 0016A330  38 E8 CD D8 */	addi r7, r8, -12840
/* 8016E6D4 0016A334  38 00 00 00 */	li r0, 0
/* 8016E6D8 0016A338  80 C7 00 04 */	lwz r6, 4(r7)
/* 8016E6DC 0016A33C  80 A7 00 08 */	lwz r5, 8(r7)
/* 8016E6E0 0016A340  80 87 00 0C */	lwz r4, 0xc(r7)
/* 8016E6E4 0016A344  90 C8 CD D8 */	stw r6, -0x3228(r8)
/* 8016E6E8 0016A348  90 A7 00 04 */	stw r5, 4(r7)
/* 8016E6EC 0016A34C  90 87 00 08 */	stw r4, 8(r7)
/* 8016E6F0 0016A350  90 07 00 0C */	stw r0, 0xc(r7)
/* 8016E6F4 0016A354  4E 80 00 20 */	blr
lbl_8016E6F8:
/* 8016E6F8 0016A358  38 00 00 00 */	li r0, 0
/* 8016E6FC 0016A35C  90 08 CD D8 */	stw r0, -0x3228(r8)
/* 8016E700 0016A360  4E 80 00 20 */	blr
lbl_8016E704:
/* 8016E704 0016A364  38 60 00 00 */	li r3, 0
/* 8016E708 0016A368  4E 80 00 20 */	blr

.global cPlayer_PostPhysicsUpdate
cPlayer_PostPhysicsUpdate:
/* 8016E70C 0016A36C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8016E710 0016A370  7C 08 02 A6 */	mflr r0
/* 8016E714 0016A374  90 01 00 14 */	stw r0, 0x14(r1)
/* 8016E718 0016A378  48 00 00 15 */	bl func_8016E72C
/* 8016E71C 0016A37C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8016E720 0016A380  7C 08 03 A6 */	mtlr r0
/* 8016E724 0016A384  38 21 00 10 */	addi r1, r1, 0x10
/* 8016E728 0016A388  4E 80 00 20 */	blr

.global func_8016E72C
func_8016E72C:
/* 8016E72C 0016A38C  94 21 FF 90 */	stwu r1, -0x70(r1)
/* 8016E730 0016A390  7C 08 02 A6 */	mflr r0
/* 8016E734 0016A394  90 01 00 74 */	stw r0, 0x74(r1)
/* 8016E738 0016A398  39 61 00 70 */	addi r11, r1, 0x70
/* 8016E73C 0016A39C  48 05 89 B9 */	bl __save_gpr
/* 8016E740 0016A3A0  7C 6F 1B 78 */	mr r15, r3
/* 8016E744 0016A3A4  4B EC 76 59 */	bl func_80035D9C
/* 8016E748 0016A3A8  4B ED 6E 49 */	bl func_80045590
/* 8016E74C 0016A3AC  7C 7C 1B 78 */	mr r28, r3
/* 8016E750 0016A3B0  4B E9 C3 ED */	bl func_8000AB3C
/* 8016E754 0016A3B4  7C 6E 1B 78 */	mr r14, r3
/* 8016E758 0016A3B8  4B FA E2 1D */	bl func_8011C974
/* 8016E75C 0016A3BC  80 03 00 10 */	lwz r0, 0x10(r3)
/* 8016E760 0016A3C0  7C 7D 1B 78 */	mr r29, r3
/* 8016E764 0016A3C4  3A 00 00 00 */	li r16, 0
/* 8016E768 0016A3C8  28 00 03 EF */	cmplwi r0, 0x3ef
/* 8016E76C 0016A3CC  40 82 00 34 */	bne lbl_8016E7A0
/* 8016E770 0016A3D0  48 0B 50 C1 */	bl func_80223830
/* 8016E774 0016A3D4  3C 80 00 03 */	lis r4, 0x000343FD@ha
/* 8016E778 0016A3D8  80 A3 00 00 */	lwz r5, 0(r3)
/* 8016E77C 0016A3DC  38 04 43 FD */	addi r0, r4, 0x000343FD@l
/* 8016E780 0016A3E0  7C 85 01 D6 */	mullw r4, r5, r0
/* 8016E784 0016A3E4  3C 84 00 27 */	addis r4, r4, 0x27
/* 8016E788 0016A3E8  38 84 9E C3 */	addi r4, r4, -24893
/* 8016E78C 0016A3EC  54 80 87 3E */	rlwinm r0, r4, 0x10, 0x1c, 0x1f
/* 8016E790 0016A3F0  90 83 00 00 */	stw r4, 0(r3)
/* 8016E794 0016A3F4  2C 00 00 04 */	cmpwi r0, 4
/* 8016E798 0016A3F8  40 80 00 08 */	bge lbl_8016E7A0
/* 8016E79C 0016A3FC  3A 00 00 0E */	li r16, 0xe
lbl_8016E7A0:
/* 8016E7A0 0016A400  7D C3 73 78 */	mr r3, r14
/* 8016E7A4 0016A404  4B E9 C3 8D */	bl func_8000AB30
/* 8016E7A8 0016A408  54 6E 06 3E */	clrlwi r14, r3, 0x18
/* 8016E7AC 0016A40C  38 7D 00 8A */	addi r3, r29, 0x8a
/* 8016E7B0 0016A410  48 00 07 A1 */	bl func_8016EF50
/* 8016E7B4 0016A414  80 8F 00 00 */	lwz r4, 0(r15)
/* 8016E7B8 0016A418  7C 66 1B 78 */	mr r6, r3
/* 8016E7BC 0016A41C  7E 05 83 78 */	mr r5, r16
/* 8016E7C0 0016A420  7D C7 73 78 */	mr r7, r14
/* 8016E7C4 0016A424  38 60 00 00 */	li r3, 0
/* 8016E7C8 0016A428  48 26 B9 AD */	bl func_803DA174
/* 8016E7CC 0016A42C  90 6F 00 04 */	stw r3, 4(r15)
/* 8016E7D0 0016A430  3B C0 00 02 */	li r30, 2
/* 8016E7D4 0016A434  80 1D 00 08 */	lwz r0, 8(r29)
/* 8016E7D8 0016A438  2C 00 00 04 */	cmpwi r0, 4
/* 8016E7DC 0016A43C  40 82 00 08 */	bne lbl_8016E7E4
/* 8016E7E0 0016A440  3B C0 00 04 */	li r30, 4
lbl_8016E7E4:
/* 8016E7E4 0016A444  88 1D 09 91 */	lbz r0, 0x991(r29)
/* 8016E7E8 0016A448  54 00 E7 FF */	rlwinm. r0, r0, 0x1c, 0x1f, 0x1f
/* 8016E7EC 0016A44C  40 82 00 0C */	bne lbl_8016E7F8
/* 8016E7F0 0016A450  38 60 00 00 */	li r3, 0
/* 8016E7F4 0016A454  48 00 04 B4 */	b lbl_8016ECA8
lbl_8016E7F8:
/* 8016E7F8 0016A458  3E E0 80 49 */	lis r23, lbl_8048DFC8@ha
/* 8016E7FC 0016A45C  3A 60 00 00 */	li r19, 0
/* 8016E800 0016A460  3A F7 DF C8 */	addi r23, r23, lbl_8048DFC8@l
/* 8016E804 0016A464  3B 20 00 00 */	li r25, 0
/* 8016E808 0016A468  3B 00 00 00 */	li r24, 0
/* 8016E80C 0016A46C  39 C0 00 00 */	li r14, 0
/* 8016E810 0016A470  48 00 02 F4 */	b lbl_8016EB04
lbl_8016E814:
/* 8016E814 0016A474  56 64 07 FF */	clrlwi. r4, r19, 0x1f
/* 8016E818 0016A478  41 82 00 18 */	beq lbl_8016E830
/* 8016E81C 0016A47C  56 60 FF FE */	rlwinm r0, r19, 0x1f, 0x1f, 0x1f
/* 8016E820 0016A480  1C 00 06 EC */	mulli r0, r0, 0x6ec
/* 8016E824 0016A484  7C 7D 02 14 */	add r3, r29, r0
/* 8016E828 0016A488  3B 63 12 24 */	addi r27, r3, 0x1224
/* 8016E82C 0016A48C  48 00 00 14 */	b lbl_8016E840
lbl_8016E830:
/* 8016E830 0016A490  56 60 FF FE */	rlwinm r0, r19, 0x1f, 0x1f, 0x1f
/* 8016E834 0016A494  1C 00 06 EC */	mulli r0, r0, 0x6ec
/* 8016E838 0016A498  7C 7D 02 14 */	add r3, r29, r0
/* 8016E83C 0016A49C  3B 63 04 4C */	addi r27, r3, 0x44c
lbl_8016E840:
/* 8016E840 0016A4A0  2C 04 00 00 */	cmpwi r4, 0
/* 8016E844 0016A4A4  41 82 00 10 */	beq lbl_8016E854
/* 8016E848 0016A4A8  7C 7D 02 14 */	add r3, r29, r0
/* 8016E84C 0016A4AC  3B 43 2D D4 */	addi r26, r3, 0x2dd4
/* 8016E850 0016A4B0  48 00 00 0C */	b lbl_8016E85C
lbl_8016E854:
/* 8016E854 0016A4B4  7C 7D 02 14 */	add r3, r29, r0
/* 8016E858 0016A4B8  3B 43 1F FC */	addi r26, r3, 0x1ffc
lbl_8016E85C:
/* 8016E85C 0016A4BC  8A 9D 00 19 */	lbz r20, 0x19(r29)
/* 8016E860 0016A4C0  2C 14 00 00 */	cmpwi r20, 0
/* 8016E864 0016A4C4  40 82 00 08 */	bne lbl_8016E86C
/* 8016E868 0016A4C8  3A 80 00 06 */	li r20, 6
lbl_8016E86C:
/* 8016E86C 0016A4CC  38 61 00 08 */	addi r3, r1, 8
/* 8016E870 0016A4D0  38 9B 00 04 */	addi r4, r27, 4
/* 8016E874 0016A4D4  38 A0 00 0C */	li r5, 0xc
/* 8016E878 0016A4D8  48 00 86 3D */	bl func_80176EB4
/* 8016E87C 0016A4DC  A0 1B 00 04 */	lhz r0, 4(r27)
/* 8016E880 0016A4E0  2C 00 00 00 */	cmpwi r0, 0
/* 8016E884 0016A4E4  40 82 00 18 */	bne lbl_8016E89C
/* 8016E888 0016A4E8  38 61 00 08 */	addi r3, r1, 8
/* 8016E88C 0016A4EC  38 8D 83 68 */	addi r4, r13, lbl_8063D628-_SDA_BASE_
/* 8016E890 0016A4F0  38 A0 00 0C */	li r5, 0xc
/* 8016E894 0016A4F4  48 00 86 21 */	bl func_80176EB4
/* 8016E898 0016A4F8  48 00 00 14 */	b lbl_8016E8AC
lbl_8016E89C:
/* 8016E89C 0016A4FC  38 61 00 08 */	addi r3, r1, 8
/* 8016E8A0 0016A500  38 9B 00 04 */	addi r4, r27, 4
/* 8016E8A4 0016A504  38 A0 00 0C */	li r5, 0xc
/* 8016E8A8 0016A508  48 00 86 0D */	bl func_80176EB4
lbl_8016E8AC:
/* 8016E8AC 0016A50C  80 0F 00 04 */	lwz r0, 4(r15)
/* 8016E8B0 0016A510  38 81 00 08 */	addi r4, r1, 8
/* 8016E8B4 0016A514  7C 60 CA 14 */	add r3, r0, r25
/* 8016E8B8 0016A518  80 63 00 D8 */	lwz r3, 0xd8(r3)
/* 8016E8BC 0016A51C  48 26 B7 B9 */	bl func_803DA074
/* 8016E8C0 0016A520  80 0F 00 04 */	lwz r0, 4(r15)
/* 8016E8C4 0016A524  38 81 00 08 */	addi r4, r1, 8
/* 8016E8C8 0016A528  7C 60 C2 14 */	add r3, r0, r24
/* 8016E8CC 0016A52C  38 63 00 3C */	addi r3, r3, 0x3c
/* 8016E8D0 0016A530  48 27 03 55 */	bl func_803DEC24
/* 8016E8D4 0016A534  99 D7 00 00 */	stb r14, 0(r23)
/* 8016E8D8 0016A538  38 00 00 01 */	li r0, 1
/* 8016E8DC 0016A53C  3A 40 00 00 */	li r18, 0
/* 8016E8E0 0016A540  98 17 00 01 */	stb r0, 1(r23)
/* 8016E8E4 0016A544  38 00 00 02 */	li r0, 2
/* 8016E8E8 0016A548  98 17 00 02 */	stb r0, 2(r23)
/* 8016E8EC 0016A54C  38 00 00 03 */	li r0, 3
/* 8016E8F0 0016A550  98 17 00 03 */	stb r0, 3(r23)
/* 8016E8F4 0016A554  38 00 00 04 */	li r0, 4
/* 8016E8F8 0016A558  98 17 00 04 */	stb r0, 4(r23)
/* 8016E8FC 0016A55C  38 00 00 05 */	li r0, 5
/* 8016E900 0016A560  98 17 00 05 */	stb r0, 5(r23)
/* 8016E904 0016A564  88 1D 00 1B */	lbz r0, 0x1b(r29)
/* 8016E908 0016A568  28 00 00 01 */	cmplwi r0, 1
/* 8016E90C 0016A56C  40 82 00 B8 */	bne lbl_8016E9C4
/* 8016E910 0016A570  2C 13 00 01 */	cmpwi r19, 1
/* 8016E914 0016A574  41 82 00 0C */	beq lbl_8016E920
/* 8016E918 0016A578  2C 13 00 03 */	cmpwi r19, 3
/* 8016E91C 0016A57C  40 82 00 A8 */	bne lbl_8016E9C4
lbl_8016E920:
/* 8016E920 0016A580  80 1D 00 10 */	lwz r0, 0x10(r29)
/* 8016E924 0016A584  7E 92 A3 78 */	mr r18, r20
/* 8016E928 0016A588  28 00 03 EF */	cmplwi r0, 0x3ef
/* 8016E92C 0016A58C  40 82 00 6C */	bne lbl_8016E998
/* 8016E930 0016A590  88 1D 00 14 */	lbz r0, 0x14(r29)
/* 8016E934 0016A594  28 00 00 0B */	cmplwi r0, 0xb
/* 8016E938 0016A598  40 82 00 60 */	bne lbl_8016E998
/* 8016E93C 0016A59C  A0 7D 00 16 */	lhz r3, 0x16(r29)
/* 8016E940 0016A5A0  28 03 00 0A */	cmplwi r3, 0xa
/* 8016E944 0016A5A4  40 80 00 0C */	bge lbl_8016E950
/* 8016E948 0016A5A8  3A 40 00 01 */	li r18, 1
/* 8016E94C 0016A5AC  48 00 00 24 */	b lbl_8016E970
lbl_8016E950:
/* 8016E950 0016A5B0  28 03 00 1E */	cmplwi r3, 0x1e
/* 8016E954 0016A5B4  40 80 00 0C */	bge lbl_8016E960
/* 8016E958 0016A5B8  3A 40 00 02 */	li r18, 2
/* 8016E95C 0016A5BC  48 00 00 14 */	b lbl_8016E970
lbl_8016E960:
/* 8016E960 0016A5C0  38 00 00 28 */	li r0, 0x28
/* 8016E964 0016A5C4  7C 00 18 10 */	subfc r0, r0, r3
/* 8016E968 0016A5C8  7C 60 01 10 */	subfe r3, r0, r0
/* 8016E96C 0016A5CC  3A 43 00 04 */	addi r18, r3, 4
lbl_8016E970:
/* 8016E970 0016A5D0  56 40 06 3E */	clrlwi r0, r18, 0x18
/* 8016E974 0016A5D4  28 00 00 04 */	cmplwi r0, 4
/* 8016E978 0016A5D8  40 81 00 08 */	ble lbl_8016E980
/* 8016E97C 0016A5DC  3A 40 00 04 */	li r18, 4
lbl_8016E980:
/* 8016E980 0016A5E0  80 1D 00 08 */	lwz r0, 8(r29)
/* 8016E984 0016A5E4  2C 00 00 01 */	cmpwi r0, 1
/* 8016E988 0016A5E8  40 82 00 10 */	bne lbl_8016E998
/* 8016E98C 0016A5EC  56 43 06 3E */	clrlwi r3, r18, 0x18
/* 8016E990 0016A5F0  38 03 00 01 */	addi r0, r3, 1
/* 8016E994 0016A5F4  54 12 06 3E */	clrlwi r18, r0, 0x18
lbl_8016E998:
/* 8016E998 0016A5F8  48 05 2D 51 */	bl func_801C16E8
/* 8016E99C 0016A5FC  2C 03 00 00 */	cmpwi r3, 0
/* 8016E9A0 0016A600  40 82 00 24 */	bne lbl_8016E9C4
/* 8016E9A4 0016A604  88 1D 00 14 */	lbz r0, 0x14(r29)
/* 8016E9A8 0016A608  28 00 00 04 */	cmplwi r0, 4
/* 8016E9AC 0016A60C  41 82 00 18 */	beq lbl_8016E9C4
/* 8016E9B0 0016A610  80 DD 00 08 */	lwz r6, 8(r29)
/* 8016E9B4 0016A614  7F 63 DB 78 */	mr r3, r27
/* 8016E9B8 0016A618  7E E4 BB 78 */	mr r4, r23
/* 8016E9BC 0016A61C  56 45 06 3E */	clrlwi r5, r18, 0x18
/* 8016E9C0 0016A620  48 00 FB 2D */	bl func_8017E4EC
lbl_8016E9C4:
/* 8016E9C4 0016A624  88 1D 00 14 */	lbz r0, 0x14(r29)
/* 8016E9C8 0016A628  28 00 00 03 */	cmplwi r0, 3
/* 8016E9CC 0016A62C  40 82 00 A4 */	bne lbl_8016EA70
/* 8016E9D0 0016A630  88 1D 00 18 */	lbz r0, 0x18(r29)
/* 8016E9D4 0016A634  28 00 00 01 */	cmplwi r0, 1
/* 8016E9D8 0016A638  40 82 00 98 */	bne lbl_8016EA70
/* 8016E9DC 0016A63C  1E B4 00 8C */	mulli r21, r20, 0x8c
/* 8016E9E0 0016A640  7E A3 AB 78 */	mr r3, r21
/* 8016E9E4 0016A644  48 06 C3 81 */	bl func_801DAD64
/* 8016E9E8 0016A648  7C 71 1B 78 */	mr r17, r3
/* 8016E9EC 0016A64C  7E FF BB 78 */	mr r31, r23
/* 8016E9F0 0016A650  7E 36 8B 78 */	mr r22, r17
/* 8016E9F4 0016A654  3A 00 00 00 */	li r16, 0
/* 8016E9F8 0016A658  48 00 00 34 */	b lbl_8016EA2C
lbl_8016E9FC:
/* 8016E9FC 0016A65C  88 1F 00 00 */	lbz r0, 0(r31)
/* 8016EA00 0016A660  28 00 00 FF */	cmplwi r0, 0xff
/* 8016EA04 0016A664  41 82 00 1C */	beq lbl_8016EA20
/* 8016EA08 0016A668  1C 00 00 8C */	mulli r0, r0, 0x8c
/* 8016EA0C 0016A66C  7E C3 B3 78 */	mr r3, r22
/* 8016EA10 0016A670  38 A0 00 8C */	li r5, 0x8c
/* 8016EA14 0016A674  7C 9B 02 14 */	add r4, r27, r0
/* 8016EA18 0016A678  38 84 01 FC */	addi r4, r4, 0x1fc
/* 8016EA1C 0016A67C  4B E9 55 E5 */	bl memcpy
lbl_8016EA20:
/* 8016EA20 0016A680  3A D6 00 8C */	addi r22, r22, 0x8c
/* 8016EA24 0016A684  3A 10 00 01 */	addi r16, r16, 1
/* 8016EA28 0016A688  3B FF 00 01 */	addi r31, r31, 1
lbl_8016EA2C:
/* 8016EA2C 0016A68C  7C 10 A0 00 */	cmpw r16, r20
/* 8016EA30 0016A690  41 80 FF CC */	blt lbl_8016E9FC
/* 8016EA34 0016A694  7E 24 8B 78 */	mr r4, r17
/* 8016EA38 0016A698  7E A5 AB 78 */	mr r5, r21
/* 8016EA3C 0016A69C  38 7A 01 FC */	addi r3, r26, 0x1fc
/* 8016EA40 0016A6A0  4B E9 55 C1 */	bl memcpy
/* 8016EA44 0016A6A4  7E 23 8B 78 */	mr r3, r17
/* 8016EA48 0016A6A8  48 06 C4 5D */	bl func_801DAEA4
/* 8016EA4C 0016A6AC  80 1D 00 08 */	lwz r0, 8(r29)
/* 8016EA50 0016A6B0  2C 00 00 01 */	cmpwi r0, 1
/* 8016EA54 0016A6B4  41 82 00 0C */	beq lbl_8016EA60
/* 8016EA58 0016A6B8  2C 00 00 04 */	cmpwi r0, 4
/* 8016EA5C 0016A6BC  40 82 00 08 */	bne lbl_8016EA64
lbl_8016EA60:
/* 8016EA60 0016A6C0  3A 80 00 02 */	li r20, 2
lbl_8016EA64:
/* 8016EA64 0016A6C4  2C 00 00 02 */	cmpwi r0, 2
/* 8016EA68 0016A6C8  40 82 00 08 */	bne lbl_8016EA70
/* 8016EA6C 0016A6CC  3A 80 00 01 */	li r20, 1
lbl_8016EA70:
/* 8016EA70 0016A6D0  7E F1 BB 78 */	mr r17, r23
/* 8016EA74 0016A6D4  3A 00 00 00 */	li r16, 0
/* 8016EA78 0016A6D8  48 00 00 74 */	b lbl_8016EAEC
lbl_8016EA7C:
/* 8016EA7C 0016A6DC  88 11 00 00 */	lbz r0, 0(r17)
/* 8016EA80 0016A6E0  28 00 00 FF */	cmplwi r0, 0xff
/* 8016EA84 0016A6E4  41 82 00 60 */	beq lbl_8016EAE4
/* 8016EA88 0016A6E8  1C 00 00 8C */	mulli r0, r0, 0x8c
/* 8016EA8C 0016A6EC  7C 7B 02 14 */	add r3, r27, r0
/* 8016EA90 0016A6F0  38 63 01 FC */	addi r3, r3, 0x1fc
/* 8016EA94 0016A6F4  88 03 00 8A */	lbz r0, 0x8a(r3)
/* 8016EA98 0016A6F8  54 00 CF FF */	rlwinm. r0, r0, 0x19, 0x1f, 0x1f
/* 8016EA9C 0016A6FC  41 82 00 48 */	beq lbl_8016EAE4
/* 8016EAA0 0016A700  56 40 06 3F */	clrlwi. r0, r18, 0x18
/* 8016EAA4 0016A704  41 82 00 0C */	beq lbl_8016EAB0
/* 8016EAA8 0016A708  7C 10 00 00 */	cmpw r16, r0
/* 8016EAAC 0016A70C  40 80 00 38 */	bge lbl_8016EAE4
lbl_8016EAB0:
/* 8016EAB0 0016A710  80 8F 00 08 */	lwz r4, 8(r15)
/* 8016EAB4 0016A714  48 26 DC 95 */	bl func_803DC748
/* 8016EAB8 0016A718  80 6F 00 08 */	lwz r3, 8(r15)
/* 8016EABC 0016A71C  38 80 00 05 */	li r4, 5
/* 8016EAC0 0016A720  38 A0 00 00 */	li r5, 0
/* 8016EAC4 0016A724  48 26 EF 19 */	bl func_803DD9DC
/* 8016EAC8 0016A728  2C 03 00 00 */	cmpwi r3, 0
/* 8016EACC 0016A72C  41 82 00 18 */	beq lbl_8016EAE4
/* 8016EAD0 0016A730  80 0F 00 04 */	lwz r0, 4(r15)
/* 8016EAD4 0016A734  80 8F 00 08 */	lwz r4, 8(r15)
/* 8016EAD8 0016A738  7C 79 02 14 */	add r3, r25, r0
/* 8016EADC 0016A73C  80 63 00 04 */	lwz r3, 4(r3)
/* 8016EAE0 0016A740  48 26 FD B1 */	bl func_803DE890
lbl_8016EAE4:
/* 8016EAE4 0016A744  3A 10 00 01 */	addi r16, r16, 1
/* 8016EAE8 0016A748  3A 31 00 01 */	addi r17, r17, 1
lbl_8016EAEC:
/* 8016EAEC 0016A74C  7C 10 A0 00 */	cmpw r16, r20
/* 8016EAF0 0016A750  41 80 FF 8C */	blt lbl_8016EA7C
/* 8016EAF4 0016A754  3B 39 00 04 */	addi r25, r25, 4
/* 8016EAF8 0016A758  3B 18 00 2C */	addi r24, r24, 0x2c
/* 8016EAFC 0016A75C  3A F7 00 06 */	addi r23, r23, 6
/* 8016EB00 0016A760  3A 73 00 01 */	addi r19, r19, 1
lbl_8016EB04:
/* 8016EB04 0016A764  7C 13 F0 00 */	cmpw r19, r30
/* 8016EB08 0016A768  41 80 FD 0C */	blt lbl_8016E814
/* 8016EB0C 0016A76C  88 1D 00 14 */	lbz r0, 0x14(r29)
/* 8016EB10 0016A770  28 00 00 0B */	cmplwi r0, 0xb
/* 8016EB14 0016A774  40 82 00 1C */	bne lbl_8016EB30
/* 8016EB18 0016A778  A0 1D 00 16 */	lhz r0, 0x16(r29)
/* 8016EB1C 0016A77C  28 00 00 01 */	cmplwi r0, 1
/* 8016EB20 0016A780  41 82 00 10 */	beq lbl_8016EB30
/* 8016EB24 0016A784  80 6F 00 04 */	lwz r3, 4(r15)
/* 8016EB28 0016A788  80 63 00 04 */	lwz r3, 4(r3)
/* 8016EB2C 0016A78C  4B FE 1D E5 */	bl func_80150910
lbl_8016EB30:
/* 8016EB30 0016A790  80 1D 00 08 */	lwz r0, 8(r29)
/* 8016EB34 0016A794  2C 00 00 03 */	cmpwi r0, 3
/* 8016EB38 0016A798  41 82 00 68 */	beq lbl_8016EBA0
/* 8016EB3C 0016A79C  40 80 00 14 */	bge lbl_8016EB50
/* 8016EB40 0016A7A0  2C 00 00 01 */	cmpwi r0, 1
/* 8016EB44 0016A7A4  41 82 00 18 */	beq lbl_8016EB5C
/* 8016EB48 0016A7A8  40 80 00 2C */	bge lbl_8016EB74
/* 8016EB4C 0016A7AC  48 00 00 54 */	b lbl_8016EBA0
lbl_8016EB50:
/* 8016EB50 0016A7B0  2C 00 00 05 */	cmpwi r0, 5
/* 8016EB54 0016A7B4  40 80 00 4C */	bge lbl_8016EBA0
/* 8016EB58 0016A7B8  48 00 00 34 */	b lbl_8016EB8C
lbl_8016EB5C:
/* 8016EB5C 0016A7BC  80 6F 00 00 */	lwz r3, 0(r15)
/* 8016EB60 0016A7C0  38 00 00 01 */	li r0, 1
/* 8016EB64 0016A7C4  60 63 00 03 */	ori r3, r3, 3
/* 8016EB68 0016A7C8  90 6F 00 00 */	stw r3, 0(r15)
/* 8016EB6C 0016A7CC  90 1C 00 00 */	stw r0, 0(r28)
/* 8016EB70 0016A7D0  48 00 00 30 */	b lbl_8016EBA0
lbl_8016EB74:
/* 8016EB74 0016A7D4  80 6F 00 00 */	lwz r3, 0(r15)
/* 8016EB78 0016A7D8  38 00 00 00 */	li r0, 0
/* 8016EB7C 0016A7DC  60 63 00 01 */	ori r3, r3, 1
/* 8016EB80 0016A7E0  90 6F 00 00 */	stw r3, 0(r15)
/* 8016EB84 0016A7E4  90 1C 00 00 */	stw r0, 0(r28)
/* 8016EB88 0016A7E8  48 00 00 18 */	b lbl_8016EBA0
lbl_8016EB8C:
/* 8016EB8C 0016A7EC  80 6F 00 00 */	lwz r3, 0(r15)
/* 8016EB90 0016A7F0  38 00 00 02 */	li r0, 2
/* 8016EB94 0016A7F4  60 63 00 0B */	ori r3, r3, 0xb
/* 8016EB98 0016A7F8  90 6F 00 00 */	stw r3, 0(r15)
/* 8016EB9C 0016A7FC  90 1C 00 00 */	stw r0, 0(r28)
lbl_8016EBA0:
/* 8016EBA0 0016A800  80 1D 00 0C */	lwz r0, 0xc(r29)
/* 8016EBA4 0016A804  2C 00 00 02 */	cmpwi r0, 2
/* 8016EBA8 0016A808  41 82 00 20 */	beq lbl_8016EBC8
/* 8016EBAC 0016A80C  40 80 00 10 */	bge lbl_8016EBBC
/* 8016EBB0 0016A810  2C 00 00 01 */	cmpwi r0, 1
/* 8016EBB4 0016A814  40 80 00 60 */	bge lbl_8016EC14
/* 8016EBB8 0016A818  48 00 00 7C */	b lbl_8016EC34
lbl_8016EBBC:
/* 8016EBBC 0016A81C  2C 00 00 04 */	cmpwi r0, 4
/* 8016EBC0 0016A820  40 80 00 74 */	bge lbl_8016EC34
/* 8016EBC4 0016A824  48 00 00 18 */	b lbl_8016EBDC
lbl_8016EBC8:
/* 8016EBC8 0016A828  80 0F 00 00 */	lwz r0, 0(r15)
/* 8016EBCC 0016A82C  60 00 08 00 */	ori r0, r0, 0x800
/* 8016EBD0 0016A830  64 00 00 08 */	oris r0, r0, 8
/* 8016EBD4 0016A834  90 0F 00 00 */	stw r0, 0(r15)
/* 8016EBD8 0016A838  48 00 00 5C */	b lbl_8016EC34
lbl_8016EBDC:
/* 8016EBDC 0016A83C  4B FF 9F 39 */	bl func_80168B14
/* 8016EBE0 0016A840  2C 03 00 00 */	cmpwi r3, 0
/* 8016EBE4 0016A844  41 82 00 14 */	beq lbl_8016EBF8
/* 8016EBE8 0016A848  80 0F 00 00 */	lwz r0, 0(r15)
/* 8016EBEC 0016A84C  60 00 20 00 */	ori r0, r0, 0x2000
/* 8016EBF0 0016A850  90 0F 00 00 */	stw r0, 0(r15)
/* 8016EBF4 0016A854  48 00 00 40 */	b lbl_8016EC34
lbl_8016EBF8:
/* 8016EBF8 0016A858  4B FF 9F 31 */	bl func_80168B28
/* 8016EBFC 0016A85C  2C 03 00 00 */	cmpwi r3, 0
/* 8016EC00 0016A860  41 82 00 34 */	beq lbl_8016EC34
/* 8016EC04 0016A864  80 0F 00 00 */	lwz r0, 0(r15)
/* 8016EC08 0016A868  64 00 00 04 */	oris r0, r0, 4
/* 8016EC0C 0016A86C  90 0F 00 00 */	stw r0, 0(r15)
/* 8016EC10 0016A870  48 00 00 24 */	b lbl_8016EC34
lbl_8016EC14:
/* 8016EC14 0016A874  80 0F 00 00 */	lwz r0, 0(r15)
/* 8016EC18 0016A878  60 03 10 00 */	ori r3, r0, 0x1000
/* 8016EC1C 0016A87C  90 6F 00 00 */	stw r3, 0(r15)
/* 8016EC20 0016A880  88 1D 00 1B */	lbz r0, 0x1b(r29)
/* 8016EC24 0016A884  28 00 00 02 */	cmplwi r0, 2
/* 8016EC28 0016A888  40 82 00 0C */	bne lbl_8016EC34
/* 8016EC2C 0016A88C  64 60 00 08 */	oris r0, r3, 8
/* 8016EC30 0016A890  90 0F 00 00 */	stw r0, 0(r15)
lbl_8016EC34:
/* 8016EC34 0016A894  88 1D 00 1B */	lbz r0, 0x1b(r29)
/* 8016EC38 0016A898  2C 00 00 04 */	cmpwi r0, 4
/* 8016EC3C 0016A89C  41 82 00 4C */	beq lbl_8016EC88
/* 8016EC40 0016A8A0  40 80 00 1C */	bge lbl_8016EC5C
/* 8016EC44 0016A8A4  2C 00 00 02 */	cmpwi r0, 2
/* 8016EC48 0016A8A8  41 82 00 30 */	beq lbl_8016EC78
/* 8016EC4C 0016A8AC  40 80 00 58 */	bge lbl_8016ECA4
/* 8016EC50 0016A8B0  2C 00 00 01 */	cmpwi r0, 1
/* 8016EC54 0016A8B4  40 80 00 14 */	bge lbl_8016EC68
/* 8016EC58 0016A8B8  48 00 00 4C */	b lbl_8016ECA4
lbl_8016EC5C:
/* 8016EC5C 0016A8BC  2C 00 00 08 */	cmpwi r0, 8
/* 8016EC60 0016A8C0  41 82 00 38 */	beq lbl_8016EC98
/* 8016EC64 0016A8C4  48 00 00 40 */	b lbl_8016ECA4
lbl_8016EC68:
/* 8016EC68 0016A8C8  80 0F 00 00 */	lwz r0, 0(r15)
/* 8016EC6C 0016A8CC  60 00 40 00 */	ori r0, r0, 0x4000
/* 8016EC70 0016A8D0  90 0F 00 00 */	stw r0, 0(r15)
/* 8016EC74 0016A8D4  48 00 00 30 */	b lbl_8016ECA4
lbl_8016EC78:
/* 8016EC78 0016A8D8  80 0F 00 00 */	lwz r0, 0(r15)
/* 8016EC7C 0016A8DC  60 00 80 00 */	ori r0, r0, 0x8000
/* 8016EC80 0016A8E0  90 0F 00 00 */	stw r0, 0(r15)
/* 8016EC84 0016A8E4  48 00 00 20 */	b lbl_8016ECA4
lbl_8016EC88:
/* 8016EC88 0016A8E8  80 0F 00 00 */	lwz r0, 0(r15)
/* 8016EC8C 0016A8EC  64 00 00 01 */	oris r0, r0, 1
/* 8016EC90 0016A8F0  90 0F 00 00 */	stw r0, 0(r15)
/* 8016EC94 0016A8F4  48 00 00 10 */	b lbl_8016ECA4
lbl_8016EC98:
/* 8016EC98 0016A8F8  80 0F 00 00 */	lwz r0, 0(r15)
/* 8016EC9C 0016A8FC  60 00 40 00 */	ori r0, r0, 0x4000
/* 8016ECA0 0016A900  90 0F 00 00 */	stw r0, 0(r15)
lbl_8016ECA4:
/* 8016ECA4 0016A904  38 60 00 01 */	li r3, 1
lbl_8016ECA8:
/* 8016ECA8 0016A908  39 61 00 70 */	addi r11, r1, 0x70
/* 8016ECAC 0016A90C  48 05 84 95 */	bl __restore_gpr
/* 8016ECB0 0016A910  80 01 00 74 */	lwz r0, 0x74(r1)
/* 8016ECB4 0016A914  7C 08 03 A6 */	mtlr r0
/* 8016ECB8 0016A918  38 21 00 70 */	addi r1, r1, 0x70
/* 8016ECBC 0016A91C  4E 80 00 20 */	blr

.global func_8016ECC0
func_8016ECC0:
/* 8016ECC0 0016A920  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 8016ECC4 0016A924  7C 08 02 A6 */	mflr r0
/* 8016ECC8 0016A928  90 01 00 34 */	stw r0, 0x34(r1)
/* 8016ECCC 0016A92C  39 61 00 30 */	addi r11, r1, 0x30
/* 8016ECD0 0016A930  48 05 84 45 */	bl _savegpr_22
/* 8016ECD4 0016A934  80 03 00 00 */	lwz r0, 0(r3)
/* 8016ECD8 0016A938  7C 7D 1B 78 */	mr r29, r3
/* 8016ECDC 0016A93C  54 03 07 39 */	rlwinm. r3, r0, 0, 0x1c, 0x1c
/* 8016ECE0 0016A940  54 04 FF FE */	rlwinm r4, r0, 0x1f, 0x1f, 0x1f
/* 8016ECE4 0016A944  54 03 EF FE */	rlwinm r3, r0, 0x1d, 0x1f, 0x1f
/* 8016ECE8 0016A948  3B E4 00 01 */	addi r31, r4, 1
/* 8016ECEC 0016A94C  38 03 00 01 */	addi r0, r3, 1
/* 8016ECF0 0016A950  41 82 00 74 */	beq lbl_8016ED64
/* 8016ECF4 0016A954  54 1B 0D FC */	rlwinm r27, r0, 1, 0x17, 0x1e
/* 8016ECF8 0016A958  3A C0 00 00 */	li r22, 0
/* 8016ECFC 0016A95C  48 00 00 58 */	b lbl_8016ED54
lbl_8016ED00:
/* 8016ED00 0016A960  56 DC 15 BA */	rlwinm r28, r22, 2, 0x16, 0x1d
/* 8016ED04 0016A964  3A E0 00 00 */	li r23, 0
lbl_8016ED08:
/* 8016ED08 0016A968  80 1D 00 04 */	lwz r0, 4(r29)
/* 8016ED0C 0016A96C  56 E4 06 3E */	clrlwi r4, r23, 0x18
/* 8016ED10 0016A970  7C 7C 02 14 */	add r3, r28, r0
/* 8016ED14 0016A974  80 63 00 04 */	lwz r3, 4(r3)
/* 8016ED18 0016A978  48 26 FC 35 */	bl func_803DE94C
/* 8016ED1C 0016A97C  7C 78 1B 78 */	mr r24, r3
/* 8016ED20 0016A980  38 80 00 A2 */	li r4, 0xa2
/* 8016ED24 0016A984  38 A0 00 00 */	li r5, 0
/* 8016ED28 0016A988  48 26 EC B5 */	bl func_803DD9DC
/* 8016ED2C 0016A98C  2C 03 00 00 */	cmpwi r3, 0
/* 8016ED30 0016A990  41 82 00 14 */	beq lbl_8016ED44
/* 8016ED34 0016A994  7F 03 C3 78 */	mr r3, r24
/* 8016ED38 0016A998  56 C4 06 3E */	clrlwi r4, r22, 0x18
/* 8016ED3C 0016A99C  4B FF E2 75 */	bl func_8016CFB0
/* 8016ED40 0016A9A0  48 00 00 10 */	b lbl_8016ED50
lbl_8016ED44:
/* 8016ED44 0016A9A4  3A F7 00 01 */	addi r23, r23, 1
/* 8016ED48 0016A9A8  28 17 00 06 */	cmplwi r23, 6
/* 8016ED4C 0016A9AC  41 80 FF BC */	blt lbl_8016ED08
lbl_8016ED50:
/* 8016ED50 0016A9B0  3A D6 00 01 */	addi r22, r22, 1
lbl_8016ED54:
/* 8016ED54 0016A9B4  56 C0 06 3E */	clrlwi r0, r22, 0x18
/* 8016ED58 0016A9B8  7C 00 D8 00 */	cmpw r0, r27
/* 8016ED5C 0016A9BC  41 80 FF A4 */	blt lbl_8016ED00
/* 8016ED60 0016A9C0  48 00 01 50 */	b lbl_8016EEB0
lbl_8016ED64:
/* 8016ED64 0016A9C4  54 1E 0D FC */	rlwinm r30, r0, 1, 0x17, 0x1e
/* 8016ED68 0016A9C8  3B 20 00 00 */	li r25, 0
/* 8016ED6C 0016A9CC  48 00 00 94 */	b lbl_8016EE00
lbl_8016ED70:
/* 8016ED70 0016A9D0  57 20 07 FF */	clrlwi. r0, r25, 0x1f
/* 8016ED74 0016A9D4  40 82 00 88 */	bne lbl_8016EDFC
/* 8016ED78 0016A9D8  57 3B 15 BA */	rlwinm r27, r25, 2, 0x16, 0x1d
/* 8016ED7C 0016A9DC  57 FC 06 3E */	clrlwi r28, r31, 0x18
/* 8016ED80 0016A9E0  3B 40 00 00 */	li r26, 0
/* 8016ED84 0016A9E4  3A C0 00 00 */	li r22, 0
/* 8016ED88 0016A9E8  48 00 00 68 */	b lbl_8016EDF0
lbl_8016ED8C:
/* 8016ED8C 0016A9EC  7F 58 D3 78 */	mr r24, r26
/* 8016ED90 0016A9F0  48 00 00 50 */	b lbl_8016EDE0
lbl_8016ED94:
/* 8016ED94 0016A9F4  80 1D 00 04 */	lwz r0, 4(r29)
/* 8016ED98 0016A9F8  57 04 06 3E */	clrlwi r4, r24, 0x18
/* 8016ED9C 0016A9FC  3B 5A 00 01 */	addi r26, r26, 1
/* 8016EDA0 0016AA00  7C 7B 02 14 */	add r3, r27, r0
/* 8016EDA4 0016AA04  80 63 00 04 */	lwz r3, 4(r3)
/* 8016EDA8 0016AA08  48 26 FB A5 */	bl func_803DE94C
/* 8016EDAC 0016AA0C  7C 77 1B 78 */	mr r23, r3
/* 8016EDB0 0016AA10  38 80 00 A2 */	li r4, 0xa2
/* 8016EDB4 0016AA14  38 A0 00 00 */	li r5, 0
/* 8016EDB8 0016AA18  48 26 EC 25 */	bl func_803DD9DC
/* 8016EDBC 0016AA1C  2C 03 00 00 */	cmpwi r3, 0
/* 8016EDC0 0016AA20  41 82 00 1C */	beq lbl_8016EDDC
/* 8016EDC4 0016AA24  57 24 06 3E */	clrlwi r4, r25, 0x18
/* 8016EDC8 0016AA28  56 C0 0D FC */	rlwinm r0, r22, 1, 0x17, 0x1e
/* 8016EDCC 0016AA2C  7E E3 BB 78 */	mr r3, r23
/* 8016EDD0 0016AA30  7C 84 02 14 */	add r4, r4, r0
/* 8016EDD4 0016AA34  4B FF E1 DD */	bl func_8016CFB0
/* 8016EDD8 0016AA38  48 00 00 14 */	b lbl_8016EDEC
lbl_8016EDDC:
/* 8016EDDC 0016AA3C  3B 18 00 01 */	addi r24, r24, 1
lbl_8016EDE0:
/* 8016EDE0 0016AA40  57 00 06 3E */	clrlwi r0, r24, 0x18
/* 8016EDE4 0016AA44  28 00 00 06 */	cmplwi r0, 6
/* 8016EDE8 0016AA48  41 80 FF AC */	blt lbl_8016ED94
lbl_8016EDEC:
/* 8016EDEC 0016AA4C  3A D6 00 01 */	addi r22, r22, 1
lbl_8016EDF0:
/* 8016EDF0 0016AA50  56 C0 06 3E */	clrlwi r0, r22, 0x18
/* 8016EDF4 0016AA54  7C 00 E0 40 */	cmplw r0, r28
/* 8016EDF8 0016AA58  41 80 FF 94 */	blt lbl_8016ED8C
lbl_8016EDFC:
/* 8016EDFC 0016AA5C  3B 39 00 01 */	addi r25, r25, 1
lbl_8016EE00:
/* 8016EE00 0016AA60  57 20 06 3E */	clrlwi r0, r25, 0x18
/* 8016EE04 0016AA64  7C 00 F0 00 */	cmpw r0, r30
/* 8016EE08 0016AA68  41 80 FF 68 */	blt lbl_8016ED70
/* 8016EE0C 0016AA6C  3B 20 00 00 */	li r25, 0
/* 8016EE10 0016AA70  48 00 00 94 */	b lbl_8016EEA4
lbl_8016EE14:
/* 8016EE14 0016AA74  57 20 07 FF */	clrlwi. r0, r25, 0x1f
/* 8016EE18 0016AA78  41 82 00 88 */	beq lbl_8016EEA0
/* 8016EE1C 0016AA7C  57 3B 15 BA */	rlwinm r27, r25, 2, 0x16, 0x1d
/* 8016EE20 0016AA80  57 FC 06 3E */	clrlwi r28, r31, 0x18
/* 8016EE24 0016AA84  3B 40 00 00 */	li r26, 0
/* 8016EE28 0016AA88  3A C0 00 00 */	li r22, 0
/* 8016EE2C 0016AA8C  48 00 00 68 */	b lbl_8016EE94
lbl_8016EE30:
/* 8016EE30 0016AA90  7F 58 D3 78 */	mr r24, r26
/* 8016EE34 0016AA94  48 00 00 50 */	b lbl_8016EE84
lbl_8016EE38:
/* 8016EE38 0016AA98  80 1D 00 04 */	lwz r0, 4(r29)
/* 8016EE3C 0016AA9C  57 04 06 3E */	clrlwi r4, r24, 0x18
/* 8016EE40 0016AAA0  3B 5A 00 01 */	addi r26, r26, 1
/* 8016EE44 0016AAA4  7C 7B 02 14 */	add r3, r27, r0
/* 8016EE48 0016AAA8  80 63 00 04 */	lwz r3, 4(r3)
/* 8016EE4C 0016AAAC  48 26 FB 01 */	bl func_803DE94C
/* 8016EE50 0016AAB0  7C 77 1B 78 */	mr r23, r3
/* 8016EE54 0016AAB4  38 80 00 A2 */	li r4, 0xa2
/* 8016EE58 0016AAB8  38 A0 00 00 */	li r5, 0
/* 8016EE5C 0016AABC  48 26 EB 81 */	bl func_803DD9DC
/* 8016EE60 0016AAC0  2C 03 00 00 */	cmpwi r3, 0
/* 8016EE64 0016AAC4  41 82 00 1C */	beq lbl_8016EE80
/* 8016EE68 0016AAC8  57 24 06 3E */	clrlwi r4, r25, 0x18
/* 8016EE6C 0016AACC  56 C0 0D FC */	rlwinm r0, r22, 1, 0x17, 0x1e
/* 8016EE70 0016AAD0  7E E3 BB 78 */	mr r3, r23
/* 8016EE74 0016AAD4  7C 84 02 14 */	add r4, r4, r0
/* 8016EE78 0016AAD8  4B FF E1 39 */	bl func_8016CFB0
/* 8016EE7C 0016AADC  48 00 00 14 */	b lbl_8016EE90
lbl_8016EE80:
/* 8016EE80 0016AAE0  3B 18 00 01 */	addi r24, r24, 1
lbl_8016EE84:
/* 8016EE84 0016AAE4  57 00 06 3E */	clrlwi r0, r24, 0x18
/* 8016EE88 0016AAE8  28 00 00 06 */	cmplwi r0, 6
/* 8016EE8C 0016AAEC  41 80 FF AC */	blt lbl_8016EE38
lbl_8016EE90:
/* 8016EE90 0016AAF0  3A D6 00 01 */	addi r22, r22, 1
lbl_8016EE94:
/* 8016EE94 0016AAF4  56 C0 06 3E */	clrlwi r0, r22, 0x18
/* 8016EE98 0016AAF8  7C 00 E0 40 */	cmplw r0, r28
/* 8016EE9C 0016AAFC  41 80 FF 94 */	blt lbl_8016EE30
lbl_8016EEA0:
/* 8016EEA0 0016AB00  3B 39 00 01 */	addi r25, r25, 1
lbl_8016EEA4:
/* 8016EEA4 0016AB04  57 20 06 3E */	clrlwi r0, r25, 0x18
/* 8016EEA8 0016AB08  7C 00 F0 00 */	cmpw r0, r30
/* 8016EEAC 0016AB0C  41 80 FF 68 */	blt lbl_8016EE14
lbl_8016EEB0:
/* 8016EEB0 0016AB10  39 61 00 30 */	addi r11, r1, 0x30
/* 8016EEB4 0016AB14  48 05 82 AD */	bl _restgpr_22
/* 8016EEB8 0016AB18  80 01 00 34 */	lwz r0, 0x34(r1)
/* 8016EEBC 0016AB1C  7C 08 03 A6 */	mtlr r0
/* 8016EEC0 0016AB20  38 21 00 30 */	addi r1, r1, 0x30
/* 8016EEC4 0016AB24  4E 80 00 20 */	blr

.global func_8016EEC8
func_8016EEC8:
/* 8016EEC8 0016AB28  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8016EECC 0016AB2C  7C 08 02 A6 */	mflr r0
/* 8016EED0 0016AB30  90 01 00 14 */	stw r0, 0x14(r1)
/* 8016EED4 0016AB34  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8016EED8 0016AB38  3B E0 00 00 */	li r31, 0
/* 8016EEDC 0016AB3C  93 C1 00 08 */	stw r30, 8(r1)
/* 8016EEE0 0016AB40  7C 7E 1B 78 */	mr r30, r3
lbl_8016EEE4:
/* 8016EEE4 0016AB44  80 7E 00 00 */	lwz r3, 0(r30)
/* 8016EEE8 0016AB48  57 E4 06 3E */	clrlwi r4, r31, 0x18
/* 8016EEEC 0016AB4C  48 25 A3 DD */	bl func_803C92C8
/* 8016EEF0 0016AB50  54 64 06 3E */	clrlwi r4, r3, 0x18
/* 8016EEF4 0016AB54  28 04 00 FF */	cmplwi r4, 0xff
/* 8016EEF8 0016AB58  41 82 00 34 */	beq lbl_8016EF2C
/* 8016EEFC 0016AB5C  80 BE 00 04 */	lwz r5, 4(r30)
/* 8016EF00 0016AB60  54 60 15 BA */	rlwinm r0, r3, 2, 0x16, 0x1d
/* 8016EF04 0016AB64  80 7E 00 00 */	lwz r3, 0(r30)
/* 8016EF08 0016AB68  7C A5 02 14 */	add r5, r5, r0
/* 8016EF0C 0016AB6C  80 A5 00 04 */	lwz r5, 4(r5)
/* 8016EF10 0016AB70  48 00 85 49 */	bl func_80177458
/* 8016EF14 0016AB74  80 1E 00 00 */	lwz r0, 0(r30)
/* 8016EF18 0016AB78  54 00 07 39 */	rlwinm. r0, r0, 0, 0x1c, 0x1c
/* 8016EF1C 0016AB7C  40 82 00 10 */	bne lbl_8016EF2C
/* 8016EF20 0016AB80  57 E0 06 3E */	clrlwi r0, r31, 0x18
/* 8016EF24 0016AB84  28 00 00 01 */	cmplwi r0, 1
/* 8016EF28 0016AB88  40 80 00 10 */	bge lbl_8016EF38
lbl_8016EF2C:
/* 8016EF2C 0016AB8C  3B FF 00 01 */	addi r31, r31, 1
/* 8016EF30 0016AB90  28 1F 00 04 */	cmplwi r31, 4
/* 8016EF34 0016AB94  41 80 FF B0 */	blt lbl_8016EEE4
lbl_8016EF38:
/* 8016EF38 0016AB98  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8016EF3C 0016AB9C  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8016EF40 0016ABA0  83 C1 00 08 */	lwz r30, 8(r1)
/* 8016EF44 0016ABA4  7C 08 03 A6 */	mtlr r0
/* 8016EF48 0016ABA8  38 21 00 10 */	addi r1, r1, 0x10
/* 8016EF4C 0016ABAC  4E 80 00 20 */	blr

.global func_8016EF50
func_8016EF50:
/* 8016EF50 0016ABB0  A0 03 00 0C */	lhz r0, 0xc(r3)
/* 8016EF54 0016ABB4  38 80 00 00 */	li r4, 0
/* 8016EF58 0016ABB8  54 00 9F FF */	rlwinm. r0, r0, 0x13, 0x1f, 0x1f
/* 8016EF5C 0016ABBC  40 82 00 08 */	bne lbl_8016EF64
/* 8016EF60 0016ABC0  60 84 00 02 */	ori r4, r4, 2
lbl_8016EF64:
/* 8016EF64 0016ABC4  A0 03 00 0C */	lhz r0, 0xc(r3)
/* 8016EF68 0016ABC8  54 00 A7 FF */	rlwinm. r0, r0, 0x14, 0x1f, 0x1f
/* 8016EF6C 0016ABCC  40 82 00 08 */	bne lbl_8016EF74
/* 8016EF70 0016ABD0  60 84 00 04 */	ori r4, r4, 4
lbl_8016EF74:
/* 8016EF74 0016ABD4  A0 03 00 0C */	lhz r0, 0xc(r3)
/* 8016EF78 0016ABD8  54 00 AF FF */	rlwinm. r0, r0, 0x15, 0x1f, 0x1f
/* 8016EF7C 0016ABDC  41 82 00 08 */	beq lbl_8016EF84
/* 8016EF80 0016ABE0  60 84 00 08 */	ori r4, r4, 8
lbl_8016EF84:
/* 8016EF84 0016ABE4  A0 03 00 0C */	lhz r0, 0xc(r3)
/* 8016EF88 0016ABE8  54 00 B7 FF */	rlwinm. r0, r0, 0x16, 0x1f, 0x1f
/* 8016EF8C 0016ABEC  41 82 00 08 */	beq lbl_8016EF94
/* 8016EF90 0016ABF0  60 84 00 10 */	ori r4, r4, 0x10
lbl_8016EF94:
/* 8016EF94 0016ABF4  A0 03 00 0C */	lhz r0, 0xc(r3)
/* 8016EF98 0016ABF8  54 00 BF FF */	rlwinm. r0, r0, 0x17, 0x1f, 0x1f
/* 8016EF9C 0016ABFC  41 82 00 08 */	beq lbl_8016EFA4
/* 8016EFA0 0016AC00  60 84 00 01 */	ori r4, r4, 1
lbl_8016EFA4:
/* 8016EFA4 0016AC04  7C 83 23 78 */	mr r3, r4
/* 8016EFA8 0016AC08  4E 80 00 20 */	blr

.global func_8016EFAC
func_8016EFAC:
/* 8016EFAC 0016AC0C  38 A0 00 01 */	li r5, 1
/* 8016EFB0 0016AC10  38 6D 9F 10 */	addi r3, r13, lbl_8063F1D0-_SDA_BASE_
/* 8016EFB4 0016AC14  38 80 00 04 */	li r4, 4
/* 8016EFB8 0016AC18  38 00 00 00 */	li r0, 0
/* 8016EFBC 0016AC1C  98 AD 9F 10 */	stb r5, lbl_8063F1D0-_SDA_BASE_(r13)
/* 8016EFC0 0016AC20  B0 83 00 02 */	sth r4, 2(r3)
/* 8016EFC4 0016AC24  98 03 00 04 */	stb r0, 4(r3)
/* 8016EFC8 0016AC28  4E 80 00 20 */	blr