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

; 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 }
%struct.ridgeT = type { ptr, ptr, ptr, i32, i8 }

@qh_qh = external global %struct.qhT, align 8
@.str.4 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [142 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [122 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [132 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [126 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [87 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

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

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

declare void @qh_settempfree(ptr noundef) #1

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

; Function Attrs: nounwind uwtable
define dso_local void @qh_checkfacet(ptr noundef %0, i32 noundef %1, ptr noundef %2) #2 {
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca ptr, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store i32 %1, ptr %5, align 4, !tbaa !9
  store ptr %2, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #3
  store ptr null, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #3
  store ptr null, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #3
  store i32 2147483647, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #3
  store i32 0, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #3
  store i32 0, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #3
  store i32 0, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #3
  %29 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !11
  %30 = sub nsw i32 %29, 2
  store i32 %30, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #3
  %31 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 29), align 8, !tbaa !15
  %32 = icmp sge i32 %31, 4
  br i1 %32, label %33, label %39

33:                                               ; preds = %3
  %34 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %35 = load ptr, ptr %4, align 8, !tbaa !5
  %36 = getelementptr inbounds %struct.facetT, ptr %35, i32 0, i32 14
  %37 = load i32, ptr %36, align 4, !tbaa !17
  %38 = load i32, ptr %5, align 4, !tbaa !9
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %34, i32 noundef 4088, ptr noundef @.str.51, i32 noundef %37, i32 noundef %38)
  br label %39

39:                                               ; preds = %33, %3
  %40 = load ptr, ptr %4, align 8, !tbaa !5
  %41 = getelementptr inbounds %struct.facetT, ptr %40, i32 0, i32 14
  %42 = load i32, ptr %41, align 4, !tbaa !17
  %43 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 182), align 8, !tbaa !19
  %44 = icmp uge i32 %42, %43
  br i1 %44, label %45, label %51

45:                                               ; preds = %39
  %46 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %47 = load ptr, ptr %4, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.facetT, ptr %47, i32 0, i32 14
  %49 = load i32, ptr %48, align 4, !tbaa !17
  %50 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 182), align 8, !tbaa !19
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %46, i32 noundef 6414, ptr noundef @.str.52, i32 noundef %49, i32 noundef %50)
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %51

51:                                               ; preds = %45, %39
  %52 = load ptr, ptr %4, align 8, !tbaa !5
  %53 = getelementptr inbounds %struct.facetT, ptr %52, i32 0, i32 13
  %54 = load i32, ptr %53, align 8, !tbaa !20
  %55 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 217), align 8, !tbaa !21
  %56 = icmp ugt i32 %54, %55
  br i1 %56, label %57, label %66

57:                                               ; preds = %51
  %58 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %59 = load ptr, ptr %4, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.facetT, ptr %59, i32 0, i32 14
  %61 = load i32, ptr %60, align 4, !tbaa !17
  %62 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 217), align 8, !tbaa !21
  %63 = load ptr, ptr %4, align 8, !tbaa !5
  %64 = getelementptr inbounds %struct.facetT, ptr %63, i32 0, i32 13
  %65 = load i32, ptr %64, align 8, !tbaa !20
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %58, i32 noundef 6415, ptr noundef @.str.53, i32 noundef %61, i32 noundef %62, i32 noundef %65)
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %66

66:                                               ; preds = %57, %51
  %67 = load ptr, ptr %4, align 8, !tbaa !5
  %68 = getelementptr inbounds %struct.facetT, ptr %67, i32 0, i32 15
  %69 = load i32, ptr %68, align 8
  %70 = lshr i32 %69, 11
  %71 = and i32 %70, 1
  %72 = icmp ne i32 %71, 0
  br i1 %72, label %73, label %82

73:                                               ; preds = %66
  %74 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 203), align 4, !tbaa !22
  %75 = icmp ne i32 %74, 0
  br i1 %75, label %82, label %76

76:                                               ; preds = %73
  %77 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %78 = load ptr, ptr %4, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.facetT, ptr %78, i32 0, i32 14
  %80 = load i32, ptr %79, align 4, !tbaa !17
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %77, i32 noundef 6119, ptr noundef @.str.54, i32 noundef %80)
  %81 = load ptr, ptr %4, align 8, !tbaa !5
  call void @qh_errexit(i32 noundef 5, ptr noundef %81, ptr noundef null)
  br label %82

82:                                               ; preds = %76, %73, %66
  %83 = load ptr, ptr %4, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.facetT, ptr %83, i32 0, i32 15
  %85 = load i32, ptr %84, align 8
  %86 = lshr i32 %85, 31
  %87 = icmp ne i32 %86, 0
  br i1 %87, label %88, label %104

88:                                               ; preds = %82
  %89 = load ptr, ptr %4, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.facetT, ptr %89, i32 0, i32 15
  %91 = load i32, ptr %90, align 8
  %92 = lshr i32 %91, 11
  %93 = and i32 %92, 1
  %94 = icmp ne i32 %93, 0
  br i1 %94, label %104, label %95

95:                                               ; preds = %88
  %96 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 222), align 8, !tbaa !23
  %97 = call i32 @qh_setsize(ptr noundef %96)
  %98 = icmp eq i32 %97, 0
  br i1 %98, label %99, label %104

99:                                               ; preds = %95
  %100 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %101 = load ptr, ptr %4, align 8, !tbaa !5
  %102 = getelementptr inbounds %struct.facetT, ptr %101, i32 0, i32 14
  %103 = load i32, ptr %102, align 4, !tbaa !17
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %100, i32 noundef 6399, ptr noundef @.str.55, i32 noundef %103)
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %104

104:                                              ; preds = %99, %95, %88, %82
  %105 = load ptr, ptr %4, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.facetT, ptr %105, i32 0, i32 15
  %107 = load i32, ptr %106, align 8
  %108 = lshr i32 %107, 30
  %109 = and i32 %108, 1
  %110 = icmp ne i32 %109, 0
  br i1 %110, label %111, label %127

111:                                              ; preds = %104
  %112 = load ptr, ptr %4, align 8, !tbaa !5
  %113 = getelementptr inbounds %struct.facetT, ptr %112, i32 0, i32 15
  %114 = load i32, ptr %113, align 8
  %115 = lshr i32 %114, 11
  %116 = and i32 %115, 1
  %117 = icmp ne i32 %116, 0
  br i1 %117, label %127, label %118

118:                                              ; preds = %111
  %119 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 222), align 8, !tbaa !23
  %120 = call i32 @qh_setsize(ptr noundef %119)
  %121 = icmp eq i32 %120, 0
  br i1 %121, label %122, label %127

122:                                              ; preds = %118
  %123 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %124 = load ptr, ptr %4, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.facetT, ptr %124, i32 0, i32 14
  %126 = load i32, ptr %125, align 4, !tbaa !17
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %123, i32 noundef 6400, ptr noundef @.str.56, i32 noundef %126)
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %127

127:                                              ; preds = %122, %118, %111, %104
  %128 = load ptr, ptr %4, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.facetT, ptr %128, i32 0, i32 3
  %130 = load ptr, ptr %129, align 8, !tbaa !24
  %131 = icmp ne ptr %130, null
  br i1 %131, label %137, label %132

132:                                              ; preds = %127
  %133 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %134 = load ptr, ptr %4, align 8, !tbaa !5
  %135 = getelementptr inbounds %struct.facetT, ptr %134, i32 0, i32 14
  %136 = load i32, ptr %135, align 4, !tbaa !17
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %133, i32 noundef 6120, ptr noundef @.str.57, i32 noundef %136)
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %137

137:                                              ; preds = %132, %127
  %138 = load ptr, ptr %4, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.facetT, ptr %138, i32 0, i32 15
  %140 = load i32, ptr %139, align 8
  %141 = lshr i32 %140, 10
  %142 = and i32 %141, 1
  %143 = icmp ne i32 %142, 0
  br i1 %143, label %187, label %144

144:                                              ; preds = %137
  %145 = load ptr, ptr %4, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.facetT, ptr %145, i32 0, i32 15
  %147 = load i32, ptr %146, align 8
  %148 = lshr i32 %147, 21
  %149 = and i32 %148, 1
  %150 = icmp ne i32 %149, 0
  br i1 %150, label %151, label %165

151:                                              ; preds = %144
  %152 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %153 = load ptr, ptr %4, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.facetT, ptr %153, i32 0, i32 14
  %155 = load i32, ptr %154, align 4, !tbaa !17
  %156 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 166), align 8, !tbaa !25
  %157 = icmp ne ptr %156, null
  br i1 %157, label %158, label %162

158:                                              ; preds = %151
  %159 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 166), align 8, !tbaa !25
  %160 = getelementptr inbounds %struct.facetT, ptr %159, i32 0, i32 14
  %161 = load i32, ptr %160, align 4, !tbaa !17
  br label %163

162:                                              ; preds = %151
  br label %163

163:                                              ; preds = %162, %158
  %164 = phi i32 [ %161, %158 ], [ -1, %162 ]
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %152, i32 noundef 6349, ptr noundef @.str.58, i32 noundef %155, i32 noundef %164)
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %165

165:                                              ; preds = %163, %144
  %166 = load ptr, ptr %4, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.facetT, ptr %166, i32 0, i32 15
  %168 = load i32, ptr %167, align 8
  %169 = lshr i32 %168, 29
  %170 = and i32 %169, 1
  %171 = icmp ne i32 %170, 0
  br i1 %171, label %172, label %186

172:                                              ; preds = %165
  %173 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %174 = load ptr, ptr %4, align 8, !tbaa !5
  %175 = getelementptr inbounds %struct.facetT, ptr %174, i32 0, i32 14
  %176 = load i32, ptr %175, align 4, !tbaa !17
  %177 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 166), align 8, !tbaa !25
  %178 = icmp ne ptr %177, null
  br i1 %178, label %179, label %183

179:                                              ; preds = %172
  %180 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 166), align 8, !tbaa !25
  %181 = getelementptr inbounds %struct.facetT, ptr %180, i32 0, i32 14
  %182 = load i32, ptr %181, align 4, !tbaa !17
  br label %184

183:                                              ; preds = %172
  br label %184

184:                                              ; preds = %183, %179
  %185 = phi i32 [ %182, %179 ], [ -1, %183 ]
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %173, i32 noundef 6383, ptr noundef @.str.59, i32 noundef %176, i32 noundef %185)
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %186

186:                                              ; preds = %184, %165
  br label %187

187:                                              ; preds = %186, %137
  %188 = load ptr, ptr %4, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.facetT, ptr %188, i32 0, i32 8
  %190 = load ptr, ptr %189, align 8, !tbaa !26
  %191 = load ptr, ptr %4, align 8, !tbaa !5
  %192 = getelementptr inbounds %struct.facetT, ptr %191, i32 0, i32 14
  %193 = load i32, ptr %192, align 4, !tbaa !17
  call void @qh_setcheck(ptr noundef %190, ptr noundef @.str.60, i32 noundef %193)
  %194 = load ptr, ptr %4, align 8, !tbaa !5
  %195 = getelementptr inbounds %struct.facetT, ptr %194, i32 0, i32 9
  %196 = load ptr, ptr %195, align 8, !tbaa !27
  %197 = load ptr, ptr %4, align 8, !tbaa !5
  %198 = getelementptr inbounds %struct.facetT, ptr %197, i32 0, i32 14
  %199 = load i32, ptr %198, align 4, !tbaa !17
  call void @qh_setcheck(ptr noundef %196, ptr noundef @.str.61, i32 noundef %199)
  %200 = load ptr, ptr %4, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.facetT, ptr %200, i32 0, i32 11
  %202 = load ptr, ptr %201, align 8, !tbaa !28
  %203 = load ptr, ptr %4, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.facetT, ptr %203, i32 0, i32 14
  %205 = load i32, ptr %204, align 4, !tbaa !17
  call void @qh_setcheck(ptr noundef %202, ptr noundef @.str.62, i32 noundef %205)
  %206 = load ptr, ptr %4, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.facetT, ptr %206, i32 0, i32 12
  %208 = load ptr, ptr %207, align 8, !tbaa !29
  %209 = load ptr, ptr %4, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.facetT, ptr %209, i32 0, i32 14
  %211 = load i32, ptr %210, align 4, !tbaa !17
  call void @qh_setcheck(ptr noundef %208, ptr noundef @.str.63, i32 noundef %211)
  %212 = load ptr, ptr %4, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.facetT, ptr %212, i32 0, i32 10
  %214 = load ptr, ptr %213, align 8, !tbaa !30
  %215 = load ptr, ptr %4, align 8, !tbaa !5
  %216 = getelementptr inbounds %struct.facetT, ptr %215, i32 0, i32 14
  %217 = load i32, ptr %216, align 4, !tbaa !17
  call void @qh_setcheck(ptr noundef %214, ptr noundef @.str.64, i32 noundef %217)
  store ptr null, ptr %14, align 8, !tbaa !5
  %218 = load ptr, ptr %4, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.facetT, ptr %218, i32 0, i32 8
  %220 = load ptr, ptr %219, align 8, !tbaa !26
  %221 = icmp ne ptr %220, null
  br i1 %221, label %222, label %269

222:                                              ; preds = %187
  %223 = load ptr, ptr %4, align 8, !tbaa !5
  %224 = getelementptr inbounds %struct.facetT, ptr %223, i32 0, i32 8
  %225 = load ptr, ptr %224, align 8, !tbaa !26
  %226 = getelementptr inbounds %struct.setT, ptr %225, i32 0, i32 1
  %227 = getelementptr inbounds [1 x %union.setelemT], ptr %226, i64 0, i64 0
  store ptr %227, ptr %15, align 8, !tbaa !5
  br label %228

228:                                              ; preds = %264, %222
  %229 = load ptr, ptr %15, align 8, !tbaa !5
  %230 = getelementptr inbounds ptr, ptr %229, i32 1
  store ptr %230, ptr %15, align 8, !tbaa !5
  %231 = load ptr, ptr %229, align 8, !tbaa !5
  store ptr %231, ptr %14, align 8, !tbaa !5
  %232 = icmp ne ptr %231, null
  br i1 %232, label %233, label %268

233:                                              ; preds = %228
  %234 = load ptr, ptr %14, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.vertexT, ptr %234, i32 0, i32 6
  %236 = load i8, ptr %235, align 8
  %237 = lshr i8 %236, 2
  %238 = and i8 %237, 1
  %239 = zext i8 %238 to i32
  %240 = icmp ne i32 %239, 0
  br i1 %240, label %241, label %250

241:                                              ; preds = %233
  %242 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %243 = load ptr, ptr %14, align 8, !tbaa !5
  %244 = getelementptr inbounds %struct.vertexT, ptr %243, i32 0, i32 4
  %245 = load i32, ptr %244, align 8, !tbaa !31
  %246 = load ptr, ptr %4, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.facetT, ptr %246, i32 0, i32 14
  %248 = load i32, ptr %247, align 4, !tbaa !17
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %242, i32 noundef 6121, ptr noundef @.str.65, i32 noundef %245, i32 noundef %248)
  %249 = load ptr, ptr %14, align 8, !tbaa !5
  call void @qh_errprint(ptr noundef @.str.66, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef %249)
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %250

250:                                              ; preds = %241, %233
  %251 = load ptr, ptr %14, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.vertexT, ptr %251, i32 0, i32 4
  %253 = load i32, ptr %252, align 8, !tbaa !31
  %254 = load i32, ptr %16, align 4, !tbaa !9
  %255 = icmp uge i32 %253, %254
  br i1 %255, label %256, label %264

256:                                              ; preds = %250
  %257 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %258 = load ptr, ptr %4, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.facetT, ptr %258, i32 0, i32 14
  %260 = load i32, ptr %259, align 4, !tbaa !17
  %261 = load ptr, ptr %14, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.vertexT, ptr %261, i32 0, i32 4
  %263 = load i32, ptr %262, align 8, !tbaa !31
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %257, i32 noundef 6122, ptr noundef @.str.67, i32 noundef %260, i32 noundef %263)
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %268

264:                                              ; preds = %250
  %265 = load ptr, ptr %14, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.vertexT, ptr %265, i32 0, i32 4
  %267 = load i32, ptr %266, align 8, !tbaa !31
  store i32 %267, ptr %16, align 4, !tbaa !9
  br label %228, !llvm.loop !33

268:                                              ; preds = %256, %228
  br label %269

269:                                              ; preds = %268, %187
  %270 = load ptr, ptr %4, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.facetT, ptr %270, i32 0, i32 10
  %272 = load ptr, ptr %271, align 8, !tbaa !30
  %273 = call i32 @qh_setsize(ptr noundef %272)
  store i32 %273, ptr %17, align 4, !tbaa !9
  %274 = load ptr, ptr %4, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.facetT, ptr %274, i32 0, i32 8
  %276 = load ptr, ptr %275, align 8, !tbaa !26
  %277 = call i32 @qh_setsize(ptr noundef %276)
  store i32 %277, ptr %18, align 4, !tbaa !9
  %278 = load ptr, ptr %4, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.facetT, ptr %278, i32 0, i32 9
  %280 = load ptr, ptr %279, align 8, !tbaa !27
  %281 = call i32 @qh_setsize(ptr noundef %280)
  store i32 %281, ptr %19, align 4, !tbaa !9
  %282 = load ptr, ptr %4, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.facetT, ptr %282, i32 0, i32 15
  %284 = load i32, ptr %283, align 8
  %285 = lshr i32 %284, 13
  %286 = and i32 %285, 1
  %287 = icmp ne i32 %286, 0
  br i1 %287, label %288, label %320

288:                                              ; preds = %269
  %289 = load i32, ptr %18, align 4, !tbaa !9
  %290 = load i32, ptr %17, align 4, !tbaa !9
  %291 = add nsw i32 %289, %290
  %292 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !11
  %293 = mul nsw i32 2, %292
  %294 = icmp ne i32 %291, %293
  br i1 %294, label %295, label %319

295:                                              ; preds = %288
  %296 = load ptr, ptr %4, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.facetT, ptr %296, i32 0, i32 15
  %298 = load i32, ptr %297, align 8
  %299 = lshr i32 %298, 30
  %300 = and i32 %299, 1
  %301 = icmp ne i32 %300, 0
  br i1 %301, label %319, label %302

302:                                              ; preds = %295
  %303 = load ptr, ptr %4, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct.facetT, ptr %303, i32 0, i32 15
  %305 = load i32, ptr %304, align 8
  %306 = lshr i32 %305, 31
  %307 = icmp ne i32 %306, 0
  br i1 %307, label %319, label %308

308:                                              ; preds = %302
  %309 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %310 = load ptr, ptr %4, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.facetT, ptr %310, i32 0, i32 14
  %312 = load i32, ptr %311, align 4, !tbaa !17
  %313 = load i32, ptr %18, align 4, !tbaa !9
  %314 = load i32, ptr %17, align 4, !tbaa !9
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %309, i32 noundef 6123, ptr noundef @.str.68, i32 noundef %312, i32 noundef %313, i32 noundef %314)
  %315 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %316 = load ptr, ptr %4, align 8, !tbaa !5
  %317 = getelementptr inbounds %struct.facetT, ptr %316, i32 0, i32 10
  %318 = load ptr, ptr %317, align 8, !tbaa !30
  call void @qh_setprint(ptr noundef %315, ptr noundef @.str.4, ptr noundef %318)
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %319

319:                                              ; preds = %308, %302, %295, %288
  br label %398

320:                                              ; preds = %269
  %321 = load i32, ptr %5, align 4, !tbaa !9
  %322 = icmp ne i32 %321, 0
  br i1 %322, label %351, label %323

323:                                              ; preds = %320
  %324 = load i32, ptr %18, align 4, !tbaa !9
  %325 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !11
  %326 = icmp slt i32 %324, %325
  br i1 %326, label %331, label %327

327:                                              ; preds = %323
  %328 = load i32, ptr %17, align 4, !tbaa !9
  %329 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !11
  %330 = icmp slt i32 %328, %329
  br i1 %330, label %331, label %351

331:                                              ; preds = %327, %323
  %332 = load ptr, ptr %4, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.facetT, ptr %332, i32 0, i32 15
  %334 = load i32, ptr %333, align 8
  %335 = lshr i32 %334, 30
  %336 = and i32 %335, 1
  %337 = icmp ne i32 %336, 0
  br i1 %337, label %351, label %338

338:                                              ; preds = %331
  %339 = load ptr, ptr %4, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.facetT, ptr %339, i32 0, i32 15
  %341 = load i32, ptr %340, align 8
  %342 = lshr i32 %341, 31
  %343 = icmp ne i32 %342, 0
  br i1 %343, label %351, label %344

344:                                              ; preds = %338
  %345 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %346 = load ptr, ptr %4, align 8, !tbaa !5
  %347 = getelementptr inbounds %struct.facetT, ptr %346, i32 0, i32 14
  %348 = load i32, ptr %347, align 4, !tbaa !17
  %349 = load i32, ptr %18, align 4, !tbaa !9
  %350 = load i32, ptr %17, align 4, !tbaa !9
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %345, i32 noundef 6124, ptr noundef @.str.69, i32 noundef %348, i32 noundef %349, i32 noundef %350)
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %351

351:                                              ; preds = %344, %338, %331, %327, %320
  %352 = load i32, ptr %19, align 4, !tbaa !9
  %353 = load i32, ptr %17, align 4, !tbaa !9
  %354 = icmp slt i32 %352, %353
  br i1 %354, label %375, label %355

355:                                              ; preds = %351
  %356 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !11
  %357 = icmp eq i32 %356, 3
  br i1 %357, label %358, label %365

358:                                              ; preds = %355
  %359 = load i32, ptr %18, align 4, !tbaa !9
  %360 = load i32, ptr %19, align 4, !tbaa !9
  %361 = icmp sgt i32 %359, %360
  br i1 %361, label %362, label %365

362:                                              ; preds = %358
  %363 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 202), align 8, !tbaa !35
  %364 = icmp ne i32 %363, 0
  br i1 %364, label %365, label %375

365:                                              ; preds = %362, %358, %355
  %366 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !11
  %367 = icmp eq i32 %366, 2
  br i1 %367, label %368, label %397

368:                                              ; preds = %365
  %369 = load i32, ptr %19, align 4, !tbaa !9
  %370 = load i32, ptr %18, align 4, !tbaa !9
  %371 = add nsw i32 %369, %370
  %372 = load i32, ptr %17, align 4, !tbaa !9
  %373 = add nsw i32 %371, %372
  %374 = icmp ne i32 %373, 6
  br i1 %374, label %375, label %397

375:                                              ; preds = %368, %362, %351
  %376 = load ptr, ptr %4, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.facetT, ptr %376, i32 0, i32 15
  %378 = load i32, ptr %377, align 8
  %379 = lshr i32 %378, 30
  %380 = and i32 %379, 1
  %381 = icmp ne i32 %380, 0
  br i1 %381, label %396, label %382

382:                                              ; preds = %375
  %383 = load ptr, ptr %4, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.facetT, ptr %383, i32 0, i32 15
  %385 = load i32, ptr %384, align 8
  %386 = lshr i32 %385, 31
  %387 = icmp ne i32 %386, 0
  br i1 %387, label %396, label %388

388:                                              ; preds = %382
  %389 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %390 = load ptr, ptr %4, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.facetT, ptr %390, i32 0, i32 14
  %392 = load i32, ptr %391, align 4, !tbaa !17
  %393 = load i32, ptr %19, align 4, !tbaa !9
  %394 = load i32, ptr %17, align 4, !tbaa !9
  %395 = load i32, ptr %18, align 4, !tbaa !9
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %389, i32 noundef 6125, ptr noundef @.str.70, i32 noundef %392, i32 noundef %393, i32 noundef %394, i32 noundef %395)
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %396

396:                                              ; preds = %388, %382, %375
  br label %397

397:                                              ; preds = %396, %368, %365
  br label %398

398:                                              ; preds = %397, %319
  store ptr null, ptr %7, align 8, !tbaa !5
  %399 = load ptr, ptr %4, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.facetT, ptr %399, i32 0, i32 10
  %401 = load ptr, ptr %400, align 8, !tbaa !30
  %402 = icmp ne ptr %401, null
  br i1 %402, label %403, label %449

403:                                              ; preds = %398
  %404 = load ptr, ptr %4, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct.facetT, ptr %404, i32 0, i32 10
  %406 = load ptr, ptr %405, align 8, !tbaa !30
  %407 = getelementptr inbounds %struct.setT, ptr %406, i32 0, i32 1
  %408 = getelementptr inbounds [1 x %union.setelemT], ptr %407, i64 0, i64 0
  store ptr %408, ptr %8, align 8, !tbaa !5
  br label %409

409:                                              ; preds = %442, %403
  %410 = load ptr, ptr %8, align 8, !tbaa !5
  %411 = getelementptr inbounds ptr, ptr %410, i32 1
  store ptr %411, ptr %8, align 8, !tbaa !5
  %412 = load ptr, ptr %410, align 8, !tbaa !5
  store ptr %412, ptr %7, align 8, !tbaa !5
  %413 = icmp ne ptr %412, null
  br i1 %413, label %414, label %448

414:                                              ; preds = %409
  %415 = load ptr, ptr %7, align 8, !tbaa !5
  %416 = icmp eq ptr %415, inttoptr (i64 2 to ptr)
  br i1 %416, label %420, label %417

417:                                              ; preds = %414
  %418 = load ptr, ptr %7, align 8, !tbaa !5
  %419 = icmp eq ptr %418, inttoptr (i64 1 to ptr)
  br i1 %419, label %420, label %426

420:                                              ; preds = %417, %414
  %421 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %422 = load ptr, ptr %4, align 8, !tbaa !5
  %423 = getelementptr inbounds %struct.facetT, ptr %422, i32 0, i32 14
  %424 = load i32, ptr %423, align 4, !tbaa !17
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %421, i32 noundef 6126, ptr noundef @.str.71, i32 noundef %424)
  %425 = load ptr, ptr %4, align 8, !tbaa !5
  call void @qh_errexit(i32 noundef 5, ptr noundef %425, ptr noundef null)
  br label %426

426:                                              ; preds = %420, %417
  %427 = load ptr, ptr %7, align 8, !tbaa !5
  %428 = getelementptr inbounds %struct.facetT, ptr %427, i32 0, i32 15
  %429 = load i32, ptr %428, align 8
  %430 = lshr i32 %429, 11
  %431 = and i32 %430, 1
  %432 = icmp ne i32 %431, 0
  br i1 %432, label %433, label %442

433:                                              ; preds = %426
  %434 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %435 = load ptr, ptr %4, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.facetT, ptr %435, i32 0, i32 14
  %437 = load i32, ptr %436, align 4, !tbaa !17
  %438 = load ptr, ptr %7, align 8, !tbaa !5
  %439 = getelementptr inbounds %struct.facetT, ptr %438, i32 0, i32 14
  %440 = load i32, ptr %439, align 4, !tbaa !17
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %434, i32 noundef 6401, ptr noundef @.str.72, i32 noundef %437, i32 noundef %440)
  %441 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %441, ptr %9, align 8, !tbaa !5
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %442

442:                                              ; preds = %433, %426
  %443 = load ptr, ptr %7, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct.facetT, ptr %443, i32 0, i32 15
  %445 = load i32, ptr %444, align 8
  %446 = and i32 %445, -16385
  %447 = or i32 %446, 16384
  store i32 %447, ptr %444, align 8
  br label %409, !llvm.loop !36

448:                                              ; preds = %409
  br label %449

449:                                              ; preds = %448, %398
  store ptr null, ptr %7, align 8, !tbaa !5
  %450 = load ptr, ptr %4, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.facetT, ptr %450, i32 0, i32 10
  %452 = load ptr, ptr %451, align 8, !tbaa !30
  %453 = icmp ne ptr %452, null
  br i1 %453, label %454, label %510

454:                                              ; preds = %449
  %455 = load ptr, ptr %4, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.facetT, ptr %455, i32 0, i32 10
  %457 = load ptr, ptr %456, align 8, !tbaa !30
  %458 = getelementptr inbounds %struct.setT, ptr %457, i32 0, i32 1
  %459 = getelementptr inbounds [1 x %union.setelemT], ptr %458, i64 0, i64 0
  store ptr %459, ptr %8, align 8, !tbaa !5
  br label %460

460:                                              ; preds = %503, %454
  %461 = load ptr, ptr %8, align 8, !tbaa !5
  %462 = getelementptr inbounds ptr, ptr %461, i32 1
  store ptr %462, ptr %8, align 8, !tbaa !5
  %463 = load ptr, ptr %461, align 8, !tbaa !5
  store ptr %463, ptr %7, align 8, !tbaa !5
  %464 = icmp ne ptr %463, null
  br i1 %464, label %465, label %509

465:                                              ; preds = %460
  %466 = load ptr, ptr %7, align 8, !tbaa !5
  %467 = getelementptr inbounds %struct.facetT, ptr %466, i32 0, i32 10
  %468 = load ptr, ptr %467, align 8, !tbaa !30
  %469 = load ptr, ptr %4, align 8, !tbaa !5
  %470 = call i32 @qh_setin(ptr noundef %468, ptr noundef %469)
  %471 = icmp ne i32 %470, 0
  br i1 %471, label %487, label %472

472:                                              ; preds = %465
  %473 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %474 = load ptr, ptr %4, align 8, !tbaa !5
  %475 = getelementptr inbounds %struct.facetT, ptr %474, i32 0, i32 14
  %476 = load i32, ptr %475, align 4, !tbaa !17
  %477 = load ptr, ptr %7, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.facetT, ptr %477, i32 0, i32 14
  %479 = load i32, ptr %478, align 4, !tbaa !17
  %480 = load ptr, ptr %7, align 8, !tbaa !5
  %481 = getelementptr inbounds %struct.facetT, ptr %480, i32 0, i32 14
  %482 = load i32, ptr %481, align 4, !tbaa !17
  %483 = load ptr, ptr %4, align 8, !tbaa !5
  %484 = getelementptr inbounds %struct.facetT, ptr %483, i32 0, i32 14
  %485 = load i32, ptr %484, align 4, !tbaa !17
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %473, i32 noundef 6127, ptr noundef @.str.73, i32 noundef %476, i32 noundef %479, i32 noundef %482, i32 noundef %485)
  %486 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %486, ptr %9, align 8, !tbaa !5
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %487

487:                                              ; preds = %472, %465
  %488 = load ptr, ptr %7, align 8, !tbaa !5
  %489 = getelementptr inbounds %struct.facetT, ptr %488, i32 0, i32 15
  %490 = load i32, ptr %489, align 8
  %491 = lshr i32 %490, 14
  %492 = and i32 %491, 1
  %493 = icmp ne i32 %492, 0
  br i1 %493, label %503, label %494

494:                                              ; preds = %487
  %495 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %496 = load ptr, ptr %4, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct.facetT, ptr %496, i32 0, i32 14
  %498 = load i32, ptr %497, align 4, !tbaa !17
  %499 = load ptr, ptr %7, align 8, !tbaa !5
  %500 = getelementptr inbounds %struct.facetT, ptr %499, i32 0, i32 14
  %501 = load i32, ptr %500, align 4, !tbaa !17
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %495, i32 noundef 6128, ptr noundef @.str.74, i32 noundef %498, i32 noundef %501)
  %502 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %502, ptr %9, align 8, !tbaa !5
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %503

503:                                              ; preds = %494, %487
  %504 = load ptr, ptr %7, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.facetT, ptr %504, i32 0, i32 15
  %506 = load i32, ptr %505, align 8
  %507 = and i32 %506, -16385
  %508 = or i32 %507, 0
  store i32 %508, ptr %505, align 8
  br label %460, !llvm.loop !37

509:                                              ; preds = %460
  br label %510

510:                                              ; preds = %509, %449
  store ptr null, ptr %10, align 8, !tbaa !5
  %511 = load ptr, ptr %4, align 8, !tbaa !5
  %512 = getelementptr inbounds %struct.facetT, ptr %511, i32 0, i32 9
  %513 = load ptr, ptr %512, align 8, !tbaa !27
  %514 = icmp ne ptr %513, null
  br i1 %514, label %515, label %539

515:                                              ; preds = %510
  %516 = load ptr, ptr %4, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.facetT, ptr %516, i32 0, i32 9
  %518 = load ptr, ptr %517, align 8, !tbaa !27
  %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 %11, align 8, !tbaa !5
  br label %521

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

526:                                              ; preds = %521
  %527 = load ptr, ptr %10, align 8, !tbaa !5
  %528 = getelementptr inbounds %struct.ridgeT, ptr %527, i32 0, i32 0
  %529 = load ptr, ptr %528, align 8, !tbaa !38
  %530 = load ptr, ptr %10, align 8, !tbaa !5
  %531 = getelementptr inbounds %struct.ridgeT, ptr %530, i32 0, i32 3
  %532 = load i32, ptr %531, align 8, !tbaa !40
  call void @qh_setcheck(ptr noundef %529, ptr noundef @.str.75, i32 noundef %532)
  %533 = load ptr, ptr %10, align 8, !tbaa !5
  %534 = getelementptr inbounds %struct.ridgeT, ptr %533, i32 0, i32 4
  %535 = load i8, ptr %534, align 4
  %536 = and i8 %535, -2
  %537 = or i8 %536, 0
  store i8 %537, ptr %534, align 4
  br label %521, !llvm.loop !41

538:                                              ; preds = %521
  br label %539

539:                                              ; preds = %538, %510
  store ptr null, ptr %10, align 8, !tbaa !5
  %540 = load ptr, ptr %4, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.facetT, ptr %540, i32 0, i32 9
  %542 = load ptr, ptr %541, align 8, !tbaa !27
  %543 = icmp ne ptr %542, null
  br i1 %543, label %544, label %710

544:                                              ; preds = %539
  %545 = load ptr, ptr %4, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.facetT, ptr %545, i32 0, i32 9
  %547 = load ptr, ptr %546, align 8, !tbaa !27
  %548 = getelementptr inbounds %struct.setT, ptr %547, i32 0, i32 1
  %549 = getelementptr inbounds [1 x %union.setelemT], ptr %548, i64 0, i64 0
  store ptr %549, ptr %11, align 8, !tbaa !5
  br label %550

550:                                              ; preds = %708, %544
  %551 = load ptr, ptr %11, align 8, !tbaa !5
  %552 = getelementptr inbounds ptr, ptr %551, i32 1
  store ptr %552, ptr %11, align 8, !tbaa !5
  %553 = load ptr, ptr %551, align 8, !tbaa !5
  store ptr %553, ptr %10, align 8, !tbaa !5
  %554 = icmp ne ptr %553, null
  br i1 %554, label %555, label %709

555:                                              ; preds = %550
  %556 = load ptr, ptr %10, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.ridgeT, ptr %556, i32 0, i32 4
  %558 = load i8, ptr %557, align 4
  %559 = and i8 %558, 1
  %560 = zext i8 %559 to i32
  %561 = icmp ne i32 %560, 0
  br i1 %561, label %562, label %571

562:                                              ; preds = %555
  %563 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %564 = load ptr, ptr %4, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.facetT, ptr %564, i32 0, i32 14
  %566 = load i32, ptr %565, align 4, !tbaa !17
  %567 = load ptr, ptr %10, align 8, !tbaa !5
  %568 = getelementptr inbounds %struct.ridgeT, ptr %567, i32 0, i32 3
  %569 = load i32, ptr %568, align 8, !tbaa !40
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %563, i32 noundef 6129, ptr noundef @.str.76, i32 noundef %566, i32 noundef %569)
  %570 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %570, ptr %12, align 8, !tbaa !5
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %571

571:                                              ; preds = %562, %555
  %572 = load ptr, ptr %10, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.ridgeT, ptr %572, i32 0, i32 4
  %574 = load i8, ptr %573, align 4
  %575 = and i8 %574, -2
  %576 = or i8 %575, 1
  store i8 %576, ptr %573, align 4
  %577 = load ptr, ptr %10, align 8, !tbaa !5
  %578 = getelementptr inbounds %struct.ridgeT, ptr %577, i32 0, i32 0
  %579 = load ptr, ptr %578, align 8, !tbaa !38
  %580 = call i32 @qh_setsize(ptr noundef %579)
  store i32 %580, ptr %20, align 4, !tbaa !9
  %581 = load i32, ptr %20, align 4, !tbaa !9
  %582 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !11
  %583 = sub nsw i32 %582, 1
  %584 = icmp ne i32 %581, %583
  br i1 %584, label %585, label %599

585:                                              ; preds = %571
  %586 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %587 = load ptr, ptr %10, align 8, !tbaa !5
  %588 = getelementptr inbounds %struct.ridgeT, ptr %587, i32 0, i32 1
  %589 = load ptr, ptr %588, align 8, !tbaa !42
  %590 = getelementptr inbounds %struct.facetT, ptr %589, i32 0, i32 14
  %591 = load i32, ptr %590, align 4, !tbaa !17
  %592 = load ptr, ptr %10, align 8, !tbaa !5
  %593 = getelementptr inbounds %struct.ridgeT, ptr %592, i32 0, i32 2
  %594 = load ptr, ptr %593, align 8, !tbaa !43
  %595 = getelementptr inbounds %struct.facetT, ptr %594, i32 0, i32 14
  %596 = load i32, ptr %595, align 4, !tbaa !17
  %597 = load i32, ptr %20, align 4, !tbaa !9
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %586, i32 noundef 6130, ptr noundef @.str.77, i32 noundef %591, i32 noundef %596, i32 noundef %597)
  %598 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %598, ptr %12, align 8, !tbaa !5
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %599

599:                                              ; preds = %585, %571
  %600 = load ptr, ptr %10, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.ridgeT, ptr %600, i32 0, i32 1
  %602 = load ptr, ptr %601, align 8, !tbaa !42
  %603 = load ptr, ptr %4, align 8, !tbaa !5
  %604 = icmp eq ptr %602, %603
  br i1 %604, label %605, label %609

605:                                              ; preds = %599
  %606 = load ptr, ptr %10, align 8, !tbaa !5
  %607 = getelementptr inbounds %struct.ridgeT, ptr %606, i32 0, i32 2
  %608 = load ptr, ptr %607, align 8, !tbaa !43
  br label %613

609:                                              ; preds = %599
  %610 = load ptr, ptr %10, align 8, !tbaa !5
  %611 = getelementptr inbounds %struct.ridgeT, ptr %610, i32 0, i32 1
  %612 = load ptr, ptr %611, align 8, !tbaa !42
  br label %613

613:                                              ; preds = %609, %605
  %614 = phi ptr [ %608, %605 ], [ %612, %609 ]
  store ptr %614, ptr %7, align 8, !tbaa !5
  %615 = load ptr, ptr %7, align 8, !tbaa !5
  %616 = getelementptr inbounds %struct.facetT, ptr %615, i32 0, i32 15
  %617 = load i32, ptr %616, align 8
  %618 = and i32 %617, -16385
  %619 = or i32 %618, 16384
  store i32 %619, ptr %616, align 8
  %620 = load ptr, ptr %4, align 8, !tbaa !5
  %621 = getelementptr inbounds %struct.facetT, ptr %620, i32 0, i32 10
  %622 = load ptr, ptr %621, align 8, !tbaa !30
  %623 = load ptr, ptr %7, align 8, !tbaa !5
  %624 = call i32 @qh_setin(ptr noundef %622, ptr noundef %623)
  %625 = icmp ne i32 %624, 0
  br i1 %625, label %638, label %626

626:                                              ; preds = %613
  %627 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %628 = load ptr, ptr %4, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.facetT, ptr %628, i32 0, i32 14
  %630 = load i32, ptr %629, align 4, !tbaa !17
  %631 = load ptr, ptr %7, align 8, !tbaa !5
  %632 = getelementptr inbounds %struct.facetT, ptr %631, i32 0, i32 14
  %633 = load i32, ptr %632, align 4, !tbaa !17
  %634 = load ptr, ptr %10, align 8, !tbaa !5
  %635 = getelementptr inbounds %struct.ridgeT, ptr %634, i32 0, i32 3
  %636 = load i32, ptr %635, align 8, !tbaa !40
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %627, i32 noundef 6131, ptr noundef @.str.78, i32 noundef %630, i32 noundef %633, i32 noundef %636)
  %637 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %637, ptr %12, align 8, !tbaa !5
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %638

638:                                              ; preds = %626, %613
  %639 = load ptr, ptr %4, align 8, !tbaa !5
  %640 = getelementptr inbounds %struct.facetT, ptr %639, i32 0, i32 15
  %641 = load i32, ptr %640, align 8
  %642 = lshr i32 %641, 10
  %643 = and i32 %642, 1
  %644 = icmp ne i32 %643, 0
  br i1 %644, label %708, label %645

645:                                              ; preds = %638
  %646 = load ptr, ptr %7, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.facetT, ptr %646, i32 0, i32 15
  %648 = load i32, ptr %647, align 8
  %649 = lshr i32 %648, 10
  %650 = and i32 %649, 1
  %651 = icmp ne i32 %650, 0
  br i1 %651, label %708, label %652

652:                                              ; preds = %645
  %653 = load ptr, ptr %10, align 8, !tbaa !5
  %654 = getelementptr inbounds %struct.ridgeT, ptr %653, i32 0, i32 4
  %655 = load i8, ptr %654, align 4
  %656 = lshr i8 %655, 1
  %657 = and i8 %656, 1
  %658 = zext i8 %657 to i32
  %659 = icmp ne i32 %658, 0
  %660 = xor i1 %659, true
  %661 = zext i1 %660 to i32
  %662 = load ptr, ptr %10, align 8, !tbaa !5
  %663 = getelementptr inbounds %struct.ridgeT, ptr %662, i32 0, i32 4
  %664 = load i8, ptr %663, align 4
  %665 = lshr i8 %664, 2
  %666 = and i8 %665, 1
  %667 = zext i8 %666 to i32
  %668 = or i32 %661, %667
  %669 = load ptr, ptr %10, align 8, !tbaa !5
  %670 = getelementptr inbounds %struct.ridgeT, ptr %669, i32 0, i32 4
  %671 = load i8, ptr %670, align 4
  %672 = lshr i8 %671, 3
  %673 = and i8 %672, 1
  %674 = zext i8 %673 to i32
  %675 = or i32 %668, %674
  %676 = icmp ne i32 %675, 0
  br i1 %676, label %677, label %707

677:                                              ; preds = %652
  %678 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %679 = load ptr, ptr %10, align 8, !tbaa !5
  %680 = getelementptr inbounds %struct.ridgeT, ptr %679, i32 0, i32 3
  %681 = load i32, ptr %680, align 8, !tbaa !40
  %682 = load ptr, ptr %10, align 8, !tbaa !5
  %683 = getelementptr inbounds %struct.ridgeT, ptr %682, i32 0, i32 4
  %684 = load i8, ptr %683, align 4
  %685 = lshr i8 %684, 2
  %686 = and i8 %685, 1
  %687 = zext i8 %686 to i32
  %688 = load ptr, ptr %10, align 8, !tbaa !5
  %689 = getelementptr inbounds %struct.ridgeT, ptr %688, i32 0, i32 4
  %690 = load i8, ptr %689, align 4
  %691 = lshr i8 %690, 3
  %692 = and i8 %691, 1
  %693 = zext i8 %692 to i32
  %694 = load ptr, ptr %10, align 8, !tbaa !5
  %695 = getelementptr inbounds %struct.ridgeT, ptr %694, i32 0, i32 4
  %696 = load i8, ptr %695, align 4
  %697 = lshr i8 %696, 1
  %698 = and i8 %697, 1
  %699 = zext i8 %698 to i32
  %700 = load ptr, ptr %4, align 8, !tbaa !5
  %701 = getelementptr inbounds %struct.facetT, ptr %700, i32 0, i32 14
  %702 = load i32, ptr %701, align 4, !tbaa !17
  %703 = load ptr, ptr %7, align 8, !tbaa !5
  %704 = getelementptr inbounds %struct.facetT, ptr %703, i32 0, i32 14
  %705 = load i32, ptr %704, align 4, !tbaa !17
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %678, i32 noundef 6384, ptr noundef @.str.79, i32 noundef %681, i32 noundef %687, i32 noundef %693, i32 noundef %699, i32 noundef %702, i32 noundef %705)
  %706 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %706, ptr %12, align 8, !tbaa !5
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %707

707:                                              ; preds = %677, %652
  br label %708

708:                                              ; preds = %707, %645, %638
  br label %550, !llvm.loop !44

709:                                              ; preds = %550
  br label %710

710:                                              ; preds = %709, %539
  %711 = load ptr, ptr %4, align 8, !tbaa !5
  %712 = getelementptr inbounds %struct.facetT, ptr %711, i32 0, i32 15
  %713 = load i32, ptr %712, align 8
  %714 = lshr i32 %713, 13
  %715 = and i32 %714, 1
  %716 = icmp ne i32 %715, 0
  br i1 %716, label %954, label %717

717:                                              ; preds = %710
  store ptr null, ptr %7, align 8, !tbaa !5
  %718 = load ptr, ptr %4, align 8, !tbaa !5
  %719 = getelementptr inbounds %struct.facetT, ptr %718, i32 0, i32 10
  %720 = load ptr, ptr %719, align 8, !tbaa !30
  %721 = icmp ne ptr %720, null
  br i1 %721, label %722, label %953

722:                                              ; preds = %717
  %723 = load ptr, ptr %4, align 8, !tbaa !5
  %724 = getelementptr inbounds %struct.facetT, ptr %723, i32 0, i32 10
  %725 = load ptr, ptr %724, align 8, !tbaa !30
  %726 = getelementptr inbounds %struct.setT, ptr %725, i32 0, i32 1
  %727 = getelementptr inbounds [1 x %union.setelemT], ptr %726, i64 0, i64 0
  store ptr %727, ptr %8, align 8, !tbaa !5
  br label %728

728:                                              ; preds = %951, %722
  %729 = load ptr, ptr %8, align 8, !tbaa !5
  %730 = getelementptr inbounds ptr, ptr %729, i32 1
  store ptr %730, ptr %8, align 8, !tbaa !5
  %731 = load ptr, ptr %729, align 8, !tbaa !5
  store ptr %731, ptr %7, align 8, !tbaa !5
  %732 = icmp ne ptr %731, null
  br i1 %732, label %733, label %952

733:                                              ; preds = %728
  %734 = load ptr, ptr %7, align 8, !tbaa !5
  %735 = getelementptr inbounds %struct.facetT, ptr %734, i32 0, i32 15
  %736 = load i32, ptr %735, align 8
  %737 = lshr i32 %736, 14
  %738 = and i32 %737, 1
  %739 = icmp ne i32 %738, 0
  br i1 %739, label %749, label %740

740:                                              ; preds = %733
  %741 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %742 = load ptr, ptr %4, align 8, !tbaa !5
  %743 = getelementptr inbounds %struct.facetT, ptr %742, i32 0, i32 14
  %744 = load i32, ptr %743, align 4, !tbaa !17
  %745 = load ptr, ptr %7, align 8, !tbaa !5
  %746 = getelementptr inbounds %struct.facetT, ptr %745, i32 0, i32 14
  %747 = load i32, ptr %746, align 4, !tbaa !17
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %741, i32 noundef 6132, ptr noundef @.str.80, i32 noundef %744, i32 noundef %747)
  %748 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %748, ptr %9, align 8, !tbaa !5
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %749

749:                                              ; preds = %740, %733
  %750 = load ptr, ptr %4, align 8, !tbaa !5
  %751 = getelementptr inbounds %struct.facetT, ptr %750, i32 0, i32 8
  %752 = load ptr, ptr %751, align 8, !tbaa !26
  %753 = load ptr, ptr %7, align 8, !tbaa !5
  %754 = getelementptr inbounds %struct.facetT, ptr %753, i32 0, i32 8
  %755 = load ptr, ptr %754, align 8, !tbaa !26
  %756 = call ptr @qh_vertexintersect_new(ptr noundef %752, ptr noundef %755)
  store ptr %756, ptr %28, align 8, !tbaa !5
  %757 = load ptr, ptr %28, align 8, !tbaa !5
  call void @qh_settemppush(ptr noundef %757)
  store ptr null, ptr %14, align 8, !tbaa !5
  %758 = load ptr, ptr %4, align 8, !tbaa !5
  %759 = getelementptr inbounds %struct.facetT, ptr %758, i32 0, i32 8
  %760 = load ptr, ptr %759, align 8, !tbaa !26
  %761 = icmp ne ptr %760, null
  br i1 %761, label %762, label %785

762:                                              ; preds = %749
  %763 = load ptr, ptr %4, align 8, !tbaa !5
  %764 = getelementptr inbounds %struct.facetT, ptr %763, i32 0, i32 8
  %765 = load ptr, ptr %764, align 8, !tbaa !26
  %766 = getelementptr inbounds %struct.setT, ptr %765, i32 0, i32 1
  %767 = getelementptr inbounds [1 x %union.setelemT], ptr %766, i64 0, i64 0
  store ptr %767, ptr %15, align 8, !tbaa !5
  br label %768

768:                                              ; preds = %773, %762
  %769 = load ptr, ptr %15, align 8, !tbaa !5
  %770 = getelementptr inbounds ptr, ptr %769, i32 1
  store ptr %770, ptr %15, align 8, !tbaa !5
  %771 = load ptr, ptr %769, align 8, !tbaa !5
  store ptr %771, ptr %14, align 8, !tbaa !5
  %772 = icmp ne ptr %771, null
  br i1 %772, label %773, label %784

773:                                              ; preds = %768
  %774 = load ptr, ptr %14, align 8, !tbaa !5
  %775 = getelementptr inbounds %struct.vertexT, ptr %774, i32 0, i32 6
  %776 = load i8, ptr %775, align 8
  %777 = and i8 %776, -2
  %778 = or i8 %777, 0
  store i8 %778, ptr %775, align 8
  %779 = load ptr, ptr %14, align 8, !tbaa !5
  %780 = getelementptr inbounds %struct.vertexT, ptr %779, i32 0, i32 6
  %781 = load i8, ptr %780, align 8
  %782 = and i8 %781, -3
  %783 = or i8 %782, 0
  store i8 %783, ptr %780, align 8
  br label %768, !llvm.loop !45

784:                                              ; preds = %768
  br label %785

785:                                              ; preds = %784, %749
  store ptr null, ptr %14, align 8, !tbaa !5
  %786 = load ptr, ptr %28, align 8, !tbaa !5
  %787 = icmp ne ptr %786, null
  br i1 %787, label %788, label %804

788:                                              ; preds = %785
  %789 = load ptr, ptr %28, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.setT, ptr %789, i32 0, i32 1
  %791 = getelementptr inbounds [1 x %union.setelemT], ptr %790, i64 0, i64 0
  store ptr %791, ptr %15, align 8, !tbaa !5
  br label %792

792:                                              ; preds = %797, %788
  %793 = load ptr, ptr %15, align 8, !tbaa !5
  %794 = getelementptr inbounds ptr, ptr %793, i32 1
  store ptr %794, ptr %15, align 8, !tbaa !5
  %795 = load ptr, ptr %793, align 8, !tbaa !5
  store ptr %795, ptr %14, align 8, !tbaa !5
  %796 = icmp ne ptr %795, null
  br i1 %796, label %797, label %803

797:                                              ; preds = %792
  %798 = load ptr, ptr %14, align 8, !tbaa !5
  %799 = getelementptr inbounds %struct.vertexT, ptr %798, i32 0, i32 6
  %800 = load i8, ptr %799, align 8
  %801 = and i8 %800, -2
  %802 = or i8 %801, 1
  store i8 %802, ptr %799, align 8
  br label %792, !llvm.loop !46

803:                                              ; preds = %792
  br label %804

804:                                              ; preds = %803, %785
  store ptr null, ptr %10, align 8, !tbaa !5
  %805 = load ptr, ptr %4, align 8, !tbaa !5
  %806 = getelementptr inbounds %struct.facetT, ptr %805, i32 0, i32 9
  %807 = load ptr, ptr %806, align 8, !tbaa !27
  %808 = icmp ne ptr %807, null
  br i1 %808, label %809, label %887

809:                                              ; preds = %804
  %810 = load ptr, ptr %4, align 8, !tbaa !5
  %811 = getelementptr inbounds %struct.facetT, ptr %810, i32 0, i32 9
  %812 = load ptr, ptr %811, align 8, !tbaa !27
  %813 = getelementptr inbounds %struct.setT, ptr %812, i32 0, i32 1
  %814 = getelementptr inbounds [1 x %union.setelemT], ptr %813, i64 0, i64 0
  store ptr %814, ptr %11, align 8, !tbaa !5
  br label %815

815:                                              ; preds = %885, %838, %809
  %816 = load ptr, ptr %11, align 8, !tbaa !5
  %817 = getelementptr inbounds ptr, ptr %816, i32 1
  store ptr %817, ptr %11, align 8, !tbaa !5
  %818 = load ptr, ptr %816, align 8, !tbaa !5
  store ptr %818, ptr %10, align 8, !tbaa !5
  %819 = icmp ne ptr %818, null
  br i1 %819, label %820, label %886

820:                                              ; preds = %815
  %821 = load ptr, ptr %7, align 8, !tbaa !5
  %822 = load ptr, ptr %10, align 8, !tbaa !5
  %823 = getelementptr inbounds %struct.ridgeT, ptr %822, i32 0, i32 1
  %824 = load ptr, ptr %823, align 8, !tbaa !42
  %825 = load ptr, ptr %4, align 8, !tbaa !5
  %826 = icmp eq ptr %824, %825
  br i1 %826, label %827, label %831

827:                                              ; preds = %820
  %828 = load ptr, ptr %10, align 8, !tbaa !5
  %829 = getelementptr inbounds %struct.ridgeT, ptr %828, i32 0, i32 2
  %830 = load ptr, ptr %829, align 8, !tbaa !43
  br label %835

831:                                              ; preds = %820
  %832 = load ptr, ptr %10, align 8, !tbaa !5
  %833 = getelementptr inbounds %struct.ridgeT, ptr %832, i32 0, i32 1
  %834 = load ptr, ptr %833, align 8, !tbaa !42
  br label %835

835:                                              ; preds = %831, %827
  %836 = phi ptr [ %830, %827 ], [ %834, %831 ]
  %837 = icmp ne ptr %821, %836
  br i1 %837, label %838, label %839

838:                                              ; preds = %835
  br label %815, !llvm.loop !47

839:                                              ; preds = %835
  store ptr null, ptr %14, align 8, !tbaa !5
  %840 = load ptr, ptr %10, align 8, !tbaa !5
  %841 = getelementptr inbounds %struct.ridgeT, ptr %840, i32 0, i32 0
  %842 = load ptr, ptr %841, align 8, !tbaa !38
  %843 = icmp ne ptr %842, null
  br i1 %843, label %844, label %885

844:                                              ; preds = %839
  %845 = load ptr, ptr %10, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.ridgeT, ptr %845, i32 0, i32 0
  %847 = load ptr, ptr %846, align 8, !tbaa !38
  %848 = getelementptr inbounds %struct.setT, ptr %847, i32 0, i32 1
  %849 = getelementptr inbounds [1 x %union.setelemT], ptr %848, i64 0, i64 0
  store ptr %849, ptr %15, align 8, !tbaa !5
  br label %850

850:                                              ; preds = %878, %844
  %851 = load ptr, ptr %15, align 8, !tbaa !5
  %852 = getelementptr inbounds ptr, ptr %851, i32 1
  store ptr %852, ptr %15, align 8, !tbaa !5
  %853 = load ptr, ptr %851, align 8, !tbaa !5
  store ptr %853, ptr %14, align 8, !tbaa !5
  %854 = icmp ne ptr %853, null
  br i1 %854, label %855, label %884

855:                                              ; preds = %850
  %856 = load ptr, ptr %14, align 8, !tbaa !5
  %857 = getelementptr inbounds %struct.vertexT, ptr %856, i32 0, i32 6
  %858 = load i8, ptr %857, align 8
  %859 = and i8 %858, 1
  %860 = zext i8 %859 to i32
  %861 = icmp ne i32 %860, 0
  br i1 %861, label %878, label %862

862:                                              ; preds = %855
  %863 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %864 = load ptr, ptr %14, align 8, !tbaa !5
  %865 = getelementptr inbounds %struct.vertexT, ptr %864, i32 0, i32 4
  %866 = load i32, ptr %865, align 8, !tbaa !31
  %867 = load ptr, ptr %10, align 8, !tbaa !5
  %868 = getelementptr inbounds %struct.ridgeT, ptr %867, i32 0, i32 3
  %869 = load i32, ptr %868, align 8, !tbaa !40
  %870 = load ptr, ptr %4, align 8, !tbaa !5
  %871 = getelementptr inbounds %struct.facetT, ptr %870, i32 0, i32 14
  %872 = load i32, ptr %871, align 4, !tbaa !17
  %873 = load ptr, ptr %7, align 8, !tbaa !5
  %874 = getelementptr inbounds %struct.facetT, ptr %873, i32 0, i32 14
  %875 = load i32, ptr %874, align 4, !tbaa !17
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %863, i32 noundef 6133, ptr noundef @.str.81, i32 noundef %866, i32 noundef %869, i32 noundef %872, i32 noundef %875)
  %876 = load ptr, ptr %4, align 8, !tbaa !5
  %877 = load ptr, ptr %10, align 8, !tbaa !5
  call void @qh_errexit(i32 noundef 5, ptr noundef %876, ptr noundef %877)
  br label %878

878:                                              ; preds = %862, %855
  %879 = load ptr, ptr %14, align 8, !tbaa !5
  %880 = getelementptr inbounds %struct.vertexT, ptr %879, i32 0, i32 6
  %881 = load i8, ptr %880, align 8
  %882 = and i8 %881, -3
  %883 = or i8 %882, 2
  store i8 %883, ptr %880, align 8
  br label %850, !llvm.loop !48

884:                                              ; preds = %850
  br label %885

885:                                              ; preds = %884, %839
  br label %815, !llvm.loop !47

886:                                              ; preds = %815
  br label %887

887:                                              ; preds = %886, %804
  %888 = load i32, ptr %5, align 4, !tbaa !9
  %889 = icmp ne i32 %888, 0
  br i1 %889, label %951, label %890

890:                                              ; preds = %887
  store ptr null, ptr %14, align 8, !tbaa !5
  %891 = load ptr, ptr %28, align 8, !tbaa !5
  %892 = icmp ne ptr %891, null
  br i1 %892, label %893, label %950

893:                                              ; preds = %890
  %894 = load ptr, ptr %28, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.setT, ptr %894, i32 0, i32 1
  %896 = getelementptr inbounds [1 x %union.setelemT], ptr %895, i64 0, i64 0
  store ptr %896, ptr %15, align 8, !tbaa !5
  br label %897

897:                                              ; preds = %948, %893
  %898 = load ptr, ptr %15, align 8, !tbaa !5
  %899 = getelementptr inbounds ptr, ptr %898, i32 1
  store ptr %899, ptr %15, align 8, !tbaa !5
  %900 = load ptr, ptr %898, align 8, !tbaa !5
  store ptr %900, ptr %14, align 8, !tbaa !5
  %901 = icmp ne ptr %900, null
  br i1 %901, label %902, label %949

902:                                              ; preds = %897
  %903 = load ptr, ptr %14, align 8, !tbaa !5
  %904 = getelementptr inbounds %struct.vertexT, ptr %903, i32 0, i32 6
  %905 = load i8, ptr %904, align 8
  %906 = lshr i8 %905, 1
  %907 = and i8 %906, 1
  %908 = zext i8 %907 to i32
  %909 = icmp ne i32 %908, 0
  br i1 %909, label %948, label %910

910:                                              ; preds = %902
  %911 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 39), align 4, !tbaa !49
  %912 = icmp ne i32 %911, 0
  br i1 %912, label %932, label %913

913:                                              ; preds = %910
  %914 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %915 = load ptr, ptr %14, align 8, !tbaa !5
  %916 = getelementptr inbounds %struct.vertexT, ptr %915, i32 0, i32 4
  %917 = load i32, ptr %916, align 8, !tbaa !31
  %918 = load ptr, ptr %4, align 8, !tbaa !5
  %919 = getelementptr inbounds %struct.facetT, ptr %918, i32 0, i32 14
  %920 = load i32, ptr %919, align 4, !tbaa !17
  %921 = load ptr, ptr %7, align 8, !tbaa !5
  %922 = getelementptr inbounds %struct.facetT, ptr %921, i32 0, i32 14
  %923 = load i32, ptr %922, align 4, !tbaa !17
  %924 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 190), align 4, !tbaa !50
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %914, i32 noundef 6420, ptr noundef @.str.82, i32 noundef %917, i32 noundef %920, i32 noundef %923, i32 noundef %924)
  %925 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 21), align 8, !tbaa !51
  %926 = icmp ne i32 %925, 0
  br i1 %926, label %931, label %927

927:                                              ; preds = %913
  %928 = load ptr, ptr %4, align 8, !tbaa !5
  %929 = load ptr, ptr %7, align 8, !tbaa !5
  %930 = load ptr, ptr %14, align 8, !tbaa !5
  call void @qh_errprint(ptr noundef @.str.66, ptr noundef %928, ptr noundef %929, ptr noundef null, ptr noundef %930)
  call void @qh_errexit(i32 noundef 7, ptr noundef null, ptr noundef null)
  br label %931

931:                                              ; preds = %927, %913
  br label %947

932:                                              ; preds = %910
  %933 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 29), align 8, !tbaa !15
  %934 = icmp sge i32 %933, 4
  br i1 %934, label %935, label %946

935:                                              ; preds = %932
  %936 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %937 = load ptr, ptr %14, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.vertexT, ptr %937, i32 0, i32 4
  %939 = load i32, ptr %938, align 8, !tbaa !31
  %940 = load ptr, ptr %4, align 8, !tbaa !5
  %941 = getelementptr inbounds %struct.facetT, ptr %940, i32 0, i32 14
  %942 = load i32, ptr %941, align 4, !tbaa !17
  %943 = load ptr, ptr %7, align 8, !tbaa !5
  %944 = getelementptr inbounds %struct.facetT, ptr %943, i32 0, i32 14
  %945 = load i32, ptr %944, align 4, !tbaa !17
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %936, i32 noundef 4025, ptr noundef @.str.83, i32 noundef %939, i32 noundef %942, i32 noundef %945)
  br label %946

946:                                              ; preds = %935, %932
  br label %947

947:                                              ; preds = %946, %931
  br label %948

948:                                              ; preds = %947, %902
  br label %897, !llvm.loop !52

949:                                              ; preds = %897
  br label %950

950:                                              ; preds = %949, %890
  br label %951

951:                                              ; preds = %950, %887
  call void @qh_settempfree(ptr noundef %28)
  br label %728, !llvm.loop !53

952:                                              ; preds = %728
  br label %953

953:                                              ; preds = %952, %717
  br label %1039

954:                                              ; preds = %710
  store ptr null, ptr %7, align 8, !tbaa !5
  %955 = load ptr, ptr %4, align 8, !tbaa !5
  %956 = getelementptr inbounds %struct.facetT, ptr %955, i32 0, i32 10
  %957 = load ptr, ptr %956, align 8, !tbaa !30
  %958 = icmp ne ptr %957, null
  br i1 %958, label %959, label %1038

959:                                              ; preds = %954
  %960 = load ptr, ptr %4, align 8, !tbaa !5
  %961 = getelementptr inbounds %struct.facetT, ptr %960, i32 0, i32 10
  %962 = load ptr, ptr %961, align 8, !tbaa !30
  %963 = getelementptr inbounds %struct.setT, ptr %962, i32 0, i32 1
  %964 = getelementptr inbounds [1 x %union.setelemT], ptr %963, i64 0, i64 0
  store ptr %964, ptr %8, align 8, !tbaa !5
  br label %965

965:                                              ; preds = %1036, %959
  %966 = load ptr, ptr %8, align 8, !tbaa !5
  %967 = getelementptr inbounds ptr, ptr %966, i32 1
  store ptr %967, ptr %8, align 8, !tbaa !5
  %968 = load ptr, ptr %966, align 8, !tbaa !5
  store ptr %968, ptr %7, align 8, !tbaa !5
  %969 = icmp ne ptr %968, null
  br i1 %969, label %970, label %1037

970:                                              ; preds = %965
  %971 = load ptr, ptr %7, align 8, !tbaa !5
  %972 = getelementptr inbounds %struct.facetT, ptr %971, i32 0, i32 15
  %973 = load i32, ptr %972, align 8
  %974 = lshr i32 %973, 13
  %975 = and i32 %974, 1
  %976 = icmp ne i32 %975, 0
  br i1 %976, label %977, label %1036

977:                                              ; preds = %970
  %978 = load ptr, ptr %4, align 8, !tbaa !5
  %979 = getelementptr inbounds %struct.facetT, ptr %978, i32 0, i32 15
  %980 = load i32, ptr %979, align 8
  %981 = lshr i32 %980, 30
  %982 = and i32 %981, 1
  %983 = icmp ne i32 %982, 0
  br i1 %983, label %1036, label %984

984:                                              ; preds = %977
  %985 = load ptr, ptr %7, align 8, !tbaa !5
  %986 = getelementptr inbounds %struct.facetT, ptr %985, i32 0, i32 15
  %987 = load i32, ptr %986, align 8
  %988 = lshr i32 %987, 30
  %989 = and i32 %988, 1
  %990 = icmp ne i32 %989, 0
  br i1 %990, label %1036, label %991

991:                                              ; preds = %984
  %992 = load ptr, ptr %8, align 8, !tbaa !5
  %993 = load ptr, ptr %4, align 8, !tbaa !5
  %994 = getelementptr inbounds %struct.facetT, ptr %993, i32 0, i32 10
  %995 = load ptr, ptr %994, align 8, !tbaa !30
  %996 = getelementptr inbounds %struct.setT, ptr %995, i32 0, i32 1
  %997 = getelementptr inbounds [1 x %union.setelemT], ptr %996, i64 0, i64 1
  %998 = ptrtoint ptr %992 to i64
  %999 = ptrtoint ptr %997 to i64
  %1000 = sub i64 %998, %999
  %1001 = sdiv exact i64 %1000, 8
  %1002 = trunc i64 %1001 to i32
  store i32 %1002, ptr %22, align 4, !tbaa !9
  %1003 = load ptr, ptr %7, align 8, !tbaa !5
  %1004 = getelementptr inbounds %struct.facetT, ptr %1003, i32 0, i32 10
  %1005 = load ptr, ptr %1004, align 8, !tbaa !30
  %1006 = load ptr, ptr %4, align 8, !tbaa !5
  %1007 = call i32 @qh_setindex(ptr noundef %1005, ptr noundef %1006)
  store i32 %1007, ptr %23, align 4, !tbaa !9
  %1008 = load i32, ptr %22, align 4, !tbaa !9
  %1009 = icmp slt i32 %1008, 0
  br i1 %1009, label %1024, label %1010

1010:                                             ; preds = %991
  %1011 = load i32, ptr %23, align 4, !tbaa !9
  %1012 = icmp slt i32 %1011, 0
  br i1 %1012, label %1024, label %1013

1013:                                             ; preds = %1010
  %1014 = load ptr, ptr %4, align 8, !tbaa !5
  %1015 = getelementptr inbounds %struct.facetT, ptr %1014, i32 0, i32 8
  %1016 = load ptr, ptr %1015, align 8, !tbaa !26
  %1017 = load i32, ptr %22, align 4, !tbaa !9
  %1018 = load ptr, ptr %7, align 8, !tbaa !5
  %1019 = getelementptr inbounds %struct.facetT, ptr %1018, i32 0, i32 8
  %1020 = load ptr, ptr %1019, align 8, !tbaa !26
  %1021 = load i32, ptr %23, align 4, !tbaa !9
  %1022 = call i32 @qh_setequal_skip(ptr noundef %1016, i32 noundef %1017, ptr noundef %1020, i32 noundef %1021)
  %1023 = icmp ne i32 %1022, 0
  br i1 %1023, label %1035, label %1024

1024:                                             ; preds = %1013, %1010, %991
  %1025 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %1026 = load ptr, ptr %4, align 8, !tbaa !5
  %1027 = getelementptr inbounds %struct.facetT, ptr %1026, i32 0, i32 14
  %1028 = load i32, ptr %1027, align 4, !tbaa !17
  %1029 = load i32, ptr %22, align 4, !tbaa !9
  %1030 = load ptr, ptr %7, align 8, !tbaa !5
  %1031 = getelementptr inbounds %struct.facetT, ptr %1030, i32 0, i32 14
  %1032 = load i32, ptr %1031, align 4, !tbaa !17
  %1033 = load i32, ptr %23, align 4, !tbaa !9
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %1025, i32 noundef 6135, ptr noundef @.str.84, i32 noundef %1028, i32 noundef %1029, i32 noundef %1032, i32 noundef %1033)
  %1034 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %1034, ptr %9, align 8, !tbaa !5
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %1035

1035:                                             ; preds = %1024, %1013
  br label %1036

1036:                                             ; preds = %1035, %984, %977, %970
  br label %965, !llvm.loop !54

1037:                                             ; preds = %965
  br label %1038

1038:                                             ; preds = %1037, %954
  br label %1039

1039:                                             ; preds = %1038, %953
  %1040 = load i32, ptr %5, align 4, !tbaa !9
  %1041 = icmp ne i32 %1040, 0
  br i1 %1041, label %1170, label %1042

1042:                                             ; preds = %1039
  %1043 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 13), align 8, !tbaa !55
  %1044 = icmp ne i32 %1043, 0
  br i1 %1044, label %1045, label %1170

1045:                                             ; preds = %1042
  %1046 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 110), align 8, !tbaa !11
  %1047 = icmp slt i32 %1046, 5
  br i1 %1047, label %1048, label %1170

1048:                                             ; preds = %1045
  %1049 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 29), align 8, !tbaa !15
  %1050 = icmp sgt i32 %1049, 2
  br i1 %1050, label %1054, label %1051

1051:                                             ; preds = %1048
  %1052 = load i32, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 14), align 4, !tbaa !56
  %1053 = icmp ne i32 %1052, 0
  br i1 %1053, label %1054, label %1170

1054:                                             ; preds = %1051, %1048
  store ptr null, ptr %10, align 8, !tbaa !5
  %1055 = load ptr, ptr %4, align 8, !tbaa !5
  %1056 = getelementptr inbounds %struct.facetT, ptr %1055, i32 0, i32 9
  %1057 = load ptr, ptr %1056, align 8, !tbaa !27
  %1058 = icmp ne ptr %1057, null
  br i1 %1058, label %1059, label %1169

1059:                                             ; preds = %1054
  store i32 0, ptr %24, align 4, !tbaa !9
  %1060 = load ptr, ptr %4, align 8, !tbaa !5
  %1061 = getelementptr inbounds %struct.facetT, ptr %1060, i32 0, i32 9
  %1062 = load ptr, ptr %1061, align 8, !tbaa !27
  %1063 = getelementptr inbounds %struct.setT, ptr %1062, i32 0, i32 1
  %1064 = getelementptr inbounds [1 x %union.setelemT], ptr %1063, i64 0, i64 0
  %1065 = load ptr, ptr %1064, align 8, !tbaa !57
  store ptr %1065, ptr %10, align 8, !tbaa !5
  %1066 = load ptr, ptr %4, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.facetT, ptr %1066, i32 0, i32 9
  %1068 = load ptr, ptr %1067, align 8, !tbaa !27
  %1069 = call i32 @qh_setsize(ptr noundef %1068)
  store i32 %1069, ptr %25, align 4, !tbaa !9
  br label %1070

1070:                                             ; preds = %1158, %1059
  %1071 = load i32, ptr %24, align 4, !tbaa !9
  %1072 = load i32, ptr %25, align 4, !tbaa !9
  %1073 = icmp slt i32 %1071, %1072
  br i1 %1073, label %1074, label %1168

1074:                                             ; preds = %1070
  %1075 = load ptr, ptr %10, align 8, !tbaa !5
  %1076 = getelementptr inbounds %struct.ridgeT, ptr %1075, i32 0, i32 4
  %1077 = load i8, ptr %1076, align 4
  %1078 = lshr i8 %1077, 3
  %1079 = and i8 %1078, 1
  %1080 = zext i8 %1079 to i32
  %1081 = icmp ne i32 %1080, 0
  br i1 %1081, label %1157, label %1082

1082:                                             ; preds = %1074
  %1083 = load i32, ptr %24, align 4, !tbaa !9
  %1084 = add nsw i32 %1083, 1
  store i32 %1084, ptr %26, align 4, !tbaa !9
  br label %1085

1085:                                             ; preds = %1153, %1082
  %1086 = load i32, ptr %26, align 4, !tbaa !9
  %1087 = load i32, ptr %25, align 4, !tbaa !9
  %1088 = icmp slt i32 %1086, %1087
  br i1 %1088, label %1089, label %1156

1089:                                             ; preds = %1085
  %1090 = load ptr, ptr %4, align 8, !tbaa !5
  %1091 = getelementptr inbounds %struct.facetT, ptr %1090, i32 0, i32 9
  %1092 = load ptr, ptr %1091, align 8, !tbaa !27
  %1093 = getelementptr inbounds %struct.setT, ptr %1092, i32 0, i32 1
  %1094 = load i32, ptr %26, align 4, !tbaa !9
  %1095 = sext i32 %1094 to i64
  %1096 = getelementptr inbounds [1 x %union.setelemT], ptr %1093, i64 0, i64 %1095
  %1097 = load ptr, ptr %1096, align 8, !tbaa !57
  store ptr %1097, ptr %13, align 8, !tbaa !5
  %1098 = load ptr, ptr %10, align 8, !tbaa !5
  %1099 = getelementptr inbounds %struct.ridgeT, ptr %1098, i32 0, i32 0
  %1100 = load ptr, ptr %1099, align 8, !tbaa !38
  %1101 = getelementptr inbounds %struct.setT, ptr %1100, i32 0, i32 1
  %1102 = load i32, ptr %27, align 4, !tbaa !9
  %1103 = sext i32 %1102 to i64
  %1104 = getelementptr inbounds [1 x %union.setelemT], ptr %1101, i64 0, i64 %1103
  %1105 = load ptr, ptr %1104, align 8, !tbaa !57
  %1106 = load ptr, ptr %13, align 8, !tbaa !5
  %1107 = getelementptr inbounds %struct.ridgeT, ptr %1106, i32 0, i32 0
  %1108 = load ptr, ptr %1107, align 8, !tbaa !38
  %1109 = getelementptr inbounds %struct.setT, ptr %1108, i32 0, i32 1
  %1110 = load i32, ptr %27, align 4, !tbaa !9
  %1111 = sext i32 %1110 to i64
  %1112 = getelementptr inbounds [1 x %union.setelemT], ptr %1109, i64 0, i64 %1111
  %1113 = load ptr, ptr %1112, align 8, !tbaa !57
  %1114 = icmp eq ptr %1105, %1113
  br i1 %1114, label %1115, label %1152

1115:                                             ; preds = %1089
  %1116 = load ptr, ptr %10, align 8, !tbaa !5
  %1117 = getelementptr inbounds %struct.ridgeT, ptr %1116, i32 0, i32 0
  %1118 = load ptr, ptr %1117, align 8, !tbaa !38
  %1119 = getelementptr inbounds %struct.setT, ptr %1118, i32 0, i32 1
  %1120 = getelementptr inbounds [1 x %union.setelemT], ptr %1119, i64 0, i64 0
  %1121 = load ptr, ptr %1120, align 8, !tbaa !57
  %1122 = load ptr, ptr %13, align 8, !tbaa !5
  %1123 = getelementptr inbounds %struct.ridgeT, ptr %1122, i32 0, i32 0
  %1124 = load ptr, ptr %1123, align 8, !tbaa !38
  %1125 = getelementptr inbounds %struct.setT, ptr %1124, i32 0, i32 1
  %1126 = getelementptr inbounds [1 x %union.setelemT], ptr %1125, i64 0, i64 0
  %1127 = load ptr, ptr %1126, align 8, !tbaa !57
  %1128 = icmp eq ptr %1121, %1127
  br i1 %1128, label %1129, label %1151

1129:                                             ; preds = %1115
  %1130 = load ptr, ptr %10, align 8, !tbaa !5
  %1131 = getelementptr inbounds %struct.ridgeT, ptr %1130, i32 0, i32 0
  %1132 = load ptr, ptr %1131, align 8, !tbaa !38
  %1133 = load ptr, ptr %13, align 8, !tbaa !5
  %1134 = getelementptr inbounds %struct.ridgeT, ptr %1133, i32 0, i32 0
  %1135 = load ptr, ptr %1134, align 8, !tbaa !38
  %1136 = call i32 @qh_setequal(ptr noundef %1132, ptr noundef %1135)
  %1137 = icmp ne i32 %1136, 0
  br i1 %1137, label %1138, label %1150

1138:                                             ; preds = %1129
  %1139 = load ptr, ptr getelementptr inbounds (%struct.qhT, ptr @qh_qh, i32 0, i32 158), align 8, !tbaa !16
  %1140 = load ptr, ptr %10, align 8, !tbaa !5
  %1141 = getelementptr inbounds %struct.ridgeT, ptr %1140, i32 0, i32 3
  %1142 = load i32, ptr %1141, align 8, !tbaa !40
  %1143 = load ptr, ptr %13, align 8, !tbaa !5
  %1144 = getelementptr inbounds %struct.ridgeT, ptr %1143, i32 0, i32 3
  %1145 = load i32, ptr %1144, align 8, !tbaa !40
  %1146 = load ptr, ptr %4, align 8, !tbaa !5
  %1147 = getelementptr inbounds %struct.facetT, ptr %1146, i32 0, i32 14
  %1148 = load i32, ptr %1147, align 4, !tbaa !17
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %1139, i32 noundef 6294, ptr noundef @.str.85, i32 noundef %1142, i32 noundef %1145, i32 noundef %1148)
  %1149 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1149, ptr %12, align 8, !tbaa !5
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %1150

1150:                                             ; preds = %1138, %1129
  br label %1151

1151:                                             ; preds = %1150, %1115
  br label %1152

1152:                                             ; preds = %1151, %1089
  br label %1153

1153:                                             ; preds = %1152
  %1154 = load i32, ptr %26, align 4, !tbaa !9
  %1155 = add nsw i32 %1154, 1
  store i32 %1155, ptr %26, align 4, !tbaa !9
  br label %1085, !llvm.loop !58

1156:                                             ; preds = %1085
  br label %1157

1157:                                             ; preds = %1156, %1074
  br label %1158

1158:                                             ; preds = %1157
  %1159 = load ptr, ptr %4, align 8, !tbaa !5
  %1160 = getelementptr inbounds %struct.facetT, ptr %1159, i32 0, i32 9
  %1161 = load ptr, ptr %1160, align 8, !tbaa !27
  %1162 = getelementptr inbounds %struct.setT, ptr %1161, i32 0, i32 1
  %1163 = load i32, ptr %24, align 4, !tbaa !9
  %1164 = add nsw i32 %1163, 1
  store i32 %1164, ptr %24, align 4, !tbaa !9
  %1165 = sext i32 %1164 to i64
  %1166 = getelementptr inbounds [1 x %union.setelemT], ptr %1162, i64 0, i64 %1165
  %1167 = load ptr, ptr %1166, align 8, !tbaa !57
  store ptr %1167, ptr %10, align 8, !tbaa !5
  br label %1070, !llvm.loop !59

1168:                                             ; preds = %1070
  br label %1169

1169:                                             ; preds = %1168, %1054
  br label %1170

1170:                                             ; preds = %1169, %1051, %1045, %1042, %1039
  %1171 = load i32, ptr %21, align 4, !tbaa !9
  %1172 = icmp ne i32 %1171, 0
  br i1 %1172, label %1173, label %1178

1173:                                             ; preds = %1170
  %1174 = load ptr, ptr %4, align 8, !tbaa !5
  %1175 = load ptr, ptr %9, align 8, !tbaa !5
  %1176 = load ptr, ptr %12, align 8, !tbaa !5
  call void @qh_errprint(ptr noundef @.str.66, ptr noundef %1174, ptr noundef %1175, ptr noundef %1176, ptr noundef null)
  %1177 = load ptr, ptr %6, align 8, !tbaa !5
  store i32 1, ptr %1177, align 4, !tbaa !9
  br label %1178

1178:                                             ; preds = %1173, %1170
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #3
  ret void
}

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

declare void @qh_errprint(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

declare void @qh_setprint(ptr noundef, ptr noundef, ptr noundef) #1

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

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

declare void @qh_settemppush(ptr noundef) #1

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

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

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

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

!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 632}
!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 136}
!16 = !{!12, !6, i64 2424}
!17 = !{!18, !10, i64 108}
!18 = !{!"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}
!19 = !{!12, !10, i64 2584}
!20 = !{!18, !10, i64 104}
!21 = !{!12, !10, i64 2784}
!22 = !{!12, !10, i64 2708}
!23 = !{!12, !6, i64 2808}
!24 = !{!18, !6, i64 24}
!25 = !{!12, !6, i64 2480}
!26 = !{!18, !6, i64 64}
!27 = !{!18, !6, i64 72}
!28 = !{!18, !6, i64 88}
!29 = !{!18, !6, i64 96}
!30 = !{!18, !6, i64 80}
!31 = !{!32, !10, i64 32}
!32 = !{!"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}
!33 = distinct !{!33, !34}
!34 = !{!"llvm.loop.mustprogress"}
!35 = !{!12, !10, i64 2704}
!36 = distinct !{!36, !34}
!37 = distinct !{!37, !34}
!38 = !{!39, !6, i64 0}
!39 = !{!"ridgeT", !6, i64 0, !6, i64 8, !6, i64 16, !10, i64 24, !10, i64 28, !10, i64 28, !10, i64 28, !10, i64 28, !10, i64 28, !10, i64 28, !10, i64 28}
!40 = !{!39, !10, i64 24}
!41 = distinct !{!41, !34}
!42 = !{!39, !6, i64 8}
!43 = !{!39, !6, i64 16}
!44 = distinct !{!44, !34}
!45 = distinct !{!45, !34}
!46 = distinct !{!46, !34}
!47 = distinct !{!47, !34}
!48 = distinct !{!48, !34}
!49 = !{!12, !10, i64 188}
!50 = !{!12, !10, i64 2620}
!51 = !{!12, !10, i64 96}
!52 = distinct !{!52, !34}
!53 = distinct !{!53, !34}
!54 = distinct !{!54, !34}
!55 = !{!12, !10, i64 56}
!56 = !{!12, !10, i64 60}
!57 = !{!7, !7, i64 0}
!58 = distinct !{!58, !34}
!59 = distinct !{!59, !34}


; 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] }
%union.setelemT = type { ptr }

@qh_qh = external local_unnamed_addr global %struct.qhT, align 8
@.str.4 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [142 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [122 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [132 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [126 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [87 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

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

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

declare void @qh_settempfree(ptr noundef) local_unnamed_addr #1

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

; Function Attrs: nounwind uwtable
define dso_local void @qh_checkfacet(ptr noundef %0, i32 noundef %1, ptr nocapture noundef writeonly %2) local_unnamed_addr #2 {
  %4 = alloca ptr, align 8
  %5 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8, !tbaa !5
  %6 = add nsw i32 %5, -2
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #3
  %7 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 136), align 8, !tbaa !13
  %8 = icmp sgt i32 %7, 3
  br i1 %8, label %9, label %13

9:                                                ; preds = %3
  %10 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %11 = getelementptr inbounds i8, ptr %0, i64 108
  %12 = load i32, ptr %11, align 4, !tbaa !15
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %10, i32 noundef 4088, ptr noundef nonnull @.str.51, i32 noundef %12, i32 noundef %1) #3
  br label %13

13:                                               ; preds = %9, %3
  %14 = getelementptr inbounds i8, ptr %0, i64 108
  %15 = load i32, ptr %14, align 4, !tbaa !15
  %16 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2584), align 8, !tbaa !17
  %.not = icmp ult i32 %15, %16
  br i1 %.not, label %19, label %17

17:                                               ; preds = %13
  %18 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %18, i32 noundef 6414, ptr noundef nonnull @.str.52, i32 noundef %15, i32 noundef %16) #3
  br label %19

19:                                               ; preds = %17, %13
  %.0268 = phi i32 [ 1, %17 ], [ 0, %13 ]
  %20 = getelementptr inbounds i8, ptr %0, i64 104
  %21 = load i32, ptr %20, align 8, !tbaa !18
  %22 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2784), align 8, !tbaa !19
  %23 = icmp ugt i32 %21, %22
  br i1 %23, label %24, label %27

24:                                               ; preds = %19
  %25 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %26 = load i32, ptr %14, align 4, !tbaa !15
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %25, i32 noundef 6415, ptr noundef nonnull @.str.53, i32 noundef %26, i32 noundef %22, i32 noundef %21) #3
  br label %27

27:                                               ; preds = %24, %19
  %.1269 = phi i32 [ 1, %24 ], [ %.0268, %19 ]
  %28 = getelementptr inbounds i8, ptr %0, i64 112
  %29 = load i32, ptr %28, align 8
  %30 = and i32 %29, 2048
  %31 = icmp eq i32 %30, 0
  %32 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2708), align 4
  %33 = icmp ne i32 %32, 0
  %or.cond = select i1 %31, i1 true, i1 %33
  br i1 %or.cond, label %37, label %34

34:                                               ; preds = %27
  %35 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %36 = load i32, ptr %14, align 4, !tbaa !15
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %35, i32 noundef 6119, ptr noundef nonnull @.str.54, i32 noundef %36) #3
  tail call void @qh_errexit(i32 noundef 5, ptr noundef nonnull %0, ptr noundef null) #3
  %.pre = load i32, ptr %28, align 8
  br label %37

37:                                               ; preds = %34, %27
  %38 = phi i32 [ %.pre, %34 ], [ %29, %27 ]
  %39 = and i32 %38, -2147481600
  %or.cond423 = icmp eq i32 %39, -2147483648
  br i1 %or.cond423, label %40, label %47

40:                                               ; preds = %37
  %41 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2808), align 8, !tbaa !20
  %42 = tail call i32 @qh_setsize(ptr noundef %41) #3
  %43 = icmp eq i32 %42, 0
  br i1 %43, label %44, label %47

44:                                               ; preds = %40
  %45 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %46 = load i32, ptr %14, align 4, !tbaa !15
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %45, i32 noundef 6399, ptr noundef nonnull @.str.55, i32 noundef %46) #3
  br label %47

47:                                               ; preds = %44, %40, %37
  %.2270 = phi i32 [ 1, %44 ], [ %.1269, %40 ], [ %.1269, %37 ]
  %48 = load i32, ptr %28, align 8
  %49 = and i32 %48, 1073743872
  %or.cond424 = icmp eq i32 %49, 1073741824
  br i1 %or.cond424, label %50, label %57

50:                                               ; preds = %47
  %51 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2808), align 8, !tbaa !20
  %52 = tail call i32 @qh_setsize(ptr noundef %51) #3
  %53 = icmp eq i32 %52, 0
  br i1 %53, label %54, label %57

54:                                               ; preds = %50
  %55 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %56 = load i32, ptr %14, align 4, !tbaa !15
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %55, i32 noundef 6400, ptr noundef nonnull @.str.56, i32 noundef %56) #3
  br label %57

57:                                               ; preds = %54, %50, %47
  %.3271 = phi i32 [ 1, %54 ], [ %.2270, %50 ], [ %.2270, %47 ]
  %58 = getelementptr inbounds i8, ptr %0, i64 24
  %59 = load ptr, ptr %58, align 8, !tbaa !21
  %.not346 = icmp eq ptr %59, null
  br i1 %.not346, label %60, label %63

60:                                               ; preds = %57
  %61 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %62 = load i32, ptr %14, align 4, !tbaa !15
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %61, i32 noundef 6120, ptr noundef nonnull @.str.57, i32 noundef %62) #3
  br label %63

63:                                               ; preds = %60, %57
  %.4272 = phi i32 [ %.3271, %57 ], [ 1, %60 ]
  %64 = load i32, ptr %28, align 8
  %65 = and i32 %64, 1024
  %.not347 = icmp eq i32 %65, 0
  br i1 %.not347, label %66, label %89

66:                                               ; preds = %63
  %67 = and i32 %64, 2097152
  %.not348 = icmp eq i32 %67, 0
  br i1 %.not348, label %77, label %68

68:                                               ; preds = %66
  %69 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %70 = load i32, ptr %14, align 4, !tbaa !15
  %71 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2480), align 8, !tbaa !22
  %.not349 = icmp eq ptr %71, null
  br i1 %.not349, label %75, label %72

72:                                               ; preds = %68
  %73 = getelementptr inbounds i8, ptr %71, i64 108
  %74 = load i32, ptr %73, align 4, !tbaa !15
  br label %75

75:                                               ; preds = %68, %72
  %76 = phi i32 [ %74, %72 ], [ -1, %68 ]
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %69, i32 noundef 6349, ptr noundef nonnull @.str.58, i32 noundef %70, i32 noundef %76) #3
  %.pre548 = load i32, ptr %28, align 8
  br label %77

77:                                               ; preds = %75, %66
  %78 = phi i32 [ %.pre548, %75 ], [ %64, %66 ]
  %.5273 = phi i32 [ 1, %75 ], [ %.4272, %66 ]
  %79 = and i32 %78, 536870912
  %.not350 = icmp eq i32 %79, 0
  br i1 %.not350, label %89, label %80

80:                                               ; preds = %77
  %81 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %82 = load i32, ptr %14, align 4, !tbaa !15
  %83 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2480), align 8, !tbaa !22
  %.not351 = icmp eq ptr %83, null
  br i1 %.not351, label %87, label %84

84:                                               ; preds = %80
  %85 = getelementptr inbounds i8, ptr %83, i64 108
  %86 = load i32, ptr %85, align 4, !tbaa !15
  br label %87

87:                                               ; preds = %80, %84
  %88 = phi i32 [ %86, %84 ], [ -1, %80 ]
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %81, i32 noundef 6383, ptr noundef nonnull @.str.59, i32 noundef %82, i32 noundef %88) #3
  br label %89

89:                                               ; preds = %77, %87, %63
  %.6274 = phi i32 [ %.4272, %63 ], [ 1, %87 ], [ %.5273, %77 ]
  %90 = getelementptr inbounds i8, ptr %0, i64 64
  %91 = load ptr, ptr %90, align 8, !tbaa !23
  %92 = load i32, ptr %14, align 4, !tbaa !15
  tail call void @qh_setcheck(ptr noundef %91, ptr noundef nonnull @.str.60, i32 noundef %92) #3
  %93 = getelementptr inbounds i8, ptr %0, i64 72
  %94 = load ptr, ptr %93, align 8, !tbaa !24
  %95 = load i32, ptr %14, align 4, !tbaa !15
  tail call void @qh_setcheck(ptr noundef %94, ptr noundef nonnull @.str.61, i32 noundef %95) #3
  %96 = getelementptr inbounds i8, ptr %0, i64 88
  %97 = load ptr, ptr %96, align 8, !tbaa !25
  %98 = load i32, ptr %14, align 4, !tbaa !15
  tail call void @qh_setcheck(ptr noundef %97, ptr noundef nonnull @.str.62, i32 noundef %98) #3
  %99 = getelementptr inbounds i8, ptr %0, i64 96
  %100 = load ptr, ptr %99, align 8, !tbaa !26
  %101 = load i32, ptr %14, align 4, !tbaa !15
  tail call void @qh_setcheck(ptr noundef %100, ptr noundef nonnull @.str.63, i32 noundef %101) #3
  %102 = getelementptr inbounds i8, ptr %0, i64 80
  %103 = load ptr, ptr %102, align 8, !tbaa !27
  %104 = load i32, ptr %14, align 4, !tbaa !15
  tail call void @qh_setcheck(ptr noundef %103, ptr noundef nonnull @.str.64, i32 noundef %104) #3
  %105 = load ptr, ptr %90, align 8, !tbaa !23
  %.not352 = icmp eq ptr %105, null
  br i1 %.not352, label %.loopexit459, label %.preheader458

.preheader458:                                    ; preds = %89, %116
  %.pn = phi ptr [ %.0295, %116 ], [ %105, %89 ]
  %.0294 = phi i32 [ %118, %116 ], [ 2147483647, %89 ]
  %.7275 = phi i32 [ %.8276, %116 ], [ %.6274, %89 ]
  %.0295 = getelementptr inbounds i8, ptr %.pn, i64 8
  %106 = load ptr, ptr %.0295, align 8, !tbaa !28
  %.not353 = icmp eq ptr %106, null
  br i1 %.not353, label %.loopexit459, label %107

107:                                              ; preds = %.preheader458
  %108 = getelementptr inbounds i8, ptr %106, i64 40
  %109 = load i8, ptr %108, align 8
  %110 = and i8 %109, 4
  %.not354 = icmp eq i8 %110, 0
  br i1 %.not354, label %116, label %111

111:                                              ; preds = %107
  %112 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %113 = getelementptr inbounds i8, ptr %106, i64 32
  %114 = load i32, ptr %113, align 8, !tbaa !29
  %115 = load i32, ptr %14, align 4, !tbaa !15
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %112, i32 noundef 6121, ptr noundef nonnull @.str.65, i32 noundef %114, i32 noundef %115) #3
  tail call void @qh_errprint(ptr noundef nonnull @.str.66, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef nonnull %106) #3
  br label %116

116:                                              ; preds = %111, %107
  %.8276 = phi i32 [ 1, %111 ], [ %.7275, %107 ]
  %117 = getelementptr inbounds i8, ptr %106, i64 32
  %118 = load i32, ptr %117, align 8, !tbaa !29
  %.not355 = icmp ult i32 %118, %.0294
  br i1 %.not355, label %.preheader458, label %119, !llvm.loop !31

119:                                              ; preds = %116
  %120 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %121 = load i32, ptr %14, align 4, !tbaa !15
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %120, i32 noundef 6122, ptr noundef nonnull @.str.67, i32 noundef %121, i32 noundef %118) #3
  br label %.loopexit459

.loopexit459:                                     ; preds = %.preheader458, %119, %89
  %.9277 = phi i32 [ 1, %119 ], [ %.6274, %89 ], [ %.7275, %.preheader458 ]
  %122 = load ptr, ptr %102, align 8, !tbaa !27
  %123 = tail call i32 @qh_setsize(ptr noundef %122) #3
  %124 = load ptr, ptr %90, align 8, !tbaa !23
  %125 = tail call i32 @qh_setsize(ptr noundef %124) #3
  %126 = load ptr, ptr %93, align 8, !tbaa !24
  %127 = tail call i32 @qh_setsize(ptr noundef %126) #3
  %128 = load i32, ptr %28, align 8
  %129 = and i32 %128, 8192
  %.not356 = icmp eq i32 %129, 0
  br i1 %.not356, label %140, label %130

130:                                              ; preds = %.loopexit459
  %131 = add nsw i32 %125, %123
  %132 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8, !tbaa !5
  %133 = shl nsw i32 %132, 1
  %.not363 = icmp ne i32 %131, %133
  %134 = icmp ult i32 %128, 1073741824
  %or.cond426 = and i1 %134, %.not363
  br i1 %or.cond426, label %135, label %.thread

135:                                              ; preds = %130
  %136 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %137 = load i32, ptr %14, align 4, !tbaa !15
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %136, i32 noundef 6123, ptr noundef nonnull @.str.68, i32 noundef %137, i32 noundef %125, i32 noundef %123) #3
  %138 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %139 = load ptr, ptr %102, align 8, !tbaa !27
  tail call void @qh_setprint(ptr noundef %138, ptr noundef nonnull @.str.4, ptr noundef %139) #3
  br label %.thread

140:                                              ; preds = %.loopexit459
  %.not357 = icmp eq i32 %1, 0
  br i1 %.not357, label %141, label %148

141:                                              ; preds = %140
  %142 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8, !tbaa !5
  %143 = icmp slt i32 %125, %142
  %144 = icmp slt i32 %123, %142
  %or.cond427 = select i1 %143, i1 true, i1 %144
  %or.cond428 = icmp ult i32 %128, 1073741824
  %or.cond440 = and i1 %or.cond428, %or.cond427
  br i1 %or.cond440, label %145, label %148

145:                                              ; preds = %141
  %146 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %147 = load i32, ptr %14, align 4, !tbaa !15
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %146, i32 noundef 6124, ptr noundef nonnull @.str.69, i32 noundef %147, i32 noundef %125, i32 noundef %123) #3
  br label %148

148:                                              ; preds = %141, %145, %140
  %.10278 = phi i32 [ %.9277, %140 ], [ 1, %145 ], [ %.9277, %141 ]
  %149 = icmp slt i32 %127, %123
  br i1 %149, label %159, label %150

150:                                              ; preds = %148
  %151 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8, !tbaa !5
  switch i32 %151, label %.thread [
    i32 3, label %152
    i32 2, label %156
  ]

152:                                              ; preds = %150
  %153 = icmp sle i32 %125, %127
  %154 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2704), align 8
  %155 = icmp ne i32 %154, 0
  %or.cond3 = select i1 %153, i1 true, i1 %155
  br i1 %or.cond3, label %.thread, label %159

156:                                              ; preds = %150
  %157 = add i32 %125, %123
  %158 = add i32 %157, %127
  %.not360 = icmp eq i32 %158, 6
  br i1 %.not360, label %.thread, label %159

159:                                              ; preds = %152, %156, %148
  %160 = load i32, ptr %28, align 8
  %or.cond429 = icmp ult i32 %160, 1073741824
  br i1 %or.cond429, label %161, label %.thread

161:                                              ; preds = %159
  %162 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %163 = load i32, ptr %14, align 4, !tbaa !15
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %162, i32 noundef 6125, ptr noundef nonnull @.str.70, i32 noundef %163, i32 noundef %127, i32 noundef %123, i32 noundef %125) #3
  br label %.thread

.thread:                                          ; preds = %150, %152, %156, %161, %159, %130, %135
  %.11279 = phi i32 [ 1, %135 ], [ %.9277, %130 ], [ %.10278, %159 ], [ 1, %161 ], [ %.10278, %156 ], [ %.10278, %152 ], [ %.10278, %150 ]
  %164 = load ptr, ptr %102, align 8, !tbaa !27
  %.not366 = icmp eq ptr %164, null
  br i1 %.not366, label %.thread432, label %.preheader457

.preheader457:                                    ; preds = %.thread
  %.0261461 = getelementptr inbounds i8, ptr %164, i64 8
  %165 = load ptr, ptr %.0261461, align 8, !tbaa !28
  %.not368462 = icmp eq ptr %165, null
  br i1 %.not368462, label %.preheader456, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader457, %179
  %166 = phi ptr [ %182, %179 ], [ %165, %.preheader457 ]
  %.0261465 = phi ptr [ %.0261, %179 ], [ %.0261461, %.preheader457 ]
  %.0263464 = phi ptr [ %.1264, %179 ], [ null, %.preheader457 ]
  %.12463 = phi i32 [ %.13, %179 ], [ %.11279, %.preheader457 ]
  %switch = icmp ult ptr %166, inttoptr (i64 3 to ptr)
  br i1 %switch, label %167, label %170

167:                                              ; preds = %.lr.ph
  %168 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %169 = load i32, ptr %14, align 4, !tbaa !15
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %168, i32 noundef 6126, ptr noundef nonnull @.str.71, i32 noundef %169) #3
  tail call void @qh_errexit(i32 noundef 5, ptr noundef %0, ptr noundef null) #3
  br label %170

170:                                              ; preds = %.lr.ph, %167
  %171 = getelementptr inbounds i8, ptr %166, i64 112
  %172 = load i32, ptr %171, align 8
  %173 = and i32 %172, 2048
  %.not422 = icmp eq i32 %173, 0
  br i1 %.not422, label %179, label %174

174:                                              ; preds = %170
  %175 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %176 = load i32, ptr %14, align 4, !tbaa !15
  %177 = getelementptr inbounds i8, ptr %166, i64 108
  %178 = load i32, ptr %177, align 4, !tbaa !15
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %175, i32 noundef 6401, ptr noundef nonnull @.str.72, i32 noundef %176, i32 noundef %178) #3
  %.pre549 = load i32, ptr %171, align 8
  br label %179

179:                                              ; preds = %174, %170
  %180 = phi i32 [ %.pre549, %174 ], [ %172, %170 ]
  %.13 = phi i32 [ 1, %174 ], [ %.12463, %170 ]
  %.1264 = phi ptr [ %166, %174 ], [ %.0263464, %170 ]
  %181 = or i32 %180, 16384
  store i32 %181, ptr %171, align 8
  %.0261 = getelementptr inbounds i8, ptr %.0261465, i64 8
  %182 = load ptr, ptr %.0261, align 8, !tbaa !28
  %.not368 = icmp eq ptr %182, null
  br i1 %.not368, label %._crit_edge, label %.lr.ph, !llvm.loop !33

._crit_edge:                                      ; preds = %179
  %.pr.pre = load ptr, ptr %102, align 8, !tbaa !27
  %.not369 = icmp eq ptr %.pr.pre, null
  br i1 %.not369, label %.thread432, label %.preheader456

.preheader456:                                    ; preds = %.preheader457, %._crit_edge
  %.0263.lcssa563 = phi ptr [ %.1264, %._crit_edge ], [ null, %.preheader457 ]
  %.12.lcssa562 = phi i32 [ %.13, %._crit_edge ], [ %.11279, %.preheader457 ]
  %.pr561 = phi ptr [ %.pr.pre, %._crit_edge ], [ %164, %.preheader457 ]
  %.1467 = getelementptr inbounds i8, ptr %.pr561, i64 8
  %183 = load ptr, ptr %.1467, align 8, !tbaa !28
  %.not371468 = icmp eq ptr %183, null
  br i1 %.not371468, label %.thread432, label %.lr.ph472

.lr.ph472:                                        ; preds = %.preheader456, %202
  %184 = phi ptr [ %205, %202 ], [ %183, %.preheader456 ]
  %.1471 = phi ptr [ %.1, %202 ], [ %.1467, %.preheader456 ]
  %.3266470 = phi ptr [ %.5, %202 ], [ %.0263.lcssa563, %.preheader456 ]
  %.15469 = phi i32 [ %.17, %202 ], [ %.12.lcssa562, %.preheader456 ]
  %185 = getelementptr inbounds i8, ptr %184, i64 80
  %186 = load ptr, ptr %185, align 8, !tbaa !27
  %187 = tail call i32 @qh_setin(ptr noundef %186, ptr noundef %0) #3
  %.not420 = icmp eq i32 %187, 0
  br i1 %.not420, label %188, label %193

188:                                              ; preds = %.lr.ph472
  %189 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %190 = load i32, ptr %14, align 4, !tbaa !15
  %191 = getelementptr inbounds i8, ptr %184, i64 108
  %192 = load i32, ptr %191, align 4, !tbaa !15
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %189, i32 noundef 6127, ptr noundef nonnull @.str.73, i32 noundef %190, i32 noundef %192, i32 noundef %192, i32 noundef %190) #3
  br label %193

193:                                              ; preds = %188, %.lr.ph472
  %.16 = phi i32 [ %.15469, %.lr.ph472 ], [ 1, %188 ]
  %.4 = phi ptr [ %.3266470, %.lr.ph472 ], [ %184, %188 ]
  %194 = getelementptr inbounds i8, ptr %184, i64 112
  %195 = load i32, ptr %194, align 8
  %196 = and i32 %195, 16384
  %.not421 = icmp eq i32 %196, 0
  br i1 %.not421, label %197, label %202

197:                                              ; preds = %193
  %198 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %199 = load i32, ptr %14, align 4, !tbaa !15
  %200 = getelementptr inbounds i8, ptr %184, i64 108
  %201 = load i32, ptr %200, align 4, !tbaa !15
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %198, i32 noundef 6128, ptr noundef nonnull @.str.74, i32 noundef %199, i32 noundef %201) #3
  %.pre551 = load i32, ptr %194, align 8
  br label %202

202:                                              ; preds = %197, %193
  %203 = phi i32 [ %195, %193 ], [ %.pre551, %197 ]
  %.17 = phi i32 [ %.16, %193 ], [ 1, %197 ]
  %.5 = phi ptr [ %.4, %193 ], [ %184, %197 ]
  %204 = and i32 %203, -16385
  store i32 %204, ptr %194, align 8
  %.1 = getelementptr inbounds i8, ptr %.1471, i64 8
  %205 = load ptr, ptr %.1, align 8, !tbaa !28
  %.not371 = icmp eq ptr %205, null
  br i1 %.not371, label %.thread432, label %.lr.ph472, !llvm.loop !34

.thread432:                                       ; preds = %202, %.preheader456, %.thread, %._crit_edge
  %.18 = phi i32 [ %.13, %._crit_edge ], [ %.11279, %.thread ], [ %.12.lcssa562, %.preheader456 ], [ %.17, %202 ]
  %.6 = phi ptr [ %.1264, %._crit_edge ], [ null, %.thread ], [ %.0263.lcssa563, %.preheader456 ], [ %.5, %202 ]
  %206 = load ptr, ptr %93, align 8, !tbaa !24
  %.not372 = icmp eq ptr %206, null
  br i1 %.not372, label %.thread438, label %.preheader455

.preheader455:                                    ; preds = %.thread432
  %.0280475 = getelementptr inbounds i8, ptr %206, i64 8
  %207 = load ptr, ptr %.0280475, align 8, !tbaa !28
  %.not374476 = icmp eq ptr %207, null
  br i1 %.not374476, label %.preheader454, label %.lr.ph478

.lr.ph478:                                        ; preds = %.preheader455, %.lr.ph478
  %208 = phi ptr [ %215, %.lr.ph478 ], [ %207, %.preheader455 ]
  %.0280477 = phi ptr [ %.0280, %.lr.ph478 ], [ %.0280475, %.preheader455 ]
  %209 = load ptr, ptr %208, align 8, !tbaa !35
  %210 = getelementptr inbounds i8, ptr %208, i64 24
  %211 = load i32, ptr %210, align 8, !tbaa !37
  tail call void @qh_setcheck(ptr noundef %209, ptr noundef nonnull @.str.75, i32 noundef %211) #3
  %212 = getelementptr inbounds i8, ptr %208, i64 28
  %213 = load i8, ptr %212, align 4
  %214 = and i8 %213, -2
  store i8 %214, ptr %212, align 4
  %.0280 = getelementptr inbounds i8, ptr %.0280477, i64 8
  %215 = load ptr, ptr %.0280, align 8, !tbaa !28
  %.not374 = icmp eq ptr %215, null
  br i1 %.not374, label %._crit_edge479, label %.lr.ph478, !llvm.loop !38

._crit_edge479:                                   ; preds = %.lr.ph478
  %.pr437.pre = load ptr, ptr %93, align 8, !tbaa !24
  %.not375 = icmp eq ptr %.pr437.pre, null
  br i1 %.not375, label %.thread438, label %.preheader454

.preheader454:                                    ; preds = %.preheader455, %._crit_edge479
  %.pr437566 = phi ptr [ %.pr437.pre, %._crit_edge479 ], [ %206, %.preheader455 ]
  %.1281480 = getelementptr inbounds i8, ptr %.pr437566, i64 8
  %216 = load ptr, ptr %.1281480, align 8, !tbaa !28
  %.not377481 = icmp eq ptr %216, null
  br i1 %.not377481, label %.thread438, label %.lr.ph485

.lr.ph485:                                        ; preds = %.preheader454, %291
  %217 = phi ptr [ %292, %291 ], [ %216, %.preheader454 ]
  %.1281484 = phi ptr [ %.1281, %291 ], [ %.1281480, %.preheader454 ]
  %.19483 = phi i32 [ %.23, %291 ], [ %.18, %.preheader454 ]
  %.0283482 = phi ptr [ %.4287, %291 ], [ null, %.preheader454 ]
  %218 = getelementptr inbounds i8, ptr %217, i64 28
  %219 = load i8, ptr %218, align 4
  %220 = and i8 %219, 1
  %.not413 = icmp eq i8 %220, 0
  br i1 %.not413, label %226, label %221

221:                                              ; preds = %.lr.ph485
  %222 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %223 = load i32, ptr %14, align 4, !tbaa !15
  %224 = getelementptr inbounds i8, ptr %217, i64 24
  %225 = load i32, ptr %224, align 8, !tbaa !37
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %222, i32 noundef 6129, ptr noundef nonnull @.str.76, i32 noundef %223, i32 noundef %225) #3
  %.pre553 = load i8, ptr %218, align 4
  br label %226

226:                                              ; preds = %221, %.lr.ph485
  %227 = phi i8 [ %.pre553, %221 ], [ %219, %.lr.ph485 ]
  %.1284 = phi ptr [ %217, %221 ], [ %.0283482, %.lr.ph485 ]
  %.20 = phi i32 [ 1, %221 ], [ %.19483, %.lr.ph485 ]
  %228 = or i8 %227, 1
  store i8 %228, ptr %218, align 4
  %229 = load ptr, ptr %217, align 8, !tbaa !35
  %230 = tail call i32 @qh_setsize(ptr noundef %229) #3
  %231 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8, !tbaa !5
  %232 = add nsw i32 %231, -1
  %.not414 = icmp eq i32 %230, %232
  br i1 %.not414, label %243, label %233

233:                                              ; preds = %226
  %234 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %235 = getelementptr inbounds i8, ptr %217, i64 8
  %236 = load ptr, ptr %235, align 8, !tbaa !39
  %237 = getelementptr inbounds i8, ptr %236, i64 108
  %238 = load i32, ptr %237, align 4, !tbaa !15
  %239 = getelementptr inbounds i8, ptr %217, i64 16
  %240 = load ptr, ptr %239, align 8, !tbaa !40
  %241 = getelementptr inbounds i8, ptr %240, i64 108
  %242 = load i32, ptr %241, align 4, !tbaa !15
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %234, i32 noundef 6130, ptr noundef nonnull @.str.77, i32 noundef %238, i32 noundef %242, i32 noundef %230) #3
  br label %243

243:                                              ; preds = %233, %226
  %.2285 = phi ptr [ %217, %233 ], [ %.1284, %226 ]
  %.21 = phi i32 [ 1, %233 ], [ %.20, %226 ]
  %244 = getelementptr inbounds i8, ptr %217, i64 8
  %245 = load ptr, ptr %244, align 8, !tbaa !39
  %246 = icmp eq ptr %245, %0
  br i1 %246, label %247, label %250

247:                                              ; preds = %243
  %248 = getelementptr inbounds i8, ptr %217, i64 16
  %249 = load ptr, ptr %248, align 8, !tbaa !40
  br label %250

250:                                              ; preds = %243, %247
  %251 = phi ptr [ %249, %247 ], [ %245, %243 ]
  %252 = getelementptr inbounds i8, ptr %251, i64 112
  %253 = load i32, ptr %252, align 8
  %254 = or i32 %253, 16384
  store i32 %254, ptr %252, align 8
  %255 = load ptr, ptr %102, align 8, !tbaa !27
  %256 = tail call i32 @qh_setin(ptr noundef %255, ptr noundef %251) #3
  %.not415 = icmp eq i32 %256, 0
  br i1 %.not415, label %257, label %264

257:                                              ; preds = %250
  %258 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %259 = load i32, ptr %14, align 4, !tbaa !15
  %260 = getelementptr inbounds i8, ptr %251, i64 108
  %261 = load i32, ptr %260, align 4, !tbaa !15
  %262 = getelementptr inbounds i8, ptr %217, i64 24
  %263 = load i32, ptr %262, align 8, !tbaa !37
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %258, i32 noundef 6131, ptr noundef nonnull @.str.78, i32 noundef %259, i32 noundef %261, i32 noundef %263) #3
  br label %264

264:                                              ; preds = %257, %250
  %.3286 = phi ptr [ %.2285, %250 ], [ %217, %257 ]
  %.22 = phi i32 [ %.21, %250 ], [ 1, %257 ]
  %265 = load i32, ptr %28, align 8
  %266 = and i32 %265, 1024
  %.not416 = icmp eq i32 %266, 0
  br i1 %.not416, label %267, label %291

267:                                              ; preds = %264
  %268 = load i32, ptr %252, align 8
  %269 = and i32 %268, 1024
  %.not417 = icmp eq i32 %269, 0
  br i1 %.not417, label %270, label %291

270:                                              ; preds = %267
  %271 = load i8, ptr %218, align 4
  %272 = lshr i8 %271, 1
  %273 = and i8 %272, 1
  %274 = xor i8 %273, 1
  %275 = lshr i8 %271, 2
  %276 = and i8 %275, 1
  %277 = lshr i8 %271, 3
  %278 = and i8 %277, 1
  %279 = or i8 %276, %274
  %280 = or i8 %279, %278
  %.not419 = icmp eq i8 %280, 0
  br i1 %.not419, label %291, label %281

281:                                              ; preds = %270
  %282 = zext nneg i8 %278 to i32
  %283 = zext nneg i8 %276 to i32
  %284 = zext nneg i8 %273 to i32
  %285 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %286 = getelementptr inbounds i8, ptr %217, i64 24
  %287 = load i32, ptr %286, align 8, !tbaa !37
  %288 = load i32, ptr %14, align 4, !tbaa !15
  %289 = getelementptr inbounds i8, ptr %251, i64 108
  %290 = load i32, ptr %289, align 4, !tbaa !15
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %285, i32 noundef 6384, ptr noundef nonnull @.str.79, i32 noundef %287, i32 noundef %283, i32 noundef %282, i32 noundef %284, i32 noundef %288, i32 noundef %290) #3
  br label %291

291:                                              ; preds = %270, %281, %267, %264
  %.4287 = phi ptr [ %.3286, %264 ], [ %.3286, %267 ], [ %217, %281 ], [ %.3286, %270 ]
  %.23 = phi i32 [ %.22, %264 ], [ %.22, %267 ], [ 1, %281 ], [ %.22, %270 ]
  %.1281 = getelementptr inbounds i8, ptr %.1281484, i64 8
  %292 = load ptr, ptr %.1281, align 8, !tbaa !28
  %.not377 = icmp eq ptr %292, null
  br i1 %.not377, label %.thread438, label %.lr.ph485, !llvm.loop !41

.thread438:                                       ; preds = %291, %.preheader454, %.thread432, %._crit_edge479
  %.5288 = phi ptr [ null, %._crit_edge479 ], [ null, %.thread432 ], [ null, %.preheader454 ], [ %.4287, %291 ]
  %.24 = phi i32 [ %.18, %._crit_edge479 ], [ %.18, %.thread432 ], [ %.18, %.preheader454 ], [ %.23, %291 ]
  %293 = load i32, ptr %28, align 8
  %294 = and i32 %293, 8192
  %.not378 = icmp eq i32 %294, 0
  %295 = load ptr, ptr %102, align 8, !tbaa !27
  %.not379 = icmp eq ptr %295, null
  br i1 %.not378, label %296, label %397

296:                                              ; preds = %.thread438
  br i1 %.not379, label %.loopexit452, label %.preheader451

.preheader451:                                    ; preds = %296
  %.2514 = getelementptr inbounds i8, ptr %295, i64 8
  %297 = load ptr, ptr %.2514, align 8, !tbaa !28
  %.not381515 = icmp eq ptr %297, null
  br i1 %.not381515, label %.loopexit452, label %.lr.ph519

.lr.ph519:                                        ; preds = %.preheader451
  %.not391 = icmp ne i32 %1, 0
  br label %298

298:                                              ; preds = %.lr.ph519, %.loopexit445
  %299 = phi ptr [ %297, %.lr.ph519 ], [ %396, %.loopexit445 ]
  %.2518 = phi ptr [ %.2514, %.lr.ph519 ], [ %.2, %.loopexit445 ]
  %.7517 = phi ptr [ %.6, %.lr.ph519 ], [ %.8, %.loopexit445 ]
  %.25516 = phi i32 [ %.24, %.lr.ph519 ], [ %.26, %.loopexit445 ]
  %300 = getelementptr inbounds i8, ptr %299, i64 112
  %301 = load i32, ptr %300, align 8
  %302 = and i32 %301, 16384
  %.not382 = icmp eq i32 %302, 0
  br i1 %.not382, label %303, label %308

303:                                              ; preds = %298
  %304 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %305 = load i32, ptr %14, align 4, !tbaa !15
  %306 = getelementptr inbounds i8, ptr %299, i64 108
  %307 = load i32, ptr %306, align 4, !tbaa !15
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %304, i32 noundef 6132, ptr noundef nonnull @.str.80, i32 noundef %305, i32 noundef %307) #3
  br label %308

308:                                              ; preds = %303, %298
  %.26 = phi i32 [ %.25516, %298 ], [ 1, %303 ]
  %.8 = phi ptr [ %.7517, %298 ], [ %299, %303 ]
  %309 = load ptr, ptr %90, align 8, !tbaa !23
  %310 = getelementptr inbounds i8, ptr %299, i64 64
  %311 = load ptr, ptr %310, align 8, !tbaa !23
  %312 = call ptr @qh_vertexintersect_new(ptr noundef %309, ptr noundef %311)
  store ptr %312, ptr %4, align 8, !tbaa !28
  call void @qh_settemppush(ptr noundef %312) #3
  %313 = load ptr, ptr %90, align 8, !tbaa !23
  %.not383 = icmp eq ptr %313, null
  br i1 %.not383, label %.loopexit450, label %.preheader449

.preheader449:                                    ; preds = %308
  %.1296495 = getelementptr inbounds i8, ptr %313, i64 8
  %314 = load ptr, ptr %.1296495, align 8, !tbaa !28
  %.not385496 = icmp eq ptr %314, null
  br i1 %.not385496, label %.loopexit450, label %.lr.ph498

.lr.ph498:                                        ; preds = %.preheader449, %.lr.ph498
  %315 = phi ptr [ %319, %.lr.ph498 ], [ %314, %.preheader449 ]
  %.1296497 = phi ptr [ %.1296, %.lr.ph498 ], [ %.1296495, %.preheader449 ]
  %316 = getelementptr inbounds i8, ptr %315, i64 40
  %317 = load i8, ptr %316, align 8
  %318 = and i8 %317, -4
  store i8 %318, ptr %316, align 8
  %.1296 = getelementptr inbounds i8, ptr %.1296497, i64 8
  %319 = load ptr, ptr %.1296, align 8, !tbaa !28
  %.not385 = icmp eq ptr %319, null
  br i1 %.not385, label %.loopexit450, label %.lr.ph498, !llvm.loop !42

.loopexit450:                                     ; preds = %.lr.ph498, %.preheader449, %308
  %320 = load ptr, ptr %4, align 8
  %.not386 = icmp eq ptr %320, null
  br i1 %.not386, label %.loopexit448, label %.preheader447

.preheader447:                                    ; preds = %.loopexit450
  %.2297499 = getelementptr inbounds i8, ptr %320, i64 8
  %321 = load ptr, ptr %.2297499, align 8, !tbaa !28
  %.not388500 = icmp eq ptr %321, null
  br i1 %.not388500, label %.loopexit448, label %.lr.ph502

.lr.ph502:                                        ; preds = %.preheader447, %.lr.ph502
  %322 = phi ptr [ %326, %.lr.ph502 ], [ %321, %.preheader447 ]
  %.2297501 = phi ptr [ %.2297, %.lr.ph502 ], [ %.2297499, %.preheader447 ]
  %323 = getelementptr inbounds i8, ptr %322, i64 40
  %324 = load i8, ptr %323, align 8
  %325 = or i8 %324, 1
  store i8 %325, ptr %323, align 8
  %.2297 = getelementptr inbounds i8, ptr %.2297501, i64 8
  %326 = load ptr, ptr %.2297, align 8, !tbaa !28
  %.not388 = icmp eq ptr %326, null
  br i1 %.not388, label %.loopexit448, label %.lr.ph502, !llvm.loop !43

.loopexit448:                                     ; preds = %.lr.ph502, %.preheader447, %.loopexit450
  %327 = load ptr, ptr %93, align 8, !tbaa !24
  %.not389 = icmp eq ptr %327, null
  br i1 %.not389, label %.loopexit446, label %328

328:                                              ; preds = %.loopexit448
  %329 = getelementptr inbounds i8, ptr %327, i64 8
  %330 = load ptr, ptr %329, align 8, !tbaa !28
  %.not390507 = icmp eq ptr %330, null
  br i1 %.not390507, label %.loopexit446, label %.lr.ph509

.lr.ph509:                                        ; preds = %328
  %331 = getelementptr inbounds i8, ptr %327, i64 16
  %332 = getelementptr inbounds i8, ptr %299, i64 108
  br label %333

333:                                              ; preds = %.lr.ph509, %.backedge
  %334 = phi ptr [ %330, %.lr.ph509 ], [ %365, %.backedge ]
  %335 = phi ptr [ %331, %.lr.ph509 ], [ %364, %.backedge ]
  %336 = getelementptr inbounds i8, ptr %334, i64 8
  %337 = load ptr, ptr %336, align 8, !tbaa !39
  %338 = icmp eq ptr %337, %0
  br i1 %338, label %339, label %342

339:                                              ; preds = %333
  %340 = getelementptr inbounds i8, ptr %334, i64 16
  %341 = load ptr, ptr %340, align 8, !tbaa !40
  br label %342

342:                                              ; preds = %333, %339
  %343 = phi ptr [ %341, %339 ], [ %337, %333 ]
  %.not398 = icmp eq ptr %299, %343
  br i1 %.not398, label %344, label %.backedge

344:                                              ; preds = %342
  %345 = load ptr, ptr %334, align 8, !tbaa !35
  %.not399 = icmp eq ptr %345, null
  br i1 %.not399, label %.backedge, label %.preheader442

.preheader442:                                    ; preds = %344
  %.3298503 = getelementptr inbounds i8, ptr %345, i64 8
  %346 = load ptr, ptr %.3298503, align 8, !tbaa !28
  %.not401504 = icmp eq ptr %346, null
  br i1 %.not401504, label %.backedge, label %.lr.ph506

.lr.ph506:                                        ; preds = %.preheader442
  %347 = getelementptr inbounds i8, ptr %334, i64 24
  br label %348

348:                                              ; preds = %.lr.ph506, %360
  %349 = phi ptr [ %346, %.lr.ph506 ], [ %363, %360 ]
  %.3298505 = phi ptr [ %.3298503, %.lr.ph506 ], [ %.3298, %360 ]
  %350 = getelementptr inbounds i8, ptr %349, i64 40
  %351 = load i8, ptr %350, align 8
  %352 = and i8 %351, 1
  %.not402 = icmp eq i8 %352, 0
  br i1 %.not402, label %353, label %360

353:                                              ; preds = %348
  %354 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %355 = getelementptr inbounds i8, ptr %349, i64 32
  %356 = load i32, ptr %355, align 8, !tbaa !29
  %357 = load i32, ptr %347, align 8, !tbaa !37
  %358 = load i32, ptr %14, align 4, !tbaa !15
  %359 = load i32, ptr %332, align 4, !tbaa !15
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %354, i32 noundef 6133, ptr noundef nonnull @.str.81, i32 noundef %356, i32 noundef %357, i32 noundef %358, i32 noundef %359) #3
  call void @qh_errexit(i32 noundef 5, ptr noundef %0, ptr noundef nonnull %334) #3
  %.pre554 = load i8, ptr %350, align 8
  br label %360

360:                                              ; preds = %353, %348
  %361 = phi i8 [ %.pre554, %353 ], [ %351, %348 ]
  %362 = or i8 %361, 2
  store i8 %362, ptr %350, align 8
  %.3298 = getelementptr inbounds i8, ptr %.3298505, i64 8
  %363 = load ptr, ptr %.3298, align 8, !tbaa !28
  %.not401 = icmp eq ptr %363, null
  br i1 %.not401, label %.backedge, label %348, !llvm.loop !44

.backedge:                                        ; preds = %360, %344, %.preheader442, %342
  %364 = getelementptr inbounds i8, ptr %335, i64 8
  %365 = load ptr, ptr %335, align 8, !tbaa !28
  %.not390 = icmp eq ptr %365, null
  br i1 %.not390, label %.loopexit446.loopexit, label %333, !llvm.loop !45

.loopexit446.loopexit:                            ; preds = %.backedge
  %.pre555 = load ptr, ptr %4, align 8
  br label %.loopexit446

.loopexit446:                                     ; preds = %.loopexit446.loopexit, %328, %.loopexit448
  %366 = phi ptr [ %.pre555, %.loopexit446.loopexit ], [ %320, %328 ], [ %320, %.loopexit448 ]
  %.not392 = icmp eq ptr %366, null
  %or.cond431 = select i1 %.not391, i1 true, i1 %.not392
  br i1 %or.cond431, label %.loopexit445, label %.preheader444

.preheader444:                                    ; preds = %.loopexit446
  %.4299510 = getelementptr inbounds i8, ptr %366, i64 8
  %367 = load ptr, ptr %.4299510, align 8, !tbaa !28
  %.not394511 = icmp eq ptr %367, null
  br i1 %.not394511, label %.loopexit445, label %.lr.ph513

.lr.ph513:                                        ; preds = %.preheader444
  %368 = getelementptr inbounds i8, ptr %299, i64 108
  br label %369

369:                                              ; preds = %.lr.ph513, %394
  %370 = phi ptr [ %367, %.lr.ph513 ], [ %395, %394 ]
  %.4299512 = phi ptr [ %.4299510, %.lr.ph513 ], [ %.4299, %394 ]
  %371 = getelementptr inbounds i8, ptr %370, i64 40
  %372 = load i8, ptr %371, align 8
  %373 = and i8 %372, 2
  %.not395 = icmp eq i8 %373, 0
  br i1 %.not395, label %374, label %394

374:                                              ; preds = %369
  %375 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 188), align 4, !tbaa !46
  %.not396 = icmp eq i32 %375, 0
  br i1 %.not396, label %376, label %385

376:                                              ; preds = %374
  %377 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %378 = getelementptr inbounds i8, ptr %370, i64 32
  %379 = load i32, ptr %378, align 8, !tbaa !29
  %380 = load i32, ptr %14, align 4, !tbaa !15
  %381 = load i32, ptr %368, align 4, !tbaa !15
  %382 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2620), align 4, !tbaa !47
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %377, i32 noundef 6420, ptr noundef nonnull @.str.82, i32 noundef %379, i32 noundef %380, i32 noundef %381, i32 noundef %382) #3
  %383 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 96), align 8, !tbaa !48
  %.not397 = icmp eq i32 %383, 0
  br i1 %.not397, label %384, label %394

384:                                              ; preds = %376
  call void @qh_errprint(ptr noundef nonnull @.str.66, ptr noundef nonnull %0, ptr noundef nonnull %299, ptr noundef null, ptr noundef nonnull %370) #3
  call void @qh_errexit(i32 noundef 7, ptr noundef null, ptr noundef null) #3
  br label %394

385:                                              ; preds = %374
  %386 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 136), align 8, !tbaa !13
  %387 = icmp sgt i32 %386, 3
  br i1 %387, label %388, label %394

388:                                              ; preds = %385
  %389 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %390 = getelementptr inbounds i8, ptr %370, i64 32
  %391 = load i32, ptr %390, align 8, !tbaa !29
  %392 = load i32, ptr %14, align 4, !tbaa !15
  %393 = load i32, ptr %368, align 4, !tbaa !15
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %389, i32 noundef 4025, ptr noundef nonnull @.str.83, i32 noundef %391, i32 noundef %392, i32 noundef %393) #3
  br label %394

394:                                              ; preds = %384, %376, %388, %385, %369
  %.4299 = getelementptr inbounds i8, ptr %.4299512, i64 8
  %395 = load ptr, ptr %.4299, align 8, !tbaa !28
  %.not394 = icmp eq ptr %395, null
  br i1 %.not394, label %.loopexit445, label %369, !llvm.loop !49

.loopexit445:                                     ; preds = %394, %.preheader444, %.loopexit446
  call void @qh_settempfree(ptr noundef nonnull %4) #3
  %.2 = getelementptr inbounds i8, ptr %.2518, i64 8
  %396 = load ptr, ptr %.2, align 8, !tbaa !28
  %.not381 = icmp eq ptr %396, null
  br i1 %.not381, label %.loopexit452, label %298, !llvm.loop !50

397:                                              ; preds = %.thread438
  br i1 %.not379, label %.loopexit452, label %398

398:                                              ; preds = %397
  %399 = getelementptr inbounds i8, ptr %295, i64 8
  %400 = load ptr, ptr %399, align 8, !tbaa !28
  %.not404488 = icmp eq ptr %400, null
  br i1 %.not404488, label %.loopexit452, label %.lr.ph492.preheader

.lr.ph492.preheader:                              ; preds = %398
  %401 = getelementptr inbounds i8, ptr %295, i64 16
  br label %.lr.ph492

.lr.ph492:                                        ; preds = %.lr.ph492.preheader, %434
  %402 = phi ptr [ %436, %434 ], [ %400, %.lr.ph492.preheader ]
  %403 = phi ptr [ %435, %434 ], [ %401, %.lr.ph492.preheader ]
  %.9490 = phi ptr [ %.10, %434 ], [ %.6, %.lr.ph492.preheader ]
  %.27489 = phi i32 [ %.28, %434 ], [ %.24, %.lr.ph492.preheader ]
  %404 = getelementptr inbounds i8, ptr %402, i64 112
  %405 = load i32, ptr %404, align 8
  %406 = and i32 %405, 8192
  %.not409 = icmp eq i32 %406, 0
  br i1 %.not409, label %434, label %407

407:                                              ; preds = %.lr.ph492
  %408 = load i32, ptr %28, align 8
  %409 = or i32 %408, %405
  %410 = and i32 %409, 1073741824
  %or.cond430 = icmp eq i32 %410, 0
  br i1 %or.cond430, label %411, label %434

411:                                              ; preds = %407
  %412 = load ptr, ptr %102, align 8, !tbaa !27
  %413 = getelementptr inbounds i8, ptr %412, i64 16
  %414 = ptrtoint ptr %403 to i64
  %415 = ptrtoint ptr %413 to i64
  %416 = sub i64 %414, %415
  %417 = lshr exact i64 %416, 3
  %418 = trunc i64 %417 to i32
  %419 = getelementptr inbounds i8, ptr %402, i64 80
  %420 = load ptr, ptr %419, align 8, !tbaa !27
  %421 = tail call i32 @qh_setindex(ptr noundef %420, ptr noundef nonnull %0) #3
  %422 = icmp slt i32 %418, 0
  %423 = icmp slt i32 %421, 0
  %or.cond7 = select i1 %422, i1 true, i1 %423
  br i1 %or.cond7, label %429, label %424

424:                                              ; preds = %411
  %425 = load ptr, ptr %90, align 8, !tbaa !23
  %426 = getelementptr inbounds i8, ptr %402, i64 64
  %427 = load ptr, ptr %426, align 8, !tbaa !23
  %428 = tail call i32 @qh_setequal_skip(ptr noundef %425, i32 noundef %418, ptr noundef %427, i32 noundef %421) #3
  %.not412 = icmp eq i32 %428, 0
  br i1 %.not412, label %429, label %434

429:                                              ; preds = %424, %411
  %430 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %431 = load i32, ptr %14, align 4, !tbaa !15
  %432 = getelementptr inbounds i8, ptr %402, i64 108
  %433 = load i32, ptr %432, align 4, !tbaa !15
  tail call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %430, i32 noundef 6135, ptr noundef nonnull @.str.84, i32 noundef %431, i32 noundef %418, i32 noundef %433, i32 noundef %421) #3
  br label %434

434:                                              ; preds = %424, %429, %407, %.lr.ph492
  %.28 = phi i32 [ %.27489, %407 ], [ 1, %429 ], [ %.27489, %424 ], [ %.27489, %.lr.ph492 ]
  %.10 = phi ptr [ %.9490, %407 ], [ %402, %429 ], [ %.9490, %424 ], [ %.9490, %.lr.ph492 ]
  %435 = getelementptr inbounds i8, ptr %403, i64 8
  %436 = load ptr, ptr %403, align 8, !tbaa !28
  %.not404 = icmp eq ptr %436, null
  br i1 %.not404, label %.loopexit452, label %.lr.ph492, !llvm.loop !51

.loopexit452:                                     ; preds = %434, %.loopexit445, %398, %.preheader451, %397, %296
  %.29 = phi i32 [ %.24, %397 ], [ %.24, %296 ], [ %.24, %.preheader451 ], [ %.24, %398 ], [ %.26, %.loopexit445 ], [ %.28, %434 ]
  %.11 = phi ptr [ %.6, %397 ], [ %.6, %296 ], [ %.6, %.preheader451 ], [ %.6, %398 ], [ %.8, %.loopexit445 ], [ %.10, %434 ]
  %437 = icmp eq i32 %1, 0
  %438 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 56), align 8
  %439 = icmp ne i32 %438, 0
  %or.cond9 = select i1 %437, i1 %439, i1 false
  %440 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 632), align 8
  %441 = icmp slt i32 %440, 5
  %or.cond11 = select i1 %or.cond9, i1 %441, i1 false
  br i1 %or.cond11, label %442, label %.loopexit441

442:                                              ; preds = %.loopexit452
  %443 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 136), align 8, !tbaa !13
  %444 = icmp sgt i32 %443, 2
  %445 = load i32, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 60), align 4
  %446 = icmp ne i32 %445, 0
  %or.cond13 = select i1 %444, i1 true, i1 %446
  br i1 %or.cond13, label %447, label %.loopexit441

447:                                              ; preds = %442
  %448 = load ptr, ptr %93, align 8, !tbaa !24
  %.not405 = icmp eq ptr %448, null
  br i1 %.not405, label %.loopexit441, label %449

449:                                              ; preds = %447
  %450 = getelementptr inbounds i8, ptr %448, i64 8
  %451 = load ptr, ptr %450, align 8, !tbaa !52
  %452 = call i32 @qh_setsize(ptr noundef nonnull %448) #3
  %453 = icmp sgt i32 %452, 0
  br i1 %453, label %.lr.ph534, label %.loopexit441

.lr.ph534:                                        ; preds = %449
  %454 = sext i32 %6 to i64
  %455 = zext nneg i32 %452 to i64
  %wide.trip.count546 = zext nneg i32 %452 to i64
  br label %456

456:                                              ; preds = %.lr.ph534, %.loopexit
  %indvars.iv542 = phi i64 [ 0, %.lr.ph534 ], [ %460, %.loopexit ]
  %indvars.iv = phi i64 [ 1, %.lr.ph534 ], [ %indvars.iv.next, %.loopexit ]
  %.0267531 = phi ptr [ %451, %.lr.ph534 ], [ %493, %.loopexit ]
  %.30530 = phi i32 [ %.29, %.lr.ph534 ], [ %.33, %.loopexit ]
  %.6289529 = phi ptr [ %.5288, %.lr.ph534 ], [ %.9292, %.loopexit ]
  %457 = getelementptr inbounds i8, ptr %.0267531, i64 28
  %458 = load i8, ptr %457, align 4
  %459 = and i8 %458, 8
  %.not407 = icmp eq i8 %459, 0
  %460 = add nuw nsw i64 %indvars.iv542, 1
  %461 = icmp ult i64 %460, %455
  %or.cond569 = select i1 %.not407, i1 %461, i1 false
  br i1 %or.cond569, label %.lr.ph526, label %.loopexit

.lr.ph526:                                        ; preds = %456
  %462 = getelementptr inbounds i8, ptr %.0267531, i64 24
  br label %463

463:                                              ; preds = %.lr.ph526, %489
  %indvars.iv539 = phi i64 [ %indvars.iv, %.lr.ph526 ], [ %indvars.iv.next540, %489 ]
  %.31524 = phi i32 [ %.30530, %.lr.ph526 ], [ %.32, %489 ]
  %.7290523 = phi ptr [ %.6289529, %.lr.ph526 ], [ %.8291, %489 ]
  %464 = load ptr, ptr %93, align 8, !tbaa !24
  %465 = getelementptr inbounds i8, ptr %464, i64 8
  %466 = getelementptr inbounds [1 x %union.setelemT], ptr %465, i64 0, i64 %indvars.iv539
  %467 = load ptr, ptr %466, align 8, !tbaa !52
  %468 = load ptr, ptr %.0267531, align 8, !tbaa !35
  %469 = getelementptr inbounds i8, ptr %468, i64 8
  %470 = getelementptr inbounds [1 x %union.setelemT], ptr %469, i64 0, i64 %454
  %471 = load ptr, ptr %470, align 8, !tbaa !52
  %472 = load ptr, ptr %467, align 8, !tbaa !35
  %473 = getelementptr inbounds i8, ptr %472, i64 8
  %474 = getelementptr inbounds [1 x %union.setelemT], ptr %473, i64 0, i64 %454
  %475 = load ptr, ptr %474, align 8, !tbaa !52
  %476 = icmp eq ptr %471, %475
  br i1 %476, label %477, label %489

477:                                              ; preds = %463
  %478 = load ptr, ptr %469, align 8, !tbaa !52
  %479 = load ptr, ptr %473, align 8, !tbaa !52
  %480 = icmp eq ptr %478, %479
  br i1 %480, label %481, label %489

481:                                              ; preds = %477
  %482 = call i32 @qh_setequal(ptr noundef nonnull %468, ptr noundef nonnull %472) #3
  %.not408 = icmp eq i32 %482, 0
  br i1 %.not408, label %489, label %483

483:                                              ; preds = %481
  %484 = load ptr, ptr getelementptr inbounds (i8, ptr @qh_qh, i64 2424), align 8, !tbaa !14
  %485 = load i32, ptr %462, align 8, !tbaa !37
  %486 = getelementptr inbounds i8, ptr %467, i64 24
  %487 = load i32, ptr %486, align 8, !tbaa !37
  %488 = load i32, ptr %14, align 4, !tbaa !15
  call void (ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %484, i32 noundef 6294, ptr noundef nonnull @.str.85, i32 noundef %485, i32 noundef %487, i32 noundef %488) #3
  br label %489

489:                                              ; preds = %463, %481, %483, %477
  %.8291 = phi ptr [ %.0267531, %483 ], [ %.7290523, %481 ], [ %.7290523, %477 ], [ %.7290523, %463 ]
  %.32 = phi i32 [ 1, %483 ], [ %.31524, %481 ], [ %.31524, %477 ], [ %.31524, %463 ]
  %indvars.iv.next540 = add nuw nsw i64 %indvars.iv539, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next540, %wide.trip.count546
  br i1 %exitcond.not, label %.loopexit, label %463, !llvm.loop !53

.loopexit:                                        ; preds = %489, %456
  %.9292 = phi ptr [ %.6289529, %456 ], [ %.8291, %489 ]
  %.33 = phi i32 [ %.30530, %456 ], [ %.32, %489 ]
  %490 = load ptr, ptr %93, align 8, !tbaa !24
  %491 = getelementptr inbounds i8, ptr %490, i64 8
  %492 = getelementptr inbounds [1 x %union.setelemT], ptr %491, i64 0, i64 %460
  %493 = load ptr, ptr %492, align 8, !tbaa !52
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond547.not = icmp eq i64 %460, %wide.trip.count546
  br i1 %exitcond547.not, label %.loopexit441, label %456, !llvm.loop !54

.loopexit441:                                     ; preds = %.loopexit, %449, %447, %442, %.loopexit452
  %.10293 = phi ptr [ %.5288, %447 ], [ %.5288, %442 ], [ %.5288, %.loopexit452 ], [ %.5288, %449 ], [ %.9292, %.loopexit ]
  %.34 = phi i32 [ %.29, %447 ], [ %.29, %442 ], [ %.29, %.loopexit452 ], [ %.29, %449 ], [ %.33, %.loopexit ]
  %.not406 = icmp eq i32 %.34, 0
  br i1 %.not406, label %495, label %494

494:                                              ; preds = %.loopexit441
  call void @qh_errprint(ptr noundef nonnull @.str.66, ptr noundef %0, ptr noundef %.11, ptr noundef %.10293, ptr noundef null) #3
  store i32 1, ptr %2, align 4, !tbaa !55
  br label %495

495:                                              ; preds = %494, %.loopexit441
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #3
  ret void
}

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

declare void @qh_errprint(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @qh_setprint(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

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

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

declare void @qh_settemppush(ptr noundef) local_unnamed_addr #1

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

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

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

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

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


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