.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global lbl_8004DE88 lbl_8004DE88: /* 8004DE88 00049AE8 94 21 FF F0 */ stwu r1, -0x10(r1) /* 8004DE8C 00049AEC 7C 08 02 A6 */ mflr r0 /* 8004DE90 00049AF0 90 01 00 14 */ stw r0, 0x14(r1) /* 8004DE94 00049AF4 93 E1 00 0C */ stw r31, 0xc(r1) /* 8004DE98 00049AF8 7C 7F 1B 78 */ mr r31, r3 /* 8004DE9C 00049AFC 48 00 26 91 */ bl func_8005052C /* 8004DEA0 00049B00 C0 02 84 30 */ lfs f0, lbl_80640A30-_SDA2_BASE_(r2) /* 8004DEA4 00049B04 38 00 00 00 */ li r0, 0 /* 8004DEA8 00049B08 90 1F 00 40 */ stw r0, 0x40(r31) /* 8004DEAC 00049B0C 7F E3 FB 78 */ mr r3, r31 /* 8004DEB0 00049B10 90 1F 00 3C */ stw r0, 0x3c(r31) /* 8004DEB4 00049B14 90 1F 00 38 */ stw r0, 0x38(r31) /* 8004DEB8 00049B18 D0 1F 00 4C */ stfs f0, 0x4c(r31) /* 8004DEBC 00049B1C 90 1F 00 34 */ stw r0, 0x34(r31) /* 8004DEC0 00049B20 90 1F 00 44 */ stw r0, 0x44(r31) /* 8004DEC4 00049B24 90 1F 00 48 */ stw r0, 0x48(r31) /* 8004DEC8 00049B28 90 1F 00 54 */ stw r0, 0x54(r31) /* 8004DECC 00049B2C 48 00 00 81 */ bl func_8004DF4C /* 8004DED0 00049B30 C0 02 84 30 */ lfs f0, lbl_80640A30-_SDA2_BASE_(r2) /* 8004DED4 00049B34 7F E3 FB 78 */ mr r3, r31 /* 8004DED8 00049B38 D0 1F 00 5C */ stfs f0, 0x5c(r31) /* 8004DEDC 00049B3C D0 1F 00 60 */ stfs f0, 0x60(r31) /* 8004DEE0 00049B40 D0 1F 00 64 */ stfs f0, 0x64(r31) /* 8004DEE4 00049B44 83 E1 00 0C */ lwz r31, 0xc(r1) /* 8004DEE8 00049B48 80 01 00 14 */ lwz r0, 0x14(r1) /* 8004DEEC 00049B4C 7C 08 03 A6 */ mtlr r0 /* 8004DEF0 00049B50 38 21 00 10 */ addi r1, r1, 0x10 /* 8004DEF4 00049B54 4E 80 00 20 */ blr .global lbl_8004DEF8 lbl_8004DEF8: /* 8004DEF8 00049B58 94 21 FF F0 */ stwu r1, -0x10(r1) /* 8004DEFC 00049B5C 7C 08 02 A6 */ mflr r0 /* 8004DF00 00049B60 2C 03 00 00 */ cmpwi r3, 0 /* 8004DF04 00049B64 90 01 00 14 */ stw r0, 0x14(r1) /* 8004DF08 00049B68 93 E1 00 0C */ stw r31, 0xc(r1) /* 8004DF0C 00049B6C 7C 9F 23 78 */ mr r31, r4 /* 8004DF10 00049B70 93 C1 00 08 */ stw r30, 8(r1) /* 8004DF14 00049B74 7C 7E 1B 78 */ mr r30, r3 /* 8004DF18 00049B78 41 82 00 18 */ beq lbl_8004DF30 /* 8004DF1C 00049B7C 48 00 00 5D */ bl func_8004DF78 /* 8004DF20 00049B80 2C 1F 00 00 */ cmpwi r31, 0 /* 8004DF24 00049B84 40 81 00 0C */ ble lbl_8004DF30 /* 8004DF28 00049B88 7F C3 F3 78 */ mr r3, r30 /* 8004DF2C 00049B8C 48 18 CB 8D */ bl __dl__FPv lbl_8004DF30: /* 8004DF30 00049B90 7F C3 F3 78 */ mr r3, r30 /* 8004DF34 00049B94 83 E1 00 0C */ lwz r31, 0xc(r1) /* 8004DF38 00049B98 83 C1 00 08 */ lwz r30, 8(r1) /* 8004DF3C 00049B9C 80 01 00 14 */ lwz r0, 0x14(r1) /* 8004DF40 00049BA0 7C 08 03 A6 */ mtlr r0 /* 8004DF44 00049BA4 38 21 00 10 */ addi r1, r1, 0x10 /* 8004DF48 00049BA8 4E 80 00 20 */ blr .global func_8004DF4C func_8004DF4C: /* 8004DF4C 00049BAC 80 AD 81 88 */ lwz r5, lbl_8063D448-_SDA_BASE_(r13) /* 8004DF50 00049BB0 3C 00 00 01 */ lis r0, 1 /* 8004DF54 00049BB4 64 A4 82 90 */ oris r4, r5, 0x8290 /* 8004DF58 00049BB8 38 A5 00 01 */ addi r5, r5, 1 /* 8004DF5C 00049BBC 90 83 00 50 */ stw r4, 0x50(r3) /* 8004DF60 00049BC0 7C 05 00 40 */ cmplw r5, r0 /* 8004DF64 00049BC4 90 AD 81 88 */ stw r5, lbl_8063D448-_SDA_BASE_(r13) /* 8004DF68 00049BC8 4C 81 00 20 */ blelr /* 8004DF6C 00049BCC 38 00 00 01 */ li r0, 1 /* 8004DF70 00049BD0 90 0D 81 88 */ stw r0, lbl_8063D448-_SDA_BASE_(r13) /* 8004DF74 00049BD4 4E 80 00 20 */ blr .global func_8004DF78 func_8004DF78: /* 8004DF78 00049BD8 94 21 FF F0 */ stwu r1, -0x10(r1) /* 8004DF7C 00049BDC 7C 08 02 A6 */ mflr r0 /* 8004DF80 00049BE0 90 01 00 14 */ stw r0, 0x14(r1) /* 8004DF84 00049BE4 93 E1 00 0C */ stw r31, 0xc(r1) /* 8004DF88 00049BE8 93 C1 00 08 */ stw r30, 8(r1) /* 8004DF8C 00049BEC 7C 7E 1B 78 */ mr r30, r3 /* 8004DF90 00049BF0 80 03 00 40 */ lwz r0, 0x40(r3) /* 8004DF94 00049BF4 2C 00 00 00 */ cmpwi r0, 0 /* 8004DF98 00049BF8 41 82 00 28 */ beq lbl_8004DFC0 /* 8004DF9C 00049BFC 41 82 00 1C */ beq lbl_8004DFB8 /* 8004DFA0 00049C00 7C 03 03 78 */ mr r3, r0 /* 8004DFA4 00049C04 38 80 00 01 */ li r4, 1 /* 8004DFA8 00049C08 81 83 01 00 */ lwz r12, 0x100(r3) /* 8004DFAC 00049C0C 81 8C 00 08 */ lwz r12, 8(r12) /* 8004DFB0 00049C10 7D 89 03 A6 */ mtctr r12 /* 8004DFB4 00049C14 4E 80 04 21 */ bctrl lbl_8004DFB8: /* 8004DFB8 00049C18 38 00 00 00 */ li r0, 0 /* 8004DFBC 00049C1C 90 1E 00 40 */ stw r0, 0x40(r30) lbl_8004DFC0: /* 8004DFC0 00049C20 80 7E 00 3C */ lwz r3, 0x3c(r30) /* 8004DFC4 00049C24 2C 03 00 00 */ cmpwi r3, 0 /* 8004DFC8 00049C28 41 82 00 1C */ beq lbl_8004DFE4 /* 8004DFCC 00049C2C 80 9E 00 34 */ lwz r4, 0x34(r30) /* 8004DFD0 00049C30 54 80 07 BD */ rlwinm. r0, r4, 0, 0x1e, 0x1e /* 8004DFD4 00049C34 41 82 00 10 */ beq lbl_8004DFE4 /* 8004DFD8 00049C38 54 80 07 FA */ rlwinm r0, r4, 0, 0x1f, 0x1d /* 8004DFDC 00049C3C 90 1E 00 34 */ stw r0, 0x34(r30) /* 8004DFE0 00049C40 48 1B 8E 15 */ bl func_80206DF4 lbl_8004DFE4: /* 8004DFE4 00049C44 80 7E 00 38 */ lwz r3, 0x38(r30) /* 8004DFE8 00049C48 3B E0 00 00 */ li r31, 0 /* 8004DFEC 00049C4C 93 FE 00 3C */ stw r31, 0x3c(r30) /* 8004DFF0 00049C50 2C 03 00 00 */ cmpwi r3, 0 /* 8004DFF4 00049C54 41 82 00 0C */ beq lbl_8004E000 /* 8004DFF8 00049C58 48 18 CE AD */ bl func_801DAEA4 /* 8004DFFC 00049C5C 93 FE 00 38 */ stw r31, 0x38(r30) lbl_8004E000: /* 8004E000 00049C60 80 1E 00 34 */ lwz r0, 0x34(r30) /* 8004E004 00049C64 54 00 06 73 */ rlwinm. r0, r0, 0, 0x19, 0x19 /* 8004E008 00049C68 41 82 00 1C */ beq lbl_8004E024 /* 8004E00C 00049C6C 80 7E 00 44 */ lwz r3, 0x44(r30) /* 8004E010 00049C70 80 9E 00 48 */ lwz r4, 0x48(r30) /* 8004E014 00049C74 48 18 D5 35 */ bl func_801DB548 /* 8004E018 00049C78 38 00 00 00 */ li r0, 0 /* 8004E01C 00049C7C 90 1E 00 44 */ stw r0, 0x44(r30) /* 8004E020 00049C80 90 1E 00 48 */ stw r0, 0x48(r30) lbl_8004E024: /* 8004E024 00049C84 38 00 00 00 */ li r0, 0 /* 8004E028 00049C88 90 1E 00 34 */ stw r0, 0x34(r30) /* 8004E02C 00049C8C 83 E1 00 0C */ lwz r31, 0xc(r1) /* 8004E030 00049C90 83 C1 00 08 */ lwz r30, 8(r1) /* 8004E034 00049C94 80 01 00 14 */ lwz r0, 0x14(r1) /* 8004E038 00049C98 7C 08 03 A6 */ mtlr r0 /* 8004E03C 00049C9C 38 21 00 10 */ addi r1, r1, 0x10 /* 8004E040 00049CA0 4E 80 00 20 */ blr .global func_8004E044 func_8004E044: /* 8004E044 00049CA4 94 21 FE D0 */ stwu r1, -0x130(r1) /* 8004E048 00049CA8 7C 08 02 A6 */ mflr r0 /* 8004E04C 00049CAC 90 01 01 34 */ stw r0, 0x134(r1) /* 8004E050 00049CB0 39 61 01 30 */ addi r11, r1, 0x130 /* 8004E054 00049CB4 48 17 90 D5 */ bl _savegpr_27 /* 8004E058 00049CB8 3C A0 80 41 */ lis r5, lbl_8040AAF8@ha /* 8004E05C 00049CBC 7C 7B 1B 78 */ mr r27, r3 /* 8004E060 00049CC0 7C 86 23 78 */ mr r6, r4 /* 8004E064 00049CC4 38 61 00 10 */ addi r3, r1, 0x10 /* 8004E068 00049CC8 38 85 AA F8 */ addi r4, r5, lbl_8040AAF8@l /* 8004E06C 00049CCC 38 AD 81 90 */ addi r5, r13, lbl_8063D450-_SDA_BASE_ /* 8004E070 00049CD0 4C C6 31 82 */ crclr 6 /* 8004E074 00049CD4 48 17 EA 89 */ bl sprintf /* 8004E078 00049CD8 38 61 00 10 */ addi r3, r1, 0x10 /* 8004E07C 00049CDC 38 81 00 08 */ addi r4, r1, 8 /* 8004E080 00049CE0 48 18 EB 41 */ bl func_801DCBC0 /* 8004E084 00049CE4 2C 03 00 00 */ cmpwi r3, 0 /* 8004E088 00049CE8 7C 7E 1B 78 */ mr r30, r3 /* 8004E08C 00049CEC 40 82 00 0C */ bne lbl_8004E098 /* 8004E090 00049CF0 38 60 00 00 */ li r3, 0 /* 8004E094 00049CF4 48 00 00 BC */ b lbl_8004E150 lbl_8004E098: /* 8004E098 00049CF8 48 1B 8C F5 */ bl func_80206D8C /* 8004E09C 00049CFC 2C 03 00 00 */ cmpwi r3, 0 /* 8004E0A0 00049D00 7C 7D 1B 78 */ mr r29, r3 /* 8004E0A4 00049D04 40 82 00 14 */ bne lbl_8004E0B8 /* 8004E0A8 00049D08 7F C3 F3 78 */ mr r3, r30 /* 8004E0AC 00049D0C 48 18 CD F9 */ bl func_801DAEA4 /* 8004E0B0 00049D10 38 60 00 00 */ li r3, 0 /* 8004E0B4 00049D14 48 00 00 9C */ b lbl_8004E150 lbl_8004E0B8: /* 8004E0B8 00049D18 48 18 CA 71 */ bl func_801DAB28 /* 8004E0BC 00049D1C 2C 03 00 00 */ cmpwi r3, 0 /* 8004E0C0 00049D20 41 82 00 14 */ beq lbl_8004E0D4 /* 8004E0C4 00049D24 80 6D 96 38 */ lwz r3, lbl_8063E8F8-_SDA_BASE_(r13) /* 8004E0C8 00049D28 38 80 01 40 */ li r4, 0x140 /* 8004E0CC 00049D2C 48 18 CB C9 */ bl func_801DAC94 /* 8004E0D0 00049D30 48 00 00 08 */ b lbl_8004E0D8 lbl_8004E0D4: /* 8004E0D4 00049D34 38 60 00 00 */ li r3, 0 lbl_8004E0D8: /* 8004E0D8 00049D38 2C 03 00 00 */ cmpwi r3, 0 /* 8004E0DC 00049D3C 7C 7F 1B 78 */ mr r31, r3 /* 8004E0E0 00049D40 41 82 00 10 */ beq lbl_8004E0F0 /* 8004E0E4 00049D44 7F A4 EB 78 */ mr r4, r29 /* 8004E0E8 00049D48 48 1A B8 05 */ bl func_801F98EC /* 8004E0EC 00049D4C 7C 7F 1B 78 */ mr r31, r3 lbl_8004E0F0: /* 8004E0F0 00049D50 2C 1F 00 00 */ cmpwi r31, 0 /* 8004E0F4 00049D54 40 82 00 1C */ bne lbl_8004E110 /* 8004E0F8 00049D58 7F A3 EB 78 */ mr r3, r29 /* 8004E0FC 00049D5C 48 1B 8C F9 */ bl func_80206DF4 /* 8004E100 00049D60 7F C3 F3 78 */ mr r3, r30 /* 8004E104 00049D64 48 18 CD A1 */ bl func_801DAEA4 /* 8004E108 00049D68 38 60 00 00 */ li r3, 0 /* 8004E10C 00049D6C 48 00 00 44 */ b lbl_8004E150 lbl_8004E110: /* 8004E110 00049D70 80 1B 00 34 */ lwz r0, 0x34(r27) /* 8004E114 00049D74 7F 63 DB 78 */ mr r3, r27 /* 8004E118 00049D78 54 1C 07 7A */ rlwinm r28, r0, 0, 0x1d, 0x1d /* 8004E11C 00049D7C 4B FF FE 5D */ bl func_8004DF78 /* 8004E120 00049D80 80 BB 00 34 */ lwz r5, 0x34(r27) /* 8004E124 00049D84 63 83 00 03 */ ori r3, r28, 3 /* 8004E128 00049D88 38 80 1E DC */ li r4, 0x1edc /* 8004E12C 00049D8C 38 00 00 00 */ li r0, 0 /* 8004E130 00049D90 7C A5 1B 78 */ or r5, r5, r3 /* 8004E134 00049D94 93 DB 00 38 */ stw r30, 0x38(r27) /* 8004E138 00049D98 38 60 00 01 */ li r3, 1 /* 8004E13C 00049D9C 93 BB 00 3C */ stw r29, 0x3c(r27) /* 8004E140 00049DA0 93 FB 00 40 */ stw r31, 0x40(r27) /* 8004E144 00049DA4 90 BB 00 34 */ stw r5, 0x34(r27) /* 8004E148 00049DA8 90 9B 00 44 */ stw r4, 0x44(r27) /* 8004E14C 00049DAC 90 1B 00 48 */ stw r0, 0x48(r27) lbl_8004E150: /* 8004E150 00049DB0 39 61 01 30 */ addi r11, r1, 0x130 /* 8004E154 00049DB4 48 17 90 21 */ bl _restgpr_27 /* 8004E158 00049DB8 80 01 01 34 */ lwz r0, 0x134(r1) /* 8004E15C 00049DBC 7C 08 03 A6 */ mtlr r0 /* 8004E160 00049DC0 38 21 01 30 */ addi r1, r1, 0x130 /* 8004E164 00049DC4 4E 80 00 20 */ blr .global func_8004E168 func_8004E168: /* 8004E168 00049DC8 94 21 FF E0 */ stwu r1, -0x20(r1) /* 8004E16C 00049DCC 7C 08 02 A6 */ mflr r0 /* 8004E170 00049DD0 90 01 00 24 */ stw r0, 0x24(r1) /* 8004E174 00049DD4 54 A0 00 01 */ rlwinm. r0, r5, 0, 0, 0 /* 8004E178 00049DD8 93 E1 00 1C */ stw r31, 0x1c(r1) /* 8004E17C 00049DDC 7C BF 2B 78 */ mr r31, r5 /* 8004E180 00049DE0 93 C1 00 18 */ stw r30, 0x18(r1) /* 8004E184 00049DE4 7C 9E 23 78 */ mr r30, r4 /* 8004E188 00049DE8 93 A1 00 14 */ stw r29, 0x14(r1) /* 8004E18C 00049DEC 7C 7D 1B 78 */ mr r29, r3 /* 8004E190 00049DF0 40 82 00 4C */ bne lbl_8004E1DC /* 8004E194 00049DF4 54 A0 07 39 */ rlwinm. r0, r5, 0, 0x1c, 0x1c /* 8004E198 00049DF8 41 82 00 2C */ beq lbl_8004E1C4 /* 8004E19C 00049DFC 54 A0 07 FF */ clrlwi. r0, r5, 0x1f /* 8004E1A0 00049E00 54 BF 07 76 */ rlwinm r31, r5, 0, 0x1d, 0x1b /* 8004E1A4 00049E04 41 82 00 08 */ beq lbl_8004E1AC /* 8004E1A8 00049E08 63 FF 00 40 */ ori r31, r31, 0x40 lbl_8004E1AC: /* 8004E1AC 00049E0C 57 E0 07 BD */ rlwinm. r0, r31, 0, 0x1e, 0x1e /* 8004E1B0 00049E10 41 82 00 08 */ beq lbl_8004E1B8 /* 8004E1B4 00049E14 63 FF 00 80 */ ori r31, r31, 0x80 lbl_8004E1B8: /* 8004E1B8 00049E18 57 E0 07 7B */ rlwinm. r0, r31, 0, 0x1d, 0x1d /* 8004E1BC 00049E1C 41 82 00 08 */ beq lbl_8004E1C4 /* 8004E1C0 00049E20 63 FF 01 00 */ ori r31, r31, 0x100 lbl_8004E1C4: /* 8004E1C4 00049E24 57 E0 07 FF */ clrlwi. r0, r31, 0x1f /* 8004E1C8 00049E28 40 82 00 08 */ bne lbl_8004E1D0 /* 8004E1CC 00049E2C 63 FF 00 09 */ ori r31, r31, 9 lbl_8004E1D0: /* 8004E1D0 00049E30 57 E0 07 BD */ rlwinm. r0, r31, 0, 0x1e, 0x1e /* 8004E1D4 00049E34 40 82 00 08 */ bne lbl_8004E1DC /* 8004E1D8 00049E38 63 FF 00 12 */ ori r31, r31, 0x12 lbl_8004E1DC: /* 8004E1DC 00049E3C 2C 04 00 00 */ cmpwi r4, 0 /* 8004E1E0 00049E40 41 82 00 38 */ beq lbl_8004E218 /* 8004E1E4 00049E44 80 83 00 40 */ lwz r4, 0x40(r3) /* 8004E1E8 00049E48 2C 04 00 00 */ cmpwi r4, 0 /* 8004E1EC 00049E4C 41 82 00 2C */ beq lbl_8004E218 /* 8004E1F0 00049E50 80 64 00 C0 */ lwz r3, 0xc0(r4) /* 8004E1F4 00049E54 2C 03 00 00 */ cmpwi r3, 0 /* 8004E1F8 00049E58 41 82 00 08 */ beq lbl_8004E200 /* 8004E1FC 00049E5C 48 1A 40 2D */ bl func_801F2228 lbl_8004E200: /* 8004E200 00049E60 80 BD 00 40 */ lwz r5, 0x40(r29) /* 8004E204 00049E64 7F C3 F3 78 */ mr r3, r30 /* 8004E208 00049E68 57 E4 04 3E */ clrlwi r4, r31, 0x10 /* 8004E20C 00049E6C 38 C0 00 00 */ li r6, 0 /* 8004E210 00049E70 38 E0 00 03 */ li r7, 3 /* 8004E214 00049E74 48 1A 3F 79 */ bl func_801F218C lbl_8004E218: /* 8004E218 00049E78 80 01 00 24 */ lwz r0, 0x24(r1) /* 8004E21C 00049E7C 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 8004E220 00049E80 83 C1 00 18 */ lwz r30, 0x18(r1) /* 8004E224 00049E84 83 A1 00 14 */ lwz r29, 0x14(r1) /* 8004E228 00049E88 7C 08 03 A6 */ mtlr r0 /* 8004E22C 00049E8C 38 21 00 20 */ addi r1, r1, 0x20 /* 8004E230 00049E90 4E 80 00 20 */ blr .global func_8004E234 func_8004E234: /* 8004E234 00049E94 94 21 FF D0 */ stwu r1, -0x30(r1) /* 8004E238 00049E98 7C 08 02 A6 */ mflr r0 /* 8004E23C 00049E9C 90 01 00 34 */ stw r0, 0x34(r1) /* 8004E240 00049EA0 39 61 00 30 */ addi r11, r1, 0x30 /* 8004E244 00049EA4 48 17 8E DD */ bl _savegpr_25 /* 8004E248 00049EA8 54 A0 BE BE */ rlwinm r0, r5, 0x17, 0x1a, 0x1f /* 8004E24C 00049EAC 7C 79 1B 78 */ mr r25, r3 /* 8004E250 00049EB0 28 00 00 05 */ cmplwi r0, 5 /* 8004E254 00049EB4 7C 9A 23 78 */ mr r26, r4 /* 8004E258 00049EB8 7C DC 33 78 */ mr r28, r6 /* 8004E25C 00049EBC 41 82 00 0C */ beq lbl_8004E268 /* 8004E260 00049EC0 38 60 00 00 */ li r3, 0 /* 8004E264 00049EC4 48 00 00 D8 */ b lbl_8004E33C lbl_8004E268: /* 8004E268 00049EC8 54 A0 00 5E */ rlwinm r0, r5, 0, 1, 0xf /* 8004E26C 00049ECC 7F 43 D3 78 */ mr r3, r26 /* 8004E270 00049ED0 60 1B 0E 00 */ ori r27, r0, 0xe00 /* 8004E274 00049ED4 7F 64 DB 78 */ mr r4, r27 /* 8004E278 00049ED8 48 18 D2 45 */ bl func_801DB4BC /* 8004E27C 00049EDC 2C 03 00 00 */ cmpwi r3, 0 /* 8004E280 00049EE0 7C 7E 1B 78 */ mr r30, r3 /* 8004E284 00049EE4 40 82 00 0C */ bne lbl_8004E290 /* 8004E288 00049EE8 38 60 00 00 */ li r3, 0 /* 8004E28C 00049EEC 48 00 00 B0 */ b lbl_8004E33C lbl_8004E290: /* 8004E290 00049EF0 48 18 C8 99 */ bl func_801DAB28 /* 8004E294 00049EF4 2C 03 00 00 */ cmpwi r3, 0 /* 8004E298 00049EF8 41 82 00 14 */ beq lbl_8004E2AC /* 8004E29C 00049EFC 80 6D 96 38 */ lwz r3, lbl_8063E8F8-_SDA_BASE_(r13) /* 8004E2A0 00049F00 38 80 01 40 */ li r4, 0x140 /* 8004E2A4 00049F04 48 18 C9 F1 */ bl func_801DAC94 /* 8004E2A8 00049F08 48 00 00 08 */ b lbl_8004E2B0 lbl_8004E2AC: /* 8004E2AC 00049F0C 38 60 00 00 */ li r3, 0 lbl_8004E2B0: /* 8004E2B0 00049F10 2C 03 00 00 */ cmpwi r3, 0 /* 8004E2B4 00049F14 7C 7F 1B 78 */ mr r31, r3 /* 8004E2B8 00049F18 41 82 00 10 */ beq lbl_8004E2C8 /* 8004E2BC 00049F1C 7F C4 F3 78 */ mr r4, r30 /* 8004E2C0 00049F20 48 1A B6 2D */ bl func_801F98EC /* 8004E2C4 00049F24 7C 7F 1B 78 */ mr r31, r3 lbl_8004E2C8: /* 8004E2C8 00049F28 2C 1F 00 00 */ cmpwi r31, 0 /* 8004E2CC 00049F2C 40 82 00 0C */ bne lbl_8004E2D8 /* 8004E2D0 00049F30 38 60 00 00 */ li r3, 0 /* 8004E2D4 00049F34 48 00 00 68 */ b lbl_8004E33C lbl_8004E2D8: /* 8004E2D8 00049F38 80 19 00 50 */ lwz r0, 0x50(r25) /* 8004E2DC 00049F3C 7F 23 CB 78 */ mr r3, r25 /* 8004E2E0 00049F40 90 1F 01 3C */ stw r0, 0x13c(r31) /* 8004E2E4 00049F44 80 19 00 34 */ lwz r0, 0x34(r25) /* 8004E2E8 00049F48 54 1D 07 7A */ rlwinm r29, r0, 0, 0x1d, 0x1d /* 8004E2EC 00049F4C 4B FF FC 8D */ bl func_8004DF78 /* 8004E2F0 00049F50 38 00 00 00 */ li r0, 0 /* 8004E2F4 00049F54 2C 1C 00 00 */ cmpwi r28, 0 /* 8004E2F8 00049F58 90 19 00 38 */ stw r0, 0x38(r25) /* 8004E2FC 00049F5C 93 D9 00 3C */ stw r30, 0x3c(r25) /* 8004E300 00049F60 93 F9 00 40 */ stw r31, 0x40(r25) /* 8004E304 00049F64 93 59 00 44 */ stw r26, 0x44(r25) /* 8004E308 00049F68 93 79 00 48 */ stw r27, 0x48(r25) /* 8004E30C 00049F6C 41 82 00 1C */ beq lbl_8004E328 /* 8004E310 00049F70 7F 43 D3 78 */ mr r3, r26 /* 8004E314 00049F74 7F 64 DB 78 */ mr r4, r27 /* 8004E318 00049F78 48 18 D1 E5 */ bl func_801DB4FC /* 8004E31C 00049F7C 80 19 00 34 */ lwz r0, 0x34(r25) /* 8004E320 00049F80 60 00 00 40 */ ori r0, r0, 0x40 /* 8004E324 00049F84 90 19 00 34 */ stw r0, 0x34(r25) lbl_8004E328: /* 8004E328 00049F88 80 99 00 34 */ lwz r4, 0x34(r25) /* 8004E32C 00049F8C 63 A0 00 01 */ ori r0, r29, 1 /* 8004E330 00049F90 38 60 00 01 */ li r3, 1 /* 8004E334 00049F94 7C 80 03 78 */ or r0, r4, r0 /* 8004E338 00049F98 90 19 00 34 */ stw r0, 0x34(r25) lbl_8004E33C: /* 8004E33C 00049F9C 39 61 00 30 */ addi r11, r1, 0x30 /* 8004E340 00049FA0 48 17 8E 2D */ bl _restgpr_25 /* 8004E344 00049FA4 80 01 00 34 */ lwz r0, 0x34(r1) /* 8004E348 00049FA8 7C 08 03 A6 */ mtlr r0 /* 8004E34C 00049FAC 38 21 00 30 */ addi r1, r1, 0x30 /* 8004E350 00049FB0 4E 80 00 20 */ blr .global func_8004E354 func_8004E354: /* 8004E354 00049FB4 94 21 FF D0 */ stwu r1, -0x30(r1) /* 8004E358 00049FB8 7C 08 02 A6 */ mflr r0 /* 8004E35C 00049FBC 3D 40 80 40 */ lis r10, lbl_80400004@ha /* 8004E360 00049FC0 90 01 00 34 */ stw r0, 0x34(r1) /* 8004E364 00049FC4 85 2A B7 78 */ lwzu r9, -0x4888(r10) /* 8004E368 00049FC8 80 63 00 40 */ lwz r3, 0x40(r3) /* 8004E36C 00049FCC 81 0A 00 04 */ lwz r8, lbl_80400004@l(r10) /* 8004E370 00049FD0 80 EA 00 08 */ lwz r7, 8(r10) /* 8004E374 00049FD4 2C 03 00 00 */ cmpwi r3, 0 /* 8004E378 00049FD8 80 CA 00 0C */ lwz r6, 0xc(r10) /* 8004E37C 00049FDC 80 AA 00 10 */ lwz r5, 0x10(r10) /* 8004E380 00049FE0 80 0A 00 14 */ lwz r0, 0x14(r10) /* 8004E384 00049FE4 91 21 00 18 */ stw r9, 0x18(r1) /* 8004E388 00049FE8 91 01 00 1C */ stw r8, 0x1c(r1) /* 8004E38C 00049FEC 90 E1 00 20 */ stw r7, 0x20(r1) /* 8004E390 00049FF0 90 C1 00 24 */ stw r6, 0x24(r1) /* 8004E394 00049FF4 90 A1 00 28 */ stw r5, 0x28(r1) /* 8004E398 00049FF8 90 01 00 2C */ stw r0, 0x2c(r1) /* 8004E39C 00049FFC 41 82 00 F0 */ beq lbl_8004E48C /* 8004E3A0 0004A000 2C 04 00 01 */ cmpwi r4, 1 /* 8004E3A4 0004A004 41 80 00 0C */ blt lbl_8004E3B0 /* 8004E3A8 0004A008 2C 04 00 06 */ cmpwi r4, 6 /* 8004E3AC 0004A00C 40 81 00 08 */ ble lbl_8004E3B4 lbl_8004E3B0: /* 8004E3B0 0004A010 38 80 00 03 */ li r4, 3 lbl_8004E3B4: /* 8004E3B4 0004A014 38 04 FF FF */ addi r0, r4, -1 /* 8004E3B8 0004A018 38 81 00 18 */ addi r4, r1, 0x18 /* 8004E3BC 0004A01C 54 00 10 3A */ slwi r0, r0, 2 /* 8004E3C0 0004A020 2C 03 00 00 */ cmpwi r3, 0 /* 8004E3C4 0004A024 7C 04 04 2E */ lfsx f0, r4, r0 /* 8004E3C8 0004A028 EC 01 00 32 */ fmuls f0, f1, f0 /* 8004E3CC 0004A02C D0 01 00 08 */ stfs f0, 8(r1) /* 8004E3D0 0004A030 D0 01 00 0C */ stfs f0, 0xc(r1) /* 8004E3D4 0004A034 D0 01 00 10 */ stfs f0, 0x10(r1) /* 8004E3D8 0004A038 41 82 00 B4 */ beq lbl_8004E48C /* 8004E3DC 0004A03C D0 03 00 48 */ stfs f0, 0x48(r3) /* 8004E3E0 0004A040 C0 42 84 34 */ lfs f2, lbl_80640A34-_SDA2_BASE_(r2) /* 8004E3E4 0004A044 D0 03 00 4C */ stfs f0, 0x4c(r3) /* 8004E3E8 0004A048 FC 00 10 40 */ fcmpo cr0, f0, f2 /* 8004E3EC 0004A04C D0 03 00 50 */ stfs f0, 0x50(r3) /* 8004E3F0 0004A050 40 80 00 2C */ bge lbl_8004E41C /* 8004E3F4 0004A054 C0 23 00 48 */ lfs f1, 0x48(r3) /* 8004E3F8 0004A058 C0 62 84 38 */ lfs f3, lbl_80640A38-_SDA2_BASE_(r2) /* 8004E3FC 0004A05C FC 01 18 40 */ fcmpo cr0, f1, f3 /* 8004E400 0004A060 40 81 00 1C */ ble lbl_8004E41C /* 8004E404 0004A064 C0 02 84 30 */ lfs f0, lbl_80640A30-_SDA2_BASE_(r2) /* 8004E408 0004A068 FC 01 00 40 */ fcmpo cr0, f1, f0 /* 8004E40C 0004A06C 40 80 00 08 */ bge lbl_8004E414 /* 8004E410 0004A070 48 00 00 08 */ b lbl_8004E418 lbl_8004E414: /* 8004E414 0004A074 FC 60 10 90 */ fmr f3, f2 lbl_8004E418: /* 8004E418 0004A078 D0 63 00 48 */ stfs f3, 0x48(r3) lbl_8004E41C: /* 8004E41C 0004A07C C0 43 00 4C */ lfs f2, 0x4c(r3) /* 8004E420 0004A080 C0 22 84 34 */ lfs f1, lbl_80640A34-_SDA2_BASE_(r2) /* 8004E424 0004A084 FC 02 08 40 */ fcmpo cr0, f2, f1 /* 8004E428 0004A088 40 80 00 28 */ bge lbl_8004E450 /* 8004E42C 0004A08C C0 62 84 38 */ lfs f3, lbl_80640A38-_SDA2_BASE_(r2) /* 8004E430 0004A090 FC 02 18 40 */ fcmpo cr0, f2, f3 /* 8004E434 0004A094 40 81 00 1C */ ble lbl_8004E450 /* 8004E438 0004A098 C0 02 84 30 */ lfs f0, lbl_80640A30-_SDA2_BASE_(r2) /* 8004E43C 0004A09C FC 02 00 40 */ fcmpo cr0, f2, f0 /* 8004E440 0004A0A0 40 80 00 08 */ bge lbl_8004E448 /* 8004E444 0004A0A4 48 00 00 08 */ b lbl_8004E44C lbl_8004E448: /* 8004E448 0004A0A8 FC 60 08 90 */ fmr f3, f1 lbl_8004E44C: /* 8004E44C 0004A0AC D0 63 00 4C */ stfs f3, 0x4c(r3) lbl_8004E450: /* 8004E450 0004A0B0 C0 43 00 50 */ lfs f2, 0x50(r3) /* 8004E454 0004A0B4 C0 22 84 34 */ lfs f1, lbl_80640A34-_SDA2_BASE_(r2) /* 8004E458 0004A0B8 FC 02 08 40 */ fcmpo cr0, f2, f1 /* 8004E45C 0004A0BC 40 80 00 28 */ bge lbl_8004E484 /* 8004E460 0004A0C0 C0 62 84 38 */ lfs f3, lbl_80640A38-_SDA2_BASE_(r2) /* 8004E464 0004A0C4 FC 02 18 40 */ fcmpo cr0, f2, f3 /* 8004E468 0004A0C8 40 81 00 1C */ ble lbl_8004E484 /* 8004E46C 0004A0CC C0 02 84 30 */ lfs f0, lbl_80640A30-_SDA2_BASE_(r2) /* 8004E470 0004A0D0 FC 02 00 40 */ fcmpo cr0, f2, f0 /* 8004E474 0004A0D4 40 80 00 08 */ bge lbl_8004E47C /* 8004E478 0004A0D8 48 00 00 08 */ b lbl_8004E480 lbl_8004E47C: /* 8004E47C 0004A0DC FC 60 08 90 */ fmr f3, f1 lbl_8004E480: /* 8004E480 0004A0E0 D0 63 00 50 */ stfs f3, 0x50(r3) lbl_8004E484: /* 8004E484 0004A0E4 38 80 00 01 */ li r4, 1 /* 8004E488 0004A0E8 48 1A 42 31 */ bl func_801F26B8 lbl_8004E48C: /* 8004E48C 0004A0EC 80 01 00 34 */ lwz r0, 0x34(r1) /* 8004E490 0004A0F0 7C 08 03 A6 */ mtlr r0 /* 8004E494 0004A0F4 38 21 00 30 */ addi r1, r1, 0x30 /* 8004E498 0004A0F8 4E 80 00 20 */ blr .global func_8004E49C func_8004E49C: /* 8004E49C 0004A0FC 94 21 FF E0 */ stwu r1, -0x20(r1) /* 8004E4A0 0004A100 3D 20 80 40 */ lis r9, lbl_80400004@ha /* 8004E4A4 0004A104 2C 03 00 01 */ cmpwi r3, 1 /* 8004E4A8 0004A108 85 09 B7 90 */ lwzu r8, -0x4870(r9) /* 8004E4AC 0004A10C 80 E9 00 04 */ lwz r7, lbl_80400004@l(r9) /* 8004E4B0 0004A110 80 C9 00 08 */ lwz r6, 8(r9) /* 8004E4B4 0004A114 80 A9 00 0C */ lwz r5, 0xc(r9) /* 8004E4B8 0004A118 80 89 00 10 */ lwz r4, 0x10(r9) /* 8004E4BC 0004A11C 80 09 00 14 */ lwz r0, 0x14(r9) /* 8004E4C0 0004A120 91 01 00 08 */ stw r8, 8(r1) /* 8004E4C4 0004A124 90 E1 00 0C */ stw r7, 0xc(r1) /* 8004E4C8 0004A128 90 C1 00 10 */ stw r6, 0x10(r1) /* 8004E4CC 0004A12C 90 A1 00 14 */ stw r5, 0x14(r1) /* 8004E4D0 0004A130 90 81 00 18 */ stw r4, 0x18(r1) /* 8004E4D4 0004A134 90 01 00 1C */ stw r0, 0x1c(r1) /* 8004E4D8 0004A138 41 80 00 0C */ blt lbl_8004E4E4 /* 8004E4DC 0004A13C 2C 03 00 06 */ cmpwi r3, 6 /* 8004E4E0 0004A140 40 81 00 08 */ ble lbl_8004E4E8 lbl_8004E4E4: /* 8004E4E4 0004A144 38 60 00 03 */ li r3, 3 lbl_8004E4E8: /* 8004E4E8 0004A148 38 03 FF FF */ addi r0, r3, -1 /* 8004E4EC 0004A14C 38 61 00 08 */ addi r3, r1, 8 /* 8004E4F0 0004A150 54 00 10 3A */ slwi r0, r0, 2 /* 8004E4F4 0004A154 7C 03 04 2E */ lfsx f0, r3, r0 /* 8004E4F8 0004A158 EC 21 00 32 */ fmuls f1, f1, f0 /* 8004E4FC 0004A15C 38 21 00 20 */ addi r1, r1, 0x20 /* 8004E500 0004A160 4E 80 00 20 */ blr .global func_8004E504 func_8004E504: /* 8004E504 0004A164 80 84 00 40 */ lwz r4, 0x40(r4) /* 8004E508 0004A168 2C 04 00 00 */ cmpwi r4, 0 /* 8004E50C 0004A16C 41 82 00 20 */ beq lbl_8004E52C /* 8004E510 0004A170 C0 04 00 20 */ lfs f0, 0x20(r4) /* 8004E514 0004A174 D0 03 00 00 */ stfs f0, 0(r3) /* 8004E518 0004A178 C0 04 00 24 */ lfs f0, 0x24(r4) /* 8004E51C 0004A17C D0 03 00 04 */ stfs f0, 4(r3) /* 8004E520 0004A180 C0 04 00 28 */ lfs f0, 0x28(r4) /* 8004E524 0004A184 D0 03 00 08 */ stfs f0, 8(r3) /* 8004E528 0004A188 4E 80 00 20 */ blr lbl_8004E52C: /* 8004E52C 0004A18C C0 02 84 30 */ lfs f0, lbl_80640A30-_SDA2_BASE_(r2) /* 8004E530 0004A190 D0 03 00 00 */ stfs f0, 0(r3) /* 8004E534 0004A194 D0 03 00 04 */ stfs f0, 4(r3) /* 8004E538 0004A198 D0 03 00 08 */ stfs f0, 8(r3) /* 8004E53C 0004A19C 4E 80 00 20 */ blr .global func_8004E540 func_8004E540: /* 8004E540 0004A1A0 94 21 FF C0 */ stwu r1, -0x40(r1) /* 8004E544 0004A1A4 7C 08 02 A6 */ mflr r0 /* 8004E548 0004A1A8 90 01 00 44 */ stw r0, 0x44(r1) /* 8004E54C 0004A1AC DB E1 00 30 */ stfd f31, 0x30(r1) /* 8004E550 0004A1B0 F3 E1 00 38 */ psq_st f31, 56(r1), 0, qr0 /* 8004E554 0004A1B4 FF E0 08 90 */ fmr f31, f1 /* 8004E558 0004A1B8 93 E1 00 2C */ stw r31, 0x2c(r1) /* 8004E55C 0004A1BC 7C BF 2B 78 */ mr r31, r5 /* 8004E560 0004A1C0 93 C1 00 28 */ stw r30, 0x28(r1) /* 8004E564 0004A1C4 7C 9E 23 78 */ mr r30, r4 /* 8004E568 0004A1C8 93 A1 00 24 */ stw r29, 0x24(r1) /* 8004E56C 0004A1CC 7C 7D 1B 78 */ mr r29, r3 /* 8004E570 0004A1D0 7F A4 EB 78 */ mr r4, r29 /* 8004E574 0004A1D4 38 61 00 08 */ addi r3, r1, 8 /* 8004E578 0004A1D8 4B FF FF 8D */ bl func_8004E504 /* 8004E57C 0004A1DC C0 01 00 08 */ lfs f0, 8(r1) /* 8004E580 0004A1E0 38 9D 00 5C */ addi r4, r29, 0x5c /* 8004E584 0004A1E4 FC 20 F8 90 */ fmr f1, f31 /* 8004E588 0004A1E8 7F A3 EB 78 */ mr r3, r29 /* 8004E58C 0004A1EC D0 1D 00 5C */ stfs f0, 0x5c(r29) /* 8004E590 0004A1F0 7F C5 F3 78 */ mr r5, r30 /* 8004E594 0004A1F4 7C 86 23 78 */ mr r6, r4 /* 8004E598 0004A1F8 7F E7 FB 78 */ mr r7, r31 /* 8004E59C 0004A1FC C0 01 00 0C */ lfs f0, 0xc(r1) /* 8004E5A0 0004A200 D0 1D 00 60 */ stfs f0, 0x60(r29) /* 8004E5A4 0004A204 C0 01 00 10 */ lfs f0, 0x10(r1) /* 8004E5A8 0004A208 D0 1D 00 64 */ stfs f0, 0x64(r29) /* 8004E5AC 0004A20C 48 00 1F 99 */ bl func_80050544 /* 8004E5B0 0004A210 E3 E1 00 38 */ psq_l f31, 56(r1), 0, qr0 /* 8004E5B4 0004A214 80 01 00 44 */ lwz r0, 0x44(r1) /* 8004E5B8 0004A218 CB E1 00 30 */ lfd f31, 0x30(r1) /* 8004E5BC 0004A21C 83 E1 00 2C */ lwz r31, 0x2c(r1) /* 8004E5C0 0004A220 83 C1 00 28 */ lwz r30, 0x28(r1) /* 8004E5C4 0004A224 83 A1 00 24 */ lwz r29, 0x24(r1) /* 8004E5C8 0004A228 7C 08 03 A6 */ mtlr r0 /* 8004E5CC 0004A22C 38 21 00 40 */ addi r1, r1, 0x40 /* 8004E5D0 0004A230 4E 80 00 20 */ blr .global func_8004E5D4 func_8004E5D4: /* 8004E5D4 0004A234 94 21 FF F0 */ stwu r1, -0x10(r1) /* 8004E5D8 0004A238 7C 08 02 A6 */ mflr r0 /* 8004E5DC 0004A23C 90 01 00 14 */ stw r0, 0x14(r1) /* 8004E5E0 0004A240 93 E1 00 0C */ stw r31, 0xc(r1) /* 8004E5E4 0004A244 7C 7F 1B 78 */ mr r31, r3 /* 8004E5E8 0004A248 C0 03 00 4C */ lfs f0, 0x4c(r3) /* 8004E5EC 0004A24C EC 00 08 28 */ fsubs f0, f0, f1 /* 8004E5F0 0004A250 D0 03 00 4C */ stfs f0, 0x4c(r3) /* 8004E5F4 0004A254 81 83 00 30 */ lwz r12, 0x30(r3) /* 8004E5F8 0004A258 81 8C 00 08 */ lwz r12, 8(r12) /* 8004E5FC 0004A25C 7D 89 03 A6 */ mtctr r12 /* 8004E600 0004A260 4E 80 04 21 */ bctrl /* 8004E604 0004A264 2C 03 00 00 */ cmpwi r3, 0 /* 8004E608 0004A268 41 82 00 30 */ beq lbl_8004E638 /* 8004E60C 0004A26C 80 7F 00 40 */ lwz r3, 0x40(r31) /* 8004E610 0004A270 2C 03 00 00 */ cmpwi r3, 0 /* 8004E614 0004A274 41 82 00 24 */ beq lbl_8004E638 /* 8004E618 0004A278 C0 1F 00 5C */ lfs f0, 0x5c(r31) /* 8004E61C 0004A27C 38 80 00 01 */ li r4, 1 /* 8004E620 0004A280 D0 03 00 20 */ stfs f0, 0x20(r3) /* 8004E624 0004A284 C0 1F 00 60 */ lfs f0, 0x60(r31) /* 8004E628 0004A288 D0 03 00 24 */ stfs f0, 0x24(r3) /* 8004E62C 0004A28C C0 1F 00 64 */ lfs f0, 0x64(r31) /* 8004E630 0004A290 D0 03 00 28 */ stfs f0, 0x28(r3) /* 8004E634 0004A294 48 1A 40 85 */ bl func_801F26B8 lbl_8004E638: /* 8004E638 0004A298 80 7F 00 34 */ lwz r3, 0x34(r31) /* 8004E63C 0004A29C 54 60 07 7B */ rlwinm. r0, r3, 0, 0x1d, 0x1d /* 8004E640 0004A2A0 41 82 00 24 */ beq lbl_8004E664 /* 8004E644 0004A2A4 54 60 07 39 */ rlwinm. r0, r3, 0, 0x1c, 0x1c /* 8004E648 0004A2A8 41 82 00 1C */ beq lbl_8004E664 /* 8004E64C 0004A2AC C0 3F 00 4C */ lfs f1, 0x4c(r31) /* 8004E650 0004A2B0 C0 02 84 30 */ lfs f0, lbl_80640A30-_SDA2_BASE_(r2) /* 8004E654 0004A2B4 FC 01 00 40 */ fcmpo cr0, f1, f0 /* 8004E658 0004A2B8 40 80 00 0C */ bge lbl_8004E664 /* 8004E65C 0004A2BC 7F E3 FB 78 */ mr r3, r31 /* 8004E660 0004A2C0 4B FF F9 19 */ bl func_8004DF78 lbl_8004E664: /* 8004E664 0004A2C4 80 01 00 14 */ lwz r0, 0x14(r1) /* 8004E668 0004A2C8 83 E1 00 0C */ lwz r31, 0xc(r1) /* 8004E66C 0004A2CC 7C 08 03 A6 */ mtlr r0 /* 8004E670 0004A2D0 38 21 00 10 */ addi r1, r1, 0x10 /* 8004E674 0004A2D4 4E 80 00 20 */ blr .global func_8004E678 func_8004E678: /* 8004E678 0004A2D8 94 21 FF E0 */ stwu r1, -0x20(r1) /* 8004E67C 0004A2DC 7C 08 02 A6 */ mflr r0 /* 8004E680 0004A2E0 90 01 00 24 */ stw r0, 0x24(r1) /* 8004E684 0004A2E4 93 E1 00 1C */ stw r31, 0x1c(r1) /* 8004E688 0004A2E8 7C BF 2B 78 */ mr r31, r5 /* 8004E68C 0004A2EC 93 C1 00 18 */ stw r30, 0x18(r1) /* 8004E690 0004A2F0 7C 9E 23 78 */ mr r30, r4 /* 8004E694 0004A2F4 93 A1 00 14 */ stw r29, 0x14(r1) /* 8004E698 0004A2F8 7C 7D 1B 78 */ mr r29, r3 /* 8004E69C 0004A2FC 80 03 00 40 */ lwz r0, 0x40(r3) /* 8004E6A0 0004A300 2C 00 00 00 */ cmpwi r0, 0 /* 8004E6A4 0004A304 41 82 00 C0 */ beq lbl_8004E764 /* 8004E6A8 0004A308 4B FE 49 E1 */ bl func_80033088 /* 8004E6AC 0004A30C 80 9D 00 40 */ lwz r4, 0x40(r29) /* 8004E6B0 0004A310 80 84 01 38 */ lwz r4, 0x138(r4) /* 8004E6B4 0004A314 2C 04 00 00 */ cmpwi r4, 0 /* 8004E6B8 0004A318 41 82 00 10 */ beq lbl_8004E6C8 /* 8004E6BC 0004A31C A0 04 01 48 */ lhz r0, 0x148(r4) /* 8004E6C0 0004A320 60 00 00 08 */ ori r0, r0, 8 /* 8004E6C4 0004A324 B0 04 01 48 */ sth r0, 0x148(r4) lbl_8004E6C8: /* 8004E6C8 0004A328 2C 1E 00 00 */ cmpwi r30, 0 /* 8004E6CC 0004A32C 41 82 00 1C */ beq lbl_8004E6E8 /* 8004E6D0 0004A330 2C 1F 00 00 */ cmpwi r31, 0 /* 8004E6D4 0004A334 41 82 00 14 */ beq lbl_8004E6E8 /* 8004E6D8 0004A338 80 7D 00 40 */ lwz r3, 0x40(r29) /* 8004E6DC 0004A33C 38 00 00 00 */ li r0, 0 /* 8004E6E0 0004A340 90 03 01 2C */ stw r0, 0x12c(r3) /* 8004E6E4 0004A344 48 00 00 80 */ b lbl_8004E764 lbl_8004E6E8: /* 8004E6E8 0004A348 2C 1E 00 00 */ cmpwi r30, 0 /* 8004E6EC 0004A34C 41 82 00 2C */ beq lbl_8004E718 /* 8004E6F0 0004A350 2C 03 00 00 */ cmpwi r3, 0 /* 8004E6F4 0004A354 41 82 00 0C */ beq lbl_8004E700 /* 8004E6F8 0004A358 38 80 00 00 */ li r4, 0 /* 8004E6FC 0004A35C 4B FE 54 81 */ bl func_80033B7C lbl_8004E700: /* 8004E700 0004A360 2C 03 00 00 */ cmpwi r3, 0 /* 8004E704 0004A364 41 82 00 60 */ beq lbl_8004E764 /* 8004E708 0004A368 4B FE 72 69 */ bl func_80035970 /* 8004E70C 0004A36C 80 9D 00 40 */ lwz r4, 0x40(r29) /* 8004E710 0004A370 90 64 01 2C */ stw r3, 0x12c(r4) /* 8004E714 0004A374 48 00 00 50 */ b lbl_8004E764 lbl_8004E718: /* 8004E718 0004A378 2C 1F 00 00 */ cmpwi r31, 0 /* 8004E71C 0004A37C 41 82 00 2C */ beq lbl_8004E748 /* 8004E720 0004A380 2C 03 00 00 */ cmpwi r3, 0 /* 8004E724 0004A384 41 82 00 0C */ beq lbl_8004E730 /* 8004E728 0004A388 38 80 00 01 */ li r4, 1 /* 8004E72C 0004A38C 4B FE 54 51 */ bl func_80033B7C lbl_8004E730: /* 8004E730 0004A390 2C 03 00 00 */ cmpwi r3, 0 /* 8004E734 0004A394 41 82 00 30 */ beq lbl_8004E764 /* 8004E738 0004A398 4B FE 72 39 */ bl func_80035970 /* 8004E73C 0004A39C 80 9D 00 40 */ lwz r4, 0x40(r29) /* 8004E740 0004A3A0 90 64 01 2C */ stw r3, 0x12c(r4) /* 8004E744 0004A3A4 48 00 00 20 */ b lbl_8004E764 lbl_8004E748: /* 8004E748 0004A3A8 80 7D 00 40 */ lwz r3, 0x40(r29) /* 8004E74C 0004A3AC 80 63 01 38 */ lwz r3, 0x138(r3) /* 8004E750 0004A3B0 2C 03 00 00 */ cmpwi r3, 0 /* 8004E754 0004A3B4 41 82 00 10 */ beq lbl_8004E764 /* 8004E758 0004A3B8 A0 03 01 48 */ lhz r0, 0x148(r3) /* 8004E75C 0004A3BC 54 00 07 76 */ rlwinm r0, r0, 0, 0x1d, 0x1b /* 8004E760 0004A3C0 B0 03 01 48 */ sth r0, 0x148(r3) lbl_8004E764: /* 8004E764 0004A3C4 80 01 00 24 */ lwz r0, 0x24(r1) /* 8004E768 0004A3C8 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 8004E76C 0004A3CC 83 C1 00 18 */ lwz r30, 0x18(r1) /* 8004E770 0004A3D0 83 A1 00 14 */ lwz r29, 0x14(r1) /* 8004E774 0004A3D4 7C 08 03 A6 */ mtlr r0 /* 8004E778 0004A3D8 38 21 00 20 */ addi r1, r1, 0x20 /* 8004E77C 0004A3DC 4E 80 00 20 */ blr .global func_8004E780 func_8004E780: /* 8004E780 0004A3E0 80 03 00 34 */ lwz r0, 0x34(r3) /* 8004E784 0004A3E4 90 83 00 54 */ stw r4, 0x54(r3) /* 8004E788 0004A3E8 60 00 00 10 */ ori r0, r0, 0x10 /* 8004E78C 0004A3EC 90 03 00 34 */ stw r0, 0x34(r3) /* 8004E790 0004A3F0 4E 80 00 20 */ blr .global func_8004E794 func_8004E794: /* 8004E794 0004A3F4 80 03 00 34 */ lwz r0, 0x34(r3) /* 8004E798 0004A3F8 80 83 00 40 */ lwz r4, 0x40(r3) /* 8004E79C 0004A3FC 54 00 07 34 */ rlwinm r0, r0, 0, 0x1c, 0x1a /* 8004E7A0 0004A400 2C 04 00 00 */ cmpwi r4, 0 /* 8004E7A4 0004A404 90 03 00 34 */ stw r0, 0x34(r3) /* 8004E7A8 0004A408 4D 82 00 20 */ beqlr /* 8004E7AC 0004A40C 80 64 01 38 */ lwz r3, 0x138(r4) /* 8004E7B0 0004A410 2C 03 00 00 */ cmpwi r3, 0 /* 8004E7B4 0004A414 4D 82 00 20 */ beqlr /* 8004E7B8 0004A418 A0 03 01 48 */ lhz r0, 0x148(r3) /* 8004E7BC 0004A41C 54 00 06 F2 */ rlwinm r0, r0, 0, 0x1b, 0x19 /* 8004E7C0 0004A420 B0 03 01 48 */ sth r0, 0x148(r3) /* 8004E7C4 0004A424 4E 80 00 20 */ blr .global func_8004E7C8 func_8004E7C8: /* 8004E7C8 0004A428 94 21 FF F0 */ stwu r1, -0x10(r1) /* 8004E7CC 0004A42C 7C 08 02 A6 */ mflr r0 /* 8004E7D0 0004A430 90 01 00 14 */ stw r0, 0x14(r1) /* 8004E7D4 0004A434 93 E1 00 0C */ stw r31, 0xc(r1) /* 8004E7D8 0004A438 7C 7F 1B 78 */ mr r31, r3 /* 8004E7DC 0004A43C 80 83 00 40 */ lwz r4, 0x40(r3) /* 8004E7E0 0004A440 2C 04 00 00 */ cmpwi r4, 0 /* 8004E7E4 0004A444 41 82 00 64 */ beq lbl_8004E848 /* 8004E7E8 0004A448 80 04 01 04 */ lwz r0, 0x104(r4) /* 8004E7EC 0004A44C 60 00 00 01 */ ori r0, r0, 1 /* 8004E7F0 0004A450 54 00 07 F8 */ rlwinm r0, r0, 0, 0x1f, 0x1c /* 8004E7F4 0004A454 90 04 01 04 */ stw r0, 0x104(r4) /* 8004E7F8 0004A458 D0 24 01 08 */ stfs f1, 0x108(r4) /* 8004E7FC 0004A45C 80 63 00 40 */ lwz r3, 0x40(r3) /* 8004E800 0004A460 80 63 01 38 */ lwz r3, 0x138(r3) /* 8004E804 0004A464 48 1B 90 3D */ bl func_80207840 /* 8004E808 0004A468 80 1F 00 34 */ lwz r0, 0x34(r31) /* 8004E80C 0004A46C D0 3F 00 4C */ stfs f1, 0x4c(r31) /* 8004E810 0004A470 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b /* 8004E814 0004A474 41 82 00 20 */ beq lbl_8004E834 /* 8004E818 0004A478 80 7F 00 40 */ lwz r3, 0x40(r31) /* 8004E81C 0004A47C 80 63 01 38 */ lwz r3, 0x138(r3) /* 8004E820 0004A480 2C 03 00 00 */ cmpwi r3, 0 /* 8004E824 0004A484 41 82 00 10 */ beq lbl_8004E834 /* 8004E828 0004A488 A0 03 01 48 */ lhz r0, 0x148(r3) /* 8004E82C 0004A48C 60 00 00 20 */ ori r0, r0, 0x20 /* 8004E830 0004A490 B0 03 01 48 */ sth r0, 0x148(r3) lbl_8004E834: /* 8004E834 0004A494 80 7F 00 34 */ lwz r3, 0x34(r31) /* 8004E838 0004A498 38 00 00 00 */ li r0, 0 /* 8004E83C 0004A49C 90 1F 00 58 */ stw r0, 0x58(r31) /* 8004E840 0004A4A0 60 60 00 08 */ ori r0, r3, 8 /* 8004E844 0004A4A4 90 1F 00 34 */ stw r0, 0x34(r31) lbl_8004E848: /* 8004E848 0004A4A8 80 01 00 14 */ lwz r0, 0x14(r1) /* 8004E84C 0004A4AC 83 E1 00 0C */ lwz r31, 0xc(r1) /* 8004E850 0004A4B0 7C 08 03 A6 */ mtlr r0 /* 8004E854 0004A4B4 38 21 00 10 */ addi r1, r1, 0x10 /* 8004E858 0004A4B8 4E 80 00 20 */ blr .global func_8004E85C func_8004E85C: /* 8004E85C 0004A4BC 94 21 FF D0 */ stwu r1, -0x30(r1) /* 8004E860 0004A4C0 7C 08 02 A6 */ mflr r0 /* 8004E864 0004A4C4 90 01 00 34 */ stw r0, 0x34(r1) /* 8004E868 0004A4C8 93 E1 00 2C */ stw r31, 0x2c(r1) /* 8004E86C 0004A4CC 7C DF 33 78 */ mr r31, r6 /* 8004E870 0004A4D0 93 C1 00 28 */ stw r30, 0x28(r1) /* 8004E874 0004A4D4 7C 9E 23 78 */ mr r30, r4 /* 8004E878 0004A4D8 93 A1 00 24 */ stw r29, 0x24(r1) /* 8004E87C 0004A4DC 7C 7D 1B 78 */ mr r29, r3 /* 8004E880 0004A4E0 80 03 00 34 */ lwz r0, 0x34(r3) /* 8004E884 0004A4E4 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b /* 8004E888 0004A4E8 41 82 00 7C */ beq lbl_8004E904 /* 8004E88C 0004A4EC 4B FF 6D 05 */ bl func_80045590 /* 8004E890 0004A4F0 80 8D A4 C8 */ lwz r4, lbl_8063F788-_SDA_BASE_(r13) /* 8004E894 0004A4F4 80 BD 00 58 */ lwz r5, 0x58(r29) /* 8004E898 0004A4F8 80 04 00 88 */ lwz r0, 0x88(r4) /* 8004E89C 0004A4FC 7C 05 00 40 */ cmplw r5, r0 /* 8004E8A0 0004A500 41 82 00 64 */ beq lbl_8004E904 /* 8004E8A4 0004A504 7F C4 F3 78 */ mr r4, r30 /* 8004E8A8 0004A508 4B FF 79 E5 */ bl func_8004628C /* 8004E8AC 0004A50C 2C 03 00 00 */ cmpwi r3, 0 /* 8004E8B0 0004A510 41 82 00 54 */ beq lbl_8004E904 /* 8004E8B4 0004A514 80 6D A4 C8 */ lwz r3, lbl_8063F788-_SDA_BASE_(r13) /* 8004E8B8 0004A518 80 03 00 88 */ lwz r0, 0x88(r3) /* 8004E8BC 0004A51C 90 1D 00 58 */ stw r0, 0x58(r29) /* 8004E8C0 0004A520 4B FF EF 4D */ bl func_8004D80C /* 8004E8C4 0004A524 C0 3F 00 04 */ lfs f1, 4(r31) /* 8004E8C8 0004A528 38 A1 00 10 */ addi r5, r1, 0x10 /* 8004E8CC 0004A52C C0 02 84 3C */ lfs f0, lbl_80640A3C-_SDA2_BASE_(r2) /* 8004E8D0 0004A530 38 C1 00 08 */ addi r6, r1, 8 /* 8004E8D4 0004A534 C0 7F 00 08 */ lfs f3, 8(r31) /* 8004E8D8 0004A538 38 63 35 10 */ addi r3, r3, 0x3510 /* 8004E8DC 0004A53C C0 5F 00 00 */ lfs f2, 0(r31) /* 8004E8E0 0004A540 EC 21 00 28 */ fsubs f1, f1, f0 /* 8004E8E4 0004A544 C0 02 84 40 */ lfs f0, lbl_80640A40-_SDA2_BASE_(r2) /* 8004E8E8 0004A548 D0 41 00 10 */ stfs f2, 0x10(r1) /* 8004E8EC 0004A54C D0 21 00 14 */ stfs f1, 0x14(r1) /* 8004E8F0 0004A550 D0 61 00 18 */ stfs f3, 0x18(r1) /* 8004E8F4 0004A554 D0 01 00 08 */ stfs f0, 8(r1) /* 8004E8F8 0004A558 D0 01 00 0C */ stfs f0, 0xc(r1) /* 8004E8FC 0004A55C 80 9D 00 54 */ lwz r4, 0x54(r29) /* 8004E900 0004A560 48 00 08 D9 */ bl func_8004F1D8 lbl_8004E904: /* 8004E904 0004A564 80 01 00 34 */ lwz r0, 0x34(r1) /* 8004E908 0004A568 83 E1 00 2C */ lwz r31, 0x2c(r1) /* 8004E90C 0004A56C 83 C1 00 28 */ lwz r30, 0x28(r1) /* 8004E910 0004A570 83 A1 00 24 */ lwz r29, 0x24(r1) /* 8004E914 0004A574 7C 08 03 A6 */ mtlr r0 /* 8004E918 0004A578 38 21 00 30 */ addi r1, r1, 0x30 /* 8004E91C 0004A57C 4E 80 00 20 */ blr .global func_8004E920 func_8004E920: /* 8004E920 0004A580 3C 60 80 05 */ lis r3, lbl_8004E92C@ha /* 8004E924 0004A584 38 63 E9 2C */ addi r3, r3, lbl_8004E92C@l /* 8004E928 0004A588 48 1B 6B B8 */ b func_802054E0 lbl_8004E92C: /* 8004E92C 0004A58C 94 21 FF E0 */ stwu r1, -0x20(r1) /* 8004E930 0004A590 7C 08 02 A6 */ mflr r0 /* 8004E934 0004A594 2C 03 00 00 */ cmpwi r3, 0 /* 8004E938 0004A598 90 01 00 24 */ stw r0, 0x24(r1) /* 8004E93C 0004A59C DB E1 00 18 */ stfd f31, 0x18(r1) /* 8004E940 0004A5A0 FF E0 08 90 */ fmr f31, f1 /* 8004E944 0004A5A4 93 E1 00 14 */ stw r31, 0x14(r1) /* 8004E948 0004A5A8 7C DF 33 78 */ mr r31, r6 /* 8004E94C 0004A5AC 93 C1 00 10 */ stw r30, 0x10(r1) /* 8004E950 0004A5B0 7C BE 2B 78 */ mr r30, r5 /* 8004E954 0004A5B4 93 A1 00 0C */ stw r29, 0xc(r1) /* 8004E958 0004A5B8 7C 9D 23 78 */ mr r29, r4 /* 8004E95C 0004A5BC 93 81 00 08 */ stw r28, 8(r1) /* 8004E960 0004A5C0 7C 7C 1B 78 */ mr r28, r3 /* 8004E964 0004A5C4 40 82 00 0C */ bne lbl_8004E970 /* 8004E968 0004A5C8 38 60 00 00 */ li r3, 0 /* 8004E96C 0004A5CC 48 00 00 40 */ b lbl_8004E9AC lbl_8004E970: /* 8004E970 0004A5D0 4B FF EE 9D */ bl func_8004D80C /* 8004E974 0004A5D4 2C 03 00 00 */ cmpwi r3, 0 /* 8004E978 0004A5D8 41 82 00 30 */ beq lbl_8004E9A8 /* 8004E97C 0004A5DC 2C 1C 00 00 */ cmpwi r28, 0 /* 8004E980 0004A5E0 41 82 00 28 */ beq lbl_8004E9A8 /* 8004E984 0004A5E4 80 9C 01 3C */ lwz r4, 0x13c(r28) /* 8004E988 0004A5E8 4B FF F4 A1 */ bl func_8004DE28 /* 8004E98C 0004A5EC 2C 03 00 00 */ cmpwi r3, 0 /* 8004E990 0004A5F0 41 82 00 18 */ beq lbl_8004E9A8 /* 8004E994 0004A5F4 FC 20 F8 90 */ fmr f1, f31 /* 8004E998 0004A5F8 7F A4 EB 78 */ mr r4, r29 /* 8004E99C 0004A5FC 7F C5 F3 78 */ mr r5, r30 /* 8004E9A0 0004A600 7F E6 FB 78 */ mr r6, r31 /* 8004E9A4 0004A604 4B FF FE B9 */ bl func_8004E85C lbl_8004E9A8: /* 8004E9A8 0004A608 38 60 00 00 */ li r3, 0 lbl_8004E9AC: /* 8004E9AC 0004A60C 80 01 00 24 */ lwz r0, 0x24(r1) /* 8004E9B0 0004A610 CB E1 00 18 */ lfd f31, 0x18(r1) /* 8004E9B4 0004A614 83 E1 00 14 */ lwz r31, 0x14(r1) /* 8004E9B8 0004A618 83 C1 00 10 */ lwz r30, 0x10(r1) /* 8004E9BC 0004A61C 83 A1 00 0C */ lwz r29, 0xc(r1) /* 8004E9C0 0004A620 83 81 00 08 */ lwz r28, 8(r1) /* 8004E9C4 0004A624 7C 08 03 A6 */ mtlr r0 /* 8004E9C8 0004A628 38 21 00 20 */ addi r1, r1, 0x20 /* 8004E9CC 0004A62C 4E 80 00 20 */ blr .global func_8004E9D0 func_8004E9D0: /* 8004E9D0 0004A630 38 A0 00 01 */ li r5, 1 /* 8004E9D4 0004A634 38 6D 98 38 */ addi r3, r13, lbl_8063EAF8-_SDA_BASE_ /* 8004E9D8 0004A638 38 80 00 04 */ li r4, 4 /* 8004E9DC 0004A63C 38 00 00 00 */ li r0, 0 /* 8004E9E0 0004A640 98 AD 98 38 */ stb r5, lbl_8063EAF8-_SDA_BASE_(r13) /* 8004E9E4 0004A644 B0 83 00 02 */ sth r4, 2(r3) /* 8004E9E8 0004A648 98 03 00 04 */ stb r0, 4(r3) /* 8004E9EC 0004A64C 4E 80 00 20 */ blr