prime/asm/Kyoto/zlib/inftrees.s

602 lines
28 KiB
ArmAsm
Raw Normal View History

2022-04-16 07:50:32 +00:00
.include "macros.inc"
.section .text, "ax" # 0x80003640 - 0x803CB1C0
.global inflate_trees_fixed
inflate_trees_fixed:
/* 80343BC0 00340B20 80 0D 9D 58 */ lwz r0, lbl_805A8918@sda21(r13)
/* 80343BC4 00340B24 3D 00 80 3F */ lis r8, lbl_803EE4C8@ha
/* 80343BC8 00340B28 3C E0 80 3F */ lis r7, lbl_803EF4C8@ha
/* 80343BCC 00340B2C 90 03 00 00 */ stw r0, 0(r3)
/* 80343BD0 00340B30 39 08 E4 C8 */ addi r8, r8, lbl_803EE4C8@l
/* 80343BD4 00340B34 38 07 F4 C8 */ addi r0, r7, lbl_803EF4C8@l
/* 80343BD8 00340B38 38 60 00 00 */ li r3, 0
/* 80343BDC 00340B3C 80 ED 9D 5C */ lwz r7, lbl_805A891C@sda21(r13)
/* 80343BE0 00340B40 90 E4 00 00 */ stw r7, 0(r4)
/* 80343BE4 00340B44 91 05 00 00 */ stw r8, 0(r5)
/* 80343BE8 00340B48 90 06 00 00 */ stw r0, 0(r6)
/* 80343BEC 00340B4C 4E 80 00 20 */ blr
.global inflate_trees_dynamic
inflate_trees_dynamic:
/* 80343BF0 00340B50 94 21 FF B0 */ stwu r1, -0x50(r1)
/* 80343BF4 00340B54 7C 08 02 A6 */ mflr r0
/* 80343BF8 00340B58 3D 60 80 3D */ lis r11, lbl_803D7C50@ha
/* 80343BFC 00340B5C 90 01 00 54 */ stw r0, 0x54(r1)
/* 80343C00 00340B60 38 00 00 00 */ li r0, 0
/* 80343C04 00340B64 BE A1 00 24 */ stmw r21, 0x24(r1)
/* 80343C08 00340B68 7C 9B 23 78 */ mr r27, r4
/* 80343C0C 00340B6C 7C BC 2B 78 */ mr r28, r5
/* 80343C10 00340B70 83 C1 00 58 */ lwz r30, 0x58(r1)
/* 80343C14 00340B74 7C 7A 1B 78 */ mr r26, r3
/* 80343C18 00340B78 7C D5 33 78 */ mr r21, r6
/* 80343C1C 00340B7C 7C FD 3B 78 */ mr r29, r7
/* 80343C20 00340B80 7D 18 43 78 */ mr r24, r8
/* 80343C24 00340B84 7D 36 4B 78 */ mr r22, r9
/* 80343C28 00340B88 7D 57 53 78 */ mr r23, r10
/* 80343C2C 00340B8C 3B 2B 7C 50 */ addi r25, r11, lbl_803D7C50@l
/* 80343C30 00340B90 38 80 01 20 */ li r4, 0x120
/* 80343C34 00340B94 38 A0 00 04 */ li r5, 4
/* 80343C38 00340B98 90 01 00 10 */ stw r0, 0x10(r1)
/* 80343C3C 00340B9C 81 9E 00 20 */ lwz r12, 0x20(r30)
/* 80343C40 00340BA0 80 7E 00 28 */ lwz r3, 0x28(r30)
/* 80343C44 00340BA4 7D 89 03 A6 */ mtctr r12
/* 80343C48 00340BA8 4E 80 04 21 */ bctrl
/* 80343C4C 00340BAC 7C 7F 1B 79 */ or. r31, r3, r3
/* 80343C50 00340BB0 40 82 00 0C */ bne lbl_80343C5C
/* 80343C54 00340BB4 38 60 FF FC */ li r3, -4
/* 80343C58 00340BB8 48 00 01 74 */ b lbl_80343DCC
lbl_80343C5C:
/* 80343C5C 00340BBC 38 01 00 10 */ addi r0, r1, 0x10
/* 80343C60 00340BC0 7F 83 E3 78 */ mr r3, r28
/* 80343C64 00340BC4 90 01 00 08 */ stw r0, 8(r1)
/* 80343C68 00340BC8 7F 44 D3 78 */ mr r4, r26
/* 80343C6C 00340BCC 7F 08 C3 78 */ mr r8, r24
/* 80343C70 00340BD0 7E A9 AB 78 */ mr r9, r21
/* 80343C74 00340BD4 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80343C78 00340BD8 7E EA BB 78 */ mr r10, r23
/* 80343C7C 00340BDC 38 D9 00 30 */ addi r6, r25, 0x30
/* 80343C80 00340BE0 38 F9 00 AC */ addi r7, r25, 0xac
/* 80343C84 00340BE4 38 A0 01 01 */ li r5, 0x101
/* 80343C88 00340BE8 48 00 02 51 */ bl huft_build
/* 80343C8C 00340BEC 7C 78 1B 79 */ or. r24, r3, r3
/* 80343C90 00340BF0 40 82 00 10 */ bne lbl_80343CA0
/* 80343C94 00340BF4 80 15 00 00 */ lwz r0, 0(r21)
/* 80343C98 00340BF8 28 00 00 00 */ cmplwi r0, 0
/* 80343C9C 00340BFC 40 82 00 54 */ bne lbl_80343CF0
lbl_80343CA0:
/* 80343CA0 00340C00 2C 18 FF FD */ cmpwi r24, -3
/* 80343CA4 00340C04 40 82 00 14 */ bne lbl_80343CB8
/* 80343CA8 00340C08 3C 60 80 3D */ lis r3, lbl_803D7E68@ha
/* 80343CAC 00340C0C 38 03 7E 68 */ addi r0, r3, lbl_803D7E68@l
/* 80343CB0 00340C10 90 1E 00 18 */ stw r0, 0x18(r30)
/* 80343CB4 00340C14 48 00 00 20 */ b lbl_80343CD4
lbl_80343CB8:
/* 80343CB8 00340C18 2C 18 FF FC */ cmpwi r24, -4
/* 80343CBC 00340C1C 41 82 00 18 */ beq lbl_80343CD4
/* 80343CC0 00340C20 3C 60 80 3D */ lis r3, lbl_803D7E68@ha
/* 80343CC4 00340C24 3B 00 FF FD */ li r24, -3
/* 80343CC8 00340C28 38 63 7E 68 */ addi r3, r3, lbl_803D7E68@l
/* 80343CCC 00340C2C 38 03 00 23 */ addi r0, r3, 0x23
/* 80343CD0 00340C30 90 1E 00 18 */ stw r0, 0x18(r30)
lbl_80343CD4:
/* 80343CD4 00340C34 81 9E 00 24 */ lwz r12, 0x24(r30)
/* 80343CD8 00340C38 7F E4 FB 78 */ mr r4, r31
/* 80343CDC 00340C3C 80 7E 00 28 */ lwz r3, 0x28(r30)
/* 80343CE0 00340C40 7D 89 03 A6 */ mtctr r12
/* 80343CE4 00340C44 4E 80 04 21 */ bctrl
/* 80343CE8 00340C48 7F 03 C3 78 */ mr r3, r24
/* 80343CEC 00340C4C 48 00 00 E0 */ b lbl_80343DCC
lbl_80343CF0:
/* 80343CF0 00340C50 38 61 00 10 */ addi r3, r1, 0x10
/* 80343CF4 00340C54 57 40 10 3A */ slwi r0, r26, 2
/* 80343CF8 00340C58 90 61 00 08 */ stw r3, 8(r1)
/* 80343CFC 00340C5C 7F 64 DB 78 */ mr r4, r27
/* 80343D00 00340C60 7E C8 B3 78 */ mr r8, r22
/* 80343D04 00340C64 7F A9 EB 78 */ mr r9, r29
/* 80343D08 00340C68 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80343D0C 00340C6C 7E EA BB 78 */ mr r10, r23
/* 80343D10 00340C70 7C 7C 02 14 */ add r3, r28, r0
/* 80343D14 00340C74 38 D9 01 28 */ addi r6, r25, 0x128
/* 80343D18 00340C78 38 F9 01 A0 */ addi r7, r25, 0x1a0
/* 80343D1C 00340C7C 38 A0 00 00 */ li r5, 0
/* 80343D20 00340C80 48 00 01 B9 */ bl huft_build
/* 80343D24 00340C84 7C 79 1B 79 */ or. r25, r3, r3
/* 80343D28 00340C88 40 82 00 18 */ bne lbl_80343D40
/* 80343D2C 00340C8C 80 1D 00 00 */ lwz r0, 0(r29)
/* 80343D30 00340C90 28 00 00 00 */ cmplwi r0, 0
/* 80343D34 00340C94 40 82 00 80 */ bne lbl_80343DB4
/* 80343D38 00340C98 28 1A 01 01 */ cmplwi r26, 0x101
/* 80343D3C 00340C9C 40 81 00 78 */ ble lbl_80343DB4
lbl_80343D40:
/* 80343D40 00340CA0 2C 19 FF FD */ cmpwi r25, -3
/* 80343D44 00340CA4 40 82 00 18 */ bne lbl_80343D5C
/* 80343D48 00340CA8 3C 60 80 3D */ lis r3, lbl_803D7E68@ha
/* 80343D4C 00340CAC 38 63 7E 68 */ addi r3, r3, lbl_803D7E68@l
/* 80343D50 00340CB0 38 03 00 42 */ addi r0, r3, 0x42
/* 80343D54 00340CB4 90 1E 00 18 */ stw r0, 0x18(r30)
/* 80343D58 00340CB8 48 00 00 40 */ b lbl_80343D98
lbl_80343D5C:
/* 80343D5C 00340CBC 2C 19 FF FB */ cmpwi r25, -5
/* 80343D60 00340CC0 40 82 00 1C */ bne lbl_80343D7C
/* 80343D64 00340CC4 3C 60 80 3D */ lis r3, lbl_803D7E68@ha
/* 80343D68 00340CC8 3B 20 FF FD */ li r25, -3
/* 80343D6C 00340CCC 38 63 7E 68 */ addi r3, r3, lbl_803D7E68@l
/* 80343D70 00340CD0 38 03 00 5F */ addi r0, r3, 0x5f
/* 80343D74 00340CD4 90 1E 00 18 */ stw r0, 0x18(r30)
/* 80343D78 00340CD8 48 00 00 20 */ b lbl_80343D98
lbl_80343D7C:
/* 80343D7C 00340CDC 2C 19 FF FC */ cmpwi r25, -4
/* 80343D80 00340CE0 41 82 00 18 */ beq lbl_80343D98
/* 80343D84 00340CE4 3C 60 80 3D */ lis r3, lbl_803D7E68@ha
/* 80343D88 00340CE8 3B 20 FF FD */ li r25, -3
/* 80343D8C 00340CEC 38 63 7E 68 */ addi r3, r3, lbl_803D7E68@l
/* 80343D90 00340CF0 38 03 00 78 */ addi r0, r3, 0x78
/* 80343D94 00340CF4 90 1E 00 18 */ stw r0, 0x18(r30)
lbl_80343D98:
/* 80343D98 00340CF8 81 9E 00 24 */ lwz r12, 0x24(r30)
/* 80343D9C 00340CFC 7F E4 FB 78 */ mr r4, r31
/* 80343DA0 00340D00 80 7E 00 28 */ lwz r3, 0x28(r30)
/* 80343DA4 00340D04 7D 89 03 A6 */ mtctr r12
/* 80343DA8 00340D08 4E 80 04 21 */ bctrl
/* 80343DAC 00340D0C 7F 23 CB 78 */ mr r3, r25
/* 80343DB0 00340D10 48 00 00 1C */ b lbl_80343DCC
lbl_80343DB4:
/* 80343DB4 00340D14 81 9E 00 24 */ lwz r12, 0x24(r30)
/* 80343DB8 00340D18 7F E4 FB 78 */ mr r4, r31
/* 80343DBC 00340D1C 80 7E 00 28 */ lwz r3, 0x28(r30)
/* 80343DC0 00340D20 7D 89 03 A6 */ mtctr r12
/* 80343DC4 00340D24 4E 80 04 21 */ bctrl
/* 80343DC8 00340D28 38 60 00 00 */ li r3, 0
lbl_80343DCC:
/* 80343DCC 00340D2C BA A1 00 24 */ lmw r21, 0x24(r1)
/* 80343DD0 00340D30 80 01 00 54 */ lwz r0, 0x54(r1)
/* 80343DD4 00340D34 7C 08 03 A6 */ mtlr r0
/* 80343DD8 00340D38 38 21 00 50 */ addi r1, r1, 0x50
/* 80343DDC 00340D3C 4E 80 00 20 */ blr
.global inflate_trees_bits
inflate_trees_bits:
/* 80343DE0 00340D40 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 80343DE4 00340D44 7C 08 02 A6 */ mflr r0
/* 80343DE8 00340D48 90 01 00 34 */ stw r0, 0x34(r1)
/* 80343DEC 00340D4C 38 00 00 00 */ li r0, 0
/* 80343DF0 00340D50 BF 41 00 18 */ stmw r26, 0x18(r1)
/* 80343DF4 00340D54 7C 9B 23 78 */ mr r27, r4
/* 80343DF8 00340D58 7C BC 2B 78 */ mr r28, r5
/* 80343DFC 00340D5C 7C FD 3B 78 */ mr r29, r7
/* 80343E00 00340D60 7C 7A 1B 78 */ mr r26, r3
/* 80343E04 00340D64 7C DF 33 78 */ mr r31, r6
/* 80343E08 00340D68 38 80 00 13 */ li r4, 0x13
/* 80343E0C 00340D6C 38 A0 00 04 */ li r5, 4
/* 80343E10 00340D70 90 01 00 10 */ stw r0, 0x10(r1)
/* 80343E14 00340D74 81 87 00 20 */ lwz r12, 0x20(r7)
/* 80343E18 00340D78 80 67 00 28 */ lwz r3, 0x28(r7)
/* 80343E1C 00340D7C 7D 89 03 A6 */ mtctr r12
/* 80343E20 00340D80 4E 80 04 21 */ bctrl
/* 80343E24 00340D84 7C 7E 1B 79 */ or. r30, r3, r3
/* 80343E28 00340D88 40 82 00 0C */ bne lbl_80343E34
/* 80343E2C 00340D8C 38 60 FF FC */ li r3, -4
/* 80343E30 00340D90 48 00 00 94 */ b lbl_80343EC4
lbl_80343E34:
/* 80343E34 00340D94 38 01 00 10 */ addi r0, r1, 0x10
/* 80343E38 00340D98 7F 43 D3 78 */ mr r3, r26
/* 80343E3C 00340D9C 90 01 00 08 */ stw r0, 8(r1)
/* 80343E40 00340DA0 7F 88 E3 78 */ mr r8, r28
/* 80343E44 00340DA4 7F 69 DB 78 */ mr r9, r27
/* 80343E48 00340DA8 7F EA FB 78 */ mr r10, r31
/* 80343E4C 00340DAC 93 C1 00 0C */ stw r30, 0xc(r1)
/* 80343E50 00340DB0 38 80 00 13 */ li r4, 0x13
/* 80343E54 00340DB4 38 A0 00 13 */ li r5, 0x13
/* 80343E58 00340DB8 38 C0 00 00 */ li r6, 0
/* 80343E5C 00340DBC 38 E0 00 00 */ li r7, 0
/* 80343E60 00340DC0 48 00 00 79 */ bl huft_build
/* 80343E64 00340DC4 7C 7F 1B 78 */ mr r31, r3
/* 80343E68 00340DC8 2C 1F FF FD */ cmpwi r31, -3
/* 80343E6C 00340DCC 40 82 00 18 */ bne lbl_80343E84
/* 80343E70 00340DD0 3C 60 80 3D */ lis r3, lbl_803D7E68@ha
/* 80343E74 00340DD4 38 63 7E 68 */ addi r3, r3, lbl_803D7E68@l
/* 80343E78 00340DD8 38 03 00 99 */ addi r0, r3, 0x99
/* 80343E7C 00340DDC 90 1D 00 18 */ stw r0, 0x18(r29)
/* 80343E80 00340DE0 48 00 00 2C */ b lbl_80343EAC
lbl_80343E84:
/* 80343E84 00340DE4 2C 1F FF FB */ cmpwi r31, -5
/* 80343E88 00340DE8 41 82 00 10 */ beq lbl_80343E98
/* 80343E8C 00340DEC 80 1B 00 00 */ lwz r0, 0(r27)
/* 80343E90 00340DF0 28 00 00 00 */ cmplwi r0, 0
/* 80343E94 00340DF4 40 82 00 18 */ bne lbl_80343EAC
lbl_80343E98:
/* 80343E98 00340DF8 3C 60 80 3D */ lis r3, lbl_803D7E68@ha
/* 80343E9C 00340DFC 3B E0 FF FD */ li r31, -3
/* 80343EA0 00340E00 38 63 7E 68 */ addi r3, r3, lbl_803D7E68@l
/* 80343EA4 00340E04 38 03 00 C1 */ addi r0, r3, 0xc1
/* 80343EA8 00340E08 90 1D 00 18 */ stw r0, 0x18(r29)
lbl_80343EAC:
/* 80343EAC 00340E0C 81 9D 00 24 */ lwz r12, 0x24(r29)
/* 80343EB0 00340E10 7F C4 F3 78 */ mr r4, r30
/* 80343EB4 00340E14 80 7D 00 28 */ lwz r3, 0x28(r29)
/* 80343EB8 00340E18 7D 89 03 A6 */ mtctr r12
/* 80343EBC 00340E1C 4E 80 04 21 */ bctrl
/* 80343EC0 00340E20 7F E3 FB 78 */ mr r3, r31
lbl_80343EC4:
/* 80343EC4 00340E24 BB 41 00 18 */ lmw r26, 0x18(r1)
/* 80343EC8 00340E28 80 01 00 34 */ lwz r0, 0x34(r1)
/* 80343ECC 00340E2C 7C 08 03 A6 */ mtlr r0
/* 80343ED0 00340E30 38 21 00 30 */ addi r1, r1, 0x30
/* 80343ED4 00340E34 4E 80 00 20 */ blr
.global huft_build
huft_build:
/* 80343ED8 00340E38 94 21 FE E0 */ stwu r1, -0x120(r1)
/* 80343EDC 00340E3C 38 00 00 00 */ li r0, 0
/* 80343EE0 00340E40 BD C1 00 D8 */ stmw r14, 0xd8(r1)
/* 80343EE4 00340E44 7C 6F 1B 78 */ mr r15, r3
/* 80343EE8 00340E48 83 E1 01 28 */ lwz r31, 0x128(r1)
/* 80343EEC 00340E4C 7C 91 23 78 */ mr r17, r4
/* 80343EF0 00340E50 90 01 00 8C */ stw r0, 0x8c(r1)
/* 80343EF4 00340E54 39 81 00 8C */ addi r12, r1, 0x8c
/* 80343EF8 00340E58 82 01 01 2C */ lwz r16, 0x12c(r1)
/* 80343EFC 00340E5C 90 01 00 90 */ stw r0, 0x90(r1)
/* 80343F00 00340E60 90 01 00 94 */ stw r0, 0x94(r1)
/* 80343F04 00340E64 90 01 00 98 */ stw r0, 0x98(r1)
/* 80343F08 00340E68 90 01 00 9C */ stw r0, 0x9c(r1)
/* 80343F0C 00340E6C 90 01 00 A0 */ stw r0, 0xa0(r1)
/* 80343F10 00340E70 90 01 00 A4 */ stw r0, 0xa4(r1)
/* 80343F14 00340E74 90 01 00 A8 */ stw r0, 0xa8(r1)
/* 80343F18 00340E78 90 01 00 AC */ stw r0, 0xac(r1)
/* 80343F1C 00340E7C 90 01 00 B0 */ stw r0, 0xb0(r1)
/* 80343F20 00340E80 90 01 00 B4 */ stw r0, 0xb4(r1)
/* 80343F24 00340E84 90 01 00 B8 */ stw r0, 0xb8(r1)
/* 80343F28 00340E88 90 01 00 BC */ stw r0, 0xbc(r1)
/* 80343F2C 00340E8C 90 01 00 C0 */ stw r0, 0xc0(r1)
/* 80343F30 00340E90 90 01 00 C4 */ stw r0, 0xc4(r1)
/* 80343F34 00340E94 90 01 00 C8 */ stw r0, 0xc8(r1)
lbl_80343F38:
/* 80343F38 00340E98 80 0F 00 00 */ lwz r0, 0(r15)
/* 80343F3C 00340E9C 36 31 FF FF */ addic. r17, r17, -1
/* 80343F40 00340EA0 39 EF 00 04 */ addi r15, r15, 4
/* 80343F44 00340EA4 54 0E 10 3A */ slwi r14, r0, 2
/* 80343F48 00340EA8 7D 6C 70 2E */ lwzx r11, r12, r14
/* 80343F4C 00340EAC 38 0B 00 01 */ addi r0, r11, 1
/* 80343F50 00340EB0 7C 0C 71 2E */ stwx r0, r12, r14
/* 80343F54 00340EB4 40 82 FF E4 */ bne lbl_80343F38
/* 80343F58 00340EB8 80 01 00 8C */ lwz r0, 0x8c(r1)
/* 80343F5C 00340EBC 7C 00 20 40 */ cmplw r0, r4
/* 80343F60 00340EC0 40 82 00 18 */ bne lbl_80343F78
/* 80343F64 00340EC4 38 00 00 00 */ li r0, 0
/* 80343F68 00340EC8 38 60 00 00 */ li r3, 0
/* 80343F6C 00340ECC 90 08 00 00 */ stw r0, 0(r8)
/* 80343F70 00340ED0 90 09 00 00 */ stw r0, 0(r9)
/* 80343F74 00340ED4 48 00 04 8C */ b lbl_80344400
lbl_80343F78:
/* 80343F78 00340ED8 38 00 00 03 */ li r0, 3
/* 80343F7C 00340EDC 39 C1 00 90 */ addi r14, r1, 0x90
/* 80343F80 00340EE0 81 89 00 00 */ lwz r12, 0(r9)
/* 80343F84 00340EE4 39 60 00 01 */ li r11, 1
/* 80343F88 00340EE8 7C 09 03 A6 */ mtctr r0
lbl_80343F8C:
/* 80343F8C 00340EEC 80 0E 00 00 */ lwz r0, 0(r14)
/* 80343F90 00340EF0 28 00 00 00 */ cmplwi r0, 0
/* 80343F94 00340EF4 40 82 00 50 */ bne lbl_80343FE4
/* 80343F98 00340EF8 80 0E 00 04 */ lwz r0, 4(r14)
/* 80343F9C 00340EFC 39 6B 00 01 */ addi r11, r11, 1
/* 80343FA0 00340F00 28 00 00 00 */ cmplwi r0, 0
/* 80343FA4 00340F04 40 82 00 40 */ bne lbl_80343FE4
/* 80343FA8 00340F08 80 0E 00 08 */ lwz r0, 8(r14)
/* 80343FAC 00340F0C 39 6B 00 01 */ addi r11, r11, 1
/* 80343FB0 00340F10 28 00 00 00 */ cmplwi r0, 0
/* 80343FB4 00340F14 40 82 00 30 */ bne lbl_80343FE4
/* 80343FB8 00340F18 80 0E 00 0C */ lwz r0, 0xc(r14)
/* 80343FBC 00340F1C 39 6B 00 01 */ addi r11, r11, 1
/* 80343FC0 00340F20 28 00 00 00 */ cmplwi r0, 0
/* 80343FC4 00340F24 40 82 00 20 */ bne lbl_80343FE4
/* 80343FC8 00340F28 80 0E 00 10 */ lwz r0, 0x10(r14)
/* 80343FCC 00340F2C 39 6B 00 01 */ addi r11, r11, 1
/* 80343FD0 00340F30 28 00 00 00 */ cmplwi r0, 0
/* 80343FD4 00340F34 40 82 00 10 */ bne lbl_80343FE4
/* 80343FD8 00340F38 39 CE 00 14 */ addi r14, r14, 0x14
/* 80343FDC 00340F3C 39 6B 00 01 */ addi r11, r11, 1
/* 80343FE0 00340F40 42 00 FF AC */ bdnz lbl_80343F8C
lbl_80343FE4:
/* 80343FE4 00340F44 7C 0C 58 40 */ cmplw r12, r11
/* 80343FE8 00340F48 40 80 00 08 */ bge lbl_80343FF0
/* 80343FEC 00340F4C 7D 6C 5B 78 */ mr r12, r11
lbl_80343FF0:
/* 80343FF0 00340F50 38 00 00 03 */ li r0, 3
/* 80343FF4 00340F54 39 C1 00 C8 */ addi r14, r1, 0xc8
/* 80343FF8 00340F58 39 E0 00 0F */ li r15, 0xf
/* 80343FFC 00340F5C 7C 09 03 A6 */ mtctr r0
lbl_80344000:
/* 80344000 00340F60 80 0E 00 00 */ lwz r0, 0(r14)
/* 80344004 00340F64 28 00 00 00 */ cmplwi r0, 0
/* 80344008 00340F68 40 82 00 50 */ bne lbl_80344058
/* 8034400C 00340F6C 80 0E FF FC */ lwz r0, -4(r14)
/* 80344010 00340F70 39 EF FF FF */ addi r15, r15, -1
/* 80344014 00340F74 28 00 00 00 */ cmplwi r0, 0
/* 80344018 00340F78 40 82 00 40 */ bne lbl_80344058
/* 8034401C 00340F7C 80 0E FF F8 */ lwz r0, -8(r14)
/* 80344020 00340F80 39 EF FF FF */ addi r15, r15, -1
/* 80344024 00340F84 28 00 00 00 */ cmplwi r0, 0
/* 80344028 00340F88 40 82 00 30 */ bne lbl_80344058
/* 8034402C 00340F8C 80 0E FF F4 */ lwz r0, -0xc(r14)
/* 80344030 00340F90 39 EF FF FF */ addi r15, r15, -1
/* 80344034 00340F94 28 00 00 00 */ cmplwi r0, 0
/* 80344038 00340F98 40 82 00 20 */ bne lbl_80344058
/* 8034403C 00340F9C 80 0E FF F0 */ lwz r0, -0x10(r14)
/* 80344040 00340FA0 39 EF FF FF */ addi r15, r15, -1
/* 80344044 00340FA4 28 00 00 00 */ cmplwi r0, 0
/* 80344048 00340FA8 40 82 00 10 */ bne lbl_80344058
/* 8034404C 00340FAC 39 CE FF EC */ addi r14, r14, -20
/* 80344050 00340FB0 39 EF FF FF */ addi r15, r15, -1
/* 80344054 00340FB4 42 00 FF AC */ bdnz lbl_80344000
lbl_80344058:
/* 80344058 00340FB8 7C 0C 78 40 */ cmplw r12, r15
/* 8034405C 00340FBC 7D E0 7B 78 */ mr r0, r15
/* 80344060 00340FC0 40 81 00 08 */ ble lbl_80344068
/* 80344064 00340FC4 7D EC 7B 78 */ mr r12, r15
lbl_80344068:
/* 80344068 00340FC8 39 C0 00 01 */ li r14, 1
/* 8034406C 00340FCC 55 72 10 3A */ slwi r18, r11, 2
/* 80344070 00340FD0 3A 61 00 8C */ addi r19, r1, 0x8c
/* 80344074 00340FD4 7E 2B 78 50 */ subf r17, r11, r15
/* 80344078 00340FD8 7D 9B 63 78 */ mr r27, r12
/* 8034407C 00340FDC 91 89 00 00 */ stw r12, 0(r9)
/* 80344080 00340FE0 7D CE 58 30 */ slw r14, r14, r11
/* 80344084 00340FE4 7E 73 92 14 */ add r19, r19, r18
/* 80344088 00340FE8 7E 29 03 A6 */ mtctr r17
/* 8034408C 00340FEC 7C 0B 78 40 */ cmplw r11, r15
/* 80344090 00340FF0 40 80 00 24 */ bge lbl_803440B4
lbl_80344094:
/* 80344094 00340FF4 81 33 00 00 */ lwz r9, 0(r19)
/* 80344098 00340FF8 7D C9 70 51 */ subf. r14, r9, r14
/* 8034409C 00340FFC 40 80 00 0C */ bge lbl_803440A8
/* 803440A0 00341000 38 60 FF FD */ li r3, -3
/* 803440A4 00341004 48 00 03 5C */ b lbl_80344400
lbl_803440A8:
/* 803440A8 00341008 55 CE 08 3C */ slwi r14, r14, 1
/* 803440AC 0034100C 3A 73 00 04 */ addi r19, r19, 4
/* 803440B0 00341010 42 00 FF E4 */ bdnz lbl_80344094
lbl_803440B4:
/* 803440B4 00341014 55 F1 10 3A */ slwi r17, r15, 2
/* 803440B8 00341018 3A 41 00 8C */ addi r18, r1, 0x8c
/* 803440BC 0034101C 7D 32 88 2E */ lwzx r9, r18, r17
/* 803440C0 00341020 7D C9 70 51 */ subf. r14, r9, r14
/* 803440C4 00341024 40 80 00 0C */ bge lbl_803440D0
/* 803440C8 00341028 38 60 FF FD */ li r3, -3
/* 803440CC 0034102C 48 00 03 34 */ b lbl_80344400
lbl_803440D0:
/* 803440D0 00341030 7D 29 72 14 */ add r9, r9, r14
/* 803440D4 00341034 3A 60 00 00 */ li r19, 0
/* 803440D8 00341038 7D 32 89 2E */ stwx r9, r18, r17
/* 803440DC 0034103C 3A 21 00 90 */ addi r17, r1, 0x90
/* 803440E0 00341040 3A 41 00 18 */ addi r18, r1, 0x18
/* 803440E4 00341044 92 61 00 14 */ stw r19, 0x14(r1)
/* 803440E8 00341048 48 00 00 18 */ b lbl_80344100
lbl_803440EC:
/* 803440EC 0034104C 81 31 00 00 */ lwz r9, 0(r17)
/* 803440F0 00341050 3A 31 00 04 */ addi r17, r17, 4
/* 803440F4 00341054 7E 73 4A 14 */ add r19, r19, r9
/* 803440F8 00341058 92 72 00 00 */ stw r19, 0(r18)
/* 803440FC 0034105C 3A 52 00 04 */ addi r18, r18, 4
lbl_80344100:
/* 80344100 00341060 35 EF FF FF */ addic. r15, r15, -1
/* 80344104 00341064 40 82 FF E8 */ bne lbl_803440EC
/* 80344108 00341068 3A 21 00 10 */ addi r17, r1, 0x10
/* 8034410C 0034106C 3A 60 00 00 */ li r19, 0
lbl_80344110:
/* 80344110 00341070 81 23 00 00 */ lwz r9, 0(r3)
/* 80344114 00341074 38 63 00 04 */ addi r3, r3, 4
/* 80344118 00341078 28 09 00 00 */ cmplwi r9, 0
/* 8034411C 0034107C 41 82 00 1C */ beq lbl_80344138
/* 80344120 00341080 55 32 10 3A */ slwi r18, r9, 2
/* 80344124 00341084 7D 31 90 2E */ lwzx r9, r17, r18
/* 80344128 00341088 39 E9 00 01 */ addi r15, r9, 1
/* 8034412C 0034108C 55 29 10 3A */ slwi r9, r9, 2
/* 80344130 00341090 7D F1 91 2E */ stwx r15, r17, r18
/* 80344134 00341094 7E 70 49 2E */ stwx r19, r16, r9
lbl_80344138:
/* 80344138 00341098 3A 73 00 01 */ addi r19, r19, 1
/* 8034413C 0034109C 7C 13 20 40 */ cmplw r19, r4
/* 80344140 003410A0 41 80 FF D0 */ blt lbl_80344110
/* 80344144 003410A4 54 04 10 3A */ slwi r4, r0, 2
/* 80344148 003410A8 38 61 00 10 */ addi r3, r1, 0x10
/* 8034414C 003410AC 7C 83 20 2E */ lwzx r4, r3, r4
/* 80344150 003410B0 3B 20 00 00 */ li r25, 0
/* 80344154 003410B4 93 21 00 50 */ stw r25, 0x50(r1)
/* 80344158 003410B8 55 69 10 3A */ slwi r9, r11, 2
/* 8034415C 003410BC 3B 81 00 8C */ addi r28, r1, 0x8c
/* 80344160 003410C0 54 83 10 3A */ slwi r3, r4, 2
/* 80344164 003410C4 93 21 00 10 */ stw r25, 0x10(r1)
/* 80344168 003410C8 7E 1A 83 78 */ mr r26, r16
/* 8034416C 003410CC 7F 37 CB 78 */ mr r23, r25
/* 80344170 003410D0 7E 6C 00 D0 */ neg r19, r12
/* 80344174 003410D4 7F 9C 4A 14 */ add r28, r28, r9
/* 80344178 003410D8 7D F0 1A 14 */ add r15, r16, r3
/* 8034417C 003410DC 3A A0 FF FF */ li r21, -1
/* 80344180 003410E0 3A 80 00 00 */ li r20, 0
/* 80344184 003410E4 48 00 02 48 */ b lbl_803443CC
lbl_80344188:
/* 80344188 003410E8 82 DC 00 00 */ lwz r22, 0(r28)
/* 8034418C 003410EC 38 6B FF FF */ addi r3, r11, -1
/* 80344190 003410F0 38 80 00 01 */ li r4, 1
/* 80344194 003410F4 7C 90 18 30 */ slw r16, r4, r3
/* 80344198 003410F8 7E C9 03 A6 */ mtctr r22
/* 8034419C 003410FC 28 16 00 00 */ cmplwi r22, 0
/* 803441A0 00341100 41 82 02 24 */ beq lbl_803443C4
lbl_803441A4:
/* 803441A4 00341104 56 A3 10 3A */ slwi r3, r21, 2
/* 803441A8 00341108 3B C1 00 50 */ addi r30, r1, 0x50
/* 803441AC 0034110C 3B A1 00 10 */ addi r29, r1, 0x10
/* 803441B0 00341110 39 36 00 00 */ addi r9, r22, 0
/* 803441B4 00341114 7F DE 1A 14 */ add r30, r30, r3
/* 803441B8 00341118 3A D6 FF FF */ addi r22, r22, -1
/* 803441BC 0034111C 7F BD 1A 14 */ add r29, r29, r3
/* 803441C0 00341120 48 00 00 F0 */ b lbl_803442B0
lbl_803441C4:
/* 803441C4 00341124 7E 73 62 14 */ add r19, r19, r12
/* 803441C8 00341128 3B DE 00 04 */ addi r30, r30, 4
/* 803441CC 0034112C 7C 73 00 50 */ subf r3, r19, r0
/* 803441D0 00341130 3B BD 00 04 */ addi r29, r29, 4
/* 803441D4 00341134 7C 03 D8 40 */ cmplw r3, r27
/* 803441D8 00341138 3A B5 00 01 */ addi r21, r21, 1
/* 803441DC 0034113C 40 81 00 08 */ ble lbl_803441E4
/* 803441E0 00341140 7F 63 DB 78 */ mr r3, r27
lbl_803441E4:
/* 803441E4 00341144 7E 33 58 50 */ subf r17, r19, r11
/* 803441E8 00341148 38 80 00 01 */ li r4, 1
/* 803441EC 0034114C 7C 92 88 30 */ slw r18, r4, r17
/* 803441F0 00341150 7C 12 48 40 */ cmplw r18, r9
/* 803441F4 00341154 40 81 00 3C */ ble lbl_80344230
/* 803441F8 00341158 7C 11 18 40 */ cmplw r17, r3
/* 803441FC 0034115C 7F 84 E3 78 */ mr r4, r28
/* 80344200 00341160 7E 49 90 50 */ subf r18, r9, r18
/* 80344204 00341164 40 80 00 2C */ bge lbl_80344230
/* 80344208 00341168 48 00 00 1C */ b lbl_80344224
lbl_8034420C:
/* 8034420C 0034116C 86 84 00 04 */ lwzu r20, 4(r4)
/* 80344210 00341170 56 52 08 3C */ slwi r18, r18, 1
/* 80344214 00341174 7C 12 A0 40 */ cmplw r18, r20
/* 80344218 00341178 40 81 00 18 */ ble lbl_80344230
/* 8034421C 0034117C 82 84 00 00 */ lwz r20, 0(r4)
/* 80344220 00341180 7E 54 90 50 */ subf r18, r20, r18
lbl_80344224:
/* 80344224 00341184 3A 31 00 01 */ addi r17, r17, 1
/* 80344228 00341188 7C 11 18 40 */ cmplw r17, r3
/* 8034422C 0034118C 41 80 FF E0 */ blt lbl_8034420C
lbl_80344230:
/* 80344230 00341190 38 60 00 01 */ li r3, 1
/* 80344234 00341194 80 9F 00 00 */ lwz r4, 0(r31)
/* 80344238 00341198 7C 77 88 30 */ slw r23, r3, r17
/* 8034423C 0034119C 7C 64 BA 14 */ add r3, r4, r23
/* 80344240 003411A0 28 03 05 A0 */ cmplwi r3, 0x5a0
/* 80344244 003411A4 40 81 00 0C */ ble lbl_80344250
/* 80344248 003411A8 38 60 FF FC */ li r3, -4
/* 8034424C 003411AC 48 00 01 B4 */ b lbl_80344400
lbl_80344250:
/* 80344250 003411B0 54 84 18 38 */ slwi r4, r4, 3
/* 80344254 003411B4 2C 15 00 00 */ cmpwi r21, 0
/* 80344258 003411B8 7E 8A 22 14 */ add r20, r10, r4
/* 8034425C 003411BC 90 7F 00 00 */ stw r3, 0(r31)
/* 80344260 003411C0 92 9E 00 00 */ stw r20, 0(r30)
/* 80344264 003411C4 41 82 00 48 */ beq lbl_803442AC
/* 80344268 003411C8 7C 6C 98 50 */ subf r3, r12, r19
/* 8034426C 003411CC 80 9E FF FC */ lwz r4, -4(r30)
/* 80344270 003411D0 7F 38 1C 30 */ srw r24, r25, r3
/* 80344274 003411D4 9A 21 00 08 */ stb r17, 8(r1)
/* 80344278 003411D8 7C 64 A0 50 */ subf r3, r4, r20
/* 8034427C 003411DC 99 81 00 09 */ stb r12, 9(r1)
/* 80344280 003411E0 57 11 18 38 */ slwi r17, r24, 3
/* 80344284 003411E4 7C 63 1E 70 */ srawi r3, r3, 3
/* 80344288 003411E8 7C 63 01 94 */ addze r3, r3
/* 8034428C 003411EC 82 41 00 08 */ lwz r18, 8(r1)
/* 80344290 003411F0 7C 84 8A 14 */ add r4, r4, r17
/* 80344294 003411F4 93 3D 00 00 */ stw r25, 0(r29)
/* 80344298 003411F8 7C 78 18 50 */ subf r3, r24, r3
/* 8034429C 003411FC 92 44 00 00 */ stw r18, 0(r4)
/* 803442A0 00341200 90 61 00 0C */ stw r3, 0xc(r1)
/* 803442A4 00341204 90 64 00 04 */ stw r3, 4(r4)
/* 803442A8 00341208 48 00 00 08 */ b lbl_803442B0
lbl_803442AC:
/* 803442AC 0034120C 92 88 00 00 */ stw r20, 0(r8)
lbl_803442B0:
/* 803442B0 00341210 7C 73 62 14 */ add r3, r19, r12
/* 803442B4 00341214 7C 0B 18 00 */ cmpw r11, r3
/* 803442B8 00341218 41 81 FF 0C */ bgt lbl_803441C4
/* 803442BC 0034121C 7C 73 58 50 */ subf r3, r19, r11
/* 803442C0 00341220 7C 1A 78 40 */ cmplw r26, r15
/* 803442C4 00341224 98 61 00 09 */ stb r3, 9(r1)
/* 803442C8 00341228 41 80 00 10 */ blt lbl_803442D8
/* 803442CC 0034122C 38 80 00 C0 */ li r4, 0xc0
/* 803442D0 00341230 98 81 00 08 */ stb r4, 8(r1)
/* 803442D4 00341234 48 00 00 54 */ b lbl_80344328
lbl_803442D8:
/* 803442D8 00341238 82 3A 00 00 */ lwz r17, 0(r26)
/* 803442DC 0034123C 7C 11 28 40 */ cmplw r17, r5
/* 803442E0 00341240 40 80 00 28 */ bge lbl_80344308
/* 803442E4 00341244 39 20 01 00 */ li r9, 0x100
/* 803442E8 00341248 38 80 00 60 */ li r4, 0x60
/* 803442EC 0034124C 7D 29 88 10 */ subfc r9, r9, r17
/* 803442F0 00341250 92 21 00 0C */ stw r17, 0xc(r1)
/* 803442F4 00341254 7D 29 49 10 */ subfe r9, r9, r9
/* 803442F8 00341258 3B 5A 00 04 */ addi r26, r26, 4
/* 803442FC 0034125C 7C 84 48 78 */ andc r4, r4, r9
/* 80344300 00341260 98 81 00 08 */ stb r4, 8(r1)
/* 80344304 00341264 48 00 00 24 */ b lbl_80344328
lbl_80344308:
/* 80344308 00341268 7C 85 88 50 */ subf r4, r5, r17
/* 8034430C 0034126C 3B 5A 00 04 */ addi r26, r26, 4
/* 80344310 00341270 54 84 10 3A */ slwi r4, r4, 2
/* 80344314 00341274 7D 27 20 2E */ lwzx r9, r7, r4
/* 80344318 00341278 7C 86 20 2E */ lwzx r4, r6, r4
/* 8034431C 0034127C 39 29 00 50 */ addi r9, r9, 0x50
/* 80344320 00341280 99 21 00 08 */ stb r9, 8(r1)
/* 80344324 00341284 90 81 00 0C */ stw r4, 0xc(r1)
lbl_80344328:
/* 80344328 00341288 7F 32 9C 30 */ srw r18, r25, r19
/* 8034432C 0034128C 38 80 00 01 */ li r4, 1
/* 80344330 00341290 7C 98 18 30 */ slw r24, r4, r3
/* 80344334 00341294 80 81 00 08 */ lwz r4, 8(r1)
/* 80344338 00341298 56 49 18 38 */ slwi r9, r18, 3
/* 8034433C 0034129C 80 61 00 0C */ lwz r3, 0xc(r1)
/* 80344340 003412A0 7D 34 4A 14 */ add r9, r20, r9
/* 80344344 003412A4 57 11 18 38 */ slwi r17, r24, 3
/* 80344348 003412A8 48 00 00 14 */ b lbl_8034435C
lbl_8034434C:
/* 8034434C 003412AC 90 89 00 00 */ stw r4, 0(r9)
/* 80344350 003412B0 7E 52 C2 14 */ add r18, r18, r24
/* 80344354 003412B4 90 69 00 04 */ stw r3, 4(r9)
/* 80344358 003412B8 7D 29 8A 14 */ add r9, r9, r17
lbl_8034435C:
/* 8034435C 003412BC 7C 12 B8 40 */ cmplw r18, r23
/* 80344360 003412C0 41 80 FF EC */ blt lbl_8034434C
/* 80344364 003412C4 7E 11 83 78 */ mr r17, r16
/* 80344368 003412C8 48 00 00 0C */ b lbl_80344374
lbl_8034436C:
/* 8034436C 003412CC 7F 39 8A 78 */ xor r25, r25, r17
/* 80344370 003412D0 56 31 F8 7E */ srwi r17, r17, 1
lbl_80344374:
/* 80344374 003412D4 7F 23 88 39 */ and. r3, r25, r17
/* 80344378 003412D8 40 82 FF F4 */ bne lbl_8034436C
/* 8034437C 003412DC 38 80 00 01 */ li r4, 1
/* 80344380 003412E0 56 B2 10 3A */ slwi r18, r21, 2
/* 80344384 003412E4 7C 83 98 30 */ slw r3, r4, r19
/* 80344388 003412E8 39 21 00 10 */ addi r9, r1, 0x10
/* 8034438C 003412EC 7F 39 8A 78 */ xor r25, r25, r17
/* 80344390 003412F0 3A 23 FF FF */ addi r17, r3, -1
/* 80344394 003412F4 7D 29 92 14 */ add r9, r9, r18
/* 80344398 003412F8 48 00 00 18 */ b lbl_803443B0
lbl_8034439C:
/* 8034439C 003412FC 7E 6C 98 50 */ subf r19, r12, r19
/* 803443A0 00341300 3A B5 FF FF */ addi r21, r21, -1
/* 803443A4 00341304 7C 83 98 30 */ slw r3, r4, r19
/* 803443A8 00341308 39 29 FF FC */ addi r9, r9, -4
/* 803443AC 0034130C 3A 23 FF FF */ addi r17, r3, -1
lbl_803443B0:
/* 803443B0 00341310 80 69 00 00 */ lwz r3, 0(r9)
/* 803443B4 00341314 7F 31 88 38 */ and r17, r25, r17
/* 803443B8 00341318 7C 11 18 40 */ cmplw r17, r3
/* 803443BC 0034131C 40 82 FF E0 */ bne lbl_8034439C
/* 803443C0 00341320 42 00 FD E4 */ bdnz lbl_803441A4
lbl_803443C4:
/* 803443C4 00341324 3B 9C 00 04 */ addi r28, r28, 4
/* 803443C8 00341328 39 6B 00 01 */ addi r11, r11, 1
lbl_803443CC:
/* 803443CC 0034132C 7C 0B 00 00 */ cmpw r11, r0
/* 803443D0 00341330 40 81 FD B8 */ ble lbl_80344188
/* 803443D4 00341334 2C 0E 00 00 */ cmpwi r14, 0
/* 803443D8 00341338 38 80 00 00 */ li r4, 0
/* 803443DC 0034133C 41 82 00 10 */ beq lbl_803443EC
/* 803443E0 00341340 2C 00 00 01 */ cmpwi r0, 1
/* 803443E4 00341344 41 82 00 08 */ beq lbl_803443EC
/* 803443E8 00341348 38 80 00 01 */ li r4, 1
lbl_803443EC:
/* 803443EC 0034134C 7C 64 00 D0 */ neg r3, r4
/* 803443F0 00341350 38 00 FF FB */ li r0, -5
/* 803443F4 00341354 7C 63 23 78 */ or r3, r3, r4
/* 803443F8 00341358 7C 63 FE 70 */ srawi r3, r3, 0x1f
/* 803443FC 0034135C 7C 03 18 38 */ and r3, r0, r3
lbl_80344400:
/* 80344400 00341360 B9 C1 00 D8 */ lmw r14, 0xd8(r1)
/* 80344404 00341364 38 21 01 20 */ addi r1, r1, 0x120
/* 80344408 00341368 4E 80 00 20 */ blr