sysy-data/hidden_functional_c/asm/13_LCA.s

937 lines
13 KiB
ArmAsm

.text
.attribute 4, 16
.attribute 5, "rv64i2p0_m2p0_a2p0_f2p0_d2p0_c2p0"
.file "13_LCA.sy"
.globl quick_read
.p2align 1
.type quick_read,@function
quick_read:
addi sp, sp, -48
sd ra, 40(sp)
sd s0, 32(sp)
sd s1, 24(sp)
sd s2, 16(sp)
sd s3, 8(sp)
call getch
addiw a1, a0, -58
li a2, -11
bltu a2, a1, .LBB0_5
li a1, 0
li s2, 45
li s0, -10
j .LBB0_3
.LBB0_2:
call getch
addiw a2, a0, -58
mv a1, s3
bgeu a2, s0, .LBB0_6
.LBB0_3:
sext.w a0, a0
li s3, 1
beq a0, s2, .LBB0_2
mv s3, a1
j .LBB0_2
.LBB0_5:
li s3, 0
.LBB0_6:
li s0, 0
li s1, 10
.LBB0_7:
mulw a1, s0, s1
addw a0, a0, a1
addiw s0, a0, -48
call getch
addiw a1, a0, -48
bltu a1, s1, .LBB0_7
beqz s3, .LBB0_10
negw s0, s0
.LBB0_10:
mv a0, s0
ld ra, 40(sp)
ld s0, 32(sp)
ld s1, 24(sp)
ld s2, 16(sp)
ld s3, 8(sp)
addi sp, sp, 48
ret
.Lfunc_end0:
.size quick_read, .Lfunc_end0-quick_read
.globl add_edge
.p2align 1
.type add_edge,@function
add_edge:
lui a6, %hi(cnt)
lw a3, %lo(cnt)(a6)
lui a4, %hi(to)
addi a4, a4, %lo(to)
slli a5, a3, 2
add a4, a4, a5
sw a1, 0(a4)
lui a4, %hi(head)
addi a4, a4, %lo(head)
slli a2, a0, 2
add a2, a2, a4
lw a7, 0(a2)
lui a4, %hi(next)
addi a4, a4, %lo(next)
add a4, a4, a5
sw a7, 0(a4)
sw a3, 0(a2)
addiw a2, a3, 1
sw a2, %lo(cnt)(a6)
li a2, 80
mul a1, a1, a2
lui a2, %hi(f)
addi a2, a2, %lo(f)
add a1, a1, a2
sw a0, 0(a1)
ret
.Lfunc_end1:
.size add_edge, .Lfunc_end1-add_edge
.globl init
.p2align 1
.type init,@function
init:
addi sp, sp, -16
sd ra, 8(sp)
lui a0, %hi(n)
lwu a0, %lo(n)(a0)
lui a1, %hi(dep)
lui a2, 259060
addiw a2, a2, -193
sext.w a3, a0
sw a2, %lo(dep)(a1)
blez a3, .LBB2_2
slli a2, a0, 2
lui a0, %hi(head+4)
addi a0, a0, %lo(head+4)
li a1, 255
call memset@plt
.LBB2_2:
ld ra, 8(sp)
addi sp, sp, 16
ret
.Lfunc_end2:
.size init, .Lfunc_end2-init
.globl tree
.p2align 1
.type tree,@function
tree:
addi sp, sp, -48
sd ra, 40(sp)
sd s0, 32(sp)
sd s1, 24(sp)
sd s2, 16(sp)
sd s3, 8(sp)
sd s4, 0(sp)
lui s1, %hi(dep)
li a2, 80
mul a5, a0, a2
lui a3, %hi(f)
addi a3, a3, %lo(f)
add a4, a5, a3
lw a4, 0(a4)
addi s1, s1, %lo(dep)
slli a0, a0, 2
add s1, s1, a0
sw a1, 0(s1)
beqz a4, .LBB3_3
ori a5, a5, 4
.LBB3_2:
mul a4, a4, a2
add a4, a4, a3
lw a4, 0(a4)
add s1, a3, a5
sw a4, 0(s1)
addi a3, a3, 4
bnez a4, .LBB3_2
.LBB3_3:
lui a2, %hi(head)
addi a2, a2, %lo(head)
add a0, a0, a2
lw a0, 0(a0)
li s2, -1
beq a0, s2, .LBB3_6
addiw s3, a1, 1
lui a1, %hi(to)
addi s4, a1, %lo(to)
lui a1, %hi(next)
addi s0, a1, %lo(next)
.LBB3_5:
slli s1, a0, 2
add a0, s1, s4
lw a0, 0(a0)
mv a1, s3
call tree
add a0, s1, s0
lw a0, 0(a0)
bne a0, s2, .LBB3_5
.LBB3_6:
ld ra, 40(sp)
ld s0, 32(sp)
ld s1, 24(sp)
ld s2, 16(sp)
ld s3, 8(sp)
ld s4, 0(sp)
addi sp, sp, 48
ret
.Lfunc_end3:
.size tree, .Lfunc_end3-tree
.globl LCA
.p2align 1
.type LCA,@function
LCA:
lui a2, %hi(dep)
addi a3, a2, %lo(dep)
slli a2, a0, 2
add a2, a2, a3
lw a2, 0(a2)
slli a4, a1, 2
add a4, a4, a3
lw a4, 0(a4)
blt a2, a4, .LBB4_2
mv a6, a0
j .LBB4_3
.LBB4_2:
mv a6, a1
mv a1, a0
.LBB4_3:
slli a0, a1, 2
add a0, a0, a3
lw a0, 0(a0)
slli a2, a6, 2
add a2, a2, a3
lw a2, 0(a2)
bge a0, a2, .LBB4_9
lui a2, %hi(f+76)
addi a3, a2, %lo(f+76)
li a7, 80
lui a2, %hi(dep)
addi a5, a2, %lo(dep)
mv a2, a6
j .LBB4_6
.LBB4_5:
sext.w a2, a6
slli a4, a2, 2
add a4, a4, a5
lw a4, 0(a4)
addi a3, a3, -4
bge a0, a4, .LBB4_9
.LBB4_6:
mul a2, a2, a7
add a2, a2, a3
lw a2, 0(a2)
beqz a2, .LBB4_5
slli a4, a2, 2
add a4, a4, a5
lw a4, 0(a4)
blt a4, a0, .LBB4_5
mv a6, a2
j .LBB4_5
.LBB4_9:
sext.w a2, a6
beq a2, a1, .LBB4_51
li a0, 80
mul a2, a2, a0
lui a3, %hi(f)
addi a3, a3, %lo(f)
addi a4, a3, 76
add a2, a2, a4
lw a2, 0(a2)
mul a5, a1, a0
add a4, a4, a5
lw a4, 0(a4)
beq a2, a4, .LBB4_12
mv a6, a2
mv a1, a4
.LBB4_12:
sext.w a2, a6
mul a2, a2, a0
addi a4, a3, 72
add a2, a2, a4
lw a2, 0(a2)
mul a5, a1, a0
add a4, a4, a5
lw a4, 0(a4)
beq a2, a4, .LBB4_14
mv a6, a2
mv a1, a4
.LBB4_14:
sext.w a2, a6
mul a2, a2, a0
addi a4, a3, 68
add a2, a2, a4
lw a2, 0(a2)
mul a5, a1, a0
add a4, a4, a5
lw a4, 0(a4)
beq a2, a4, .LBB4_16
mv a6, a2
mv a1, a4
.LBB4_16:
sext.w a2, a6
mul a2, a2, a0
addi a4, a3, 64
add a2, a2, a4
lw a2, 0(a2)
mul a5, a1, a0
add a4, a4, a5
lw a4, 0(a4)
beq a2, a4, .LBB4_18
mv a6, a2
mv a1, a4
.LBB4_18:
sext.w a2, a6
mul a2, a2, a0
addi a4, a3, 60
add a2, a2, a4
lw a2, 0(a2)
mul a5, a1, a0
add a4, a4, a5
lw a4, 0(a4)
beq a2, a4, .LBB4_20
mv a6, a2
mv a1, a4
.LBB4_20:
sext.w a2, a6
mul a2, a2, a0
addi a4, a3, 56
add a2, a2, a4
lw a2, 0(a2)
mul a5, a1, a0
add a4, a4, a5
lw a4, 0(a4)
beq a2, a4, .LBB4_22
mv a6, a2
mv a1, a4
.LBB4_22:
sext.w a2, a6
mul a2, a2, a0
addi a4, a3, 52
add a2, a2, a4
lw a2, 0(a2)
sext.w a5, a1
mul a5, a5, a0
add a4, a4, a5
lw a4, 0(a4)
beq a2, a4, .LBB4_24
mv a6, a2
mv a1, a4
.LBB4_24:
sext.w a2, a6
mul a2, a2, a0
addi a4, a3, 48
add a2, a2, a4
lw a2, 0(a2)
sext.w a5, a1
mul a5, a5, a0
add a4, a4, a5
lw a4, 0(a4)
beq a2, a4, .LBB4_26
mv a6, a2
mv a1, a4
.LBB4_26:
sext.w a2, a6
mul a2, a2, a0
addi a4, a3, 44
add a2, a2, a4
lw a2, 0(a2)
sext.w a5, a1
mul a5, a5, a0
add a4, a4, a5
lw a4, 0(a4)
beq a2, a4, .LBB4_28
mv a6, a2
mv a1, a4
.LBB4_28:
sext.w a2, a6
mul a2, a2, a0
addi a4, a3, 40
add a2, a2, a4
lw a2, 0(a2)
sext.w a5, a1
mul a5, a5, a0
add a4, a4, a5
lw a4, 0(a4)
beq a2, a4, .LBB4_30
mv a6, a2
mv a1, a4
.LBB4_30:
sext.w a2, a6
mul a2, a2, a0
addi a4, a3, 36
add a2, a2, a4
lw a2, 0(a2)
sext.w a5, a1
mul a5, a5, a0
add a4, a4, a5
lw a4, 0(a4)
beq a2, a4, .LBB4_32
mv a6, a2
mv a1, a4
.LBB4_32:
sext.w a2, a6
mul a2, a2, a0
addi a4, a3, 32
add a2, a2, a4
lw a2, 0(a2)
sext.w a5, a1
mul a5, a5, a0
add a4, a4, a5
lw a4, 0(a4)
beq a2, a4, .LBB4_34
mv a6, a2
mv a1, a4
.LBB4_34:
sext.w a2, a6
mul a2, a2, a0
addi a4, a3, 28
add a2, a2, a4
lw a2, 0(a2)
sext.w a5, a1
mul a5, a5, a0
add a4, a4, a5
lw a4, 0(a4)
beq a2, a4, .LBB4_36
mv a6, a2
mv a1, a4
.LBB4_36:
sext.w a2, a6
mul a2, a2, a0
addi a4, a3, 24
add a2, a2, a4
lw a2, 0(a2)
sext.w a5, a1
mul a5, a5, a0
add a4, a4, a5
lw a4, 0(a4)
beq a2, a4, .LBB4_38
mv a6, a2
mv a1, a4
.LBB4_38:
sext.w a2, a6
mul a2, a2, a0
addi a4, a3, 20
add a2, a2, a4
lw a2, 0(a2)
sext.w a5, a1
mul a5, a5, a0
add a4, a4, a5
lw a4, 0(a4)
beq a2, a4, .LBB4_40
mv a6, a2
mv a1, a4
.LBB4_40:
sext.w a2, a6
mul a2, a2, a0
addi a4, a3, 16
add a2, a2, a4
lw a2, 0(a2)
sext.w a5, a1
mul a5, a5, a0
add a4, a4, a5
lw a4, 0(a4)
beq a2, a4, .LBB4_42
mv a6, a2
mv a1, a4
.LBB4_42:
sext.w a2, a6
mul a2, a2, a0
addi a4, a3, 12
add a2, a2, a4
lw a2, 0(a2)
sext.w a5, a1
mul a5, a5, a0
add a4, a4, a5
lw a4, 0(a4)
beq a2, a4, .LBB4_44
mv a6, a2
mv a1, a4
.LBB4_44:
sext.w a2, a6
mul a2, a2, a0
addi a4, a3, 8
add a2, a2, a4
lw a2, 0(a2)
sext.w a5, a1
mul a5, a5, a0
add a4, a4, a5
lw a4, 0(a4)
beq a2, a4, .LBB4_46
mv a6, a2
mv a1, a4
.LBB4_46:
sext.w a2, a6
mul a2, a2, a0
addi a4, a3, 4
add a2, a2, a4
lw a2, 0(a2)
sext.w a5, a1
mul a5, a5, a0
add a4, a4, a5
lw a4, 0(a4)
beq a2, a4, .LBB4_48
mv a6, a2
mv a1, a4
.LBB4_48:
sext.w a2, a6
mul a2, a2, a0
add a2, a2, a3
lw a2, 0(a2)
sext.w a1, a1
mul a1, a1, a0
add a1, a1, a3
lw a1, 0(a1)
beq a2, a1, .LBB4_50
mv a6, a2
.LBB4_50:
sext.w a1, a6
mul a0, a1, a0
add a0, a0, a3
lw a1, 0(a0)
.LBB4_51:
sext.w a0, a1
ret
.Lfunc_end4:
.size LCA, .Lfunc_end4-LCA
.globl main
.p2align 1
.type main,@function
main:
addi sp, sp, -112
sd ra, 104(sp)
sd s0, 96(sp)
sd s1, 88(sp)
sd s2, 80(sp)
sd s3, 72(sp)
sd s4, 64(sp)
sd s5, 56(sp)
sd s6, 48(sp)
sd s7, 40(sp)
sd s8, 32(sp)
sd s9, 24(sp)
sd s10, 16(sp)
sd s11, 8(sp)
call getch
addiw a1, a0, -58
li a2, -11
bltu a2, a1, .LBB5_5
li a1, 0
li s2, 45
li s1, -10
j .LBB5_3
.LBB5_2:
call getch
addiw a2, a0, -58
mv a1, s3
bgeu a2, s1, .LBB5_6
.LBB5_3:
sext.w a0, a0
li s3, 1
beq a0, s2, .LBB5_2
mv s3, a1
j .LBB5_2
.LBB5_5:
li s3, 0
.LBB5_6:
li s1, 0
li s0, 10
.LBB5_7:
mulw a1, s1, s0
addw a0, a0, a1
addiw s1, a0, -48
call getch
addiw a1, a0, -48
bltu a1, s0, .LBB5_7
beqz s3, .LBB5_10
neg s1, s1
.LBB5_10:
lui a0, %hi(n)
sw s1, %lo(n)(a0)
call getch
addiw a1, a0, -58
li a2, -11
bltu a2, a1, .LBB5_15
li a1, 0
li s2, 45
li s1, -10
j .LBB5_13
.LBB5_12:
call getch
addiw a2, a0, -58
mv a1, s3
bgeu a2, s1, .LBB5_16
.LBB5_13:
sext.w a0, a0
li s3, 1
beq a0, s2, .LBB5_12
mv s3, a1
j .LBB5_12
.LBB5_15:
li s3, 0
.LBB5_16:
li s1, 0
li s0, 10
.LBB5_17:
mulw a1, s1, s0
addw a0, a0, a1
addiw s1, a0, -48
call getch
addiw a1, a0, -48
bltu a1, s0, .LBB5_17
beqz s3, .LBB5_20
neg s1, s1
.LBB5_20:
lui a0, %hi(m)
sw s1, %lo(m)(a0)
lui a0, %hi(n)
lwu a0, %lo(n)(a0)
lui a1, %hi(dep)
lui a2, 259060
addiw a2, a2, -193
sext.w s0, a0
sw a2, %lo(dep)(a1)
blez s0, .LBB5_46
slli a2, a0, 2
lui a0, %hi(head+4)
addi a0, a0, %lo(head+4)
li a1, 255
call memset@plt
li a0, 1
bne s0, a0, .LBB5_46
.LBB5_22:
li a0, 1
li a1, 1
call tree
lui s2, %hi(m)
lw a0, %lo(m)(s2)
beqz a0, .LBB5_45
li s3, -11
li s4, 45
li s5, -10
li s6, 10
j .LBB5_25
.LBB5_24:
mv a0, s0
mv a1, s1
call LCA
call putint
li a0, 10
call putch
lw a0, %lo(m)(s2)
addiw a0, a0, -1
sw a0, %lo(m)(s2)
beqz a0, .LBB5_45
.LBB5_25:
call getch
addiw a1, a0, -58
bltu s3, a1, .LBB5_30
li a1, 0
j .LBB5_28
.LBB5_27:
call getch
addiw a2, a0, -58
mv a1, s1
bgeu a2, s5, .LBB5_31
.LBB5_28:
sext.w a0, a0
li s1, 1
beq a0, s4, .LBB5_27
mv s1, a1
j .LBB5_27
.LBB5_30:
li s1, 0
.LBB5_31:
li s0, 0
.LBB5_32:
mulw a1, s0, s6
addw a0, a0, a1
addiw s0, a0, -48
call getch
addiw a1, a0, -48
bltu a1, s6, .LBB5_32
beqz s1, .LBB5_35
negw s0, s0
.LBB5_35:
call getch
addiw a1, a0, -58
bltu s3, a1, .LBB5_40
li a1, 0
j .LBB5_38
.LBB5_37:
call getch
addiw a2, a0, -58
mv a1, s7
bgeu a2, s5, .LBB5_41
.LBB5_38:
sext.w a0, a0
li s7, 1
beq a0, s4, .LBB5_37
mv s7, a1
j .LBB5_37
.LBB5_40:
li s7, 0
.LBB5_41:
li s1, 0
.LBB5_42:
mulw a1, s1, s6
addw a0, a0, a1
addiw s1, a0, -48
call getch
addiw a1, a0, -48
bltu a1, s6, .LBB5_42
beqz s7, .LBB5_24
negw s1, s1
j .LBB5_24
.LBB5_45:
li a0, 0
ld ra, 104(sp)
ld s0, 96(sp)
ld s1, 88(sp)
ld s2, 80(sp)
ld s3, 72(sp)
ld s4, 64(sp)
ld s5, 56(sp)
ld s6, 48(sp)
ld s7, 40(sp)
ld s8, 32(sp)
ld s9, 24(sp)
ld s10, 16(sp)
ld s11, 8(sp)
addi sp, sp, 112
ret
.LBB5_46:
li s4, 1
li s1, -11
li s5, 45
li s3, -10
li s6, 10
lui a0, %hi(to)
addi s7, a0, %lo(to)
lui a0, %hi(head)
addi s8, a0, %lo(head)
lui a0, %hi(next)
addi s9, a0, %lo(next)
lui a0, %hi(f)
addi s11, a0, %lo(f)
j .LBB5_48
.LBB5_47:
li s1, -11
lui a5, %hi(cnt)
lw a0, %lo(cnt)(a5)
slli a1, a0, 2
slli a2, s2, 2
add a2, a2, s8
lw a3, 0(a2)
add a4, a1, s7
sw s0, 0(a4)
add a1, a1, s9
sw a3, 0(a1)
sw a0, 0(a2)
addiw a0, a0, 1
sw a0, %lo(cnt)(a5)
lui a0, %hi(n)
lw a0, %lo(n)(a0)
li a1, 80
mul a1, s0, a1
add a1, a1, s11
addiw s4, s4, 1
sw s2, 0(a1)
beq s4, a0, .LBB5_22
.LBB5_48:
call getch
addiw a1, a0, -58
bltu s1, a1, .LBB5_53
li a1, 0
j .LBB5_51
.LBB5_50:
call getch
addiw a2, a0, -58
mv a1, s10
bgeu a2, s3, .LBB5_54
.LBB5_51:
sext.w a0, a0
li s10, 1
beq a0, s5, .LBB5_50
mv s10, a1
j .LBB5_50
.LBB5_53:
li s10, 0
.LBB5_54:
li s2, 0
.LBB5_55:
mulw a1, s2, s6
addw a0, a0, a1
addiw s2, a0, -48
call getch
addiw a1, a0, -48
bltu a1, s6, .LBB5_55
beqz s10, .LBB5_58
negw s2, s2
.LBB5_58:
call getch
addiw a1, a0, -58
bltu s1, a1, .LBB5_63
li a1, 0
j .LBB5_61
.LBB5_60:
call getch
addiw a2, a0, -58
mv a1, s1
bgeu a2, s3, .LBB5_64
.LBB5_61:
sext.w a0, a0
li s1, 1
beq a0, s5, .LBB5_60
mv s1, a1
j .LBB5_60
.LBB5_63:
li s1, 0
.LBB5_64:
li s0, 0
.LBB5_65:
mulw a1, s0, s6
addw a0, a0, a1
addiw s0, a0, -48
call getch
addiw a1, a0, -48
bltu a1, s6, .LBB5_65
beqz s1, .LBB5_47
negw s0, s0
j .LBB5_47
.Lfunc_end5:
.size main, .Lfunc_end5-main
.type cnt,@object
.section .sbss,"aw",@nobits
.globl cnt
.p2align 2
cnt:
.word 0
.size cnt, 4
.type to,@object
.bss
.globl to
.p2align 2
to:
.zero 40020
.size to, 40020
.type head,@object
.globl head
.p2align 2
head:
.zero 40020
.size head, 40020
.type next,@object
.globl next
.p2align 2
next:
.zero 40020
.size next, 40020
.type f,@object
.globl f
.p2align 2
f:
.zero 800400
.size f, 800400
.type dep,@object
.globl dep
.p2align 2
dep:
.zero 40020
.size dep, 40020
.type n,@object
.section .sbss,"aw",@nobits
.globl n
.p2align 2
n:
.word 0
.size n, 4
.type m,@object
.globl m
.p2align 2
m:
.word 0
.size m, 4
.type _sysy_start,@object
.bss
.globl _sysy_start
.p2align 3
_sysy_start:
.zero 16
.size _sysy_start, 16
.type _sysy_end,@object
.globl _sysy_end
.p2align 3
_sysy_end:
.zero 16
.size _sysy_end, 16
.type _sysy_l1,@object
.globl _sysy_l1
.p2align 2
_sysy_l1:
.zero 4096
.size _sysy_l1, 4096
.type _sysy_l2,@object
.globl _sysy_l2
.p2align 2
_sysy_l2:
.zero 4096
.size _sysy_l2, 4096
.type _sysy_h,@object
.globl _sysy_h
.p2align 2
_sysy_h:
.zero 4096
.size _sysy_h, 4096
.type _sysy_m,@object
.globl _sysy_m
.p2align 2
_sysy_m:
.zero 4096
.size _sysy_m, 4096
.type _sysy_s,@object
.globl _sysy_s
.p2align 2
_sysy_s:
.zero 4096
.size _sysy_s, 4096
.type _sysy_us,@object
.globl _sysy_us
.p2align 2
_sysy_us:
.zero 4096
.size _sysy_us, 4096
.type _sysy_idx,@object
.section .sbss,"aw",@nobits
.globl _sysy_idx
.p2align 2
_sysy_idx:
.word 0
.size _sysy_idx, 4
.ident "Debian clang version 14.0.6"
.section ".note.GNU-stack","",@progbits
.addrsig