tp/asm/m_Do/m_Do_ext/func_800108F0.s

173 lines
7.1 KiB
ArmAsm

lbl_800108F0:
/* 800108F0 94 21 FF B0 */ stwu r1, -0x50(r1)
/* 800108F4 7C 08 02 A6 */ mflr r0
/* 800108F8 90 01 00 54 */ stw r0, 0x54(r1)
/* 800108FC DB E1 00 40 */ stfd f31, 0x40(r1)
/* 80010900 F3 E1 00 48 */ psq_st f31, 72(r1), 0, 0 /* qr0 */
/* 80010904 39 61 00 40 */ addi r11, r1, 0x40
/* 80010908 48 35 18 B9 */ bl _savegpr_22
/* 8001090C 7C 77 1B 78 */ mr r23, r3
/* 80010910 7C 98 23 79 */ or. r24, r4, r4
/* 80010914 7C B9 2B 78 */ mr r25, r5
/* 80010918 7C DA 33 78 */ mr r26, r6
/* 8001091C 7C FB 3B 78 */ mr r27, r7
/* 80010920 7D 1C 43 78 */ mr r28, r8
/* 80010924 FF E0 08 90 */ fmr f31, f1
/* 80010928 7D 3D 4B 78 */ mr r29, r9
/* 8001092C 7D 5E 53 78 */ mr r30, r10
/* 80010930 83 E1 00 58 */ lwz r31, 0x58(r1)
/* 80010934 82 C1 00 5C */ lwz r22, 0x5c(r1)
/* 80010938 80 A1 00 60 */ lwz r5, 0x60(r1)
/* 8001093C 38 00 00 00 */ li r0, 0
/* 80010940 90 03 00 04 */ stw r0, 4(r3)
/* 80010944 90 03 00 20 */ stw r0, 0x20(r3)
/* 80010948 90 03 00 24 */ stw r0, 0x24(r3)
/* 8001094C 90 03 00 4C */ stw r0, 0x4c(r3)
/* 80010950 40 82 00 0C */ bne lbl_8001095C
/* 80010954 38 60 00 00 */ li r3, 0
/* 80010958 48 00 01 F0 */ b lbl_80010B48
lbl_8001095C:
/* 8001095C 80 78 00 60 */ lwz r3, 0x60(r24)
/* 80010960 80 63 00 00 */ lwz r3, 0(r3)
/* 80010964 80 03 00 48 */ lwz r0, 0x48(r3)
/* 80010968 28 00 00 00 */ cmplwi r0, 0
/* 8001096C 41 82 00 24 */ beq lbl_80010990
/* 80010970 28 16 00 00 */ cmplwi r22, 0
/* 80010974 40 82 00 1C */ bne lbl_80010990
/* 80010978 A0 18 00 74 */ lhz r0, 0x74(r24)
/* 8001097C 28 00 00 01 */ cmplwi r0, 1
/* 80010980 40 82 00 0C */ bne lbl_8001098C
/* 80010984 3E C0 00 02 */ lis r22, 2
/* 80010988 48 00 00 08 */ b lbl_80010990
lbl_8001098C:
/* 8001098C 3E C0 00 08 */ lis r22, 8
lbl_80010990:
/* 80010990 7F 03 C3 78 */ mr r3, r24
/* 80010994 7E C4 B3 78 */ mr r4, r22
/* 80010998 48 00 42 BD */ bl mDoExt_J3DModel__create__FP12J3DModelDataUlUl
/* 8001099C 90 77 00 04 */ stw r3, 4(r23)
/* 800109A0 80 77 00 04 */ lwz r3, 4(r23)
/* 800109A4 28 03 00 00 */ cmplwi r3, 0
/* 800109A8 40 82 00 0C */ bne lbl_800109B4
/* 800109AC 38 60 00 00 */ li r3, 0
/* 800109B0 48 00 01 98 */ b lbl_80010B48
lbl_800109B4:
/* 800109B4 3C 16 FF F8 */ addis r0, r22, 0xfff8
/* 800109B8 28 00 00 00 */ cmplwi r0, 0
/* 800109BC 41 82 00 08 */ beq lbl_800109C4
/* 800109C0 4B FF D0 E9 */ bl mDoExt_changeMaterial__FP8J3DModel
lbl_800109C4:
/* 800109C4 93 F7 00 4C */ stw r31, 0x4c(r23)
/* 800109C8 28 1B 00 00 */ cmplwi r27, 0
/* 800109CC 41 82 00 0C */ beq lbl_800109D8
/* 800109D0 80 1B 00 28 */ lwz r0, 0x28(r27)
/* 800109D4 90 17 00 50 */ stw r0, 0x50(r23)
lbl_800109D8:
/* 800109D8 7E E3 BB 78 */ mr r3, r23
/* 800109DC 7F 64 DB 78 */ mr r4, r27
/* 800109E0 7F 85 E3 78 */ mr r5, r28
/* 800109E4 C0 22 81 1C */ lfs f1, lit_3876(r2)
/* 800109E8 FC 40 F8 90 */ fmr f2, f31
/* 800109EC C8 82 81 20 */ lfd f4, lit_3878(r2)
/* 800109F0 6F A0 80 00 */ xoris r0, r29, 0x8000
/* 800109F4 90 01 00 0C */ stw r0, 0xc(r1)
/* 800109F8 3C C0 43 30 */ lis r6, 0x4330
/* 800109FC 90 C1 00 08 */ stw r6, 8(r1)
/* 80010A00 C8 01 00 08 */ lfd f0, 8(r1)
/* 80010A04 EC 60 20 28 */ fsubs f3, f0, f4
/* 80010A08 6F C0 80 00 */ xoris r0, r30, 0x8000
/* 80010A0C 90 01 00 14 */ stw r0, 0x14(r1)
/* 80010A10 90 C1 00 10 */ stw r6, 0x10(r1)
/* 80010A14 C8 01 00 10 */ lfd f0, 0x10(r1)
/* 80010A18 EC 80 20 28 */ fsubs f4, f0, f4
/* 80010A1C 48 00 04 55 */ bl setAnm__16mDoExt_McaMorfSOFP15J3DAnmTransformiffff
/* 80010A20 C0 02 81 28 */ lfs f0, lit_5939(r2)
/* 80010A24 D0 17 00 2C */ stfs f0, 0x2c(r23)
/* 80010A28 A3 78 00 2C */ lhz r27, 0x2c(r24)
/* 80010A2C 57 63 28 34 */ slwi r3, r27, 5
/* 80010A30 38 63 00 10 */ addi r3, r3, 0x10
/* 80010A34 48 2B E2 91 */ bl __nwa__FUl
/* 80010A38 38 80 00 00 */ li r4, 0
/* 80010A3C 38 A0 00 00 */ li r5, 0
/* 80010A40 38 C0 00 20 */ li r6, 0x20
/* 80010A44 7F 67 DB 78 */ mr r7, r27
/* 80010A48 48 35 14 CD */ bl __construct_new_array
/* 80010A4C 90 77 00 20 */ stw r3, 0x20(r23)
/* 80010A50 80 17 00 20 */ lwz r0, 0x20(r23)
/* 80010A54 28 00 00 00 */ cmplwi r0, 0
/* 80010A58 41 82 00 B0 */ beq lbl_80010B08
/* 80010A5C A0 18 00 2C */ lhz r0, 0x2c(r24)
/* 80010A60 54 03 23 36 */ rlwinm r3, r0, 4, 0xc, 0x1b
/* 80010A64 48 2B E2 61 */ bl __nwa__FUl
/* 80010A68 90 77 00 24 */ stw r3, 0x24(r23)
/* 80010A6C 80 17 00 24 */ lwz r0, 0x24(r23)
/* 80010A70 28 00 00 00 */ cmplwi r0, 0
/* 80010A74 41 82 00 94 */ beq lbl_80010B08
/* 80010A78 83 97 00 20 */ lwz r28, 0x20(r23)
/* 80010A7C 7C 1D 03 78 */ mr r29, r0
/* 80010A80 80 77 00 04 */ lwz r3, 4(r23)
/* 80010A84 83 63 00 04 */ lwz r27, 4(r3)
/* 80010A88 A3 1B 00 2C */ lhz r24, 0x2c(r27)
/* 80010A8C 3B C0 00 00 */ li r30, 0
/* 80010A90 48 00 00 60 */ b lbl_80010AF0
lbl_80010A94:
/* 80010A94 80 7B 00 28 */ lwz r3, 0x28(r27)
/* 80010A98 57 C0 13 BA */ rlwinm r0, r30, 2, 0xe, 0x1d
/* 80010A9C 7C 63 00 2E */ lwzx r3, r3, r0
/* 80010AA0 E0 03 00 18 */ psq_l f0, 24(r3), 0, 0 /* qr0 */
/* 80010AA4 F0 1C 00 00 */ psq_st f0, 0(r28), 0, 0 /* qr0 */
/* 80010AA8 C0 03 00 20 */ lfs f0, 0x20(r3)
/* 80010AAC D0 1C 00 08 */ stfs f0, 8(r28)
/* 80010AB0 80 03 00 24 */ lwz r0, 0x24(r3)
/* 80010AB4 90 1C 00 0C */ stw r0, 0xc(r28)
/* 80010AB8 A8 03 00 28 */ lha r0, 0x28(r3)
/* 80010ABC B0 1C 00 10 */ sth r0, 0x10(r28)
/* 80010AC0 E0 03 00 2C */ psq_l f0, 44(r3), 0, 0 /* qr0 */
/* 80010AC4 F0 1C 00 14 */ psq_st f0, 20(r28), 0, 0 /* qr0 */
/* 80010AC8 C0 03 00 34 */ lfs f0, 0x34(r3)
/* 80010ACC D0 1C 00 1C */ stfs f0, 0x1c(r28)
/* 80010AD0 A8 7C 00 0C */ lha r3, 0xc(r28)
/* 80010AD4 A8 9C 00 0E */ lha r4, 0xe(r28)
/* 80010AD8 A8 BC 00 10 */ lha r5, 0x10(r28)
/* 80010ADC 7F A6 EB 78 */ mr r6, r29
/* 80010AE0 48 32 8D 99 */ bl JMAEulerToQuat__FsssP10Quaternion
/* 80010AE4 3B 9C 00 20 */ addi r28, r28, 0x20
/* 80010AE8 3B BD 00 10 */ addi r29, r29, 0x10
/* 80010AEC 3B DE 00 01 */ addi r30, r30, 1
lbl_80010AF0:
/* 80010AF0 7C 1E C0 00 */ cmpw r30, r24
/* 80010AF4 41 80 FF A0 */ blt lbl_80010A94
/* 80010AF8 93 37 00 38 */ stw r25, 0x38(r23)
/* 80010AFC 93 57 00 3C */ stw r26, 0x3c(r23)
/* 80010B00 38 60 00 01 */ li r3, 1
/* 80010B04 48 00 00 44 */ b lbl_80010B48
lbl_80010B08:
/* 80010B08 80 17 00 20 */ lwz r0, 0x20(r23)
/* 80010B0C 28 00 00 00 */ cmplwi r0, 0
/* 80010B10 41 82 00 0C */ beq lbl_80010B1C
/* 80010B14 38 00 00 00 */ li r0, 0
/* 80010B18 90 17 00 20 */ stw r0, 0x20(r23)
lbl_80010B1C:
/* 80010B1C 80 17 00 24 */ lwz r0, 0x24(r23)
/* 80010B20 28 00 00 00 */ cmplwi r0, 0
/* 80010B24 41 82 00 0C */ beq lbl_80010B30
/* 80010B28 38 00 00 00 */ li r0, 0
/* 80010B2C 90 17 00 24 */ stw r0, 0x24(r23)
lbl_80010B30:
/* 80010B30 80 17 00 04 */ lwz r0, 4(r23)
/* 80010B34 28 00 00 00 */ cmplwi r0, 0
/* 80010B38 41 82 00 0C */ beq lbl_80010B44
/* 80010B3C 38 00 00 00 */ li r0, 0
/* 80010B40 90 17 00 04 */ stw r0, 4(r23)
lbl_80010B44:
/* 80010B44 38 60 00 00 */ li r3, 0
lbl_80010B48:
/* 80010B48 E3 E1 00 48 */ psq_l f31, 72(r1), 0, 0 /* qr0 */
/* 80010B4C CB E1 00 40 */ lfd f31, 0x40(r1)
/* 80010B50 39 61 00 40 */ addi r11, r1, 0x40
/* 80010B54 48 35 16 B9 */ bl _restgpr_22
/* 80010B58 80 01 00 54 */ lwz r0, 0x54(r1)
/* 80010B5C 7C 08 03 A6 */ mtlr r0
/* 80010B60 38 21 00 50 */ addi r1, r1, 0x50
/* 80010B64 4E 80 00 20 */ blr