.include "macros.inc" .section .text, "ax" # 80339878 .global JMAEulerToQuat JMAEulerToQuat: /* 80339878 003367B8 3C E0 80 44 */ lis r7, lbl_80439A20@ha /* 8033987C 003367BC 38 E7 9A 20 */ addi r7, r7, lbl_80439A20@l /* 80339880 003367C0 39 07 00 04 */ addi r8, r7, 4 /* 80339884 003367C4 7C 60 07 34 */ extsh r0, r3 /* 80339888 003367C8 7C 00 0E 70 */ srawi r0, r0, 1 /* 8033988C 003367CC 7C 00 01 94 */ addze r0, r0 /* 80339890 003367D0 54 00 04 3E */ clrlwi r0, r0, 0x10 /* 80339894 003367D4 7C 00 1E 70 */ srawi r0, r0, 3 /* 80339898 003367D8 54 03 18 38 */ slwi r3, r0, 3 /* 8033989C 003367DC 7C 48 1C 2E */ lfsx f2, r8, r3 /* 803398A0 003367E0 7C 80 07 34 */ extsh r0, r4 /* 803398A4 003367E4 7C 00 0E 70 */ srawi r0, r0, 1 /* 803398A8 003367E8 7C 00 01 94 */ addze r0, r0 /* 803398AC 003367EC 54 00 04 3E */ clrlwi r0, r0, 0x10 /* 803398B0 003367F0 7C 00 1E 70 */ srawi r0, r0, 3 /* 803398B4 003367F4 54 04 18 38 */ slwi r4, r0, 3 /* 803398B8 003367F8 7C 68 24 2E */ lfsx f3, r8, r4 /* 803398BC 003367FC 7C A0 07 34 */ extsh r0, r5 /* 803398C0 00336800 7C 00 0E 70 */ srawi r0, r0, 1 /* 803398C4 00336804 7C 00 01 94 */ addze r0, r0 /* 803398C8 00336808 54 00 04 38 */ rlwinm r0, r0, 0, 0x10, 0x1c /* 803398CC 0033680C 7C 88 04 2E */ lfsx f4, r8, r0 /* 803398D0 00336810 7C A7 1C 2E */ lfsx f5, r7, r3 /* 803398D4 00336814 7C C7 24 2E */ lfsx f6, r7, r4 /* 803398D8 00336818 7C E7 04 2E */ lfsx f7, r7, r0 /* 803398DC 0033681C ED 03 01 32 */ fmuls f8, f3, f4 /* 803398E0 00336820 ED 26 01 F2 */ fmuls f9, f6, f7 /* 803398E4 00336824 EC 22 02 32 */ fmuls f1, f2, f8 /* 803398E8 00336828 EC 05 02 72 */ fmuls f0, f5, f9 /* 803398EC 0033682C EC 01 00 2A */ fadds f0, f1, f0 /* 803398F0 00336830 D0 06 00 0C */ stfs f0, 0xc(r6) /* 803398F4 00336834 EC 25 02 32 */ fmuls f1, f5, f8 /* 803398F8 00336838 EC 02 02 72 */ fmuls f0, f2, f9 /* 803398FC 0033683C EC 01 00 28 */ fsubs f0, f1, f0 /* 80339900 00336840 D0 06 00 00 */ stfs f0, 0(r6) /* 80339904 00336844 EC 02 01 B2 */ fmuls f0, f2, f6 /* 80339908 00336848 EC 24 00 32 */ fmuls f1, f4, f0 /* 8033990C 0033684C EC 05 00 F2 */ fmuls f0, f5, f3 /* 80339910 00336850 EC 07 00 32 */ fmuls f0, f7, f0 /* 80339914 00336854 EC 01 00 2A */ fadds f0, f1, f0 /* 80339918 00336858 D0 06 00 04 */ stfs f0, 4(r6) /* 8033991C 0033685C EC 02 00 F2 */ fmuls f0, f2, f3 /* 80339920 00336860 EC 27 00 32 */ fmuls f1, f7, f0 /* 80339924 00336864 EC 05 01 B2 */ fmuls f0, f5, f6 /* 80339928 00336868 EC 04 00 32 */ fmuls f0, f4, f0 /* 8033992C 0033686C EC 01 00 28 */ fsubs f0, f1, f0 /* 80339930 00336870 D0 06 00 08 */ stfs f0, 8(r6) /* 80339934 00336874 4E 80 00 20 */ blr .global JMAQuatLerp JMAQuatLerp: /* 80339938 00336878 E0 03 00 00 */ psq_l f0, 0(r3), 0, qr0 /* 8033993C 0033687C E0 44 00 00 */ psq_l f2, 0(r4), 0, qr0 /* 80339940 00336880 10 60 00 B2 */ ps_mul f3, f0, f2 /* 80339944 00336884 E0 03 00 08 */ psq_l f0, 8(r3), 0, qr0 /* 80339948 00336888 E0 44 00 08 */ psq_l f2, 8(r4), 0, qr0 /* 8033994C 0033688C 10 60 18 BA */ ps_madd f3, f0, f2, f3 /* 80339950 00336890 10 63 18 D4 */ ps_sum0 f3, f3, f3, f3 /* 80339954 00336894 C8 02 CA C8 */ lfd f0, lbl_804564C8-_SDA2_BASE_(r2) /* 80339958 00336898 FC 03 00 40 */ fcmpo cr0, f3, f0 /* 8033995C 0033689C 40 80 00 6C */ bge lbl_803399C8 /* 80339960 003368A0 C0 43 00 00 */ lfs f2, 0(r3) /* 80339964 003368A4 FC 20 08 50 */ fneg f1, f1 /* 80339968 003368A8 C0 04 00 00 */ lfs f0, 0(r4) /* 8033996C 003368AC EC 02 00 2A */ fadds f0, f2, f0 /* 80339970 003368B0 EC 01 00 32 */ fmuls f0, f1, f0 /* 80339974 003368B4 EC 02 00 2A */ fadds f0, f2, f0 /* 80339978 003368B8 D0 05 00 00 */ stfs f0, 0(r5) /* 8033997C 003368BC C0 43 00 04 */ lfs f2, 4(r3) /* 80339980 003368C0 C0 04 00 04 */ lfs f0, 4(r4) /* 80339984 003368C4 EC 02 00 2A */ fadds f0, f2, f0 /* 80339988 003368C8 EC 01 00 32 */ fmuls f0, f1, f0 /* 8033998C 003368CC EC 02 00 2A */ fadds f0, f2, f0 /* 80339990 003368D0 D0 05 00 04 */ stfs f0, 4(r5) /* 80339994 003368D4 C0 43 00 08 */ lfs f2, 8(r3) /* 80339998 003368D8 C0 04 00 08 */ lfs f0, 8(r4) /* 8033999C 003368DC EC 02 00 2A */ fadds f0, f2, f0 /* 803399A0 003368E0 EC 01 00 32 */ fmuls f0, f1, f0 /* 803399A4 003368E4 EC 02 00 2A */ fadds f0, f2, f0 /* 803399A8 003368E8 D0 05 00 08 */ stfs f0, 8(r5) /* 803399AC 003368EC C0 43 00 0C */ lfs f2, 0xc(r3) /* 803399B0 003368F0 C0 04 00 0C */ lfs f0, 0xc(r4) /* 803399B4 003368F4 EC 02 00 2A */ fadds f0, f2, f0 /* 803399B8 003368F8 EC 01 00 32 */ fmuls f0, f1, f0 /* 803399BC 003368FC EC 02 00 2A */ fadds f0, f2, f0 /* 803399C0 00336900 D0 05 00 0C */ stfs f0, 0xc(r5) /* 803399C4 00336904 4E 80 00 20 */ blr lbl_803399C8: /* 803399C8 00336908 C0 43 00 00 */ lfs f2, 0(r3) /* 803399CC 0033690C FC 20 08 50 */ fneg f1, f1 /* 803399D0 00336910 C0 04 00 00 */ lfs f0, 0(r4) /* 803399D4 00336914 EC 02 00 28 */ fsubs f0, f2, f0 /* 803399D8 00336918 EC 01 00 32 */ fmuls f0, f1, f0 /* 803399DC 0033691C EC 02 00 2A */ fadds f0, f2, f0 /* 803399E0 00336920 D0 05 00 00 */ stfs f0, 0(r5) /* 803399E4 00336924 C0 43 00 04 */ lfs f2, 4(r3) /* 803399E8 00336928 C0 04 00 04 */ lfs f0, 4(r4) /* 803399EC 0033692C EC 02 00 28 */ fsubs f0, f2, f0 /* 803399F0 00336930 EC 01 00 32 */ fmuls f0, f1, f0 /* 803399F4 00336934 EC 02 00 2A */ fadds f0, f2, f0 /* 803399F8 00336938 D0 05 00 04 */ stfs f0, 4(r5) /* 803399FC 0033693C C0 43 00 08 */ lfs f2, 8(r3) /* 80339A00 00336940 C0 04 00 08 */ lfs f0, 8(r4) /* 80339A04 00336944 EC 02 00 28 */ fsubs f0, f2, f0 /* 80339A08 00336948 EC 01 00 32 */ fmuls f0, f1, f0 /* 80339A0C 0033694C EC 02 00 2A */ fadds f0, f2, f0 /* 80339A10 00336950 D0 05 00 08 */ stfs f0, 8(r5) /* 80339A14 00336954 C0 43 00 0C */ lfs f2, 0xc(r3) /* 80339A18 00336958 C0 04 00 0C */ lfs f0, 0xc(r4) /* 80339A1C 0033695C EC 02 00 28 */ fsubs f0, f2, f0 /* 80339A20 00336960 EC 01 00 32 */ fmuls f0, f1, f0 /* 80339A24 00336964 EC 02 00 2A */ fadds f0, f2, f0 /* 80339A28 00336968 D0 05 00 0C */ stfs f0, 0xc(r5) /* 80339A2C 0033696C 4E 80 00 20 */ blr .global JMAFastVECNormalize JMAFastVECNormalize: /* 80339A30 00336970 E0 03 00 00 */ psq_l f0, 0(r3), 0, qr0 /* 80339A34 00336974 10 20 00 32 */ ps_mul f1, f0, f0 /* 80339A38 00336978 C0 43 00 08 */ lfs f2, 8(r3) /* 80339A3C 0033697C 10 62 08 BA */ ps_madd f3, f2, f2, f1 /* 80339A40 00336980 10 63 08 54 */ ps_sum0 f3, f3, f1, f1 /* 80339A44 00336984 FC 60 18 34 */ frsqrte f3, f3 /* 80339A48 00336988 10 00 00 D8 */ ps_muls0 f0, f0, f3 /* 80339A4C 0033698C F0 04 00 00 */ psq_st f0, 0(r4), 0, qr0 /* 80339A50 00336990 EC 42 00 F2 */ fmuls f2, f2, f3 /* 80339A54 00336994 D0 44 00 08 */ stfs f2, 8(r4) /* 80339A58 00336998 4E 80 00 20 */ blr .global JMAVECScaleAdd JMAVECScaleAdd: /* 80339A5C 0033699C FC 40 08 90 */ fmr f2, f1 /* 80339A60 003369A0 E0 03 00 00 */ psq_l f0, 0(r3), 0, qr0 /* 80339A64 003369A4 E0 24 00 00 */ psq_l f1, 0(r4), 0, qr0 /* 80339A68 003369A8 10 00 08 9C */ ps_madds0 f0, f0, f2, f1 /* 80339A6C 003369AC F0 05 00 00 */ psq_st f0, 0(r5), 0, qr0 /* 80339A70 003369B0 E0 03 80 08 */ psq_l f0, 8(r3), 1, qr0 /* 80339A74 003369B4 E0 24 80 08 */ psq_l f1, 8(r4), 1, qr0 /* 80339A78 003369B8 10 00 08 9C */ ps_madds0 f0, f0, f2, f1 /* 80339A7C 003369BC F0 05 80 08 */ psq_st f0, 8(r5), 1, qr0 /* 80339A80 003369C0 4E 80 00 20 */ blr .global JMAMTXApplyScale JMAMTXApplyScale: /* 80339A84 003369C4 FC 00 10 90 */ fmr f0, f2 /* 80339A88 003369C8 FC A0 18 90 */ fmr f5, f3 /* 80339A8C 003369CC C0 82 CA D0 */ lfs f4, lbl_804564D0-_SDA2_BASE_(r2) /* 80339A90 003369D0 10 01 04 20 */ ps_merge00 f0, f1, f0 /* 80339A94 003369D4 E0 23 00 00 */ psq_l f1, 0(r3), 0, qr0 /* 80339A98 003369D8 E0 43 00 10 */ psq_l f2, 16(r3), 0, qr0 /* 80339A9C 003369DC E0 63 00 20 */ psq_l f3, 32(r3), 0, qr0 /* 80339AA0 003369E0 10 21 00 32 */ ps_mul f1, f1, f0 /* 80339AA4 003369E4 10 42 00 32 */ ps_mul f2, f2, f0 /* 80339AA8 003369E8 10 63 00 32 */ ps_mul f3, f3, f0 /* 80339AAC 003369EC F0 24 00 00 */ psq_st f1, 0(r4), 0, qr0 /* 80339AB0 003369F0 F0 44 00 10 */ psq_st f2, 16(r4), 0, qr0 /* 80339AB4 003369F4 F0 64 00 20 */ psq_st f3, 32(r4), 0, qr0 /* 80339AB8 003369F8 10 05 24 20 */ ps_merge00 f0, f5, f4 /* 80339ABC 003369FC E0 23 00 08 */ psq_l f1, 8(r3), 0, qr0 /* 80339AC0 00336A00 E0 43 00 18 */ psq_l f2, 24(r3), 0, qr0 /* 80339AC4 00336A04 E0 63 00 28 */ psq_l f3, 40(r3), 0, qr0 /* 80339AC8 00336A08 10 21 00 32 */ ps_mul f1, f1, f0 /* 80339ACC 00336A0C 10 42 00 32 */ ps_mul f2, f2, f0 /* 80339AD0 00336A10 10 63 00 32 */ ps_mul f3, f3, f0 /* 80339AD4 00336A14 F0 24 00 08 */ psq_st f1, 8(r4), 0, qr0 /* 80339AD8 00336A18 F0 44 00 18 */ psq_st f2, 24(r4), 0, qr0 /* 80339ADC 00336A1C F0 64 00 28 */ psq_st f3, 40(r4), 0, qr0 /* 80339AE0 00336A20 4E 80 00 20 */ blr