prime/asm/Kyoto/CCrc32.s

63 lines
2.9 KiB
ArmAsm
Raw Normal View History

2022-04-16 07:50:32 +00:00
.include "macros.inc"
2022-07-14 05:36:41 +00:00
.section .text, "ax"
2022-04-16 07:50:32 +00:00
.global Calculate__6CCRC32FPCvUi
Calculate__6CCRC32FPCvUi:
/* 80315590 003124F0 28 04 00 00 */ cmplwi r4, 0
/* 80315594 003124F4 3C A0 80 3D */ lis r5, gkCRC32Table@ha
/* 80315598 003124F8 38 A5 74 08 */ addi r5, r5, gkCRC32Table@l
/* 8031559C 003124FC 39 20 FF FF */ li r9, -1
/* 803155A0 00312500 41 82 00 B8 */ beq lbl_80315658
/* 803155A4 00312504 54 80 F0 BF */ rlwinm. r0, r4, 0x1e, 2, 0x1f
/* 803155A8 00312508 7C 09 03 A6 */ mtctr r0
/* 803155AC 0031250C 41 82 00 84 */ beq lbl_80315630
lbl_803155B0:
/* 803155B0 00312510 88 E3 00 00 */ lbz r7, 0(r3)
/* 803155B4 00312514 55 28 C2 3E */ srwi r8, r9, 8
/* 803155B8 00312518 7C E6 07 74 */ extsb r6, r7
/* 803155BC 0031251C 88 E3 00 01 */ lbz r7, 1(r3)
/* 803155C0 00312520 7D 20 32 78 */ xor r0, r9, r6
/* 803155C4 00312524 54 00 15 BA */ rlwinm r0, r0, 2, 0x16, 0x1d
/* 803155C8 00312528 7C E6 07 74 */ extsb r6, r7
/* 803155CC 0031252C 7C 05 00 2E */ lwzx r0, r5, r0
/* 803155D0 00312530 88 E3 00 02 */ lbz r7, 2(r3)
/* 803155D4 00312534 7D 09 02 78 */ xor r9, r8, r0
/* 803155D8 00312538 7D 20 32 78 */ xor r0, r9, r6
/* 803155DC 0031253C 7C E6 07 74 */ extsb r6, r7
/* 803155E0 00312540 54 00 15 BA */ rlwinm r0, r0, 2, 0x16, 0x1d
/* 803155E4 00312544 88 E3 00 03 */ lbz r7, 3(r3)
/* 803155E8 00312548 7C 05 00 2E */ lwzx r0, r5, r0
/* 803155EC 0031254C 55 28 C2 3E */ srwi r8, r9, 8
/* 803155F0 00312550 38 63 00 04 */ addi r3, r3, 4
/* 803155F4 00312554 7D 09 02 78 */ xor r9, r8, r0
/* 803155F8 00312558 7D 20 32 78 */ xor r0, r9, r6
/* 803155FC 0031255C 7C E6 07 74 */ extsb r6, r7
/* 80315600 00312560 54 00 15 BA */ rlwinm r0, r0, 2, 0x16, 0x1d
/* 80315604 00312564 55 28 C2 3E */ srwi r8, r9, 8
/* 80315608 00312568 7C 05 00 2E */ lwzx r0, r5, r0
/* 8031560C 0031256C 7D 09 02 78 */ xor r9, r8, r0
/* 80315610 00312570 7D 20 32 78 */ xor r0, r9, r6
/* 80315614 00312574 54 00 15 BA */ rlwinm r0, r0, 2, 0x16, 0x1d
/* 80315618 00312578 55 28 C2 3E */ srwi r8, r9, 8
/* 8031561C 0031257C 7C 05 00 2E */ lwzx r0, r5, r0
/* 80315620 00312580 7D 09 02 78 */ xor r9, r8, r0
/* 80315624 00312584 42 00 FF 8C */ bdnz lbl_803155B0
/* 80315628 00312588 70 84 00 03 */ andi. r4, r4, 3
/* 8031562C 0031258C 41 82 00 2C */ beq lbl_80315658
lbl_80315630:
/* 80315630 00312590 7C 89 03 A6 */ mtctr r4
lbl_80315634:
/* 80315634 00312594 88 E3 00 00 */ lbz r7, 0(r3)
/* 80315638 00312598 55 28 C2 3E */ srwi r8, r9, 8
/* 8031563C 0031259C 38 63 00 01 */ addi r3, r3, 1
/* 80315640 003125A0 7C E6 07 74 */ extsb r6, r7
/* 80315644 003125A4 7D 20 32 78 */ xor r0, r9, r6
/* 80315648 003125A8 54 00 15 BA */ rlwinm r0, r0, 2, 0x16, 0x1d
/* 8031564C 003125AC 7C 05 00 2E */ lwzx r0, r5, r0
/* 80315650 003125B0 7D 09 02 78 */ xor r9, r8, r0
/* 80315654 003125B4 42 00 FF E0 */ bdnz lbl_80315634
lbl_80315658:
/* 80315658 003125B8 7D 23 4B 78 */ mr r3, r9
/* 8031565C 003125BC 4E 80 00 20 */ blr