sm64pc/asm/non_matchings/func_80316928_us.s

504 lines
25 KiB
ArmAsm

.late_rodata
glabel jtbl_80337BE0
.word L80317BF0
.word L80317BFC
.word L80317C3C
.word L80317C0C
.word L80317C3C
.word L80317C3C
.word L80317C3C
.word L80317C1C
.word L80317C3C
.word L80317C3C
.word L80317C3C
.word L80317C3C
.word L80317C3C
.word L80317C3C
.word L80317C3C
.word L80317C2C
glabel D_U_80338E00
.word 0x4A2FC800 /* 2880000.0f */
glabel D_U_80338E04
.word 0x4185B439 /* 16.713f */
.text
glabel func_80316928
/* 0D2948 80317948 27BDFFC8 */ addiu $sp, $sp, -0x38
/* 0D294C 8031794C 3C0E8033 */ lui $t6, %hi(gAudioLoadLock) # $t6, 0x8033
/* 0D2950 80317950 AFBF0024 */ sw $ra, 0x24($sp)
/* 0D2954 80317954 AFB30020 */ sw $s3, 0x20($sp)
/* 0D2958 80317958 AFB2001C */ sw $s2, 0x1c($sp)
/* 0D295C 8031795C AFB10018 */ sw $s1, 0x18($sp)
/* 0D2960 80317960 AFB00014 */ sw $s0, 0x14($sp)
/* 0D2964 80317964 AFA40038 */ sw $a0, 0x38($sp)
/* 0D2968 80317968 25CE5004 */ addiu $t6, %lo(gAudioLoadLock) # addiu $t6, $t6, 0x5004
/* 0D296C 8031796C 8DCF0000 */ lw $t7, ($t6)
/* 0D2970 80317970 51E0007A */ beql $t7, $zero, .L80317B5C
/* 0D2974 80317974 8FB80038 */ lw $t8, 0x38($sp)
/* 0D2978 80317978 0C0C5E3B */ jal func_803168CC
/* 0D297C 8031797C 00000000 */ nop
/* 0D2980 80317980 3C038022 */ lui $v1, %hi(gMaxSimultaneousNotes) # $v1, 0x8022
/* 0D2984 80317984 8C636B70 */ lw $v1, %lo(gMaxSimultaneousNotes)($v1)
/* 0D2988 80317988 00008025 */ move $s0, $zero
/* 0D298C 8031798C 00002025 */ move $a0, $zero
/* 0D2990 80317990 18600027 */ blez $v1, .L80317A30
/* 0D2994 80317994 00008825 */ move $s1, $zero
/* 0D2998 80317998 3C068022 */ lui $a2, %hi(gAudioUpdatesPerFrame) # $a2, 0x8022
/* 0D299C 8031799C 3C058022 */ lui $a1, %hi(gNotes) # $a1, 0x8022
/* 0D29A0 803179A0 24A52610 */ addiu $a1, %lo(gNotes) # addiu $a1, $a1, 0x2610
/* 0D29A4 803179A4 24C66B7E */ addiu $a2, %lo(gAudioUpdatesPerFrame) # addiu $a2, $a2, 0x6b7e
.L803179A8:
/* 0D29A8 803179A8 8CB80000 */ lw $t8, ($a1)
/* 0D29AC 803179AC 26100001 */ addiu $s0, $s0, 1
/* 0D29B0 803179B0 03041021 */ addu $v0, $t8, $a0
/* 0D29B4 803179B4 8C590000 */ lw $t9, ($v0)
/* 0D29B8 803179B8 001967C2 */ srl $t4, $t9, 0x1f
/* 0D29BC 803179BC 5180001A */ beql $t4, $zero, .L80317A28
/* 0D29C0 803179C0 0203082A */ slt $at, $s0, $v1
/* 0D29C4 803179C4 904D0055 */ lbu $t5, 0x55($v0)
/* 0D29C8 803179C8 51A00017 */ beql $t5, $zero, .L80317A28
/* 0D29CC 803179CC 0203082A */ slt $at, $s0, $v1
/* 0D29D0 803179D0 80CE0000 */ lb $t6, ($a2)
/* 0D29D4 803179D4 340F8000 */ li $t7, 32768
/* 0D29D8 803179D8 3C038022 */ lui $v1, %hi(gMaxSimultaneousNotes) # $v1, 0x8022
/* 0D29DC 803179DC 01EE001A */ div $zero, $t7, $t6
/* 0D29E0 803179E0 0000C012 */ mflo $t8
/* 0D29E4 803179E4 A4580062 */ sh $t8, 0x62($v0)
/* 0D29E8 803179E8 8CB90000 */ lw $t9, ($a1)
/* 0D29EC 803179EC 15C00002 */ bnez $t6, .L803179F8
/* 0D29F0 803179F0 00000000 */ nop
/* 0D29F4 803179F4 0007000D */ break 7
.L803179F8:
/* 0D29F8 803179F8 2401FFFF */ li $at, -1
/* 0D29FC 803179FC 15C10004 */ bne $t6, $at, .L80317A10
/* 0D2A00 80317A00 3C018000 */ lui $at, 0x8000
/* 0D2A04 80317A04 15E10002 */ bne $t7, $at, .L80317A10
/* 0D2A08 80317A08 00000000 */ nop
/* 0D2A0C 80317A0C 0006000D */ break 6
.L80317A10:
/* 0D2A10 80317A10 03241021 */ addu $v0, $t9, $a0
/* 0D2A14 80317A14 904C0054 */ lbu $t4, 0x54($v0)
/* 0D2A18 80317A18 358D0010 */ ori $t5, $t4, 0x10
/* 0D2A1C 80317A1C A04D0054 */ sb $t5, 0x54($v0)
/* 0D2A20 80317A20 8C636B70 */ lw $v1, %lo(gMaxSimultaneousNotes)($v1)
/* 0D2A24 80317A24 0203082A */ slt $at, $s0, $v1
.L80317A28:
/* 0D2A28 80317A28 1420FFDF */ bnez $at, .L803179A8
/* 0D2A2C 80317A2C 248400C0 */ addiu $a0, $a0, 0xc0
.L80317A30:
/* 0D2A30 80317A30 0C0C5E45 */ jal wait_for_audio_frames
/* 0D2A34 80317A34 24040001 */ li $a0, 1
/* 0D2A38 80317A38 26310001 */ addiu $s1, $s1, 1
/* 0D2A3C 80317A3C 2A2100F1 */ slti $at, $s1, 0xf1
/* 0D2A40 80317A40 10200013 */ beqz $at, .L80317A90
/* 0D2A44 80317A44 3C038022 */ lui $v1, %hi(gMaxSimultaneousNotes) # $v1, 0x8022
/* 0D2A48 80317A48 8C636B70 */ lw $v1, %lo(gMaxSimultaneousNotes)($v1)
/* 0D2A4C 80317A4C 00008025 */ move $s0, $zero
/* 0D2A50 80317A50 3C028022 */ lui $v0, %hi(gNotes) # $v0, 0x8022
/* 0D2A54 80317A54 1860000A */ blez $v1, .L80317A80
/* 0D2A58 80317A58 00000000 */ nop
/* 0D2A5C 80317A5C 8C422610 */ lw $v0, %lo(gNotes)($v0)
.L80317A60:
/* 0D2A60 80317A60 8C4F0000 */ lw $t7, ($v0)
/* 0D2A64 80317A64 000F77C2 */ srl $t6, $t7, 0x1f
/* 0D2A68 80317A68 15C00005 */ bnez $t6, .L80317A80
/* 0D2A6C 80317A6C 00000000 */ nop
/* 0D2A70 80317A70 26100001 */ addiu $s0, $s0, 1
/* 0D2A74 80317A74 0203082A */ slt $at, $s0, $v1
/* 0D2A78 80317A78 1420FFF9 */ bnez $at, .L80317A60
/* 0D2A7C 80317A7C 244200C0 */ addiu $v0, $v0, 0xc0
.L80317A80:
/* 0D2A80 80317A80 12030003 */ beq $s0, $v1, .L80317A90
/* 0D2A84 80317A84 00000000 */ nop
/* 0D2A88 80317A88 1000FFE9 */ b .L80317A30
/* 0D2A8C 80317A8C 00000000 */ nop
.L80317A90:
/* 0D2A90 80317A90 0C0C5E3B */ jal func_803168CC
/* 0D2A94 80317A94 00000000 */ nop
/* 0D2A98 80317A98 0C0C5E45 */ jal wait_for_audio_frames
/* 0D2A9C 80317A9C 24040003 */ li $a0, 3
/* 0D2AA0 80317AA0 3C181971 */ lui $t8, (0x19710515 >> 16) # lui $t8, 0x1971
/* 0D2AA4 80317AA4 3C198033 */ lui $t9, %hi(gAudioLoadLock) # $t9, 0x8033
/* 0D2AA8 80317AA8 27395004 */ addiu $t9, %lo(gAudioLoadLock) # addiu $t9, $t9, 0x5004
/* 0D2AAC 80317AAC 37180515 */ ori $t8, (0x19710515 & 0xFFFF) # ori $t8, $t8, 0x515
/* 0D2AB0 80317AB0 AF380000 */ sw $t8, ($t9)
/* 0D2AB4 80317AB4 0C0C5E45 */ jal wait_for_audio_frames
/* 0D2AB8 80317AB8 24040003 */ li $a0, 3
/* 0D2ABC 80317ABC 3C138022 */ lui $s3, %hi(gCurrAudioFrameDmaCount) # $s3, 0x8022
/* 0D2AC0 80317AC0 26736B84 */ addiu $s3, %lo(gCurrAudioFrameDmaCount) # addiu $s3, $s3, 0x6b84
/* 0D2AC4 80317AC4 8E710000 */ lw $s1, ($s3)
/* 0D2AC8 80317AC8 3C128022 */ lui $s2, %hi(gCurrAudioFrameDmaQueue) # $s2, 0x8022
/* 0D2ACC 80317ACC 26525CE8 */ addiu $s2, %lo(gCurrAudioFrameDmaQueue) # addiu $s2, $s2, 0x5ce8
/* 0D2AD0 80317AD0 1A200012 */ blez $s1, .L80317B1C
/* 0D2AD4 80317AD4 00000000 */ nop
/* 0D2AD8 80317AD8 8E6C0000 */ lw $t4, ($s3)
.L80317ADC:
/* 0D2ADC 80317ADC 00008025 */ move $s0, $zero
/* 0D2AE0 80317AE0 1980000C */ blez $t4, .L80317B14
/* 0D2AE4 80317AE4 02402025 */ move $a0, $s2
.L80317AE8:
/* 0D2AE8 80317AE8 00002825 */ move $a1, $zero
/* 0D2AEC 80317AEC 0C0C8A00 */ jal osRecvMesg
/* 0D2AF0 80317AF0 00003025 */ move $a2, $zero
/* 0D2AF4 80317AF4 54400003 */ bnezl $v0, .L80317B04
/* 0D2AF8 80317AF8 8E6D0000 */ lw $t5, ($s3)
/* 0D2AFC 80317AFC 2631FFFF */ addiu $s1, $s1, -1
/* 0D2B00 80317B00 8E6D0000 */ lw $t5, ($s3)
.L80317B04:
/* 0D2B04 80317B04 26100001 */ addiu $s0, $s0, 1
/* 0D2B08 80317B08 020D082A */ slt $at, $s0, $t5
/* 0D2B0C 80317B0C 5420FFF6 */ bnezl $at, .L80317AE8
/* 0D2B10 80317B10 02402025 */ move $a0, $s2
.L80317B14:
/* 0D2B14 80317B14 5E20FFF1 */ bgtzl $s1, .L80317ADC
/* 0D2B18 80317B18 8E6C0000 */ lw $t4, ($s3)
.L80317B1C:
/* 0D2B1C 80317B1C 3C038022 */ lui $v1, %hi(gAiBuffers) # $v1, 0x8022
/* 0D2B20 80317B20 3C068022 */ lui $a2, %hi(gAiBuffers + 0xC) # $a2, 0x8022
/* 0D2B24 80317B24 AE600000 */ sw $zero, ($s3)
/* 0D2B28 80317B28 24C66C4C */ addiu $a2, %lo(gAiBuffers + 0xC) # addiu $a2, $a2, 0x6c4c
/* 0D2B2C 80317B2C 24636C40 */ addiu $v1, %lo(gAiBuffers) # addiu $v1, $v1, 0x6c40
/* 0D2B30 80317B30 24040A00 */ li $a0, 2560
/* 0D2B34 80317B34 00001025 */ move $v0, $zero
.L80317B38:
/* 0D2B38 80317B38 8C6F0000 */ lw $t7, ($v1)
/* 0D2B3C 80317B3C 01E27021 */ addu $t6, $t7, $v0
/* 0D2B40 80317B40 24420002 */ addiu $v0, $v0, 2
/* 0D2B44 80317B44 1444FFFC */ bne $v0, $a0, .L80317B38
/* 0D2B48 80317B48 A5C00000 */ sh $zero, ($t6)
/* 0D2B4C 80317B4C 24630004 */ addiu $v1, $v1, 4
/* 0D2B50 80317B50 5466FFF9 */ bnel $v1, $a2, .L80317B38
/* 0D2B54 80317B54 00001025 */ move $v0, $zero
/* 0D2B58 80317B58 8FB80038 */ lw $t8, 0x38($sp)
.L80317B5C:
/* 0D2B5C 80317B5C 3C018022 */ lui $at, %hi(gSampleDmaNumListItems) # $at, 0x8022
/* 0D2B60 80317B60 AC206938 */ sw $zero, %lo(gSampleDmaNumListItems)($at)
/* 0D2B64 80317B64 97190006 */ lhu $t9, 6($t8)
/* 0D2B68 80317B68 AFB9002C */ sw $t9, 0x2c($sp)
/* 0D2B6C 80317B6C 0C0C965C */ jal osAiSetFrequency
/* 0D2B70 80317B70 8F040000 */ lw $a0, ($t8)
/* 0D2B74 80317B74 2401003C */ li $at, 60
/* 0D2B78 80317B78 0041001A */ div $zero, $v0, $at
/* 0D2B7C 80317B7C 8FA80038 */ lw $t0, 0x38($sp)
/* 0D2B80 80317B80 3C038022 */ lui $v1, %hi(gAiFrequency) # $v1, 0x8022
/* 0D2B84 80317B84 24636B64 */ addiu $v1, %lo(gAiFrequency) # addiu $v1, $v1, 0x6b64
/* 0D2B88 80317B88 AC620000 */ sw $v0, ($v1)
/* 0D2B8C 80317B8C 910C0004 */ lbu $t4, 4($t0)
/* 0D2B90 80317B90 00007812 */ mflo $t7
/* 0D2B94 80317B94 3C0A8022 */ lui $t2, %hi(D_80226D74) # $t2, 0x8022
/* 0D2B98 80317B98 3C0B8022 */ lui $t3, %hi(gMaxSimultaneousNotes) # $t3, 0x8022
/* 0D2B9C 80317B9C 25EE000F */ addiu $t6, $t7, 0xf
/* 0D2BA0 80317BA0 2401FFF0 */ li $at, -16
/* 0D2BA4 80317BA4 256B6B70 */ addiu $t3, %lo(gMaxSimultaneousNotes) # addiu $t3, $t3, 0x6b70
/* 0D2BA8 80317BA8 254A6B74 */ addiu $t2, %lo(D_80226D74) # addiu $t2, $t2, 0x6b74
/* 0D2BAC 80317BAC 01C1C824 */ and $t9, $t6, $at
/* 0D2BB0 80317BB0 AD590000 */ sw $t9, ($t2)
/* 0D2BB4 80317BB4 AD6C0000 */ sw $t4, ($t3)
/* 0D2BB8 80317BB8 91180005 */ lbu $t8, 5($t0)
/* 0D2BBC 80317BBC 3C098022 */ lui $t1, %hi(D_802212A2) # $t1, 0x8022
/* 0D2BC0 80317BC0 25290EA2 */ addiu $t1, %lo(D_802212A2) # addiu $t1, $t1, 0xea2
/* 0D2BC4 80317BC4 A1380000 */ sb $t8, ($t1)
/* 0D2BC8 80317BC8 812C0000 */ lb $t4, ($t1)
/* 0D2BCC 80317BCC 258DFFFF */ addiu $t5, $t4, -1
/* 0D2BD0 80317BD0 2DA10010 */ sltiu $at, $t5, 0x10
/* 0D2BD4 80317BD4 10200019 */ beqz $at, .L80317C3C
/* 0D2BD8 80317BD8 000D6880 */ sll $t5, $t5, 2
/* 0D2BDC 80317BDC 3C018034 */ lui $at, %hi(jtbl_80337BE0)
/* 0D2BE0 80317BE0 002D0821 */ addu $at, $at, $t5
/* 0D2BE4 80317BE4 8C2D8DC0 */ lw $t5, %lo(jtbl_80337BE0)($at)
/* 0D2BE8 80317BE8 01A00008 */ jr $t5
/* 0D2BEC 80317BEC 00000000 */ nop
glabel L80317BF0
/* 0D2BF0 80317BF0 3C018022 */ lui $at, %hi(D_802212A3) # $at, 0x8022
/* 0D2BF4 80317BF4 10000013 */ b .L80317C44
/* 0D2BF8 80317BF8 A0200EA3 */ sb $zero, %lo(D_802212A3)($at)
glabel L80317BFC
/* 0D2BFC 80317BFC 240F0001 */ li $t7, 1
/* 0D2C00 80317C00 3C018022 */ lui $at, %hi(D_802212A3) # $at, 0x8022
/* 0D2C04 80317C04 1000000F */ b .L80317C44
/* 0D2C08 80317C08 A02F0EA3 */ sb $t7, %lo(D_802212A3)($at)
glabel L80317C0C
/* 0D2C0C 80317C0C 240E0002 */ li $t6, 2
/* 0D2C10 80317C10 3C018022 */ lui $at, %hi(D_802212A3) # $at, 0x8022
/* 0D2C14 80317C14 1000000B */ b .L80317C44
/* 0D2C18 80317C18 A02E0EA3 */ sb $t6, %lo(D_802212A3)($at)
glabel L80317C1C
/* 0D2C1C 80317C1C 24190003 */ li $t9, 3
/* 0D2C20 80317C20 3C018022 */ lui $at, %hi(D_802212A3) # $at, 0x8022
/* 0D2C24 80317C24 10000007 */ b .L80317C44
/* 0D2C28 80317C28 A0390EA3 */ sb $t9, %lo(D_802212A3)($at)
glabel L80317C2C
/* 0D2C2C 80317C2C 24180004 */ li $t8, 4
/* 0D2C30 80317C30 3C018022 */ lui $at, %hi(D_802212A3) # $at, 0x8022
/* 0D2C34 80317C34 10000003 */ b .L80317C44
/* 0D2C38 80317C38 A0380EA3 */ sb $t8, %lo(D_802212A3)($at)
glabel L80317C3C
.L80317C3C:
/* 0D2C3C 80317C3C 3C018022 */ lui $at, %hi(D_802212A3) # $at, 0x8022
/* 0D2C40 80317C40 A0200EA3 */ sb $zero, %lo(D_802212A3)($at)
.L80317C44:
/* 0D2C44 80317C44 910C0005 */ lbu $t4, 5($t0)
/* 0D2C48 80317C48 3C018022 */ lui $at, %hi(D_802212A0) # $at, 0x8022
/* 0D2C4C 80317C4C 3C198033 */ lui $t9, %hi(gTatumsPerBeat) # $t9, 0x8033
/* 0D2C50 80317C50 A12C0000 */ sb $t4, ($t1)
/* 0D2C54 80317C54 950D000A */ lhu $t5, 0xa($t0)
/* 0D2C58 80317C58 87394FF4 */ lh $t9, %lo(gTatumsPerBeat)($t9)
/* 0D2C5C 80317C5C 240C0001 */ li $t4, 1
/* 0D2C60 80317C60 A42D0EA0 */ sh $t5, %lo(D_802212A0)($at)
/* 0D2C64 80317C64 8D420000 */ lw $v0, ($t2)
/* 0D2C68 80317C68 3C018022 */ lui $at, %hi(gMinAiBufferLength) # $at, 0x8022
/* 0D2C6C 80317C6C 44998000 */ mtc1 $t9, $f16
/* 0D2C70 80317C70 244FFFF0 */ addiu $t7, $v0, -0x10
/* 0D2C74 80317C74 AC2F6B78 */ sw $t7, %lo(gMinAiBufferLength)($at)
/* 0D2C78 80317C78 240100A0 */ li $at, 160
/* 0D2C7C 80317C7C 0041001A */ div $zero, $v0, $at
/* 0D2C80 80317C80 00001812 */ mflo $v1
/* 0D2C84 80317C84 24630001 */ addiu $v1, $v1, 1
/* 0D2C88 80317C88 00032E00 */ sll $a1, $v1, 0x18
/* 0D2C8C 80317C8C 00057603 */ sra $t6, $a1, 0x18
/* 0D2C90 80317C90 01C02825 */ move $a1, $t6
/* 0D2C94 80317C94 44852000 */ mtc1 $a1, $f4
/* 0D2C98 80317C98 3C018022 */ lui $at, %hi(gAudioUpdatesPerFrame) # $at, 0x8022
/* 0D2C9C 80317C9C A0236B7E */ sb $v1, %lo(gAudioUpdatesPerFrame)($at)
/* 0D2CA0 80317CA0 468021A0 */ cvt.s.w $f6, $f4
/* 0D2CA4 80317CA4 3C018034 */ lui $at, %hi(D_U_80338E00) # $at, 0x8034
/* 0D2CA8 80317CA8 C4288E00 */ lwc1 $f8, %lo(D_U_80338E00)($at)
/* 0D2CAC 80317CAC 3C018034 */ lui $at, %hi(D_U_80338E04) # $at, 0x8034
/* 0D2CB0 80317CB0 3C048022 */ lui $a0, %hi(D_80221898) # $a0, 0x8022
/* 0D2CB4 80317CB4 468084A0 */ cvt.s.w $f18, $f16
/* 0D2CB8 80317CB8 46083282 */ mul.s $f10, $f6, $f8
/* 0D2CBC 80317CBC C4268E04 */ lwc1 $f6, %lo(D_U_80338E04)($at)
/* 0D2CC0 80317CC0 3C138022 */ lui $s3, %hi(D_80226D6C) # $s3, 0x8022
/* 0D2CC4 80317CC4 26736B6C */ addiu $s3, %lo(D_80226D6C) # addiu $s3, $s3, 0x6b6c
/* 0D2CC8 80317CC8 24841498 */ addiu $a0, %lo(D_80221898) # addiu $a0, $a0, 0x1498
/* 0D2CCC 80317CCC 46125103 */ div.s $f4, $f10, $f18
/* 0D2CD0 80317CD0 46062203 */ div.s $f8, $f4, $f6
/* 0D2CD4 80317CD4 4458F800 */ cfc1 $t8, $31
/* 0D2CD8 80317CD8 44CCF800 */ ctc1 $t4, $31
/* 0D2CDC 80317CDC 00000000 */ nop
/* 0D2CE0 80317CE0 46004424 */ cvt.w.s $f16, $f8
/* 0D2CE4 80317CE4 444CF800 */ cfc1 $t4, $31
/* 0D2CE8 80317CE8 00000000 */ nop
/* 0D2CEC 80317CEC 318C0078 */ andi $t4, $t4, 0x78
/* 0D2CF0 80317CF0 11800012 */ beqz $t4, .L80317D3C
/* 0D2CF4 80317CF4 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000
/* 0D2CF8 80317CF8 44818000 */ mtc1 $at, $f16
/* 0D2CFC 80317CFC 240C0001 */ li $t4, 1
/* 0D2D00 80317D00 46104401 */ sub.s $f16, $f8, $f16
/* 0D2D04 80317D04 44CCF800 */ ctc1 $t4, $31
/* 0D2D08 80317D08 00000000 */ nop
/* 0D2D0C 80317D0C 46008424 */ cvt.w.s $f16, $f16
/* 0D2D10 80317D10 444CF800 */ cfc1 $t4, $31
/* 0D2D14 80317D14 00000000 */ nop
/* 0D2D18 80317D18 318C0078 */ andi $t4, $t4, 0x78
/* 0D2D1C 80317D1C 15800005 */ bnez $t4, .L80317D34
/* 0D2D20 80317D20 00000000 */ nop
/* 0D2D24 80317D24 440C8000 */ mfc1 $t4, $f16
/* 0D2D28 80317D28 3C018000 */ lui $at, 0x8000
/* 0D2D2C 80317D2C 10000007 */ b .L80317D4C
/* 0D2D30 80317D30 01816025 */ or $t4, $t4, $at
.L80317D34:
/* 0D2D34 80317D34 10000005 */ b .L80317D4C
/* 0D2D38 80317D38 240CFFFF */ li $t4, -1
.L80317D3C:
/* 0D2D3C 80317D3C 440C8000 */ mfc1 $t4, $f16
/* 0D2D40 80317D40 00000000 */ nop
/* 0D2D44 80317D44 0580FFFB */ bltz $t4, .L80317D34
/* 0D2D48 80317D48 00000000 */ nop
.L80317D4C:
/* 0D2D4C 80317D4C 3C018022 */ lui $at, %hi(gTempoInternalToExternal) # $at, 0x8022
/* 0D2D50 80317D50 A42C6B7C */ sh $t4, %lo(gTempoInternalToExternal)($at)
/* 0D2D54 80317D54 8D6D0000 */ lw $t5, ($t3)
/* 0D2D58 80317D58 44D8F800 */ ctc1 $t8, $31
/* 0D2D5C 80317D5C 000D7880 */ sll $t7, $t5, 2
/* 0D2D60 80317D60 01ED7821 */ addu $t7, $t7, $t5
/* 0D2D64 80317D64 000F7880 */ sll $t7, $t7, 2
/* 0D2D68 80317D68 01E50019 */ multu $t7, $a1
/* 0D2D6C 80317D6C 00007012 */ mflo $t6
/* 0D2D70 80317D70 25D90140 */ addiu $t9, $t6, 0x140
/* 0D2D74 80317D74 AE790000 */ sw $t9, ($s3)
/* 0D2D78 80317D78 8D0C000C */ lw $t4, 0xc($t0)
/* 0D2D7C 80317D7C 8D180010 */ lw $t8, 0x10($t0)
/* 0D2D80 80317D80 8D0F0014 */ lw $t7, 0x14($t0)
/* 0D2D84 80317D84 8D0D0018 */ lw $t5, 0x18($t0)
/* 0D2D88 80317D88 3C0E8022 */ lui $t6, %hi(D_802212A8 + 8) # $t6, 0x8022
/* 0D2D8C 80317D8C 8DCE0EB0 */ lw $t6, %lo(D_802212A8 + 8)($t6)
/* 0D2D90 80317D90 030C8021 */ addu $s0, $t8, $t4
/* 0D2D94 80317D94 01AF8821 */ addu $s1, $t5, $t7
/* 0D2D98 80317D98 02113021 */ addu $a2, $s0, $s1
/* 0D2D9C 80317D9C 01C63823 */ subu $a3, $t6, $a2
/* 0D2DA0 80317DA0 24E7FF00 */ addiu $a3, $a3, -0x100
/* 0D2DA4 80317DA4 AC870000 */ sw $a3, ($a0)
/* 0D2DA8 80317DA8 0C0C5C61 */ jal func_80316164
/* 0D2DAC 80317DAC AC86000C */ sw $a2, 0xc($a0)
/* 0D2DB0 80317DB0 3C048022 */ lui $a0, %hi(D_802218A8) # $a0, 0x8022
/* 0D2DB4 80317DB4 248414A8 */ addiu $a0, %lo(D_802218A8) # addiu $a0, $a0, 0x14a8
/* 0D2DB8 80317DB8 AC900000 */ sw $s0, ($a0)
/* 0D2DBC 80317DBC 0C0C5C80 */ jal func_803161E0
/* 0D2DC0 80317DC0 AC910004 */ sw $s1, 4($a0)
/* 0D2DC4 80317DC4 8FA20038 */ lw $v0, 0x38($sp)
/* 0D2DC8 80317DC8 3C048022 */ lui $a0, %hi(D_802218B0) # $a0, 0x8022
/* 0D2DCC 80317DCC 248414B0 */ addiu $a0, %lo(D_802218B0) # addiu $a0, $a0, 0x14b0
/* 0D2DD0 80317DD0 8C59000C */ lw $t9, 0xc($v0)
/* 0D2DD4 80317DD4 AC990000 */ sw $t9, ($a0)
/* 0D2DD8 80317DD8 8C580010 */ lw $t8, 0x10($v0)
/* 0D2DDC 80317DDC AC800008 */ sw $zero, 8($a0)
/* 0D2DE0 80317DE0 0C0C5C9F */ jal func_8031625C
/* 0D2DE4 80317DE4 AC980004 */ sw $t8, 4($a0)
/* 0D2DE8 80317DE8 8FAC0038 */ lw $t4, 0x38($sp)
/* 0D2DEC 80317DEC 8FAF0038 */ lw $t7, 0x38($sp)
/* 0D2DF0 80317DF0 3C048022 */ lui $a0, %hi(D_802218C0) # $a0, 0x8022
/* 0D2DF4 80317DF4 8D8D0014 */ lw $t5, 0x14($t4)
/* 0D2DF8 80317DF8 248414C0 */ addiu $a0, %lo(D_802218C0) # addiu $a0, $a0, 0x14c0
/* 0D2DFC 80317DFC AC8D0000 */ sw $t5, ($a0)
/* 0D2E00 80317E00 8DEE0018 */ lw $t6, 0x18($t7)
/* 0D2E04 80317E04 AC800008 */ sw $zero, 8($a0)
/* 0D2E08 80317E08 0C0C5CCE */ jal func_80316318
/* 0D2E0C 80317E0C AC8E0004 */ sw $t6, 4($a0)
/* 0D2E10 80317E10 0C0C5BA0 */ jal reset_bank_and_seq_load_status
/* 0D2E14 80317E14 00000000 */ nop
/* 0D2E18 80317E18 3C108022 */ lui $s0, %hi(gAudioCmdBuffers) # $s0, 0x8022
/* 0D2E1C 80317E1C 3C128022 */ lui $s2, %hi(D_802212C8) # $s2, 0x8022
/* 0D2E20 80317E20 3C118022 */ lui $s1, %hi(gAudioCmdBuffers + 8) # $s1, 0x8022
/* 0D2E24 80317E24 26316B98 */ addiu $s1, %lo(gAudioCmdBuffers + 8) # addiu $s1, $s1, 0x6b98
/* 0D2E28 80317E28 26520EC8 */ addiu $s2, %lo(D_802212C8) # addiu $s2, $s2, 0xec8
/* 0D2E2C 80317E2C 26106B90 */ addiu $s0, %lo(gAudioCmdBuffers) # addiu $s0, $s0, 0x6b90
.L80317E30:
/* 0D2E30 80317E30 8E650000 */ lw $a1, ($s3)
/* 0D2E34 80317E34 02402025 */ move $a0, $s2
/* 0D2E38 80317E38 0005C8C0 */ sll $t9, $a1, 3
/* 0D2E3C 80317E3C 0C0C5C10 */ jal soundAlloc
/* 0D2E40 80317E40 03202825 */ move $a1, $t9
/* 0D2E44 80317E44 26100004 */ addiu $s0, $s0, 4
/* 0D2E48 80317E48 1611FFF9 */ bne $s0, $s1, .L80317E30
/* 0D2E4C 80317E4C AE02FFFC */ sw $v0, -4($s0)
/* 0D2E50 80317E50 3C058022 */ lui $a1, %hi(gMaxSimultaneousNotes) # $a1, 0x8022
/* 0D2E54 80317E54 8CA56B70 */ lw $a1, %lo(gMaxSimultaneousNotes)($a1)
/* 0D2E58 80317E58 02402025 */ move $a0, $s2
/* 0D2E5C 80317E5C 0005C080 */ sll $t8, $a1, 2
/* 0D2E60 80317E60 0305C023 */ subu $t8, $t8, $a1
/* 0D2E64 80317E64 0C0C5C10 */ jal soundAlloc
/* 0D2E68 80317E68 00182980 */ sll $a1, $t8, 6
/* 0D2E6C 80317E6C 3C018022 */ lui $at, %hi(gNotes) # $at, 0x8022
/* 0D2E70 80317E70 0C0C6B6B */ jal note_init_all
/* 0D2E74 80317E74 AC222610 */ sw $v0, %lo(gNotes)($at)
/* 0D2E78 80317E78 0C0C68AD */ jal init_note_free_list
/* 0D2E7C 80317E7C 00000000 */ nop
/* 0D2E80 80317E80 8FA2002C */ lw $v0, 0x2c($sp)
/* 0D2E84 80317E84 3C118022 */ lui $s1, %hi(D_802211B0) # $s1, 0x8022
/* 0D2E88 80317E88 26310DB0 */ addiu $s1, %lo(D_802211B0) # addiu $s1, $s1, 0xdb0
/* 0D2E8C 80317E8C 14400005 */ bnez $v0, .L80317EA4
/* 0D2E90 80317E90 240C0008 */ li $t4, 8
/* 0D2E94 80317E94 3C118022 */ lui $s1, %hi(D_802211B0) # $s1, 0x8022
/* 0D2E98 80317E98 26310DB0 */ addiu $s1, %lo(D_802211B0) # addiu $s1, $s1, 0xdb0
/* 0D2E9C 80317E9C 10000051 */ b .L80317FE4
/* 0D2EA0 80317EA0 A2200001 */ sb $zero, 1($s1)
.L80317EA4:
/* 0D2EA4 80317EA4 00028040 */ sll $s0, $v0, 1
/* 0D2EA8 80317EA8 A22C0001 */ sb $t4, 1($s1)
/* 0D2EAC 80317EAC 02002825 */ move $a1, $s0
/* 0D2EB0 80317EB0 0C0C5C10 */ jal soundAlloc
/* 0D2EB4 80317EB4 02402025 */ move $a0, $s2
/* 0D2EB8 80317EB8 AE220014 */ sw $v0, 0x14($s1)
/* 0D2EBC 80317EBC 02402025 */ move $a0, $s2
/* 0D2EC0 80317EC0 0C0C5C10 */ jal soundAlloc
/* 0D2EC4 80317EC4 02002825 */ move $a1, $s0
/* 0D2EC8 80317EC8 8FAD002C */ lw $t5, 0x2c($sp)
/* 0D2ECC 80317ECC 8FAF0038 */ lw $t7, 0x38($sp)
/* 0D2ED0 80317ED0 AE220018 */ sw $v0, 0x18($s1)
/* 0D2ED4 80317ED4 AE200008 */ sw $zero, 8($s1)
/* 0D2ED8 80317ED8 AE20000C */ sw $zero, 0xc($s1)
/* 0D2EDC 80317EDC A2200003 */ sb $zero, 3($s1)
/* 0D2EE0 80317EE0 AE2D0010 */ sw $t5, 0x10($s1)
/* 0D2EE4 80317EE4 95EE0008 */ lhu $t6, 8($t7)
/* 0D2EE8 80317EE8 24190002 */ li $t9, 2
/* 0D2EEC 80317EEC A2390002 */ sb $t9, 2($s1)
/* 0D2EF0 80317EF0 3C038022 */ lui $v1, %hi(D_802212A2) # $v1, 0x8022
/* 0D2EF4 80317EF4 A62E0004 */ sh $t6, 4($s1)
/* 0D2EF8 80317EF8 80630EA2 */ lb $v1, %lo(D_802212A2)($v1)
/* 0D2EFC 80317EFC 24010001 */ li $at, 1
/* 0D2F00 80317F00 24180001 */ li $t8, 1
/* 0D2F04 80317F04 10610037 */ beq $v1, $at, .L80317FE4
/* 0D2F08 80317F08 340C8000 */ li $t4, 32768
/* 0D2F0C 80317F0C 0183001A */ div $zero, $t4, $v1
/* 0D2F10 80317F10 00006812 */ mflo $t5
/* 0D2F14 80317F14 A2380000 */ sb $t8, ($s1)
/* 0D2F18 80317F18 14600002 */ bnez $v1, .L80317F24
/* 0D2F1C 80317F1C 00000000 */ nop
/* 0D2F20 80317F20 0007000D */ break 7
.L80317F24:
/* 0D2F24 80317F24 2401FFFF */ li $at, -1
/* 0D2F28 80317F28 14610004 */ bne $v1, $at, .L80317F3C
/* 0D2F2C 80317F2C 3C018000 */ lui $at, 0x8000
/* 0D2F30 80317F30 15810002 */ bne $t4, $at, .L80317F3C
/* 0D2F34 80317F34 00000000 */ nop
/* 0D2F38 80317F38 0006000D */ break 6
.L80317F3C:
/* 0D2F3C 80317F3C A62D0006 */ sh $t5, 6($s1)
/* 0D2F40 80317F40 02402025 */ move $a0, $s2
/* 0D2F44 80317F44 24050020 */ li $a1, 32
/* 0D2F48 80317F48 0C0C5C10 */ jal soundAlloc
/* 0D2F4C 80317F4C 00008025 */ move $s0, $zero
/* 0D2F50 80317F50 AE22001C */ sw $v0, 0x1c($s1)
/* 0D2F54 80317F54 02402025 */ move $a0, $s2
/* 0D2F58 80317F58 0C0C5C10 */ jal soundAlloc
/* 0D2F5C 80317F5C 24050020 */ li $a1, 32
/* 0D2F60 80317F60 AE220020 */ sw $v0, 0x20($s1)
/* 0D2F64 80317F64 02402025 */ move $a0, $s2
/* 0D2F68 80317F68 0C0C5C10 */ jal soundAlloc
/* 0D2F6C 80317F6C 24050020 */ li $a1, 32
/* 0D2F70 80317F70 AE220024 */ sw $v0, 0x24($s1)
/* 0D2F74 80317F74 02402025 */ move $a0, $s2
/* 0D2F78 80317F78 0C0C5C10 */ jal soundAlloc
/* 0D2F7C 80317F7C 24050020 */ li $a1, 32
/* 0D2F80 80317F80 AE220028 */ sw $v0, 0x28($s1)
/* 0D2F84 80317F84 3C0F8022 */ lui $t7, %hi(gAudioUpdatesPerFrame) # $t7, 0x8022
/* 0D2F88 80317F88 81EF6B7E */ lb $t7, %lo(gAudioUpdatesPerFrame)($t7)
/* 0D2F8C 80317F8C 3C118022 */ lui $s1, %hi(D_802211B0) # $s1, 0x8022
/* 0D2F90 80317F90 26310DB0 */ addiu $s1, %lo(D_802211B0) # addiu $s1, $s1, 0xdb0
/* 0D2F94 80317F94 19E00013 */ blez $t7, .L80317FE4
/* 0D2F98 80317F98 02402025 */ move $a0, $s2
.L80317F9C:
/* 0D2F9C 80317F9C 0C0C5C10 */ jal soundAlloc
/* 0D2FA0 80317FA0 24050280 */ li $a1, 640
/* 0D2FA4 80317FA4 244E0140 */ addiu $t6, $v0, 0x140
/* 0D2FA8 80317FA8 AE220030 */ sw $v0, 0x30($s1)
/* 0D2FAC 80317FAC AE2E0034 */ sw $t6, 0x34($s1)
/* 0D2FB0 80317FB0 02402025 */ move $a0, $s2
/* 0D2FB4 80317FB4 0C0C5C10 */ jal soundAlloc
/* 0D2FB8 80317FB8 24050280 */ li $a1, 640
/* 0D2FBC 80317FBC 24590140 */ addiu $t9, $v0, 0x140
/* 0D2FC0 80317FC0 3C188022 */ lui $t8, %hi(gAudioUpdatesPerFrame) # $t8, 0x8022
/* 0D2FC4 80317FC4 AE220080 */ sw $v0, 0x80($s1)
/* 0D2FC8 80317FC8 AE390084 */ sw $t9, 0x84($s1)
/* 0D2FCC 80317FCC 83186B7E */ lb $t8, %lo(gAudioUpdatesPerFrame)($t8)
/* 0D2FD0 80317FD0 26100001 */ addiu $s0, $s0, 1
/* 0D2FD4 80317FD4 26310014 */ addiu $s1, $s1, 0x14
/* 0D2FD8 80317FD8 0218082A */ slt $at, $s0, $t8
/* 0D2FDC 80317FDC 5420FFEF */ bnezl $at, .L80317F9C
/* 0D2FE0 80317FE0 02402025 */ move $a0, $s2
.L80317FE4:
/* 0D2FE4 80317FE4 3C048022 */ lui $a0, %hi(gMaxSimultaneousNotes) # $a0, 0x8022
/* 0D2FE8 80317FE8 0C0C618D */ jal func_8031758C
/* 0D2FEC 80317FEC 8C846B70 */ lw $a0, %lo(gMaxSimultaneousNotes)($a0)
/* 0D2FF0 80317FF0 0C0C8BD0 */ jal osWritebackDCacheAll
/* 0D2FF4 80317FF4 00000000 */ nop
/* 0D2FF8 80317FF8 3C0C8033 */ lui $t4, %hi(gAudioLoadLock) # $t4, 0x8033
/* 0D2FFC 80317FFC 258C5004 */ addiu $t4, %lo(gAudioLoadLock) # addiu $t4, $t4, 0x5004
/* 0D3000 80318000 8D8D0000 */ lw $t5, ($t4)
/* 0D3004 80318004 3C0F7655 */ lui $t7, (0x76557364 >> 16) # lui $t7, 0x7655
/* 0D3008 80318008 35EF7364 */ ori $t7, (0x76557364 & 0xFFFF) # ori $t7, $t7, 0x7364
/* 0D300C 8031800C 51A00003 */ beql $t5, $zero, .L8031801C
/* 0D3010 80318010 8FBF0024 */ lw $ra, 0x24($sp)
/* 0D3014 80318014 AD8F0000 */ sw $t7, ($t4)
/* 0D3018 80318018 8FBF0024 */ lw $ra, 0x24($sp)
.L8031801C:
/* 0D301C 8031801C 8FB00014 */ lw $s0, 0x14($sp)
/* 0D3020 80318020 8FB10018 */ lw $s1, 0x18($sp)
/* 0D3024 80318024 8FB2001C */ lw $s2, 0x1c($sp)
/* 0D3028 80318028 8FB30020 */ lw $s3, 0x20($sp)
/* 0D302C 8031802C 03E00008 */ jr $ra
/* 0D3030 80318030 27BD0038 */ addiu $sp, $sp, 0x38