; LLVM IR from jrl-umi3218/mc_rtc :: 3rd-party/qhull/src/libqhull_r (io_r)

; 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.qhT = type { i32, i32, i32, i32, i32, i32, double, i32, i32, i32, i32, i32, i32, i32, i32, double, double, i32, i32, i32, i32, i32, i32, ptr, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, double, double, i32, i32, i32, i32, double, double, i32, i32, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [29 x i32], i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, i32, i32, i32, i32, i32, i32, i32, i32, double, i32, ptr, ptr, i32, i32, i32, i32, i32, ptr, i32, ptr, i32, [256 x i8], i32, [256 x i8], [512 x i8], i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, double, double, double, double, double, double, double, double, double, double, double, double, double, double, ptr, double, double, double, double, i32, [6 x i8], [1 x %struct.__jmp_buf_tag], [40 x i8], [1 x %struct.__jmp_buf_tag], [40 x i8], ptr, ptr, ptr, ptr, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, i32, i32, ptr, i32, ptr, i32, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i64, i32, i32, i32, i32, i32, ptr, ptr, i32, i32, i32, double, i32, double, double, double, i32, i32, i32, i32, i32, double, double, i32, i32, i32, i32, i32, i32, double, double, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, ptr, ptr, i32, i32, i32, ptr, double, double, double, double, i32, i32, i32, i32, i32, i32, ptr, i32, i32, [1 x %struct.__jmp_buf_tag], [40 x i8], i32, double, ptr, ptr, ptr, %struct.qhmemT, %struct.qhstatT }
%struct.__jmp_buf_tag = type { [8 x i64], i32, %struct.__sigset_t }
%struct.__sigset_t = type { [16 x i64] }
%struct.qhmemT = type { i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, i32, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.qhstatT = type { [249 x %union.intrealT], [259 x i8], [249 x ptr], [249 x i16], [249 x i8], [249 x i8], [9 x %union.intrealT], i32, i32, i32, i32, double }
%union.intrealT = type { double }

@.str.205 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.206 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.207 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.208 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.209 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.210 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.211 = external hidden unnamed_addr constant [112 x i8], align 1
@.str.212 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.213 = external hidden unnamed_addr constant [100 x i8], align 1
@.str.214 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.215 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.216 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.217 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.218 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.219 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.220 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.221 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.222 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.223 = external hidden unnamed_addr constant [95 x i8], align 1
@.str.224 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.225 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.226 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.227 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.228 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.229 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.230 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.231 = external hidden unnamed_addr constant [365 x i8], align 1
@.str.232 = external hidden unnamed_addr constant [49 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

declare void @qh_fprintf(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ...) #1

declare void @qh_errexit(ptr noundef, i32 noundef, ptr noundef, ptr noundef) #1

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #2

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

declare ptr @qh_malloc(i64 noundef) #1

declare ptr @fgets(ptr noundef, i32 noundef, ptr noundef) #1

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

declare double @qh_strtod(ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
define dso_local ptr @qh_readpoints(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) #3 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca [201 x i8], align 16
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  store ptr null, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  store double 0xFFEFFFFFFFFFFFFF, ptr %13, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  store ptr null, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  store ptr null, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  store ptr null, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  store ptr null, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.start.p0(i64 201, ptr %20) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #7
  store i32 0, ptr %21, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #7
  store i32 0, ptr %22, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #7
  store i32 0, ptr %23, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #7
  store i32 0, ptr %27, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  store i32 0, ptr %28, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #7
  store i32 0, ptr %29, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #7
  store i32 0, ptr %30, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #7
  store i32 0, ptr %31, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #7
  store i32 0, ptr %32, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #7
  store i32 0, ptr %34, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #7
  store i32 1, ptr %36, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #7
  store i32 0, ptr %37, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #7
  %39 = load ptr, ptr %5, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.qhT, ptr %39, i32 0, i32 17
  %41 = load i32, ptr %40, align 8, !tbaa !13
  %42 = icmp ne i32 %41, 0
  br i1 %42, label %43, label %49

43:                                               ; preds = %4
  %44 = load ptr, ptr %5, align 8, !tbaa !5
  %45 = getelementptr inbounds %struct.qhT, ptr %44, i32 0, i32 71
  %46 = load i32, ptr %45, align 8, !tbaa !18
  %47 = icmp ne i32 %46, 0
  %48 = xor i1 %47, true
  br label %49

49:                                               ; preds = %43, %4
  %50 = phi i1 [ false, %4 ], [ %48, %43 ]
  %51 = zext i1 %50 to i32
  store i32 %51, ptr %38, align 4, !tbaa !11
  %52 = load ptr, ptr %5, align 8, !tbaa !5
  %53 = getelementptr inbounds %struct.qhT, ptr %52, i32 0, i32 11
  %54 = load i32, ptr %53, align 8, !tbaa !19
  %55 = icmp ne i32 %54, 0
  br i1 %55, label %56, label %151

56:                                               ; preds = %49
  br label %57

57:                                               ; preds = %140, %56
  %58 = getelementptr inbounds [201 x i8], ptr %20, i64 0, i64 0
  %59 = load ptr, ptr %5, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.qhT, ptr %59, i32 0, i32 156
  %61 = load ptr, ptr %60, align 8, !tbaa !20
  %62 = call ptr @fgets(ptr noundef %58, i32 noundef 200, ptr noundef %61)
  store ptr %62, ptr %18, align 8, !tbaa !5
  %63 = icmp ne ptr %62, null
  br i1 %63, label %64, label %141

64:                                               ; preds = %57
  %65 = load i32, ptr %32, align 4, !tbaa !11
  %66 = add nsw i32 %65, 1
  store i32 %66, ptr %32, align 4, !tbaa !11
  %67 = load ptr, ptr %5, align 8, !tbaa !5
  %68 = getelementptr inbounds %struct.qhT, ptr %67, i32 0, i32 27
  %69 = load i32, ptr %68, align 8, !tbaa !21
  %70 = icmp ne i32 %69, 0
  br i1 %70, label %71, label %117

71:                                               ; preds = %64
  %72 = load i32, ptr %32, align 4, !tbaa !11
  %73 = icmp eq i32 %72, 1
  br i1 %73, label %74, label %117

74:                                               ; preds = %71
  %75 = call ptr @__ctype_b_loc() #8
  %76 = load ptr, ptr %75, align 8, !tbaa !5
  %77 = load ptr, ptr %18, align 8, !tbaa !5
  %78 = load i8, ptr %77, align 1, !tbaa !22
  %79 = sext i8 %78 to i32
  %80 = sext i32 %79 to i64
  %81 = getelementptr inbounds i16, ptr %76, i64 %80
  %82 = load i16, ptr %81, align 2, !tbaa !23
  %83 = zext i16 %82 to i32
  %84 = and i32 %83, 2048
  %85 = icmp ne i32 %84, 0
  br i1 %85, label %86, label %117

86:                                               ; preds = %74
  %87 = load ptr, ptr %18, align 8, !tbaa !5
  %88 = call i32 @qh_strtol(ptr noundef %87, ptr noundef %18)
  store i32 %88, ptr %23, align 4, !tbaa !11
  br label %89

89:                                               ; preds = %101, %86
  %90 = call ptr @__ctype_b_loc() #8
  %91 = load ptr, ptr %90, align 8, !tbaa !5
  %92 = load ptr, ptr %18, align 8, !tbaa !5
  %93 = load i8, ptr %92, align 1, !tbaa !22
  %94 = sext i8 %93 to i32
  %95 = sext i32 %94 to i64
  %96 = getelementptr inbounds i16, ptr %91, i64 %95
  %97 = load i16, ptr %96, align 2, !tbaa !23
  %98 = zext i16 %97 to i32
  %99 = and i32 %98, 8192
  %100 = icmp ne i32 %99, 0
  br i1 %100, label %101, label %104

101:                                              ; preds = %89
  %102 = load ptr, ptr %18, align 8, !tbaa !5
  %103 = getelementptr inbounds i8, ptr %102, i32 1
  store ptr %103, ptr %18, align 8, !tbaa !5
  br label %89, !llvm.loop !25

104:                                              ; preds = %89
  %105 = load ptr, ptr %18, align 8, !tbaa !5
  %106 = call i32 @qh_strtol(ptr noundef %105, ptr noundef %18)
  %107 = icmp eq i32 %106, 1
  br i1 %107, label %108, label %115

108:                                              ; preds = %104
  %109 = load ptr, ptr %5, align 8, !tbaa !5
  %110 = load i32, ptr %23, align 4, !tbaa !11
  %111 = load ptr, ptr %18, align 8, !tbaa !5
  %112 = call i32 @qh_readfeasible(ptr noundef %109, i32 noundef %110, ptr noundef %111)
  %113 = load i32, ptr %32, align 4, !tbaa !11
  %114 = add nsw i32 %113, %112
  store i32 %114, ptr %32, align 4, !tbaa !11
  br label %116

115:                                              ; preds = %104
  store i32 0, ptr %23, align 4, !tbaa !11
  br label %116

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

117:                                              ; preds = %74, %71, %64
  %118 = getelementptr inbounds [201 x i8], ptr %20, i64 0, i64 0
  %119 = call i32 @memcmp(ptr noundef %118, ptr noundef @.str.205, i64 noundef 5) #9
  %120 = icmp ne i32 %119, 0
  br i1 %120, label %121, label %125

121:                                              ; preds = %117
  %122 = getelementptr inbounds [201 x i8], ptr %20, i64 0, i64 0
  %123 = call i32 @memcmp(ptr noundef %122, ptr noundef @.str.206, i64 noundef 5) #9
  %124 = icmp ne i32 %123, 0
  br i1 %124, label %126, label %125

125:                                              ; preds = %121, %117
  br label %141

126:                                              ; preds = %121
  %127 = load ptr, ptr %5, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.qhT, ptr %127, i32 0, i32 119
  %129 = getelementptr inbounds [256 x i8], ptr %128, i64 0, i64 0
  %130 = load i8, ptr %129, align 8, !tbaa !22
  %131 = icmp ne i8 %130, 0
  br i1 %131, label %138, label %132

132:                                              ; preds = %126
  %133 = load ptr, ptr %5, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.qhT, ptr %133, i32 0, i32 119
  %135 = getelementptr inbounds [256 x i8], ptr %134, i64 0, i64 0
  %136 = load ptr, ptr %18, align 8, !tbaa !5
  %137 = call ptr @strncat(ptr noundef %135, ptr noundef %136, i64 noundef 255) #7
  br label %138

138:                                              ; preds = %132, %126
  br label %139

139:                                              ; preds = %138
  br label %140

140:                                              ; preds = %139, %116
  br label %57, !llvm.loop !27

141:                                              ; preds = %125, %57
  %142 = load ptr, ptr %18, align 8, !tbaa !5
  %143 = icmp ne ptr %142, null
  br i1 %143, label %150, label %144

144:                                              ; preds = %141
  %145 = load ptr, ptr %5, align 8, !tbaa !5
  %146 = load ptr, ptr %5, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.qhT, ptr %146, i32 0, i32 158
  %148 = load ptr, ptr %147, align 8, !tbaa !28
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %145, ptr noundef %148, i32 noundef 6074, ptr noundef @.str.207)
  %149 = load ptr, ptr %5, align 8, !tbaa !5
  call void @qh_errexit(ptr noundef %149, i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %150

150:                                              ; preds = %144, %141
  br label %151

151:                                              ; preds = %150, %49
  br label %152

152:                                              ; preds = %262, %151
  %153 = load i32, ptr %22, align 4, !tbaa !11
  %154 = icmp ne i32 %153, 0
  br i1 %154, label %162, label %155

155:                                              ; preds = %152
  %156 = getelementptr inbounds [201 x i8], ptr %20, i64 0, i64 0
  %157 = load ptr, ptr %5, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.qhT, ptr %157, i32 0, i32 156
  %159 = load ptr, ptr %158, align 8, !tbaa !20
  %160 = call ptr @fgets(ptr noundef %156, i32 noundef 200, ptr noundef %159)
  store ptr %160, ptr %18, align 8, !tbaa !5
  %161 = icmp ne ptr %160, null
  br label %162

162:                                              ; preds = %155, %152
  %163 = phi i1 [ false, %152 ], [ %161, %155 ]
  br i1 %163, label %164, label %263

164:                                              ; preds = %162
  %165 = load i32, ptr %32, align 4, !tbaa !11
  %166 = add nsw i32 %165, 1
  store i32 %166, ptr %32, align 4, !tbaa !11
  %167 = load ptr, ptr %18, align 8, !tbaa !5
  %168 = call i32 @memcmp(ptr noundef %167, ptr noundef @.str.205, i64 noundef 5) #9
  %169 = icmp ne i32 %168, 0
  br i1 %169, label %170, label %174

170:                                              ; preds = %164
  %171 = load ptr, ptr %18, align 8, !tbaa !5
  %172 = call i32 @memcmp(ptr noundef %171, ptr noundef @.str.206, i64 noundef 5) #9
  %173 = icmp ne i32 %172, 0
  br i1 %173, label %175, label %174

174:                                              ; preds = %170, %164
  store i32 1, ptr %37, align 4, !tbaa !11
  br label %175

175:                                              ; preds = %174, %170
  br label %176

176:                                              ; preds = %261, %175
  %177 = load ptr, ptr %18, align 8, !tbaa !5
  %178 = load i8, ptr %177, align 1, !tbaa !22
  %179 = icmp ne i8 %178, 0
  br i1 %179, label %180, label %262

180:                                              ; preds = %176
  br label %181

181:                                              ; preds = %193, %180
  %182 = call ptr @__ctype_b_loc() #8
  %183 = load ptr, ptr %182, align 8, !tbaa !5
  %184 = load ptr, ptr %18, align 8, !tbaa !5
  %185 = load i8, ptr %184, align 1, !tbaa !22
  %186 = sext i8 %185 to i32
  %187 = sext i32 %186 to i64
  %188 = getelementptr inbounds i16, ptr %183, i64 %187
  %189 = load i16, ptr %188, align 2, !tbaa !23
  %190 = zext i16 %189 to i32
  %191 = and i32 %190, 8192
  %192 = icmp ne i32 %191, 0
  br i1 %192, label %193, label %196

193:                                              ; preds = %181
  %194 = load ptr, ptr %18, align 8, !tbaa !5
  %195 = getelementptr inbounds i8, ptr %194, i32 1
  store ptr %195, ptr %18, align 8, !tbaa !5
  br label %181, !llvm.loop !29

196:                                              ; preds = %181
  %197 = load ptr, ptr %18, align 8, !tbaa !5
  %198 = load i8, ptr %197, align 1, !tbaa !22
  %199 = icmp ne i8 %198, 0
  br i1 %199, label %201, label %200

200:                                              ; preds = %196
  br label %262

201:                                              ; preds = %196
  %202 = call ptr @__ctype_b_loc() #8
  %203 = load ptr, ptr %202, align 8, !tbaa !5
  %204 = load ptr, ptr %18, align 8, !tbaa !5
  %205 = load i8, ptr %204, align 1, !tbaa !22
  %206 = sext i8 %205 to i32
  %207 = sext i32 %206 to i64
  %208 = getelementptr inbounds i16, ptr %203, i64 %207
  %209 = load i16, ptr %208, align 2, !tbaa !23
  %210 = zext i16 %209 to i32
  %211 = and i32 %210, 2048
  %212 = icmp ne i32 %211, 0
  br i1 %212, label %227, label %213

213:                                              ; preds = %201
  %214 = load ptr, ptr %5, align 8, !tbaa !5
  %215 = getelementptr inbounds %struct.qhT, ptr %214, i32 0, i32 119
  %216 = getelementptr inbounds [256 x i8], ptr %215, i64 0, i64 0
  %217 = load i8, ptr %216, align 8, !tbaa !22
  %218 = icmp ne i8 %217, 0
  br i1 %218, label %226, label %219

219:                                              ; preds = %213
  %220 = load ptr, ptr %5, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.qhT, ptr %220, i32 0, i32 119
  %222 = getelementptr inbounds [256 x i8], ptr %221, i64 0, i64 0
  %223 = load ptr, ptr %18, align 8, !tbaa !5
  %224 = call ptr @strncat(ptr noundef %222, ptr noundef %223, i64 noundef 255) #7
  %225 = load i32, ptr %32, align 4, !tbaa !11
  store i32 %225, ptr %27, align 4, !tbaa !11
  br label %226

226:                                              ; preds = %219, %213
  br label %262

227:                                              ; preds = %201
  %228 = load i32, ptr %21, align 4, !tbaa !11
  %229 = icmp ne i32 %228, 0
  br i1 %229, label %233, label %230

230:                                              ; preds = %227
  %231 = load ptr, ptr %18, align 8, !tbaa !5
  %232 = call i32 @qh_strtol(ptr noundef %231, ptr noundef %18)
  store i32 %232, ptr %21, align 4, !tbaa !11
  br label %261

233:                                              ; preds = %227
  %234 = load ptr, ptr %18, align 8, !tbaa !5
  %235 = call i32 @qh_strtol(ptr noundef %234, ptr noundef %18)
  store i32 %235, ptr %22, align 4, !tbaa !11
  %236 = load i32, ptr %22, align 4, !tbaa !11
  %237 = icmp eq i32 %236, 1
  br i1 %237, label %238, label %259

238:                                              ; preds = %233
  %239 = load i32, ptr %21, align 4, !tbaa !11
  %240 = icmp sge i32 %239, 2
  br i1 %240, label %241, label %259

241:                                              ; preds = %238
  %242 = load ptr, ptr %5, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.qhT, ptr %242, i32 0, i32 27
  %244 = load i32, ptr %243, align 8, !tbaa !21
  %245 = icmp ne i32 %244, 0
  br i1 %245, label %246, label %259

246:                                              ; preds = %241
  %247 = load ptr, ptr %5, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.qhT, ptr %247, i32 0, i32 11
  %249 = load i32, ptr %248, align 8, !tbaa !19
  %250 = icmp ne i32 %249, 0
  br i1 %250, label %259, label %251

251:                                              ; preds = %246
  %252 = load ptr, ptr %5, align 8, !tbaa !5
  %253 = load i32, ptr %21, align 4, !tbaa !11
  %254 = load ptr, ptr %18, align 8, !tbaa !5
  %255 = call i32 @qh_readfeasible(ptr noundef %252, i32 noundef %253, ptr noundef %254)
  %256 = load i32, ptr %32, align 4, !tbaa !11
  %257 = add nsw i32 %256, %255
  store i32 %257, ptr %32, align 4, !tbaa !11
  %258 = load i32, ptr %21, align 4, !tbaa !11
  store i32 %258, ptr %23, align 4, !tbaa !11
  store i32 0, ptr %22, align 4, !tbaa !11
  store i32 0, ptr %21, align 4, !tbaa !11
  br label %260

259:                                              ; preds = %246, %241, %238, %233
  br label %262

260:                                              ; preds = %251
  br label %261

261:                                              ; preds = %260, %230
  br label %176, !llvm.loop !30

262:                                              ; preds = %259, %226, %200, %176
  br label %152, !llvm.loop !31

263:                                              ; preds = %162
  %264 = load ptr, ptr %18, align 8, !tbaa !5
  %265 = icmp ne ptr %264, null
  br i1 %265, label %272, label %266

266:                                              ; preds = %263
  %267 = load ptr, ptr %5, align 8, !tbaa !5
  %268 = load ptr, ptr %5, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.qhT, ptr %268, i32 0, i32 158
  %270 = load ptr, ptr %269, align 8, !tbaa !28
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %267, ptr noundef %270, i32 noundef 6075, ptr noundef @.str.208)
  %271 = load ptr, ptr %5, align 8, !tbaa !5
  call void @qh_errexit(ptr noundef %271, i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %272

272:                                              ; preds = %266, %263
  %273 = load i32, ptr %21, align 4, !tbaa !11
  %274 = load i32, ptr %22, align 4, !tbaa !11
  %275 = icmp sgt i32 %273, %274
  br i1 %275, label %276, label %280

276:                                              ; preds = %272
  %277 = load i32, ptr %21, align 4, !tbaa !11
  store i32 %277, ptr %26, align 4, !tbaa !11
  %278 = load i32, ptr %22, align 4, !tbaa !11
  store i32 %278, ptr %21, align 4, !tbaa !11
  %279 = load i32, ptr %26, align 4, !tbaa !11
  store i32 %279, ptr %22, align 4, !tbaa !11
  br label %280

280:                                              ; preds = %276, %272
  %281 = load i32, ptr %21, align 4, !tbaa !11
  %282 = icmp slt i32 %281, 2
  br i1 %282, label %283, label %290

283:                                              ; preds = %280
  %284 = load ptr, ptr %5, align 8, !tbaa !5
  %285 = load ptr, ptr %5, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.qhT, ptr %285, i32 0, i32 158
  %287 = load ptr, ptr %286, align 8, !tbaa !28
  %288 = load i32, ptr %21, align 4, !tbaa !11
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %284, ptr noundef %287, i32 noundef 6220, ptr noundef @.str.209, i32 noundef %288)
  %289 = load ptr, ptr %5, align 8, !tbaa !5
  call void @qh_errexit(ptr noundef %289, i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %290

290:                                              ; preds = %283, %280
  %291 = load i32, ptr %22, align 4, !tbaa !11
  %292 = icmp slt i32 %291, 1
  br i1 %292, label %296, label %293

293:                                              ; preds = %290
  %294 = load i32, ptr %22, align 4, !tbaa !11
  %295 = icmp sgt i32 %294, 2147483631
  br i1 %295, label %296, label %304

296:                                              ; preds = %293, %290
  %297 = load ptr, ptr %5, align 8, !tbaa !5
  %298 = load ptr, ptr %5, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.qhT, ptr %298, i32 0, i32 158
  %300 = load ptr, ptr %299, align 8, !tbaa !28
  %301 = load i32, ptr %22, align 4, !tbaa !11
  %302 = load i32, ptr %21, align 4, !tbaa !11
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %297, ptr noundef %300, i32 noundef 6411, ptr noundef @.str.210, i32 noundef 2147483631, i32 noundef %301, i32 noundef %302)
  %303 = load ptr, ptr %5, align 8, !tbaa !5
  call void @qh_errexit(ptr noundef %303, i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %304

304:                                              ; preds = %296, %293
  %305 = load i32, ptr %38, align 4, !tbaa !11
  %306 = icmp ne i32 %305, 0
  br i1 %306, label %307, label %318

307:                                              ; preds = %304
  %308 = load ptr, ptr %5, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.qhT, ptr %308, i32 0, i32 27
  %310 = load i32, ptr %309, align 8, !tbaa !21
  %311 = icmp ne i32 %310, 0
  br i1 %311, label %312, label %318

312:                                              ; preds = %307
  %313 = load ptr, ptr %5, align 8, !tbaa !5
  %314 = load ptr, ptr %5, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.qhT, ptr %314, i32 0, i32 158
  %316 = load ptr, ptr %315, align 8, !tbaa !28
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %313, ptr noundef %316, i32 noundef 6037, ptr noundef @.str.211)
  %317 = load ptr, ptr %5, align 8, !tbaa !5
  call void @qh_errexit(ptr noundef %317, i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %406

318:                                              ; preds = %307, %304
  %319 = load i32, ptr %38, align 4, !tbaa !11
  %320 = icmp ne i32 %319, 0
  br i1 %320, label %321, label %347

321:                                              ; preds = %318
  %322 = load ptr, ptr %5, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.qhT, ptr %322, i32 0, i32 70
  store i32 0, ptr %323, align 4, !tbaa !32
  %324 = load ptr, ptr %5, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.qhT, ptr %324, i32 0, i32 11
  %326 = load i32, ptr %325, align 8, !tbaa !19
  %327 = icmp ne i32 %326, 0
  br i1 %327, label %328, label %331

328:                                              ; preds = %321
  %329 = load i32, ptr %21, align 4, !tbaa !11
  %330 = load ptr, ptr %7, align 8, !tbaa !5
  store i32 %329, ptr %330, align 4, !tbaa !11
  br label %335

331:                                              ; preds = %321
  %332 = load i32, ptr %21, align 4, !tbaa !11
  %333 = add nsw i32 %332, 1
  %334 = load ptr, ptr %7, align 8, !tbaa !5
  store i32 %333, ptr %334, align 4, !tbaa !11
  br label %335

335:                                              ; preds = %331, %328
  %336 = load i32, ptr %22, align 4, !tbaa !11
  %337 = load ptr, ptr %6, align 8, !tbaa !5
  store i32 %336, ptr %337, align 4, !tbaa !11
  %338 = load ptr, ptr %5, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.qhT, ptr %338, i32 0, i32 8
  %340 = load i32, ptr %339, align 4, !tbaa !33
  %341 = icmp ne i32 %340, 0
  br i1 %341, label %342, label %346

342:                                              ; preds = %335
  %343 = load ptr, ptr %6, align 8, !tbaa !5
  %344 = load i32, ptr %343, align 4, !tbaa !11
  %345 = add nsw i32 %344, 1
  store i32 %345, ptr %343, align 4, !tbaa !11
  br label %346

346:                                              ; preds = %342, %335
  br label %405

347:                                              ; preds = %318
  %348 = load ptr, ptr %5, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.qhT, ptr %348, i32 0, i32 27
  %350 = load i32, ptr %349, align 8, !tbaa !21
  %351 = icmp ne i32 %350, 0
  br i1 %351, label %352, label %389

352:                                              ; preds = %347
  %353 = load i32, ptr %21, align 4, !tbaa !11
  %354 = sub nsw i32 %353, 1
  %355 = load ptr, ptr %7, align 8, !tbaa !5
  store i32 %354, ptr %355, align 4, !tbaa !11
  %356 = load i32, ptr %22, align 4, !tbaa !11
  %357 = load ptr, ptr %6, align 8, !tbaa !5
  store i32 %356, ptr %357, align 4, !tbaa !11
  %358 = load i32, ptr %21, align 4, !tbaa !11
  %359 = icmp slt i32 %358, 3
  br i1 %359, label %360, label %367

360:                                              ; preds = %352
  %361 = load ptr, ptr %5, align 8, !tbaa !5
  %362 = load ptr, ptr %5, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.qhT, ptr %362, i32 0, i32 158
  %364 = load ptr, ptr %363, align 8, !tbaa !28
  %365 = load i32, ptr %21, align 4, !tbaa !11
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %361, ptr noundef %364, i32 noundef 6221, ptr noundef @.str.212, i32 noundef %365)
  %366 = load ptr, ptr %5, align 8, !tbaa !5
  call void @qh_errexit(ptr noundef %366, i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %367

367:                                              ; preds = %360, %352
  %368 = load i32, ptr %23, align 4, !tbaa !11
  %369 = icmp ne i32 %368, 0
  br i1 %369, label %370, label %384

370:                                              ; preds = %367
  %371 = load i32, ptr %23, align 4, !tbaa !11
  %372 = load ptr, ptr %7, align 8, !tbaa !5
  %373 = load i32, ptr %372, align 4, !tbaa !11
  %374 = icmp ne i32 %371, %373
  br i1 %374, label %375, label %383

375:                                              ; preds = %370
  %376 = load ptr, ptr %5, align 8, !tbaa !5
  %377 = load ptr, ptr %5, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.qhT, ptr %377, i32 0, i32 158
  %379 = load ptr, ptr %378, align 8, !tbaa !28
  %380 = load i32, ptr %23, align 4, !tbaa !11
  %381 = load i32, ptr %21, align 4, !tbaa !11
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %376, ptr noundef %379, i32 noundef 6222, ptr noundef @.str.213, i32 noundef %380, i32 noundef %381)
  %382 = load ptr, ptr %5, align 8, !tbaa !5
  call void @qh_errexit(ptr noundef %382, i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %383

383:                                              ; preds = %375, %370
  br label %388

384:                                              ; preds = %367
  %385 = load ptr, ptr %5, align 8, !tbaa !5
  %386 = load ptr, ptr %7, align 8, !tbaa !5
  %387 = load i32, ptr %386, align 4, !tbaa !11
  call void @qh_setfeasible(ptr noundef %385, i32 noundef %387)
  br label %388

388:                                              ; preds = %384, %383
  br label %404

389:                                              ; preds = %347
  %390 = load ptr, ptr %5, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.qhT, ptr %390, i32 0, i32 11
  %392 = load i32, ptr %391, align 8, !tbaa !19
  %393 = icmp ne i32 %392, 0
  br i1 %393, label %394, label %398

394:                                              ; preds = %389
  %395 = load i32, ptr %21, align 4, !tbaa !11
  %396 = sub nsw i32 %395, 1
  %397 = load ptr, ptr %7, align 8, !tbaa !5
  store i32 %396, ptr %397, align 4, !tbaa !11
  br label %401

398:                                              ; preds = %389
  %399 = load i32, ptr %21, align 4, !tbaa !11
  %400 = load ptr, ptr %7, align 8, !tbaa !5
  store i32 %399, ptr %400, align 4, !tbaa !11
  br label %401

401:                                              ; preds = %398, %394
  %402 = load i32, ptr %22, align 4, !tbaa !11
  %403 = load ptr, ptr %6, align 8, !tbaa !5
  store i32 %402, ptr %403, align 4, !tbaa !11
  br label %404

404:                                              ; preds = %401, %388
  br label %405

405:                                              ; preds = %404, %346
  br label %406

406:                                              ; preds = %405, %312
  %407 = load ptr, ptr %7, align 8, !tbaa !5
  %408 = load i32, ptr %407, align 4, !tbaa !11
  %409 = mul nsw i32 %408, 8
  %410 = load ptr, ptr %5, align 8, !tbaa !5
  %411 = getelementptr inbounds %struct.qhT, ptr %410, i32 0, i32 160
  store i32 %409, ptr %411, align 8, !tbaa !34
  %412 = load ptr, ptr %5, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.qhT, ptr %412, i32 0, i32 27
  %414 = load i32, ptr %413, align 8, !tbaa !21
  %415 = icmp ne i32 %414, 0
  br i1 %415, label %416, label %445

416:                                              ; preds = %406
  %417 = load ptr, ptr %5, align 8, !tbaa !5
  %418 = getelementptr inbounds %struct.qhT, ptr %417, i32 0, i32 160
  %419 = load i32, ptr %418, align 8, !tbaa !34
  %420 = sext i32 %419 to i64
  %421 = add i64 %420, 8
  %422 = call ptr @qh_malloc(i64 noundef %421)
  store ptr %422, ptr %15, align 8, !tbaa !5
  %423 = load ptr, ptr %5, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.qhT, ptr %423, i32 0, i32 231
  store ptr %422, ptr %424, align 8, !tbaa !35
  %425 = load ptr, ptr %5, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.qhT, ptr %425, i32 0, i32 11
  %427 = load i32, ptr %426, align 8, !tbaa !19
  %428 = icmp ne i32 %427, 0
  br i1 %428, label %429, label %435

429:                                              ; preds = %416
  %430 = load ptr, ptr %5, align 8, !tbaa !5
  %431 = getelementptr inbounds %struct.qhT, ptr %430, i32 0, i32 231
  %432 = load ptr, ptr %431, align 8, !tbaa !35
  store ptr %432, ptr %16, align 8, !tbaa !5
  %433 = load ptr, ptr %16, align 8, !tbaa !5
  %434 = getelementptr inbounds double, ptr %433, i64 1
  store ptr %434, ptr %17, align 8, !tbaa !5
  br label %444

435:                                              ; preds = %416
  %436 = load ptr, ptr %5, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct.qhT, ptr %436, i32 0, i32 231
  %438 = load ptr, ptr %437, align 8, !tbaa !35
  store ptr %438, ptr %17, align 8, !tbaa !5
  %439 = load ptr, ptr %17, align 8, !tbaa !5
  %440 = load ptr, ptr %7, align 8, !tbaa !5
  %441 = load i32, ptr %440, align 4, !tbaa !11
  %442 = sext i32 %441 to i64
  %443 = getelementptr inbounds double, ptr %439, i64 %442
  store ptr %443, ptr %16, align 8, !tbaa !5
  br label %444

444:                                              ; preds = %435, %429
  br label %445

445:                                              ; preds = %444, %406
  %446 = load i32, ptr %21, align 4, !tbaa !11
  %447 = mul nsw i32 %446, 21
  %448 = load ptr, ptr %5, align 8, !tbaa !5
  %449 = getelementptr inbounds %struct.qhT, ptr %448, i32 0, i32 230
  store i32 %447, ptr %449, align 8, !tbaa !36
  %450 = load ptr, ptr %5, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.qhT, ptr %450, i32 0, i32 230
  %452 = load i32, ptr %451, align 8, !tbaa !36
  %453 = icmp slt i32 %452, 500
  br i1 %453, label %454, label %457

454:                                              ; preds = %445
  %455 = load ptr, ptr %5, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.qhT, ptr %455, i32 0, i32 230
  store i32 500, ptr %456, align 8, !tbaa !36
  br label %457

457:                                              ; preds = %454, %445
  %458 = load ptr, ptr %5, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.qhT, ptr %458, i32 0, i32 230
  %460 = load i32, ptr %459, align 8, !tbaa !36
  %461 = add nsw i32 %460, 1
  %462 = sext i32 %461 to i64
  %463 = mul i64 %462, 1
  %464 = call ptr @qh_malloc(i64 noundef %463)
  %465 = load ptr, ptr %5, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.qhT, ptr %465, i32 0, i32 229
  store ptr %464, ptr %466, align 8, !tbaa !37
  %467 = load ptr, ptr %8, align 8, !tbaa !5
  store i32 1, ptr %467, align 4, !tbaa !11
  %468 = load ptr, ptr %6, align 8, !tbaa !5
  %469 = load i32, ptr %468, align 4, !tbaa !11
  %470 = load ptr, ptr %7, align 8, !tbaa !5
  %471 = load i32, ptr %470, align 4, !tbaa !11
  %472 = mul nsw i32 %469, %471
  %473 = sext i32 %472 to i64
  %474 = mul i64 %473, 8
  %475 = call ptr @qh_malloc(i64 noundef %474)
  %476 = load ptr, ptr %5, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.qhT, ptr %476, i32 0, i32 232
  store ptr %475, ptr %477, align 8, !tbaa !38
  store ptr %475, ptr %9, align 8, !tbaa !5
  store ptr %475, ptr %10, align 8, !tbaa !5
  %478 = load ptr, ptr %10, align 8, !tbaa !5
  %479 = icmp ne ptr %478, null
  br i1 %479, label %480, label %495

480:                                              ; preds = %457
  %481 = load ptr, ptr %5, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.qhT, ptr %481, i32 0, i32 229
  %483 = load ptr, ptr %482, align 8, !tbaa !37
  %484 = icmp ne ptr %483, null
  br i1 %484, label %485, label %495

485:                                              ; preds = %480
  %486 = load ptr, ptr %5, align 8, !tbaa !5
  %487 = getelementptr inbounds %struct.qhT, ptr %486, i32 0, i32 27
  %488 = load i32, ptr %487, align 8, !tbaa !21
  %489 = icmp ne i32 %488, 0
  br i1 %489, label %490, label %502

490:                                              ; preds = %485
  %491 = load ptr, ptr %5, align 8, !tbaa !5
  %492 = getelementptr inbounds %struct.qhT, ptr %491, i32 0, i32 231
  %493 = load ptr, ptr %492, align 8, !tbaa !35
  %494 = icmp ne ptr %493, null
  br i1 %494, label %502, label %495

495:                                              ; preds = %490, %480, %457
  %496 = load ptr, ptr %5, align 8, !tbaa !5
  %497 = load ptr, ptr %5, align 8, !tbaa !5
  %498 = getelementptr inbounds %struct.qhT, ptr %497, i32 0, i32 158
  %499 = load ptr, ptr %498, align 8, !tbaa !28
  %500 = load i32, ptr %22, align 4, !tbaa !11
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %496, ptr noundef %499, i32 noundef 6076, ptr noundef @.str.214, i32 noundef %500)
  %501 = load ptr, ptr %5, align 8, !tbaa !5
  call void @qh_errexit(ptr noundef %501, i32 noundef 4, ptr noundef null, ptr noundef null)
  br label %502

502:                                              ; preds = %495, %490, %485
  %503 = load i32, ptr %38, align 4, !tbaa !11
  %504 = icmp ne i32 %503, 0
  br i1 %504, label %505, label %531

505:                                              ; preds = %502
  %506 = load ptr, ptr %5, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct.qhT, ptr %506, i32 0, i32 8
  %508 = load i32, ptr %507, align 4, !tbaa !33
  %509 = icmp ne i32 %508, 0
  br i1 %509, label %510, label %531

510:                                              ; preds = %505
  %511 = load ptr, ptr %9, align 8, !tbaa !5
  %512 = load i32, ptr %22, align 4, !tbaa !11
  %513 = load ptr, ptr %7, align 8, !tbaa !5
  %514 = load i32, ptr %513, align 4, !tbaa !11
  %515 = mul nsw i32 %512, %514
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds double, ptr %511, i64 %516
  store ptr %517, ptr %11, align 8, !tbaa !5
  %518 = load ptr, ptr %7, align 8, !tbaa !5
  %519 = load i32, ptr %518, align 4, !tbaa !11
  %520 = sub nsw i32 %519, 1
  store i32 %520, ptr %25, align 4, !tbaa !11
  br label %521

521:                                              ; preds = %525, %510
  %522 = load i32, ptr %25, align 4, !tbaa !11
  %523 = add nsw i32 %522, -1
  store i32 %523, ptr %25, align 4, !tbaa !11
  %524 = icmp ne i32 %522, 0
  br i1 %524, label %525, label %530

525:                                              ; preds = %521
  %526 = load ptr, ptr %11, align 8, !tbaa !5
  %527 = load i32, ptr %25, align 4, !tbaa !11
  %528 = sext i32 %527 to i64
  %529 = getelementptr inbounds double, ptr %526, i64 %528
  store double 0.000000e+00, ptr %529, align 8, !tbaa !9
  br label %521, !llvm.loop !39

530:                                              ; preds = %521
  br label %531

531:                                              ; preds = %530, %505, %502
  %532 = load i32, ptr %22, align 4, !tbaa !11
  %533 = load i32, ptr %21, align 4, !tbaa !11
  %534 = mul nsw i32 %532, %533
  store i32 %534, ptr %33, align 4, !tbaa !11
  store double 0.000000e+00, ptr %12, align 8, !tbaa !9
  br label %535

535:                                              ; preds = %875, %531
  %536 = load i32, ptr %36, align 4, !tbaa !11
  %537 = icmp ne i32 %536, 0
  br i1 %537, label %538, label %540

538:                                              ; preds = %535
  %539 = load ptr, ptr %18, align 8, !tbaa !5
  br label %551

540:                                              ; preds = %535
  %541 = load ptr, ptr %5, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.qhT, ptr %541, i32 0, i32 229
  %543 = load ptr, ptr %542, align 8, !tbaa !37
  %544 = load ptr, ptr %5, align 8, !tbaa !5
  %545 = getelementptr inbounds %struct.qhT, ptr %544, i32 0, i32 230
  %546 = load i32, ptr %545, align 8, !tbaa !36
  %547 = load ptr, ptr %5, align 8, !tbaa !5
  %548 = getelementptr inbounds %struct.qhT, ptr %547, i32 0, i32 156
  %549 = load ptr, ptr %548, align 8, !tbaa !20
  %550 = call ptr @fgets(ptr noundef %543, i32 noundef %546, ptr noundef %549)
  br label %551

551:                                              ; preds = %540, %538
  %552 = phi ptr [ %539, %538 ], [ %550, %540 ]
  store ptr %552, ptr %18, align 8, !tbaa !5
  %553 = icmp ne ptr %552, null
  br i1 %553, label %554, label %876

554:                                              ; preds = %551
  %555 = load i32, ptr %36, align 4, !tbaa !11
  %556 = icmp ne i32 %555, 0
  br i1 %556, label %595, label %557

557:                                              ; preds = %554
  %558 = load i32, ptr %32, align 4, !tbaa !11
  %559 = add nsw i32 %558, 1
  store i32 %559, ptr %32, align 4, !tbaa !11
  %560 = load ptr, ptr %18, align 8, !tbaa !5
  %561 = load i8, ptr %560, align 1, !tbaa !22
  %562 = sext i8 %561 to i32
  %563 = icmp eq i32 %562, 101
  br i1 %563, label %569, label %564

564:                                              ; preds = %557
  %565 = load ptr, ptr %18, align 8, !tbaa !5
  %566 = load i8, ptr %565, align 1, !tbaa !22
  %567 = sext i8 %566 to i32
  %568 = icmp eq i32 %567, 69
  br i1 %568, label %569, label %594

569:                                              ; preds = %564, %557
  %570 = load ptr, ptr %18, align 8, !tbaa !5
  %571 = call i32 @memcmp(ptr noundef %570, ptr noundef @.str.215, i64 noundef 3) #9
  %572 = icmp ne i32 %571, 0
  br i1 %572, label %573, label %577

573:                                              ; preds = %569
  %574 = load ptr, ptr %18, align 8, !tbaa !5
  %575 = call i32 @memcmp(ptr noundef %574, ptr noundef @.str.216, i64 noundef 3) #9
  %576 = icmp ne i32 %575, 0
  br i1 %576, label %593, label %577

577:                                              ; preds = %573, %569
  %578 = load ptr, ptr %5, align 8, !tbaa !5
  %579 = getelementptr inbounds %struct.qhT, ptr %578, i32 0, i32 11
  %580 = load i32, ptr %579, align 8, !tbaa !19
  %581 = icmp ne i32 %580, 0
  br i1 %581, label %582, label %583

582:                                              ; preds = %577
  br label %876

583:                                              ; preds = %577
  %584 = load i32, ptr %37, align 4, !tbaa !11
  %585 = icmp ne i32 %584, 0
  br i1 %585, label %586, label %591

586:                                              ; preds = %583
  %587 = load ptr, ptr %5, align 8, !tbaa !5
  %588 = load ptr, ptr %5, align 8, !tbaa !5
  %589 = getelementptr inbounds %struct.qhT, ptr %588, i32 0, i32 158
  %590 = load ptr, ptr %589, align 8, !tbaa !28
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %587, ptr noundef %590, i32 noundef 7058, ptr noundef @.str.217)
  br label %591

591:                                              ; preds = %586, %583
  br label %592

592:                                              ; preds = %591
  br label %593

593:                                              ; preds = %592, %573
  br label %594

594:                                              ; preds = %593, %564
  br label %595

595:                                              ; preds = %594, %554
  store i32 0, ptr %35, align 4, !tbaa !11
  br label %596

596:                                              ; preds = %832, %667, %595
  %597 = load ptr, ptr %18, align 8, !tbaa !5
  %598 = load i8, ptr %597, align 1, !tbaa !22
  %599 = icmp ne i8 %598, 0
  br i1 %599, label %600, label %833

600:                                              ; preds = %596
  br label %601

601:                                              ; preds = %613, %600
  %602 = call ptr @__ctype_b_loc() #8
  %603 = load ptr, ptr %602, align 8, !tbaa !5
  %604 = load ptr, ptr %18, align 8, !tbaa !5
  %605 = load i8, ptr %604, align 1, !tbaa !22
  %606 = sext i8 %605 to i32
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds i16, ptr %603, i64 %607
  %609 = load i16, ptr %608, align 2, !tbaa !23
  %610 = zext i16 %609 to i32
  %611 = and i32 %610, 8192
  %612 = icmp ne i32 %611, 0
  br i1 %612, label %613, label %616

613:                                              ; preds = %601
  %614 = load ptr, ptr %18, align 8, !tbaa !5
  %615 = getelementptr inbounds i8, ptr %614, i32 1
  store ptr %615, ptr %18, align 8, !tbaa !5
  br label %601, !llvm.loop !40

616:                                              ; preds = %601
  %617 = load ptr, ptr %18, align 8, !tbaa !5
  %618 = call double @qh_strtod(ptr noundef %617, ptr noundef %19)
  store double %618, ptr %14, align 8, !tbaa !9
  %619 = load ptr, ptr %18, align 8, !tbaa !5
  %620 = load ptr, ptr %19, align 8, !tbaa !5
  %621 = icmp eq ptr %619, %620
  br i1 %621, label %622, label %656

622:                                              ; preds = %616
  %623 = load ptr, ptr %5, align 8, !tbaa !5
  %624 = getelementptr inbounds %struct.qhT, ptr %623, i32 0, i32 119
  %625 = getelementptr inbounds [256 x i8], ptr %624, i64 0, i64 0
  %626 = load i8, ptr %625, align 8, !tbaa !22
  %627 = icmp ne i8 %626, 0
  br i1 %627, label %634, label %628

628:                                              ; preds = %622
  %629 = load ptr, ptr %5, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.qhT, ptr %629, i32 0, i32 119
  %631 = getelementptr inbounds [256 x i8], ptr %630, i64 0, i64 0
  %632 = load ptr, ptr %18, align 8, !tbaa !5
  %633 = call ptr @strncat(ptr noundef %631, ptr noundef %632, i64 noundef 255) #7
  br label %634

634:                                              ; preds = %628, %622
  %635 = load ptr, ptr %18, align 8, !tbaa !5
  %636 = load i8, ptr %635, align 1, !tbaa !22
  %637 = sext i8 %636 to i32
  %638 = icmp ne i32 %637, 0
  br i1 %638, label %639, label %644

639:                                              ; preds = %634
  %640 = load i32, ptr %27, align 4, !tbaa !11
  %641 = icmp ne i32 %640, 0
  br i1 %641, label %644, label %642

642:                                              ; preds = %639
  %643 = load i32, ptr %32, align 4, !tbaa !11
  store i32 %643, ptr %27, align 4, !tbaa !11
  br label %644

644:                                              ; preds = %642, %639, %634
  %645 = load i32, ptr %35, align 4, !tbaa !11
  %646 = icmp ne i32 %645, 0
  br i1 %646, label %655, label %647

647:                                              ; preds = %644
  %648 = load i32, ptr %28, align 4, !tbaa !11
  %649 = icmp ne i32 %648, 0
  br i1 %649, label %655, label %650

650:                                              ; preds = %647
  %651 = load i32, ptr %34, align 4, !tbaa !11
  %652 = icmp ne i32 %651, 0
  br i1 %652, label %653, label %655

653:                                              ; preds = %650
  %654 = load i32, ptr %32, align 4, !tbaa !11
  store i32 %654, ptr %28, align 4, !tbaa !11
  br label %655

655:                                              ; preds = %653, %650, %647, %644
  br label %833

656:                                              ; preds = %616
  %657 = load i32, ptr %30, align 4, !tbaa !11
  %658 = icmp ne i32 %657, 0
  br i1 %658, label %661, label %659

659:                                              ; preds = %656
  %660 = load i32, ptr %32, align 4, !tbaa !11
  store i32 %660, ptr %30, align 4, !tbaa !11
  br label %661

661:                                              ; preds = %659, %656
  %662 = load ptr, ptr %19, align 8, !tbaa !5
  store ptr %662, ptr %18, align 8, !tbaa !5
  %663 = load i32, ptr %31, align 4, !tbaa !11
  %664 = add nsw i32 %663, 1
  store i32 %664, ptr %31, align 4, !tbaa !11
  %665 = load i32, ptr %33, align 4, !tbaa !11
  %666 = icmp sgt i32 %664, %665
  br i1 %666, label %667, label %668

667:                                              ; preds = %661
  br label %596, !llvm.loop !41

668:                                              ; preds = %661
  %669 = load ptr, ptr %5, align 8, !tbaa !5
  %670 = getelementptr inbounds %struct.qhT, ptr %669, i32 0, i32 27
  %671 = load i32, ptr %670, align 8, !tbaa !21
  %672 = icmp ne i32 %671, 0
  br i1 %672, label %673, label %688

673:                                              ; preds = %668
  %674 = load ptr, ptr %5, align 8, !tbaa !5
  %675 = getelementptr inbounds %struct.qhT, ptr %674, i32 0, i32 11
  %676 = load i32, ptr %675, align 8, !tbaa !19
  %677 = icmp ne i32 %676, 0
  br i1 %677, label %678, label %683

678:                                              ; preds = %673
  %679 = load double, ptr %14, align 8, !tbaa !9
  %680 = fneg double %679
  %681 = load ptr, ptr %15, align 8, !tbaa !5
  %682 = getelementptr inbounds double, ptr %681, i32 1
  store ptr %682, ptr %15, align 8, !tbaa !5
  store double %680, ptr %681, align 8, !tbaa !9
  br label %687

683:                                              ; preds = %673
  %684 = load double, ptr %14, align 8, !tbaa !9
  %685 = load ptr, ptr %15, align 8, !tbaa !5
  %686 = getelementptr inbounds double, ptr %685, i32 1
  store ptr %686, ptr %15, align 8, !tbaa !5
  store double %684, ptr %685, align 8, !tbaa !9
  br label %687

687:                                              ; preds = %683, %678
  br label %750

688:                                              ; preds = %668
  %689 = load double, ptr %14, align 8, !tbaa !9
  %690 = load ptr, ptr %10, align 8, !tbaa !5
  %691 = getelementptr inbounds double, ptr %690, i32 1
  store ptr %691, ptr %10, align 8, !tbaa !5
  store double %689, ptr %690, align 8, !tbaa !9
  %692 = load ptr, ptr %5, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.qhT, ptr %692, i32 0, i32 11
  %694 = load i32, ptr %693, align 8, !tbaa !19
  %695 = icmp ne i32 %694, 0
  br i1 %695, label %696, label %712

696:                                              ; preds = %688
  %697 = load i32, ptr %34, align 4, !tbaa !11
  %698 = icmp ne i32 %697, 0
  br i1 %698, label %712, label %699

699:                                              ; preds = %696
  %700 = load double, ptr %14, align 8, !tbaa !9
  %701 = fcmp une double %700, 1.000000e+00
  br i1 %701, label %702, label %709

702:                                              ; preds = %699
  %703 = load ptr, ptr %5, align 8, !tbaa !5
  %704 = load ptr, ptr %5, align 8, !tbaa !5
  %705 = getelementptr inbounds %struct.qhT, ptr %704, i32 0, i32 158
  %706 = load ptr, ptr %705, align 8, !tbaa !28
  %707 = load i32, ptr %32, align 4, !tbaa !11
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %703, ptr noundef %706, i32 noundef 6077, ptr noundef @.str.218, i32 noundef %707)
  %708 = load ptr, ptr %5, align 8, !tbaa !5
  call void @qh_errexit(ptr noundef %708, i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %709

709:                                              ; preds = %702, %699
  %710 = load ptr, ptr %10, align 8, !tbaa !5
  %711 = getelementptr inbounds double, ptr %710, i32 -1
  store ptr %711, ptr %10, align 8, !tbaa !5
  br label %749

712:                                              ; preds = %696, %688
  %713 = load i32, ptr %38, align 4, !tbaa !11
  %714 = icmp ne i32 %713, 0
  br i1 %714, label %715, label %748

715:                                              ; preds = %712
  %716 = load double, ptr %14, align 8, !tbaa !9
  %717 = load double, ptr %14, align 8, !tbaa !9
  %718 = load double, ptr %12, align 8, !tbaa !9
  %719 = call double @llvm.fmuladd.f64(double %716, double %717, double %718)
  store double %719, ptr %12, align 8, !tbaa !9
  %720 = load ptr, ptr %5, align 8, !tbaa !5
  %721 = getelementptr inbounds %struct.qhT, ptr %720, i32 0, i32 8
  %722 = load i32, ptr %721, align 4, !tbaa !33
  %723 = icmp ne i32 %722, 0
  br i1 %723, label %724, label %747

724:                                              ; preds = %715
  %725 = load ptr, ptr %5, align 8, !tbaa !5
  %726 = getelementptr inbounds %struct.qhT, ptr %725, i32 0, i32 11
  %727 = load i32, ptr %726, align 8, !tbaa !19
  %728 = icmp ne i32 %727, 0
  br i1 %728, label %729, label %738

729:                                              ; preds = %724
  %730 = load double, ptr %14, align 8, !tbaa !9
  %731 = load ptr, ptr %11, align 8, !tbaa !5
  %732 = load i32, ptr %34, align 4, !tbaa !11
  %733 = sub nsw i32 %732, 1
  %734 = sext i32 %733 to i64
  %735 = getelementptr inbounds double, ptr %731, i64 %734
  %736 = load double, ptr %735, align 8, !tbaa !9
  %737 = fadd double %736, %730
  store double %737, ptr %735, align 8, !tbaa !9
  br label %746

738:                                              ; preds = %724
  %739 = load double, ptr %14, align 8, !tbaa !9
  %740 = load ptr, ptr %11, align 8, !tbaa !5
  %741 = load i32, ptr %34, align 4, !tbaa !11
  %742 = sext i32 %741 to i64
  %743 = getelementptr inbounds double, ptr %740, i64 %742
  %744 = load double, ptr %743, align 8, !tbaa !9
  %745 = fadd double %744, %739
  store double %745, ptr %743, align 8, !tbaa !9
  br label %746

746:                                              ; preds = %738, %729
  br label %747

747:                                              ; preds = %746, %715
  br label %748

748:                                              ; preds = %747, %712
  br label %749

749:                                              ; preds = %748, %709
  br label %750

750:                                              ; preds = %749, %687
  %751 = load i32, ptr %34, align 4, !tbaa !11
  %752 = add nsw i32 %751, 1
  store i32 %752, ptr %34, align 4, !tbaa !11
  %753 = load i32, ptr %21, align 4, !tbaa !11
  %754 = icmp eq i32 %752, %753
  br i1 %754, label %755, label %832

755:                                              ; preds = %750
  store i32 0, ptr %34, align 4, !tbaa !11
  %756 = load i32, ptr %38, align 4, !tbaa !11
  %757 = icmp ne i32 %756, 0
  br i1 %757, label %758, label %768

758:                                              ; preds = %755
  %759 = load double, ptr %12, align 8, !tbaa !9
  %760 = load ptr, ptr %10, align 8, !tbaa !5
  %761 = getelementptr inbounds double, ptr %760, i32 1
  store ptr %761, ptr %10, align 8, !tbaa !5
  store double %759, ptr %760, align 8, !tbaa !9
  %762 = load double, ptr %13, align 8, !tbaa !9
  %763 = load double, ptr %12, align 8, !tbaa !9
  %764 = fcmp olt double %762, %763
  br i1 %764, label %765, label %767

765:                                              ; preds = %758
  %766 = load double, ptr %12, align 8, !tbaa !9
  store double %766, ptr %13, align 8, !tbaa !9
  br label %767

767:                                              ; preds = %765, %758
  store double 0.000000e+00, ptr %12, align 8, !tbaa !9
  br label %805

768:                                              ; preds = %755
  %769 = load ptr, ptr %5, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.qhT, ptr %769, i32 0, i32 27
  %771 = load i32, ptr %770, align 8, !tbaa !21
  %772 = icmp ne i32 %771, 0
  br i1 %772, label %773, label %804

773:                                              ; preds = %768
  %774 = load ptr, ptr %5, align 8, !tbaa !5
  %775 = load ptr, ptr %7, align 8, !tbaa !5
  %776 = load i32, ptr %775, align 4, !tbaa !11
  %777 = load ptr, ptr %10, align 8, !tbaa !5
  %778 = load ptr, ptr %17, align 8, !tbaa !5
  %779 = load ptr, ptr %16, align 8, !tbaa !5
  %780 = load ptr, ptr %5, align 8, !tbaa !5
  %781 = getelementptr inbounds %struct.qhT, ptr %780, i32 0, i32 107
  %782 = load ptr, ptr %781, align 8, !tbaa !42
  %783 = call i32 @qh_sethalfspace(ptr noundef %774, i32 noundef %776, ptr noundef %777, ptr noundef %10, ptr noundef %778, ptr noundef %779, ptr noundef %782)
  %784 = icmp ne i32 %783, 0
  br i1 %784, label %800, label %785

785:                                              ; preds = %773
  %786 = load ptr, ptr %5, align 8, !tbaa !5
  %787 = load ptr, ptr %5, align 8, !tbaa !5
  %788 = getelementptr inbounds %struct.qhT, ptr %787, i32 0, i32 158
  %789 = load ptr, ptr %788, align 8, !tbaa !28
  %790 = load i32, ptr %32, align 4, !tbaa !11
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %786, ptr noundef %789, i32 noundef 8048, ptr noundef @.str.219, i32 noundef %790)
  %791 = load i32, ptr %37, align 4, !tbaa !11
  %792 = icmp ne i32 %791, 0
  br i1 %792, label %793, label %798

793:                                              ; preds = %785
  %794 = load ptr, ptr %5, align 8, !tbaa !5
  %795 = load ptr, ptr %5, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.qhT, ptr %795, i32 0, i32 158
  %797 = load ptr, ptr %796, align 8, !tbaa !28
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %794, ptr noundef %797, i32 noundef 8049, ptr noundef @.str.220)
  br label %798

798:                                              ; preds = %793, %785
  %799 = load ptr, ptr %5, align 8, !tbaa !5
  call void @qh_errexit(ptr noundef %799, i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %800

800:                                              ; preds = %798, %773
  %801 = load ptr, ptr %5, align 8, !tbaa !5
  %802 = getelementptr inbounds %struct.qhT, ptr %801, i32 0, i32 231
  %803 = load ptr, ptr %802, align 8, !tbaa !35
  store ptr %803, ptr %15, align 8, !tbaa !5
  br label %804

804:                                              ; preds = %800, %768
  br label %805

805:                                              ; preds = %804, %767
  br label %806

806:                                              ; preds = %818, %805
  %807 = call ptr @__ctype_b_loc() #8
  %808 = load ptr, ptr %807, align 8, !tbaa !5
  %809 = load ptr, ptr %18, align 8, !tbaa !5
  %810 = load i8, ptr %809, align 1, !tbaa !22
  %811 = sext i8 %810 to i32
  %812 = sext i32 %811 to i64
  %813 = getelementptr inbounds i16, ptr %808, i64 %812
  %814 = load i16, ptr %813, align 2, !tbaa !23
  %815 = zext i16 %814 to i32
  %816 = and i32 %815, 8192
  %817 = icmp ne i32 %816, 0
  br i1 %817, label %818, label %821

818:                                              ; preds = %806
  %819 = load ptr, ptr %18, align 8, !tbaa !5
  %820 = getelementptr inbounds i8, ptr %819, i32 1
  store ptr %820, ptr %18, align 8, !tbaa !5
  br label %806, !llvm.loop !43

821:                                              ; preds = %806
  %822 = load ptr, ptr %18, align 8, !tbaa !5
  %823 = load i8, ptr %822, align 1, !tbaa !22
  %824 = icmp ne i8 %823, 0
  br i1 %824, label %825, label %831

825:                                              ; preds = %821
  store i32 1, ptr %35, align 4, !tbaa !11
  %826 = load i32, ptr %29, align 4, !tbaa !11
  %827 = icmp ne i32 %826, 0
  br i1 %827, label %830, label %828

828:                                              ; preds = %825
  %829 = load i32, ptr %32, align 4, !tbaa !11
  store i32 %829, ptr %29, align 4, !tbaa !11
  br label %830

830:                                              ; preds = %828, %825
  br label %831

831:                                              ; preds = %830, %821
  br label %832

832:                                              ; preds = %831, %750
  br label %596, !llvm.loop !41

833:                                              ; preds = %655, %596
  %834 = load i32, ptr %35, align 4, !tbaa !11
  %835 = icmp ne i32 %834, 0
  br i1 %835, label %844, label %836

836:                                              ; preds = %833
  %837 = load i32, ptr %28, align 4, !tbaa !11
  %838 = icmp ne i32 %837, 0
  br i1 %838, label %844, label %839

839:                                              ; preds = %836
  %840 = load i32, ptr %34, align 4, !tbaa !11
  %841 = icmp ne i32 %840, 0
  br i1 %841, label %842, label %844

842:                                              ; preds = %839
  %843 = load i32, ptr %32, align 4, !tbaa !11
  store i32 %843, ptr %28, align 4, !tbaa !11
  br label %844

844:                                              ; preds = %842, %839, %836, %833
  %845 = load i32, ptr %36, align 4, !tbaa !11
  %846 = icmp ne i32 %845, 0
  br i1 %846, label %875, label %847

847:                                              ; preds = %844
  %848 = load ptr, ptr %18, align 8, !tbaa !5
  %849 = load ptr, ptr %5, align 8, !tbaa !5
  %850 = getelementptr inbounds %struct.qhT, ptr %849, i32 0, i32 229
  %851 = load ptr, ptr %850, align 8, !tbaa !37
  %852 = ptrtoint ptr %848 to i64
  %853 = ptrtoint ptr %851 to i64
  %854 = sub i64 %852, %853
  %855 = load ptr, ptr %5, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.qhT, ptr %855, i32 0, i32 230
  %857 = load i32, ptr %856, align 8, !tbaa !36
  %858 = sext i32 %857 to i64
  %859 = icmp sge i64 %854, %858
  br i1 %859, label %860, label %875

860:                                              ; preds = %847
  %861 = load ptr, ptr %5, align 8, !tbaa !5
  %862 = load ptr, ptr %5, align 8, !tbaa !5
  %863 = getelementptr inbounds %struct.qhT, ptr %862, i32 0, i32 158
  %864 = load ptr, ptr %863, align 8, !tbaa !28
  %865 = load i32, ptr %32, align 4, !tbaa !11
  %866 = load ptr, ptr %18, align 8, !tbaa !5
  %867 = load ptr, ptr %5, align 8, !tbaa !5
  %868 = getelementptr inbounds %struct.qhT, ptr %867, i32 0, i32 229
  %869 = load ptr, ptr %868, align 8, !tbaa !37
  %870 = ptrtoint ptr %866 to i64
  %871 = ptrtoint ptr %869 to i64
  %872 = sub i64 %870, %871
  %873 = trunc i64 %872 to i32
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %861, ptr noundef %864, i32 noundef 6078, ptr noundef @.str.221, i32 noundef %865, i32 noundef %873)
  %874 = load ptr, ptr %5, align 8, !tbaa !5
  call void @qh_errexit(ptr noundef %874, i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %875

875:                                              ; preds = %860, %847, %844
  store i32 0, ptr %36, align 4, !tbaa !11
  br label %535, !llvm.loop !44

876:                                              ; preds = %582, %551
  %877 = load ptr, ptr %5, align 8, !tbaa !5
  %878 = getelementptr inbounds %struct.qhT, ptr %877, i32 0, i32 119
  %879 = getelementptr inbounds [256 x i8], ptr %878, i64 0, i64 0
  %880 = load i8, ptr %879, align 8, !tbaa !22
  %881 = icmp ne i8 %880, 0
  br i1 %881, label %882, label %891

882:                                              ; preds = %876
  %883 = load ptr, ptr %5, align 8, !tbaa !5
  %884 = getelementptr inbounds %struct.qhT, ptr %883, i32 0, i32 119
  %885 = load ptr, ptr %5, align 8, !tbaa !5
  %886 = getelementptr inbounds %struct.qhT, ptr %885, i32 0, i32 119
  %887 = getelementptr inbounds [256 x i8], ptr %886, i64 0, i64 0
  %888 = call i64 @strlen(ptr noundef %887) #9
  %889 = sub i64 %888, 1
  %890 = getelementptr inbounds [256 x i8], ptr %884, i64 0, i64 %889
  store i8 0, ptr %890, align 1, !tbaa !22
  br label %891

891:                                              ; preds = %882, %876
  %892 = load i32, ptr %31, align 4, !tbaa !11
  %893 = load i32, ptr %33, align 4, !tbaa !11
  %894 = icmp ne i32 %892, %893
  br i1 %894, label %895, label %1030

895:                                              ; preds = %891
  %896 = load i32, ptr %22, align 4, !tbaa !11
  %897 = load i32, ptr %31, align 4, !tbaa !11
  %898 = load i32, ptr %21, align 4, !tbaa !11
  %899 = sdiv i32 %897, %898
  %900 = icmp sgt i32 %896, %899
  br i1 %900, label %901, label %905

901:                                              ; preds = %895
  %902 = load i32, ptr %31, align 4, !tbaa !11
  %903 = load i32, ptr %21, align 4, !tbaa !11
  %904 = sdiv i32 %902, %903
  br label %907

905:                                              ; preds = %895
  %906 = load i32, ptr %22, align 4, !tbaa !11
  br label %907

907:                                              ; preds = %905, %901
  %908 = phi i32 [ %904, %901 ], [ %906, %905 ]
  store i32 %908, ptr %24, align 4, !tbaa !11
  %909 = load ptr, ptr %5, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct.qhT, ptr %909, i32 0, i32 1
  %911 = load i32, ptr %910, align 4, !tbaa !45
  %912 = icmp ne i32 %911, 0
  br i1 %912, label %913, label %926

913:                                              ; preds = %907
  %914 = load ptr, ptr %5, align 8, !tbaa !5
  %915 = load ptr, ptr %5, align 8, !tbaa !5
  %916 = getelementptr inbounds %struct.qhT, ptr %915, i32 0, i32 158
  %917 = load ptr, ptr %916, align 8, !tbaa !28
  %918 = load i32, ptr %22, align 4, !tbaa !11
  %919 = load i32, ptr %21, align 4, !tbaa !11
  %920 = load i32, ptr %31, align 4, !tbaa !11
  %921 = load i32, ptr %21, align 4, !tbaa !11
  %922 = sdiv i32 %920, %921
  %923 = load i32, ptr %31, align 4, !tbaa !11
  %924 = load i32, ptr %21, align 4, !tbaa !11
  %925 = srem i32 %923, %924
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %914, ptr noundef %917, i32 noundef 7073, ptr noundef @.str.222, i32 noundef %918, i32 noundef %919, i32 noundef %922, i32 noundef %925)
  br label %939

926:                                              ; preds = %907
  %927 = load ptr, ptr %5, align 8, !tbaa !5
  %928 = load ptr, ptr %5, align 8, !tbaa !5
  %929 = getelementptr inbounds %struct.qhT, ptr %928, i32 0, i32 158
  %930 = load ptr, ptr %929, align 8, !tbaa !28
  %931 = load i32, ptr %22, align 4, !tbaa !11
  %932 = load i32, ptr %21, align 4, !tbaa !11
  %933 = load i32, ptr %31, align 4, !tbaa !11
  %934 = load i32, ptr %21, align 4, !tbaa !11
  %935 = sdiv i32 %933, %934
  %936 = load i32, ptr %31, align 4, !tbaa !11
  %937 = load i32, ptr %21, align 4, !tbaa !11
  %938 = srem i32 %936, %937
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %927, ptr noundef %930, i32 noundef 6410, ptr noundef @.str.223, i32 noundef %931, i32 noundef %932, i32 noundef %935, i32 noundef %938)
  br label %939

939:                                              ; preds = %926, %913
  %940 = load i32, ptr %27, align 4, !tbaa !11
  %941 = icmp ne i32 %940, 0
  br i1 %941, label %942, label %948

942:                                              ; preds = %939
  %943 = load ptr, ptr %5, align 8, !tbaa !5
  %944 = load ptr, ptr %5, align 8, !tbaa !5
  %945 = getelementptr inbounds %struct.qhT, ptr %944, i32 0, i32 158
  %946 = load ptr, ptr %945, align 8, !tbaa !28
  %947 = load i32, ptr %27, align 4, !tbaa !11
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %943, ptr noundef %946, i32 noundef 8051, ptr noundef @.str.224, i32 noundef %947)
  br label %948

948:                                              ; preds = %942, %939
  %949 = load ptr, ptr %5, align 8, !tbaa !5
  %950 = load ptr, ptr %5, align 8, !tbaa !5
  %951 = getelementptr inbounds %struct.qhT, ptr %950, i32 0, i32 158
  %952 = load ptr, ptr %951, align 8, !tbaa !28
  %953 = load i32, ptr %30, align 4, !tbaa !11
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %949, ptr noundef %952, i32 noundef 8033, ptr noundef @.str.225, i32 noundef %953)
  %954 = load i32, ptr %28, align 4, !tbaa !11
  %955 = icmp ne i32 %954, 0
  br i1 %955, label %956, label %962

956:                                              ; preds = %948
  %957 = load ptr, ptr %5, align 8, !tbaa !5
  %958 = load ptr, ptr %5, align 8, !tbaa !5
  %959 = getelementptr inbounds %struct.qhT, ptr %958, i32 0, i32 158
  %960 = load ptr, ptr %959, align 8, !tbaa !28
  %961 = load i32, ptr %28, align 4, !tbaa !11
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %957, ptr noundef %960, i32 noundef 8052, ptr noundef @.str.226, i32 noundef %961)
  br label %962

962:                                              ; preds = %956, %948
  %963 = load i32, ptr %29, align 4, !tbaa !11
  %964 = icmp ne i32 %963, 0
  br i1 %964, label %965, label %971

965:                                              ; preds = %962
  %966 = load ptr, ptr %5, align 8, !tbaa !5
  %967 = load ptr, ptr %5, align 8, !tbaa !5
  %968 = getelementptr inbounds %struct.qhT, ptr %967, i32 0, i32 158
  %969 = load ptr, ptr %968, align 8, !tbaa !28
  %970 = load i32, ptr %29, align 4, !tbaa !11
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %966, ptr noundef %969, i32 noundef 8053, ptr noundef @.str.227, i32 noundef %970)
  br label %971

971:                                              ; preds = %965, %962
  %972 = load ptr, ptr %5, align 8, !tbaa !5
  %973 = getelementptr inbounds %struct.qhT, ptr %972, i32 0, i32 1
  %974 = load i32, ptr %973, align 4, !tbaa !45
  %975 = icmp ne i32 %974, 0
  br i1 %975, label %976, label %982

976:                                              ; preds = %971
  %977 = load ptr, ptr %5, align 8, !tbaa !5
  %978 = load ptr, ptr %5, align 8, !tbaa !5
  %979 = getelementptr inbounds %struct.qhT, ptr %978, i32 0, i32 158
  %980 = load ptr, ptr %979, align 8, !tbaa !28
  %981 = load i32, ptr %24, align 4, !tbaa !11
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %977, ptr noundef %980, i32 noundef 8054, ptr noundef @.str.228, i32 noundef %981)
  br label %988

982:                                              ; preds = %971
  %983 = load ptr, ptr %5, align 8, !tbaa !5
  %984 = load ptr, ptr %5, align 8, !tbaa !5
  %985 = getelementptr inbounds %struct.qhT, ptr %984, i32 0, i32 158
  %986 = load ptr, ptr %985, align 8, !tbaa !28
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %983, ptr noundef %986, i32 noundef 8077, ptr noundef @.str.229)
  %987 = load ptr, ptr %5, align 8, !tbaa !5
  call void @qh_errexit(ptr noundef %987, i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %988

988:                                              ; preds = %982, %976
  %989 = load i32, ptr %24, align 4, !tbaa !11
  store i32 %989, ptr %22, align 4, !tbaa !11
  %990 = load i32, ptr %38, align 4, !tbaa !11
  %991 = icmp ne i32 %990, 0
  br i1 %991, label %992, label %1019

992:                                              ; preds = %988
  %993 = load ptr, ptr %5, align 8, !tbaa !5
  %994 = getelementptr inbounds %struct.qhT, ptr %993, i32 0, i32 8
  %995 = load i32, ptr %994, align 4, !tbaa !33
  %996 = icmp ne i32 %995, 0
  br i1 %996, label %997, label %1019

997:                                              ; preds = %992
  %998 = load i32, ptr %31, align 4, !tbaa !11
  %999 = load i32, ptr %21, align 4, !tbaa !11
  %1000 = srem i32 %998, %999
  store i32 %1000, ptr %25, align 4, !tbaa !11
  br label %1001

1001:                                             ; preds = %1005, %997
  %1002 = load i32, ptr %25, align 4, !tbaa !11
  %1003 = add nsw i32 %1002, -1
  store i32 %1003, ptr %25, align 4, !tbaa !11
  %1004 = icmp ne i32 %1002, 0
  br i1 %1004, label %1005, label %1015

1005:                                             ; preds = %1001
  %1006 = load ptr, ptr %10, align 8, !tbaa !5
  %1007 = getelementptr inbounds double, ptr %1006, i32 -1
  store ptr %1007, ptr %10, align 8, !tbaa !5
  %1008 = load double, ptr %1007, align 8, !tbaa !9
  %1009 = load ptr, ptr %11, align 8, !tbaa !5
  %1010 = load i32, ptr %25, align 4, !tbaa !11
  %1011 = sext i32 %1010 to i64
  %1012 = getelementptr inbounds double, ptr %1009, i64 %1011
  %1013 = load double, ptr %1012, align 8, !tbaa !9
  %1014 = fsub double %1013, %1008
  store double %1014, ptr %1012, align 8, !tbaa !9
  br label %1001, !llvm.loop !46

1015:                                             ; preds = %1001
  %1016 = load i32, ptr %24, align 4, !tbaa !11
  %1017 = add nsw i32 %1016, 1
  %1018 = load ptr, ptr %6, align 8, !tbaa !5
  store i32 %1017, ptr %1018, align 4, !tbaa !11
  br label %1029

1019:                                             ; preds = %992, %988
  %1020 = load i32, ptr %31, align 4, !tbaa !11
  %1021 = load i32, ptr %21, align 4, !tbaa !11
  %1022 = srem i32 %1020, %1021
  %1023 = load ptr, ptr %10, align 8, !tbaa !5
  %1024 = sext i32 %1022 to i64
  %1025 = sub i64 0, %1024
  %1026 = getelementptr inbounds double, ptr %1023, i64 %1025
  store ptr %1026, ptr %10, align 8, !tbaa !5
  %1027 = load i32, ptr %24, align 4, !tbaa !11
  %1028 = load ptr, ptr %6, align 8, !tbaa !5
  store i32 %1027, ptr %1028, align 4, !tbaa !11
  br label %1029

1029:                                             ; preds = %1019, %1015
  br label %1030

1030:                                             ; preds = %1029, %891
  %1031 = load i32, ptr %38, align 4, !tbaa !11
  %1032 = icmp ne i32 %1031, 0
  br i1 %1032, label %1033, label %1090

1033:                                             ; preds = %1030
  %1034 = load ptr, ptr %5, align 8, !tbaa !5
  %1035 = getelementptr inbounds %struct.qhT, ptr %1034, i32 0, i32 8
  %1036 = load i32, ptr %1035, align 4, !tbaa !33
  %1037 = icmp ne i32 %1036, 0
  br i1 %1037, label %1038, label %1090

1038:                                             ; preds = %1033
  %1039 = load ptr, ptr %7, align 8, !tbaa !5
  %1040 = load i32, ptr %1039, align 4, !tbaa !11
  %1041 = sub nsw i32 %1040, 1
  store i32 %1041, ptr %25, align 4, !tbaa !11
  br label %1042

1042:                                             ; preds = %1046, %1038
  %1043 = load i32, ptr %25, align 4, !tbaa !11
  %1044 = add nsw i32 %1043, -1
  store i32 %1044, ptr %25, align 4, !tbaa !11
  %1045 = icmp ne i32 %1043, 0
  br i1 %1045, label %1046, label %1055

1046:                                             ; preds = %1042
  %1047 = load i32, ptr %22, align 4, !tbaa !11
  %1048 = sitofp i32 %1047 to double
  %1049 = load ptr, ptr %11, align 8, !tbaa !5
  %1050 = load i32, ptr %25, align 4, !tbaa !11
  %1051 = sext i32 %1050 to i64
  %1052 = getelementptr inbounds double, ptr %1049, i64 %1051
  %1053 = load double, ptr %1052, align 8, !tbaa !9
  %1054 = fdiv double %1053, %1048
  store double %1054, ptr %1052, align 8, !tbaa !9
  br label %1042, !llvm.loop !47

1055:                                             ; preds = %1042
  %1056 = load ptr, ptr %10, align 8, !tbaa !5
  %1057 = load ptr, ptr %11, align 8, !tbaa !5
  %1058 = icmp eq ptr %1056, %1057
  br i1 %1058, label %1059, label %1066

1059:                                             ; preds = %1055
  %1060 = load ptr, ptr %7, align 8, !tbaa !5
  %1061 = load i32, ptr %1060, align 4, !tbaa !11
  %1062 = sub nsw i32 %1061, 1
  %1063 = load ptr, ptr %10, align 8, !tbaa !5
  %1064 = sext i32 %1062 to i64
  %1065 = getelementptr inbounds double, ptr %1063, i64 %1064
  store ptr %1065, ptr %10, align 8, !tbaa !5
  br label %1085

1066:                                             ; preds = %1055
  store i32 0, ptr %25, align 4, !tbaa !11
  br label %1067

1067:                                             ; preds = %1081, %1066
  %1068 = load i32, ptr %25, align 4, !tbaa !11
  %1069 = load ptr, ptr %7, align 8, !tbaa !5
  %1070 = load i32, ptr %1069, align 4, !tbaa !11
  %1071 = sub nsw i32 %1070, 1
  %1072 = icmp slt i32 %1068, %1071
  br i1 %1072, label %1073, label %1084

1073:                                             ; preds = %1067
  %1074 = load ptr, ptr %11, align 8, !tbaa !5
  %1075 = load i32, ptr %25, align 4, !tbaa !11
  %1076 = sext i32 %1075 to i64
  %1077 = getelementptr inbounds double, ptr %1074, i64 %1076
  %1078 = load double, ptr %1077, align 8, !tbaa !9
  %1079 = load ptr, ptr %10, align 8, !tbaa !5
  %1080 = getelementptr inbounds double, ptr %1079, i32 1
  store ptr %1080, ptr %10, align 8, !tbaa !5
  store double %1078, ptr %1079, align 8, !tbaa !9
  br label %1081

1081:                                             ; preds = %1073
  %1082 = load i32, ptr %25, align 4, !tbaa !11
  %1083 = add nsw i32 %1082, 1
  store i32 %1083, ptr %25, align 4, !tbaa !11
  br label %1067, !llvm.loop !48

1084:                                             ; preds = %1067
  br label %1085

1085:                                             ; preds = %1084, %1059
  %1086 = load double, ptr %13, align 8, !tbaa !9
  %1087 = fmul double %1086, 1.100000e+00
  %1088 = load ptr, ptr %10, align 8, !tbaa !5
  %1089 = getelementptr inbounds double, ptr %1088, i32 1
  store ptr %1089, ptr %10, align 8, !tbaa !5
  store double %1087, ptr %1088, align 8, !tbaa !9
  br label %1090

1090:                                             ; preds = %1085, %1033, %1030
  %1091 = load ptr, ptr %5, align 8, !tbaa !5
  %1092 = getelementptr inbounds %struct.qhT, ptr %1091, i32 0, i32 119
  %1093 = getelementptr inbounds [256 x i8], ptr %1092, i64 0, i64 0
  %1094 = call i32 @strcmp(ptr noundef %1093, ptr noundef @.str.230) #9
  %1095 = icmp ne i32 %1094, 0
  br i1 %1095, label %1101, label %1096

1096:                                             ; preds = %1090
  %1097 = load ptr, ptr %5, align 8, !tbaa !5
  %1098 = load ptr, ptr %5, align 8, !tbaa !5
  %1099 = getelementptr inbounds %struct.qhT, ptr %1098, i32 0, i32 158
  %1100 = load ptr, ptr %1099, align 8, !tbaa !28
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %1097, ptr noundef %1100, i32 noundef 8055, ptr noundef @.str.231)
  br label %1101

1101:                                             ; preds = %1096, %1090
  %1102 = load ptr, ptr %5, align 8, !tbaa !5
  %1103 = getelementptr inbounds %struct.qhT, ptr %1102, i32 0, i32 229
  %1104 = load ptr, ptr %1103, align 8, !tbaa !37
  call void @qh_free(ptr noundef %1104)
  %1105 = load ptr, ptr %5, align 8, !tbaa !5
  %1106 = getelementptr inbounds %struct.qhT, ptr %1105, i32 0, i32 229
  store ptr null, ptr %1106, align 8, !tbaa !37
  %1107 = load ptr, ptr %5, align 8, !tbaa !5
  %1108 = getelementptr inbounds %struct.qhT, ptr %1107, i32 0, i32 231
  %1109 = load ptr, ptr %1108, align 8, !tbaa !35
  %1110 = icmp ne ptr %1109, null
  br i1 %1110, label %1111, label %1117

1111:                                             ; preds = %1101
  %1112 = load ptr, ptr %5, align 8, !tbaa !5
  %1113 = getelementptr inbounds %struct.qhT, ptr %1112, i32 0, i32 231
  %1114 = load ptr, ptr %1113, align 8, !tbaa !35
  call void @qh_free(ptr noundef %1114)
  %1115 = load ptr, ptr %5, align 8, !tbaa !5
  %1116 = getelementptr inbounds %struct.qhT, ptr %1115, i32 0, i32 231
  store ptr null, ptr %1116, align 8, !tbaa !35
  br label %1117

1117:                                             ; preds = %1111, %1101
  %1118 = load ptr, ptr %5, align 8, !tbaa !5
  %1119 = getelementptr inbounds %struct.qhT, ptr %1118, i32 0, i32 232
  store ptr null, ptr %1119, align 8, !tbaa !38
  %1120 = load ptr, ptr %5, align 8, !tbaa !5
  %1121 = getelementptr inbounds %struct.qhT, ptr %1120, i32 0, i32 29
  %1122 = load i32, ptr %1121, align 8, !tbaa !49
  %1123 = icmp sge i32 %1122, 1
  br i1 %1123, label %1124, label %1131

1124:                                             ; preds = %1117
  %1125 = load ptr, ptr %5, align 8, !tbaa !5
  %1126 = load ptr, ptr %5, align 8, !tbaa !5
  %1127 = getelementptr inbounds %struct.qhT, ptr %1126, i32 0, i32 158
  %1128 = load ptr, ptr %1127, align 8, !tbaa !28
  %1129 = load i32, ptr %22, align 4, !tbaa !11
  %1130 = load i32, ptr %21, align 4, !tbaa !11
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %1125, ptr noundef %1128, i32 noundef 1008, ptr noundef @.str.232, i32 noundef %1129, i32 noundef %1130)
  br label %1131

1131:                                             ; preds = %1124, %1117
  %1132 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 201, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  ret ptr %1132
}

declare i32 @qh_strtol(ptr noundef, ptr noundef) #1

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

; Function Attrs: nounwind
declare ptr @strncat(ptr noundef, ptr noundef, i64 noundef) #6

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

declare i32 @qh_sethalfspace(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

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

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

declare void @qh_free(ptr noundef) #1

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #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 #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { 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 #4 = { nounwind willreturn memory(none) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #6 = { 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 #7 = { nounwind }
attributes #8 = { nounwind willreturn memory(none) }
attributes #9 = { 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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !12, i64 80}
!14 = !{!"qhT", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !10, i64 24, !12, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !12, i64 56, !12, i64 60, !10, i64 64, !10, i64 72, !12, i64 80, !12, i64 84, !12, i64 88, !12, i64 92, !12, i64 96, !12, i64 100, !6, i64 104, !12, i64 112, !12, i64 116, !6, i64 120, !12, i64 128, !12, i64 132, !12, i64 136, !12, i64 140, !12, i64 144, !12, i64 148, !12, i64 152, !10, i64 160, !10, i64 168, !12, i64 176, !12, i64 180, !12, i64 184, !12, i64 188, !10, i64 192, !10, i64 200, !12, i64 208, !12, i64 212, !10, i64 216, !12, i64 224, !12, i64 228, !12, i64 232, !12, i64 236, !12, i64 240, !12, i64 244, !12, i64 248, !12, i64 252, !12, i64 256, !12, i64 260, !12, i64 264, !12, i64 268, !12, i64 272, !12, i64 276, !12, i64 280, !12, i64 284, !12, i64 288, !12, i64 292, !12, i64 296, !7, i64 300, !12, i64 416, !12, i64 420, !12, i64 424, !12, i64 428, !12, i64 432, !12, i64 436, !12, i64 440, !12, i64 444, !10, i64 448, !10, i64 456, !10, i64 464, !12, i64 472, !12, i64 476, !12, i64 480, !12, i64 484, !12, i64 488, !12, i64 492, !12, i64 496, !12, i64 500, !12, i64 504, !12, i64 508, !12, i64 512, !12, i64 516, !12, i64 520, !12, i64 524, !12, i64 528, !12, i64 532, !12, i64 536, !12, i64 540, !12, i64 544, !10, i64 552, !12, i64 560, !12, i64 564, !12, i64 568, !12, i64 572, !12, i64 576, !12, i64 580, !12, i64 584, !12, i64 588, !10, i64 592, !12, i64 600, !6, i64 608, !6, i64 616, !12, i64 624, !12, i64 628, !12, i64 632, !12, i64 636, !12, i64 640, !6, i64 648, !12, i64 656, !6, i64 664, !12, i64 672, !7, i64 676, !12, i64 932, !7, i64 936, !7, i64 1192, !12, i64 1704, !12, i64 1708, !12, i64 1712, !12, i64 1716, !12, i64 1720, !12, i64 1724, !6, i64 1728, !6, i64 1736, !6, i64 1744, !6, i64 1752, !10, i64 1760, !10, i64 1768, !10, i64 1776, !10, i64 1784, !10, i64 1792, !10, i64 1800, !10, i64 1808, !10, i64 1816, !10, i64 1824, !10, i64 1832, !10, i64 1840, !10, i64 1848, !10, i64 1856, !10, i64 1864, !6, i64 1872, !10, i64 1880, !10, i64 1888, !10, i64 1896, !10, i64 1904, !12, i64 1912, !7, i64 1916, !7, i64 1928, !7, i64 2128, !7, i64 2168, !7, i64 2368, !6, i64 2408, !6, i64 2416, !6, i64 2424, !6, i64 2432, !12, i64 2440, !12, i64 2444, !12, i64 2448, !6, i64 2456, !6, i64 2464, !6, i64 2472, !6, i64 2480, !6, i64 2488, !12, i64 2496, !12, i64 2500, !6, i64 2504, !12, i64 2512, !6, i64 2520, !12, i64 2528, !6, i64 2536, !6, i64 2544, !6, i64 2552, !6, i64 2560, !12, i64 2568, !12, i64 2572, !12, i64 2576, !12, i64 2580, !12, i64 2584, !12, i64 2588, !12, i64 2592, !12, i64 2596, !15, i64 2600, !12, i64 2608, !12, i64 2612, !12, i64 2616, !12, i64 2620, !12, i64 2624, !6, i64 2632, !6, i64 2640, !12, i64 2648, !12, i64 2652, !12, i64 2656, !10, i64 2664, !12, i64 2672, !10, i64 2680, !10, i64 2688, !10, i64 2696, !12, i64 2704, !12, i64 2708, !12, i64 2712, !12, i64 2716, !12, i64 2720, !10, i64 2728, !10, i64 2736, !12, i64 2744, !12, i64 2748, !12, i64 2752, !12, i64 2756, !12, i64 2760, !12, i64 2764, !10, i64 2768, !10, i64 2776, !12, i64 2784, !12, i64 2788, !12, i64 2792, !12, i64 2796, !6, i64 2800, !6, i64 2808, !6, i64 2816, !6, i64 2824, !6, i64 2832, !6, i64 2840, !6, i64 2848, !6, i64 2856, !6, i64 2864, !12, i64 2872, !6, i64 2880, !6, i64 2888, !12, i64 2896, !12, i64 2900, !12, i64 2904, !6, i64 2912, !10, i64 2920, !10, i64 2928, !10, i64 2936, !10, i64 2944, !12, i64 2952, !12, i64 2956, !12, i64 2960, !12, i64 2964, !12, i64 2968, !12, i64 2972, !6, i64 2976, !12, i64 2984, !12, i64 2988, !7, i64 2992, !7, i64 3192, !12, i64 3232, !10, i64 3240, !6, i64 3248, !6, i64 3256, !6, i64 3264, !16, i64 3272, !17, i64 3424}
!15 = !{!"long", !7, i64 0}
!16 = !{!"qhmemT", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !12, i64 64, !6, i64 72, !6, i64 80, !12, i64 88, !12, i64 92, !12, i64 96, !12, i64 100, !12, i64 104, !12, i64 108, !12, i64 112, !12, i64 116, !12, i64 120, !12, i64 124, !12, i64 128, !12, i64 132, !12, i64 136, !12, i64 140, !12, i64 144}
!17 = !{!"qhstatT", !7, i64 0, !7, i64 1992, !7, i64 2256, !7, i64 4248, !7, i64 4746, !7, i64 4995, !7, i64 5248, !12, i64 5320, !12, i64 5324, !12, i64 5328, !12, i64 5332, !10, i64 5336}
!18 = !{!14, !12, i64 440}
!19 = !{!14, !12, i64 48}
!20 = !{!14, !6, i64 2408}
!21 = !{!14, !12, i64 128}
!22 = !{!7, !7, i64 0}
!23 = !{!24, !24, i64 0}
!24 = !{!"short", !7, i64 0}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = distinct !{!27, !26}
!28 = !{!14, !6, i64 2424}
!29 = distinct !{!29, !26}
!30 = distinct !{!30, !26}
!31 = distinct !{!31, !26}
!32 = !{!14, !12, i64 436}
!33 = !{!14, !12, i64 36}
!34 = !{!14, !12, i64 2440}
!35 = !{!14, !6, i64 2880}
!36 = !{!14, !12, i64 2872}
!37 = !{!14, !6, i64 2864}
!38 = !{!14, !6, i64 2888}
!39 = distinct !{!39, !26}
!40 = distinct !{!40, !26}
!41 = distinct !{!41, !26}
!42 = !{!14, !6, i64 616}
!43 = distinct !{!43, !26}
!44 = distinct !{!44, !26}
!45 = !{!14, !12, i64 4}
!46 = distinct !{!46, !26}
!47 = distinct !{!47, !26}
!48 = distinct !{!48, !26}
!49 = !{!14, !12, i64 136}


; 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"

@.str.205 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.206 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.207 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.208 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.209 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.210 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.211 = external hidden unnamed_addr constant [112 x i8], align 1
@.str.212 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.213 = external hidden unnamed_addr constant [100 x i8], align 1
@.str.214 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.215 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.216 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.217 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.218 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.219 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.220 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.221 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.222 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.223 = external hidden unnamed_addr constant [95 x i8], align 1
@.str.224 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.225 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.226 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.227 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.228 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.229 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.230 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.231 = external hidden unnamed_addr constant [365 x i8], align 1
@.str.232 = external hidden unnamed_addr constant [49 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

declare void @qh_fprintf(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ...) local_unnamed_addr #1

declare void @qh_errexit(ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #2

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

declare ptr @qh_malloc(i64 noundef) local_unnamed_addr #1

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

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

declare double @qh_strtod(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local ptr @qh_readpoints(ptr noundef %0, ptr nocapture noundef %1, ptr nocapture noundef %2, ptr nocapture noundef writeonly %3) local_unnamed_addr #3 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca [201 x i8], align 16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #11
  store ptr null, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #11
  call void @llvm.lifetime.start.p0(i64 201, ptr nonnull %8) #11
  %9 = getelementptr inbounds i8, ptr %0, i64 80
  %10 = load i32, ptr %9, align 8, !tbaa !9
  %.not = icmp eq i32 %10, 0
  br i1 %.not, label %14, label %11

11:                                               ; preds = %4
  %12 = getelementptr inbounds i8, ptr %0, i64 440
  %13 = load i32, ptr %12, align 8, !tbaa !16
  %.not402 = icmp eq i32 %13, 0
  br label %14

14:                                               ; preds = %11, %4
  %15 = phi i1 [ false, %4 ], [ %.not402, %11 ]
  %16 = getelementptr inbounds i8, ptr %0, i64 48
  %17 = load i32, ptr %16, align 8, !tbaa !17
  %.not403 = icmp eq i32 %17, 0
  br i1 %.not403, label %.thread, label %.preheader516

.preheader516:                                    ; preds = %14
  %18 = getelementptr inbounds i8, ptr %0, i64 2408
  %19 = load ptr, ptr %18, align 8, !tbaa !18
  %20 = call ptr @fgets(ptr noundef nonnull %8, i32 noundef 200, ptr noundef %19)
  store ptr %20, ptr %6, align 8, !tbaa !5
  %.not404575 = icmp eq ptr %20, null
  br i1 %.not404575, label %._crit_edge579, label %.lr.ph578

.lr.ph578:                                        ; preds = %.preheader516
  %21 = getelementptr inbounds i8, ptr %0, i64 128
  %22 = getelementptr i8, ptr %0, i64 936
  br label %23

23:                                               ; preds = %.lr.ph578, %66
  %24 = phi ptr [ %20, %.lr.ph578 ], [ %68, %66 ]
  %.0334577 = phi i32 [ 0, %.lr.ph578 ], [ %.1335, %66 ]
  %.0370576 = phi i32 [ 0, %.lr.ph578 ], [ %.1371, %66 ]
  %25 = add nsw i32 %.0334577, 1
  %26 = load i32, ptr %21, align 8, !tbaa !19
  %27 = icmp ne i32 %26, 0
  %28 = icmp eq i32 %.0334577, 0
  %or.cond = select i1 %27, i1 %28, i1 false
  br i1 %or.cond, label %29, label %60

29:                                               ; preds = %23
  %30 = tail call ptr @__ctype_b_loc() #12
  %31 = load ptr, ptr %30, align 8, !tbaa !5
  %32 = load i8, ptr %24, align 1, !tbaa !20
  %33 = sext i8 %32 to i64
  %34 = getelementptr inbounds i16, ptr %31, i64 %33
  %35 = load i16, ptr %34, align 2, !tbaa !21
  %36 = and i16 %35, 2048
  %.not405 = icmp eq i16 %36, 0
  br i1 %.not405, label %60, label %37

37:                                               ; preds = %29
  %38 = call i32 @qh_strtol(ptr noundef nonnull %24, ptr noundef nonnull %6) #11
  %39 = load ptr, ptr %30, align 8, !tbaa !5
  %40 = load ptr, ptr %6, align 8, !tbaa !5
  %41 = load i8, ptr %40, align 1, !tbaa !20
  %42 = sext i8 %41 to i64
  %43 = getelementptr inbounds i16, ptr %39, i64 %42
  %44 = load i16, ptr %43, align 2, !tbaa !21
  %45 = and i16 %44, 8192
  %.not486574 = icmp eq i16 %45, 0
  br i1 %.not486574, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %37, %.lr.ph
  %46 = phi ptr [ %47, %.lr.ph ], [ %40, %37 ]
  %47 = getelementptr inbounds i8, ptr %46, i64 1
  store ptr %47, ptr %6, align 8, !tbaa !5
  %48 = load ptr, ptr %30, align 8, !tbaa !5
  %49 = load i8, ptr %47, align 1, !tbaa !20
  %50 = sext i8 %49 to i64
  %51 = getelementptr inbounds i16, ptr %48, i64 %50
  %52 = load i16, ptr %51, align 2, !tbaa !21
  %53 = and i16 %52, 8192
  %.not486 = icmp eq i16 %53, 0
  br i1 %.not486, label %._crit_edge, label %.lr.ph, !llvm.loop !23

._crit_edge:                                      ; preds = %.lr.ph, %37
  %.lcssa570 = phi ptr [ %40, %37 ], [ %47, %.lr.ph ]
  %54 = call i32 @qh_strtol(ptr noundef nonnull %.lcssa570, ptr noundef nonnull %6) #11
  %55 = icmp eq i32 %54, 1
  br i1 %55, label %56, label %66

56:                                               ; preds = %._crit_edge
  %57 = load ptr, ptr %6, align 8, !tbaa !5
  %58 = call i32 @qh_readfeasible(ptr noundef %0, i32 noundef %38, ptr noundef %57)
  %59 = add nsw i32 %58, 1
  br label %66

60:                                               ; preds = %29, %23
  %bcmp = call i32 @bcmp(ptr noundef nonnull dereferenceable(5) %8, ptr noundef nonnull dereferenceable(5) @.str.205, i64 5)
  %.not406 = icmp eq i32 %bcmp, 0
  br i1 %.not406, label %.thread, label %61

61:                                               ; preds = %60
  %bcmp407 = call i32 @bcmp(ptr noundef nonnull dereferenceable(5) %8, ptr noundef nonnull dereferenceable(5) @.str.206, i64 5)
  %.not408 = icmp eq i32 %bcmp407, 0
  br i1 %.not408, label %.thread, label %62

62:                                               ; preds = %61
  %63 = load i8, ptr %22, align 8, !tbaa !20
  %.not485 = icmp eq i8 %63, 0
  br i1 %.not485, label %64, label %66

64:                                               ; preds = %62
  %65 = call ptr @strncat(ptr noundef nonnull dereferenceable(1) %22, ptr noundef nonnull dereferenceable(1) %24, i64 noundef 255) #11
  br label %66

66:                                               ; preds = %._crit_edge, %64, %62, %56
  %.1371 = phi i32 [ %38, %56 ], [ %.0370576, %62 ], [ %.0370576, %64 ], [ 0, %._crit_edge ]
  %.1335 = phi i32 [ %59, %56 ], [ %25, %62 ], [ %25, %64 ], [ 1, %._crit_edge ]
  %67 = load ptr, ptr %18, align 8, !tbaa !18
  %68 = call ptr @fgets(ptr noundef nonnull %8, i32 noundef 200, ptr noundef %67)
  store ptr %68, ptr %6, align 8, !tbaa !5
  %.not404 = icmp eq ptr %68, null
  br i1 %.not404, label %._crit_edge579, label %23, !llvm.loop !25

._crit_edge579:                                   ; preds = %66, %.preheader516
  %.0370.lcssa = phi i32 [ 0, %.preheader516 ], [ %.1371, %66 ]
  %.0334.lcssa = phi i32 [ 0, %.preheader516 ], [ %.1335, %66 ]
  %69 = getelementptr inbounds i8, ptr %0, i64 2424
  %70 = load ptr, ptr %69, align 8, !tbaa !26
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %70, i32 noundef 6074, ptr noundef nonnull @.str.207) #11
  call void @qh_errexit(ptr noundef nonnull %0, i32 noundef 1, ptr noundef null, ptr noundef null) #11
  br label %.thread

.thread:                                          ; preds = %61, %60, %._crit_edge579, %14
  %.2372 = phi i32 [ %.0370.lcssa, %._crit_edge579 ], [ 0, %14 ], [ %.0370576, %60 ], [ %.0370576, %61 ]
  %.3337 = phi i32 [ %.0334.lcssa, %._crit_edge579 ], [ 0, %14 ], [ %25, %60 ], [ %25, %61 ]
  %71 = getelementptr inbounds i8, ptr %0, i64 2408
  %72 = getelementptr inbounds i8, ptr %0, i64 128
  %73 = getelementptr inbounds i8, ptr %0, i64 936
  br label %74

74:                                               ; preds = %.thread, %.loopexit515
  %.0325621 = phi i32 [ 0, %.thread ], [ %.1, %.loopexit515 ]
  %.4338620 = phi i32 [ %.3337, %.thread ], [ %.5547, %.loopexit515 ]
  %.0350619 = phi i32 [ 0, %.thread ], [ %.1351, %.loopexit515 ]
  %.3373618 = phi i32 [ %.2372, %.thread ], [ %.4374549, %.loopexit515 ]
  %.0382616 = phi i32 [ 0, %.thread ], [ %.1383551, %.loopexit515 ]
  %75 = load ptr, ptr %71, align 8, !tbaa !18
  %76 = call ptr @fgets(ptr noundef nonnull %8, i32 noundef 200, ptr noundef %75)
  store ptr %76, ptr %6, align 8, !tbaa !5
  %.not411 = icmp eq ptr %76, null
  br i1 %.not411, label %.critedge.thread, label %77

77:                                               ; preds = %74
  %78 = add nsw i32 %.4338620, 1
  %bcmp412 = call i32 @bcmp(ptr noundef nonnull dereferenceable(5) %76, ptr noundef nonnull dereferenceable(5) @.str.205, i64 5)
  %.not413 = icmp eq i32 %bcmp412, 0
  br i1 %.not413, label %80, label %79

79:                                               ; preds = %77
  %bcmp414 = call i32 @bcmp(ptr noundef nonnull dereferenceable(5) %76, ptr noundef nonnull dereferenceable(5) @.str.206, i64 5)
  %.not415 = icmp eq i32 %bcmp414, 0
  br i1 %.not415, label %80, label %81

80:                                               ; preds = %79, %77
  br label %81

81:                                               ; preds = %80, %79
  %.1 = phi i32 [ %.0325621, %79 ], [ 1, %80 ]
  %82 = load i8, ptr %76, align 1, !tbaa !20
  %.not416588 = icmp eq i8 %82, 0
  br i1 %.not416588, label %.loopexit515, label %.preheader514.lr.ph

.preheader514.lr.ph:                              ; preds = %81
  %83 = tail call ptr @__ctype_b_loc() #12
  br label %.preheader514

.preheader514:                                    ; preds = %.preheader514.lr.ph, %119
  %84 = phi i8 [ %82, %.preheader514.lr.ph ], [ %121, %119 ]
  %85 = phi ptr [ %76, %.preheader514.lr.ph ], [ %120, %119 ]
  %.5591 = phi i32 [ %78, %.preheader514.lr.ph ], [ %.6, %119 ]
  %.4374590 = phi i32 [ %.3373618, %.preheader514.lr.ph ], [ %.5375, %119 ]
  %.1383589 = phi i32 [ %.0382616, %.preheader514.lr.ph ], [ %.2384, %119 ]
  %86 = load ptr, ptr %83, align 8, !tbaa !5
  %87 = sext i8 %84 to i64
  %88 = getelementptr inbounds i16, ptr %86, i64 %87
  %89 = load i16, ptr %88, align 2, !tbaa !21
  %90 = zext i16 %89 to i32
  %91 = and i32 %90, 8192
  %.not417582 = icmp eq i32 %91, 0
  br i1 %.not417582, label %._crit_edge584.thread, label %.lr.ph583

.lr.ph583:                                        ; preds = %.preheader514, %.lr.ph583
  %92 = phi ptr [ %93, %.lr.ph583 ], [ %85, %.preheader514 ]
  %93 = getelementptr inbounds i8, ptr %92, i64 1
  store ptr %93, ptr %6, align 8, !tbaa !5
  %94 = load ptr, ptr %83, align 8, !tbaa !5
  %95 = load i8, ptr %93, align 1, !tbaa !20
  %96 = sext i8 %95 to i64
  %97 = getelementptr inbounds i16, ptr %94, i64 %96
  %98 = load i16, ptr %97, align 2, !tbaa !21
  %99 = zext i16 %98 to i32
  %100 = and i32 %99, 8192
  %.not417 = icmp eq i32 %100, 0
  br i1 %.not417, label %._crit_edge584, label %.lr.ph583, !llvm.loop !27

._crit_edge584:                                   ; preds = %.lr.ph583
  %.not418 = icmp eq i8 %95, 0
  br i1 %.not418, label %.loopexit515, label %._crit_edge584.thread

._crit_edge584.thread:                            ; preds = %.preheader514, %._crit_edge584
  %.lcssa543712 = phi i32 [ %99, %._crit_edge584 ], [ %90, %.preheader514 ]
  %.lcssa545711 = phi ptr [ %93, %._crit_edge584 ], [ %85, %.preheader514 ]
  %101 = and i32 %.lcssa543712, 2048
  %.not419 = icmp eq i32 %101, 0
  br i1 %.not419, label %102, label %106

102:                                              ; preds = %._crit_edge584.thread
  %103 = load i8, ptr %73, align 8, !tbaa !20
  %.not420 = icmp eq i8 %103, 0
  br i1 %.not420, label %104, label %.loopexit515

104:                                              ; preds = %102
  %105 = call ptr @strncat(ptr noundef nonnull dereferenceable(1) %73, ptr noundef nonnull dereferenceable(1) %.lcssa545711, i64 noundef 255) #11
  br label %.loopexit515

106:                                              ; preds = %._crit_edge584.thread
  %.not421 = icmp eq i32 %.1383589, 0
  %107 = call i32 @qh_strtol(ptr noundef nonnull %.lcssa545711, ptr noundef nonnull %6) #11
  br i1 %.not421, label %119, label %108

108:                                              ; preds = %106
  %109 = icmp eq i32 %107, 1
  %110 = icmp sgt i32 %.1383589, 1
  %or.cond3 = select i1 %109, i1 %110, i1 false
  br i1 %or.cond3, label %111, label %.loopexit515

111:                                              ; preds = %108
  %112 = load i32, ptr %72, align 8, !tbaa !19
  %.not422 = icmp eq i32 %112, 0
  br i1 %.not422, label %.critedge, label %113

113:                                              ; preds = %111
  %114 = load i32, ptr %16, align 8, !tbaa !17
  %.not423 = icmp eq i32 %114, 0
  br i1 %.not423, label %115, label %.critedge

115:                                              ; preds = %113
  %116 = load ptr, ptr %6, align 8, !tbaa !5
  %117 = call i32 @qh_readfeasible(ptr noundef nonnull %0, i32 noundef %.1383589, ptr noundef %116)
  %118 = add nsw i32 %117, %.5591
  br label %119

119:                                              ; preds = %106, %115
  %.2384 = phi i32 [ 0, %115 ], [ %107, %106 ]
  %.5375 = phi i32 [ %.1383589, %115 ], [ %.4374590, %106 ]
  %.6 = phi i32 [ %118, %115 ], [ %.5591, %106 ]
  %120 = load ptr, ptr %6, align 8, !tbaa !5
  %121 = load i8, ptr %120, align 1, !tbaa !20
  %.not416 = icmp eq i8 %121, 0
  br i1 %.not416, label %.loopexit515, label %.preheader514, !llvm.loop !28

.loopexit515:                                     ; preds = %119, %._crit_edge584, %108, %81, %102, %104
  %.1383551 = phi i32 [ %.1383589, %102 ], [ %.1383589, %104 ], [ %.0382616, %81 ], [ %.2384, %119 ], [ %.1383589, %._crit_edge584 ], [ %.1383589, %108 ]
  %.4374549 = phi i32 [ %.4374590, %102 ], [ %.4374590, %104 ], [ %.3373618, %81 ], [ %.5375, %119 ], [ %.4374590, %._crit_edge584 ], [ %.4374590, %108 ]
  %.5547 = phi i32 [ %.5591, %102 ], [ %.5591, %104 ], [ %78, %81 ], [ %.6, %119 ], [ %.5591, %._crit_edge584 ], [ %.5591, %108 ]
  %.3379 = phi i32 [ 0, %102 ], [ 0, %104 ], [ 0, %81 ], [ 0, %119 ], [ 0, %._crit_edge584 ], [ %107, %108 ]
  %.1351 = phi i32 [ %.0350619, %102 ], [ %.5591, %104 ], [ %.0350619, %81 ], [ %.0350619, %108 ], [ %.0350619, %._crit_edge584 ], [ %.0350619, %119 ]
  %.not410 = icmp eq i32 %.3379, 0
  br i1 %.not410, label %74, label %.critedge, !llvm.loop !29

.critedge:                                        ; preds = %.loopexit515, %113, %111
  %.1351723 = phi i32 [ %.0350619, %111 ], [ %.0350619, %113 ], [ %.1351, %.loopexit515 ]
  %.3379722 = phi i32 [ 1, %111 ], [ 1, %113 ], [ %.3379, %.loopexit515 ]
  %.5547721 = phi i32 [ %.5591, %111 ], [ %.5591, %113 ], [ %.5547, %.loopexit515 ]
  %.4374549720 = phi i32 [ %.4374590, %111 ], [ %.4374590, %113 ], [ %.4374549, %.loopexit515 ]
  %.1383551719 = phi i32 [ %.1383589, %111 ], [ %.1383589, %113 ], [ %.1383551, %.loopexit515 ]
  %.pr = load ptr, ptr %6, align 8, !tbaa !5
  %.not424 = icmp eq ptr %.pr, null
  br i1 %.not424, label %.critedge.thread, label %124

.critedge.thread:                                 ; preds = %74, %.critedge
  %.0382569 = phi i32 [ %.1383551719, %.critedge ], [ %.0382616, %74 ]
  %.0376566 = phi i32 [ %.3379722, %.critedge ], [ 0, %74 ]
  %.3373563 = phi i32 [ %.4374549720, %.critedge ], [ %.3373618, %74 ]
  %.0350560 = phi i32 [ %.1351723, %.critedge ], [ %.0350619, %74 ]
  %.4338557 = phi i32 [ %.5547721, %.critedge ], [ %.4338620, %74 ]
  %.0325554 = phi i32 [ %.1, %.critedge ], [ %.0325621, %74 ]
  %122 = getelementptr inbounds i8, ptr %0, i64 2424
  %123 = load ptr, ptr %122, align 8, !tbaa !26
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, ptr noundef %123, i32 noundef 6075, ptr noundef nonnull @.str.208) #11
  call void @qh_errexit(ptr noundef %0, i32 noundef 1, ptr noundef null, ptr noundef null) #11
  br label %124

124:                                              ; preds = %.critedge.thread, %.critedge
  %.0382568 = phi i32 [ %.0382569, %.critedge.thread ], [ %.1383551719, %.critedge ]
  %.0376565 = phi i32 [ %.0376566, %.critedge.thread ], [ %.3379722, %.critedge ]
  %.3373562 = phi i32 [ %.3373563, %.critedge.thread ], [ %.4374549720, %.critedge ]
  %.0350559 = phi i32 [ %.0350560, %.critedge.thread ], [ %.1351723, %.critedge ]
  %.4338556 = phi i32 [ %.4338557, %.critedge.thread ], [ %.5547721, %.critedge ]
  %.0325553 = phi i32 [ %.0325554, %.critedge.thread ], [ %.1, %.critedge ]
  %spec.select = call i32 @llvm.smin.i32(i32 %.0382568, i32 %.0376565)
  %spec.select487 = call i32 @llvm.smax.i32(i32 %.0382568, i32 %.0376565)
  %125 = icmp slt i32 %spec.select, 2
  br i1 %125, label %126, label %129

126:                                              ; preds = %124
  %127 = getelementptr inbounds i8, ptr %0, i64 2424
  %128 = load ptr, ptr %127, align 8, !tbaa !26
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, ptr noundef %128, i32 noundef 6220, ptr noundef nonnull @.str.209, i32 noundef %spec.select) #11
  call void @qh_errexit(ptr noundef %0, i32 noundef 1, ptr noundef null, ptr noundef null) #11
  br label %129

129:                                              ; preds = %126, %124
  %130 = add i32 %spec.select487, -2147483632
  %or.cond5 = icmp ult i32 %130, -2147483631
  br i1 %or.cond5, label %131, label %134

131:                                              ; preds = %129
  %132 = getelementptr inbounds i8, ptr %0, i64 2424
  %133 = load ptr, ptr %132, align 8, !tbaa !26
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, ptr noundef %133, i32 noundef 6411, ptr noundef nonnull @.str.210, i32 noundef 2147483631, i32 noundef %spec.select487, i32 noundef %spec.select) #11
  call void @qh_errexit(ptr noundef %0, i32 noundef 1, ptr noundef null, ptr noundef null) #11
  br label %134

134:                                              ; preds = %129, %131
  %135 = load i32, ptr %72, align 8, !tbaa !19
  %.not425 = icmp eq i32 %135, 0
  br i1 %15, label %136, label %.critedge489

136:                                              ; preds = %134
  br i1 %.not425, label %140, label %137

137:                                              ; preds = %136
  %138 = getelementptr inbounds i8, ptr %0, i64 2424
  %139 = load ptr, ptr %138, align 8, !tbaa !26
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %139, i32 noundef 6037, ptr noundef nonnull @.str.211) #11
  call void @qh_errexit(ptr noundef nonnull %0, i32 noundef 1, ptr noundef null, ptr noundef null) #11
  br label %164

140:                                              ; preds = %136
  %141 = getelementptr inbounds i8, ptr %0, i64 436
  store i32 0, ptr %141, align 4, !tbaa !30
  %142 = load i32, ptr %16, align 8, !tbaa !17
  %.not430 = icmp eq i32 %142, 0
  %143 = zext i1 %.not430 to i32
  %storemerge431 = add nsw i32 %spec.select, %143
  store i32 %storemerge431, ptr %2, align 4, !tbaa !31
  store i32 %spec.select487, ptr %1, align 4, !tbaa !31
  %144 = getelementptr inbounds i8, ptr %0, i64 36
  %145 = load i32, ptr %144, align 4, !tbaa !32
  %.not432 = icmp eq i32 %145, 0
  br i1 %.not432, label %164, label %146

146:                                              ; preds = %140
  %147 = add nsw i32 %spec.select487, 1
  store i32 %147, ptr %1, align 4, !tbaa !31
  br label %164

.critedge489:                                     ; preds = %134
  br i1 %.not425, label %161, label %148

148:                                              ; preds = %.critedge489
  %149 = add nsw i32 %spec.select, -1
  store i32 %149, ptr %2, align 4, !tbaa !31
  store i32 %spec.select487, ptr %1, align 4, !tbaa !31
  %150 = icmp slt i32 %spec.select, 3
  br i1 %150, label %151, label %154

151:                                              ; preds = %148
  %152 = getelementptr inbounds i8, ptr %0, i64 2424
  %153 = load ptr, ptr %152, align 8, !tbaa !26
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %153, i32 noundef 6221, ptr noundef nonnull @.str.212, i32 noundef %spec.select) #11
  call void @qh_errexit(ptr noundef nonnull %0, i32 noundef 1, ptr noundef null, ptr noundef null) #11
  br label %154

154:                                              ; preds = %151, %148
  %.not428 = icmp eq i32 %.3373562, 0
  %155 = load i32, ptr %2, align 4, !tbaa !31
  br i1 %.not428, label %160, label %156

156:                                              ; preds = %154
  %.not429 = icmp eq i32 %.3373562, %155
  br i1 %.not429, label %164, label %157

157:                                              ; preds = %156
  %158 = getelementptr inbounds i8, ptr %0, i64 2424
  %159 = load ptr, ptr %158, align 8, !tbaa !26
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %159, i32 noundef 6222, ptr noundef nonnull @.str.213, i32 noundef %.3373562, i32 noundef %spec.select) #11
  call void @qh_errexit(ptr noundef nonnull %0, i32 noundef 1, ptr noundef null, ptr noundef null) #11
  br label %164

160:                                              ; preds = %154
  call void @qh_setfeasible(ptr noundef nonnull %0, i32 noundef %155)
  br label %164

161:                                              ; preds = %.critedge489
  %162 = load i32, ptr %16, align 8, !tbaa !17
  %.not427 = icmp ne i32 %162, 0
  %163 = sext i1 %.not427 to i32
  %storemerge = add nsw i32 %spec.select, %163
  store i32 %storemerge, ptr %2, align 4, !tbaa !31
  store i32 %spec.select487, ptr %1, align 4, !tbaa !31
  br label %164

164:                                              ; preds = %146, %140, %160, %157, %156, %161, %137
  %165 = load i32, ptr %2, align 4, !tbaa !31
  %166 = shl nsw i32 %165, 3
  %167 = getelementptr inbounds i8, ptr %0, i64 2440
  store i32 %166, ptr %167, align 8, !tbaa !33
  %168 = load i32, ptr %72, align 8, !tbaa !19
  %.not433 = icmp eq i32 %168, 0
  br i1 %.not433, label %181, label %169

169:                                              ; preds = %164
  %170 = sext i32 %166 to i64
  %171 = add nsw i64 %170, 8
  %172 = call ptr @qh_malloc(i64 noundef %171) #11
  %173 = getelementptr inbounds i8, ptr %0, i64 2880
  store ptr %172, ptr %173, align 8, !tbaa !34
  %174 = load i32, ptr %16, align 8, !tbaa !17
  %.not434 = icmp eq i32 %174, 0
  br i1 %.not434, label %177, label %175

175:                                              ; preds = %169
  %176 = getelementptr inbounds i8, ptr %172, i64 8
  br label %181

177:                                              ; preds = %169
  %178 = load i32, ptr %2, align 4, !tbaa !31
  %179 = sext i32 %178 to i64
  %180 = getelementptr inbounds double, ptr %172, i64 %179
  br label %181

181:                                              ; preds = %175, %177, %164
  %.0387 = phi ptr [ %172, %175 ], [ %180, %177 ], [ null, %164 ]
  %.0386 = phi ptr [ %176, %175 ], [ %172, %177 ], [ null, %164 ]
  %.0364 = phi ptr [ %172, %175 ], [ %172, %177 ], [ null, %164 ]
  %182 = mul nsw i32 %spec.select, 21
  %183 = getelementptr inbounds i8, ptr %0, i64 2872
  %184 = icmp slt i32 %spec.select, 24
  %spec.select490 = select i1 %184, i32 500, i32 %182
  store i32 %spec.select490, ptr %183, align 8, !tbaa !35
  %185 = add nsw i32 %spec.select490, 1
  %186 = sext i32 %185 to i64
  %187 = call ptr @qh_malloc(i64 noundef %186) #11
  %188 = getelementptr inbounds i8, ptr %0, i64 2864
  store ptr %187, ptr %188, align 8, !tbaa !36
  store i32 1, ptr %3, align 4, !tbaa !31
  %189 = load i32, ptr %1, align 4, !tbaa !31
  %190 = load i32, ptr %2, align 4, !tbaa !31
  %191 = mul nsw i32 %190, %189
  %192 = sext i32 %191 to i64
  %193 = shl nsw i64 %192, 3
  %194 = call ptr @qh_malloc(i64 noundef %193) #11
  %195 = getelementptr inbounds i8, ptr %0, i64 2888
  store ptr %194, ptr %195, align 8, !tbaa !37
  store ptr %194, ptr %5, align 8, !tbaa !5
  %.not436 = icmp eq ptr %194, null
  br i1 %.not436, label %203, label %196

196:                                              ; preds = %181
  %197 = load ptr, ptr %188, align 8, !tbaa !36
  %.not437 = icmp eq ptr %197, null
  br i1 %.not437, label %203, label %198

198:                                              ; preds = %196
  %199 = load i32, ptr %72, align 8, !tbaa !19
  %.not438 = icmp eq i32 %199, 0
  br i1 %.not438, label %206, label %200

200:                                              ; preds = %198
  %201 = getelementptr inbounds i8, ptr %0, i64 2880
  %202 = load ptr, ptr %201, align 8, !tbaa !34
  %.not439 = icmp eq ptr %202, null
  br i1 %.not439, label %203, label %206

203:                                              ; preds = %200, %196, %181
  %204 = getelementptr inbounds i8, ptr %0, i64 2424
  %205 = load ptr, ptr %204, align 8, !tbaa !26
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %205, i32 noundef 6076, ptr noundef nonnull @.str.214, i32 noundef %spec.select487) #11
  call void @qh_errexit(ptr noundef nonnull %0, i32 noundef 4, ptr noundef null, ptr noundef null) #11
  br label %206

206:                                              ; preds = %203, %200, %198
  br i1 %15, label %207, label %.loopexit513

207:                                              ; preds = %206
  %208 = getelementptr inbounds i8, ptr %0, i64 36
  %209 = load i32, ptr %208, align 4, !tbaa !32
  %.not440 = icmp eq i32 %209, 0
  br i1 %.not440, label %.loopexit513, label %210

210:                                              ; preds = %207
  %211 = load i32, ptr %2, align 4, !tbaa !31
  %212 = mul i32 %211, %spec.select487
  %213 = sext i32 %212 to i64
  %214 = getelementptr inbounds double, ptr %194, i64 %213
  %215 = add nsw i32 %211, -1
  %.not441622 = icmp eq i32 %215, 0
  br i1 %.not441622, label %.loopexit513, label %.lr.ph625.preheader

.lr.ph625.preheader:                              ; preds = %210
  %216 = add i32 %211, -2
  %217 = sext i32 %216 to i64
  %218 = add nsw i64 %213, %217
  %219 = zext i32 %216 to i64
  %220 = sub nsw i64 %218, %219
  %221 = shl nsw i64 %220, 3
  %scevgep = getelementptr i8, ptr %194, i64 %221
  %222 = zext i32 %215 to i64
  %223 = shl nuw nsw i64 %222, 3
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep, i8 0, i64 %223, i1 false), !tbaa !38
  br label %.loopexit513

.loopexit513:                                     ; preds = %.lr.ph625.preheader, %210, %207, %206
  %.0 = phi ptr [ null, %207 ], [ null, %206 ], [ %214, %210 ], [ %214, %.lr.ph625.preheader ]
  %.0876 = ptrtoint ptr %.0 to i64
  %224 = mul i32 %.0376565, %.0382568
  %.not449 = icmp eq i32 %.0325553, 0
  %225 = getelementptr inbounds i8, ptr %0, i64 2424
  %226 = getelementptr inbounds i8, ptr %0, i64 36
  %227 = getelementptr inbounds i8, ptr %0, i64 616
  %228 = getelementptr inbounds i8, ptr %0, i64 2880
  br label %229

229:                                              ; preds = %.backedge, %.loopexit513
  %.1365 = phi ptr [ %.0364, %.loopexit513 ], [ %.2366.ph.ph, %.backedge ]
  %.0355 = phi double [ 0xFFEFFFFFFFFFFFFF, %.loopexit513 ], [ %.1356.ph.ph.ph, %.backedge ]
  %.2352 = phi i32 [ %.0350559, %.loopexit513 ], [ %.4354, %.backedge ]
  %.0347 = phi i32 [ 0, %.loopexit513 ], [ %spec.select494, %.backedge ]
  %.0344 = phi i32 [ 0, %.loopexit513 ], [ %.1345.ph.ph.ph.ph, %.backedge ]
  %.0341 = phi i32 [ 0, %.loopexit513 ], [ %.1342, %.backedge ]
  %.0339 = phi i32 [ 0, %.loopexit513 ], [ %.1340, %.backedge ]
  %.7 = phi i32 [ %.4338556, %.loopexit513 ], [ %.8, %.backedge ]
  %.0331 = phi double [ 0.000000e+00, %.loopexit513 ], [ %.1332.ph.ph, %.backedge ]
  %.0329 = phi i32 [ 0, %.loopexit513 ], [ %.1330.ph, %.backedge ]
  %.not442 = phi i1 [ false, %.loopexit513 ], [ true, %.backedge ]
  br i1 %.not442, label %230, label %.thread498

230:                                              ; preds = %229
  %231 = load ptr, ptr %188, align 8, !tbaa !36
  %232 = load i32, ptr %183, align 8, !tbaa !35
  %233 = load ptr, ptr %71, align 8, !tbaa !18
  %234 = call ptr @fgets(ptr noundef %231, i32 noundef %232, ptr noundef %233)
  store ptr %234, ptr %6, align 8, !tbaa !5
  %.not443 = icmp eq ptr %234, null
  br i1 %.not443, label %370, label %236

.thread498:                                       ; preds = %229
  %235 = load ptr, ptr %6, align 8, !tbaa !5
  %.not443499 = icmp eq ptr %235, null
  br i1 %.not443499, label %370, label %.thread500

236:                                              ; preds = %230
  %237 = add nsw i32 %.7, 1
  %238 = load i8, ptr %234, align 1, !tbaa !20
  switch i8 %238, label %.thread500 [
    i8 101, label %239
    i8 69, label %239
  ]

239:                                              ; preds = %236, %236
  %bcmp444 = call i32 @bcmp(ptr noundef nonnull dereferenceable(3) %234, ptr noundef nonnull dereferenceable(3) @.str.215, i64 3)
  %.not445 = icmp eq i32 %bcmp444, 0
  br i1 %.not445, label %241, label %240

240:                                              ; preds = %239
  %bcmp446 = call i32 @bcmp(ptr noundef nonnull dereferenceable(3) %234, ptr noundef nonnull dereferenceable(3) @.str.216, i64 3)
  %.not447 = icmp eq i32 %bcmp446, 0
  br i1 %.not447, label %241, label %.thread500

241:                                              ; preds = %240, %239
  %242 = load i32, ptr %16, align 8, !tbaa !17
  %.not448 = icmp eq i32 %242, 0
  br i1 %.not448, label %243, label %370

243:                                              ; preds = %241
  br i1 %.not449, label %.thread500, label %244

244:                                              ; preds = %243
  %245 = load ptr, ptr %225, align 8, !tbaa !26
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %245, i32 noundef 7058, ptr noundef nonnull @.str.217) #11
  br label %.thread500

.thread500:                                       ; preds = %.thread498, %236, %244, %243, %240
  %.8 = phi i32 [ %237, %240 ], [ %237, %244 ], [ %237, %243 ], [ %237, %236 ], [ %.7, %.thread498 ]
  br label %.outer.outer.outer.outer

.outer.outer.outer.outer:                         ; preds = %356, %.thread500
  %.2366.ph.ph.ph.ph = phi ptr [ %.4368, %356 ], [ %.1365, %.thread500 ]
  %.1356.ph.ph.ph.ph = phi double [ %.3358, %356 ], [ %.0355, %.thread500 ]
  %.1345.ph.ph.ph.ph = phi i32 [ %spec.select493, %356 ], [ %.0344, %.thread500 ]
  %.1342.ph.ph.ph.ph = phi i32 [ %spec.select492, %356 ], [ %.0341, %.thread500 ]
  %.1340.ph.ph.ph.ph = phi i32 [ %279, %356 ], [ %.0339, %.thread500 ]
  %.1332.ph.ph.ph.ph = phi double [ %.3, %356 ], [ %.0331, %.thread500 ]
  %.1330.ph.ph.ph.ph = phi i32 [ 0, %356 ], [ %.0329, %.thread500 ]
  %246 = phi i1 [ false, %356 ], [ true, %.thread500 ]
  br label %.outer.outer.outer

.outer.outer.outer:                               ; preds = %.outer.outer.outer.outer, %._crit_edge634
  %.2366.ph.ph.ph = phi ptr [ %.4368, %._crit_edge634 ], [ %.2366.ph.ph.ph.ph, %.outer.outer.outer.outer ]
  %.1356.ph.ph.ph = phi double [ %.3358, %._crit_edge634 ], [ %.1356.ph.ph.ph.ph, %.outer.outer.outer.outer ]
  %.1342.ph.ph.ph = phi i32 [ %spec.select492, %._crit_edge634 ], [ %.1342.ph.ph.ph.ph, %.outer.outer.outer.outer ]
  %.1340.ph.ph.ph = phi i32 [ %279, %._crit_edge634 ], [ %.1340.ph.ph.ph.ph, %.outer.outer.outer.outer ]
  %.1332.ph.ph.ph = phi double [ %.3, %._crit_edge634 ], [ %.1332.ph.ph.ph.ph, %.outer.outer.outer.outer ]
  %.1330.ph.ph.ph = phi i32 [ 0, %._crit_edge634 ], [ %.1330.ph.ph.ph.ph, %.outer.outer.outer.outer ]
  br label %.outer.outer

.outer.outer:                                     ; preds = %.outer.outer.outer, %319
  %.2366.ph.ph = phi ptr [ %.3367, %319 ], [ %.2366.ph.ph.ph, %.outer.outer.outer ]
  %.1342.ph.ph = phi i32 [ %spec.select492, %319 ], [ %.1342.ph.ph.ph, %.outer.outer.outer ]
  %.1340.ph.ph = phi i32 [ %279, %319 ], [ %.1340.ph.ph.ph, %.outer.outer.outer ]
  %.1332.ph.ph = phi double [ %.2333, %319 ], [ %.1332.ph.ph.ph, %.outer.outer.outer ]
  %.1330.ph.ph = phi i32 [ %320, %319 ], [ %.1330.ph.ph.ph, %.outer.outer.outer ]
  br label %.outer

.outer:                                           ; preds = %.outer.outer, %.thread501
  %.1342.ph = phi i32 [ %spec.select492, %.thread501 ], [ %.1342.ph.ph, %.outer.outer ]
  %.1340.ph = phi i32 [ %279, %.thread501 ], [ %.1340.ph.ph, %.outer.outer ]
  %.1330.ph = phi i32 [ %322, %.thread501 ], [ %.1330.ph.ph, %.outer.outer ]
  %.pre = load ptr, ptr %6, align 8, !tbaa !5
  %.not466 = icmp slt i32 %.1340.ph, %224
  br label %247

247:                                              ; preds = %.outer, %278
  %248 = phi ptr [ %266, %278 ], [ %.pre, %.outer ]
  %.1342 = phi i32 [ %spec.select492, %278 ], [ %.1342.ph, %.outer ]
  %.1340 = phi i32 [ %279, %278 ], [ %.1340.ph, %.outer ]
  %249 = load i8, ptr %248, align 1, !tbaa !20
  %.not463 = icmp eq i8 %249, 0
  br i1 %.not463, label %.loopexit512, label %.preheader511

.preheader511:                                    ; preds = %247
  %250 = tail call ptr @__ctype_b_loc() #12
  %251 = load ptr, ptr %250, align 8, !tbaa !5
  %252 = sext i8 %249 to i64
  %253 = getelementptr inbounds i16, ptr %251, i64 %252
  %254 = load i16, ptr %253, align 2, !tbaa !21
  %255 = and i16 %254, 8192
  %.not464626 = icmp eq i16 %255, 0
  br i1 %.not464626, label %._crit_edge628, label %.lr.ph627

.lr.ph627:                                        ; preds = %.preheader511, %.lr.ph627
  %256 = phi ptr [ %257, %.lr.ph627 ], [ %248, %.preheader511 ]
  %257 = getelementptr inbounds i8, ptr %256, i64 1
  store ptr %257, ptr %6, align 8, !tbaa !5
  %258 = load ptr, ptr %250, align 8, !tbaa !5
  %259 = load i8, ptr %257, align 1, !tbaa !20
  %260 = sext i8 %259 to i64
  %261 = getelementptr inbounds i16, ptr %258, i64 %260
  %262 = load i16, ptr %261, align 2, !tbaa !21
  %263 = and i16 %262, 8192
  %.not464 = icmp eq i16 %263, 0
  br i1 %.not464, label %._crit_edge628, label %.lr.ph627, !llvm.loop !39

._crit_edge628:                                   ; preds = %.lr.ph627, %.preheader511
  %.lcssa = phi ptr [ %248, %.preheader511 ], [ %257, %.lr.ph627 ]
  %264 = call double @qh_strtod(ptr noundef nonnull %.lcssa, ptr noundef nonnull %7) #11
  %265 = load ptr, ptr %6, align 8, !tbaa !5
  %266 = load ptr, ptr %7, align 8, !tbaa !5
  %267 = icmp eq ptr %265, %266
  br i1 %267, label %268, label %278

268:                                              ; preds = %._crit_edge628
  %269 = load i8, ptr %73, align 8, !tbaa !20
  %.not477 = icmp eq i8 %269, 0
  br i1 %.not477, label %270, label %272

270:                                              ; preds = %268
  %271 = call ptr @strncat(ptr noundef nonnull dereferenceable(1) %73, ptr noundef nonnull dereferenceable(1) %265, i64 noundef 255) #11
  br label %272

272:                                              ; preds = %270, %268
  %273 = load i8, ptr %265, align 1, !tbaa !20
  %274 = icmp eq i8 %273, 0
  %275 = icmp ne i32 %.2352, 0
  %or.cond7 = select i1 %274, i1 true, i1 %275
  %spec.select491 = select i1 %or.cond7, i32 %.2352, i32 %.8
  %276 = icmp eq i32 %.0347, 0
  %or.cond9.not480 = select i1 %246, i1 %276, i1 false
  %277 = icmp ne i32 %.1330.ph, 0
  %or.cond11 = select i1 %or.cond9.not480, i1 %277, i1 false
  %spec.select495 = select i1 %or.cond11, i32 %.8, i32 %.0347
  br label %.loopexit512

278:                                              ; preds = %._crit_edge628
  %.not465 = icmp eq i32 %.1342, 0
  %spec.select492 = select i1 %.not465, i32 %.8, i32 %.1342
  store ptr %266, ptr %6, align 8, !tbaa !5
  %279 = add nsw i32 %.1340, 1
  br i1 %.not466, label %280, label %247, !llvm.loop !40

280:                                              ; preds = %278
  %281 = load i32, ptr %72, align 8, !tbaa !19
  %.not467 = icmp eq i32 %281, 0
  br i1 %.not467, label %289, label %282

282:                                              ; preds = %280
  %283 = load i32, ptr %16, align 8, !tbaa !17
  %.not470 = icmp eq i32 %283, 0
  br i1 %.not470, label %287, label %284

284:                                              ; preds = %282
  %285 = fneg double %264
  %286 = getelementptr inbounds i8, ptr %.2366.ph.ph, i64 8
  store double %285, ptr %.2366.ph.ph, align 8, !tbaa !38
  br label %319

287:                                              ; preds = %282
  %288 = getelementptr inbounds i8, ptr %.2366.ph.ph, i64 8
  store double %264, ptr %.2366.ph.ph, align 8, !tbaa !38
  br label %319

289:                                              ; preds = %280
  %290 = load ptr, ptr %5, align 8, !tbaa !5
  %291 = getelementptr inbounds i8, ptr %290, i64 8
  store ptr %291, ptr %5, align 8, !tbaa !5
  store double %264, ptr %290, align 8, !tbaa !38
  %292 = load i32, ptr %16, align 8, !tbaa !17
  %293 = icmp eq i32 %292, 0
  %294 = icmp ne i32 %.1330.ph, 0
  %or.cond13 = select i1 %293, i1 true, i1 %294
  br i1 %or.cond13, label %303, label %295

295:                                              ; preds = %289
  %296 = getelementptr inbounds i8, ptr %290, i64 8
  %297 = fcmp une double %264, 1.000000e+00
  br i1 %297, label %298, label %300

298:                                              ; preds = %295
  %299 = load ptr, ptr %225, align 8, !tbaa !26
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %299, i32 noundef 6077, ptr noundef nonnull @.str.218, i32 noundef %.8) #11
  call void @qh_errexit(ptr noundef nonnull %0, i32 noundef 1, ptr noundef null, ptr noundef null) #11
  %.pre705 = load ptr, ptr %5, align 8, !tbaa !5
  br label %300

300:                                              ; preds = %298, %295
  %301 = phi ptr [ %.pre705, %298 ], [ %296, %295 ]
  %302 = getelementptr inbounds i8, ptr %301, i64 -8
  store ptr %302, ptr %5, align 8, !tbaa !5
  br label %319

303:                                              ; preds = %289
  br i1 %15, label %304, label %.thread501

304:                                              ; preds = %303
  %305 = call double @llvm.fmuladd.f64(double %264, double %264, double %.1332.ph.ph)
  %306 = load i32, ptr %226, align 4, !tbaa !32
  %.not468 = icmp eq i32 %306, 0
  br i1 %.not468, label %319, label %307

307:                                              ; preds = %304
  br i1 %293, label %314, label %308

308:                                              ; preds = %307
  %309 = add nsw i32 %.1330.ph, -1
  %310 = sext i32 %309 to i64
  %311 = getelementptr inbounds double, ptr %.0, i64 %310
  %312 = load double, ptr %311, align 8, !tbaa !38
  %313 = fadd double %264, %312
  store double %313, ptr %311, align 8, !tbaa !38
  br label %319

314:                                              ; preds = %307
  %315 = sext i32 %.1330.ph to i64
  %316 = getelementptr inbounds double, ptr %.0, i64 %315
  %317 = load double, ptr %316, align 8, !tbaa !38
  %318 = fadd double %264, %317
  store double %318, ptr %316, align 8, !tbaa !38
  br label %319

319:                                              ; preds = %300, %304, %314, %308, %284, %287
  %.3367 = phi ptr [ %286, %284 ], [ %288, %287 ], [ %.2366.ph.ph, %308 ], [ %.2366.ph.ph, %314 ], [ %.2366.ph.ph, %304 ], [ %.2366.ph.ph, %300 ]
  %.2333 = phi double [ %.1332.ph.ph, %284 ], [ %.1332.ph.ph, %287 ], [ %305, %308 ], [ %305, %314 ], [ %305, %304 ], [ %.1332.ph.ph, %300 ]
  %320 = add nsw i32 %.1330.ph, 1
  %321 = icmp eq i32 %320, %spec.select
  br i1 %321, label %324, label %.outer.outer, !llvm.loop !40

.thread501:                                       ; preds = %303
  %322 = add nsw i32 %.1330.ph, 1
  %323 = icmp eq i32 %322, %spec.select
  br i1 %323, label %.thread506.thread, label %.outer, !llvm.loop !40

324:                                              ; preds = %319
  br i1 %15, label %325, label %.thread506

325:                                              ; preds = %324
  %326 = load ptr, ptr %5, align 8, !tbaa !5
  %327 = getelementptr inbounds i8, ptr %326, i64 8
  store ptr %327, ptr %5, align 8, !tbaa !5
  store double %.2333, ptr %326, align 8, !tbaa !38
  %328 = fcmp olt double %.1356.ph.ph.ph, %.2333
  %.2357 = select i1 %328, double %.2333, double %.1356.ph.ph.ph
  br label %.thread506.thread

.thread506:                                       ; preds = %324
  %.pre706 = load i32, ptr %72, align 8, !tbaa !19
  %.not471 = icmp eq i32 %.pre706, 0
  br i1 %.not471, label %.thread506.thread, label %329

329:                                              ; preds = %.thread506
  %330 = load i32, ptr %2, align 4, !tbaa !31
  %331 = load ptr, ptr %5, align 8, !tbaa !5
  %332 = load ptr, ptr %227, align 8, !tbaa !41
  %333 = call i32 @qh_sethalfspace(ptr noundef nonnull %0, i32 noundef %330, ptr noundef %331, ptr noundef nonnull %5, ptr noundef %.0386, ptr noundef %.0387, ptr noundef %332) #11
  %.not472 = icmp eq i32 %333, 0
  br i1 %.not472, label %334, label %339

334:                                              ; preds = %329
  %335 = load ptr, ptr %225, align 8, !tbaa !26
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %335, i32 noundef 8048, ptr noundef nonnull @.str.219, i32 noundef %.8) #11
  br i1 %.not449, label %338, label %336

336:                                              ; preds = %334
  %337 = load ptr, ptr %225, align 8, !tbaa !26
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %337, i32 noundef 8049, ptr noundef nonnull @.str.220) #11
  br label %338

338:                                              ; preds = %336, %334
  call void @qh_errexit(ptr noundef nonnull %0, i32 noundef 1, ptr noundef null, ptr noundef null) #11
  br label %339

339:                                              ; preds = %338, %329
  %340 = load ptr, ptr %228, align 8, !tbaa !34
  br label %.thread506.thread

.thread506.thread:                                ; preds = %.thread501, %.thread506, %339, %325
  %.4368 = phi ptr [ %.3367, %325 ], [ %340, %339 ], [ %.3367, %.thread506 ], [ %.2366.ph.ph, %.thread501 ]
  %.3358 = phi double [ %.2357, %325 ], [ %.1356.ph.ph.ph, %339 ], [ %.1356.ph.ph.ph, %.thread506 ], [ %.1356.ph.ph.ph, %.thread501 ]
  %.3 = phi double [ 0.000000e+00, %325 ], [ %.2333, %339 ], [ %.2333, %.thread506 ], [ %.1332.ph.ph, %.thread501 ]
  %341 = load ptr, ptr %250, align 8, !tbaa !5
  %342 = load ptr, ptr %6, align 8, !tbaa !5
  %343 = load i8, ptr %342, align 1, !tbaa !20
  %344 = sext i8 %343 to i64
  %345 = getelementptr inbounds i16, ptr %341, i64 %344
  %346 = load i16, ptr %345, align 2, !tbaa !21
  %347 = and i16 %346, 8192
  %.not474631 = icmp eq i16 %347, 0
  br i1 %.not474631, label %._crit_edge634, label %.lr.ph633

.lr.ph633:                                        ; preds = %.thread506.thread, %.lr.ph633
  %348 = phi ptr [ %349, %.lr.ph633 ], [ %342, %.thread506.thread ]
  %349 = getelementptr inbounds i8, ptr %348, i64 1
  store ptr %349, ptr %6, align 8, !tbaa !5
  %350 = load ptr, ptr %250, align 8, !tbaa !5
  %351 = load i8, ptr %349, align 1, !tbaa !20
  %352 = sext i8 %351 to i64
  %353 = getelementptr inbounds i16, ptr %350, i64 %352
  %354 = load i16, ptr %353, align 2, !tbaa !21
  %355 = and i16 %354, 8192
  %.not474 = icmp eq i16 %355, 0
  br i1 %.not474, label %._crit_edge634, label %.lr.ph633, !llvm.loop !42

._crit_edge634:                                   ; preds = %.lr.ph633, %.thread506.thread
  %.lcssa530 = phi i8 [ %343, %.thread506.thread ], [ %351, %.lr.ph633 ]
  %.not475 = icmp eq i8 %.lcssa530, 0
  br i1 %.not475, label %.outer.outer.outer, label %356, !llvm.loop !40

356:                                              ; preds = %._crit_edge634
  %.not476 = icmp eq i32 %.1345.ph.ph.ph.ph, 0
  %spec.select493 = select i1 %.not476, i32 %.8, i32 %.1345.ph.ph.ph.ph
  br label %.outer.outer.outer.outer, !llvm.loop !40

.loopexit512:                                     ; preds = %247, %272
  %357 = phi ptr [ %265, %272 ], [ %248, %247 ]
  %.4354 = phi i32 [ %spec.select491, %272 ], [ %.2352, %247 ]
  %.1348 = phi i32 [ %spec.select495, %272 ], [ %.0347, %247 ]
  %358 = icmp eq i32 %.1348, 0
  %or.cond15.not483 = select i1 %246, i1 %358, i1 false
  %359 = icmp ne i32 %.1330.ph, 0
  %or.cond17 = select i1 %or.cond15.not483, i1 %359, i1 false
  %spec.select494 = select i1 %or.cond17, i32 %.8, i32 %.1348
  br i1 %.not442, label %360, label %.backedge

360:                                              ; preds = %.loopexit512
  %361 = load ptr, ptr %188, align 8, !tbaa !36
  %362 = ptrtoint ptr %357 to i64
  %363 = ptrtoint ptr %361 to i64
  %364 = sub i64 %362, %363
  %365 = load i32, ptr %183, align 8, !tbaa !35
  %366 = sext i32 %365 to i64
  %.not484 = icmp slt i64 %364, %366
  br i1 %.not484, label %.backedge, label %367

367:                                              ; preds = %360
  %368 = load ptr, ptr %225, align 8, !tbaa !26
  %369 = trunc i64 %364 to i32
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %368, i32 noundef 6078, ptr noundef nonnull @.str.221, i32 noundef %.8, i32 noundef %369) #11
  call void @qh_errexit(ptr noundef nonnull %0, i32 noundef 1, ptr noundef null, ptr noundef null) #11
  br label %.backedge

.backedge:                                        ; preds = %367, %360, %.loopexit512
  br label %229, !llvm.loop !43

370:                                              ; preds = %.thread498, %241, %230
  %371 = load i8, ptr %73, align 8, !tbaa !20
  %.not450 = icmp eq i8 %371, 0
  br i1 %.not450, label %376, label %372

372:                                              ; preds = %370
  %373 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %73) #13
  %374 = add i64 %373, -1
  %375 = getelementptr inbounds [256 x i8], ptr %73, i64 0, i64 %374
  store i8 0, ptr %375, align 1, !tbaa !20
  br label %376

376:                                              ; preds = %372, %370
  %.not451 = icmp eq i32 %.0339, %224
  br i1 %.not451, label %456, label %377

377:                                              ; preds = %376
  %378 = sdiv i32 %.0339, %spec.select
  %379 = srem i32 %.0339, %spec.select
  %.spec.select487 = call i32 @llvm.smin.i32(i32 %spec.select487, i32 %378)
  %380 = getelementptr inbounds i8, ptr %0, i64 4
  %381 = load i32, ptr %380, align 4, !tbaa !44
  %.not452 = icmp eq i32 %381, 0
  %382 = load ptr, ptr %225, align 8, !tbaa !26
  %383 = srem i32 %.0339, %spec.select
  br i1 %.not452, label %385, label %384

384:                                              ; preds = %377
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %382, i32 noundef 7073, ptr noundef nonnull @.str.222, i32 noundef %spec.select487, i32 noundef %spec.select, i32 noundef %378, i32 noundef %383) #11
  br label %386

385:                                              ; preds = %377
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %382, i32 noundef 6410, ptr noundef nonnull @.str.223, i32 noundef %spec.select487, i32 noundef %spec.select, i32 noundef %378, i32 noundef %383) #11
  br label %386

386:                                              ; preds = %385, %384
  %.not453 = icmp eq i32 %.2352, 0
  br i1 %.not453, label %389, label %387

387:                                              ; preds = %386
  %388 = load ptr, ptr %225, align 8, !tbaa !26
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %388, i32 noundef 8051, ptr noundef nonnull @.str.224, i32 noundef %.2352) #11
  br label %389

389:                                              ; preds = %387, %386
  %390 = load ptr, ptr %225, align 8, !tbaa !26
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %390, i32 noundef 8033, ptr noundef nonnull @.str.225, i32 noundef %.0341) #11
  %.not454 = icmp eq i32 %.0347, 0
  br i1 %.not454, label %393, label %391

391:                                              ; preds = %389
  %392 = load ptr, ptr %225, align 8, !tbaa !26
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %392, i32 noundef 8052, ptr noundef nonnull @.str.226, i32 noundef %.0347) #11
  br label %393

393:                                              ; preds = %391, %389
  %.not455 = icmp eq i32 %.0344, 0
  br i1 %.not455, label %396, label %394

394:                                              ; preds = %393
  %395 = load ptr, ptr %225, align 8, !tbaa !26
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %395, i32 noundef 8053, ptr noundef nonnull @.str.227, i32 noundef %.0344) #11
  br label %396

396:                                              ; preds = %394, %393
  %397 = load i32, ptr %380, align 4, !tbaa !44
  %.not456 = icmp eq i32 %397, 0
  %398 = load ptr, ptr %225, align 8, !tbaa !26
  br i1 %.not456, label %400, label %399

399:                                              ; preds = %396
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %398, i32 noundef 8054, ptr noundef nonnull @.str.228, i32 noundef %.spec.select487) #11
  br label %401

400:                                              ; preds = %396
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %398, i32 noundef 8077, ptr noundef nonnull @.str.229) #11
  call void @qh_errexit(ptr noundef nonnull %0, i32 noundef 1, ptr noundef null, ptr noundef null) #11
  br label %401

401:                                              ; preds = %400, %399
  br i1 %15, label %402, label %451

402:                                              ; preds = %401
  %403 = load i32, ptr %226, align 4, !tbaa !32
  %.not457 = icmp eq i32 %403, 0
  br i1 %.not457, label %451, label %404

404:                                              ; preds = %402
  %405 = srem i32 %.0339, %spec.select
  %.not458636 = icmp eq i32 %405, 0
  br i1 %.not458636, label %449, label %.lr.ph639.preheader

.lr.ph639.preheader:                              ; preds = %404
  %.promoted = load ptr, ptr %5, align 8, !tbaa !5
  %406 = sext i32 %405 to i64
  %min.iters.check = icmp ult i32 %405, 10
  br i1 %min.iters.check, label %.lr.ph639.preheader898, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph639.preheader
  %407 = shl nsw i64 %406, 3
  %scevgep845 = getelementptr i8, ptr %.0, i64 %407
  %408 = mul nsw i64 %406, -8
  %scevgep846 = getelementptr i8, ptr %.promoted, i64 %408
  %bound0 = icmp ult ptr %.0, %.promoted
  %bound1 = icmp ult ptr %scevgep846, %scevgep845
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %.lr.ph639.preheader898, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %406, -4
  %ind.end = and i64 %406, 3
  %409 = mul nsw i64 %n.vec, -8
  %ind.end847 = getelementptr i8, ptr %.promoted, i64 %409
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx849 = mul i64 %index, -8
  %next.gep = getelementptr i8, ptr %.promoted, i64 %offset.idx849
  %410 = xor i64 %index, -1
  %411 = add i64 %410, %406
  %412 = getelementptr inbounds i8, ptr %next.gep, i64 -16
  %413 = getelementptr inbounds i8, ptr %next.gep, i64 -32
  %wide.load = load <2 x double>, ptr %412, align 8, !tbaa !38, !alias.scope !45
  %wide.load851 = load <2 x double>, ptr %413, align 8, !tbaa !38, !alias.scope !45
  %414 = getelementptr inbounds double, ptr %.0, i64 %411
  %415 = getelementptr inbounds i8, ptr %414, i64 -8
  %416 = getelementptr inbounds i8, ptr %414, i64 -24
  %wide.load853 = load <2 x double>, ptr %415, align 8, !tbaa !38, !alias.scope !48, !noalias !45
  %wide.load855 = load <2 x double>, ptr %416, align 8, !tbaa !38, !alias.scope !48, !noalias !45
  %417 = fsub <2 x double> %wide.load853, %wide.load
  %418 = fsub <2 x double> %wide.load855, %wide.load851
  store <2 x double> %417, ptr %415, align 8, !tbaa !38, !alias.scope !48, !noalias !45
  store <2 x double> %418, ptr %416, align 8, !tbaa !38, !alias.scope !48, !noalias !45
  %index.next = add nuw i64 %index, 4
  %419 = icmp eq i64 %index.next, %n.vec
  br i1 %419, label %middle.block, label %vector.body, !llvm.loop !50

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %406
  br i1 %cmp.n, label %._crit_edge640, label %.lr.ph639.preheader898

.lr.ph639.preheader898:                           ; preds = %middle.block, %vector.memcheck, %.lr.ph639.preheader
  %indvars.iv.ph = phi i64 [ %406, %vector.memcheck ], [ %406, %.lr.ph639.preheader ], [ %ind.end, %middle.block ]
  %.ph899 = phi ptr [ %.promoted, %vector.memcheck ], [ %.promoted, %.lr.ph639.preheader ], [ %ind.end847, %middle.block ]
  %420 = add nsw i64 %indvars.iv.ph, -1
  %xtraiter = and i64 %indvars.iv.ph, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph639.prol.loopexit, label %.lr.ph639.prol

.lr.ph639.prol:                                   ; preds = %.lr.ph639.preheader898, %.lr.ph639.prol
  %indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %.lr.ph639.prol ], [ %indvars.iv.ph, %.lr.ph639.preheader898 ]
  %421 = phi ptr [ %422, %.lr.ph639.prol ], [ %.ph899, %.lr.ph639.preheader898 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph639.prol ], [ 0, %.lr.ph639.preheader898 ]
  %indvars.iv.next.prol = add nsw i64 %indvars.iv.prol, -1
  %422 = getelementptr inbounds i8, ptr %421, i64 -8
  %423 = load double, ptr %422, align 8, !tbaa !38
  %424 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv.next.prol
  %425 = load double, ptr %424, align 8, !tbaa !38
  %426 = fsub double %425, %423
  store double %426, ptr %424, align 8, !tbaa !38
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.lr.ph639.prol.loopexit, label %.lr.ph639.prol, !llvm.loop !53

.lr.ph639.prol.loopexit:                          ; preds = %.lr.ph639.prol, %.lr.ph639.preheader898
  %.lcssa900.unr = phi ptr [ poison, %.lr.ph639.preheader898 ], [ %422, %.lr.ph639.prol ]
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %.lr.ph639.preheader898 ], [ %indvars.iv.next.prol, %.lr.ph639.prol ]
  %.unr = phi ptr [ %.ph899, %.lr.ph639.preheader898 ], [ %422, %.lr.ph639.prol ]
  %427 = icmp ult i64 %420, 3
  br i1 %427, label %._crit_edge640, label %.lr.ph639

.lr.ph639:                                        ; preds = %.lr.ph639.prol.loopexit, %.lr.ph639
  %indvars.iv = phi i64 [ %indvars.iv.next.3, %.lr.ph639 ], [ %indvars.iv.unr, %.lr.ph639.prol.loopexit ]
  %428 = phi ptr [ %444, %.lr.ph639 ], [ %.unr, %.lr.ph639.prol.loopexit ]
  %indvars.iv.next = add nsw i64 %indvars.iv, -1
  %429 = getelementptr inbounds i8, ptr %428, i64 -8
  %430 = load double, ptr %429, align 8, !tbaa !38
  %431 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv.next
  %432 = load double, ptr %431, align 8, !tbaa !38
  %433 = fsub double %432, %430
  store double %433, ptr %431, align 8, !tbaa !38
  %indvars.iv.next.1 = add nsw i64 %indvars.iv, -2
  %434 = getelementptr inbounds i8, ptr %428, i64 -16
  %435 = load double, ptr %434, align 8, !tbaa !38
  %436 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv.next.1
  %437 = load double, ptr %436, align 8, !tbaa !38
  %438 = fsub double %437, %435
  store double %438, ptr %436, align 8, !tbaa !38
  %indvars.iv.next.2 = add nsw i64 %indvars.iv, -3
  %439 = getelementptr inbounds i8, ptr %428, i64 -24
  %440 = load double, ptr %439, align 8, !tbaa !38
  %441 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv.next.2
  %442 = load double, ptr %441, align 8, !tbaa !38
  %443 = fsub double %442, %440
  store double %443, ptr %441, align 8, !tbaa !38
  %indvars.iv.next.3 = add nsw i64 %indvars.iv, -4
  %444 = getelementptr inbounds i8, ptr %428, i64 -32
  %445 = load double, ptr %444, align 8, !tbaa !38
  %446 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv.next.3
  %447 = load double, ptr %446, align 8, !tbaa !38
  %448 = fsub double %447, %445
  store double %448, ptr %446, align 8, !tbaa !38
  %.not458.3 = icmp eq i64 %indvars.iv.next.3, 0
  br i1 %.not458.3, label %._crit_edge640, label %.lr.ph639, !llvm.loop !55

._crit_edge640:                                   ; preds = %.lr.ph639.prol.loopexit, %.lr.ph639, %middle.block
  %.lcssa788 = phi ptr [ %ind.end847, %middle.block ], [ %.lcssa900.unr, %.lr.ph639.prol.loopexit ], [ %444, %.lr.ph639 ]
  store ptr %.lcssa788, ptr %5, align 8, !tbaa !5
  br label %449

449:                                              ; preds = %._crit_edge640, %404
  %450 = add nsw i32 %.spec.select487, 1
  br label %.sink.split

451:                                              ; preds = %402, %401
  %452 = load ptr, ptr %5, align 8, !tbaa !5
  %453 = sext i32 %379 to i64
  %454 = sub nsw i64 0, %453
  %455 = getelementptr inbounds double, ptr %452, i64 %454
  store ptr %455, ptr %5, align 8, !tbaa !5
  br label %.sink.split

.sink.split:                                      ; preds = %451, %449
  %.sink = phi i32 [ %450, %449 ], [ %.spec.select487, %451 ]
  store i32 %.sink, ptr %1, align 4, !tbaa !31
  br label %456

456:                                              ; preds = %.sink.split, %376
  %.5381 = phi i32 [ %spec.select487, %376 ], [ %.spec.select487, %.sink.split ]
  br i1 %15, label %457, label %524

457:                                              ; preds = %456
  %458 = load i32, ptr %226, align 4, !tbaa !32
  %.not459 = icmp eq i32 %458, 0
  br i1 %.not459, label %524, label %459

459:                                              ; preds = %457
  %460 = load i32, ptr %2, align 4, !tbaa !31
  %461 = add nsw i32 %460, -1
  %.not460642 = icmp eq i32 %461, 0
  br i1 %.not460642, label %._crit_edge646.thread, label %.lr.ph645

.lr.ph645:                                        ; preds = %459
  %462 = sitofp i32 %.5381 to double
  %463 = sext i32 %460 to i64
  %464 = add nsw i64 %463, -1
  %min.iters.check861 = icmp ult i64 %464, 2
  br i1 %min.iters.check861, label %scalar.ph860.preheader, label %vector.ph862

vector.ph862:                                     ; preds = %.lr.ph645
  %n.vec864 = and i64 %464, -2
  %ind.end865 = and i64 %464, 1
  %broadcast.splatinsert = insertelement <2 x double> poison, double %462, i64 0
  %invariant.gep = getelementptr i8, ptr %.0, i64 -8
  %465 = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body867

vector.body867:                                   ; preds = %vector.body867, %vector.ph862
  %index868 = phi i64 [ 0, %vector.ph862 ], [ %index.next873, %vector.body867 ]
  %466 = xor i64 %index868, -1
  %467 = add i64 %464, %466
  %gep = getelementptr double, ptr %invariant.gep, i64 %467
  %wide.load870 = load <2 x double>, ptr %gep, align 8, !tbaa !38
  %reverse872 = fdiv <2 x double> %wide.load870, %465
  store <2 x double> %reverse872, ptr %gep, align 8, !tbaa !38
  %index.next873 = add nuw i64 %index868, 2
  %468 = icmp eq i64 %index.next873, %n.vec864
  br i1 %468, label %middle.block859, label %vector.body867, !llvm.loop !56

middle.block859:                                  ; preds = %vector.body867
  %cmp.n874 = icmp eq i64 %464, %n.vec864
  br i1 %cmp.n874, label %._crit_edge646, label %scalar.ph860.preheader

scalar.ph860.preheader:                           ; preds = %middle.block859, %.lr.ph645
  %indvars.iv699.ph = phi i64 [ %464, %.lr.ph645 ], [ %ind.end865, %middle.block859 ]
  br label %scalar.ph860

scalar.ph860:                                     ; preds = %scalar.ph860.preheader, %scalar.ph860
  %indvars.iv699 = phi i64 [ %indvars.iv.next700, %scalar.ph860 ], [ %indvars.iv699.ph, %scalar.ph860.preheader ]
  %indvars.iv.next700 = add nsw i64 %indvars.iv699, -1
  %469 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv.next700
  %470 = load double, ptr %469, align 8, !tbaa !38
  %471 = fdiv double %470, %462
  store double %471, ptr %469, align 8, !tbaa !38
  %.not460 = icmp eq i64 %indvars.iv.next700, 0
  br i1 %.not460, label %._crit_edge646, label %scalar.ph860, !llvm.loop !57

._crit_edge646:                                   ; preds = %scalar.ph860, %middle.block859
  %472 = load ptr, ptr %5, align 8, !tbaa !5
  %473 = ptrtoint ptr %472 to i64
  %474 = icmp eq ptr %472, %.0
  br i1 %474, label %491, label %.preheader

._crit_edge646.thread:                            ; preds = %459
  %475 = load ptr, ptr %5, align 8, !tbaa !5
  %476 = icmp eq ptr %475, %.0
  br i1 %476, label %491, label %.loopexit

.preheader:                                       ; preds = %._crit_edge646
  %477 = icmp sgt i32 %460, 1
  br i1 %477, label %.lr.ph649.preheader, label %.loopexit

.lr.ph649.preheader:                              ; preds = %.preheader
  %wide.trip.count = zext i32 %461 to i64
  %min.iters.check879 = icmp ult i32 %460, 7
  %478 = sub i64 %473, %.0876
  %diff.check = icmp ult i64 %478, 32
  %or.cond895 = select i1 %min.iters.check879, i1 true, i1 %diff.check
  br i1 %or.cond895, label %.lr.ph649.preheader896, label %vector.ph880

.lr.ph649.preheader896:                           ; preds = %middle.block877, %.lr.ph649.preheader
  %indvars.iv702.ph = phi i64 [ 0, %.lr.ph649.preheader ], [ %n.vec882, %middle.block877 ]
  %.ph = phi ptr [ %472, %.lr.ph649.preheader ], [ %ind.end884, %middle.block877 ]
  %479 = sub nsw i64 %wide.trip.count, %indvars.iv702.ph
  %xtraiter992 = and i64 %479, 7
  %lcmp.mod993.not = icmp eq i64 %xtraiter992, 0
  br i1 %lcmp.mod993.not, label %.lr.ph649.prol.loopexit, label %.lr.ph649.prol

.lr.ph649.prol:                                   ; preds = %.lr.ph649.preheader896, %.lr.ph649.prol
  %indvars.iv702.prol = phi i64 [ %indvars.iv.next703.prol, %.lr.ph649.prol ], [ %indvars.iv702.ph, %.lr.ph649.preheader896 ]
  %480 = phi ptr [ %483, %.lr.ph649.prol ], [ %.ph, %.lr.ph649.preheader896 ]
  %prol.iter994 = phi i64 [ %prol.iter994.next, %.lr.ph649.prol ], [ 0, %.lr.ph649.preheader896 ]
  %481 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv702.prol
  %482 = load double, ptr %481, align 8, !tbaa !38
  %483 = getelementptr inbounds i8, ptr %480, i64 8
  store double %482, ptr %480, align 8, !tbaa !38
  %indvars.iv.next703.prol = add nuw nsw i64 %indvars.iv702.prol, 1
  %prol.iter994.next = add i64 %prol.iter994, 1
  %prol.iter994.cmp.not = icmp eq i64 %prol.iter994.next, %xtraiter992
  br i1 %prol.iter994.cmp.not, label %.lr.ph649.prol.loopexit, label %.lr.ph649.prol, !llvm.loop !58

.lr.ph649.prol.loopexit:                          ; preds = %.lr.ph649.prol, %.lr.ph649.preheader896
  %.lcssa897.unr = phi ptr [ poison, %.lr.ph649.preheader896 ], [ %483, %.lr.ph649.prol ]
  %indvars.iv702.unr = phi i64 [ %indvars.iv702.ph, %.lr.ph649.preheader896 ], [ %indvars.iv.next703.prol, %.lr.ph649.prol ]
  %.unr995 = phi ptr [ %.ph, %.lr.ph649.preheader896 ], [ %483, %.lr.ph649.prol ]
  %484 = sub nsw i64 %indvars.iv702.ph, %wide.trip.count
  %485 = icmp ugt i64 %484, -8
  br i1 %485, label %.loopexit, label %.lr.ph649

vector.ph880:                                     ; preds = %.lr.ph649.preheader
  %n.vec882 = and i64 %wide.trip.count, 2147483644
  %486 = shl nuw nsw i64 %n.vec882, 3
  %ind.end884 = getelementptr i8, ptr %472, i64 %486
  br label %vector.body886

vector.body886:                                   ; preds = %vector.body886, %vector.ph880
  %index887 = phi i64 [ 0, %vector.ph880 ], [ %index.next893, %vector.body886 ]
  %offset.idx888 = shl i64 %index887, 3
  %next.gep889 = getelementptr i8, ptr %472, i64 %offset.idx888
  %487 = getelementptr inbounds double, ptr %.0, i64 %index887
  %488 = getelementptr inbounds i8, ptr %487, i64 16
  %wide.load891 = load <2 x double>, ptr %487, align 8, !tbaa !38
  %wide.load892 = load <2 x double>, ptr %488, align 8, !tbaa !38
  %489 = getelementptr i8, ptr %next.gep889, i64 16
  store <2 x double> %wide.load891, ptr %next.gep889, align 8, !tbaa !38
  store <2 x double> %wide.load892, ptr %489, align 8, !tbaa !38
  %index.next893 = add nuw i64 %index887, 4
  %490 = icmp eq i64 %index.next893, %n.vec882
  br i1 %490, label %middle.block877, label %vector.body886, !llvm.loop !59

middle.block877:                                  ; preds = %vector.body886
  %cmp.n894 = icmp eq i64 %n.vec882, %wide.trip.count
  br i1 %cmp.n894, label %.loopexit, label %.lr.ph649.preheader896

491:                                              ; preds = %._crit_edge646.thread, %._crit_edge646
  %492 = phi ptr [ %475, %._crit_edge646.thread ], [ %472, %._crit_edge646 ]
  %493 = sext i32 %460 to i64
  %494 = getelementptr double, ptr %492, i64 %493
  %495 = getelementptr i8, ptr %494, i64 -8
  br label %.loopexit

.lr.ph649:                                        ; preds = %.lr.ph649.prol.loopexit, %.lr.ph649
  %indvars.iv702 = phi i64 [ %indvars.iv.next703.7, %.lr.ph649 ], [ %indvars.iv702.unr, %.lr.ph649.prol.loopexit ]
  %496 = phi ptr [ %520, %.lr.ph649 ], [ %.unr995, %.lr.ph649.prol.loopexit ]
  %497 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv702
  %498 = load double, ptr %497, align 8, !tbaa !38
  %499 = getelementptr inbounds i8, ptr %496, i64 8
  store double %498, ptr %496, align 8, !tbaa !38
  %indvars.iv.next703 = add nuw nsw i64 %indvars.iv702, 1
  %500 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv.next703
  %501 = load double, ptr %500, align 8, !tbaa !38
  %502 = getelementptr inbounds i8, ptr %496, i64 16
  store double %501, ptr %499, align 8, !tbaa !38
  %indvars.iv.next703.1 = add nuw nsw i64 %indvars.iv702, 2
  %503 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv.next703.1
  %504 = load double, ptr %503, align 8, !tbaa !38
  %505 = getelementptr inbounds i8, ptr %496, i64 24
  store double %504, ptr %502, align 8, !tbaa !38
  %indvars.iv.next703.2 = add nuw nsw i64 %indvars.iv702, 3
  %506 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv.next703.2
  %507 = load double, ptr %506, align 8, !tbaa !38
  %508 = getelementptr inbounds i8, ptr %496, i64 32
  store double %507, ptr %505, align 8, !tbaa !38
  %indvars.iv.next703.3 = add nuw nsw i64 %indvars.iv702, 4
  %509 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv.next703.3
  %510 = load double, ptr %509, align 8, !tbaa !38
  %511 = getelementptr inbounds i8, ptr %496, i64 40
  store double %510, ptr %508, align 8, !tbaa !38
  %indvars.iv.next703.4 = add nuw nsw i64 %indvars.iv702, 5
  %512 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv.next703.4
  %513 = load double, ptr %512, align 8, !tbaa !38
  %514 = getelementptr inbounds i8, ptr %496, i64 48
  store double %513, ptr %511, align 8, !tbaa !38
  %indvars.iv.next703.5 = add nuw nsw i64 %indvars.iv702, 6
  %515 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv.next703.5
  %516 = load double, ptr %515, align 8, !tbaa !38
  %517 = getelementptr inbounds i8, ptr %496, i64 56
  store double %516, ptr %514, align 8, !tbaa !38
  %indvars.iv.next703.6 = add nuw nsw i64 %indvars.iv702, 7
  %518 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv.next703.6
  %519 = load double, ptr %518, align 8, !tbaa !38
  %520 = getelementptr inbounds i8, ptr %496, i64 64
  store double %519, ptr %517, align 8, !tbaa !38
  %indvars.iv.next703.7 = add nuw nsw i64 %indvars.iv702, 8
  %exitcond.not.7 = icmp eq i64 %indvars.iv.next703.7, %wide.trip.count
  br i1 %exitcond.not.7, label %.loopexit, label %.lr.ph649, !llvm.loop !60

.loopexit:                                        ; preds = %.lr.ph649.prol.loopexit, %.lr.ph649, %middle.block877, %._crit_edge646.thread, %.preheader, %491
  %521 = phi ptr [ %472, %.preheader ], [ %495, %491 ], [ %475, %._crit_edge646.thread ], [ %ind.end884, %middle.block877 ], [ %.lcssa897.unr, %.lr.ph649.prol.loopexit ], [ %520, %.lr.ph649 ]
  %522 = fmul double %.0355, 1.100000e+00
  %523 = getelementptr inbounds i8, ptr %521, i64 8
  store ptr %523, ptr %5, align 8, !tbaa !5
  store double %522, ptr %521, align 8, !tbaa !38
  br label %524

524:                                              ; preds = %.loopexit, %457, %456
  %525 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %73, ptr noundef nonnull dereferenceable(1) @.str.230) #13
  %.not461 = icmp eq i32 %525, 0
  br i1 %.not461, label %526, label %528

526:                                              ; preds = %524
  %527 = load ptr, ptr %225, align 8, !tbaa !26
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, ptr noundef %527, i32 noundef 8055, ptr noundef nonnull @.str.231) #11
  br label %528

528:                                              ; preds = %526, %524
  %529 = load ptr, ptr %188, align 8, !tbaa !36
  call void @qh_free(ptr noundef %529) #11
  store ptr null, ptr %188, align 8, !tbaa !36
  %530 = load ptr, ptr %228, align 8, !tbaa !34
  %.not462 = icmp eq ptr %530, null
  br i1 %.not462, label %532, label %531

531:                                              ; preds = %528
  call void @qh_free(ptr noundef nonnull %530) #11
  store ptr null, ptr %228, align 8, !tbaa !34
  br label %532

532:                                              ; preds = %531, %528
  store ptr null, ptr %195, align 8, !tbaa !37
  %533 = getelementptr inbounds i8, ptr %0, i64 136
  %534 = load i32, ptr %533, align 8, !tbaa !61
  %535 = icmp sgt i32 %534, 0
  br i1 %535, label %536, label %538

536:                                              ; preds = %532
  %537 = load ptr, ptr %225, align 8, !tbaa !26
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %537, i32 noundef 1008, ptr noundef nonnull @.str.232, i32 noundef %.5381, i32 noundef %spec.select) #11
  br label %538

538:                                              ; preds = %536, %532
  call void @llvm.lifetime.end.p0(i64 201, ptr nonnull %8) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #11
  ret ptr %194
}

declare i32 @qh_strtol(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: readwrite)
declare ptr @strncat(ptr noalias noundef returned, ptr noalias nocapture noundef readonly, i64 noundef) local_unnamed_addr #6

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

declare i32 @qh_sethalfspace(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

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

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

declare void @qh_free(ptr noundef) local_unnamed_addr #1

; Function Attrs: nofree nounwind willreturn memory(argmem: read)
declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #8

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #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 #2 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { 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 #4 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress nofree nosync nounwind willreturn memory(none) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nofree nounwind willreturn memory(argmem: readwrite) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress nofree nounwind willreturn memory(argmem: read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nofree nounwind willreturn memory(argmem: read) }
attributes #9 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #10 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #11 = { nounwind }
attributes #12 = { nounwind willreturn memory(none) }
attributes #13 = { 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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 80}
!10 = !{!"qhT", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !12, i64 24, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44, !11, i64 48, !11, i64 52, !11, i64 56, !11, i64 60, !12, i64 64, !12, i64 72, !11, i64 80, !11, i64 84, !11, i64 88, !11, i64 92, !11, i64 96, !11, i64 100, !6, i64 104, !11, i64 112, !11, i64 116, !6, i64 120, !11, i64 128, !11, i64 132, !11, i64 136, !11, i64 140, !11, i64 144, !11, i64 148, !11, i64 152, !12, i64 160, !12, i64 168, !11, i64 176, !11, i64 180, !11, i64 184, !11, i64 188, !12, i64 192, !12, i64 200, !11, i64 208, !11, i64 212, !12, i64 216, !11, i64 224, !11, i64 228, !11, i64 232, !11, i64 236, !11, i64 240, !11, i64 244, !11, i64 248, !11, i64 252, !11, i64 256, !11, i64 260, !11, i64 264, !11, i64 268, !11, i64 272, !11, i64 276, !11, i64 280, !11, i64 284, !11, i64 288, !11, i64 292, !11, i64 296, !7, i64 300, !11, i64 416, !11, i64 420, !11, i64 424, !11, i64 428, !11, i64 432, !11, i64 436, !11, i64 440, !11, i64 444, !12, i64 448, !12, i64 456, !12, i64 464, !11, i64 472, !11, i64 476, !11, i64 480, !11, i64 484, !11, i64 488, !11, i64 492, !11, i64 496, !11, i64 500, !11, i64 504, !11, i64 508, !11, i64 512, !11, i64 516, !11, i64 520, !11, i64 524, !11, i64 528, !11, i64 532, !11, i64 536, !11, i64 540, !11, i64 544, !12, i64 552, !11, i64 560, !11, i64 564, !11, i64 568, !11, i64 572, !11, i64 576, !11, i64 580, !11, i64 584, !11, i64 588, !12, i64 592, !11, i64 600, !6, i64 608, !6, i64 616, !11, i64 624, !11, i64 628, !11, i64 632, !11, i64 636, !11, i64 640, !6, i64 648, !11, i64 656, !6, i64 664, !11, i64 672, !7, i64 676, !11, i64 932, !7, i64 936, !7, i64 1192, !11, i64 1704, !11, i64 1708, !11, i64 1712, !11, i64 1716, !11, i64 1720, !11, i64 1724, !6, i64 1728, !6, i64 1736, !6, i64 1744, !6, i64 1752, !12, i64 1760, !12, i64 1768, !12, i64 1776, !12, i64 1784, !12, i64 1792, !12, i64 1800, !12, i64 1808, !12, i64 1816, !12, i64 1824, !12, i64 1832, !12, i64 1840, !12, i64 1848, !12, i64 1856, !12, i64 1864, !6, i64 1872, !12, i64 1880, !12, i64 1888, !12, i64 1896, !12, i64 1904, !11, i64 1912, !7, i64 1916, !7, i64 1928, !7, i64 2128, !7, i64 2168, !7, i64 2368, !6, i64 2408, !6, i64 2416, !6, i64 2424, !6, i64 2432, !11, i64 2440, !11, i64 2444, !11, i64 2448, !6, i64 2456, !6, i64 2464, !6, i64 2472, !6, i64 2480, !6, i64 2488, !11, i64 2496, !11, i64 2500, !6, i64 2504, !11, i64 2512, !6, i64 2520, !11, i64 2528, !6, i64 2536, !6, i64 2544, !6, i64 2552, !6, i64 2560, !11, i64 2568, !11, i64 2572, !11, i64 2576, !11, i64 2580, !11, i64 2584, !11, i64 2588, !11, i64 2592, !11, i64 2596, !13, i64 2600, !11, i64 2608, !11, i64 2612, !11, i64 2616, !11, i64 2620, !11, i64 2624, !6, i64 2632, !6, i64 2640, !11, i64 2648, !11, i64 2652, !11, i64 2656, !12, i64 2664, !11, i64 2672, !12, i64 2680, !12, i64 2688, !12, i64 2696, !11, i64 2704, !11, i64 2708, !11, i64 2712, !11, i64 2716, !11, i64 2720, !12, i64 2728, !12, i64 2736, !11, i64 2744, !11, i64 2748, !11, i64 2752, !11, i64 2756, !11, i64 2760, !11, i64 2764, !12, i64 2768, !12, i64 2776, !11, i64 2784, !11, i64 2788, !11, i64 2792, !11, i64 2796, !6, i64 2800, !6, i64 2808, !6, i64 2816, !6, i64 2824, !6, i64 2832, !6, i64 2840, !6, i64 2848, !6, i64 2856, !6, i64 2864, !11, i64 2872, !6, i64 2880, !6, i64 2888, !11, i64 2896, !11, i64 2900, !11, i64 2904, !6, i64 2912, !12, i64 2920, !12, i64 2928, !12, i64 2936, !12, i64 2944, !11, i64 2952, !11, i64 2956, !11, i64 2960, !11, i64 2964, !11, i64 2968, !11, i64 2972, !6, i64 2976, !11, i64 2984, !11, i64 2988, !7, i64 2992, !7, i64 3192, !11, i64 3232, !12, i64 3240, !6, i64 3248, !6, i64 3256, !6, i64 3264, !14, i64 3272, !15, i64 3424}
!11 = !{!"int", !7, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!"long", !7, i64 0}
!14 = !{!"qhmemT", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !11, i64 64, !6, i64 72, !6, i64 80, !11, i64 88, !11, i64 92, !11, i64 96, !11, i64 100, !11, i64 104, !11, i64 108, !11, i64 112, !11, i64 116, !11, i64 120, !11, i64 124, !11, i64 128, !11, i64 132, !11, i64 136, !11, i64 140, !11, i64 144}
!15 = !{!"qhstatT", !7, i64 0, !7, i64 1992, !7, i64 2256, !7, i64 4248, !7, i64 4746, !7, i64 4995, !7, i64 5248, !11, i64 5320, !11, i64 5324, !11, i64 5328, !11, i64 5332, !12, i64 5336}
!16 = !{!10, !11, i64 440}
!17 = !{!10, !11, i64 48}
!18 = !{!10, !6, i64 2408}
!19 = !{!10, !11, i64 128}
!20 = !{!7, !7, i64 0}
!21 = !{!22, !22, i64 0}
!22 = !{!"short", !7, i64 0}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = distinct !{!25, !24}
!26 = !{!10, !6, i64 2424}
!27 = distinct !{!27, !24}
!28 = distinct !{!28, !24}
!29 = distinct !{!29, !24}
!30 = !{!10, !11, i64 436}
!31 = !{!11, !11, i64 0}
!32 = !{!10, !11, i64 36}
!33 = !{!10, !11, i64 2440}
!34 = !{!10, !6, i64 2880}
!35 = !{!10, !11, i64 2872}
!36 = !{!10, !6, i64 2864}
!37 = !{!10, !6, i64 2888}
!38 = !{!12, !12, i64 0}
!39 = distinct !{!39, !24}
!40 = distinct !{!40, !24}
!41 = !{!10, !6, i64 616}
!42 = distinct !{!42, !24}
!43 = distinct !{!43, !24}
!44 = !{!10, !11, i64 4}
!45 = !{!46}
!46 = distinct !{!46, !47}
!47 = distinct !{!47, !"LVerDomain"}
!48 = !{!49}
!49 = distinct !{!49, !47}
!50 = distinct !{!50, !24, !51, !52}
!51 = !{!"llvm.loop.isvectorized", i32 1}
!52 = !{!"llvm.loop.unroll.runtime.disable"}
!53 = distinct !{!53, !54}
!54 = !{!"llvm.loop.unroll.disable"}
!55 = distinct !{!55, !24, !51}
!56 = distinct !{!56, !24, !51, !52}
!57 = distinct !{!57, !24, !52, !51}
!58 = distinct !{!58, !54}
!59 = distinct !{!59, !24, !51, !52}
!60 = distinct !{!60, !24, !51}
!61 = !{!10, !11, i64 136}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,DivRemPairsPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopInstSimplifyPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass