summaryrefslogtreecommitdiff
path: root/asm/NW4R
diff options
context:
space:
mode:
Diffstat (limited to 'asm/NW4R')
-rw-r--r--asm/NW4R/snd_AxVoice.s4
-rw-r--r--asm/NW4R/snd_AxVoiceManager.s525
-rw-r--r--asm/NW4R/snd_AxfxImpl.s114
-rw-r--r--asm/NW4R/snd_Bank.s156
-rw-r--r--asm/NW4R/snd_BankFile.s306
-rw-r--r--asm/NW4R/snd_BasicPlayer.s119
6 files changed, 1222 insertions, 2 deletions
diff --git a/asm/NW4R/snd_AxVoice.s b/asm/NW4R/snd_AxVoice.s
index fcecdaa..05ec172 100644
--- a/asm/NW4R/snd_AxVoice.s
+++ b/asm/NW4R/snd_AxVoice.s
@@ -884,9 +884,9 @@ VoiceCallback__Q44nw4r3snd6detail7AxVoiceFPv:
/* 80369FD8 00365C38 7C 7F 1B 78 */ mr r31, r3
/* 80369FDC 00365C3C 90 1E 00 00 */ stw r0, 0(r30)
/* 80369FE0 00365C40 90 1E 00 04 */ stw r0, 4(r30)
-/* 80369FE4 00365C44 48 00 1F C1 */ bl func_8036BFA4
+/* 80369FE4 00365C44 48 00 1F C1 */ bl GetInstance__Q44nw4r3snd6detail14AxVoiceManagerFv
/* 80369FE8 00365C48 7F C4 F3 78 */ mr r4, r30
-/* 80369FEC 00365C4C 48 00 24 E5 */ bl func_8036C4D0
+/* 80369FEC 00365C4C 48 00 24 E5 */ bl ReserveForFreeAxVoice__Q44nw4r3snd6detail14AxVoiceManagerFPQ44nw4r3snd6detail7AxVoice
/* 80369FF0 00365C50 7F E3 FB 78 */ mr r3, r31
/* 80369FF4 00365C54 4B F0 47 91 */ bl OSRestoreInterrupts
/* 80369FF8 00365C58 80 01 00 14 */ lwz r0, 0x14(r1)
diff --git a/asm/NW4R/snd_AxVoiceManager.s b/asm/NW4R/snd_AxVoiceManager.s
new file mode 100644
index 0000000..8a2c333
--- /dev/null
+++ b/asm/NW4R/snd_AxVoiceManager.s
@@ -0,0 +1,525 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global GetInstance__Q44nw4r3snd6detail14AxVoiceManagerFv
+GetInstance__Q44nw4r3snd6detail14AxVoiceManagerFv:
+/* 8036BFA4 00367C04 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8036BFA8 00367C08 7C 08 02 A6 */ mflr r0
+/* 8036BFAC 00367C0C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8036BFB0 00367C10 88 0D B1 E0 */ lbz r0, lbl_806404A0-_SDA_BASE_(r13)
+/* 8036BFB4 00367C14 7C 00 07 75 */ extsb. r0, r0
+/* 8036BFB8 00367C18 40 82 00 78 */ bne lbl_8036C030
+/* 8036BFBC 00367C1C 3C C0 80 62 */ lis r6, lbl_8062194C@ha
+/* 8036BFC0 00367C20 38 00 00 00 */ li r0, 0
+/* 8036BFC4 00367C24 38 66 19 4C */ addi r3, r6, lbl_8062194C@l
+/* 8036BFC8 00367C28 3C 80 80 37 */ lis r4, __dt__Q44nw4r3snd6detail14AxVoiceManagerFv@ha
+/* 8036BFCC 00367C2C 90 03 00 04 */ stw r0, 4(r3)
+/* 8036BFD0 00367C30 39 23 00 04 */ addi r9, r3, 4
+/* 8036BFD4 00367C34 39 03 00 10 */ addi r8, r3, 0x10
+/* 8036BFD8 00367C38 38 E3 00 1C */ addi r7, r3, 0x1c
+/* 8036BFDC 00367C3C 90 03 00 08 */ stw r0, 8(r3)
+/* 8036BFE0 00367C40 3C A0 80 62 */ lis r5, lbl_80621940@ha
+/* 8036BFE4 00367C44 38 84 C0 48 */ addi r4, r4, __dt__Q44nw4r3snd6detail14AxVoiceManagerFv@l
+/* 8036BFE8 00367C48 90 03 00 10 */ stw r0, 0x10(r3)
+/* 8036BFEC 00367C4C 38 A5 19 40 */ addi r5, r5, lbl_80621940@l
+/* 8036BFF0 00367C50 90 03 00 14 */ stw r0, 0x14(r3)
+/* 8036BFF4 00367C54 90 03 00 1C */ stw r0, 0x1c(r3)
+/* 8036BFF8 00367C58 90 03 00 20 */ stw r0, 0x20(r3)
+/* 8036BFFC 00367C5C 90 06 19 4C */ stw r0, 0x194c(r6)
+/* 8036C000 00367C60 91 23 00 04 */ stw r9, 4(r3)
+/* 8036C004 00367C64 91 23 00 08 */ stw r9, 8(r3)
+/* 8036C008 00367C68 90 03 00 0C */ stw r0, 0xc(r3)
+/* 8036C00C 00367C6C 91 03 00 10 */ stw r8, 0x10(r3)
+/* 8036C010 00367C70 91 03 00 14 */ stw r8, 0x14(r3)
+/* 8036C014 00367C74 90 03 00 18 */ stw r0, 0x18(r3)
+/* 8036C018 00367C78 90 E3 00 1C */ stw r7, 0x1c(r3)
+/* 8036C01C 00367C7C 90 E3 00 20 */ stw r7, 0x20(r3)
+/* 8036C020 00367C80 98 03 00 24 */ stb r0, 0x24(r3)
+/* 8036C024 00367C84 4B E5 AC 25 */ bl __register_global_object_tmp
+/* 8036C028 00367C88 38 00 00 01 */ li r0, 1
+/* 8036C02C 00367C8C 98 0D B1 E0 */ stb r0, lbl_806404A0-_SDA_BASE_(r13)
+lbl_8036C030:
+/* 8036C030 00367C90 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8036C034 00367C94 3C 60 80 62 */ lis r3, lbl_8062194C@ha
+/* 8036C038 00367C98 38 63 19 4C */ addi r3, r3, lbl_8062194C@l
+/* 8036C03C 00367C9C 7C 08 03 A6 */ mtlr r0
+/* 8036C040 00367CA0 38 21 00 10 */ addi r1, r1, 0x10
+/* 8036C044 00367CA4 4E 80 00 20 */ blr
+
+.global __dt__Q44nw4r3snd6detail14AxVoiceManagerFv
+__dt__Q44nw4r3snd6detail14AxVoiceManagerFv:
+/* 8036C048 00367CA8 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8036C04C 00367CAC 7C 08 02 A6 */ mflr r0
+/* 8036C050 00367CB0 2C 03 00 00 */ cmpwi r3, 0
+/* 8036C054 00367CB4 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8036C058 00367CB8 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8036C05C 00367CBC 7C 9F 23 78 */ mr r31, r4
+/* 8036C060 00367CC0 93 C1 00 08 */ stw r30, 8(r1)
+/* 8036C064 00367CC4 7C 7E 1B 78 */ mr r30, r3
+/* 8036C068 00367CC8 41 82 00 48 */ beq lbl_8036C0B0
+/* 8036C06C 00367CCC 34 63 00 18 */ addic. r3, r3, 0x18
+/* 8036C070 00367CD0 41 82 00 0C */ beq lbl_8036C07C
+/* 8036C074 00367CD4 38 80 00 00 */ li r4, 0
+/* 8036C078 00367CD8 4B FF 6A C1 */ bl __dt__Q44nw4r2ut6detail12LinkListImplFv
+lbl_8036C07C:
+/* 8036C07C 00367CDC 34 7E 00 0C */ addic. r3, r30, 0xc
+/* 8036C080 00367CE0 41 82 00 0C */ beq lbl_8036C08C
+/* 8036C084 00367CE4 38 80 00 00 */ li r4, 0
+/* 8036C088 00367CE8 4B FF 6A B1 */ bl __dt__Q44nw4r2ut6detail12LinkListImplFv
+lbl_8036C08C:
+/* 8036C08C 00367CEC 2C 1E 00 00 */ cmpwi r30, 0
+/* 8036C090 00367CF0 41 82 00 10 */ beq lbl_8036C0A0
+/* 8036C094 00367CF4 7F C3 F3 78 */ mr r3, r30
+/* 8036C098 00367CF8 38 80 00 00 */ li r4, 0
+/* 8036C09C 00367CFC 4B FF 6A 9D */ bl __dt__Q44nw4r2ut6detail12LinkListImplFv
+lbl_8036C0A0:
+/* 8036C0A0 00367D00 2C 1F 00 00 */ cmpwi r31, 0
+/* 8036C0A4 00367D04 40 81 00 0C */ ble lbl_8036C0B0
+/* 8036C0A8 00367D08 7F C3 F3 78 */ mr r3, r30
+/* 8036C0AC 00367D0C 4B E6 EA 0D */ bl func_801DAAB8
+lbl_8036C0B0:
+/* 8036C0B0 00367D10 7F C3 F3 78 */ mr r3, r30
+/* 8036C0B4 00367D14 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8036C0B8 00367D18 83 C1 00 08 */ lwz r30, 8(r1)
+/* 8036C0BC 00367D1C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8036C0C0 00367D20 7C 08 03 A6 */ mtlr r0
+/* 8036C0C4 00367D24 38 21 00 10 */ addi r1, r1, 0x10
+/* 8036C0C8 00367D28 4E 80 00 20 */ blr
+
+.global GetRequiredMemSize__Q44nw4r3snd6detail14AxVoiceManagerFv
+GetRequiredMemSize__Q44nw4r3snd6detail14AxVoiceManagerFv:
+/* 8036C0CC 00367D2C 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8036C0D0 00367D30 7C 08 02 A6 */ mflr r0
+/* 8036C0D4 00367D34 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8036C0D8 00367D38 4B F2 62 45 */ bl func_8029231C
+/* 8036C0DC 00367D3C 38 03 00 10 */ addi r0, r3, 0x10
+/* 8036C0E0 00367D40 1C 60 00 48 */ mulli r3, r0, 0x48
+/* 8036C0E4 00367D44 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8036C0E8 00367D48 7C 08 03 A6 */ mtlr r0
+/* 8036C0EC 00367D4C 38 21 00 10 */ addi r1, r1, 0x10
+/* 8036C0F0 00367D50 4E 80 00 20 */ blr
+
+.global Setup__Q44nw4r3snd6detail14AxVoiceManagerFPvUl
+Setup__Q44nw4r3snd6detail14AxVoiceManagerFPvUl:
+/* 8036C0F4 00367D54 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8036C0F8 00367D58 7C 08 02 A6 */ mflr r0
+/* 8036C0FC 00367D5C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8036C100 00367D60 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8036C104 00367D64 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8036C108 00367D68 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8036C10C 00367D6C 93 81 00 10 */ stw r28, 0x10(r1)
+/* 8036C110 00367D70 7C 7C 1B 78 */ mr r28, r3
+/* 8036C114 00367D74 88 03 00 24 */ lbz r0, 0x24(r3)
+/* 8036C118 00367D78 2C 00 00 00 */ cmpwi r0, 0
+/* 8036C11C 00367D7C 40 82 00 5C */ bne lbl_8036C178
+/* 8036C120 00367D80 3C C0 38 E4 */ lis r6, 0x38E38E39@ha
+/* 8036C124 00367D84 7C 9E 23 78 */ mr r30, r4
+/* 8036C128 00367D88 38 06 8E 39 */ addi r0, r6, 0x38E38E39@l
+/* 8036C12C 00367D8C 3B A0 00 00 */ li r29, 0
+/* 8036C130 00367D90 7C 00 28 16 */ mulhwu r0, r0, r5
+/* 8036C134 00367D94 54 00 E1 3F */ rlwinm. r0, r0, 0x1c, 4, 0x1f
+/* 8036C138 00367D98 90 03 00 28 */ stw r0, 0x28(r3)
+/* 8036C13C 00367D9C 41 82 00 34 */ beq lbl_8036C170
+/* 8036C140 00367DA0 3B E3 00 10 */ addi r31, r3, 0x10
+/* 8036C144 00367DA4 48 00 00 20 */ b lbl_8036C164
+lbl_8036C148:
+/* 8036C148 00367DA8 93 E1 00 08 */ stw r31, 8(r1)
+/* 8036C14C 00367DAC 38 7C 00 0C */ addi r3, r28, 0xc
+/* 8036C150 00367DB0 38 81 00 08 */ addi r4, r1, 8
+/* 8036C154 00367DB4 38 BE 00 40 */ addi r5, r30, 0x40
+/* 8036C158 00367DB8 4B FF 6A F1 */ bl Insert__Q44nw4r2ut6detail12LinkListImplFQ54nw4r2ut6detail12LinkListImpl8IteratorPQ34nw4r2ut12LinkListNode
+/* 8036C15C 00367DBC 3B DE 00 48 */ addi r30, r30, 0x48
+/* 8036C160 00367DC0 3B BD 00 01 */ addi r29, r29, 1
+lbl_8036C164:
+/* 8036C164 00367DC4 80 1C 00 28 */ lwz r0, 0x28(r28)
+/* 8036C168 00367DC8 7C 1D 00 40 */ cmplw r29, r0
+/* 8036C16C 00367DCC 41 80 FF DC */ blt lbl_8036C148
+lbl_8036C170:
+/* 8036C170 00367DD0 38 00 00 01 */ li r0, 1
+/* 8036C174 00367DD4 98 1C 00 24 */ stb r0, 0x24(r28)
+lbl_8036C178:
+/* 8036C178 00367DD8 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8036C17C 00367DDC 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8036C180 00367DE0 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8036C184 00367DE4 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8036C188 00367DE8 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 8036C18C 00367DEC 7C 08 03 A6 */ mtlr r0
+/* 8036C190 00367DF0 38 21 00 20 */ addi r1, r1, 0x20
+/* 8036C194 00367DF4 4E 80 00 20 */ blr
+
+.global AcquireAxVoice__Q44nw4r3snd6detail14AxVoiceManagerFUlPFPQ44nw4r3snd6detail7AxVoiceQ54nw4r3snd6detail7AxVoice21AxVoiceCallbackStatusPv_vPv
+AcquireAxVoice__Q44nw4r3snd6detail14AxVoiceManagerFUlPFPQ44nw4r3snd6detail7AxVoiceQ54nw4r3snd6detail7AxVoice21AxVoiceCallbackStatusPv_vPv:
+/* 8036C198 00367DF8 94 21 FF A0 */ stwu r1, -0x60(r1)
+/* 8036C19C 00367DFC 7C 08 02 A6 */ mflr r0
+/* 8036C1A0 00367E00 90 01 00 64 */ stw r0, 0x64(r1)
+/* 8036C1A4 00367E04 39 61 00 60 */ addi r11, r1, 0x60
+/* 8036C1A8 00367E08 4B E5 AF 55 */ bl _savegpr_16
+/* 8036C1AC 00367E0C 7C 75 1B 78 */ mr r21, r3
+/* 8036C1B0 00367E10 7C 96 23 78 */ mr r22, r4
+/* 8036C1B4 00367E14 7C B7 2B 78 */ mr r23, r5
+/* 8036C1B8 00367E18 7C D8 33 78 */ mr r24, r6
+/* 8036C1BC 00367E1C 4B F0 25 A1 */ bl OSDisableInterrupts
+/* 8036C1C0 00367E20 7C 74 1B 78 */ mr r20, r3
+/* 8036C1C4 00367E24 4B F0 25 99 */ bl OSDisableInterrupts
+/* 8036C1C8 00367E28 80 15 00 18 */ lwz r0, 0x18(r21)
+/* 8036C1CC 00367E2C 7C 73 1B 78 */ mr r19, r3
+/* 8036C1D0 00367E30 2C 00 00 00 */ cmpwi r0, 0
+/* 8036C1D4 00367E34 41 82 01 48 */ beq lbl_8036C31C
+/* 8036C1D8 00367E38 3F 60 80 62 */ lis r27, lbl_8062194C@ha
+/* 8036C1DC 00367E3C 3B 80 00 00 */ li r28, 0
+/* 8036C1E0 00367E40 3B 5B 19 4C */ addi r26, r27, lbl_8062194C@l
+/* 8036C1E4 00367E44 3F A0 80 37 */ lis r29, 0x8037
+/* 8036C1E8 00367E48 3F C0 80 62 */ lis r30, 0x8062
+/* 8036C1EC 00367E4C 3B E0 00 01 */ li r31, 1
+/* 8036C1F0 00367E50 3A 1A 00 10 */ addi r16, r26, 0x10
+/* 8036C1F4 00367E54 48 00 01 1C */ b lbl_8036C310
+lbl_8036C1F8:
+/* 8036C1F8 00367E58 80 75 00 1C */ lwz r3, 0x1c(r21)
+/* 8036C1FC 00367E5C 81 83 FF F8 */ lwz r12, -8(r3)
+/* 8036C200 00367E60 3B 23 FF C0 */ addi r25, r3, -64
+/* 8036C204 00367E64 2C 0C 00 00 */ cmpwi r12, 0
+/* 8036C208 00367E68 41 82 00 18 */ beq lbl_8036C220
+/* 8036C20C 00367E6C 7F 23 CB 78 */ mr r3, r25
+/* 8036C210 00367E70 80 B9 00 3C */ lwz r5, 0x3c(r25)
+/* 8036C214 00367E74 38 80 00 01 */ li r4, 1
+/* 8036C218 00367E78 7D 89 03 A6 */ mtctr r12
+/* 8036C21C 00367E7C 4E 80 04 21 */ bctrl
+lbl_8036C220:
+/* 8036C220 00367E80 88 0D B1 E0 */ lbz r0, lbl_806404A0-_SDA_BASE_(r13)
+/* 8036C224 00367E84 7C 00 07 75 */ extsb. r0, r0
+/* 8036C228 00367E88 40 82 00 64 */ bne lbl_8036C28C
+/* 8036C22C 00367E8C 93 9A 00 04 */ stw r28, 4(r26)
+/* 8036C230 00367E90 38 DA 00 04 */ addi r6, r26, 4
+/* 8036C234 00367E94 38 FA 00 10 */ addi r7, r26, 0x10
+/* 8036C238 00367E98 39 1A 00 1C */ addi r8, r26, 0x1c
+/* 8036C23C 00367E9C 93 9A 00 08 */ stw r28, 8(r26)
+/* 8036C240 00367EA0 7F 43 D3 78 */ mr r3, r26
+/* 8036C244 00367EA4 38 9D C0 48 */ addi r4, r29, -16312
+/* 8036C248 00367EA8 38 BE 19 40 */ addi r5, r30, 0x1940
+/* 8036C24C 00367EAC 93 9A 00 10 */ stw r28, 0x10(r26)
+/* 8036C250 00367EB0 93 9A 00 14 */ stw r28, 0x14(r26)
+/* 8036C254 00367EB4 93 9A 00 1C */ stw r28, 0x1c(r26)
+/* 8036C258 00367EB8 93 9A 00 20 */ stw r28, 0x20(r26)
+/* 8036C25C 00367EBC 93 9B 19 4C */ stw r28, 0x194c(r27)
+/* 8036C260 00367EC0 90 DA 00 04 */ stw r6, 4(r26)
+/* 8036C264 00367EC4 90 DA 00 08 */ stw r6, 8(r26)
+/* 8036C268 00367EC8 93 9A 00 0C */ stw r28, 0xc(r26)
+/* 8036C26C 00367ECC 90 FA 00 10 */ stw r7, 0x10(r26)
+/* 8036C270 00367ED0 90 FA 00 14 */ stw r7, 0x14(r26)
+/* 8036C274 00367ED4 93 9A 00 18 */ stw r28, 0x18(r26)
+/* 8036C278 00367ED8 91 1A 00 1C */ stw r8, 0x1c(r26)
+/* 8036C27C 00367EDC 91 1A 00 20 */ stw r8, 0x20(r26)
+/* 8036C280 00367EE0 9B 9A 00 24 */ stb r28, 0x24(r26)
+/* 8036C284 00367EE4 4B E5 A9 C5 */ bl __register_global_object_tmp
+/* 8036C288 00367EE8 9B ED B1 E0 */ stb r31, lbl_806404A0-_SDA_BASE_(r13)
+lbl_8036C28C:
+/* 8036C28C 00367EEC 4B F0 24 D1 */ bl OSDisableInterrupts
+/* 8036C290 00367EF0 80 19 00 00 */ lwz r0, 0(r25)
+/* 8036C294 00367EF4 7C 72 1B 78 */ mr r18, r3
+/* 8036C298 00367EF8 2C 00 00 00 */ cmpwi r0, 0
+/* 8036C29C 00367EFC 41 82 00 0C */ beq lbl_8036C2A8
+/* 8036C2A0 00367F00 7C 03 03 78 */ mr r3, r0
+/* 8036C2A4 00367F04 4B F2 30 11 */ bl func_8028F2B4
+lbl_8036C2A8:
+/* 8036C2A8 00367F08 7F 23 CB 78 */ mr r3, r25
+/* 8036C2AC 00367F0C 38 80 FF FF */ li r4, -1
+/* 8036C2B0 00367F10 4B FF D3 C9 */ bl __dt__Q44nw4r3snd6detail7AxVoiceFv
+/* 8036C2B4 00367F14 4B F0 24 A9 */ bl OSDisableInterrupts
+/* 8036C2B8 00367F18 88 19 00 1D */ lbz r0, 0x1d(r25)
+/* 8036C2BC 00367F1C 7C 71 1B 78 */ mr r17, r3
+/* 8036C2C0 00367F20 2C 00 00 00 */ cmpwi r0, 0
+/* 8036C2C4 00367F24 41 82 00 18 */ beq lbl_8036C2DC
+/* 8036C2C8 00367F28 3B 39 00 40 */ addi r25, r25, 0x40
+/* 8036C2CC 00367F2C 38 7A 00 18 */ addi r3, r26, 0x18
+/* 8036C2D0 00367F30 7F 24 CB 78 */ mr r4, r25
+/* 8036C2D4 00367F34 4B FF 69 A1 */ bl Erase__Q44nw4r2ut6detail12LinkListImplFPQ34nw4r2ut12LinkListNode
+/* 8036C2D8 00367F38 48 00 00 14 */ b lbl_8036C2EC
+lbl_8036C2DC:
+/* 8036C2DC 00367F3C 3B 39 00 40 */ addi r25, r25, 0x40
+/* 8036C2E0 00367F40 7F 43 D3 78 */ mr r3, r26
+/* 8036C2E4 00367F44 7F 24 CB 78 */ mr r4, r25
+/* 8036C2E8 00367F48 4B FF 69 8D */ bl Erase__Q44nw4r2ut6detail12LinkListImplFPQ34nw4r2ut12LinkListNode
+lbl_8036C2EC:
+/* 8036C2EC 00367F4C 92 01 00 08 */ stw r16, 8(r1)
+/* 8036C2F0 00367F50 7F 25 CB 78 */ mr r5, r25
+/* 8036C2F4 00367F54 38 7A 00 0C */ addi r3, r26, 0xc
+/* 8036C2F8 00367F58 38 81 00 08 */ addi r4, r1, 8
+/* 8036C2FC 00367F5C 4B FF 69 4D */ bl Insert__Q44nw4r2ut6detail12LinkListImplFQ54nw4r2ut6detail12LinkListImpl8IteratorPQ34nw4r2ut12LinkListNode
+/* 8036C300 00367F60 7E 23 8B 78 */ mr r3, r17
+/* 8036C304 00367F64 4B F0 24 81 */ bl OSRestoreInterrupts
+/* 8036C308 00367F68 7E 43 93 78 */ mr r3, r18
+/* 8036C30C 00367F6C 4B F0 24 79 */ bl OSRestoreInterrupts
+lbl_8036C310:
+/* 8036C310 00367F70 80 15 00 18 */ lwz r0, 0x18(r21)
+/* 8036C314 00367F74 2C 00 00 00 */ cmpwi r0, 0
+/* 8036C318 00367F78 40 82 FE E0 */ bne lbl_8036C1F8
+lbl_8036C31C:
+/* 8036C31C 00367F7C 80 15 00 0C */ lwz r0, 0xc(r21)
+/* 8036C320 00367F80 2C 00 00 00 */ cmpwi r0, 0
+/* 8036C324 00367F84 40 82 00 14 */ bne lbl_8036C338
+/* 8036C328 00367F88 7E 63 9B 78 */ mr r3, r19
+/* 8036C32C 00367F8C 4B F0 24 59 */ bl OSRestoreInterrupts
+/* 8036C330 00367F90 3A 20 00 00 */ li r17, 0
+/* 8036C334 00367F94 48 00 00 54 */ b lbl_8036C388
+lbl_8036C338:
+/* 8036C338 00367F98 80 B5 00 10 */ lwz r5, 0x10(r21)
+/* 8036C33C 00367F9C 38 75 00 0C */ addi r3, r21, 0xc
+/* 8036C340 00367FA0 38 81 00 0C */ addi r4, r1, 0xc
+/* 8036C344 00367FA4 90 A1 00 0C */ stw r5, 0xc(r1)
+/* 8036C348 00367FA8 3A 05 FF C0 */ addi r16, r5, -64
+/* 8036C34C 00367FAC 4B FF 68 71 */ bl Erase__Q44nw4r2ut6detail12LinkListImplFQ54nw4r2ut6detail12LinkListImpl8Iterator
+/* 8036C350 00367FB0 2C 10 00 00 */ cmpwi r16, 0
+/* 8036C354 00367FB4 7E 11 83 78 */ mr r17, r16
+/* 8036C358 00367FB8 41 82 00 10 */ beq lbl_8036C368
+/* 8036C35C 00367FBC 7E 03 83 78 */ mr r3, r16
+/* 8036C360 00367FC0 4B FF D2 D5 */ bl __ct__Q44nw4r3snd6detail7AxVoiceFv
+/* 8036C364 00367FC4 7C 71 1B 78 */ mr r17, r3
+lbl_8036C368:
+/* 8036C368 00367FC8 38 15 00 04 */ addi r0, r21, 4
+/* 8036C36C 00367FCC 7E A3 AB 78 */ mr r3, r21
+/* 8036C370 00367FD0 90 01 00 10 */ stw r0, 0x10(r1)
+/* 8036C374 00367FD4 38 81 00 10 */ addi r4, r1, 0x10
+/* 8036C378 00367FD8 38 B0 00 40 */ addi r5, r16, 0x40
+/* 8036C37C 00367FDC 4B FF 68 CD */ bl Insert__Q44nw4r2ut6detail12LinkListImplFQ54nw4r2ut6detail12LinkListImpl8IteratorPQ34nw4r2ut12LinkListNode
+/* 8036C380 00367FE0 7E 63 9B 78 */ mr r3, r19
+/* 8036C384 00367FE4 4B F0 24 01 */ bl OSRestoreInterrupts
+lbl_8036C388:
+/* 8036C388 00367FE8 2C 11 00 00 */ cmpwi r17, 0
+/* 8036C38C 00367FEC 40 82 00 14 */ bne lbl_8036C3A0
+/* 8036C390 00367FF0 7E 83 A3 78 */ mr r3, r20
+/* 8036C394 00367FF4 4B F0 23 F1 */ bl OSRestoreInterrupts
+/* 8036C398 00367FF8 38 60 00 00 */ li r3, 0
+/* 8036C39C 00367FFC 48 00 00 50 */ b lbl_8036C3EC
+lbl_8036C3A0:
+/* 8036C3A0 00368000 3C 80 80 37 */ lis r4, VoiceCallback__Q44nw4r3snd6detail7AxVoiceFPv@ha
+/* 8036C3A4 00368004 7E C3 B3 78 */ mr r3, r22
+/* 8036C3A8 00368008 7E 25 8B 78 */ mr r5, r17
+/* 8036C3AC 0036800C 38 84 9F B4 */ addi r4, r4, VoiceCallback__Q44nw4r3snd6detail7AxVoiceFPv@l
+/* 8036C3B0 00368010 4B F2 2F 81 */ bl func_8028F330
+/* 8036C3B4 00368014 2C 03 00 00 */ cmpwi r3, 0
+/* 8036C3B8 00368018 7C 64 1B 78 */ mr r4, r3
+/* 8036C3BC 0036801C 40 82 00 14 */ bne lbl_8036C3D0
+/* 8036C3C0 00368020 7E 83 A3 78 */ mr r3, r20
+/* 8036C3C4 00368024 4B F0 23 C1 */ bl OSRestoreInterrupts
+/* 8036C3C8 00368028 38 60 00 00 */ li r3, 0
+/* 8036C3CC 0036802C 48 00 00 20 */ b lbl_8036C3EC
+lbl_8036C3D0:
+/* 8036C3D0 00368030 7E 23 8B 78 */ mr r3, r17
+/* 8036C3D4 00368034 4B FF F4 DD */ bl Set__Q44nw4r3snd6detail17AxVoiceParamBlockFP6_AXVPB
+/* 8036C3D8 00368038 92 F1 00 38 */ stw r23, 0x38(r17)
+/* 8036C3DC 0036803C 7E 83 A3 78 */ mr r3, r20
+/* 8036C3E0 00368040 93 11 00 3C */ stw r24, 0x3c(r17)
+/* 8036C3E4 00368044 4B F0 23 A1 */ bl OSRestoreInterrupts
+/* 8036C3E8 00368048 7E 23 8B 78 */ mr r3, r17
+lbl_8036C3EC:
+/* 8036C3EC 0036804C 39 61 00 60 */ addi r11, r1, 0x60
+/* 8036C3F0 00368050 4B E5 AD 59 */ bl func_801C7148
+/* 8036C3F4 00368054 80 01 00 64 */ lwz r0, 0x64(r1)
+/* 8036C3F8 00368058 7C 08 03 A6 */ mtlr r0
+/* 8036C3FC 0036805C 38 21 00 60 */ addi r1, r1, 0x60
+/* 8036C400 00368060 4E 80 00 20 */ blr
+
+.global FreeAxVoice__Q44nw4r3snd6detail14AxVoiceManagerFPQ44nw4r3snd6detail7AxVoice
+FreeAxVoice__Q44nw4r3snd6detail14AxVoiceManagerFPQ44nw4r3snd6detail7AxVoice:
+/* 8036C404 00368064 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8036C408 00368068 7C 08 02 A6 */ mflr r0
+/* 8036C40C 0036806C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8036C410 00368070 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8036C414 00368074 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8036C418 00368078 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8036C41C 0036807C 7C 9D 23 78 */ mr r29, r4
+/* 8036C420 00368080 93 81 00 10 */ stw r28, 0x10(r1)
+/* 8036C424 00368084 7C 7C 1B 78 */ mr r28, r3
+/* 8036C428 00368088 4B F0 23 35 */ bl OSDisableInterrupts
+/* 8036C42C 0036808C 80 1D 00 00 */ lwz r0, 0(r29)
+/* 8036C430 00368090 7C 7F 1B 78 */ mr r31, r3
+/* 8036C434 00368094 2C 00 00 00 */ cmpwi r0, 0
+/* 8036C438 00368098 41 82 00 0C */ beq lbl_8036C444
+/* 8036C43C 0036809C 7C 03 03 78 */ mr r3, r0
+/* 8036C440 003680A0 4B F2 2E 75 */ bl func_8028F2B4
+lbl_8036C444:
+/* 8036C444 003680A4 7F A3 EB 78 */ mr r3, r29
+/* 8036C448 003680A8 38 80 FF FF */ li r4, -1
+/* 8036C44C 003680AC 4B FF D2 2D */ bl __dt__Q44nw4r3snd6detail7AxVoiceFv
+/* 8036C450 003680B0 4B F0 23 0D */ bl OSDisableInterrupts
+/* 8036C454 003680B4 88 1D 00 1D */ lbz r0, 0x1d(r29)
+/* 8036C458 003680B8 7C 7E 1B 78 */ mr r30, r3
+/* 8036C45C 003680BC 2C 00 00 00 */ cmpwi r0, 0
+/* 8036C460 003680C0 41 82 00 18 */ beq lbl_8036C478
+/* 8036C464 003680C4 3B BD 00 40 */ addi r29, r29, 0x40
+/* 8036C468 003680C8 38 7C 00 18 */ addi r3, r28, 0x18
+/* 8036C46C 003680CC 7F A4 EB 78 */ mr r4, r29
+/* 8036C470 003680D0 4B FF 68 05 */ bl Erase__Q44nw4r2ut6detail12LinkListImplFPQ34nw4r2ut12LinkListNode
+/* 8036C474 003680D4 48 00 00 14 */ b lbl_8036C488
+lbl_8036C478:
+/* 8036C478 003680D8 3B BD 00 40 */ addi r29, r29, 0x40
+/* 8036C47C 003680DC 7F 83 E3 78 */ mr r3, r28
+/* 8036C480 003680E0 7F A4 EB 78 */ mr r4, r29
+/* 8036C484 003680E4 4B FF 67 F1 */ bl Erase__Q44nw4r2ut6detail12LinkListImplFPQ34nw4r2ut12LinkListNode
+lbl_8036C488:
+/* 8036C488 003680E8 38 1C 00 10 */ addi r0, r28, 0x10
+/* 8036C48C 003680EC 7F A5 EB 78 */ mr r5, r29
+/* 8036C490 003680F0 90 01 00 08 */ stw r0, 8(r1)
+/* 8036C494 003680F4 38 7C 00 0C */ addi r3, r28, 0xc
+/* 8036C498 003680F8 38 81 00 08 */ addi r4, r1, 8
+/* 8036C49C 003680FC 4B FF 67 AD */ bl Insert__Q44nw4r2ut6detail12LinkListImplFQ54nw4r2ut6detail12LinkListImpl8IteratorPQ34nw4r2ut12LinkListNode
+/* 8036C4A0 00368100 7F C3 F3 78 */ mr r3, r30
+/* 8036C4A4 00368104 4B F0 22 E1 */ bl OSRestoreInterrupts
+/* 8036C4A8 00368108 7F E3 FB 78 */ mr r3, r31
+/* 8036C4AC 0036810C 4B F0 22 D9 */ bl OSRestoreInterrupts
+/* 8036C4B0 00368110 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8036C4B4 00368114 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8036C4B8 00368118 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8036C4BC 0036811C 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8036C4C0 00368120 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 8036C4C4 00368124 7C 08 03 A6 */ mtlr r0
+/* 8036C4C8 00368128 38 21 00 20 */ addi r1, r1, 0x20
+/* 8036C4CC 0036812C 4E 80 00 20 */ blr
+
+.global ReserveForFreeAxVoice__Q44nw4r3snd6detail14AxVoiceManagerFPQ44nw4r3snd6detail7AxVoice
+ReserveForFreeAxVoice__Q44nw4r3snd6detail14AxVoiceManagerFPQ44nw4r3snd6detail7AxVoice:
+/* 8036C4D0 00368130 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8036C4D4 00368134 7C 08 02 A6 */ mflr r0
+/* 8036C4D8 00368138 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8036C4DC 0036813C 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8036C4E0 00368140 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8036C4E4 00368144 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8036C4E8 00368148 7C 9D 23 78 */ mr r29, r4
+/* 8036C4EC 0036814C 93 81 00 10 */ stw r28, 0x10(r1)
+/* 8036C4F0 00368150 7C 7C 1B 78 */ mr r28, r3
+/* 8036C4F4 00368154 4B F0 22 69 */ bl OSDisableInterrupts
+/* 8036C4F8 00368158 38 00 00 01 */ li r0, 1
+/* 8036C4FC 0036815C 7C 7F 1B 78 */ mr r31, r3
+/* 8036C500 00368160 98 1D 00 1D */ stb r0, 0x1d(r29)
+/* 8036C504 00368164 4B F0 22 59 */ bl OSDisableInterrupts
+/* 8036C508 00368168 3B BD 00 40 */ addi r29, r29, 0x40
+/* 8036C50C 0036816C 7C 7E 1B 78 */ mr r30, r3
+/* 8036C510 00368170 7F 83 E3 78 */ mr r3, r28
+/* 8036C514 00368174 7F A4 EB 78 */ mr r4, r29
+/* 8036C518 00368178 4B FF 67 5D */ bl Erase__Q44nw4r2ut6detail12LinkListImplFPQ34nw4r2ut12LinkListNode
+/* 8036C51C 0036817C 38 1C 00 1C */ addi r0, r28, 0x1c
+/* 8036C520 00368180 7F A5 EB 78 */ mr r5, r29
+/* 8036C524 00368184 90 01 00 08 */ stw r0, 8(r1)
+/* 8036C528 00368188 38 7C 00 18 */ addi r3, r28, 0x18
+/* 8036C52C 0036818C 38 81 00 08 */ addi r4, r1, 8
+/* 8036C530 00368190 4B FF 67 19 */ bl Insert__Q44nw4r2ut6detail12LinkListImplFQ54nw4r2ut6detail12LinkListImpl8IteratorPQ34nw4r2ut12LinkListNode
+/* 8036C534 00368194 7F C3 F3 78 */ mr r3, r30
+/* 8036C538 00368198 4B F0 22 4D */ bl OSRestoreInterrupts
+/* 8036C53C 0036819C 7F E3 FB 78 */ mr r3, r31
+/* 8036C540 003681A0 4B F0 22 45 */ bl OSRestoreInterrupts
+/* 8036C544 003681A4 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8036C548 003681A8 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8036C54C 003681AC 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8036C550 003681B0 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8036C554 003681B4 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 8036C558 003681B8 7C 08 03 A6 */ mtlr r0
+/* 8036C55C 003681BC 38 21 00 20 */ addi r1, r1, 0x20
+/* 8036C560 003681C0 4E 80 00 20 */ blr
+
+.global FreeAllReservedAxVoice__Q44nw4r3snd6detail14AxVoiceManagerFv
+FreeAllReservedAxVoice__Q44nw4r3snd6detail14AxVoiceManagerFv:
+/* 8036C564 003681C4 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 8036C568 003681C8 7C 08 02 A6 */ mflr r0
+/* 8036C56C 003681CC 90 01 00 44 */ stw r0, 0x44(r1)
+/* 8036C570 003681D0 39 61 00 40 */ addi r11, r1, 0x40
+/* 8036C574 003681D4 4B E5 AB 9D */ bl _savegpr_21
+/* 8036C578 003681D8 80 03 00 18 */ lwz r0, 0x18(r3)
+/* 8036C57C 003681DC 7C 7F 1B 78 */ mr r31, r3
+/* 8036C580 003681E0 2C 00 00 00 */ cmpwi r0, 0
+/* 8036C584 003681E4 41 82 01 48 */ beq lbl_8036C6CC
+/* 8036C588 003681E8 3E E0 80 62 */ lis r23, lbl_8062194C@ha
+/* 8036C58C 003681EC 3B 00 00 00 */ li r24, 0
+/* 8036C590 003681F0 3A D7 19 4C */ addi r22, r23, lbl_8062194C@l
+/* 8036C594 003681F4 3F 20 80 37 */ lis r25, 0x8037
+/* 8036C598 003681F8 3F 40 80 62 */ lis r26, 0x8062
+/* 8036C59C 003681FC 3B 60 00 01 */ li r27, 1
+/* 8036C5A0 00368200 3B 96 00 10 */ addi r28, r22, 0x10
+/* 8036C5A4 00368204 48 00 01 1C */ b lbl_8036C6C0
+lbl_8036C5A8:
+/* 8036C5A8 00368208 80 7F 00 1C */ lwz r3, 0x1c(r31)
+/* 8036C5AC 0036820C 81 83 FF F8 */ lwz r12, -8(r3)
+/* 8036C5B0 00368210 3A A3 FF C0 */ addi r21, r3, -64
+/* 8036C5B4 00368214 2C 0C 00 00 */ cmpwi r12, 0
+/* 8036C5B8 00368218 41 82 00 18 */ beq lbl_8036C5D0
+/* 8036C5BC 0036821C 7E A3 AB 78 */ mr r3, r21
+/* 8036C5C0 00368220 80 B5 00 3C */ lwz r5, 0x3c(r21)
+/* 8036C5C4 00368224 38 80 00 01 */ li r4, 1
+/* 8036C5C8 00368228 7D 89 03 A6 */ mtctr r12
+/* 8036C5CC 0036822C 4E 80 04 21 */ bctrl
+lbl_8036C5D0:
+/* 8036C5D0 00368230 88 0D B1 E0 */ lbz r0, lbl_806404A0-_SDA_BASE_(r13)
+/* 8036C5D4 00368234 7C 00 07 75 */ extsb. r0, r0
+/* 8036C5D8 00368238 40 82 00 64 */ bne lbl_8036C63C
+/* 8036C5DC 0036823C 93 16 00 04 */ stw r24, 4(r22)
+/* 8036C5E0 00368240 38 D6 00 04 */ addi r6, r22, 4
+/* 8036C5E4 00368244 38 F6 00 10 */ addi r7, r22, 0x10
+/* 8036C5E8 00368248 39 16 00 1C */ addi r8, r22, 0x1c
+/* 8036C5EC 0036824C 93 16 00 08 */ stw r24, 8(r22)
+/* 8036C5F0 00368250 7E C3 B3 78 */ mr r3, r22
+/* 8036C5F4 00368254 38 99 C0 48 */ addi r4, r25, -16312
+/* 8036C5F8 00368258 38 BA 19 40 */ addi r5, r26, 0x1940
+/* 8036C5FC 0036825C 93 16 00 10 */ stw r24, 0x10(r22)
+/* 8036C600 00368260 93 16 00 14 */ stw r24, 0x14(r22)
+/* 8036C604 00368264 93 16 00 1C */ stw r24, 0x1c(r22)
+/* 8036C608 00368268 93 16 00 20 */ stw r24, 0x20(r22)
+/* 8036C60C 0036826C 93 17 19 4C */ stw r24, 0x194c(r23)
+/* 8036C610 00368270 90 D6 00 04 */ stw r6, 4(r22)
+/* 8036C614 00368274 90 D6 00 08 */ stw r6, 8(r22)
+/* 8036C618 00368278 93 16 00 0C */ stw r24, 0xc(r22)
+/* 8036C61C 0036827C 90 F6 00 10 */ stw r7, 0x10(r22)
+/* 8036C620 00368280 90 F6 00 14 */ stw r7, 0x14(r22)
+/* 8036C624 00368284 93 16 00 18 */ stw r24, 0x18(r22)
+/* 8036C628 00368288 91 16 00 1C */ stw r8, 0x1c(r22)
+/* 8036C62C 0036828C 91 16 00 20 */ stw r8, 0x20(r22)
+/* 8036C630 00368290 9B 16 00 24 */ stb r24, 0x24(r22)
+/* 8036C634 00368294 4B E5 A6 15 */ bl __register_global_object_tmp
+/* 8036C638 00368298 9B 6D B1 E0 */ stb r27, lbl_806404A0-_SDA_BASE_(r13)
+lbl_8036C63C:
+/* 8036C63C 0036829C 4B F0 21 21 */ bl OSDisableInterrupts
+/* 8036C640 003682A0 80 15 00 00 */ lwz r0, 0(r21)
+/* 8036C644 003682A4 7C 7E 1B 78 */ mr r30, r3
+/* 8036C648 003682A8 2C 00 00 00 */ cmpwi r0, 0
+/* 8036C64C 003682AC 41 82 00 0C */ beq lbl_8036C658
+/* 8036C650 003682B0 7C 03 03 78 */ mr r3, r0
+/* 8036C654 003682B4 4B F2 2C 61 */ bl func_8028F2B4
+lbl_8036C658:
+/* 8036C658 003682B8 7E A3 AB 78 */ mr r3, r21
+/* 8036C65C 003682BC 38 80 FF FF */ li r4, -1
+/* 8036C660 003682C0 4B FF D0 19 */ bl __dt__Q44nw4r3snd6detail7AxVoiceFv
+/* 8036C664 003682C4 4B F0 20 F9 */ bl OSDisableInterrupts
+/* 8036C668 003682C8 88 15 00 1D */ lbz r0, 0x1d(r21)
+/* 8036C66C 003682CC 7C 7D 1B 78 */ mr r29, r3
+/* 8036C670 003682D0 2C 00 00 00 */ cmpwi r0, 0
+/* 8036C674 003682D4 41 82 00 18 */ beq lbl_8036C68C
+/* 8036C678 003682D8 3A B5 00 40 */ addi r21, r21, 0x40
+/* 8036C67C 003682DC 38 76 00 18 */ addi r3, r22, 0x18
+/* 8036C680 003682E0 7E A4 AB 78 */ mr r4, r21
+/* 8036C684 003682E4 4B FF 65 F1 */ bl Erase__Q44nw4r2ut6detail12LinkListImplFPQ34nw4r2ut12LinkListNode
+/* 8036C688 003682E8 48 00 00 14 */ b lbl_8036C69C
+lbl_8036C68C:
+/* 8036C68C 003682EC 3A B5 00 40 */ addi r21, r21, 0x40
+/* 8036C690 003682F0 7E C3 B3 78 */ mr r3, r22
+/* 8036C694 003682F4 7E A4 AB 78 */ mr r4, r21
+/* 8036C698 003682F8 4B FF 65 DD */ bl Erase__Q44nw4r2ut6detail12LinkListImplFPQ34nw4r2ut12LinkListNode
+lbl_8036C69C:
+/* 8036C69C 003682FC 93 81 00 08 */ stw r28, 8(r1)
+/* 8036C6A0 00368300 7E A5 AB 78 */ mr r5, r21
+/* 8036C6A4 00368304 38 76 00 0C */ addi r3, r22, 0xc
+/* 8036C6A8 00368308 38 81 00 08 */ addi r4, r1, 8
+/* 8036C6AC 0036830C 4B FF 65 9D */ bl Insert__Q44nw4r2ut6detail12LinkListImplFQ54nw4r2ut6detail12LinkListImpl8IteratorPQ34nw4r2ut12LinkListNode
+/* 8036C6B0 00368310 7F A3 EB 78 */ mr r3, r29
+/* 8036C6B4 00368314 4B F0 20 D1 */ bl OSRestoreInterrupts
+/* 8036C6B8 00368318 7F C3 F3 78 */ mr r3, r30
+/* 8036C6BC 0036831C 4B F0 20 C9 */ bl OSRestoreInterrupts
+lbl_8036C6C0:
+/* 8036C6C0 00368320 80 1F 00 18 */ lwz r0, 0x18(r31)
+/* 8036C6C4 00368324 2C 00 00 00 */ cmpwi r0, 0
+/* 8036C6C8 00368328 40 82 FE E0 */ bne lbl_8036C5A8
+lbl_8036C6CC:
+/* 8036C6CC 0036832C 39 61 00 40 */ addi r11, r1, 0x40
+/* 8036C6D0 00368330 4B E5 AA 8D */ bl func_801C715C
+/* 8036C6D4 00368334 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 8036C6D8 00368338 7C 08 03 A6 */ mtlr r0
+/* 8036C6DC 0036833C 38 21 00 40 */ addi r1, r1, 0x40
+/* 8036C6E0 00368340 4E 80 00 20 */ blr
diff --git a/asm/NW4R/snd_AxfxImpl.s b/asm/NW4R/snd_AxfxImpl.s
new file mode 100644
index 0000000..9ba5f8b
--- /dev/null
+++ b/asm/NW4R/snd_AxfxImpl.s
@@ -0,0 +1,114 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global CreateHeap__Q44nw4r3snd6detail8AxfxImplFPvUl
+CreateHeap__Q44nw4r3snd6detail8AxfxImplFPvUl:
+/* 8036C6E4 00368344 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8036C6E8 00368348 7C 08 02 A6 */ mflr r0
+/* 8036C6EC 0036834C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8036C6F0 00368350 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8036C6F4 00368354 7C 7F 1B 78 */ mr r31, r3
+/* 8036C6F8 00368358 7C 83 23 78 */ mr r3, r4
+/* 8036C6FC 0036835C 7C A4 2B 78 */ mr r4, r5
+/* 8036C700 00368360 38 A0 00 00 */ li r5, 0
+/* 8036C704 00368364 4B F2 AD 09 */ bl func_8029740C
+/* 8036C708 00368368 7C 03 00 D0 */ neg r0, r3
+/* 8036C70C 0036836C 90 7F 00 04 */ stw r3, 4(r31)
+/* 8036C710 00368370 7C 00 1B 78 */ or r0, r0, r3
+/* 8036C714 00368374 54 03 0F FE */ srwi r3, r0, 0x1f
+/* 8036C718 00368378 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8036C71C 0036837C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8036C720 00368380 7C 08 03 A6 */ mtlr r0
+/* 8036C724 00368384 38 21 00 10 */ addi r1, r1, 0x10
+/* 8036C728 00368388 4E 80 00 20 */ blr
+
+.global DestroyHeap__Q44nw4r3snd6detail8AxfxImplFv
+DestroyHeap__Q44nw4r3snd6detail8AxfxImplFv:
+/* 8036C72C 0036838C 80 63 00 04 */ lwz r3, 4(r3)
+/* 8036C730 00368390 2C 03 00 00 */ cmpwi r3, 0
+/* 8036C734 00368394 4D 82 00 20 */ beqlr
+/* 8036C738 00368398 4B F2 AD 58 */ b func_80297490
+/* 8036C73C 0036839C 4E 80 00 20 */ blr
+
+.global HookAlloc__Q44nw4r3snd6detail8AxfxImplFPPFUl_PvPPFPv_v
+HookAlloc__Q44nw4r3snd6detail8AxfxImplFPPFUl_PvPPFPv_v:
+/* 8036C740 003683A0 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8036C744 003683A4 7C 08 02 A6 */ mflr r0
+/* 8036C748 003683A8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8036C74C 003683AC 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8036C750 003683B0 7C 7F 1B 78 */ mr r31, r3
+/* 8036C754 003683B4 7C 83 23 78 */ mr r3, r4
+/* 8036C758 003683B8 7C A4 2B 78 */ mr r4, r5
+/* 8036C75C 003683BC 4B F2 9D 5D */ bl func_802964B8
+/* 8036C760 003683C0 3C 60 80 37 */ lis r3, Alloc__Q44nw4r3snd6detail8AxfxImplFUl@ha
+/* 8036C764 003683C4 3C 80 80 37 */ lis r4, Free__Q44nw4r3snd6detail8AxfxImplFPv@ha
+/* 8036C768 003683C8 38 63 C7 BC */ addi r3, r3, Alloc__Q44nw4r3snd6detail8AxfxImplFUl@l
+/* 8036C76C 003683CC 38 84 C8 1C */ addi r4, r4, Free__Q44nw4r3snd6detail8AxfxImplFPv@l
+/* 8036C770 003683D0 4B F2 9D 3D */ bl func_802964AC
+/* 8036C774 003683D4 93 ED B1 E8 */ stw r31, lbl_806404A8-_SDA_BASE_(r13)
+/* 8036C778 003683D8 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8036C77C 003683DC 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8036C780 003683E0 7C 08 03 A6 */ mtlr r0
+/* 8036C784 003683E4 38 21 00 10 */ addi r1, r1, 0x10
+/* 8036C788 003683E8 4E 80 00 20 */ blr
+
+.global RestoreAlloc__Q44nw4r3snd6detail8AxfxImplFPFUl_PvPFPv_v
+RestoreAlloc__Q44nw4r3snd6detail8AxfxImplFPFUl_PvPFPv_v:
+/* 8036C78C 003683EC 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8036C790 003683F0 7C 08 02 A6 */ mflr r0
+/* 8036C794 003683F4 7C 83 23 78 */ mr r3, r4
+/* 8036C798 003683F8 7C A4 2B 78 */ mr r4, r5
+/* 8036C79C 003683FC 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8036C7A0 00368400 4B F2 9D 0D */ bl func_802964AC
+/* 8036C7A4 00368404 38 00 00 00 */ li r0, 0
+/* 8036C7A8 00368408 90 0D B1 E8 */ stw r0, lbl_806404A8-_SDA_BASE_(r13)
+/* 8036C7AC 0036840C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8036C7B0 00368410 7C 08 03 A6 */ mtlr r0
+/* 8036C7B4 00368414 38 21 00 10 */ addi r1, r1, 0x10
+/* 8036C7B8 00368418 4E 80 00 20 */ blr
+
+.global Alloc__Q44nw4r3snd6detail8AxfxImplFUl
+Alloc__Q44nw4r3snd6detail8AxfxImplFUl:
+/* 8036C7BC 0036841C 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8036C7C0 00368420 7C 08 02 A6 */ mflr r0
+/* 8036C7C4 00368424 38 A0 00 04 */ li r5, 4
+/* 8036C7C8 00368428 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8036C7CC 0036842C 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8036C7D0 00368430 7C 7F 1B 78 */ mr r31, r3
+/* 8036C7D4 00368434 7F E4 FB 78 */ mr r4, r31
+/* 8036C7D8 00368438 80 CD B1 E8 */ lwz r6, lbl_806404A8-_SDA_BASE_(r13)
+/* 8036C7DC 0036843C 80 66 00 04 */ lwz r3, 4(r6)
+/* 8036C7E0 00368440 4B F2 AC E1 */ bl func_802974C0
+/* 8036C7E4 00368444 80 AD B1 E8 */ lwz r5, lbl_806404A8-_SDA_BASE_(r13)
+/* 8036C7E8 00368448 38 1F 00 03 */ addi r0, r31, 3
+/* 8036C7EC 0036844C 54 00 00 3A */ rlwinm r0, r0, 0, 0, 0x1d
+/* 8036C7F0 00368450 80 85 00 08 */ lwz r4, 8(r5)
+/* 8036C7F4 00368454 38 84 00 01 */ addi r4, r4, 1
+/* 8036C7F8 00368458 90 85 00 08 */ stw r4, 8(r5)
+/* 8036C7FC 0036845C 80 8D B1 EC */ lwz r4, lbl_806404AC-_SDA_BASE_(r13)
+/* 8036C800 00368460 7C 04 02 14 */ add r0, r4, r0
+/* 8036C804 00368464 90 0D B1 EC */ stw r0, lbl_806404AC-_SDA_BASE_(r13)
+/* 8036C808 00368468 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8036C80C 0036846C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8036C810 00368470 7C 08 03 A6 */ mtlr r0
+/* 8036C814 00368474 38 21 00 10 */ addi r1, r1, 0x10
+/* 8036C818 00368478 4E 80 00 20 */ blr
+
+.global Free__Q44nw4r3snd6detail8AxfxImplFPv
+Free__Q44nw4r3snd6detail8AxfxImplFPv:
+/* 8036C81C 0036847C 80 8D B1 E8 */ lwz r4, lbl_806404A8-_SDA_BASE_(r13)
+/* 8036C820 00368480 80 64 00 08 */ lwz r3, 8(r4)
+/* 8036C824 00368484 2C 03 00 00 */ cmpwi r3, 0
+/* 8036C828 00368488 41 82 00 0C */ beq lbl_8036C834
+/* 8036C82C 0036848C 38 03 FF FF */ addi r0, r3, -1
+/* 8036C830 00368490 90 04 00 08 */ stw r0, 8(r4)
+lbl_8036C834:
+/* 8036C834 00368494 80 6D B1 E8 */ lwz r3, lbl_806404A8-_SDA_BASE_(r13)
+/* 8036C838 00368498 80 03 00 08 */ lwz r0, 8(r3)
+/* 8036C83C 0036849C 2C 00 00 00 */ cmpwi r0, 0
+/* 8036C840 003684A0 4C 82 00 20 */ bnelr
+/* 8036C844 003684A4 80 63 00 04 */ lwz r3, 4(r3)
+/* 8036C848 003684A8 38 80 00 03 */ li r4, 3
+/* 8036C84C 003684AC 4B F2 AD 94 */ b func_802975E0
+/* 8036C850 003684B0 4E 80 00 20 */ blr
diff --git a/asm/NW4R/snd_Bank.s b/asm/NW4R/snd_Bank.s
new file mode 100644
index 0000000..e77e630
--- /dev/null
+++ b/asm/NW4R/snd_Bank.s
@@ -0,0 +1,156 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global __ct__Q44nw4r3snd6detail4BankFPCv
+__ct__Q44nw4r3snd6detail4BankFPCv:
+/* 8036C854 003684B4 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8036C858 003684B8 7C 08 02 A6 */ mflr r0
+/* 8036C85C 003684BC 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8036C860 003684C0 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8036C864 003684C4 7C 7F 1B 78 */ mr r31, r3
+/* 8036C868 003684C8 48 00 02 15 */ bl __ct__Q44nw4r3snd6detail14BankFileReaderFPCv
+/* 8036C86C 003684CC 38 00 00 00 */ li r0, 0
+/* 8036C870 003684D0 7F E3 FB 78 */ mr r3, r31
+/* 8036C874 003684D4 90 1F 00 0C */ stw r0, 0xc(r31)
+/* 8036C878 003684D8 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8036C87C 003684DC 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8036C880 003684E0 7C 08 03 A6 */ mtlr r0
+/* 8036C884 003684E4 38 21 00 10 */ addi r1, r1, 0x10
+/* 8036C888 003684E8 4E 80 00 20 */ blr
+
+.global __dt__Q44nw4r3snd6detail4BankFv
+__dt__Q44nw4r3snd6detail4BankFv:
+/* 8036C88C 003684EC 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8036C890 003684F0 7C 08 02 A6 */ mflr r0
+/* 8036C894 003684F4 2C 03 00 00 */ cmpwi r3, 0
+/* 8036C898 003684F8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8036C89C 003684FC 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8036C8A0 00368500 7C 7F 1B 78 */ mr r31, r3
+/* 8036C8A4 00368504 41 82 00 10 */ beq lbl_8036C8B4
+/* 8036C8A8 00368508 2C 04 00 00 */ cmpwi r4, 0
+/* 8036C8AC 0036850C 40 81 00 08 */ ble lbl_8036C8B4
+/* 8036C8B0 00368510 4B E6 E2 09 */ bl func_801DAAB8
+lbl_8036C8B4:
+/* 8036C8B4 00368514 7F E3 FB 78 */ mr r3, r31
+/* 8036C8B8 00368518 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8036C8BC 0036851C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8036C8C0 00368520 7C 08 03 A6 */ mtlr r0
+/* 8036C8C4 00368524 38 21 00 10 */ addi r1, r1, 0x10
+/* 8036C8C8 00368528 4E 80 00 20 */ blr
+
+.global NoteOn__Q44nw4r3snd6detail4BankCFRCQ44nw4r3snd6detail10NoteOnInfo
+NoteOn__Q44nw4r3snd6detail4BankCFRCQ44nw4r3snd6detail10NoteOnInfo:
+/* 8036C8CC 0036852C 94 21 FF 30 */ stwu r1, -0xd0(r1)
+/* 8036C8D0 00368530 7C 08 02 A6 */ mflr r0
+/* 8036C8D4 00368534 80 A4 00 00 */ lwz r5, 0(r4)
+/* 8036C8D8 00368538 90 01 00 D4 */ stw r0, 0xd4(r1)
+/* 8036C8DC 0036853C 3C 00 43 30 */ lis r0, 0x4330
+/* 8036C8E0 00368540 93 E1 00 CC */ stw r31, 0xcc(r1)
+/* 8036C8E4 00368544 7C 7F 1B 78 */ mr r31, r3
+/* 8036C8E8 00368548 93 C1 00 C8 */ stw r30, 0xc8(r1)
+/* 8036C8EC 0036854C 7C 9E 23 78 */ mr r30, r4
+/* 8036C8F0 00368550 80 DE 00 04 */ lwz r6, 4(r30)
+/* 8036C8F4 00368554 38 81 00 08 */ addi r4, r1, 8
+/* 8036C8F8 00368558 90 01 00 B0 */ stw r0, 0xb0(r1)
+/* 8036C8FC 0036855C 80 FE 00 08 */ lwz r7, 8(r30)
+/* 8036C900 00368560 90 01 00 B8 */ stw r0, 0xb8(r1)
+/* 8036C904 00368564 48 00 01 F5 */ bl ReadInstInfo__Q44nw4r3snd6detail14BankFileReaderCFPQ44nw4r3snd6detail8InstInfoiii
+/* 8036C908 00368568 2C 03 00 00 */ cmpwi r3, 0
+/* 8036C90C 0036856C 40 82 00 0C */ bne lbl_8036C918
+/* 8036C910 00368570 38 60 00 00 */ li r3, 0
+/* 8036C914 00368574 48 00 01 50 */ b lbl_8036CA64
+lbl_8036C918:
+/* 8036C918 00368578 80 A1 00 08 */ lwz r5, 8(r1)
+/* 8036C91C 0036857C 7F E3 FB 78 */ mr r3, r31
+/* 8036C920 00368580 80 DF 00 0C */ lwz r6, 0xc(r31)
+/* 8036C924 00368584 38 81 00 18 */ addi r4, r1, 0x18
+/* 8036C928 00368588 48 00 04 A5 */ bl ReadWaveParam__Q44nw4r3snd6detail14BankFileReaderCFPQ44nw4r3snd6detail8WaveDataiPCv
+/* 8036C92C 0036858C 2C 03 00 00 */ cmpwi r3, 0
+/* 8036C930 00368590 40 82 00 0C */ bne lbl_8036C93C
+/* 8036C934 00368594 38 60 00 00 */ li r3, 0
+/* 8036C938 00368598 48 00 01 2C */ b lbl_8036CA64
+lbl_8036C93C:
+/* 8036C93C 0036859C 88 01 00 1A */ lbz r0, 0x1a(r1)
+/* 8036C940 003685A0 38 60 00 02 */ li r3, 2
+/* 8036C944 003685A4 2C 00 00 02 */ cmpwi r0, 2
+/* 8036C948 003685A8 41 81 00 08 */ bgt lbl_8036C950
+/* 8036C94C 003685AC 7C 03 03 78 */ mr r3, r0
+lbl_8036C950:
+/* 8036C950 003685B0 80 9E 00 18 */ lwz r4, 0x18(r30)
+/* 8036C954 003685B4 80 BE 00 14 */ lwz r5, 0x14(r30)
+/* 8036C958 003685B8 80 DE 00 1C */ lwz r6, 0x1c(r30)
+/* 8036C95C 003685BC 80 FE 00 20 */ lwz r7, 0x20(r30)
+/* 8036C960 003685C0 48 00 26 A5 */ bl func_8036F004
+/* 8036C964 003685C4 2C 03 00 00 */ cmpwi r3, 0
+/* 8036C968 003685C8 7C 7F 1B 78 */ mr r31, r3
+/* 8036C96C 003685CC 40 82 00 0C */ bne lbl_8036C978
+/* 8036C970 003685D0 38 60 00 00 */ li r3, 0
+/* 8036C974 003685D4 48 00 00 F0 */ b lbl_8036CA64
+lbl_8036C978:
+/* 8036C978 003685D8 80 9E 00 04 */ lwz r4, 4(r30)
+/* 8036C97C 003685DC 80 1E 00 08 */ lwz r0, 8(r30)
+/* 8036C980 003685E0 90 83 00 C0 */ stw r4, 0xc0(r3)
+/* 8036C984 003685E4 6C 00 80 00 */ xoris r0, r0, 0x8000
+/* 8036C988 003685E8 C8 22 A5 90 */ lfd f1, lbl_80642B90-_SDA2_BASE_(r2)
+/* 8036C98C 003685EC 88 81 00 10 */ lbz r4, 0x10(r1)
+/* 8036C990 003685F0 90 01 00 B4 */ stw r0, 0xb4(r1)
+/* 8036C994 003685F4 C0 42 A5 80 */ lfs f2, lbl_80642B80-_SDA2_BASE_(r2)
+/* 8036C998 003685F8 90 83 00 C4 */ stw r4, 0xc4(r3)
+/* 8036C99C 003685FC C8 01 00 B0 */ lfd f0, 0xb0(r1)
+/* 8036C9A0 00368600 88 01 00 12 */ lbz r0, 0x12(r1)
+/* 8036C9A4 00368604 EC 60 08 28 */ fsubs f3, f0, f1
+/* 8036C9A8 00368608 C8 22 A5 98 */ lfd f1, lbl_80642B98-_SDA2_BASE_(r2)
+/* 8036C9AC 0036860C 90 01 00 BC */ stw r0, 0xbc(r1)
+/* 8036C9B0 00368610 C8 01 00 B8 */ lfd f0, 0xb8(r1)
+/* 8036C9B4 00368614 EC 63 10 24 */ fdivs f3, f3, f2
+/* 8036C9B8 00368618 EC 00 08 28 */ fsubs f0, f0, f1
+/* 8036C9BC 0036861C EC 63 00 F2 */ fmuls f3, f3, f3
+/* 8036C9C0 00368620 EC 00 10 24 */ fdivs f0, f0, f2
+/* 8036C9C4 00368624 EC 63 00 32 */ fmuls f3, f3, f0
+/* 8036C9C8 00368628 D0 63 00 A8 */ stfs f3, 0xa8(r3)
+/* 8036C9CC 0036862C C0 01 00 14 */ lfs f0, 0x14(r1)
+/* 8036C9D0 00368630 D0 03 00 B4 */ stfs f0, 0xb4(r3)
+/* 8036C9D4 00368634 88 81 00 0C */ lbz r4, 0xc(r1)
+/* 8036C9D8 00368638 48 00 34 45 */ bl func_8036FE1C
+/* 8036C9DC 0036863C 88 81 00 0D */ lbz r4, 0xd(r1)
+/* 8036C9E0 00368640 7F E3 FB 78 */ mr r3, r31
+/* 8036C9E4 00368644 48 00 34 51 */ bl func_8036FE34
+/* 8036C9E8 00368648 88 81 00 0E */ lbz r4, 0xe(r1)
+/* 8036C9EC 0036864C 7F E3 FB 78 */ mr r3, r31
+/* 8036C9F0 00368650 48 00 34 E5 */ bl func_8036FED4
+/* 8036C9F4 00368654 88 81 00 0F */ lbz r4, 0xf(r1)
+/* 8036C9F8 00368658 7F E3 FB 78 */ mr r3, r31
+/* 8036C9FC 0036865C 48 00 34 E1 */ bl func_8036FEDC
+/* 8036CA00 00368660 88 A1 00 11 */ lbz r5, 0x11(r1)
+/* 8036CA04 00368664 7F E3 FB 78 */ mr r3, r31
+/* 8036CA08 00368668 80 1E 00 10 */ lwz r0, 0x10(r30)
+/* 8036CA0C 0036866C 38 81 00 18 */ addi r4, r1, 0x18
+/* 8036CA10 00368670 38 A5 FF C0 */ addi r5, r5, -64
+/* 8036CA14 00368674 C8 82 A5 90 */ lfd f4, lbl_80642B90-_SDA2_BASE_(r2)
+/* 8036CA18 00368678 6C A5 80 00 */ xoris r5, r5, 0x8000
+/* 8036CA1C 0036867C 6C 00 80 00 */ xoris r0, r0, 0x8000
+/* 8036CA20 00368680 90 A1 00 B4 */ stw r5, 0xb4(r1)
+/* 8036CA24 00368684 38 C0 00 00 */ li r6, 0
+/* 8036CA28 00368688 C0 42 A5 84 */ lfs f2, lbl_80642B84-_SDA2_BASE_(r2)
+/* 8036CA2C 0036868C 90 01 00 BC */ stw r0, 0xbc(r1)
+/* 8036CA30 00368690 C8 01 00 B0 */ lfd f0, 0xb0(r1)
+/* 8036CA34 00368694 C8 21 00 B8 */ lfd f1, 0xb8(r1)
+/* 8036CA38 00368698 EC 60 20 28 */ fsubs f3, f0, f4
+/* 8036CA3C 0036869C C0 02 A5 88 */ lfs f0, lbl_80642B88-_SDA2_BASE_(r2)
+/* 8036CA40 003686A0 EC 21 20 28 */ fsubs f1, f1, f4
+/* 8036CA44 003686A4 80 BE 00 0C */ lwz r5, 0xc(r30)
+/* 8036CA48 003686A8 EC 63 10 24 */ fdivs f3, f3, f2
+/* 8036CA4C 003686AC EC 21 10 24 */ fdivs f1, f1, f2
+/* 8036CA50 003686B0 EC 63 08 2A */ fadds f3, f3, f1
+/* 8036CA54 003686B4 D0 7F 00 AC */ stfs f3, 0xac(r31)
+/* 8036CA58 003686B8 D0 1F 00 B0 */ stfs f0, 0xb0(r31)
+/* 8036CA5C 003686BC 48 00 22 05 */ bl func_8036EC60
+/* 8036CA60 003686C0 7F E3 FB 78 */ mr r3, r31
+lbl_8036CA64:
+/* 8036CA64 003686C4 80 01 00 D4 */ lwz r0, 0xd4(r1)
+/* 8036CA68 003686C8 83 E1 00 CC */ lwz r31, 0xcc(r1)
+/* 8036CA6C 003686CC 83 C1 00 C8 */ lwz r30, 0xc8(r1)
+/* 8036CA70 003686D0 7C 08 03 A6 */ mtlr r0
+/* 8036CA74 003686D4 38 21 00 D0 */ addi r1, r1, 0xd0
+/* 8036CA78 003686D8 4E 80 00 20 */ blr
diff --git a/asm/NW4R/snd_BankFile.s b/asm/NW4R/snd_BankFile.s
new file mode 100644
index 0000000..81cf66b
--- /dev/null
+++ b/asm/NW4R/snd_BankFile.s
@@ -0,0 +1,306 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global __ct__Q44nw4r3snd6detail14BankFileReaderFPCv
+__ct__Q44nw4r3snd6detail14BankFileReaderFPCv:
+/* 8036CA7C 003686DC 80 A4 00 00 */ lwz r5, 0(r4)
+/* 8036CA80 003686E0 38 C0 00 00 */ li r6, 0
+/* 8036CA84 003686E4 90 C3 00 00 */ stw r6, 0(r3)
+/* 8036CA88 003686E8 3C 05 AD BE */ addis r0, r5, 0xadbe
+/* 8036CA8C 003686EC 28 00 4E 4B */ cmplwi r0, 0x4e4b
+/* 8036CA90 003686F0 90 C3 00 04 */ stw r6, 4(r3)
+/* 8036CA94 003686F4 90 C3 00 08 */ stw r6, 8(r3)
+/* 8036CA98 003686F8 41 82 00 0C */ beq lbl_8036CAA4
+/* 8036CA9C 003686FC 38 00 00 00 */ li r0, 0
+/* 8036CAA0 00368700 48 00 00 30 */ b lbl_8036CAD0
+lbl_8036CAA4:
+/* 8036CAA4 00368704 A0 C4 00 06 */ lhz r6, 6(r4)
+/* 8036CAA8 00368708 28 06 01 00 */ cmplwi r6, 0x100
+/* 8036CAAC 0036870C 40 80 00 0C */ bge lbl_8036CAB8
+/* 8036CAB0 00368710 38 00 00 00 */ li r0, 0
+/* 8036CAB4 00368714 48 00 00 1C */ b lbl_8036CAD0
+lbl_8036CAB8:
+/* 8036CAB8 00368718 20 06 01 01 */ subfic r0, r6, 0x101
+/* 8036CABC 0036871C 38 A0 01 01 */ li r5, 0x101
+/* 8036CAC0 00368720 7C A5 33 38 */ orc r5, r5, r6
+/* 8036CAC4 00368724 54 00 F8 7E */ srwi r0, r0, 1
+/* 8036CAC8 00368728 7C 00 28 50 */ subf r0, r0, r5
+/* 8036CACC 0036872C 54 00 0F FE */ srwi r0, r0, 0x1f
+lbl_8036CAD0:
+/* 8036CAD0 00368730 2C 00 00 00 */ cmpwi r0, 0
+/* 8036CAD4 00368734 4D 82 00 20 */ beqlr
+/* 8036CAD8 00368738 80 A4 00 10 */ lwz r5, 0x10(r4)
+/* 8036CADC 0036873C 80 04 00 18 */ lwz r0, 0x18(r4)
+/* 8036CAE0 00368740 7C A5 22 14 */ add r5, r5, r4
+/* 8036CAE4 00368744 90 83 00 00 */ stw r4, 0(r3)
+/* 8036CAE8 00368748 7C 00 22 14 */ add r0, r0, r4
+/* 8036CAEC 0036874C 90 A3 00 04 */ stw r5, 4(r3)
+/* 8036CAF0 00368750 90 03 00 08 */ stw r0, 8(r3)
+/* 8036CAF4 00368754 4E 80 00 20 */ blr
+
+.global ReadInstInfo__Q44nw4r3snd6detail14BankFileReaderCFPQ44nw4r3snd6detail8InstInfoiii
+ReadInstInfo__Q44nw4r3snd6detail14BankFileReaderCFPQ44nw4r3snd6detail8InstInfoiii:
+/* 8036CAF8 00368758 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8036CAFC 0036875C 7C 08 02 A6 */ mflr r0
+/* 8036CB00 00368760 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8036CB04 00368764 80 03 00 00 */ lwz r0, 0(r3)
+/* 8036CB08 00368768 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8036CB0C 0036876C 7C 9F 23 78 */ mr r31, r4
+/* 8036CB10 00368770 2C 00 00 00 */ cmpwi r0, 0
+/* 8036CB14 00368774 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8036CB18 00368778 7C FE 3B 78 */ mr r30, r7
+/* 8036CB1C 0036877C 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8036CB20 00368780 7C 7D 1B 78 */ mr r29, r3
+/* 8036CB24 00368784 40 82 00 0C */ bne lbl_8036CB30
+/* 8036CB28 00368788 38 60 00 00 */ li r3, 0
+/* 8036CB2C 0036878C 48 00 01 5C */ b lbl_8036CC88
+lbl_8036CB30:
+/* 8036CB30 00368790 2C 05 00 00 */ cmpwi r5, 0
+/* 8036CB34 00368794 41 80 00 14 */ blt lbl_8036CB48
+/* 8036CB38 00368798 80 83 00 04 */ lwz r4, 4(r3)
+/* 8036CB3C 0036879C 80 04 00 08 */ lwz r0, 8(r4)
+/* 8036CB40 003687A0 7C 05 00 00 */ cmpw r5, r0
+/* 8036CB44 003687A4 41 80 00 0C */ blt lbl_8036CB50
+lbl_8036CB48:
+/* 8036CB48 003687A8 38 60 00 00 */ li r3, 0
+/* 8036CB4C 003687AC 48 00 01 3C */ b lbl_8036CC88
+lbl_8036CB50:
+/* 8036CB50 003687B0 54 A0 18 38 */ slwi r0, r5, 3
+/* 8036CB54 003687B4 7C 84 02 14 */ add r4, r4, r0
+/* 8036CB58 003687B8 38 84 00 0C */ addi r4, r4, 0xc
+/* 8036CB5C 003687BC 88 04 00 01 */ lbz r0, 1(r4)
+/* 8036CB60 003687C0 28 00 00 04 */ cmplwi r0, 4
+/* 8036CB64 003687C4 40 82 00 0C */ bne lbl_8036CB70
+/* 8036CB68 003687C8 38 60 00 00 */ li r3, 0
+/* 8036CB6C 003687CC 48 00 01 1C */ b lbl_8036CC88
+lbl_8036CB70:
+/* 8036CB70 003687D0 28 00 00 01 */ cmplwi r0, 1
+/* 8036CB74 003687D4 41 82 00 20 */ beq lbl_8036CB94
+/* 8036CB78 003687D8 7C C5 33 78 */ mr r5, r6
+/* 8036CB7C 003687DC 48 00 01 29 */ bl GetReferenceToSubRegion__Q44nw4r3snd6detail14BankFileReaderCFPCQ54nw4r3snd6detail4Util128DataRef$0v$4Q54nw4r3snd6detail8BankFile9InstParam$4Q54nw4r3snd6detail8BankFile10RangeTable$4Q54nw4r3snd6detail8BankFile10IndexTable$1i
+/* 8036CB80 003687E0 2C 03 00 00 */ cmpwi r3, 0
+/* 8036CB84 003687E4 7C 64 1B 78 */ mr r4, r3
+/* 8036CB88 003687E8 40 82 00 0C */ bne lbl_8036CB94
+/* 8036CB8C 003687EC 38 60 00 00 */ li r3, 0
+/* 8036CB90 003687F0 48 00 00 F8 */ b lbl_8036CC88
+lbl_8036CB94:
+/* 8036CB94 003687F4 88 04 00 01 */ lbz r0, 1(r4)
+/* 8036CB98 003687F8 28 00 00 04 */ cmplwi r0, 4
+/* 8036CB9C 003687FC 40 82 00 0C */ bne lbl_8036CBA8
+/* 8036CBA0 00368800 38 60 00 00 */ li r3, 0
+/* 8036CBA4 00368804 48 00 00 E4 */ b lbl_8036CC88
+lbl_8036CBA8:
+/* 8036CBA8 00368808 28 00 00 01 */ cmplwi r0, 1
+/* 8036CBAC 0036880C 41 82 00 24 */ beq lbl_8036CBD0
+/* 8036CBB0 00368810 7F A3 EB 78 */ mr r3, r29
+/* 8036CBB4 00368814 7F C5 F3 78 */ mr r5, r30
+/* 8036CBB8 00368818 48 00 00 ED */ bl GetReferenceToSubRegion__Q44nw4r3snd6detail14BankFileReaderCFPCQ54nw4r3snd6detail4Util128DataRef$0v$4Q54nw4r3snd6detail8BankFile9InstParam$4Q54nw4r3snd6detail8BankFile10RangeTable$4Q54nw4r3snd6detail8BankFile10IndexTable$1i
+/* 8036CBBC 0036881C 2C 03 00 00 */ cmpwi r3, 0
+/* 8036CBC0 00368820 7C 64 1B 78 */ mr r4, r3
+/* 8036CBC4 00368824 40 82 00 0C */ bne lbl_8036CBD0
+/* 8036CBC8 00368828 38 60 00 00 */ li r3, 0
+/* 8036CBCC 0036882C 48 00 00 BC */ b lbl_8036CC88
+lbl_8036CBD0:
+/* 8036CBD0 00368830 88 04 00 01 */ lbz r0, 1(r4)
+/* 8036CBD4 00368834 28 00 00 01 */ cmplwi r0, 1
+/* 8036CBD8 00368838 41 82 00 0C */ beq lbl_8036CBE4
+/* 8036CBDC 0036883C 38 60 00 00 */ li r3, 0
+/* 8036CBE0 00368840 48 00 00 A8 */ b lbl_8036CC88
+lbl_8036CBE4:
+/* 8036CBE4 00368844 80 BD 00 04 */ lwz r5, 4(r29)
+/* 8036CBE8 00368848 88 64 00 00 */ lbz r3, 0(r4)
+/* 8036CBEC 0036884C 80 84 00 04 */ lwz r4, 4(r4)
+/* 8036CBF0 00368850 38 A5 00 08 */ addi r5, r5, 8
+/* 8036CBF4 00368854 48 01 67 F5 */ bl func_803833E8
+/* 8036CBF8 00368858 2C 03 00 00 */ cmpwi r3, 0
+/* 8036CBFC 0036885C 40 82 00 0C */ bne lbl_8036CC08
+/* 8036CC00 00368860 38 60 00 00 */ li r3, 0
+/* 8036CC04 00368864 48 00 00 84 */ b lbl_8036CC88
+lbl_8036CC08:
+/* 8036CC08 00368868 80 03 00 00 */ lwz r0, 0(r3)
+/* 8036CC0C 0036886C 2C 00 00 00 */ cmpwi r0, 0
+/* 8036CC10 00368870 40 80 00 0C */ bge lbl_8036CC1C
+/* 8036CC14 00368874 38 60 00 00 */ li r3, 0
+/* 8036CC18 00368878 48 00 00 70 */ b lbl_8036CC88
+lbl_8036CC1C:
+/* 8036CC1C 0036887C 90 1F 00 00 */ stw r0, 0(r31)
+/* 8036CC20 00368880 80 9D 00 00 */ lwz r4, 0(r29)
+/* 8036CC24 00368884 88 03 00 04 */ lbz r0, 4(r3)
+/* 8036CC28 00368888 98 1F 00 04 */ stb r0, 4(r31)
+/* 8036CC2C 0036888C 88 03 00 05 */ lbz r0, 5(r3)
+/* 8036CC30 00368890 98 1F 00 05 */ stb r0, 5(r31)
+/* 8036CC34 00368894 88 03 00 06 */ lbz r0, 6(r3)
+/* 8036CC38 00368898 98 1F 00 06 */ stb r0, 6(r31)
+/* 8036CC3C 0036889C 88 03 00 07 */ lbz r0, 7(r3)
+/* 8036CC40 003688A0 98 1F 00 07 */ stb r0, 7(r31)
+/* 8036CC44 003688A4 88 03 00 0C */ lbz r0, 0xc(r3)
+/* 8036CC48 003688A8 98 1F 00 08 */ stb r0, 8(r31)
+/* 8036CC4C 003688AC 88 03 00 0E */ lbz r0, 0xe(r3)
+/* 8036CC50 003688B0 98 1F 00 09 */ stb r0, 9(r31)
+/* 8036CC54 003688B4 A0 04 00 06 */ lhz r0, 6(r4)
+/* 8036CC58 003688B8 28 00 01 01 */ cmplwi r0, 0x101
+/* 8036CC5C 003688BC 41 80 00 18 */ blt lbl_8036CC74
+/* 8036CC60 003688C0 88 03 00 0D */ lbz r0, 0xd(r3)
+/* 8036CC64 003688C4 98 1F 00 0A */ stb r0, 0xa(r31)
+/* 8036CC68 003688C8 C0 03 00 10 */ lfs f0, 0x10(r3)
+/* 8036CC6C 003688CC D0 1F 00 0C */ stfs f0, 0xc(r31)
+/* 8036CC70 003688D0 48 00 00 14 */ b lbl_8036CC84
+lbl_8036CC74:
+/* 8036CC74 003688D4 C0 02 A5 A0 */ lfs f0, lbl_80642BA0-_SDA2_BASE_(r2)
+/* 8036CC78 003688D8 38 00 00 7F */ li r0, 0x7f
+/* 8036CC7C 003688DC 98 1F 00 0A */ stb r0, 0xa(r31)
+/* 8036CC80 003688E0 D0 1F 00 0C */ stfs f0, 0xc(r31)
+lbl_8036CC84:
+/* 8036CC84 003688E4 38 60 00 01 */ li r3, 1
+lbl_8036CC88:
+/* 8036CC88 003688E8 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8036CC8C 003688EC 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8036CC90 003688F0 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8036CC94 003688F4 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8036CC98 003688F8 7C 08 03 A6 */ mtlr r0
+/* 8036CC9C 003688FC 38 21 00 20 */ addi r1, r1, 0x20
+/* 8036CCA0 00368900 4E 80 00 20 */ blr
+
+.global GetReferenceToSubRegion__Q44nw4r3snd6detail14BankFileReaderCFPCQ54nw4r3snd6detail4Util128DataRef$0v$4Q54nw4r3snd6detail8BankFile9InstParam$4Q54nw4r3snd6detail8BankFile10RangeTable$4Q54nw4r3snd6detail8BankFile10IndexTable$1i
+GetReferenceToSubRegion__Q44nw4r3snd6detail14BankFileReaderCFPCQ54nw4r3snd6detail4Util128DataRef$0v$4Q54nw4r3snd6detail8BankFile9InstParam$4Q54nw4r3snd6detail8BankFile10RangeTable$4Q54nw4r3snd6detail8BankFile10IndexTable$1i:
+/* 8036CCA4 00368904 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8036CCA8 00368908 7C 08 02 A6 */ mflr r0
+/* 8036CCAC 0036890C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8036CCB0 00368910 88 04 00 01 */ lbz r0, 1(r4)
+/* 8036CCB4 00368914 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8036CCB8 00368918 7C BF 2B 78 */ mr r31, r5
+/* 8036CCBC 0036891C 2C 00 00 02 */ cmpwi r0, 2
+/* 8036CCC0 00368920 38 A0 00 00 */ li r5, 0
+/* 8036CCC4 00368924 41 82 00 2C */ beq lbl_8036CCF0
+/* 8036CCC8 00368928 40 80 00 14 */ bge lbl_8036CCDC
+/* 8036CCCC 0036892C 2C 00 00 00 */ cmpwi r0, 0
+/* 8036CCD0 00368930 41 82 00 E4 */ beq lbl_8036CDB4
+/* 8036CCD4 00368934 40 80 00 14 */ bge lbl_8036CCE8
+/* 8036CCD8 00368938 48 00 00 DC */ b lbl_8036CDB4
+lbl_8036CCDC:
+/* 8036CCDC 0036893C 2C 00 00 04 */ cmpwi r0, 4
+/* 8036CCE0 00368940 40 80 00 D4 */ bge lbl_8036CDB4
+/* 8036CCE4 00368944 48 00 00 7C */ b lbl_8036CD60
+lbl_8036CCE8:
+/* 8036CCE8 00368948 7C 85 23 78 */ mr r5, r4
+/* 8036CCEC 0036894C 48 00 00 C8 */ b lbl_8036CDB4
+lbl_8036CCF0:
+/* 8036CCF0 00368950 80 A3 00 04 */ lwz r5, 4(r3)
+/* 8036CCF4 00368954 88 64 00 00 */ lbz r3, 0(r4)
+/* 8036CCF8 00368958 80 84 00 04 */ lwz r4, 4(r4)
+/* 8036CCFC 0036895C 38 A5 00 08 */ addi r5, r5, 8
+/* 8036CD00 00368960 48 01 66 E9 */ bl func_803833E8
+/* 8036CD04 00368964 2C 03 00 00 */ cmpwi r3, 0
+/* 8036CD08 00368968 40 82 00 0C */ bne lbl_8036CD14
+/* 8036CD0C 0036896C 38 60 00 00 */ li r3, 0
+/* 8036CD10 00368970 48 00 00 A8 */ b lbl_8036CDB8
+lbl_8036CD14:
+/* 8036CD14 00368974 38 A0 00 00 */ li r5, 0
+/* 8036CD18 00368978 48 00 00 1C */ b lbl_8036CD34
+lbl_8036CD1C:
+/* 8036CD1C 0036897C 88 03 00 00 */ lbz r0, 0(r3)
+/* 8036CD20 00368980 38 A5 00 01 */ addi r5, r5, 1
+/* 8036CD24 00368984 7C 05 00 00 */ cmpw r5, r0
+/* 8036CD28 00368988 41 80 00 0C */ blt lbl_8036CD34
+/* 8036CD2C 0036898C 38 60 00 00 */ li r3, 0
+/* 8036CD30 00368990 48 00 00 88 */ b lbl_8036CDB8
+lbl_8036CD34:
+/* 8036CD34 00368994 7C 83 2A 14 */ add r4, r3, r5
+/* 8036CD38 00368998 88 04 00 01 */ lbz r0, 1(r4)
+/* 8036CD3C 0036899C 7C 1F 00 00 */ cmpw r31, r0
+/* 8036CD40 003689A0 41 81 FF DC */ bgt lbl_8036CD1C
+/* 8036CD44 003689A4 88 83 00 00 */ lbz r4, 0(r3)
+/* 8036CD48 003689A8 54 A0 18 38 */ slwi r0, r5, 3
+/* 8036CD4C 003689AC 7C 03 02 14 */ add r0, r3, r0
+/* 8036CD50 003689B0 38 64 00 04 */ addi r3, r4, 4
+/* 8036CD54 003689B4 54 63 00 3A */ rlwinm r3, r3, 0, 0, 0x1d
+/* 8036CD58 003689B8 7C A3 02 14 */ add r5, r3, r0
+/* 8036CD5C 003689BC 48 00 00 58 */ b lbl_8036CDB4
+lbl_8036CD60:
+/* 8036CD60 003689C0 80 A3 00 04 */ lwz r5, 4(r3)
+/* 8036CD64 003689C4 88 64 00 00 */ lbz r3, 0(r4)
+/* 8036CD68 003689C8 80 84 00 04 */ lwz r4, 4(r4)
+/* 8036CD6C 003689CC 38 A5 00 08 */ addi r5, r5, 8
+/* 8036CD70 003689D0 48 01 66 79 */ bl func_803833E8
+/* 8036CD74 003689D4 2C 03 00 00 */ cmpwi r3, 0
+/* 8036CD78 003689D8 40 82 00 0C */ bne lbl_8036CD84
+/* 8036CD7C 003689DC 38 60 00 00 */ li r3, 0
+/* 8036CD80 003689E0 48 00 00 38 */ b lbl_8036CDB8
+lbl_8036CD84:
+/* 8036CD84 003689E4 88 83 00 00 */ lbz r4, 0(r3)
+/* 8036CD88 003689E8 7C 1F 20 00 */ cmpw r31, r4
+/* 8036CD8C 003689EC 41 80 00 10 */ blt lbl_8036CD9C
+/* 8036CD90 003689F0 88 03 00 01 */ lbz r0, 1(r3)
+/* 8036CD94 003689F4 7C 1F 00 00 */ cmpw r31, r0
+/* 8036CD98 003689F8 40 81 00 0C */ ble lbl_8036CDA4
+lbl_8036CD9C:
+/* 8036CD9C 003689FC 38 60 00 00 */ li r3, 0
+/* 8036CDA0 00368A00 48 00 00 18 */ b lbl_8036CDB8
+lbl_8036CDA4:
+/* 8036CDA4 00368A04 7C 04 F8 50 */ subf r0, r4, r31
+/* 8036CDA8 00368A08 54 00 18 38 */ slwi r0, r0, 3
+/* 8036CDAC 00368A0C 7C 63 02 14 */ add r3, r3, r0
+/* 8036CDB0 00368A10 38 A3 00 04 */ addi r5, r3, 4
+lbl_8036CDB4:
+/* 8036CDB4 00368A14 7C A3 2B 78 */ mr r3, r5
+lbl_8036CDB8:
+/* 8036CDB8 00368A18 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8036CDBC 00368A1C 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8036CDC0 00368A20 7C 08 03 A6 */ mtlr r0
+/* 8036CDC4 00368A24 38 21 00 10 */ addi r1, r1, 0x10
+/* 8036CDC8 00368A28 4E 80 00 20 */ blr
+
+.global ReadWaveParam__Q44nw4r3snd6detail14BankFileReaderCFPQ44nw4r3snd6detail8WaveDataiPCv
+ReadWaveParam__Q44nw4r3snd6detail14BankFileReaderCFPQ44nw4r3snd6detail8WaveDataiPCv:
+/* 8036CDCC 00368A2C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8036CDD0 00368A30 7C 08 02 A6 */ mflr r0
+/* 8036CDD4 00368A34 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8036CDD8 00368A38 80 03 00 00 */ lwz r0, 0(r3)
+/* 8036CDDC 00368A3C 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8036CDE0 00368A40 7C DF 33 78 */ mr r31, r6
+/* 8036CDE4 00368A44 2C 00 00 00 */ cmpwi r0, 0
+/* 8036CDE8 00368A48 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8036CDEC 00368A4C 7C 9E 23 78 */ mr r30, r4
+/* 8036CDF0 00368A50 40 82 00 0C */ bne lbl_8036CDFC
+/* 8036CDF4 00368A54 38 60 00 00 */ li r3, 0
+/* 8036CDF8 00368A58 48 00 00 74 */ b lbl_8036CE6C
+lbl_8036CDFC:
+/* 8036CDFC 00368A5C 80 83 00 08 */ lwz r4, 8(r3)
+/* 8036CE00 00368A60 2C 04 00 00 */ cmpwi r4, 0
+/* 8036CE04 00368A64 40 82 00 0C */ bne lbl_8036CE10
+/* 8036CE08 00368A68 38 60 00 00 */ li r3, 0
+/* 8036CE0C 00368A6C 48 00 00 60 */ b lbl_8036CE6C
+lbl_8036CE10:
+/* 8036CE10 00368A70 80 04 00 08 */ lwz r0, 8(r4)
+/* 8036CE14 00368A74 38 64 00 08 */ addi r3, r4, 8
+/* 8036CE18 00368A78 7C 05 00 40 */ cmplw r5, r0
+/* 8036CE1C 00368A7C 41 80 00 0C */ blt lbl_8036CE28
+/* 8036CE20 00368A80 38 60 00 00 */ li r3, 0
+/* 8036CE24 00368A84 48 00 00 48 */ b lbl_8036CE6C
+lbl_8036CE28:
+/* 8036CE28 00368A88 54 A0 18 38 */ slwi r0, r5, 3
+/* 8036CE2C 00368A8C 7C 65 1B 78 */ mr r5, r3
+/* 8036CE30 00368A90 7C 84 02 14 */ add r4, r4, r0
+/* 8036CE34 00368A94 88 64 00 0C */ lbz r3, 0xc(r4)
+/* 8036CE38 00368A98 80 84 00 10 */ lwz r4, 0x10(r4)
+/* 8036CE3C 00368A9C 48 01 65 AD */ bl func_803833E8
+/* 8036CE40 00368AA0 2C 03 00 00 */ cmpwi r3, 0
+/* 8036CE44 00368AA4 40 82 00 0C */ bne lbl_8036CE50
+/* 8036CE48 00368AA8 38 60 00 00 */ li r3, 0
+/* 8036CE4C 00368AAC 48 00 00 20 */ b lbl_8036CE6C
+lbl_8036CE50:
+/* 8036CE50 00368AB0 7C 64 1B 78 */ mr r4, r3
+/* 8036CE54 00368AB4 38 61 00 08 */ addi r3, r1, 8
+/* 8036CE58 00368AB8 48 01 65 B5 */ bl func_8038340C
+/* 8036CE5C 00368ABC 7F C4 F3 78 */ mr r4, r30
+/* 8036CE60 00368AC0 7F E5 FB 78 */ mr r5, r31
+/* 8036CE64 00368AC4 38 61 00 08 */ addi r3, r1, 8
+/* 8036CE68 00368AC8 48 01 65 AD */ bl func_80383414
+lbl_8036CE6C:
+/* 8036CE6C 00368ACC 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8036CE70 00368AD0 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8036CE74 00368AD4 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8036CE78 00368AD8 7C 08 03 A6 */ mtlr r0
+/* 8036CE7C 00368ADC 38 21 00 20 */ addi r1, r1, 0x20
+/* 8036CE80 00368AE0 4E 80 00 20 */ blr
diff --git a/asm/NW4R/snd_BasicPlayer.s b/asm/NW4R/snd_BasicPlayer.s
new file mode 100644
index 0000000..0edb9bb
--- /dev/null
+++ b/asm/NW4R/snd_BasicPlayer.s
@@ -0,0 +1,119 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global __ct__Q44nw4r3snd6detail11BasicPlayerFv
+__ct__Q44nw4r3snd6detail11BasicPlayerFv:
+/* 8036CE84 00368AE4 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8036CE88 00368AE8 7C 08 02 A6 */ mflr r0
+/* 8036CE8C 00368AEC 3C 80 80 45 */ lis r4, lbl_8044C908@ha
+/* 8036CE90 00368AF0 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8036CE94 00368AF4 38 00 FF FF */ li r0, -1
+/* 8036CE98 00368AF8 38 84 C9 08 */ addi r4, r4, lbl_8044C908@l
+/* 8036CE9C 00368AFC 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8036CEA0 00368B00 7C 7F 1B 78 */ mr r31, r3
+/* 8036CEA4 00368B04 90 03 00 04 */ stw r0, 4(r3)
+/* 8036CEA8 00368B08 90 83 00 00 */ stw r4, 0(r3)
+/* 8036CEAC 00368B0C 48 00 00 1D */ bl InitParam__Q44nw4r3snd6detail11BasicPlayerFv
+/* 8036CEB0 00368B10 7F E3 FB 78 */ mr r3, r31
+/* 8036CEB4 00368B14 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8036CEB8 00368B18 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8036CEBC 00368B1C 7C 08 03 A6 */ mtlr r0
+/* 8036CEC0 00368B20 38 21 00 10 */ addi r1, r1, 0x10
+/* 8036CEC4 00368B24 4E 80 00 20 */ blr
+
+.global InitParam__Q44nw4r3snd6detail11BasicPlayerFv
+InitParam__Q44nw4r3snd6detail11BasicPlayerFv:
+/* 8036CEC8 00368B28 C0 02 A5 AC */ lfs f0, lbl_80642BAC-_SDA2_BASE_(r2)
+/* 8036CECC 00368B2C 38 80 00 00 */ li r4, 0
+/* 8036CED0 00368B30 C0 22 A5 A8 */ lfs f1, lbl_80642BA8-_SDA2_BASE_(r2)
+/* 8036CED4 00368B34 38 00 00 01 */ li r0, 1
+/* 8036CED8 00368B38 D0 03 00 10 */ stfs f0, 0x10(r3)
+/* 8036CEDC 00368B3C D0 23 00 08 */ stfs f1, 8(r3)
+/* 8036CEE0 00368B40 D0 23 00 0C */ stfs f1, 0xc(r3)
+/* 8036CEE4 00368B44 D0 03 00 14 */ stfs f0, 0x14(r3)
+/* 8036CEE8 00368B48 D0 03 00 18 */ stfs f0, 0x18(r3)
+/* 8036CEEC 00368B4C 98 83 00 68 */ stb r4, 0x68(r3)
+/* 8036CEF0 00368B50 90 83 00 6C */ stw r4, 0x6c(r3)
+/* 8036CEF4 00368B54 90 83 00 70 */ stw r4, 0x70(r3)
+/* 8036CEF8 00368B58 90 03 00 20 */ stw r0, 0x20(r3)
+/* 8036CEFC 00368B5C D0 03 00 28 */ stfs f0, 0x28(r3)
+/* 8036CF00 00368B60 D0 23 00 24 */ stfs f1, 0x24(r3)
+/* 8036CF04 00368B64 D0 03 00 2C */ stfs f0, 0x2c(r3)
+/* 8036CF08 00368B68 D0 03 00 30 */ stfs f0, 0x30(r3)
+/* 8036CF0C 00368B6C D0 03 00 34 */ stfs f0, 0x34(r3)
+/* 8036CF10 00368B70 D0 23 00 38 */ stfs f1, 0x38(r3)
+/* 8036CF14 00368B74 D0 03 00 48 */ stfs f0, 0x48(r3)
+/* 8036CF18 00368B78 D0 03 00 58 */ stfs f0, 0x58(r3)
+/* 8036CF1C 00368B7C D0 23 00 3C */ stfs f1, 0x3c(r3)
+/* 8036CF20 00368B80 D0 03 00 4C */ stfs f0, 0x4c(r3)
+/* 8036CF24 00368B84 D0 03 00 5C */ stfs f0, 0x5c(r3)
+/* 8036CF28 00368B88 D0 23 00 40 */ stfs f1, 0x40(r3)
+/* 8036CF2C 00368B8C D0 03 00 50 */ stfs f0, 0x50(r3)
+/* 8036CF30 00368B90 D0 03 00 60 */ stfs f0, 0x60(r3)
+/* 8036CF34 00368B94 D0 23 00 44 */ stfs f1, 0x44(r3)
+/* 8036CF38 00368B98 D0 03 00 54 */ stfs f0, 0x54(r3)
+/* 8036CF3C 00368B9C D0 03 00 64 */ stfs f0, 0x64(r3)
+/* 8036CF40 00368BA0 4E 80 00 20 */ blr
+
+.global SetFxSend__Q44nw4r3snd6detail11BasicPlayerFQ34nw4r3snd6AuxBusf
+SetFxSend__Q44nw4r3snd6detail11BasicPlayerFQ34nw4r3snd6AuxBusf:
+/* 8036CF44 00368BA4 54 80 10 3A */ slwi r0, r4, 2
+/* 8036CF48 00368BA8 7C 63 02 14 */ add r3, r3, r0
+/* 8036CF4C 00368BAC D0 23 00 2C */ stfs f1, 0x2c(r3)
+/* 8036CF50 00368BB0 4E 80 00 20 */ blr
+
+.global GetFxSend__Q44nw4r3snd6detail11BasicPlayerCFQ34nw4r3snd6AuxBus
+GetFxSend__Q44nw4r3snd6detail11BasicPlayerCFQ34nw4r3snd6AuxBus:
+/* 8036CF54 00368BB4 54 80 10 3A */ slwi r0, r4, 2
+/* 8036CF58 00368BB8 7C 63 02 14 */ add r3, r3, r0
+/* 8036CF5C 00368BBC C0 23 00 2C */ lfs f1, 0x2c(r3)
+/* 8036CF60 00368BC0 4E 80 00 20 */ blr
+
+.global SetRemoteOutVolume__Q44nw4r3snd6detail11BasicPlayerFif
+SetRemoteOutVolume__Q44nw4r3snd6detail11BasicPlayerFif:
+/* 8036CF64 00368BC4 54 80 10 3A */ slwi r0, r4, 2
+/* 8036CF68 00368BC8 7C 63 02 14 */ add r3, r3, r0
+/* 8036CF6C 00368BCC D0 23 00 38 */ stfs f1, 0x38(r3)
+/* 8036CF70 00368BD0 4E 80 00 20 */ blr
+
+.global GetRemoteOutVolume__Q44nw4r3snd6detail11BasicPlayerCFi
+GetRemoteOutVolume__Q44nw4r3snd6detail11BasicPlayerCFi:
+/* 8036CF74 00368BD4 54 80 10 3A */ slwi r0, r4, 2
+/* 8036CF78 00368BD8 7C 63 02 14 */ add r3, r3, r0
+/* 8036CF7C 00368BDC C0 23 00 38 */ lfs f1, 0x38(r3)
+/* 8036CF80 00368BE0 4E 80 00 20 */ blr
+
+.global GetRemoteSend__Q44nw4r3snd6detail11BasicPlayerCFi
+GetRemoteSend__Q44nw4r3snd6detail11BasicPlayerCFi:
+/* 8036CF84 00368BE4 54 80 10 3A */ slwi r0, r4, 2
+/* 8036CF88 00368BE8 7C 63 02 14 */ add r3, r3, r0
+/* 8036CF8C 00368BEC C0 23 00 48 */ lfs f1, 0x48(r3)
+/* 8036CF90 00368BF0 4E 80 00 20 */ blr
+
+.global GetRemoteFxSend__Q44nw4r3snd6detail11BasicPlayerCFi
+GetRemoteFxSend__Q44nw4r3snd6detail11BasicPlayerCFi:
+/* 8036CF94 00368BF4 54 80 10 3A */ slwi r0, r4, 2
+/* 8036CF98 00368BF8 7C 63 02 14 */ add r3, r3, r0
+/* 8036CF9C 00368BFC C0 23 00 58 */ lfs f1, 0x58(r3)
+/* 8036CFA0 00368C00 4E 80 00 20 */ blr
+
+.global __dt__Q44nw4r3snd6detail11BasicPlayerFv
+__dt__Q44nw4r3snd6detail11BasicPlayerFv:
+/* 8036CFA4 00368C04 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8036CFA8 00368C08 7C 08 02 A6 */ mflr r0
+/* 8036CFAC 00368C0C 2C 03 00 00 */ cmpwi r3, 0
+/* 8036CFB0 00368C10 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8036CFB4 00368C14 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8036CFB8 00368C18 7C 7F 1B 78 */ mr r31, r3
+/* 8036CFBC 00368C1C 41 82 00 10 */ beq lbl_8036CFCC
+/* 8036CFC0 00368C20 2C 04 00 00 */ cmpwi r4, 0
+/* 8036CFC4 00368C24 40 81 00 08 */ ble lbl_8036CFCC
+/* 8036CFC8 00368C28 4B E6 DA F1 */ bl func_801DAAB8
+lbl_8036CFCC:
+/* 8036CFCC 00368C2C 7F E3 FB 78 */ mr r3, r31
+/* 8036CFD0 00368C30 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8036CFD4 00368C34 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8036CFD8 00368C38 7C 08 03 A6 */ mtlr r0
+/* 8036CFDC 00368C3C 38 21 00 10 */ addi r1, r1, 0x10
+/* 8036CFE0 00368C40 4E 80 00 20 */ blr