You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1786 lines
30 KiB

.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
.L.bubblesort.1:
adrp x13, n
ldr w8, [x13, #:lo12:n]
mov w9, #1
sub w8, w8, w9
cmp w11, w8
b.ge .L.bubblesort.3
.L.bubblesort.2:
mov w8, #0
mov w12, w8
.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.ge .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.le .L.bubblesort.8
.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]
.L.bubblesort.8:
mov w8, #1
add w8, w12, w8
mov w12, w8
b .L.bubblesort.4
.L.bubblesort.3:
mov w8, #0
mov w0, w8
ldp x29, x30, [sp], #16
ret
.L.bubblesort.6:
mov w8, #1
add w8, w11, w8
mov w11, w8
b .L.bubblesort.1
.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
.L.insertsort.1:
adrp x13, n
ldr w8, [x13, #:lo12:n]
cmp w10, w8
b.ge .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
.L.insertsort.4:
mov w8, #-1
cmp w19, w8
b.gt .L.insertsort.7
.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.3:
mov w8, #0
mov w0, w8
ldr x19, [sp, #0]
add sp, sp, #32
ldp x29, x30, [sp], #16
ret
.L.insertsort.7:
sxtw x8, w19
lsl x8, x8, #2
add x8, x11, x8
ldr w8, [x8]
cmp w12, w8
b.ge .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
.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
.L.getMost.1:
mov w9, #1000
cmp w8, w9
b.ge .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
.L.getMost.4:
adrp x13, n
ldr w8, [x13, #:lo12:n]
cmp w15, w8
b.ge .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
.L.getMost.8:
mov w11, #1
add w15, w15, w11
mov w12, w8
mov w11, w9
b .L.getMost.4
.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
.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
.L.calSum.1:
adrp x13, n
ldr w8, [x13, #:lo12:n]
cmp w12, w8
b.ge .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.eq .L.calSum.5
.L.calSum.4:
sxtw x8, w12
lsl x8, x8, #2
add x15, x11, x8
mov w8, #0
str w8, [x15]
mov w8, w9
.L.calSum.6:
mov w9, #1
add w9, w12, w9
mov w12, w9
mov w9, w8
b .L.calSum.1
.L.calSum.3:
mov w8, #0
mov w0, w8
ldp x29, x30, [sp], #16
ret
.L.calSum.5:
sxtw x8, w12
lsl x8, x8, #2
add x8, x11, x8
str w9, [x8]
mov w8, #0
b .L.calSum.6
.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, #4095
sub sp, sp, #209
str x19, [sp, #0]
str x20, [sp, #8]
str x21, [sp, #16]
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 x8, x10, x8
mov w9, #23
str w9, [x8]
mov x8, #8
add x9, x10, x8
mov w8, #89
str w8, [x9]
mov x8, #12
add x9, x10, x8
mov w8, #26
str w8, [x9]
mov x8, #16
add x9, x10, x8
mov w8, #282
str w8, [x9]
mov x8, #20
add x9, x10, x8
mov w8, #254
str w8, [x9]
mov x8, #24
add x8, x10, x8
mov w9, #27
str w9, [x8]
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 x8, x10, x8
mov w9, #354
str w9, [x8]
mov x8, #52
add x8, x10, x8
mov w9, #657
str w9, [x8]
mov x8, #56
add x8, x10, x8
mov w9, #935
str w9, [x8]
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 x8, x10, x8
mov w9, #929
str w9, [x8]
mov x8, #84
add x8, x10, x8
mov w9, #756
str w9, [x8]
mov x8, #88
add x8, x10, x8
mov w9, #452
str w9, [x8]
mov x8, #92
add x8, x10, x8
mov w9, #279
str w9, [x8]
mov x8, #96
add x8, x10, x8
mov w9, #58
str w9, [x8]
mov x8, #100
add x8, x10, x8
mov w9, #87
str w9, [x8]
mov x8, #104
add x8, x10, x8
mov w9, #96
str w9, [x8]
mov x8, #108
add x8, x10, x8
mov w9, #36
str w9, [x8]
mov x8, #112
add x8, x10, x8
mov w9, #39
str w9, [x8]
mov x8, #116
add x8, x10, x8
mov w9, #28
str w9, [x8]
mov x8, #120
add x8, x10, x8
mov w9, #1
str w9, [x8]
mov x8, #124
add x8, x10, x8
mov w9, #290
str w9, [x8]
mov x0, x10
mov x15, x29
sub x15, x15, #256
mov x1, x15
b .L.main.22
.L.main.1:
mov w8, #32
cmp w19, w8
b.lt .L.main.2
b .L.main.3
.L.main.2:
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.1
.L.main.3:
mov x8, x29
sub x8, x8, #256
mov x0, x8
b .L.main.27
.L.main.4:
mov w8, #32
cmp w19, w8
b.lt .L.main.5
b .L.main.6
.L.main.5:
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.4
.L.main.6:
mov x19, x29
sub x19, x19, #256
mov x0, x19
b .L.main.37
.L.main.7:
mov w8, #32
cmp w19, w8
b.lt .L.main.8
b .L.main.9
.L.main.8:
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.7
.L.main.9:
mov x8, x29
sub x8, x8, #128
mov x0, x8
mov x15, x29
sub x15, x15, #256
mov x1, x15
b .L.main.41
.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 x15, x29
sub x15, x15, #256
mov x1, x15
b .L.main.46
.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 x15, x29
sub x15, x15, #256
mov x1, x15
b .L.main.51
.L.main.16:
mov w8, #32
cmp w19, w8
b.lt .L.main.17
b .L.main.18
.L.main.17:
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.16
.L.main.18:
mov x8, x29
sub x8, x8, #128
mov x0, x8
mov x15, x29
sub x15, x15, #256
mov x1, x15
b .L.main.56
.L.main.19:
mov w8, #32
cmp w19, w8
b.lt .L.main.20
b .L.main.21
.L.main.20:
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.19
.L.main.21:
mov w8, #0
mov w0, w8
ldr x19, [sp, #0]
ldr x20, [sp, #8]
ldr x21, [sp, #16]
add sp, sp, #4095
add sp, sp, #209
ldp x29, x30, [sp], #16
ret
.L.main.22:
mov x12, x0
mov x8, x1
mov w9, #0
b .L.main.23
.L.main.23:
adrp x13, n
ldr w10, [x13, #:lo12:n]
cmp w9, w10
b.lt .L.main.24
b .L.main.25
.L.main.24:
sxtw x10, w9
lsl x10, x10, #2
add x10, x12, x10
ldr w10, [x10]
sxtw x11, w9
lsl x11, x11, #2
add x11, x8, x11
str w10, [x11]
mov w10, #1
add w9, w9, w10
b .L.main.23
.L.main.25:
mov w8, #0
mov w0, w8
b .L.main.26
.L.main.26:
mov w8, w0
mov x0, x15
b .L.main.61
.L.main.27:
mov x12, x0
mov w8, #0
mov w10, w8
b .L.main.28
.L.main.28:
adrp x13, n
ldr w9, [x13, #:lo12:n]
mov w8, #1
sub w8, w9, w8
cmp w10, w8
b.lt .L.main.29
b .L.main.30
.L.main.29:
mov w8, #0
mov w15, w8
mov w11, w10
b .L.main.31
.L.main.30:
mov w8, #0
mov w0, w8
b .L.main.36
.L.main.31:
adrp x13, n
ldr w8, [x13, #:lo12:n]
sub w9, w8, w11
mov w8, #1
sub w8, w9, w8
cmp w15, w8
b.lt .L.main.32
b .L.main.33
.L.main.32:
sxtw x8, w15
lsl x8, x8, #2
add x8, x12, x8
ldr w9, [x8]
mov w8, #1
add w8, w15, w8
sxtw x8, w8
lsl x8, x8, #2
add x8, x12, x8
ldr w8, [x8]
cmp w9, w8
b.gt .L.main.34
b .L.main.35
.L.main.33:
mov w8, #1
add w8, w11, w8
mov w10, w8
b .L.main.28
.L.main.34:
mov w8, #1
add w19, w15, w8
sxtw x8, w19
lsl x8, x8, #2
add x8, x12, x8
ldr w10, [x8]
sxtw x8, w15
lsl x8, x8, #2
add x8, x12, x8
ldr w9, [x8]
sxtw x8, w19
lsl x8, x8, #2
add x8, x12, x8
str w9, [x8]
sxtw x8, w15
lsl x8, x8, #2
add x8, x12, x8
str w10, [x8]
b .L.main.35
.L.main.35:
mov w8, #1
add w8, w15, w8
mov w15, w8
b .L.main.31
.L.main.36:
mov w8, w0
mov w8, #0
mov w19, w8
b .L.main.4
.L.main.37:
mov x11, 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 w10, #2
msub w8, w9, w10, w8
mov w9, #0
cmp w8, w9
b.eq .L.main.38
b .L.main.39
.L.main.38:
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 x9, w8
lsl x9, x9, #2
add x9, x11, x9
ldr w9, [x9]
mov w10, #1
sub w8, w8, w10
sxtw x8, w8
lsl x8, x8, #2
add x8, x11, x8
ldr w8, [x8]
add w8, w9, w8
add w9, w8, #1
cmp w8, #0
csel w8, w9, w8, lt
asr w8, w8, #1
mov w0, w8
b .L.main.40
.L.main.39:
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, x11, x8
ldr w8, [x8]
mov w0, w8
b .L.main.40
.L.main.40:
mov w8, w0
mov w0, w8
bl putint
mov x0, x19
b .L.main.66
.L.main.41:
mov x8, x0
mov x9, x1
mov w10, #0
b .L.main.42
.L.main.42:
adrp x13, n
ldr w11, [x13, #:lo12:n]
cmp w10, w11
b.lt .L.main.43
b .L.main.44
.L.main.43:
sxtw x11, w10
lsl x11, x11, #2
add x11, x8, x11
ldr w11, [x11]
sxtw x12, w10
lsl x12, x12, #2
add x12, x9, x12
str w11, [x12]
mov w11, #1
add w10, w10, w11
b .L.main.42
.L.main.44:
mov w8, #0
mov w0, w8
b .L.main.45
.L.main.45:
mov w8, w0
mov x0, x15
b .L.main.76
.L.main.46:
mov x8, x0
mov x9, x1
mov w10, #0
b .L.main.47
.L.main.47:
adrp x13, n
ldr w11, [x13, #:lo12:n]
cmp w10, w11
b.lt .L.main.48
b .L.main.49
.L.main.48:
sxtw x11, w10
lsl x11, x11, #2
add x11, x8, x11
ldr w11, [x11]
sxtw x12, w10
lsl x12, x12, #2
add x12, x9, x12
str w11, [x12]
mov w11, #1
add w10, w10, w11
b .L.main.47
.L.main.49:
mov w8, #0
mov w0, w8
b .L.main.50
.L.main.50:
mov w8, w0
mov x0, x15
mov w19, #0
mov w1, w19
mov w8, #31
mov w2, w8
bl QuickSort
mov w8, w0
b .L.main.13
.L.main.51:
mov x8, x0
mov x9, x1
mov w10, #0
b .L.main.52
.L.main.52:
adrp x13, n
ldr w11, [x13, #:lo12:n]
cmp w10, w11
b.lt .L.main.53
b .L.main.54
.L.main.53:
sxtw x11, w10
lsl x11, x11, #2
add x11, x8, x11
ldr w11, [x11]
sxtw x12, w10
lsl x12, x12, #2
add x12, x9, x12
str w11, [x12]
mov w11, #1
add w10, w10, w11
b .L.main.52
.L.main.54:
mov w8, #0
mov w0, w8
b .L.main.55
.L.main.55:
mov w8, w0
mov x0, x15
mov w8, #4
mov w1, w8
b .L.main.85
.L.main.56:
mov x8, x0
mov x9, x1
mov w10, #0
b .L.main.57
.L.main.57:
adrp x13, n
ldr w11, [x13, #:lo12:n]
cmp w10, w11
b.lt .L.main.58
b .L.main.59
.L.main.58:
sxtw x11, w10
lsl x11, x11, #2
add x11, x8, x11
ldr w11, [x11]
sxtw x12, w10
lsl x12, x12, #2
add x12, x9, x12
str w11, [x12]
mov w11, #1
add w10, w10, w11
b .L.main.57
.L.main.59:
mov w8, #0
mov w0, w8
b .L.main.60
.L.main.60:
mov w8, w0
mov x0, x15
mov w8, #3
mov w1, w8
b .L.main.93
.L.main.61:
mov x12, x0
mov w8, #0
mov w11, w8
mov w15, w8
b .L.main.62
.L.main.62:
cmp w15, w11
b.lt .L.main.63
b .L.main.64
.L.main.63:
sxtw x8, w15
lsl x8, x8, #2
add x8, x12, x8
ldr w8, [x8]
sxtw x9, w11
lsl x9, x9, #2
add x9, x12, x9
ldr w9, [x9]
sxtw x10, w15
lsl x10, x10, #2
add x10, x12, x10
str w9, [x10]
sxtw x9, w11
lsl x9, x9, #2
add x9, x12, x9
str w8, [x9]
mov w8, #1
add w9, w15, w8
sub w8, w11, w8
mov w11, w8
mov w15, w9
b .L.main.62
.L.main.64:
mov w8, #0
mov w0, w8
b .L.main.65
.L.main.65:
mov w8, w0
mov w8, #0
mov w19, w8
b .L.main.1
.L.main.66:
mov x11, x0
mov w8, #0
b .L.main.67
.L.main.67:
mov w9, #1000
cmp w8, w9
b.lt .L.main.68
b .L.main.69
.L.main.68:
mov x9, x29
sub x9, x9, #4095
sub x9, x9, #161
sxtw x10, w8
lsl x10, x10, #2
add x9, x9, x10
mov w10, #0
str w10, [x9]
mov w9, #1
add w8, w8, w9
b .L.main.67
.L.main.69:
mov w8, #0
mov w10, w8
mov w15, w8
mov w12, w8
b .L.main.70
.L.main.70:
adrp x13, n
ldr w8, [x13, #:lo12:n]
cmp w12, w8
b.lt .L.main.71
b .L.main.72
.L.main.71:
sxtw x8, w12
lsl x8, x8, #2
add x8, x11, x8
ldr w20, [x8]
mov x21, x29
sub x21, x21, #4095
sub x21, x21, #161
sxtw x8, w20
lsl x8, x8, #2
add x8, x21, x8
ldr w8, [x8]
mov w9, #1
add w8, w8, w9
sxtw x9, w20
lsl x9, x9, #2
add x9, x21, x9
str w8, [x9]
sxtw x8, w20
lsl x8, x8, #2
add x8, x21, x8
ldr w8, [x8]
cmp w8, w15
b.gt .L.main.73
mov w8, w10
mov w9, w15
b .L.main.74
.L.main.72:
mov w0, w10
b .L.main.75
.L.main.73:
mov x8, x29
sub x8, x8, #4095
sub x8, x8, #161
sxtw x9, w20
lsl x9, x9, #2
add x8, x8, x9
ldr w9, [x8]
mov w8, w20
b .L.main.74
.L.main.74:
mov w10, #1
add w12, w12, w10
mov w10, w8
mov w15, w9
b .L.main.70
.L.main.75:
mov w8, w0
mov w0, w8
bl putint
mov x8, x29
sub x8, x8, #128
mov x0, x8
mov x1, x19
b .L.main.107
.L.main.76:
mov x11, x0
mov w8, #1
b .L.main.77
.L.main.77:
adrp x13, n
ldr w9, [x13, #:lo12:n]
cmp w8, w9
b.lt .L.main.78
b .L.main.79
.L.main.78:
sxtw x9, w8
lsl x9, x9, #2
add x9, x11, x9
ldr w9, [x9]
mov w10, #1
sub w10, w8, w10
mov w12, w10
mov w15, w9
mov w19, w8
b .L.main.80
.L.main.79:
mov w8, #0
mov w0, w8
b .L.main.84
.L.main.80:
mov w8, #-1
cmp w12, w8
b.gt .L.main.83
b .L.main.82
.L.main.81:
mov w8, #1
add w9, w12, w8
sxtw x10, w12
lsl x10, x10, #2
add x10, x11, x10
ldr w10, [x10]
sxtw x9, w9
lsl x9, x9, #2
add x9, x11, x9
str w10, [x9]
sub w8, w12, w8
mov w12, w8
b .L.main.80
.L.main.82:
mov w8, #1
add w9, w12, w8
sxtw x9, w9
lsl x9, x9, #2
add x9, x11, x9
str w15, [x9]
add w8, w19, w8
b .L.main.77
.L.main.83:
sxtw x8, w12
lsl x8, x8, #2
add x8, x11, x8
ldr w8, [x8]
cmp w15, w8
b.lt .L.main.81
b .L.main.82
.L.main.84:
mov w8, w0
mov w8, #0
mov w19, w8
b .L.main.10
.L.main.85:
mov x12, x0
mov w15, w1
mov w8, #0
mov w11, w8
b .L.main.86
.L.main.86:
adrp x13, n
ldr w9, [x13, #:lo12:n]
cmp w11, w9
b.lt .L.main.87
b .L.main.88
.L.main.87:
sxtw x9, w11
lsl x9, x9, #2
add x9, x12, x9
ldr w9, [x9]
add w8, w8, w9
sdiv w14, w11, w15
msub w9, w14, w15, w11
mov w10, #1
sub w10, w15, w10
cmp w9, w10
b.ne .L.main.89
b .L.main.90
.L.main.88:
mov w8, #0
mov w0, w8
b .L.main.92
.L.main.89:
sxtw x9, w11
lsl x9, x9, #2
add x9, x12, x9
mov w10, #0
str w10, [x9]
b .L.main.91
.L.main.90:
sxtw x9, w11
lsl x9, x9, #2
add x9, x12, x9
str w8, [x9]
mov w8, #0
b .L.main.91
.L.main.91:
mov w9, #1
add w9, w11, w9
mov w11, w9
b .L.main.86
.L.main.92:
mov w8, w0
mov w8, #0
mov w19, w8
b .L.main.16
.L.main.93:
mov x11, x0
mov w20, w1
mov w8, #0
mov w9, w8
mov w19, w8
mov w10, w8
b .L.main.94
.L.main.94:
adrp x13, n
ldr w8, [x13, #:lo12:n]
cmp w19, w8
b.lt .L.main.95
b .L.main.96
.L.main.95:
mov w8, #1
sub w8, w20, w8
cmp w19, w8
b.lt .L.main.97
b .L.main.98
.L.main.96:
adrp x13, n
ldr w8, [x13, #:lo12:n]
sub w9, w8, w20
mov w8, #1
add w8, w9, w8
mov w10, w8
b .L.main.103
.L.main.97:
sxtw x8, w19
lsl x8, x8, #2
add x8, x11, x8
ldr w8, [x8]
add w8, w10, w8
mov w10, w8
b .L.main.99
.L.main.98:
mov w8, #1
sub w8, w20, w8
cmp w19, w8
b.eq .L.main.100
b .L.main.101
.L.main.99:
mov w8, #1
add w8, w19, w8
mov w19, w8
b .L.main.94
.L.main.100:
ldr w9, [x11]
sdiv w8, w10, w20
str w8, [x11]
mov w8, w9
b .L.main.102
.L.main.101:
sxtw x8, w19
lsl x8, x8, #2
add x8, x11, x8
ldr w8, [x8]
add w8, w10, w8
sub w15, w8, w9
sub w9, w19, w20
mov w8, #1
add w12, w9, w8
sxtw x8, w12
lsl x8, x8, #2
add x8, x11, x8
ldr w10, [x8]
sdiv w9, w15, w20
sxtw x8, w12
lsl x8, x8, #2
add x8, x11, x8
str w9, [x8]
mov w8, w10
mov w10, w15
b .L.main.102
.L.main.102:
mov w9, w8
b .L.main.99
.L.main.103:
adrp x13, n
ldr w8, [x13, #:lo12:n]
cmp w10, w8
b.lt .L.main.104
b .L.main.105
.L.main.104:
sxtw x8, w10
lsl x8, x8, #2
add x9, x11, x8
mov w8, #0
str w8, [x9]
mov w8, #1
add w8, w10, w8
mov w10, w8
b .L.main.103
.L.main.105:
mov w8, #0
mov w0, w8
b .L.main.106
.L.main.106:
mov w8, w0
mov w8, #0
mov w19, w8
b .L.main.19
.L.main.107:
mov x11, x0
mov x10, x1
mov w8, #0
mov w9, w8
b .L.main.108
.L.main.108:
adrp x13, n
ldr w8, [x13, #:lo12:n]
cmp w9, w8
b.lt .L.main.109
b .L.main.110
.L.main.109:
sxtw x8, w9
lsl x8, x8, #2
add x8, x11, x8
ldr w8, [x8]
sxtw x12, w9
lsl x12, x12, #2
add x12, x10, x12
str w8, [x12]
mov w8, #1
add w8, w9, w8
mov w9, w8
b .L.main.108
.L.main.110:
mov w8, #0
mov w0, w8
b .L.main.111
.L.main.111:
mov w8, w0
mov x0, x19
b .L.main.112
.L.main.112:
mov x10, x0
mov w8, #0
mov w9, w8
b .L.main.113
.L.main.113:
adrp x13, n
ldr w11, [x13, #:lo12:n]
mov w8, #1
sub w8, w11, w8
cmp w9, w8
b.lt .L.main.114
b .L.main.115
.L.main.114:
mov w8, #0
mov w11, w8
mov w12, w9
b .L.main.116
.L.main.115:
mov w8, #0
mov w0, w8
b .L.main.121
.L.main.116:
adrp x13, n
ldr w8, [x13, #:lo12:n]
sub w9, w8, w12
mov w8, #1
sub w8, w9, w8
cmp w11, w8
b.lt .L.main.117
b .L.main.118
.L.main.117:
sxtw x8, w11
lsl x8, x8, #2
add x8, x10, x8
ldr w9, [x8]
mov w8, #1
add w8, w11, w8
sxtw x8, w8
lsl x8, x8, #2
add x8, x10, x8
ldr w8, [x8]
cmp w9, w8
b.gt .L.main.119
b .L.main.120
.L.main.118:
mov w8, #1
add w8, w12, w8
mov w9, w8
b .L.main.113
.L.main.119:
mov w8, #1
add w8, w11, w8
sxtw x9, w8
lsl x9, x9, #2
add x9, x10, x9
ldr w9, [x9]
sxtw x15, w11
lsl x15, x15, #2
add x15, x10, x15
ldr w15, [x15]
sxtw x8, w8
lsl x8, x8, #2
add x8, x10, x8
str w15, [x8]
sxtw x8, w11
lsl x8, x8, #2
add x8, x10, x8
str w9, [x8]
b .L.main.120
.L.main.120:
mov w8, #1
add w8, w11, w8
mov w11, w8
b .L.main.116
.L.main.121:
mov w8, w0
mov w8, #0
mov w19, w8
b .L.main.7