prime/asm/Kyoto/Animation/DolphinCVirtualBone.s

682 lines
34 KiB
ArmAsm
Raw Normal View History

.include "macros.inc"
.section .text, "ax"
.global PSMTXROMultS16VecArrayGathered__FPA3_fPCUsPVvUl
PSMTXROMultS16VecArrayGathered__FPA3_fPCUsPVvUl:
/* 803547D4 00351734 7D 6B 5A 78 */ xor r11, r11, r11
/* 803547D8 00351738 39 6B 00 60 */ addi r11, r11, 0x60
/* 803547DC 0035173C 94 21 FF C0 */ stwu r1, -0x40(r1)
/* 803547E0 00351740 D9 C1 00 08 */ stfd f14, 8(r1)
/* 803547E4 00351744 38 E6 FF FF */ addi r7, r6, -1
/* 803547E8 00351748 D9 E1 00 10 */ stfd f15, 0x10(r1)
/* 803547EC 0035174C 54 E7 F8 7E */ srwi r7, r7, 1
/* 803547F0 00351750 DA 01 00 18 */ stfd f16, 0x18(r1)
/* 803547F4 00351754 DA 21 00 20 */ stfd f17, 0x20(r1)
/* 803547F8 00351758 DA 41 00 28 */ stfd f18, 0x28(r1)
/* 803547FC 0035175C 7C E9 03 A6 */ mtctr r7
/* 80354800 00351760 E0 03 00 00 */ psq_l f0, 0(r3), 0, qr0
/* 80354804 00351764 38 84 FF F8 */ addi r4, r4, -8
/* 80354808 00351768 E0 23 80 08 */ psq_l f1, 8(r3), 1, qr0
/* 8035480C 0035176C E0 C3 00 24 */ psq_l f6, 36(r3), 0, qr0
/* 80354810 00351770 E5 04 00 08 */ psq_lu f8, 8(r4), 0, qr0
/* 80354814 00351774 E0 E3 80 2C */ psq_l f7, 44(r3), 1, qr0
/* 80354818 00351778 E5 24 00 08 */ psq_lu f9, 8(r4), 0, qr0
/* 8035481C 0035177C 11 60 32 1C */ ps_madds0 f11, f0, f8, f6
/* 80354820 00351780 E0 43 00 0C */ psq_l f2, 12(r3), 0, qr0
/* 80354824 00351784 11 81 3A 1C */ ps_madds0 f12, f1, f8, f7
/* 80354828 00351788 E0 63 80 14 */ psq_l f3, 20(r3), 1, qr0
/* 8035482C 0035178C 11 A0 32 5E */ ps_madds1 f13, f0, f9, f6
/* 80354830 00351790 E5 44 00 08 */ psq_lu f10, 8(r4), 0, qr0
/* 80354834 00351794 11 C1 3A 5E */ ps_madds1 f14, f1, f9, f7
/* 80354838 00351798 E0 A3 80 20 */ psq_l f5, 32(r3), 1, qr0
/* 8035483C 0035179C 11 62 5A 1E */ ps_madds1 f11, f2, f8, f11
/* 80354840 003517A0 11 83 62 1E */ ps_madds1 f12, f3, f8, f12
/* 80354844 003517A4 E0 83 00 18 */ psq_l f4, 24(r3), 0, qr0
/* 80354848 003517A8 11 A2 6A 9C */ ps_madds0 f13, f2, f10, f13
/* 8035484C 003517AC E5 04 00 08 */ psq_lu f8, 8(r4), 0, qr0
/* 80354850 003517B0 11 C3 72 9C */ ps_madds0 f14, f3, f10, f14
/* 80354854 003517B4 11 E4 5A 5C */ ps_madds0 f15, f4, f9, f11
/* 80354858 003517B8 12 05 62 5C */ ps_madds0 f16, f5, f9, f12
/* 8035485C 003517BC E5 24 00 08 */ psq_lu f9, 8(r4), 0, qr0
/* 80354860 003517C0 12 24 6A 9E */ ps_madds1 f17, f4, f10, f13
/* 80354864 003517C4 12 45 72 9E */ ps_madds1 f18, f5, f10, f14
/* 80354868 003517C8 E5 44 00 08 */ psq_lu f10, 8(r4), 0, qr0
lbl_8035486C:
/* 8035486C 003517CC 11 60 32 1C */ ps_madds0 f11, f0, f8, f6
/* 80354870 003517D0 F1 E5 00 00 */ psq_st f15, 0(r5), 0, qr0
/* 80354874 003517D4 11 81 3A 1C */ ps_madds0 f12, f1, f8, f7
/* 80354878 003517D8 F2 05 80 00 */ psq_st f16, 0(r5), 1, qr0
/* 8035487C 003517DC 11 A0 32 5E */ ps_madds1 f13, f0, f9, f6
/* 80354880 003517E0 F2 25 00 00 */ psq_st f17, 0(r5), 0, qr0
/* 80354884 003517E4 11 C1 3A 5E */ ps_madds1 f14, f1, f9, f7
/* 80354888 003517E8 F2 45 80 00 */ psq_st f18, 0(r5), 1, qr0
/* 8035488C 003517EC 11 62 5A 1E */ ps_madds1 f11, f2, f8, f11
/* 80354890 003517F0 11 83 62 1E */ ps_madds1 f12, f3, f8, f12
/* 80354894 003517F4 E5 04 00 08 */ psq_lu f8, 8(r4), 0, qr0
/* 80354898 003517F8 11 A2 6A 9C */ ps_madds0 f13, f2, f10, f13
/* 8035489C 003517FC 11 C3 72 9C */ ps_madds0 f14, f3, f10, f14
/* 803548A0 00351800 11 E4 5A 5C */ ps_madds0 f15, f4, f9, f11
/* 803548A4 00351804 12 05 62 5C */ ps_madds0 f16, f5, f9, f12
/* 803548A8 00351808 E5 24 00 08 */ psq_lu f9, 8(r4), 0, qr0
/* 803548AC 0035180C 12 24 6A 9E */ ps_madds1 f17, f4, f10, f13
/* 803548B0 00351810 12 45 72 9E */ ps_madds1 f18, f5, f10, f14
/* 803548B4 00351814 E5 44 00 08 */ psq_lu f10, 8(r4), 0, qr0
/* 803548B8 00351818 42 00 FF B4 */ bdnz lbl_8035486C
/* 803548BC 0035181C F1 E5 00 00 */ psq_st f15, 0(r5), 0, qr0
/* 803548C0 00351820 54 C7 07 FF */ clrlwi. r7, r6, 0x1f
/* 803548C4 00351824 F2 05 80 00 */ psq_st f16, 0(r5), 1, qr0
/* 803548C8 00351828 40 82 00 0C */ bne lbl_803548D4
/* 803548CC 0035182C F2 25 00 00 */ psq_st f17, 0(r5), 0, qr0
/* 803548D0 00351830 F2 45 80 00 */ psq_st f18, 0(r5), 1, qr0
lbl_803548D4:
/* 803548D4 00351834 C9 C1 00 08 */ lfd f14, 8(r1)
/* 803548D8 00351838 C9 E1 00 10 */ lfd f15, 0x10(r1)
/* 803548DC 0035183C CA 01 00 18 */ lfd f16, 0x18(r1)
/* 803548E0 00351840 CA 21 00 20 */ lfd f17, 0x20(r1)
/* 803548E4 00351844 CA 41 00 28 */ lfd f18, 0x28(r1)
/* 803548E8 00351848 38 21 00 40 */ addi r1, r1, 0x40
/* 803548EC 0035184C 4E 80 00 20 */ blr
.global BuildNormals__12CVirtualBoneCFPC9CVector3fP9CVector3fi
BuildNormals__12CVirtualBoneCFPC9CVector3fP9CVector3fi:
/* 803548F0 00351850 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 803548F4 00351854 7C 08 02 A6 */ mflr r0
/* 803548F8 00351858 90 01 00 34 */ stw r0, 0x34(r1)
/* 803548FC 0035185C BF 61 00 1C */ stmw r27, 0x1c(r1)
/* 80354900 00351860 7C 7B 1B 78 */ mr r27, r3
/* 80354904 00351864 7C DC 33 78 */ mr r28, r6
/* 80354908 00351868 7C 9F 23 78 */ mr r31, r4
/* 8035490C 0035186C 7C BE 2B 78 */ mr r30, r5
/* 80354910 00351870 3B A0 00 00 */ li r29, 0
/* 80354914 00351874 48 00 00 38 */ b lbl_8035494C
lbl_80354918:
/* 80354918 00351878 7F E5 FB 78 */ mr r5, r31
/* 8035491C 0035187C 38 61 00 08 */ addi r3, r1, 8
/* 80354920 00351880 38 9B 00 50 */ addi r4, r27, 0x50
/* 80354924 00351884 4B FB B9 71 */ bl __ml__9CMatrix3fCFRC9CVector3f
/* 80354928 00351888 C0 01 00 08 */ lfs f0, 8(r1)
/* 8035492C 0035188C 3B FF 00 0C */ addi r31, r31, 0xc
/* 80354930 00351890 3B BD 00 01 */ addi r29, r29, 1
/* 80354934 00351894 D0 1E 00 00 */ stfs f0, 0(r30)
/* 80354938 00351898 C0 01 00 0C */ lfs f0, 0xc(r1)
/* 8035493C 0035189C D0 1E 00 04 */ stfs f0, 4(r30)
/* 80354940 003518A0 C0 01 00 10 */ lfs f0, 0x10(r1)
/* 80354944 003518A4 D0 1E 00 08 */ stfs f0, 8(r30)
/* 80354948 003518A8 3B DE 00 0C */ addi r30, r30, 0xc
lbl_8035494C:
/* 8035494C 003518AC 7C 1D E0 00 */ cmpw r29, r28
/* 80354950 003518B0 41 80 FF C8 */ blt lbl_80354918
/* 80354954 003518B4 BB 61 00 1C */ lmw r27, 0x1c(r1)
/* 80354958 003518B8 80 01 00 34 */ lwz r0, 0x34(r1)
/* 8035495C 003518BC 7C 08 03 A6 */ mtlr r0
/* 80354960 003518C0 38 21 00 30 */ addi r1, r1, 0x30
/* 80354964 003518C4 4E 80 00 20 */ blr
.global BuildNormals__12CVirtualBoneCFPCUsPVvi
BuildNormals__12CVirtualBoneCFPCUsPVvi:
/* 80354968 003518C8 94 21 FF 60 */ stwu r1, -0xa0(r1)
/* 8035496C 003518CC 7C 08 02 A6 */ mflr r0
/* 80354970 003518D0 90 01 00 A4 */ stw r0, 0xa4(r1)
/* 80354974 003518D4 BF 61 00 8C */ stmw r27, 0x8c(r1)
/* 80354978 003518D8 7C DD 33 78 */ mr r29, r6
/* 8035497C 003518DC 2C 1D 00 03 */ cmpwi r29, 3
/* 80354980 003518E0 7C 7B 1B 78 */ mr r27, r3
/* 80354984 003518E4 7C 9E 23 78 */ mr r30, r4
/* 80354988 003518E8 7C BC 2B 78 */ mr r28, r5
/* 8035498C 003518EC 40 80 00 4C */ bge lbl_803549D8
/* 80354990 003518F0 7F DF F3 78 */ mr r31, r30
/* 80354994 003518F4 3B C0 00 00 */ li r30, 0
/* 80354998 003518F8 48 00 00 34 */ b lbl_803549CC
lbl_8035499C:
/* 8035499C 003518FC 7F E5 FB 78 */ mr r5, r31
/* 803549A0 00351900 38 61 00 14 */ addi r3, r1, 0x14
/* 803549A4 00351904 38 9B 00 50 */ addi r4, r27, 0x50
/* 803549A8 00351908 4B FB B8 ED */ bl __ml__9CMatrix3fCFRC9CVector3f
/* 803549AC 0035190C C0 21 00 18 */ lfs f1, 0x18(r1)
/* 803549B0 00351910 3B FF 00 0C */ addi r31, r31, 0xc
/* 803549B4 00351914 C0 41 00 1C */ lfs f2, 0x1c(r1)
/* 803549B8 00351918 3B DE 00 01 */ addi r30, r30, 1
/* 803549BC 0035191C C0 01 00 14 */ lfs f0, 0x14(r1)
/* 803549C0 00351920 D0 1C 00 00 */ stfs f0, 0(r28)
/* 803549C4 00351924 D0 3C 00 00 */ stfs f1, 0(r28)
/* 803549C8 00351928 D0 5C 00 00 */ stfs f2, 0(r28)
lbl_803549CC:
/* 803549CC 0035192C 7C 1E E8 00 */ cmpw r30, r29
/* 803549D0 00351930 41 80 FF CC */ blt lbl_8035499C
/* 803549D4 00351934 48 00 00 48 */ b lbl_80354A1C
lbl_803549D8:
/* 803549D8 00351938 C0 02 CC A0 */ lfs f0, lbl_805AE9C0@sda21(r2)
/* 803549DC 0035193C 38 61 00 50 */ addi r3, r1, 0x50
/* 803549E0 00351940 38 9B 00 50 */ addi r4, r27, 0x50
/* 803549E4 00351944 38 A1 00 08 */ addi r5, r1, 8
/* 803549E8 00351948 D0 01 00 08 */ stfs f0, 8(r1)
/* 803549EC 0035194C D0 01 00 0C */ stfs f0, 0xc(r1)
/* 803549F0 00351950 D0 01 00 10 */ stfs f0, 0x10(r1)
/* 803549F4 00351954 4B FB E8 85 */ bl __ct__12CTransform4fFRC9CMatrix3fRC9CVector3f
/* 803549F8 00351958 38 61 00 50 */ addi r3, r1, 0x50
/* 803549FC 0035195C 48 00 04 79 */ bl TransformToMtx__FRC12CTransform4f
/* 80354A00 00351960 38 81 00 20 */ addi r4, r1, 0x20
/* 80354A04 00351964 48 02 8C CD */ bl PSMTXReorder
/* 80354A08 00351968 7F C4 F3 78 */ mr r4, r30
/* 80354A0C 0035196C 7F 85 E3 78 */ mr r5, r28
/* 80354A10 00351970 7F A6 EB 78 */ mr r6, r29
/* 80354A14 00351974 38 61 00 20 */ addi r3, r1, 0x20
/* 80354A18 00351978 4B FF FD BD */ bl PSMTXROMultS16VecArrayGathered__FPA3_fPCUsPVvUl
lbl_80354A1C:
/* 80354A1C 0035197C BB 61 00 8C */ lmw r27, 0x8c(r1)
/* 80354A20 00351980 80 01 00 A4 */ lwz r0, 0xa4(r1)
/* 80354A24 00351984 7C 08 03 A6 */ mtlr r0
/* 80354A28 00351988 38 21 00 A0 */ addi r1, r1, 0xa0
/* 80354A2C 0035198C 4E 80 00 20 */ blr
.global BuildPoints__12CVirtualBoneCFPCUsPVvi
BuildPoints__12CVirtualBoneCFPCUsPVvi:
/* 80354A30 00351990 94 21 FF A0 */ stwu r1, -0x60(r1)
/* 80354A34 00351994 7C 08 02 A6 */ mflr r0
/* 80354A38 00351998 90 01 00 64 */ stw r0, 0x64(r1)
/* 80354A3C 0035199C BF 61 00 4C */ stmw r27, 0x4c(r1)
/* 80354A40 003519A0 7C DD 33 78 */ mr r29, r6
/* 80354A44 003519A4 2C 1D 00 03 */ cmpwi r29, 3
/* 80354A48 003519A8 7C 7B 1B 78 */ mr r27, r3
/* 80354A4C 003519AC 7C 9E 23 78 */ mr r30, r4
/* 80354A50 003519B0 7C BC 2B 78 */ mr r28, r5
/* 80354A54 003519B4 40 80 00 4C */ bge lbl_80354AA0
/* 80354A58 003519B8 7F DF F3 78 */ mr r31, r30
/* 80354A5C 003519BC 3B C0 00 00 */ li r30, 0
/* 80354A60 003519C0 48 00 00 34 */ b lbl_80354A94
lbl_80354A64:
/* 80354A64 003519C4 7F E5 FB 78 */ mr r5, r31
/* 80354A68 003519C8 38 61 00 08 */ addi r3, r1, 8
/* 80354A6C 003519CC 38 9B 00 20 */ addi r4, r27, 0x20
/* 80354A70 003519D0 4B FB E0 79 */ bl __ml__12CTransform4fCFRC9CVector3f
/* 80354A74 003519D4 C0 21 00 0C */ lfs f1, 0xc(r1)
/* 80354A78 003519D8 3B FF 00 0C */ addi r31, r31, 0xc
/* 80354A7C 003519DC C0 41 00 10 */ lfs f2, 0x10(r1)
/* 80354A80 003519E0 3B DE 00 01 */ addi r30, r30, 1
/* 80354A84 003519E4 C0 01 00 08 */ lfs f0, 8(r1)
/* 80354A88 003519E8 D0 1C 00 00 */ stfs f0, 0(r28)
/* 80354A8C 003519EC D0 3C 00 00 */ stfs f1, 0(r28)
/* 80354A90 003519F0 D0 5C 00 00 */ stfs f2, 0(r28)
lbl_80354A94:
/* 80354A94 003519F4 7C 1E E8 00 */ cmpw r30, r29
/* 80354A98 003519F8 41 80 FF CC */ blt lbl_80354A64
/* 80354A9C 003519FC 48 00 00 28 */ b lbl_80354AC4
lbl_80354AA0:
/* 80354AA0 00351A00 38 7B 00 20 */ addi r3, r27, 0x20
/* 80354AA4 00351A04 48 00 03 D1 */ bl TransformToMtx__FRC12CTransform4f
/* 80354AA8 00351A08 38 81 00 14 */ addi r4, r1, 0x14
/* 80354AAC 00351A0C 48 02 8C 25 */ bl PSMTXReorder
/* 80354AB0 00351A10 7F C4 F3 78 */ mr r4, r30
/* 80354AB4 00351A14 7F 85 E3 78 */ mr r5, r28
/* 80354AB8 00351A18 7F A6 EB 78 */ mr r6, r29
/* 80354ABC 00351A1C 38 61 00 14 */ addi r3, r1, 0x14
/* 80354AC0 00351A20 4B FF FD 15 */ bl PSMTXROMultS16VecArrayGathered__FPA3_fPCUsPVvUl
lbl_80354AC4:
/* 80354AC4 00351A24 BB 61 00 4C */ lmw r27, 0x4c(r1)
/* 80354AC8 00351A28 80 01 00 64 */ lwz r0, 0x64(r1)
/* 80354ACC 00351A2C 7C 08 03 A6 */ mtlr r0
/* 80354AD0 00351A30 38 21 00 60 */ addi r1, r1, 0x60
/* 80354AD4 00351A34 4E 80 00 20 */ blr
.global BuildAccumulatedTransform__12CVirtualBoneCFRC17CPoseAsTransformsPC9CVector3f
BuildAccumulatedTransform__12CVirtualBoneCFRC17CPoseAsTransformsPC9CVector3f:
/* 80354AD8 00351A38 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80354ADC 00351A3C 7C 08 02 A6 */ mflr r0
/* 80354AE0 00351A40 90 01 00 14 */ stw r0, 0x14(r1)
/* 80354AE4 00351A44 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80354AE8 00351A48 7C 9F 23 78 */ mr r31, r4
/* 80354AEC 00351A4C 93 C1 00 08 */ stw r30, 8(r1)
/* 80354AF0 00351A50 7C 7E 1B 78 */ mr r30, r3
/* 80354AF4 00351A54 48 00 00 35 */ bl BuildFinalPosMatrix__12CVirtualBoneCFRC17CPoseAsTransformsPC9CVector3f
/* 80354AF8 00351A58 7F E3 FB 78 */ mr r3, r31
/* 80354AFC 00351A5C 38 9E 00 04 */ addi r4, r30, 4
/* 80354B00 00351A60 48 01 44 9D */ bl GetRotation__17CPoseAsTransformsCFRC6CSegId
/* 80354B04 00351A64 7C 64 1B 78 */ mr r4, r3
/* 80354B08 00351A68 38 7E 00 50 */ addi r3, r30, 0x50
/* 80354B0C 00351A6C 4B FB B4 ED */ bl __as__9CMatrix3fFRC9CMatrix3f
/* 80354B10 00351A70 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80354B14 00351A74 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 80354B18 00351A78 83 C1 00 08 */ lwz r30, 8(r1)
/* 80354B1C 00351A7C 7C 08 03 A6 */ mtlr r0
/* 80354B20 00351A80 38 21 00 10 */ addi r1, r1, 0x10
/* 80354B24 00351A84 4E 80 00 20 */ blr
.global BuildFinalPosMatrix__12CVirtualBoneCFRC17CPoseAsTransformsPC9CVector3f
BuildFinalPosMatrix__12CVirtualBoneCFRC17CPoseAsTransformsPC9CVector3f:
/* 80354B28 00351A88 94 21 FF 40 */ stwu r1, -0xc0(r1)
/* 80354B2C 00351A8C 7C 08 02 A6 */ mflr r0
/* 80354B30 00351A90 90 01 00 C4 */ stw r0, 0xc4(r1)
/* 80354B34 00351A94 DB E1 00 B0 */ stfd f31, 0xb0(r1)
/* 80354B38 00351A98 F3 E1 00 B8 */ psq_st f31, 184(r1), 0, qr0
/* 80354B3C 00351A9C DB C1 00 A0 */ stfd f30, 0xa0(r1)
/* 80354B40 00351AA0 F3 C1 00 A8 */ psq_st f30, 168(r1), 0, qr0
/* 80354B44 00351AA4 DB A1 00 90 */ stfd f29, 0x90(r1)
/* 80354B48 00351AA8 F3 A1 00 98 */ psq_st f29, 152(r1), 0, qr0
/* 80354B4C 00351AAC BF 21 00 74 */ stmw r25, 0x74(r1)
/* 80354B50 00351AB0 7C 7D 1B 78 */ mr r29, r3
/* 80354B54 00351AB4 7C 9E 23 78 */ mr r30, r4
/* 80354B58 00351AB8 80 03 00 00 */ lwz r0, 0(r3)
/* 80354B5C 00351ABC 7C BF 2B 78 */ mr r31, r5
/* 80354B60 00351AC0 2C 00 00 02 */ cmpwi r0, 2
/* 80354B64 00351AC4 41 82 00 50 */ beq lbl_80354BB4
/* 80354B68 00351AC8 40 80 00 10 */ bge lbl_80354B78
/* 80354B6C 00351ACC 2C 00 00 01 */ cmpwi r0, 1
/* 80354B70 00351AD0 40 80 00 14 */ bge lbl_80354B84
/* 80354B74 00351AD4 48 00 01 D0 */ b lbl_80354D44
lbl_80354B78:
/* 80354B78 00351AD8 2C 00 00 04 */ cmpwi r0, 4
/* 80354B7C 00351ADC 40 80 01 C8 */ bge lbl_80354D44
/* 80354B80 00351AE0 48 00 00 98 */ b lbl_80354C18
lbl_80354B84:
/* 80354B84 00351AE4 88 1D 00 04 */ lbz r0, 4(r29)
/* 80354B88 00351AE8 7F C3 F3 78 */ mr r3, r30
/* 80354B8C 00351AEC 38 81 00 08 */ addi r4, r1, 8
/* 80354B90 00351AF0 98 01 00 08 */ stb r0, 8(r1)
/* 80354B94 00351AF4 48 01 43 E9 */ bl GetTransformMinusOffset__17CPoseAsTransformsCFRC6CSegId
/* 80354B98 00351AF8 88 01 00 08 */ lbz r0, 8(r1)
/* 80354B9C 00351AFC 7C 64 1B 78 */ mr r4, r3
/* 80354BA0 00351B00 38 7D 00 20 */ addi r3, r29, 0x20
/* 80354BA4 00351B04 1C 00 00 0C */ mulli r0, r0, 0xc
/* 80354BA8 00351B08 7C BF 02 14 */ add r5, r31, r0
/* 80354BAC 00351B0C 48 00 02 81 */ bl TransformFromMatrixDelta__FP12CTransform4fPC9CMatrix3fPC9CVector3f
/* 80354BB0 00351B10 48 00 01 A4 */ b lbl_80354D54
lbl_80354BB4:
/* 80354BB4 00351B14 3B 9D 00 04 */ addi r28, r29, 4
/* 80354BB8 00351B18 C3 FD 00 08 */ lfs f31, 8(r29)
/* 80354BBC 00351B1C C3 DD 00 10 */ lfs f30, 0x10(r29)
/* 80354BC0 00351B20 3B 7D 00 0C */ addi r27, r29, 0xc
/* 80354BC4 00351B24 7F C3 F3 78 */ mr r3, r30
/* 80354BC8 00351B28 7F 84 E3 78 */ mr r4, r28
/* 80354BCC 00351B2C 48 01 43 B1 */ bl GetTransformMinusOffset__17CPoseAsTransformsCFRC6CSegId
/* 80354BD0 00351B30 7C 60 1B 78 */ mr r0, r3
/* 80354BD4 00351B34 7F C3 F3 78 */ mr r3, r30
/* 80354BD8 00351B38 7C 1A 03 78 */ mr r26, r0
/* 80354BDC 00351B3C 7F 64 DB 78 */ mr r4, r27
/* 80354BE0 00351B40 48 01 43 9D */ bl GetTransformMinusOffset__17CPoseAsTransformsCFRC6CSegId
/* 80354BE4 00351B44 88 9C 00 00 */ lbz r4, 0(r28)
/* 80354BE8 00351B48 7C 66 1B 78 */ mr r6, r3
/* 80354BEC 00351B4C 88 1B 00 00 */ lbz r0, 0(r27)
/* 80354BF0 00351B50 FC 20 F8 90 */ fmr f1, f31
/* 80354BF4 00351B54 1C A4 00 0C */ mulli r5, r4, 0xc
/* 80354BF8 00351B58 FC 40 F0 90 */ fmr f2, f30
/* 80354BFC 00351B5C 7F 44 D3 78 */ mr r4, r26
/* 80354C00 00351B60 38 7D 00 20 */ addi r3, r29, 0x20
/* 80354C04 00351B64 1C 00 00 0C */ mulli r0, r0, 0xc
/* 80354C08 00351B68 7C BF 2A 14 */ add r5, r31, r5
/* 80354C0C 00351B6C 7C FF 02 14 */ add r7, r31, r0
/* 80354C10 00351B70 48 00 01 71 */ bl Transform2FromMatrixData__FP12CTransform4fPC9CMatrix3fPC9CVector3ffPC9CMatrix3fPC9CVector3ff
/* 80354C14 00351B74 48 00 01 40 */ b lbl_80354D54
lbl_80354C18:
/* 80354C18 00351B78 3B 9D 00 04 */ addi r28, r29, 4
/* 80354C1C 00351B7C C3 DD 00 08 */ lfs f30, 8(r29)
/* 80354C20 00351B80 C3 BD 00 10 */ lfs f29, 0x10(r29)
/* 80354C24 00351B84 3B 7D 00 0C */ addi r27, r29, 0xc
/* 80354C28 00351B88 C3 FD 00 18 */ lfs f31, 0x18(r29)
/* 80354C2C 00351B8C 3B 5D 00 14 */ addi r26, r29, 0x14
/* 80354C30 00351B90 7F C3 F3 78 */ mr r3, r30
/* 80354C34 00351B94 7F 84 E3 78 */ mr r4, r28
/* 80354C38 00351B98 48 01 43 45 */ bl GetTransformMinusOffset__17CPoseAsTransformsCFRC6CSegId
/* 80354C3C 00351B9C 7C 60 1B 78 */ mr r0, r3
/* 80354C40 00351BA0 7F C3 F3 78 */ mr r3, r30
/* 80354C44 00351BA4 7C 19 03 78 */ mr r25, r0
/* 80354C48 00351BA8 7F 64 DB 78 */ mr r4, r27
/* 80354C4C 00351BAC 48 01 43 31 */ bl GetTransformMinusOffset__17CPoseAsTransformsCFRC6CSegId
/* 80354C50 00351BB0 FC 20 F0 90 */ fmr f1, f30
/* 80354C54 00351BB4 7C 65 1B 78 */ mr r5, r3
/* 80354C58 00351BB8 FC 40 E8 90 */ fmr f2, f29
/* 80354C5C 00351BBC 7F 24 CB 78 */ mr r4, r25
/* 80354C60 00351BC0 38 61 00 48 */ addi r3, r1, 0x48
/* 80354C64 00351BC4 4B FB B9 61 */ bl __ct__9CMatrix3fFRC9CMatrix3ffRC9CMatrix3ff
/* 80354C68 00351BC8 88 9B 00 00 */ lbz r4, 0(r27)
/* 80354C6C 00351BCC FC 20 F8 90 */ fmr f1, f31
/* 80354C70 00351BD0 88 1C 00 00 */ lbz r0, 0(r28)
/* 80354C74 00351BD4 7F C3 F3 78 */ mr r3, r30
/* 80354C78 00351BD8 1C C4 00 0C */ mulli r6, r4, 0xc
/* 80354C7C 00351BDC 7F 44 D3 78 */ mr r4, r26
/* 80354C80 00351BE0 38 A1 00 48 */ addi r5, r1, 0x48
/* 80354C84 00351BE4 7C DF 32 14 */ add r6, r31, r6
/* 80354C88 00351BE8 1C 00 00 0C */ mulli r0, r0, 0xc
/* 80354C8C 00351BEC C0 66 00 04 */ lfs f3, 4(r6)
/* 80354C90 00351BF0 C0 46 00 08 */ lfs f2, 8(r6)
/* 80354C94 00351BF4 C0 06 00 00 */ lfs f0, 0(r6)
/* 80354C98 00351BF8 EC BD 00 F2 */ fmuls f5, f29, f3
/* 80354C9C 00351BFC 7C DF 02 14 */ add r6, r31, r0
/* 80354CA0 00351C00 C0 C6 00 04 */ lfs f6, 4(r6)
/* 80354CA4 00351C04 EC 7D 00 B2 */ fmuls f3, f29, f2
/* 80354CA8 00351C08 C0 86 00 08 */ lfs f4, 8(r6)
/* 80354CAC 00351C0C EC 1D 00 32 */ fmuls f0, f29, f0
/* 80354CB0 00351C10 C0 46 00 00 */ lfs f2, 0(r6)
/* 80354CB4 00351C14 EC DE 01 B2 */ fmuls f6, f30, f6
/* 80354CB8 00351C18 EC 9E 01 32 */ fmuls f4, f30, f4
/* 80354CBC 00351C1C EC 5E 00 B2 */ fmuls f2, f30, f2
/* 80354CC0 00351C20 EC A6 28 2A */ fadds f5, f6, f5
/* 80354CC4 00351C24 EC 64 18 2A */ fadds f3, f4, f3
/* 80354CC8 00351C28 EC 02 00 2A */ fadds f0, f2, f0
/* 80354CCC 00351C2C D0 A1 00 10 */ stfs f5, 0x10(r1)
/* 80354CD0 00351C30 D0 01 00 0C */ stfs f0, 0xc(r1)
/* 80354CD4 00351C34 D0 61 00 14 */ stfs f3, 0x14(r1)
/* 80354CD8 00351C38 48 01 42 39 */ bl AccumulateScaledTransform__17CPoseAsTransformsCFRC6CSegIdR9CMatrix3ff
/* 80354CDC 00351C3C 88 1A 00 00 */ lbz r0, 0(r26)
/* 80354CE0 00351C40 38 61 00 18 */ addi r3, r1, 0x18
/* 80354CE4 00351C44 C0 61 00 0C */ lfs f3, 0xc(r1)
/* 80354CE8 00351C48 38 81 00 48 */ addi r4, r1, 0x48
/* 80354CEC 00351C4C 1C 00 00 0C */ mulli r0, r0, 0xc
/* 80354CF0 00351C50 C0 21 00 10 */ lfs f1, 0x10(r1)
/* 80354CF4 00351C54 C0 01 00 14 */ lfs f0, 0x14(r1)
/* 80354CF8 00351C58 38 A1 00 0C */ addi r5, r1, 0xc
/* 80354CFC 00351C5C 7C DF 02 14 */ add r6, r31, r0
/* 80354D00 00351C60 C0 A6 00 04 */ lfs f5, 4(r6)
/* 80354D04 00351C64 C0 86 00 08 */ lfs f4, 8(r6)
/* 80354D08 00351C68 C0 46 00 00 */ lfs f2, 0(r6)
/* 80354D0C 00351C6C EC BF 01 72 */ fmuls f5, f31, f5
/* 80354D10 00351C70 EC 9F 01 32 */ fmuls f4, f31, f4
/* 80354D14 00351C74 EC 5F 00 B2 */ fmuls f2, f31, f2
/* 80354D18 00351C78 EC 21 28 2A */ fadds f1, f1, f5
/* 80354D1C 00351C7C EC 00 20 2A */ fadds f0, f0, f4
/* 80354D20 00351C80 EC 43 10 2A */ fadds f2, f3, f2
/* 80354D24 00351C84 D0 21 00 10 */ stfs f1, 0x10(r1)
/* 80354D28 00351C88 D0 41 00 0C */ stfs f2, 0xc(r1)
/* 80354D2C 00351C8C D0 01 00 14 */ stfs f0, 0x14(r1)
/* 80354D30 00351C90 4B FB E5 49 */ bl __ct__12CTransform4fFRC9CMatrix3fRC9CVector3f
/* 80354D34 00351C94 7C 64 1B 78 */ mr r4, r3
/* 80354D38 00351C98 38 7D 00 20 */ addi r3, r29, 0x20
/* 80354D3C 00351C9C 4B FB DE 05 */ bl __as__12CTransform4fFRC12CTransform4f
/* 80354D40 00351CA0 48 00 00 14 */ b lbl_80354D54
lbl_80354D44:
/* 80354D44 00351CA4 3C 80 80 5A */ lis r4, sIdentity__12CTransform4f@ha
/* 80354D48 00351CA8 38 7D 00 20 */ addi r3, r29, 0x20
/* 80354D4C 00351CAC 38 84 66 70 */ addi r4, r4, sIdentity__12CTransform4f@l
/* 80354D50 00351CB0 4B FB DD F1 */ bl __as__12CTransform4fFRC12CTransform4f
lbl_80354D54:
/* 80354D54 00351CB4 E3 E1 00 B8 */ psq_l f31, 184(r1), 0, qr0
/* 80354D58 00351CB8 CB E1 00 B0 */ lfd f31, 0xb0(r1)
/* 80354D5C 00351CBC E3 C1 00 A8 */ psq_l f30, 168(r1), 0, qr0
/* 80354D60 00351CC0 CB C1 00 A0 */ lfd f30, 0xa0(r1)
/* 80354D64 00351CC4 E3 A1 00 98 */ psq_l f29, 152(r1), 0, qr0
/* 80354D68 00351CC8 CB A1 00 90 */ lfd f29, 0x90(r1)
/* 80354D6C 00351CCC BB 21 00 74 */ lmw r25, 0x74(r1)
/* 80354D70 00351CD0 80 01 00 C4 */ lwz r0, 0xc4(r1)
/* 80354D74 00351CD4 7C 08 03 A6 */ mtlr r0
/* 80354D78 00351CD8 38 21 00 C0 */ addi r1, r1, 0xc0
/* 80354D7C 00351CDC 4E 80 00 20 */ blr
.global Transform2FromMatrixData__FP12CTransform4fPC9CMatrix3fPC9CVector3ffPC9CMatrix3fPC9CVector3ff
Transform2FromMatrixData__FP12CTransform4fPC9CMatrix3fPC9CVector3ffPC9CMatrix3fPC9CVector3ff:
/* 80354D80 00351CE0 FC 80 08 90 */ fmr f4, f1
/* 80354D84 00351CE4 E0 04 00 00 */ psq_l f0, 0(r4), 0, qr0
/* 80354D88 00351CE8 E0 A5 00 00 */ psq_l f5, 0(r5), 0, qr0
/* 80354D8C 00351CEC E0 24 80 08 */ psq_l f1, 8(r4), 1, qr0
/* 80354D90 00351CF0 10 E4 14 20 */ ps_merge00 f7, f4, f2
/* 80354D94 00351CF4 E0 64 80 14 */ psq_l f3, 20(r4), 1, qr0
/* 80354D98 00351CF8 10 21 2C 20 */ ps_merge00 f1, f1, f5
/* 80354D9C 00351CFC E0 44 00 0C */ psq_l f2, 12(r4), 0, qr0
/* 80354DA0 00351D00 10 63 2C 60 */ ps_merge01 f3, f3, f5
/* 80354DA4 00351D04 E0 84 00 18 */ psq_l f4, 24(r4), 0, qr0
/* 80354DA8 00351D08 10 00 01 D8 */ ps_muls0 f0, f0, f7
/* 80354DAC 00351D0C E0 C6 00 00 */ psq_l f6, 0(r6), 0, qr0
/* 80354DB0 00351D10 E1 07 00 00 */ psq_l f8, 0(r7), 0, qr0
/* 80354DB4 00351D14 10 21 01 D8 */ ps_muls0 f1, f1, f7
/* 80354DB8 00351D18 E1 26 80 08 */ psq_l f9, 8(r6), 1, qr0
/* 80354DBC 00351D1C 10 42 01 D8 */ ps_muls0 f2, f2, f7
/* 80354DC0 00351D20 10 06 01 DE */ ps_madds1 f0, f6, f7, f0
/* 80354DC4 00351D24 E1 66 80 14 */ psq_l f11, 20(r6), 1, qr0
/* 80354DC8 00351D28 11 29 44 20 */ ps_merge00 f9, f9, f8
/* 80354DCC 00351D2C E1 46 00 0C */ psq_l f10, 12(r6), 0, qr0
/* 80354DD0 00351D30 E0 C5 80 08 */ psq_l f6, 8(r5), 1, qr0
/* 80354DD4 00351D34 11 6B 44 60 */ ps_merge01 f11, f11, f8
/* 80354DD8 00351D38 E0 A4 80 20 */ psq_l f5, 32(r4), 1, qr0
/* 80354DDC 00351D3C 10 63 01 D8 */ ps_muls0 f3, f3, f7
/* 80354DE0 00351D40 10 29 09 DE */ ps_madds1 f1, f9, f7, f1
/* 80354DE4 00351D44 F0 03 00 00 */ psq_st f0, 0(r3), 0, qr0
/* 80354DE8 00351D48 10 A5 34 20 */ ps_merge00 f5, f5, f6
/* 80354DEC 00351D4C 10 4A 11 DE */ ps_madds1 f2, f10, f7, f2
/* 80354DF0 00351D50 E0 C6 00 18 */ psq_l f6, 24(r6), 0, qr0
/* 80354DF4 00351D54 10 84 01 D8 */ ps_muls0 f4, f4, f7
/* 80354DF8 00351D58 E1 26 80 20 */ psq_l f9, 32(r6), 1, qr0
/* 80354DFC 00351D5C 10 6B 19 DE */ ps_madds1 f3, f11, f7, f3
/* 80354E00 00351D60 E0 07 80 08 */ psq_l f0, 8(r7), 1, qr0
/* 80354E04 00351D64 10 A5 01 D8 */ ps_muls0 f5, f5, f7
/* 80354E08 00351D68 F0 23 00 08 */ psq_st f1, 8(r3), 0, qr0
/* 80354E0C 00351D6C 11 29 04 20 */ ps_merge00 f9, f9, f0
/* 80354E10 00351D70 10 86 21 DE */ ps_madds1 f4, f6, f7, f4
/* 80354E14 00351D74 F0 43 00 10 */ psq_st f2, 16(r3), 0, qr0
/* 80354E18 00351D78 10 A9 29 DE */ ps_madds1 f5, f9, f7, f5
/* 80354E1C 00351D7C F0 63 00 18 */ psq_st f3, 24(r3), 0, qr0
/* 80354E20 00351D80 F0 83 00 20 */ psq_st f4, 32(r3), 0, qr0
/* 80354E24 00351D84 F0 A3 00 28 */ psq_st f5, 40(r3), 0, qr0
/* 80354E28 00351D88 4E 80 00 20 */ blr
.global TransformFromMatrixDelta__FP12CTransform4fPC9CMatrix3fPC9CVector3f
TransformFromMatrixDelta__FP12CTransform4fPC9CMatrix3fPC9CVector3f:
/* 80354E2C 00351D8C E0 05 00 00 */ psq_l f0, 0(r5), 0, qr0
/* 80354E30 00351D90 E0 24 80 08 */ psq_l f1, 8(r4), 1, qr0
/* 80354E34 00351D94 E0 64 80 14 */ psq_l f3, 20(r4), 1, qr0
/* 80354E38 00351D98 E0 85 80 08 */ psq_l f4, 8(r5), 1, qr0
/* 80354E3C 00351D9C 10 21 04 20 */ ps_merge00 f1, f1, f0
/* 80354E40 00351DA0 E0 A4 80 20 */ psq_l f5, 32(r4), 1, qr0
/* 80354E44 00351DA4 10 63 04 60 */ ps_merge01 f3, f3, f0
/* 80354E48 00351DA8 E0 04 00 00 */ psq_l f0, 0(r4), 0, qr0
/* 80354E4C 00351DAC E0 44 00 0C */ psq_l f2, 12(r4), 0, qr0
/* 80354E50 00351DB0 10 A5 24 20 */ ps_merge00 f5, f5, f4
/* 80354E54 00351DB4 E0 84 00 18 */ psq_l f4, 24(r4), 0, qr0
/* 80354E58 00351DB8 F0 03 00 00 */ psq_st f0, 0(r3), 0, qr0
/* 80354E5C 00351DBC F0 23 00 08 */ psq_st f1, 8(r3), 0, qr0
/* 80354E60 00351DC0 F0 43 00 10 */ psq_st f2, 16(r3), 0, qr0
/* 80354E64 00351DC4 F0 63 00 18 */ psq_st f3, 24(r3), 0, qr0
/* 80354E68 00351DC8 F0 83 00 20 */ psq_st f4, 32(r3), 0, qr0
/* 80354E6C 00351DCC F0 A3 00 28 */ psq_st f5, 40(r3), 0, qr0
/* 80354E70 00351DD0 4E 80 00 20 */ blr
.global TransformToMtx__FRC12CTransform4f
TransformToMtx__FRC12CTransform4f:
/* 80354E74 00351DD4 4E 80 00 20 */ blr
.global __ct__12CVirtualBoneFR12CInputStream
__ct__12CVirtualBoneFR12CInputStream:
/* 80354E78 00351DD8 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 80354E7C 00351DDC 7C 08 02 A6 */ mflr r0
/* 80354E80 00351DE0 90 01 00 34 */ stw r0, 0x34(r1)
/* 80354E84 00351DE4 93 E1 00 2C */ stw r31, 0x2c(r1)
/* 80354E88 00351DE8 7C 7F 1B 78 */ mr r31, r3
/* 80354E8C 00351DEC 38 61 00 08 */ addi r3, r1, 8
/* 80354E90 00351DF0 93 C1 00 28 */ stw r30, 0x28(r1)
/* 80354E94 00351DF4 7C 9E 23 78 */ mr r30, r4
/* 80354E98 00351DF8 48 00 00 E5 */ bl StreamInSkinWeighting__FR12CInputStream
/* 80354E9C 00351DFC 80 01 00 08 */ lwz r0, 8(r1)
/* 80354EA0 00351E00 38 9F 00 04 */ addi r4, r31, 4
/* 80354EA4 00351E04 38 61 00 0C */ addi r3, r1, 0xc
/* 80354EA8 00351E08 90 1F 00 00 */ stw r0, 0(r31)
/* 80354EAC 00351E0C 80 1F 00 00 */ lwz r0, 0(r31)
/* 80354EB0 00351E10 7C 09 03 A6 */ mtctr r0
/* 80354EB4 00351E14 2C 00 00 00 */ cmpwi r0, 0
/* 80354EB8 00351E18 40 81 00 28 */ ble lbl_80354EE0
lbl_80354EBC:
/* 80354EBC 00351E1C 28 04 00 00 */ cmplwi r4, 0
/* 80354EC0 00351E20 41 82 00 14 */ beq lbl_80354ED4
/* 80354EC4 00351E24 88 03 00 00 */ lbz r0, 0(r3)
/* 80354EC8 00351E28 98 04 00 00 */ stb r0, 0(r4)
/* 80354ECC 00351E2C C0 03 00 04 */ lfs f0, 4(r3)
/* 80354ED0 00351E30 D0 04 00 04 */ stfs f0, 4(r4)
lbl_80354ED4:
/* 80354ED4 00351E34 38 84 00 08 */ addi r4, r4, 8
/* 80354ED8 00351E38 38 63 00 08 */ addi r3, r3, 8
/* 80354EDC 00351E3C 42 00 FF E0 */ bdnz lbl_80354EBC
lbl_80354EE0:
/* 80354EE0 00351E40 80 A1 00 08 */ lwz r5, 8(r1)
/* 80354EE4 00351E44 38 60 00 00 */ li r3, 0
/* 80354EE8 00351E48 2C 05 00 00 */ cmpwi r5, 0
/* 80354EEC 00351E4C 40 81 00 40 */ ble lbl_80354F2C
/* 80354EF0 00351E50 2C 05 00 08 */ cmpwi r5, 8
/* 80354EF4 00351E54 38 85 FF F8 */ addi r4, r5, -8
/* 80354EF8 00351E58 40 81 00 20 */ ble lbl_80354F18
/* 80354EFC 00351E5C 38 04 00 07 */ addi r0, r4, 7
/* 80354F00 00351E60 54 00 E8 FE */ srwi r0, r0, 3
/* 80354F04 00351E64 7C 09 03 A6 */ mtctr r0
/* 80354F08 00351E68 2C 04 00 00 */ cmpwi r4, 0
/* 80354F0C 00351E6C 40 81 00 0C */ ble lbl_80354F18
lbl_80354F10:
/* 80354F10 00351E70 38 63 00 08 */ addi r3, r3, 8
/* 80354F14 00351E74 42 00 FF FC */ bdnz lbl_80354F10
lbl_80354F18:
/* 80354F18 00351E78 7C 03 28 50 */ subf r0, r3, r5
/* 80354F1C 00351E7C 7C 09 03 A6 */ mtctr r0
/* 80354F20 00351E80 7C 03 28 00 */ cmpw r3, r5
/* 80354F24 00351E84 40 80 00 08 */ bge lbl_80354F2C
lbl_80354F28:
/* 80354F28 00351E88 42 00 00 00 */ bdnz lbl_80354F28
lbl_80354F2C:
/* 80354F2C 00351E8C 38 00 00 00 */ li r0, 0
/* 80354F30 00351E90 7F C3 F3 78 */ mr r3, r30
/* 80354F34 00351E94 90 01 00 08 */ stw r0, 8(r1)
/* 80354F38 00351E98 4B FE 9D 4D */ bl ReadLong__12CInputStreamFv
/* 80354F3C 00351E9C 3C 80 80 5A */ lis r4, sIdentity__12CTransform4f@ha
/* 80354F40 00351EA0 90 7F 00 1C */ stw r3, 0x1c(r31)
/* 80354F44 00351EA4 38 84 66 70 */ addi r4, r4, sIdentity__12CTransform4f@l
/* 80354F48 00351EA8 38 7F 00 20 */ addi r3, r31, 0x20
/* 80354F4C 00351EAC 4B FB DC 29 */ bl __ct__12CTransform4fFRC12CTransform4f
/* 80354F50 00351EB0 3C 80 80 5A */ lis r4, sIdentity__9CMatrix3f@ha
/* 80354F54 00351EB4 38 7F 00 50 */ addi r3, r31, 0x50
/* 80354F58 00351EB8 38 84 65 FC */ addi r4, r4, sIdentity__9CMatrix3f@l
/* 80354F5C 00351EBC 4B FB B0 C9 */ bl __ct__9CMatrix3fFRC9CMatrix3f
/* 80354F60 00351EC0 80 01 00 34 */ lwz r0, 0x34(r1)
/* 80354F64 00351EC4 7F E3 FB 78 */ mr r3, r31
/* 80354F68 00351EC8 83 E1 00 2C */ lwz r31, 0x2c(r1)
/* 80354F6C 00351ECC 83 C1 00 28 */ lwz r30, 0x28(r1)
/* 80354F70 00351ED0 7C 08 03 A6 */ mtlr r0
/* 80354F74 00351ED4 38 21 00 30 */ addi r1, r1, 0x30
/* 80354F78 00351ED8 4E 80 00 20 */ blr
.global StreamInSkinWeighting__FR12CInputStream
StreamInSkinWeighting__FR12CInputStream:
/* 80354F7C 00351EDC 94 21 FF C0 */ stwu r1, -0x40(r1)
/* 80354F80 00351EE0 7C 08 02 A6 */ mflr r0
/* 80354F84 00351EE4 90 01 00 44 */ stw r0, 0x44(r1)
/* 80354F88 00351EE8 38 00 00 00 */ li r0, 0
/* 80354F8C 00351EEC BF 41 00 28 */ stmw r26, 0x28(r1)
/* 80354F90 00351EF0 7C 9F 23 78 */ mr r31, r4
/* 80354F94 00351EF4 7C 7E 1B 78 */ mr r30, r3
/* 80354F98 00351EF8 90 01 00 08 */ stw r0, 8(r1)
/* 80354F9C 00351EFC 7F E3 FB 78 */ mr r3, r31
/* 80354FA0 00351F00 4B FE 9C E5 */ bl ReadLong__12CInputStreamFv
/* 80354FA4 00351F04 7C 7C 1B 78 */ mr r28, r3
/* 80354FA8 00351F08 2C 1C 00 03 */ cmpwi r28, 3
/* 80354FAC 00351F0C 40 81 00 78 */ ble lbl_80355024
/* 80354FB0 00351F10 3B 40 00 00 */ li r26, 0
/* 80354FB4 00351F14 3B 61 00 0C */ addi r27, r1, 0xc
lbl_80354FB8:
/* 80354FB8 00351F18 7F E3 FB 78 */ mr r3, r31
/* 80354FBC 00351F1C 4B FE 9C C9 */ bl ReadLong__12CInputStreamFv
/* 80354FC0 00351F20 54 7D 06 3E */ clrlwi r29, r3, 0x18
/* 80354FC4 00351F24 7F E3 FB 78 */ mr r3, r31
/* 80354FC8 00351F28 4B FE 9C 61 */ bl ReadFloat__12CInputStreamFv
/* 80354FCC 00351F2C 80 01 00 08 */ lwz r0, 8(r1)
/* 80354FD0 00351F30 54 00 18 38 */ slwi r0, r0, 3
/* 80354FD4 00351F34 7C 7B 02 15 */ add. r3, r27, r0
/* 80354FD8 00351F38 41 82 00 0C */ beq lbl_80354FE4
/* 80354FDC 00351F3C 9B A3 00 00 */ stb r29, 0(r3)
/* 80354FE0 00351F40 D0 23 00 04 */ stfs f1, 4(r3)
lbl_80354FE4:
/* 80354FE4 00351F44 80 61 00 08 */ lwz r3, 8(r1)
/* 80354FE8 00351F48 3B 5A 00 01 */ addi r26, r26, 1
/* 80354FEC 00351F4C 2C 1A 00 03 */ cmpwi r26, 3
/* 80354FF0 00351F50 38 03 00 01 */ addi r0, r3, 1
/* 80354FF4 00351F54 90 01 00 08 */ stw r0, 8(r1)
/* 80354FF8 00351F58 41 80 FF C0 */ blt lbl_80354FB8
/* 80354FFC 00351F5C 3B 40 00 03 */ li r26, 3
/* 80355000 00351F60 48 00 00 18 */ b lbl_80355018
lbl_80355004:
/* 80355004 00351F64 7F E3 FB 78 */ mr r3, r31
/* 80355008 00351F68 4B FE 9C 7D */ bl ReadLong__12CInputStreamFv
/* 8035500C 00351F6C 7F E3 FB 78 */ mr r3, r31
/* 80355010 00351F70 4B FE 9C 19 */ bl ReadFloat__12CInputStreamFv
/* 80355014 00351F74 3B 5A 00 01 */ addi r26, r26, 1
lbl_80355018:
/* 80355018 00351F78 7C 1A E0 00 */ cmpw r26, r28
/* 8035501C 00351F7C 41 80 FF E8 */ blt lbl_80355004
/* 80355020 00351F80 48 00 00 54 */ b lbl_80355074
lbl_80355024:
/* 80355024 00351F84 3B 61 00 0C */ addi r27, r1, 0xc
/* 80355028 00351F88 3B 40 00 00 */ li r26, 0
/* 8035502C 00351F8C 48 00 00 40 */ b lbl_8035506C
lbl_80355030:
/* 80355030 00351F90 7F E3 FB 78 */ mr r3, r31
/* 80355034 00351F94 4B FE 9C 51 */ bl ReadLong__12CInputStreamFv
/* 80355038 00351F98 54 7D 06 3E */ clrlwi r29, r3, 0x18
/* 8035503C 00351F9C 7F E3 FB 78 */ mr r3, r31
/* 80355040 00351FA0 4B FE 9B E9 */ bl ReadFloat__12CInputStreamFv
/* 80355044 00351FA4 80 01 00 08 */ lwz r0, 8(r1)
/* 80355048 00351FA8 54 00 18 38 */ slwi r0, r0, 3
/* 8035504C 00351FAC 7C 7B 02 15 */ add. r3, r27, r0
/* 80355050 00351FB0 41 82 00 0C */ beq lbl_8035505C
/* 80355054 00351FB4 9B A3 00 00 */ stb r29, 0(r3)
/* 80355058 00351FB8 D0 23 00 04 */ stfs f1, 4(r3)
lbl_8035505C:
/* 8035505C 00351FBC 80 61 00 08 */ lwz r3, 8(r1)
/* 80355060 00351FC0 3B 5A 00 01 */ addi r26, r26, 1
/* 80355064 00351FC4 38 03 00 01 */ addi r0, r3, 1
/* 80355068 00351FC8 90 01 00 08 */ stw r0, 8(r1)
lbl_8035506C:
/* 8035506C 00351FCC 7C 1A E0 00 */ cmpw r26, r28
/* 80355070 00351FD0 41 80 FF C0 */ blt lbl_80355030
lbl_80355074:
/* 80355074 00351FD4 80 01 00 08 */ lwz r0, 8(r1)
/* 80355078 00351FD8 38 81 00 0C */ addi r4, r1, 0xc
/* 8035507C 00351FDC 38 7E 00 04 */ addi r3, r30, 4
/* 80355080 00351FE0 90 1E 00 00 */ stw r0, 0(r30)
/* 80355084 00351FE4 80 1E 00 00 */ lwz r0, 0(r30)
/* 80355088 00351FE8 7C 09 03 A6 */ mtctr r0
/* 8035508C 00351FEC 2C 00 00 00 */ cmpwi r0, 0
/* 80355090 00351FF0 40 81 00 28 */ ble lbl_803550B8
lbl_80355094:
/* 80355094 00351FF4 28 03 00 00 */ cmplwi r3, 0
/* 80355098 00351FF8 41 82 00 14 */ beq lbl_803550AC
/* 8035509C 00351FFC 88 04 00 00 */ lbz r0, 0(r4)
/* 803550A0 00352000 C0 04 00 04 */ lfs f0, 4(r4)
/* 803550A4 00352004 98 03 00 00 */ stb r0, 0(r3)
/* 803550A8 00352008 D0 03 00 04 */ stfs f0, 4(r3)
lbl_803550AC:
/* 803550AC 0035200C 38 63 00 08 */ addi r3, r3, 8
/* 803550B0 00352010 38 84 00 08 */ addi r4, r4, 8
/* 803550B4 00352014 42 00 FF E0 */ bdnz lbl_80355094
lbl_803550B8:
/* 803550B8 00352018 80 A1 00 08 */ lwz r5, 8(r1)
/* 803550BC 0035201C 38 60 00 00 */ li r3, 0
/* 803550C0 00352020 2C 05 00 00 */ cmpwi r5, 0
/* 803550C4 00352024 40 81 00 40 */ ble lbl_80355104
/* 803550C8 00352028 2C 05 00 08 */ cmpwi r5, 8
/* 803550CC 0035202C 38 85 FF F8 */ addi r4, r5, -8
/* 803550D0 00352030 40 81 00 20 */ ble lbl_803550F0
/* 803550D4 00352034 38 04 00 07 */ addi r0, r4, 7
/* 803550D8 00352038 54 00 E8 FE */ srwi r0, r0, 3
/* 803550DC 0035203C 7C 09 03 A6 */ mtctr r0
/* 803550E0 00352040 2C 04 00 00 */ cmpwi r4, 0
/* 803550E4 00352044 40 81 00 0C */ ble lbl_803550F0
lbl_803550E8:
/* 803550E8 00352048 38 63 00 08 */ addi r3, r3, 8
/* 803550EC 0035204C 42 00 FF FC */ bdnz lbl_803550E8
lbl_803550F0:
/* 803550F0 00352050 7C 03 28 50 */ subf r0, r3, r5
/* 803550F4 00352054 7C 09 03 A6 */ mtctr r0
/* 803550F8 00352058 7C 03 28 00 */ cmpw r3, r5
/* 803550FC 0035205C 40 80 00 08 */ bge lbl_80355104
lbl_80355100:
/* 80355100 00352060 42 00 00 00 */ bdnz lbl_80355100
lbl_80355104:
/* 80355104 00352064 BB 41 00 28 */ lmw r26, 0x28(r1)
/* 80355108 00352068 38 00 00 00 */ li r0, 0
/* 8035510C 0035206C 90 01 00 08 */ stw r0, 8(r1)
/* 80355110 00352070 80 01 00 44 */ lwz r0, 0x44(r1)
/* 80355114 00352074 7C 08 03 A6 */ mtlr r0
/* 80355118 00352078 38 21 00 40 */ addi r1, r1, 0x40
/* 8035511C 0035207C 4E 80 00 20 */ blr
.section .sdata2, "a"
.balign 8
.global lbl_805AE9C0
lbl_805AE9C0:
# ROM: 0x3FB260
.4byte 0
.4byte 0