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

; 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 dso_local global %struct.qhT, align 8
@.str.106 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.141 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.187 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.188 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.189 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.190 = external hidden unnamed_addr constant [104 x i8], align 1
@.str.191 = external hidden unnamed_addr constant [146 x i8], align 1
@.str.192 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.193 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.194 = external hidden unnamed_addr constant [128 x i8], align 1
@.str.195 = external hidden unnamed_addr constant [178 x i8], align 1
@.str.196 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.197 = external hidden unnamed_addr constant [105 x i8], align 1
@.str.198 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.199 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.200 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.201 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.202 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.203 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.204 = external hidden unnamed_addr constant [112 x i8], align 1
@.str.205 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.206 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.207 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.208 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.209 = external hidden unnamed_addr constant [165 x i8], align 1
@.str.210 = external hidden unnamed_addr constant [81 x i8], align 1

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @qh_initqhull_globals(ptr noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3) #2 {
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca i64, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store i32 %1, ptr %6, align 4, !tbaa !9
  store i32 %2, ptr %7, align 4, !tbaa !9
  store i32 %3, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #4
  store i32 0, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #4
  %18 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 29), align 8, !tbaa !11
  %19 = icmp ne i32 %18, 0
  br i1 %19, label %20, label %22

20:                                               ; preds = %4
  %21 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !15
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %21, i32 noundef 13, ptr noundef @.str.187, ptr noundef getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 119), ptr noundef getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 117))
  br label %22

22:                                               ; preds = %20, %4
  %23 = load i32, ptr %6, align 4, !tbaa !9
  %24 = icmp slt i32 %23, 1
  br i1 %24, label %28, label %25

25:                                               ; preds = %22
  %26 = load i32, ptr %6, align 4, !tbaa !9
  %27 = icmp sgt i32 %26, 2147483631
  br i1 %27, label %28, label %32

28:                                               ; preds = %25, %22
  %29 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !15
  %30 = load i32, ptr %6, align 4, !tbaa !9
  %31 = load i32, ptr %7, align 4, !tbaa !9
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %29, i32 noundef 6412, ptr noundef @.str.188, i32 noundef 2147483631, i32 noundef %30, i32 noundef %31)
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %32

32:                                               ; preds = %28, %25
  %33 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %33, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 114), align 8, !tbaa !16
  %34 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %34, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 113), align 8, !tbaa !17
  %35 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %35, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 112), align 8, !tbaa !18
  %36 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %36, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 111), align 4, !tbaa !19
  store i32 %36, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !20
  %37 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 47), align 8, !tbaa !21
  %38 = icmp ne i32 %37, 0
  br i1 %38, label %54, label %39

39:                                               ; preds = %32
  %40 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 37), align 4, !tbaa !22
  %41 = icmp ne i32 %40, 0
  br i1 %41, label %54, label %42

42:                                               ; preds = %39
  %43 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 52), align 4, !tbaa !23
  %44 = icmp ne i32 %43, 0
  br i1 %44, label %54, label %45

45:                                               ; preds = %42
  %46 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 197), align 8, !tbaa !24
  %47 = fcmp ogt double %46, 0x7FDFFFFFFFFFFFFF
  br i1 %47, label %48, label %54

48:                                               ; preds = %45
  store i32 1, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 39), align 4, !tbaa !25
  %49 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !20
  %50 = icmp sle i32 %49, 4
  br i1 %50, label %51, label %52

51:                                               ; preds = %48
  store i32 1, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 52), align 4, !tbaa !23
  call void @qh_option(ptr noundef @.str.189, ptr noundef null, ptr noundef null)
  br label %53

52:                                               ; preds = %48
  store i32 1, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 37), align 4, !tbaa !22
  call void @qh_option(ptr noundef @.str.115, ptr noundef null, ptr noundef null)
  br label %53

53:                                               ; preds = %52, %51
  br label %59

54:                                               ; preds = %45, %42, %39, %32
  %55 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 37), align 4, !tbaa !22
  %56 = icmp ne i32 %55, 0
  br i1 %56, label %57, label %58

57:                                               ; preds = %54
  store i32 1, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 39), align 4, !tbaa !25
  br label %58

58:                                               ; preds = %57, %54
  br label %59

59:                                               ; preds = %58, %53
  %60 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 47), align 8, !tbaa !21
  %61 = icmp ne i32 %60, 0
  br i1 %61, label %62, label %70

62:                                               ; preds = %59
  %63 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 37), align 4, !tbaa !22
  %64 = icmp ne i32 %63, 0
  br i1 %64, label %68, label %65

65:                                               ; preds = %62
  %66 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 52), align 4, !tbaa !23
  %67 = icmp ne i32 %66, 0
  br i1 %67, label %68, label %70

68:                                               ; preds = %65, %62
  %69 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !15
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %69, i32 noundef 7095, ptr noundef @.str.190)
  br label %70

70:                                               ; preds = %68, %65, %59
  %71 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 47), align 8, !tbaa !21
  %72 = icmp ne i32 %71, 0
  br i1 %72, label %77, label %73

73:                                               ; preds = %70
  %74 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 197), align 8, !tbaa !24
  %75 = fcmp ogt double %74, 0x7FDFFFFFFFFFFFFF
  br i1 %75, label %76, label %77

76:                                               ; preds = %73
  br label %77

77:                                               ; preds = %76, %73, %70
  %78 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 97), align 4, !tbaa !26
  %79 = icmp ne i32 %78, 0
  br i1 %79, label %80, label %94

80:                                               ; preds = %77
  %81 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 197), align 8, !tbaa !24
  %82 = fcmp olt double %81, 0x7FDFFFFFFFFFFFFF
  br i1 %82, label %83, label %94

83:                                               ; preds = %80
  %84 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 52), align 4, !tbaa !23
  %85 = icmp ne i32 %84, 0
  br i1 %85, label %94, label %86

86:                                               ; preds = %83
  %87 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 51), align 8, !tbaa !27
  %88 = icmp ne i32 %87, 0
  br i1 %88, label %94, label %89

89:                                               ; preds = %86
  %90 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 63), align 8, !tbaa !28
  %91 = icmp ne i32 %90, 0
  br i1 %91, label %92, label %94

92:                                               ; preds = %89
  %93 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !15
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %93, i32 noundef 7038, ptr noundef @.str.191)
  br label %94

94:                                               ; preds = %92, %89, %86, %83, %80, %77
  %95 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 197), align 8, !tbaa !24
  %96 = fcmp olt double %95, 0x7FDFFFFFFFFFFFFF
  br i1 %96, label %97, label %107

97:                                               ; preds = %94
  %98 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 17), align 8, !tbaa !29
  %99 = icmp ne i32 %98, 0
  br i1 %99, label %100, label %107

100:                                              ; preds = %97
  %101 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 81), align 4, !tbaa !30
  %102 = icmp ne i32 %101, 0
  br i1 %102, label %107, label %103

103:                                              ; preds = %100
  %104 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 82), align 8, !tbaa !31
  %105 = icmp ne i32 %104, 0
  br i1 %105, label %107, label %106

106:                                              ; preds = %103
  store i32 1, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 82), align 8, !tbaa !31
  call void @qh_option(ptr noundef @.str.192, ptr noundef null, ptr noundef null)
  br label %107

107:                                              ; preds = %106, %103, %100, %97, %94
  %108 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 39), align 4, !tbaa !25
  %109 = icmp ne i32 %108, 0
  br i1 %109, label %110, label %120

110:                                              ; preds = %107
  %111 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 51), align 8, !tbaa !27
  %112 = icmp ne i32 %111, 0
  br i1 %112, label %120, label %113

113:                                              ; preds = %110
  %114 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 15), align 8, !tbaa !32
  %115 = fcmp ogt double %114, 0x7FDFFFFFFFFFFFFF
  br i1 %115, label %116, label %120

116:                                              ; preds = %113
  %117 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 40), align 8, !tbaa !33
  %118 = fcmp oeq double %117, 0.000000e+00
  br i1 %118, label %119, label %120

119:                                              ; preds = %116
  store i32 1, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 126), align 4, !tbaa !34
  store i32 1, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 220), align 4, !tbaa !35
  call void @qh_option(ptr noundef @.str.193, ptr noundef null, ptr noundef null)
  br label %120

120:                                              ; preds = %119, %116, %113, %110, %107
  %121 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 197), align 8, !tbaa !24
  %122 = fcmp olt double %121, 0x7FDFFFFFFFFFFFFF
  br i1 %122, label %123, label %129

123:                                              ; preds = %120
  br i1 false, label %124, label %129

124:                                              ; preds = %123
  %125 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 63), align 8, !tbaa !28
  %126 = icmp ne i32 %125, 0
  br i1 %126, label %127, label %129

127:                                              ; preds = %124
  %128 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !15
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %128, i32 noundef 7039, ptr noundef @.str.194, double noundef 0x3CB0000000000000)
  br label %129

129:                                              ; preds = %127, %124, %123, %120
  %130 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 17), align 8, !tbaa !29
  %131 = icmp ne i32 %130, 0
  br i1 %131, label %132, label %139

132:                                              ; preds = %129
  %133 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 31), align 8, !tbaa !36
  %134 = icmp ne i32 %133, 0
  br i1 %134, label %135, label %139

135:                                              ; preds = %132
  %136 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 32), align 4, !tbaa !37
  %137 = icmp ne i32 %136, 0
  br i1 %137, label %139, label %138

138:                                              ; preds = %135
  store i32 1, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 32), align 4, !tbaa !37
  call void @qh_option(ptr noundef @.str.106, ptr noundef null, ptr noundef null)
  br label %139

139:                                              ; preds = %138, %135, %132, %129
  %140 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 103), align 4, !tbaa !38
  %141 = icmp ne i32 %140, 0
  br i1 %141, label %142, label %147

142:                                              ; preds = %139
  %143 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 17), align 8, !tbaa !29
  %144 = icmp ne i32 %143, 0
  br i1 %144, label %147, label %145

145:                                              ; preds = %142
  %146 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !15
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %146, i32 noundef 6038, ptr noundef @.str.195)
  call void @qh_errexit(i32 noundef 5, ptr noundef null, ptr noundef null)
  br label %147

147:                                              ; preds = %145, %142, %139
  %148 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 17), align 8, !tbaa !29
  %149 = icmp ne i32 %148, 0
  br i1 %149, label %150, label %155

150:                                              ; preds = %147
  %151 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 27), align 8, !tbaa !39
  %152 = icmp ne i32 %151, 0
  br i1 %152, label %153, label %155

153:                                              ; preds = %150
  %154 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !15
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %154, i32 noundef 6046, ptr noundef @.str.196)
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %155

155:                                              ; preds = %153, %150, %147
  %156 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 17), align 8, !tbaa !29
  %157 = icmp ne i32 %156, 0
  br i1 %157, label %166, label %158

158:                                              ; preds = %155
  %159 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 99), align 4, !tbaa !40
  %160 = icmp ne i32 %159, 0
  br i1 %160, label %164, label %161

161:                                              ; preds = %158
  %162 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 8), align 4, !tbaa !41
  %163 = icmp ne i32 %162, 0
  br i1 %163, label %164, label %166

164:                                              ; preds = %161, %158
  %165 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !15
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %165, i32 noundef 6047, ptr noundef @.str.197)
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %166

166:                                              ; preds = %164, %161, %155
  %167 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 99), align 4, !tbaa !40
  %168 = icmp ne i32 %167, 0
  br i1 %168, label %169, label %174

169:                                              ; preds = %166
  %170 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 8), align 4, !tbaa !41
  %171 = icmp ne i32 %170, 0
  br i1 %171, label %172, label %174

172:                                              ; preds = %169
  %173 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !15
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %173, i32 noundef 6048, ptr noundef @.str.198)
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %174

174:                                              ; preds = %172, %169, %166
  %175 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 42), align 8, !tbaa !42
  %176 = icmp ne i32 %175, 0
  br i1 %176, label %177, label %182

177:                                              ; preds = %174
  %178 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 48), align 4, !tbaa !43
  %179 = icmp ne i32 %178, 0
  br i1 %179, label %180, label %182

180:                                              ; preds = %177
  %181 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !15
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %181, i32 noundef 6362, ptr noundef @.str.199)
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %182

182:                                              ; preds = %180, %177, %174
  %183 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 42), align 8, !tbaa !42
  %184 = icmp ne i32 %183, 0
  br i1 %184, label %185, label %194

185:                                              ; preds = %182
  %186 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !20
  %187 = icmp eq i32 %186, 2
  br i1 %187, label %188, label %194

188:                                              ; preds = %185
  %189 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 29), align 8, !tbaa !11
  %190 = icmp sge i32 %189, 2
  br i1 %190, label %191, label %193

191:                                              ; preds = %188
  %192 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !15
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %192, i32 noundef 2108, ptr noundef @.str.200)
  br label %193

193:                                              ; preds = %191, %188
  store i32 0, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 42), align 8, !tbaa !42
  br label %194

194:                                              ; preds = %193, %185, %182
  %195 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 82), align 8, !tbaa !31
  %196 = icmp ne i32 %195, 0
  br i1 %196, label %197, label %205

197:                                              ; preds = %194
  %198 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 17), align 8, !tbaa !29
  %199 = icmp ne i32 %198, 0
  br i1 %199, label %205, label %200

200:                                              ; preds = %197
  %201 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 63), align 8, !tbaa !28
  %202 = icmp ne i32 %201, 0
  br i1 %202, label %203, label %205

203:                                              ; preds = %200
  %204 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !15
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %204, i32 noundef 7040, ptr noundef @.str.201)
  br label %205

205:                                              ; preds = %203, %200, %197, %194
  %206 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 84), align 8, !tbaa !44
  %207 = icmp ne i32 %206, 0
  br i1 %207, label %216, label %208

208:                                              ; preds = %205
  %209 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 39), align 4, !tbaa !25
  %210 = icmp ne i32 %209, 0
  br i1 %210, label %214, label %211

211:                                              ; preds = %208
  %212 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 5), align 4, !tbaa !45
  %213 = icmp ne i32 %212, 0
  br label %214

214:                                              ; preds = %211, %208
  %215 = phi i1 [ true, %208 ], [ %213, %211 ]
  br label %216

216:                                              ; preds = %214, %205
  %217 = phi i1 [ false, %205 ], [ %215, %214 ]
  %218 = zext i1 %217 to i32
  store i32 %218, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 105), align 8, !tbaa !46
  %219 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 105), align 8, !tbaa !46
  %220 = icmp ne i32 %219, 0
  br i1 %220, label %221, label %231

221:                                              ; preds = %216
  %222 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 32), align 4, !tbaa !37
  %223 = icmp ne i32 %222, 0
  br i1 %223, label %224, label %227

224:                                              ; preds = %221
  %225 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 31), align 8, !tbaa !36
  %226 = icmp ne i32 %225, 0
  br i1 %226, label %231, label %227

227:                                              ; preds = %224, %221
  %228 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 46), align 4, !tbaa !47
  %229 = icmp ne i32 %228, 0
  %230 = xor i1 %229, true
  br label %231

231:                                              ; preds = %227, %224, %216
  %232 = phi i1 [ false, %224 ], [ false, %216 ], [ %230, %227 ]
  %233 = zext i1 %232 to i32
  store i32 %233, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 109), align 4, !tbaa !48
  %234 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 39), align 4, !tbaa !25
  %235 = icmp ne i32 %234, 0
  br i1 %235, label %236, label %237

236:                                              ; preds = %231
  store i32 2, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 189), align 8, !tbaa !49
  br label %242

237:                                              ; preds = %231
  %238 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 103), align 4, !tbaa !38
  %239 = icmp ne i32 %238, 0
  br i1 %239, label %240, label %241

240:                                              ; preds = %237
  store i32 1, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 189), align 8, !tbaa !49
  br label %241

241:                                              ; preds = %240, %237
  br label %242

242:                                              ; preds = %241, %236
  %243 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 91), align 4, !tbaa !50
  %244 = icmp ne i32 %243, 0
  br i1 %244, label %245, label %250

245:                                              ; preds = %242
  %246 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 39), align 4, !tbaa !25
  %247 = icmp ne i32 %246, 0
  br i1 %247, label %250, label %248

248:                                              ; preds = %245
  %249 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !15
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %249, i32 noundef 6049, ptr noundef @.str.202)
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %250

250:                                              ; preds = %248, %245, %242
  %251 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 71), align 8, !tbaa !51
  %252 = icmp ne i32 %251, 0
  br i1 %252, label %259, label %253

253:                                              ; preds = %250
  %254 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 17), align 8, !tbaa !29
  %255 = icmp ne i32 %254, 0
  br i1 %255, label %256, label %273

256:                                              ; preds = %253
  %257 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 70), align 4, !tbaa !52
  %258 = icmp ne i32 %257, 0
  br i1 %258, label %259, label %273

259:                                              ; preds = %256, %250
  %260 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 71), align 8, !tbaa !51
  %261 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !20
  %262 = sub nsw i32 %261, %260
  store i32 %262, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !20
  %263 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 17), align 8, !tbaa !29
  %264 = icmp ne i32 %263, 0
  br i1 %264, label %265, label %272

265:                                              ; preds = %259
  %266 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !20
  %267 = add nsw i32 %266, 1
  store i32 %267, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !20
  %268 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 8), align 4, !tbaa !41
  %269 = icmp ne i32 %268, 0
  br i1 %269, label %270, label %271

270:                                              ; preds = %265
  store i32 1, ptr %11, align 4, !tbaa !9
  br label %271

271:                                              ; preds = %270, %265
  br label %272

272:                                              ; preds = %271, %259
  br label %273

273:                                              ; preds = %272, %256, %253
  %274 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !20
  %275 = icmp sle i32 %274, 1
  br i1 %275, label %276, label %279

276:                                              ; preds = %273
  %277 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !15
  %278 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !20
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %277, i32 noundef 6050, ptr noundef @.str.203, i32 noundef %278)
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %279

279:                                              ; preds = %276, %273
  store i32 2, ptr %14, align 4, !tbaa !9
  store double 1.000000e+00, ptr %16, align 8, !tbaa !53
  br label %280

280:                                              ; preds = %289, %279
  %281 = load i32, ptr %14, align 4, !tbaa !9
  %282 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !20
  %283 = icmp slt i32 %281, %282
  br i1 %283, label %284, label %292

284:                                              ; preds = %280
  %285 = load i32, ptr %14, align 4, !tbaa !9
  %286 = sitofp i32 %285 to double
  %287 = load double, ptr %16, align 8, !tbaa !53
  %288 = fmul double %287, %286
  store double %288, ptr %16, align 8, !tbaa !53
  br label %289

289:                                              ; preds = %284
  %290 = load i32, ptr %14, align 4, !tbaa !9
  %291 = add nsw i32 %290, 1
  store i32 %291, ptr %14, align 4, !tbaa !9
  br label %280, !llvm.loop !54

292:                                              ; preds = %280
  %293 = load double, ptr %16, align 8, !tbaa !53
  %294 = fdiv double 1.000000e+00, %293
  store double %294, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 104), align 8, !tbaa !56
  %295 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 29), align 8, !tbaa !11
  %296 = icmp sge i32 %295, 2
  br i1 %296, label %297, label %304

297:                                              ; preds = %292
  %298 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !15
  %299 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 111), align 4, !tbaa !19
  %300 = load i32, ptr %6, align 4, !tbaa !9
  %301 = load i32, ptr %8, align 4, !tbaa !9
  %302 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 71), align 8, !tbaa !51
  %303 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !20
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %298, i32 noundef 2005, ptr noundef @.str.204, i32 noundef %299, i32 noundef %300, i32 noundef %301, i32 noundef %302, i32 noundef %303)
  br label %304

304:                                              ; preds = %297, %292
  %305 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !20
  %306 = mul nsw i32 %305, 8
  store i32 %306, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 160), align 8, !tbaa !57
  %307 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 160), align 8, !tbaa !57
  %308 = sub nsw i32 %307, 8
  store i32 %308, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 161), align 4, !tbaa !58
  %309 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !20
  %310 = add nsw i32 %309, 1
  store i32 %310, ptr %10, align 4, !tbaa !9
  %311 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !20
  %312 = icmp sgt i32 %311, 6
  br i1 %312, label %313, label %314

313:                                              ; preds = %304
  store i32 0, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 43), align 4, !tbaa !59
  call void @qh_option(ptr noundef @.str.205, ptr noundef null, ptr noundef null)
  br label %314

314:                                              ; preds = %313, %304
  %315 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 22), align 4, !tbaa !60
  %316 = icmp ne i32 %315, 0
  br i1 %316, label %317, label %320

317:                                              ; preds = %314
  %318 = load i32, ptr %10, align 4, !tbaa !9
  %319 = add nsw i32 %318, 1
  store i32 %319, ptr %10, align 4, !tbaa !9
  br label %320

320:                                              ; preds = %317, %314
  %321 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 79), align 4, !tbaa !61
  %322 = icmp sgt i32 %321, 1
  br i1 %322, label %323, label %335

323:                                              ; preds = %320
  %324 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 29), align 8, !tbaa !11
  store i32 %324, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 93), align 4, !tbaa !62
  %325 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 29), align 8, !tbaa !11
  %326 = icmp ne i32 %325, 0
  br i1 %326, label %327, label %334

327:                                              ; preds = %323
  %328 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 29), align 8, !tbaa !11
  %329 = icmp ne i32 %328, -1
  br i1 %329, label %330, label %334

330:                                              ; preds = %327
  %331 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !15
  %332 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 79), align 4, !tbaa !61
  %333 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 29), align 8, !tbaa !11
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %331, i32 noundef 8162, ptr noundef @.str.206, i32 noundef %332, i32 noundef %333)
  store i32 0, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 29), align 8, !tbaa !11
  br label %334

334:                                              ; preds = %330, %327, %323
  br label %353

335:                                              ; preds = %320
  %336 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 94), align 8, !tbaa !63
  %337 = icmp ne i32 %336, -3
  br i1 %337, label %344, label %338

338:                                              ; preds = %335
  %339 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 95), align 8, !tbaa !64
  %340 = fcmp olt double %339, 0x7FDFFFFFFFFFFFFF
  br i1 %340, label %344, label %341

341:                                              ; preds = %338
  %342 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 96), align 8, !tbaa !65
  %343 = icmp ne i32 %342, 0
  br i1 %343, label %344, label %352

344:                                              ; preds = %341, %338, %335
  %345 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 29), align 8, !tbaa !11
  %346 = icmp ne i32 %345, 0
  br i1 %346, label %347, label %349

347:                                              ; preds = %344
  %348 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 29), align 8, !tbaa !11
  br label %350

349:                                              ; preds = %344
  br label %350

350:                                              ; preds = %349, %347
  %351 = phi i32 [ %348, %347 ], [ 3, %349 ]
  store i32 %351, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 92), align 8, !tbaa !66
  store i32 0, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 29), align 8, !tbaa !11
  br label %352

352:                                              ; preds = %350, %341
  br label %353

353:                                              ; preds = %352, %334
  %354 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 80), align 8, !tbaa !67
  %355 = icmp eq i32 %354, 0
  br i1 %355, label %359, label %356

356:                                              ; preds = %353
  %357 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 80), align 8, !tbaa !67
  %358 = icmp eq i32 %357, -1
  br i1 %358, label %359, label %370

359:                                              ; preds = %356, %353
  %360 = call i64 @time(ptr noundef %17) #4
  %361 = trunc i64 %360 to i32
  store i32 %361, ptr %9, align 4, !tbaa !9
  %362 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 80), align 8, !tbaa !67
  %363 = icmp eq i32 %362, -1
  br i1 %363, label %364, label %367

364:                                              ; preds = %359
  %365 = load i32, ptr %9, align 4, !tbaa !9
  %366 = sub nsw i32 0, %365
  store i32 %366, ptr %9, align 4, !tbaa !9
  call void @qh_option(ptr noundef @.str.141, ptr noundef %9, ptr noundef null)
  br label %368

367:                                              ; preds = %359
  call void @qh_option(ptr noundef @.str.207, ptr noundef %9, ptr noundef null)
  br label %368

368:                                              ; preds = %367, %364
  %369 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %369, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 80), align 8, !tbaa !67
  br label %370

370:                                              ; preds = %368, %356
  %371 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 80), align 8, !tbaa !67
  store i32 %371, ptr %9, align 4, !tbaa !9
  %372 = load i32, ptr %9, align 4, !tbaa !9
  %373 = icmp eq i32 %372, -2147483648
  br i1 %373, label %374, label %375

374:                                              ; preds = %370
  store i32 1, ptr %9, align 4, !tbaa !9
  br label %382

375:                                              ; preds = %370
  %376 = load i32, ptr %9, align 4, !tbaa !9
  %377 = icmp slt i32 %376, 0
  br i1 %377, label %378, label %381

378:                                              ; preds = %375
  %379 = load i32, ptr %9, align 4, !tbaa !9
  %380 = sub nsw i32 0, %379
  store i32 %380, ptr %9, align 4, !tbaa !9
  br label %381

381:                                              ; preds = %378, %375
  br label %382

382:                                              ; preds = %381, %374
  %383 = load i32, ptr %9, align 4, !tbaa !9
  call void @qh_srand(i32 noundef %383)
  store double 0.000000e+00, ptr %15, align 8, !tbaa !53
  store i32 1000, ptr %12, align 4, !tbaa !9
  br label %384

384:                                              ; preds = %400, %382
  %385 = load i32, ptr %12, align 4, !tbaa !9
  %386 = add nsw i32 %385, -1
  store i32 %386, ptr %12, align 4, !tbaa !9
  %387 = icmp ne i32 %385, 0
  br i1 %387, label %388, label %401

388:                                              ; preds = %384
  %389 = call i32 @qh_rand()
  store i32 %389, ptr %13, align 4, !tbaa !9
  %390 = load i32, ptr %13, align 4, !tbaa !9
  %391 = sitofp i32 %390 to double
  %392 = load double, ptr %15, align 8, !tbaa !53
  %393 = fadd double %392, %391
  store double %393, ptr %15, align 8, !tbaa !53
  %394 = load i32, ptr %13, align 4, !tbaa !9
  %395 = sitofp i32 %394 to double
  %396 = fcmp ogt double %395, 0x41DFFFFFFF800000
  br i1 %396, label %397, label %400

397:                                              ; preds = %388
  %398 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !15
  %399 = load i32, ptr %13, align 4, !tbaa !9
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %398, i32 noundef 8036, ptr noundef @.str.208, i32 noundef %399, double noundef 0x41DFFFFFFF800000)
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %400

400:                                              ; preds = %397, %388
  br label %384, !llvm.loop !68

401:                                              ; preds = %384
  %402 = load i32, ptr %9, align 4, !tbaa !9
  call void @qh_srand(i32 noundef %402)
  %403 = load double, ptr %15, align 8, !tbaa !53
  %404 = fdiv double %403, 1.000000e+03
  store double %404, ptr %15, align 8, !tbaa !53
  %405 = load double, ptr %15, align 8, !tbaa !53
  %406 = fcmp olt double %405, 0x41A9999999333334
  br i1 %406, label %410, label %407

407:                                              ; preds = %401
  %408 = load double, ptr %15, align 8, !tbaa !53
  %409 = fcmp ogt double %408, 0x41DCCCCCCC59999A
  br i1 %409, label %410, label %413

410:                                              ; preds = %407, %401
  %411 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !15
  %412 = load double, ptr %15, align 8, !tbaa !53
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %411, i32 noundef 8037, ptr noundef @.str.209, double noundef %412, double noundef 0x41CFFFFFFF800000, double noundef 0x41DFFFFFFF800000)
  br label %413

413:                                              ; preds = %410, %407
  %414 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 73), align 8, !tbaa !69
  %415 = fmul double 2.000000e+00, %414
  %416 = fdiv double %415, 0x41DFFFFFFF800000
  store double %416, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 74), align 8, !tbaa !70
  %417 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 73), align 8, !tbaa !69
  %418 = fsub double 1.000000e+00, %417
  store double %418, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 75), align 8, !tbaa !71
  %419 = load i32, ptr %6, align 4, !tbaa !9
  %420 = load i32, ptr %11, align 4, !tbaa !9
  %421 = add nsw i32 %419, %420
  %422 = load i32, ptr %10, align 4, !tbaa !9
  %423 = icmp slt i32 %421, %422
  br i1 %423, label %424, label %428

424:                                              ; preds = %413
  %425 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !15
  %426 = load i32, ptr %6, align 4, !tbaa !9
  %427 = load i32, ptr %10, align 4, !tbaa !9
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %425, i32 noundef 6214, ptr noundef @.str.210, i32 noundef %426, i32 noundef %427)
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null)
  br label %428

428:                                              ; preds = %424, %413
  call void @qh_initqhull_outputflags()
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #4
  ret void
}

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

; Function Attrs: nounwind
declare i64 @time(ptr noundef) #3

declare void @qh_srand(i32 noundef) #1

declare i32 @qh_rand() #1

; Function Attrs: nounwind uwtable
declare dso_local void @qh_initqhull_outputflags() #2

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 = { 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 #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 136}
!12 = !{!"qhT", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !13, i64 24, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !13, i64 64, !13, i64 72, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !6, i64 104, !10, i64 112, !10, i64 116, !6, i64 120, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !10, i64 152, !13, i64 160, !13, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !13, i64 192, !13, i64 200, !10, i64 208, !10, i64 212, !13, i64 216, !10, i64 224, !10, i64 228, !10, i64 232, !10, i64 236, !10, i64 240, !10, i64 244, !10, i64 248, !10, i64 252, !10, i64 256, !10, i64 260, !10, i64 264, !10, i64 268, !10, i64 272, !10, i64 276, !10, i64 280, !10, i64 284, !10, i64 288, !10, i64 292, !10, i64 296, !7, i64 300, !10, i64 416, !10, i64 420, !10, i64 424, !10, i64 428, !10, i64 432, !10, i64 436, !10, i64 440, !10, i64 444, !13, i64 448, !13, i64 456, !13, i64 464, !10, i64 472, !10, i64 476, !10, i64 480, !10, i64 484, !10, i64 488, !10, i64 492, !10, i64 496, !10, i64 500, !10, i64 504, !10, i64 508, !10, i64 512, !10, i64 516, !10, i64 520, !10, i64 524, !10, i64 528, !10, i64 532, !10, i64 536, !10, i64 540, !10, i64 544, !13, i64 552, !10, i64 560, !10, i64 564, !10, i64 568, !10, i64 572, !10, i64 576, !10, i64 580, !10, i64 584, !10, i64 588, !13, i64 592, !10, i64 600, !6, i64 608, !6, i64 616, !10, i64 624, !10, i64 628, !10, i64 632, !10, i64 636, !10, i64 640, !6, i64 648, !10, i64 656, !6, i64 664, !10, i64 672, !7, i64 676, !10, i64 932, !7, i64 936, !7, i64 1192, !10, i64 1704, !10, i64 1708, !10, i64 1712, !10, i64 1716, !10, i64 1720, !10, i64 1724, !6, i64 1728, !6, i64 1736, !6, i64 1744, !6, i64 1752, !13, i64 1760, !13, i64 1768, !13, i64 1776, !13, i64 1784, !13, i64 1792, !13, i64 1800, !13, i64 1808, !13, i64 1816, !13, i64 1824, !13, i64 1832, !13, i64 1840, !13, i64 1848, !13, i64 1856, !13, i64 1864, !6, i64 1872, !13, i64 1880, !13, i64 1888, !13, i64 1896, !13, i64 1904, !10, 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, !10, i64 2440, !10, i64 2444, !10, i64 2448, !6, i64 2456, !6, i64 2464, !6, i64 2472, !6, i64 2480, !6, i64 2488, !10, i64 2496, !10, i64 2500, !6, i64 2504, !10, i64 2512, !6, i64 2520, !10, i64 2528, !6, i64 2536, !6, i64 2544, !6, i64 2552, !6, i64 2560, !10, i64 2568, !10, i64 2572, !10, i64 2576, !10, i64 2580, !10, i64 2584, !10, i64 2588, !10, i64 2592, !10, i64 2596, !14, i64 2600, !10, i64 2608, !10, i64 2612, !10, i64 2616, !10, i64 2620, !10, i64 2624, !6, i64 2632, !6, i64 2640, !10, i64 2648, !10, i64 2652, !10, i64 2656, !13, i64 2664, !10, i64 2672, !13, i64 2680, !13, i64 2688, !13, i64 2696, !10, i64 2704, !10, i64 2708, !10, i64 2712, !10, i64 2716, !10, i64 2720, !13, i64 2728, !13, i64 2736, !10, i64 2744, !10, i64 2748, !10, i64 2752, !10, i64 2756, !10, i64 2760, !10, i64 2764, !13, i64 2768, !13, i64 2776, !10, i64 2784, !10, i64 2788, !10, i64 2792, !10, 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, !10, i64 2872, !6, i64 2880, !6, i64 2888, !10, i64 2896, !10, i64 2900, !10, i64 2904, !6, i64 2912, !13, i64 2920, !13, i64 2928, !13, i64 2936, !13, i64 2944, !10, i64 2952, !10, i64 2956, !10, i64 2960, !10, i64 2964, !10, i64 2968, !10, i64 2972, !6, i64 2976, !6, i64 2984, !10, i64 2992}
!13 = !{!"double", !7, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = !{!12, !6, i64 2424}
!16 = !{!12, !10, i64 656}
!17 = !{!12, !6, i64 648}
!18 = !{!12, !10, i64 640}
!19 = !{!12, !10, i64 636}
!20 = !{!12, !10, i64 632}
!21 = !{!12, !10, i64 232}
!22 = !{!12, !10, i64 180}
!23 = !{!12, !10, i64 252}
!24 = !{!12, !13, i64 2664}
!25 = !{!12, !10, i64 188}
!26 = !{!12, !10, i64 564}
!27 = !{!12, !10, i64 248}
!28 = !{!12, !10, i64 296}
!29 = !{!12, !10, i64 80}
!30 = !{!12, !10, i64 492}
!31 = !{!12, !10, i64 496}
!32 = !{!12, !13, i64 64}
!33 = !{!12, !13, i64 192}
!34 = !{!12, !10, i64 1724}
!35 = !{!12, !10, i64 2796}
!36 = !{!12, !10, i64 144}
!37 = !{!12, !10, i64 148}
!38 = !{!12, !10, i64 588}
!39 = !{!12, !10, i64 128}
!40 = !{!12, !10, i64 572}
!41 = !{!12, !10, i64 36}
!42 = !{!12, !10, i64 208}
!43 = !{!12, !10, i64 236}
!44 = !{!12, !10, i64 504}
!45 = !{!12, !10, i64 20}
!46 = !{!12, !10, i64 600}
!47 = !{!12, !10, i64 228}
!48 = !{!12, !10, i64 628}
!49 = !{!12, !10, i64 2616}
!50 = !{!12, !10, i64 532}
!51 = !{!12, !10, i64 440}
!52 = !{!12, !10, i64 436}
!53 = !{!13, !13, i64 0}
!54 = distinct !{!54, !55}
!55 = !{!"llvm.loop.mustprogress"}
!56 = !{!12, !13, i64 592}
!57 = !{!12, !10, i64 2440}
!58 = !{!12, !10, i64 2444}
!59 = !{!12, !10, i64 212}
!60 = !{!12, !10, i64 100}
!61 = !{!12, !10, i64 484}
!62 = !{!12, !10, i64 540}
!63 = !{!12, !10, i64 544}
!64 = !{!12, !13, i64 552}
!65 = !{!12, !10, i64 560}
!66 = !{!12, !10, i64 536}
!67 = !{!12, !10, i64 488}
!68 = distinct !{!68, !55}
!69 = !{!12, !13, i64 448}
!70 = !{!12, !13, i64 456}
!71 = !{!12, !13, i64 464}


; 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 dso_local global %struct.qhT, align 8
@.str.106 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.141 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.187 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.188 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.189 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.190 = external hidden unnamed_addr constant [104 x i8], align 1
@.str.191 = external hidden unnamed_addr constant [146 x i8], align 1
@.str.192 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.193 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.195 = external hidden unnamed_addr constant [178 x i8], align 1
@.str.196 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.197 = external hidden unnamed_addr constant [105 x i8], align 1
@.str.198 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.199 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.200 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.201 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.202 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.203 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.204 = external hidden unnamed_addr constant [112 x i8], align 1
@.str.205 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.206 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.207 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.208 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.209 = external hidden unnamed_addr constant [165 x i8], align 1
@.str.210 = external hidden unnamed_addr constant [81 x i8], align 1

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

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

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: nounwind uwtable
define dso_local void @qh_initqhull_globals(ptr noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3) local_unnamed_addr #2 {
  %5 = alloca i32, align 4
  %6 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #4
  %7 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 136), align 8, !tbaa !5
  %.not = icmp eq i32 %7, 0
  br i1 %.not, label %10, label %8

8:                                                ; preds = %4
  %9 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !13
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %9, i32 noundef 13, ptr noundef nonnull @.str.187, ptr noundef nonnull getelementptr inbounds (i8, ptr @qh_qh, i64 936), ptr noundef nonnull getelementptr inbounds (i8, ptr @qh_qh, i64 676)) #4
  br label %10

10:                                               ; preds = %8, %4
  %11 = add i32 %1, -2147483632
  %or.cond = icmp ult i32 %11, -2147483631
  br i1 %or.cond, label %12, label %14

12:                                               ; preds = %10
  %13 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !13
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %13, i32 noundef 6412, ptr noundef nonnull @.str.188, i32 noundef 2147483631, i32 noundef %1, i32 noundef %2) #4
  tail call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null) #4
  br label %14

14:                                               ; preds = %10, %12
  store i32 %3, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 656), align 8, !tbaa !14
  store ptr %0, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 648), align 8, !tbaa !15
  store i32 %1, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 640), align 8, !tbaa !16
  store i32 %2, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 636), align 4, !tbaa !17
  store i32 %2, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8, !tbaa !18
  %15 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 232), align 8, !tbaa !19
  %16 = icmp eq i32 %15, 0
  %17 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 180), align 4
  %18 = icmp eq i32 %17, 0
  %or.cond3.not = select i1 %16, i1 %18, i1 false
  %19 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 252), align 4
  %20 = icmp eq i32 %19, 0
  %or.cond5 = select i1 %or.cond3.not, i1 %20, i1 false
  %21 = load double, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2664), align 8
  %22 = fcmp ogt double %21, 0x7FDFFFFFFFFFFFFF
  %or.cond7 = select i1 %or.cond5, i1 %22, i1 false
  br i1 %or.cond7, label %23, label %27

23:                                               ; preds = %14
  store i32 1, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 188), align 4, !tbaa !20
  %24 = icmp slt i32 %2, 5
  br i1 %24, label %25, label %26

25:                                               ; preds = %23
  store i32 1, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 252), align 4, !tbaa !21
  tail call void @qh_option(ptr noundef nonnull @.str.189, ptr noundef null, ptr noundef null)
  br label %29

26:                                               ; preds = %23
  store i32 1, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 180), align 4, !tbaa !22
  tail call void @qh_option(ptr noundef nonnull @.str.115, ptr noundef null, ptr noundef null)
  br label %29

27:                                               ; preds = %14
  br i1 %18, label %29, label %28

28:                                               ; preds = %27
  store i32 1, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 188), align 4, !tbaa !20
  br label %29

29:                                               ; preds = %27, %28, %25, %26
  %30 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 232), align 8, !tbaa !19
  %.not106 = icmp eq i32 %30, 0
  %.pre152 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 252), align 4
  br i1 %.not106, label %37, label %31

31:                                               ; preds = %29
  %32 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 180), align 4, !tbaa !22
  %33 = icmp ne i32 %32, 0
  %34 = icmp ne i32 %.pre152, 0
  %or.cond9 = select i1 %33, i1 true, i1 %34
  br i1 %or.cond9, label %35, label %37

35:                                               ; preds = %31
  %36 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !13
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %36, i32 noundef 7095, ptr noundef nonnull @.str.190) #4
  %.pre = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 252), align 4
  br label %37

37:                                               ; preds = %31, %35, %29
  %38 = phi i32 [ 0, %31 ], [ %.pre, %35 ], [ %.pre152, %29 ]
  %39 = load double, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2664), align 8
  %40 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 564), align 4, !tbaa !23
  %41 = icmp ne i32 %40, 0
  %42 = fcmp olt double %39, 0x7FDFFFFFFFFFFFFF
  %or.cond13.not109.not116 = select i1 %41, i1 %42, i1 false
  %43 = icmp eq i32 %38, 0
  %or.cond15.not113 = select i1 %or.cond13.not109.not116, i1 %43, i1 false
  %44 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 248), align 8
  %45 = icmp eq i32 %44, 0
  %or.cond17.not111 = select i1 %or.cond15.not113, i1 %45, i1 false
  %46 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 296), align 8
  %47 = icmp ne i32 %46, 0
  %or.cond19 = select i1 %or.cond17.not111, i1 %47, i1 false
  br i1 %or.cond19, label %48, label %50

48:                                               ; preds = %37
  %49 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !13
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %49, i32 noundef 7038, ptr noundef nonnull @.str.191) #4
  %.pre153 = load double, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2664), align 8, !tbaa !24
  br label %50

50:                                               ; preds = %48, %37
  %51 = phi double [ %.pre153, %48 ], [ %39, %37 ]
  %52 = fcmp uge double %51, 0x7FDFFFFFFFFFFFFF
  %53 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 80), align 8
  %54 = icmp eq i32 %53, 0
  %or.cond21.not119 = select i1 %52, i1 true, i1 %54
  %55 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 492), align 4
  %56 = icmp ne i32 %55, 0
  %or.cond23 = select i1 %or.cond21.not119, i1 true, i1 %56
  %57 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 496), align 8
  %58 = icmp ne i32 %57, 0
  %or.cond25 = select i1 %or.cond23, i1 true, i1 %58
  br i1 %or.cond25, label %60, label %59

59:                                               ; preds = %50
  store i32 1, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 496), align 8, !tbaa !25
  tail call void @qh_option(ptr noundef nonnull @.str.192, ptr noundef null, ptr noundef null)
  br label %60

60:                                               ; preds = %59, %50
  %61 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 188), align 4
  %62 = icmp ne i32 %61, 0
  %63 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 248), align 8
  %64 = icmp eq i32 %63, 0
  %or.cond27.not122 = select i1 %62, i1 %64, i1 false
  %65 = load double, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 64), align 8
  %66 = fcmp ogt double %65, 0x7FDFFFFFFFFFFFFF
  %or.cond29 = select i1 %or.cond27.not122, i1 %66, i1 false
  %67 = load double, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 192), align 8
  %68 = fcmp oeq double %67, 0.000000e+00
  %or.cond31 = select i1 %or.cond29, i1 %68, i1 false
  br i1 %or.cond31, label %69, label %70

69:                                               ; preds = %60
  store i32 1, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 1724), align 4, !tbaa !26
  store i32 1, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2796), align 4, !tbaa !27
  tail call void @qh_option(ptr noundef nonnull @.str.193, ptr noundef null, ptr noundef null)
  br label %70

70:                                               ; preds = %69, %60
  %71 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 80), align 8
  %72 = icmp eq i32 %71, 0
  %73 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 144), align 8
  %74 = icmp eq i32 %73, 0
  %or.cond33.not125 = select i1 %72, i1 true, i1 %74
  %75 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 148), align 4
  %76 = icmp ne i32 %75, 0
  %or.cond35 = select i1 %or.cond33.not125, i1 true, i1 %76
  br i1 %or.cond35, label %78, label %77

77:                                               ; preds = %70
  store i32 1, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 148), align 4, !tbaa !28
  tail call void @qh_option(ptr noundef nonnull @.str.106, ptr noundef null, ptr noundef null)
  %.pre154 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 80), align 8
  br label %78

78:                                               ; preds = %77, %70
  %79 = phi i32 [ %.pre154, %77 ], [ %71, %70 ]
  %80 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 588), align 4, !tbaa !29
  %81 = icmp eq i32 %80, 0
  %82 = icmp ne i32 %79, 0
  %or.cond37 = select i1 %81, i1 true, i1 %82
  br i1 %or.cond37, label %85, label %83

83:                                               ; preds = %78
  %84 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !13
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %84, i32 noundef 6038, ptr noundef nonnull @.str.195) #4
  tail call void @qh_errexit(i32 noundef 5, ptr noundef null, ptr noundef null) #4
  %.pre155 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 80), align 8, !tbaa !30
  br label %85

85:                                               ; preds = %83, %78
  %86 = phi i32 [ %.pre155, %83 ], [ %79, %78 ]
  %87 = icmp ne i32 %86, 0
  %88 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 128), align 8
  %89 = icmp ne i32 %88, 0
  %or.cond39 = select i1 %87, i1 %89, i1 false
  br i1 %or.cond39, label %90, label %92

90:                                               ; preds = %85
  %91 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !13
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %91, i32 noundef 6046, ptr noundef nonnull @.str.196) #4
  tail call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null) #4
  %.pr = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 80), align 8, !tbaa !30
  br label %92

92:                                               ; preds = %90, %85
  %93 = phi i32 [ %.pr, %90 ], [ %86, %85 ]
  %.not126 = icmp eq i32 %93, 0
  %.pre157 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 572), align 4, !tbaa !31
  %.pre159 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 36), align 4
  br i1 %.not126, label %94, label %99

94:                                               ; preds = %92
  %95 = icmp ne i32 %.pre157, 0
  %96 = icmp ne i32 %.pre159, 0
  %or.cond41 = select i1 %95, i1 true, i1 %96
  br i1 %or.cond41, label %97, label %.thread164

97:                                               ; preds = %94
  %98 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !13
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %98, i32 noundef 6047, ptr noundef nonnull @.str.197) #4
  tail call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null) #4
  %.pre156 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 572), align 4, !tbaa !31
  %.pre158 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 36), align 4
  br label %99

99:                                               ; preds = %97, %92
  %100 = phi i32 [ %.pre158, %97 ], [ %.pre159, %92 ]
  %101 = phi i32 [ %.pre156, %97 ], [ %.pre157, %92 ]
  %102 = icmp ne i32 %101, 0
  %103 = icmp ne i32 %100, 0
  %or.cond43 = select i1 %102, i1 %103, i1 false
  br i1 %or.cond43, label %104, label %.thread164

104:                                              ; preds = %99
  %105 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !13
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %105, i32 noundef 6048, ptr noundef nonnull @.str.198) #4
  tail call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null) #4
  br label %.thread164

.thread164:                                       ; preds = %94, %104, %99
  %106 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 208), align 8, !tbaa !32
  %107 = icmp ne i32 %106, 0
  %108 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 236), align 4
  %109 = icmp ne i32 %108, 0
  %or.cond45 = select i1 %107, i1 %109, i1 false
  br i1 %or.cond45, label %110, label %112

110:                                              ; preds = %.thread164
  %111 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !13
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %111, i32 noundef 6362, ptr noundef nonnull @.str.199) #4
  tail call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null) #4
  %.pre160 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 208), align 8, !tbaa !32
  br label %112

112:                                              ; preds = %110, %.thread164
  %113 = phi i32 [ %.pre160, %110 ], [ %106, %.thread164 ]
  %114 = icmp ne i32 %113, 0
  %115 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8
  %116 = icmp eq i32 %115, 2
  %or.cond47 = select i1 %114, i1 %116, i1 false
  br i1 %or.cond47, label %117, label %123

117:                                              ; preds = %112
  %118 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 136), align 8, !tbaa !5
  %119 = icmp sgt i32 %118, 1
  br i1 %119, label %120, label %122

120:                                              ; preds = %117
  %121 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !13
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %121, i32 noundef 2108, ptr noundef nonnull @.str.200) #4
  br label %122

122:                                              ; preds = %120, %117
  store i32 0, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 208), align 8, !tbaa !32
  br label %123

123:                                              ; preds = %122, %112
  %124 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 496), align 8, !tbaa !25
  %125 = icmp ne i32 %124, 0
  %126 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 80), align 8
  %127 = icmp eq i32 %126, 0
  %or.cond49.not129 = select i1 %125, i1 %127, i1 false
  %128 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 296), align 8
  %129 = icmp ne i32 %128, 0
  %or.cond51 = select i1 %or.cond49.not129, i1 %129, i1 false
  br i1 %or.cond51, label %130, label %132

130:                                              ; preds = %123
  %131 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !13
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %131, i32 noundef 7040, ptr noundef nonnull @.str.201) #4
  br label %132

132:                                              ; preds = %130, %123
  %133 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 504), align 8, !tbaa !33
  %.not130 = icmp eq i32 %133, 0
  br i1 %.not130, label %134, label %.critedge

134:                                              ; preds = %132
  %135 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 188), align 4
  %136 = icmp ne i32 %135, 0
  %137 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 20), align 4
  %138 = icmp ne i32 %137, 0
  %139 = select i1 %136, i1 true, i1 %138
  %140 = zext i1 %139 to i32
  store i32 %140, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 600), align 8, !tbaa !34
  br i1 %139, label %141, label %.thread166

.thread166:                                       ; preds = %134
  store i32 0, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 628), align 4, !tbaa !35
  br label %152

141:                                              ; preds = %134
  %142 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 148), align 4, !tbaa !28
  %143 = icmp ne i32 %142, 0
  %144 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 144), align 8
  %145 = icmp ne i32 %144, 0
  %or.cond53 = select i1 %143, i1 %145, i1 false
  br i1 %or.cond53, label %148, label %146

146:                                              ; preds = %141
  %147 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 228), align 4, !tbaa !36
  %.not131 = icmp eq i32 %147, 0
  br label %148

.critedge:                                        ; preds = %132
  store i32 0, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 600), align 8, !tbaa !34
  %.pre161 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 188), align 4
  br label %148

148:                                              ; preds = %.critedge, %141, %146
  %149 = phi i32 [ %135, %146 ], [ %135, %141 ], [ %.pre161, %.critedge ]
  %150 = phi i1 [ %.not131, %146 ], [ false, %141 ], [ false, %.critedge ]
  %151 = zext i1 %150 to i32
  store i32 %151, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 628), align 4, !tbaa !35
  %.not132 = icmp eq i32 %149, 0
  br i1 %.not132, label %152, label %.thread

.thread:                                          ; preds = %148
  store i32 2, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2616), align 8, !tbaa !37
  br label %160

152:                                              ; preds = %.thread166, %148
  %153 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 588), align 4, !tbaa !29
  %.not133 = icmp eq i32 %153, 0
  br i1 %.not133, label %155, label %154

154:                                              ; preds = %152
  store i32 1, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2616), align 8, !tbaa !37
  br label %155

155:                                              ; preds = %152, %154
  %156 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 532), align 4, !tbaa !38
  %157 = icmp eq i32 %156, 0
  br i1 %157, label %160, label %158

158:                                              ; preds = %155
  %159 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !13
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %159, i32 noundef 6049, ptr noundef nonnull @.str.202) #4
  tail call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null) #4
  br label %160

160:                                              ; preds = %.thread, %158, %155
  %161 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 440), align 8, !tbaa !39
  %.not134 = icmp eq i32 %161, 0
  %162 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 80), align 8, !tbaa !30
  br i1 %.not134, label %163, label %168

163:                                              ; preds = %160
  %164 = icmp ne i32 %162, 0
  %165 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 436), align 4
  %166 = icmp ne i32 %165, 0
  %or.cond57 = select i1 %164, i1 %166, i1 false
  %167 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8, !tbaa !18
  br i1 %or.cond57, label %.thread143, label %thread-pre-split145

168:                                              ; preds = %160
  %169 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8, !tbaa !18
  %170 = sub nsw i32 %169, %161
  store i32 %170, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8, !tbaa !18
  %.not135 = icmp eq i32 %162, 0
  br i1 %.not135, label %thread-pre-split145, label %.thread143

.thread143:                                       ; preds = %163, %168
  %171 = phi i32 [ %170, %168 ], [ %167, %163 ]
  %172 = add nsw i32 %171, 1
  store i32 %172, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8, !tbaa !18
  %173 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 36), align 4, !tbaa !40
  %.not136 = icmp ne i32 %173, 0
  %spec.select = zext i1 %.not136 to i32
  br label %thread-pre-split145

thread-pre-split145:                              ; preds = %163, %.thread143, %168
  %174 = phi i32 [ %172, %.thread143 ], [ %170, %168 ], [ %167, %163 ]
  %.0100 = phi i32 [ %spec.select, %.thread143 ], [ 0, %168 ], [ 0, %163 ]
  %175 = icmp slt i32 %174, 2
  br i1 %175, label %176, label %178

176:                                              ; preds = %thread-pre-split145
  %177 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !13
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %177, i32 noundef 6050, ptr noundef nonnull @.str.203, i32 noundef %174) #4
  tail call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null) #4
  %.pre162 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8, !tbaa !18
  br label %178

178:                                              ; preds = %176, %thread-pre-split145
  %179 = phi i32 [ %.pre162, %176 ], [ %174, %thread-pre-split145 ]
  %180 = icmp sgt i32 %179, 2
  br i1 %180, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %178
  %181 = add nsw i32 %179, -2
  %182 = add nsw i32 %179, -3
  %xtraiter = and i32 %181, 7
  %183 = icmp ult i32 %182, 7
  br i1 %183, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = and i32 %181, -8
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %.0148 = phi double [ 1.000000e+00, %.lr.ph.preheader.new ], [ %206, %.lr.ph ]
  %.097147 = phi i32 [ 2, %.lr.ph.preheader.new ], [ %207, %.lr.ph ]
  %niter = phi i32 [ 0, %.lr.ph.preheader.new ], [ %niter.next.7, %.lr.ph ]
  %184 = uitofp nneg i32 %.097147 to double
  %185 = fmul double %.0148, %184
  %186 = or disjoint i32 %.097147, 1
  %187 = uitofp nneg i32 %186 to double
  %188 = fmul double %185, %187
  %189 = add nuw nsw i32 %.097147, 2
  %190 = uitofp nneg i32 %189 to double
  %191 = fmul double %188, %190
  %192 = add nuw nsw i32 %.097147, 3
  %193 = uitofp nneg i32 %192 to double
  %194 = fmul double %191, %193
  %195 = add nuw nsw i32 %.097147, 4
  %196 = uitofp nneg i32 %195 to double
  %197 = fmul double %194, %196
  %198 = add nuw nsw i32 %.097147, 5
  %199 = uitofp nneg i32 %198 to double
  %200 = fmul double %197, %199
  %201 = add nuw nsw i32 %.097147, 6
  %202 = uitofp nneg i32 %201 to double
  %203 = fmul double %200, %202
  %204 = add nuw nsw i32 %.097147, 7
  %205 = uitofp nneg i32 %204 to double
  %206 = fmul double %203, %205
  %207 = add nuw nsw i32 %.097147, 8
  %niter.next.7 = add i32 %niter, 8
  %niter.ncmp.7 = icmp eq i32 %niter.next.7, %unroll_iter
  br i1 %niter.ncmp.7, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !41

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph, %.lr.ph.preheader
  %.lcssa170.ph = phi double [ poison, %.lr.ph.preheader ], [ %206, %.lr.ph ]
  %.0148.unr = phi double [ 1.000000e+00, %.lr.ph.preheader ], [ %206, %.lr.ph ]
  %.097147.unr = phi i32 [ 2, %.lr.ph.preheader ], [ %207, %.lr.ph ]
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %.lr.ph.epil
  %.0148.epil = phi double [ %209, %.lr.ph.epil ], [ %.0148.unr, %._crit_edge.loopexit.unr-lcssa ]
  %.097147.epil = phi i32 [ %210, %.lr.ph.epil ], [ %.097147.unr, %._crit_edge.loopexit.unr-lcssa ]
  %epil.iter = phi i32 [ %epil.iter.next, %.lr.ph.epil ], [ 0, %._crit_edge.loopexit.unr-lcssa ]
  %208 = uitofp nneg i32 %.097147.epil to double
  %209 = fmul double %.0148.epil, %208
  %210 = add nuw nsw i32 %.097147.epil, 1
  %epil.iter.next = add i32 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i32 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge, label %.lr.ph.epil, !llvm.loop !43

._crit_edge:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %.lr.ph.epil, %178
  %.0.lcssa = phi double [ 1.000000e+00, %178 ], [ %.lcssa170.ph, %._crit_edge.loopexit.unr-lcssa ], [ %209, %.lr.ph.epil ]
  %211 = fdiv double 1.000000e+00, %.0.lcssa
  store double %211, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 592), align 8, !tbaa !45
  %212 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 136), align 8, !tbaa !5
  %213 = icmp sgt i32 %212, 1
  br i1 %213, label %214, label %218

214:                                              ; preds = %._crit_edge
  %215 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !13
  %216 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 636), align 4, !tbaa !17
  %217 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 440), align 8, !tbaa !39
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %215, i32 noundef 2005, ptr noundef nonnull @.str.204, i32 noundef %216, i32 noundef %1, i32 noundef %3, i32 noundef %217, i32 noundef %179) #4
  %.pre163 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8, !tbaa !18
  br label %218

218:                                              ; preds = %214, %._crit_edge
  %219 = phi i32 [ %.pre163, %214 ], [ %179, %._crit_edge ]
  %220 = shl nsw i32 %219, 3
  store i32 %220, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2440), align 8, !tbaa !46
  %221 = add nsw i32 %220, -8
  store i32 %221, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2444), align 4, !tbaa !47
  %222 = icmp sgt i32 %219, 6
  br i1 %222, label %223, label %224

223:                                              ; preds = %218
  store i32 0, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 212), align 4, !tbaa !48
  tail call void @qh_option(ptr noundef nonnull @.str.205, ptr noundef null, ptr noundef null)
  br label %224

224:                                              ; preds = %223, %218
  %225 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 100), align 4, !tbaa !49
  %.not137 = icmp eq i32 %225, 0
  %spec.select140.v = select i1 %.not137, i32 1, i32 2
  %spec.select140 = add nsw i32 %spec.select140.v, %219
  %226 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 484), align 4, !tbaa !50
  %227 = icmp sgt i32 %226, 1
  br i1 %227, label %228, label %233

228:                                              ; preds = %224
  %229 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 136), align 8
  store i32 %229, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 540), align 4, !tbaa !51
  %230 = add i32 %229, -1
  %or.cond59 = icmp ult i32 %230, -2
  br i1 %or.cond59, label %231, label %243

231:                                              ; preds = %228
  %232 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !13
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %232, i32 noundef 8162, ptr noundef nonnull @.str.206, i32 noundef %226, i32 noundef %229) #4
  br label %.sink.split

233:                                              ; preds = %224
  %234 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 544), align 8, !tbaa !52
  %235 = icmp ne i32 %234, -3
  %236 = load double, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 552), align 8
  %237 = fcmp olt double %236, 0x7FDFFFFFFFFFFFFF
  %or.cond61 = select i1 %235, i1 true, i1 %237
  %238 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 560), align 8
  %239 = icmp ne i32 %238, 0
  %or.cond63 = select i1 %or.cond61, i1 true, i1 %239
  br i1 %or.cond63, label %240, label %243

240:                                              ; preds = %233
  %241 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 136), align 8
  %.not138 = icmp eq i32 %241, 0
  %242 = select i1 %.not138, i32 3, i32 %241
  store i32 %242, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 536), align 8, !tbaa !53
  br label %.sink.split

.sink.split:                                      ; preds = %231, %240
  store i32 0, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 136), align 8, !tbaa !5
  br label %243

243:                                              ; preds = %.sink.split, %233, %228
  %244 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 488), align 8
  %245 = add i32 %244, 1
  %or.cond65 = icmp ult i32 %245, 2
  br i1 %or.cond65, label %246, label %255

246:                                              ; preds = %243
  %247 = call i64 @time(ptr noundef nonnull %6) #4
  %248 = trunc i64 %247 to i32
  store i32 %248, ptr %5, align 4, !tbaa !54
  %249 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 488), align 8, !tbaa !55
  %250 = icmp eq i32 %249, -1
  br i1 %250, label %251, label %253

251:                                              ; preds = %246
  %252 = sub nsw i32 0, %248
  store i32 %252, ptr %5, align 4, !tbaa !54
  br label %253

253:                                              ; preds = %246, %251
  %.str.207.sink = phi ptr [ @.str.141, %251 ], [ @.str.207, %246 ]
  call void @qh_option(ptr noundef nonnull %.str.207.sink, ptr noundef nonnull %5, ptr noundef null)
  %254 = load i32, ptr %5, align 4, !tbaa !54
  store i32 %254, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 488), align 8, !tbaa !55
  br label %255

255:                                              ; preds = %243, %253
  %256 = phi i32 [ %244, %243 ], [ %254, %253 ]
  store i32 %256, ptr %5, align 4, !tbaa !54
  %257 = icmp eq i32 %256, -2147483648
  br i1 %257, label %258, label %259

258:                                              ; preds = %255
  store i32 1, ptr %5, align 4, !tbaa !54
  br label %263

259:                                              ; preds = %255
  %260 = icmp slt i32 %256, 0
  br i1 %260, label %261, label %263

261:                                              ; preds = %259
  %262 = sub nsw i32 0, %256
  store i32 %262, ptr %5, align 4, !tbaa !54
  br label %263

263:                                              ; preds = %259, %261, %258
  %264 = phi i32 [ %256, %259 ], [ %262, %261 ], [ 1, %258 ]
  call void @qh_srand(i32 noundef %264) #4
  br label %265

265:                                              ; preds = %263, %273
  %266 = phi i32 [ 999, %263 ], [ %274, %273 ]
  %.096150 = phi double [ 0.000000e+00, %263 ], [ %269, %273 ]
  %267 = call i32 @qh_rand() #4
  %268 = sitofp i32 %267 to double
  %269 = fadd double %.096150, %268
  %270 = icmp eq i32 %267, 2147483647
  br i1 %270, label %271, label %273

271:                                              ; preds = %265
  %272 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !13
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %272, i32 noundef 8036, ptr noundef nonnull @.str.208, i32 noundef 2147483647, double noundef 0x41DFFFFFFF800000) #4
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null) #4
  br label %273

273:                                              ; preds = %271, %265
  %274 = add nsw i32 %266, -1
  %.not139 = icmp eq i32 %266, 0
  br i1 %.not139, label %275, label %265, !llvm.loop !56

275:                                              ; preds = %273
  %276 = load i32, ptr %5, align 4, !tbaa !54
  call void @qh_srand(i32 noundef %276) #4
  %277 = fdiv double %269, 1.000000e+03
  %278 = fcmp olt double %277, 0x41A9999999333334
  %279 = fcmp ogt double %277, 0x41DCCCCCCC59999A
  %or.cond67 = or i1 %278, %279
  br i1 %or.cond67, label %280, label %282

280:                                              ; preds = %275
  %281 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !13
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %281, i32 noundef 8037, ptr noundef nonnull @.str.209, double noundef %277, double noundef 0x41CFFFFFFF800000, double noundef 0x41DFFFFFFF800000) #4
  br label %282

282:                                              ; preds = %275, %280
  %283 = load double, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 448), align 8, !tbaa !57
  %284 = fmul double %283, 2.000000e+00
  %285 = fdiv double %284, 0x41DFFFFFFF800000
  store double %285, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 456), align 8, !tbaa !58
  %286 = fsub double 1.000000e+00, %283
  store double %286, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 464), align 8, !tbaa !59
  %287 = add nsw i32 %.0100, %1
  %288 = icmp slt i32 %287, %spec.select140
  br i1 %288, label %289, label %291

289:                                              ; preds = %282
  %290 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !13
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %290, i32 noundef 6214, ptr noundef nonnull @.str.210, i32 noundef %1, i32 noundef %spec.select140) #4
  call void @qh_errexit(i32 noundef 1, ptr noundef null, ptr noundef null) #4
  br label %291

291:                                              ; preds = %289, %282
  call void @qh_initqhull_outputflags()
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #4
  ret void
}

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

; Function Attrs: nounwind
declare i64 @time(ptr noundef) local_unnamed_addr #3

declare void @qh_srand(i32 noundef) local_unnamed_addr #1

declare i32 @qh_rand() local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @qh_initqhull_outputflags() local_unnamed_addr #2

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 = { 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 #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 136}
!6 = !{!"qhT", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !10, i64 24, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !10, i64 64, !10, i64 72, !7, i64 80, !7, i64 84, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !11, i64 104, !7, i64 112, !7, i64 116, !11, i64 120, !7, i64 128, !7, i64 132, !7, i64 136, !7, i64 140, !7, i64 144, !7, i64 148, !7, i64 152, !10, i64 160, !10, i64 168, !7, i64 176, !7, i64 180, !7, i64 184, !7, i64 188, !10, i64 192, !10, i64 200, !7, i64 208, !7, i64 212, !10, i64 216, !7, i64 224, !7, i64 228, !7, i64 232, !7, i64 236, !7, i64 240, !7, i64 244, !7, i64 248, !7, i64 252, !7, i64 256, !7, i64 260, !7, i64 264, !7, i64 268, !7, i64 272, !7, i64 276, !7, i64 280, !7, i64 284, !7, i64 288, !7, i64 292, !7, i64 296, !8, i64 300, !7, i64 416, !7, i64 420, !7, i64 424, !7, i64 428, !7, i64 432, !7, i64 436, !7, i64 440, !7, i64 444, !10, i64 448, !10, i64 456, !10, i64 464, !7, i64 472, !7, i64 476, !7, i64 480, !7, i64 484, !7, i64 488, !7, i64 492, !7, i64 496, !7, i64 500, !7, i64 504, !7, i64 508, !7, i64 512, !7, i64 516, !7, i64 520, !7, i64 524, !7, i64 528, !7, i64 532, !7, i64 536, !7, i64 540, !7, i64 544, !10, i64 552, !7, i64 560, !7, i64 564, !7, i64 568, !7, i64 572, !7, i64 576, !7, i64 580, !7, i64 584, !7, i64 588, !10, i64 592, !7, i64 600, !11, i64 608, !11, i64 616, !7, i64 624, !7, i64 628, !7, i64 632, !7, i64 636, !7, i64 640, !11, i64 648, !7, i64 656, !11, i64 664, !7, i64 672, !8, i64 676, !7, i64 932, !8, i64 936, !8, i64 1192, !7, i64 1704, !7, i64 1708, !7, i64 1712, !7, i64 1716, !7, i64 1720, !7, i64 1724, !11, i64 1728, !11, i64 1736, !11, i64 1744, !11, 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, !11, i64 1872, !10, i64 1880, !10, i64 1888, !10, i64 1896, !10, i64 1904, !7, i64 1912, !8, i64 1916, !8, i64 1928, !8, i64 2128, !8, i64 2168, !8, i64 2368, !11, i64 2408, !11, i64 2416, !11, i64 2424, !11, i64 2432, !7, i64 2440, !7, i64 2444, !7, i64 2448, !11, i64 2456, !11, i64 2464, !11, i64 2472, !11, i64 2480, !11, i64 2488, !7, i64 2496, !7, i64 2500, !11, i64 2504, !7, i64 2512, !11, i64 2520, !7, i64 2528, !11, i64 2536, !11, i64 2544, !11, i64 2552, !11, i64 2560, !7, i64 2568, !7, i64 2572, !7, i64 2576, !7, i64 2580, !7, i64 2584, !7, i64 2588, !7, i64 2592, !7, i64 2596, !12, i64 2600, !7, i64 2608, !7, i64 2612, !7, i64 2616, !7, i64 2620, !7, i64 2624, !11, i64 2632, !11, i64 2640, !7, i64 2648, !7, i64 2652, !7, i64 2656, !10, i64 2664, !7, i64 2672, !10, i64 2680, !10, i64 2688, !10, i64 2696, !7, i64 2704, !7, i64 2708, !7, i64 2712, !7, i64 2716, !7, i64 2720, !10, i64 2728, !10, i64 2736, !7, i64 2744, !7, i64 2748, !7, i64 2752, !7, i64 2756, !7, i64 2760, !7, i64 2764, !10, i64 2768, !10, i64 2776, !7, i64 2784, !7, i64 2788, !7, i64 2792, !7, i64 2796, !11, i64 2800, !11, i64 2808, !11, i64 2816, !11, i64 2824, !11, i64 2832, !11, i64 2840, !11, i64 2848, !11, i64 2856, !11, i64 2864, !7, i64 2872, !11, i64 2880, !11, i64 2888, !7, i64 2896, !7, i64 2900, !7, i64 2904, !11, i64 2912, !10, i64 2920, !10, i64 2928, !10, i64 2936, !10, i64 2944, !7, i64 2952, !7, i64 2956, !7, i64 2960, !7, i64 2964, !7, i64 2968, !7, i64 2972, !11, i64 2976, !11, i64 2984, !7, i64 2992}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"double", !8, i64 0}
!11 = !{!"any pointer", !8, i64 0}
!12 = !{!"long", !8, i64 0}
!13 = !{!6, !11, i64 2424}
!14 = !{!6, !7, i64 656}
!15 = !{!6, !11, i64 648}
!16 = !{!6, !7, i64 640}
!17 = !{!6, !7, i64 636}
!18 = !{!6, !7, i64 632}
!19 = !{!6, !7, i64 232}
!20 = !{!6, !7, i64 188}
!21 = !{!6, !7, i64 252}
!22 = !{!6, !7, i64 180}
!23 = !{!6, !7, i64 564}
!24 = !{!6, !10, i64 2664}
!25 = !{!6, !7, i64 496}
!26 = !{!6, !7, i64 1724}
!27 = !{!6, !7, i64 2796}
!28 = !{!6, !7, i64 148}
!29 = !{!6, !7, i64 588}
!30 = !{!6, !7, i64 80}
!31 = !{!6, !7, i64 572}
!32 = !{!6, !7, i64 208}
!33 = !{!6, !7, i64 504}
!34 = !{!6, !7, i64 600}
!35 = !{!6, !7, i64 628}
!36 = !{!6, !7, i64 228}
!37 = !{!6, !7, i64 2616}
!38 = !{!6, !7, i64 532}
!39 = !{!6, !7, i64 440}
!40 = !{!6, !7, i64 36}
!41 = distinct !{!41, !42}
!42 = !{!"llvm.loop.mustprogress"}
!43 = distinct !{!43, !44}
!44 = !{!"llvm.loop.unroll.disable"}
!45 = !{!6, !10, i64 592}
!46 = !{!6, !7, i64 2440}
!47 = !{!6, !7, i64 2444}
!48 = !{!6, !7, i64 212}
!49 = !{!6, !7, i64 100}
!50 = !{!6, !7, i64 484}
!51 = !{!6, !7, i64 540}
!52 = !{!6, !7, i64 544}
!53 = !{!6, !7, i64 536}
!54 = !{!7, !7, i64 0}
!55 = !{!6, !7, i64 488}
!56 = distinct !{!56, !42}
!57 = !{!6, !10, i64 448}
!58 = !{!6, !10, i64 456}
!59 = !{!6, !10, i64 464}


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