1132 lines
18 KiB
ArmAsm
1132 lines
18 KiB
ArmAsm
|
.text
|
||
|
.attribute 4, 16
|
||
|
.attribute 5, "rv64i2p0_m2p0_a2p0_f2p0_d2p0_c2p0"
|
||
|
.file "23_json.sy"
|
||
|
.globl is_number
|
||
|
.p2align 1
|
||
|
.type is_number,@function
|
||
|
is_number:
|
||
|
addiw a0, a0, -48
|
||
|
sltiu a0, a0, 10
|
||
|
ret
|
||
|
.Lfunc_end0:
|
||
|
.size is_number, .Lfunc_end0-is_number
|
||
|
|
||
|
.globl skip_space
|
||
|
.p2align 1
|
||
|
.type skip_space,@function
|
||
|
skip_space:
|
||
|
lui a6, %hi(pos)
|
||
|
lw a3, %lo(pos)(a6)
|
||
|
bge a3, a1, .LBB1_5
|
||
|
li a7, 32
|
||
|
li a5, 1
|
||
|
lui a2, 128
|
||
|
addiw a2, a2, 1
|
||
|
slli a2, a2, 13
|
||
|
addi a2, a2, 1536
|
||
|
.LBB1_2:
|
||
|
slli a4, a3, 2
|
||
|
add a4, a4, a0
|
||
|
lw a4, 0(a4)
|
||
|
bltu a7, a4, .LBB1_5
|
||
|
sll a4, a5, a4
|
||
|
and a4, a4, a2
|
||
|
beqz a4, .LBB1_5
|
||
|
addiw a3, a3, 1
|
||
|
sw a3, %lo(pos)(a6)
|
||
|
blt a3, a1, .LBB1_2
|
||
|
.LBB1_5:
|
||
|
ret
|
||
|
.Lfunc_end1:
|
||
|
.size skip_space, .Lfunc_end1-skip_space
|
||
|
|
||
|
.globl detect_item
|
||
|
.p2align 1
|
||
|
.type detect_item,@function
|
||
|
detect_item:
|
||
|
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)
|
||
|
lui a4, %hi(pos)
|
||
|
lw a3, %lo(pos)(a4)
|
||
|
bge a3, a2, .LBB2_199
|
||
|
mv s10, a2
|
||
|
mv s11, a1
|
||
|
mv s3, a0
|
||
|
li a2, 32
|
||
|
li s2, 34
|
||
|
li t6, 123
|
||
|
li a6, 91
|
||
|
li a7, 10
|
||
|
li t0, 101
|
||
|
li t1, 43
|
||
|
li t2, 45
|
||
|
li t3, 102
|
||
|
li t4, 110
|
||
|
li t5, 116
|
||
|
li s0, 1
|
||
|
lui a0, 128
|
||
|
addiw a0, a0, 1
|
||
|
slli a0, a0, 13
|
||
|
addi a5, a0, 1536
|
||
|
j .LBB2_4
|
||
|
.LBB2_2:
|
||
|
li s3, 3
|
||
|
.LBB2_3:
|
||
|
bge s4, s10, .LBB2_199
|
||
|
.LBB2_4:
|
||
|
sext.w a0, a3
|
||
|
slli a1, a0, 2
|
||
|
add a1, a1, s11
|
||
|
.LBB2_5:
|
||
|
lw s1, 0(a1)
|
||
|
bltu a2, s1, .LBB2_9
|
||
|
sll s1, s0, s1
|
||
|
and s1, s1, a5
|
||
|
beqz s1, .LBB2_9
|
||
|
addi a0, a0, 1
|
||
|
sw a0, %lo(pos)(a4)
|
||
|
addi a1, a1, 4
|
||
|
mv a3, a0
|
||
|
blt a0, s10, .LBB2_5
|
||
|
mv a3, a0
|
||
|
.LBB2_9:
|
||
|
sext.w a0, s3
|
||
|
bnez a0, .LBB2_25
|
||
|
sext.w s4, a3
|
||
|
slli a0, s4, 2
|
||
|
add a0, a0, s11
|
||
|
lw a1, 0(a0)
|
||
|
beq a1, s2, .LBB2_19
|
||
|
beq a1, t6, .LBB2_20
|
||
|
beq a1, a6, .LBB2_2
|
||
|
addiw a0, a1, -48
|
||
|
li s3, 1
|
||
|
bltu a0, a7, .LBB2_3
|
||
|
li a0, 0
|
||
|
bge t0, a1, .LBB2_21
|
||
|
beq a1, t3, .LBB2_23
|
||
|
beq a1, t4, .LBB2_24
|
||
|
bne a1, t5, .LBB2_200
|
||
|
li s3, 5
|
||
|
j .LBB2_3
|
||
|
.LBB2_19:
|
||
|
li s3, 2
|
||
|
j .LBB2_3
|
||
|
.LBB2_20:
|
||
|
li s3, 4
|
||
|
j .LBB2_3
|
||
|
.LBB2_21:
|
||
|
beq a1, t1, .LBB2_3
|
||
|
beq a1, t2, .LBB2_3
|
||
|
j .LBB2_200
|
||
|
.LBB2_23:
|
||
|
li s3, 6
|
||
|
j .LBB2_3
|
||
|
.LBB2_24:
|
||
|
li s3, 7
|
||
|
j .LBB2_3
|
||
|
.LBB2_25:
|
||
|
addi a0, a0, -1
|
||
|
li a1, 6
|
||
|
bltu a1, a0, .LBB2_199
|
||
|
slli a0, a0, 2
|
||
|
lui a1, %hi(.LJTI2_0)
|
||
|
addi a1, a1, %lo(.LJTI2_0)
|
||
|
add a0, a0, a1
|
||
|
lw a0, 0(a0)
|
||
|
jr a0
|
||
|
.LBB2_27:
|
||
|
sext.w a0, a3
|
||
|
slli a0, a0, 2
|
||
|
add a0, a0, s11
|
||
|
lw a0, 0(a0)
|
||
|
li a1, 45
|
||
|
beq a0, a1, .LBB2_29
|
||
|
li a1, 43
|
||
|
bne a0, a1, .LBB2_30
|
||
|
.LBB2_29:
|
||
|
addiw a3, a3, 1
|
||
|
lui a0, %hi(pos)
|
||
|
sw a3, %lo(pos)(a0)
|
||
|
.LBB2_30:
|
||
|
sext.w a0, a3
|
||
|
bge a0, s10, .LBB2_199
|
||
|
slli a1, a0, 2
|
||
|
add a2, s11, a1
|
||
|
lw a2, 0(a2)
|
||
|
addiw a4, a2, -58
|
||
|
li a5, -10
|
||
|
bltu a4, a5, .LBB2_199
|
||
|
addiw a2, a2, -48
|
||
|
li a4, 9
|
||
|
bltu a4, a2, .LBB2_37
|
||
|
add a1, a1, s11
|
||
|
addi a1, a1, 4
|
||
|
lui a2, %hi(pos)
|
||
|
li a3, 10
|
||
|
.LBB2_34:
|
||
|
addiw a4, a0, 1
|
||
|
sw a4, %lo(pos)(a2)
|
||
|
beq a4, s10, .LBB2_127
|
||
|
lw a4, 0(a1)
|
||
|
addiw a4, a4, -48
|
||
|
addi a1, a1, 4
|
||
|
addi a0, a0, 1
|
||
|
bltu a4, a3, .LBB2_34
|
||
|
mv a3, a0
|
||
|
.LBB2_37:
|
||
|
slli a1, a0, 32
|
||
|
srai a1, a1, 30
|
||
|
add a1, a1, s11
|
||
|
lw a1, 0(a1)
|
||
|
li a2, 46
|
||
|
bne a1, a2, .LBB2_41
|
||
|
sext.w a0, a0
|
||
|
addi a4, a0, 1
|
||
|
slli a0, a4, 2
|
||
|
add a0, a0, s11
|
||
|
lui a1, %hi(pos)
|
||
|
li a2, 10
|
||
|
.LBB2_39:
|
||
|
mv a3, a4
|
||
|
sw a4, %lo(pos)(a1)
|
||
|
bge a4, s10, .LBB2_41
|
||
|
lw a4, 0(a0)
|
||
|
addiw a5, a4, -48
|
||
|
addi a4, a3, 1
|
||
|
addi a0, a0, 4
|
||
|
bltu a5, a2, .LBB2_39
|
||
|
.LBB2_41:
|
||
|
sext.w a1, a3
|
||
|
li a0, 1
|
||
|
bge a1, s10, .LBB2_200
|
||
|
slli a1, a1, 2
|
||
|
add a1, a1, s11
|
||
|
lw a1, 0(a1)
|
||
|
li a2, 101
|
||
|
bne a1, a2, .LBB2_200
|
||
|
addiw a1, a3, 1
|
||
|
lui a2, %hi(pos)
|
||
|
sw a1, %lo(pos)(a2)
|
||
|
bge a1, s10, .LBB2_46
|
||
|
slli a2, a1, 2
|
||
|
add a2, a2, s11
|
||
|
lw a2, 0(a2)
|
||
|
li a4, 43
|
||
|
bne a2, a4, .LBB2_46
|
||
|
addiw a1, a3, 2
|
||
|
lui a2, %hi(pos)
|
||
|
sw a1, %lo(pos)(a2)
|
||
|
.LBB2_46:
|
||
|
bge a1, s10, .LBB2_49
|
||
|
slli a2, a1, 2
|
||
|
add a2, a2, s11
|
||
|
lw a2, 0(a2)
|
||
|
li a3, 45
|
||
|
bne a2, a3, .LBB2_49
|
||
|
addiw a1, a1, 1
|
||
|
lui a2, %hi(pos)
|
||
|
sw a1, %lo(pos)(a2)
|
||
|
.LBB2_49:
|
||
|
bge a1, s10, .LBB2_200
|
||
|
slli a2, a1, 2
|
||
|
add a2, a2, s11
|
||
|
addi a1, a1, 1
|
||
|
li a3, 9
|
||
|
lui a4, %hi(pos)
|
||
|
.LBB2_51:
|
||
|
lw a5, 0(a2)
|
||
|
addiw a5, a5, -48
|
||
|
bltu a3, a5, .LBB2_200
|
||
|
sext.w a5, a1
|
||
|
sw a1, %lo(pos)(a4)
|
||
|
addi a2, a2, 4
|
||
|
addi a1, a1, 1
|
||
|
bne a5, s10, .LBB2_51
|
||
|
j .LBB2_200
|
||
|
.LBB2_53:
|
||
|
addiw a1, a3, 1
|
||
|
lui a2, %hi(pos)
|
||
|
sw a1, %lo(pos)(a2)
|
||
|
bge a1, s10, .LBB2_199
|
||
|
li a3, 92
|
||
|
li a4, 34
|
||
|
j .LBB2_57
|
||
|
.LBB2_55:
|
||
|
li a5, 1
|
||
|
.LBB2_56:
|
||
|
li a0, 0
|
||
|
addw a1, a1, a5
|
||
|
sw a1, %lo(pos)(a2)
|
||
|
bge a1, s10, .LBB2_200
|
||
|
.LBB2_57:
|
||
|
slli a0, a1, 2
|
||
|
add a0, a0, s11
|
||
|
lw a0, 0(a0)
|
||
|
li a5, 2
|
||
|
beq a0, a3, .LBB2_56
|
||
|
bne a0, a4, .LBB2_55
|
||
|
j .LBB2_125
|
||
|
.LBB2_59:
|
||
|
addiw a0, a3, 1
|
||
|
lui a1, %hi(pos)
|
||
|
sw a0, %lo(pos)(a1)
|
||
|
bge a0, s10, .LBB2_87
|
||
|
slli a2, a0, 2
|
||
|
add a2, a2, s11
|
||
|
addi a3, a0, 1
|
||
|
li a4, 32
|
||
|
li a5, 1
|
||
|
lui s1, 128
|
||
|
addiw s1, s1, 1
|
||
|
slli s1, s1, 13
|
||
|
addi s0, s1, 1536
|
||
|
.LBB2_61:
|
||
|
lw s1, 0(a2)
|
||
|
bltu a4, s1, .LBB2_87
|
||
|
sll s1, a5, s1
|
||
|
and s1, s1, s0
|
||
|
beqz s1, .LBB2_87
|
||
|
sext.w s1, a3
|
||
|
mv a0, a3
|
||
|
sw a3, %lo(pos)(a1)
|
||
|
addi a2, a2, 4
|
||
|
addi a3, a3, 1
|
||
|
bne s1, s10, .LBB2_61
|
||
|
j .LBB2_90
|
||
|
.LBB2_64:
|
||
|
addiw a1, a3, 1
|
||
|
lui a6, %hi(pos)
|
||
|
sw a1, %lo(pos)(a6)
|
||
|
bge a1, s10, .LBB2_112
|
||
|
slli a0, a1, 2
|
||
|
add a3, s11, a0
|
||
|
addi a4, a1, 1
|
||
|
li a5, 32
|
||
|
li s0, 1
|
||
|
lui a0, 128
|
||
|
addiw a0, a0, 1
|
||
|
slli a0, a0, 13
|
||
|
addi a2, a0, 1536
|
||
|
.LBB2_66:
|
||
|
lw a0, 0(a3)
|
||
|
bltu a5, a0, .LBB2_112
|
||
|
sll a0, s0, a0
|
||
|
and a0, a0, a2
|
||
|
beqz a0, .LBB2_112
|
||
|
li a0, 0
|
||
|
sext.w s1, a4
|
||
|
mv a1, a4
|
||
|
sw a4, %lo(pos)(a6)
|
||
|
addi a3, a3, 4
|
||
|
addi a4, a4, 1
|
||
|
bne s1, s10, .LBB2_66
|
||
|
j .LBB2_200
|
||
|
.LBB2_69:
|
||
|
addiw a0, a3, 3
|
||
|
bge a0, s10, .LBB2_199
|
||
|
sext.w a1, a3
|
||
|
slli a1, a1, 2
|
||
|
add a1, a1, s11
|
||
|
lw a1, 0(a1)
|
||
|
li a2, 116
|
||
|
bne a1, a2, .LBB2_199
|
||
|
addiw a1, a3, 1
|
||
|
slli a1, a1, 2
|
||
|
add a1, a1, s11
|
||
|
lw a1, 0(a1)
|
||
|
li a2, 114
|
||
|
bne a1, a2, .LBB2_199
|
||
|
addiw a1, a3, 2
|
||
|
slli a1, a1, 2
|
||
|
add a1, a1, s11
|
||
|
lw a1, 0(a1)
|
||
|
li a2, 117
|
||
|
bne a1, a2, .LBB2_199
|
||
|
slli a0, a0, 2
|
||
|
add a0, a0, s11
|
||
|
lw a0, 0(a0)
|
||
|
li a1, 101
|
||
|
bne a0, a1, .LBB2_199
|
||
|
j .LBB2_86
|
||
|
.LBB2_74:
|
||
|
addiw a0, a3, 4
|
||
|
bge a0, s10, .LBB2_199
|
||
|
sext.w a1, a3
|
||
|
slli a1, a1, 2
|
||
|
add a1, a1, s11
|
||
|
lw a1, 0(a1)
|
||
|
li a2, 102
|
||
|
bne a1, a2, .LBB2_199
|
||
|
addiw a1, a3, 1
|
||
|
slli a1, a1, 2
|
||
|
add a1, a1, s11
|
||
|
lw a1, 0(a1)
|
||
|
li a2, 97
|
||
|
bne a1, a2, .LBB2_199
|
||
|
addiw a1, a3, 2
|
||
|
slli a1, a1, 2
|
||
|
add a1, a1, s11
|
||
|
lw a1, 0(a1)
|
||
|
li a2, 108
|
||
|
bne a1, a2, .LBB2_199
|
||
|
addiw a1, a3, 3
|
||
|
slli a1, a1, 2
|
||
|
add a1, a1, s11
|
||
|
lw a1, 0(a1)
|
||
|
li a2, 115
|
||
|
bne a1, a2, .LBB2_199
|
||
|
slli a0, a0, 2
|
||
|
add a0, a0, s11
|
||
|
lw a0, 0(a0)
|
||
|
li a1, 101
|
||
|
bne a0, a1, .LBB2_199
|
||
|
addiw a0, a3, 5
|
||
|
j .LBB2_126
|
||
|
.LBB2_81:
|
||
|
addiw a0, a3, 3
|
||
|
bge a0, s10, .LBB2_199
|
||
|
sext.w a1, a3
|
||
|
slli a1, a1, 2
|
||
|
add a1, a1, s11
|
||
|
lw a1, 0(a1)
|
||
|
li a2, 110
|
||
|
bne a1, a2, .LBB2_199
|
||
|
addiw a1, a3, 1
|
||
|
slli a1, a1, 2
|
||
|
add a1, a1, s11
|
||
|
lw a1, 0(a1)
|
||
|
li a2, 117
|
||
|
bne a1, a2, .LBB2_199
|
||
|
addiw a1, a3, 2
|
||
|
slli a1, a1, 2
|
||
|
add a1, a1, s11
|
||
|
lw a2, 0(a1)
|
||
|
li a1, 108
|
||
|
bne a2, a1, .LBB2_199
|
||
|
slli a0, a0, 2
|
||
|
add a0, a0, s11
|
||
|
lw a0, 0(a0)
|
||
|
bne a0, a1, .LBB2_199
|
||
|
.LBB2_86:
|
||
|
addiw a0, a3, 4
|
||
|
j .LBB2_126
|
||
|
.LBB2_87:
|
||
|
sext.w a1, a0
|
||
|
bge a1, s10, .LBB2_90
|
||
|
slli a1, a1, 2
|
||
|
add a1, a1, s11
|
||
|
lw a1, 0(a1)
|
||
|
li a2, 93
|
||
|
bne a1, a2, .LBB2_90
|
||
|
addiw a0, a0, 1
|
||
|
j .LBB2_126
|
||
|
.LBB2_90:
|
||
|
li a0, 0
|
||
|
mv a1, s11
|
||
|
mv a2, s10
|
||
|
call detect_item
|
||
|
beqz a0, .LBB2_199
|
||
|
lui a0, %hi(pos)
|
||
|
lw a1, %lo(pos)(a0)
|
||
|
bge a1, s10, .LBB2_97
|
||
|
slli a2, a1, 2
|
||
|
add a2, a2, s11
|
||
|
addi a3, a1, 1
|
||
|
li a4, 32
|
||
|
li a5, 1
|
||
|
lui s1, 128
|
||
|
addiw s1, s1, 1
|
||
|
slli s1, s1, 13
|
||
|
addi s0, s1, 1536
|
||
|
.LBB2_93:
|
||
|
lw s1, 0(a2)
|
||
|
bltu a4, s1, .LBB2_97
|
||
|
sll s1, a5, s1
|
||
|
and s1, s1, s0
|
||
|
beqz s1, .LBB2_97
|
||
|
sext.w s1, a3
|
||
|
mv a1, a3
|
||
|
sw a3, %lo(pos)(a0)
|
||
|
addi a2, a2, 4
|
||
|
addi a3, a3, 1
|
||
|
bne s1, s10, .LBB2_93
|
||
|
mv a1, s10
|
||
|
.LBB2_97:
|
||
|
sext.w a0, a1
|
||
|
slli a0, a0, 2
|
||
|
add a0, a0, s11
|
||
|
lw a0, 0(a0)
|
||
|
li s2, 44
|
||
|
bne a0, s2, .LBB2_118
|
||
|
lui s5, %hi(pos)
|
||
|
li s3, 32
|
||
|
li s4, 1
|
||
|
lui a0, 128
|
||
|
addiw a0, a0, 1
|
||
|
slli a0, a0, 13
|
||
|
addi s0, a0, 1536
|
||
|
j .LBB2_100
|
||
|
.LBB2_99:
|
||
|
sext.w a0, a1
|
||
|
slli a0, a0, 2
|
||
|
add a0, a0, s11
|
||
|
lw a0, 0(a0)
|
||
|
bne a0, s2, .LBB2_118
|
||
|
.LBB2_100:
|
||
|
addiw a1, a1, 1
|
||
|
sw a1, %lo(pos)(s5)
|
||
|
bge a1, s10, .LBB2_105
|
||
|
slli a0, a1, 2
|
||
|
add a0, a0, s11
|
||
|
addi a1, a1, 1
|
||
|
.LBB2_102:
|
||
|
lw a2, 0(a0)
|
||
|
bltu s3, a2, .LBB2_105
|
||
|
sll a2, s4, a2
|
||
|
and a2, a2, s0
|
||
|
beqz a2, .LBB2_105
|
||
|
sext.w a2, a1
|
||
|
sw a1, %lo(pos)(s5)
|
||
|
addi a0, a0, 4
|
||
|
addi a1, a1, 1
|
||
|
bne a2, s10, .LBB2_102
|
||
|
.LBB2_105:
|
||
|
li a0, 0
|
||
|
mv a1, s11
|
||
|
mv a2, s10
|
||
|
call detect_item
|
||
|
beqz a0, .LBB2_199
|
||
|
lw a1, %lo(pos)(s5)
|
||
|
bge a1, s10, .LBB2_99
|
||
|
slli a0, a1, 2
|
||
|
add a0, a0, s11
|
||
|
addi a2, a1, 1
|
||
|
.LBB2_108:
|
||
|
lw a3, 0(a0)
|
||
|
bltu s3, a3, .LBB2_99
|
||
|
sll a3, s4, a3
|
||
|
and a3, a3, s0
|
||
|
beqz a3, .LBB2_99
|
||
|
sext.w a3, a2
|
||
|
mv a1, a2
|
||
|
sw a2, %lo(pos)(s5)
|
||
|
addi a0, a0, 4
|
||
|
addi a2, a2, 1
|
||
|
bne a3, s10, .LBB2_108
|
||
|
mv a1, s10
|
||
|
j .LBB2_99
|
||
|
.LBB2_112:
|
||
|
sext.w a0, a1
|
||
|
bge a0, s10, .LBB2_199
|
||
|
slli a2, a0, 2
|
||
|
add a2, a2, s11
|
||
|
lw a5, 0(a2)
|
||
|
li a2, 125
|
||
|
beq a5, a2, .LBB2_125
|
||
|
addi a0, a0, 1
|
||
|
slli a2, a0, 2
|
||
|
add a2, a2, s11
|
||
|
li a6, 32
|
||
|
li a4, 1
|
||
|
lui a3, 128
|
||
|
addiw a3, a3, 1
|
||
|
slli a3, a3, 13
|
||
|
addi s0, a3, 1536
|
||
|
lui a3, %hi(pos)
|
||
|
bltu a6, a5, .LBB2_129
|
||
|
.LBB2_115:
|
||
|
sll a5, a4, a5
|
||
|
and a5, a5, s0
|
||
|
beqz a5, .LBB2_129
|
||
|
sext.w a1, a0
|
||
|
sw a0, %lo(pos)(a3)
|
||
|
beq a1, s10, .LBB2_128
|
||
|
lw a5, 0(a2)
|
||
|
mv a1, a0
|
||
|
addi a2, a2, 4
|
||
|
addi a0, a0, 1
|
||
|
bgeu a6, a5, .LBB2_115
|
||
|
j .LBB2_129
|
||
|
.LBB2_118:
|
||
|
sext.w a0, a1
|
||
|
bge a0, s10, .LBB2_123
|
||
|
slli a2, a0, 2
|
||
|
add a2, a2, s11
|
||
|
addi a3, a0, 1
|
||
|
li a6, 32
|
||
|
li a5, 1
|
||
|
lui a0, 128
|
||
|
addiw a0, a0, 1
|
||
|
slli a0, a0, 13
|
||
|
addi s0, a0, 1536
|
||
|
lui a4, %hi(pos)
|
||
|
.LBB2_120:
|
||
|
lw a0, 0(a2)
|
||
|
bltu a6, a0, .LBB2_123
|
||
|
sll a0, a5, a0
|
||
|
and a0, a0, s0
|
||
|
beqz a0, .LBB2_123
|
||
|
li a0, 0
|
||
|
sext.w s1, a3
|
||
|
mv a1, a3
|
||
|
sw a3, %lo(pos)(a4)
|
||
|
addi a2, a2, 4
|
||
|
addi a3, a3, 1
|
||
|
bne s1, s10, .LBB2_120
|
||
|
j .LBB2_200
|
||
|
.LBB2_123:
|
||
|
sext.w a0, a1
|
||
|
bge a0, s10, .LBB2_199
|
||
|
slli a0, a0, 2
|
||
|
add a0, a0, s11
|
||
|
lw a0, 0(a0)
|
||
|
li a2, 93
|
||
|
bne a0, a2, .LBB2_199
|
||
|
.LBB2_125:
|
||
|
addiw a0, a1, 1
|
||
|
.LBB2_126:
|
||
|
lui a1, %hi(pos)
|
||
|
sw a0, %lo(pos)(a1)
|
||
|
.LBB2_127:
|
||
|
li a0, 1
|
||
|
j .LBB2_200
|
||
|
.LBB2_128:
|
||
|
mv a1, s10
|
||
|
.LBB2_129:
|
||
|
addiw a1, a1, 1
|
||
|
lui a2, %hi(pos)
|
||
|
sw a1, %lo(pos)(a2)
|
||
|
bge a1, s10, .LBB2_199
|
||
|
li a3, 92
|
||
|
li a4, 34
|
||
|
j .LBB2_133
|
||
|
.LBB2_131:
|
||
|
li a5, 1
|
||
|
.LBB2_132:
|
||
|
li a0, 0
|
||
|
addw a1, a1, a5
|
||
|
sw a1, %lo(pos)(a2)
|
||
|
bge a1, s10, .LBB2_200
|
||
|
.LBB2_133:
|
||
|
slli a0, a1, 2
|
||
|
add a0, a0, s11
|
||
|
lw a0, 0(a0)
|
||
|
li a5, 2
|
||
|
beq a0, a3, .LBB2_132
|
||
|
bne a0, a4, .LBB2_131
|
||
|
addiw a1, a1, 1
|
||
|
lui a6, %hi(pos)
|
||
|
sw a1, %lo(pos)(a6)
|
||
|
bge a1, s10, .LBB2_140
|
||
|
slli a0, a1, 2
|
||
|
add a3, s11, a0
|
||
|
addi a4, a1, 1
|
||
|
li a5, 32
|
||
|
li s0, 1
|
||
|
lui a0, 128
|
||
|
addiw a0, a0, 1
|
||
|
slli a0, a0, 13
|
||
|
addi a2, a0, 1536
|
||
|
.LBB2_137:
|
||
|
lw a0, 0(a3)
|
||
|
bltu a5, a0, .LBB2_140
|
||
|
sll a0, s0, a0
|
||
|
and a0, a0, a2
|
||
|
beqz a0, .LBB2_140
|
||
|
li a0, 0
|
||
|
sext.w s1, a4
|
||
|
mv a1, a4
|
||
|
sw a4, %lo(pos)(a6)
|
||
|
addi a3, a3, 4
|
||
|
addi a4, a4, 1
|
||
|
bne s1, s10, .LBB2_137
|
||
|
j .LBB2_200
|
||
|
.LBB2_140:
|
||
|
sext.w a2, a1
|
||
|
bge a2, s10, .LBB2_199
|
||
|
slli a3, a2, 2
|
||
|
add a0, s11, a3
|
||
|
lw a0, 0(a0)
|
||
|
li a4, 58
|
||
|
bne a0, a4, .LBB2_199
|
||
|
addiw a1, a1, 1
|
||
|
lui a0, %hi(pos)
|
||
|
sw a1, %lo(pos)(a0)
|
||
|
bge a1, s10, .LBB2_147
|
||
|
add a1, a3, s11
|
||
|
addi a1, a1, 4
|
||
|
addi a2, a2, 2
|
||
|
li a3, 32
|
||
|
li a4, 1
|
||
|
lui a5, 128
|
||
|
addiw a5, a5, 1
|
||
|
slli a5, a5, 13
|
||
|
addi a5, a5, 1536
|
||
|
.LBB2_144:
|
||
|
lw s1, 0(a1)
|
||
|
bltu a3, s1, .LBB2_147
|
||
|
sll s1, a4, s1
|
||
|
and s1, s1, a5
|
||
|
beqz s1, .LBB2_147
|
||
|
sext.w s1, a2
|
||
|
sw a2, %lo(pos)(a0)
|
||
|
addi a1, a1, 4
|
||
|
addi a2, a2, 1
|
||
|
bne s1, s10, .LBB2_144
|
||
|
.LBB2_147:
|
||
|
li a0, 0
|
||
|
mv a1, s11
|
||
|
mv a2, s10
|
||
|
call detect_item
|
||
|
beqz a0, .LBB2_199
|
||
|
lui a0, %hi(pos)
|
||
|
lw a1, %lo(pos)(a0)
|
||
|
bge a1, s10, .LBB2_154
|
||
|
slli a2, a1, 2
|
||
|
add a2, a2, s11
|
||
|
addi a3, a1, 1
|
||
|
li a4, 32
|
||
|
li a5, 1
|
||
|
lui s1, 128
|
||
|
addiw s1, s1, 1
|
||
|
slli s1, s1, 13
|
||
|
addi s0, s1, 1536
|
||
|
.LBB2_150:
|
||
|
lw s1, 0(a2)
|
||
|
bltu a4, s1, .LBB2_154
|
||
|
sll s1, a5, s1
|
||
|
and s1, s1, s0
|
||
|
beqz s1, .LBB2_154
|
||
|
sext.w s1, a3
|
||
|
mv a1, a3
|
||
|
sw a3, %lo(pos)(a0)
|
||
|
addi a2, a2, 4
|
||
|
addi a3, a3, 1
|
||
|
bne s1, s10, .LBB2_150
|
||
|
mv a1, s10
|
||
|
.LBB2_154:
|
||
|
sext.w a0, a1
|
||
|
slli a0, a0, 2
|
||
|
add a0, a0, s11
|
||
|
lw a0, 0(a0)
|
||
|
li s2, 44
|
||
|
bne a0, s2, .LBB2_192
|
||
|
addi s3, s11, 4
|
||
|
lui s4, %hi(pos)
|
||
|
li s5, 32
|
||
|
li s6, 1
|
||
|
lui a0, 128
|
||
|
addiw a0, a0, 1
|
||
|
slli a0, a0, 13
|
||
|
addi s7, a0, 1536
|
||
|
li s8, 92
|
||
|
li s9, 34
|
||
|
li s0, 58
|
||
|
.LBB2_156:
|
||
|
addiw a1, a1, 1
|
||
|
sw a1, %lo(pos)(s4)
|
||
|
bge a1, s10, .LBB2_161
|
||
|
slli a0, a1, 2
|
||
|
add a2, s11, a0
|
||
|
addi a3, a1, 1
|
||
|
.LBB2_158:
|
||
|
lw a0, 0(a2)
|
||
|
bltu s5, a0, .LBB2_161
|
||
|
sll a0, s6, a0
|
||
|
and a0, a0, s7
|
||
|
beqz a0, .LBB2_161
|
||
|
li a0, 0
|
||
|
sext.w a4, a3
|
||
|
mv a1, a3
|
||
|
sw a3, %lo(pos)(s4)
|
||
|
addi a2, a2, 4
|
||
|
addi a3, a3, 1
|
||
|
bne a4, s10, .LBB2_158
|
||
|
j .LBB2_200
|
||
|
.LBB2_161:
|
||
|
sext.w a2, a1
|
||
|
bge a2, s10, .LBB2_199
|
||
|
slli a0, a2, 2
|
||
|
add a0, a0, s11
|
||
|
addi a2, a2, 1
|
||
|
.LBB2_163:
|
||
|
lw a3, 0(a0)
|
||
|
bltu s5, a3, .LBB2_167
|
||
|
sll a3, s6, a3
|
||
|
and a3, a3, s7
|
||
|
beqz a3, .LBB2_167
|
||
|
sext.w a3, a2
|
||
|
mv a1, a2
|
||
|
sw a2, %lo(pos)(s4)
|
||
|
addi a0, a0, 4
|
||
|
addi a2, a2, 1
|
||
|
bne a3, s10, .LBB2_163
|
||
|
mv a1, s10
|
||
|
.LBB2_167:
|
||
|
addiw a1, a1, 1
|
||
|
sw a1, %lo(pos)(s4)
|
||
|
blt a1, s10, .LBB2_169
|
||
|
j .LBB2_199
|
||
|
.LBB2_168:
|
||
|
li a0, 0
|
||
|
addw a1, a1, a2
|
||
|
sw a1, %lo(pos)(s4)
|
||
|
bge a1, s10, .LBB2_200
|
||
|
.LBB2_169:
|
||
|
slli a0, a1, 2
|
||
|
add a0, a0, s11
|
||
|
lw a0, 0(a0)
|
||
|
li a2, 2
|
||
|
beq a0, s8, .LBB2_168
|
||
|
beq a0, s9, .LBB2_172
|
||
|
li a2, 1
|
||
|
j .LBB2_168
|
||
|
.LBB2_172:
|
||
|
addiw a1, a1, 1
|
||
|
sw a1, %lo(pos)(s4)
|
||
|
bge a1, s10, .LBB2_177
|
||
|
slli a0, a1, 2
|
||
|
add a2, s11, a0
|
||
|
addi a3, a1, 1
|
||
|
.LBB2_174:
|
||
|
lw a0, 0(a2)
|
||
|
bltu s5, a0, .LBB2_177
|
||
|
sll a0, s6, a0
|
||
|
and a0, a0, s7
|
||
|
beqz a0, .LBB2_177
|
||
|
li a0, 0
|
||
|
sext.w a4, a3
|
||
|
mv a1, a3
|
||
|
sw a3, %lo(pos)(s4)
|
||
|
addi a2, a2, 4
|
||
|
addi a3, a3, 1
|
||
|
bne a4, s10, .LBB2_174
|
||
|
j .LBB2_200
|
||
|
.LBB2_177:
|
||
|
sext.w a2, a1
|
||
|
bge a2, s10, .LBB2_199
|
||
|
slli a0, a2, 2
|
||
|
add a3, s11, a0
|
||
|
lw a3, 0(a3)
|
||
|
bne a3, s0, .LBB2_199
|
||
|
addiw a1, a1, 1
|
||
|
sw a1, %lo(pos)(s4)
|
||
|
bge a1, s10, .LBB2_184
|
||
|
add a0, a0, s3
|
||
|
addi a1, a2, 2
|
||
|
.LBB2_181:
|
||
|
lw a2, 0(a0)
|
||
|
bltu s5, a2, .LBB2_184
|
||
|
sll a2, s6, a2
|
||
|
and a2, a2, s7
|
||
|
beqz a2, .LBB2_184
|
||
|
sext.w a2, a1
|
||
|
sw a1, %lo(pos)(s4)
|
||
|
addi a0, a0, 4
|
||
|
addi a1, a1, 1
|
||
|
bne a2, s10, .LBB2_181
|
||
|
.LBB2_184:
|
||
|
li a0, 0
|
||
|
mv a1, s11
|
||
|
mv a2, s10
|
||
|
call detect_item
|
||
|
beqz a0, .LBB2_199
|
||
|
lw a1, %lo(pos)(s4)
|
||
|
bge a1, s10, .LBB2_191
|
||
|
slli a0, a1, 2
|
||
|
add a0, a0, s11
|
||
|
addi a2, a1, 1
|
||
|
.LBB2_187:
|
||
|
lw a3, 0(a0)
|
||
|
bltu s5, a3, .LBB2_191
|
||
|
sll a3, s6, a3
|
||
|
and a3, a3, s7
|
||
|
beqz a3, .LBB2_191
|
||
|
sext.w a3, a2
|
||
|
mv a1, a2
|
||
|
sw a2, %lo(pos)(s4)
|
||
|
addi a0, a0, 4
|
||
|
addi a2, a2, 1
|
||
|
bne a3, s10, .LBB2_187
|
||
|
mv a1, s10
|
||
|
.LBB2_191:
|
||
|
sext.w a0, a1
|
||
|
slli a0, a0, 2
|
||
|
add a0, a0, s11
|
||
|
lw a0, 0(a0)
|
||
|
beq a0, s2, .LBB2_156
|
||
|
.LBB2_192:
|
||
|
sext.w a0, a1
|
||
|
bge a0, s10, .LBB2_197
|
||
|
slli a2, a0, 2
|
||
|
add a2, a2, s11
|
||
|
addi a3, a0, 1
|
||
|
li a6, 32
|
||
|
li a5, 1
|
||
|
lui a0, 128
|
||
|
addiw a0, a0, 1
|
||
|
slli a0, a0, 13
|
||
|
addi s0, a0, 1536
|
||
|
lui a4, %hi(pos)
|
||
|
.LBB2_194:
|
||
|
lw a0, 0(a2)
|
||
|
bltu a6, a0, .LBB2_197
|
||
|
sll a0, a5, a0
|
||
|
and a0, a0, s0
|
||
|
beqz a0, .LBB2_197
|
||
|
li a0, 0
|
||
|
sext.w s1, a3
|
||
|
mv a1, a3
|
||
|
sw a3, %lo(pos)(a4)
|
||
|
addi a2, a2, 4
|
||
|
addi a3, a3, 1
|
||
|
bne s1, s10, .LBB2_194
|
||
|
j .LBB2_200
|
||
|
.LBB2_197:
|
||
|
sext.w a0, a1
|
||
|
bge a0, s10, .LBB2_199
|
||
|
slli a0, a0, 2
|
||
|
add a0, a0, s11
|
||
|
lw a0, 0(a0)
|
||
|
li a2, 125
|
||
|
beq a0, a2, .LBB2_125
|
||
|
.LBB2_199:
|
||
|
li a0, 0
|
||
|
.LBB2_200:
|
||
|
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
|
||
|
.Lfunc_end2:
|
||
|
.size detect_item, .Lfunc_end2-detect_item
|
||
|
.section .rodata,"a",@progbits
|
||
|
.p2align 2
|
||
|
.LJTI2_0:
|
||
|
.word .LBB2_27
|
||
|
.word .LBB2_53
|
||
|
.word .LBB2_59
|
||
|
.word .LBB2_64
|
||
|
.word .LBB2_69
|
||
|
.word .LBB2_74
|
||
|
.word .LBB2_81
|
||
|
|
||
|
.text
|
||
|
.globl main
|
||
|
.p2align 1
|
||
|
.type main,@function
|
||
|
main:
|
||
|
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
|
||
|
li s1, 0
|
||
|
li s2, 35
|
||
|
beq a0, s2, .LBB3_3
|
||
|
lui a1, %hi(buffer)
|
||
|
addi s0, a1, %lo(buffer)
|
||
|
.LBB3_2:
|
||
|
sw a0, 0(s0)
|
||
|
addi s1, s1, 1
|
||
|
call getch
|
||
|
addi s0, s0, 4
|
||
|
bne a0, s2, .LBB3_2
|
||
|
.LBB3_3:
|
||
|
lui s3, %hi(pos)
|
||
|
lw a1, %lo(pos)(s3)
|
||
|
sext.w s0, s1
|
||
|
bge a1, s0, .LBB3_8
|
||
|
lui a0, %hi(buffer)
|
||
|
addi a0, a0, %lo(buffer)
|
||
|
slli a2, a1, 2
|
||
|
add a0, a0, a2
|
||
|
addi a1, a1, 1
|
||
|
li a2, 32
|
||
|
li a3, 1
|
||
|
lui a4, 128
|
||
|
addiw a4, a4, 1
|
||
|
slli a4, a4, 13
|
||
|
addi a4, a4, 1536
|
||
|
.LBB3_5:
|
||
|
lw a5, 0(a0)
|
||
|
bltu a2, a5, .LBB3_8
|
||
|
sll a5, a3, a5
|
||
|
and a5, a5, a4
|
||
|
beqz a5, .LBB3_8
|
||
|
sext.w a5, a1
|
||
|
sw a1, %lo(pos)(s3)
|
||
|
addi a0, a0, 4
|
||
|
addi a1, a1, 1
|
||
|
bne s0, a5, .LBB3_5
|
||
|
.LBB3_8:
|
||
|
lui a0, %hi(buffer)
|
||
|
addi s2, a0, %lo(buffer)
|
||
|
li a0, 0
|
||
|
mv a1, s2
|
||
|
mv a2, s0
|
||
|
call detect_item
|
||
|
lw a2, %lo(pos)(s3)
|
||
|
bge a2, s0, .LBB3_13
|
||
|
slli a1, a2, 2
|
||
|
add a1, a1, s2
|
||
|
addi a2, a2, 1
|
||
|
li a6, 32
|
||
|
li a4, 1
|
||
|
lui a3, 128
|
||
|
addiw a3, a3, 1
|
||
|
slli a3, a3, 13
|
||
|
addi a5, a3, 1536
|
||
|
lui s1, %hi(pos)
|
||
|
.LBB3_10:
|
||
|
lw a3, 0(a1)
|
||
|
bltu a6, a3, .LBB3_13
|
||
|
sll a3, a4, a3
|
||
|
and a3, a3, a5
|
||
|
beqz a3, .LBB3_13
|
||
|
sext.w a3, a2
|
||
|
sw a2, %lo(pos)(s1)
|
||
|
addi a1, a1, 4
|
||
|
addi a2, a2, 1
|
||
|
bne s0, a3, .LBB3_10
|
||
|
.LBB3_13:
|
||
|
li s0, 0
|
||
|
bnez a0, .LBB3_15
|
||
|
li a0, 110
|
||
|
call putch
|
||
|
li a0, 111
|
||
|
call putch
|
||
|
li a0, 116
|
||
|
call putch
|
||
|
li a0, 32
|
||
|
call putch
|
||
|
li s0, 1
|
||
|
.LBB3_15:
|
||
|
li a0, 111
|
||
|
call putch
|
||
|
li a0, 107
|
||
|
call putch
|
||
|
li a0, 10
|
||
|
call putch
|
||
|
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_end3:
|
||
|
.size main, .Lfunc_end3-main
|
||
|
|
||
|
.type pos,@object
|
||
|
.section .sbss,"aw",@nobits
|
||
|
.globl pos
|
||
|
.p2align 2
|
||
|
pos:
|
||
|
.word 0
|
||
|
.size pos, 4
|
||
|
|
||
|
.type buffer,@object
|
||
|
.bss
|
||
|
.globl buffer
|
||
|
.p2align 2
|
||
|
buffer:
|
||
|
.zero 200000000
|
||
|
.size buffer, 200000000
|
||
|
|
||
|
.type _sysy_start,@object
|
||
|
.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
|
||
|
.addrsig_sym buffer
|