prime/asm/MetroidPrime/CIkChain.s

796 lines
42 KiB
ArmAsm
Raw Normal View History

.include "macros.inc"
.section .text, "ax" # 0x80003640 - 0x803CB1C0
.global Update__8CIkChainFf
Update__8CIkChainFf:
/* 802258E8 00222848 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802258EC 0022284C 7C 08 02 A6 */ mflr r0
/* 802258F0 00222850 90 01 00 24 */ stw r0, 0x24(r1)
/* 802258F4 00222854 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 802258F8 00222858 7C 7F 1B 78 */ mr r31, r3
/* 802258FC 0022285C 88 03 00 44 */ lbz r0, 0x44(r3)
/* 80225900 00222860 54 00 CF FF */ rlwinm. r0, r0, 0x19, 0x1f, 0x1f
/* 80225904 00222864 41 82 00 28 */ beq lbl_8022592C
/* 80225908 00222868 C0 1F 00 40 */ lfs f0, 0x40(r31)
/* 8022590C 0022286C 38 61 00 0C */ addi r3, r1, 0xc
/* 80225910 00222870 38 8D 95 58 */ addi r4, r13, lbl_805A8118@sda21
/* 80225914 00222874 EC 00 08 2A */ fadds f0, f0, f1
/* 80225918 00222878 D0 01 00 0C */ stfs f0, 0xc(r1)
/* 8022591C 0022287C 4B E5 84 C5 */ bl "Min<f>__5CMathFRCfRCf"
/* 80225920 00222880 C0 03 00 00 */ lfs f0, 0(r3)
/* 80225924 00222884 D0 1F 00 40 */ stfs f0, 0x40(r31)
/* 80225928 00222888 48 00 00 24 */ b lbl_8022594C
lbl_8022592C:
/* 8022592C 0022288C C0 1F 00 40 */ lfs f0, 0x40(r31)
/* 80225930 00222890 38 81 00 08 */ addi r4, r1, 8
/* 80225934 00222894 38 6D 95 5C */ addi r3, r13, lbl_805A811C@sda21
/* 80225938 00222898 EC 00 08 28 */ fsubs f0, f0, f1
/* 8022593C 0022289C D0 01 00 08 */ stfs f0, 8(r1)
/* 80225940 002228A0 4B E2 9D F1 */ bl "Max<f>__5CMathFRCfRCf"
/* 80225944 002228A4 C0 03 00 00 */ lfs f0, 0(r3)
/* 80225948 002228A8 D0 1F 00 40 */ stfs f0, 0x40(r31)
lbl_8022594C:
/* 8022594C 002228AC 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80225950 002228B0 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 80225954 002228B4 7C 08 03 A6 */ mtlr r0
/* 80225958 002228B8 38 21 00 20 */ addi r1, r1, 0x20
/* 8022595C 002228BC 4E 80 00 20 */ blr
.global Deactivate__8CIkChainFv
Deactivate__8CIkChainFv:
/* 80225960 002228C0 88 03 00 44 */ lbz r0, 0x44(r3)
/* 80225964 002228C4 38 80 00 00 */ li r4, 0
/* 80225968 002228C8 50 80 3E 30 */ rlwimi r0, r4, 7, 0x18, 0x18
/* 8022596C 002228CC 98 03 00 44 */ stb r0, 0x44(r3)
/* 80225970 002228D0 4E 80 00 20 */ blr
.global PreRender__8CIkChainFR9CAnimDataRC12CTransform4fRC9CVector3f
PreRender__8CIkChainFR9CAnimDataRC12CTransform4fRC9CVector3f:
/* 80225974 002228D4 94 21 FE 00 */ stwu r1, -0x200(r1)
/* 80225978 002228D8 7C 08 02 A6 */ mflr r0
/* 8022597C 002228DC C0 02 B4 A8 */ lfs f0, lbl_805AD1C8@sda21(r2)
/* 80225980 002228E0 90 01 02 04 */ stw r0, 0x204(r1)
/* 80225984 002228E4 93 E1 01 FC */ stw r31, 0x1fc(r1)
/* 80225988 002228E8 7C DF 33 78 */ mr r31, r6
/* 8022598C 002228EC 93 C1 01 F8 */ stw r30, 0x1f8(r1)
/* 80225990 002228F0 7C 9E 23 78 */ mr r30, r4
/* 80225994 002228F4 93 A1 01 F4 */ stw r29, 0x1f4(r1)
/* 80225998 002228F8 7C 7D 1B 78 */ mr r29, r3
/* 8022599C 002228FC 93 81 01 F0 */ stw r28, 0x1f0(r1)
/* 802259A0 00222900 7C BC 2B 78 */ mr r28, r5
/* 802259A4 00222904 C0 23 00 40 */ lfs f1, 0x40(r3)
/* 802259A8 00222908 FC 01 00 40 */ fcmpo cr0, f1, f0
/* 802259AC 0022290C 40 81 04 50 */ ble lbl_80225DFC
/* 802259B0 00222910 88 1D 00 02 */ lbz r0, 2(r29)
/* 802259B4 00222914 38 61 01 88 */ addi r3, r1, 0x188
/* 802259B8 00222918 38 A1 00 08 */ addi r5, r1, 8
/* 802259BC 0022291C 38 C0 00 00 */ li r6, 0
/* 802259C0 00222920 98 01 00 08 */ stb r0, 8(r1)
/* 802259C4 00222924 4B E0 68 B1 */ bl GetLocatorTransform__9CAnimDataCF6CSegIdPC13CCharAnimTime
/* 802259C8 00222928 38 61 01 B8 */ addi r3, r1, 0x1b8
/* 802259CC 0022292C 38 81 01 88 */ addi r4, r1, 0x188
/* 802259D0 00222930 48 0E D1 A5 */ bl __ct__12CTransform4fFRC12CTransform4f
/* 802259D4 00222934 C0 3D 00 3C */ lfs f1, 0x3c(r29)
/* 802259D8 00222938 7F 84 E3 78 */ mr r4, r28
/* 802259DC 0022293C C0 1C 00 2C */ lfs f0, 0x2c(r28)
/* 802259E0 00222940 38 61 00 D0 */ addi r3, r1, 0xd0
/* 802259E4 00222944 C0 7D 00 38 */ lfs f3, 0x38(r29)
/* 802259E8 00222948 38 A1 00 18 */ addi r5, r1, 0x18
/* 802259EC 0022294C C0 5C 00 1C */ lfs f2, 0x1c(r28)
/* 802259F0 00222950 EC 81 00 28 */ fsubs f4, f1, f0
/* 802259F4 00222954 C0 3D 00 34 */ lfs f1, 0x34(r29)
/* 802259F8 00222958 C0 1C 00 0C */ lfs f0, 0xc(r28)
/* 802259FC 0022295C EC 43 10 28 */ fsubs f2, f3, f2
/* 80225A00 00222960 D0 81 00 20 */ stfs f4, 0x20(r1)
/* 80225A04 00222964 EC 01 00 28 */ fsubs f0, f1, f0
/* 80225A08 00222968 D0 41 00 1C */ stfs f2, 0x1c(r1)
/* 80225A0C 0022296C D0 01 00 18 */ stfs f0, 0x18(r1)
/* 80225A10 00222970 48 0E D0 15 */ bl TransposeRotate__12CTransform4fCFRC9CVector3f
/* 80225A14 00222974 C0 21 00 D0 */ lfs f1, 0xd0(r1)
/* 80225A18 00222978 38 61 00 C4 */ addi r3, r1, 0xc4
/* 80225A1C 0022297C C0 E1 00 D4 */ lfs f7, 0xd4(r1)
/* 80225A20 00222980 38 81 01 B8 */ addi r4, r1, 0x1b8
/* 80225A24 00222984 C0 C1 00 D8 */ lfs f6, 0xd8(r1)
/* 80225A28 00222988 38 A1 00 0C */ addi r5, r1, 0xc
/* 80225A2C 0022298C C0 1F 00 00 */ lfs f0, 0(r31)
/* 80225A30 00222990 C0 9F 00 04 */ lfs f4, 4(r31)
/* 80225A34 00222994 C0 7F 00 08 */ lfs f3, 8(r31)
/* 80225A38 00222998 EC A1 00 24 */ fdivs f5, f1, f0
/* 80225A3C 0022299C C0 41 01 C4 */ lfs f2, 0x1c4(r1)
/* 80225A40 002229A0 D0 21 01 4C */ stfs f1, 0x14c(r1)
/* 80225A44 002229A4 C0 21 01 D4 */ lfs f1, 0x1d4(r1)
/* 80225A48 002229A8 C0 01 01 E4 */ lfs f0, 0x1e4(r1)
/* 80225A4C 002229AC D0 E1 01 50 */ stfs f7, 0x150(r1)
/* 80225A50 002229B0 EC 87 20 24 */ fdivs f4, f7, f4
/* 80225A54 002229B4 D0 C1 01 54 */ stfs f6, 0x154(r1)
/* 80225A58 002229B8 D0 A1 01 4C */ stfs f5, 0x14c(r1)
/* 80225A5C 002229BC EC 66 18 24 */ fdivs f3, f6, f3
/* 80225A60 002229C0 D0 81 01 50 */ stfs f4, 0x150(r1)
/* 80225A64 002229C4 EC 45 10 28 */ fsubs f2, f5, f2
/* 80225A68 002229C8 D0 61 01 54 */ stfs f3, 0x154(r1)
/* 80225A6C 002229CC EC 24 08 28 */ fsubs f1, f4, f1
/* 80225A70 002229D0 EC 03 00 28 */ fsubs f0, f3, f0
/* 80225A74 002229D4 D0 41 00 0C */ stfs f2, 0xc(r1)
/* 80225A78 002229D8 D0 21 00 10 */ stfs f1, 0x10(r1)
/* 80225A7C 002229DC D0 01 00 14 */ stfs f0, 0x14(r1)
/* 80225A80 002229E0 48 0E CF A5 */ bl TransposeRotate__12CTransform4fCFRC9CVector3f
/* 80225A84 002229E4 C0 41 00 C4 */ lfs f2, 0xc4(r1)
/* 80225A88 002229E8 3B FE 03 3C */ addi r31, r30, 0x33c
/* 80225A8C 002229EC C0 21 00 C8 */ lfs f1, 0xc8(r1)
/* 80225A90 002229F0 7F 84 E3 78 */ mr r4, r28
/* 80225A94 002229F4 C0 01 00 CC */ lfs f0, 0xcc(r1)
/* 80225A98 002229F8 38 61 01 58 */ addi r3, r1, 0x158
/* 80225A9C 002229FC D0 41 01 4C */ stfs f2, 0x14c(r1)
/* 80225AA0 00222A00 38 A1 01 B8 */ addi r5, r1, 0x1b8
/* 80225AA4 00222A04 D0 21 01 50 */ stfs f1, 0x150(r1)
/* 80225AA8 00222A08 D0 01 01 54 */ stfs f0, 0x154(r1)
/* 80225AAC 00222A0C 88 1D 00 02 */ lbz r0, 2(r29)
/* 80225AB0 00222A10 80 FE 04 04 */ lwz r7, 0x404(r30)
/* 80225AB4 00222A14 54 00 08 3C */ slwi r0, r0, 1
/* 80225AB8 00222A18 7C DF 02 14 */ add r6, r31, r0
/* 80225ABC 00222A1C 88 06 00 01 */ lbz r0, 1(r6)
/* 80225AC0 00222A20 54 06 2C F4 */ rlwinm r6, r0, 5, 0x13, 0x1a
/* 80225AC4 00222A24 38 C6 00 04 */ addi r6, r6, 4
/* 80225AC8 00222A28 7C C7 32 14 */ add r6, r7, r6
/* 80225ACC 00222A2C C0 06 00 04 */ lfs f0, 4(r6)
/* 80225AD0 00222A30 C0 A6 00 08 */ lfs f5, 8(r6)
/* 80225AD4 00222A34 C0 C6 00 0C */ lfs f6, 0xc(r6)
/* 80225AD8 00222A38 FC 40 00 50 */ fneg f2, f0
/* 80225ADC 00222A3C C0 26 00 00 */ lfs f1, 0(r6)
/* 80225AE0 00222A40 FC 60 28 50 */ fneg f3, f5
/* 80225AE4 00222A44 FC 80 30 50 */ fneg f4, f6
/* 80225AE8 00222A48 D0 21 01 3C */ stfs f1, 0x13c(r1)
/* 80225AEC 00222A4C D0 01 01 40 */ stfs f0, 0x140(r1)
/* 80225AF0 00222A50 D0 A1 01 44 */ stfs f5, 0x144(r1)
/* 80225AF4 00222A54 D0 C1 01 48 */ stfs f6, 0x148(r1)
/* 80225AF8 00222A58 88 1D 00 01 */ lbz r0, 1(r29)
/* 80225AFC 00222A5C 54 06 08 3C */ slwi r6, r0, 1
/* 80225B00 00222A60 38 06 00 01 */ addi r0, r6, 1
/* 80225B04 00222A64 7C 1F 00 AE */ lbzx r0, r31, r0
/* 80225B08 00222A68 54 06 2C F4 */ rlwinm r6, r0, 5, 0x13, 0x1a
/* 80225B0C 00222A6C 38 C6 00 04 */ addi r6, r6, 4
/* 80225B10 00222A70 7C C7 32 14 */ add r6, r7, r6
/* 80225B14 00222A74 C0 A6 00 04 */ lfs f5, 4(r6)
/* 80225B18 00222A78 C0 C6 00 08 */ lfs f6, 8(r6)
/* 80225B1C 00222A7C C0 E6 00 0C */ lfs f7, 0xc(r6)
/* 80225B20 00222A80 C0 06 00 00 */ lfs f0, 0(r6)
/* 80225B24 00222A84 D0 01 01 2C */ stfs f0, 0x12c(r1)
/* 80225B28 00222A88 D0 A1 01 30 */ stfs f5, 0x130(r1)
/* 80225B2C 00222A8C D0 C1 01 34 */ stfs f6, 0x134(r1)
/* 80225B30 00222A90 D0 E1 01 38 */ stfs f7, 0x138(r1)
/* 80225B34 00222A94 88 1D 00 00 */ lbz r0, 0(r29)
/* 80225B38 00222A98 54 06 08 3C */ slwi r6, r0, 1
/* 80225B3C 00222A9C 38 06 00 01 */ addi r0, r6, 1
/* 80225B40 00222AA0 7C 1F 00 AE */ lbzx r0, r31, r0
/* 80225B44 00222AA4 54 06 2C F4 */ rlwinm r6, r0, 5, 0x13, 0x1a
/* 80225B48 00222AA8 38 C6 00 04 */ addi r6, r6, 4
/* 80225B4C 00222AAC 7C C7 32 14 */ add r6, r7, r6
/* 80225B50 00222AB0 C0 A6 00 04 */ lfs f5, 4(r6)
/* 80225B54 00222AB4 C0 C6 00 08 */ lfs f6, 8(r6)
/* 80225B58 00222AB8 C0 E6 00 0C */ lfs f7, 0xc(r6)
/* 80225B5C 00222ABC C0 06 00 00 */ lfs f0, 0(r6)
/* 80225B60 00222AC0 D0 01 01 1C */ stfs f0, 0x11c(r1)
/* 80225B64 00222AC4 D0 A1 01 20 */ stfs f5, 0x120(r1)
/* 80225B68 00222AC8 D0 C1 01 24 */ stfs f6, 0x124(r1)
/* 80225B6C 00222ACC D0 E1 01 28 */ stfs f7, 0x128(r1)
/* 80225B70 00222AD0 D0 21 00 94 */ stfs f1, 0x94(r1)
/* 80225B74 00222AD4 D0 41 00 98 */ stfs f2, 0x98(r1)
/* 80225B78 00222AD8 D0 61 00 9C */ stfs f3, 0x9c(r1)
/* 80225B7C 00222ADC D0 81 00 A0 */ stfs f4, 0xa0(r1)
/* 80225B80 00222AE0 48 0E CD D1 */ bl __ml__12CTransform4fCFRC12CTransform4f
/* 80225B84 00222AE4 38 61 00 A4 */ addi r3, r1, 0xa4
/* 80225B88 00222AE8 38 81 01 58 */ addi r4, r1, 0x158
/* 80225B8C 00222AEC 48 0E C5 9D */ bl FromMatrix__11CQuaternionFRC12CTransform4f
/* 80225B90 00222AF0 38 61 00 B4 */ addi r3, r1, 0xb4
/* 80225B94 00222AF4 38 81 00 A4 */ addi r4, r1, 0xa4
/* 80225B98 00222AF8 38 A1 00 94 */ addi r5, r1, 0x94
/* 80225B9C 00222AFC 48 0E B6 05 */ bl __ml__11CQuaternionCFRC11CQuaternion
/* 80225BA0 00222B00 C1 61 00 B4 */ lfs f11, 0xb4(r1)
/* 80225BA4 00222B04 7F A3 EB 78 */ mr r3, r29
/* 80225BA8 00222B08 C1 41 00 B8 */ lfs f10, 0xb8(r1)
/* 80225BAC 00222B0C 38 81 00 FC */ addi r4, r1, 0xfc
/* 80225BB0 00222B10 C1 21 00 BC */ lfs f9, 0xbc(r1)
/* 80225BB4 00222B14 38 A1 00 EC */ addi r5, r1, 0xec
/* 80225BB8 00222B18 C1 01 00 C0 */ lfs f8, 0xc0(r1)
/* 80225BBC 00222B1C 38 C1 01 4C */ addi r6, r1, 0x14c
/* 80225BC0 00222B20 C0 E1 01 3C */ lfs f7, 0x13c(r1)
/* 80225BC4 00222B24 C0 C1 01 40 */ lfs f6, 0x140(r1)
/* 80225BC8 00222B28 C0 A1 01 44 */ lfs f5, 0x144(r1)
/* 80225BCC 00222B2C C0 81 01 48 */ lfs f4, 0x148(r1)
/* 80225BD0 00222B30 C0 61 01 2C */ lfs f3, 0x12c(r1)
/* 80225BD4 00222B34 C0 41 01 30 */ lfs f2, 0x130(r1)
/* 80225BD8 00222B38 C0 21 01 34 */ lfs f1, 0x134(r1)
/* 80225BDC 00222B3C C0 01 01 38 */ lfs f0, 0x138(r1)
/* 80225BE0 00222B40 D1 61 01 0C */ stfs f11, 0x10c(r1)
/* 80225BE4 00222B44 D1 41 01 10 */ stfs f10, 0x110(r1)
/* 80225BE8 00222B48 D1 21 01 14 */ stfs f9, 0x114(r1)
/* 80225BEC 00222B4C D1 01 01 18 */ stfs f8, 0x118(r1)
/* 80225BF0 00222B50 D0 E1 00 FC */ stfs f7, 0xfc(r1)
/* 80225BF4 00222B54 D0 C1 01 00 */ stfs f6, 0x100(r1)
/* 80225BF8 00222B58 D0 A1 01 04 */ stfs f5, 0x104(r1)
/* 80225BFC 00222B5C D0 81 01 08 */ stfs f4, 0x108(r1)
/* 80225C00 00222B60 D0 61 00 EC */ stfs f3, 0xec(r1)
/* 80225C04 00222B64 D0 41 00 F0 */ stfs f2, 0xf0(r1)
/* 80225C08 00222B68 D0 21 00 F4 */ stfs f1, 0xf4(r1)
/* 80225C0C 00222B6C D0 01 00 F8 */ stfs f0, 0xf8(r1)
/* 80225C10 00222B70 48 00 04 21 */ bl Solve__8CIkChainFR11CQuaternionR11CQuaternionRC9CVector3f
/* 80225C14 00222B74 38 61 00 74 */ addi r3, r1, 0x74
/* 80225C18 00222B78 38 81 01 0C */ addi r4, r1, 0x10c
/* 80225C1C 00222B7C 38 A1 00 FC */ addi r5, r1, 0xfc
/* 80225C20 00222B80 48 0E B5 81 */ bl __ml__11CQuaternionCFRC11CQuaternion
/* 80225C24 00222B84 38 61 00 84 */ addi r3, r1, 0x84
/* 80225C28 00222B88 38 81 00 74 */ addi r4, r1, 0x74
/* 80225C2C 00222B8C 38 A1 00 EC */ addi r5, r1, 0xec
/* 80225C30 00222B90 48 0E B5 71 */ bl __ml__11CQuaternionCFRC11CQuaternion
/* 80225C34 00222B94 C0 41 00 88 */ lfs f2, 0x88(r1)
/* 80225C38 00222B98 38 61 00 64 */ addi r3, r1, 0x64
/* 80225C3C 00222B9C C0 21 00 8C */ lfs f1, 0x8c(r1)
/* 80225C40 00222BA0 38 81 00 54 */ addi r4, r1, 0x54
/* 80225C44 00222BA4 C0 01 00 90 */ lfs f0, 0x90(r1)
/* 80225C48 00222BA8 FC 40 10 50 */ fneg f2, f2
/* 80225C4C 00222BAC FC 20 08 50 */ fneg f1, f1
/* 80225C50 00222BB0 C0 61 00 84 */ lfs f3, 0x84(r1)
/* 80225C54 00222BB4 FC 00 00 50 */ fneg f0, f0
/* 80225C58 00222BB8 38 BD 00 24 */ addi r5, r29, 0x24
/* 80225C5C 00222BBC D0 61 00 54 */ stfs f3, 0x54(r1)
/* 80225C60 00222BC0 D0 41 00 58 */ stfs f2, 0x58(r1)
/* 80225C64 00222BC4 D0 21 00 5C */ stfs f1, 0x5c(r1)
/* 80225C68 00222BC8 D0 01 00 60 */ stfs f0, 0x60(r1)
/* 80225C6C 00222BCC 48 0E B5 35 */ bl __ml__11CQuaternionCFRC11CQuaternion
/* 80225C70 00222BD0 C0 01 00 64 */ lfs f0, 0x64(r1)
/* 80225C74 00222BD4 C0 61 00 68 */ lfs f3, 0x68(r1)
/* 80225C78 00222BD8 C0 41 00 6C */ lfs f2, 0x6c(r1)
/* 80225C7C 00222BDC C0 21 00 70 */ lfs f1, 0x70(r1)
/* 80225C80 00222BE0 D0 01 00 DC */ stfs f0, 0xdc(r1)
/* 80225C84 00222BE4 C0 02 B4 AC */ lfs f0, lbl_805AD1CC@sda21(r2)
/* 80225C88 00222BE8 D0 61 00 E0 */ stfs f3, 0xe0(r1)
/* 80225C8C 00222BEC D0 41 00 E4 */ stfs f2, 0xe4(r1)
/* 80225C90 00222BF0 D0 21 00 E8 */ stfs f1, 0xe8(r1)
/* 80225C94 00222BF4 C0 3D 00 40 */ lfs f1, 0x40(r29)
/* 80225C98 00222BF8 FC 01 00 40 */ fcmpo cr0, f1, f0
/* 80225C9C 00222BFC 40 80 00 9C */ bge lbl_80225D38
/* 80225CA0 00222C00 38 61 00 44 */ addi r3, r1, 0x44
/* 80225CA4 00222C04 38 81 01 3C */ addi r4, r1, 0x13c
/* 80225CA8 00222C08 38 A1 00 FC */ addi r5, r1, 0xfc
/* 80225CAC 00222C0C 48 0E B9 0D */ bl SlerpLocal__11CQuaternionFRC11CQuaternionRC11CQuaternionf
/* 80225CB0 00222C10 C0 01 00 44 */ lfs f0, 0x44(r1)
/* 80225CB4 00222C14 38 61 00 34 */ addi r3, r1, 0x34
/* 80225CB8 00222C18 80 E1 00 48 */ lwz r7, 0x48(r1)
/* 80225CBC 00222C1C 38 81 01 2C */ addi r4, r1, 0x12c
/* 80225CC0 00222C20 80 C1 00 4C */ lwz r6, 0x4c(r1)
/* 80225CC4 00222C24 38 A1 00 EC */ addi r5, r1, 0xec
/* 80225CC8 00222C28 80 01 00 50 */ lwz r0, 0x50(r1)
/* 80225CCC 00222C2C D0 01 00 FC */ stfs f0, 0xfc(r1)
/* 80225CD0 00222C30 90 E1 01 00 */ stw r7, 0x100(r1)
/* 80225CD4 00222C34 90 C1 01 04 */ stw r6, 0x104(r1)
/* 80225CD8 00222C38 90 01 01 08 */ stw r0, 0x108(r1)
/* 80225CDC 00222C3C C0 3D 00 40 */ lfs f1, 0x40(r29)
/* 80225CE0 00222C40 48 0E B8 D9 */ bl SlerpLocal__11CQuaternionFRC11CQuaternionRC11CQuaternionf
/* 80225CE4 00222C44 C0 01 00 34 */ lfs f0, 0x34(r1)
/* 80225CE8 00222C48 38 61 00 24 */ addi r3, r1, 0x24
/* 80225CEC 00222C4C 80 E1 00 38 */ lwz r7, 0x38(r1)
/* 80225CF0 00222C50 38 81 01 1C */ addi r4, r1, 0x11c
/* 80225CF4 00222C54 80 C1 00 3C */ lwz r6, 0x3c(r1)
/* 80225CF8 00222C58 38 A1 00 DC */ addi r5, r1, 0xdc
/* 80225CFC 00222C5C 80 01 00 40 */ lwz r0, 0x40(r1)
/* 80225D00 00222C60 D0 01 00 EC */ stfs f0, 0xec(r1)
/* 80225D04 00222C64 90 E1 00 F0 */ stw r7, 0xf0(r1)
/* 80225D08 00222C68 90 C1 00 F4 */ stw r6, 0xf4(r1)
/* 80225D0C 00222C6C 90 01 00 F8 */ stw r0, 0xf8(r1)
/* 80225D10 00222C70 C0 3D 00 40 */ lfs f1, 0x40(r29)
/* 80225D14 00222C74 48 0E B8 A5 */ bl SlerpLocal__11CQuaternionFRC11CQuaternionRC11CQuaternionf
/* 80225D18 00222C78 C0 01 00 24 */ lfs f0, 0x24(r1)
/* 80225D1C 00222C7C 80 81 00 28 */ lwz r4, 0x28(r1)
/* 80225D20 00222C80 80 61 00 2C */ lwz r3, 0x2c(r1)
/* 80225D24 00222C84 80 01 00 30 */ lwz r0, 0x30(r1)
/* 80225D28 00222C88 D0 01 00 DC */ stfs f0, 0xdc(r1)
/* 80225D2C 00222C8C 90 81 00 E0 */ stw r4, 0xe0(r1)
/* 80225D30 00222C90 90 61 00 E4 */ stw r3, 0xe4(r1)
/* 80225D34 00222C94 90 01 00 E8 */ stw r0, 0xe8(r1)
lbl_80225D38:
/* 80225D38 00222C98 88 1D 00 02 */ lbz r0, 2(r29)
/* 80225D3C 00222C9C 38 60 00 00 */ li r3, 0
/* 80225D40 00222CA0 80 BE 04 04 */ lwz r5, 0x404(r30)
/* 80225D44 00222CA4 54 04 08 3C */ slwi r4, r0, 1
/* 80225D48 00222CA8 C0 01 00 FC */ lfs f0, 0xfc(r1)
/* 80225D4C 00222CAC 38 04 00 01 */ addi r0, r4, 1
/* 80225D50 00222CB0 7C 1F 00 AE */ lbzx r0, r31, r0
/* 80225D54 00222CB4 54 00 2C F4 */ rlwinm r0, r0, 5, 0x13, 0x1a
/* 80225D58 00222CB8 7C A5 02 14 */ add r5, r5, r0
/* 80225D5C 00222CBC D0 05 00 04 */ stfs f0, 4(r5)
/* 80225D60 00222CC0 80 81 01 00 */ lwz r4, 0x100(r1)
/* 80225D64 00222CC4 80 01 01 04 */ lwz r0, 0x104(r1)
/* 80225D68 00222CC8 90 85 00 08 */ stw r4, 8(r5)
/* 80225D6C 00222CCC 90 05 00 0C */ stw r0, 0xc(r5)
/* 80225D70 00222CD0 80 01 01 08 */ lwz r0, 0x108(r1)
/* 80225D74 00222CD4 90 05 00 10 */ stw r0, 0x10(r5)
/* 80225D78 00222CD8 88 1D 00 01 */ lbz r0, 1(r29)
/* 80225D7C 00222CDC 80 BE 04 04 */ lwz r5, 0x404(r30)
/* 80225D80 00222CE0 54 04 08 3C */ slwi r4, r0, 1
/* 80225D84 00222CE4 C0 01 00 EC */ lfs f0, 0xec(r1)
/* 80225D88 00222CE8 38 04 00 01 */ addi r0, r4, 1
/* 80225D8C 00222CEC 7C 1F 00 AE */ lbzx r0, r31, r0
/* 80225D90 00222CF0 54 00 2C F4 */ rlwinm r0, r0, 5, 0x13, 0x1a
/* 80225D94 00222CF4 7C A5 02 14 */ add r5, r5, r0
/* 80225D98 00222CF8 D0 05 00 04 */ stfs f0, 4(r5)
/* 80225D9C 00222CFC 80 81 00 F0 */ lwz r4, 0xf0(r1)
/* 80225DA0 00222D00 80 01 00 F4 */ lwz r0, 0xf4(r1)
/* 80225DA4 00222D04 90 85 00 08 */ stw r4, 8(r5)
/* 80225DA8 00222D08 90 05 00 0C */ stw r0, 0xc(r5)
/* 80225DAC 00222D0C 80 01 00 F8 */ lwz r0, 0xf8(r1)
/* 80225DB0 00222D10 90 05 00 10 */ stw r0, 0x10(r5)
/* 80225DB4 00222D14 88 1D 00 00 */ lbz r0, 0(r29)
/* 80225DB8 00222D18 80 BE 04 04 */ lwz r5, 0x404(r30)
/* 80225DBC 00222D1C 54 04 08 3C */ slwi r4, r0, 1
/* 80225DC0 00222D20 C0 01 00 DC */ lfs f0, 0xdc(r1)
/* 80225DC4 00222D24 38 04 00 01 */ addi r0, r4, 1
/* 80225DC8 00222D28 7C 1F 00 AE */ lbzx r0, r31, r0
/* 80225DCC 00222D2C 54 00 2C F4 */ rlwinm r0, r0, 5, 0x13, 0x1a
/* 80225DD0 00222D30 7C A5 02 14 */ add r5, r5, r0
/* 80225DD4 00222D34 D0 05 00 04 */ stfs f0, 4(r5)
/* 80225DD8 00222D38 80 81 00 E0 */ lwz r4, 0xe0(r1)
/* 80225DDC 00222D3C 80 01 00 E4 */ lwz r0, 0xe4(r1)
/* 80225DE0 00222D40 90 85 00 08 */ stw r4, 8(r5)
/* 80225DE4 00222D44 90 05 00 0C */ stw r0, 0xc(r5)
/* 80225DE8 00222D48 80 01 00 E8 */ lwz r0, 0xe8(r1)
/* 80225DEC 00222D4C 90 05 00 10 */ stw r0, 0x10(r5)
/* 80225DF0 00222D50 88 1E 02 20 */ lbz r0, 0x220(r30)
/* 80225DF4 00222D54 50 60 0F BC */ rlwimi r0, r3, 1, 0x1e, 0x1e
/* 80225DF8 00222D58 98 1E 02 20 */ stb r0, 0x220(r30)
lbl_80225DFC:
/* 80225DFC 00222D5C 80 01 02 04 */ lwz r0, 0x204(r1)
/* 80225E00 00222D60 83 E1 01 FC */ lwz r31, 0x1fc(r1)
/* 80225E04 00222D64 83 C1 01 F8 */ lwz r30, 0x1f8(r1)
/* 80225E08 00222D68 83 A1 01 F4 */ lwz r29, 0x1f4(r1)
/* 80225E0C 00222D6C 83 81 01 F0 */ lwz r28, 0x1f0(r1)
/* 80225E10 00222D70 7C 08 03 A6 */ mtlr r0
/* 80225E14 00222D74 38 21 02 00 */ addi r1, r1, 0x200
/* 80225E18 00222D78 4E 80 00 20 */ blr
.global Activate__8CIkChainFRC9CAnimData6CSegIdRC12CTransform4f
Activate__8CIkChainFRC9CAnimData6CSegIdRC12CTransform4f:
/* 80225E1C 00222D7C 94 21 FF C0 */ stwu r1, -0x40(r1)
/* 80225E20 00222D80 7C 08 02 A6 */ mflr r0
/* 80225E24 00222D84 90 01 00 44 */ stw r0, 0x44(r1)
/* 80225E28 00222D88 93 E1 00 3C */ stw r31, 0x3c(r1)
/* 80225E2C 00222D8C 3B E4 02 FC */ addi r31, r4, 0x2fc
/* 80225E30 00222D90 93 C1 00 38 */ stw r30, 0x38(r1)
/* 80225E34 00222D94 7C DE 33 78 */ mr r30, r6
/* 80225E38 00222D98 93 A1 00 34 */ stw r29, 0x34(r1)
/* 80225E3C 00222D9C 7C 7D 1B 78 */ mr r29, r3
/* 80225E40 00222DA0 88 05 00 00 */ lbz r0, 0(r5)
/* 80225E44 00222DA4 98 03 00 00 */ stb r0, 0(r3)
/* 80225E48 00222DA8 88 04 03 28 */ lbz r0, 0x328(r4)
/* 80225E4C 00222DAC 28 00 00 00 */ cmplwi r0, 0
/* 80225E50 00222DB0 41 82 00 0C */ beq lbl_80225E5C
/* 80225E54 00222DB4 38 7F 00 0C */ addi r3, r31, 0xc
/* 80225E58 00222DB8 48 00 00 08 */ b lbl_80225E60
lbl_80225E5C:
/* 80225E5C 00222DBC 7F E3 FB 78 */ mr r3, r31
lbl_80225E60:
/* 80225E60 00222DC0 80 63 00 08 */ lwz r3, 8(r3)
/* 80225E64 00222DC4 88 1D 00 00 */ lbz r0, 0(r29)
/* 80225E68 00222DC8 80 83 00 00 */ lwz r4, 0(r3)
/* 80225E6C 00222DCC 54 00 08 3C */ slwi r0, r0, 1
/* 80225E70 00222DD0 7C 64 02 14 */ add r3, r4, r0
/* 80225E74 00222DD4 80 84 00 D0 */ lwz r4, 0xd0(r4)
/* 80225E78 00222DD8 88 03 00 09 */ lbz r0, 9(r3)
/* 80225E7C 00222DDC 54 00 2C F4 */ rlwinm r0, r0, 5, 0x13, 0x1a
/* 80225E80 00222DE0 7C 04 00 AE */ lbzx r0, r4, r0
/* 80225E84 00222DE4 98 1D 00 01 */ stb r0, 1(r29)
/* 80225E88 00222DE8 88 9D 00 01 */ lbz r4, 1(r29)
/* 80225E8C 00222DEC 28 04 00 02 */ cmplwi r4, 2
/* 80225E90 00222DF0 41 82 01 84 */ beq lbl_80226014
/* 80225E94 00222DF4 88 1F 00 2C */ lbz r0, 0x2c(r31)
/* 80225E98 00222DF8 28 00 00 00 */ cmplwi r0, 0
/* 80225E9C 00222DFC 41 82 00 0C */ beq lbl_80225EA8
/* 80225EA0 00222E00 38 7F 00 0C */ addi r3, r31, 0xc
/* 80225EA4 00222E04 48 00 00 08 */ b lbl_80225EAC
lbl_80225EA8:
/* 80225EA8 00222E08 7F E3 FB 78 */ mr r3, r31
lbl_80225EAC:
/* 80225EAC 00222E0C 80 63 00 08 */ lwz r3, 8(r3)
/* 80225EB0 00222E10 54 80 0D FC */ rlwinm r0, r4, 1, 0x17, 0x1e
/* 80225EB4 00222E14 80 83 00 00 */ lwz r4, 0(r3)
/* 80225EB8 00222E18 7C 64 02 14 */ add r3, r4, r0
/* 80225EBC 00222E1C 80 84 00 D0 */ lwz r4, 0xd0(r4)
/* 80225EC0 00222E20 88 03 00 09 */ lbz r0, 9(r3)
/* 80225EC4 00222E24 54 00 2C F4 */ rlwinm r0, r0, 5, 0x13, 0x1a
/* 80225EC8 00222E28 7C 04 00 AE */ lbzx r0, r4, r0
/* 80225ECC 00222E2C 98 1D 00 02 */ stb r0, 2(r29)
/* 80225ED0 00222E30 88 1F 00 2C */ lbz r0, 0x2c(r31)
/* 80225ED4 00222E34 28 00 00 00 */ cmplwi r0, 0
/* 80225ED8 00222E38 41 82 00 0C */ beq lbl_80225EE4
/* 80225EDC 00222E3C 38 7F 00 0C */ addi r3, r31, 0xc
/* 80225EE0 00222E40 48 00 00 08 */ b lbl_80225EE8
lbl_80225EE4:
/* 80225EE4 00222E44 7F E3 FB 78 */ mr r3, r31
lbl_80225EE8:
/* 80225EE8 00222E48 80 83 00 08 */ lwz r4, 8(r3)
/* 80225EEC 00222E4C 38 61 00 24 */ addi r3, r1, 0x24
/* 80225EF0 00222E50 38 BD 00 01 */ addi r5, r29, 1
/* 80225EF4 00222E54 4B F0 5A AD */ bl GetFromParentUnrotated__15CCharLayoutInfoCFRC6CSegId
/* 80225EF8 00222E58 C0 01 00 24 */ lfs f0, 0x24(r1)
/* 80225EFC 00222E5C 38 7D 00 04 */ addi r3, r29, 4
/* 80225F00 00222E60 D0 1D 00 04 */ stfs f0, 4(r29)
/* 80225F04 00222E64 C0 01 00 28 */ lfs f0, 0x28(r1)
/* 80225F08 00222E68 D0 1D 00 08 */ stfs f0, 8(r29)
/* 80225F0C 00222E6C C0 01 00 2C */ lfs f0, 0x2c(r1)
/* 80225F10 00222E70 D0 1D 00 0C */ stfs f0, 0xc(r29)
/* 80225F14 00222E74 48 0E E9 A5 */ bl Magnitude__9CVector3fCFv
/* 80225F18 00222E78 D0 3D 00 1C */ stfs f1, 0x1c(r29)
/* 80225F1C 00222E7C C0 42 B4 AC */ lfs f2, lbl_805AD1CC@sda21(r2)
/* 80225F20 00222E80 C0 3D 00 1C */ lfs f1, 0x1c(r29)
/* 80225F24 00222E84 C0 1D 00 04 */ lfs f0, 4(r29)
/* 80225F28 00222E88 EC 22 08 24 */ fdivs f1, f2, f1
/* 80225F2C 00222E8C EC 00 00 72 */ fmuls f0, f0, f1
/* 80225F30 00222E90 D0 1D 00 04 */ stfs f0, 4(r29)
/* 80225F34 00222E94 C0 1D 00 08 */ lfs f0, 8(r29)
/* 80225F38 00222E98 EC 00 00 72 */ fmuls f0, f0, f1
/* 80225F3C 00222E9C D0 1D 00 08 */ stfs f0, 8(r29)
/* 80225F40 00222EA0 C0 1D 00 0C */ lfs f0, 0xc(r29)
/* 80225F44 00222EA4 EC 00 00 72 */ fmuls f0, f0, f1
/* 80225F48 00222EA8 D0 1D 00 0C */ stfs f0, 0xc(r29)
/* 80225F4C 00222EAC 88 1F 00 2C */ lbz r0, 0x2c(r31)
/* 80225F50 00222EB0 28 00 00 00 */ cmplwi r0, 0
/* 80225F54 00222EB4 41 82 00 08 */ beq lbl_80225F5C
/* 80225F58 00222EB8 3B FF 00 0C */ addi r31, r31, 0xc
lbl_80225F5C:
/* 80225F5C 00222EBC 80 9F 00 08 */ lwz r4, 8(r31)
/* 80225F60 00222EC0 7F A5 EB 78 */ mr r5, r29
/* 80225F64 00222EC4 38 61 00 18 */ addi r3, r1, 0x18
/* 80225F68 00222EC8 4B F0 5A 39 */ bl GetFromParentUnrotated__15CCharLayoutInfoCFRC6CSegId
/* 80225F6C 00222ECC C0 01 00 18 */ lfs f0, 0x18(r1)
/* 80225F70 00222ED0 38 7D 00 10 */ addi r3, r29, 0x10
/* 80225F74 00222ED4 D0 1D 00 10 */ stfs f0, 0x10(r29)
/* 80225F78 00222ED8 C0 01 00 1C */ lfs f0, 0x1c(r1)
/* 80225F7C 00222EDC D0 1D 00 14 */ stfs f0, 0x14(r29)
/* 80225F80 00222EE0 C0 01 00 20 */ lfs f0, 0x20(r1)
/* 80225F84 00222EE4 D0 1D 00 18 */ stfs f0, 0x18(r29)
/* 80225F88 00222EE8 48 0E E9 31 */ bl Magnitude__9CVector3fCFv
/* 80225F8C 00222EEC D0 3D 00 20 */ stfs f1, 0x20(r29)
/* 80225F90 00222EF0 7F C4 F3 78 */ mr r4, r30
/* 80225F94 00222EF4 C0 42 B4 AC */ lfs f2, lbl_805AD1CC@sda21(r2)
/* 80225F98 00222EF8 38 61 00 08 */ addi r3, r1, 8
/* 80225F9C 00222EFC C0 3D 00 20 */ lfs f1, 0x20(r29)
/* 80225FA0 00222F00 C0 1D 00 10 */ lfs f0, 0x10(r29)
/* 80225FA4 00222F04 EC 22 08 24 */ fdivs f1, f2, f1
/* 80225FA8 00222F08 EC 00 00 72 */ fmuls f0, f0, f1
/* 80225FAC 00222F0C D0 1D 00 10 */ stfs f0, 0x10(r29)
/* 80225FB0 00222F10 C0 1D 00 14 */ lfs f0, 0x14(r29)
/* 80225FB4 00222F14 EC 00 00 72 */ fmuls f0, f0, f1
/* 80225FB8 00222F18 D0 1D 00 14 */ stfs f0, 0x14(r29)
/* 80225FBC 00222F1C C0 1D 00 18 */ lfs f0, 0x18(r29)
/* 80225FC0 00222F20 EC 00 00 72 */ fmuls f0, f0, f1
/* 80225FC4 00222F24 D0 1D 00 18 */ stfs f0, 0x18(r29)
/* 80225FC8 00222F28 C0 5E 00 2C */ lfs f2, 0x2c(r30)
/* 80225FCC 00222F2C C0 3E 00 1C */ lfs f1, 0x1c(r30)
/* 80225FD0 00222F30 C0 1E 00 0C */ lfs f0, 0xc(r30)
/* 80225FD4 00222F34 D0 1D 00 34 */ stfs f0, 0x34(r29)
/* 80225FD8 00222F38 D0 3D 00 38 */ stfs f1, 0x38(r29)
/* 80225FDC 00222F3C D0 5D 00 3C */ stfs f2, 0x3c(r29)
/* 80225FE0 00222F40 48 0E C1 49 */ bl FromMatrix__11CQuaternionFRC12CTransform4f
/* 80225FE4 00222F44 C0 01 00 08 */ lfs f0, 8(r1)
/* 80225FE8 00222F48 38 60 00 01 */ li r3, 1
/* 80225FEC 00222F4C D0 1D 00 24 */ stfs f0, 0x24(r29)
/* 80225FF0 00222F50 80 81 00 0C */ lwz r4, 0xc(r1)
/* 80225FF4 00222F54 80 01 00 10 */ lwz r0, 0x10(r1)
/* 80225FF8 00222F58 90 9D 00 28 */ stw r4, 0x28(r29)
/* 80225FFC 00222F5C 90 1D 00 2C */ stw r0, 0x2c(r29)
/* 80226000 00222F60 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80226004 00222F64 90 1D 00 30 */ stw r0, 0x30(r29)
/* 80226008 00222F68 88 1D 00 44 */ lbz r0, 0x44(r29)
/* 8022600C 00222F6C 50 60 3E 30 */ rlwimi r0, r3, 7, 0x18, 0x18
/* 80226010 00222F70 98 1D 00 44 */ stb r0, 0x44(r29)
lbl_80226014:
/* 80226014 00222F74 80 01 00 44 */ lwz r0, 0x44(r1)
/* 80226018 00222F78 83 E1 00 3C */ lwz r31, 0x3c(r1)
/* 8022601C 00222F7C 83 C1 00 38 */ lwz r30, 0x38(r1)
/* 80226020 00222F80 83 A1 00 34 */ lwz r29, 0x34(r1)
/* 80226024 00222F84 7C 08 03 A6 */ mtlr r0
/* 80226028 00222F88 38 21 00 40 */ addi r1, r1, 0x40
/* 8022602C 00222F8C 4E 80 00 20 */ blr
.global Solve__8CIkChainFR11CQuaternionR11CQuaternionRC9CVector3f
Solve__8CIkChainFR11CQuaternionR11CQuaternionRC9CVector3f:
/* 80226030 00222F90 94 21 FE 80 */ stwu r1, -0x180(r1)
/* 80226034 00222F94 7C 08 02 A6 */ mflr r0
/* 80226038 00222F98 90 01 01 84 */ stw r0, 0x184(r1)
/* 8022603C 00222F9C DB E1 01 70 */ stfd f31, 0x170(r1)
/* 80226040 00222FA0 F3 E1 01 78 */ psq_st f31, 376(r1), 0, qr0
/* 80226044 00222FA4 DB C1 01 60 */ stfd f30, 0x160(r1)
/* 80226048 00222FA8 F3 C1 01 68 */ psq_st f30, 360(r1), 0, qr0
/* 8022604C 00222FAC DB A1 01 50 */ stfd f29, 0x150(r1)
/* 80226050 00222FB0 F3 A1 01 58 */ psq_st f29, 344(r1), 0, qr0
/* 80226054 00222FB4 DB 81 01 40 */ stfd f28, 0x140(r1)
/* 80226058 00222FB8 F3 81 01 48 */ psq_st f28, 328(r1), 0, qr0
/* 8022605C 00222FBC DB 61 01 30 */ stfd f27, 0x130(r1)
/* 80226060 00222FC0 F3 61 01 38 */ psq_st f27, 312(r1), 0, qr0
/* 80226064 00222FC4 DB 41 01 20 */ stfd f26, 0x120(r1)
/* 80226068 00222FC8 F3 41 01 28 */ psq_st f26, 296(r1), 0, qr0
/* 8022606C 00222FCC 93 E1 01 1C */ stw r31, 0x11c(r1)
/* 80226070 00222FD0 93 C1 01 18 */ stw r30, 0x118(r1)
/* 80226074 00222FD4 93 A1 01 14 */ stw r29, 0x114(r1)
/* 80226078 00222FD8 93 81 01 10 */ stw r28, 0x110(r1)
/* 8022607C 00222FDC 7C DF 33 78 */ mr r31, r6
/* 80226080 00222FE0 7C 7C 1B 78 */ mr r28, r3
/* 80226084 00222FE4 7C 9D 23 78 */ mr r29, r4
/* 80226088 00222FE8 7C BE 2B 78 */ mr r30, r5
/* 8022608C 00222FEC 7F E3 FB 78 */ mr r3, r31
/* 80226090 00222FF0 48 0E E8 29 */ bl Magnitude__9CVector3fCFv
/* 80226094 00222FF4 FF E0 08 90 */ fmr f31, f1
/* 80226098 00222FF8 C0 3C 00 1C */ lfs f1, 0x1c(r28)
/* 8022609C 00222FFC C0 02 B4 B0 */ lfs f0, lbl_805AD1D0@sda21(r2)
/* 802260A0 00223000 38 81 00 18 */ addi r4, r1, 0x18
/* 802260A4 00223004 C0 7C 00 20 */ lfs f3, 0x20(r28)
/* 802260A8 00223008 EC 21 00 72 */ fmuls f1, f1, f1
/* 802260AC 0022300C EF 5F 07 F2 */ fmuls f26, f31, f31
/* 802260B0 00223010 38 6D 95 40 */ addi r3, r13, lbl_805A8100@sda21
/* 802260B4 00223014 EF 60 07 F2 */ fmuls f27, f0, f31
/* 802260B8 00223018 38 AD 95 44 */ addi r5, r13, lbl_805A8104@sda21
/* 802260BC 0022301C EC 43 D0 FA */ fmadds f2, f3, f3, f26
/* 802260C0 00223020 EC 1B 00 F2 */ fmuls f0, f27, f3
/* 802260C4 00223024 EC 22 08 28 */ fsubs f1, f2, f1
/* 802260C8 00223028 EC 01 00 24 */ fdivs f0, f1, f0
/* 802260CC 0022302C D0 01 00 18 */ stfs f0, 0x18(r1)
/* 802260D0 00223030 4B DE 61 E5 */ bl "Clamp<f>__5CMathFRCfRCfRCf"
/* 802260D4 00223034 C0 23 00 00 */ lfs f1, 0(r3)
/* 802260D8 00223038 D0 21 00 18 */ stfs f1, 0x18(r1)
/* 802260DC 0022303C 48 16 EB 51 */ bl acos
/* 802260E0 00223040 C0 1C 00 20 */ lfs f0, 0x20(r28)
/* 802260E4 00223044 FF A0 08 18 */ frsp f29, f1
/* 802260E8 00223048 C0 5C 00 1C */ lfs f2, 0x1c(r28)
/* 802260EC 0022304C 38 81 00 14 */ addi r4, r1, 0x14
/* 802260F0 00223050 EC 20 00 32 */ fmuls f1, f0, f0
/* 802260F4 00223054 38 6D 95 48 */ addi r3, r13, lbl_805A8108@sda21
/* 802260F8 00223058 EC 1B 00 B2 */ fmuls f0, f27, f2
/* 802260FC 0022305C 38 AD 95 4C */ addi r5, r13, lbl_805A810C@sda21
/* 80226100 00223060 EC 3A 08 28 */ fsubs f1, f26, f1
/* 80226104 00223064 EC 22 08 BA */ fmadds f1, f2, f2, f1
/* 80226108 00223068 EC 01 00 24 */ fdivs f0, f1, f0
/* 8022610C 0022306C D0 01 00 14 */ stfs f0, 0x14(r1)
/* 80226110 00223070 4B DE 61 A5 */ bl "Clamp<f>__5CMathFRCfRCfRCf"
/* 80226114 00223074 C0 23 00 00 */ lfs f1, 0(r3)
/* 80226118 00223078 D0 21 00 14 */ stfs f1, 0x14(r1)
/* 8022611C 0022307C 48 16 EB 11 */ bl acos
/* 80226120 00223080 FF C0 08 18 */ frsp f30, f1
/* 80226124 00223084 7F C4 F3 78 */ mr r4, r30
/* 80226128 00223088 38 61 00 C8 */ addi r3, r1, 0xc8
/* 8022612C 0022308C 38 BC 00 10 */ addi r5, r28, 0x10
/* 80226130 00223090 48 0E B1 35 */ bl Transform__11CQuaternionCFRC9CVector3f
/* 80226134 00223094 C3 41 00 C8 */ lfs f26, 0xc8(r1)
/* 80226138 00223098 38 61 01 00 */ addi r3, r1, 0x100
/* 8022613C 0022309C C0 7C 00 08 */ lfs f3, 8(r28)
/* 80226140 002230A0 C3 81 00 CC */ lfs f28, 0xcc(r1)
/* 80226144 002230A4 C0 9C 00 0C */ lfs f4, 0xc(r28)
/* 80226148 002230A8 EC 1A 00 F2 */ fmuls f0, f26, f3
/* 8022614C 002230AC C0 3C 00 04 */ lfs f1, 4(r28)
/* 80226150 002230B0 C3 61 00 D0 */ lfs f27, 0xd0(r1)
/* 80226154 002230B4 EC 5C 01 32 */ fmuls f2, f28, f4
/* 80226158 002230B8 EC 01 07 38 */ fmsubs f0, f1, f28, f0
/* 8022615C 002230BC EC 3B 00 72 */ fmuls f1, f27, f1
/* 80226160 002230C0 EC 43 16 F8 */ fmsubs f2, f3, f27, f2
/* 80226164 002230C4 D0 01 01 08 */ stfs f0, 0x108(r1)
/* 80226168 002230C8 EC 04 0E B8 */ fmsubs f0, f4, f26, f1
/* 8022616C 002230CC D0 41 01 00 */ stfs f2, 0x100(r1)
/* 80226170 002230D0 D0 01 01 04 */ stfs f0, 0x104(r1)
/* 80226174 002230D4 48 0E E7 45 */ bl Magnitude__9CVector3fCFv
/* 80226178 002230D8 FC 00 08 18 */ frsp f0, f1
/* 8022617C 002230DC C0 82 B4 AC */ lfs f4, lbl_805AD1CC@sda21(r2)
/* 80226180 002230E0 C0 61 01 00 */ lfs f3, 0x100(r1)
/* 80226184 002230E4 38 61 00 10 */ addi r3, r1, 0x10
/* 80226188 002230E8 C0 41 01 04 */ lfs f2, 0x104(r1)
/* 8022618C 002230EC 38 8D 95 50 */ addi r4, r13, lbl_805A8110@sda21
/* 80226190 002230F0 EC 84 00 24 */ fdivs f4, f4, f0
/* 80226194 002230F4 C0 01 01 08 */ lfs f0, 0x108(r1)
/* 80226198 002230F8 D0 21 00 10 */ stfs f1, 0x10(r1)
/* 8022619C 002230FC EC 63 01 32 */ fmuls f3, f3, f4
/* 802261A0 00223100 EC 22 01 32 */ fmuls f1, f2, f4
/* 802261A4 00223104 EC 00 01 32 */ fmuls f0, f0, f4
/* 802261A8 00223108 D0 61 01 00 */ stfs f3, 0x100(r1)
/* 802261AC 0022310C D0 21 01 04 */ stfs f1, 0x104(r1)
/* 802261B0 00223110 D0 01 01 08 */ stfs f0, 0x108(r1)
/* 802261B4 00223114 4B E5 7C 2D */ bl "Min<f>__5CMathFRCfRCf"
/* 802261B8 00223118 C0 23 00 00 */ lfs f1, 0(r3)
/* 802261BC 0022311C D0 21 00 10 */ stfs f1, 0x10(r1)
/* 802261C0 00223120 48 16 EA 8D */ bl asin
/* 802261C4 00223124 C0 1C 00 08 */ lfs f0, 8(r28)
/* 802261C8 00223128 FC 80 08 18 */ frsp f4, f1
/* 802261CC 0022312C C0 5C 00 04 */ lfs f2, 4(r28)
/* 802261D0 00223130 EC 20 07 32 */ fmuls f1, f0, f28
/* 802261D4 00223134 C0 7C 00 0C */ lfs f3, 0xc(r28)
/* 802261D8 00223138 C0 02 B4 A8 */ lfs f0, lbl_805AD1C8@sda21(r2)
/* 802261DC 0022313C EC 22 0E BA */ fmadds f1, f2, f26, f1
/* 802261E0 00223140 EC 23 0E FA */ fmadds f1, f3, f27, f1
/* 802261E4 00223144 FC 01 00 40 */ fcmpo cr0, f1, f0
/* 802261E8 00223148 40 80 00 0C */ bge lbl_802261F4
/* 802261EC 0022314C C0 02 B4 B4 */ lfs f0, lbl_805AD1D4@sda21(r2)
/* 802261F0 00223150 EC 80 20 28 */ fsubs f4, f0, f4
lbl_802261F4:
/* 802261F4 00223154 EC 7E E8 2A */ fadds f3, f30, f29
/* 802261F8 00223158 C0 41 01 00 */ lfs f2, 0x100(r1)
/* 802261FC 0022315C C0 21 01 04 */ lfs f1, 0x104(r1)
/* 80226200 00223160 38 61 00 B8 */ addi r3, r1, 0xb8
/* 80226204 00223164 C0 01 01 08 */ lfs f0, 0x108(r1)
/* 80226208 00223168 38 81 00 AC */ addi r4, r1, 0xac
/* 8022620C 0022316C EC 63 20 28 */ fsubs f3, f3, f4
/* 80226210 00223170 D0 41 00 AC */ stfs f2, 0xac(r1)
/* 80226214 00223174 38 A1 00 0C */ addi r5, r1, 0xc
/* 80226218 00223178 D0 21 00 B0 */ stfs f1, 0xb0(r1)
/* 8022621C 0022317C D0 61 00 0C */ stfs f3, 0xc(r1)
/* 80226220 00223180 D0 01 00 B4 */ stfs f0, 0xb4(r1)
/* 80226224 00223184 48 0E B0 D1 */ bl AxisAngle__11CQuaternionFRC13CUnitVector3fRC9CRelAngle
/* 80226228 00223188 C0 61 00 B8 */ lfs f3, 0xb8(r1)
/* 8022622C 0022318C 7F C5 F3 78 */ mr r5, r30
/* 80226230 00223190 C0 41 00 BC */ lfs f2, 0xbc(r1)
/* 80226234 00223194 38 61 00 9C */ addi r3, r1, 0x9c
/* 80226238 00223198 C0 21 00 C0 */ lfs f1, 0xc0(r1)
/* 8022623C 0022319C 38 81 00 F0 */ addi r4, r1, 0xf0
/* 80226240 002231A0 C0 01 00 C4 */ lfs f0, 0xc4(r1)
/* 80226244 002231A4 D0 61 00 F0 */ stfs f3, 0xf0(r1)
/* 80226248 002231A8 D0 41 00 F4 */ stfs f2, 0xf4(r1)
/* 8022624C 002231AC D0 21 00 F8 */ stfs f1, 0xf8(r1)
/* 80226250 002231B0 D0 01 00 FC */ stfs f0, 0xfc(r1)
/* 80226254 002231B4 48 0E AF 4D */ bl __ml__11CQuaternionCFRC11CQuaternion
/* 80226258 002231B8 C0 01 00 9C */ lfs f0, 0x9c(r1)
/* 8022625C 002231BC 7F C4 F3 78 */ mr r4, r30
/* 80226260 002231C0 38 61 00 60 */ addi r3, r1, 0x60
/* 80226264 002231C4 38 BC 00 10 */ addi r5, r28, 0x10
/* 80226268 002231C8 D0 1E 00 00 */ stfs f0, 0(r30)
/* 8022626C 002231CC 80 C1 00 A0 */ lwz r6, 0xa0(r1)
/* 80226270 002231D0 80 01 00 A4 */ lwz r0, 0xa4(r1)
/* 80226274 002231D4 90 DE 00 04 */ stw r6, 4(r30)
/* 80226278 002231D8 90 1E 00 08 */ stw r0, 8(r30)
/* 8022627C 002231DC 80 01 00 A8 */ lwz r0, 0xa8(r1)
/* 80226280 002231E0 90 1E 00 0C */ stw r0, 0xc(r30)
/* 80226284 002231E4 48 0E AF E1 */ bl Transform__11CQuaternionCFRC9CVector3f
/* 80226288 002231E8 C0 9C 00 20 */ lfs f4, 0x20(r28)
/* 8022628C 002231EC 7F A4 EB 78 */ mr r4, r29
/* 80226290 002231F0 C0 41 00 68 */ lfs f2, 0x68(r1)
/* 80226294 002231F4 38 61 00 90 */ addi r3, r1, 0x90
/* 80226298 002231F8 C0 21 00 60 */ lfs f1, 0x60(r1)
/* 8022629C 002231FC 38 A1 00 84 */ addi r5, r1, 0x84
/* 802262A0 00223200 C0 01 00 64 */ lfs f0, 0x64(r1)
/* 802262A4 00223204 EC E4 00 B2 */ fmuls f7, f4, f2
/* 802262A8 00223208 EC 64 00 72 */ fmuls f3, f4, f1
/* 802262AC 0022320C C0 DC 00 1C */ lfs f6, 0x1c(r28)
/* 802262B0 00223210 C0 3C 00 08 */ lfs f1, 8(r28)
/* 802262B4 00223214 EC 44 00 32 */ fmuls f2, f4, f0
/* 802262B8 00223218 C0 1C 00 0C */ lfs f0, 0xc(r28)
/* 802262BC 0022321C EC A6 00 72 */ fmuls f5, f6, f1
/* 802262C0 00223220 EC 86 00 32 */ fmuls f4, f6, f0
/* 802262C4 00223224 C0 1C 00 04 */ lfs f0, 4(r28)
/* 802262C8 00223228 D0 61 00 6C */ stfs f3, 0x6c(r1)
/* 802262CC 0022322C EC 26 00 32 */ fmuls f1, f6, f0
/* 802262D0 00223230 EC C5 10 2A */ fadds f6, f5, f2
/* 802262D4 00223234 D0 41 00 70 */ stfs f2, 0x70(r1)
/* 802262D8 00223238 EC 44 38 2A */ fadds f2, f4, f7
/* 802262DC 0022323C EC 01 18 2A */ fadds f0, f1, f3
/* 802262E0 00223240 D0 E1 00 74 */ stfs f7, 0x74(r1)
/* 802262E4 00223244 D0 21 00 78 */ stfs f1, 0x78(r1)
/* 802262E8 00223248 D0 A1 00 7C */ stfs f5, 0x7c(r1)
/* 802262EC 0022324C D0 81 00 80 */ stfs f4, 0x80(r1)
/* 802262F0 00223250 D0 01 00 84 */ stfs f0, 0x84(r1)
/* 802262F4 00223254 D0 C1 00 88 */ stfs f6, 0x88(r1)
/* 802262F8 00223258 D0 41 00 8C */ stfs f2, 0x8c(r1)
/* 802262FC 0022325C 48 0E AF 69 */ bl Transform__11CQuaternionCFRC9CVector3f
/* 80226300 00223260 C0 41 00 90 */ lfs f2, 0x90(r1)
/* 80226304 00223264 7F A4 EB 78 */ mr r4, r29
/* 80226308 00223268 C0 21 00 94 */ lfs f1, 0x94(r1)
/* 8022630C 0022326C 7F E5 FB 78 */ mr r5, r31
/* 80226310 00223270 C0 01 00 98 */ lfs f0, 0x98(r1)
/* 80226314 00223274 38 61 00 54 */ addi r3, r1, 0x54
/* 80226318 00223278 D0 41 00 E4 */ stfs f2, 0xe4(r1)
/* 8022631C 0022327C D0 21 00 E8 */ stfs f1, 0xe8(r1)
/* 80226320 00223280 D0 01 00 EC */ stfs f0, 0xec(r1)
/* 80226324 00223284 48 0E AF 41 */ bl Transform__11CQuaternionCFRC9CVector3f
/* 80226328 00223288 C0 02 B4 AC */ lfs f0, lbl_805AD1CC@sda21(r2)
/* 8022632C 0022328C 38 61 00 48 */ addi r3, r1, 0x48
/* 80226330 00223290 C0 41 00 54 */ lfs f2, 0x54(r1)
/* 80226334 00223294 38 81 00 E4 */ addi r4, r1, 0xe4
/* 80226338 00223298 EC 60 F8 24 */ fdivs f3, f0, f31
/* 8022633C 0022329C C0 21 00 58 */ lfs f1, 0x58(r1)
/* 80226340 002232A0 C0 01 00 5C */ lfs f0, 0x5c(r1)
/* 80226344 002232A4 EF A3 00 B2 */ fmuls f29, f3, f2
/* 80226348 002232A8 EF C3 00 72 */ fmuls f30, f3, f1
/* 8022634C 002232AC EF E3 00 32 */ fmuls f31, f3, f0
/* 80226350 002232B0 48 0E E5 01 */ bl AsNormalized__9CVector3fCFv
/* 80226354 002232B4 C0 61 00 4C */ lfs f3, 0x4c(r1)
/* 80226358 002232B8 38 61 01 00 */ addi r3, r1, 0x100
/* 8022635C 002232BC C0 81 00 50 */ lfs f4, 0x50(r1)
/* 80226360 002232C0 C0 A1 00 48 */ lfs f5, 0x48(r1)
/* 80226364 002232C4 EC 5D 00 F2 */ fmuls f2, f29, f3
/* 80226368 002232C8 EC 3E 01 32 */ fmuls f1, f30, f4
/* 8022636C 002232CC EC 1F 01 72 */ fmuls f0, f31, f5
/* 80226370 002232D0 EC 45 17 B8 */ fmsubs f2, f5, f30, f2
/* 80226374 002232D4 EC 23 0F F8 */ fmsubs f1, f3, f31, f1
/* 80226378 002232D8 EC 04 07 78 */ fmsubs f0, f4, f29, f0
/* 8022637C 002232DC D0 41 01 08 */ stfs f2, 0x108(r1)
/* 80226380 002232E0 D0 21 01 00 */ stfs f1, 0x100(r1)
/* 80226384 002232E4 D0 01 01 04 */ stfs f0, 0x104(r1)
/* 80226388 002232E8 48 0E E5 31 */ bl Magnitude__9CVector3fCFv
/* 8022638C 002232EC FC 00 08 18 */ frsp f0, f1
/* 80226390 002232F0 C0 82 B4 AC */ lfs f4, lbl_805AD1CC@sda21(r2)
/* 80226394 002232F4 C0 61 01 00 */ lfs f3, 0x100(r1)
/* 80226398 002232F8 38 61 00 10 */ addi r3, r1, 0x10
/* 8022639C 002232FC C0 41 01 04 */ lfs f2, 0x104(r1)
/* 802263A0 00223300 38 8D 95 54 */ addi r4, r13, lbl_805A8114@sda21
/* 802263A4 00223304 EC 84 00 24 */ fdivs f4, f4, f0
/* 802263A8 00223308 C0 01 01 08 */ lfs f0, 0x108(r1)
/* 802263AC 0022330C D0 21 00 10 */ stfs f1, 0x10(r1)
/* 802263B0 00223310 EC 63 01 32 */ fmuls f3, f3, f4
/* 802263B4 00223314 EC 22 01 32 */ fmuls f1, f2, f4
/* 802263B8 00223318 EC 00 01 32 */ fmuls f0, f0, f4
/* 802263BC 0022331C D0 61 01 00 */ stfs f3, 0x100(r1)
/* 802263C0 00223320 D0 21 01 04 */ stfs f1, 0x104(r1)
/* 802263C4 00223324 D0 01 01 08 */ stfs f0, 0x108(r1)
/* 802263C8 00223328 4B E5 7A 19 */ bl "Min<f>__5CMathFRCfRCf"
/* 802263CC 0022332C C0 23 00 00 */ lfs f1, 0(r3)
/* 802263D0 00223330 D0 21 00 10 */ stfs f1, 0x10(r1)
/* 802263D4 00223334 48 16 E8 79 */ bl asin
/* 802263D8 00223338 C0 01 00 E8 */ lfs f0, 0xe8(r1)
/* 802263DC 0022333C FC 80 08 18 */ frsp f4, f1
/* 802263E0 00223340 C0 41 00 E4 */ lfs f2, 0xe4(r1)
/* 802263E4 00223344 EC 20 07 B2 */ fmuls f1, f0, f30
/* 802263E8 00223348 C0 61 00 EC */ lfs f3, 0xec(r1)
/* 802263EC 0022334C C0 02 B4 A8 */ lfs f0, lbl_805AD1C8@sda21(r2)
/* 802263F0 00223350 EC 22 0F 7A */ fmadds f1, f2, f29, f1
/* 802263F4 00223354 EC 23 0F FA */ fmadds f1, f3, f31, f1
/* 802263F8 00223358 FC 01 00 40 */ fcmpo cr0, f1, f0
/* 802263FC 0022335C 40 80 00 0C */ bge lbl_80226408
/* 80226400 00223360 C0 02 B4 B4 */ lfs f0, lbl_805AD1D4@sda21(r2)
/* 80226404 00223364 EC 80 20 28 */ fsubs f4, f0, f4
lbl_80226408:
/* 80226408 00223368 C0 41 01 00 */ lfs f2, 0x100(r1)
/* 8022640C 0022336C 38 61 00 38 */ addi r3, r1, 0x38
/* 80226410 00223370 C0 21 01 04 */ lfs f1, 0x104(r1)
/* 80226414 00223374 38 81 00 2C */ addi r4, r1, 0x2c
/* 80226418 00223378 C0 01 01 08 */ lfs f0, 0x108(r1)
/* 8022641C 0022337C 38 A1 00 08 */ addi r5, r1, 8
/* 80226420 00223380 D0 81 00 08 */ stfs f4, 8(r1)
/* 80226424 00223384 D0 41 00 2C */ stfs f2, 0x2c(r1)
/* 80226428 00223388 D0 21 00 30 */ stfs f1, 0x30(r1)
/* 8022642C 0022338C D0 01 00 34 */ stfs f0, 0x34(r1)
/* 80226430 00223390 48 0E AE C5 */ bl AxisAngle__11CQuaternionFRC13CUnitVector3fRC9CRelAngle
/* 80226434 00223394 C0 61 00 38 */ lfs f3, 0x38(r1)
/* 80226438 00223398 7F A5 EB 78 */ mr r5, r29
/* 8022643C 0022339C C0 41 00 3C */ lfs f2, 0x3c(r1)
/* 80226440 002233A0 38 61 00 1C */ addi r3, r1, 0x1c
/* 80226444 002233A4 C0 21 00 40 */ lfs f1, 0x40(r1)
/* 80226448 002233A8 38 81 00 D4 */ addi r4, r1, 0xd4
/* 8022644C 002233AC C0 01 00 44 */ lfs f0, 0x44(r1)
/* 80226450 002233B0 D0 61 00 D4 */ stfs f3, 0xd4(r1)
/* 80226454 002233B4 D0 41 00 D8 */ stfs f2, 0xd8(r1)
/* 80226458 002233B8 D0 21 00 DC */ stfs f1, 0xdc(r1)
/* 8022645C 002233BC D0 01 00 E0 */ stfs f0, 0xe0(r1)
/* 80226460 002233C0 48 0E AD 41 */ bl __ml__11CQuaternionCFRC11CQuaternion
/* 80226464 002233C4 C0 01 00 1C */ lfs f0, 0x1c(r1)
/* 80226468 002233C8 D0 1D 00 00 */ stfs f0, 0(r29)
/* 8022646C 002233CC 80 61 00 20 */ lwz r3, 0x20(r1)
/* 80226470 002233D0 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80226474 002233D4 90 7D 00 04 */ stw r3, 4(r29)
/* 80226478 002233D8 90 1D 00 08 */ stw r0, 8(r29)
/* 8022647C 002233DC 80 01 00 28 */ lwz r0, 0x28(r1)
/* 80226480 002233E0 90 1D 00 0C */ stw r0, 0xc(r29)
/* 80226484 002233E4 E3 E1 01 78 */ psq_l f31, 376(r1), 0, qr0
/* 80226488 002233E8 CB E1 01 70 */ lfd f31, 0x170(r1)
/* 8022648C 002233EC E3 C1 01 68 */ psq_l f30, 360(r1), 0, qr0
/* 80226490 002233F0 CB C1 01 60 */ lfd f30, 0x160(r1)
/* 80226494 002233F4 E3 A1 01 58 */ psq_l f29, 344(r1), 0, qr0
/* 80226498 002233F8 CB A1 01 50 */ lfd f29, 0x150(r1)
/* 8022649C 002233FC E3 81 01 48 */ psq_l f28, 328(r1), 0, qr0
/* 802264A0 00223400 CB 81 01 40 */ lfd f28, 0x140(r1)
/* 802264A4 00223404 E3 61 01 38 */ psq_l f27, 312(r1), 0, qr0
/* 802264A8 00223408 CB 61 01 30 */ lfd f27, 0x130(r1)
/* 802264AC 0022340C E3 41 01 28 */ psq_l f26, 296(r1), 0, qr0
/* 802264B0 00223410 CB 41 01 20 */ lfd f26, 0x120(r1)
/* 802264B4 00223414 83 E1 01 1C */ lwz r31, 0x11c(r1)
/* 802264B8 00223418 83 C1 01 18 */ lwz r30, 0x118(r1)
/* 802264BC 0022341C 83 A1 01 14 */ lwz r29, 0x114(r1)
/* 802264C0 00223420 80 01 01 84 */ lwz r0, 0x184(r1)
/* 802264C4 00223424 83 81 01 10 */ lwz r28, 0x110(r1)
/* 802264C8 00223428 7C 08 03 A6 */ mtlr r0
/* 802264CC 0022342C 38 21 01 80 */ addi r1, r1, 0x180
/* 802264D0 00223430 4E 80 00 20 */ blr