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.

702 lines
13 KiB

.data
.globl arr1
.p2align 2
arr1:
.zero 57600
.globl arr2
.p2align 2
arr2:
.zero 107520
.text
.globl loop1
.p2align 2
loop1:
.L.loop1.0:
stp x29, x30, [sp, #-16]!
mov x29, sp
sub sp, sp, #80
str x20, [sp, #0]
str x19, [sp, #8]
mov w9, w0
mov w8, w1
stur w9, [x29, #-32]
stur w8, [x29, #-36]
mov w8, #0
stur w8, [x29, #-4]
stur w8, [x29, #-8]
stur w8, [x29, #-12]
stur w8, [x29, #-16]
stur w8, [x29, #-20]
stur w8, [x29, #-24]
stur w8, [x29, #-28]
stur w8, [x29, #-4]
b .L.loop1.1
.L.loop1.1:
ldur w9, [x29, #-4]
ldur w8, [x29, #-32]
cmp w9, w8
b.lt .L.loop1.4
b .L.loop1.3
.L.loop1.2:
mov w8, #0
stur w8, [x29, #-8]
b .L.loop1.5
.L.loop1.3:
ldr x20, [sp, #0]
ldr x19, [sp, #8]
add sp, sp, #80
ldp x29, x30, [sp], #16
ret
.L.loop1.4:
ldur w8, [x29, #-4]
ldur w9, [x29, #-36]
cmp w8, w9
b.lt .L.loop1.2
b .L.loop1.3
.L.loop1.5:
ldur w8, [x29, #-8]
mov w9, #2
cmp w8, w9
b.lt .L.loop1.6
b .L.loop1.7
.L.loop1.6:
mov w8, #0
stur w8, [x29, #-12]
b .L.loop1.8
.L.loop1.7:
ldur w9, [x29, #-4]
mov w8, #1
add w8, w9, w8
stur w8, [x29, #-4]
b .L.loop1.1
.L.loop1.8:
ldur w8, [x29, #-12]
mov w9, #3
cmp w8, w9
b.lt .L.loop1.9
b .L.loop1.10
.L.loop1.9:
mov w8, #0
stur w8, [x29, #-16]
b .L.loop1.11
.L.loop1.10:
ldur w8, [x29, #-8]
mov w9, #1
add w8, w8, w9
stur w8, [x29, #-8]
b .L.loop1.5
.L.loop1.11:
ldur w9, [x29, #-16]
mov w8, #4
cmp w9, w8
b.lt .L.loop1.12
b .L.loop1.13
.L.loop1.12:
mov w8, #0
stur w8, [x29, #-20]
b .L.loop1.14
.L.loop1.13:
ldur w9, [x29, #-12]
mov w8, #1
add w8, w9, w8
stur w8, [x29, #-12]
b .L.loop1.8
.L.loop1.14:
ldur w9, [x29, #-20]
mov w8, #5
cmp w9, w8
b.lt .L.loop1.15
b .L.loop1.16
.L.loop1.15:
mov w8, #0
stur w8, [x29, #-24]
b .L.loop1.17
.L.loop1.16:
ldur w9, [x29, #-16]
mov w8, #1
add w8, w9, w8
stur w8, [x29, #-16]
b .L.loop1.11
.L.loop1.17:
ldur w9, [x29, #-24]
mov w8, #6
cmp w9, w8
b.lt .L.loop1.18
b .L.loop1.19
.L.loop1.18:
mov w8, #0
stur w8, [x29, #-28]
b .L.loop1.20
.L.loop1.19:
ldur w9, [x29, #-20]
mov w8, #1
add w8, w9, w8
stur w8, [x29, #-20]
b .L.loop1.14
.L.loop1.20:
ldur w9, [x29, #-28]
mov w8, #2
cmp w9, w8
b.lt .L.loop1.21
b .L.loop1.22
.L.loop1.21:
ldur w9, [x29, #-4]
ldur w20, [x29, #-8]
ldur w19, [x29, #-12]
ldur w10, [x29, #-16]
ldur w12, [x29, #-20]
ldur w11, [x29, #-24]
ldur w15, [x29, #-28]
mov w8, #1440
mul w9, w9, w8
mov w8, #720
mul w8, w20, w8
add w9, w9, w8
mov w8, #240
mul w8, w19, w8
add w9, w9, w8
mov w8, #60
mul w8, w10, w8
add w9, w9, w8
mov w8, #12
mul w8, w12, w8
add w9, w9, w8
mov w8, #2
lsl w8, w11, #1
add w8, w9, w8
add w10, w8, w15
ldur w8, [x29, #-4]
ldur w9, [x29, #-8]
add w8, w8, w9
ldur w9, [x29, #-12]
add w8, w8, w9
ldur w9, [x29, #-16]
add w8, w8, w9
ldur w9, [x29, #-20]
add w8, w8, w9
ldur w9, [x29, #-24]
add w8, w8, w9
ldur w9, [x29, #-28]
add w8, w8, w9
ldur w9, [x29, #-32]
add w9, w8, w9
ldur w8, [x29, #-36]
add w11, w9, w8
adrp x9, arr1
add x9, x9, :lo12:arr1
sxtw x8, w10
lsl x8, x8, #2
add x8, x9, x8
str w11, [x8]
ldur w9, [x29, #-28]
mov w8, #1
add w8, w9, w8
stur w8, [x29, #-28]
b .L.loop1.20
.L.loop1.22:
ldur w9, [x29, #-24]
mov w8, #1
add w8, w9, w8
stur w8, [x29, #-24]
b .L.loop1.17
.text
.globl loop2
.p2align 2
loop2:
.L.loop2.0:
stp x29, x30, [sp, #-16]!
mov x29, sp
sub sp, sp, #64
str x19, [sp, #0]
str x20, [sp, #8]
str x22, [sp, #16]
str x21, [sp, #24]
str x23, [sp, #32]
mov w8, #0
b .L.loop2.1
.L.loop2.1:
mov w9, #10
cmp w8, w9
b.lt .L.loop2.2
b .L.loop2.3
.L.loop2.2:
mov w9, #0
b .L.loop2.4
.L.loop2.3:
ldr x19, [sp, #0]
ldr x20, [sp, #8]
ldr x22, [sp, #16]
ldr x21, [sp, #24]
ldr x23, [sp, #32]
add sp, sp, #64
ldp x29, x30, [sp], #16
ret
.L.loop2.4:
mov w10, #2
cmp w9, w10
b.lt .L.loop2.5
b .L.loop2.6
.L.loop2.5:
mov w10, #0
mov w11, w8
b .L.loop2.7
.L.loop2.6:
mov w9, #1
add w8, w8, w9
b .L.loop2.1
.L.loop2.7:
mov w8, #3
cmp w10, w8
b.lt .L.loop2.8
b .L.loop2.9
.L.loop2.8:
mov w8, #0
mov w12, w8
mov w19, w11
b .L.loop2.10
.L.loop2.9:
mov w8, #1
add w8, w9, w8
mov w9, w8
mov w8, w11
b .L.loop2.4
.L.loop2.10:
mov w8, #2
cmp w12, w8
b.lt .L.loop2.11
b .L.loop2.12
.L.loop2.11:
mov w8, #0
mov w15, w8
mov w11, w12
mov w20, w9
b .L.loop2.13
.L.loop2.12:
mov w8, #1
add w8, w10, w8
mov w10, w8
mov w11, w19
b .L.loop2.7
.L.loop2.13:
mov w8, #4
cmp w15, w8
b.lt .L.loop2.14
b .L.loop2.15
.L.loop2.14:
mov w8, #0
mov w9, w8
mov w12, w15
mov w22, w11
mov w21, w10
b .L.loop2.16
.L.loop2.15:
mov w8, #1
add w8, w11, w8
mov w12, w8
mov w9, w20
b .L.loop2.10
.L.loop2.16:
mov w8, #8
cmp w9, w8
b.lt .L.loop2.17
b .L.loop2.18
.L.loop2.17:
mov w8, #0
mov w10, w8
mov w11, w9
mov w15, w22
b .L.loop2.19
.L.loop2.18:
mov w8, #1
add w8, w12, w8
mov w15, w8
mov w11, w22
mov w10, w21
b .L.loop2.13
.L.loop2.19:
mov w8, #7
cmp w10, w8
b.lt .L.loop2.20
b .L.loop2.21
.L.loop2.20:
mov w8, #2688
mul w9, w19, w8
mov w8, #1344
mul w8, w20, w8
add w9, w9, w8
mov w8, #448
mul w8, w21, w8
add w8, w9, w8
mov w9, #224
mul w9, w15, w9
add w8, w8, w9
mov w9, #56
mul w9, w12, w9
add w8, w8, w9
mov w9, #7
mul w9, w11, w9
add w8, w8, w9
add w23, w8, w10
add w8, w19, w20
add w8, w8, w15
add w22, w8, w10
adrp x9, arr2
add x9, x9, :lo12:arr2
sxtw x8, w23
lsl x8, x8, #2
add x8, x9, x8
str w22, [x8]
mov w8, #1
add w8, w10, w8
mov w10, w8
b .L.loop2.19
.L.loop2.21:
mov w8, #1
add w8, w11, w8
mov w9, w8
mov w22, w15
b .L.loop2.16
.text
.globl loop3
.p2align 2
loop3:
.L.loop3.0:
stp x29, x30, [sp, #-16]!
mov x29, sp
sub sp, sp, #112
str x19, [sp, #0]
str x20, [sp, #8]
str x21, [sp, #16]
mov w8, w0
mov w9, w1
mov w10, w2
mov w11, w3
mov w12, w4
mov w15, w5
mov w19, w6
stur w8, [x29, #-36]
stur w9, [x29, #-40]
stur w10, [x29, #-44]
stur w11, [x29, #-48]
stur w12, [x29, #-52]
stur w15, [x29, #-56]
stur w19, [x29, #-60]
mov w8, #0
stur w8, [x29, #-4]
stur w8, [x29, #-8]
stur w8, [x29, #-12]
stur w8, [x29, #-16]
stur w8, [x29, #-20]
stur w8, [x29, #-24]
stur w8, [x29, #-28]
stur w8, [x29, #-32]
stur w8, [x29, #-4]
b .L.loop3.1
.L.loop3.1:
ldur w8, [x29, #-4]
mov w9, #10
cmp w8, w9
b.lt .L.loop3.2
b .L.loop3.3
.L.loop3.2:
mov w8, #0
stur w8, [x29, #-8]
b .L.loop3.4
.L.loop3.3:
ldur w8, [x29, #-32]
mov w0, w8
ldr x19, [sp, #0]
ldr x20, [sp, #8]
ldr x21, [sp, #16]
add sp, sp, #112
ldp x29, x30, [sp], #16
ret
.L.loop3.4:
ldur w9, [x29, #-8]
mov w8, #100
cmp w9, w8
b.lt .L.loop3.5
b .L.loop3.6
.L.loop3.5:
mov w8, #0
stur w8, [x29, #-12]
b .L.loop3.7
.L.loop3.6:
ldur w9, [x29, #-4]
mov w8, #1
add w8, w9, w8
stur w8, [x29, #-4]
ldur w9, [x29, #-4]
ldur w8, [x29, #-36]
cmp w9, w8
b.ge .L.loop3.34
b .L.loop3.35
.L.loop3.7:
ldur w9, [x29, #-12]
mov w8, #1000
cmp w9, w8
b.lt .L.loop3.8
b .L.loop3.9
.L.loop3.8:
mov w8, #0
stur w8, [x29, #-16]
b .L.loop3.10
.L.loop3.9:
ldur w9, [x29, #-8]
mov w8, #1
add w8, w9, w8
stur w8, [x29, #-8]
ldur w9, [x29, #-40]
cmp w8, w9
b.ge .L.loop3.32
b .L.loop3.33
.L.loop3.10:
ldur w9, [x29, #-16]
mov w8, #10000
cmp w9, w8
b.lt .L.loop3.11
b .L.loop3.12
.L.loop3.11:
mov w8, #0
stur w8, [x29, #-20]
b .L.loop3.13
.L.loop3.12:
ldur w8, [x29, #-12]
mov w9, #1
add w8, w8, w9
stur w8, [x29, #-12]
ldur w9, [x29, #-12]
ldur w8, [x29, #-44]
cmp w9, w8
b.ge .L.loop3.30
b .L.loop3.31
.L.loop3.13:
ldur w9, [x29, #-20]
movz w8, #34464
movk w8, #1, lsl #16
cmp w9, w8
b.lt .L.loop3.14
b .L.loop3.15
.L.loop3.14:
mov w8, #0
stur w8, [x29, #-24]
b .L.loop3.16
.L.loop3.15:
ldur w9, [x29, #-16]
mov w8, #1
add w8, w9, w8
stur w8, [x29, #-16]
ldur w9, [x29, #-16]
ldur w8, [x29, #-48]
cmp w9, w8
b.ge .L.loop3.28
b .L.loop3.29
.L.loop3.16:
ldur w9, [x29, #-24]
movz w8, #16960
movk w8, #15, lsl #16
cmp w9, w8
b.lt .L.loop3.17
b .L.loop3.18
.L.loop3.17:
mov w8, #0
stur w8, [x29, #-28]
b .L.loop3.19
.L.loop3.18:
ldur w9, [x29, #-20]
mov w8, #1
add w8, w9, w8
stur w8, [x29, #-20]
ldur w9, [x29, #-20]
ldur w8, [x29, #-52]
cmp w9, w8
b.ge .L.loop3.26
b .L.loop3.27
.L.loop3.19:
ldur w8, [x29, #-28]
movz w9, #38528
movk w9, #152, lsl #16
cmp w8, w9
b.lt .L.loop3.20
b .L.loop3.21
.L.loop3.20:
ldur w8, [x29, #-32]
mov w9, #817
sdiv w14, w8, w9
msub w15, w14, w9, w8
ldur w8, [x29, #-4]
ldur w9, [x29, #-8]
ldur w10, [x29, #-12]
ldur w19, [x29, #-16]
ldur w20, [x29, #-20]
ldur w21, [x29, #-24]
ldur w12, [x29, #-28]
mov w11, #1440
mul w8, w8, w11
mov w11, #720
mul w9, w9, w11
add w8, w8, w9
mov w9, #240
mul w9, w10, w9
add w8, w8, w9
mov w9, #60
mul w9, w19, w9
add w8, w8, w9
mov w9, #12
mul w9, w20, w9
add w8, w8, w9
mov w9, #2
lsl w9, w21, #1
add w8, w8, w9
add w8, w8, w12
adrp x9, arr1
add x9, x9, :lo12:arr1
sxtw x8, w8
lsl x8, x8, #2
add x8, x9, x8
ldr w8, [x8]
add w12, w15, w8
ldur w8, [x29, #-4]
ldur w9, [x29, #-8]
ldur w10, [x29, #-12]
ldur w21, [x29, #-16]
ldur w19, [x29, #-20]
ldur w20, [x29, #-24]
ldur w15, [x29, #-28]
mov w11, #2688
mul w8, w8, w11
mov w11, #1344
mul w9, w9, w11
add w8, w8, w9
mov w9, #448
mul w9, w10, w9
add w8, w8, w9
mov w9, #224
mul w9, w21, w9
add w8, w8, w9
mov w9, #56
mul w9, w19, w9
add w8, w8, w9
mov w9, #7
mul w9, w20, w9
add w8, w8, w9
add w8, w8, w15
adrp x9, arr2
add x9, x9, :lo12:arr2
sxtw x8, w8
lsl x8, x8, #2
add x8, x9, x8
ldr w8, [x8]
add w8, w12, w8
stur w8, [x29, #-32]
ldur w8, [x29, #-28]
mov w9, #1
add w8, w8, w9
stur w8, [x29, #-28]
ldur w9, [x29, #-60]
cmp w8, w9
b.ge .L.loop3.22
b .L.loop3.23
.L.loop3.21:
ldur w9, [x29, #-24]
mov w8, #1
add w8, w9, w8
stur w8, [x29, #-24]
ldur w9, [x29, #-56]
cmp w8, w9
b.ge .L.loop3.24
b .L.loop3.25
.L.loop3.22:
b .L.loop3.21
.L.loop3.23:
b .L.loop3.19
.L.loop3.24:
b .L.loop3.18
.L.loop3.25:
b .L.loop3.16
.L.loop3.26:
b .L.loop3.15
.L.loop3.27:
b .L.loop3.13
.L.loop3.28:
b .L.loop3.12
.L.loop3.29:
b .L.loop3.10
.L.loop3.30:
b .L.loop3.9
.L.loop3.31:
b .L.loop3.7
.L.loop3.32:
b .L.loop3.6
.L.loop3.33:
b .L.loop3.4
.L.loop3.34:
b .L.loop3.3
.L.loop3.35:
b .L.loop3.1
.text
.globl main
.p2align 2
main:
.L.main.0:
stp x29, x30, [sp, #-16]!
mov x29, sp
sub sp, sp, #96
str x27, [sp, #0]
str x26, [sp, #8]
str x25, [sp, #16]
str x24, [sp, #24]
str x23, [sp, #32]
str x22, [sp, #40]
str x21, [sp, #48]
str x20, [sp, #56]
str x19, [sp, #64]
bl getint
mov w22, w0
bl getint
mov w20, w0
bl getint
mov w19, w0
bl getint
mov w27, w0
bl getint
mov w26, w0
bl getint
mov w25, w0
bl getint
mov w24, w0
bl getint
mov w23, w0
bl getint
mov w21, w0
mov w0, w22
mov w1, w20
bl loop1
bl loop2
mov w0, w19
mov w1, w27
mov w2, w26
mov w3, w25
mov w4, w24
mov w5, w23
mov w6, w21
bl loop3
mov w8, w0
mov w0, w8
ldr x27, [sp, #0]
ldr x26, [sp, #8]
ldr x25, [sp, #16]
ldr x24, [sp, #24]
ldr x23, [sp, #32]
ldr x22, [sp, #40]
ldr x21, [sp, #48]
ldr x20, [sp, #56]
ldr x19, [sp, #64]
add sp, sp, #96
ldp x29, x30, [sp], #16
ret