.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global qsort qsort: /* 801CCBCC 001C882C 94 21 FF C0 */ stwu r1, -0x40(r1) /* 801CCBD0 001C8830 7C 08 02 A6 */ mflr r0 /* 801CCBD4 001C8834 28 04 00 02 */ cmplwi r4, 2 /* 801CCBD8 001C8838 90 01 00 44 */ stw r0, 0x44(r1) /* 801CCBDC 001C883C BE 61 00 0C */ stmw r19, 0xc(r1) /* 801CCBE0 001C8840 7C 7B 1B 78 */ mr r27, r3 /* 801CCBE4 001C8844 7C BC 2B 78 */ mr r28, r5 /* 801CCBE8 001C8848 7C DD 33 78 */ mr r29, r6 /* 801CCBEC 001C884C 41 80 01 3C */ blt lbl_801CCD28 /* 801CCBF0 001C8850 54 87 F8 7E */ srwi r7, r4, 1 /* 801CCBF4 001C8854 54 A0 08 3C */ slwi r0, r5, 1 /* 801CCBF8 001C8858 3B E7 00 01 */ addi r31, r7, 1 /* 801CCBFC 001C885C 38 C4 FF FF */ addi r6, r4, -1 /* 801CCC00 001C8860 38 FF FF FF */ addi r7, r31, -1 /* 801CCC04 001C8864 7C 9E 23 78 */ mr r30, r4 /* 801CCC08 001C8868 7C 85 39 D6 */ mullw r4, r5, r7 /* 801CCC0C 001C886C 7F 20 28 50 */ subf r25, r0, r5 /* 801CCC10 001C8870 7C 05 31 D6 */ mullw r0, r5, r6 /* 801CCC14 001C8874 7E E3 22 14 */ add r23, r3, r4 /* 801CCC18 001C8878 7F 5F 29 D6 */ mullw r26, r31, r5 /* 801CCC1C 001C887C 7E C3 02 14 */ add r22, r3, r0 lbl_801CCC20: /* 801CCC20 001C8880 28 1F 00 01 */ cmplwi r31, 1 /* 801CCC24 001C8884 40 81 00 14 */ ble lbl_801CCC38 /* 801CCC28 001C8888 7F 5C D0 50 */ subf r26, r28, r26 /* 801CCC2C 001C888C 7E FC B8 50 */ subf r23, r28, r23 /* 801CCC30 001C8890 3B FF FF FF */ addi r31, r31, -1 /* 801CCC34 001C8894 48 00 00 40 */ b lbl_801CCC74 lbl_801CCC38: /* 801CCC38 001C8898 38 76 FF FF */ addi r3, r22, -1 /* 801CCC3C 001C889C 38 97 FF FF */ addi r4, r23, -1 /* 801CCC40 001C88A0 38 BC 00 01 */ addi r5, r28, 1 /* 801CCC44 001C88A4 48 00 00 18 */ b lbl_801CCC5C lbl_801CCC48: /* 801CCC48 001C88A8 88 C4 00 01 */ lbz r6, 1(r4) /* 801CCC4C 001C88AC 88 03 00 01 */ lbz r0, 1(r3) /* 801CCC50 001C88B0 7C C6 07 74 */ extsb r6, r6 /* 801CCC54 001C88B4 9C 04 00 01 */ stbu r0, 1(r4) /* 801CCC58 001C88B8 9C C3 00 01 */ stbu r6, 1(r3) lbl_801CCC5C: /* 801CCC5C 001C88BC 34 A5 FF FF */ addic. r5, r5, -1 /* 801CCC60 001C88C0 40 82 FF E8 */ bne lbl_801CCC48 /* 801CCC64 001C88C4 3B DE FF FF */ addi r30, r30, -1 /* 801CCC68 001C88C8 28 1E 00 01 */ cmplwi r30, 1 /* 801CCC6C 001C88CC 41 82 00 BC */ beq lbl_801CCD28 /* 801CCC70 001C88D0 7E DC B0 50 */ subf r22, r28, r22 lbl_801CCC74: /* 801CCC74 001C88D4 7C 1A CA 14 */ add r0, r26, r25 /* 801CCC78 001C88D8 7F F8 FB 78 */ mr r24, r31 /* 801CCC7C 001C88DC 7E 9B 02 14 */ add r20, r27, r0 /* 801CCC80 001C88E0 48 00 00 98 */ b lbl_801CCD18 lbl_801CCC84: /* 801CCC84 001C88E4 57 18 08 3C */ slwi r24, r24, 1 /* 801CCC88 001C88E8 7E 95 A3 78 */ mr r21, r20 /* 801CCC8C 001C88EC 38 18 FF FF */ addi r0, r24, -1 /* 801CCC90 001C88F0 7C 1C 01 D6 */ mullw r0, r28, r0 /* 801CCC94 001C88F4 7C 18 F0 40 */ cmplw r24, r30 /* 801CCC98 001C88F8 7E 9B 02 14 */ add r20, r27, r0 /* 801CCC9C 001C88FC 40 80 00 2C */ bge lbl_801CCCC8 /* 801CCCA0 001C8900 7E 74 E2 14 */ add r19, r20, r28 /* 801CCCA4 001C8904 7F AC EB 78 */ mr r12, r29 /* 801CCCA8 001C8908 7E 83 A3 78 */ mr r3, r20 /* 801CCCAC 001C890C 7E 64 9B 78 */ mr r4, r19 /* 801CCCB0 001C8910 7D 89 03 A6 */ mtctr r12 /* 801CCCB4 001C8914 4E 80 04 21 */ bctrl /* 801CCCB8 001C8918 2C 03 00 00 */ cmpwi r3, 0 /* 801CCCBC 001C891C 40 80 00 0C */ bge lbl_801CCCC8 /* 801CCCC0 001C8920 7E 74 9B 78 */ mr r20, r19 /* 801CCCC4 001C8924 3B 18 00 01 */ addi r24, r24, 1 lbl_801CCCC8: /* 801CCCC8 001C8928 7F AC EB 78 */ mr r12, r29 /* 801CCCCC 001C892C 7E A3 AB 78 */ mr r3, r21 /* 801CCCD0 001C8930 7E 84 A3 78 */ mr r4, r20 /* 801CCCD4 001C8934 7D 89 03 A6 */ mtctr r12 /* 801CCCD8 001C8938 4E 80 04 21 */ bctrl /* 801CCCDC 001C893C 2C 03 00 00 */ cmpwi r3, 0 /* 801CCCE0 001C8940 40 80 FF 40 */ bge lbl_801CCC20 /* 801CCCE4 001C8944 38 74 FF FF */ addi r3, r20, -1 /* 801CCCE8 001C8948 38 95 FF FF */ addi r4, r21, -1 /* 801CCCEC 001C894C 38 BC 00 01 */ addi r5, r28, 1 /* 801CCCF0 001C8950 48 00 00 20 */ b lbl_801CCD10 lbl_801CCCF4: /* 801CCCF4 001C8954 88 C4 00 01 */ lbz r6, 1(r4) /* 801CCCF8 001C8958 88 03 00 01 */ lbz r0, 1(r3) /* 801CCCFC 001C895C 7C C6 07 74 */ extsb r6, r6 /* 801CCD00 001C8960 98 04 00 01 */ stb r0, 1(r4) /* 801CCD04 001C8964 38 84 00 01 */ addi r4, r4, 1 /* 801CCD08 001C8968 98 C3 00 01 */ stb r6, 1(r3) /* 801CCD0C 001C896C 38 63 00 01 */ addi r3, r3, 1 lbl_801CCD10: /* 801CCD10 001C8970 34 A5 FF FF */ addic. r5, r5, -1 /* 801CCD14 001C8974 40 82 FF E0 */ bne lbl_801CCCF4 lbl_801CCD18: /* 801CCD18 001C8978 57 00 08 3C */ slwi r0, r24, 1 /* 801CCD1C 001C897C 7C 00 F0 40 */ cmplw r0, r30 /* 801CCD20 001C8980 40 81 FF 64 */ ble lbl_801CCC84 /* 801CCD24 001C8984 4B FF FE FC */ b lbl_801CCC20 lbl_801CCD28: /* 801CCD28 001C8988 BA 61 00 0C */ lmw r19, 0xc(r1) /* 801CCD2C 001C898C 80 01 00 44 */ lwz r0, 0x44(r1) /* 801CCD30 001C8990 7C 08 03 A6 */ mtlr r0 /* 801CCD34 001C8994 38 21 00 40 */ addi r1, r1, 0x40 /* 801CCD38 001C8998 4E 80 00 20 */ blr