summaryrefslogtreecommitdiff
path: root/asm/Dolphin/os/OSThread.s
blob: 2880583f6d2948fc5089ae5eb6be15987310cb4b (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
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
.include "macros.inc"

.section .text

.global func_80371620
.type func_80371620, @function
func_80371620:
/* 80371620 7C0802A6 */ mflr        r0
/* 80371624 3C608054 */ lis         r3, lbl_8053ecf8@ha
/* 80371628 90010004 */ stw         r0, 4(r1)
/* 8037162C 38000002 */ li          r0, 0x2
/* 80371630 38800010 */ li          r4, 0x10
/* 80371634 9421FFE0 */ stwu        r1, -0x20(r1)
/* 80371638 BF410008 */ stmw        r26, 8(r1)
/* 8037163C 3B83ECF8 */ addi        r28, r3, lbl_8053ecf8@l
/* 80371640 3BFC0410 */ addi        r31, r28, 0x410
/* 80371644 3BA00000 */ li          r29, 0x0
/* 80371648 387F02E8 */ addi        r3, r31, 0x2e8
/* 8037164C B01C06D8 */ sth         r0, 0x6d8(r28)
/* 80371650 38000001 */ li          r0, 0x1
/* 80371654 B01C06DA */ sth         r0, 0x6da(r28)
/* 80371658 3800FFFF */ li          r0, -0x1
/* 8037165C 909C06E4 */ stw         r4, 0x6e4(r28)
/* 80371660 909C06E0 */ stw         r4, 0x6e0(r28)
/* 80371664 93BC06DC */ stw         r29, 0x6dc(r28)
/* 80371668 901C06E8 */ stw         r0, 0x6e8(r28)
/* 8037166C 93BC0700 */ stw         r29, 0x700(r28)
/* 80371670 480000D9 */ bl          func_80371748
/* 80371674 93BC0708 */ stw         r29, 0x708(r28)
/* 80371678 3FC08000 */ lis         r30, 0x8000
/* 8037167C 387F0000 */ addi        r3, r31, 0x0
/* 80371680 93BC0704 */ stw         r29, 0x704(r28)
/* 80371684 93FE00D8 */ stw         r31, 0xd8(r30)
/* 80371688 4BFFCBD9 */ bl          func_8036e260
/* 8037168C 7FE3FB78 */ mr          r3, r31
/* 80371690 4BFFCA09 */ bl          func_8036e098
/* 80371694 3C60805E */ lis         r3, 0x805e
/* 80371698 380309C8 */ addi        r0, r3, 0x9c8
/* 8037169C 3C60805D */ lis         r3, 0x805d
/* 803716A0 901C0714 */ stw         r0, 0x714(r28)
/* 803716A4 380309C4 */ addi        r0, r3, 0x9c4
/* 803716A8 387C0718 */ addi        r3, r28, 0x718
/* 803716AC 901C0718 */ stw         r0, 0x718(r28)
/* 803716B0 3C80DEAE */ lis         r4, 0xdeae
/* 803716B4 3B400000 */ li          r26, 0x0
/* 803716B8 80630000 */ lwz         r3, 0(r3)
/* 803716BC 3884BABE */ addi        r4, r4, -0x4542
/* 803716C0 57401838 */ slwi        r0, r26, 3
/* 803716C4 90830000 */ stw         r4, 0(r3)
/* 803716C8 7F7C0214 */ add         r27, r28, r0
/* 803716CC 93ADCA98 */ stw         r29, lbl_805c68b8@sda21(0)
/* 803716D0 93FE00E4 */ stw         r31, 0xe4(r30)
/* 803716D4 93ADCA9C */ stw         r29, lbl_805c68bc@sda21(0)
lbl_803716d8:
/* 803716D8 7F63DB78 */ mr          r3, r27
/* 803716DC 4800006D */ bl          func_80371748
/* 803716E0 3B5A0001 */ addi        r26, r26, 0x1
/* 803716E4 2C1A001F */ cmpwi       r26, 0x1f
/* 803716E8 3B7B0008 */ addi        r27, r27, 0x8
/* 803716EC 4081FFEC */ ble+        lbl_803716d8
/* 803716F0 3FC08000 */ lis         r30, 0x8000
/* 803716F4 387E00DC */ addi        r3, r30, 0xdc
/* 803716F8 48000051 */ bl          func_80371748
/* 803716FC 389E00DC */ addi        r4, r30, 0xdc
/* 80371700 84640004 */ lwzu        r3, 4(r4)
/* 80371704 28030000 */ cmplwi      r3, 0
/* 80371708 4082000C */ bne-        lbl_80371714
/* 8037170C 93FE00DC */ stw         r31, 0xdc(r30)
/* 80371710 48000008 */ b           lbl_80371718
lbl_80371714:
/* 80371714 93E302FC */ stw         r31, 0x2fc(r3)
lbl_80371718:
/* 80371718 907F0300 */ stw         r3, 0x300(r31)
/* 8037171C 3BC00000 */ li          r30, 0x0
/* 80371720 387C0720 */ addi        r3, r28, 0x720
/* 80371724 93DF02FC */ stw         r30, 0x2fc(r31)
/* 80371728 93E40000 */ stw         r31, 0(r4)
/* 8037172C 4BFFCB35 */ bl          func_8036e260
/* 80371730 93CDCAA0 */ stw         r30, lbl_805c68c0@sda21(0)
/* 80371734 BB410008 */ lmw         r26, 8(r1)
/* 80371738 80010024 */ lwz         r0, 0x24(r1)
/* 8037173C 38210020 */ addi        r1, r1, 0x20
/* 80371740 7C0803A6 */ mtlr        r0
/* 80371744 4E800020 */ blr         
.size func_80371620, . - func_80371620


.global func_80371748
.type func_80371748, @function
func_80371748:
/* 80371748 38000000 */ li          r0, 0x0
/* 8037174C 90030004 */ stw         r0, 4(r3)
/* 80371750 90030000 */ stw         r0, 0(r3)
/* 80371754 4E800020 */ blr         
.size func_80371748, . - func_80371748


.global func_80371758
.type func_80371758, @function
func_80371758:
/* 80371758 3C608000 */ lis         r3, 0x8000
/* 8037175C 806300E4 */ lwz         r3, 0xe4(r3)
/* 80371760 4E800020 */ blr         
.size func_80371758, . - func_80371758


.global func_80371764
.type func_80371764, @function
func_80371764:
/* 80371764 800302CC */ lwz         r0, 0x2cc(r3)
/* 80371768 2C000000 */ cmpwi       r0, 0x0
/* 8037176C 4081000C */ ble-        lbl_80371778
/* 80371770 38600001 */ li          r3, 0x1
/* 80371774 4E800020 */ blr         
lbl_80371778:
/* 80371778 38600000 */ li          r3, 0x0
/* 8037177C 4E800020 */ blr         
.size func_80371764, . - func_80371764


.global func_80371780
.type func_80371780, @function
func_80371780:
/* 80371780 A06302C8 */ lhz         r3, 0x2c8(r3)
/* 80371784 38000001 */ li          r0, 0x1
/* 80371788 28030008 */ cmplwi      r3, 8
/* 8037178C 41820010 */ beq-        lbl_8037179c
/* 80371790 28030000 */ cmplwi      r3, 0
/* 80371794 41820008 */ beq-        lbl_8037179c
/* 80371798 38000000 */ li          r0, 0x0
lbl_8037179c:
/* 8037179C 2C000000 */ cmpwi       r0, 0x0
/* 803717A0 4182000C */ beq-        lbl_803717ac
/* 803717A4 38600001 */ li          r3, 0x1
/* 803717A8 4E800020 */ blr         
lbl_803717ac:
/* 803717AC 38600000 */ li          r3, 0x0
/* 803717B0 4E800020 */ blr         
.size func_80371780, . - func_80371780


.global func_803717b4
.type func_803717b4, @function
func_803717b4:
/* 803717B4 7C0802A6 */ mflr        r0
/* 803717B8 90010004 */ stw         r0, 4(r1)
/* 803717BC 9421FFF0 */ stwu        r1, -0x10(r1)
/* 803717C0 93E1000C */ stw         r31, 0xc(r1)
/* 803717C4 4BFFD311 */ bl          func_8036ead4
/* 803717C8 808DCAA0 */ lwz         r4, lbl_805c68c0@sda21(0)
/* 803717CC 38040001 */ addi        r0, r4, 0x1
/* 803717D0 900DCAA0 */ stw         r0, lbl_805c68c0@sda21(0)
/* 803717D4 7C9F2378 */ mr          r31, r4
/* 803717D8 4BFFD325 */ bl          func_8036eafc
/* 803717DC 7FE3FB78 */ mr          r3, r31
/* 803717E0 80010014 */ lwz         r0, 0x14(r1)
/* 803717E4 83E1000C */ lwz         r31, 0xc(r1)
/* 803717E8 38210010 */ addi        r1, r1, 0x10
/* 803717EC 7C0803A6 */ mtlr        r0
/* 803717F0 4E800020 */ blr         
.size func_803717b4, . - func_803717b4


.global func_803717f4
.type func_803717f4, @function
func_803717f4:
/* 803717F4 7C0802A6 */ mflr        r0
/* 803717F8 90010004 */ stw         r0, 4(r1)
/* 803717FC 9421FFF0 */ stwu        r1, -0x10(r1)
/* 80371800 93E1000C */ stw         r31, 0xc(r1)
/* 80371804 4BFFD2D1 */ bl          func_8036ead4
/* 80371808 808DCAA0 */ lwz         r4, lbl_805c68c0@sda21(0)
/* 8037180C 3804FFFF */ addi        r0, r4, -0x1
/* 80371810 900DCAA0 */ stw         r0, lbl_805c68c0@sda21(0)
/* 80371814 7C9F2378 */ mr          r31, r4
/* 80371818 4BFFD2E5 */ bl          func_8036eafc
/* 8037181C 7FE3FB78 */ mr          r3, r31
/* 80371820 80010014 */ lwz         r0, 0x14(r1)
/* 80371824 83E1000C */ lwz         r31, 0xc(r1)
/* 80371828 38210010 */ addi        r1, r1, 0x10
/* 8037182C 7C0803A6 */ mtlr        r0
/* 80371830 4E800020 */ blr         
.size func_803717f4, . - func_803717f4


.global func_80371834
.type func_80371834, @function
func_80371834:
/* 80371834 808302E0 */ lwz         r4, 0x2e0(r3)
/* 80371838 80A302DC */ lwz         r5, 0x2dc(r3)
/* 8037183C 28040000 */ cmplwi      r4, 0
/* 80371840 80C302E4 */ lwz         r6, 0x2e4(r3)
/* 80371844 4082000C */ bne-        lbl_80371850
/* 80371848 90C50004 */ stw         r6, 4(r5)
/* 8037184C 48000008 */ b           lbl_80371854
lbl_80371850:
/* 80371850 90C402E4 */ stw         r6, 0x2e4(r4)
lbl_80371854:
/* 80371854 28060000 */ cmplwi      r6, 0
/* 80371858 4082000C */ bne-        lbl_80371864
/* 8037185C 90850000 */ stw         r4, 0(r5)
/* 80371860 48000008 */ b           lbl_80371868
lbl_80371864:
/* 80371864 908602E0 */ stw         r4, 0x2e0(r6)
lbl_80371868:
/* 80371868 80050000 */ lwz         r0, 0(r5)
/* 8037186C 28000000 */ cmplwi      r0, 0
/* 80371870 40820020 */ bne-        lbl_80371890
/* 80371874 800302D0 */ lwz         r0, 0x2d0(r3)
/* 80371878 38800001 */ li          r4, 0x1
/* 8037187C 80ADCA98 */ lwz         r5, lbl_805c68b8@sda21(0)
/* 80371880 2000001F */ subfic      r0, r0, 0x1f
/* 80371884 7C800030 */ slw         r0, r4, r0
/* 80371888 7CA00078 */ andc        r0, r5, r0
/* 8037188C 900DCA98 */ stw         r0, lbl_805c68b8@sda21(0)
lbl_80371890:
/* 80371890 38000000 */ li          r0, 0x0
/* 80371894 900302DC */ stw         r0, 0x2dc(r3)
/* 80371898 4E800020 */ blr         
.size func_80371834, . - func_80371834


.global func_8037189c
.type func_8037189c, @function
func_8037189c:
/* 8037189C 808302D4 */ lwz         r4, 0x2d4(r3)
/* 803718A0 80A302F4 */ lwz         r5, 0x2f4(r3)
/* 803718A4 48000024 */ b           lbl_803718c8
lbl_803718a8:
/* 803718A8 80650000 */ lwz         r3, 0(r5)
/* 803718AC 28030000 */ cmplwi      r3, 0
/* 803718B0 41820014 */ beq-        lbl_803718c4
/* 803718B4 800302D0 */ lwz         r0, 0x2d0(r3)
/* 803718B8 7C002000 */ cmpw        r0, r4
/* 803718BC 40800008 */ bge-        lbl_803718c4
/* 803718C0 7C040378 */ mr          r4, r0
lbl_803718c4:
/* 803718C4 80A50010 */ lwz         r5, 0x10(r5)
lbl_803718c8:
/* 803718C8 28050000 */ cmplwi      r5, 0
/* 803718CC 4082FFDC */ bne+        lbl_803718a8
/* 803718D0 7C832378 */ mr          r3, r4
/* 803718D4 4E800020 */ blr         
.size func_8037189c, . - func_8037189c


.global func_803718d8
.type func_803718d8, @function
func_803718d8:
/* 803718D8 7C0802A6 */ mflr        r0
/* 803718DC 90010004 */ stw         r0, 4(r1)
/* 803718E0 9421FFE8 */ stwu        r1, -0x18(r1)
/* 803718E4 93E10014 */ stw         r31, 0x14(r1)
/* 803718E8 7C7F1B78 */ mr          r31, r3
/* 803718EC 93C10010 */ stw         r30, 0x10(r1)
/* 803718F0 3BC40000 */ addi        r30, r4, 0x0
/* 803718F4 A00302C8 */ lhz         r0, 0x2c8(r3)
/* 803718F8 2C000003 */ cmpwi       r0, 0x3
/* 803718FC 41820180 */ beq-        lbl_80371a7c
/* 80371900 40800014 */ bge-        lbl_80371914
/* 80371904 2C000001 */ cmpwi       r0, 0x1
/* 80371908 41820018 */ beq-        lbl_80371920
/* 8037190C 40800164 */ bge-        lbl_80371a70
/* 80371910 4800016C */ b           lbl_80371a7c
lbl_80371914:
/* 80371914 2C000005 */ cmpwi       r0, 0x5
/* 80371918 40800164 */ bge-        lbl_80371a7c
/* 8037191C 4800007C */ b           lbl_80371998
lbl_80371920:
/* 80371920 7FE3FB78 */ mr          r3, r31
/* 80371924 4BFFFF11 */ bl          func_80371834
/* 80371928 93DF02D0 */ stw         r30, 0x2d0(r31)
/* 8037192C 3C608054 */ lis         r3, lbl_8053ecf8@ha
/* 80371930 3803ECF8 */ addi        r0, r3, lbl_8053ecf8@l
/* 80371934 807F02D0 */ lwz         r3, 0x2d0(r31)
/* 80371938 54631838 */ slwi        r3, r3, 3
/* 8037193C 7C001A14 */ add         r0, r0, r3
/* 80371940 901F02DC */ stw         r0, 0x2dc(r31)
/* 80371944 809F02DC */ lwz         r4, 0x2dc(r31)
/* 80371948 80640004 */ lwz         r3, 4(r4)
/* 8037194C 28030000 */ cmplwi      r3, 0
/* 80371950 4082000C */ bne-        lbl_8037195c
/* 80371954 93E40000 */ stw         r31, 0(r4)
/* 80371958 48000008 */ b           lbl_80371960
lbl_8037195c:
/* 8037195C 93E302E0 */ stw         r31, 0x2e0(r3)
lbl_80371960:
/* 80371960 907F02E4 */ stw         r3, 0x2e4(r31)
/* 80371964 38000000 */ li          r0, 0x0
/* 80371968 38600001 */ li          r3, 0x1
/* 8037196C 901F02E0 */ stw         r0, 0x2e0(r31)
/* 80371970 809F02DC */ lwz         r4, 0x2dc(r31)
/* 80371974 93E40004 */ stw         r31, 4(r4)
/* 80371978 801F02D0 */ lwz         r0, 0x2d0(r31)
/* 8037197C 808DCA98 */ lwz         r4, lbl_805c68b8@sda21(0)
/* 80371980 2000001F */ subfic      r0, r0, 0x1f
/* 80371984 7C600030 */ slw         r0, r3, r0
/* 80371988 7C800378 */ or          r0, r4, r0
/* 8037198C 900DCA98 */ stw         r0, lbl_805c68b8@sda21(0)
/* 80371990 906DCA9C */ stw         r3, lbl_805c68bc@sda21(0)
/* 80371994 480000E8 */ b           lbl_80371a7c
lbl_80371998:
/* 80371998 809F02E0 */ lwz         r4, 0x2e0(r31)
/* 8037199C 80BF02E4 */ lwz         r5, 0x2e4(r31)
/* 803719A0 28040000 */ cmplwi      r4, 0
/* 803719A4 40820010 */ bne-        lbl_803719b4
/* 803719A8 807F02DC */ lwz         r3, 0x2dc(r31)
/* 803719AC 90A30004 */ stw         r5, 4(r3)
/* 803719B0 48000008 */ b           lbl_803719b8
lbl_803719b4:
/* 803719B4 90A402E4 */ stw         r5, 0x2e4(r4)
lbl_803719b8:
/* 803719B8 28050000 */ cmplwi      r5, 0
/* 803719BC 40820010 */ bne-        lbl_803719cc
/* 803719C0 807F02DC */ lwz         r3, 0x2dc(r31)
/* 803719C4 90830000 */ stw         r4, 0(r3)
/* 803719C8 48000008 */ b           lbl_803719d0
lbl_803719cc:
/* 803719CC 908502E0 */ stw         r4, 0x2e0(r5)
lbl_803719d0:
/* 803719D0 93DF02D0 */ stw         r30, 0x2d0(r31)
/* 803719D4 809F02DC */ lwz         r4, 0x2dc(r31)
/* 803719D8 80A40000 */ lwz         r5, 0(r4)
/* 803719DC 48000008 */ b           lbl_803719e4
lbl_803719e0:
/* 803719E0 80A502E0 */ lwz         r5, 0x2e0(r5)
lbl_803719e4:
/* 803719E4 28050000 */ cmplwi      r5, 0
/* 803719E8 41820014 */ beq-        lbl_803719fc
/* 803719EC 806502D0 */ lwz         r3, 0x2d0(r5)
/* 803719F0 801F02D0 */ lwz         r0, 0x2d0(r31)
/* 803719F4 7C030000 */ cmpw        r3, r0
/* 803719F8 4081FFE8 */ ble+        lbl_803719e0
lbl_803719fc:
/* 803719FC 28050000 */ cmplwi      r5, 0
/* 80371A00 40820034 */ bne-        lbl_80371a34
/* 80371A04 80640004 */ lwz         r3, 4(r4)
/* 80371A08 28030000 */ cmplwi      r3, 0
/* 80371A0C 4082000C */ bne-        lbl_80371a18
/* 80371A10 93E40000 */ stw         r31, 0(r4)
/* 80371A14 48000008 */ b           lbl_80371a1c
lbl_80371a18:
/* 80371A18 93E302E0 */ stw         r31, 0x2e0(r3)
lbl_80371a1c:
/* 80371A1C 907F02E4 */ stw         r3, 0x2e4(r31)
/* 80371A20 38000000 */ li          r0, 0x0
/* 80371A24 901F02E0 */ stw         r0, 0x2e0(r31)
/* 80371A28 807F02DC */ lwz         r3, 0x2dc(r31)
/* 80371A2C 93E30004 */ stw         r31, 4(r3)
/* 80371A30 4800002C */ b           lbl_80371a5c
lbl_80371a34:
/* 80371A34 90BF02E0 */ stw         r5, 0x2e0(r31)
/* 80371A38 806502E4 */ lwz         r3, 0x2e4(r5)
/* 80371A3C 93E502E4 */ stw         r31, 0x2e4(r5)
/* 80371A40 28030000 */ cmplwi      r3, 0
/* 80371A44 907F02E4 */ stw         r3, 0x2e4(r31)
/* 80371A48 40820010 */ bne-        lbl_80371a58
/* 80371A4C 807F02DC */ lwz         r3, 0x2dc(r31)
/* 80371A50 93E30000 */ stw         r31, 0(r3)
/* 80371A54 48000008 */ b           lbl_80371a5c
lbl_80371a58:
/* 80371A58 93E302E0 */ stw         r31, 0x2e0(r3)
lbl_80371a5c:
/* 80371A5C 807F02F0 */ lwz         r3, 0x2f0(r31)
/* 80371A60 28030000 */ cmplwi      r3, 0
/* 80371A64 41820018 */ beq-        lbl_80371a7c
/* 80371A68 80630008 */ lwz         r3, 8(r3)
/* 80371A6C 48000014 */ b           lbl_80371a80
lbl_80371a70:
/* 80371A70 38000001 */ li          r0, 0x1
/* 80371A74 900DCA9C */ stw         r0, lbl_805c68bc@sda21(0)
/* 80371A78 93DF02D0 */ stw         r30, 0x2d0(r31)
lbl_80371a7c:
/* 80371A7C 38600000 */ li          r3, 0x0
lbl_80371a80:
/* 80371A80 8001001C */ lwz         r0, 0x1c(r1)
/* 80371A84 83E10014 */ lwz         r31, 0x14(r1)
/* 80371A88 83C10010 */ lwz         r30, 0x10(r1)
/* 80371A8C 38210018 */ addi        r1, r1, 0x18
/* 80371A90 7C0803A6 */ mtlr        r0
/* 80371A94 4E800020 */ blr         
.size func_803718d8, . - func_803718d8


.global func_80371a98
.type func_80371a98, @function
func_80371a98:
/* 80371A98 7C0802A6 */ mflr        r0
/* 80371A9C 90010004 */ stw         r0, 4(r1)
/* 80371AA0 9421FFE8 */ stwu        r1, -0x18(r1)
/* 80371AA4 93E10014 */ stw         r31, 0x14(r1)
/* 80371AA8 7C9F2378 */ mr          r31, r4
lbl_80371aac:
/* 80371AAC 800302CC */ lwz         r0, 0x2cc(r3)
/* 80371AB0 2C000000 */ cmpwi       r0, 0x0
/* 80371AB4 41810020 */ bgt-        lbl_80371ad4
/* 80371AB8 800302D0 */ lwz         r0, 0x2d0(r3)
/* 80371ABC 7C00F800 */ cmpw        r0, r31
/* 80371AC0 40810014 */ ble-        lbl_80371ad4
/* 80371AC4 7FE4FB78 */ mr          r4, r31
/* 80371AC8 4BFFFE11 */ bl          func_803718d8
/* 80371ACC 28030000 */ cmplwi      r3, 0
/* 80371AD0 4082FFDC */ bne+        lbl_80371aac
lbl_80371ad4:
/* 80371AD4 8001001C */ lwz         r0, 0x1c(r1)
/* 80371AD8 83E10014 */ lwz         r31, 0x14(r1)
/* 80371ADC 38210018 */ addi        r1, r1, 0x18
/* 80371AE0 7C0803A6 */ mtlr        r0
/* 80371AE4 4E800020 */ blr         
.size func_80371a98, . - func_80371a98


.global func_80371ae8
.type func_80371ae8, @function
func_80371ae8:
/* 80371AE8 7C0802A6 */ mflr        r0
/* 80371AEC 3C808054 */ lis         r4, lbl_8053ecf8@ha
/* 80371AF0 90010004 */ stw         r0, 4(r1)
/* 80371AF4 9421FFE8 */ stwu        r1, -0x18(r1)
/* 80371AF8 93E10014 */ stw         r31, 0x14(r1)
/* 80371AFC 3BE4ECF8 */ addi        r31, r4, lbl_8053ecf8@l
/* 80371B00 93C10010 */ stw         r30, 0x10(r1)
/* 80371B04 3BC30000 */ addi        r30, r3, 0x0
/* 80371B08 800DCAA0 */ lwz         r0, lbl_805c68c0@sda21(0)
/* 80371B0C 2C000000 */ cmpwi       r0, 0x0
/* 80371B10 4081000C */ ble-        lbl_80371b1c
/* 80371B14 38600000 */ li          r3, 0x0
/* 80371B18 480001B8 */ b           lbl_80371cd0
lbl_80371b1c:
/* 80371B1C 4BFFC5D9 */ bl          func_8036e0f4
/* 80371B20 3C808000 */ lis         r4, 0x8000
/* 80371B24 80C400E4 */ lwz         r6, 0xe4(r4)
/* 80371B28 7C033040 */ cmplw       r3, r6
/* 80371B2C 38660000 */ addi        r3, r6, 0x0
/* 80371B30 4182000C */ beq-        lbl_80371b3c
/* 80371B34 38600000 */ li          r3, 0x0
/* 80371B38 48000198 */ b           lbl_80371cd0
lbl_80371b3c:
/* 80371B3C 28060000 */ cmplwi      r6, 0
/* 80371B40 418200BC */ beq-        lbl_80371bfc
/* 80371B44 A00602C8 */ lhz         r0, 0x2c8(r6)
/* 80371B48 28000002 */ cmplwi      r0, 2
/* 80371B4C 40820090 */ bne-        lbl_80371bdc
/* 80371B50 2C1E0000 */ cmpwi       r30, 0x0
/* 80371B54 40820020 */ bne-        lbl_80371b74
/* 80371B58 808DCA98 */ lwz         r4, lbl_805c68b8@sda21(0)
/* 80371B5C 800602D0 */ lwz         r0, 0x2d0(r6)
/* 80371B60 7C840034 */ cntlzw      r4, r4
/* 80371B64 7C002000 */ cmpw        r0, r4
/* 80371B68 4181000C */ bgt-        lbl_80371b74
/* 80371B6C 38600000 */ li          r3, 0x0
/* 80371B70 48000160 */ b           lbl_80371cd0
lbl_80371b74:
/* 80371B74 38000001 */ li          r0, 0x1
/* 80371B78 B00602C8 */ sth         r0, 0x2c8(r6)
/* 80371B7C 800602D0 */ lwz         r0, 0x2d0(r6)
/* 80371B80 54001838 */ slwi        r0, r0, 3
/* 80371B84 7C1F0214 */ add         r0, r31, r0
/* 80371B88 900602DC */ stw         r0, 0x2dc(r6)
/* 80371B8C 80A602DC */ lwz         r5, 0x2dc(r6)
/* 80371B90 80850004 */ lwz         r4, 4(r5)
/* 80371B94 28040000 */ cmplwi      r4, 0
/* 80371B98 4082000C */ bne-        lbl_80371ba4
/* 80371B9C 90C50000 */ stw         r6, 0(r5)
/* 80371BA0 48000008 */ b           lbl_80371ba8
lbl_80371ba4:
/* 80371BA4 90C402E0 */ stw         r6, 0x2e0(r4)
lbl_80371ba8:
/* 80371BA8 908602E4 */ stw         r4, 0x2e4(r6)
/* 80371BAC 38000000 */ li          r0, 0x0
/* 80371BB0 38800001 */ li          r4, 0x1
/* 80371BB4 900602E0 */ stw         r0, 0x2e0(r6)
/* 80371BB8 80A602DC */ lwz         r5, 0x2dc(r6)
/* 80371BBC 90C50004 */ stw         r6, 4(r5)
/* 80371BC0 800602D0 */ lwz         r0, 0x2d0(r6)
/* 80371BC4 80ADCA98 */ lwz         r5, lbl_805c68b8@sda21(0)
/* 80371BC8 2000001F */ subfic      r0, r0, 0x1f
/* 80371BCC 7C800030 */ slw         r0, r4, r0
/* 80371BD0 7CA00378 */ or          r0, r5, r0
/* 80371BD4 900DCA98 */ stw         r0, lbl_805c68b8@sda21(0)
/* 80371BD8 908DCA9C */ stw         r4, lbl_805c68bc@sda21(0)
lbl_80371bdc:
/* 80371BDC A00601A2 */ lhz         r0, 0x1a2(r6)
/* 80371BE0 540007BD */ rlwinm.     r0, r0, 0, 0x1e, 0x1e
/* 80371BE4 40820018 */ bne-        lbl_80371bfc
/* 80371BE8 4BFFC519 */ bl          func_8036e100
/* 80371BEC 28030000 */ cmplwi      r3, 0
/* 80371BF0 4182000C */ beq-        lbl_80371bfc
/* 80371BF4 38600000 */ li          r3, 0x0
/* 80371BF8 480000D8 */ b           lbl_80371cd0
lbl_80371bfc:
/* 80371BFC 800DCA98 */ lwz         r0, lbl_805c68b8@sda21(0)
/* 80371C00 38800000 */ li          r4, 0x0
/* 80371C04 3C608000 */ lis         r3, 0x8000
/* 80371C08 28000000 */ cmplwi      r0, 0
/* 80371C0C 908300E4 */ stw         r4, 0xe4(r3)
/* 80371C10 40820034 */ bne-        lbl_80371c44
/* 80371C14 387F0720 */ addi        r3, r31, 0x720
/* 80371C18 4BFFC481 */ bl          func_8036e098
lbl_80371c1c:
/* 80371C1C 4BFFCECD */ bl          func_8036eae8
lbl_80371c20:
/* 80371C20 800DCA98 */ lwz         r0, lbl_805c68b8@sda21(0)
/* 80371C24 28000000 */ cmplwi      r0, 0
/* 80371C28 4182FFF8 */ beq+        lbl_80371c20
/* 80371C2C 4BFFCEA9 */ bl          func_8036ead4
/* 80371C30 800DCA98 */ lwz         r0, lbl_805c68b8@sda21(0)
/* 80371C34 28000000 */ cmplwi      r0, 0
/* 80371C38 4182FFE4 */ beq+        lbl_80371c1c
/* 80371C3C 387F0720 */ addi        r3, r31, 0x720
/* 80371C40 4BFFC621 */ bl          func_8036e260
lbl_80371c44:
/* 80371C44 38600000 */ li          r3, 0x0
/* 80371C48 906DCA9C */ stw         r3, lbl_805c68bc@sda21(0)
/* 80371C4C 800DCA98 */ lwz         r0, lbl_805c68b8@sda21(0)
/* 80371C50 7C070034 */ cntlzw      r7, r0
/* 80371C54 54E01838 */ slwi        r0, r7, 3
/* 80371C58 7C9F0214 */ add         r4, r31, r0
/* 80371C5C 80A40000 */ lwz         r5, 0(r4)
/* 80371C60 80C502E0 */ lwz         r6, 0x2e0(r5)
/* 80371C64 3BE50000 */ addi        r31, r5, 0x0
/* 80371C68 28060000 */ cmplwi      r6, 0
/* 80371C6C 4082000C */ bne-        lbl_80371c78
/* 80371C70 90640004 */ stw         r3, 4(r4)
/* 80371C74 48000008 */ b           lbl_80371c7c
lbl_80371c78:
/* 80371C78 906602E4 */ stw         r3, 0x2e4(r6)
lbl_80371c7c:
/* 80371C7C 90C40000 */ stw         r6, 0(r4)
/* 80371C80 80040000 */ lwz         r0, 0(r4)
/* 80371C84 28000000 */ cmplwi      r0, 0
/* 80371C88 4082001C */ bne-        lbl_80371ca4
/* 80371C8C 2007001F */ subfic      r0, r7, 0x1f
/* 80371C90 808DCA98 */ lwz         r4, lbl_805c68b8@sda21(0)
/* 80371C94 38600001 */ li          r3, 0x1
/* 80371C98 7C600030 */ slw         r0, r3, r0
/* 80371C9C 7C800078 */ andc        r0, r4, r0
/* 80371CA0 900DCA98 */ stw         r0, lbl_805c68b8@sda21(0)
lbl_80371ca4:
/* 80371CA4 38000000 */ li          r0, 0x0
/* 80371CA8 901F02DC */ stw         r0, 0x2dc(r31)
/* 80371CAC 38000002 */ li          r0, 0x2
/* 80371CB0 3C808000 */ lis         r4, 0x8000
/* 80371CB4 B01F02C8 */ sth         r0, 0x2c8(r31)
/* 80371CB8 7FE3FB78 */ mr          r3, r31
/* 80371CBC 93E400E4 */ stw         r31, 0xe4(r4)
/* 80371CC0 4BFFC3D9 */ bl          func_8036e098
/* 80371CC4 7FE3FB78 */ mr          r3, r31
/* 80371CC8 4BFFC4B9 */ bl          func_8036e180
/* 80371CCC 7FE3FB78 */ mr          r3, r31
lbl_80371cd0:
/* 80371CD0 8001001C */ lwz         r0, 0x1c(r1)
/* 80371CD4 83E10014 */ lwz         r31, 0x14(r1)
/* 80371CD8 83C10010 */ lwz         r30, 0x10(r1)
/* 80371CDC 38210018 */ addi        r1, r1, 0x18
/* 80371CE0 7C0803A6 */ mtlr        r0
/* 80371CE4 4E800020 */ blr         
.size func_80371ae8, . - func_80371ae8


.global func_80371ce8
.type func_80371ce8, @function
func_80371ce8:
/* 80371CE8 7C0802A6 */ mflr        r0
/* 80371CEC 90010004 */ stw         r0, 4(r1)
/* 80371CF0 9421FFF8 */ stwu        r1, -8(r1)
/* 80371CF4 800DCA9C */ lwz         r0, lbl_805c68bc@sda21(0)
/* 80371CF8 2C000000 */ cmpwi       r0, 0x0
/* 80371CFC 4182000C */ beq-        lbl_80371d08
/* 80371D00 38600000 */ li          r3, 0x0
/* 80371D04 4BFFFDE5 */ bl          func_80371ae8
lbl_80371d08:
/* 80371D08 8001000C */ lwz         r0, 0xc(r1)
/* 80371D0C 38210008 */ addi        r1, r1, 0x8
/* 80371D10 7C0803A6 */ mtlr        r0
/* 80371D14 4E800020 */ blr         
.size func_80371ce8, . - func_80371ce8


.global func_80371d18
.type func_80371d18, @function
func_80371d18:
/* 80371D18 7C0802A6 */ mflr        r0
/* 80371D1C 90010004 */ stw         r0, 4(r1)
/* 80371D20 9421FFF0 */ stwu        r1, -0x10(r1)
/* 80371D24 93E1000C */ stw         r31, 0xc(r1)
/* 80371D28 4BFFCDAD */ bl          func_8036ead4
/* 80371D2C 3BE30000 */ addi        r31, r3, 0x0
/* 80371D30 38600001 */ li          r3, 0x1
/* 80371D34 4BFFFDB5 */ bl          func_80371ae8
/* 80371D38 7FE3FB78 */ mr          r3, r31
/* 80371D3C 4BFFCDC1 */ bl          func_8036eafc
/* 80371D40 80010014 */ lwz         r0, 0x14(r1)
/* 80371D44 83E1000C */ lwz         r31, 0xc(r1)
/* 80371D48 38210010 */ addi        r1, r1, 0x10
/* 80371D4C 7C0803A6 */ mtlr        r0
/* 80371D50 4E800020 */ blr         
.size func_80371d18, . - func_80371d18


.global func_80371d54
.type func_80371d54, @function
func_80371d54:
/* 80371D54 7C0802A6 */ mflr        r0
/* 80371D58 2C080000 */ cmpwi       r8, 0x0
/* 80371D5C 90010004 */ stw         r0, 4(r1)
/* 80371D60 9421FFC8 */ stwu        r1, -0x38(r1)
/* 80371D64 93E10034 */ stw         r31, 0x34(r1)
/* 80371D68 3BE30000 */ addi        r31, r3, 0x0
/* 80371D6C 93C10030 */ stw         r30, 0x30(r1)
/* 80371D70 3BC70000 */ addi        r30, r7, 0x0
/* 80371D74 93A1002C */ stw         r29, 0x2c(r1)
/* 80371D78 3BA60000 */ addi        r29, r6, 0x0
/* 80371D7C 93810028 */ stw         r28, 0x28(r1)
/* 80371D80 3B850000 */ addi        r28, r5, 0x0
/* 80371D84 4180000C */ blt-        lbl_80371d90
/* 80371D88 2C08001F */ cmpwi       r8, 0x1f
/* 80371D8C 4081000C */ ble-        lbl_80371d98
lbl_80371d90:
/* 80371D90 38600000 */ li          r3, 0x0
/* 80371D94 480000C0 */ b           lbl_80371e54
lbl_80371d98:
/* 80371D98 38E00001 */ li          r7, 0x1
/* 80371D9C B0FF02C8 */ sth         r7, 0x2c8(r31)
/* 80371DA0 552007FE */ clrlwi      r0, r9, 0x1f
/* 80371DA4 57A90038 */ rlwinm      r9, r29, 0, 0, 0x1c
/* 80371DA8 B01F02CA */ sth         r0, 0x2ca(r31)
/* 80371DAC 38C0FFFF */ li          r6, -0x1
/* 80371DB0 38000000 */ li          r0, 0x0
/* 80371DB4 911F02D4 */ stw         r8, 0x2d4(r31)
/* 80371DB8 387F0000 */ addi        r3, r31, 0x0
/* 80371DBC 38A9FFF8 */ addi        r5, r9, -0x8
/* 80371DC0 911F02D0 */ stw         r8, 0x2d0(r31)
/* 80371DC4 90FF02CC */ stw         r7, 0x2cc(r31)
/* 80371DC8 90DF02D8 */ stw         r6, 0x2d8(r31)
/* 80371DCC 901F02F0 */ stw         r0, 0x2f0(r31)
/* 80371DD0 901F02EC */ stw         r0, 0x2ec(r31)
/* 80371DD4 901F02E8 */ stw         r0, 0x2e8(r31)
/* 80371DD8 901F02F8 */ stw         r0, 0x2f8(r31)
/* 80371DDC 901F02F4 */ stw         r0, 0x2f4(r31)
/* 80371DE0 9009FFF8 */ stw         r0, -8(r9)
/* 80371DE4 9009FFFC */ stw         r0, -4(r9)
/* 80371DE8 4BFFC49D */ bl          func_8036e284
/* 80371DEC 3C608037 */ lis         r3, func_80371e74@ha
/* 80371DF0 38031E74 */ addi        r0, r3, func_80371e74@l
/* 80371DF4 901F0084 */ stw         r0, 0x84(r31)
/* 80371DF8 3C60DEAE */ lis         r3, 0xdeae
/* 80371DFC 7C9EE850 */ subf        r4, r30, r29
/* 80371E00 939F000C */ stw         r28, 0xc(r31)
/* 80371E04 3803BABE */ addi        r0, r3, -0x4542
/* 80371E08 93BF0304 */ stw         r29, 0x304(r31)
/* 80371E0C 909F0308 */ stw         r4, 0x308(r31)
/* 80371E10 807F0308 */ lwz         r3, 0x308(r31)
/* 80371E14 90030000 */ stw         r0, 0(r3)
/* 80371E18 4BFFCCBD */ bl          func_8036ead4
/* 80371E1C 3C808000 */ lis         r4, 0x8000
/* 80371E20 38A400DC */ addi        r5, r4, 0xdc
/* 80371E24 84C50004 */ lwzu        r6, 4(r5)
/* 80371E28 28060000 */ cmplwi      r6, 0
/* 80371E2C 4082000C */ bne-        lbl_80371e38
/* 80371E30 93E400DC */ stw         r31, 0xdc(r4)
/* 80371E34 48000008 */ b           lbl_80371e3c
lbl_80371e38:
/* 80371E38 93E602FC */ stw         r31, 0x2fc(r6)
lbl_80371e3c:
/* 80371E3C 90DF0300 */ stw         r6, 0x300(r31)
/* 80371E40 38000000 */ li          r0, 0x0
/* 80371E44 901F02FC */ stw         r0, 0x2fc(r31)
/* 80371E48 93E50000 */ stw         r31, 0(r5)
/* 80371E4C 4BFFCCB1 */ bl          func_8036eafc
/* 80371E50 38600001 */ li          r3, 0x1
lbl_80371e54:
/* 80371E54 8001003C */ lwz         r0, 0x3c(r1)
/* 80371E58 83E10034 */ lwz         r31, 0x34(r1)
/* 80371E5C 83C10030 */ lwz         r30, 0x30(r1)
/* 80371E60 83A1002C */ lwz         r29, 0x2c(r1)
/* 80371E64 83810028 */ lwz         r28, 0x28(r1)
/* 80371E68 38210038 */ addi        r1, r1, 0x38
/* 80371E6C 7C0803A6 */ mtlr        r0
/* 80371E70 4E800020 */ blr         
.size func_80371d54, . - func_80371d54


.global func_80371e74
.type func_80371e74, @function
func_80371e74:
/* 80371E74 7C0802A6 */ mflr        r0
/* 80371E78 90010004 */ stw         r0, 4(r1)
/* 80371E7C 9421FFE0 */ stwu        r1, -0x20(r1)
/* 80371E80 93E1001C */ stw         r31, 0x1c(r1)
/* 80371E84 93C10018 */ stw         r30, 0x18(r1)
/* 80371E88 93A10014 */ stw         r29, 0x14(r1)
/* 80371E8C 93810010 */ stw         r28, 0x10(r1)
/* 80371E90 7C7C1B78 */ mr          r28, r3
/* 80371E94 4BFFCC41 */ bl          func_8036ead4
/* 80371E98 3FE08000 */ lis         r31, 0x8000
/* 80371E9C 83DF00E4 */ lwz         r30, 0xe4(r31)
/* 80371EA0 3BA30000 */ addi        r29, r3, 0x0
/* 80371EA4 387E0000 */ addi        r3, r30, 0x0
/* 80371EA8 4BFFC3B9 */ bl          func_8036e260
/* 80371EAC A01E02CA */ lhz         r0, 0x2ca(r30)
/* 80371EB0 540007FF */ clrlwi.     r0, r0, 0x1f
/* 80371EB4 41820044 */ beq-        lbl_80371ef8
/* 80371EB8 809E02FC */ lwz         r4, 0x2fc(r30)
/* 80371EBC 80BE0300 */ lwz         r5, 0x300(r30)
/* 80371EC0 28040000 */ cmplwi      r4, 0
/* 80371EC4 4082000C */ bne-        lbl_80371ed0
/* 80371EC8 90BF00E0 */ stw         r5, 0xe0(r31)
/* 80371ECC 48000008 */ b           lbl_80371ed4
lbl_80371ed0:
/* 80371ED0 90A40300 */ stw         r5, 0x300(r4)
lbl_80371ed4:
/* 80371ED4 28050000 */ cmplwi      r5, 0
/* 80371ED8 40820010 */ bne-        lbl_80371ee8
/* 80371EDC 3C608000 */ lis         r3, 0x8000
/* 80371EE0 908300DC */ stw         r4, 0xdc(r3)
/* 80371EE4 48000008 */ b           lbl_80371eec
lbl_80371ee8:
/* 80371EE8 908502FC */ stw         r4, 0x2fc(r5)
lbl_80371eec:
/* 80371EEC 38000000 */ li          r0, 0x0
/* 80371EF0 B01E02C8 */ sth         r0, 0x2c8(r30)
/* 80371EF4 48000010 */ b           lbl_80371f04
lbl_80371ef8:
/* 80371EF8 38000008 */ li          r0, 0x8
/* 80371EFC B01E02C8 */ sth         r0, 0x2c8(r30)
/* 80371F00 939E02D8 */ stw         r28, 0x2d8(r30)
lbl_80371f04:
/* 80371F04 7FC3F378 */ mr          r3, r30
/* 80371F08 4BFFE27D */ bl          func_80370184
/* 80371F0C 387E02E8 */ addi        r3, r30, 0x2e8
/* 80371F10 480006E9 */ bl          func_803725f8
/* 80371F14 38000001 */ li          r0, 0x1
/* 80371F18 900DCA9C */ stw         r0, lbl_805c68bc@sda21(0)
/* 80371F1C 800DCA9C */ lwz         r0, lbl_805c68bc@sda21(0)
/* 80371F20 2C000000 */ cmpwi       r0, 0x0
/* 80371F24 4182000C */ beq-        lbl_80371f30
/* 80371F28 38600000 */ li          r3, 0x0
/* 80371F2C 4BFFFBBD */ bl          func_80371ae8
lbl_80371f30:
/* 80371F30 7FA3EB78 */ mr          r3, r29
/* 80371F34 4BFFCBC9 */ bl          func_8036eafc
/* 80371F38 80010024 */ lwz         r0, 0x24(r1)
/* 80371F3C 83E1001C */ lwz         r31, 0x1c(r1)
/* 80371F40 83C10018 */ lwz         r30, 0x18(r1)
/* 80371F44 83A10014 */ lwz         r29, 0x14(r1)
/* 80371F48 83810010 */ lwz         r28, 0x10(r1)
/* 80371F4C 38210020 */ addi        r1, r1, 0x20
/* 80371F50 7C0803A6 */ mtlr        r0
/* 80371F54 4E800020 */ blr         
.size func_80371e74, . - func_80371e74


.global func_80371f58
.type func_80371f58, @function
func_80371f58:
/* 80371F58 7C0802A6 */ mflr        r0
/* 80371F5C 90010004 */ stw         r0, 4(r1)
/* 80371F60 9421FFE0 */ stwu        r1, -0x20(r1)
/* 80371F64 93E1001C */ stw         r31, 0x1c(r1)
/* 80371F68 93C10018 */ stw         r30, 0x18(r1)
/* 80371F6C 7C7E1B78 */ mr          r30, r3
/* 80371F70 93A10014 */ stw         r29, 0x14(r1)
/* 80371F74 4BFFCB61 */ bl          func_8036ead4
/* 80371F78 A01E02C8 */ lhz         r0, 0x2c8(r30)
/* 80371F7C 3BE30000 */ addi        r31, r3, 0x0
/* 80371F80 2C000003 */ cmpwi       r0, 0x3
/* 80371F84 418200DC */ beq-        lbl_80372060
/* 80371F88 40800014 */ bge-        lbl_80371f9c
/* 80371F8C 2C000001 */ cmpwi       r0, 0x1
/* 80371F90 41820018 */ beq-        lbl_80371fa8
/* 80371F94 4080002C */ bge-        lbl_80371fc0
/* 80371F98 480000C8 */ b           lbl_80372060
lbl_80371f9c:
/* 80371F9C 2C000005 */ cmpwi       r0, 0x5
/* 80371FA0 408000C0 */ bge-        lbl_80372060
/* 80371FA4 48000028 */ b           lbl_80371fcc
lbl_80371fa8:
/* 80371FA8 801E02CC */ lwz         r0, 0x2cc(r30)
/* 80371FAC 2C000000 */ cmpwi       r0, 0x0
/* 80371FB0 418100BC */ bgt-        lbl_8037206c
/* 80371FB4 7FC3F378 */ mr          r3, r30
/* 80371FB8 4BFFF87D */ bl          func_80371834
/* 80371FBC 480000B0 */ b           lbl_8037206c
lbl_80371fc0:
/* 80371FC0 38000001 */ li          r0, 0x1
/* 80371FC4 900DCA9C */ stw         r0, lbl_805c68bc@sda21(0)
/* 80371FC8 480000A4 */ b           lbl_8037206c
lbl_80371fcc:
/* 80371FCC 809E02E0 */ lwz         r4, 0x2e0(r30)
/* 80371FD0 80BE02E4 */ lwz         r5, 0x2e4(r30)
/* 80371FD4 28040000 */ cmplwi      r4, 0
/* 80371FD8 40820010 */ bne-        lbl_80371fe8
/* 80371FDC 807E02DC */ lwz         r3, 0x2dc(r30)
/* 80371FE0 90A30004 */ stw         r5, 4(r3)
/* 80371FE4 48000008 */ b           lbl_80371fec
lbl_80371fe8:
/* 80371FE8 90A402E4 */ stw         r5, 0x2e4(r4)
lbl_80371fec:
/* 80371FEC 28050000 */ cmplwi      r5, 0
/* 80371FF0 40820010 */ bne-        lbl_80372000
/* 80371FF4 807E02DC */ lwz         r3, 0x2dc(r30)
/* 80371FF8 90830000 */ stw         r4, 0(r3)
/* 80371FFC 48000008 */ b           lbl_80372004
lbl_80372000:
/* 80372000 908502E0 */ stw         r4, 0x2e0(r5)
lbl_80372004:
/* 80372004 38000000 */ li          r0, 0x0
/* 80372008 901E02DC */ stw         r0, 0x2dc(r30)
/* 8037200C 801E02CC */ lwz         r0, 0x2cc(r30)
/* 80372010 2C000000 */ cmpwi       r0, 0x0
/* 80372014 41810058 */ bgt-        lbl_8037206c
/* 80372018 807E02F0 */ lwz         r3, 0x2f0(r30)
/* 8037201C 28030000 */ cmplwi      r3, 0
/* 80372020 4182004C */ beq-        lbl_8037206c
/* 80372024 83A30008 */ lwz         r29, 8(r3)
lbl_80372028:
/* 80372028 801D02CC */ lwz         r0, 0x2cc(r29)
/* 8037202C 2C000000 */ cmpwi       r0, 0x0
/* 80372030 4181003C */ bgt-        lbl_8037206c
/* 80372034 7FA3EB78 */ mr          r3, r29
/* 80372038 4BFFF865 */ bl          func_8037189c
/* 8037203C 801D02D0 */ lwz         r0, 0x2d0(r29)
/* 80372040 38830000 */ addi        r4, r3, 0x0
/* 80372044 7C002000 */ cmpw        r0, r4
/* 80372048 41820024 */ beq-        lbl_8037206c
/* 8037204C 7FA3EB78 */ mr          r3, r29
/* 80372050 4BFFF889 */ bl          func_803718d8
/* 80372054 7C7D1B79 */ or.         r29, r3, r3
/* 80372058 4082FFD0 */ bne+        lbl_80372028
/* 8037205C 48000010 */ b           lbl_8037206c
lbl_80372060:
/* 80372060 7FE3FB78 */ mr          r3, r31
/* 80372064 4BFFCA99 */ bl          func_8036eafc
/* 80372068 48000090 */ b           lbl_803720f8
lbl_8037206c:
/* 8037206C 7FC3F378 */ mr          r3, r30
/* 80372070 4BFFC1F1 */ bl          func_8036e260
/* 80372074 A01E02CA */ lhz         r0, 0x2ca(r30)
/* 80372078 540007FF */ clrlwi.     r0, r0, 0x1f
/* 8037207C 41820048 */ beq-        lbl_803720c4
/* 80372080 809E02FC */ lwz         r4, 0x2fc(r30)
/* 80372084 80BE0300 */ lwz         r5, 0x300(r30)
/* 80372088 28040000 */ cmplwi      r4, 0
/* 8037208C 40820010 */ bne-        lbl_8037209c
/* 80372090 3C608000 */ lis         r3, 0x8000
/* 80372094 90A300E0 */ stw         r5, 0xe0(r3)
/* 80372098 48000008 */ b           lbl_803720a0
lbl_8037209c:
/* 8037209C 90A40300 */ stw         r5, 0x300(r4)
lbl_803720a0:
/* 803720A0 28050000 */ cmplwi      r5, 0
/* 803720A4 40820010 */ bne-        lbl_803720b4
/* 803720A8 3C608000 */ lis         r3, 0x8000
/* 803720AC 908300DC */ stw         r4, 0xdc(r3)
/* 803720B0 48000008 */ b           lbl_803720b8
lbl_803720b4:
/* 803720B4 908502FC */ stw         r4, 0x2fc(r5)
lbl_803720b8:
/* 803720B8 38000000 */ li          r0, 0x0
/* 803720BC B01E02C8 */ sth         r0, 0x2c8(r30)
/* 803720C0 4800000C */ b           lbl_803720cc
lbl_803720c4:
/* 803720C4 38000008 */ li          r0, 0x8
/* 803720C8 B01E02C8 */ sth         r0, 0x2c8(r30)
lbl_803720cc:
/* 803720CC 7FC3F378 */ mr          r3, r30
/* 803720D0 4BFFE0B5 */ bl          func_80370184
/* 803720D4 387E02E8 */ addi        r3, r30, 0x2e8
/* 803720D8 48000521 */ bl          func_803725f8
/* 803720DC 800DCA9C */ lwz         r0, lbl_805c68bc@sda21(0)
/* 803720E0 2C000000 */ cmpwi       r0, 0x0
/* 803720E4 4182000C */ beq-        lbl_803720f0
/* 803720E8 38600000 */ li          r3, 0x0
/* 803720EC 4BFFF9FD */ bl          func_80371ae8
lbl_803720f0:
/* 803720F0 7FE3FB78 */ mr          r3, r31
/* 803720F4 4BFFCA09 */ bl          func_8036eafc
lbl_803720f8:
/* 803720F8 80010024 */ lwz         r0, 0x24(r1)
/* 803720FC 83E1001C */ lwz         r31, 0x1c(r1)
/* 80372100 83C10018 */ lwz         r30, 0x18(r1)
/* 80372104 83A10014 */ lwz         r29, 0x14(r1)
/* 80372108 38210020 */ addi        r1, r1, 0x20
/* 8037210C 7C0803A6 */ mtlr        r0
/* 80372110 4E800020 */ blr         
.size func_80371f58, . - func_80371f58


.global func_80372114
.type func_80372114, @function
func_80372114:
/* 80372114 7C0802A6 */ mflr        r0
/* 80372118 90010004 */ stw         r0, 4(r1)
/* 8037211C 9421FFD8 */ stwu        r1, -0x28(r1)
/* 80372120 93E10024 */ stw         r31, 0x24(r1)
/* 80372124 93C10020 */ stw         r30, 0x20(r1)
/* 80372128 93A1001C */ stw         r29, 0x1c(r1)
/* 8037212C 7C7D1B78 */ mr          r29, r3
/* 80372130 4BFFC9A5 */ bl          func_8036ead4
/* 80372134 809D02CC */ lwz         r4, 0x2cc(r29)
/* 80372138 3BE30000 */ addi        r31, r3, 0x0
/* 8037213C 3804FFFF */ addi        r0, r4, -0x1
/* 80372140 901D02CC */ stw         r0, 0x2cc(r29)
/* 80372144 7C9E2378 */ mr          r30, r4
/* 80372148 801D02CC */ lwz         r0, 0x2cc(r29)
/* 8037214C 2C000000 */ cmpwi       r0, 0x0
/* 80372150 40800010 */ bge-        lbl_80372160
/* 80372154 38000000 */ li          r0, 0x0
/* 80372158 901D02CC */ stw         r0, 0x2cc(r29)
/* 8037215C 48000218 */ b           lbl_80372374
lbl_80372160:
/* 80372160 40820214 */ bne-        lbl_80372374
/* 80372164 A01D02C8 */ lhz         r0, 0x2c8(r29)
/* 80372168 2C000004 */ cmpwi       r0, 0x4
/* 8037216C 418200B8 */ beq-        lbl_80372224
/* 80372170 408001F0 */ bge-        lbl_80372360
/* 80372174 2C000001 */ cmpwi       r0, 0x1
/* 80372178 41820008 */ beq-        lbl_80372180
/* 8037217C 480001E4 */ b           lbl_80372360
lbl_80372180:
/* 80372180 801D02D4 */ lwz         r0, 0x2d4(r29)
/* 80372184 807D02F4 */ lwz         r3, 0x2f4(r29)
/* 80372188 48000024 */ b           lbl_803721ac
lbl_8037218c:
/* 8037218C 80830000 */ lwz         r4, 0(r3)
/* 80372190 28040000 */ cmplwi      r4, 0
/* 80372194 41820014 */ beq-        lbl_803721a8
/* 80372198 808402D0 */ lwz         r4, 0x2d0(r4)
/* 8037219C 7C040000 */ cmpw        r4, r0
/* 803721A0 40800008 */ bge-        lbl_803721a8
/* 803721A4 7C802378 */ mr          r0, r4
lbl_803721a8:
/* 803721A8 80630010 */ lwz         r3, 0x10(r3)
lbl_803721ac:
/* 803721AC 28030000 */ cmplwi      r3, 0
/* 803721B0 4082FFDC */ bne+        lbl_8037218c
/* 803721B4 901D02D0 */ stw         r0, 0x2d0(r29)
/* 803721B8 3C608054 */ lis         r3, lbl_8053ecf8@ha
/* 803721BC 3803ECF8 */ addi        r0, r3, lbl_8053ecf8@l
/* 803721C0 807D02D0 */ lwz         r3, 0x2d0(r29)
/* 803721C4 54631838 */ slwi        r3, r3, 3
/* 803721C8 7C001A14 */ add         r0, r0, r3
/* 803721CC 901D02DC */ stw         r0, 0x2dc(r29)
/* 803721D0 809D02DC */ lwz         r4, 0x2dc(r29)
/* 803721D4 80640004 */ lwz         r3, 4(r4)
/* 803721D8 28030000 */ cmplwi      r3, 0
/* 803721DC 4082000C */ bne-        lbl_803721e8
/* 803721E0 93A40000 */ stw         r29, 0(r4)
/* 803721E4 48000008 */ b           lbl_803721ec
lbl_803721e8:
/* 803721E8 93A302E0 */ stw         r29, 0x2e0(r3)
lbl_803721ec:
/* 803721EC 907D02E4 */ stw         r3, 0x2e4(r29)
/* 803721F0 38000000 */ li          r0, 0x0
/* 803721F4 38600001 */ li          r3, 0x1
/* 803721F8 901D02E0 */ stw         r0, 0x2e0(r29)
/* 803721FC 809D02DC */ lwz         r4, 0x2dc(r29)
/* 80372200 93A40004 */ stw         r29, 4(r4)
/* 80372204 801D02D0 */ lwz         r0, 0x2d0(r29)
/* 80372208 808DCA98 */ lwz         r4, lbl_805c68b8@sda21(0)
/* 8037220C 2000001F */ subfic      r0, r0, 0x1f
/* 80372210 7C600030 */ slw         r0, r3, r0
/* 80372214 7C800378 */ or          r0, r4, r0
/* 80372218 900DCA98 */ stw         r0, lbl_805c68b8@sda21(0)
/* 8037221C 906DCA9C */ stw         r3, lbl_805c68bc@sda21(0)
/* 80372220 48000140 */ b           lbl_80372360
lbl_80372224:
/* 80372224 809D02E0 */ lwz         r4, 0x2e0(r29)
/* 80372228 80BD02E4 */ lwz         r5, 0x2e4(r29)
/* 8037222C 28040000 */ cmplwi      r4, 0
/* 80372230 40820010 */ bne-        lbl_80372240
/* 80372234 807D02DC */ lwz         r3, 0x2dc(r29)
/* 80372238 90A30004 */ stw         r5, 4(r3)
/* 8037223C 48000008 */ b           lbl_80372244
lbl_80372240:
/* 80372240 90A402E4 */ stw         r5, 0x2e4(r4)
lbl_80372244:
/* 80372244 28050000 */ cmplwi      r5, 0
/* 80372248 40820010 */ bne-        lbl_80372258
/* 8037224C 807D02DC */ lwz         r3, 0x2dc(r29)
/* 80372250 90830000 */ stw         r4, 0(r3)
/* 80372254 48000008 */ b           lbl_8037225c
lbl_80372258:
/* 80372258 908502E0 */ stw         r4, 0x2e0(r5)
lbl_8037225c:
/* 8037225C 801D02D4 */ lwz         r0, 0x2d4(r29)
/* 80372260 807D02F4 */ lwz         r3, 0x2f4(r29)
/* 80372264 48000024 */ b           lbl_80372288
lbl_80372268:
/* 80372268 80830000 */ lwz         r4, 0(r3)
/* 8037226C 28040000 */ cmplwi      r4, 0
/* 80372270 41820014 */ beq-        lbl_80372284
/* 80372274 808402D0 */ lwz         r4, 0x2d0(r4)
/* 80372278 7C040000 */ cmpw        r4, r0
/* 8037227C 40800008 */ bge-        lbl_80372284
/* 80372280 7C802378 */ mr          r0, r4
lbl_80372284:
/* 80372284 80630010 */ lwz         r3, 0x10(r3)
lbl_80372288:
/* 80372288 28030000 */ cmplwi      r3, 0
/* 8037228C 4082FFDC */ bne+        lbl_80372268
/* 80372290 901D02D0 */ stw         r0, 0x2d0(r29)
/* 80372294 809D02DC */ lwz         r4, 0x2dc(r29)
/* 80372298 80A40000 */ lwz         r5, 0(r4)
/* 8037229C 48000008 */ b           lbl_803722a4
lbl_803722a0:
/* 803722A0 80A502E0 */ lwz         r5, 0x2e0(r5)
lbl_803722a4:
/* 803722A4 28050000 */ cmplwi      r5, 0
/* 803722A8 41820014 */ beq-        lbl_803722bc
/* 803722AC 806502D0 */ lwz         r3, 0x2d0(r5)
/* 803722B0 801D02D0 */ lwz         r0, 0x2d0(r29)
/* 803722B4 7C030000 */ cmpw        r3, r0
/* 803722B8 4081FFE8 */ ble+        lbl_803722a0
lbl_803722bc:
/* 803722BC 28050000 */ cmplwi      r5, 0
/* 803722C0 40820034 */ bne-        lbl_803722f4
/* 803722C4 80640004 */ lwz         r3, 4(r4)
/* 803722C8 28030000 */ cmplwi      r3, 0
/* 803722CC 4082000C */ bne-        lbl_803722d8
/* 803722D0 93A40000 */ stw         r29, 0(r4)
/* 803722D4 48000008 */ b           lbl_803722dc
lbl_803722d8:
/* 803722D8 93A302E0 */ stw         r29, 0x2e0(r3)
lbl_803722dc:
/* 803722DC 907D02E4 */ stw         r3, 0x2e4(r29)
/* 803722E0 38000000 */ li          r0, 0x0
/* 803722E4 901D02E0 */ stw         r0, 0x2e0(r29)
/* 803722E8 807D02DC */ lwz         r3, 0x2dc(r29)
/* 803722EC 93A30004 */ stw         r29, 4(r3)
/* 803722F0 4800002C */ b           lbl_8037231c
lbl_803722f4:
/* 803722F4 90BD02E0 */ stw         r5, 0x2e0(r29)
/* 803722F8 806502E4 */ lwz         r3, 0x2e4(r5)
/* 803722FC 93A502E4 */ stw         r29, 0x2e4(r5)
/* 80372300 28030000 */ cmplwi      r3, 0
/* 80372304 907D02E4 */ stw         r3, 0x2e4(r29)
/* 80372308 40820010 */ bne-        lbl_80372318
/* 8037230C 807D02DC */ lwz         r3, 0x2dc(r29)
/* 80372310 93A30000 */ stw         r29, 0(r3)
/* 80372314 48000008 */ b           lbl_8037231c
lbl_80372318:
/* 80372318 93A302E0 */ stw         r29, 0x2e0(r3)
lbl_8037231c:
/* 8037231C 807D02F0 */ lwz         r3, 0x2f0(r29)
/* 80372320 28030000 */ cmplwi      r3, 0
/* 80372324 4182003C */ beq-        lbl_80372360
/* 80372328 83A30008 */ lwz         r29, 8(r3)
lbl_8037232c:
/* 8037232C 801D02CC */ lwz         r0, 0x2cc(r29)
/* 80372330 2C000000 */ cmpwi       r0, 0x0
/* 80372334 4181002C */ bgt-        lbl_80372360
/* 80372338 7FA3EB78 */ mr          r3, r29
/* 8037233C 4BFFF561 */ bl          func_8037189c
/* 80372340 801D02D0 */ lwz         r0, 0x2d0(r29)
/* 80372344 38830000 */ addi        r4, r3, 0x0
/* 80372348 7C002000 */ cmpw        r0, r4
/* 8037234C 41820014 */ beq-        lbl_80372360
/* 80372350 7FA3EB78 */ mr          r3, r29
/* 80372354 4BFFF585 */ bl          func_803718d8
/* 80372358 7C7D1B79 */ or.         r29, r3, r3
/* 8037235C 4082FFD0 */ bne+        lbl_8037232c
lbl_80372360:
/* 80372360 800DCA9C */ lwz         r0, lbl_805c68bc@sda21(0)
/* 80372364 2C000000 */ cmpwi       r0, 0x0
/* 80372368 4182000C */ beq-        lbl_80372374
/* 8037236C 38600000 */ li          r3, 0x0
/* 80372370 4BFFF779 */ bl          func_80371ae8
lbl_80372374:
/* 80372374 7FE3FB78 */ mr          r3, r31
/* 80372378 4BFFC785 */ bl          func_8036eafc
/* 8037237C 7FC3F378 */ mr          r3, r30
/* 80372380 8001002C */ lwz         r0, 0x2c(r1)
/* 80372384 83E10024 */ lwz         r31, 0x24(r1)
/* 80372388 83C10020 */ lwz         r30, 0x20(r1)
/* 8037238C 83A1001C */ lwz         r29, 0x1c(r1)
/* 80372390 38210028 */ addi        r1, r1, 0x28
/* 80372394 7C0803A6 */ mtlr        r0
/* 80372398 4E800020 */ blr         
.size func_80372114, . - func_80372114


.global func_8037239c
.type func_8037239c, @function
func_8037239c:
/* 8037239C 7C0802A6 */ mflr        r0
/* 803723A0 90010004 */ stw         r0, 4(r1)
/* 803723A4 9421FFE0 */ stwu        r1, -0x20(r1)
/* 803723A8 93E1001C */ stw         r31, 0x1c(r1)
/* 803723AC 93C10018 */ stw         r30, 0x18(r1)
/* 803723B0 93A10014 */ stw         r29, 0x14(r1)
/* 803723B4 7C7D1B78 */ mr          r29, r3
/* 803723B8 4BFFC71D */ bl          func_8036ead4
/* 803723BC 809D02CC */ lwz         r4, 0x2cc(r29)
/* 803723C0 3BE30000 */ addi        r31, r3, 0x0
/* 803723C4 38040001 */ addi        r0, r4, 0x1
/* 803723C8 7C9E2379 */ or.         r30, r4, r4
/* 803723CC 901D02CC */ stw         r0, 0x2cc(r29)
/* 803723D0 40820114 */ bne-        lbl_803724e4
/* 803723D4 A01D02C8 */ lhz         r0, 0x2c8(r29)
/* 803723D8 2C000003 */ cmpwi       r0, 0x3
/* 803723DC 418200F4 */ beq-        lbl_803724d0
/* 803723E0 40800014 */ bge-        lbl_803723f4
/* 803723E4 2C000001 */ cmpwi       r0, 0x1
/* 803723E8 41820028 */ beq-        lbl_80372410
/* 803723EC 40800014 */ bge-        lbl_80372400
/* 803723F0 480000E0 */ b           lbl_803724d0
lbl_803723f4:
/* 803723F4 2C000005 */ cmpwi       r0, 0x5
/* 803723F8 408000D8 */ bge-        lbl_803724d0
/* 803723FC 48000020 */ b           lbl_8037241c
lbl_80372400:
/* 80372400 38000001 */ li          r0, 0x1
/* 80372404 900DCA9C */ stw         r0, lbl_805c68bc@sda21(0)
/* 80372408 B01D02C8 */ sth         r0, 0x2c8(r29)
/* 8037240C 480000C4 */ b           lbl_803724d0
lbl_80372410:
/* 80372410 7FA3EB78 */ mr          r3, r29
/* 80372414 4BFFF421 */ bl          func_80371834
/* 80372418 480000B8 */ b           lbl_803724d0
lbl_8037241c:
/* 8037241C 809D02E0 */ lwz         r4, 0x2e0(r29)
/* 80372420 80BD02E4 */ lwz         r5, 0x2e4(r29)
/* 80372424 28040000 */ cmplwi      r4, 0
/* 80372428 40820010 */ bne-        lbl_80372438
/* 8037242C 807D02DC */ lwz         r3, 0x2dc(r29)
/* 80372430 90A30004 */ stw         r5, 4(r3)
/* 80372434 48000008 */ b           lbl_8037243c
lbl_80372438:
/* 80372438 90A402E4 */ stw         r5, 0x2e4(r4)
lbl_8037243c:
/* 8037243C 28050000 */ cmplwi      r5, 0
/* 80372440 40820010 */ bne-        lbl_80372450
/* 80372444 807D02DC */ lwz         r3, 0x2dc(r29)
/* 80372448 90830000 */ stw         r4, 0(r3)
/* 8037244C 48000008 */ b           lbl_80372454
lbl_80372450:
/* 80372450 908502E0 */ stw         r4, 0x2e0(r5)
lbl_80372454:
/* 80372454 38000020 */ li          r0, 0x20
/* 80372458 901D02D0 */ stw         r0, 0x2d0(r29)
/* 8037245C 809D02DC */ lwz         r4, 0x2dc(r29)
/* 80372460 80640004 */ lwz         r3, 4(r4)
/* 80372464 28030000 */ cmplwi      r3, 0
/* 80372468 4082000C */ bne-        lbl_80372474
/* 8037246C 93A40000 */ stw         r29, 0(r4)
/* 80372470 48000008 */ b           lbl_80372478
lbl_80372474:
/* 80372474 93A302E0 */ stw         r29, 0x2e0(r3)
lbl_80372478:
/* 80372478 907D02E4 */ stw         r3, 0x2e4(r29)
/* 8037247C 38000000 */ li          r0, 0x0
/* 80372480 901D02E0 */ stw         r0, 0x2e0(r29)
/* 80372484 807D02DC */ lwz         r3, 0x2dc(r29)
/* 80372488 93A30004 */ stw         r29, 4(r3)
/* 8037248C 807D02F0 */ lwz         r3, 0x2f0(r29)
/* 80372490 28030000 */ cmplwi      r3, 0
/* 80372494 4182003C */ beq-        lbl_803724d0
/* 80372498 83A30008 */ lwz         r29, 8(r3)
lbl_8037249c:
/* 8037249C 801D02CC */ lwz         r0, 0x2cc(r29)
/* 803724A0 2C000000 */ cmpwi       r0, 0x0
/* 803724A4 4181002C */ bgt-        lbl_803724d0
/* 803724A8 7FA3EB78 */ mr          r3, r29
/* 803724AC 4BFFF3F1 */ bl          func_8037189c
/* 803724B0 801D02D0 */ lwz         r0, 0x2d0(r29)
/* 803724B4 38830000 */ addi        r4, r3, 0x0
/* 803724B8 7C002000 */ cmpw        r0, r4
/* 803724BC 41820014 */ beq-        lbl_803724d0
/* 803724C0 7FA3EB78 */ mr          r3, r29
/* 803724C4 4BFFF415 */ bl          func_803718d8
/* 803724C8 7C7D1B79 */ or.         r29, r3, r3
/* 803724CC 4082FFD0 */ bne+        lbl_8037249c
lbl_803724d0:
/* 803724D0 800DCA9C */ lwz         r0, lbl_805c68bc@sda21(0)
/* 803724D4 2C000000 */ cmpwi       r0, 0x0
/* 803724D8 4182000C */ beq-        lbl_803724e4
/* 803724DC 38600000 */ li          r3, 0x0
/* 803724E0 4BFFF609 */ bl          func_80371ae8
lbl_803724e4:
/* 803724E4 7FE3FB78 */ mr          r3, r31
/* 803724E8 4BFFC615 */ bl          func_8036eafc
/* 803724EC 7FC3F378 */ mr          r3, r30
/* 803724F0 80010024 */ lwz         r0, 0x24(r1)
/* 803724F4 83E1001C */ lwz         r31, 0x1c(r1)
/* 803724F8 83C10018 */ lwz         r30, 0x18(r1)
/* 803724FC 83A10014 */ lwz         r29, 0x14(r1)
/* 80372500 38210020 */ addi        r1, r1, 0x20
/* 80372504 7C0803A6 */ mtlr        r0
/* 80372508 4E800020 */ blr         
.size func_8037239c, . - func_8037239c


.global func_8037250c
.type func_8037250c, @function
func_8037250c:
/* 8037250C 7C0802A6 */ mflr        r0
/* 80372510 90010004 */ stw         r0, 4(r1)
/* 80372514 9421FFE8 */ stwu        r1, -0x18(r1)
/* 80372518 93E10014 */ stw         r31, 0x14(r1)
/* 8037251C 93C10010 */ stw         r30, 0x10(r1)
/* 80372520 7C7E1B78 */ mr          r30, r3
/* 80372524 4BFFC5B1 */ bl          func_8036ead4
/* 80372528 3C808000 */ lis         r4, 0x8000
/* 8037252C 808400E4 */ lwz         r4, 0xe4(r4)
/* 80372530 38000004 */ li          r0, 0x4
/* 80372534 7C7F1B78 */ mr          r31, r3
/* 80372538 B00402C8 */ sth         r0, 0x2c8(r4)
/* 8037253C 93C402DC */ stw         r30, 0x2dc(r4)
/* 80372540 80BE0000 */ lwz         r5, 0(r30)
/* 80372544 48000008 */ b           lbl_8037254c
lbl_80372548:
/* 80372548 80A502E0 */ lwz         r5, 0x2e0(r5)
lbl_8037254c:
/* 8037254C 28050000 */ cmplwi      r5, 0
/* 80372550 41820014 */ beq-        lbl_80372564
/* 80372554 806502D0 */ lwz         r3, 0x2d0(r5)
/* 80372558 800402D0 */ lwz         r0, 0x2d0(r4)
/* 8037255C 7C030000 */ cmpw        r3, r0
/* 80372560 4081FFE8 */ ble+        lbl_80372548
lbl_80372564:
/* 80372564 28050000 */ cmplwi      r5, 0
/* 80372568 40820030 */ bne-        lbl_80372598
/* 8037256C 807E0004 */ lwz         r3, 4(r30)
/* 80372570 28030000 */ cmplwi      r3, 0
/* 80372574 4082000C */ bne-        lbl_80372580
/* 80372578 909E0000 */ stw         r4, 0(r30)
/* 8037257C 48000008 */ b           lbl_80372584
lbl_80372580:
/* 80372580 908302E0 */ stw         r4, 0x2e0(r3)
lbl_80372584:
/* 80372584 906402E4 */ stw         r3, 0x2e4(r4)
/* 80372588 38000000 */ li          r0, 0x0
/* 8037258C 900402E0 */ stw         r0, 0x2e0(r4)
/* 80372590 909E0004 */ stw         r4, 4(r30)
/* 80372594 48000028 */ b           lbl_803725bc
lbl_80372598:
/* 80372598 90A402E0 */ stw         r5, 0x2e0(r4)
/* 8037259C 806502E4 */ lwz         r3, 0x2e4(r5)
/* 803725A0 908502E4 */ stw         r4, 0x2e4(r5)
/* 803725A4 28030000 */ cmplwi      r3, 0
/* 803725A8 906402E4 */ stw         r3, 0x2e4(r4)
/* 803725AC 4082000C */ bne-        lbl_803725b8
/* 803725B0 909E0000 */ stw         r4, 0(r30)
/* 803725B4 48000008 */ b           lbl_803725bc
lbl_803725b8:
/* 803725B8 908302E0 */ stw         r4, 0x2e0(r3)
lbl_803725bc:
/* 803725BC 38000001 */ li          r0, 0x1
/* 803725C0 900DCA9C */ stw         r0, lbl_805c68bc@sda21(0)
/* 803725C4 800DCA9C */ lwz         r0, lbl_805c68bc@sda21(0)
/* 803725C8 2C000000 */ cmpwi       r0, 0x0
/* 803725CC 4182000C */ beq-        lbl_803725d8
/* 803725D0 38600000 */ li          r3, 0x0
/* 803725D4 4BFFF515 */ bl          func_80371ae8
lbl_803725d8:
/* 803725D8 7FE3FB78 */ mr          r3, r31
/* 803725DC 4BFFC521 */ bl          func_8036eafc
/* 803725E0 8001001C */ lwz         r0, 0x1c(r1)
/* 803725E4 83E10014 */ lwz         r31, 0x14(r1)
/* 803725E8 83C10010 */ lwz         r30, 0x10(r1)
/* 803725EC 38210018 */ addi        r1, r1, 0x18
/* 803725F0 7C0803A6 */ mtlr        r0
/* 803725F4 4E800020 */ blr         
.size func_8037250c, . - func_8037250c


.global func_803725f8
.type func_803725f8, @function
func_803725f8:
/* 803725F8 7C0802A6 */ mflr        r0
/* 803725FC 90010004 */ stw         r0, 4(r1)
/* 80372600 9421FFE8 */ stwu        r1, -0x18(r1)
/* 80372604 93E10014 */ stw         r31, 0x14(r1)
/* 80372608 93C10010 */ stw         r30, 0x10(r1)
/* 8037260C 7C7E1B78 */ mr          r30, r3
/* 80372610 4BFFC4C5 */ bl          func_8036ead4
/* 80372614 3C808054 */ lis         r4, lbl_8053ecf8@ha
/* 80372618 3BE30000 */ addi        r31, r3, 0x0
/* 8037261C 38A4ECF8 */ addi        r5, r4, lbl_8053ecf8@l
/* 80372620 4800009C */ b           lbl_803726bc
lbl_80372624:
/* 80372624 806602E0 */ lwz         r3, 0x2e0(r6)
/* 80372628 28030000 */ cmplwi      r3, 0
/* 8037262C 40820010 */ bne-        lbl_8037263c
/* 80372630 38000000 */ li          r0, 0x0
/* 80372634 901E0004 */ stw         r0, 4(r30)
/* 80372638 4800000C */ b           lbl_80372644
lbl_8037263c:
/* 8037263C 38000000 */ li          r0, 0x0
/* 80372640 900302E4 */ stw         r0, 0x2e4(r3)
lbl_80372644:
/* 80372644 907E0000 */ stw         r3, 0(r30)
/* 80372648 38000001 */ li          r0, 0x1
/* 8037264C B00602C8 */ sth         r0, 0x2c8(r6)
/* 80372650 800602CC */ lwz         r0, 0x2cc(r6)
/* 80372654 2C000000 */ cmpwi       r0, 0x0
/* 80372658 41810064 */ bgt-        lbl_803726bc
/* 8037265C 800602D0 */ lwz         r0, 0x2d0(r6)
/* 80372660 54001838 */ slwi        r0, r0, 3
/* 80372664 7C050214 */ add         r0, r5, r0
/* 80372668 900602DC */ stw         r0, 0x2dc(r6)
/* 8037266C 808602DC */ lwz         r4, 0x2dc(r6)
/* 80372670 80640004 */ lwz         r3, 4(r4)
/* 80372674 28030000 */ cmplwi      r3, 0
/* 80372678 4082000C */ bne-        lbl_80372684
/* 8037267C 90C40000 */ stw         r6, 0(r4)
/* 80372680 48000008 */ b           lbl_80372688
lbl_80372684:
/* 80372684 90C302E0 */ stw         r6, 0x2e0(r3)
lbl_80372688:
/* 80372688 906602E4 */ stw         r3, 0x2e4(r6)
/* 8037268C 38000000 */ li          r0, 0x0
/* 80372690 38600001 */ li          r3, 0x1
/* 80372694 900602E0 */ stw         r0, 0x2e0(r6)
/* 80372698 808602DC */ lwz         r4, 0x2dc(r6)
/* 8037269C 90C40004 */ stw         r6, 4(r4)
/* 803726A0 800602D0 */ lwz         r0, 0x2d0(r6)
/* 803726A4 808DCA98 */ lwz         r4, lbl_805c68b8@sda21(0)
/* 803726A8 2000001F */ subfic      r0, r0, 0x1f
/* 803726AC 7C600030 */ slw         r0, r3, r0
/* 803726B0 7C800378 */ or          r0, r4, r0
/* 803726B4 900DCA98 */ stw         r0, lbl_805c68b8@sda21(0)
/* 803726B8 906DCA9C */ stw         r3, lbl_805c68bc@sda21(0)
lbl_803726bc:
/* 803726BC 80DE0000 */ lwz         r6, 0(r30)
/* 803726C0 28060000 */ cmplwi      r6, 0
/* 803726C4 4082FF60 */ bne+        lbl_80372624
/* 803726C8 800DCA9C */ lwz         r0, lbl_805c68bc@sda21(0)
/* 803726CC 2C000000 */ cmpwi       r0, 0x0
/* 803726D0 4182000C */ beq-        lbl_803726dc
/* 803726D4 38600000 */ li          r3, 0x0
/* 803726D8 4BFFF411 */ bl          func_80371ae8
lbl_803726dc:
/* 803726DC 7FE3FB78 */ mr          r3, r31
/* 803726E0 4BFFC41D */ bl          func_8036eafc
/* 803726E4 8001001C */ lwz         r0, 0x1c(r1)
/* 803726E8 83E10014 */ lwz         r31, 0x14(r1)
/* 803726EC 83C10010 */ lwz         r30, 0x10(r1)
/* 803726F0 38210018 */ addi        r1, r1, 0x18
/* 803726F4 7C0803A6 */ mtlr        r0
/* 803726F8 4E800020 */ blr         
.size func_803725f8, . - func_803725f8


.global func_803726fc
.type func_803726fc, @function
func_803726fc:
/* 803726FC 7C0802A6 */ mflr        r0
/* 80372700 90010004 */ stw         r0, 4(r1)
/* 80372704 9421FFE0 */ stwu        r1, -0x20(r1)
/* 80372708 93E1001C */ stw         r31, 0x1c(r1)
/* 8037270C 7C9F2379 */ or.         r31, r4, r4
/* 80372710 93C10018 */ stw         r30, 0x18(r1)
/* 80372714 93A10014 */ stw         r29, 0x14(r1)
/* 80372718 3BA30000 */ addi        r29, r3, 0x0
/* 8037271C 4180000C */ blt-        lbl_80372728
/* 80372720 2C1F001F */ cmpwi       r31, 0x1f
/* 80372724 4081000C */ ble-        lbl_80372730
lbl_80372728:
/* 80372728 38600000 */ li          r3, 0x0
/* 8037272C 48000074 */ b           lbl_803727a0
lbl_80372730:
/* 80372730 4BFFC3A5 */ bl          func_8036ead4
/* 80372734 801D02D4 */ lwz         r0, 0x2d4(r29)
/* 80372738 3BC30000 */ addi        r30, r3, 0x0
/* 8037273C 7C00F800 */ cmpw        r0, r31
/* 80372740 41820054 */ beq-        lbl_80372794
/* 80372744 93FD02D4 */ stw         r31, 0x2d4(r29)
/* 80372748 7FBFEB78 */ mr          r31, r29
lbl_8037274c:
/* 8037274C 801F02CC */ lwz         r0, 0x2cc(r31)
/* 80372750 2C000000 */ cmpwi       r0, 0x0
/* 80372754 4181002C */ bgt-        lbl_80372780
/* 80372758 7FE3FB78 */ mr          r3, r31
/* 8037275C 4BFFF141 */ bl          func_8037189c
/* 80372760 801F02D0 */ lwz         r0, 0x2d0(r31)
/* 80372764 38830000 */ addi        r4, r3, 0x0
/* 80372768 7C002000 */ cmpw        r0, r4
/* 8037276C 41820014 */ beq-        lbl_80372780
/* 80372770 7FE3FB78 */ mr          r3, r31
/* 80372774 4BFFF165 */ bl          func_803718d8
/* 80372778 7C7F1B79 */ or.         r31, r3, r3
/* 8037277C 4082FFD0 */ bne+        lbl_8037274c
lbl_80372780:
/* 80372780 800DCA9C */ lwz         r0, lbl_805c68bc@sda21(0)
/* 80372784 2C000000 */ cmpwi       r0, 0x0
/* 80372788 4182000C */ beq-        lbl_80372794
/* 8037278C 38600000 */ li          r3, 0x0
/* 80372790 4BFFF359 */ bl          func_80371ae8
lbl_80372794:
/* 80372794 7FC3F378 */ mr          r3, r30
/* 80372798 4BFFC365 */ bl          func_8036eafc
/* 8037279C 38600001 */ li          r3, 0x1
lbl_803727a0:
/* 803727A0 80010024 */ lwz         r0, 0x24(r1)
/* 803727A4 83E1001C */ lwz         r31, 0x1c(r1)
/* 803727A8 83C10018 */ lwz         r30, 0x18(r1)
/* 803727AC 83A10014 */ lwz         r29, 0x14(r1)
/* 803727B0 38210020 */ addi        r1, r1, 0x20
/* 803727B4 7C0803A6 */ mtlr        r0
/* 803727B8 4E800020 */ blr         
.size func_803726fc, . - func_803726fc


.global func_803727bc
.type func_803727bc, @function
func_803727bc:
/* 803727BC 806302D4 */ lwz         r3, 0x2d4(r3)
/* 803727C0 4E800020 */ blr         
.size func_803727bc, . - func_803727bc