prime/asm/MetroidPrime/Weapons/CIceBeam.s

862 lines
42 KiB
ArmAsm

.include "macros.inc"
.section .data
.balign 8
.global lbl_803DF7E8
lbl_803DF7E8:
# ROM: 0x3DC7E8
.4byte 0
.4byte 0
.4byte __dt__8CIceBeamFv
.4byte Reset__10CGunWeaponFR13CStateManager
.4byte PlayAnim__10CGunWeaponFQ212NWeaponTypes12EGunAnimTypeb
.4byte PreRenderGunFx__8CIceBeamFRC13CStateManagerRC12CTransform4f
.4byte PostRenderGunFx__8CIceBeamFRC13CStateManagerRC12CTransform4f
.4byte UpdateGunFx__8CIceBeamFbfRC13CStateManagerRC12CTransform4f
.4byte Fire__8CIceBeamFbfQ212CPlayerState12EChargeStageRC12CTransform4fR13CStateManager9TUniqueId
.4byte EnableFx__8CIceBeamFb
.4byte EnableSecondaryFx__8CIceBeamFQ210CGunWeapon16ESecondaryFxType
.4byte Draw__10CGunWeaponCFbRC13CStateManagerRC12CTransform4fRC11CModelFlagsPC12CActorLights
.4byte DrawMuzzleFx__10CGunWeaponCFRC13CStateManager
.4byte Update__8CIceBeamFfR13CStateManager
.4byte Load__8CIceBeamFb
.4byte Unload__8CIceBeamFR13CStateManager
.4byte IsLoaded__8CIceBeamCFv
.4byte 0
.section .sdata2, "a"
.balign 8
.global lbl_805AACC0
lbl_805AACC0:
# ROM: 0x3F7560
.4byte 0x070506F0
.4byte 0
.section .text, "ax"
.global EnableFx__8CIceBeamFb
EnableFx__8CIceBeamFb:
/* 800E0EE0 000DDE40 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 800E0EE4 000DDE44 7C 08 02 A6 */ mflr r0
/* 800E0EE8 000DDE48 90 01 00 14 */ stw r0, 0x14(r1)
/* 800E0EEC 000DDE4C 80 63 02 40 */ lwz r3, 0x240(r3)
/* 800E0EF0 000DDE50 28 03 00 00 */ cmplwi r3, 0
/* 800E0EF4 000DDE54 41 82 00 14 */ beq lbl_800E0F08
/* 800E0EF8 000DDE58 81 83 00 00 */ lwz r12, 0(r3)
/* 800E0EFC 000DDE5C 81 8C 00 2C */ lwz r12, 0x2c(r12)
/* 800E0F00 000DDE60 7D 89 03 A6 */ mtctr r12
/* 800E0F04 000DDE64 4E 80 04 21 */ bctrl
lbl_800E0F08:
/* 800E0F08 000DDE68 80 01 00 14 */ lwz r0, 0x14(r1)
/* 800E0F0C 000DDE6C 7C 08 03 A6 */ mtlr r0
/* 800E0F10 000DDE70 38 21 00 10 */ addi r1, r1, 0x10
/* 800E0F14 000DDE74 4E 80 00 20 */ blr
.global EnableSecondaryFx__8CIceBeamFQ210CGunWeapon16ESecondaryFxType
EnableSecondaryFx__8CIceBeamFQ210CGunWeapon16ESecondaryFxType:
/* 800E0F18 000DDE78 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 800E0F1C 000DDE7C 7C 08 02 A6 */ mflr r0
/* 800E0F20 000DDE80 90 01 00 34 */ stw r0, 0x34(r1)
/* 800E0F24 000DDE84 93 E1 00 2C */ stw r31, 0x2c(r1)
/* 800E0F28 000DDE88 7C 7F 1B 78 */ mr r31, r3
/* 800E0F2C 000DDE8C 93 C1 00 28 */ stw r30, 0x28(r1)
/* 800E0F30 000DDE90 93 A1 00 24 */ stw r29, 0x24(r1)
/* 800E0F34 000DDE94 7C 9D 23 78 */ mr r29, r4
/* 800E0F38 000DDE98 2C 1D 00 03 */ cmpwi r29, 3
/* 800E0F3C 000DDE9C 93 81 00 20 */ stw r28, 0x20(r1)
/* 800E0F40 000DDEA0 41 82 00 14 */ beq lbl_800E0F54
/* 800E0F44 000DDEA4 40 80 00 1C */ bge lbl_800E0F60
/* 800E0F48 000DDEA8 2C 1D 00 00 */ cmpwi r29, 0
/* 800E0F4C 000DDEAC 41 82 00 08 */ beq lbl_800E0F54
/* 800E0F50 000DDEB0 48 00 00 10 */ b lbl_800E0F60
lbl_800E0F54:
/* 800E0F54 000DDEB4 80 1F 01 CC */ lwz r0, 0x1cc(r31)
/* 800E0F58 000DDEB8 2C 00 00 00 */ cmpwi r0, 0
/* 800E0F5C 000DDEBC 41 82 01 90 */ beq lbl_800E10EC
lbl_800E0F60:
/* 800E0F60 000DDEC0 2C 1D 00 01 */ cmpwi r29, 1
/* 800E0F64 000DDEC4 41 82 00 DC */ beq lbl_800E1040
/* 800E0F68 000DDEC8 40 80 00 10 */ bge lbl_800E0F78
/* 800E0F6C 000DDECC 2C 1D 00 00 */ cmpwi r29, 0
/* 800E0F70 000DDED0 40 80 00 10 */ bge lbl_800E0F80
/* 800E0F74 000DDED4 48 00 01 78 */ b lbl_800E10EC
lbl_800E0F78:
/* 800E0F78 000DDED8 2C 1D 00 04 */ cmpwi r29, 4
/* 800E0F7C 000DDEDC 40 80 01 70 */ bge lbl_800E10EC
lbl_800E0F80:
/* 800E0F80 000DDEE0 88 1F 02 48 */ lbz r0, 0x248(r31)
/* 800E0F84 000DDEE4 54 00 D7 FF */ rlwinm. r0, r0, 0x1a, 0x1f, 0x1f
/* 800E0F88 000DDEE8 40 82 01 64 */ bne lbl_800E10EC
/* 800E0F8C 000DDEEC 3C 60 80 3D */ lis r3, lbl_803CE598@ha
/* 800E0F90 000DDEF0 3B A0 00 00 */ li r29, 0
/* 800E0F94 000DDEF4 38 83 E5 98 */ addi r4, r3, lbl_803CE598@l
/* 800E0F98 000DDEF8 38 A0 00 00 */ li r5, 0
/* 800E0F9C 000DDEFC 38 60 03 40 */ li r3, 0x340
/* 800E0FA0 000DDF00 48 23 48 CD */ bl __nw__FUlPCcPCc
/* 800E0FA4 000DDF04 7C 7E 1B 79 */ or. r30, r3, r3
/* 800E0FA8 000DDF08 41 82 00 2C */ beq lbl_800E0FD4
/* 800E0FAC 000DDF0C 38 61 00 10 */ addi r3, r1, 0x10
/* 800E0FB0 000DDF10 38 9F 02 34 */ addi r4, r31, 0x234
/* 800E0FB4 000DDF14 48 25 FE F5 */ bl __ct__6CTokenFRC6CToken
/* 800E0FB8 000DDF18 7F C3 F3 78 */ mr r3, r30
/* 800E0FBC 000DDF1C 38 81 00 10 */ addi r4, r1, 0x10
/* 800E0FC0 000DDF20 3B A0 00 01 */ li r29, 1
/* 800E0FC4 000DDF24 38 A0 00 00 */ li r5, 0
/* 800E0FC8 000DDF28 38 C0 00 01 */ li r6, 1
/* 800E0FCC 000DDF2C 48 23 E4 15 */ bl "__ct__11CElementGenF25TToken<15CGenDescription>Q211CElementGen21EModelOrientationTypeQ211CElementGen20EOptionalSystemFlags"
/* 800E0FD0 000DDF30 7C 7E 1B 78 */ mr r30, r3
lbl_800E0FD4:
/* 800E0FD4 000DDF34 80 7F 02 44 */ lwz r3, 0x244(r31)
/* 800E0FD8 000DDF38 28 03 00 00 */ cmplwi r3, 0
/* 800E0FDC 000DDF3C 41 82 00 18 */ beq lbl_800E0FF4
/* 800E0FE0 000DDF40 81 83 00 00 */ lwz r12, 0(r3)
/* 800E0FE4 000DDF44 38 80 00 01 */ li r4, 1
/* 800E0FE8 000DDF48 81 8C 00 08 */ lwz r12, 8(r12)
/* 800E0FEC 000DDF4C 7D 89 03 A6 */ mtctr r12
/* 800E0FF0 000DDF50 4E 80 04 21 */ bctrl
lbl_800E0FF4:
/* 800E0FF4 000DDF54 7F A0 07 75 */ extsb. r0, r29
/* 800E0FF8 000DDF58 93 DF 02 44 */ stw r30, 0x244(r31)
/* 800E0FFC 000DDF5C 41 82 00 10 */ beq lbl_800E100C
/* 800E1000 000DDF60 38 61 00 10 */ addi r3, r1, 0x10
/* 800E1004 000DDF64 38 80 00 00 */ li r4, 0
/* 800E1008 000DDF68 48 25 FE 39 */ bl __dt__6CTokenFv
lbl_800E100C:
/* 800E100C 000DDF6C 80 7F 02 44 */ lwz r3, 0x244(r31)
/* 800E1010 000DDF70 38 9F 00 04 */ addi r4, r31, 4
/* 800E1014 000DDF74 81 83 00 00 */ lwz r12, 0(r3)
/* 800E1018 000DDF78 81 8C 00 24 */ lwz r12, 0x24(r12)
/* 800E101C 000DDF7C 7D 89 03 A6 */ mtctr r12
/* 800E1020 000DDF80 4E 80 04 21 */ bctrl
/* 800E1024 000DDF84 88 7F 02 48 */ lbz r3, 0x248(r31)
/* 800E1028 000DDF88 38 00 00 01 */ li r0, 1
/* 800E102C 000DDF8C 50 03 36 72 */ rlwimi r3, r0, 6, 0x19, 0x19
/* 800E1030 000DDF90 38 00 00 03 */ li r0, 3
/* 800E1034 000DDF94 98 7F 02 48 */ stb r3, 0x248(r31)
/* 800E1038 000DDF98 90 1F 01 CC */ stw r0, 0x1cc(r31)
/* 800E103C 000DDF9C 48 00 00 B0 */ b lbl_800E10EC
lbl_800E1040:
/* 800E1040 000DDFA0 3C 60 80 3D */ lis r3, lbl_803CE598@ha
/* 800E1044 000DDFA4 3B 80 00 00 */ li r28, 0
/* 800E1048 000DDFA8 38 83 E5 98 */ addi r4, r3, lbl_803CE598@l
/* 800E104C 000DDFAC 38 A0 00 00 */ li r5, 0
/* 800E1050 000DDFB0 38 60 03 40 */ li r3, 0x340
/* 800E1054 000DDFB4 48 23 48 19 */ bl __nw__FUlPCcPCc
/* 800E1058 000DDFB8 7C 7E 1B 79 */ or. r30, r3, r3
/* 800E105C 000DDFBC 41 82 00 2C */ beq lbl_800E1088
/* 800E1060 000DDFC0 38 61 00 08 */ addi r3, r1, 8
/* 800E1064 000DDFC4 38 9F 02 28 */ addi r4, r31, 0x228
/* 800E1068 000DDFC8 48 25 FE 41 */ bl __ct__6CTokenFRC6CToken
/* 800E106C 000DDFCC 7F C3 F3 78 */ mr r3, r30
/* 800E1070 000DDFD0 38 81 00 08 */ addi r4, r1, 8
/* 800E1074 000DDFD4 3B 80 00 01 */ li r28, 1
/* 800E1078 000DDFD8 38 A0 00 00 */ li r5, 0
/* 800E107C 000DDFDC 38 C0 00 01 */ li r6, 1
/* 800E1080 000DDFE0 48 23 E3 61 */ bl "__ct__11CElementGenF25TToken<15CGenDescription>Q211CElementGen21EModelOrientationTypeQ211CElementGen20EOptionalSystemFlags"
/* 800E1084 000DDFE4 7C 7E 1B 78 */ mr r30, r3
lbl_800E1088:
/* 800E1088 000DDFE8 80 7F 02 44 */ lwz r3, 0x244(r31)
/* 800E108C 000DDFEC 28 03 00 00 */ cmplwi r3, 0
/* 800E1090 000DDFF0 41 82 00 18 */ beq lbl_800E10A8
/* 800E1094 000DDFF4 81 83 00 00 */ lwz r12, 0(r3)
/* 800E1098 000DDFF8 38 80 00 01 */ li r4, 1
/* 800E109C 000DDFFC 81 8C 00 08 */ lwz r12, 8(r12)
/* 800E10A0 000DE000 7D 89 03 A6 */ mtctr r12
/* 800E10A4 000DE004 4E 80 04 21 */ bctrl
lbl_800E10A8:
/* 800E10A8 000DE008 7F 80 07 75 */ extsb. r0, r28
/* 800E10AC 000DE00C 93 DF 02 44 */ stw r30, 0x244(r31)
/* 800E10B0 000DE010 41 82 00 10 */ beq lbl_800E10C0
/* 800E10B4 000DE014 38 61 00 08 */ addi r3, r1, 8
/* 800E10B8 000DE018 38 80 00 00 */ li r4, 0
/* 800E10BC 000DE01C 48 25 FD 85 */ bl __dt__6CTokenFv
lbl_800E10C0:
/* 800E10C0 000DE020 80 7F 02 44 */ lwz r3, 0x244(r31)
/* 800E10C4 000DE024 38 9F 00 04 */ addi r4, r31, 4
/* 800E10C8 000DE028 81 83 00 00 */ lwz r12, 0(r3)
/* 800E10CC 000DE02C 81 8C 00 24 */ lwz r12, 0x24(r12)
/* 800E10D0 000DE030 7D 89 03 A6 */ mtctr r12
/* 800E10D4 000DE034 4E 80 04 21 */ bctrl
/* 800E10D8 000DE038 93 BF 01 CC */ stw r29, 0x1cc(r31)
/* 800E10DC 000DE03C 38 60 00 00 */ li r3, 0
/* 800E10E0 000DE040 88 1F 02 48 */ lbz r0, 0x248(r31)
/* 800E10E4 000DE044 50 60 36 72 */ rlwimi r0, r3, 6, 0x19, 0x19
/* 800E10E8 000DE048 98 1F 02 48 */ stb r0, 0x248(r31)
lbl_800E10EC:
/* 800E10EC 000DE04C 80 01 00 34 */ lwz r0, 0x34(r1)
/* 800E10F0 000DE050 83 E1 00 2C */ lwz r31, 0x2c(r1)
/* 800E10F4 000DE054 83 C1 00 28 */ lwz r30, 0x28(r1)
/* 800E10F8 000DE058 83 A1 00 24 */ lwz r29, 0x24(r1)
/* 800E10FC 000DE05C 83 81 00 20 */ lwz r28, 0x20(r1)
/* 800E1100 000DE060 7C 08 03 A6 */ mtlr r0
/* 800E1104 000DE064 38 21 00 30 */ addi r1, r1, 0x30
/* 800E1108 000DE068 4E 80 00 20 */ blr
.global IsLoaded__8CIceBeamCFv
IsLoaded__8CIceBeamCFv:
/* 800E110C 000DE06C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 800E1110 000DE070 7C 08 02 A6 */ mflr r0
/* 800E1114 000DE074 90 01 00 14 */ stw r0, 0x14(r1)
/* 800E1118 000DE078 93 E1 00 0C */ stw r31, 0xc(r1)
/* 800E111C 000DE07C 3B E0 00 00 */ li r31, 0
/* 800E1120 000DE080 93 C1 00 08 */ stw r30, 8(r1)
/* 800E1124 000DE084 7C 7E 1B 78 */ mr r30, r3
/* 800E1128 000DE088 48 0D A2 7D */ bl IsLoaded__10CGunWeaponCFv
/* 800E112C 000DE08C 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 800E1130 000DE090 41 82 00 14 */ beq lbl_800E1144
/* 800E1134 000DE094 88 1E 02 48 */ lbz r0, 0x248(r30)
/* 800E1138 000DE098 54 00 CF FF */ rlwinm. r0, r0, 0x19, 0x1f, 0x1f
/* 800E113C 000DE09C 41 82 00 08 */ beq lbl_800E1144
/* 800E1140 000DE0A0 3B E0 00 01 */ li r31, 1
lbl_800E1144:
/* 800E1144 000DE0A4 80 01 00 14 */ lwz r0, 0x14(r1)
/* 800E1148 000DE0A8 7F E3 FB 78 */ mr r3, r31
/* 800E114C 000DE0AC 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 800E1150 000DE0B0 83 C1 00 08 */ lwz r30, 8(r1)
/* 800E1154 000DE0B4 7C 08 03 A6 */ mtlr r0
/* 800E1158 000DE0B8 38 21 00 10 */ addi r1, r1, 0x10
/* 800E115C 000DE0BC 4E 80 00 20 */ blr
.global Unload__8CIceBeamFR13CStateManager
Unload__8CIceBeamFR13CStateManager:
/* 800E1160 000DE0C0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 800E1164 000DE0C4 7C 08 02 A6 */ mflr r0
/* 800E1168 000DE0C8 90 01 00 14 */ stw r0, 0x14(r1)
/* 800E116C 000DE0CC 93 E1 00 0C */ stw r31, 0xc(r1)
/* 800E1170 000DE0D0 7C 7F 1B 78 */ mr r31, r3
/* 800E1174 000DE0D4 48 0D A2 3D */ bl Unload__10CGunWeaponFR13CStateManager
/* 800E1178 000DE0D8 38 00 00 00 */ li r0, 0
/* 800E117C 000DE0DC 38 7F 02 34 */ addi r3, r31, 0x234
/* 800E1180 000DE0E0 90 1F 02 3C */ stw r0, 0x23c(r31)
/* 800E1184 000DE0E4 48 25 FB BD */ bl Unlock__6CTokenFv
/* 800E1188 000DE0E8 38 00 00 00 */ li r0, 0
/* 800E118C 000DE0EC 38 7F 02 28 */ addi r3, r31, 0x228
/* 800E1190 000DE0F0 90 1F 02 30 */ stw r0, 0x230(r31)
/* 800E1194 000DE0F4 48 25 FB AD */ bl Unlock__6CTokenFv
/* 800E1198 000DE0F8 38 00 00 00 */ li r0, 0
/* 800E119C 000DE0FC 38 7F 02 1C */ addi r3, r31, 0x21c
/* 800E11A0 000DE100 90 1F 02 24 */ stw r0, 0x224(r31)
/* 800E11A4 000DE104 48 25 FB 9D */ bl Unlock__6CTokenFv
/* 800E11A8 000DE108 7F E3 FB 78 */ mr r3, r31
/* 800E11AC 000DE10C 48 00 05 A5 */ bl ReInitVariables__8CIceBeamFv
/* 800E11B0 000DE110 80 01 00 14 */ lwz r0, 0x14(r1)
/* 800E11B4 000DE114 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 800E11B8 000DE118 7C 08 03 A6 */ mtlr r0
/* 800E11BC 000DE11C 38 21 00 10 */ addi r1, r1, 0x10
/* 800E11C0 000DE120 4E 80 00 20 */ blr
.global Load__8CIceBeamFb
Load__8CIceBeamFb:
/* 800E11C4 000DE124 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 800E11C8 000DE128 7C 08 02 A6 */ mflr r0
/* 800E11CC 000DE12C 90 01 00 14 */ stw r0, 0x14(r1)
/* 800E11D0 000DE130 93 E1 00 0C */ stw r31, 0xc(r1)
/* 800E11D4 000DE134 7C 7F 1B 78 */ mr r31, r3
/* 800E11D8 000DE138 48 0D A2 FD */ bl Load__10CGunWeaponFR13CStateManagerb
/* 800E11DC 000DE13C 38 7F 02 1C */ addi r3, r31, 0x21c
/* 800E11E0 000DE140 48 25 FB A5 */ bl Lock__6CTokenFv
/* 800E11E4 000DE144 38 7F 02 28 */ addi r3, r31, 0x228
/* 800E11E8 000DE148 48 25 FB 9D */ bl Lock__6CTokenFv
/* 800E11EC 000DE14C 38 7F 02 34 */ addi r3, r31, 0x234
/* 800E11F0 000DE150 48 25 FB 95 */ bl Lock__6CTokenFv
/* 800E11F4 000DE154 88 1F 02 48 */ lbz r0, 0x248(r31)
/* 800E11F8 000DE158 38 60 00 00 */ li r3, 0
/* 800E11FC 000DE15C 50 60 36 72 */ rlwimi r0, r3, 6, 0x19, 0x19
/* 800E1200 000DE160 98 1F 02 48 */ stb r0, 0x248(r31)
/* 800E1204 000DE164 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 800E1208 000DE168 80 01 00 14 */ lwz r0, 0x14(r1)
/* 800E120C 000DE16C 7C 08 03 A6 */ mtlr r0
/* 800E1210 000DE170 38 21 00 10 */ addi r1, r1, 0x10
/* 800E1214 000DE174 4E 80 00 20 */ blr
.global Fire__8CIceBeamFbfQ212CPlayerState12EChargeStageRC12CTransform4fR13CStateManager9TUniqueId
Fire__8CIceBeamFbfQ212CPlayerState12EChargeStageRC12CTransform4fR13CStateManager9TUniqueId:
/* 800E1218 000DE178 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 800E121C 000DE17C 7C 08 02 A6 */ mflr r0
/* 800E1220 000DE180 90 01 00 24 */ stw r0, 0x24(r1)
/* 800E1224 000DE184 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 800E1228 000DE188 7C BF 2B 78 */ mr r31, r5
/* 800E122C 000DE18C 93 C1 00 18 */ stw r30, 0x18(r1)
/* 800E1230 000DE190 7C 9E 23 78 */ mr r30, r4
/* 800E1234 000DE194 A0 08 00 00 */ lhz r0, 0(r8)
/* 800E1238 000DE198 39 01 00 08 */ addi r8, r1, 8
/* 800E123C 000DE19C B0 01 00 08 */ sth r0, 8(r1)
/* 800E1240 000DE1A0 48 0D A6 49 */ bl Fire__10CGunWeaponFbfQ212CPlayerState12EChargeStageRC12CTransform4fR13CStateManager9TUniqueIdff
/* 800E1244 000DE1A4 57 E0 08 3C */ slwi r0, r31, 1
/* 800E1248 000DE1A8 38 62 8F A0 */ addi r3, r2, lbl_805AACC0@sda21
/* 800E124C 000DE1AC 7C 83 02 2E */ lhzx r4, r3, r0
/* 800E1250 000DE1B0 7F C5 F3 78 */ mr r5, r30
/* 800E1254 000DE1B4 38 61 00 0C */ addi r3, r1, 0xc
/* 800E1258 000DE1B8 38 C0 00 00 */ li r6, 0
/* 800E125C 000DE1BC 38 E0 00 4A */ li r7, 0x4a
/* 800E1260 000DE1C0 48 1A 98 99 */ bl play_sfx__12NWeaponTypesFUsbbs
/* 800E1264 000DE1C4 80 01 00 24 */ lwz r0, 0x24(r1)
/* 800E1268 000DE1C8 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 800E126C 000DE1CC 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 800E1270 000DE1D0 7C 08 03 A6 */ mtlr r0
/* 800E1274 000DE1D4 38 21 00 20 */ addi r1, r1, 0x20
/* 800E1278 000DE1D8 4E 80 00 20 */ blr
.global Update__8CIceBeamFfR13CStateManager
Update__8CIceBeamFfR13CStateManager:
/* 800E127C 000DE1DC 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 800E1280 000DE1E0 7C 08 02 A6 */ mflr r0
/* 800E1284 000DE1E4 90 01 00 24 */ stw r0, 0x24(r1)
/* 800E1288 000DE1E8 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 800E128C 000DE1EC 7C 7F 1B 78 */ mr r31, r3
/* 800E1290 000DE1F0 93 C1 00 18 */ stw r30, 0x18(r1)
/* 800E1294 000DE1F4 93 A1 00 14 */ stw r29, 0x14(r1)
/* 800E1298 000DE1F8 48 0D B1 E1 */ bl Update__10CGunWeaponFfR13CStateManager
/* 800E129C 000DE1FC 88 1F 02 48 */ lbz r0, 0x248(r31)
/* 800E12A0 000DE200 54 00 CF FF */ rlwinm. r0, r0, 0x19, 0x1f, 0x1f
/* 800E12A4 000DE204 40 82 01 C0 */ bne lbl_800E1464
/* 800E12A8 000DE208 80 1F 02 24 */ lwz r0, 0x224(r31)
/* 800E12AC 000DE20C 28 00 00 00 */ cmplwi r0, 0
/* 800E12B0 000DE210 41 82 00 0C */ beq lbl_800E12BC
/* 800E12B4 000DE214 38 60 00 01 */ li r3, 1
/* 800E12B8 000DE218 48 00 00 3C */ b lbl_800E12F4
lbl_800E12BC:
/* 800E12BC 000DE21C 88 1F 02 20 */ lbz r0, 0x220(r31)
/* 800E12C0 000DE220 28 00 00 00 */ cmplwi r0, 0
/* 800E12C4 000DE224 41 82 00 2C */ beq lbl_800E12F0
/* 800E12C8 000DE228 80 7F 02 1C */ lwz r3, 0x21c(r31)
/* 800E12CC 000DE22C 80 03 00 10 */ lwz r0, 0x10(r3)
/* 800E12D0 000DE230 28 00 00 00 */ cmplwi r0, 0
/* 800E12D4 000DE234 41 82 00 1C */ beq lbl_800E12F0
/* 800E12D8 000DE238 38 7F 02 1C */ addi r3, r31, 0x21c
/* 800E12DC 000DE23C 48 25 FB 31 */ bl GetObj__6CTokenFv
/* 800E12E0 000DE240 80 03 00 04 */ lwz r0, 4(r3)
/* 800E12E4 000DE244 38 60 00 01 */ li r3, 1
/* 800E12E8 000DE248 90 1F 02 24 */ stw r0, 0x224(r31)
/* 800E12EC 000DE24C 48 00 00 08 */ b lbl_800E12F4
lbl_800E12F0:
/* 800E12F0 000DE250 38 60 00 00 */ li r3, 0
lbl_800E12F4:
/* 800E12F4 000DE254 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 800E12F8 000DE258 41 82 00 50 */ beq lbl_800E1348
/* 800E12FC 000DE25C 80 1F 02 30 */ lwz r0, 0x230(r31)
/* 800E1300 000DE260 28 00 00 00 */ cmplwi r0, 0
/* 800E1304 000DE264 41 82 00 0C */ beq lbl_800E1310
/* 800E1308 000DE268 38 60 00 01 */ li r3, 1
/* 800E130C 000DE26C 48 00 00 3C */ b lbl_800E1348
lbl_800E1310:
/* 800E1310 000DE270 88 1F 02 2C */ lbz r0, 0x22c(r31)
/* 800E1314 000DE274 28 00 00 00 */ cmplwi r0, 0
/* 800E1318 000DE278 41 82 00 2C */ beq lbl_800E1344
/* 800E131C 000DE27C 80 7F 02 28 */ lwz r3, 0x228(r31)
/* 800E1320 000DE280 80 03 00 10 */ lwz r0, 0x10(r3)
/* 800E1324 000DE284 28 00 00 00 */ cmplwi r0, 0
/* 800E1328 000DE288 41 82 00 1C */ beq lbl_800E1344
/* 800E132C 000DE28C 38 7F 02 28 */ addi r3, r31, 0x228
/* 800E1330 000DE290 48 25 FA DD */ bl GetObj__6CTokenFv
/* 800E1334 000DE294 80 03 00 04 */ lwz r0, 4(r3)
/* 800E1338 000DE298 38 60 00 01 */ li r3, 1
/* 800E133C 000DE29C 90 1F 02 30 */ stw r0, 0x230(r31)
/* 800E1340 000DE2A0 48 00 00 08 */ b lbl_800E1348
lbl_800E1344:
/* 800E1344 000DE2A4 38 60 00 00 */ li r3, 0
lbl_800E1348:
/* 800E1348 000DE2A8 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 800E134C 000DE2AC 41 82 00 50 */ beq lbl_800E139C
/* 800E1350 000DE2B0 80 1F 02 3C */ lwz r0, 0x23c(r31)
/* 800E1354 000DE2B4 28 00 00 00 */ cmplwi r0, 0
/* 800E1358 000DE2B8 41 82 00 0C */ beq lbl_800E1364
/* 800E135C 000DE2BC 38 60 00 01 */ li r3, 1
/* 800E1360 000DE2C0 48 00 00 3C */ b lbl_800E139C
lbl_800E1364:
/* 800E1364 000DE2C4 88 1F 02 38 */ lbz r0, 0x238(r31)
/* 800E1368 000DE2C8 28 00 00 00 */ cmplwi r0, 0
/* 800E136C 000DE2CC 41 82 00 2C */ beq lbl_800E1398
/* 800E1370 000DE2D0 80 7F 02 34 */ lwz r3, 0x234(r31)
/* 800E1374 000DE2D4 80 03 00 10 */ lwz r0, 0x10(r3)
/* 800E1378 000DE2D8 28 00 00 00 */ cmplwi r0, 0
/* 800E137C 000DE2DC 41 82 00 1C */ beq lbl_800E1398
/* 800E1380 000DE2E0 38 7F 02 34 */ addi r3, r31, 0x234
/* 800E1384 000DE2E4 48 25 FA 89 */ bl GetObj__6CTokenFv
/* 800E1388 000DE2E8 80 03 00 04 */ lwz r0, 4(r3)
/* 800E138C 000DE2EC 38 60 00 01 */ li r3, 1
/* 800E1390 000DE2F0 90 1F 02 3C */ stw r0, 0x23c(r31)
/* 800E1394 000DE2F4 48 00 00 08 */ b lbl_800E139C
lbl_800E1398:
/* 800E1398 000DE2F8 38 60 00 00 */ li r3, 0
lbl_800E139C:
/* 800E139C 000DE2FC 88 1F 02 48 */ lbz r0, 0x248(r31)
/* 800E13A0 000DE300 50 60 3E 30 */ rlwimi r0, r3, 7, 0x18, 0x18
/* 800E13A4 000DE304 98 1F 02 48 */ stb r0, 0x248(r31)
/* 800E13A8 000DE308 88 1F 02 48 */ lbz r0, 0x248(r31)
/* 800E13AC 000DE30C 54 00 CF FF */ rlwinm. r0, r0, 0x19, 0x1f, 0x1f
/* 800E13B0 000DE310 41 82 00 B4 */ beq lbl_800E1464
/* 800E13B4 000DE314 3C 60 80 3D */ lis r3, lbl_803CE598@ha
/* 800E13B8 000DE318 3B A0 00 00 */ li r29, 0
/* 800E13BC 000DE31C 38 83 E5 98 */ addi r4, r3, lbl_803CE598@l
/* 800E13C0 000DE320 38 A0 00 00 */ li r5, 0
/* 800E13C4 000DE324 38 60 03 40 */ li r3, 0x340
/* 800E13C8 000DE328 48 23 44 A5 */ bl __nw__FUlPCcPCc
/* 800E13CC 000DE32C 7C 7E 1B 79 */ or. r30, r3, r3
/* 800E13D0 000DE330 41 82 00 2C */ beq lbl_800E13FC
/* 800E13D4 000DE334 38 61 00 08 */ addi r3, r1, 8
/* 800E13D8 000DE338 38 9F 02 1C */ addi r4, r31, 0x21c
/* 800E13DC 000DE33C 48 25 FA CD */ bl __ct__6CTokenFRC6CToken
/* 800E13E0 000DE340 7F C3 F3 78 */ mr r3, r30
/* 800E13E4 000DE344 38 81 00 08 */ addi r4, r1, 8
/* 800E13E8 000DE348 3B A0 00 01 */ li r29, 1
/* 800E13EC 000DE34C 38 A0 00 00 */ li r5, 0
/* 800E13F0 000DE350 38 C0 00 01 */ li r6, 1
/* 800E13F4 000DE354 48 23 DF ED */ bl "__ct__11CElementGenF25TToken<15CGenDescription>Q211CElementGen21EModelOrientationTypeQ211CElementGen20EOptionalSystemFlags"
/* 800E13F8 000DE358 7C 7E 1B 78 */ mr r30, r3
lbl_800E13FC:
/* 800E13FC 000DE35C 80 7F 02 40 */ lwz r3, 0x240(r31)
/* 800E1400 000DE360 28 03 00 00 */ cmplwi r3, 0
/* 800E1404 000DE364 41 82 00 18 */ beq lbl_800E141C
/* 800E1408 000DE368 81 83 00 00 */ lwz r12, 0(r3)
/* 800E140C 000DE36C 38 80 00 01 */ li r4, 1
/* 800E1410 000DE370 81 8C 00 08 */ lwz r12, 8(r12)
/* 800E1414 000DE374 7D 89 03 A6 */ mtctr r12
/* 800E1418 000DE378 4E 80 04 21 */ bctrl
lbl_800E141C:
/* 800E141C 000DE37C 7F A0 07 75 */ extsb. r0, r29
/* 800E1420 000DE380 93 DF 02 40 */ stw r30, 0x240(r31)
/* 800E1424 000DE384 41 82 00 10 */ beq lbl_800E1434
/* 800E1428 000DE388 38 61 00 08 */ addi r3, r1, 8
/* 800E142C 000DE38C 38 80 00 00 */ li r4, 0
/* 800E1430 000DE390 48 25 FA 11 */ bl __dt__6CTokenFv
lbl_800E1434:
/* 800E1434 000DE394 80 7F 02 40 */ lwz r3, 0x240(r31)
/* 800E1438 000DE398 38 9F 00 04 */ addi r4, r31, 4
/* 800E143C 000DE39C 81 83 00 00 */ lwz r12, 0(r3)
/* 800E1440 000DE3A0 81 8C 00 24 */ lwz r12, 0x24(r12)
/* 800E1444 000DE3A4 7D 89 03 A6 */ mtctr r12
/* 800E1448 000DE3A8 4E 80 04 21 */ bctrl
/* 800E144C 000DE3AC 80 7F 02 40 */ lwz r3, 0x240(r31)
/* 800E1450 000DE3B0 38 80 00 00 */ li r4, 0
/* 800E1454 000DE3B4 81 83 00 00 */ lwz r12, 0(r3)
/* 800E1458 000DE3B8 81 8C 00 2C */ lwz r12, 0x2c(r12)
/* 800E145C 000DE3BC 7D 89 03 A6 */ mtctr r12
/* 800E1460 000DE3C0 4E 80 04 21 */ bctrl
lbl_800E1464:
/* 800E1464 000DE3C4 80 01 00 24 */ lwz r0, 0x24(r1)
/* 800E1468 000DE3C8 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 800E146C 000DE3CC 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 800E1470 000DE3D0 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 800E1474 000DE3D4 7C 08 03 A6 */ mtlr r0
/* 800E1478 000DE3D8 38 21 00 20 */ addi r1, r1, 0x20
/* 800E147C 000DE3DC 4E 80 00 20 */ blr
.global UpdateGunFx__8CIceBeamFbfRC13CStateManagerRC12CTransform4f
UpdateGunFx__8CIceBeamFbfRC13CStateManagerRC12CTransform4f:
/* 800E1480 000DE3E0 94 21 FE E0 */ stwu r1, -0x120(r1)
/* 800E1484 000DE3E4 7C 08 02 A6 */ mflr r0
/* 800E1488 000DE3E8 90 01 01 24 */ stw r0, 0x124(r1)
/* 800E148C 000DE3EC DB E1 01 10 */ stfd f31, 0x110(r1)
/* 800E1490 000DE3F0 F3 E1 01 18 */ psq_st f31, 280(r1), 0, qr0
/* 800E1494 000DE3F4 BF 61 00 FC */ stmw r27, 0xfc(r1)
/* 800E1498 000DE3F8 7C 7B 1B 78 */ mr r27, r3
/* 800E149C 000DE3FC FF E0 08 90 */ fmr f31, f1
/* 800E14A0 000DE400 80 03 02 40 */ lwz r0, 0x240(r3)
/* 800E14A4 000DE404 7C 9C 23 78 */ mr r28, r4
/* 800E14A8 000DE408 7C BD 2B 78 */ mr r29, r5
/* 800E14AC 000DE40C 7C DE 33 78 */ mr r30, r6
/* 800E14B0 000DE410 28 00 00 00 */ cmplwi r0, 0
/* 800E14B4 000DE414 41 82 00 A4 */ beq lbl_800E1558
/* 800E14B8 000DE418 80 82 A9 C8 */ lwz r4, lbl_805AC6E8@sda21(r2)
/* 800E14BC 000DE41C 38 61 00 20 */ addi r3, r1, 0x20
/* 800E14C0 000DE420 4B F2 37 F9 */ bl string_l__4rstlFPCc
/* 800E14C4 000DE424 38 61 00 90 */ addi r3, r1, 0x90
/* 800E14C8 000DE428 38 9B 00 10 */ addi r4, r27, 0x10
/* 800E14CC 000DE42C 38 A1 00 20 */ addi r5, r1, 0x20
/* 800E14D0 000DE430 48 03 44 D1 */ bl "GetScaledLocatorTransform__10CModelDataCFRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>"
/* 800E14D4 000DE434 38 61 00 C0 */ addi r3, r1, 0xc0
/* 800E14D8 000DE438 38 81 00 90 */ addi r4, r1, 0x90
/* 800E14DC 000DE43C 48 23 16 99 */ bl __ct__12CTransform4fFRC12CTransform4f
/* 800E14E0 000DE440 38 61 00 20 */ addi r3, r1, 0x20
/* 800E14E4 000DE444 48 25 C5 FD */ bl "internal_dereference__Q24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>Fv"
/* 800E14E8 000DE448 C0 41 00 CC */ lfs f2, 0xcc(r1)
/* 800E14EC 000DE44C 38 81 00 14 */ addi r4, r1, 0x14
/* 800E14F0 000DE450 C0 21 00 DC */ lfs f1, 0xdc(r1)
/* 800E14F4 000DE454 C0 01 00 EC */ lfs f0, 0xec(r1)
/* 800E14F8 000DE458 D0 41 00 14 */ stfs f2, 0x14(r1)
/* 800E14FC 000DE45C D0 21 00 18 */ stfs f1, 0x18(r1)
/* 800E1500 000DE460 D0 01 00 1C */ stfs f0, 0x1c(r1)
/* 800E1504 000DE464 80 7B 02 40 */ lwz r3, 0x240(r27)
/* 800E1508 000DE468 81 83 00 00 */ lwz r12, 0(r3)
/* 800E150C 000DE46C 81 8C 00 18 */ lwz r12, 0x18(r12)
/* 800E1510 000DE470 7D 89 03 A6 */ mtctr r12
/* 800E1514 000DE474 4E 80 04 21 */ bctrl
/* 800E1518 000DE478 83 FB 02 40 */ lwz r31, 0x240(r27)
/* 800E151C 000DE47C 38 61 00 60 */ addi r3, r1, 0x60
/* 800E1520 000DE480 38 81 00 C0 */ addi r4, r1, 0xc0
/* 800E1524 000DE484 48 23 17 1D */ bl GetRotation__12CTransform4fCFv
/* 800E1528 000DE488 7F E3 FB 78 */ mr r3, r31
/* 800E152C 000DE48C 38 81 00 60 */ addi r4, r1, 0x60
/* 800E1530 000DE490 81 9F 00 00 */ lwz r12, 0(r31)
/* 800E1534 000DE494 81 8C 00 14 */ lwz r12, 0x14(r12)
/* 800E1538 000DE498 7D 89 03 A6 */ mtctr r12
/* 800E153C 000DE49C 4E 80 04 21 */ bctrl
/* 800E1540 000DE4A0 80 7B 02 40 */ lwz r3, 0x240(r27)
/* 800E1544 000DE4A4 FC 20 F8 90 */ fmr f1, f31
/* 800E1548 000DE4A8 81 83 00 00 */ lwz r12, 0(r3)
/* 800E154C 000DE4AC 81 8C 00 0C */ lwz r12, 0xc(r12)
/* 800E1550 000DE4B0 7D 89 03 A6 */ mtctr r12
/* 800E1554 000DE4B4 4E 80 04 21 */ bctrl
lbl_800E1558:
/* 800E1558 000DE4B8 80 7B 02 44 */ lwz r3, 0x244(r27)
/* 800E155C 000DE4BC 28 03 00 00 */ cmplwi r3, 0
/* 800E1560 000DE4C0 41 82 00 F0 */ beq lbl_800E1650
/* 800E1564 000DE4C4 88 1B 02 48 */ lbz r0, 0x248(r27)
/* 800E1568 000DE4C8 54 00 D7 FF */ rlwinm. r0, r0, 0x1a, 0x1f, 0x1f
/* 800E156C 000DE4CC 41 82 00 4C */ beq lbl_800E15B8
/* 800E1570 000DE4D0 81 83 00 00 */ lwz r12, 0(r3)
/* 800E1574 000DE4D4 81 8C 00 58 */ lwz r12, 0x58(r12)
/* 800E1578 000DE4D8 7D 89 03 A6 */ mtctr r12
/* 800E157C 000DE4DC 4E 80 04 21 */ bctrl
/* 800E1580 000DE4E0 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 800E1584 000DE4E4 41 82 00 34 */ beq lbl_800E15B8
/* 800E1588 000DE4E8 38 00 00 00 */ li r0, 0
/* 800E158C 000DE4EC 90 1B 01 CC */ stw r0, 0x1cc(r27)
/* 800E1590 000DE4F0 80 7B 02 44 */ lwz r3, 0x244(r27)
/* 800E1594 000DE4F4 28 03 00 00 */ cmplwi r3, 0
/* 800E1598 000DE4F8 41 82 00 18 */ beq lbl_800E15B0
/* 800E159C 000DE4FC 81 83 00 00 */ lwz r12, 0(r3)
/* 800E15A0 000DE500 38 80 00 01 */ li r4, 1
/* 800E15A4 000DE504 81 8C 00 08 */ lwz r12, 8(r12)
/* 800E15A8 000DE508 7D 89 03 A6 */ mtctr r12
/* 800E15AC 000DE50C 4E 80 04 21 */ bctrl
lbl_800E15B0:
/* 800E15B0 000DE510 38 00 00 00 */ li r0, 0
/* 800E15B4 000DE514 90 1B 02 44 */ stw r0, 0x244(r27)
lbl_800E15B8:
/* 800E15B8 000DE518 80 1B 01 CC */ lwz r0, 0x1cc(r27)
/* 800E15BC 000DE51C 2C 00 00 00 */ cmpwi r0, 0
/* 800E15C0 000DE520 41 82 00 90 */ beq lbl_800E1650
/* 800E15C4 000DE524 88 1B 02 48 */ lbz r0, 0x248(r27)
/* 800E15C8 000DE528 54 00 D7 FF */ rlwinm. r0, r0, 0x1a, 0x1f, 0x1f
/* 800E15CC 000DE52C 41 82 00 60 */ beq lbl_800E162C
/* 800E15D0 000DE530 C0 5E 00 2C */ lfs f2, 0x2c(r30)
/* 800E15D4 000DE534 38 81 00 08 */ addi r4, r1, 8
/* 800E15D8 000DE538 C0 3E 00 1C */ lfs f1, 0x1c(r30)
/* 800E15DC 000DE53C C0 1E 00 0C */ lfs f0, 0xc(r30)
/* 800E15E0 000DE540 D0 21 00 0C */ stfs f1, 0xc(r1)
/* 800E15E4 000DE544 D0 01 00 08 */ stfs f0, 8(r1)
/* 800E15E8 000DE548 D0 41 00 10 */ stfs f2, 0x10(r1)
/* 800E15EC 000DE54C 80 7B 02 44 */ lwz r3, 0x244(r27)
/* 800E15F0 000DE550 81 83 00 00 */ lwz r12, 0(r3)
/* 800E15F4 000DE554 81 8C 00 18 */ lwz r12, 0x18(r12)
/* 800E15F8 000DE558 7D 89 03 A6 */ mtctr r12
/* 800E15FC 000DE55C 4E 80 04 21 */ bctrl
/* 800E1600 000DE560 83 FB 02 44 */ lwz r31, 0x244(r27)
/* 800E1604 000DE564 7F C4 F3 78 */ mr r4, r30
/* 800E1608 000DE568 38 61 00 30 */ addi r3, r1, 0x30
/* 800E160C 000DE56C 48 23 16 35 */ bl GetRotation__12CTransform4fCFv
/* 800E1610 000DE570 7F E3 FB 78 */ mr r3, r31
/* 800E1614 000DE574 38 81 00 30 */ addi r4, r1, 0x30
/* 800E1618 000DE578 81 9F 00 00 */ lwz r12, 0(r31)
/* 800E161C 000DE57C 81 8C 00 14 */ lwz r12, 0x14(r12)
/* 800E1620 000DE580 7D 89 03 A6 */ mtctr r12
/* 800E1624 000DE584 4E 80 04 21 */ bctrl
/* 800E1628 000DE588 48 00 00 10 */ b lbl_800E1638
lbl_800E162C:
/* 800E162C 000DE58C 80 7B 02 44 */ lwz r3, 0x244(r27)
/* 800E1630 000DE590 7F C4 F3 78 */ mr r4, r30
/* 800E1634 000DE594 48 23 D5 51 */ bl SetGlobalOrientAndTrans__11CElementGenFRC12CTransform4f
lbl_800E1638:
/* 800E1638 000DE598 80 7B 02 44 */ lwz r3, 0x244(r27)
/* 800E163C 000DE59C FC 20 F8 90 */ fmr f1, f31
/* 800E1640 000DE5A0 81 83 00 00 */ lwz r12, 0(r3)
/* 800E1644 000DE5A4 81 8C 00 0C */ lwz r12, 0xc(r12)
/* 800E1648 000DE5A8 7D 89 03 A6 */ mtctr r12
/* 800E164C 000DE5AC 4E 80 04 21 */ bctrl
lbl_800E1650:
/* 800E1650 000DE5B0 FC 20 F8 90 */ fmr f1, f31
/* 800E1654 000DE5B4 7F 63 DB 78 */ mr r3, r27
/* 800E1658 000DE5B8 7F 84 E3 78 */ mr r4, r28
/* 800E165C 000DE5BC 7F A5 EB 78 */ mr r5, r29
/* 800E1660 000DE5C0 7F C6 F3 78 */ mr r6, r30
/* 800E1664 000DE5C4 48 0D AC 79 */ bl UpdateGunFx__10CGunWeaponFbfRC13CStateManagerRC12CTransform4f
/* 800E1668 000DE5C8 E3 E1 01 18 */ psq_l f31, 280(r1), 0, qr0
/* 800E166C 000DE5CC CB E1 01 10 */ lfd f31, 0x110(r1)
/* 800E1670 000DE5D0 BB 61 00 FC */ lmw r27, 0xfc(r1)
/* 800E1674 000DE5D4 80 01 01 24 */ lwz r0, 0x124(r1)
/* 800E1678 000DE5D8 7C 08 03 A6 */ mtlr r0
/* 800E167C 000DE5DC 38 21 01 20 */ addi r1, r1, 0x120
/* 800E1680 000DE5E0 4E 80 00 20 */ blr
.global PostRenderGunFx__8CIceBeamFRC13CStateManagerRC12CTransform4f
PostRenderGunFx__8CIceBeamFRC13CStateManagerRC12CTransform4f:
/* 800E1684 000DE5E4 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 800E1688 000DE5E8 7C 08 02 A6 */ mflr r0
/* 800E168C 000DE5EC 90 01 00 24 */ stw r0, 0x24(r1)
/* 800E1690 000DE5F0 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 800E1694 000DE5F4 93 C1 00 18 */ stw r30, 0x18(r1)
/* 800E1698 000DE5F8 7C BE 2B 78 */ mr r30, r5
/* 800E169C 000DE5FC 93 A1 00 14 */ stw r29, 0x14(r1)
/* 800E16A0 000DE600 7C 9D 23 78 */ mr r29, r4
/* 800E16A4 000DE604 93 81 00 10 */ stw r28, 0x10(r1)
/* 800E16A8 000DE608 7C 7C 1B 78 */ mr r28, r3
/* 800E16AC 000DE60C 80 04 0F 34 */ lwz r0, 0xf34(r4)
/* 800E16B0 000DE610 7C 03 00 34 */ cntlzw r3, r0
/* 800E16B4 000DE614 54 60 DE 3F */ rlwinm. r0, r3, 0x1b, 0x18, 0x1f
/* 800E16B8 000DE618 54 7F D9 7E */ srwi r31, r3, 5
/* 800E16BC 000DE61C 41 82 00 0C */ beq lbl_800E16C8
/* 800E16C0 000DE620 38 00 00 01 */ li r0, 1
/* 800E16C4 000DE624 98 0D A8 B9 */ stb r0, sSubtractBlend__11CElementGen@sda21(r13)
lbl_800E16C8:
/* 800E16C8 000DE628 80 7C 02 40 */ lwz r3, 0x240(r28)
/* 800E16CC 000DE62C 28 03 00 00 */ cmplwi r3, 0
/* 800E16D0 000DE630 41 82 00 14 */ beq lbl_800E16E4
/* 800E16D4 000DE634 81 83 00 00 */ lwz r12, 0(r3)
/* 800E16D8 000DE638 81 8C 00 10 */ lwz r12, 0x10(r12)
/* 800E16DC 000DE63C 7D 89 03 A6 */ mtctr r12
/* 800E16E0 000DE640 4E 80 04 21 */ bctrl
lbl_800E16E4:
/* 800E16E4 000DE644 80 1C 01 CC */ lwz r0, 0x1cc(r28)
/* 800E16E8 000DE648 2C 00 00 00 */ cmpwi r0, 0
/* 800E16EC 000DE64C 41 82 00 20 */ beq lbl_800E170C
/* 800E16F0 000DE650 80 7C 02 44 */ lwz r3, 0x244(r28)
/* 800E16F4 000DE654 28 03 00 00 */ cmplwi r3, 0
/* 800E16F8 000DE658 41 82 00 14 */ beq lbl_800E170C
/* 800E16FC 000DE65C 81 83 00 00 */ lwz r12, 0(r3)
/* 800E1700 000DE660 81 8C 00 10 */ lwz r12, 0x10(r12)
/* 800E1704 000DE664 7D 89 03 A6 */ mtctr r12
/* 800E1708 000DE668 4E 80 04 21 */ bctrl
lbl_800E170C:
/* 800E170C 000DE66C 7F 83 E3 78 */ mr r3, r28
/* 800E1710 000DE670 7F A4 EB 78 */ mr r4, r29
/* 800E1714 000DE674 7F C5 F3 78 */ mr r5, r30
/* 800E1718 000DE678 48 0D AD 0D */ bl PostRenderGunFx__10CGunWeaponFRC13CStateManagerRC12CTransform4f
/* 800E171C 000DE67C 57 E0 06 3F */ clrlwi. r0, r31, 0x18
/* 800E1720 000DE680 41 82 00 0C */ beq lbl_800E172C
/* 800E1724 000DE684 38 00 00 00 */ li r0, 0
/* 800E1728 000DE688 98 0D A8 B9 */ stb r0, sSubtractBlend__11CElementGen@sda21(r13)
lbl_800E172C:
/* 800E172C 000DE68C 80 01 00 24 */ lwz r0, 0x24(r1)
/* 800E1730 000DE690 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 800E1734 000DE694 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 800E1738 000DE698 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 800E173C 000DE69C 83 81 00 10 */ lwz r28, 0x10(r1)
/* 800E1740 000DE6A0 7C 08 03 A6 */ mtlr r0
/* 800E1744 000DE6A4 38 21 00 20 */ addi r1, r1, 0x20
/* 800E1748 000DE6A8 4E 80 00 20 */ blr
.global PreRenderGunFx__8CIceBeamFRC13CStateManagerRC12CTransform4f
PreRenderGunFx__8CIceBeamFRC13CStateManagerRC12CTransform4f:
/* 800E174C 000DE6AC 4E 80 00 20 */ blr
.global ReInitVariables__8CIceBeamFv
ReInitVariables__8CIceBeamFv:
/* 800E1750 000DE6B0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 800E1754 000DE6B4 7C 08 02 A6 */ mflr r0
/* 800E1758 000DE6B8 90 01 00 14 */ stw r0, 0x14(r1)
/* 800E175C 000DE6BC 93 E1 00 0C */ stw r31, 0xc(r1)
/* 800E1760 000DE6C0 7C 7F 1B 78 */ mr r31, r3
/* 800E1764 000DE6C4 80 63 02 40 */ lwz r3, 0x240(r3)
/* 800E1768 000DE6C8 28 03 00 00 */ cmplwi r3, 0
/* 800E176C 000DE6CC 41 82 00 18 */ beq lbl_800E1784
/* 800E1770 000DE6D0 81 83 00 00 */ lwz r12, 0(r3)
/* 800E1774 000DE6D4 38 80 00 01 */ li r4, 1
/* 800E1778 000DE6D8 81 8C 00 08 */ lwz r12, 8(r12)
/* 800E177C 000DE6DC 7D 89 03 A6 */ mtctr r12
/* 800E1780 000DE6E0 4E 80 04 21 */ bctrl
lbl_800E1784:
/* 800E1784 000DE6E4 38 00 00 00 */ li r0, 0
/* 800E1788 000DE6E8 90 1F 02 40 */ stw r0, 0x240(r31)
/* 800E178C 000DE6EC 80 7F 02 44 */ lwz r3, 0x244(r31)
/* 800E1790 000DE6F0 28 03 00 00 */ cmplwi r3, 0
/* 800E1794 000DE6F4 41 82 00 18 */ beq lbl_800E17AC
/* 800E1798 000DE6F8 81 83 00 00 */ lwz r12, 0(r3)
/* 800E179C 000DE6FC 38 80 00 01 */ li r4, 1
/* 800E17A0 000DE700 81 8C 00 08 */ lwz r12, 8(r12)
/* 800E17A4 000DE704 7D 89 03 A6 */ mtctr r12
/* 800E17A8 000DE708 4E 80 04 21 */ bctrl
lbl_800E17AC:
/* 800E17AC 000DE70C 38 60 00 00 */ li r3, 0
/* 800E17B0 000DE710 90 7F 02 44 */ stw r3, 0x244(r31)
/* 800E17B4 000DE714 88 1F 02 48 */ lbz r0, 0x248(r31)
/* 800E17B8 000DE718 50 60 3E 30 */ rlwimi r0, r3, 7, 0x18, 0x18
/* 800E17BC 000DE71C 98 1F 02 48 */ stb r0, 0x248(r31)
/* 800E17C0 000DE720 88 1F 02 48 */ lbz r0, 0x248(r31)
/* 800E17C4 000DE724 50 60 36 72 */ rlwimi r0, r3, 6, 0x19, 0x19
/* 800E17C8 000DE728 98 1F 02 48 */ stb r0, 0x248(r31)
/* 800E17CC 000DE72C 90 7F 01 CC */ stw r3, 0x1cc(r31)
/* 800E17D0 000DE730 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 800E17D4 000DE734 80 01 00 14 */ lwz r0, 0x14(r1)
/* 800E17D8 000DE738 7C 08 03 A6 */ mtlr r0
/* 800E17DC 000DE73C 38 21 00 10 */ addi r1, r1, 0x10
/* 800E17E0 000DE740 4E 80 00 20 */ blr
.global __dt__8CIceBeamFv
__dt__8CIceBeamFv:
/* 800E17E4 000DE744 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 800E17E8 000DE748 7C 08 02 A6 */ mflr r0
/* 800E17EC 000DE74C 90 01 00 14 */ stw r0, 0x14(r1)
/* 800E17F0 000DE750 93 E1 00 0C */ stw r31, 0xc(r1)
/* 800E17F4 000DE754 7C 9F 23 78 */ mr r31, r4
/* 800E17F8 000DE758 93 C1 00 08 */ stw r30, 8(r1)
/* 800E17FC 000DE75C 7C 7E 1B 79 */ or. r30, r3, r3
/* 800E1800 000DE760 41 82 00 D0 */ beq lbl_800E18D0
/* 800E1804 000DE764 3C 60 80 3E */ lis r3, lbl_803DF7E8@ha
/* 800E1808 000DE768 34 1E 02 44 */ addic. r0, r30, 0x244
/* 800E180C 000DE76C 38 03 F7 E8 */ addi r0, r3, lbl_803DF7E8@l
/* 800E1810 000DE770 90 1E 00 00 */ stw r0, 0(r30)
/* 800E1814 000DE774 41 82 00 24 */ beq lbl_800E1838
/* 800E1818 000DE778 80 7E 02 44 */ lwz r3, 0x244(r30)
/* 800E181C 000DE77C 28 03 00 00 */ cmplwi r3, 0
/* 800E1820 000DE780 41 82 00 18 */ beq lbl_800E1838
/* 800E1824 000DE784 81 83 00 00 */ lwz r12, 0(r3)
/* 800E1828 000DE788 38 80 00 01 */ li r4, 1
/* 800E182C 000DE78C 81 8C 00 08 */ lwz r12, 8(r12)
/* 800E1830 000DE790 7D 89 03 A6 */ mtctr r12
/* 800E1834 000DE794 4E 80 04 21 */ bctrl
lbl_800E1838:
/* 800E1838 000DE798 34 1E 02 40 */ addic. r0, r30, 0x240
/* 800E183C 000DE79C 41 82 00 24 */ beq lbl_800E1860
/* 800E1840 000DE7A0 80 7E 02 40 */ lwz r3, 0x240(r30)
/* 800E1844 000DE7A4 28 03 00 00 */ cmplwi r3, 0
/* 800E1848 000DE7A8 41 82 00 18 */ beq lbl_800E1860
/* 800E184C 000DE7AC 81 83 00 00 */ lwz r12, 0(r3)
/* 800E1850 000DE7B0 38 80 00 01 */ li r4, 1
/* 800E1854 000DE7B4 81 8C 00 08 */ lwz r12, 8(r12)
/* 800E1858 000DE7B8 7D 89 03 A6 */ mtctr r12
/* 800E185C 000DE7BC 4E 80 04 21 */ bctrl
lbl_800E1860:
/* 800E1860 000DE7C0 34 1E 02 34 */ addic. r0, r30, 0x234
/* 800E1864 000DE7C4 41 82 00 18 */ beq lbl_800E187C
/* 800E1868 000DE7C8 34 1E 02 34 */ addic. r0, r30, 0x234
/* 800E186C 000DE7CC 41 82 00 10 */ beq lbl_800E187C
/* 800E1870 000DE7D0 38 7E 02 34 */ addi r3, r30, 0x234
/* 800E1874 000DE7D4 38 80 00 00 */ li r4, 0
/* 800E1878 000DE7D8 48 25 F5 C9 */ bl __dt__6CTokenFv
lbl_800E187C:
/* 800E187C 000DE7DC 34 1E 02 28 */ addic. r0, r30, 0x228
/* 800E1880 000DE7E0 41 82 00 18 */ beq lbl_800E1898
/* 800E1884 000DE7E4 34 1E 02 28 */ addic. r0, r30, 0x228
/* 800E1888 000DE7E8 41 82 00 10 */ beq lbl_800E1898
/* 800E188C 000DE7EC 38 7E 02 28 */ addi r3, r30, 0x228
/* 800E1890 000DE7F0 38 80 00 00 */ li r4, 0
/* 800E1894 000DE7F4 48 25 F5 AD */ bl __dt__6CTokenFv
lbl_800E1898:
/* 800E1898 000DE7F8 34 1E 02 1C */ addic. r0, r30, 0x21c
/* 800E189C 000DE7FC 41 82 00 18 */ beq lbl_800E18B4
/* 800E18A0 000DE800 34 1E 02 1C */ addic. r0, r30, 0x21c
/* 800E18A4 000DE804 41 82 00 10 */ beq lbl_800E18B4
/* 800E18A8 000DE808 38 7E 02 1C */ addi r3, r30, 0x21c
/* 800E18AC 000DE80C 38 80 00 00 */ li r4, 0
/* 800E18B0 000DE810 48 25 F5 91 */ bl __dt__6CTokenFv
lbl_800E18B4:
/* 800E18B4 000DE814 7F C3 F3 78 */ mr r3, r30
/* 800E18B8 000DE818 38 80 00 00 */ li r4, 0
/* 800E18BC 000DE81C 48 0D B4 05 */ bl __dt__10CGunWeaponFv
/* 800E18C0 000DE820 7F E0 07 35 */ extsh. r0, r31
/* 800E18C4 000DE824 40 81 00 0C */ ble lbl_800E18D0
/* 800E18C8 000DE828 7F C3 F3 78 */ mr r3, r30
/* 800E18CC 000DE82C 48 23 40 65 */ bl Free__7CMemoryFPCv
lbl_800E18D0:
/* 800E18D0 000DE830 80 01 00 14 */ lwz r0, 0x14(r1)
/* 800E18D4 000DE834 7F C3 F3 78 */ mr r3, r30
/* 800E18D8 000DE838 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 800E18DC 000DE83C 83 C1 00 08 */ lwz r30, 8(r1)
/* 800E18E0 000DE840 7C 08 03 A6 */ mtlr r0
/* 800E18E4 000DE844 38 21 00 10 */ addi r1, r1, 0x10
/* 800E18E8 000DE848 4E 80 00 20 */ blr
.global __ct__8CIceBeamFUi11EWeaponType9TUniqueId14EMaterialTypesRC9CVector3f
__ct__8CIceBeamFUi11EWeaponType9TUniqueId14EMaterialTypesRC9CVector3f:
/* 800E18EC 000DE84C 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 800E18F0 000DE850 7C 08 02 A6 */ mflr r0
/* 800E18F4 000DE854 90 01 00 34 */ stw r0, 0x34(r1)
/* 800E18F8 000DE858 93 E1 00 2C */ stw r31, 0x2c(r1)
/* 800E18FC 000DE85C 7C 7F 1B 78 */ mr r31, r3
/* 800E1900 000DE860 93 C1 00 28 */ stw r30, 0x28(r1)
/* 800E1904 000DE864 A0 06 00 00 */ lhz r0, 0(r6)
/* 800E1908 000DE868 38 C1 00 08 */ addi r6, r1, 8
/* 800E190C 000DE86C B0 01 00 08 */ sth r0, 8(r1)
/* 800E1910 000DE870 48 0D B8 A1 */ bl __ct__10CGunWeaponFUi11EWeaponType9TUniqueId14EMaterialTypesRC9CVector3f
/* 800E1914 000DE874 3C 60 80 3E */ lis r3, lbl_803DF7E8@ha
/* 800E1918 000DE878 3C 80 80 3D */ lis r4, lbl_803CE598@ha
/* 800E191C 000DE87C 38 03 F7 E8 */ addi r0, r3, lbl_803DF7E8@l
/* 800E1920 000DE880 38 61 00 1C */ addi r3, r1, 0x1c
/* 800E1924 000DE884 90 1F 00 00 */ stw r0, 0(r31)
/* 800E1928 000DE888 38 84 E5 98 */ addi r4, r4, lbl_803CE598@l
/* 800E192C 000DE88C 38 A4 00 07 */ addi r5, r4, 7
/* 800E1930 000DE890 80 8D A0 64 */ lwz r4, gpSimplePool@sda21(r13)
/* 800E1934 000DE894 81 84 00 00 */ lwz r12, 0(r4)
/* 800E1938 000DE898 81 8C 00 10 */ lwz r12, 0x10(r12)
/* 800E193C 000DE89C 7D 89 03 A6 */ mtctr r12
/* 800E1940 000DE8A0 4E 80 04 21 */ bctrl
/* 800E1944 000DE8A4 3B DF 02 1C */ addi r30, r31, 0x21c
/* 800E1948 000DE8A8 38 81 00 1C */ addi r4, r1, 0x1c
/* 800E194C 000DE8AC 7F C3 F3 78 */ mr r3, r30
/* 800E1950 000DE8B0 48 25 F5 59 */ bl __ct__6CTokenFRC6CToken
/* 800E1954 000DE8B4 38 00 00 00 */ li r0, 0
/* 800E1958 000DE8B8 38 61 00 1C */ addi r3, r1, 0x1c
/* 800E195C 000DE8BC 90 1E 00 08 */ stw r0, 8(r30)
/* 800E1960 000DE8C0 38 80 FF FF */ li r4, -1
/* 800E1964 000DE8C4 48 25 F4 DD */ bl __dt__6CTokenFv
/* 800E1968 000DE8C8 80 8D A0 64 */ lwz r4, gpSimplePool@sda21(r13)
/* 800E196C 000DE8CC 3C 60 80 3D */ lis r3, lbl_803CE598@ha
/* 800E1970 000DE8D0 38 A3 E5 98 */ addi r5, r3, lbl_803CE598@l
/* 800E1974 000DE8D4 38 61 00 14 */ addi r3, r1, 0x14
/* 800E1978 000DE8D8 81 84 00 00 */ lwz r12, 0(r4)
/* 800E197C 000DE8DC 38 A5 00 10 */ addi r5, r5, 0x10
/* 800E1980 000DE8E0 81 8C 00 10 */ lwz r12, 0x10(r12)
/* 800E1984 000DE8E4 7D 89 03 A6 */ mtctr r12
/* 800E1988 000DE8E8 4E 80 04 21 */ bctrl
/* 800E198C 000DE8EC 3B DF 02 28 */ addi r30, r31, 0x228
/* 800E1990 000DE8F0 38 81 00 14 */ addi r4, r1, 0x14
/* 800E1994 000DE8F4 7F C3 F3 78 */ mr r3, r30
/* 800E1998 000DE8F8 48 25 F5 11 */ bl __ct__6CTokenFRC6CToken
/* 800E199C 000DE8FC 38 00 00 00 */ li r0, 0
/* 800E19A0 000DE900 38 61 00 14 */ addi r3, r1, 0x14
/* 800E19A4 000DE904 90 1E 00 08 */ stw r0, 8(r30)
/* 800E19A8 000DE908 38 80 FF FF */ li r4, -1
/* 800E19AC 000DE90C 48 25 F4 95 */ bl __dt__6CTokenFv
/* 800E19B0 000DE910 80 8D A0 64 */ lwz r4, gpSimplePool@sda21(r13)
/* 800E19B4 000DE914 3C 60 80 3D */ lis r3, lbl_803CE598@ha
/* 800E19B8 000DE918 38 A3 E5 98 */ addi r5, r3, lbl_803CE598@l
/* 800E19BC 000DE91C 38 61 00 0C */ addi r3, r1, 0xc
/* 800E19C0 000DE920 81 84 00 00 */ lwz r12, 0(r4)
/* 800E19C4 000DE924 38 A5 00 19 */ addi r5, r5, 0x19
/* 800E19C8 000DE928 81 8C 00 10 */ lwz r12, 0x10(r12)
/* 800E19CC 000DE92C 7D 89 03 A6 */ mtctr r12
/* 800E19D0 000DE930 4E 80 04 21 */ bctrl
/* 800E19D4 000DE934 3B DF 02 34 */ addi r30, r31, 0x234
/* 800E19D8 000DE938 38 81 00 0C */ addi r4, r1, 0xc
/* 800E19DC 000DE93C 7F C3 F3 78 */ mr r3, r30
/* 800E19E0 000DE940 48 25 F4 C9 */ bl __ct__6CTokenFRC6CToken
/* 800E19E4 000DE944 38 00 00 00 */ li r0, 0
/* 800E19E8 000DE948 38 61 00 0C */ addi r3, r1, 0xc
/* 800E19EC 000DE94C 90 1E 00 08 */ stw r0, 8(r30)
/* 800E19F0 000DE950 38 80 FF FF */ li r4, -1
/* 800E19F4 000DE954 48 25 F4 4D */ bl __dt__6CTokenFv
/* 800E19F8 000DE958 38 80 00 00 */ li r4, 0
/* 800E19FC 000DE95C 7F E3 FB 78 */ mr r3, r31
/* 800E1A00 000DE960 90 9F 02 40 */ stw r4, 0x240(r31)
/* 800E1A04 000DE964 90 9F 02 44 */ stw r4, 0x244(r31)
/* 800E1A08 000DE968 88 1F 02 48 */ lbz r0, 0x248(r31)
/* 800E1A0C 000DE96C 50 80 3E 30 */ rlwimi r0, r4, 7, 0x18, 0x18
/* 800E1A10 000DE970 98 1F 02 48 */ stb r0, 0x248(r31)
/* 800E1A14 000DE974 88 1F 02 48 */ lbz r0, 0x248(r31)
/* 800E1A18 000DE978 50 80 36 72 */ rlwimi r0, r4, 6, 0x19, 0x19
/* 800E1A1C 000DE97C 98 1F 02 48 */ stb r0, 0x248(r31)
/* 800E1A20 000DE980 83 E1 00 2C */ lwz r31, 0x2c(r1)
/* 800E1A24 000DE984 83 C1 00 28 */ lwz r30, 0x28(r1)
/* 800E1A28 000DE988 80 01 00 34 */ lwz r0, 0x34(r1)
/* 800E1A2C 000DE98C 7C 08 03 A6 */ mtlr r0
/* 800E1A30 000DE990 38 21 00 30 */ addi r1, r1, 0x30
/* 800E1A34 000DE994 4E 80 00 20 */ blr
.section .rodata
.balign 8
.global lbl_803CE598
lbl_803CE598:
# ROM: 0x3CB598
.asciz "??(??)"
.byte 0x49
.asciz "ceSmoke"
.asciz "Ice2nd_1"
.byte 0x49, 0x63, 0x65
.asciz "2nd_2"
.balign 4
.4byte 0