From 3666d9a26af1b44eecfebb82ccb5ceee22911f6f Mon Sep 17 00:00:00 2001 From: Max Date: Tue, 29 Sep 2020 12:32:43 -0400 Subject: split printf, qsort, rand, scanf, string --- asm/libstdc++/qsort.s | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 asm/libstdc++/qsort.s (limited to 'asm/libstdc++/qsort.s') diff --git a/asm/libstdc++/qsort.s b/asm/libstdc++/qsort.s new file mode 100644 index 0000000..1107bbd --- /dev/null +++ b/asm/libstdc++/qsort.s @@ -0,0 +1,109 @@ +.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 -- cgit v1.2.3