summaryrefslogtreecommitdiff
path: root/asm/Dolphin/os/OSThread.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/Dolphin/os/OSThread.s')
-rw-r--r--asm/Dolphin/os/OSThread.s1413
1 files changed, 1413 insertions, 0 deletions
diff --git a/asm/Dolphin/os/OSThread.s b/asm/Dolphin/os/OSThread.s
new file mode 100644
index 0000000..2880583
--- /dev/null
+++ b/asm/Dolphin/os/OSThread.s
@@ -0,0 +1,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
+