From a29ddf88efcd0406c5808b687283f43227d7b9a5 Mon Sep 17 00:00:00 2001 From: Max Date: Wed, 7 Oct 2020 13:37:02 -0400 Subject: split CXCompression.s and CXUncompression.s --- asm/SDK/CX/CXCompression.s | 351 ++++++++++++++++++++++++++++++++ asm/SDK/CX/CXUncompression.s | 114 +++++++++++ asm/text_4.s | 2 +- asm/text_7.s | 2 +- asm/text_8_6.s | 463 ------------------------------------------- 5 files changed, 467 insertions(+), 465 deletions(-) create mode 100644 asm/SDK/CX/CXCompression.s create mode 100644 asm/SDK/CX/CXUncompression.s delete mode 100644 asm/text_8_6.s (limited to 'asm') diff --git a/asm/SDK/CX/CXCompression.s b/asm/SDK/CX/CXCompression.s new file mode 100644 index 0000000..4eb692e --- /dev/null +++ b/asm/SDK/CX/CXCompression.s @@ -0,0 +1,351 @@ +.include "macros.inc" + +.section .text, "ax" # 0x80006980 - 0x803E1E60 + +.global CXCompressLZ +CXCompressLZ: +/* 802A2244 0029DEA4 94 21 FF B0 */ stwu r1, -0x50(r1) +/* 802A2248 0029DEA8 7C 08 02 A6 */ mflr r0 +/* 802A224C 0029DEAC 90 01 00 54 */ stw r0, 0x54(r1) +/* 802A2250 0029DEB0 39 61 00 50 */ addi r11, r1, 0x50 +/* 802A2254 0029DEB4 4B F2 4E BD */ bl _savegpr_21 +/* 802A2258 0029DEB8 3C 00 01 00 */ lis r0, 0x100 +/* 802A225C 0029DEBC 7C 77 1B 78 */ mr r23, r3 +/* 802A2260 0029DEC0 7C 04 00 40 */ cmplw r4, r0 +/* 802A2264 0029DEC4 7C 98 23 78 */ mr r24, r4 +/* 802A2268 0029DEC8 40 80 00 30 */ bge lbl_802A2298 +/* 802A226C 0029DECC 54 80 40 2E */ slwi r0, r4, 8 +/* 802A2270 0029DED0 3B 25 00 04 */ addi r25, r5, 4 +/* 802A2274 0029DED4 60 04 00 10 */ ori r4, r0, 0x10 +/* 802A2278 0029DED8 3B C0 00 04 */ li r30, 4 +/* 802A227C 0029DEDC 54 83 42 1E */ rlwinm r3, r4, 8, 8, 0xf +/* 802A2280 0029DEE0 54 80 C4 2E */ rlwinm r0, r4, 0x18, 0x10, 0x17 +/* 802A2284 0029DEE4 50 83 C0 C6 */ rlwimi r3, r4, 0x18, 3, 3 +/* 802A2288 0029DEE8 50 80 46 3E */ rlwimi r0, r4, 8, 0x18, 0x1f +/* 802A228C 0029DEEC 7C 60 03 78 */ or r0, r3, r0 +/* 802A2290 0029DEF0 90 05 00 00 */ stw r0, 0(r5) +/* 802A2294 0029DEF4 48 00 00 2C */ b lbl_802A22C0 +lbl_802A2298: +/* 802A2298 0029DEF8 54 83 42 1E */ rlwinm r3, r4, 8, 8, 0xf +/* 802A229C 0029DEFC 54 80 C4 2E */ rlwinm r0, r4, 0x18, 0x10, 0x17 +/* 802A22A0 0029DF00 3C E0 10 00 */ lis r7, 0x1000 +/* 802A22A4 0029DF04 3B 25 00 08 */ addi r25, r5, 8 +/* 802A22A8 0029DF08 50 83 C0 0E */ rlwimi r3, r4, 0x18, 0, 7 +/* 802A22AC 0029DF0C 50 80 46 3E */ rlwimi r0, r4, 8, 0x18, 0x1f +/* 802A22B0 0029DF10 7C 60 03 78 */ or r0, r3, r0 +/* 802A22B4 0029DF14 90 E5 00 00 */ stw r7, 0(r5) +/* 802A22B8 0029DF18 3B C0 00 08 */ li r30, 8 +/* 802A22BC 0029DF1C 90 05 00 04 */ stw r0, 4(r5) +lbl_802A22C0: +/* 802A22C0 0029DF20 38 E6 20 00 */ addi r7, r6, 0x2000 +/* 802A22C4 0029DF24 38 A6 22 00 */ addi r5, r6, 0x2200 +/* 802A22C8 0029DF28 38 80 00 20 */ li r4, 0x20 +/* 802A22CC 0029DF2C 7F 1A C3 78 */ mr r26, r24 +/* 802A22D0 0029DF30 90 C1 00 14 */ stw r6, 0x14(r1) +/* 802A22D4 0029DF34 38 60 00 00 */ li r3, 0 +/* 802A22D8 0029DF38 38 00 FF FF */ li r0, -1 +/* 802A22DC 0029DF3C 90 E1 00 18 */ stw r7, 0x18(r1) +/* 802A22E0 0029DF40 90 A1 00 1C */ stw r5, 0x1c(r1) +/* 802A22E4 0029DF44 7C 89 03 A6 */ mtctr r4 +lbl_802A22E8: +/* 802A22E8 0029DF48 80 A1 00 18 */ lwz r5, 0x18(r1) +/* 802A22EC 0029DF4C 54 64 0B FC */ rlwinm r4, r3, 1, 0xf, 0x1e +/* 802A22F0 0029DF50 38 63 00 08 */ addi r3, r3, 8 +/* 802A22F4 0029DF54 7C 05 23 2E */ sthx r0, r5, r4 +/* 802A22F8 0029DF58 80 A1 00 1C */ lwz r5, 0x1c(r1) +/* 802A22FC 0029DF5C 7C 05 23 2E */ sthx r0, r5, r4 +/* 802A2300 0029DF60 80 A1 00 18 */ lwz r5, 0x18(r1) +/* 802A2304 0029DF64 7C A5 22 14 */ add r5, r5, r4 +/* 802A2308 0029DF68 B0 05 00 02 */ sth r0, 2(r5) +/* 802A230C 0029DF6C 80 A1 00 1C */ lwz r5, 0x1c(r1) +/* 802A2310 0029DF70 7C A5 22 14 */ add r5, r5, r4 +/* 802A2314 0029DF74 B0 05 00 02 */ sth r0, 2(r5) +/* 802A2318 0029DF78 80 A1 00 18 */ lwz r5, 0x18(r1) +/* 802A231C 0029DF7C 7C A5 22 14 */ add r5, r5, r4 +/* 802A2320 0029DF80 B0 05 00 04 */ sth r0, 4(r5) +/* 802A2324 0029DF84 80 A1 00 1C */ lwz r5, 0x1c(r1) +/* 802A2328 0029DF88 7C A5 22 14 */ add r5, r5, r4 +/* 802A232C 0029DF8C B0 05 00 04 */ sth r0, 4(r5) +/* 802A2330 0029DF90 80 A1 00 18 */ lwz r5, 0x18(r1) +/* 802A2334 0029DF94 7C A5 22 14 */ add r5, r5, r4 +/* 802A2338 0029DF98 B0 05 00 06 */ sth r0, 6(r5) +/* 802A233C 0029DF9C 80 A1 00 1C */ lwz r5, 0x1c(r1) +/* 802A2340 0029DFA0 7C A5 22 14 */ add r5, r5, r4 +/* 802A2344 0029DFA4 B0 05 00 06 */ sth r0, 6(r5) +/* 802A2348 0029DFA8 80 A1 00 18 */ lwz r5, 0x18(r1) +/* 802A234C 0029DFAC 7C A5 22 14 */ add r5, r5, r4 +/* 802A2350 0029DFB0 B0 05 00 08 */ sth r0, 8(r5) +/* 802A2354 0029DFB4 80 A1 00 1C */ lwz r5, 0x1c(r1) +/* 802A2358 0029DFB8 7C A5 22 14 */ add r5, r5, r4 +/* 802A235C 0029DFBC B0 05 00 08 */ sth r0, 8(r5) +/* 802A2360 0029DFC0 80 A1 00 18 */ lwz r5, 0x18(r1) +/* 802A2364 0029DFC4 7C A5 22 14 */ add r5, r5, r4 +/* 802A2368 0029DFC8 B0 05 00 0A */ sth r0, 0xa(r5) +/* 802A236C 0029DFCC 80 A1 00 1C */ lwz r5, 0x1c(r1) +/* 802A2370 0029DFD0 7C A5 22 14 */ add r5, r5, r4 +/* 802A2374 0029DFD4 B0 05 00 0A */ sth r0, 0xa(r5) +/* 802A2378 0029DFD8 80 A1 00 18 */ lwz r5, 0x18(r1) +/* 802A237C 0029DFDC 7C A5 22 14 */ add r5, r5, r4 +/* 802A2380 0029DFE0 B0 05 00 0C */ sth r0, 0xc(r5) +/* 802A2384 0029DFE4 80 A1 00 1C */ lwz r5, 0x1c(r1) +/* 802A2388 0029DFE8 7C A5 22 14 */ add r5, r5, r4 +/* 802A238C 0029DFEC B0 05 00 0C */ sth r0, 0xc(r5) +/* 802A2390 0029DFF0 80 A1 00 18 */ lwz r5, 0x18(r1) +/* 802A2394 0029DFF4 7C A5 22 14 */ add r5, r5, r4 +/* 802A2398 0029DFF8 B0 05 00 0E */ sth r0, 0xe(r5) +/* 802A239C 0029DFFC 80 A1 00 1C */ lwz r5, 0x1c(r1) +/* 802A23A0 0029E000 7C 85 22 14 */ add r4, r5, r4 +/* 802A23A4 0029E004 B0 04 00 0E */ sth r0, 0xe(r4) +/* 802A23A8 0029E008 42 00 FF 40 */ bdnz lbl_802A22E8 +/* 802A23AC 0029E00C 38 00 00 00 */ li r0, 0 +/* 802A23B0 0029E010 B0 01 00 10 */ sth r0, 0x10(r1) +/* 802A23B4 0029E014 B0 01 00 12 */ sth r0, 0x12(r1) +/* 802A23B8 0029E018 48 00 01 04 */ b lbl_802A24BC +lbl_802A23BC: +/* 802A23BC 0029E01C 7F 3C CB 78 */ mr r28, r25 +/* 802A23C0 0029E020 3B A0 00 00 */ li r29, 0 +/* 802A23C4 0029E024 3B 60 00 00 */ li r27, 0 +/* 802A23C8 0029E028 3B 39 00 01 */ addi r25, r25, 1 +/* 802A23CC 0029E02C 3B DE 00 01 */ addi r30, r30, 1 +lbl_802A23D0: +/* 802A23D0 0029E030 2C 18 00 00 */ cmpwi r24, 0 +/* 802A23D4 0029E034 57 BD 0E 3C */ rlwinm r29, r29, 1, 0x18, 0x1e +/* 802A23D8 0029E038 41 82 00 D4 */ beq lbl_802A24AC +/* 802A23DC 0029E03C 7E E4 BB 78 */ mr r4, r23 +/* 802A23E0 0029E040 7F 05 C3 78 */ mr r5, r24 +/* 802A23E4 0029E044 38 61 00 10 */ addi r3, r1, 0x10 +/* 802A23E8 0029E048 38 C1 00 08 */ addi r6, r1, 8 +/* 802A23EC 0029E04C 48 00 01 1D */ bl SearchLZ +/* 802A23F0 0029E050 54 7F 06 3F */ clrlwi. r31, r3, 0x18 +/* 802A23F4 0029E054 41 82 00 80 */ beq lbl_802A2474 +/* 802A23F8 0029E058 38 1E 00 02 */ addi r0, r30, 2 +/* 802A23FC 0029E05C 63 BD 00 01 */ ori r29, r29, 1 +/* 802A2400 0029E060 7C 00 D0 40 */ cmplw r0, r26 +/* 802A2404 0029E064 41 80 00 0C */ blt lbl_802A2410 +/* 802A2408 0029E068 38 60 00 00 */ li r3, 0 +/* 802A240C 0029E06C 48 00 00 E4 */ b lbl_802A24F0 +lbl_802A2410: +/* 802A2410 0029E070 A0 61 00 08 */ lhz r3, 8(r1) +/* 802A2414 0029E074 38 1F FF FD */ addi r0, r31, -3 +/* 802A2418 0029E078 54 04 20 36 */ slwi r4, r0, 4 +/* 802A241C 0029E07C 7E F6 BB 78 */ mr r22, r23 +/* 802A2420 0029E080 38 03 FF FF */ addi r0, r3, -1 +/* 802A2424 0029E084 3A A0 00 00 */ li r21, 0 +/* 802A2428 0029E088 7C 00 46 70 */ srawi r0, r0, 8 +/* 802A242C 0029E08C 3B DE 00 02 */ addi r30, r30, 2 +/* 802A2430 0029E090 7C 80 03 78 */ or r0, r4, r0 +/* 802A2434 0029E094 98 19 00 00 */ stb r0, 0(r25) +/* 802A2438 0029E098 A0 61 00 08 */ lhz r3, 8(r1) +/* 802A243C 0029E09C 38 03 FF FF */ addi r0, r3, -1 +/* 802A2440 0029E0A0 98 19 00 01 */ stb r0, 1(r25) +/* 802A2444 0029E0A4 3B 39 00 02 */ addi r25, r25, 2 +/* 802A2448 0029E0A8 48 00 00 18 */ b lbl_802A2460 +lbl_802A244C: +/* 802A244C 0029E0AC 7E C4 B3 78 */ mr r4, r22 +/* 802A2450 0029E0B0 38 61 00 10 */ addi r3, r1, 0x10 +/* 802A2454 0029E0B4 3A D6 00 01 */ addi r22, r22, 1 +/* 802A2458 0029E0B8 48 00 01 F9 */ bl SlideByte +/* 802A245C 0029E0BC 3A B5 00 01 */ addi r21, r21, 1 +lbl_802A2460: +/* 802A2460 0029E0C0 7C 15 F8 40 */ cmplw r21, r31 +/* 802A2464 0029E0C4 41 80 FF E8 */ blt lbl_802A244C +/* 802A2468 0029E0C8 7E F7 FA 14 */ add r23, r23, r31 +/* 802A246C 0029E0CC 7F 1F C0 50 */ subf r24, r31, r24 +/* 802A2470 0029E0D0 48 00 00 3C */ b lbl_802A24AC +lbl_802A2474: +/* 802A2474 0029E0D4 38 1E 00 01 */ addi r0, r30, 1 +/* 802A2478 0029E0D8 7C 00 D0 40 */ cmplw r0, r26 +/* 802A247C 0029E0DC 41 80 00 0C */ blt lbl_802A2488 +/* 802A2480 0029E0E0 38 60 00 00 */ li r3, 0 +/* 802A2484 0029E0E4 48 00 00 6C */ b lbl_802A24F0 +lbl_802A2488: +/* 802A2488 0029E0E8 7E E4 BB 78 */ mr r4, r23 +/* 802A248C 0029E0EC 38 61 00 10 */ addi r3, r1, 0x10 +/* 802A2490 0029E0F0 48 00 01 C1 */ bl SlideByte +/* 802A2494 0029E0F4 88 17 00 00 */ lbz r0, 0(r23) +/* 802A2498 0029E0F8 3B 18 FF FF */ addi r24, r24, -1 +/* 802A249C 0029E0FC 3B DE 00 01 */ addi r30, r30, 1 +/* 802A24A0 0029E100 3A F7 00 01 */ addi r23, r23, 1 +/* 802A24A4 0029E104 98 19 00 00 */ stb r0, 0(r25) +/* 802A24A8 0029E108 3B 39 00 01 */ addi r25, r25, 1 +lbl_802A24AC: +/* 802A24AC 0029E10C 3B 7B 00 01 */ addi r27, r27, 1 +/* 802A24B0 0029E110 28 1B 00 08 */ cmplwi r27, 8 +/* 802A24B4 0029E114 41 80 FF 1C */ blt lbl_802A23D0 +/* 802A24B8 0029E118 9B BC 00 00 */ stb r29, 0(r28) +lbl_802A24BC: +/* 802A24BC 0029E11C 2C 18 00 00 */ cmpwi r24, 0 +/* 802A24C0 0029E120 40 82 FE FC */ bne lbl_802A23BC +/* 802A24C4 0029E124 38 80 00 00 */ li r4, 0 +/* 802A24C8 0029E128 38 60 00 00 */ li r3, 0 +/* 802A24CC 0029E12C 48 00 00 10 */ b lbl_802A24DC +lbl_802A24D0: +/* 802A24D0 0029E130 98 79 00 00 */ stb r3, 0(r25) +/* 802A24D4 0029E134 3B 39 00 01 */ addi r25, r25, 1 +/* 802A24D8 0029E138 38 84 00 01 */ addi r4, r4, 1 +lbl_802A24DC: +/* 802A24DC 0029E13C 54 80 06 3E */ clrlwi r0, r4, 0x18 +/* 802A24E0 0029E140 7C 1E 02 14 */ add r0, r30, r0 +/* 802A24E4 0029E144 54 00 07 BF */ clrlwi. r0, r0, 0x1e +/* 802A24E8 0029E148 40 82 FF E8 */ bne lbl_802A24D0 +/* 802A24EC 0029E14C 7F C3 F3 78 */ mr r3, r30 +lbl_802A24F0: +/* 802A24F0 0029E150 39 61 00 50 */ addi r11, r1, 0x50 +/* 802A24F4 0029E154 4B F2 4C 69 */ bl _restgpr_21 +/* 802A24F8 0029E158 80 01 00 54 */ lwz r0, 0x54(r1) +/* 802A24FC 0029E15C 7C 08 03 A6 */ mtlr r0 +/* 802A2500 0029E160 38 21 00 50 */ addi r1, r1, 0x50 +/* 802A2504 0029E164 4E 80 00 20 */ blr + +SearchLZ: +/* 802A2508 0029E168 94 21 FF E0 */ stwu r1, -0x20(r1) +/* 802A250C 0029E16C 7C 08 02 A6 */ mflr r0 +/* 802A2510 0029E170 90 01 00 24 */ stw r0, 0x24(r1) +/* 802A2514 0029E174 39 61 00 20 */ addi r11, r1, 0x20 +/* 802A2518 0029E178 4B F2 4C 11 */ bl _savegpr_27 +/* 802A251C 0029E17C 28 05 00 03 */ cmplwi r5, 3 +/* 802A2520 0029E180 80 E3 00 04 */ lwz r7, 4(r3) +/* 802A2524 0029E184 A1 63 00 00 */ lhz r11, 0(r3) +/* 802A2528 0029E188 38 00 00 02 */ li r0, 2 +/* 802A252C 0029E18C A1 03 00 02 */ lhz r8, 2(r3) +/* 802A2530 0029E190 40 80 00 0C */ bge lbl_802A253C +/* 802A2534 0029E194 38 60 00 00 */ li r3, 0 +/* 802A2538 0029E198 48 00 01 00 */ b lbl_802A2638 +lbl_802A253C: +/* 802A253C 0029E19C 89 24 00 00 */ lbz r9, 0(r4) +/* 802A2540 0029E1A0 7D 08 20 50 */ subf r8, r8, r4 +/* 802A2544 0029E1A4 81 43 00 08 */ lwz r10, 8(r3) +/* 802A2548 0029E1A8 7D 8B 20 50 */ subf r12, r11, r4 +/* 802A254C 0029E1AC 55 23 08 3C */ slwi r3, r9, 1 +/* 802A2550 0029E1B0 7D 2B 40 50 */ subf r9, r11, r8 +/* 802A2554 0029E1B4 7F 6A 1A AE */ lhax r27, r10, r3 +/* 802A2558 0029E1B8 48 00 00 BC */ b lbl_802A2614 +lbl_802A255C: +/* 802A255C 0029E1BC 7C 1B 58 00 */ cmpw r27, r11 +/* 802A2560 0029E1C0 40 80 00 0C */ bge lbl_802A256C +/* 802A2564 0029E1C4 7F EC DA 14 */ add r31, r12, r27 +/* 802A2568 0029E1C8 48 00 00 08 */ b lbl_802A2570 +lbl_802A256C: +/* 802A256C 0029E1CC 7F E9 DA 14 */ add r31, r9, r27 +lbl_802A2570: +/* 802A2570 0029E1D0 89 1F 00 01 */ lbz r8, 1(r31) +/* 802A2574 0029E1D4 88 64 00 01 */ lbz r3, 1(r4) +/* 802A2578 0029E1D8 7C 08 18 40 */ cmplw r8, r3 +/* 802A257C 0029E1DC 40 82 00 14 */ bne lbl_802A2590 +/* 802A2580 0029E1E0 89 1F 00 02 */ lbz r8, 2(r31) +/* 802A2584 0029E1E4 88 64 00 02 */ lbz r3, 2(r4) +/* 802A2588 0029E1E8 7C 08 18 40 */ cmplw r8, r3 +/* 802A258C 0029E1EC 41 82 00 10 */ beq lbl_802A259C +lbl_802A2590: +/* 802A2590 0029E1F0 57 63 08 3C */ slwi r3, r27, 1 +/* 802A2594 0029E1F4 7F 67 1A AE */ lhax r27, r7, r3 +/* 802A2598 0029E1F8 48 00 00 7C */ b lbl_802A2614 +lbl_802A259C: +/* 802A259C 0029E1FC 7D 5F 20 50 */ subf r10, r31, r4 +/* 802A25A0 0029E200 2C 0A 00 02 */ cmpwi r10, 2 +/* 802A25A4 0029E204 41 80 00 78 */ blt lbl_802A261C +/* 802A25A8 0029E208 3B DF 00 03 */ addi r30, r31, 3 +/* 802A25AC 0029E20C 3B E4 00 03 */ addi r31, r4, 3 +/* 802A25B0 0029E210 3B 80 00 03 */ li r28, 3 +/* 802A25B4 0029E214 48 00 00 1C */ b lbl_802A25D0 +lbl_802A25B8: +/* 802A25B8 0029E218 3B 9C 00 01 */ addi r28, r28, 1 +/* 802A25BC 0029E21C 3B FF 00 01 */ addi r31, r31, 1 +/* 802A25C0 0029E220 57 83 06 3E */ clrlwi r3, r28, 0x18 +/* 802A25C4 0029E224 3B DE 00 01 */ addi r30, r30, 1 +/* 802A25C8 0029E228 28 03 00 12 */ cmplwi r3, 0x12 +/* 802A25CC 0029E22C 41 82 00 20 */ beq lbl_802A25EC +lbl_802A25D0: +/* 802A25D0 0029E230 7C 64 F8 50 */ subf r3, r4, r31 +/* 802A25D4 0029E234 7C 03 28 40 */ cmplw r3, r5 +/* 802A25D8 0029E238 40 80 00 14 */ bge lbl_802A25EC +/* 802A25DC 0029E23C 89 1F 00 00 */ lbz r8, 0(r31) +/* 802A25E0 0029E240 88 7E 00 00 */ lbz r3, 0(r30) +/* 802A25E4 0029E244 7C 08 18 40 */ cmplw r8, r3 +/* 802A25E8 0029E248 41 82 FF D0 */ beq lbl_802A25B8 +lbl_802A25EC: +/* 802A25EC 0029E24C 57 88 06 3E */ clrlwi r8, r28, 0x18 +/* 802A25F0 0029E250 54 03 06 3E */ clrlwi r3, r0, 0x18 +/* 802A25F4 0029E254 7C 08 18 40 */ cmplw r8, r3 +/* 802A25F8 0029E258 40 81 00 14 */ ble lbl_802A260C +/* 802A25FC 0029E25C 28 08 00 12 */ cmplwi r8, 0x12 +/* 802A2600 0029E260 7F 80 E3 78 */ mr r0, r28 +/* 802A2604 0029E264 55 5D 04 3E */ clrlwi r29, r10, 0x10 +/* 802A2608 0029E268 41 82 00 14 */ beq lbl_802A261C +lbl_802A260C: +/* 802A260C 0029E26C 57 63 08 3C */ slwi r3, r27, 1 +/* 802A2610 0029E270 7F 67 1A AE */ lhax r27, r7, r3 +lbl_802A2614: +/* 802A2614 0029E274 2C 1B FF FF */ cmpwi r27, -1 +/* 802A2618 0029E278 40 82 FF 44 */ bne lbl_802A255C +lbl_802A261C: +/* 802A261C 0029E27C 54 03 06 3E */ clrlwi r3, r0, 0x18 +/* 802A2620 0029E280 28 03 00 03 */ cmplwi r3, 3 +/* 802A2624 0029E284 40 80 00 0C */ bge lbl_802A2630 +/* 802A2628 0029E288 38 60 00 00 */ li r3, 0 +/* 802A262C 0029E28C 48 00 00 0C */ b lbl_802A2638 +lbl_802A2630: +/* 802A2630 0029E290 B3 A6 00 00 */ sth r29, 0(r6) +/* 802A2634 0029E294 7C 03 03 78 */ mr r3, r0 +lbl_802A2638: +/* 802A2638 0029E298 39 61 00 20 */ addi r11, r1, 0x20 +/* 802A263C 0029E29C 4B F2 4B 39 */ bl _restgpr_27 +/* 802A2640 0029E2A0 80 01 00 24 */ lwz r0, 0x24(r1) +/* 802A2644 0029E2A4 7C 08 03 A6 */ mtlr r0 +/* 802A2648 0029E2A8 38 21 00 20 */ addi r1, r1, 0x20 +/* 802A264C 0029E2AC 4E 80 00 20 */ blr + +SlideByte: +/* 802A2650 0029E2B0 A0 A3 00 02 */ lhz r5, 2(r3) +/* 802A2654 0029E2B4 88 E4 00 00 */ lbz r7, 0(r4) +/* 802A2658 0029E2B8 28 05 10 00 */ cmplwi r5, 0x1000 +/* 802A265C 0029E2BC 81 23 00 08 */ lwz r9, 8(r3) +/* 802A2660 0029E2C0 81 43 00 04 */ lwz r10, 4(r3) +/* 802A2664 0029E2C4 81 63 00 0C */ lwz r11, 0xc(r3) +/* 802A2668 0029E2C8 A0 C3 00 00 */ lhz r6, 0(r3) +/* 802A266C 0029E2CC 40 82 00 34 */ bne lbl_802A26A0 +/* 802A2670 0029E2D0 88 04 F0 00 */ lbz r0, -0x1000(r4) +/* 802A2674 0029E2D4 54 04 08 3C */ slwi r4, r0, 1 +/* 802A2678 0029E2D8 7C 09 22 AE */ lhax r0, r9, r4 +/* 802A267C 0029E2DC 54 00 08 3C */ slwi r0, r0, 1 +/* 802A2680 0029E2E0 7C 0A 02 AE */ lhax r0, r10, r0 +/* 802A2684 0029E2E4 2C 00 FF FF */ cmpwi r0, -1 +/* 802A2688 0029E2E8 7C 09 23 2E */ sthx r0, r9, r4 +/* 802A268C 0029E2EC 40 82 00 0C */ bne lbl_802A2698 +/* 802A2690 0029E2F0 38 00 FF FF */ li r0, -1 +/* 802A2694 0029E2F4 7C 0B 23 2E */ sthx r0, r11, r4 +lbl_802A2698: +/* 802A2698 0029E2F8 7C C8 33 78 */ mr r8, r6 +/* 802A269C 0029E2FC 48 00 00 08 */ b lbl_802A26A4 +lbl_802A26A0: +/* 802A26A0 0029E300 7C A8 2B 78 */ mr r8, r5 +lbl_802A26A4: +/* 802A26A4 0029E304 54 E4 0D FC */ rlwinm r4, r7, 1, 0x17, 0x1e +/* 802A26A8 0029E308 7C 0B 22 AE */ lhax r0, r11, r4 +/* 802A26AC 0029E30C 2C 00 FF FF */ cmpwi r0, -1 +/* 802A26B0 0029E310 40 82 00 0C */ bne lbl_802A26BC +/* 802A26B4 0029E314 7D 09 23 2E */ sthx r8, r9, r4 +/* 802A26B8 0029E318 48 00 00 0C */ b lbl_802A26C4 +lbl_802A26BC: +/* 802A26BC 0029E31C 54 00 08 3C */ slwi r0, r0, 1 +/* 802A26C0 0029E320 7D 0A 03 2E */ sthx r8, r10, r0 +lbl_802A26C4: +/* 802A26C4 0029E324 7D 0B 23 2E */ sthx r8, r11, r4 +/* 802A26C8 0029E328 28 05 10 00 */ cmplwi r5, 0x1000 +/* 802A26CC 0029E32C 55 00 0B FC */ rlwinm r0, r8, 1, 0xf, 0x1e +/* 802A26D0 0029E330 38 80 FF FF */ li r4, -1 +/* 802A26D4 0029E334 7C 8A 03 2E */ sthx r4, r10, r0 +/* 802A26D8 0029E338 40 82 00 24 */ bne lbl_802A26FC +/* 802A26DC 0029E33C 38 86 00 01 */ addi r4, r6, 1 +/* 802A26E0 0029E340 54 80 A0 16 */ slwi r0, r4, 0x14 +/* 802A26E4 0029E344 54 84 0F FE */ srwi r4, r4, 0x1f +/* 802A26E8 0029E348 7C 04 00 50 */ subf r0, r4, r0 +/* 802A26EC 0029E34C 54 00 60 3E */ rotlwi r0, r0, 0xc +/* 802A26F0 0029E350 7C 00 22 14 */ add r0, r0, r4 +/* 802A26F4 0029E354 B0 03 00 00 */ sth r0, 0(r3) +/* 802A26F8 0029E358 4E 80 00 20 */ blr +lbl_802A26FC: +/* 802A26FC 0029E35C A0 83 00 02 */ lhz r4, 2(r3) +/* 802A2700 0029E360 38 04 00 01 */ addi r0, r4, 1 +/* 802A2704 0029E364 B0 03 00 02 */ sth r0, 2(r3) +/* 802A2708 0029E368 4E 80 00 20 */ blr diff --git a/asm/SDK/CX/CXUncompression.s b/asm/SDK/CX/CXUncompression.s new file mode 100644 index 0000000..ed93fe0 --- /dev/null +++ b/asm/SDK/CX/CXUncompression.s @@ -0,0 +1,114 @@ +.include "macros.inc" + +.section .text, "ax" # 0x80006980 - 0x803E1E60 + +.global CXGetUncompressedSize +CXGetUncompressedSize: +/* 802A270C 0029E36C 80 A3 00 00 */ lwz r5, 0(r3) +/* 802A2710 0029E370 54 A4 42 1E */ rlwinm r4, r5, 8, 8, 0xf +/* 802A2714 0029E374 54 A0 C4 2E */ rlwinm r0, r5, 0x18, 0x10, 0x17 +/* 802A2718 0029E378 50 A4 C0 0E */ rlwimi r4, r5, 0x18, 0, 7 +/* 802A271C 0029E37C 50 A0 46 3E */ rlwimi r0, r5, 8, 0x18, 0x1f +/* 802A2720 0029E380 7C 80 03 78 */ or r0, r4, r0 +/* 802A2724 0029E384 54 00 C2 3F */ rlwinm. r0, r0, 0x18, 8, 0x1f +/* 802A2728 0029E388 40 82 00 1C */ bne lbl_802A2744 +/* 802A272C 0029E38C 80 83 00 04 */ lwz r4, 4(r3) +/* 802A2730 0029E390 54 83 42 1E */ rlwinm r3, r4, 8, 8, 0xf +/* 802A2734 0029E394 54 80 C4 2E */ rlwinm r0, r4, 0x18, 0x10, 0x17 +/* 802A2738 0029E398 50 83 C0 0E */ rlwimi r3, r4, 0x18, 0, 7 +/* 802A273C 0029E39C 50 80 46 3E */ rlwimi r0, r4, 8, 0x18, 0x1f +/* 802A2740 0029E3A0 7C 60 03 78 */ or r0, r3, r0 +lbl_802A2744: +/* 802A2744 0029E3A4 7C 03 03 78 */ mr r3, r0 +/* 802A2748 0029E3A8 4E 80 00 20 */ blr + +# todo: confirm that this symbol is correct +.global CXUncompressLZ +CXUncompressLZ: +/* 802A274C 0029E3AC 80 A3 00 00 */ lwz r5, 0(r3) +/* 802A2750 0029E3B0 38 E3 00 04 */ addi r7, r3, 4 +/* 802A2754 0029E3B4 54 A3 42 1E */ rlwinm r3, r5, 8, 8, 0xf +/* 802A2758 0029E3B8 54 A0 C4 2E */ rlwinm r0, r5, 0x18, 0x10, 0x17 +/* 802A275C 0029E3BC 50 A3 C0 0E */ rlwimi r3, r5, 0x18, 0, 7 +/* 802A2760 0029E3C0 50 A0 46 3E */ rlwimi r0, r5, 8, 0x18, 0x1f +/* 802A2764 0029E3C4 7C 60 03 78 */ or r0, r3, r0 +/* 802A2768 0029E3C8 54 08 C2 3F */ rlwinm. r8, r0, 0x18, 8, 0x1f +/* 802A276C 0029E3CC 40 82 00 20 */ bne lbl_802A278C +/* 802A2770 0029E3D0 80 A7 00 00 */ lwz r5, 0(r7) +/* 802A2774 0029E3D4 38 E7 00 04 */ addi r7, r7, 4 +/* 802A2778 0029E3D8 54 A3 42 1E */ rlwinm r3, r5, 8, 8, 0xf +/* 802A277C 0029E3DC 54 A0 C4 2E */ rlwinm r0, r5, 0x18, 0x10, 0x17 +/* 802A2780 0029E3E0 50 A3 C0 0E */ rlwimi r3, r5, 0x18, 0, 7 +/* 802A2784 0029E3E4 50 A0 46 3E */ rlwimi r0, r5, 8, 0x18, 0x1f +/* 802A2788 0029E3E8 7C 68 03 78 */ or r8, r3, r0 +lbl_802A278C: +/* 802A278C 0029E3EC 38 00 00 04 */ li r0, 4 +/* 802A2790 0029E3F0 48 00 00 E4 */ b lbl_802A2874 +lbl_802A2794: +/* 802A2794 0029E3F4 89 47 00 00 */ lbz r10, 0(r7) +/* 802A2798 0029E3F8 39 20 00 00 */ li r9, 0 +/* 802A279C 0029E3FC 7C 09 03 A6 */ mtctr r0 +/* 802A27A0 0029E400 38 E7 00 01 */ addi r7, r7, 1 +lbl_802A27A4: +/* 802A27A4 0029E404 55 43 06 31 */ rlwinm. r3, r10, 0, 0x18, 0x18 +/* 802A27A8 0029E408 40 82 00 1C */ bne lbl_802A27C4 +/* 802A27AC 0029E40C 88 67 00 00 */ lbz r3, 0(r7) +/* 802A27B0 0029E410 39 08 FF FF */ addi r8, r8, -1 +/* 802A27B4 0029E414 38 E7 00 01 */ addi r7, r7, 1 +/* 802A27B8 0029E418 98 64 00 00 */ stb r3, 0(r4) +/* 802A27BC 0029E41C 38 84 00 01 */ addi r4, r4, 1 +/* 802A27C0 0029E420 48 00 00 3C */ b lbl_802A27FC +lbl_802A27C4: +/* 802A27C4 0029E424 88 C7 00 00 */ lbz r6, 0(r7) +/* 802A27C8 0029E428 88 67 00 01 */ lbz r3, 1(r7) +/* 802A27CC 0029E42C 38 E7 00 02 */ addi r7, r7, 2 +/* 802A27D0 0029E430 7C C5 26 70 */ srawi r5, r6, 4 +/* 802A27D4 0029E434 50 C3 45 2E */ rlwimi r3, r6, 8, 0x14, 0x17 +/* 802A27D8 0029E438 38 C5 00 03 */ addi r6, r5, 3 +/* 802A27DC 0029E43C 38 A3 00 01 */ addi r5, r3, 1 +/* 802A27E0 0029E440 7D 06 40 50 */ subf r8, r6, r8 +lbl_802A27E4: +/* 802A27E4 0029E444 7C 65 20 50 */ subf r3, r5, r4 +/* 802A27E8 0029E448 34 C6 FF FF */ addic. r6, r6, -1 +/* 802A27EC 0029E44C 88 63 00 00 */ lbz r3, 0(r3) +/* 802A27F0 0029E450 98 64 00 00 */ stb r3, 0(r4) +/* 802A27F4 0029E454 38 84 00 01 */ addi r4, r4, 1 +/* 802A27F8 0029E458 41 81 FF EC */ bgt lbl_802A27E4 +lbl_802A27FC: +/* 802A27FC 0029E45C 2C 08 00 00 */ cmpwi r8, 0 +/* 802A2800 0029E460 41 82 00 74 */ beq lbl_802A2874 +/* 802A2804 0029E464 55 4A 08 3C */ slwi r10, r10, 1 +/* 802A2808 0029E468 55 43 06 31 */ rlwinm. r3, r10, 0, 0x18, 0x18 +/* 802A280C 0029E46C 40 82 00 1C */ bne lbl_802A2828 +/* 802A2810 0029E470 88 67 00 00 */ lbz r3, 0(r7) +/* 802A2814 0029E474 39 08 FF FF */ addi r8, r8, -1 +/* 802A2818 0029E478 38 E7 00 01 */ addi r7, r7, 1 +/* 802A281C 0029E47C 98 64 00 00 */ stb r3, 0(r4) +/* 802A2820 0029E480 38 84 00 01 */ addi r4, r4, 1 +/* 802A2824 0029E484 48 00 00 3C */ b lbl_802A2860 +lbl_802A2828: +/* 802A2828 0029E488 88 C7 00 00 */ lbz r6, 0(r7) +/* 802A282C 0029E48C 88 67 00 01 */ lbz r3, 1(r7) +/* 802A2830 0029E490 38 E7 00 02 */ addi r7, r7, 2 +/* 802A2834 0029E494 7C C5 26 70 */ srawi r5, r6, 4 +/* 802A2838 0029E498 50 C3 45 2E */ rlwimi r3, r6, 8, 0x14, 0x17 +/* 802A283C 0029E49C 38 C5 00 03 */ addi r6, r5, 3 +/* 802A2840 0029E4A0 38 A3 00 01 */ addi r5, r3, 1 +/* 802A2844 0029E4A4 7D 06 40 50 */ subf r8, r6, r8 +lbl_802A2848: +/* 802A2848 0029E4A8 7C 65 20 50 */ subf r3, r5, r4 +/* 802A284C 0029E4AC 34 C6 FF FF */ addic. r6, r6, -1 +/* 802A2850 0029E4B0 88 63 00 00 */ lbz r3, 0(r3) +/* 802A2854 0029E4B4 98 64 00 00 */ stb r3, 0(r4) +/* 802A2858 0029E4B8 38 84 00 01 */ addi r4, r4, 1 +/* 802A285C 0029E4BC 41 81 FF EC */ bgt lbl_802A2848 +lbl_802A2860: +/* 802A2860 0029E4C0 2C 08 00 00 */ cmpwi r8, 0 +/* 802A2864 0029E4C4 41 82 00 10 */ beq lbl_802A2874 +/* 802A2868 0029E4C8 55 4A 08 3C */ slwi r10, r10, 1 +/* 802A286C 0029E4CC 39 29 00 01 */ addi r9, r9, 1 +/* 802A2870 0029E4D0 42 00 FF 34 */ bdnz lbl_802A27A4 +lbl_802A2874: +/* 802A2874 0029E4D4 2C 08 00 00 */ cmpwi r8, 0 +/* 802A2878 0029E4D8 40 82 FF 1C */ bne lbl_802A2794 +/* 802A287C 0029E4DC 4E 80 00 20 */ blr diff --git a/asm/text_4.s b/asm/text_4.s index 836b822..bf958a8 100644 --- a/asm/text_4.s +++ b/asm/text_4.s @@ -84942,7 +84942,7 @@ lbl_80164A24: /* 80164A28 00160688 7F 44 D3 78 */ mr r4, r26 /* 80164A2C 0016068C 7F A5 EB 78 */ mr r5, r29 /* 80164A30 00160690 7F 86 E3 78 */ mr r6, r28 -/* 80164A34 00160694 48 13 D8 11 */ bl func_802A2244 +/* 80164A34 00160694 48 13 D8 11 */ bl CXCompressLZ /* 80164A38 00160698 2C 03 00 00 */ cmpwi r3, 0 /* 80164A3C 0016069C 40 82 00 14 */ bne lbl_80164A50 /* 80164A40 001606A0 7F A3 EB 78 */ mr r3, r29 diff --git a/asm/text_7.s b/asm/text_7.s index b5d0e95..df1851e 100644 --- a/asm/text_7.s +++ b/asm/text_7.s @@ -17510,7 +17510,7 @@ lbl_802318BC: /* 802318C0 0022D520 2C 04 00 00 */ cmpwi r4, 0 /* 802318C4 0022D524 41 82 00 24 */ beq lbl_802318E8 /* 802318C8 0022D528 7F E3 FB 78 */ mr r3, r31 -/* 802318CC 0022D52C 48 07 0E 81 */ bl func_802A274C +/* 802318CC 0022D52C 48 07 0E 81 */ bl CXUncompressLZ /* 802318D0 0022D530 80 7C 17 10 */ lwz r3, 0x1710(r28) /* 802318D4 0022D534 7F C4 F3 78 */ mr r4, r30 /* 802318D8 0022D538 48 03 8D 7D */ bl DCFlushRange diff --git a/asm/text_8_6.s b/asm/text_8_6.s deleted file mode 100644 index 5e452bb..0000000 --- a/asm/text_8_6.s +++ /dev/null @@ -1,463 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 0x80006980 - 0x803E1E60 - -.global func_802A2244 -func_802A2244: -/* 802A2244 0029DEA4 94 21 FF B0 */ stwu r1, -0x50(r1) -/* 802A2248 0029DEA8 7C 08 02 A6 */ mflr r0 -/* 802A224C 0029DEAC 90 01 00 54 */ stw r0, 0x54(r1) -/* 802A2250 0029DEB0 39 61 00 50 */ addi r11, r1, 0x50 -/* 802A2254 0029DEB4 4B F2 4E BD */ bl _savegpr_21 -/* 802A2258 0029DEB8 3C 00 01 00 */ lis r0, 0x100 -/* 802A225C 0029DEBC 7C 77 1B 78 */ mr r23, r3 -/* 802A2260 0029DEC0 7C 04 00 40 */ cmplw r4, r0 -/* 802A2264 0029DEC4 7C 98 23 78 */ mr r24, r4 -/* 802A2268 0029DEC8 40 80 00 30 */ bge lbl_802A2298 -/* 802A226C 0029DECC 54 80 40 2E */ slwi r0, r4, 8 -/* 802A2270 0029DED0 3B 25 00 04 */ addi r25, r5, 4 -/* 802A2274 0029DED4 60 04 00 10 */ ori r4, r0, 0x10 -/* 802A2278 0029DED8 3B C0 00 04 */ li r30, 4 -/* 802A227C 0029DEDC 54 83 42 1E */ rlwinm r3, r4, 8, 8, 0xf -/* 802A2280 0029DEE0 54 80 C4 2E */ rlwinm r0, r4, 0x18, 0x10, 0x17 -/* 802A2284 0029DEE4 50 83 C0 C6 */ rlwimi r3, r4, 0x18, 3, 3 -/* 802A2288 0029DEE8 50 80 46 3E */ rlwimi r0, r4, 8, 0x18, 0x1f -/* 802A228C 0029DEEC 7C 60 03 78 */ or r0, r3, r0 -/* 802A2290 0029DEF0 90 05 00 00 */ stw r0, 0(r5) -/* 802A2294 0029DEF4 48 00 00 2C */ b lbl_802A22C0 -lbl_802A2298: -/* 802A2298 0029DEF8 54 83 42 1E */ rlwinm r3, r4, 8, 8, 0xf -/* 802A229C 0029DEFC 54 80 C4 2E */ rlwinm r0, r4, 0x18, 0x10, 0x17 -/* 802A22A0 0029DF00 3C E0 10 00 */ lis r7, 0x1000 -/* 802A22A4 0029DF04 3B 25 00 08 */ addi r25, r5, 8 -/* 802A22A8 0029DF08 50 83 C0 0E */ rlwimi r3, r4, 0x18, 0, 7 -/* 802A22AC 0029DF0C 50 80 46 3E */ rlwimi r0, r4, 8, 0x18, 0x1f -/* 802A22B0 0029DF10 7C 60 03 78 */ or r0, r3, r0 -/* 802A22B4 0029DF14 90 E5 00 00 */ stw r7, 0(r5) -/* 802A22B8 0029DF18 3B C0 00 08 */ li r30, 8 -/* 802A22BC 0029DF1C 90 05 00 04 */ stw r0, 4(r5) -lbl_802A22C0: -/* 802A22C0 0029DF20 38 E6 20 00 */ addi r7, r6, 0x2000 -/* 802A22C4 0029DF24 38 A6 22 00 */ addi r5, r6, 0x2200 -/* 802A22C8 0029DF28 38 80 00 20 */ li r4, 0x20 -/* 802A22CC 0029DF2C 7F 1A C3 78 */ mr r26, r24 -/* 802A22D0 0029DF30 90 C1 00 14 */ stw r6, 0x14(r1) -/* 802A22D4 0029DF34 38 60 00 00 */ li r3, 0 -/* 802A22D8 0029DF38 38 00 FF FF */ li r0, -1 -/* 802A22DC 0029DF3C 90 E1 00 18 */ stw r7, 0x18(r1) -/* 802A22E0 0029DF40 90 A1 00 1C */ stw r5, 0x1c(r1) -/* 802A22E4 0029DF44 7C 89 03 A6 */ mtctr r4 -lbl_802A22E8: -/* 802A22E8 0029DF48 80 A1 00 18 */ lwz r5, 0x18(r1) -/* 802A22EC 0029DF4C 54 64 0B FC */ rlwinm r4, r3, 1, 0xf, 0x1e -/* 802A22F0 0029DF50 38 63 00 08 */ addi r3, r3, 8 -/* 802A22F4 0029DF54 7C 05 23 2E */ sthx r0, r5, r4 -/* 802A22F8 0029DF58 80 A1 00 1C */ lwz r5, 0x1c(r1) -/* 802A22FC 0029DF5C 7C 05 23 2E */ sthx r0, r5, r4 -/* 802A2300 0029DF60 80 A1 00 18 */ lwz r5, 0x18(r1) -/* 802A2304 0029DF64 7C A5 22 14 */ add r5, r5, r4 -/* 802A2308 0029DF68 B0 05 00 02 */ sth r0, 2(r5) -/* 802A230C 0029DF6C 80 A1 00 1C */ lwz r5, 0x1c(r1) -/* 802A2310 0029DF70 7C A5 22 14 */ add r5, r5, r4 -/* 802A2314 0029DF74 B0 05 00 02 */ sth r0, 2(r5) -/* 802A2318 0029DF78 80 A1 00 18 */ lwz r5, 0x18(r1) -/* 802A231C 0029DF7C 7C A5 22 14 */ add r5, r5, r4 -/* 802A2320 0029DF80 B0 05 00 04 */ sth r0, 4(r5) -/* 802A2324 0029DF84 80 A1 00 1C */ lwz r5, 0x1c(r1) -/* 802A2328 0029DF88 7C A5 22 14 */ add r5, r5, r4 -/* 802A232C 0029DF8C B0 05 00 04 */ sth r0, 4(r5) -/* 802A2330 0029DF90 80 A1 00 18 */ lwz r5, 0x18(r1) -/* 802A2334 0029DF94 7C A5 22 14 */ add r5, r5, r4 -/* 802A2338 0029DF98 B0 05 00 06 */ sth r0, 6(r5) -/* 802A233C 0029DF9C 80 A1 00 1C */ lwz r5, 0x1c(r1) -/* 802A2340 0029DFA0 7C A5 22 14 */ add r5, r5, r4 -/* 802A2344 0029DFA4 B0 05 00 06 */ sth r0, 6(r5) -/* 802A2348 0029DFA8 80 A1 00 18 */ lwz r5, 0x18(r1) -/* 802A234C 0029DFAC 7C A5 22 14 */ add r5, r5, r4 -/* 802A2350 0029DFB0 B0 05 00 08 */ sth r0, 8(r5) -/* 802A2354 0029DFB4 80 A1 00 1C */ lwz r5, 0x1c(r1) -/* 802A2358 0029DFB8 7C A5 22 14 */ add r5, r5, r4 -/* 802A235C 0029DFBC B0 05 00 08 */ sth r0, 8(r5) -/* 802A2360 0029DFC0 80 A1 00 18 */ lwz r5, 0x18(r1) -/* 802A2364 0029DFC4 7C A5 22 14 */ add r5, r5, r4 -/* 802A2368 0029DFC8 B0 05 00 0A */ sth r0, 0xa(r5) -/* 802A236C 0029DFCC 80 A1 00 1C */ lwz r5, 0x1c(r1) -/* 802A2370 0029DFD0 7C A5 22 14 */ add r5, r5, r4 -/* 802A2374 0029DFD4 B0 05 00 0A */ sth r0, 0xa(r5) -/* 802A2378 0029DFD8 80 A1 00 18 */ lwz r5, 0x18(r1) -/* 802A237C 0029DFDC 7C A5 22 14 */ add r5, r5, r4 -/* 802A2380 0029DFE0 B0 05 00 0C */ sth r0, 0xc(r5) -/* 802A2384 0029DFE4 80 A1 00 1C */ lwz r5, 0x1c(r1) -/* 802A2388 0029DFE8 7C A5 22 14 */ add r5, r5, r4 -/* 802A238C 0029DFEC B0 05 00 0C */ sth r0, 0xc(r5) -/* 802A2390 0029DFF0 80 A1 00 18 */ lwz r5, 0x18(r1) -/* 802A2394 0029DFF4 7C A5 22 14 */ add r5, r5, r4 -/* 802A2398 0029DFF8 B0 05 00 0E */ sth r0, 0xe(r5) -/* 802A239C 0029DFFC 80 A1 00 1C */ lwz r5, 0x1c(r1) -/* 802A23A0 0029E000 7C 85 22 14 */ add r4, r5, r4 -/* 802A23A4 0029E004 B0 04 00 0E */ sth r0, 0xe(r4) -/* 802A23A8 0029E008 42 00 FF 40 */ bdnz lbl_802A22E8 -/* 802A23AC 0029E00C 38 00 00 00 */ li r0, 0 -/* 802A23B0 0029E010 B0 01 00 10 */ sth r0, 0x10(r1) -/* 802A23B4 0029E014 B0 01 00 12 */ sth r0, 0x12(r1) -/* 802A23B8 0029E018 48 00 01 04 */ b lbl_802A24BC -lbl_802A23BC: -/* 802A23BC 0029E01C 7F 3C CB 78 */ mr r28, r25 -/* 802A23C0 0029E020 3B A0 00 00 */ li r29, 0 -/* 802A23C4 0029E024 3B 60 00 00 */ li r27, 0 -/* 802A23C8 0029E028 3B 39 00 01 */ addi r25, r25, 1 -/* 802A23CC 0029E02C 3B DE 00 01 */ addi r30, r30, 1 -lbl_802A23D0: -/* 802A23D0 0029E030 2C 18 00 00 */ cmpwi r24, 0 -/* 802A23D4 0029E034 57 BD 0E 3C */ rlwinm r29, r29, 1, 0x18, 0x1e -/* 802A23D8 0029E038 41 82 00 D4 */ beq lbl_802A24AC -/* 802A23DC 0029E03C 7E E4 BB 78 */ mr r4, r23 -/* 802A23E0 0029E040 7F 05 C3 78 */ mr r5, r24 -/* 802A23E4 0029E044 38 61 00 10 */ addi r3, r1, 0x10 -/* 802A23E8 0029E048 38 C1 00 08 */ addi r6, r1, 8 -/* 802A23EC 0029E04C 48 00 01 1D */ bl func_802A2508 -/* 802A23F0 0029E050 54 7F 06 3F */ clrlwi. r31, r3, 0x18 -/* 802A23F4 0029E054 41 82 00 80 */ beq lbl_802A2474 -/* 802A23F8 0029E058 38 1E 00 02 */ addi r0, r30, 2 -/* 802A23FC 0029E05C 63 BD 00 01 */ ori r29, r29, 1 -/* 802A2400 0029E060 7C 00 D0 40 */ cmplw r0, r26 -/* 802A2404 0029E064 41 80 00 0C */ blt lbl_802A2410 -/* 802A2408 0029E068 38 60 00 00 */ li r3, 0 -/* 802A240C 0029E06C 48 00 00 E4 */ b lbl_802A24F0 -lbl_802A2410: -/* 802A2410 0029E070 A0 61 00 08 */ lhz r3, 8(r1) -/* 802A2414 0029E074 38 1F FF FD */ addi r0, r31, -3 -/* 802A2418 0029E078 54 04 20 36 */ slwi r4, r0, 4 -/* 802A241C 0029E07C 7E F6 BB 78 */ mr r22, r23 -/* 802A2420 0029E080 38 03 FF FF */ addi r0, r3, -1 -/* 802A2424 0029E084 3A A0 00 00 */ li r21, 0 -/* 802A2428 0029E088 7C 00 46 70 */ srawi r0, r0, 8 -/* 802A242C 0029E08C 3B DE 00 02 */ addi r30, r30, 2 -/* 802A2430 0029E090 7C 80 03 78 */ or r0, r4, r0 -/* 802A2434 0029E094 98 19 00 00 */ stb r0, 0(r25) -/* 802A2438 0029E098 A0 61 00 08 */ lhz r3, 8(r1) -/* 802A243C 0029E09C 38 03 FF FF */ addi r0, r3, -1 -/* 802A2440 0029E0A0 98 19 00 01 */ stb r0, 1(r25) -/* 802A2444 0029E0A4 3B 39 00 02 */ addi r25, r25, 2 -/* 802A2448 0029E0A8 48 00 00 18 */ b lbl_802A2460 -lbl_802A244C: -/* 802A244C 0029E0AC 7E C4 B3 78 */ mr r4, r22 -/* 802A2450 0029E0B0 38 61 00 10 */ addi r3, r1, 0x10 -/* 802A2454 0029E0B4 3A D6 00 01 */ addi r22, r22, 1 -/* 802A2458 0029E0B8 48 00 01 F9 */ bl SlideByte -/* 802A245C 0029E0BC 3A B5 00 01 */ addi r21, r21, 1 -lbl_802A2460: -/* 802A2460 0029E0C0 7C 15 F8 40 */ cmplw r21, r31 -/* 802A2464 0029E0C4 41 80 FF E8 */ blt lbl_802A244C -/* 802A2468 0029E0C8 7E F7 FA 14 */ add r23, r23, r31 -/* 802A246C 0029E0CC 7F 1F C0 50 */ subf r24, r31, r24 -/* 802A2470 0029E0D0 48 00 00 3C */ b lbl_802A24AC -lbl_802A2474: -/* 802A2474 0029E0D4 38 1E 00 01 */ addi r0, r30, 1 -/* 802A2478 0029E0D8 7C 00 D0 40 */ cmplw r0, r26 -/* 802A247C 0029E0DC 41 80 00 0C */ blt lbl_802A2488 -/* 802A2480 0029E0E0 38 60 00 00 */ li r3, 0 -/* 802A2484 0029E0E4 48 00 00 6C */ b lbl_802A24F0 -lbl_802A2488: -/* 802A2488 0029E0E8 7E E4 BB 78 */ mr r4, r23 -/* 802A248C 0029E0EC 38 61 00 10 */ addi r3, r1, 0x10 -/* 802A2490 0029E0F0 48 00 01 C1 */ bl SlideByte -/* 802A2494 0029E0F4 88 17 00 00 */ lbz r0, 0(r23) -/* 802A2498 0029E0F8 3B 18 FF FF */ addi r24, r24, -1 -/* 802A249C 0029E0FC 3B DE 00 01 */ addi r30, r30, 1 -/* 802A24A0 0029E100 3A F7 00 01 */ addi r23, r23, 1 -/* 802A24A4 0029E104 98 19 00 00 */ stb r0, 0(r25) -/* 802A24A8 0029E108 3B 39 00 01 */ addi r25, r25, 1 -lbl_802A24AC: -/* 802A24AC 0029E10C 3B 7B 00 01 */ addi r27, r27, 1 -/* 802A24B0 0029E110 28 1B 00 08 */ cmplwi r27, 8 -/* 802A24B4 0029E114 41 80 FF 1C */ blt lbl_802A23D0 -/* 802A24B8 0029E118 9B BC 00 00 */ stb r29, 0(r28) -lbl_802A24BC: -/* 802A24BC 0029E11C 2C 18 00 00 */ cmpwi r24, 0 -/* 802A24C0 0029E120 40 82 FE FC */ bne lbl_802A23BC -/* 802A24C4 0029E124 38 80 00 00 */ li r4, 0 -/* 802A24C8 0029E128 38 60 00 00 */ li r3, 0 -/* 802A24CC 0029E12C 48 00 00 10 */ b lbl_802A24DC -lbl_802A24D0: -/* 802A24D0 0029E130 98 79 00 00 */ stb r3, 0(r25) -/* 802A24D4 0029E134 3B 39 00 01 */ addi r25, r25, 1 -/* 802A24D8 0029E138 38 84 00 01 */ addi r4, r4, 1 -lbl_802A24DC: -/* 802A24DC 0029E13C 54 80 06 3E */ clrlwi r0, r4, 0x18 -/* 802A24E0 0029E140 7C 1E 02 14 */ add r0, r30, r0 -/* 802A24E4 0029E144 54 00 07 BF */ clrlwi. r0, r0, 0x1e -/* 802A24E8 0029E148 40 82 FF E8 */ bne lbl_802A24D0 -/* 802A24EC 0029E14C 7F C3 F3 78 */ mr r3, r30 -lbl_802A24F0: -/* 802A24F0 0029E150 39 61 00 50 */ addi r11, r1, 0x50 -/* 802A24F4 0029E154 4B F2 4C 69 */ bl _restgpr_21 -/* 802A24F8 0029E158 80 01 00 54 */ lwz r0, 0x54(r1) -/* 802A24FC 0029E15C 7C 08 03 A6 */ mtlr r0 -/* 802A2500 0029E160 38 21 00 50 */ addi r1, r1, 0x50 -/* 802A2504 0029E164 4E 80 00 20 */ blr - -.global func_802A2508 -func_802A2508: -/* 802A2508 0029E168 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802A250C 0029E16C 7C 08 02 A6 */ mflr r0 -/* 802A2510 0029E170 90 01 00 24 */ stw r0, 0x24(r1) -/* 802A2514 0029E174 39 61 00 20 */ addi r11, r1, 0x20 -/* 802A2518 0029E178 4B F2 4C 11 */ bl _savegpr_27 -/* 802A251C 0029E17C 28 05 00 03 */ cmplwi r5, 3 -/* 802A2520 0029E180 80 E3 00 04 */ lwz r7, 4(r3) -/* 802A2524 0029E184 A1 63 00 00 */ lhz r11, 0(r3) -/* 802A2528 0029E188 38 00 00 02 */ li r0, 2 -/* 802A252C 0029E18C A1 03 00 02 */ lhz r8, 2(r3) -/* 802A2530 0029E190 40 80 00 0C */ bge lbl_802A253C -/* 802A2534 0029E194 38 60 00 00 */ li r3, 0 -/* 802A2538 0029E198 48 00 01 00 */ b lbl_802A2638 -lbl_802A253C: -/* 802A253C 0029E19C 89 24 00 00 */ lbz r9, 0(r4) -/* 802A2540 0029E1A0 7D 08 20 50 */ subf r8, r8, r4 -/* 802A2544 0029E1A4 81 43 00 08 */ lwz r10, 8(r3) -/* 802A2548 0029E1A8 7D 8B 20 50 */ subf r12, r11, r4 -/* 802A254C 0029E1AC 55 23 08 3C */ slwi r3, r9, 1 -/* 802A2550 0029E1B0 7D 2B 40 50 */ subf r9, r11, r8 -/* 802A2554 0029E1B4 7F 6A 1A AE */ lhax r27, r10, r3 -/* 802A2558 0029E1B8 48 00 00 BC */ b lbl_802A2614 -lbl_802A255C: -/* 802A255C 0029E1BC 7C 1B 58 00 */ cmpw r27, r11 -/* 802A2560 0029E1C0 40 80 00 0C */ bge lbl_802A256C -/* 802A2564 0029E1C4 7F EC DA 14 */ add r31, r12, r27 -/* 802A2568 0029E1C8 48 00 00 08 */ b lbl_802A2570 -lbl_802A256C: -/* 802A256C 0029E1CC 7F E9 DA 14 */ add r31, r9, r27 -lbl_802A2570: -/* 802A2570 0029E1D0 89 1F 00 01 */ lbz r8, 1(r31) -/* 802A2574 0029E1D4 88 64 00 01 */ lbz r3, 1(r4) -/* 802A2578 0029E1D8 7C 08 18 40 */ cmplw r8, r3 -/* 802A257C 0029E1DC 40 82 00 14 */ bne lbl_802A2590 -/* 802A2580 0029E1E0 89 1F 00 02 */ lbz r8, 2(r31) -/* 802A2584 0029E1E4 88 64 00 02 */ lbz r3, 2(r4) -/* 802A2588 0029E1E8 7C 08 18 40 */ cmplw r8, r3 -/* 802A258C 0029E1EC 41 82 00 10 */ beq lbl_802A259C -lbl_802A2590: -/* 802A2590 0029E1F0 57 63 08 3C */ slwi r3, r27, 1 -/* 802A2594 0029E1F4 7F 67 1A AE */ lhax r27, r7, r3 -/* 802A2598 0029E1F8 48 00 00 7C */ b lbl_802A2614 -lbl_802A259C: -/* 802A259C 0029E1FC 7D 5F 20 50 */ subf r10, r31, r4 -/* 802A25A0 0029E200 2C 0A 00 02 */ cmpwi r10, 2 -/* 802A25A4 0029E204 41 80 00 78 */ blt lbl_802A261C -/* 802A25A8 0029E208 3B DF 00 03 */ addi r30, r31, 3 -/* 802A25AC 0029E20C 3B E4 00 03 */ addi r31, r4, 3 -/* 802A25B0 0029E210 3B 80 00 03 */ li r28, 3 -/* 802A25B4 0029E214 48 00 00 1C */ b lbl_802A25D0 -lbl_802A25B8: -/* 802A25B8 0029E218 3B 9C 00 01 */ addi r28, r28, 1 -/* 802A25BC 0029E21C 3B FF 00 01 */ addi r31, r31, 1 -/* 802A25C0 0029E220 57 83 06 3E */ clrlwi r3, r28, 0x18 -/* 802A25C4 0029E224 3B DE 00 01 */ addi r30, r30, 1 -/* 802A25C8 0029E228 28 03 00 12 */ cmplwi r3, 0x12 -/* 802A25CC 0029E22C 41 82 00 20 */ beq lbl_802A25EC -lbl_802A25D0: -/* 802A25D0 0029E230 7C 64 F8 50 */ subf r3, r4, r31 -/* 802A25D4 0029E234 7C 03 28 40 */ cmplw r3, r5 -/* 802A25D8 0029E238 40 80 00 14 */ bge lbl_802A25EC -/* 802A25DC 0029E23C 89 1F 00 00 */ lbz r8, 0(r31) -/* 802A25E0 0029E240 88 7E 00 00 */ lbz r3, 0(r30) -/* 802A25E4 0029E244 7C 08 18 40 */ cmplw r8, r3 -/* 802A25E8 0029E248 41 82 FF D0 */ beq lbl_802A25B8 -lbl_802A25EC: -/* 802A25EC 0029E24C 57 88 06 3E */ clrlwi r8, r28, 0x18 -/* 802A25F0 0029E250 54 03 06 3E */ clrlwi r3, r0, 0x18 -/* 802A25F4 0029E254 7C 08 18 40 */ cmplw r8, r3 -/* 802A25F8 0029E258 40 81 00 14 */ ble lbl_802A260C -/* 802A25FC 0029E25C 28 08 00 12 */ cmplwi r8, 0x12 -/* 802A2600 0029E260 7F 80 E3 78 */ mr r0, r28 -/* 802A2604 0029E264 55 5D 04 3E */ clrlwi r29, r10, 0x10 -/* 802A2608 0029E268 41 82 00 14 */ beq lbl_802A261C -lbl_802A260C: -/* 802A260C 0029E26C 57 63 08 3C */ slwi r3, r27, 1 -/* 802A2610 0029E270 7F 67 1A AE */ lhax r27, r7, r3 -lbl_802A2614: -/* 802A2614 0029E274 2C 1B FF FF */ cmpwi r27, -1 -/* 802A2618 0029E278 40 82 FF 44 */ bne lbl_802A255C -lbl_802A261C: -/* 802A261C 0029E27C 54 03 06 3E */ clrlwi r3, r0, 0x18 -/* 802A2620 0029E280 28 03 00 03 */ cmplwi r3, 3 -/* 802A2624 0029E284 40 80 00 0C */ bge lbl_802A2630 -/* 802A2628 0029E288 38 60 00 00 */ li r3, 0 -/* 802A262C 0029E28C 48 00 00 0C */ b lbl_802A2638 -lbl_802A2630: -/* 802A2630 0029E290 B3 A6 00 00 */ sth r29, 0(r6) -/* 802A2634 0029E294 7C 03 03 78 */ mr r3, r0 -lbl_802A2638: -/* 802A2638 0029E298 39 61 00 20 */ addi r11, r1, 0x20 -/* 802A263C 0029E29C 4B F2 4B 39 */ bl _restgpr_27 -/* 802A2640 0029E2A0 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802A2644 0029E2A4 7C 08 03 A6 */ mtlr r0 -/* 802A2648 0029E2A8 38 21 00 20 */ addi r1, r1, 0x20 -/* 802A264C 0029E2AC 4E 80 00 20 */ blr - -.global SlideByte -SlideByte: -/* 802A2650 0029E2B0 A0 A3 00 02 */ lhz r5, 2(r3) -/* 802A2654 0029E2B4 88 E4 00 00 */ lbz r7, 0(r4) -/* 802A2658 0029E2B8 28 05 10 00 */ cmplwi r5, 0x1000 -/* 802A265C 0029E2BC 81 23 00 08 */ lwz r9, 8(r3) -/* 802A2660 0029E2C0 81 43 00 04 */ lwz r10, 4(r3) -/* 802A2664 0029E2C4 81 63 00 0C */ lwz r11, 0xc(r3) -/* 802A2668 0029E2C8 A0 C3 00 00 */ lhz r6, 0(r3) -/* 802A266C 0029E2CC 40 82 00 34 */ bne lbl_802A26A0 -/* 802A2670 0029E2D0 88 04 F0 00 */ lbz r0, -0x1000(r4) -/* 802A2674 0029E2D4 54 04 08 3C */ slwi r4, r0, 1 -/* 802A2678 0029E2D8 7C 09 22 AE */ lhax r0, r9, r4 -/* 802A267C 0029E2DC 54 00 08 3C */ slwi r0, r0, 1 -/* 802A2680 0029E2E0 7C 0A 02 AE */ lhax r0, r10, r0 -/* 802A2684 0029E2E4 2C 00 FF FF */ cmpwi r0, -1 -/* 802A2688 0029E2E8 7C 09 23 2E */ sthx r0, r9, r4 -/* 802A268C 0029E2EC 40 82 00 0C */ bne lbl_802A2698 -/* 802A2690 0029E2F0 38 00 FF FF */ li r0, -1 -/* 802A2694 0029E2F4 7C 0B 23 2E */ sthx r0, r11, r4 -lbl_802A2698: -/* 802A2698 0029E2F8 7C C8 33 78 */ mr r8, r6 -/* 802A269C 0029E2FC 48 00 00 08 */ b lbl_802A26A4 -lbl_802A26A0: -/* 802A26A0 0029E300 7C A8 2B 78 */ mr r8, r5 -lbl_802A26A4: -/* 802A26A4 0029E304 54 E4 0D FC */ rlwinm r4, r7, 1, 0x17, 0x1e -/* 802A26A8 0029E308 7C 0B 22 AE */ lhax r0, r11, r4 -/* 802A26AC 0029E30C 2C 00 FF FF */ cmpwi r0, -1 -/* 802A26B0 0029E310 40 82 00 0C */ bne lbl_802A26BC -/* 802A26B4 0029E314 7D 09 23 2E */ sthx r8, r9, r4 -/* 802A26B8 0029E318 48 00 00 0C */ b lbl_802A26C4 -lbl_802A26BC: -/* 802A26BC 0029E31C 54 00 08 3C */ slwi r0, r0, 1 -/* 802A26C0 0029E320 7D 0A 03 2E */ sthx r8, r10, r0 -lbl_802A26C4: -/* 802A26C4 0029E324 7D 0B 23 2E */ sthx r8, r11, r4 -/* 802A26C8 0029E328 28 05 10 00 */ cmplwi r5, 0x1000 -/* 802A26CC 0029E32C 55 00 0B FC */ rlwinm r0, r8, 1, 0xf, 0x1e -/* 802A26D0 0029E330 38 80 FF FF */ li r4, -1 -/* 802A26D4 0029E334 7C 8A 03 2E */ sthx r4, r10, r0 -/* 802A26D8 0029E338 40 82 00 24 */ bne lbl_802A26FC -/* 802A26DC 0029E33C 38 86 00 01 */ addi r4, r6, 1 -/* 802A26E0 0029E340 54 80 A0 16 */ slwi r0, r4, 0x14 -/* 802A26E4 0029E344 54 84 0F FE */ srwi r4, r4, 0x1f -/* 802A26E8 0029E348 7C 04 00 50 */ subf r0, r4, r0 -/* 802A26EC 0029E34C 54 00 60 3E */ rotlwi r0, r0, 0xc -/* 802A26F0 0029E350 7C 00 22 14 */ add r0, r0, r4 -/* 802A26F4 0029E354 B0 03 00 00 */ sth r0, 0(r3) -/* 802A26F8 0029E358 4E 80 00 20 */ blr -lbl_802A26FC: -/* 802A26FC 0029E35C A0 83 00 02 */ lhz r4, 2(r3) -/* 802A2700 0029E360 38 04 00 01 */ addi r0, r4, 1 -/* 802A2704 0029E364 B0 03 00 02 */ sth r0, 2(r3) -/* 802A2708 0029E368 4E 80 00 20 */ blr - -.global CXGetUncompressedSize -CXGetUncompressedSize: -/* 802A270C 0029E36C 80 A3 00 00 */ lwz r5, 0(r3) -/* 802A2710 0029E370 54 A4 42 1E */ rlwinm r4, r5, 8, 8, 0xf -/* 802A2714 0029E374 54 A0 C4 2E */ rlwinm r0, r5, 0x18, 0x10, 0x17 -/* 802A2718 0029E378 50 A4 C0 0E */ rlwimi r4, r5, 0x18, 0, 7 -/* 802A271C 0029E37C 50 A0 46 3E */ rlwimi r0, r5, 8, 0x18, 0x1f -/* 802A2720 0029E380 7C 80 03 78 */ or r0, r4, r0 -/* 802A2724 0029E384 54 00 C2 3F */ rlwinm. r0, r0, 0x18, 8, 0x1f -/* 802A2728 0029E388 40 82 00 1C */ bne lbl_802A2744 -/* 802A272C 0029E38C 80 83 00 04 */ lwz r4, 4(r3) -/* 802A2730 0029E390 54 83 42 1E */ rlwinm r3, r4, 8, 8, 0xf -/* 802A2734 0029E394 54 80 C4 2E */ rlwinm r0, r4, 0x18, 0x10, 0x17 -/* 802A2738 0029E398 50 83 C0 0E */ rlwimi r3, r4, 0x18, 0, 7 -/* 802A273C 0029E39C 50 80 46 3E */ rlwimi r0, r4, 8, 0x18, 0x1f -/* 802A2740 0029E3A0 7C 60 03 78 */ or r0, r3, r0 -lbl_802A2744: -/* 802A2744 0029E3A4 7C 03 03 78 */ mr r3, r0 -/* 802A2748 0029E3A8 4E 80 00 20 */ blr - -.global func_802A274C -func_802A274C: -/* 802A274C 0029E3AC 80 A3 00 00 */ lwz r5, 0(r3) -/* 802A2750 0029E3B0 38 E3 00 04 */ addi r7, r3, 4 -/* 802A2754 0029E3B4 54 A3 42 1E */ rlwinm r3, r5, 8, 8, 0xf -/* 802A2758 0029E3B8 54 A0 C4 2E */ rlwinm r0, r5, 0x18, 0x10, 0x17 -/* 802A275C 0029E3BC 50 A3 C0 0E */ rlwimi r3, r5, 0x18, 0, 7 -/* 802A2760 0029E3C0 50 A0 46 3E */ rlwimi r0, r5, 8, 0x18, 0x1f -/* 802A2764 0029E3C4 7C 60 03 78 */ or r0, r3, r0 -/* 802A2768 0029E3C8 54 08 C2 3F */ rlwinm. r8, r0, 0x18, 8, 0x1f -/* 802A276C 0029E3CC 40 82 00 20 */ bne lbl_802A278C -/* 802A2770 0029E3D0 80 A7 00 00 */ lwz r5, 0(r7) -/* 802A2774 0029E3D4 38 E7 00 04 */ addi r7, r7, 4 -/* 802A2778 0029E3D8 54 A3 42 1E */ rlwinm r3, r5, 8, 8, 0xf -/* 802A277C 0029E3DC 54 A0 C4 2E */ rlwinm r0, r5, 0x18, 0x10, 0x17 -/* 802A2780 0029E3E0 50 A3 C0 0E */ rlwimi r3, r5, 0x18, 0, 7 -/* 802A2784 0029E3E4 50 A0 46 3E */ rlwimi r0, r5, 8, 0x18, 0x1f -/* 802A2788 0029E3E8 7C 68 03 78 */ or r8, r3, r0 -lbl_802A278C: -/* 802A278C 0029E3EC 38 00 00 04 */ li r0, 4 -/* 802A2790 0029E3F0 48 00 00 E4 */ b lbl_802A2874 -lbl_802A2794: -/* 802A2794 0029E3F4 89 47 00 00 */ lbz r10, 0(r7) -/* 802A2798 0029E3F8 39 20 00 00 */ li r9, 0 -/* 802A279C 0029E3FC 7C 09 03 A6 */ mtctr r0 -/* 802A27A0 0029E400 38 E7 00 01 */ addi r7, r7, 1 -lbl_802A27A4: -/* 802A27A4 0029E404 55 43 06 31 */ rlwinm. r3, r10, 0, 0x18, 0x18 -/* 802A27A8 0029E408 40 82 00 1C */ bne lbl_802A27C4 -/* 802A27AC 0029E40C 88 67 00 00 */ lbz r3, 0(r7) -/* 802A27B0 0029E410 39 08 FF FF */ addi r8, r8, -1 -/* 802A27B4 0029E414 38 E7 00 01 */ addi r7, r7, 1 -/* 802A27B8 0029E418 98 64 00 00 */ stb r3, 0(r4) -/* 802A27BC 0029E41C 38 84 00 01 */ addi r4, r4, 1 -/* 802A27C0 0029E420 48 00 00 3C */ b lbl_802A27FC -lbl_802A27C4: -/* 802A27C4 0029E424 88 C7 00 00 */ lbz r6, 0(r7) -/* 802A27C8 0029E428 88 67 00 01 */ lbz r3, 1(r7) -/* 802A27CC 0029E42C 38 E7 00 02 */ addi r7, r7, 2 -/* 802A27D0 0029E430 7C C5 26 70 */ srawi r5, r6, 4 -/* 802A27D4 0029E434 50 C3 45 2E */ rlwimi r3, r6, 8, 0x14, 0x17 -/* 802A27D8 0029E438 38 C5 00 03 */ addi r6, r5, 3 -/* 802A27DC 0029E43C 38 A3 00 01 */ addi r5, r3, 1 -/* 802A27E0 0029E440 7D 06 40 50 */ subf r8, r6, r8 -lbl_802A27E4: -/* 802A27E4 0029E444 7C 65 20 50 */ subf r3, r5, r4 -/* 802A27E8 0029E448 34 C6 FF FF */ addic. r6, r6, -1 -/* 802A27EC 0029E44C 88 63 00 00 */ lbz r3, 0(r3) -/* 802A27F0 0029E450 98 64 00 00 */ stb r3, 0(r4) -/* 802A27F4 0029E454 38 84 00 01 */ addi r4, r4, 1 -/* 802A27F8 0029E458 41 81 FF EC */ bgt lbl_802A27E4 -lbl_802A27FC: -/* 802A27FC 0029E45C 2C 08 00 00 */ cmpwi r8, 0 -/* 802A2800 0029E460 41 82 00 74 */ beq lbl_802A2874 -/* 802A2804 0029E464 55 4A 08 3C */ slwi r10, r10, 1 -/* 802A2808 0029E468 55 43 06 31 */ rlwinm. r3, r10, 0, 0x18, 0x18 -/* 802A280C 0029E46C 40 82 00 1C */ bne lbl_802A2828 -/* 802A2810 0029E470 88 67 00 00 */ lbz r3, 0(r7) -/* 802A2814 0029E474 39 08 FF FF */ addi r8, r8, -1 -/* 802A2818 0029E478 38 E7 00 01 */ addi r7, r7, 1 -/* 802A281C 0029E47C 98 64 00 00 */ stb r3, 0(r4) -/* 802A2820 0029E480 38 84 00 01 */ addi r4, r4, 1 -/* 802A2824 0029E484 48 00 00 3C */ b lbl_802A2860 -lbl_802A2828: -/* 802A2828 0029E488 88 C7 00 00 */ lbz r6, 0(r7) -/* 802A282C 0029E48C 88 67 00 01 */ lbz r3, 1(r7) -/* 802A2830 0029E490 38 E7 00 02 */ addi r7, r7, 2 -/* 802A2834 0029E494 7C C5 26 70 */ srawi r5, r6, 4 -/* 802A2838 0029E498 50 C3 45 2E */ rlwimi r3, r6, 8, 0x14, 0x17 -/* 802A283C 0029E49C 38 C5 00 03 */ addi r6, r5, 3 -/* 802A2840 0029E4A0 38 A3 00 01 */ addi r5, r3, 1 -/* 802A2844 0029E4A4 7D 06 40 50 */ subf r8, r6, r8 -lbl_802A2848: -/* 802A2848 0029E4A8 7C 65 20 50 */ subf r3, r5, r4 -/* 802A284C 0029E4AC 34 C6 FF FF */ addic. r6, r6, -1 -/* 802A2850 0029E4B0 88 63 00 00 */ lbz r3, 0(r3) -/* 802A2854 0029E4B4 98 64 00 00 */ stb r3, 0(r4) -/* 802A2858 0029E4B8 38 84 00 01 */ addi r4, r4, 1 -/* 802A285C 0029E4BC 41 81 FF EC */ bgt lbl_802A2848 -lbl_802A2860: -/* 802A2860 0029E4C0 2C 08 00 00 */ cmpwi r8, 0 -/* 802A2864 0029E4C4 41 82 00 10 */ beq lbl_802A2874 -/* 802A2868 0029E4C8 55 4A 08 3C */ slwi r10, r10, 1 -/* 802A286C 0029E4CC 39 29 00 01 */ addi r9, r9, 1 -/* 802A2870 0029E4D0 42 00 FF 34 */ bdnz lbl_802A27A4 -lbl_802A2874: -/* 802A2874 0029E4D4 2C 08 00 00 */ cmpwi r8, 0 -/* 802A2878 0029E4D8 40 82 FF 1C */ bne lbl_802A2794 -/* 802A287C 0029E4DC 4E 80 00 20 */ blr -- cgit v1.2.3