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

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

%struct.qhT = type { i32, i32, i32, i32, i32, i32, double, i32, i32, i32, i32, i32, i32, i32, i32, double, double, i32, i32, i32, i32, i32, i32, ptr, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, double, double, i32, i32, i32, i32, double, double, i32, i32, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [29 x i32], i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, i32, i32, i32, i32, i32, i32, i32, i32, double, i32, ptr, ptr, i32, i32, i32, i32, i32, ptr, i32, ptr, i32, [256 x i8], i32, [256 x i8], [512 x i8], i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, double, double, double, double, double, double, double, double, double, double, double, double, double, double, ptr, double, double, double, double, i32, [6 x i8], [1 x %struct.__jmp_buf_tag], [40 x i8], [1 x %struct.__jmp_buf_tag], [40 x i8], ptr, ptr, ptr, ptr, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, i32, i32, ptr, i32, ptr, i32, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i64, i32, i32, i32, i32, i32, ptr, ptr, i32, i32, i32, double, i32, double, double, double, i32, i32, i32, i32, i32, double, double, i32, i32, i32, i32, i32, i32, double, double, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, ptr, ptr, i32, i32, i32, ptr, double, double, double, double, i32, i32, i32, i32, i32, i32, ptr, ptr, i32 }
%struct.__jmp_buf_tag = type { [8 x i64], i32, %struct.__sigset_t }
%struct.__sigset_t = type { [16 x i64] }
%struct.facetT = type { double, double, double, ptr, %union.anon, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32 }
%union.anon = type { double }
%struct.setT = type { i32, [1 x %union.setelemT] }
%union.setelemT = type { ptr }
%struct.vertexT = type { ptr, ptr, ptr, ptr, i32, i32, i8 }

@qh_qh = external global %struct.qhT, align 8
@.str.18 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [140 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [80 x i8], align 1

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

declare i32 @qh_setsize(ptr noundef) #1

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

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @qh_skipfacet(ptr noundef) #2

declare i32 @qh_pointid(ptr noundef) #1

declare void @qh_settempfree(ptr noundef) #1

declare void @qh_clearcenters(i32 noundef) #1

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

; Function Attrs: nounwind
declare double @sqrt(double noundef) #3

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @qh_printbegin(ptr noundef %0, i32 noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) #2 {
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %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 i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  store ptr %0, ptr %6, align 8, !tbaa !5
  store i32 %1, ptr %7, align 4, !tbaa !9
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  store i32 %4, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  store i32 0, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 211), align 8, !tbaa !11
  %27 = load ptr, ptr %8, align 8, !tbaa !5
  %28 = load ptr, ptr %9, align 8, !tbaa !5
  %29 = load i32, ptr %10, align 4, !tbaa !9
  call void @qh_countfacets(ptr noundef %27, ptr noundef %28, i32 noundef %29, ptr noundef %11, ptr noundef %12, ptr noundef %14, ptr noundef %13, ptr noundef %15, ptr noundef %16)
  %30 = load i32, ptr %7, align 4, !tbaa !9
  switch i32 %30, label %877 [
    i32 0, label %881
    i32 1, label %31
    i32 3, label %34
    i32 4, label %37
    i32 5, label %45
    i32 6, label %45
    i32 7, label %54
    i32 8, label %659
    i32 14, label %662
    i32 9, label %683
    i32 11, label %683
    i32 12, label %683
    i32 15, label %697
    i32 13, label %697
    i32 16, label %720
    i32 19, label %723
    i32 10, label %727
    i32 17, label %730
    i32 25, label %730
    i32 20, label %853
    i32 21, label %856
    i32 26, label %873
    i32 24, label %876
  ]

31:                                               ; preds = %5
  %32 = load ptr, ptr %6, align 8, !tbaa !5
  %33 = load i32, ptr %11, align 4, !tbaa !9
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %32, i32 noundef 9033, ptr noundef @.str.22, i32 noundef %33)
  br label %881

34:                                               ; preds = %5
  %35 = load ptr, ptr %6, align 8, !tbaa !5
  %36 = load i32, ptr %11, align 4, !tbaa !9
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %35, i32 noundef 9034, ptr noundef @.str.22, i32 noundef %36)
  br label %881

37:                                               ; preds = %5
  %38 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 189), align 8, !tbaa !15
  %39 = icmp eq i32 %38, 0
  br i1 %39, label %40, label %41

40:                                               ; preds = %37
  call void @qh_clearcenters(i32 noundef 2)
  br label %41

41:                                               ; preds = %40, %37
  %42 = load ptr, ptr %6, align 8, !tbaa !5
  %43 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !16
  %44 = load i32, ptr %11, align 4, !tbaa !9
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %42, i32 noundef 9035, ptr noundef @.str.27, i32 noundef %43, i32 noundef %44)
  br label %881

45:                                               ; preds = %5, %5
  %46 = load ptr, ptr %8, align 8, !tbaa !5
  %47 = icmp ne ptr %46, null
  br i1 %47, label %48, label %53

48:                                               ; preds = %45
  %49 = load ptr, ptr %6, align 8, !tbaa !5
  %50 = load ptr, ptr %8, align 8, !tbaa !5
  %51 = load ptr, ptr %9, align 8, !tbaa !5
  %52 = load i32, ptr %10, align 4, !tbaa !9
  call void @qh_printvertexlist(ptr noundef %49, ptr noundef @.str.28, ptr noundef %50, ptr noundef %51, i32 noundef %52)
  br label %53

53:                                               ; preds = %48, %45
  br label %881

54:                                               ; preds = %5
  %55 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !16
  %56 = icmp sgt i32 %55, 4
  br i1 %56, label %57, label %58

57:                                               ; preds = %54
  br label %878

58:                                               ; preds = %54
  %59 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 103), align 4, !tbaa !17
  %60 = icmp ne i32 %59, 0
  br i1 %60, label %61, label %65

61:                                               ; preds = %58
  %62 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !16
  %63 = icmp sgt i32 %62, 3
  br i1 %63, label %64, label %65

64:                                               ; preds = %61
  br label %878

65:                                               ; preds = %61, %58
  %66 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !16
  %67 = icmp eq i32 %66, 2
  br i1 %67, label %68, label %76

68:                                               ; preds = %65
  %69 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 65), align 8, !tbaa !18
  %70 = icmp ne i32 %69, 0
  br i1 %70, label %74, label %71

71:                                               ; preds = %68
  %72 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 18), align 4, !tbaa !19
  %73 = icmp ne i32 %72, 0
  br i1 %73, label %74, label %76

74:                                               ; preds = %71, %68
  %75 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !20
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %75, i32 noundef 7049, ptr noundef @.str.29)
  br label %76

76:                                               ; preds = %74, %71, %65
  %77 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !16
  %78 = icmp eq i32 %77, 4
  br i1 %78, label %79, label %93

79:                                               ; preds = %76
  %80 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 58), align 4, !tbaa !21
  %81 = icmp ne i32 %80, 0
  br i1 %81, label %91, label %82

82:                                               ; preds = %79
  %83 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 62), align 4, !tbaa !22
  %84 = icmp ne i32 %83, 0
  br i1 %84, label %91, label %85

85:                                               ; preds = %82
  %86 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 55), align 8, !tbaa !23
  %87 = icmp eq i32 %86, 4
  br i1 %87, label %88, label %93

88:                                               ; preds = %85
  %89 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 53), align 8, !tbaa !24
  %90 = icmp ne i32 %89, 0
  br i1 %90, label %91, label %93

91:                                               ; preds = %88, %82, %79
  %92 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !20
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %92, i32 noundef 7050, ptr noundef @.str.30)
  br label %93

93:                                               ; preds = %91, %88, %85, %76
  %94 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 55), align 8, !tbaa !23
  %95 = icmp eq i32 %94, 4
  br i1 %95, label %96, label %101

96:                                               ; preds = %93
  %97 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 66), align 4, !tbaa !25
  %98 = icmp ne i32 %97, 0
  br i1 %98, label %99, label %101

99:                                               ; preds = %96
  %100 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !20
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %100, i32 noundef 7051, ptr noundef @.str.31)
  br label %101

101:                                              ; preds = %99, %96, %93
  %102 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 55), align 8, !tbaa !23
  %103 = icmp eq i32 %102, 4
  br i1 %103, label %104, label %112

104:                                              ; preds = %101
  %105 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 18), align 4, !tbaa !19
  %106 = icmp ne i32 %105, 0
  br i1 %106, label %107, label %112

107:                                              ; preds = %104
  %108 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 60), align 4, !tbaa !26
  %109 = icmp ne i32 %108, 0
  br i1 %109, label %110, label %112

110:                                              ; preds = %107
  %111 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !20
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %111, i32 noundef 7052, ptr noundef @.str.32)
  br label %112

112:                                              ; preds = %110, %107, %104, %101
  %113 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 55), align 8, !tbaa !23
  %114 = icmp eq i32 %113, 2
  br i1 %114, label %115, label %117

115:                                              ; preds = %112
  %116 = load ptr, ptr %6, align 8, !tbaa !5
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %116, i32 noundef 9036, ptr noundef @.str.33, 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 %171

117:                                              ; preds = %112
  %118 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 55), align 8, !tbaa !23
  %119 = icmp eq i32 %118, 3
  br i1 %119, label %120, label %122

120:                                              ; preds = %117
  %121 = load ptr, ptr %6, align 8, !tbaa !5
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %121, i32 noundef 9037, ptr noundef @.str.34, 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 %170

122:                                              ; preds = %117
  %123 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 55), align 8, !tbaa !23
  %124 = icmp eq i32 %123, 4
  br i1 %124, label %125, label %169

125:                                              ; preds = %122
  %126 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 217), align 8, !tbaa !27
  %127 = add i32 %126, 1
  store i32 %127, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 217), align 8, !tbaa !27
  store i32 0, ptr %18, align 4, !tbaa !9
  %128 = load ptr, ptr %8, align 8, !tbaa !5
  %129 = icmp ne ptr %128, null
  br i1 %129, label %130, label %150

130:                                              ; preds = %125
  %131 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %131, ptr %19, align 8, !tbaa !5
  br label %132

132:                                              ; preds = %145, %130
  %133 = load ptr, ptr %19, align 8, !tbaa !5
  %134 = icmp ne ptr %133, null
  br i1 %134, label %135, label %140

135:                                              ; preds = %132
  %136 = load ptr, ptr %19, align 8, !tbaa !5
  %137 = getelementptr inbounds %struct.facetT, ptr %136, i32 0, i32 7
  %138 = load ptr, ptr %137, align 8, !tbaa !28
  %139 = icmp ne ptr %138, null
  br label %140

140:                                              ; preds = %135, %132
  %141 = phi i1 [ false, %132 ], [ %139, %135 ]
  br i1 %141, label %142, label %149

142:                                              ; preds = %140
  %143 = load ptr, ptr %19, align 8, !tbaa !5
  %144 = load i32, ptr %10, align 4, !tbaa !9
  call void @qh_printend4geom(ptr noundef null, ptr noundef %143, ptr noundef %18, i32 noundef %144)
  br label %145

145:                                              ; preds = %142
  %146 = load ptr, ptr %19, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.facetT, ptr %146, i32 0, i32 7
  %148 = load ptr, ptr %147, align 8, !tbaa !28
  store ptr %148, ptr %19, align 8, !tbaa !5
  br label %132, !llvm.loop !30

149:                                              ; preds = %140
  br label %150

150:                                              ; preds = %149, %125
  store ptr null, ptr %19, align 8, !tbaa !5
  %151 = load ptr, ptr %9, align 8, !tbaa !5
  %152 = icmp ne ptr %151, null
  br i1 %152, label %153, label %166

153:                                              ; preds = %150
  %154 = load ptr, ptr %9, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.setT, ptr %154, i32 0, i32 1
  %156 = getelementptr inbounds [1 x %union.setelemT], ptr %155, i64 0, i64 0
  store ptr %156, ptr %20, align 8, !tbaa !5
  br label %157

157:                                              ; preds = %162, %153
  %158 = load ptr, ptr %20, align 8, !tbaa !5
  %159 = getelementptr inbounds ptr, ptr %158, i32 1
  store ptr %159, ptr %20, align 8, !tbaa !5
  %160 = load ptr, ptr %158, align 8, !tbaa !5
  store ptr %160, ptr %19, align 8, !tbaa !5
  %161 = icmp ne ptr %160, null
  br i1 %161, label %162, label %165

162:                                              ; preds = %157
  %163 = load ptr, ptr %19, align 8, !tbaa !5
  %164 = load i32, ptr %10, align 4, !tbaa !9
  call void @qh_printend4geom(ptr noundef null, ptr noundef %163, ptr noundef %18, i32 noundef %164)
  br label %157, !llvm.loop !32

165:                                              ; preds = %157
  br label %166

166:                                              ; preds = %165, %150
  %167 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %167, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 249), align 8, !tbaa !33
  store i32 0, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 210), align 4, !tbaa !34
  %168 = load ptr, ptr %6, align 8, !tbaa !5
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %168, i32 noundef 9038, ptr noundef @.str.35, 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 %169

169:                                              ; preds = %166, %122
  br label %170

170:                                              ; preds = %169, %120
  br label %171

171:                                              ; preds = %170, %115
  %172 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 56), align 4, !tbaa !35
  %173 = icmp ne i32 %172, 0
  br i1 %173, label %174, label %296

174:                                              ; preds = %171
  %175 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 211), align 8, !tbaa !11
  %176 = add nsw i32 %175, 1
  store i32 %176, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 211), align 8, !tbaa !11
  %177 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 112), align 8, !tbaa !36
  %178 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 225), align 8, !tbaa !37
  %179 = call i32 @qh_setsize(ptr noundef %178)
  %180 = add nsw i32 %177, %179
  store i32 %180, ptr %18, align 4, !tbaa !9
  %181 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 17), align 8, !tbaa !38
  %182 = icmp ne i32 %181, 0
  br i1 %182, label %183, label %189

183:                                              ; preds = %174
  %184 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 8), align 4, !tbaa !39
  %185 = icmp ne i32 %184, 0
  br i1 %185, label %186, label %189

186:                                              ; preds = %183
  %187 = load i32, ptr %18, align 4, !tbaa !9
  %188 = add nsw i32 %187, -1
  store i32 %188, ptr %18, align 4, !tbaa !9
  br label %189

189:                                              ; preds = %186, %183, %174
  %190 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 55), align 8, !tbaa !23
  %191 = icmp eq i32 %190, 4
  br i1 %191, label %192, label %196

192:                                              ; preds = %189
  %193 = load ptr, ptr %6, align 8, !tbaa !5
  %194 = load i32, ptr %18, align 4, !tbaa !9
  %195 = load i32, ptr %18, align 4, !tbaa !9
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %193, i32 noundef 9039, ptr noundef @.str.36, i32 noundef %194, i32 noundef %195)
  br label %200

196:                                              ; preds = %189
  %197 = load ptr, ptr %6, align 8, !tbaa !5
  %198 = load i32, ptr %18, align 4, !tbaa !9
  %199 = load i32, ptr %18, align 4, !tbaa !9
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %197, i32 noundef 9040, ptr noundef @.str.37, i32 noundef %198, i32 noundef %199)
  br label %200

200:                                              ; preds = %196, %192
  %201 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %201, ptr %17, align 4, !tbaa !9
  br label %202

202:                                              ; preds = %212, %200
  %203 = load i32, ptr %17, align 4, !tbaa !9
  %204 = add nsw i32 %203, -1
  store i32 %204, ptr %17, align 4, !tbaa !9
  %205 = icmp ne i32 %203, 0
  br i1 %205, label %206, label %214

206:                                              ; preds = %202
  %207 = load i32, ptr %17, align 4, !tbaa !9
  %208 = srem i32 %207, 20
  %209 = icmp eq i32 %208, 0
  br i1 %209, label %210, label %212

210:                                              ; preds = %206
  %211 = load ptr, ptr %6, align 8, !tbaa !5
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %211, i32 noundef 9041, ptr noundef @.str.18)
  br label %212

212:                                              ; preds = %210, %206
  %213 = load ptr, ptr %6, align 8, !tbaa !5
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %213, i32 noundef 9042, ptr noundef @.str.26)
  br label %202, !llvm.loop !40

214:                                              ; preds = %202
  %215 = load ptr, ptr %6, align 8, !tbaa !5
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %215, i32 noundef 9043, ptr noundef @.str.38)
  %216 = load i32, ptr %18, align 4, !tbaa !9
  %217 = sub nsw i32 %216, 1
  store i32 %217, ptr %17, align 4, !tbaa !9
  br label %218

218:                                              ; preds = %228, %214
  %219 = load i32, ptr %17, align 4, !tbaa !9
  %220 = add nsw i32 %219, -1
  store i32 %220, ptr %17, align 4, !tbaa !9
  %221 = icmp ne i32 %219, 0
  br i1 %221, label %222, label %230

222:                                              ; preds = %218
  %223 = load i32, ptr %17, align 4, !tbaa !9
  %224 = srem i32 %223, 20
  %225 = icmp eq i32 %224, 0
  br i1 %225, label %226, label %228

226:                                              ; preds = %222
  %227 = load ptr, ptr %6, align 8, !tbaa !5
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %227, i32 noundef 9044, ptr noundef @.str.18)
  br label %228

228:                                              ; preds = %226, %222
  %229 = load ptr, ptr %6, align 8, !tbaa !5
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %229, i32 noundef 9045, ptr noundef @.str.39)
  br label %218, !llvm.loop !41

230:                                              ; preds = %218
  %231 = load ptr, ptr %6, align 8, !tbaa !5
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %231, i32 noundef 9046, ptr noundef @.str.40)
  %232 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 113), align 8, !tbaa !42
  store ptr %232, ptr %24, align 8, !tbaa !5
  %233 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 113), align 8, !tbaa !42
  %234 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !16
  %235 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 112), align 8, !tbaa !36
  %236 = mul nsw i32 %234, %235
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds double, ptr %233, i64 %237
  store ptr %238, ptr %26, align 8, !tbaa !5
  br label %239

239:                                              ; preds = %266, %230
  %240 = load ptr, ptr %24, align 8, !tbaa !5
  %241 = load ptr, ptr %26, align 8, !tbaa !5
  %242 = icmp ult ptr %240, %241
  br i1 %242, label %243, label %271

243:                                              ; preds = %239
  %244 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 17), align 8, !tbaa !38
  %245 = icmp ne i32 %244, 0
  br i1 %245, label %246, label %255

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

249:                                              ; preds = %246
  %250 = load ptr, ptr %24, align 8, !tbaa !5
  %251 = call i32 @qh_pointid(ptr noundef %250)
  %252 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 112), align 8, !tbaa !36
  %253 = sub nsw i32 %252, 1
  %254 = icmp ne i32 %251, %253
  br i1 %254, label %255, label %265

255:                                              ; preds = %249, %246, %243
  %256 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 55), align 8, !tbaa !23
  %257 = icmp eq i32 %256, 4
  br i1 %257, label %258, label %261

258:                                              ; preds = %255
  %259 = load ptr, ptr %6, align 8, !tbaa !5
  %260 = load ptr, ptr %24, align 8, !tbaa !5
  call void @qh_printpoint(ptr noundef %259, ptr noundef null, ptr noundef %260)
  br label %264

261:                                              ; preds = %255
  %262 = load ptr, ptr %6, align 8, !tbaa !5
  %263 = load ptr, ptr %24, align 8, !tbaa !5
  call void @qh_printpoint3(ptr noundef %262, ptr noundef %263)
  br label %264

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

265:                                              ; preds = %264, %249
  br label %266

266:                                              ; preds = %265
  %267 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !16
  %268 = load ptr, ptr %24, align 8, !tbaa !5
  %269 = sext i32 %267 to i64
  %270 = getelementptr inbounds double, ptr %268, i64 %269
  store ptr %270, ptr %24, align 8, !tbaa !5
  br label %239, !llvm.loop !43

271:                                              ; preds = %239
  store ptr null, ptr %24, align 8, !tbaa !5
  %272 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 225), align 8, !tbaa !37
  %273 = icmp ne ptr %272, null
  br i1 %273, label %274, label %294

274:                                              ; preds = %271
  %275 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 225), align 8, !tbaa !37
  %276 = getelementptr inbounds %struct.setT, ptr %275, i32 0, i32 1
  %277 = getelementptr inbounds [1 x %union.setelemT], ptr %276, i64 0, i64 0
  store ptr %277, ptr %25, align 8, !tbaa !5
  br label %278

278:                                              ; preds = %292, %274
  %279 = load ptr, ptr %25, align 8, !tbaa !5
  %280 = getelementptr inbounds ptr, ptr %279, i32 1
  store ptr %280, ptr %25, align 8, !tbaa !5
  %281 = load ptr, ptr %279, align 8, !tbaa !5
  store ptr %281, ptr %24, align 8, !tbaa !5
  %282 = icmp ne ptr %281, null
  br i1 %282, label %283, label %293

283:                                              ; preds = %278
  %284 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 55), align 8, !tbaa !23
  %285 = icmp eq i32 %284, 4
  br i1 %285, label %286, label %289

286:                                              ; preds = %283
  %287 = load ptr, ptr %6, align 8, !tbaa !5
  %288 = load ptr, ptr %24, align 8, !tbaa !5
  call void @qh_printpoint(ptr noundef %287, ptr noundef null, ptr noundef %288)
  br label %292

289:                                              ; preds = %283
  %290 = load ptr, ptr %6, align 8, !tbaa !5
  %291 = load ptr, ptr %24, align 8, !tbaa !5
  call void @qh_printpoint3(ptr noundef %290, ptr noundef %291)
  br label %292

292:                                              ; preds = %289, %286
  br label %278, !llvm.loop !44

293:                                              ; preds = %278
  br label %294

294:                                              ; preds = %293, %271
  %295 = load ptr, ptr %6, align 8, !tbaa !5
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %295, i32 noundef 9047, ptr noundef @.str.41)
  br label %296

296:                                              ; preds = %294, %171
  %297 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 55), align 8, !tbaa !23
  %298 = icmp eq i32 %297, 4
  br i1 %298, label %299, label %307

299:                                              ; preds = %296
  %300 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 60), align 4, !tbaa !26
  %301 = icmp ne i32 %300, 0
  br i1 %301, label %307, label %302

302:                                              ; preds = %299
  %303 = load ptr, ptr %6, align 8, !tbaa !5
  %304 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 249), align 8, !tbaa !33
  %305 = mul nsw i32 3, %304
  %306 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 249), align 8, !tbaa !33
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %303, i32 noundef 9048, ptr noundef @.str.42, i32 noundef %305, i32 noundef %306)
  br label %307

307:                                              ; preds = %302, %299, %296
  %308 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 134), align 8, !tbaa !45
  %309 = fmul double 2.000000e+00, %308
  store double %309, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 207), align 8, !tbaa !46
  %310 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 52), align 4, !tbaa !47
  %311 = icmp ne i32 %310, 0
  br i1 %311, label %312, label %323

312:                                              ; preds = %307
  %313 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 207), align 8, !tbaa !46
  %314 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 40), align 8, !tbaa !48
  %315 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 134), align 8, !tbaa !45
  %316 = fadd double %314, %315
  %317 = fcmp olt double %313, %316
  br i1 %317, label %318, label %322

318:                                              ; preds = %312
  %319 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 40), align 8, !tbaa !48
  %320 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 134), align 8, !tbaa !45
  %321 = fadd double %319, %320
  store double %321, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 207), align 8, !tbaa !46
  br label %322

322:                                              ; preds = %318, %312
  br label %338

323:                                              ; preds = %307
  %324 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 51), align 8, !tbaa !49
  %325 = icmp ne i32 %324, 0
  br i1 %325, label %326, label %337

326:                                              ; preds = %323
  %327 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 207), align 8, !tbaa !46
  %328 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 41), align 8, !tbaa !50
  %329 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 134), align 8, !tbaa !45
  %330 = fadd double %328, %329
  %331 = fcmp olt double %327, %330
  br i1 %331, label %332, label %336

332:                                              ; preds = %326
  %333 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 41), align 8, !tbaa !50
  %334 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 134), align 8, !tbaa !45
  %335 = fadd double %333, %334
  store double %335, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 207), align 8, !tbaa !46
  br label %336

336:                                              ; preds = %332, %326
  br label %337

337:                                              ; preds = %336, %323
  br label %338

338:                                              ; preds = %337, %322
  %339 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 207), align 8, !tbaa !46
  store double %339, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 208), align 8, !tbaa !51
  %340 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 66), align 4, !tbaa !25
  %341 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 54), align 4, !tbaa !52
  %342 = add i32 %340, %341
  %343 = icmp ne i32 %342, 0
  br i1 %343, label %344, label %353

344:                                              ; preds = %338
  %345 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 208), align 8, !tbaa !51
  %346 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 135), align 8, !tbaa !53
  %347 = fmul double %346, 2.000000e-02
  %348 = fcmp olt double %345, %347
  br i1 %348, label %349, label %352

349:                                              ; preds = %344
  %350 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 135), align 8, !tbaa !53
  %351 = fmul double %350, 2.000000e-02
  store double %351, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 208), align 8, !tbaa !51
  br label %352

352:                                              ; preds = %349, %344
  br label %353

353:                                              ; preds = %352, %338
  %354 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 15), align 8, !tbaa !54
  %355 = fcmp olt double %354, 0x7FDFFFFFFFFFFFFF
  br i1 %355, label %356, label %369

356:                                              ; preds = %353
  %357 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 208), align 8, !tbaa !51
  %358 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 15), align 8, !tbaa !54
  %359 = fsub double 1.000000e+00, %358
  %360 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 135), align 8, !tbaa !53
  %361 = fmul double %359, %360
  %362 = fcmp olt double %357, %361
  br i1 %362, label %363, label %368

363:                                              ; preds = %356
  %364 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 15), align 8, !tbaa !54
  %365 = fsub double 1.000000e+00, %364
  %366 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 135), align 8, !tbaa !53
  %367 = fmul double %365, %366
  store double %367, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 208), align 8, !tbaa !51
  br label %368

368:                                              ; preds = %363, %356
  br label %392

369:                                              ; preds = %353
  %370 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 52), align 4, !tbaa !47
  %371 = icmp ne i32 %370, 0
  br i1 %371, label %391, label %372

372:                                              ; preds = %369
  %373 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 51), align 8, !tbaa !49
  %374 = icmp ne i32 %373, 0
  br i1 %374, label %375, label %391

375:                                              ; preds = %372
  %376 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 16), align 8, !tbaa !55
  %377 = fcmp olt double %376, 0x7FDFFFFFFFFFFFFF
  br i1 %377, label %378, label %391

378:                                              ; preds = %375
  %379 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 208), align 8, !tbaa !51
  %380 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 16), align 8, !tbaa !55
  %381 = fsub double 1.000000e+00, %380
  %382 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 135), align 8, !tbaa !53
  %383 = fmul double %381, %382
  %384 = fcmp olt double %379, %383
  br i1 %384, label %385, label %390

385:                                              ; preds = %378
  %386 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 16), align 8, !tbaa !55
  %387 = fsub double 1.000000e+00, %386
  %388 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 135), align 8, !tbaa !53
  %389 = fmul double %387, %388
  store double %389, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 208), align 8, !tbaa !51
  br label %390

390:                                              ; preds = %385, %378
  br label %391

391:                                              ; preds = %390, %375, %372, %369
  br label %392

392:                                              ; preds = %391, %368
  %393 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 208), align 8, !tbaa !51
  %394 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 44), align 8, !tbaa !56
  %395 = fcmp olt double %393, %394
  br i1 %395, label %396, label %398

396:                                              ; preds = %392
  %397 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 44), align 8, !tbaa !56
  store double %397, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 208), align 8, !tbaa !51
  br label %398

398:                                              ; preds = %396, %392
  %399 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 197), align 8, !tbaa !57
  %400 = fcmp olt double %399, 0x7FDFFFFFFFFFFFFF
  br i1 %400, label %401, label %408

401:                                              ; preds = %398
  %402 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 197), align 8, !tbaa !57
  %403 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !16
  %404 = sitofp i32 %403 to double
  %405 = call double @sqrt(double noundef %404) #5
  %406 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 208), align 8, !tbaa !51
  %407 = call double @llvm.fmuladd.f64(double %402, double %405, double %406)
  store double %407, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 208), align 8, !tbaa !51
  br label %408

408:                                              ; preds = %401, %398
  %409 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 55), align 8, !tbaa !23
  %410 = icmp ne i32 %409, 4
  br i1 %410, label %411, label %656

411:                                              ; preds = %408
  %412 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 54), align 4, !tbaa !52
  %413 = icmp ne i32 %412, 0
  br i1 %413, label %420, label %414

414:                                              ; preds = %411
  %415 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 66), align 4, !tbaa !25
  %416 = icmp ne i32 %415, 0
  br i1 %416, label %420, label %417

417:                                              ; preds = %414
  %418 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 53), align 8, !tbaa !24
  %419 = icmp ne i32 %418, 0
  br i1 %419, label %420, label %656

420:                                              ; preds = %417, %414, %411
  %421 = load ptr, ptr %8, align 8, !tbaa !5
  %422 = load ptr, ptr %9, align 8, !tbaa !5
  %423 = load i32, ptr %10, align 4, !tbaa !9
  %424 = call ptr @qh_facetvertices(ptr noundef %421, ptr noundef %422, i32 noundef %423)
  store ptr %424, ptr %23, align 8, !tbaa !5
  %425 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 66), align 4, !tbaa !25
  %426 = icmp ne i32 %425, 0
  br i1 %426, label %427, label %434

427:                                              ; preds = %420
  %428 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 55), align 8, !tbaa !23
  %429 = icmp sle i32 %428, 3
  br i1 %429, label %430, label %434

430:                                              ; preds = %427
  %431 = load ptr, ptr %6, align 8, !tbaa !5
  %432 = load ptr, ptr %23, align 8, !tbaa !5
  %433 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 208), align 8, !tbaa !51
  call void @qh_printspheres(ptr noundef %431, ptr noundef %432, double noundef %433)
  br label %434

434:                                              ; preds = %430, %427, %420
  %435 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 54), align 4, !tbaa !52
  %436 = icmp ne i32 %435, 0
  br i1 %436, label %440, label %437

437:                                              ; preds = %434
  %438 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 53), align 8, !tbaa !24
  %439 = icmp ne i32 %438, 0
  br i1 %439, label %440, label %655

440:                                              ; preds = %437, %434
  store i32 1, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 234), align 4, !tbaa !58
  %441 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 54), align 4, !tbaa !52
  %442 = icmp ne i32 %441, 0
  br i1 %442, label %443, label %467

443:                                              ; preds = %440
  %444 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 66), align 4, !tbaa !25
  %445 = icmp ne i32 %444, 0
  br i1 %445, label %467, label %446

446:                                              ; preds = %443
  store ptr null, ptr %21, align 8, !tbaa !5
  %447 = load ptr, ptr %23, align 8, !tbaa !5
  %448 = icmp ne ptr %447, null
  br i1 %448, label %449, label %466

449:                                              ; preds = %446
  %450 = load ptr, ptr %23, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.setT, ptr %450, i32 0, i32 1
  %452 = getelementptr inbounds [1 x %union.setelemT], ptr %451, i64 0, i64 0
  store ptr %452, ptr %22, align 8, !tbaa !5
  br label %453

453:                                              ; preds = %458, %449
  %454 = load ptr, ptr %22, align 8, !tbaa !5
  %455 = getelementptr inbounds ptr, ptr %454, i32 1
  store ptr %455, ptr %22, align 8, !tbaa !5
  %456 = load ptr, ptr %454, align 8, !tbaa !5
  store ptr %456, ptr %21, align 8, !tbaa !5
  %457 = icmp ne ptr %456, null
  br i1 %457, label %458, label %465

458:                                              ; preds = %453
  %459 = load ptr, ptr %6, align 8, !tbaa !5
  %460 = load ptr, ptr %21, align 8, !tbaa !5
  %461 = getelementptr inbounds %struct.vertexT, ptr %460, i32 0, i32 2
  %462 = load ptr, ptr %461, align 8, !tbaa !59
  %463 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 159), align 8, !tbaa !61
  %464 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 208), align 8, !tbaa !51
  call void @qh_printpointvect2(ptr noundef %459, ptr noundef %462, ptr noundef null, ptr noundef %463, double noundef %464)
  br label %453, !llvm.loop !62

465:                                              ; preds = %453
  br label %466

466:                                              ; preds = %465, %446
  br label %467

467:                                              ; preds = %466, %443, %440
  %468 = load ptr, ptr %8, align 8, !tbaa !5
  %469 = icmp ne ptr %468, null
  br i1 %469, label %470, label %564

470:                                              ; preds = %467
  %471 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %471, ptr %19, align 8, !tbaa !5
  br label %472

472:                                              ; preds = %559, %470
  %473 = load ptr, ptr %19, align 8, !tbaa !5
  %474 = icmp ne ptr %473, null
  br i1 %474, label %475, label %480

475:                                              ; preds = %472
  %476 = load ptr, ptr %19, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.facetT, ptr %476, i32 0, i32 7
  %478 = load ptr, ptr %477, align 8, !tbaa !28
  %479 = icmp ne ptr %478, null
  br label %480

480:                                              ; preds = %475, %472
  %481 = phi i1 [ false, %472 ], [ %479, %475 ]
  br i1 %481, label %482, label %563

482:                                              ; preds = %480
  %483 = load i32, ptr %10, align 4, !tbaa !9
  %484 = icmp ne i32 %483, 0
  br i1 %484, label %490, label %485

485:                                              ; preds = %482
  %486 = load ptr, ptr %19, align 8, !tbaa !5
  %487 = call i32 @qh_skipfacet(ptr noundef %486)
  %488 = icmp ne i32 %487, 0
  br i1 %488, label %489, label %490

489:                                              ; preds = %485
  br label %559

490:                                              ; preds = %485, %482
  %491 = load ptr, ptr %19, align 8, !tbaa !5
  %492 = getelementptr inbounds %struct.facetT, ptr %491, i32 0, i32 3
  %493 = load ptr, ptr %492, align 8, !tbaa !63
  %494 = icmp ne ptr %493, null
  br i1 %494, label %496, label %495

495:                                              ; preds = %490
  br label %559

496:                                              ; preds = %490
  %497 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 53), align 8, !tbaa !24
  %498 = icmp ne i32 %497, 0
  br i1 %498, label %499, label %506

499:                                              ; preds = %496
  %500 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 55), align 8, !tbaa !23
  %501 = icmp sle i32 %500, 3
  br i1 %501, label %502, label %506

502:                                              ; preds = %499
  %503 = load ptr, ptr %6, align 8, !tbaa !5
  %504 = load ptr, ptr %19, align 8, !tbaa !5
  %505 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 207), align 8, !tbaa !46
  call void @qh_printcentrum(ptr noundef %503, ptr noundef %504, double noundef %505)
  br label %506

506:                                              ; preds = %502, %499, %496
  %507 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 54), align 4, !tbaa !52
  %508 = icmp ne i32 %507, 0
  br i1 %508, label %510, label %509

509:                                              ; preds = %506
  br label %559

510:                                              ; preds = %506
  store ptr null, ptr %24, align 8, !tbaa !5
  %511 = load ptr, ptr %19, align 8, !tbaa !5
  %512 = getelementptr inbounds %struct.facetT, ptr %511, i32 0, i32 12
  %513 = load ptr, ptr %512, align 8, !tbaa !64
  %514 = icmp ne ptr %513, null
  br i1 %514, label %515, label %534

515:                                              ; preds = %510
  %516 = load ptr, ptr %19, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.facetT, ptr %516, i32 0, i32 12
  %518 = load ptr, ptr %517, align 8, !tbaa !64
  %519 = getelementptr inbounds %struct.setT, ptr %518, i32 0, i32 1
  %520 = getelementptr inbounds [1 x %union.setelemT], ptr %519, i64 0, i64 0
  store ptr %520, ptr %25, align 8, !tbaa !5
  br label %521

521:                                              ; preds = %526, %515
  %522 = load ptr, ptr %25, align 8, !tbaa !5
  %523 = getelementptr inbounds ptr, ptr %522, i32 1
  store ptr %523, ptr %25, align 8, !tbaa !5
  %524 = load ptr, ptr %522, align 8, !tbaa !5
  store ptr %524, ptr %24, align 8, !tbaa !5
  %525 = icmp ne ptr %524, null
  br i1 %525, label %526, label %533

526:                                              ; preds = %521
  %527 = load ptr, ptr %6, align 8, !tbaa !5
  %528 = load ptr, ptr %24, align 8, !tbaa !5
  %529 = load ptr, ptr %19, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct.facetT, ptr %529, i32 0, i32 3
  %531 = load ptr, ptr %530, align 8, !tbaa !63
  %532 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 208), align 8, !tbaa !51
  call void @qh_printpointvect2(ptr noundef %527, ptr noundef %528, ptr noundef %531, ptr noundef null, double noundef %532)
  br label %521, !llvm.loop !65

533:                                              ; preds = %521
  br label %534

534:                                              ; preds = %533, %510
  store ptr null, ptr %24, align 8, !tbaa !5
  %535 = load ptr, ptr %19, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.facetT, ptr %535, i32 0, i32 11
  %537 = load ptr, ptr %536, align 8, !tbaa !66
  %538 = icmp ne ptr %537, null
  br i1 %538, label %539, label %558

539:                                              ; preds = %534
  %540 = load ptr, ptr %19, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.facetT, ptr %540, i32 0, i32 11
  %542 = load ptr, ptr %541, align 8, !tbaa !66
  %543 = getelementptr inbounds %struct.setT, ptr %542, i32 0, i32 1
  %544 = getelementptr inbounds [1 x %union.setelemT], ptr %543, i64 0, i64 0
  store ptr %544, ptr %25, align 8, !tbaa !5
  br label %545

545:                                              ; preds = %550, %539
  %546 = load ptr, ptr %25, align 8, !tbaa !5
  %547 = getelementptr inbounds ptr, ptr %546, i32 1
  store ptr %547, ptr %25, align 8, !tbaa !5
  %548 = load ptr, ptr %546, align 8, !tbaa !5
  store ptr %548, ptr %24, align 8, !tbaa !5
  %549 = icmp ne ptr %548, null
  br i1 %549, label %550, label %557

550:                                              ; preds = %545
  %551 = load ptr, ptr %6, align 8, !tbaa !5
  %552 = load ptr, ptr %24, align 8, !tbaa !5
  %553 = load ptr, ptr %19, align 8, !tbaa !5
  %554 = getelementptr inbounds %struct.facetT, ptr %553, i32 0, i32 3
  %555 = load ptr, ptr %554, align 8, !tbaa !63
  %556 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 208), align 8, !tbaa !51
  call void @qh_printpointvect2(ptr noundef %551, ptr noundef %552, ptr noundef %555, ptr noundef null, double noundef %556)
  br label %545, !llvm.loop !67

557:                                              ; preds = %545
  br label %558

558:                                              ; preds = %557, %534
  br label %559

559:                                              ; preds = %558, %509, %495, %489
  %560 = load ptr, ptr %19, align 8, !tbaa !5
  %561 = getelementptr inbounds %struct.facetT, ptr %560, i32 0, i32 7
  %562 = load ptr, ptr %561, align 8, !tbaa !28
  store ptr %562, ptr %19, align 8, !tbaa !5
  br label %472, !llvm.loop !68

563:                                              ; preds = %480
  br label %564

564:                                              ; preds = %563, %467
  store ptr null, ptr %19, align 8, !tbaa !5
  %565 = load ptr, ptr %9, align 8, !tbaa !5
  %566 = icmp ne ptr %565, null
  br i1 %566, label %567, label %654

567:                                              ; preds = %564
  %568 = load ptr, ptr %9, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.setT, ptr %568, i32 0, i32 1
  %570 = getelementptr inbounds [1 x %union.setelemT], ptr %569, i64 0, i64 0
  store ptr %570, ptr %20, align 8, !tbaa !5
  br label %571

571:                                              ; preds = %652, %603, %589, %583, %567
  %572 = load ptr, ptr %20, align 8, !tbaa !5
  %573 = getelementptr inbounds ptr, ptr %572, i32 1
  store ptr %573, ptr %20, align 8, !tbaa !5
  %574 = load ptr, ptr %572, align 8, !tbaa !5
  store ptr %574, ptr %19, align 8, !tbaa !5
  %575 = icmp ne ptr %574, null
  br i1 %575, label %576, label %653

576:                                              ; preds = %571
  %577 = load i32, ptr %10, align 4, !tbaa !9
  %578 = icmp ne i32 %577, 0
  br i1 %578, label %584, label %579

579:                                              ; preds = %576
  %580 = load ptr, ptr %19, align 8, !tbaa !5
  %581 = call i32 @qh_skipfacet(ptr noundef %580)
  %582 = icmp ne i32 %581, 0
  br i1 %582, label %583, label %584

583:                                              ; preds = %579
  br label %571, !llvm.loop !69

584:                                              ; preds = %579, %576
  %585 = load ptr, ptr %19, align 8, !tbaa !5
  %586 = getelementptr inbounds %struct.facetT, ptr %585, i32 0, i32 3
  %587 = load ptr, ptr %586, align 8, !tbaa !63
  %588 = icmp ne ptr %587, null
  br i1 %588, label %590, label %589

589:                                              ; preds = %584
  br label %571, !llvm.loop !69

590:                                              ; preds = %584
  %591 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 53), align 8, !tbaa !24
  %592 = icmp ne i32 %591, 0
  br i1 %592, label %593, label %600

593:                                              ; preds = %590
  %594 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 55), align 8, !tbaa !23
  %595 = icmp sle i32 %594, 3
  br i1 %595, label %596, label %600

596:                                              ; preds = %593
  %597 = load ptr, ptr %6, align 8, !tbaa !5
  %598 = load ptr, ptr %19, align 8, !tbaa !5
  %599 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 207), align 8, !tbaa !46
  call void @qh_printcentrum(ptr noundef %597, ptr noundef %598, double noundef %599)
  br label %600

600:                                              ; preds = %596, %593, %590
  %601 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 54), align 4, !tbaa !52
  %602 = icmp ne i32 %601, 0
  br i1 %602, label %604, label %603

603:                                              ; preds = %600
  br label %571, !llvm.loop !69

604:                                              ; preds = %600
  store ptr null, ptr %24, align 8, !tbaa !5
  %605 = load ptr, ptr %19, align 8, !tbaa !5
  %606 = getelementptr inbounds %struct.facetT, ptr %605, i32 0, i32 12
  %607 = load ptr, ptr %606, align 8, !tbaa !64
  %608 = icmp ne ptr %607, null
  br i1 %608, label %609, label %628

609:                                              ; preds = %604
  %610 = load ptr, ptr %19, align 8, !tbaa !5
  %611 = getelementptr inbounds %struct.facetT, ptr %610, i32 0, i32 12
  %612 = load ptr, ptr %611, align 8, !tbaa !64
  %613 = getelementptr inbounds %struct.setT, ptr %612, i32 0, i32 1
  %614 = getelementptr inbounds [1 x %union.setelemT], ptr %613, i64 0, i64 0
  store ptr %614, ptr %25, align 8, !tbaa !5
  br label %615

615:                                              ; preds = %620, %609
  %616 = load ptr, ptr %25, align 8, !tbaa !5
  %617 = getelementptr inbounds ptr, ptr %616, i32 1
  store ptr %617, ptr %25, align 8, !tbaa !5
  %618 = load ptr, ptr %616, align 8, !tbaa !5
  store ptr %618, ptr %24, align 8, !tbaa !5
  %619 = icmp ne ptr %618, null
  br i1 %619, label %620, label %627

620:                                              ; preds = %615
  %621 = load ptr, ptr %6, align 8, !tbaa !5
  %622 = load ptr, ptr %24, align 8, !tbaa !5
  %623 = load ptr, ptr %19, align 8, !tbaa !5
  %624 = getelementptr inbounds %struct.facetT, ptr %623, i32 0, i32 3
  %625 = load ptr, ptr %624, align 8, !tbaa !63
  %626 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 208), align 8, !tbaa !51
  call void @qh_printpointvect2(ptr noundef %621, ptr noundef %622, ptr noundef %625, ptr noundef null, double noundef %626)
  br label %615, !llvm.loop !70

627:                                              ; preds = %615
  br label %628

628:                                              ; preds = %627, %604
  store ptr null, ptr %24, align 8, !tbaa !5
  %629 = load ptr, ptr %19, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.facetT, ptr %629, i32 0, i32 11
  %631 = load ptr, ptr %630, align 8, !tbaa !66
  %632 = icmp ne ptr %631, null
  br i1 %632, label %633, label %652

633:                                              ; preds = %628
  %634 = load ptr, ptr %19, align 8, !tbaa !5
  %635 = getelementptr inbounds %struct.facetT, ptr %634, i32 0, i32 11
  %636 = load ptr, ptr %635, align 8, !tbaa !66
  %637 = getelementptr inbounds %struct.setT, ptr %636, i32 0, i32 1
  %638 = getelementptr inbounds [1 x %union.setelemT], ptr %637, i64 0, i64 0
  store ptr %638, ptr %25, align 8, !tbaa !5
  br label %639

639:                                              ; preds = %644, %633
  %640 = load ptr, ptr %25, align 8, !tbaa !5
  %641 = getelementptr inbounds ptr, ptr %640, i32 1
  store ptr %641, ptr %25, align 8, !tbaa !5
  %642 = load ptr, ptr %640, align 8, !tbaa !5
  store ptr %642, ptr %24, align 8, !tbaa !5
  %643 = icmp ne ptr %642, null
  br i1 %643, label %644, label %651

644:                                              ; preds = %639
  %645 = load ptr, ptr %6, align 8, !tbaa !5
  %646 = load ptr, ptr %24, align 8, !tbaa !5
  %647 = load ptr, ptr %19, align 8, !tbaa !5
  %648 = getelementptr inbounds %struct.facetT, ptr %647, i32 0, i32 3
  %649 = load ptr, ptr %648, align 8, !tbaa !63
  %650 = load double, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 208), align 8, !tbaa !51
  call void @qh_printpointvect2(ptr noundef %645, ptr noundef %646, ptr noundef %649, ptr noundef null, double noundef %650)
  br label %639, !llvm.loop !71

651:                                              ; preds = %639
  br label %652

652:                                              ; preds = %651, %628
  br label %571, !llvm.loop !69

653:                                              ; preds = %571
  br label %654

654:                                              ; preds = %653, %564
  br label %655

655:                                              ; preds = %654, %437
  call void @qh_settempfree(ptr noundef %23)
  br label %656

656:                                              ; preds = %655, %417, %408
  %657 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 217), align 8, !tbaa !27
  %658 = add i32 %657, 1
  store i32 %658, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 217), align 8, !tbaa !27
  br label %881

659:                                              ; preds = %5
  %660 = load ptr, ptr %6, align 8, !tbaa !5
  %661 = load i32, ptr %11, align 4, !tbaa !9
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %660, i32 noundef 9049, ptr noundef @.str.22, i32 noundef %661)
  br label %881

662:                                              ; preds = %5
  %663 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 103), align 4, !tbaa !17
  %664 = icmp ne i32 %663, 0
  br i1 %664, label %665, label %670

665:                                              ; preds = %662
  %666 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 63), align 8, !tbaa !72
  %667 = icmp ne i32 %666, 0
  br i1 %667, label %668, label %670

668:                                              ; preds = %665
  %669 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !20
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %669, i32 noundef 7053, ptr noundef @.str.43)
  br label %670

670:                                              ; preds = %668, %665, %662
  %671 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 184), align 8, !tbaa !73
  store i32 %671, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 210), align 4, !tbaa !34
  %672 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !16
  %673 = icmp sle i32 %672, 3
  br i1 %673, label %674, label %677

674:                                              ; preds = %670
  %675 = load ptr, ptr %6, align 8, !tbaa !5
  %676 = load i32, ptr %11, align 4, !tbaa !9
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %675, i32 noundef 9050, ptr noundef @.str.22, i32 noundef %676)
  br label %682

677:                                              ; preds = %670
  %678 = load ptr, ptr %6, align 8, !tbaa !5
  %679 = load i32, ptr %12, align 4, !tbaa !9
  %680 = load i32, ptr %13, align 4, !tbaa !9
  %681 = add nsw i32 %679, %680
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %678, i32 noundef 9051, ptr noundef @.str.22, i32 noundef %681)
  br label %682

682:                                              ; preds = %677, %674
  br label %881

683:                                              ; preds = %5, %5, %5
  %684 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 12), align 4, !tbaa !74
  %685 = icmp ne i32 %684, 0
  br i1 %685, label %686, label %691

686:                                              ; preds = %683
  %687 = load ptr, ptr %6, align 8, !tbaa !5
  %688 = load i32, ptr %11, align 4, !tbaa !9
  %689 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !16
  %690 = add nsw i32 %689, 1
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %687, i32 noundef 9052, ptr noundef @.str.44, 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), i32 noundef %688, i32 noundef %690)
  br label %696

691:                                              ; preds = %683
  %692 = load ptr, ptr %6, align 8, !tbaa !5
  %693 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !16
  %694 = add nsw i32 %693, 1
  %695 = load i32, ptr %11, align 4, !tbaa !9
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %692, i32 noundef 9053, ptr noundef @.str.27, i32 noundef %694, i32 noundef %695)
  br label %696

696:                                              ; preds = %691, %686
  br label %881

697:                                              ; preds = %5, %5
  %698 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !16
  %699 = icmp sgt i32 %698, 3
  br i1 %699, label %700, label %701

700:                                              ; preds = %697
  br label %878

701:                                              ; preds = %697
  %702 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 103), align 4, !tbaa !17
  %703 = icmp ne i32 %702, 0
  br i1 %703, label %704, label %706

704:                                              ; preds = %701
  %705 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !20
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %705, i32 noundef 7054, ptr noundef @.str.45)
  br label %706

706:                                              ; preds = %704, %701
  %707 = load i32, ptr %7, align 4, !tbaa !9
  %708 = icmp eq i32 %707, 13
  br i1 %708, label %709, label %717

709:                                              ; preds = %706
  %710 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !16
  %711 = icmp eq i32 %710, 2
  br i1 %711, label %712, label %714

712:                                              ; preds = %709
  %713 = load ptr, ptr %6, align 8, !tbaa !5
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %713, i32 noundef 9054, ptr noundef @.str.46)
  br label %716

714:                                              ; preds = %709
  %715 = load ptr, ptr %6, align 8, !tbaa !5
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %715, i32 noundef 9055, ptr noundef @.str.47)
  br label %716

716:                                              ; preds = %714, %712
  br label %719

717:                                              ; preds = %706
  %718 = load ptr, ptr %6, align 8, !tbaa !5
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %718, i32 noundef 9056, ptr noundef @.str.48)
  br label %719

719:                                              ; preds = %717, %716
  store i32 0, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 210), align 4, !tbaa !34
  br label %881

720:                                              ; preds = %5
  %721 = load ptr, ptr %6, align 8, !tbaa !5
  %722 = load i32, ptr %11, align 4, !tbaa !9
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %721, i32 noundef 9057, ptr noundef @.str.22, i32 noundef %722)
  br label %881

723:                                              ; preds = %5
  %724 = load ptr, ptr %6, align 8, !tbaa !5
  %725 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !16
  %726 = load i32, ptr %11, align 4, !tbaa !9
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %724, i32 noundef 9058, ptr noundef @.str.27, i32 noundef %725, i32 noundef %726)
  br label %881

727:                                              ; preds = %5
  %728 = load ptr, ptr %6, align 8, !tbaa !5
  %729 = load i32, ptr %11, align 4, !tbaa !9
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %728, i32 noundef 9059, ptr noundef @.str.22, i32 noundef %729)
  br label %881

730:                                              ; preds = %5, %5
  %731 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 103), align 4, !tbaa !17
  %732 = icmp ne i32 %731, 0
  br i1 %732, label %733, label %734

733:                                              ; preds = %730
  br label %878

734:                                              ; preds = %730
  %735 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !16
  store i32 %735, ptr %18, align 4, !tbaa !9
  %736 = load i32, ptr %7, align 4, !tbaa !9
  %737 = icmp eq i32 %736, 17
  br i1 %737, label %741, label %738

738:                                              ; preds = %734
  %739 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !16
  %740 = icmp eq i32 %739, 2
  br i1 %740, label %741, label %751

741:                                              ; preds = %738, %734
  %742 = load ptr, ptr %6, align 8, !tbaa !5
  %743 = load i32, ptr %18, align 4, !tbaa !9
  %744 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 112), align 8, !tbaa !36
  %745 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 225), align 8, !tbaa !37
  %746 = call i32 @qh_setsize(ptr noundef %745)
  %747 = add nsw i32 %744, %746
  %748 = load i32, ptr %11, align 4, !tbaa !9
  %749 = load i32, ptr %14, align 4, !tbaa !9
  %750 = sdiv i32 %749, 2
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %742, i32 noundef 9060, ptr noundef @.str.49, i32 noundef %743, i32 noundef %747, i32 noundef %748, i32 noundef %750)
  br label %774

751:                                              ; preds = %738
  %752 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 112), align 8, !tbaa !36
  %753 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 225), align 8, !tbaa !37
  %754 = call i32 @qh_setsize(ptr noundef %753)
  %755 = add nsw i32 %752, %754
  store i32 %755, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 210), align 4, !tbaa !34
  %756 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 17), align 8, !tbaa !38
  %757 = icmp ne i32 %756, 0
  br i1 %757, label %758, label %761

758:                                              ; preds = %751
  %759 = load i32, ptr %18, align 4, !tbaa !9
  %760 = add nsw i32 %759, -1
  store i32 %760, ptr %18, align 4, !tbaa !9
  br label %761

761:                                              ; preds = %758, %751
  %762 = load ptr, ptr %6, align 8, !tbaa !5
  %763 = load i32, ptr %18, align 4, !tbaa !9
  %764 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 210), align 4, !tbaa !34
  %765 = load i32, ptr %11, align 4, !tbaa !9
  %766 = add nsw i32 %764, %765
  %767 = load i32, ptr %12, align 4, !tbaa !9
  %768 = sub nsw i32 %766, %767
  %769 = load i32, ptr %12, align 4, !tbaa !9
  %770 = load i32, ptr %13, align 4, !tbaa !9
  %771 = add nsw i32 %769, %770
  %772 = load i32, ptr %14, align 4, !tbaa !9
  %773 = sdiv i32 %772, 2
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %762, i32 noundef 9061, ptr noundef @.str.49, i32 noundef %763, i32 noundef %768, i32 noundef %771, i32 noundef %773)
  br label %774

774:                                              ; preds = %761, %741
  %775 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 113), align 8, !tbaa !42
  store ptr %775, ptr %24, align 8, !tbaa !5
  %776 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 113), align 8, !tbaa !42
  %777 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !16
  %778 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 112), align 8, !tbaa !36
  %779 = mul nsw i32 %777, %778
  %780 = sext i32 %779 to i64
  %781 = getelementptr inbounds double, ptr %776, i64 %780
  store ptr %781, ptr %26, align 8, !tbaa !5
  br label %782

782:                                              ; preds = %790, %774
  %783 = load ptr, ptr %24, align 8, !tbaa !5
  %784 = load ptr, ptr %26, align 8, !tbaa !5
  %785 = icmp ult ptr %783, %784
  br i1 %785, label %786, label %795

786:                                              ; preds = %782
  %787 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 157), align 8, !tbaa !75
  %788 = load i32, ptr %18, align 4, !tbaa !9
  %789 = load ptr, ptr %24, align 8, !tbaa !5
  call void @qh_printpointid(ptr noundef %787, ptr noundef null, i32 noundef %788, ptr noundef %789, i32 noundef -1)
  br label %790

790:                                              ; preds = %786
  %791 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !16
  %792 = load ptr, ptr %24, align 8, !tbaa !5
  %793 = sext i32 %791 to i64
  %794 = getelementptr inbounds double, ptr %792, i64 %793
  store ptr %794, ptr %24, align 8, !tbaa !5
  br label %782, !llvm.loop !76

795:                                              ; preds = %782
  store ptr null, ptr %24, align 8, !tbaa !5
  %796 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 225), align 8, !tbaa !37
  %797 = icmp ne ptr %796, null
  br i1 %797, label %798, label %812

798:                                              ; preds = %795
  %799 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 225), align 8, !tbaa !37
  %800 = getelementptr inbounds %struct.setT, ptr %799, i32 0, i32 1
  %801 = getelementptr inbounds [1 x %union.setelemT], ptr %800, i64 0, i64 0
  store ptr %801, ptr %25, align 8, !tbaa !5
  br label %802

802:                                              ; preds = %807, %798
  %803 = load ptr, ptr %25, align 8, !tbaa !5
  %804 = getelementptr inbounds ptr, ptr %803, i32 1
  store ptr %804, ptr %25, align 8, !tbaa !5
  %805 = load ptr, ptr %803, align 8, !tbaa !5
  store ptr %805, ptr %24, align 8, !tbaa !5
  %806 = icmp ne ptr %805, null
  br i1 %806, label %807, label %811

807:                                              ; preds = %802
  %808 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 157), align 8, !tbaa !75
  %809 = load i32, ptr %18, align 4, !tbaa !9
  %810 = load ptr, ptr %24, align 8, !tbaa !5
  call void @qh_printpointid(ptr noundef %808, ptr noundef null, i32 noundef %809, ptr noundef %810, i32 noundef -1)
  br label %802, !llvm.loop !77

811:                                              ; preds = %802
  br label %812

812:                                              ; preds = %811, %795
  %813 = load i32, ptr %7, align 4, !tbaa !9
  %814 = icmp eq i32 %813, 25
  br i1 %814, label %815, label %852

815:                                              ; preds = %812
  %816 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !16
  %817 = icmp sgt i32 %816, 2
  br i1 %817, label %818, label %852

818:                                              ; preds = %815
  %819 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 163), align 8, !tbaa !78
  store ptr %819, ptr %19, align 8, !tbaa !5
  br label %820

820:                                              ; preds = %847, %818
  %821 = load ptr, ptr %19, align 8, !tbaa !5
  %822 = icmp ne ptr %821, null
  br i1 %822, label %823, label %828

823:                                              ; preds = %820
  %824 = load ptr, ptr %19, align 8, !tbaa !5
  %825 = getelementptr inbounds %struct.facetT, ptr %824, i32 0, i32 7
  %826 = load ptr, ptr %825, align 8, !tbaa !28
  %827 = icmp ne ptr %826, null
  br label %828

828:                                              ; preds = %823, %820
  %829 = phi i1 [ false, %820 ], [ %827, %823 ]
  br i1 %829, label %830, label %851

830:                                              ; preds = %828
  %831 = load ptr, ptr %19, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.facetT, ptr %831, i32 0, i32 15
  %833 = load i32, ptr %832, align 8
  %834 = lshr i32 %833, 13
  %835 = and i32 %834, 1
  %836 = icmp ne i32 %835, 0
  br i1 %836, label %846, label %837

837:                                              ; preds = %830
  %838 = load ptr, ptr %19, align 8, !tbaa !5
  %839 = getelementptr inbounds %struct.facetT, ptr %838, i32 0, i32 13
  %840 = load i32, ptr %839, align 8, !tbaa !79
  %841 = icmp ne i32 %840, 0
  br i1 %841, label %842, label %846

842:                                              ; preds = %837
  %843 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 157), align 8, !tbaa !75
  %844 = load i32, ptr %7, align 4, !tbaa !9
  %845 = load ptr, ptr %19, align 8, !tbaa !5
  call void @qh_printcenter(ptr noundef %843, i32 noundef %844, ptr noundef null, ptr noundef %845)
  br label %846

846:                                              ; preds = %842, %837, %830
  br label %847

847:                                              ; preds = %846
  %848 = load ptr, ptr %19, align 8, !tbaa !5
  %849 = getelementptr inbounds %struct.facetT, ptr %848, i32 0, i32 7
  %850 = load ptr, ptr %849, align 8, !tbaa !28
  store ptr %850, ptr %19, align 8, !tbaa !5
  br label %820, !llvm.loop !80

851:                                              ; preds = %828
  br label %852

852:                                              ; preds = %851, %815, %812
  br label %881

853:                                              ; preds = %5
  %854 = load ptr, ptr %6, align 8, !tbaa !5
  %855 = load i32, ptr %15, align 4, !tbaa !9
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %854, i32 noundef 9062, ptr noundef @.str.22, i32 noundef %855)
  br label %881

856:                                              ; preds = %5
  %857 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 103), align 4, !tbaa !17
  %858 = icmp ne i32 %857, 0
  br i1 %858, label %860, label %859

859:                                              ; preds = %856
  br label %878

860:                                              ; preds = %856
  %861 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 12), align 4, !tbaa !74
  %862 = icmp ne i32 %861, 0
  br i1 %862, label %863, label %867

863:                                              ; preds = %860
  %864 = load ptr, ptr %6, align 8, !tbaa !5
  %865 = load i32, ptr %11, align 4, !tbaa !9
  %866 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !16
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %864, i32 noundef 9063, ptr noundef @.str.50, 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), i32 noundef %865, i32 noundef %866)
  br label %872

867:                                              ; preds = %860
  %868 = load ptr, ptr %6, align 8, !tbaa !5
  %869 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !16
  %870 = sub nsw i32 %869, 1
  %871 = load i32, ptr %11, align 4, !tbaa !9
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %868, i32 noundef 9064, ptr noundef @.str.27, i32 noundef %870, i32 noundef %871)
  br label %872

872:                                              ; preds = %867, %863
  br label %881

873:                                              ; preds = %5
  %874 = load ptr, ptr %6, align 8, !tbaa !5
  %875 = load i32, ptr %11, align 4, !tbaa !9
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %874, i32 noundef 9065, ptr noundef @.str.22, i32 noundef %875)
  br label %881

876:                                              ; preds = %5
  br label %877

877:                                              ; preds = %876, %5
  br label %878

878:                                              ; preds = %877, %859, %733, %700, %64, %57
  %879 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !20
  %880 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !16
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %879, i32 noundef 6068, ptr noundef @.str.51, i32 noundef %880)
  call void @qh_errexit(i32 noundef 5, ptr noundef null, ptr noundef null)
  br label %881

881:                                              ; preds = %878, %873, %872, %853, %852, %727, %723, %720, %719, %696, %682, %659, %656, %53, %41, %34, %31, %5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  ret void
}

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @qh_printpointid(ptr noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef) #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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { 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 2752}
!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, !10, i64 2616}
!16 = !{!12, !10, i64 632}
!17 = !{!12, !10, i64 588}
!18 = !{!12, !10, i64 416}
!19 = !{!12, !10, i64 84}
!20 = !{!12, !6, i64 2424}
!21 = !{!12, !10, i64 276}
!22 = !{!12, !10, i64 292}
!23 = !{!12, !10, i64 264}
!24 = !{!12, !10, i64 256}
!25 = !{!12, !10, i64 420}
!26 = !{!12, !10, i64 284}
!27 = !{!12, !10, i64 2784}
!28 = !{!29, !6, i64 56}
!29 = !{!"facetT", !13, i64 0, !13, i64 8, !13, i64 16, !6, i64 24, !7, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 113, !10, i64 113, !10, i64 113, !10, i64 113, !10, i64 113, !10, i64 113, !10, i64 113, !10, i64 114, !10, i64 114, !10, i64 114, !10, i64 114, !10, i64 114, !10, i64 114, !10, i64 114, !10, i64 114, !10, i64 115, !10, i64 115, !10, i64 115, !10, i64 115, !10, i64 115, !10, i64 115, !10, i64 115, !10, i64 115}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}
!32 = distinct !{!32, !31}
!33 = !{!12, !10, i64 2992}
!34 = !{!12, !10, i64 2748}
!35 = !{!12, !10, i64 268}
!36 = !{!12, !10, i64 640}
!37 = !{!12, !6, i64 2832}
!38 = !{!12, !10, i64 80}
!39 = !{!12, !10, i64 36}
!40 = distinct !{!40, !31}
!41 = distinct !{!41, !31}
!42 = !{!12, !6, i64 648}
!43 = distinct !{!43, !31}
!44 = distinct !{!44, !31}
!45 = !{!12, !13, i64 1784}
!46 = !{!12, !13, i64 2728}
!47 = !{!12, !10, i64 252}
!48 = !{!12, !13, i64 192}
!49 = !{!12, !10, i64 248}
!50 = !{!12, !13, i64 200}
!51 = !{!12, !13, i64 2736}
!52 = !{!12, !10, i64 260}
!53 = !{!12, !13, i64 1792}
!54 = !{!12, !13, i64 64}
!55 = !{!12, !13, i64 72}
!56 = !{!12, !13, i64 216}
!57 = !{!12, !13, i64 2664}
!58 = !{!12, !10, i64 2900}
!59 = !{!60, !6, i64 16}
!60 = !{!"vertexT", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 40, !10, i64 40, !10, i64 40, !10, i64 40, !10, i64 40}
!61 = !{!12, !6, i64 2432}
!62 = distinct !{!62, !31}
!63 = !{!29, !6, i64 24}
!64 = !{!29, !6, i64 96}
!65 = distinct !{!65, !31}
!66 = !{!29, !6, i64 88}
!67 = distinct !{!67, !31}
!68 = distinct !{!68, !31}
!69 = distinct !{!69, !31}
!70 = distinct !{!70, !31}
!71 = distinct !{!71, !31}
!72 = !{!12, !10, i64 296}
!73 = !{!12, !10, i64 2592}
!74 = !{!12, !10, i64 52}
!75 = !{!12, !6, i64 2416}
!76 = distinct !{!76, !31}
!77 = distinct !{!77, !31}
!78 = !{!12, !6, i64 2456}
!79 = !{!29, !10, i64 104}
!80 = distinct !{!80, !31}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.qhT = type { i32, i32, i32, i32, i32, i32, double, i32, i32, i32, i32, i32, i32, i32, i32, double, double, i32, i32, i32, i32, i32, i32, ptr, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, double, double, i32, i32, i32, i32, double, double, i32, i32, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [29 x i32], i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, i32, i32, i32, i32, i32, i32, i32, i32, double, i32, ptr, ptr, i32, i32, i32, i32, i32, ptr, i32, ptr, i32, [256 x i8], i32, [256 x i8], [512 x i8], i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, double, double, double, double, double, double, double, double, double, double, double, double, double, double, ptr, double, double, double, double, i32, [6 x i8], [1 x %struct.__jmp_buf_tag], [40 x i8], [1 x %struct.__jmp_buf_tag], [40 x i8], ptr, ptr, ptr, ptr, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, i32, i32, ptr, i32, ptr, i32, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i64, i32, i32, i32, i32, i32, ptr, ptr, i32, i32, i32, double, i32, double, double, double, i32, i32, i32, i32, i32, double, double, i32, i32, i32, i32, i32, i32, double, double, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, ptr, ptr, i32, i32, i32, ptr, double, double, double, double, i32, i32, i32, i32, i32, i32, ptr, ptr, i32 }
%struct.__jmp_buf_tag = type { [8 x i64], i32, %struct.__sigset_t }
%struct.__sigset_t = type { [16 x i64] }

@qh_qh = external global %struct.qhT, align 8
@.str.18 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [140 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [80 x i8], align 1

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

declare i32 @qh_setsize(ptr noundef) local_unnamed_addr #1

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

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

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

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

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

declare i32 @qh_pointid(ptr noundef) local_unnamed_addr #1

declare void @qh_settempfree(ptr noundef) local_unnamed_addr #1

declare void @qh_clearcenters(i32 noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #3

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @qh_printbegin(ptr noundef %0, i32 noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) local_unnamed_addr #2 {
  %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 ptr, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #5
  store i32 0, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2752), align 8, !tbaa !5
  call void @qh_countfacets(ptr noundef %2, ptr noundef %3, i32 noundef %4, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %9, ptr noundef nonnull %8, ptr noundef nonnull %10, ptr noundef nonnull %11)
  switch i32 %1, label %462 [
    i32 0, label %.critedge47
    i32 1, label %14
    i32 3, label %16
    i32 4, label %18
    i32 5, label %25
    i32 6, label %25
    i32 7, label %27
    i32 8, label %331
    i32 14, label %333
    i32 9, label %350
    i32 11, label %350
    i32 12, label %350
    i32 15, label %360
    i32 13, label %360
    i32 16, label %376
    i32 19, label %378
    i32 10, label %381
    i32 17, label %383
    i32 25, label %383
    i32 20, label %447
    i32 21, label %449
    i32 26, label %460
  ]

14:                                               ; preds = %5
  %15 = load i32, ptr %6, align 4, !tbaa !13
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9033, ptr noundef nonnull @.str.22, i32 noundef %15) #5
  br label %.critedge47

16:                                               ; preds = %5
  %17 = load i32, ptr %6, align 4, !tbaa !13
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9034, ptr noundef nonnull @.str.22, i32 noundef %17) #5
  br label %.critedge47

18:                                               ; preds = %5
  %19 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2616), align 8, !tbaa !14
  %20 = icmp eq i32 %19, 0
  br i1 %20, label %21, label %22

21:                                               ; preds = %18
  call void @qh_clearcenters(i32 noundef 2) #5
  br label %22

22:                                               ; preds = %21, %18
  %23 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8, !tbaa !15
  %24 = load i32, ptr %6, align 4, !tbaa !13
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9035, ptr noundef nonnull @.str.27, i32 noundef %23, i32 noundef %24) #5
  br label %.critedge47

25:                                               ; preds = %5, %5
  %.not281 = icmp eq ptr %2, null
  br i1 %.not281, label %.critedge47, label %26

26:                                               ; preds = %25
  call void @qh_printvertexlist(ptr noundef %0, ptr noundef nonnull @.str.28, ptr noundef nonnull %2, ptr noundef %3, i32 noundef %4)
  br label %.critedge47

27:                                               ; preds = %5
  %28 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8
  %29 = icmp sgt i32 %28, 4
  br i1 %29, label %462, label %30

30:                                               ; preds = %27
  %31 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 588), align 4, !tbaa !16
  %32 = icmp ne i32 %31, 0
  %33 = icmp eq i32 %28, 4
  %or.cond = and i1 %33, %32
  br i1 %or.cond, label %462, label %34

34:                                               ; preds = %30
  %35 = icmp eq i32 %28, 2
  br i1 %35, label %36, label %43

36:                                               ; preds = %34
  %37 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 416), align 8, !tbaa !17
  %38 = icmp ne i32 %37, 0
  %39 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 84), align 4
  %40 = icmp ne i32 %39, 0
  %or.cond3 = select i1 %38, i1 true, i1 %40
  br i1 %or.cond3, label %41, label %.thread

41:                                               ; preds = %36
  %42 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !18
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %42, i32 noundef 7049, ptr noundef nonnull @.str.29) #5
  %.pre362 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8, !tbaa !15
  br label %43

43:                                               ; preds = %41, %34
  %44 = phi i32 [ %.pre362, %41 ], [ %28, %34 ]
  %45 = icmp eq i32 %44, 4
  br i1 %45, label %46, label %.thread

46:                                               ; preds = %43
  %47 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 276), align 4, !tbaa !19
  %48 = icmp ne i32 %47, 0
  %49 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 292), align 4
  %50 = icmp ne i32 %49, 0
  %or.cond5 = select i1 %48, i1 true, i1 %50
  br i1 %or.cond5, label %56, label %51

51:                                               ; preds = %46
  %52 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 264), align 8, !tbaa !20
  %53 = icmp eq i32 %52, 4
  %54 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 256), align 8
  %55 = icmp ne i32 %54, 0
  %or.cond7 = select i1 %53, i1 %55, i1 false
  br i1 %or.cond7, label %56, label %.thread

56:                                               ; preds = %51, %46
  %57 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !18
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %57, i32 noundef 7050, ptr noundef nonnull @.str.30) #5
  br label %.thread

.thread:                                          ; preds = %36, %56, %51, %43
  %58 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 264), align 8, !tbaa !20
  %59 = icmp eq i32 %58, 4
  %60 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 420), align 4
  %61 = icmp ne i32 %60, 0
  %or.cond9 = select i1 %59, i1 %61, i1 false
  br i1 %or.cond9, label %62, label %64

62:                                               ; preds = %.thread
  %63 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !18
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %63, i32 noundef 7051, ptr noundef nonnull @.str.31) #5
  %.pre363 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 264), align 8, !tbaa !20
  br label %64

64:                                               ; preds = %62, %.thread
  %65 = phi i32 [ %.pre363, %62 ], [ %58, %.thread ]
  %66 = icmp eq i32 %65, 4
  %67 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 84), align 4
  %68 = icmp ne i32 %67, 0
  %or.cond11 = select i1 %66, i1 %68, i1 false
  %69 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 284), align 4
  %70 = icmp ne i32 %69, 0
  %or.cond13 = select i1 %or.cond11, i1 %70, i1 false
  br i1 %or.cond13, label %71, label %73

71:                                               ; preds = %64
  %72 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !18
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %72, i32 noundef 7052, ptr noundef nonnull @.str.32) #5
  %.pre364 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 264), align 8, !tbaa !20
  br label %73

73:                                               ; preds = %71, %64
  %74 = phi i32 [ %.pre364, %71 ], [ %65, %64 ]
  switch i32 %74, label %88 [
    i32 2, label %75
    i32 3, label %76
    i32 4, label %77
  ]

75:                                               ; preds = %73
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9036, ptr noundef nonnull @.str.33, ptr noundef nonnull getelementptr inbounds (i8, ptr @qh_qh, i64 936), ptr noundef nonnull getelementptr inbounds (i8, ptr @qh_qh, i64 676)) #5
  br label %88

76:                                               ; preds = %73
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9037, ptr noundef nonnull @.str.34, ptr noundef nonnull getelementptr inbounds (i8, ptr @qh_qh, i64 936), ptr noundef nonnull getelementptr inbounds (i8, ptr @qh_qh, i64 676)) #5
  br label %88

77:                                               ; preds = %73
  %78 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2784), align 8, !tbaa !21
  %79 = add i32 %78, 1
  store i32 %79, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2784), align 8, !tbaa !21
  store i32 0, ptr %12, align 4, !tbaa !13
  %.not236 = icmp eq ptr %2, null
  br i1 %.not236, label %.critedge, label %.preheader297

.preheader297:                                    ; preds = %77, %82
  %.0187311 = phi ptr [ %83, %82 ], [ %2, %77 ]
  %80 = getelementptr inbounds i8, ptr %.0187311, i64 56
  %81 = load ptr, ptr %80, align 8, !tbaa !22
  %.not238 = icmp eq ptr %81, null
  br i1 %.not238, label %.critedge, label %82

82:                                               ; preds = %.preheader297
  call void @qh_printend4geom(ptr noundef null, ptr noundef nonnull %.0187311, ptr noundef nonnull %12, i32 noundef %4)
  %83 = load ptr, ptr %80, align 8, !tbaa !22
  %.not237 = icmp eq ptr %83, null
  br i1 %.not237, label %.critedge, label %.preheader297, !llvm.loop !24

.critedge:                                        ; preds = %.preheader297, %82, %77
  %.not239 = icmp eq ptr %3, null
  br i1 %.not239, label %.loopexit296, label %.preheader295

.preheader295:                                    ; preds = %.critedge
  %.0185312 = getelementptr inbounds i8, ptr %3, i64 8
  %84 = load ptr, ptr %.0185312, align 8, !tbaa !26
  %.not241313 = icmp eq ptr %84, null
  br i1 %.not241313, label %.loopexit296, label %.lr.ph315

.lr.ph315:                                        ; preds = %.preheader295, %.lr.ph315
  %85 = phi ptr [ %86, %.lr.ph315 ], [ %84, %.preheader295 ]
  %.0185314 = phi ptr [ %.0185, %.lr.ph315 ], [ %.0185312, %.preheader295 ]
  call void @qh_printend4geom(ptr noundef null, ptr noundef nonnull %85, ptr noundef nonnull %12, i32 noundef %4)
  %.0185 = getelementptr inbounds i8, ptr %.0185314, i64 8
  %86 = load ptr, ptr %.0185, align 8, !tbaa !26
  %.not241 = icmp eq ptr %86, null
  br i1 %.not241, label %.loopexit296, label %.lr.ph315, !llvm.loop !27

.loopexit296:                                     ; preds = %.lr.ph315, %.preheader295, %.critedge
  %87 = load i32, ptr %12, align 4, !tbaa !13
  store i32 %87, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2992), align 8, !tbaa !28
  store i32 0, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2748), align 4, !tbaa !29
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9038, ptr noundef nonnull @.str.35, ptr noundef nonnull getelementptr inbounds (i8, ptr @qh_qh, i64 936), ptr noundef nonnull getelementptr inbounds (i8, ptr @qh_qh, i64 676)) #5
  br label %88

88:                                               ; preds = %73, %76, %.loopexit296, %75
  %89 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 268), align 4, !tbaa !30
  %.not242 = icmp eq i32 %89, 0
  br i1 %.not242, label %158, label %90

90:                                               ; preds = %88
  %91 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2752), align 8, !tbaa !5
  %92 = add nsw i32 %91, 1
  store i32 %92, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2752), align 8, !tbaa !5
  %93 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 640), align 8, !tbaa !31
  %94 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2832), align 8, !tbaa !32
  %95 = call i32 @qh_setsize(ptr noundef %94) #5
  %96 = add nsw i32 %95, %93
  store i32 %96, ptr %12, align 4, !tbaa !13
  %97 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 80), align 8, !tbaa !33
  %98 = icmp ne i32 %97, 0
  %99 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 36), align 4
  %100 = icmp ne i32 %99, 0
  %or.cond15 = select i1 %98, i1 %100, i1 false
  br i1 %or.cond15, label %101, label %103

101:                                              ; preds = %90
  %102 = add nsw i32 %96, -1
  store i32 %102, ptr %12, align 4, !tbaa !13
  br label %103

103:                                              ; preds = %101, %90
  %104 = phi i32 [ %102, %101 ], [ %96, %90 ]
  %105 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 264), align 8, !tbaa !20
  %106 = icmp eq i32 %105, 4
  br i1 %106, label %107, label %108

107:                                              ; preds = %103
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9039, ptr noundef nonnull @.str.36, i32 noundef %104, i32 noundef %104) #5
  br label %109

108:                                              ; preds = %103
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9040, ptr noundef nonnull @.str.37, i32 noundef %104, i32 noundef %104) #5
  br label %109

109:                                              ; preds = %108, %107
  %110 = load i32, ptr %12, align 4, !tbaa !13
  %.not243316 = icmp eq i32 %110, 0
  br i1 %.not243316, label %._crit_edge319, label %.lr.ph318

.lr.ph318:                                        ; preds = %109, %115
  %.in = phi i32 [ %111, %115 ], [ %110, %109 ]
  %111 = add nsw i32 %.in, -1
  %112 = srem i32 %111, 20
  %113 = icmp eq i32 %112, 0
  br i1 %113, label %114, label %115

114:                                              ; preds = %.lr.ph318
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9041, ptr noundef nonnull @.str.18) #5
  br label %115

115:                                              ; preds = %114, %.lr.ph318
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9042, ptr noundef nonnull @.str.26) #5
  %.not243 = icmp eq i32 %111, 0
  br i1 %.not243, label %._crit_edge319, label %.lr.ph318, !llvm.loop !34

._crit_edge319:                                   ; preds = %115, %109
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9043, ptr noundef nonnull @.str.38) #5
  %116 = load i32, ptr %12, align 4, !tbaa !13
  %.not244320 = icmp eq i32 %116, 1
  br i1 %.not244320, label %._crit_edge323, label %.lr.ph322.preheader

.lr.ph322.preheader:                              ; preds = %._crit_edge319
  %117 = add nsw i32 %116, -2
  br label %.lr.ph322

.lr.ph322:                                        ; preds = %.lr.ph322.preheader, %122
  %118 = phi i32 [ %123, %122 ], [ %117, %.lr.ph322.preheader ]
  %119 = srem i32 %118, 20
  %120 = icmp eq i32 %119, 0
  br i1 %120, label %121, label %122

121:                                              ; preds = %.lr.ph322
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9044, ptr noundef nonnull @.str.18) #5
  br label %122

122:                                              ; preds = %121, %.lr.ph322
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9045, ptr noundef nonnull @.str.39) #5
  %123 = add nsw i32 %118, -1
  %.not244 = icmp eq i32 %118, 0
  br i1 %.not244, label %._crit_edge323, label %.lr.ph322, !llvm.loop !35

._crit_edge323:                                   ; preds = %122, %._crit_edge319
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9046, ptr noundef nonnull @.str.40) #5
  %124 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 648), align 8, !tbaa !36
  %125 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8, !tbaa !15
  %126 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 640), align 8, !tbaa !31
  %127 = mul nsw i32 %126, %125
  %128 = sext i32 %127 to i64
  %129 = getelementptr inbounds double, ptr %124, i64 %128
  %130 = icmp sgt i32 %127, 0
  br i1 %130, label %.lr.ph326, label %._crit_edge327

.lr.ph326:                                        ; preds = %._crit_edge323, %144
  %.0182324 = phi ptr [ %147, %144 ], [ %124, %._crit_edge323 ]
  %131 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 80), align 8, !tbaa !33
  %132 = icmp ne i32 %131, 0
  %133 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 36), align 4
  %134 = icmp ne i32 %133, 0
  %or.cond17 = select i1 %132, i1 %134, i1 false
  br i1 %or.cond17, label %135, label %139

135:                                              ; preds = %.lr.ph326
  %136 = call i32 @qh_pointid(ptr noundef %.0182324) #5
  %137 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 640), align 8, !tbaa !31
  %138 = add nsw i32 %137, -1
  %.not280 = icmp eq i32 %136, %138
  br i1 %.not280, label %144, label %139

139:                                              ; preds = %135, %.lr.ph326
  %140 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 264), align 8, !tbaa !20
  %141 = icmp eq i32 %140, 4
  br i1 %141, label %142, label %143

142:                                              ; preds = %139
  call void @qh_printpoint(ptr noundef %0, ptr noundef null, ptr noundef %.0182324)
  br label %144

143:                                              ; preds = %139
  call void @qh_printpoint3(ptr noundef %0, ptr noundef %.0182324)
  br label %144

144:                                              ; preds = %135, %143, %142
  %145 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8, !tbaa !15
  %146 = sext i32 %145 to i64
  %147 = getelementptr inbounds double, ptr %.0182324, i64 %146
  %148 = icmp ult ptr %147, %129
  br i1 %148, label %.lr.ph326, label %._crit_edge327, !llvm.loop !37

._crit_edge327:                                   ; preds = %144, %._crit_edge323
  %149 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2832), align 8, !tbaa !32
  %.not245 = icmp eq ptr %149, null
  br i1 %.not245, label %.loopexit294, label %.preheader293

.preheader293:                                    ; preds = %._crit_edge327
  %.0328 = getelementptr inbounds i8, ptr %149, i64 8
  %150 = load ptr, ptr %.0328, align 8, !tbaa !26
  %.not247329 = icmp eq ptr %150, null
  br i1 %.not247329, label %.loopexit294, label %.lr.ph331

.lr.ph331:                                        ; preds = %.preheader293, %156
  %151 = phi ptr [ %157, %156 ], [ %150, %.preheader293 ]
  %.0330 = phi ptr [ %.0, %156 ], [ %.0328, %.preheader293 ]
  %152 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 264), align 8, !tbaa !20
  %153 = icmp eq i32 %152, 4
  br i1 %153, label %154, label %155

154:                                              ; preds = %.lr.ph331
  call void @qh_printpoint(ptr noundef %0, ptr noundef null, ptr noundef nonnull %151)
  br label %156

155:                                              ; preds = %.lr.ph331
  call void @qh_printpoint3(ptr noundef %0, ptr noundef nonnull %151)
  br label %156

156:                                              ; preds = %155, %154
  %.0 = getelementptr inbounds i8, ptr %.0330, i64 8
  %157 = load ptr, ptr %.0, align 8, !tbaa !26
  %.not247 = icmp eq ptr %157, null
  br i1 %.not247, label %.loopexit294, label %.lr.ph331, !llvm.loop !38

.loopexit294:                                     ; preds = %156, %.preheader293, %._crit_edge327
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9047, ptr noundef nonnull @.str.41) #5
  br label %158

158:                                              ; preds = %.loopexit294, %88
  %159 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 264), align 8, !tbaa !20
  %160 = icmp ne i32 %159, 4
  %161 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 284), align 4
  %162 = icmp ne i32 %161, 0
  %or.cond19 = select i1 %160, i1 true, i1 %162
  br i1 %or.cond19, label %166, label %163

163:                                              ; preds = %158
  %164 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2992), align 8, !tbaa !28
  %165 = mul nsw i32 %164, 3
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9048, ptr noundef nonnull @.str.42, i32 noundef %165, i32 noundef %164) #5
  br label %166

166:                                              ; preds = %163, %158
  %167 = load double, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 1784), align 8, !tbaa !39
  %168 = fmul double %167, 2.000000e+00
  store double %168, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2728), align 8, !tbaa !40
  %169 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 252), align 4, !tbaa !41
  %.not248 = icmp eq i32 %169, 0
  br i1 %.not248, label %174, label %170

170:                                              ; preds = %166
  %171 = load double, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 192), align 8, !tbaa !42
  %172 = fadd double %167, %171
  %173 = fcmp olt double %168, %172
  br i1 %173, label %.sink.split, label %180

174:                                              ; preds = %166
  %175 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 248), align 8, !tbaa !43
  %.not249 = icmp eq i32 %175, 0
  br i1 %.not249, label %180, label %176

176:                                              ; preds = %174
  %177 = load double, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 200), align 8, !tbaa !44
  %178 = fadd double %167, %177
  %179 = fcmp olt double %168, %178
  br i1 %179, label %.sink.split, label %180

.sink.split:                                      ; preds = %176, %170
  %.sink = phi double [ %172, %170 ], [ %178, %176 ]
  store double %.sink, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2728), align 8, !tbaa !40
  br label %180

180:                                              ; preds = %.sink.split, %174, %176, %170
  %181 = phi double [ %168, %174 ], [ %168, %176 ], [ %168, %170 ], [ %.sink, %.sink.split ]
  store double %181, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2736), align 8, !tbaa !45
  %182 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 420), align 4, !tbaa !46
  %183 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 260), align 4, !tbaa !47
  %184 = sub i32 0, %183
  %.not250 = icmp eq i32 %182, %184
  br i1 %.not250, label %190, label %185

185:                                              ; preds = %180
  %186 = load double, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 1792), align 8, !tbaa !48
  %187 = fmul double %186, 2.000000e-02
  %188 = fcmp olt double %181, %187
  br i1 %188, label %189, label %190

189:                                              ; preds = %185
  store double %187, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2736), align 8, !tbaa !45
  br label %190

190:                                              ; preds = %185, %189, %180
  %191 = phi double [ %181, %185 ], [ %187, %189 ], [ %181, %180 ]
  %192 = load double, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 64), align 8, !tbaa !49
  %193 = fcmp olt double %192, 0x7FDFFFFFFFFFFFFF
  br i1 %193, label %194, label %199

194:                                              ; preds = %190
  %195 = fsub double 1.000000e+00, %192
  %196 = load double, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 1792), align 8, !tbaa !48
  %197 = fmul double %195, %196
  %198 = fcmp olt double %191, %197
  br i1 %198, label %.sink.split365, label %209

199:                                              ; preds = %190
  %200 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 248), align 8
  %201 = icmp ne i32 %200, 0
  %or.cond21 = select i1 %.not248, i1 %201, i1 false
  %202 = load double, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 72), align 8
  %203 = fcmp olt double %202, 0x7FDFFFFFFFFFFFFF
  %or.cond23 = select i1 %or.cond21, i1 %203, i1 false
  br i1 %or.cond23, label %204, label %209

204:                                              ; preds = %199
  %205 = fsub double 1.000000e+00, %202
  %206 = load double, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 1792), align 8, !tbaa !48
  %207 = fmul double %205, %206
  %208 = fcmp olt double %191, %207
  br i1 %208, label %.sink.split365, label %209

.sink.split365:                                   ; preds = %204, %194
  %.sink367 = phi double [ %197, %194 ], [ %207, %204 ]
  store double %.sink367, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2736), align 8, !tbaa !45
  br label %209

209:                                              ; preds = %.sink.split365, %199, %204, %194
  %210 = phi double [ %191, %199 ], [ %191, %204 ], [ %191, %194 ], [ %.sink367, %.sink.split365 ]
  %211 = load double, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 216), align 8, !tbaa !50
  %212 = fcmp olt double %210, %211
  br i1 %212, label %213, label %214

213:                                              ; preds = %209
  store double %211, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2736), align 8, !tbaa !45
  br label %214

214:                                              ; preds = %213, %209
  %215 = load double, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2664), align 8, !tbaa !51
  %216 = fcmp olt double %215, 0x7FDFFFFFFFFFFFFF
  br i1 %216, label %217, label %223

217:                                              ; preds = %214
  %218 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8, !tbaa !15
  %219 = sitofp i32 %218 to double
  %220 = call double @sqrt(double noundef %219) #5
  %221 = load double, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2736), align 8, !tbaa !45
  %222 = call double @llvm.fmuladd.f64(double %215, double %220, double %221)
  store double %222, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2736), align 8, !tbaa !45
  br label %223

223:                                              ; preds = %217, %214
  %224 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 264), align 8, !tbaa !20
  %.not251 = icmp eq i32 %224, 4
  br i1 %.not251, label %328, label %225

225:                                              ; preds = %223
  %226 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 260), align 4, !tbaa !47
  %227 = icmp ne i32 %226, 0
  %228 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 420), align 4
  %229 = icmp ne i32 %228, 0
  %or.cond25 = select i1 %227, i1 true, i1 %229
  %230 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 256), align 8
  %231 = icmp ne i32 %230, 0
  %or.cond27 = select i1 %or.cond25, i1 true, i1 %231
  br i1 %or.cond27, label %232, label %328

232:                                              ; preds = %225
  %233 = call ptr @qh_facetvertices(ptr noundef %2, ptr noundef %3, i32 noundef %4)
  store ptr %233, ptr %13, align 8, !tbaa !26
  %234 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 420), align 4, !tbaa !46
  %235 = icmp ne i32 %234, 0
  %236 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 264), align 8
  %237 = icmp slt i32 %236, 4
  %or.cond29 = select i1 %235, i1 %237, i1 false
  br i1 %or.cond29, label %238, label %240

238:                                              ; preds = %232
  %239 = load double, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2736), align 8, !tbaa !45
  call void @qh_printspheres(ptr noundef %0, ptr noundef %233, double noundef %239)
  br label %240

240:                                              ; preds = %238, %232
  %241 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 260), align 4, !tbaa !47
  %242 = icmp ne i32 %241, 0
  %243 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 256), align 8
  %244 = icmp ne i32 %243, 0
  %or.cond31 = select i1 %242, i1 true, i1 %244
  br i1 %or.cond31, label %245, label %.loopexit285

245:                                              ; preds = %240
  store i32 1, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2900), align 4, !tbaa !52
  %246 = icmp eq i32 %241, 0
  %247 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 420), align 4
  %248 = icmp ne i32 %247, 0
  %or.cond33 = select i1 %246, i1 true, i1 %248
  %.not252 = icmp eq ptr %233, null
  %or.cond282 = select i1 %or.cond33, i1 true, i1 %.not252
  br i1 %or.cond282, label %.loopexit292, label %.preheader291

.preheader291:                                    ; preds = %245
  %.0184332 = getelementptr inbounds i8, ptr %233, i64 8
  %249 = load ptr, ptr %.0184332, align 8, !tbaa !26
  %.not254333 = icmp eq ptr %249, null
  br i1 %.not254333, label %.loopexit292, label %.lr.ph335

.lr.ph335:                                        ; preds = %.preheader291, %.lr.ph335
  %250 = phi ptr [ %255, %.lr.ph335 ], [ %249, %.preheader291 ]
  %.0184334 = phi ptr [ %.0184, %.lr.ph335 ], [ %.0184332, %.preheader291 ]
  %251 = getelementptr inbounds i8, ptr %250, i64 16
  %252 = load ptr, ptr %251, align 8, !tbaa !53
  %253 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2432), align 8, !tbaa !55
  %254 = load double, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2736), align 8, !tbaa !45
  call void @qh_printpointvect2(ptr noundef %0, ptr noundef %252, ptr noundef null, ptr noundef %253, double noundef %254)
  %.0184 = getelementptr inbounds i8, ptr %.0184334, i64 8
  %255 = load ptr, ptr %.0184, align 8, !tbaa !26
  %.not254 = icmp eq ptr %255, null
  br i1 %.not254, label %.loopexit292, label %.lr.ph335, !llvm.loop !56

.loopexit292:                                     ; preds = %.lr.ph335, %.preheader291, %245
  %.not255 = icmp eq ptr %2, null
  br i1 %.not255, label %.critedge35, label %.preheader290

.preheader290:                                    ; preds = %.loopexit292
  %.not270 = icmp eq i32 %4, 0
  br label %256

256:                                              ; preds = %.preheader290, %.loopexit287
  %.1188344 = phi ptr [ %2, %.preheader290 ], [ %289, %.loopexit287 ]
  %257 = getelementptr inbounds i8, ptr %.1188344, i64 56
  %258 = load ptr, ptr %257, align 8, !tbaa !22
  %.not257 = icmp eq ptr %258, null
  br i1 %.not257, label %.critedge35, label %259

259:                                              ; preds = %256
  br i1 %.not270, label %260, label %262

260:                                              ; preds = %259
  %261 = call i32 @qh_skipfacet(ptr noundef nonnull %.1188344)
  %.not271 = icmp eq i32 %261, 0
  br i1 %.not271, label %262, label %.loopexit287

262:                                              ; preds = %260, %259
  %263 = getelementptr inbounds i8, ptr %.1188344, i64 24
  %264 = load ptr, ptr %263, align 8, !tbaa !57
  %.not272 = icmp eq ptr %264, null
  br i1 %.not272, label %.loopexit287, label %265

265:                                              ; preds = %262
  %266 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 256), align 8, !tbaa !58
  %267 = icmp ne i32 %266, 0
  %268 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 264), align 8
  %269 = icmp slt i32 %268, 4
  %or.cond37 = select i1 %267, i1 %269, i1 false
  br i1 %or.cond37, label %270, label %272

270:                                              ; preds = %265
  %271 = load double, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2728), align 8, !tbaa !40
  call void @qh_printcentrum(ptr noundef %0, ptr noundef nonnull %.1188344, double noundef %271)
  br label %272

272:                                              ; preds = %270, %265
  %273 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 260), align 4, !tbaa !47
  %.not273 = icmp eq i32 %273, 0
  br i1 %.not273, label %.loopexit287, label %274

274:                                              ; preds = %272
  %275 = getelementptr inbounds i8, ptr %.1188344, i64 96
  %276 = load ptr, ptr %275, align 8, !tbaa !59
  %.not274 = icmp eq ptr %276, null
  br i1 %.not274, label %.loopexit289, label %.preheader288

.preheader288:                                    ; preds = %274
  %.1336 = getelementptr inbounds i8, ptr %276, i64 8
  %277 = load ptr, ptr %.1336, align 8, !tbaa !26
  %.not276337 = icmp eq ptr %277, null
  br i1 %.not276337, label %.loopexit289, label %.lr.ph339

.lr.ph339:                                        ; preds = %.preheader288, %.lr.ph339
  %278 = phi ptr [ %281, %.lr.ph339 ], [ %277, %.preheader288 ]
  %.1338 = phi ptr [ %.1, %.lr.ph339 ], [ %.1336, %.preheader288 ]
  %279 = load ptr, ptr %263, align 8, !tbaa !57
  %280 = load double, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2736), align 8, !tbaa !45
  call void @qh_printpointvect2(ptr noundef %0, ptr noundef nonnull %278, ptr noundef %279, ptr noundef null, double noundef %280)
  %.1 = getelementptr inbounds i8, ptr %.1338, i64 8
  %281 = load ptr, ptr %.1, align 8, !tbaa !26
  %.not276 = icmp eq ptr %281, null
  br i1 %.not276, label %.loopexit289, label %.lr.ph339, !llvm.loop !60

.loopexit289:                                     ; preds = %.lr.ph339, %.preheader288, %274
  %282 = getelementptr inbounds i8, ptr %.1188344, i64 88
  %283 = load ptr, ptr %282, align 8, !tbaa !61
  %.not277 = icmp eq ptr %283, null
  br i1 %.not277, label %.loopexit287, label %.preheader286

.preheader286:                                    ; preds = %.loopexit289
  %.2340 = getelementptr inbounds i8, ptr %283, i64 8
  %284 = load ptr, ptr %.2340, align 8, !tbaa !26
  %.not279341 = icmp eq ptr %284, null
  br i1 %.not279341, label %.loopexit287, label %.lr.ph343

.lr.ph343:                                        ; preds = %.preheader286, %.lr.ph343
  %285 = phi ptr [ %288, %.lr.ph343 ], [ %284, %.preheader286 ]
  %.2342 = phi ptr [ %.2, %.lr.ph343 ], [ %.2340, %.preheader286 ]
  %286 = load ptr, ptr %263, align 8, !tbaa !57
  %287 = load double, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2736), align 8, !tbaa !45
  call void @qh_printpointvect2(ptr noundef %0, ptr noundef nonnull %285, ptr noundef %286, ptr noundef null, double noundef %287)
  %.2 = getelementptr inbounds i8, ptr %.2342, i64 8
  %288 = load ptr, ptr %.2, align 8, !tbaa !26
  %.not279 = icmp eq ptr %288, null
  br i1 %.not279, label %.loopexit287, label %.lr.ph343, !llvm.loop !62

.loopexit287:                                     ; preds = %.lr.ph343, %.preheader286, %.loopexit289, %272, %262, %260
  %289 = load ptr, ptr %257, align 8, !tbaa !22
  %.not256 = icmp eq ptr %289, null
  br i1 %.not256, label %.critedge35, label %256, !llvm.loop !63

.critedge35:                                      ; preds = %256, %.loopexit287, %.loopexit292
  %.not258 = icmp eq ptr %3, null
  br i1 %.not258, label %.loopexit285, label %290

290:                                              ; preds = %.critedge35
  %291 = getelementptr inbounds i8, ptr %3, i64 8
  %292 = load ptr, ptr %291, align 8, !tbaa !26
  %.not259353 = icmp eq ptr %292, null
  br i1 %.not259353, label %.loopexit285, label %.lr.ph355

.lr.ph355:                                        ; preds = %290
  %293 = getelementptr inbounds i8, ptr %3, i64 16
  %.not260 = icmp eq i32 %4, 0
  br label %294

294:                                              ; preds = %.lr.ph355, %.backedge
  %295 = phi ptr [ %292, %.lr.ph355 ], [ %327, %.backedge ]
  %296 = phi ptr [ %293, %.lr.ph355 ], [ %326, %.backedge ]
  br i1 %.not260, label %297, label %299

297:                                              ; preds = %294
  %298 = call i32 @qh_skipfacet(ptr noundef nonnull %295)
  %.not261 = icmp eq i32 %298, 0
  br i1 %.not261, label %299, label %.backedge

299:                                              ; preds = %297, %294
  %300 = getelementptr inbounds i8, ptr %295, i64 24
  %301 = load ptr, ptr %300, align 8, !tbaa !57
  %.not262 = icmp eq ptr %301, null
  br i1 %.not262, label %.backedge, label %302

302:                                              ; preds = %299
  %303 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 256), align 8, !tbaa !58
  %304 = icmp ne i32 %303, 0
  %305 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 264), align 8
  %306 = icmp slt i32 %305, 4
  %or.cond39 = select i1 %304, i1 %306, i1 false
  br i1 %or.cond39, label %307, label %309

307:                                              ; preds = %302
  %308 = load double, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2728), align 8, !tbaa !40
  call void @qh_printcentrum(ptr noundef %0, ptr noundef nonnull %295, double noundef %308)
  br label %309

309:                                              ; preds = %307, %302
  %310 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 260), align 4, !tbaa !47
  %.not263 = icmp eq i32 %310, 0
  br i1 %.not263, label %.backedge, label %311

311:                                              ; preds = %309
  %312 = getelementptr inbounds i8, ptr %295, i64 96
  %313 = load ptr, ptr %312, align 8, !tbaa !59
  %.not264 = icmp eq ptr %313, null
  br i1 %.not264, label %.loopexit284, label %.preheader283

.preheader283:                                    ; preds = %311
  %.3345 = getelementptr inbounds i8, ptr %313, i64 8
  %314 = load ptr, ptr %.3345, align 8, !tbaa !26
  %.not266346 = icmp eq ptr %314, null
  br i1 %.not266346, label %.loopexit284, label %.lr.ph348

.lr.ph348:                                        ; preds = %.preheader283, %.lr.ph348
  %315 = phi ptr [ %318, %.lr.ph348 ], [ %314, %.preheader283 ]
  %.3347 = phi ptr [ %.3, %.lr.ph348 ], [ %.3345, %.preheader283 ]
  %316 = load ptr, ptr %300, align 8, !tbaa !57
  %317 = load double, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2736), align 8, !tbaa !45
  call void @qh_printpointvect2(ptr noundef %0, ptr noundef nonnull %315, ptr noundef %316, ptr noundef null, double noundef %317)
  %.3 = getelementptr inbounds i8, ptr %.3347, i64 8
  %318 = load ptr, ptr %.3, align 8, !tbaa !26
  %.not266 = icmp eq ptr %318, null
  br i1 %.not266, label %.loopexit284, label %.lr.ph348, !llvm.loop !64

.loopexit284:                                     ; preds = %.lr.ph348, %.preheader283, %311
  %319 = getelementptr inbounds i8, ptr %295, i64 88
  %320 = load ptr, ptr %319, align 8, !tbaa !61
  %.not267 = icmp eq ptr %320, null
  br i1 %.not267, label %.backedge, label %.preheader

.preheader:                                       ; preds = %.loopexit284
  %.4349 = getelementptr inbounds i8, ptr %320, i64 8
  %321 = load ptr, ptr %.4349, align 8, !tbaa !26
  %.not269350 = icmp eq ptr %321, null
  br i1 %.not269350, label %.backedge, label %.lr.ph352

.lr.ph352:                                        ; preds = %.preheader, %.lr.ph352
  %322 = phi ptr [ %325, %.lr.ph352 ], [ %321, %.preheader ]
  %.4351 = phi ptr [ %.4, %.lr.ph352 ], [ %.4349, %.preheader ]
  %323 = load ptr, ptr %300, align 8, !tbaa !57
  %324 = load double, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2736), align 8, !tbaa !45
  call void @qh_printpointvect2(ptr noundef %0, ptr noundef nonnull %322, ptr noundef %323, ptr noundef null, double noundef %324)
  %.4 = getelementptr inbounds i8, ptr %.4351, i64 8
  %325 = load ptr, ptr %.4, align 8, !tbaa !26
  %.not269 = icmp eq ptr %325, null
  br i1 %.not269, label %.backedge, label %.lr.ph352, !llvm.loop !65

.backedge:                                        ; preds = %.lr.ph352, %.loopexit284, %.preheader, %297, %299, %309
  %326 = getelementptr inbounds i8, ptr %296, i64 8
  %327 = load ptr, ptr %296, align 8, !tbaa !26
  %.not259 = icmp eq ptr %327, null
  br i1 %.not259, label %.loopexit285, label %294, !llvm.loop !66

.loopexit285:                                     ; preds = %.backedge, %290, %.critedge35, %240
  call void @qh_settempfree(ptr noundef nonnull %13) #5
  br label %328

328:                                              ; preds = %225, %.loopexit285, %223
  %329 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2784), align 8, !tbaa !21
  %330 = add i32 %329, 1
  store i32 %330, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2784), align 8, !tbaa !21
  br label %.critedge47

331:                                              ; preds = %5
  %332 = load i32, ptr %6, align 4, !tbaa !13
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9049, ptr noundef nonnull @.str.22, i32 noundef %332) #5
  br label %.critedge47

333:                                              ; preds = %5
  %334 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 588), align 4, !tbaa !16
  %335 = icmp ne i32 %334, 0
  %336 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 296), align 8
  %337 = icmp ne i32 %336, 0
  %or.cond41 = select i1 %335, i1 %337, i1 false
  br i1 %or.cond41, label %338, label %340

338:                                              ; preds = %333
  %339 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !18
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %339, i32 noundef 7053, ptr noundef nonnull @.str.43) #5
  br label %340

340:                                              ; preds = %338, %333
  %341 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2592), align 8, !tbaa !67
  store i32 %341, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2748), align 4, !tbaa !29
  %342 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8, !tbaa !15
  %343 = icmp slt i32 %342, 4
  br i1 %343, label %344, label %346

344:                                              ; preds = %340
  %345 = load i32, ptr %6, align 4, !tbaa !13
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9050, ptr noundef nonnull @.str.22, i32 noundef %345) #5
  br label %.critedge47

346:                                              ; preds = %340
  %347 = load i32, ptr %7, align 4, !tbaa !13
  %348 = load i32, ptr %8, align 4, !tbaa !13
  %349 = add nsw i32 %348, %347
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9051, ptr noundef nonnull @.str.22, i32 noundef %349) #5
  br label %.critedge47

350:                                              ; preds = %5, %5, %5
  %351 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 52), align 4, !tbaa !68
  %.not235 = icmp eq i32 %351, 0
  br i1 %.not235, label %356, label %352

352:                                              ; preds = %350
  %353 = load i32, ptr %6, align 4, !tbaa !13
  %354 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8, !tbaa !15
  %355 = add nsw i32 %354, 1
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9052, ptr noundef nonnull @.str.44, ptr noundef nonnull getelementptr inbounds (i8, ptr @qh_qh, i64 936), ptr noundef nonnull getelementptr inbounds (i8, ptr @qh_qh, i64 676), i32 noundef %353, i32 noundef %355) #5
  br label %.critedge47

356:                                              ; preds = %350
  %357 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8, !tbaa !15
  %358 = add nsw i32 %357, 1
  %359 = load i32, ptr %6, align 4, !tbaa !13
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9053, ptr noundef nonnull @.str.27, i32 noundef %358, i32 noundef %359) #5
  br label %.critedge47

360:                                              ; preds = %5, %5
  %361 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8, !tbaa !15
  %362 = icmp sgt i32 %361, 3
  br i1 %362, label %462, label %363

363:                                              ; preds = %360
  %364 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 588), align 4, !tbaa !16
  %.not234 = icmp eq i32 %364, 0
  br i1 %.not234, label %367, label %365

365:                                              ; preds = %363
  %366 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !18
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %366, i32 noundef 7054, ptr noundef nonnull @.str.45) #5
  br label %367

367:                                              ; preds = %365, %363
  %368 = icmp eq i32 %1, 13
  br i1 %368, label %369, label %374

369:                                              ; preds = %367
  %370 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8, !tbaa !15
  %371 = icmp eq i32 %370, 2
  br i1 %371, label %372, label %373

372:                                              ; preds = %369
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9054, ptr noundef nonnull @.str.46) #5
  br label %375

373:                                              ; preds = %369
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9055, ptr noundef nonnull @.str.47) #5
  br label %375

374:                                              ; preds = %367
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9056, ptr noundef nonnull @.str.48) #5
  br label %375

375:                                              ; preds = %372, %373, %374
  store i32 0, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2748), align 4, !tbaa !29
  br label %.critedge47

376:                                              ; preds = %5
  %377 = load i32, ptr %6, align 4, !tbaa !13
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9057, ptr noundef nonnull @.str.22, i32 noundef %377) #5
  br label %.critedge47

378:                                              ; preds = %5
  %379 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8, !tbaa !15
  %380 = load i32, ptr %6, align 4, !tbaa !13
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9058, ptr noundef nonnull @.str.27, i32 noundef %379, i32 noundef %380) #5
  br label %.critedge47

381:                                              ; preds = %5
  %382 = load i32, ptr %6, align 4, !tbaa !13
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9059, ptr noundef nonnull @.str.22, i32 noundef %382) #5
  br label %.critedge47

383:                                              ; preds = %5, %5
  %384 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 588), align 4, !tbaa !16
  %.not226 = icmp eq i32 %384, 0
  br i1 %.not226, label %385, label %462

385:                                              ; preds = %383
  %386 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8
  store i32 %386, ptr %12, align 4, !tbaa !13
  %387 = icmp eq i32 %1, 17
  %388 = icmp eq i32 %386, 2
  %or.cond43 = select i1 %387, i1 true, i1 %388
  %389 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 640), align 8, !tbaa !31
  %390 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2832), align 8, !tbaa !32
  %391 = call i32 @qh_setsize(ptr noundef %390) #5
  %392 = add nsw i32 %391, %389
  br i1 %or.cond43, label %393, label %397

393:                                              ; preds = %385
  %394 = load i32, ptr %6, align 4, !tbaa !13
  %395 = load i32, ptr %9, align 4, !tbaa !13
  %396 = sdiv i32 %395, 2
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9060, ptr noundef nonnull @.str.49, i32 noundef %386, i32 noundef %392, i32 noundef %394, i32 noundef %396) #5
  br label %411

397:                                              ; preds = %385
  store i32 %392, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2748), align 4, !tbaa !29
  %398 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 80), align 8, !tbaa !33
  %.not227 = icmp eq i32 %398, 0
  %.pre = load i32, ptr %12, align 4, !tbaa !13
  br i1 %.not227, label %401, label %399

399:                                              ; preds = %397
  %400 = add nsw i32 %.pre, -1
  store i32 %400, ptr %12, align 4, !tbaa !13
  br label %401

401:                                              ; preds = %399, %397
  %402 = phi i32 [ %400, %399 ], [ %.pre, %397 ]
  %403 = load i32, ptr %6, align 4, !tbaa !13
  %404 = add nsw i32 %403, %392
  %405 = load i32, ptr %7, align 4, !tbaa !13
  %406 = sub i32 %404, %405
  %407 = load i32, ptr %8, align 4, !tbaa !13
  %408 = add nsw i32 %407, %405
  %409 = load i32, ptr %9, align 4, !tbaa !13
  %410 = sdiv i32 %409, 2
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9061, ptr noundef nonnull @.str.49, i32 noundef %402, i32 noundef %406, i32 noundef %408, i32 noundef %410) #5
  br label %411

411:                                              ; preds = %401, %393
  %412 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 648), align 8, !tbaa !36
  %413 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8
  %414 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 640), align 8, !tbaa !31
  %415 = mul nsw i32 %414, %413
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds double, ptr %412, i64 %416
  %418 = icmp sgt i32 %415, 0
  br i1 %418, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %411, %.lr.ph
  %.1183301 = phi ptr [ %423, %.lr.ph ], [ %412, %411 ]
  %419 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2416), align 8, !tbaa !69
  %420 = load i32, ptr %12, align 4, !tbaa !13
  call void @qh_printpointid(ptr noundef %419, ptr noundef null, i32 noundef %420, ptr noundef %.1183301, i32 noundef -1)
  %421 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds double, ptr %.1183301, i64 %422
  %424 = icmp ult ptr %423, %417
  br i1 %424, label %.lr.ph, label %._crit_edge, !llvm.loop !70

._crit_edge:                                      ; preds = %.lr.ph, %411
  %425 = phi i32 [ %413, %411 ], [ %421, %.lr.ph ]
  %426 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2832), align 8, !tbaa !32
  %.not228 = icmp eq ptr %426, null
  br i1 %.not228, label %.loopexit300, label %.preheader299

.preheader299:                                    ; preds = %._crit_edge
  %.5302 = getelementptr inbounds i8, ptr %426, i64 8
  %427 = load ptr, ptr %.5302, align 8, !tbaa !26
  %.not229303 = icmp eq ptr %427, null
  br i1 %.not229303, label %.loopexit300, label %.lr.ph305

.lr.ph305:                                        ; preds = %.preheader299, %.lr.ph305
  %428 = phi ptr [ %431, %.lr.ph305 ], [ %427, %.preheader299 ]
  %.5304 = phi ptr [ %.5, %.lr.ph305 ], [ %.5302, %.preheader299 ]
  %429 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2416), align 8, !tbaa !69
  %430 = load i32, ptr %12, align 4, !tbaa !13
  call void @qh_printpointid(ptr noundef %429, ptr noundef null, i32 noundef %430, ptr noundef nonnull %428, i32 noundef -1)
  %.5 = getelementptr inbounds i8, ptr %.5304, i64 8
  %431 = load ptr, ptr %.5, align 8, !tbaa !26
  %.not229 = icmp eq ptr %431, null
  br i1 %.not229, label %.loopexit300.loopexit, label %.lr.ph305, !llvm.loop !71

.loopexit300.loopexit:                            ; preds = %.lr.ph305
  %.pre360 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8
  br label %.loopexit300

.loopexit300:                                     ; preds = %.loopexit300.loopexit, %.preheader299, %._crit_edge
  %432 = phi i32 [ %.pre360, %.loopexit300.loopexit ], [ %425, %.preheader299 ], [ %425, %._crit_edge ]
  %433 = icmp ne i32 %1, 25
  %434 = icmp slt i32 %432, 3
  %or.cond45.not359 = select i1 %433, i1 true, i1 %434
  %.2189306 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2456), align 8
  %.not230307 = icmp eq ptr %.2189306, null
  %or.cond356 = select i1 %or.cond45.not359, i1 true, i1 %.not230307
  br i1 %or.cond356, label %.critedge47, label %.lr.ph309

.lr.ph309:                                        ; preds = %.loopexit300, %446
  %.2189308 = phi ptr [ %.2189, %446 ], [ %.2189306, %.loopexit300 ]
  %435 = getelementptr inbounds i8, ptr %.2189308, i64 56
  %436 = load ptr, ptr %435, align 8, !tbaa !26
  %.not231 = icmp eq ptr %436, null
  br i1 %.not231, label %.critedge47, label %437

437:                                              ; preds = %.lr.ph309
  %438 = getelementptr inbounds i8, ptr %.2189308, i64 112
  %439 = load i32, ptr %438, align 8
  %440 = and i32 %439, 8192
  %.not232 = icmp eq i32 %440, 0
  br i1 %.not232, label %441, label %446

441:                                              ; preds = %437
  %442 = getelementptr inbounds i8, ptr %.2189308, i64 104
  %443 = load i32, ptr %442, align 8, !tbaa !72
  %.not233 = icmp eq i32 %443, 0
  br i1 %.not233, label %446, label %444

444:                                              ; preds = %441
  %445 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2416), align 8, !tbaa !69
  call void @qh_printcenter(ptr noundef %445, i32 noundef 25, ptr noundef null, ptr noundef nonnull %.2189308)
  %.2189.pre = load ptr, ptr %435, align 8, !tbaa !26
  br label %446

446:                                              ; preds = %437, %441, %444
  %.2189 = phi ptr [ %436, %437 ], [ %436, %441 ], [ %.2189.pre, %444 ]
  %.not230 = icmp eq ptr %.2189, null
  br i1 %.not230, label %.critedge47, label %.lr.ph309, !llvm.loop !73

447:                                              ; preds = %5
  %448 = load i32, ptr %10, align 4, !tbaa !13
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9062, ptr noundef nonnull @.str.22, i32 noundef %448) #5
  br label %.critedge47

449:                                              ; preds = %5
  %450 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 588), align 4, !tbaa !16
  %.not = icmp eq i32 %450, 0
  br i1 %.not, label %462, label %451

451:                                              ; preds = %449
  %452 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 52), align 4, !tbaa !68
  %.not225 = icmp eq i32 %452, 0
  br i1 %.not225, label %456, label %453

453:                                              ; preds = %451
  %454 = load i32, ptr %6, align 4, !tbaa !13
  %455 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8, !tbaa !15
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9063, ptr noundef nonnull @.str.50, ptr noundef nonnull getelementptr inbounds (i8, ptr @qh_qh, i64 936), ptr noundef nonnull getelementptr inbounds (i8, ptr @qh_qh, i64 676), i32 noundef %454, i32 noundef %455) #5
  br label %.critedge47

456:                                              ; preds = %451
  %457 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8, !tbaa !15
  %458 = add nsw i32 %457, -1
  %459 = load i32, ptr %6, align 4, !tbaa !13
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9064, ptr noundef nonnull @.str.27, i32 noundef %458, i32 noundef %459) #5
  br label %.critedge47

460:                                              ; preds = %5
  %461 = load i32, ptr %6, align 4, !tbaa !13
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, i32 noundef 9065, ptr noundef nonnull @.str.22, i32 noundef %461) #5
  br label %.critedge47

462:                                              ; preds = %5, %449, %383, %360, %30, %27
  %463 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !18
  %464 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8, !tbaa !15
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %463, i32 noundef 6068, ptr noundef nonnull @.str.51, i32 noundef %464) #5
  call void @qh_errexit(i32 noundef 5, ptr noundef null, ptr noundef null) #5
  br label %.critedge47

.critedge47:                                      ; preds = %.lr.ph309, %446, %453, %456, %.loopexit300, %352, %356, %344, %346, %25, %26, %462, %460, %447, %381, %378, %376, %375, %331, %328, %22, %16, %14, %5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #5
  ret void
}

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @qh_printpointid(ptr noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef) 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 = { mustprogress nofree nounwind willreturn memory(write) "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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { 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 2752}
!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 = !{!7, !7, i64 0}
!14 = !{!6, !7, i64 2616}
!15 = !{!6, !7, i64 632}
!16 = !{!6, !7, i64 588}
!17 = !{!6, !7, i64 416}
!18 = !{!6, !11, i64 2424}
!19 = !{!6, !7, i64 276}
!20 = !{!6, !7, i64 264}
!21 = !{!6, !7, i64 2784}
!22 = !{!23, !11, i64 56}
!23 = !{!"facetT", !10, i64 0, !10, i64 8, !10, i64 16, !11, i64 24, !8, i64 32, !11, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !11, i64 72, !11, i64 80, !11, i64 88, !11, i64 96, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 113, !7, i64 113, !7, i64 113, !7, i64 113, !7, i64 113, !7, i64 113, !7, i64 113, !7, i64 114, !7, i64 114, !7, i64 114, !7, i64 114, !7, i64 114, !7, i64 114, !7, i64 114, !7, i64 114, !7, i64 115, !7, i64 115, !7, i64 115, !7, i64 115, !7, i64 115, !7, i64 115, !7, i64 115, !7, i64 115}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = !{!11, !11, i64 0}
!27 = distinct !{!27, !25}
!28 = !{!6, !7, i64 2992}
!29 = !{!6, !7, i64 2748}
!30 = !{!6, !7, i64 268}
!31 = !{!6, !7, i64 640}
!32 = !{!6, !11, i64 2832}
!33 = !{!6, !7, i64 80}
!34 = distinct !{!34, !25}
!35 = distinct !{!35, !25}
!36 = !{!6, !11, i64 648}
!37 = distinct !{!37, !25}
!38 = distinct !{!38, !25}
!39 = !{!6, !10, i64 1784}
!40 = !{!6, !10, i64 2728}
!41 = !{!6, !7, i64 252}
!42 = !{!6, !10, i64 192}
!43 = !{!6, !7, i64 248}
!44 = !{!6, !10, i64 200}
!45 = !{!6, !10, i64 2736}
!46 = !{!6, !7, i64 420}
!47 = !{!6, !7, i64 260}
!48 = !{!6, !10, i64 1792}
!49 = !{!6, !10, i64 64}
!50 = !{!6, !10, i64 216}
!51 = !{!6, !10, i64 2664}
!52 = !{!6, !7, i64 2900}
!53 = !{!54, !11, i64 16}
!54 = !{!"vertexT", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 40, !7, i64 40, !7, i64 40, !7, i64 40, !7, i64 40}
!55 = !{!6, !11, i64 2432}
!56 = distinct !{!56, !25}
!57 = !{!23, !11, i64 24}
!58 = !{!6, !7, i64 256}
!59 = !{!23, !11, i64 96}
!60 = distinct !{!60, !25}
!61 = !{!23, !11, i64 88}
!62 = distinct !{!62, !25}
!63 = distinct !{!63, !25}
!64 = distinct !{!64, !25}
!65 = distinct !{!65, !25}
!66 = distinct !{!66, !25}
!67 = !{!6, !7, i64 2592}
!68 = !{!6, !7, i64 52}
!69 = !{!6, !11, i64 2416}
!70 = distinct !{!70, !25}
!71 = distinct !{!71, !25}
!72 = !{!23, !7, i64 104}
!73 = distinct !{!73, !25}


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