.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(gCameras+0x6C) /* 333F1C E002005C 00220821 */ addu $at, $at, $v0 /* 333F20 E0020060 C42C1DEC */ lwc1 $f12, %lo(gCameras+0x6C)($at) /* 333F24 E0020064 8E32003C */ lw $s2, 0x3c($s1) /* 333F28 E0020068 0C080140 */ jal shim_sin_deg /* 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(gCameras+0x6C) /* 333F54 E0020094 00220821 */ addu $at, $at, $v0 /* 333F58 E0020098 C42C1DEC */ lwc1 $f12, %lo(gCameras+0x6C)($at) /* 333F5C E002009C 0C080144 */ jal shim_cos_deg /* 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 shim_guRotateF /* 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