.data .globl n .p2align 2 n: .word 0 .text .globl bubblesort .p2align 2 bubblesort: .L.bubblesort.0: stp x29, x30, [sp, #-16]! mov x29, sp mov x10, x0 mov w8, #0 mov w11, w8 b .L.bubblesort.1 .L.bubblesort.1: adrp x13, n ldr w8, [x13, #:lo12:n] mov w9, #1 sub w8, w8, w9 cmp w11, w8 b.lt .L.bubblesort.2 b .L.bubblesort.3 .L.bubblesort.2: mov w8, #0 mov w12, w8 b .L.bubblesort.4 .L.bubblesort.3: mov w8, #0 mov w0, w8 ldp x29, x30, [sp], #16 ret .L.bubblesort.4: adrp x13, n ldr w8, [x13, #:lo12:n] sub w8, w8, w11 mov w9, #1 sub w8, w8, w9 cmp w12, w8 b.lt .L.bubblesort.5 b .L.bubblesort.6 .L.bubblesort.5: sxtw x8, w12 lsl x8, x8, #2 add x8, x10, x8 ldr w9, [x8] mov w8, #1 add w8, w12, w8 sxtw x8, w8 lsl x8, x8, #2 add x8, x10, x8 ldr w8, [x8] cmp w9, w8 b.gt .L.bubblesort.7 b .L.bubblesort.8 .L.bubblesort.6: mov w8, #1 add w8, w11, w8 mov w11, w8 b .L.bubblesort.1 .L.bubblesort.7: mov w8, #1 add w9, w12, w8 sxtw x8, w9 lsl x8, x8, #2 add x8, x10, x8 ldr w8, [x8] sxtw x15, w12 lsl x15, x15, #2 add x15, x10, x15 ldr w15, [x15] sxtw x9, w9 lsl x9, x9, #2 add x9, x10, x9 str w15, [x9] sxtw x9, w12 lsl x9, x9, #2 add x9, x10, x9 str w8, [x9] b .L.bubblesort.8 .L.bubblesort.8: mov w8, #1 add w8, w12, w8 mov w12, w8 b .L.bubblesort.4 .text .globl insertsort .p2align 2 insertsort: .L.insertsort.0: stp x29, x30, [sp, #-16]! mov x29, sp sub sp, sp, #32 str x19, [sp, #0] mov x11, x0 mov w8, #1 mov w10, w8 b .L.insertsort.1 .L.insertsort.1: adrp x13, n ldr w8, [x13, #:lo12:n] cmp w10, w8 b.lt .L.insertsort.2 b .L.insertsort.3 .L.insertsort.2: sxtw x8, w10 lsl x8, x8, #2 add x8, x11, x8 ldr w8, [x8] mov w9, #1 sub w9, w10, w9 mov w19, w9 mov w12, w8 b .L.insertsort.4 .L.insertsort.3: mov w8, #0 mov w0, w8 ldr x19, [sp, #0] add sp, sp, #32 ldp x29, x30, [sp], #16 ret .L.insertsort.4: mov w8, #-1 cmp w19, w8 b.gt .L.insertsort.7 b .L.insertsort.6 .L.insertsort.5: mov w9, #1 add w8, w19, w9 sxtw x15, w19 lsl x15, x15, #2 add x15, x11, x15 ldr w15, [x15] sxtw x8, w8 lsl x8, x8, #2 add x8, x11, x8 str w15, [x8] sub w8, w19, w9 mov w19, w8 b .L.insertsort.4 .L.insertsort.6: mov w9, #1 add w8, w19, w9 sxtw x8, w8 lsl x8, x8, #2 add x8, x11, x8 str w12, [x8] add w8, w10, w9 mov w10, w8 b .L.insertsort.1 .L.insertsort.7: sxtw x8, w19 lsl x8, x8, #2 add x8, x11, x8 ldr w8, [x8] cmp w12, w8 b.lt .L.insertsort.5 b .L.insertsort.6 .text .globl QuickSort .p2align 2 QuickSort: .L.QuickSort.0: stp x29, x30, [sp, #-16]! mov x29, sp sub sp, sp, #48 str x22, [sp, #0] str x21, [sp, #8] str x19, [sp, #16] str x20, [sp, #24] mov x19, x0 mov w12, w1 mov w20, w2 cmp w12, w20 b.lt .L.QuickSort.1 b .L.QuickSort.2 .L.QuickSort.1: sxtw x8, w12 lsl x8, x8, #2 add x8, x19, x8 ldr w8, [x8] mov w9, w8 mov w8, w20 mov w22, w12 b .L.QuickSort.3 .L.QuickSort.2: mov w8, #0 mov w0, w8 ldr x22, [sp, #0] ldr x21, [sp, #8] ldr x19, [sp, #16] ldr x20, [sp, #24] add sp, sp, #48 ldp x29, x30, [sp], #16 ret .L.QuickSort.3: cmp w22, w8 b.lt .L.QuickSort.4 b .L.QuickSort.5 .L.QuickSort.4: mov w10, w9 mov w11, w8 mov w15, w22 b .L.QuickSort.6 .L.QuickSort.5: sxtw x8, w22 lsl x8, x8, #2 add x8, x19, x8 str w9, [x8] mov w21, #1 sub w8, w22, w21 mov x0, x19 mov w1, w12 mov w2, w8 bl QuickSort mov w8, w0 add w8, w22, w21 mov x0, x19 mov w1, w8 mov w2, w20 bl QuickSort mov w8, w0 b .L.QuickSort.2 .L.QuickSort.6: cmp w15, w11 b.lt .L.QuickSort.9 b .L.QuickSort.8 .L.QuickSort.7: mov w8, #1 sub w8, w11, w8 mov w11, w8 b .L.QuickSort.6 .L.QuickSort.8: cmp w15, w11 b.lt .L.QuickSort.10 mov w8, w15 b .L.QuickSort.11 .L.QuickSort.9: sxtw x8, w11 lsl x8, x8, #2 add x8, x19, x8 ldr w9, [x8] mov w8, #1 sub w8, w10, w8 cmp w9, w8 b.gt .L.QuickSort.7 b .L.QuickSort.8 .L.QuickSort.10: sxtw x8, w11 lsl x8, x8, #2 add x8, x19, x8 ldr w9, [x8] sxtw x8, w15 lsl x8, x8, #2 add x8, x19, x8 str w9, [x8] mov w8, #1 add w8, w15, w8 b .L.QuickSort.11 .L.QuickSort.11: mov w15, w11 mov w11, w8 b .L.QuickSort.12 .L.QuickSort.12: cmp w11, w15 b.lt .L.QuickSort.15 b .L.QuickSort.14 .L.QuickSort.13: mov w8, #1 add w8, w11, w8 mov w11, w8 b .L.QuickSort.12 .L.QuickSort.14: cmp w11, w15 b.lt .L.QuickSort.16 mov w8, w15 b .L.QuickSort.17 .L.QuickSort.15: sxtw x8, w11 lsl x8, x8, #2 add x8, x19, x8 ldr w8, [x8] cmp w8, w10 b.lt .L.QuickSort.13 b .L.QuickSort.14 .L.QuickSort.16: sxtw x8, w11 lsl x8, x8, #2 add x8, x19, x8 ldr w9, [x8] sxtw x8, w15 lsl x8, x8, #2 add x8, x19, x8 str w9, [x8] mov w8, #1 sub w8, w15, w8 b .L.QuickSort.17 .L.QuickSort.17: mov w9, w10 mov w22, w11 b .L.QuickSort.3 .text .globl getMid .p2align 2 getMid: .L.getMid.0: stp x29, x30, [sp, #-16]! mov x29, sp mov x10, x0 adrp x13, n ldr w8, [x13, #:lo12:n] mov w9, #2 add w9, w8, #1 cmp w8, #0 csel w9, w9, w8, lt asr w9, w9, #1 mov w11, #2 msub w8, w9, w11, w8 mov w9, #0 cmp w8, w9 b.eq .L.getMid.1 b .L.getMid.2 .L.getMid.1: adrp x13, n ldr w9, [x13, #:lo12:n] mov w8, #2 add w8, w9, #1 cmp w9, #0 csel w8, w8, w9, lt asr w8, w8, #1 sxtw x9, w8 lsl x9, x9, #2 add x9, x10, x9 ldr w9, [x9] mov w11, #1 sub w8, w8, w11 sxtw x8, w8 lsl x8, x8, #2 add x8, x10, x8 ldr w8, [x8] add w9, w9, w8 add w8, w9, #1 cmp w9, #0 csel w8, w8, w9, lt asr w8, w8, #1 mov w0, w8 ldp x29, x30, [sp], #16 ret .L.getMid.2: adrp x13, n ldr w8, [x13, #:lo12:n] mov w9, #2 add w9, w8, #1 cmp w8, #0 csel w8, w9, w8, lt asr w8, w8, #1 sxtw x8, w8 lsl x8, x8, #2 add x8, x10, x8 ldr w8, [x8] mov w0, w8 ldp x29, x30, [sp], #16 ret .text .globl getMost .p2align 2 getMost: .L.getMost.0: stp x29, x30, [sp, #-16]! mov x29, sp sub sp, sp, #4032 str x20, [sp, #0] str x19, [sp, #8] mov x10, x0 mov w8, #0 b .L.getMost.1 .L.getMost.1: mov w9, #1000 cmp w8, w9 b.lt .L.getMost.2 b .L.getMost.3 .L.getMost.2: mov x9, x29 sub x9, x9, #4000 sxtw x11, w8 lsl x11, x11, #2 add x9, x9, x11 mov w11, #0 str w11, [x9] mov w9, #1 add w8, w8, w9 b .L.getMost.1 .L.getMost.3: mov w8, #0 mov w12, w8 mov w11, w8 mov w15, w8 b .L.getMost.4 .L.getMost.4: adrp x13, n ldr w8, [x13, #:lo12:n] cmp w15, w8 b.lt .L.getMost.5 b .L.getMost.6 .L.getMost.5: sxtw x8, w15 lsl x8, x8, #2 add x8, x10, x8 ldr w19, [x8] mov x20, x29 sub x20, x20, #4000 sxtw x8, w19 lsl x8, x8, #2 add x8, x20, x8 ldr w9, [x8] mov w8, #1 add w8, w9, w8 sxtw x9, w19 lsl x9, x9, #2 add x9, x20, x9 str w8, [x9] sxtw x8, w19 lsl x8, x8, #2 add x8, x20, x8 ldr w8, [x8] cmp w8, w11 b.gt .L.getMost.7 mov w8, w12 mov w9, w11 b .L.getMost.8 .L.getMost.6: mov w0, w12 ldr x20, [sp, #0] ldr x19, [sp, #8] add sp, sp, #4032 ldp x29, x30, [sp], #16 ret .L.getMost.7: mov x8, x29 sub x8, x8, #4000 sxtw x9, w19 lsl x9, x9, #2 add x8, x8, x9 ldr w9, [x8] mov w8, w19 b .L.getMost.8 .L.getMost.8: mov w11, #1 add w15, w15, w11 mov w12, w8 mov w11, w9 b .L.getMost.4 .text .globl revert .p2align 2 revert: .L.revert.0: stp x29, x30, [sp, #-16]! mov x29, sp mov x11, x0 mov w8, #0 mov w12, w8 mov w15, w8 b .L.revert.1 .L.revert.1: cmp w15, w12 b.lt .L.revert.2 b .L.revert.3 .L.revert.2: sxtw x8, w15 lsl x8, x8, #2 add x8, x11, x8 ldr w10, [x8] sxtw x8, w12 lsl x8, x8, #2 add x8, x11, x8 ldr w9, [x8] sxtw x8, w15 lsl x8, x8, #2 add x8, x11, x8 str w9, [x8] sxtw x8, w12 lsl x8, x8, #2 add x8, x11, x8 str w10, [x8] mov w8, #1 add w9, w15, w8 sub w8, w12, w8 mov w12, w8 mov w15, w9 b .L.revert.1 .L.revert.3: mov w8, #0 mov w0, w8 ldp x29, x30, [sp], #16 ret .text .globl arrCopy .p2align 2 arrCopy: .L.arrCopy.0: stp x29, x30, [sp, #-16]! mov x29, sp mov x10, x0 mov x9, x1 mov w8, #0 mov w11, w8 b .L.arrCopy.1 .L.arrCopy.1: adrp x13, n ldr w8, [x13, #:lo12:n] cmp w11, w8 b.lt .L.arrCopy.2 b .L.arrCopy.3 .L.arrCopy.2: sxtw x8, w11 lsl x8, x8, #2 add x8, x10, x8 ldr w12, [x8] sxtw x8, w11 lsl x8, x8, #2 add x8, x9, x8 str w12, [x8] mov w8, #1 add w8, w11, w8 mov w11, w8 b .L.arrCopy.1 .L.arrCopy.3: mov w8, #0 mov w0, w8 ldp x29, x30, [sp], #16 ret .text .globl calSum .p2align 2 calSum: .L.calSum.0: stp x29, x30, [sp, #-16]! mov x29, sp mov x11, x0 mov w10, w1 mov w8, #0 mov w12, w8 mov w9, w8 b .L.calSum.1 .L.calSum.1: adrp x13, n ldr w8, [x13, #:lo12:n] cmp w12, w8 b.lt .L.calSum.2 b .L.calSum.3 .L.calSum.2: sxtw x8, w12 lsl x8, x8, #2 add x8, x11, x8 ldr w8, [x8] add w9, w9, w8 sdiv w14, w12, w10 msub w8, w14, w10, w12 mov w15, #1 sub w15, w10, w15 cmp w8, w15 b.ne .L.calSum.4 b .L.calSum.5 .L.calSum.3: mov w8, #0 mov w0, w8 ldp x29, x30, [sp], #16 ret .L.calSum.4: sxtw x8, w12 lsl x8, x8, #2 add x15, x11, x8 mov w8, #0 str w8, [x15] mov w8, w9 b .L.calSum.6 .L.calSum.5: sxtw x8, w12 lsl x8, x8, #2 add x8, x11, x8 str w9, [x8] mov w8, #0 b .L.calSum.6 .L.calSum.6: mov w9, #1 add w9, w12, w9 mov w12, w9 mov w9, w8 b .L.calSum.1 .text .globl avgPooling .p2align 2 avgPooling: .L.avgPooling.0: stp x29, x30, [sp, #-16]! mov x29, sp sub sp, sp, #32 str x19, [sp, #0] mov x10, x0 mov w11, w1 mov w8, #0 mov w9, w8 mov w15, w8 mov w12, w8 b .L.avgPooling.1 .L.avgPooling.1: adrp x13, n ldr w8, [x13, #:lo12:n] cmp w15, w8 b.lt .L.avgPooling.2 b .L.avgPooling.3 .L.avgPooling.2: mov w8, #1 sub w8, w11, w8 cmp w15, w8 b.lt .L.avgPooling.4 b .L.avgPooling.5 .L.avgPooling.3: adrp x13, n ldr w8, [x13, #:lo12:n] sub w9, w8, w11 mov w8, #1 add w8, w9, w8 mov w11, w8 b .L.avgPooling.10 .L.avgPooling.4: sxtw x8, w15 lsl x8, x8, #2 add x8, x10, x8 ldr w8, [x8] add w8, w12, w8 mov w12, w8 b .L.avgPooling.6 .L.avgPooling.5: mov w8, #1 sub w8, w11, w8 cmp w15, w8 b.eq .L.avgPooling.7 b .L.avgPooling.8 .L.avgPooling.6: mov w8, #1 add w8, w15, w8 mov w15, w8 b .L.avgPooling.1 .L.avgPooling.7: ldr w9, [x10] sdiv w8, w12, w11 str w8, [x10] mov w8, w9 b .L.avgPooling.9 .L.avgPooling.8: sxtw x8, w15 lsl x8, x8, #2 add x8, x10, x8 ldr w8, [x8] add w8, w12, w8 sub w19, w8, w9 sub w9, w15, w11 mov w8, #1 add w12, w9, w8 sxtw x8, w12 lsl x8, x8, #2 add x8, x10, x8 ldr w8, [x8] sdiv w9, w19, w11 sxtw x12, w12 lsl x12, x12, #2 add x12, x10, x12 str w9, [x12] mov w12, w19 b .L.avgPooling.9 .L.avgPooling.9: mov w9, w8 b .L.avgPooling.6 .L.avgPooling.10: adrp x13, n ldr w8, [x13, #:lo12:n] cmp w11, w8 b.lt .L.avgPooling.11 b .L.avgPooling.12 .L.avgPooling.11: sxtw x8, w11 lsl x8, x8, #2 add x8, x10, x8 mov w9, #0 str w9, [x8] mov w8, #1 add w8, w11, w8 mov w11, w8 b .L.avgPooling.10 .L.avgPooling.12: mov w8, #0 mov w0, w8 ldr x19, [sp, #0] add sp, sp, #32 ldp x29, x30, [sp], #16 ret .text .globl main .p2align 2 main: .L.main.0: stp x29, x30, [sp, #-16]! mov x29, sp sub sp, sp, #288 str x19, [sp, #0] mov w8, #32 adrp x13, n str w8, [x13, #:lo12:n] mov x10, x29 sub x10, x10, #128 mov w8, #7 str w8, [x10] mov x8, #4 add x9, x10, x8 mov w8, #23 str w8, [x9] mov x8, #8 add x8, x10, x8 mov w9, #89 str w9, [x8] mov x8, #12 add x8, x10, x8 mov w9, #26 str w9, [x8] mov x8, #16 add x8, x10, x8 mov w9, #282 str w9, [x8] mov x8, #20 add x8, x10, x8 mov w9, #254 str w9, [x8] mov x8, #24 add x9, x10, x8 mov w8, #27 str w8, [x9] mov x8, #28 add x8, x10, x8 mov w9, #5 str w9, [x8] mov x8, #32 add x8, x10, x8 mov w9, #83 str w9, [x8] mov x8, #36 add x8, x10, x8 mov w9, #273 str w9, [x8] mov x8, #40 add x8, x10, x8 mov w9, #574 str w9, [x8] mov x8, #44 add x8, x10, x8 mov w9, #905 str w9, [x8] mov x8, #48 add x9, x10, x8 mov w8, #354 str w8, [x9] mov x8, #52 add x9, x10, x8 mov w8, #657 str w8, [x9] mov x8, #56 add x9, x10, x8 mov w8, #935 str w8, [x9] mov x8, #60 add x9, x10, x8 mov w8, #264 str w8, [x9] mov x8, #64 add x9, x10, x8 mov w8, #639 str w8, [x9] mov x8, #68 add x9, x10, x8 mov w8, #459 str w8, [x9] mov x8, #72 add x9, x10, x8 mov w8, #29 str w8, [x9] mov x8, #76 add x9, x10, x8 mov w8, #68 str w8, [x9] mov x8, #80 add x9, x10, x8 mov w8, #929 str w8, [x9] mov x8, #84 add x9, x10, x8 mov w8, #756 str w8, [x9] mov x8, #88 add x9, x10, x8 mov w8, #452 str w8, [x9] mov x8, #92 add x9, x10, x8 mov w8, #279 str w8, [x9] mov x8, #96 add x9, x10, x8 mov w8, #58 str w8, [x9] mov x8, #100 add x9, x10, x8 mov w8, #87 str w8, [x9] mov x8, #104 add x9, x10, x8 mov w8, #96 str w8, [x9] mov x8, #108 add x9, x10, x8 mov w8, #36 str w8, [x9] mov x8, #112 add x9, x10, x8 mov w8, #39 str w8, [x9] mov x8, #116 add x9, x10, x8 mov w8, #28 str w8, [x9] mov x8, #120 add x9, x10, x8 mov w8, #1 str w8, [x9] mov x8, #124 add x9, x10, x8 mov w8, #290 str w8, [x9] mov x0, x10 mov x19, x29 sub x19, x19, #256 mov x1, x19 bl arrCopy mov w8, w0 mov x0, x19 bl revert mov w8, w0 mov w8, #0 mov w19, w8 b .L.main.1 .L.main.1: mov w8, #32 cmp w19, w8 b.lt .L.main.2 b .L.main.3 .L.main.2: mov x9, x29 sub x9, x9, #256 sxtw x8, w19 lsl x8, x8, #2 add x8, x9, x8 ldr w8, [x8] mov w0, w8 bl putint mov w8, #1 add w8, w19, w8 mov w19, w8 b .L.main.1 .L.main.3: mov x8, x29 sub x8, x8, #256 mov x0, x8 bl bubblesort mov w8, w0 mov w8, #0 mov w19, w8 b .L.main.4 .L.main.4: mov w8, #32 cmp w19, w8 b.lt .L.main.5 b .L.main.6 .L.main.5: mov x9, x29 sub x9, x9, #256 sxtw x8, w19 lsl x8, x8, #2 add x8, x9, x8 ldr w8, [x8] mov w0, w8 bl putint mov w8, #1 add w8, w19, w8 mov w19, w8 b .L.main.4 .L.main.6: mov x19, x29 sub x19, x19, #256 mov x0, x19 bl getMid mov w8, w0 mov w0, w8 bl putint mov x0, x19 bl getMost mov w8, w0 mov w0, w8 bl putint mov x8, x29 sub x8, x8, #128 mov x0, x8 mov x1, x19 bl arrCopy mov w8, w0 mov x0, x19 bl bubblesort mov w8, w0 mov w8, #0 mov w19, w8 b .L.main.7 .L.main.7: mov w8, #32 cmp w19, w8 b.lt .L.main.8 b .L.main.9 .L.main.8: mov x9, x29 sub x9, x9, #256 sxtw x8, w19 lsl x8, x8, #2 add x8, x9, x8 ldr w8, [x8] mov w0, w8 bl putint mov w8, #1 add w8, w19, w8 mov w19, w8 b .L.main.7 .L.main.9: mov x8, x29 sub x8, x8, #128 mov x0, x8 mov x19, x29 sub x19, x19, #256 mov x1, x19 bl arrCopy mov w8, w0 mov x0, x19 bl insertsort mov w8, w0 mov w8, #0 mov w19, w8 b .L.main.10 .L.main.10: mov w8, #32 cmp w19, w8 b.lt .L.main.11 b .L.main.12 .L.main.11: mov x8, x29 sub x8, x8, #256 sxtw x9, w19 lsl x9, x9, #2 add x8, x8, x9 ldr w8, [x8] mov w0, w8 bl putint mov w8, #1 add w8, w19, w8 mov w19, w8 b .L.main.10 .L.main.12: mov x8, x29 sub x8, x8, #128 mov x0, x8 mov x19, x29 sub x19, x19, #256 mov x1, x19 bl arrCopy mov w8, w0 mov x0, x19 mov w19, #0 mov w1, w19 mov w8, #31 mov w2, w8 bl QuickSort mov w8, w0 b .L.main.13 .L.main.13: mov w8, #32 cmp w19, w8 b.lt .L.main.14 b .L.main.15 .L.main.14: mov x8, x29 sub x8, x8, #256 sxtw x9, w19 lsl x9, x9, #2 add x8, x8, x9 ldr w8, [x8] mov w0, w8 bl putint mov w8, #1 add w8, w19, w8 mov w19, w8 b .L.main.13 .L.main.15: mov x8, x29 sub x8, x8, #128 mov x0, x8 mov x19, x29 sub x19, x19, #256 mov x1, x19 bl arrCopy mov w8, w0 mov x0, x19 mov w8, #4 mov w1, w8 bl calSum mov w8, w0 mov w8, #0 mov w19, w8 b .L.main.16 .L.main.16: mov w8, #32 cmp w19, w8 b.lt .L.main.17 b .L.main.18 .L.main.17: mov x9, x29 sub x9, x9, #256 sxtw x8, w19 lsl x8, x8, #2 add x8, x9, x8 ldr w8, [x8] mov w0, w8 bl putint mov w8, #1 add w8, w19, w8 mov w19, w8 b .L.main.16 .L.main.18: mov x8, x29 sub x8, x8, #128 mov x0, x8 mov x19, x29 sub x19, x19, #256 mov x1, x19 bl arrCopy mov w8, w0 mov x0, x19 mov w8, #3 mov w1, w8 bl avgPooling mov w8, w0 mov w8, #0 mov w19, w8 b .L.main.19 .L.main.19: mov w8, #32 cmp w19, w8 b.lt .L.main.20 b .L.main.21 .L.main.20: mov x8, x29 sub x8, x8, #256 sxtw x9, w19 lsl x9, x9, #2 add x8, x8, x9 ldr w8, [x8] mov w0, w8 bl putint mov w8, #1 add w8, w19, w8 mov w19, w8 b .L.main.19 .L.main.21: mov w8, #0 mov w0, w8 ldr x19, [sp, #0] add sp, sp, #288 ldp x29, x30, [sp], #16 ret