sm64pc/asm/non_matchings/func_80314480_us.s
2019-08-25 00:46:40 -04:00

734 lines
36 KiB
ArmAsm

.late_rodata
glabel D_80337BB0
.word 0x3FFFFEB0, 0x3FFFFEB0
glabel D_80337BB8
.word 0x407FFEDA, 0x407FFEDA
.text
glabel func_80314480
/* 0D0590 80315590 27BDFE90 */ addiu $sp, $sp, -0x170
/* 0D0594 80315594 3C0E8022 */ lui $t6, %hi(gMaxSimultaneousNotes) # $t6, 0x8022
/* 0D0598 80315598 8DCE6B70 */ lw $t6, %lo(gMaxSimultaneousNotes)($t6)
/* 0D059C 8031559C AFB40030 */ sw $s4, 0x30($sp)
/* 0D05A0 803155A0 00C0A025 */ move $s4, $a2
/* 0D05A4 803155A4 AFBF0044 */ sw $ra, 0x44($sp)
/* 0D05A8 803155A8 AFBE0040 */ sw $fp, 0x40($sp)
/* 0D05AC 803155AC AFB7003C */ sw $s7, 0x3c($sp)
/* 0D05B0 803155B0 AFB60038 */ sw $s6, 0x38($sp)
/* 0D05B4 803155B4 AFB50034 */ sw $s5, 0x34($sp)
/* 0D05B8 803155B8 AFB3002C */ sw $s3, 0x2c($sp)
/* 0D05BC 803155BC AFB20028 */ sw $s2, 0x28($sp)
/* 0D05C0 803155C0 AFB10024 */ sw $s1, 0x24($sp)
/* 0D05C4 803155C4 AFB00020 */ sw $s0, 0x20($sp)
/* 0D05C8 803155C8 AFA40170 */ sw $a0, 0x170($sp)
/* 0D05CC 803155CC AFA50174 */ sw $a1, 0x174($sp)
/* 0D05D0 803155D0 AFA0016C */ sw $zero, 0x16c($sp)
/* 0D05D4 803155D4 19C00265 */ blez $t6, .L_US_80315F6C
/* 0D05D8 803155D8 AFA00154 */ sw $zero, 0x154($sp)
/* 0D05DC 803155DC AFA00064 */ sw $zero, 0x64($sp)
.L_US_803155E0:
/* 0D05E0 803155E0 3C188022 */ lui $t8, %hi(gNotes) # $t8, 0x8022
/* 0D05E4 803155E4 8F182610 */ lw $t8, %lo(gNotes)($t8)
/* 0D05E8 803155E8 8FAF0064 */ lw $t7, 0x64($sp)
/* 0D05EC 803155EC 01F8B821 */ addu $s7, $t7, $t8
/* 0D05F0 803155F0 8EF90000 */ lw $t9, ($s7)
/* 0D05F4 803155F4 001977C2 */ srl $t6, $t9, 0x1f
/* 0D05F8 803155F8 51C00010 */ beql $t6, $zero, .L_US_8031563C
/* 0D05FC 803155FC 8EF90000 */ lw $t9, ($s7)
/* 0D0600 80315600 92E20007 */ lbu $v0, 7($s7)
/* 0D0604 80315604 3C0F8022 */ lui $t7, %hi(gBankLoadStatus)
/* 0D0608 80315608 8FAE016C */ lw $t6, 0x16c($sp)
/* 0D060C 8031560C 01E27821 */ addu $t7, $t7, $v0
/* 0D0610 80315610 91EF14D0 */ lbu $t7, %lo(gBankLoadStatus)($t7)
/* 0D0614 80315614 3C010100 */ lui $at, 0x100
/* 0D0618 80315618 29F80002 */ slti $t8, $t7, 2
/* 0D061C 8031561C 13000006 */ beqz $t8, .L_US_80315638
/* 0D0620 80315620 0002CA00 */ sll $t9, $v0, 8
/* 0D0624 80315624 032E7821 */ addu $t7, $t9, $t6
/* 0D0628 80315628 01E1C021 */ addu $t8, $t7, $at
/* 0D062C 8031562C 3C018033 */ lui $at, %hi(gAudioErrorFlags) # $at, 0x8033
/* 0D0630 80315630 10000244 */ b .L_US_80315F44
/* 0D0634 80315634 AC382E50 */ sw $t8, %lo(gAudioErrorFlags)($at)
.L_US_80315638:
/* 0D0638 80315638 8EF90000 */ lw $t9, ($s7)
.L_US_8031563C:
/* 0D063C 8031563C 001977C2 */ srl $t6, $t9, 0x1f
/* 0D0640 80315640 51C00241 */ beql $t6, $zero, .L_US_80315F48
/* 0D0644 80315644 8FB9016C */ lw $t9, 0x16c($sp)
/* 0D0648 80315648 8FAF0174 */ lw $t7, 0x174($sp)
/* 0D064C 8031564C AFA00140 */ sw $zero, 0x140($sp)
/* 0D0650 80315650 24010001 */ li $at, 1
/* 0D0654 80315654 000FC040 */ sll $t8, $t7, 1
/* 0D0658 80315658 AFB80048 */ sw $t8, 0x48($sp)
/* 0D065C 8031565C 8EF90000 */ lw $t9, ($s7)
/* 0D0660 80315660 24180001 */ li $t8, 1
/* 0D0664 80315664 02802025 */ move $a0, $s4
/* 0D0668 80315668 00197040 */ sll $t6, $t9, 1
/* 0D066C 8031566C 000E7FC2 */ srl $t7, $t6, 0x1f
/* 0D0670 80315670 15E10004 */ bne $t7, $at, .L_US_80315684
/* 0D0674 80315674 02E02825 */ move $a1, $s7
/* 0D0678 80315678 AFB80140 */ sw $t8, 0x140($sp)
/* 0D067C 8031567C AEE00014 */ sw $zero, 0x14($s7)
/* 0D0680 80315680 A6E00020 */ sh $zero, 0x20($s7)
.L_US_80315684:
/* 0D0684 80315684 3C014000 */ li $at, 0x40000000 # 2.000000
/* 0D0688 80315688 44812000 */ mtc1 $at, $f4
/* 0D068C 8031568C C6E00038 */ lwc1 $f0, 0x38($s7)
/* 0D0690 80315690 3C018034 */ lui $at, %hi(D_80337BB8)
/* 0D0694 80315694 4604003C */ c.lt.s $f0, $f4
/* 0D0698 80315698 00000000 */ nop
/* 0D069C 8031569C 4500000E */ bc1f .L_US_803156D8
/* 0D06A0 803156A0 00000000 */ nop
/* 0D06A4 803156A4 3C018034 */ lui $at, %hi(D_80337BB0) # $at, 0x8034
/* 0D06A8 803156A8 C4268DA0 */ lwc1 $f6, %lo(D_80337BB0)($at)
/* 0D06AC 803156AC 24190001 */ li $t9, 1
/* 0D06B0 803156B0 AFB900E0 */ sw $t9, 0xe0($sp)
/* 0D06B4 803156B4 4600303C */ c.lt.s $f6, $f0
/* 0D06B8 803156B8 3C018034 */ lui $at, %hi(D_80337BB0 + 0x4) # $at, 0x8034
/* 0D06BC 803156BC 45000004 */ bc1f .L_US_803156D0
/* 0D06C0 803156C0 00000000 */ nop
/* 0D06C4 803156C4 C4288DA4 */ lwc1 $f8, %lo(D_80337BB0 + 0x4)($at)
/* 0D06C8 803156C8 E6E80038 */ swc1 $f8, 0x38($s7)
/* 0D06CC 803156CC C6E00038 */ lwc1 $f0, 0x38($s7)
.L_US_803156D0:
/* 0D06D0 803156D0 10000010 */ b .L_US_80315714
/* 0D06D4 803156D4 46000086 */ mov.s $f2, $f0
.L_US_803156D8:
/* 0D06D8 803156D8 C42A8DA8 */ lwc1 $f10, %lo(D_80337BB8)($at)
/* 0D06DC 803156DC 240E0002 */ li $t6, 2
/* 0D06E0 803156E0 AFAE00E0 */ sw $t6, 0xe0($sp)
/* 0D06E4 803156E4 4600503E */ c.le.s $f10, $f0
/* 0D06E8 803156E8 3C018034 */ lui $at, %hi(D_80337BB8)
/* 0D06EC 803156EC 45020005 */ bc1fl .L_US_80315704
/* 0D06F0 803156F0 3C013F00 */ lui $at, 0x3f00 # $at, 0x3f00
/* 0D06F4 803156F4 C4308DAC */ lwc1 $f16, %lo(D_80337BB8 + 0x4)($at)
/* 0D06F8 803156F8 E6F00038 */ swc1 $f16, 0x38($s7)
/* 0D06FC 803156FC C6E00038 */ lwc1 $f0, 0x38($s7)
/* 0D0700 80315700 3C013F00 */ li $at, 0x3F000000 # 0.500000
.L_US_80315704:
/* 0D0704 80315704 44819000 */ mtc1 $at, $f18
/* 0D0708 80315708 00000000 */ nop
/* 0D070C 8031570C 46120082 */ mul.s $f2, $f0, $f18
/* 0D0710 80315710 00000000 */ nop
.L_US_80315714:
/* 0D0714 80315714 3C014700 */ li $at, 0x47000000 # 32768.000000
/* 0D0718 80315718 44812000 */ mtc1 $at, $f4
/* 0D071C 8031571C 8FAE0174 */ lw $t6, 0x174($sp)
/* 0D0720 80315720 46041182 */ mul.s $f6, $f2, $f4
/* 0D0724 80315724 4600320D */ trunc.w.s $f8, $f6
/* 0D0728 80315728 44184000 */ mfc1 $t8, $f8
/* 0D072C 8031572C 00000000 */ nop
/* 0D0730 80315730 3319FFFF */ andi $t9, $t8, 0xffff
/* 0D0734 80315734 032E0019 */ multu $t9, $t6
/* 0D0738 80315738 AFB9005C */ sw $t9, 0x5c($sp)
/* 0D073C 8031573C 96F90020 */ lhu $t9, 0x20($s7)
/* 0D0740 80315740 8EE20024 */ lw $v0, 0x24($s7)
/* 0D0744 80315744 00007812 */ mflo $t7
/* 0D0748 80315748 000FC040 */ sll $t8, $t7, 1
/* 0D074C 8031574C 03381821 */ addu $v1, $t9, $t8
/* 0D0750 80315750 1440000E */ bnez $v0, .L_US_8031578C
/* 0D0754 80315754 A6E30020 */ sh $v1, 0x20($s7)
/* 0D0758 80315758 00038402 */ srl $s0, $v1, 0x10
/* 0D075C 8031575C 02003025 */ move $a2, $s0
/* 0D0760 80315760 0C0C5804 */ jal func_80314F08
/* 0D0764 80315764 AFA00140 */ sw $zero, 0x140($sp)
/* 0D0768 80315768 8EE90014 */ lw $t1, 0x14($s7)
/* 0D076C 8031576C 0040A025 */ move $s4, $v0
/* 0D0770 80315770 00097840 */ sll $t7, $t1, 1
/* 0D0774 80315774 25F90180 */ addiu $t9, $t7, 0x180
/* 0D0778 80315778 A7B900CE */ sh $t9, 0xce($sp)
/* 0D077C 8031577C 0130C021 */ addu $t8, $t1, $s0
/* 0D0780 80315780 AEF80014 */ sw $t8, 0x14($s7)
/* 0D0784 80315784 100001B9 */ b .L_US_80315E6C
/* 0D0788 80315788 8EE50000 */ lw $a1, ($s7)
.L_US_8031578C:
/* 0D078C 8031578C 8C4E0000 */ lw $t6, ($v0)
/* 0D0790 80315790 00031402 */ srl $v0, $v1, 0x10
/* 0D0794 80315794 AFAE015C */ sw $t6, 0x15c($sp)
/* 0D0798 80315798 8DDF0008 */ lw $ra, 8($t6)
/* 0D079C 8031579C 8FF90004 */ lw $t9, 4($ra)
/* 0D07A0 803157A0 AFB90108 */ sw $t9, 0x108($sp)
/* 0D07A4 803157A4 8DD80004 */ lw $t8, 4($t6)
/* 0D07A8 803157A8 8FAE00E0 */ lw $t6, 0xe0($sp)
/* 0D07AC 803157AC AFA000D0 */ sw $zero, 0xd0($sp)
/* 0D07B0 803157B0 AFA000DC */ sw $zero, 0xdc($sp)
/* 0D07B4 803157B4 19C001AB */ blez $t6, .L_US_80315E64
/* 0D07B8 803157B8 AFB80118 */ sw $t8, 0x118($sp)
/* 0D07BC 803157BC 39D90001 */ xori $t9, $t6, 1
/* 0D07C0 803157C0 2F390001 */ sltiu $t9, $t9, 1
/* 0D07C4 803157C4 AFB90054 */ sw $t9, 0x54($sp)
/* 0D07C8 803157C8 AFA20058 */ sw $v0, 0x58($sp)
/* 0D07CC 803157CC 8FAF015C */ lw $t7, 0x15c($sp)
.L_US_803157D0:
/* 0D07D0 803157D0 8FB80054 */ lw $t8, 0x54($sp)
/* 0D07D4 803157D4 8FA20058 */ lw $v0, 0x58($sp)
/* 0D07D8 803157D8 8DE4000C */ lw $a0, 0xc($t7)
/* 0D07DC 803157DC 0000F025 */ move $fp, $zero
/* 0D07E0 803157E0 0000A825 */ move $s5, $zero
/* 0D07E4 803157E4 13000003 */ beqz $t8, .L_US_803157F4
/* 0D07E8 803157E8 24850008 */ addiu $a1, $a0, 8
/* 0D07EC 803157EC 1000000A */ b .L_US_80315818
/* 0D07F0 803157F0 00406825 */ move $t5, $v0
.L_US_803157F4:
/* 0D07F4 803157F4 304E0001 */ andi $t6, $v0, 1
/* 0D07F8 803157F8 11C00007 */ beqz $t6, .L_US_80315818
/* 0D07FC 803157FC 00406825 */ move $t5, $v0
/* 0D0800 80315800 8FAF00DC */ lw $t7, 0xdc($sp)
/* 0D0804 80315804 2401FFFE */ li $at, -2
/* 0D0808 80315808 0041C824 */ and $t9, $v0, $at
/* 0D080C 8031580C 000FC040 */ sll $t8, $t7, 1
/* 0D0810 80315810 10000001 */ b .L_US_80315818
/* 0D0814 80315814 03386821 */ addu $t5, $t9, $t8
.L_US_80315818:
/* 0D0818 80315818 8FAE0154 */ lw $t6, 0x154($sp)
/* 0D081C 8031581C AFA20058 */ sw $v0, 0x58($sp)
/* 0D0820 80315820 11C50013 */ beq $t6, $a1, .L_US_80315870
/* 0D0824 80315824 00000000 */ nop
/* 0D0828 80315828 AFA50154 */ sw $a1, 0x154($sp)
/* 0D082C 8031582C 8C990000 */ lw $t9, ($a0)
/* 0D0830 80315830 8C8F0004 */ lw $t7, 4($a0)
/* 0D0834 80315834 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
/* 0D0838 80315838 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
/* 0D083C 8031583C 01F90019 */ multu $t7, $t9
/* 0D0840 80315840 02801025 */ move $v0, $s4
/* 0D0844 80315844 26940008 */ addiu $s4, $s4, 8
/* 0D0848 80315848 00001812 */ mflo $v1
/* 0D084C 8031584C 0003C100 */ sll $t8, $v1, 4
/* 0D0850 80315850 03017024 */ and $t6, $t8, $at
/* 0D0854 80315854 3C010B00 */ lui $at, 0xb00
/* 0D0858 80315858 01C17825 */ or $t7, $t6, $at
/* 0D085C 8031585C AC4F0000 */ sw $t7, ($v0)
/* 0D0860 80315860 8FB90154 */ lw $t9, 0x154($sp)
/* 0D0864 80315864 3C018000 */ lui $at, 0x8000
/* 0D0868 80315868 0321C021 */ addu $t8, $t9, $at
/* 0D086C 8031586C AC580004 */ sw $t8, 4($v0)
.L_US_80315870:
/* 0D0870 80315870 11A00102 */ beqz $t5, .L_US_80315C7C
/* 0D0874 80315874 8FA20058 */ lw $v0, 0x58($sp)
/* 0D0878 80315878 AFA20058 */ sw $v0, 0x58($sp)
/* 0D087C 8031587C 8EE90014 */ lw $t1, 0x14($s7)
.L_US_80315880:
/* 0D0880 80315880 8FAE0108 */ lw $t6, 0x108($sp)
/* 0D0884 80315884 01BE2023 */ subu $a0, $t5, $fp
/* 0D0888 80315888 3132000F */ andi $s2, $t1, 0xf
/* 0D088C 8031588C 00005025 */ move $t2, $zero
/* 0D0890 80315890 00005825 */ move $t3, $zero
/* 0D0894 80315894 00806025 */ move $t4, $a0
/* 0D0898 80315898 16400006 */ bnez $s2, .L_US_803158B4
/* 0D089C 8031589C 01C91823 */ subu $v1, $t6, $t1
/* 0D08A0 803158A0 8EEF0000 */ lw $t7, ($s7)
/* 0D08A4 803158A4 000FC080 */ sll $t8, $t7, 2
/* 0D08A8 803158A8 07020003 */ bltzl $t8, .L_US_803158B8
/* 0D08AC 803158AC 240E0010 */ li $t6, 16
/* 0D08B0 803158B0 24120010 */ li $s2, 16
.L_US_803158B4:
/* 0D08B4 803158B4 240E0010 */ li $t6, 16
.L_US_803158B8:
/* 0D08B8 803158B8 01D22823 */ subu $a1, $t6, $s2
/* 0D08BC 803158BC 0083082A */ slt $at, $a0, $v1
/* 0D08C0 803158C0 1020000C */ beqz $at, .L_US_803158F4
/* 0D08C4 803158C4 00A0B025 */ move $s6, $a1
/* 0D08C8 803158C8 00851023 */ subu $v0, $a0, $a1
/* 0D08CC 803158CC 2442000F */ addiu $v0, $v0, 0xf
/* 0D08D0 803158D0 04410003 */ bgez $v0, .L_US_803158E0
/* 0D08D4 803158D4 00027903 */ sra $t7, $v0, 4
/* 0D08D8 803158D8 2441000F */ addiu $at, $v0, 0xf
/* 0D08DC 803158DC 00017903 */ sra $t7, $at, 4
.L_US_803158E0:
/* 0D08E0 803158E0 000F8100 */ sll $s0, $t7, 4
/* 0D08E4 803158E4 00B0C821 */ addu $t9, $a1, $s0
/* 0D08E8 803158E8 01E04025 */ move $t0, $t7
/* 0D08EC 803158EC 10000012 */ b .L_US_80315938
/* 0D08F0 803158F0 03249823 */ subu $s3, $t9, $a0
.L_US_803158F4:
/* 0D08F4 803158F4 00721021 */ addu $v0, $v1, $s2
/* 0D08F8 803158F8 2450FFF0 */ addiu $s0, $v0, -0x10
/* 0D08FC 803158FC 1E000003 */ bgtz $s0, .L_US_8031590C
/* 0D0900 80315900 00009825 */ move $s3, $zero
/* 0D0904 80315904 00008025 */ move $s0, $zero
/* 0D0908 80315908 0060B025 */ move $s6, $v1
.L_US_8031590C:
/* 0D090C 8031590C 2608000F */ addiu $t0, $s0, 0xf
/* 0D0910 80315910 8FEE0008 */ lw $t6, 8($ra)
/* 0D0914 80315914 05010003 */ bgez $t0, .L_US_80315924
/* 0D0918 80315918 0008C103 */ sra $t8, $t0, 4
/* 0D091C 8031591C 2501000F */ addiu $at, $t0, 0xf
/* 0D0920 80315920 0001C103 */ sra $t8, $at, 4
.L_US_80315924:
/* 0D0924 80315924 11C00003 */ beqz $t6, .L_US_80315934
/* 0D0928 80315928 03004025 */ move $t0, $t8
/* 0D092C 8031592C 10000002 */ b .L_US_80315938
/* 0D0930 80315930 240B0001 */ li $t3, 1
.L_US_80315934:
/* 0D0934 80315934 240A0001 */ li $t2, 1
.L_US_80315938:
/* 0D0938 80315938 11000032 */ beqz $t0, .L_US_80315A04
/* 0D093C 8031593C 24030009 */ li $v1, 9
/* 0D0940 80315940 01321023 */ subu $v0, $t1, $s2
/* 0D0944 80315944 24420010 */ addiu $v0, $v0, 0x10
/* 0D0948 80315948 04410003 */ bgez $v0, .L_US_80315958
/* 0D094C 8031594C 00027903 */ sra $t7, $v0, 4
/* 0D0950 80315950 2441000F */ addiu $at, $v0, 0xf
/* 0D0954 80315954 00017903 */ sra $t7, $at, 4
.L_US_80315958:
/* 0D0958 80315958 01E30019 */ multu $t7, $v1
/* 0D095C 8031595C 8FB80118 */ lw $t8, 0x118($sp)
/* 0D0960 80315960 AFBF0158 */ sw $ra, 0x158($sp)
/* 0D0964 80315964 8FA60140 */ lw $a2, 0x140($sp)
/* 0D0968 80315968 26E70003 */ addiu $a3, $s7, 3
/* 0D096C 8031596C AFAA0148 */ sw $t2, 0x148($sp)
/* 0D0970 80315970 AFAB0144 */ sw $t3, 0x144($sp)
/* 0D0974 80315974 AFAC0104 */ sw $t4, 0x104($sp)
/* 0D0978 80315978 AFAD0110 */ sw $t5, 0x110($sp)
/* 0D097C 8031597C 0000C812 */ mflo $t9
/* 0D0980 80315980 03382021 */ addu $a0, $t9, $t8
/* 0D0984 80315984 00000000 */ nop
/* 0D0988 80315988 01030019 */ multu $t0, $v1
/* 0D098C 8031598C 00008812 */ mflo $s1
/* 0D0990 80315990 02202825 */ move $a1, $s1
/* 0D0994 80315994 0C0C60C0 */ jal dma_sample_data
/* 0D0998 80315998 00000000 */ nop
/* 0D099C 8031599C 3047000F */ andi $a3, $v0, 0xf
/* 0D09A0 803159A0 02802025 */ move $a0, $s4
/* 0D09A4 803159A4 3C0E0800 */ lui $t6, (0x080003F0 >> 16) # lui $t6, 0x800
/* 0D09A8 803159A8 8FAA0148 */ lw $t2, 0x148($sp)
/* 0D09AC 803159AC 8FAB0144 */ lw $t3, 0x144($sp)
/* 0D09B0 803159B0 8FAC0104 */ lw $t4, 0x104($sp)
/* 0D09B4 803159B4 8FAD0110 */ lw $t5, 0x110($sp)
/* 0D09B8 803159B8 8FBF0158 */ lw $ra, 0x158($sp)
/* 0D09BC 803159BC 35CE03F0 */ ori $t6, (0x080003F0 & 0xFFFF) # ori $t6, $t6, 0x3f0
/* 0D09C0 803159C0 02277821 */ addu $t7, $s1, $a3
/* 0D09C4 803159C4 31F9FFFF */ andi $t9, $t7, 0xffff
/* 0D09C8 803159C8 AC8E0000 */ sw $t6, ($a0)
/* 0D09CC 803159CC 26940008 */ addiu $s4, $s4, 8
/* 0D09D0 803159D0 AC990004 */ sw $t9, 4($a0)
/* 0D09D4 803159D4 02802825 */ move $a1, $s4
/* 0D09D8 803159D8 00477023 */ subu $t6, $v0, $a3
/* 0D09DC 803159DC 3C018000 */ lui $at, 0x8000
/* 0D09E0 803159E0 01C17821 */ addu $t7, $t6, $at
/* 0D09E4 803159E4 3C180400 */ lui $t8, 0x400
/* 0D09E8 803159E8 ACB80000 */ sw $t8, ($a1)
/* 0D09EC 803159EC ACAF0004 */ sw $t7, 4($a1)
/* 0D09F0 803159F0 8EE60000 */ lw $a2, ($s7)
/* 0D09F4 803159F4 26940008 */ addiu $s4, $s4, 8
/* 0D09F8 803159F8 0006C880 */ sll $t9, $a2, 2
/* 0D09FC 803159FC 10000006 */ b .L_US_80315A18
/* 0D0A00 80315A00 001937C2 */ srl $a2, $t9, 0x1f
.L_US_80315A04:
/* 0D0A04 80315A04 8EE60000 */ lw $a2, ($s7)
/* 0D0A08 80315A08 00008025 */ move $s0, $zero
/* 0D0A0C 80315A0C 00003825 */ move $a3, $zero
/* 0D0A10 80315A10 00067080 */ sll $t6, $a2, 2
/* 0D0A14 80315A14 000E37C2 */ srl $a2, $t6, 0x1f
.L_US_80315A18:
/* 0D0A18 80315A18 10C0000F */ beqz $a2, .L_US_80315A58
/* 0D0A1C 80315A1C 02801025 */ move $v0, $s4
/* 0D0A20 80315A20 3C190F00 */ lui $t9, 0xf00
/* 0D0A24 80315A24 AC590000 */ sw $t9, ($v0)
/* 0D0A28 80315A28 8FB8015C */ lw $t8, 0x15c($sp)
/* 0D0A2C 80315A2C 3C018000 */ lui $at, (0x80000010 >> 16) # lui $at, 0x8000
/* 0D0A30 80315A30 34210010 */ ori $at, (0x80000010 & 0xFFFF) # ori $at, $at, 0x10
/* 0D0A34 80315A34 8F0E0008 */ lw $t6, 8($t8)
/* 0D0A38 80315A38 24190002 */ li $t9, 2
/* 0D0A3C 80315A3C 26940008 */ addiu $s4, $s4, 8
/* 0D0A40 80315A40 01C17821 */ addu $t7, $t6, $at
/* 0D0A44 80315A44 AC4F0004 */ sw $t7, 4($v0)
/* 0D0A48 80315A48 AFB90140 */ sw $t9, 0x140($sp)
/* 0D0A4C 80315A4C 92F80000 */ lbu $t8, ($s7)
/* 0D0A50 80315A50 330EFFDF */ andi $t6, $t8, 0xffdf
/* 0D0A54 80315A54 A2EE0000 */ sb $t6, ($s7)
.L_US_80315A58:
/* 0D0A58 80315A58 17C0001C */ bnez $fp, .L_US_80315ACC
/* 0D0A5C 80315A5C 02801025 */ move $v0, $s4
/* 0D0A60 80315A60 24EF03F0 */ addiu $t7, $a3, 0x3f0
/* 0D0A64 80315A64 31F9FFFF */ andi $t9, $t7, 0xffff
/* 0D0A68 80315A68 3C010800 */ lui $at, 0x800
/* 0D0A6C 80315A6C 0321C025 */ or $t8, $t9, $at
/* 0D0A70 80315A70 00103040 */ sll $a2, $s0, 1
/* 0D0A74 80315A74 30CEFFFF */ andi $t6, $a2, 0xffff
/* 0D0A78 80315A78 3C010180 */ lui $at, 0x180
/* 0D0A7C 80315A7C 02801025 */ move $v0, $s4
/* 0D0A80 80315A80 01C17825 */ or $t7, $t6, $at
/* 0D0A84 80315A84 AC4F0004 */ sw $t7, 4($v0)
/* 0D0A88 80315A88 AC580000 */ sw $t8, ($v0)
/* 0D0A8C 80315A8C 8FB90140 */ lw $t9, 0x140($sp)
/* 0D0A90 80315A90 26940008 */ addiu $s4, $s4, 8
/* 0D0A94 80315A94 3C010100 */ lui $at, 0x100
/* 0D0A98 80315A98 333800FF */ andi $t8, $t9, 0xff
/* 0D0A9C 80315A9C 00187400 */ sll $t6, $t8, 0x10
/* 0D0AA0 80315AA0 01C17825 */ or $t7, $t6, $at
/* 0D0AA4 80315AA4 02801825 */ move $v1, $s4
/* 0D0AA8 80315AA8 AC6F0000 */ sw $t7, ($v1)
/* 0D0AAC 80315AAC 8EF90034 */ lw $t9, 0x34($s7)
/* 0D0AB0 80315AB0 3C018000 */ lui $at, 0x8000
/* 0D0AB4 80315AB4 00127040 */ sll $t6, $s2, 1
/* 0D0AB8 80315AB8 0321C021 */ addu $t8, $t9, $at
/* 0D0ABC 80315ABC AC780004 */ sw $t8, 4($v1)
/* 0D0AC0 80315AC0 26940008 */ addiu $s4, $s4, 8
/* 0D0AC4 80315AC4 10000030 */ b .L_US_80315B88
/* 0D0AC8 80315AC8 AFAE0128 */ sw $t6, 0x128($sp)
.L_US_80315ACC:
/* 0D0ACC 80315ACC 24EF03F0 */ addiu $t7, $a3, 0x3f0
/* 0D0AD0 80315AD0 31F9FFFF */ andi $t9, $t7, 0xffff
/* 0D0AD4 80315AD4 3C010800 */ lui $at, 0x800
/* 0D0AD8 80315AD8 0321C025 */ or $t8, $t9, $at
/* 0D0ADC 80315ADC 2401FFE0 */ li $at, -32
/* 0D0AE0 80315AE0 26A3001F */ addiu $v1, $s5, 0x1f
/* 0D0AE4 80315AE4 00617024 */ and $t6, $v1, $at
/* 0D0AE8 80315AE8 25D90180 */ addiu $t9, $t6, 0x180
/* 0D0AEC 80315AEC 01C01825 */ move $v1, $t6
/* 0D0AF0 80315AF0 AC580000 */ sw $t8, ($v0)
/* 0D0AF4 80315AF4 00103040 */ sll $a2, $s0, 1
/* 0D0AF8 80315AF8 30CEFFFF */ andi $t6, $a2, 0xffff
/* 0D0AFC 80315AFC 0019C400 */ sll $t8, $t9, 0x10
/* 0D0B00 80315B00 030E7825 */ or $t7, $t8, $t6
/* 0D0B04 80315B04 AC4F0004 */ sw $t7, 4($v0)
/* 0D0B08 80315B08 8FB90140 */ lw $t9, 0x140($sp)
/* 0D0B0C 80315B0C 26940008 */ addiu $s4, $s4, 8
/* 0D0B10 80315B10 3C010100 */ lui $at, 0x100
/* 0D0B14 80315B14 333800FF */ andi $t8, $t9, 0xff
/* 0D0B18 80315B18 00187400 */ sll $t6, $t8, 0x10
/* 0D0B1C 80315B1C 01C17825 */ or $t7, $t6, $at
/* 0D0B20 80315B20 02802025 */ move $a0, $s4
/* 0D0B24 80315B24 AC8F0000 */ sw $t7, ($a0)
/* 0D0B28 80315B28 8EF90034 */ lw $t9, 0x34($s7)
/* 0D0B2C 80315B2C 3C018000 */ lui $at, 0x8000
/* 0D0B30 80315B30 00127040 */ sll $t6, $s2, 1
/* 0D0B34 80315B34 0321C021 */ addu $t8, $t9, $at
/* 0D0B38 80315B38 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
/* 0D0B3C 80315B3C 006E7821 */ addu $t7, $v1, $t6
/* 0D0B40 80315B40 AC980004 */ sw $t8, 4($a0)
/* 0D0B44 80315B44 25F90180 */ addiu $t9, $t7, 0x180
/* 0D0B48 80315B48 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
/* 0D0B4C 80315B4C 0321C024 */ and $t8, $t9, $at
/* 0D0B50 80315B50 26940008 */ addiu $s4, $s4, 8
/* 0D0B54 80315B54 3C010A00 */ lui $at, 0xa00
/* 0D0B58 80315B58 03017025 */ or $t6, $t8, $at
/* 0D0B5C 80315B5C 02802825 */ move $a1, $s4
/* 0D0B60 80315B60 ACAE0000 */ sw $t6, ($a1)
/* 0D0B64 80315B64 02167021 */ addu $t6, $s0, $s6
/* 0D0B68 80315B68 26B90180 */ addiu $t9, $s5, 0x180
/* 0D0B6C 80315B6C 0019C400 */ sll $t8, $t9, 0x10
/* 0D0B70 80315B70 01D37823 */ subu $t7, $t6, $s3
/* 0D0B74 80315B74 000FC840 */ sll $t9, $t7, 1
/* 0D0B78 80315B78 332EFFFF */ andi $t6, $t9, 0xffff
/* 0D0B7C 80315B7C 030E7825 */ or $t7, $t8, $t6
/* 0D0B80 80315B80 ACAF0004 */ sw $t7, 4($a1)
/* 0D0B84 80315B84 26940008 */ addiu $s4, $s4, 8
.L_US_80315B88:
/* 0D0B88 80315B88 8FAE0140 */ lw $t6, 0x140($sp)
/* 0D0B8C 80315B8C 03D0C821 */ addu $t9, $fp, $s0
/* 0D0B90 80315B90 0336C021 */ addu $t8, $t9, $s6
/* 0D0B94 80315B94 24010001 */ li $at, 1
/* 0D0B98 80315B98 11C10008 */ beq $t6, $at, .L_US_80315BBC
/* 0D0B9C 80315B9C 0313F023 */ subu $fp, $t8, $s3
/* 0D0BA0 80315BA0 39C20002 */ xori $v0, $t6, 2
/* 0D0BA4 80315BA4 02167821 */ addu $t7, $s0, $s6
/* 0D0BA8 80315BA8 01F31823 */ subu $v1, $t7, $s3
/* 0D0BAC 80315BAC 10400007 */ beqz $v0, .L_US_80315BCC
/* 0D0BB0 80315BB0 AFA00140 */ sw $zero, 0x140($sp)
/* 0D0BB4 80315BB4 10000008 */ b .L_US_80315BD8
/* 0D0BB8 80315BB8 0003C040 */ sll $t8, $v1, 1
.L_US_80315BBC:
/* 0D0BBC 80315BBC AFA00128 */ sw $zero, 0x128($sp)
/* 0D0BC0 80315BC0 02A6A821 */ addu $s5, $s5, $a2
/* 0D0BC4 80315BC4 1000000B */ b .L_US_80315BF4
/* 0D0BC8 80315BC8 AFA00140 */ sw $zero, 0x140($sp)
.L_US_80315BCC:
/* 0D0BCC 80315BCC 0003C840 */ sll $t9, $v1, 1
/* 0D0BD0 80315BD0 10000008 */ b .L_US_80315BF4
/* 0D0BD4 80315BD4 02B9A821 */ addu $s5, $s5, $t9
.L_US_80315BD8:
/* 0D0BD8 80315BD8 52A00004 */ beql $s5, $zero, .L_US_80315BEC
/* 0D0BDC 80315BDC 0072A821 */ addu $s5, $v1, $s2
/* 0D0BE0 80315BE0 10000004 */ b .L_US_80315BF4
/* 0D0BE4 80315BE4 02B8A821 */ addu $s5, $s5, $t8
/* 0D0BE8 80315BE8 0072A821 */ addu $s5, $v1, $s2
.L_US_80315BEC:
/* 0D0BEC 80315BEC 00157040 */ sll $t6, $s5, 1
/* 0D0BF0 80315BF0 01C0A825 */ move $s5, $t6
.L_US_80315BF4:
/* 0D0BF4 80315BF4 11400014 */ beqz $t2, .L_US_80315C48
/* 0D0BF8 80315BF8 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
/* 0D0BFC 80315BFC 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
/* 0D0C00 80315C00 26AF0180 */ addiu $t7, $s5, 0x180
/* 0D0C04 80315C04 01E1C824 */ and $t9, $t7, $at
/* 0D0C08 80315C08 3C010200 */ lui $at, 0x200
/* 0D0C0C 80315C0C 02801025 */ move $v0, $s4
/* 0D0C10 80315C10 01BE7023 */ subu $t6, $t5, $fp
/* 0D0C14 80315C14 000E7840 */ sll $t7, $t6, 1
/* 0D0C18 80315C18 0321C025 */ or $t8, $t9, $at
/* 0D0C1C 80315C1C AC580000 */ sw $t8, ($v0)
/* 0D0C20 80315C20 AC4F0004 */ sw $t7, 4($v0)
/* 0D0C24 80315C24 92F80000 */ lbu $t8, ($s7)
/* 0D0C28 80315C28 26940008 */ addiu $s4, $s4, 8
/* 0D0C2C 80315C2C AEE00014 */ sw $zero, 0x14($s7)
/* 0D0C30 80315C30 370E0010 */ ori $t6, $t8, 0x10
/* 0D0C34 80315C34 A2EE0000 */ sb $t6, ($s7)
/* 0D0C38 80315C38 92EF0000 */ lbu $t7, ($s7)
/* 0D0C3C 80315C3C 31F9FF7F */ andi $t9, $t7, 0xff7f
/* 0D0C40 80315C40 1000000E */ b .L_US_80315C7C
/* 0D0C44 80315C44 A2F90000 */ sb $t9, ($s7)
.L_US_80315C48:
/* 0D0C48 80315C48 51600008 */ beql $t3, $zero, .L_US_80315C6C
/* 0D0C4C 80315C4C 8EF80014 */ lw $t8, 0x14($s7)
/* 0D0C50 80315C50 92EE0000 */ lbu $t6, ($s7)
/* 0D0C54 80315C54 35CF0020 */ ori $t7, $t6, 0x20
/* 0D0C58 80315C58 A2EF0000 */ sb $t7, ($s7)
/* 0D0C5C 80315C5C 8FF90000 */ lw $t9, ($ra)
/* 0D0C60 80315C60 10000004 */ b .L_US_80315C74
/* 0D0C64 80315C64 AEF90014 */ sw $t9, 0x14($s7)
/* 0D0C68 80315C68 8EF80014 */ lw $t8, 0x14($s7)
.L_US_80315C6C:
/* 0D0C6C 80315C6C 030C7021 */ addu $t6, $t8, $t4
/* 0D0C70 80315C70 AEEE0014 */ sw $t6, 0x14($s7)
.L_US_80315C74:
/* 0D0C74 80315C74 57CDFF02 */ bnel $fp, $t5, .L_US_80315880
/* 0D0C78 80315C78 8EE90014 */ lw $t1, 0x14($s7)
.L_US_80315C7C:
/* 0D0C7C 80315C7C 8FAF0054 */ lw $t7, 0x54($sp)
/* 0D0C80 80315C80 8FB900E0 */ lw $t9, 0xe0($sp)
/* 0D0C84 80315C84 24010002 */ li $at, 2
/* 0D0C88 80315C88 15E00008 */ bnez $t7, .L_US_80315CAC
/* 0D0C8C 80315C8C 8FAE0128 */ lw $t6, 0x128($sp)
/* 0D0C90 80315C90 1321000D */ beq $t9, $at, .L_US_80315CC8
/* 0D0C94 80315C94 8FB800DC */ lw $t8, 0xdc($sp)
/* 0D0C98 80315C98 8EE50000 */ lw $a1, ($s7)
/* 0D0C9C 80315C9C 000530C0 */ sll $a2, $a1, 3
/* 0D0CA0 80315CA0 0006C7C2 */ srl $t8, $a2, 0x1f
/* 0D0CA4 80315CA4 10000066 */ b .L_US_80315E40
/* 0D0CA8 80315CA8 03003025 */ move $a2, $t8
.L_US_80315CAC:
/* 0D0CAC 80315CAC 25CF0180 */ addiu $t7, $t6, 0x180
/* 0D0CB0 80315CB0 A7AF00CE */ sh $t7, 0xce($sp)
/* 0D0CB4 80315CB4 8EE50000 */ lw $a1, ($s7)
/* 0D0CB8 80315CB8 000530C0 */ sll $a2, $a1, 3
/* 0D0CBC 80315CBC 0006CFC2 */ srl $t9, $a2, 0x1f
/* 0D0CC0 80315CC0 1000005F */ b .L_US_80315E40
/* 0D0CC4 80315CC4 03203025 */ move $a2, $t9
.L_US_80315CC8:
/* 0D0CC8 80315CC8 13000009 */ beqz $t8, .L_US_80315CF0
/* 0D0CCC 80315CCC 02801025 */ move $v0, $s4
/* 0D0CD0 80315CD0 24010001 */ li $at, 1
/* 0D0CD4 80315CD4 13010034 */ beq $t8, $at, .L_US_80315DA8
/* 0D0CD8 80315CD8 02801025 */ move $v0, $s4
/* 0D0CDC 80315CDC 8EE50000 */ lw $a1, ($s7)
/* 0D0CE0 80315CE0 000530C0 */ sll $a2, $a1, 3
/* 0D0CE4 80315CE4 000677C2 */ srl $t6, $a2, 0x1f
/* 0D0CE8 80315CE8 10000055 */ b .L_US_80315E40
/* 0D0CEC 80315CEC 01C03025 */ move $a2, $t6
.L_US_80315CF0:
/* 0D0CF0 80315CF0 8FAF0128 */ lw $t7, 0x128($sp)
/* 0D0CF4 80315CF4 3C010800 */ lui $at, 0x800
/* 0D0CF8 80315CF8 25A30004 */ addiu $v1, $t5, 4
/* 0D0CFC 80315CFC 25F90180 */ addiu $t9, $t7, 0x180
/* 0D0D00 80315D00 3338FFFF */ andi $t8, $t9, 0xffff
/* 0D0D04 80315D04 03017025 */ or $t6, $t8, $at
/* 0D0D08 80315D08 3C010020 */ lui $at, 0x20
/* 0D0D0C 80315D0C 306FFFFF */ andi $t7, $v1, 0xffff
/* 0D0D10 80315D10 01E1C825 */ or $t9, $t7, $at
/* 0D0D14 80315D14 26940008 */ addiu $s4, $s4, 8
/* 0D0D18 80315D18 3C180501 */ lui $t8, (0x0501FF60 >> 16) # lui $t8, 0x501
/* 0D0D1C 80315D1C AC590004 */ sw $t9, 4($v0)
/* 0D0D20 80315D20 AC4E0000 */ sw $t6, ($v0)
/* 0D0D24 80315D24 3718FF60 */ ori $t8, (0x0501FF60 & 0xFFFF) # ori $t8, $t8, 0xff60
/* 0D0D28 80315D28 02802025 */ move $a0, $s4
/* 0D0D2C 80315D2C AC980000 */ sw $t8, ($a0)
/* 0D0D30 80315D30 8EEE0034 */ lw $t6, 0x34($s7)
/* 0D0D34 80315D34 3C018000 */ lui $at, (0x800000F0 >> 16) # lui $at, 0x8000
/* 0D0D38 80315D38 342100F0 */ ori $at, (0x800000F0 & 0xFFFF) # ori $at, $at, 0xf0
/* 0D0D3C 80315D3C 01C17821 */ addu $t7, $t6, $at
/* 0D0D40 80315D40 AC8F0004 */ sw $t7, 4($a0)
/* 0D0D44 80315D44 24190024 */ li $t9, 36
/* 0D0D48 80315D48 AFA300D0 */ sw $v1, 0xd0($sp)
/* 0D0D4C 80315D4C A7B900CE */ sh $t9, 0xce($sp)
/* 0D0D50 80315D50 8EE50000 */ lw $a1, ($s7)
/* 0D0D54 80315D54 26940008 */ addiu $s4, $s4, 8
/* 0D0D58 80315D58 02801025 */ move $v0, $s4
/* 0D0D5C 80315D5C 000530C0 */ sll $a2, $a1, 3
/* 0D0D60 80315D60 0006C7C2 */ srl $t8, $a2, 0x1f
/* 0D0D64 80315D64 13000036 */ beqz $t8, .L_US_80315E40
/* 0D0D68 80315D68 03003025 */ move $a2, $t8
/* 0D0D6C 80315D6C 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
/* 0D0D70 80315D70 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
/* 0D0D74 80315D74 25AE0024 */ addiu $t6, $t5, 0x24
/* 0D0D78 80315D78 01C17824 */ and $t7, $t6, $at
/* 0D0D7C 80315D7C 3C010200 */ lui $at, 0x200
/* 0D0D80 80315D80 01E1C825 */ or $t9, $t7, $at
/* 0D0D84 80315D84 25B80010 */ addiu $t8, $t5, 0x10
/* 0D0D88 80315D88 AC580004 */ sw $t8, 4($v0)
/* 0D0D8C 80315D8C AC590000 */ sw $t9, ($v0)
/* 0D0D90 80315D90 8EE50000 */ lw $a1, ($s7)
/* 0D0D94 80315D94 26940008 */ addiu $s4, $s4, 8
/* 0D0D98 80315D98 000530C0 */ sll $a2, $a1, 3
/* 0D0D9C 80315D9C 000677C2 */ srl $t6, $a2, 0x1f
/* 0D0DA0 80315DA0 10000027 */ b .L_US_80315E40
/* 0D0DA4 80315DA4 01C03025 */ move $a2, $t6
.L_US_80315DA8:
/* 0D0DA8 80315DA8 8FAF0128 */ lw $t7, 0x128($sp)
/* 0D0DAC 80315DAC 3C010800 */ lui $at, 0x800
/* 0D0DB0 80315DB0 26940008 */ addiu $s4, $s4, 8
/* 0D0DB4 80315DB4 25F90180 */ addiu $t9, $t7, 0x180
/* 0D0DB8 80315DB8 3338FFFF */ andi $t8, $t9, 0xffff
/* 0D0DBC 80315DBC 03017025 */ or $t6, $t8, $at
/* 0D0DC0 80315DC0 25AF0008 */ addiu $t7, $t5, 8
/* 0D0DC4 80315DC4 31F9FFFF */ andi $t9, $t7, 0xffff
/* 0D0DC8 80315DC8 AC4E0000 */ sw $t6, ($v0)
/* 0D0DCC 80315DCC 3C010160 */ lui $at, 0x160
/* 0D0DD0 80315DD0 0321C025 */ or $t8, $t9, $at
/* 0D0DD4 80315DD4 3C0E0501 */ lui $t6, (0x0501FF60 >> 16) # lui $t6, 0x501
/* 0D0DD8 80315DD8 AC580004 */ sw $t8, 4($v0)
/* 0D0DDC 80315DDC 35CEFF60 */ ori $t6, (0x0501FF60 & 0xFFFF) # ori $t6, $t6, 0xff60
/* 0D0DE0 80315DE0 02801825 */ move $v1, $s4
/* 0D0DE4 80315DE4 AC6E0000 */ sw $t6, ($v1)
/* 0D0DE8 80315DE8 8EEF0034 */ lw $t7, 0x34($s7)
/* 0D0DEC 80315DEC 3C018000 */ lui $at, (0x800000F0 >> 16) # lui $at, 0x8000
/* 0D0DF0 80315DF0 342100F0 */ ori $at, (0x800000F0 & 0xFFFF) # ori $at, $at, 0xf0
/* 0D0DF4 80315DF4 26940008 */ addiu $s4, $s4, 8
/* 0D0DF8 80315DF8 3C180A00 */ lui $t8, (0x0A000164 >> 16) # lui $t8, 0xa00
/* 0D0DFC 80315DFC 01E1C821 */ addu $t9, $t7, $at
/* 0D0E00 80315E00 AC790004 */ sw $t9, 4($v1)
/* 0D0E04 80315E04 37180164 */ ori $t8, (0x0A000164 & 0xFFFF) # ori $t8, $t8, 0x164
/* 0D0E08 80315E08 02802025 */ move $a0, $s4
/* 0D0E0C 80315E0C AC980000 */ sw $t8, ($a0)
/* 0D0E10 80315E10 8FAE00D0 */ lw $t6, 0xd0($sp)
/* 0D0E14 80315E14 26940008 */ addiu $s4, $s4, 8
/* 0D0E18 80315E18 25D90020 */ addiu $t9, $t6, 0x20
/* 0D0E1C 80315E1C 25AE0004 */ addiu $t6, $t5, 4
/* 0D0E20 80315E20 31CFFFFF */ andi $t7, $t6, 0xffff
/* 0D0E24 80315E24 0019C400 */ sll $t8, $t9, 0x10
/* 0D0E28 80315E28 030FC825 */ or $t9, $t8, $t7
/* 0D0E2C 80315E2C AC990004 */ sw $t9, 4($a0)
/* 0D0E30 80315E30 8EE50000 */ lw $a1, ($s7)
/* 0D0E34 80315E34 000530C0 */ sll $a2, $a1, 3
/* 0D0E38 80315E38 000677C2 */ srl $t6, $a2, 0x1f
/* 0D0E3C 80315E3C 01C03025 */ move $a2, $t6
.L_US_80315E40:
/* 0D0E40 80315E40 10C00003 */ beqz $a2, .L_US_80315E50
/* 0D0E44 80315E44 8FA200DC */ lw $v0, 0xdc($sp)
/* 0D0E48 80315E48 10000008 */ b .L_US_80315E6C
/* 0D0E4C 80315E4C AFA00140 */ sw $zero, 0x140($sp)
.L_US_80315E50:
/* 0D0E50 80315E50 8FB800E0 */ lw $t8, 0xe0($sp)
/* 0D0E54 80315E54 24420001 */ addiu $v0, $v0, 1
/* 0D0E58 80315E58 AFA200DC */ sw $v0, 0xdc($sp)
/* 0D0E5C 80315E5C 5458FE5C */ bnel $v0, $t8, .L_US_803157D0
/* 0D0E60 80315E60 8FAF015C */ lw $t7, 0x15c($sp)
.L_US_80315E64:
/* 0D0E64 80315E64 AFA00140 */ sw $zero, 0x140($sp)
/* 0D0E68 80315E68 8EE50000 */ lw $a1, ($s7)
.L_US_80315E6C:
/* 0D0E6C 80315E6C 00057840 */ sll $t7, $a1, 1
/* 0D0E70 80315E70 000FCFC2 */ srl $t9, $t7, 0x1f
/* 0D0E74 80315E74 24010001 */ li $at, 1
/* 0D0E78 80315E78 17210006 */ bne $t9, $at, .L_US_80315E94
/* 0D0E7C 80315E7C 02802025 */ move $a0, $s4
/* 0D0E80 80315E80 240E0001 */ li $t6, 1
/* 0D0E84 80315E84 AFAE0140 */ sw $t6, 0x140($sp)
/* 0D0E88 80315E88 92F80000 */ lbu $t8, ($s7)
/* 0D0E8C 80315E8C 330FFFBF */ andi $t7, $t8, 0xffbf
/* 0D0E90 80315E90 A2EF0000 */ sb $t7, ($s7)
.L_US_80315E94:
/* 0D0E94 80315E94 8FB10048 */ lw $s1, 0x48($sp)
/* 0D0E98 80315E98 97B900CE */ lhu $t9, 0xce($sp)
/* 0D0E9C 80315E9C 8FAE0140 */ lw $t6, 0x140($sp)
/* 0D0EA0 80315EA0 02E02825 */ move $a1, $s7
/* 0D0EA4 80315EA4 97A7005E */ lhu $a3, 0x5e($sp)
/* 0D0EA8 80315EA8 02203025 */ move $a2, $s1
/* 0D0EAC 80315EAC AFB90010 */ sw $t9, 0x10($sp)
/* 0D0EB0 80315EB0 0C0C5837 */ jal func_80314FD4
/* 0D0EB4 80315EB4 AFAE0014 */ sw $t6, 0x14($sp)
/* 0D0EB8 80315EB8 96F8000C */ lhu $t8, 0xc($s7)
/* 0D0EBC 80315EBC 0040A025 */ move $s4, $v0
/* 0D0EC0 80315EC0 02802025 */ move $a0, $s4
/* 0D0EC4 80315EC4 17000004 */ bnez $t8, .L_US_80315ED8
/* 0D0EC8 80315EC8 02E02825 */ move $a1, $s7
/* 0D0ECC 80315ECC 96EF0010 */ lhu $t7, 0x10($s7)
/* 0D0ED0 80315ED0 51E00004 */ beql $t7, $zero, .L_US_80315EE4
/* 0D0ED4 80315ED4 96F9000E */ lhu $t9, 0xe($s7)
.L_US_80315ED8:
/* 0D0ED8 80315ED8 1000000A */ b .L_US_80315F04
/* 0D0EDC 80315EDC 24100001 */ li $s0, 1
/* 0D0EE0 80315EE0 96F9000E */ lhu $t9, 0xe($s7)
.L_US_80315EE4:
/* 0D0EE4 80315EE4 17200005 */ bnez $t9, .L_US_80315EFC
/* 0D0EE8 80315EE8 00000000 */ nop
/* 0D0EEC 80315EEC 96EE0012 */ lhu $t6, 0x12($s7)
/* 0D0EF0 80315EF0 00008025 */ move $s0, $zero
/* 0D0EF4 80315EF4 11C00003 */ beqz $t6, .L_US_80315F04
/* 0D0EF8 80315EF8 00000000 */ nop
.L_US_80315EFC:
/* 0D0EFC 80315EFC 10000001 */ b .L_US_80315F04
/* 0D0F00 80315F00 24100002 */ li $s0, 2
.L_US_80315F04:
/* 0D0F04 80315F04 8FB80140 */ lw $t8, 0x140($sp)
/* 0D0F08 80315F08 8FA60174 */ lw $a2, 0x174($sp)
/* 0D0F0C 80315F0C 00003825 */ move $a3, $zero
/* 0D0F10 80315F10 AFB00010 */ sw $s0, 0x10($sp)
/* 0D0F14 80315F14 0C0C584E */ jal func_80315030
/* 0D0F18 80315F18 AFB80014 */ sw $t8, 0x14($sp)
/* 0D0F1C 80315F1C 92EF0001 */ lbu $t7, 1($s7)
/* 0D0F20 80315F20 0040A025 */ move $s4, $v0
/* 0D0F24 80315F24 00402025 */ move $a0, $v0
/* 0D0F28 80315F28 11E00006 */ beqz $t7, .L_US_80315F44
/* 0D0F2C 80315F2C 02E02825 */ move $a1, $s7
/* 0D0F30 80315F30 02203025 */ move $a2, $s1
/* 0D0F34 80315F34 8FA70140 */ lw $a3, 0x140($sp)
/* 0D0F38 80315F38 0C0C59BF */ jal func_803155F4
/* 0D0F3C 80315F3C AFB00010 */ sw $s0, 0x10($sp)
/* 0D0F40 80315F40 0040A025 */ move $s4, $v0
.L_US_80315F44:
/* 0D0F44 80315F44 8FB9016C */ lw $t9, 0x16c($sp)
.L_US_80315F48:
/* 0D0F48 80315F48 8FB80064 */ lw $t8, 0x64($sp)
/* 0D0F4C 80315F4C 272E0001 */ addiu $t6, $t9, 1
/* 0D0F50 80315F50 3C198022 */ lui $t9, %hi(gMaxSimultaneousNotes) # $t9, 0x8022
/* 0D0F54 80315F54 8F396B70 */ lw $t9, %lo(gMaxSimultaneousNotes)($t9)
/* 0D0F58 80315F58 270F00C0 */ addiu $t7, $t8, 0xc0
/* 0D0F5C 80315F5C AFAF0064 */ sw $t7, 0x64($sp)
/* 0D0F60 80315F60 01D9082A */ slt $at, $t6, $t9
/* 0D0F64 80315F64 1420FD9E */ bnez $at, .L_US_803155E0
/* 0D0F68 80315F68 AFAE016C */ sw $t6, 0x16c($sp)
.L_US_80315F6C:
/* 0D0F6C 80315F6C 3C080800 */ lui $t0, 0x800
/* 0D0F70 80315F70 02802025 */ move $a0, $s4
/* 0D0F74 80315F74 AC880000 */ sw $t0, ($a0)
/* 0D0F78 80315F78 8FA30174 */ lw $v1, 0x174($sp)
/* 0D0F7C 80315F7C 26940008 */ addiu $s4, $s4, 8
/* 0D0F80 80315F80 02802825 */ move $a1, $s4
/* 0D0F84 80315F84 0003C040 */ sll $t8, $v1, 1
/* 0D0F88 80315F88 330FFFFF */ andi $t7, $t8, 0xffff
/* 0D0F8C 80315F8C AC8F0004 */ sw $t7, 4($a0)
/* 0D0F90 80315F90 26940008 */ addiu $s4, $s4, 8
/* 0D0F94 80315F94 3C0E0D00 */ lui $t6, 0xd00
/* 0D0F98 80315F98 3C1904C0 */ lui $t9, (0x04C00600 >> 16) # lui $t9, 0x4c0
/* 0D0F9C 80315F9C 37390600 */ ori $t9, (0x04C00600 & 0xFFFF) # ori $t9, $t9, 0x600
/* 0D0FA0 80315FA0 ACAE0000 */ sw $t6, ($a1)
/* 0D0FA4 80315FA4 02803025 */ move $a2, $s4
/* 0D0FA8 80315FA8 ACB90004 */ sw $t9, 4($a1)
/* 0D0FAC 80315FAC 0018C040 */ sll $t8, $t8, 1
/* 0D0FB0 80315FB0 330FFFFF */ andi $t7, $t8, 0xffff
/* 0D0FB4 80315FB4 26940008 */ addiu $s4, $s4, 8
/* 0D0FB8 80315FB8 ACCF0004 */ sw $t7, 4($a2)
/* 0D0FBC 80315FBC ACC80000 */ sw $t0, ($a2)
/* 0D0FC0 80315FC0 02803825 */ move $a3, $s4
/* 0D0FC4 80315FC4 3C0E0600 */ lui $t6, 0x600
/* 0D0FC8 80315FC8 ACEE0000 */ sw $t6, ($a3)
/* 0D0FCC 80315FCC 8FB90170 */ lw $t9, 0x170($sp)
/* 0D0FD0 80315FD0 3C018000 */ lui $at, 0x8000
/* 0D0FD4 80315FD4 26820008 */ addiu $v0, $s4, 8
/* 0D0FD8 80315FD8 0321C021 */ addu $t8, $t9, $at
/* 0D0FDC 80315FDC ACF80004 */ sw $t8, 4($a3)
/* 0D0FE0 80315FE0 8FBF0044 */ lw $ra, 0x44($sp)
/* 0D0FE4 80315FE4 8FBE0040 */ lw $fp, 0x40($sp)
/* 0D0FE8 80315FE8 8FB7003C */ lw $s7, 0x3c($sp)
/* 0D0FEC 80315FEC 8FB60038 */ lw $s6, 0x38($sp)
/* 0D0FF0 80315FF0 8FB50034 */ lw $s5, 0x34($sp)
/* 0D0FF4 80315FF4 8FB40030 */ lw $s4, 0x30($sp)
/* 0D0FF8 80315FF8 8FB3002C */ lw $s3, 0x2c($sp)
/* 0D0FFC 80315FFC 8FB20028 */ lw $s2, 0x28($sp)
/* 0D1000 80316000 8FB10024 */ lw $s1, 0x24($sp)
/* 0D1004 80316004 8FB00020 */ lw $s0, 0x20($sp)
/* 0D1008 80316008 03E00008 */ jr $ra
/* 0D100C 8031600C 27BD0170 */ addiu $sp, $sp, 0x170