prime/asm/MetroidPrime/BodyState/CBSProjectileAttack.s

421 lines
21 KiB
ArmAsm
Raw Normal View History

.include "macros.inc"
.section .data
.global lbl_803E27D0
lbl_803E27D0:
# ROM: 0x3DF7D0
.4byte 0
.4byte 0
.4byte __dt__19CBSProjectileAttackFv
.4byte IsInAir__10CBodyStateCFRC15CBodyController
.4byte IsDead__10CBodyStateCFv
.4byte IsDying__10CBodyStateCFv
.4byte IsMoving__10CBodyStateCFv
.4byte ApplyGravity__10CBodyStateCFv
.4byte ApplyHeadTracking__10CBodyStateCFv
.4byte ApplyAnimationDeltas__10CBodyStateCFv
.4byte CanShoot__19CBSProjectileAttackCFv
.4byte Start__19CBSProjectileAttackFR15CBodyControllerR13CStateManager
.4byte UpdateBody__19CBSProjectileAttackFfR15CBodyControllerR13CStateManager
.4byte Shutdown__19CBSProjectileAttackFR15CBodyController
.section .text, "ax" # 0x80003640 - 0x803CB1C0
.global __dt__19CBSProjectileAttackFv
__dt__19CBSProjectileAttackFv:
/* 8014D3C4 0014A324 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8014D3C8 0014A328 7C 08 02 A6 */ mflr r0
/* 8014D3CC 0014A32C 90 01 00 14 */ stw r0, 0x14(r1)
/* 8014D3D0 0014A330 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8014D3D4 0014A334 7C 7F 1B 79 */ or. r31, r3, r3
/* 8014D3D8 0014A338 41 82 00 30 */ beq lbl_8014D408
/* 8014D3DC 0014A33C 3C 60 80 3E */ lis r3, lbl_803E27D0@ha
/* 8014D3E0 0014A340 38 03 27 D0 */ addi r0, r3, lbl_803E27D0@l
/* 8014D3E4 0014A344 90 1F 00 00 */ stw r0, 0(r31)
/* 8014D3E8 0014A348 41 82 00 10 */ beq lbl_8014D3F8
/* 8014D3EC 0014A34C 3C 60 80 3E */ lis r3, lbl_803E1318@ha
/* 8014D3F0 0014A350 38 03 13 18 */ addi r0, r3, lbl_803E1318@l
/* 8014D3F4 0014A354 90 1F 00 00 */ stw r0, 0(r31)
lbl_8014D3F8:
/* 8014D3F8 0014A358 7C 80 07 35 */ extsh. r0, r4
/* 8014D3FC 0014A35C 40 81 00 0C */ ble lbl_8014D408
/* 8014D400 0014A360 7F E3 FB 78 */ mr r3, r31
/* 8014D404 0014A364 48 1C 85 2D */ bl Free__7CMemoryFPCv
lbl_8014D408:
/* 8014D408 0014A368 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8014D40C 0014A36C 7F E3 FB 78 */ mr r3, r31
/* 8014D410 0014A370 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8014D414 0014A374 7C 08 03 A6 */ mtlr r0
/* 8014D418 0014A378 38 21 00 10 */ addi r1, r1, 0x10
/* 8014D41C 0014A37C 4E 80 00 20 */ blr
.global CanShoot__19CBSProjectileAttackCFv
CanShoot__19CBSProjectileAttackCFv:
/* 8014D420 0014A380 38 60 00 01 */ li r3, 1
/* 8014D424 0014A384 4E 80 00 20 */ blr
.global GetBodyStateTransition__19CBSProjectileAttackFfR15CBodyController
GetBodyStateTransition__19CBSProjectileAttackFfR15CBodyController:
/* 8014D428 0014A388 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8014D42C 0014A38C 7C 08 02 A6 */ mflr r0
/* 8014D430 0014A390 90 01 00 14 */ stw r0, 0x14(r1)
/* 8014D434 0014A394 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8014D438 0014A398 93 C1 00 08 */ stw r30, 8(r1)
/* 8014D43C 0014A39C 7C 9E 23 78 */ mr r30, r4
/* 8014D440 0014A3A0 3B FE 00 04 */ addi r31, r30, 4
/* 8014D444 0014A3A4 38 80 00 0F */ li r4, 0xf
/* 8014D448 0014A3A8 7F E3 FB 78 */ mr r3, r31
/* 8014D44C 0014A3AC 4B FE 40 05 */ bl GetCmd__16CBodyStateCmdMgrF13EBodyStateCmd
/* 8014D450 0014A3B0 28 03 00 00 */ cmplwi r3, 0
/* 8014D454 0014A3B4 41 82 00 0C */ beq lbl_8014D460
/* 8014D458 0014A3B8 38 60 00 0E */ li r3, 0xe
/* 8014D45C 0014A3BC 48 00 00 A0 */ b lbl_8014D4FC
lbl_8014D460:
/* 8014D460 0014A3C0 7F E3 FB 78 */ mr r3, r31
/* 8014D464 0014A3C4 38 80 00 03 */ li r4, 3
/* 8014D468 0014A3C8 4B FE 3F E9 */ bl GetCmd__16CBodyStateCmdMgrF13EBodyStateCmd
/* 8014D46C 0014A3CC 28 03 00 00 */ cmplwi r3, 0
/* 8014D470 0014A3D0 41 82 00 0C */ beq lbl_8014D47C
/* 8014D474 0014A3D4 38 60 00 00 */ li r3, 0
/* 8014D478 0014A3D8 48 00 00 84 */ b lbl_8014D4FC
lbl_8014D47C:
/* 8014D47C 0014A3DC 7F E3 FB 78 */ mr r3, r31
/* 8014D480 0014A3E0 38 80 00 09 */ li r4, 9
/* 8014D484 0014A3E4 4B FE 3F CD */ bl GetCmd__16CBodyStateCmdMgrF13EBodyStateCmd
/* 8014D488 0014A3E8 28 03 00 00 */ cmplwi r3, 0
/* 8014D48C 0014A3EC 41 82 00 0C */ beq lbl_8014D498
/* 8014D490 0014A3F0 38 60 00 0A */ li r3, 0xa
/* 8014D494 0014A3F4 48 00 00 68 */ b lbl_8014D4FC
lbl_8014D498:
/* 8014D498 0014A3F8 7F E3 FB 78 */ mr r3, r31
/* 8014D49C 0014A3FC 38 80 00 04 */ li r4, 4
/* 8014D4A0 0014A400 4B FE 3F B1 */ bl GetCmd__16CBodyStateCmdMgrF13EBodyStateCmd
/* 8014D4A4 0014A404 28 03 00 00 */ cmplwi r3, 0
/* 8014D4A8 0014A408 41 82 00 0C */ beq lbl_8014D4B4
/* 8014D4AC 0014A40C 38 60 00 06 */ li r3, 6
/* 8014D4B0 0014A410 48 00 00 4C */ b lbl_8014D4FC
lbl_8014D4B4:
/* 8014D4B4 0014A414 7F E3 FB 78 */ mr r3, r31
/* 8014D4B8 0014A418 38 80 00 16 */ li r4, 0x16
/* 8014D4BC 0014A41C 4B FE 3F 95 */ bl GetCmd__16CBodyStateCmdMgrF13EBodyStateCmd
/* 8014D4C0 0014A420 28 03 00 00 */ cmplwi r3, 0
/* 8014D4C4 0014A424 41 82 00 0C */ beq lbl_8014D4D0
/* 8014D4C8 0014A428 38 60 00 05 */ li r3, 5
/* 8014D4CC 0014A42C 48 00 00 30 */ b lbl_8014D4FC
lbl_8014D4D0:
/* 8014D4D0 0014A430 88 1E 03 00 */ lbz r0, 0x300(r30)
/* 8014D4D4 0014A434 54 00 CF FF */ rlwinm. r0, r0, 0x19, 0x1f, 0x1f
/* 8014D4D8 0014A438 40 82 00 18 */ bne lbl_8014D4F0
/* 8014D4DC 0014A43C 7F E3 FB 78 */ mr r3, r31
/* 8014D4E0 0014A440 38 80 00 0C */ li r4, 0xc
/* 8014D4E4 0014A444 4B FE 3F 6D */ bl GetCmd__16CBodyStateCmdMgrF13EBodyStateCmd
/* 8014D4E8 0014A448 28 03 00 00 */ cmplwi r3, 0
/* 8014D4EC 0014A44C 41 82 00 0C */ beq lbl_8014D4F8
lbl_8014D4F0:
/* 8014D4F0 0014A450 38 60 00 05 */ li r3, 5
/* 8014D4F4 0014A454 48 00 00 08 */ b lbl_8014D4FC
lbl_8014D4F8:
/* 8014D4F8 0014A458 38 60 FF FF */ li r3, -1
lbl_8014D4FC:
/* 8014D4FC 0014A45C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8014D500 0014A460 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8014D504 0014A464 83 C1 00 08 */ lwz r30, 8(r1)
/* 8014D508 0014A468 7C 08 03 A6 */ mtlr r0
/* 8014D50C 0014A46C 38 21 00 10 */ addi r1, r1, 0x10
/* 8014D510 0014A470 4E 80 00 20 */ blr
.global Shutdown__19CBSProjectileAttackFR15CBodyController
Shutdown__19CBSProjectileAttackFR15CBodyController:
/* 8014D514 0014A474 4E 80 00 20 */ blr
.global UpdateBody__19CBSProjectileAttackFfR15CBodyControllerR13CStateManager
UpdateBody__19CBSProjectileAttackFfR15CBodyControllerR13CStateManager:
/* 8014D518 0014A478 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8014D51C 0014A47C 7C 08 02 A6 */ mflr r0
/* 8014D520 0014A480 90 01 00 24 */ stw r0, 0x24(r1)
/* 8014D524 0014A484 DB E1 00 10 */ stfd f31, 0x10(r1)
/* 8014D528 0014A488 F3 E1 00 18 */ psq_st f31, 24(r1), 0, qr0
/* 8014D52C 0014A48C 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8014D530 0014A490 93 C1 00 08 */ stw r30, 8(r1)
/* 8014D534 0014A494 FF E0 08 90 */ fmr f31, f1
/* 8014D538 0014A498 7C 9E 23 78 */ mr r30, r4
/* 8014D53C 0014A49C 4B FF FE ED */ bl GetBodyStateTransition__19CBSProjectileAttackFfR15CBodyController
/* 8014D540 0014A4A0 7C 7F 1B 78 */ mr r31, r3
/* 8014D544 0014A4A4 2C 1F FF FF */ cmpwi r31, -1
/* 8014D548 0014A4A8 40 82 00 50 */ bne lbl_8014D598
/* 8014D54C 0014A4AC 38 7E 00 1C */ addi r3, r30, 0x1c
/* 8014D550 0014A4B0 C0 22 9D 38 */ lfs f1, lbl_805ABA58@sda21(r2)
/* 8014D554 0014A4B4 C0 1E 00 1C */ lfs f0, 0x1c(r30)
/* 8014D558 0014A4B8 38 00 00 00 */ li r0, 0
/* 8014D55C 0014A4BC FC 01 00 00 */ fcmpu cr0, f1, f0
/* 8014D560 0014A4C0 40 82 00 1C */ bne lbl_8014D57C
/* 8014D564 0014A4C4 C0 03 00 04 */ lfs f0, 4(r3)
/* 8014D568 0014A4C8 FC 01 00 00 */ fcmpu cr0, f1, f0
/* 8014D56C 0014A4CC 40 82 00 10 */ bne lbl_8014D57C
/* 8014D570 0014A4D0 C0 03 00 08 */ lfs f0, 8(r3)
/* 8014D574 0014A4D4 FC 01 00 00 */ fcmpu cr0, f1, f0
/* 8014D578 0014A4D8 41 82 00 08 */ beq lbl_8014D580
lbl_8014D57C:
/* 8014D57C 0014A4DC 38 00 00 01 */ li r0, 1
lbl_8014D580:
/* 8014D580 0014A4E0 54 00 06 3F */ clrlwi. r0, r0, 0x18
/* 8014D584 0014A4E4 41 82 00 14 */ beq lbl_8014D598
/* 8014D588 0014A4E8 FC 20 F8 90 */ fmr f1, f31
/* 8014D58C 0014A4EC 7F C3 F3 78 */ mr r3, r30
/* 8014D590 0014A4F0 38 9E 00 1C */ addi r4, r30, 0x1c
/* 8014D594 0014A4F4 4B FE D1 11 */ bl FaceDirection__15CBodyControllerFRC9CVector3ff
lbl_8014D598:
/* 8014D598 0014A4F8 7F E3 FB 78 */ mr r3, r31
/* 8014D59C 0014A4FC E3 E1 00 18 */ psq_l f31, 24(r1), 0, qr0
/* 8014D5A0 0014A500 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8014D5A4 0014A504 CB E1 00 10 */ lfd f31, 0x10(r1)
/* 8014D5A8 0014A508 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8014D5AC 0014A50C 83 C1 00 08 */ lwz r30, 8(r1)
/* 8014D5B0 0014A510 7C 08 03 A6 */ mtlr r0
/* 8014D5B4 0014A514 38 21 00 20 */ addi r1, r1, 0x20
/* 8014D5B8 0014A518 4E 80 00 20 */ blr
.global Start__19CBSProjectileAttackFR15CBodyControllerR13CStateManager
Start__19CBSProjectileAttackFR15CBodyControllerR13CStateManager:
/* 8014D5BC 0014A51C 94 21 FE 80 */ stwu r1, -0x180(r1)
/* 8014D5C0 0014A520 7C 08 02 A6 */ mflr r0
/* 8014D5C4 0014A524 90 01 01 84 */ stw r0, 0x184(r1)
/* 8014D5C8 0014A528 DB E1 01 70 */ stfd f31, 0x170(r1)
/* 8014D5CC 0014A52C F3 E1 01 78 */ psq_st f31, 376(r1), 0, qr0
/* 8014D5D0 0014A530 DB C1 01 60 */ stfd f30, 0x160(r1)
/* 8014D5D4 0014A534 F3 C1 01 68 */ psq_st f30, 360(r1), 0, qr0
/* 8014D5D8 0014A538 BF 41 01 48 */ stmw r26, 0x148(r1)
/* 8014D5DC 0014A53C 7C 9F 23 78 */ mr r31, r4
/* 8014D5E0 0014A540 7C BA 2B 78 */ mr r26, r5
/* 8014D5E4 0014A544 38 7F 00 04 */ addi r3, r31, 4
/* 8014D5E8 0014A548 38 80 00 06 */ li r4, 6
/* 8014D5EC 0014A54C 4B FE 3E 65 */ bl GetCmd__16CBodyStateCmdMgrF13EBodyStateCmd
/* 8014D5F0 0014A550 80 DF 00 00 */ lwz r6, 0(r31)
/* 8014D5F4 0014A554 7C 7E 1B 78 */ mr r30, r3
/* 8014D5F8 0014A558 C0 23 00 10 */ lfs f1, 0x10(r3)
/* 8014D5FC 0014A55C 38 61 00 80 */ addi r3, r1, 0x80
/* 8014D600 0014A560 C0 06 00 50 */ lfs f0, 0x50(r6)
/* 8014D604 0014A564 38 86 00 34 */ addi r4, r6, 0x34
/* 8014D608 0014A568 C0 7E 00 14 */ lfs f3, 0x14(r30)
/* 8014D60C 0014A56C 38 A1 00 8C */ addi r5, r1, 0x8c
/* 8014D610 0014A570 C0 46 00 60 */ lfs f2, 0x60(r6)
/* 8014D614 0014A574 EC 81 00 28 */ fsubs f4, f1, f0
/* 8014D618 0014A578 C0 3E 00 0C */ lfs f1, 0xc(r30)
/* 8014D61C 0014A57C C0 06 00 40 */ lfs f0, 0x40(r6)
/* 8014D620 0014A580 EC 43 10 28 */ fsubs f2, f3, f2
/* 8014D624 0014A584 EC 01 00 28 */ fsubs f0, f1, f0
/* 8014D628 0014A588 D0 81 00 90 */ stfs f4, 0x90(r1)
/* 8014D62C 0014A58C D0 41 00 94 */ stfs f2, 0x94(r1)
/* 8014D630 0014A590 D0 01 00 8C */ stfs f0, 0x8c(r1)
/* 8014D634 0014A594 48 1C 53 F1 */ bl TransposeRotate__12CTransform4fCFRC9CVector3f
/* 8014D638 0014A598 C0 21 00 84 */ lfs f1, 0x84(r1)
/* 8014D63C 0014A59C C0 41 00 80 */ lfs f2, 0x80(r1)
/* 8014D640 0014A5A0 48 24 76 2D */ bl atan2
/* 8014D644 0014A5A4 FC 80 08 18 */ frsp f4, f1
/* 8014D648 0014A5A8 C0 02 9D 3C */ lfs f0, lbl_805ABA5C@sda21(r2)
/* 8014D64C 0014A5AC 3C 00 43 30 */ lis r0, 0x4330
/* 8014D650 0014A5B0 C8 62 9D 58 */ lfd f3, lbl_805ABA78@sda21(r2)
/* 8014D654 0014A5B4 90 01 01 38 */ stw r0, 0x138(r1)
/* 8014D658 0014A5B8 EC 44 00 32 */ fmuls f2, f4, f0
/* 8014D65C 0014A5BC C0 22 9D 40 */ lfs f1, lbl_805ABA60@sda21(r2)
/* 8014D660 0014A5C0 C0 02 9D 38 */ lfs f0, lbl_805ABA58@sda21(r2)
/* 8014D664 0014A5C4 FC 40 10 1E */ fctiwz f2, f2
/* 8014D668 0014A5C8 D8 41 01 30 */ stfd f2, 0x130(r1)
/* 8014D66C 0014A5CC 80 01 01 34 */ lwz r0, 0x134(r1)
/* 8014D670 0014A5D0 6C 00 80 00 */ xoris r0, r0, 0x8000
/* 8014D674 0014A5D4 90 01 01 3C */ stw r0, 0x13c(r1)
/* 8014D678 0014A5D8 C8 41 01 38 */ lfd f2, 0x138(r1)
/* 8014D67C 0014A5DC EC 42 18 28 */ fsubs f2, f2, f3
/* 8014D680 0014A5E0 EC 42 20 7C */ fnmsubs f2, f2, f1, f4
/* 8014D684 0014A5E4 FC 02 00 40 */ fcmpo cr0, f2, f0
/* 8014D688 0014A5E8 40 80 00 08 */ bge lbl_8014D690
/* 8014D68C 0014A5EC EC 42 08 2A */ fadds f2, f2, f1
lbl_8014D690:
/* 8014D690 0014A5F0 C0 02 9D 44 */ lfs f0, lbl_805ABA64@sda21(r2)
/* 8014D694 0014A5F4 7F E3 FB 78 */ mr r3, r31
/* 8014D698 0014A5F8 EF E0 00 B2 */ fmuls f31, f0, f2
/* 8014D69C 0014A5FC 4B FE CD B9 */ bl GetPASDatabase__15CBodyControllerCFv
/* 8014D6A0 0014A600 83 BF 02 EC */ lwz r29, 0x2ec(r31)
/* 8014D6A4 0014A604 7C 7B 1B 78 */ mr r27, r3
/* 8014D6A8 0014A608 83 9E 00 08 */ lwz r28, 8(r30)
/* 8014D6AC 0014A60C 38 61 00 30 */ addi r3, r1, 0x30
/* 8014D6B0 0014A610 48 19 59 CD */ bl NoParameter__12CPASAnimParmFv
/* 8014D6B4 0014A614 38 61 00 38 */ addi r3, r1, 0x38
/* 8014D6B8 0014A618 48 19 59 C5 */ bl NoParameter__12CPASAnimParmFv
/* 8014D6BC 0014A61C 38 61 00 40 */ addi r3, r1, 0x40
/* 8014D6C0 0014A620 48 19 59 BD */ bl NoParameter__12CPASAnimParmFv
/* 8014D6C4 0014A624 38 61 00 48 */ addi r3, r1, 0x48
/* 8014D6C8 0014A628 48 19 59 B5 */ bl NoParameter__12CPASAnimParmFv
/* 8014D6CC 0014A62C 38 61 00 50 */ addi r3, r1, 0x50
/* 8014D6D0 0014A630 48 19 59 AD */ bl NoParameter__12CPASAnimParmFv
/* 8014D6D4 0014A634 7F A4 EB 78 */ mr r4, r29
/* 8014D6D8 0014A638 38 61 00 58 */ addi r3, r1, 0x58
/* 8014D6DC 0014A63C 48 19 58 A9 */ bl FromEnum__12CPASAnimParmFi
/* 8014D6E0 0014A640 FC 20 F8 90 */ fmr f1, f31
/* 8014D6E4 0014A644 38 61 00 60 */ addi r3, r1, 0x60
/* 8014D6E8 0014A648 48 19 59 01 */ bl FromReal32__12CPASAnimParmFf
/* 8014D6EC 0014A64C 7F 84 E3 78 */ mr r4, r28
/* 8014D6F0 0014A650 38 61 00 68 */ addi r3, r1, 0x68
/* 8014D6F4 0014A654 48 19 58 91 */ bl FromEnum__12CPASAnimParmFi
/* 8014D6F8 0014A658 38 61 00 38 */ addi r3, r1, 0x38
/* 8014D6FC 0014A65C 38 01 00 30 */ addi r0, r1, 0x30
/* 8014D700 0014A660 90 61 00 08 */ stw r3, 8(r1)
/* 8014D704 0014A664 38 61 00 E8 */ addi r3, r1, 0xe8
/* 8014D708 0014A668 38 A1 00 68 */ addi r5, r1, 0x68
/* 8014D70C 0014A66C 38 C1 00 60 */ addi r6, r1, 0x60
/* 8014D710 0014A670 90 01 00 0C */ stw r0, 0xc(r1)
/* 8014D714 0014A674 38 E1 00 58 */ addi r7, r1, 0x58
/* 8014D718 0014A678 39 01 00 50 */ addi r8, r1, 0x50
/* 8014D71C 0014A67C 39 21 00 48 */ addi r9, r1, 0x48
/* 8014D720 0014A680 39 41 00 40 */ addi r10, r1, 0x40
/* 8014D724 0014A684 38 80 00 12 */ li r4, 0x12
/* 8014D728 0014A688 4B F2 FB 9D */ bl __ct__16CPASAnimParmDataFiRC12CPASAnimParmRC12CPASAnimParmRC12CPASAnimParmRC12CPASAnimParmRC12CPASAnimParmRC12CPASAnimParmRC12CPASAnimParmRC12CPASAnimParm
/* 8014D72C 0014A68C 80 DA 09 00 */ lwz r6, 0x900(r26)
/* 8014D730 0014A690 7F 64 DB 78 */ mr r4, r27
/* 8014D734 0014A694 38 61 00 28 */ addi r3, r1, 0x28
/* 8014D738 0014A698 38 A1 00 E8 */ addi r5, r1, 0xe8
/* 8014D73C 0014A69C 38 E0 FF FF */ li r7, -1
/* 8014D740 0014A6A0 48 19 79 21 */ bl FindBestAnimation__12CPASDatabaseCFRC16CPASAnimParmDataR9CRandom16i
/* 8014D744 0014A6A4 88 1E 00 18 */ lbz r0, 0x18(r30)
/* 8014D748 0014A6A8 83 81 00 2C */ lwz r28, 0x2c(r1)
/* 8014D74C 0014A6AC 28 00 00 00 */ cmplwi r0, 0
/* 8014D750 0014A6B0 41 82 01 10 */ beq lbl_8014D860
/* 8014D754 0014A6B4 80 DA 09 00 */ lwz r6, 0x900(r26)
/* 8014D758 0014A6B8 7F 64 DB 78 */ mr r4, r27
/* 8014D75C 0014A6BC 7F 87 E3 78 */ mr r7, r28
/* 8014D760 0014A6C0 38 61 00 20 */ addi r3, r1, 0x20
/* 8014D764 0014A6C4 38 A1 00 E8 */ addi r5, r1, 0xe8
/* 8014D768 0014A6C8 48 19 78 F9 */ bl FindBestAnimation__12CPASDatabaseCFRC16CPASAnimParmDataR9CRandom16i
/* 8014D76C 0014A6CC 83 A1 00 24 */ lwz r29, 0x24(r1)
/* 8014D770 0014A6D0 7F 63 DB 78 */ mr r3, r27
/* 8014D774 0014A6D4 38 80 00 12 */ li r4, 0x12
/* 8014D778 0014A6D8 48 19 77 4D */ bl GetAnimState__12CPASDatabaseCFi
/* 8014D77C 0014A6DC 7C 7B 1B 78 */ mr r27, r3
/* 8014D780 0014A6E0 7F 85 E3 78 */ mr r5, r28
/* 8014D784 0014A6E4 38 61 00 18 */ addi r3, r1, 0x18
/* 8014D788 0014A6E8 38 C0 00 01 */ li r6, 1
/* 8014D78C 0014A6EC 7F 64 DB 78 */ mr r4, r27
/* 8014D790 0014A6F0 48 19 68 65 */ bl GetAnimParmData__13CPASAnimStateCFiUi
/* 8014D794 0014A6F4 80 61 00 18 */ lwz r3, 0x18(r1)
/* 8014D798 0014A6F8 7F 64 DB 78 */ mr r4, r27
/* 8014D79C 0014A6FC 80 01 00 1C */ lwz r0, 0x1c(r1)
/* 8014D7A0 0014A700 7F A5 EB 78 */ mr r5, r29
/* 8014D7A4 0014A704 90 61 00 78 */ stw r3, 0x78(r1)
/* 8014D7A8 0014A708 38 61 00 10 */ addi r3, r1, 0x10
/* 8014D7AC 0014A70C 38 C0 00 01 */ li r6, 1
/* 8014D7B0 0014A710 90 01 00 7C */ stw r0, 0x7c(r1)
/* 8014D7B4 0014A714 48 19 68 41 */ bl GetAnimParmData__13CPASAnimStateCFiUi
/* 8014D7B8 0014A718 80 81 00 10 */ lwz r4, 0x10(r1)
/* 8014D7BC 0014A71C 38 61 00 78 */ addi r3, r1, 0x78
/* 8014D7C0 0014A720 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8014D7C4 0014A724 90 81 00 70 */ stw r4, 0x70(r1)
/* 8014D7C8 0014A728 90 01 00 74 */ stw r0, 0x74(r1)
/* 8014D7CC 0014A72C 48 19 57 A1 */ bl GetReal32Value__12CPASAnimParmCFv
/* 8014D7D0 0014A730 FF C0 08 90 */ fmr f30, f1
/* 8014D7D4 0014A734 38 61 00 70 */ addi r3, r1, 0x70
/* 8014D7D8 0014A738 48 19 57 95 */ bl GetReal32Value__12CPASAnimParmCFv
/* 8014D7DC 0014A73C EC 1E 08 28 */ fsubs f0, f30, f1
/* 8014D7E0 0014A740 C0 42 9D 48 */ lfs f2, lbl_805ABA68@sda21(r2)
/* 8014D7E4 0014A744 FC 00 10 40 */ fcmpo cr0, f0, f2
/* 8014D7E8 0014A748 40 81 00 10 */ ble lbl_8014D7F8
/* 8014D7EC 0014A74C C0 02 9D 4C */ lfs f0, lbl_805ABA6C@sda21(r2)
/* 8014D7F0 0014A750 EC 20 08 2A */ fadds f1, f0, f1
/* 8014D7F4 0014A754 48 00 00 18 */ b lbl_8014D80C
lbl_8014D7F8:
/* 8014D7F8 0014A758 EC 01 F0 28 */ fsubs f0, f1, f30
/* 8014D7FC 0014A75C FC 00 10 40 */ fcmpo cr0, f0, f2
/* 8014D800 0014A760 40 81 00 0C */ ble lbl_8014D80C
/* 8014D804 0014A764 C0 02 9D 4C */ lfs f0, lbl_805ABA6C@sda21(r2)
/* 8014D808 0014A768 EF C0 F0 2A */ fadds f30, f0, f30
lbl_8014D80C:
/* 8014D80C 0014A76C EC 5E F8 28 */ fsubs f2, f30, f31
/* 8014D810 0014A770 38 00 00 00 */ li r0, 0
/* 8014D814 0014A774 EC 1E 08 28 */ fsubs f0, f30, f1
/* 8014D818 0014A778 38 C0 00 01 */ li r6, 1
/* 8014D81C 0014A77C 93 81 00 C0 */ stw r28, 0xc0(r1)
/* 8014D820 0014A780 7F E3 FB 78 */ mr r3, r31
/* 8014D824 0014A784 EC 02 00 24 */ fdivs f0, f2, f0
/* 8014D828 0014A788 93 A1 00 C4 */ stw r29, 0xc4(r1)
/* 8014D82C 0014A78C 38 81 00 C0 */ addi r4, r1, 0xc0
/* 8014D830 0014A790 38 A0 00 00 */ li r5, 0
/* 8014D834 0014A794 98 C1 00 CC */ stb r6, 0xcc(r1)
/* 8014D838 0014A798 38 C0 00 00 */ li r6, 0
/* 8014D83C 0014A79C D0 01 00 C8 */ stfs f0, 0xc8(r1)
/* 8014D840 0014A7A0 90 01 00 D0 */ stw r0, 0xd0(r1)
/* 8014D844 0014A7A4 90 01 00 D4 */ stw r0, 0xd4(r1)
/* 8014D848 0014A7A8 98 01 00 D8 */ stb r0, 0xd8(r1)
/* 8014D84C 0014A7AC 90 01 00 DC */ stw r0, 0xdc(r1)
/* 8014D850 0014A7B0 90 01 00 E0 */ stw r0, 0xe0(r1)
/* 8014D854 0014A7B4 90 01 00 E4 */ stw r0, 0xe4(r1)
/* 8014D858 0014A7B8 4B FE D0 C5 */ bl SetCurrentAnimation__15CBodyControllerFRC18CAnimPlaybackParmsbb
/* 8014D85C 0014A7BC 48 00 00 50 */ b lbl_8014D8AC
lbl_8014D860:
/* 8014D860 0014A7C0 C0 02 9D 50 */ lfs f0, lbl_805ABA70@sda21(r2)
/* 8014D864 0014A7C4 38 00 00 00 */ li r0, 0
/* 8014D868 0014A7C8 38 C0 FF FF */ li r6, -1
/* 8014D86C 0014A7CC 38 E0 00 01 */ li r7, 1
/* 8014D870 0014A7D0 93 81 00 98 */ stw r28, 0x98(r1)
/* 8014D874 0014A7D4 7F E3 FB 78 */ mr r3, r31
/* 8014D878 0014A7D8 38 81 00 98 */ addi r4, r1, 0x98
/* 8014D87C 0014A7DC 38 A0 00 00 */ li r5, 0
/* 8014D880 0014A7E0 90 C1 00 9C */ stw r6, 0x9c(r1)
/* 8014D884 0014A7E4 38 C0 00 00 */ li r6, 0
/* 8014D888 0014A7E8 D0 01 00 A0 */ stfs f0, 0xa0(r1)
/* 8014D88C 0014A7EC 98 E1 00 A4 */ stb r7, 0xa4(r1)
/* 8014D890 0014A7F0 90 01 00 A8 */ stw r0, 0xa8(r1)
/* 8014D894 0014A7F4 90 01 00 AC */ stw r0, 0xac(r1)
/* 8014D898 0014A7F8 98 01 00 B0 */ stb r0, 0xb0(r1)
/* 8014D89C 0014A7FC 90 01 00 B4 */ stw r0, 0xb4(r1)
/* 8014D8A0 0014A800 90 01 00 B8 */ stw r0, 0xb8(r1)
/* 8014D8A4 0014A804 90 01 00 BC */ stw r0, 0xbc(r1)
/* 8014D8A8 0014A808 4B FE D0 75 */ bl SetCurrentAnimation__15CBodyControllerFRC18CAnimPlaybackParmsbb
lbl_8014D8AC:
/* 8014D8AC 0014A80C 34 A1 00 EC */ addic. r5, r1, 0xec
/* 8014D8B0 0014A810 41 82 00 58 */ beq lbl_8014D908
/* 8014D8B4 0014A814 80 C5 00 00 */ lwz r6, 0(r5)
/* 8014D8B8 0014A818 38 60 00 00 */ li r3, 0
/* 8014D8BC 0014A81C 2C 06 00 00 */ cmpwi r6, 0
/* 8014D8C0 0014A820 40 81 00 40 */ ble lbl_8014D900
/* 8014D8C4 0014A824 2C 06 00 08 */ cmpwi r6, 8
/* 8014D8C8 0014A828 38 86 FF F8 */ addi r4, r6, -8
/* 8014D8CC 0014A82C 40 81 00 20 */ ble lbl_8014D8EC
/* 8014D8D0 0014A830 38 04 00 07 */ addi r0, r4, 7
/* 8014D8D4 0014A834 54 00 E8 FE */ srwi r0, r0, 3
/* 8014D8D8 0014A838 7C 09 03 A6 */ mtctr r0
/* 8014D8DC 0014A83C 2C 04 00 00 */ cmpwi r4, 0
/* 8014D8E0 0014A840 40 81 00 0C */ ble lbl_8014D8EC
lbl_8014D8E4:
/* 8014D8E4 0014A844 38 63 00 08 */ addi r3, r3, 8
/* 8014D8E8 0014A848 42 00 FF FC */ bdnz lbl_8014D8E4
lbl_8014D8EC:
/* 8014D8EC 0014A84C 7C 03 30 50 */ subf r0, r3, r6
/* 8014D8F0 0014A850 7C 09 03 A6 */ mtctr r0
/* 8014D8F4 0014A854 7C 03 30 00 */ cmpw r3, r6
/* 8014D8F8 0014A858 40 80 00 08 */ bge lbl_8014D900
lbl_8014D8FC:
/* 8014D8FC 0014A85C 42 00 00 00 */ bdnz lbl_8014D8FC
lbl_8014D900:
/* 8014D900 0014A860 38 00 00 00 */ li r0, 0
/* 8014D904 0014A864 90 05 00 00 */ stw r0, 0(r5)
lbl_8014D908:
/* 8014D908 0014A868 E3 E1 01 78 */ psq_l f31, 376(r1), 0, qr0
/* 8014D90C 0014A86C CB E1 01 70 */ lfd f31, 0x170(r1)
/* 8014D910 0014A870 E3 C1 01 68 */ psq_l f30, 360(r1), 0, qr0
/* 8014D914 0014A874 CB C1 01 60 */ lfd f30, 0x160(r1)
/* 8014D918 0014A878 BB 41 01 48 */ lmw r26, 0x148(r1)
/* 8014D91C 0014A87C 80 01 01 84 */ lwz r0, 0x184(r1)
/* 8014D920 0014A880 7C 08 03 A6 */ mtlr r0
/* 8014D924 0014A884 38 21 01 80 */ addi r1, r1, 0x180
/* 8014D928 0014A888 4E 80 00 20 */ blr
.global __ct__19CBSProjectileAttackFv
__ct__19CBSProjectileAttackFv:
/* 8014D92C 0014A88C 3C A0 80 3E */ lis r5, lbl_803E1318@ha
/* 8014D930 0014A890 3C 80 80 3E */ lis r4, lbl_803E27D0@ha
/* 8014D934 0014A894 38 A5 13 18 */ addi r5, r5, lbl_803E1318@l
/* 8014D938 0014A898 90 A3 00 00 */ stw r5, 0(r3)
/* 8014D93C 0014A89C 38 04 27 D0 */ addi r0, r4, lbl_803E27D0@l
/* 8014D940 0014A8A0 90 03 00 00 */ stw r0, 0(r3)
/* 8014D944 0014A8A4 4E 80 00 20 */ blr