.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global __copy_longs_aligned __copy_longs_aligned: /* 801CA3E4 001C6044 7C 03 00 D0 */ neg r0, r3 /* 801CA3E8 001C6048 38 84 FF FF */ addi r4, r4, -1 /* 801CA3EC 001C604C 54 06 07 BF */ clrlwi. r6, r0, 0x1e /* 801CA3F0 001C6050 38 63 FF FF */ addi r3, r3, -1 /* 801CA3F4 001C6054 41 82 00 18 */ beq lbl_801CA40C /* 801CA3F8 001C6058 7C A6 28 50 */ subf r5, r6, r5 lbl_801CA3FC: /* 801CA3FC 001C605C 8C 04 00 01 */ lbzu r0, 1(r4) /* 801CA400 001C6060 34 C6 FF FF */ addic. r6, r6, -1 /* 801CA404 001C6064 9C 03 00 01 */ stbu r0, 1(r3) /* 801CA408 001C6068 40 82 FF F4 */ bne lbl_801CA3FC lbl_801CA40C: /* 801CA40C 001C606C 54 A6 D9 7F */ rlwinm. r6, r5, 0x1b, 5, 0x1f /* 801CA410 001C6070 38 E4 FF FD */ addi r7, r4, -3 /* 801CA414 001C6074 38 83 FF FD */ addi r4, r3, -3 /* 801CA418 001C6078 41 82 00 4C */ beq lbl_801CA464 lbl_801CA41C: /* 801CA41C 001C607C 80 67 00 04 */ lwz r3, 4(r7) /* 801CA420 001C6080 34 C6 FF FF */ addic. r6, r6, -1 /* 801CA424 001C6084 80 07 00 08 */ lwz r0, 8(r7) /* 801CA428 001C6088 90 64 00 04 */ stw r3, 4(r4) /* 801CA42C 001C608C 80 67 00 0C */ lwz r3, 0xc(r7) /* 801CA430 001C6090 90 04 00 08 */ stw r0, 8(r4) /* 801CA434 001C6094 80 07 00 10 */ lwz r0, 0x10(r7) /* 801CA438 001C6098 90 64 00 0C */ stw r3, 0xc(r4) /* 801CA43C 001C609C 80 67 00 14 */ lwz r3, 0x14(r7) /* 801CA440 001C60A0 90 04 00 10 */ stw r0, 0x10(r4) /* 801CA444 001C60A4 80 07 00 18 */ lwz r0, 0x18(r7) /* 801CA448 001C60A8 90 64 00 14 */ stw r3, 0x14(r4) /* 801CA44C 001C60AC 80 67 00 1C */ lwz r3, 0x1c(r7) /* 801CA450 001C60B0 90 04 00 18 */ stw r0, 0x18(r4) /* 801CA454 001C60B4 84 07 00 20 */ lwzu r0, 0x20(r7) /* 801CA458 001C60B8 90 64 00 1C */ stw r3, 0x1c(r4) /* 801CA45C 001C60BC 94 04 00 20 */ stwu r0, 0x20(r4) /* 801CA460 001C60C0 40 82 FF BC */ bne lbl_801CA41C lbl_801CA464: /* 801CA464 001C60C4 54 A3 F7 7F */ rlwinm. r3, r5, 0x1e, 0x1d, 0x1f /* 801CA468 001C60C8 41 82 00 14 */ beq lbl_801CA47C lbl_801CA46C: /* 801CA46C 001C60CC 84 07 00 04 */ lwzu r0, 4(r7) /* 801CA470 001C60D0 34 63 FF FF */ addic. r3, r3, -1 /* 801CA474 001C60D4 94 04 00 04 */ stwu r0, 4(r4) /* 801CA478 001C60D8 40 82 FF F4 */ bne lbl_801CA46C lbl_801CA47C: /* 801CA47C 001C60DC 54 A5 07 BF */ clrlwi. r5, r5, 0x1e /* 801CA480 001C60E0 38 C7 00 03 */ addi r6, r7, 3 /* 801CA484 001C60E4 38 64 00 03 */ addi r3, r4, 3 /* 801CA488 001C60E8 4D 82 00 20 */ beqlr lbl_801CA48C: /* 801CA48C 001C60EC 8C 06 00 01 */ lbzu r0, 1(r6) /* 801CA490 001C60F0 34 A5 FF FF */ addic. r5, r5, -1 /* 801CA494 001C60F4 9C 03 00 01 */ stbu r0, 1(r3) /* 801CA498 001C60F8 40 82 FF F4 */ bne lbl_801CA48C /* 801CA49C 001C60FC 4E 80 00 20 */ blr .global __copy_longs_rev_aligned __copy_longs_rev_aligned: /* 801CA4A0 001C6100 7C E3 2A 14 */ add r7, r3, r5 /* 801CA4A4 001C6104 7C C4 2A 14 */ add r6, r4, r5 /* 801CA4A8 001C6108 54 E3 07 BF */ clrlwi. r3, r7, 0x1e /* 801CA4AC 001C610C 41 82 00 18 */ beq lbl_801CA4C4 /* 801CA4B0 001C6110 7C A3 28 50 */ subf r5, r3, r5 lbl_801CA4B4: /* 801CA4B4 001C6114 8C 06 FF FF */ lbzu r0, -1(r6) /* 801CA4B8 001C6118 34 63 FF FF */ addic. r3, r3, -1 /* 801CA4BC 001C611C 9C 07 FF FF */ stbu r0, -1(r7) /* 801CA4C0 001C6120 40 82 FF F4 */ bne lbl_801CA4B4 lbl_801CA4C4: /* 801CA4C4 001C6124 54 A4 D9 7F */ rlwinm. r4, r5, 0x1b, 5, 0x1f /* 801CA4C8 001C6128 41 82 00 4C */ beq lbl_801CA514 lbl_801CA4CC: /* 801CA4CC 001C612C 80 66 FF FC */ lwz r3, -4(r6) /* 801CA4D0 001C6130 34 84 FF FF */ addic. r4, r4, -1 /* 801CA4D4 001C6134 80 06 FF F8 */ lwz r0, -8(r6) /* 801CA4D8 001C6138 90 67 FF FC */ stw r3, -4(r7) /* 801CA4DC 001C613C 80 66 FF F4 */ lwz r3, -0xc(r6) /* 801CA4E0 001C6140 90 07 FF F8 */ stw r0, -8(r7) /* 801CA4E4 001C6144 80 06 FF F0 */ lwz r0, -0x10(r6) /* 801CA4E8 001C6148 90 67 FF F4 */ stw r3, -0xc(r7) /* 801CA4EC 001C614C 80 66 FF EC */ lwz r3, -0x14(r6) /* 801CA4F0 001C6150 90 07 FF F0 */ stw r0, -0x10(r7) /* 801CA4F4 001C6154 80 06 FF E8 */ lwz r0, -0x18(r6) /* 801CA4F8 001C6158 90 67 FF EC */ stw r3, -0x14(r7) /* 801CA4FC 001C615C 80 66 FF E4 */ lwz r3, -0x1c(r6) /* 801CA500 001C6160 90 07 FF E8 */ stw r0, -0x18(r7) /* 801CA504 001C6164 84 06 FF E0 */ lwzu r0, -0x20(r6) /* 801CA508 001C6168 90 67 FF E4 */ stw r3, -0x1c(r7) /* 801CA50C 001C616C 94 07 FF E0 */ stwu r0, -0x20(r7) /* 801CA510 001C6170 40 82 FF BC */ bne lbl_801CA4CC lbl_801CA514: /* 801CA514 001C6174 54 A3 F7 7F */ rlwinm. r3, r5, 0x1e, 0x1d, 0x1f /* 801CA518 001C6178 41 82 00 14 */ beq lbl_801CA52C lbl_801CA51C: /* 801CA51C 001C617C 84 06 FF FC */ lwzu r0, -4(r6) /* 801CA520 001C6180 34 63 FF FF */ addic. r3, r3, -1 /* 801CA524 001C6184 94 07 FF FC */ stwu r0, -4(r7) /* 801CA528 001C6188 40 82 FF F4 */ bne lbl_801CA51C lbl_801CA52C: /* 801CA52C 001C618C 54 A5 07 BF */ clrlwi. r5, r5, 0x1e /* 801CA530 001C6190 4D 82 00 20 */ beqlr lbl_801CA534: /* 801CA534 001C6194 8C 06 FF FF */ lbzu r0, -1(r6) /* 801CA538 001C6198 34 A5 FF FF */ addic. r5, r5, -1 /* 801CA53C 001C619C 9C 07 FF FF */ stbu r0, -1(r7) /* 801CA540 001C61A0 40 82 FF F4 */ bne lbl_801CA534 /* 801CA544 001C61A4 4E 80 00 20 */ blr .global __copy_longs_unaligned __copy_longs_unaligned: /* 801CA548 001C61A8 7C 03 00 D0 */ neg r0, r3 /* 801CA54C 001C61AC 39 04 FF FF */ addi r8, r4, -1 /* 801CA550 001C61B0 54 06 07 BF */ clrlwi. r6, r0, 0x1e /* 801CA554 001C61B4 38 63 FF FF */ addi r3, r3, -1 /* 801CA558 001C61B8 41 82 00 18 */ beq lbl_801CA570 /* 801CA55C 001C61BC 7C A6 28 50 */ subf r5, r6, r5 lbl_801CA560: /* 801CA560 001C61C0 8C 08 00 01 */ lbzu r0, 1(r8) /* 801CA564 001C61C4 34 C6 FF FF */ addic. r6, r6, -1 /* 801CA568 001C61C8 9C 03 00 01 */ stbu r0, 1(r3) /* 801CA56C 001C61CC 40 82 FF F4 */ bne lbl_801CA560 lbl_801CA570: /* 801CA570 001C61D0 38 08 00 01 */ addi r0, r8, 1 /* 801CA574 001C61D4 38 C3 FF FD */ addi r6, r3, -3 /* 801CA578 001C61D8 54 09 07 BE */ clrlwi r9, r0, 0x1e /* 801CA57C 001C61DC 54 A7 E8 FE */ srwi r7, r5, 3 /* 801CA580 001C61E0 7D 09 40 50 */ subf r8, r9, r8 /* 801CA584 001C61E4 54 0A 1E F8 */ rlwinm r10, r0, 3, 0x1b, 0x1c /* 801CA588 001C61E8 84 88 00 01 */ lwzu r4, 1(r8) /* 801CA58C 001C61EC 21 6A 00 20 */ subfic r11, r10, 0x20 lbl_801CA590: /* 801CA590 001C61F0 80 68 00 04 */ lwz r3, 4(r8) /* 801CA594 001C61F4 7C 84 50 30 */ slw r4, r4, r10 /* 801CA598 001C61F8 34 E7 FF FF */ addic. r7, r7, -1 /* 801CA59C 001C61FC 7C 60 5C 30 */ srw r0, r3, r11 /* 801CA5A0 001C6200 7C 63 50 30 */ slw r3, r3, r10 /* 801CA5A4 001C6204 7C 80 03 78 */ or r0, r4, r0 /* 801CA5A8 001C6208 90 06 00 04 */ stw r0, 4(r6) /* 801CA5AC 001C620C 84 88 00 08 */ lwzu r4, 8(r8) /* 801CA5B0 001C6210 7C 80 5C 30 */ srw r0, r4, r11 /* 801CA5B4 001C6214 7C 60 03 78 */ or r0, r3, r0 /* 801CA5B8 001C6218 94 06 00 08 */ stwu r0, 8(r6) /* 801CA5BC 001C621C 40 82 FF D4 */ bne lbl_801CA590 /* 801CA5C0 001C6220 54 A0 07 7B */ rlwinm. r0, r5, 0, 0x1d, 0x1d /* 801CA5C4 001C6224 41 82 00 18 */ beq lbl_801CA5DC /* 801CA5C8 001C6228 84 08 00 04 */ lwzu r0, 4(r8) /* 801CA5CC 001C622C 7C 83 50 30 */ slw r3, r4, r10 /* 801CA5D0 001C6230 7C 00 5C 30 */ srw r0, r0, r11 /* 801CA5D4 001C6234 7C 60 03 78 */ or r0, r3, r0 /* 801CA5D8 001C6238 94 06 00 04 */ stwu r0, 4(r6) lbl_801CA5DC: /* 801CA5DC 001C623C 54 A5 07 BF */ clrlwi. r5, r5, 0x1e /* 801CA5E0 001C6240 38 88 00 03 */ addi r4, r8, 3 /* 801CA5E4 001C6244 38 66 00 03 */ addi r3, r6, 3 /* 801CA5E8 001C6248 4D 82 00 20 */ beqlr /* 801CA5EC 001C624C 20 09 00 04 */ subfic r0, r9, 4 /* 801CA5F0 001C6250 7C 80 20 50 */ subf r4, r0, r4 lbl_801CA5F4: /* 801CA5F4 001C6254 8C 04 00 01 */ lbzu r0, 1(r4) /* 801CA5F8 001C6258 34 A5 FF FF */ addic. r5, r5, -1 /* 801CA5FC 001C625C 9C 03 00 01 */ stbu r0, 1(r3) /* 801CA600 001C6260 40 82 FF F4 */ bne lbl_801CA5F4 /* 801CA604 001C6264 4E 80 00 20 */ blr .global __copy_longs_rev_unaligned __copy_longs_rev_unaligned: /* 801CA608 001C6268 7D 63 2A 14 */ add r11, r3, r5 /* 801CA60C 001C626C 7D 44 2A 14 */ add r10, r4, r5 /* 801CA610 001C6270 55 63 07 BF */ clrlwi. r3, r11, 0x1e /* 801CA614 001C6274 41 82 00 18 */ beq lbl_801CA62C /* 801CA618 001C6278 7C A3 28 50 */ subf r5, r3, r5 lbl_801CA61C: /* 801CA61C 001C627C 8C 0A FF FF */ lbzu r0, -1(r10) /* 801CA620 001C6280 34 63 FF FF */ addic. r3, r3, -1 /* 801CA624 001C6284 9C 0B FF FF */ stbu r0, -1(r11) /* 801CA628 001C6288 40 82 FF F4 */ bne lbl_801CA61C lbl_801CA62C: /* 801CA62C 001C628C 55 48 1E F8 */ rlwinm r8, r10, 3, 0x1b, 0x1c /* 801CA630 001C6290 55 47 07 BE */ clrlwi r7, r10, 0x1e /* 801CA634 001C6294 21 28 00 20 */ subfic r9, r8, 0x20 /* 801CA638 001C6298 54 A6 E8 FE */ srwi r6, r5, 3 /* 801CA63C 001C629C 20 07 00 04 */ subfic r0, r7, 4 /* 801CA640 001C62A0 7D 4A 02 14 */ add r10, r10, r0 /* 801CA644 001C62A4 84 8A FF FC */ lwzu r4, -4(r10) lbl_801CA648: /* 801CA648 001C62A8 80 0A FF FC */ lwz r0, -4(r10) /* 801CA64C 001C62AC 7C 83 4C 30 */ srw r3, r4, r9 /* 801CA650 001C62B0 34 C6 FF FF */ addic. r6, r6, -1 /* 801CA654 001C62B4 7C 04 40 30 */ slw r4, r0, r8 /* 801CA658 001C62B8 7C 00 4C 30 */ srw r0, r0, r9 /* 801CA65C 001C62BC 7C 83 1B 78 */ or r3, r4, r3 /* 801CA660 001C62C0 90 6B FF FC */ stw r3, -4(r11) /* 801CA664 001C62C4 84 8A FF F8 */ lwzu r4, -8(r10) /* 801CA668 001C62C8 7C 83 40 30 */ slw r3, r4, r8 /* 801CA66C 001C62CC 7C 60 03 78 */ or r0, r3, r0 /* 801CA670 001C62D0 94 0B FF F8 */ stwu r0, -8(r11) /* 801CA674 001C62D4 40 82 FF D4 */ bne lbl_801CA648 /* 801CA678 001C62D8 54 A0 07 7B */ rlwinm. r0, r5, 0, 0x1d, 0x1d /* 801CA67C 001C62DC 41 82 00 18 */ beq lbl_801CA694 /* 801CA680 001C62E0 84 6A FF FC */ lwzu r3, -4(r10) /* 801CA684 001C62E4 7C 80 4C 30 */ srw r0, r4, r9 /* 801CA688 001C62E8 7C 63 40 30 */ slw r3, r3, r8 /* 801CA68C 001C62EC 7C 60 03 78 */ or r0, r3, r0 /* 801CA690 001C62F0 94 0B FF FC */ stwu r0, -4(r11) lbl_801CA694: /* 801CA694 001C62F4 54 A5 07 BF */ clrlwi. r5, r5, 0x1e /* 801CA698 001C62F8 4D 82 00 20 */ beqlr /* 801CA69C 001C62FC 7D 4A 3A 14 */ add r10, r10, r7 lbl_801CA6A0: /* 801CA6A0 001C6300 8C 0A FF FF */ lbzu r0, -1(r10) /* 801CA6A4 001C6304 34 A5 FF FF */ addic. r5, r5, -1 /* 801CA6A8 001C6308 9C 0B FF FF */ stbu r0, -1(r11) /* 801CA6AC 001C630C 40 82 FF F4 */ bne lbl_801CA6A0 /* 801CA6B0 001C6310 4E 80 00 20 */ blr