.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global THPAudioDecode THPAudioDecode: /* 8029EEFC 0029AB5C 94 21 FF C0 */ stwu r1, -0x40(r1) /* 8029EF00 0029AB60 7C 08 02 A6 */ mflr r0 /* 8029EF04 0029AB64 90 01 00 44 */ stw r0, 0x44(r1) /* 8029EF08 0029AB68 39 61 00 40 */ addi r11, r1, 0x40 /* 8029EF0C 0029AB6C 4B F2 82 01 */ bl _savegpr_20 /* 8029EF10 0029AB70 2C 03 00 00 */ cmpwi r3, 0 /* 8029EF14 0029AB74 41 82 00 0C */ beq lbl_8029EF20 /* 8029EF18 0029AB78 2C 04 00 00 */ cmpwi r4, 0 /* 8029EF1C 0029AB7C 40 82 00 0C */ bne lbl_8029EF28 lbl_8029EF20: /* 8029EF20 0029AB80 38 60 00 00 */ li r3, 0 /* 8029EF24 0029AB84 48 00 04 54 */ b lbl_8029F378 lbl_8029EF28: /* 8029EF28 0029AB88 2C 05 00 01 */ cmpwi r5, 1 /* 8029EF2C 0029AB8C 80 A4 00 00 */ lwz r5, 0(r4) /* 8029EF30 0029AB90 3A 84 00 50 */ addi r20, r4, 0x50 /* 8029EF34 0029AB94 7D 94 2A 14 */ add r12, r20, r5 /* 8029EF38 0029AB98 40 82 00 1C */ bne lbl_8029EF54 /* 8029EF3C 0029AB9C 80 04 00 04 */ lwz r0, 4(r4) /* 8029EF40 0029ABA0 7C 7E 1B 78 */ mr r30, r3 /* 8029EF44 0029ABA4 39 00 00 01 */ li r8, 1 /* 8029EF48 0029ABA8 54 00 08 3C */ slwi r0, r0, 1 /* 8029EF4C 0029ABAC 7F E3 02 14 */ add r31, r3, r0 /* 8029EF50 0029ABB0 48 00 00 10 */ b lbl_8029EF60 lbl_8029EF54: /* 8029EF54 0029ABB4 7C 7E 1B 78 */ mr r30, r3 /* 8029EF58 0029ABB8 3B E3 00 02 */ addi r31, r3, 2 /* 8029EF5C 0029ABBC 39 00 00 02 */ li r8, 2 lbl_8029EF60: /* 8029EF60 0029ABC0 2C 05 00 00 */ cmpwi r5, 0 /* 8029EF64 0029ABC4 40 82 01 68 */ bne lbl_8029F0CC /* 8029EF68 0029ABC8 88 B4 00 00 */ lbz r5, 0(r20) /* 8029EF6C 0029ABCC 3E E0 80 00 */ lis r23, 0x7FFFFFFF@ha /* 8029EF70 0029ABD0 39 60 00 00 */ li r11, 0 /* 8029EF74 0029ABD4 3C 60 00 01 */ lis r3, 0x00008000@ha /* 8029EF78 0029ABD8 A9 24 00 48 */ lha r9, 0x48(r4) /* 8029EF7C 0029ABDC 54 A0 E7 7E */ rlwinm r0, r5, 0x1c, 0x1d, 0x1f /* 8029EF80 0029ABE0 54 A7 07 3E */ clrlwi r7, r5, 0x1c /* 8029EF84 0029ABE4 A9 44 00 4A */ lha r10, 0x4a(r4) /* 8029EF88 0029ABE8 55 08 08 3C */ slwi r8, r8, 1 /* 8029EF8C 0029ABEC 38 B4 00 01 */ addi r5, r20, 1 /* 8029EF90 0029ABF0 3B 63 80 00 */ addi r27, r3, 0x00008000@l /* 8029EF94 0029ABF4 3B 37 FF FF */ addi r25, r23, 0x7FFFFFFF@l /* 8029EF98 0029ABF8 6D 78 80 00 */ xoris r24, r11, 0x8000 /* 8029EF9C 0029ABFC 38 C0 00 02 */ li r6, 2 /* 8029EFA0 0029AC00 3B 40 00 00 */ li r26, 0 /* 8029EFA4 0029AC04 3A C0 FF FF */ li r22, -1 /* 8029EFA8 0029AC08 48 00 01 14 */ b lbl_8029F0BC lbl_8029EFAC: /* 8029EFAC 0029AC0C 54 C3 07 3F */ clrlwi. r3, r6, 0x1c /* 8029EFB0 0029AC10 40 82 00 18 */ bne lbl_8029EFC8 /* 8029EFB4 0029AC14 88 65 00 00 */ lbz r3, 0(r5) /* 8029EFB8 0029AC18 38 A5 00 01 */ addi r5, r5, 1 /* 8029EFBC 0029AC1C 38 C6 00 02 */ addi r6, r6, 2 /* 8029EFC0 0029AC20 54 60 E7 7E */ rlwinm r0, r3, 0x1c, 0x1d, 0x1f /* 8029EFC4 0029AC24 54 67 07 3E */ clrlwi r7, r3, 0x1c lbl_8029EFC8: /* 8029EFC8 0029AC28 54 C3 07 FF */ clrlwi. r3, r6, 0x1f /* 8029EFCC 0029AC2C 41 82 00 18 */ beq lbl_8029EFE4 /* 8029EFD0 0029AC30 88 65 00 00 */ lbz r3, 0(r5) /* 8029EFD4 0029AC34 38 A5 00 01 */ addi r5, r5, 1 /* 8029EFD8 0029AC38 54 63 E0 06 */ slwi r3, r3, 0x1c /* 8029EFDC 0029AC3C 7C 75 E6 70 */ srawi r21, r3, 0x1c /* 8029EFE0 0029AC40 48 00 00 10 */ b lbl_8029EFF0 lbl_8029EFE4: /* 8029EFE4 0029AC44 88 65 00 00 */ lbz r3, 0(r5) /* 8029EFE8 0029AC48 54 63 C0 06 */ rlwinm r3, r3, 0x18, 0, 3 /* 8029EFEC 0029AC4C 7C 75 E6 70 */ srawi r21, r3, 0x1c lbl_8029EFF0: /* 8029EFF0 0029AC50 54 0C 15 BA */ rlwinm r12, r0, 2, 0x16, 0x1d /* 8029EFF4 0029AC54 54 E3 06 3E */ clrlwi r3, r7, 0x18 /* 8029EFF8 0029AC58 7D 84 62 14 */ add r12, r4, r12 /* 8029EFFC 0029AC5C 7D 5C 07 34 */ extsh r28, r10 /* 8029F000 0029AC60 A9 4C 00 0A */ lha r10, 0xa(r12) /* 8029F004 0029AC64 7E A3 18 30 */ slw r3, r21, r3 /* 8029F008 0029AC68 A9 8C 00 08 */ lha r12, 8(r12) /* 8029F00C 0029AC6C 7D 35 07 34 */ extsh r21, r9 /* 8029F010 0029AC70 7F 9C 51 D6 */ mullw r28, r28, r10 /* 8029F014 0029AC74 54 6A 58 28 */ slwi r10, r3, 0xb /* 8029F018 0029AC78 38 C6 00 01 */ addi r6, r6, 1 /* 8029F01C 0029AC7C 7E B5 61 D6 */ mullw r21, r21, r12 /* 8029F020 0029AC80 7F 83 FE 70 */ srawi r3, r28, 0x1f /* 8029F024 0029AC84 7E AC FE 70 */ srawi r12, r21, 0x1f /* 8029F028 0029AC88 7F 9C A8 14 */ addc r28, r28, r21 /* 8029F02C 0029AC8C 7E A3 61 14 */ adde r21, r3, r12 /* 8029F030 0029AC90 7D 43 FE 70 */ srawi r3, r10, 0x1f /* 8029F034 0029AC94 7D 9C 50 14 */ addc r12, r28, r10 /* 8029F038 0029AC98 7C 75 19 14 */ adde r3, r21, r3 /* 8029F03C 0029AC9C 55 8A 28 34 */ slwi r10, r12, 5 /* 8029F040 0029ACA0 54 63 28 34 */ slwi r3, r3, 5 /* 8029F044 0029ACA4 51 83 2E FE */ rlwimi r3, r12, 5, 0x1b, 0x1f /* 8029F048 0029ACA8 7E 8A D8 14 */ addc r20, r10, r27 /* 8029F04C 0029ACAC 7C 63 D1 14 */ adde r3, r3, r26 /* 8029F050 0029ACB0 6C 6C 80 00 */ xoris r12, r3, 0x8000 /* 8029F054 0029ACB4 7D 54 C8 10 */ subfc r10, r20, r25 /* 8029F058 0029ACB8 7D 8C C1 10 */ subfe r12, r12, r24 /* 8029F05C 0029ACBC 7D 98 C1 10 */ subfe r12, r24, r24 /* 8029F060 0029ACC0 7D 8C 00 D1 */ neg. r12, r12 /* 8029F064 0029ACC4 41 82 00 0C */ beq lbl_8029F070 /* 8029F068 0029ACC8 3A 97 FF FF */ addi r20, r23, -1 /* 8029F06C 0029ACCC 38 60 00 00 */ li r3, 0 lbl_8029F070: /* 8029F070 0029ACD0 6C 6A 80 00 */ xoris r10, r3, 0x8000 /* 8029F074 0029ACD4 6E D5 80 00 */ xoris r21, r22, 0x8000 /* 8029F078 0029ACD8 7D 97 A0 10 */ subfc r12, r23, r20 /* 8029F07C 0029ACDC 7E B5 51 10 */ subfe r21, r21, r10 /* 8029F080 0029ACE0 7E AA 51 10 */ subfe r21, r10, r10 /* 8029F084 0029ACE4 7E B5 00 D1 */ neg. r21, r21 /* 8029F088 0029ACE8 41 82 00 0C */ beq lbl_8029F094 /* 8029F08C 0029ACEC 3E 80 80 00 */ lis r20, 0x8000 /* 8029F090 0029ACF0 38 60 FF FF */ li r3, -1 lbl_8029F094: /* 8029F094 0029ACF4 56 8C 80 3E */ rotlwi r12, r20, 0x10 /* 8029F098 0029ACF8 7D 2A 4B 78 */ mr r10, r9 /* 8029F09C 0029ACFC 50 6C 80 1E */ rlwimi r12, r3, 0x10, 0, 0xf /* 8029F0A0 0029AD00 7C 63 86 70 */ srawi r3, r3, 0x10 /* 8029F0A4 0029AD04 B1 9F 00 00 */ sth r12, 0(r31) /* 8029F0A8 0029AD08 7D 89 63 78 */ mr r9, r12 /* 8029F0AC 0029AD0C 7F FF 42 14 */ add r31, r31, r8 /* 8029F0B0 0029AD10 39 6B 00 01 */ addi r11, r11, 1 /* 8029F0B4 0029AD14 B1 9E 00 00 */ sth r12, 0(r30) /* 8029F0B8 0029AD18 7F DE 42 14 */ add r30, r30, r8 lbl_8029F0BC: /* 8029F0BC 0029AD1C 80 64 00 04 */ lwz r3, 4(r4) /* 8029F0C0 0029AD20 7C 0B 18 40 */ cmplw r11, r3 /* 8029F0C4 0029AD24 41 80 FE E8 */ blt lbl_8029EFAC /* 8029F0C8 0029AD28 48 00 02 B0 */ b lbl_8029F378 lbl_8029F0CC: /* 8029F0CC 0029AD2C 88 14 00 00 */ lbz r0, 0(r20) /* 8029F0D0 0029AD30 3F 40 80 00 */ lis r26, 0x7FFFFFFF@ha /* 8029F0D4 0029AD34 38 C0 00 00 */ li r6, 0 /* 8029F0D8 0029AD38 3C E0 00 01 */ lis r7, 0x00008000@ha /* 8029F0DC 0029AD3C A8 64 00 48 */ lha r3, 0x48(r4) /* 8029F0E0 0029AD40 54 0A E7 7E */ rlwinm r10, r0, 0x1c, 0x1d, 0x1f /* 8029F0E4 0029AD44 54 0B 07 3E */ clrlwi r11, r0, 0x1c /* 8029F0E8 0029AD48 55 00 08 3C */ slwi r0, r8, 1 /* 8029F0EC 0029AD4C A8 A4 00 4A */ lha r5, 0x4a(r4) /* 8029F0F0 0029AD50 39 14 00 01 */ addi r8, r20, 1 /* 8029F0F4 0029AD54 3A C7 80 00 */ addi r22, r7, 0x00008000@l /* 8029F0F8 0029AD58 3B 9A FF FF */ addi r28, r26, 0x7FFFFFFF@l /* 8029F0FC 0029AD5C 6C DB 80 00 */ xoris r27, r6, 0x8000 /* 8029F100 0029AD60 39 20 00 02 */ li r9, 2 /* 8029F104 0029AD64 3B A0 00 00 */ li r29, 0 /* 8029F108 0029AD68 3B 20 FF FF */ li r25, -1 /* 8029F10C 0029AD6C 48 00 01 0C */ b lbl_8029F218 lbl_8029F110: /* 8029F110 0029AD70 55 27 07 3F */ clrlwi. r7, r9, 0x1c /* 8029F114 0029AD74 40 82 00 18 */ bne lbl_8029F12C /* 8029F118 0029AD78 88 E8 00 00 */ lbz r7, 0(r8) /* 8029F11C 0029AD7C 39 08 00 01 */ addi r8, r8, 1 /* 8029F120 0029AD80 39 29 00 02 */ addi r9, r9, 2 /* 8029F124 0029AD84 54 EA E7 7E */ rlwinm r10, r7, 0x1c, 0x1d, 0x1f /* 8029F128 0029AD88 54 EB 07 3E */ clrlwi r11, r7, 0x1c lbl_8029F12C: /* 8029F12C 0029AD8C 55 27 07 FF */ clrlwi. r7, r9, 0x1f /* 8029F130 0029AD90 41 82 00 18 */ beq lbl_8029F148 /* 8029F134 0029AD94 88 E8 00 00 */ lbz r7, 0(r8) /* 8029F138 0029AD98 39 08 00 01 */ addi r8, r8, 1 /* 8029F13C 0029AD9C 54 E7 E0 06 */ slwi r7, r7, 0x1c /* 8029F140 0029ADA0 7C F8 E6 70 */ srawi r24, r7, 0x1c /* 8029F144 0029ADA4 48 00 00 10 */ b lbl_8029F154 lbl_8029F148: /* 8029F148 0029ADA8 88 E8 00 00 */ lbz r7, 0(r8) /* 8029F14C 0029ADAC 54 E7 C0 06 */ rlwinm r7, r7, 0x18, 0, 3 /* 8029F150 0029ADB0 7C F8 E6 70 */ srawi r24, r7, 0x1c lbl_8029F154: /* 8029F154 0029ADB4 55 55 15 BA */ rlwinm r21, r10, 2, 0x16, 0x1d /* 8029F158 0029ADB8 55 67 06 3E */ clrlwi r7, r11, 0x18 /* 8029F15C 0029ADBC 7E 84 AA 14 */ add r20, r4, r21 /* 8029F160 0029ADC0 7C B7 07 34 */ extsh r23, r5 /* 8029F164 0029ADC4 AA B4 00 0A */ lha r21, 0xa(r20) /* 8029F168 0029ADC8 7F 05 38 30 */ slw r5, r24, r7 /* 8029F16C 0029ADCC A8 F4 00 08 */ lha r7, 8(r20) /* 8029F170 0029ADD0 7C 78 07 34 */ extsh r24, r3 /* 8029F174 0029ADD4 7E B7 A9 D6 */ mullw r21, r23, r21 /* 8029F178 0029ADD8 54 B7 58 28 */ slwi r23, r5, 0xb /* 8029F17C 0029ADDC 39 29 00 01 */ addi r9, r9, 1 /* 8029F180 0029ADE0 7F 18 39 D6 */ mullw r24, r24, r7 /* 8029F184 0029ADE4 7E A7 FE 70 */ srawi r7, r21, 0x1f /* 8029F188 0029ADE8 7F 05 FE 70 */ srawi r5, r24, 0x1f /* 8029F18C 0029ADEC 7F 15 C0 14 */ addc r24, r21, r24 /* 8029F190 0029ADF0 7C E7 29 14 */ adde r7, r7, r5 /* 8029F194 0029ADF4 7E E5 FE 70 */ srawi r5, r23, 0x1f /* 8029F198 0029ADF8 7E F8 B8 14 */ addc r23, r24, r23 /* 8029F19C 0029ADFC 7C A7 29 14 */ adde r5, r7, r5 /* 8029F1A0 0029AE00 56 E7 28 34 */ slwi r7, r23, 5 /* 8029F1A4 0029AE04 54 A5 28 34 */ slwi r5, r5, 5 /* 8029F1A8 0029AE08 52 E5 2E FE */ rlwimi r5, r23, 5, 0x1b, 0x1f /* 8029F1AC 0029AE0C 7E 87 B0 14 */ addc r20, r7, r22 /* 8029F1B0 0029AE10 7C E5 E9 14 */ adde r7, r5, r29 /* 8029F1B4 0029AE14 6C F7 80 00 */ xoris r23, r7, 0x8000 /* 8029F1B8 0029AE18 7C B4 E0 10 */ subfc r5, r20, r28 /* 8029F1BC 0029AE1C 7E F7 D9 10 */ subfe r23, r23, r27 /* 8029F1C0 0029AE20 7E FB D9 10 */ subfe r23, r27, r27 /* 8029F1C4 0029AE24 7E F7 00 D1 */ neg. r23, r23 /* 8029F1C8 0029AE28 41 82 00 0C */ beq lbl_8029F1D4 /* 8029F1CC 0029AE2C 3A 9A FF FF */ addi r20, r26, -1 /* 8029F1D0 0029AE30 38 E0 00 00 */ li r7, 0 lbl_8029F1D4: /* 8029F1D4 0029AE34 6C E5 80 00 */ xoris r5, r7, 0x8000 /* 8029F1D8 0029AE38 6F 38 80 00 */ xoris r24, r25, 0x8000 /* 8029F1DC 0029AE3C 7E FA A0 10 */ subfc r23, r26, r20 /* 8029F1E0 0029AE40 7F 18 29 10 */ subfe r24, r24, r5 /* 8029F1E4 0029AE44 7F 05 29 10 */ subfe r24, r5, r5 /* 8029F1E8 0029AE48 7F 18 00 D1 */ neg. r24, r24 /* 8029F1EC 0029AE4C 41 82 00 0C */ beq lbl_8029F1F8 /* 8029F1F0 0029AE50 3E 80 80 00 */ lis r20, 0x8000 /* 8029F1F4 0029AE54 38 E0 FF FF */ li r7, -1 lbl_8029F1F8: /* 8029F1F8 0029AE58 56 97 80 3E */ rotlwi r23, r20, 0x10 /* 8029F1FC 0029AE5C 7C 65 1B 78 */ mr r5, r3 /* 8029F200 0029AE60 50 F7 80 1E */ rlwimi r23, r7, 0x10, 0, 0xf /* 8029F204 0029AE64 7C E3 86 70 */ srawi r3, r7, 0x10 /* 8029F208 0029AE68 B2 FF 00 00 */ sth r23, 0(r31) /* 8029F20C 0029AE6C 7E E3 BB 78 */ mr r3, r23 /* 8029F210 0029AE70 7F FF 02 14 */ add r31, r31, r0 /* 8029F214 0029AE74 38 C6 00 01 */ addi r6, r6, 1 lbl_8029F218: /* 8029F218 0029AE78 80 E4 00 04 */ lwz r7, 4(r4) /* 8029F21C 0029AE7C 7C 06 38 40 */ cmplw r6, r7 /* 8029F220 0029AE80 41 80 FE F0 */ blt lbl_8029F110 /* 8029F224 0029AE84 89 0C 00 00 */ lbz r8, 0(r12) /* 8029F228 0029AE88 3F A0 80 00 */ lis r29, 0x7FFFFFFF@ha /* 8029F22C 0029AE8C 38 E0 00 00 */ li r7, 0 /* 8029F230 0029AE90 3C 60 00 01 */ lis r3, 0x00008000@ha /* 8029F234 0029AE94 A8 A4 00 4C */ lha r5, 0x4c(r4) /* 8029F238 0029AE98 55 0A E7 7E */ rlwinm r10, r8, 0x1c, 0x1d, 0x1f /* 8029F23C 0029AE9C 55 0B 07 3E */ clrlwi r11, r8, 0x1c /* 8029F240 0029AEA0 A8 C4 00 4E */ lha r6, 0x4e(r4) /* 8029F244 0029AEA4 39 0C 00 01 */ addi r8, r12, 1 /* 8029F248 0029AEA8 3B 23 80 00 */ addi r25, r3, 0x00008000@l /* 8029F24C 0029AEAC 3B 7D FF FF */ addi r27, r29, 0x7FFFFFFF@l /* 8029F250 0029AEB0 6C FC 80 00 */ xoris r28, r7, 0x8000 /* 8029F254 0029AEB4 39 20 00 02 */ li r9, 2 /* 8029F258 0029AEB8 3B 40 00 00 */ li r26, 0 /* 8029F25C 0029AEBC 3B E0 FF FF */ li r31, -1 /* 8029F260 0029AEC0 48 00 01 0C */ b lbl_8029F36C lbl_8029F264: /* 8029F264 0029AEC4 55 23 07 3F */ clrlwi. r3, r9, 0x1c /* 8029F268 0029AEC8 40 82 00 18 */ bne lbl_8029F280 /* 8029F26C 0029AECC 88 68 00 00 */ lbz r3, 0(r8) /* 8029F270 0029AED0 39 08 00 01 */ addi r8, r8, 1 /* 8029F274 0029AED4 39 29 00 02 */ addi r9, r9, 2 /* 8029F278 0029AED8 54 6A E7 7E */ rlwinm r10, r3, 0x1c, 0x1d, 0x1f /* 8029F27C 0029AEDC 54 6B 07 3E */ clrlwi r11, r3, 0x1c lbl_8029F280: /* 8029F280 0029AEE0 55 23 07 FF */ clrlwi. r3, r9, 0x1f /* 8029F284 0029AEE4 41 82 00 18 */ beq lbl_8029F29C /* 8029F288 0029AEE8 88 68 00 00 */ lbz r3, 0(r8) /* 8029F28C 0029AEEC 39 08 00 01 */ addi r8, r8, 1 /* 8029F290 0029AEF0 54 63 E0 06 */ slwi r3, r3, 0x1c /* 8029F294 0029AEF4 7C 75 E6 70 */ srawi r21, r3, 0x1c /* 8029F298 0029AEF8 48 00 00 10 */ b lbl_8029F2A8 lbl_8029F29C: /* 8029F29C 0029AEFC 88 68 00 00 */ lbz r3, 0(r8) /* 8029F2A0 0029AF00 54 63 C0 06 */ rlwinm r3, r3, 0x18, 0, 3 /* 8029F2A4 0029AF04 7C 75 E6 70 */ srawi r21, r3, 0x1c lbl_8029F2A8: /* 8029F2A8 0029AF08 55 4C 15 BA */ rlwinm r12, r10, 2, 0x16, 0x1d /* 8029F2AC 0029AF0C 55 63 06 3E */ clrlwi r3, r11, 0x18 /* 8029F2B0 0029AF10 7D 84 62 14 */ add r12, r4, r12 /* 8029F2B4 0029AF14 7C D7 07 34 */ extsh r23, r6 /* 8029F2B8 0029AF18 A8 CC 00 2A */ lha r6, 0x2a(r12) /* 8029F2BC 0029AF1C 7C B8 07 34 */ extsh r24, r5 /* 8029F2C0 0029AF20 A9 8C 00 28 */ lha r12, 0x28(r12) /* 8029F2C4 0029AF24 7E A3 18 30 */ slw r3, r21, r3 /* 8029F2C8 0029AF28 7E F7 31 D6 */ mullw r23, r23, r6 /* 8029F2CC 0029AF2C 39 29 00 01 */ addi r9, r9, 1 /* 8029F2D0 0029AF30 54 66 58 28 */ slwi r6, r3, 0xb /* 8029F2D4 0029AF34 7D 98 61 D6 */ mullw r12, r24, r12 /* 8029F2D8 0029AF38 7E F4 FE 70 */ srawi r20, r23, 0x1f /* 8029F2DC 0029AF3C 7D 83 FE 70 */ srawi r3, r12, 0x1f /* 8029F2E0 0029AF40 7D 97 60 14 */ addc r12, r23, r12 /* 8029F2E4 0029AF44 7F 14 19 14 */ adde r24, r20, r3 /* 8029F2E8 0029AF48 7C C3 FE 70 */ srawi r3, r6, 0x1f /* 8029F2EC 0029AF4C 7D 8C 30 14 */ addc r12, r12, r6 /* 8029F2F0 0029AF50 7C 78 19 14 */ adde r3, r24, r3 /* 8029F2F4 0029AF54 55 86 28 34 */ slwi r6, r12, 5 /* 8029F2F8 0029AF58 54 63 28 34 */ slwi r3, r3, 5 /* 8029F2FC 0029AF5C 51 83 2E FE */ rlwimi r3, r12, 5, 0x1b, 0x1f /* 8029F300 0029AF60 7E A6 C8 14 */ addc r21, r6, r25 /* 8029F304 0029AF64 7E 83 D1 14 */ adde r20, r3, r26 /* 8029F308 0029AF68 6E 86 80 00 */ xoris r6, r20, 0x8000 /* 8029F30C 0029AF6C 7C 75 D8 10 */ subfc r3, r21, r27 /* 8029F310 0029AF70 7C C6 E1 10 */ subfe r6, r6, r28 /* 8029F314 0029AF74 7C DC E1 10 */ subfe r6, r28, r28 /* 8029F318 0029AF78 7C C6 00 D1 */ neg. r6, r6 /* 8029F31C 0029AF7C 41 82 00 0C */ beq lbl_8029F328 /* 8029F320 0029AF80 3A BD FF FF */ addi r21, r29, -1 /* 8029F324 0029AF84 3A 80 00 00 */ li r20, 0 lbl_8029F328: /* 8029F328 0029AF88 6E 83 80 00 */ xoris r3, r20, 0x8000 /* 8029F32C 0029AF8C 6F EC 80 00 */ xoris r12, r31, 0x8000 /* 8029F330 0029AF90 7C DD A8 10 */ subfc r6, r29, r21 /* 8029F334 0029AF94 7D 8C 19 10 */ subfe r12, r12, r3 /* 8029F338 0029AF98 7D 83 19 10 */ subfe r12, r3, r3 /* 8029F33C 0029AF9C 7D 8C 00 D1 */ neg. r12, r12 /* 8029F340 0029AFA0 41 82 00 0C */ beq lbl_8029F34C /* 8029F344 0029AFA4 3E A0 80 00 */ lis r21, 0x8000 /* 8029F348 0029AFA8 3A 80 FF FF */ li r20, -1 lbl_8029F34C: /* 8029F34C 0029AFAC 56 AC 80 3E */ rotlwi r12, r21, 0x10 /* 8029F350 0029AFB0 7C A6 2B 78 */ mr r6, r5 /* 8029F354 0029AFB4 52 8C 80 1E */ rlwimi r12, r20, 0x10, 0, 0xf /* 8029F358 0029AFB8 7E 83 86 70 */ srawi r3, r20, 0x10 /* 8029F35C 0029AFBC B1 9E 00 00 */ sth r12, 0(r30) /* 8029F360 0029AFC0 7D 85 63 78 */ mr r5, r12 /* 8029F364 0029AFC4 7F DE 02 14 */ add r30, r30, r0 /* 8029F368 0029AFC8 38 E7 00 01 */ addi r7, r7, 1 lbl_8029F36C: /* 8029F36C 0029AFCC 80 64 00 04 */ lwz r3, 4(r4) /* 8029F370 0029AFD0 7C 07 18 40 */ cmplw r7, r3 /* 8029F374 0029AFD4 41 80 FE F0 */ blt lbl_8029F264 lbl_8029F378: /* 8029F378 0029AFD8 39 61 00 40 */ addi r11, r1, 0x40 /* 8029F37C 0029AFDC 4B F2 7D DD */ bl _restgpr_20 /* 8029F380 0029AFE0 80 01 00 44 */ lwz r0, 0x44(r1) /* 8029F384 0029AFE4 7C 08 03 A6 */ mtlr r0 /* 8029F388 0029AFE8 38 21 00 40 */ addi r1, r1, 0x40 /* 8029F38C 0029AFEC 4E 80 00 20 */ blr