; LLVM IR from musetronstar/tagd :: tagl/src (lemon)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.lemon = type { ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, ptr }
%struct.symbol = type { ptr, i32, i32, ptr, ptr, i32, i32, ptr, i32, i32, ptr, i32, ptr, i32, i32, i32, ptr }
%struct.rule = type { ptr, ptr, i32, i32, i32, ptr, ptr, i32, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, ptr, ptr }
%struct.axset = type { ptr, i32, i32, i32 }
%struct.state = type { ptr, ptr, i32, ptr, i32, i32, i32, i32, i32, ptr, i32 }
%struct.action = type { ptr, i32, %union.anon, ptr, ptr, ptr }
%union.anon = type { ptr }
%struct.acttab = type { i32, i32, ptr, ptr, i32, i32, i32, i32, i32, i32, i32 }
%struct.lookahead_action = type { i32, i32 }

@stderr = external global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.164 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.171 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.172 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.173 = external hidden unnamed_addr constant [178 x i8], align 1
@.str.174 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.175 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.176 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.177 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.178 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.179 = external hidden unnamed_addr constant [219 x i8], align 1
@.str.180 = external hidden unnamed_addr constant [13 x i8], align 1
@__PRETTY_FUNCTION__.ReportTable = external hidden unnamed_addr constant [43 x i8], align 1
@.str.181 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.182 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.183 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.184 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.185 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.186 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.187 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.188 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.189 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.190 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.191 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.192 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.193 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.194 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.195 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.196 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.197 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.198 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.199 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.200 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.201 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.202 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.203 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.204 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.205 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.206 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.207 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.208 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.209 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.210 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.211 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.212 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.213 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.214 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.215 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.216 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.217 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.218 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.219 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.220 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.221 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.222 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.223 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.224 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.225 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.226 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.227 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.228 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.229 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.230 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.231 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.232 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.233 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.234 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.235 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.236 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.237 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.238 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.239 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.240 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.241 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.242 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.243 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.244 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.245 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.246 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.247 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.248 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.249 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.250 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.251 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.252 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.253 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.254 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.255 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.256 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.257 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.258 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.259 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.260 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.261 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.262 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.263 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.264 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.265 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.266 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.267 = external hidden unnamed_addr constant [43 x i8], align 1

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: nounwind uwtable
declare dso_local void @acttab_free(ptr noundef) #1

; Function Attrs: nounwind
declare void @free(ptr noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local ptr @acttab_alloc(i32 noundef, i32 noundef) #1

; Function Attrs: nounwind allocsize(0,1)
declare noalias ptr @calloc(i64 noundef, i64 noundef) #3

; Function Attrs: nounwind
declare i32 @fprintf(ptr noundef, ptr noundef, ...) #2

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local void @acttab_action(ptr noundef, i32 noundef, i32 noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @acttab_insert(ptr noundef, i32 noundef) #1

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @acttab_action_size(ptr noundef) #1

declare void @qsort(ptr noundef, i64 noundef, i64 noundef, ptr noundef) #5

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strcmp(ptr noundef, ptr noundef) #6

; Function Attrs: nounwind willreturn memory(none)
declare ptr @__ctype_b_loc() #7

; Function Attrs: nounwind uwtable
define dso_local void @ReportTable(ptr noundef %0, i32 noundef %1, i32 noundef %2) #1 {
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca [1000 x i8], align 16
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca ptr, align 8
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca ptr, align 8
  %29 = alloca i32, align 4
  %30 = alloca ptr, align 8
  %31 = alloca i32, align 4
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca ptr, align 8
  %42 = alloca i32, align 4
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca i32, align 4
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store i32 %1, ptr %5, align 4, !tbaa !9
  store i32 %2, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.start.p0(i64 1000, ptr %10) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  %50 = load ptr, ptr %4, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.lemon, ptr %50, i32 0, i32 3
  %52 = load i32, ptr %51, align 8, !tbaa !11
  %53 = load ptr, ptr %4, align 8, !tbaa !5
  %54 = getelementptr inbounds %struct.lemon, ptr %53, i32 0, i32 9
  store i32 %52, ptr %54, align 8, !tbaa !13
  %55 = load ptr, ptr %4, align 8, !tbaa !5
  %56 = getelementptr inbounds %struct.lemon, ptr %55, i32 0, i32 9
  %57 = load i32, ptr %56, align 8, !tbaa !13
  %58 = load ptr, ptr %4, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.lemon, ptr %58, i32 0, i32 5
  %60 = load i32, ptr %59, align 8, !tbaa !14
  %61 = add nsw i32 %57, %60
  %62 = load ptr, ptr %4, align 8, !tbaa !5
  %63 = getelementptr inbounds %struct.lemon, ptr %62, i32 0, i32 10
  store i32 %61, ptr %63, align 4, !tbaa !15
  %64 = load ptr, ptr %4, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.lemon, ptr %64, i32 0, i32 10
  %66 = load i32, ptr %65, align 4, !tbaa !15
  %67 = add nsw i32 %66, 1
  %68 = load ptr, ptr %4, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.lemon, ptr %68, i32 0, i32 11
  store i32 %67, ptr %69, align 8, !tbaa !16
  %70 = load ptr, ptr %4, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.lemon, ptr %70, i32 0, i32 11
  %72 = load i32, ptr %71, align 8, !tbaa !16
  %73 = add nsw i32 %72, 1
  %74 = load ptr, ptr %4, align 8, !tbaa !5
  %75 = getelementptr inbounds %struct.lemon, ptr %74, i32 0, i32 12
  store i32 %73, ptr %75, align 4, !tbaa !17
  %76 = load ptr, ptr %4, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.lemon, ptr %76, i32 0, i32 12
  %78 = load i32, ptr %77, align 4, !tbaa !17
  %79 = add nsw i32 %78, 1
  %80 = load ptr, ptr %4, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.lemon, ptr %80, i32 0, i32 13
  store i32 %79, ptr %81, align 8, !tbaa !18
  %82 = load ptr, ptr %4, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.lemon, ptr %82, i32 0, i32 13
  %84 = load i32, ptr %83, align 8, !tbaa !18
  %85 = load ptr, ptr %4, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct.lemon, ptr %85, i32 0, i32 5
  %87 = load i32, ptr %86, align 8, !tbaa !14
  %88 = add nsw i32 %84, %87
  %89 = load ptr, ptr %4, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.lemon, ptr %89, i32 0, i32 14
  store i32 %88, ptr %90, align 4, !tbaa !19
  %91 = load ptr, ptr %4, align 8, !tbaa !5
  %92 = call ptr @tplt_open(ptr noundef %91)
  store ptr %92, ptr %8, align 8, !tbaa !5
  %93 = load ptr, ptr %8, align 8, !tbaa !5
  %94 = icmp eq ptr %93, null
  br i1 %94, label %95, label %96

95:                                               ; preds = %3
  store i32 1, ptr %29, align 4
  br label %2547

96:                                               ; preds = %3
  %97 = load ptr, ptr %4, align 8, !tbaa !5
  %98 = call ptr @file_open(ptr noundef %97, ptr noundef @.str.171, ptr noundef @.str.111)
  store ptr %98, ptr %7, align 8, !tbaa !5
  %99 = load ptr, ptr %7, align 8, !tbaa !5
  %100 = icmp eq ptr %99, null
  br i1 %100, label %101, label %104

101:                                              ; preds = %96
  %102 = load ptr, ptr %8, align 8, !tbaa !5
  %103 = call i32 @fclose(ptr noundef %102)
  store i32 1, ptr %29, align 4
  br label %2547

104:                                              ; preds = %96
  %105 = load i32, ptr %6, align 4, !tbaa !9
  %106 = icmp eq i32 %105, 0
  br i1 %106, label %107, label %108

107:                                              ; preds = %104
  store ptr null, ptr %9, align 8, !tbaa !5
  br label %275

108:                                              ; preds = %104
  %109 = load ptr, ptr %4, align 8, !tbaa !5
  %110 = call ptr @file_open(ptr noundef %109, ptr noundef @.str.172, ptr noundef @.str.111)
  store ptr %110, ptr %9, align 8, !tbaa !5
  %111 = load ptr, ptr %9, align 8, !tbaa !5
  %112 = icmp eq ptr %111, null
  br i1 %112, label %113, label %118

113:                                              ; preds = %108
  %114 = load ptr, ptr %8, align 8, !tbaa !5
  %115 = call i32 @fclose(ptr noundef %114)
  %116 = load ptr, ptr %7, align 8, !tbaa !5
  %117 = call i32 @fclose(ptr noundef %116)
  store i32 1, ptr %29, align 4
  br label %2547

118:                                              ; preds = %108
  %119 = load ptr, ptr %9, align 8, !tbaa !5
  %120 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %119, ptr noundef @.str.173) #8
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %121

121:                                              ; preds = %175, %118
  %122 = load i32, ptr %16, align 4, !tbaa !9
  %123 = load ptr, ptr %4, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.lemon, ptr %123, i32 0, i32 7
  %125 = load i32, ptr %124, align 8, !tbaa !20
  %126 = icmp slt i32 %122, %125
  br i1 %126, label %127, label %178

127:                                              ; preds = %121
  %128 = load ptr, ptr %9, align 8, !tbaa !5
  %129 = load i32, ptr %16, align 4, !tbaa !9
  %130 = load ptr, ptr %4, align 8, !tbaa !5
  %131 = getelementptr inbounds %struct.lemon, ptr %130, i32 0, i32 15
  %132 = load ptr, ptr %131, align 8, !tbaa !21
  %133 = load i32, ptr %16, align 4, !tbaa !9
  %134 = sext i32 %133 to i64
  %135 = getelementptr inbounds ptr, ptr %132, i64 %134
  %136 = load ptr, ptr %135, align 8, !tbaa !5
  %137 = getelementptr inbounds %struct.symbol, ptr %136, i32 0, i32 0
  %138 = load ptr, ptr %137, align 8, !tbaa !22
  %139 = load i32, ptr %16, align 4, !tbaa !9
  %140 = load ptr, ptr %4, align 8, !tbaa !5
  %141 = getelementptr inbounds %struct.lemon, ptr %140, i32 0, i32 8
  %142 = load i32, ptr %141, align 4, !tbaa !24
  %143 = icmp slt i32 %139, %142
  %144 = zext i1 %143 to i64
  %145 = select i1 %143, ptr @.str.175, ptr @.str.176
  %146 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %128, ptr noundef @.str.174, i32 noundef %129, ptr noundef %138, ptr noundef %145) #8
  %147 = load ptr, ptr %4, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.lemon, ptr %147, i32 0, i32 15
  %149 = load ptr, ptr %148, align 8, !tbaa !21
  %150 = load i32, ptr %16, align 4, !tbaa !9
  %151 = sext i32 %150 to i64
  %152 = getelementptr inbounds ptr, ptr %149, i64 %151
  %153 = load ptr, ptr %152, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.symbol, ptr %153, i32 0, i32 4
  %155 = load ptr, ptr %154, align 8, !tbaa !25
  %156 = icmp ne ptr %155, null
  br i1 %156, label %157, label %171

157:                                              ; preds = %127
  %158 = load ptr, ptr %9, align 8, !tbaa !5
  %159 = load ptr, ptr %4, align 8, !tbaa !5
  %160 = getelementptr inbounds %struct.lemon, ptr %159, i32 0, i32 15
  %161 = load ptr, ptr %160, align 8, !tbaa !21
  %162 = load i32, ptr %16, align 4, !tbaa !9
  %163 = sext i32 %162 to i64
  %164 = getelementptr inbounds ptr, ptr %161, i64 %163
  %165 = load ptr, ptr %164, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct.symbol, ptr %165, i32 0, i32 4
  %167 = load ptr, ptr %166, align 8, !tbaa !25
  %168 = getelementptr inbounds %struct.symbol, ptr %167, i32 0, i32 1
  %169 = load i32, ptr %168, align 8, !tbaa !26
  %170 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %158, ptr noundef @.str.177, i32 noundef %169) #8
  br label %174

171:                                              ; preds = %127
  %172 = load ptr, ptr %9, align 8, !tbaa !5
  %173 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %172, ptr noundef @.str.178) #8
  br label %174

174:                                              ; preds = %171, %157
  br label %175

175:                                              ; preds = %174
  %176 = load i32, ptr %16, align 4, !tbaa !9
  %177 = add nsw i32 %176, 1
  store i32 %177, ptr %16, align 4, !tbaa !9
  br label %121, !llvm.loop !27

178:                                              ; preds = %121
  %179 = load ptr, ptr %9, align 8, !tbaa !5
  %180 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %179, ptr noundef @.str.179) #8
  store i32 0, ptr %16, align 4, !tbaa !9
  %181 = load ptr, ptr %4, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.lemon, ptr %181, i32 0, i32 1
  %183 = load ptr, ptr %182, align 8, !tbaa !29
  store ptr %183, ptr %14, align 8, !tbaa !5
  br label %184

184:                                              ; preds = %266, %178
  %185 = load ptr, ptr %14, align 8, !tbaa !5
  %186 = icmp ne ptr %185, null
  br i1 %186, label %187, label %272

187:                                              ; preds = %184
  %188 = load i32, ptr %16, align 4, !tbaa !9
  %189 = load ptr, ptr %14, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.rule, ptr %189, i32 0, i32 13
  %191 = load i32, ptr %190, align 4, !tbaa !30
  %192 = icmp eq i32 %188, %191
  br i1 %192, label %193, label %194

193:                                              ; preds = %187
  br label %195

194:                                              ; preds = %187
  call void @__assert_fail(ptr noundef @.str.180, ptr noundef @.str.3, i32 noundef 4235, ptr noundef @__PRETTY_FUNCTION__.ReportTable) #9
  unreachable

195:                                              ; preds = %193
  %196 = load ptr, ptr %9, align 8, !tbaa !5
  %197 = load ptr, ptr %14, align 8, !tbaa !5
  %198 = getelementptr inbounds %struct.rule, ptr %197, i32 0, i32 13
  %199 = load i32, ptr %198, align 4, !tbaa !30
  %200 = load ptr, ptr %14, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.rule, ptr %200, i32 0, i32 0
  %202 = load ptr, ptr %201, align 8, !tbaa !32
  %203 = getelementptr inbounds %struct.symbol, ptr %202, i32 0, i32 1
  %204 = load i32, ptr %203, align 8, !tbaa !26
  %205 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %196, ptr noundef @.str.181, i32 noundef %199, i32 noundef %204) #8
  %206 = load ptr, ptr %9, align 8, !tbaa !5
  %207 = load ptr, ptr %14, align 8, !tbaa !5
  call void @writeRuleText(ptr noundef %206, ptr noundef %207)
  %208 = load ptr, ptr %9, align 8, !tbaa !5
  %209 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %208, ptr noundef @.str.182) #8
  store i32 0, ptr %17, align 4, !tbaa !9
  br label %210

210:                                              ; preds = %262, %195
  %211 = load i32, ptr %17, align 4, !tbaa !9
  %212 = load ptr, ptr %14, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.rule, ptr %212, i32 0, i32 4
  %214 = load i32, ptr %213, align 8, !tbaa !33
  %215 = icmp slt i32 %211, %214
  br i1 %215, label %216, label %265

216:                                              ; preds = %210
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  %217 = load ptr, ptr %14, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.rule, ptr %217, i32 0, i32 5
  %219 = load ptr, ptr %218, align 8, !tbaa !34
  %220 = load i32, ptr %17, align 4, !tbaa !9
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds ptr, ptr %219, i64 %221
  %223 = load ptr, ptr %222, align 8, !tbaa !5
  store ptr %223, ptr %30, align 8, !tbaa !5
  %224 = load ptr, ptr %30, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.symbol, ptr %224, i32 0, i32 2
  %226 = load i32, ptr %225, align 4, !tbaa !35
  %227 = icmp ne i32 %226, 2
  br i1 %227, label %228, label %236

228:                                              ; preds = %216
  %229 = load ptr, ptr %9, align 8, !tbaa !5
  %230 = load i32, ptr %16, align 4, !tbaa !9
  %231 = load i32, ptr %17, align 4, !tbaa !9
  %232 = load ptr, ptr %30, align 8, !tbaa !5
  %233 = getelementptr inbounds %struct.symbol, ptr %232, i32 0, i32 1
  %234 = load i32, ptr %233, align 8, !tbaa !26
  %235 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %229, ptr noundef @.str.183, i32 noundef %230, i32 noundef %231, i32 noundef %234) #8
  br label %261

236:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #8
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %237

237:                                              ; preds = %257, %236
  %238 = load i32, ptr %31, align 4, !tbaa !9
  %239 = load ptr, ptr %30, align 8, !tbaa !5
  %240 = getelementptr inbounds %struct.symbol, ptr %239, i32 0, i32 15
  %241 = load i32, ptr %240, align 8, !tbaa !36
  %242 = icmp slt i32 %238, %241
  br i1 %242, label %243, label %260

243:                                              ; preds = %237
  %244 = load ptr, ptr %9, align 8, !tbaa !5
  %245 = load i32, ptr %16, align 4, !tbaa !9
  %246 = load i32, ptr %17, align 4, !tbaa !9
  %247 = load ptr, ptr %30, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.symbol, ptr %247, i32 0, i32 16
  %249 = load ptr, ptr %248, align 8, !tbaa !37
  %250 = load i32, ptr %31, align 4, !tbaa !9
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds ptr, ptr %249, i64 %251
  %253 = load ptr, ptr %252, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.symbol, ptr %253, i32 0, i32 1
  %255 = load i32, ptr %254, align 8, !tbaa !26
  %256 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %244, ptr noundef @.str.183, i32 noundef %245, i32 noundef %246, i32 noundef %255) #8
  br label %257

257:                                              ; preds = %243
  %258 = load i32, ptr %31, align 4, !tbaa !9
  %259 = add nsw i32 %258, 1
  store i32 %259, ptr %31, align 4, !tbaa !9
  br label %237, !llvm.loop !38

260:                                              ; preds = %237
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  br label %261

261:                                              ; preds = %260, %228
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  br label %262

262:                                              ; preds = %261
  %263 = load i32, ptr %17, align 4, !tbaa !9
  %264 = add nsw i32 %263, 1
  store i32 %264, ptr %17, align 4, !tbaa !9
  br label %210, !llvm.loop !39

265:                                              ; preds = %210
  br label %266

266:                                              ; preds = %265
  %267 = load ptr, ptr %14, align 8, !tbaa !5
  %268 = getelementptr inbounds %struct.rule, ptr %267, i32 0, i32 20
  %269 = load ptr, ptr %268, align 8, !tbaa !40
  store ptr %269, ptr %14, align 8, !tbaa !5
  %270 = load i32, ptr %16, align 4, !tbaa !9
  %271 = add nsw i32 %270, 1
  store i32 %271, ptr %16, align 4, !tbaa !9
  br label %184, !llvm.loop !41

272:                                              ; preds = %184
  %273 = load ptr, ptr %9, align 8, !tbaa !5
  %274 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %273, ptr noundef @.str.184) #8
  br label %275

275:                                              ; preds = %272, %107
  store i32 1, ptr %11, align 4, !tbaa !9
  %276 = load ptr, ptr %4, align 8, !tbaa !5
  %277 = getelementptr inbounds %struct.lemon, ptr %276, i32 0, i32 19
  %278 = load ptr, ptr %277, align 8, !tbaa !42
  %279 = load ptr, ptr %8, align 8, !tbaa !5
  %280 = load ptr, ptr %7, align 8, !tbaa !5
  call void @tplt_xfer(ptr noundef %278, ptr noundef %279, ptr noundef %280, ptr noundef %11)
  %281 = load ptr, ptr %7, align 8, !tbaa !5
  %282 = load ptr, ptr %4, align 8, !tbaa !5
  %283 = load ptr, ptr %4, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.lemon, ptr %283, i32 0, i32 26
  %285 = load ptr, ptr %284, align 8, !tbaa !43
  call void @tplt_print(ptr noundef %281, ptr noundef %282, ptr noundef %285, ptr noundef %11)
  %286 = load i32, ptr %5, align 4, !tbaa !9
  %287 = icmp ne i32 %286, 0
  br i1 %287, label %288, label %297

288:                                              ; preds = %275
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  %289 = load ptr, ptr %4, align 8, !tbaa !5
  %290 = call ptr @file_makename(ptr noundef %289, ptr noundef @.str.185)
  store ptr %290, ptr %32, align 8, !tbaa !5
  %291 = load ptr, ptr %7, align 8, !tbaa !5
  %292 = load ptr, ptr %32, align 8, !tbaa !5
  %293 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %291, ptr noundef @.str.186, ptr noundef %292) #8
  %294 = load i32, ptr %11, align 4, !tbaa !9
  %295 = add nsw i32 %294, 1
  store i32 %295, ptr %11, align 4, !tbaa !9
  %296 = load ptr, ptr %32, align 8, !tbaa !5
  call void @free(ptr noundef %296) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  br label %297

297:                                              ; preds = %288, %275
  %298 = load ptr, ptr %4, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.lemon, ptr %298, i32 0, i32 19
  %300 = load ptr, ptr %299, align 8, !tbaa !42
  %301 = load ptr, ptr %8, align 8, !tbaa !5
  %302 = load ptr, ptr %7, align 8, !tbaa !5
  call void @tplt_xfer(ptr noundef %300, ptr noundef %301, ptr noundef %302, ptr noundef %11)
  %303 = load i32, ptr %5, align 4, !tbaa !9
  %304 = icmp ne i32 %303, 0
  br i1 %304, label %305, label %350

305:                                              ; preds = %297
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  %306 = load ptr, ptr %7, align 8, !tbaa !5
  %307 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %306, ptr noundef @.str.161) #8
  %308 = load i32, ptr %11, align 4, !tbaa !9
  %309 = add nsw i32 %308, 1
  store i32 %309, ptr %11, align 4, !tbaa !9
  %310 = load ptr, ptr %4, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.lemon, ptr %310, i32 0, i32 36
  %312 = load ptr, ptr %311, align 8, !tbaa !44
  %313 = icmp ne ptr %312, null
  br i1 %313, label %314, label %318

314:                                              ; preds = %305
  %315 = load ptr, ptr %4, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.lemon, ptr %315, i32 0, i32 36
  %317 = load ptr, ptr %316, align 8, !tbaa !44
  store ptr %317, ptr %33, align 8, !tbaa !5
  br label %319

318:                                              ; preds = %305
  store ptr @.str.75, ptr %33, align 8, !tbaa !5
  br label %319

319:                                              ; preds = %318, %314
  store i32 1, ptr %16, align 4, !tbaa !9
  br label %320

320:                                              ; preds = %342, %319
  %321 = load i32, ptr %16, align 4, !tbaa !9
  %322 = load ptr, ptr %4, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.lemon, ptr %322, i32 0, i32 8
  %324 = load i32, ptr %323, align 4, !tbaa !24
  %325 = icmp slt i32 %321, %324
  br i1 %325, label %326, label %345

326:                                              ; preds = %320
  %327 = load ptr, ptr %7, align 8, !tbaa !5
  %328 = load ptr, ptr %33, align 8, !tbaa !5
  %329 = load ptr, ptr %4, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.lemon, ptr %329, i32 0, i32 15
  %331 = load ptr, ptr %330, align 8, !tbaa !21
  %332 = load i32, ptr %16, align 4, !tbaa !9
  %333 = sext i32 %332 to i64
  %334 = getelementptr inbounds ptr, ptr %331, i64 %333
  %335 = load ptr, ptr %334, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.symbol, ptr %335, i32 0, i32 0
  %337 = load ptr, ptr %336, align 8, !tbaa !22
  %338 = load i32, ptr %16, align 4, !tbaa !9
  %339 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %327, ptr noundef @.str.187, ptr noundef %328, ptr noundef %337, i32 noundef %338) #8
  %340 = load i32, ptr %11, align 4, !tbaa !9
  %341 = add nsw i32 %340, 1
  store i32 %341, ptr %11, align 4, !tbaa !9
  br label %342

342:                                              ; preds = %326
  %343 = load i32, ptr %16, align 4, !tbaa !9
  %344 = add nsw i32 %343, 1
  store i32 %344, ptr %16, align 4, !tbaa !9
  br label %320, !llvm.loop !45

345:                                              ; preds = %320
  %346 = load ptr, ptr %7, align 8, !tbaa !5
  %347 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %346, ptr noundef @.str.164) #8
  %348 = load i32, ptr %11, align 4, !tbaa !9
  %349 = add nsw i32 %348, 1
  store i32 %349, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  br label %350

350:                                              ; preds = %345, %297
  %351 = load ptr, ptr %4, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.lemon, ptr %351, i32 0, i32 19
  %353 = load ptr, ptr %352, align 8, !tbaa !42
  %354 = load ptr, ptr %8, align 8, !tbaa !5
  %355 = load ptr, ptr %7, align 8, !tbaa !5
  call void @tplt_xfer(ptr noundef %353, ptr noundef %354, ptr noundef %355, ptr noundef %11)
  %356 = load ptr, ptr %7, align 8, !tbaa !5
  %357 = load ptr, ptr %4, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct.lemon, ptr %357, i32 0, i32 7
  %359 = load i32, ptr %358, align 8, !tbaa !20
  %360 = call ptr @minimum_size_type(i32 noundef 0, i32 noundef %359, ptr noundef %22)
  %361 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %356, ptr noundef @.str.188, ptr noundef %360) #8
  %362 = load i32, ptr %11, align 4, !tbaa !9
  %363 = add nsw i32 %362, 1
  store i32 %363, ptr %11, align 4, !tbaa !9
  %364 = load ptr, ptr %7, align 8, !tbaa !5
  %365 = load ptr, ptr %4, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.lemon, ptr %365, i32 0, i32 7
  %367 = load i32, ptr %366, align 8, !tbaa !20
  %368 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %364, ptr noundef @.str.189, i32 noundef %367) #8
  %369 = load i32, ptr %11, align 4, !tbaa !9
  %370 = add nsw i32 %369, 1
  store i32 %370, ptr %11, align 4, !tbaa !9
  %371 = load ptr, ptr %7, align 8, !tbaa !5
  %372 = load ptr, ptr %4, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.lemon, ptr %372, i32 0, i32 14
  %374 = load i32, ptr %373, align 4, !tbaa !19
  %375 = call ptr @minimum_size_type(i32 noundef 0, i32 noundef %374, ptr noundef %21)
  %376 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %371, ptr noundef @.str.190, ptr noundef %375) #8
  %377 = load i32, ptr %11, align 4, !tbaa !9
  %378 = add nsw i32 %377, 1
  store i32 %378, ptr %11, align 4, !tbaa !9
  %379 = load ptr, ptr %4, align 8, !tbaa !5
  %380 = getelementptr inbounds %struct.lemon, ptr %379, i32 0, i32 18
  %381 = load ptr, ptr %380, align 8, !tbaa !46
  %382 = icmp ne ptr %381, null
  br i1 %382, label %383, label %393

383:                                              ; preds = %350
  %384 = load ptr, ptr %7, align 8, !tbaa !5
  %385 = load ptr, ptr %4, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.lemon, ptr %385, i32 0, i32 18
  %387 = load ptr, ptr %386, align 8, !tbaa !46
  %388 = getelementptr inbounds %struct.symbol, ptr %387, i32 0, i32 1
  %389 = load i32, ptr %388, align 8, !tbaa !26
  %390 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %384, ptr noundef @.str.191, i32 noundef %389) #8
  %391 = load i32, ptr %11, align 4, !tbaa !9
  %392 = add nsw i32 %391, 1
  store i32 %392, ptr %11, align 4, !tbaa !9
  br label %393

393:                                              ; preds = %383, %350
  %394 = load ptr, ptr %7, align 8, !tbaa !5
  %395 = load ptr, ptr %4, align 8, !tbaa !5
  %396 = load i32, ptr %5, align 4, !tbaa !9
  call void @print_stack_union(ptr noundef %394, ptr noundef %395, ptr noundef %11, i32 noundef %396)
  %397 = load ptr, ptr %7, align 8, !tbaa !5
  %398 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %397, ptr noundef @.str.192) #8
  %399 = load i32, ptr %11, align 4, !tbaa !9
  %400 = add nsw i32 %399, 1
  store i32 %400, ptr %11, align 4, !tbaa !9
  %401 = load ptr, ptr %4, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.lemon, ptr %401, i32 0, i32 25
  %403 = load ptr, ptr %402, align 8, !tbaa !47
  %404 = icmp ne ptr %403, null
  br i1 %404, label %405, label %413

405:                                              ; preds = %393
  %406 = load ptr, ptr %7, align 8, !tbaa !5
  %407 = load ptr, ptr %4, align 8, !tbaa !5
  %408 = getelementptr inbounds %struct.lemon, ptr %407, i32 0, i32 25
  %409 = load ptr, ptr %408, align 8, !tbaa !47
  %410 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %406, ptr noundef @.str.193, ptr noundef %409) #8
  %411 = load i32, ptr %11, align 4, !tbaa !9
  %412 = add nsw i32 %411, 1
  store i32 %412, ptr %11, align 4, !tbaa !9
  br label %418

413:                                              ; preds = %393
  %414 = load ptr, ptr %7, align 8, !tbaa !5
  %415 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %414, ptr noundef @.str.194) #8
  %416 = load i32, ptr %11, align 4, !tbaa !9
  %417 = add nsw i32 %416, 1
  store i32 %417, ptr %11, align 4, !tbaa !9
  br label %418

418:                                              ; preds = %413, %405
  %419 = load ptr, ptr %7, align 8, !tbaa !5
  %420 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %419, ptr noundef @.str.164) #8
  %421 = load i32, ptr %11, align 4, !tbaa !9
  %422 = add nsw i32 %421, 1
  store i32 %422, ptr %11, align 4, !tbaa !9
  %423 = load i32, ptr %5, align 4, !tbaa !9
  %424 = icmp ne i32 %423, 0
  br i1 %424, label %425, label %430

425:                                              ; preds = %418
  %426 = load ptr, ptr %7, align 8, !tbaa !5
  %427 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %426, ptr noundef @.str.161) #8
  %428 = load i32, ptr %11, align 4, !tbaa !9
  %429 = add nsw i32 %428, 1
  store i32 %429, ptr %11, align 4, !tbaa !9
  br label %430

430:                                              ; preds = %425, %418
  %431 = load ptr, ptr %4, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.lemon, ptr %431, i32 0, i32 19
  %433 = load ptr, ptr %432, align 8, !tbaa !42
  %434 = icmp ne ptr %433, null
  br i1 %434, label %435, label %439

435:                                              ; preds = %430
  %436 = load ptr, ptr %4, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct.lemon, ptr %436, i32 0, i32 19
  %438 = load ptr, ptr %437, align 8, !tbaa !42
  br label %440

439:                                              ; preds = %430
  br label %440

440:                                              ; preds = %439, %435
  %441 = phi ptr [ %438, %435 ], [ @.str.132, %439 ]
  store ptr %441, ptr %23, align 8, !tbaa !5
  %442 = load ptr, ptr %4, align 8, !tbaa !5
  %443 = getelementptr inbounds %struct.lemon, ptr %442, i32 0, i32 20
  %444 = load ptr, ptr %443, align 8, !tbaa !48
  %445 = icmp ne ptr %444, null
  br i1 %445, label %446, label %585

446:                                              ; preds = %440
  %447 = load ptr, ptr %4, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.lemon, ptr %447, i32 0, i32 20
  %449 = load ptr, ptr %448, align 8, !tbaa !48
  %450 = getelementptr inbounds i8, ptr %449, i64 0
  %451 = load i8, ptr %450, align 1, !tbaa !49
  %452 = sext i8 %451 to i32
  %453 = icmp ne i32 %452, 0
  br i1 %453, label %454, label %585

454:                                              ; preds = %446
  %455 = load ptr, ptr %4, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.lemon, ptr %455, i32 0, i32 20
  %457 = load ptr, ptr %456, align 8, !tbaa !48
  %458 = call i64 @strlen(ptr noundef %457) #10
  %459 = trunc i64 %458 to i32
  store i32 %459, ptr %16, align 4, !tbaa !9
  br label %460

460:                                              ; preds = %483, %454
  %461 = load i32, ptr %16, align 4, !tbaa !9
  %462 = icmp sge i32 %461, 1
  br i1 %462, label %463, label %481

463:                                              ; preds = %460
  %464 = call ptr @__ctype_b_loc() #11
  %465 = load ptr, ptr %464, align 8, !tbaa !5
  %466 = load ptr, ptr %4, align 8, !tbaa !5
  %467 = getelementptr inbounds %struct.lemon, ptr %466, i32 0, i32 20
  %468 = load ptr, ptr %467, align 8, !tbaa !48
  %469 = load i32, ptr %16, align 4, !tbaa !9
  %470 = sub nsw i32 %469, 1
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds i8, ptr %468, i64 %471
  %473 = load i8, ptr %472, align 1, !tbaa !49
  %474 = zext i8 %473 to i32
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds i16, ptr %465, i64 %475
  %477 = load i16, ptr %476, align 2, !tbaa !50
  %478 = zext i16 %477 to i32
  %479 = and i32 %478, 8192
  %480 = icmp ne i32 %479, 0
  br label %481

481:                                              ; preds = %463, %460
  %482 = phi i1 [ false, %460 ], [ %480, %463 ]
  br i1 %482, label %483, label %486

483:                                              ; preds = %481
  %484 = load i32, ptr %16, align 4, !tbaa !9
  %485 = add nsw i32 %484, -1
  store i32 %485, ptr %16, align 4, !tbaa !9
  br label %460, !llvm.loop !52

486:                                              ; preds = %481
  br label %487

487:                                              ; preds = %523, %486
  %488 = load i32, ptr %16, align 4, !tbaa !9
  %489 = icmp sge i32 %488, 1
  br i1 %489, label %490, label %521

490:                                              ; preds = %487
  %491 = call ptr @__ctype_b_loc() #11
  %492 = load ptr, ptr %491, align 8, !tbaa !5
  %493 = load ptr, ptr %4, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.lemon, ptr %493, i32 0, i32 20
  %495 = load ptr, ptr %494, align 8, !tbaa !48
  %496 = load i32, ptr %16, align 4, !tbaa !9
  %497 = sub nsw i32 %496, 1
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds i8, ptr %495, i64 %498
  %500 = load i8, ptr %499, align 1, !tbaa !49
  %501 = zext i8 %500 to i32
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds i16, ptr %492, i64 %502
  %504 = load i16, ptr %503, align 2, !tbaa !50
  %505 = zext i16 %504 to i32
  %506 = and i32 %505, 8
  %507 = icmp ne i32 %506, 0
  br i1 %507, label %519, label %508

508:                                              ; preds = %490
  %509 = load ptr, ptr %4, align 8, !tbaa !5
  %510 = getelementptr inbounds %struct.lemon, ptr %509, i32 0, i32 20
  %511 = load ptr, ptr %510, align 8, !tbaa !48
  %512 = load i32, ptr %16, align 4, !tbaa !9
  %513 = sub nsw i32 %512, 1
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds i8, ptr %511, i64 %514
  %516 = load i8, ptr %515, align 1, !tbaa !49
  %517 = sext i8 %516 to i32
  %518 = icmp eq i32 %517, 95
  br label %519

519:                                              ; preds = %508, %490
  %520 = phi i1 [ true, %490 ], [ %518, %508 ]
  br label %521

521:                                              ; preds = %519, %487
  %522 = phi i1 [ false, %487 ], [ %520, %519 ]
  br i1 %522, label %523, label %526

523:                                              ; preds = %521
  %524 = load i32, ptr %16, align 4, !tbaa !9
  %525 = add nsw i32 %524, -1
  store i32 %525, ptr %16, align 4, !tbaa !9
  br label %487, !llvm.loop !53

526:                                              ; preds = %521
  %527 = load ptr, ptr %7, align 8, !tbaa !5
  %528 = load ptr, ptr %23, align 8, !tbaa !5
  %529 = load ptr, ptr %4, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct.lemon, ptr %529, i32 0, i32 20
  %531 = load ptr, ptr %530, align 8, !tbaa !48
  %532 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %527, ptr noundef @.str.195, ptr noundef %528, ptr noundef %531) #8
  %533 = load i32, ptr %11, align 4, !tbaa !9
  %534 = add nsw i32 %533, 1
  store i32 %534, ptr %11, align 4, !tbaa !9
  %535 = load ptr, ptr %7, align 8, !tbaa !5
  %536 = load ptr, ptr %23, align 8, !tbaa !5
  %537 = load ptr, ptr %4, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.lemon, ptr %537, i32 0, i32 20
  %539 = load ptr, ptr %538, align 8, !tbaa !48
  %540 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %535, ptr noundef @.str.196, ptr noundef %536, ptr noundef %539) #8
  %541 = load i32, ptr %11, align 4, !tbaa !9
  %542 = add nsw i32 %541, 1
  store i32 %542, ptr %11, align 4, !tbaa !9
  %543 = load ptr, ptr %7, align 8, !tbaa !5
  %544 = load ptr, ptr %23, align 8, !tbaa !5
  %545 = load ptr, ptr %4, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.lemon, ptr %545, i32 0, i32 20
  %547 = load ptr, ptr %546, align 8, !tbaa !48
  %548 = load i32, ptr %16, align 4, !tbaa !9
  %549 = sext i32 %548 to i64
  %550 = getelementptr inbounds i8, ptr %547, i64 %549
  %551 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %543, ptr noundef @.str.197, ptr noundef %544, ptr noundef %550) #8
  %552 = load i32, ptr %11, align 4, !tbaa !9
  %553 = add nsw i32 %552, 1
  store i32 %553, ptr %11, align 4, !tbaa !9
  %554 = load ptr, ptr %7, align 8, !tbaa !5
  %555 = load ptr, ptr %23, align 8, !tbaa !5
  %556 = load ptr, ptr %4, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.lemon, ptr %556, i32 0, i32 20
  %558 = load ptr, ptr %557, align 8, !tbaa !48
  %559 = load ptr, ptr %4, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.lemon, ptr %559, i32 0, i32 20
  %561 = load ptr, ptr %560, align 8, !tbaa !48
  %562 = load i32, ptr %16, align 4, !tbaa !9
  %563 = sext i32 %562 to i64
  %564 = getelementptr inbounds i8, ptr %561, i64 %563
  %565 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %554, ptr noundef @.str.198, ptr noundef %555, ptr noundef %558, ptr noundef %564) #8
  %566 = load i32, ptr %11, align 4, !tbaa !9
  %567 = add nsw i32 %566, 1
  store i32 %567, ptr %11, align 4, !tbaa !9
  %568 = load ptr, ptr %7, align 8, !tbaa !5
  %569 = load ptr, ptr %23, align 8, !tbaa !5
  %570 = load ptr, ptr %4, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.lemon, ptr %570, i32 0, i32 20
  %572 = load ptr, ptr %571, align 8, !tbaa !48
  %573 = load i32, ptr %16, align 4, !tbaa !9
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds i8, ptr %572, i64 %574
  %576 = load ptr, ptr %4, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.lemon, ptr %576, i32 0, i32 20
  %578 = load ptr, ptr %577, align 8, !tbaa !48
  %579 = load i32, ptr %16, align 4, !tbaa !9
  %580 = sext i32 %579 to i64
  %581 = getelementptr inbounds i8, ptr %578, i64 %580
  %582 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %568, ptr noundef @.str.199, ptr noundef %569, ptr noundef %575, ptr noundef %581) #8
  %583 = load i32, ptr %11, align 4, !tbaa !9
  %584 = add nsw i32 %583, 1
  store i32 %584, ptr %11, align 4, !tbaa !9
  br label %611

585:                                              ; preds = %446, %440
  %586 = load ptr, ptr %7, align 8, !tbaa !5
  %587 = load ptr, ptr %23, align 8, !tbaa !5
  %588 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %586, ptr noundef @.str.200, ptr noundef %587) #8
  %589 = load i32, ptr %11, align 4, !tbaa !9
  %590 = add nsw i32 %589, 1
  store i32 %590, ptr %11, align 4, !tbaa !9
  %591 = load ptr, ptr %7, align 8, !tbaa !5
  %592 = load ptr, ptr %23, align 8, !tbaa !5
  %593 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %591, ptr noundef @.str.201, ptr noundef %592) #8
  %594 = load i32, ptr %11, align 4, !tbaa !9
  %595 = add nsw i32 %594, 1
  store i32 %595, ptr %11, align 4, !tbaa !9
  %596 = load ptr, ptr %7, align 8, !tbaa !5
  %597 = load ptr, ptr %23, align 8, !tbaa !5
  %598 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %596, ptr noundef @.str.202, ptr noundef %597) #8
  %599 = load i32, ptr %11, align 4, !tbaa !9
  %600 = add nsw i32 %599, 1
  store i32 %600, ptr %11, align 4, !tbaa !9
  %601 = load ptr, ptr %7, align 8, !tbaa !5
  %602 = load ptr, ptr %23, align 8, !tbaa !5
  %603 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %601, ptr noundef @.str.203, ptr noundef %602) #8
  %604 = load i32, ptr %11, align 4, !tbaa !9
  %605 = add nsw i32 %604, 1
  store i32 %605, ptr %11, align 4, !tbaa !9
  %606 = load ptr, ptr %7, align 8, !tbaa !5
  %607 = load ptr, ptr %23, align 8, !tbaa !5
  %608 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %606, ptr noundef @.str.204, ptr noundef %607) #8
  %609 = load i32, ptr %11, align 4, !tbaa !9
  %610 = add nsw i32 %609, 1
  store i32 %610, ptr %11, align 4, !tbaa !9
  br label %611

611:                                              ; preds = %585, %526
  %612 = load ptr, ptr %4, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.lemon, ptr %612, i32 0, i32 21
  %614 = load ptr, ptr %613, align 8, !tbaa !54
  %615 = icmp ne ptr %614, null
  br i1 %615, label %616, label %755

616:                                              ; preds = %611
  %617 = load ptr, ptr %4, align 8, !tbaa !5
  %618 = getelementptr inbounds %struct.lemon, ptr %617, i32 0, i32 21
  %619 = load ptr, ptr %618, align 8, !tbaa !54
  %620 = getelementptr inbounds i8, ptr %619, i64 0
  %621 = load i8, ptr %620, align 1, !tbaa !49
  %622 = sext i8 %621 to i32
  %623 = icmp ne i32 %622, 0
  br i1 %623, label %624, label %755

624:                                              ; preds = %616
  %625 = load ptr, ptr %4, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.lemon, ptr %625, i32 0, i32 21
  %627 = load ptr, ptr %626, align 8, !tbaa !54
  %628 = call i64 @strlen(ptr noundef %627) #10
  %629 = trunc i64 %628 to i32
  store i32 %629, ptr %16, align 4, !tbaa !9
  br label %630

630:                                              ; preds = %653, %624
  %631 = load i32, ptr %16, align 4, !tbaa !9
  %632 = icmp sge i32 %631, 1
  br i1 %632, label %633, label %651

633:                                              ; preds = %630
  %634 = call ptr @__ctype_b_loc() #11
  %635 = load ptr, ptr %634, align 8, !tbaa !5
  %636 = load ptr, ptr %4, align 8, !tbaa !5
  %637 = getelementptr inbounds %struct.lemon, ptr %636, i32 0, i32 21
  %638 = load ptr, ptr %637, align 8, !tbaa !54
  %639 = load i32, ptr %16, align 4, !tbaa !9
  %640 = sub nsw i32 %639, 1
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds i8, ptr %638, i64 %641
  %643 = load i8, ptr %642, align 1, !tbaa !49
  %644 = zext i8 %643 to i32
  %645 = sext i32 %644 to i64
  %646 = getelementptr inbounds i16, ptr %635, i64 %645
  %647 = load i16, ptr %646, align 2, !tbaa !50
  %648 = zext i16 %647 to i32
  %649 = and i32 %648, 8192
  %650 = icmp ne i32 %649, 0
  br label %651

651:                                              ; preds = %633, %630
  %652 = phi i1 [ false, %630 ], [ %650, %633 ]
  br i1 %652, label %653, label %656

653:                                              ; preds = %651
  %654 = load i32, ptr %16, align 4, !tbaa !9
  %655 = add nsw i32 %654, -1
  store i32 %655, ptr %16, align 4, !tbaa !9
  br label %630, !llvm.loop !55

656:                                              ; preds = %651
  br label %657

657:                                              ; preds = %693, %656
  %658 = load i32, ptr %16, align 4, !tbaa !9
  %659 = icmp sge i32 %658, 1
  br i1 %659, label %660, label %691

660:                                              ; preds = %657
  %661 = call ptr @__ctype_b_loc() #11
  %662 = load ptr, ptr %661, align 8, !tbaa !5
  %663 = load ptr, ptr %4, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct.lemon, ptr %663, i32 0, i32 21
  %665 = load ptr, ptr %664, align 8, !tbaa !54
  %666 = load i32, ptr %16, align 4, !tbaa !9
  %667 = sub nsw i32 %666, 1
  %668 = sext i32 %667 to i64
  %669 = getelementptr inbounds i8, ptr %665, i64 %668
  %670 = load i8, ptr %669, align 1, !tbaa !49
  %671 = zext i8 %670 to i32
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds i16, ptr %662, i64 %672
  %674 = load i16, ptr %673, align 2, !tbaa !50
  %675 = zext i16 %674 to i32
  %676 = and i32 %675, 8
  %677 = icmp ne i32 %676, 0
  br i1 %677, label %689, label %678

678:                                              ; preds = %660
  %679 = load ptr, ptr %4, align 8, !tbaa !5
  %680 = getelementptr inbounds %struct.lemon, ptr %679, i32 0, i32 21
  %681 = load ptr, ptr %680, align 8, !tbaa !54
  %682 = load i32, ptr %16, align 4, !tbaa !9
  %683 = sub nsw i32 %682, 1
  %684 = sext i32 %683 to i64
  %685 = getelementptr inbounds i8, ptr %681, i64 %684
  %686 = load i8, ptr %685, align 1, !tbaa !49
  %687 = sext i8 %686 to i32
  %688 = icmp eq i32 %687, 95
  br label %689

689:                                              ; preds = %678, %660
  %690 = phi i1 [ true, %660 ], [ %688, %678 ]
  br label %691

691:                                              ; preds = %689, %657
  %692 = phi i1 [ false, %657 ], [ %690, %689 ]
  br i1 %692, label %693, label %696

693:                                              ; preds = %691
  %694 = load i32, ptr %16, align 4, !tbaa !9
  %695 = add nsw i32 %694, -1
  store i32 %695, ptr %16, align 4, !tbaa !9
  br label %657, !llvm.loop !56

696:                                              ; preds = %691
  %697 = load ptr, ptr %7, align 8, !tbaa !5
  %698 = load ptr, ptr %23, align 8, !tbaa !5
  %699 = load ptr, ptr %4, align 8, !tbaa !5
  %700 = getelementptr inbounds %struct.lemon, ptr %699, i32 0, i32 21
  %701 = load ptr, ptr %700, align 8, !tbaa !54
  %702 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %697, ptr noundef @.str.205, ptr noundef %698, ptr noundef %701) #8
  %703 = load i32, ptr %11, align 4, !tbaa !9
  %704 = add nsw i32 %703, 1
  store i32 %704, ptr %11, align 4, !tbaa !9
  %705 = load ptr, ptr %7, align 8, !tbaa !5
  %706 = load ptr, ptr %23, align 8, !tbaa !5
  %707 = load ptr, ptr %4, align 8, !tbaa !5
  %708 = getelementptr inbounds %struct.lemon, ptr %707, i32 0, i32 21
  %709 = load ptr, ptr %708, align 8, !tbaa !54
  %710 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %705, ptr noundef @.str.206, ptr noundef %706, ptr noundef %709) #8
  %711 = load i32, ptr %11, align 4, !tbaa !9
  %712 = add nsw i32 %711, 1
  store i32 %712, ptr %11, align 4, !tbaa !9
  %713 = load ptr, ptr %7, align 8, !tbaa !5
  %714 = load ptr, ptr %23, align 8, !tbaa !5
  %715 = load ptr, ptr %4, align 8, !tbaa !5
  %716 = getelementptr inbounds %struct.lemon, ptr %715, i32 0, i32 21
  %717 = load ptr, ptr %716, align 8, !tbaa !54
  %718 = load i32, ptr %16, align 4, !tbaa !9
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds i8, ptr %717, i64 %719
  %721 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %713, ptr noundef @.str.207, ptr noundef %714, ptr noundef %720) #8
  %722 = load i32, ptr %11, align 4, !tbaa !9
  %723 = add nsw i32 %722, 1
  store i32 %723, ptr %11, align 4, !tbaa !9
  %724 = load ptr, ptr %7, align 8, !tbaa !5
  %725 = load ptr, ptr %23, align 8, !tbaa !5
  %726 = load ptr, ptr %4, align 8, !tbaa !5
  %727 = getelementptr inbounds %struct.lemon, ptr %726, i32 0, i32 21
  %728 = load ptr, ptr %727, align 8, !tbaa !54
  %729 = load ptr, ptr %4, align 8, !tbaa !5
  %730 = getelementptr inbounds %struct.lemon, ptr %729, i32 0, i32 21
  %731 = load ptr, ptr %730, align 8, !tbaa !54
  %732 = load i32, ptr %16, align 4, !tbaa !9
  %733 = sext i32 %732 to i64
  %734 = getelementptr inbounds i8, ptr %731, i64 %733
  %735 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %724, ptr noundef @.str.208, ptr noundef %725, ptr noundef %728, ptr noundef %734) #8
  %736 = load i32, ptr %11, align 4, !tbaa !9
  %737 = add nsw i32 %736, 1
  store i32 %737, ptr %11, align 4, !tbaa !9
  %738 = load ptr, ptr %7, align 8, !tbaa !5
  %739 = load ptr, ptr %23, align 8, !tbaa !5
  %740 = load ptr, ptr %4, align 8, !tbaa !5
  %741 = getelementptr inbounds %struct.lemon, ptr %740, i32 0, i32 21
  %742 = load ptr, ptr %741, align 8, !tbaa !54
  %743 = load i32, ptr %16, align 4, !tbaa !9
  %744 = sext i32 %743 to i64
  %745 = getelementptr inbounds i8, ptr %742, i64 %744
  %746 = load ptr, ptr %4, align 8, !tbaa !5
  %747 = getelementptr inbounds %struct.lemon, ptr %746, i32 0, i32 21
  %748 = load ptr, ptr %747, align 8, !tbaa !54
  %749 = load i32, ptr %16, align 4, !tbaa !9
  %750 = sext i32 %749 to i64
  %751 = getelementptr inbounds i8, ptr %748, i64 %750
  %752 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %738, ptr noundef @.str.209, ptr noundef %739, ptr noundef %745, ptr noundef %751) #8
  %753 = load i32, ptr %11, align 4, !tbaa !9
  %754 = add nsw i32 %753, 1
  store i32 %754, ptr %11, align 4, !tbaa !9
  br label %781

755:                                              ; preds = %616, %611
  %756 = load ptr, ptr %7, align 8, !tbaa !5
  %757 = load ptr, ptr %23, align 8, !tbaa !5
  %758 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %756, ptr noundef @.str.210, ptr noundef %757) #8
  %759 = load i32, ptr %11, align 4, !tbaa !9
  %760 = add nsw i32 %759, 1
  store i32 %760, ptr %11, align 4, !tbaa !9
  %761 = load ptr, ptr %7, align 8, !tbaa !5
  %762 = load ptr, ptr %23, align 8, !tbaa !5
  %763 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %761, ptr noundef @.str.211, ptr noundef %762) #8
  %764 = load i32, ptr %11, align 4, !tbaa !9
  %765 = add nsw i32 %764, 1
  store i32 %765, ptr %11, align 4, !tbaa !9
  %766 = load ptr, ptr %7, align 8, !tbaa !5
  %767 = load ptr, ptr %23, align 8, !tbaa !5
  %768 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %766, ptr noundef @.str.212, ptr noundef %767) #8
  %769 = load i32, ptr %11, align 4, !tbaa !9
  %770 = add nsw i32 %769, 1
  store i32 %770, ptr %11, align 4, !tbaa !9
  %771 = load ptr, ptr %7, align 8, !tbaa !5
  %772 = load ptr, ptr %23, align 8, !tbaa !5
  %773 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %771, ptr noundef @.str.213, ptr noundef %772) #8
  %774 = load i32, ptr %11, align 4, !tbaa !9
  %775 = add nsw i32 %774, 1
  store i32 %775, ptr %11, align 4, !tbaa !9
  %776 = load ptr, ptr %7, align 8, !tbaa !5
  %777 = load ptr, ptr %23, align 8, !tbaa !5
  %778 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %776, ptr noundef @.str.214, ptr noundef %777) #8
  %779 = load i32, ptr %11, align 4, !tbaa !9
  %780 = add nsw i32 %779, 1
  store i32 %780, ptr %11, align 4, !tbaa !9
  br label %781

781:                                              ; preds = %755, %696
  %782 = load i32, ptr %5, align 4, !tbaa !9
  %783 = icmp ne i32 %782, 0
  br i1 %783, label %784, label %789

784:                                              ; preds = %781
  %785 = load ptr, ptr %7, align 8, !tbaa !5
  %786 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %785, ptr noundef @.str.164) #8
  %787 = load i32, ptr %11, align 4, !tbaa !9
  %788 = add nsw i32 %787, 1
  store i32 %788, ptr %11, align 4, !tbaa !9
  br label %789

789:                                              ; preds = %784, %781
  %790 = load ptr, ptr %4, align 8, !tbaa !5
  %791 = getelementptr inbounds %struct.lemon, ptr %790, i32 0, i32 17
  %792 = load ptr, ptr %791, align 8, !tbaa !57
  %793 = icmp ne ptr %792, null
  br i1 %793, label %794, label %820

794:                                              ; preds = %789
  %795 = load ptr, ptr %4, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.lemon, ptr %795, i32 0, i32 17
  %797 = load ptr, ptr %796, align 8, !tbaa !57
  %798 = getelementptr inbounds %struct.symbol, ptr %797, i32 0, i32 9
  %799 = load i32, ptr %798, align 4, !tbaa !58
  %800 = icmp ne i32 %799, 0
  br i1 %800, label %801, label %820

801:                                              ; preds = %794
  %802 = load ptr, ptr %7, align 8, !tbaa !5
  %803 = load ptr, ptr %4, align 8, !tbaa !5
  %804 = getelementptr inbounds %struct.lemon, ptr %803, i32 0, i32 17
  %805 = load ptr, ptr %804, align 8, !tbaa !57
  %806 = getelementptr inbounds %struct.symbol, ptr %805, i32 0, i32 1
  %807 = load i32, ptr %806, align 8, !tbaa !26
  %808 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %802, ptr noundef @.str.215, i32 noundef %807) #8
  %809 = load i32, ptr %11, align 4, !tbaa !9
  %810 = add nsw i32 %809, 1
  store i32 %810, ptr %11, align 4, !tbaa !9
  %811 = load ptr, ptr %7, align 8, !tbaa !5
  %812 = load ptr, ptr %4, align 8, !tbaa !5
  %813 = getelementptr inbounds %struct.lemon, ptr %812, i32 0, i32 17
  %814 = load ptr, ptr %813, align 8, !tbaa !57
  %815 = getelementptr inbounds %struct.symbol, ptr %814, i32 0, i32 13
  %816 = load i32, ptr %815, align 8, !tbaa !59
  %817 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %811, ptr noundef @.str.216, i32 noundef %816) #8
  %818 = load i32, ptr %11, align 4, !tbaa !9
  %819 = add nsw i32 %818, 1
  store i32 %819, ptr %11, align 4, !tbaa !9
  br label %820

820:                                              ; preds = %801, %794, %789
  %821 = load ptr, ptr %4, align 8, !tbaa !5
  %822 = getelementptr inbounds %struct.lemon, ptr %821, i32 0, i32 42
  %823 = load i32, ptr %822, align 4, !tbaa !60
  %824 = icmp ne i32 %823, 0
  br i1 %824, label %825, label %830

825:                                              ; preds = %820
  %826 = load ptr, ptr %7, align 8, !tbaa !5
  %827 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %826, ptr noundef @.str.217) #8
  %828 = load i32, ptr %11, align 4, !tbaa !9
  %829 = add nsw i32 %828, 1
  store i32 %829, ptr %11, align 4, !tbaa !9
  br label %830

830:                                              ; preds = %825, %820
  %831 = load ptr, ptr %4, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.lemon, ptr %831, i32 0, i32 4
  %833 = load i32, ptr %832, align 4, !tbaa !61
  %834 = mul nsw i32 %833, 2
  %835 = sext i32 %834 to i64
  %836 = call noalias ptr @calloc(i64 noundef %835, i64 noundef 24) #12
  store ptr %836, ptr %28, align 8, !tbaa !5
  %837 = load ptr, ptr %28, align 8, !tbaa !5
  %838 = icmp eq ptr %837, null
  br i1 %838, label %839, label %842

839:                                              ; preds = %830
  %840 = load ptr, ptr @stderr, align 8, !tbaa !5
  %841 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %840, ptr noundef @.str.1) #8
  call void @exit(i32 noundef 1) #9
  unreachable

842:                                              ; preds = %830
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %843

843:                                              ; preds = %904, %842
  %844 = load i32, ptr %16, align 4, !tbaa !9
  %845 = load ptr, ptr %4, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.lemon, ptr %845, i32 0, i32 4
  %847 = load i32, ptr %846, align 4, !tbaa !61
  %848 = icmp slt i32 %844, %847
  br i1 %848, label %849, label %907

849:                                              ; preds = %843
  %850 = load ptr, ptr %4, align 8, !tbaa !5
  %851 = getelementptr inbounds %struct.lemon, ptr %850, i32 0, i32 0
  %852 = load ptr, ptr %851, align 8, !tbaa !62
  %853 = load i32, ptr %16, align 4, !tbaa !9
  %854 = sext i32 %853 to i64
  %855 = getelementptr inbounds ptr, ptr %852, i64 %854
  %856 = load ptr, ptr %855, align 8, !tbaa !5
  store ptr %856, ptr %12, align 8, !tbaa !5
  %857 = load ptr, ptr %12, align 8, !tbaa !5
  %858 = load ptr, ptr %28, align 8, !tbaa !5
  %859 = load i32, ptr %16, align 4, !tbaa !9
  %860 = mul nsw i32 %859, 2
  %861 = sext i32 %860 to i64
  %862 = getelementptr inbounds %struct.axset, ptr %858, i64 %861
  %863 = getelementptr inbounds %struct.axset, ptr %862, i32 0, i32 0
  store ptr %857, ptr %863, align 8, !tbaa !63
  %864 = load ptr, ptr %28, align 8, !tbaa !5
  %865 = load i32, ptr %16, align 4, !tbaa !9
  %866 = mul nsw i32 %865, 2
  %867 = sext i32 %866 to i64
  %868 = getelementptr inbounds %struct.axset, ptr %864, i64 %867
  %869 = getelementptr inbounds %struct.axset, ptr %868, i32 0, i32 1
  store i32 1, ptr %869, align 8, !tbaa !65
  %870 = load ptr, ptr %12, align 8, !tbaa !5
  %871 = getelementptr inbounds %struct.state, ptr %870, i32 0, i32 4
  %872 = load i32, ptr %871, align 8, !tbaa !66
  %873 = load ptr, ptr %28, align 8, !tbaa !5
  %874 = load i32, ptr %16, align 4, !tbaa !9
  %875 = mul nsw i32 %874, 2
  %876 = sext i32 %875 to i64
  %877 = getelementptr inbounds %struct.axset, ptr %873, i64 %876
  %878 = getelementptr inbounds %struct.axset, ptr %877, i32 0, i32 2
  store i32 %872, ptr %878, align 4, !tbaa !68
  %879 = load ptr, ptr %12, align 8, !tbaa !5
  %880 = load ptr, ptr %28, align 8, !tbaa !5
  %881 = load i32, ptr %16, align 4, !tbaa !9
  %882 = mul nsw i32 %881, 2
  %883 = add nsw i32 %882, 1
  %884 = sext i32 %883 to i64
  %885 = getelementptr inbounds %struct.axset, ptr %880, i64 %884
  %886 = getelementptr inbounds %struct.axset, ptr %885, i32 0, i32 0
  store ptr %879, ptr %886, align 8, !tbaa !63
  %887 = load ptr, ptr %28, align 8, !tbaa !5
  %888 = load i32, ptr %16, align 4, !tbaa !9
  %889 = mul nsw i32 %888, 2
  %890 = add nsw i32 %889, 1
  %891 = sext i32 %890 to i64
  %892 = getelementptr inbounds %struct.axset, ptr %887, i64 %891
  %893 = getelementptr inbounds %struct.axset, ptr %892, i32 0, i32 1
  store i32 0, ptr %893, align 8, !tbaa !65
  %894 = load ptr, ptr %12, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.state, ptr %894, i32 0, i32 5
  %896 = load i32, ptr %895, align 4, !tbaa !69
  %897 = load ptr, ptr %28, align 8, !tbaa !5
  %898 = load i32, ptr %16, align 4, !tbaa !9
  %899 = mul nsw i32 %898, 2
  %900 = add nsw i32 %899, 1
  %901 = sext i32 %900 to i64
  %902 = getelementptr inbounds %struct.axset, ptr %897, i64 %901
  %903 = getelementptr inbounds %struct.axset, ptr %902, i32 0, i32 2
  store i32 %896, ptr %903, align 4, !tbaa !68
  br label %904

904:                                              ; preds = %849
  %905 = load i32, ptr %16, align 4, !tbaa !9
  %906 = add nsw i32 %905, 1
  store i32 %906, ptr %16, align 4, !tbaa !9
  br label %843, !llvm.loop !70

907:                                              ; preds = %843
  store i32 0, ptr %24, align 4, !tbaa !9
  store i32 0, ptr %25, align 4, !tbaa !9
  store i32 0, ptr %26, align 4, !tbaa !9
  store i32 0, ptr %27, align 4, !tbaa !9
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %908

908:                                              ; preds = %922, %907
  %909 = load i32, ptr %16, align 4, !tbaa !9
  %910 = load ptr, ptr %4, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct.lemon, ptr %910, i32 0, i32 4
  %912 = load i32, ptr %911, align 4, !tbaa !61
  %913 = mul nsw i32 %912, 2
  %914 = icmp slt i32 %909, %913
  br i1 %914, label %915, label %925

915:                                              ; preds = %908
  %916 = load i32, ptr %16, align 4, !tbaa !9
  %917 = load ptr, ptr %28, align 8, !tbaa !5
  %918 = load i32, ptr %16, align 4, !tbaa !9
  %919 = sext i32 %918 to i64
  %920 = getelementptr inbounds %struct.axset, ptr %917, i64 %919
  %921 = getelementptr inbounds %struct.axset, ptr %920, i32 0, i32 3
  store i32 %916, ptr %921, align 8, !tbaa !71
  br label %922

922:                                              ; preds = %915
  %923 = load i32, ptr %16, align 4, !tbaa !9
  %924 = add nsw i32 %923, 1
  store i32 %924, ptr %16, align 4, !tbaa !9
  br label %908, !llvm.loop !72

925:                                              ; preds = %908
  %926 = load ptr, ptr %28, align 8, !tbaa !5
  %927 = load ptr, ptr %4, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.lemon, ptr %927, i32 0, i32 4
  %929 = load i32, ptr %928, align 4, !tbaa !61
  %930 = mul nsw i32 %929, 2
  %931 = sext i32 %930 to i64
  call void @qsort(ptr noundef %926, i64 noundef %931, i64 noundef 24, ptr noundef @axset_compare)
  %932 = load ptr, ptr %4, align 8, !tbaa !5
  %933 = getelementptr inbounds %struct.lemon, ptr %932, i32 0, i32 7
  %934 = load i32, ptr %933, align 8, !tbaa !20
  %935 = load ptr, ptr %4, align 8, !tbaa !5
  %936 = getelementptr inbounds %struct.lemon, ptr %935, i32 0, i32 8
  %937 = load i32, ptr %936, align 4, !tbaa !24
  %938 = call ptr @acttab_alloc(i32 noundef %934, i32 noundef %937)
  store ptr %938, ptr %15, align 8, !tbaa !5
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %939

939:                                              ; preds = %1112, %925
  %940 = load i32, ptr %16, align 4, !tbaa !9
  %941 = load ptr, ptr %4, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.lemon, ptr %941, i32 0, i32 4
  %943 = load i32, ptr %942, align 4, !tbaa !61
  %944 = mul nsw i32 %943, 2
  %945 = icmp slt i32 %940, %944
  br i1 %945, label %946, label %954

946:                                              ; preds = %939
  %947 = load ptr, ptr %28, align 8, !tbaa !5
  %948 = load i32, ptr %16, align 4, !tbaa !9
  %949 = sext i32 %948 to i64
  %950 = getelementptr inbounds %struct.axset, ptr %947, i64 %949
  %951 = getelementptr inbounds %struct.axset, ptr %950, i32 0, i32 2
  %952 = load i32, ptr %951, align 4, !tbaa !68
  %953 = icmp sgt i32 %952, 0
  br label %954

954:                                              ; preds = %946, %939
  %955 = phi i1 [ false, %939 ], [ %953, %946 ]
  br i1 %955, label %956, label %1115

956:                                              ; preds = %954
  %957 = load ptr, ptr %28, align 8, !tbaa !5
  %958 = load i32, ptr %16, align 4, !tbaa !9
  %959 = sext i32 %958 to i64
  %960 = getelementptr inbounds %struct.axset, ptr %957, i64 %959
  %961 = getelementptr inbounds %struct.axset, ptr %960, i32 0, i32 0
  %962 = load ptr, ptr %961, align 8, !tbaa !63
  store ptr %962, ptr %12, align 8, !tbaa !5
  %963 = load ptr, ptr %28, align 8, !tbaa !5
  %964 = load i32, ptr %16, align 4, !tbaa !9
  %965 = sext i32 %964 to i64
  %966 = getelementptr inbounds %struct.axset, ptr %963, i64 %965
  %967 = getelementptr inbounds %struct.axset, ptr %966, i32 0, i32 1
  %968 = load i32, ptr %967, align 8, !tbaa !65
  %969 = icmp ne i32 %968, 0
  br i1 %969, label %970, label %1035

970:                                              ; preds = %956
  %971 = load ptr, ptr %12, align 8, !tbaa !5
  %972 = getelementptr inbounds %struct.state, ptr %971, i32 0, i32 3
  %973 = load ptr, ptr %972, align 8, !tbaa !73
  store ptr %973, ptr %13, align 8, !tbaa !5
  br label %974

974:                                              ; preds = %1006, %970
  %975 = load ptr, ptr %13, align 8, !tbaa !5
  %976 = icmp ne ptr %975, null
  br i1 %976, label %977, label %1010

977:                                              ; preds = %974
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #8
  %978 = load ptr, ptr %13, align 8, !tbaa !5
  %979 = getelementptr inbounds %struct.action, ptr %978, i32 0, i32 0
  %980 = load ptr, ptr %979, align 8, !tbaa !74
  %981 = getelementptr inbounds %struct.symbol, ptr %980, i32 0, i32 1
  %982 = load i32, ptr %981, align 8, !tbaa !26
  %983 = load ptr, ptr %4, align 8, !tbaa !5
  %984 = getelementptr inbounds %struct.lemon, ptr %983, i32 0, i32 8
  %985 = load i32, ptr %984, align 4, !tbaa !24
  %986 = icmp sge i32 %982, %985
  br i1 %986, label %987, label %988

987:                                              ; preds = %977
  store i32 36, ptr %29, align 4
  br label %1003

988:                                              ; preds = %977
  %989 = load ptr, ptr %4, align 8, !tbaa !5
  %990 = load ptr, ptr %13, align 8, !tbaa !5
  %991 = call i32 @compute_action(ptr noundef %989, ptr noundef %990)
  store i32 %991, ptr %34, align 4, !tbaa !9
  %992 = load i32, ptr %34, align 4, !tbaa !9
  %993 = icmp slt i32 %992, 0
  br i1 %993, label %994, label %995

994:                                              ; preds = %988
  store i32 36, ptr %29, align 4
  br label %1003

995:                                              ; preds = %988
  %996 = load ptr, ptr %15, align 8, !tbaa !5
  %997 = load ptr, ptr %13, align 8, !tbaa !5
  %998 = getelementptr inbounds %struct.action, ptr %997, i32 0, i32 0
  %999 = load ptr, ptr %998, align 8, !tbaa !74
  %1000 = getelementptr inbounds %struct.symbol, ptr %999, i32 0, i32 1
  %1001 = load i32, ptr %1000, align 8, !tbaa !26
  %1002 = load i32, ptr %34, align 4, !tbaa !9
  call void @acttab_action(ptr noundef %996, i32 noundef %1001, i32 noundef %1002)
  store i32 0, ptr %29, align 4
  br label %1003

1003:                                             ; preds = %995, %994, %987
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  %1004 = load i32, ptr %29, align 4
  switch i32 %1004, label %2548 [
    i32 0, label %1005
    i32 36, label %1006
  ]

1005:                                             ; preds = %1003
  br label %1006

1006:                                             ; preds = %1005, %1003
  %1007 = load ptr, ptr %13, align 8, !tbaa !5
  %1008 = getelementptr inbounds %struct.action, ptr %1007, i32 0, i32 4
  %1009 = load ptr, ptr %1008, align 8, !tbaa !76
  store ptr %1009, ptr %13, align 8, !tbaa !5
  br label %974, !llvm.loop !77

1010:                                             ; preds = %974
  %1011 = load ptr, ptr %15, align 8, !tbaa !5
  %1012 = call i32 @acttab_insert(ptr noundef %1011, i32 noundef 1)
  %1013 = load ptr, ptr %12, align 8, !tbaa !5
  %1014 = getelementptr inbounds %struct.state, ptr %1013, i32 0, i32 6
  store i32 %1012, ptr %1014, align 8, !tbaa !78
  %1015 = load ptr, ptr %12, align 8, !tbaa !5
  %1016 = getelementptr inbounds %struct.state, ptr %1015, i32 0, i32 6
  %1017 = load i32, ptr %1016, align 8, !tbaa !78
  %1018 = load i32, ptr %24, align 4, !tbaa !9
  %1019 = icmp slt i32 %1017, %1018
  br i1 %1019, label %1020, label %1024

1020:                                             ; preds = %1010
  %1021 = load ptr, ptr %12, align 8, !tbaa !5
  %1022 = getelementptr inbounds %struct.state, ptr %1021, i32 0, i32 6
  %1023 = load i32, ptr %1022, align 8, !tbaa !78
  store i32 %1023, ptr %24, align 4, !tbaa !9
  br label %1024

1024:                                             ; preds = %1020, %1010
  %1025 = load ptr, ptr %12, align 8, !tbaa !5
  %1026 = getelementptr inbounds %struct.state, ptr %1025, i32 0, i32 6
  %1027 = load i32, ptr %1026, align 8, !tbaa !78
  %1028 = load i32, ptr %25, align 4, !tbaa !9
  %1029 = icmp sgt i32 %1027, %1028
  br i1 %1029, label %1030, label %1034

1030:                                             ; preds = %1024
  %1031 = load ptr, ptr %12, align 8, !tbaa !5
  %1032 = getelementptr inbounds %struct.state, ptr %1031, i32 0, i32 6
  %1033 = load i32, ptr %1032, align 8, !tbaa !78
  store i32 %1033, ptr %25, align 4, !tbaa !9
  br label %1034

1034:                                             ; preds = %1030, %1024
  br label %1111

1035:                                             ; preds = %956
  %1036 = load ptr, ptr %12, align 8, !tbaa !5
  %1037 = getelementptr inbounds %struct.state, ptr %1036, i32 0, i32 3
  %1038 = load ptr, ptr %1037, align 8, !tbaa !73
  store ptr %1038, ptr %13, align 8, !tbaa !5
  br label %1039

1039:                                             ; preds = %1082, %1035
  %1040 = load ptr, ptr %13, align 8, !tbaa !5
  %1041 = icmp ne ptr %1040, null
  br i1 %1041, label %1042, label %1086

1042:                                             ; preds = %1039
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #8
  %1043 = load ptr, ptr %13, align 8, !tbaa !5
  %1044 = getelementptr inbounds %struct.action, ptr %1043, i32 0, i32 0
  %1045 = load ptr, ptr %1044, align 8, !tbaa !74
  %1046 = getelementptr inbounds %struct.symbol, ptr %1045, i32 0, i32 1
  %1047 = load i32, ptr %1046, align 8, !tbaa !26
  %1048 = load ptr, ptr %4, align 8, !tbaa !5
  %1049 = getelementptr inbounds %struct.lemon, ptr %1048, i32 0, i32 8
  %1050 = load i32, ptr %1049, align 4, !tbaa !24
  %1051 = icmp slt i32 %1047, %1050
  br i1 %1051, label %1052, label %1053

1052:                                             ; preds = %1042
  store i32 39, ptr %29, align 4
  br label %1079

1053:                                             ; preds = %1042
  %1054 = load ptr, ptr %13, align 8, !tbaa !5
  %1055 = getelementptr inbounds %struct.action, ptr %1054, i32 0, i32 0
  %1056 = load ptr, ptr %1055, align 8, !tbaa !74
  %1057 = getelementptr inbounds %struct.symbol, ptr %1056, i32 0, i32 1
  %1058 = load i32, ptr %1057, align 8, !tbaa !26
  %1059 = load ptr, ptr %4, align 8, !tbaa !5
  %1060 = getelementptr inbounds %struct.lemon, ptr %1059, i32 0, i32 7
  %1061 = load i32, ptr %1060, align 8, !tbaa !20
  %1062 = icmp eq i32 %1058, %1061
  br i1 %1062, label %1063, label %1064

1063:                                             ; preds = %1053
  store i32 39, ptr %29, align 4
  br label %1079

1064:                                             ; preds = %1053
  %1065 = load ptr, ptr %4, align 8, !tbaa !5
  %1066 = load ptr, ptr %13, align 8, !tbaa !5
  %1067 = call i32 @compute_action(ptr noundef %1065, ptr noundef %1066)
  store i32 %1067, ptr %35, align 4, !tbaa !9
  %1068 = load i32, ptr %35, align 4, !tbaa !9
  %1069 = icmp slt i32 %1068, 0
  br i1 %1069, label %1070, label %1071

1070:                                             ; preds = %1064
  store i32 39, ptr %29, align 4
  br label %1079

1071:                                             ; preds = %1064
  %1072 = load ptr, ptr %15, align 8, !tbaa !5
  %1073 = load ptr, ptr %13, align 8, !tbaa !5
  %1074 = getelementptr inbounds %struct.action, ptr %1073, i32 0, i32 0
  %1075 = load ptr, ptr %1074, align 8, !tbaa !74
  %1076 = getelementptr inbounds %struct.symbol, ptr %1075, i32 0, i32 1
  %1077 = load i32, ptr %1076, align 8, !tbaa !26
  %1078 = load i32, ptr %35, align 4, !tbaa !9
  call void @acttab_action(ptr noundef %1072, i32 noundef %1077, i32 noundef %1078)
  store i32 0, ptr %29, align 4
  br label %1079

1079:                                             ; preds = %1071, %1070, %1063, %1052
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  %1080 = load i32, ptr %29, align 4
  switch i32 %1080, label %2548 [
    i32 0, label %1081
    i32 39, label %1082
  ]

1081:                                             ; preds = %1079
  br label %1082

1082:                                             ; preds = %1081, %1079
  %1083 = load ptr, ptr %13, align 8, !tbaa !5
  %1084 = getelementptr inbounds %struct.action, ptr %1083, i32 0, i32 4
  %1085 = load ptr, ptr %1084, align 8, !tbaa !76
  store ptr %1085, ptr %13, align 8, !tbaa !5
  br label %1039, !llvm.loop !79

1086:                                             ; preds = %1039
  %1087 = load ptr, ptr %15, align 8, !tbaa !5
  %1088 = call i32 @acttab_insert(ptr noundef %1087, i32 noundef 0)
  %1089 = load ptr, ptr %12, align 8, !tbaa !5
  %1090 = getelementptr inbounds %struct.state, ptr %1089, i32 0, i32 7
  store i32 %1088, ptr %1090, align 4, !tbaa !80
  %1091 = load ptr, ptr %12, align 8, !tbaa !5
  %1092 = getelementptr inbounds %struct.state, ptr %1091, i32 0, i32 7
  %1093 = load i32, ptr %1092, align 4, !tbaa !80
  %1094 = load i32, ptr %26, align 4, !tbaa !9
  %1095 = icmp slt i32 %1093, %1094
  br i1 %1095, label %1096, label %1100

1096:                                             ; preds = %1086
  %1097 = load ptr, ptr %12, align 8, !tbaa !5
  %1098 = getelementptr inbounds %struct.state, ptr %1097, i32 0, i32 7
  %1099 = load i32, ptr %1098, align 4, !tbaa !80
  store i32 %1099, ptr %26, align 4, !tbaa !9
  br label %1100

1100:                                             ; preds = %1096, %1086
  %1101 = load ptr, ptr %12, align 8, !tbaa !5
  %1102 = getelementptr inbounds %struct.state, ptr %1101, i32 0, i32 7
  %1103 = load i32, ptr %1102, align 4, !tbaa !80
  %1104 = load i32, ptr %27, align 4, !tbaa !9
  %1105 = icmp sgt i32 %1103, %1104
  br i1 %1105, label %1106, label %1110

1106:                                             ; preds = %1100
  %1107 = load ptr, ptr %12, align 8, !tbaa !5
  %1108 = getelementptr inbounds %struct.state, ptr %1107, i32 0, i32 7
  %1109 = load i32, ptr %1108, align 4, !tbaa !80
  store i32 %1109, ptr %27, align 4, !tbaa !9
  br label %1110

1110:                                             ; preds = %1106, %1100
  br label %1111

1111:                                             ; preds = %1110, %1034
  br label %1112

1112:                                             ; preds = %1111
  %1113 = load i32, ptr %16, align 4, !tbaa !9
  %1114 = add nsw i32 %1113, 1
  store i32 %1114, ptr %16, align 4, !tbaa !9
  br label %939, !llvm.loop !81

1115:                                             ; preds = %954
  %1116 = load ptr, ptr %28, align 8, !tbaa !5
  call void @free(ptr noundef %1116) #8
  %1117 = load ptr, ptr %4, align 8, !tbaa !5
  %1118 = getelementptr inbounds %struct.lemon, ptr %1117, i32 0, i32 1
  %1119 = load ptr, ptr %1118, align 8, !tbaa !29
  store ptr %1119, ptr %14, align 8, !tbaa !5
  br label %1120

1120:                                             ; preds = %1126, %1115
  %1121 = load ptr, ptr %14, align 8, !tbaa !5
  %1122 = icmp ne ptr %1121, null
  br i1 %1122, label %1123, label %1130

1123:                                             ; preds = %1120
  %1124 = load ptr, ptr %14, align 8, !tbaa !5
  %1125 = getelementptr inbounds %struct.rule, ptr %1124, i32 0, i32 17
  store i32 0, ptr %1125, align 4, !tbaa !82
  br label %1126

1126:                                             ; preds = %1123
  %1127 = load ptr, ptr %14, align 8, !tbaa !5
  %1128 = getelementptr inbounds %struct.rule, ptr %1127, i32 0, i32 20
  %1129 = load ptr, ptr %1128, align 8, !tbaa !40
  store ptr %1129, ptr %14, align 8, !tbaa !5
  br label %1120, !llvm.loop !83

1130:                                             ; preds = %1120
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %1131

1131:                                             ; preds = %1171, %1130
  %1132 = load i32, ptr %16, align 4, !tbaa !9
  %1133 = load ptr, ptr %4, align 8, !tbaa !5
  %1134 = getelementptr inbounds %struct.lemon, ptr %1133, i32 0, i32 4
  %1135 = load i32, ptr %1134, align 4, !tbaa !61
  %1136 = icmp slt i32 %1132, %1135
  br i1 %1136, label %1137, label %1174

1137:                                             ; preds = %1131
  %1138 = load ptr, ptr %4, align 8, !tbaa !5
  %1139 = getelementptr inbounds %struct.lemon, ptr %1138, i32 0, i32 0
  %1140 = load ptr, ptr %1139, align 8, !tbaa !62
  %1141 = load i32, ptr %16, align 4, !tbaa !9
  %1142 = sext i32 %1141 to i64
  %1143 = getelementptr inbounds ptr, ptr %1140, i64 %1142
  %1144 = load ptr, ptr %1143, align 8, !tbaa !5
  %1145 = getelementptr inbounds %struct.state, ptr %1144, i32 0, i32 3
  %1146 = load ptr, ptr %1145, align 8, !tbaa !73
  store ptr %1146, ptr %13, align 8, !tbaa !5
  br label %1147

1147:                                             ; preds = %1166, %1137
  %1148 = load ptr, ptr %13, align 8, !tbaa !5
  %1149 = icmp ne ptr %1148, null
  br i1 %1149, label %1150, label %1170

1150:                                             ; preds = %1147
  %1151 = load ptr, ptr %13, align 8, !tbaa !5
  %1152 = getelementptr inbounds %struct.action, ptr %1151, i32 0, i32 1
  %1153 = load i32, ptr %1152, align 8, !tbaa !84
  %1154 = icmp eq i32 %1153, 2
  br i1 %1154, label %1160, label %1155

1155:                                             ; preds = %1150
  %1156 = load ptr, ptr %13, align 8, !tbaa !5
  %1157 = getelementptr inbounds %struct.action, ptr %1156, i32 0, i32 1
  %1158 = load i32, ptr %1157, align 8, !tbaa !84
  %1159 = icmp eq i32 %1158, 10
  br i1 %1159, label %1160, label %1165

1160:                                             ; preds = %1155, %1150
  %1161 = load ptr, ptr %13, align 8, !tbaa !5
  %1162 = getelementptr inbounds %struct.action, ptr %1161, i32 0, i32 2
  %1163 = load ptr, ptr %1162, align 8, !tbaa !49
  %1164 = getelementptr inbounds %struct.rule, ptr %1163, i32 0, i32 17
  store i32 1, ptr %1164, align 4, !tbaa !82
  br label %1165

1165:                                             ; preds = %1160, %1155
  br label %1166

1166:                                             ; preds = %1165
  %1167 = load ptr, ptr %13, align 8, !tbaa !5
  %1168 = getelementptr inbounds %struct.action, ptr %1167, i32 0, i32 4
  %1169 = load ptr, ptr %1168, align 8, !tbaa !76
  store ptr %1169, ptr %13, align 8, !tbaa !5
  br label %1147, !llvm.loop !85

1170:                                             ; preds = %1147
  br label %1171

1171:                                             ; preds = %1170
  %1172 = load i32, ptr %16, align 4, !tbaa !9
  %1173 = add nsw i32 %1172, 1
  store i32 %1173, ptr %16, align 4, !tbaa !9
  br label %1131, !llvm.loop !86

1174:                                             ; preds = %1131
  %1175 = load ptr, ptr %7, align 8, !tbaa !5
  %1176 = load ptr, ptr %4, align 8, !tbaa !5
  %1177 = getelementptr inbounds %struct.lemon, ptr %1176, i32 0, i32 4
  %1178 = load i32, ptr %1177, align 4, !tbaa !61
  %1179 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1175, ptr noundef @.str.218, i32 noundef %1178) #8
  %1180 = load i32, ptr %11, align 4, !tbaa !9
  %1181 = add nsw i32 %1180, 1
  store i32 %1181, ptr %11, align 4, !tbaa !9
  %1182 = load ptr, ptr %7, align 8, !tbaa !5
  %1183 = load ptr, ptr %4, align 8, !tbaa !5
  %1184 = getelementptr inbounds %struct.lemon, ptr %1183, i32 0, i32 5
  %1185 = load i32, ptr %1184, align 8, !tbaa !14
  %1186 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1182, ptr noundef @.str.219, i32 noundef %1185) #8
  %1187 = load i32, ptr %11, align 4, !tbaa !9
  %1188 = add nsw i32 %1187, 1
  store i32 %1188, ptr %11, align 4, !tbaa !9
  %1189 = load ptr, ptr %7, align 8, !tbaa !5
  %1190 = load ptr, ptr %4, align 8, !tbaa !5
  %1191 = getelementptr inbounds %struct.lemon, ptr %1190, i32 0, i32 6
  %1192 = load i32, ptr %1191, align 4, !tbaa !87
  %1193 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1189, ptr noundef @.str.220, i32 noundef %1192) #8
  %1194 = load i32, ptr %11, align 4, !tbaa !9
  %1195 = add nsw i32 %1194, 1
  store i32 %1195, ptr %11, align 4, !tbaa !9
  %1196 = load ptr, ptr %7, align 8, !tbaa !5
  %1197 = load ptr, ptr %4, align 8, !tbaa !5
  %1198 = getelementptr inbounds %struct.lemon, ptr %1197, i32 0, i32 8
  %1199 = load i32, ptr %1198, align 4, !tbaa !24
  %1200 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1196, ptr noundef @.str.221, i32 noundef %1199) #8
  %1201 = load i32, ptr %11, align 4, !tbaa !9
  %1202 = add nsw i32 %1201, 1
  store i32 %1202, ptr %11, align 4, !tbaa !9
  %1203 = load ptr, ptr %7, align 8, !tbaa !5
  %1204 = load ptr, ptr %4, align 8, !tbaa !5
  %1205 = getelementptr inbounds %struct.lemon, ptr %1204, i32 0, i32 4
  %1206 = load i32, ptr %1205, align 4, !tbaa !61
  %1207 = sub nsw i32 %1206, 1
  %1208 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1203, ptr noundef @.str.222, i32 noundef %1207) #8
  %1209 = load i32, ptr %11, align 4, !tbaa !9
  %1210 = add nsw i32 %1209, 1
  store i32 %1210, ptr %11, align 4, !tbaa !9
  %1211 = load ptr, ptr %4, align 8, !tbaa !5
  %1212 = getelementptr inbounds %struct.lemon, ptr %1211, i32 0, i32 9
  %1213 = load i32, ptr %1212, align 8, !tbaa !13
  store i32 %1213, ptr %16, align 4, !tbaa !9
  %1214 = load ptr, ptr %7, align 8, !tbaa !5
  %1215 = load i32, ptr %16, align 4, !tbaa !9
  %1216 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1214, ptr noundef @.str.223, i32 noundef %1215) #8
  %1217 = load i32, ptr %11, align 4, !tbaa !9
  %1218 = add nsw i32 %1217, 1
  store i32 %1218, ptr %11, align 4, !tbaa !9
  %1219 = load ptr, ptr %4, align 8, !tbaa !5
  %1220 = getelementptr inbounds %struct.lemon, ptr %1219, i32 0, i32 5
  %1221 = load i32, ptr %1220, align 8, !tbaa !14
  %1222 = load i32, ptr %16, align 4, !tbaa !9
  %1223 = add nsw i32 %1222, %1221
  store i32 %1223, ptr %16, align 4, !tbaa !9
  %1224 = load ptr, ptr %7, align 8, !tbaa !5
  %1225 = load i32, ptr %16, align 4, !tbaa !9
  %1226 = sub nsw i32 %1225, 1
  %1227 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1224, ptr noundef @.str.224, i32 noundef %1226) #8
  %1228 = load i32, ptr %11, align 4, !tbaa !9
  %1229 = add nsw i32 %1228, 1
  store i32 %1229, ptr %11, align 4, !tbaa !9
  %1230 = load ptr, ptr %7, align 8, !tbaa !5
  %1231 = load ptr, ptr %4, align 8, !tbaa !5
  %1232 = getelementptr inbounds %struct.lemon, ptr %1231, i32 0, i32 10
  %1233 = load i32, ptr %1232, align 4, !tbaa !15
  %1234 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1230, ptr noundef @.str.225, i32 noundef %1233) #8
  %1235 = load i32, ptr %11, align 4, !tbaa !9
  %1236 = add nsw i32 %1235, 1
  store i32 %1236, ptr %11, align 4, !tbaa !9
  %1237 = load ptr, ptr %7, align 8, !tbaa !5
  %1238 = load ptr, ptr %4, align 8, !tbaa !5
  %1239 = getelementptr inbounds %struct.lemon, ptr %1238, i32 0, i32 11
  %1240 = load i32, ptr %1239, align 8, !tbaa !16
  %1241 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1237, ptr noundef @.str.226, i32 noundef %1240) #8
  %1242 = load i32, ptr %11, align 4, !tbaa !9
  %1243 = add nsw i32 %1242, 1
  store i32 %1243, ptr %11, align 4, !tbaa !9
  %1244 = load ptr, ptr %7, align 8, !tbaa !5
  %1245 = load ptr, ptr %4, align 8, !tbaa !5
  %1246 = getelementptr inbounds %struct.lemon, ptr %1245, i32 0, i32 12
  %1247 = load i32, ptr %1246, align 4, !tbaa !17
  %1248 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1244, ptr noundef @.str.227, i32 noundef %1247) #8
  %1249 = load i32, ptr %11, align 4, !tbaa !9
  %1250 = add nsw i32 %1249, 1
  store i32 %1250, ptr %11, align 4, !tbaa !9
  %1251 = load ptr, ptr %7, align 8, !tbaa !5
  %1252 = load ptr, ptr %4, align 8, !tbaa !5
  %1253 = getelementptr inbounds %struct.lemon, ptr %1252, i32 0, i32 13
  %1254 = load i32, ptr %1253, align 8, !tbaa !18
  %1255 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1251, ptr noundef @.str.228, i32 noundef %1254) #8
  %1256 = load i32, ptr %11, align 4, !tbaa !9
  %1257 = add nsw i32 %1256, 1
  store i32 %1257, ptr %11, align 4, !tbaa !9
  %1258 = load ptr, ptr %4, align 8, !tbaa !5
  %1259 = getelementptr inbounds %struct.lemon, ptr %1258, i32 0, i32 13
  %1260 = load i32, ptr %1259, align 8, !tbaa !18
  %1261 = load ptr, ptr %4, align 8, !tbaa !5
  %1262 = getelementptr inbounds %struct.lemon, ptr %1261, i32 0, i32 5
  %1263 = load i32, ptr %1262, align 8, !tbaa !14
  %1264 = add nsw i32 %1260, %1263
  store i32 %1264, ptr %16, align 4, !tbaa !9
  %1265 = load ptr, ptr %7, align 8, !tbaa !5
  %1266 = load i32, ptr %16, align 4, !tbaa !9
  %1267 = sub nsw i32 %1266, 1
  %1268 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1265, ptr noundef @.str.229, i32 noundef %1267) #8
  %1269 = load i32, ptr %11, align 4, !tbaa !9
  %1270 = add nsw i32 %1269, 1
  store i32 %1270, ptr %11, align 4, !tbaa !9
  %1271 = load ptr, ptr %4, align 8, !tbaa !5
  %1272 = getelementptr inbounds %struct.lemon, ptr %1271, i32 0, i32 19
  %1273 = load ptr, ptr %1272, align 8, !tbaa !42
  %1274 = load ptr, ptr %8, align 8, !tbaa !5
  %1275 = load ptr, ptr %7, align 8, !tbaa !5
  call void @tplt_xfer(ptr noundef %1273, ptr noundef %1274, ptr noundef %1275, ptr noundef %11)
  %1276 = load ptr, ptr %15, align 8, !tbaa !5
  %1277 = call i32 @acttab_action_size(ptr noundef %1276)
  store i32 %1277, ptr %18, align 4, !tbaa !9
  %1278 = load ptr, ptr %4, align 8, !tbaa !5
  %1279 = getelementptr inbounds %struct.lemon, ptr %1278, i32 0, i32 38
  store i32 %1277, ptr %1279, align 4, !tbaa !88
  %1280 = load i32, ptr %18, align 4, !tbaa !9
  %1281 = load i32, ptr %21, align 4, !tbaa !9
  %1282 = mul nsw i32 %1280, %1281
  %1283 = load ptr, ptr %4, align 8, !tbaa !5
  %1284 = getelementptr inbounds %struct.lemon, ptr %1283, i32 0, i32 40
  %1285 = load i32, ptr %1284, align 4, !tbaa !89
  %1286 = add nsw i32 %1285, %1282
  store i32 %1286, ptr %1284, align 4, !tbaa !89
  %1287 = load ptr, ptr %7, align 8, !tbaa !5
  %1288 = load i32, ptr %18, align 4, !tbaa !9
  %1289 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1287, ptr noundef @.str.230, i32 noundef %1288) #8
  %1290 = load i32, ptr %11, align 4, !tbaa !9
  %1291 = add nsw i32 %1290, 1
  store i32 %1291, ptr %11, align 4, !tbaa !9
  %1292 = load ptr, ptr %7, align 8, !tbaa !5
  %1293 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1292, ptr noundef @.str.231) #8
  %1294 = load i32, ptr %11, align 4, !tbaa !9
  %1295 = add nsw i32 %1294, 1
  store i32 %1295, ptr %11, align 4, !tbaa !9
  store i32 0, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %1296

1296:                                             ; preds = %1342, %1174
  %1297 = load i32, ptr %16, align 4, !tbaa !9
  %1298 = load i32, ptr %18, align 4, !tbaa !9
  %1299 = icmp slt i32 %1297, %1298
  br i1 %1299, label %1300, label %1345

1300:                                             ; preds = %1296
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #8
  %1301 = load ptr, ptr %15, align 8, !tbaa !5
  %1302 = getelementptr inbounds %struct.acttab, ptr %1301, i32 0, i32 2
  %1303 = load ptr, ptr %1302, align 8, !tbaa !90
  %1304 = load i32, ptr %16, align 4, !tbaa !9
  %1305 = sext i32 %1304 to i64
  %1306 = getelementptr inbounds %struct.lookahead_action, ptr %1303, i64 %1305
  %1307 = getelementptr inbounds %struct.lookahead_action, ptr %1306, i32 0, i32 1
  %1308 = load i32, ptr %1307, align 4, !tbaa !92
  store i32 %1308, ptr %36, align 4, !tbaa !9
  %1309 = load i32, ptr %36, align 4, !tbaa !9
  %1310 = icmp slt i32 %1309, 0
  br i1 %1310, label %1311, label %1315

1311:                                             ; preds = %1300
  %1312 = load ptr, ptr %4, align 8, !tbaa !5
  %1313 = getelementptr inbounds %struct.lemon, ptr %1312, i32 0, i32 12
  %1314 = load i32, ptr %1313, align 4, !tbaa !17
  store i32 %1314, ptr %36, align 4, !tbaa !9
  br label %1315

1315:                                             ; preds = %1311, %1300
  %1316 = load i32, ptr %17, align 4, !tbaa !9
  %1317 = icmp eq i32 %1316, 0
  br i1 %1317, label %1318, label %1322

1318:                                             ; preds = %1315
  %1319 = load ptr, ptr %7, align 8, !tbaa !5
  %1320 = load i32, ptr %16, align 4, !tbaa !9
  %1321 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1319, ptr noundef @.str.232, i32 noundef %1320) #8
  br label %1322

1322:                                             ; preds = %1318, %1315
  %1323 = load ptr, ptr %7, align 8, !tbaa !5
  %1324 = load i32, ptr %36, align 4, !tbaa !9
  %1325 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1323, ptr noundef @.str.233, i32 noundef %1324) #8
  %1326 = load i32, ptr %17, align 4, !tbaa !9
  %1327 = icmp eq i32 %1326, 9
  br i1 %1327, label %1333, label %1328

1328:                                             ; preds = %1322
  %1329 = load i32, ptr %16, align 4, !tbaa !9
  %1330 = load i32, ptr %18, align 4, !tbaa !9
  %1331 = sub nsw i32 %1330, 1
  %1332 = icmp eq i32 %1329, %1331
  br i1 %1332, label %1333, label %1338

1333:                                             ; preds = %1328, %1322
  %1334 = load ptr, ptr %7, align 8, !tbaa !5
  %1335 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1334, ptr noundef @.str.15) #8
  %1336 = load i32, ptr %11, align 4, !tbaa !9
  %1337 = add nsw i32 %1336, 1
  store i32 %1337, ptr %11, align 4, !tbaa !9
  store i32 0, ptr %17, align 4, !tbaa !9
  br label %1341

1338:                                             ; preds = %1328
  %1339 = load i32, ptr %17, align 4, !tbaa !9
  %1340 = add nsw i32 %1339, 1
  store i32 %1340, ptr %17, align 4, !tbaa !9
  br label %1341

1341:                                             ; preds = %1338, %1333
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  br label %1342

1342:                                             ; preds = %1341
  %1343 = load i32, ptr %16, align 4, !tbaa !9
  %1344 = add nsw i32 %1343, 1
  store i32 %1344, ptr %16, align 4, !tbaa !9
  br label %1296, !llvm.loop !94

1345:                                             ; preds = %1296
  %1346 = load ptr, ptr %7, align 8, !tbaa !5
  %1347 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1346, ptr noundef @.str.234) #8
  %1348 = load i32, ptr %11, align 4, !tbaa !9
  %1349 = add nsw i32 %1348, 1
  store i32 %1349, ptr %11, align 4, !tbaa !9
  %1350 = load ptr, ptr %15, align 8, !tbaa !5
  %1351 = getelementptr inbounds %struct.acttab, ptr %1350, i32 0, i32 0
  %1352 = load i32, ptr %1351, align 8, !tbaa !95
  store i32 %1352, ptr %18, align 4, !tbaa !9
  %1353 = load ptr, ptr %4, align 8, !tbaa !5
  %1354 = getelementptr inbounds %struct.lemon, ptr %1353, i32 0, i32 39
  store i32 %1352, ptr %1354, align 8, !tbaa !96
  %1355 = load i32, ptr %18, align 4, !tbaa !9
  %1356 = load i32, ptr %22, align 4, !tbaa !9
  %1357 = mul nsw i32 %1355, %1356
  %1358 = load ptr, ptr %4, align 8, !tbaa !5
  %1359 = getelementptr inbounds %struct.lemon, ptr %1358, i32 0, i32 40
  %1360 = load i32, ptr %1359, align 4, !tbaa !89
  %1361 = add nsw i32 %1360, %1357
  store i32 %1361, ptr %1359, align 4, !tbaa !89
  %1362 = load ptr, ptr %7, align 8, !tbaa !5
  %1363 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1362, ptr noundef @.str.235) #8
  %1364 = load i32, ptr %11, align 4, !tbaa !9
  %1365 = add nsw i32 %1364, 1
  store i32 %1365, ptr %11, align 4, !tbaa !9
  store i32 0, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %1366

1366:                                             ; preds = %1407, %1345
  %1367 = load i32, ptr %16, align 4, !tbaa !9
  %1368 = load i32, ptr %18, align 4, !tbaa !9
  %1369 = icmp slt i32 %1367, %1368
  br i1 %1369, label %1370, label %1410

1370:                                             ; preds = %1366
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #8
  %1371 = load ptr, ptr %15, align 8, !tbaa !5
  %1372 = getelementptr inbounds %struct.acttab, ptr %1371, i32 0, i32 2
  %1373 = load ptr, ptr %1372, align 8, !tbaa !90
  %1374 = load i32, ptr %16, align 4, !tbaa !9
  %1375 = sext i32 %1374 to i64
  %1376 = getelementptr inbounds %struct.lookahead_action, ptr %1373, i64 %1375
  %1377 = getelementptr inbounds %struct.lookahead_action, ptr %1376, i32 0, i32 0
  %1378 = load i32, ptr %1377, align 4, !tbaa !97
  store i32 %1378, ptr %37, align 4, !tbaa !9
  %1379 = load i32, ptr %37, align 4, !tbaa !9
  %1380 = icmp slt i32 %1379, 0
  br i1 %1380, label %1381, label %1385

1381:                                             ; preds = %1370
  %1382 = load ptr, ptr %4, align 8, !tbaa !5
  %1383 = getelementptr inbounds %struct.lemon, ptr %1382, i32 0, i32 7
  %1384 = load i32, ptr %1383, align 8, !tbaa !20
  store i32 %1384, ptr %37, align 4, !tbaa !9
  br label %1385

1385:                                             ; preds = %1381, %1370
  %1386 = load i32, ptr %17, align 4, !tbaa !9
  %1387 = icmp eq i32 %1386, 0
  br i1 %1387, label %1388, label %1392

1388:                                             ; preds = %1385
  %1389 = load ptr, ptr %7, align 8, !tbaa !5
  %1390 = load i32, ptr %16, align 4, !tbaa !9
  %1391 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1389, ptr noundef @.str.232, i32 noundef %1390) #8
  br label %1392

1392:                                             ; preds = %1388, %1385
  %1393 = load ptr, ptr %7, align 8, !tbaa !5
  %1394 = load i32, ptr %37, align 4, !tbaa !9
  %1395 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1393, ptr noundef @.str.233, i32 noundef %1394) #8
  %1396 = load i32, ptr %17, align 4, !tbaa !9
  %1397 = icmp eq i32 %1396, 9
  br i1 %1397, label %1398, label %1403

1398:                                             ; preds = %1392
  %1399 = load ptr, ptr %7, align 8, !tbaa !5
  %1400 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1399, ptr noundef @.str.15) #8
  %1401 = load i32, ptr %11, align 4, !tbaa !9
  %1402 = add nsw i32 %1401, 1
  store i32 %1402, ptr %11, align 4, !tbaa !9
  store i32 0, ptr %17, align 4, !tbaa !9
  br label %1406

1403:                                             ; preds = %1392
  %1404 = load i32, ptr %17, align 4, !tbaa !9
  %1405 = add nsw i32 %1404, 1
  store i32 %1405, ptr %17, align 4, !tbaa !9
  br label %1406

1406:                                             ; preds = %1403, %1398
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #8
  br label %1407

1407:                                             ; preds = %1406
  %1408 = load i32, ptr %16, align 4, !tbaa !9
  %1409 = add nsw i32 %1408, 1
  store i32 %1409, ptr %16, align 4, !tbaa !9
  br label %1366, !llvm.loop !98

1410:                                             ; preds = %1366
  %1411 = load ptr, ptr %4, align 8, !tbaa !5
  %1412 = getelementptr inbounds %struct.lemon, ptr %1411, i32 0, i32 8
  %1413 = load i32, ptr %1412, align 4, !tbaa !24
  %1414 = load ptr, ptr %4, align 8, !tbaa !5
  %1415 = getelementptr inbounds %struct.lemon, ptr %1414, i32 0, i32 38
  %1416 = load i32, ptr %1415, align 4, !tbaa !88
  %1417 = add nsw i32 %1413, %1416
  store i32 %1417, ptr %20, align 4, !tbaa !9
  br label %1418

1418:                                             ; preds = %1445, %1410
  %1419 = load i32, ptr %16, align 4, !tbaa !9
  %1420 = load i32, ptr %20, align 4, !tbaa !9
  %1421 = icmp slt i32 %1419, %1420
  br i1 %1421, label %1422, label %1448

1422:                                             ; preds = %1418
  %1423 = load i32, ptr %17, align 4, !tbaa !9
  %1424 = icmp eq i32 %1423, 0
  br i1 %1424, label %1425, label %1429

1425:                                             ; preds = %1422
  %1426 = load ptr, ptr %7, align 8, !tbaa !5
  %1427 = load i32, ptr %16, align 4, !tbaa !9
  %1428 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1426, ptr noundef @.str.232, i32 noundef %1427) #8
  br label %1429

1429:                                             ; preds = %1425, %1422
  %1430 = load ptr, ptr %7, align 8, !tbaa !5
  %1431 = load ptr, ptr %4, align 8, !tbaa !5
  %1432 = getelementptr inbounds %struct.lemon, ptr %1431, i32 0, i32 8
  %1433 = load i32, ptr %1432, align 4, !tbaa !24
  %1434 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1430, ptr noundef @.str.233, i32 noundef %1433) #8
  %1435 = load i32, ptr %17, align 4, !tbaa !9
  %1436 = icmp eq i32 %1435, 9
  br i1 %1436, label %1437, label %1442

1437:                                             ; preds = %1429
  %1438 = load ptr, ptr %7, align 8, !tbaa !5
  %1439 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1438, ptr noundef @.str.15) #8
  %1440 = load i32, ptr %11, align 4, !tbaa !9
  %1441 = add nsw i32 %1440, 1
  store i32 %1441, ptr %11, align 4, !tbaa !9
  store i32 0, ptr %17, align 4, !tbaa !9
  br label %1445

1442:                                             ; preds = %1429
  %1443 = load i32, ptr %17, align 4, !tbaa !9
  %1444 = add nsw i32 %1443, 1
  store i32 %1444, ptr %17, align 4, !tbaa !9
  br label %1445

1445:                                             ; preds = %1442, %1437
  %1446 = load i32, ptr %16, align 4, !tbaa !9
  %1447 = add nsw i32 %1446, 1
  store i32 %1447, ptr %16, align 4, !tbaa !9
  br label %1418, !llvm.loop !99

1448:                                             ; preds = %1418
  %1449 = load i32, ptr %17, align 4, !tbaa !9
  %1450 = icmp sgt i32 %1449, 0
  br i1 %1450, label %1451, label %1456

1451:                                             ; preds = %1448
  %1452 = load ptr, ptr %7, align 8, !tbaa !5
  %1453 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1452, ptr noundef @.str.15) #8
  %1454 = load i32, ptr %11, align 4, !tbaa !9
  %1455 = add nsw i32 %1454, 1
  store i32 %1455, ptr %11, align 4, !tbaa !9
  br label %1456

1456:                                             ; preds = %1451, %1448
  %1457 = load ptr, ptr %7, align 8, !tbaa !5
  %1458 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1457, ptr noundef @.str.234) #8
  %1459 = load i32, ptr %11, align 4, !tbaa !9
  %1460 = add nsw i32 %1459, 1
  store i32 %1460, ptr %11, align 4, !tbaa !9
  %1461 = load ptr, ptr %4, align 8, !tbaa !5
  %1462 = getelementptr inbounds %struct.lemon, ptr %1461, i32 0, i32 4
  %1463 = load i32, ptr %1462, align 4, !tbaa !61
  store i32 %1463, ptr %18, align 4, !tbaa !9
  br label %1464

1464:                                             ; preds = %1481, %1456
  %1465 = load i32, ptr %18, align 4, !tbaa !9
  %1466 = icmp sgt i32 %1465, 0
  br i1 %1466, label %1467, label %1479

1467:                                             ; preds = %1464
  %1468 = load ptr, ptr %4, align 8, !tbaa !5
  %1469 = getelementptr inbounds %struct.lemon, ptr %1468, i32 0, i32 0
  %1470 = load ptr, ptr %1469, align 8, !tbaa !62
  %1471 = load i32, ptr %18, align 4, !tbaa !9
  %1472 = sub nsw i32 %1471, 1
  %1473 = sext i32 %1472 to i64
  %1474 = getelementptr inbounds ptr, ptr %1470, i64 %1473
  %1475 = load ptr, ptr %1474, align 8, !tbaa !5
  %1476 = getelementptr inbounds %struct.state, ptr %1475, i32 0, i32 6
  %1477 = load i32, ptr %1476, align 8, !tbaa !78
  %1478 = icmp eq i32 %1477, -2147483647
  br label %1479

1479:                                             ; preds = %1467, %1464
  %1480 = phi i1 [ false, %1464 ], [ %1478, %1467 ]
  br i1 %1480, label %1481, label %1484

1481:                                             ; preds = %1479
  %1482 = load i32, ptr %18, align 4, !tbaa !9
  %1483 = add nsw i32 %1482, -1
  store i32 %1483, ptr %18, align 4, !tbaa !9
  br label %1464, !llvm.loop !100

1484:                                             ; preds = %1479
  %1485 = load ptr, ptr %7, align 8, !tbaa !5
  %1486 = load i32, ptr %18, align 4, !tbaa !9
  %1487 = sub nsw i32 %1486, 1
  %1488 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1485, ptr noundef @.str.236, i32 noundef %1487) #8
  %1489 = load i32, ptr %11, align 4, !tbaa !9
  %1490 = add nsw i32 %1489, 1
  store i32 %1490, ptr %11, align 4, !tbaa !9
  %1491 = load ptr, ptr %7, align 8, !tbaa !5
  %1492 = load i32, ptr %24, align 4, !tbaa !9
  %1493 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1491, ptr noundef @.str.237, i32 noundef %1492) #8
  %1494 = load i32, ptr %11, align 4, !tbaa !9
  %1495 = add nsw i32 %1494, 1
  store i32 %1495, ptr %11, align 4, !tbaa !9
  %1496 = load ptr, ptr %7, align 8, !tbaa !5
  %1497 = load i32, ptr %25, align 4, !tbaa !9
  %1498 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1496, ptr noundef @.str.238, i32 noundef %1497) #8
  %1499 = load i32, ptr %11, align 4, !tbaa !9
  %1500 = add nsw i32 %1499, 1
  store i32 %1500, ptr %11, align 4, !tbaa !9
  %1501 = load ptr, ptr %7, align 8, !tbaa !5
  %1502 = load i32, ptr %24, align 4, !tbaa !9
  %1503 = load ptr, ptr %4, align 8, !tbaa !5
  %1504 = getelementptr inbounds %struct.lemon, ptr %1503, i32 0, i32 8
  %1505 = load i32, ptr %1504, align 4, !tbaa !24
  %1506 = load ptr, ptr %4, align 8, !tbaa !5
  %1507 = getelementptr inbounds %struct.lemon, ptr %1506, i32 0, i32 38
  %1508 = load i32, ptr %1507, align 4, !tbaa !88
  %1509 = add nsw i32 %1505, %1508
  %1510 = call ptr @minimum_size_type(i32 noundef %1502, i32 noundef %1509, ptr noundef %19)
  %1511 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1501, ptr noundef @.str.239, ptr noundef %1510) #8
  %1512 = load i32, ptr %11, align 4, !tbaa !9
  %1513 = add nsw i32 %1512, 1
  store i32 %1513, ptr %11, align 4, !tbaa !9
  %1514 = load i32, ptr %18, align 4, !tbaa !9
  %1515 = load i32, ptr %19, align 4, !tbaa !9
  %1516 = mul nsw i32 %1514, %1515
  %1517 = load ptr, ptr %4, align 8, !tbaa !5
  %1518 = getelementptr inbounds %struct.lemon, ptr %1517, i32 0, i32 40
  %1519 = load i32, ptr %1518, align 4, !tbaa !89
  %1520 = add nsw i32 %1519, %1516
  store i32 %1520, ptr %1518, align 4, !tbaa !89
  store i32 0, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %1521

1521:                                             ; preds = %1569, %1484
  %1522 = load i32, ptr %16, align 4, !tbaa !9
  %1523 = load i32, ptr %18, align 4, !tbaa !9
  %1524 = icmp slt i32 %1522, %1523
  br i1 %1524, label %1525, label %1572

1525:                                             ; preds = %1521
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #8
  %1526 = load ptr, ptr %4, align 8, !tbaa !5
  %1527 = getelementptr inbounds %struct.lemon, ptr %1526, i32 0, i32 0
  %1528 = load ptr, ptr %1527, align 8, !tbaa !62
  %1529 = load i32, ptr %16, align 4, !tbaa !9
  %1530 = sext i32 %1529 to i64
  %1531 = getelementptr inbounds ptr, ptr %1528, i64 %1530
  %1532 = load ptr, ptr %1531, align 8, !tbaa !5
  store ptr %1532, ptr %12, align 8, !tbaa !5
  %1533 = load ptr, ptr %12, align 8, !tbaa !5
  %1534 = getelementptr inbounds %struct.state, ptr %1533, i32 0, i32 6
  %1535 = load i32, ptr %1534, align 8, !tbaa !78
  store i32 %1535, ptr %38, align 4, !tbaa !9
  %1536 = load i32, ptr %38, align 4, !tbaa !9
  %1537 = icmp eq i32 %1536, -2147483647
  br i1 %1537, label %1538, label %1542

1538:                                             ; preds = %1525
  %1539 = load ptr, ptr %4, align 8, !tbaa !5
  %1540 = getelementptr inbounds %struct.lemon, ptr %1539, i32 0, i32 38
  %1541 = load i32, ptr %1540, align 4, !tbaa !88
  store i32 %1541, ptr %38, align 4, !tbaa !9
  br label %1542

1542:                                             ; preds = %1538, %1525
  %1543 = load i32, ptr %17, align 4, !tbaa !9
  %1544 = icmp eq i32 %1543, 0
  br i1 %1544, label %1545, label %1549

1545:                                             ; preds = %1542
  %1546 = load ptr, ptr %7, align 8, !tbaa !5
  %1547 = load i32, ptr %16, align 4, !tbaa !9
  %1548 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1546, ptr noundef @.str.232, i32 noundef %1547) #8
  br label %1549

1549:                                             ; preds = %1545, %1542
  %1550 = load ptr, ptr %7, align 8, !tbaa !5
  %1551 = load i32, ptr %38, align 4, !tbaa !9
  %1552 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1550, ptr noundef @.str.233, i32 noundef %1551) #8
  %1553 = load i32, ptr %17, align 4, !tbaa !9
  %1554 = icmp eq i32 %1553, 9
  br i1 %1554, label %1560, label %1555

1555:                                             ; preds = %1549
  %1556 = load i32, ptr %16, align 4, !tbaa !9
  %1557 = load i32, ptr %18, align 4, !tbaa !9
  %1558 = sub nsw i32 %1557, 1
  %1559 = icmp eq i32 %1556, %1558
  br i1 %1559, label %1560, label %1565

1560:                                             ; preds = %1555, %1549
  %1561 = load ptr, ptr %7, align 8, !tbaa !5
  %1562 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1561, ptr noundef @.str.15) #8
  %1563 = load i32, ptr %11, align 4, !tbaa !9
  %1564 = add nsw i32 %1563, 1
  store i32 %1564, ptr %11, align 4, !tbaa !9
  store i32 0, ptr %17, align 4, !tbaa !9
  br label %1568

1565:                                             ; preds = %1555
  %1566 = load i32, ptr %17, align 4, !tbaa !9
  %1567 = add nsw i32 %1566, 1
  store i32 %1567, ptr %17, align 4, !tbaa !9
  br label %1568

1568:                                             ; preds = %1565, %1560
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #8
  br label %1569

1569:                                             ; preds = %1568
  %1570 = load i32, ptr %16, align 4, !tbaa !9
  %1571 = add nsw i32 %1570, 1
  store i32 %1571, ptr %16, align 4, !tbaa !9
  br label %1521, !llvm.loop !101

1572:                                             ; preds = %1521
  %1573 = load ptr, ptr %7, align 8, !tbaa !5
  %1574 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1573, ptr noundef @.str.234) #8
  %1575 = load i32, ptr %11, align 4, !tbaa !9
  %1576 = add nsw i32 %1575, 1
  store i32 %1576, ptr %11, align 4, !tbaa !9
  %1577 = load ptr, ptr %4, align 8, !tbaa !5
  %1578 = getelementptr inbounds %struct.lemon, ptr %1577, i32 0, i32 4
  %1579 = load i32, ptr %1578, align 4, !tbaa !61
  store i32 %1579, ptr %18, align 4, !tbaa !9
  br label %1580

1580:                                             ; preds = %1597, %1572
  %1581 = load i32, ptr %18, align 4, !tbaa !9
  %1582 = icmp sgt i32 %1581, 0
  br i1 %1582, label %1583, label %1595

1583:                                             ; preds = %1580
  %1584 = load ptr, ptr %4, align 8, !tbaa !5
  %1585 = getelementptr inbounds %struct.lemon, ptr %1584, i32 0, i32 0
  %1586 = load ptr, ptr %1585, align 8, !tbaa !62
  %1587 = load i32, ptr %18, align 4, !tbaa !9
  %1588 = sub nsw i32 %1587, 1
  %1589 = sext i32 %1588 to i64
  %1590 = getelementptr inbounds ptr, ptr %1586, i64 %1589
  %1591 = load ptr, ptr %1590, align 8, !tbaa !5
  %1592 = getelementptr inbounds %struct.state, ptr %1591, i32 0, i32 7
  %1593 = load i32, ptr %1592, align 4, !tbaa !80
  %1594 = icmp eq i32 %1593, -2147483647
  br label %1595

1595:                                             ; preds = %1583, %1580
  %1596 = phi i1 [ false, %1580 ], [ %1594, %1583 ]
  br i1 %1596, label %1597, label %1600

1597:                                             ; preds = %1595
  %1598 = load i32, ptr %18, align 4, !tbaa !9
  %1599 = add nsw i32 %1598, -1
  store i32 %1599, ptr %18, align 4, !tbaa !9
  br label %1580, !llvm.loop !102

1600:                                             ; preds = %1595
  %1601 = load ptr, ptr %7, align 8, !tbaa !5
  %1602 = load i32, ptr %18, align 4, !tbaa !9
  %1603 = sub nsw i32 %1602, 1
  %1604 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1601, ptr noundef @.str.240, i32 noundef %1603) #8
  %1605 = load i32, ptr %11, align 4, !tbaa !9
  %1606 = add nsw i32 %1605, 1
  store i32 %1606, ptr %11, align 4, !tbaa !9
  %1607 = load ptr, ptr %7, align 8, !tbaa !5
  %1608 = load i32, ptr %26, align 4, !tbaa !9
  %1609 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1607, ptr noundef @.str.241, i32 noundef %1608) #8
  %1610 = load i32, ptr %11, align 4, !tbaa !9
  %1611 = add nsw i32 %1610, 1
  store i32 %1611, ptr %11, align 4, !tbaa !9
  %1612 = load ptr, ptr %7, align 8, !tbaa !5
  %1613 = load i32, ptr %27, align 4, !tbaa !9
  %1614 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1612, ptr noundef @.str.242, i32 noundef %1613) #8
  %1615 = load i32, ptr %11, align 4, !tbaa !9
  %1616 = add nsw i32 %1615, 1
  store i32 %1616, ptr %11, align 4, !tbaa !9
  %1617 = load ptr, ptr %7, align 8, !tbaa !5
  %1618 = load i32, ptr %26, align 4, !tbaa !9
  %1619 = sub nsw i32 %1618, 1
  %1620 = load i32, ptr %27, align 4, !tbaa !9
  %1621 = call ptr @minimum_size_type(i32 noundef %1619, i32 noundef %1620, ptr noundef %19)
  %1622 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1617, ptr noundef @.str.243, ptr noundef %1621) #8
  %1623 = load i32, ptr %11, align 4, !tbaa !9
  %1624 = add nsw i32 %1623, 1
  store i32 %1624, ptr %11, align 4, !tbaa !9
  %1625 = load i32, ptr %18, align 4, !tbaa !9
  %1626 = load i32, ptr %19, align 4, !tbaa !9
  %1627 = mul nsw i32 %1625, %1626
  %1628 = load ptr, ptr %4, align 8, !tbaa !5
  %1629 = getelementptr inbounds %struct.lemon, ptr %1628, i32 0, i32 40
  %1630 = load i32, ptr %1629, align 4, !tbaa !89
  %1631 = add nsw i32 %1630, %1627
  store i32 %1631, ptr %1629, align 4, !tbaa !89
  store i32 0, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %1632

1632:                                             ; preds = %1679, %1600
  %1633 = load i32, ptr %16, align 4, !tbaa !9
  %1634 = load i32, ptr %18, align 4, !tbaa !9
  %1635 = icmp slt i32 %1633, %1634
  br i1 %1635, label %1636, label %1682

1636:                                             ; preds = %1632
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #8
  %1637 = load ptr, ptr %4, align 8, !tbaa !5
  %1638 = getelementptr inbounds %struct.lemon, ptr %1637, i32 0, i32 0
  %1639 = load ptr, ptr %1638, align 8, !tbaa !62
  %1640 = load i32, ptr %16, align 4, !tbaa !9
  %1641 = sext i32 %1640 to i64
  %1642 = getelementptr inbounds ptr, ptr %1639, i64 %1641
  %1643 = load ptr, ptr %1642, align 8, !tbaa !5
  store ptr %1643, ptr %12, align 8, !tbaa !5
  %1644 = load ptr, ptr %12, align 8, !tbaa !5
  %1645 = getelementptr inbounds %struct.state, ptr %1644, i32 0, i32 7
  %1646 = load i32, ptr %1645, align 4, !tbaa !80
  store i32 %1646, ptr %39, align 4, !tbaa !9
  %1647 = load i32, ptr %39, align 4, !tbaa !9
  %1648 = icmp eq i32 %1647, -2147483647
  br i1 %1648, label %1649, label %1652

1649:                                             ; preds = %1636
  %1650 = load i32, ptr %26, align 4, !tbaa !9
  %1651 = sub nsw i32 %1650, 1
  store i32 %1651, ptr %39, align 4, !tbaa !9
  br label %1652

1652:                                             ; preds = %1649, %1636
  %1653 = load i32, ptr %17, align 4, !tbaa !9
  %1654 = icmp eq i32 %1653, 0
  br i1 %1654, label %1655, label %1659

1655:                                             ; preds = %1652
  %1656 = load ptr, ptr %7, align 8, !tbaa !5
  %1657 = load i32, ptr %16, align 4, !tbaa !9
  %1658 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1656, ptr noundef @.str.232, i32 noundef %1657) #8
  br label %1659

1659:                                             ; preds = %1655, %1652
  %1660 = load ptr, ptr %7, align 8, !tbaa !5
  %1661 = load i32, ptr %39, align 4, !tbaa !9
  %1662 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1660, ptr noundef @.str.233, i32 noundef %1661) #8
  %1663 = load i32, ptr %17, align 4, !tbaa !9
  %1664 = icmp eq i32 %1663, 9
  br i1 %1664, label %1670, label %1665

1665:                                             ; preds = %1659
  %1666 = load i32, ptr %16, align 4, !tbaa !9
  %1667 = load i32, ptr %18, align 4, !tbaa !9
  %1668 = sub nsw i32 %1667, 1
  %1669 = icmp eq i32 %1666, %1668
  br i1 %1669, label %1670, label %1675

1670:                                             ; preds = %1665, %1659
  %1671 = load ptr, ptr %7, align 8, !tbaa !5
  %1672 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1671, ptr noundef @.str.15) #8
  %1673 = load i32, ptr %11, align 4, !tbaa !9
  %1674 = add nsw i32 %1673, 1
  store i32 %1674, ptr %11, align 4, !tbaa !9
  store i32 0, ptr %17, align 4, !tbaa !9
  br label %1678

1675:                                             ; preds = %1665
  %1676 = load i32, ptr %17, align 4, !tbaa !9
  %1677 = add nsw i32 %1676, 1
  store i32 %1677, ptr %17, align 4, !tbaa !9
  br label %1678

1678:                                             ; preds = %1675, %1670
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #8
  br label %1679

1679:                                             ; preds = %1678
  %1680 = load i32, ptr %16, align 4, !tbaa !9
  %1681 = add nsw i32 %1680, 1
  store i32 %1681, ptr %16, align 4, !tbaa !9
  br label %1632, !llvm.loop !103

1682:                                             ; preds = %1632
  %1683 = load ptr, ptr %7, align 8, !tbaa !5
  %1684 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1683, ptr noundef @.str.234) #8
  %1685 = load i32, ptr %11, align 4, !tbaa !9
  %1686 = add nsw i32 %1685, 1
  store i32 %1686, ptr %11, align 4, !tbaa !9
  %1687 = load ptr, ptr %7, align 8, !tbaa !5
  %1688 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1687, ptr noundef @.str.244) #8
  %1689 = load i32, ptr %11, align 4, !tbaa !9
  %1690 = add nsw i32 %1689, 1
  store i32 %1690, ptr %11, align 4, !tbaa !9
  %1691 = load ptr, ptr %4, align 8, !tbaa !5
  %1692 = getelementptr inbounds %struct.lemon, ptr %1691, i32 0, i32 4
  %1693 = load i32, ptr %1692, align 4, !tbaa !61
  store i32 %1693, ptr %18, align 4, !tbaa !9
  %1694 = load i32, ptr %18, align 4, !tbaa !9
  %1695 = load i32, ptr %21, align 4, !tbaa !9
  %1696 = mul nsw i32 %1694, %1695
  %1697 = load ptr, ptr %4, align 8, !tbaa !5
  %1698 = getelementptr inbounds %struct.lemon, ptr %1697, i32 0, i32 40
  %1699 = load i32, ptr %1698, align 4, !tbaa !89
  %1700 = add nsw i32 %1699, %1696
  store i32 %1700, ptr %1698, align 4, !tbaa !89
  store i32 0, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %1701

1701:                                             ; preds = %1757, %1682
  %1702 = load i32, ptr %16, align 4, !tbaa !9
  %1703 = load i32, ptr %18, align 4, !tbaa !9
  %1704 = icmp slt i32 %1702, %1703
  br i1 %1704, label %1705, label %1760

1705:                                             ; preds = %1701
  %1706 = load ptr, ptr %4, align 8, !tbaa !5
  %1707 = getelementptr inbounds %struct.lemon, ptr %1706, i32 0, i32 0
  %1708 = load ptr, ptr %1707, align 8, !tbaa !62
  %1709 = load i32, ptr %16, align 4, !tbaa !9
  %1710 = sext i32 %1709 to i64
  %1711 = getelementptr inbounds ptr, ptr %1708, i64 %1710
  %1712 = load ptr, ptr %1711, align 8, !tbaa !5
  store ptr %1712, ptr %12, align 8, !tbaa !5
  %1713 = load i32, ptr %17, align 4, !tbaa !9
  %1714 = icmp eq i32 %1713, 0
  br i1 %1714, label %1715, label %1719

1715:                                             ; preds = %1705
  %1716 = load ptr, ptr %7, align 8, !tbaa !5
  %1717 = load i32, ptr %16, align 4, !tbaa !9
  %1718 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1716, ptr noundef @.str.232, i32 noundef %1717) #8
  br label %1719

1719:                                             ; preds = %1715, %1705
  %1720 = load ptr, ptr %12, align 8, !tbaa !5
  %1721 = getelementptr inbounds %struct.state, ptr %1720, i32 0, i32 8
  %1722 = load i32, ptr %1721, align 8, !tbaa !104
  %1723 = icmp slt i32 %1722, 0
  br i1 %1723, label %1724, label %1730

1724:                                             ; preds = %1719
  %1725 = load ptr, ptr %7, align 8, !tbaa !5
  %1726 = load ptr, ptr %4, align 8, !tbaa !5
  %1727 = getelementptr inbounds %struct.lemon, ptr %1726, i32 0, i32 10
  %1728 = load i32, ptr %1727, align 4, !tbaa !15
  %1729 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1725, ptr noundef @.str.233, i32 noundef %1728) #8
  br label %1740

1730:                                             ; preds = %1719
  %1731 = load ptr, ptr %7, align 8, !tbaa !5
  %1732 = load ptr, ptr %12, align 8, !tbaa !5
  %1733 = getelementptr inbounds %struct.state, ptr %1732, i32 0, i32 8
  %1734 = load i32, ptr %1733, align 8, !tbaa !104
  %1735 = load ptr, ptr %4, align 8, !tbaa !5
  %1736 = getelementptr inbounds %struct.lemon, ptr %1735, i32 0, i32 13
  %1737 = load i32, ptr %1736, align 8, !tbaa !18
  %1738 = add nsw i32 %1734, %1737
  %1739 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1731, ptr noundef @.str.233, i32 noundef %1738) #8
  br label %1740

1740:                                             ; preds = %1730, %1724
  %1741 = load i32, ptr %17, align 4, !tbaa !9
  %1742 = icmp eq i32 %1741, 9
  br i1 %1742, label %1748, label %1743

1743:                                             ; preds = %1740
  %1744 = load i32, ptr %16, align 4, !tbaa !9
  %1745 = load i32, ptr %18, align 4, !tbaa !9
  %1746 = sub nsw i32 %1745, 1
  %1747 = icmp eq i32 %1744, %1746
  br i1 %1747, label %1748, label %1753

1748:                                             ; preds = %1743, %1740
  %1749 = load ptr, ptr %7, align 8, !tbaa !5
  %1750 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1749, ptr noundef @.str.15) #8
  %1751 = load i32, ptr %11, align 4, !tbaa !9
  %1752 = add nsw i32 %1751, 1
  store i32 %1752, ptr %11, align 4, !tbaa !9
  store i32 0, ptr %17, align 4, !tbaa !9
  br label %1756

1753:                                             ; preds = %1743
  %1754 = load i32, ptr %17, align 4, !tbaa !9
  %1755 = add nsw i32 %1754, 1
  store i32 %1755, ptr %17, align 4, !tbaa !9
  br label %1756

1756:                                             ; preds = %1753, %1748
  br label %1757

1757:                                             ; preds = %1756
  %1758 = load i32, ptr %16, align 4, !tbaa !9
  %1759 = add nsw i32 %1758, 1
  store i32 %1759, ptr %16, align 4, !tbaa !9
  br label %1701, !llvm.loop !105

1760:                                             ; preds = %1701
  %1761 = load ptr, ptr %7, align 8, !tbaa !5
  %1762 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1761, ptr noundef @.str.234) #8
  %1763 = load i32, ptr %11, align 4, !tbaa !9
  %1764 = add nsw i32 %1763, 1
  store i32 %1764, ptr %11, align 4, !tbaa !9
  %1765 = load ptr, ptr %4, align 8, !tbaa !5
  %1766 = getelementptr inbounds %struct.lemon, ptr %1765, i32 0, i32 19
  %1767 = load ptr, ptr %1766, align 8, !tbaa !42
  %1768 = load ptr, ptr %8, align 8, !tbaa !5
  %1769 = load ptr, ptr %7, align 8, !tbaa !5
  call void @tplt_xfer(ptr noundef %1767, ptr noundef %1768, ptr noundef %1769, ptr noundef %11)
  %1770 = load ptr, ptr %4, align 8, !tbaa !5
  %1771 = getelementptr inbounds %struct.lemon, ptr %1770, i32 0, i32 42
  %1772 = load i32, ptr %1771, align 4, !tbaa !60
  %1773 = icmp ne i32 %1772, 0
  br i1 %1773, label %1774, label %1832

1774:                                             ; preds = %1760
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #8
  %1775 = load ptr, ptr %4, align 8, !tbaa !5
  %1776 = getelementptr inbounds %struct.lemon, ptr %1775, i32 0, i32 8
  %1777 = load i32, ptr %1776, align 4, !tbaa !24
  %1778 = sub nsw i32 %1777, 1
  store i32 %1778, ptr %40, align 4, !tbaa !9
  %1779 = load i32, ptr %40, align 4, !tbaa !9
  %1780 = add nsw i32 %1779, 1
  %1781 = load i32, ptr %22, align 4, !tbaa !9
  %1782 = mul nsw i32 %1780, %1781
  %1783 = load ptr, ptr %4, align 8, !tbaa !5
  %1784 = getelementptr inbounds %struct.lemon, ptr %1783, i32 0, i32 40
  %1785 = load i32, ptr %1784, align 4, !tbaa !89
  %1786 = add nsw i32 %1785, %1782
  store i32 %1786, ptr %1784, align 4, !tbaa !89
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %1787

1787:                                             ; preds = %1828, %1774
  %1788 = load i32, ptr %16, align 4, !tbaa !9
  %1789 = load i32, ptr %40, align 4, !tbaa !9
  %1790 = icmp sle i32 %1788, %1789
  br i1 %1790, label %1791, label %1831

1791:                                             ; preds = %1787
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  %1792 = load ptr, ptr %4, align 8, !tbaa !5
  %1793 = getelementptr inbounds %struct.lemon, ptr %1792, i32 0, i32 15
  %1794 = load ptr, ptr %1793, align 8, !tbaa !21
  %1795 = load i32, ptr %16, align 4, !tbaa !9
  %1796 = sext i32 %1795 to i64
  %1797 = getelementptr inbounds ptr, ptr %1794, i64 %1796
  %1798 = load ptr, ptr %1797, align 8, !tbaa !5
  store ptr %1798, ptr %41, align 8, !tbaa !5
  %1799 = load ptr, ptr %41, align 8, !tbaa !5
  %1800 = getelementptr inbounds %struct.symbol, ptr %1799, i32 0, i32 4
  %1801 = load ptr, ptr %1800, align 8, !tbaa !25
  %1802 = icmp eq ptr %1801, null
  br i1 %1802, label %1803, label %1809

1803:                                             ; preds = %1791
  %1804 = load ptr, ptr %7, align 8, !tbaa !5
  %1805 = load ptr, ptr %41, align 8, !tbaa !5
  %1806 = getelementptr inbounds %struct.symbol, ptr %1805, i32 0, i32 0
  %1807 = load ptr, ptr %1806, align 8, !tbaa !22
  %1808 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1804, ptr noundef @.str.245, ptr noundef %1807) #8
  br label %1825

1809:                                             ; preds = %1791
  %1810 = load ptr, ptr %7, align 8, !tbaa !5
  %1811 = load ptr, ptr %41, align 8, !tbaa !5
  %1812 = getelementptr inbounds %struct.symbol, ptr %1811, i32 0, i32 4
  %1813 = load ptr, ptr %1812, align 8, !tbaa !25
  %1814 = getelementptr inbounds %struct.symbol, ptr %1813, i32 0, i32 1
  %1815 = load i32, ptr %1814, align 8, !tbaa !26
  %1816 = load ptr, ptr %41, align 8, !tbaa !5
  %1817 = getelementptr inbounds %struct.symbol, ptr %1816, i32 0, i32 0
  %1818 = load ptr, ptr %1817, align 8, !tbaa !22
  %1819 = load ptr, ptr %41, align 8, !tbaa !5
  %1820 = getelementptr inbounds %struct.symbol, ptr %1819, i32 0, i32 4
  %1821 = load ptr, ptr %1820, align 8, !tbaa !25
  %1822 = getelementptr inbounds %struct.symbol, ptr %1821, i32 0, i32 0
  %1823 = load ptr, ptr %1822, align 8, !tbaa !22
  %1824 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1810, ptr noundef @.str.246, i32 noundef %1815, ptr noundef %1818, ptr noundef %1823) #8
  br label %1825

1825:                                             ; preds = %1809, %1803
  %1826 = load i32, ptr %11, align 4, !tbaa !9
  %1827 = add nsw i32 %1826, 1
  store i32 %1827, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  br label %1828

1828:                                             ; preds = %1825
  %1829 = load i32, ptr %16, align 4, !tbaa !9
  %1830 = add nsw i32 %1829, 1
  store i32 %1830, ptr %16, align 4, !tbaa !9
  br label %1787, !llvm.loop !106

1831:                                             ; preds = %1787
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #8
  br label %1832

1832:                                             ; preds = %1831, %1760
  %1833 = load ptr, ptr %4, align 8, !tbaa !5
  %1834 = getelementptr inbounds %struct.lemon, ptr %1833, i32 0, i32 19
  %1835 = load ptr, ptr %1834, align 8, !tbaa !42
  %1836 = load ptr, ptr %8, align 8, !tbaa !5
  %1837 = load ptr, ptr %7, align 8, !tbaa !5
  call void @tplt_xfer(ptr noundef %1835, ptr noundef %1836, ptr noundef %1837, ptr noundef %11)
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %1838

1838:                                             ; preds = %1870, %1832
  %1839 = load i32, ptr %16, align 4, !tbaa !9
  %1840 = load ptr, ptr %4, align 8, !tbaa !5
  %1841 = getelementptr inbounds %struct.lemon, ptr %1840, i32 0, i32 7
  %1842 = load i32, ptr %1841, align 8, !tbaa !20
  %1843 = icmp slt i32 %1839, %1842
  br i1 %1843, label %1844, label %1873

1844:                                             ; preds = %1838
  %1845 = getelementptr inbounds [1000 x i8], ptr %10, i64 0, i64 0
  %1846 = load ptr, ptr %4, align 8, !tbaa !5
  %1847 = getelementptr inbounds %struct.lemon, ptr %1846, i32 0, i32 15
  %1848 = load ptr, ptr %1847, align 8, !tbaa !21
  %1849 = load i32, ptr %16, align 4, !tbaa !9
  %1850 = sext i32 %1849 to i64
  %1851 = getelementptr inbounds ptr, ptr %1848, i64 %1850
  %1852 = load ptr, ptr %1851, align 8, !tbaa !5
  %1853 = getelementptr inbounds %struct.symbol, ptr %1852, i32 0, i32 0
  %1854 = load ptr, ptr %1853, align 8, !tbaa !22
  %1855 = call i32 (ptr, ptr, ...) @lemon_sprintf(ptr noundef %1845, ptr noundef @.str.247, ptr noundef %1854)
  %1856 = load ptr, ptr %7, align 8, !tbaa !5
  %1857 = load i32, ptr %16, align 4, !tbaa !9
  %1858 = load ptr, ptr %4, align 8, !tbaa !5
  %1859 = getelementptr inbounds %struct.lemon, ptr %1858, i32 0, i32 15
  %1860 = load ptr, ptr %1859, align 8, !tbaa !21
  %1861 = load i32, ptr %16, align 4, !tbaa !9
  %1862 = sext i32 %1861 to i64
  %1863 = getelementptr inbounds ptr, ptr %1860, i64 %1862
  %1864 = load ptr, ptr %1863, align 8, !tbaa !5
  %1865 = getelementptr inbounds %struct.symbol, ptr %1864, i32 0, i32 0
  %1866 = load ptr, ptr %1865, align 8, !tbaa !22
  %1867 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1856, ptr noundef @.str.248, i32 noundef %1857, ptr noundef %1866) #8
  %1868 = load i32, ptr %11, align 4, !tbaa !9
  %1869 = add nsw i32 %1868, 1
  store i32 %1869, ptr %11, align 4, !tbaa !9
  br label %1870

1870:                                             ; preds = %1844
  %1871 = load i32, ptr %16, align 4, !tbaa !9
  %1872 = add nsw i32 %1871, 1
  store i32 %1872, ptr %16, align 4, !tbaa !9
  br label %1838, !llvm.loop !107

1873:                                             ; preds = %1838
  %1874 = load ptr, ptr %4, align 8, !tbaa !5
  %1875 = getelementptr inbounds %struct.lemon, ptr %1874, i32 0, i32 19
  %1876 = load ptr, ptr %1875, align 8, !tbaa !42
  %1877 = load ptr, ptr %8, align 8, !tbaa !5
  %1878 = load ptr, ptr %7, align 8, !tbaa !5
  call void @tplt_xfer(ptr noundef %1876, ptr noundef %1877, ptr noundef %1878, ptr noundef %11)
  store i32 0, ptr %16, align 4, !tbaa !9
  %1879 = load ptr, ptr %4, align 8, !tbaa !5
  %1880 = getelementptr inbounds %struct.lemon, ptr %1879, i32 0, i32 1
  %1881 = load ptr, ptr %1880, align 8, !tbaa !29
  store ptr %1881, ptr %14, align 8, !tbaa !5
  br label %1882

1882:                                             ; preds = %1903, %1873
  %1883 = load ptr, ptr %14, align 8, !tbaa !5
  %1884 = icmp ne ptr %1883, null
  br i1 %1884, label %1885, label %1909

1885:                                             ; preds = %1882
  %1886 = load ptr, ptr %14, align 8, !tbaa !5
  %1887 = getelementptr inbounds %struct.rule, ptr %1886, i32 0, i32 13
  %1888 = load i32, ptr %1887, align 4, !tbaa !30
  %1889 = load i32, ptr %16, align 4, !tbaa !9
  %1890 = icmp eq i32 %1888, %1889
  br i1 %1890, label %1891, label %1892

1891:                                             ; preds = %1885
  br label %1893

1892:                                             ; preds = %1885
  call void @__assert_fail(ptr noundef @.str.249, ptr noundef @.str.3, i32 noundef 4625, ptr noundef @__PRETTY_FUNCTION__.ReportTable) #9
  unreachable

1893:                                             ; preds = %1891
  %1894 = load ptr, ptr %7, align 8, !tbaa !5
  %1895 = load i32, ptr %16, align 4, !tbaa !9
  %1896 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1894, ptr noundef @.str.250, i32 noundef %1895) #8
  %1897 = load ptr, ptr %7, align 8, !tbaa !5
  %1898 = load ptr, ptr %14, align 8, !tbaa !5
  call void @writeRuleText(ptr noundef %1897, ptr noundef %1898)
  %1899 = load ptr, ptr %7, align 8, !tbaa !5
  %1900 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1899, ptr noundef @.str.251) #8
  %1901 = load i32, ptr %11, align 4, !tbaa !9
  %1902 = add nsw i32 %1901, 1
  store i32 %1902, ptr %11, align 4, !tbaa !9
  br label %1903

1903:                                             ; preds = %1893
  %1904 = load ptr, ptr %14, align 8, !tbaa !5
  %1905 = getelementptr inbounds %struct.rule, ptr %1904, i32 0, i32 20
  %1906 = load ptr, ptr %1905, align 8, !tbaa !40
  store ptr %1906, ptr %14, align 8, !tbaa !5
  %1907 = load i32, ptr %16, align 4, !tbaa !9
  %1908 = add nsw i32 %1907, 1
  store i32 %1908, ptr %16, align 4, !tbaa !9
  br label %1882, !llvm.loop !108

1909:                                             ; preds = %1882
  %1910 = load ptr, ptr %4, align 8, !tbaa !5
  %1911 = getelementptr inbounds %struct.lemon, ptr %1910, i32 0, i32 19
  %1912 = load ptr, ptr %1911, align 8, !tbaa !42
  %1913 = load ptr, ptr %8, align 8, !tbaa !5
  %1914 = load ptr, ptr %7, align 8, !tbaa !5
  call void @tplt_xfer(ptr noundef %1912, ptr noundef %1913, ptr noundef %1914, ptr noundef %11)
  %1915 = load ptr, ptr %4, align 8, !tbaa !5
  %1916 = getelementptr inbounds %struct.lemon, ptr %1915, i32 0, i32 32
  %1917 = load ptr, ptr %1916, align 8, !tbaa !109
  %1918 = icmp ne ptr %1917, null
  br i1 %1918, label %1919, label %2012

1919:                                             ; preds = %1909
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #8
  store i32 1, ptr %42, align 4, !tbaa !9
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %1920

1920:                                             ; preds = %1964, %1919
  %1921 = load i32, ptr %16, align 4, !tbaa !9
  %1922 = load ptr, ptr %4, align 8, !tbaa !5
  %1923 = getelementptr inbounds %struct.lemon, ptr %1922, i32 0, i32 7
  %1924 = load i32, ptr %1923, align 8, !tbaa !20
  %1925 = icmp slt i32 %1921, %1924
  br i1 %1925, label %1926, label %1967

1926:                                             ; preds = %1920
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #8
  %1927 = load ptr, ptr %4, align 8, !tbaa !5
  %1928 = getelementptr inbounds %struct.lemon, ptr %1927, i32 0, i32 15
  %1929 = load ptr, ptr %1928, align 8, !tbaa !21
  %1930 = load i32, ptr %16, align 4, !tbaa !9
  %1931 = sext i32 %1930 to i64
  %1932 = getelementptr inbounds ptr, ptr %1929, i64 %1931
  %1933 = load ptr, ptr %1932, align 8, !tbaa !5
  store ptr %1933, ptr %43, align 8, !tbaa !5
  %1934 = load ptr, ptr %43, align 8, !tbaa !5
  %1935 = icmp eq ptr %1934, null
  br i1 %1935, label %1941, label %1936

1936:                                             ; preds = %1926
  %1937 = load ptr, ptr %43, align 8, !tbaa !5
  %1938 = getelementptr inbounds %struct.symbol, ptr %1937, i32 0, i32 2
  %1939 = load i32, ptr %1938, align 4, !tbaa !35
  %1940 = icmp ne i32 %1939, 0
  br i1 %1940, label %1941, label %1942

1941:                                             ; preds = %1936, %1926
  store i32 81, ptr %29, align 4
  br label %1961

1942:                                             ; preds = %1936
  %1943 = load i32, ptr %42, align 4, !tbaa !9
  %1944 = icmp ne i32 %1943, 0
  br i1 %1944, label %1945, label %1950

1945:                                             ; preds = %1942
  %1946 = load ptr, ptr %7, align 8, !tbaa !5
  %1947 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1946, ptr noundef @.str.252) #8
  %1948 = load i32, ptr %11, align 4, !tbaa !9
  %1949 = add nsw i32 %1948, 1
  store i32 %1949, ptr %11, align 4, !tbaa !9
  store i32 0, ptr %42, align 4, !tbaa !9
  br label %1950

1950:                                             ; preds = %1945, %1942
  %1951 = load ptr, ptr %7, align 8, !tbaa !5
  %1952 = load ptr, ptr %43, align 8, !tbaa !5
  %1953 = getelementptr inbounds %struct.symbol, ptr %1952, i32 0, i32 1
  %1954 = load i32, ptr %1953, align 8, !tbaa !26
  %1955 = load ptr, ptr %43, align 8, !tbaa !5
  %1956 = getelementptr inbounds %struct.symbol, ptr %1955, i32 0, i32 0
  %1957 = load ptr, ptr %1956, align 8, !tbaa !22
  %1958 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1951, ptr noundef @.str.253, i32 noundef %1954, ptr noundef %1957) #8
  %1959 = load i32, ptr %11, align 4, !tbaa !9
  %1960 = add nsw i32 %1959, 1
  store i32 %1960, ptr %11, align 4, !tbaa !9
  store i32 0, ptr %29, align 4
  br label %1961

1961:                                             ; preds = %1950, %1941
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  %1962 = load i32, ptr %29, align 4
  switch i32 %1962, label %2548 [
    i32 0, label %1963
    i32 81, label %1964
  ]

1963:                                             ; preds = %1961
  br label %1964

1964:                                             ; preds = %1963, %1961
  %1965 = load i32, ptr %16, align 4, !tbaa !9
  %1966 = add nsw i32 %1965, 1
  store i32 %1966, ptr %16, align 4, !tbaa !9
  br label %1920, !llvm.loop !110

1967:                                             ; preds = %1920
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %1968

1968:                                             ; preds = %1988, %1967
  %1969 = load i32, ptr %16, align 4, !tbaa !9
  %1970 = load ptr, ptr %4, align 8, !tbaa !5
  %1971 = getelementptr inbounds %struct.lemon, ptr %1970, i32 0, i32 7
  %1972 = load i32, ptr %1971, align 8, !tbaa !20
  %1973 = icmp slt i32 %1969, %1972
  br i1 %1973, label %1974, label %1985

1974:                                             ; preds = %1968
  %1975 = load ptr, ptr %4, align 8, !tbaa !5
  %1976 = getelementptr inbounds %struct.lemon, ptr %1975, i32 0, i32 15
  %1977 = load ptr, ptr %1976, align 8, !tbaa !21
  %1978 = load i32, ptr %16, align 4, !tbaa !9
  %1979 = sext i32 %1978 to i64
  %1980 = getelementptr inbounds ptr, ptr %1977, i64 %1979
  %1981 = load ptr, ptr %1980, align 8, !tbaa !5
  %1982 = getelementptr inbounds %struct.symbol, ptr %1981, i32 0, i32 2
  %1983 = load i32, ptr %1982, align 4, !tbaa !35
  %1984 = icmp ne i32 %1983, 0
  br label %1985

1985:                                             ; preds = %1974, %1968
  %1986 = phi i1 [ false, %1968 ], [ %1984, %1974 ]
  br i1 %1986, label %1987, label %1991

1987:                                             ; preds = %1985
  br label %1988

1988:                                             ; preds = %1987
  %1989 = load i32, ptr %16, align 4, !tbaa !9
  %1990 = add nsw i32 %1989, 1
  store i32 %1990, ptr %16, align 4, !tbaa !9
  br label %1968, !llvm.loop !111

1991:                                             ; preds = %1985
  %1992 = load i32, ptr %16, align 4, !tbaa !9
  %1993 = load ptr, ptr %4, align 8, !tbaa !5
  %1994 = getelementptr inbounds %struct.lemon, ptr %1993, i32 0, i32 7
  %1995 = load i32, ptr %1994, align 8, !tbaa !20
  %1996 = icmp slt i32 %1992, %1995
  br i1 %1996, label %1997, label %2011

1997:                                             ; preds = %1991
  %1998 = load ptr, ptr %7, align 8, !tbaa !5
  %1999 = load ptr, ptr %4, align 8, !tbaa !5
  %2000 = getelementptr inbounds %struct.lemon, ptr %1999, i32 0, i32 15
  %2001 = load ptr, ptr %2000, align 8, !tbaa !21
  %2002 = load i32, ptr %16, align 4, !tbaa !9
  %2003 = sext i32 %2002 to i64
  %2004 = getelementptr inbounds ptr, ptr %2001, i64 %2003
  %2005 = load ptr, ptr %2004, align 8, !tbaa !5
  %2006 = load ptr, ptr %4, align 8, !tbaa !5
  call void @emit_destructor_code(ptr noundef %1998, ptr noundef %2005, ptr noundef %2006, ptr noundef %11)
  %2007 = load ptr, ptr %7, align 8, !tbaa !5
  %2008 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2007, ptr noundef @.str.254) #8
  %2009 = load i32, ptr %11, align 4, !tbaa !9
  %2010 = add nsw i32 %2009, 1
  store i32 %2010, ptr %11, align 4, !tbaa !9
  br label %2011

2011:                                             ; preds = %1997, %1991
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #8
  br label %2012

2012:                                             ; preds = %2011, %1909
  %2013 = load ptr, ptr %4, align 8, !tbaa !5
  %2014 = getelementptr inbounds %struct.lemon, ptr %2013, i32 0, i32 33
  %2015 = load ptr, ptr %2014, align 8, !tbaa !112
  %2016 = icmp ne ptr %2015, null
  br i1 %2016, label %2017, label %2088

2017:                                             ; preds = %2012
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  store ptr null, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #8
  store i32 1, ptr %45, align 4, !tbaa !9
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %2018

2018:                                             ; preds = %2073, %2017
  %2019 = load i32, ptr %16, align 4, !tbaa !9
  %2020 = load ptr, ptr %4, align 8, !tbaa !5
  %2021 = getelementptr inbounds %struct.lemon, ptr %2020, i32 0, i32 7
  %2022 = load i32, ptr %2021, align 8, !tbaa !20
  %2023 = icmp slt i32 %2019, %2022
  br i1 %2023, label %2024, label %2076

2024:                                             ; preds = %2018
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  %2025 = load ptr, ptr %4, align 8, !tbaa !5
  %2026 = getelementptr inbounds %struct.lemon, ptr %2025, i32 0, i32 15
  %2027 = load ptr, ptr %2026, align 8, !tbaa !21
  %2028 = load i32, ptr %16, align 4, !tbaa !9
  %2029 = sext i32 %2028 to i64
  %2030 = getelementptr inbounds ptr, ptr %2027, i64 %2029
  %2031 = load ptr, ptr %2030, align 8, !tbaa !5
  store ptr %2031, ptr %46, align 8, !tbaa !5
  %2032 = load ptr, ptr %46, align 8, !tbaa !5
  %2033 = icmp eq ptr %2032, null
  br i1 %2033, label %2049, label %2034

2034:                                             ; preds = %2024
  %2035 = load ptr, ptr %46, align 8, !tbaa !5
  %2036 = getelementptr inbounds %struct.symbol, ptr %2035, i32 0, i32 2
  %2037 = load i32, ptr %2036, align 4, !tbaa !35
  %2038 = icmp eq i32 %2037, 0
  br i1 %2038, label %2049, label %2039

2039:                                             ; preds = %2034
  %2040 = load ptr, ptr %46, align 8, !tbaa !5
  %2041 = getelementptr inbounds %struct.symbol, ptr %2040, i32 0, i32 1
  %2042 = load i32, ptr %2041, align 8, !tbaa !26
  %2043 = icmp sle i32 %2042, 0
  br i1 %2043, label %2049, label %2044

2044:                                             ; preds = %2039
  %2045 = load ptr, ptr %46, align 8, !tbaa !5
  %2046 = getelementptr inbounds %struct.symbol, ptr %2045, i32 0, i32 10
  %2047 = load ptr, ptr %2046, align 8, !tbaa !113
  %2048 = icmp ne ptr %2047, null
  br i1 %2048, label %2049, label %2050

2049:                                             ; preds = %2044, %2039, %2034, %2024
  store i32 87, ptr %29, align 4
  br label %2070

2050:                                             ; preds = %2044
  %2051 = load i32, ptr %45, align 4, !tbaa !9
  %2052 = icmp ne i32 %2051, 0
  br i1 %2052, label %2053, label %2058

2053:                                             ; preds = %2050
  %2054 = load ptr, ptr %7, align 8, !tbaa !5
  %2055 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2054, ptr noundef @.str.255) #8
  %2056 = load i32, ptr %11, align 4, !tbaa !9
  %2057 = add nsw i32 %2056, 1
  store i32 %2057, ptr %11, align 4, !tbaa !9
  store i32 0, ptr %45, align 4, !tbaa !9
  br label %2058

2058:                                             ; preds = %2053, %2050
  %2059 = load ptr, ptr %7, align 8, !tbaa !5
  %2060 = load ptr, ptr %46, align 8, !tbaa !5
  %2061 = getelementptr inbounds %struct.symbol, ptr %2060, i32 0, i32 1
  %2062 = load i32, ptr %2061, align 8, !tbaa !26
  %2063 = load ptr, ptr %46, align 8, !tbaa !5
  %2064 = getelementptr inbounds %struct.symbol, ptr %2063, i32 0, i32 0
  %2065 = load ptr, ptr %2064, align 8, !tbaa !22
  %2066 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2059, ptr noundef @.str.253, i32 noundef %2062, ptr noundef %2065) #8
  %2067 = load i32, ptr %11, align 4, !tbaa !9
  %2068 = add nsw i32 %2067, 1
  store i32 %2068, ptr %11, align 4, !tbaa !9
  %2069 = load ptr, ptr %46, align 8, !tbaa !5
  store ptr %2069, ptr %44, align 8, !tbaa !5
  store i32 0, ptr %29, align 4
  br label %2070

2070:                                             ; preds = %2058, %2049
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  %2071 = load i32, ptr %29, align 4
  switch i32 %2071, label %2548 [
    i32 0, label %2072
    i32 87, label %2073
  ]

2072:                                             ; preds = %2070
  br label %2073

2073:                                             ; preds = %2072, %2070
  %2074 = load i32, ptr %16, align 4, !tbaa !9
  %2075 = add nsw i32 %2074, 1
  store i32 %2075, ptr %16, align 4, !tbaa !9
  br label %2018, !llvm.loop !114

2076:                                             ; preds = %2018
  %2077 = load ptr, ptr %44, align 8, !tbaa !5
  %2078 = icmp ne ptr %2077, null
  br i1 %2078, label %2079, label %2083

2079:                                             ; preds = %2076
  %2080 = load ptr, ptr %7, align 8, !tbaa !5
  %2081 = load ptr, ptr %44, align 8, !tbaa !5
  %2082 = load ptr, ptr %4, align 8, !tbaa !5
  call void @emit_destructor_code(ptr noundef %2080, ptr noundef %2081, ptr noundef %2082, ptr noundef %11)
  br label %2083

2083:                                             ; preds = %2079, %2076
  %2084 = load ptr, ptr %7, align 8, !tbaa !5
  %2085 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2084, ptr noundef @.str.254) #8
  %2086 = load i32, ptr %11, align 4, !tbaa !9
  %2087 = add nsw i32 %2086, 1
  store i32 %2087, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  br label %2088

2088:                                             ; preds = %2083, %2012
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %2089

2089:                                             ; preds = %2212, %2088
  %2090 = load i32, ptr %16, align 4, !tbaa !9
  %2091 = load ptr, ptr %4, align 8, !tbaa !5
  %2092 = getelementptr inbounds %struct.lemon, ptr %2091, i32 0, i32 7
  %2093 = load i32, ptr %2092, align 8, !tbaa !20
  %2094 = icmp slt i32 %2090, %2093
  br i1 %2094, label %2095, label %2215

2095:                                             ; preds = %2089
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  %2096 = load ptr, ptr %4, align 8, !tbaa !5
  %2097 = getelementptr inbounds %struct.lemon, ptr %2096, i32 0, i32 15
  %2098 = load ptr, ptr %2097, align 8, !tbaa !21
  %2099 = load i32, ptr %16, align 4, !tbaa !9
  %2100 = sext i32 %2099 to i64
  %2101 = getelementptr inbounds ptr, ptr %2098, i64 %2100
  %2102 = load ptr, ptr %2101, align 8, !tbaa !5
  store ptr %2102, ptr %47, align 8, !tbaa !5
  %2103 = load ptr, ptr %47, align 8, !tbaa !5
  %2104 = icmp eq ptr %2103, null
  br i1 %2104, label %2115, label %2105

2105:                                             ; preds = %2095
  %2106 = load ptr, ptr %47, align 8, !tbaa !5
  %2107 = getelementptr inbounds %struct.symbol, ptr %2106, i32 0, i32 2
  %2108 = load i32, ptr %2107, align 4, !tbaa !35
  %2109 = icmp eq i32 %2108, 0
  br i1 %2109, label %2115, label %2110

2110:                                             ; preds = %2105
  %2111 = load ptr, ptr %47, align 8, !tbaa !5
  %2112 = getelementptr inbounds %struct.symbol, ptr %2111, i32 0, i32 10
  %2113 = load ptr, ptr %2112, align 8, !tbaa !113
  %2114 = icmp eq ptr %2113, null
  br i1 %2114, label %2115, label %2116

2115:                                             ; preds = %2110, %2105, %2095
  store i32 90, ptr %29, align 4
  br label %2209

2116:                                             ; preds = %2110
  %2117 = load ptr, ptr %47, align 8, !tbaa !5
  %2118 = getelementptr inbounds %struct.symbol, ptr %2117, i32 0, i32 11
  %2119 = load i32, ptr %2118, align 8, !tbaa !115
  %2120 = icmp slt i32 %2119, 0
  br i1 %2120, label %2121, label %2122

2121:                                             ; preds = %2116
  store i32 90, ptr %29, align 4
  br label %2209

2122:                                             ; preds = %2116
  %2123 = load ptr, ptr %7, align 8, !tbaa !5
  %2124 = load ptr, ptr %47, align 8, !tbaa !5
  %2125 = getelementptr inbounds %struct.symbol, ptr %2124, i32 0, i32 1
  %2126 = load i32, ptr %2125, align 8, !tbaa !26
  %2127 = load ptr, ptr %47, align 8, !tbaa !5
  %2128 = getelementptr inbounds %struct.symbol, ptr %2127, i32 0, i32 0
  %2129 = load ptr, ptr %2128, align 8, !tbaa !22
  %2130 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2123, ptr noundef @.str.253, i32 noundef %2126, ptr noundef %2129) #8
  %2131 = load i32, ptr %11, align 4, !tbaa !9
  %2132 = add nsw i32 %2131, 1
  store i32 %2132, ptr %11, align 4, !tbaa !9
  %2133 = load i32, ptr %16, align 4, !tbaa !9
  %2134 = add nsw i32 %2133, 1
  store i32 %2134, ptr %17, align 4, !tbaa !9
  br label %2135

2135:                                             ; preds = %2192, %2122
  %2136 = load i32, ptr %17, align 4, !tbaa !9
  %2137 = load ptr, ptr %4, align 8, !tbaa !5
  %2138 = getelementptr inbounds %struct.lemon, ptr %2137, i32 0, i32 7
  %2139 = load i32, ptr %2138, align 8, !tbaa !20
  %2140 = icmp slt i32 %2136, %2139
  br i1 %2140, label %2141, label %2195

2141:                                             ; preds = %2135
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #8
  %2142 = load ptr, ptr %4, align 8, !tbaa !5
  %2143 = getelementptr inbounds %struct.lemon, ptr %2142, i32 0, i32 15
  %2144 = load ptr, ptr %2143, align 8, !tbaa !21
  %2145 = load i32, ptr %17, align 4, !tbaa !9
  %2146 = sext i32 %2145 to i64
  %2147 = getelementptr inbounds ptr, ptr %2144, i64 %2146
  %2148 = load ptr, ptr %2147, align 8, !tbaa !5
  store ptr %2148, ptr %48, align 8, !tbaa !5
  %2149 = load ptr, ptr %48, align 8, !tbaa !5
  %2150 = icmp ne ptr %2149, null
  br i1 %2150, label %2151, label %2191

2151:                                             ; preds = %2141
  %2152 = load ptr, ptr %48, align 8, !tbaa !5
  %2153 = getelementptr inbounds %struct.symbol, ptr %2152, i32 0, i32 2
  %2154 = load i32, ptr %2153, align 4, !tbaa !35
  %2155 = icmp ne i32 %2154, 0
  br i1 %2155, label %2156, label %2191

2156:                                             ; preds = %2151
  %2157 = load ptr, ptr %48, align 8, !tbaa !5
  %2158 = getelementptr inbounds %struct.symbol, ptr %2157, i32 0, i32 10
  %2159 = load ptr, ptr %2158, align 8, !tbaa !113
  %2160 = icmp ne ptr %2159, null
  br i1 %2160, label %2161, label %2191

2161:                                             ; preds = %2156
  %2162 = load ptr, ptr %48, align 8, !tbaa !5
  %2163 = getelementptr inbounds %struct.symbol, ptr %2162, i32 0, i32 13
  %2164 = load i32, ptr %2163, align 8, !tbaa !59
  %2165 = load ptr, ptr %47, align 8, !tbaa !5
  %2166 = getelementptr inbounds %struct.symbol, ptr %2165, i32 0, i32 13
  %2167 = load i32, ptr %2166, align 8, !tbaa !59
  %2168 = icmp eq i32 %2164, %2167
  br i1 %2168, label %2169, label %2191

2169:                                             ; preds = %2161
  %2170 = load ptr, ptr %47, align 8, !tbaa !5
  %2171 = getelementptr inbounds %struct.symbol, ptr %2170, i32 0, i32 10
  %2172 = load ptr, ptr %2171, align 8, !tbaa !113
  %2173 = load ptr, ptr %48, align 8, !tbaa !5
  %2174 = getelementptr inbounds %struct.symbol, ptr %2173, i32 0, i32 10
  %2175 = load ptr, ptr %2174, align 8, !tbaa !113
  %2176 = call i32 @strcmp(ptr noundef %2172, ptr noundef %2175) #10
  %2177 = icmp eq i32 %2176, 0
  br i1 %2177, label %2178, label %2191

2178:                                             ; preds = %2169
  %2179 = load ptr, ptr %7, align 8, !tbaa !5
  %2180 = load ptr, ptr %48, align 8, !tbaa !5
  %2181 = getelementptr inbounds %struct.symbol, ptr %2180, i32 0, i32 1
  %2182 = load i32, ptr %2181, align 8, !tbaa !26
  %2183 = load ptr, ptr %48, align 8, !tbaa !5
  %2184 = getelementptr inbounds %struct.symbol, ptr %2183, i32 0, i32 0
  %2185 = load ptr, ptr %2184, align 8, !tbaa !22
  %2186 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2179, ptr noundef @.str.253, i32 noundef %2182, ptr noundef %2185) #8
  %2187 = load i32, ptr %11, align 4, !tbaa !9
  %2188 = add nsw i32 %2187, 1
  store i32 %2188, ptr %11, align 4, !tbaa !9
  %2189 = load ptr, ptr %48, align 8, !tbaa !5
  %2190 = getelementptr inbounds %struct.symbol, ptr %2189, i32 0, i32 11
  store i32 -1, ptr %2190, align 8, !tbaa !115
  br label %2191

2191:                                             ; preds = %2178, %2169, %2161, %2156, %2151, %2141
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  br label %2192

2192:                                             ; preds = %2191
  %2193 = load i32, ptr %17, align 4, !tbaa !9
  %2194 = add nsw i32 %2193, 1
  store i32 %2194, ptr %17, align 4, !tbaa !9
  br label %2135, !llvm.loop !116

2195:                                             ; preds = %2135
  %2196 = load ptr, ptr %7, align 8, !tbaa !5
  %2197 = load ptr, ptr %4, align 8, !tbaa !5
  %2198 = getelementptr inbounds %struct.lemon, ptr %2197, i32 0, i32 15
  %2199 = load ptr, ptr %2198, align 8, !tbaa !21
  %2200 = load i32, ptr %16, align 4, !tbaa !9
  %2201 = sext i32 %2200 to i64
  %2202 = getelementptr inbounds ptr, ptr %2199, i64 %2201
  %2203 = load ptr, ptr %2202, align 8, !tbaa !5
  %2204 = load ptr, ptr %4, align 8, !tbaa !5
  call void @emit_destructor_code(ptr noundef %2196, ptr noundef %2203, ptr noundef %2204, ptr noundef %11)
  %2205 = load ptr, ptr %7, align 8, !tbaa !5
  %2206 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2205, ptr noundef @.str.254) #8
  %2207 = load i32, ptr %11, align 4, !tbaa !9
  %2208 = add nsw i32 %2207, 1
  store i32 %2208, ptr %11, align 4, !tbaa !9
  store i32 0, ptr %29, align 4
  br label %2209

2209:                                             ; preds = %2195, %2121, %2115
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  %2210 = load i32, ptr %29, align 4
  switch i32 %2210, label %2548 [
    i32 0, label %2211
    i32 90, label %2212
  ]

2211:                                             ; preds = %2209
  br label %2212

2212:                                             ; preds = %2211, %2209
  %2213 = load i32, ptr %16, align 4, !tbaa !9
  %2214 = add nsw i32 %2213, 1
  store i32 %2214, ptr %16, align 4, !tbaa !9
  br label %2089, !llvm.loop !117

2215:                                             ; preds = %2089
  %2216 = load ptr, ptr %4, align 8, !tbaa !5
  %2217 = getelementptr inbounds %struct.lemon, ptr %2216, i32 0, i32 19
  %2218 = load ptr, ptr %2217, align 8, !tbaa !42
  %2219 = load ptr, ptr %8, align 8, !tbaa !5
  %2220 = load ptr, ptr %7, align 8, !tbaa !5
  call void @tplt_xfer(ptr noundef %2218, ptr noundef %2219, ptr noundef %2220, ptr noundef %11)
  %2221 = load ptr, ptr %7, align 8, !tbaa !5
  %2222 = load ptr, ptr %4, align 8, !tbaa !5
  %2223 = load ptr, ptr %4, align 8, !tbaa !5
  %2224 = getelementptr inbounds %struct.lemon, ptr %2223, i32 0, i32 28
  %2225 = load ptr, ptr %2224, align 8, !tbaa !118
  call void @tplt_print(ptr noundef %2221, ptr noundef %2222, ptr noundef %2225, ptr noundef %11)
  %2226 = load ptr, ptr %4, align 8, !tbaa !5
  %2227 = getelementptr inbounds %struct.lemon, ptr %2226, i32 0, i32 19
  %2228 = load ptr, ptr %2227, align 8, !tbaa !42
  %2229 = load ptr, ptr %8, align 8, !tbaa !5
  %2230 = load ptr, ptr %7, align 8, !tbaa !5
  call void @tplt_xfer(ptr noundef %2228, ptr noundef %2229, ptr noundef %2230, ptr noundef %11)
  store i32 0, ptr %16, align 4, !tbaa !9
  %2231 = load ptr, ptr %4, align 8, !tbaa !5
  %2232 = getelementptr inbounds %struct.lemon, ptr %2231, i32 0, i32 1
  %2233 = load ptr, ptr %2232, align 8, !tbaa !29
  store ptr %2233, ptr %14, align 8, !tbaa !5
  br label %2234

2234:                                             ; preds = %2252, %2215
  %2235 = load ptr, ptr %14, align 8, !tbaa !5
  %2236 = icmp ne ptr %2235, null
  br i1 %2236, label %2237, label %2258

2237:                                             ; preds = %2234
  %2238 = load ptr, ptr %7, align 8, !tbaa !5
  %2239 = load ptr, ptr %14, align 8, !tbaa !5
  %2240 = getelementptr inbounds %struct.rule, ptr %2239, i32 0, i32 0
  %2241 = load ptr, ptr %2240, align 8, !tbaa !32
  %2242 = getelementptr inbounds %struct.symbol, ptr %2241, i32 0, i32 1
  %2243 = load i32, ptr %2242, align 8, !tbaa !26
  %2244 = load i32, ptr %16, align 4, !tbaa !9
  %2245 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2238, ptr noundef @.str.256, i32 noundef %2243, i32 noundef %2244) #8
  %2246 = load ptr, ptr %7, align 8, !tbaa !5
  %2247 = load ptr, ptr %14, align 8, !tbaa !5
  call void @rule_print(ptr noundef %2246, ptr noundef %2247)
  %2248 = load ptr, ptr %7, align 8, !tbaa !5
  %2249 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2248, ptr noundef @.str.257) #8
  %2250 = load i32, ptr %11, align 4, !tbaa !9
  %2251 = add nsw i32 %2250, 1
  store i32 %2251, ptr %11, align 4, !tbaa !9
  br label %2252

2252:                                             ; preds = %2237
  %2253 = load ptr, ptr %14, align 8, !tbaa !5
  %2254 = getelementptr inbounds %struct.rule, ptr %2253, i32 0, i32 20
  %2255 = load ptr, ptr %2254, align 8, !tbaa !40
  store ptr %2255, ptr %14, align 8, !tbaa !5
  %2256 = load i32, ptr %16, align 4, !tbaa !9
  %2257 = add nsw i32 %2256, 1
  store i32 %2257, ptr %16, align 4, !tbaa !9
  br label %2234, !llvm.loop !119

2258:                                             ; preds = %2234
  %2259 = load ptr, ptr %4, align 8, !tbaa !5
  %2260 = getelementptr inbounds %struct.lemon, ptr %2259, i32 0, i32 19
  %2261 = load ptr, ptr %2260, align 8, !tbaa !42
  %2262 = load ptr, ptr %8, align 8, !tbaa !5
  %2263 = load ptr, ptr %7, align 8, !tbaa !5
  call void @tplt_xfer(ptr noundef %2261, ptr noundef %2262, ptr noundef %2263, ptr noundef %11)
  store i32 0, ptr %16, align 4, !tbaa !9
  %2264 = load ptr, ptr %4, align 8, !tbaa !5
  %2265 = getelementptr inbounds %struct.lemon, ptr %2264, i32 0, i32 1
  %2266 = load ptr, ptr %2265, align 8, !tbaa !29
  store ptr %2266, ptr %14, align 8, !tbaa !5
  br label %2267

2267:                                             ; preds = %2284, %2258
  %2268 = load ptr, ptr %14, align 8, !tbaa !5
  %2269 = icmp ne ptr %2268, null
  br i1 %2269, label %2270, label %2290

2270:                                             ; preds = %2267
  %2271 = load ptr, ptr %7, align 8, !tbaa !5
  %2272 = load ptr, ptr %14, align 8, !tbaa !5
  %2273 = getelementptr inbounds %struct.rule, ptr %2272, i32 0, i32 4
  %2274 = load i32, ptr %2273, align 8, !tbaa !33
  %2275 = sub nsw i32 0, %2274
  %2276 = load i32, ptr %16, align 4, !tbaa !9
  %2277 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2271, ptr noundef @.str.258, i32 noundef %2275, i32 noundef %2276) #8
  %2278 = load ptr, ptr %7, align 8, !tbaa !5
  %2279 = load ptr, ptr %14, align 8, !tbaa !5
  call void @rule_print(ptr noundef %2278, ptr noundef %2279)
  %2280 = load ptr, ptr %7, align 8, !tbaa !5
  %2281 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2280, ptr noundef @.str.257) #8
  %2282 = load i32, ptr %11, align 4, !tbaa !9
  %2283 = add nsw i32 %2282, 1
  store i32 %2283, ptr %11, align 4, !tbaa !9
  br label %2284

2284:                                             ; preds = %2270
  %2285 = load ptr, ptr %14, align 8, !tbaa !5
  %2286 = getelementptr inbounds %struct.rule, ptr %2285, i32 0, i32 20
  %2287 = load ptr, ptr %2286, align 8, !tbaa !40
  store ptr %2287, ptr %14, align 8, !tbaa !5
  %2288 = load i32, ptr %16, align 4, !tbaa !9
  %2289 = add nsw i32 %2288, 1
  store i32 %2289, ptr %16, align 4, !tbaa !9
  br label %2267, !llvm.loop !120

2290:                                             ; preds = %2267
  %2291 = load ptr, ptr %4, align 8, !tbaa !5
  %2292 = getelementptr inbounds %struct.lemon, ptr %2291, i32 0, i32 19
  %2293 = load ptr, ptr %2292, align 8, !tbaa !42
  %2294 = load ptr, ptr %8, align 8, !tbaa !5
  %2295 = load ptr, ptr %7, align 8, !tbaa !5
  call void @tplt_xfer(ptr noundef %2293, ptr noundef %2294, ptr noundef %2295, ptr noundef %11)
  store i32 0, ptr %16, align 4, !tbaa !9
  %2296 = load ptr, ptr %4, align 8, !tbaa !5
  %2297 = getelementptr inbounds %struct.lemon, ptr %2296, i32 0, i32 1
  %2298 = load ptr, ptr %2297, align 8, !tbaa !29
  store ptr %2298, ptr %14, align 8, !tbaa !5
  br label %2299

2299:                                             ; preds = %2308, %2290
  %2300 = load ptr, ptr %14, align 8, !tbaa !5
  %2301 = icmp ne ptr %2300, null
  br i1 %2301, label %2302, label %2312

2302:                                             ; preds = %2299
  %2303 = load ptr, ptr %4, align 8, !tbaa !5
  %2304 = load ptr, ptr %14, align 8, !tbaa !5
  %2305 = call i32 @translate_code(ptr noundef %2303, ptr noundef %2304)
  %2306 = load i32, ptr %16, align 4, !tbaa !9
  %2307 = add nsw i32 %2306, %2305
  store i32 %2307, ptr %16, align 4, !tbaa !9
  br label %2308

2308:                                             ; preds = %2302
  %2309 = load ptr, ptr %14, align 8, !tbaa !5
  %2310 = getelementptr inbounds %struct.rule, ptr %2309, i32 0, i32 20
  %2311 = load ptr, ptr %2310, align 8, !tbaa !40
  store ptr %2311, ptr %14, align 8, !tbaa !5
  br label %2299, !llvm.loop !121

2312:                                             ; preds = %2299
  %2313 = load i32, ptr %16, align 4, !tbaa !9
  %2314 = icmp ne i32 %2313, 0
  br i1 %2314, label %2315, label %2320

2315:                                             ; preds = %2312
  %2316 = load ptr, ptr %7, align 8, !tbaa !5
  %2317 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2316, ptr noundef @.str.259) #8
  %2318 = load i32, ptr %11, align 4, !tbaa !9
  %2319 = add nsw i32 %2318, 1
  store i32 %2319, ptr %11, align 4, !tbaa !9
  br label %2320

2320:                                             ; preds = %2315, %2312
  %2321 = load ptr, ptr %4, align 8, !tbaa !5
  %2322 = getelementptr inbounds %struct.lemon, ptr %2321, i32 0, i32 1
  %2323 = load ptr, ptr %2322, align 8, !tbaa !29
  store ptr %2323, ptr %14, align 8, !tbaa !5
  br label %2324

2324:                                             ; preds = %2416, %2320
  %2325 = load ptr, ptr %14, align 8, !tbaa !5
  %2326 = icmp ne ptr %2325, null
  br i1 %2326, label %2327, label %2420

2327:                                             ; preds = %2324
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  %2328 = load ptr, ptr %14, align 8, !tbaa !5
  %2329 = getelementptr inbounds %struct.rule, ptr %2328, i32 0, i32 15
  %2330 = load i32, ptr %2329, align 4, !tbaa !122
  %2331 = icmp ne i32 %2330, 0
  br i1 %2331, label %2332, label %2333

2332:                                             ; preds = %2327
  store i32 105, ptr %29, align 4
  br label %2413

2333:                                             ; preds = %2327
  %2334 = load ptr, ptr %14, align 8, !tbaa !5
  %2335 = getelementptr inbounds %struct.rule, ptr %2334, i32 0, i32 14
  %2336 = load i32, ptr %2335, align 8, !tbaa !123
  %2337 = icmp ne i32 %2336, 0
  br i1 %2337, label %2338, label %2339

2338:                                             ; preds = %2333
  store i32 105, ptr %29, align 4
  br label %2413

2339:                                             ; preds = %2333
  %2340 = load ptr, ptr %7, align 8, !tbaa !5
  %2341 = load ptr, ptr %14, align 8, !tbaa !5
  %2342 = getelementptr inbounds %struct.rule, ptr %2341, i32 0, i32 13
  %2343 = load i32, ptr %2342, align 4, !tbaa !30
  %2344 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2340, ptr noundef @.str.260, i32 noundef %2343) #8
  %2345 = load ptr, ptr %7, align 8, !tbaa !5
  %2346 = load ptr, ptr %14, align 8, !tbaa !5
  call void @writeRuleText(ptr noundef %2345, ptr noundef %2346)
  %2347 = load ptr, ptr %7, align 8, !tbaa !5
  %2348 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2347, ptr noundef @.str.257) #8
  %2349 = load i32, ptr %11, align 4, !tbaa !9
  %2350 = add nsw i32 %2349, 1
  store i32 %2350, ptr %11, align 4, !tbaa !9
  %2351 = load ptr, ptr %14, align 8, !tbaa !5
  %2352 = getelementptr inbounds %struct.rule, ptr %2351, i32 0, i32 20
  %2353 = load ptr, ptr %2352, align 8, !tbaa !40
  store ptr %2353, ptr %49, align 8, !tbaa !5
  br label %2354

2354:                                             ; preds = %2399, %2339
  %2355 = load ptr, ptr %49, align 8, !tbaa !5
  %2356 = icmp ne ptr %2355, null
  br i1 %2356, label %2357, label %2403

2357:                                             ; preds = %2354
  %2358 = load ptr, ptr %49, align 8, !tbaa !5
  %2359 = getelementptr inbounds %struct.rule, ptr %2358, i32 0, i32 8
  %2360 = load ptr, ptr %2359, align 8, !tbaa !124
  %2361 = load ptr, ptr %14, align 8, !tbaa !5
  %2362 = getelementptr inbounds %struct.rule, ptr %2361, i32 0, i32 8
  %2363 = load ptr, ptr %2362, align 8, !tbaa !124
  %2364 = icmp eq ptr %2360, %2363
  br i1 %2364, label %2365, label %2398

2365:                                             ; preds = %2357
  %2366 = load ptr, ptr %49, align 8, !tbaa !5
  %2367 = getelementptr inbounds %struct.rule, ptr %2366, i32 0, i32 9
  %2368 = load ptr, ptr %2367, align 8, !tbaa !125
  %2369 = load ptr, ptr %14, align 8, !tbaa !5
  %2370 = getelementptr inbounds %struct.rule, ptr %2369, i32 0, i32 9
  %2371 = load ptr, ptr %2370, align 8, !tbaa !125
  %2372 = icmp eq ptr %2368, %2371
  br i1 %2372, label %2373, label %2398

2373:                                             ; preds = %2365
  %2374 = load ptr, ptr %49, align 8, !tbaa !5
  %2375 = getelementptr inbounds %struct.rule, ptr %2374, i32 0, i32 10
  %2376 = load ptr, ptr %2375, align 8, !tbaa !126
  %2377 = load ptr, ptr %14, align 8, !tbaa !5
  %2378 = getelementptr inbounds %struct.rule, ptr %2377, i32 0, i32 10
  %2379 = load ptr, ptr %2378, align 8, !tbaa !126
  %2380 = icmp eq ptr %2376, %2379
  br i1 %2380, label %2381, label %2398

2381:                                             ; preds = %2373
  %2382 = load ptr, ptr %7, align 8, !tbaa !5
  %2383 = load ptr, ptr %49, align 8, !tbaa !5
  %2384 = getelementptr inbounds %struct.rule, ptr %2383, i32 0, i32 13
  %2385 = load i32, ptr %2384, align 4, !tbaa !30
  %2386 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2382, ptr noundef @.str.260, i32 noundef %2385) #8
  %2387 = load ptr, ptr %7, align 8, !tbaa !5
  %2388 = load ptr, ptr %49, align 8, !tbaa !5
  call void @writeRuleText(ptr noundef %2387, ptr noundef %2388)
  %2389 = load ptr, ptr %7, align 8, !tbaa !5
  %2390 = load ptr, ptr %49, align 8, !tbaa !5
  %2391 = getelementptr inbounds %struct.rule, ptr %2390, i32 0, i32 13
  %2392 = load i32, ptr %2391, align 4, !tbaa !30
  %2393 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2389, ptr noundef @.str.261, i32 noundef %2392) #8
  %2394 = load i32, ptr %11, align 4, !tbaa !9
  %2395 = add nsw i32 %2394, 1
  store i32 %2395, ptr %11, align 4, !tbaa !9
  %2396 = load ptr, ptr %49, align 8, !tbaa !5
  %2397 = getelementptr inbounds %struct.rule, ptr %2396, i32 0, i32 15
  store i32 1, ptr %2397, align 4, !tbaa !122
  br label %2398

2398:                                             ; preds = %2381, %2373, %2365, %2357
  br label %2399

2399:                                             ; preds = %2398
  %2400 = load ptr, ptr %49, align 8, !tbaa !5
  %2401 = getelementptr inbounds %struct.rule, ptr %2400, i32 0, i32 20
  %2402 = load ptr, ptr %2401, align 8, !tbaa !40
  store ptr %2402, ptr %49, align 8, !tbaa !5
  br label %2354, !llvm.loop !127

2403:                                             ; preds = %2354
  %2404 = load ptr, ptr %7, align 8, !tbaa !5
  %2405 = load ptr, ptr %14, align 8, !tbaa !5
  %2406 = load ptr, ptr %4, align 8, !tbaa !5
  call void @emit_code(ptr noundef %2404, ptr noundef %2405, ptr noundef %2406, ptr noundef %11)
  %2407 = load ptr, ptr %7, align 8, !tbaa !5
  %2408 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2407, ptr noundef @.str.262) #8
  %2409 = load i32, ptr %11, align 4, !tbaa !9
  %2410 = add nsw i32 %2409, 1
  store i32 %2410, ptr %11, align 4, !tbaa !9
  %2411 = load ptr, ptr %14, align 8, !tbaa !5
  %2412 = getelementptr inbounds %struct.rule, ptr %2411, i32 0, i32 15
  store i32 1, ptr %2412, align 4, !tbaa !122
  store i32 0, ptr %29, align 4
  br label %2413

2413:                                             ; preds = %2403, %2338, %2332
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  %2414 = load i32, ptr %29, align 4
  switch i32 %2414, label %2548 [
    i32 0, label %2415
    i32 105, label %2416
  ]

2415:                                             ; preds = %2413
  br label %2416

2416:                                             ; preds = %2415, %2413
  %2417 = load ptr, ptr %14, align 8, !tbaa !5
  %2418 = getelementptr inbounds %struct.rule, ptr %2417, i32 0, i32 20
  %2419 = load ptr, ptr %2418, align 8, !tbaa !40
  store ptr %2419, ptr %14, align 8, !tbaa !5
  br label %2324, !llvm.loop !128

2420:                                             ; preds = %2324
  %2421 = load ptr, ptr %7, align 8, !tbaa !5
  %2422 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2421, ptr noundef @.str.263) #8
  %2423 = load i32, ptr %11, align 4, !tbaa !9
  %2424 = add nsw i32 %2423, 1
  store i32 %2424, ptr %11, align 4, !tbaa !9
  %2425 = load ptr, ptr %4, align 8, !tbaa !5
  %2426 = getelementptr inbounds %struct.lemon, ptr %2425, i32 0, i32 1
  %2427 = load ptr, ptr %2426, align 8, !tbaa !29
  store ptr %2427, ptr %14, align 8, !tbaa !5
  br label %2428

2428:                                             ; preds = %2487, %2420
  %2429 = load ptr, ptr %14, align 8, !tbaa !5
  %2430 = icmp ne ptr %2429, null
  br i1 %2430, label %2431, label %2491

2431:                                             ; preds = %2428
  %2432 = load ptr, ptr %14, align 8, !tbaa !5
  %2433 = getelementptr inbounds %struct.rule, ptr %2432, i32 0, i32 15
  %2434 = load i32, ptr %2433, align 4, !tbaa !122
  %2435 = icmp ne i32 %2434, 0
  br i1 %2435, label %2436, label %2437

2436:                                             ; preds = %2431
  br label %2487

2437:                                             ; preds = %2431
  %2438 = load ptr, ptr %14, align 8, !tbaa !5
  %2439 = getelementptr inbounds %struct.rule, ptr %2438, i32 0, i32 14
  %2440 = load i32, ptr %2439, align 8, !tbaa !123
  %2441 = icmp ne i32 %2440, 0
  br i1 %2441, label %2442, label %2443

2442:                                             ; preds = %2437
  br label %2444

2443:                                             ; preds = %2437
  call void @__assert_fail(ptr noundef @.str.264, ptr noundef @.str.3, i32 noundef 4755, ptr noundef @__PRETTY_FUNCTION__.ReportTable) #9
  unreachable

2444:                                             ; preds = %2442
  %2445 = load ptr, ptr %7, align 8, !tbaa !5
  %2446 = load ptr, ptr %14, align 8, !tbaa !5
  %2447 = getelementptr inbounds %struct.rule, ptr %2446, i32 0, i32 13
  %2448 = load i32, ptr %2447, align 4, !tbaa !30
  %2449 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2445, ptr noundef @.str.265, i32 noundef %2448) #8
  %2450 = load ptr, ptr %7, align 8, !tbaa !5
  %2451 = load ptr, ptr %14, align 8, !tbaa !5
  call void @writeRuleText(ptr noundef %2450, ptr noundef %2451)
  %2452 = load ptr, ptr %14, align 8, !tbaa !5
  %2453 = getelementptr inbounds %struct.rule, ptr %2452, i32 0, i32 18
  %2454 = load i32, ptr %2453, align 8, !tbaa !129
  %2455 = icmp ne i32 %2454, 0
  br i1 %2455, label %2456, label %2464

2456:                                             ; preds = %2444
  %2457 = load ptr, ptr %7, align 8, !tbaa !5
  %2458 = load ptr, ptr %14, align 8, !tbaa !5
  %2459 = getelementptr inbounds %struct.rule, ptr %2458, i32 0, i32 13
  %2460 = load i32, ptr %2459, align 4, !tbaa !30
  %2461 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2457, ptr noundef @.str.266, i32 noundef %2460) #8
  %2462 = load i32, ptr %11, align 4, !tbaa !9
  %2463 = add nsw i32 %2462, 1
  store i32 %2463, ptr %11, align 4, !tbaa !9
  br label %2486

2464:                                             ; preds = %2444
  %2465 = load ptr, ptr %14, align 8, !tbaa !5
  %2466 = getelementptr inbounds %struct.rule, ptr %2465, i32 0, i32 17
  %2467 = load i32, ptr %2466, align 4, !tbaa !82
  %2468 = icmp ne i32 %2467, 0
  br i1 %2468, label %2469, label %2477

2469:                                             ; preds = %2464
  %2470 = load ptr, ptr %7, align 8, !tbaa !5
  %2471 = load ptr, ptr %14, align 8, !tbaa !5
  %2472 = getelementptr inbounds %struct.rule, ptr %2471, i32 0, i32 13
  %2473 = load i32, ptr %2472, align 4, !tbaa !30
  %2474 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2470, ptr noundef @.str.261, i32 noundef %2473) #8
  %2475 = load i32, ptr %11, align 4, !tbaa !9
  %2476 = add nsw i32 %2475, 1
  store i32 %2476, ptr %11, align 4, !tbaa !9
  br label %2485

2477:                                             ; preds = %2464
  %2478 = load ptr, ptr %7, align 8, !tbaa !5
  %2479 = load ptr, ptr %14, align 8, !tbaa !5
  %2480 = getelementptr inbounds %struct.rule, ptr %2479, i32 0, i32 13
  %2481 = load i32, ptr %2480, align 4, !tbaa !30
  %2482 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2478, ptr noundef @.str.267, i32 noundef %2481) #8
  %2483 = load i32, ptr %11, align 4, !tbaa !9
  %2484 = add nsw i32 %2483, 1
  store i32 %2484, ptr %11, align 4, !tbaa !9
  br label %2485

2485:                                             ; preds = %2477, %2469
  br label %2486

2486:                                             ; preds = %2485, %2456
  br label %2487

2487:                                             ; preds = %2486, %2436
  %2488 = load ptr, ptr %14, align 8, !tbaa !5
  %2489 = getelementptr inbounds %struct.rule, ptr %2488, i32 0, i32 20
  %2490 = load ptr, ptr %2489, align 8, !tbaa !40
  store ptr %2490, ptr %14, align 8, !tbaa !5
  br label %2428, !llvm.loop !130

2491:                                             ; preds = %2428
  %2492 = load ptr, ptr %7, align 8, !tbaa !5
  %2493 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2492, ptr noundef @.str.262) #8
  %2494 = load i32, ptr %11, align 4, !tbaa !9
  %2495 = add nsw i32 %2494, 1
  store i32 %2495, ptr %11, align 4, !tbaa !9
  %2496 = load ptr, ptr %4, align 8, !tbaa !5
  %2497 = getelementptr inbounds %struct.lemon, ptr %2496, i32 0, i32 19
  %2498 = load ptr, ptr %2497, align 8, !tbaa !42
  %2499 = load ptr, ptr %8, align 8, !tbaa !5
  %2500 = load ptr, ptr %7, align 8, !tbaa !5
  call void @tplt_xfer(ptr noundef %2498, ptr noundef %2499, ptr noundef %2500, ptr noundef %11)
  %2501 = load ptr, ptr %7, align 8, !tbaa !5
  %2502 = load ptr, ptr %4, align 8, !tbaa !5
  %2503 = load ptr, ptr %4, align 8, !tbaa !5
  %2504 = getelementptr inbounds %struct.lemon, ptr %2503, i32 0, i32 29
  %2505 = load ptr, ptr %2504, align 8, !tbaa !131
  call void @tplt_print(ptr noundef %2501, ptr noundef %2502, ptr noundef %2505, ptr noundef %11)
  %2506 = load ptr, ptr %4, align 8, !tbaa !5
  %2507 = getelementptr inbounds %struct.lemon, ptr %2506, i32 0, i32 19
  %2508 = load ptr, ptr %2507, align 8, !tbaa !42
  %2509 = load ptr, ptr %8, align 8, !tbaa !5
  %2510 = load ptr, ptr %7, align 8, !tbaa !5
  call void @tplt_xfer(ptr noundef %2508, ptr noundef %2509, ptr noundef %2510, ptr noundef %11)
  %2511 = load ptr, ptr %7, align 8, !tbaa !5
  %2512 = load ptr, ptr %4, align 8, !tbaa !5
  %2513 = load ptr, ptr %4, align 8, !tbaa !5
  %2514 = getelementptr inbounds %struct.lemon, ptr %2513, i32 0, i32 27
  %2515 = load ptr, ptr %2514, align 8, !tbaa !132
  call void @tplt_print(ptr noundef %2511, ptr noundef %2512, ptr noundef %2515, ptr noundef %11)
  %2516 = load ptr, ptr %4, align 8, !tbaa !5
  %2517 = getelementptr inbounds %struct.lemon, ptr %2516, i32 0, i32 19
  %2518 = load ptr, ptr %2517, align 8, !tbaa !42
  %2519 = load ptr, ptr %8, align 8, !tbaa !5
  %2520 = load ptr, ptr %7, align 8, !tbaa !5
  call void @tplt_xfer(ptr noundef %2518, ptr noundef %2519, ptr noundef %2520, ptr noundef %11)
  %2521 = load ptr, ptr %7, align 8, !tbaa !5
  %2522 = load ptr, ptr %4, align 8, !tbaa !5
  %2523 = load ptr, ptr %4, align 8, !tbaa !5
  %2524 = getelementptr inbounds %struct.lemon, ptr %2523, i32 0, i32 30
  %2525 = load ptr, ptr %2524, align 8, !tbaa !133
  call void @tplt_print(ptr noundef %2521, ptr noundef %2522, ptr noundef %2525, ptr noundef %11)
  %2526 = load ptr, ptr %4, align 8, !tbaa !5
  %2527 = getelementptr inbounds %struct.lemon, ptr %2526, i32 0, i32 19
  %2528 = load ptr, ptr %2527, align 8, !tbaa !42
  %2529 = load ptr, ptr %8, align 8, !tbaa !5
  %2530 = load ptr, ptr %7, align 8, !tbaa !5
  call void @tplt_xfer(ptr noundef %2528, ptr noundef %2529, ptr noundef %2530, ptr noundef %11)
  %2531 = load ptr, ptr %7, align 8, !tbaa !5
  %2532 = load ptr, ptr %4, align 8, !tbaa !5
  %2533 = load ptr, ptr %4, align 8, !tbaa !5
  %2534 = getelementptr inbounds %struct.lemon, ptr %2533, i32 0, i32 31
  %2535 = load ptr, ptr %2534, align 8, !tbaa !134
  call void @tplt_print(ptr noundef %2531, ptr noundef %2532, ptr noundef %2535, ptr noundef %11)
  %2536 = load ptr, ptr %15, align 8, !tbaa !5
  call void @acttab_free(ptr noundef %2536)
  %2537 = load ptr, ptr %8, align 8, !tbaa !5
  %2538 = call i32 @fclose(ptr noundef %2537)
  %2539 = load ptr, ptr %7, align 8, !tbaa !5
  %2540 = call i32 @fclose(ptr noundef %2539)
  %2541 = load ptr, ptr %9, align 8, !tbaa !5
  %2542 = icmp ne ptr %2541, null
  br i1 %2542, label %2543, label %2546

2543:                                             ; preds = %2491
  %2544 = load ptr, ptr %9, align 8, !tbaa !5
  %2545 = call i32 @fclose(ptr noundef %2544)
  br label %2546

2546:                                             ; preds = %2543, %2491
  store i32 1, ptr %29, align 4
  br label %2547

2547:                                             ; preds = %2546, %113, %101, %95
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 1000, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #8
  ret void

2548:                                             ; preds = %2413, %2209, %2070, %1961, %1079, %1003
  unreachable
}

; Function Attrs: nounwind willreturn memory(read)
declare i64 @strlen(ptr noundef) #6

declare i32 @fclose(ptr noundef) #5

; Function Attrs: nounwind uwtable
declare dso_local ptr @file_makename(ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local ptr @file_open(ptr noundef, ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local void @rule_print(ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @lemon_sprintf(ptr noundef, ptr noundef, ...) #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @compute_action(ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local void @tplt_xfer(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local ptr @tplt_open(ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local void @tplt_print(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local void @emit_destructor_code(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @translate_code(ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local void @emit_code(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local void @print_stack_union(ptr noundef, ptr noundef, ptr noundef, i32 noundef) #1

; Function Attrs: nounwind uwtable
declare hidden void @writeRuleText(ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare hidden ptr @minimum_size_type(i32 noundef, i32 noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare hidden i32 @axset_compare(ptr noundef, ptr noundef) #1

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind allocsize(0,1) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind willreturn memory(read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind willreturn memory(none) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }
attributes #9 = { noreturn nounwind }
attributes #10 = { nounwind willreturn memory(read) }
attributes #11 = { nounwind willreturn memory(none) }
attributes #12 = { nounwind allocsize(0,1) }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 24}
!12 = !{!"lemon", !6, i64 0, !6, i64 8, !6, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !6, i64 72, !10, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !10, i64 248, !10, i64 252, !10, i64 256, !10, i64 260, !10, i64 264, !10, i64 268, !10, i64 272, !6, i64 280}
!13 = !{!12, !10, i64 48}
!14 = !{!12, !10, i64 32}
!15 = !{!12, !10, i64 52}
!16 = !{!12, !10, i64 56}
!17 = !{!12, !10, i64 60}
!18 = !{!12, !10, i64 64}
!19 = !{!12, !10, i64 68}
!20 = !{!12, !10, i64 40}
!21 = !{!12, !6, i64 72}
!22 = !{!23, !6, i64 0}
!23 = !{!"symbol", !6, i64 0, !10, i64 8, !10, i64 12, !6, i64 16, !6, i64 24, !10, i64 32, !10, i64 36, !6, i64 40, !10, i64 48, !10, i64 52, !6, i64 56, !10, i64 64, !6, i64 72, !10, i64 80, !10, i64 84, !10, i64 88, !6, i64 96}
!24 = !{!12, !10, i64 44}
!25 = !{!23, !6, i64 24}
!26 = !{!23, !10, i64 8}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = !{!12, !6, i64 8}
!30 = !{!31, !10, i64 92}
!31 = !{!"rule", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !6, i64 32, !6, i64 40, !10, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !6, i64 120, !6, i64 128}
!32 = !{!31, !6, i64 0}
!33 = !{!31, !10, i64 24}
!34 = !{!31, !6, i64 32}
!35 = !{!23, !10, i64 12}
!36 = !{!23, !10, i64 88}
!37 = !{!23, !6, i64 96}
!38 = distinct !{!38, !28}
!39 = distinct !{!39, !28}
!40 = !{!31, !6, i64 128}
!41 = distinct !{!41, !28}
!42 = !{!12, !6, i64 104}
!43 = !{!12, !6, i64 160}
!44 = !{!12, !6, i64 240}
!45 = distinct !{!45, !28}
!46 = !{!12, !6, i64 96}
!47 = !{!12, !6, i64 152}
!48 = !{!12, !6, i64 112}
!49 = !{!7, !7, i64 0}
!50 = !{!51, !51, i64 0}
!51 = !{!"short", !7, i64 0}
!52 = distinct !{!52, !28}
!53 = distinct !{!53, !28}
!54 = !{!12, !6, i64 120}
!55 = distinct !{!55, !28}
!56 = distinct !{!56, !28}
!57 = !{!12, !6, i64 88}
!58 = !{!23, !10, i64 52}
!59 = !{!23, !10, i64 80}
!60 = !{!12, !10, i64 268}
!61 = !{!12, !10, i64 28}
!62 = !{!12, !6, i64 0}
!63 = !{!64, !6, i64 0}
!64 = !{!"axset", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16}
!65 = !{!64, !10, i64 8}
!66 = !{!67, !10, i64 32}
!67 = !{!"state", !6, i64 0, !6, i64 8, !10, i64 16, !6, i64 24, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !6, i64 56, !10, i64 64}
!68 = !{!64, !10, i64 12}
!69 = !{!67, !10, i64 36}
!70 = distinct !{!70, !28}
!71 = !{!64, !10, i64 16}
!72 = distinct !{!72, !28}
!73 = !{!67, !6, i64 24}
!74 = !{!75, !6, i64 0}
!75 = !{!"action", !6, i64 0, !10, i64 8, !7, i64 16, !6, i64 24, !6, i64 32, !6, i64 40}
!76 = !{!75, !6, i64 32}
!77 = distinct !{!77, !28}
!78 = !{!67, !10, i64 40}
!79 = distinct !{!79, !28}
!80 = !{!67, !10, i64 44}
!81 = distinct !{!81, !28}
!82 = !{!31, !10, i64 108}
!83 = distinct !{!83, !28}
!84 = !{!75, !10, i64 8}
!85 = distinct !{!85, !28}
!86 = distinct !{!86, !28}
!87 = !{!12, !10, i64 36}
!88 = !{!12, !10, i64 252}
!89 = !{!12, !10, i64 260}
!90 = !{!91, !6, i64 8}
!91 = !{!"acttab", !10, i64 0, !10, i64 4, !6, i64 8, !6, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48}
!92 = !{!93, !10, i64 4}
!93 = !{!"lookahead_action", !10, i64 0, !10, i64 4}
!94 = distinct !{!94, !28}
!95 = !{!91, !10, i64 0}
!96 = !{!12, !10, i64 256}
!97 = !{!93, !10, i64 0}
!98 = distinct !{!98, !28}
!99 = distinct !{!99, !28}
!100 = distinct !{!100, !28}
!101 = distinct !{!101, !28}
!102 = distinct !{!102, !28}
!103 = distinct !{!103, !28}
!104 = !{!67, !10, i64 48}
!105 = distinct !{!105, !28}
!106 = distinct !{!106, !28}
!107 = distinct !{!107, !28}
!108 = distinct !{!108, !28}
!109 = !{!12, !6, i64 208}
!110 = distinct !{!110, !28}
!111 = distinct !{!111, !28}
!112 = !{!12, !6, i64 216}
!113 = !{!23, !6, i64 56}
!114 = distinct !{!114, !28}
!115 = !{!23, !10, i64 64}
!116 = distinct !{!116, !28}
!117 = distinct !{!117, !28}
!118 = !{!12, !6, i64 176}
!119 = distinct !{!119, !28}
!120 = distinct !{!120, !28}
!121 = distinct !{!121, !28}
!122 = !{!31, !10, i64 100}
!123 = !{!31, !10, i64 96}
!124 = !{!31, !6, i64 56}
!125 = !{!31, !6, i64 64}
!126 = !{!31, !6, i64 72}
!127 = distinct !{!127, !28}
!128 = distinct !{!128, !28}
!129 = !{!31, !10, i64 112}
!130 = distinct !{!130, !28}
!131 = !{!12, !6, i64 184}
!132 = !{!12, !6, i64 168}
!133 = !{!12, !6, i64 192}
!134 = !{!12, !6, i64 200}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.axset = type { ptr, i32, i32, i32 }
%struct.lookahead_action = type { i32, i32 }

@stderr = external local_unnamed_addr global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.164 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.171 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.172 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.173 = external hidden unnamed_addr constant [178 x i8], align 1
@.str.174 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.175 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.176 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.177 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.178 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.179 = external hidden unnamed_addr constant [219 x i8], align 1
@.str.180 = external hidden unnamed_addr constant [13 x i8], align 1
@__PRETTY_FUNCTION__.ReportTable = external hidden unnamed_addr constant [43 x i8], align 1
@.str.181 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.182 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.183 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.184 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.185 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.186 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.187 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.188 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.189 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.190 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.191 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.192 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.193 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.194 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.195 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.196 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.197 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.198 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.199 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.200 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.201 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.202 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.203 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.204 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.205 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.206 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.207 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.208 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.209 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.210 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.211 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.212 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.213 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.214 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.215 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.216 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.217 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.218 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.219 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.220 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.221 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.222 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.223 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.224 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.225 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.226 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.227 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.228 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.229 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.230 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.231 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.232 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.233 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.234 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.235 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.236 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.237 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.238 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.239 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.240 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.241 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.242 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.243 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.244 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.245 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.246 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.247 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.248 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.249 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.250 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.251 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.252 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.253 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.254 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.255 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.256 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.257 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.258 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.259 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.260 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.261 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.262 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.263 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.264 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.265 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.266 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.267 = external hidden unnamed_addr constant [43 x i8], align 1

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: nounwind uwtable
declare dso_local void @acttab_free(ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local ptr @acttab_alloc(i32 noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @calloc(i64 noundef, i64 noundef) local_unnamed_addr #3

; Function Attrs: nofree nounwind
declare noundef i32 @fprintf(ptr nocapture noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #4

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) local_unnamed_addr #5

; Function Attrs: nounwind uwtable
declare dso_local void @acttab_action(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @acttab_insert(ptr noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #5

; Function Attrs: nounwind uwtable
declare dso_local i32 @acttab_action_size(ptr noundef) local_unnamed_addr #1

; Function Attrs: nofree
declare void @qsort(ptr noundef, i64 noundef, i64 noundef, ptr nocapture noundef) local_unnamed_addr #6

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #7

; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(none)
declare ptr @__ctype_b_loc() local_unnamed_addr #8

; Function Attrs: nounwind uwtable
define dso_local void @ReportTable(ptr noundef %0, i32 noundef %1, i32 noundef %2) local_unnamed_addr #1 {
  %4 = alloca [1000 x i8], align 16
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 1000, ptr nonnull %4) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #10
  %9 = getelementptr inbounds i8, ptr %0, i64 24
  %10 = load i32, ptr %9, align 8, !tbaa !5
  %11 = getelementptr inbounds i8, ptr %0, i64 48
  store i32 %10, ptr %11, align 8, !tbaa !11
  %12 = getelementptr inbounds i8, ptr %0, i64 32
  %13 = load i32, ptr %12, align 8, !tbaa !12
  %14 = add nsw i32 %13, %10
  %15 = getelementptr inbounds i8, ptr %0, i64 52
  store i32 %14, ptr %15, align 4, !tbaa !13
  %16 = add nsw i32 %14, 1
  %17 = getelementptr inbounds i8, ptr %0, i64 56
  store i32 %16, ptr %17, align 8, !tbaa !14
  %18 = add nsw i32 %14, 2
  %19 = getelementptr inbounds i8, ptr %0, i64 60
  store i32 %18, ptr %19, align 4, !tbaa !15
  %20 = add nsw i32 %14, 3
  %21 = getelementptr inbounds i8, ptr %0, i64 64
  store i32 %20, ptr %21, align 8, !tbaa !16
  %22 = add nsw i32 %20, %13
  %23 = getelementptr inbounds i8, ptr %0, i64 68
  store i32 %22, ptr %23, align 4, !tbaa !17
  %24 = tail call ptr @tplt_open(ptr noundef %0)
  %25 = icmp eq ptr %24, null
  br i1 %25, label %1153, label %26

26:                                               ; preds = %3
  %27 = tail call ptr @file_open(ptr noundef nonnull %0, ptr noundef nonnull @.str.171, ptr noundef nonnull @.str.111)
  %28 = icmp eq ptr %27, null
  br i1 %28, label %29, label %31

29:                                               ; preds = %26
  %30 = tail call i32 @fclose(ptr noundef nonnull %24)
  br label %1153

31:                                               ; preds = %26
  %32 = icmp eq i32 %2, 0
  br i1 %32, label %120, label %33

33:                                               ; preds = %31
  %34 = tail call ptr @file_open(ptr noundef nonnull %0, ptr noundef nonnull @.str.172, ptr noundef nonnull @.str.111)
  %35 = icmp eq ptr %34, null
  br i1 %35, label %36, label %39

36:                                               ; preds = %33
  %37 = tail call i32 @fclose(ptr noundef nonnull %24)
  %38 = tail call i32 @fclose(ptr noundef nonnull %27)
  br label %1153

39:                                               ; preds = %33
  %40 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %34, ptr noundef nonnull @.str.173) #10
  %41 = getelementptr inbounds i8, ptr %0, i64 40
  %42 = load i32, ptr %41, align 8, !tbaa !18
  %43 = icmp sgt i32 %42, 0
  br i1 %43, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %39
  %44 = getelementptr inbounds i8, ptr %0, i64 72
  %45 = getelementptr inbounds i8, ptr %0, i64 44
  br label %46

46:                                               ; preds = %.lr.ph, %68
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %68 ]
  %47 = load ptr, ptr %44, align 8, !tbaa !19
  %48 = getelementptr inbounds ptr, ptr %47, i64 %indvars.iv
  %49 = load ptr, ptr %48, align 8, !tbaa !20
  %50 = load ptr, ptr %49, align 8, !tbaa !21
  %51 = load i32, ptr %45, align 4, !tbaa !23
  %52 = sext i32 %51 to i64
  %53 = icmp slt i64 %indvars.iv, %52
  %54 = select i1 %53, ptr @.str.175, ptr @.str.176
  %55 = trunc nuw nsw i64 %indvars.iv to i32
  %56 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %34, ptr noundef nonnull @.str.174, i32 noundef %55, ptr noundef %50, ptr noundef nonnull %54) #10
  %57 = load ptr, ptr %44, align 8, !tbaa !19
  %58 = getelementptr inbounds ptr, ptr %57, i64 %indvars.iv
  %59 = load ptr, ptr %58, align 8, !tbaa !20
  %60 = getelementptr inbounds i8, ptr %59, i64 24
  %61 = load ptr, ptr %60, align 8, !tbaa !24
  %.not864 = icmp eq ptr %61, null
  br i1 %.not864, label %66, label %62

62:                                               ; preds = %46
  %63 = getelementptr inbounds i8, ptr %61, i64 8
  %64 = load i32, ptr %63, align 8, !tbaa !25
  %65 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %34, ptr noundef nonnull @.str.177, i32 noundef %64) #10
  br label %68

66:                                               ; preds = %46
  %67 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %34, ptr noundef nonnull @.str.178) #10
  br label %68

68:                                               ; preds = %62, %66
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %69 = load i32, ptr %41, align 8, !tbaa !18
  %70 = sext i32 %69 to i64
  %71 = icmp slt i64 %indvars.iv.next, %70
  br i1 %71, label %46, label %._crit_edge, !llvm.loop !26

._crit_edge:                                      ; preds = %68, %39
  %72 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %34, ptr noundef nonnull @.str.179) #10
  %73 = getelementptr inbounds i8, ptr %0, i64 8
  %.0781948 = load ptr, ptr %73, align 8, !tbaa !20
  %.not949 = icmp eq ptr %.0781948, null
  br i1 %.not949, label %._crit_edge954, label %.lr.ph953

.lr.ph953:                                        ; preds = %._crit_edge, %._crit_edge947
  %.0781951 = phi ptr [ %.0781, %._crit_edge947 ], [ %.0781948, %._crit_edge ]
  %.1788950 = phi i32 [ %118, %._crit_edge947 ], [ 0, %._crit_edge ]
  %74 = getelementptr inbounds i8, ptr %.0781951, i64 92
  %75 = load i32, ptr %74, align 4, !tbaa !28
  %76 = icmp eq i32 %.1788950, %75
  br i1 %76, label %78, label %77

77:                                               ; preds = %.lr.ph953
  tail call void @__assert_fail(ptr noundef nonnull @.str.180, ptr noundef nonnull @.str.3, i32 noundef 4235, ptr noundef nonnull @__PRETTY_FUNCTION__.ReportTable) #11
  unreachable

78:                                               ; preds = %.lr.ph953
  %79 = load ptr, ptr %.0781951, align 8, !tbaa !30
  %80 = getelementptr inbounds i8, ptr %79, i64 8
  %81 = load i32, ptr %80, align 8, !tbaa !25
  %82 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %34, ptr noundef nonnull @.str.181, i32 noundef %.1788950, i32 noundef %81) #10
  tail call void @writeRuleText(ptr noundef nonnull %34, ptr noundef nonnull %.0781951)
  %83 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %34, ptr noundef nonnull @.str.182) #10
  %84 = getelementptr inbounds i8, ptr %.0781951, i64 24
  %85 = load i32, ptr %84, align 8, !tbaa !31
  %86 = icmp sgt i32 %85, 0
  br i1 %86, label %.lr.ph946, label %._crit_edge947

.lr.ph946:                                        ; preds = %78
  %87 = getelementptr inbounds i8, ptr %.0781951, i64 32
  br label %88

88:                                               ; preds = %.lr.ph946, %.loopexit938
  %indvars.iv1168 = phi i64 [ 0, %.lr.ph946 ], [ %indvars.iv.next1169, %.loopexit938 ]
  %89 = load ptr, ptr %87, align 8, !tbaa !32
  %90 = getelementptr inbounds ptr, ptr %89, i64 %indvars.iv1168
  %91 = load ptr, ptr %90, align 8, !tbaa !20
  %92 = getelementptr inbounds i8, ptr %91, i64 12
  %93 = load i32, ptr %92, align 4, !tbaa !33
  %.not863 = icmp eq i32 %93, 2
  br i1 %.not863, label %.preheader937, label %99

.preheader937:                                    ; preds = %88
  %94 = getelementptr inbounds i8, ptr %91, i64 88
  %95 = load i32, ptr %94, align 8, !tbaa !34
  %96 = icmp sgt i32 %95, 0
  br i1 %96, label %.lr.ph943, label %.loopexit938

.lr.ph943:                                        ; preds = %.preheader937
  %97 = getelementptr inbounds i8, ptr %91, i64 96
  %98 = trunc nuw nsw i64 %indvars.iv1168 to i32
  br label %104

99:                                               ; preds = %88
  %100 = getelementptr inbounds i8, ptr %91, i64 8
  %101 = load i32, ptr %100, align 8, !tbaa !25
  %102 = trunc nuw nsw i64 %indvars.iv1168 to i32
  %103 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %34, ptr noundef nonnull @.str.183, i32 noundef %.1788950, i32 noundef %102, i32 noundef %101) #10
  br label %.loopexit938

104:                                              ; preds = %.lr.ph943, %104
  %indvars.iv1165 = phi i64 [ 0, %.lr.ph943 ], [ %indvars.iv.next1166, %104 ]
  %105 = load ptr, ptr %97, align 8, !tbaa !35
  %106 = getelementptr inbounds ptr, ptr %105, i64 %indvars.iv1165
  %107 = load ptr, ptr %106, align 8, !tbaa !20
  %108 = getelementptr inbounds i8, ptr %107, i64 8
  %109 = load i32, ptr %108, align 8, !tbaa !25
  %110 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %34, ptr noundef nonnull @.str.183, i32 noundef %.1788950, i32 noundef %98, i32 noundef %109) #10
  %indvars.iv.next1166 = add nuw nsw i64 %indvars.iv1165, 1
  %111 = load i32, ptr %94, align 8, !tbaa !34
  %112 = sext i32 %111 to i64
  %113 = icmp slt i64 %indvars.iv.next1166, %112
  br i1 %113, label %104, label %.loopexit938, !llvm.loop !36

.loopexit938:                                     ; preds = %104, %.preheader937, %99
  %indvars.iv.next1169 = add nuw nsw i64 %indvars.iv1168, 1
  %114 = load i32, ptr %84, align 8, !tbaa !31
  %115 = sext i32 %114 to i64
  %116 = icmp slt i64 %indvars.iv.next1169, %115
  br i1 %116, label %88, label %._crit_edge947, !llvm.loop !37

._crit_edge947:                                   ; preds = %.loopexit938, %78
  %117 = getelementptr inbounds i8, ptr %.0781951, i64 128
  %118 = add nuw nsw i32 %.1788950, 1
  %.0781 = load ptr, ptr %117, align 8, !tbaa !20
  %.not = icmp eq ptr %.0781, null
  br i1 %.not, label %._crit_edge954, label %.lr.ph953, !llvm.loop !38

._crit_edge954:                                   ; preds = %._crit_edge947, %._crit_edge
  %119 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef nonnull %34, ptr noundef nonnull @.str.184) #10
  br label %120

120:                                              ; preds = %31, %._crit_edge954
  %.0774 = phi ptr [ %34, %._crit_edge954 ], [ null, %31 ]
  store i32 1, ptr %5, align 4, !tbaa !39
  %121 = getelementptr inbounds i8, ptr %0, i64 104
  %122 = load ptr, ptr %121, align 8, !tbaa !40
  call void @tplt_xfer(ptr noundef %122, ptr noundef nonnull %24, ptr noundef %27, ptr noundef nonnull %5)
  %123 = getelementptr inbounds i8, ptr %0, i64 160
  %124 = load ptr, ptr %123, align 8, !tbaa !41
  call void @tplt_print(ptr noundef %27, ptr noundef %0, ptr noundef %124, ptr noundef nonnull %5)
  %.not865 = icmp eq i32 %1, 0
  br i1 %.not865, label %.critedge918, label %125

125:                                              ; preds = %120
  %126 = call ptr @file_makename(ptr noundef nonnull %0, ptr noundef nonnull @.str.185)
  %127 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.186, ptr noundef %126) #10
  %128 = load i32, ptr %5, align 4, !tbaa !39
  %129 = add nsw i32 %128, 1
  store i32 %129, ptr %5, align 4, !tbaa !39
  call void @free(ptr noundef %126) #10
  %130 = load ptr, ptr %121, align 8, !tbaa !40
  call void @tplt_xfer(ptr noundef %130, ptr noundef nonnull %24, ptr noundef %27, ptr noundef nonnull %5)
  %131 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.161) #10
  %132 = load i32, ptr %5, align 4, !tbaa !39
  %133 = add nsw i32 %132, 1
  store i32 %133, ptr %5, align 4, !tbaa !39
  %134 = getelementptr inbounds i8, ptr %0, i64 240
  %135 = load ptr, ptr %134, align 8, !tbaa !42
  %.not866 = icmp eq ptr %135, null
  %.str.75. = select i1 %.not866, ptr @.str.75, ptr %135
  %136 = getelementptr inbounds i8, ptr %0, i64 44
  %137 = load i32, ptr %136, align 4, !tbaa !23
  %138 = icmp sgt i32 %137, 1
  br i1 %138, label %.lr.ph957, label %._crit_edge958

.lr.ph957:                                        ; preds = %125
  %139 = getelementptr inbounds i8, ptr %0, i64 72
  br label %140

140:                                              ; preds = %.lr.ph957, %140
  %indvars.iv1171 = phi i64 [ 1, %.lr.ph957 ], [ %indvars.iv.next1172, %140 ]
  %141 = load ptr, ptr %139, align 8, !tbaa !19
  %142 = getelementptr inbounds ptr, ptr %141, i64 %indvars.iv1171
  %143 = load ptr, ptr %142, align 8, !tbaa !20
  %144 = load ptr, ptr %143, align 8, !tbaa !21
  %145 = trunc nuw nsw i64 %indvars.iv1171 to i32
  %146 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.187, ptr noundef nonnull %.str.75., ptr noundef %144, i32 noundef %145) #10
  %147 = load i32, ptr %5, align 4, !tbaa !39
  %148 = add nsw i32 %147, 1
  store i32 %148, ptr %5, align 4, !tbaa !39
  %indvars.iv.next1172 = add nuw nsw i64 %indvars.iv1171, 1
  %149 = load i32, ptr %136, align 4, !tbaa !23
  %150 = sext i32 %149 to i64
  %151 = icmp slt i64 %indvars.iv.next1172, %150
  br i1 %151, label %140, label %._crit_edge958, !llvm.loop !43

._crit_edge958:                                   ; preds = %140, %125
  %152 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.164) #10
  %153 = load i32, ptr %5, align 4, !tbaa !39
  %154 = add nsw i32 %153, 1
  store i32 %154, ptr %5, align 4, !tbaa !39
  br label %156

.critedge918:                                     ; preds = %120
  %155 = load ptr, ptr %121, align 8, !tbaa !40
  call void @tplt_xfer(ptr noundef %155, ptr noundef nonnull %24, ptr noundef %27, ptr noundef nonnull %5)
  br label %156

156:                                              ; preds = %.critedge918, %._crit_edge958
  %157 = load ptr, ptr %121, align 8, !tbaa !40
  call void @tplt_xfer(ptr noundef %157, ptr noundef nonnull %24, ptr noundef %27, ptr noundef nonnull %5)
  %158 = getelementptr inbounds i8, ptr %0, i64 40
  %159 = load i32, ptr %158, align 8, !tbaa !18
  %160 = call ptr @minimum_size_type(i32 noundef 0, i32 noundef %159, ptr noundef nonnull %8)
  %161 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.188, ptr noundef %160) #10
  %162 = load i32, ptr %5, align 4, !tbaa !39
  %163 = add nsw i32 %162, 1
  store i32 %163, ptr %5, align 4, !tbaa !39
  %164 = load i32, ptr %158, align 8, !tbaa !18
  %165 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.189, i32 noundef %164) #10
  %166 = load i32, ptr %5, align 4, !tbaa !39
  %167 = add nsw i32 %166, 1
  store i32 %167, ptr %5, align 4, !tbaa !39
  %168 = load i32, ptr %23, align 4, !tbaa !17
  %169 = call ptr @minimum_size_type(i32 noundef 0, i32 noundef %168, ptr noundef nonnull %7)
  %170 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.190, ptr noundef %169) #10
  %171 = load i32, ptr %5, align 4, !tbaa !39
  %172 = add nsw i32 %171, 1
  store i32 %172, ptr %5, align 4, !tbaa !39
  %173 = getelementptr inbounds i8, ptr %0, i64 96
  %174 = load ptr, ptr %173, align 8, !tbaa !44
  %.not867 = icmp eq ptr %174, null
  br i1 %.not867, label %181, label %175

175:                                              ; preds = %156
  %176 = getelementptr inbounds i8, ptr %174, i64 8
  %177 = load i32, ptr %176, align 8, !tbaa !25
  %178 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.191, i32 noundef %177) #10
  %179 = load i32, ptr %5, align 4, !tbaa !39
  %180 = add nsw i32 %179, 1
  store i32 %180, ptr %5, align 4, !tbaa !39
  br label %181

181:                                              ; preds = %175, %156
  call void @print_stack_union(ptr noundef %27, ptr noundef nonnull %0, ptr noundef nonnull %5, i32 noundef %1)
  %182 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.192) #10
  %183 = load i32, ptr %5, align 4, !tbaa !39
  %184 = add nsw i32 %183, 1
  store i32 %184, ptr %5, align 4, !tbaa !39
  %185 = getelementptr inbounds i8, ptr %0, i64 152
  %186 = load ptr, ptr %185, align 8, !tbaa !45
  %.not868 = icmp eq ptr %186, null
  br i1 %.not868, label %189, label %187

187:                                              ; preds = %181
  %188 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.193, ptr noundef nonnull %186) #10
  br label %191

189:                                              ; preds = %181
  %190 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.194) #10
  br label %191

191:                                              ; preds = %189, %187
  %storemerge.in = load i32, ptr %5, align 4, !tbaa !39
  %storemerge = add nsw i32 %storemerge.in, 1
  store i32 %storemerge, ptr %5, align 4, !tbaa !39
  %192 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.164) #10
  %193 = load i32, ptr %5, align 4, !tbaa !39
  %194 = add nsw i32 %193, 1
  store i32 %194, ptr %5, align 4, !tbaa !39
  br i1 %.not865, label %199, label %195

195:                                              ; preds = %191
  %196 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.161) #10
  %197 = load i32, ptr %5, align 4, !tbaa !39
  %198 = add nsw i32 %197, 1
  store i32 %198, ptr %5, align 4, !tbaa !39
  br label %199

199:                                              ; preds = %195, %191
  %200 = load ptr, ptr %121, align 8, !tbaa !40
  %.not869 = icmp eq ptr %200, null
  %spec.select = select i1 %.not869, ptr @.str.132, ptr %200
  %201 = getelementptr inbounds i8, ptr %0, i64 112
  %202 = load ptr, ptr %201, align 8, !tbaa !46
  %.not870 = icmp eq ptr %202, null
  br i1 %.not870, label %254, label %203

203:                                              ; preds = %199
  %204 = load i8, ptr %202, align 1, !tbaa !47
  %.not871 = icmp eq i8 %204, 0
  br i1 %.not871, label %254, label %205

205:                                              ; preds = %203
  %206 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %202) #12
  %207 = trunc i64 %206 to i32
  %invariant.gep = getelementptr i8, ptr %202, i64 -1
  %208 = icmp sgt i32 %207, 0
  br i1 %208, label %.lr.ph961, label %.critedge2

.lr.ph961:                                        ; preds = %205
  %209 = tail call ptr @__ctype_b_loc() #13
  %210 = load ptr, ptr %209, align 8, !tbaa !20
  br label %211

211:                                              ; preds = %.lr.ph961, %218
  %.3790959 = phi i32 [ %207, %.lr.ph961 ], [ %219, %218 ]
  %212 = zext nneg i32 %.3790959 to i64
  %gep = getelementptr i8, ptr %invariant.gep, i64 %212
  %213 = load i8, ptr %gep, align 1, !tbaa !47
  %214 = zext i8 %213 to i64
  %215 = getelementptr inbounds i16, ptr %210, i64 %214
  %216 = load i16, ptr %215, align 2, !tbaa !48
  %217 = and i16 %216, 8192
  %.not873 = icmp eq i16 %217, 0
  br i1 %.not873, label %.lr.ph967, label %218

218:                                              ; preds = %211
  %219 = add nsw i32 %.3790959, -1
  %220 = icmp sgt i32 %.3790959, 1
  br i1 %220, label %211, label %.critedge2, !llvm.loop !50

.lr.ph967:                                        ; preds = %211
  %221 = tail call ptr @__ctype_b_loc() #13
  %222 = load ptr, ptr %221, align 8, !tbaa !20
  br label %223

223:                                              ; preds = %.lr.ph967, %.critedge4
  %.4791966 = phi i32 [ %.3790959, %.lr.ph967 ], [ %231, %.critedge4 ]
  %224 = zext nneg i32 %.4791966 to i64
  %gep965 = getelementptr i8, ptr %invariant.gep, i64 %224
  %225 = load i8, ptr %gep965, align 1, !tbaa !47
  %226 = zext i8 %225 to i64
  %227 = getelementptr inbounds i16, ptr %222, i64 %226
  %228 = load i16, ptr %227, align 2, !tbaa !48
  %229 = and i16 %228, 8
  %.not874 = icmp ne i16 %229, 0
  %230 = icmp eq i8 %225, 95
  %or.cond = or i1 %230, %.not874
  br i1 %or.cond, label %.critedge4, label %.critedge2

.critedge4:                                       ; preds = %223
  %231 = add nsw i32 %.4791966, -1
  %232 = icmp sgt i32 %.4791966, 1
  br i1 %232, label %223, label %.critedge2, !llvm.loop !51

.critedge2:                                       ; preds = %218, %.critedge4, %223, %205
  %.4791.lcssa = phi i32 [ %207, %205 ], [ %.4791966, %223 ], [ 0, %.critedge4 ], [ 0, %218 ]
  %233 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.195, ptr noundef nonnull %spec.select, ptr noundef nonnull %202) #10
  %234 = load i32, ptr %5, align 4, !tbaa !39
  %235 = add nsw i32 %234, 1
  store i32 %235, ptr %5, align 4, !tbaa !39
  %236 = load ptr, ptr %201, align 8, !tbaa !46
  %237 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.196, ptr noundef nonnull %spec.select, ptr noundef %236) #10
  %238 = load i32, ptr %5, align 4, !tbaa !39
  %239 = add nsw i32 %238, 1
  store i32 %239, ptr %5, align 4, !tbaa !39
  %240 = load ptr, ptr %201, align 8, !tbaa !46
  %241 = sext i32 %.4791.lcssa to i64
  %242 = getelementptr inbounds i8, ptr %240, i64 %241
  %243 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.197, ptr noundef nonnull %spec.select, ptr noundef %242) #10
  %244 = load i32, ptr %5, align 4, !tbaa !39
  %245 = add nsw i32 %244, 1
  store i32 %245, ptr %5, align 4, !tbaa !39
  %246 = load ptr, ptr %201, align 8, !tbaa !46
  %247 = getelementptr inbounds i8, ptr %246, i64 %241
  %248 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.198, ptr noundef nonnull %spec.select, ptr noundef %246, ptr noundef %247) #10
  %249 = load i32, ptr %5, align 4, !tbaa !39
  %250 = add nsw i32 %249, 1
  store i32 %250, ptr %5, align 4, !tbaa !39
  %251 = load ptr, ptr %201, align 8, !tbaa !46
  %252 = getelementptr inbounds i8, ptr %251, i64 %241
  %253 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.199, ptr noundef nonnull %spec.select, ptr noundef %252, ptr noundef %252) #10
  br label %268

254:                                              ; preds = %203, %199
  %255 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.200, ptr noundef nonnull %spec.select) #10
  %256 = load i32, ptr %5, align 4, !tbaa !39
  %257 = add nsw i32 %256, 1
  store i32 %257, ptr %5, align 4, !tbaa !39
  %258 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.201, ptr noundef nonnull %spec.select) #10
  %259 = load i32, ptr %5, align 4, !tbaa !39
  %260 = add nsw i32 %259, 1
  store i32 %260, ptr %5, align 4, !tbaa !39
  %261 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.202, ptr noundef nonnull %spec.select) #10
  %262 = load i32, ptr %5, align 4, !tbaa !39
  %263 = add nsw i32 %262, 1
  store i32 %263, ptr %5, align 4, !tbaa !39
  %264 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.203, ptr noundef nonnull %spec.select) #10
  %265 = load i32, ptr %5, align 4, !tbaa !39
  %266 = add nsw i32 %265, 1
  store i32 %266, ptr %5, align 4, !tbaa !39
  %267 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.204, ptr noundef nonnull %spec.select) #10
  br label %268

268:                                              ; preds = %254, %.critedge2
  %storemerge872.in = load i32, ptr %5, align 4, !tbaa !39
  %storemerge872 = add nsw i32 %storemerge872.in, 1
  store i32 %storemerge872, ptr %5, align 4, !tbaa !39
  %269 = getelementptr inbounds i8, ptr %0, i64 120
  %270 = load ptr, ptr %269, align 8, !tbaa !52
  %.not875 = icmp eq ptr %270, null
  br i1 %.not875, label %322, label %271

271:                                              ; preds = %268
  %272 = load i8, ptr %270, align 1, !tbaa !47
  %.not876 = icmp eq i8 %272, 0
  br i1 %.not876, label %322, label %273

273:                                              ; preds = %271
  %274 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %270) #12
  %275 = trunc i64 %274 to i32
  %invariant.gep971 = getelementptr i8, ptr %270, i64 -1
  %276 = icmp sgt i32 %275, 0
  br i1 %276, label %.lr.ph975, label %.critedge8

.lr.ph975:                                        ; preds = %273
  %277 = tail call ptr @__ctype_b_loc() #13
  %278 = load ptr, ptr %277, align 8, !tbaa !20
  br label %279

279:                                              ; preds = %.lr.ph975, %286
  %.5792973 = phi i32 [ %275, %.lr.ph975 ], [ %287, %286 ]
  %280 = zext nneg i32 %.5792973 to i64
  %gep972 = getelementptr i8, ptr %invariant.gep971, i64 %280
  %281 = load i8, ptr %gep972, align 1, !tbaa !47
  %282 = zext i8 %281 to i64
  %283 = getelementptr inbounds i16, ptr %278, i64 %282
  %284 = load i16, ptr %283, align 2, !tbaa !48
  %285 = and i16 %284, 8192
  %.not878 = icmp eq i16 %285, 0
  br i1 %.not878, label %.lr.ph982, label %286

286:                                              ; preds = %279
  %287 = add nsw i32 %.5792973, -1
  %288 = icmp sgt i32 %.5792973, 1
  br i1 %288, label %279, label %.critedge8, !llvm.loop !53

.lr.ph982:                                        ; preds = %279
  %289 = tail call ptr @__ctype_b_loc() #13
  %290 = load ptr, ptr %289, align 8, !tbaa !20
  br label %291

291:                                              ; preds = %.lr.ph982, %.critedge10
  %.6793981 = phi i32 [ %.5792973, %.lr.ph982 ], [ %299, %.critedge10 ]
  %292 = zext nneg i32 %.6793981 to i64
  %gep980 = getelementptr i8, ptr %invariant.gep971, i64 %292
  %293 = load i8, ptr %gep980, align 1, !tbaa !47
  %294 = zext i8 %293 to i64
  %295 = getelementptr inbounds i16, ptr %290, i64 %294
  %296 = load i16, ptr %295, align 2, !tbaa !48
  %297 = and i16 %296, 8
  %.not879 = icmp ne i16 %297, 0
  %298 = icmp eq i8 %293, 95
  %or.cond919 = or i1 %298, %.not879
  br i1 %or.cond919, label %.critedge10, label %.critedge8

.critedge10:                                      ; preds = %291
  %299 = add nsw i32 %.6793981, -1
  %300 = icmp sgt i32 %.6793981, 1
  br i1 %300, label %291, label %.critedge8, !llvm.loop !54

.critedge8:                                       ; preds = %286, %.critedge10, %291, %273
  %.6793.lcssa = phi i32 [ %275, %273 ], [ %.6793981, %291 ], [ 0, %.critedge10 ], [ 0, %286 ]
  %301 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.205, ptr noundef nonnull %spec.select, ptr noundef nonnull %270) #10
  %302 = load i32, ptr %5, align 4, !tbaa !39
  %303 = add nsw i32 %302, 1
  store i32 %303, ptr %5, align 4, !tbaa !39
  %304 = load ptr, ptr %269, align 8, !tbaa !52
  %305 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.206, ptr noundef nonnull %spec.select, ptr noundef %304) #10
  %306 = load i32, ptr %5, align 4, !tbaa !39
  %307 = add nsw i32 %306, 1
  store i32 %307, ptr %5, align 4, !tbaa !39
  %308 = load ptr, ptr %269, align 8, !tbaa !52
  %309 = sext i32 %.6793.lcssa to i64
  %310 = getelementptr inbounds i8, ptr %308, i64 %309
  %311 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.207, ptr noundef nonnull %spec.select, ptr noundef %310) #10
  %312 = load i32, ptr %5, align 4, !tbaa !39
  %313 = add nsw i32 %312, 1
  store i32 %313, ptr %5, align 4, !tbaa !39
  %314 = load ptr, ptr %269, align 8, !tbaa !52
  %315 = getelementptr inbounds i8, ptr %314, i64 %309
  %316 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.208, ptr noundef nonnull %spec.select, ptr noundef %314, ptr noundef %315) #10
  %317 = load i32, ptr %5, align 4, !tbaa !39
  %318 = add nsw i32 %317, 1
  store i32 %318, ptr %5, align 4, !tbaa !39
  %319 = load ptr, ptr %269, align 8, !tbaa !52
  %320 = getelementptr inbounds i8, ptr %319, i64 %309
  %321 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.209, ptr noundef nonnull %spec.select, ptr noundef %320, ptr noundef %320) #10
  br label %336

322:                                              ; preds = %271, %268
  %323 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.210, ptr noundef nonnull %spec.select) #10
  %324 = load i32, ptr %5, align 4, !tbaa !39
  %325 = add nsw i32 %324, 1
  store i32 %325, ptr %5, align 4, !tbaa !39
  %326 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.211, ptr noundef nonnull %spec.select) #10
  %327 = load i32, ptr %5, align 4, !tbaa !39
  %328 = add nsw i32 %327, 1
  store i32 %328, ptr %5, align 4, !tbaa !39
  %329 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.212, ptr noundef nonnull %spec.select) #10
  %330 = load i32, ptr %5, align 4, !tbaa !39
  %331 = add nsw i32 %330, 1
  store i32 %331, ptr %5, align 4, !tbaa !39
  %332 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.213, ptr noundef nonnull %spec.select) #10
  %333 = load i32, ptr %5, align 4, !tbaa !39
  %334 = add nsw i32 %333, 1
  store i32 %334, ptr %5, align 4, !tbaa !39
  %335 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.214, ptr noundef nonnull %spec.select) #10
  br label %336

336:                                              ; preds = %322, %.critedge8
  %storemerge877.in = load i32, ptr %5, align 4, !tbaa !39
  %storemerge877 = add nsw i32 %storemerge877.in, 1
  store i32 %storemerge877, ptr %5, align 4, !tbaa !39
  br i1 %.not865, label %341, label %337

337:                                              ; preds = %336
  %338 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.164) #10
  %339 = load i32, ptr %5, align 4, !tbaa !39
  %340 = add nsw i32 %339, 1
  store i32 %340, ptr %5, align 4, !tbaa !39
  br label %341

341:                                              ; preds = %337, %336
  %342 = getelementptr inbounds i8, ptr %0, i64 88
  %343 = load ptr, ptr %342, align 8, !tbaa !55
  %.not880 = icmp eq ptr %343, null
  br i1 %.not880, label %359, label %344

344:                                              ; preds = %341
  %345 = getelementptr inbounds i8, ptr %343, i64 52
  %346 = load i32, ptr %345, align 4, !tbaa !56
  %.not881 = icmp eq i32 %346, 0
  br i1 %.not881, label %359, label %347

347:                                              ; preds = %344
  %348 = getelementptr inbounds i8, ptr %343, i64 8
  %349 = load i32, ptr %348, align 8, !tbaa !25
  %350 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.215, i32 noundef %349) #10
  %351 = load i32, ptr %5, align 4, !tbaa !39
  %352 = add nsw i32 %351, 1
  store i32 %352, ptr %5, align 4, !tbaa !39
  %353 = load ptr, ptr %342, align 8, !tbaa !55
  %354 = getelementptr inbounds i8, ptr %353, i64 80
  %355 = load i32, ptr %354, align 8, !tbaa !57
  %356 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.216, i32 noundef %355) #10
  %357 = load i32, ptr %5, align 4, !tbaa !39
  %358 = add nsw i32 %357, 1
  store i32 %358, ptr %5, align 4, !tbaa !39
  br label %359

359:                                              ; preds = %347, %344, %341
  %360 = getelementptr inbounds i8, ptr %0, i64 268
  %361 = load i32, ptr %360, align 4, !tbaa !58
  %.not882 = icmp eq i32 %361, 0
  br i1 %.not882, label %366, label %362

362:                                              ; preds = %359
  %363 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.217) #10
  %364 = load i32, ptr %5, align 4, !tbaa !39
  %365 = add nsw i32 %364, 1
  store i32 %365, ptr %5, align 4, !tbaa !39
  br label %366

366:                                              ; preds = %362, %359
  %367 = getelementptr inbounds i8, ptr %0, i64 28
  %368 = load i32, ptr %367, align 4, !tbaa !59
  %369 = shl nsw i32 %368, 1
  %370 = sext i32 %369 to i64
  %371 = call noalias ptr @calloc(i64 noundef %370, i64 noundef 24) #14
  %372 = icmp eq ptr %371, null
  br i1 %372, label %375, label %.preheader936

.preheader936:                                    ; preds = %366
  %373 = icmp sgt i32 %368, 0
  br i1 %373, label %.lr.ph987, label %._crit_edge990

.lr.ph987:                                        ; preds = %.preheader936
  %374 = load ptr, ptr %0, align 8, !tbaa !60
  %wide.trip.count = zext nneg i32 %368 to i64
  br label %379

375:                                              ; preds = %366
  %376 = load ptr, ptr @stderr, align 8, !tbaa !20
  %377 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %376, ptr noundef nonnull @.str.1) #15
  call void @exit(i32 noundef 1) #11
  unreachable

.preheader935:                                    ; preds = %379
  br i1 %373, label %.lr.ph989.preheader, label %._crit_edge990

.lr.ph989.preheader:                              ; preds = %.preheader935
  %smax = call i32 @llvm.smax.i32(i32 %369, i32 1)
  %wide.trip.count1180 = zext nneg i32 %smax to i64
  %xtraiter = and i64 %wide.trip.count1180, 3
  %378 = icmp eq i32 %368, 1
  br i1 %378, label %._crit_edge990.loopexit.unr-lcssa, label %.lr.ph989.preheader.new

.lr.ph989.preheader.new:                          ; preds = %.lr.ph989.preheader
  %unroll_iter = and i64 %wide.trip.count1180, 2147483644
  br label %.lr.ph989

379:                                              ; preds = %.lr.ph987, %379
  %indvars.iv1174 = phi i64 [ 0, %.lr.ph987 ], [ %indvars.iv.next1175, %379 ]
  %380 = getelementptr inbounds ptr, ptr %374, i64 %indvars.iv1174
  %381 = load ptr, ptr %380, align 8, !tbaa !20
  %382 = shl nuw nsw i64 %indvars.iv1174, 1
  %383 = getelementptr inbounds %struct.axset, ptr %371, i64 %382
  store ptr %381, ptr %383, align 8, !tbaa !61
  %384 = getelementptr inbounds i8, ptr %383, i64 8
  store i32 1, ptr %384, align 8, !tbaa !63
  %385 = getelementptr inbounds i8, ptr %381, i64 32
  %386 = load i32, ptr %385, align 8, !tbaa !64
  %387 = getelementptr inbounds i8, ptr %383, i64 12
  store i32 %386, ptr %387, align 4, !tbaa !66
  %388 = or disjoint i64 %382, 1
  %389 = getelementptr inbounds %struct.axset, ptr %371, i64 %388
  store ptr %381, ptr %389, align 8, !tbaa !61
  %390 = getelementptr inbounds i8, ptr %389, i64 8
  store i32 0, ptr %390, align 8, !tbaa !63
  %391 = getelementptr inbounds i8, ptr %381, i64 36
  %392 = load i32, ptr %391, align 4, !tbaa !67
  %393 = getelementptr inbounds i8, ptr %389, i64 12
  store i32 %392, ptr %393, align 4, !tbaa !66
  %indvars.iv.next1175 = add nuw nsw i64 %indvars.iv1174, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next1175, %wide.trip.count
  br i1 %exitcond.not, label %.preheader935, label %379, !llvm.loop !68

.lr.ph989:                                        ; preds = %.lr.ph989, %.lr.ph989.preheader.new
  %indvars.iv1177 = phi i64 [ 0, %.lr.ph989.preheader.new ], [ %indvars.iv.next1178.3, %.lr.ph989 ]
  %niter = phi i64 [ 0, %.lr.ph989.preheader.new ], [ %niter.next.3, %.lr.ph989 ]
  %394 = getelementptr inbounds %struct.axset, ptr %371, i64 %indvars.iv1177, i32 3
  %395 = trunc nuw nsw i64 %indvars.iv1177 to i32
  store i32 %395, ptr %394, align 8, !tbaa !69
  %indvars.iv.next1178 = or disjoint i64 %indvars.iv1177, 1
  %396 = getelementptr inbounds %struct.axset, ptr %371, i64 %indvars.iv.next1178, i32 3
  %397 = trunc nuw nsw i64 %indvars.iv.next1178 to i32
  store i32 %397, ptr %396, align 8, !tbaa !69
  %indvars.iv.next1178.1 = or disjoint i64 %indvars.iv1177, 2
  %398 = getelementptr inbounds %struct.axset, ptr %371, i64 %indvars.iv.next1178.1, i32 3
  %399 = trunc nuw nsw i64 %indvars.iv.next1178.1 to i32
  store i32 %399, ptr %398, align 8, !tbaa !69
  %indvars.iv.next1178.2 = or disjoint i64 %indvars.iv1177, 3
  %400 = getelementptr inbounds %struct.axset, ptr %371, i64 %indvars.iv.next1178.2, i32 3
  %401 = trunc nuw nsw i64 %indvars.iv.next1178.2 to i32
  store i32 %401, ptr %400, align 8, !tbaa !69
  %indvars.iv.next1178.3 = add nuw nsw i64 %indvars.iv1177, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge990.loopexit.unr-lcssa, label %.lr.ph989, !llvm.loop !70

._crit_edge990.loopexit.unr-lcssa:                ; preds = %.lr.ph989, %.lr.ph989.preheader
  %indvars.iv1177.unr = phi i64 [ 0, %.lr.ph989.preheader ], [ %indvars.iv.next1178.3, %.lr.ph989 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge990, label %.lr.ph989.epil

.lr.ph989.epil:                                   ; preds = %._crit_edge990.loopexit.unr-lcssa, %.lr.ph989.epil
  %indvars.iv1177.epil = phi i64 [ %indvars.iv.next1178.epil, %.lr.ph989.epil ], [ %indvars.iv1177.unr, %._crit_edge990.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph989.epil ], [ 0, %._crit_edge990.loopexit.unr-lcssa ]
  %402 = getelementptr inbounds %struct.axset, ptr %371, i64 %indvars.iv1177.epil, i32 3
  %403 = trunc nuw nsw i64 %indvars.iv1177.epil to i32
  store i32 %403, ptr %402, align 8, !tbaa !69
  %indvars.iv.next1178.epil = add nuw nsw i64 %indvars.iv1177.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge990, label %.lr.ph989.epil, !llvm.loop !71

._crit_edge990:                                   ; preds = %._crit_edge990.loopexit.unr-lcssa, %.lr.ph989.epil, %.preheader936, %.preheader935
  call void @qsort(ptr noundef nonnull %371, i64 noundef %370, i64 noundef 24, ptr noundef nonnull @axset_compare) #10
  %404 = load i32, ptr %158, align 8, !tbaa !18
  %405 = getelementptr inbounds i8, ptr %0, i64 44
  %406 = load i32, ptr %405, align 4, !tbaa !23
  %407 = call ptr @acttab_alloc(i32 noundef %404, i32 noundef %406)
  %408 = load i32, ptr %367, align 4, !tbaa !59
  %409 = icmp sgt i32 %408, 0
  br i1 %409, label %.lr.ph1009.preheader, label %.critedge12

.lr.ph1009.preheader:                             ; preds = %._crit_edge990
  %410 = getelementptr inbounds i8, ptr %371, i64 12
  %411 = load i32, ptr %410, align 4, !tbaa !66
  %412 = icmp sgt i32 %411, 0
  br i1 %412, label %.lr.ph1280, label %.critedge12

.lr.ph1009:                                       ; preds = %457
  %413 = getelementptr inbounds %struct.axset, ptr %371, i64 %indvars.iv.next1183, i32 2
  %414 = load i32, ptr %413, align 4, !tbaa !66
  %415 = icmp sgt i32 %414, 0
  br i1 %415, label %.lr.ph1280, label %.critedge12, !llvm.loop !73

.lr.ph1280:                                       ; preds = %.lr.ph1009.preheader, %.lr.ph1009
  %.082510031279 = phi i32 [ %.1826, %.lr.ph1009 ], [ 0, %.lr.ph1009.preheader ]
  %.082210041278 = phi i32 [ %.2824, %.lr.ph1009 ], [ 0, %.lr.ph1009.preheader ]
  %.081910051277 = phi i32 [ %.1820, %.lr.ph1009 ], [ 0, %.lr.ph1009.preheader ]
  %.081510061276 = phi i32 [ %.2817, %.lr.ph1009 ], [ 0, %.lr.ph1009.preheader ]
  %indvars.iv11821275 = phi i64 [ %indvars.iv.next1183, %.lr.ph1009 ], [ 0, %.lr.ph1009.preheader ]
  %416 = getelementptr inbounds %struct.axset, ptr %371, i64 %indvars.iv11821275
  %417 = load ptr, ptr %416, align 8, !tbaa !61
  %418 = getelementptr inbounds i8, ptr %416, i64 8
  %419 = load i32, ptr %418, align 8, !tbaa !63
  %.not913 = icmp eq i32 %419, 0
  %420 = getelementptr inbounds i8, ptr %417, i64 24
  %.1997 = load ptr, ptr %420, align 8, !tbaa !20
  %.not914998 = icmp eq ptr %.1997, null
  br i1 %.not913, label %437, label %421

421:                                              ; preds = %.lr.ph1280
  br i1 %.not914998, label %._crit_edge996, label %.lr.ph995

.lr.ph995:                                        ; preds = %421, %433
  %.0775993 = phi ptr [ %.0775, %433 ], [ %.1997, %421 ]
  %422 = load ptr, ptr %.0775993, align 8, !tbaa !74
  %423 = getelementptr inbounds i8, ptr %422, i64 8
  %424 = load i32, ptr %423, align 8, !tbaa !25
  %425 = load i32, ptr %405, align 4, !tbaa !23
  %.not916 = icmp slt i32 %424, %425
  br i1 %.not916, label %426, label %433

426:                                              ; preds = %.lr.ph995
  %427 = call i32 @compute_action(ptr noundef nonnull %0, ptr noundef nonnull %.0775993)
  %428 = icmp slt i32 %427, 0
  br i1 %428, label %433, label %429

429:                                              ; preds = %426
  %430 = load ptr, ptr %.0775993, align 8, !tbaa !74
  %431 = getelementptr inbounds i8, ptr %430, i64 8
  %432 = load i32, ptr %431, align 8, !tbaa !25
  call void @acttab_action(ptr noundef %407, i32 noundef %432, i32 noundef %427)
  br label %433

433:                                              ; preds = %426, %.lr.ph995, %429
  %434 = getelementptr inbounds i8, ptr %.0775993, i64 32
  %.0775 = load ptr, ptr %434, align 8, !tbaa !20
  %.not915 = icmp eq ptr %.0775, null
  br i1 %.not915, label %._crit_edge996, label %.lr.ph995, !llvm.loop !76

._crit_edge996:                                   ; preds = %433, %421
  %435 = call i32 @acttab_insert(ptr noundef %407, i32 noundef 1)
  %436 = getelementptr inbounds i8, ptr %417, i64 40
  store i32 %435, ptr %436, align 8, !tbaa !77
  %spec.select920 = call i32 @llvm.smin.i32(i32 %435, i32 %.081510061276)
  %spec.select929 = call i32 @llvm.smax.i32(i32 %435, i32 %.081910051277)
  br label %457

437:                                              ; preds = %.lr.ph1280
  br i1 %.not914998, label %._crit_edge1002, label %.lr.ph1001

.lr.ph1001:                                       ; preds = %437, %453
  %.1999 = phi ptr [ %.1, %453 ], [ %.1997, %437 ]
  %438 = load ptr, ptr %.1999, align 8, !tbaa !74
  %439 = getelementptr inbounds i8, ptr %438, i64 8
  %440 = load i32, ptr %439, align 8, !tbaa !25
  %441 = load i32, ptr %405, align 4, !tbaa !23
  %442 = icmp slt i32 %440, %441
  br i1 %442, label %453, label %443

443:                                              ; preds = %.lr.ph1001
  %444 = load i32, ptr %158, align 8, !tbaa !18
  %445 = icmp eq i32 %440, %444
  br i1 %445, label %453, label %446

446:                                              ; preds = %443
  %447 = call i32 @compute_action(ptr noundef nonnull %0, ptr noundef nonnull %.1999)
  %448 = icmp slt i32 %447, 0
  br i1 %448, label %453, label %449

449:                                              ; preds = %446
  %450 = load ptr, ptr %.1999, align 8, !tbaa !74
  %451 = getelementptr inbounds i8, ptr %450, i64 8
  %452 = load i32, ptr %451, align 8, !tbaa !25
  call void @acttab_action(ptr noundef %407, i32 noundef %452, i32 noundef %447)
  br label %453

453:                                              ; preds = %446, %443, %.lr.ph1001, %449
  %454 = getelementptr inbounds i8, ptr %.1999, i64 32
  %.1 = load ptr, ptr %454, align 8, !tbaa !20
  %.not914 = icmp eq ptr %.1, null
  br i1 %.not914, label %._crit_edge1002, label %.lr.ph1001, !llvm.loop !78

._crit_edge1002:                                  ; preds = %453, %437
  %455 = call i32 @acttab_insert(ptr noundef %407, i32 noundef 0)
  %456 = getelementptr inbounds i8, ptr %417, i64 44
  store i32 %455, ptr %456, align 4, !tbaa !79
  %spec.select921 = call i32 @llvm.smin.i32(i32 %455, i32 %.082210041278)
  %spec.select930 = call i32 @llvm.smax.i32(i32 %455, i32 %.082510031279)
  br label %457

457:                                              ; preds = %._crit_edge1002, %._crit_edge996
  %.1826 = phi i32 [ %.082510031279, %._crit_edge996 ], [ %spec.select930, %._crit_edge1002 ]
  %.2824 = phi i32 [ %.082210041278, %._crit_edge996 ], [ %spec.select921, %._crit_edge1002 ]
  %.1820 = phi i32 [ %spec.select929, %._crit_edge996 ], [ %.081910051277, %._crit_edge1002 ]
  %.2817 = phi i32 [ %spec.select920, %._crit_edge996 ], [ %.081510061276, %._crit_edge1002 ]
  %indvars.iv.next1183 = add nuw nsw i64 %indvars.iv11821275, 1
  %458 = load i32, ptr %367, align 4, !tbaa !59
  %459 = shl nsw i32 %458, 1
  %460 = sext i32 %459 to i64
  %461 = icmp slt i64 %indvars.iv.next1183, %460
  br i1 %461, label %.lr.ph1009, label %.critedge12, !llvm.loop !73

.critedge12:                                      ; preds = %457, %.lr.ph1009, %.lr.ph1009.preheader, %._crit_edge990
  %.0825.lcssa = phi i32 [ 0, %._crit_edge990 ], [ 0, %.lr.ph1009.preheader ], [ %.1826, %.lr.ph1009 ], [ %.1826, %457 ]
  %.0822.lcssa = phi i32 [ 0, %._crit_edge990 ], [ 0, %.lr.ph1009.preheader ], [ %.2824, %.lr.ph1009 ], [ %.2824, %457 ]
  %.0819.lcssa = phi i32 [ 0, %._crit_edge990 ], [ 0, %.lr.ph1009.preheader ], [ %.1820, %.lr.ph1009 ], [ %.1820, %457 ]
  %.0815.lcssa = phi i32 [ 0, %._crit_edge990 ], [ 0, %.lr.ph1009.preheader ], [ %.2817, %.lr.ph1009 ], [ %.2817, %457 ]
  %.lcssa940 = phi i32 [ %408, %._crit_edge990 ], [ %408, %.lr.ph1009.preheader ], [ %458, %.lr.ph1009 ], [ %458, %457 ]
  call void @free(ptr noundef %371) #10
  %462 = getelementptr inbounds i8, ptr %0, i64 8
  %.17821021 = load ptr, ptr %462, align 8, !tbaa !20
  %.not8831022 = icmp eq ptr %.17821021, null
  br i1 %.not8831022, label %.preheader934, label %.lr.ph1024

.preheader934:                                    ; preds = %.lr.ph1024, %.critedge12
  %463 = icmp sgt i32 %.lcssa940, 0
  br i1 %463, label %.lr.ph1032, label %._crit_edge1033

.lr.ph1032:                                       ; preds = %.preheader934
  %464 = load ptr, ptr %0, align 8, !tbaa !60
  %wide.trip.count1188 = zext nneg i32 %.lcssa940 to i64
  br label %467

.lr.ph1024:                                       ; preds = %.critedge12, %.lr.ph1024
  %.17821023 = phi ptr [ %.1782, %.lr.ph1024 ], [ %.17821021, %.critedge12 ]
  %465 = getelementptr inbounds i8, ptr %.17821023, i64 108
  store i32 0, ptr %465, align 4, !tbaa !80
  %466 = getelementptr inbounds i8, ptr %.17821023, i64 128
  %.1782 = load ptr, ptr %466, align 8, !tbaa !20
  %.not883 = icmp eq ptr %.1782, null
  br i1 %.not883, label %.preheader934, label %.lr.ph1024, !llvm.loop !81

467:                                              ; preds = %.lr.ph1032, %._crit_edge1030
  %indvars.iv1185 = phi i64 [ 0, %.lr.ph1032 ], [ %indvars.iv.next1186, %._crit_edge1030 ]
  %468 = getelementptr inbounds ptr, ptr %464, i64 %indvars.iv1185
  %469 = load ptr, ptr %468, align 8, !tbaa !20
  %470 = getelementptr inbounds i8, ptr %469, i64 24
  %.21025 = load ptr, ptr %470, align 8, !tbaa !20
  %.not9121026 = icmp eq ptr %.21025, null
  br i1 %.not9121026, label %._crit_edge1030, label %.lr.ph1029

.lr.ph1029:                                       ; preds = %467, %477
  %.21027 = phi ptr [ %.2, %477 ], [ %.21025, %467 ]
  %471 = getelementptr inbounds i8, ptr %.21027, i64 8
  %472 = load i32, ptr %471, align 8, !tbaa !82
  switch i32 %472, label %477 [
    i32 2, label %473
    i32 10, label %473
  ]

473:                                              ; preds = %.lr.ph1029, %.lr.ph1029
  %474 = getelementptr inbounds i8, ptr %.21027, i64 16
  %475 = load ptr, ptr %474, align 8, !tbaa !47
  %476 = getelementptr inbounds i8, ptr %475, i64 108
  store i32 1, ptr %476, align 4, !tbaa !80
  br label %477

477:                                              ; preds = %.lr.ph1029, %473
  %478 = getelementptr inbounds i8, ptr %.21027, i64 32
  %.2 = load ptr, ptr %478, align 8, !tbaa !20
  %.not912 = icmp eq ptr %.2, null
  br i1 %.not912, label %._crit_edge1030, label %.lr.ph1029, !llvm.loop !83

._crit_edge1030:                                  ; preds = %477, %467
  %indvars.iv.next1186 = add nuw nsw i64 %indvars.iv1185, 1
  %exitcond1189.not = icmp eq i64 %indvars.iv.next1186, %wide.trip.count1188
  br i1 %exitcond1189.not, label %._crit_edge1033, label %467, !llvm.loop !84

._crit_edge1033:                                  ; preds = %._crit_edge1030, %.preheader934
  %479 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.218, i32 noundef %.lcssa940) #10
  %480 = load i32, ptr %5, align 4, !tbaa !39
  %481 = add nsw i32 %480, 1
  store i32 %481, ptr %5, align 4, !tbaa !39
  %482 = load i32, ptr %12, align 8, !tbaa !12
  %483 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.219, i32 noundef %482) #10
  %484 = load i32, ptr %5, align 4, !tbaa !39
  %485 = add nsw i32 %484, 1
  store i32 %485, ptr %5, align 4, !tbaa !39
  %486 = getelementptr inbounds i8, ptr %0, i64 36
  %487 = load i32, ptr %486, align 4, !tbaa !85
  %488 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.220, i32 noundef %487) #10
  %489 = load i32, ptr %5, align 4, !tbaa !39
  %490 = add nsw i32 %489, 1
  store i32 %490, ptr %5, align 4, !tbaa !39
  %491 = load i32, ptr %405, align 4, !tbaa !23
  %492 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.221, i32 noundef %491) #10
  %493 = load i32, ptr %5, align 4, !tbaa !39
  %494 = add nsw i32 %493, 1
  store i32 %494, ptr %5, align 4, !tbaa !39
  %495 = load i32, ptr %367, align 4, !tbaa !59
  %496 = add nsw i32 %495, -1
  %497 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.222, i32 noundef %496) #10
  %498 = load i32, ptr %5, align 4, !tbaa !39
  %499 = add nsw i32 %498, 1
  store i32 %499, ptr %5, align 4, !tbaa !39
  %500 = load i32, ptr %11, align 8, !tbaa !11
  %501 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.223, i32 noundef %500) #10
  %502 = load i32, ptr %5, align 4, !tbaa !39
  %503 = add nsw i32 %502, 1
  store i32 %503, ptr %5, align 4, !tbaa !39
  %504 = load i32, ptr %12, align 8, !tbaa !12
  %505 = add i32 %500, -1
  %506 = add i32 %505, %504
  %507 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.224, i32 noundef %506) #10
  %508 = load i32, ptr %5, align 4, !tbaa !39
  %509 = add nsw i32 %508, 1
  store i32 %509, ptr %5, align 4, !tbaa !39
  %510 = load i32, ptr %15, align 4, !tbaa !13
  %511 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.225, i32 noundef %510) #10
  %512 = load i32, ptr %5, align 4, !tbaa !39
  %513 = add nsw i32 %512, 1
  store i32 %513, ptr %5, align 4, !tbaa !39
  %514 = load i32, ptr %17, align 8, !tbaa !14
  %515 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.226, i32 noundef %514) #10
  %516 = load i32, ptr %5, align 4, !tbaa !39
  %517 = add nsw i32 %516, 1
  store i32 %517, ptr %5, align 4, !tbaa !39
  %518 = load i32, ptr %19, align 4, !tbaa !15
  %519 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.227, i32 noundef %518) #10
  %520 = load i32, ptr %5, align 4, !tbaa !39
  %521 = add nsw i32 %520, 1
  store i32 %521, ptr %5, align 4, !tbaa !39
  %522 = load i32, ptr %21, align 8, !tbaa !16
  %523 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.228, i32 noundef %522) #10
  %524 = load i32, ptr %5, align 4, !tbaa !39
  %525 = add nsw i32 %524, 1
  store i32 %525, ptr %5, align 4, !tbaa !39
  %526 = load i32, ptr %21, align 8, !tbaa !16
  %527 = load i32, ptr %12, align 8, !tbaa !12
  %528 = add i32 %526, -1
  %529 = add i32 %528, %527
  %530 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.229, i32 noundef %529) #10
  %531 = load i32, ptr %5, align 4, !tbaa !39
  %532 = add nsw i32 %531, 1
  store i32 %532, ptr %5, align 4, !tbaa !39
  %533 = load ptr, ptr %121, align 8, !tbaa !40
  call void @tplt_xfer(ptr noundef %533, ptr noundef nonnull %24, ptr noundef %27, ptr noundef nonnull %5)
  %534 = call i32 @acttab_action_size(ptr noundef %407)
  %535 = getelementptr inbounds i8, ptr %0, i64 252
  store i32 %534, ptr %535, align 4, !tbaa !86
  %536 = load i32, ptr %7, align 4, !tbaa !39
  %537 = mul nsw i32 %536, %534
  %538 = getelementptr inbounds i8, ptr %0, i64 260
  %539 = load i32, ptr %538, align 4, !tbaa !87
  %540 = add nsw i32 %539, %537
  store i32 %540, ptr %538, align 4, !tbaa !87
  %541 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.230, i32 noundef %534) #10
  %542 = load i32, ptr %5, align 4, !tbaa !39
  %543 = add nsw i32 %542, 1
  store i32 %543, ptr %5, align 4, !tbaa !39
  %544 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.231) #10
  %545 = load i32, ptr %5, align 4, !tbaa !39
  %546 = add nsw i32 %545, 1
  store i32 %546, ptr %5, align 4, !tbaa !39
  %547 = icmp sgt i32 %534, 0
  br i1 %547, label %.lr.ph1037, label %._crit_edge1038

.lr.ph1037:                                       ; preds = %._crit_edge1033
  %548 = getelementptr inbounds i8, ptr %407, i64 8
  %549 = add nsw i32 %534, -1
  %550 = zext nneg i32 %549 to i64
  %wide.trip.count1193 = zext nneg i32 %534 to i64
  br label %551

551:                                              ; preds = %.lr.ph1037, %573
  %indvars.iv1190 = phi i64 [ 0, %.lr.ph1037 ], [ %indvars.iv.next1191, %573 ]
  %.17961034 = phi i32 [ 0, %.lr.ph1037 ], [ %.2797, %573 ]
  %552 = load ptr, ptr %548, align 8, !tbaa !88
  %553 = getelementptr inbounds %struct.lookahead_action, ptr %552, i64 %indvars.iv1190, i32 1
  %554 = load i32, ptr %553, align 4, !tbaa !90
  %555 = icmp slt i32 %554, 0
  br i1 %555, label %556, label %558

556:                                              ; preds = %551
  %557 = load i32, ptr %19, align 4, !tbaa !15
  br label %558

558:                                              ; preds = %556, %551
  %.0812 = phi i32 [ %557, %556 ], [ %554, %551 ]
  %559 = icmp eq i32 %.17961034, 0
  br i1 %559, label %560, label %563

560:                                              ; preds = %558
  %561 = trunc nuw nsw i64 %indvars.iv1190 to i32
  %562 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.232, i32 noundef %561) #10
  br label %563

563:                                              ; preds = %560, %558
  %564 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.233, i32 noundef %.0812) #10
  %565 = icmp eq i32 %.17961034, 9
  %566 = icmp eq i64 %indvars.iv1190, %550
  %or.cond923 = select i1 %565, i1 true, i1 %566
  br i1 %or.cond923, label %567, label %571

567:                                              ; preds = %563
  %568 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.15) #10
  %569 = load i32, ptr %5, align 4, !tbaa !39
  %570 = add nsw i32 %569, 1
  store i32 %570, ptr %5, align 4, !tbaa !39
  br label %573

571:                                              ; preds = %563
  %572 = add nsw i32 %.17961034, 1
  br label %573

573:                                              ; preds = %571, %567
  %.2797 = phi i32 [ 0, %567 ], [ %572, %571 ]
  %indvars.iv.next1191 = add nuw nsw i64 %indvars.iv1190, 1
  %exitcond1194.not = icmp eq i64 %indvars.iv.next1191, %wide.trip.count1193
  br i1 %exitcond1194.not, label %._crit_edge1038, label %551, !llvm.loop !92

._crit_edge1038:                                  ; preds = %573, %._crit_edge1033
  %574 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.234) #10
  %575 = load i32, ptr %5, align 4, !tbaa !39
  %576 = add nsw i32 %575, 1
  store i32 %576, ptr %5, align 4, !tbaa !39
  %577 = load i32, ptr %407, align 8, !tbaa !93
  %578 = getelementptr inbounds i8, ptr %0, i64 256
  store i32 %577, ptr %578, align 8, !tbaa !94
  %579 = load i32, ptr %8, align 4, !tbaa !39
  %580 = mul nsw i32 %579, %577
  %581 = load i32, ptr %538, align 4, !tbaa !87
  %582 = add nsw i32 %581, %580
  store i32 %582, ptr %538, align 4, !tbaa !87
  %583 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.235) #10
  %584 = load i32, ptr %5, align 4, !tbaa !39
  %585 = add nsw i32 %584, 1
  store i32 %585, ptr %5, align 4, !tbaa !39
  %586 = icmp sgt i32 %577, 0
  br i1 %586, label %.lr.ph1043, label %._crit_edge1044

.lr.ph1043:                                       ; preds = %._crit_edge1038
  %587 = getelementptr inbounds i8, ptr %407, i64 8
  %wide.trip.count1198 = zext nneg i32 %577 to i64
  br label %588

588:                                              ; preds = %.lr.ph1043, %609
  %indvars.iv1195 = phi i64 [ 0, %.lr.ph1043 ], [ %indvars.iv.next1196, %609 ]
  %.37981039 = phi i32 [ 0, %.lr.ph1043 ], [ %.4799, %609 ]
  %589 = load ptr, ptr %587, align 8, !tbaa !88
  %590 = getelementptr inbounds %struct.lookahead_action, ptr %589, i64 %indvars.iv1195
  %591 = load i32, ptr %590, align 4, !tbaa !95
  %592 = icmp slt i32 %591, 0
  br i1 %592, label %593, label %595

593:                                              ; preds = %588
  %594 = load i32, ptr %158, align 8, !tbaa !18
  br label %595

595:                                              ; preds = %593, %588
  %.0811 = phi i32 [ %594, %593 ], [ %591, %588 ]
  %596 = icmp eq i32 %.37981039, 0
  br i1 %596, label %.thread, label %600

.thread:                                          ; preds = %595
  %597 = trunc nuw nsw i64 %indvars.iv1195 to i32
  %598 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.232, i32 noundef %597) #10
  %599 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.233, i32 noundef %.0811) #10
  br label %607

600:                                              ; preds = %595
  %601 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.233, i32 noundef %.0811) #10
  %602 = icmp eq i32 %.37981039, 9
  br i1 %602, label %603, label %607

603:                                              ; preds = %600
  %604 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.15) #10
  %605 = load i32, ptr %5, align 4, !tbaa !39
  %606 = add nsw i32 %605, 1
  store i32 %606, ptr %5, align 4, !tbaa !39
  br label %609

607:                                              ; preds = %.thread, %600
  %608 = add nsw i32 %.37981039, 1
  br label %609

609:                                              ; preds = %607, %603
  %.4799 = phi i32 [ 0, %603 ], [ %608, %607 ]
  %indvars.iv.next1196 = add nuw nsw i64 %indvars.iv1195, 1
  %exitcond1199.not = icmp eq i64 %indvars.iv.next1196, %wide.trip.count1198
  br i1 %exitcond1199.not, label %._crit_edge1044, label %588, !llvm.loop !96

._crit_edge1044:                                  ; preds = %609, %._crit_edge1038
  %.3798.lcssa = phi i32 [ 0, %._crit_edge1038 ], [ %.4799, %609 ]
  %.12.lcssa = phi i32 [ 0, %._crit_edge1038 ], [ %577, %609 ]
  %610 = load i32, ptr %405, align 4, !tbaa !23
  %611 = load i32, ptr %535, align 4, !tbaa !86
  %612 = add nsw i32 %611, %610
  %613 = icmp slt i32 %.12.lcssa, %612
  br i1 %613, label %.lr.ph1051, label %._crit_edge1052

.lr.ph1051:                                       ; preds = %._crit_edge1044, %628
  %.131048 = phi i32 [ %629, %628 ], [ %.12.lcssa, %._crit_edge1044 ]
  %.58001047 = phi i32 [ %.6801, %628 ], [ %.3798.lcssa, %._crit_edge1044 ]
  %614 = icmp eq i32 %.58001047, 0
  br i1 %614, label %.thread931, label %618

.thread931:                                       ; preds = %.lr.ph1051
  %615 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.232, i32 noundef %.131048) #10
  %616 = load i32, ptr %405, align 4, !tbaa !23
  %617 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.233, i32 noundef %616) #10
  br label %626

618:                                              ; preds = %.lr.ph1051
  %619 = load i32, ptr %405, align 4, !tbaa !23
  %620 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.233, i32 noundef %619) #10
  %621 = icmp eq i32 %.58001047, 9
  br i1 %621, label %622, label %626

622:                                              ; preds = %618
  %623 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.15) #10
  %624 = load i32, ptr %5, align 4, !tbaa !39
  %625 = add nsw i32 %624, 1
  store i32 %625, ptr %5, align 4, !tbaa !39
  br label %628

626:                                              ; preds = %.thread931, %618
  %627 = add nsw i32 %.58001047, 1
  br label %628

628:                                              ; preds = %626, %622
  %.6801 = phi i32 [ 0, %622 ], [ %627, %626 ]
  %629 = add nuw i32 %.131048, 1
  %exitcond1200.not = icmp eq i32 %629, %612
  br i1 %exitcond1200.not, label %._crit_edge1052, label %.lr.ph1051, !llvm.loop !97

._crit_edge1052:                                  ; preds = %628, %._crit_edge1044
  %.5800.lcssa = phi i32 [ %.3798.lcssa, %._crit_edge1044 ], [ %.6801, %628 ]
  %630 = icmp sgt i32 %.5800.lcssa, 0
  br i1 %630, label %631, label %635

631:                                              ; preds = %._crit_edge1052
  %632 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.15) #10
  %633 = load i32, ptr %5, align 4, !tbaa !39
  %634 = add nsw i32 %633, 1
  store i32 %634, ptr %5, align 4, !tbaa !39
  br label %635

635:                                              ; preds = %631, %._crit_edge1052
  %636 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.234) #10
  %637 = load i32, ptr %5, align 4, !tbaa !39
  %638 = add nsw i32 %637, 1
  store i32 %638, ptr %5, align 4, !tbaa !39
  %639 = load i32, ptr %367, align 4, !tbaa !59
  %640 = icmp sgt i32 %639, 0
  br i1 %640, label %.lr.ph1056, label %.critedge14

.lr.ph1056:                                       ; preds = %635
  %641 = load ptr, ptr %0, align 8, !tbaa !60
  %invariant.gep1060 = getelementptr i8, ptr %641, i64 -8
  br label %642

642:                                              ; preds = %.lr.ph1056, %648
  %.08131054 = phi i32 [ %639, %.lr.ph1056 ], [ %649, %648 ]
  %643 = zext nneg i32 %.08131054 to i64
  %gep1061 = getelementptr ptr, ptr %invariant.gep1060, i64 %643
  %644 = load ptr, ptr %gep1061, align 8, !tbaa !20
  %645 = getelementptr inbounds i8, ptr %644, i64 40
  %646 = load i32, ptr %645, align 8, !tbaa !77
  %647 = icmp eq i32 %646, -2147483647
  br i1 %647, label %648, label %.critedge14

648:                                              ; preds = %642
  %649 = add nsw i32 %.08131054, -1
  %650 = icmp sgt i32 %.08131054, 1
  br i1 %650, label %642, label %.critedge14, !llvm.loop !98

.critedge14:                                      ; preds = %642, %648, %635
  %.0813.lcssa = phi i32 [ %639, %635 ], [ 0, %648 ], [ %.08131054, %642 ]
  %651 = add nsw i32 %.0813.lcssa, -1
  %652 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.236, i32 noundef %651) #10
  %653 = load i32, ptr %5, align 4, !tbaa !39
  %654 = add nsw i32 %653, 1
  store i32 %654, ptr %5, align 4, !tbaa !39
  %655 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.237, i32 noundef %.0815.lcssa) #10
  %656 = load i32, ptr %5, align 4, !tbaa !39
  %657 = add nsw i32 %656, 1
  store i32 %657, ptr %5, align 4, !tbaa !39
  %658 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.238, i32 noundef %.0819.lcssa) #10
  %659 = load i32, ptr %5, align 4, !tbaa !39
  %660 = add nsw i32 %659, 1
  store i32 %660, ptr %5, align 4, !tbaa !39
  %661 = load i32, ptr %405, align 4, !tbaa !23
  %662 = load i32, ptr %535, align 4, !tbaa !86
  %663 = add nsw i32 %662, %661
  %664 = call ptr @minimum_size_type(i32 noundef %.0815.lcssa, i32 noundef %663, ptr noundef nonnull %6)
  %665 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.239, ptr noundef %664) #10
  %666 = load i32, ptr %5, align 4, !tbaa !39
  %667 = add nsw i32 %666, 1
  store i32 %667, ptr %5, align 4, !tbaa !39
  %668 = load i32, ptr %6, align 4, !tbaa !39
  %669 = mul nsw i32 %668, %.0813.lcssa
  %670 = load i32, ptr %538, align 4, !tbaa !87
  %671 = add nsw i32 %670, %669
  store i32 %671, ptr %538, align 4, !tbaa !87
  %672 = icmp sgt i32 %.0813.lcssa, 0
  br i1 %672, label %.lr.ph1064.preheader, label %._crit_edge1065

.lr.ph1064.preheader:                             ; preds = %.critedge14
  %673 = zext nneg i32 %651 to i64
  %wide.trip.count1204 = zext nneg i32 %.0813.lcssa to i64
  br label %.lr.ph1064

.lr.ph1064:                                       ; preds = %.lr.ph1064.preheader, %697
  %indvars.iv1201 = phi i64 [ 0, %.lr.ph1064.preheader ], [ %indvars.iv.next1202, %697 ]
  %.78021062 = phi i32 [ 0, %.lr.ph1064.preheader ], [ %.8803, %697 ]
  %674 = load ptr, ptr %0, align 8, !tbaa !60
  %675 = getelementptr inbounds ptr, ptr %674, i64 %indvars.iv1201
  %676 = load ptr, ptr %675, align 8, !tbaa !20
  %677 = getelementptr inbounds i8, ptr %676, i64 40
  %678 = load i32, ptr %677, align 8, !tbaa !77
  %679 = icmp eq i32 %678, -2147483647
  br i1 %679, label %680, label %682

680:                                              ; preds = %.lr.ph1064
  %681 = load i32, ptr %535, align 4, !tbaa !86
  br label %682

682:                                              ; preds = %680, %.lr.ph1064
  %.0810 = phi i32 [ %681, %680 ], [ %678, %.lr.ph1064 ]
  %683 = icmp eq i32 %.78021062, 0
  br i1 %683, label %684, label %687

684:                                              ; preds = %682
  %685 = trunc nuw nsw i64 %indvars.iv1201 to i32
  %686 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.232, i32 noundef %685) #10
  br label %687

687:                                              ; preds = %684, %682
  %688 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.233, i32 noundef %.0810) #10
  %689 = icmp eq i32 %.78021062, 9
  %690 = icmp eq i64 %indvars.iv1201, %673
  %or.cond924 = or i1 %689, %690
  br i1 %or.cond924, label %691, label %695

691:                                              ; preds = %687
  %692 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.15) #10
  %693 = load i32, ptr %5, align 4, !tbaa !39
  %694 = add nsw i32 %693, 1
  store i32 %694, ptr %5, align 4, !tbaa !39
  br label %697

695:                                              ; preds = %687
  %696 = add nsw i32 %.78021062, 1
  br label %697

697:                                              ; preds = %695, %691
  %.8803 = phi i32 [ 0, %691 ], [ %696, %695 ]
  %indvars.iv.next1202 = add nuw nsw i64 %indvars.iv1201, 1
  %exitcond1205.not = icmp eq i64 %indvars.iv.next1202, %wide.trip.count1204
  br i1 %exitcond1205.not, label %._crit_edge1065, label %.lr.ph1064, !llvm.loop !99

._crit_edge1065:                                  ; preds = %697, %.critedge14
  %698 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.234) #10
  %699 = load i32, ptr %5, align 4, !tbaa !39
  %700 = add nsw i32 %699, 1
  store i32 %700, ptr %5, align 4, !tbaa !39
  %701 = load i32, ptr %367, align 4, !tbaa !59
  %702 = icmp sgt i32 %701, 0
  br i1 %702, label %.lr.ph1068, label %.critedge16

.lr.ph1068:                                       ; preds = %._crit_edge1065
  %703 = load ptr, ptr %0, align 8, !tbaa !60
  %invariant.gep1072 = getelementptr i8, ptr %703, i64 -8
  br label %704

704:                                              ; preds = %.lr.ph1068, %710
  %.18141066 = phi i32 [ %701, %.lr.ph1068 ], [ %711, %710 ]
  %705 = zext nneg i32 %.18141066 to i64
  %gep1073 = getelementptr ptr, ptr %invariant.gep1072, i64 %705
  %706 = load ptr, ptr %gep1073, align 8, !tbaa !20
  %707 = getelementptr inbounds i8, ptr %706, i64 44
  %708 = load i32, ptr %707, align 4, !tbaa !79
  %709 = icmp eq i32 %708, -2147483647
  br i1 %709, label %710, label %.critedge16

710:                                              ; preds = %704
  %711 = add nsw i32 %.18141066, -1
  %712 = icmp sgt i32 %.18141066, 1
  br i1 %712, label %704, label %.critedge16, !llvm.loop !100

.critedge16:                                      ; preds = %704, %710, %._crit_edge1065
  %.1814.lcssa = phi i32 [ %701, %._crit_edge1065 ], [ 0, %710 ], [ %.18141066, %704 ]
  %713 = add nsw i32 %.1814.lcssa, -1
  %714 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.240, i32 noundef %713) #10
  %715 = load i32, ptr %5, align 4, !tbaa !39
  %716 = add nsw i32 %715, 1
  store i32 %716, ptr %5, align 4, !tbaa !39
  %717 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.241, i32 noundef %.0822.lcssa) #10
  %718 = load i32, ptr %5, align 4, !tbaa !39
  %719 = add nsw i32 %718, 1
  store i32 %719, ptr %5, align 4, !tbaa !39
  %720 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.242, i32 noundef %.0825.lcssa) #10
  %721 = load i32, ptr %5, align 4, !tbaa !39
  %722 = add nsw i32 %721, 1
  store i32 %722, ptr %5, align 4, !tbaa !39
  %723 = add nsw i32 %.0822.lcssa, -1
  %724 = call ptr @minimum_size_type(i32 noundef %723, i32 noundef %.0825.lcssa, ptr noundef nonnull %6)
  %725 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.243, ptr noundef %724) #10
  %726 = load i32, ptr %5, align 4, !tbaa !39
  %727 = add nsw i32 %726, 1
  store i32 %727, ptr %5, align 4, !tbaa !39
  %728 = load i32, ptr %6, align 4, !tbaa !39
  %729 = mul nsw i32 %728, %.1814.lcssa
  %730 = load i32, ptr %538, align 4, !tbaa !87
  %731 = add nsw i32 %730, %729
  store i32 %731, ptr %538, align 4, !tbaa !87
  %732 = icmp sgt i32 %.1814.lcssa, 0
  br i1 %732, label %.lr.ph1076.preheader, label %._crit_edge1077

.lr.ph1076.preheader:                             ; preds = %.critedge16
  %733 = zext nneg i32 %713 to i64
  %wide.trip.count1209 = zext nneg i32 %.1814.lcssa to i64
  br label %.lr.ph1076

.lr.ph1076:                                       ; preds = %.lr.ph1076.preheader, %754
  %indvars.iv1206 = phi i64 [ 0, %.lr.ph1076.preheader ], [ %indvars.iv.next1207, %754 ]
  %.98041074 = phi i32 [ 0, %.lr.ph1076.preheader ], [ %.10805, %754 ]
  %734 = load ptr, ptr %0, align 8, !tbaa !60
  %735 = getelementptr inbounds ptr, ptr %734, i64 %indvars.iv1206
  %736 = load ptr, ptr %735, align 8, !tbaa !20
  %737 = getelementptr inbounds i8, ptr %736, i64 44
  %738 = load i32, ptr %737, align 4, !tbaa !79
  %739 = icmp eq i32 %738, -2147483647
  %spec.select925 = select i1 %739, i32 %723, i32 %738
  %740 = icmp eq i32 %.98041074, 0
  br i1 %740, label %741, label %744

741:                                              ; preds = %.lr.ph1076
  %742 = trunc nuw nsw i64 %indvars.iv1206 to i32
  %743 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.232, i32 noundef %742) #10
  br label %744

744:                                              ; preds = %741, %.lr.ph1076
  %745 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.233, i32 noundef %spec.select925) #10
  %746 = icmp eq i32 %.98041074, 9
  %747 = icmp eq i64 %indvars.iv1206, %733
  %or.cond926 = or i1 %746, %747
  br i1 %or.cond926, label %748, label %752

748:                                              ; preds = %744
  %749 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.15) #10
  %750 = load i32, ptr %5, align 4, !tbaa !39
  %751 = add nsw i32 %750, 1
  store i32 %751, ptr %5, align 4, !tbaa !39
  br label %754

752:                                              ; preds = %744
  %753 = add nsw i32 %.98041074, 1
  br label %754

754:                                              ; preds = %752, %748
  %.10805 = phi i32 [ 0, %748 ], [ %753, %752 ]
  %indvars.iv.next1207 = add nuw nsw i64 %indvars.iv1206, 1
  %exitcond1210.not = icmp eq i64 %indvars.iv.next1207, %wide.trip.count1209
  br i1 %exitcond1210.not, label %._crit_edge1077, label %.lr.ph1076, !llvm.loop !101

._crit_edge1077:                                  ; preds = %754, %.critedge16
  %755 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.234) #10
  %756 = load i32, ptr %5, align 4, !tbaa !39
  %757 = add nsw i32 %756, 1
  store i32 %757, ptr %5, align 4, !tbaa !39
  %758 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.244) #10
  %759 = load i32, ptr %5, align 4, !tbaa !39
  %760 = add nsw i32 %759, 1
  store i32 %760, ptr %5, align 4, !tbaa !39
  %761 = load i32, ptr %367, align 4, !tbaa !59
  %762 = load i32, ptr %7, align 4, !tbaa !39
  %763 = mul nsw i32 %762, %761
  %764 = load i32, ptr %538, align 4, !tbaa !87
  %765 = add nsw i32 %764, %763
  store i32 %765, ptr %538, align 4, !tbaa !87
  %766 = icmp sgt i32 %761, 0
  br i1 %766, label %.lr.ph1081, label %._crit_edge1082

.lr.ph1081:                                       ; preds = %._crit_edge1077
  %767 = add nsw i32 %761, -1
  %768 = zext nneg i32 %767 to i64
  %wide.trip.count1214 = zext nneg i32 %761 to i64
  br label %769

769:                                              ; preds = %.lr.ph1081, %796
  %indvars.iv1211 = phi i64 [ 0, %.lr.ph1081 ], [ %indvars.iv.next1212, %796 ]
  %.118061078 = phi i32 [ 0, %.lr.ph1081 ], [ %.12807, %796 ]
  %770 = load ptr, ptr %0, align 8, !tbaa !60
  %771 = getelementptr inbounds ptr, ptr %770, i64 %indvars.iv1211
  %772 = load ptr, ptr %771, align 8, !tbaa !20
  %773 = icmp eq i32 %.118061078, 0
  br i1 %773, label %774, label %777

774:                                              ; preds = %769
  %775 = trunc nuw nsw i64 %indvars.iv1211 to i32
  %776 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.232, i32 noundef %775) #10
  br label %777

777:                                              ; preds = %774, %769
  %778 = getelementptr inbounds i8, ptr %772, i64 48
  %779 = load i32, ptr %778, align 8, !tbaa !102
  %780 = icmp slt i32 %779, 0
  br i1 %780, label %781, label %783

781:                                              ; preds = %777
  %782 = load i32, ptr %15, align 4, !tbaa !13
  br label %786

783:                                              ; preds = %777
  %784 = load i32, ptr %21, align 8, !tbaa !16
  %785 = add nsw i32 %784, %779
  br label %786

786:                                              ; preds = %783, %781
  %.sink = phi i32 [ %785, %783 ], [ %782, %781 ]
  %787 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.233, i32 noundef %.sink) #10
  %788 = icmp eq i32 %.118061078, 9
  %789 = icmp eq i64 %indvars.iv1211, %768
  %or.cond928 = select i1 %788, i1 true, i1 %789
  br i1 %or.cond928, label %790, label %794

790:                                              ; preds = %786
  %791 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.15) #10
  %792 = load i32, ptr %5, align 4, !tbaa !39
  %793 = add nsw i32 %792, 1
  store i32 %793, ptr %5, align 4, !tbaa !39
  br label %796

794:                                              ; preds = %786
  %795 = add nsw i32 %.118061078, 1
  br label %796

796:                                              ; preds = %790, %794
  %.12807 = phi i32 [ 0, %790 ], [ %795, %794 ]
  %indvars.iv.next1212 = add nuw nsw i64 %indvars.iv1211, 1
  %exitcond1215.not = icmp eq i64 %indvars.iv.next1212, %wide.trip.count1214
  br i1 %exitcond1215.not, label %._crit_edge1082, label %769, !llvm.loop !103

._crit_edge1082:                                  ; preds = %796, %._crit_edge1077
  %797 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.234) #10
  %798 = load i32, ptr %5, align 4, !tbaa !39
  %799 = add nsw i32 %798, 1
  store i32 %799, ptr %5, align 4, !tbaa !39
  %800 = load ptr, ptr %121, align 8, !tbaa !40
  call void @tplt_xfer(ptr noundef %800, ptr noundef nonnull %24, ptr noundef %27, ptr noundef nonnull %5)
  %801 = load i32, ptr %360, align 4, !tbaa !58
  %.not884 = icmp eq i32 %801, 0
  br i1 %.not884, label %.loopexit, label %802

802:                                              ; preds = %._crit_edge1082
  %803 = load i32, ptr %405, align 4, !tbaa !23
  %804 = load i32, ptr %8, align 4, !tbaa !39
  %805 = mul nsw i32 %804, %803
  %806 = load i32, ptr %538, align 4, !tbaa !87
  %807 = add nsw i32 %806, %805
  store i32 %807, ptr %538, align 4, !tbaa !87
  %.not885.not1083 = icmp sgt i32 %803, 0
  br i1 %.not885.not1083, label %.lr.ph1086, label %.loopexit

.lr.ph1086:                                       ; preds = %802
  %808 = getelementptr inbounds i8, ptr %0, i64 72
  %wide.trip.count1219 = zext nneg i32 %803 to i64
  br label %809

809:                                              ; preds = %.lr.ph1086, %825
  %indvars.iv1216 = phi i64 [ 0, %.lr.ph1086 ], [ %indvars.iv.next1217, %825 ]
  %810 = load ptr, ptr %808, align 8, !tbaa !19
  %811 = getelementptr inbounds ptr, ptr %810, i64 %indvars.iv1216
  %812 = load ptr, ptr %811, align 8, !tbaa !20
  %813 = getelementptr inbounds i8, ptr %812, i64 24
  %814 = load ptr, ptr %813, align 8, !tbaa !24
  %815 = icmp eq ptr %814, null
  br i1 %815, label %816, label %819

816:                                              ; preds = %809
  %817 = load ptr, ptr %812, align 8, !tbaa !21
  %818 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.245, ptr noundef %817) #10
  br label %825

819:                                              ; preds = %809
  %820 = getelementptr inbounds i8, ptr %814, i64 8
  %821 = load i32, ptr %820, align 8, !tbaa !25
  %822 = load ptr, ptr %812, align 8, !tbaa !21
  %823 = load ptr, ptr %814, align 8, !tbaa !21
  %824 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.246, i32 noundef %821, ptr noundef %822, ptr noundef %823) #10
  br label %825

825:                                              ; preds = %819, %816
  %826 = load i32, ptr %5, align 4, !tbaa !39
  %827 = add nsw i32 %826, 1
  store i32 %827, ptr %5, align 4, !tbaa !39
  %indvars.iv.next1217 = add nuw nsw i64 %indvars.iv1216, 1
  %exitcond1220.not = icmp eq i64 %indvars.iv.next1217, %wide.trip.count1219
  br i1 %exitcond1220.not, label %.loopexit, label %809, !llvm.loop !104

.loopexit:                                        ; preds = %825, %802, %._crit_edge1082
  %828 = load ptr, ptr %121, align 8, !tbaa !40
  call void @tplt_xfer(ptr noundef %828, ptr noundef nonnull %24, ptr noundef %27, ptr noundef nonnull %5)
  %829 = load i32, ptr %158, align 8, !tbaa !18
  %830 = icmp sgt i32 %829, 0
  br i1 %830, label %.lr.ph1089, label %._crit_edge1090

.lr.ph1089:                                       ; preds = %.loopexit
  %831 = getelementptr inbounds i8, ptr %0, i64 72
  br label %832

832:                                              ; preds = %.lr.ph1089, %832
  %indvars.iv1221 = phi i64 [ 0, %.lr.ph1089 ], [ %indvars.iv.next1222, %832 ]
  %833 = load ptr, ptr %831, align 8, !tbaa !19
  %834 = getelementptr inbounds ptr, ptr %833, i64 %indvars.iv1221
  %835 = load ptr, ptr %834, align 8, !tbaa !20
  %836 = load ptr, ptr %835, align 8, !tbaa !21
  %837 = call i32 (ptr, ptr, ...) @lemon_sprintf(ptr noundef nonnull %4, ptr noundef nonnull @.str.247, ptr noundef %836)
  %838 = load ptr, ptr %831, align 8, !tbaa !19
  %839 = getelementptr inbounds ptr, ptr %838, i64 %indvars.iv1221
  %840 = load ptr, ptr %839, align 8, !tbaa !20
  %841 = load ptr, ptr %840, align 8, !tbaa !21
  %842 = trunc nuw nsw i64 %indvars.iv1221 to i32
  %843 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.248, i32 noundef %842, ptr noundef %841) #10
  %844 = load i32, ptr %5, align 4, !tbaa !39
  %845 = add nsw i32 %844, 1
  store i32 %845, ptr %5, align 4, !tbaa !39
  %indvars.iv.next1222 = add nuw nsw i64 %indvars.iv1221, 1
  %846 = load i32, ptr %158, align 8, !tbaa !18
  %847 = sext i32 %846 to i64
  %848 = icmp slt i64 %indvars.iv.next1222, %847
  br i1 %848, label %832, label %._crit_edge1090, !llvm.loop !105

._crit_edge1090:                                  ; preds = %832, %.loopexit
  %849 = load ptr, ptr %121, align 8, !tbaa !40
  call void @tplt_xfer(ptr noundef %849, ptr noundef nonnull %24, ptr noundef %27, ptr noundef nonnull %5)
  %.27831091 = load ptr, ptr %462, align 8, !tbaa !20
  %.not8861092 = icmp eq ptr %.27831091, null
  br i1 %.not8861092, label %._crit_edge1097, label %.lr.ph1096

.lr.ph1096:                                       ; preds = %._crit_edge1090, %854
  %.27831094 = phi ptr [ %.2783, %854 ], [ %.27831091, %._crit_edge1090 ]
  %.191093 = phi i32 [ %860, %854 ], [ 0, %._crit_edge1090 ]
  %850 = getelementptr inbounds i8, ptr %.27831094, i64 92
  %851 = load i32, ptr %850, align 4, !tbaa !28
  %852 = icmp eq i32 %851, %.191093
  br i1 %852, label %854, label %853

853:                                              ; preds = %.lr.ph1096
  call void @__assert_fail(ptr noundef nonnull @.str.249, ptr noundef nonnull @.str.3, i32 noundef 4625, ptr noundef nonnull @__PRETTY_FUNCTION__.ReportTable) #11
  unreachable

854:                                              ; preds = %.lr.ph1096
  %855 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.250, i32 noundef %.191093) #10
  call void @writeRuleText(ptr noundef %27, ptr noundef nonnull %.27831094)
  %856 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.251) #10
  %857 = load i32, ptr %5, align 4, !tbaa !39
  %858 = add nsw i32 %857, 1
  store i32 %858, ptr %5, align 4, !tbaa !39
  %859 = getelementptr inbounds i8, ptr %.27831094, i64 128
  %860 = add nuw nsw i32 %.191093, 1
  %.2783 = load ptr, ptr %859, align 8, !tbaa !20
  %.not886 = icmp eq ptr %.2783, null
  br i1 %.not886, label %._crit_edge1097, label %.lr.ph1096, !llvm.loop !106

._crit_edge1097:                                  ; preds = %854, %._crit_edge1090
  %861 = load ptr, ptr %121, align 8, !tbaa !40
  call void @tplt_xfer(ptr noundef %861, ptr noundef nonnull %24, ptr noundef %27, ptr noundef nonnull %5)
  %862 = getelementptr inbounds i8, ptr %0, i64 208
  %863 = load ptr, ptr %862, align 8, !tbaa !107
  %.not887 = icmp ne ptr %863, null
  %.pre1247.pre1250 = load i32, ptr %158, align 8, !tbaa !18
  %864 = icmp sgt i32 %.pre1247.pre1250, 0
  %or.cond1268 = select i1 %.not887, i1 %864, i1 false
  br i1 %or.cond1268, label %.lr.ph1100, label %.critedge18

.lr.ph1100:                                       ; preds = %._crit_edge1097
  %865 = getelementptr inbounds i8, ptr %0, i64 72
  br label %869

.preheader932:                                    ; preds = %890
  %866 = icmp sgt i32 %891, 0
  br i1 %866, label %.lr.ph1103, label %.critedge18

.lr.ph1103:                                       ; preds = %.preheader932
  %867 = getelementptr inbounds i8, ptr %0, i64 72
  %868 = load ptr, ptr %867, align 8, !tbaa !19
  %wide.trip.count1230 = zext nneg i32 %891 to i64
  br label %894

869:                                              ; preds = %.lr.ph1100, %890
  %870 = phi i32 [ %.pre1247.pre1250, %.lr.ph1100 ], [ %891, %890 ]
  %indvars.iv1224 = phi i64 [ 0, %.lr.ph1100 ], [ %indvars.iv.next1225, %890 ]
  %.07841099 = phi i32 [ 1, %.lr.ph1100 ], [ %.2786, %890 ]
  %871 = load ptr, ptr %865, align 8, !tbaa !19
  %872 = getelementptr inbounds ptr, ptr %871, i64 %indvars.iv1224
  %873 = load ptr, ptr %872, align 8, !tbaa !20
  %874 = icmp eq ptr %873, null
  br i1 %874, label %890, label %875

875:                                              ; preds = %869
  %876 = getelementptr inbounds i8, ptr %873, i64 12
  %877 = load i32, ptr %876, align 4, !tbaa !33
  %.not910 = icmp eq i32 %877, 0
  br i1 %.not910, label %878, label %890

878:                                              ; preds = %875
  %.not911 = icmp eq i32 %.07841099, 0
  br i1 %.not911, label %883, label %879

879:                                              ; preds = %878
  %880 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.252) #10
  %881 = load i32, ptr %5, align 4, !tbaa !39
  %882 = add nsw i32 %881, 1
  store i32 %882, ptr %5, align 4, !tbaa !39
  br label %883

883:                                              ; preds = %879, %878
  %884 = getelementptr inbounds i8, ptr %873, i64 8
  %885 = load i32, ptr %884, align 8, !tbaa !25
  %886 = load ptr, ptr %873, align 8, !tbaa !21
  %887 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.253, i32 noundef %885, ptr noundef %886) #10
  %888 = load i32, ptr %5, align 4, !tbaa !39
  %889 = add nsw i32 %888, 1
  store i32 %889, ptr %5, align 4, !tbaa !39
  %.pre = load i32, ptr %158, align 8, !tbaa !18
  br label %890

890:                                              ; preds = %869, %875, %883
  %891 = phi i32 [ %.pre, %883 ], [ %870, %875 ], [ %870, %869 ]
  %.2786 = phi i32 [ 0, %883 ], [ %.07841099, %875 ], [ %.07841099, %869 ]
  %indvars.iv.next1225 = add nuw nsw i64 %indvars.iv1224, 1
  %892 = sext i32 %891 to i64
  %893 = icmp slt i64 %indvars.iv.next1225, %892
  br i1 %893, label %869, label %.preheader932, !llvm.loop !108

894:                                              ; preds = %.lr.ph1103, %899
  %indvars.iv1227 = phi i64 [ 0, %.lr.ph1103 ], [ %indvars.iv.next1228, %899 ]
  %895 = getelementptr inbounds ptr, ptr %868, i64 %indvars.iv1227
  %896 = load ptr, ptr %895, align 8, !tbaa !20
  %897 = getelementptr inbounds i8, ptr %896, i64 12
  %898 = load i32, ptr %897, align 4, !tbaa !33
  %.not888 = icmp eq i32 %898, 0
  br i1 %.not888, label %900, label %899

899:                                              ; preds = %894
  %indvars.iv.next1228 = add nuw nsw i64 %indvars.iv1227, 1
  %exitcond1231.not = icmp eq i64 %indvars.iv.next1228, %wide.trip.count1230
  br i1 %exitcond1231.not, label %.critedge18, label %894, !llvm.loop !109

900:                                              ; preds = %894
  %901 = and i64 %indvars.iv1227, 4294967295
  %902 = getelementptr inbounds ptr, ptr %868, i64 %901
  %903 = load ptr, ptr %902, align 8, !tbaa !20
  call void @emit_destructor_code(ptr noundef %27, ptr noundef %903, ptr noundef nonnull %0, ptr noundef nonnull %5)
  %904 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.254) #10
  %905 = load i32, ptr %5, align 4, !tbaa !39
  %906 = add nsw i32 %905, 1
  store i32 %906, ptr %5, align 4, !tbaa !39
  %.pre1247.pre = load i32, ptr %158, align 8, !tbaa !18
  br label %.critedge18

.critedge18:                                      ; preds = %899, %.preheader932, %900, %._crit_edge1097
  %.pre1247 = phi i32 [ %891, %.preheader932 ], [ %.pre1247.pre, %900 ], [ %.pre1247.pre1250, %._crit_edge1097 ], [ %891, %899 ]
  %907 = getelementptr inbounds i8, ptr %0, i64 216
  %908 = load ptr, ptr %907, align 8, !tbaa !110
  %.not889 = icmp eq ptr %908, null
  br i1 %.not889, label %947, label %.preheader

.preheader:                                       ; preds = %.critedge18
  %909 = icmp sgt i32 %.pre1247, 0
  br i1 %909, label %.lr.ph1107, label %._crit_edge1108.thread

.lr.ph1107:                                       ; preds = %.preheader
  %910 = getelementptr inbounds i8, ptr %0, i64 72
  br label %911

911:                                              ; preds = %.lr.ph1107, %939
  %912 = phi i32 [ %.pre1247, %.lr.ph1107 ], [ %940, %939 ]
  %indvars.iv1232 = phi i64 [ 0, %.lr.ph1107 ], [ %indvars.iv.next1233, %939 ]
  %.07761106 = phi i32 [ 1, %.lr.ph1107 ], [ %.2778, %939 ]
  %.07791105 = phi ptr [ null, %.lr.ph1107 ], [ %.1780, %939 ]
  %913 = load ptr, ptr %910, align 8, !tbaa !19
  %914 = getelementptr inbounds ptr, ptr %913, i64 %indvars.iv1232
  %915 = load ptr, ptr %914, align 8, !tbaa !20
  %916 = icmp eq ptr %915, null
  br i1 %916, label %939, label %917

917:                                              ; preds = %911
  %918 = getelementptr inbounds i8, ptr %915, i64 12
  %919 = load i32, ptr %918, align 4, !tbaa !33
  %920 = icmp eq i32 %919, 0
  br i1 %920, label %939, label %921

921:                                              ; preds = %917
  %922 = getelementptr inbounds i8, ptr %915, i64 8
  %923 = load i32, ptr %922, align 8, !tbaa !25
  %924 = icmp slt i32 %923, 1
  br i1 %924, label %939, label %925

925:                                              ; preds = %921
  %926 = getelementptr inbounds i8, ptr %915, i64 56
  %927 = load ptr, ptr %926, align 8, !tbaa !111
  %.not908 = icmp eq ptr %927, null
  br i1 %.not908, label %928, label %939

928:                                              ; preds = %925
  %.not909 = icmp eq i32 %.07761106, 0
  br i1 %.not909, label %933, label %929

929:                                              ; preds = %928
  %930 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.255) #10
  %931 = load i32, ptr %5, align 4, !tbaa !39
  %932 = add nsw i32 %931, 1
  store i32 %932, ptr %5, align 4, !tbaa !39
  %.pre1244 = load i32, ptr %922, align 8, !tbaa !25
  br label %933

933:                                              ; preds = %929, %928
  %934 = phi i32 [ %.pre1244, %929 ], [ %923, %928 ]
  %935 = load ptr, ptr %915, align 8, !tbaa !21
  %936 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.253, i32 noundef %934, ptr noundef %935) #10
  %937 = load i32, ptr %5, align 4, !tbaa !39
  %938 = add nsw i32 %937, 1
  store i32 %938, ptr %5, align 4, !tbaa !39
  %.pre1245 = load i32, ptr %158, align 8, !tbaa !18
  br label %939

939:                                              ; preds = %911, %917, %921, %925, %933
  %940 = phi i32 [ %.pre1245, %933 ], [ %912, %925 ], [ %912, %921 ], [ %912, %917 ], [ %912, %911 ]
  %.1780 = phi ptr [ %915, %933 ], [ %.07791105, %925 ], [ %.07791105, %921 ], [ %.07791105, %917 ], [ %.07791105, %911 ]
  %.2778 = phi i32 [ 0, %933 ], [ %.07761106, %925 ], [ %.07761106, %921 ], [ %.07761106, %917 ], [ %.07761106, %911 ]
  %indvars.iv.next1233 = add nuw nsw i64 %indvars.iv1232, 1
  %941 = sext i32 %940 to i64
  %942 = icmp slt i64 %indvars.iv.next1233, %941
  br i1 %942, label %911, label %._crit_edge1108, !llvm.loop !112

._crit_edge1108:                                  ; preds = %939
  %.not890 = icmp eq ptr %.1780, null
  br i1 %.not890, label %._crit_edge1108.thread, label %943

943:                                              ; preds = %._crit_edge1108
  call void @emit_destructor_code(ptr noundef %27, ptr noundef nonnull %.1780, ptr noundef nonnull %0, ptr noundef nonnull %5)
  br label %._crit_edge1108.thread

._crit_edge1108.thread:                           ; preds = %.preheader, %943, %._crit_edge1108
  %944 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.254) #10
  %945 = load i32, ptr %5, align 4, !tbaa !39
  %946 = add nsw i32 %945, 1
  store i32 %946, ptr %5, align 4, !tbaa !39
  %.pre1246 = load i32, ptr %158, align 8, !tbaa !18
  br label %947

947:                                              ; preds = %._crit_edge1108.thread, %.critedge18
  %948 = phi i32 [ %.pre1246, %._crit_edge1108.thread ], [ %.pre1247, %.critedge18 ]
  %949 = icmp sgt i32 %948, 0
  br i1 %949, label %.lr.ph1117, label %._crit_edge1118

.lr.ph1117:                                       ; preds = %947
  %950 = getelementptr inbounds i8, ptr %0, i64 72
  br label %951

951:                                              ; preds = %.lr.ph1117, %1019
  %952 = phi i32 [ %948, %.lr.ph1117 ], [ %1020, %1019 ]
  %indvars.iv1240 = phi i64 [ 0, %.lr.ph1117 ], [ %indvars.iv.next1241, %1019 ]
  %indvars.iv1235 = phi i64 [ 1, %.lr.ph1117 ], [ %indvars.iv.next1236, %1019 ]
  %953 = load ptr, ptr %950, align 8, !tbaa !19
  %954 = getelementptr inbounds ptr, ptr %953, i64 %indvars.iv1240
  %955 = load ptr, ptr %954, align 8, !tbaa !20
  %956 = icmp eq ptr %955, null
  br i1 %956, label %1019, label %957

957:                                              ; preds = %951
  %958 = getelementptr inbounds i8, ptr %955, i64 12
  %959 = load i32, ptr %958, align 4, !tbaa !33
  %960 = icmp eq i32 %959, 0
  br i1 %960, label %1019, label %961

961:                                              ; preds = %957
  %962 = getelementptr inbounds i8, ptr %955, i64 56
  %963 = load ptr, ptr %962, align 8, !tbaa !111
  %964 = icmp eq ptr %963, null
  br i1 %964, label %1019, label %965

965:                                              ; preds = %961
  %966 = getelementptr inbounds i8, ptr %955, i64 64
  %967 = load i32, ptr %966, align 8, !tbaa !113
  %968 = icmp slt i32 %967, 0
  br i1 %968, label %1019, label %969

969:                                              ; preds = %965
  %970 = getelementptr inbounds i8, ptr %955, i64 8
  %971 = load i32, ptr %970, align 8, !tbaa !25
  %972 = load ptr, ptr %955, align 8, !tbaa !21
  %973 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.253, i32 noundef %971, ptr noundef %972) #10
  %974 = load i32, ptr %5, align 4, !tbaa !39
  %975 = add nsw i32 %974, 1
  store i32 %975, ptr %5, align 4, !tbaa !39
  %976 = add nuw nsw i64 %indvars.iv1240, 1
  %977 = load i32, ptr %158, align 8, !tbaa !18
  %978 = sext i32 %977 to i64
  %979 = icmp slt i64 %976, %978
  br i1 %979, label %.lr.ph1113, label %._crit_edge1114

.lr.ph1113:                                       ; preds = %969
  %980 = getelementptr inbounds i8, ptr %955, i64 80
  br label %981

981:                                              ; preds = %.lr.ph1113, %1009
  %982 = phi i32 [ %977, %.lr.ph1113 ], [ %1010, %1009 ]
  %indvars.iv1237 = phi i64 [ %indvars.iv1235, %.lr.ph1113 ], [ %indvars.iv.next1238, %1009 ]
  %983 = load ptr, ptr %950, align 8, !tbaa !19
  %984 = getelementptr inbounds ptr, ptr %983, i64 %indvars.iv1237
  %985 = load ptr, ptr %984, align 8, !tbaa !20
  %.not905 = icmp eq ptr %985, null
  br i1 %.not905, label %1009, label %986

986:                                              ; preds = %981
  %987 = getelementptr inbounds i8, ptr %985, i64 12
  %988 = load i32, ptr %987, align 4, !tbaa !33
  %.not906 = icmp eq i32 %988, 0
  br i1 %.not906, label %1009, label %989

989:                                              ; preds = %986
  %990 = getelementptr inbounds i8, ptr %985, i64 56
  %991 = load ptr, ptr %990, align 8, !tbaa !111
  %.not907 = icmp eq ptr %991, null
  br i1 %.not907, label %1009, label %992

992:                                              ; preds = %989
  %993 = getelementptr inbounds i8, ptr %985, i64 80
  %994 = load i32, ptr %993, align 8, !tbaa !57
  %995 = load i32, ptr %980, align 8, !tbaa !57
  %996 = icmp eq i32 %994, %995
  br i1 %996, label %997, label %1009

997:                                              ; preds = %992
  %998 = load ptr, ptr %962, align 8, !tbaa !111
  %999 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %998, ptr noundef nonnull dereferenceable(1) %991) #12
  %1000 = icmp eq i32 %999, 0
  br i1 %1000, label %1001, label %1009

1001:                                             ; preds = %997
  %1002 = getelementptr inbounds i8, ptr %985, i64 8
  %1003 = load i32, ptr %1002, align 8, !tbaa !25
  %1004 = load ptr, ptr %985, align 8, !tbaa !21
  %1005 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.253, i32 noundef %1003, ptr noundef %1004) #10
  %1006 = load i32, ptr %5, align 4, !tbaa !39
  %1007 = add nsw i32 %1006, 1
  store i32 %1007, ptr %5, align 4, !tbaa !39
  %1008 = getelementptr inbounds i8, ptr %985, i64 64
  store i32 -1, ptr %1008, align 8, !tbaa !113
  %.pre1248 = load i32, ptr %158, align 8, !tbaa !18
  br label %1009

1009:                                             ; preds = %1001, %997, %992, %989, %986, %981
  %1010 = phi i32 [ %.pre1248, %1001 ], [ %982, %997 ], [ %982, %992 ], [ %982, %989 ], [ %982, %986 ], [ %982, %981 ]
  %indvars.iv.next1238 = add nuw nsw i64 %indvars.iv1237, 1
  %1011 = trunc nuw i64 %indvars.iv.next1238 to i32
  %1012 = icmp sgt i32 %1010, %1011
  br i1 %1012, label %981, label %._crit_edge1114, !llvm.loop !114

._crit_edge1114:                                  ; preds = %1009, %969
  %1013 = load ptr, ptr %950, align 8, !tbaa !19
  %1014 = getelementptr inbounds ptr, ptr %1013, i64 %indvars.iv1240
  %1015 = load ptr, ptr %1014, align 8, !tbaa !20
  call void @emit_destructor_code(ptr noundef %27, ptr noundef %1015, ptr noundef nonnull %0, ptr noundef nonnull %5)
  %1016 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.254) #10
  %1017 = load i32, ptr %5, align 4, !tbaa !39
  %1018 = add nsw i32 %1017, 1
  store i32 %1018, ptr %5, align 4, !tbaa !39
  %.pre1249 = load i32, ptr %158, align 8, !tbaa !18
  br label %1019

1019:                                             ; preds = %965, %951, %957, %961, %._crit_edge1114
  %1020 = phi i32 [ %952, %965 ], [ %952, %951 ], [ %952, %957 ], [ %952, %961 ], [ %.pre1249, %._crit_edge1114 ]
  %indvars.iv.next1241 = add nuw nsw i64 %indvars.iv1240, 1
  %1021 = sext i32 %1020 to i64
  %1022 = icmp slt i64 %indvars.iv.next1241, %1021
  %indvars.iv.next1236 = add nuw nsw i64 %indvars.iv1235, 1
  br i1 %1022, label %951, label %._crit_edge1118, !llvm.loop !115

._crit_edge1118:                                  ; preds = %1019, %947
  %1023 = load ptr, ptr %121, align 8, !tbaa !40
  call void @tplt_xfer(ptr noundef %1023, ptr noundef nonnull %24, ptr noundef %27, ptr noundef nonnull %5)
  %1024 = getelementptr inbounds i8, ptr %0, i64 176
  %1025 = load ptr, ptr %1024, align 8, !tbaa !116
  call void @tplt_print(ptr noundef %27, ptr noundef nonnull %0, ptr noundef %1025, ptr noundef nonnull %5)
  %1026 = load ptr, ptr %121, align 8, !tbaa !40
  call void @tplt_xfer(ptr noundef %1026, ptr noundef nonnull %24, ptr noundef %27, ptr noundef nonnull %5)
  %.31119 = load ptr, ptr %462, align 8, !tbaa !20
  %.not8911120 = icmp eq ptr %.31119, null
  br i1 %.not8911120, label %._crit_edge1125, label %.lr.ph1124

.lr.ph1124:                                       ; preds = %._crit_edge1118, %.lr.ph1124
  %.31122 = phi ptr [ %.3, %.lr.ph1124 ], [ %.31119, %._crit_edge1118 ]
  %.241121 = phi i32 [ %1035, %.lr.ph1124 ], [ 0, %._crit_edge1118 ]
  %1027 = load ptr, ptr %.31122, align 8, !tbaa !30
  %1028 = getelementptr inbounds i8, ptr %1027, i64 8
  %1029 = load i32, ptr %1028, align 8, !tbaa !25
  %1030 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.256, i32 noundef %1029, i32 noundef %.241121) #10
  call void @rule_print(ptr noundef %27, ptr noundef nonnull %.31122)
  %1031 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.257) #10
  %1032 = load i32, ptr %5, align 4, !tbaa !39
  %1033 = add nsw i32 %1032, 1
  store i32 %1033, ptr %5, align 4, !tbaa !39
  %1034 = getelementptr inbounds i8, ptr %.31122, i64 128
  %1035 = add nuw nsw i32 %.241121, 1
  %.3 = load ptr, ptr %1034, align 8, !tbaa !20
  %.not891 = icmp eq ptr %.3, null
  br i1 %.not891, label %._crit_edge1125, label %.lr.ph1124, !llvm.loop !117

._crit_edge1125:                                  ; preds = %.lr.ph1124, %._crit_edge1118
  %1036 = load ptr, ptr %121, align 8, !tbaa !40
  call void @tplt_xfer(ptr noundef %1036, ptr noundef nonnull %24, ptr noundef %27, ptr noundef nonnull %5)
  %.41126 = load ptr, ptr %462, align 8, !tbaa !20
  %.not8921127 = icmp eq ptr %.41126, null
  br i1 %.not8921127, label %._crit_edge1132, label %.lr.ph1131

.lr.ph1131:                                       ; preds = %._crit_edge1125, %.lr.ph1131
  %.41129 = phi ptr [ %.4, %.lr.ph1131 ], [ %.41126, %._crit_edge1125 ]
  %.251128 = phi i32 [ %1045, %.lr.ph1131 ], [ 0, %._crit_edge1125 ]
  %1037 = getelementptr inbounds i8, ptr %.41129, i64 24
  %1038 = load i32, ptr %1037, align 8, !tbaa !31
  %1039 = sub nsw i32 0, %1038
  %1040 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.258, i32 noundef %1039, i32 noundef %.251128) #10
  call void @rule_print(ptr noundef %27, ptr noundef nonnull %.41129)
  %1041 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.257) #10
  %1042 = load i32, ptr %5, align 4, !tbaa !39
  %1043 = add nsw i32 %1042, 1
  store i32 %1043, ptr %5, align 4, !tbaa !39
  %1044 = getelementptr inbounds i8, ptr %.41129, i64 128
  %1045 = add nuw nsw i32 %.251128, 1
  %.4 = load ptr, ptr %1044, align 8, !tbaa !20
  %.not892 = icmp eq ptr %.4, null
  br i1 %.not892, label %._crit_edge1132, label %.lr.ph1131, !llvm.loop !118

._crit_edge1132:                                  ; preds = %.lr.ph1131, %._crit_edge1125
  %1046 = load ptr, ptr %121, align 8, !tbaa !40
  call void @tplt_xfer(ptr noundef %1046, ptr noundef nonnull %24, ptr noundef %27, ptr noundef nonnull %5)
  %.51133 = load ptr, ptr %462, align 8, !tbaa !20
  %.not8931134 = icmp eq ptr %.51133, null
  br i1 %.not8931134, label %._crit_edge1153, label %.lr.ph1138

.lr.ph1138:                                       ; preds = %._crit_edge1132, %.lr.ph1138
  %.51136 = phi ptr [ %.5, %.lr.ph1138 ], [ %.51133, %._crit_edge1132 ]
  %.261135 = phi i32 [ %1048, %.lr.ph1138 ], [ 0, %._crit_edge1132 ]
  %1047 = call i32 @translate_code(ptr noundef %0, ptr noundef nonnull %.51136)
  %1048 = add nsw i32 %1047, %.261135
  %1049 = getelementptr inbounds i8, ptr %.51136, i64 128
  %.5 = load ptr, ptr %1049, align 8, !tbaa !20
  %.not893 = icmp eq ptr %.5, null
  br i1 %.not893, label %._crit_edge1139, label %.lr.ph1138, !llvm.loop !119

._crit_edge1139:                                  ; preds = %.lr.ph1138
  %.not894 = icmp eq i32 %1048, 0
  br i1 %.not894, label %1054, label %1050

1050:                                             ; preds = %._crit_edge1139
  %1051 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.259) #10
  %1052 = load i32, ptr %5, align 4, !tbaa !39
  %1053 = add nsw i32 %1052, 1
  store i32 %1053, ptr %5, align 4, !tbaa !39
  br label %1054

1054:                                             ; preds = %1050, %._crit_edge1139
  %.61148.pr = load ptr, ptr %462, align 8, !tbaa !20
  %.not8951149 = icmp eq ptr %.61148.pr, null
  br i1 %.not8951149, label %._crit_edge1153, label %.lr.ph1152

.lr.ph1152:                                       ; preds = %1054, %1098
  %.61150 = phi ptr [ %.6, %1098 ], [ %.61148.pr, %1054 ]
  %1055 = getelementptr inbounds i8, ptr %.61150, i64 100
  %1056 = load i32, ptr %1055, align 4, !tbaa !120
  %.not902 = icmp eq i32 %1056, 0
  br i1 %.not902, label %1057, label %1098

1057:                                             ; preds = %.lr.ph1152
  %1058 = getelementptr inbounds i8, ptr %.61150, i64 96
  %1059 = load i32, ptr %1058, align 8, !tbaa !121
  %.not903 = icmp eq i32 %1059, 0
  br i1 %.not903, label %1060, label %1098

1060:                                             ; preds = %1057
  %1061 = getelementptr inbounds i8, ptr %.61150, i64 92
  %1062 = load i32, ptr %1061, align 4, !tbaa !28
  %1063 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.260, i32 noundef %1062) #10
  call void @writeRuleText(ptr noundef %27, ptr noundef nonnull %.61150)
  %1064 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.257) #10
  %1065 = load i32, ptr %5, align 4, !tbaa !39
  %1066 = add nsw i32 %1065, 1
  store i32 %1066, ptr %5, align 4, !tbaa !39
  %.0.in1141 = getelementptr inbounds i8, ptr %.61150, i64 128
  %.01142 = load ptr, ptr %.0.in1141, align 8, !tbaa !122
  %.not9041143 = icmp eq ptr %.01142, null
  br i1 %.not9041143, label %._crit_edge1147, label %.lr.ph1146

.lr.ph1146:                                       ; preds = %1060
  %1067 = getelementptr inbounds i8, ptr %.61150, i64 56
  %1068 = getelementptr inbounds i8, ptr %.61150, i64 64
  %1069 = getelementptr inbounds i8, ptr %.61150, i64 72
  br label %1070

1070:                                             ; preds = %.lr.ph1146, %1094
  %.01144 = phi ptr [ %.01142, %.lr.ph1146 ], [ %.0, %1094 ]
  %1071 = getelementptr inbounds i8, ptr %.01144, i64 56
  %1072 = load ptr, ptr %1071, align 8, !tbaa !123
  %1073 = load ptr, ptr %1067, align 8, !tbaa !123
  %1074 = icmp eq ptr %1072, %1073
  br i1 %1074, label %1075, label %1094

1075:                                             ; preds = %1070
  %1076 = getelementptr inbounds i8, ptr %.01144, i64 64
  %1077 = load ptr, ptr %1076, align 8, !tbaa !124
  %1078 = load ptr, ptr %1068, align 8, !tbaa !124
  %1079 = icmp eq ptr %1077, %1078
  br i1 %1079, label %1080, label %1094

1080:                                             ; preds = %1075
  %1081 = getelementptr inbounds i8, ptr %.01144, i64 72
  %1082 = load ptr, ptr %1081, align 8, !tbaa !125
  %1083 = load ptr, ptr %1069, align 8, !tbaa !125
  %1084 = icmp eq ptr %1082, %1083
  br i1 %1084, label %1085, label %1094

1085:                                             ; preds = %1080
  %1086 = getelementptr inbounds i8, ptr %.01144, i64 92
  %1087 = load i32, ptr %1086, align 4, !tbaa !28
  %1088 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.260, i32 noundef %1087) #10
  call void @writeRuleText(ptr noundef %27, ptr noundef nonnull %.01144)
  %1089 = load i32, ptr %1086, align 4, !tbaa !28
  %1090 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.261, i32 noundef %1089) #10
  %1091 = load i32, ptr %5, align 4, !tbaa !39
  %1092 = add nsw i32 %1091, 1
  store i32 %1092, ptr %5, align 4, !tbaa !39
  %1093 = getelementptr inbounds i8, ptr %.01144, i64 100
  store i32 1, ptr %1093, align 4, !tbaa !120
  br label %1094

1094:                                             ; preds = %1070, %1075, %1080, %1085
  %.0.in = getelementptr inbounds i8, ptr %.01144, i64 128
  %.0 = load ptr, ptr %.0.in, align 8, !tbaa !122
  %.not904 = icmp eq ptr %.0, null
  br i1 %.not904, label %._crit_edge1147, label %1070, !llvm.loop !126

._crit_edge1147:                                  ; preds = %1094, %1060
  call void @emit_code(ptr noundef %27, ptr noundef nonnull %.61150, ptr noundef %0, ptr noundef nonnull %5)
  %1095 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.262) #10
  %1096 = load i32, ptr %5, align 4, !tbaa !39
  %1097 = add nsw i32 %1096, 1
  store i32 %1097, ptr %5, align 4, !tbaa !39
  store i32 1, ptr %1055, align 4, !tbaa !120
  br label %1098

1098:                                             ; preds = %1057, %.lr.ph1152, %._crit_edge1147
  %1099 = getelementptr inbounds i8, ptr %.61150, i64 128
  %.6 = load ptr, ptr %1099, align 8, !tbaa !20
  %.not895 = icmp eq ptr %.6, null
  br i1 %.not895, label %._crit_edge1153, label %.lr.ph1152, !llvm.loop !127

._crit_edge1153:                                  ; preds = %1098, %._crit_edge1132, %1054
  %1100 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.263) #10
  %1101 = load i32, ptr %5, align 4, !tbaa !39
  %1102 = add nsw i32 %1101, 1
  store i32 %1102, ptr %5, align 4, !tbaa !39
  %.71154 = load ptr, ptr %462, align 8, !tbaa !20
  %.not8961155 = icmp eq ptr %.71154, null
  br i1 %.not8961155, label %._crit_edge1159, label %.lr.ph1158

.lr.ph1158:                                       ; preds = %._crit_edge1153, %1132
  %.71156 = phi ptr [ %.7, %1132 ], [ %.71154, %._crit_edge1153 ]
  %1103 = getelementptr inbounds i8, ptr %.71156, i64 100
  %1104 = load i32, ptr %1103, align 4, !tbaa !120
  %.not898 = icmp eq i32 %1104, 0
  br i1 %.not898, label %1105, label %1132

1105:                                             ; preds = %.lr.ph1158
  %1106 = getelementptr inbounds i8, ptr %.71156, i64 96
  %1107 = load i32, ptr %1106, align 8, !tbaa !121
  %.not899 = icmp eq i32 %1107, 0
  br i1 %.not899, label %1108, label %1109

1108:                                             ; preds = %1105
  call void @__assert_fail(ptr noundef nonnull @.str.264, ptr noundef nonnull @.str.3, i32 noundef 4755, ptr noundef nonnull @__PRETTY_FUNCTION__.ReportTable) #11
  unreachable

1109:                                             ; preds = %1105
  %1110 = getelementptr inbounds i8, ptr %.71156, i64 92
  %1111 = load i32, ptr %1110, align 4, !tbaa !28
  %1112 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.265, i32 noundef %1111) #10
  call void @writeRuleText(ptr noundef %27, ptr noundef nonnull %.71156)
  %1113 = getelementptr inbounds i8, ptr %.71156, i64 112
  %1114 = load i32, ptr %1113, align 8, !tbaa !128
  %.not900 = icmp eq i32 %1114, 0
  br i1 %.not900, label %1120, label %1115

1115:                                             ; preds = %1109
  %1116 = load i32, ptr %1110, align 4, !tbaa !28
  %1117 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.266, i32 noundef %1116) #10
  %1118 = load i32, ptr %5, align 4, !tbaa !39
  %1119 = add nsw i32 %1118, 1
  store i32 %1119, ptr %5, align 4, !tbaa !39
  br label %1132

1120:                                             ; preds = %1109
  %1121 = getelementptr inbounds i8, ptr %.71156, i64 108
  %1122 = load i32, ptr %1121, align 4, !tbaa !80
  %.not901 = icmp eq i32 %1122, 0
  %1123 = load i32, ptr %1110, align 4, !tbaa !28
  br i1 %.not901, label %1128, label %1124

1124:                                             ; preds = %1120
  %1125 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.261, i32 noundef %1123) #10
  %1126 = load i32, ptr %5, align 4, !tbaa !39
  %1127 = add nsw i32 %1126, 1
  store i32 %1127, ptr %5, align 4, !tbaa !39
  br label %1132

1128:                                             ; preds = %1120
  %1129 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.267, i32 noundef %1123) #10
  %1130 = load i32, ptr %5, align 4, !tbaa !39
  %1131 = add nsw i32 %1130, 1
  store i32 %1131, ptr %5, align 4, !tbaa !39
  br label %1132

1132:                                             ; preds = %1115, %1128, %1124, %.lr.ph1158
  %1133 = getelementptr inbounds i8, ptr %.71156, i64 128
  %.7 = load ptr, ptr %1133, align 8, !tbaa !20
  %.not896 = icmp eq ptr %.7, null
  br i1 %.not896, label %._crit_edge1159, label %.lr.ph1158, !llvm.loop !129

._crit_edge1159:                                  ; preds = %1132, %._crit_edge1153
  %1134 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %27, ptr noundef nonnull @.str.262) #10
  %1135 = load i32, ptr %5, align 4, !tbaa !39
  %1136 = add nsw i32 %1135, 1
  store i32 %1136, ptr %5, align 4, !tbaa !39
  %1137 = load ptr, ptr %121, align 8, !tbaa !40
  call void @tplt_xfer(ptr noundef %1137, ptr noundef nonnull %24, ptr noundef %27, ptr noundef nonnull %5)
  %1138 = getelementptr inbounds i8, ptr %0, i64 184
  %1139 = load ptr, ptr %1138, align 8, !tbaa !130
  call void @tplt_print(ptr noundef %27, ptr noundef %0, ptr noundef %1139, ptr noundef nonnull %5)
  %1140 = load ptr, ptr %121, align 8, !tbaa !40
  call void @tplt_xfer(ptr noundef %1140, ptr noundef nonnull %24, ptr noundef %27, ptr noundef nonnull %5)
  %1141 = getelementptr inbounds i8, ptr %0, i64 168
  %1142 = load ptr, ptr %1141, align 8, !tbaa !131
  call void @tplt_print(ptr noundef %27, ptr noundef %0, ptr noundef %1142, ptr noundef nonnull %5)
  %1143 = load ptr, ptr %121, align 8, !tbaa !40
  call void @tplt_xfer(ptr noundef %1143, ptr noundef nonnull %24, ptr noundef %27, ptr noundef nonnull %5)
  %1144 = getelementptr inbounds i8, ptr %0, i64 192
  %1145 = load ptr, ptr %1144, align 8, !tbaa !132
  call void @tplt_print(ptr noundef %27, ptr noundef %0, ptr noundef %1145, ptr noundef nonnull %5)
  %1146 = load ptr, ptr %121, align 8, !tbaa !40
  call void @tplt_xfer(ptr noundef %1146, ptr noundef nonnull %24, ptr noundef %27, ptr noundef nonnull %5)
  %1147 = getelementptr inbounds i8, ptr %0, i64 200
  %1148 = load ptr, ptr %1147, align 8, !tbaa !133
  call void @tplt_print(ptr noundef %27, ptr noundef %0, ptr noundef %1148, ptr noundef nonnull %5)
  call void @acttab_free(ptr noundef nonnull %407)
  %1149 = call i32 @fclose(ptr noundef nonnull %24)
  %1150 = call i32 @fclose(ptr noundef %27)
  %.not897 = icmp eq ptr %.0774, null
  br i1 %.not897, label %1153, label %1151

1151:                                             ; preds = %._crit_edge1159
  %1152 = call i32 @fclose(ptr noundef nonnull %.0774)
  br label %1153

1153:                                             ; preds = %._crit_edge1159, %1151, %3, %36, %29
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #10
  call void @llvm.lifetime.end.p0(i64 1000, ptr nonnull %4) #10
  ret void
}

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #7

; Function Attrs: nofree nounwind
declare noundef i32 @fclose(ptr nocapture noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local ptr @file_makename(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local ptr @file_open(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @rule_print(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @lemon_sprintf(ptr noundef, ptr noundef, ...) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @compute_action(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @tplt_xfer(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local ptr @tplt_open(ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @tplt_print(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @emit_destructor_code(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @translate_code(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @emit_code(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @print_stack_union(ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden void @writeRuleText(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden ptr @minimum_size_type(i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @axset_compare(ptr noundef, ptr noundef) #1

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.i32(i32, i32) #9

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #9

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nofree "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress nofree nounwind willreturn memory(argmem: read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { mustprogress nofree nosync nounwind willreturn memory(none) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #10 = { nounwind }
attributes #11 = { noreturn nounwind }
attributes #12 = { nounwind willreturn memory(read) }
attributes #13 = { nounwind willreturn memory(none) }
attributes #14 = { nounwind allocsize(0,1) }
attributes #15 = { cold nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 24}
!6 = !{!"lemon", !7, i64 0, !7, i64 8, !7, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !7, i64 72, !10, i64 80, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112, !7, i64 120, !7, i64 128, !7, i64 136, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !7, i64 176, !7, i64 184, !7, i64 192, !7, i64 200, !7, i64 208, !7, i64 216, !7, i64 224, !7, i64 232, !7, i64 240, !10, i64 248, !10, i64 252, !10, i64 256, !10, i64 260, !10, i64 264, !10, i64 268, !10, i64 272, !7, i64 280}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!6, !10, i64 48}
!12 = !{!6, !10, i64 32}
!13 = !{!6, !10, i64 52}
!14 = !{!6, !10, i64 56}
!15 = !{!6, !10, i64 60}
!16 = !{!6, !10, i64 64}
!17 = !{!6, !10, i64 68}
!18 = !{!6, !10, i64 40}
!19 = !{!6, !7, i64 72}
!20 = !{!7, !7, i64 0}
!21 = !{!22, !7, i64 0}
!22 = !{!"symbol", !7, i64 0, !10, i64 8, !10, i64 12, !7, i64 16, !7, i64 24, !10, i64 32, !10, i64 36, !7, i64 40, !10, i64 48, !10, i64 52, !7, i64 56, !10, i64 64, !7, i64 72, !10, i64 80, !10, i64 84, !10, i64 88, !7, i64 96}
!23 = !{!6, !10, i64 44}
!24 = !{!22, !7, i64 24}
!25 = !{!22, !10, i64 8}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = !{!29, !10, i64 92}
!29 = !{!"rule", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !7, i64 32, !7, i64 40, !10, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !7, i64 120, !7, i64 128}
!30 = !{!29, !7, i64 0}
!31 = !{!29, !10, i64 24}
!32 = !{!29, !7, i64 32}
!33 = !{!22, !10, i64 12}
!34 = !{!22, !10, i64 88}
!35 = !{!22, !7, i64 96}
!36 = distinct !{!36, !27}
!37 = distinct !{!37, !27}
!38 = distinct !{!38, !27}
!39 = !{!10, !10, i64 0}
!40 = !{!6, !7, i64 104}
!41 = !{!6, !7, i64 160}
!42 = !{!6, !7, i64 240}
!43 = distinct !{!43, !27}
!44 = !{!6, !7, i64 96}
!45 = !{!6, !7, i64 152}
!46 = !{!6, !7, i64 112}
!47 = !{!8, !8, i64 0}
!48 = !{!49, !49, i64 0}
!49 = !{!"short", !8, i64 0}
!50 = distinct !{!50, !27}
!51 = distinct !{!51, !27}
!52 = !{!6, !7, i64 120}
!53 = distinct !{!53, !27}
!54 = distinct !{!54, !27}
!55 = !{!6, !7, i64 88}
!56 = !{!22, !10, i64 52}
!57 = !{!22, !10, i64 80}
!58 = !{!6, !10, i64 268}
!59 = !{!6, !10, i64 28}
!60 = !{!6, !7, i64 0}
!61 = !{!62, !7, i64 0}
!62 = !{!"axset", !7, i64 0, !10, i64 8, !10, i64 12, !10, i64 16}
!63 = !{!62, !10, i64 8}
!64 = !{!65, !10, i64 32}
!65 = !{!"state", !7, i64 0, !7, i64 8, !10, i64 16, !7, i64 24, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !7, i64 56, !10, i64 64}
!66 = !{!62, !10, i64 12}
!67 = !{!65, !10, i64 36}
!68 = distinct !{!68, !27}
!69 = !{!62, !10, i64 16}
!70 = distinct !{!70, !27}
!71 = distinct !{!71, !72}
!72 = !{!"llvm.loop.unroll.disable"}
!73 = distinct !{!73, !27}
!74 = !{!75, !7, i64 0}
!75 = !{!"action", !7, i64 0, !10, i64 8, !8, i64 16, !7, i64 24, !7, i64 32, !7, i64 40}
!76 = distinct !{!76, !27}
!77 = !{!65, !10, i64 40}
!78 = distinct !{!78, !27}
!79 = !{!65, !10, i64 44}
!80 = !{!29, !10, i64 108}
!81 = distinct !{!81, !27}
!82 = !{!75, !10, i64 8}
!83 = distinct !{!83, !27}
!84 = distinct !{!84, !27}
!85 = !{!6, !10, i64 36}
!86 = !{!6, !10, i64 252}
!87 = !{!6, !10, i64 260}
!88 = !{!89, !7, i64 8}
!89 = !{!"acttab", !10, i64 0, !10, i64 4, !7, i64 8, !7, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48}
!90 = !{!91, !10, i64 4}
!91 = !{!"lookahead_action", !10, i64 0, !10, i64 4}
!92 = distinct !{!92, !27}
!93 = !{!89, !10, i64 0}
!94 = !{!6, !10, i64 256}
!95 = !{!91, !10, i64 0}
!96 = distinct !{!96, !27}
!97 = distinct !{!97, !27}
!98 = distinct !{!98, !27}
!99 = distinct !{!99, !27}
!100 = distinct !{!100, !27}
!101 = distinct !{!101, !27}
!102 = !{!65, !10, i64 48}
!103 = distinct !{!103, !27}
!104 = distinct !{!104, !27}
!105 = distinct !{!105, !27}
!106 = distinct !{!106, !27}
!107 = !{!6, !7, i64 208}
!108 = distinct !{!108, !27}
!109 = distinct !{!109, !27}
!110 = !{!6, !7, i64 216}
!111 = !{!22, !7, i64 56}
!112 = distinct !{!112, !27}
!113 = !{!22, !10, i64 64}
!114 = distinct !{!114, !27}
!115 = distinct !{!115, !27}
!116 = !{!6, !7, i64 176}
!117 = distinct !{!117, !27}
!118 = distinct !{!118, !27}
!119 = distinct !{!119, !27}
!120 = !{!29, !10, i64 100}
!121 = !{!29, !10, i64 96}
!122 = !{!29, !7, i64 128}
!123 = !{!29, !7, i64 56}
!124 = !{!29, !7, i64 64}
!125 = !{!29, !7, i64 72}
!126 = distinct !{!126, !27}
!127 = distinct !{!127, !27}
!128 = !{!29, !10, i64 112}
!129 = distinct !{!129, !27}
!130 = !{!6, !7, i64 184}
!131 = !{!6, !7, i64 168}
!132 = !{!6, !7, i64 192}
!133 = !{!6, !7, i64 200}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass