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.
nudt-compiler-cpp/03_sort1.s

1424 lines
27 KiB

.data
.globl base
.p2align 2
base:
.word 16
.globl a
.p2align 2
a:
.zero 120000040
.globl ans
.p2align 2
ans:
.word 0
.text
.globl getMaxNum
.p2align 2
getMaxNum:
.L.getMaxNum.0:
stp x29, x30, [sp, #-16]!
mov x29, sp
sub sp, sp, #64
stur w0, [x29, #-4]
stur x1, [x29, #-16]
ldur w8, [x29, #-4]
stur w8, [x29, #-28]
mov w8, #0
stur w8, [x29, #-20]
mov w8, #0
stur w8, [x29, #-24]
b .L.getMaxNum.1
.L.getMaxNum.1:
ldur w8, [x29, #-24]
stur w8, [x29, #-32]
ldur w8, [x29, #-28]
stur w8, [x29, #-36]
ldur w8, [x29, #-32]
ldur w9, [x29, #-36]
cmp w8, w9
b.lt .L.getMaxNum.2
b .L.getMaxNum.3
.L.getMaxNum.2:
ldur w8, [x29, #-24]
stur w8, [x29, #-40]
ldur x15, [x29, #-16]
ldur w14, [x29, #-40]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
ldr w8, [x15]
stur w8, [x29, #-44]
ldur w8, [x29, #-20]
stur w8, [x29, #-48]
ldur w8, [x29, #-44]
ldur w9, [x29, #-48]
cmp w8, w9
b.gt .L.getMaxNum.4
b .L.getMaxNum.5
.L.getMaxNum.3:
ldur w8, [x29, #-20]
stur w8, [x29, #-52]
ldur w0, [x29, #-52]
add sp, sp, #64
ldp x29, x30, [sp], #16
ret
.L.getMaxNum.4:
ldur w8, [x29, #-24]
stur w8, [x29, #-56]
ldur x15, [x29, #-16]
ldur w14, [x29, #-56]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
ldr w8, [x15]
stur w8, [x29, #-60]
ldur w8, [x29, #-60]
stur w8, [x29, #-20]
b .L.getMaxNum.5
.L.getMaxNum.5:
ldur w8, [x29, #-24]
stur w8, [x29, #-64]
ldur w8, [x29, #-64]
mov w9, #1
add w8, w8, w9
stur w8, [x29, #-24]
b .L.getMaxNum.1
.text
.globl getNumPos
.p2align 2
getNumPos:
.L.getNumPos.0:
stp x29, x30, [sp, #-16]!
mov x29, sp
sub sp, sp, #48
stur w0, [x29, #-4]
stur w1, [x29, #-8]
ldur w8, [x29, #-4]
stur w8, [x29, #-20]
ldur w8, [x29, #-8]
stur w8, [x29, #-24]
mov w8, #1
stur w8, [x29, #-12]
mov w8, #0
stur w8, [x29, #-16]
b .L.getNumPos.1
.L.getNumPos.1:
ldur w8, [x29, #-16]
stur w8, [x29, #-28]
ldur w8, [x29, #-24]
stur w8, [x29, #-32]
ldur w8, [x29, #-28]
ldur w9, [x29, #-32]
cmp w8, w9
b.lt .L.getNumPos.2
b .L.getNumPos.3
.L.getNumPos.2:
ldur w8, [x29, #-20]
stur w8, [x29, #-36]
ldur w8, [x29, #-36]
mov w9, #16
sdiv w8, w8, w9
stur w8, [x29, #-20]
ldur w8, [x29, #-16]
stur w8, [x29, #-40]
ldur w8, [x29, #-40]
mov w9, #1
add w8, w8, w9
stur w8, [x29, #-16]
b .L.getNumPos.1
.L.getNumPos.3:
ldur w8, [x29, #-20]
stur w8, [x29, #-44]
ldur w0, [x29, #-44]
mov w8, #16
sdiv w10, w0, w8
msub w0, w10, w8, w0
add sp, sp, #48
ldp x29, x30, [sp], #16
ret
.text
.globl radixSort
.p2align 2
radixSort:
.L.radixSort.0:
stp x29, x30, [sp, #-16]!
mov x29, sp
sub sp, sp, #592
stur w0, [x29, #-4]
stur x1, [x29, #-16]
stur w2, [x29, #-20]
stur w3, [x29, #-24]
ldur w8, [x29, #-4]
stur w8, [x29, #-236]
ldur w8, [x29, #-20]
stur w8, [x29, #-240]
ldur w8, [x29, #-24]
stur w8, [x29, #-244]
mov w8, #0
mov x15, x29
sub x15, x15, #88
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #88
mov x14, #4
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #88
mov x14, #8
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #88
mov x14, #12
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #88
mov x14, #16
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #88
mov x14, #20
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #88
mov x14, #24
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #88
mov x14, #28
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #88
mov x14, #32
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #88
mov x14, #36
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #88
mov x14, #40
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #88
mov x14, #44
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #88
mov x14, #48
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #88
mov x14, #52
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #88
mov x14, #56
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #88
mov x14, #60
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #152
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #152
mov x14, #4
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #152
mov x14, #8
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #152
mov x14, #12
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #152
mov x14, #16
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #152
mov x14, #20
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #152
mov x14, #24
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #152
mov x14, #28
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #152
mov x14, #32
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #152
mov x14, #36
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #152
mov x14, #40
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #152
mov x14, #44
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #152
mov x14, #48
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #152
mov x14, #52
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #152
mov x14, #56
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #152
mov x14, #60
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #216
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #216
mov x14, #4
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #216
mov x14, #8
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #216
mov x14, #12
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #216
mov x14, #16
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #216
mov x14, #20
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #216
mov x14, #24
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #216
mov x14, #28
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #216
mov x14, #32
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #216
mov x14, #36
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #216
mov x14, #40
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #216
mov x14, #44
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #216
mov x14, #48
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #216
mov x14, #52
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #216
mov x14, #56
add x15, x15, x14
str w8, [x15]
mov w8, #0
mov x15, x29
sub x15, x15, #216
mov x14, #60
add x15, x15, x14
str w8, [x15]
ldur w8, [x29, #-236]
stur w8, [x29, #-248]
ldur w8, [x29, #-248]
mov w9, #-1
cmp w8, w9
b.eq .L.radixSort.1
b .L.radixSort.3
.L.radixSort.1:
add sp, sp, #592
ldp x29, x30, [sp], #16
ret
.L.radixSort.2:
ldur w8, [x29, #-240]
stur w8, [x29, #-252]
ldur w8, [x29, #-252]
stur w8, [x29, #-220]
b .L.radixSort.4
.L.radixSort.3:
ldur w8, [x29, #-240]
stur w8, [x29, #-256]
ldur w8, [x29, #-244]
mov x13, x29
sub x13, x13, #260
str w8, [x13]
ldur w8, [x29, #-256]
mov w10, #1
add w8, w8, w10
mov x13, x29
sub x13, x13, #260
ldr w9, [x13]
cmp w8, w9
b.ge .L.radixSort.1
b .L.radixSort.2
.L.radixSort.4:
ldur w8, [x29, #-220]
mov x13, x29
sub x13, x13, #264
str w8, [x13]
ldur w8, [x29, #-244]
mov x13, x29
sub x13, x13, #268
str w8, [x13]
mov x13, x29
sub x13, x13, #264
ldr w8, [x13]
mov x13, x29
sub x13, x13, #268
ldr w9, [x13]
cmp w8, w9
b.lt .L.radixSort.5
b .L.radixSort.6
.L.radixSort.5:
ldur w8, [x29, #-220]
mov x13, x29
sub x13, x13, #272
str w8, [x13]
ldur x15, [x29, #-16]
mov x13, x29
sub x13, x13, #272
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
ldr w8, [x15]
mov x13, x29
sub x13, x13, #276
str w8, [x13]
ldur w8, [x29, #-236]
mov x13, x29
sub x13, x13, #280
str w8, [x13]
mov x13, x29
sub x13, x13, #276
ldr w0, [x13]
mov x13, x29
sub x13, x13, #280
ldr w1, [x13]
bl getNumPos
mov x13, x29
sub x13, x13, #284
str w0, [x13]
ldur w8, [x29, #-220]
mov x13, x29
sub x13, x13, #288
str w8, [x13]
ldur x15, [x29, #-16]
mov x13, x29
sub x13, x13, #288
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
ldr w8, [x15]
mov x13, x29
sub x13, x13, #292
str w8, [x13]
ldur w8, [x29, #-236]
mov x13, x29
sub x13, x13, #296
str w8, [x13]
mov x13, x29
sub x13, x13, #292
ldr w0, [x13]
mov x13, x29
sub x13, x13, #296
ldr w1, [x13]
bl getNumPos
mov x13, x29
sub x13, x13, #300
str w0, [x13]
mov x15, x29
sub x15, x15, #216
mov x13, x29
sub x13, x13, #300
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
ldr w8, [x15]
mov x13, x29
sub x13, x13, #304
str w8, [x13]
mov x13, x29
sub x13, x13, #304
ldr w8, [x13]
mov w9, #1
add w8, w8, w9
mov x15, x29
sub x15, x15, #216
mov x13, x29
sub x13, x13, #284
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
str w8, [x15]
ldur w8, [x29, #-220]
mov x13, x29
sub x13, x13, #308
str w8, [x13]
mov x13, x29
sub x13, x13, #308
ldr w8, [x13]
mov w9, #1
add w8, w8, w9
stur w8, [x29, #-220]
b .L.radixSort.4
.L.radixSort.6:
ldur w8, [x29, #-240]
mov x13, x29
sub x13, x13, #312
str w8, [x13]
mov x13, x29
sub x13, x13, #312
ldr w8, [x13]
mov x15, x29
sub x15, x15, #88
str w8, [x15]
ldur w8, [x29, #-240]
mov x13, x29
sub x13, x13, #316
str w8, [x13]
mov x15, x29
sub x15, x15, #216
ldr w8, [x15]
mov x13, x29
sub x13, x13, #320
str w8, [x13]
mov x13, x29
sub x13, x13, #316
ldr w8, [x13]
mov x13, x29
sub x13, x13, #320
ldr w9, [x13]
add w8, w8, w9
mov x15, x29
sub x15, x15, #152
str w8, [x15]
mov w8, #1
stur w8, [x29, #-220]
b .L.radixSort.7
.L.radixSort.7:
ldur w8, [x29, #-220]
mov x13, x29
sub x13, x13, #324
str w8, [x13]
mov x13, x29
sub x13, x13, #324
ldr w8, [x13]
mov w9, #16
cmp w8, w9
b.lt .L.radixSort.8
b .L.radixSort.9
.L.radixSort.8:
ldur w8, [x29, #-220]
mov x13, x29
sub x13, x13, #328
str w8, [x13]
ldur w8, [x29, #-220]
mov x13, x29
sub x13, x13, #332
str w8, [x13]
mov x15, x29
sub x15, x15, #152
mov x13, x29
sub x13, x13, #332
ldr w14, [x13]
mov w8, #1
sub w14, w14, w8
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
ldr w8, [x15]
mov x13, x29
sub x13, x13, #336
str w8, [x13]
mov x13, x29
sub x13, x13, #336
ldr w8, [x13]
mov x15, x29
sub x15, x15, #88
mov x13, x29
sub x13, x13, #328
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
str w8, [x15]
ldur w8, [x29, #-220]
mov x13, x29
sub x13, x13, #340
str w8, [x13]
ldur w8, [x29, #-220]
mov x13, x29
sub x13, x13, #344
str w8, [x13]
mov x15, x29
sub x15, x15, #88
mov x13, x29
sub x13, x13, #344
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
ldr w8, [x15]
mov x13, x29
sub x13, x13, #348
str w8, [x13]
ldur w8, [x29, #-220]
mov x13, x29
sub x13, x13, #352
str w8, [x13]
mov x15, x29
sub x15, x15, #216
mov x13, x29
sub x13, x13, #352
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
ldr w8, [x15]
mov x13, x29
sub x13, x13, #356
str w8, [x13]
mov x13, x29
sub x13, x13, #348
ldr w8, [x13]
mov x13, x29
sub x13, x13, #356
ldr w9, [x13]
add w8, w8, w9
mov x15, x29
sub x15, x15, #152
mov x13, x29
sub x13, x13, #340
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
str w8, [x15]
ldur w8, [x29, #-220]
mov x13, x29
sub x13, x13, #360
str w8, [x13]
mov x13, x29
sub x13, x13, #360
ldr w8, [x13]
mov w9, #1
add w8, w8, w9
stur w8, [x29, #-220]
b .L.radixSort.7
.L.radixSort.9:
mov w8, #0
stur w8, [x29, #-220]
b .L.radixSort.10
.L.radixSort.10:
ldur w8, [x29, #-220]
mov x13, x29
sub x13, x13, #364
str w8, [x13]
mov x13, x29
sub x13, x13, #364
ldr w8, [x13]
mov w9, #16
cmp w8, w9
b.lt .L.radixSort.11
b .L.radixSort.12
.L.radixSort.11:
b .L.radixSort.13
.L.radixSort.12:
ldur w8, [x29, #-240]
mov x13, x29
sub x13, x13, #368
str w8, [x13]
mov x13, x29
sub x13, x13, #368
ldr w8, [x13]
stur w8, [x29, #-232]
ldur w8, [x29, #-240]
mov x13, x29
sub x13, x13, #372
str w8, [x13]
mov x13, x29
sub x13, x13, #372
ldr w8, [x13]
mov x15, x29
sub x15, x15, #88
str w8, [x15]
ldur w8, [x29, #-240]
mov x13, x29
sub x13, x13, #376
str w8, [x13]
mov x15, x29
sub x15, x15, #216
ldr w8, [x15]
mov x13, x29
sub x13, x13, #380
str w8, [x13]
mov x13, x29
sub x13, x13, #376
ldr w8, [x13]
mov x13, x29
sub x13, x13, #380
ldr w9, [x13]
add w8, w8, w9
mov x15, x29
sub x15, x15, #152
str w8, [x15]
mov w8, #0
stur w8, [x29, #-232]
b .L.radixSort.19
.L.radixSort.13:
ldur w8, [x29, #-220]
mov x13, x29
sub x13, x13, #384
str w8, [x13]
mov x15, x29
sub x15, x15, #88
mov x13, x29
sub x13, x13, #384
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
ldr w8, [x15]
mov x13, x29
sub x13, x13, #388
str w8, [x13]
ldur w8, [x29, #-220]
mov x13, x29
sub x13, x13, #392
str w8, [x13]
mov x15, x29
sub x15, x15, #152
mov x13, x29
sub x13, x13, #392
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
ldr w8, [x15]
mov x13, x29
sub x13, x13, #396
str w8, [x13]
mov x13, x29
sub x13, x13, #388
ldr w8, [x13]
mov x13, x29
sub x13, x13, #396
ldr w9, [x13]
cmp w8, w9
b.lt .L.radixSort.14
b .L.radixSort.15
.L.radixSort.14:
ldur w8, [x29, #-220]
mov x13, x29
sub x13, x13, #400
str w8, [x13]
mov x15, x29
sub x15, x15, #88
mov x13, x29
sub x13, x13, #400
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
ldr w8, [x15]
mov x13, x29
sub x13, x13, #404
str w8, [x13]
ldur x15, [x29, #-16]
mov x13, x29
sub x13, x13, #404
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
ldr w8, [x15]
mov x13, x29
sub x13, x13, #408
str w8, [x13]
mov x13, x29
sub x13, x13, #408
ldr w8, [x13]
stur w8, [x29, #-224]
b .L.radixSort.16
.L.radixSort.15:
ldur w8, [x29, #-220]
mov x13, x29
sub x13, x13, #412
str w8, [x13]
mov x13, x29
sub x13, x13, #412
ldr w8, [x13]
mov w9, #1
add w8, w8, w9
stur w8, [x29, #-220]
b .L.radixSort.10
.L.radixSort.16:
ldur w8, [x29, #-224]
mov x13, x29
sub x13, x13, #416
str w8, [x13]
ldur w8, [x29, #-236]
mov x13, x29
sub x13, x13, #420
str w8, [x13]
mov x13, x29
sub x13, x13, #416
ldr w0, [x13]
mov x13, x29
sub x13, x13, #420
ldr w1, [x13]
bl getNumPos
mov x13, x29
sub x13, x13, #424
str w0, [x13]
ldur w8, [x29, #-220]
mov x13, x29
sub x13, x13, #428
str w8, [x13]
mov x13, x29
sub x13, x13, #424
ldr w8, [x13]
mov x13, x29
sub x13, x13, #428
ldr w9, [x13]
cmp w8, w9
b.ne .L.radixSort.17
b .L.radixSort.18
.L.radixSort.17:
ldur w8, [x29, #-224]
mov x13, x29
sub x13, x13, #432
str w8, [x13]
mov x13, x29
sub x13, x13, #432
ldr w8, [x13]
stur w8, [x29, #-228]
ldur w8, [x29, #-228]
mov x13, x29
sub x13, x13, #436
str w8, [x13]
ldur w8, [x29, #-236]
mov x13, x29
sub x13, x13, #440
str w8, [x13]
mov x13, x29
sub x13, x13, #436
ldr w0, [x13]
mov x13, x29
sub x13, x13, #440
ldr w1, [x13]
bl getNumPos
mov x13, x29
sub x13, x13, #444
str w0, [x13]
mov x15, x29
sub x15, x15, #88
mov x13, x29
sub x13, x13, #444
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
ldr w8, [x15]
mov x13, x29
sub x13, x13, #448
str w8, [x13]
ldur x15, [x29, #-16]
mov x13, x29
sub x13, x13, #448
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
ldr w8, [x15]
mov x13, x29
sub x13, x13, #452
str w8, [x13]
mov x13, x29
sub x13, x13, #452
ldr w8, [x13]
stur w8, [x29, #-224]
ldur w8, [x29, #-228]
mov x13, x29
sub x13, x13, #456
str w8, [x13]
ldur w8, [x29, #-236]
mov x13, x29
sub x13, x13, #460
str w8, [x13]
mov x13, x29
sub x13, x13, #456
ldr w0, [x13]
mov x13, x29
sub x13, x13, #460
ldr w1, [x13]
bl getNumPos
mov x13, x29
sub x13, x13, #464
str w0, [x13]
mov x15, x29
sub x15, x15, #88
mov x13, x29
sub x13, x13, #464
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
ldr w8, [x15]
mov x13, x29
sub x13, x13, #468
str w8, [x13]
ldur w8, [x29, #-228]
mov x13, x29
sub x13, x13, #472
str w8, [x13]
mov x13, x29
sub x13, x13, #472
ldr w8, [x13]
ldur x15, [x29, #-16]
mov x13, x29
sub x13, x13, #468
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
str w8, [x15]
ldur w8, [x29, #-228]
mov x13, x29
sub x13, x13, #476
str w8, [x13]
ldur w8, [x29, #-236]
mov x13, x29
sub x13, x13, #480
str w8, [x13]
mov x13, x29
sub x13, x13, #476
ldr w0, [x13]
mov x13, x29
sub x13, x13, #480
ldr w1, [x13]
bl getNumPos
mov x13, x29
sub x13, x13, #484
str w0, [x13]
ldur w8, [x29, #-228]
mov x13, x29
sub x13, x13, #488
str w8, [x13]
ldur w8, [x29, #-236]
mov x13, x29
sub x13, x13, #492
str w8, [x13]
mov x13, x29
sub x13, x13, #488
ldr w0, [x13]
mov x13, x29
sub x13, x13, #492
ldr w1, [x13]
bl getNumPos
mov x13, x29
sub x13, x13, #496
str w0, [x13]
mov x15, x29
sub x15, x15, #88
mov x13, x29
sub x13, x13, #496
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
ldr w8, [x15]
mov x13, x29
sub x13, x13, #500
str w8, [x13]
mov x13, x29
sub x13, x13, #500
ldr w8, [x13]
mov w9, #1
add w8, w8, w9
mov x15, x29
sub x15, x15, #88
mov x13, x29
sub x13, x13, #484
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
str w8, [x15]
b .L.radixSort.16
.L.radixSort.18:
ldur w8, [x29, #-220]
mov x13, x29
sub x13, x13, #504
str w8, [x13]
mov x15, x29
sub x15, x15, #88
mov x13, x29
sub x13, x13, #504
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
ldr w8, [x15]
mov x13, x29
sub x13, x13, #508
str w8, [x13]
ldur w8, [x29, #-224]
mov x13, x29
sub x13, x13, #512
str w8, [x13]
mov x13, x29
sub x13, x13, #512
ldr w8, [x13]
ldur x15, [x29, #-16]
mov x13, x29
sub x13, x13, #508
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
str w8, [x15]
ldur w8, [x29, #-220]
mov x13, x29
sub x13, x13, #516
str w8, [x13]
ldur w8, [x29, #-220]
mov x13, x29
sub x13, x13, #520
str w8, [x13]
mov x15, x29
sub x15, x15, #88
mov x13, x29
sub x13, x13, #520
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
ldr w8, [x15]
mov x13, x29
sub x13, x13, #524
str w8, [x13]
mov x13, x29
sub x13, x13, #524
ldr w8, [x13]
mov w9, #1
add w8, w8, w9
mov x15, x29
sub x15, x15, #88
mov x13, x29
sub x13, x13, #516
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
str w8, [x15]
b .L.radixSort.13
.L.radixSort.19:
ldur w8, [x29, #-232]
mov x13, x29
sub x13, x13, #528
str w8, [x13]
mov x13, x29
sub x13, x13, #528
ldr w8, [x13]
mov w9, #16
cmp w8, w9
b.lt .L.radixSort.20
b .L.radixSort.21
.L.radixSort.20:
ldur w8, [x29, #-232]
mov x13, x29
sub x13, x13, #532
str w8, [x13]
mov x13, x29
sub x13, x13, #532
ldr w8, [x13]
mov w9, #0
cmp w8, w9
b.gt .L.radixSort.22
b .L.radixSort.23
.L.radixSort.21:
add sp, sp, #592
ldp x29, x30, [sp], #16
ret
.L.radixSort.22:
ldur w8, [x29, #-232]
mov x13, x29
sub x13, x13, #536
str w8, [x13]
ldur w8, [x29, #-232]
mov x13, x29
sub x13, x13, #540
str w8, [x13]
mov x15, x29
sub x15, x15, #152
mov x13, x29
sub x13, x13, #540
ldr w14, [x13]
mov w8, #1
sub w14, w14, w8
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
ldr w8, [x15]
mov x13, x29
sub x13, x13, #544
str w8, [x13]
mov x13, x29
sub x13, x13, #544
ldr w8, [x13]
mov x15, x29
sub x15, x15, #88
mov x13, x29
sub x13, x13, #536
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
str w8, [x15]
ldur w8, [x29, #-232]
mov x13, x29
sub x13, x13, #548
str w8, [x13]
ldur w8, [x29, #-232]
mov x13, x29
sub x13, x13, #552
str w8, [x13]
mov x15, x29
sub x15, x15, #88
mov x13, x29
sub x13, x13, #552
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
ldr w8, [x15]
mov x13, x29
sub x13, x13, #556
str w8, [x13]
ldur w8, [x29, #-232]
mov x13, x29
sub x13, x13, #560
str w8, [x13]
mov x15, x29
sub x15, x15, #216
mov x13, x29
sub x13, x13, #560
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
ldr w8, [x15]
mov x13, x29
sub x13, x13, #564
str w8, [x13]
mov x13, x29
sub x13, x13, #556
ldr w8, [x13]
mov x13, x29
sub x13, x13, #564
ldr w9, [x13]
add w8, w8, w9
mov x15, x29
sub x15, x15, #152
mov x13, x29
sub x13, x13, #548
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
str w8, [x15]
b .L.radixSort.23
.L.radixSort.23:
ldur w8, [x29, #-236]
mov x13, x29
sub x13, x13, #568
str w8, [x13]
ldur w8, [x29, #-232]
mov x13, x29
sub x13, x13, #572
str w8, [x13]
mov x15, x29
sub x15, x15, #88
mov x13, x29
sub x13, x13, #572
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
ldr w8, [x15]
mov x13, x29
sub x13, x13, #576
str w8, [x13]
ldur w8, [x29, #-232]
mov x13, x29
sub x13, x13, #580
str w8, [x13]
mov x15, x29
sub x15, x15, #152
mov x13, x29
sub x13, x13, #580
ldr w14, [x13]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
ldr w8, [x15]
mov x13, x29
sub x13, x13, #584
str w8, [x13]
mov x13, x29
sub x13, x13, #568
ldr w0, [x13]
mov w8, #1
sub w0, w0, w8
ldur x1, [x29, #-16]
mov x13, x29
sub x13, x13, #576
ldr w2, [x13]
mov x13, x29
sub x13, x13, #584
ldr w3, [x13]
bl radixSort
ldur w8, [x29, #-232]
mov x13, x29
sub x13, x13, #588
str w8, [x13]
mov x13, x29
sub x13, x13, #588
ldr w8, [x13]
mov w9, #1
add w8, w8, w9
stur w8, [x29, #-232]
b .L.radixSort.19
.text
.globl main
.p2align 2
main:
.L.main.0:
stp x29, x30, [sp, #-16]!
mov x29, sp
sub sp, sp, #64
adrp x0, a
add x0, x0, :lo12:a
bl getarray
stur w0, [x29, #-12]
ldur w8, [x29, #-12]
stur w8, [x29, #-4]
bl starttime
ldur w8, [x29, #-4]
stur w8, [x29, #-16]
mov w0, #8
adrp x1, a
add x1, x1, :lo12:a
mov w2, #0
ldur w3, [x29, #-16]
bl radixSort
mov w8, #0
stur w8, [x29, #-8]
b .L.main.1
.L.main.1:
ldur w8, [x29, #-8]
stur w8, [x29, #-20]
ldur w8, [x29, #-4]
stur w8, [x29, #-24]
ldur w8, [x29, #-20]
ldur w9, [x29, #-24]
cmp w8, w9
b.lt .L.main.2
b .L.main.3
.L.main.2:
adrp x13, ans
ldr w8, [x13, #:lo12:ans]
stur w8, [x29, #-28]
ldur w8, [x29, #-8]
stur w8, [x29, #-32]
ldur w8, [x29, #-8]
stur w8, [x29, #-36]
adrp x15, a
add x15, x15, :lo12:a
ldur w14, [x29, #-36]
sxtw x14, w14
lsl x14, x14, #2
add x15, x15, x14
ldr w8, [x15]
stur w8, [x29, #-40]
ldur w8, [x29, #-8]
stur w8, [x29, #-44]
ldur w8, [x29, #-28]
ldur w9, [x29, #-32]
ldur w10, [x29, #-40]
mov w11, #2
ldur w8, [x29, #-44]
add w11, w11, w8
sdiv w10, w10, w11
msub w10, w10, w11, w10
mul w9, w9, w10
add w8, w8, w9
adrp x13, ans
str w8, [x13, #:lo12:ans]
ldur w8, [x29, #-8]
stur w8, [x29, #-48]
ldur w8, [x29, #-48]
mov w9, #1
add w8, w8, w9
stur w8, [x29, #-8]
b .L.main.1
.L.main.3:
adrp x13, ans
ldr w8, [x13, #:lo12:ans]
stur w8, [x29, #-52]
ldur w8, [x29, #-52]
mov w9, #0
cmp w8, w9
b.lt .L.main.4
b .L.main.5
.L.main.4:
adrp x13, ans
ldr w8, [x13, #:lo12:ans]
stur w8, [x29, #-56]
mov w8, #0
ldur w9, [x29, #-56]
sub w8, w8, w9
adrp x13, ans
str w8, [x13, #:lo12:ans]
b .L.main.5
.L.main.5:
bl stoptime
adrp x13, ans
ldr w8, [x13, #:lo12:ans]
stur w8, [x29, #-60]
ldur w0, [x29, #-60]
bl putint
mov w0, #10
bl putch
mov w0, #0
add sp, sp, #64
ldp x29, x30, [sp], #16
ret