.include "macros.inc" .section .sdata2 .global lbl_805AF398 lbl_805AF398: # ROM: 0x3FBC38 .4byte 0x3F800000 .global lbl_805AF39C lbl_805AF39C: # ROM: 0x3FBC3C .4byte 0x46FFFE00 .global lbl_805AF3A0 lbl_805AF3A0: # ROM: 0x3FBC40 .4byte 0x45800000 .4byte 0 .global lbl_805AF3A8 lbl_805AF3A8: # ROM: 0x3FBC48 .4byte 0x43300000 .4byte 0 .section .sbss .balign 4 .global salTimeOffset salTimeOffset: .skip 0x4 .global salHooks salHooks: .skip 0x8 .global salMaxStudioNum salMaxStudioNum: .skip 0x1 .global salNumVoices salNumVoices: .skip 0x1 .global salAuxFrame salAuxFrame: .skip 0x1 .global salFrame salFrame: .skip 0x1 .section .sdata, "wa" .global lbl_805A8BD8 lbl_805A8BD8: .2byte 0 .2byte 1 .2byte 2 .balign 4 .global lbl_805A8BE0 lbl_805A8BE0: .2byte 0 .2byte 1 .2byte 2 .balign 4 .section .rodata .global lbl_803D8BD0 lbl_803D8BD0: # ROM: 0x3D5BD0 .4byte 0 .4byte 0 .4byte 0 .4byte 0 .4byte 0 .4byte 0x00000001 .4byte 0x00010001 .4byte 0x00010001 .4byte 0x00010001 .4byte 0x00020002 .4byte 0x00020002 .4byte 0x00020003 .4byte 0x00030003 .4byte 0x00030003 .4byte 0x00040004 .4byte 0x00040004 .4byte 0x00050005 .4byte 0x00050006 .4byte 0x00060006 .4byte 0x00070007 .4byte 0x00070008 .4byte 0x00080008 .4byte 0x00090009 .4byte 0x0009000A .4byte 0x000A000A .4byte 0x000B000B .4byte 0x000C000C .4byte 0x000C000D .4byte 0x000D000D .4byte 0x000E000E .4byte 0x000F000F .4byte 0x000F0010 .4byte 0x00100011 .4byte 0x00110011 .4byte 0x00120012 .4byte 0x00130013 .4byte 0x00130014 .4byte 0x00140014 .4byte 0x00150015 .4byte 0x00160016 .4byte 0x00160017 .4byte 0x00170017 .4byte 0x00180018 .4byte 0x00180019 .4byte 0x00190019 .4byte 0x001A001A .4byte 0x001A001B .4byte 0x001B001B .4byte 0x001C001C .4byte 0x001C001C .4byte 0x001D001D .4byte 0x001D001D .4byte 0x001D001E .4byte 0x001E001E .4byte 0x001E001E .4byte 0x001F001F .4byte 0x001F001F .4byte 0x001F001F .4byte 0x001F0020 .4byte 0x00200020 .4byte 0x00200020 .4byte 0x00200020 .4byte 0x00200020 .4byte 0x00200020 .section .text, "ax" .global snd_handle_irq snd_handle_irq: /* 803B2F4C 003AFEAC 94 21 FF F0 */ stwu r1, -0x10(r1) /* 803B2F50 003AFEB0 7C 08 02 A6 */ mflr r0 /* 803B2F54 003AFEB4 90 01 00 14 */ stw r0, 0x14(r1) /* 803B2F58 003AFEB8 93 E1 00 0C */ stw r31, 0xc(r1) /* 803B2F5C 003AFEBC 88 0D AE 48 */ lbz r0, sndActive@sda21(r13) /* 803B2F60 003AFEC0 28 00 00 00 */ cmplwi r0, 0 /* 803B2F64 003AFEC4 41 82 01 28 */ beq lbl_803B308C /* 803B2F68 003AFEC8 4B FE A2 F1 */ bl streamCorrectLoops /* 803B2F6C 003AFECC 48 00 21 89 */ bl hwIRQEnterCritical /* 803B2F70 003AFED0 48 00 1F 05 */ bl salAiGetDest /* 803B2F74 003AFED4 48 00 20 21 */ bl salCtrlDsp /* 803B2F78 003AFED8 48 00 21 9D */ bl hwIRQLeaveCritical /* 803B2F7C 003AFEDC 48 00 21 79 */ bl hwIRQEnterCritical /* 803B2F80 003AFEE0 4B FF B0 39 */ bl salHandleAuxProcessing /* 803B2F84 003AFEE4 48 00 21 91 */ bl hwIRQLeaveCritical /* 803B2F88 003AFEE8 48 00 21 6D */ bl hwIRQEnterCritical /* 803B2F8C 003AFEEC 88 8D AF 8E */ lbz r4, salAuxFrame@sda21(r13) /* 803B2F90 003AFEF0 3C 60 55 55 */ lis r3, 0x55555556@ha /* 803B2F94 003AFEF4 38 03 55 56 */ addi r0, r3, 0x55555556@l /* 803B2F98 003AFEF8 88 AD AF 8F */ lbz r5, salFrame@sda21(r13) /* 803B2F9C 003AFEFC 38 84 00 01 */ addi r4, r4, 1 /* 803B2FA0 003AFF00 39 20 00 00 */ li r9, 0 /* 803B2FA4 003AFF04 7C 60 20 96 */ mulhw r3, r0, r4 /* 803B2FA8 003AFF08 68 A0 00 01 */ xori r0, r5, 1 /* 803B2FAC 003AFF0C 98 0D AF 8F */ stb r0, salFrame@sda21(r13) /* 803B2FB0 003AFF10 39 00 00 00 */ li r8, 0 /* 803B2FB4 003AFF14 54 60 0F FE */ srwi r0, r3, 0x1f /* 803B2FB8 003AFF18 7C 03 02 14 */ add r0, r3, r0 /* 803B2FBC 003AFF1C 1C 00 00 03 */ mulli r0, r0, 3 /* 803B2FC0 003AFF20 7C 00 20 50 */ subf r0, r0, r4 /* 803B2FC4 003AFF24 98 0D AF 8E */ stb r0, salAuxFrame@sda21(r13) /* 803B2FC8 003AFF28 48 00 00 4C */ b lbl_803B3014 lbl_803B2FCC: /* 803B2FCC 003AFF2C 55 20 06 3E */ clrlwi r0, r9, 0x18 /* 803B2FD0 003AFF30 80 6D AF 54 */ lwz r3, dspVoice@sda21(r13) /* 803B2FD4 003AFF34 1C 80 00 F4 */ mulli r4, r0, 0xf4 /* 803B2FD8 003AFF38 39 29 00 01 */ addi r9, r9, 1 /* 803B2FDC 003AFF3C 38 E4 00 24 */ addi r7, r4, 0x24 /* 803B2FE0 003AFF40 7D 03 39 2E */ stwx r8, r3, r7 /* 803B2FE4 003AFF44 38 A7 00 04 */ addi r5, r7, 4 /* 803B2FE8 003AFF48 38 87 00 08 */ addi r4, r7, 8 /* 803B2FEC 003AFF4C 38 67 00 0C */ addi r3, r7, 0xc /* 803B2FF0 003AFF50 80 CD AF 54 */ lwz r6, dspVoice@sda21(r13) /* 803B2FF4 003AFF54 38 07 00 10 */ addi r0, r7, 0x10 /* 803B2FF8 003AFF58 7D 06 29 2E */ stwx r8, r6, r5 /* 803B2FFC 003AFF5C 80 AD AF 54 */ lwz r5, dspVoice@sda21(r13) /* 803B3000 003AFF60 7D 05 21 2E */ stwx r8, r5, r4 /* 803B3004 003AFF64 80 8D AF 54 */ lwz r4, dspVoice@sda21(r13) /* 803B3008 003AFF68 7D 04 19 2E */ stwx r8, r4, r3 /* 803B300C 003AFF6C 80 6D AF 54 */ lwz r3, dspVoice@sda21(r13) /* 803B3010 003AFF70 7D 03 01 2E */ stwx r8, r3, r0 lbl_803B3014: /* 803B3014 003AFF74 88 0D AF 8D */ lbz r0, salNumVoices@sda21(r13) /* 803B3018 003AFF78 55 23 06 3E */ clrlwi r3, r9, 0x18 /* 803B301C 003AFF7C 7C 03 00 40 */ cmplw r3, r0 /* 803B3020 003AFF80 41 80 FF AC */ blt lbl_803B2FCC /* 803B3024 003AFF84 48 00 20 F1 */ bl hwIRQLeaveCritical /* 803B3028 003AFF88 3B E0 00 00 */ li r31, 0 /* 803B302C 003AFF8C 48 00 00 28 */ b lbl_803B3054 lbl_803B3030: /* 803B3030 003AFF90 48 00 20 C5 */ bl hwIRQEnterCritical /* 803B3034 003AFF94 7F E3 FB 78 */ mr r3, r31 /* 803B3038 003AFF98 48 00 01 55 */ bl hwSetTimeOffset /* 803B303C 003AFF9C 38 60 01 00 */ li r3, 0x100 /* 803B3040 003AFFA0 4B FE 50 C5 */ bl seqHandle /* 803B3044 003AFFA4 38 60 01 00 */ li r3, 0x100 /* 803B3048 003AFFA8 4B FE 7A C1 */ bl synthHandle /* 803B304C 003AFFAC 48 00 20 C9 */ bl hwIRQLeaveCritical /* 803B3050 003AFFB0 3B FF 00 01 */ addi r31, r31, 1 lbl_803B3054: /* 803B3054 003AFFB4 57 E0 06 3E */ clrlwi r0, r31, 0x18 /* 803B3058 003AFFB8 28 00 00 05 */ cmplwi r0, 5 /* 803B305C 003AFFBC 41 80 FF D4 */ blt lbl_803B3030 /* 803B3060 003AFFC0 48 00 20 95 */ bl hwIRQEnterCritical /* 803B3064 003AFFC4 38 60 00 00 */ li r3, 0 /* 803B3068 003AFFC8 48 00 01 25 */ bl hwSetTimeOffset /* 803B306C 003AFFCC 4B FF D2 ED */ bl s3dHandle /* 803B3070 003AFFD0 48 00 20 A5 */ bl hwIRQLeaveCritical /* 803B3074 003AFFD4 48 00 20 81 */ bl hwIRQEnterCritical /* 803B3078 003AFFD8 4B FE 99 35 */ bl streamHandle /* 803B307C 003AFFDC 48 00 20 99 */ bl hwIRQLeaveCritical /* 803B3080 003AFFE0 48 00 20 75 */ bl hwIRQEnterCritical /* 803B3084 003AFFE4 4B FF 6E F1 */ bl vsSampleUpdates /* 803B3088 003AFFE8 48 00 20 8D */ bl hwIRQLeaveCritical lbl_803B308C: /* 803B308C 003AFFEC 80 01 00 14 */ lwz r0, 0x14(r1) /* 803B3090 003AFFF0 83 E1 00 0C */ lwz r31, 0xc(r1) /* 803B3094 003AFFF4 7C 08 03 A6 */ mtlr r0 /* 803B3098 003AFFF8 38 21 00 10 */ addi r1, r1, 0x10 /* 803B309C 003AFFFC 4E 80 00 20 */ blr .global hwInit hwInit: /* 803B30A0 003B0000 94 21 FF E0 */ stwu r1, -0x20(r1) /* 803B30A4 003B0004 7C 08 02 A6 */ mflr r0 /* 803B30A8 003B0008 90 01 00 24 */ stw r0, 0x24(r1) /* 803B30AC 003B000C 93 E1 00 1C */ stw r31, 0x1c(r1) /* 803B30B0 003B0010 7C DF 33 78 */ mr r31, r6 /* 803B30B4 003B0014 93 C1 00 18 */ stw r30, 0x18(r1) /* 803B30B8 003B0018 7C BE 2B 78 */ mr r30, r5 /* 803B30BC 003B001C 93 A1 00 14 */ stw r29, 0x14(r1) /* 803B30C0 003B0020 7C 9D 23 78 */ mr r29, r4 /* 803B30C4 003B0024 93 81 00 10 */ stw r28, 0x10(r1) /* 803B30C8 003B0028 7C 7C 1B 78 */ mr r28, r3 /* 803B30CC 003B002C 48 00 1F 89 */ bl hwInitIrq /* 803B30D0 003B0030 38 00 00 00 */ li r0, 0 /* 803B30D4 003B0034 3C 60 80 3B */ lis r3, snd_handle_irq@ha /* 803B30D8 003B0038 98 0D AF 8F */ stb r0, salFrame@sda21(r13) /* 803B30DC 003B003C 38 63 2F 4C */ addi r3, r3, snd_handle_irq@l /* 803B30E0 003B0040 7F E4 FB 78 */ mr r4, r31 /* 803B30E4 003B0044 7F 85 E3 78 */ mr r5, r28 /* 803B30E8 003B0048 98 0D AF 8E */ stb r0, salAuxFrame@sda21(r13) /* 803B30EC 003B004C 90 0D AF 58 */ stw r0, salMessageCallback@sda21(r13) /* 803B30F0 003B0050 48 00 1C 69 */ bl salInitAi /* 803B30F4 003B0054 28 03 00 00 */ cmplwi r3, 0 /* 803B30F8 003B0058 41 82 00 3C */ beq lbl_803B3134 /* 803B30FC 003B005C 57 E5 07 FE */ clrlwi r5, r31, 0x1f /* 803B3100 003B0060 57 A3 06 3E */ clrlwi r3, r29, 0x18 /* 803B3104 003B0064 57 C4 06 3E */ clrlwi r4, r30, 0x18 /* 803B3108 003B0068 4B FF 7B F5 */ bl salInitDspCtrl /* 803B310C 003B006C 28 03 00 00 */ cmplwi r3, 0 /* 803B3110 003B0070 41 82 00 24 */ beq lbl_803B3134 /* 803B3114 003B0074 7F E3 FB 78 */ mr r3, r31 /* 803B3118 003B0078 48 00 1D 8D */ bl salInitDsp /* 803B311C 003B007C 28 03 00 00 */ cmplwi r3, 0 /* 803B3120 003B0080 41 82 00 14 */ beq lbl_803B3134 /* 803B3124 003B0084 48 00 1F 61 */ bl hwEnableIrq /* 803B3128 003B0088 48 00 1C F9 */ bl salStartAi /* 803B312C 003B008C 38 60 00 00 */ li r3, 0 /* 803B3130 003B0090 48 00 00 08 */ b lbl_803B3138 lbl_803B3134: /* 803B3134 003B0094 38 60 FF FF */ li r3, -1 lbl_803B3138: /* 803B3138 003B0098 80 01 00 24 */ lwz r0, 0x24(r1) /* 803B313C 003B009C 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 803B3140 003B00A0 83 C1 00 18 */ lwz r30, 0x18(r1) /* 803B3144 003B00A4 83 A1 00 14 */ lwz r29, 0x14(r1) /* 803B3148 003B00A8 83 81 00 10 */ lwz r28, 0x10(r1) /* 803B314C 003B00AC 7C 08 03 A6 */ mtlr r0 /* 803B3150 003B00B0 38 21 00 20 */ addi r1, r1, 0x20 /* 803B3154 003B00B4 4E 80 00 20 */ blr .global hwExit hwExit: /* 803B3158 003B00B8 94 21 FF F0 */ stwu r1, -0x10(r1) /* 803B315C 003B00BC 7C 08 02 A6 */ mflr r0 /* 803B3160 003B00C0 90 01 00 14 */ stw r0, 0x14(r1) /* 803B3164 003B00C4 48 00 1F 59 */ bl hwDisableIrq /* 803B3168 003B00C8 48 00 1D F9 */ bl salExitDsp /* 803B316C 003B00CC 4B FF 7F 7D */ bl salExitDspCtrl /* 803B3170 003B00D0 48 00 1C D1 */ bl salExitAi /* 803B3174 003B00D4 48 00 1F 11 */ bl hwEnableIrq /* 803B3178 003B00D8 48 00 1F 09 */ bl hwExitIrq /* 803B317C 003B00DC 80 01 00 14 */ lwz r0, 0x14(r1) /* 803B3180 003B00E0 7C 08 03 A6 */ mtlr r0 /* 803B3184 003B00E4 38 21 00 10 */ addi r1, r1, 0x10 /* 803B3188 003B00E8 4E 80 00 20 */ blr .global hwSetTimeOffset hwSetTimeOffset: /* 803B318C 003B00EC 98 6D AF 80 */ stb r3, salTimeOffset@sda21(r13) /* 803B3190 003B00F0 4E 80 00 20 */ blr .global hwGetTimeOffset hwGetTimeOffset: /* 803B3194 003B00F4 88 6D AF 80 */ lbz r3, salTimeOffset@sda21(r13) /* 803B3198 003B00F8 4E 80 00 20 */ blr .global hwIsActive hwIsActive: /* 803B319C 003B00FC 1C 03 00 F4 */ mulli r0, r3, 0xf4 /* 803B31A0 003B0100 80 6D AF 54 */ lwz r3, dspVoice@sda21(r13) /* 803B31A4 003B0104 7C 63 02 14 */ add r3, r3, r0 /* 803B31A8 003B0108 88 63 00 EC */ lbz r3, 0xec(r3) /* 803B31AC 003B010C 7C 03 00 D0 */ neg r0, r3 /* 803B31B0 003B0110 7C 00 1B 78 */ or r0, r0, r3 /* 803B31B4 003B0114 54 03 0F FE */ srwi r3, r0, 0x1f /* 803B31B8 003B0118 4E 80 00 20 */ blr .global hwSetMesgCallback hwSetMesgCallback: /* 803B31BC 003B011C 90 6D AF 58 */ stw r3, salMessageCallback@sda21(r13) /* 803B31C0 003B0120 4E 80 00 20 */ blr .global hwSetPriority hwSetPriority: /* 803B31C4 003B0124 1C 03 00 F4 */ mulli r0, r3, 0xf4 /* 803B31C8 003B0128 80 6D AF 54 */ lwz r3, dspVoice@sda21(r13) /* 803B31CC 003B012C 7C 63 02 14 */ add r3, r3, r0 /* 803B31D0 003B0130 90 83 00 1C */ stw r4, 0x1c(r3) /* 803B31D4 003B0134 4E 80 00 20 */ blr .global hwInitSamplePlayback hwInitSamplePlayback: /* 803B31D8 003B0138 94 21 FF E0 */ stwu r1, -0x20(r1) /* 803B31DC 003B013C 7C 08 02 A6 */ mflr r0 /* 803B31E0 003B0140 39 80 00 00 */ li r12, 0 /* 803B31E4 003B0144 39 60 00 00 */ li r11, 0 /* 803B31E8 003B0148 90 01 00 24 */ stw r0, 0x24(r1) /* 803B31EC 003B014C 93 E1 00 1C */ stw r31, 0x1c(r1) /* 803B31F0 003B0150 7D 5F 53 78 */ mr r31, r10 /* 803B31F4 003B0154 93 C1 00 18 */ stw r30, 0x18(r1) /* 803B31F8 003B0158 7C 7E 1B 78 */ mr r30, r3 /* 803B31FC 003B015C 1C 7E 00 F4 */ mulli r3, r30, 0xf4 /* 803B3200 003B0160 93 A1 00 14 */ stw r29, 0x14(r1) /* 803B3204 003B0164 3B A0 00 00 */ li r29, 0 /* 803B3208 003B0168 48 00 00 28 */ b lbl_803B3230 lbl_803B320C: /* 803B320C 003B016C 81 4D AF 54 */ lwz r10, dspVoice@sda21(r13) /* 803B3210 003B0170 55 80 15 BA */ rlwinm r0, r12, 2, 0x16, 0x1d /* 803B3214 003B0174 39 8C 00 01 */ addi r12, r12, 1 /* 803B3218 003B0178 7D 4A 02 14 */ add r10, r10, r0 /* 803B321C 003B017C 39 4A 00 24 */ addi r10, r10, 0x24 /* 803B3220 003B0180 7C 03 50 2E */ lwzx r0, r3, r10 /* 803B3224 003B0184 54 00 06 B4 */ rlwinm r0, r0, 0, 0x1a, 0x1a /* 803B3228 003B0188 7D 63 51 2E */ stwx r11, r3, r10 /* 803B322C 003B018C 7F BD 03 78 */ or r29, r29, r0 lbl_803B3230: /* 803B3230 003B0190 88 0D AF 80 */ lbz r0, salTimeOffset@sda21(r13) /* 803B3234 003B0194 55 8A 06 3E */ clrlwi r10, r12, 0x18 /* 803B3238 003B0198 7C 0A 00 40 */ cmplw r10, r0 /* 803B323C 003B019C 40 81 FF D0 */ ble lbl_803B320C /* 803B3240 003B01A0 81 4D AF 54 */ lwz r10, dspVoice@sda21(r13) /* 803B3244 003B01A4 38 00 00 00 */ li r0, 0 /* 803B3248 003B01A8 28 06 00 00 */ cmplwi r6, 0 /* 803B324C 003B01AC 7C CA 1A 14 */ add r6, r10, r3 /* 803B3250 003B01B0 93 A6 00 24 */ stw r29, 0x24(r6) /* 803B3254 003B01B4 80 CD AF 54 */ lwz r6, dspVoice@sda21(r13) /* 803B3258 003B01B8 7C C6 1A 14 */ add r6, r6, r3 /* 803B325C 003B01BC 90 E6 00 1C */ stw r7, 0x1c(r6) /* 803B3260 003B01C0 80 CD AF 54 */ lwz r6, dspVoice@sda21(r13) /* 803B3264 003B01C4 7C C6 1A 14 */ add r6, r6, r3 /* 803B3268 003B01C8 91 06 00 18 */ stw r8, 0x18(r6) /* 803B326C 003B01CC 80 CD AF 54 */ lwz r6, dspVoice@sda21(r13) /* 803B3270 003B01D0 7C C6 1A 14 */ add r6, r6, r3 /* 803B3274 003B01D4 90 06 00 F0 */ stw r0, 0xf0(r6) /* 803B3278 003B01D8 80 CD AF 54 */ lwz r6, dspVoice@sda21(r13) /* 803B327C 003B01DC 7C C6 1A 14 */ add r6, r6, r3 /* 803B3280 003B01E0 B0 86 00 70 */ sth r4, 0x70(r6) /* 803B3284 003B01E4 80 ED AF 54 */ lwz r7, dspVoice@sda21(r13) /* 803B3288 003B01E8 80 C5 00 00 */ lwz r6, 0(r5) /* 803B328C 003B01EC 80 85 00 04 */ lwz r4, 4(r5) /* 803B3290 003B01F0 7C E7 1A 14 */ add r7, r7, r3 /* 803B3294 003B01F4 90 C7 00 74 */ stw r6, 0x74(r7) /* 803B3298 003B01F8 90 87 00 78 */ stw r4, 0x78(r7) /* 803B329C 003B01FC 80 C5 00 08 */ lwz r6, 8(r5) /* 803B32A0 003B0200 80 85 00 0C */ lwz r4, 0xc(r5) /* 803B32A4 003B0204 90 C7 00 7C */ stw r6, 0x7c(r7) /* 803B32A8 003B0208 90 87 00 80 */ stw r4, 0x80(r7) /* 803B32AC 003B020C 80 C5 00 10 */ lwz r6, 0x10(r5) /* 803B32B0 003B0210 80 85 00 14 */ lwz r4, 0x14(r5) /* 803B32B4 003B0214 90 C7 00 84 */ stw r6, 0x84(r7) /* 803B32B8 003B0218 90 87 00 88 */ stw r4, 0x88(r7) /* 803B32BC 003B021C 80 C5 00 18 */ lwz r6, 0x18(r5) /* 803B32C0 003B0220 80 85 00 1C */ lwz r4, 0x1c(r5) /* 803B32C4 003B0224 90 C7 00 8C */ stw r6, 0x8c(r7) /* 803B32C8 003B0228 90 87 00 90 */ stw r4, 0x90(r7) /* 803B32CC 003B022C 41 82 00 44 */ beq lbl_803B3310 /* 803B32D0 003B0230 80 8D AF 54 */ lwz r4, dspVoice@sda21(r13) /* 803B32D4 003B0234 38 A0 7F FF */ li r5, 0x7fff /* 803B32D8 003B0238 7C 84 1A 14 */ add r4, r4, r3 /* 803B32DC 003B023C 98 04 00 A4 */ stb r0, 0xa4(r4) /* 803B32E0 003B0240 80 8D AF 54 */ lwz r4, dspVoice@sda21(r13) /* 803B32E4 003B0244 7C 84 1A 14 */ add r4, r4, r3 /* 803B32E8 003B0248 90 04 00 B8 */ stw r0, 0xb8(r4) /* 803B32EC 003B024C 80 8D AF 54 */ lwz r4, dspVoice@sda21(r13) /* 803B32F0 003B0250 7C 84 1A 14 */ add r4, r4, r3 /* 803B32F4 003B0254 90 04 00 BC */ stw r0, 0xbc(r4) /* 803B32F8 003B0258 80 8D AF 54 */ lwz r4, dspVoice@sda21(r13) /* 803B32FC 003B025C 7C 84 1A 14 */ add r4, r4, r3 /* 803B3300 003B0260 B0 A4 00 C0 */ sth r5, 0xc0(r4) /* 803B3304 003B0264 80 8D AF 54 */ lwz r4, dspVoice@sda21(r13) /* 803B3308 003B0268 7C 84 1A 14 */ add r4, r4, r3 /* 803B330C 003B026C 90 04 00 C4 */ stw r0, 0xc4(r4) lbl_803B3310: /* 803B3310 003B0270 80 0D AF 54 */ lwz r0, dspVoice@sda21(r13) /* 803B3314 003B0274 38 A0 00 FF */ li r5, 0xff /* 803B3318 003B0278 28 09 00 00 */ cmplwi r9, 0 /* 803B331C 003B027C 7C 80 1A 14 */ add r4, r0, r3 /* 803B3320 003B0280 98 A4 00 E4 */ stb r5, 0xe4(r4) /* 803B3324 003B0284 80 0D AF 54 */ lwz r0, dspVoice@sda21(r13) /* 803B3328 003B0288 7C 80 1A 14 */ add r4, r0, r3 /* 803B332C 003B028C 98 A4 00 E5 */ stb r5, 0xe5(r4) /* 803B3330 003B0290 80 0D AF 54 */ lwz r0, dspVoice@sda21(r13) /* 803B3334 003B0294 7C 80 1A 14 */ add r4, r0, r3 /* 803B3338 003B0298 98 A4 00 E6 */ stb r5, 0xe6(r4) /* 803B333C 003B029C 80 0D AF 54 */ lwz r0, dspVoice@sda21(r13) /* 803B3340 003B02A0 7C 60 1A 14 */ add r3, r0, r3 /* 803B3344 003B02A4 98 A3 00 E7 */ stb r5, 0xe7(r3) /* 803B3348 003B02A8 41 82 00 1C */ beq lbl_803B3364 /* 803B334C 003B02AC 7F C3 F3 78 */ mr r3, r30 /* 803B3350 003B02B0 38 80 00 00 */ li r4, 0 /* 803B3354 003B02B4 48 00 03 81 */ bl hwSetSRCType /* 803B3358 003B02B8 7F C3 F3 78 */ mr r3, r30 /* 803B335C 003B02BC 38 80 00 01 */ li r4, 1 /* 803B3360 003B02C0 48 00 03 A1 */ bl hwSetPolyPhaseFilter lbl_803B3364: /* 803B3364 003B02C4 7F C3 F3 78 */ mr r3, r30 /* 803B3368 003B02C8 7F E4 FB 78 */ mr r4, r31 /* 803B336C 003B02CC 48 00 03 C1 */ bl hwSetITDMode /* 803B3370 003B02D0 80 01 00 24 */ lwz r0, 0x24(r1) /* 803B3374 003B02D4 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 803B3378 003B02D8 83 C1 00 18 */ lwz r30, 0x18(r1) /* 803B337C 003B02DC 83 A1 00 14 */ lwz r29, 0x14(r1) /* 803B3380 003B02E0 7C 08 03 A6 */ mtlr r0 /* 803B3384 003B02E4 38 21 00 20 */ addi r1, r1, 0x20 /* 803B3388 003B02E8 4E 80 00 20 */ blr .global hwBreak hwBreak: /* 803B338C 003B02EC 1C 83 00 F4 */ mulli r4, r3, 0xf4 /* 803B3390 003B02F0 80 0D AF 54 */ lwz r0, dspVoice@sda21(r13) /* 803B3394 003B02F4 7C 60 22 14 */ add r3, r0, r4 /* 803B3398 003B02F8 88 03 00 EC */ lbz r0, 0xec(r3) /* 803B339C 003B02FC 28 00 00 01 */ cmplwi r0, 1 /* 803B33A0 003B0300 40 82 00 18 */ bne lbl_803B33B8 /* 803B33A4 003B0304 88 0D AF 80 */ lbz r0, salTimeOffset@sda21(r13) /* 803B33A8 003B0308 28 00 00 00 */ cmplwi r0, 0 /* 803B33AC 003B030C 40 82 00 0C */ bne lbl_803B33B8 /* 803B33B0 003B0310 38 00 00 01 */ li r0, 1 /* 803B33B4 003B0314 98 03 00 EE */ stb r0, 0xee(r3) lbl_803B33B8: /* 803B33B8 003B0318 80 6D AF 54 */ lwz r3, dspVoice@sda21(r13) /* 803B33BC 003B031C 88 0D AF 80 */ lbz r0, salTimeOffset@sda21(r13) /* 803B33C0 003B0320 7C 63 22 14 */ add r3, r3, r4 /* 803B33C4 003B0324 54 00 10 3A */ slwi r0, r0, 2 /* 803B33C8 003B0328 7C 63 02 14 */ add r3, r3, r0 /* 803B33CC 003B032C 80 03 00 24 */ lwz r0, 0x24(r3) /* 803B33D0 003B0330 60 00 00 20 */ ori r0, r0, 0x20 /* 803B33D4 003B0334 90 03 00 24 */ stw r0, 0x24(r3) /* 803B33D8 003B0338 4E 80 00 20 */ blr .global hwSetADSR hwSetADSR: /* 803B33DC 003B033C 94 21 FF E0 */ stwu r1, -0x20(r1) /* 803B33E0 003B0340 7C 08 02 A6 */ mflr r0 /* 803B33E4 003B0344 54 A6 06 3F */ clrlwi. r6, r5, 0x18 /* 803B33E8 003B0348 90 01 00 24 */ stw r0, 0x24(r1) /* 803B33EC 003B034C 93 E1 00 1C */ stw r31, 0x1c(r1) /* 803B33F0 003B0350 93 C1 00 18 */ stw r30, 0x18(r1) /* 803B33F4 003B0354 7C 9E 23 78 */ mr r30, r4 /* 803B33F8 003B0358 93 A1 00 14 */ stw r29, 0x14(r1) /* 803B33FC 003B035C 7C 7D 1B 78 */ mr r29, r3 /* 803B3400 003B0360 41 82 00 14 */ beq lbl_803B3414 /* 803B3404 003B0364 41 80 01 50 */ blt lbl_803B3554 /* 803B3408 003B0368 2C 06 00 03 */ cmpwi r6, 3 /* 803B340C 003B036C 40 80 01 48 */ bge lbl_803B3554 /* 803B3410 003B0370 48 00 00 6C */ b lbl_803B347C lbl_803B3414: /* 803B3414 003B0374 1C BD 00 F4 */ mulli r5, r29, 0xf4 /* 803B3418 003B0378 80 0D AF 54 */ lwz r0, dspVoice@sda21(r13) /* 803B341C 003B037C 38 80 00 00 */ li r4, 0 /* 803B3420 003B0380 7C 60 2A 14 */ add r3, r0, r5 /* 803B3424 003B0384 98 83 00 A4 */ stb r4, 0xa4(r3) /* 803B3428 003B0388 80 0D AF 54 */ lwz r0, dspVoice@sda21(r13) /* 803B342C 003B038C A0 9E 00 00 */ lhz r4, 0(r30) /* 803B3430 003B0390 7C 60 2A 14 */ add r3, r0, r5 /* 803B3434 003B0394 90 83 00 B8 */ stw r4, 0xb8(r3) /* 803B3438 003B0398 80 0D AF 54 */ lwz r0, dspVoice@sda21(r13) /* 803B343C 003B039C A0 9E 00 02 */ lhz r4, 2(r30) /* 803B3440 003B03A0 7C 60 2A 14 */ add r3, r0, r5 /* 803B3444 003B03A4 90 83 00 BC */ stw r4, 0xbc(r3) /* 803B3448 003B03A8 A0 1E 00 04 */ lhz r0, 4(r30) /* 803B344C 003B03AC 54 04 18 38 */ slwi r4, r0, 3 /* 803B3450 003B03B0 28 04 7F FF */ cmplwi r4, 0x7fff /* 803B3454 003B03B4 40 81 00 08 */ ble lbl_803B345C /* 803B3458 003B03B8 38 80 7F FF */ li r4, 0x7fff lbl_803B345C: /* 803B345C 003B03BC 80 0D AF 54 */ lwz r0, dspVoice@sda21(r13) /* 803B3460 003B03C0 7C 60 2A 14 */ add r3, r0, r5 /* 803B3464 003B03C4 B0 83 00 C0 */ sth r4, 0xc0(r3) /* 803B3468 003B03C8 80 0D AF 54 */ lwz r0, dspVoice@sda21(r13) /* 803B346C 003B03CC A0 9E 00 06 */ lhz r4, 6(r30) /* 803B3470 003B03D0 7C 60 2A 14 */ add r3, r0, r5 /* 803B3474 003B03D4 90 83 00 C4 */ stw r4, 0xc4(r3) /* 803B3478 003B03D8 48 00 00 DC */ b lbl_803B3554 lbl_803B347C: /* 803B347C 003B03DC 1F FD 00 F4 */ mulli r31, r29, 0xf4 /* 803B3480 003B03E0 80 0D AF 54 */ lwz r0, dspVoice@sda21(r13) /* 803B3484 003B03E4 38 A0 00 01 */ li r5, 1 /* 803B3488 003B03E8 28 06 00 01 */ cmplwi r6, 1 /* 803B348C 003B03EC 7C 60 FA 14 */ add r3, r0, r31 /* 803B3490 003B03F0 38 80 00 00 */ li r4, 0 /* 803B3494 003B03F4 98 A3 00 A4 */ stb r5, 0xa4(r3) /* 803B3498 003B03F8 80 0D AF 54 */ lwz r0, dspVoice@sda21(r13) /* 803B349C 003B03FC 7C 60 FA 14 */ add r3, r0, r31 /* 803B34A0 003B0400 98 83 00 CA */ stb r4, 0xca(r3) /* 803B34A4 003B0404 40 82 00 68 */ bne lbl_803B350C /* 803B34A8 003B0408 80 7E 00 00 */ lwz r3, 0(r30) /* 803B34AC 003B040C 4B FF 5D 65 */ bl adsrConvertTimeCents /* 803B34B0 003B0410 80 0D AF 54 */ lwz r0, dspVoice@sda21(r13) /* 803B34B4 003B0414 54 64 04 3E */ clrlwi r4, r3, 0x10 /* 803B34B8 003B0418 7C 60 FA 14 */ add r3, r0, r31 /* 803B34BC 003B041C 90 83 00 B8 */ stw r4, 0xb8(r3) /* 803B34C0 003B0420 80 7E 00 04 */ lwz r3, 4(r30) /* 803B34C4 003B0424 4B FF 5D 4D */ bl adsrConvertTimeCents /* 803B34C8 003B0428 80 0D AF 54 */ lwz r0, dspVoice@sda21(r13) /* 803B34CC 003B042C 54 64 04 3E */ clrlwi r4, r3, 0x10 /* 803B34D0 003B0430 7C 60 FA 14 */ add r3, r0, r31 /* 803B34D4 003B0434 90 83 00 BC */ stw r4, 0xbc(r3) /* 803B34D8 003B0438 A0 1E 00 08 */ lhz r0, 8(r30) /* 803B34DC 003B043C 7C 04 16 70 */ srawi r4, r0, 2 /* 803B34E0 003B0440 28 04 03 FF */ cmplwi r4, 0x3ff /* 803B34E4 003B0444 40 81 00 08 */ ble lbl_803B34EC /* 803B34E8 003B0448 38 80 03 FF */ li r4, 0x3ff lbl_803B34EC: /* 803B34EC 003B044C 3C 60 80 3F */ lis r3, lbl_803F39A4@ha /* 803B34F0 003B0450 80 0D AF 54 */ lwz r0, dspVoice@sda21(r13) /* 803B34F4 003B0454 38 63 39 A4 */ addi r3, r3, lbl_803F39A4@l /* 803B34F8 003B0458 7C 83 20 AE */ lbzx r4, r3, r4 /* 803B34FC 003B045C 7C 60 FA 14 */ add r3, r0, r31 /* 803B3500 003B0460 20 04 00 C1 */ subfic r0, r4, 0xc1 /* 803B3504 003B0464 B0 03 00 C0 */ sth r0, 0xc0(r3) /* 803B3508 003B0468 48 00 00 3C */ b lbl_803B3544 lbl_803B350C: /* 803B350C 003B046C 80 7E 00 00 */ lwz r3, 0(r30) /* 803B3510 003B0470 80 0D AF 54 */ lwz r0, dspVoice@sda21(r13) /* 803B3514 003B0474 54 64 04 3E */ clrlwi r4, r3, 0x10 /* 803B3518 003B0478 7C 60 FA 14 */ add r3, r0, r31 /* 803B351C 003B047C 90 83 00 B8 */ stw r4, 0xb8(r3) /* 803B3520 003B0480 80 7E 00 04 */ lwz r3, 4(r30) /* 803B3524 003B0484 80 0D AF 54 */ lwz r0, dspVoice@sda21(r13) /* 803B3528 003B0488 54 64 04 3E */ clrlwi r4, r3, 0x10 /* 803B352C 003B048C 7C 60 FA 14 */ add r3, r0, r31 /* 803B3530 003B0490 90 83 00 BC */ stw r4, 0xbc(r3) /* 803B3534 003B0494 80 0D AF 54 */ lwz r0, dspVoice@sda21(r13) /* 803B3538 003B0498 A0 9E 00 08 */ lhz r4, 8(r30) /* 803B353C 003B049C 7C 60 FA 14 */ add r3, r0, r31 /* 803B3540 003B04A0 B0 83 00 C0 */ sth r4, 0xc0(r3) lbl_803B3544: /* 803B3544 003B04A4 80 0D AF 54 */ lwz r0, dspVoice@sda21(r13) /* 803B3548 003B04A8 A0 9E 00 0A */ lhz r4, 0xa(r30) /* 803B354C 003B04AC 7C 60 FA 14 */ add r3, r0, r31 /* 803B3550 003B04B0 90 83 00 C4 */ stw r4, 0xc4(r3) lbl_803B3554: /* 803B3554 003B04B4 1C 1D 00 F4 */ mulli r0, r29, 0xf4 /* 803B3558 003B04B8 80 6D AF 54 */ lwz r3, dspVoice@sda21(r13) /* 803B355C 003B04BC 7C 63 02 14 */ add r3, r3, r0 /* 803B3560 003B04C0 80 03 00 24 */ lwz r0, 0x24(r3) /* 803B3564 003B04C4 60 00 00 10 */ ori r0, r0, 0x10 /* 803B3568 003B04C8 90 03 00 24 */ stw r0, 0x24(r3) /* 803B356C 003B04CC 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 803B3570 003B04D0 83 C1 00 18 */ lwz r30, 0x18(r1) /* 803B3574 003B04D4 83 A1 00 14 */ lwz r29, 0x14(r1) /* 803B3578 003B04D8 80 01 00 24 */ lwz r0, 0x24(r1) /* 803B357C 003B04DC 7C 08 03 A6 */ mtlr r0 /* 803B3580 003B04E0 38 21 00 20 */ addi r1, r1, 0x20 /* 803B3584 003B04E4 4E 80 00 20 */ blr .global hwSetVirtualSampleLoopBuffer hwSetVirtualSampleLoopBuffer: /* 803B3588 003B04E8 1C C3 00 F4 */ mulli r6, r3, 0xf4 /* 803B358C 003B04EC 80 0D AF 54 */ lwz r0, dspVoice@sda21(r13) /* 803B3590 003B04F0 7C 60 32 14 */ add r3, r0, r6 /* 803B3594 003B04F4 90 83 00 94 */ stw r4, 0x94(r3) /* 803B3598 003B04F8 80 0D AF 54 */ lwz r0, dspVoice@sda21(r13) /* 803B359C 003B04FC 7C 60 32 14 */ add r3, r0, r6 /* 803B35A0 003B0500 90 A3 00 98 */ stw r5, 0x98(r3) /* 803B35A4 003B0504 4E 80 00 20 */ blr .global hwGetVirtualSampleState hwGetVirtualSampleState: /* 803B35A8 003B0508 1C 03 00 F4 */ mulli r0, r3, 0xf4 /* 803B35AC 003B050C 80 6D AF 54 */ lwz r3, dspVoice@sda21(r13) /* 803B35B0 003B0510 7C 63 02 14 */ add r3, r3, r0 /* 803B35B4 003B0514 88 63 00 9C */ lbz r3, 0x9c(r3) /* 803B35B8 003B0518 4E 80 00 20 */ blr .global hwGetSampleType hwGetSampleType: /* 803B35BC 003B051C 1C 03 00 F4 */ mulli r0, r3, 0xf4 /* 803B35C0 003B0520 80 6D AF 54 */ lwz r3, dspVoice@sda21(r13) /* 803B35C4 003B0524 7C 63 02 14 */ add r3, r3, r0 /* 803B35C8 003B0528 88 63 00 90 */ lbz r3, 0x90(r3) /* 803B35CC 003B052C 4E 80 00 20 */ blr .global hwGetSampleID hwGetSampleID: /* 803B35D0 003B0530 1C 03 00 F4 */ mulli r0, r3, 0xf4 /* 803B35D4 003B0534 80 6D AF 54 */ lwz r3, dspVoice@sda21(r13) /* 803B35D8 003B0538 7C 63 02 14 */ add r3, r3, r0 /* 803B35DC 003B053C A0 63 00 70 */ lhz r3, 0x70(r3) /* 803B35E0 003B0540 4E 80 00 20 */ blr .global hwSetStreamLoopPS hwSetStreamLoopPS: /* 803B35E4 003B0544 1C 03 00 F4 */ mulli r0, r3, 0xf4 /* 803B35E8 003B0548 80 6D AF 54 */ lwz r3, dspVoice@sda21(r13) /* 803B35EC 003B054C 7C 63 02 14 */ add r3, r3, r0 /* 803B35F0 003B0550 98 83 00 A0 */ stb r4, 0xa0(r3) /* 803B35F4 003B0554 4E 80 00 20 */ blr .global hwStart hwStart: /* 803B35F8 003B0558 94 21 FF F0 */ stwu r1, -0x10(r1) /* 803B35FC 003B055C 7C 08 02 A6 */ mflr r0 /* 803B3600 003B0560 1C C3 00 F4 */ mulli r6, r3, 0xf4 /* 803B3604 003B0564 90 01 00 14 */ stw r0, 0x14(r1) /* 803B3608 003B0568 80 0D AF 54 */ lwz r0, dspVoice@sda21(r13) /* 803B360C 003B056C 88 AD AF 80 */ lbz r5, salTimeOffset@sda21(r13) /* 803B3610 003B0570 7C 60 32 14 */ add r3, r0, r6 /* 803B3614 003B0574 98 A3 00 D4 */ stb r5, 0xd4(r3) /* 803B3618 003B0578 80 0D AF 54 */ lwz r0, dspVoice@sda21(r13) /* 803B361C 003B057C 7C 60 32 14 */ add r3, r0, r6 /* 803B3620 003B0580 4B FF A6 A5 */ bl salActivateVoice /* 803B3624 003B0584 80 01 00 14 */ lwz r0, 0x14(r1) /* 803B3628 003B0588 7C 08 03 A6 */ mtlr r0 /* 803B362C 003B058C 38 21 00 10 */ addi r1, r1, 0x10 /* 803B3630 003B0590 4E 80 00 20 */ blr .global hwKeyOff hwKeyOff: /* 803B3634 003B0594 1C 63 00 F4 */ mulli r3, r3, 0xf4 /* 803B3638 003B0598 80 8D AF 54 */ lwz r4, dspVoice@sda21(r13) /* 803B363C 003B059C 88 0D AF 80 */ lbz r0, salTimeOffset@sda21(r13) /* 803B3640 003B05A0 7C 64 1A 14 */ add r3, r4, r3 /* 803B3644 003B05A4 54 00 10 3A */ slwi r0, r0, 2 /* 803B3648 003B05A8 7C 63 02 14 */ add r3, r3, r0 /* 803B364C 003B05AC 80 03 00 24 */ lwz r0, 0x24(r3) /* 803B3650 003B05B0 60 00 00 40 */ ori r0, r0, 0x40 /* 803B3654 003B05B4 90 03 00 24 */ stw r0, 0x24(r3) /* 803B3658 003B05B8 4E 80 00 20 */ blr .global hwSetPitch hwSetPitch: /* 803B365C 003B05BC 54 80 04 3E */ clrlwi r0, r4, 0x10 /* 803B3660 003B05C0 80 AD AF 54 */ lwz r5, dspVoice@sda21(r13) /* 803B3664 003B05C4 1C 63 00 F4 */ mulli r3, r3, 0xf4 /* 803B3668 003B05C8 28 00 40 00 */ cmplwi r0, 0x4000 /* 803B366C 003B05CC 7C A5 1A 14 */ add r5, r5, r3 /* 803B3670 003B05D0 41 80 00 08 */ blt lbl_803B3678 /* 803B3674 003B05D4 38 80 3F FF */ li r4, 0x3fff lbl_803B3678: /* 803B3678 003B05D8 88 05 00 E4 */ lbz r0, 0xe4(r5) /* 803B367C 003B05DC 28 00 00 FF */ cmplwi r0, 0xff /* 803B3680 003B05E0 41 82 00 1C */ beq lbl_803B369C /* 803B3684 003B05E4 54 03 15 BA */ rlwinm r3, r0, 2, 0x16, 0x1d /* 803B3688 003B05E8 54 80 23 36 */ rlwinm r0, r4, 4, 0xc, 0x1b /* 803B368C 003B05EC 7C 65 1A 14 */ add r3, r5, r3 /* 803B3690 003B05F0 80 63 00 38 */ lwz r3, 0x38(r3) /* 803B3694 003B05F4 7C 03 00 40 */ cmplw r3, r0 /* 803B3698 003B05F8 4D 82 00 20 */ beqlr lbl_803B369C: /* 803B369C 003B05FC 88 0D AF 80 */ lbz r0, salTimeOffset@sda21(r13) /* 803B36A0 003B0600 54 84 23 36 */ rlwinm r4, r4, 4, 0xc, 0x1b /* 803B36A4 003B0604 54 00 10 3A */ slwi r0, r0, 2 /* 803B36A8 003B0608 7C 65 02 14 */ add r3, r5, r0 /* 803B36AC 003B060C 90 83 00 38 */ stw r4, 0x38(r3) /* 803B36B0 003B0610 88 0D AF 80 */ lbz r0, salTimeOffset@sda21(r13) /* 803B36B4 003B0614 54 00 10 3A */ slwi r0, r0, 2 /* 803B36B8 003B0618 7C 65 02 14 */ add r3, r5, r0 /* 803B36BC 003B061C 80 03 00 24 */ lwz r0, 0x24(r3) /* 803B36C0 003B0620 60 00 00 08 */ ori r0, r0, 8 /* 803B36C4 003B0624 90 03 00 24 */ stw r0, 0x24(r3) /* 803B36C8 003B0628 88 0D AF 80 */ lbz r0, salTimeOffset@sda21(r13) /* 803B36CC 003B062C 98 05 00 E4 */ stb r0, 0xe4(r5) /* 803B36D0 003B0630 4E 80 00 20 */ blr .global hwSetSRCType hwSetSRCType: /* 803B36D4 003B0634 1C A3 00 F4 */ mulli r5, r3, 0xf4 /* 803B36D8 003B0638 80 CD AF 54 */ lwz r6, dspVoice@sda21(r13) /* 803B36DC 003B063C 54 80 0D FC */ rlwinm r0, r4, 1, 0x17, 0x1e /* 803B36E0 003B0640 38 6D A0 18 */ addi r3, r13, lbl_805A8BD8@sda21 /* 803B36E4 003B0644 7C 03 02 2E */ lhzx r0, r3, r0 /* 803B36E8 003B0648 7C 66 2A 14 */ add r3, r6, r5 /* 803B36EC 003B064C B0 03 00 CC */ sth r0, 0xcc(r3) /* 803B36F0 003B0650 80 03 00 24 */ lwz r0, 0x24(r3) /* 803B36F4 003B0654 60 00 01 00 */ ori r0, r0, 0x100 /* 803B36F8 003B0658 90 03 00 24 */ stw r0, 0x24(r3) /* 803B36FC 003B065C 4E 80 00 20 */ blr .global hwSetPolyPhaseFilter hwSetPolyPhaseFilter: /* 803B3700 003B0660 1C A3 00 F4 */ mulli r5, r3, 0xf4 /* 803B3704 003B0664 80 CD AF 54 */ lwz r6, dspVoice@sda21(r13) /* 803B3708 003B0668 54 80 0D FC */ rlwinm r0, r4, 1, 0x17, 0x1e /* 803B370C 003B066C 38 6D A0 20 */ addi r3, r13, lbl_805A8BE0@sda21 /* 803B3710 003B0670 7C 03 02 2E */ lhzx r0, r3, r0 /* 803B3714 003B0674 7C 66 2A 14 */ add r3, r6, r5 /* 803B3718 003B0678 B0 03 00 CE */ sth r0, 0xce(r3) /* 803B371C 003B067C 80 03 00 24 */ lwz r0, 0x24(r3) /* 803B3720 003B0680 60 00 00 80 */ ori r0, r0, 0x80 /* 803B3724 003B0684 90 03 00 24 */ stw r0, 0x24(r3) /* 803B3728 003B0688 4E 80 00 20 */ blr .global hwSetITDMode hwSetITDMode: /* 803B372C 003B068C 54 80 06 3F */ clrlwi. r0, r4, 0x18 /* 803B3730 003B0690 40 82 00 3C */ bne lbl_803B376C /* 803B3734 003B0694 1C A3 00 F4 */ mulli r5, r3, 0xf4 /* 803B3738 003B0698 80 0D AF 54 */ lwz r0, dspVoice@sda21(r13) /* 803B373C 003B069C 38 80 00 10 */ li r4, 0x10 /* 803B3740 003B06A0 7C 60 2A 14 */ add r3, r0, r5 /* 803B3744 003B06A4 80 03 00 F0 */ lwz r0, 0xf0(r3) /* 803B3748 003B06A8 64 00 80 00 */ oris r0, r0, 0x8000 /* 803B374C 003B06AC 90 03 00 F0 */ stw r0, 0xf0(r3) /* 803B3750 003B06B0 80 0D AF 54 */ lwz r0, dspVoice@sda21(r13) /* 803B3754 003B06B4 7C 60 2A 14 */ add r3, r0, r5 /* 803B3758 003B06B8 B0 83 00 D0 */ sth r4, 0xd0(r3) /* 803B375C 003B06BC 80 0D AF 54 */ lwz r0, dspVoice@sda21(r13) /* 803B3760 003B06C0 7C 60 2A 14 */ add r3, r0, r5 /* 803B3764 003B06C4 B0 83 00 D2 */ sth r4, 0xd2(r3) /* 803B3768 003B06C8 4E 80 00 20 */ blr lbl_803B376C: /* 803B376C 003B06CC 1C 03 00 F4 */ mulli r0, r3, 0xf4 /* 803B3770 003B06D0 80 6D AF 54 */ lwz r3, dspVoice@sda21(r13) /* 803B3774 003B06D4 7C 63 02 14 */ add r3, r3, r0 /* 803B3778 003B06D8 80 03 00 F0 */ lwz r0, 0xf0(r3) /* 803B377C 003B06DC 54 00 00 7E */ clrlwi r0, r0, 1 /* 803B3780 003B06E0 90 03 00 F0 */ stw r0, 0xf0(r3) /* 803B3784 003B06E4 4E 80 00 20 */ blr .global hwSetVolume hwSetVolume: /* 803B3788 003B06E8 94 21 FF B0 */ stwu r1, -0x50(r1) /* 803B378C 003B06EC 7C 08 02 A6 */ mflr r0 /* 803B3790 003B06F0 C0 02 D6 78 */ lfs f0, lbl_805AF398@sda21(r2) /* 803B3794 003B06F4 90 01 00 54 */ stw r0, 0x54(r1) /* 803B3798 003B06F8 1C 03 00 F4 */ mulli r0, r3, 0xf4 /* 803B379C 003B06FC FC 01 00 40 */ fcmpo cr0, f1, f0 /* 803B37A0 003B0700 93 E1 00 4C */ stw r31, 0x4c(r1) /* 803B37A4 003B0704 93 C1 00 48 */ stw r30, 0x48(r1) /* 803B37A8 003B0708 7C BE 2B 78 */ mr r30, r5 /* 803B37AC 003B070C 80 6D AF 54 */ lwz r3, dspVoice@sda21(r13) /* 803B37B0 003B0710 7F E3 02 14 */ add r31, r3, r0 /* 803B37B4 003B0714 4C 41 13 82 */ cror 2, 1, 2 /* 803B37B8 003B0718 40 82 00 08 */ bne lbl_803B37C0 /* 803B37BC 003B071C FC 20 00 90 */ fmr f1, f0 lbl_803B37C0: /* 803B37C0 003B0720 C0 02 D6 78 */ lfs f0, lbl_805AF398@sda21(r2) /* 803B37C4 003B0724 FC 02 00 40 */ fcmpo cr0, f2, f0 /* 803B37C8 003B0728 4C 41 13 82 */ cror 2, 1, 2 /* 803B37CC 003B072C 40 82 00 08 */ bne lbl_803B37D4 /* 803B37D0 003B0730 FC 40 00 90 */ fmr f2, f0 lbl_803B37D4: /* 803B37D4 003B0734 C0 02 D6 78 */ lfs f0, lbl_805AF398@sda21(r2) /* 803B37D8 003B0738 FC 03 00 40 */ fcmpo cr0, f3, f0 /* 803B37DC 003B073C 4C 41 13 82 */ cror 2, 1, 2 /* 803B37E0 003B0740 40 82 00 08 */ bne lbl_803B37E8 /* 803B37E4 003B0744 FC 60 00 90 */ fmr f3, f0 lbl_803B37E8: /* 803B37E8 003B0748 88 1F 00 EF */ lbz r0, 0xef(r31) /* 803B37EC 003B074C 3C 60 80 56 */ lis r3, dspStudio@ha /* 803B37F0 003B0750 38 E3 F2 60 */ addi r7, r3, dspStudio@l /* 803B37F4 003B0754 81 1F 00 F0 */ lwz r8, 0xf0(r31) /* 803B37F8 003B0758 1C 00 00 BC */ mulli r0, r0, 0xbc /* 803B37FC 003B075C 7C 83 23 78 */ mr r3, r4 /* 803B3800 003B0760 7F C5 F3 78 */ mr r5, r30 /* 803B3804 003B0764 7C 87 02 14 */ add r4, r7, r0 /* 803B3808 003B0768 55 07 0F FE */ srwi r7, r8, 0x1f /* 803B380C 003B076C 80 04 00 54 */ lwz r0, 0x54(r4) /* 803B3810 003B0770 38 81 00 08 */ addi r4, r1, 8 /* 803B3814 003B0774 20 00 00 01 */ subfic r0, r0, 1 /* 803B3818 003B0778 7C 00 00 34 */ cntlzw r0, r0 /* 803B381C 003B077C 54 08 D9 7E */ srwi r8, r0, 5 /* 803B3820 003B0780 4B FF A8 F1 */ bl salCalcVolume /* 803B3824 003B0784 C0 62 D6 7C */ lfs f3, lbl_805AF39C@sda21(r2) /* 803B3828 003B0788 C0 41 00 08 */ lfs f2, 8(r1) /* 803B382C 003B078C C0 21 00 0C */ lfs f1, 0xc(r1) /* 803B3830 003B0790 C0 01 00 10 */ lfs f0, 0x10(r1) /* 803B3834 003B0794 EC 43 00 B2 */ fmuls f2, f3, f2 /* 803B3838 003B0798 EC 23 00 72 */ fmuls f1, f3, f1 /* 803B383C 003B079C 88 1F 00 E5 */ lbz r0, 0xe5(r31) /* 803B3840 003B07A0 EC 03 00 32 */ fmuls f0, f3, f0 /* 803B3844 003B07A4 FC 40 10 1E */ fctiwz f2, f2 /* 803B3848 003B07A8 28 00 00 FF */ cmplwi r0, 0xff /* 803B384C 003B07AC FC 20 08 1E */ fctiwz f1, f1 /* 803B3850 003B07B0 FC 00 00 1E */ fctiwz f0, f0 /* 803B3854 003B07B4 D8 41 00 30 */ stfd f2, 0x30(r1) /* 803B3858 003B07B8 D8 21 00 38 */ stfd f1, 0x38(r1) /* 803B385C 003B07BC 80 81 00 34 */ lwz r4, 0x34(r1) /* 803B3860 003B07C0 D8 01 00 40 */ stfd f0, 0x40(r1) /* 803B3864 003B07C4 80 A1 00 3C */ lwz r5, 0x3c(r1) /* 803B3868 003B07C8 80 C1 00 44 */ lwz r6, 0x44(r1) /* 803B386C 003B07CC 41 82 00 34 */ beq lbl_803B38A0 /* 803B3870 003B07D0 A0 7F 00 4C */ lhz r3, 0x4c(r31) /* 803B3874 003B07D4 54 80 04 3E */ clrlwi r0, r4, 0x10 /* 803B3878 003B07D8 7C 03 00 40 */ cmplw r3, r0 /* 803B387C 003B07DC 40 82 00 24 */ bne lbl_803B38A0 /* 803B3880 003B07E0 A0 7F 00 4E */ lhz r3, 0x4e(r31) /* 803B3884 003B07E4 54 A0 04 3E */ clrlwi r0, r5, 0x10 /* 803B3888 003B07E8 7C 03 00 40 */ cmplw r3, r0 /* 803B388C 003B07EC 40 82 00 14 */ bne lbl_803B38A0 /* 803B3890 003B07F0 A0 7F 00 50 */ lhz r3, 0x50(r31) /* 803B3894 003B07F4 54 C0 04 3E */ clrlwi r0, r6, 0x10 /* 803B3898 003B07F8 7C 03 00 40 */ cmplw r3, r0 /* 803B389C 003B07FC 41 82 00 24 */ beq lbl_803B38C0 lbl_803B38A0: /* 803B38A0 003B0800 B0 9F 00 4C */ sth r4, 0x4c(r31) /* 803B38A4 003B0804 38 00 00 00 */ li r0, 0 /* 803B38A8 003B0808 B0 BF 00 4E */ sth r5, 0x4e(r31) /* 803B38AC 003B080C B0 DF 00 50 */ sth r6, 0x50(r31) /* 803B38B0 003B0810 80 7F 00 24 */ lwz r3, 0x24(r31) /* 803B38B4 003B0814 60 63 00 01 */ ori r3, r3, 1 /* 803B38B8 003B0818 90 7F 00 24 */ stw r3, 0x24(r31) /* 803B38BC 003B081C 98 1F 00 E5 */ stb r0, 0xe5(r31) lbl_803B38C0: /* 803B38C0 003B0820 C0 62 D6 7C */ lfs f3, lbl_805AF39C@sda21(r2) /* 803B38C4 003B0824 C0 41 00 14 */ lfs f2, 0x14(r1) /* 803B38C8 003B0828 C0 21 00 18 */ lfs f1, 0x18(r1) /* 803B38CC 003B082C C0 01 00 1C */ lfs f0, 0x1c(r1) /* 803B38D0 003B0830 EC 43 00 B2 */ fmuls f2, f3, f2 /* 803B38D4 003B0834 EC 23 00 72 */ fmuls f1, f3, f1 /* 803B38D8 003B0838 88 1F 00 E6 */ lbz r0, 0xe6(r31) /* 803B38DC 003B083C EC 03 00 32 */ fmuls f0, f3, f0 /* 803B38E0 003B0840 FC 40 10 1E */ fctiwz f2, f2 /* 803B38E4 003B0844 28 00 00 FF */ cmplwi r0, 0xff /* 803B38E8 003B0848 FC 20 08 1E */ fctiwz f1, f1 /* 803B38EC 003B084C FC 00 00 1E */ fctiwz f0, f0 /* 803B38F0 003B0850 D8 41 00 40 */ stfd f2, 0x40(r1) /* 803B38F4 003B0854 D8 21 00 38 */ stfd f1, 0x38(r1) /* 803B38F8 003B0858 80 81 00 44 */ lwz r4, 0x44(r1) /* 803B38FC 003B085C D8 01 00 30 */ stfd f0, 0x30(r1) /* 803B3900 003B0860 80 A1 00 3C */ lwz r5, 0x3c(r1) /* 803B3904 003B0864 80 C1 00 34 */ lwz r6, 0x34(r1) /* 803B3908 003B0868 41 82 00 34 */ beq lbl_803B393C /* 803B390C 003B086C A0 7F 00 52 */ lhz r3, 0x52(r31) /* 803B3910 003B0870 54 80 04 3E */ clrlwi r0, r4, 0x10 /* 803B3914 003B0874 7C 03 00 40 */ cmplw r3, r0 /* 803B3918 003B0878 40 82 00 24 */ bne lbl_803B393C /* 803B391C 003B087C A0 7F 00 54 */ lhz r3, 0x54(r31) /* 803B3920 003B0880 54 A0 04 3E */ clrlwi r0, r5, 0x10 /* 803B3924 003B0884 7C 03 00 40 */ cmplw r3, r0 /* 803B3928 003B0888 40 82 00 14 */ bne lbl_803B393C /* 803B392C 003B088C A0 7F 00 56 */ lhz r3, 0x56(r31) /* 803B3930 003B0890 54 C0 04 3E */ clrlwi r0, r6, 0x10 /* 803B3934 003B0894 7C 03 00 40 */ cmplw r3, r0 /* 803B3938 003B0898 41 82 00 24 */ beq lbl_803B395C lbl_803B393C: /* 803B393C 003B089C B0 9F 00 52 */ sth r4, 0x52(r31) /* 803B3940 003B08A0 38 00 00 00 */ li r0, 0 /* 803B3944 003B08A4 B0 BF 00 54 */ sth r5, 0x54(r31) /* 803B3948 003B08A8 B0 DF 00 56 */ sth r6, 0x56(r31) /* 803B394C 003B08AC 80 7F 00 24 */ lwz r3, 0x24(r31) /* 803B3950 003B08B0 60 63 00 02 */ ori r3, r3, 2 /* 803B3954 003B08B4 90 7F 00 24 */ stw r3, 0x24(r31) /* 803B3958 003B08B8 98 1F 00 E6 */ stb r0, 0xe6(r31) lbl_803B395C: /* 803B395C 003B08BC C0 62 D6 7C */ lfs f3, lbl_805AF39C@sda21(r2) /* 803B3960 003B08C0 C0 41 00 20 */ lfs f2, 0x20(r1) /* 803B3964 003B08C4 C0 21 00 24 */ lfs f1, 0x24(r1) /* 803B3968 003B08C8 C0 01 00 28 */ lfs f0, 0x28(r1) /* 803B396C 003B08CC EC 43 00 B2 */ fmuls f2, f3, f2 /* 803B3970 003B08D0 EC 23 00 72 */ fmuls f1, f3, f1 /* 803B3974 003B08D4 88 1F 00 E7 */ lbz r0, 0xe7(r31) /* 803B3978 003B08D8 EC 03 00 32 */ fmuls f0, f3, f0 /* 803B397C 003B08DC FC 40 10 1E */ fctiwz f2, f2 /* 803B3980 003B08E0 28 00 00 FF */ cmplwi r0, 0xff /* 803B3984 003B08E4 FC 20 08 1E */ fctiwz f1, f1 /* 803B3988 003B08E8 FC 00 00 1E */ fctiwz f0, f0 /* 803B398C 003B08EC D8 41 00 40 */ stfd f2, 0x40(r1) /* 803B3990 003B08F0 D8 21 00 38 */ stfd f1, 0x38(r1) /* 803B3994 003B08F4 80 81 00 44 */ lwz r4, 0x44(r1) /* 803B3998 003B08F8 D8 01 00 30 */ stfd f0, 0x30(r1) /* 803B399C 003B08FC 80 A1 00 3C */ lwz r5, 0x3c(r1) /* 803B39A0 003B0900 80 C1 00 34 */ lwz r6, 0x34(r1) /* 803B39A4 003B0904 41 82 00 34 */ beq lbl_803B39D8 /* 803B39A8 003B0908 A0 7F 00 58 */ lhz r3, 0x58(r31) /* 803B39AC 003B090C 54 80 04 3E */ clrlwi r0, r4, 0x10 /* 803B39B0 003B0910 7C 03 00 40 */ cmplw r3, r0 /* 803B39B4 003B0914 40 82 00 24 */ bne lbl_803B39D8 /* 803B39B8 003B0918 A0 7F 00 5A */ lhz r3, 0x5a(r31) /* 803B39BC 003B091C 54 A0 04 3E */ clrlwi r0, r5, 0x10 /* 803B39C0 003B0920 7C 03 00 40 */ cmplw r3, r0 /* 803B39C4 003B0924 40 82 00 14 */ bne lbl_803B39D8 /* 803B39C8 003B0928 A0 7F 00 5C */ lhz r3, 0x5c(r31) /* 803B39CC 003B092C 54 C0 04 3E */ clrlwi r0, r6, 0x10 /* 803B39D0 003B0930 7C 03 00 40 */ cmplw r3, r0 /* 803B39D4 003B0934 41 82 00 24 */ beq lbl_803B39F8 lbl_803B39D8: /* 803B39D8 003B0938 B0 9F 00 58 */ sth r4, 0x58(r31) /* 803B39DC 003B093C 38 00 00 00 */ li r0, 0 /* 803B39E0 003B0940 B0 BF 00 5A */ sth r5, 0x5a(r31) /* 803B39E4 003B0944 B0 DF 00 5C */ sth r6, 0x5c(r31) /* 803B39E8 003B0948 80 7F 00 24 */ lwz r3, 0x24(r31) /* 803B39EC 003B094C 60 63 00 04 */ ori r3, r3, 4 /* 803B39F0 003B0950 90 7F 00 24 */ stw r3, 0x24(r31) /* 803B39F4 003B0954 98 1F 00 E7 */ stb r0, 0xe7(r31) lbl_803B39F8: /* 803B39F8 003B0958 80 1F 00 F0 */ lwz r0, 0xf0(r31) /* 803B39FC 003B095C 54 00 00 01 */ rlwinm. r0, r0, 0, 0, 0 /* 803B3A00 003B0960 41 82 00 30 */ beq lbl_803B3A30 /* 803B3A04 003B0964 3C 60 80 3E */ lis r3, lbl_803D8BD0@ha /* 803B3A08 003B0968 57 C0 8D FC */ rlwinm r0, r30, 0x11, 0x17, 0x1e /* 803B3A0C 003B096C 38 83 8B D0 */ addi r4, r3, lbl_803D8BD0@l /* 803B3A10 003B0970 7C 64 02 2E */ lhzx r3, r4, r0 /* 803B3A14 003B0974 7C 04 02 2E */ lhzx r0, r4, r0 /* 803B3A18 003B0978 B0 7F 00 D0 */ sth r3, 0xd0(r31) /* 803B3A1C 003B097C 20 00 00 20 */ subfic r0, r0, 0x20 /* 803B3A20 003B0980 B0 1F 00 D2 */ sth r0, 0xd2(r31) /* 803B3A24 003B0984 80 1F 00 24 */ lwz r0, 0x24(r31) /* 803B3A28 003B0988 60 00 02 00 */ ori r0, r0, 0x200 /* 803B3A2C 003B098C 90 1F 00 24 */ stw r0, 0x24(r31) lbl_803B3A30: /* 803B3A30 003B0990 80 01 00 54 */ lwz r0, 0x54(r1) /* 803B3A34 003B0994 83 E1 00 4C */ lwz r31, 0x4c(r1) /* 803B3A38 003B0998 83 C1 00 48 */ lwz r30, 0x48(r1) /* 803B3A3C 003B099C 7C 08 03 A6 */ mtlr r0 /* 803B3A40 003B09A0 38 21 00 50 */ addi r1, r1, 0x50 /* 803B3A44 003B09A4 4E 80 00 20 */ blr .global hwOff hwOff: /* 803B3A48 003B09A8 94 21 FF F0 */ stwu r1, -0x10(r1) /* 803B3A4C 003B09AC 7C 08 02 A6 */ mflr r0 /* 803B3A50 003B09B0 90 01 00 14 */ stw r0, 0x14(r1) /* 803B3A54 003B09B4 1C 03 00 F4 */ mulli r0, r3, 0xf4 /* 803B3A58 003B09B8 80 6D AF 54 */ lwz r3, dspVoice@sda21(r13) /* 803B3A5C 003B09BC 7C 63 02 14 */ add r3, r3, r0 /* 803B3A60 003B09C0 4B FF A3 05 */ bl salDeactivateVoice /* 803B3A64 003B09C4 80 01 00 14 */ lwz r0, 0x14(r1) /* 803B3A68 003B09C8 7C 08 03 A6 */ mtlr r0 /* 803B3A6C 003B09CC 38 21 00 10 */ addi r1, r1, 0x10 /* 803B3A70 003B09D0 4E 80 00 20 */ blr .global hwSetAUXProcessingCallbacks hwSetAUXProcessingCallbacks: /* 803B3A74 003B09D4 54 60 06 3E */ clrlwi r0, r3, 0x18 /* 803B3A78 003B09D8 3C 60 80 56 */ lis r3, dspStudio@ha /* 803B3A7C 003B09DC 1D 00 00 BC */ mulli r8, r0, 0xbc /* 803B3A80 003B09E0 38 03 F2 60 */ addi r0, r3, dspStudio@l /* 803B3A84 003B09E4 7C 60 42 14 */ add r3, r0, r8 /* 803B3A88 003B09E8 90 83 00 AC */ stw r4, 0xac(r3) /* 803B3A8C 003B09EC 90 A3 00 B4 */ stw r5, 0xb4(r3) /* 803B3A90 003B09F0 90 C3 00 B0 */ stw r6, 0xb0(r3) /* 803B3A94 003B09F4 90 E3 00 B8 */ stw r7, 0xb8(r3) /* 803B3A98 003B09F8 4E 80 00 20 */ blr .global hwActivateStudio hwActivateStudio: /* 803B3A9C 003B09FC 94 21 FF F0 */ stwu r1, -0x10(r1) /* 803B3AA0 003B0A00 7C 08 02 A6 */ mflr r0 /* 803B3AA4 003B0A04 90 01 00 14 */ stw r0, 0x14(r1) /* 803B3AA8 003B0A08 4B FF 77 21 */ bl salActivateStudio /* 803B3AAC 003B0A0C 80 01 00 14 */ lwz r0, 0x14(r1) /* 803B3AB0 003B0A10 7C 08 03 A6 */ mtlr r0 /* 803B3AB4 003B0A14 38 21 00 10 */ addi r1, r1, 0x10 /* 803B3AB8 003B0A18 4E 80 00 20 */ blr .global hwDeactivateStudio hwDeactivateStudio: /* 803B3ABC 003B0A1C 94 21 FF F0 */ stwu r1, -0x10(r1) /* 803B3AC0 003B0A20 7C 08 02 A6 */ mflr r0 /* 803B3AC4 003B0A24 90 01 00 14 */ stw r0, 0x14(r1) /* 803B3AC8 003B0A28 4B FF 78 51 */ bl salDeactivateStudio /* 803B3ACC 003B0A2C 80 01 00 14 */ lwz r0, 0x14(r1) /* 803B3AD0 003B0A30 7C 08 03 A6 */ mtlr r0 /* 803B3AD4 003B0A34 38 21 00 10 */ addi r1, r1, 0x10 /* 803B3AD8 003B0A38 4E 80 00 20 */ blr .global hwAddInput hwAddInput: /* 803B3ADC 003B0A3C 94 21 FF F0 */ stwu r1, -0x10(r1) /* 803B3AE0 003B0A40 7C 08 02 A6 */ mflr r0 /* 803B3AE4 003B0A44 90 01 00 14 */ stw r0, 0x14(r1) /* 803B3AE8 003B0A48 54 60 06 3E */ clrlwi r0, r3, 0x18 /* 803B3AEC 003B0A4C 1C A0 00 BC */ mulli r5, r0, 0xbc /* 803B3AF0 003B0A50 3C 60 80 56 */ lis r3, dspStudio@ha /* 803B3AF4 003B0A54 38 03 F2 60 */ addi r0, r3, dspStudio@l /* 803B3AF8 003B0A58 7C 60 2A 14 */ add r3, r0, r5 /* 803B3AFC 003B0A5C 4B FF A3 91 */ bl salAddStudioInput /* 803B3B00 003B0A60 80 01 00 14 */ lwz r0, 0x14(r1) /* 803B3B04 003B0A64 7C 08 03 A6 */ mtlr r0 /* 803B3B08 003B0A68 38 21 00 10 */ addi r1, r1, 0x10 /* 803B3B0C 003B0A6C 4E 80 00 20 */ blr .global hwRemoveInput hwRemoveInput: /* 803B3B10 003B0A70 94 21 FF F0 */ stwu r1, -0x10(r1) /* 803B3B14 003B0A74 7C 08 02 A6 */ mflr r0 /* 803B3B18 003B0A78 90 01 00 14 */ stw r0, 0x14(r1) /* 803B3B1C 003B0A7C 54 60 06 3E */ clrlwi r0, r3, 0x18 /* 803B3B20 003B0A80 1C A0 00 BC */ mulli r5, r0, 0xbc /* 803B3B24 003B0A84 3C 60 80 56 */ lis r3, dspStudio@ha /* 803B3B28 003B0A88 38 03 F2 60 */ addi r0, r3, dspStudio@l /* 803B3B2C 003B0A8C 7C 60 2A 14 */ add r3, r0, r5 /* 803B3B30 003B0A90 4B FF A4 05 */ bl salRemoveStudioInput /* 803B3B34 003B0A94 80 01 00 14 */ lwz r0, 0x14(r1) /* 803B3B38 003B0A98 7C 08 03 A6 */ mtlr r0 /* 803B3B3C 003B0A9C 38 21 00 10 */ addi r1, r1, 0x10 /* 803B3B40 003B0AA0 4E 80 00 20 */ blr .global hwChangeStudio hwChangeStudio: /* 803B3B44 003B0AA4 94 21 FF F0 */ stwu r1, -0x10(r1) /* 803B3B48 003B0AA8 7C 08 02 A6 */ mflr r0 /* 803B3B4C 003B0AAC 90 01 00 14 */ stw r0, 0x14(r1) /* 803B3B50 003B0AB0 1C 03 00 F4 */ mulli r0, r3, 0xf4 /* 803B3B54 003B0AB4 80 6D AF 54 */ lwz r3, dspVoice@sda21(r13) /* 803B3B58 003B0AB8 7C 63 02 14 */ add r3, r3, r0 /* 803B3B5C 003B0ABC 4B FF A2 69 */ bl salReconnectVoice /* 803B3B60 003B0AC0 80 01 00 14 */ lwz r0, 0x14(r1) /* 803B3B64 003B0AC4 7C 08 03 A6 */ mtlr r0 /* 803B3B68 003B0AC8 38 21 00 10 */ addi r1, r1, 0x10 /* 803B3B6C 003B0ACC 4E 80 00 20 */ blr .global hwGetPos hwGetPos: /* 803B3B70 003B0AD0 1C A3 00 F4 */ mulli r5, r3, 0xf4 /* 803B3B74 003B0AD4 80 CD AF 54 */ lwz r6, dspVoice@sda21(r13) /* 803B3B78 003B0AD8 7C 86 2A 14 */ add r4, r6, r5 /* 803B3B7C 003B0ADC 88 04 00 EC */ lbz r0, 0xec(r4) /* 803B3B80 003B0AE0 28 00 00 02 */ cmplwi r0, 2 /* 803B3B84 003B0AE4 41 82 00 0C */ beq lbl_803B3B90 /* 803B3B88 003B0AE8 38 60 00 00 */ li r3, 0 /* 803B3B8C 003B0AEC 4E 80 00 20 */ blr lbl_803B3B90: /* 803B3B90 003B0AF0 88 04 00 90 */ lbz r0, 0x90(r4) /* 803B3B94 003B0AF4 2C 00 00 03 */ cmpwi r0, 3 /* 803B3B98 003B0AF8 41 82 00 58 */ beq lbl_803B3BF0 /* 803B3B9C 003B0AFC 40 80 00 18 */ bge lbl_803B3BB4 /* 803B3BA0 003B0B00 2C 00 00 02 */ cmpwi r0, 2 /* 803B3BA4 003B0B04 40 80 00 5C */ bge lbl_803B3C00 /* 803B3BA8 003B0B08 2C 00 00 00 */ cmpwi r0, 0 /* 803B3BAC 003B0B0C 40 80 00 10 */ bge lbl_803B3BBC /* 803B3BB0 003B0B10 4E 80 00 20 */ blr lbl_803B3BB4: /* 803B3BB4 003B0B14 2C 00 00 06 */ cmpwi r0, 6 /* 803B3BB8 003B0B18 4C 80 00 20 */ bgelr lbl_803B3BBC: /* 803B3BBC 003B0B1C 7C 66 2A 14 */ add r3, r6, r5 /* 803B3BC0 003B0B20 80 03 00 78 */ lwz r0, 0x78(r3) /* 803B3BC4 003B0B24 80 63 00 20 */ lwz r3, 0x20(r3) /* 803B3BC8 003B0B28 54 00 08 3C */ slwi r0, r0, 1 /* 803B3BCC 003B0B2C 7C 00 18 50 */ subf r0, r0, r3 /* 803B3BD0 003B0B30 54 64 07 3E */ clrlwi r4, r3, 0x1c /* 803B3BD4 003B0B34 54 00 E1 3E */ srwi r0, r0, 4 /* 803B3BD8 003B0B38 28 04 00 02 */ cmplwi r4, 2 /* 803B3BDC 003B0B3C 1C 60 00 0E */ mulli r3, r0, 0xe /* 803B3BE0 003B0B40 4D 80 00 20 */ bltlr /* 803B3BE4 003B0B44 7C 64 1A 14 */ add r3, r4, r3 /* 803B3BE8 003B0B48 38 63 FF FE */ addi r3, r3, -2 /* 803B3BEC 003B0B4C 4E 80 00 20 */ blr lbl_803B3BF0: /* 803B3BF0 003B0B50 80 64 00 78 */ lwz r3, 0x78(r4) /* 803B3BF4 003B0B54 80 04 00 20 */ lwz r0, 0x20(r4) /* 803B3BF8 003B0B58 7C 63 00 50 */ subf r3, r3, r0 /* 803B3BFC 003B0B5C 4E 80 00 20 */ blr lbl_803B3C00: /* 803B3C00 003B0B60 80 64 00 78 */ lwz r3, 0x78(r4) /* 803B3C04 003B0B64 80 04 00 20 */ lwz r0, 0x20(r4) /* 803B3C08 003B0B68 54 63 F8 7E */ srwi r3, r3, 1 /* 803B3C0C 003B0B6C 7C 63 00 50 */ subf r3, r3, r0 /* 803B3C10 003B0B70 4E 80 00 20 */ blr .global hwFlushStream hwFlushStream: /* 803B3C14 003B0B74 94 21 FF D0 */ stwu r1, -0x30(r1) /* 803B3C18 003B0B78 7C 08 02 A6 */ mflr r0 /* 803B3C1C 003B0B7C 90 01 00 34 */ stw r0, 0x34(r1) /* 803B3C20 003B0B80 39 61 00 30 */ addi r11, r1, 0x30 /* 803B3C24 003B0B84 4B FD 5E 51 */ bl _savegpr_25 /* 803B3C28 003B0B88 7C 79 1B 78 */ mr r25, r3 /* 803B3C2C 003B0B8C 7C 9D 23 78 */ mr r29, r4 /* 803B3C30 003B0B90 7C BA 2B 78 */ mr r26, r5 /* 803B3C34 003B0B94 7C FB 3B 78 */ mr r27, r7 /* 803B3C38 003B0B98 7D 1C 43 78 */ mr r28, r8 /* 803B3C3C 003B0B9C 7C C3 33 78 */ mr r3, r6 /* 803B3C40 003B0BA0 38 81 00 08 */ addi r4, r1, 8 /* 803B3C44 003B0BA4 48 00 0E C9 */ bl aramGetStreamBufferAddress /* 803B3C48 003B0BA8 57 A0 06 FE */ clrlwi r0, r29, 0x1b /* 803B3C4C 003B0BAC 57 BE 00 34 */ rlwinm r30, r29, 0, 0, 0x1a /* 803B3C50 003B0BB0 7F 5A 02 14 */ add r26, r26, r0 /* 803B3C54 003B0BB4 7C 7F 1B 78 */ mr r31, r3 /* 803B3C58 003B0BB8 38 1A 00 1F */ addi r0, r26, 0x1f /* 803B3C5C 003B0BBC 7F B9 F2 14 */ add r29, r25, r30 /* 803B3C60 003B0BC0 54 1A 00 34 */ rlwinm r26, r0, 0, 0, 0x1a /* 803B3C64 003B0BC4 7F A3 EB 78 */ mr r3, r29 /* 803B3C68 003B0BC8 7F 44 D3 78 */ mr r4, r26 /* 803B3C6C 003B0BCC 4B FC AE 75 */ bl DCStoreRange /* 803B3C70 003B0BD0 7F A3 EB 78 */ mr r3, r29 /* 803B3C74 003B0BD4 7F 45 D3 78 */ mr r5, r26 /* 803B3C78 003B0BD8 7F 67 DB 78 */ mr r7, r27 /* 803B3C7C 003B0BDC 7F 88 E3 78 */ mr r8, r28 /* 803B3C80 003B0BE0 7C 9F F2 14 */ add r4, r31, r30 /* 803B3C84 003B0BE4 38 C0 00 01 */ li r6, 1 /* 803B3C88 003B0BE8 48 00 03 89 */ bl aramUploadData /* 803B3C8C 003B0BEC 39 61 00 30 */ addi r11, r1, 0x30 /* 803B3C90 003B0BF0 4B FD 5E 31 */ bl _restgpr_25 /* 803B3C94 003B0BF4 80 01 00 34 */ lwz r0, 0x34(r1) /* 803B3C98 003B0BF8 7C 08 03 A6 */ mtlr r0 /* 803B3C9C 003B0BFC 38 21 00 30 */ addi r1, r1, 0x30 /* 803B3CA0 003B0C00 4E 80 00 20 */ blr .global hwInitStream hwInitStream: /* 803B3CA4 003B0C04 94 21 FF F0 */ stwu r1, -0x10(r1) /* 803B3CA8 003B0C08 7C 08 02 A6 */ mflr r0 /* 803B3CAC 003B0C0C 90 01 00 14 */ stw r0, 0x14(r1) /* 803B3CB0 003B0C10 48 00 0D 55 */ bl aramAllocateStreamBuffer /* 803B3CB4 003B0C14 80 01 00 14 */ lwz r0, 0x14(r1) /* 803B3CB8 003B0C18 7C 08 03 A6 */ mtlr r0 /* 803B3CBC 003B0C1C 38 21 00 10 */ addi r1, r1, 0x10 /* 803B3CC0 003B0C20 4E 80 00 20 */ blr .global hwExitStream hwExitStream: /* 803B3CC4 003B0C24 94 21 FF F0 */ stwu r1, -0x10(r1) /* 803B3CC8 003B0C28 7C 08 02 A6 */ mflr r0 /* 803B3CCC 003B0C2C 90 01 00 14 */ stw r0, 0x14(r1) /* 803B3CD0 003B0C30 48 00 0E 75 */ bl aramFreeStreamBuffer /* 803B3CD4 003B0C34 80 01 00 14 */ lwz r0, 0x14(r1) /* 803B3CD8 003B0C38 7C 08 03 A6 */ mtlr r0 /* 803B3CDC 003B0C3C 38 21 00 10 */ addi r1, r1, 0x10 /* 803B3CE0 003B0C40 4E 80 00 20 */ blr .global hwGetStreamPlayBuffer hwGetStreamPlayBuffer: /* 803B3CE4 003B0C44 94 21 FF F0 */ stwu r1, -0x10(r1) /* 803B3CE8 003B0C48 7C 08 02 A6 */ mflr r0 /* 803B3CEC 003B0C4C 38 80 00 00 */ li r4, 0 /* 803B3CF0 003B0C50 90 01 00 14 */ stw r0, 0x14(r1) /* 803B3CF4 003B0C54 48 00 0E 19 */ bl aramGetStreamBufferAddress /* 803B3CF8 003B0C58 80 01 00 14 */ lwz r0, 0x14(r1) /* 803B3CFC 003B0C5C 7C 08 03 A6 */ mtlr r0 /* 803B3D00 003B0C60 38 21 00 10 */ addi r1, r1, 0x10 /* 803B3D04 003B0C64 4E 80 00 20 */ blr .global hwTransAddr hwTransAddr: /* 803B3D08 003B0C68 4E 80 00 20 */ blr .global hwFrq2Pitch hwFrq2Pitch: /* 803B3D0C 003B0C6C 94 21 FF E0 */ stwu r1, -0x20(r1) /* 803B3D10 003B0C70 7C 08 02 A6 */ mflr r0 /* 803B3D14 003B0C74 3C A0 43 30 */ lis r5, 0x4330 /* 803B3D18 003B0C78 3C 80 80 55 */ lis r4, synthInfo@ha /* 803B3D1C 003B0C7C 90 01 00 24 */ stw r0, 0x24(r1) /* 803B3D20 003B0C80 C8 42 D6 88 */ lfd f2, lbl_805AF3A8@sda21(r2) /* 803B3D24 003B0C84 80 04 00 50 */ lwz r0, synthInfo@l(r4) /* 803B3D28 003B0C88 90 61 00 0C */ stw r3, 0xc(r1) /* 803B3D2C 003B0C8C C0 62 D6 80 */ lfs f3, lbl_805AF3A0@sda21(r2) /* 803B3D30 003B0C90 90 A1 00 08 */ stw r5, 8(r1) /* 803B3D34 003B0C94 C8 01 00 08 */ lfd f0, 8(r1) /* 803B3D38 003B0C98 90 01 00 14 */ stw r0, 0x14(r1) /* 803B3D3C 003B0C9C EC 20 10 28 */ fsubs f1, f0, f2 /* 803B3D40 003B0CA0 90 A1 00 10 */ stw r5, 0x10(r1) /* 803B3D44 003B0CA4 C8 01 00 10 */ lfd f0, 0x10(r1) /* 803B3D48 003B0CA8 EC 23 00 72 */ fmuls f1, f3, f1 /* 803B3D4C 003B0CAC EC 00 10 28 */ fsubs f0, f0, f2 /* 803B3D50 003B0CB0 EC 21 00 24 */ fdivs f1, f1, f0 /* 803B3D54 003B0CB4 4B FD 5C 01 */ bl __cvt_fp2unsigned /* 803B3D58 003B0CB8 80 01 00 24 */ lwz r0, 0x24(r1) /* 803B3D5C 003B0CBC 7C 08 03 A6 */ mtlr r0 /* 803B3D60 003B0CC0 38 21 00 20 */ addi r1, r1, 0x20 /* 803B3D64 003B0CC4 4E 80 00 20 */ blr .global hwInitSampleMem hwInitSampleMem: /* 803B3D68 003B0CC8 94 21 FF F0 */ stwu r1, -0x10(r1) /* 803B3D6C 003B0CCC 7C 08 02 A6 */ mflr r0 /* 803B3D70 003B0CD0 7C 83 23 78 */ mr r3, r4 /* 803B3D74 003B0CD4 90 01 00 14 */ stw r0, 0x14(r1) /* 803B3D78 003B0CD8 48 00 04 8D */ bl aramInit /* 803B3D7C 003B0CDC 80 01 00 14 */ lwz r0, 0x14(r1) /* 803B3D80 003B0CE0 7C 08 03 A6 */ mtlr r0 /* 803B3D84 003B0CE4 38 21 00 10 */ addi r1, r1, 0x10 /* 803B3D88 003B0CE8 4E 80 00 20 */ blr .global hwExitSampleMem hwExitSampleMem: /* 803B3D8C 003B0CEC 94 21 FF F0 */ stwu r1, -0x10(r1) /* 803B3D90 003B0CF0 7C 08 02 A6 */ mflr r0 /* 803B3D94 003B0CF4 90 01 00 14 */ stw r0, 0x14(r1) /* 803B3D98 003B0CF8 48 00 07 59 */ bl aramExit /* 803B3D9C 003B0CFC 80 01 00 14 */ lwz r0, 0x14(r1) /* 803B3DA0 003B0D00 7C 08 03 A6 */ mtlr r0 /* 803B3DA4 003B0D04 38 21 00 10 */ addi r1, r1, 0x10 /* 803B3DA8 003B0D08 4E 80 00 20 */ blr .global hwSaveSample hwSaveSample: /* 803B3DAC 003B0D0C 94 21 FF F0 */ stwu r1, -0x10(r1) /* 803B3DB0 003B0D10 7C 08 02 A6 */ mflr r0 /* 803B3DB4 003B0D14 90 01 00 14 */ stw r0, 0x14(r1) /* 803B3DB8 003B0D18 93 E1 00 0C */ stw r31, 0xc(r1) /* 803B3DBC 003B0D1C 7C 9F 23 78 */ mr r31, r4 /* 803B3DC0 003B0D20 80 63 00 00 */ lwz r3, 0(r3) /* 803B3DC4 003B0D24 80 63 00 04 */ lwz r3, 4(r3) /* 803B3DC8 003B0D28 54 60 46 3E */ srwi r0, r3, 0x18 /* 803B3DCC 003B0D2C 54 64 02 3E */ clrlwi r4, r3, 8 /* 803B3DD0 003B0D30 2C 00 00 03 */ cmpwi r0, 3 /* 803B3DD4 003B0D34 41 82 00 4C */ beq lbl_803B3E20 /* 803B3DD8 003B0D38 40 80 00 18 */ bge lbl_803B3DF0 /* 803B3DDC 003B0D3C 2C 00 00 02 */ cmpwi r0, 2 /* 803B3DE0 003B0D40 40 80 00 3C */ bge lbl_803B3E1C /* 803B3DE4 003B0D44 2C 00 00 00 */ cmpwi r0, 0 /* 803B3DE8 003B0D48 40 80 00 10 */ bge lbl_803B3DF8 /* 803B3DEC 003B0D4C 48 00 00 34 */ b lbl_803B3E20 lbl_803B3DF0: /* 803B3DF0 003B0D50 2C 00 00 06 */ cmpwi r0, 6 /* 803B3DF4 003B0D54 40 80 00 2C */ bge lbl_803B3E20 lbl_803B3DF8: /* 803B3DF8 003B0D58 3C 60 24 92 */ lis r3, 0x24924925@ha /* 803B3DFC 003B0D5C 38 04 00 0D */ addi r0, r4, 0xd /* 803B3E00 003B0D60 38 63 49 25 */ addi r3, r3, 0x24924925@l /* 803B3E04 003B0D64 7C 63 00 16 */ mulhwu r3, r3, r0 /* 803B3E08 003B0D68 7C 03 00 50 */ subf r0, r3, r0 /* 803B3E0C 003B0D6C 54 00 F8 7E */ srwi r0, r0, 1 /* 803B3E10 003B0D70 7C 00 1A 14 */ add r0, r0, r3 /* 803B3E14 003B0D74 54 04 00 38 */ rlwinm r4, r0, 0, 0, 0x1c /* 803B3E18 003B0D78 48 00 00 08 */ b lbl_803B3E20 lbl_803B3E1C: /* 803B3E1C 003B0D7C 54 84 08 3C */ slwi r4, r4, 1 lbl_803B3E20: /* 803B3E20 003B0D80 80 7F 00 00 */ lwz r3, 0(r31) /* 803B3E24 003B0D84 48 00 07 49 */ bl aramStoreData /* 803B3E28 003B0D88 90 7F 00 00 */ stw r3, 0(r31) /* 803B3E2C 003B0D8C 80 01 00 14 */ lwz r0, 0x14(r1) /* 803B3E30 003B0D90 83 E1 00 0C */ lwz r31, 0xc(r1) /* 803B3E34 003B0D94 7C 08 03 A6 */ mtlr r0 /* 803B3E38 003B0D98 38 21 00 10 */ addi r1, r1, 0x10 /* 803B3E3C 003B0D9C 4E 80 00 20 */ blr .global hwSetSaveSampleCallback hwSetSaveSampleCallback: /* 803B3E40 003B0DA0 94 21 FF F0 */ stwu r1, -0x10(r1) /* 803B3E44 003B0DA4 7C 08 02 A6 */ mflr r0 /* 803B3E48 003B0DA8 90 01 00 14 */ stw r0, 0x14(r1) /* 803B3E4C 003B0DAC 48 00 06 C9 */ bl aramSetUploadCallback /* 803B3E50 003B0DB0 80 01 00 14 */ lwz r0, 0x14(r1) /* 803B3E54 003B0DB4 7C 08 03 A6 */ mtlr r0 /* 803B3E58 003B0DB8 38 21 00 10 */ addi r1, r1, 0x10 /* 803B3E5C 003B0DBC 4E 80 00 20 */ blr .global hwRemoveSample hwRemoveSample: /* 803B3E60 003B0DC0 94 21 FF F0 */ stwu r1, -0x10(r1) /* 803B3E64 003B0DC4 7C 08 02 A6 */ mflr r0 /* 803B3E68 003B0DC8 90 01 00 14 */ stw r0, 0x14(r1) /* 803B3E6C 003B0DCC 80 63 00 04 */ lwz r3, 4(r3) /* 803B3E70 003B0DD0 54 60 46 3E */ srwi r0, r3, 0x18 /* 803B3E74 003B0DD4 54 65 02 3E */ clrlwi r5, r3, 8 /* 803B3E78 003B0DD8 2C 00 00 03 */ cmpwi r0, 3 /* 803B3E7C 003B0DDC 41 82 00 4C */ beq lbl_803B3EC8 /* 803B3E80 003B0DE0 40 80 00 18 */ bge lbl_803B3E98 /* 803B3E84 003B0DE4 2C 00 00 02 */ cmpwi r0, 2 /* 803B3E88 003B0DE8 40 80 00 3C */ bge lbl_803B3EC4 /* 803B3E8C 003B0DEC 2C 00 00 00 */ cmpwi r0, 0 /* 803B3E90 003B0DF0 40 80 00 10 */ bge lbl_803B3EA0 /* 803B3E94 003B0DF4 48 00 00 34 */ b lbl_803B3EC8 lbl_803B3E98: /* 803B3E98 003B0DF8 2C 00 00 06 */ cmpwi r0, 6 /* 803B3E9C 003B0DFC 40 80 00 2C */ bge lbl_803B3EC8 lbl_803B3EA0: /* 803B3EA0 003B0E00 3C 60 24 92 */ lis r3, 0x24924925@ha /* 803B3EA4 003B0E04 38 05 00 0D */ addi r0, r5, 0xd /* 803B3EA8 003B0E08 38 63 49 25 */ addi r3, r3, 0x24924925@l /* 803B3EAC 003B0E0C 7C 63 00 16 */ mulhwu r3, r3, r0 /* 803B3EB0 003B0E10 7C 03 00 50 */ subf r0, r3, r0 /* 803B3EB4 003B0E14 54 00 F8 7E */ srwi r0, r0, 1 /* 803B3EB8 003B0E18 7C 00 1A 14 */ add r0, r0, r3 /* 803B3EBC 003B0E1C 54 05 00 38 */ rlwinm r5, r0, 0, 0, 0x1c /* 803B3EC0 003B0E20 48 00 00 08 */ b lbl_803B3EC8 lbl_803B3EC4: /* 803B3EC4 003B0E24 54 A5 08 3C */ slwi r5, r5, 1 lbl_803B3EC8: /* 803B3EC8 003B0E28 7C 83 23 78 */ mr r3, r4 /* 803B3ECC 003B0E2C 7C A4 2B 78 */ mr r4, r5 /* 803B3ED0 003B0E30 48 00 0A 59 */ bl aramRemoveData /* 803B3ED4 003B0E34 80 01 00 14 */ lwz r0, 0x14(r1) /* 803B3ED8 003B0E38 7C 08 03 A6 */ mtlr r0 /* 803B3EDC 003B0E3C 38 21 00 10 */ addi r1, r1, 0x10 /* 803B3EE0 003B0E40 4E 80 00 20 */ blr .global hwSyncSampleMem hwSyncSampleMem: /* 803B3EE4 003B0E44 94 21 FF F0 */ stwu r1, -0x10(r1) /* 803B3EE8 003B0E48 7C 08 02 A6 */ mflr r0 /* 803B3EEC 003B0E4C 90 01 00 14 */ stw r0, 0x14(r1) /* 803B3EF0 003B0E50 48 00 02 FD */ bl aramSyncTransferQueue /* 803B3EF4 003B0E54 80 01 00 14 */ lwz r0, 0x14(r1) /* 803B3EF8 003B0E58 7C 08 03 A6 */ mtlr r0 /* 803B3EFC 003B0E5C 38 21 00 10 */ addi r1, r1, 0x10 /* 803B3F00 003B0E60 4E 80 00 20 */ blr .global hwFrameDone hwFrameDone: /* 803B3F04 003B0E64 4E 80 00 20 */ blr .global sndSetHooks sndSetHooks: /* 803B3F08 003B0E68 80 83 00 00 */ lwz r4, 0(r3) /* 803B3F0C 003B0E6C 80 03 00 04 */ lwz r0, 4(r3) /* 803B3F10 003B0E70 90 8D AF 84 */ stw r4, salHooks@sda21(r13) /* 803B3F14 003B0E74 90 0D AF 88 */ stw r0, salHooks+4@sda21(r13) /* 803B3F18 003B0E78 4E 80 00 20 */ blr .global hwDisableHRTF hwDisableHRTF: /* 803B3F1C 003B0E7C 38 00 00 00 */ li r0, 0 /* 803B3F20 003B0E80 90 0D AF 44 */ stw r0, dspHRTFOn@sda21(r13) /* 803B3F24 003B0E84 4E 80 00 20 */ blr .global hwGetVirtualSampleID hwGetVirtualSampleID: /* 803B3F28 003B0E88 1C 03 00 F4 */ mulli r0, r3, 0xf4 /* 803B3F2C 003B0E8C 80 6D AF 54 */ lwz r3, dspVoice@sda21(r13) /* 803B3F30 003B0E90 7C 63 02 14 */ add r3, r3, r0 /* 803B3F34 003B0E94 88 03 00 EC */ lbz r0, 0xec(r3) /* 803B3F38 003B0E98 28 00 00 00 */ cmplwi r0, 0 /* 803B3F3C 003B0E9C 40 82 00 0C */ bne lbl_803B3F48 /* 803B3F40 003B0EA0 38 60 FF FF */ li r3, -1 /* 803B3F44 003B0EA4 4E 80 00 20 */ blr lbl_803B3F48: /* 803B3F48 003B0EA8 80 63 00 E8 */ lwz r3, 0xe8(r3) /* 803B3F4C 003B0EAC 4E 80 00 20 */ blr .global hwVoiceInStartup hwVoiceInStartup: /* 803B3F50 003B0EB0 1C 03 00 F4 */ mulli r0, r3, 0xf4 /* 803B3F54 003B0EB4 80 6D AF 54 */ lwz r3, dspVoice@sda21(r13) /* 803B3F58 003B0EB8 7C 63 02 14 */ add r3, r3, r0 /* 803B3F5C 003B0EBC 88 03 00 EC */ lbz r0, 0xec(r3) /* 803B3F60 003B0EC0 20 00 00 01 */ subfic r0, r0, 1 /* 803B3F64 003B0EC4 7C 00 00 34 */ cntlzw r0, r0 /* 803B3F68 003B0EC8 54 03 D9 7E */ srwi r3, r0, 5 /* 803B3F6C 003B0ECC 4E 80 00 20 */ blr