prime/asm/musyx/runtime/synth_vsamples.s

556 lines
26 KiB
ArmAsm
Raw Normal View History

2022-04-02 09:50:35 +00:00
.include "macros.inc"
2023-02-24 17:42:08 +00:00
.section .bss
.balign 8
.global vs
vs:
.skip 0x950
2022-07-14 05:48:03 +00:00
.section .text, "ax"
2022-04-02 09:50:35 +00:00
.global vsInit
vsInit:
/* 803A99D0 003A6930 3C 60 80 56 */ lis r3, vs@ha
2022-04-02 09:50:35 +00:00
/* 803A99D4 003A6934 38 80 00 00 */ li r4, 0
/* 803A99D8 003A6938 38 A3 E3 10 */ addi r5, r3, vs@l
2022-04-02 09:50:35 +00:00
/* 803A99DC 003A693C 38 00 00 02 */ li r0, 2
/* 803A99E0 003A6940 98 85 00 00 */ stb r4, 0(r5)
/* 803A99E4 003A6944 38 60 00 FF */ li r3, 0xff
/* 803A99E8 003A6948 7C 09 03 A6 */ mtctr r0
lbl_803A99EC:
/* 803A99EC 003A694C 98 65 09 08 */ stb r3, 0x908(r5)
/* 803A99F0 003A6950 98 65 09 09 */ stb r3, 0x909(r5)
/* 803A99F4 003A6954 98 65 09 0A */ stb r3, 0x90a(r5)
/* 803A99F8 003A6958 98 65 09 0B */ stb r3, 0x90b(r5)
/* 803A99FC 003A695C 98 65 09 0C */ stb r3, 0x90c(r5)
/* 803A9A00 003A6960 98 65 09 0D */ stb r3, 0x90d(r5)
/* 803A9A04 003A6964 98 65 09 0E */ stb r3, 0x90e(r5)
/* 803A9A08 003A6968 98 65 09 0F */ stb r3, 0x90f(r5)
/* 803A9A0C 003A696C 98 65 09 10 */ stb r3, 0x910(r5)
/* 803A9A10 003A6970 98 65 09 11 */ stb r3, 0x911(r5)
/* 803A9A14 003A6974 98 65 09 12 */ stb r3, 0x912(r5)
/* 803A9A18 003A6978 98 65 09 13 */ stb r3, 0x913(r5)
/* 803A9A1C 003A697C 98 65 09 14 */ stb r3, 0x914(r5)
/* 803A9A20 003A6980 98 65 09 15 */ stb r3, 0x915(r5)
/* 803A9A24 003A6984 98 65 09 16 */ stb r3, 0x916(r5)
/* 803A9A28 003A6988 98 65 09 17 */ stb r3, 0x917(r5)
/* 803A9A2C 003A698C 98 65 09 18 */ stb r3, 0x918(r5)
/* 803A9A30 003A6990 98 65 09 19 */ stb r3, 0x919(r5)
/* 803A9A34 003A6994 98 65 09 1A */ stb r3, 0x91a(r5)
/* 803A9A38 003A6998 98 65 09 1B */ stb r3, 0x91b(r5)
/* 803A9A3C 003A699C 98 65 09 1C */ stb r3, 0x91c(r5)
/* 803A9A40 003A69A0 98 65 09 1D */ stb r3, 0x91d(r5)
/* 803A9A44 003A69A4 98 65 09 1E */ stb r3, 0x91e(r5)
/* 803A9A48 003A69A8 98 65 09 1F */ stb r3, 0x91f(r5)
/* 803A9A4C 003A69AC 98 65 09 20 */ stb r3, 0x920(r5)
/* 803A9A50 003A69B0 98 65 09 21 */ stb r3, 0x921(r5)
/* 803A9A54 003A69B4 98 65 09 22 */ stb r3, 0x922(r5)
/* 803A9A58 003A69B8 98 65 09 23 */ stb r3, 0x923(r5)
/* 803A9A5C 003A69BC 98 65 09 24 */ stb r3, 0x924(r5)
/* 803A9A60 003A69C0 98 65 09 25 */ stb r3, 0x925(r5)
/* 803A9A64 003A69C4 98 65 09 26 */ stb r3, 0x926(r5)
/* 803A9A68 003A69C8 98 65 09 27 */ stb r3, 0x927(r5)
/* 803A9A6C 003A69CC 38 A5 00 20 */ addi r5, r5, 0x20
/* 803A9A70 003A69D0 42 00 FF 7C */ bdnz lbl_803A99EC
/* 803A9A74 003A69D4 3C 60 80 56 */ lis r3, vs@ha
2022-04-02 09:50:35 +00:00
/* 803A9A78 003A69D8 38 00 00 00 */ li r0, 0
/* 803A9A7C 003A69DC 38 63 E3 10 */ addi r3, r3, vs@l
2022-04-02 09:50:35 +00:00
/* 803A9A80 003A69E0 B0 03 09 48 */ sth r0, 0x948(r3)
/* 803A9A84 003A69E4 90 03 09 4C */ stw r0, 0x94c(r3)
2022-07-14 05:48:03 +00:00
/* 803A9A88 003A69E8 4E 80 00 20 */ blr
2022-04-02 09:50:35 +00:00
.global vsSampleStartNotify
vsSampleStartNotify:
2022-04-02 09:50:35 +00:00
/* 803A9A8C 003A69EC 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 803A9A90 003A69F0 7C 08 02 A6 */ mflr r0
/* 803A9A94 003A69F4 39 20 00 00 */ li r9, 0
/* 803A9A98 003A69F8 38 A0 00 00 */ li r5, 0
/* 803A9A9C 003A69FC 90 01 00 24 */ stw r0, 0x24(r1)
/* 803A9AA0 003A6A00 38 80 00 FF */ li r4, 0xff
/* 803A9AA4 003A6A04 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 803A9AA8 003A6A08 93 C1 00 18 */ stw r30, 0x18(r1)
/* 803A9AAC 003A6A0C 93 A1 00 14 */ stw r29, 0x14(r1)
/* 803A9AB0 003A6A10 7C 7D 1B 78 */ mr r29, r3
/* 803A9AB4 003A6A14 3C 60 80 56 */ lis r3, vs@ha
2022-04-02 09:50:35 +00:00
/* 803A9AB8 003A6A18 93 81 00 10 */ stw r28, 0x10(r1)
/* 803A9ABC 003A6A1C 38 E3 E3 10 */ addi r7, r3, vs@l
2022-04-02 09:50:35 +00:00
/* 803A9AC0 003A6A20 57 A6 06 3E */ clrlwi r6, r29, 0x18
/* 803A9AC4 003A6A24 48 00 00 44 */ b lbl_803A9B08
lbl_803A9AC8:
/* 803A9AC8 003A6A28 55 20 06 3E */ clrlwi r0, r9, 0x18
/* 803A9ACC 003A6A2C 1C 00 00 24 */ mulli r0, r0, 0x24
/* 803A9AD0 003A6A30 7C 67 02 14 */ add r3, r7, r0
/* 803A9AD4 003A6A34 39 03 00 08 */ addi r8, r3, 8
/* 803A9AD8 003A6A38 88 03 00 08 */ lbz r0, 8(r3)
/* 803A9ADC 003A6A3C 28 00 00 00 */ cmplwi r0, 0
/* 803A9AE0 003A6A40 41 82 00 24 */ beq lbl_803A9B04
/* 803A9AE4 003A6A44 38 63 00 0B */ addi r3, r3, 0xb
/* 803A9AE8 003A6A48 88 03 00 00 */ lbz r0, 0(r3)
/* 803A9AEC 003A6A4C 7C 00 30 40 */ cmplw r0, r6
/* 803A9AF0 003A6A50 40 82 00 14 */ bne lbl_803A9B04
/* 803A9AF4 003A6A54 98 A8 00 00 */ stb r5, 0(r8)
/* 803A9AF8 003A6A58 88 03 00 00 */ lbz r0, 0(r3)
/* 803A9AFC 003A6A5C 7C 67 02 14 */ add r3, r7, r0
/* 803A9B00 003A6A60 98 83 09 08 */ stb r4, 0x908(r3)
lbl_803A9B04:
/* 803A9B04 003A6A64 39 29 00 01 */ addi r9, r9, 1
lbl_803A9B08:
/* 803A9B08 003A6A68 89 07 00 00 */ lbz r8, 0(r7)
/* 803A9B0C 003A6A6C 55 20 06 3E */ clrlwi r0, r9, 0x18
/* 803A9B10 003A6A70 7C 00 40 40 */ cmplw r0, r8
/* 803A9B14 003A6A74 41 80 FF B4 */ blt lbl_803A9AC8
/* 803A9B18 003A6A78 3C 60 80 56 */ lis r3, vs@ha
2022-04-02 09:50:35 +00:00
/* 803A9B1C 003A6A7C 3B E0 00 00 */ li r31, 0
/* 803A9B20 003A6A80 38 83 E3 10 */ addi r4, r3, vs@l
2022-04-02 09:50:35 +00:00
/* 803A9B24 003A6A84 48 00 00 40 */ b lbl_803A9B64
lbl_803A9B28:
/* 803A9B28 003A6A88 57 E0 06 3E */ clrlwi r0, r31, 0x18
/* 803A9B2C 003A6A8C 1C A0 00 24 */ mulli r5, r0, 0x24
/* 803A9B30 003A6A90 7C 64 2A 14 */ add r3, r4, r5
/* 803A9B34 003A6A94 88 03 00 08 */ lbz r0, 8(r3)
/* 803A9B38 003A6A98 28 00 00 00 */ cmplwi r0, 0
/* 803A9B3C 003A6A9C 40 82 00 24 */ bne lbl_803A9B60
/* 803A9B40 003A6AA0 3C 60 80 56 */ lis r3, vs@ha
2022-04-02 09:50:35 +00:00
/* 803A9B44 003A6AA4 38 80 00 01 */ li r4, 1
/* 803A9B48 003A6AA8 38 63 E3 10 */ addi r3, r3, vs@l
2022-04-02 09:50:35 +00:00
/* 803A9B4C 003A6AAC 38 00 00 00 */ li r0, 0
/* 803A9B50 003A6AB0 7C 63 2A 14 */ add r3, r3, r5
/* 803A9B54 003A6AB4 98 83 00 08 */ stb r4, 8(r3)
/* 803A9B58 003A6AB8 90 03 00 0C */ stw r0, 0xc(r3)
/* 803A9B5C 003A6ABC 48 00 00 18 */ b lbl_803A9B74
lbl_803A9B60:
/* 803A9B60 003A6AC0 3B FF 00 01 */ addi r31, r31, 1
lbl_803A9B64:
/* 803A9B64 003A6AC4 57 E0 06 3E */ clrlwi r0, r31, 0x18
/* 803A9B68 003A6AC8 7C 00 40 40 */ cmplw r0, r8
/* 803A9B6C 003A6ACC 41 80 FF BC */ blt lbl_803A9B28
/* 803A9B70 003A6AD0 3B E0 00 FF */ li r31, 0xff
lbl_803A9B74:
/* 803A9B74 003A6AD4 3C 60 80 56 */ lis r3, vs@ha
2022-04-02 09:50:35 +00:00
/* 803A9B78 003A6AD8 57 E0 06 3E */ clrlwi r0, r31, 0x18
/* 803A9B7C 003A6ADC 38 63 E3 10 */ addi r3, r3, vs@l
2022-04-02 09:50:35 +00:00
/* 803A9B80 003A6AE0 57 BE 06 3E */ clrlwi r30, r29, 0x18
/* 803A9B84 003A6AE4 7C 63 F2 14 */ add r3, r3, r30
/* 803A9B88 003A6AE8 28 00 00 FF */ cmplwi r0, 0xff
/* 803A9B8C 003A6AEC 9F E3 09 08 */ stbu r31, 0x908(r3)
/* 803A9B90 003A6AF0 41 82 01 10 */ beq lbl_803A9CA0
/* 803A9B94 003A6AF4 88 63 00 00 */ lbz r3, 0(r3)
/* 803A9B98 003A6AF8 38 80 00 00 */ li r4, 0
/* 803A9B9C 003A6AFC 48 00 AF 71 */ bl aramGetStreamBufferAddress
/* 803A9BA0 003A6B00 3C 80 80 56 */ lis r4, vs@ha
2022-04-02 09:50:35 +00:00
/* 803A9BA4 003A6B04 7C 60 1B 78 */ mr r0, r3
/* 803A9BA8 003A6B08 38 A4 E3 10 */ addi r5, r4, vs@l
2022-04-02 09:50:35 +00:00
/* 803A9BAC 003A6B0C 7F C3 F3 78 */ mr r3, r30
/* 803A9BB0 003A6B10 80 A5 00 04 */ lwz r5, 4(r5)
/* 803A9BB4 003A6B14 7C 04 03 78 */ mr r4, r0
/* 803A9BB8 003A6B18 48 00 99 D1 */ bl hwSetVirtualSampleLoopBuffer
/* 803A9BBC 003A6B1C 7F C3 F3 78 */ mr r3, r30
/* 803A9BC0 003A6B20 48 00 9A 11 */ bl hwGetSampleID
/* 803A9BC4 003A6B24 57 E0 06 3E */ clrlwi r0, r31, 0x18
/* 803A9BC8 003A6B28 3C 80 80 56 */ lis r4, vs@ha
2022-04-02 09:50:35 +00:00
/* 803A9BCC 003A6B2C 1F E0 00 24 */ mulli r31, r0, 0x24
/* 803A9BD0 003A6B30 38 C4 E3 10 */ addi r6, r4, vs@l
2022-04-02 09:50:35 +00:00
/* 803A9BD4 003A6B34 7C 86 FA 14 */ add r4, r6, r31
/* 803A9BD8 003A6B38 B0 64 00 18 */ sth r3, 0x18(r4)
/* 803A9BDC 003A6B3C 88 E6 00 00 */ lbz r7, 0(r6)
lbl_803A9BE0:
/* 803A9BE0 003A6B40 A0 A6 09 48 */ lhz r5, 0x948(r6)
/* 803A9BE4 003A6B44 38 60 00 00 */ li r3, 0
/* 803A9BE8 003A6B48 38 05 00 01 */ addi r0, r5, 1
/* 803A9BEC 003A6B4C B0 06 09 48 */ sth r0, 0x948(r6)
/* 803A9BF0 003A6B50 48 00 00 2C */ b lbl_803A9C1C
lbl_803A9BF4:
/* 803A9BF4 003A6B54 54 60 06 3E */ clrlwi r0, r3, 0x18
/* 803A9BF8 003A6B58 1C 00 00 24 */ mulli r0, r0, 0x24
/* 803A9BFC 003A6B5C 7C 86 02 14 */ add r4, r6, r0
/* 803A9C00 003A6B60 88 04 00 08 */ lbz r0, 8(r4)
/* 803A9C04 003A6B64 28 00 00 00 */ cmplwi r0, 0
/* 803A9C08 003A6B68 41 82 00 10 */ beq lbl_803A9C18
/* 803A9C0C 003A6B6C A0 04 00 1A */ lhz r0, 0x1a(r4)
/* 803A9C10 003A6B70 7C 00 28 40 */ cmplw r0, r5
/* 803A9C14 003A6B74 41 82 00 14 */ beq lbl_803A9C28
lbl_803A9C18:
/* 803A9C18 003A6B78 38 63 00 01 */ addi r3, r3, 1
lbl_803A9C1C:
/* 803A9C1C 003A6B7C 54 60 06 3E */ clrlwi r0, r3, 0x18
/* 803A9C20 003A6B80 7C 00 38 40 */ cmplw r0, r7
/* 803A9C24 003A6B84 41 80 FF D0 */ blt lbl_803A9BF4
lbl_803A9C28:
/* 803A9C28 003A6B88 54 60 06 3E */ clrlwi r0, r3, 0x18
/* 803A9C2C 003A6B8C 7C 00 38 40 */ cmplw r0, r7
/* 803A9C30 003A6B90 40 82 FF B0 */ bne lbl_803A9BE0
/* 803A9C34 003A6B94 3C 80 80 56 */ lis r4, vs@ha
2022-04-02 09:50:35 +00:00
/* 803A9C38 003A6B98 7F C3 F3 78 */ mr r3, r30
/* 803A9C3C 003A6B9C 38 04 E3 10 */ addi r0, r4, vs@l
2022-04-02 09:50:35 +00:00
/* 803A9C40 003A6BA0 7F 80 FA 14 */ add r28, r0, r31
/* 803A9C44 003A6BA4 B4 BC 00 1A */ sthu r5, 0x1a(r28)
/* 803A9C48 003A6BA8 48 00 99 75 */ bl hwGetSampleType
/* 803A9C4C 003A6BAC 3C 80 80 56 */ lis r4, vs@ha
/* 803A9C50 003A6BB0 38 A4 E3 10 */ addi r5, r4, vs@l
2022-04-02 09:50:35 +00:00
/* 803A9C54 003A6BB4 7C 85 FA 14 */ add r4, r5, r31
/* 803A9C58 003A6BB8 98 64 00 0A */ stb r3, 0xa(r4)
/* 803A9C5C 003A6BBC 9B A4 00 0B */ stb r29, 0xb(r4)
/* 803A9C60 003A6BC0 81 85 09 4C */ lwz r12, 0x94c(r5)
/* 803A9C64 003A6BC4 28 0C 00 00 */ cmplwi r12, 0
/* 803A9C68 003A6BC8 41 82 00 24 */ beq lbl_803A9C8C
/* 803A9C6C 003A6BCC 38 84 00 18 */ addi r4, r4, 0x18
/* 803A9C70 003A6BD0 38 60 00 00 */ li r3, 0
/* 803A9C74 003A6BD4 7D 89 03 A6 */ mtctr r12
2022-07-14 05:48:03 +00:00
/* 803A9C78 003A6BD8 4E 80 04 21 */ bctrl
2022-04-02 09:50:35 +00:00
/* 803A9C7C 003A6BDC A0 1C 00 00 */ lhz r0, 0(r28)
/* 803A9C80 003A6BE0 7F A3 EB 78 */ mr r3, r29
/* 803A9C84 003A6BE4 50 03 42 2E */ rlwimi r3, r0, 8, 8, 0x17
/* 803A9C88 003A6BE8 48 00 00 2C */ b lbl_803A9CB4
lbl_803A9C8C:
/* 803A9C8C 003A6BEC 7F C3 F3 78 */ mr r3, r30
/* 803A9C90 003A6BF0 38 80 00 00 */ li r4, 0
/* 803A9C94 003A6BF4 38 A0 00 00 */ li r5, 0
/* 803A9C98 003A6BF8 48 00 98 F1 */ bl hwSetVirtualSampleLoopBuffer
/* 803A9C9C 003A6BFC 48 00 00 14 */ b lbl_803A9CB0
lbl_803A9CA0:
/* 803A9CA0 003A6C00 7F C3 F3 78 */ mr r3, r30
/* 803A9CA4 003A6C04 38 80 00 00 */ li r4, 0
/* 803A9CA8 003A6C08 38 A0 00 00 */ li r5, 0
/* 803A9CAC 003A6C0C 48 00 98 DD */ bl hwSetVirtualSampleLoopBuffer
lbl_803A9CB0:
/* 803A9CB0 003A6C10 38 60 FF FF */ li r3, -1
lbl_803A9CB4:
/* 803A9CB4 003A6C14 80 01 00 24 */ lwz r0, 0x24(r1)
/* 803A9CB8 003A6C18 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 803A9CBC 003A6C1C 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 803A9CC0 003A6C20 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 803A9CC4 003A6C24 83 81 00 10 */ lwz r28, 0x10(r1)
/* 803A9CC8 003A6C28 7C 08 03 A6 */ mtlr r0
/* 803A9CCC 003A6C2C 38 21 00 20 */ addi r1, r1, 0x20
2022-07-14 05:48:03 +00:00
/* 803A9CD0 003A6C30 4E 80 00 20 */ blr
2022-04-02 09:50:35 +00:00
.global vsSampleEndNotify
vsSampleEndNotify:
/* 803A9CD4 003A6C34 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 803A9CD8 003A6C38 7C 08 02 A6 */ mflr r0
/* 803A9CDC 003A6C3C 90 01 00 14 */ stw r0, 0x14(r1)
/* 803A9CE0 003A6C40 3C 03 00 01 */ addis r0, r3, 1
/* 803A9CE4 003A6C44 28 00 FF FF */ cmplwi r0, 0xffff
/* 803A9CE8 003A6C48 93 E1 00 0C */ stw r31, 0xc(r1)
/* 803A9CEC 003A6C4C 93 C1 00 08 */ stw r30, 8(r1)
/* 803A9CF0 003A6C50 41 82 00 74 */ beq lbl_803A9D64
/* 803A9CF4 003A6C54 3C 80 80 56 */ lis r4, vs@ha
2022-04-02 09:50:35 +00:00
/* 803A9CF8 003A6C58 54 60 06 3E */ clrlwi r0, r3, 0x18
/* 803A9CFC 003A6C5C 38 A4 E3 10 */ addi r5, r4, vs@l
2022-04-02 09:50:35 +00:00
/* 803A9D00 003A6C60 3B C5 09 08 */ addi r30, r5, 0x908
/* 803A9D04 003A6C64 7C 1E 00 AE */ lbzx r0, r30, r0
/* 803A9D08 003A6C68 28 00 00 FF */ cmplwi r0, 0xff
/* 803A9D0C 003A6C6C 41 82 00 58 */ beq lbl_803A9D64
/* 803A9D10 003A6C70 1F E0 00 24 */ mulli r31, r0, 0x24
/* 803A9D14 003A6C74 54 60 C4 3E */ rlwinm r0, r3, 0x18, 0x10, 0x1f
/* 803A9D18 003A6C78 7C 85 FA 14 */ add r4, r5, r31
/* 803A9D1C 003A6C7C A0 64 00 1A */ lhz r3, 0x1a(r4)
/* 803A9D20 003A6C80 7C 03 00 40 */ cmplw r3, r0
/* 803A9D24 003A6C84 40 82 00 40 */ bne lbl_803A9D64
/* 803A9D28 003A6C88 81 85 09 4C */ lwz r12, 0x94c(r5)
/* 803A9D2C 003A6C8C 28 0C 00 00 */ cmplwi r12, 0
/* 803A9D30 003A6C90 41 82 00 14 */ beq lbl_803A9D44
/* 803A9D34 003A6C94 38 84 00 18 */ addi r4, r4, 0x18
/* 803A9D38 003A6C98 38 60 00 02 */ li r3, 2
/* 803A9D3C 003A6C9C 7D 89 03 A6 */ mtctr r12
2022-07-14 05:48:03 +00:00
/* 803A9D40 003A6CA0 4E 80 04 21 */ bctrl
2022-04-02 09:50:35 +00:00
lbl_803A9D44:
/* 803A9D44 003A6CA4 3C 60 80 56 */ lis r3, vs@ha
2022-04-02 09:50:35 +00:00
/* 803A9D48 003A6CA8 38 A0 00 00 */ li r5, 0
/* 803A9D4C 003A6CAC 38 03 E3 10 */ addi r0, r3, vs@l
2022-04-02 09:50:35 +00:00
/* 803A9D50 003A6CB0 38 60 00 FF */ li r3, 0xff
/* 803A9D54 003A6CB4 7C 80 FA 14 */ add r4, r0, r31
/* 803A9D58 003A6CB8 98 A4 00 08 */ stb r5, 8(r4)
/* 803A9D5C 003A6CBC 88 04 00 0B */ lbz r0, 0xb(r4)
/* 803A9D60 003A6CC0 7C 7E 01 AE */ stbx r3, r30, r0
lbl_803A9D64:
/* 803A9D64 003A6CC4 80 01 00 14 */ lwz r0, 0x14(r1)
/* 803A9D68 003A6CC8 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 803A9D6C 003A6CCC 83 C1 00 08 */ lwz r30, 8(r1)
/* 803A9D70 003A6CD0 7C 08 03 A6 */ mtlr r0
/* 803A9D74 003A6CD4 38 21 00 10 */ addi r1, r1, 0x10
2022-07-14 05:48:03 +00:00
/* 803A9D78 003A6CD8 4E 80 00 20 */ blr
.global vsUpdateBuffer
vsUpdateBuffer:
/* 803A9D7C 003A6CDC 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 803A9D80 003A6CE0 7C 08 02 A6 */ mflr r0
/* 803A9D84 003A6CE4 90 01 00 14 */ stw r0, 0x14(r1)
/* 803A9D88 003A6CE8 93 E1 00 0C */ stw r31, 0xc(r1)
/* 803A9D8C 003A6CEC 7C 7F 1B 78 */ mr r31, r3
/* 803A9D90 003A6CF0 93 C1 00 08 */ stw r30, 8(r1)
/* 803A9D94 003A6CF4 81 03 00 04 */ lwz r8, 4(r3)
/* 803A9D98 003A6CF8 7C 08 20 40 */ cmplw r8, r4
/* 803A9D9C 003A6CFC 41 82 01 C0 */ beq lbl_803A9F5C
/* 803A9DA0 003A6D00 40 80 00 98 */ bge lbl_803A9E38
/* 803A9DA4 003A6D04 88 1F 00 02 */ lbz r0, 2(r31)
/* 803A9DA8 003A6D08 2C 00 00 05 */ cmpwi r0, 5
/* 803A9DAC 003A6D0C 41 82 00 08 */ beq lbl_803A9DB4
/* 803A9DB0 003A6D10 48 00 01 AC */ b lbl_803A9F5C
lbl_803A9DB4:
/* 803A9DB4 003A6D14 3C A0 24 92 */ lis r5, 0x24924925@ha
/* 803A9DB8 003A6D18 38 00 00 00 */ li r0, 0
/* 803A9DBC 003A6D1C 38 A5 49 25 */ addi r5, r5, 0x24924925@l
/* 803A9DC0 003A6D20 3C 60 80 56 */ lis r3, vs@ha
/* 803A9DC4 003A6D24 7C E5 40 16 */ mulhwu r7, r5, r8
/* 803A9DC8 003A6D28 38 A3 E3 10 */ addi r5, r3, vs@l
/* 803A9DCC 003A6D2C 38 60 00 01 */ li r3, 1
/* 803A9DD0 003A6D30 7C C7 40 50 */ subf r6, r7, r8
/* 803A9DD4 003A6D34 54 C6 F8 7E */ srwi r6, r6, 1
/* 803A9DD8 003A6D38 7C C6 3A 14 */ add r6, r6, r7
/* 803A9DDC 003A6D3C 54 C6 00 38 */ rlwinm r6, r6, 0, 0, 0x1c
/* 803A9DE0 003A6D40 90 DF 00 14 */ stw r6, 0x14(r31)
/* 803A9DE4 003A6D44 80 DF 00 04 */ lwz r6, 4(r31)
/* 803A9DE8 003A6D48 7C C6 20 50 */ subf r6, r6, r4
/* 803A9DEC 003A6D4C 38 9F 00 10 */ addi r4, r31, 0x10
/* 803A9DF0 003A6D50 90 DF 00 18 */ stw r6, 0x18(r31)
/* 803A9DF4 003A6D54 90 1F 00 1C */ stw r0, 0x1c(r31)
/* 803A9DF8 003A6D58 90 1F 00 20 */ stw r0, 0x20(r31)
/* 803A9DFC 003A6D5C 81 85 09 4C */ lwz r12, 0x94c(r5)
/* 803A9E00 003A6D60 7D 89 03 A6 */ mtctr r12
/* 803A9E04 003A6D64 4E 80 04 21 */ bctrl
/* 803A9E08 003A6D68 28 03 00 00 */ cmplwi r3, 0
/* 803A9E0C 003A6D6C 41 82 01 50 */ beq lbl_803A9F5C
/* 803A9E10 003A6D70 3C 80 80 56 */ lis r4, vs@ha
/* 803A9E14 003A6D74 80 1F 00 04 */ lwz r0, 4(r31)
/* 803A9E18 003A6D78 38 84 E3 10 */ addi r4, r4, vs@l
/* 803A9E1C 003A6D7C 80 84 00 04 */ lwz r4, 4(r4)
/* 803A9E20 003A6D80 7C 60 1A 14 */ add r3, r0, r3
/* 803A9E24 003A6D84 7C 03 23 96 */ divwu r0, r3, r4
/* 803A9E28 003A6D88 7C 00 21 D6 */ mullw r0, r0, r4
/* 803A9E2C 003A6D8C 7C 00 18 50 */ subf r0, r0, r3
/* 803A9E30 003A6D90 90 1F 00 04 */ stw r0, 4(r31)
/* 803A9E34 003A6D94 48 00 01 28 */ b lbl_803A9F5C
lbl_803A9E38:
/* 803A9E38 003A6D98 28 04 00 00 */ cmplwi r4, 0
/* 803A9E3C 003A6D9C 40 82 00 94 */ bne lbl_803A9ED0
/* 803A9E40 003A6DA0 88 1F 00 02 */ lbz r0, 2(r31)
/* 803A9E44 003A6DA4 2C 00 00 05 */ cmpwi r0, 5
/* 803A9E48 003A6DA8 41 82 00 08 */ beq lbl_803A9E50
/* 803A9E4C 003A6DAC 48 00 01 10 */ b lbl_803A9F5C
lbl_803A9E50:
/* 803A9E50 003A6DB0 3C 80 24 92 */ lis r4, 0x24924925@ha
/* 803A9E54 003A6DB4 3C 60 80 56 */ lis r3, vs@ha
/* 803A9E58 003A6DB8 38 84 49 25 */ addi r4, r4, 0x24924925@l
/* 803A9E5C 003A6DBC 38 00 00 00 */ li r0, 0
/* 803A9E60 003A6DC0 7C C4 40 16 */ mulhwu r6, r4, r8
/* 803A9E64 003A6DC4 3B C3 E3 10 */ addi r30, r3, vs@l
/* 803A9E68 003A6DC8 38 9F 00 10 */ addi r4, r31, 0x10
/* 803A9E6C 003A6DCC 38 60 00 01 */ li r3, 1
/* 803A9E70 003A6DD0 7C A6 40 50 */ subf r5, r6, r8
/* 803A9E74 003A6DD4 54 A5 F8 7E */ srwi r5, r5, 1
/* 803A9E78 003A6DD8 7C A5 32 14 */ add r5, r5, r6
/* 803A9E7C 003A6DDC 54 A5 00 38 */ rlwinm r5, r5, 0, 0, 0x1c
/* 803A9E80 003A6DE0 90 BF 00 14 */ stw r5, 0x14(r31)
/* 803A9E84 003A6DE4 80 DF 00 04 */ lwz r6, 4(r31)
/* 803A9E88 003A6DE8 80 BE 00 04 */ lwz r5, 4(r30)
/* 803A9E8C 003A6DEC 7C A6 28 50 */ subf r5, r6, r5
/* 803A9E90 003A6DF0 90 BF 00 18 */ stw r5, 0x18(r31)
/* 803A9E94 003A6DF4 90 1F 00 1C */ stw r0, 0x1c(r31)
/* 803A9E98 003A6DF8 90 1F 00 20 */ stw r0, 0x20(r31)
/* 803A9E9C 003A6DFC 81 9E 09 4C */ lwz r12, 0x94c(r30)
/* 803A9EA0 003A6E00 7D 89 03 A6 */ mtctr r12
/* 803A9EA4 003A6E04 4E 80 04 21 */ bctrl
/* 803A9EA8 003A6E08 28 03 00 00 */ cmplwi r3, 0
/* 803A9EAC 003A6E0C 41 82 00 B0 */ beq lbl_803A9F5C
/* 803A9EB0 003A6E10 80 1F 00 04 */ lwz r0, 4(r31)
/* 803A9EB4 003A6E14 80 9E 00 04 */ lwz r4, 4(r30)
/* 803A9EB8 003A6E18 7C 60 1A 14 */ add r3, r0, r3
/* 803A9EBC 003A6E1C 7C 03 23 96 */ divwu r0, r3, r4
/* 803A9EC0 003A6E20 7C 00 21 D6 */ mullw r0, r0, r4
/* 803A9EC4 003A6E24 7C 00 18 50 */ subf r0, r0, r3
/* 803A9EC8 003A6E28 90 1F 00 04 */ stw r0, 4(r31)
/* 803A9ECC 003A6E2C 48 00 00 90 */ b lbl_803A9F5C
lbl_803A9ED0:
/* 803A9ED0 003A6E30 88 1F 00 02 */ lbz r0, 2(r31)
/* 803A9ED4 003A6E34 2C 00 00 05 */ cmpwi r0, 5
/* 803A9ED8 003A6E38 41 82 00 08 */ beq lbl_803A9EE0
/* 803A9EDC 003A6E3C 48 00 00 80 */ b lbl_803A9F5C
lbl_803A9EE0:
/* 803A9EE0 003A6E40 3C A0 24 92 */ lis r5, 0x24924925@ha
/* 803A9EE4 003A6E44 3C 60 80 56 */ lis r3, vs@ha
/* 803A9EE8 003A6E48 38 A5 49 25 */ addi r5, r5, 0x24924925@l
/* 803A9EEC 003A6E4C 38 00 00 00 */ li r0, 0
/* 803A9EF0 003A6E50 7C C5 40 16 */ mulhwu r6, r5, r8
/* 803A9EF4 003A6E54 3B C3 E3 10 */ addi r30, r3, vs@l
/* 803A9EF8 003A6E58 38 60 00 01 */ li r3, 1
/* 803A9EFC 003A6E5C 7C A6 40 50 */ subf r5, r6, r8
/* 803A9F00 003A6E60 54 A5 F8 7E */ srwi r5, r5, 1
/* 803A9F04 003A6E64 7C A5 32 14 */ add r5, r5, r6
/* 803A9F08 003A6E68 54 A5 00 38 */ rlwinm r5, r5, 0, 0, 0x1c
/* 803A9F0C 003A6E6C 90 BF 00 14 */ stw r5, 0x14(r31)
/* 803A9F10 003A6E70 80 DF 00 04 */ lwz r6, 4(r31)
/* 803A9F14 003A6E74 80 BE 00 04 */ lwz r5, 4(r30)
/* 803A9F18 003A6E78 7C A6 28 50 */ subf r5, r6, r5
/* 803A9F1C 003A6E7C 90 BF 00 18 */ stw r5, 0x18(r31)
/* 803A9F20 003A6E80 90 1F 00 1C */ stw r0, 0x1c(r31)
/* 803A9F24 003A6E84 90 9F 00 20 */ stw r4, 0x20(r31)
/* 803A9F28 003A6E88 38 9F 00 10 */ addi r4, r31, 0x10
/* 803A9F2C 003A6E8C 81 9E 09 4C */ lwz r12, 0x94c(r30)
/* 803A9F30 003A6E90 7D 89 03 A6 */ mtctr r12
/* 803A9F34 003A6E94 4E 80 04 21 */ bctrl
/* 803A9F38 003A6E98 28 03 00 00 */ cmplwi r3, 0
/* 803A9F3C 003A6E9C 41 82 00 20 */ beq lbl_803A9F5C
/* 803A9F40 003A6EA0 80 1F 00 04 */ lwz r0, 4(r31)
/* 803A9F44 003A6EA4 80 9E 00 04 */ lwz r4, 4(r30)
/* 803A9F48 003A6EA8 7C 60 1A 14 */ add r3, r0, r3
/* 803A9F4C 003A6EAC 7C 03 23 96 */ divwu r0, r3, r4
/* 803A9F50 003A6EB0 7C 00 21 D6 */ mullw r0, r0, r4
/* 803A9F54 003A6EB4 7C 00 18 50 */ subf r0, r0, r3
/* 803A9F58 003A6EB8 90 1F 00 04 */ stw r0, 4(r31)
lbl_803A9F5C:
/* 803A9F5C 003A6EBC 80 01 00 14 */ lwz r0, 0x14(r1)
/* 803A9F60 003A6EC0 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 803A9F64 003A6EC4 83 C1 00 08 */ lwz r30, 8(r1)
/* 803A9F68 003A6EC8 7C 08 03 A6 */ mtlr r0
/* 803A9F6C 003A6ECC 38 21 00 10 */ addi r1, r1, 0x10
/* 803A9F70 003A6ED0 4E 80 00 20 */ blr
.global vsSampleUpdates
vsSampleUpdates:
/* 803A9F74 003A6ED4 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 803A9F78 003A6ED8 7C 08 02 A6 */ mflr r0
/* 803A9F7C 003A6EDC 90 01 00 24 */ stw r0, 0x24(r1)
/* 803A9F80 003A6EE0 39 61 00 20 */ addi r11, r1, 0x20
/* 803A9F84 003A6EE4 4B FD FA F5 */ bl _savegpr_26
/* 803A9F88 003A6EE8 3C 60 80 56 */ lis r3, vs@ha
/* 803A9F8C 003A6EEC 3B E3 E3 10 */ addi r31, r3, vs@l
/* 803A9F90 003A6EF0 80 1F 09 4C */ lwz r0, 0x94c(r31)
/* 803A9F94 003A6EF4 28 00 00 00 */ cmplwi r0, 0
/* 803A9F98 003A6EF8 41 82 01 D4 */ beq lbl_803AA16C
/* 803A9F9C 003A6EFC 3B A0 00 00 */ li r29, 0
/* 803A9FA0 003A6F00 7F FE FB 78 */ mr r30, r31
lbl_803A9FA4:
/* 803A9FA4 003A6F04 88 1E 09 08 */ lbz r0, 0x908(r30)
/* 803A9FA8 003A6F08 28 00 00 FF */ cmplwi r0, 0xff
/* 803A9FAC 003A6F0C 41 82 01 B0 */ beq lbl_803AA15C
/* 803A9FB0 003A6F10 7F A3 EB 78 */ mr r3, r29
/* 803A9FB4 003A6F14 48 00 95 F5 */ bl hwGetVirtualSampleState
/* 803A9FB8 003A6F18 28 03 00 00 */ cmplwi r3, 0
/* 803A9FBC 003A6F1C 41 82 01 A0 */ beq lbl_803AA15C
/* 803A9FC0 003A6F20 88 9E 09 08 */ lbz r4, 0x908(r30)
/* 803A9FC4 003A6F24 3C 60 80 56 */ lis r3, vs@ha
/* 803A9FC8 003A6F28 38 03 E3 10 */ addi r0, r3, vs@l
/* 803A9FCC 003A6F2C 7F A3 EB 78 */ mr r3, r29
/* 803A9FD0 003A6F30 1C 84 00 24 */ mulli r4, r4, 0x24
/* 803A9FD4 003A6F34 7C 80 22 14 */ add r4, r0, r4
/* 803A9FD8 003A6F38 3B 64 00 08 */ addi r27, r4, 8
/* 803A9FDC 003A6F3C 48 00 9B 95 */ bl hwGetPos
/* 803A9FE0 003A6F40 88 1B 00 02 */ lbz r0, 2(r27)
/* 803A9FE4 003A6F44 7C 7C 1B 78 */ mr r28, r3
/* 803A9FE8 003A6F48 28 00 00 05 */ cmplwi r0, 5
/* 803A9FEC 003A6F4C 40 82 00 28 */ bne lbl_803AA014
/* 803A9FF0 003A6F50 3C 60 24 92 */ lis r3, 0x24924925@ha
/* 803A9FF4 003A6F54 38 03 49 25 */ addi r0, r3, 0x24924925@l
/* 803A9FF8 003A6F58 7C 60 E0 16 */ mulhwu r3, r0, r28
/* 803A9FFC 003A6F5C 7C 03 E0 50 */ subf r0, r3, r28
/* 803AA000 003A6F60 54 00 F8 7E */ srwi r0, r0, 1
/* 803AA004 003A6F64 7C 00 1A 14 */ add r0, r0, r3
/* 803AA008 003A6F68 54 00 E8 FE */ srwi r0, r0, 3
/* 803AA00C 003A6F6C 1F 40 00 0E */ mulli r26, r0, 0xe
/* 803AA010 003A6F70 48 00 00 08 */ b lbl_803AA018
lbl_803AA014:
/* 803AA014 003A6F74 7F 9A E3 78 */ mr r26, r28
lbl_803AA018:
/* 803AA018 003A6F78 88 1B 00 00 */ lbz r0, 0(r27)
/* 803AA01C 003A6F7C 2C 00 00 01 */ cmpwi r0, 1
/* 803AA020 003A6F80 41 82 00 14 */ beq lbl_803AA034
/* 803AA024 003A6F84 41 80 01 38 */ blt lbl_803AA15C
/* 803AA028 003A6F88 2C 00 00 04 */ cmpwi r0, 4
/* 803AA02C 003A6F8C 40 80 01 30 */ bge lbl_803AA15C
/* 803AA030 003A6F90 48 00 00 14 */ b lbl_803AA044
lbl_803AA034:
/* 803AA034 003A6F94 7F 63 DB 78 */ mr r3, r27
/* 803AA038 003A6F98 7F 44 D3 78 */ mr r4, r26
/* 803AA03C 003A6F9C 4B FF FD 41 */ bl vsUpdateBuffer
/* 803AA040 003A6FA0 48 00 01 1C */ b lbl_803AA15C
lbl_803AA044:
/* 803AA044 003A6FA4 88 7B 00 03 */ lbz r3, 3(r27)
/* 803AA048 003A6FA8 48 00 9E E1 */ bl hwGetVirtualSampleID
/* 803AA04C 003A6FAC A0 9B 00 12 */ lhz r4, 0x12(r27)
/* 803AA050 003A6FB0 88 1B 00 03 */ lbz r0, 3(r27)
/* 803AA054 003A6FB4 50 80 42 2E */ rlwimi r0, r4, 8, 8, 0x17
/* 803AA058 003A6FB8 7C 00 18 40 */ cmplw r0, r3
/* 803AA05C 003A6FBC 40 82 00 E0 */ bne lbl_803AA13C
/* 803AA060 003A6FC0 7F 63 DB 78 */ mr r3, r27
/* 803AA064 003A6FC4 7F 44 D3 78 */ mr r4, r26
/* 803AA068 003A6FC8 4B FF FD 15 */ bl vsUpdateBuffer
/* 803AA06C 003A6FCC 80 9B 00 0C */ lwz r4, 0xc(r27)
/* 803AA070 003A6FD0 7C 1C 20 40 */ cmplw r28, r4
/* 803AA074 003A6FD4 41 80 00 18 */ blt lbl_803AA08C
/* 803AA078 003A6FD8 80 1B 00 08 */ lwz r0, 8(r27)
/* 803AA07C 003A6FDC 7C 64 E0 50 */ subf r3, r4, r28
/* 803AA080 003A6FE0 7C 03 00 50 */ subf r0, r3, r0
/* 803AA084 003A6FE4 90 1B 00 08 */ stw r0, 8(r27)
/* 803AA088 003A6FE8 48 00 00 1C */ b lbl_803AA0A4
lbl_803AA08C:
/* 803AA08C 003A6FEC 80 7F 00 04 */ lwz r3, 4(r31)
/* 803AA090 003A6FF0 7C 9C 20 50 */ subf r4, r28, r4
/* 803AA094 003A6FF4 80 1B 00 08 */ lwz r0, 8(r27)
/* 803AA098 003A6FF8 7C 64 18 50 */ subf r3, r4, r3
/* 803AA09C 003A6FFC 7C 03 00 50 */ subf r0, r3, r0
/* 803AA0A0 003A7000 90 1B 00 08 */ stw r0, 8(r27)
lbl_803AA0A4:
/* 803AA0A4 003A7004 93 9B 00 0C */ stw r28, 0xc(r27)
/* 803AA0A8 003A7008 80 AD AE 78 */ lwz r5, synthVoice@sda21(r13)
/* 803AA0AC 003A700C 88 7B 00 03 */ lbz r3, 3(r27)
/* 803AA0B0 003A7010 80 1B 00 08 */ lwz r0, 8(r27)
/* 803AA0B4 003A7014 1C 83 04 04 */ mulli r4, r3, 0x404
/* 803AA0B8 003A7018 38 84 02 06 */ addi r4, r4, 0x206
/* 803AA0BC 003A701C 7C 85 22 2E */ lhzx r4, r5, r4
/* 803AA0C0 003A7020 1C 84 00 A0 */ mulli r4, r4, 0xa0
/* 803AA0C4 003A7024 38 84 0F FF */ addi r4, r4, 0xfff
/* 803AA0C8 003A7028 7C 84 66 70 */ srawi r4, r4, 0xc
/* 803AA0CC 003A702C 7C 84 01 94 */ addze r4, r4
/* 803AA0D0 003A7030 7C 04 00 00 */ cmpw r4, r0
/* 803AA0D4 003A7034 40 81 00 88 */ ble lbl_803AA15C
/* 803AA0D8 003A7038 48 00 9E 79 */ bl hwVoiceInStartup
/* 803AA0DC 003A703C 28 03 00 00 */ cmplwi r3, 0
/* 803AA0E0 003A7040 40 82 00 38 */ bne lbl_803AA118
/* 803AA0E4 003A7044 88 1B 00 00 */ lbz r0, 0(r27)
/* 803AA0E8 003A7048 28 00 00 02 */ cmplwi r0, 2
/* 803AA0EC 003A704C 40 82 00 24 */ bne lbl_803AA110
/* 803AA0F0 003A7050 88 7B 00 03 */ lbz r3, 3(r27)
/* 803AA0F4 003A7054 48 00 92 99 */ bl hwBreak
/* 803AA0F8 003A7058 88 1B 00 03 */ lbz r0, 3(r27)
/* 803AA0FC 003A705C 80 6D AE 78 */ lwz r3, synthVoice@sda21(r13)
/* 803AA100 003A7060 1C 00 04 04 */ mulli r0, r0, 0x404
/* 803AA104 003A7064 7C 63 02 14 */ add r3, r3, r0
/* 803AA108 003A7068 4B FF CB 6D */ bl macSampleEndNotify
/* 803AA10C 003A706C 48 00 00 0C */ b lbl_803AA118
lbl_803AA110:
/* 803AA110 003A7070 88 7B 00 03 */ lbz r3, 3(r27)
/* 803AA114 003A7074 4B FF E9 09 */ bl voiceKill
lbl_803AA118:
/* 803AA118 003A7078 38 00 00 00 */ li r0, 0
/* 803AA11C 003A707C 3C 60 80 56 */ lis r3, vs@ha
/* 803AA120 003A7080 98 1B 00 00 */ stb r0, 0(r27)
/* 803AA124 003A7084 38 03 E3 10 */ addi r0, r3, vs@l
/* 803AA128 003A7088 38 80 00 FF */ li r4, 0xff
/* 803AA12C 003A708C 88 7B 00 03 */ lbz r3, 3(r27)
/* 803AA130 003A7090 7C 60 1A 14 */ add r3, r0, r3
/* 803AA134 003A7094 98 83 09 08 */ stb r4, 0x908(r3)
/* 803AA138 003A7098 48 00 00 24 */ b lbl_803AA15C
lbl_803AA13C:
/* 803AA13C 003A709C 38 00 00 00 */ li r0, 0
/* 803AA140 003A70A0 3C 60 80 56 */ lis r3, vs@ha
/* 803AA144 003A70A4 98 1B 00 00 */ stb r0, 0(r27)
/* 803AA148 003A70A8 38 03 E3 10 */ addi r0, r3, vs@l
/* 803AA14C 003A70AC 38 80 00 FF */ li r4, 0xff
/* 803AA150 003A70B0 88 7B 00 03 */ lbz r3, 3(r27)
/* 803AA154 003A70B4 7C 60 1A 14 */ add r3, r0, r3
/* 803AA158 003A70B8 98 83 09 08 */ stb r4, 0x908(r3)
lbl_803AA15C:
/* 803AA15C 003A70BC 3B BD 00 01 */ addi r29, r29, 1
/* 803AA160 003A70C0 3B DE 00 01 */ addi r30, r30, 1
/* 803AA164 003A70C4 28 1D 00 40 */ cmplwi r29, 0x40
/* 803AA168 003A70C8 41 80 FE 3C */ blt lbl_803A9FA4
lbl_803AA16C:
/* 803AA16C 003A70CC 39 61 00 20 */ addi r11, r1, 0x20
/* 803AA170 003A70D0 4B FD F9 55 */ bl _restgpr_26
/* 803AA174 003A70D4 80 01 00 24 */ lwz r0, 0x24(r1)
/* 803AA178 003A70D8 7C 08 03 A6 */ mtlr r0
/* 803AA17C 003A70DC 38 21 00 20 */ addi r1, r1, 0x20
/* 803AA180 003A70E0 4E 80 00 20 */ blr