mirror of https://github.com/PrimeDecomp/prime.git
113 lines
5.2 KiB
ArmAsm
113 lines
5.2 KiB
ArmAsm
.include "macros.inc"
|
|
|
|
.section .text, "ax" # 0x80003640 - 0x803CB1C0
|
|
|
|
.global adler32
|
|
adler32:
|
|
/* 80341120 0033E080 94 21 FF E0 */ stwu r1, -0x20(r1)
|
|
/* 80341124 0033E084 54 60 04 3E */ clrlwi r0, r3, 0x10
|
|
/* 80341128 0033E088 28 04 00 00 */ cmplwi r4, 0
|
|
/* 8034112C 0033E08C 54 63 84 3E */ srwi r3, r3, 0x10
|
|
/* 80341130 0033E090 BF 61 00 0C */ stmw r27, 0xc(r1)
|
|
/* 80341134 0033E094 40 82 00 0C */ bne lbl_80341140
|
|
/* 80341138 0033E098 38 60 00 01 */ li r3, 1
|
|
/* 8034113C 0033E09C 48 00 01 5C */ b lbl_80341298
|
|
lbl_80341140:
|
|
/* 80341140 0033E0A0 3C E0 80 08 */ lis r7, 0x80078071@ha
|
|
/* 80341144 0033E0A4 3C C0 00 01 */ lis r6, 0x0000FFF1@ha
|
|
/* 80341148 0033E0A8 39 27 80 71 */ addi r9, r7, 0x80078071@l
|
|
/* 8034114C 0033E0AC 38 E6 FF F1 */ addi r7, r6, 0x0000FFF1@l
|
|
/* 80341150 0033E0B0 48 00 01 38 */ b lbl_80341288
|
|
lbl_80341154:
|
|
/* 80341154 0033E0B4 28 05 15 B0 */ cmplwi r5, 0x15b0
|
|
/* 80341158 0033E0B8 39 00 15 B0 */ li r8, 0x15b0
|
|
/* 8034115C 0033E0BC 40 80 00 08 */ bge lbl_80341164
|
|
/* 80341160 0033E0C0 7C A8 2B 78 */ mr r8, r5
|
|
lbl_80341164:
|
|
/* 80341164 0033E0C4 55 06 E1 3E */ srwi r6, r8, 4
|
|
/* 80341168 0033E0C8 7D 1B 43 78 */ mr r27, r8
|
|
/* 8034116C 0033E0CC 7C A8 28 50 */ subf r5, r8, r5
|
|
/* 80341170 0033E0D0 7C C9 03 A6 */ mtctr r6
|
|
/* 80341174 0033E0D4 2C 08 00 10 */ cmpwi r8, 0x10
|
|
/* 80341178 0033E0D8 41 80 00 D0 */ blt lbl_80341248
|
|
lbl_8034117C:
|
|
/* 8034117C 0033E0DC 88 C4 00 00 */ lbz r6, 0(r4)
|
|
/* 80341180 0033E0E0 3B 7B FF F0 */ addi r27, r27, -16
|
|
/* 80341184 0033E0E4 89 04 00 01 */ lbz r8, 1(r4)
|
|
/* 80341188 0033E0E8 7C 00 32 14 */ add r0, r0, r6
|
|
/* 8034118C 0033E0EC 88 C4 00 02 */ lbz r6, 2(r4)
|
|
/* 80341190 0033E0F0 7C 63 02 14 */ add r3, r3, r0
|
|
/* 80341194 0033E0F4 89 64 00 03 */ lbz r11, 3(r4)
|
|
/* 80341198 0033E0F8 7C 00 42 14 */ add r0, r0, r8
|
|
/* 8034119C 0033E0FC 89 44 00 04 */ lbz r10, 4(r4)
|
|
/* 803411A0 0033E100 7C 63 02 14 */ add r3, r3, r0
|
|
/* 803411A4 0033E104 89 04 00 05 */ lbz r8, 5(r4)
|
|
/* 803411A8 0033E108 7C 00 32 14 */ add r0, r0, r6
|
|
/* 803411AC 0033E10C 88 C4 00 06 */ lbz r6, 6(r4)
|
|
/* 803411B0 0033E110 7C 63 02 14 */ add r3, r3, r0
|
|
/* 803411B4 0033E114 8B 84 00 07 */ lbz r28, 7(r4)
|
|
/* 803411B8 0033E118 7C 00 5A 14 */ add r0, r0, r11
|
|
/* 803411BC 0033E11C 8B A4 00 08 */ lbz r29, 8(r4)
|
|
/* 803411C0 0033E120 7C 63 02 14 */ add r3, r3, r0
|
|
/* 803411C4 0033E124 8B C4 00 09 */ lbz r30, 9(r4)
|
|
/* 803411C8 0033E128 7C 00 52 14 */ add r0, r0, r10
|
|
/* 803411CC 0033E12C 8B E4 00 0A */ lbz r31, 0xa(r4)
|
|
/* 803411D0 0033E130 7C 63 02 14 */ add r3, r3, r0
|
|
/* 803411D4 0033E134 89 84 00 0B */ lbz r12, 0xb(r4)
|
|
/* 803411D8 0033E138 7C 00 42 14 */ add r0, r0, r8
|
|
/* 803411DC 0033E13C 89 64 00 0C */ lbz r11, 0xc(r4)
|
|
/* 803411E0 0033E140 7C 63 02 14 */ add r3, r3, r0
|
|
/* 803411E4 0033E144 89 44 00 0D */ lbz r10, 0xd(r4)
|
|
/* 803411E8 0033E148 7C 00 32 14 */ add r0, r0, r6
|
|
/* 803411EC 0033E14C 89 04 00 0E */ lbz r8, 0xe(r4)
|
|
/* 803411F0 0033E150 7C 63 02 14 */ add r3, r3, r0
|
|
/* 803411F4 0033E154 88 C4 00 0F */ lbz r6, 0xf(r4)
|
|
/* 803411F8 0033E158 7C 00 E2 14 */ add r0, r0, r28
|
|
/* 803411FC 0033E15C 38 84 00 10 */ addi r4, r4, 0x10
|
|
/* 80341200 0033E160 7C 63 02 14 */ add r3, r3, r0
|
|
/* 80341204 0033E164 7C 00 EA 14 */ add r0, r0, r29
|
|
/* 80341208 0033E168 7C 63 02 14 */ add r3, r3, r0
|
|
/* 8034120C 0033E16C 7C 00 F2 14 */ add r0, r0, r30
|
|
/* 80341210 0033E170 7C 63 02 14 */ add r3, r3, r0
|
|
/* 80341214 0033E174 7C 00 FA 14 */ add r0, r0, r31
|
|
/* 80341218 0033E178 7C 63 02 14 */ add r3, r3, r0
|
|
/* 8034121C 0033E17C 7C 00 62 14 */ add r0, r0, r12
|
|
/* 80341220 0033E180 7C 63 02 14 */ add r3, r3, r0
|
|
/* 80341224 0033E184 7C 00 5A 14 */ add r0, r0, r11
|
|
/* 80341228 0033E188 7C 63 02 14 */ add r3, r3, r0
|
|
/* 8034122C 0033E18C 7C 00 52 14 */ add r0, r0, r10
|
|
/* 80341230 0033E190 7C 63 02 14 */ add r3, r3, r0
|
|
/* 80341234 0033E194 7C 00 42 14 */ add r0, r0, r8
|
|
/* 80341238 0033E198 7C 63 02 14 */ add r3, r3, r0
|
|
/* 8034123C 0033E19C 7C 00 32 14 */ add r0, r0, r6
|
|
/* 80341240 0033E1A0 7C 63 02 14 */ add r3, r3, r0
|
|
/* 80341244 0033E1A4 42 00 FF 38 */ bdnz lbl_8034117C
|
|
lbl_80341248:
|
|
/* 80341248 0033E1A8 2C 1B 00 00 */ cmpwi r27, 0
|
|
/* 8034124C 0033E1AC 41 82 00 1C */ beq lbl_80341268
|
|
lbl_80341250:
|
|
/* 80341250 0033E1B0 88 C4 00 00 */ lbz r6, 0(r4)
|
|
/* 80341254 0033E1B4 37 7B FF FF */ addic. r27, r27, -1
|
|
/* 80341258 0033E1B8 38 84 00 01 */ addi r4, r4, 1
|
|
/* 8034125C 0033E1BC 7C 00 32 14 */ add r0, r0, r6
|
|
/* 80341260 0033E1C0 7C 63 02 14 */ add r3, r3, r0
|
|
/* 80341264 0033E1C4 40 82 FF EC */ bne lbl_80341250
|
|
lbl_80341268:
|
|
/* 80341268 0033E1C8 7D 09 00 16 */ mulhwu r8, r9, r0
|
|
/* 8034126C 0033E1CC 7C C9 18 16 */ mulhwu r6, r9, r3
|
|
/* 80341270 0033E1D0 55 08 8B FE */ srwi r8, r8, 0xf
|
|
/* 80341274 0033E1D4 7D 08 39 D6 */ mullw r8, r8, r7
|
|
/* 80341278 0033E1D8 54 C6 8B FE */ srwi r6, r6, 0xf
|
|
/* 8034127C 0033E1DC 7C C6 39 D6 */ mullw r6, r6, r7
|
|
/* 80341280 0033E1E0 7C 08 00 50 */ subf r0, r8, r0
|
|
/* 80341284 0033E1E4 7C 66 18 50 */ subf r3, r6, r3
|
|
lbl_80341288:
|
|
/* 80341288 0033E1E8 28 05 00 00 */ cmplwi r5, 0
|
|
/* 8034128C 0033E1EC 40 82 FE C8 */ bne lbl_80341154
|
|
/* 80341290 0033E1F0 54 63 80 1E */ slwi r3, r3, 0x10
|
|
/* 80341294 0033E1F4 7C 63 03 78 */ or r3, r3, r0
|
|
lbl_80341298:
|
|
/* 80341298 0033E1F8 BB 61 00 0C */ lmw r27, 0xc(r1)
|
|
/* 8034129C 0033E1FC 38 21 00 20 */ addi r1, r1, 0x20
|
|
/* 803412A0 0033E200 4E 80 00 20 */ blr
|