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

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

%struct.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, ptr, i32 }
%struct.__jmp_buf_tag = type { [8 x i64], i32, %struct.__sigset_t }
%struct.__sigset_t = type { [16 x i64] }

@qh_qh = external global %struct.qhT, align 8
@.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 [363 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, i32 noundef, ptr noundef, ...) #1

declare void @qh_errexit(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(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) #3 {
  %4 = alloca ptr, align 8
  %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 double, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca [201 x i8], align 16
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %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
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #7
  store ptr null, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  store double 0xFFEFFFFFFFFFFFFF, ptr %11, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  store ptr null, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  store ptr null, ptr %14, align 8, !tbaa !5
  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
  call void @llvm.lifetime.start.p0(i64 201, ptr %18) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  store i32 0, ptr %19, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  store i32 0, ptr %20, align 4, !tbaa !11
  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
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #7
  store i32 0, ptr %25, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #7
  store i32 0, ptr %26, align 4, !tbaa !11
  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
  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 1, ptr %34, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #7
  store i32 0, ptr %35, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #7
  %37 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 17), align 8, !tbaa !13
  %38 = icmp ne i32 %37, 0
  br i1 %38, label %39, label %43

39:                                               ; preds = %3
  %40 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 71), align 8, !tbaa !16
  %41 = icmp ne i32 %40, 0
  %42 = xor i1 %41, true
  br label %43

43:                                               ; preds = %39, %3
  %44 = phi i1 [ false, %3 ], [ %42, %39 ]
  %45 = zext i1 %44 to i32
  store i32 %45, ptr %36, align 4, !tbaa !11
  %46 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 11), align 8, !tbaa !17
  %47 = icmp ne i32 %46, 0
  br i1 %47, label %48, label %128

48:                                               ; preds = %43
  br label %49

49:                                               ; preds = %121, %48
  %50 = getelementptr inbounds [201 x i8], ptr %18, i64 0, i64 0
  %51 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 156), align 8, !tbaa !18
  %52 = call ptr @fgets(ptr noundef %50, i32 noundef 200, ptr noundef %51)
  store ptr %52, ptr %16, align 8, !tbaa !5
  %53 = icmp ne ptr %52, null
  br i1 %53, label %54, label %122

54:                                               ; preds = %49
  %55 = load i32, ptr %30, align 4, !tbaa !11
  %56 = add nsw i32 %55, 1
  store i32 %56, ptr %30, align 4, !tbaa !11
  %57 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 27), align 8, !tbaa !19
  %58 = icmp ne i32 %57, 0
  br i1 %58, label %59, label %104

59:                                               ; preds = %54
  %60 = load i32, ptr %30, align 4, !tbaa !11
  %61 = icmp eq i32 %60, 1
  br i1 %61, label %62, label %104

62:                                               ; preds = %59
  %63 = call ptr @__ctype_b_loc() #8
  %64 = load ptr, ptr %63, align 8, !tbaa !5
  %65 = load ptr, ptr %16, align 8, !tbaa !5
  %66 = load i8, ptr %65, align 1, !tbaa !20
  %67 = sext i8 %66 to i32
  %68 = sext i32 %67 to i64
  %69 = getelementptr inbounds i16, ptr %64, i64 %68
  %70 = load i16, ptr %69, align 2, !tbaa !21
  %71 = zext i16 %70 to i32
  %72 = and i32 %71, 2048
  %73 = icmp ne i32 %72, 0
  br i1 %73, label %74, label %104

74:                                               ; preds = %62
  %75 = load ptr, ptr %16, align 8, !tbaa !5
  %76 = call i32 @qh_strtol(ptr noundef %75, ptr noundef %16)
  store i32 %76, ptr %21, align 4, !tbaa !11
  br label %77

77:                                               ; preds = %89, %74
  %78 = call ptr @__ctype_b_loc() #8
  %79 = load ptr, ptr %78, align 8, !tbaa !5
  %80 = load ptr, ptr %16, align 8, !tbaa !5
  %81 = load i8, ptr %80, align 1, !tbaa !20
  %82 = sext i8 %81 to i32
  %83 = sext i32 %82 to i64
  %84 = getelementptr inbounds i16, ptr %79, i64 %83
  %85 = load i16, ptr %84, align 2, !tbaa !21
  %86 = zext i16 %85 to i32
  %87 = and i32 %86, 8192
  %88 = icmp ne i32 %87, 0
  br i1 %88, label %89, label %92

89:                                               ; preds = %77
  %90 = load ptr, ptr %16, align 8, !tbaa !5
  %91 = getelementptr inbounds i8, ptr %90, i32 1
  store ptr %91, ptr %16, align 8, !tbaa !5
  br label %77, !llvm.loop !23

92:                                               ; preds = %77
  %93 = load ptr, ptr %16, align 8, !tbaa !5
  %94 = call i32 @qh_strtol(ptr noundef %93, ptr noundef %16)
  %95 = icmp eq i32 %94, 1
  br i1 %95, label %96, label %102

96:                                               ; preds = %92
  %97 = load i32, ptr %21, align 4, !tbaa !11
  %98 = load ptr, ptr %16, align 8, !tbaa !5
  %99 = call i32 @qh_readfeasible(i32 noundef %97, ptr noundef %98)
  %100 = load i32, ptr %30, align 4, !tbaa !11
  %101 = add nsw i32 %100, %99
  store i32 %101, ptr %30, align 4, !tbaa !11
  br label %103

102:                                              ; preds = %92
  store i32 0, ptr %21, align 4, !tbaa !11
  br label %103

103:                                              ; preds = %102, %96
  br label %121

104:                                              ; preds = %62, %59, %54
  %105 = getelementptr inbounds [201 x i8], ptr %18, i64 0, i64 0
  %106 = call i32 @memcmp(ptr noundef %105, ptr noundef @.str.205, i64 noundef 5) #9
  %107 = icmp ne i32 %106, 0
  br i1 %107, label %108, label %112

108:                                              ; preds = %104
  %109 = getelementptr inbounds [201 x i8], ptr %18, i64 0, i64 0
  %110 = call i32 @memcmp(ptr noundef %109, ptr noundef @.str.206, i64 noundef 5) #9
  %111 = icmp ne i32 %110, 0
  br i1 %111, label %113, label %112

112:                                              ; preds = %108, %104
  br label %122

113:                                              ; preds = %108
  %114 = load i8, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 119), align 8, !tbaa !20
  %115 = icmp ne i8 %114, 0
  br i1 %115, label %119, label %116

116:                                              ; preds = %113
  %117 = load ptr, ptr %16, align 8, !tbaa !5
  %118 = call ptr @strncat(ptr noundef getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 119), ptr noundef %117, i64 noundef 255) #7
  br label %119

119:                                              ; preds = %116, %113
  br label %120

120:                                              ; preds = %119
  br label %121

121:                                              ; preds = %120, %103
  br label %49, !llvm.loop !25

122:                                              ; preds = %112, %49
  %123 = load ptr, ptr %16, align 8, !tbaa !5
  %124 = icmp ne ptr %123, null
  br i1 %124, label %127, label %125

125:                                              ; preds = %122
  %126 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !26
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %126, i32 noundef 6074, ptr noundef @.str.207)
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %127

127:                                              ; preds = %125, %122
  br label %128

128:                                              ; preds = %127, %43
  br label %129

129:                                              ; preds = %226, %128
  %130 = load i32, ptr %20, align 4, !tbaa !11
  %131 = icmp ne i32 %130, 0
  br i1 %131, label %137, label %132

132:                                              ; preds = %129
  %133 = getelementptr inbounds [201 x i8], ptr %18, i64 0, i64 0
  %134 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 156), align 8, !tbaa !18
  %135 = call ptr @fgets(ptr noundef %133, i32 noundef 200, ptr noundef %134)
  store ptr %135, ptr %16, align 8, !tbaa !5
  %136 = icmp ne ptr %135, null
  br label %137

137:                                              ; preds = %132, %129
  %138 = phi i1 [ false, %129 ], [ %136, %132 ]
  br i1 %138, label %139, label %227

139:                                              ; preds = %137
  %140 = load i32, ptr %30, align 4, !tbaa !11
  %141 = add nsw i32 %140, 1
  store i32 %141, ptr %30, align 4, !tbaa !11
  %142 = load ptr, ptr %16, align 8, !tbaa !5
  %143 = call i32 @memcmp(ptr noundef %142, ptr noundef @.str.205, i64 noundef 5) #9
  %144 = icmp ne i32 %143, 0
  br i1 %144, label %145, label %149

145:                                              ; preds = %139
  %146 = load ptr, ptr %16, align 8, !tbaa !5
  %147 = call i32 @memcmp(ptr noundef %146, ptr noundef @.str.206, i64 noundef 5) #9
  %148 = icmp ne i32 %147, 0
  br i1 %148, label %150, label %149

149:                                              ; preds = %145, %139
  store i32 1, ptr %35, align 4, !tbaa !11
  br label %150

150:                                              ; preds = %149, %145
  br label %151

151:                                              ; preds = %225, %150
  %152 = load ptr, ptr %16, align 8, !tbaa !5
  %153 = load i8, ptr %152, align 1, !tbaa !20
  %154 = icmp ne i8 %153, 0
  br i1 %154, label %155, label %226

155:                                              ; preds = %151
  br label %156

156:                                              ; preds = %168, %155
  %157 = call ptr @__ctype_b_loc() #8
  %158 = load ptr, ptr %157, align 8, !tbaa !5
  %159 = load ptr, ptr %16, align 8, !tbaa !5
  %160 = load i8, ptr %159, align 1, !tbaa !20
  %161 = sext i8 %160 to i32
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds i16, ptr %158, i64 %162
  %164 = load i16, ptr %163, align 2, !tbaa !21
  %165 = zext i16 %164 to i32
  %166 = and i32 %165, 8192
  %167 = icmp ne i32 %166, 0
  br i1 %167, label %168, label %171

168:                                              ; preds = %156
  %169 = load ptr, ptr %16, align 8, !tbaa !5
  %170 = getelementptr inbounds i8, ptr %169, i32 1
  store ptr %170, ptr %16, align 8, !tbaa !5
  br label %156, !llvm.loop !27

171:                                              ; preds = %156
  %172 = load ptr, ptr %16, align 8, !tbaa !5
  %173 = load i8, ptr %172, align 1, !tbaa !20
  %174 = icmp ne i8 %173, 0
  br i1 %174, label %176, label %175

175:                                              ; preds = %171
  br label %226

176:                                              ; preds = %171
  %177 = call ptr @__ctype_b_loc() #8
  %178 = load ptr, ptr %177, align 8, !tbaa !5
  %179 = load ptr, ptr %16, align 8, !tbaa !5
  %180 = load i8, ptr %179, align 1, !tbaa !20
  %181 = sext i8 %180 to i32
  %182 = sext i32 %181 to i64
  %183 = getelementptr inbounds i16, ptr %178, i64 %182
  %184 = load i16, ptr %183, align 2, !tbaa !21
  %185 = zext i16 %184 to i32
  %186 = and i32 %185, 2048
  %187 = icmp ne i32 %186, 0
  br i1 %187, label %196, label %188

188:                                              ; preds = %176
  %189 = load i8, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 119), align 8, !tbaa !20
  %190 = icmp ne i8 %189, 0
  br i1 %190, label %195, label %191

191:                                              ; preds = %188
  %192 = load ptr, ptr %16, align 8, !tbaa !5
  %193 = call ptr @strncat(ptr noundef getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 119), ptr noundef %192, i64 noundef 255) #7
  %194 = load i32, ptr %30, align 4, !tbaa !11
  store i32 %194, ptr %25, align 4, !tbaa !11
  br label %195

195:                                              ; preds = %191, %188
  br label %226

196:                                              ; preds = %176
  %197 = load i32, ptr %19, align 4, !tbaa !11
  %198 = icmp ne i32 %197, 0
  br i1 %198, label %202, label %199

199:                                              ; preds = %196
  %200 = load ptr, ptr %16, align 8, !tbaa !5
  %201 = call i32 @qh_strtol(ptr noundef %200, ptr noundef %16)
  store i32 %201, ptr %19, align 4, !tbaa !11
  br label %225

202:                                              ; preds = %196
  %203 = load ptr, ptr %16, align 8, !tbaa !5
  %204 = call i32 @qh_strtol(ptr noundef %203, ptr noundef %16)
  store i32 %204, ptr %20, align 4, !tbaa !11
  %205 = load i32, ptr %20, align 4, !tbaa !11
  %206 = icmp eq i32 %205, 1
  br i1 %206, label %207, label %223

207:                                              ; preds = %202
  %208 = load i32, ptr %19, align 4, !tbaa !11
  %209 = icmp sge i32 %208, 2
  br i1 %209, label %210, label %223

210:                                              ; preds = %207
  %211 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 27), align 8, !tbaa !19
  %212 = icmp ne i32 %211, 0
  br i1 %212, label %213, label %223

213:                                              ; preds = %210
  %214 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 11), align 8, !tbaa !17
  %215 = icmp ne i32 %214, 0
  br i1 %215, label %223, label %216

216:                                              ; preds = %213
  %217 = load i32, ptr %19, align 4, !tbaa !11
  %218 = load ptr, ptr %16, align 8, !tbaa !5
  %219 = call i32 @qh_readfeasible(i32 noundef %217, ptr noundef %218)
  %220 = load i32, ptr %30, align 4, !tbaa !11
  %221 = add nsw i32 %220, %219
  store i32 %221, ptr %30, align 4, !tbaa !11
  %222 = load i32, ptr %19, align 4, !tbaa !11
  store i32 %222, ptr %21, align 4, !tbaa !11
  store i32 0, ptr %20, align 4, !tbaa !11
  store i32 0, ptr %19, align 4, !tbaa !11
  br label %224

223:                                              ; preds = %213, %210, %207, %202
  br label %226

224:                                              ; preds = %216
  br label %225

225:                                              ; preds = %224, %199
  br label %151, !llvm.loop !28

226:                                              ; preds = %223, %195, %175, %151
  br label %129, !llvm.loop !29

227:                                              ; preds = %137
  %228 = load ptr, ptr %16, align 8, !tbaa !5
  %229 = icmp ne ptr %228, null
  br i1 %229, label %232, label %230

230:                                              ; preds = %227
  %231 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !26
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %231, i32 noundef 6075, ptr noundef @.str.208)
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %232

232:                                              ; preds = %230, %227
  %233 = load i32, ptr %19, align 4, !tbaa !11
  %234 = load i32, ptr %20, align 4, !tbaa !11
  %235 = icmp sgt i32 %233, %234
  br i1 %235, label %236, label %240

236:                                              ; preds = %232
  %237 = load i32, ptr %19, align 4, !tbaa !11
  store i32 %237, ptr %24, align 4, !tbaa !11
  %238 = load i32, ptr %20, align 4, !tbaa !11
  store i32 %238, ptr %19, align 4, !tbaa !11
  %239 = load i32, ptr %24, align 4, !tbaa !11
  store i32 %239, ptr %20, align 4, !tbaa !11
  br label %240

240:                                              ; preds = %236, %232
  %241 = load i32, ptr %19, align 4, !tbaa !11
  %242 = icmp slt i32 %241, 2
  br i1 %242, label %243, label %246

243:                                              ; preds = %240
  %244 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !26
  %245 = load i32, ptr %19, align 4, !tbaa !11
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %244, i32 noundef 6220, ptr noundef @.str.209, i32 noundef %245)
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %246

246:                                              ; preds = %243, %240
  %247 = load i32, ptr %20, align 4, !tbaa !11
  %248 = icmp slt i32 %247, 1
  br i1 %248, label %252, label %249

249:                                              ; preds = %246
  %250 = load i32, ptr %20, align 4, !tbaa !11
  %251 = icmp sgt i32 %250, 2147483631
  br i1 %251, label %252, label %256

252:                                              ; preds = %249, %246
  %253 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !26
  %254 = load i32, ptr %20, align 4, !tbaa !11
  %255 = load i32, ptr %19, align 4, !tbaa !11
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %253, i32 noundef 6411, ptr noundef @.str.210, i32 noundef 2147483631, i32 noundef %254, i32 noundef %255)
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %256

256:                                              ; preds = %252, %249
  %257 = load i32, ptr %36, align 4, !tbaa !11
  %258 = icmp ne i32 %257, 0
  br i1 %258, label %259, label %264

259:                                              ; preds = %256
  %260 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 27), align 8, !tbaa !19
  %261 = icmp ne i32 %260, 0
  br i1 %261, label %262, label %264

262:                                              ; preds = %259
  %263 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !26
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %263, i32 noundef 6037, ptr noundef @.str.211)
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %333

264:                                              ; preds = %259, %256
  %265 = load i32, ptr %36, align 4, !tbaa !11
  %266 = icmp ne i32 %265, 0
  br i1 %266, label %267, label %287

267:                                              ; preds = %264
  store i32 0, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 70), align 4, !tbaa !30
  %268 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 11), align 8, !tbaa !17
  %269 = icmp ne i32 %268, 0
  br i1 %269, label %270, label %273

270:                                              ; preds = %267
  %271 = load i32, ptr %19, align 4, !tbaa !11
  %272 = load ptr, ptr %5, align 8, !tbaa !5
  store i32 %271, ptr %272, align 4, !tbaa !11
  br label %277

273:                                              ; preds = %267
  %274 = load i32, ptr %19, align 4, !tbaa !11
  %275 = add nsw i32 %274, 1
  %276 = load ptr, ptr %5, align 8, !tbaa !5
  store i32 %275, ptr %276, align 4, !tbaa !11
  br label %277

277:                                              ; preds = %273, %270
  %278 = load i32, ptr %20, align 4, !tbaa !11
  %279 = load ptr, ptr %4, align 8, !tbaa !5
  store i32 %278, ptr %279, align 4, !tbaa !11
  %280 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 8), align 4, !tbaa !31
  %281 = icmp ne i32 %280, 0
  br i1 %281, label %282, label %286

282:                                              ; preds = %277
  %283 = load ptr, ptr %4, align 8, !tbaa !5
  %284 = load i32, ptr %283, align 4, !tbaa !11
  %285 = add nsw i32 %284, 1
  store i32 %285, ptr %283, align 4, !tbaa !11
  br label %286

286:                                              ; preds = %282, %277
  br label %332

287:                                              ; preds = %264
  %288 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 27), align 8, !tbaa !19
  %289 = icmp ne i32 %288, 0
  br i1 %289, label %290, label %318

290:                                              ; preds = %287
  %291 = load i32, ptr %19, align 4, !tbaa !11
  %292 = sub nsw i32 %291, 1
  %293 = load ptr, ptr %5, align 8, !tbaa !5
  store i32 %292, ptr %293, align 4, !tbaa !11
  %294 = load i32, ptr %20, align 4, !tbaa !11
  %295 = load ptr, ptr %4, align 8, !tbaa !5
  store i32 %294, ptr %295, align 4, !tbaa !11
  %296 = load i32, ptr %19, align 4, !tbaa !11
  %297 = icmp slt i32 %296, 3
  br i1 %297, label %298, label %301

298:                                              ; preds = %290
  %299 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !26
  %300 = load i32, ptr %19, align 4, !tbaa !11
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %299, i32 noundef 6221, ptr noundef @.str.212, i32 noundef %300)
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %301

301:                                              ; preds = %298, %290
  %302 = load i32, ptr %21, align 4, !tbaa !11
  %303 = icmp ne i32 %302, 0
  br i1 %303, label %304, label %314

304:                                              ; preds = %301
  %305 = load i32, ptr %21, align 4, !tbaa !11
  %306 = load ptr, ptr %5, align 8, !tbaa !5
  %307 = load i32, ptr %306, align 4, !tbaa !11
  %308 = icmp ne i32 %305, %307
  br i1 %308, label %309, label %313

309:                                              ; preds = %304
  %310 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !26
  %311 = load i32, ptr %21, align 4, !tbaa !11
  %312 = load i32, ptr %19, align 4, !tbaa !11
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %310, i32 noundef 6222, ptr noundef @.str.213, i32 noundef %311, i32 noundef %312)
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %313

313:                                              ; preds = %309, %304
  br label %317

314:                                              ; preds = %301
  %315 = load ptr, ptr %5, align 8, !tbaa !5
  %316 = load i32, ptr %315, align 4, !tbaa !11
  call void @qh_setfeasible(i32 noundef %316)
  br label %317

317:                                              ; preds = %314, %313
  br label %331

318:                                              ; preds = %287
  %319 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 11), align 8, !tbaa !17
  %320 = icmp ne i32 %319, 0
  br i1 %320, label %321, label %325

321:                                              ; preds = %318
  %322 = load i32, ptr %19, align 4, !tbaa !11
  %323 = sub nsw i32 %322, 1
  %324 = load ptr, ptr %5, align 8, !tbaa !5
  store i32 %323, ptr %324, align 4, !tbaa !11
  br label %328

325:                                              ; preds = %318
  %326 = load i32, ptr %19, align 4, !tbaa !11
  %327 = load ptr, ptr %5, align 8, !tbaa !5
  store i32 %326, ptr %327, align 4, !tbaa !11
  br label %328

328:                                              ; preds = %325, %321
  %329 = load i32, ptr %20, align 4, !tbaa !11
  %330 = load ptr, ptr %4, align 8, !tbaa !5
  store i32 %329, ptr %330, align 4, !tbaa !11
  br label %331

331:                                              ; preds = %328, %317
  br label %332

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

333:                                              ; preds = %332, %262
  %334 = load ptr, ptr %5, align 8, !tbaa !5
  %335 = load i32, ptr %334, align 4, !tbaa !11
  %336 = mul nsw i32 %335, 8
  store i32 %336, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 160), align 8, !tbaa !32
  %337 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 27), align 8, !tbaa !19
  %338 = icmp ne i32 %337, 0
  br i1 %338, label %339, label %358

339:                                              ; preds = %333
  %340 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 160), align 8, !tbaa !32
  %341 = sext i32 %340 to i64
  %342 = add i64 %341, 8
  %343 = call ptr @qh_malloc(i64 noundef %342)
  store ptr %343, ptr %13, align 8, !tbaa !5
  store ptr %343, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 231), align 8, !tbaa !33
  %344 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 11), align 8, !tbaa !17
  %345 = icmp ne i32 %344, 0
  br i1 %345, label %346, label %350

346:                                              ; preds = %339
  %347 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 231), align 8, !tbaa !33
  store ptr %347, ptr %14, align 8, !tbaa !5
  %348 = load ptr, ptr %14, align 8, !tbaa !5
  %349 = getelementptr inbounds double, ptr %348, i64 1
  store ptr %349, ptr %15, align 8, !tbaa !5
  br label %357

350:                                              ; preds = %339
  %351 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 231), align 8, !tbaa !33
  store ptr %351, ptr %15, align 8, !tbaa !5
  %352 = load ptr, ptr %15, align 8, !tbaa !5
  %353 = load ptr, ptr %5, align 8, !tbaa !5
  %354 = load i32, ptr %353, align 4, !tbaa !11
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds double, ptr %352, i64 %355
  store ptr %356, ptr %14, align 8, !tbaa !5
  br label %357

357:                                              ; preds = %350, %346
  br label %358

358:                                              ; preds = %357, %333
  %359 = load i32, ptr %19, align 4, !tbaa !11
  %360 = mul nsw i32 %359, 21
  store i32 %360, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 230), align 8, !tbaa !34
  %361 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 230), align 8, !tbaa !34
  %362 = icmp slt i32 %361, 500
  br i1 %362, label %363, label %364

363:                                              ; preds = %358
  store i32 500, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 230), align 8, !tbaa !34
  br label %364

364:                                              ; preds = %363, %358
  %365 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 230), align 8, !tbaa !34
  %366 = add nsw i32 %365, 1
  %367 = sext i32 %366 to i64
  %368 = mul i64 %367, 1
  %369 = call ptr @qh_malloc(i64 noundef %368)
  store ptr %369, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 229), align 8, !tbaa !35
  %370 = load ptr, ptr %6, align 8, !tbaa !5
  store i32 1, ptr %370, align 4, !tbaa !11
  %371 = load ptr, ptr %4, align 8, !tbaa !5
  %372 = load i32, ptr %371, align 4, !tbaa !11
  %373 = load ptr, ptr %5, align 8, !tbaa !5
  %374 = load i32, ptr %373, align 4, !tbaa !11
  %375 = mul nsw i32 %372, %374
  %376 = sext i32 %375 to i64
  %377 = mul i64 %376, 8
  %378 = call ptr @qh_malloc(i64 noundef %377)
  store ptr %378, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 232), align 8, !tbaa !36
  store ptr %378, ptr %7, align 8, !tbaa !5
  store ptr %378, ptr %8, align 8, !tbaa !5
  %379 = load ptr, ptr %8, align 8, !tbaa !5
  %380 = icmp ne ptr %379, null
  br i1 %380, label %381, label %390

381:                                              ; preds = %364
  %382 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 229), align 8, !tbaa !35
  %383 = icmp ne ptr %382, null
  br i1 %383, label %384, label %390

384:                                              ; preds = %381
  %385 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 27), align 8, !tbaa !19
  %386 = icmp ne i32 %385, 0
  br i1 %386, label %387, label %393

387:                                              ; preds = %384
  %388 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 231), align 8, !tbaa !33
  %389 = icmp ne ptr %388, null
  br i1 %389, label %393, label %390

390:                                              ; preds = %387, %381, %364
  %391 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !26
  %392 = load i32, ptr %20, align 4, !tbaa !11
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %391, i32 noundef 6076, ptr noundef @.str.214, i32 noundef %392)
  call void @qh_errexit(i32 noundef 4, ptr noundef null, ptr noundef null)
  br label %393

393:                                              ; preds = %390, %387, %384
  %394 = load i32, ptr %36, align 4, !tbaa !11
  %395 = icmp ne i32 %394, 0
  br i1 %395, label %396, label %420

396:                                              ; preds = %393
  %397 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 8), align 4, !tbaa !31
  %398 = icmp ne i32 %397, 0
  br i1 %398, label %399, label %420

399:                                              ; preds = %396
  %400 = load ptr, ptr %7, align 8, !tbaa !5
  %401 = load i32, ptr %20, align 4, !tbaa !11
  %402 = load ptr, ptr %5, align 8, !tbaa !5
  %403 = load i32, ptr %402, align 4, !tbaa !11
  %404 = mul nsw i32 %401, %403
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds double, ptr %400, i64 %405
  store ptr %406, ptr %9, align 8, !tbaa !5
  %407 = load ptr, ptr %5, align 8, !tbaa !5
  %408 = load i32, ptr %407, align 4, !tbaa !11
  %409 = sub nsw i32 %408, 1
  store i32 %409, ptr %23, align 4, !tbaa !11
  br label %410

410:                                              ; preds = %414, %399
  %411 = load i32, ptr %23, align 4, !tbaa !11
  %412 = add nsw i32 %411, -1
  store i32 %412, ptr %23, align 4, !tbaa !11
  %413 = icmp ne i32 %411, 0
  br i1 %413, label %414, label %419

414:                                              ; preds = %410
  %415 = load ptr, ptr %9, align 8, !tbaa !5
  %416 = load i32, ptr %23, align 4, !tbaa !11
  %417 = sext i32 %416 to i64
  %418 = getelementptr inbounds double, ptr %415, i64 %417
  store double 0.000000e+00, ptr %418, align 8, !tbaa !9
  br label %410, !llvm.loop !37

419:                                              ; preds = %410
  br label %420

420:                                              ; preds = %419, %396, %393
  %421 = load i32, ptr %20, align 4, !tbaa !11
  %422 = load i32, ptr %19, align 4, !tbaa !11
  %423 = mul nsw i32 %421, %422
  store i32 %423, ptr %31, align 4, !tbaa !11
  store double 0.000000e+00, ptr %10, align 8, !tbaa !9
  br label %424

424:                                              ; preds = %709, %420
  %425 = load i32, ptr %34, align 4, !tbaa !11
  %426 = icmp ne i32 %425, 0
  br i1 %426, label %427, label %429

427:                                              ; preds = %424
  %428 = load ptr, ptr %16, align 8, !tbaa !5
  br label %434

429:                                              ; preds = %424
  %430 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 229), align 8, !tbaa !35
  %431 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 230), align 8, !tbaa !34
  %432 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 156), align 8, !tbaa !18
  %433 = call ptr @fgets(ptr noundef %430, i32 noundef %431, ptr noundef %432)
  br label %434

434:                                              ; preds = %429, %427
  %435 = phi ptr [ %428, %427 ], [ %433, %429 ]
  store ptr %435, ptr %16, align 8, !tbaa !5
  %436 = icmp ne ptr %435, null
  br i1 %436, label %437, label %710

437:                                              ; preds = %434
  %438 = load i32, ptr %34, align 4, !tbaa !11
  %439 = icmp ne i32 %438, 0
  br i1 %439, label %473, label %440

440:                                              ; preds = %437
  %441 = load i32, ptr %30, align 4, !tbaa !11
  %442 = add nsw i32 %441, 1
  store i32 %442, ptr %30, align 4, !tbaa !11
  %443 = load ptr, ptr %16, align 8, !tbaa !5
  %444 = load i8, ptr %443, align 1, !tbaa !20
  %445 = sext i8 %444 to i32
  %446 = icmp eq i32 %445, 101
  br i1 %446, label %452, label %447

447:                                              ; preds = %440
  %448 = load ptr, ptr %16, align 8, !tbaa !5
  %449 = load i8, ptr %448, align 1, !tbaa !20
  %450 = sext i8 %449 to i32
  %451 = icmp eq i32 %450, 69
  br i1 %451, label %452, label %472

452:                                              ; preds = %447, %440
  %453 = load ptr, ptr %16, align 8, !tbaa !5
  %454 = call i32 @memcmp(ptr noundef %453, ptr noundef @.str.215, i64 noundef 3) #9
  %455 = icmp ne i32 %454, 0
  br i1 %455, label %456, label %460

456:                                              ; preds = %452
  %457 = load ptr, ptr %16, align 8, !tbaa !5
  %458 = call i32 @memcmp(ptr noundef %457, ptr noundef @.str.216, i64 noundef 3) #9
  %459 = icmp ne i32 %458, 0
  br i1 %459, label %471, label %460

460:                                              ; preds = %456, %452
  %461 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 11), align 8, !tbaa !17
  %462 = icmp ne i32 %461, 0
  br i1 %462, label %463, label %464

463:                                              ; preds = %460
  br label %710

464:                                              ; preds = %460
  %465 = load i32, ptr %35, align 4, !tbaa !11
  %466 = icmp ne i32 %465, 0
  br i1 %466, label %467, label %469

467:                                              ; preds = %464
  %468 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !26
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %468, i32 noundef 7058, ptr noundef @.str.217)
  br label %469

469:                                              ; preds = %467, %464
  br label %470

470:                                              ; preds = %469
  br label %471

471:                                              ; preds = %470, %456
  br label %472

472:                                              ; preds = %471, %447
  br label %473

473:                                              ; preds = %472, %437
  store i32 0, ptr %33, align 4, !tbaa !11
  br label %474

474:                                              ; preds = %676, %539, %473
  %475 = load ptr, ptr %16, align 8, !tbaa !5
  %476 = load i8, ptr %475, align 1, !tbaa !20
  %477 = icmp ne i8 %476, 0
  br i1 %477, label %478, label %677

478:                                              ; preds = %474
  br label %479

479:                                              ; preds = %491, %478
  %480 = call ptr @__ctype_b_loc() #8
  %481 = load ptr, ptr %480, align 8, !tbaa !5
  %482 = load ptr, ptr %16, align 8, !tbaa !5
  %483 = load i8, ptr %482, align 1, !tbaa !20
  %484 = sext i8 %483 to i32
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds i16, ptr %481, i64 %485
  %487 = load i16, ptr %486, align 2, !tbaa !21
  %488 = zext i16 %487 to i32
  %489 = and i32 %488, 8192
  %490 = icmp ne i32 %489, 0
  br i1 %490, label %491, label %494

491:                                              ; preds = %479
  %492 = load ptr, ptr %16, align 8, !tbaa !5
  %493 = getelementptr inbounds i8, ptr %492, i32 1
  store ptr %493, ptr %16, align 8, !tbaa !5
  br label %479, !llvm.loop !38

494:                                              ; preds = %479
  %495 = load ptr, ptr %16, align 8, !tbaa !5
  %496 = call double @qh_strtod(ptr noundef %495, ptr noundef %17)
  store double %496, ptr %12, align 8, !tbaa !9
  %497 = load ptr, ptr %16, align 8, !tbaa !5
  %498 = load ptr, ptr %17, align 8, !tbaa !5
  %499 = icmp eq ptr %497, %498
  br i1 %499, label %500, label %528

500:                                              ; preds = %494
  %501 = load i8, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 119), align 8, !tbaa !20
  %502 = icmp ne i8 %501, 0
  br i1 %502, label %506, label %503

503:                                              ; preds = %500
  %504 = load ptr, ptr %16, align 8, !tbaa !5
  %505 = call ptr @strncat(ptr noundef getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 119), ptr noundef %504, i64 noundef 255) #7
  br label %506

506:                                              ; preds = %503, %500
  %507 = load ptr, ptr %16, align 8, !tbaa !5
  %508 = load i8, ptr %507, align 1, !tbaa !20
  %509 = sext i8 %508 to i32
  %510 = icmp ne i32 %509, 0
  br i1 %510, label %511, label %516

511:                                              ; preds = %506
  %512 = load i32, ptr %25, align 4, !tbaa !11
  %513 = icmp ne i32 %512, 0
  br i1 %513, label %516, label %514

514:                                              ; preds = %511
  %515 = load i32, ptr %30, align 4, !tbaa !11
  store i32 %515, ptr %25, align 4, !tbaa !11
  br label %516

516:                                              ; preds = %514, %511, %506
  %517 = load i32, ptr %33, align 4, !tbaa !11
  %518 = icmp ne i32 %517, 0
  br i1 %518, label %527, label %519

519:                                              ; preds = %516
  %520 = load i32, ptr %26, align 4, !tbaa !11
  %521 = icmp ne i32 %520, 0
  br i1 %521, label %527, label %522

522:                                              ; preds = %519
  %523 = load i32, ptr %32, align 4, !tbaa !11
  %524 = icmp ne i32 %523, 0
  br i1 %524, label %525, label %527

525:                                              ; preds = %522
  %526 = load i32, ptr %30, align 4, !tbaa !11
  store i32 %526, ptr %26, align 4, !tbaa !11
  br label %527

527:                                              ; preds = %525, %522, %519, %516
  br label %677

528:                                              ; preds = %494
  %529 = load i32, ptr %28, align 4, !tbaa !11
  %530 = icmp ne i32 %529, 0
  br i1 %530, label %533, label %531

531:                                              ; preds = %528
  %532 = load i32, ptr %30, align 4, !tbaa !11
  store i32 %532, ptr %28, align 4, !tbaa !11
  br label %533

533:                                              ; preds = %531, %528
  %534 = load ptr, ptr %17, align 8, !tbaa !5
  store ptr %534, ptr %16, align 8, !tbaa !5
  %535 = load i32, ptr %29, align 4, !tbaa !11
  %536 = add nsw i32 %535, 1
  store i32 %536, ptr %29, align 4, !tbaa !11
  %537 = load i32, ptr %31, align 4, !tbaa !11
  %538 = icmp sgt i32 %536, %537
  br i1 %538, label %539, label %540

539:                                              ; preds = %533
  br label %474, !llvm.loop !39

540:                                              ; preds = %533
  %541 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 27), align 8, !tbaa !19
  %542 = icmp ne i32 %541, 0
  br i1 %542, label %543, label %556

543:                                              ; preds = %540
  %544 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 11), align 8, !tbaa !17
  %545 = icmp ne i32 %544, 0
  br i1 %545, label %546, label %551

546:                                              ; preds = %543
  %547 = load double, ptr %12, align 8, !tbaa !9
  %548 = fneg double %547
  %549 = load ptr, ptr %13, align 8, !tbaa !5
  %550 = getelementptr inbounds double, ptr %549, i32 1
  store ptr %550, ptr %13, align 8, !tbaa !5
  store double %548, ptr %549, align 8, !tbaa !9
  br label %555

551:                                              ; preds = %543
  %552 = load double, ptr %12, align 8, !tbaa !9
  %553 = load ptr, ptr %13, align 8, !tbaa !5
  %554 = getelementptr inbounds double, ptr %553, i32 1
  store ptr %554, ptr %13, align 8, !tbaa !5
  store double %552, ptr %553, align 8, !tbaa !9
  br label %555

555:                                              ; preds = %551, %546
  br label %608

556:                                              ; preds = %540
  %557 = load double, ptr %12, align 8, !tbaa !9
  %558 = load ptr, ptr %8, align 8, !tbaa !5
  %559 = getelementptr inbounds double, ptr %558, i32 1
  store ptr %559, ptr %8, align 8, !tbaa !5
  store double %557, ptr %558, align 8, !tbaa !9
  %560 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 11), align 8, !tbaa !17
  %561 = icmp ne i32 %560, 0
  br i1 %561, label %562, label %574

562:                                              ; preds = %556
  %563 = load i32, ptr %32, align 4, !tbaa !11
  %564 = icmp ne i32 %563, 0
  br i1 %564, label %574, label %565

565:                                              ; preds = %562
  %566 = load double, ptr %12, align 8, !tbaa !9
  %567 = fcmp une double %566, 1.000000e+00
  br i1 %567, label %568, label %571

568:                                              ; preds = %565
  %569 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !26
  %570 = load i32, ptr %30, align 4, !tbaa !11
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %569, i32 noundef 6077, ptr noundef @.str.218, i32 noundef %570)
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %571

571:                                              ; preds = %568, %565
  %572 = load ptr, ptr %8, align 8, !tbaa !5
  %573 = getelementptr inbounds double, ptr %572, i32 -1
  store ptr %573, ptr %8, align 8, !tbaa !5
  br label %607

574:                                              ; preds = %562, %556
  %575 = load i32, ptr %36, align 4, !tbaa !11
  %576 = icmp ne i32 %575, 0
  br i1 %576, label %577, label %606

577:                                              ; preds = %574
  %578 = load double, ptr %12, align 8, !tbaa !9
  %579 = load double, ptr %12, align 8, !tbaa !9
  %580 = load double, ptr %10, align 8, !tbaa !9
  %581 = call double @llvm.fmuladd.f64(double %578, double %579, double %580)
  store double %581, ptr %10, align 8, !tbaa !9
  %582 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 8), align 4, !tbaa !31
  %583 = icmp ne i32 %582, 0
  br i1 %583, label %584, label %605

584:                                              ; preds = %577
  %585 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 11), align 8, !tbaa !17
  %586 = icmp ne i32 %585, 0
  br i1 %586, label %587, label %596

587:                                              ; preds = %584
  %588 = load double, ptr %12, align 8, !tbaa !9
  %589 = load ptr, ptr %9, align 8, !tbaa !5
  %590 = load i32, ptr %32, align 4, !tbaa !11
  %591 = sub nsw i32 %590, 1
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds double, ptr %589, i64 %592
  %594 = load double, ptr %593, align 8, !tbaa !9
  %595 = fadd double %594, %588
  store double %595, ptr %593, align 8, !tbaa !9
  br label %604

596:                                              ; preds = %584
  %597 = load double, ptr %12, align 8, !tbaa !9
  %598 = load ptr, ptr %9, align 8, !tbaa !5
  %599 = load i32, ptr %32, align 4, !tbaa !11
  %600 = sext i32 %599 to i64
  %601 = getelementptr inbounds double, ptr %598, i64 %600
  %602 = load double, ptr %601, align 8, !tbaa !9
  %603 = fadd double %602, %597
  store double %603, ptr %601, align 8, !tbaa !9
  br label %604

604:                                              ; preds = %596, %587
  br label %605

605:                                              ; preds = %604, %577
  br label %606

606:                                              ; preds = %605, %574
  br label %607

607:                                              ; preds = %606, %571
  br label %608

608:                                              ; preds = %607, %555
  %609 = load i32, ptr %32, align 4, !tbaa !11
  %610 = add nsw i32 %609, 1
  store i32 %610, ptr %32, align 4, !tbaa !11
  %611 = load i32, ptr %19, align 4, !tbaa !11
  %612 = icmp eq i32 %610, %611
  br i1 %612, label %613, label %676

613:                                              ; preds = %608
  store i32 0, ptr %32, align 4, !tbaa !11
  %614 = load i32, ptr %36, align 4, !tbaa !11
  %615 = icmp ne i32 %614, 0
  br i1 %615, label %616, label %626

616:                                              ; preds = %613
  %617 = load double, ptr %10, align 8, !tbaa !9
  %618 = load ptr, ptr %8, align 8, !tbaa !5
  %619 = getelementptr inbounds double, ptr %618, i32 1
  store ptr %619, ptr %8, align 8, !tbaa !5
  store double %617, ptr %618, align 8, !tbaa !9
  %620 = load double, ptr %11, align 8, !tbaa !9
  %621 = load double, ptr %10, align 8, !tbaa !9
  %622 = fcmp olt double %620, %621
  br i1 %622, label %623, label %625

623:                                              ; preds = %616
  %624 = load double, ptr %10, align 8, !tbaa !9
  store double %624, ptr %11, align 8, !tbaa !9
  br label %625

625:                                              ; preds = %623, %616
  store double 0.000000e+00, ptr %10, align 8, !tbaa !9
  br label %649

626:                                              ; preds = %613
  %627 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 27), align 8, !tbaa !19
  %628 = icmp ne i32 %627, 0
  br i1 %628, label %629, label %648

629:                                              ; preds = %626
  %630 = load ptr, ptr %5, align 8, !tbaa !5
  %631 = load i32, ptr %630, align 4, !tbaa !11
  %632 = load ptr, ptr %8, align 8, !tbaa !5
  %633 = load ptr, ptr %15, align 8, !tbaa !5
  %634 = load ptr, ptr %14, align 8, !tbaa !5
  %635 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 107), align 8, !tbaa !40
  %636 = call i32 @qh_sethalfspace(i32 noundef %631, ptr noundef %632, ptr noundef %8, ptr noundef %633, ptr noundef %634, ptr noundef %635)
  %637 = icmp ne i32 %636, 0
  br i1 %637, label %646, label %638

638:                                              ; preds = %629
  %639 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !26
  %640 = load i32, ptr %30, align 4, !tbaa !11
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %639, i32 noundef 8048, ptr noundef @.str.219, i32 noundef %640)
  %641 = load i32, ptr %35, align 4, !tbaa !11
  %642 = icmp ne i32 %641, 0
  br i1 %642, label %643, label %645

643:                                              ; preds = %638
  %644 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !26
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %644, i32 noundef 8049, ptr noundef @.str.220)
  br label %645

645:                                              ; preds = %643, %638
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %646

646:                                              ; preds = %645, %629
  %647 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 231), align 8, !tbaa !33
  store ptr %647, ptr %13, align 8, !tbaa !5
  br label %648

648:                                              ; preds = %646, %626
  br label %649

649:                                              ; preds = %648, %625
  br label %650

650:                                              ; preds = %662, %649
  %651 = call ptr @__ctype_b_loc() #8
  %652 = load ptr, ptr %651, align 8, !tbaa !5
  %653 = load ptr, ptr %16, align 8, !tbaa !5
  %654 = load i8, ptr %653, align 1, !tbaa !20
  %655 = sext i8 %654 to i32
  %656 = sext i32 %655 to i64
  %657 = getelementptr inbounds i16, ptr %652, i64 %656
  %658 = load i16, ptr %657, align 2, !tbaa !21
  %659 = zext i16 %658 to i32
  %660 = and i32 %659, 8192
  %661 = icmp ne i32 %660, 0
  br i1 %661, label %662, label %665

662:                                              ; preds = %650
  %663 = load ptr, ptr %16, align 8, !tbaa !5
  %664 = getelementptr inbounds i8, ptr %663, i32 1
  store ptr %664, ptr %16, align 8, !tbaa !5
  br label %650, !llvm.loop !41

665:                                              ; preds = %650
  %666 = load ptr, ptr %16, align 8, !tbaa !5
  %667 = load i8, ptr %666, align 1, !tbaa !20
  %668 = icmp ne i8 %667, 0
  br i1 %668, label %669, label %675

669:                                              ; preds = %665
  store i32 1, ptr %33, align 4, !tbaa !11
  %670 = load i32, ptr %27, align 4, !tbaa !11
  %671 = icmp ne i32 %670, 0
  br i1 %671, label %674, label %672

672:                                              ; preds = %669
  %673 = load i32, ptr %30, align 4, !tbaa !11
  store i32 %673, ptr %27, align 4, !tbaa !11
  br label %674

674:                                              ; preds = %672, %669
  br label %675

675:                                              ; preds = %674, %665
  br label %676

676:                                              ; preds = %675, %608
  br label %474, !llvm.loop !39

677:                                              ; preds = %527, %474
  %678 = load i32, ptr %33, align 4, !tbaa !11
  %679 = icmp ne i32 %678, 0
  br i1 %679, label %688, label %680

680:                                              ; preds = %677
  %681 = load i32, ptr %26, align 4, !tbaa !11
  %682 = icmp ne i32 %681, 0
  br i1 %682, label %688, label %683

683:                                              ; preds = %680
  %684 = load i32, ptr %32, align 4, !tbaa !11
  %685 = icmp ne i32 %684, 0
  br i1 %685, label %686, label %688

686:                                              ; preds = %683
  %687 = load i32, ptr %30, align 4, !tbaa !11
  store i32 %687, ptr %26, align 4, !tbaa !11
  br label %688

688:                                              ; preds = %686, %683, %680, %677
  %689 = load i32, ptr %34, align 4, !tbaa !11
  %690 = icmp ne i32 %689, 0
  br i1 %690, label %709, label %691

691:                                              ; preds = %688
  %692 = load ptr, ptr %16, align 8, !tbaa !5
  %693 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 229), align 8, !tbaa !35
  %694 = ptrtoint ptr %692 to i64
  %695 = ptrtoint ptr %693 to i64
  %696 = sub i64 %694, %695
  %697 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 230), align 8, !tbaa !34
  %698 = sext i32 %697 to i64
  %699 = icmp sge i64 %696, %698
  br i1 %699, label %700, label %709

700:                                              ; preds = %691
  %701 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !26
  %702 = load i32, ptr %30, align 4, !tbaa !11
  %703 = load ptr, ptr %16, align 8, !tbaa !5
  %704 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 229), align 8, !tbaa !35
  %705 = ptrtoint ptr %703 to i64
  %706 = ptrtoint ptr %704 to i64
  %707 = sub i64 %705, %706
  %708 = trunc i64 %707 to i32
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %701, i32 noundef 6078, ptr noundef @.str.221, i32 noundef %702, i32 noundef %708)
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %709

709:                                              ; preds = %700, %691, %688
  store i32 0, ptr %34, align 4, !tbaa !11
  br label %424, !llvm.loop !42

710:                                              ; preds = %463, %434
  %711 = load i8, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 119), align 8, !tbaa !20
  %712 = icmp ne i8 %711, 0
  br i1 %712, label %713, label %717

713:                                              ; preds = %710
  %714 = call i64 @strlen(ptr noundef getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 119)) #9
  %715 = sub i64 %714, 1
  %716 = getelementptr inbounds [256 x i8], ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 119), i64 0, i64 %715
  store i8 0, ptr %716, align 1, !tbaa !20
  br label %717

717:                                              ; preds = %713, %710
  %718 = load i32, ptr %29, align 4, !tbaa !11
  %719 = load i32, ptr %31, align 4, !tbaa !11
  %720 = icmp ne i32 %718, %719
  br i1 %720, label %721, label %825

721:                                              ; preds = %717
  %722 = load i32, ptr %20, align 4, !tbaa !11
  %723 = load i32, ptr %29, align 4, !tbaa !11
  %724 = load i32, ptr %19, align 4, !tbaa !11
  %725 = sdiv i32 %723, %724
  %726 = icmp sgt i32 %722, %725
  br i1 %726, label %727, label %731

727:                                              ; preds = %721
  %728 = load i32, ptr %29, align 4, !tbaa !11
  %729 = load i32, ptr %19, align 4, !tbaa !11
  %730 = sdiv i32 %728, %729
  br label %733

731:                                              ; preds = %721
  %732 = load i32, ptr %20, align 4, !tbaa !11
  br label %733

733:                                              ; preds = %731, %727
  %734 = phi i32 [ %730, %727 ], [ %732, %731 ]
  store i32 %734, ptr %22, align 4, !tbaa !11
  %735 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 1), align 4, !tbaa !43
  %736 = icmp ne i32 %735, 0
  br i1 %736, label %737, label %747

737:                                              ; preds = %733
  %738 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !26
  %739 = load i32, ptr %20, align 4, !tbaa !11
  %740 = load i32, ptr %19, align 4, !tbaa !11
  %741 = load i32, ptr %29, align 4, !tbaa !11
  %742 = load i32, ptr %19, align 4, !tbaa !11
  %743 = sdiv i32 %741, %742
  %744 = load i32, ptr %29, align 4, !tbaa !11
  %745 = load i32, ptr %19, align 4, !tbaa !11
  %746 = srem i32 %744, %745
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %738, i32 noundef 7073, ptr noundef @.str.222, i32 noundef %739, i32 noundef %740, i32 noundef %743, i32 noundef %746)
  br label %757

747:                                              ; preds = %733
  %748 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !26
  %749 = load i32, ptr %20, align 4, !tbaa !11
  %750 = load i32, ptr %19, align 4, !tbaa !11
  %751 = load i32, ptr %29, align 4, !tbaa !11
  %752 = load i32, ptr %19, align 4, !tbaa !11
  %753 = sdiv i32 %751, %752
  %754 = load i32, ptr %29, align 4, !tbaa !11
  %755 = load i32, ptr %19, align 4, !tbaa !11
  %756 = srem i32 %754, %755
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %748, i32 noundef 6410, ptr noundef @.str.223, i32 noundef %749, i32 noundef %750, i32 noundef %753, i32 noundef %756)
  br label %757

757:                                              ; preds = %747, %737
  %758 = load i32, ptr %25, align 4, !tbaa !11
  %759 = icmp ne i32 %758, 0
  br i1 %759, label %760, label %763

760:                                              ; preds = %757
  %761 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !26
  %762 = load i32, ptr %25, align 4, !tbaa !11
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %761, i32 noundef 8051, ptr noundef @.str.224, i32 noundef %762)
  br label %763

763:                                              ; preds = %760, %757
  %764 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !26
  %765 = load i32, ptr %28, align 4, !tbaa !11
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %764, i32 noundef 8033, ptr noundef @.str.225, i32 noundef %765)
  %766 = load i32, ptr %26, align 4, !tbaa !11
  %767 = icmp ne i32 %766, 0
  br i1 %767, label %768, label %771

768:                                              ; preds = %763
  %769 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !26
  %770 = load i32, ptr %26, align 4, !tbaa !11
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %769, i32 noundef 8052, ptr noundef @.str.226, i32 noundef %770)
  br label %771

771:                                              ; preds = %768, %763
  %772 = load i32, ptr %27, align 4, !tbaa !11
  %773 = icmp ne i32 %772, 0
  br i1 %773, label %774, label %777

774:                                              ; preds = %771
  %775 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !26
  %776 = load i32, ptr %27, align 4, !tbaa !11
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %775, i32 noundef 8053, ptr noundef @.str.227, i32 noundef %776)
  br label %777

777:                                              ; preds = %774, %771
  %778 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 1), align 4, !tbaa !43
  %779 = icmp ne i32 %778, 0
  br i1 %779, label %780, label %783

780:                                              ; preds = %777
  %781 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !26
  %782 = load i32, ptr %22, align 4, !tbaa !11
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %781, i32 noundef 8054, ptr noundef @.str.228, i32 noundef %782)
  br label %785

783:                                              ; preds = %777
  %784 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !26
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %784, i32 noundef 8077, ptr noundef @.str.229)
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %785

785:                                              ; preds = %783, %780
  %786 = load i32, ptr %22, align 4, !tbaa !11
  store i32 %786, ptr %20, align 4, !tbaa !11
  %787 = load i32, ptr %36, align 4, !tbaa !11
  %788 = icmp ne i32 %787, 0
  br i1 %788, label %789, label %814

789:                                              ; preds = %785
  %790 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 8), align 4, !tbaa !31
  %791 = icmp ne i32 %790, 0
  br i1 %791, label %792, label %814

792:                                              ; preds = %789
  %793 = load i32, ptr %29, align 4, !tbaa !11
  %794 = load i32, ptr %19, align 4, !tbaa !11
  %795 = srem i32 %793, %794
  store i32 %795, ptr %23, align 4, !tbaa !11
  br label %796

796:                                              ; preds = %800, %792
  %797 = load i32, ptr %23, align 4, !tbaa !11
  %798 = add nsw i32 %797, -1
  store i32 %798, ptr %23, align 4, !tbaa !11
  %799 = icmp ne i32 %797, 0
  br i1 %799, label %800, label %810

800:                                              ; preds = %796
  %801 = load ptr, ptr %8, align 8, !tbaa !5
  %802 = getelementptr inbounds double, ptr %801, i32 -1
  store ptr %802, ptr %8, align 8, !tbaa !5
  %803 = load double, ptr %802, align 8, !tbaa !9
  %804 = load ptr, ptr %9, align 8, !tbaa !5
  %805 = load i32, ptr %23, align 4, !tbaa !11
  %806 = sext i32 %805 to i64
  %807 = getelementptr inbounds double, ptr %804, i64 %806
  %808 = load double, ptr %807, align 8, !tbaa !9
  %809 = fsub double %808, %803
  store double %809, ptr %807, align 8, !tbaa !9
  br label %796, !llvm.loop !44

810:                                              ; preds = %796
  %811 = load i32, ptr %22, align 4, !tbaa !11
  %812 = add nsw i32 %811, 1
  %813 = load ptr, ptr %4, align 8, !tbaa !5
  store i32 %812, ptr %813, align 4, !tbaa !11
  br label %824

814:                                              ; preds = %789, %785
  %815 = load i32, ptr %29, align 4, !tbaa !11
  %816 = load i32, ptr %19, align 4, !tbaa !11
  %817 = srem i32 %815, %816
  %818 = load ptr, ptr %8, align 8, !tbaa !5
  %819 = sext i32 %817 to i64
  %820 = sub i64 0, %819
  %821 = getelementptr inbounds double, ptr %818, i64 %820
  store ptr %821, ptr %8, align 8, !tbaa !5
  %822 = load i32, ptr %22, align 4, !tbaa !11
  %823 = load ptr, ptr %4, align 8, !tbaa !5
  store i32 %822, ptr %823, align 4, !tbaa !11
  br label %824

824:                                              ; preds = %814, %810
  br label %825

825:                                              ; preds = %824, %717
  %826 = load i32, ptr %36, align 4, !tbaa !11
  %827 = icmp ne i32 %826, 0
  br i1 %827, label %828, label %883

828:                                              ; preds = %825
  %829 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 8), align 4, !tbaa !31
  %830 = icmp ne i32 %829, 0
  br i1 %830, label %831, label %883

831:                                              ; preds = %828
  %832 = load ptr, ptr %5, align 8, !tbaa !5
  %833 = load i32, ptr %832, align 4, !tbaa !11
  %834 = sub nsw i32 %833, 1
  store i32 %834, ptr %23, align 4, !tbaa !11
  br label %835

835:                                              ; preds = %839, %831
  %836 = load i32, ptr %23, align 4, !tbaa !11
  %837 = add nsw i32 %836, -1
  store i32 %837, ptr %23, align 4, !tbaa !11
  %838 = icmp ne i32 %836, 0
  br i1 %838, label %839, label %848

839:                                              ; preds = %835
  %840 = load i32, ptr %20, align 4, !tbaa !11
  %841 = sitofp i32 %840 to double
  %842 = load ptr, ptr %9, align 8, !tbaa !5
  %843 = load i32, ptr %23, align 4, !tbaa !11
  %844 = sext i32 %843 to i64
  %845 = getelementptr inbounds double, ptr %842, i64 %844
  %846 = load double, ptr %845, align 8, !tbaa !9
  %847 = fdiv double %846, %841
  store double %847, ptr %845, align 8, !tbaa !9
  br label %835, !llvm.loop !45

848:                                              ; preds = %835
  %849 = load ptr, ptr %8, align 8, !tbaa !5
  %850 = load ptr, ptr %9, align 8, !tbaa !5
  %851 = icmp eq ptr %849, %850
  br i1 %851, label %852, label %859

852:                                              ; preds = %848
  %853 = load ptr, ptr %5, align 8, !tbaa !5
  %854 = load i32, ptr %853, align 4, !tbaa !11
  %855 = sub nsw i32 %854, 1
  %856 = load ptr, ptr %8, align 8, !tbaa !5
  %857 = sext i32 %855 to i64
  %858 = getelementptr inbounds double, ptr %856, i64 %857
  store ptr %858, ptr %8, align 8, !tbaa !5
  br label %878

859:                                              ; preds = %848
  store i32 0, ptr %23, align 4, !tbaa !11
  br label %860

860:                                              ; preds = %874, %859
  %861 = load i32, ptr %23, align 4, !tbaa !11
  %862 = load ptr, ptr %5, align 8, !tbaa !5
  %863 = load i32, ptr %862, align 4, !tbaa !11
  %864 = sub nsw i32 %863, 1
  %865 = icmp slt i32 %861, %864
  br i1 %865, label %866, label %877

866:                                              ; preds = %860
  %867 = load ptr, ptr %9, align 8, !tbaa !5
  %868 = load i32, ptr %23, align 4, !tbaa !11
  %869 = sext i32 %868 to i64
  %870 = getelementptr inbounds double, ptr %867, i64 %869
  %871 = load double, ptr %870, align 8, !tbaa !9
  %872 = load ptr, ptr %8, align 8, !tbaa !5
  %873 = getelementptr inbounds double, ptr %872, i32 1
  store ptr %873, ptr %8, align 8, !tbaa !5
  store double %871, ptr %872, align 8, !tbaa !9
  br label %874

874:                                              ; preds = %866
  %875 = load i32, ptr %23, align 4, !tbaa !11
  %876 = add nsw i32 %875, 1
  store i32 %876, ptr %23, align 4, !tbaa !11
  br label %860, !llvm.loop !46

877:                                              ; preds = %860
  br label %878

878:                                              ; preds = %877, %852
  %879 = load double, ptr %11, align 8, !tbaa !9
  %880 = fmul double %879, 1.100000e+00
  %881 = load ptr, ptr %8, align 8, !tbaa !5
  %882 = getelementptr inbounds double, ptr %881, i32 1
  store ptr %882, ptr %8, align 8, !tbaa !5
  store double %880, ptr %881, align 8, !tbaa !9
  br label %883

883:                                              ; preds = %878, %828, %825
  %884 = call i32 @strcmp(ptr noundef getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 119), ptr noundef @.str.230) #9
  %885 = icmp ne i32 %884, 0
  br i1 %885, label %888, label %886

886:                                              ; preds = %883
  %887 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !26
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %887, i32 noundef 8055, ptr noundef @.str.231)
  br label %888

888:                                              ; preds = %886, %883
  %889 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 229), align 8, !tbaa !35
  call void @qh_free(ptr noundef %889)
  store ptr null, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 229), align 8, !tbaa !35
  %890 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 231), align 8, !tbaa !33
  %891 = icmp ne ptr %890, null
  br i1 %891, label %892, label %894

892:                                              ; preds = %888
  %893 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 231), align 8, !tbaa !33
  call void @qh_free(ptr noundef %893)
  store ptr null, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 231), align 8, !tbaa !33
  br label %894

894:                                              ; preds = %892, %888
  store ptr null, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 232), align 8, !tbaa !36
  %895 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 29), align 8, !tbaa !47
  %896 = icmp sge i32 %895, 1
  br i1 %896, label %897, label %901

897:                                              ; preds = %894
  %898 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !26
  %899 = load i32, ptr %20, align 4, !tbaa !11
  %900 = load i32, ptr %19, align 4, !tbaa !11
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %898, i32 noundef 1008, ptr noundef @.str.232, i32 noundef %899, i32 noundef %900)
  br label %901

901:                                              ; preds = %897, %894
  %902 = load ptr, ptr %7, align 8, !tbaa !5
  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 4, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 201, 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
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  ret ptr %902
}

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(i32 noundef) #3

declare i32 @qh_sethalfspace(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, !6, i64 2984, !12, i64 2992}
!15 = !{!"long", !7, i64 0}
!16 = !{!14, !12, i64 440}
!17 = !{!14, !12, i64 48}
!18 = !{!14, !6, i64 2408}
!19 = !{!14, !12, 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 = !{!14, !6, i64 2424}
!27 = distinct !{!27, !24}
!28 = distinct !{!28, !24}
!29 = distinct !{!29, !24}
!30 = !{!14, !12, i64 436}
!31 = !{!14, !12, i64 36}
!32 = !{!14, !12, i64 2440}
!33 = !{!14, !6, i64 2880}
!34 = !{!14, !12, i64 2872}
!35 = !{!14, !6, i64 2864}
!36 = !{!14, !6, i64 2888}
!37 = distinct !{!37, !24}
!38 = distinct !{!38, !24}
!39 = distinct !{!39, !24}
!40 = !{!14, !6, i64 616}
!41 = distinct !{!41, !24}
!42 = distinct !{!42, !24}
!43 = !{!14, !12, i64 4}
!44 = distinct !{!44, !24}
!45 = distinct !{!45, !24}
!46 = distinct !{!46, !24}
!47 = !{!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"

%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, ptr, i32 }
%struct.__jmp_buf_tag = type { [8 x i64], i32, %struct.__sigset_t }
%struct.__sigset_t = type { [16 x i64] }

@qh_qh = external global %struct.qhT, align 8
@.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 [363 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, i32 noundef, ptr noundef, ...) local_unnamed_addr #1

declare void @qh_errexit(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(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 nocapture noundef %0, ptr nocapture noundef %1, ptr nocapture noundef writeonly %2) local_unnamed_addr #3 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca [201 x i8], align 16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #11
  store ptr null, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #11
  call void @llvm.lifetime.start.p0(i64 201, ptr nonnull %7) #11
  %8 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 80), align 8, !tbaa !9
  %9 = icmp ne i32 %8, 0
  %10 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 440), align 8
  %.not = icmp eq i32 %10, 0
  %11 = select i1 %9, i1 %.not, i1 false
  %12 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 48), align 8, !tbaa !14
  %.not288 = icmp eq i32 %12, 0
  br i1 %.not288, label %.thread.preheader, label %.preheader391

.preheader391:                                    ; preds = %3
  %13 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2408), align 8, !tbaa !15
  %14 = call ptr @fgets(ptr noundef nonnull %7, i32 noundef 200, ptr noundef %13)
  store ptr %14, ptr %5, align 8, !tbaa !5
  %.not289450 = icmp eq ptr %14, null
  br i1 %.not289450, label %._crit_edge454, label %.lr.ph453

.lr.ph453:                                        ; preds = %.preheader391, %57
  %15 = phi ptr [ %59, %57 ], [ %14, %.preheader391 ]
  %.0221452 = phi i32 [ %.1222, %57 ], [ 0, %.preheader391 ]
  %.0257451 = phi i32 [ %.1258, %57 ], [ 0, %.preheader391 ]
  %16 = add nsw i32 %.0221452, 1
  %17 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 128), align 8, !tbaa !16
  %18 = icmp ne i32 %17, 0
  %19 = icmp eq i32 %.0221452, 0
  %or.cond = select i1 %18, i1 %19, i1 false
  br i1 %or.cond, label %20, label %51

20:                                               ; preds = %.lr.ph453
  %21 = tail call ptr @__ctype_b_loc() #12
  %22 = load ptr, ptr %21, align 8, !tbaa !5
  %23 = load i8, ptr %15, align 1, !tbaa !17
  %24 = sext i8 %23 to i64
  %25 = getelementptr inbounds i16, ptr %22, i64 %24
  %26 = load i16, ptr %25, align 2, !tbaa !18
  %27 = and i16 %26, 2048
  %.not290 = icmp eq i16 %27, 0
  br i1 %.not290, label %51, label %28

28:                                               ; preds = %20
  %29 = call i32 @qh_strtol(ptr noundef nonnull %15, ptr noundef nonnull %5) #11
  %30 = load ptr, ptr %21, align 8, !tbaa !5
  %31 = load ptr, ptr %5, align 8, !tbaa !5
  %32 = load i8, ptr %31, align 1, !tbaa !17
  %33 = sext i8 %32 to i64
  %34 = getelementptr inbounds i16, ptr %30, i64 %33
  %35 = load i16, ptr %34, align 2, !tbaa !18
  %36 = and i16 %35, 8192
  %.not364449 = icmp eq i16 %36, 0
  br i1 %.not364449, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %28, %.lr.ph
  %37 = phi ptr [ %38, %.lr.ph ], [ %31, %28 ]
  %38 = getelementptr inbounds i8, ptr %37, i64 1
  store ptr %38, ptr %5, align 8, !tbaa !5
  %39 = load ptr, ptr %21, align 8, !tbaa !5
  %40 = load i8, ptr %38, align 1, !tbaa !17
  %41 = sext i8 %40 to i64
  %42 = getelementptr inbounds i16, ptr %39, i64 %41
  %43 = load i16, ptr %42, align 2, !tbaa !18
  %44 = and i16 %43, 8192
  %.not364 = icmp eq i16 %44, 0
  br i1 %.not364, label %._crit_edge, label %.lr.ph, !llvm.loop !20

._crit_edge:                                      ; preds = %.lr.ph, %28
  %.lcssa445 = phi ptr [ %31, %28 ], [ %38, %.lr.ph ]
  %45 = call i32 @qh_strtol(ptr noundef nonnull %.lcssa445, ptr noundef nonnull %5) #11
  %46 = icmp eq i32 %45, 1
  br i1 %46, label %47, label %57

47:                                               ; preds = %._crit_edge
  %48 = load ptr, ptr %5, align 8, !tbaa !5
  %49 = call i32 @qh_readfeasible(i32 noundef %29, ptr noundef %48)
  %50 = add nsw i32 %49, 1
  br label %57

51:                                               ; preds = %20, %.lr.ph453
  %bcmp = call i32 @bcmp(ptr noundef nonnull dereferenceable(5) %7, ptr noundef nonnull dereferenceable(5) @.str.205, i64 5)
  %.not291 = icmp eq i32 %bcmp, 0
  br i1 %.not291, label %.thread.preheader, label %52

52:                                               ; preds = %51
  %bcmp292 = call i32 @bcmp(ptr noundef nonnull dereferenceable(5) %7, ptr noundef nonnull dereferenceable(5) @.str.206, i64 5)
  %.not293 = icmp eq i32 %bcmp292, 0
  br i1 %.not293, label %.thread.preheader, label %53

53:                                               ; preds = %52
  %54 = load i8, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 936), align 8, !tbaa !17
  %.not363 = icmp eq i8 %54, 0
  br i1 %.not363, label %55, label %57

55:                                               ; preds = %53
  %56 = call ptr @strncat(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @qh_qh, i64 936), ptr noundef nonnull dereferenceable(1) %15, i64 noundef 255) #11
  br label %57

57:                                               ; preds = %._crit_edge, %55, %53, %47
  %.1258 = phi i32 [ %29, %47 ], [ %.0257451, %53 ], [ %.0257451, %55 ], [ 0, %._crit_edge ]
  %.1222 = phi i32 [ %50, %47 ], [ %16, %53 ], [ %16, %55 ], [ 1, %._crit_edge ]
  %58 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2408), align 8, !tbaa !15
  %59 = call ptr @fgets(ptr noundef nonnull %7, i32 noundef 200, ptr noundef %58)
  store ptr %59, ptr %5, align 8, !tbaa !5
  %.not289 = icmp eq ptr %59, null
  br i1 %.not289, label %._crit_edge454, label %.lr.ph453, !llvm.loop !22

._crit_edge454:                                   ; preds = %57, %.preheader391
  %.0257.lcssa = phi i32 [ 0, %.preheader391 ], [ %.1258, %57 ]
  %.0221.lcssa = phi i32 [ 0, %.preheader391 ], [ %.1222, %57 ]
  %60 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !23
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %60, i32 noundef 6074, ptr noundef nonnull @.str.207) #11
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null) #11
  br label %.thread.preheader

.thread.preheader:                                ; preds = %52, %51, %._crit_edge454, %3
  %.4225485.ph = phi i32 [ 0, %3 ], [ %.0221.lcssa, %._crit_edge454 ], [ %16, %51 ], [ %16, %52 ]
  %.3260483.ph = phi i32 [ 0, %3 ], [ %.0257.lcssa, %._crit_edge454 ], [ %.0257451, %51 ], [ %.0257451, %52 ]
  br label %.thread

.thread:                                          ; preds = %.thread.preheader, %.loopexit390
  %.0212486 = phi i32 [ %.1, %.loopexit390 ], [ 0, %.thread.preheader ]
  %.4225485 = phi i32 [ %.5422, %.loopexit390 ], [ %.4225485.ph, %.thread.preheader ]
  %.0237484 = phi i32 [ %.1238, %.loopexit390 ], [ 0, %.thread.preheader ]
  %.3260483 = phi i32 [ %.4261424, %.loopexit390 ], [ %.3260483.ph, %.thread.preheader ]
  %.0269481 = phi i32 [ %.1270426, %.loopexit390 ], [ 0, %.thread.preheader ]
  %61 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2408), align 8, !tbaa !15
  %62 = call ptr @fgets(ptr noundef nonnull %7, i32 noundef 200, ptr noundef %61)
  store ptr %62, ptr %5, align 8, !tbaa !5
  %.not296 = icmp eq ptr %62, null
  br i1 %.not296, label %.critedge.thread, label %63

63:                                               ; preds = %.thread
  %64 = add nsw i32 %.4225485, 1
  %bcmp297 = call i32 @bcmp(ptr noundef nonnull dereferenceable(5) %62, ptr noundef nonnull dereferenceable(5) @.str.205, i64 5)
  %.not298 = icmp eq i32 %bcmp297, 0
  br i1 %.not298, label %66, label %65

65:                                               ; preds = %63
  %bcmp299 = call i32 @bcmp(ptr noundef nonnull dereferenceable(5) %62, ptr noundef nonnull dereferenceable(5) @.str.206, i64 5)
  %.not300 = icmp eq i32 %bcmp299, 0
  br i1 %.not300, label %66, label %67

66:                                               ; preds = %65, %63
  br label %67

67:                                               ; preds = %66, %65
  %.1 = phi i32 [ %.0212486, %65 ], [ 1, %66 ]
  %68 = load i8, ptr %62, align 1, !tbaa !17
  %.not301463 = icmp eq i8 %68, 0
  br i1 %.not301463, label %.loopexit390, label %.preheader389.lr.ph

.preheader389.lr.ph:                              ; preds = %67
  %69 = tail call ptr @__ctype_b_loc() #12
  br label %.preheader389

.preheader389:                                    ; preds = %.preheader389.lr.ph, %105
  %70 = phi i8 [ %68, %.preheader389.lr.ph ], [ %107, %105 ]
  %71 = phi ptr [ %62, %.preheader389.lr.ph ], [ %106, %105 ]
  %.5466 = phi i32 [ %64, %.preheader389.lr.ph ], [ %.6, %105 ]
  %.4261465 = phi i32 [ %.3260483, %.preheader389.lr.ph ], [ %.5262, %105 ]
  %.1270464 = phi i32 [ %.0269481, %.preheader389.lr.ph ], [ %.2271, %105 ]
  %72 = load ptr, ptr %69, align 8, !tbaa !5
  %73 = sext i8 %70 to i64
  %74 = getelementptr inbounds i16, ptr %72, i64 %73
  %75 = load i16, ptr %74, align 2, !tbaa !18
  %76 = zext i16 %75 to i32
  %77 = and i32 %76, 8192
  %.not302457 = icmp eq i32 %77, 0
  br i1 %.not302457, label %._crit_edge459.thread, label %.lr.ph458

.lr.ph458:                                        ; preds = %.preheader389, %.lr.ph458
  %78 = phi ptr [ %79, %.lr.ph458 ], [ %71, %.preheader389 ]
  %79 = getelementptr inbounds i8, ptr %78, i64 1
  store ptr %79, ptr %5, align 8, !tbaa !5
  %80 = load ptr, ptr %69, align 8, !tbaa !5
  %81 = load i8, ptr %79, align 1, !tbaa !17
  %82 = sext i8 %81 to i64
  %83 = getelementptr inbounds i16, ptr %80, i64 %82
  %84 = load i16, ptr %83, align 2, !tbaa !18
  %85 = zext i16 %84 to i32
  %86 = and i32 %85, 8192
  %.not302 = icmp eq i32 %86, 0
  br i1 %.not302, label %._crit_edge459, label %.lr.ph458, !llvm.loop !24

._crit_edge459:                                   ; preds = %.lr.ph458
  %.not303 = icmp eq i8 %81, 0
  br i1 %.not303, label %.loopexit390, label %._crit_edge459.thread

._crit_edge459.thread:                            ; preds = %.preheader389, %._crit_edge459
  %.lcssa418576 = phi i32 [ %85, %._crit_edge459 ], [ %76, %.preheader389 ]
  %.lcssa420575 = phi ptr [ %79, %._crit_edge459 ], [ %71, %.preheader389 ]
  %87 = and i32 %.lcssa418576, 2048
  %.not304 = icmp eq i32 %87, 0
  br i1 %.not304, label %88, label %92

88:                                               ; preds = %._crit_edge459.thread
  %89 = load i8, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 936), align 8, !tbaa !17
  %.not305 = icmp eq i8 %89, 0
  br i1 %.not305, label %90, label %.loopexit390

90:                                               ; preds = %88
  %91 = call ptr @strncat(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @qh_qh, i64 936), ptr noundef nonnull dereferenceable(1) %.lcssa420575, i64 noundef 255) #11
  br label %.loopexit390

92:                                               ; preds = %._crit_edge459.thread
  %.not306 = icmp eq i32 %.1270464, 0
  %93 = call i32 @qh_strtol(ptr noundef nonnull %.lcssa420575, ptr noundef nonnull %5) #11
  br i1 %.not306, label %105, label %94

94:                                               ; preds = %92
  %95 = icmp ne i32 %93, 1
  %96 = icmp slt i32 %.1270464, 2
  %or.cond3.not311 = select i1 %95, i1 true, i1 %96
  %97 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 128), align 8
  %98 = icmp eq i32 %97, 0
  %or.cond5.not308 = select i1 %or.cond3.not311, i1 true, i1 %98
  %99 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 48), align 8
  %100 = icmp ne i32 %99, 0
  %or.cond7 = select i1 %or.cond5.not308, i1 true, i1 %100
  br i1 %or.cond7, label %.loopexit390, label %101

101:                                              ; preds = %94
  %102 = load ptr, ptr %5, align 8, !tbaa !5
  %103 = call i32 @qh_readfeasible(i32 noundef %.1270464, ptr noundef %102)
  %104 = add nsw i32 %103, %.5466
  br label %105

105:                                              ; preds = %92, %101
  %.2271 = phi i32 [ 0, %101 ], [ %93, %92 ]
  %.5262 = phi i32 [ %.1270464, %101 ], [ %.4261465, %92 ]
  %.6 = phi i32 [ %104, %101 ], [ %.5466, %92 ]
  %106 = load ptr, ptr %5, align 8, !tbaa !5
  %107 = load i8, ptr %106, align 1, !tbaa !17
  %.not301 = icmp eq i8 %107, 0
  br i1 %.not301, label %.loopexit390, label %.preheader389, !llvm.loop !25

.loopexit390:                                     ; preds = %105, %._crit_edge459, %94, %67, %88, %90
  %.1270426 = phi i32 [ %.1270464, %88 ], [ %.1270464, %90 ], [ %.0269481, %67 ], [ %.2271, %105 ], [ %.1270464, %._crit_edge459 ], [ %.1270464, %94 ]
  %.4261424 = phi i32 [ %.4261465, %88 ], [ %.4261465, %90 ], [ %.3260483, %67 ], [ %.5262, %105 ], [ %.4261465, %._crit_edge459 ], [ %.4261465, %94 ]
  %.5422 = phi i32 [ %.5466, %88 ], [ %.5466, %90 ], [ %64, %67 ], [ %.6, %105 ], [ %.5466, %._crit_edge459 ], [ %.5466, %94 ]
  %.3266 = phi i32 [ 0, %88 ], [ 0, %90 ], [ 0, %67 ], [ 0, %105 ], [ 0, %._crit_edge459 ], [ %93, %94 ]
  %.1238 = phi i32 [ %.0237484, %88 ], [ %.5466, %90 ], [ %.0237484, %67 ], [ %.0237484, %94 ], [ %.0237484, %._crit_edge459 ], [ %.0237484, %105 ]
  %.not295 = icmp eq i32 %.3266, 0
  br i1 %.not295, label %.thread, label %.critedge, !llvm.loop !26

.critedge:                                        ; preds = %.loopexit390
  %.pr = load ptr, ptr %5, align 8, !tbaa !5
  %.not312 = icmp eq ptr %.pr, null
  br i1 %.not312, label %.critedge.thread, label %109

.critedge.thread:                                 ; preds = %.thread, %.critedge
  %.0269444 = phi i32 [ %.1270426, %.critedge ], [ %.0269481, %.thread ]
  %.0263441 = phi i32 [ %.3266, %.critedge ], [ 0, %.thread ]
  %.3260438 = phi i32 [ %.4261424, %.critedge ], [ %.3260483, %.thread ]
  %.0237435 = phi i32 [ %.1238, %.critedge ], [ %.0237484, %.thread ]
  %.4225432 = phi i32 [ %.5422, %.critedge ], [ %.4225485, %.thread ]
  %.0212429 = phi i32 [ %.1, %.critedge ], [ %.0212486, %.thread ]
  %108 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !23
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %108, i32 noundef 6075, ptr noundef nonnull @.str.208) #11
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null) #11
  br label %109

109:                                              ; preds = %.critedge.thread, %.critedge
  %.0269443 = phi i32 [ %.0269444, %.critedge.thread ], [ %.1270426, %.critedge ]
  %.0263440 = phi i32 [ %.0263441, %.critedge.thread ], [ %.3266, %.critedge ]
  %.3260437 = phi i32 [ %.3260438, %.critedge.thread ], [ %.4261424, %.critedge ]
  %.0237434 = phi i32 [ %.0237435, %.critedge.thread ], [ %.1238, %.critedge ]
  %.4225431 = phi i32 [ %.4225432, %.critedge.thread ], [ %.5422, %.critedge ]
  %.0212428 = phi i32 [ %.0212429, %.critedge.thread ], [ %.1, %.critedge ]
  %spec.select = call i32 @llvm.smin.i32(i32 %.0269443, i32 %.0263440)
  %spec.select365 = call i32 @llvm.smax.i32(i32 %.0269443, i32 %.0263440)
  %110 = icmp slt i32 %spec.select, 2
  br i1 %110, label %111, label %113

111:                                              ; preds = %109
  %112 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !23
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %112, i32 noundef 6220, ptr noundef nonnull @.str.209, i32 noundef %spec.select) #11
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null) #11
  br label %113

113:                                              ; preds = %111, %109
  %114 = add i32 %spec.select365, -2147483632
  %or.cond9 = icmp ult i32 %114, -2147483631
  br i1 %or.cond9, label %115, label %117

115:                                              ; preds = %113
  %116 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !23
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %116, i32 noundef 6411, ptr noundef nonnull @.str.210, i32 noundef 2147483631, i32 noundef %spec.select365, i32 noundef %spec.select) #11
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null) #11
  br label %117

117:                                              ; preds = %113, %115
  %118 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 128), align 8
  %119 = icmp ne i32 %118, 0
  %or.cond11 = select i1 %11, i1 %119, i1 false
  br i1 %or.cond11, label %120, label %122

120:                                              ; preds = %117
  %121 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !23
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %121, i32 noundef 6037, ptr noundef nonnull @.str.211) #11
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null) #11
  br label %144

122:                                              ; preds = %117
  br i1 %11, label %123, label %129

123:                                              ; preds = %122
  store i32 0, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 436), align 4, !tbaa !27
  %124 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 48), align 8, !tbaa !14
  %.not316 = icmp eq i32 %124, 0
  %125 = zext i1 %.not316 to i32
  %storemerge317 = add nsw i32 %spec.select, %125
  store i32 %storemerge317, ptr %1, align 4, !tbaa !28
  store i32 %spec.select365, ptr %0, align 4, !tbaa !28
  %126 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 36), align 4, !tbaa !29
  %.not318 = icmp eq i32 %126, 0
  br i1 %.not318, label %144, label %127

127:                                              ; preds = %123
  %128 = add nsw i32 %spec.select365, 1
  store i32 %128, ptr %0, align 4, !tbaa !28
  br label %144

129:                                              ; preds = %122
  br i1 %119, label %130, label %141

130:                                              ; preds = %129
  %131 = add nsw i32 %spec.select, -1
  store i32 %131, ptr %1, align 4, !tbaa !28
  store i32 %spec.select365, ptr %0, align 4, !tbaa !28
  %132 = icmp slt i32 %spec.select, 3
  br i1 %132, label %133, label %135

133:                                              ; preds = %130
  %134 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !23
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %134, i32 noundef 6221, ptr noundef nonnull @.str.212, i32 noundef %spec.select) #11
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null) #11
  br label %135

135:                                              ; preds = %133, %130
  %.not314 = icmp eq i32 %.3260437, 0
  %136 = load i32, ptr %1, align 4, !tbaa !28
  br i1 %.not314, label %140, label %137

137:                                              ; preds = %135
  %.not315 = icmp eq i32 %.3260437, %136
  br i1 %.not315, label %144, label %138

138:                                              ; preds = %137
  %139 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !23
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %139, i32 noundef 6222, ptr noundef nonnull @.str.213, i32 noundef %.3260437, i32 noundef %spec.select) #11
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null) #11
  br label %144

140:                                              ; preds = %135
  call void @qh_setfeasible(i32 noundef %136)
  br label %144

141:                                              ; preds = %129
  %142 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 48), align 8, !tbaa !14
  %.not313 = icmp ne i32 %142, 0
  %143 = sext i1 %.not313 to i32
  %storemerge = add nsw i32 %spec.select, %143
  store i32 %storemerge, ptr %1, align 4, !tbaa !28
  store i32 %spec.select365, ptr %0, align 4, !tbaa !28
  br label %144

144:                                              ; preds = %127, %123, %140, %138, %137, %141, %120
  %145 = load i32, ptr %1, align 4, !tbaa !28
  %146 = shl nsw i32 %145, 3
  store i32 %146, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2440), align 8, !tbaa !30
  %147 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 128), align 8, !tbaa !16
  %.not319 = icmp eq i32 %147, 0
  br i1 %.not319, label %159, label %148

148:                                              ; preds = %144
  %149 = sext i32 %146 to i64
  %150 = add nsw i64 %149, 8
  %151 = call ptr @qh_malloc(i64 noundef %150) #11
  store ptr %151, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2880), align 8, !tbaa !31
  %152 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 48), align 8, !tbaa !14
  %.not320 = icmp eq i32 %152, 0
  br i1 %.not320, label %155, label %153

153:                                              ; preds = %148
  %154 = getelementptr inbounds i8, ptr %151, i64 8
  br label %159

155:                                              ; preds = %148
  %156 = load i32, ptr %1, align 4, !tbaa !28
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds double, ptr %151, i64 %157
  br label %159

159:                                              ; preds = %153, %155, %144
  %.0274 = phi ptr [ %151, %153 ], [ %158, %155 ], [ null, %144 ]
  %.0273 = phi ptr [ %154, %153 ], [ %151, %155 ], [ null, %144 ]
  %.0251 = phi ptr [ %151, %153 ], [ %151, %155 ], [ null, %144 ]
  %160 = mul nsw i32 %spec.select, 21
  %spec.store.select = call i32 @llvm.smax.i32(i32 %160, i32 500)
  store i32 %spec.store.select, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2872), align 8
  %161 = add nuw nsw i32 %spec.store.select, 1
  %162 = zext nneg i32 %161 to i64
  %163 = call ptr @qh_malloc(i64 noundef %162) #11
  store ptr %163, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2864), align 8, !tbaa !32
  store i32 1, ptr %2, align 4, !tbaa !28
  %164 = load i32, ptr %0, align 4, !tbaa !28
  %165 = load i32, ptr %1, align 4, !tbaa !28
  %166 = mul nsw i32 %165, %164
  %167 = sext i32 %166 to i64
  %168 = shl nsw i64 %167, 3
  %169 = call ptr @qh_malloc(i64 noundef %168) #11
  store ptr %169, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2888), align 8, !tbaa !33
  store ptr %169, ptr %4, align 8, !tbaa !5
  %170 = icmp ne ptr %169, null
  %171 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2864), align 8
  %172 = icmp ne ptr %171, null
  %or.cond13 = select i1 %170, i1 %172, i1 false
  br i1 %or.cond13, label %173, label %178

173:                                              ; preds = %159
  %174 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 128), align 8, !tbaa !16
  %175 = icmp eq i32 %174, 0
  %176 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2880), align 8
  %177 = icmp ne ptr %176, null
  %or.cond15 = select i1 %175, i1 true, i1 %177
  br i1 %or.cond15, label %180, label %178

178:                                              ; preds = %173, %159
  %179 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !23
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %179, i32 noundef 6076, ptr noundef nonnull @.str.214, i32 noundef %spec.select365) #11
  call void @qh_errexit(i32 noundef 4, ptr noundef null, ptr noundef null) #11
  br label %180

180:                                              ; preds = %178, %173
  %181 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 36), align 4
  %182 = icmp ne i32 %181, 0
  %or.cond17 = select i1 %11, i1 %182, i1 false
  br i1 %or.cond17, label %183, label %.loopexit388

183:                                              ; preds = %180
  %184 = load i32, ptr %1, align 4, !tbaa !28
  %185 = mul i32 %184, %spec.select365
  %186 = sext i32 %185 to i64
  %187 = getelementptr inbounds double, ptr %169, i64 %186
  %188 = add nsw i32 %184, -1
  %.not321487 = icmp eq i32 %188, 0
  br i1 %.not321487, label %.loopexit388, label %.lr.ph490.preheader

.lr.ph490.preheader:                              ; preds = %183
  %189 = add i32 %184, -2
  %190 = sext i32 %189 to i64
  %191 = add nsw i64 %186, %190
  %192 = zext i32 %189 to i64
  %193 = sub nsw i64 %191, %192
  %194 = shl nsw i64 %193, 3
  %scevgep = getelementptr i8, ptr %169, i64 %194
  %195 = zext i32 %188 to i64
  %196 = shl nuw nsw i64 %195, 3
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep, i8 0, i64 %196, i1 false), !tbaa !34
  br label %.loopexit388

.loopexit388:                                     ; preds = %.lr.ph490.preheader, %183, %180
  %.0 = phi ptr [ null, %180 ], [ %187, %183 ], [ %187, %.lr.ph490.preheader ]
  %.0702 = ptrtoint ptr %.0 to i64
  %197 = mul i32 %.0263440, %.0269443
  %.not329 = icmp eq i32 %.0212428, 0
  br label %198

198:                                              ; preds = %.backedge, %.loopexit388
  %.1252 = phi ptr [ %.0251, %.loopexit388 ], [ %.2253.ph.ph, %.backedge ]
  %.0242 = phi double [ 0xFFEFFFFFFFFFFFFF, %.loopexit388 ], [ %.1243.ph.ph.ph, %.backedge ]
  %.2239 = phi i32 [ %.0237434, %.loopexit388 ], [ %.4241, %.backedge ]
  %.0234 = phi i32 [ 0, %.loopexit388 ], [ %spec.select369, %.backedge ]
  %.0231 = phi i32 [ 0, %.loopexit388 ], [ %.1232.ph.ph.ph.ph, %.backedge ]
  %.0228 = phi i32 [ 0, %.loopexit388 ], [ %.1229, %.backedge ]
  %.0226 = phi i32 [ 0, %.loopexit388 ], [ %.1227, %.backedge ]
  %.7 = phi i32 [ %.4225431, %.loopexit388 ], [ %.8, %.backedge ]
  %.0218 = phi double [ 0.000000e+00, %.loopexit388 ], [ %.1219.ph.ph, %.backedge ]
  %.0216 = phi i32 [ 0, %.loopexit388 ], [ %.1217.ph, %.backedge ]
  %.not322 = phi i1 [ false, %.loopexit388 ], [ true, %.backedge ]
  br i1 %.not322, label %199, label %.thread373

199:                                              ; preds = %198
  %200 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2864), align 8, !tbaa !32
  %201 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2872), align 8, !tbaa !35
  %202 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2408), align 8, !tbaa !15
  %203 = call ptr @fgets(ptr noundef %200, i32 noundef %201, ptr noundef %202)
  store ptr %203, ptr %5, align 8, !tbaa !5
  %.not323 = icmp eq ptr %203, null
  br i1 %.not323, label %341, label %205

.thread373:                                       ; preds = %198
  %204 = load ptr, ptr %5, align 8, !tbaa !5
  %.not323374 = icmp eq ptr %204, null
  br i1 %.not323374, label %341, label %.thread375

205:                                              ; preds = %199
  %206 = add nsw i32 %.7, 1
  %207 = load i8, ptr %203, align 1, !tbaa !17
  switch i8 %207, label %.thread375 [
    i8 101, label %208
    i8 69, label %208
  ]

208:                                              ; preds = %205, %205
  %bcmp324 = call i32 @bcmp(ptr noundef nonnull dereferenceable(3) %203, ptr noundef nonnull dereferenceable(3) @.str.215, i64 3)
  %.not325 = icmp eq i32 %bcmp324, 0
  br i1 %.not325, label %210, label %209

209:                                              ; preds = %208
  %bcmp326 = call i32 @bcmp(ptr noundef nonnull dereferenceable(3) %203, ptr noundef nonnull dereferenceable(3) @.str.216, i64 3)
  %.not327 = icmp eq i32 %bcmp326, 0
  br i1 %.not327, label %210, label %.thread375

210:                                              ; preds = %209, %208
  %211 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 48), align 8, !tbaa !14
  %.not328 = icmp eq i32 %211, 0
  br i1 %.not328, label %212, label %341

212:                                              ; preds = %210
  br i1 %.not329, label %.thread375, label %213

213:                                              ; preds = %212
  %214 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !23
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %214, i32 noundef 7058, ptr noundef nonnull @.str.217) #11
  br label %.thread375

.thread375:                                       ; preds = %.thread373, %205, %213, %212, %209
  %.8 = phi i32 [ %206, %209 ], [ %206, %213 ], [ %206, %212 ], [ %206, %205 ], [ %.7, %.thread373 ]
  br label %.outer.outer.outer.outer

.outer.outer.outer.outer:                         ; preds = %327, %.thread375
  %.2253.ph.ph.ph.ph = phi ptr [ %.4255, %327 ], [ %.1252, %.thread375 ]
  %.1243.ph.ph.ph.ph = phi double [ %.3245, %327 ], [ %.0242, %.thread375 ]
  %.1232.ph.ph.ph.ph = phi i32 [ %spec.select368, %327 ], [ %.0231, %.thread375 ]
  %.1229.ph.ph.ph.ph = phi i32 [ %spec.select367, %327 ], [ %.0228, %.thread375 ]
  %.1227.ph.ph.ph.ph = phi i32 [ %248, %327 ], [ %.0226, %.thread375 ]
  %.1219.ph.ph.ph.ph = phi double [ %.3, %327 ], [ %.0218, %.thread375 ]
  %.1217.ph.ph.ph.ph = phi i32 [ 0, %327 ], [ %.0216, %.thread375 ]
  %215 = phi i1 [ false, %327 ], [ true, %.thread375 ]
  br label %.outer.outer.outer

.outer.outer.outer:                               ; preds = %.outer.outer.outer.outer, %._crit_edge499
  %.2253.ph.ph.ph = phi ptr [ %.4255, %._crit_edge499 ], [ %.2253.ph.ph.ph.ph, %.outer.outer.outer.outer ]
  %.1243.ph.ph.ph = phi double [ %.3245, %._crit_edge499 ], [ %.1243.ph.ph.ph.ph, %.outer.outer.outer.outer ]
  %.1229.ph.ph.ph = phi i32 [ %spec.select367, %._crit_edge499 ], [ %.1229.ph.ph.ph.ph, %.outer.outer.outer.outer ]
  %.1227.ph.ph.ph = phi i32 [ %248, %._crit_edge499 ], [ %.1227.ph.ph.ph.ph, %.outer.outer.outer.outer ]
  %.1219.ph.ph.ph = phi double [ %.3, %._crit_edge499 ], [ %.1219.ph.ph.ph.ph, %.outer.outer.outer.outer ]
  %.1217.ph.ph.ph = phi i32 [ 0, %._crit_edge499 ], [ %.1217.ph.ph.ph.ph, %.outer.outer.outer.outer ]
  br label %.outer.outer

.outer.outer:                                     ; preds = %.outer.outer.outer, %288
  %.2253.ph.ph = phi ptr [ %.3254, %288 ], [ %.2253.ph.ph.ph, %.outer.outer.outer ]
  %.1229.ph.ph = phi i32 [ %spec.select367, %288 ], [ %.1229.ph.ph.ph, %.outer.outer.outer ]
  %.1227.ph.ph = phi i32 [ %248, %288 ], [ %.1227.ph.ph.ph, %.outer.outer.outer ]
  %.1219.ph.ph = phi double [ %.2220, %288 ], [ %.1219.ph.ph.ph, %.outer.outer.outer ]
  %.1217.ph.ph = phi i32 [ %289, %288 ], [ %.1217.ph.ph.ph, %.outer.outer.outer ]
  br label %.outer

.outer:                                           ; preds = %.outer.outer, %.thread376
  %.1229.ph = phi i32 [ %spec.select367, %.thread376 ], [ %.1229.ph.ph, %.outer.outer ]
  %.1227.ph = phi i32 [ %248, %.thread376 ], [ %.1227.ph.ph, %.outer.outer ]
  %.1217.ph = phi i32 [ %291, %.thread376 ], [ %.1217.ph.ph, %.outer.outer ]
  %.pre = load ptr, ptr %5, align 8, !tbaa !5
  %.not344 = icmp slt i32 %.1227.ph, %197
  br label %216

216:                                              ; preds = %.outer, %247
  %217 = phi ptr [ %235, %247 ], [ %.pre, %.outer ]
  %.1229 = phi i32 [ %spec.select367, %247 ], [ %.1229.ph, %.outer ]
  %.1227 = phi i32 [ %248, %247 ], [ %.1227.ph, %.outer ]
  %218 = load i8, ptr %217, align 1, !tbaa !17
  %.not341 = icmp eq i8 %218, 0
  br i1 %.not341, label %.loopexit387, label %.preheader386

.preheader386:                                    ; preds = %216
  %219 = tail call ptr @__ctype_b_loc() #12
  %220 = load ptr, ptr %219, align 8, !tbaa !5
  %221 = sext i8 %218 to i64
  %222 = getelementptr inbounds i16, ptr %220, i64 %221
  %223 = load i16, ptr %222, align 2, !tbaa !18
  %224 = and i16 %223, 8192
  %.not342491 = icmp eq i16 %224, 0
  br i1 %.not342491, label %._crit_edge493, label %.lr.ph492

.lr.ph492:                                        ; preds = %.preheader386, %.lr.ph492
  %225 = phi ptr [ %226, %.lr.ph492 ], [ %217, %.preheader386 ]
  %226 = getelementptr inbounds i8, ptr %225, i64 1
  store ptr %226, ptr %5, align 8, !tbaa !5
  %227 = load ptr, ptr %219, align 8, !tbaa !5
  %228 = load i8, ptr %226, align 1, !tbaa !17
  %229 = sext i8 %228 to i64
  %230 = getelementptr inbounds i16, ptr %227, i64 %229
  %231 = load i16, ptr %230, align 2, !tbaa !18
  %232 = and i16 %231, 8192
  %.not342 = icmp eq i16 %232, 0
  br i1 %.not342, label %._crit_edge493, label %.lr.ph492, !llvm.loop !36

._crit_edge493:                                   ; preds = %.lr.ph492, %.preheader386
  %.lcssa = phi ptr [ %217, %.preheader386 ], [ %226, %.lr.ph492 ]
  %233 = call double @qh_strtod(ptr noundef nonnull %.lcssa, ptr noundef nonnull %6) #11
  %234 = load ptr, ptr %5, align 8, !tbaa !5
  %235 = load ptr, ptr %6, align 8, !tbaa !5
  %236 = icmp eq ptr %234, %235
  br i1 %236, label %237, label %247

237:                                              ; preds = %._crit_edge493
  %238 = load i8, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 936), align 8, !tbaa !17
  %.not355 = icmp eq i8 %238, 0
  br i1 %.not355, label %239, label %241

239:                                              ; preds = %237
  %240 = call ptr @strncat(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @qh_qh, i64 936), ptr noundef nonnull dereferenceable(1) %234, i64 noundef 255) #11
  br label %241

241:                                              ; preds = %239, %237
  %242 = load i8, ptr %234, align 1, !tbaa !17
  %243 = icmp eq i8 %242, 0
  %244 = icmp ne i32 %.2239, 0
  %or.cond19 = select i1 %243, i1 true, i1 %244
  %spec.select366 = select i1 %or.cond19, i32 %.2239, i32 %.8
  %245 = icmp eq i32 %.0234, 0
  %or.cond21.not358 = select i1 %215, i1 %245, i1 false
  %246 = icmp ne i32 %.1217.ph, 0
  %or.cond23 = select i1 %or.cond21.not358, i1 %246, i1 false
  %spec.select370 = select i1 %or.cond23, i32 %.8, i32 %.0234
  br label %.loopexit387

247:                                              ; preds = %._crit_edge493
  %.not343 = icmp eq i32 %.1229, 0
  %spec.select367 = select i1 %.not343, i32 %.8, i32 %.1229
  store ptr %235, ptr %5, align 8, !tbaa !5
  %248 = add nsw i32 %.1227, 1
  br i1 %.not344, label %249, label %216, !llvm.loop !37

249:                                              ; preds = %247
  %250 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 128), align 8, !tbaa !16
  %.not345 = icmp eq i32 %250, 0
  br i1 %.not345, label %258, label %251

251:                                              ; preds = %249
  %252 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 48), align 8, !tbaa !14
  %.not348 = icmp eq i32 %252, 0
  br i1 %.not348, label %256, label %253

253:                                              ; preds = %251
  %254 = fneg double %233
  %255 = getelementptr inbounds i8, ptr %.2253.ph.ph, i64 8
  store double %254, ptr %.2253.ph.ph, align 8, !tbaa !34
  br label %288

256:                                              ; preds = %251
  %257 = getelementptr inbounds i8, ptr %.2253.ph.ph, i64 8
  store double %233, ptr %.2253.ph.ph, align 8, !tbaa !34
  br label %288

258:                                              ; preds = %249
  %259 = load ptr, ptr %4, align 8, !tbaa !5
  %260 = getelementptr inbounds i8, ptr %259, i64 8
  store ptr %260, ptr %4, align 8, !tbaa !5
  store double %233, ptr %259, align 8, !tbaa !34
  %261 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 48), align 8, !tbaa !14
  %262 = icmp eq i32 %261, 0
  %263 = icmp ne i32 %.1217.ph, 0
  %or.cond25 = select i1 %262, i1 true, i1 %263
  br i1 %or.cond25, label %272, label %264

264:                                              ; preds = %258
  %265 = getelementptr inbounds i8, ptr %259, i64 8
  %266 = fcmp une double %233, 1.000000e+00
  br i1 %266, label %267, label %269

267:                                              ; preds = %264
  %268 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !23
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %268, i32 noundef 6077, ptr noundef nonnull @.str.218, i32 noundef %.8) #11
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null) #11
  %.pre570 = load ptr, ptr %4, align 8, !tbaa !5
  br label %269

269:                                              ; preds = %267, %264
  %270 = phi ptr [ %.pre570, %267 ], [ %265, %264 ]
  %271 = getelementptr inbounds i8, ptr %270, i64 -8
  store ptr %271, ptr %4, align 8, !tbaa !5
  br label %288

272:                                              ; preds = %258
  br i1 %11, label %273, label %.thread376

273:                                              ; preds = %272
  %274 = call double @llvm.fmuladd.f64(double %233, double %233, double %.1219.ph.ph)
  %275 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 36), align 4, !tbaa !29
  %.not346 = icmp eq i32 %275, 0
  br i1 %.not346, label %288, label %276

276:                                              ; preds = %273
  br i1 %262, label %283, label %277

277:                                              ; preds = %276
  %278 = add nsw i32 %.1217.ph, -1
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds double, ptr %.0, i64 %279
  %281 = load double, ptr %280, align 8, !tbaa !34
  %282 = fadd double %233, %281
  store double %282, ptr %280, align 8, !tbaa !34
  br label %288

283:                                              ; preds = %276
  %284 = sext i32 %.1217.ph to i64
  %285 = getelementptr inbounds double, ptr %.0, i64 %284
  %286 = load double, ptr %285, align 8, !tbaa !34
  %287 = fadd double %233, %286
  store double %287, ptr %285, align 8, !tbaa !34
  br label %288

288:                                              ; preds = %269, %273, %283, %277, %253, %256
  %.3254 = phi ptr [ %255, %253 ], [ %257, %256 ], [ %.2253.ph.ph, %277 ], [ %.2253.ph.ph, %283 ], [ %.2253.ph.ph, %273 ], [ %.2253.ph.ph, %269 ]
  %.2220 = phi double [ %.1219.ph.ph, %253 ], [ %.1219.ph.ph, %256 ], [ %274, %277 ], [ %274, %283 ], [ %274, %273 ], [ %.1219.ph.ph, %269 ]
  %289 = add nsw i32 %.1217.ph, 1
  %290 = icmp eq i32 %289, %spec.select
  br i1 %290, label %293, label %.outer.outer, !llvm.loop !37

.thread376:                                       ; preds = %272
  %291 = add nsw i32 %.1217.ph, 1
  %292 = icmp eq i32 %291, %spec.select
  br i1 %292, label %.thread381, label %.outer, !llvm.loop !37

293:                                              ; preds = %288
  br i1 %11, label %294, label %.thread381

294:                                              ; preds = %293
  %295 = load ptr, ptr %4, align 8, !tbaa !5
  %296 = getelementptr inbounds i8, ptr %295, i64 8
  store ptr %296, ptr %4, align 8, !tbaa !5
  store double %.2220, ptr %295, align 8, !tbaa !34
  %297 = fcmp olt double %.1243.ph.ph.ph, %.2220
  %.2244 = select i1 %297, double %.2220, double %.1243.ph.ph.ph
  br label %311

.thread381:                                       ; preds = %.thread376, %293
  %.3254379385 = phi ptr [ %.3254, %293 ], [ %.2253.ph.ph, %.thread376 ]
  %.2220380384 = phi double [ %.2220, %293 ], [ %.1219.ph.ph, %.thread376 ]
  %298 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 128), align 8, !tbaa !16
  %.not349 = icmp eq i32 %298, 0
  br i1 %.not349, label %311, label %299

299:                                              ; preds = %.thread381
  %300 = load i32, ptr %1, align 4, !tbaa !28
  %301 = load ptr, ptr %4, align 8, !tbaa !5
  %302 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 616), align 8, !tbaa !38
  %303 = call i32 @qh_sethalfspace(i32 noundef %300, ptr noundef %301, ptr noundef nonnull %4, ptr noundef %.0273, ptr noundef %.0274, ptr noundef %302) #11
  %.not350 = icmp eq i32 %303, 0
  br i1 %.not350, label %304, label %309

304:                                              ; preds = %299
  %305 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !23
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %305, i32 noundef 8048, ptr noundef nonnull @.str.219, i32 noundef %.8) #11
  br i1 %.not329, label %308, label %306

306:                                              ; preds = %304
  %307 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !23
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %307, i32 noundef 8049, ptr noundef nonnull @.str.220) #11
  br label %308

308:                                              ; preds = %306, %304
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null) #11
  br label %309

309:                                              ; preds = %308, %299
  %310 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2880), align 8, !tbaa !31
  br label %311

311:                                              ; preds = %.thread381, %309, %294
  %.4255 = phi ptr [ %.3254, %294 ], [ %310, %309 ], [ %.3254379385, %.thread381 ]
  %.3245 = phi double [ %.2244, %294 ], [ %.1243.ph.ph.ph, %309 ], [ %.1243.ph.ph.ph, %.thread381 ]
  %.3 = phi double [ 0.000000e+00, %294 ], [ %.2220380384, %309 ], [ %.2220380384, %.thread381 ]
  %312 = load ptr, ptr %219, align 8, !tbaa !5
  %313 = load ptr, ptr %5, align 8, !tbaa !5
  %314 = load i8, ptr %313, align 1, !tbaa !17
  %315 = sext i8 %314 to i64
  %316 = getelementptr inbounds i16, ptr %312, i64 %315
  %317 = load i16, ptr %316, align 2, !tbaa !18
  %318 = and i16 %317, 8192
  %.not352496 = icmp eq i16 %318, 0
  br i1 %.not352496, label %._crit_edge499, label %.lr.ph498

.lr.ph498:                                        ; preds = %311, %.lr.ph498
  %319 = phi ptr [ %320, %.lr.ph498 ], [ %313, %311 ]
  %320 = getelementptr inbounds i8, ptr %319, i64 1
  store ptr %320, ptr %5, align 8, !tbaa !5
  %321 = load ptr, ptr %219, align 8, !tbaa !5
  %322 = load i8, ptr %320, align 1, !tbaa !17
  %323 = sext i8 %322 to i64
  %324 = getelementptr inbounds i16, ptr %321, i64 %323
  %325 = load i16, ptr %324, align 2, !tbaa !18
  %326 = and i16 %325, 8192
  %.not352 = icmp eq i16 %326, 0
  br i1 %.not352, label %._crit_edge499, label %.lr.ph498, !llvm.loop !39

._crit_edge499:                                   ; preds = %.lr.ph498, %311
  %.lcssa405 = phi i8 [ %314, %311 ], [ %322, %.lr.ph498 ]
  %.not353 = icmp eq i8 %.lcssa405, 0
  br i1 %.not353, label %.outer.outer.outer, label %327, !llvm.loop !37

327:                                              ; preds = %._crit_edge499
  %.not354 = icmp eq i32 %.1232.ph.ph.ph.ph, 0
  %spec.select368 = select i1 %.not354, i32 %.8, i32 %.1232.ph.ph.ph.ph
  br label %.outer.outer.outer.outer, !llvm.loop !37

.loopexit387:                                     ; preds = %216, %241
  %328 = phi ptr [ %234, %241 ], [ %217, %216 ]
  %.4241 = phi i32 [ %spec.select366, %241 ], [ %.2239, %216 ]
  %.1235 = phi i32 [ %spec.select370, %241 ], [ %.0234, %216 ]
  %329 = icmp eq i32 %.1235, 0
  %or.cond27.not361 = select i1 %215, i1 %329, i1 false
  %330 = icmp ne i32 %.1217.ph, 0
  %or.cond29 = select i1 %or.cond27.not361, i1 %330, i1 false
  %spec.select369 = select i1 %or.cond29, i32 %.8, i32 %.1235
  br i1 %.not322, label %331, label %.backedge

331:                                              ; preds = %.loopexit387
  %332 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2864), align 8, !tbaa !32
  %333 = ptrtoint ptr %328 to i64
  %334 = ptrtoint ptr %332 to i64
  %335 = sub i64 %333, %334
  %336 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2872), align 8, !tbaa !35
  %337 = sext i32 %336 to i64
  %.not362 = icmp slt i64 %335, %337
  br i1 %.not362, label %.backedge, label %338

338:                                              ; preds = %331
  %339 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !23
  %340 = trunc i64 %335 to i32
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %339, i32 noundef 6078, ptr noundef nonnull @.str.221, i32 noundef %.8, i32 noundef %340) #11
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null) #11
  br label %.backedge

.backedge:                                        ; preds = %338, %331, %.loopexit387
  br label %198, !llvm.loop !40

341:                                              ; preds = %.thread373, %210, %199
  %342 = load i8, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 936), align 8, !tbaa !17
  %.not330 = icmp eq i8 %342, 0
  br i1 %.not330, label %347, label %343

343:                                              ; preds = %341
  %344 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @qh_qh, i64 936)) #13
  %345 = add i64 %344, -1
  %346 = getelementptr inbounds [256 x i8], ptr getelementptr inbounds (i8, ptr @qh_qh, i64 936), i64 0, i64 %345
  store i8 0, ptr %346, align 1, !tbaa !17
  br label %347

347:                                              ; preds = %343, %341
  %.not331 = icmp eq i32 %.0226, %197
  br i1 %.not331, label %425, label %348

348:                                              ; preds = %347
  %349 = sdiv i32 %.0226, %spec.select
  %350 = srem i32 %.0226, %spec.select
  %.spec.select365 = call i32 @llvm.smin.i32(i32 %spec.select365, i32 %349)
  %351 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 4), align 4, !tbaa !41
  %.not332 = icmp eq i32 %351, 0
  %352 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !23
  %353 = srem i32 %.0226, %spec.select
  br i1 %.not332, label %355, label %354

354:                                              ; preds = %348
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %352, i32 noundef 7073, ptr noundef nonnull @.str.222, i32 noundef %spec.select365, i32 noundef %spec.select, i32 noundef %349, i32 noundef %353) #11
  br label %356

355:                                              ; preds = %348
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %352, i32 noundef 6410, ptr noundef nonnull @.str.223, i32 noundef %spec.select365, i32 noundef %spec.select, i32 noundef %349, i32 noundef %353) #11
  br label %356

356:                                              ; preds = %355, %354
  %.not333 = icmp eq i32 %.2239, 0
  br i1 %.not333, label %359, label %357

357:                                              ; preds = %356
  %358 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !23
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %358, i32 noundef 8051, ptr noundef nonnull @.str.224, i32 noundef %.2239) #11
  br label %359

359:                                              ; preds = %357, %356
  %360 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !23
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %360, i32 noundef 8033, ptr noundef nonnull @.str.225, i32 noundef %.0228) #11
  %.not334 = icmp eq i32 %.0234, 0
  br i1 %.not334, label %363, label %361

361:                                              ; preds = %359
  %362 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !23
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %362, i32 noundef 8052, ptr noundef nonnull @.str.226, i32 noundef %.0234) #11
  br label %363

363:                                              ; preds = %361, %359
  %.not335 = icmp eq i32 %.0231, 0
  br i1 %.not335, label %366, label %364

364:                                              ; preds = %363
  %365 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !23
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %365, i32 noundef 8053, ptr noundef nonnull @.str.227, i32 noundef %.0231) #11
  br label %366

366:                                              ; preds = %364, %363
  %367 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 4), align 4, !tbaa !41
  %.not336 = icmp eq i32 %367, 0
  %368 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !23
  br i1 %.not336, label %370, label %369

369:                                              ; preds = %366
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %368, i32 noundef 8054, ptr noundef nonnull @.str.228, i32 noundef %.spec.select365) #11
  br label %371

370:                                              ; preds = %366
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %368, i32 noundef 8077, ptr noundef nonnull @.str.229) #11
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null) #11
  br label %371

371:                                              ; preds = %370, %369
  %372 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 36), align 4
  %373 = icmp ne i32 %372, 0
  %or.cond31 = select i1 %11, i1 %373, i1 false
  br i1 %or.cond31, label %374, label %420

374:                                              ; preds = %371
  %.not337501 = icmp eq i32 %350, 0
  br i1 %.not337501, label %418, label %.lr.ph504.preheader

.lr.ph504.preheader:                              ; preds = %374
  %.promoted = load ptr, ptr %4, align 8, !tbaa !5
  %375 = sext i32 %350 to i64
  %min.iters.check = icmp ult i32 %350, 10
  br i1 %min.iters.check, label %.lr.ph504.preheader724, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph504.preheader
  %376 = shl nsw i64 %375, 3
  %scevgep671 = getelementptr i8, ptr %.0, i64 %376
  %377 = mul nsw i64 %375, -8
  %scevgep672 = getelementptr i8, ptr %.promoted, i64 %377
  %bound0 = icmp ult ptr %.0, %.promoted
  %bound1 = icmp ult ptr %scevgep672, %scevgep671
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %.lr.ph504.preheader724, label %vector.ph

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

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx675 = mul i64 %index, -8
  %next.gep = getelementptr i8, ptr %.promoted, i64 %offset.idx675
  %379 = xor i64 %index, -1
  %380 = add i64 %379, %375
  %381 = getelementptr inbounds i8, ptr %next.gep, i64 -16
  %382 = getelementptr inbounds i8, ptr %next.gep, i64 -32
  %wide.load = load <2 x double>, ptr %381, align 8, !tbaa !34, !alias.scope !42
  %wide.load677 = load <2 x double>, ptr %382, align 8, !tbaa !34, !alias.scope !42
  %383 = getelementptr inbounds double, ptr %.0, i64 %380
  %384 = getelementptr inbounds i8, ptr %383, i64 -8
  %385 = getelementptr inbounds i8, ptr %383, i64 -24
  %wide.load679 = load <2 x double>, ptr %384, align 8, !tbaa !34, !alias.scope !45, !noalias !42
  %wide.load681 = load <2 x double>, ptr %385, align 8, !tbaa !34, !alias.scope !45, !noalias !42
  %386 = fsub <2 x double> %wide.load679, %wide.load
  %387 = fsub <2 x double> %wide.load681, %wide.load677
  store <2 x double> %386, ptr %384, align 8, !tbaa !34, !alias.scope !45, !noalias !42
  store <2 x double> %387, ptr %385, align 8, !tbaa !34, !alias.scope !45, !noalias !42
  %index.next = add nuw i64 %index, 4
  %388 = icmp eq i64 %index.next, %n.vec
  br i1 %388, label %middle.block, label %vector.body, !llvm.loop !47

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %375
  br i1 %cmp.n, label %._crit_edge505, label %.lr.ph504.preheader724

.lr.ph504.preheader724:                           ; preds = %middle.block, %vector.memcheck, %.lr.ph504.preheader
  %indvars.iv.ph = phi i64 [ %375, %vector.memcheck ], [ %375, %.lr.ph504.preheader ], [ %ind.end, %middle.block ]
  %.ph725 = phi ptr [ %.promoted, %vector.memcheck ], [ %.promoted, %.lr.ph504.preheader ], [ %ind.end673, %middle.block ]
  %389 = 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.ph504.prol.loopexit, label %.lr.ph504.prol

.lr.ph504.prol:                                   ; preds = %.lr.ph504.preheader724, %.lr.ph504.prol
  %indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %.lr.ph504.prol ], [ %indvars.iv.ph, %.lr.ph504.preheader724 ]
  %390 = phi ptr [ %391, %.lr.ph504.prol ], [ %.ph725, %.lr.ph504.preheader724 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph504.prol ], [ 0, %.lr.ph504.preheader724 ]
  %indvars.iv.next.prol = add nsw i64 %indvars.iv.prol, -1
  %391 = getelementptr inbounds i8, ptr %390, i64 -8
  %392 = load double, ptr %391, align 8, !tbaa !34
  %393 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv.next.prol
  %394 = load double, ptr %393, align 8, !tbaa !34
  %395 = fsub double %394, %392
  store double %395, ptr %393, align 8, !tbaa !34
  %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.ph504.prol.loopexit, label %.lr.ph504.prol, !llvm.loop !50

.lr.ph504.prol.loopexit:                          ; preds = %.lr.ph504.prol, %.lr.ph504.preheader724
  %.lcssa726.unr = phi ptr [ poison, %.lr.ph504.preheader724 ], [ %391, %.lr.ph504.prol ]
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %.lr.ph504.preheader724 ], [ %indvars.iv.next.prol, %.lr.ph504.prol ]
  %.unr = phi ptr [ %.ph725, %.lr.ph504.preheader724 ], [ %391, %.lr.ph504.prol ]
  %396 = icmp ult i64 %389, 3
  br i1 %396, label %._crit_edge505, label %.lr.ph504

.lr.ph504:                                        ; preds = %.lr.ph504.prol.loopexit, %.lr.ph504
  %indvars.iv = phi i64 [ %indvars.iv.next.3, %.lr.ph504 ], [ %indvars.iv.unr, %.lr.ph504.prol.loopexit ]
  %397 = phi ptr [ %413, %.lr.ph504 ], [ %.unr, %.lr.ph504.prol.loopexit ]
  %indvars.iv.next = add nsw i64 %indvars.iv, -1
  %398 = getelementptr inbounds i8, ptr %397, i64 -8
  %399 = load double, ptr %398, align 8, !tbaa !34
  %400 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv.next
  %401 = load double, ptr %400, align 8, !tbaa !34
  %402 = fsub double %401, %399
  store double %402, ptr %400, align 8, !tbaa !34
  %indvars.iv.next.1 = add nsw i64 %indvars.iv, -2
  %403 = getelementptr inbounds i8, ptr %397, i64 -16
  %404 = load double, ptr %403, align 8, !tbaa !34
  %405 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv.next.1
  %406 = load double, ptr %405, align 8, !tbaa !34
  %407 = fsub double %406, %404
  store double %407, ptr %405, align 8, !tbaa !34
  %indvars.iv.next.2 = add nsw i64 %indvars.iv, -3
  %408 = getelementptr inbounds i8, ptr %397, i64 -24
  %409 = load double, ptr %408, align 8, !tbaa !34
  %410 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv.next.2
  %411 = load double, ptr %410, align 8, !tbaa !34
  %412 = fsub double %411, %409
  store double %412, ptr %410, align 8, !tbaa !34
  %indvars.iv.next.3 = add nsw i64 %indvars.iv, -4
  %413 = getelementptr inbounds i8, ptr %397, i64 -32
  %414 = load double, ptr %413, align 8, !tbaa !34
  %415 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv.next.3
  %416 = load double, ptr %415, align 8, !tbaa !34
  %417 = fsub double %416, %414
  store double %417, ptr %415, align 8, !tbaa !34
  %.not337.3 = icmp eq i64 %indvars.iv.next.3, 0
  br i1 %.not337.3, label %._crit_edge505, label %.lr.ph504, !llvm.loop !52

._crit_edge505:                                   ; preds = %.lr.ph504.prol.loopexit, %.lr.ph504, %middle.block
  %.lcssa625 = phi ptr [ %ind.end673, %middle.block ], [ %.lcssa726.unr, %.lr.ph504.prol.loopexit ], [ %413, %.lr.ph504 ]
  store ptr %.lcssa625, ptr %4, align 8, !tbaa !5
  br label %418

418:                                              ; preds = %._crit_edge505, %374
  %419 = add nsw i32 %.spec.select365, 1
  br label %.sink.split

420:                                              ; preds = %371
  %421 = load ptr, ptr %4, align 8, !tbaa !5
  %422 = sext i32 %350 to i64
  %423 = sub nsw i64 0, %422
  %424 = getelementptr inbounds double, ptr %421, i64 %423
  store ptr %424, ptr %4, align 8, !tbaa !5
  br label %.sink.split

.sink.split:                                      ; preds = %420, %418
  %.sink = phi i32 [ %419, %418 ], [ %.spec.select365, %420 ]
  store i32 %.sink, ptr %0, align 4, !tbaa !28
  br label %425

425:                                              ; preds = %.sink.split, %347
  %.5268 = phi i32 [ %spec.select365, %347 ], [ %.spec.select365, %.sink.split ]
  %426 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 36), align 4
  %427 = icmp ne i32 %426, 0
  %or.cond33 = select i1 %11, i1 %427, i1 false
  br i1 %or.cond33, label %428, label %493

428:                                              ; preds = %425
  %429 = load i32, ptr %1, align 4, !tbaa !28
  %430 = add nsw i32 %429, -1
  %.not338507 = icmp eq i32 %430, 0
  br i1 %.not338507, label %._crit_edge511.thread, label %.lr.ph510

.lr.ph510:                                        ; preds = %428
  %431 = sitofp i32 %.5268 to double
  %432 = sext i32 %429 to i64
  %433 = add nsw i64 %432, -1
  %min.iters.check687 = icmp ult i64 %433, 2
  br i1 %min.iters.check687, label %scalar.ph686.preheader, label %vector.ph688

vector.ph688:                                     ; preds = %.lr.ph510
  %n.vec690 = and i64 %433, -2
  %ind.end691 = and i64 %433, 1
  %broadcast.splatinsert = insertelement <2 x double> poison, double %431, i64 0
  %invariant.gep = getelementptr i8, ptr %.0, i64 -8
  %434 = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body693

vector.body693:                                   ; preds = %vector.body693, %vector.ph688
  %index694 = phi i64 [ 0, %vector.ph688 ], [ %index.next699, %vector.body693 ]
  %435 = xor i64 %index694, -1
  %436 = add i64 %433, %435
  %gep = getelementptr double, ptr %invariant.gep, i64 %436
  %wide.load696 = load <2 x double>, ptr %gep, align 8, !tbaa !34
  %reverse698 = fdiv <2 x double> %wide.load696, %434
  store <2 x double> %reverse698, ptr %gep, align 8, !tbaa !34
  %index.next699 = add nuw i64 %index694, 2
  %437 = icmp eq i64 %index.next699, %n.vec690
  br i1 %437, label %middle.block685, label %vector.body693, !llvm.loop !53

middle.block685:                                  ; preds = %vector.body693
  %cmp.n700 = icmp eq i64 %433, %n.vec690
  br i1 %cmp.n700, label %._crit_edge511, label %scalar.ph686.preheader

scalar.ph686.preheader:                           ; preds = %middle.block685, %.lr.ph510
  %indvars.iv564.ph = phi i64 [ %433, %.lr.ph510 ], [ %ind.end691, %middle.block685 ]
  br label %scalar.ph686

scalar.ph686:                                     ; preds = %scalar.ph686.preheader, %scalar.ph686
  %indvars.iv564 = phi i64 [ %indvars.iv.next565, %scalar.ph686 ], [ %indvars.iv564.ph, %scalar.ph686.preheader ]
  %indvars.iv.next565 = add nsw i64 %indvars.iv564, -1
  %438 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv.next565
  %439 = load double, ptr %438, align 8, !tbaa !34
  %440 = fdiv double %439, %431
  store double %440, ptr %438, align 8, !tbaa !34
  %.not338 = icmp eq i64 %indvars.iv.next565, 0
  br i1 %.not338, label %._crit_edge511, label %scalar.ph686, !llvm.loop !54

._crit_edge511:                                   ; preds = %scalar.ph686, %middle.block685
  %441 = load ptr, ptr %4, align 8, !tbaa !5
  %442 = ptrtoint ptr %441 to i64
  %443 = icmp eq ptr %441, %.0
  br i1 %443, label %460, label %.preheader

._crit_edge511.thread:                            ; preds = %428
  %444 = load ptr, ptr %4, align 8, !tbaa !5
  %445 = icmp eq ptr %444, %.0
  br i1 %445, label %460, label %.loopexit

.preheader:                                       ; preds = %._crit_edge511
  %446 = icmp sgt i32 %429, 1
  br i1 %446, label %.lr.ph514.preheader, label %.loopexit

.lr.ph514.preheader:                              ; preds = %.preheader
  %wide.trip.count = zext i32 %430 to i64
  %min.iters.check705 = icmp ult i32 %429, 7
  %447 = sub i64 %442, %.0702
  %diff.check = icmp ult i64 %447, 32
  %or.cond721 = select i1 %min.iters.check705, i1 true, i1 %diff.check
  br i1 %or.cond721, label %.lr.ph514.preheader722, label %vector.ph706

.lr.ph514.preheader722:                           ; preds = %middle.block703, %.lr.ph514.preheader
  %indvars.iv567.ph = phi i64 [ 0, %.lr.ph514.preheader ], [ %n.vec708, %middle.block703 ]
  %.ph = phi ptr [ %441, %.lr.ph514.preheader ], [ %ind.end710, %middle.block703 ]
  %448 = sub nsw i64 %wide.trip.count, %indvars.iv567.ph
  %xtraiter809 = and i64 %448, 7
  %lcmp.mod810.not = icmp eq i64 %xtraiter809, 0
  br i1 %lcmp.mod810.not, label %.lr.ph514.prol.loopexit, label %.lr.ph514.prol

.lr.ph514.prol:                                   ; preds = %.lr.ph514.preheader722, %.lr.ph514.prol
  %indvars.iv567.prol = phi i64 [ %indvars.iv.next568.prol, %.lr.ph514.prol ], [ %indvars.iv567.ph, %.lr.ph514.preheader722 ]
  %449 = phi ptr [ %452, %.lr.ph514.prol ], [ %.ph, %.lr.ph514.preheader722 ]
  %prol.iter811 = phi i64 [ %prol.iter811.next, %.lr.ph514.prol ], [ 0, %.lr.ph514.preheader722 ]
  %450 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv567.prol
  %451 = load double, ptr %450, align 8, !tbaa !34
  %452 = getelementptr inbounds i8, ptr %449, i64 8
  store double %451, ptr %449, align 8, !tbaa !34
  %indvars.iv.next568.prol = add nuw nsw i64 %indvars.iv567.prol, 1
  %prol.iter811.next = add i64 %prol.iter811, 1
  %prol.iter811.cmp.not = icmp eq i64 %prol.iter811.next, %xtraiter809
  br i1 %prol.iter811.cmp.not, label %.lr.ph514.prol.loopexit, label %.lr.ph514.prol, !llvm.loop !55

.lr.ph514.prol.loopexit:                          ; preds = %.lr.ph514.prol, %.lr.ph514.preheader722
  %.lcssa723.unr = phi ptr [ poison, %.lr.ph514.preheader722 ], [ %452, %.lr.ph514.prol ]
  %indvars.iv567.unr = phi i64 [ %indvars.iv567.ph, %.lr.ph514.preheader722 ], [ %indvars.iv.next568.prol, %.lr.ph514.prol ]
  %.unr812 = phi ptr [ %.ph, %.lr.ph514.preheader722 ], [ %452, %.lr.ph514.prol ]
  %453 = sub nsw i64 %indvars.iv567.ph, %wide.trip.count
  %454 = icmp ugt i64 %453, -8
  br i1 %454, label %.loopexit, label %.lr.ph514

vector.ph706:                                     ; preds = %.lr.ph514.preheader
  %n.vec708 = and i64 %wide.trip.count, 2147483644
  %455 = shl nuw nsw i64 %n.vec708, 3
  %ind.end710 = getelementptr i8, ptr %441, i64 %455
  br label %vector.body712

vector.body712:                                   ; preds = %vector.body712, %vector.ph706
  %index713 = phi i64 [ 0, %vector.ph706 ], [ %index.next719, %vector.body712 ]
  %offset.idx714 = shl i64 %index713, 3
  %next.gep715 = getelementptr i8, ptr %441, i64 %offset.idx714
  %456 = getelementptr inbounds double, ptr %.0, i64 %index713
  %457 = getelementptr inbounds i8, ptr %456, i64 16
  %wide.load717 = load <2 x double>, ptr %456, align 8, !tbaa !34
  %wide.load718 = load <2 x double>, ptr %457, align 8, !tbaa !34
  %458 = getelementptr i8, ptr %next.gep715, i64 16
  store <2 x double> %wide.load717, ptr %next.gep715, align 8, !tbaa !34
  store <2 x double> %wide.load718, ptr %458, align 8, !tbaa !34
  %index.next719 = add nuw i64 %index713, 4
  %459 = icmp eq i64 %index.next719, %n.vec708
  br i1 %459, label %middle.block703, label %vector.body712, !llvm.loop !56

middle.block703:                                  ; preds = %vector.body712
  %cmp.n720 = icmp eq i64 %n.vec708, %wide.trip.count
  br i1 %cmp.n720, label %.loopexit, label %.lr.ph514.preheader722

460:                                              ; preds = %._crit_edge511.thread, %._crit_edge511
  %461 = phi ptr [ %444, %._crit_edge511.thread ], [ %441, %._crit_edge511 ]
  %462 = sext i32 %429 to i64
  %463 = getelementptr double, ptr %461, i64 %462
  %464 = getelementptr i8, ptr %463, i64 -8
  br label %.loopexit

.lr.ph514:                                        ; preds = %.lr.ph514.prol.loopexit, %.lr.ph514
  %indvars.iv567 = phi i64 [ %indvars.iv.next568.7, %.lr.ph514 ], [ %indvars.iv567.unr, %.lr.ph514.prol.loopexit ]
  %465 = phi ptr [ %489, %.lr.ph514 ], [ %.unr812, %.lr.ph514.prol.loopexit ]
  %466 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv567
  %467 = load double, ptr %466, align 8, !tbaa !34
  %468 = getelementptr inbounds i8, ptr %465, i64 8
  store double %467, ptr %465, align 8, !tbaa !34
  %indvars.iv.next568 = add nuw nsw i64 %indvars.iv567, 1
  %469 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv.next568
  %470 = load double, ptr %469, align 8, !tbaa !34
  %471 = getelementptr inbounds i8, ptr %465, i64 16
  store double %470, ptr %468, align 8, !tbaa !34
  %indvars.iv.next568.1 = add nuw nsw i64 %indvars.iv567, 2
  %472 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv.next568.1
  %473 = load double, ptr %472, align 8, !tbaa !34
  %474 = getelementptr inbounds i8, ptr %465, i64 24
  store double %473, ptr %471, align 8, !tbaa !34
  %indvars.iv.next568.2 = add nuw nsw i64 %indvars.iv567, 3
  %475 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv.next568.2
  %476 = load double, ptr %475, align 8, !tbaa !34
  %477 = getelementptr inbounds i8, ptr %465, i64 32
  store double %476, ptr %474, align 8, !tbaa !34
  %indvars.iv.next568.3 = add nuw nsw i64 %indvars.iv567, 4
  %478 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv.next568.3
  %479 = load double, ptr %478, align 8, !tbaa !34
  %480 = getelementptr inbounds i8, ptr %465, i64 40
  store double %479, ptr %477, align 8, !tbaa !34
  %indvars.iv.next568.4 = add nuw nsw i64 %indvars.iv567, 5
  %481 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv.next568.4
  %482 = load double, ptr %481, align 8, !tbaa !34
  %483 = getelementptr inbounds i8, ptr %465, i64 48
  store double %482, ptr %480, align 8, !tbaa !34
  %indvars.iv.next568.5 = add nuw nsw i64 %indvars.iv567, 6
  %484 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv.next568.5
  %485 = load double, ptr %484, align 8, !tbaa !34
  %486 = getelementptr inbounds i8, ptr %465, i64 56
  store double %485, ptr %483, align 8, !tbaa !34
  %indvars.iv.next568.6 = add nuw nsw i64 %indvars.iv567, 7
  %487 = getelementptr inbounds double, ptr %.0, i64 %indvars.iv.next568.6
  %488 = load double, ptr %487, align 8, !tbaa !34
  %489 = getelementptr inbounds i8, ptr %465, i64 64
  store double %488, ptr %486, align 8, !tbaa !34
  %indvars.iv.next568.7 = add nuw nsw i64 %indvars.iv567, 8
  %exitcond.not.7 = icmp eq i64 %indvars.iv.next568.7, %wide.trip.count
  br i1 %exitcond.not.7, label %.loopexit, label %.lr.ph514, !llvm.loop !57

.loopexit:                                        ; preds = %.lr.ph514.prol.loopexit, %.lr.ph514, %middle.block703, %._crit_edge511.thread, %.preheader, %460
  %490 = phi ptr [ %441, %.preheader ], [ %464, %460 ], [ %444, %._crit_edge511.thread ], [ %ind.end710, %middle.block703 ], [ %.lcssa723.unr, %.lr.ph514.prol.loopexit ], [ %489, %.lr.ph514 ]
  %491 = fmul double %.0242, 1.100000e+00
  %492 = getelementptr inbounds i8, ptr %490, i64 8
  store ptr %492, ptr %4, align 8, !tbaa !5
  store double %491, ptr %490, align 8, !tbaa !34
  br label %493

493:                                              ; preds = %.loopexit, %425
  %494 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @qh_qh, i64 936), ptr noundef nonnull dereferenceable(1) @.str.230) #13
  %.not339 = icmp eq i32 %494, 0
  br i1 %.not339, label %495, label %497

495:                                              ; preds = %493
  %496 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !23
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %496, i32 noundef 8055, ptr noundef nonnull @.str.231) #11
  br label %497

497:                                              ; preds = %495, %493
  %498 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2864), align 8, !tbaa !32
  call void @qh_free(ptr noundef %498) #11
  store ptr null, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2864), align 8, !tbaa !32
  %499 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2880), align 8, !tbaa !31
  %.not340 = icmp eq ptr %499, null
  br i1 %.not340, label %501, label %500

500:                                              ; preds = %497
  call void @qh_free(ptr noundef nonnull %499) #11
  store ptr null, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2880), align 8, !tbaa !31
  br label %501

501:                                              ; preds = %500, %497
  store ptr null, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2888), align 8, !tbaa !33
  %502 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 136), align 8, !tbaa !58
  %503 = icmp sgt i32 %502, 0
  br i1 %503, label %504, label %506

504:                                              ; preds = %501
  %505 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !23
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %505, i32 noundef 1008, ptr noundef nonnull @.str.232, i32 noundef %.5268, i32 noundef %spec.select) #11
  br label %506

506:                                              ; preds = %504, %501
  call void @llvm.lifetime.end.p0(i64 201, 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
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #11
  ret ptr %169
}

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(i32 noundef) local_unnamed_addr #3

declare i32 @qh_sethalfspace(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.smax.i32(i32, i32) #9

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.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, !6, i64 2984, !11, i64 2992}
!11 = !{!"int", !7, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!"long", !7, i64 0}
!14 = !{!10, !11, i64 48}
!15 = !{!10, !6, i64 2408}
!16 = !{!10, !11, i64 128}
!17 = !{!7, !7, i64 0}
!18 = !{!19, !19, i64 0}
!19 = !{!"short", !7, i64 0}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.mustprogress"}
!22 = distinct !{!22, !21}
!23 = !{!10, !6, i64 2424}
!24 = distinct !{!24, !21}
!25 = distinct !{!25, !21}
!26 = distinct !{!26, !21}
!27 = !{!10, !11, i64 436}
!28 = !{!11, !11, i64 0}
!29 = !{!10, !11, i64 36}
!30 = !{!10, !11, i64 2440}
!31 = !{!10, !6, i64 2880}
!32 = !{!10, !6, i64 2864}
!33 = !{!10, !6, i64 2888}
!34 = !{!12, !12, i64 0}
!35 = !{!10, !11, i64 2872}
!36 = distinct !{!36, !21}
!37 = distinct !{!37, !21}
!38 = !{!10, !6, i64 616}
!39 = distinct !{!39, !21}
!40 = distinct !{!40, !21}
!41 = !{!10, !11, i64 4}
!42 = !{!43}
!43 = distinct !{!43, !44}
!44 = distinct !{!44, !"LVerDomain"}
!45 = !{!46}
!46 = distinct !{!46, !44}
!47 = distinct !{!47, !21, !48, !49}
!48 = !{!"llvm.loop.isvectorized", i32 1}
!49 = !{!"llvm.loop.unroll.runtime.disable"}
!50 = distinct !{!50, !51}
!51 = !{!"llvm.loop.unroll.disable"}
!52 = distinct !{!52, !21, !48}
!53 = distinct !{!53, !21, !48, !49}
!54 = distinct !{!54, !21, !49, !48}
!55 = distinct !{!55, !51}
!56 = distinct !{!56, !21, !48, !49}
!57 = distinct !{!57, !21, !48}
!58 = !{!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