.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global PSMTXIdentity PSMTXIdentity: /* 8027BF2C 00277B8C C0 02 A0 74 */ lfs f0, lbl_80642674-_SDA2_BASE_(r2) /* 8027BF30 00277B90 C0 22 A0 70 */ lfs f1, lbl_80642670-_SDA2_BASE_(r2) /* 8027BF34 00277B94 F0 03 00 08 */ psq_st f0, 8(r3), 0, qr0 /* 8027BF38 00277B98 10 41 04 A0 */ ps_merge10 f2, f1, f0 /* 8027BF3C 00277B9C 10 20 0C 60 */ ps_merge01 f1, f0, f1 /* 8027BF40 00277BA0 F0 03 00 18 */ psq_st f0, 24(r3), 0, qr0 /* 8027BF44 00277BA4 F0 03 00 20 */ psq_st f0, 32(r3), 0, qr0 /* 8027BF48 00277BA8 F0 23 00 10 */ psq_st f1, 16(r3), 0, qr0 /* 8027BF4C 00277BAC F0 43 00 00 */ psq_st f2, 0(r3), 0, qr0 /* 8027BF50 00277BB0 F0 43 00 28 */ psq_st f2, 40(r3), 0, qr0 /* 8027BF54 00277BB4 4E 80 00 20 */ blr .global PSMTXCopy PSMTXCopy: /* 8027BF58 00277BB8 E0 03 00 00 */ psq_l f0, 0(r3), 0, qr0 /* 8027BF5C 00277BBC F0 04 00 00 */ psq_st f0, 0(r4), 0, qr0 /* 8027BF60 00277BC0 E0 23 00 08 */ psq_l f1, 8(r3), 0, qr0 /* 8027BF64 00277BC4 F0 24 00 08 */ psq_st f1, 8(r4), 0, qr0 /* 8027BF68 00277BC8 E0 43 00 10 */ psq_l f2, 16(r3), 0, qr0 /* 8027BF6C 00277BCC F0 44 00 10 */ psq_st f2, 16(r4), 0, qr0 /* 8027BF70 00277BD0 E0 63 00 18 */ psq_l f3, 24(r3), 0, qr0 /* 8027BF74 00277BD4 F0 64 00 18 */ psq_st f3, 24(r4), 0, qr0 /* 8027BF78 00277BD8 E0 83 00 20 */ psq_l f4, 32(r3), 0, qr0 /* 8027BF7C 00277BDC F0 84 00 20 */ psq_st f4, 32(r4), 0, qr0 /* 8027BF80 00277BE0 E0 A3 00 28 */ psq_l f5, 40(r3), 0, qr0 /* 8027BF84 00277BE4 F0 A4 00 28 */ psq_st f5, 40(r4), 0, qr0 /* 8027BF88 00277BE8 4E 80 00 20 */ blr .global PSMTXConcat PSMTXConcat: /* 8027BF8C 00277BEC 94 21 FF C0 */ stwu r1, -0x40(r1) /* 8027BF90 00277BF0 E0 03 00 00 */ psq_l f0, 0(r3), 0, qr0 /* 8027BF94 00277BF4 D9 C1 00 08 */ stfd f14, 8(r1) /* 8027BF98 00277BF8 E0 C4 00 00 */ psq_l f6, 0(r4), 0, qr0 /* 8027BF9C 00277BFC 3C C0 80 64 */ lis r6, lbl_8063DB08@ha /* 8027BFA0 00277C00 E0 E4 00 08 */ psq_l f7, 8(r4), 0, qr0 /* 8027BFA4 00277C04 D9 E1 00 10 */ stfd f15, 0x10(r1) /* 8027BFA8 00277C08 38 C6 DB 08 */ addi r6, r6, lbl_8063DB08@l /* 8027BFAC 00277C0C DB E1 00 28 */ stfd f31, 0x28(r1) /* 8027BFB0 00277C10 E1 04 00 10 */ psq_l f8, 16(r4), 0, qr0 /* 8027BFB4 00277C14 11 86 00 18 */ ps_muls0 f12, f6, f0 /* 8027BFB8 00277C18 E0 43 00 10 */ psq_l f2, 16(r3), 0, qr0 /* 8027BFBC 00277C1C 11 A7 00 18 */ ps_muls0 f13, f7, f0 /* 8027BFC0 00277C20 E3 E6 00 00 */ psq_l f31, 0(r6), 0, qr0 /* 8027BFC4 00277C24 11 C6 00 98 */ ps_muls0 f14, f6, f2 /* 8027BFC8 00277C28 E1 24 00 18 */ psq_l f9, 24(r4), 0, qr0 /* 8027BFCC 00277C2C 11 E7 00 98 */ ps_muls0 f15, f7, f2 /* 8027BFD0 00277C30 E0 23 00 08 */ psq_l f1, 8(r3), 0, qr0 /* 8027BFD4 00277C34 11 88 60 1E */ ps_madds1 f12, f8, f0, f12 /* 8027BFD8 00277C38 E0 63 00 18 */ psq_l f3, 24(r3), 0, qr0 /* 8027BFDC 00277C3C 11 C8 70 9E */ ps_madds1 f14, f8, f2, f14 /* 8027BFE0 00277C40 E1 44 00 20 */ psq_l f10, 32(r4), 0, qr0 /* 8027BFE4 00277C44 11 A9 68 1E */ ps_madds1 f13, f9, f0, f13 /* 8027BFE8 00277C48 E1 64 00 28 */ psq_l f11, 40(r4), 0, qr0 /* 8027BFEC 00277C4C 11 E9 78 9E */ ps_madds1 f15, f9, f2, f15 /* 8027BFF0 00277C50 E0 83 00 20 */ psq_l f4, 32(r3), 0, qr0 /* 8027BFF4 00277C54 E0 A3 00 28 */ psq_l f5, 40(r3), 0, qr0 /* 8027BFF8 00277C58 11 8A 60 5C */ ps_madds0 f12, f10, f1, f12 /* 8027BFFC 00277C5C 11 AB 68 5C */ ps_madds0 f13, f11, f1, f13 /* 8027C000 00277C60 11 CA 70 DC */ ps_madds0 f14, f10, f3, f14 /* 8027C004 00277C64 11 EB 78 DC */ ps_madds0 f15, f11, f3, f15 /* 8027C008 00277C68 F1 85 00 00 */ psq_st f12, 0(r5), 0, qr0 /* 8027C00C 00277C6C 10 46 01 18 */ ps_muls0 f2, f6, f4 /* 8027C010 00277C70 11 BF 68 5E */ ps_madds1 f13, f31, f1, f13 /* 8027C014 00277C74 10 07 01 18 */ ps_muls0 f0, f7, f4 /* 8027C018 00277C78 F1 C5 00 10 */ psq_st f14, 16(r5), 0, qr0 /* 8027C01C 00277C7C 11 FF 78 DE */ ps_madds1 f15, f31, f3, f15 /* 8027C020 00277C80 F1 A5 00 08 */ psq_st f13, 8(r5), 0, qr0 /* 8027C024 00277C84 10 48 11 1E */ ps_madds1 f2, f8, f4, f2 /* 8027C028 00277C88 10 09 01 1E */ ps_madds1 f0, f9, f4, f0 /* 8027C02C 00277C8C 10 4A 11 5C */ ps_madds0 f2, f10, f5, f2 /* 8027C030 00277C90 C9 C1 00 08 */ lfd f14, 8(r1) /* 8027C034 00277C94 F1 E5 00 18 */ psq_st f15, 24(r5), 0, qr0 /* 8027C038 00277C98 10 0B 01 5C */ ps_madds0 f0, f11, f5, f0 /* 8027C03C 00277C9C F0 45 00 20 */ psq_st f2, 32(r5), 0, qr0 /* 8027C040 00277CA0 10 1F 01 5E */ ps_madds1 f0, f31, f5, f0 /* 8027C044 00277CA4 C9 E1 00 10 */ lfd f15, 0x10(r1) /* 8027C048 00277CA8 F0 05 00 28 */ psq_st f0, 40(r5), 0, qr0 /* 8027C04C 00277CAC CB E1 00 28 */ lfd f31, 0x28(r1) /* 8027C050 00277CB0 38 21 00 40 */ addi r1, r1, 0x40 /* 8027C054 00277CB4 4E 80 00 20 */ blr .global PSMTXTranspose PSMTXTranspose: /* 8027C058 00277CB8 E0 23 00 00 */ psq_l f1, 0(r3), 0, qr0 /* 8027C05C 00277CBC E0 43 00 10 */ psq_l f2, 16(r3), 0, qr0 /* 8027C060 00277CC0 C0 02 A0 74 */ lfs f0, lbl_80642674-_SDA2_BASE_(r2) /* 8027C064 00277CC4 10 81 14 20 */ ps_merge00 f4, f1, f2 /* 8027C068 00277CC8 E0 63 80 08 */ psq_l f3, 8(r3), 1, qr0 /* 8027C06C 00277CCC 10 A1 14 E0 */ ps_merge11 f5, f1, f2 /* 8027C070 00277CD0 E0 43 80 18 */ psq_l f2, 24(r3), 1, qr0 /* 8027C074 00277CD4 E0 23 00 20 */ psq_l f1, 32(r3), 0, qr0 /* 8027C078 00277CD8 10 43 14 20 */ ps_merge00 f2, f3, f2 /* 8027C07C 00277CDC F0 84 00 00 */ psq_st f4, 0(r4), 0, qr0 /* 8027C080 00277CE0 10 81 04 20 */ ps_merge00 f4, f1, f0 /* 8027C084 00277CE4 C0 63 00 28 */ lfs f3, 0x28(r3) /* 8027C088 00277CE8 F0 A4 00 10 */ psq_st f5, 16(r4), 0, qr0 /* 8027C08C 00277CEC 10 A1 04 A0 */ ps_merge10 f5, f1, f0 /* 8027C090 00277CF0 D0 04 00 2C */ stfs f0, 0x2c(r4) /* 8027C094 00277CF4 F0 44 00 20 */ psq_st f2, 32(r4), 0, qr0 /* 8027C098 00277CF8 F0 84 00 08 */ psq_st f4, 8(r4), 0, qr0 /* 8027C09C 00277CFC F0 A4 00 18 */ psq_st f5, 24(r4), 0, qr0 /* 8027C0A0 00277D00 D0 64 00 28 */ stfs f3, 0x28(r4) /* 8027C0A4 00277D04 4E 80 00 20 */ blr .global PSMTXInverse PSMTXInverse: /* 8027C0A8 00277D08 E0 03 80 00 */ psq_l f0, 0(r3), 1, qr0 /* 8027C0AC 00277D0C E0 23 00 04 */ psq_l f1, 4(r3), 0, qr0 /* 8027C0B0 00277D10 E0 43 80 10 */ psq_l f2, 16(r3), 1, qr0 /* 8027C0B4 00277D14 10 C1 04 A0 */ ps_merge10 f6, f1, f0 /* 8027C0B8 00277D18 E0 63 00 14 */ psq_l f3, 20(r3), 0, qr0 /* 8027C0BC 00277D1C E0 83 80 20 */ psq_l f4, 32(r3), 1, qr0 /* 8027C0C0 00277D20 10 E3 14 A0 */ ps_merge10 f7, f3, f2 /* 8027C0C4 00277D24 E0 A3 00 24 */ psq_l f5, 36(r3), 0, qr0 /* 8027C0C8 00277D28 11 63 01 B2 */ ps_mul f11, f3, f6 /* 8027C0CC 00277D2C 11 A5 01 F2 */ ps_mul f13, f5, f7 /* 8027C0D0 00277D30 11 05 24 A0 */ ps_merge10 f8, f5, f4 /* 8027C0D4 00277D34 11 61 59 F8 */ ps_msub f11, f1, f7, f11 /* 8027C0D8 00277D38 11 81 02 32 */ ps_mul f12, f1, f8 /* 8027C0DC 00277D3C 11 A3 6A 38 */ ps_msub f13, f3, f8, f13 /* 8027C0E0 00277D40 11 43 01 32 */ ps_mul f10, f3, f4 /* 8027C0E4 00277D44 11 85 61 B8 */ ps_msub f12, f5, f6, f12 /* 8027C0E8 00277D48 11 20 01 72 */ ps_mul f9, f0, f5 /* 8027C0EC 00277D4C 11 01 00 B2 */ ps_mul f8, f1, f2 /* 8027C0F0 00277D50 10 C6 30 28 */ ps_sub f6, f6, f6 /* 8027C0F4 00277D54 11 42 51 78 */ ps_msub f10, f2, f5, f10 /* 8027C0F8 00277D58 10 E0 03 72 */ ps_mul f7, f0, f13 /* 8027C0FC 00277D5C 11 21 49 38 */ ps_msub f9, f1, f4, f9 /* 8027C100 00277D60 10 E2 3B 3A */ ps_madd f7, f2, f12, f7 /* 8027C104 00277D64 11 00 40 F8 */ ps_msub f8, f0, f3, f8 /* 8027C108 00277D68 10 E4 3A FA */ ps_madd f7, f4, f11, f7 /* 8027C10C 00277D6C 10 07 30 40 */ ps_cmpo0 cr0, f7, f6 /* 8027C110 00277D70 40 82 00 0C */ bne lbl_8027C11C /* 8027C114 00277D74 38 60 00 00 */ li r3, 0 /* 8027C118 00277D78 4E 80 00 20 */ blr lbl_8027C11C: /* 8027C11C 00277D7C EC 00 38 30 */ fres f0, f7 /* 8027C120 00277D80 10 C0 00 2A */ ps_add f6, f0, f0 /* 8027C124 00277D84 10 A0 00 32 */ ps_mul f5, f0, f0 /* 8027C128 00277D88 10 07 31 7C */ ps_nmsub f0, f7, f5, f6 /* 8027C12C 00277D8C C0 23 00 0C */ lfs f1, 0xc(r3) /* 8027C130 00277D90 11 AD 00 18 */ ps_muls0 f13, f13, f0 /* 8027C134 00277D94 C0 43 00 1C */ lfs f2, 0x1c(r3) /* 8027C138 00277D98 11 8C 00 18 */ ps_muls0 f12, f12, f0 /* 8027C13C 00277D9C C0 63 00 2C */ lfs f3, 0x2c(r3) /* 8027C140 00277DA0 11 6B 00 18 */ ps_muls0 f11, f11, f0 /* 8027C144 00277DA4 10 AD 64 20 */ ps_merge00 f5, f13, f12 /* 8027C148 00277DA8 11 4A 00 18 */ ps_muls0 f10, f10, f0 /* 8027C14C 00277DAC 10 8D 64 E0 */ ps_merge11 f4, f13, f12 /* 8027C150 00277DB0 11 29 00 18 */ ps_muls0 f9, f9, f0 /* 8027C154 00277DB4 F0 A4 00 00 */ psq_st f5, 0(r4), 0, qr0 /* 8027C158 00277DB8 10 CD 00 72 */ ps_mul f6, f13, f1 /* 8027C15C 00277DBC F0 84 00 10 */ psq_st f4, 16(r4), 0, qr0 /* 8027C160 00277DC0 11 08 00 18 */ ps_muls0 f8, f8, f0 /* 8027C164 00277DC4 10 CC 30 BA */ ps_madd f6, f12, f2, f6 /* 8027C168 00277DC8 F1 44 80 20 */ psq_st f10, 32(r4), 1, qr0 /* 8027C16C 00277DCC 10 CB 30 FE */ ps_nmadd f6, f11, f3, f6 /* 8027C170 00277DD0 F1 24 80 24 */ psq_st f9, 36(r4), 1, qr0 /* 8027C174 00277DD4 10 EA 00 72 */ ps_mul f7, f10, f1 /* 8027C178 00277DD8 10 AB 34 20 */ ps_merge00 f5, f11, f6 /* 8027C17C 00277DDC F1 04 80 28 */ psq_st f8, 40(r4), 1, qr0 /* 8027C180 00277DE0 10 8B 34 E0 */ ps_merge11 f4, f11, f6 /* 8027C184 00277DE4 F0 A4 00 08 */ psq_st f5, 8(r4), 0, qr0 /* 8027C188 00277DE8 10 E9 38 BA */ ps_madd f7, f9, f2, f7 /* 8027C18C 00277DEC F0 84 00 18 */ psq_st f4, 24(r4), 0, qr0 /* 8027C190 00277DF0 10 E8 38 FE */ ps_nmadd f7, f8, f3, f7 /* 8027C194 00277DF4 38 60 00 01 */ li r3, 1 /* 8027C198 00277DF8 F0 E4 80 2C */ psq_st f7, 44(r4), 1, qr0 /* 8027C19C 00277DFC 4E 80 00 20 */ blr .global PSMTXInvXpose PSMTXInvXpose: /* 8027C1A0 00277E00 E0 03 80 00 */ psq_l f0, 0(r3), 1, qr0 /* 8027C1A4 00277E04 E0 23 00 04 */ psq_l f1, 4(r3), 0, qr0 /* 8027C1A8 00277E08 E0 43 80 10 */ psq_l f2, 16(r3), 1, qr0 /* 8027C1AC 00277E0C 10 C1 04 A0 */ ps_merge10 f6, f1, f0 /* 8027C1B0 00277E10 E0 63 00 14 */ psq_l f3, 20(r3), 0, qr0 /* 8027C1B4 00277E14 E0 83 80 20 */ psq_l f4, 32(r3), 1, qr0 /* 8027C1B8 00277E18 10 E3 14 A0 */ ps_merge10 f7, f3, f2 /* 8027C1BC 00277E1C E0 A3 00 24 */ psq_l f5, 36(r3), 0, qr0 /* 8027C1C0 00277E20 11 63 01 B2 */ ps_mul f11, f3, f6 /* 8027C1C4 00277E24 11 05 24 A0 */ ps_merge10 f8, f5, f4 /* 8027C1C8 00277E28 11 A5 01 F2 */ ps_mul f13, f5, f7 /* 8027C1CC 00277E2C 11 61 59 F8 */ ps_msub f11, f1, f7, f11 /* 8027C1D0 00277E30 11 81 02 32 */ ps_mul f12, f1, f8 /* 8027C1D4 00277E34 11 A3 6A 38 */ ps_msub f13, f3, f8, f13 /* 8027C1D8 00277E38 11 85 61 B8 */ ps_msub f12, f5, f6, f12 /* 8027C1DC 00277E3C 11 43 01 32 */ ps_mul f10, f3, f4 /* 8027C1E0 00277E40 11 20 01 72 */ ps_mul f9, f0, f5 /* 8027C1E4 00277E44 11 01 00 B2 */ ps_mul f8, f1, f2 /* 8027C1E8 00277E48 11 42 51 78 */ ps_msub f10, f2, f5, f10 /* 8027C1EC 00277E4C 11 21 49 38 */ ps_msub f9, f1, f4, f9 /* 8027C1F0 00277E50 11 00 40 F8 */ ps_msub f8, f0, f3, f8 /* 8027C1F4 00277E54 10 E0 03 72 */ ps_mul f7, f0, f13 /* 8027C1F8 00277E58 10 21 08 28 */ ps_sub f1, f1, f1 /* 8027C1FC 00277E5C 10 E2 3B 3A */ ps_madd f7, f2, f12, f7 /* 8027C200 00277E60 10 E4 3A FA */ ps_madd f7, f4, f11, f7 /* 8027C204 00277E64 10 07 08 40 */ ps_cmpo0 cr0, f7, f1 /* 8027C208 00277E68 40 82 00 0C */ bne lbl_8027C214 /* 8027C20C 00277E6C 38 60 00 00 */ li r3, 0 /* 8027C210 00277E70 4E 80 00 20 */ blr lbl_8027C214: /* 8027C214 00277E74 EC 00 38 30 */ fres f0, f7 /* 8027C218 00277E78 F0 24 80 0C */ psq_st f1, 12(r4), 1, qr0 /* 8027C21C 00277E7C 10 C0 00 2A */ ps_add f6, f0, f0 /* 8027C220 00277E80 10 A0 00 32 */ ps_mul f5, f0, f0 /* 8027C224 00277E84 F0 24 80 1C */ psq_st f1, 28(r4), 1, qr0 /* 8027C228 00277E88 10 07 31 7C */ ps_nmsub f0, f7, f5, f6 /* 8027C22C 00277E8C F0 24 80 2C */ psq_st f1, 44(r4), 1, qr0 /* 8027C230 00277E90 11 AD 00 18 */ ps_muls0 f13, f13, f0 /* 8027C234 00277E94 11 8C 00 18 */ ps_muls0 f12, f12, f0 /* 8027C238 00277E98 11 6B 00 18 */ ps_muls0 f11, f11, f0 /* 8027C23C 00277E9C F1 A4 00 00 */ psq_st f13, 0(r4), 0, qr0 /* 8027C240 00277EA0 F1 84 00 10 */ psq_st f12, 16(r4), 0, qr0 /* 8027C244 00277EA4 11 4A 00 18 */ ps_muls0 f10, f10, f0 /* 8027C248 00277EA8 11 29 00 18 */ ps_muls0 f9, f9, f0 /* 8027C24C 00277EAC F1 64 00 20 */ psq_st f11, 32(r4), 0, qr0 /* 8027C250 00277EB0 F1 44 80 08 */ psq_st f10, 8(r4), 1, qr0 /* 8027C254 00277EB4 11 08 00 18 */ ps_muls0 f8, f8, f0 /* 8027C258 00277EB8 38 60 00 01 */ li r3, 1 /* 8027C25C 00277EBC F1 24 80 18 */ psq_st f9, 24(r4), 1, qr0 /* 8027C260 00277EC0 F1 04 80 28 */ psq_st f8, 40(r4), 1, qr0 /* 8027C264 00277EC4 4E 80 00 20 */ blr .global PSMTXRotRad PSMTXRotRad: /* 8027C268 00277EC8 94 21 FF D0 */ stwu r1, -0x30(r1) /* 8027C26C 00277ECC 7C 08 02 A6 */ mflr r0 /* 8027C270 00277ED0 90 01 00 34 */ stw r0, 0x34(r1) /* 8027C274 00277ED4 DB E1 00 20 */ stfd f31, 0x20(r1) /* 8027C278 00277ED8 F3 E1 00 28 */ psq_st f31, 40(r1), 0, qr0 /* 8027C27C 00277EDC DB C1 00 10 */ stfd f30, 0x10(r1) /* 8027C280 00277EE0 F3 C1 00 18 */ psq_st f30, 24(r1), 0, qr0 /* 8027C284 00277EE4 FF C0 08 90 */ fmr f30, f1 /* 8027C288 00277EE8 93 E1 00 0C */ stw r31, 0xc(r1) /* 8027C28C 00277EEC 7C 9F 23 78 */ mr r31, r4 /* 8027C290 00277EF0 93 C1 00 08 */ stw r30, 8(r1) /* 8027C294 00277EF4 7C 7E 1B 78 */ mr r30, r3 /* 8027C298 00277EF8 4B F5 81 ED */ bl sin /* 8027C29C 00277EFC FF E0 08 18 */ frsp f31, f1 /* 8027C2A0 00277F00 FC 20 F0 90 */ fmr f1, f30 /* 8027C2A4 00277F04 4B F5 7D D5 */ bl cos /* 8027C2A8 00277F08 FC 40 08 18 */ frsp f2, f1 /* 8027C2AC 00277F0C 7F C3 F3 78 */ mr r3, r30 /* 8027C2B0 00277F10 FC 20 F8 90 */ fmr f1, f31 /* 8027C2B4 00277F14 7F E4 07 74 */ extsb r4, r31 /* 8027C2B8 00277F18 48 00 00 2D */ bl PSMTXRotTrig /* 8027C2BC 00277F1C E3 E1 00 28 */ psq_l f31, 40(r1), 0, qr0 /* 8027C2C0 00277F20 CB E1 00 20 */ lfd f31, 0x20(r1) /* 8027C2C4 00277F24 E3 C1 00 18 */ psq_l f30, 24(r1), 0, qr0 /* 8027C2C8 00277F28 CB C1 00 10 */ lfd f30, 0x10(r1) /* 8027C2CC 00277F2C 83 E1 00 0C */ lwz r31, 0xc(r1) /* 8027C2D0 00277F30 80 01 00 34 */ lwz r0, 0x34(r1) /* 8027C2D4 00277F34 83 C1 00 08 */ lwz r30, 8(r1) /* 8027C2D8 00277F38 7C 08 03 A6 */ mtlr r0 /* 8027C2DC 00277F3C 38 21 00 30 */ addi r1, r1, 0x30 /* 8027C2E0 00277F40 4E 80 00 20 */ blr .global PSMTXRotTrig PSMTXRotTrig: /* 8027C2E4 00277F44 FC A0 08 18 */ frsp f5, f1 /* 8027C2E8 00277F48 60 80 00 20 */ ori r0, r4, 0x20 /* 8027C2EC 00277F4C FC 80 10 18 */ frsp f4, f2 /* 8027C2F0 00277F50 28 00 00 78 */ cmplwi r0, 0x78 /* 8027C2F4 00277F54 C0 02 A0 74 */ lfs f0, lbl_80642674-_SDA2_BASE_(r2) /* 8027C2F8 00277F58 10 40 28 50 */ ps_neg f2, f5 /* 8027C2FC 00277F5C C0 22 A0 70 */ lfs f1, lbl_80642670-_SDA2_BASE_(r2) /* 8027C300 00277F60 41 82 00 18 */ beq lbl_8027C318 /* 8027C304 00277F64 28 00 00 79 */ cmplwi r0, 0x79 /* 8027C308 00277F68 41 82 00 38 */ beq lbl_8027C340 /* 8027C30C 00277F6C 28 00 00 7A */ cmplwi r0, 0x7a /* 8027C310 00277F70 41 82 00 5C */ beq lbl_8027C36C /* 8027C314 00277F74 4E 80 00 20 */ blr lbl_8027C318: /* 8027C318 00277F78 10 65 24 20 */ ps_merge00 f3, f5, f4 /* 8027C31C 00277F7C F0 23 80 00 */ psq_st f1, 0(r3), 1, qr0 /* 8027C320 00277F80 10 24 14 20 */ ps_merge00 f1, f4, f2 /* 8027C324 00277F84 F0 03 00 04 */ psq_st f0, 4(r3), 0, qr0 /* 8027C328 00277F88 F0 03 00 0C */ psq_st f0, 12(r3), 0, qr0 /* 8027C32C 00277F8C F0 03 00 1C */ psq_st f0, 28(r3), 0, qr0 /* 8027C330 00277F90 F0 03 80 2C */ psq_st f0, 44(r3), 1, qr0 /* 8027C334 00277F94 F0 63 00 24 */ psq_st f3, 36(r3), 0, qr0 /* 8027C338 00277F98 F0 23 00 14 */ psq_st f1, 20(r3), 0, qr0 /* 8027C33C 00277F9C 4E 80 00 20 */ blr lbl_8027C340: /* 8027C340 00277FA0 10 64 04 20 */ ps_merge00 f3, f4, f0 /* 8027C344 00277FA4 F0 03 00 18 */ psq_st f0, 24(r3), 0, qr0 /* 8027C348 00277FA8 10 20 0C 20 */ ps_merge00 f1, f0, f1 /* 8027C34C 00277FAC 10 42 04 20 */ ps_merge00 f2, f2, f0 /* 8027C350 00277FB0 10 05 04 20 */ ps_merge00 f0, f5, f0 /* 8027C354 00277FB4 F0 63 00 00 */ psq_st f3, 0(r3), 0, qr0 /* 8027C358 00277FB8 F0 63 00 28 */ psq_st f3, 40(r3), 0, qr0 /* 8027C35C 00277FBC F0 23 00 10 */ psq_st f1, 16(r3), 0, qr0 /* 8027C360 00277FC0 F0 03 00 08 */ psq_st f0, 8(r3), 0, qr0 /* 8027C364 00277FC4 F0 43 00 20 */ psq_st f2, 32(r3), 0, qr0 /* 8027C368 00277FC8 4E 80 00 20 */ blr lbl_8027C36C: /* 8027C36C 00277FCC 10 65 24 20 */ ps_merge00 f3, f5, f4 /* 8027C370 00277FD0 F0 03 00 08 */ psq_st f0, 8(r3), 0, qr0 /* 8027C374 00277FD4 10 44 14 20 */ ps_merge00 f2, f4, f2 /* 8027C378 00277FD8 10 21 04 20 */ ps_merge00 f1, f1, f0 /* 8027C37C 00277FDC F0 03 00 18 */ psq_st f0, 24(r3), 0, qr0 /* 8027C380 00277FE0 F0 03 00 20 */ psq_st f0, 32(r3), 0, qr0 /* 8027C384 00277FE4 F0 63 00 10 */ psq_st f3, 16(r3), 0, qr0 /* 8027C388 00277FE8 F0 43 00 00 */ psq_st f2, 0(r3), 0, qr0 /* 8027C38C 00277FEC F0 23 00 28 */ psq_st f1, 40(r3), 0, qr0 /* 8027C390 00277FF0 4E 80 00 20 */ blr .global __PSMTXRotAxisRadInternal __PSMTXRotAxisRadInternal: /* 8027C394 00277FF4 E0 64 00 00 */ psq_l f3, 0(r4), 0, qr0 /* 8027C398 00277FF8 FD 60 10 18 */ frsp f11, f2 /* 8027C39C 00277FFC C1 42 A0 78 */ lfs f10, lbl_80642678-_SDA2_BASE_(r2) /* 8027C3A0 00278000 FD 80 08 18 */ frsp f12, f1 /* 8027C3A4 00278004 10 83 00 F2 */ ps_mul f4, f3, f3 /* 8027C3A8 00278008 C0 44 00 08 */ lfs f2, 8(r4) /* 8027C3AC 0027800C ED 0A 50 2A */ fadds f8, f10, f10 /* 8027C3B0 00278010 C1 22 A0 7C */ lfs f9, lbl_8064267C-_SDA2_BASE_(r2) /* 8027C3B4 00278014 EC 2A 50 28 */ fsubs f1, f10, f10 /* 8027C3B8 00278018 10 A2 20 BA */ ps_madd f5, f2, f2, f4 /* 8027C3BC 0027801C EC 08 58 28 */ fsubs f0, f8, f11 /* 8027C3C0 00278020 11 6B 5C 20 */ ps_merge00 f11, f11, f11 /* 8027C3C4 00278024 10 C5 20 94 */ ps_sum0 f6, f5, f2, f4 /* 8027C3C8 00278028 FC E0 30 34 */ frsqrte f7, f6 /* 8027C3CC 0027802C EC 87 01 F2 */ fmuls f4, f7, f7 /* 8027C3D0 00278030 EC A7 02 B2 */ fmuls f5, f7, f10 /* 8027C3D4 00278034 EC 84 49 BC */ fnmsubs f4, f4, f6, f9 /* 8027C3D8 00278038 EC E4 01 72 */ fmuls f7, f4, f5 /* 8027C3DC 0027803C 10 63 01 D8 */ ps_muls0 f3, f3, f7 /* 8027C3E0 00278040 10 42 01 D8 */ ps_muls0 f2, f2, f7 /* 8027C3E4 00278044 10 C3 00 18 */ ps_muls0 f6, f3, f0 /* 8027C3E8 00278048 10 E2 00 18 */ ps_muls0 f7, f2, f0 /* 8027C3EC 0027804C 11 43 03 18 */ ps_muls0 f10, f3, f12 /* 8027C3F0 00278050 10 A6 00 DA */ ps_muls1 f5, f6, f3 /* 8027C3F4 00278054 10 86 00 D8 */ ps_muls0 f4, f6, f3 /* 8027C3F8 00278058 10 C6 00 98 */ ps_muls0 f6, f6, f2 /* 8027C3FC 0027805C EC 02 2B 3C */ fnmsubs f0, f2, f12, f5 /* 8027C400 00278060 10 60 50 50 */ ps_neg f3, f10 /* 8027C404 00278064 ED 02 2B 3A */ fmadds f8, f2, f12, f5 /* 8027C408 00278068 10 84 58 14 */ ps_sum0 f4, f4, f0, f11 /* 8027C40C 0027806C 10 03 30 54 */ ps_sum0 f0, f3, f1, f6 /* 8027C410 00278070 10 E7 00 98 */ ps_muls0 f7, f7, f2 /* 8027C414 00278074 11 26 50 54 */ ps_sum0 f9, f6, f1, f10 /* 8027C418 00278078 F0 83 00 00 */ psq_st f4, 0(r3), 0, qr0 /* 8027C41C 0027807C 10 66 19 94 */ ps_sum0 f3, f6, f6, f3 /* 8027C420 00278080 10 AB 2A 16 */ ps_sum1 f5, f11, f8, f5 /* 8027C424 00278084 F0 03 00 18 */ psq_st f0, 24(r3), 0, qr0 /* 8027C428 00278088 10 E7 58 54 */ ps_sum0 f7, f7, f1, f11 /* 8027C42C 0027808C 10 CA 30 D6 */ ps_sum1 f6, f10, f3, f6 /* 8027C430 00278090 F1 23 00 08 */ psq_st f9, 8(r3), 0, qr0 /* 8027C434 00278094 F0 A3 00 10 */ psq_st f5, 16(r3), 0, qr0 /* 8027C438 00278098 F0 C3 00 20 */ psq_st f6, 32(r3), 0, qr0 /* 8027C43C 0027809C F0 E3 00 28 */ psq_st f7, 40(r3), 0, qr0 /* 8027C440 002780A0 4E 80 00 20 */ blr .global PSMTXRotAxisRad PSMTXRotAxisRad: /* 8027C444 002780A4 94 21 FF D0 */ stwu r1, -0x30(r1) /* 8027C448 002780A8 7C 08 02 A6 */ mflr r0 /* 8027C44C 002780AC 90 01 00 34 */ stw r0, 0x34(r1) /* 8027C450 002780B0 DB E1 00 20 */ stfd f31, 0x20(r1) /* 8027C454 002780B4 F3 E1 00 28 */ psq_st f31, 40(r1), 0, qr0 /* 8027C458 002780B8 DB C1 00 10 */ stfd f30, 0x10(r1) /* 8027C45C 002780BC F3 C1 00 18 */ psq_st f30, 24(r1), 0, qr0 /* 8027C460 002780C0 FF C0 08 90 */ fmr f30, f1 /* 8027C464 002780C4 93 E1 00 0C */ stw r31, 0xc(r1) /* 8027C468 002780C8 7C 9F 23 78 */ mr r31, r4 /* 8027C46C 002780CC 93 C1 00 08 */ stw r30, 8(r1) /* 8027C470 002780D0 7C 7E 1B 78 */ mr r30, r3 /* 8027C474 002780D4 4B F5 80 11 */ bl sin /* 8027C478 002780D8 FF E0 08 18 */ frsp f31, f1 /* 8027C47C 002780DC FC 20 F0 90 */ fmr f1, f30 /* 8027C480 002780E0 4B F5 7B F9 */ bl cos /* 8027C484 002780E4 FC 40 08 18 */ frsp f2, f1 /* 8027C488 002780E8 7F C3 F3 78 */ mr r3, r30 /* 8027C48C 002780EC FC 20 F8 90 */ fmr f1, f31 /* 8027C490 002780F0 7F E4 FB 78 */ mr r4, r31 /* 8027C494 002780F4 4B FF FF 01 */ bl __PSMTXRotAxisRadInternal /* 8027C498 002780F8 E3 E1 00 28 */ psq_l f31, 40(r1), 0, qr0 /* 8027C49C 002780FC CB E1 00 20 */ lfd f31, 0x20(r1) /* 8027C4A0 00278100 E3 C1 00 18 */ psq_l f30, 24(r1), 0, qr0 /* 8027C4A4 00278104 CB C1 00 10 */ lfd f30, 0x10(r1) /* 8027C4A8 00278108 83 E1 00 0C */ lwz r31, 0xc(r1) /* 8027C4AC 0027810C 80 01 00 34 */ lwz r0, 0x34(r1) /* 8027C4B0 00278110 83 C1 00 08 */ lwz r30, 8(r1) /* 8027C4B4 00278114 7C 08 03 A6 */ mtlr r0 /* 8027C4B8 00278118 38 21 00 30 */ addi r1, r1, 0x30 /* 8027C4BC 0027811C 4E 80 00 20 */ blr .global PSMTXTrans PSMTXTrans: /* 8027C4C0 00278120 C0 02 A0 74 */ lfs f0, lbl_80642674-_SDA2_BASE_(r2) /* 8027C4C4 00278124 C0 82 A0 70 */ lfs f4, lbl_80642670-_SDA2_BASE_(r2) /* 8027C4C8 00278128 D0 23 00 0C */ stfs f1, 0xc(r3) /* 8027C4CC 0027812C D0 43 00 1C */ stfs f2, 0x1c(r3) /* 8027C4D0 00278130 F0 03 00 04 */ psq_st f0, 4(r3), 0, qr0 /* 8027C4D4 00278134 F0 03 00 20 */ psq_st f0, 32(r3), 0, qr0 /* 8027C4D8 00278138 D0 03 00 10 */ stfs f0, 0x10(r3) /* 8027C4DC 0027813C D0 83 00 14 */ stfs f4, 0x14(r3) /* 8027C4E0 00278140 D0 03 00 18 */ stfs f0, 0x18(r3) /* 8027C4E4 00278144 D0 83 00 28 */ stfs f4, 0x28(r3) /* 8027C4E8 00278148 D0 63 00 2C */ stfs f3, 0x2c(r3) /* 8027C4EC 0027814C D0 83 00 00 */ stfs f4, 0(r3) /* 8027C4F0 00278150 4E 80 00 20 */ blr .global PSMTXTransApply PSMTXTransApply: /* 8027C4F4 00278154 E0 83 00 00 */ psq_l f4, 0(r3), 0, qr0 /* 8027C4F8 00278158 FC 20 08 18 */ frsp f1, f1 /* 8027C4FC 0027815C E0 A3 00 08 */ psq_l f5, 8(r3), 0, qr0 /* 8027C500 00278160 FC 40 10 18 */ frsp f2, f2 /* 8027C504 00278164 E0 E3 00 18 */ psq_l f7, 24(r3), 0, qr0 /* 8027C508 00278168 FC 60 18 18 */ frsp f3, f3 /* 8027C50C 0027816C E1 03 00 28 */ psq_l f8, 40(r3), 0, qr0 /* 8027C510 00278170 F0 84 00 00 */ psq_st f4, 0(r4), 0, qr0 /* 8027C514 00278174 10 A1 29 56 */ ps_sum1 f5, f1, f5, f5 /* 8027C518 00278178 E0 C3 00 10 */ psq_l f6, 16(r3), 0, qr0 /* 8027C51C 0027817C F0 A4 00 08 */ psq_st f5, 8(r4), 0, qr0 /* 8027C520 00278180 10 E2 39 D6 */ ps_sum1 f7, f2, f7, f7 /* 8027C524 00278184 E1 23 00 20 */ psq_l f9, 32(r3), 0, qr0 /* 8027C528 00278188 F0 C4 00 10 */ psq_st f6, 16(r4), 0, qr0 /* 8027C52C 0027818C 11 03 42 16 */ ps_sum1 f8, f3, f8, f8 /* 8027C530 00278190 F0 E4 00 18 */ psq_st f7, 24(r4), 0, qr0 /* 8027C534 00278194 F1 24 00 20 */ psq_st f9, 32(r4), 0, qr0 /* 8027C538 00278198 F1 04 00 28 */ psq_st f8, 40(r4), 0, qr0 /* 8027C53C 0027819C 4E 80 00 20 */ blr .global PSMTXScale PSMTXScale: /* 8027C540 002781A0 C0 02 A0 74 */ lfs f0, lbl_80642674-_SDA2_BASE_(r2) /* 8027C544 002781A4 D0 23 00 00 */ stfs f1, 0(r3) /* 8027C548 002781A8 F0 03 00 04 */ psq_st f0, 4(r3), 0, qr0 /* 8027C54C 002781AC F0 03 00 0C */ psq_st f0, 12(r3), 0, qr0 /* 8027C550 002781B0 D0 43 00 14 */ stfs f2, 0x14(r3) /* 8027C554 002781B4 F0 03 00 18 */ psq_st f0, 24(r3), 0, qr0 /* 8027C558 002781B8 F0 03 00 20 */ psq_st f0, 32(r3), 0, qr0 /* 8027C55C 002781BC D0 63 00 28 */ stfs f3, 0x28(r3) /* 8027C560 002781C0 D0 03 00 2C */ stfs f0, 0x2c(r3) /* 8027C564 002781C4 4E 80 00 20 */ blr .global PSMTXScaleApply PSMTXScaleApply: /* 8027C568 002781C8 FC 20 08 18 */ frsp f1, f1 /* 8027C56C 002781CC E0 83 00 00 */ psq_l f4, 0(r3), 0, qr0 /* 8027C570 002781D0 FC 40 10 18 */ frsp f2, f2 /* 8027C574 002781D4 E0 A3 00 08 */ psq_l f5, 8(r3), 0, qr0 /* 8027C578 002781D8 FC 60 18 18 */ frsp f3, f3 /* 8027C57C 002781DC 10 84 00 58 */ ps_muls0 f4, f4, f1 /* 8027C580 002781E0 E0 C3 00 10 */ psq_l f6, 16(r3), 0, qr0 /* 8027C584 002781E4 10 A5 00 58 */ ps_muls0 f5, f5, f1 /* 8027C588 002781E8 E0 E3 00 18 */ psq_l f7, 24(r3), 0, qr0 /* 8027C58C 002781EC 10 C6 00 98 */ ps_muls0 f6, f6, f2 /* 8027C590 002781F0 E1 03 00 20 */ psq_l f8, 32(r3), 0, qr0 /* 8027C594 002781F4 F0 84 00 00 */ psq_st f4, 0(r4), 0, qr0 /* 8027C598 002781F8 10 E7 00 98 */ ps_muls0 f7, f7, f2 /* 8027C59C 002781FC E0 43 00 28 */ psq_l f2, 40(r3), 0, qr0 /* 8027C5A0 00278200 F0 A4 00 08 */ psq_st f5, 8(r4), 0, qr0 /* 8027C5A4 00278204 11 08 00 D8 */ ps_muls0 f8, f8, f3 /* 8027C5A8 00278208 F0 C4 00 10 */ psq_st f6, 16(r4), 0, qr0 /* 8027C5AC 0027820C 10 42 00 D8 */ ps_muls0 f2, f2, f3 /* 8027C5B0 00278210 F0 E4 00 18 */ psq_st f7, 24(r4), 0, qr0 /* 8027C5B4 00278214 F1 04 00 20 */ psq_st f8, 32(r4), 0, qr0 /* 8027C5B8 00278218 F0 44 00 28 */ psq_st f2, 40(r4), 0, qr0 /* 8027C5BC 0027821C 4E 80 00 20 */ blr .global PSMTXQuat PSMTXQuat: /* 8027C5C0 00278220 E0 84 00 00 */ psq_l f4, 0(r4), 0, qr0 /* 8027C5C4 00278224 E0 A4 00 08 */ psq_l f5, 8(r4), 0, qr0 /* 8027C5C8 00278228 10 C4 01 32 */ ps_mul f6, f4, f4 /* 8027C5CC 0027822C C0 22 A0 70 */ lfs f1, lbl_80642670-_SDA2_BASE_(r2) /* 8027C5D0 00278230 11 24 24 A0 */ ps_merge10 f9, f4, f4 /* 8027C5D4 00278234 EC 01 08 28 */ fsubs f0, f1, f1 /* 8027C5D8 00278238 11 05 31 7A */ ps_madd f8, f5, f5, f6 /* 8027C5DC 0027823C 11 45 01 5A */ ps_muls1 f10, f5, f5 /* 8027C5E0 00278240 EC 41 08 2A */ fadds f2, f1, f1 /* 8027C5E4 00278244 F0 03 80 0C */ psq_st f0, 12(r3), 1, qr0 /* 8027C5E8 00278248 10 68 42 14 */ ps_sum0 f3, f8, f8, f8 /* 8027C5EC 0027824C 10 E5 01 72 */ ps_mul f7, f5, f5 /* 8027C5F0 00278250 F0 03 80 2C */ psq_st f0, 44(r3), 1, qr0 /* 8027C5F4 00278254 11 84 52 7A */ ps_madd f12, f4, f9, f10 /* 8027C5F8 00278258 ED A0 18 30 */ fres f13, f3 /* 8027C5FC 0027825C 10 63 13 7C */ ps_nmsub f3, f3, f13, f2 /* 8027C600 00278260 11 69 01 5A */ ps_muls1 f11, f9, f5 /* 8027C604 00278264 11 44 52 78 */ ps_msub f10, f4, f9, f10 /* 8027C608 00278268 10 6D 00 F2 */ ps_mul f3, f13, f3 /* 8027C60C 0027826C 11 24 59 5C */ ps_madds0 f9, f4, f5, f11 /* 8027C610 00278270 11 07 32 16 */ ps_sum1 f8, f7, f8, f6 /* 8027C614 00278274 EC 63 00 B2 */ fmuls f3, f3, f2 /* 8027C618 00278278 11 6B 48 BC */ ps_nmsub f11, f11, f2, f9 /* 8027C61C 0027827C 10 C6 31 94 */ ps_sum0 f6, f6, f6, f6 /* 8027C620 00278280 11 29 00 F2 */ ps_mul f9, f9, f3 /* 8027C624 00278284 11 6B 00 F2 */ ps_mul f11, f11, f3 /* 8027C628 00278288 11 08 08 FC */ ps_nmsub f8, f8, f3, f1 /* 8027C62C 0027828C 11 8C 00 F2 */ ps_mul f12, f12, f3 /* 8027C630 00278290 F1 23 80 08 */ psq_st f9, 8(r3), 1, qr0 /* 8027C634 00278294 11 4A 00 F2 */ ps_mul f10, f10, f3 /* 8027C638 00278298 10 EB 04 A0 */ ps_merge10 f7, f11, f0 /* 8027C63C 0027829C 10 AC 44 20 */ ps_merge00 f5, f12, f8 /* 8027C640 002782A0 10 88 54 A0 */ ps_merge10 f4, f8, f10 /* 8027C644 002782A4 11 AB 4C 60 */ ps_merge01 f13, f11, f9 /* 8027C648 002782A8 F0 E3 00 18 */ psq_st f7, 24(r3), 0, qr0 /* 8027C64C 002782AC 10 C6 08 FC */ ps_nmsub f6, f6, f3, f1 /* 8027C650 002782B0 F0 A3 00 10 */ psq_st f5, 16(r3), 0, qr0 /* 8027C654 002782B4 F0 C3 80 28 */ psq_st f6, 40(r3), 1, qr0 /* 8027C658 002782B8 F0 83 00 00 */ psq_st f4, 0(r3), 0, qr0 /* 8027C65C 002782BC F1 A3 00 20 */ psq_st f13, 32(r3), 0, qr0 /* 8027C660 002782C0 4E 80 00 20 */ blr .global C_MTXLookAt C_MTXLookAt: /* 8027C664 002782C4 94 21 FF C0 */ stwu r1, -0x40(r1) /* 8027C668 002782C8 7C 08 02 A6 */ mflr r0 /* 8027C66C 002782CC C0 24 00 00 */ lfs f1, 0(r4) /* 8027C670 002782D0 90 01 00 44 */ stw r0, 0x44(r1) /* 8027C674 002782D4 C0 06 00 00 */ lfs f0, 0(r6) /* 8027C678 002782D8 93 E1 00 3C */ stw r31, 0x3c(r1) /* 8027C67C 002782DC 7C BF 2B 78 */ mr r31, r5 /* 8027C680 002782E0 EC 81 00 28 */ fsubs f4, f1, f0 /* 8027C684 002782E4 C0 64 00 04 */ lfs f3, 4(r4) /* 8027C688 002782E8 93 C1 00 38 */ stw r30, 0x38(r1) /* 8027C68C 002782EC 7C 9E 23 78 */ mr r30, r4 /* 8027C690 002782F0 C0 46 00 04 */ lfs f2, 4(r6) /* 8027C694 002782F4 93 A1 00 34 */ stw r29, 0x34(r1) /* 8027C698 002782F8 EC 43 10 28 */ fsubs f2, f3, f2 /* 8027C69C 002782FC C0 24 00 08 */ lfs f1, 8(r4) /* 8027C6A0 00278300 C0 06 00 08 */ lfs f0, 8(r6) /* 8027C6A4 00278304 7C 7D 1B 78 */ mr r29, r3 /* 8027C6A8 00278308 38 61 00 20 */ addi r3, r1, 0x20 /* 8027C6AC 0027830C D0 81 00 20 */ stfs f4, 0x20(r1) /* 8027C6B0 00278310 EC 01 00 28 */ fsubs f0, f1, f0 /* 8027C6B4 00278314 D0 41 00 24 */ stfs f2, 0x24(r1) /* 8027C6B8 00278318 7C 64 1B 78 */ mr r4, r3 /* 8027C6BC 0027831C D0 01 00 28 */ stfs f0, 0x28(r1) /* 8027C6C0 00278320 48 00 06 69 */ bl PSVECNormalize /* 8027C6C4 00278324 7F E3 FB 78 */ mr r3, r31 /* 8027C6C8 00278328 38 81 00 20 */ addi r4, r1, 0x20 /* 8027C6CC 0027832C 38 A1 00 14 */ addi r5, r1, 0x14 /* 8027C6D0 00278330 48 00 07 19 */ bl PSVECCrossProduct /* 8027C6D4 00278334 38 61 00 14 */ addi r3, r1, 0x14 /* 8027C6D8 00278338 7C 64 1B 78 */ mr r4, r3 /* 8027C6DC 0027833C 48 00 06 4D */ bl PSVECNormalize /* 8027C6E0 00278340 38 61 00 20 */ addi r3, r1, 0x20 /* 8027C6E4 00278344 38 81 00 14 */ addi r4, r1, 0x14 /* 8027C6E8 00278348 38 A1 00 08 */ addi r5, r1, 8 /* 8027C6EC 0027834C 48 00 06 FD */ bl PSVECCrossProduct /* 8027C6F0 00278350 C0 01 00 14 */ lfs f0, 0x14(r1) /* 8027C6F4 00278354 C0 9E 00 00 */ lfs f4, 0(r30) /* 8027C6F8 00278358 D0 1D 00 00 */ stfs f0, 0(r29) /* 8027C6FC 0027835C C0 7E 00 04 */ lfs f3, 4(r30) /* 8027C700 00278360 C0 01 00 18 */ lfs f0, 0x18(r1) /* 8027C704 00278364 C0 BE 00 08 */ lfs f5, 8(r30) /* 8027C708 00278368 D0 1D 00 04 */ stfs f0, 4(r29) /* 8027C70C 0027836C C0 01 00 1C */ lfs f0, 0x1c(r1) /* 8027C710 00278370 D0 1D 00 08 */ stfs f0, 8(r29) /* 8027C714 00278374 C0 21 00 14 */ lfs f1, 0x14(r1) /* 8027C718 00278378 C0 01 00 18 */ lfs f0, 0x18(r1) /* 8027C71C 0027837C EC 24 00 72 */ fmuls f1, f4, f1 /* 8027C720 00278380 C0 41 00 1C */ lfs f2, 0x1c(r1) /* 8027C724 00278384 EC 03 00 32 */ fmuls f0, f3, f0 /* 8027C728 00278388 EC 45 00 B2 */ fmuls f2, f5, f2 /* 8027C72C 0027838C EC 01 00 2A */ fadds f0, f1, f0 /* 8027C730 00278390 EC 02 00 2A */ fadds f0, f2, f0 /* 8027C734 00278394 FC 00 00 50 */ fneg f0, f0 /* 8027C738 00278398 D0 1D 00 0C */ stfs f0, 0xc(r29) /* 8027C73C 0027839C C0 01 00 08 */ lfs f0, 8(r1) /* 8027C740 002783A0 D0 1D 00 10 */ stfs f0, 0x10(r29) /* 8027C744 002783A4 C0 01 00 0C */ lfs f0, 0xc(r1) /* 8027C748 002783A8 D0 1D 00 14 */ stfs f0, 0x14(r29) /* 8027C74C 002783AC C0 01 00 10 */ lfs f0, 0x10(r1) /* 8027C750 002783B0 D0 1D 00 18 */ stfs f0, 0x18(r29) /* 8027C754 002783B4 C0 21 00 08 */ lfs f1, 8(r1) /* 8027C758 002783B8 C0 01 00 0C */ lfs f0, 0xc(r1) /* 8027C75C 002783BC C0 41 00 10 */ lfs f2, 0x10(r1) /* 8027C760 002783C0 EC 24 00 72 */ fmuls f1, f4, f1 /* 8027C764 002783C4 EC 03 00 32 */ fmuls f0, f3, f0 /* 8027C768 002783C8 EC 45 00 B2 */ fmuls f2, f5, f2 /* 8027C76C 002783CC EC 01 00 2A */ fadds f0, f1, f0 /* 8027C770 002783D0 EC 02 00 2A */ fadds f0, f2, f0 /* 8027C774 002783D4 FC 00 00 50 */ fneg f0, f0 /* 8027C778 002783D8 D0 1D 00 1C */ stfs f0, 0x1c(r29) /* 8027C77C 002783DC C0 01 00 20 */ lfs f0, 0x20(r1) /* 8027C780 002783E0 D0 1D 00 20 */ stfs f0, 0x20(r29) /* 8027C784 002783E4 C0 01 00 24 */ lfs f0, 0x24(r1) /* 8027C788 002783E8 D0 1D 00 24 */ stfs f0, 0x24(r29) /* 8027C78C 002783EC C0 01 00 28 */ lfs f0, 0x28(r1) /* 8027C790 002783F0 D0 1D 00 28 */ stfs f0, 0x28(r29) /* 8027C794 002783F4 C0 21 00 20 */ lfs f1, 0x20(r1) /* 8027C798 002783F8 C0 01 00 24 */ lfs f0, 0x24(r1) /* 8027C79C 002783FC C0 41 00 28 */ lfs f2, 0x28(r1) /* 8027C7A0 00278400 EC 24 00 72 */ fmuls f1, f4, f1 /* 8027C7A4 00278404 EC 03 00 32 */ fmuls f0, f3, f0 /* 8027C7A8 00278408 EC 45 00 B2 */ fmuls f2, f5, f2 /* 8027C7AC 0027840C EC 01 00 2A */ fadds f0, f1, f0 /* 8027C7B0 00278410 EC 02 00 2A */ fadds f0, f2, f0 /* 8027C7B4 00278414 FC 00 00 50 */ fneg f0, f0 /* 8027C7B8 00278418 D0 1D 00 2C */ stfs f0, 0x2c(r29) /* 8027C7BC 0027841C 83 E1 00 3C */ lwz r31, 0x3c(r1) /* 8027C7C0 00278420 83 C1 00 38 */ lwz r30, 0x38(r1) /* 8027C7C4 00278424 83 A1 00 34 */ lwz r29, 0x34(r1) /* 8027C7C8 00278428 80 01 00 44 */ lwz r0, 0x44(r1) /* 8027C7CC 0027842C 7C 08 03 A6 */ mtlr r0 /* 8027C7D0 00278430 38 21 00 40 */ addi r1, r1, 0x40 /* 8027C7D4 00278434 4E 80 00 20 */ blr .global C_MTXLightFrustum C_MTXLightFrustum: /* 8027C7D8 00278438 94 21 FF E0 */ stwu r1, -0x20(r1) /* 8027C7DC 0027843C DB E1 00 10 */ stfd f31, 0x10(r1) /* 8027C7E0 00278440 F3 E1 00 18 */ psq_st f31, 24(r1), 0, qr0 /* 8027C7E4 00278444 EC 04 18 28 */ fsubs f0, f4, f3 /* 8027C7E8 00278448 C1 42 A0 74 */ lfs f10, lbl_80642674-_SDA2_BASE_(r2) /* 8027C7EC 0027844C C1 82 A0 70 */ lfs f12, lbl_80642670-_SDA2_BASE_(r2) /* 8027C7F0 00278450 ED 21 10 28 */ fsubs f9, f1, f2 /* 8027C7F4 00278454 C1 62 A0 80 */ lfs f11, lbl_80642680-_SDA2_BASE_(r2) /* 8027C7F8 00278458 EC 64 18 2A */ fadds f3, f4, f3 /* 8027C7FC 0027845C ED AC 00 24 */ fdivs f13, f12, f0 /* 8027C800 00278460 C0 02 A0 84 */ lfs f0, lbl_80642684-_SDA2_BASE_(r2) /* 8027C804 00278464 C3 E1 00 28 */ lfs f31, 0x28(r1) /* 8027C808 00278468 D0 03 00 28 */ stfs f0, 0x28(r3) /* 8027C80C 0027846C D1 43 00 04 */ stfs f10, 4(r3) /* 8027C810 00278470 D1 43 00 0C */ stfs f10, 0xc(r3) /* 8027C814 00278474 EC 8B 01 72 */ fmuls f4, f11, f5 /* 8027C818 00278478 D1 43 00 10 */ stfs f10, 0x10(r3) /* 8027C81C 0027847C EC 01 10 2A */ fadds f0, f1, f2 /* 8027C820 00278480 EC 2D 00 F2 */ fmuls f1, f13, f3 /* 8027C824 00278484 D1 43 00 1C */ stfs f10, 0x1c(r3) /* 8027C828 00278488 EC AC 48 24 */ fdivs f5, f12, f9 /* 8027C82C 0027848C D1 43 00 20 */ stfs f10, 0x20(r3) /* 8027C830 00278490 D1 43 00 24 */ stfs f10, 0x24(r3) /* 8027C834 00278494 D1 43 00 2C */ stfs f10, 0x2c(r3) /* 8027C838 00278498 EC 46 00 72 */ fmuls f2, f6, f1 /* 8027C83C 0027849C EC 05 00 32 */ fmuls f0, f5, f0 /* 8027C840 002784A0 EC 64 03 72 */ fmuls f3, f4, f13 /* 8027C844 002784A4 EC 24 01 72 */ fmuls f1, f4, f5 /* 8027C848 002784A8 EC 07 00 32 */ fmuls f0, f7, f0 /* 8027C84C 002784AC EC 66 00 F2 */ fmuls f3, f6, f3 /* 8027C850 002784B0 EC 42 40 28 */ fsubs f2, f2, f8 /* 8027C854 002784B4 EC 27 00 72 */ fmuls f1, f7, f1 /* 8027C858 002784B8 EC 00 F8 28 */ fsubs f0, f0, f31 /* 8027C85C 002784BC D0 63 00 00 */ stfs f3, 0(r3) /* 8027C860 002784C0 D0 43 00 08 */ stfs f2, 8(r3) /* 8027C864 002784C4 D0 23 00 14 */ stfs f1, 0x14(r3) /* 8027C868 002784C8 D0 03 00 18 */ stfs f0, 0x18(r3) /* 8027C86C 002784CC E3 E1 00 18 */ psq_l f31, 24(r1), 0, qr0 /* 8027C870 002784D0 CB E1 00 10 */ lfd f31, 0x10(r1) /* 8027C874 002784D4 38 21 00 20 */ addi r1, r1, 0x20 /* 8027C878 002784D8 4E 80 00 20 */ blr .global C_MTXLightPerspective C_MTXLightPerspective: /* 8027C87C 002784DC 94 21 FF A0 */ stwu r1, -0x60(r1) /* 8027C880 002784E0 7C 08 02 A6 */ mflr r0 /* 8027C884 002784E4 90 01 00 64 */ stw r0, 0x64(r1) /* 8027C888 002784E8 DB E1 00 50 */ stfd f31, 0x50(r1) /* 8027C88C 002784EC F3 E1 00 58 */ psq_st f31, 88(r1), 0, qr0 /* 8027C890 002784F0 DB C1 00 40 */ stfd f30, 0x40(r1) /* 8027C894 002784F4 F3 C1 00 48 */ psq_st f30, 72(r1), 0, qr0 /* 8027C898 002784F8 DB A1 00 30 */ stfd f29, 0x30(r1) /* 8027C89C 002784FC F3 A1 00 38 */ psq_st f29, 56(r1), 0, qr0 /* 8027C8A0 00278500 DB 81 00 20 */ stfd f28, 0x20(r1) /* 8027C8A4 00278504 F3 81 00 28 */ psq_st f28, 40(r1), 0, qr0 /* 8027C8A8 00278508 DB 61 00 10 */ stfd f27, 0x10(r1) /* 8027C8AC 0027850C F3 61 00 18 */ psq_st f27, 24(r1), 0, qr0 /* 8027C8B0 00278510 FF 60 10 90 */ fmr f27, f2 /* 8027C8B4 00278514 C0 E2 A0 78 */ lfs f7, lbl_80642678-_SDA2_BASE_(r2) /* 8027C8B8 00278518 FF 80 18 90 */ fmr f28, f3 /* 8027C8BC 0027851C 93 E1 00 0C */ stw r31, 0xc(r1) /* 8027C8C0 00278520 FF A0 20 90 */ fmr f29, f4 /* 8027C8C4 00278524 EC 27 00 72 */ fmuls f1, f7, f1 /* 8027C8C8 00278528 C0 02 A0 88 */ lfs f0, lbl_80642688-_SDA2_BASE_(r2) /* 8027C8CC 0027852C FF C0 28 90 */ fmr f30, f5 /* 8027C8D0 00278530 FF E0 30 90 */ fmr f31, f6 /* 8027C8D4 00278534 7C 7F 1B 78 */ mr r31, r3 /* 8027C8D8 00278538 EC 20 00 72 */ fmuls f1, f0, f1 /* 8027C8DC 0027853C 4B F5 7C 81 */ bl tan /* 8027C8E0 00278540 FC A0 08 18 */ frsp f5, f1 /* 8027C8E4 00278544 C0 62 A0 74 */ lfs f3, lbl_80642674-_SDA2_BASE_(r2) /* 8027C8E8 00278548 C0 82 A0 70 */ lfs f4, lbl_80642670-_SDA2_BASE_(r2) /* 8027C8EC 0027854C FC 20 F8 50 */ fneg f1, f31 /* 8027C8F0 00278550 C0 02 A0 84 */ lfs f0, lbl_80642684-_SDA2_BASE_(r2) /* 8027C8F4 00278554 FC 40 F0 50 */ fneg f2, f30 /* 8027C8F8 00278558 EC 84 28 24 */ fdivs f4, f4, f5 /* 8027C8FC 0027855C D0 3F 00 18 */ stfs f1, 0x18(r31) /* 8027C900 00278560 D0 1F 00 28 */ stfs f0, 0x28(r31) /* 8027C904 00278564 D0 7F 00 04 */ stfs f3, 4(r31) /* 8027C908 00278568 D0 5F 00 08 */ stfs f2, 8(r31) /* 8027C90C 0027856C D0 7F 00 0C */ stfs f3, 0xc(r31) /* 8027C910 00278570 EC 24 D8 24 */ fdivs f1, f4, f27 /* 8027C914 00278574 D0 7F 00 10 */ stfs f3, 0x10(r31) /* 8027C918 00278578 D0 7F 00 1C */ stfs f3, 0x1c(r31) /* 8027C91C 0027857C D0 7F 00 20 */ stfs f3, 0x20(r31) /* 8027C920 00278580 D0 7F 00 24 */ stfs f3, 0x24(r31) /* 8027C924 00278584 D0 7F 00 2C */ stfs f3, 0x2c(r31) /* 8027C928 00278588 EC 3C 00 72 */ fmuls f1, f28, f1 /* 8027C92C 0027858C EC 04 07 72 */ fmuls f0, f4, f29 /* 8027C930 00278590 D0 3F 00 00 */ stfs f1, 0(r31) /* 8027C934 00278594 D0 1F 00 14 */ stfs f0, 0x14(r31) /* 8027C938 00278598 E3 E1 00 58 */ psq_l f31, 88(r1), 0, qr0 /* 8027C93C 0027859C CB E1 00 50 */ lfd f31, 0x50(r1) /* 8027C940 002785A0 E3 C1 00 48 */ psq_l f30, 72(r1), 0, qr0 /* 8027C944 002785A4 CB C1 00 40 */ lfd f30, 0x40(r1) /* 8027C948 002785A8 E3 A1 00 38 */ psq_l f29, 56(r1), 0, qr0 /* 8027C94C 002785AC CB A1 00 30 */ lfd f29, 0x30(r1) /* 8027C950 002785B0 E3 81 00 28 */ psq_l f28, 40(r1), 0, qr0 /* 8027C954 002785B4 CB 81 00 20 */ lfd f28, 0x20(r1) /* 8027C958 002785B8 E3 61 00 18 */ psq_l f27, 24(r1), 0, qr0 /* 8027C95C 002785BC CB 61 00 10 */ lfd f27, 0x10(r1) /* 8027C960 002785C0 83 E1 00 0C */ lwz r31, 0xc(r1) /* 8027C964 002785C4 80 01 00 64 */ lwz r0, 0x64(r1) /* 8027C968 002785C8 7C 08 03 A6 */ mtlr r0 /* 8027C96C 002785CC 38 21 00 60 */ addi r1, r1, 0x60 /* 8027C970 002785D0 4E 80 00 20 */ blr .global C_MTXLightOrtho C_MTXLightOrtho: /* 8027C974 002785D4 ED 64 18 28 */ fsubs f11, f4, f3 /* 8027C978 002785D8 C1 22 A0 74 */ lfs f9, lbl_80642674-_SDA2_BASE_(r2) /* 8027C97C 002785DC C1 42 A0 70 */ lfs f10, lbl_80642670-_SDA2_BASE_(r2) /* 8027C980 002785E0 EC 01 10 28 */ fsubs f0, f1, f2 /* 8027C984 002785E4 EC 64 18 2A */ fadds f3, f4, f3 /* 8027C988 002785E8 C0 82 A0 80 */ lfs f4, lbl_80642680-_SDA2_BASE_(r2) /* 8027C98C 002785EC ED 8A 58 24 */ fdivs f12, f10, f11 /* 8027C990 002785F0 D1 23 00 04 */ stfs f9, 4(r3) /* 8027C994 002785F4 D1 23 00 08 */ stfs f9, 8(r3) /* 8027C998 002785F8 D1 23 00 10 */ stfs f9, 0x10(r3) /* 8027C99C 002785FC D1 23 00 18 */ stfs f9, 0x18(r3) /* 8027C9A0 00278600 D1 23 00 20 */ stfs f9, 0x20(r3) /* 8027C9A4 00278604 ED 6A 00 24 */ fdivs f11, f10, f0 /* 8027C9A8 00278608 D1 23 00 24 */ stfs f9, 0x24(r3) /* 8027C9AC 0027860C D1 23 00 28 */ stfs f9, 0x28(r3) /* 8027C9B0 00278610 D1 43 00 2C */ stfs f10, 0x2c(r3) /* 8027C9B4 00278614 EC 01 10 2A */ fadds f0, f1, f2 /* 8027C9B8 00278618 FC 20 18 50 */ fneg f1, f3 /* 8027C9BC 0027861C EC 64 03 32 */ fmuls f3, f4, f12 /* 8027C9C0 00278620 FC 00 00 50 */ fneg f0, f0 /* 8027C9C4 00278624 EC 4C 00 72 */ fmuls f2, f12, f1 /* 8027C9C8 00278628 EC 24 02 F2 */ fmuls f1, f4, f11 /* 8027C9CC 0027862C EC 0B 00 32 */ fmuls f0, f11, f0 /* 8027C9D0 00278630 EC 45 00 B2 */ fmuls f2, f5, f2 /* 8027C9D4 00278634 EC 63 01 72 */ fmuls f3, f3, f5 /* 8027C9D8 00278638 EC 06 00 32 */ fmuls f0, f6, f0 /* 8027C9DC 0027863C EC 47 10 2A */ fadds f2, f7, f2 /* 8027C9E0 00278640 EC 21 01 B2 */ fmuls f1, f1, f6 /* 8027C9E4 00278644 D0 63 00 00 */ stfs f3, 0(r3) /* 8027C9E8 00278648 EC 08 00 2A */ fadds f0, f8, f0 /* 8027C9EC 0027864C D0 43 00 0C */ stfs f2, 0xc(r3) /* 8027C9F0 00278650 D0 23 00 14 */ stfs f1, 0x14(r3) /* 8027C9F4 00278654 D0 03 00 1C */ stfs f0, 0x1c(r3) /* 8027C9F8 00278658 4E 80 00 20 */ blr