donut-decomp/asm/pad/Padclamp.s
2022-10-17 09:30:18 +01:00

173 lines
7.6 KiB
ArmAsm

.include "macros.inc"
.section .text, "ax" # 0x80006A00 - 0x80406260 ; 0x003FF860
.global ClampStick
ClampStick:
/* 800522A0 0004E0E0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 800522A4 0004E0E4 93 E1 00 0C */ stw r31, 0xc(r1)
/* 800522A8 0004E0E8 88 03 00 00 */ lbz r0, 0x0(r3)
/* 800522AC 0004E0EC 89 04 00 00 */ lbz r8, 0x0(r4)
/* 800522B0 0004E0F0 7C 00 07 75 */ extsb. r0, r0
/* 800522B4 0004E0F4 7D 08 07 74 */ extsb r8, r8
/* 800522B8 0004E0F8 41 80 00 0C */ blt lbl_800522C4
/* 800522BC 0004E0FC 39 20 00 01 */ li r9, 0x1
/* 800522C0 0004E100 48 00 00 0C */ b lbl_800522CC
.global lbl_800522C4
lbl_800522C4:
/* 800522C4 0004E104 39 20 FF FF */ li r9, -0x1
/* 800522C8 0004E108 7C 00 00 D0 */ neg r0, r0
.global lbl_800522CC
lbl_800522CC:
/* 800522CC 0004E10C 2C 08 00 00 */ cmpwi r8, 0x0
/* 800522D0 0004E110 41 80 00 0C */ blt lbl_800522DC
/* 800522D4 0004E114 39 40 00 01 */ li r10, 0x1
/* 800522D8 0004E118 48 00 00 0C */ b lbl_800522E4
.global lbl_800522DC
lbl_800522DC:
/* 800522DC 0004E11C 39 40 FF FF */ li r10, -0x1
/* 800522E0 0004E120 7D 08 00 D0 */ neg r8, r8
.global lbl_800522E4
lbl_800522E4:
/* 800522E4 0004E124 7C FF 07 74 */ extsb r31, r7
/* 800522E8 0004E128 6C 0B 80 00 */ xoris r11, r0, 0x8000
/* 800522EC 0004E12C 7C E0 F8 50 */ subf r7, r0, r31
/* 800522F0 0004E130 6D 0C 80 00 */ xoris r12, r8, 0x8000
/* 800522F4 0004E134 7C E7 58 14 */ addc r7, r7, r11
/* 800522F8 0004E138 7C 1F 00 50 */ subf r0, r31, r0
/* 800522FC 0004E13C 7C E7 39 10 */ subfe r7, r7, r7
/* 80052300 0004E140 7D 68 F8 50 */ subf r11, r8, r31
/* 80052304 0004E144 7C 00 38 79 */ andc. r0, r0, r7
/* 80052308 0004E148 7C FF 40 50 */ subf r7, r31, r8
/* 8005230C 0004E14C 7D 0B 60 14 */ addc r8, r11, r12
/* 80052310 0004E150 7D 08 41 10 */ subfe r8, r8, r8
/* 80052314 0004E154 7C E8 40 78 */ andc r8, r7, r8
/* 80052318 0004E158 40 82 00 1C */ bne lbl_80052334
/* 8005231C 0004E15C 2C 08 00 00 */ cmpwi r8, 0x0
/* 80052320 0004E160 40 82 00 14 */ bne lbl_80052334
/* 80052324 0004E164 38 00 00 00 */ li r0, 0x0
/* 80052328 0004E168 98 04 00 00 */ stb r0, 0x0(r4)
/* 8005232C 0004E16C 98 03 00 00 */ stb r0, 0x0(r3)
/* 80052330 0004E170 48 00 00 94 */ b lbl_800523C4
.global lbl_80052334
lbl_80052334:
/* 80052334 0004E174 7C C7 07 74 */ extsb r7, r6
/* 80052338 0004E178 7D 67 01 D6 */ mullw r11, r7, r0
/* 8005233C 0004E17C 7D 87 41 D6 */ mullw r12, r7, r8
/* 80052340 0004E180 7C 0C 58 00 */ cmpw r12, r11
/* 80052344 0004E184 41 81 00 3C */ bgt lbl_80052380
/* 80052348 0004E188 7C A6 07 74 */ extsb r6, r5
/* 8005234C 0004E18C 7C A7 30 50 */ subf r5, r7, r6
/* 80052350 0004E190 7C A8 29 D6 */ mullw r5, r8, r5
/* 80052354 0004E194 7C C7 31 D6 */ mullw r6, r7, r6
/* 80052358 0004E198 7C EB 2A 14 */ add r7, r11, r5
/* 8005235C 0004E19C 7C 06 38 00 */ cmpw r6, r7
/* 80052360 0004E1A0 40 80 00 54 */ bge lbl_800523B4
/* 80052364 0004E1A4 7C A0 31 D6 */ mullw r5, r0, r6
/* 80052368 0004E1A8 7C 08 31 D6 */ mullw r0, r8, r6
/* 8005236C 0004E1AC 7C C5 3B D6 */ divw r6, r5, r7
/* 80052370 0004E1B0 7C A0 3B D6 */ divw r5, r0, r7
/* 80052374 0004E1B4 7C C0 07 74 */ extsb r0, r6
/* 80052378 0004E1B8 7C A8 07 74 */ extsb r8, r5
/* 8005237C 0004E1BC 48 00 00 38 */ b lbl_800523B4
.global lbl_80052380
lbl_80052380:
/* 80052380 0004E1C0 7C A6 07 74 */ extsb r6, r5
/* 80052384 0004E1C4 7C A7 30 50 */ subf r5, r7, r6
/* 80052388 0004E1C8 7C A0 29 D6 */ mullw r5, r0, r5
/* 8005238C 0004E1CC 7C C7 31 D6 */ mullw r6, r7, r6
/* 80052390 0004E1D0 7C EC 2A 14 */ add r7, r12, r5
/* 80052394 0004E1D4 7C 06 38 00 */ cmpw r6, r7
/* 80052398 0004E1D8 40 80 00 1C */ bge lbl_800523B4
/* 8005239C 0004E1DC 7C A0 31 D6 */ mullw r5, r0, r6
/* 800523A0 0004E1E0 7C 08 31 D6 */ mullw r0, r8, r6
/* 800523A4 0004E1E4 7C C5 3B D6 */ divw r6, r5, r7
/* 800523A8 0004E1E8 7C A0 3B D6 */ divw r5, r0, r7
/* 800523AC 0004E1EC 7C C0 07 74 */ extsb r0, r6
/* 800523B0 0004E1F0 7C A8 07 74 */ extsb r8, r5
.global lbl_800523B4
lbl_800523B4:
/* 800523B4 0004E1F4 7C 09 01 D6 */ mullw r0, r9, r0
/* 800523B8 0004E1F8 98 03 00 00 */ stb r0, 0x0(r3)
/* 800523BC 0004E1FC 7C 0A 41 D6 */ mullw r0, r10, r8
/* 800523C0 0004E200 98 04 00 00 */ stb r0, 0x0(r4)
.global lbl_800523C4
lbl_800523C4:
/* 800523C4 0004E204 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 800523C8 0004E208 38 21 00 10 */ addi r1, r1, 0x10
/* 800523CC 0004E20C 4E 80 00 20 */ blr
.global PADClamp
PADClamp:
/* 800523D0 0004E210 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 800523D4 0004E214 7C 08 02 A6 */ mflr r0
/* 800523D8 0004E218 90 01 00 24 */ stw r0, 0x24(r1)
/* 800523DC 0004E21C 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 800523E0 0004E220 3B E0 00 B4 */ li r31, 0xb4
/* 800523E4 0004E224 93 C1 00 18 */ stw r30, 0x18(r1)
/* 800523E8 0004E228 3B C0 00 00 */ li r30, 0x0
/* 800523EC 0004E22C 93 A1 00 14 */ stw r29, 0x14(r1)
/* 800523F0 0004E230 3B A0 00 00 */ li r29, 0x0
/* 800523F4 0004E234 93 81 00 10 */ stw r28, 0x10(r1)
/* 800523F8 0004E238 7C 7C 1B 78 */ mr r28, r3
.global lbl_800523FC
lbl_800523FC:
/* 800523FC 0004E23C 88 1C 00 0A */ lbz r0, 0xa(r28)
/* 80052400 0004E240 7C 00 07 75 */ extsb. r0, r0
/* 80052404 0004E244 40 82 00 8C */ bne lbl_80052490
/* 80052408 0004E248 38 7C 00 02 */ addi r3, r28, 0x2
/* 8005240C 0004E24C 38 9C 00 03 */ addi r4, r28, 0x3
/* 80052410 0004E250 38 A0 00 48 */ li r5, 0x48
/* 80052414 0004E254 38 C0 00 28 */ li r6, 0x28
/* 80052418 0004E258 38 E0 00 0F */ li r7, 0xf
/* 8005241C 0004E25C 4B FF FE 85 */ bl ClampStick
/* 80052420 0004E260 38 7C 00 04 */ addi r3, r28, 0x4
/* 80052424 0004E264 38 9C 00 05 */ addi r4, r28, 0x5
/* 80052428 0004E268 38 A0 00 3B */ li r5, 0x3b
/* 8005242C 0004E26C 38 C0 00 1F */ li r6, 0x1f
/* 80052430 0004E270 38 E0 00 0F */ li r7, 0xf
/* 80052434 0004E274 4B FF FE 6D */ bl ClampStick
/* 80052438 0004E278 88 1C 00 06 */ lbz r0, 0x6(r28)
/* 8005243C 0004E27C 28 00 00 1E */ cmplwi r0, 0x1e
/* 80052440 0004E280 41 81 00 0C */ bgt lbl_8005244C
/* 80052444 0004E284 9B DC 00 06 */ stb r30, 0x6(r28)
/* 80052448 0004E288 48 00 00 1C */ b lbl_80052464
.global lbl_8005244C
lbl_8005244C:
/* 8005244C 0004E28C 28 00 00 B4 */ cmplwi r0, 0xb4
/* 80052450 0004E290 40 81 00 08 */ ble lbl_80052458
/* 80052454 0004E294 9B FC 00 06 */ stb r31, 0x6(r28)
.global lbl_80052458
lbl_80052458:
/* 80052458 0004E298 88 7C 00 06 */ lbz r3, 0x6(r28)
/* 8005245C 0004E29C 38 03 FF E2 */ addi r0, r3, -0x1e
/* 80052460 0004E2A0 98 1C 00 06 */ stb r0, 0x6(r28)
.global lbl_80052464
lbl_80052464:
/* 80052464 0004E2A4 88 1C 00 07 */ lbz r0, 0x7(r28)
/* 80052468 0004E2A8 28 00 00 1E */ cmplwi r0, 0x1e
/* 8005246C 0004E2AC 41 81 00 0C */ bgt lbl_80052478
/* 80052470 0004E2B0 9B DC 00 07 */ stb r30, 0x7(r28)
/* 80052474 0004E2B4 48 00 00 1C */ b lbl_80052490
.global lbl_80052478
lbl_80052478:
/* 80052478 0004E2B8 28 00 00 B4 */ cmplwi r0, 0xb4
/* 8005247C 0004E2BC 40 81 00 08 */ ble lbl_80052484
/* 80052480 0004E2C0 9B FC 00 07 */ stb r31, 0x7(r28)
.global lbl_80052484
lbl_80052484:
/* 80052484 0004E2C4 88 7C 00 07 */ lbz r3, 0x7(r28)
/* 80052488 0004E2C8 38 03 FF E2 */ addi r0, r3, -0x1e
/* 8005248C 0004E2CC 98 1C 00 07 */ stb r0, 0x7(r28)
.global lbl_80052490
lbl_80052490:
/* 80052490 0004E2D0 3B BD 00 01 */ addi r29, r29, 0x1
/* 80052494 0004E2D4 3B 9C 00 0C */ addi r28, r28, 0xc
/* 80052498 0004E2D8 2C 1D 00 04 */ cmpwi r29, 0x4
/* 8005249C 0004E2DC 41 80 FF 60 */ blt lbl_800523FC
/* 800524A0 0004E2E0 80 01 00 24 */ lwz r0, 0x24(r1)
/* 800524A4 0004E2E4 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 800524A8 0004E2E8 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 800524AC 0004E2EC 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 800524B0 0004E2F0 83 81 00 10 */ lwz r28, 0x10(r1)
/* 800524B4 0004E2F4 7C 08 03 A6 */ mtlr r0
/* 800524B8 0004E2F8 38 21 00 20 */ addi r1, r1, 0x20
/* 800524BC 0004E2FC 4E 80 00 20 */ blr