; LLVM IR from flomar/sqlmemdb :: sqlite (shell)

; 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.ShellState = type { ptr, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, ptr, ptr, [30 x i8], [20 x i8], [20 x i8], [20 x i8], [20 x i8], [100 x i32], [100 x i32], [20 x i8], [4096 x i8], ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, %struct.EQPGraph, %struct.ExpertInfo }
%struct.EQPGraph = type { ptr, ptr, [100 x i8] }
%struct.ExpertInfo = type { ptr, i32 }

@.str.11 = external hidden unnamed_addr constant [9 x i8], align 1
@stderr = external global ptr, align 8
@stdin_is_interactive = external hidden global i32, align 4
@stdout_is_console = external hidden global i32, align 4
@.str.21 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [62 x i8], align 1
@stdin = external global ptr, align 8
@.str.23 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [64 x i8], align 1
@__PRETTY_FUNCTION__.main = external hidden unnamed_addr constant [23 x i8], align 1
@Argv0 = external hidden global ptr, align 8
@.str.27 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [19 x i8], align 1
@stdout = external global ptr, align 8
@.str.42 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [6 x i8], align 1
@bail_on_error = external hidden global i32, align 4
@.str.62 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [19 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 i32 @sqlite3_appendvfs_init(ptr noundef, ptr noundef, ptr noundef) #1

declare ptr @sqlite3_vfs_find(ptr noundef) #2

declare i32 @sqlite3_vfs_register(ptr noundef, i32 noundef) #2

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

declare i32 @sqlite3_config(i32 noundef, ...) #2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4

declare void @sqlite3_free(ptr noundef) #2

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr noundef %1) #1 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca %struct.ShellState, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i64, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca i32, align 4
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca i32, align 4
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #10
  store ptr null, ptr %6, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 5360, ptr %7) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #10
  store ptr null, ptr %8, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #10
  store i32 0, ptr %10, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #10
  store i32 0, ptr %11, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #10
  store i32 1, ptr %12, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #10
  store i32 0, ptr %13, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #10
  store ptr null, ptr %14, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #10
  store ptr null, ptr %15, align 8, !tbaa !9
  %28 = load ptr, ptr @stderr, align 8, !tbaa !9
  %29 = call i32 @setvbuf(ptr noundef %28, ptr noundef null, i32 noundef 2, i64 noundef 0) #10
  %30 = call i32 @isatty(i32 noundef 0) #10
  store i32 %30, ptr @stdin_is_interactive, align 4, !tbaa !5
  %31 = call i32 @isatty(i32 noundef 1) #10
  store i32 %31, ptr @stdout_is_console, align 4, !tbaa !5
  %32 = call ptr @getenv(ptr noundef @.str.21) #10
  %33 = icmp ne ptr %32, null
  br i1 %33, label %34, label %49

34:                                               ; preds = %2
  %35 = call i32 @isatty(i32 noundef 0) #10
  %36 = icmp ne i32 %35, 0
  br i1 %36, label %37, label %46

37:                                               ; preds = %34
  %38 = call i32 @isatty(i32 noundef 2) #10
  %39 = icmp ne i32 %38, 0
  br i1 %39, label %40, label %46

40:                                               ; preds = %37
  %41 = load ptr, ptr @stderr, align 8, !tbaa !9
  %42 = call i32 @getpid() #10
  %43 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %41, ptr noundef @.str.22, i32 noundef %42) #10
  %44 = load ptr, ptr @stdin, align 8, !tbaa !9
  %45 = call i32 @fgetc(ptr noundef %44)
  br label %48

46:                                               ; preds = %37, %34
  %47 = call i32 @raise(i32 noundef 5) #10
  br label %48

48:                                               ; preds = %46, %40
  br label %49

49:                                               ; preds = %48, %2
  %50 = call ptr @sqlite3_sourceid()
  %51 = call i32 @strncmp(ptr noundef %50, ptr noundef @.str.23, i64 noundef 60) #11
  %52 = icmp ne i32 %51, 0
  br i1 %52, label %53, label %57

53:                                               ; preds = %49
  %54 = load ptr, ptr @stderr, align 8, !tbaa !9
  %55 = call ptr @sqlite3_sourceid()
  %56 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %54, ptr noundef @.str.24, ptr noundef %55, ptr noundef @.str.23) #10
  call void @exit(i32 noundef 1) #12
  unreachable

57:                                               ; preds = %49
  call void @main_init(ptr noundef %7)
  %58 = load i32, ptr %4, align 4, !tbaa !5
  %59 = icmp sge i32 %58, 1
  br i1 %59, label %60, label %69

60:                                               ; preds = %57
  %61 = load ptr, ptr %5, align 8, !tbaa !9
  %62 = icmp ne ptr %61, null
  br i1 %62, label %63, label %69

63:                                               ; preds = %60
  %64 = load ptr, ptr %5, align 8, !tbaa !9
  %65 = getelementptr inbounds ptr, ptr %64, i64 0
  %66 = load ptr, ptr %65, align 8, !tbaa !9
  %67 = icmp ne ptr %66, null
  br i1 %67, label %68, label %69

68:                                               ; preds = %63
  br label %70

69:                                               ; preds = %63, %60, %57
  call void @__assert_fail(ptr noundef @.str.25, ptr noundef @.str.26, i32 noundef 16553, ptr noundef @__PRETTY_FUNCTION__.main) #12
  unreachable

70:                                               ; preds = %68
  %71 = load ptr, ptr %5, align 8, !tbaa !9
  %72 = getelementptr inbounds ptr, ptr %71, i64 0
  %73 = load ptr, ptr %72, align 8, !tbaa !9
  store ptr %73, ptr @Argv0, align 8, !tbaa !9
  %74 = call ptr @signal(i32 noundef 2, ptr noundef @interrupt_handler) #10
  call void @verify_uninitialized()
  store i32 1, ptr %9, align 4, !tbaa !5
  br label %75

75:                                               ; preds = %312, %70
  %76 = load i32, ptr %9, align 4, !tbaa !5
  %77 = load i32, ptr %4, align 4, !tbaa !5
  %78 = icmp slt i32 %76, %77
  br i1 %78, label %79, label %315

79:                                               ; preds = %75
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #10
  %80 = load ptr, ptr %5, align 8, !tbaa !9
  %81 = load i32, ptr %9, align 4, !tbaa !5
  %82 = sext i32 %81 to i64
  %83 = getelementptr inbounds ptr, ptr %80, i64 %82
  %84 = load ptr, ptr %83, align 8, !tbaa !9
  store ptr %84, ptr %16, align 8, !tbaa !9
  %85 = load ptr, ptr %16, align 8, !tbaa !9
  %86 = getelementptr inbounds i8, ptr %85, i64 0
  %87 = load i8, ptr %86, align 1, !tbaa !11
  %88 = sext i8 %87 to i32
  %89 = icmp ne i32 %88, 45
  br i1 %89, label %90, label %116

90:                                               ; preds = %79
  %91 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 42
  %92 = load ptr, ptr %91, align 8, !tbaa !12
  %93 = icmp eq ptr %92, null
  br i1 %93, label %94, label %97

94:                                               ; preds = %90
  %95 = load ptr, ptr %16, align 8, !tbaa !9
  %96 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 42
  store ptr %95, ptr %96, align 8, !tbaa !12
  br label %115

97:                                               ; preds = %90
  store i32 0, ptr %12, align 4, !tbaa !5
  %98 = load i32, ptr %13, align 4, !tbaa !5
  %99 = add nsw i32 %98, 1
  store i32 %99, ptr %13, align 4, !tbaa !5
  %100 = load ptr, ptr %14, align 8, !tbaa !9
  %101 = load i32, ptr %13, align 4, !tbaa !5
  %102 = sext i32 %101 to i64
  %103 = mul i64 8, %102
  %104 = call ptr @realloc(ptr noundef %100, i64 noundef %103) #13
  store ptr %104, ptr %14, align 8, !tbaa !9
  %105 = load ptr, ptr %14, align 8, !tbaa !9
  %106 = icmp eq ptr %105, null
  br i1 %106, label %107, label %108

107:                                              ; preds = %97
  call void @shell_out_of_memory()
  br label %108

108:                                              ; preds = %107, %97
  %109 = load ptr, ptr %16, align 8, !tbaa !9
  %110 = load ptr, ptr %14, align 8, !tbaa !9
  %111 = load i32, ptr %13, align 4, !tbaa !5
  %112 = sub nsw i32 %111, 1
  %113 = sext i32 %112 to i64
  %114 = getelementptr inbounds ptr, ptr %110, i64 %113
  store ptr %109, ptr %114, align 8, !tbaa !9
  br label %115

115:                                              ; preds = %108, %94
  br label %116

116:                                              ; preds = %115, %79
  %117 = load ptr, ptr %16, align 8, !tbaa !9
  %118 = getelementptr inbounds i8, ptr %117, i64 1
  %119 = load i8, ptr %118, align 1, !tbaa !11
  %120 = sext i8 %119 to i32
  %121 = icmp eq i32 %120, 45
  br i1 %121, label %122, label %125

122:                                              ; preds = %116
  %123 = load ptr, ptr %16, align 8, !tbaa !9
  %124 = getelementptr inbounds i8, ptr %123, i32 1
  store ptr %124, ptr %16, align 8, !tbaa !9
  br label %125

125:                                              ; preds = %122, %116
  %126 = load ptr, ptr %16, align 8, !tbaa !9
  %127 = call i32 @strcmp(ptr noundef %126, ptr noundef @.str.27) #11
  %128 = icmp eq i32 %127, 0
  br i1 %128, label %141, label %129

129:                                              ; preds = %125
  %130 = load ptr, ptr %16, align 8, !tbaa !9
  %131 = call i32 @strcmp(ptr noundef %130, ptr noundef @.str.28) #11
  %132 = icmp eq i32 %131, 0
  br i1 %132, label %141, label %133

133:                                              ; preds = %129
  %134 = load ptr, ptr %16, align 8, !tbaa !9
  %135 = call i32 @strcmp(ptr noundef %134, ptr noundef @.str.29) #11
  %136 = icmp eq i32 %135, 0
  br i1 %136, label %141, label %137

137:                                              ; preds = %133
  %138 = load ptr, ptr %16, align 8, !tbaa !9
  %139 = call i32 @strcmp(ptr noundef %138, ptr noundef @.str.30) #11
  %140 = icmp eq i32 %139, 0
  br i1 %140, label %141, label %147

141:                                              ; preds = %137, %133, %129, %125
  %142 = load i32, ptr %4, align 4, !tbaa !5
  %143 = load ptr, ptr %5, align 8, !tbaa !9
  %144 = load i32, ptr %9, align 4, !tbaa !5
  %145 = add nsw i32 %144, 1
  store i32 %145, ptr %9, align 4, !tbaa !5
  %146 = call ptr @cmdline_option_value(i32 noundef %142, ptr noundef %143, i32 noundef %145)
  br label %311

147:                                              ; preds = %137
  %148 = load ptr, ptr %16, align 8, !tbaa !9
  %149 = call i32 @strcmp(ptr noundef %148, ptr noundef @.str.31) #11
  %150 = icmp eq i32 %149, 0
  br i1 %150, label %151, label %157

151:                                              ; preds = %147
  %152 = load i32, ptr %4, align 4, !tbaa !5
  %153 = load ptr, ptr %5, align 8, !tbaa !9
  %154 = load i32, ptr %9, align 4, !tbaa !5
  %155 = add nsw i32 %154, 1
  store i32 %155, ptr %9, align 4, !tbaa !5
  %156 = call ptr @cmdline_option_value(i32 noundef %152, ptr noundef %153, i32 noundef %155)
  store ptr %156, ptr %8, align 8, !tbaa !9
  br label %310

157:                                              ; preds = %147
  %158 = load ptr, ptr %16, align 8, !tbaa !9
  %159 = call i32 @strcmp(ptr noundef %158, ptr noundef @.str.32) #11
  %160 = icmp eq i32 %159, 0
  br i1 %160, label %161, label %162

161:                                              ; preds = %157
  store i32 0, ptr @stdin_is_interactive, align 4, !tbaa !5
  br label %309

162:                                              ; preds = %157
  %163 = load ptr, ptr %16, align 8, !tbaa !9
  %164 = call i32 @strcmp(ptr noundef %163, ptr noundef @.str.33) #11
  %165 = icmp eq i32 %164, 0
  br i1 %165, label %166, label %172

166:                                              ; preds = %162
  %167 = load i32, ptr %4, align 4, !tbaa !5
  %168 = load ptr, ptr %5, align 8, !tbaa !9
  %169 = load i32, ptr %9, align 4, !tbaa !5
  %170 = add nsw i32 %169, 1
  store i32 %170, ptr %9, align 4, !tbaa !5
  %171 = call ptr @cmdline_option_value(i32 noundef %167, ptr noundef %168, i32 noundef %170)
  br label %308

172:                                              ; preds = %162
  %173 = load ptr, ptr %16, align 8, !tbaa !9
  %174 = call i32 @strcmp(ptr noundef %173, ptr noundef @.str.34) #11
  %175 = icmp eq i32 %174, 0
  br i1 %175, label %176, label %219

176:                                              ; preds = %172
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #10
  %177 = load i32, ptr %4, align 4, !tbaa !5
  %178 = load ptr, ptr %5, align 8, !tbaa !9
  %179 = load i32, ptr %9, align 4, !tbaa !5
  %180 = add nsw i32 %179, 1
  store i32 %180, ptr %9, align 4, !tbaa !5
  %181 = call ptr @cmdline_option_value(i32 noundef %177, ptr noundef %178, i32 noundef %180)
  %182 = call i64 @integerValue(ptr noundef %181)
  %183 = trunc i64 %182 to i32
  store i32 %183, ptr %18, align 4, !tbaa !5
  %184 = load i32, ptr %18, align 4, !tbaa !5
  %185 = icmp sgt i32 %184, 70000
  br i1 %185, label %186, label %187

186:                                              ; preds = %176
  store i32 70000, ptr %18, align 4, !tbaa !5
  br label %187

187:                                              ; preds = %186, %176
  %188 = load i32, ptr %18, align 4, !tbaa !5
  %189 = icmp slt i32 %188, 0
  br i1 %189, label %190, label %191

190:                                              ; preds = %187
  store i32 0, ptr %18, align 4, !tbaa !5
  br label %191

191:                                              ; preds = %190, %187
  %192 = load i32, ptr %4, align 4, !tbaa !5
  %193 = load ptr, ptr %5, align 8, !tbaa !9
  %194 = load i32, ptr %9, align 4, !tbaa !5
  %195 = add nsw i32 %194, 1
  store i32 %195, ptr %9, align 4, !tbaa !5
  %196 = call ptr @cmdline_option_value(i32 noundef %192, ptr noundef %193, i32 noundef %195)
  %197 = call i64 @integerValue(ptr noundef %196)
  %198 = trunc i64 %197 to i32
  store i32 %198, ptr %17, align 4, !tbaa !5
  %199 = load i32, ptr %17, align 4, !tbaa !5
  %200 = icmp sgt i32 %199, 0
  br i1 %200, label %201, label %210

201:                                              ; preds = %191
  %202 = load i32, ptr %18, align 4, !tbaa !5
  %203 = icmp sgt i32 %202, 0
  br i1 %203, label %204, label %210

204:                                              ; preds = %201
  %205 = load i32, ptr %17, align 4, !tbaa !5
  %206 = load i32, ptr %18, align 4, !tbaa !5
  %207 = mul nsw i32 %205, %206
  %208 = sext i32 %207 to i64
  %209 = call noalias ptr @malloc(i64 noundef %208) #14
  br label %211

210:                                              ; preds = %201, %191
  br label %211

211:                                              ; preds = %210, %204
  %212 = phi ptr [ %209, %204 ], [ null, %210 ]
  %213 = load i32, ptr %18, align 4, !tbaa !5
  %214 = load i32, ptr %17, align 4, !tbaa !5
  %215 = call i32 (i32, ...) @sqlite3_config(i32 noundef 7, ptr noundef %212, i32 noundef %213, i32 noundef %214)
  %216 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 29
  %217 = load i32, ptr %216, align 4, !tbaa !17
  %218 = or i32 %217, 1
  store i32 %218, ptr %216, align 4, !tbaa !17
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #10
  br label %307

219:                                              ; preds = %172
  %220 = load ptr, ptr %16, align 8, !tbaa !9
  %221 = call i32 @strcmp(ptr noundef %220, ptr noundef @.str.35) #11
  %222 = icmp eq i32 %221, 0
  br i1 %222, label %223, label %258

223:                                              ; preds = %219
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #10
  %224 = load i32, ptr %4, align 4, !tbaa !5
  %225 = load ptr, ptr %5, align 8, !tbaa !9
  %226 = load i32, ptr %9, align 4, !tbaa !5
  %227 = add nsw i32 %226, 1
  store i32 %227, ptr %9, align 4, !tbaa !5
  %228 = call ptr @cmdline_option_value(i32 noundef %224, ptr noundef %225, i32 noundef %227)
  %229 = call i64 @integerValue(ptr noundef %228)
  %230 = trunc i64 %229 to i32
  store i32 %230, ptr %20, align 4, !tbaa !5
  %231 = load i32, ptr %20, align 4, !tbaa !5
  %232 = icmp slt i32 %231, 0
  br i1 %232, label %233, label %234

233:                                              ; preds = %223
  store i32 0, ptr %20, align 4, !tbaa !5
  br label %234

234:                                              ; preds = %233, %223
  %235 = load i32, ptr %4, align 4, !tbaa !5
  %236 = load ptr, ptr %5, align 8, !tbaa !9
  %237 = load i32, ptr %9, align 4, !tbaa !5
  %238 = add nsw i32 %237, 1
  store i32 %238, ptr %9, align 4, !tbaa !5
  %239 = call ptr @cmdline_option_value(i32 noundef %235, ptr noundef %236, i32 noundef %238)
  %240 = call i64 @integerValue(ptr noundef %239)
  %241 = trunc i64 %240 to i32
  store i32 %241, ptr %19, align 4, !tbaa !5
  %242 = load i32, ptr %19, align 4, !tbaa !5
  %243 = icmp slt i32 %242, 0
  br i1 %243, label %244, label %245

244:                                              ; preds = %234
  store i32 0, ptr %19, align 4, !tbaa !5
  br label %245

245:                                              ; preds = %244, %234
  %246 = load i32, ptr %20, align 4, !tbaa !5
  %247 = load i32, ptr %19, align 4, !tbaa !5
  %248 = call i32 (i32, ...) @sqlite3_config(i32 noundef 13, i32 noundef %246, i32 noundef %247)
  %249 = load i32, ptr %20, align 4, !tbaa !5
  %250 = load i32, ptr %19, align 4, !tbaa !5
  %251 = mul nsw i32 %249, %250
  %252 = icmp eq i32 %251, 0
  br i1 %252, label %253, label %257

253:                                              ; preds = %245
  %254 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 29
  %255 = load i32, ptr %254, align 4, !tbaa !17
  %256 = and i32 %255, -3
  store i32 %256, ptr %254, align 4, !tbaa !17
  br label %257

257:                                              ; preds = %253, %245
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #10
  br label %306

258:                                              ; preds = %219
  %259 = load ptr, ptr %16, align 8, !tbaa !9
  %260 = call i32 @strcmp(ptr noundef %259, ptr noundef @.str.36) #11
  %261 = icmp eq i32 %260, 0
  br i1 %261, label %262, label %272

262:                                              ; preds = %258
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #10
  %263 = load i32, ptr %4, align 4, !tbaa !5
  %264 = load ptr, ptr %5, align 8, !tbaa !9
  %265 = load i32, ptr %9, align 4, !tbaa !5
  %266 = add nsw i32 %265, 1
  store i32 %266, ptr %9, align 4, !tbaa !5
  %267 = call ptr @cmdline_option_value(i32 noundef %263, ptr noundef %264, i32 noundef %266)
  %268 = call i64 @integerValue(ptr noundef %267)
  store i64 %268, ptr %21, align 8, !tbaa !18
  %269 = load i64, ptr %21, align 8, !tbaa !18
  %270 = load i64, ptr %21, align 8, !tbaa !18
  %271 = call i32 (i32, ...) @sqlite3_config(i32 noundef 22, i64 noundef %269, i64 noundef %270)
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  br label %305

272:                                              ; preds = %258
  %273 = load ptr, ptr %16, align 8, !tbaa !9
  %274 = call i32 @strcmp(ptr noundef %273, ptr noundef @.str.37) #11
  %275 = icmp eq i32 %274, 0
  br i1 %275, label %276, label %282

276:                                              ; preds = %272
  %277 = load i32, ptr %4, align 4, !tbaa !5
  %278 = load ptr, ptr %5, align 8, !tbaa !9
  %279 = load i32, ptr %9, align 4, !tbaa !5
  %280 = add nsw i32 %279, 1
  store i32 %280, ptr %9, align 4, !tbaa !5
  %281 = call ptr @cmdline_option_value(i32 noundef %277, ptr noundef %278, i32 noundef %280)
  store ptr %281, ptr %15, align 8, !tbaa !9
  br label %304

282:                                              ; preds = %272
  %283 = load ptr, ptr %16, align 8, !tbaa !9
  %284 = call i32 @strcmp(ptr noundef %283, ptr noundef @.str.38) #11
  %285 = icmp eq i32 %284, 0
  br i1 %285, label %286, label %288

286:                                              ; preds = %282
  %287 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 7
  store i8 2, ptr %287, align 2, !tbaa !19
  br label %303

288:                                              ; preds = %282
  %289 = load ptr, ptr %16, align 8, !tbaa !9
  %290 = call i32 @strcmp(ptr noundef %289, ptr noundef @.str.39) #11
  %291 = icmp eq i32 %290, 0
  br i1 %291, label %292, label %294

292:                                              ; preds = %288
  %293 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 7
  store i8 4, ptr %293, align 2, !tbaa !19
  br label %302

294:                                              ; preds = %288
  %295 = load ptr, ptr %16, align 8, !tbaa !9
  %296 = call i32 @strcmp(ptr noundef %295, ptr noundef @.str.40) #11
  %297 = icmp eq i32 %296, 0
  br i1 %297, label %298, label %301

298:                                              ; preds = %294
  %299 = load ptr, ptr @stderr, align 8, !tbaa !9
  %300 = call i32 @sqlite3MemTraceActivate(ptr noundef %299)
  br label %301

301:                                              ; preds = %298, %294
  br label %302

302:                                              ; preds = %301, %292
  br label %303

303:                                              ; preds = %302, %286
  br label %304

304:                                              ; preds = %303, %276
  br label %305

305:                                              ; preds = %304, %262
  br label %306

306:                                              ; preds = %305, %257
  br label %307

307:                                              ; preds = %306, %211
  br label %308

308:                                              ; preds = %307, %166
  br label %309

309:                                              ; preds = %308, %161
  br label %310

310:                                              ; preds = %309, %151
  br label %311

311:                                              ; preds = %310, %141
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  br label %312

312:                                              ; preds = %311
  %313 = load i32, ptr %9, align 4, !tbaa !5
  %314 = add nsw i32 %313, 1
  store i32 %314, ptr %9, align 4, !tbaa !5
  br label %75, !llvm.loop !20

315:                                              ; preds = %75
  call void @verify_uninitialized()
  %316 = call i32 @sqlite3_initialize()
  %317 = load ptr, ptr %15, align 8, !tbaa !9
  %318 = icmp ne ptr %317, null
  br i1 %318, label %319, label %336

319:                                              ; preds = %315
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #10
  %320 = load ptr, ptr %15, align 8, !tbaa !9
  %321 = call ptr @sqlite3_vfs_find(ptr noundef %320)
  store ptr %321, ptr %22, align 8, !tbaa !9
  %322 = load ptr, ptr %22, align 8, !tbaa !9
  %323 = icmp ne ptr %322, null
  br i1 %323, label %324, label %327

324:                                              ; preds = %319
  %325 = load ptr, ptr %22, align 8, !tbaa !9
  %326 = call i32 @sqlite3_vfs_register(ptr noundef %325, i32 noundef 1)
  br label %335

327:                                              ; preds = %319
  %328 = load ptr, ptr @stderr, align 8, !tbaa !9
  %329 = load ptr, ptr %5, align 8, !tbaa !9
  %330 = load i32, ptr %9, align 4, !tbaa !5
  %331 = sext i32 %330 to i64
  %332 = getelementptr inbounds ptr, ptr %329, i64 %331
  %333 = load ptr, ptr %332, align 8, !tbaa !9
  %334 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %328, ptr noundef @.str.41, ptr noundef %333) #10
  call void @exit(i32 noundef 1) #12
  unreachable

335:                                              ; preds = %324
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  br label %336

336:                                              ; preds = %335, %315
  %337 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 42
  %338 = load ptr, ptr %337, align 8, !tbaa !12
  %339 = icmp eq ptr %338, null
  br i1 %339, label %340, label %345

340:                                              ; preds = %336
  %341 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 42
  store ptr @.str.11, ptr %341, align 8, !tbaa !12
  %342 = load i32, ptr %4, align 4, !tbaa !5
  %343 = icmp eq i32 %342, 1
  %344 = zext i1 %343 to i32
  store i32 %344, ptr %11, align 4, !tbaa !5
  br label %345

345:                                              ; preds = %340, %336
  %346 = load ptr, ptr @stdout, align 8, !tbaa !9
  %347 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 16
  store ptr %346, ptr %347, align 8, !tbaa !22
  %348 = call i32 @sqlite3_appendvfs_init(ptr noundef null, ptr noundef null, ptr noundef null)
  %349 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 42
  %350 = load ptr, ptr %349, align 8, !tbaa !12
  %351 = call i32 @access(ptr noundef %350, i32 noundef 0) #10
  %352 = icmp eq i32 %351, 0
  br i1 %352, label %353, label %354

353:                                              ; preds = %345
  call void @open_db(ptr noundef %7, i32 noundef 0)
  br label %354

354:                                              ; preds = %353, %345
  %355 = load ptr, ptr %8, align 8, !tbaa !9
  call void @process_sqliterc(ptr noundef %7, ptr noundef %355)
  store i32 1, ptr %9, align 4, !tbaa !5
  br label %356

356:                                              ; preds = %730, %354
  %357 = load i32, ptr %9, align 4, !tbaa !5
  %358 = load i32, ptr %4, align 4, !tbaa !5
  %359 = icmp slt i32 %357, %358
  br i1 %359, label %360, label %733

360:                                              ; preds = %356
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #10
  %361 = load ptr, ptr %5, align 8, !tbaa !9
  %362 = load i32, ptr %9, align 4, !tbaa !5
  %363 = sext i32 %362 to i64
  %364 = getelementptr inbounds ptr, ptr %361, i64 %363
  %365 = load ptr, ptr %364, align 8, !tbaa !9
  store ptr %365, ptr %23, align 8, !tbaa !9
  %366 = load ptr, ptr %23, align 8, !tbaa !9
  %367 = getelementptr inbounds i8, ptr %366, i64 0
  %368 = load i8, ptr %367, align 1, !tbaa !11
  %369 = sext i8 %368 to i32
  %370 = icmp ne i32 %369, 45
  br i1 %370, label %371, label %372

371:                                              ; preds = %360
  store i32 7, ptr %24, align 4
  br label %727

372:                                              ; preds = %360
  %373 = load ptr, ptr %23, align 8, !tbaa !9
  %374 = getelementptr inbounds i8, ptr %373, i64 1
  %375 = load i8, ptr %374, align 1, !tbaa !11
  %376 = sext i8 %375 to i32
  %377 = icmp eq i32 %376, 45
  br i1 %377, label %378, label %381

378:                                              ; preds = %372
  %379 = load ptr, ptr %23, align 8, !tbaa !9
  %380 = getelementptr inbounds i8, ptr %379, i32 1
  store ptr %380, ptr %23, align 8, !tbaa !9
  br label %381

381:                                              ; preds = %378, %372
  %382 = load ptr, ptr %23, align 8, !tbaa !9
  %383 = call i32 @strcmp(ptr noundef %382, ptr noundef @.str.31) #11
  %384 = icmp eq i32 %383, 0
  br i1 %384, label %385, label %388

385:                                              ; preds = %381
  %386 = load i32, ptr %9, align 4, !tbaa !5
  %387 = add nsw i32 %386, 1
  store i32 %387, ptr %9, align 4, !tbaa !5
  br label %723

388:                                              ; preds = %381
  %389 = load ptr, ptr %23, align 8, !tbaa !9
  %390 = call i32 @strcmp(ptr noundef %389, ptr noundef @.str.42) #11
  %391 = icmp eq i32 %390, 0
  br i1 %391, label %392, label %394

392:                                              ; preds = %388
  %393 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 19
  store i32 4, ptr %393, align 4, !tbaa !23
  br label %722

394:                                              ; preds = %388
  %395 = load ptr, ptr %23, align 8, !tbaa !9
  %396 = call i32 @strcmp(ptr noundef %395, ptr noundef @.str.43) #11
  %397 = icmp eq i32 %396, 0
  br i1 %397, label %398, label %400

398:                                              ; preds = %394
  %399 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 19
  store i32 2, ptr %399, align 4, !tbaa !23
  br label %721

400:                                              ; preds = %394
  %401 = load ptr, ptr %23, align 8, !tbaa !9
  %402 = call i32 @strcmp(ptr noundef %401, ptr noundef @.str.44) #11
  %403 = icmp eq i32 %402, 0
  br i1 %403, label %404, label %406

404:                                              ; preds = %400
  %405 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 19
  store i32 6, ptr %405, align 4, !tbaa !23
  br label %720

406:                                              ; preds = %400
  %407 = load ptr, ptr %23, align 8, !tbaa !9
  %408 = call i32 @strcmp(ptr noundef %407, ptr noundef @.str.45) #11
  %409 = icmp eq i32 %408, 0
  br i1 %409, label %410, label %412

410:                                              ; preds = %406
  %411 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 19
  store i32 0, ptr %411, align 4, !tbaa !23
  br label %719

412:                                              ; preds = %406
  %413 = load ptr, ptr %23, align 8, !tbaa !9
  %414 = call i32 @strcmp(ptr noundef %413, ptr noundef @.str.46) #11
  %415 = icmp eq i32 %414, 0
  br i1 %415, label %416, label %418

416:                                              ; preds = %412
  %417 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 19
  store i32 1, ptr %417, align 4, !tbaa !23
  br label %718

418:                                              ; preds = %412
  %419 = load ptr, ptr %23, align 8, !tbaa !9
  %420 = call i32 @strcmp(ptr noundef %419, ptr noundef @.str.47) #11
  %421 = icmp eq i32 %420, 0
  br i1 %421, label %422, label %426

422:                                              ; preds = %418
  %423 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 19
  store i32 8, ptr %423, align 4, !tbaa !23
  %424 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 34
  %425 = getelementptr inbounds [20 x i8], ptr %424, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %425, ptr align 1 @.str.48, i64 2, i1 false)
  br label %717

426:                                              ; preds = %418
  %427 = load ptr, ptr %23, align 8, !tbaa !9
  %428 = call i32 @strcmp(ptr noundef %427, ptr noundef @.str.38) #11
  %429 = icmp eq i32 %428, 0
  br i1 %429, label %430, label %432

430:                                              ; preds = %426
  %431 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 7
  store i8 2, ptr %431, align 2, !tbaa !19
  br label %716

432:                                              ; preds = %426
  %433 = load ptr, ptr %23, align 8, !tbaa !9
  %434 = call i32 @strcmp(ptr noundef %433, ptr noundef @.str.39) #11
  %435 = icmp eq i32 %434, 0
  br i1 %435, label %436, label %438

436:                                              ; preds = %432
  %437 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 7
  store i8 4, ptr %437, align 2, !tbaa !19
  br label %715

438:                                              ; preds = %432
  %439 = load ptr, ptr %23, align 8, !tbaa !9
  %440 = call i32 @strcmp(ptr noundef %439, ptr noundef @.str.49) #11
  %441 = icmp eq i32 %440, 0
  br i1 %441, label %442, label %450

442:                                              ; preds = %438
  %443 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 19
  store i32 10, ptr %443, align 4, !tbaa !23
  %444 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 34
  %445 = getelementptr inbounds [20 x i8], ptr %444, i64 0, i64 0
  %446 = call ptr (i32, ptr, ptr, ...) @sqlite3_snprintf(i32 noundef 20, ptr noundef %445, ptr noundef @.str.50)
  %447 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 35
  %448 = getelementptr inbounds [20 x i8], ptr %447, i64 0, i64 0
  %449 = call ptr (i32, ptr, ptr, ...) @sqlite3_snprintf(i32 noundef 20, ptr noundef %448, ptr noundef @.str.51)
  br label %714

450:                                              ; preds = %438
  %451 = load ptr, ptr %23, align 8, !tbaa !9
  %452 = call i32 @strcmp(ptr noundef %451, ptr noundef @.str.27) #11
  %453 = icmp eq i32 %452, 0
  br i1 %453, label %454, label %463

454:                                              ; preds = %450
  %455 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 34
  %456 = getelementptr inbounds [20 x i8], ptr %455, i64 0, i64 0
  %457 = load i32, ptr %4, align 4, !tbaa !5
  %458 = load ptr, ptr %5, align 8, !tbaa !9
  %459 = load i32, ptr %9, align 4, !tbaa !5
  %460 = add nsw i32 %459, 1
  store i32 %460, ptr %9, align 4, !tbaa !5
  %461 = call ptr @cmdline_option_value(i32 noundef %457, ptr noundef %458, i32 noundef %460)
  %462 = call ptr (i32, ptr, ptr, ...) @sqlite3_snprintf(i32 noundef 20, ptr noundef %456, ptr noundef @.str.52, ptr noundef %461)
  br label %713

463:                                              ; preds = %450
  %464 = load ptr, ptr %23, align 8, !tbaa !9
  %465 = call i32 @strcmp(ptr noundef %464, ptr noundef @.str.29) #11
  %466 = icmp eq i32 %465, 0
  br i1 %466, label %467, label %476

467:                                              ; preds = %463
  %468 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 35
  %469 = getelementptr inbounds [20 x i8], ptr %468, i64 0, i64 0
  %470 = load i32, ptr %4, align 4, !tbaa !5
  %471 = load ptr, ptr %5, align 8, !tbaa !9
  %472 = load i32, ptr %9, align 4, !tbaa !5
  %473 = add nsw i32 %472, 1
  store i32 %473, ptr %9, align 4, !tbaa !5
  %474 = call ptr @cmdline_option_value(i32 noundef %470, ptr noundef %471, i32 noundef %473)
  %475 = call ptr (i32, ptr, ptr, ...) @sqlite3_snprintf(i32 noundef 20, ptr noundef %469, ptr noundef @.str.52, ptr noundef %474)
  br label %712

476:                                              ; preds = %463
  %477 = load ptr, ptr %23, align 8, !tbaa !9
  %478 = call i32 @strcmp(ptr noundef %477, ptr noundef @.str.28) #11
  %479 = icmp eq i32 %478, 0
  br i1 %479, label %480, label %489

480:                                              ; preds = %476
  %481 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 40
  %482 = getelementptr inbounds [20 x i8], ptr %481, i64 0, i64 0
  %483 = load i32, ptr %4, align 4, !tbaa !5
  %484 = load ptr, ptr %5, align 8, !tbaa !9
  %485 = load i32, ptr %9, align 4, !tbaa !5
  %486 = add nsw i32 %485, 1
  store i32 %486, ptr %9, align 4, !tbaa !5
  %487 = call ptr @cmdline_option_value(i32 noundef %483, ptr noundef %484, i32 noundef %486)
  %488 = call ptr (i32, ptr, ptr, ...) @sqlite3_snprintf(i32 noundef 20, ptr noundef %482, ptr noundef @.str.52, ptr noundef %487)
  br label %711

489:                                              ; preds = %476
  %490 = load ptr, ptr %23, align 8, !tbaa !9
  %491 = call i32 @strcmp(ptr noundef %490, ptr noundef @.str.53) #11
  %492 = icmp eq i32 %491, 0
  br i1 %492, label %493, label %495

493:                                              ; preds = %489
  %494 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 24
  store i32 1, ptr %494, align 8, !tbaa !24
  br label %710

495:                                              ; preds = %489
  %496 = load ptr, ptr %23, align 8, !tbaa !9
  %497 = call i32 @strcmp(ptr noundef %496, ptr noundef @.str.54) #11
  %498 = icmp eq i32 %497, 0
  br i1 %498, label %499, label %501

499:                                              ; preds = %495
  %500 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 24
  store i32 0, ptr %500, align 8, !tbaa !24
  br label %709

501:                                              ; preds = %495
  %502 = load ptr, ptr %23, align 8, !tbaa !9
  %503 = call i32 @strcmp(ptr noundef %502, ptr noundef @.str.55) #11
  %504 = icmp eq i32 %503, 0
  br i1 %504, label %505, label %509

505:                                              ; preds = %501
  %506 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 29
  %507 = load i32, ptr %506, align 4, !tbaa !17
  %508 = or i32 %507, 64
  store i32 %508, ptr %506, align 4, !tbaa !17
  br label %708

509:                                              ; preds = %501
  %510 = load ptr, ptr %23, align 8, !tbaa !9
  %511 = call i32 @strcmp(ptr noundef %510, ptr noundef @.str.56) #11
  %512 = icmp eq i32 %511, 0
  br i1 %512, label %513, label %515

513:                                              ; preds = %509
  %514 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 2
  store i8 1, ptr %514, align 1, !tbaa !25
  br label %707

515:                                              ; preds = %509
  %516 = load ptr, ptr %23, align 8, !tbaa !9
  %517 = call i32 @strcmp(ptr noundef %516, ptr noundef @.str.57) #11
  %518 = icmp eq i32 %517, 0
  br i1 %518, label %519, label %521

519:                                              ; preds = %515
  %520 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 2
  store i8 3, ptr %520, align 1, !tbaa !25
  br label %706

521:                                              ; preds = %515
  %522 = load ptr, ptr %23, align 8, !tbaa !9
  %523 = call i32 @strcmp(ptr noundef %522, ptr noundef @.str.58) #11
  %524 = icmp eq i32 %523, 0
  br i1 %524, label %525, label %527

525:                                              ; preds = %521
  %526 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 5
  store i8 1, ptr %526, align 4, !tbaa !26
  br label %705

527:                                              ; preds = %521
  %528 = load ptr, ptr %23, align 8, !tbaa !9
  %529 = call i32 @strcmp(ptr noundef %528, ptr noundef @.str.59) #11
  %530 = icmp eq i32 %529, 0
  br i1 %530, label %531, label %533

531:                                              ; preds = %527
  %532 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 6
  store i8 1, ptr %532, align 1, !tbaa !27
  br label %704

533:                                              ; preds = %527
  %534 = load ptr, ptr %23, align 8, !tbaa !9
  %535 = call i32 @strcmp(ptr noundef %534, ptr noundef @.str.60) #11
  %536 = icmp eq i32 %535, 0
  br i1 %536, label %537, label %541

537:                                              ; preds = %533
  %538 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 29
  %539 = load i32, ptr %538, align 4, !tbaa !17
  %540 = or i32 %539, 4
  store i32 %540, ptr %538, align 4, !tbaa !17
  br label %703

541:                                              ; preds = %533
  %542 = load ptr, ptr %23, align 8, !tbaa !9
  %543 = call i32 @strcmp(ptr noundef %542, ptr noundef @.str.61) #11
  %544 = icmp eq i32 %543, 0
  br i1 %544, label %545, label %546

545:                                              ; preds = %541
  store i32 1, ptr @bail_on_error, align 4, !tbaa !5
  br label %702

546:                                              ; preds = %541
  %547 = load ptr, ptr %23, align 8, !tbaa !9
  %548 = call i32 @strcmp(ptr noundef %547, ptr noundef @.str.62) #11
  %549 = icmp eq i32 %548, 0
  br i1 %549, label %550, label %554

550:                                              ; preds = %546
  %551 = call ptr @sqlite3_libversion()
  %552 = call ptr @sqlite3_sourceid()
  %553 = call i32 (ptr, ...) @printf(ptr noundef @.str.63, ptr noundef %551, ptr noundef %552)
  store i32 0, ptr %3, align 4
  store i32 1, ptr %24, align 4
  br label %727

554:                                              ; preds = %546
  %555 = load ptr, ptr %23, align 8, !tbaa !9
  %556 = call i32 @strcmp(ptr noundef %555, ptr noundef @.str.64) #11
  %557 = icmp eq i32 %556, 0
  br i1 %557, label %558, label %559

558:                                              ; preds = %554
  store i32 1, ptr @stdin_is_interactive, align 4, !tbaa !5
  br label %700

559:                                              ; preds = %554
  %560 = load ptr, ptr %23, align 8, !tbaa !9
  %561 = call i32 @strcmp(ptr noundef %560, ptr noundef @.str.32) #11
  %562 = icmp eq i32 %561, 0
  br i1 %562, label %563, label %564

563:                                              ; preds = %559
  store i32 0, ptr @stdin_is_interactive, align 4, !tbaa !5
  br label %699

564:                                              ; preds = %559
  %565 = load ptr, ptr %23, align 8, !tbaa !9
  %566 = call i32 @strcmp(ptr noundef %565, ptr noundef @.str.33) #11
  %567 = icmp eq i32 %566, 0
  br i1 %567, label %568, label %571

568:                                              ; preds = %564
  %569 = load i32, ptr %9, align 4, !tbaa !5
  %570 = add nsw i32 %569, 1
  store i32 %570, ptr %9, align 4, !tbaa !5
  br label %698

571:                                              ; preds = %564
  %572 = load ptr, ptr %23, align 8, !tbaa !9
  %573 = call i32 @strcmp(ptr noundef %572, ptr noundef @.str.34) #11
  %574 = icmp eq i32 %573, 0
  br i1 %574, label %575, label %578

575:                                              ; preds = %571
  %576 = load i32, ptr %9, align 4, !tbaa !5
  %577 = add nsw i32 %576, 2
  store i32 %577, ptr %9, align 4, !tbaa !5
  br label %697

578:                                              ; preds = %571
  %579 = load ptr, ptr %23, align 8, !tbaa !9
  %580 = call i32 @strcmp(ptr noundef %579, ptr noundef @.str.35) #11
  %581 = icmp eq i32 %580, 0
  br i1 %581, label %582, label %585

582:                                              ; preds = %578
  %583 = load i32, ptr %9, align 4, !tbaa !5
  %584 = add nsw i32 %583, 2
  store i32 %584, ptr %9, align 4, !tbaa !5
  br label %696

585:                                              ; preds = %578
  %586 = load ptr, ptr %23, align 8, !tbaa !9
  %587 = call i32 @strcmp(ptr noundef %586, ptr noundef @.str.36) #11
  %588 = icmp eq i32 %587, 0
  br i1 %588, label %589, label %592

589:                                              ; preds = %585
  %590 = load i32, ptr %9, align 4, !tbaa !5
  %591 = add nsw i32 %590, 1
  store i32 %591, ptr %9, align 4, !tbaa !5
  br label %695

592:                                              ; preds = %585
  %593 = load ptr, ptr %23, align 8, !tbaa !9
  %594 = call i32 @strcmp(ptr noundef %593, ptr noundef @.str.40) #11
  %595 = icmp eq i32 %594, 0
  br i1 %595, label %596, label %599

596:                                              ; preds = %592
  %597 = load i32, ptr %9, align 4, !tbaa !5
  %598 = add nsw i32 %597, 1
  store i32 %598, ptr %9, align 4, !tbaa !5
  br label %694

599:                                              ; preds = %592
  %600 = load ptr, ptr %23, align 8, !tbaa !9
  %601 = call i32 @strcmp(ptr noundef %600, ptr noundef @.str.37) #11
  %602 = icmp eq i32 %601, 0
  br i1 %602, label %603, label %606

603:                                              ; preds = %599
  %604 = load i32, ptr %9, align 4, !tbaa !5
  %605 = add nsw i32 %604, 1
  store i32 %605, ptr %9, align 4, !tbaa !5
  br label %693

606:                                              ; preds = %599
  %607 = load ptr, ptr %23, align 8, !tbaa !9
  %608 = call i32 @strcmp(ptr noundef %607, ptr noundef @.str.65) #11
  %609 = icmp eq i32 %608, 0
  br i1 %609, label %610, label %611

610:                                              ; preds = %606
  call void @usage(i32 noundef 1)
  br label %692

611:                                              ; preds = %606
  %612 = load ptr, ptr %23, align 8, !tbaa !9
  %613 = call i32 @strcmp(ptr noundef %612, ptr noundef @.str.30) #11
  %614 = icmp eq i32 %613, 0
  br i1 %614, label %615, label %684

615:                                              ; preds = %611
  %616 = load i32, ptr %9, align 4, !tbaa !5
  %617 = load i32, ptr %4, align 4, !tbaa !5
  %618 = sub nsw i32 %617, 1
  %619 = icmp eq i32 %616, %618
  br i1 %619, label %620, label %621

620:                                              ; preds = %615
  store i32 5, ptr %24, align 4
  br label %727

621:                                              ; preds = %615
  %622 = load i32, ptr %4, align 4, !tbaa !5
  %623 = load ptr, ptr %5, align 8, !tbaa !9
  %624 = load i32, ptr %9, align 4, !tbaa !5
  %625 = add nsw i32 %624, 1
  store i32 %625, ptr %9, align 4, !tbaa !5
  %626 = call ptr @cmdline_option_value(i32 noundef %622, ptr noundef %623, i32 noundef %625)
  store ptr %626, ptr %23, align 8, !tbaa !9
  %627 = load ptr, ptr %23, align 8, !tbaa !9
  %628 = getelementptr inbounds i8, ptr %627, i64 0
  %629 = load i8, ptr %628, align 1, !tbaa !11
  %630 = sext i8 %629 to i32
  %631 = icmp eq i32 %630, 46
  br i1 %631, label %632, label %649

632:                                              ; preds = %621
  %633 = load ptr, ptr %23, align 8, !tbaa !9
  %634 = call i32 @do_meta_command(ptr noundef %633, ptr noundef %7)
  store i32 %634, ptr %10, align 4, !tbaa !5
  %635 = load i32, ptr %10, align 4, !tbaa !5
  %636 = icmp ne i32 %635, 0
  br i1 %636, label %637, label %648

637:                                              ; preds = %632
  %638 = load i32, ptr @bail_on_error, align 4, !tbaa !5
  %639 = icmp ne i32 %638, 0
  br i1 %639, label %640, label %648

640:                                              ; preds = %637
  %641 = load i32, ptr %10, align 4, !tbaa !5
  %642 = icmp eq i32 %641, 2
  br i1 %642, label %643, label %644

643:                                              ; preds = %640
  br label %646

644:                                              ; preds = %640
  %645 = load i32, ptr %10, align 4, !tbaa !5
  br label %646

646:                                              ; preds = %644, %643
  %647 = phi i32 [ 0, %643 ], [ %645, %644 ]
  store i32 %647, ptr %3, align 4
  store i32 1, ptr %24, align 4
  br label %727

648:                                              ; preds = %637, %632
  br label %683

649:                                              ; preds = %621
  call void @open_db(ptr noundef %7, i32 noundef 0)
  %650 = load ptr, ptr %23, align 8, !tbaa !9
  %651 = call i32 @shell_exec(ptr noundef %7, ptr noundef %650, ptr noundef %6)
  store i32 %651, ptr %10, align 4, !tbaa !5
  %652 = load ptr, ptr %6, align 8, !tbaa !9
  %653 = icmp ne ptr %652, null
  br i1 %653, label %654, label %669

654:                                              ; preds = %649
  %655 = load ptr, ptr @stderr, align 8, !tbaa !9
  %656 = load ptr, ptr %6, align 8, !tbaa !9
  %657 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %655, ptr noundef @.str.66, ptr noundef %656) #10
  %658 = load i32, ptr @bail_on_error, align 4, !tbaa !5
  %659 = icmp ne i32 %658, 0
  br i1 %659, label %660, label %668

660:                                              ; preds = %654
  %661 = load i32, ptr %10, align 4, !tbaa !5
  %662 = icmp ne i32 %661, 0
  br i1 %662, label %663, label %665

663:                                              ; preds = %660
  %664 = load i32, ptr %10, align 4, !tbaa !5
  br label %666

665:                                              ; preds = %660
  br label %666

666:                                              ; preds = %665, %663
  %667 = phi i32 [ %664, %663 ], [ 1, %665 ]
  store i32 %667, ptr %3, align 4
  store i32 1, ptr %24, align 4
  br label %727

668:                                              ; preds = %654
  br label %682

669:                                              ; preds = %649
  %670 = load i32, ptr %10, align 4, !tbaa !5
  %671 = icmp ne i32 %670, 0
  br i1 %671, label %672, label %681

672:                                              ; preds = %669
  %673 = load ptr, ptr @stderr, align 8, !tbaa !9
  %674 = load ptr, ptr %23, align 8, !tbaa !9
  %675 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %673, ptr noundef @.str.67, ptr noundef %674) #10
  %676 = load i32, ptr @bail_on_error, align 4, !tbaa !5
  %677 = icmp ne i32 %676, 0
  br i1 %677, label %678, label %680

678:                                              ; preds = %672
  %679 = load i32, ptr %10, align 4, !tbaa !5
  store i32 %679, ptr %3, align 4
  store i32 1, ptr %24, align 4
  br label %727

680:                                              ; preds = %672
  br label %681

681:                                              ; preds = %680, %669
  br label %682

682:                                              ; preds = %681, %668
  br label %683

683:                                              ; preds = %682, %648
  br label %691

684:                                              ; preds = %611
  %685 = load ptr, ptr @stderr, align 8, !tbaa !9
  %686 = load ptr, ptr @Argv0, align 8, !tbaa !9
  %687 = load ptr, ptr %23, align 8, !tbaa !9
  %688 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %685, ptr noundef @.str.68, ptr noundef %686, ptr noundef %687) #10
  %689 = load ptr, ptr @stderr, align 8, !tbaa !9
  %690 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %689, ptr noundef @.str.69) #10
  store i32 1, ptr %3, align 4
  store i32 1, ptr %24, align 4
  br label %727

691:                                              ; preds = %683
  br label %692

692:                                              ; preds = %691, %610
  br label %693

693:                                              ; preds = %692, %603
  br label %694

694:                                              ; preds = %693, %596
  br label %695

695:                                              ; preds = %694, %589
  br label %696

696:                                              ; preds = %695, %582
  br label %697

697:                                              ; preds = %696, %575
  br label %698

698:                                              ; preds = %697, %568
  br label %699

699:                                              ; preds = %698, %563
  br label %700

700:                                              ; preds = %699, %558
  br label %701

701:                                              ; preds = %700
  br label %702

702:                                              ; preds = %701, %545
  br label %703

703:                                              ; preds = %702, %537
  br label %704

704:                                              ; preds = %703, %531
  br label %705

705:                                              ; preds = %704, %525
  br label %706

706:                                              ; preds = %705, %519
  br label %707

707:                                              ; preds = %706, %513
  br label %708

708:                                              ; preds = %707, %505
  br label %709

709:                                              ; preds = %708, %499
  br label %710

710:                                              ; preds = %709, %493
  br label %711

711:                                              ; preds = %710, %480
  br label %712

712:                                              ; preds = %711, %467
  br label %713

713:                                              ; preds = %712, %454
  br label %714

714:                                              ; preds = %713, %442
  br label %715

715:                                              ; preds = %714, %436
  br label %716

716:                                              ; preds = %715, %430
  br label %717

717:                                              ; preds = %716, %422
  br label %718

718:                                              ; preds = %717, %416
  br label %719

719:                                              ; preds = %718, %410
  br label %720

720:                                              ; preds = %719, %404
  br label %721

721:                                              ; preds = %720, %398
  br label %722

722:                                              ; preds = %721, %392
  br label %723

723:                                              ; preds = %722, %385
  %724 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 19
  %725 = load i32, ptr %724, align 4, !tbaa !23
  %726 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 21
  store i32 %725, ptr %726, align 4, !tbaa !28
  store i32 0, ptr %24, align 4
  br label %727

727:                                              ; preds = %723, %684, %678, %666, %646, %620, %550, %371
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  %728 = load i32, ptr %24, align 4
  switch i32 %728, label %876 [
    i32 0, label %729
    i32 7, label %730
    i32 5, label %733
  ]

729:                                              ; preds = %727
  br label %730

730:                                              ; preds = %729, %727
  %731 = load i32, ptr %9, align 4, !tbaa !5
  %732 = add nsw i32 %731, 1
  store i32 %732, ptr %9, align 4, !tbaa !5
  br label %356, !llvm.loop !29

733:                                              ; preds = %727, %356
  %734 = load i32, ptr %12, align 4, !tbaa !5
  %735 = icmp ne i32 %734, 0
  br i1 %735, label %809, label %736

736:                                              ; preds = %733
  store i32 0, ptr %9, align 4, !tbaa !5
  br label %737

737:                                              ; preds = %804, %736
  %738 = load i32, ptr %9, align 4, !tbaa !5
  %739 = load i32, ptr %13, align 4, !tbaa !5
  %740 = icmp slt i32 %738, %739
  br i1 %740, label %741, label %807

741:                                              ; preds = %737
  %742 = load ptr, ptr %14, align 8, !tbaa !9
  %743 = load i32, ptr %9, align 4, !tbaa !5
  %744 = sext i32 %743 to i64
  %745 = getelementptr inbounds ptr, ptr %742, i64 %744
  %746 = load ptr, ptr %745, align 8, !tbaa !9
  %747 = getelementptr inbounds i8, ptr %746, i64 0
  %748 = load i8, ptr %747, align 1, !tbaa !11
  %749 = sext i8 %748 to i32
  %750 = icmp eq i32 %749, 46
  br i1 %750, label %751, label %769

751:                                              ; preds = %741
  %752 = load ptr, ptr %14, align 8, !tbaa !9
  %753 = load i32, ptr %9, align 4, !tbaa !5
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds ptr, ptr %752, i64 %754
  %756 = load ptr, ptr %755, align 8, !tbaa !9
  %757 = call i32 @do_meta_command(ptr noundef %756, ptr noundef %7)
  store i32 %757, ptr %10, align 4, !tbaa !5
  %758 = load i32, ptr %10, align 4, !tbaa !5
  %759 = icmp ne i32 %758, 0
  br i1 %759, label %760, label %768

760:                                              ; preds = %751
  %761 = load i32, ptr %10, align 4, !tbaa !5
  %762 = icmp eq i32 %761, 2
  br i1 %762, label %763, label %764

763:                                              ; preds = %760
  br label %766

764:                                              ; preds = %760
  %765 = load i32, ptr %10, align 4, !tbaa !5
  br label %766

766:                                              ; preds = %764, %763
  %767 = phi i32 [ 0, %763 ], [ %765, %764 ]
  store i32 %767, ptr %3, align 4
  store i32 1, ptr %24, align 4
  br label %876

768:                                              ; preds = %751
  br label %803

769:                                              ; preds = %741
  call void @open_db(ptr noundef %7, i32 noundef 0)
  %770 = load ptr, ptr %14, align 8, !tbaa !9
  %771 = load i32, ptr %9, align 4, !tbaa !5
  %772 = sext i32 %771 to i64
  %773 = getelementptr inbounds ptr, ptr %770, i64 %772
  %774 = load ptr, ptr %773, align 8, !tbaa !9
  %775 = call i32 @shell_exec(ptr noundef %7, ptr noundef %774, ptr noundef %6)
  store i32 %775, ptr %10, align 4, !tbaa !5
  %776 = load ptr, ptr %6, align 8, !tbaa !9
  %777 = icmp ne ptr %776, null
  br i1 %777, label %778, label %789

778:                                              ; preds = %769
  %779 = load ptr, ptr @stderr, align 8, !tbaa !9
  %780 = load ptr, ptr %6, align 8, !tbaa !9
  %781 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %779, ptr noundef @.str.66, ptr noundef %780) #10
  %782 = load i32, ptr %10, align 4, !tbaa !5
  %783 = icmp ne i32 %782, 0
  br i1 %783, label %784, label %786

784:                                              ; preds = %778
  %785 = load i32, ptr %10, align 4, !tbaa !5
  br label %787

786:                                              ; preds = %778
  br label %787

787:                                              ; preds = %786, %784
  %788 = phi i32 [ %785, %784 ], [ 1, %786 ]
  store i32 %788, ptr %3, align 4
  store i32 1, ptr %24, align 4
  br label %876

789:                                              ; preds = %769
  %790 = load i32, ptr %10, align 4, !tbaa !5
  %791 = icmp ne i32 %790, 0
  br i1 %791, label %792, label %801

792:                                              ; preds = %789
  %793 = load ptr, ptr @stderr, align 8, !tbaa !9
  %794 = load ptr, ptr %14, align 8, !tbaa !9
  %795 = load i32, ptr %9, align 4, !tbaa !5
  %796 = sext i32 %795 to i64
  %797 = getelementptr inbounds ptr, ptr %794, i64 %796
  %798 = load ptr, ptr %797, align 8, !tbaa !9
  %799 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %793, ptr noundef @.str.70, ptr noundef %798) #10
  %800 = load i32, ptr %10, align 4, !tbaa !5
  store i32 %800, ptr %3, align 4
  store i32 1, ptr %24, align 4
  br label %876

801:                                              ; preds = %789
  br label %802

802:                                              ; preds = %801
  br label %803

803:                                              ; preds = %802, %768
  br label %804

804:                                              ; preds = %803
  %805 = load i32, ptr %9, align 4, !tbaa !5
  %806 = add nsw i32 %805, 1
  store i32 %806, ptr %9, align 4, !tbaa !5
  br label %737, !llvm.loop !30

807:                                              ; preds = %737
  %808 = load ptr, ptr %14, align 8, !tbaa !9
  call void @free(ptr noundef %808) #10
  br label %863

809:                                              ; preds = %733
  %810 = load i32, ptr @stdin_is_interactive, align 4, !tbaa !5
  %811 = icmp ne i32 %810, 0
  br i1 %811, label %812, label %858

812:                                              ; preds = %809
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #10
  %813 = call ptr @sqlite3_libversion()
  %814 = call ptr @sqlite3_sourceid()
  %815 = call i32 (ptr, ...) @printf(ptr noundef @.str.71, ptr noundef %813, ptr noundef %814)
  %816 = load i32, ptr %11, align 4, !tbaa !5
  %817 = icmp ne i32 %816, 0
  br i1 %817, label %818, label %821

818:                                              ; preds = %812
  %819 = call i32 (ptr, ...) @printf(ptr noundef @.str.72)
  call void @printBold(ptr noundef @.str.73)
  %820 = call i32 (ptr, ...) @printf(ptr noundef @.str.74)
  br label %821

821:                                              ; preds = %818, %812
  %822 = call ptr @getenv(ptr noundef @.str.75) #10
  store ptr %822, ptr %26, align 8, !tbaa !9
  %823 = load ptr, ptr %26, align 8, !tbaa !9
  %824 = icmp ne ptr %823, null
  br i1 %824, label %825, label %828

825:                                              ; preds = %821
  %826 = load ptr, ptr %26, align 8, !tbaa !9
  %827 = call noalias ptr @strdup(ptr noundef %826) #10
  store ptr %827, ptr %26, align 8, !tbaa !9
  br label %846

828:                                              ; preds = %821
  %829 = call ptr @find_home_dir(i32 noundef 0)
  store ptr %829, ptr %25, align 8, !tbaa !9
  %830 = icmp ne ptr %829, null
  br i1 %830, label %831, label %845

831:                                              ; preds = %828
  %832 = load ptr, ptr %25, align 8, !tbaa !9
  %833 = call i32 @strlen30(ptr noundef %832)
  %834 = add nsw i32 %833, 20
  store i32 %834, ptr %27, align 4, !tbaa !5
  %835 = load i32, ptr %27, align 4, !tbaa !5
  %836 = sext i32 %835 to i64
  %837 = call noalias ptr @malloc(i64 noundef %836) #14
  store ptr %837, ptr %26, align 8, !tbaa !9
  %838 = icmp ne ptr %837, null
  br i1 %838, label %839, label %844

839:                                              ; preds = %831
  %840 = load i32, ptr %27, align 4, !tbaa !5
  %841 = load ptr, ptr %26, align 8, !tbaa !9
  %842 = load ptr, ptr %25, align 8, !tbaa !9
  %843 = call ptr (i32, ptr, ptr, ...) @sqlite3_snprintf(i32 noundef %840, ptr noundef %841, ptr noundef @.str.76, ptr noundef %842)
  br label %844

844:                                              ; preds = %839, %831
  br label %845

845:                                              ; preds = %844, %828
  br label %846

846:                                              ; preds = %845, %825
  %847 = load ptr, ptr %26, align 8, !tbaa !9
  %848 = icmp ne ptr %847, null
  br i1 %848, label %849, label %850

849:                                              ; preds = %846
  br label %850

850:                                              ; preds = %849, %846
  %851 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 15
  store ptr null, ptr %851, align 8, !tbaa !31
  %852 = call i32 @process_input(ptr noundef %7)
  store i32 %852, ptr %10, align 4, !tbaa !5
  %853 = load ptr, ptr %26, align 8, !tbaa !9
  %854 = icmp ne ptr %853, null
  br i1 %854, label %855, label %857

855:                                              ; preds = %850
  %856 = load ptr, ptr %26, align 8, !tbaa !9
  call void @free(ptr noundef %856) #10
  br label %857

857:                                              ; preds = %855, %850
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #10
  br label %862

858:                                              ; preds = %809
  %859 = load ptr, ptr @stdin, align 8, !tbaa !9
  %860 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 15
  store ptr %859, ptr %860, align 8, !tbaa !31
  %861 = call i32 @process_input(ptr noundef %7)
  store i32 %861, ptr %10, align 4, !tbaa !5
  br label %862

862:                                              ; preds = %858, %857
  br label %863

863:                                              ; preds = %862, %807
  call void @set_table_name(ptr noundef %7, ptr noundef null)
  %864 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 0
  %865 = load ptr, ptr %864, align 8, !tbaa !32
  %866 = icmp ne ptr %865, null
  br i1 %866, label %867, label %870

867:                                              ; preds = %863
  %868 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 0
  %869 = load ptr, ptr %868, align 8, !tbaa !32
  call void @close_db(ptr noundef %869)
  br label %870

870:                                              ; preds = %867, %863
  %871 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 43
  %872 = load ptr, ptr %871, align 8, !tbaa !33
  call void @sqlite3_free(ptr noundef %872)
  %873 = call ptr @find_home_dir(i32 noundef 1)
  call void @output_reset(ptr noundef %7)
  %874 = getelementptr inbounds %struct.ShellState, ptr %7, i32 0, i32 8
  store i8 0, ptr %874, align 1, !tbaa !34
  call void @clearTempFile(ptr noundef %7)
  call void @llvm.memset.p0.i64(ptr align 8 %7, i8 0, i64 5360, i1 false)
  %875 = load i32, ptr %10, align 4, !tbaa !5
  store i32 %875, ptr %3, align 4
  store i32 1, ptr %24, align 4
  br label %876

876:                                              ; preds = %870, %792, %787, %766, %727
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #10
  call void @llvm.lifetime.end.p0(i64 5360, ptr %7) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #10
  %877 = load i32, ptr %3, align 4
  ret i32 %877
}

; Function Attrs: nounwind
declare i32 @setvbuf(ptr noundef, ptr noundef, i32 noundef, i64 noundef) #5

; Function Attrs: nounwind
declare i32 @isatty(i32 noundef) #5

; Function Attrs: nounwind
declare ptr @getenv(ptr noundef) #5

; Function Attrs: nounwind
declare i32 @getpid() #5

declare i32 @fgetc(ptr noundef) #2

; Function Attrs: nounwind
declare i32 @raise(i32 noundef) #5

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

declare ptr @sqlite3_sourceid() #2

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

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

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

; Function Attrs: nounwind
declare ptr @signal(i32 noundef, ptr noundef) #5

; Function Attrs: nounwind uwtable
declare hidden void @interrupt_handler(i32 noundef) #1

; Function Attrs: nounwind uwtable
declare hidden void @verify_uninitialized() #1

; Function Attrs: nounwind allocsize(1)
declare ptr @realloc(ptr noundef, i64 noundef) #8

; Function Attrs: nounwind uwtable
declare hidden void @shell_out_of_memory() #1

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

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

; Function Attrs: nounwind uwtable
declare hidden i64 @integerValue(ptr noundef) #1

; Function Attrs: nounwind allocsize(0)
declare noalias ptr @malloc(i64 noundef) #9

declare i32 @sqlite3_initialize() #2

; Function Attrs: nounwind
declare i32 @access(ptr noundef, i32 noundef) #5

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

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

declare ptr @sqlite3_snprintf(i32 noundef, ptr noundef, ptr noundef, ...) #2

declare i32 @printf(ptr noundef, ...) #2

declare ptr @sqlite3_libversion() #2

; Function Attrs: nounwind uwtable
declare hidden void @usage(i32 noundef) #1

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

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

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

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

; Function Attrs: nounwind
declare noalias ptr @strdup(ptr noundef) #5

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

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

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

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

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

; Function Attrs: nounwind uwtable
declare hidden void @clearTempFile(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 = { "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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { 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 = { 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 = { 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 #8 = { nounwind allocsize(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 #9 = { nounwind allocsize(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 #10 = { nounwind }
attributes #11 = { nounwind willreturn memory(read) }
attributes #12 = { noreturn nounwind }
attributes #13 = { nounwind allocsize(1) }
attributes #14 = { nounwind allocsize(0) }

!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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !10, i64 5168}
!13 = !{!"ShellState", !10, i64 0, !7, i64 8, !7, i64 9, !7, i64 10, !7, i64 11, !7, i64 12, !7, i64 13, !7, i64 14, !7, i64 15, !7, i64 16, !7, i64 17, !6, i64 20, !6, i64 24, !6, i64 28, !6, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !6, i64 64, !6, i64 68, !6, i64 72, !6, i64 76, !6, i64 80, !6, i64 84, !6, i64 88, !6, i64 92, !6, i64 96, !6, i64 100, !6, i64 104, !6, i64 108, !14, i64 112, !10, i64 120, !10, i64 128, !7, i64 136, !7, i64 166, !7, i64 186, !7, i64 206, !7, i64 226, !7, i64 248, !7, i64 648, !7, i64 1048, !7, i64 1068, !10, i64 5168, !10, i64 5176, !10, i64 5184, !10, i64 5192, !10, i64 5200, !10, i64 5208, !6, i64 5216, !6, i64 5220, !15, i64 5224, !16, i64 5344}
!14 = !{!"long long", !7, i64 0}
!15 = !{!"EQPGraph", !10, i64 0, !10, i64 8, !7, i64 16}
!16 = !{!"ExpertInfo", !10, i64 0, !6, i64 8}
!17 = !{!13, !6, i64 108}
!18 = !{!14, !14, i64 0}
!19 = !{!13, !7, i64 14}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.mustprogress"}
!22 = !{!13, !10, i64 48}
!23 = !{!13, !6, i64 68}
!24 = !{!13, !6, i64 88}
!25 = !{!13, !7, i64 9}
!26 = !{!13, !7, i64 12}
!27 = !{!13, !7, i64 13}
!28 = !{!13, !6, i64 76}
!29 = distinct !{!29, !21}
!30 = distinct !{!30, !21}
!31 = !{!13, !10, i64 40}
!32 = !{!13, !10, i64 0}
!33 = !{!13, !10, i64 5176}
!34 = !{!13, !7, i64 15}


; 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.ShellState = type { ptr, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, ptr, ptr, [30 x i8], [20 x i8], [20 x i8], [20 x i8], [20 x i8], [100 x i32], [100 x i32], [20 x i8], [4096 x i8], ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, %struct.EQPGraph, %struct.ExpertInfo }
%struct.EQPGraph = type { ptr, ptr, [100 x i8] }
%struct.ExpertInfo = type { ptr, i32 }

@.str.11 = external hidden unnamed_addr constant [9 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@stdin_is_interactive = external hidden local_unnamed_addr global i32, align 4
@stdout_is_console = external hidden local_unnamed_addr global i32, align 4
@.str.21 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [62 x i8], align 1
@stdin = external local_unnamed_addr global ptr, align 8
@.str.23 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [64 x i8], align 1
@__PRETTY_FUNCTION__.main = external hidden unnamed_addr constant [23 x i8], align 1
@Argv0 = external hidden local_unnamed_addr global ptr, align 8
@.str.27 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [19 x i8], align 1
@stdout = external local_unnamed_addr global ptr, align 8
@.str.42 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [6 x i8], align 1
@bail_on_error = external hidden local_unnamed_addr global i32, align 4
@.str.62 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [19 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 i32 @sqlite3_appendvfs_init(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

declare ptr @sqlite3_vfs_find(ptr noundef) local_unnamed_addr #2

declare i32 @sqlite3_vfs_register(ptr noundef, i32 noundef) local_unnamed_addr #2

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

declare i32 @sqlite3_config(i32 noundef, ...) local_unnamed_addr #2

declare void @sqlite3_free(ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr noundef %1) local_unnamed_addr #1 {
  %3 = alloca ptr, align 8
  %4 = alloca %struct.ShellState, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #13
  store ptr null, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 5360, ptr nonnull %4) #13
  %5 = load ptr, ptr @stderr, align 8, !tbaa !5
  %6 = tail call i32 @setvbuf(ptr noundef %5, ptr noundef null, i32 noundef 2, i64 noundef 0) #13
  %7 = tail call i32 @isatty(i32 noundef 0) #13
  store i32 %7, ptr @stdin_is_interactive, align 4, !tbaa !9
  %8 = tail call i32 @isatty(i32 noundef 1) #13
  store i32 %8, ptr @stdout_is_console, align 4, !tbaa !9
  %9 = tail call ptr @getenv(ptr noundef nonnull @.str.21) #13
  %.not = icmp eq ptr %9, null
  br i1 %.not, label %22, label %10

10:                                               ; preds = %2
  %11 = tail call i32 @isatty(i32 noundef 0) #13
  %.not244 = icmp eq i32 %11, 0
  br i1 %.not244, label %20, label %12

12:                                               ; preds = %10
  %13 = tail call i32 @isatty(i32 noundef 2) #13
  %.not245 = icmp eq i32 %13, 0
  br i1 %.not245, label %20, label %14

14:                                               ; preds = %12
  %15 = load ptr, ptr @stderr, align 8, !tbaa !5
  %16 = tail call i32 @getpid() #13
  %17 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %15, ptr noundef nonnull @.str.22, i32 noundef %16) #14
  %18 = load ptr, ptr @stdin, align 8, !tbaa !5
  %19 = tail call i32 @fgetc(ptr noundef %18)
  br label %22

20:                                               ; preds = %12, %10
  %21 = tail call i32 @raise(i32 noundef 5) #13
  br label %22

22:                                               ; preds = %14, %20, %2
  %23 = tail call ptr @sqlite3_sourceid() #13
  %24 = tail call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %23, ptr noundef nonnull dereferenceable(1) @.str.23, i64 noundef 60) #15
  %.not246 = icmp eq i32 %24, 0
  br i1 %.not246, label %29, label %25

25:                                               ; preds = %22
  %26 = load ptr, ptr @stderr, align 8, !tbaa !5
  %27 = tail call ptr @sqlite3_sourceid() #13
  %28 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %26, ptr noundef nonnull @.str.24, ptr noundef %27, ptr noundef nonnull @.str.23) #14
  tail call void @exit(i32 noundef 1) #16
  unreachable

29:                                               ; preds = %22
  call void @main_init(ptr noundef nonnull %4)
  %30 = icmp sgt i32 %0, 0
  %31 = icmp ne ptr %1, null
  %or.cond = and i1 %30, %31
  br i1 %or.cond, label %32, label %34

32:                                               ; preds = %29
  %33 = load ptr, ptr %1, align 8, !tbaa !5
  %.not247 = icmp eq ptr %33, null
  br i1 %.not247, label %34, label %35

34:                                               ; preds = %32, %29
  call void @__assert_fail(ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.26, i32 noundef 16553, ptr noundef nonnull @__PRETTY_FUNCTION__.main) #16
  unreachable

35:                                               ; preds = %32
  store ptr %33, ptr @Argv0, align 8, !tbaa !5
  %36 = call ptr @signal(i32 noundef 2, ptr noundef nonnull @interrupt_handler) #13
  call void @verify_uninitialized()
  %37 = icmp ugt i32 %0, 1
  br i1 %37, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %35
  %38 = getelementptr inbounds i8, ptr %4, i64 5168
  %39 = getelementptr inbounds i8, ptr %4, i64 14
  %40 = getelementptr inbounds i8, ptr %4, i64 108
  br label %41

41:                                               ; preds = %.lr.ph, %162
  %.0201318 = phi ptr [ null, %.lr.ph ], [ %.1202, %162 ]
  %.0205317 = phi i32 [ 1, %.lr.ph ], [ %163, %162 ]
  %.0215316 = phi i32 [ 1, %.lr.ph ], [ %.1216, %162 ]
  %.0217315 = phi i32 [ 0, %.lr.ph ], [ %.1218, %162 ]
  %.0220314 = phi ptr [ null, %.lr.ph ], [ %.1221, %162 ]
  %.0222313 = phi ptr [ null, %.lr.ph ], [ %.1223, %162 ]
  %42 = sext i32 %.0205317 to i64
  %43 = getelementptr inbounds ptr, ptr %1, i64 %42
  %44 = load ptr, ptr %43, align 8, !tbaa !5
  %45 = load i8, ptr %44, align 1, !tbaa !11
  %.not268 = icmp eq i8 %45, 45
  br i1 %.not268, label %59, label %46

46:                                               ; preds = %41
  %47 = load ptr, ptr %38, align 8, !tbaa !12
  %48 = icmp eq ptr %47, null
  br i1 %48, label %.sink.split, label %49

49:                                               ; preds = %46
  %50 = add nsw i32 %.0217315, 1
  %51 = sext i32 %50 to i64
  %52 = shl nsw i64 %51, 3
  %53 = call ptr @realloc(ptr noundef %.0222313, i64 noundef %52) #17
  %54 = icmp eq ptr %53, null
  br i1 %54, label %55, label %56

55:                                               ; preds = %49
  call void @shell_out_of_memory()
  br label %56

56:                                               ; preds = %55, %49
  %57 = sext i32 %.0217315 to i64
  %58 = getelementptr inbounds ptr, ptr %53, i64 %57
  br label %.sink.split

.sink.split:                                      ; preds = %46, %56
  %.sink = phi ptr [ %58, %56 ], [ %38, %46 ]
  %.1223.ph = phi ptr [ %53, %56 ], [ %.0222313, %46 ]
  %.1218.ph = phi i32 [ %50, %56 ], [ %.0217315, %46 ]
  %.1216.ph = phi i32 [ 0, %56 ], [ %.0215316, %46 ]
  store ptr %44, ptr %.sink, align 8, !tbaa !5
  br label %59

59:                                               ; preds = %.sink.split, %41
  %.1223 = phi ptr [ %.0222313, %41 ], [ %.1223.ph, %.sink.split ]
  %.1218 = phi i32 [ %.0217315, %41 ], [ %.1218.ph, %.sink.split ]
  %.1216 = phi i32 [ %.0215316, %41 ], [ %.1216.ph, %.sink.split ]
  %60 = getelementptr inbounds i8, ptr %44, i64 1
  %61 = load i8, ptr %60, align 1, !tbaa !11
  %62 = icmp eq i8 %61, 45
  %spec.select = select i1 %62, ptr %60, ptr %44
  %63 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select, ptr noundef nonnull dereferenceable(1) @.str.27) #15
  %64 = icmp eq i32 %63, 0
  br i1 %64, label %74, label %65

65:                                               ; preds = %59
  %66 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select, ptr noundef nonnull dereferenceable(1) @.str.28) #15
  %67 = icmp eq i32 %66, 0
  br i1 %67, label %74, label %68

68:                                               ; preds = %65
  %69 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select, ptr noundef nonnull dereferenceable(1) @.str.29) #15
  %70 = icmp eq i32 %69, 0
  br i1 %70, label %74, label %71

71:                                               ; preds = %68
  %72 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select, ptr noundef nonnull dereferenceable(1) @.str.30) #15
  %73 = icmp eq i32 %72, 0
  br i1 %73, label %74, label %77

74:                                               ; preds = %71, %68, %65, %59
  %75 = add nsw i32 %.0205317, 1
  %76 = call ptr @cmdline_option_value(i32 noundef %0, ptr noundef nonnull %1, i32 noundef %75)
  br label %162

77:                                               ; preds = %71
  %78 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select, ptr noundef nonnull dereferenceable(1) @.str.31) #15
  %79 = icmp eq i32 %78, 0
  br i1 %79, label %80, label %83

80:                                               ; preds = %77
  %81 = add nsw i32 %.0205317, 1
  %82 = call ptr @cmdline_option_value(i32 noundef %0, ptr noundef nonnull %1, i32 noundef %81)
  br label %162

83:                                               ; preds = %77
  %84 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select, ptr noundef nonnull dereferenceable(1) @.str.32) #15
  %85 = icmp eq i32 %84, 0
  br i1 %85, label %86, label %87

86:                                               ; preds = %83
  store i32 0, ptr @stdin_is_interactive, align 4, !tbaa !9
  br label %162

87:                                               ; preds = %83
  %88 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select, ptr noundef nonnull dereferenceable(1) @.str.33) #15
  %89 = icmp eq i32 %88, 0
  br i1 %89, label %90, label %93

90:                                               ; preds = %87
  %91 = add nsw i32 %.0205317, 1
  %92 = call ptr @cmdline_option_value(i32 noundef %0, ptr noundef nonnull %1, i32 noundef %91)
  br label %162

93:                                               ; preds = %87
  %94 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select, ptr noundef nonnull dereferenceable(1) @.str.34) #15
  %95 = icmp eq i32 %94, 0
  br i1 %95, label %96, label %116

96:                                               ; preds = %93
  %97 = add nsw i32 %.0205317, 1
  %98 = call ptr @cmdline_option_value(i32 noundef %0, ptr noundef nonnull %1, i32 noundef %97)
  %99 = call i64 @integerValue(ptr noundef %98)
  %100 = trunc i64 %99 to i32
  %spec.store.select = call i32 @llvm.smin.i32(i32 %100, i32 70000)
  %spec.store.select7 = call i32 @llvm.smax.i32(i32 %spec.store.select, i32 0)
  %101 = add nsw i32 %.0205317, 2
  %102 = call ptr @cmdline_option_value(i32 noundef %0, ptr noundef nonnull %1, i32 noundef %101)
  %103 = call i64 @integerValue(ptr noundef %102)
  %104 = trunc i64 %103 to i32
  %105 = icmp sgt i32 %104, 0
  %106 = icmp sgt i32 %100, 0
  %or.cond3 = select i1 %105, i1 %106, i1 false
  br i1 %or.cond3, label %107, label %111

107:                                              ; preds = %96
  %108 = mul nuw nsw i32 %spec.store.select7, %104
  %109 = zext nneg i32 %108 to i64
  %110 = call noalias ptr @malloc(i64 noundef %109) #18
  br label %111

111:                                              ; preds = %96, %107
  %112 = phi ptr [ %110, %107 ], [ null, %96 ]
  %113 = call i32 (i32, ...) @sqlite3_config(i32 noundef 7, ptr noundef %112, i32 noundef %spec.store.select7, i32 noundef %104) #13
  %114 = load i32, ptr %40, align 4, !tbaa !17
  %115 = or i32 %114, 1
  store i32 %115, ptr %40, align 4, !tbaa !17
  br label %162

116:                                              ; preds = %93
  %117 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select, ptr noundef nonnull dereferenceable(1) @.str.35) #15
  %118 = icmp eq i32 %117, 0
  br i1 %118, label %119, label %134

119:                                              ; preds = %116
  %120 = add nsw i32 %.0205317, 1
  %121 = call ptr @cmdline_option_value(i32 noundef %0, ptr noundef nonnull %1, i32 noundef %120)
  %122 = call i64 @integerValue(ptr noundef %121)
  %123 = trunc i64 %122 to i32
  %spec.store.select4 = call i32 @llvm.smax.i32(i32 %123, i32 0)
  %124 = add nsw i32 %.0205317, 2
  %125 = call ptr @cmdline_option_value(i32 noundef %0, ptr noundef nonnull %1, i32 noundef %124)
  %126 = call i64 @integerValue(ptr noundef %125)
  %127 = trunc i64 %126 to i32
  %spec.store.select8 = call i32 @llvm.smax.i32(i32 %127, i32 0)
  %128 = call i32 (i32, ...) @sqlite3_config(i32 noundef 13, i32 noundef %spec.store.select4, i32 noundef %spec.store.select8) #13
  %129 = mul nuw nsw i32 %spec.store.select8, %spec.store.select4
  %130 = icmp eq i32 %129, 0
  br i1 %130, label %131, label %162

131:                                              ; preds = %119
  %132 = load i32, ptr %40, align 4, !tbaa !17
  %133 = and i32 %132, -3
  store i32 %133, ptr %40, align 4, !tbaa !17
  br label %162

134:                                              ; preds = %116
  %135 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select, ptr noundef nonnull dereferenceable(1) @.str.36) #15
  %136 = icmp eq i32 %135, 0
  br i1 %136, label %137, label %142

137:                                              ; preds = %134
  %138 = add nsw i32 %.0205317, 1
  %139 = call ptr @cmdline_option_value(i32 noundef %0, ptr noundef nonnull %1, i32 noundef %138)
  %140 = call i64 @integerValue(ptr noundef %139)
  %141 = call i32 (i32, ...) @sqlite3_config(i32 noundef 22, i64 noundef %140, i64 noundef %140) #13
  br label %162

142:                                              ; preds = %134
  %143 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select, ptr noundef nonnull dereferenceable(1) @.str.37) #15
  %144 = icmp eq i32 %143, 0
  br i1 %144, label %145, label %148

145:                                              ; preds = %142
  %146 = add nsw i32 %.0205317, 1
  %147 = call ptr @cmdline_option_value(i32 noundef %0, ptr noundef nonnull %1, i32 noundef %146)
  br label %162

148:                                              ; preds = %142
  %149 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select, ptr noundef nonnull dereferenceable(1) @.str.38) #15
  %150 = icmp eq i32 %149, 0
  br i1 %150, label %151, label %152

151:                                              ; preds = %148
  store i8 2, ptr %39, align 2, !tbaa !18
  br label %162

152:                                              ; preds = %148
  %153 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select, ptr noundef nonnull dereferenceable(1) @.str.39) #15
  %154 = icmp eq i32 %153, 0
  br i1 %154, label %155, label %156

155:                                              ; preds = %152
  store i8 4, ptr %39, align 2, !tbaa !18
  br label %162

156:                                              ; preds = %152
  %157 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select, ptr noundef nonnull dereferenceable(1) @.str.40) #15
  %158 = icmp eq i32 %157, 0
  br i1 %158, label %159, label %162

159:                                              ; preds = %156
  %160 = load ptr, ptr @stderr, align 8, !tbaa !5
  %161 = call i32 @sqlite3MemTraceActivate(ptr noundef %160)
  br label %162

162:                                              ; preds = %119, %131, %80, %90, %145, %155, %159, %156, %151, %137, %111, %86, %74
  %.1221 = phi ptr [ %.0220314, %74 ], [ %.0220314, %80 ], [ %.0220314, %86 ], [ %.0220314, %90 ], [ %.0220314, %111 ], [ %.0220314, %137 ], [ %147, %145 ], [ %.0220314, %151 ], [ %.0220314, %155 ], [ %.0220314, %159 ], [ %.0220314, %156 ], [ %.0220314, %131 ], [ %.0220314, %119 ]
  %.1206 = phi i32 [ %75, %74 ], [ %81, %80 ], [ %.0205317, %86 ], [ %91, %90 ], [ %101, %111 ], [ %138, %137 ], [ %146, %145 ], [ %.0205317, %151 ], [ %.0205317, %155 ], [ %.0205317, %159 ], [ %.0205317, %156 ], [ %124, %131 ], [ %124, %119 ]
  %.1202 = phi ptr [ %.0201318, %74 ], [ %82, %80 ], [ %.0201318, %86 ], [ %.0201318, %90 ], [ %.0201318, %111 ], [ %.0201318, %137 ], [ %.0201318, %145 ], [ %.0201318, %151 ], [ %.0201318, %155 ], [ %.0201318, %159 ], [ %.0201318, %156 ], [ %.0201318, %131 ], [ %.0201318, %119 ]
  %163 = add nsw i32 %.1206, 1
  %164 = icmp slt i32 %163, %0
  br i1 %164, label %41, label %._crit_edge, !llvm.loop !19

._crit_edge:                                      ; preds = %162, %35
  %.0222.lcssa = phi ptr [ null, %35 ], [ %.1223, %162 ]
  %.0220.lcssa = phi ptr [ null, %35 ], [ %.1221, %162 ]
  %.0217.lcssa = phi i32 [ 0, %35 ], [ %.1218, %162 ]
  %.0215.lcssa = phi i32 [ 1, %35 ], [ %.1216, %162 ]
  %.0205.lcssa = phi i32 [ 1, %35 ], [ %163, %162 ]
  %.0201.lcssa = phi ptr [ null, %35 ], [ %.1202, %162 ]
  call void @verify_uninitialized()
  %165 = call i32 @sqlite3_initialize() #13
  %.not248 = icmp eq ptr %.0220.lcssa, null
  br i1 %.not248, label %176, label %166

166:                                              ; preds = %._crit_edge
  %167 = call ptr @sqlite3_vfs_find(ptr noundef nonnull %.0220.lcssa) #13
  %.not249 = icmp eq ptr %167, null
  br i1 %.not249, label %170, label %168

168:                                              ; preds = %166
  %169 = call i32 @sqlite3_vfs_register(ptr noundef nonnull %167, i32 noundef 1) #13
  br label %176

170:                                              ; preds = %166
  %171 = load ptr, ptr @stderr, align 8, !tbaa !5
  %172 = zext nneg i32 %.0205.lcssa to i64
  %173 = getelementptr inbounds ptr, ptr %1, i64 %172
  %174 = load ptr, ptr %173, align 8, !tbaa !5
  %175 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %171, ptr noundef nonnull @.str.41, ptr noundef %174) #14
  call void @exit(i32 noundef 1) #16
  unreachable

176:                                              ; preds = %168, %._crit_edge
  %177 = getelementptr inbounds i8, ptr %4, i64 5168
  %178 = load ptr, ptr %177, align 8, !tbaa !12
  %179 = icmp eq ptr %178, null
  br i1 %179, label %180, label %183

180:                                              ; preds = %176
  store ptr @.str.11, ptr %177, align 8, !tbaa !12
  %181 = icmp eq i32 %0, 1
  %182 = zext i1 %181 to i32
  br label %183

183:                                              ; preds = %180, %176
  %.0214 = phi i32 [ %182, %180 ], [ 0, %176 ]
  %184 = load ptr, ptr @stdout, align 8, !tbaa !5
  %185 = getelementptr inbounds i8, ptr %4, i64 48
  store ptr %184, ptr %185, align 8, !tbaa !21
  %186 = call i32 @sqlite3_appendvfs_init(ptr noundef null, ptr noundef null, ptr noundef null)
  %187 = load ptr, ptr %177, align 8, !tbaa !12
  %188 = call i32 @access(ptr noundef %187, i32 noundef 0) #13
  %189 = icmp eq i32 %188, 0
  br i1 %189, label %190, label %191

190:                                              ; preds = %183
  call void @open_db(ptr noundef nonnull %4, i32 noundef 0)
  br label %191

191:                                              ; preds = %190, %183
  call void @process_sqliterc(ptr noundef nonnull %4, ptr noundef %.0201.lcssa)
  br i1 %37, label %.lr.ph327, label %._crit_edge328

.lr.ph327:                                        ; preds = %191
  %192 = add nsw i32 %0, -1
  %193 = getelementptr inbounds i8, ptr %4, i64 108
  %194 = getelementptr inbounds i8, ptr %4, i64 13
  %195 = getelementptr inbounds i8, ptr %4, i64 12
  %196 = getelementptr inbounds i8, ptr %4, i64 9
  %197 = getelementptr inbounds i8, ptr %4, i64 88
  %198 = getelementptr inbounds i8, ptr %4, i64 1048
  %199 = getelementptr inbounds i8, ptr %4, i64 186
  %200 = getelementptr inbounds i8, ptr %4, i64 166
  %201 = getelementptr inbounds i8, ptr %4, i64 68
  %202 = getelementptr inbounds i8, ptr %4, i64 14
  %203 = load i16, ptr @.str.48, align 1
  %204 = getelementptr inbounds i8, ptr %4, i64 76
  br label %205

205:                                              ; preds = %.lr.ph327, %406
  %.2207325 = phi i32 [ 1, %.lr.ph327 ], [ %407, %406 ]
  %.0208324 = phi i32 [ 0, %.lr.ph327 ], [ %.2210.ph, %406 ]
  %206 = sext i32 %.2207325 to i64
  %207 = getelementptr inbounds ptr, ptr %1, i64 %206
  %208 = load ptr, ptr %207, align 8, !tbaa !5
  %209 = load i8, ptr %208, align 1, !tbaa !11
  %.not250 = icmp eq i8 %209, 45
  br i1 %.not250, label %210, label %406

210:                                              ; preds = %205
  %211 = getelementptr inbounds i8, ptr %208, i64 1
  %212 = load i8, ptr %211, align 1, !tbaa !11
  %213 = icmp eq i8 %212, 45
  %spec.select269 = select i1 %213, ptr %211, ptr %208
  %214 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.31) #15
  %215 = icmp eq i32 %214, 0
  br i1 %215, label %216, label %218

216:                                              ; preds = %210
  %217 = add nsw i32 %.2207325, 1
  br label %404

218:                                              ; preds = %210
  %219 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.42) #15
  %220 = icmp eq i32 %219, 0
  br i1 %220, label %221, label %222

221:                                              ; preds = %218
  store i32 4, ptr %201, align 4, !tbaa !22
  br label %404

222:                                              ; preds = %218
  %223 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.43) #15
  %224 = icmp eq i32 %223, 0
  br i1 %224, label %225, label %226

225:                                              ; preds = %222
  store i32 2, ptr %201, align 4, !tbaa !22
  br label %404

226:                                              ; preds = %222
  %227 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.44) #15
  %228 = icmp eq i32 %227, 0
  br i1 %228, label %229, label %230

229:                                              ; preds = %226
  store i32 6, ptr %201, align 4, !tbaa !22
  br label %404

230:                                              ; preds = %226
  %231 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.45) #15
  %232 = icmp eq i32 %231, 0
  br i1 %232, label %233, label %234

233:                                              ; preds = %230
  store i32 0, ptr %201, align 4, !tbaa !22
  br label %404

234:                                              ; preds = %230
  %235 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.46) #15
  %236 = icmp eq i32 %235, 0
  br i1 %236, label %237, label %238

237:                                              ; preds = %234
  store i32 1, ptr %201, align 4, !tbaa !22
  br label %404

238:                                              ; preds = %234
  %239 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.47) #15
  %240 = icmp eq i32 %239, 0
  br i1 %240, label %241, label %242

241:                                              ; preds = %238
  store i32 8, ptr %201, align 4, !tbaa !22
  store i16 %203, ptr %200, align 2
  br label %404

242:                                              ; preds = %238
  %243 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.38) #15
  %244 = icmp eq i32 %243, 0
  br i1 %244, label %245, label %246

245:                                              ; preds = %242
  store i8 2, ptr %202, align 2, !tbaa !18
  br label %404

246:                                              ; preds = %242
  %247 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.39) #15
  %248 = icmp eq i32 %247, 0
  br i1 %248, label %249, label %250

249:                                              ; preds = %246
  store i8 4, ptr %202, align 2, !tbaa !18
  br label %404

250:                                              ; preds = %246
  %251 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.49) #15
  %252 = icmp eq i32 %251, 0
  br i1 %252, label %253, label %256

253:                                              ; preds = %250
  store i32 10, ptr %201, align 4, !tbaa !22
  %254 = call ptr (i32, ptr, ptr, ...) @sqlite3_snprintf(i32 noundef 20, ptr noundef nonnull %200, ptr noundef nonnull @.str.50) #13
  %255 = call ptr (i32, ptr, ptr, ...) @sqlite3_snprintf(i32 noundef 20, ptr noundef nonnull %199, ptr noundef nonnull @.str.51) #13
  br label %404

256:                                              ; preds = %250
  %257 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.27) #15
  %258 = icmp eq i32 %257, 0
  br i1 %258, label %259, label %263

259:                                              ; preds = %256
  %260 = add nsw i32 %.2207325, 1
  %261 = call ptr @cmdline_option_value(i32 noundef %0, ptr noundef nonnull %1, i32 noundef %260)
  %262 = call ptr (i32, ptr, ptr, ...) @sqlite3_snprintf(i32 noundef 20, ptr noundef nonnull %200, ptr noundef nonnull @.str.52, ptr noundef %261) #13
  br label %404

263:                                              ; preds = %256
  %264 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.29) #15
  %265 = icmp eq i32 %264, 0
  br i1 %265, label %266, label %270

266:                                              ; preds = %263
  %267 = add nsw i32 %.2207325, 1
  %268 = call ptr @cmdline_option_value(i32 noundef %0, ptr noundef nonnull %1, i32 noundef %267)
  %269 = call ptr (i32, ptr, ptr, ...) @sqlite3_snprintf(i32 noundef 20, ptr noundef nonnull %199, ptr noundef nonnull @.str.52, ptr noundef %268) #13
  br label %404

270:                                              ; preds = %263
  %271 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.28) #15
  %272 = icmp eq i32 %271, 0
  br i1 %272, label %273, label %277

273:                                              ; preds = %270
  %274 = add nsw i32 %.2207325, 1
  %275 = call ptr @cmdline_option_value(i32 noundef %0, ptr noundef nonnull %1, i32 noundef %274)
  %276 = call ptr (i32, ptr, ptr, ...) @sqlite3_snprintf(i32 noundef 20, ptr noundef nonnull %198, ptr noundef nonnull @.str.52, ptr noundef %275) #13
  br label %404

277:                                              ; preds = %270
  %278 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.53) #15
  %279 = icmp eq i32 %278, 0
  br i1 %279, label %280, label %281

280:                                              ; preds = %277
  store i32 1, ptr %197, align 8, !tbaa !23
  br label %404

281:                                              ; preds = %277
  %282 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.54) #15
  %283 = icmp eq i32 %282, 0
  br i1 %283, label %284, label %285

284:                                              ; preds = %281
  store i32 0, ptr %197, align 8, !tbaa !23
  br label %404

285:                                              ; preds = %281
  %286 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.55) #15
  %287 = icmp eq i32 %286, 0
  br i1 %287, label %288, label %291

288:                                              ; preds = %285
  %289 = load i32, ptr %193, align 4, !tbaa !17
  %290 = or i32 %289, 64
  store i32 %290, ptr %193, align 4, !tbaa !17
  br label %404

291:                                              ; preds = %285
  %292 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.56) #15
  %293 = icmp eq i32 %292, 0
  br i1 %293, label %294, label %295

294:                                              ; preds = %291
  store i8 1, ptr %196, align 1, !tbaa !24
  br label %404

295:                                              ; preds = %291
  %296 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.57) #15
  %297 = icmp eq i32 %296, 0
  br i1 %297, label %298, label %299

298:                                              ; preds = %295
  store i8 3, ptr %196, align 1, !tbaa !24
  br label %404

299:                                              ; preds = %295
  %300 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.58) #15
  %301 = icmp eq i32 %300, 0
  br i1 %301, label %302, label %303

302:                                              ; preds = %299
  store i8 1, ptr %195, align 4, !tbaa !25
  br label %404

303:                                              ; preds = %299
  %304 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.59) #15
  %305 = icmp eq i32 %304, 0
  br i1 %305, label %306, label %307

306:                                              ; preds = %303
  store i8 1, ptr %194, align 1, !tbaa !26
  br label %404

307:                                              ; preds = %303
  %308 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.60) #15
  %309 = icmp eq i32 %308, 0
  br i1 %309, label %310, label %313

310:                                              ; preds = %307
  %311 = load i32, ptr %193, align 4, !tbaa !17
  %312 = or i32 %311, 4
  store i32 %312, ptr %193, align 4, !tbaa !17
  br label %404

313:                                              ; preds = %307
  %314 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.61) #15
  %315 = icmp eq i32 %314, 0
  br i1 %315, label %316, label %317

316:                                              ; preds = %313
  store i32 1, ptr @bail_on_error, align 4, !tbaa !9
  br label %404

317:                                              ; preds = %313
  %318 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.62) #15
  %319 = icmp eq i32 %318, 0
  br i1 %319, label %320, label %324

320:                                              ; preds = %317
  %321 = call ptr @sqlite3_libversion() #13
  %322 = call ptr @sqlite3_sourceid() #13
  %323 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.63, ptr noundef %321, ptr noundef %322)
  br label %.thread

324:                                              ; preds = %317
  %325 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.64) #15
  %326 = icmp eq i32 %325, 0
  br i1 %326, label %327, label %328

327:                                              ; preds = %324
  store i32 1, ptr @stdin_is_interactive, align 4, !tbaa !9
  br label %404

328:                                              ; preds = %324
  %329 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.32) #15
  %330 = icmp eq i32 %329, 0
  br i1 %330, label %331, label %332

331:                                              ; preds = %328
  store i32 0, ptr @stdin_is_interactive, align 4, !tbaa !9
  br label %404

332:                                              ; preds = %328
  %333 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.33) #15
  %334 = icmp eq i32 %333, 0
  br i1 %334, label %335, label %337

335:                                              ; preds = %332
  %336 = add nsw i32 %.2207325, 1
  br label %404

337:                                              ; preds = %332
  %338 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.34) #15
  %339 = icmp eq i32 %338, 0
  br i1 %339, label %340, label %342

340:                                              ; preds = %337
  %341 = add nsw i32 %.2207325, 2
  br label %404

342:                                              ; preds = %337
  %343 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.35) #15
  %344 = icmp eq i32 %343, 0
  br i1 %344, label %345, label %347

345:                                              ; preds = %342
  %346 = add nsw i32 %.2207325, 2
  br label %404

347:                                              ; preds = %342
  %348 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.36) #15
  %349 = icmp eq i32 %348, 0
  br i1 %349, label %350, label %352

350:                                              ; preds = %347
  %351 = add nsw i32 %.2207325, 1
  br label %404

352:                                              ; preds = %347
  %353 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.40) #15
  %354 = icmp eq i32 %353, 0
  br i1 %354, label %355, label %357

355:                                              ; preds = %352
  %356 = add nsw i32 %.2207325, 1
  br label %404

357:                                              ; preds = %352
  %358 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.37) #15
  %359 = icmp eq i32 %358, 0
  br i1 %359, label %360, label %362

360:                                              ; preds = %357
  %361 = add nsw i32 %.2207325, 1
  br label %404

362:                                              ; preds = %357
  %363 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.65) #15
  %364 = icmp eq i32 %363, 0
  br i1 %364, label %365, label %366

365:                                              ; preds = %362
  call void @usage(i32 noundef 1)
  br label %404

366:                                              ; preds = %362
  %367 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %spec.select269, ptr noundef nonnull dereferenceable(1) @.str.30) #15
  %368 = icmp eq i32 %367, 0
  br i1 %368, label %369, label %398

369:                                              ; preds = %366
  %370 = icmp eq i32 %.2207325, %192
  br i1 %370, label %._crit_edge328, label %371

371:                                              ; preds = %369
  %372 = add nsw i32 %.2207325, 1
  %373 = call ptr @cmdline_option_value(i32 noundef %0, ptr noundef nonnull %1, i32 noundef %372)
  %374 = load i8, ptr %373, align 1, !tbaa !11
  %375 = icmp eq i8 %374, 46
  br i1 %375, label %376, label %384

376:                                              ; preds = %371
  %377 = call i32 @do_meta_command(ptr noundef nonnull %373, ptr noundef nonnull %4)
  %378 = icmp ne i32 %377, 0
  %379 = load i32, ptr @bail_on_error, align 4
  %380 = icmp ne i32 %379, 0
  %or.cond6 = select i1 %378, i1 %380, i1 false
  br i1 %or.cond6, label %381, label %404

381:                                              ; preds = %376
  %382 = icmp eq i32 %377, 2
  %383 = select i1 %382, i32 0, i32 %377
  br label %.thread

384:                                              ; preds = %371
  call void @open_db(ptr noundef nonnull %4, i32 noundef 0)
  %385 = call i32 @shell_exec(ptr noundef nonnull %4, ptr noundef nonnull %373, ptr noundef nonnull %3)
  %386 = load ptr, ptr %3, align 8, !tbaa !5
  %.not251 = icmp eq ptr %386, null
  br i1 %.not251, label %393, label %387

387:                                              ; preds = %384
  %388 = load ptr, ptr @stderr, align 8, !tbaa !5
  %389 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %388, ptr noundef nonnull @.str.66, ptr noundef nonnull %386) #14
  %390 = load i32, ptr @bail_on_error, align 4, !tbaa !9
  %.not254 = icmp eq i32 %390, 0
  br i1 %.not254, label %404, label %391

391:                                              ; preds = %387
  %392 = call i32 @llvm.umax.i32(i32 %385, i32 1)
  br label %.thread

393:                                              ; preds = %384
  %.not252 = icmp eq i32 %385, 0
  br i1 %.not252, label %404, label %394

394:                                              ; preds = %393
  %395 = load ptr, ptr @stderr, align 8, !tbaa !5
  %396 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %395, ptr noundef nonnull @.str.67, ptr noundef nonnull %373) #14
  %397 = load i32, ptr @bail_on_error, align 4, !tbaa !9
  %.not253 = icmp eq i32 %397, 0
  br i1 %.not253, label %404, label %.thread

398:                                              ; preds = %366
  %399 = load ptr, ptr @stderr, align 8, !tbaa !5
  %400 = load ptr, ptr @Argv0, align 8, !tbaa !5
  %401 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %399, ptr noundef nonnull @.str.68, ptr noundef %400, ptr noundef nonnull %spec.select269) #14
  %402 = load ptr, ptr @stderr, align 8, !tbaa !5
  %403 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %402, ptr noundef nonnull @.str.69) #14
  br label %.thread

404:                                              ; preds = %221, %229, %237, %245, %253, %266, %280, %288, %298, %306, %316, %327, %335, %345, %355, %365, %376, %393, %394, %387, %360, %350, %340, %331, %310, %302, %294, %284, %273, %259, %249, %241, %233, %225, %216
  %.1209 = phi i32 [ %.0208324, %216 ], [ %.0208324, %221 ], [ %.0208324, %225 ], [ %.0208324, %229 ], [ %.0208324, %233 ], [ %.0208324, %237 ], [ %.0208324, %241 ], [ %.0208324, %245 ], [ %.0208324, %249 ], [ %.0208324, %253 ], [ %.0208324, %259 ], [ %.0208324, %266 ], [ %.0208324, %273 ], [ %.0208324, %280 ], [ %.0208324, %284 ], [ %.0208324, %288 ], [ %.0208324, %294 ], [ %.0208324, %298 ], [ %.0208324, %302 ], [ %.0208324, %306 ], [ %.0208324, %310 ], [ %.0208324, %316 ], [ %.0208324, %327 ], [ %.0208324, %331 ], [ %.0208324, %335 ], [ %.0208324, %340 ], [ %.0208324, %345 ], [ %.0208324, %350 ], [ %.0208324, %355 ], [ %.0208324, %360 ], [ %.0208324, %365 ], [ %377, %376 ], [ %385, %387 ], [ %385, %394 ], [ 0, %393 ]
  %.3 = phi i32 [ %217, %216 ], [ %.2207325, %221 ], [ %.2207325, %225 ], [ %.2207325, %229 ], [ %.2207325, %233 ], [ %.2207325, %237 ], [ %.2207325, %241 ], [ %.2207325, %245 ], [ %.2207325, %249 ], [ %.2207325, %253 ], [ %260, %259 ], [ %267, %266 ], [ %274, %273 ], [ %.2207325, %280 ], [ %.2207325, %284 ], [ %.2207325, %288 ], [ %.2207325, %294 ], [ %.2207325, %298 ], [ %.2207325, %302 ], [ %.2207325, %306 ], [ %.2207325, %310 ], [ %.2207325, %316 ], [ %.2207325, %327 ], [ %.2207325, %331 ], [ %336, %335 ], [ %341, %340 ], [ %346, %345 ], [ %351, %350 ], [ %356, %355 ], [ %361, %360 ], [ %.2207325, %365 ], [ %372, %376 ], [ %372, %387 ], [ %372, %394 ], [ %372, %393 ]
  %405 = load i32, ptr %201, align 4, !tbaa !22
  store i32 %405, ptr %204, align 4, !tbaa !27
  br label %406

406:                                              ; preds = %404, %205
  %.2210.ph = phi i32 [ %.0208324, %205 ], [ %.1209, %404 ]
  %.4.ph = phi i32 [ %.2207325, %205 ], [ %.3, %404 ]
  %407 = add nsw i32 %.4.ph, 1
  %408 = icmp slt i32 %407, %0
  br i1 %408, label %205, label %._crit_edge328, !llvm.loop !28

._crit_edge328:                                   ; preds = %406, %369, %191
  %.0208.lcssa = phi i32 [ 0, %191 ], [ %.0208324, %369 ], [ %.2210.ph, %406 ]
  %.not256 = icmp eq i32 %.0215.lcssa, 0
  br i1 %.not256, label %.preheader, label %433

.preheader:                                       ; preds = %._crit_edge328
  %409 = icmp sgt i32 %.0217.lcssa, 0
  br i1 %409, label %.lr.ph333.preheader, label %._crit_edge334

.lr.ph333.preheader:                              ; preds = %.preheader
  %wide.trip.count = zext nneg i32 %.0217.lcssa to i64
  br label %.lr.ph333

.lr.ph333:                                        ; preds = %.lr.ph333.preheader, %432
  %indvars.iv = phi i64 [ 0, %.lr.ph333.preheader ], [ %indvars.iv.next, %432 ]
  %410 = getelementptr inbounds ptr, ptr %.0222.lcssa, i64 %indvars.iv
  %411 = load ptr, ptr %410, align 8, !tbaa !5
  %412 = load i8, ptr %411, align 1, !tbaa !11
  %413 = icmp eq i8 %412, 46
  br i1 %413, label %414, label %419

414:                                              ; preds = %.lr.ph333
  %415 = call i32 @do_meta_command(ptr noundef nonnull %411, ptr noundef nonnull %4)
  %.not260 = icmp eq i32 %415, 0
  br i1 %.not260, label %432, label %416

416:                                              ; preds = %414
  %417 = icmp eq i32 %415, 2
  %418 = select i1 %417, i32 0, i32 %415
  br label %.thread

419:                                              ; preds = %.lr.ph333
  call void @open_db(ptr noundef nonnull %4, i32 noundef 0)
  %420 = load ptr, ptr %410, align 8, !tbaa !5
  %421 = call i32 @shell_exec(ptr noundef nonnull %4, ptr noundef %420, ptr noundef nonnull %3)
  %422 = load ptr, ptr %3, align 8, !tbaa !5
  %.not257 = icmp eq ptr %422, null
  br i1 %.not257, label %427, label %423

423:                                              ; preds = %419
  %424 = load ptr, ptr @stderr, align 8, !tbaa !5
  %425 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %424, ptr noundef nonnull @.str.66, ptr noundef nonnull %422) #14
  %426 = call i32 @llvm.umax.i32(i32 %421, i32 1)
  br label %.thread

427:                                              ; preds = %419
  %.not258 = icmp eq i32 %421, 0
  br i1 %.not258, label %432, label %428

428:                                              ; preds = %427
  %429 = load ptr, ptr @stderr, align 8, !tbaa !5
  %430 = load ptr, ptr %410, align 8, !tbaa !5
  %431 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %429, ptr noundef nonnull @.str.70, ptr noundef %430) #14
  br label %.thread

432:                                              ; preds = %414, %427
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge334, label %.lr.ph333, !llvm.loop !29

._crit_edge334:                                   ; preds = %432, %.preheader
  %.4212.lcssa = phi i32 [ %.0208.lcssa, %.preheader ], [ 0, %432 ]
  call void @free(ptr noundef %.0222.lcssa) #13
  br label %466

433:                                              ; preds = %._crit_edge328
  %434 = load i32, ptr @stdin_is_interactive, align 4, !tbaa !9
  %.not261 = icmp eq i32 %434, 0
  br i1 %.not261, label %462, label %435

435:                                              ; preds = %433
  %436 = call ptr @sqlite3_libversion() #13
  %437 = call ptr @sqlite3_sourceid() #13
  %438 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.71, ptr noundef %436, ptr noundef %437)
  %.not262 = icmp eq i32 %.0214, 0
  br i1 %.not262, label %442, label %439

439:                                              ; preds = %435
  %440 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72)
  call void @printBold(ptr noundef nonnull @.str.73)
  %441 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.74)
  br label %442

442:                                              ; preds = %439, %435
  %443 = call ptr @getenv(ptr noundef nonnull @.str.75) #13
  %.not263 = icmp eq ptr %443, null
  br i1 %.not263, label %444, label %456

444:                                              ; preds = %442
  %445 = call ptr @find_home_dir(i32 noundef 0)
  %.not264 = icmp eq ptr %445, null
  br i1 %.not264, label %.thread284, label %446

446:                                              ; preds = %444
  %447 = call i32 @strlen30(ptr noundef nonnull %445)
  %448 = add nsw i32 %447, 20
  %449 = sext i32 %448 to i64
  %450 = call noalias ptr @malloc(i64 noundef %449) #18
  %.not265 = icmp eq ptr %450, null
  br i1 %.not265, label %.thread284, label %.thread287

.thread287:                                       ; preds = %446
  %451 = call ptr (i32, ptr, ptr, ...) @sqlite3_snprintf(i32 noundef %448, ptr noundef nonnull %450, ptr noundef nonnull @.str.76, ptr noundef nonnull %445) #13
  %452 = getelementptr inbounds i8, ptr %4, i64 40
  store ptr null, ptr %452, align 8, !tbaa !30
  %453 = call i32 @process_input(ptr noundef nonnull %4)
  br label %460

.thread284:                                       ; preds = %446, %444
  %454 = getelementptr inbounds i8, ptr %4, i64 40
  store ptr null, ptr %454, align 8, !tbaa !30
  %455 = call i32 @process_input(ptr noundef nonnull %4)
  br label %466

456:                                              ; preds = %442
  %457 = call noalias ptr @strdup(ptr noundef nonnull %443) #13
  %458 = getelementptr inbounds i8, ptr %4, i64 40
  store ptr null, ptr %458, align 8, !tbaa !30
  %459 = call i32 @process_input(ptr noundef nonnull %4)
  %.not266 = icmp eq ptr %457, null
  br i1 %.not266, label %466, label %460

460:                                              ; preds = %.thread287, %456
  %461 = phi i32 [ %453, %.thread287 ], [ %459, %456 ]
  %.0200290 = phi ptr [ %450, %.thread287 ], [ %457, %456 ]
  call void @free(ptr noundef nonnull %.0200290) #13
  br label %466

462:                                              ; preds = %433
  %463 = load ptr, ptr @stdin, align 8, !tbaa !5
  %464 = getelementptr inbounds i8, ptr %4, i64 40
  store ptr %463, ptr %464, align 8, !tbaa !30
  %465 = call i32 @process_input(ptr noundef nonnull %4)
  br label %466

466:                                              ; preds = %.thread284, %456, %460, %462, %._crit_edge334
  %.6 = phi i32 [ %465, %462 ], [ %.4212.lcssa, %._crit_edge334 ], [ %461, %460 ], [ %459, %456 ], [ %455, %.thread284 ]
  call void @set_table_name(ptr noundef nonnull %4, ptr noundef null)
  %467 = load ptr, ptr %4, align 8, !tbaa !31
  %.not267 = icmp eq ptr %467, null
  br i1 %.not267, label %469, label %468

468:                                              ; preds = %466
  call void @close_db(ptr noundef nonnull %467)
  br label %469

469:                                              ; preds = %468, %466
  %470 = getelementptr inbounds i8, ptr %4, i64 5176
  %471 = load ptr, ptr %470, align 8, !tbaa !32
  call void @sqlite3_free(ptr noundef %471) #13
  %472 = call ptr @find_home_dir(i32 noundef 1)
  call void @output_reset(ptr noundef nonnull %4)
  %473 = getelementptr inbounds i8, ptr %4, i64 15
  store i8 0, ptr %473, align 1, !tbaa !33
  call void @clearTempFile(ptr noundef nonnull %4)
  br label %.thread

.thread:                                          ; preds = %394, %398, %391, %381, %320, %469, %428, %423, %416
  %.2 = phi i32 [ %.6, %469 ], [ %418, %416 ], [ %426, %423 ], [ %421, %428 ], [ 1, %398 ], [ %392, %391 ], [ %383, %381 ], [ 0, %320 ], [ %385, %394 ]
  call void @llvm.lifetime.end.p0(i64 5360, ptr nonnull %4) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #13
  ret i32 %.2
}

; Function Attrs: nofree nounwind
declare noundef i32 @setvbuf(ptr nocapture noundef, ptr noundef, i32 noundef, i64 noundef) local_unnamed_addr #3

; Function Attrs: nounwind
declare i32 @isatty(i32 noundef) local_unnamed_addr #4

; Function Attrs: nofree nounwind memory(read)
declare noundef ptr @getenv(ptr nocapture noundef) local_unnamed_addr #5

; Function Attrs: nounwind
declare i32 @getpid() local_unnamed_addr #4

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

; Function Attrs: nounwind
declare i32 @raise(i32 noundef) local_unnamed_addr #4

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

declare ptr @sqlite3_sourceid() local_unnamed_addr #2

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

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

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

; Function Attrs: nounwind
declare ptr @signal(i32 noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare hidden void @interrupt_handler(i32 noundef) #1

; Function Attrs: nounwind uwtable
declare hidden void @verify_uninitialized() local_unnamed_addr #1

; Function Attrs: mustprogress nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite)
declare noalias noundef ptr @realloc(ptr allocptr nocapture noundef, i64 noundef) local_unnamed_addr #8

; Function Attrs: nounwind uwtable
declare hidden void @shell_out_of_memory() local_unnamed_addr #1

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

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

; Function Attrs: nounwind uwtable
declare hidden i64 @integerValue(ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #9

declare i32 @sqlite3_initialize() local_unnamed_addr #2

; Function Attrs: nofree nounwind
declare noundef i32 @access(ptr nocapture noundef readonly, i32 noundef) local_unnamed_addr #3

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

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

declare ptr @sqlite3_snprintf(i32 noundef, ptr noundef, ptr noundef, ...) local_unnamed_addr #2

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

declare ptr @sqlite3_libversion() local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden void @usage(i32 noundef) local_unnamed_addr #1

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

; Function Attrs: nounwind uwtable
declare hidden i32 @shell_exec(ptr noundef, ptr noundef, 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 #10

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite)
declare noalias ptr @strdup(ptr nocapture noundef readonly) local_unnamed_addr #11

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

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

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

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

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

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

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

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

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

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 = { "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 = { 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 #4 = { 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 = { nofree nounwind 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 #6 = { 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 #7 = { 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 #8 = { mustprogress nounwind willreturn allockind("realloc") allocsize(1) 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 #9 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) 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 #10 = { 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 #11 = { mustprogress nofree nounwind willreturn 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 #12 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #13 = { nounwind }
attributes #14 = { cold nounwind }
attributes #15 = { nounwind willreturn memory(read) }
attributes #16 = { noreturn nounwind }
attributes #17 = { nounwind allocsize(1) }
attributes #18 = { nounwind allocsize(0) }

!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 = !{!7, !7, i64 0}
!12 = !{!13, !6, i64 5168}
!13 = !{!"ShellState", !6, i64 0, !7, i64 8, !7, i64 9, !7, i64 10, !7, i64 11, !7, i64 12, !7, i64 13, !7, i64 14, !7, i64 15, !7, i64 16, !7, i64 17, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !14, i64 112, !6, i64 120, !6, i64 128, !7, i64 136, !7, i64 166, !7, i64 186, !7, i64 206, !7, i64 226, !7, i64 248, !7, i64 648, !7, i64 1048, !7, i64 1068, !6, i64 5168, !6, i64 5176, !6, i64 5184, !6, i64 5192, !6, i64 5200, !6, i64 5208, !10, i64 5216, !10, i64 5220, !15, i64 5224, !16, i64 5344}
!14 = !{!"long long", !7, i64 0}
!15 = !{!"EQPGraph", !6, i64 0, !6, i64 8, !7, i64 16}
!16 = !{!"ExpertInfo", !6, i64 0, !10, i64 8}
!17 = !{!13, !10, i64 108}
!18 = !{!13, !7, i64 14}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = !{!13, !6, i64 48}
!22 = !{!13, !10, i64 68}
!23 = !{!13, !10, i64 88}
!24 = !{!13, !7, i64 9}
!25 = !{!13, !7, i64 12}
!26 = !{!13, !7, i64 13}
!27 = !{!13, !10, i64 76}
!28 = distinct !{!28, !20}
!29 = distinct !{!29, !20}
!30 = !{!13, !6, i64 40}
!31 = !{!13, !6, i64 0}
!32 = !{!13, !6, i64 5176}
!33 = !{!13, !7, i64 15}


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