.include "macros.inc" .section .text, "ax" # 0x80003640 - 0x803CB1C0 .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