.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