.include "macros.inc" .comm sZeroVector__9CVector3f, 0xC, 4 .comm lbl_805A66AC, 0x48, 4 # MWCC .comm bug .comm sUpVector__9CVector3f, 0xC, 4 .comm sDownVector__9CVector3f, 0xC, 4 .comm sLeftVector__9CVector3f, 0xC, 4 .comm sRightVector__9CVector3f, 0xC, 4 .comm sForwardVector__9CVector3f, 0xC, 4 .comm sBackVector__9CVector3f, 0xC, 4 .section .ctors, "wa" lbl_ctor: .4byte __sinit_CVector3f_cpp .section .text, "ax" .global IsEqu__9CVector3fCFRC9CVector3ff IsEqu__9CVector3fCFRC9CVector3ff: /* 803145B0 00311510 C0 43 00 00 */ lfs f2, 0(r3) /* 803145B4 00311514 38 A0 00 00 */ li r5, 0 /* 803145B8 00311518 C0 04 00 00 */ lfs f0, 0(r4) /* 803145BC 0031151C 7C A0 2B 78 */ mr r0, r5 /* 803145C0 00311520 EC 02 00 28 */ fsubs f0, f2, f0 /* 803145C4 00311524 FC 00 02 10 */ fabs f0, f0 /* 803145C8 00311528 FC 00 00 18 */ frsp f0, f0 /* 803145CC 0031152C FC 00 08 40 */ fcmpo cr0, f0, f1 /* 803145D0 00311530 4C 40 13 82 */ cror 2, 0, 2 /* 803145D4 00311534 40 82 00 28 */ bne lbl_803145FC /* 803145D8 00311538 C0 43 00 04 */ lfs f2, 4(r3) /* 803145DC 0031153C C0 04 00 04 */ lfs f0, 4(r4) /* 803145E0 00311540 EC 02 00 28 */ fsubs f0, f2, f0 /* 803145E4 00311544 FC 00 02 10 */ fabs f0, f0 /* 803145E8 00311548 FC 00 00 18 */ frsp f0, f0 /* 803145EC 0031154C FC 00 08 40 */ fcmpo cr0, f0, f1 /* 803145F0 00311550 4C 40 13 82 */ cror 2, 0, 2 /* 803145F4 00311554 40 82 00 08 */ bne lbl_803145FC /* 803145F8 00311558 38 00 00 01 */ li r0, 1 lbl_803145FC: /* 803145FC 0031155C 54 00 06 3F */ clrlwi. r0, r0, 0x18 /* 80314600 00311560 41 82 00 28 */ beq lbl_80314628 /* 80314604 00311564 C0 43 00 08 */ lfs f2, 8(r3) /* 80314608 00311568 C0 04 00 08 */ lfs f0, 8(r4) /* 8031460C 0031156C EC 02 00 28 */ fsubs f0, f2, f0 /* 80314610 00311570 FC 00 02 10 */ fabs f0, f0 /* 80314614 00311574 FC 00 00 18 */ frsp f0, f0 /* 80314618 00311578 FC 00 08 40 */ fcmpo cr0, f0, f1 /* 8031461C 0031157C 4C 40 13 82 */ cror 2, 0, 2 /* 80314620 00311580 40 82 00 08 */ bne lbl_80314628 /* 80314624 00311584 38 A0 00 01 */ li r5, 1 lbl_80314628: /* 80314628 00311588 7C A3 2B 78 */ mr r3, r5 /* 8031462C 0031158C 4E 80 00 20 */ blr .global GetAngleDiff__9CVector3fFRC9CVector3fRC9CVector3f GetAngleDiff__9CVector3fFRC9CVector3fRC9CVector3f: /* 80314630 00311590 94 21 FF E0 */ stwu r1, -0x20(r1) /* 80314634 00311594 7C 08 02 A6 */ mflr r0 /* 80314638 00311598 90 01 00 24 */ stw r0, 0x24(r1) /* 8031463C 0031159C DB E1 00 10 */ stfd f31, 0x10(r1) /* 80314640 003115A0 F3 E1 00 18 */ psq_st f31, 24(r1), 0, qr0 /* 80314644 003115A4 93 E1 00 0C */ stw r31, 0xc(r1) /* 80314648 003115A8 93 C1 00 08 */ stw r30, 8(r1) /* 8031464C 003115AC 7C 7E 1B 78 */ mr r30, r3 /* 80314650 003115B0 7C 9F 23 78 */ mr r31, r4 /* 80314654 003115B4 48 00 02 65 */ bl Magnitude__9CVector3fCFv /* 80314658 003115B8 FF E0 08 90 */ fmr f31, f1 /* 8031465C 003115BC 7F E3 FB 78 */ mr r3, r31 /* 80314660 003115C0 48 00 02 59 */ bl Magnitude__9CVector3fCFv /* 80314664 003115C4 C0 02 C9 14 */ lfs f0, lbl_805AE634@sda21(r2) /* 80314668 003115C8 C0 42 C9 10 */ lfs f2, lbl_805AE630@sda21(r2) /* 8031466C 003115CC FC 1F 00 40 */ fcmpo cr0, f31, f0 /* 80314670 003115D0 40 81 00 64 */ ble lbl_803146D4 /* 80314674 003115D4 FC 01 00 40 */ fcmpo cr0, f1, f0 /* 80314678 003115D8 40 81 00 5C */ ble lbl_803146D4 /* 8031467C 003115DC C0 5E 00 04 */ lfs f2, 4(r30) /* 80314680 003115E0 EC 3F 00 72 */ fmuls f1, f31, f1 /* 80314684 003115E4 C0 1F 00 04 */ lfs f0, 4(r31) /* 80314688 003115E8 C0 7E 00 00 */ lfs f3, 0(r30) /* 8031468C 003115EC EC 02 00 32 */ fmuls f0, f2, f0 /* 80314690 003115F0 C0 5F 00 00 */ lfs f2, 0(r31) /* 80314694 003115F4 C0 BE 00 08 */ lfs f5, 8(r30) /* 80314698 003115F8 C0 9F 00 08 */ lfs f4, 8(r31) /* 8031469C 003115FC EC 43 00 BA */ fmadds f2, f3, f2, f0 /* 803146A0 00311600 C0 02 C9 18 */ lfs f0, lbl_805AE638@sda21(r2) /* 803146A4 00311604 EC 45 11 3A */ fmadds f2, f5, f4, f2 /* 803146A8 00311608 EC 22 08 24 */ fdivs f1, f2, f1 /* 803146AC 0031160C FC 01 00 40 */ fcmpo cr0, f1, f0 /* 803146B0 00311610 40 80 00 0C */ bge lbl_803146BC /* 803146B4 00311614 FC 20 00 90 */ fmr f1, f0 /* 803146B8 00311618 48 00 00 14 */ b lbl_803146CC lbl_803146BC: /* 803146BC 0031161C C0 02 C9 1C */ lfs f0, lbl_805AE63C@sda21(r2) /* 803146C0 00311620 FC 01 00 40 */ fcmpo cr0, f1, f0 /* 803146C4 00311624 40 81 00 08 */ ble lbl_803146CC /* 803146C8 00311628 FC 20 00 90 */ fmr f1, f0 lbl_803146CC: /* 803146CC 0031162C 48 00 0C C5 */ bl ArcCosineR__5CMathFf /* 803146D0 00311630 FC 40 08 90 */ fmr f2, f1 lbl_803146D4: /* 803146D4 00311634 FC 20 10 90 */ fmr f1, f2 /* 803146D8 00311638 E3 E1 00 18 */ psq_l f31, 24(r1), 0, qr0 /* 803146DC 0031163C 80 01 00 24 */ lwz r0, 0x24(r1) /* 803146E0 00311640 CB E1 00 10 */ lfd f31, 0x10(r1) /* 803146E4 00311644 83 E1 00 0C */ lwz r31, 0xc(r1) /* 803146E8 00311648 83 C1 00 08 */ lwz r30, 8(r1) /* 803146EC 0031164C 7C 08 03 A6 */ mtlr r0 /* 803146F0 00311650 38 21 00 20 */ addi r1, r1, 0x20 /* 803146F4 00311654 4E 80 00 20 */ blr .global CanBeNormalized__9CVector3fCFv CanBeNormalized__9CVector3fCFv: /* 803146F8 00311658 80 03 00 00 */ lwz r0, 0(r3) /* 803146FC 0031165C 80 A3 00 04 */ lwz r5, 4(r3) /* 80314700 00311660 54 04 00 50 */ rlwinm r4, r0, 0, 1, 8 /* 80314704 00311664 80 C3 00 08 */ lwz r6, 8(r3) /* 80314708 00311668 3C 04 80 80 */ addis r0, r4, 0x8080 /* 8031470C 0031166C 28 00 00 00 */ cmplwi r0, 0 /* 80314710 00311670 41 82 00 24 */ beq lbl_80314734 /* 80314714 00311674 54 A4 00 50 */ rlwinm r4, r5, 0, 1, 8 /* 80314718 00311678 3C 04 80 80 */ addis r0, r4, 0x8080 /* 8031471C 0031167C 28 00 00 00 */ cmplwi r0, 0 /* 80314720 00311680 41 82 00 14 */ beq lbl_80314734 /* 80314724 00311684 54 C4 00 50 */ rlwinm r4, r6, 0, 1, 8 /* 80314728 00311688 3C 04 80 80 */ addis r0, r4, 0x8080 /* 8031472C 0031168C 28 00 00 00 */ cmplwi r0, 0 /* 80314730 00311690 40 82 00 0C */ bne lbl_8031473C lbl_80314734: /* 80314734 00311694 38 60 00 00 */ li r3, 0 /* 80314738 00311698 4E 80 00 20 */ blr lbl_8031473C: /* 8031473C 0031169C C0 03 00 00 */ lfs f0, 0(r3) /* 80314740 003116A0 C0 22 C9 14 */ lfs f1, lbl_805AE634@sda21(r2) /* 80314744 003116A4 FC 00 02 10 */ fabs f0, f0 /* 80314748 003116A8 FC 00 00 18 */ frsp f0, f0 /* 8031474C 003116AC FC 00 08 40 */ fcmpo cr0, f0, f1 /* 80314750 003116B0 40 80 00 34 */ bge lbl_80314784 /* 80314754 003116B4 C0 03 00 04 */ lfs f0, 4(r3) /* 80314758 003116B8 FC 00 02 10 */ fabs f0, f0 /* 8031475C 003116BC FC 00 00 18 */ frsp f0, f0 /* 80314760 003116C0 FC 00 08 40 */ fcmpo cr0, f0, f1 /* 80314764 003116C4 40 80 00 20 */ bge lbl_80314784 /* 80314768 003116C8 C0 03 00 08 */ lfs f0, 8(r3) /* 8031476C 003116CC FC 00 02 10 */ fabs f0, f0 /* 80314770 003116D0 FC 00 00 18 */ frsp f0, f0 /* 80314774 003116D4 FC 00 08 40 */ fcmpo cr0, f0, f1 /* 80314778 003116D8 40 80 00 0C */ bge lbl_80314784 /* 8031477C 003116DC 38 60 00 00 */ li r3, 0 /* 80314780 003116E0 4E 80 00 20 */ blr lbl_80314784: /* 80314784 003116E4 38 60 00 01 */ li r3, 1 /* 80314788 003116E8 4E 80 00 20 */ blr .global IsMagnitudeSafe__9CVector3fCFv IsMagnitudeSafe__9CVector3fCFv: /* 8031478C 003116EC 94 21 FF F0 */ stwu r1, -0x10(r1) /* 80314790 003116F0 7C 08 02 A6 */ mflr r0 /* 80314794 003116F4 90 01 00 14 */ stw r0, 0x14(r1) /* 80314798 003116F8 93 E1 00 0C */ stw r31, 0xc(r1) /* 8031479C 003116FC 3B E0 00 00 */ li r31, 0 /* 803147A0 00311700 93 C1 00 08 */ stw r30, 8(r1) /* 803147A4 00311704 7C 7E 1B 78 */ mr r30, r3 /* 803147A8 00311708 48 00 00 5D */ bl IsNotInf__9CVector3fCFv /* 803147AC 0031170C 54 60 06 3F */ clrlwi. r0, r3, 0x18 /* 803147B0 00311710 41 82 00 38 */ beq lbl_803147E8 /* 803147B4 00311714 C0 3E 00 00 */ lfs f1, 0(r30) /* 803147B8 00311718 C0 1E 00 04 */ lfs f0, 4(r30) /* 803147BC 0031171C EC 41 00 72 */ fmuls f2, f1, f1 /* 803147C0 00311720 C0 7E 00 08 */ lfs f3, 8(r30) /* 803147C4 00311724 EC 20 00 32 */ fmuls f1, f0, f0 /* 803147C8 00311728 C0 02 C9 20 */ lfs f0, lbl_805AE640@sda21(r2) /* 803147CC 0031172C EC 63 00 F2 */ fmuls f3, f3, f3 /* 803147D0 00311730 EC 22 08 2A */ fadds f1, f2, f1 /* 803147D4 00311734 EC 23 08 2A */ fadds f1, f3, f1 /* 803147D8 00311738 FC 01 00 40 */ fcmpo cr0, f1, f0 /* 803147DC 0031173C 4C 41 13 82 */ cror 2, 1, 2 /* 803147E0 00311740 40 82 00 08 */ bne lbl_803147E8 /* 803147E4 00311744 3B E0 00 01 */ li r31, 1 lbl_803147E8: /* 803147E8 00311748 80 01 00 14 */ lwz r0, 0x14(r1) /* 803147EC 0031174C 7F E3 FB 78 */ mr r3, r31 /* 803147F0 00311750 83 E1 00 0C */ lwz r31, 0xc(r1) /* 803147F4 00311754 83 C1 00 08 */ lwz r30, 8(r1) /* 803147F8 00311758 7C 08 03 A6 */ mtlr r0 /* 803147FC 0031175C 38 21 00 10 */ addi r1, r1, 0x10 /* 80314800 00311760 4E 80 00 20 */ blr .global IsNotInf__9CVector3fCFv IsNotInf__9CVector3fCFv: /* 80314804 00311764 80 03 00 00 */ lwz r0, 0(r3) /* 80314808 00311768 80 A3 00 04 */ lwz r5, 4(r3) /* 8031480C 0031176C 54 04 00 50 */ rlwinm r4, r0, 0, 1, 8 /* 80314810 00311770 80 C3 00 08 */ lwz r6, 8(r3) /* 80314814 00311774 3C 04 80 80 */ addis r0, r4, 0x8080 /* 80314818 00311778 28 00 00 00 */ cmplwi r0, 0 /* 8031481C 0031177C 41 82 00 24 */ beq lbl_80314840 /* 80314820 00311780 54 A3 00 50 */ rlwinm r3, r5, 0, 1, 8 /* 80314824 00311784 3C 03 80 80 */ addis r0, r3, 0x8080 /* 80314828 00311788 28 00 00 00 */ cmplwi r0, 0 /* 8031482C 0031178C 41 82 00 14 */ beq lbl_80314840 /* 80314830 00311790 54 C3 00 50 */ rlwinm r3, r6, 0, 1, 8 /* 80314834 00311794 3C 03 80 80 */ addis r0, r3, 0x8080 /* 80314838 00311798 28 00 00 00 */ cmplwi r0, 0 /* 8031483C 0031179C 40 82 00 0C */ bne lbl_80314848 lbl_80314840: /* 80314840 003117A0 38 60 00 00 */ li r3, 0 /* 80314844 003117A4 4E 80 00 20 */ blr lbl_80314848: /* 80314848 003117A8 38 60 00 01 */ li r3, 1 /* 8031484C 003117AC 4E 80 00 20 */ blr .global AsNormalized__9CVector3fCFv AsNormalized__9CVector3fCFv: /* 80314850 003117B0 94 21 FF F0 */ stwu r1, -0x10(r1) /* 80314854 003117B4 7C 08 02 A6 */ mflr r0 /* 80314858 003117B8 90 01 00 14 */ stw r0, 0x14(r1) /* 8031485C 003117BC 93 E1 00 0C */ stw r31, 0xc(r1) /* 80314860 003117C0 7C 9F 23 78 */ mr r31, r4 /* 80314864 003117C4 93 C1 00 08 */ stw r30, 8(r1) /* 80314868 003117C8 7C 7E 1B 78 */ mr r30, r3 /* 8031486C 003117CC 7F E3 FB 78 */ mr r3, r31 /* 80314870 003117D0 48 00 00 49 */ bl Magnitude__9CVector3fCFv /* 80314874 003117D4 C0 42 C9 1C */ lfs f2, lbl_805AE63C@sda21(r2) /* 80314878 003117D8 C0 1F 00 00 */ lfs f0, 0(r31) /* 8031487C 003117DC EC 62 08 24 */ fdivs f3, f2, f1 /* 80314880 003117E0 C0 5F 00 04 */ lfs f2, 4(r31) /* 80314884 003117E4 C0 3F 00 08 */ lfs f1, 8(r31) /* 80314888 003117E8 EC 00 00 F2 */ fmuls f0, f0, f3 /* 8031488C 003117EC EC 42 00 F2 */ fmuls f2, f2, f3 /* 80314890 003117F0 EC 21 00 F2 */ fmuls f1, f1, f3 /* 80314894 003117F4 D0 1E 00 00 */ stfs f0, 0(r30) /* 80314898 003117F8 D0 5E 00 04 */ stfs f2, 4(r30) /* 8031489C 003117FC D0 3E 00 08 */ stfs f1, 8(r30) /* 803148A0 00311800 80 01 00 14 */ lwz r0, 0x14(r1) /* 803148A4 00311804 83 E1 00 0C */ lwz r31, 0xc(r1) /* 803148A8 00311808 83 C1 00 08 */ lwz r30, 8(r1) /* 803148AC 0031180C 7C 08 03 A6 */ mtlr r0 /* 803148B0 00311810 38 21 00 10 */ addi r1, r1, 0x10 /* 803148B4 00311814 4E 80 00 20 */ blr .global Magnitude__9CVector3fCFv Magnitude__9CVector3fCFv: /* 803148B8 00311818 94 21 FF F0 */ stwu r1, -0x10(r1) /* 803148BC 0031181C 7C 08 02 A6 */ mflr r0 /* 803148C0 00311820 90 01 00 14 */ stw r0, 0x14(r1) /* 803148C4 00311824 C0 03 00 00 */ lfs f0, 0(r3) /* 803148C8 00311828 C0 43 00 04 */ lfs f2, 4(r3) /* 803148CC 0031182C EC 20 00 32 */ fmuls f1, f0, f0 /* 803148D0 00311830 C0 03 00 08 */ lfs f0, 8(r3) /* 803148D4 00311834 EC 42 00 B2 */ fmuls f2, f2, f2 /* 803148D8 00311838 EC 00 00 32 */ fmuls f0, f0, f0 /* 803148DC 0031183C EC 21 10 2A */ fadds f1, f1, f2 /* 803148E0 00311840 EC 21 00 2A */ fadds f1, f1, f0 /* 803148E4 00311844 48 00 0C 1D */ bl SqrtF__5CMathFf /* 803148E8 00311848 80 01 00 14 */ lwz r0, 0x14(r1) /* 803148EC 0031184C 7C 08 03 A6 */ mtlr r0 /* 803148F0 00311850 38 21 00 10 */ addi r1, r1, 0x10 /* 803148F4 00311854 4E 80 00 20 */ blr .global Normalize__9CVector3fFv Normalize__9CVector3fFv: /* 803148F8 00311858 94 21 FF F0 */ stwu r1, -0x10(r1) /* 803148FC 0031185C 7C 08 02 A6 */ mflr r0 /* 80314900 00311860 90 01 00 14 */ stw r0, 0x14(r1) /* 80314904 00311864 93 E1 00 0C */ stw r31, 0xc(r1) /* 80314908 00311868 7C 7F 1B 78 */ mr r31, r3 /* 8031490C 0031186C 4B FF FF AD */ bl Magnitude__9CVector3fCFv /* 80314910 00311870 C0 42 C9 1C */ lfs f2, lbl_805AE63C@sda21(r2) /* 80314914 00311874 7F E3 FB 78 */ mr r3, r31 /* 80314918 00311878 C0 1F 00 00 */ lfs f0, 0(r31) /* 8031491C 0031187C EC 22 08 24 */ fdivs f1, f2, f1 /* 80314920 00311880 EC 00 00 72 */ fmuls f0, f0, f1 /* 80314924 00311884 D0 1F 00 00 */ stfs f0, 0(r31) /* 80314928 00311888 C0 1F 00 04 */ lfs f0, 4(r31) /* 8031492C 0031188C EC 00 00 72 */ fmuls f0, f0, f1 /* 80314930 00311890 D0 1F 00 04 */ stfs f0, 4(r31) /* 80314934 00311894 C0 1F 00 08 */ lfs f0, 8(r31) /* 80314938 00311898 EC 00 00 72 */ fmuls f0, f0, f1 /* 8031493C 0031189C D0 1F 00 08 */ stfs f0, 8(r31) /* 80314940 003118A0 83 E1 00 0C */ lwz r31, 0xc(r1) /* 80314944 003118A4 80 01 00 14 */ lwz r0, 0x14(r1) /* 80314948 003118A8 7C 08 03 A6 */ mtlr r0 /* 8031494C 003118AC 38 21 00 10 */ addi r1, r1, 0x10 /* 80314950 003118B0 4E 80 00 20 */ blr .global Slerp__9CVector3fFRC9CVector3fRC9CVector3fRC9CRelAngle Slerp__9CVector3fFRC9CVector3fRC9CVector3fRC9CRelAngle: /* 80314954 003118B4 94 21 FF 50 */ stwu r1, -0xb0(r1) /* 80314958 003118B8 7C 08 02 A6 */ mflr r0 /* 8031495C 003118BC 90 01 00 B4 */ stw r0, 0xb4(r1) /* 80314960 003118C0 DB E1 00 A0 */ stfd f31, 0xa0(r1) /* 80314964 003118C4 F3 E1 00 A8 */ psq_st f31, 168(r1), 0, qr0 /* 80314968 003118C8 DB C1 00 90 */ stfd f30, 0x90(r1) /* 8031496C 003118CC F3 C1 00 98 */ psq_st f30, 152(r1), 0, qr0 /* 80314970 003118D0 DB A1 00 80 */ stfd f29, 0x80(r1) /* 80314974 003118D4 F3 A1 00 88 */ psq_st f29, 136(r1), 0, qr0 /* 80314978 003118D8 DB 81 00 70 */ stfd f28, 0x70(r1) /* 8031497C 003118DC F3 81 00 78 */ psq_st f28, 120(r1), 0, qr0 /* 80314980 003118E0 DB 61 00 60 */ stfd f27, 0x60(r1) /* 80314984 003118E4 F3 61 00 68 */ psq_st f27, 104(r1), 0, qr0 /* 80314988 003118E8 DB 41 00 50 */ stfd f26, 0x50(r1) /* 8031498C 003118EC F3 41 00 58 */ psq_st f26, 88(r1), 0, qr0 /* 80314990 003118F0 DB 21 00 40 */ stfd f25, 0x40(r1) /* 80314994 003118F4 F3 21 00 48 */ psq_st f25, 72(r1), 0, qr0 /* 80314998 003118F8 DB 01 00 30 */ stfd f24, 0x30(r1) /* 8031499C 003118FC F3 01 00 38 */ psq_st f24, 56(r1), 0, qr0 /* 803149A0 00311900 93 E1 00 2C */ stw r31, 0x2c(r1) /* 803149A4 00311904 93 C1 00 28 */ stw r30, 0x28(r1) /* 803149A8 00311908 93 A1 00 24 */ stw r29, 0x24(r1) /* 803149AC 0031190C 7C 9E 23 78 */ mr r30, r4 /* 803149B0 00311910 7C 7D 1B 78 */ mr r29, r3 /* 803149B4 00311914 C0 64 00 00 */ lfs f3, 0(r4) /* 803149B8 00311918 7C DF 33 78 */ mr r31, r6 /* 803149BC 0031191C C0 E5 00 08 */ lfs f7, 8(r5) /* 803149C0 00311920 38 61 00 14 */ addi r3, r1, 0x14 /* 803149C4 00311924 C0 84 00 04 */ lfs f4, 4(r4) /* 803149C8 00311928 38 81 00 08 */ addi r4, r1, 8 /* 803149CC 0031192C C0 A5 00 00 */ lfs f5, 0(r5) /* 803149D0 00311930 EC 27 00 F2 */ fmuls f1, f7, f3 /* 803149D4 00311934 C0 5E 00 08 */ lfs f2, 8(r30) /* 803149D8 00311938 C0 C5 00 04 */ lfs f6, 4(r5) /* 803149DC 0031193C EC 05 01 32 */ fmuls f0, f5, f4 /* 803149E0 00311940 EC 22 09 78 */ fmsubs f1, f2, f5, f1 /* 803149E4 00311944 EC 46 00 B2 */ fmuls f2, f6, f2 /* 803149E8 00311948 EC 03 01 B8 */ fmsubs f0, f3, f6, f0 /* 803149EC 0031194C D0 21 00 0C */ stfs f1, 0xc(r1) /* 803149F0 00311950 EC 24 11 F8 */ fmsubs f1, f4, f7, f2 /* 803149F4 00311954 D0 01 00 10 */ stfs f0, 0x10(r1) /* 803149F8 00311958 D0 21 00 08 */ stfs f1, 8(r1) /* 803149FC 0031195C 4B FF FE 55 */ bl AsNormalized__9CVector3fCFv /* 80314A00 00311960 C3 41 00 18 */ lfs f26, 0x18(r1) /* 80314A04 00311964 C3 DE 00 00 */ lfs f30, 0(r30) /* 80314A08 00311968 C3 BE 00 04 */ lfs f29, 4(r30) /* 80314A0C 0031196C EC 1E 06 B2 */ fmuls f0, f30, f26 /* 80314A10 00311970 C3 01 00 14 */ lfs f24, 0x14(r1) /* 80314A14 00311974 C3 21 00 1C */ lfs f25, 0x1c(r1) /* 80314A18 00311978 C3 9E 00 08 */ lfs f28, 8(r30) /* 80314A1C 0031197C EF F8 07 78 */ fmsubs f31, f24, f29, f0 /* 80314A20 00311980 C0 3F 00 00 */ lfs f1, 0(r31) /* 80314A24 00311984 48 08 00 B9 */ bl sin /* 80314A28 00311988 FF 60 08 18 */ frsp f27, f1 /* 80314A2C 0031198C C0 3F 00 00 */ lfs f1, 0(r31) /* 80314A30 00311990 48 07 F9 C1 */ bl cos /* 80314A34 00311994 EC 1D 06 72 */ fmuls f0, f29, f25 /* 80314A38 00311998 C0 5E 00 00 */ lfs f2, 0(r30) /* 80314A3C 0031199C EC 9C 06 32 */ fmuls f4, f28, f24 /* 80314A40 003119A0 C0 BE 00 04 */ lfs f5, 4(r30) /* 80314A44 003119A4 FC C0 08 18 */ frsp f6, f1 /* 80314A48 003119A8 C0 7E 00 08 */ lfs f3, 8(r30) /* 80314A4C 003119AC EC 1A 07 38 */ fmsubs f0, f26, f28, f0 /* 80314A50 003119B0 EC 99 27 B8 */ fmsubs f4, f25, f30, f4 /* 80314A54 003119B4 EC 26 00 B2 */ fmuls f1, f6, f2 /* 80314A58 003119B8 EC 1B 00 32 */ fmuls f0, f27, f0 /* 80314A5C 003119BC EC A6 01 72 */ fmuls f5, f6, f5 /* 80314A60 003119C0 EC 9B 01 32 */ fmuls f4, f27, f4 /* 80314A64 003119C4 EC 01 00 2A */ fadds f0, f1, f0 /* 80314A68 003119C8 EC 46 00 F2 */ fmuls f2, f6, f3 /* 80314A6C 003119CC EC 3B 07 F2 */ fmuls f1, f27, f31 /* 80314A70 003119D0 D0 1D 00 00 */ stfs f0, 0(r29) /* 80314A74 003119D4 EC 65 20 2A */ fadds f3, f5, f4 /* 80314A78 003119D8 EC 02 08 2A */ fadds f0, f2, f1 /* 80314A7C 003119DC D0 7D 00 04 */ stfs f3, 4(r29) /* 80314A80 003119E0 D0 1D 00 08 */ stfs f0, 8(r29) /* 80314A84 003119E4 E3 E1 00 A8 */ psq_l f31, 168(r1), 0, qr0 /* 80314A88 003119E8 CB E1 00 A0 */ lfd f31, 0xa0(r1) /* 80314A8C 003119EC E3 C1 00 98 */ psq_l f30, 152(r1), 0, qr0 /* 80314A90 003119F0 CB C1 00 90 */ lfd f30, 0x90(r1) /* 80314A94 003119F4 E3 A1 00 88 */ psq_l f29, 136(r1), 0, qr0 /* 80314A98 003119F8 CB A1 00 80 */ lfd f29, 0x80(r1) /* 80314A9C 003119FC E3 81 00 78 */ psq_l f28, 120(r1), 0, qr0 /* 80314AA0 00311A00 CB 81 00 70 */ lfd f28, 0x70(r1) /* 80314AA4 00311A04 E3 61 00 68 */ psq_l f27, 104(r1), 0, qr0 /* 80314AA8 00311A08 CB 61 00 60 */ lfd f27, 0x60(r1) /* 80314AAC 00311A0C E3 41 00 58 */ psq_l f26, 88(r1), 0, qr0 /* 80314AB0 00311A10 CB 41 00 50 */ lfd f26, 0x50(r1) /* 80314AB4 00311A14 E3 21 00 48 */ psq_l f25, 72(r1), 0, qr0 /* 80314AB8 00311A18 CB 21 00 40 */ lfd f25, 0x40(r1) /* 80314ABC 00311A1C E3 01 00 38 */ psq_l f24, 56(r1), 0, qr0 /* 80314AC0 00311A20 CB 01 00 30 */ lfd f24, 0x30(r1) /* 80314AC4 00311A24 83 E1 00 2C */ lwz r31, 0x2c(r1) /* 80314AC8 00311A28 83 C1 00 28 */ lwz r30, 0x28(r1) /* 80314ACC 00311A2C 80 01 00 B4 */ lwz r0, 0xb4(r1) /* 80314AD0 00311A30 83 A1 00 24 */ lwz r29, 0x24(r1) /* 80314AD4 00311A34 7C 08 03 A6 */ mtlr r0 /* 80314AD8 00311A38 38 21 00 B0 */ addi r1, r1, 0xb0 /* 80314ADC 00311A3C 4E 80 00 20 */ blr .global PutTo__9CVector3fCFR13COutputStream PutTo__9CVector3fCFR13COutputStream: /* 80314AE0 00311A40 94 21 FF D0 */ stwu r1, -0x30(r1) /* 80314AE4 00311A44 7C 08 02 A6 */ mflr r0 /* 80314AE8 00311A48 90 01 00 34 */ stw r0, 0x34(r1) /* 80314AEC 00311A4C 93 E1 00 2C */ stw r31, 0x2c(r1) /* 80314AF0 00311A50 7C 9F 23 78 */ mr r31, r4 /* 80314AF4 00311A54 93 C1 00 28 */ stw r30, 0x28(r1) /* 80314AF8 00311A58 7C 7E 1B 78 */ mr r30, r3 /* 80314AFC 00311A5C C0 03 00 00 */ lfs f0, 0(r3) /* 80314B00 00311A60 7F E3 FB 78 */ mr r3, r31 /* 80314B04 00311A64 D0 01 00 1C */ stfs f0, 0x1c(r1) /* 80314B08 00311A68 80 01 00 1C */ lwz r0, 0x1c(r1) /* 80314B0C 00311A6C 90 01 00 10 */ stw r0, 0x10(r1) /* 80314B10 00311A70 48 02 A9 A9 */ bl FlushShiftRegister__13COutputStreamFv /* 80314B14 00311A74 7F E3 FB 78 */ mr r3, r31 /* 80314B18 00311A78 38 81 00 10 */ addi r4, r1, 0x10 /* 80314B1C 00311A7C 38 A0 00 04 */ li r5, 4 /* 80314B20 00311A80 48 02 AA 89 */ bl DoPut__13COutputStreamFPCvUl /* 80314B24 00311A84 C0 1E 00 04 */ lfs f0, 4(r30) /* 80314B28 00311A88 7F E3 FB 78 */ mr r3, r31 /* 80314B2C 00311A8C D0 01 00 18 */ stfs f0, 0x18(r1) /* 80314B30 00311A90 80 01 00 18 */ lwz r0, 0x18(r1) /* 80314B34 00311A94 90 01 00 0C */ stw r0, 0xc(r1) /* 80314B38 00311A98 48 02 A9 81 */ bl FlushShiftRegister__13COutputStreamFv /* 80314B3C 00311A9C 7F E3 FB 78 */ mr r3, r31 /* 80314B40 00311AA0 38 81 00 0C */ addi r4, r1, 0xc /* 80314B44 00311AA4 38 A0 00 04 */ li r5, 4 /* 80314B48 00311AA8 48 02 AA 61 */ bl DoPut__13COutputStreamFPCvUl /* 80314B4C 00311AAC C0 1E 00 08 */ lfs f0, 8(r30) /* 80314B50 00311AB0 7F E3 FB 78 */ mr r3, r31 /* 80314B54 00311AB4 D0 01 00 14 */ stfs f0, 0x14(r1) /* 80314B58 00311AB8 80 01 00 14 */ lwz r0, 0x14(r1) /* 80314B5C 00311ABC 90 01 00 08 */ stw r0, 8(r1) /* 80314B60 00311AC0 48 02 A9 59 */ bl FlushShiftRegister__13COutputStreamFv /* 80314B64 00311AC4 7F E3 FB 78 */ mr r3, r31 /* 80314B68 00311AC8 38 81 00 08 */ addi r4, r1, 8 /* 80314B6C 00311ACC 38 A0 00 04 */ li r5, 4 /* 80314B70 00311AD0 48 02 AA 39 */ bl DoPut__13COutputStreamFPCvUl /* 80314B74 00311AD4 80 01 00 34 */ lwz r0, 0x34(r1) /* 80314B78 00311AD8 83 E1 00 2C */ lwz r31, 0x2c(r1) /* 80314B7C 00311ADC 83 C1 00 28 */ lwz r30, 0x28(r1) /* 80314B80 00311AE0 7C 08 03 A6 */ mtlr r0 /* 80314B84 00311AE4 38 21 00 30 */ addi r1, r1, 0x30 /* 80314B88 00311AE8 4E 80 00 20 */ blr .global __ct__9CVector3fFR12CInputStream __ct__9CVector3fFR12CInputStream: /* 80314B8C 00311AEC 94 21 FF F0 */ stwu r1, -0x10(r1) /* 80314B90 00311AF0 7C 08 02 A6 */ mflr r0 /* 80314B94 00311AF4 38 A0 00 0C */ li r5, 0xc /* 80314B98 00311AF8 90 01 00 14 */ stw r0, 0x14(r1) /* 80314B9C 00311AFC 93 E1 00 0C */ stw r31, 0xc(r1) /* 80314BA0 00311B00 7C 7F 1B 78 */ mr r31, r3 /* 80314BA4 00311B04 7C 83 23 78 */ mr r3, r4 /* 80314BA8 00311B08 7F E4 FB 78 */ mr r4, r31 /* 80314BAC 00311B0C 48 02 A3 A9 */ bl Get__12CInputStreamFPvUl /* 80314BB0 00311B10 80 01 00 14 */ lwz r0, 0x14(r1) /* 80314BB4 00311B14 7F E3 FB 78 */ mr r3, r31 /* 80314BB8 00311B18 83 E1 00 0C */ lwz r31, 0xc(r1) /* 80314BBC 00311B1C 7C 08 03 A6 */ mtlr r0 /* 80314BC0 00311B20 38 21 00 10 */ addi r1, r1, 0x10 /* 80314BC4 00311B24 4E 80 00 20 */ blr .global __sinit_CVector3f_cpp __sinit_CVector3f_cpp: /* 80314BC8 00311B28 C0 42 C9 10 */ lfs f2, lbl_805AE630@sda21(r2) /* 80314BCC 00311B2C 3D 20 80 5A */ lis r9, sZeroVector__9CVector3f@ha /* 80314BD0 00311B30 C0 02 C9 18 */ lfs f0, lbl_805AE638@sda21(r2) /* 80314BD4 00311B34 3D 00 80 5A */ lis r8, sUpVector__9CVector3f@ha /* 80314BD8 00311B38 D4 49 66 A0 */ stfsu f2, sZeroVector__9CVector3f@l(r9) /* 80314BDC 00311B3C 3C E0 80 5A */ lis r7, sDownVector__9CVector3f@ha /* 80314BE0 00311B40 3C C0 80 5A */ lis r6, sLeftVector__9CVector3f@ha /* 80314BE4 00311B44 3C 80 80 5A */ lis r4, sForwardVector__9CVector3f@ha /* 80314BE8 00311B48 D4 47 67 00 */ stfsu f2, sDownVector__9CVector3f@l(r7) /* 80314BEC 00311B4C 3C 60 80 5A */ lis r3, sBackVector__9CVector3f@ha /* 80314BF0 00311B50 C0 22 C9 1C */ lfs f1, lbl_805AE63C@sda21(r2) /* 80314BF4 00311B54 3C A0 80 5A */ lis r5, sRightVector__9CVector3f@ha /* 80314BF8 00311B58 D4 48 66 F4 */ stfsu f2, sUpVector__9CVector3f@l(r8) /* 80314BFC 00311B5C D4 06 67 0C */ stfsu f0, sLeftVector__9CVector3f@l(r6) /* 80314C00 00311B60 D4 25 67 18 */ stfsu f1, sRightVector__9CVector3f@l(r5) /* 80314C04 00311B64 D4 44 67 24 */ stfsu f2, sForwardVector__9CVector3f@l(r4) /* 80314C08 00311B68 D4 43 67 30 */ stfsu f2, sBackVector__9CVector3f@l(r3) /* 80314C0C 00311B6C D0 49 00 04 */ stfs f2, 4(r9) /* 80314C10 00311B70 D0 49 00 08 */ stfs f2, 8(r9) /* 80314C14 00311B74 D0 48 00 04 */ stfs f2, 4(r8) /* 80314C18 00311B78 D0 28 00 08 */ stfs f1, 8(r8) /* 80314C1C 00311B7C D0 47 00 04 */ stfs f2, 4(r7) /* 80314C20 00311B80 D0 07 00 08 */ stfs f0, 8(r7) /* 80314C24 00311B84 D0 46 00 04 */ stfs f2, 4(r6) /* 80314C28 00311B88 D0 46 00 08 */ stfs f2, 8(r6) /* 80314C2C 00311B8C D0 45 00 04 */ stfs f2, 4(r5) /* 80314C30 00311B90 D0 45 00 08 */ stfs f2, 8(r5) /* 80314C34 00311B94 D0 24 00 04 */ stfs f1, 4(r4) /* 80314C38 00311B98 D0 44 00 08 */ stfs f2, 8(r4) /* 80314C3C 00311B9C D0 03 00 04 */ stfs f0, 4(r3) /* 80314C40 00311BA0 D0 43 00 08 */ stfs f2, 8(r3) /* 80314C44 00311BA4 4E 80 00 20 */ blr .section .sdata2, "a" .balign 8 .global lbl_805AE630 lbl_805AE630: # ROM: 0x3FAED0 .4byte 0 .global lbl_805AE634 lbl_805AE634: # ROM: 0x3FAED4 .float 1.1920929E-7 .global lbl_805AE638 lbl_805AE638: # ROM: 0x3FAED8 .float -1.0 .global lbl_805AE63C lbl_805AE63C: # ROM: 0x3FAEDC .float 1.0 .global lbl_805AE640 lbl_805AE640: # ROM: 0x3FAEE0 .4byte 0x10FD87B5 .4byte 0