mk64/asm/audio/effects.s

782 lines
35 KiB
ArmAsm

# Mario Kart 64 (U) disassembly and split file
# generated by n64split v0.4a - N64 ROM splitter
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64
.include "macros.inc"
.section .text, "ax"
glabel func_800BDE50
/* 0BEA50 800BDE50 8C820000 */ lw $v0, ($a0)
/* 0BEA54 800BDE54 00003025 */ move $a2, $zero
/* 0BEA58 800BDE58 00803825 */ move $a3, $a0
/* 0BEA5C 800BDE5C 00027A40 */ sll $t7, $v0, 9
/* 0BEA60 800BDE60 05E00003 */ bltz $t7, .L800BDE70
/* 0BEA64 800BDE64 24090010 */ li $t1, 16
/* 0BEA68 800BDE68 50A00016 */ beql $a1, $zero, .L800BDEC4
/* 0BEA6C 800BDE6C 00027280 */ sll $t6, $v0, 0xa
.L800BDE70:
/* 0BEA70 800BDE70 C4840024 */ lwc1 $f4, 0x24($a0)
/* 0BEA74 800BDE74 C4860020 */ lwc1 $f6, 0x20($a0)
/* 0BEA78 800BDE78 8C820044 */ lw $v0, 0x44($a0)
/* 0BEA7C 800BDE7C 46062202 */ mul.s $f8, $f4, $f6
/* 0BEA80 800BDE80 C44A002C */ lwc1 $f10, 0x2c($v0)
/* 0BEA84 800BDE84 8C580000 */ lw $t8, ($v0)
/* 0BEA88 800BDE88 00185080 */ sll $t2, $t8, 2
/* 0BEA8C 800BDE8C 460A4002 */ mul.s $f0, $f8, $f10
/* 0BEA90 800BDE90 05410008 */ bgez $t2, .L800BDEB4
/* 0BEA94 800BDE94 00000000 */ nop
/* 0BEA98 800BDE98 908B0003 */ lbu $t3, 3($a0)
/* 0BEA9C 800BDE9C 316C0020 */ andi $t4, $t3, 0x20
/* 0BEAA0 800BDEA0 11800004 */ beqz $t4, .L800BDEB4
/* 0BEAA4 800BDEA4 00000000 */ nop
/* 0BEAA8 800BDEA8 C4500024 */ lwc1 $f16, 0x24($v0)
/* 0BEAAC 800BDEAC 46008002 */ mul.s $f0, $f16, $f0
/* 0BEAB0 800BDEB0 00000000 */ nop
.L800BDEB4:
/* 0BEAB4 800BDEB4 46000482 */ mul.s $f18, $f0, $f0
/* 0BEAB8 800BDEB8 8C820000 */ lw $v0, ($a0)
/* 0BEABC 800BDEBC E492002C */ swc1 $f18, 0x2c($a0)
/* 0BEAC0 800BDEC0 00027280 */ sll $t6, $v0, 0xa
.L800BDEC4:
/* 0BEAC4 800BDEC4 05C10007 */ bgez $t6, .L800BDEE4
/* 0BEAC8 800BDEC8 24080080 */ li $t0, 128
/* 0BEACC 800BDECC 908F0009 */ lbu $t7, 9($a0)
/* 0BEAD0 800BDED0 9098000A */ lbu $t8, 0xa($a0)
/* 0BEAD4 800BDED4 01F80019 */ multu $t7, $t8
/* 0BEAD8 800BDED8 0000C812 */ mflo $t9
/* 0BEADC 800BDEDC AC990028 */ sw $t9, 0x28($a0)
/* 0BEAE0 800BDEE0 00000000 */ nop
.L800BDEE4:
/* 0BEAE4 800BDEE4 8CE30048 */ lw $v1, 0x48($a3)
/* 0BEAE8 800BDEE8 24C60004 */ addiu $a2, $a2, 4
/* 0BEAEC 800BDEEC 1060003E */ beqz $v1, .L800BDFE8
/* 0BEAF0 800BDEF0 00000000 */ nop
/* 0BEAF4 800BDEF4 8C620000 */ lw $v0, ($v1)
/* 0BEAF8 800BDEF8 000257C2 */ srl $t2, $v0, 0x1f
/* 0BEAFC 800BDEFC 1140003A */ beqz $t2, .L800BDFE8
/* 0BEB00 800BDF00 00000000 */ nop
/* 0BEB04 800BDF04 8C6B0040 */ lw $t3, 0x40($v1)
/* 0BEB08 800BDF08 00026940 */ sll $t5, $v0, 5
/* 0BEB0C 800BDF0C 11600036 */ beqz $t3, .L800BDFE8
/* 0BEB10 800BDF10 00000000 */ nop
/* 0BEB14 800BDF14 05A30017 */ bgezl $t5, .L800BDF74
/* 0BEB18 800BDF18 80980001 */ lb $t8, 1($a0)
/* 0BEB1C 800BDF1C C4640024 */ lwc1 $f4, 0x24($v1)
/* 0BEB20 800BDF20 C4860030 */ lwc1 $f6, 0x30($a0)
/* 0BEB24 800BDF24 C46A0028 */ lwc1 $f10, 0x28($v1)
/* 0BEB28 800BDF28 906E0005 */ lbu $t6, 5($v1)
/* 0BEB2C 800BDF2C 46062202 */ mul.s $f8, $f4, $f6
/* 0BEB30 800BDF30 906D0000 */ lbu $t5, ($v1)
/* 0BEB34 800BDF34 E4680030 */ swc1 $f8, 0x30($v1)
/* 0BEB38 800BDF38 C490002C */ lwc1 $f16, 0x2c($a0)
/* 0BEB3C 800BDF3C 46105482 */ mul.s $f18, $f10, $f16
/* 0BEB40 800BDF40 E472002C */ swc1 $f18, 0x2c($v1)
/* 0BEB44 800BDF44 908F000A */ lbu $t7, 0xa($a0)
/* 0BEB48 800BDF48 8C8A0028 */ lw $t2, 0x28($a0)
/* 0BEB4C 800BDF4C 010FC023 */ subu $t8, $t0, $t7
/* 0BEB50 800BDF50 01D80019 */ multu $t6, $t8
/* 0BEB54 800BDF54 31AFFFFB */ andi $t7, $t5, 0xfffb
/* 0BEB58 800BDF58 A06F0000 */ sb $t7, ($v1)
/* 0BEB5C 800BDF5C 0000C812 */ mflo $t9
/* 0BEB60 800BDF60 01595821 */ addu $t3, $t2, $t9
/* 0BEB64 800BDF64 000B61C3 */ sra $t4, $t3, 7
/* 0BEB68 800BDF68 1000001F */ b .L800BDFE8
/* 0BEB6C 800BDF6C A06C0006 */ sb $t4, 6($v1)
/* 0BEB70 800BDF70 80980001 */ lb $t8, 1($a0)
.L800BDF74:
/* 0BEB74 800BDF74 07030006 */ bgezl $t8, .L800BDF90
/* 0BEB78 800BDF78 8C820000 */ lw $v0, ($a0)
/* 0BEB7C 800BDF7C C4640024 */ lwc1 $f4, 0x24($v1)
/* 0BEB80 800BDF80 C4860030 */ lwc1 $f6, 0x30($a0)
/* 0BEB84 800BDF84 46062202 */ mul.s $f8, $f4, $f6
/* 0BEB88 800BDF88 E4680030 */ swc1 $f8, 0x30($v1)
/* 0BEB8C 800BDF8C 8C820000 */ lw $v0, ($a0)
.L800BDF90:
/* 0BEB90 800BDF90 0002CA40 */ sll $t9, $v0, 9
/* 0BEB94 800BDF94 07220004 */ bltzl $t9, .L800BDFA8
/* 0BEB98 800BDF98 C46A0028 */ lwc1 $f10, 0x28($v1)
/* 0BEB9C 800BDF9C 50A00007 */ beql $a1, $zero, .L800BDFBC
/* 0BEBA0 800BDFA0 00026280 */ sll $t4, $v0, 0xa
/* 0BEBA4 800BDFA4 C46A0028 */ lwc1 $f10, 0x28($v1)
.L800BDFA8:
/* 0BEBA8 800BDFA8 C490002C */ lwc1 $f16, 0x2c($a0)
/* 0BEBAC 800BDFAC 46105482 */ mul.s $f18, $f10, $f16
/* 0BEBB0 800BDFB0 E472002C */ swc1 $f18, 0x2c($v1)
/* 0BEBB4 800BDFB4 8C820000 */ lw $v0, ($a0)
/* 0BEBB8 800BDFB8 00026280 */ sll $t4, $v0, 0xa
.L800BDFBC:
/* 0BEBBC 800BDFBC 0581000A */ bgez $t4, .L800BDFE8
/* 0BEBC0 800BDFC0 00000000 */ nop
/* 0BEBC4 800BDFC4 908F000A */ lbu $t7, 0xa($a0)
/* 0BEBC8 800BDFC8 906D0005 */ lbu $t5, 5($v1)
/* 0BEBCC 800BDFCC 8C8A0028 */ lw $t2, 0x28($a0)
/* 0BEBD0 800BDFD0 010F7023 */ subu $t6, $t0, $t7
/* 0BEBD4 800BDFD4 01AE0019 */ multu $t5, $t6
/* 0BEBD8 800BDFD8 0000C012 */ mflo $t8
/* 0BEBDC 800BDFDC 0158C821 */ addu $t9, $t2, $t8
/* 0BEBE0 800BDFE0 001959C3 */ sra $t3, $t9, 7
/* 0BEBE4 800BDFE4 A06B0006 */ sb $t3, 6($v1)
.L800BDFE8:
/* 0BEBE8 800BDFE8 14C9FFBE */ bne $a2, $t1, .L800BDEE4
/* 0BEBEC 800BDFEC 24E70004 */ addiu $a3, $a3, 4
/* 0BEBF0 800BDFF0 03E00008 */ jr $ra
/* 0BEBF4 800BDFF4 A0800001 */ sb $zero, 1($a0)
glabel func_800BDFF8
/* 0BEBF8 800BDFF8 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 0BEBFC 800BDFFC AFBF002C */ sw $ra, 0x2c($sp)
/* 0BEC00 800BE000 AFB50028 */ sw $s5, 0x28($sp)
/* 0BEC04 800BE004 AFB40024 */ sw $s4, 0x24($sp)
/* 0BEC08 800BE008 AFB30020 */ sw $s3, 0x20($sp)
/* 0BEC0C 800BE00C AFB2001C */ sw $s2, 0x1c($sp)
/* 0BEC10 800BE010 AFB10018 */ sw $s1, 0x18($sp)
/* 0BEC14 800BE014 AFB00014 */ sw $s0, 0x14($sp)
/* 0BEC18 800BE018 948E0010 */ lhu $t6, 0x10($a0)
/* 0BEC1C 800BE01C 3C15803B */ lui $s5, %hi(D_803B5EF0) # $s5, 0x803b
/* 0BEC20 800BE020 00809825 */ move $s3, $a0
/* 0BEC24 800BE024 11C00025 */ beqz $t6, .L800BE0BC
/* 0BEC28 800BE028 26B55EF0 */ addiu $s5, %lo(D_803B5EF0) # addiu $s5, $s5, 0x5ef0
/* 0BEC2C 800BE02C C4840018 */ lwc1 $f4, 0x18($a0)
/* 0BEC30 800BE030 C486001C */ lwc1 $f6, 0x1c($a0)
/* 0BEC34 800BE034 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 0BEC38 800BE038 44811000 */ mtc1 $at, $f2
/* 0BEC3C 800BE03C 46062200 */ add.s $f8, $f4, $f6
/* 0BEC40 800BE040 90980000 */ lbu $t8, ($a0)
/* 0BEC44 800BE044 E4880018 */ swc1 $f8, 0x18($a0)
/* 0BEC48 800BE048 C4800018 */ lwc1 $f0, 0x18($a0)
/* 0BEC4C 800BE04C 37190004 */ ori $t9, $t8, 4
/* 0BEC50 800BE050 A0990000 */ sb $t9, ($a0)
/* 0BEC54 800BE054 4600103C */ c.lt.s $f2, $f0
/* 0BEC58 800BE058 00000000 */ nop
/* 0BEC5C 800BE05C 45020004 */ bc1fl .L800BE070
/* 0BEC60 800BE060 44801000 */ mtc1 $zero, $f2
/* 0BEC64 800BE064 E4820018 */ swc1 $f2, 0x18($a0)
/* 0BEC68 800BE068 C4800018 */ lwc1 $f0, 0x18($a0)
/* 0BEC6C 800BE06C 44801000 */ mtc1 $zero, $f2
.L800BE070:
/* 0BEC70 800BE070 00000000 */ nop
/* 0BEC74 800BE074 4602003C */ c.lt.s $f0, $f2
/* 0BEC78 800BE078 00000000 */ nop
/* 0BEC7C 800BE07C 45020003 */ bc1fl .L800BE08C
/* 0BEC80 800BE080 96680010 */ lhu $t0, 0x10($s3)
/* 0BEC84 800BE084 E6620018 */ swc1 $f2, 0x18($s3)
/* 0BEC88 800BE088 96680010 */ lhu $t0, 0x10($s3)
.L800BE08C:
/* 0BEC8C 800BE08C 2509FFFF */ addiu $t1, $t0, -1
/* 0BEC90 800BE090 312AFFFF */ andi $t2, $t1, 0xffff
/* 0BEC94 800BE094 15400009 */ bnez $t2, .L800BE0BC
/* 0BEC98 800BE098 A6690010 */ sh $t1, 0x10($s3)
/* 0BEC9C 800BE09C 926B0001 */ lbu $t3, 1($s3)
/* 0BECA0 800BE0A0 24010002 */ li $at, 2
/* 0BECA4 800BE0A4 55610006 */ bnel $t3, $at, .L800BE0C0
/* 0BECA8 800BE0A8 8E6C0000 */ lw $t4, ($s3)
/* 0BECAC 800BE0AC 0C02FBCB */ jal func_800BEF2C
/* 0BECB0 800BE0B0 02602025 */ move $a0, $s3
/* 0BECB4 800BE0B4 10000020 */ b .L800BE138
/* 0BECB8 800BE0B8 8FBF002C */ lw $ra, 0x2c($sp)
.L800BE0BC:
/* 0BECBC 800BE0BC 8E6C0000 */ lw $t4, ($s3)
.L800BE0C0:
/* 0BECC0 800BE0C0 00008025 */ move $s0, $zero
/* 0BECC4 800BE0C4 02608825 */ move $s1, $s3
/* 0BECC8 800BE0C8 000C7140 */ sll $t6, $t4, 5
/* 0BECCC 800BE0CC 05C10005 */ bgez $t6, .L800BE0E4
/* 0BECD0 800BE0D0 24140040 */ li $s4, 64
/* 0BECD4 800BE0D4 C66A0018 */ lwc1 $f10, 0x18($s3)
/* 0BECD8 800BE0D8 C6700028 */ lwc1 $f16, 0x28($s3)
/* 0BECDC 800BE0DC 46105482 */ mul.s $f18, $f10, $f16
/* 0BECE0 800BE0E0 E672002C */ swc1 $f18, 0x2c($s3)
.L800BE0E4:
/* 0BECE4 800BE0E4 24120001 */ li $s2, 1
.L800BE0E8:
/* 0BECE8 800BE0E8 8E240030 */ lw $a0, 0x30($s1)
/* 0BECEC 800BE0EC 02A47826 */ xor $t7, $s5, $a0
/* 0BECF0 800BE0F0 000F782B */ sltu $t7, $zero, $t7
/* 0BECF4 800BE0F4 564F000A */ bnel $s2, $t7, .L800BE120
/* 0BECF8 800BE0F8 26100004 */ addiu $s0, $s0, 4
/* 0BECFC 800BE0FC 8C980000 */ lw $t8, ($a0)
/* 0BED00 800BE100 0018CFC2 */ srl $t9, $t8, 0x1f
/* 0BED04 800BE104 56590006 */ bnel $s2, $t9, .L800BE120
/* 0BED08 800BE108 26100004 */ addiu $s0, $s0, 4
/* 0BED0C 800BE10C 8E650000 */ lw $a1, ($s3)
/* 0BED10 800BE110 00054140 */ sll $t0, $a1, 5
/* 0BED14 800BE114 0C02F794 */ jal func_800BDE50
/* 0BED18 800BE118 00082FC2 */ srl $a1, $t0, 0x1f
/* 0BED1C 800BE11C 26100004 */ addiu $s0, $s0, 4
.L800BE120:
/* 0BED20 800BE120 1614FFF1 */ bne $s0, $s4, .L800BE0E8
/* 0BED24 800BE124 26310004 */ addiu $s1, $s1, 4
/* 0BED28 800BE128 926A0000 */ lbu $t2, ($s3)
/* 0BED2C 800BE12C 314BFFFB */ andi $t3, $t2, 0xfffb
/* 0BED30 800BE130 A26B0000 */ sb $t3, ($s3)
/* 0BED34 800BE134 8FBF002C */ lw $ra, 0x2c($sp)
.L800BE138:
/* 0BED38 800BE138 8FB00014 */ lw $s0, 0x14($sp)
/* 0BED3C 800BE13C 8FB10018 */ lw $s1, 0x18($sp)
/* 0BED40 800BE140 8FB2001C */ lw $s2, 0x1c($sp)
/* 0BED44 800BE144 8FB30020 */ lw $s3, 0x20($sp)
/* 0BED48 800BE148 8FB40024 */ lw $s4, 0x24($sp)
/* 0BED4C 800BE14C 8FB50028 */ lw $s5, 0x28($sp)
/* 0BED50 800BE150 03E00008 */ jr $ra
/* 0BED54 800BE154 27BD0030 */ addiu $sp, $sp, 0x30
glabel func_800BE158
/* 0BED58 800BE158 C4840004 */ lwc1 $f4, 4($a0)
/* 0BED5C 800BE15C C4860008 */ lwc1 $f6, 8($a0)
/* 0BED60 800BE160 24020001 */ li $v0, 1
/* 0BED64 800BE164 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000
/* 0BED68 800BE168 46062200 */ add.s $f8, $f4, $f6
/* 0BED6C 800BE16C E4880004 */ swc1 $f8, 4($a0)
/* 0BED70 800BE170 444EF800 */ cfc1 $t6, $31
/* 0BED74 800BE174 44C2F800 */ ctc1 $v0, $31
/* 0BED78 800BE178 C48A0004 */ lwc1 $f10, 4($a0)
/* 0BED7C 800BE17C 46005424 */ cvt.w.s $f16, $f10
/* 0BED80 800BE180 4442F800 */ cfc1 $v0, $31
/* 0BED84 800BE184 00000000 */ nop
/* 0BED88 800BE188 30420078 */ andi $v0, $v0, 0x78
/* 0BED8C 800BE18C 50400013 */ beql $v0, $zero, .L800BE1DC
/* 0BED90 800BE190 44028000 */ mfc1 $v0, $f16
/* 0BED94 800BE194 44818000 */ mtc1 $at, $f16
/* 0BED98 800BE198 24020001 */ li $v0, 1
/* 0BED9C 800BE19C 46105401 */ sub.s $f16, $f10, $f16
/* 0BEDA0 800BE1A0 44C2F800 */ ctc1 $v0, $31
/* 0BEDA4 800BE1A4 00000000 */ nop
/* 0BEDA8 800BE1A8 46008424 */ cvt.w.s $f16, $f16
/* 0BEDAC 800BE1AC 4442F800 */ cfc1 $v0, $31
/* 0BEDB0 800BE1B0 00000000 */ nop
/* 0BEDB4 800BE1B4 30420078 */ andi $v0, $v0, 0x78
/* 0BEDB8 800BE1B8 14400005 */ bnez $v0, .L800BE1D0
/* 0BEDBC 800BE1BC 00000000 */ nop
/* 0BEDC0 800BE1C0 44028000 */ mfc1 $v0, $f16
/* 0BEDC4 800BE1C4 3C018000 */ lui $at, 0x8000
/* 0BEDC8 800BE1C8 10000007 */ b .L800BE1E8
/* 0BEDCC 800BE1CC 00411025 */ or $v0, $v0, $at
.L800BE1D0:
/* 0BEDD0 800BE1D0 10000005 */ b .L800BE1E8
/* 0BEDD4 800BE1D4 2402FFFF */ li $v0, -1
/* 0BEDD8 800BE1D8 44028000 */ mfc1 $v0, $f16
.L800BE1DC:
/* 0BEDDC 800BE1DC 00000000 */ nop
/* 0BEDE0 800BE1E0 0440FFFB */ bltz $v0, .L800BE1D0
/* 0BEDE4 800BE1E4 00000000 */ nop
.L800BE1E8:
/* 0BEDE8 800BE1E8 44CEF800 */ ctc1 $t6, $31
/* 0BEDEC 800BE1EC 2C410080 */ sltiu $at, $v0, 0x80
/* 0BEDF0 800BE1F0 54200003 */ bnel $at, $zero, .L800BE200
/* 0BEDF4 800BE1F4 3C013F80 */ lui $at, 0x3f80
/* 0BEDF8 800BE1F8 2402007F */ li $v0, 127
/* 0BEDFC 800BE1FC 3C013F80 */ li $at, 0x3F800000 # 1.000000
.L800BE200:
/* 0BEE00 800BE200 44816000 */ mtc1 $at, $f12
/* 0BEE04 800BE204 3C01800F */ lui $at, %hi(gPitchBendFrequencyScale + 0x200)
/* 0BEE08 800BE208 00027880 */ sll $t7, $v0, 2
/* 0BEE0C 800BE20C 002F0821 */ addu $at, $at, $t7
/* 0BEE10 800BE210 C4325E20 */ lwc1 $f18, %lo(gPitchBendFrequencyScale + 0x200)($at)
/* 0BEE14 800BE214 C486000C */ lwc1 $f6, 0xc($a0)
/* 0BEE18 800BE218 460C9101 */ sub.s $f4, $f18, $f12
/* 0BEE1C 800BE21C 46062202 */ mul.s $f8, $f4, $f6
/* 0BEE20 800BE220 460C4080 */ add.s $f2, $f8, $f12
/* 0BEE24 800BE224 03E00008 */ jr $ra
/* 0BEE28 800BE228 46001006 */ mov.s $f0, $f2
glabel func_800BE22C
/* 0BEE2C 800BE22C C4840010 */ lwc1 $f4, 0x10($a0)
/* 0BEE30 800BE230 8C8E0004 */ lw $t6, 4($a0)
/* 0BEE34 800BE234 8C8A0008 */ lw $t2, 8($a0)
/* 0BEE38 800BE238 4600218D */ trunc.w.s $f6, $f4
/* 0BEE3C 800BE23C 44183000 */ mfc1 $t8, $f6
/* 0BEE40 800BE240 00000000 */ nop
/* 0BEE44 800BE244 01D8C821 */ addu $t9, $t6, $t8
/* 0BEE48 800BE248 00194282 */ srl $t0, $t9, 0xa
/* 0BEE4C 800BE24C 3109003F */ andi $t1, $t0, 0x3f
/* 0BEE50 800BE250 00095840 */ sll $t3, $t1, 1
/* 0BEE54 800BE254 AC990004 */ sw $t9, 4($a0)
/* 0BEE58 800BE258 014B6021 */ addu $t4, $t2, $t3
/* 0BEE5C 800BE25C 85820000 */ lh $v0, ($t4)
/* 0BEE60 800BE260 00026A03 */ sra $t5, $v0, 8
/* 0BEE64 800BE264 000D7C00 */ sll $t7, $t5, 0x10
/* 0BEE68 800BE268 03E00008 */ jr $ra
/* 0BEE6C 800BE26C 000F1403 */ sra $v0, $t7, 0x10
glabel func_800BE270
/* 0BEE70 800BE270 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 0BEE74 800BE274 AFBF0014 */ sw $ra, 0x14($sp)
/* 0BEE78 800BE278 9482001A */ lhu $v0, 0x1a($a0)
/* 0BEE7C 800BE27C 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 0BEE80 800BE280 10400004 */ beqz $v0, .L800BE294
/* 0BEE84 800BE284 244EFFFF */ addiu $t6, $v0, -1
/* 0BEE88 800BE288 44810000 */ mtc1 $at, $f0
/* 0BEE8C 800BE28C 10000072 */ b .L800BE458
/* 0BEE90 800BE290 A48E001A */ sh $t6, 0x1a($a0)
.L800BE294:
/* 0BEE94 800BE294 94820018 */ lhu $v0, 0x18($a0)
/* 0BEE98 800BE298 24010001 */ li $at, 1
/* 0BEE9C 800BE29C 5040001C */ beql $v0, $zero, .L800BE310
/* 0BEEA0 800BE2A0 C48A000C */ lwc1 $f10, 0xc($a0)
/* 0BEEA4 800BE2A4 14410009 */ bne $v0, $at, .L800BE2CC
/* 0BEEA8 800BE2A8 00401825 */ move $v1, $v0
/* 0BEEAC 800BE2AC 8C8F0000 */ lw $t7, ($a0)
/* 0BEEB0 800BE2B0 94820018 */ lhu $v0, 0x18($a0)
/* 0BEEB4 800BE2B4 95F80012 */ lhu $t8, 0x12($t7)
/* 0BEEB8 800BE2B8 44982000 */ mtc1 $t8, $f4
/* 0BEEBC 800BE2BC 00000000 */ nop
/* 0BEEC0 800BE2C0 468021A0 */ cvt.s.w $f6, $f4
/* 0BEEC4 800BE2C4 1000000D */ b .L800BE2FC
/* 0BEEC8 800BE2C8 E486000C */ swc1 $f6, 0xc($a0)
.L800BE2CC:
/* 0BEECC 800BE2CC 8C990000 */ lw $t9, ($a0)
/* 0BEED0 800BE2D0 44839000 */ mtc1 $v1, $f18
/* 0BEED4 800BE2D4 C480000C */ lwc1 $f0, 0xc($a0)
/* 0BEED8 800BE2D8 97280012 */ lhu $t0, 0x12($t9)
/* 0BEEDC 800BE2DC 46809120 */ cvt.s.w $f4, $f18
/* 0BEEE0 800BE2E0 44884000 */ mtc1 $t0, $f8
/* 0BEEE4 800BE2E4 00000000 */ nop
/* 0BEEE8 800BE2E8 468042A0 */ cvt.s.w $f10, $f8
/* 0BEEEC 800BE2EC 46005401 */ sub.s $f16, $f10, $f0
/* 0BEEF0 800BE2F0 46048183 */ div.s $f6, $f16, $f4
/* 0BEEF4 800BE2F4 46060200 */ add.s $f8, $f0, $f6
/* 0BEEF8 800BE2F8 E488000C */ swc1 $f8, 0xc($a0)
.L800BE2FC:
/* 0BEEFC 800BE2FC 2449FFFF */ addiu $t1, $v0, -1
/* 0BEF00 800BE300 A4890018 */ sh $t1, 0x18($a0)
/* 0BEF04 800BE304 10000011 */ b .L800BE34C
/* 0BEF08 800BE308 8C830000 */ lw $v1, ($a0)
/* 0BEF0C 800BE30C C48A000C */ lwc1 $f10, 0xc($a0)
.L800BE310:
/* 0BEF10 800BE310 8C830000 */ lw $v1, ($a0)
/* 0BEF14 800BE314 4600548D */ trunc.w.s $f18, $f10
/* 0BEF18 800BE318 946C0012 */ lhu $t4, 0x12($v1)
/* 0BEF1C 800BE31C 440B9000 */ mfc1 $t3, $f18
/* 0BEF20 800BE320 00000000 */ nop
/* 0BEF24 800BE324 516C000A */ beql $t3, $t4, .L800BE350
/* 0BEF28 800BE328 94820016 */ lhu $v0, 0x16($a0)
/* 0BEF2C 800BE32C 94620016 */ lhu $v0, 0x16($v1)
/* 0BEF30 800BE330 14400006 */ bnez $v0, .L800BE34C
/* 0BEF34 800BE334 A4820018 */ sh $v0, 0x18($a0)
/* 0BEF38 800BE338 946D0012 */ lhu $t5, 0x12($v1)
/* 0BEF3C 800BE33C 448D8000 */ mtc1 $t5, $f16
/* 0BEF40 800BE340 00000000 */ nop
/* 0BEF44 800BE344 46808120 */ cvt.s.w $f4, $f16
/* 0BEF48 800BE348 E484000C */ swc1 $f4, 0xc($a0)
.L800BE34C:
/* 0BEF4C 800BE34C 94820016 */ lhu $v0, 0x16($a0)
.L800BE350:
/* 0BEF50 800BE350 24010001 */ li $at, 1
/* 0BEF54 800BE354 50400018 */ beql $v0, $zero, .L800BE3B8
/* 0BEF58 800BE358 C4920010 */ lwc1 $f18, 0x10($a0)
/* 0BEF5C 800BE35C 14410008 */ bne $v0, $at, .L800BE380
/* 0BEF60 800BE360 00402825 */ move $a1, $v0
/* 0BEF64 800BE364 946E0010 */ lhu $t6, 0x10($v1)
/* 0BEF68 800BE368 94820016 */ lhu $v0, 0x16($a0)
/* 0BEF6C 800BE36C 448E3000 */ mtc1 $t6, $f6
/* 0BEF70 800BE370 00000000 */ nop
/* 0BEF74 800BE374 46803220 */ cvt.s.w $f8, $f6
/* 0BEF78 800BE378 1000000B */ b .L800BE3A8
/* 0BEF7C 800BE37C E4880010 */ swc1 $f8, 0x10($a0)
.L800BE380:
/* 0BEF80 800BE380 946F0010 */ lhu $t7, 0x10($v1)
/* 0BEF84 800BE384 44852000 */ mtc1 $a1, $f4
/* 0BEF88 800BE388 C4800010 */ lwc1 $f0, 0x10($a0)
/* 0BEF8C 800BE38C 448F5000 */ mtc1 $t7, $f10
/* 0BEF90 800BE390 468021A0 */ cvt.s.w $f6, $f4
/* 0BEF94 800BE394 468054A0 */ cvt.s.w $f18, $f10
/* 0BEF98 800BE398 46009401 */ sub.s $f16, $f18, $f0
/* 0BEF9C 800BE39C 46068203 */ div.s $f8, $f16, $f6
/* 0BEFA0 800BE3A0 46080280 */ add.s $f10, $f0, $f8
/* 0BEFA4 800BE3A4 E48A0010 */ swc1 $f10, 0x10($a0)
.L800BE3A8:
/* 0BEFA8 800BE3A8 2458FFFF */ addiu $t8, $v0, -1
/* 0BEFAC 800BE3AC 10000010 */ b .L800BE3F0
/* 0BEFB0 800BE3B0 A4980016 */ sh $t8, 0x16($a0)
/* 0BEFB4 800BE3B4 C4920010 */ lwc1 $f18, 0x10($a0)
.L800BE3B8:
/* 0BEFB8 800BE3B8 94690010 */ lhu $t1, 0x10($v1)
/* 0BEFBC 800BE3BC 4600910D */ trunc.w.s $f4, $f18
/* 0BEFC0 800BE3C0 44082000 */ mfc1 $t0, $f4
/* 0BEFC4 800BE3C4 00000000 */ nop
/* 0BEFC8 800BE3C8 5109000A */ beql $t0, $t1, .L800BE3F4
/* 0BEFCC 800BE3CC 44804000 */ mtc1 $zero, $f8
/* 0BEFD0 800BE3D0 94620014 */ lhu $v0, 0x14($v1)
/* 0BEFD4 800BE3D4 14400006 */ bnez $v0, .L800BE3F0
/* 0BEFD8 800BE3D8 A4820016 */ sh $v0, 0x16($a0)
/* 0BEFDC 800BE3DC 946A0010 */ lhu $t2, 0x10($v1)
/* 0BEFE0 800BE3E0 448A8000 */ mtc1 $t2, $f16
/* 0BEFE4 800BE3E4 00000000 */ nop
/* 0BEFE8 800BE3E8 468081A0 */ cvt.s.w $f6, $f16
/* 0BEFEC 800BE3EC E4860010 */ swc1 $f6, 0x10($a0)
.L800BE3F0:
/* 0BEFF0 800BE3F0 44804000 */ mtc1 $zero, $f8
.L800BE3F4:
/* 0BEFF4 800BE3F4 C48A000C */ lwc1 $f10, 0xc($a0)
/* 0BEFF8 800BE3F8 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 0BEFFC 800BE3FC 460A4032 */ c.eq.s $f8, $f10
/* 0BF000 800BE400 00000000 */ nop
/* 0BF004 800BE404 45000004 */ bc1f .L800BE418
/* 0BF008 800BE408 00000000 */ nop
/* 0BF00C 800BE40C 44810000 */ mtc1 $at, $f0
/* 0BF010 800BE410 10000012 */ b .L800BE45C
/* 0BF014 800BE414 8FBF0014 */ lw $ra, 0x14($sp)
.L800BE418:
/* 0BF018 800BE418 0C02F88B */ jal func_800BE22C
/* 0BF01C 800BE41C AFA40018 */ sw $a0, 0x18($sp)
/* 0BF020 800BE420 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 0BF024 800BE424 44817000 */ mtc1 $at, $f14
/* 0BF028 800BE428 8FA40018 */ lw $a0, 0x18($sp)
/* 0BF02C 800BE42C 3C013980 */ li $at, 0x39800000 # 0.000244
/* 0BF030 800BE430 44812000 */ mtc1 $at, $f4
/* 0BF034 800BE434 C492000C */ lwc1 $f18, 0xc($a0)
/* 0BF038 800BE438 3C01800F */ lui $at, %hi(gPitchBendFrequencyScale + 0x200)
/* 0BF03C 800BE43C 00025880 */ sll $t3, $v0, 2
/* 0BF040 800BE440 002B0821 */ addu $at, $at, $t3
/* 0BF044 800BE444 46049082 */ mul.s $f2, $f18, $f4
/* 0BF048 800BE448 C4305E20 */ lwc1 $f16, %lo(gPitchBendFrequencyScale + 0x200)($at)
/* 0BF04C 800BE44C 460E8181 */ sub.s $f6, $f16, $f14
/* 0BF050 800BE450 46023202 */ mul.s $f8, $f6, $f2
/* 0BF054 800BE454 460E4000 */ add.s $f0, $f8, $f14
.L800BE458:
/* 0BF058 800BE458 8FBF0014 */ lw $ra, 0x14($sp)
.L800BE45C:
/* 0BF05C 800BE45C 27BD0018 */ addiu $sp, $sp, 0x18
/* 0BF060 800BE460 03E00008 */ jr $ra
/* 0BF064 800BE464 00000000 */ nop
glabel func_800BE468
/* 0BF068 800BE468 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 0BF06C 800BE46C AFBF0014 */ sw $ra, 0x14($sp)
/* 0BF070 800BE470 908E007C */ lbu $t6, 0x7c($a0)
/* 0BF074 800BE474 00802825 */ move $a1, $a0
/* 0BF078 800BE478 2484007C */ addiu $a0, $a0, 0x7c
/* 0BF07C 800BE47C 51C00006 */ beql $t6, $zero, .L800BE498
/* 0BF080 800BE480 90AF00A0 */ lbu $t7, 0xa0($a1)
/* 0BF084 800BE484 0C02F856 */ jal func_800BE158
/* 0BF088 800BE488 AFA50018 */ sw $a1, 0x18($sp)
/* 0BF08C 800BE48C 8FA50018 */ lw $a1, 0x18($sp)
/* 0BF090 800BE490 E4A00038 */ swc1 $f0, 0x38($a1)
/* 0BF094 800BE494 90AF00A0 */ lbu $t7, 0xa0($a1)
.L800BE498:
/* 0BF098 800BE498 51E0000B */ beql $t7, $zero, .L800BE4C8
/* 0BF09C 800BE49C 8FBF0014 */ lw $ra, 0x14($sp)
/* 0BF0A0 800BE4A0 8CB80044 */ lw $t8, 0x44($a1)
/* 0BF0A4 800BE4A4 2401FFFF */ li $at, -1
/* 0BF0A8 800BE4A8 24A4008C */ addiu $a0, $a1, 0x8c
/* 0BF0AC 800BE4AC 53010006 */ beql $t8, $at, .L800BE4C8
/* 0BF0B0 800BE4B0 8FBF0014 */ lw $ra, 0x14($sp)
/* 0BF0B4 800BE4B4 0C02F89C */ jal func_800BE270
/* 0BF0B8 800BE4B8 AFA50018 */ sw $a1, 0x18($sp)
/* 0BF0BC 800BE4BC 8FA50018 */ lw $a1, 0x18($sp)
/* 0BF0C0 800BE4C0 E4A0003C */ swc1 $f0, 0x3c($a1)
/* 0BF0C4 800BE4C4 8FBF0014 */ lw $ra, 0x14($sp)
.L800BE4C8:
/* 0BF0C8 800BE4C8 27BD0018 */ addiu $sp, $sp, 0x18
/* 0BF0CC 800BE4CC 03E00008 */ jr $ra
/* 0BF0D0 800BE4D0 00000000 */ nop
glabel func_800BE4D4
/* 0BF0D4 800BE4D4 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 0BF0D8 800BE4D8 44810000 */ mtc1 $at, $f0
/* 0BF0DC 800BE4DC 240E0001 */ li $t6, 1
/* 0BF0E0 800BE4E0 A08E00A0 */ sb $t6, 0xa0($a0)
/* 0BF0E4 800BE4E4 AC800090 */ sw $zero, 0x90($a0)
/* 0BF0E8 800BE4E8 3C0F800F */ lui $t7, %hi(gWaveSamples + 8) # $t7, 0x800f
/* 0BF0EC 800BE4EC E480003C */ swc1 $f0, 0x3c($a0)
/* 0BF0F0 800BE4F0 E4800038 */ swc1 $f0, 0x38($a0)
/* 0BF0F4 800BE4F4 8DEF5C08 */ lw $t7, %lo(gWaveSamples + 8)($t7)
/* 0BF0F8 800BE4F8 8C980044 */ lw $t8, 0x44($a0)
/* 0BF0FC 800BE4FC 2483008C */ addiu $v1, $a0, 0x8c
/* 0BF100 800BE500 AC8F0094 */ sw $t7, 0x94($a0)
/* 0BF104 800BE504 8F19004C */ lw $t9, 0x4c($t8)
/* 0BF108 800BE508 AC99008C */ sw $t9, 0x8c($a0)
/* 0BF10C 800BE50C 97220016 */ lhu $v0, 0x16($t9)
/* 0BF110 800BE510 14400009 */ bnez $v0, .L800BE538
/* 0BF114 800BE514 A48200A4 */ sh $v0, 0xa4($a0)
/* 0BF118 800BE518 2483008C */ addiu $v1, $a0, 0x8c
/* 0BF11C 800BE51C 8C650000 */ lw $a1, ($v1)
/* 0BF120 800BE520 94A90012 */ lhu $t1, 0x12($a1)
/* 0BF124 800BE524 44892000 */ mtc1 $t1, $f4
/* 0BF128 800BE528 00000000 */ nop
/* 0BF12C 800BE52C 468021A0 */ cvt.s.w $f6, $f4
/* 0BF130 800BE530 10000007 */ b .L800BE550
/* 0BF134 800BE534 E466000C */ swc1 $f6, 0xc($v1)
.L800BE538:
/* 0BF138 800BE538 8C650000 */ lw $a1, ($v1)
/* 0BF13C 800BE53C 94AA000E */ lhu $t2, 0xe($a1)
/* 0BF140 800BE540 448A4000 */ mtc1 $t2, $f8
/* 0BF144 800BE544 00000000 */ nop
/* 0BF148 800BE548 468042A0 */ cvt.s.w $f10, $f8
/* 0BF14C 800BE54C E46A000C */ swc1 $f10, 0xc($v1)
.L800BE550:
/* 0BF150 800BE550 94A20014 */ lhu $v0, 0x14($a1)
/* 0BF154 800BE554 14400007 */ bnez $v0, .L800BE574
/* 0BF158 800BE558 A4620016 */ sh $v0, 0x16($v1)
/* 0BF15C 800BE55C 94AB0010 */ lhu $t3, 0x10($a1)
/* 0BF160 800BE560 448B8000 */ mtc1 $t3, $f16
/* 0BF164 800BE564 00000000 */ nop
/* 0BF168 800BE568 468084A0 */ cvt.s.w $f18, $f16
/* 0BF16C 800BE56C 10000006 */ b .L800BE588
/* 0BF170 800BE570 E4720010 */ swc1 $f18, 0x10($v1)
.L800BE574:
/* 0BF174 800BE574 94AC000C */ lhu $t4, 0xc($a1)
/* 0BF178 800BE578 448C2000 */ mtc1 $t4, $f4
/* 0BF17C 800BE57C 00000000 */ nop
/* 0BF180 800BE580 468021A0 */ cvt.s.w $f6, $f4
/* 0BF184 800BE584 E4660010 */ swc1 $f6, 0x10($v1)
.L800BE588:
/* 0BF188 800BE588 94AD0018 */ lhu $t5, 0x18($a1)
/* 0BF18C 800BE58C 24820030 */ addiu $v0, $a0, 0x30
/* 0BF190 800BE590 A46D001A */ sh $t5, 0x1a($v1)
/* 0BF194 800BE594 8C4E0014 */ lw $t6, 0x14($v0)
/* 0BF198 800BE598 8DC10008 */ lw $at, 8($t6)
/* 0BF19C 800BE59C AC41004C */ sw $at, 0x4c($v0)
/* 0BF1A0 800BE5A0 8DD8000C */ lw $t8, 0xc($t6)
/* 0BF1A4 800BE5A4 AC580050 */ sw $t8, 0x50($v0)
/* 0BF1A8 800BE5A8 8DC10010 */ lw $at, 0x10($t6)
/* 0BF1AC 800BE5AC AC410054 */ sw $at, 0x54($v0)
/* 0BF1B0 800BE5B0 8DD80014 */ lw $t8, 0x14($t6)
/* 0BF1B4 800BE5B4 03E00008 */ jr $ra
/* 0BF1B8 800BE5B8 AC580058 */ sw $t8, 0x58($v0)
glabel func_800BE5BC
/* 0BF1BC 800BE5BC AFA60008 */ sw $a2, 8($sp)
/* 0BF1C0 800BE5C0 44800000 */ mtc1 $zero, $f0
/* 0BF1C4 800BE5C4 A0800000 */ sb $zero, ($a0)
/* 0BF1C8 800BE5C8 A0800001 */ sb $zero, 1($a0)
/* 0BF1CC 800BE5CC A4800004 */ sh $zero, 4($a0)
/* 0BF1D0 800BE5D0 AC850020 */ sw $a1, 0x20($a0)
/* 0BF1D4 800BE5D4 E4800008 */ swc1 $f0, 8($a0)
/* 0BF1D8 800BE5D8 03E00008 */ jr $ra
/* 0BF1DC 800BE5DC E4800014 */ swc1 $f0, 0x14($a0)
glabel func_800BE5E0
/* 0BF1E0 800BE5E0 90830001 */ lbu $v1, 1($a0)
/* 0BF1E4 800BE5E4 90820000 */ lbu $v0, ($a0)
/* 0BF1E8 800BE5E8 2C610009 */ sltiu $at, $v1, 9
/* 0BF1EC 800BE5EC 1020009D */ beqz $at, .L800BE864
/* 0BF1F0 800BE5F0 00602825 */ move $a1, $v1
/* 0BF1F4 800BE5F4 00037080 */ sll $t6, $v1, 2
/* 0BF1F8 800BE5F8 3C01800F */ lui $at, %hi(D_800F2EE0)
/* 0BF1FC 800BE5FC 002E0821 */ addu $at, $at, $t6
/* 0BF200 800BE600 8C2E2EE0 */ lw $t6, %lo(D_800F2EE0)($at)
/* 0BF204 800BE604 01C00008 */ jr $t6
/* 0BF208 800BE608 00000000 */ nop
glabel L800BE60C
/* 0BF20C 800BE60C 44800000 */ mtc1 $zero, $f0
/* 0BF210 800BE610 03E00008 */ jr $ra
/* 0BF214 800BE614 00000000 */ nop
glabel L800BE618
/* 0BF218 800BE618 304F0040 */ andi $t7, $v0, 0x40
/* 0BF21C 800BE61C 11E00003 */ beqz $t7, .L800BE62C
/* 0BF220 800BE620 24180005 */ li $t8, 5
/* 0BF224 800BE624 1000008F */ b .L800BE864
/* 0BF228 800BE628 A0980001 */ sb $t8, 1($a0)
.L800BE62C:
glabel L800BE62C
/* 0BF22C 800BE62C 24190003 */ li $t9, 3
/* 0BF230 800BE630 A4800002 */ sh $zero, 2($a0)
/* 0BF234 800BE634 A0990001 */ sb $t9, 1($a0)
.L800BE638:
glabel L800BE638
/* 0BF238 800BE638 84890002 */ lh $t1, 2($a0)
/* 0BF23C 800BE63C 8C880020 */ lw $t0, 0x20($a0)
/* 0BF240 800BE640 2401FFFD */ li $at, -3
/* 0BF244 800BE644 00095080 */ sll $t2, $t1, 2
/* 0BF248 800BE648 010A1821 */ addu $v1, $t0, $t2
/* 0BF24C 800BE64C 846B0000 */ lh $t3, ($v1)
/* 0BF250 800BE650 A48B0004 */ sh $t3, 4($a0)
/* 0BF254 800BE654 84860004 */ lh $a2, 4($a0)
/* 0BF258 800BE658 10C10010 */ beq $a2, $at, .L800BE69C
/* 0BF25C 800BE65C 00C02825 */ move $a1, $a2
/* 0BF260 800BE660 2401FFFE */ li $at, -2
/* 0BF264 800BE664 10C1000A */ beq $a2, $at, .L800BE690
/* 0BF268 800BE668 2401FFFF */ li $at, -1
/* 0BF26C 800BE66C 50C10006 */ beql $a2, $at, .L800BE688
/* 0BF270 800BE670 240C0005 */ li $t4, 5
/* 0BF274 800BE674 14C0000C */ bnez $a2, .L800BE6A8
/* 0BF278 800BE678 28C10004 */ slti $at, $a2, 4
/* 0BF27C 800BE67C 10000041 */ b .L800BE784
/* 0BF280 800BE680 A0800001 */ sb $zero, 1($a0)
/* 0BF284 800BE684 240C0005 */ li $t4, 5
.L800BE688:
/* 0BF288 800BE688 1000003E */ b .L800BE784
/* 0BF28C 800BE68C A08C0001 */ sb $t4, 1($a0)
.L800BE690:
/* 0BF290 800BE690 846D0002 */ lh $t5, 2($v1)
/* 0BF294 800BE694 1000FFE8 */ b .L800BE638
/* 0BF298 800BE698 A48D0002 */ sh $t5, 2($a0)
.L800BE69C:
/* 0BF29C 800BE69C 240E0001 */ li $t6, 1
/* 0BF2A0 800BE6A0 10000038 */ b .L800BE784
/* 0BF2A4 800BE6A4 A08E0001 */ sb $t6, 1($a0)
.L800BE6A8:
/* 0BF2A8 800BE6A8 14200019 */ bnez $at, .L800BE710
/* 0BF2AC 800BE6AC 3C03803B */ lui $v1, %hi(D_803B7088) # $v1, 0x803b
/* 0BF2B0 800BE6B0 24637088 */ addiu $v1, %lo(D_803B7088) # addiu $v1, $v1, 0x7088
/* 0BF2B4 800BE6B4 846F000C */ lh $t7, 0xc($v1)
/* 0BF2B8 800BE6B8 84790000 */ lh $t9, ($v1)
/* 0BF2BC 800BE6BC 00CF0019 */ multu $a2, $t7
/* 0BF2C0 800BE6C0 0000C012 */ mflo $t8
/* 0BF2C4 800BE6C4 00000000 */ nop
/* 0BF2C8 800BE6C8 00000000 */ nop
/* 0BF2CC 800BE6CC 0319001A */ div $zero, $t8, $t9
/* 0BF2D0 800BE6D0 17200002 */ bnez $t9, .L800BE6DC
/* 0BF2D4 800BE6D4 00000000 */ nop
/* 0BF2D8 800BE6D8 0007000D */ break 7
.L800BE6DC:
/* 0BF2DC 800BE6DC 2401FFFF */ li $at, -1
/* 0BF2E0 800BE6E0 17210004 */ bne $t9, $at, .L800BE6F4
/* 0BF2E4 800BE6E4 3C018000 */ lui $at, 0x8000
/* 0BF2E8 800BE6E8 17010002 */ bne $t8, $at, .L800BE6F4
/* 0BF2EC 800BE6EC 00000000 */ nop
/* 0BF2F0 800BE6F0 0006000D */ break 6
.L800BE6F4:
/* 0BF2F4 800BE6F4 00004812 */ mflo $t1
/* 0BF2F8 800BE6F8 05210003 */ bgez $t1, .L800BE708
/* 0BF2FC 800BE6FC 00094083 */ sra $t0, $t1, 2
/* 0BF300 800BE700 25210003 */ addiu $at, $t1, 3
/* 0BF304 800BE704 00014083 */ sra $t0, $at, 2
.L800BE708:
/* 0BF308 800BE708 A4880004 */ sh $t0, 4($a0)
/* 0BF30C 800BE70C 84860004 */ lh $a2, 4($a0)
.L800BE710:
/* 0BF310 800BE710 14C00003 */ bnez $a2, .L800BE720
/* 0BF314 800BE714 240A0001 */ li $t2, 1
/* 0BF318 800BE718 A48A0004 */ sh $t2, 4($a0)
/* 0BF31C 800BE71C 84860004 */ lh $a2, 4($a0)
.L800BE720:
/* 0BF320 800BE720 84830002 */ lh $v1, 2($a0)
/* 0BF324 800BE724 8C8B0020 */ lw $t3, 0x20($a0)
/* 0BF328 800BE728 3C01800F */ lui $at, %hi(D_800F2F04) # $at, 0x800f
/* 0BF32C 800BE72C 00036080 */ sll $t4, $v1, 2
/* 0BF330 800BE730 016C6821 */ addu $t5, $t3, $t4
/* 0BF334 800BE734 85AE0002 */ lh $t6, 2($t5)
/* 0BF338 800BE738 C4282F04 */ lwc1 $f8, %lo(D_800F2F04)($at)
/* 0BF33C 800BE73C 240F0004 */ li $t7, 4
/* 0BF340 800BE740 448E2000 */ mtc1 $t6, $f4
/* 0BF344 800BE744 24780001 */ addiu $t8, $v1, 1
/* 0BF348 800BE748 A08F0001 */ sb $t7, 1($a0)
/* 0BF34C 800BE74C 468021A0 */ cvt.s.w $f6, $f4
/* 0BF350 800BE750 C4840014 */ lwc1 $f4, 0x14($a0)
/* 0BF354 800BE754 A4980002 */ sh $t8, 2($a0)
/* 0BF358 800BE758 46083283 */ div.s $f10, $f6, $f8
/* 0BF35C 800BE75C 44864000 */ mtc1 $a2, $f8
/* 0BF360 800BE760 E48A0018 */ swc1 $f10, 0x18($a0)
/* 0BF364 800BE764 C4800018 */ lwc1 $f0, 0x18($a0)
/* 0BF368 800BE768 468042A0 */ cvt.s.w $f10, $f8
/* 0BF36C 800BE76C 46000402 */ mul.s $f16, $f0, $f0
/* 0BF370 800BE770 E4900018 */ swc1 $f16, 0x18($a0)
/* 0BF374 800BE774 C4920018 */ lwc1 $f18, 0x18($a0)
/* 0BF378 800BE778 46049181 */ sub.s $f6, $f18, $f4
/* 0BF37C 800BE77C 460A3403 */ div.s $f16, $f6, $f10
/* 0BF380 800BE780 E490000C */ swc1 $f16, 0xc($a0)
.L800BE784:
/* 0BF384 800BE784 90990001 */ lbu $t9, 1($a0)
/* 0BF388 800BE788 24010004 */ li $at, 4
/* 0BF38C 800BE78C 57210036 */ bnel $t9, $at, .L800BE868
/* 0BF390 800BE790 44806000 */ mtc1 $zero, $f12
glabel L800BE794
/* 0BF394 800BE794 84890004 */ lh $t1, 4($a0)
/* 0BF398 800BE798 C4920014 */ lwc1 $f18, 0x14($a0)
/* 0BF39C 800BE79C C484000C */ lwc1 $f4, 0xc($a0)
/* 0BF3A0 800BE7A0 2528FFFF */ addiu $t0, $t1, -1
/* 0BF3A4 800BE7A4 A4880004 */ sh $t0, 4($a0)
/* 0BF3A8 800BE7A8 46049200 */ add.s $f8, $f18, $f4
/* 0BF3AC 800BE7AC 848A0004 */ lh $t2, 4($a0)
/* 0BF3B0 800BE7B0 240B0003 */ li $t3, 3
/* 0BF3B4 800BE7B4 1D40002B */ bgtz $t2, .L800BE864
/* 0BF3B8 800BE7B8 E4880014 */ swc1 $f8, 0x14($a0)
/* 0BF3BC 800BE7BC 10000029 */ b .L800BE864
/* 0BF3C0 800BE7C0 A08B0001 */ sb $t3, 1($a0)
glabel L800BE7C4
/* 0BF3C4 800BE7C4 44806000 */ mtc1 $zero, $f12
/* 0BF3C8 800BE7C8 C4800008 */ lwc1 $f0, 8($a0)
/* 0BF3CC 800BE7CC C4860014 */ lwc1 $f6, 0x14($a0)
/* 0BF3D0 800BE7D0 C48A0010 */ lwc1 $f10, 0x10($a0)
/* 0BF3D4 800BE7D4 46006032 */ c.eq.s $f12, $f0
/* 0BF3D8 800BE7D8 24010006 */ li $at, 6
/* 0BF3DC 800BE7DC 460A3401 */ sub.s $f16, $f6, $f10
/* 0BF3E0 800BE7E0 4501000E */ bc1t .L800BE81C
/* 0BF3E4 800BE7E4 E4900014 */ swc1 $f16, 0x14($a0)
/* 0BF3E8 800BE7E8 14A1000C */ bne $a1, $at, .L800BE81C
/* 0BF3EC 800BE7EC 00000000 */ nop
/* 0BF3F0 800BE7F0 C4920014 */ lwc1 $f18, 0x14($a0)
/* 0BF3F4 800BE7F4 240C0080 */ li $t4, 128
/* 0BF3F8 800BE7F8 240D0008 */ li $t5, 8
/* 0BF3FC 800BE7FC 4600903C */ c.lt.s $f18, $f0
/* 0BF400 800BE800 00000000 */ nop
/* 0BF404 800BE804 45020018 */ bc1fl .L800BE868
/* 0BF408 800BE808 44806000 */ mtc1 $zero, $f12
/* 0BF40C 800BE80C E4800014 */ swc1 $f0, 0x14($a0)
/* 0BF410 800BE810 A48C0004 */ sh $t4, 4($a0)
/* 0BF414 800BE814 10000013 */ b .L800BE864
/* 0BF418 800BE818 A08D0001 */ sb $t5, 1($a0)
.L800BE81C:
/* 0BF41C 800BE81C 3C01800F */ lui $at, %hi(D_800F2F08) # $at, 0x800f
/* 0BF420 800BE820 C4282F08 */ lwc1 $f8, %lo(D_800F2F08)($at)
/* 0BF424 800BE824 C4840014 */ lwc1 $f4, 0x14($a0)
/* 0BF428 800BE828 4608203C */ c.lt.s $f4, $f8
/* 0BF42C 800BE82C 00000000 */ nop
/* 0BF430 800BE830 4502000D */ bc1fl .L800BE868
/* 0BF434 800BE834 44806000 */ mtc1 $zero, $f12
/* 0BF438 800BE838 E48C0014 */ swc1 $f12, 0x14($a0)
/* 0BF43C 800BE83C 10000009 */ b .L800BE864
/* 0BF440 800BE840 A0800001 */ sb $zero, 1($a0)
glabel L800BE844
/* 0BF444 800BE844 848E0004 */ lh $t6, 4($a0)
/* 0BF448 800BE848 24190007 */ li $t9, 7
/* 0BF44C 800BE84C 25CFFFFF */ addiu $t7, $t6, -1
/* 0BF450 800BE850 A48F0004 */ sh $t7, 4($a0)
/* 0BF454 800BE854 84980004 */ lh $t8, 4($a0)
/* 0BF458 800BE858 57000003 */ bnel $t8, $zero, .L800BE868
/* 0BF45C 800BE85C 44806000 */ mtc1 $zero, $f12
/* 0BF460 800BE860 A0990001 */ sb $t9, 1($a0)
.L800BE864:
glabel L800BE864
/* 0BF464 800BE864 44806000 */ mtc1 $zero, $f12
.L800BE868:
/* 0BF468 800BE868 30490020 */ andi $t1, $v0, 0x20
/* 0BF46C 800BE86C 11200005 */ beqz $t1, .L800BE884
/* 0BF470 800BE870 00401825 */ move $v1, $v0
/* 0BF474 800BE874 24080006 */ li $t0, 6
/* 0BF478 800BE878 304AFFDF */ andi $t2, $v0, 0xffdf
/* 0BF47C 800BE87C A0880001 */ sb $t0, 1($a0)
/* 0BF480 800BE880 A08A0000 */ sb $t2, ($a0)
.L800BE884:
/* 0BF484 800BE884 306B0010 */ andi $t3, $v1, 0x10
/* 0BF488 800BE888 11600004 */ beqz $t3, .L800BE89C
/* 0BF48C 800BE88C 240C0007 */ li $t4, 7
/* 0BF490 800BE890 306DFFEF */ andi $t5, $v1, 0xffef
/* 0BF494 800BE894 A08C0001 */ sb $t4, 1($a0)
/* 0BF498 800BE898 A08D0000 */ sb $t5, ($a0)
.L800BE89C:
/* 0BF49C 800BE89C C4820014 */ lwc1 $f2, 0x14($a0)
/* 0BF4A0 800BE8A0 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 0BF4A4 800BE8A4 460C103C */ c.lt.s $f2, $f12
/* 0BF4A8 800BE8A8 00000000 */ nop
/* 0BF4AC 800BE8AC 45020004 */ bc1fl .L800BE8C0
/* 0BF4B0 800BE8B0 44816000 */ mtc1 $at, $f12
/* 0BF4B4 800BE8B4 03E00008 */ jr $ra
/* 0BF4B8 800BE8B8 46006006 */ mov.s $f0, $f12
/* 0BF4BC 800BE8BC 44816000 */ mtc1 $at, $f12
.L800BE8C0:
/* 0BF4C0 800BE8C0 00000000 */ nop
/* 0BF4C4 800BE8C4 4602603C */ c.lt.s $f12, $f2
/* 0BF4C8 800BE8C8 00000000 */ nop
/* 0BF4CC 800BE8CC 45020004 */ bc1fl .L800BE8E0
/* 0BF4D0 800BE8D0 46001006 */ mov.s $f0, $f2
/* 0BF4D4 800BE8D4 03E00008 */ jr $ra
/* 0BF4D8 800BE8D8 46006006 */ mov.s $f0, $f12
/* 0BF4DC 800BE8DC 46001006 */ mov.s $f0, $f2
.L800BE8E0:
/* 0BF4E0 800BE8E0 03E00008 */ jr $ra
/* 0BF4E4 800BE8E4 00000000 */ nop
/* 0BF4E8 800BE8E8 00000000 */ nop
/* 0BF4EC 800BE8EC 00000000 */ nop