prime/asm/MetroidPrime/Factories/CStateMachineFactory.s

292 lines
14 KiB
ArmAsm
Raw Normal View History

.include "macros.inc"
.section .data
.balign 8
.global lbl_803DF700
lbl_803DF700:
# ROM: 0x3DC700
.4byte 0
.4byte 0
.4byte sub_800de904
.4byte 0
.section .text, "ax"
.global FAiFiniteStateMachineFactory__FRC10SObjectTagR12CInputStreamRC15CVParamTransfer
FAiFiniteStateMachineFactory__FRC10SObjectTagR12CInputStreamRC15CVParamTransfer:
/* 800DE7FC 000DB75C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 800DE800 000DB760 7C 08 02 A6 */ mflr r0
/* 800DE804 000DB764 3C 80 80 3D */ lis r4, lbl_803CE528@ha
/* 800DE808 000DB768 90 01 00 14 */ stw r0, 0x14(r1)
/* 800DE80C 000DB76C 38 84 E5 28 */ addi r4, r4, lbl_803CE528@l
/* 800DE810 000DB770 93 E1 00 0C */ stw r31, 0xc(r1)
/* 800DE814 000DB774 7C BF 2B 78 */ mr r31, r5
/* 800DE818 000DB778 38 A0 00 00 */ li r5, 0
/* 800DE81C 000DB77C 93 C1 00 08 */ stw r30, 8(r1)
/* 800DE820 000DB780 7C 7E 1B 78 */ mr r30, r3
/* 800DE824 000DB784 38 60 00 20 */ li r3, 0x20
/* 800DE828 000DB788 48 23 70 45 */ bl __nw__FUlPCcPCc
/* 800DE82C 000DB78C 7C 64 1B 79 */ or. r4, r3, r3
/* 800DE830 000DB790 41 82 00 10 */ beq lbl_800DE840
/* 800DE834 000DB794 7F E4 FB 78 */ mr r4, r31
/* 800DE838 000DB798 4B FA 0E 3D */ bl __ct__13CStateMachineFR12CInputStream
/* 800DE83C 000DB79C 7C 64 1B 78 */ mr r4, r3
lbl_800DE840:
/* 800DE840 000DB7A0 7F C3 F3 78 */ mr r3, r30
/* 800DE844 000DB7A4 48 00 00 1D */ bl "__ct<13CStateMachine>__16CFactoryFnReturnFP13CStateMachine"
/* 800DE848 000DB7A8 80 01 00 14 */ lwz r0, 0x14(r1)
/* 800DE84C 000DB7AC 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 800DE850 000DB7B0 83 C1 00 08 */ lwz r30, 8(r1)
/* 800DE854 000DB7B4 7C 08 03 A6 */ mtlr r0
/* 800DE858 000DB7B8 38 21 00 10 */ addi r1, r1, 0x10
/* 800DE85C 000DB7BC 4E 80 00 20 */ blr
.global "__ct<13CStateMachine>__16CFactoryFnReturnFP13CStateMachine"
"__ct<13CStateMachine>__16CFactoryFnReturnFP13CStateMachine":
/* 800DE860 000DB7C0 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 800DE864 000DB7C4 7C 08 02 A6 */ mflr r0
/* 800DE868 000DB7C8 90 01 00 24 */ stw r0, 0x24(r1)
/* 800DE86C 000DB7CC 7C 04 00 D0 */ neg r0, r4
/* 800DE870 000DB7D0 7C 00 23 78 */ or r0, r0, r4
/* 800DE874 000DB7D4 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 800DE878 000DB7D8 54 00 0F FE */ srwi r0, r0, 0x1f
/* 800DE87C 000DB7DC 7C 7F 1B 78 */ mr r31, r3
/* 800DE880 000DB7E0 38 61 00 08 */ addi r3, r1, 8
/* 800DE884 000DB7E4 90 81 00 14 */ stw r4, 0x14(r1)
/* 800DE888 000DB7E8 38 81 00 10 */ addi r4, r1, 0x10
/* 800DE88C 000DB7EC 98 01 00 10 */ stb r0, 0x10(r1)
/* 800DE890 000DB7F0 48 00 01 E1 */ bl "GetIObjObjectFor__23TToken<13CStateMachine>FRCQ24rstl25auto_ptr<13CStateMachine>"
/* 800DE894 000DB7F4 80 61 00 0C */ lwz r3, 0xc(r1)
/* 800DE898 000DB7F8 38 00 00 00 */ li r0, 0
/* 800DE89C 000DB7FC 98 01 00 08 */ stb r0, 8(r1)
/* 800DE8A0 000DB800 7C 03 00 D0 */ neg r0, r3
/* 800DE8A4 000DB804 7C 00 1B 78 */ or r0, r0, r3
/* 800DE8A8 000DB808 54 00 0F FE */ srwi r0, r0, 0x1f
/* 800DE8AC 000DB80C 98 1F 00 00 */ stb r0, 0(r31)
/* 800DE8B0 000DB810 90 7F 00 04 */ stw r3, 4(r31)
/* 800DE8B4 000DB814 88 01 00 08 */ lbz r0, 8(r1)
/* 800DE8B8 000DB818 28 00 00 00 */ cmplwi r0, 0
/* 800DE8BC 000DB81C 41 82 00 24 */ beq lbl_800DE8E0
/* 800DE8C0 000DB820 80 61 00 0C */ lwz r3, 0xc(r1)
/* 800DE8C4 000DB824 28 03 00 00 */ cmplwi r3, 0
/* 800DE8C8 000DB828 41 82 00 18 */ beq lbl_800DE8E0
/* 800DE8CC 000DB82C 81 83 00 00 */ lwz r12, 0(r3)
/* 800DE8D0 000DB830 38 80 00 01 */ li r4, 1
/* 800DE8D4 000DB834 81 8C 00 08 */ lwz r12, 8(r12)
/* 800DE8D8 000DB838 7D 89 03 A6 */ mtctr r12
/* 800DE8DC 000DB83C 4E 80 04 21 */ bctrl
lbl_800DE8E0:
/* 800DE8E0 000DB840 38 61 00 10 */ addi r3, r1, 0x10
/* 800DE8E4 000DB844 38 80 FF FF */ li r4, -1
/* 800DE8E8 000DB848 48 00 02 51 */ bl "__dt__Q24rstl53auto_ptr<41TObjOwnerDerivedFromIObj<13CStateMachine>>Fv"
/* 800DE8EC 000DB84C 80 01 00 24 */ lwz r0, 0x24(r1)
/* 800DE8F0 000DB850 7F E3 FB 78 */ mr r3, r31
/* 800DE8F4 000DB854 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 800DE8F8 000DB858 7C 08 03 A6 */ mtlr r0
/* 800DE8FC 000DB85C 38 21 00 20 */ addi r1, r1, 0x20
/* 800DE900 000DB860 4E 80 00 20 */ blr
.global sub_800de904
sub_800de904:
/* 800DE904 000DB864 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 800DE908 000DB868 7C 08 02 A6 */ mflr r0
/* 800DE90C 000DB86C 90 01 00 14 */ stw r0, 0x14(r1)
/* 800DE910 000DB870 93 E1 00 0C */ stw r31, 0xc(r1)
/* 800DE914 000DB874 7C 9F 23 78 */ mr r31, r4
/* 800DE918 000DB878 93 C1 00 08 */ stw r30, 8(r1)
/* 800DE91C 000DB87C 7C 7E 1B 79 */ or. r30, r3, r3
/* 800DE920 000DB880 41 82 00 58 */ beq lbl_800DE978
/* 800DE924 000DB884 3C 60 80 3E */ lis r3, lbl_803DF700@ha
/* 800DE928 000DB888 38 03 F7 00 */ addi r0, r3, lbl_803DF700@l
/* 800DE92C 000DB88C 90 1E 00 00 */ stw r0, 0(r30)
/* 800DE930 000DB890 80 7E 00 04 */ lwz r3, 4(r30)
/* 800DE934 000DB894 28 03 00 00 */ cmplwi r3, 0
/* 800DE938 000DB898 41 82 00 0C */ beq lbl_800DE944
/* 800DE93C 000DB89C 38 80 00 01 */ li r4, 1
/* 800DE940 000DB8A0 48 00 00 55 */ bl sub_800de994
lbl_800DE944:
/* 800DE944 000DB8A4 28 1E 00 00 */ cmplwi r30, 0
/* 800DE948 000DB8A8 41 82 00 20 */ beq lbl_800DE968
/* 800DE94C 000DB8AC 3C 60 80 3E */ lis r3, __vt__31CObjOwnerDerivedFromIObjUntyped@ha
/* 800DE950 000DB8B0 38 03 8D 78 */ addi r0, r3, __vt__31CObjOwnerDerivedFromIObjUntyped@l
/* 800DE954 000DB8B4 90 1E 00 00 */ stw r0, 0(r30)
/* 800DE958 000DB8B8 41 82 00 10 */ beq lbl_800DE968
/* 800DE95C 000DB8BC 3C 60 80 3E */ lis r3, __vt__4IObj@ha
/* 800DE960 000DB8C0 38 03 8D 6C */ addi r0, r3, __vt__4IObj@l
/* 800DE964 000DB8C4 90 1E 00 00 */ stw r0, 0(r30)
lbl_800DE968:
/* 800DE968 000DB8C8 7F E0 07 35 */ extsh. r0, r31
/* 800DE96C 000DB8CC 40 81 00 0C */ ble lbl_800DE978
/* 800DE970 000DB8D0 7F C3 F3 78 */ mr r3, r30
/* 800DE974 000DB8D4 48 23 6F BD */ bl Free__7CMemoryFPCv
lbl_800DE978:
/* 800DE978 000DB8D8 80 01 00 14 */ lwz r0, 0x14(r1)
/* 800DE97C 000DB8DC 7F C3 F3 78 */ mr r3, r30
/* 800DE980 000DB8E0 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 800DE984 000DB8E4 83 C1 00 08 */ lwz r30, 8(r1)
/* 800DE988 000DB8E8 7C 08 03 A6 */ mtlr r0
/* 800DE98C 000DB8EC 38 21 00 10 */ addi r1, r1, 0x10
/* 800DE990 000DB8F0 4E 80 00 20 */ blr
.global sub_800de994
sub_800de994:
/* 800DE994 000DB8F4 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 800DE998 000DB8F8 7C 08 02 A6 */ mflr r0
/* 800DE99C 000DB8FC 90 01 00 34 */ stw r0, 0x34(r1)
/* 800DE9A0 000DB900 93 E1 00 2C */ stw r31, 0x2c(r1)
/* 800DE9A4 000DB904 7C 9F 23 78 */ mr r31, r4
/* 800DE9A8 000DB908 93 C1 00 28 */ stw r30, 0x28(r1)
/* 800DE9AC 000DB90C 7C 7E 1B 79 */ or. r30, r3, r3
/* 800DE9B0 000DB910 41 82 00 A4 */ beq lbl_800DEA54
/* 800DE9B4 000DB914 34 1E 00 10 */ addic. r0, r30, 0x10
/* 800DE9B8 000DB918 41 82 00 44 */ beq lbl_800DE9FC
/* 800DE9BC 000DB91C 80 1E 00 14 */ lwz r0, 0x14(r30)
/* 800DE9C0 000DB920 80 7E 00 1C */ lwz r3, 0x1c(r30)
/* 800DE9C4 000DB924 1C 00 00 1C */ mulli r0, r0, 0x1c
/* 800DE9C8 000DB928 90 61 00 1C */ stw r3, 0x1c(r1)
/* 800DE9CC 000DB92C 7C 64 1B 78 */ mr r4, r3
/* 800DE9D0 000DB930 7C 03 02 14 */ add r0, r3, r0
/* 800DE9D4 000DB934 90 61 00 18 */ stw r3, 0x18(r1)
/* 800DE9D8 000DB938 90 01 00 24 */ stw r0, 0x24(r1)
/* 800DE9DC 000DB93C 90 01 00 20 */ stw r0, 0x20(r1)
/* 800DE9E0 000DB940 48 00 00 08 */ b lbl_800DE9E8
lbl_800DE9E4:
/* 800DE9E4 000DB944 38 84 00 1C */ addi r4, r4, 0x1c
lbl_800DE9E8:
/* 800DE9E8 000DB948 7C 04 00 40 */ cmplw r4, r0
/* 800DE9EC 000DB94C 40 82 FF F8 */ bne lbl_800DE9E4
/* 800DE9F0 000DB950 28 03 00 00 */ cmplwi r3, 0
/* 800DE9F4 000DB954 41 82 00 08 */ beq lbl_800DE9FC
/* 800DE9F8 000DB958 48 23 6F 39 */ bl Free__7CMemoryFPCv
lbl_800DE9FC:
/* 800DE9FC 000DB95C 28 1E 00 00 */ cmplwi r30, 0
/* 800DEA00 000DB960 41 82 00 44 */ beq lbl_800DEA44
/* 800DEA04 000DB964 80 1E 00 04 */ lwz r0, 4(r30)
/* 800DEA08 000DB968 80 7E 00 0C */ lwz r3, 0xc(r30)
/* 800DEA0C 000DB96C 1C 00 00 34 */ mulli r0, r0, 0x34
/* 800DEA10 000DB970 90 61 00 0C */ stw r3, 0xc(r1)
/* 800DEA14 000DB974 7C 64 1B 78 */ mr r4, r3
/* 800DEA18 000DB978 7C 03 02 14 */ add r0, r3, r0
/* 800DEA1C 000DB97C 90 61 00 08 */ stw r3, 8(r1)
/* 800DEA20 000DB980 90 01 00 14 */ stw r0, 0x14(r1)
/* 800DEA24 000DB984 90 01 00 10 */ stw r0, 0x10(r1)
/* 800DEA28 000DB988 48 00 00 08 */ b lbl_800DEA30
lbl_800DEA2C:
/* 800DEA2C 000DB98C 38 84 00 34 */ addi r4, r4, 0x34
lbl_800DEA30:
/* 800DEA30 000DB990 7C 04 00 40 */ cmplw r4, r0
/* 800DEA34 000DB994 40 82 FF F8 */ bne lbl_800DEA2C
/* 800DEA38 000DB998 28 03 00 00 */ cmplwi r3, 0
/* 800DEA3C 000DB99C 41 82 00 08 */ beq lbl_800DEA44
/* 800DEA40 000DB9A0 48 23 6E F1 */ bl Free__7CMemoryFPCv
lbl_800DEA44:
/* 800DEA44 000DB9A4 7F E0 07 35 */ extsh. r0, r31
/* 800DEA48 000DB9A8 40 81 00 0C */ ble lbl_800DEA54
/* 800DEA4C 000DB9AC 7F C3 F3 78 */ mr r3, r30
/* 800DEA50 000DB9B0 48 23 6E E1 */ bl Free__7CMemoryFPCv
lbl_800DEA54:
/* 800DEA54 000DB9B4 80 01 00 34 */ lwz r0, 0x34(r1)
/* 800DEA58 000DB9B8 7F C3 F3 78 */ mr r3, r30
/* 800DEA5C 000DB9BC 83 E1 00 2C */ lwz r31, 0x2c(r1)
/* 800DEA60 000DB9C0 83 C1 00 28 */ lwz r30, 0x28(r1)
/* 800DEA64 000DB9C4 7C 08 03 A6 */ mtlr r0
/* 800DEA68 000DB9C8 38 21 00 30 */ addi r1, r1, 0x30
/* 800DEA6C 000DB9CC 4E 80 00 20 */ blr
.global "GetIObjObjectFor__23TToken<13CStateMachine>FRCQ24rstl25auto_ptr<13CStateMachine>"
"GetIObjObjectFor__23TToken<13CStateMachine>FRCQ24rstl25auto_ptr<13CStateMachine>":
/* 800DEA70 000DB9D0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 800DEA74 000DB9D4 7C 08 02 A6 */ mflr r0
/* 800DEA78 000DB9D8 90 01 00 14 */ stw r0, 0x14(r1)
/* 800DEA7C 000DB9DC 93 E1 00 0C */ stw r31, 0xc(r1)
/* 800DEA80 000DB9E0 7C 7F 1B 78 */ mr r31, r3
/* 800DEA84 000DB9E4 48 00 00 19 */ bl "GetNewDerivedObject__41TObjOwnerDerivedFromIObj<13CStateMachine>FRCQ24rstl25auto_ptr<13CStateMachine>"
/* 800DEA88 000DB9E8 80 01 00 14 */ lwz r0, 0x14(r1)
/* 800DEA8C 000DB9EC 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 800DEA90 000DB9F0 7C 08 03 A6 */ mtlr r0
/* 800DEA94 000DB9F4 38 21 00 10 */ addi r1, r1, 0x10
/* 800DEA98 000DB9F8 4E 80 00 20 */ blr
.global "GetNewDerivedObject__41TObjOwnerDerivedFromIObj<13CStateMachine>FRCQ24rstl25auto_ptr<13CStateMachine>"
"GetNewDerivedObject__41TObjOwnerDerivedFromIObj<13CStateMachine>FRCQ24rstl25auto_ptr<13CStateMachine>":
/* 800DEA9C 000DB9FC 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 800DEAA0 000DBA00 7C 08 02 A6 */ mflr r0
/* 800DEAA4 000DBA04 3C A0 80 3D */ lis r5, lbl_803CE528@ha
/* 800DEAA8 000DBA08 90 01 00 14 */ stw r0, 0x14(r1)
/* 800DEAAC 000DBA0C 38 05 E5 28 */ addi r0, r5, lbl_803CE528@l
/* 800DEAB0 000DBA10 38 A0 00 00 */ li r5, 0
/* 800DEAB4 000DBA14 93 E1 00 0C */ stw r31, 0xc(r1)
/* 800DEAB8 000DBA18 7C 9F 23 78 */ mr r31, r4
/* 800DEABC 000DBA1C 7C 04 03 78 */ mr r4, r0
/* 800DEAC0 000DBA20 93 C1 00 08 */ stw r30, 8(r1)
/* 800DEAC4 000DBA24 7C 7E 1B 78 */ mr r30, r3
/* 800DEAC8 000DBA28 38 60 00 08 */ li r3, 8
/* 800DEACC 000DBA2C 48 23 6D A1 */ bl __nw__FUlPCcPCc
/* 800DEAD0 000DBA30 28 03 00 00 */ cmplwi r3, 0
/* 800DEAD4 000DBA34 41 82 00 38 */ beq lbl_800DEB0C
/* 800DEAD8 000DBA38 3C 80 80 3E */ lis r4, __vt__4IObj@ha
/* 800DEADC 000DBA3C 3C A0 80 3E */ lis r5, __vt__31CObjOwnerDerivedFromIObjUntyped@ha
/* 800DEAE0 000DBA40 38 04 8D 6C */ addi r0, r4, __vt__4IObj@l
/* 800DEAE4 000DBA44 3C 80 80 3E */ lis r4, lbl_803DF700@ha
/* 800DEAE8 000DBA48 90 03 00 00 */ stw r0, 0(r3)
/* 800DEAEC 000DBA4C 38 C5 8D 78 */ addi r6, r5, __vt__31CObjOwnerDerivedFromIObjUntyped@l
/* 800DEAF0 000DBA50 38 A0 00 00 */ li r5, 0
/* 800DEAF4 000DBA54 38 04 F7 00 */ addi r0, r4, lbl_803DF700@l
/* 800DEAF8 000DBA58 90 C3 00 00 */ stw r6, 0(r3)
/* 800DEAFC 000DBA5C 98 BF 00 00 */ stb r5, 0(r31)
/* 800DEB00 000DBA60 80 9F 00 04 */ lwz r4, 4(r31)
/* 800DEB04 000DBA64 90 83 00 04 */ stw r4, 4(r3)
/* 800DEB08 000DBA68 90 03 00 00 */ stw r0, 0(r3)
lbl_800DEB0C:
/* 800DEB0C 000DBA6C 7C 03 00 D0 */ neg r0, r3
/* 800DEB10 000DBA70 7C 00 1B 78 */ or r0, r0, r3
/* 800DEB14 000DBA74 54 00 0F FE */ srwi r0, r0, 0x1f
/* 800DEB18 000DBA78 98 1E 00 00 */ stb r0, 0(r30)
/* 800DEB1C 000DBA7C 90 7E 00 04 */ stw r3, 4(r30)
/* 800DEB20 000DBA80 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 800DEB24 000DBA84 83 C1 00 08 */ lwz r30, 8(r1)
/* 800DEB28 000DBA88 80 01 00 14 */ lwz r0, 0x14(r1)
/* 800DEB2C 000DBA8C 7C 08 03 A6 */ mtlr r0
/* 800DEB30 000DBA90 38 21 00 10 */ addi r1, r1, 0x10
/* 800DEB34 000DBA94 4E 80 00 20 */ blr
.global "__dt__Q24rstl53auto_ptr<41TObjOwnerDerivedFromIObj<13CStateMachine>>Fv"
"__dt__Q24rstl53auto_ptr<41TObjOwnerDerivedFromIObj<13CStateMachine>>Fv":
/* 800DEB38 000DBA98 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 800DEB3C 000DBA9C 7C 08 02 A6 */ mflr r0
/* 800DEB40 000DBAA0 90 01 00 14 */ stw r0, 0x14(r1)
/* 800DEB44 000DBAA4 93 E1 00 0C */ stw r31, 0xc(r1)
/* 800DEB48 000DBAA8 7C 9F 23 78 */ mr r31, r4
/* 800DEB4C 000DBAAC 93 C1 00 08 */ stw r30, 8(r1)
/* 800DEB50 000DBAB0 7C 7E 1B 79 */ or. r30, r3, r3
/* 800DEB54 000DBAB4 41 82 00 2C */ beq lbl_800DEB80
/* 800DEB58 000DBAB8 88 1E 00 00 */ lbz r0, 0(r30)
/* 800DEB5C 000DBABC 28 00 00 00 */ cmplwi r0, 0
/* 800DEB60 000DBAC0 41 82 00 10 */ beq lbl_800DEB70
/* 800DEB64 000DBAC4 80 7E 00 04 */ lwz r3, 4(r30)
/* 800DEB68 000DBAC8 38 80 00 01 */ li r4, 1
/* 800DEB6C 000DBACC 4B FF FE 29 */ bl sub_800de994
lbl_800DEB70:
/* 800DEB70 000DBAD0 7F E0 07 35 */ extsh. r0, r31
/* 800DEB74 000DBAD4 40 81 00 0C */ ble lbl_800DEB80
/* 800DEB78 000DBAD8 7F C3 F3 78 */ mr r3, r30
/* 800DEB7C 000DBADC 48 23 6D B5 */ bl Free__7CMemoryFPCv
lbl_800DEB80:
/* 800DEB80 000DBAE0 80 01 00 14 */ lwz r0, 0x14(r1)
/* 800DEB84 000DBAE4 7F C3 F3 78 */ mr r3, r30
/* 800DEB88 000DBAE8 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 800DEB8C 000DBAEC 83 C1 00 08 */ lwz r30, 8(r1)
/* 800DEB90 000DBAF0 7C 08 03 A6 */ mtlr r0
/* 800DEB94 000DBAF4 38 21 00 10 */ addi r1, r1, 0x10
/* 800DEB98 000DBAF8 4E 80 00 20 */ blr
.section .rodata
.balign 8
.global lbl_803CE528
lbl_803CE528:
# ROM: 0x3CB528
.asciz "??(??)"
.balign 4