papermario/asm/nonmatchings/battle/area_sam/623BA0/func_80218E88_624A28.s
2020-12-28 14:34:30 +09:00

317 lines
16 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80218E88_624A28
/* 624A28 80218E88 27BDFFB8 */ addiu $sp, $sp, -0x48
/* 624A2C 80218E8C AFBF002C */ sw $ra, 0x2c($sp)
/* 624A30 80218E90 AFB20028 */ sw $s2, 0x28($sp)
/* 624A34 80218E94 AFB10024 */ sw $s1, 0x24($sp)
/* 624A38 80218E98 AFB00020 */ sw $s0, 0x20($sp)
/* 624A3C 80218E9C F7B80040 */ sdc1 $f24, 0x40($sp)
/* 624A40 80218EA0 F7B60038 */ sdc1 $f22, 0x38($sp)
/* 624A44 80218EA4 F7B40030 */ sdc1 $f20, 0x30($sp)
/* 624A48 80218EA8 8C840148 */ lw $a0, 0x148($a0)
/* 624A4C 80218EAC 0C09A75B */ jal get_actor
/* 624A50 80218EB0 00A0802D */ daddu $s0, $a1, $zero
/* 624A54 80218EB4 0040882D */ daddu $s1, $v0, $zero
/* 624A58 80218EB8 1200003D */ beqz $s0, .L80218FB0
/* 624A5C 80218EBC 2632000C */ addiu $s2, $s1, 0xc
/* 624A60 80218EC0 0C00AB39 */ jal heap_malloc
/* 624A64 80218EC4 24040020 */ addiu $a0, $zero, 0x20
/* 624A68 80218EC8 0040802D */ daddu $s0, $v0, $zero
/* 624A6C 80218ECC 24020001 */ addiu $v0, $zero, 1
/* 624A70 80218ED0 26250144 */ addiu $a1, $s1, 0x144
/* 624A74 80218ED4 26260148 */ addiu $a2, $s1, 0x148
/* 624A78 80218ED8 AE300090 */ sw $s0, 0x90($s1)
/* 624A7C 80218EDC AE020004 */ sw $v0, 4($s0)
/* 624A80 80218EE0 AE000008 */ sw $zero, 8($s0)
/* 624A84 80218EE4 AE02000C */ sw $v0, 0xc($s0)
/* 624A88 80218EE8 AE000010 */ sw $zero, 0x10($s0)
/* 624A8C 80218EEC 82230210 */ lb $v1, 0x210($s1)
/* 624A90 80218EF0 2402000A */ addiu $v0, $zero, 0xa
/* 624A94 80218EF4 10620005 */ beq $v1, $v0, .L80218F0C
/* 624A98 80218EF8 2627014C */ addiu $a3, $s1, 0x14c
/* 624A9C 80218EFC 3C013F80 */ lui $at, 0x3f80
/* 624AA0 80218F00 44810000 */ mtc1 $at, $f0
/* 624AA4 80218F04 080863C8 */ j .L80218F20
/* 624AA8 80218F08 E7A00010 */ swc1 $f0, 0x10($sp)
.L80218F0C:
/* 624AAC 80218F0C 3C013ECC */ lui $at, 0x3ecc
/* 624AB0 80218F10 3421CCCD */ ori $at, $at, 0xcccd
/* 624AB4 80218F14 44810000 */ mtc1 $at, $f0
/* 624AB8 80218F18 00000000 */ nop
/* 624ABC 80218F1C E7A00010 */ swc1 $f0, 0x10($sp)
.L80218F20:
/* 624AC0 80218F20 24020005 */ addiu $v0, $zero, 5
/* 624AC4 80218F24 AFA20014 */ sw $v0, 0x14($sp)
/* 624AC8 80218F28 AFA00018 */ sw $zero, 0x18($sp)
/* 624ACC 80218F2C 8CA50000 */ lw $a1, ($a1)
/* 624AD0 80218F30 8CC60000 */ lw $a2, ($a2)
/* 624AD4 80218F34 8CE70000 */ lw $a3, ($a3)
/* 624AD8 80218F38 0C01C8EC */ jal func_800723B0
/* 624ADC 80218F3C 0000202D */ daddu $a0, $zero, $zero
/* 624AE0 80218F40 26250144 */ addiu $a1, $s1, 0x144
/* 624AE4 80218F44 AE020014 */ sw $v0, 0x14($s0)
/* 624AE8 80218F48 82220210 */ lb $v0, 0x210($s1)
/* 624AEC 80218F4C 2403000A */ addiu $v1, $zero, 0xa
/* 624AF0 80218F50 10430005 */ beq $v0, $v1, .L80218F68
/* 624AF4 80218F54 2627014C */ addiu $a3, $s1, 0x14c
/* 624AF8 80218F58 3C013F80 */ lui $at, 0x3f80
/* 624AFC 80218F5C 44810000 */ mtc1 $at, $f0
/* 624B00 80218F60 080863DF */ j .L80218F7C
/* 624B04 80218F64 E7A00010 */ swc1 $f0, 0x10($sp)
.L80218F68:
/* 624B08 80218F68 3C013ECC */ lui $at, 0x3ecc
/* 624B0C 80218F6C 3421CCCD */ ori $at, $at, 0xcccd
/* 624B10 80218F70 44810000 */ mtc1 $at, $f0
/* 624B14 80218F74 00000000 */ nop
/* 624B18 80218F78 E7A00010 */ swc1 $f0, 0x10($sp)
.L80218F7C:
/* 624B1C 80218F7C 24020005 */ addiu $v0, $zero, 5
/* 624B20 80218F80 AFA20014 */ sw $v0, 0x14($sp)
/* 624B24 80218F84 AFA00018 */ sw $zero, 0x18($sp)
/* 624B28 80218F88 8CA50000 */ lw $a1, ($a1)
/* 624B2C 80218F8C 3C06C47A */ lui $a2, 0xc47a
/* 624B30 80218F90 8CE70000 */ lw $a3, ($a3)
/* 624B34 80218F94 0C01C8EC */ jal func_800723B0
/* 624B38 80218F98 24040001 */ addiu $a0, $zero, 1
/* 624B3C 80218F9C AE020018 */ sw $v0, 0x18($s0)
/* 624B40 80218FA0 24020001 */ addiu $v0, $zero, 1
/* 624B44 80218FA4 AE020000 */ sw $v0, ($s0)
/* 624B48 80218FA8 82220210 */ lb $v0, 0x210($s1)
/* 624B4C 80218FAC AE02001C */ sw $v0, 0x1c($s0)
.L80218FB0:
/* 624B50 80218FB0 8E500084 */ lw $s0, 0x84($s2)
/* 624B54 80218FB4 8E020000 */ lw $v0, ($s0)
/* 624B58 80218FB8 104000C9 */ beqz $v0, .L802192E0
/* 624B5C 80218FBC 24020002 */ addiu $v0, $zero, 2
/* 624B60 80218FC0 8E020004 */ lw $v0, 4($s0)
/* 624B64 80218FC4 1040000D */ beqz $v0, .L80218FFC
/* 624B68 80218FC8 24020008 */ addiu $v0, $zero, 8
/* 624B6C 80218FCC 82230210 */ lb $v1, 0x210($s1)
/* 624B70 80218FD0 1062000A */ beq $v1, $v0, .L80218FFC
/* 624B74 80218FD4 00000000 */ nop
/* 624B78 80218FD8 8E020008 */ lw $v0, 8($s0)
/* 624B7C 80218FDC 2442000F */ addiu $v0, $v0, 0xf
/* 624B80 80218FE0 44826000 */ mtc1 $v0, $f12
/* 624B84 80218FE4 00000000 */ nop
/* 624B88 80218FE8 46806320 */ cvt.s.w $f12, $f12
/* 624B8C 80218FEC 0C00A6C9 */ jal clamp_angle
/* 624B90 80218FF0 AE020008 */ sw $v0, 8($s0)
/* 624B94 80218FF4 4600018D */ trunc.w.s $f6, $f0
/* 624B98 80218FF8 E6060008 */ swc1 $f6, 8($s0)
.L80218FFC:
/* 624B9C 80218FFC 3C0140C9 */ lui $at, 0x40c9
/* 624BA0 80219000 34210FD0 */ ori $at, $at, 0xfd0
/* 624BA4 80219004 44810000 */ mtc1 $at, $f0
/* 624BA8 80219008 C60C0008 */ lwc1 $f12, 8($s0)
/* 624BAC 8021900C 46806320 */ cvt.s.w $f12, $f12
/* 624BB0 80219010 46006302 */ mul.s $f12, $f12, $f0
/* 624BB4 80219014 00000000 */ nop
/* 624BB8 80219018 3C0143B4 */ lui $at, 0x43b4
/* 624BBC 8021901C 44810000 */ mtc1 $at, $f0
/* 624BC0 80219020 0C00A85B */ jal sin_rad
/* 624BC4 80219024 46006303 */ div.s $f12, $f12, $f0
/* 624BC8 80219028 3C014040 */ lui $at, 0x4040
/* 624BCC 8021902C 44811000 */ mtc1 $at, $f2
/* 624BD0 80219030 00000000 */ nop
/* 624BD4 80219034 46020002 */ mul.s $f0, $f0, $f2
/* 624BD8 80219038 00000000 */ nop
/* 624BDC 8021903C 86220152 */ lh $v0, 0x152($s1)
/* 624BE0 80219040 44821000 */ mtc1 $v0, $f2
/* 624BE4 80219044 00000000 */ nop
/* 624BE8 80219048 468010A0 */ cvt.s.w $f2, $f2
/* 624BEC 8021904C 4600018D */ trunc.w.s $f6, $f0
/* 624BF0 80219050 44033000 */ mfc1 $v1, $f6
/* 624BF4 80219054 00000000 */ nop
/* 624BF8 80219058 00031600 */ sll $v0, $v1, 0x18
/* 624BFC 8021905C C6200148 */ lwc1 $f0, 0x148($s1)
/* 624C00 80219060 00021603 */ sra $v0, $v0, 0x18
/* 624C04 80219064 A223019A */ sb $v1, 0x19a($s1)
/* 624C08 80219068 46020000 */ add.s $f0, $f0, $f2
/* 624C0C 8021906C 44821000 */ mtc1 $v0, $f2
/* 624C10 80219070 00000000 */ nop
/* 624C14 80219074 468010A0 */ cvt.s.w $f2, $f2
/* 624C18 80219078 86220150 */ lh $v0, 0x150($s1)
/* 624C1C 8021907C 46020000 */ add.s $f0, $f0, $f2
/* 624C20 80219080 2403000A */ addiu $v1, $zero, 0xa
/* 624C24 80219084 44821000 */ mtc1 $v0, $f2
/* 624C28 80219088 00000000 */ nop
/* 624C2C 8021908C 468010A0 */ cvt.s.w $f2, $f2
/* 624C30 80219090 46000121 */ cvt.d.s $f4, $f0
/* 624C34 80219094 C6200144 */ lwc1 $f0, 0x144($s1)
/* 624C38 80219098 82220210 */ lb $v0, 0x210($s1)
/* 624C3C 8021909C 46020580 */ add.s $f22, $f0, $f2
/* 624C40 802190A0 3C018023 */ lui $at, %hi(D_80231318)
/* 624C44 802190A4 D4201318 */ ldc1 $f0, %lo(D_80231318)($at)
/* 624C48 802190A8 50430006 */ beql $v0, $v1, .L802190C4
/* 624C4C 802190AC 46202000 */ add.d $f0, $f4, $f0
/* 624C50 802190B0 3C014028 */ lui $at, 0x4028
/* 624C54 802190B4 44810800 */ mtc1 $at, $f1
/* 624C58 802190B8 44800000 */ mtc1 $zero, $f0
/* 624C5C 802190BC 00000000 */ nop
/* 624C60 802190C0 46202000 */ add.d $f0, $f4, $f0
.L802190C4:
/* 624C64 802190C4 46200520 */ cvt.s.d $f20, $f0
/* 624C68 802190C8 86220154 */ lh $v0, 0x154($s1)
/* 624C6C 802190CC C620014C */ lwc1 $f0, 0x14c($s1)
/* 624C70 802190D0 44821000 */ mtc1 $v0, $f2
/* 624C74 802190D4 00000000 */ nop
/* 624C78 802190D8 468010A0 */ cvt.s.w $f2, $f2
/* 624C7C 802190DC 8E02000C */ lw $v0, 0xc($s0)
/* 624C80 802190E0 10400059 */ beqz $v0, .L80219248
/* 624C84 802190E4 46020600 */ add.s $f24, $f0, $f2
/* 624C88 802190E8 8E030010 */ lw $v1, 0x10($s0)
/* 624C8C 802190EC 10600005 */ beqz $v1, .L80219104
/* 624C90 802190F0 24020001 */ addiu $v0, $zero, 1
/* 624C94 802190F4 1062002A */ beq $v1, $v0, .L802191A0
/* 624C98 802190F8 00000000 */ nop
/* 624C9C 802190FC 080864A0 */ j .L80219280
/* 624CA0 80219100 00000000 */ nop
.L80219104:
/* 624CA4 80219104 8E020014 */ lw $v0, 0x14($s0)
/* 624CA8 80219108 14400016 */ bnez $v0, .L80219164
/* 624CAC 8021910C 2402000A */ addiu $v0, $zero, 0xa
/* 624CB0 80219110 82230210 */ lb $v1, 0x210($s1)
/* 624CB4 80219114 10620005 */ beq $v1, $v0, .L8021912C
/* 624CB8 80219118 00000000 */ nop
/* 624CBC 8021911C 3C013F80 */ lui $at, 0x3f80
/* 624CC0 80219120 44810000 */ mtc1 $at, $f0
/* 624CC4 80219124 08086450 */ j .L80219140
/* 624CC8 80219128 E7A00010 */ swc1 $f0, 0x10($sp)
.L8021912C:
/* 624CCC 8021912C 3C013ECC */ lui $at, 0x3ecc
/* 624CD0 80219130 3421CCCD */ ori $at, $at, 0xcccd
/* 624CD4 80219134 44810000 */ mtc1 $at, $f0
/* 624CD8 80219138 00000000 */ nop
/* 624CDC 8021913C E7A00010 */ swc1 $f0, 0x10($sp)
.L80219140:
/* 624CE0 80219140 0000202D */ daddu $a0, $zero, $zero
/* 624CE4 80219144 4405B000 */ mfc1 $a1, $f22
/* 624CE8 80219148 4406A000 */ mfc1 $a2, $f20
/* 624CEC 8021914C 4407C000 */ mfc1 $a3, $f24
/* 624CF0 80219150 24020005 */ addiu $v0, $zero, 5
/* 624CF4 80219154 AFA20014 */ sw $v0, 0x14($sp)
/* 624CF8 80219158 0C01C8EC */ jal func_800723B0
/* 624CFC 8021915C AFA00018 */ sw $zero, 0x18($sp)
/* 624D00 80219160 AE020014 */ sw $v0, 0x14($s0)
.L80219164:
/* 624D04 80219164 8E030018 */ lw $v1, 0x18($s0)
/* 624D08 80219168 10600005 */ beqz $v1, .L80219180
/* 624D0C 8021916C 00000000 */ nop
/* 624D10 80219170 8C620000 */ lw $v0, ($v1)
/* 624D14 80219174 34420010 */ ori $v0, $v0, 0x10
/* 624D18 80219178 AC620000 */ sw $v0, ($v1)
/* 624D1C 8021917C AE000018 */ sw $zero, 0x18($s0)
.L80219180:
/* 624D20 80219180 8E020014 */ lw $v0, 0x14($s0)
/* 624D24 80219184 8C42000C */ lw $v0, 0xc($v0)
/* 624D28 80219188 E4560004 */ swc1 $f22, 4($v0)
/* 624D2C 8021918C 8E020014 */ lw $v0, 0x14($s0)
/* 624D30 80219190 8C42000C */ lw $v0, 0xc($v0)
/* 624D34 80219194 E4540008 */ swc1 $f20, 8($v0)
/* 624D38 80219198 0808648F */ j .L8021923C
/* 624D3C 8021919C 8E020014 */ lw $v0, 0x14($s0)
.L802191A0:
/* 624D40 802191A0 8E030014 */ lw $v1, 0x14($s0)
/* 624D44 802191A4 10600005 */ beqz $v1, .L802191BC
/* 624D48 802191A8 00000000 */ nop
/* 624D4C 802191AC 8C620000 */ lw $v0, ($v1)
/* 624D50 802191B0 34420010 */ ori $v0, $v0, 0x10
/* 624D54 802191B4 AC620000 */ sw $v0, ($v1)
/* 624D58 802191B8 AE000014 */ sw $zero, 0x14($s0)
.L802191BC:
/* 624D5C 802191BC 8E020018 */ lw $v0, 0x18($s0)
/* 624D60 802191C0 14400018 */ bnez $v0, .L80219224
/* 624D64 802191C4 00000000 */ nop
/* 624D68 802191C8 82230210 */ lb $v1, 0x210($s1)
/* 624D6C 802191CC 2402000A */ addiu $v0, $zero, 0xa
/* 624D70 802191D0 10620005 */ beq $v1, $v0, .L802191E8
/* 624D74 802191D4 00000000 */ nop
/* 624D78 802191D8 3C013F80 */ lui $at, 0x3f80
/* 624D7C 802191DC 44810000 */ mtc1 $at, $f0
/* 624D80 802191E0 0808647F */ j .L802191FC
/* 624D84 802191E4 E7A00010 */ swc1 $f0, 0x10($sp)
.L802191E8:
/* 624D88 802191E8 3C013ECC */ lui $at, 0x3ecc
/* 624D8C 802191EC 3421CCCD */ ori $at, $at, 0xcccd
/* 624D90 802191F0 44810000 */ mtc1 $at, $f0
/* 624D94 802191F4 00000000 */ nop
/* 624D98 802191F8 E7A00010 */ swc1 $f0, 0x10($sp)
.L802191FC:
/* 624D9C 802191FC 24040001 */ addiu $a0, $zero, 1
/* 624DA0 80219200 4405B000 */ mfc1 $a1, $f22
/* 624DA4 80219204 4406A000 */ mfc1 $a2, $f20
/* 624DA8 80219208 4407C000 */ mfc1 $a3, $f24
/* 624DAC 8021920C 24020005 */ addiu $v0, $zero, 5
/* 624DB0 80219210 AFA20014 */ sw $v0, 0x14($sp)
/* 624DB4 80219214 0C01C8EC */ jal func_800723B0
/* 624DB8 80219218 AFA00018 */ sw $zero, 0x18($sp)
/* 624DBC 8021921C AE020018 */ sw $v0, 0x18($s0)
/* 624DC0 80219220 8E020018 */ lw $v0, 0x18($s0)
.L80219224:
/* 624DC4 80219224 8C42000C */ lw $v0, 0xc($v0)
/* 624DC8 80219228 E4560004 */ swc1 $f22, 4($v0)
/* 624DCC 8021922C 8E020018 */ lw $v0, 0x18($s0)
/* 624DD0 80219230 8C42000C */ lw $v0, 0xc($v0)
/* 624DD4 80219234 E4540008 */ swc1 $f20, 8($v0)
/* 624DD8 80219238 8E020018 */ lw $v0, 0x18($s0)
.L8021923C:
/* 624DDC 8021923C 8C42000C */ lw $v0, 0xc($v0)
/* 624DE0 80219240 080864A0 */ j .L80219280
/* 624DE4 80219244 E458000C */ swc1 $f24, 0xc($v0)
.L80219248:
/* 624DE8 80219248 8E030014 */ lw $v1, 0x14($s0)
/* 624DEC 8021924C 10600005 */ beqz $v1, .L80219264
/* 624DF0 80219250 00000000 */ nop
/* 624DF4 80219254 8C620000 */ lw $v0, ($v1)
/* 624DF8 80219258 34420010 */ ori $v0, $v0, 0x10
/* 624DFC 8021925C AC620000 */ sw $v0, ($v1)
/* 624E00 80219260 AE000014 */ sw $zero, 0x14($s0)
.L80219264:
/* 624E04 80219264 8E030018 */ lw $v1, 0x18($s0)
/* 624E08 80219268 10600005 */ beqz $v1, .L80219280
/* 624E0C 8021926C 00000000 */ nop
/* 624E10 80219270 8C620000 */ lw $v0, ($v1)
/* 624E14 80219274 34420010 */ ori $v0, $v0, 0x10
/* 624E18 80219278 AC620000 */ sw $v0, ($v1)
/* 624E1C 8021927C AE000018 */ sw $zero, 0x18($s0)
.L80219280:
/* 624E20 80219280 82230210 */ lb $v1, 0x210($s1)
/* 624E24 80219284 8E02001C */ lw $v0, 0x1c($s0)
/* 624E28 80219288 10430014 */ beq $v0, $v1, .L802192DC
/* 624E2C 8021928C 0000102D */ daddu $v0, $zero, $zero
/* 624E30 80219290 8E02000C */ lw $v0, 0xc($s0)
/* 624E34 80219294 10400011 */ beqz $v0, .L802192DC
/* 624E38 80219298 0000102D */ daddu $v0, $zero, $zero
/* 624E3C 8021929C 8E030014 */ lw $v1, 0x14($s0)
/* 624E40 802192A0 10600005 */ beqz $v1, .L802192B8
/* 624E44 802192A4 00000000 */ nop
/* 624E48 802192A8 8C620000 */ lw $v0, ($v1)
/* 624E4C 802192AC 34420010 */ ori $v0, $v0, 0x10
/* 624E50 802192B0 AC620000 */ sw $v0, ($v1)
/* 624E54 802192B4 AE000014 */ sw $zero, 0x14($s0)
.L802192B8:
/* 624E58 802192B8 8E030018 */ lw $v1, 0x18($s0)
/* 624E5C 802192BC 10600005 */ beqz $v1, .L802192D4
/* 624E60 802192C0 00000000 */ nop
/* 624E64 802192C4 8C620000 */ lw $v0, ($v1)
/* 624E68 802192C8 34420010 */ ori $v0, $v0, 0x10
/* 624E6C 802192CC AC620000 */ sw $v0, ($v1)
/* 624E70 802192D0 AE000018 */ sw $zero, 0x18($s0)
.L802192D4:
/* 624E74 802192D4 82230210 */ lb $v1, 0x210($s1)
/* 624E78 802192D8 0000102D */ daddu $v0, $zero, $zero
.L802192DC:
/* 624E7C 802192DC AE03001C */ sw $v1, 0x1c($s0)
.L802192E0:
/* 624E80 802192E0 8FBF002C */ lw $ra, 0x2c($sp)
/* 624E84 802192E4 8FB20028 */ lw $s2, 0x28($sp)
/* 624E88 802192E8 8FB10024 */ lw $s1, 0x24($sp)
/* 624E8C 802192EC 8FB00020 */ lw $s0, 0x20($sp)
/* 624E90 802192F0 D7B80040 */ ldc1 $f24, 0x40($sp)
/* 624E94 802192F4 D7B60038 */ ldc1 $f22, 0x38($sp)
/* 624E98 802192F8 D7B40030 */ ldc1 $f20, 0x30($sp)
/* 624E9C 802192FC 03E00008 */ jr $ra
/* 624EA0 80219300 27BD0048 */ addiu $sp, $sp, 0x48