papermario/asm/nonmatchings/code_333EC0/func_E0020000.s
2020-11-29 02:13:07 -05:00

187 lines
9.7 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_E0020000
/* 333EC0 E0020000 27BDFF78 */ addiu $sp, $sp, -0x88
/* 333EC4 E0020004 AFB1005C */ sw $s1, 0x5c($sp)
/* 333EC8 E0020008 0080882D */ daddu $s1, $a0, $zero
/* 333ECC E002000C AFB30064 */ sw $s3, 0x64($sp)
/* 333ED0 E0020010 AFB00058 */ sw $s0, 0x58($sp)
/* 333ED4 E0020014 3C108007 */ lui $s0, %hi(gCurrentCameraID)
/* 333ED8 E0020018 26107410 */ addiu $s0, $s0, %lo(gCurrentCameraID)
/* 333EDC E002001C AFBF0068 */ sw $ra, 0x68($sp)
/* 333EE0 E0020020 AFB20060 */ sw $s2, 0x60($sp)
/* 333EE4 E0020024 F7B80080 */ sdc1 $f24, 0x80($sp)
/* 333EE8 E0020028 F7B60078 */ sdc1 $f22, 0x78($sp)
/* 333EEC E002002C F7B40070 */ sdc1 $f20, 0x70($sp)
/* 333EF0 E0020030 8E030000 */ lw $v1, ($s0)
/* 333EF4 E0020034 C638001C */ lwc1 $f24, 0x1c($s1)
/* 333EF8 E0020038 C6360020 */ lwc1 $f22, 0x20($s1)
/* 333EFC E002003C 00031080 */ sll $v0, $v1, 2
/* 333F00 E0020040 00431021 */ addu $v0, $v0, $v1
/* 333F04 E0020044 00021080 */ sll $v0, $v0, 2
/* 333F08 E0020048 00431023 */ subu $v0, $v0, $v1
/* 333F0C E002004C 000218C0 */ sll $v1, $v0, 3
/* 333F10 E0020050 00431021 */ addu $v0, $v0, $v1
/* 333F14 E0020054 000210C0 */ sll $v0, $v0, 3
/* 333F18 E0020058 3C01800B */ lui $at, %hi(D_800B1DEC)
/* 333F1C E002005C 00220821 */ addu $at, $at, $v0
/* 333F20 E0020060 C42C1DEC */ lwc1 $f12, %lo(D_800B1DEC)($at)
/* 333F24 E0020064 8E32003C */ lw $s2, 0x3c($s1)
/* 333F28 E0020068 0C080140 */ jal func_E0200500
/* 333F2C E002006C 00A0982D */ daddu $s3, $a1, $zero
/* 333F30 E0020070 8E030000 */ lw $v1, ($s0)
/* 333F34 E0020074 00031080 */ sll $v0, $v1, 2
/* 333F38 E0020078 00431021 */ addu $v0, $v0, $v1
/* 333F3C E002007C 00021080 */ sll $v0, $v0, 2
/* 333F40 E0020080 00431023 */ subu $v0, $v0, $v1
/* 333F44 E0020084 000218C0 */ sll $v1, $v0, 3
/* 333F48 E0020088 00431021 */ addu $v0, $v0, $v1
/* 333F4C E002008C 000210C0 */ sll $v0, $v0, 3
/* 333F50 E0020090 3C01800B */ lui $at, %hi(D_800B1DEC)
/* 333F54 E0020094 00220821 */ addu $at, $at, $v0
/* 333F58 E0020098 C42C1DEC */ lwc1 $f12, %lo(D_800B1DEC)($at)
/* 333F5C E002009C 0C080144 */ jal func_E0200510
/* 333F60 E00200A0 46000506 */ mov.s $f20, $f0
/* 333F64 E00200A4 00131080 */ sll $v0, $s3, 2
/* 333F68 E00200A8 46000007 */ neg.s $f0, $f0
/* 333F6C E00200AC E7A00010 */ swc1 $f0, 0x10($sp)
/* 333F70 E00200B0 3C0141A0 */ lui $at, 0x41a0
/* 333F74 E00200B4 44810000 */ mtc1 $at, $f0
/* 333F78 E00200B8 00531021 */ addu $v0, $v0, $s3
/* 333F7C E00200BC 4600C001 */ sub.s $f0, $f24, $f0
/* 333F80 E00200C0 00021080 */ sll $v0, $v0, 2
/* 333F84 E00200C4 44821000 */ mtc1 $v0, $f2
/* 333F88 E00200C8 00000000 */ nop
/* 333F8C E00200CC 468010A0 */ cvt.s.w $f2, $f2
/* 333F90 E00200D0 46020000 */ add.s $f0, $f0, $f2
/* 333F94 E00200D4 27A40018 */ addiu $a0, $sp, 0x18
/* 333F98 E00200D8 4406A000 */ mfc1 $a2, $f20
/* 333F9C E00200DC 46000007 */ neg.s $f0, $f0
/* 333FA0 E00200E0 44050000 */ mfc1 $a1, $f0
/* 333FA4 E00200E4 0C080104 */ jal func_E0200410
/* 333FA8 E00200E8 0000382D */ daddu $a3, $zero, $zero
/* 333FAC E00200EC 2402FFFF */ addiu $v0, $zero, -1
/* 333FB0 E00200F0 1642001F */ bne $s2, $v0, .LE0020170
/* 333FB4 E00200F4 00000000 */ nop
/* 333FB8 E00200F8 3C014180 */ lui $at, 0x4180
/* 333FBC E00200FC 44813000 */ mtc1 $at, $f6
/* 333FC0 E0020100 00000000 */ nop
/* 333FC4 E0020104 4606B180 */ add.s $f6, $f22, $f6
/* 333FC8 E0020108 C7A40028 */ lwc1 $f4, 0x28($sp)
/* 333FCC E002010C 46062102 */ mul.s $f4, $f4, $f6
/* 333FD0 E0020110 00000000 */ nop
/* 333FD4 E0020114 3C028011 */ lui $v0, %hi(gPlayerStatus)
/* 333FD8 E0020118 2442EFC8 */ addiu $v0, $v0, %lo(gPlayerStatus)
/* 333FDC E002011C C4400028 */ lwc1 $f0, 0x28($v0)
/* 333FE0 E0020120 C6220010 */ lwc1 $f2, 0x10($s1)
/* 333FE4 E0020124 46020000 */ add.s $f0, $f0, $f2
/* 333FE8 E0020128 46040000 */ add.s $f0, $f0, $f4
/* 333FEC E002012C E6200004 */ swc1 $f0, 4($s1)
/* 333FF0 E0020130 C7A4002C */ lwc1 $f4, 0x2c($sp)
/* 333FF4 E0020134 46062102 */ mul.s $f4, $f4, $f6
/* 333FF8 E0020138 00000000 */ nop
/* 333FFC E002013C C6220014 */ lwc1 $f2, 0x14($s1)
/* 334000 E0020140 C440002C */ lwc1 $f0, 0x2c($v0)
/* 334004 E0020144 46020000 */ add.s $f0, $f0, $f2
/* 334008 E0020148 46040000 */ add.s $f0, $f0, $f4
/* 33400C E002014C E6200008 */ swc1 $f0, 8($s1)
/* 334010 E0020150 C7A40030 */ lwc1 $f4, 0x30($sp)
/* 334014 E0020154 46062102 */ mul.s $f4, $f4, $f6
/* 334018 E0020158 00000000 */ nop
/* 33401C E002015C C6220018 */ lwc1 $f2, 0x18($s1)
/* 334020 E0020160 C4400030 */ lwc1 $f0, 0x30($v0)
/* 334024 E0020164 46020000 */ add.s $f0, $f0, $f2
/* 334028 E0020168 0800808F */ j .LE002023C
/* 33402C E002016C 46040000 */ add.s $f0, $f0, $f4
.LE0020170:
/* 334030 E0020170 1240001D */ beqz $s2, .LE00201E8
/* 334034 E0020174 00000000 */ nop
/* 334038 E0020178 3C014180 */ lui $at, 0x4180
/* 33403C E002017C 44813000 */ mtc1 $at, $f6
/* 334040 E0020180 00000000 */ nop
/* 334044 E0020184 4606B180 */ add.s $f6, $f22, $f6
/* 334048 E0020188 C7A40028 */ lwc1 $f4, 0x28($sp)
/* 33404C E002018C 46062102 */ mul.s $f4, $f4, $f6
/* 334050 E0020190 00000000 */ nop
/* 334054 E0020194 C6400038 */ lwc1 $f0, 0x38($s2)
/* 334058 E0020198 C6220010 */ lwc1 $f2, 0x10($s1)
/* 33405C E002019C 46020000 */ add.s $f0, $f0, $f2
/* 334060 E00201A0 46040000 */ add.s $f0, $f0, $f4
/* 334064 E00201A4 E6200004 */ swc1 $f0, 4($s1)
/* 334068 E00201A8 C7A4002C */ lwc1 $f4, 0x2c($sp)
/* 33406C E00201AC 46062102 */ mul.s $f4, $f4, $f6
/* 334070 E00201B0 00000000 */ nop
/* 334074 E00201B4 C6220014 */ lwc1 $f2, 0x14($s1)
/* 334078 E00201B8 C640003C */ lwc1 $f0, 0x3c($s2)
/* 33407C E00201BC 46020000 */ add.s $f0, $f0, $f2
/* 334080 E00201C0 46040000 */ add.s $f0, $f0, $f4
/* 334084 E00201C4 E6200008 */ swc1 $f0, 8($s1)
/* 334088 E00201C8 C7A40030 */ lwc1 $f4, 0x30($sp)
/* 33408C E00201CC 46062102 */ mul.s $f4, $f4, $f6
/* 334090 E00201D0 00000000 */ nop
/* 334094 E00201D4 C6220018 */ lwc1 $f2, 0x18($s1)
/* 334098 E00201D8 C6400040 */ lwc1 $f0, 0x40($s2)
/* 33409C E00201DC 46020000 */ add.s $f0, $f0, $f2
/* 3340A0 E00201E0 0800808F */ j .LE002023C
/* 3340A4 E00201E4 46040000 */ add.s $f0, $f0, $f4
.LE00201E8:
/* 3340A8 E00201E8 3C014180 */ lui $at, 0x4180
/* 3340AC E00201EC 44812000 */ mtc1 $at, $f4
/* 3340B0 E00201F0 00000000 */ nop
/* 3340B4 E00201F4 4604B100 */ add.s $f4, $f22, $f4
/* 3340B8 E00201F8 C7A20028 */ lwc1 $f2, 0x28($sp)
/* 3340BC E00201FC 46041082 */ mul.s $f2, $f2, $f4
/* 3340C0 E0020200 00000000 */ nop
/* 3340C4 E0020204 C6200010 */ lwc1 $f0, 0x10($s1)
/* 3340C8 E0020208 46020000 */ add.s $f0, $f0, $f2
/* 3340CC E002020C E6200004 */ swc1 $f0, 4($s1)
/* 3340D0 E0020210 C7A2002C */ lwc1 $f2, 0x2c($sp)
/* 3340D4 E0020214 46041082 */ mul.s $f2, $f2, $f4
/* 3340D8 E0020218 00000000 */ nop
/* 3340DC E002021C C6200014 */ lwc1 $f0, 0x14($s1)
/* 3340E0 E0020220 46020000 */ add.s $f0, $f0, $f2
/* 3340E4 E0020224 E6200008 */ swc1 $f0, 8($s1)
/* 3340E8 E0020228 C7A20030 */ lwc1 $f2, 0x30($sp)
/* 3340EC E002022C 46041082 */ mul.s $f2, $f2, $f4
/* 3340F0 E0020230 00000000 */ nop
/* 3340F4 E0020234 C6200018 */ lwc1 $f0, 0x18($s1)
/* 3340F8 E0020238 46020000 */ add.s $f0, $f0, $f2
.LE002023C:
/* 3340FC E002023C E620000C */ swc1 $f0, 0xc($s1)
/* 334100 E0020240 3C014140 */ lui $at, 0x4140
/* 334104 E0020244 44810000 */ mtc1 $at, $f0
/* 334108 E0020248 3C013F00 */ lui $at, 0x3f00
/* 33410C E002024C 44811000 */ mtc1 $at, $f2
/* 334110 E0020250 4600B003 */ div.s $f0, $f22, $f0
/* 334114 E0020254 46020002 */ mul.s $f0, $f0, $f2
/* 334118 E0020258 00000000 */ nop
/* 33411C E002025C 00131080 */ sll $v0, $s3, 2
/* 334120 E0020260 3C0141A0 */ lui $at, 0x41a0
/* 334124 E0020264 44812000 */ mtc1 $at, $f4
/* 334128 E0020268 00531021 */ addu $v0, $v0, $s3
/* 33412C E002026C 4604C101 */ sub.s $f4, $f24, $f4
/* 334130 E0020270 00021080 */ sll $v0, $v0, 2
/* 334134 E0020274 44821000 */ mtc1 $v0, $f2
/* 334138 E0020278 00000000 */ nop
/* 33413C E002027C 468010A0 */ cvt.s.w $f2, $f2
/* 334140 E0020280 46022100 */ add.s $f4, $f4, $f2
/* 334144 E0020284 3C013FE0 */ lui $at, 0x3fe0
/* 334148 E0020288 44811800 */ mtc1 $at, $f3
/* 33414C E002028C 44801000 */ mtc1 $zero, $f2
/* 334150 E0020290 46000021 */ cvt.d.s $f0, $f0
/* 334154 E0020294 46220000 */ add.d $f0, $f0, $f2
/* 334158 E0020298 E6240024 */ swc1 $f4, 0x24($s1)
/* 33415C E002029C 46200020 */ cvt.s.d $f0, $f0
/* 334160 E00202A0 E6200028 */ swc1 $f0, 0x28($s1)
/* 334164 E00202A4 8FBF0068 */ lw $ra, 0x68($sp)
/* 334168 E00202A8 8FB30064 */ lw $s3, 0x64($sp)
/* 33416C E00202AC 8FB20060 */ lw $s2, 0x60($sp)
/* 334170 E00202B0 8FB1005C */ lw $s1, 0x5c($sp)
/* 334174 E00202B4 8FB00058 */ lw $s0, 0x58($sp)
/* 334178 E00202B8 D7B80080 */ ldc1 $f24, 0x80($sp)
/* 33417C E00202BC D7B60078 */ ldc1 $f22, 0x78($sp)
/* 334180 E00202C0 D7B40070 */ ldc1 $f20, 0x70($sp)
/* 334184 E00202C4 03E00008 */ jr $ra
/* 334188 E00202C8 27BD0088 */ addiu $sp, $sp, 0x88