mirror of https://github.com/PrimeDecomp/prime.git
163 lines
7.3 KiB
ArmAsm
163 lines
7.3 KiB
ArmAsm
.include "macros.inc"
|
|
|
|
.section .text, "ax"
|
|
|
|
.global __destroy_arr
|
|
__destroy_arr:
|
|
/* 803896D4 00386634 94 21 FF E0 */ stwu r1, -0x20(r1)
|
|
/* 803896D8 00386638 7C 08 02 A6 */ mflr r0
|
|
/* 803896DC 0038663C 90 01 00 24 */ stw r0, 0x24(r1)
|
|
/* 803896E0 00386640 93 E1 00 1C */ stw r31, 0x1c(r1)
|
|
/* 803896E4 00386644 93 C1 00 18 */ stw r30, 0x18(r1)
|
|
/* 803896E8 00386648 7C DE 33 78 */ mr r30, r6
|
|
/* 803896EC 0038664C 93 A1 00 14 */ stw r29, 0x14(r1)
|
|
/* 803896F0 00386650 7C BD 2B 78 */ mr r29, r5
|
|
/* 803896F4 00386654 7C 1D F1 D6 */ mullw r0, r29, r30
|
|
/* 803896F8 00386658 93 81 00 10 */ stw r28, 0x10(r1)
|
|
/* 803896FC 0038665C 7C 9C 23 78 */ mr r28, r4
|
|
/* 80389700 00386660 7F E3 02 14 */ add r31, r3, r0
|
|
/* 80389704 00386664 48 00 00 20 */ b lbl_80389724
|
|
lbl_80389708:
|
|
/* 80389708 00386668 7F FD F8 50 */ subf r31, r29, r31
|
|
/* 8038970C 0038666C 7F 8C E3 78 */ mr r12, r28
|
|
/* 80389710 00386670 7F E3 FB 78 */ mr r3, r31
|
|
/* 80389714 00386674 38 80 FF FF */ li r4, -1
|
|
/* 80389718 00386678 7D 89 03 A6 */ mtctr r12
|
|
/* 8038971C 0038667C 4E 80 04 21 */ bctrl
|
|
/* 80389720 00386680 3B DE FF FF */ addi r30, r30, -1
|
|
lbl_80389724:
|
|
/* 80389724 00386684 28 1E 00 00 */ cmplwi r30, 0
|
|
/* 80389728 00386688 40 82 FF E0 */ bne lbl_80389708
|
|
/* 8038972C 0038668C 80 01 00 24 */ lwz r0, 0x24(r1)
|
|
/* 80389730 00386690 83 E1 00 1C */ lwz r31, 0x1c(r1)
|
|
/* 80389734 00386694 83 C1 00 18 */ lwz r30, 0x18(r1)
|
|
/* 80389738 00386698 83 A1 00 14 */ lwz r29, 0x14(r1)
|
|
/* 8038973C 0038669C 83 81 00 10 */ lwz r28, 0x10(r1)
|
|
/* 80389740 003866A0 7C 08 03 A6 */ mtlr r0
|
|
/* 80389744 003866A4 38 21 00 20 */ addi r1, r1, 0x20
|
|
/* 80389748 003866A8 4E 80 00 20 */ blr
|
|
|
|
|
|
.global __construct_array
|
|
__construct_array:
|
|
/* 8038974C 003866AC 94 21 FF D0 */ stwu r1, -0x30(r1)
|
|
/* 80389750 003866B0 7C 08 02 A6 */ mflr r0
|
|
/* 80389754 003866B4 90 01 00 34 */ stw r0, 0x34(r1)
|
|
/* 80389758 003866B8 38 00 00 00 */ li r0, 0
|
|
/* 8038975C 003866BC 93 E1 00 2C */ stw r31, 0x2c(r1)
|
|
/* 80389760 003866C0 7C FF 3B 78 */ mr r31, r7
|
|
/* 80389764 003866C4 93 C1 00 28 */ stw r30, 0x28(r1)
|
|
/* 80389768 003866C8 7C 7E 1B 78 */ mr r30, r3
|
|
/* 8038976C 003866CC 93 A1 00 24 */ stw r29, 0x24(r1)
|
|
/* 80389770 003866D0 7C DD 33 78 */ mr r29, r6
|
|
/* 80389774 003866D4 93 E1 00 18 */ stw r31, 0x18(r1)
|
|
/* 80389778 003866D8 93 81 00 20 */ stw r28, 0x20(r1)
|
|
/* 8038977C 003866DC 7C 9C 23 78 */ mr r28, r4
|
|
/* 80389780 003866E0 90 61 00 08 */ stw r3, 8(r1)
|
|
/* 80389784 003866E4 93 A1 00 0C */ stw r29, 0xc(r1)
|
|
/* 80389788 003866E8 93 E1 00 10 */ stw r31, 0x10(r1)
|
|
/* 8038978C 003866EC 90 A1 00 14 */ stw r5, 0x14(r1)
|
|
/* 80389790 003866F0 90 01 00 18 */ stw r0, 0x18(r1)
|
|
/* 80389794 003866F4 48 00 00 28 */ b lbl_803897BC
|
|
lbl_80389798:
|
|
/* 80389798 003866F8 7F 8C E3 78 */ mr r12, r28
|
|
/* 8038979C 003866FC 7F C3 F3 78 */ mr r3, r30
|
|
/* 803897A0 00386700 38 80 00 01 */ li r4, 1
|
|
/* 803897A4 00386704 7D 89 03 A6 */ mtctr r12
|
|
/* 803897A8 00386708 4E 80 04 21 */ bctrl
|
|
/* 803897AC 0038670C 80 61 00 18 */ lwz r3, 0x18(r1)
|
|
/* 803897B0 00386710 7F DE EA 14 */ add r30, r30, r29
|
|
/* 803897B4 00386714 38 03 00 01 */ addi r0, r3, 1
|
|
/* 803897B8 00386718 90 01 00 18 */ stw r0, 0x18(r1)
|
|
lbl_803897BC:
|
|
/* 803897BC 0038671C 80 81 00 18 */ lwz r4, 0x18(r1)
|
|
/* 803897C0 00386720 7C 04 F8 40 */ cmplw r4, r31
|
|
/* 803897C4 00386724 41 80 FF D4 */ blt lbl_80389798
|
|
/* 803897C8 00386728 80 01 00 10 */ lwz r0, 0x10(r1)
|
|
/* 803897CC 0038672C 7C 04 00 40 */ cmplw r4, r0
|
|
/* 803897D0 00386730 40 80 00 54 */ bge lbl_80389824
|
|
/* 803897D4 00386734 80 01 00 14 */ lwz r0, 0x14(r1)
|
|
/* 803897D8 00386738 28 00 00 00 */ cmplwi r0, 0
|
|
/* 803897DC 0038673C 41 82 00 48 */ beq lbl_80389824
|
|
/* 803897E0 00386740 83 E1 00 0C */ lwz r31, 0xc(r1)
|
|
/* 803897E4 00386744 80 61 00 08 */ lwz r3, 8(r1)
|
|
/* 803897E8 00386748 7C 1F 21 D6 */ mullw r0, r31, r4
|
|
/* 803897EC 0038674C 7F C3 02 14 */ add r30, r3, r0
|
|
/* 803897F0 00386750 48 00 00 28 */ b lbl_80389818
|
|
lbl_803897F4:
|
|
/* 803897F4 00386754 81 81 00 14 */ lwz r12, 0x14(r1)
|
|
/* 803897F8 00386758 7F DF F0 50 */ subf r30, r31, r30
|
|
/* 803897FC 0038675C 7F C3 F3 78 */ mr r3, r30
|
|
/* 80389800 00386760 38 80 FF FF */ li r4, -1
|
|
/* 80389804 00386764 7D 89 03 A6 */ mtctr r12
|
|
/* 80389808 00386768 4E 80 04 21 */ bctrl
|
|
/* 8038980C 0038676C 80 61 00 18 */ lwz r3, 0x18(r1)
|
|
/* 80389810 00386770 38 03 FF FF */ addi r0, r3, -1
|
|
/* 80389814 00386774 90 01 00 18 */ stw r0, 0x18(r1)
|
|
lbl_80389818:
|
|
/* 80389818 00386778 80 01 00 18 */ lwz r0, 0x18(r1)
|
|
/* 8038981C 0038677C 28 00 00 00 */ cmplwi r0, 0
|
|
/* 80389820 00386780 40 82 FF D4 */ bne lbl_803897F4
|
|
lbl_80389824:
|
|
/* 80389824 00386784 80 01 00 34 */ lwz r0, 0x34(r1)
|
|
/* 80389828 00386788 83 E1 00 2C */ lwz r31, 0x2c(r1)
|
|
/* 8038982C 0038678C 83 C1 00 28 */ lwz r30, 0x28(r1)
|
|
/* 80389830 00386790 83 A1 00 24 */ lwz r29, 0x24(r1)
|
|
/* 80389834 00386794 83 81 00 20 */ lwz r28, 0x20(r1)
|
|
/* 80389838 00386798 7C 08 03 A6 */ mtlr r0
|
|
/* 8038983C 0038679C 38 21 00 30 */ addi r1, r1, 0x30
|
|
/* 80389840 003867A0 4E 80 00 20 */ blr
|
|
|
|
.global __partial_array_destructor
|
|
__partial_array_destructor:
|
|
/* 80389844 003867A4 94 21 FF E0 */ stwu r1, -0x20(r1)
|
|
/* 80389848 003867A8 7C 08 02 A6 */ mflr r0
|
|
/* 8038984C 003867AC 90 01 00 24 */ stw r0, 0x24(r1)
|
|
/* 80389850 003867B0 93 E1 00 1C */ stw r31, 0x1c(r1)
|
|
/* 80389854 003867B4 93 C1 00 18 */ stw r30, 0x18(r1)
|
|
/* 80389858 003867B8 7C 9E 23 78 */ mr r30, r4
|
|
/* 8038985C 003867BC 93 A1 00 14 */ stw r29, 0x14(r1)
|
|
/* 80389860 003867C0 7C 7D 1B 79 */ or. r29, r3, r3
|
|
/* 80389864 003867C4 41 82 00 78 */ beq lbl_803898DC
|
|
/* 80389868 003867C8 80 9D 00 10 */ lwz r4, 0x10(r29)
|
|
/* 8038986C 003867CC 80 1D 00 08 */ lwz r0, 8(r29)
|
|
/* 80389870 003867D0 7C 04 00 40 */ cmplw r4, r0
|
|
/* 80389874 003867D4 40 80 00 58 */ bge lbl_803898CC
|
|
/* 80389878 003867D8 80 1D 00 0C */ lwz r0, 0xc(r29)
|
|
/* 8038987C 003867DC 28 00 00 00 */ cmplwi r0, 0
|
|
/* 80389880 003867E0 41 82 00 4C */ beq lbl_803898CC
|
|
/* 80389884 003867E4 80 1D 00 04 */ lwz r0, 4(r29)
|
|
/* 80389888 003867E8 80 7D 00 00 */ lwz r3, 0(r29)
|
|
/* 8038988C 003867EC 7C 00 21 D6 */ mullw r0, r0, r4
|
|
/* 80389890 003867F0 7F E3 02 14 */ add r31, r3, r0
|
|
/* 80389894 003867F4 48 00 00 2C */ b lbl_803898C0
|
|
lbl_80389898:
|
|
/* 80389898 003867F8 80 1D 00 04 */ lwz r0, 4(r29)
|
|
/* 8038989C 003867FC 38 80 FF FF */ li r4, -1
|
|
/* 803898A0 00386800 81 9D 00 0C */ lwz r12, 0xc(r29)
|
|
/* 803898A4 00386804 7F E0 F8 50 */ subf r31, r0, r31
|
|
/* 803898A8 00386808 7F E3 FB 78 */ mr r3, r31
|
|
/* 803898AC 0038680C 7D 89 03 A6 */ mtctr r12
|
|
/* 803898B0 00386810 4E 80 04 21 */ bctrl
|
|
/* 803898B4 00386814 80 7D 00 10 */ lwz r3, 0x10(r29)
|
|
/* 803898B8 00386818 38 03 FF FF */ addi r0, r3, -1
|
|
/* 803898BC 0038681C 90 1D 00 10 */ stw r0, 0x10(r29)
|
|
lbl_803898C0:
|
|
/* 803898C0 00386820 80 1D 00 10 */ lwz r0, 0x10(r29)
|
|
/* 803898C4 00386824 28 00 00 00 */ cmplwi r0, 0
|
|
/* 803898C8 00386828 40 82 FF D0 */ bne lbl_80389898
|
|
lbl_803898CC:
|
|
/* 803898CC 0038682C 7F C0 07 35 */ extsh. r0, r30
|
|
/* 803898D0 00386830 40 81 00 0C */ ble lbl_803898DC
|
|
/* 803898D4 00386834 7F A3 EB 78 */ mr r3, r29
|
|
/* 803898D8 00386838 4B D3 8A 2D */ bl sub_800c2304
|
|
lbl_803898DC:
|
|
/* 803898DC 0038683C 80 01 00 24 */ lwz r0, 0x24(r1)
|
|
/* 803898E0 00386840 7F A3 EB 78 */ mr r3, r29
|
|
/* 803898E4 00386844 83 E1 00 1C */ lwz r31, 0x1c(r1)
|
|
/* 803898E8 00386848 83 C1 00 18 */ lwz r30, 0x18(r1)
|
|
/* 803898EC 0038684C 83 A1 00 14 */ lwz r29, 0x14(r1)
|
|
/* 803898F0 00386850 7C 08 03 A6 */ mtlr r0
|
|
/* 803898F4 00386854 38 21 00 20 */ addi r1, r1, 0x20
|
|
/* 803898F8 00386858 4E 80 00 20 */ blr
|