.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global func_8025E86C func_8025E86C: /* 8025E86C 0025A4CC 94 21 FF E0 */ stwu r1, -0x20(r1) /* 8025E870 0025A4D0 7C 08 02 A6 */ mflr r0 /* 8025E874 0025A4D4 2C 05 00 10 */ cmpwi r5, 0x10 /* 8025E878 0025A4D8 90 01 00 24 */ stw r0, 0x24(r1) /* 8025E87C 0025A4DC 93 E1 00 1C */ stw r31, 0x1c(r1) /* 8025E880 0025A4E0 7C BF 2B 78 */ mr r31, r5 /* 8025E884 0025A4E4 93 C1 00 18 */ stw r30, 0x18(r1) /* 8025E888 0025A4E8 7C 9E 23 78 */ mr r30, r4 /* 8025E88C 0025A4EC 93 A1 00 14 */ stw r29, 0x14(r1) /* 8025E890 0025A4F0 7C 7D 1B 78 */ mr r29, r3 /* 8025E894 0025A4F4 40 81 00 08 */ ble lbl_8025E89C /* 8025E898 0025A4F8 3B E0 00 10 */ li r31, 0x10 lbl_8025E89C: /* 8025E89C 0025A4FC 38 80 00 00 */ li r4, 0 /* 8025E8A0 0025A500 38 A0 00 20 */ li r5, 0x20 /* 8025E8A4 0025A504 38 63 00 04 */ addi r3, r3, 4 /* 8025E8A8 0025A508 4B DA 58 5D */ bl memset /* 8025E8AC 0025A50C 7F C4 F3 78 */ mr r4, r30 /* 8025E8B0 0025A510 7F E5 FB 78 */ mr r5, r31 /* 8025E8B4 0025A514 38 7D 00 04 */ addi r3, r29, 4 /* 8025E8B8 0025A518 4B FF FF 21 */ bl func_8025E7D8 /* 8025E8BC 0025A51C 80 01 00 24 */ lwz r0, 0x24(r1) /* 8025E8C0 0025A520 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 8025E8C4 0025A524 83 C1 00 18 */ lwz r30, 0x18(r1) /* 8025E8C8 0025A528 83 A1 00 14 */ lwz r29, 0x14(r1) /* 8025E8CC 0025A52C 7C 08 03 A6 */ mtlr r0 /* 8025E8D0 0025A530 38 21 00 20 */ addi r1, r1, 0x20 /* 8025E8D4 0025A534 4E 80 00 20 */ blr .global func_8025E8D8 func_8025E8D8: /* 8025E8D8 0025A538 94 21 FF E0 */ stwu r1, -0x20(r1) /* 8025E8DC 0025A53C 7C 08 02 A6 */ mflr r0 /* 8025E8E0 0025A540 28 04 00 10 */ cmplwi r4, 0x10 /* 8025E8E4 0025A544 90 01 00 24 */ stw r0, 0x24(r1) /* 8025E8E8 0025A548 93 E1 00 1C */ stw r31, 0x1c(r1) /* 8025E8EC 0025A54C 7C BF 2B 78 */ mr r31, r5 /* 8025E8F0 0025A550 93 C1 00 18 */ stw r30, 0x18(r1) /* 8025E8F4 0025A554 7C 9E 23 78 */ mr r30, r4 /* 8025E8F8 0025A558 93 A1 00 14 */ stw r29, 0x14(r1) /* 8025E8FC 0025A55C 7C 7D 1B 78 */ mr r29, r3 /* 8025E900 0025A560 40 80 00 1C */ bge lbl_8025E91C /* 8025E904 0025A564 4B FF FA 6D */ bl func_8025E370 /* 8025E908 0025A568 1C BF 00 0A */ mulli r5, r31, 0xa /* 8025E90C 0025A56C 57 C0 13 BA */ rlwinm r0, r30, 2, 0xe, 0x1d /* 8025E910 0025A570 7C 9D 02 14 */ add r4, r29, r0 /* 8025E914 0025A574 7C 05 18 50 */ subf r0, r5, r3 /* 8025E918 0025A578 90 04 0E A4 */ stw r0, 0xea4(r4) lbl_8025E91C: /* 8025E91C 0025A57C 80 01 00 24 */ lwz r0, 0x24(r1) /* 8025E920 0025A580 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 8025E924 0025A584 83 C1 00 18 */ lwz r30, 0x18(r1) /* 8025E928 0025A588 83 A1 00 14 */ lwz r29, 0x14(r1) /* 8025E92C 0025A58C 7C 08 03 A6 */ mtlr r0 /* 8025E930 0025A590 38 21 00 20 */ addi r1, r1, 0x20 /* 8025E934 0025A594 4E 80 00 20 */ blr .global func_8025E938 func_8025E938: /* 8025E938 0025A598 94 21 FF F0 */ stwu r1, -0x10(r1) /* 8025E93C 0025A59C 7C 08 02 A6 */ mflr r0 /* 8025E940 0025A5A0 28 04 00 10 */ cmplwi r4, 0x10 /* 8025E944 0025A5A4 90 01 00 14 */ stw r0, 0x14(r1) /* 8025E948 0025A5A8 93 E1 00 0C */ stw r31, 0xc(r1) /* 8025E94C 0025A5AC 7C 9F 23 78 */ mr r31, r4 /* 8025E950 0025A5B0 93 C1 00 08 */ stw r30, 8(r1) /* 8025E954 0025A5B4 7C 7E 1B 78 */ mr r30, r3 /* 8025E958 0025A5B8 40 80 00 2C */ bge lbl_8025E984 /* 8025E95C 0025A5BC 4B FF FA 15 */ bl func_8025E370 /* 8025E960 0025A5C0 57 E0 13 BA */ rlwinm r0, r31, 2, 0xe, 0x1d /* 8025E964 0025A5C4 3C 80 CC CD */ lis r4, 0xCCCCCCCD@ha /* 8025E968 0025A5C8 7C BE 02 14 */ add r5, r30, r0 /* 8025E96C 0025A5CC 80 05 0E A4 */ lwz r0, 0xea4(r5) /* 8025E970 0025A5D0 38 84 CC CD */ addi r4, r4, 0xCCCCCCCD@l /* 8025E974 0025A5D4 7C 00 18 50 */ subf r0, r0, r3 /* 8025E978 0025A5D8 7C 04 00 16 */ mulhwu r0, r4, r0 /* 8025E97C 0025A5DC 54 03 E8 FE */ srwi r3, r0, 3 /* 8025E980 0025A5E0 48 00 00 08 */ b lbl_8025E988 lbl_8025E984: /* 8025E984 0025A5E4 38 60 FF FF */ li r3, -1 lbl_8025E988: /* 8025E988 0025A5E8 80 01 00 14 */ lwz r0, 0x14(r1) /* 8025E98C 0025A5EC 83 E1 00 0C */ lwz r31, 0xc(r1) /* 8025E990 0025A5F0 83 C1 00 08 */ lwz r30, 8(r1) /* 8025E994 0025A5F4 7C 08 03 A6 */ mtlr r0 /* 8025E998 0025A5F8 38 21 00 10 */ addi r1, r1, 0x10 /* 8025E99C 0025A5FC 4E 80 00 20 */ blr .global func_8025E9A0 func_8025E9A0: /* 8025E9A0 0025A600 94 21 FF E0 */ stwu r1, -0x20(r1) /* 8025E9A4 0025A604 7C 08 02 A6 */ mflr r0 /* 8025E9A8 0025A608 90 01 00 24 */ stw r0, 0x24(r1) /* 8025E9AC 0025A60C 93 E1 00 1C */ stw r31, 0x1c(r1) /* 8025E9B0 0025A610 3B E0 00 40 */ li r31, 0x40 /* 8025E9B4 0025A614 93 C1 00 18 */ stw r30, 0x18(r1) /* 8025E9B8 0025A618 3F C0 80 42 */ lis r30, 0x8042 /* 8025E9BC 0025A61C 93 A1 00 14 */ stw r29, 0x14(r1) /* 8025E9C0 0025A620 93 81 00 10 */ stw r28, 0x10(r1) /* 8025E9C4 0025A624 7C 7C 1B 78 */ mr r28, r3 /* 8025E9C8 0025A628 48 00 01 3C */ b lbl_8025EB04 lbl_8025E9CC: /* 8025E9CC 0025A62C A0 03 00 00 */ lhz r0, 0(r3) /* 8025E9D0 0025A630 2C 00 00 00 */ cmpwi r0, 0 /* 8025E9D4 0025A634 41 82 00 14 */ beq lbl_8025E9E8 /* 8025E9D8 0025A638 88 81 00 08 */ lbz r4, 8(r1) /* 8025E9DC 0025A63C 7F 83 E3 78 */ mr r3, r28 /* 8025E9E0 0025A640 38 A0 00 00 */ li r5, 0 /* 8025E9E4 0025A644 4B FF FE F5 */ bl func_8025E8D8 lbl_8025E9E8: /* 8025E9E8 0025A648 A0 1D 00 00 */ lhz r0, 0(r29) /* 8025E9EC 0025A64C 28 00 00 11 */ cmplwi r0, 0x11 /* 8025E9F0 0025A650 41 81 01 0C */ bgt lbl_8025EAFC /* 8025E9F4 0025A654 38 7E 58 10 */ addi r3, r30, 0x5810 /* 8025E9F8 0025A658 54 00 10 3A */ slwi r0, r0, 2 /* 8025E9FC 0025A65C 7C 63 00 2E */ lwzx r3, r3, r0 /* 8025EA00 0025A660 7C 69 03 A6 */ mtctr r3 /* 8025EA04 0025A664 4E 80 04 20 */ bctr /* 8025EA08 0025A668 38 7D 00 08 */ addi r3, r29, 8 /* 8025EA0C 0025A66C 38 A0 00 00 */ li r5, 0 /* 8025EA10 0025A670 7F E9 03 A6 */ mtctr r31 lbl_8025EA14: /* 8025EA14 0025A674 88 03 00 00 */ lbz r0, 0(r3) /* 8025EA18 0025A678 54 A4 06 3E */ clrlwi r4, r5, 0x18 /* 8025EA1C 0025A67C 7C 04 00 40 */ cmplw r4, r0 /* 8025EA20 0025A680 41 82 00 14 */ beq lbl_8025EA34 /* 8025EA24 0025A684 80 6D A7 00 */ lwz r3, lbl_8063F9C0-_SDA_BASE_(r13) /* 8025EA28 0025A688 38 03 00 01 */ addi r0, r3, 1 /* 8025EA2C 0025A68C 90 0D A7 00 */ stw r0, lbl_8063F9C0-_SDA_BASE_(r13) /* 8025EA30 0025A690 48 00 00 CC */ b lbl_8025EAFC lbl_8025EA34: /* 8025EA34 0025A694 38 A5 00 01 */ addi r5, r5, 1 /* 8025EA38 0025A698 38 63 00 01 */ addi r3, r3, 1 /* 8025EA3C 0025A69C 42 00 FF D8 */ bdnz lbl_8025EA14 /* 8025EA40 0025A6A0 48 00 00 BC */ b lbl_8025EAFC /* 8025EA44 0025A6A4 88 A1 00 08 */ lbz r5, 8(r1) /* 8025EA48 0025A6A8 7F 83 E3 78 */ mr r3, r28 /* 8025EA4C 0025A6AC 7F A4 EB 78 */ mr r4, r29 /* 8025EA50 0025A6B0 48 00 0A 4D */ bl func_8025F49C /* 8025EA54 0025A6B4 48 00 00 A8 */ b lbl_8025EAFC /* 8025EA58 0025A6B8 88 A1 00 08 */ lbz r5, 8(r1) /* 8025EA5C 0025A6BC 7F 83 E3 78 */ mr r3, r28 /* 8025EA60 0025A6C0 7F A4 EB 78 */ mr r4, r29 /* 8025EA64 0025A6C4 48 00 06 D1 */ bl func_8025F134 /* 8025EA68 0025A6C8 48 00 00 94 */ b lbl_8025EAFC /* 8025EA6C 0025A6CC 88 A1 00 08 */ lbz r5, 8(r1) /* 8025EA70 0025A6D0 7F 83 E3 78 */ mr r3, r28 /* 8025EA74 0025A6D4 7F A4 EB 78 */ mr r4, r29 /* 8025EA78 0025A6D8 48 00 08 69 */ bl func_8025F2E0 /* 8025EA7C 0025A6DC 48 00 00 80 */ b lbl_8025EAFC /* 8025EA80 0025A6E0 88 A1 00 08 */ lbz r5, 8(r1) /* 8025EA84 0025A6E4 7F 83 E3 78 */ mr r3, r28 /* 8025EA88 0025A6E8 7F A4 EB 78 */ mr r4, r29 /* 8025EA8C 0025A6EC 48 00 15 6D */ bl func_8025FFF8 /* 8025EA90 0025A6F0 48 00 00 6C */ b lbl_8025EAFC /* 8025EA94 0025A6F4 81 9C 0E F4 */ lwz r12, 0xef4(r28) /* 8025EA98 0025A6F8 2C 0C 00 00 */ cmpwi r12, 0 /* 8025EA9C 0025A6FC 41 82 00 60 */ beq lbl_8025EAFC /* 8025EAA0 0025A700 38 9D 00 08 */ addi r4, r29, 8 /* 8025EAA4 0025A704 88 61 00 08 */ lbz r3, 8(r1) /* 8025EAA8 0025A708 A0 BD 00 02 */ lhz r5, 2(r29) /* 8025EAAC 0025A70C 7D 89 03 A6 */ mtctr r12 /* 8025EAB0 0025A710 4E 80 04 21 */ bctrl /* 8025EAB4 0025A714 48 00 00 48 */ b lbl_8025EAFC /* 8025EAB8 0025A718 81 9C 0E F8 */ lwz r12, 0xef8(r28) /* 8025EABC 0025A71C 2C 0C 00 00 */ cmpwi r12, 0 /* 8025EAC0 0025A720 41 82 00 3C */ beq lbl_8025EAFC /* 8025EAC4 0025A724 38 9D 00 08 */ addi r4, r29, 8 /* 8025EAC8 0025A728 88 61 00 08 */ lbz r3, 8(r1) /* 8025EACC 0025A72C A0 BD 00 02 */ lhz r5, 2(r29) /* 8025EAD0 0025A730 7D 89 03 A6 */ mtctr r12 /* 8025EAD4 0025A734 4E 80 04 21 */ bctrl /* 8025EAD8 0025A738 48 00 00 24 */ b lbl_8025EAFC /* 8025EADC 0025A73C 81 9C 0E FC */ lwz r12, 0xefc(r28) /* 8025EAE0 0025A740 2C 0C 00 00 */ cmpwi r12, 0 /* 8025EAE4 0025A744 41 82 00 18 */ beq lbl_8025EAFC /* 8025EAE8 0025A748 38 9D 00 08 */ addi r4, r29, 8 /* 8025EAEC 0025A74C 88 61 00 08 */ lbz r3, 8(r1) /* 8025EAF0 0025A750 A0 BD 00 02 */ lhz r5, 2(r29) /* 8025EAF4 0025A754 7D 89 03 A6 */ mtctr r12 /* 8025EAF8 0025A758 4E 80 04 21 */ bctrl lbl_8025EAFC: /* 8025EAFC 0025A75C 7F 83 E3 78 */ mr r3, r28 /* 8025EB00 0025A760 48 00 04 05 */ bl func_8025EF04 lbl_8025EB04: /* 8025EB04 0025A764 7F 83 E3 78 */ mr r3, r28 /* 8025EB08 0025A768 38 81 00 08 */ addi r4, r1, 8 /* 8025EB0C 0025A76C 48 00 03 61 */ bl func_8025EE6C /* 8025EB10 0025A770 2C 03 00 00 */ cmpwi r3, 0 /* 8025EB14 0025A774 7C 7D 1B 78 */ mr r29, r3 /* 8025EB18 0025A778 40 82 FE B4 */ bne lbl_8025E9CC /* 8025EB1C 0025A77C 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 8025EB20 0025A780 38 60 00 00 */ li r3, 0 /* 8025EB24 0025A784 83 C1 00 18 */ lwz r30, 0x18(r1) /* 8025EB28 0025A788 83 A1 00 14 */ lwz r29, 0x14(r1) /* 8025EB2C 0025A78C 83 81 00 10 */ lwz r28, 0x10(r1) /* 8025EB30 0025A790 80 01 00 24 */ lwz r0, 0x24(r1) /* 8025EB34 0025A794 7C 08 03 A6 */ mtlr r0 /* 8025EB38 0025A798 38 21 00 20 */ addi r1, r1, 0x20 /* 8025EB3C 0025A79C 4E 80 00 20 */ blr .global func_8025EB40 func_8025EB40: /* 8025EB40 0025A7A0 90 83 0E E8 */ stw r4, 0xee8(r3) /* 8025EB44 0025A7A4 4E 80 00 20 */ blr .global func_8025EB48 func_8025EB48: /* 8025EB48 0025A7A8 90 83 0E E4 */ stw r4, 0xee4(r3) /* 8025EB4C 0025A7AC 4E 80 00 20 */ blr .global func_8025EB50 func_8025EB50: /* 8025EB50 0025A7B0 90 83 0E F0 */ stw r4, 0xef0(r3) /* 8025EB54 0025A7B4 4E 80 00 20 */ blr .global func_8025EB58 func_8025EB58: /* 8025EB58 0025A7B8 90 83 0E EC */ stw r4, 0xeec(r3) /* 8025EB5C 0025A7BC 4E 80 00 20 */ blr .global func_8025EB60 func_8025EB60: /* 8025EB60 0025A7C0 90 83 0E F4 */ stw r4, 0xef4(r3) /* 8025EB64 0025A7C4 4E 80 00 20 */ blr .global func_8025EB68 func_8025EB68: /* 8025EB68 0025A7C8 90 83 0E F8 */ stw r4, 0xef8(r3) /* 8025EB6C 0025A7CC 4E 80 00 20 */ blr .global func_8025EB70 func_8025EB70: /* 8025EB70 0025A7D0 90 83 0E FC */ stw r4, 0xefc(r3) /* 8025EB74 0025A7D4 4E 80 00 20 */ blr .global func_8025EB78 func_8025EB78: /* 8025EB78 0025A7D8 28 06 00 10 */ cmplwi r6, 0x10 /* 8025EB7C 0025A7DC 7C C8 33 78 */ mr r8, r6 /* 8025EB80 0025A7E0 40 81 00 0C */ ble lbl_8025EB8C /* 8025EB84 0025A7E4 38 60 FF FF */ li r3, -1 /* 8025EB88 0025A7E8 4E 80 00 20 */ blr lbl_8025EB8C: /* 8025EB8C 0025A7EC 7C 86 23 78 */ mr r6, r4 /* 8025EB90 0025A7F0 7C A7 2B 78 */ mr r7, r5 /* 8025EB94 0025A7F4 38 80 00 0F */ li r4, 0xf /* 8025EB98 0025A7F8 38 A0 00 10 */ li r5, 0x10 /* 8025EB9C 0025A7FC 48 00 00 08 */ b lbl_8025EBA4 /* 8025EBA0 0025A800 4E 80 00 20 */ blr lbl_8025EBA4: /* 8025EBA4 0025A804 94 21 FF D0 */ stwu r1, -0x30(r1) /* 8025EBA8 0025A808 7C 08 02 A6 */ mflr r0 /* 8025EBAC 0025A80C 90 01 00 34 */ stw r0, 0x34(r1) /* 8025EBB0 0025A810 39 61 00 30 */ addi r11, r1, 0x30 /* 8025EBB4 0025A814 4B F6 85 6D */ bl _savegpr_25 /* 8025EBB8 0025A818 7C 79 1B 78 */ mr r25, r3 /* 8025EBBC 0025A81C 7C 9A 23 78 */ mr r26, r4 /* 8025EBC0 0025A820 7C BB 2B 78 */ mr r27, r5 /* 8025EBC4 0025A824 7C DC 33 78 */ mr r28, r6 /* 8025EBC8 0025A828 7C FD 3B 78 */ mr r29, r7 /* 8025EBCC 0025A82C 7D 1E 43 78 */ mr r30, r8 /* 8025EBD0 0025A830 38 68 00 40 */ addi r3, r8, 0x40 /* 8025EBD4 0025A834 4B FF F8 A1 */ bl func_8025E474 /* 8025EBD8 0025A838 2C 03 00 00 */ cmpwi r3, 0 /* 8025EBDC 0025A83C 7C 7F 1B 78 */ mr r31, r3 /* 8025EBE0 0025A840 40 82 00 0C */ bne lbl_8025EBEC /* 8025EBE4 0025A844 38 60 00 00 */ li r3, 0 /* 8025EBE8 0025A848 48 00 00 48 */ b lbl_8025EC30 lbl_8025EBEC: /* 8025EBEC 0025A84C B3 43 00 00 */ sth r26, 0(r3) /* 8025EBF0 0025A850 38 00 00 00 */ li r0, 0 /* 8025EBF4 0025A854 7F A4 EB 78 */ mr r4, r29 /* 8025EBF8 0025A858 7F C5 F3 78 */ mr r5, r30 /* 8025EBFC 0025A85C B3 63 00 02 */ sth r27, 2(r3) /* 8025EC00 0025A860 B0 03 00 04 */ sth r0, 4(r3) /* 8025EC04 0025A864 B3 C3 00 06 */ sth r30, 6(r3) /* 8025EC08 0025A868 38 63 00 08 */ addi r3, r3, 8 /* 8025EC0C 0025A86C 4B DA 53 F5 */ bl memcpy /* 8025EC10 0025A870 81 99 00 00 */ lwz r12, 0(r25) /* 8025EC14 0025A874 7F 23 CB 78 */ mr r3, r25 /* 8025EC18 0025A878 7F E4 FB 78 */ mr r4, r31 /* 8025EC1C 0025A87C 7F 86 E3 78 */ mr r6, r28 /* 8025EC20 0025A880 81 8C 00 5C */ lwz r12, 0x5c(r12) /* 8025EC24 0025A884 A0 BF 00 02 */ lhz r5, 2(r31) /* 8025EC28 0025A888 7D 89 03 A6 */ mtctr r12 /* 8025EC2C 0025A88C 4E 80 04 21 */ bctrl lbl_8025EC30: /* 8025EC30 0025A890 39 61 00 30 */ addi r11, r1, 0x30 /* 8025EC34 0025A894 4B F6 85 39 */ bl _restgpr_25 /* 8025EC38 0025A898 80 01 00 34 */ lwz r0, 0x34(r1) /* 8025EC3C 0025A89C 7C 08 03 A6 */ mtlr r0 /* 8025EC40 0025A8A0 38 21 00 30 */ addi r1, r1, 0x30 /* 8025EC44 0025A8A4 4E 80 00 20 */ blr .global func_8025EC48 func_8025EC48: /* 8025EC48 0025A8A8 38 A0 00 01 */ li r5, 1 /* 8025EC4C 0025A8AC 38 6D A6 F8 */ addi r3, r13, lbl_8063F9B8-_SDA_BASE_ /* 8025EC50 0025A8B0 38 80 00 04 */ li r4, 4 /* 8025EC54 0025A8B4 38 00 00 00 */ li r0, 0 /* 8025EC58 0025A8B8 98 AD A6 F8 */ stb r5, lbl_8063F9B8-_SDA_BASE_(r13) /* 8025EC5C 0025A8BC B0 83 00 02 */ sth r4, 2(r3) /* 8025EC60 0025A8C0 98 03 00 04 */ stb r0, 4(r3) /* 8025EC64 0025A8C4 4E 80 00 20 */ blr