; LLVM IR from ANL-CESAR/XSBench :: opencl (io)

; 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.Inputs = type { i32, i64, i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }

@.str.24 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [3 x i8], align 1

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @print_CLI_error() #1

; Function Attrs: nounwind uwtable
define dso_local void @read_CLI(ptr dead_on_unwind noalias writable sret(%struct.Inputs) align 8 %0, i32 noundef %1, ptr noundef %2) #1 {
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  store i32 %1, ptr %4, align 4, !tbaa !5
  store ptr %2, ptr %5, align 8, !tbaa !9
  %15 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 8
  store i32 1, ptr %15, align 4, !tbaa !11
  %16 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 0
  store i32 1, ptr %16, align 8, !tbaa !14
  %17 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 1
  store i64 355, ptr %17, align 8, !tbaa !15
  %18 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 2
  store i64 11303, ptr %18, align 8, !tbaa !16
  %19 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 7
  store i32 500000, ptr %19, align 8, !tbaa !17
  %20 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 3
  store i32 34, ptr %20, align 8, !tbaa !18
  %21 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 5
  store i32 0, ptr %21, align 8, !tbaa !19
  %22 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 6
  store i32 10000, ptr %22, align 4, !tbaa !20
  %23 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 9
  store i32 0, ptr %23, align 8, !tbaa !21
  %24 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 10
  store i32 0, ptr %24, align 4, !tbaa !22
  %25 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 4
  store i32 1, ptr %25, align 4, !tbaa !23
  %26 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 11
  store i32 -1, ptr %26, align 8, !tbaa !24
  %27 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 12
  store i32 -1, ptr %27, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #4
  store i32 0, ptr %6, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #4
  store i32 1, ptr %7, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #4
  store i32 1, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #4
  store i32 1, ptr %9, align 4, !tbaa !5
  br label %28

28:                                               ; preds = %335, %3
  %29 = load i32, ptr %9, align 4, !tbaa !5
  %30 = load i32, ptr %4, align 4, !tbaa !5
  %31 = icmp slt i32 %29, %30
  br i1 %31, label %33, label %32

32:                                               ; preds = %28
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #4
  br label %338

33:                                               ; preds = %28
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #4
  %34 = load ptr, ptr %5, align 8, !tbaa !9
  %35 = load i32, ptr %9, align 4, !tbaa !5
  %36 = sext i32 %35 to i64
  %37 = getelementptr inbounds ptr, ptr %34, i64 %36
  %38 = load ptr, ptr %37, align 8, !tbaa !9
  store ptr %38, ptr %10, align 8, !tbaa !9
  %39 = load ptr, ptr %10, align 8, !tbaa !9
  %40 = call i32 @strcmp(ptr noundef %39, ptr noundef @.str.64) #5
  %41 = icmp eq i32 %40, 0
  br i1 %41, label %42, label %57

42:                                               ; preds = %33
  %43 = load i32, ptr %9, align 4, !tbaa !5
  %44 = add nsw i32 %43, 1
  store i32 %44, ptr %9, align 4, !tbaa !5
  %45 = load i32, ptr %4, align 4, !tbaa !5
  %46 = icmp slt i32 %44, %45
  br i1 %46, label %47, label %55

47:                                               ; preds = %42
  store i32 1, ptr %6, align 4, !tbaa !5
  %48 = load ptr, ptr %5, align 8, !tbaa !9
  %49 = load i32, ptr %9, align 4, !tbaa !5
  %50 = sext i32 %49 to i64
  %51 = getelementptr inbounds ptr, ptr %48, i64 %50
  %52 = load ptr, ptr %51, align 8, !tbaa !9
  %53 = call i64 @atol(ptr noundef %52) #5
  %54 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 2
  store i64 %53, ptr %54, align 8, !tbaa !16
  br label %56

55:                                               ; preds = %42
  call void @print_CLI_error()
  br label %56

56:                                               ; preds = %55, %47
  br label %334

57:                                               ; preds = %33
  %58 = load ptr, ptr %10, align 8, !tbaa !9
  %59 = call i32 @strcmp(ptr noundef %58, ptr noundef @.str.65) #5
  %60 = icmp eq i32 %59, 0
  br i1 %60, label %61, label %102

61:                                               ; preds = %57
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #4
  %62 = load i32, ptr %9, align 4, !tbaa !5
  %63 = add nsw i32 %62, 1
  store i32 %63, ptr %9, align 4, !tbaa !5
  %64 = load i32, ptr %4, align 4, !tbaa !5
  %65 = icmp slt i32 %63, %64
  br i1 %65, label %66, label %72

66:                                               ; preds = %61
  %67 = load ptr, ptr %5, align 8, !tbaa !9
  %68 = load i32, ptr %9, align 4, !tbaa !5
  %69 = sext i32 %68 to i64
  %70 = getelementptr inbounds ptr, ptr %67, i64 %69
  %71 = load ptr, ptr %70, align 8, !tbaa !9
  store ptr %71, ptr %11, align 8, !tbaa !9
  br label %73

72:                                               ; preds = %61
  call void @print_CLI_error()
  br label %73

73:                                               ; preds = %72, %66
  %74 = load ptr, ptr %11, align 8, !tbaa !9
  %75 = call i32 @strcmp(ptr noundef %74, ptr noundef @.str.66) #5
  %76 = icmp eq i32 %75, 0
  br i1 %76, label %77, label %79

77:                                               ; preds = %73
  %78 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 8
  store i32 1, ptr %78, align 4, !tbaa !11
  br label %101

79:                                               ; preds = %73
  %80 = load ptr, ptr %11, align 8, !tbaa !9
  %81 = call i32 @strcmp(ptr noundef %80, ptr noundef @.str.67) #5
  %82 = icmp eq i32 %81, 0
  br i1 %82, label %83, label %99

83:                                               ; preds = %79
  %84 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 8
  store i32 2, ptr %84, align 4, !tbaa !11
  %85 = load i32, ptr %7, align 4, !tbaa !5
  %86 = icmp ne i32 %85, 0
  br i1 %86, label %87, label %98

87:                                               ; preds = %83
  %88 = load i32, ptr %8, align 4, !tbaa !5
  %89 = icmp ne i32 %88, 0
  br i1 %89, label %90, label %98

90:                                               ; preds = %87
  %91 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 3
  %92 = load i32, ptr %91, align 8, !tbaa !18
  %93 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 7
  %94 = load i32, ptr %93, align 8, !tbaa !17
  %95 = mul nsw i32 %92, %94
  %96 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 3
  store i32 %95, ptr %96, align 8, !tbaa !18
  %97 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 7
  store i32 0, ptr %97, align 8, !tbaa !17
  br label %98

98:                                               ; preds = %90, %87, %83
  br label %100

99:                                               ; preds = %79
  call void @print_CLI_error()
  br label %100

100:                                              ; preds = %99, %98
  br label %101

101:                                              ; preds = %100, %77
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  br label %333

102:                                              ; preds = %57
  %103 = load ptr, ptr %10, align 8, !tbaa !9
  %104 = call i32 @strcmp(ptr noundef %103, ptr noundef @.str.68) #5
  %105 = icmp eq i32 %104, 0
  br i1 %105, label %106, label %121

106:                                              ; preds = %102
  %107 = load i32, ptr %9, align 4, !tbaa !5
  %108 = add nsw i32 %107, 1
  store i32 %108, ptr %9, align 4, !tbaa !5
  %109 = load i32, ptr %4, align 4, !tbaa !5
  %110 = icmp slt i32 %108, %109
  br i1 %110, label %111, label %119

111:                                              ; preds = %106
  %112 = load ptr, ptr %5, align 8, !tbaa !9
  %113 = load i32, ptr %9, align 4, !tbaa !5
  %114 = sext i32 %113 to i64
  %115 = getelementptr inbounds ptr, ptr %112, i64 %114
  %116 = load ptr, ptr %115, align 8, !tbaa !9
  %117 = call i32 @atoi(ptr noundef %116) #5
  %118 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 3
  store i32 %117, ptr %118, align 8, !tbaa !18
  store i32 0, ptr %7, align 4, !tbaa !5
  br label %120

119:                                              ; preds = %106
  call void @print_CLI_error()
  br label %120

120:                                              ; preds = %119, %111
  br label %332

121:                                              ; preds = %102
  %122 = load ptr, ptr %10, align 8, !tbaa !9
  %123 = call i32 @strcmp(ptr noundef %122, ptr noundef @.str.69) #5
  %124 = icmp eq i32 %123, 0
  br i1 %124, label %125, label %140

125:                                              ; preds = %121
  %126 = load i32, ptr %9, align 4, !tbaa !5
  %127 = add nsw i32 %126, 1
  store i32 %127, ptr %9, align 4, !tbaa !5
  %128 = load i32, ptr %4, align 4, !tbaa !5
  %129 = icmp slt i32 %127, %128
  br i1 %129, label %130, label %138

130:                                              ; preds = %125
  %131 = load ptr, ptr %5, align 8, !tbaa !9
  %132 = load i32, ptr %9, align 4, !tbaa !5
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds ptr, ptr %131, i64 %133
  %135 = load ptr, ptr %134, align 8, !tbaa !9
  %136 = call i32 @atoi(ptr noundef %135) #5
  %137 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 6
  store i32 %136, ptr %137, align 4, !tbaa !20
  br label %139

138:                                              ; preds = %125
  call void @print_CLI_error()
  br label %139

139:                                              ; preds = %138, %130
  br label %331

140:                                              ; preds = %121
  %141 = load ptr, ptr %10, align 8, !tbaa !9
  %142 = call i32 @strcmp(ptr noundef %141, ptr noundef @.str.70) #5
  %143 = icmp eq i32 %142, 0
  br i1 %143, label %144, label %159

144:                                              ; preds = %140
  %145 = load i32, ptr %9, align 4, !tbaa !5
  %146 = add nsw i32 %145, 1
  store i32 %146, ptr %9, align 4, !tbaa !5
  %147 = load i32, ptr %4, align 4, !tbaa !5
  %148 = icmp slt i32 %146, %147
  br i1 %148, label %149, label %157

149:                                              ; preds = %144
  %150 = load ptr, ptr %5, align 8, !tbaa !9
  %151 = load i32, ptr %9, align 4, !tbaa !5
  %152 = sext i32 %151 to i64
  %153 = getelementptr inbounds ptr, ptr %150, i64 %152
  %154 = load ptr, ptr %153, align 8, !tbaa !9
  %155 = call i32 @atoi(ptr noundef %154) #5
  %156 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 7
  store i32 %155, ptr %156, align 8, !tbaa !17
  store i32 0, ptr %8, align 4, !tbaa !5
  br label %158

157:                                              ; preds = %144
  call void @print_CLI_error()
  br label %158

158:                                              ; preds = %157, %149
  br label %330

159:                                              ; preds = %140
  %160 = load ptr, ptr %10, align 8, !tbaa !9
  %161 = call i32 @strcmp(ptr noundef %160, ptr noundef @.str.71) #5
  %162 = icmp eq i32 %161, 0
  br i1 %162, label %163, label %197

163:                                              ; preds = %159
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #4
  %164 = load i32, ptr %9, align 4, !tbaa !5
  %165 = add nsw i32 %164, 1
  store i32 %165, ptr %9, align 4, !tbaa !5
  %166 = load i32, ptr %4, align 4, !tbaa !5
  %167 = icmp slt i32 %165, %166
  br i1 %167, label %168, label %174

168:                                              ; preds = %163
  %169 = load ptr, ptr %5, align 8, !tbaa !9
  %170 = load i32, ptr %9, align 4, !tbaa !5
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds ptr, ptr %169, i64 %171
  %173 = load ptr, ptr %172, align 8, !tbaa !9
  store ptr %173, ptr %12, align 8, !tbaa !9
  br label %175

174:                                              ; preds = %163
  call void @print_CLI_error()
  br label %175

175:                                              ; preds = %174, %168
  %176 = load ptr, ptr %12, align 8, !tbaa !9
  %177 = call i32 @strcmp(ptr noundef %176, ptr noundef @.str.72) #5
  %178 = icmp eq i32 %177, 0
  br i1 %178, label %179, label %181

179:                                              ; preds = %175
  %180 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 4
  store i32 0, ptr %180, align 4, !tbaa !23
  br label %196

181:                                              ; preds = %175
  %182 = load ptr, ptr %12, align 8, !tbaa !9
  %183 = call i32 @strcmp(ptr noundef %182, ptr noundef @.str.73) #5
  %184 = icmp eq i32 %183, 0
  br i1 %184, label %185, label %187

185:                                              ; preds = %181
  %186 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 4
  store i32 1, ptr %186, align 4, !tbaa !23
  br label %195

187:                                              ; preds = %181
  %188 = load ptr, ptr %12, align 8, !tbaa !9
  %189 = call i32 @strcmp(ptr noundef %188, ptr noundef @.str.24) #5
  %190 = icmp eq i32 %189, 0
  br i1 %190, label %191, label %193

191:                                              ; preds = %187
  %192 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 4
  store i32 2, ptr %192, align 4, !tbaa !23
  br label %194

193:                                              ; preds = %187
  call void @print_CLI_error()
  br label %194

194:                                              ; preds = %193, %191
  br label %195

195:                                              ; preds = %194, %185
  br label %196

196:                                              ; preds = %195, %179
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  br label %329

197:                                              ; preds = %159
  %198 = load ptr, ptr %10, align 8, !tbaa !9
  %199 = call i32 @strcmp(ptr noundef %198, ptr noundef @.str.74) #5
  %200 = icmp eq i32 %199, 0
  br i1 %200, label %201, label %235

201:                                              ; preds = %197
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #4
  %202 = load i32, ptr %9, align 4, !tbaa !5
  %203 = add nsw i32 %202, 1
  store i32 %203, ptr %9, align 4, !tbaa !5
  %204 = load i32, ptr %4, align 4, !tbaa !5
  %205 = icmp slt i32 %203, %204
  br i1 %205, label %206, label %212

206:                                              ; preds = %201
  %207 = load ptr, ptr %5, align 8, !tbaa !9
  %208 = load i32, ptr %9, align 4, !tbaa !5
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds ptr, ptr %207, i64 %209
  %211 = load ptr, ptr %210, align 8, !tbaa !9
  store ptr %211, ptr %13, align 8, !tbaa !9
  br label %213

212:                                              ; preds = %201
  call void @print_CLI_error()
  br label %213

213:                                              ; preds = %212, %206
  %214 = load ptr, ptr %13, align 8, !tbaa !9
  %215 = call i32 @strcmp(ptr noundef %214, ptr noundef @.str.75) #5
  %216 = icmp eq i32 %215, 0
  br i1 %216, label %217, label %219

217:                                              ; preds = %213
  %218 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 5
  store i32 0, ptr %218, align 8, !tbaa !19
  br label %234

219:                                              ; preds = %213
  %220 = load ptr, ptr %13, align 8, !tbaa !9
  %221 = call i32 @strcmp(ptr noundef %220, ptr noundef @.str.76) #5
  %222 = icmp eq i32 %221, 0
  br i1 %222, label %223, label %225

223:                                              ; preds = %219
  %224 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 5
  store i32 1, ptr %224, align 8, !tbaa !19
  br label %233

225:                                              ; preds = %219
  %226 = load ptr, ptr %13, align 8, !tbaa !9
  %227 = call i32 @strcmp(ptr noundef %226, ptr noundef @.str.77) #5
  %228 = icmp eq i32 %227, 0
  br i1 %228, label %229, label %231

229:                                              ; preds = %225
  %230 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 5
  store i32 2, ptr %230, align 8, !tbaa !19
  br label %232

231:                                              ; preds = %225
  call void @print_CLI_error()
  br label %232

232:                                              ; preds = %231, %229
  br label %233

233:                                              ; preds = %232, %223
  br label %234

234:                                              ; preds = %233, %217
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  br label %328

235:                                              ; preds = %197
  %236 = load ptr, ptr %10, align 8, !tbaa !9
  %237 = call i32 @strcmp(ptr noundef %236, ptr noundef @.str.78) #5
  %238 = icmp eq i32 %237, 0
  br i1 %238, label %239, label %266

239:                                              ; preds = %235
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #4
  %240 = load i32, ptr %9, align 4, !tbaa !5
  %241 = add nsw i32 %240, 1
  store i32 %241, ptr %9, align 4, !tbaa !5
  %242 = load i32, ptr %4, align 4, !tbaa !5
  %243 = icmp slt i32 %241, %242
  br i1 %243, label %244, label %250

244:                                              ; preds = %239
  %245 = load ptr, ptr %5, align 8, !tbaa !9
  %246 = load i32, ptr %9, align 4, !tbaa !5
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds ptr, ptr %245, i64 %247
  %249 = load ptr, ptr %248, align 8, !tbaa !9
  store ptr %249, ptr %14, align 8, !tbaa !9
  br label %251

250:                                              ; preds = %239
  call void @print_CLI_error()
  br label %251

251:                                              ; preds = %250, %244
  %252 = load ptr, ptr %14, align 8, !tbaa !9
  %253 = call i32 @strcmp(ptr noundef %252, ptr noundef @.str.79) #5
  %254 = icmp eq i32 %253, 0
  br i1 %254, label %255, label %257

255:                                              ; preds = %251
  %256 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 9
  store i32 1, ptr %256, align 8, !tbaa !21
  br label %265

257:                                              ; preds = %251
  %258 = load ptr, ptr %14, align 8, !tbaa !9
  %259 = call i32 @strcmp(ptr noundef %258, ptr noundef @.str.80) #5
  %260 = icmp eq i32 %259, 0
  br i1 %260, label %261, label %263

261:                                              ; preds = %257
  %262 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 9
  store i32 2, ptr %262, align 8, !tbaa !21
  br label %264

263:                                              ; preds = %257
  call void @print_CLI_error()
  br label %264

264:                                              ; preds = %263, %261
  br label %265

265:                                              ; preds = %264, %255
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  br label %327

266:                                              ; preds = %235
  %267 = load ptr, ptr %10, align 8, !tbaa !9
  %268 = call i32 @strcmp(ptr noundef %267, ptr noundef @.str.81) #5
  %269 = icmp eq i32 %268, 0
  br i1 %269, label %270, label %285

270:                                              ; preds = %266
  %271 = load i32, ptr %9, align 4, !tbaa !5
  %272 = add nsw i32 %271, 1
  store i32 %272, ptr %9, align 4, !tbaa !5
  %273 = load i32, ptr %4, align 4, !tbaa !5
  %274 = icmp slt i32 %272, %273
  br i1 %274, label %275, label %283

275:                                              ; preds = %270
  %276 = load ptr, ptr %5, align 8, !tbaa !9
  %277 = load i32, ptr %9, align 4, !tbaa !5
  %278 = sext i32 %277 to i64
  %279 = getelementptr inbounds ptr, ptr %276, i64 %278
  %280 = load ptr, ptr %279, align 8, !tbaa !9
  %281 = call i32 @atoi(ptr noundef %280) #5
  %282 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 10
  store i32 %281, ptr %282, align 4, !tbaa !22
  br label %284

283:                                              ; preds = %270
  call void @print_CLI_error()
  br label %284

284:                                              ; preds = %283, %275
  br label %326

285:                                              ; preds = %266
  %286 = load ptr, ptr %10, align 8, !tbaa !9
  %287 = call i32 @strcmp(ptr noundef %286, ptr noundef @.str.82) #5
  %288 = icmp eq i32 %287, 0
  br i1 %288, label %289, label %304

289:                                              ; preds = %285
  %290 = load i32, ptr %9, align 4, !tbaa !5
  %291 = add nsw i32 %290, 1
  store i32 %291, ptr %9, align 4, !tbaa !5
  %292 = load i32, ptr %4, align 4, !tbaa !5
  %293 = icmp slt i32 %291, %292
  br i1 %293, label %294, label %302

294:                                              ; preds = %289
  %295 = load ptr, ptr %5, align 8, !tbaa !9
  %296 = load i32, ptr %9, align 4, !tbaa !5
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds ptr, ptr %295, i64 %297
  %299 = load ptr, ptr %298, align 8, !tbaa !9
  %300 = call i32 @atoi(ptr noundef %299) #5
  %301 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 11
  store i32 %300, ptr %301, align 8, !tbaa !24
  br label %303

302:                                              ; preds = %289
  call void @print_CLI_error()
  br label %303

303:                                              ; preds = %302, %294
  br label %325

304:                                              ; preds = %285
  %305 = load ptr, ptr %10, align 8, !tbaa !9
  %306 = call i32 @strcmp(ptr noundef %305, ptr noundef @.str.83) #5
  %307 = icmp eq i32 %306, 0
  br i1 %307, label %308, label %323

308:                                              ; preds = %304
  %309 = load i32, ptr %9, align 4, !tbaa !5
  %310 = add nsw i32 %309, 1
  store i32 %310, ptr %9, align 4, !tbaa !5
  %311 = load i32, ptr %4, align 4, !tbaa !5
  %312 = icmp slt i32 %310, %311
  br i1 %312, label %313, label %321

313:                                              ; preds = %308
  %314 = load ptr, ptr %5, align 8, !tbaa !9
  %315 = load i32, ptr %9, align 4, !tbaa !5
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds ptr, ptr %314, i64 %316
  %318 = load ptr, ptr %317, align 8, !tbaa !9
  %319 = call i32 @atoi(ptr noundef %318) #5
  %320 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 12
  store i32 %319, ptr %320, align 4, !tbaa !25
  br label %322

321:                                              ; preds = %308
  call void @print_CLI_error()
  br label %322

322:                                              ; preds = %321, %313
  br label %324

323:                                              ; preds = %304
  call void @print_CLI_error()
  br label %324

324:                                              ; preds = %323, %322
  br label %325

325:                                              ; preds = %324, %303
  br label %326

326:                                              ; preds = %325, %284
  br label %327

327:                                              ; preds = %326, %265
  br label %328

328:                                              ; preds = %327, %234
  br label %329

329:                                              ; preds = %328, %196
  br label %330

330:                                              ; preds = %329, %158
  br label %331

331:                                              ; preds = %330, %139
  br label %332

332:                                              ; preds = %331, %120
  br label %333

333:                                              ; preds = %332, %101
  br label %334

334:                                              ; preds = %333, %56
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #4
  br label %335

335:                                              ; preds = %334
  %336 = load i32, ptr %9, align 4, !tbaa !5
  %337 = add nsw i32 %336, 1
  store i32 %337, ptr %9, align 4, !tbaa !5
  br label %28, !llvm.loop !26

338:                                              ; preds = %32
  %339 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 0
  %340 = load i32, ptr %339, align 8, !tbaa !14
  %341 = icmp slt i32 %340, 1
  br i1 %341, label %342, label %343

342:                                              ; preds = %338
  call void @print_CLI_error()
  br label %343

343:                                              ; preds = %342, %338
  %344 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 1
  %345 = load i64, ptr %344, align 8, !tbaa !15
  %346 = icmp slt i64 %345, 1
  br i1 %346, label %347, label %348

347:                                              ; preds = %343
  call void @print_CLI_error()
  br label %348

348:                                              ; preds = %347, %343
  %349 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 2
  %350 = load i64, ptr %349, align 8, !tbaa !16
  %351 = icmp slt i64 %350, 1
  br i1 %351, label %352, label %353

352:                                              ; preds = %348
  call void @print_CLI_error()
  br label %353

353:                                              ; preds = %352, %348
  %354 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 3
  %355 = load i32, ptr %354, align 8, !tbaa !18
  %356 = icmp slt i32 %355, 1
  br i1 %356, label %357, label %358

357:                                              ; preds = %353
  call void @print_CLI_error()
  br label %358

358:                                              ; preds = %357, %353
  %359 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 6
  %360 = load i32, ptr %359, align 4, !tbaa !20
  %361 = icmp slt i32 %360, 1
  br i1 %361, label %362, label %363

362:                                              ; preds = %358
  call void @print_CLI_error()
  br label %363

363:                                              ; preds = %362, %358
  %364 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 4
  %365 = load i32, ptr %364, align 4, !tbaa !23
  %366 = icmp eq i32 %365, 0
  br i1 %366, label %367, label %369

367:                                              ; preds = %363
  %368 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 1
  store i64 68, ptr %368, align 8, !tbaa !15
  br label %389

369:                                              ; preds = %363
  %370 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 4
  %371 = load i32, ptr %370, align 4, !tbaa !23
  %372 = icmp eq i32 %371, 2
  br i1 %372, label %373, label %378

373:                                              ; preds = %369
  %374 = load i32, ptr %6, align 4, !tbaa !5
  %375 = icmp eq i32 %374, 0
  br i1 %375, label %376, label %378

376:                                              ; preds = %373
  %377 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 2
  store i64 238847, ptr %377, align 8, !tbaa !16
  br label %388

378:                                              ; preds = %373, %369
  %379 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 4
  %380 = load i32, ptr %379, align 4, !tbaa !23
  %381 = icmp eq i32 %380, 3
  br i1 %381, label %382, label %387

382:                                              ; preds = %378
  %383 = load i32, ptr %6, align 4, !tbaa !5
  %384 = icmp eq i32 %383, 0
  br i1 %384, label %385, label %387

385:                                              ; preds = %382
  %386 = getelementptr inbounds %struct.Inputs, ptr %0, i32 0, i32 2
  store i64 501578, ptr %386, align 8, !tbaa !16
  br label %387

387:                                              ; preds = %385, %382, %378
  br label %388

388:                                              ; preds = %387, %376
  br label %389

389:                                              ; preds = %388, %367
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #4
  ret void
}

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

; Function Attrs: inlinehint nounwind willreturn memory(read) uwtable
declare i64 @atol(ptr noundef nonnull) #3

; Function Attrs: inlinehint nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr noundef nonnull) #3

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nounwind 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 #3 = { inlinehint nounwind willreturn memory(read) 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 #4 = { nounwind }
attributes #5 = { nounwind willreturn memory(read) }

!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 = !{!12, !6, i64 44}
!12 = !{!"", !6, i64 0, !13, i64 8, !13, i64 16, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 40, !6, i64 44, !6, i64 48, !6, i64 52, !6, i64 56, !6, i64 60}
!13 = !{!"long", !7, i64 0}
!14 = !{!12, !6, i64 0}
!15 = !{!12, !13, i64 8}
!16 = !{!12, !13, i64 16}
!17 = !{!12, !6, i64 40}
!18 = !{!12, !6, i64 24}
!19 = !{!12, !6, i64 32}
!20 = !{!12, !6, i64 36}
!21 = !{!12, !6, i64 48}
!22 = !{!12, !6, i64 52}
!23 = !{!12, !6, i64 28}
!24 = !{!12, !6, i64 56}
!25 = !{!12, !6, i64 60}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}


; 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.Inputs = type { i32, i64, i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }

@.str.24 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [3 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @print_CLI_error() local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local void @read_CLI(ptr dead_on_unwind noalias nocapture writable writeonly sret(%struct.Inputs) align 8 %0, i32 noundef %1, ptr nocapture noundef readonly %2) local_unnamed_addr #0 {
  %4 = getelementptr inbounds i8, ptr %0, i64 44
  store i32 1, ptr %4, align 4, !tbaa !5
  store i32 1, ptr %0, align 8, !tbaa !11
  %5 = getelementptr inbounds i8, ptr %0, i64 8
  store i64 355, ptr %5, align 8, !tbaa !12
  %6 = getelementptr inbounds i8, ptr %0, i64 16
  store i64 11303, ptr %6, align 8, !tbaa !13
  %7 = getelementptr inbounds i8, ptr %0, i64 40
  store i32 500000, ptr %7, align 8, !tbaa !14
  %8 = getelementptr inbounds i8, ptr %0, i64 24
  %9 = getelementptr inbounds i8, ptr %0, i64 32
  %10 = getelementptr inbounds i8, ptr %0, i64 36
  %11 = getelementptr inbounds i8, ptr %0, i64 48
  %12 = getelementptr inbounds i8, ptr %0, i64 52
  %13 = getelementptr inbounds i8, ptr %0, i64 28
  store <4 x i32> <i32 34, i32 1, i32 0, i32 10000>, ptr %8, align 8, !tbaa !15
  %14 = getelementptr inbounds i8, ptr %0, i64 56
  %15 = getelementptr inbounds i8, ptr %0, i64 60
  store <4 x i32> <i32 0, i32 0, i32 -1, i32 -1>, ptr %11, align 8, !tbaa !15
  %16 = icmp sgt i32 %1, 1
  br i1 %16, label %.lr.ph, label %.thread136

.lr.ph:                                           ; preds = %3, %201
  %17 = phi i32 [ %202, %201 ], [ 1, %3 ]
  %18 = phi i32 [ %203, %201 ], [ 10000, %3 ]
  %19 = phi i64 [ %204, %201 ], [ 11303, %3 ]
  %.0123 = phi ptr [ %.2, %201 ], [ undef, %3 ]
  %.078122 = phi ptr [ %.280, %201 ], [ undef, %3 ]
  %.081121 = phi ptr [ %.283, %201 ], [ undef, %3 ]
  %.084120 = phi ptr [ %.286, %201 ], [ undef, %3 ]
  %.087119 = phi i32 [ %.188, %201 ], [ 0, %3 ]
  %.089118 = phi i32 [ %207, %201 ], [ 1, %3 ]
  %.091117 = phi i32 [ %.192, %201 ], [ 1, %3 ]
  %.093116 = phi i32 [ %.194, %201 ], [ 1, %3 ]
  %20 = phi i32 [ %206, %201 ], [ 500000, %3 ]
  %21 = phi i32 [ %205, %201 ], [ 34, %3 ]
  %22 = sext i32 %.089118 to i64
  %23 = getelementptr inbounds ptr, ptr %2, i64 %22
  %24 = load ptr, ptr %23, align 8, !tbaa !16
  %25 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.64) #3
  %26 = icmp eq i32 %25, 0
  br i1 %26, label %27, label %36

27:                                               ; preds = %.lr.ph
  %28 = add nsw i32 %.089118, 1
  %29 = icmp slt i32 %28, %1
  br i1 %29, label %30, label %35

30:                                               ; preds = %27
  %31 = sext i32 %28 to i64
  %32 = getelementptr inbounds ptr, ptr %2, i64 %31
  %33 = load ptr, ptr %32, align 8, !tbaa !16
  %34 = tail call i64 @atol(ptr nocapture noundef %33) #3
  store i64 %34, ptr %6, align 8, !tbaa !13
  br label %201

35:                                               ; preds = %27
  tail call void @print_CLI_error()
  br label %201

36:                                               ; preds = %.lr.ph
  %37 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.65) #3
  %38 = icmp eq i32 %37, 0
  br i1 %38, label %39, label %60

39:                                               ; preds = %36
  %40 = add nsw i32 %.089118, 1
  %41 = icmp slt i32 %40, %1
  br i1 %41, label %42, label %46

42:                                               ; preds = %39
  %43 = sext i32 %40 to i64
  %44 = getelementptr inbounds ptr, ptr %2, i64 %43
  %45 = load ptr, ptr %44, align 8, !tbaa !16
  br label %47

46:                                               ; preds = %39
  tail call void @print_CLI_error()
  br label %47

47:                                               ; preds = %46, %42
  %.185 = phi ptr [ %45, %42 ], [ %.084120, %46 ]
  %48 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.185, ptr noundef nonnull dereferenceable(1) @.str.66) #3
  %49 = icmp eq i32 %48, 0
  br i1 %49, label %50, label %51

50:                                               ; preds = %47
  store i32 1, ptr %4, align 4, !tbaa !5
  br label %201

51:                                               ; preds = %47
  %52 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.185, ptr noundef nonnull dereferenceable(1) @.str.67) #3
  %53 = icmp eq i32 %52, 0
  br i1 %53, label %54, label %59

54:                                               ; preds = %51
  store i32 2, ptr %4, align 4, !tbaa !5
  %55 = icmp ne i32 %.093116, 0
  %56 = icmp ne i32 %.091117, 0
  %or.cond = select i1 %55, i1 %56, i1 false
  br i1 %or.cond, label %57, label %201

57:                                               ; preds = %54
  %58 = mul nsw i32 %20, %21
  store i32 %58, ptr %8, align 8, !tbaa !18
  store i32 0, ptr %7, align 8, !tbaa !14
  br label %201

59:                                               ; preds = %51
  tail call void @print_CLI_error()
  br label %201

60:                                               ; preds = %36
  %61 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.68) #3
  %62 = icmp eq i32 %61, 0
  br i1 %62, label %63, label %72

63:                                               ; preds = %60
  %64 = add nsw i32 %.089118, 1
  %65 = icmp slt i32 %64, %1
  br i1 %65, label %66, label %71

66:                                               ; preds = %63
  %67 = sext i32 %64 to i64
  %68 = getelementptr inbounds ptr, ptr %2, i64 %67
  %69 = load ptr, ptr %68, align 8, !tbaa !16
  %70 = tail call i32 @atoi(ptr nocapture noundef %69) #3
  store i32 %70, ptr %8, align 8, !tbaa !18
  br label %201

71:                                               ; preds = %63
  tail call void @print_CLI_error()
  br label %201

72:                                               ; preds = %60
  %73 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.69) #3
  %74 = icmp eq i32 %73, 0
  br i1 %74, label %75, label %84

75:                                               ; preds = %72
  %76 = add nsw i32 %.089118, 1
  %77 = icmp slt i32 %76, %1
  br i1 %77, label %78, label %83

78:                                               ; preds = %75
  %79 = sext i32 %76 to i64
  %80 = getelementptr inbounds ptr, ptr %2, i64 %79
  %81 = load ptr, ptr %80, align 8, !tbaa !16
  %82 = tail call i32 @atoi(ptr nocapture noundef %81) #3
  store i32 %82, ptr %10, align 4, !tbaa !19
  br label %201

83:                                               ; preds = %75
  tail call void @print_CLI_error()
  br label %201

84:                                               ; preds = %72
  %85 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.70) #3
  %86 = icmp eq i32 %85, 0
  br i1 %86, label %87, label %96

87:                                               ; preds = %84
  %88 = add nsw i32 %.089118, 1
  %89 = icmp slt i32 %88, %1
  br i1 %89, label %90, label %95

90:                                               ; preds = %87
  %91 = sext i32 %88 to i64
  %92 = getelementptr inbounds ptr, ptr %2, i64 %91
  %93 = load ptr, ptr %92, align 8, !tbaa !16
  %94 = tail call i32 @atoi(ptr nocapture noundef %93) #3
  store i32 %94, ptr %7, align 8, !tbaa !14
  br label %201

95:                                               ; preds = %87
  tail call void @print_CLI_error()
  br label %201

96:                                               ; preds = %84
  %97 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.71) #3
  %98 = icmp eq i32 %97, 0
  br i1 %98, label %99, label %120

99:                                               ; preds = %96
  %100 = add nsw i32 %.089118, 1
  %101 = icmp slt i32 %100, %1
  br i1 %101, label %102, label %106

102:                                              ; preds = %99
  %103 = sext i32 %100 to i64
  %104 = getelementptr inbounds ptr, ptr %2, i64 %103
  %105 = load ptr, ptr %104, align 8, !tbaa !16
  br label %107

106:                                              ; preds = %99
  tail call void @print_CLI_error()
  br label %107

107:                                              ; preds = %106, %102
  %.182 = phi ptr [ %105, %102 ], [ %.081121, %106 ]
  %108 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.182, ptr noundef nonnull dereferenceable(1) @.str.72) #3
  %109 = icmp eq i32 %108, 0
  br i1 %109, label %110, label %111

110:                                              ; preds = %107
  store i32 0, ptr %13, align 4, !tbaa !20
  br label %201

111:                                              ; preds = %107
  %112 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.182, ptr noundef nonnull dereferenceable(1) @.str.73) #3
  %113 = icmp eq i32 %112, 0
  br i1 %113, label %114, label %115

114:                                              ; preds = %111
  store i32 1, ptr %13, align 4, !tbaa !20
  br label %201

115:                                              ; preds = %111
  %116 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.182, ptr noundef nonnull dereferenceable(1) @.str.24) #3
  %117 = icmp eq i32 %116, 0
  br i1 %117, label %118, label %119

118:                                              ; preds = %115
  store i32 2, ptr %13, align 4, !tbaa !20
  br label %201

119:                                              ; preds = %115
  tail call void @print_CLI_error()
  br label %201

120:                                              ; preds = %96
  %121 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.74) #3
  %122 = icmp eq i32 %121, 0
  br i1 %122, label %123, label %144

123:                                              ; preds = %120
  %124 = add nsw i32 %.089118, 1
  %125 = icmp slt i32 %124, %1
  br i1 %125, label %126, label %130

126:                                              ; preds = %123
  %127 = sext i32 %124 to i64
  %128 = getelementptr inbounds ptr, ptr %2, i64 %127
  %129 = load ptr, ptr %128, align 8, !tbaa !16
  br label %131

130:                                              ; preds = %123
  tail call void @print_CLI_error()
  br label %131

131:                                              ; preds = %130, %126
  %.179 = phi ptr [ %129, %126 ], [ %.078122, %130 ]
  %132 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.179, ptr noundef nonnull dereferenceable(1) @.str.75) #3
  %133 = icmp eq i32 %132, 0
  br i1 %133, label %134, label %135

134:                                              ; preds = %131
  store i32 0, ptr %9, align 8, !tbaa !21
  br label %201

135:                                              ; preds = %131
  %136 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.179, ptr noundef nonnull dereferenceable(1) @.str.76) #3
  %137 = icmp eq i32 %136, 0
  br i1 %137, label %138, label %139

138:                                              ; preds = %135
  store i32 1, ptr %9, align 8, !tbaa !21
  br label %201

139:                                              ; preds = %135
  %140 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.179, ptr noundef nonnull dereferenceable(1) @.str.77) #3
  %141 = icmp eq i32 %140, 0
  br i1 %141, label %142, label %143

142:                                              ; preds = %139
  store i32 2, ptr %9, align 8, !tbaa !21
  br label %201

143:                                              ; preds = %139
  tail call void @print_CLI_error()
  br label %201

144:                                              ; preds = %120
  %145 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.78) #3
  %146 = icmp eq i32 %145, 0
  br i1 %146, label %147, label %164

147:                                              ; preds = %144
  %148 = add nsw i32 %.089118, 1
  %149 = icmp slt i32 %148, %1
  br i1 %149, label %150, label %154

150:                                              ; preds = %147
  %151 = sext i32 %148 to i64
  %152 = getelementptr inbounds ptr, ptr %2, i64 %151
  %153 = load ptr, ptr %152, align 8, !tbaa !16
  br label %155

154:                                              ; preds = %147
  tail call void @print_CLI_error()
  br label %155

155:                                              ; preds = %154, %150
  %.1 = phi ptr [ %153, %150 ], [ %.0123, %154 ]
  %156 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.1, ptr noundef nonnull dereferenceable(1) @.str.79) #3
  %157 = icmp eq i32 %156, 0
  br i1 %157, label %158, label %159

158:                                              ; preds = %155
  store i32 1, ptr %11, align 8, !tbaa !22
  br label %201

159:                                              ; preds = %155
  %160 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %.1, ptr noundef nonnull dereferenceable(1) @.str.80) #3
  %161 = icmp eq i32 %160, 0
  br i1 %161, label %162, label %163

162:                                              ; preds = %159
  store i32 2, ptr %11, align 8, !tbaa !22
  br label %201

163:                                              ; preds = %159
  tail call void @print_CLI_error()
  br label %201

164:                                              ; preds = %144
  %165 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.81) #3
  %166 = icmp eq i32 %165, 0
  br i1 %166, label %167, label %176

167:                                              ; preds = %164
  %168 = add nsw i32 %.089118, 1
  %169 = icmp slt i32 %168, %1
  br i1 %169, label %170, label %175

170:                                              ; preds = %167
  %171 = sext i32 %168 to i64
  %172 = getelementptr inbounds ptr, ptr %2, i64 %171
  %173 = load ptr, ptr %172, align 8, !tbaa !16
  %174 = tail call i32 @atoi(ptr nocapture noundef %173) #3
  store i32 %174, ptr %12, align 4, !tbaa !23
  br label %201

175:                                              ; preds = %167
  tail call void @print_CLI_error()
  br label %201

176:                                              ; preds = %164
  %177 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.82) #3
  %178 = icmp eq i32 %177, 0
  br i1 %178, label %179, label %188

179:                                              ; preds = %176
  %180 = add nsw i32 %.089118, 1
  %181 = icmp slt i32 %180, %1
  br i1 %181, label %182, label %187

182:                                              ; preds = %179
  %183 = sext i32 %180 to i64
  %184 = getelementptr inbounds ptr, ptr %2, i64 %183
  %185 = load ptr, ptr %184, align 8, !tbaa !16
  %186 = tail call i32 @atoi(ptr nocapture noundef %185) #3
  store i32 %186, ptr %14, align 8, !tbaa !24
  br label %201

187:                                              ; preds = %179
  tail call void @print_CLI_error()
  br label %201

188:                                              ; preds = %176
  %189 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.83) #3
  %190 = icmp eq i32 %189, 0
  br i1 %190, label %191, label %200

191:                                              ; preds = %188
  %192 = add nsw i32 %.089118, 1
  %193 = icmp slt i32 %192, %1
  br i1 %193, label %194, label %199

194:                                              ; preds = %191
  %195 = sext i32 %192 to i64
  %196 = getelementptr inbounds ptr, ptr %2, i64 %195
  %197 = load ptr, ptr %196, align 8, !tbaa !16
  %198 = tail call i32 @atoi(ptr nocapture noundef %197) #3
  store i32 %198, ptr %15, align 4, !tbaa !25
  br label %201

199:                                              ; preds = %191
  tail call void @print_CLI_error()
  br label %201

200:                                              ; preds = %188
  tail call void @print_CLI_error()
  br label %201

201:                                              ; preds = %158, %163, %162, %134, %142, %143, %138, %110, %118, %119, %114, %50, %54, %57, %59, %83, %78, %187, %182, %194, %199, %200, %170, %175, %90, %95, %66, %71, %30, %35
  %202 = phi i32 [ %17, %30 ], [ %17, %35 ], [ %17, %66 ], [ %17, %71 ], [ %17, %78 ], [ %17, %83 ], [ %17, %90 ], [ %17, %95 ], [ %17, %170 ], [ %17, %175 ], [ %17, %182 ], [ %17, %187 ], [ %17, %194 ], [ %17, %199 ], [ %17, %200 ], [ %17, %59 ], [ %17, %57 ], [ %17, %54 ], [ %17, %50 ], [ 1, %114 ], [ %17, %119 ], [ 2, %118 ], [ 0, %110 ], [ %17, %138 ], [ %17, %143 ], [ %17, %142 ], [ %17, %134 ], [ %17, %162 ], [ %17, %163 ], [ %17, %158 ]
  %203 = phi i32 [ %18, %30 ], [ %18, %35 ], [ %18, %66 ], [ %18, %71 ], [ %82, %78 ], [ %18, %83 ], [ %18, %90 ], [ %18, %95 ], [ %18, %170 ], [ %18, %175 ], [ %18, %182 ], [ %18, %187 ], [ %18, %194 ], [ %18, %199 ], [ %18, %200 ], [ %18, %59 ], [ %18, %57 ], [ %18, %54 ], [ %18, %50 ], [ %18, %114 ], [ %18, %119 ], [ %18, %118 ], [ %18, %110 ], [ %18, %138 ], [ %18, %143 ], [ %18, %142 ], [ %18, %134 ], [ %18, %162 ], [ %18, %163 ], [ %18, %158 ]
  %204 = phi i64 [ %34, %30 ], [ %19, %35 ], [ %19, %66 ], [ %19, %71 ], [ %19, %78 ], [ %19, %83 ], [ %19, %90 ], [ %19, %95 ], [ %19, %170 ], [ %19, %175 ], [ %19, %182 ], [ %19, %187 ], [ %19, %194 ], [ %19, %199 ], [ %19, %200 ], [ %19, %59 ], [ %19, %57 ], [ %19, %54 ], [ %19, %50 ], [ %19, %114 ], [ %19, %119 ], [ %19, %118 ], [ %19, %110 ], [ %19, %138 ], [ %19, %143 ], [ %19, %142 ], [ %19, %134 ], [ %19, %162 ], [ %19, %163 ], [ %19, %158 ]
  %205 = phi i32 [ %21, %30 ], [ %21, %35 ], [ %70, %66 ], [ %21, %71 ], [ %21, %78 ], [ %21, %83 ], [ %21, %90 ], [ %21, %95 ], [ %21, %170 ], [ %21, %175 ], [ %21, %182 ], [ %21, %187 ], [ %21, %194 ], [ %21, %199 ], [ %21, %200 ], [ %21, %59 ], [ %58, %57 ], [ %21, %54 ], [ %21, %50 ], [ %21, %114 ], [ %21, %119 ], [ %21, %118 ], [ %21, %110 ], [ %21, %138 ], [ %21, %143 ], [ %21, %142 ], [ %21, %134 ], [ %21, %162 ], [ %21, %163 ], [ %21, %158 ]
  %206 = phi i32 [ %20, %30 ], [ %20, %35 ], [ %20, %66 ], [ %20, %71 ], [ %20, %78 ], [ %20, %83 ], [ %94, %90 ], [ %20, %95 ], [ %20, %170 ], [ %20, %175 ], [ %20, %182 ], [ %20, %187 ], [ %20, %194 ], [ %20, %199 ], [ %20, %200 ], [ %20, %59 ], [ 0, %57 ], [ %20, %54 ], [ %20, %50 ], [ %20, %114 ], [ %20, %119 ], [ %20, %118 ], [ %20, %110 ], [ %20, %138 ], [ %20, %143 ], [ %20, %142 ], [ %20, %134 ], [ %20, %162 ], [ %20, %163 ], [ %20, %158 ]
  %.194 = phi i32 [ %.093116, %30 ], [ %.093116, %35 ], [ 0, %66 ], [ %.093116, %71 ], [ %.093116, %78 ], [ %.093116, %83 ], [ %.093116, %90 ], [ %.093116, %95 ], [ %.093116, %170 ], [ %.093116, %175 ], [ %.093116, %182 ], [ %.093116, %187 ], [ %.093116, %194 ], [ %.093116, %199 ], [ %.093116, %200 ], [ %.093116, %59 ], [ %.093116, %57 ], [ %.093116, %54 ], [ %.093116, %50 ], [ %.093116, %114 ], [ %.093116, %119 ], [ %.093116, %118 ], [ %.093116, %110 ], [ %.093116, %138 ], [ %.093116, %143 ], [ %.093116, %142 ], [ %.093116, %134 ], [ %.093116, %162 ], [ %.093116, %163 ], [ %.093116, %158 ]
  %.192 = phi i32 [ %.091117, %30 ], [ %.091117, %35 ], [ %.091117, %66 ], [ %.091117, %71 ], [ %.091117, %78 ], [ %.091117, %83 ], [ 0, %90 ], [ %.091117, %95 ], [ %.091117, %170 ], [ %.091117, %175 ], [ %.091117, %182 ], [ %.091117, %187 ], [ %.091117, %194 ], [ %.091117, %199 ], [ %.091117, %200 ], [ %.091117, %59 ], [ %.091117, %57 ], [ %.091117, %54 ], [ %.091117, %50 ], [ %.091117, %114 ], [ %.091117, %119 ], [ %.091117, %118 ], [ %.091117, %110 ], [ %.091117, %138 ], [ %.091117, %143 ], [ %.091117, %142 ], [ %.091117, %134 ], [ %.091117, %162 ], [ %.091117, %163 ], [ %.091117, %158 ]
  %.190 = phi i32 [ %28, %30 ], [ %28, %35 ], [ %64, %66 ], [ %64, %71 ], [ %76, %78 ], [ %76, %83 ], [ %88, %90 ], [ %88, %95 ], [ %168, %170 ], [ %168, %175 ], [ %180, %182 ], [ %180, %187 ], [ %192, %194 ], [ %192, %199 ], [ %.089118, %200 ], [ %40, %59 ], [ %40, %57 ], [ %40, %54 ], [ %40, %50 ], [ %100, %114 ], [ %100, %119 ], [ %100, %118 ], [ %100, %110 ], [ %124, %138 ], [ %124, %143 ], [ %124, %142 ], [ %124, %134 ], [ %148, %162 ], [ %148, %163 ], [ %148, %158 ]
  %.188 = phi i32 [ 1, %30 ], [ %.087119, %35 ], [ %.087119, %66 ], [ %.087119, %71 ], [ %.087119, %78 ], [ %.087119, %83 ], [ %.087119, %90 ], [ %.087119, %95 ], [ %.087119, %170 ], [ %.087119, %175 ], [ %.087119, %182 ], [ %.087119, %187 ], [ %.087119, %194 ], [ %.087119, %199 ], [ %.087119, %200 ], [ %.087119, %59 ], [ %.087119, %57 ], [ %.087119, %54 ], [ %.087119, %50 ], [ %.087119, %114 ], [ %.087119, %119 ], [ %.087119, %118 ], [ %.087119, %110 ], [ %.087119, %138 ], [ %.087119, %143 ], [ %.087119, %142 ], [ %.087119, %134 ], [ %.087119, %162 ], [ %.087119, %163 ], [ %.087119, %158 ]
  %.286 = phi ptr [ %.084120, %30 ], [ %.084120, %35 ], [ %.084120, %66 ], [ %.084120, %71 ], [ %.084120, %78 ], [ %.084120, %83 ], [ %.084120, %90 ], [ %.084120, %95 ], [ %.084120, %170 ], [ %.084120, %175 ], [ %.084120, %182 ], [ %.084120, %187 ], [ %.084120, %194 ], [ %.084120, %199 ], [ %.084120, %200 ], [ %.185, %59 ], [ %.185, %57 ], [ %.185, %54 ], [ %.185, %50 ], [ %.084120, %114 ], [ %.084120, %119 ], [ %.084120, %118 ], [ %.084120, %110 ], [ %.084120, %138 ], [ %.084120, %143 ], [ %.084120, %142 ], [ %.084120, %134 ], [ %.084120, %162 ], [ %.084120, %163 ], [ %.084120, %158 ]
  %.283 = phi ptr [ %.081121, %30 ], [ %.081121, %35 ], [ %.081121, %66 ], [ %.081121, %71 ], [ %.081121, %78 ], [ %.081121, %83 ], [ %.081121, %90 ], [ %.081121, %95 ], [ %.081121, %170 ], [ %.081121, %175 ], [ %.081121, %182 ], [ %.081121, %187 ], [ %.081121, %194 ], [ %.081121, %199 ], [ %.081121, %200 ], [ %.081121, %59 ], [ %.081121, %57 ], [ %.081121, %54 ], [ %.081121, %50 ], [ %.182, %114 ], [ %.182, %119 ], [ %.182, %118 ], [ %.182, %110 ], [ %.081121, %138 ], [ %.081121, %143 ], [ %.081121, %142 ], [ %.081121, %134 ], [ %.081121, %162 ], [ %.081121, %163 ], [ %.081121, %158 ]
  %.280 = phi ptr [ %.078122, %30 ], [ %.078122, %35 ], [ %.078122, %66 ], [ %.078122, %71 ], [ %.078122, %78 ], [ %.078122, %83 ], [ %.078122, %90 ], [ %.078122, %95 ], [ %.078122, %170 ], [ %.078122, %175 ], [ %.078122, %182 ], [ %.078122, %187 ], [ %.078122, %194 ], [ %.078122, %199 ], [ %.078122, %200 ], [ %.078122, %59 ], [ %.078122, %57 ], [ %.078122, %54 ], [ %.078122, %50 ], [ %.078122, %114 ], [ %.078122, %119 ], [ %.078122, %118 ], [ %.078122, %110 ], [ %.179, %138 ], [ %.179, %143 ], [ %.179, %142 ], [ %.179, %134 ], [ %.078122, %162 ], [ %.078122, %163 ], [ %.078122, %158 ]
  %.2 = phi ptr [ %.0123, %30 ], [ %.0123, %35 ], [ %.0123, %66 ], [ %.0123, %71 ], [ %.0123, %78 ], [ %.0123, %83 ], [ %.0123, %90 ], [ %.0123, %95 ], [ %.0123, %170 ], [ %.0123, %175 ], [ %.0123, %182 ], [ %.0123, %187 ], [ %.0123, %194 ], [ %.0123, %199 ], [ %.0123, %200 ], [ %.0123, %59 ], [ %.0123, %57 ], [ %.0123, %54 ], [ %.0123, %50 ], [ %.0123, %114 ], [ %.0123, %119 ], [ %.0123, %118 ], [ %.0123, %110 ], [ %.0123, %138 ], [ %.0123, %143 ], [ %.0123, %142 ], [ %.0123, %134 ], [ %.1, %162 ], [ %.1, %163 ], [ %.1, %158 ]
  %207 = add nsw i32 %.190, 1
  %208 = icmp slt i32 %207, %1
  br i1 %208, label %.lr.ph, label %._crit_edge, !llvm.loop !26

._crit_edge:                                      ; preds = %201
  %209 = icmp slt i64 %204, 1
  %210 = icmp slt i32 %205, 1
  %211 = icmp slt i32 %203, 1
  %212 = icmp eq i32 %.188, 0
  br i1 %209, label %213, label %214

213:                                              ; preds = %._crit_edge
  tail call void @print_CLI_error()
  br i1 %210, label %215, label %216

214:                                              ; preds = %._crit_edge
  br i1 %210, label %215, label %216

215:                                              ; preds = %213, %214
  tail call void @print_CLI_error()
  br i1 %211, label %217, label %218

216:                                              ; preds = %213, %214
  br i1 %211, label %217, label %218

217:                                              ; preds = %215, %216
  tail call void @print_CLI_error()
  br label %218

218:                                              ; preds = %215, %217, %216
  %219 = icmp eq i32 %202, 0
  br i1 %219, label %220, label %221

220:                                              ; preds = %218
  store i64 68, ptr %5, align 8, !tbaa !12
  br label %.thread136

221:                                              ; preds = %218
  %222 = icmp eq i32 %202, 2
  %or.cond3 = select i1 %222, i1 %212, i1 false
  br i1 %or.cond3, label %223, label %.thread136

223:                                              ; preds = %221
  store i64 238847, ptr %6, align 8, !tbaa !13
  br label %.thread136

.thread136:                                       ; preds = %3, %221, %223, %220
  ret void
}

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

; Function Attrs: inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable
declare i64 @atol(ptr nocapture noundef nonnull) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr nocapture noundef nonnull) local_unnamed_addr #2

attributes #0 = { 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 #1 = { 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 #2 = { inlinehint mustprogress nofree nounwind willreturn memory(read) 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 #3 = { nounwind willreturn memory(read) }

!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, !7, i64 44}
!6 = !{!"", !7, i64 0, !10, i64 8, !10, i64 16, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"long", !8, i64 0}
!11 = !{!6, !7, i64 0}
!12 = !{!6, !10, i64 8}
!13 = !{!6, !10, i64 16}
!14 = !{!6, !7, i64 40}
!15 = !{!7, !7, i64 0}
!16 = !{!17, !17, i64 0}
!17 = !{!"any pointer", !8, i64 0}
!18 = !{!6, !7, i64 24}
!19 = !{!6, !7, i64 36}
!20 = !{!6, !7, i64 28}
!21 = !{!6, !7, i64 32}
!22 = !{!6, !7, i64 48}
!23 = !{!6, !7, i64 52}
!24 = !{!6, !7, i64 56}
!25 = !{!6, !7, i64 60}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}


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