papermario/asm/nonmatchings/code_1a1f0_len_5390/func_8003F7CC.s
2020-08-12 22:37:16 -04:00

1901 lines
89 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8003F7CC
/* 01ABCC 8003F7CC 27BDFF40 */ addiu $sp, $sp, -0xc0
/* 01ABD0 8003F7D0 AFB30074 */ sw $s3, 0x74($sp)
/* 01ABD4 8003F7D4 3C13800B */ lui $s3, 0x800b
/* 01ABD8 8003F7D8 26730F10 */ addiu $s3, $s3, 0xf10
/* 01ABDC 8003F7DC AFB40078 */ sw $s4, 0x78($sp)
/* 01ABE0 8003F7E0 3C148011 */ lui $s4, 0x8011
/* 01ABE4 8003F7E4 2694EFC8 */ addiu $s4, $s4, -0x1038
/* 01ABE8 8003F7E8 3C038007 */ lui $v1, 0x8007
/* 01ABEC 8003F7EC 8C637410 */ lw $v1, 0x7410($v1)
/* 01ABF0 8003F7F0 3C04800B */ lui $a0, 0x800b
/* 01ABF4 8003F7F4 24841D80 */ addiu $a0, $a0, 0x1d80
/* 01ABF8 8003F7F8 AFBF008C */ sw $ra, 0x8c($sp)
/* 01ABFC 8003F7FC AFBE0088 */ sw $fp, 0x88($sp)
/* 01AC00 8003F800 AFB70084 */ sw $s7, 0x84($sp)
/* 01AC04 8003F804 AFB60080 */ sw $s6, 0x80($sp)
/* 01AC08 8003F808 AFB5007C */ sw $s5, 0x7c($sp)
/* 01AC0C 8003F80C AFB20070 */ sw $s2, 0x70($sp)
/* 01AC10 8003F810 AFB1006C */ sw $s1, 0x6c($sp)
/* 01AC14 8003F814 AFB00068 */ sw $s0, 0x68($sp)
/* 01AC18 8003F818 F7BE00B8 */ sdc1 $f30, 0xb8($sp)
/* 01AC1C 8003F81C F7BC00B0 */ sdc1 $f28, 0xb0($sp)
/* 01AC20 8003F820 F7BA00A8 */ sdc1 $f26, 0xa8($sp)
/* 01AC24 8003F824 F7B800A0 */ sdc1 $f24, 0xa0($sp)
/* 01AC28 8003F828 F7B60098 */ sdc1 $f22, 0x98($sp)
/* 01AC2C 8003F82C F7B40090 */ sdc1 $f20, 0x90($sp)
/* 01AC30 8003F830 00031080 */ sll $v0, $v1, 2
/* 01AC34 8003F834 00431021 */ addu $v0, $v0, $v1
/* 01AC38 8003F838 00021080 */ sll $v0, $v0, 2
/* 01AC3C 8003F83C 00431023 */ subu $v0, $v0, $v1
/* 01AC40 8003F840 000218C0 */ sll $v1, $v0, 3
/* 01AC44 8003F844 00431021 */ addu $v0, $v0, $v1
/* 01AC48 8003F848 000210C0 */ sll $v0, $v0, 3
/* 01AC4C 8003F84C 00441021 */ addu $v0, $v0, $a0
/* 01AC50 8003F850 AFA20048 */ sw $v0, 0x48($sp)
/* 01AC54 8003F854 82630005 */ lb $v1, 5($s3)
/* 01AC58 8003F858 24020005 */ addiu $v0, $zero, 5
/* 01AC5C 8003F85C 10620426 */ beq $v1, $v0, .L800408F8
/* 01AC60 8003F860 2402FFFF */ addiu $v0, $zero, -1
/* 01AC64 8003F864 C69000A8 */ lwc1 $f16, 0xa8($s4)
/* 01AC68 8003F868 3C014334 */ lui $at, 0x4334
/* 01AC6C 8003F86C 44810000 */ mtc1 $at, $f0
/* 01AC70 8003F870 E7B0005C */ swc1 $f16, 0x5c($sp)
/* 01AC74 8003F874 AE620014 */ sw $v0, 0x14($s3)
/* 01AC78 8003F878 AE620018 */ sw $v0, 0x18($s3)
/* 01AC7C 8003F87C 8E620000 */ lw $v0, ($s3)
/* 01AC80 8003F880 2403FFFE */ addiu $v1, $zero, -2
/* 01AC84 8003F884 A2600005 */ sb $zero, 5($s3)
/* 01AC88 8003F888 A2600011 */ sb $zero, 0x11($s3)
/* 01AC8C 8003F88C A2600013 */ sb $zero, 0x13($s3)
/* 01AC90 8003F890 4600803C */ c.lt.s $f16, $f0
/* 01AC94 8003F894 00431024 */ and $v0, $v0, $v1
/* 01AC98 8003F898 2403FFFD */ addiu $v1, $zero, -3
/* 01AC9C 8003F89C 00431024 */ and $v0, $v0, $v1
/* 01ACA0 8003F8A0 2403FFFB */ addiu $v1, $zero, -5
/* 01ACA4 8003F8A4 00431024 */ and $v0, $v0, $v1
/* 01ACA8 8003F8A8 AE620000 */ sw $v0, ($s3)
/* 01ACAC 8003F8AC C6920028 */ lwc1 $f18, 0x28($s4)
/* 01ACB0 8003F8B0 E7B20050 */ swc1 $f18, 0x50($sp)
/* 01ACB4 8003F8B4 C690002C */ lwc1 $f16, 0x2c($s4)
/* 01ACB8 8003F8B8 E7B00054 */ swc1 $f16, 0x54($sp)
/* 01ACBC 8003F8BC C6920030 */ lwc1 $f18, 0x30($s4)
/* 01ACC0 8003F8C0 45000007 */ bc1f .L8003F8E0
/* 01ACC4 8003F8C4 E7B20058 */ swc1 $f18, 0x58($sp)
/* 01ACC8 8003F8C8 8FA80048 */ lw $t0, 0x48($sp)
/* 01ACCC 8003F8CC 3C0142B4 */ lui $at, 0x42b4
/* 01ACD0 8003F8D0 44816000 */ mtc1 $at, $f12
/* 01ACD4 8003F8D4 C500006C */ lwc1 $f0, 0x6c($t0)
/* 01ACD8 8003F8D8 0800FE3D */ j .L8003F8F4
/* 01ACDC 8003F8DC 460C0301 */ sub.s $f12, $f0, $f12
.L8003F8E0:
/* 01ACE0 8003F8E0 8FA80048 */ lw $t0, 0x48($sp)
/* 01ACE4 8003F8E4 3C0142B4 */ lui $at, 0x42b4
/* 01ACE8 8003F8E8 44816000 */ mtc1 $at, $f12
/* 01ACEC 8003F8EC C500006C */ lwc1 $f0, 0x6c($t0)
/* 01ACF0 8003F8F0 460C0300 */ add.s $f12, $f0, $f12
.L8003F8F4:
/* 01ACF4 8003F8F4 0C00A6C9 */ jal clamp_angle
/* 01ACF8 8003F8F8 00000000 */ nop
/* 01ACFC 8003F8FC E7A0005C */ swc1 $f0, 0x5c($sp)
/* 01AD00 8003F900 8262000A */ lb $v0, 0xa($s3)
/* 01AD04 8003F904 10400059 */ beqz $v0, .L8003FA6C
/* 01AD08 8003F908 9263000A */ lbu $v1, 0xa($s3)
/* 01AD0C 8003F90C 3C02800A */ lui $v0, 0x800a
/* 01AD10 8003F910 8C42A650 */ lw $v0, -0x59b0($v0)
/* 01AD14 8003F914 30420040 */ andi $v0, $v0, 0x40
/* 01AD18 8003F918 14400002 */ bnez $v0, .L8003F924
/* 01AD1C 8003F91C 2462FFFF */ addiu $v0, $v1, -1
/* 01AD20 8003F920 A262000A */ sb $v0, 0xa($s3)
.L8003F924:
/* 01AD24 8003F924 86820010 */ lh $v0, 0x10($s4)
/* 01AD28 8003F928 10400050 */ beqz $v0, .L8003FA6C
/* 01AD2C 8003F92C 00000000 */ nop
/* 01AD30 8003F930 8E820000 */ lw $v0, ($s4)
/* 01AD34 8003F934 30422000 */ andi $v0, $v0, 0x2000
/* 01AD38 8003F938 5440004B */ bnel $v0, $zero, .L8003FA68
/* 01AD3C 8003F93C 24020001 */ addiu $v0, $zero, 1
/* 01AD40 8003F940 9262000A */ lbu $v0, 0xa($s3)
/* 01AD44 8003F944 00021600 */ sll $v0, $v0, 0x18
/* 01AD48 8003F948 0800FE9A */ j .L8003FA68
/* 01AD4C 8003F94C 00021603 */ sra $v0, $v0, 0x18
.L8003F950:
/* 01AD50 8003F950 24020001 */ addiu $v0, $zero, 1
/* 01AD54 8003F954 A2620005 */ sb $v0, 5($s3)
/* 01AD58 8003F958 A2220005 */ sb $v0, 5($s1)
/* 01AD5C 8003F95C AE760088 */ sw $s6, 0x88($s3)
/* 01AD60 8003F960 AE71008C */ sw $s1, 0x8c($s3)
/* 01AD64 8003F964 A2600004 */ sb $zero, 4($s3)
/* 01AD68 8003F968 0801023D */ j .L800408F4
/* 01AD6C 8003F96C A2600006 */ sb $zero, 6($s3)
.L8003F970:
/* 01AD70 8003F970 8E860028 */ lw $a2, 0x28($s4)
/* 01AD74 8003F974 8E87002C */ lw $a3, 0x2c($s4)
/* 01AD78 8003F978 C6800030 */ lwc1 $f0, 0x30($s4)
/* 01AD7C 8003F97C 0000282D */ daddu $a1, $zero, $zero
/* 01AD80 8003F980 0C052757 */ jal play_sound_at_position
/* 01AD84 8003F984 E7A00010 */ swc1 $f0, 0x10($sp)
/* 01AD88 8003F988 C6480038 */ lwc1 $f8, 0x38($s2)
/* 01AD8C 8003F98C C68C0028 */ lwc1 $f12, 0x28($s4)
/* 01AD90 8003F990 460C4201 */ sub.s $f8, $f8, $f12
/* 01AD94 8003F994 3C013F00 */ lui $at, 0x3f00
/* 01AD98 8003F998 44815000 */ mtc1 $at, $f10
/* 01AD9C 8003F99C 00000000 */ nop
/* 01ADA0 8003F9A0 460A4202 */ mul.s $f8, $f8, $f10
/* 01ADA4 8003F9A4 00000000 */ nop
/* 01ADA8 8003F9A8 864200A8 */ lh $v0, 0xa8($s2)
/* 01ADAC 8003F9AC C642003C */ lwc1 $f2, 0x3c($s2)
/* 01ADB0 8003F9B0 44820000 */ mtc1 $v0, $f0
/* 01ADB4 8003F9B4 00000000 */ nop
/* 01ADB8 8003F9B8 46800020 */ cvt.s.w $f0, $f0
/* 01ADBC 8003F9BC 46001080 */ add.s $f2, $f2, $f0
/* 01ADC0 8003F9C0 868200B0 */ lh $v0, 0xb0($s4)
/* 01ADC4 8003F9C4 C686002C */ lwc1 $f6, 0x2c($s4)
/* 01ADC8 8003F9C8 44820000 */ mtc1 $v0, $f0
/* 01ADCC 8003F9CC 00000000 */ nop
/* 01ADD0 8003F9D0 46800020 */ cvt.s.w $f0, $f0
/* 01ADD4 8003F9D4 46003000 */ add.s $f0, $f6, $f0
/* 01ADD8 8003F9D8 46001081 */ sub.s $f2, $f2, $f0
/* 01ADDC 8003F9DC 460A1082 */ mul.s $f2, $f2, $f10
/* 01ADE0 8003F9E0 00000000 */ nop
/* 01ADE4 8003F9E4 C6840030 */ lwc1 $f4, 0x30($s4)
/* 01ADE8 8003F9E8 C6400040 */ lwc1 $f0, 0x40($s2)
/* 01ADEC 8003F9EC 46040001 */ sub.s $f0, $f0, $f4
/* 01ADF0 8003F9F0 460A0002 */ mul.s $f0, $f0, $f10
/* 01ADF4 8003F9F4 00000000 */ nop
/* 01ADF8 8003F9F8 46086300 */ add.s $f12, $f12, $f8
/* 01ADFC 8003F9FC 46023180 */ add.s $f6, $f6, $f2
/* 01AE00 8003FA00 24040003 */ addiu $a0, $zero, 3
/* 01AE04 8003FA04 44056000 */ mfc1 $a1, $f12
/* 01AE08 8003FA08 46002100 */ add.s $f4, $f4, $f0
/* 01AE0C 8003FA0C 3C01BF80 */ lui $at, 0xbf80
/* 01AE10 8003FA10 44810000 */ mtc1 $at, $f0
/* 01AE14 8003FA14 44063000 */ mfc1 $a2, $f6
/* 01AE18 8003FA18 44072000 */ mfc1 $a3, $f4
/* 01AE1C 8003FA1C 0080802D */ daddu $s0, $a0, $zero
/* 01AE20 8003FA20 AFA5003C */ sw $a1, 0x3c($sp)
/* 01AE24 8003FA24 AFA60040 */ sw $a2, 0x40($sp)
/* 01AE28 8003FA28 AFA70044 */ sw $a3, 0x44($sp)
/* 01AE2C 8003FA2C AFA00010 */ sw $zero, 0x10($sp)
/* 01AE30 8003FA30 E7A00014 */ swc1 $f0, 0x14($sp)
/* 01AE34 8003FA34 AFA00018 */ sw $zero, 0x18($sp)
/* 01AE38 8003FA38 0C01C064 */ jal func_80070190
/* 01AE3C 8003FA3C AFB0001C */ sw $s0, 0x1c($sp)
/* 01AE40 8003FA40 A2700005 */ sb $s0, 5($s3)
/* 01AE44 8003FA44 8E820004 */ lw $v0, 4($s4)
/* 01AE48 8003FA48 3C030002 */ lui $v1, 2
/* 01AE4C 8003FA4C 00431025 */ or $v0, $v0, $v1
/* 01AE50 8003FA50 AE820004 */ sw $v0, 4($s4)
/* 01AE54 8003FA54 A2300005 */ sb $s0, 5($s1)
/* 01AE58 8003FA58 AE760088 */ sw $s6, 0x88($s3)
/* 01AE5C 8003FA5C AE71008C */ sw $s1, 0x8c($s3)
/* 01AE60 8003FA60 0801023D */ j .L800408F4
/* 01AE64 8003FA64 A2600004 */ sb $zero, 4($s3)
.L8003FA68:
/* 01AE68 8003FA68 A6820010 */ sh $v0, 0x10($s4)
.L8003FA6C:
/* 01AE6C 8003FA6C 8262001C */ lb $v0, 0x1c($s3)
/* 01AE70 8003FA70 184003A0 */ blez $v0, .L800408F4
/* 01AE74 8003FA74 AFA0004C */ sw $zero, 0x4c($sp)
/* 01AE78 8003FA78 3C087FFF */ lui $t0, 0x7fff
/* 01AE7C 8003FA7C 3508FFFF */ ori $t0, $t0, 0xffff
/* 01AE80 8003FA80 AFA80060 */ sw $t0, 0x60($sp)
/* 01AE84 8003FA84 27A8003C */ addiu $t0, $sp, 0x3c
/* 01AE88 8003FA88 AFA80064 */ sw $t0, 0x64($sp)
.L8003FA8C:
/* 01AE8C 8003FA8C 8FA8004C */ lw $t0, 0x4c($sp)
/* 01AE90 8003FA90 00081080 */ sll $v0, $t0, 2
/* 01AE94 8003FA94 02621021 */ addu $v0, $s3, $v0
/* 01AE98 8003FA98 8C560028 */ lw $s6, 0x28($v0)
/* 01AE9C 8003FA9C 12C00390 */ beqz $s6, .L800408E0
/* 01AEA0 8003FAA0 00000000 */ nop
/* 01AEA4 8003FAA4 8EC20000 */ lw $v0, ($s6)
/* 01AEA8 8003FAA8 1840038D */ blez $v0, .L800408E0
/* 01AEAC 8003FAAC 0000A82D */ daddu $s5, $zero, $zero
/* 01AEB0 8003FAB0 27BE0040 */ addiu $fp, $sp, 0x40
/* 01AEB4 8003FAB4 27B70044 */ addiu $s7, $sp, 0x44
/* 01AEB8 8003FAB8 00151080 */ sll $v0, $s5, 2
.L8003FABC:
/* 01AEBC 8003FABC 02C21021 */ addu $v0, $s6, $v0
/* 01AEC0 8003FAC0 8C510004 */ lw $s1, 4($v0)
/* 01AEC4 8003FAC4 12200380 */ beqz $s1, .L800408C8
/* 01AEC8 8003FAC8 00000000 */ nop
/* 01AECC 8003FACC 8E220000 */ lw $v0, ($s1)
/* 01AED0 8003FAD0 30420020 */ andi $v0, $v0, 0x20
/* 01AED4 8003FAD4 1440037C */ bnez $v0, .L800408C8
/* 01AED8 8003FAD8 00000000 */ nop
/* 01AEDC 8003FADC 0C00EABB */ jal get_npc_unsafe
/* 01AEE0 8003FAE0 86240008 */ lh $a0, 8($s1)
/* 01AEE4 8003FAE4 0040902D */ daddu $s2, $v0, $zero
/* 01AEE8 8003FAE8 822200B4 */ lb $v0, 0xb4($s1)
/* 01AEEC 8003FAEC 922300B4 */ lbu $v1, 0xb4($s1)
/* 01AEF0 8003FAF0 50400030 */ beql $v0, $zero, .L8003FBB4
/* 01AEF4 8003FAF4 3C030020 */ lui $v1, 0x20
/* 01AEF8 8003FAF8 3C02800A */ lui $v0, 0x800a
/* 01AEFC 8003FAFC 8C42A650 */ lw $v0, -0x59b0($v0)
/* 01AF00 8003FB00 30420040 */ andi $v0, $v0, 0x40
/* 01AF04 8003FB04 54400005 */ bnel $v0, $zero, .L8003FB1C
/* 01AF08 8003FB08 0000102D */ daddu $v0, $zero, $zero
/* 01AF0C 8003FB0C 2462FFFF */ addiu $v0, $v1, -1
/* 01AF10 8003FB10 A22200B4 */ sb $v0, 0xb4($s1)
/* 01AF14 8003FB14 00021600 */ sll $v0, $v0, 0x18
/* 01AF18 8003FB18 00021603 */ sra $v0, $v0, 0x18
.L8003FB1C:
/* 01AF1C 8003FB1C 30420001 */ andi $v0, $v0, 1
/* 01AF20 8003FB20 10400007 */ beqz $v0, .L8003FB40
/* 01AF24 8003FB24 3C088000 */ lui $t0, 0x8000
/* 01AF28 8003FB28 8E420000 */ lw $v0, ($s2)
/* 01AF2C 8003FB2C 00481025 */ or $v0, $v0, $t0
/* 01AF30 8003FB30 AE420000 */ sw $v0, ($s2)
/* 01AF34 8003FB34 8E220000 */ lw $v0, ($s1)
/* 01AF38 8003FB38 0800FED6 */ j .L8003FB58
/* 01AF3C 8003FB3C 00481025 */ or $v0, $v0, $t0
.L8003FB40:
/* 01AF40 8003FB40 8E420000 */ lw $v0, ($s2)
/* 01AF44 8003FB44 8FA80060 */ lw $t0, 0x60($sp)
/* 01AF48 8003FB48 00481024 */ and $v0, $v0, $t0
/* 01AF4C 8003FB4C AE420000 */ sw $v0, ($s2)
/* 01AF50 8003FB50 8E220000 */ lw $v0, ($s1)
/* 01AF54 8003FB54 00481024 */ and $v0, $v0, $t0
.L8003FB58:
/* 01AF58 8003FB58 AE220000 */ sw $v0, ($s1)
/* 01AF5C 8003FB5C 0C0B11EA */ jal get_script_by_id
/* 01AF60 8003FB60 8E24005C */ lw $a0, 0x5c($s1)
/* 01AF64 8003FB64 0040202D */ daddu $a0, $v0, $zero
/* 01AF68 8003FB68 10800003 */ beqz $a0, .L8003FB78
/* 01AF6C 8003FB6C 00000000 */ nop
/* 01AF70 8003FB70 0C0B11FA */ jal set_script_flags
/* 01AF74 8003FB74 24050080 */ addiu $a1, $zero, 0x80
.L8003FB78:
/* 01AF78 8003FB78 8E240054 */ lw $a0, 0x54($s1)
/* 01AF7C 8003FB7C 0C0B11EA */ jal get_script_by_id
/* 01AF80 8003FB80 00000000 */ nop
/* 01AF84 8003FB84 0040202D */ daddu $a0, $v0, $zero
/* 01AF88 8003FB88 10800003 */ beqz $a0, .L8003FB98
/* 01AF8C 8003FB8C 00000000 */ nop
/* 01AF90 8003FB90 0C0B11FA */ jal set_script_flags
/* 01AF94 8003FB94 24050080 */ addiu $a1, $zero, 0x80
.L8003FB98:
/* 01AF98 8003FB98 8E220000 */ lw $v0, ($s1)
/* 01AF9C 8003FB9C 3C030008 */ lui $v1, 8
/* 01AFA0 8003FBA0 00431024 */ and $v0, $v0, $v1
/* 01AFA4 8003FBA4 10400052 */ beqz $v0, .L8003FCF0
/* 01AFA8 8003FBA8 00000000 */ nop
/* 01AFAC 8003FBAC 0800FF2D */ j .L8003FCB4
/* 01AFB0 8003FBB0 8E24005C */ lw $a0, 0x5c($s1)
.L8003FBB4:
/* 01AFB4 8003FBB4 8E220000 */ lw $v0, ($s1)
/* 01AFB8 8003FBB8 00431024 */ and $v0, $v0, $v1
/* 01AFBC 8003FBBC 14400035 */ bnez $v0, .L8003FC94
/* 01AFC0 8003FBC0 27A20020 */ addiu $v0, $sp, 0x20
/* 01AFC4 8003FBC4 3C048007 */ lui $a0, 0x8007
/* 01AFC8 8003FBC8 8C847410 */ lw $a0, 0x7410($a0)
/* 01AFCC 8003FBCC AFA20010 */ sw $v0, 0x10($sp)
/* 01AFD0 8003FBD0 27A20024 */ addiu $v0, $sp, 0x24
/* 01AFD4 8003FBD4 AFA20014 */ sw $v0, 0x14($sp)
/* 01AFD8 8003FBD8 27A20028 */ addiu $v0, $sp, 0x28
/* 01AFDC 8003FBDC AFA20018 */ sw $v0, 0x18($sp)
/* 01AFE0 8003FBE0 8E450038 */ lw $a1, 0x38($s2)
/* 01AFE4 8003FBE4 8E46003C */ lw $a2, 0x3c($s2)
/* 01AFE8 8003FBE8 0C00B94E */ jal get_screen_coords
/* 01AFEC 8003FBEC 8E470040 */ lw $a3, 0x40($s2)
/* 01AFF0 8003FBF0 8FA20020 */ lw $v0, 0x20($sp)
/* 01AFF4 8003FBF4 244200A0 */ addiu $v0, $v0, 0xa0
/* 01AFF8 8003FBF8 2C420281 */ sltiu $v0, $v0, 0x281
/* 01AFFC 8003FBFC 1040000A */ beqz $v0, .L8003FC28
/* 01B000 8003FC00 00000000 */ nop
/* 01B004 8003FC04 8FA30024 */ lw $v1, 0x24($sp)
/* 01B008 8003FC08 2862FF88 */ slti $v0, $v1, -0x78
/* 01B00C 8003FC0C 14400006 */ bnez $v0, .L8003FC28
/* 01B010 8003FC10 28620169 */ slti $v0, $v1, 0x169
/* 01B014 8003FC14 10400004 */ beqz $v0, .L8003FC28
/* 01B018 8003FC18 00000000 */ nop
/* 01B01C 8003FC1C 8FA20028 */ lw $v0, 0x28($sp)
/* 01B020 8003FC20 0441001C */ bgez $v0, .L8003FC94
/* 01B024 8003FC24 00000000 */ nop
.L8003FC28:
/* 01B028 8003FC28 8E220000 */ lw $v0, ($s1)
/* 01B02C 8003FC2C 30420001 */ andi $v0, $v0, 1
/* 01B030 8003FC30 14400018 */ bnez $v0, .L8003FC94
/* 01B034 8003FC34 3C088000 */ lui $t0, 0x8000
/* 01B038 8003FC38 8E420000 */ lw $v0, ($s2)
/* 01B03C 8003FC3C 00481025 */ or $v0, $v0, $t0
/* 01B040 8003FC40 AE420000 */ sw $v0, ($s2)
/* 01B044 8003FC44 8E220000 */ lw $v0, ($s1)
/* 01B048 8003FC48 8E24005C */ lw $a0, 0x5c($s1)
/* 01B04C 8003FC4C 00481025 */ or $v0, $v0, $t0
/* 01B050 8003FC50 0C0B11EA */ jal get_script_by_id
/* 01B054 8003FC54 AE220000 */ sw $v0, ($s1)
/* 01B058 8003FC58 0040202D */ daddu $a0, $v0, $zero
/* 01B05C 8003FC5C 10800003 */ beqz $a0, .L8003FC6C
/* 01B060 8003FC60 00000000 */ nop
/* 01B064 8003FC64 0C0B11FA */ jal set_script_flags
/* 01B068 8003FC68 24050080 */ addiu $a1, $zero, 0x80
.L8003FC6C:
/* 01B06C 8003FC6C 8E240054 */ lw $a0, 0x54($s1)
/* 01B070 8003FC70 0C0B11EA */ jal get_script_by_id
/* 01B074 8003FC74 00000000 */ nop
/* 01B078 8003FC78 0040202D */ daddu $a0, $v0, $zero
/* 01B07C 8003FC7C 1080001C */ beqz $a0, .L8003FCF0
/* 01B080 8003FC80 00000000 */ nop
/* 01B084 8003FC84 0C0B11FA */ jal set_script_flags
/* 01B088 8003FC88 24050080 */ addiu $a1, $zero, 0x80
/* 01B08C 8003FC8C 0800FF3C */ j .L8003FCF0
/* 01B090 8003FC90 00000000 */ nop
.L8003FC94:
/* 01B094 8003FC94 8E420000 */ lw $v0, ($s2)
/* 01B098 8003FC98 8FA80060 */ lw $t0, 0x60($sp)
/* 01B09C 8003FC9C 00481024 */ and $v0, $v0, $t0
/* 01B0A0 8003FCA0 AE420000 */ sw $v0, ($s2)
/* 01B0A4 8003FCA4 8E220000 */ lw $v0, ($s1)
/* 01B0A8 8003FCA8 8E24005C */ lw $a0, 0x5c($s1)
/* 01B0AC 8003FCAC 00481024 */ and $v0, $v0, $t0
/* 01B0B0 8003FCB0 AE220000 */ sw $v0, ($s1)
.L8003FCB4:
/* 01B0B4 8003FCB4 0C0B11EA */ jal get_script_by_id
/* 01B0B8 8003FCB8 00000000 */ nop
/* 01B0BC 8003FCBC 0040202D */ daddu $a0, $v0, $zero
/* 01B0C0 8003FCC0 10800003 */ beqz $a0, .L8003FCD0
/* 01B0C4 8003FCC4 00000000 */ nop
/* 01B0C8 8003FCC8 0C0B1220 */ jal clear_script_flags
/* 01B0CC 8003FCCC 24050080 */ addiu $a1, $zero, 0x80
.L8003FCD0:
/* 01B0D0 8003FCD0 8E240054 */ lw $a0, 0x54($s1)
/* 01B0D4 8003FCD4 0C0B11EA */ jal get_script_by_id
/* 01B0D8 8003FCD8 00000000 */ nop
/* 01B0DC 8003FCDC 0040202D */ daddu $a0, $v0, $zero
/* 01B0E0 8003FCE0 10800003 */ beqz $a0, .L8003FCF0
/* 01B0E4 8003FCE4 00000000 */ nop
/* 01B0E8 8003FCE8 0C0B1220 */ jal clear_script_flags
/* 01B0EC 8003FCEC 24050080 */ addiu $a1, $zero, 0x80
.L8003FCF0:
/* 01B0F0 8003FCF0 8E230000 */ lw $v1, ($s1)
/* 01B0F4 8003FCF4 3C088000 */ lui $t0, 0x8000
/* 01B0F8 8003FCF8 00681024 */ and $v0, $v1, $t0
/* 01B0FC 8003FCFC 144002F2 */ bnez $v0, .L800408C8
/* 01B100 8003FD00 30620001 */ andi $v0, $v1, 1
/* 01B104 8003FD04 1040002A */ beqz $v0, .L8003FDB0
/* 01B108 8003FD08 3C020040 */ lui $v0, 0x40
/* 01B10C 8003FD0C 00621024 */ and $v0, $v1, $v0
/* 01B110 8003FD10 14400020 */ bnez $v0, .L8003FD94
/* 01B114 8003FD14 00000000 */ nop
/* 01B118 8003FD18 8E8200C8 */ lw $v0, 0xc8($s4)
/* 01B11C 8003FD1C 16420015 */ bne $s2, $v0, .L8003FD74
/* 01B120 8003FD20 24033039 */ addiu $v1, $zero, 0x3039
/* 01B124 8003FD24 C640000C */ lwc1 $f0, 0xc($s2)
/* 01B128 8003FD28 4600040D */ trunc.w.s $f16, $f0
/* 01B12C 8003FD2C 44028000 */ mfc1 $v0, $f16
/* 01B130 8003FD30 00000000 */ nop
/* 01B134 8003FD34 A62200E0 */ sh $v0, 0xe0($s1)
/* 01B138 8003FD38 C64C0038 */ lwc1 $f12, 0x38($s2)
/* 01B13C 8003FD3C C64E0040 */ lwc1 $f14, 0x40($s2)
/* 01B140 8003FD40 8E860028 */ lw $a2, 0x28($s4)
/* 01B144 8003FD44 0C00A720 */ jal atan2
/* 01B148 8003FD48 8E870030 */ lw $a3, 0x30($s4)
/* 01B14C 8003FD4C E640000C */ swc1 $f0, 0xc($s2)
/* 01B150 8003FD50 0C0B11EA */ jal get_script_by_id
/* 01B154 8003FD54 8E240054 */ lw $a0, 0x54($s1)
/* 01B158 8003FD58 0040202D */ daddu $a0, $v0, $zero
/* 01B15C 8003FD5C 10800014 */ beqz $a0, .L8003FDB0
/* 01B160 8003FD60 00000000 */ nop
/* 01B164 8003FD64 0C0B11FA */ jal set_script_flags
/* 01B168 8003FD68 24050080 */ addiu $a1, $zero, 0x80
/* 01B16C 8003FD6C 0800FF6C */ j .L8003FDB0
/* 01B170 8003FD70 00000000 */ nop
.L8003FD74:
/* 01B174 8003FD74 862200E0 */ lh $v0, 0xe0($s1)
/* 01B178 8003FD78 10430006 */ beq $v0, $v1, .L8003FD94
/* 01B17C 8003FD7C 00000000 */ nop
/* 01B180 8003FD80 44820000 */ mtc1 $v0, $f0
/* 01B184 8003FD84 00000000 */ nop
/* 01B188 8003FD88 46800020 */ cvt.s.w $f0, $f0
/* 01B18C 8003FD8C E640000C */ swc1 $f0, 0xc($s2)
/* 01B190 8003FD90 A62300E0 */ sh $v1, 0xe0($s1)
.L8003FD94:
/* 01B194 8003FD94 0C0B11EA */ jal get_script_by_id
/* 01B198 8003FD98 8E240054 */ lw $a0, 0x54($s1)
/* 01B19C 8003FD9C 0040202D */ daddu $a0, $v0, $zero
/* 01B1A0 8003FDA0 10800003 */ beqz $a0, .L8003FDB0
/* 01B1A4 8003FDA4 00000000 */ nop
/* 01B1A8 8003FDA8 0C0B1220 */ jal clear_script_flags
/* 01B1AC 8003FDAC 24050080 */ addiu $a1, $zero, 0x80
.L8003FDB0:
/* 01B1B0 8003FDB0 8262000A */ lb $v0, 0xa($s3)
/* 01B1B4 8003FDB4 144002C4 */ bnez $v0, .L800408C8
/* 01B1B8 8003FDB8 24080001 */ addiu $t0, $zero, 1
/* 01B1BC 8003FDBC 3C028007 */ lui $v0, 0x8007
/* 01B1C0 8003FDC0 8C42419C */ lw $v0, 0x419c($v0)
/* 01B1C4 8003FDC4 80420074 */ lb $v0, 0x74($v0)
/* 01B1C8 8003FDC8 104802BF */ beq $v0, $t0, .L800408C8
/* 01B1CC 8003FDCC 3C030008 */ lui $v1, 8
/* 01B1D0 8003FDD0 8E820000 */ lw $v0, ($s4)
/* 01B1D4 8003FDD4 00431024 */ and $v0, $v0, $v1
/* 01B1D8 8003FDD8 144002BB */ bnez $v0, .L800408C8
/* 01B1DC 8003FDDC 00000000 */ nop
/* 01B1E0 8003FDE0 3C04800A */ lui $a0, 0x800a
/* 01B1E4 8003FDE4 8C84A650 */ lw $a0, -0x59b0($a0)
/* 01B1E8 8003FDE8 30820040 */ andi $v0, $a0, 0x40
/* 01B1EC 8003FDEC 144002B6 */ bnez $v0, .L800408C8
/* 01B1F0 8003FDF0 24020009 */ addiu $v0, $zero, 9
/* 01B1F4 8003FDF4 3C038011 */ lui $v1, 0x8011
/* 01B1F8 8003FDF8 8063EBB3 */ lb $v1, -0x144d($v1)
/* 01B1FC 8003FDFC 106202B2 */ beq $v1, $v0, .L800408C8
/* 01B200 8003FE00 00000000 */ nop
/* 01B204 8003FE04 8E220000 */ lw $v0, ($s1)
/* 01B208 8003FE08 00481024 */ and $v0, $v0, $t0
/* 01B20C 8003FE0C 144002AE */ bnez $v0, .L800408C8
/* 01B210 8003FE10 30820F00 */ andi $v0, $a0, 0xf00
/* 01B214 8003FE14 144002AC */ bnez $v0, .L800408C8
/* 01B218 8003FE18 00000000 */ nop
/* 01B21C 8003FE1C 0C04D07A */ jal func_801341E8
/* 01B220 8003FE20 00000000 */ nop
/* 01B224 8003FE24 144002A8 */ bnez $v0, .L800408C8
/* 01B228 8003FE28 3C021000 */ lui $v0, 0x1000
/* 01B22C 8003FE2C 8E230000 */ lw $v1, ($s1)
/* 01B230 8003FE30 00621824 */ and $v1, $v1, $v0
/* 01B234 8003FE34 14600007 */ bnez $v1, .L8003FE54
/* 01B238 8003FE38 00000000 */ nop
/* 01B23C 8003FE3C 0C03AD79 */ jal func_800EB5E4
/* 01B240 8003FE40 0240202D */ daddu $a0, $s2, $zero
/* 01B244 8003FE44 10400003 */ beqz $v0, .L8003FE54
/* 01B248 8003FE48 24020006 */ addiu $v0, $zero, 6
/* 01B24C 8003FE4C 0801015F */ j .L8004057C
/* 01B250 8003FE50 A2620005 */ sb $v0, 5($s3)
.L8003FE54:
/* 01B254 8003FE54 C6400038 */ lwc1 $f0, 0x38($s2)
/* 01B258 8003FE58 C65A003C */ lwc1 $f26, 0x3c($s2)
/* 01B25C 8003FE5C C658000C */ lwc1 $f24, 0xc($s2)
/* 01B260 8003FE60 C6420040 */ lwc1 $f2, 0x40($s2)
/* 01B264 8003FE64 E7A0002C */ swc1 $f0, 0x2c($sp)
/* 01B268 8003FE68 E7A20030 */ swc1 $f2, 0x30($sp)
/* 01B26C 8003FE6C 864300A8 */ lh $v1, 0xa8($s2)
/* 01B270 8003FE70 964200A6 */ lhu $v0, 0xa6($s2)
/* 01B274 8003FE74 4483E000 */ mtc1 $v1, $f28
/* 01B278 8003FE78 00000000 */ nop
/* 01B27C 8003FE7C 4680E720 */ cvt.s.w $f28, $f28
/* 01B280 8003FE80 00021400 */ sll $v0, $v0, 0x10
/* 01B284 8003FE84 00021C03 */ sra $v1, $v0, 0x10
/* 01B288 8003FE88 000217C2 */ srl $v0, $v0, 0x1f
/* 01B28C 8003FE8C 00621821 */ addu $v1, $v1, $v0
/* 01B290 8003FE90 00031843 */ sra $v1, $v1, 1
/* 01B294 8003FE94 8E2200DC */ lw $v0, 0xdc($s1)
/* 01B298 8003FE98 4483F000 */ mtc1 $v1, $f30
/* 01B29C 8003FE9C 00000000 */ nop
/* 01B2A0 8003FEA0 10400020 */ beqz $v0, .L8003FF24
/* 01B2A4 8003FEA4 4680F7A0 */ cvt.s.w $f30, $f30
/* 01B2A8 8003FEA8 8642008A */ lh $v0, 0x8a($s2)
/* 01B2AC 8003FEAC 3C014334 */ lui $at, 0x4334
/* 01B2B0 8003FEB0 44810000 */ mtc1 $at, $f0
/* 01B2B4 8003FEB4 4482C000 */ mtc1 $v0, $f24
/* 01B2B8 8003FEB8 00000000 */ nop
/* 01B2BC 8003FEBC 4680C620 */ cvt.s.w $f24, $f24
/* 01B2C0 8003FEC0 4600C03C */ c.lt.s $f24, $f0
/* 01B2C4 8003FEC4 00000000 */ nop
/* 01B2C8 8003FEC8 45000007 */ bc1f .L8003FEE8
/* 01B2CC 8003FECC 00000000 */ nop
/* 01B2D0 8003FED0 8FA80048 */ lw $t0, 0x48($sp)
/* 01B2D4 8003FED4 3C0142B4 */ lui $at, 0x42b4
/* 01B2D8 8003FED8 44818000 */ mtc1 $at, $f16
/* 01B2DC 8003FEDC C50C006C */ lwc1 $f12, 0x6c($t0)
/* 01B2E0 8003FEE0 0800FFBF */ j .L8003FEFC
/* 01B2E4 8003FEE4 46106301 */ sub.s $f12, $f12, $f16
.L8003FEE8:
/* 01B2E8 8003FEE8 8FA80048 */ lw $t0, 0x48($sp)
/* 01B2EC 8003FEEC 3C0142B4 */ lui $at, 0x42b4
/* 01B2F0 8003FEF0 44818000 */ mtc1 $at, $f16
/* 01B2F4 8003FEF4 C50C006C */ lwc1 $f12, 0x6c($t0)
/* 01B2F8 8003FEF8 46106300 */ add.s $f12, $f12, $f16
.L8003FEFC:
/* 01B2FC 8003FEFC 0C00A6C9 */ jal clamp_angle
/* 01B300 8003FF00 00000000 */ nop
/* 01B304 8003FF04 46000606 */ mov.s $f24, $f0
/* 01B308 8003FF08 27A4002C */ addiu $a0, $sp, 0x2c
/* 01B30C 8003FF0C C63200DC */ lwc1 $f18, 0xdc($s1)
/* 01B310 8003FF10 468094A0 */ cvt.s.w $f18, $f18
/* 01B314 8003FF14 4407C000 */ mfc1 $a3, $f24
/* 01B318 8003FF18 44069000 */ mfc1 $a2, $f18
/* 01B31C 8003FF1C 0C00A7E7 */ jal add_vec2D_polar
/* 01B320 8003FF20 27A50030 */ addiu $a1, $sp, 0x30
.L8003FF24:
/* 01B324 8003FF24 C7A0002C */ lwc1 $f0, 0x2c($sp)
/* 01B328 8003FF28 C7B00050 */ lwc1 $f16, 0x50($sp)
/* 01B32C 8003FF2C 46100001 */ sub.s $f0, $f0, $f16
/* 01B330 8003FF30 46000082 */ mul.s $f2, $f0, $f0
/* 01B334 8003FF34 00000000 */ nop
/* 01B338 8003FF38 C7B20058 */ lwc1 $f18, 0x58($sp)
/* 01B33C 8003FF3C C7A00030 */ lwc1 $f0, 0x30($sp)
/* 01B340 8003FF40 46120001 */ sub.s $f0, $f0, $f18
/* 01B344 8003FF44 46000002 */ mul.s $f0, $f0, $f0
/* 01B348 8003FF48 00000000 */ nop
/* 01B34C 8003FF4C 46001300 */ add.s $f12, $f2, $f0
/* 01B350 8003FF50 46006004 */ sqrt.s $f0, $f12
/* 01B354 8003FF54 46000032 */ c.eq.s $f0, $f0
/* 01B358 8003FF58 00000000 */ nop
/* 01B35C 8003FF5C 45010003 */ bc1t .L8003FF6C
/* 01B360 8003FF60 00000000 */ nop
/* 01B364 8003FF64 0C0187BC */ jal sqrtf
/* 01B368 8003FF68 00000000 */ nop
.L8003FF6C:
/* 01B36C 8003FF6C 928200B4 */ lbu $v0, 0xb4($s4)
/* 01B370 8003FF70 2442FFFD */ addiu $v0, $v0, -3
/* 01B374 8003FF74 00021600 */ sll $v0, $v0, 0x18
/* 01B378 8003FF78 00021E03 */ sra $v1, $v0, 0x18
/* 01B37C 8003FF7C 2C620010 */ sltiu $v0, $v1, 0x10
/* 01B380 8003FF80 10400184 */ beqz $v0, .L80040594
/* 01B384 8003FF84 46000586 */ mov.s $f22, $f0
/* 01B388 8003FF88 00031080 */ sll $v0, $v1, 2
/* 01B38C 8003FF8C 3C01800A */ lui $at, 0x800a
/* 01B390 8003FF90 00220821 */ addu $at, $at, $v0
/* 01B394 8003FF94 8C2285F8 */ lw $v0, -0x7a08($at)
/* 01B398 8003FF98 00400008 */ jr $v0
/* 01B39C 8003FF9C 00000000 */ nop
/* 01B3A0 8003FFA0 C7B00050 */ lwc1 $f16, 0x50($sp)
/* 01B3A4 8003FFA4 C68C00A8 */ lwc1 $f12, 0xa8($s4)
/* 01B3A8 8003FFA8 C7B20058 */ lwc1 $f18, 0x58($sp)
/* 01B3AC 8003FFAC E7B00034 */ swc1 $f16, 0x34($sp)
/* 01B3B0 8003FFB0 0C00A6C9 */ jal clamp_angle
/* 01B3B4 8003FFB4 E7B20038 */ swc1 $f18, 0x38($sp)
/* 01B3B8 8003FFB8 3C014334 */ lui $at, 0x4334
/* 01B3BC 8003FFBC 44811000 */ mtc1 $at, $f2
/* 01B3C0 8003FFC0 C7B40054 */ lwc1 $f20, 0x54($sp)
/* 01B3C4 8003FFC4 4602003C */ c.lt.s $f0, $f2
/* 01B3C8 8003FFC8 00000000 */ nop
/* 01B3CC 8003FFCC 45000010 */ bc1f .L80040010
/* 01B3D0 8003FFD0 00000000 */ nop
/* 01B3D4 8003FFD4 8FA80048 */ lw $t0, 0x48($sp)
/* 01B3D8 8003FFD8 3C0142B4 */ lui $at, 0x42b4
/* 01B3DC 8003FFDC 44818000 */ mtc1 $at, $f16
/* 01B3E0 8003FFE0 C50C006C */ lwc1 $f12, 0x6c($t0)
/* 01B3E4 8003FFE4 0C00A6C9 */ jal clamp_angle
/* 01B3E8 8003FFE8 46106301 */ sub.s $f12, $f12, $f16
/* 01B3EC 8003FFEC 8E8200A4 */ lw $v0, 0xa4($s4)
/* 01B3F0 8003FFF0 3C030100 */ lui $v1, 0x100
/* 01B3F4 8003FFF4 00431024 */ and $v0, $v0, $v1
/* 01B3F8 8003FFF8 10400017 */ beqz $v0, .L80040058
/* 01B3FC 8003FFFC 27A40034 */ addiu $a0, $sp, 0x34
/* 01B400 80040000 3C0141F0 */ lui $at, 0x41f0
/* 01B404 80040004 44816000 */ mtc1 $at, $f12
/* 01B408 80040008 08010013 */ j .L8004004C
/* 01B40C 8004000C 460C0300 */ add.s $f12, $f0, $f12
.L80040010:
/* 01B410 80040010 8FA80048 */ lw $t0, 0x48($sp)
/* 01B414 80040014 3C0142B4 */ lui $at, 0x42b4
/* 01B418 80040018 44818000 */ mtc1 $at, $f16
/* 01B41C 8004001C C50C006C */ lwc1 $f12, 0x6c($t0)
/* 01B420 80040020 0C00A6C9 */ jal clamp_angle
/* 01B424 80040024 46106300 */ add.s $f12, $f12, $f16
/* 01B428 80040028 8E8200A4 */ lw $v0, 0xa4($s4)
/* 01B42C 8004002C 3C030100 */ lui $v1, 0x100
/* 01B430 80040030 00431024 */ and $v0, $v0, $v1
/* 01B434 80040034 10400008 */ beqz $v0, .L80040058
/* 01B438 80040038 27A40034 */ addiu $a0, $sp, 0x34
/* 01B43C 8004003C 3C0141F0 */ lui $at, 0x41f0
/* 01B440 80040040 44816000 */ mtc1 $at, $f12
/* 01B444 80040044 00000000 */ nop
/* 01B448 80040048 460C0301 */ sub.s $f12, $f0, $f12
.L8004004C:
/* 01B44C 8004004C 0C00A6C9 */ jal clamp_angle
/* 01B450 80040050 00000000 */ nop
/* 01B454 80040054 27A40034 */ addiu $a0, $sp, 0x34
.L80040058:
/* 01B458 80040058 3C0641C0 */ lui $a2, 0x41c0
/* 01B45C 8004005C 44070000 */ mfc1 $a3, $f0
/* 01B460 80040060 0C00A7E7 */ jal add_vec2D_polar
/* 01B464 80040064 27A50038 */ addiu $a1, $sp, 0x38
/* 01B468 80040068 C7A2002C */ lwc1 $f2, 0x2c($sp)
/* 01B46C 8004006C C7A00034 */ lwc1 $f0, 0x34($sp)
/* 01B470 80040070 46001001 */ sub.s $f0, $f2, $f0
/* 01B474 80040074 46000102 */ mul.s $f4, $f0, $f0
/* 01B478 80040078 00000000 */ nop
/* 01B47C 8004007C C7A20030 */ lwc1 $f2, 0x30($sp)
/* 01B480 80040080 C7A00038 */ lwc1 $f0, 0x38($sp)
/* 01B484 80040084 46001001 */ sub.s $f0, $f2, $f0
/* 01B488 80040088 46000002 */ mul.s $f0, $f0, $f0
/* 01B48C 8004008C 00000000 */ nop
/* 01B490 80040090 46002300 */ add.s $f12, $f4, $f0
/* 01B494 80040094 46006004 */ sqrt.s $f0, $f12
/* 01B498 80040098 46000032 */ c.eq.s $f0, $f0
/* 01B49C 8004009C 00000000 */ nop
/* 01B4A0 800400A0 45010003 */ bc1t .L800400B0
/* 01B4A4 800400A4 00000000 */ nop
/* 01B4A8 800400A8 0C0187BC */ jal sqrtf
/* 01B4AC 800400AC 00000000 */ nop
.L800400B0:
/* 01B4B0 800400B0 8E220000 */ lw $v0, ($s1)
/* 01B4B4 800400B4 3C030400 */ lui $v1, 0x400
/* 01B4B8 800400B8 00431024 */ and $v0, $v0, $v1
/* 01B4BC 800400BC 14400135 */ bnez $v0, .L80040594
/* 01B4C0 800400C0 46000586 */ mov.s $f22, $f0
/* 01B4C4 800400C4 8E820000 */ lw $v0, ($s4)
/* 01B4C8 800400C8 3C030100 */ lui $v1, 0x100
/* 01B4CC 800400CC 00431024 */ and $v0, $v0, $v1
/* 01B4D0 800400D0 10400130 */ beqz $v0, .L80040594
/* 01B4D4 800400D4 00000000 */ nop
/* 01B4D8 800400D8 3C014160 */ lui $at, 0x4160
/* 01B4DC 800400DC 44819000 */ mtc1 $at, $f18
/* 01B4E0 800400E0 00000000 */ nop
/* 01B4E4 800400E4 461E9000 */ add.s $f0, $f18, $f30
/* 01B4E8 800400E8 4616003E */ c.le.s $f0, $f22
/* 01B4EC 800400EC 00000000 */ nop
/* 01B4F0 800400F0 45010128 */ bc1t .L80040594
/* 01B4F4 800400F4 00000000 */ nop
/* 01B4F8 800400F8 461CD000 */ add.s $f0, $f26, $f28
/* 01B4FC 800400FC 4614003C */ c.lt.s $f0, $f20
/* 01B500 80040100 00000000 */ nop
/* 01B504 80040104 45010123 */ bc1t .L80040594
/* 01B508 80040108 00000000 */ nop
/* 01B50C 8004010C 3C014190 */ lui $at, 0x4190
/* 01B510 80040110 44818000 */ mtc1 $at, $f16
/* 01B514 80040114 00000000 */ nop
/* 01B518 80040118 4610A000 */ add.s $f0, $f20, $f16
/* 01B51C 8004011C 461A003C */ c.lt.s $f0, $f26
/* 01B520 80040120 00000000 */ nop
/* 01B524 80040124 4501011B */ bc1t .L80040594
/* 01B528 80040128 00000000 */ nop
/* 01B52C 8004012C 8FA60050 */ lw $a2, 0x50($sp)
/* 01B530 80040130 8FA70058 */ lw $a3, 0x58($sp)
/* 01B534 80040134 C7AC002C */ lwc1 $f12, 0x2c($sp)
/* 01B538 80040138 C7AE0030 */ lwc1 $f14, 0x30($sp)
/* 01B53C 8004013C E7BA0040 */ swc1 $f26, 0x40($sp)
/* 01B540 80040140 E7AC003C */ swc1 $f12, 0x3c($sp)
/* 01B544 80040144 0C00A720 */ jal atan2
/* 01B548 80040148 E7AE0044 */ swc1 $f14, 0x44($sp)
/* 01B54C 8004014C 3C040001 */ lui $a0, 1
/* 01B550 80040150 03C0302D */ daddu $a2, $fp, $zero
/* 01B554 80040154 02E0382D */ daddu $a3, $s7, $zero
/* 01B558 80040158 8FA50064 */ lw $a1, 0x64($sp)
/* 01B55C 8004015C 461EF500 */ add.s $f20, $f30, $f30
/* 01B560 80040160 E7B60010 */ swc1 $f22, 0x10($sp)
/* 01B564 80040164 E7A00014 */ swc1 $f0, 0x14($sp)
/* 01B568 80040168 E7BC0018 */ swc1 $f28, 0x18($sp)
/* 01B56C 8004016C 0C0376B9 */ jal func_800DDAE4
/* 01B570 80040170 E7B4001C */ swc1 $f20, 0x1c($sp)
/* 01B574 80040174 10400016 */ beqz $v0, .L800401D0
/* 01B578 80040178 00000000 */ nop
/* 01B57C 8004017C C7AC0050 */ lwc1 $f12, 0x50($sp)
/* 01B580 80040180 8FA6002C */ lw $a2, 0x2c($sp)
/* 01B584 80040184 8FA70030 */ lw $a3, 0x30($sp)
/* 01B588 80040188 C7AE0058 */ lwc1 $f14, 0x58($sp)
/* 01B58C 8004018C C7B20054 */ lwc1 $f18, 0x54($sp)
/* 01B590 80040190 46007406 */ mov.s $f16, $f14
/* 01B594 80040194 E7AC003C */ swc1 $f12, 0x3c($sp)
/* 01B598 80040198 E7B20040 */ swc1 $f18, 0x40($sp)
/* 01B59C 8004019C 0C00A720 */ jal atan2
/* 01B5A0 800401A0 E7B00044 */ swc1 $f16, 0x44($sp)
/* 01B5A4 800401A4 3C040001 */ lui $a0, 1
/* 01B5A8 800401A8 03C0302D */ daddu $a2, $fp, $zero
/* 01B5AC 800401AC 8FA50064 */ lw $a1, 0x64($sp)
/* 01B5B0 800401B0 02E0382D */ daddu $a3, $s7, $zero
/* 01B5B4 800401B4 E7B60010 */ swc1 $f22, 0x10($sp)
/* 01B5B8 800401B8 E7A00014 */ swc1 $f0, 0x14($sp)
/* 01B5BC 800401BC E7BC0018 */ swc1 $f28, 0x18($sp)
/* 01B5C0 800401C0 0C0376B9 */ jal func_800DDAE4
/* 01B5C4 800401C4 E7B4001C */ swc1 $f20, 0x1c($sp)
/* 01B5C8 800401C8 144000F2 */ bnez $v0, .L80040594
/* 01B5CC 800401CC 00000000 */ nop
.L800401D0:
/* 01B5D0 800401D0 82220007 */ lb $v0, 7($s1)
/* 01B5D4 800401D4 1040000F */ beqz $v0, .L80040214
/* 01B5D8 800401D8 00000000 */ nop
/* 01B5DC 800401DC 86220012 */ lh $v0, 0x12($s1)
/* 01B5E0 800401E0 4482D000 */ mtc1 $v0, $f26
/* 01B5E4 800401E4 00000000 */ nop
/* 01B5E8 800401E8 4680D6A0 */ cvt.s.w $f26, $f26
/* 01B5EC 800401EC 86220010 */ lh $v0, 0x10($s1)
/* 01B5F0 800401F0 86230014 */ lh $v1, 0x14($s1)
/* 01B5F4 800401F4 44820000 */ mtc1 $v0, $f0
/* 01B5F8 800401F8 00000000 */ nop
/* 01B5FC 800401FC 46800020 */ cvt.s.w $f0, $f0
/* 01B600 80040200 E7A0002C */ swc1 $f0, 0x2c($sp)
/* 01B604 80040204 44830000 */ mtc1 $v1, $f0
/* 01B608 80040208 00000000 */ nop
/* 01B60C 8004020C 46800020 */ cvt.s.w $f0, $f0
/* 01B610 80040210 E7A00030 */ swc1 $f0, 0x30($sp)
.L80040214:
/* 01B614 80040214 C7AC0050 */ lwc1 $f12, 0x50($sp)
/* 01B618 80040218 C7AE0058 */ lwc1 $f14, 0x58($sp)
/* 01B61C 8004021C 8FA6002C */ lw $a2, 0x2c($sp)
/* 01B620 80040220 8FA70030 */ lw $a3, 0x30($sp)
/* 01B624 80040224 0C00A720 */ jal atan2
/* 01B628 80040228 0000802D */ daddu $s0, $zero, $zero
/* 01B62C 8004022C C7AE005C */ lwc1 $f14, 0x5c($sp)
/* 01B630 80040230 0C00A70A */ jal get_clamped_angle_diff
/* 01B634 80040234 46000306 */ mov.s $f12, $f0
/* 01B638 80040238 C7AC002C */ lwc1 $f12, 0x2c($sp)
/* 01B63C 8004023C C7AE0030 */ lwc1 $f14, 0x30($sp)
/* 01B640 80040240 8FA60050 */ lw $a2, 0x50($sp)
/* 01B644 80040244 8FA70058 */ lw $a3, 0x58($sp)
/* 01B648 80040248 0C00A720 */ jal atan2
/* 01B64C 8004024C 46000505 */ abs.s $f20, $f0
/* 01B650 80040250 46000306 */ mov.s $f12, $f0
/* 01B654 80040254 0C00A70A */ jal get_clamped_angle_diff
/* 01B658 80040258 4600C386 */ mov.s $f14, $f24
/* 01B65C 8004025C 3C0142B4 */ lui $at, 0x42b4
/* 01B660 80040260 44819000 */ mtc1 $at, $f18
/* 01B664 80040264 3C0142B4 */ lui $at, 0x42b4
/* 01B668 80040268 44818000 */ mtc1 $at, $f16
/* 01B66C 8004026C 00000000 */ nop
/* 01B670 80040270 4610A03C */ c.lt.s $f20, $f16
/* 01B674 80040274 00000000 */ nop
/* 01B678 80040278 45000008 */ bc1f .L8004029C
/* 01B67C 8004027C 46000005 */ abs.s $f0, $f0
/* 01B680 80040280 4600803E */ c.le.s $f16, $f0
/* 01B684 80040284 00000000 */ nop
/* 01B688 80040288 45030004 */ bc1tl .L8004029C
/* 01B68C 8004028C 24100001 */ addiu $s0, $zero, 1
/* 01B690 80040290 3C0142B4 */ lui $at, 0x42b4
/* 01B694 80040294 44819000 */ mtc1 $at, $f18
/* 01B698 80040298 00000000 */ nop
.L8004029C:
/* 01B69C 8004029C 4614903E */ c.le.s $f18, $f20
/* 01B6A0 800402A0 00000000 */ nop
/* 01B6A4 800402A4 45000005 */ bc1f .L800402BC
/* 01B6A8 800402A8 00000000 */ nop
/* 01B6AC 800402AC 4612003C */ c.lt.s $f0, $f18
/* 01B6B0 800402B0 00000000 */ nop
/* 01B6B4 800402B4 45030001 */ bc1tl .L800402BC
/* 01B6B8 800402B8 0000802D */ daddu $s0, $zero, $zero
.L800402BC:
/* 01B6BC 800402BC 3C0142B4 */ lui $at, 0x42b4
/* 01B6C0 800402C0 44818000 */ mtc1 $at, $f16
/* 01B6C4 800402C4 00000000 */ nop
/* 01B6C8 800402C8 4610A03C */ c.lt.s $f20, $f16
/* 01B6CC 800402CC 00000000 */ nop
/* 01B6D0 800402D0 45000005 */ bc1f .L800402E8
/* 01B6D4 800402D4 00000000 */ nop
/* 01B6D8 800402D8 4610003C */ c.lt.s $f0, $f16
/* 01B6DC 800402DC 00000000 */ nop
/* 01B6E0 800402E0 45030001 */ bc1tl .L800402E8
/* 01B6E4 800402E4 24100001 */ addiu $s0, $zero, 1
.L800402E8:
/* 01B6E8 800402E8 120000AA */ beqz $s0, .L80040594
/* 01B6EC 800402EC 240400E1 */ addiu $a0, $zero, 0xe1
/* 01B6F0 800402F0 8E860028 */ lw $a2, 0x28($s4)
/* 01B6F4 800402F4 8E87002C */ lw $a3, 0x2c($s4)
/* 01B6F8 800402F8 C6800030 */ lwc1 $f0, 0x30($s4)
/* 01B6FC 800402FC 0000282D */ daddu $a1, $zero, $zero
/* 01B700 80040300 0C052757 */ jal play_sound_at_position
/* 01B704 80040304 E7A00010 */ swc1 $f0, 0x10($sp)
/* 01B708 80040308 3C038011 */ lui $v1, 0x8011
/* 01B70C 8004030C 9063F291 */ lbu $v1, -0xd6f($v1)
/* 01B710 80040310 24020004 */ addiu $v0, $zero, 4
/* 01B714 80040314 A2620005 */ sb $v0, 5($s3)
/* 01B718 80040318 0801015F */ j .L8004057C
/* 01B71C 8004031C A2630006 */ sb $v1, 6($s3)
/* 01B720 80040320 C7B00050 */ lwc1 $f16, 0x50($sp)
/* 01B724 80040324 C7B20058 */ lwc1 $f18, 0x58($sp)
/* 01B728 80040328 E7B00034 */ swc1 $f16, 0x34($sp)
/* 01B72C 8004032C E7B20038 */ swc1 $f18, 0x38($sp)
/* 01B730 80040330 8E220000 */ lw $v0, ($s1)
/* 01B734 80040334 3C030200 */ lui $v1, 0x200
/* 01B738 80040338 00431024 */ and $v0, $v0, $v1
/* 01B73C 8004033C 14400095 */ bnez $v0, .L80040594
/* 01B740 80040340 00000000 */ nop
/* 01B744 80040344 3C014160 */ lui $at, 0x4160
/* 01B748 80040348 44818000 */ mtc1 $at, $f16
/* 01B74C 8004034C 00000000 */ nop
/* 01B750 80040350 461E8000 */ add.s $f0, $f16, $f30
/* 01B754 80040354 4616003E */ c.le.s $f0, $f22
/* 01B758 80040358 00000000 */ nop
/* 01B75C 8004035C 4501015A */ bc1t .L800408C8
/* 01B760 80040360 00000000 */ nop
/* 01B764 80040364 461CD600 */ add.s $f24, $f26, $f28
/* 01B768 80040368 C7B20054 */ lwc1 $f18, 0x54($sp)
/* 01B76C 8004036C 4612C03C */ c.lt.s $f24, $f18
/* 01B770 80040370 00000000 */ nop
/* 01B774 80040374 45010154 */ bc1t .L800408C8
/* 01B778 80040378 00000000 */ nop
/* 01B77C 8004037C 3C014214 */ lui $at, 0x4214
/* 01B780 80040380 44818000 */ mtc1 $at, $f16
/* 01B784 80040384 00000000 */ nop
/* 01B788 80040388 46109000 */ add.s $f0, $f18, $f16
/* 01B78C 8004038C 461A003C */ c.lt.s $f0, $f26
/* 01B790 80040390 00000000 */ nop
/* 01B794 80040394 4501014C */ bc1t .L800408C8
/* 01B798 80040398 00000000 */ nop
/* 01B79C 8004039C 8FA60050 */ lw $a2, 0x50($sp)
/* 01B7A0 800403A0 8FA70058 */ lw $a3, 0x58($sp)
/* 01B7A4 800403A4 C7AC002C */ lwc1 $f12, 0x2c($sp)
/* 01B7A8 800403A8 C7AE0030 */ lwc1 $f14, 0x30($sp)
/* 01B7AC 800403AC E7BA0040 */ swc1 $f26, 0x40($sp)
/* 01B7B0 800403B0 E7AC003C */ swc1 $f12, 0x3c($sp)
/* 01B7B4 800403B4 0C00A720 */ jal atan2
/* 01B7B8 800403B8 E7AE0044 */ swc1 $f14, 0x44($sp)
/* 01B7BC 800403BC 3C040001 */ lui $a0, 1
/* 01B7C0 800403C0 03C0302D */ daddu $a2, $fp, $zero
/* 01B7C4 800403C4 02E0382D */ daddu $a3, $s7, $zero
/* 01B7C8 800403C8 8FA50064 */ lw $a1, 0x64($sp)
/* 01B7CC 800403CC 461EF500 */ add.s $f20, $f30, $f30
/* 01B7D0 800403D0 E7B60010 */ swc1 $f22, 0x10($sp)
/* 01B7D4 800403D4 E7A00014 */ swc1 $f0, 0x14($sp)
/* 01B7D8 800403D8 E7BC0018 */ swc1 $f28, 0x18($sp)
/* 01B7DC 800403DC 0C0376B9 */ jal func_800DDAE4
/* 01B7E0 800403E0 E7B4001C */ swc1 $f20, 0x1c($sp)
/* 01B7E4 800403E4 10400016 */ beqz $v0, .L80040440
/* 01B7E8 800403E8 00000000 */ nop
/* 01B7EC 800403EC C7AC0050 */ lwc1 $f12, 0x50($sp)
/* 01B7F0 800403F0 8FA6002C */ lw $a2, 0x2c($sp)
/* 01B7F4 800403F4 8FA70030 */ lw $a3, 0x30($sp)
/* 01B7F8 800403F8 C7AE0058 */ lwc1 $f14, 0x58($sp)
/* 01B7FC 800403FC C7B20054 */ lwc1 $f18, 0x54($sp)
/* 01B800 80040400 46007406 */ mov.s $f16, $f14
/* 01B804 80040404 E7AC003C */ swc1 $f12, 0x3c($sp)
/* 01B808 80040408 E7B20040 */ swc1 $f18, 0x40($sp)
/* 01B80C 8004040C 0C00A720 */ jal atan2
/* 01B810 80040410 E7B00044 */ swc1 $f16, 0x44($sp)
/* 01B814 80040414 3C040001 */ lui $a0, 1
/* 01B818 80040418 03C0302D */ daddu $a2, $fp, $zero
/* 01B81C 8004041C 8FA50064 */ lw $a1, 0x64($sp)
/* 01B820 80040420 02E0382D */ daddu $a3, $s7, $zero
/* 01B824 80040424 E7B60010 */ swc1 $f22, 0x10($sp)
/* 01B828 80040428 E7A00014 */ swc1 $f0, 0x14($sp)
/* 01B82C 8004042C E7BC0018 */ swc1 $f28, 0x18($sp)
/* 01B830 80040430 0C0376B9 */ jal func_800DDAE4
/* 01B834 80040434 E7B4001C */ swc1 $f20, 0x1c($sp)
/* 01B838 80040438 14400056 */ bnez $v0, .L80040594
/* 01B83C 8004043C 00000000 */ nop
.L80040440:
/* 01B840 80040440 3C014214 */ lui $at, 0x4214
/* 01B844 80040444 44819000 */ mtc1 $at, $f18
/* 01B848 80040448 3C013F00 */ lui $at, 0x3f00
/* 01B84C 8004044C 44818000 */ mtc1 $at, $f16
/* 01B850 80040450 00000000 */ nop
/* 01B854 80040454 46109002 */ mul.s $f0, $f18, $f16
/* 01B858 80040458 00000000 */ nop
/* 01B85C 8004045C C7B20054 */ lwc1 $f18, 0x54($sp)
/* 01B860 80040460 46009000 */ add.s $f0, $f18, $f0
/* 01B864 80040464 4600C03C */ c.lt.s $f24, $f0
/* 01B868 80040468 00000000 */ nop
/* 01B86C 8004046C 45000015 */ bc1f .L800404C4
/* 01B870 80040470 0000802D */ daddu $s0, $zero, $zero
/* 01B874 80040474 928300B4 */ lbu $v1, 0xb4($s4)
/* 01B878 80040478 2462FFF8 */ addiu $v0, $v1, -8
/* 01B87C 8004047C 2C420004 */ sltiu $v0, $v0, 4
/* 01B880 80040480 54400010 */ bnel $v0, $zero, .L800404C4
/* 01B884 80040484 24100001 */ addiu $s0, $zero, 1
/* 01B888 80040488 00031600 */ sll $v0, $v1, 0x18
/* 01B88C 8004048C 00021E03 */ sra $v1, $v0, 0x18
/* 01B890 80040490 2402000D */ addiu $v0, $zero, 0xd
/* 01B894 80040494 10620007 */ beq $v1, $v0, .L800404B4
/* 01B898 80040498 2402000E */ addiu $v0, $zero, 0xe
/* 01B89C 8004049C 10620005 */ beq $v1, $v0, .L800404B4
/* 01B8A0 800404A0 2402000F */ addiu $v0, $zero, 0xf
/* 01B8A4 800404A4 10620003 */ beq $v1, $v0, .L800404B4
/* 01B8A8 800404A8 24020010 */ addiu $v0, $zero, 0x10
/* 01B8AC 800404AC 14620005 */ bne $v1, $v0, .L800404C4
/* 01B8B0 800404B0 00000000 */ nop
.L800404B4:
/* 01B8B4 800404B4 24100001 */ addiu $s0, $zero, 1
/* 01B8B8 800404B8 3C013F00 */ lui $at, 0x3f00
/* 01B8BC 800404BC 44818000 */ mtc1 $at, $f16
/* 01B8C0 800404C0 00000000 */ nop
.L800404C4:
/* 01B8C4 800404C4 4610E002 */ mul.s $f0, $f28, $f16
/* 01B8C8 800404C8 00000000 */ nop
/* 01B8CC 800404CC C7B20054 */ lwc1 $f18, 0x54($sp)
/* 01B8D0 800404D0 3C014214 */ lui $at, 0x4214
/* 01B8D4 800404D4 44818000 */ mtc1 $at, $f16
/* 01B8D8 800404D8 00000000 */ nop
/* 01B8DC 800404DC 46109080 */ add.s $f2, $f18, $f16
/* 01B8E0 800404E0 4600D000 */ add.s $f0, $f26, $f0
/* 01B8E4 800404E4 4600103C */ c.lt.s $f2, $f0
/* 01B8E8 800404E8 00000000 */ nop
/* 01B8EC 800404EC 45030001 */ bc1tl .L800404F4
/* 01B8F0 800404F0 0000802D */ daddu $s0, $zero, $zero
.L800404F4:
/* 01B8F4 800404F4 12000027 */ beqz $s0, .L80040594
/* 01B8F8 800404F8 00000000 */ nop
/* 01B8FC 800404FC 3C028011 */ lui $v0, 0x8011
/* 01B900 80040500 8042F290 */ lb $v0, -0xd70($v0)
/* 01B904 80040504 0440FD12 */ bltz $v0, .L8003F950
/* 01B908 80040508 24030002 */ addiu $v1, $zero, 2
/* 01B90C 8004050C 928200B4 */ lbu $v0, 0xb4($s4)
/* 01B910 80040510 A2630005 */ sb $v1, 5($s3)
/* 01B914 80040514 2442FFFD */ addiu $v0, $v0, -3
/* 01B918 80040518 00021600 */ sll $v0, $v0, 0x18
/* 01B91C 8004051C 00021E03 */ sra $v1, $v0, 0x18
/* 01B920 80040520 2C62000E */ sltiu $v0, $v1, 0xe
/* 01B924 80040524 1040000D */ beqz $v0, .L8004055C
/* 01B928 80040528 00031080 */ sll $v0, $v1, 2
/* 01B92C 8004052C 3C01800A */ lui $at, 0x800a
/* 01B930 80040530 00220821 */ addu $at, $at, $v0
/* 01B934 80040534 8C228638 */ lw $v0, -0x79c8($at)
/* 01B938 80040538 00400008 */ jr $v0
/* 01B93C 8004053C 00000000 */ nop
/* 01B940 80040540 08010157 */ j .L8004055C
/* 01B944 80040544 A2600006 */ sb $zero, 6($s3)
/* 01B948 80040548 24080001 */ addiu $t0, $zero, 1
/* 01B94C 8004054C 08010157 */ j .L8004055C
/* 01B950 80040550 A2680006 */ sb $t0, 6($s3)
/* 01B954 80040554 24020002 */ addiu $v0, $zero, 2
/* 01B958 80040558 A2620006 */ sb $v0, 6($s3)
.L8004055C:
/* 01B95C 8004055C 240400E1 */ addiu $a0, $zero, 0xe1
/* 01B960 80040560 8E860028 */ lw $a2, 0x28($s4)
/* 01B964 80040564 8E87002C */ lw $a3, 0x2c($s4)
/* 01B968 80040568 C6800030 */ lwc1 $f0, 0x30($s4)
/* 01B96C 8004056C 0000282D */ daddu $a1, $zero, $zero
/* 01B970 80040570 0C052757 */ jal play_sound_at_position
/* 01B974 80040574 E7A00010 */ swc1 $f0, 0x10($sp)
/* 01B978 80040578 24020002 */ addiu $v0, $zero, 2
.L8004057C:
/* 01B97C 8004057C A2220005 */ sb $v0, 5($s1)
/* 01B980 80040580 24080001 */ addiu $t0, $zero, 1
/* 01B984 80040584 AE760088 */ sw $s6, 0x88($s3)
/* 01B988 80040588 AE71008C */ sw $s1, 0x8c($s3)
/* 01B98C 8004058C 0801023D */ j .L800408F4
/* 01B990 80040590 A2680004 */ sb $t0, 4($s3)
.L80040594:
/* 01B994 80040594 8E220000 */ lw $v0, ($s1)
/* 01B998 80040598 3C030100 */ lui $v1, 0x100
/* 01B99C 8004059C 00431024 */ and $v0, $v0, $v1
/* 01B9A0 800405A0 144000C9 */ bnez $v0, .L800408C8
/* 01B9A4 800405A4 00000000 */ nop
/* 01B9A8 800405A8 C7A0002C */ lwc1 $f0, 0x2c($sp)
/* 01B9AC 800405AC C7B00050 */ lwc1 $f16, 0x50($sp)
/* 01B9B0 800405B0 46100001 */ sub.s $f0, $f0, $f16
/* 01B9B4 800405B4 46000082 */ mul.s $f2, $f0, $f0
/* 01B9B8 800405B8 00000000 */ nop
/* 01B9BC 800405BC C7B20058 */ lwc1 $f18, 0x58($sp)
/* 01B9C0 800405C0 C7A00030 */ lwc1 $f0, 0x30($sp)
/* 01B9C4 800405C4 46120001 */ sub.s $f0, $f0, $f18
/* 01B9C8 800405C8 46000002 */ mul.s $f0, $f0, $f0
/* 01B9CC 800405CC 00000000 */ nop
/* 01B9D0 800405D0 46001300 */ add.s $f12, $f2, $f0
/* 01B9D4 800405D4 46006104 */ sqrt.s $f4, $f12
/* 01B9D8 800405D8 46042032 */ c.eq.s $f4, $f4
/* 01B9DC 800405DC 00000000 */ nop
/* 01B9E0 800405E0 45010004 */ bc1t .L800405F4
/* 01B9E4 800405E4 00000000 */ nop
/* 01B9E8 800405E8 0C0187BC */ jal sqrtf
/* 01B9EC 800405EC 00000000 */ nop
/* 01B9F0 800405F0 46000106 */ mov.s $f4, $f0
.L800405F4:
/* 01B9F4 800405F4 3C014160 */ lui $at, 0x4160
/* 01B9F8 800405F8 44818000 */ mtc1 $at, $f16
/* 01B9FC 800405FC 00000000 */ nop
/* 01BA00 80040600 461E8000 */ add.s $f0, $f16, $f30
/* 01BA04 80040604 3C01800A */ lui $at, 0x800a
/* 01BA08 80040608 D4228670 */ ldc1 $f2, -0x7990($at)
/* 01BA0C 8004060C 46000021 */ cvt.d.s $f0, $f0
/* 01BA10 80040610 46220002 */ mul.d $f0, $f0, $f2
/* 01BA14 80040614 00000000 */ nop
/* 01BA18 80040618 46002586 */ mov.s $f22, $f4
/* 01BA1C 8004061C 4600B0A1 */ cvt.d.s $f2, $f22
/* 01BA20 80040620 4622003E */ c.le.d $f0, $f2
/* 01BA24 80040624 00000000 */ nop
/* 01BA28 80040628 450100A7 */ bc1t .L800408C8
/* 01BA2C 8004062C 00000000 */ nop
/* 01BA30 80040630 461CD000 */ add.s $f0, $f26, $f28
/* 01BA34 80040634 C7B20054 */ lwc1 $f18, 0x54($sp)
/* 01BA38 80040638 4612003C */ c.lt.s $f0, $f18
/* 01BA3C 8004063C 00000000 */ nop
/* 01BA40 80040640 450100A1 */ bc1t .L800408C8
/* 01BA44 80040644 00000000 */ nop
/* 01BA48 80040648 3C014214 */ lui $at, 0x4214
/* 01BA4C 8004064C 44818000 */ mtc1 $at, $f16
/* 01BA50 80040650 00000000 */ nop
/* 01BA54 80040654 46109000 */ add.s $f0, $f18, $f16
/* 01BA58 80040658 461A003C */ c.lt.s $f0, $f26
/* 01BA5C 8004065C 00000000 */ nop
/* 01BA60 80040660 45010099 */ bc1t .L800408C8
/* 01BA64 80040664 00000000 */ nop
/* 01BA68 80040668 8FA60050 */ lw $a2, 0x50($sp)
/* 01BA6C 8004066C 8FA70058 */ lw $a3, 0x58($sp)
/* 01BA70 80040670 C7AC002C */ lwc1 $f12, 0x2c($sp)
/* 01BA74 80040674 C7AE0030 */ lwc1 $f14, 0x30($sp)
/* 01BA78 80040678 E7BA0040 */ swc1 $f26, 0x40($sp)
/* 01BA7C 8004067C E7AC003C */ swc1 $f12, 0x3c($sp)
/* 01BA80 80040680 0C00A720 */ jal atan2
/* 01BA84 80040684 E7AE0044 */ swc1 $f14, 0x44($sp)
/* 01BA88 80040688 3C040001 */ lui $a0, 1
/* 01BA8C 8004068C 03C0302D */ daddu $a2, $fp, $zero
/* 01BA90 80040690 02E0382D */ daddu $a3, $s7, $zero
/* 01BA94 80040694 8FA50064 */ lw $a1, 0x64($sp)
/* 01BA98 80040698 461EF500 */ add.s $f20, $f30, $f30
/* 01BA9C 8004069C E7B60010 */ swc1 $f22, 0x10($sp)
/* 01BAA0 800406A0 E7A00014 */ swc1 $f0, 0x14($sp)
/* 01BAA4 800406A4 E7BC0018 */ swc1 $f28, 0x18($sp)
/* 01BAA8 800406A8 0C0376B9 */ jal func_800DDAE4
/* 01BAAC 800406AC E7B4001C */ swc1 $f20, 0x1c($sp)
/* 01BAB0 800406B0 10400016 */ beqz $v0, .L8004070C
/* 01BAB4 800406B4 0000802D */ daddu $s0, $zero, $zero
/* 01BAB8 800406B8 C7AC0050 */ lwc1 $f12, 0x50($sp)
/* 01BABC 800406BC 8FA6002C */ lw $a2, 0x2c($sp)
/* 01BAC0 800406C0 8FA70030 */ lw $a3, 0x30($sp)
/* 01BAC4 800406C4 C7AE0058 */ lwc1 $f14, 0x58($sp)
/* 01BAC8 800406C8 C7B20054 */ lwc1 $f18, 0x54($sp)
/* 01BACC 800406CC 46007406 */ mov.s $f16, $f14
/* 01BAD0 800406D0 E7AC003C */ swc1 $f12, 0x3c($sp)
/* 01BAD4 800406D4 E7B20040 */ swc1 $f18, 0x40($sp)
/* 01BAD8 800406D8 0C00A720 */ jal atan2
/* 01BADC 800406DC E7B00044 */ swc1 $f16, 0x44($sp)
/* 01BAE0 800406E0 3C040001 */ lui $a0, 1
/* 01BAE4 800406E4 03C0302D */ daddu $a2, $fp, $zero
/* 01BAE8 800406E8 8FA50064 */ lw $a1, 0x64($sp)
/* 01BAEC 800406EC 02E0382D */ daddu $a3, $s7, $zero
/* 01BAF0 800406F0 E7B60010 */ swc1 $f22, 0x10($sp)
/* 01BAF4 800406F4 E7A00014 */ swc1 $f0, 0x14($sp)
/* 01BAF8 800406F8 E7BC0018 */ swc1 $f28, 0x18($sp)
/* 01BAFC 800406FC 0C0376B9 */ jal func_800DDAE4
/* 01BB00 80040700 E7B4001C */ swc1 $f20, 0x1c($sp)
/* 01BB04 80040704 14400070 */ bnez $v0, .L800408C8
/* 01BB08 80040708 0000802D */ daddu $s0, $zero, $zero
.L8004070C:
/* 01BB0C 8004070C 0C03A752 */ jal is_ability_active
/* 01BB10 80040710 24040028 */ addiu $a0, $zero, 0x28
/* 01BB14 80040714 1040000A */ beqz $v0, .L80040740
/* 01BB18 80040718 00000000 */ nop
/* 01BB1C 8004071C 8E220018 */ lw $v0, 0x18($s1)
/* 01BB20 80040720 3C038011 */ lui $v1, 0x8011
/* 01BB24 80040724 8063F299 */ lb $v1, -0xd67($v1)
/* 01BB28 80040728 84420028 */ lh $v0, 0x28($v0)
/* 01BB2C 8004072C 0062182A */ slt $v1, $v1, $v0
/* 01BB30 80040730 14600003 */ bnez $v1, .L80040740
/* 01BB34 80040734 00000000 */ nop
/* 01BB38 80040738 82620012 */ lb $v0, 0x12($s3)
/* 01BB3C 8004073C 2C500001 */ sltiu $s0, $v0, 1
.L80040740:
/* 01BB40 80040740 0C03A752 */ jal is_ability_active
/* 01BB44 80040744 2404002D */ addiu $a0, $zero, 0x2d
/* 01BB48 80040748 54400001 */ bnel $v0, $zero, .L80040750
/* 01BB4C 8004074C 24100001 */ addiu $s0, $zero, 1
.L80040750:
/* 01BB50 80040750 8E820004 */ lw $v0, 4($s4)
/* 01BB54 80040754 3C030001 */ lui $v1, 1
/* 01BB58 80040758 00431024 */ and $v0, $v0, $v1
/* 01BB5C 8004075C 10400007 */ beqz $v0, .L8004077C
/* 01BB60 80040760 3C032000 */ lui $v1, 0x2000
/* 01BB64 80040764 8E220000 */ lw $v0, ($s1)
/* 01BB68 80040768 00431024 */ and $v0, $v0, $v1
/* 01BB6C 8004076C 14400004 */ bnez $v0, .L80040780
/* 01BB70 80040770 3C03FFFD */ lui $v1, 0xfffd
/* 01BB74 80040774 1600FC7E */ bnez $s0, .L8003F970
/* 01BB78 80040778 240400E1 */ addiu $a0, $zero, 0xe1
.L8004077C:
/* 01BB7C 8004077C 3C03FFFD */ lui $v1, 0xfffd
.L80040780:
/* 01BB80 80040780 3463FFFF */ ori $v1, $v1, 0xffff
/* 01BB84 80040784 8E820004 */ lw $v0, 4($s4)
/* 01BB88 80040788 24080001 */ addiu $t0, $zero, 1
/* 01BB8C 8004078C A2680005 */ sb $t0, 5($s3)
/* 01BB90 80040790 00431024 */ and $v0, $v0, $v1
/* 01BB94 80040794 AE820004 */ sw $v0, 4($s4)
/* 01BB98 80040798 A2280005 */ sb $t0, 5($s1)
/* 01BB9C 8004079C AE760088 */ sw $s6, 0x88($s3)
/* 01BBA0 800407A0 AE71008C */ sw $s1, 0x8c($s3)
/* 01BBA4 800407A4 C6460038 */ lwc1 $f6, 0x38($s2)
/* 01BBA8 800407A8 C68A0028 */ lwc1 $f10, 0x28($s4)
/* 01BBAC 800407AC 460A3181 */ sub.s $f6, $f6, $f10
/* 01BBB0 800407B0 3C013F00 */ lui $at, 0x3f00
/* 01BBB4 800407B4 44818000 */ mtc1 $at, $f16
/* 01BBB8 800407B8 00000000 */ nop
/* 01BBBC 800407BC 46103182 */ mul.s $f6, $f6, $f16
/* 01BBC0 800407C0 00000000 */ nop
/* 01BBC4 800407C4 864200A8 */ lh $v0, 0xa8($s2)
/* 01BBC8 800407C8 C644003C */ lwc1 $f4, 0x3c($s2)
/* 01BBCC 800407CC 44820000 */ mtc1 $v0, $f0
/* 01BBD0 800407D0 00000000 */ nop
/* 01BBD4 800407D4 46800020 */ cvt.s.w $f0, $f0
/* 01BBD8 800407D8 46002100 */ add.s $f4, $f4, $f0
/* 01BBDC 800407DC 868200B0 */ lh $v0, 0xb0($s4)
/* 01BBE0 800407E0 C688002C */ lwc1 $f8, 0x2c($s4)
/* 01BBE4 800407E4 44820000 */ mtc1 $v0, $f0
/* 01BBE8 800407E8 00000000 */ nop
/* 01BBEC 800407EC 46800020 */ cvt.s.w $f0, $f0
/* 01BBF0 800407F0 46004000 */ add.s $f0, $f8, $f0
/* 01BBF4 800407F4 46002101 */ sub.s $f4, $f4, $f0
/* 01BBF8 800407F8 46102102 */ mul.s $f4, $f4, $f16
/* 01BBFC 800407FC 00000000 */ nop
/* 01BC00 80040800 C6820030 */ lwc1 $f2, 0x30($s4)
/* 01BC04 80040804 C6400040 */ lwc1 $f0, 0x40($s2)
/* 01BC08 80040808 46020001 */ sub.s $f0, $f0, $f2
/* 01BC0C 8004080C 46100002 */ mul.s $f0, $f0, $f16
/* 01BC10 80040810 00000000 */ nop
/* 01BC14 80040814 46065280 */ add.s $f10, $f10, $f6
/* 01BC18 80040818 46044200 */ add.s $f8, $f8, $f4
/* 01BC1C 8004081C 24040003 */ addiu $a0, $zero, 3
/* 01BC20 80040820 44055000 */ mfc1 $a1, $f10
/* 01BC24 80040824 46001080 */ add.s $f2, $f2, $f0
/* 01BC28 80040828 3C01BF80 */ lui $at, 0xbf80
/* 01BC2C 8004082C 44810000 */ mtc1 $at, $f0
/* 01BC30 80040830 44064000 */ mfc1 $a2, $f8
/* 01BC34 80040834 44071000 */ mfc1 $a3, $f2
/* 01BC38 80040838 0080102D */ daddu $v0, $a0, $zero
/* 01BC3C 8004083C AFA5003C */ sw $a1, 0x3c($sp)
/* 01BC40 80040840 AFA60040 */ sw $a2, 0x40($sp)
/* 01BC44 80040844 AFA70044 */ sw $a3, 0x44($sp)
/* 01BC48 80040848 AFA00010 */ sw $zero, 0x10($sp)
/* 01BC4C 8004084C E7A00014 */ swc1 $f0, 0x14($sp)
/* 01BC50 80040850 AFA00018 */ sw $zero, 0x18($sp)
/* 01BC54 80040854 0C01C064 */ jal func_80070190
/* 01BC58 80040858 AFA2001C */ sw $v0, 0x1c($sp)
/* 01BC5C 8004085C 82220007 */ lb $v0, 7($s1)
/* 01BC60 80040860 10400005 */ beqz $v0, .L80040878
/* 01BC64 80040864 0000802D */ daddu $s0, $zero, $zero
/* 01BC68 80040868 0C03A752 */ jal is_ability_active
/* 01BC6C 8004086C 24040011 */ addiu $a0, $zero, 0x11
/* 01BC70 80040870 2C420001 */ sltiu $v0, $v0, 1
/* 01BC74 80040874 00028040 */ sll $s0, $v0, 1
.L80040878:
/* 01BC78 80040878 0C03A752 */ jal is_ability_active
/* 01BC7C 8004087C 2404002A */ addiu $a0, $zero, 0x2a
/* 01BC80 80040880 5040001C */ beql $v0, $zero, .L800408F4
/* 01BC84 80040884 A2700004 */ sb $s0, 4($s3)
/* 01BC88 80040888 8E220018 */ lw $v0, 0x18($s1)
/* 01BC8C 8004088C 3C038011 */ lui $v1, 0x8011
/* 01BC90 80040890 8063F299 */ lb $v1, -0xd67($v1)
/* 01BC94 80040894 84420028 */ lh $v0, 0x28($v0)
/* 01BC98 80040898 0062182A */ slt $v1, $v1, $v0
/* 01BC9C 8004089C 54600015 */ bnel $v1, $zero, .L800408F4
/* 01BCA0 800408A0 A2700004 */ sb $s0, 4($s3)
/* 01BCA4 800408A4 8E220000 */ lw $v0, ($s1)
/* 01BCA8 800408A8 30420040 */ andi $v0, $v0, 0x40
/* 01BCAC 800408AC 54400011 */ bnel $v0, $zero, .L800408F4
/* 01BCB0 800408B0 A2700004 */ sb $s0, 4($s3)
/* 01BCB4 800408B4 82620012 */ lb $v0, 0x12($s3)
/* 01BCB8 800408B8 50400001 */ beql $v0, $zero, .L800408C0
/* 01BCBC 800408BC 0000802D */ daddu $s0, $zero, $zero
.L800408C0:
/* 01BCC0 800408C0 0801023D */ j .L800408F4
/* 01BCC4 800408C4 A2700004 */ sb $s0, 4($s3)
.L800408C8:
/* 01BCC8 800408C8 8EC20000 */ lw $v0, ($s6)
/* 01BCCC 800408CC 26B50001 */ addiu $s5, $s5, 1
/* 01BCD0 800408D0 02A2102A */ slt $v0, $s5, $v0
/* 01BCD4 800408D4 1440FC79 */ bnez $v0, .L8003FABC
/* 01BCD8 800408D8 00151080 */ sll $v0, $s5, 2
/* 01BCDC 800408DC 8FA8004C */ lw $t0, 0x4c($sp)
.L800408E0:
/* 01BCE0 800408E0 8262001C */ lb $v0, 0x1c($s3)
/* 01BCE4 800408E4 25080001 */ addiu $t0, $t0, 1
/* 01BCE8 800408E8 0102102A */ slt $v0, $t0, $v0
/* 01BCEC 800408EC 1440FC67 */ bnez $v0, .L8003FA8C
/* 01BCF0 800408F0 AFA8004C */ sw $t0, 0x4c($sp)
.L800408F4:
/* 01BCF4 800408F4 82630005 */ lb $v1, 5($s3)
.L800408F8:
/* 01BCF8 800408F8 2C620007 */ sltiu $v0, $v1, 7
/* 01BCFC 800408FC 10400285 */ beqz $v0, .L80041314
/* 01BD00 80040900 00031080 */ sll $v0, $v1, 2
/* 01BD04 80040904 3C01800A */ lui $at, 0x800a
/* 01BD08 80040908 00220821 */ addu $at, $at, $v0
/* 01BD0C 8004090C 8C228678 */ lw $v0, -0x7988($at)
/* 01BD10 80040910 00400008 */ jr $v0
/* 01BD14 80040914 00000000 */ nop
/* 01BD18 80040918 8E71008C */ lw $s1, 0x8c($s3)
/* 01BD1C 8004091C 8E22003C */ lw $v0, 0x3c($s1)
/* 01BD20 80040920 10400004 */ beqz $v0, .L80040934
/* 01BD24 80040924 0220B82D */ daddu $s7, $s1, $zero
/* 01BD28 80040928 8E240054 */ lw $a0, 0x54($s1)
/* 01BD2C 8004092C 0C0B1108 */ jal suspend_all_script
/* 01BD30 80040930 00000000 */ nop
.L80040934:
/* 01BD34 80040934 8E220044 */ lw $v0, 0x44($s1)
/* 01BD38 80040938 10400003 */ beqz $v0, .L80040948
/* 01BD3C 8004093C 00000000 */ nop
/* 01BD40 80040940 0C0B1108 */ jal suspend_all_script
/* 01BD44 80040944 8E24005C */ lw $a0, 0x5c($s1)
.L80040948:
/* 01BD48 80040948 8E760088 */ lw $s6, 0x88($s3)
/* 01BD4C 8004094C 8EC20000 */ lw $v0, ($s6)
/* 01BD50 80040950 1840002B */ blez $v0, .L80040A00
/* 01BD54 80040954 0000A82D */ daddu $s5, $zero, $zero
/* 01BD58 80040958 24120001 */ addiu $s2, $zero, 1
/* 01BD5C 8004095C 02C0802D */ daddu $s0, $s6, $zero
.L80040960:
/* 01BD60 80040960 8E110004 */ lw $s1, 4($s0)
/* 01BD64 80040964 12200021 */ beqz $s1, .L800409EC
/* 01BD68 80040968 00000000 */ nop
/* 01BD6C 8004096C 8E230000 */ lw $v1, ($s1)
/* 01BD70 80040970 30620008 */ andi $v0, $v1, 8
/* 01BD74 80040974 10400004 */ beqz $v0, .L80040988
/* 01BD78 80040978 30620020 */ andi $v0, $v1, 0x20
/* 01BD7C 8004097C 8E62008C */ lw $v0, 0x8c($s3)
/* 01BD80 80040980 1622001A */ bne $s1, $v0, .L800409EC
/* 01BD84 80040984 30620020 */ andi $v0, $v1, 0x20
.L80040988:
/* 01BD88 80040988 14400018 */ bnez $v0, .L800409EC
/* 01BD8C 8004098C 00000000 */ nop
/* 01BD90 80040990 8EE20000 */ lw $v0, ($s7)
/* 01BD94 80040994 30420040 */ andi $v0, $v0, 0x40
/* 01BD98 80040998 10400004 */ beqz $v0, .L800409AC
/* 01BD9C 8004099C 00000000 */ nop
/* 01BDA0 800409A0 8E62008C */ lw $v0, 0x8c($s3)
/* 01BDA4 800409A4 16220011 */ bne $s1, $v0, .L800409EC
/* 01BDA8 800409A8 00000000 */ nop
.L800409AC:
/* 01BDAC 800409AC 8E220028 */ lw $v0, 0x28($s1)
/* 01BDB0 800409B0 1040000E */ beqz $v0, .L800409EC
/* 01BDB4 800409B4 2405000A */ addiu $a1, $zero, 0xa
/* 01BDB8 800409B8 0040202D */ daddu $a0, $v0, $zero
/* 01BDBC 800409BC 0000302D */ daddu $a2, $zero, $zero
/* 01BDC0 800409C0 0C0B0CF8 */ jal start_script
/* 01BDC4 800409C4 A2320005 */ sb $s2, 5($s1)
/* 01BDC8 800409C8 0040202D */ daddu $a0, $v0, $zero
/* 01BDCC 800409CC AE240040 */ sw $a0, 0x40($s1)
/* 01BDD0 800409D0 8C820144 */ lw $v0, 0x144($a0)
/* 01BDD4 800409D4 AE220058 */ sw $v0, 0x58($s1)
/* 01BDD8 800409D8 AC910148 */ sw $s1, 0x148($a0)
/* 01BDDC 800409DC 86220008 */ lh $v0, 8($s1)
/* 01BDE0 800409E0 AC82014C */ sw $v0, 0x14c($a0)
/* 01BDE4 800409E4 92220006 */ lbu $v0, 6($s1)
/* 01BDE8 800409E8 A0820004 */ sb $v0, 4($a0)
.L800409EC:
/* 01BDEC 800409EC 8EC20000 */ lw $v0, ($s6)
/* 01BDF0 800409F0 26B50001 */ addiu $s5, $s5, 1
/* 01BDF4 800409F4 02A2102A */ slt $v0, $s5, $v0
/* 01BDF8 800409F8 1440FFD9 */ bnez $v0, .L80040960
/* 01BDFC 800409FC 26100004 */ addiu $s0, $s0, 4
.L80040A00:
/* 01BE00 80040A00 0C03805E */ jal func_800E0178
/* 01BE04 80040A04 00000000 */ nop
/* 01BE08 80040A08 0C03BD8A */ jal func_800EF628
/* 01BE0C 80040A0C 00000000 */ nop
/* 01BE10 80040A10 928300B4 */ lbu $v1, 0xb4($s4)
/* 01BE14 80040A14 2462FFF1 */ addiu $v0, $v1, -0xf
/* 01BE18 80040A18 2C420002 */ sltiu $v0, $v0, 2
/* 01BE1C 80040A1C 1440000A */ bnez $v0, .L80040A48
/* 01BE20 80040A20 00031600 */ sll $v0, $v1, 0x18
/* 01BE24 80040A24 00021E03 */ sra $v1, $v0, 0x18
/* 01BE28 80040A28 2402000D */ addiu $v0, $zero, 0xd
/* 01BE2C 80040A2C 10620006 */ beq $v1, $v0, .L80040A48
/* 01BE30 80040A30 2402000E */ addiu $v0, $zero, 0xe
/* 01BE34 80040A34 10620004 */ beq $v1, $v0, .L80040A48
/* 01BE38 80040A38 3C030004 */ lui $v1, 4
/* 01BE3C 80040A3C 8E820000 */ lw $v0, ($s4)
/* 01BE40 80040A40 00431025 */ or $v0, $v0, $v1
/* 01BE44 80040A44 AE820000 */ sw $v0, ($s4)
.L80040A48:
/* 01BE48 80040A48 0C03A752 */ jal is_ability_active
/* 01BE4C 80040A4C 24040011 */ addiu $a0, $zero, 0x11
/* 01BE50 80040A50 14400013 */ bnez $v0, .L80040AA0
/* 01BE54 80040A54 24020003 */ addiu $v0, $zero, 3
/* 01BE58 80040A58 82630004 */ lb $v1, 4($s3)
/* 01BE5C 80040A5C 24020002 */ addiu $v0, $zero, 2
/* 01BE60 80040A60 1462000F */ bne $v1, $v0, .L80040AA0
/* 01BE64 80040A64 24020003 */ addiu $v0, $zero, 3
/* 01BE68 80040A68 0C039769 */ jal set_action_state
/* 01BE6C 80040A6C 2404001B */ addiu $a0, $zero, 0x1b
/* 01BE70 80040A70 86240008 */ lh $a0, 8($s1)
/* 01BE74 80040A74 0C00EABB */ jal get_npc_unsafe
/* 01BE78 80040A78 00000000 */ nop
/* 01BE7C 80040A7C 0040902D */ daddu $s2, $v0, $zero
/* 01BE80 80040A80 C6400040 */ lwc1 $f0, 0x40($s2)
/* 01BE84 80040A84 240400E1 */ addiu $a0, $zero, 0xe1
/* 01BE88 80040A88 E7A00010 */ swc1 $f0, 0x10($sp)
/* 01BE8C 80040A8C 8E460038 */ lw $a2, 0x38($s2)
/* 01BE90 80040A90 8E47003C */ lw $a3, 0x3c($s2)
/* 01BE94 80040A94 0C052757 */ jal play_sound_at_position
/* 01BE98 80040A98 0000282D */ daddu $a1, $zero, $zero
/* 01BE9C 80040A9C 24020003 */ addiu $v0, $zero, 3
.L80040AA0:
/* 01BEA0 80040AA0 A2600012 */ sb $zero, 0x12($s3)
/* 01BEA4 80040AA4 3C01800A */ lui $at, 0x800a
/* 01BEA8 80040AA8 AC22A600 */ sw $v0, -0x5a00($at)
/* 01BEAC 80040AAC 24020001 */ addiu $v0, $zero, 1
/* 01BEB0 80040AB0 AE600090 */ sw $zero, 0x90($s3)
/* 01BEB4 80040AB4 080104C1 */ j .L80041304
/* 01BEB8 80040AB8 AE600094 */ sw $zero, 0x94($s3)
/* 01BEBC 80040ABC 8E71008C */ lw $s1, 0x8c($s3)
/* 01BEC0 80040AC0 8E22003C */ lw $v0, 0x3c($s1)
/* 01BEC4 80040AC4 10400004 */ beqz $v0, .L80040AD8
/* 01BEC8 80040AC8 0220B82D */ daddu $s7, $s1, $zero
/* 01BECC 80040ACC 8E240054 */ lw $a0, 0x54($s1)
/* 01BED0 80040AD0 0C0B1108 */ jal suspend_all_script
/* 01BED4 80040AD4 00000000 */ nop
.L80040AD8:
/* 01BED8 80040AD8 8E220044 */ lw $v0, 0x44($s1)
/* 01BEDC 80040ADC 10400003 */ beqz $v0, .L80040AEC
/* 01BEE0 80040AE0 00000000 */ nop
/* 01BEE4 80040AE4 0C0B1108 */ jal suspend_all_script
/* 01BEE8 80040AE8 8E24005C */ lw $a0, 0x5c($s1)
.L80040AEC:
/* 01BEEC 80040AEC 8E760088 */ lw $s6, 0x88($s3)
/* 01BEF0 80040AF0 8EC20000 */ lw $v0, ($s6)
/* 01BEF4 80040AF4 1840002B */ blez $v0, .L80040BA4
/* 01BEF8 80040AF8 0000A82D */ daddu $s5, $zero, $zero
/* 01BEFC 80040AFC 24120003 */ addiu $s2, $zero, 3
/* 01BF00 80040B00 02C0802D */ daddu $s0, $s6, $zero
.L80040B04:
/* 01BF04 80040B04 8E110004 */ lw $s1, 4($s0)
/* 01BF08 80040B08 12200021 */ beqz $s1, .L80040B90
/* 01BF0C 80040B0C 00000000 */ nop
/* 01BF10 80040B10 8E230000 */ lw $v1, ($s1)
/* 01BF14 80040B14 30620008 */ andi $v0, $v1, 8
/* 01BF18 80040B18 10400004 */ beqz $v0, .L80040B2C
/* 01BF1C 80040B1C 30620020 */ andi $v0, $v1, 0x20
/* 01BF20 80040B20 8E62008C */ lw $v0, 0x8c($s3)
/* 01BF24 80040B24 1622001A */ bne $s1, $v0, .L80040B90
/* 01BF28 80040B28 30620020 */ andi $v0, $v1, 0x20
.L80040B2C:
/* 01BF2C 80040B2C 14400018 */ bnez $v0, .L80040B90
/* 01BF30 80040B30 00000000 */ nop
/* 01BF34 80040B34 8EE20000 */ lw $v0, ($s7)
/* 01BF38 80040B38 30420040 */ andi $v0, $v0, 0x40
/* 01BF3C 80040B3C 10400004 */ beqz $v0, .L80040B50
/* 01BF40 80040B40 00000000 */ nop
/* 01BF44 80040B44 8E62008C */ lw $v0, 0x8c($s3)
/* 01BF48 80040B48 16220011 */ bne $s1, $v0, .L80040B90
/* 01BF4C 80040B4C 00000000 */ nop
.L80040B50:
/* 01BF50 80040B50 8E220028 */ lw $v0, 0x28($s1)
/* 01BF54 80040B54 1040000E */ beqz $v0, .L80040B90
/* 01BF58 80040B58 2405000A */ addiu $a1, $zero, 0xa
/* 01BF5C 80040B5C 0040202D */ daddu $a0, $v0, $zero
/* 01BF60 80040B60 0000302D */ daddu $a2, $zero, $zero
/* 01BF64 80040B64 0C0B0CF8 */ jal start_script
/* 01BF68 80040B68 A2320005 */ sb $s2, 5($s1)
/* 01BF6C 80040B6C 0040202D */ daddu $a0, $v0, $zero
/* 01BF70 80040B70 AE240040 */ sw $a0, 0x40($s1)
/* 01BF74 80040B74 8C820144 */ lw $v0, 0x144($a0)
/* 01BF78 80040B78 AE220058 */ sw $v0, 0x58($s1)
/* 01BF7C 80040B7C AC910148 */ sw $s1, 0x148($a0)
/* 01BF80 80040B80 86220008 */ lh $v0, 8($s1)
/* 01BF84 80040B84 AC82014C */ sw $v0, 0x14c($a0)
/* 01BF88 80040B88 92220006 */ lbu $v0, 6($s1)
/* 01BF8C 80040B8C A0820004 */ sb $v0, 4($a0)
.L80040B90:
/* 01BF90 80040B90 8EC20000 */ lw $v0, ($s6)
/* 01BF94 80040B94 26B50001 */ addiu $s5, $s5, 1
/* 01BF98 80040B98 02A2102A */ slt $v0, $s5, $v0
/* 01BF9C 80040B9C 1440FFD9 */ bnez $v0, .L80040B04
/* 01BFA0 80040BA0 26100004 */ addiu $s0, $s0, 4
.L80040BA4:
/* 01BFA4 80040BA4 0C03805E */ jal func_800E0178
/* 01BFA8 80040BA8 00000000 */ nop
/* 01BFAC 80040BAC 0C03BD8A */ jal func_800EF628
/* 01BFB0 80040BB0 00000000 */ nop
/* 01BFB4 80040BB4 24020003 */ addiu $v0, $zero, 3
/* 01BFB8 80040BB8 A2600012 */ sb $zero, 0x12($s3)
/* 01BFBC 80040BBC 3C01800A */ lui $at, 0x800a
/* 01BFC0 80040BC0 AC22A600 */ sw $v0, -0x5a00($at)
/* 01BFC4 80040BC4 24020001 */ addiu $v0, $zero, 1
/* 01BFC8 80040BC8 AE600090 */ sw $zero, 0x90($s3)
/* 01BFCC 80040BCC AE600094 */ sw $zero, 0x94($s3)
/* 01BFD0 80040BD0 3C01800A */ lui $at, 0x800a
/* 01BFD4 80040BD4 AC22A678 */ sw $v0, -0x5988($at)
/* 01BFD8 80040BD8 8E820000 */ lw $v0, ($s4)
/* 01BFDC 80040BDC 3C030004 */ lui $v1, 4
/* 01BFE0 80040BE0 3C01800A */ lui $at, 0x800a
/* 01BFE4 80040BE4 AC20A5D0 */ sw $zero, -0x5a30($at)
/* 01BFE8 80040BE8 00431025 */ or $v0, $v0, $v1
/* 01BFEC 80040BEC 080104C5 */ j .L80041314
/* 01BFF0 80040BF0 AE820000 */ sw $v0, ($s4)
/* 01BFF4 80040BF4 8E71008C */ lw $s1, 0x8c($s3)
/* 01BFF8 80040BF8 8E22003C */ lw $v0, 0x3c($s1)
/* 01BFFC 80040BFC 10400004 */ beqz $v0, .L80040C10
/* 01C000 80040C00 0220B82D */ daddu $s7, $s1, $zero
/* 01C004 80040C04 8E240054 */ lw $a0, 0x54($s1)
/* 01C008 80040C08 0C0B1108 */ jal suspend_all_script
/* 01C00C 80040C0C 00000000 */ nop
.L80040C10:
/* 01C010 80040C10 8E220044 */ lw $v0, 0x44($s1)
/* 01C014 80040C14 10400003 */ beqz $v0, .L80040C24
/* 01C018 80040C18 00000000 */ nop
/* 01C01C 80040C1C 0C0B1108 */ jal suspend_all_script
/* 01C020 80040C20 8E24005C */ lw $a0, 0x5c($s1)
.L80040C24:
/* 01C024 80040C24 8E760088 */ lw $s6, 0x88($s3)
/* 01C028 80040C28 0000802D */ daddu $s0, $zero, $zero
/* 01C02C 80040C2C 8EC20000 */ lw $v0, ($s6)
/* 01C030 80040C30 18400070 */ blez $v0, .L80040DF4
/* 01C034 80040C34 0200A82D */ daddu $s5, $s0, $zero
/* 01C038 80040C38 241E0003 */ addiu $fp, $zero, 3
/* 01C03C 80040C3C 3C013F00 */ lui $at, 0x3f00
/* 01C040 80040C40 4481A000 */ mtc1 $at, $f20
/* 01C044 80040C44 3C01BF80 */ lui $at, 0xbf80
/* 01C048 80040C48 4481B000 */ mtc1 $at, $f22
/* 01C04C 80040C4C 00151080 */ sll $v0, $s5, 2
.L80040C50:
/* 01C050 80040C50 02C21021 */ addu $v0, $s6, $v0
/* 01C054 80040C54 8C510004 */ lw $s1, 4($v0)
/* 01C058 80040C58 12200061 */ beqz $s1, .L80040DE0
/* 01C05C 80040C5C 00000000 */ nop
/* 01C060 80040C60 8E230000 */ lw $v1, ($s1)
/* 01C064 80040C64 30620008 */ andi $v0, $v1, 8
/* 01C068 80040C68 10400004 */ beqz $v0, .L80040C7C
/* 01C06C 80040C6C 30620020 */ andi $v0, $v1, 0x20
/* 01C070 80040C70 8E62008C */ lw $v0, 0x8c($s3)
/* 01C074 80040C74 1622005A */ bne $s1, $v0, .L80040DE0
/* 01C078 80040C78 30620020 */ andi $v0, $v1, 0x20
.L80040C7C:
/* 01C07C 80040C7C 14400058 */ bnez $v0, .L80040DE0
/* 01C080 80040C80 00000000 */ nop
/* 01C084 80040C84 8EE20000 */ lw $v0, ($s7)
/* 01C088 80040C88 30420040 */ andi $v0, $v0, 0x40
/* 01C08C 80040C8C 10400004 */ beqz $v0, .L80040CA0
/* 01C090 80040C90 00000000 */ nop
/* 01C094 80040C94 8E62008C */ lw $v0, 0x8c($s3)
/* 01C098 80040C98 16220051 */ bne $s1, $v0, .L80040DE0
/* 01C09C 80040C9C 00000000 */ nop
.L80040CA0:
/* 01C0A0 80040CA0 8E220028 */ lw $v0, 0x28($s1)
/* 01C0A4 80040CA4 1040001F */ beqz $v0, .L80040D24
/* 01C0A8 80040CA8 2405000A */ addiu $a1, $zero, 0xa
/* 01C0AC 80040CAC 0000302D */ daddu $a2, $zero, $zero
/* 01C0B0 80040CB0 0040202D */ daddu $a0, $v0, $zero
/* 01C0B4 80040CB4 24020002 */ addiu $v0, $zero, 2
/* 01C0B8 80040CB8 0C0B0CF8 */ jal start_script
/* 01C0BC 80040CBC A2220005 */ sb $v0, 5($s1)
/* 01C0C0 80040CC0 0040202D */ daddu $a0, $v0, $zero
/* 01C0C4 80040CC4 AE240040 */ sw $a0, 0x40($s1)
/* 01C0C8 80040CC8 8C820144 */ lw $v0, 0x144($a0)
/* 01C0CC 80040CCC AE220058 */ sw $v0, 0x58($s1)
/* 01C0D0 80040CD0 AC910148 */ sw $s1, 0x148($a0)
/* 01C0D4 80040CD4 86220008 */ lh $v0, 8($s1)
/* 01C0D8 80040CD8 AC82014C */ sw $v0, 0x14c($a0)
/* 01C0DC 80040CDC 92220006 */ lbu $v0, 6($s1)
/* 01C0E0 80040CE0 A0820004 */ sb $v0, 4($a0)
/* 01C0E4 80040CE4 0C00EABB */ jal get_npc_unsafe
/* 01C0E8 80040CE8 86240008 */ lh $a0, 8($s1)
/* 01C0EC 80040CEC 0040902D */ daddu $s2, $v0, $zero
/* 01C0F0 80040CF0 C6460038 */ lwc1 $f6, 0x38($s2)
/* 01C0F4 80040CF4 C68A0028 */ lwc1 $f10, 0x28($s4)
/* 01C0F8 80040CF8 460A3181 */ sub.s $f6, $f6, $f10
/* 01C0FC 80040CFC 46143182 */ mul.s $f6, $f6, $f20
/* 01C100 80040D00 00000000 */ nop
/* 01C104 80040D04 864200A8 */ lh $v0, 0xa8($s2)
/* 01C108 80040D08 C642003C */ lwc1 $f2, 0x3c($s2)
/* 01C10C 80040D0C 44820000 */ mtc1 $v0, $f0
/* 01C110 80040D10 00000000 */ nop
/* 01C114 80040D14 46800020 */ cvt.s.w $f0, $f0
/* 01C118 80040D18 868200B0 */ lh $v0, 0xb0($s4)
/* 01C11C 80040D1C 0801035B */ j .L80040D6C
/* 01C120 80040D20 46001080 */ add.s $f2, $f2, $f0
.L80040D24:
/* 01C124 80040D24 30620001 */ andi $v0, $v1, 1
/* 01C128 80040D28 1440002D */ bnez $v0, .L80040DE0
/* 01C12C 80040D2C 00000000 */ nop
/* 01C130 80040D30 0C00EABB */ jal get_npc_unsafe
/* 01C134 80040D34 86240008 */ lh $a0, 8($s1)
/* 01C138 80040D38 0040902D */ daddu $s2, $v0, $zero
/* 01C13C 80040D3C C4460038 */ lwc1 $f6, 0x38($v0)
/* 01C140 80040D40 C68A0028 */ lwc1 $f10, 0x28($s4)
/* 01C144 80040D44 460A3181 */ sub.s $f6, $f6, $f10
/* 01C148 80040D48 46143182 */ mul.s $f6, $f6, $f20
/* 01C14C 80040D4C 00000000 */ nop
/* 01C150 80040D50 864200A8 */ lh $v0, 0xa8($s2)
/* 01C154 80040D54 C642003C */ lwc1 $f2, 0x3c($s2)
/* 01C158 80040D58 44820000 */ mtc1 $v0, $f0
/* 01C15C 80040D5C 00000000 */ nop
/* 01C160 80040D60 46800020 */ cvt.s.w $f0, $f0
/* 01C164 80040D64 868200B0 */ lh $v0, 0xb0($s4)
/* 01C168 80040D68 46001080 */ add.s $f2, $f2, $f0
.L80040D6C:
/* 01C16C 80040D6C C688002C */ lwc1 $f8, 0x2c($s4)
/* 01C170 80040D70 44820000 */ mtc1 $v0, $f0
/* 01C174 80040D74 00000000 */ nop
/* 01C178 80040D78 46800020 */ cvt.s.w $f0, $f0
/* 01C17C 80040D7C 46004000 */ add.s $f0, $f8, $f0
/* 01C180 80040D80 46001081 */ sub.s $f2, $f2, $f0
/* 01C184 80040D84 46141082 */ mul.s $f2, $f2, $f20
/* 01C188 80040D88 00000000 */ nop
/* 01C18C 80040D8C C6840030 */ lwc1 $f4, 0x30($s4)
/* 01C190 80040D90 C6400040 */ lwc1 $f0, 0x40($s2)
/* 01C194 80040D94 46040001 */ sub.s $f0, $f0, $f4
/* 01C198 80040D98 46140002 */ mul.s $f0, $f0, $f20
/* 01C19C 80040D9C 00000000 */ nop
/* 01C1A0 80040DA0 46065280 */ add.s $f10, $f10, $f6
/* 01C1A4 80040DA4 46024200 */ add.s $f8, $f8, $f2
/* 01C1A8 80040DA8 24100001 */ addiu $s0, $zero, 1
/* 01C1AC 80040DAC 46002100 */ add.s $f4, $f4, $f0
/* 01C1B0 80040DB0 44055000 */ mfc1 $a1, $f10
/* 01C1B4 80040DB4 44064000 */ mfc1 $a2, $f8
/* 01C1B8 80040DB8 44072000 */ mfc1 $a3, $f4
/* 01C1BC 80040DBC 24040003 */ addiu $a0, $zero, 3
/* 01C1C0 80040DC0 AFA5003C */ sw $a1, 0x3c($sp)
/* 01C1C4 80040DC4 AFA60040 */ sw $a2, 0x40($sp)
/* 01C1C8 80040DC8 AFA70044 */ sw $a3, 0x44($sp)
/* 01C1CC 80040DCC AFA00010 */ sw $zero, 0x10($sp)
/* 01C1D0 80040DD0 E7B60014 */ swc1 $f22, 0x14($sp)
/* 01C1D4 80040DD4 AFA00018 */ sw $zero, 0x18($sp)
/* 01C1D8 80040DD8 0C01C064 */ jal func_80070190
/* 01C1DC 80040DDC AFBE001C */ sw $fp, 0x1c($sp)
.L80040DE0:
/* 01C1E0 80040DE0 8EC20000 */ lw $v0, ($s6)
/* 01C1E4 80040DE4 26B50001 */ addiu $s5, $s5, 1
/* 01C1E8 80040DE8 02A2102A */ slt $v0, $s5, $v0
/* 01C1EC 80040DEC 1440FF98 */ bnez $v0, .L80040C50
/* 01C1F0 80040DF0 00151080 */ sll $v0, $s5, 2
.L80040DF4:
/* 01C1F4 80040DF4 0C03805E */ jal func_800E0178
/* 01C1F8 80040DF8 00000000 */ nop
/* 01C1FC 80040DFC 0C03BD8A */ jal func_800EF628
/* 01C200 80040E00 00000000 */ nop
/* 01C204 80040E04 8E820000 */ lw $v0, ($s4)
/* 01C208 80040E08 3C030004 */ lui $v1, 4
/* 01C20C 80040E0C 00431025 */ or $v0, $v0, $v1
/* 01C210 80040E10 12000003 */ beqz $s0, .L80040E20
/* 01C214 80040E14 AE820000 */ sw $v0, ($s4)
/* 01C218 80040E18 0C03980D */ jal start_bounce_a
/* 01C21C 80040E1C 00000000 */ nop
.L80040E20:
/* 01C220 80040E20 0000202D */ daddu $a0, $zero, $zero
/* 01C224 80040E24 AE600090 */ sw $zero, 0x90($s3)
/* 01C228 80040E28 AE600094 */ sw $zero, 0x94($s3)
/* 01C22C 80040E2C 080104BB */ j .L800412EC
/* 01C230 80040E30 A2600012 */ sb $zero, 0x12($s3)
/* 01C234 80040E34 8E71008C */ lw $s1, 0x8c($s3)
/* 01C238 80040E38 8E22003C */ lw $v0, 0x3c($s1)
/* 01C23C 80040E3C 10400004 */ beqz $v0, .L80040E50
/* 01C240 80040E40 0220B82D */ daddu $s7, $s1, $zero
/* 01C244 80040E44 8E240054 */ lw $a0, 0x54($s1)
/* 01C248 80040E48 0C0B1108 */ jal suspend_all_script
/* 01C24C 80040E4C 00000000 */ nop
.L80040E50:
/* 01C250 80040E50 8E220044 */ lw $v0, 0x44($s1)
/* 01C254 80040E54 10400003 */ beqz $v0, .L80040E64
/* 01C258 80040E58 00000000 */ nop
/* 01C25C 80040E5C 0C0B1108 */ jal suspend_all_script
/* 01C260 80040E60 8E24005C */ lw $a0, 0x5c($s1)
.L80040E64:
/* 01C264 80040E64 8E760088 */ lw $s6, 0x88($s3)
/* 01C268 80040E68 8EC20000 */ lw $v0, ($s6)
/* 01C26C 80040E6C 18400113 */ blez $v0, .L800412BC
/* 01C270 80040E70 0000A82D */ daddu $s5, $zero, $zero
/* 01C274 80040E74 24100003 */ addiu $s0, $zero, 3
/* 01C278 80040E78 3C013F00 */ lui $at, 0x3f00
/* 01C27C 80040E7C 4481A000 */ mtc1 $at, $f20
/* 01C280 80040E80 3C01BF80 */ lui $at, 0xbf80
/* 01C284 80040E84 4481B000 */ mtc1 $at, $f22
/* 01C288 80040E88 00151080 */ sll $v0, $s5, 2
.L80040E8C:
/* 01C28C 80040E8C 02C21021 */ addu $v0, $s6, $v0
/* 01C290 80040E90 8C510004 */ lw $s1, 4($v0)
/* 01C294 80040E94 12200082 */ beqz $s1, .L800410A0
/* 01C298 80040E98 00000000 */ nop
/* 01C29C 80040E9C 8E230000 */ lw $v1, ($s1)
/* 01C2A0 80040EA0 30620008 */ andi $v0, $v1, 8
/* 01C2A4 80040EA4 10400004 */ beqz $v0, .L80040EB8
/* 01C2A8 80040EA8 30620020 */ andi $v0, $v1, 0x20
/* 01C2AC 80040EAC 8E62008C */ lw $v0, 0x8c($s3)
/* 01C2B0 80040EB0 1622007B */ bne $s1, $v0, .L800410A0
/* 01C2B4 80040EB4 30620020 */ andi $v0, $v1, 0x20
.L80040EB8:
/* 01C2B8 80040EB8 14400079 */ bnez $v0, .L800410A0
/* 01C2BC 80040EBC 00000000 */ nop
/* 01C2C0 80040EC0 8EE20000 */ lw $v0, ($s7)
/* 01C2C4 80040EC4 30420040 */ andi $v0, $v0, 0x40
/* 01C2C8 80040EC8 10400004 */ beqz $v0, .L80040EDC
/* 01C2CC 80040ECC 00000000 */ nop
/* 01C2D0 80040ED0 8E62008C */ lw $v0, 0x8c($s3)
/* 01C2D4 80040ED4 16220072 */ bne $s1, $v0, .L800410A0
/* 01C2D8 80040ED8 00000000 */ nop
.L80040EDC:
/* 01C2DC 80040EDC 8E220028 */ lw $v0, 0x28($s1)
/* 01C2E0 80040EE0 1040003A */ beqz $v0, .L80040FCC
/* 01C2E4 80040EE4 2405000A */ addiu $a1, $zero, 0xa
/* 01C2E8 80040EE8 0000302D */ daddu $a2, $zero, $zero
/* 01C2EC 80040EEC 0040202D */ daddu $a0, $v0, $zero
/* 01C2F0 80040EF0 24020004 */ addiu $v0, $zero, 4
/* 01C2F4 80040EF4 0C0B0CF8 */ jal start_script
/* 01C2F8 80040EF8 A2220005 */ sb $v0, 5($s1)
/* 01C2FC 80040EFC 0040202D */ daddu $a0, $v0, $zero
/* 01C300 80040F00 AE240040 */ sw $a0, 0x40($s1)
/* 01C304 80040F04 8C820144 */ lw $v0, 0x144($a0)
/* 01C308 80040F08 AE220058 */ sw $v0, 0x58($s1)
/* 01C30C 80040F0C AC910148 */ sw $s1, 0x148($a0)
/* 01C310 80040F10 86220008 */ lh $v0, 8($s1)
/* 01C314 80040F14 AC82014C */ sw $v0, 0x14c($a0)
/* 01C318 80040F18 92220006 */ lbu $v0, 6($s1)
/* 01C31C 80040F1C A0820004 */ sb $v0, 4($a0)
/* 01C320 80040F20 0C00EABB */ jal get_npc_unsafe
/* 01C324 80040F24 86240008 */ lh $a0, 8($s1)
/* 01C328 80040F28 0040902D */ daddu $s2, $v0, $zero
/* 01C32C 80040F2C C6480038 */ lwc1 $f8, 0x38($s2)
/* 01C330 80040F30 C68A0028 */ lwc1 $f10, 0x28($s4)
/* 01C334 80040F34 460A4201 */ sub.s $f8, $f8, $f10
/* 01C338 80040F38 46144202 */ mul.s $f8, $f8, $f20
/* 01C33C 80040F3C 00000000 */ nop
/* 01C340 80040F40 864200A8 */ lh $v0, 0xa8($s2)
/* 01C344 80040F44 C644003C */ lwc1 $f4, 0x3c($s2)
/* 01C348 80040F48 44820000 */ mtc1 $v0, $f0
/* 01C34C 80040F4C 00000000 */ nop
/* 01C350 80040F50 46800020 */ cvt.s.w $f0, $f0
/* 01C354 80040F54 46002100 */ add.s $f4, $f4, $f0
/* 01C358 80040F58 868200B0 */ lh $v0, 0xb0($s4)
/* 01C35C 80040F5C C686002C */ lwc1 $f6, 0x2c($s4)
/* 01C360 80040F60 44820000 */ mtc1 $v0, $f0
/* 01C364 80040F64 00000000 */ nop
/* 01C368 80040F68 46800020 */ cvt.s.w $f0, $f0
/* 01C36C 80040F6C 46003000 */ add.s $f0, $f6, $f0
/* 01C370 80040F70 46002101 */ sub.s $f4, $f4, $f0
/* 01C374 80040F74 46142102 */ mul.s $f4, $f4, $f20
/* 01C378 80040F78 00000000 */ nop
/* 01C37C 80040F7C C6820030 */ lwc1 $f2, 0x30($s4)
/* 01C380 80040F80 C6400040 */ lwc1 $f0, 0x40($s2)
/* 01C384 80040F84 46020001 */ sub.s $f0, $f0, $f2
/* 01C388 80040F88 46140002 */ mul.s $f0, $f0, $f20
/* 01C38C 80040F8C 00000000 */ nop
/* 01C390 80040F90 46085280 */ add.s $f10, $f10, $f8
/* 01C394 80040F94 46043180 */ add.s $f6, $f6, $f4
/* 01C398 80040F98 46001080 */ add.s $f2, $f2, $f0
/* 01C39C 80040F9C 44055000 */ mfc1 $a1, $f10
/* 01C3A0 80040FA0 44063000 */ mfc1 $a2, $f6
/* 01C3A4 80040FA4 44071000 */ mfc1 $a3, $f2
/* 01C3A8 80040FA8 24040003 */ addiu $a0, $zero, 3
/* 01C3AC 80040FAC AFA5003C */ sw $a1, 0x3c($sp)
/* 01C3B0 80040FB0 AFA60040 */ sw $a2, 0x40($sp)
/* 01C3B4 80040FB4 AFA70044 */ sw $a3, 0x44($sp)
/* 01C3B8 80040FB8 AFA00010 */ sw $zero, 0x10($sp)
/* 01C3BC 80040FBC E7B60014 */ swc1 $f22, 0x14($sp)
/* 01C3C0 80040FC0 AFA00018 */ sw $zero, 0x18($sp)
/* 01C3C4 80040FC4 08010426 */ j .L80041098
/* 01C3C8 80040FC8 AFB0001C */ sw $s0, 0x1c($sp)
.L80040FCC:
/* 01C3CC 80040FCC 30620001 */ andi $v0, $v1, 1
/* 01C3D0 80040FD0 14400033 */ bnez $v0, .L800410A0
/* 01C3D4 80040FD4 00000000 */ nop
/* 01C3D8 80040FD8 0C00EABB */ jal get_npc_unsafe
/* 01C3DC 80040FDC 86240008 */ lh $a0, 8($s1)
/* 01C3E0 80040FE0 0040902D */ daddu $s2, $v0, $zero
/* 01C3E4 80040FE4 C44C0038 */ lwc1 $f12, 0x38($v0)
/* 01C3E8 80040FE8 C68E0028 */ lwc1 $f14, 0x28($s4)
/* 01C3EC 80040FEC 460E6301 */ sub.s $f12, $f12, $f14
/* 01C3F0 80040FF0 46146302 */ mul.s $f12, $f12, $f20
/* 01C3F4 80040FF4 00000000 */ nop
/* 01C3F8 80040FF8 C6420040 */ lwc1 $f2, 0x40($s2)
/* 01C3FC 80040FFC C6880030 */ lwc1 $f8, 0x30($s4)
/* 01C400 80041000 46081081 */ sub.s $f2, $f2, $f8
/* 01C404 80041004 46141082 */ mul.s $f2, $f2, $f20
/* 01C408 80041008 00000000 */ nop
/* 01C40C 8004100C 864200A8 */ lh $v0, 0xa8($s2)
/* 01C410 80041010 C646003C */ lwc1 $f6, 0x3c($s2)
/* 01C414 80041014 44820000 */ mtc1 $v0, $f0
/* 01C418 80041018 00000000 */ nop
/* 01C41C 8004101C 46800020 */ cvt.s.w $f0, $f0
/* 01C420 80041020 868200B0 */ lh $v0, 0xb0($s4)
/* 01C424 80041024 46003180 */ add.s $f6, $f6, $f0
/* 01C428 80041028 C68A002C */ lwc1 $f10, 0x2c($s4)
/* 01C42C 8004102C 44820000 */ mtc1 $v0, $f0
/* 01C430 80041030 00000000 */ nop
/* 01C434 80041034 46800020 */ cvt.s.w $f0, $f0
/* 01C438 80041038 46005000 */ add.s $f0, $f10, $f0
/* 01C43C 8004103C 46003181 */ sub.s $f6, $f6, $f0
/* 01C440 80041040 46143182 */ mul.s $f6, $f6, $f20
/* 01C444 80041044 00000000 */ nop
/* 01C448 80041048 864200A8 */ lh $v0, 0xa8($s2)
/* 01C44C 8004104C C644003C */ lwc1 $f4, 0x3c($s2)
/* 01C450 80041050 44820000 */ mtc1 $v0, $f0
/* 01C454 80041054 00000000 */ nop
/* 01C458 80041058 46800020 */ cvt.s.w $f0, $f0
/* 01C45C 8004105C 46002100 */ add.s $f4, $f4, $f0
/* 01C460 80041060 460C7380 */ add.s $f14, $f14, $f12
/* 01C464 80041064 46024200 */ add.s $f8, $f8, $f2
/* 01C468 80041068 44062000 */ mfc1 $a2, $f4
/* 01C46C 8004106C 46065280 */ add.s $f10, $f10, $f6
/* 01C470 80041070 E7AE003C */ swc1 $f14, 0x3c($sp)
/* 01C474 80041074 E7A80044 */ swc1 $f8, 0x44($sp)
/* 01C478 80041078 E7AA0040 */ swc1 $f10, 0x40($sp)
/* 01C47C 8004107C AFA00010 */ sw $zero, 0x10($sp)
/* 01C480 80041080 E7B60014 */ swc1 $f22, 0x14($sp)
/* 01C484 80041084 AFA00018 */ sw $zero, 0x18($sp)
/* 01C488 80041088 AFB0001C */ sw $s0, 0x1c($sp)
/* 01C48C 8004108C 8E450038 */ lw $a1, 0x38($s2)
/* 01C490 80041090 8E470040 */ lw $a3, 0x40($s2)
/* 01C494 80041094 24040003 */ addiu $a0, $zero, 3
.L80041098:
/* 01C498 80041098 0C01C064 */ jal func_80070190
/* 01C49C 8004109C 00000000 */ nop
.L800410A0:
/* 01C4A0 800410A0 8EC20000 */ lw $v0, ($s6)
/* 01C4A4 800410A4 26B50001 */ addiu $s5, $s5, 1
/* 01C4A8 800410A8 02A2102A */ slt $v0, $s5, $v0
/* 01C4AC 800410AC 1440FF77 */ bnez $v0, .L80040E8C
/* 01C4B0 800410B0 00151080 */ sll $v0, $s5, 2
/* 01C4B4 800410B4 080104AF */ j .L800412BC
/* 01C4B8 800410B8 00000000 */ nop
/* 01C4BC 800410BC 0C0B117A */ jal suspend_all_group
/* 01C4C0 800410C0 24040001 */ addiu $a0, $zero, 1
/* 01C4C4 800410C4 8E71008C */ lw $s1, 0x8c($s3)
/* 01C4C8 800410C8 12200007 */ beqz $s1, .L800410E8
/* 01C4CC 800410CC 00000000 */ nop
/* 01C4D0 800410D0 8E22003C */ lw $v0, 0x3c($s1)
/* 01C4D4 800410D4 10400004 */ beqz $v0, .L800410E8
/* 01C4D8 800410D8 00000000 */ nop
/* 01C4DC 800410DC 0C0B1108 */ jal suspend_all_script
/* 01C4E0 800410E0 8E240054 */ lw $a0, 0x54($s1)
/* 01C4E4 800410E4 8E71008C */ lw $s1, 0x8c($s3)
.L800410E8:
/* 01C4E8 800410E8 8E220020 */ lw $v0, 0x20($s1)
/* 01C4EC 800410EC 1040000F */ beqz $v0, .L8004112C
/* 01C4F0 800410F0 2405000A */ addiu $a1, $zero, 0xa
/* 01C4F4 800410F4 0000302D */ daddu $a2, $zero, $zero
/* 01C4F8 800410F8 0040202D */ daddu $a0, $v0, $zero
/* 01C4FC 800410FC 24020005 */ addiu $v0, $zero, 5
/* 01C500 80041100 0C0B0CF8 */ jal start_script
/* 01C504 80041104 A2220005 */ sb $v0, 5($s1)
/* 01C508 80041108 0040202D */ daddu $a0, $v0, $zero
/* 01C50C 8004110C AE240038 */ sw $a0, 0x38($s1)
/* 01C510 80041110 8C820144 */ lw $v0, 0x144($a0)
/* 01C514 80041114 AE220050 */ sw $v0, 0x50($s1)
/* 01C518 80041118 AC910148 */ sw $s1, 0x148($a0)
/* 01C51C 8004111C 86220008 */ lh $v0, 8($s1)
/* 01C520 80041120 AC82014C */ sw $v0, 0x14c($a0)
/* 01C524 80041124 92220006 */ lbu $v0, 6($s1)
/* 01C528 80041128 A0820004 */ sb $v0, 4($a0)
.L8004112C:
/* 01C52C 8004112C 0C03805E */ jal func_800E0178
/* 01C530 80041130 00000000 */ nop
/* 01C534 80041134 0C03BD8A */ jal func_800EF628
/* 01C538 80041138 00000000 */ nop
/* 01C53C 8004113C 0C039769 */ jal set_action_state
/* 01C540 80041140 2404000C */ addiu $a0, $zero, 0xc
/* 01C544 80041144 24040001 */ addiu $a0, $zero, 1
/* 01C548 80041148 AE600090 */ sw $zero, 0x90($s3)
/* 01C54C 8004114C 0C03BCF5 */ jal func_800EF3D4
/* 01C550 80041150 AE600094 */ sw $zero, 0x94($s3)
/* 01C554 80041154 080104BE */ j .L800412F8
/* 01C558 80041158 24020004 */ addiu $v0, $zero, 4
/* 01C55C 8004115C 8E71008C */ lw $s1, 0x8c($s3)
/* 01C560 80041160 8E22003C */ lw $v0, 0x3c($s1)
/* 01C564 80041164 10400004 */ beqz $v0, .L80041178
/* 01C568 80041168 0220B82D */ daddu $s7, $s1, $zero
/* 01C56C 8004116C 8E240054 */ lw $a0, 0x54($s1)
/* 01C570 80041170 0C0B1108 */ jal suspend_all_script
/* 01C574 80041174 00000000 */ nop
.L80041178:
/* 01C578 80041178 8E220044 */ lw $v0, 0x44($s1)
/* 01C57C 8004117C 10400003 */ beqz $v0, .L8004118C
/* 01C580 80041180 00000000 */ nop
/* 01C584 80041184 0C0B1108 */ jal suspend_all_script
/* 01C588 80041188 8E24005C */ lw $a0, 0x5c($s1)
.L8004118C:
/* 01C58C 8004118C 8E760088 */ lw $s6, 0x88($s3)
/* 01C590 80041190 8EC20000 */ lw $v0, ($s6)
/* 01C594 80041194 18400049 */ blez $v0, .L800412BC
/* 01C598 80041198 0000A82D */ daddu $s5, $zero, $zero
/* 01C59C 8004119C 3C01BF80 */ lui $at, 0xbf80
/* 01C5A0 800411A0 4481A000 */ mtc1 $at, $f20
/* 01C5A4 800411A4 241E0003 */ addiu $fp, $zero, 3
/* 01C5A8 800411A8 02C0802D */ daddu $s0, $s6, $zero
.L800411AC:
/* 01C5AC 800411AC 8E110004 */ lw $s1, 4($s0)
/* 01C5B0 800411B0 1220003D */ beqz $s1, .L800412A8
/* 01C5B4 800411B4 00000000 */ nop
/* 01C5B8 800411B8 8E230000 */ lw $v1, ($s1)
/* 01C5BC 800411BC 30620008 */ andi $v0, $v1, 8
/* 01C5C0 800411C0 10400004 */ beqz $v0, .L800411D4
/* 01C5C4 800411C4 30620020 */ andi $v0, $v1, 0x20
/* 01C5C8 800411C8 8E62008C */ lw $v0, 0x8c($s3)
/* 01C5CC 800411CC 16220036 */ bne $s1, $v0, .L800412A8
/* 01C5D0 800411D0 30620020 */ andi $v0, $v1, 0x20
.L800411D4:
/* 01C5D4 800411D4 14400034 */ bnez $v0, .L800412A8
/* 01C5D8 800411D8 00000000 */ nop
/* 01C5DC 800411DC 8EE20000 */ lw $v0, ($s7)
/* 01C5E0 800411E0 30420040 */ andi $v0, $v0, 0x40
/* 01C5E4 800411E4 10400004 */ beqz $v0, .L800411F8
/* 01C5E8 800411E8 00000000 */ nop
/* 01C5EC 800411EC 8E62008C */ lw $v0, 0x8c($s3)
/* 01C5F0 800411F0 1622002D */ bne $s1, $v0, .L800412A8
/* 01C5F4 800411F4 00000000 */ nop
.L800411F8:
/* 01C5F8 800411F8 8E220028 */ lw $v0, 0x28($s1)
/* 01C5FC 800411FC 10400010 */ beqz $v0, .L80041240
/* 01C600 80041200 2405000A */ addiu $a1, $zero, 0xa
/* 01C604 80041204 0000302D */ daddu $a2, $zero, $zero
/* 01C608 80041208 0040202D */ daddu $a0, $v0, $zero
/* 01C60C 8004120C 24020006 */ addiu $v0, $zero, 6
/* 01C610 80041210 0C0B0CF8 */ jal start_script
/* 01C614 80041214 A2220005 */ sb $v0, 5($s1)
/* 01C618 80041218 0040202D */ daddu $a0, $v0, $zero
/* 01C61C 8004121C AE240040 */ sw $a0, 0x40($s1)
/* 01C620 80041220 8C820144 */ lw $v0, 0x144($a0)
/* 01C624 80041224 AE220058 */ sw $v0, 0x58($s1)
/* 01C628 80041228 AC910148 */ sw $s1, 0x148($a0)
/* 01C62C 8004122C 86220008 */ lh $v0, 8($s1)
/* 01C630 80041230 AC82014C */ sw $v0, 0x14c($a0)
/* 01C634 80041234 92220006 */ lbu $v0, 6($s1)
/* 01C638 80041238 08010493 */ j .L8004124C
/* 01C63C 8004123C A0820004 */ sb $v0, 4($a0)
.L80041240:
/* 01C640 80041240 30620001 */ andi $v0, $v1, 1
/* 01C644 80041244 14400018 */ bnez $v0, .L800412A8
/* 01C648 80041248 00000000 */ nop
.L8004124C:
/* 01C64C 8004124C 0C00EABB */ jal get_npc_unsafe
/* 01C650 80041250 86240008 */ lh $a0, 8($s1)
/* 01C654 80041254 0040902D */ daddu $s2, $v0, $zero
/* 01C658 80041258 864200A8 */ lh $v0, 0xa8($s2)
/* 01C65C 8004125C C644003C */ lwc1 $f4, 0x3c($s2)
/* 01C660 80041260 C6420040 */ lwc1 $f2, 0x40($s2)
/* 01C664 80041264 44820000 */ mtc1 $v0, $f0
/* 01C668 80041268 00000000 */ nop
/* 01C66C 8004126C 46800020 */ cvt.s.w $f0, $f0
/* 01C670 80041270 46002100 */ add.s $f4, $f4, $f0
/* 01C674 80041274 C6400038 */ lwc1 $f0, 0x38($s2)
/* 01C678 80041278 44071000 */ mfc1 $a3, $f2
/* 01C67C 8004127C 44050000 */ mfc1 $a1, $f0
/* 01C680 80041280 44062000 */ mfc1 $a2, $f4
/* 01C684 80041284 24040003 */ addiu $a0, $zero, 3
/* 01C688 80041288 AFA70044 */ sw $a3, 0x44($sp)
/* 01C68C 8004128C AFA5003C */ sw $a1, 0x3c($sp)
/* 01C690 80041290 AFA60040 */ sw $a2, 0x40($sp)
/* 01C694 80041294 AFA00010 */ sw $zero, 0x10($sp)
/* 01C698 80041298 E7B40014 */ swc1 $f20, 0x14($sp)
/* 01C69C 8004129C AFA00018 */ sw $zero, 0x18($sp)
/* 01C6A0 800412A0 0C01C064 */ jal func_80070190
/* 01C6A4 800412A4 AFBE001C */ sw $fp, 0x1c($sp)
.L800412A8:
/* 01C6A8 800412A8 8EC20000 */ lw $v0, ($s6)
/* 01C6AC 800412AC 26B50001 */ addiu $s5, $s5, 1
/* 01C6B0 800412B0 02A2102A */ slt $v0, $s5, $v0
/* 01C6B4 800412B4 1440FFBD */ bnez $v0, .L800411AC
/* 01C6B8 800412B8 26100004 */ addiu $s0, $s0, 4
.L800412BC:
/* 01C6BC 800412BC 0C03805E */ jal func_800E0178
/* 01C6C0 800412C0 00000000 */ nop
/* 01C6C4 800412C4 0C03BD8A */ jal func_800EF628
/* 01C6C8 800412C8 00000000 */ nop
/* 01C6CC 800412CC 0000202D */ daddu $a0, $zero, $zero
/* 01C6D0 800412D0 AE600090 */ sw $zero, 0x90($s3)
/* 01C6D4 800412D4 AE600094 */ sw $zero, 0x94($s3)
/* 01C6D8 800412D8 A2600012 */ sb $zero, 0x12($s3)
/* 01C6DC 800412DC 8E820000 */ lw $v0, ($s4)
/* 01C6E0 800412E0 3C030004 */ lui $v1, 4
/* 01C6E4 800412E4 00431025 */ or $v0, $v0, $v1
/* 01C6E8 800412E8 AE820000 */ sw $v0, ($s4)
.L800412EC:
/* 01C6EC 800412EC 0C05272D */ jal play_sound
/* 01C6F0 800412F0 00000000 */ nop
/* 01C6F4 800412F4 24020003 */ addiu $v0, $zero, 3
.L800412F8:
/* 01C6F8 800412F8 3C01800A */ lui $at, 0x800a
/* 01C6FC 800412FC AC22A600 */ sw $v0, -0x5a00($at)
/* 01C700 80041300 24020001 */ addiu $v0, $zero, 1
.L80041304:
/* 01C704 80041304 3C01800A */ lui $at, 0x800a
/* 01C708 80041308 AC22A678 */ sw $v0, -0x5988($at)
/* 01C70C 8004130C 3C01800A */ lui $at, 0x800a
/* 01C710 80041310 AC20A5D0 */ sw $zero, -0x5a30($at)
.L80041314:
/* 01C714 80041314 8FBF008C */ lw $ra, 0x8c($sp)
/* 01C718 80041318 8FBE0088 */ lw $fp, 0x88($sp)
/* 01C71C 8004131C 8FB70084 */ lw $s7, 0x84($sp)
/* 01C720 80041320 8FB60080 */ lw $s6, 0x80($sp)
/* 01C724 80041324 8FB5007C */ lw $s5, 0x7c($sp)
/* 01C728 80041328 8FB40078 */ lw $s4, 0x78($sp)
/* 01C72C 8004132C 8FB30074 */ lw $s3, 0x74($sp)
/* 01C730 80041330 8FB20070 */ lw $s2, 0x70($sp)
/* 01C734 80041334 8FB1006C */ lw $s1, 0x6c($sp)
/* 01C738 80041338 8FB00068 */ lw $s0, 0x68($sp)
/* 01C73C 8004133C D7BE00B8 */ ldc1 $f30, 0xb8($sp)
/* 01C740 80041340 D7BC00B0 */ ldc1 $f28, 0xb0($sp)
/* 01C744 80041344 D7BA00A8 */ ldc1 $f26, 0xa8($sp)
/* 01C748 80041348 D7B800A0 */ ldc1 $f24, 0xa0($sp)
/* 01C74C 8004134C D7B60098 */ ldc1 $f22, 0x98($sp)
/* 01C750 80041350 D7B40090 */ ldc1 $f20, 0x90($sp)
/* 01C754 80041354 03E00008 */ jr $ra
/* 01C758 80041358 27BD00C0 */ addiu $sp, $sp, 0xc0