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

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

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

@.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 [112 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [99 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, 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, ptr noundef, i32 noundef, ptr noundef, ...) #1

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

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

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

39:                                               ; preds = %4
  %40 = load ptr, ptr %5, align 8, !tbaa !5
  %41 = load ptr, ptr %5, align 8, !tbaa !5
  %42 = getelementptr inbounds %struct.qhT, ptr %41, i32 0, i32 158
  %43 = load ptr, ptr %42, align 8, !tbaa !18
  %44 = load ptr, ptr %6, align 8, !tbaa !5
  %45 = getelementptr inbounds %struct.facetT, ptr %44, i32 0, i32 14
  %46 = load i32, ptr %45, align 4, !tbaa !19
  %47 = load i32, ptr %7, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %40, ptr noundef %43, i32 noundef 4088, ptr noundef @.str.51, i32 noundef %46, i32 noundef %47)
  br label %48

48:                                               ; preds = %39, %4
  %49 = load ptr, ptr %6, align 8, !tbaa !5
  %50 = getelementptr inbounds %struct.facetT, ptr %49, i32 0, i32 14
  %51 = load i32, ptr %50, align 4, !tbaa !19
  %52 = load ptr, ptr %5, align 8, !tbaa !5
  %53 = getelementptr inbounds %struct.qhT, ptr %52, i32 0, i32 182
  %54 = load i32, ptr %53, align 8, !tbaa !21
  %55 = icmp uge i32 %51, %54
  br i1 %55, label %56, label %67

56:                                               ; preds = %48
  %57 = load ptr, ptr %5, align 8, !tbaa !5
  %58 = load ptr, ptr %5, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.qhT, ptr %58, i32 0, i32 158
  %60 = load ptr, ptr %59, align 8, !tbaa !18
  %61 = load ptr, ptr %6, align 8, !tbaa !5
  %62 = getelementptr inbounds %struct.facetT, ptr %61, i32 0, i32 14
  %63 = load i32, ptr %62, align 4, !tbaa !19
  %64 = load ptr, ptr %5, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.qhT, ptr %64, i32 0, i32 182
  %66 = load i32, ptr %65, align 8, !tbaa !21
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %57, ptr noundef %60, i32 noundef 6414, ptr noundef @.str.52, i32 noundef %63, i32 noundef %66)
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %67

67:                                               ; preds = %56, %48
  %68 = load ptr, ptr %6, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.facetT, ptr %68, i32 0, i32 13
  %70 = load i32, ptr %69, align 8, !tbaa !22
  %71 = load ptr, ptr %5, align 8, !tbaa !5
  %72 = getelementptr inbounds %struct.qhT, ptr %71, i32 0, i32 217
  %73 = load i32, ptr %72, align 8, !tbaa !23
  %74 = icmp ugt i32 %70, %73
  br i1 %74, label %75, label %89

75:                                               ; preds = %67
  %76 = load ptr, ptr %5, align 8, !tbaa !5
  %77 = load ptr, ptr %5, align 8, !tbaa !5
  %78 = getelementptr inbounds %struct.qhT, ptr %77, i32 0, i32 158
  %79 = load ptr, ptr %78, align 8, !tbaa !18
  %80 = load ptr, ptr %6, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.facetT, ptr %80, i32 0, i32 14
  %82 = load i32, ptr %81, align 4, !tbaa !19
  %83 = load ptr, ptr %5, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.qhT, ptr %83, i32 0, i32 217
  %85 = load i32, ptr %84, align 8, !tbaa !23
  %86 = load ptr, ptr %6, align 8, !tbaa !5
  %87 = getelementptr inbounds %struct.facetT, ptr %86, i32 0, i32 13
  %88 = load i32, ptr %87, align 8, !tbaa !22
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %76, ptr noundef %79, i32 noundef 6415, ptr noundef @.str.53, i32 noundef %82, i32 noundef %85, i32 noundef %88)
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %89

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

96:                                               ; preds = %89
  %97 = load ptr, ptr %5, align 8, !tbaa !5
  %98 = getelementptr inbounds %struct.qhT, ptr %97, i32 0, i32 203
  %99 = load i32, ptr %98, align 4, !tbaa !24
  %100 = icmp ne i32 %99, 0
  br i1 %100, label %111, label %101

101:                                              ; preds = %96
  %102 = load ptr, ptr %5, align 8, !tbaa !5
  %103 = load ptr, ptr %5, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct.qhT, ptr %103, i32 0, i32 158
  %105 = load ptr, ptr %104, align 8, !tbaa !18
  %106 = load ptr, ptr %6, align 8, !tbaa !5
  %107 = getelementptr inbounds %struct.facetT, ptr %106, i32 0, i32 14
  %108 = load i32, ptr %107, align 4, !tbaa !19
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %102, ptr noundef %105, i32 noundef 6119, ptr noundef @.str.54, i32 noundef %108)
  %109 = load ptr, ptr %5, align 8, !tbaa !5
  %110 = load ptr, ptr %6, align 8, !tbaa !5
  call void @qh_errexit(ptr noundef %109, i32 noundef 5, ptr noundef %110, ptr noundef null)
  br label %111

111:                                              ; preds = %101, %96, %89
  %112 = load ptr, ptr %6, 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, 31
  %116 = icmp ne i32 %115, 0
  br i1 %116, label %117, label %139

117:                                              ; preds = %111
  %118 = load ptr, ptr %6, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.facetT, ptr %118, i32 0, i32 15
  %120 = load i32, ptr %119, align 8
  %121 = lshr i32 %120, 11
  %122 = and i32 %121, 1
  %123 = icmp ne i32 %122, 0
  br i1 %123, label %139, label %124

124:                                              ; preds = %117
  %125 = load ptr, ptr %5, align 8, !tbaa !5
  %126 = load ptr, ptr %5, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.qhT, ptr %126, i32 0, i32 222
  %128 = load ptr, ptr %127, align 8, !tbaa !25
  %129 = call i32 @qh_setsize(ptr noundef %125, ptr noundef %128)
  %130 = icmp eq i32 %129, 0
  br i1 %130, label %131, label %139

131:                                              ; preds = %124
  %132 = load ptr, ptr %5, align 8, !tbaa !5
  %133 = load ptr, ptr %5, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.qhT, ptr %133, i32 0, i32 158
  %135 = load ptr, ptr %134, align 8, !tbaa !18
  %136 = load ptr, ptr %6, align 8, !tbaa !5
  %137 = getelementptr inbounds %struct.facetT, ptr %136, i32 0, i32 14
  %138 = load i32, ptr %137, align 4, !tbaa !19
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %132, ptr noundef %135, i32 noundef 6399, ptr noundef @.str.55, i32 noundef %138)
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %139

139:                                              ; preds = %131, %124, %117, %111
  %140 = load ptr, ptr %6, align 8, !tbaa !5
  %141 = getelementptr inbounds %struct.facetT, ptr %140, i32 0, i32 15
  %142 = load i32, ptr %141, align 8
  %143 = lshr i32 %142, 30
  %144 = and i32 %143, 1
  %145 = icmp ne i32 %144, 0
  br i1 %145, label %146, label %168

146:                                              ; preds = %139
  %147 = load ptr, ptr %6, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.facetT, ptr %147, i32 0, i32 15
  %149 = load i32, ptr %148, align 8
  %150 = lshr i32 %149, 11
  %151 = and i32 %150, 1
  %152 = icmp ne i32 %151, 0
  br i1 %152, label %168, label %153

153:                                              ; preds = %146
  %154 = load ptr, ptr %5, align 8, !tbaa !5
  %155 = load ptr, ptr %5, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.qhT, ptr %155, i32 0, i32 222
  %157 = load ptr, ptr %156, align 8, !tbaa !25
  %158 = call i32 @qh_setsize(ptr noundef %154, ptr noundef %157)
  %159 = icmp eq i32 %158, 0
  br i1 %159, label %160, label %168

160:                                              ; preds = %153
  %161 = load ptr, ptr %5, align 8, !tbaa !5
  %162 = load ptr, ptr %5, align 8, !tbaa !5
  %163 = getelementptr inbounds %struct.qhT, ptr %162, i32 0, i32 158
  %164 = load ptr, ptr %163, align 8, !tbaa !18
  %165 = load ptr, ptr %6, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct.facetT, ptr %165, i32 0, i32 14
  %167 = load i32, ptr %166, align 4, !tbaa !19
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %161, ptr noundef %164, i32 noundef 6400, ptr noundef @.str.56, i32 noundef %167)
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %168

168:                                              ; preds = %160, %153, %146, %139
  %169 = load ptr, ptr %6, align 8, !tbaa !5
  %170 = getelementptr inbounds %struct.facetT, ptr %169, i32 0, i32 3
  %171 = load ptr, ptr %170, align 8, !tbaa !26
  %172 = icmp ne ptr %171, null
  br i1 %172, label %181, label %173

173:                                              ; preds = %168
  %174 = load ptr, ptr %5, align 8, !tbaa !5
  %175 = load ptr, ptr %5, align 8, !tbaa !5
  %176 = getelementptr inbounds %struct.qhT, ptr %175, i32 0, i32 158
  %177 = load ptr, ptr %176, align 8, !tbaa !18
  %178 = load ptr, ptr %6, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.facetT, ptr %178, i32 0, i32 14
  %180 = load i32, ptr %179, align 4, !tbaa !19
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %174, ptr noundef %177, i32 noundef 6120, ptr noundef @.str.57, i32 noundef %180)
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %181

181:                                              ; preds = %173, %168
  %182 = load ptr, ptr %6, align 8, !tbaa !5
  %183 = getelementptr inbounds %struct.facetT, ptr %182, i32 0, i32 15
  %184 = load i32, ptr %183, align 8
  %185 = lshr i32 %184, 10
  %186 = and i32 %185, 1
  %187 = icmp ne i32 %186, 0
  br i1 %187, label %245, label %188

188:                                              ; preds = %181
  %189 = load ptr, ptr %6, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.facetT, ptr %189, i32 0, i32 15
  %191 = load i32, ptr %190, align 8
  %192 = lshr i32 %191, 21
  %193 = and i32 %192, 1
  %194 = icmp ne i32 %193, 0
  br i1 %194, label %195, label %216

195:                                              ; preds = %188
  %196 = load ptr, ptr %5, align 8, !tbaa !5
  %197 = load ptr, ptr %5, align 8, !tbaa !5
  %198 = getelementptr inbounds %struct.qhT, ptr %197, i32 0, i32 158
  %199 = load ptr, ptr %198, align 8, !tbaa !18
  %200 = load ptr, ptr %6, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.facetT, ptr %200, i32 0, i32 14
  %202 = load i32, ptr %201, align 4, !tbaa !19
  %203 = load ptr, ptr %5, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.qhT, ptr %203, i32 0, i32 166
  %205 = load ptr, ptr %204, align 8, !tbaa !27
  %206 = icmp ne ptr %205, null
  br i1 %206, label %207, label %213

207:                                              ; preds = %195
  %208 = load ptr, ptr %5, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.qhT, ptr %208, i32 0, i32 166
  %210 = load ptr, ptr %209, align 8, !tbaa !27
  %211 = getelementptr inbounds %struct.facetT, ptr %210, i32 0, i32 14
  %212 = load i32, ptr %211, align 4, !tbaa !19
  br label %214

213:                                              ; preds = %195
  br label %214

214:                                              ; preds = %213, %207
  %215 = phi i32 [ %212, %207 ], [ -1, %213 ]
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %196, ptr noundef %199, i32 noundef 6349, ptr noundef @.str.58, i32 noundef %202, i32 noundef %215)
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %216

216:                                              ; preds = %214, %188
  %217 = load ptr, ptr %6, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.facetT, ptr %217, i32 0, i32 15
  %219 = load i32, ptr %218, align 8
  %220 = lshr i32 %219, 29
  %221 = and i32 %220, 1
  %222 = icmp ne i32 %221, 0
  br i1 %222, label %223, label %244

223:                                              ; preds = %216
  %224 = load ptr, ptr %5, align 8, !tbaa !5
  %225 = load ptr, ptr %5, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.qhT, ptr %225, i32 0, i32 158
  %227 = load ptr, ptr %226, align 8, !tbaa !18
  %228 = load ptr, ptr %6, align 8, !tbaa !5
  %229 = getelementptr inbounds %struct.facetT, ptr %228, i32 0, i32 14
  %230 = load i32, ptr %229, align 4, !tbaa !19
  %231 = load ptr, ptr %5, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.qhT, ptr %231, i32 0, i32 166
  %233 = load ptr, ptr %232, align 8, !tbaa !27
  %234 = icmp ne ptr %233, null
  br i1 %234, label %235, label %241

235:                                              ; preds = %223
  %236 = load ptr, ptr %5, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.qhT, ptr %236, i32 0, i32 166
  %238 = load ptr, ptr %237, align 8, !tbaa !27
  %239 = getelementptr inbounds %struct.facetT, ptr %238, i32 0, i32 14
  %240 = load i32, ptr %239, align 4, !tbaa !19
  br label %242

241:                                              ; preds = %223
  br label %242

242:                                              ; preds = %241, %235
  %243 = phi i32 [ %240, %235 ], [ -1, %241 ]
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %224, ptr noundef %227, i32 noundef 6383, ptr noundef @.str.59, i32 noundef %230, i32 noundef %243)
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %244

244:                                              ; preds = %242, %216
  br label %245

245:                                              ; preds = %244, %181
  %246 = load ptr, ptr %5, align 8, !tbaa !5
  %247 = load ptr, ptr %6, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.facetT, ptr %247, i32 0, i32 8
  %249 = load ptr, ptr %248, align 8, !tbaa !28
  %250 = load ptr, ptr %6, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.facetT, ptr %250, i32 0, i32 14
  %252 = load i32, ptr %251, align 4, !tbaa !19
  call void @qh_setcheck(ptr noundef %246, ptr noundef %249, ptr noundef @.str.60, i32 noundef %252)
  %253 = load ptr, ptr %5, align 8, !tbaa !5
  %254 = load ptr, ptr %6, align 8, !tbaa !5
  %255 = getelementptr inbounds %struct.facetT, ptr %254, i32 0, i32 9
  %256 = load ptr, ptr %255, align 8, !tbaa !29
  %257 = load ptr, ptr %6, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.facetT, ptr %257, i32 0, i32 14
  %259 = load i32, ptr %258, align 4, !tbaa !19
  call void @qh_setcheck(ptr noundef %253, ptr noundef %256, ptr noundef @.str.61, i32 noundef %259)
  %260 = load ptr, ptr %5, align 8, !tbaa !5
  %261 = load ptr, ptr %6, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.facetT, ptr %261, i32 0, i32 11
  %263 = load ptr, ptr %262, align 8, !tbaa !30
  %264 = load ptr, ptr %6, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.facetT, ptr %264, i32 0, i32 14
  %266 = load i32, ptr %265, align 4, !tbaa !19
  call void @qh_setcheck(ptr noundef %260, ptr noundef %263, ptr noundef @.str.62, i32 noundef %266)
  %267 = load ptr, ptr %5, align 8, !tbaa !5
  %268 = load ptr, ptr %6, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.facetT, ptr %268, i32 0, i32 12
  %270 = load ptr, ptr %269, align 8, !tbaa !31
  %271 = load ptr, ptr %6, align 8, !tbaa !5
  %272 = getelementptr inbounds %struct.facetT, ptr %271, i32 0, i32 14
  %273 = load i32, ptr %272, align 4, !tbaa !19
  call void @qh_setcheck(ptr noundef %267, ptr noundef %270, ptr noundef @.str.63, i32 noundef %273)
  %274 = load ptr, ptr %5, align 8, !tbaa !5
  %275 = load ptr, ptr %6, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.facetT, ptr %275, i32 0, i32 10
  %277 = load ptr, ptr %276, align 8, !tbaa !32
  %278 = load ptr, ptr %6, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.facetT, ptr %278, i32 0, i32 14
  %280 = load i32, ptr %279, align 4, !tbaa !19
  call void @qh_setcheck(ptr noundef %274, ptr noundef %277, ptr noundef @.str.64, i32 noundef %280)
  store ptr null, ptr %16, align 8, !tbaa !5
  %281 = load ptr, ptr %6, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.facetT, ptr %281, i32 0, i32 8
  %283 = load ptr, ptr %282, align 8, !tbaa !28
  %284 = icmp ne ptr %283, null
  br i1 %284, label %285, label %339

285:                                              ; preds = %245
  %286 = load ptr, ptr %6, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.facetT, ptr %286, i32 0, i32 8
  %288 = load ptr, ptr %287, align 8, !tbaa !28
  %289 = getelementptr inbounds %struct.setT, ptr %288, i32 0, i32 1
  %290 = getelementptr inbounds [1 x %union.setelemT], ptr %289, i64 0, i64 0
  store ptr %290, ptr %17, align 8, !tbaa !5
  br label %291

291:                                              ; preds = %334, %285
  %292 = load ptr, ptr %17, align 8, !tbaa !5
  %293 = getelementptr inbounds ptr, ptr %292, i32 1
  store ptr %293, ptr %17, align 8, !tbaa !5
  %294 = load ptr, ptr %292, align 8, !tbaa !5
  store ptr %294, ptr %16, align 8, !tbaa !5
  %295 = icmp ne ptr %294, null
  br i1 %295, label %296, label %338

296:                                              ; preds = %291
  %297 = load ptr, ptr %16, align 8, !tbaa !5
  %298 = getelementptr inbounds %struct.vertexT, ptr %297, i32 0, i32 6
  %299 = load i8, ptr %298, align 8
  %300 = lshr i8 %299, 2
  %301 = and i8 %300, 1
  %302 = zext i8 %301 to i32
  %303 = icmp ne i32 %302, 0
  br i1 %303, label %304, label %317

304:                                              ; preds = %296
  %305 = load ptr, ptr %5, align 8, !tbaa !5
  %306 = load ptr, ptr %5, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.qhT, ptr %306, i32 0, i32 158
  %308 = load ptr, ptr %307, align 8, !tbaa !18
  %309 = load ptr, ptr %16, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.vertexT, ptr %309, i32 0, i32 4
  %311 = load i32, ptr %310, align 8, !tbaa !33
  %312 = load ptr, ptr %6, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.facetT, ptr %312, i32 0, i32 14
  %314 = load i32, ptr %313, align 4, !tbaa !19
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %305, ptr noundef %308, i32 noundef 6121, ptr noundef @.str.65, i32 noundef %311, i32 noundef %314)
  %315 = load ptr, ptr %5, align 8, !tbaa !5
  %316 = load ptr, ptr %16, align 8, !tbaa !5
  call void @qh_errprint(ptr noundef %315, ptr noundef @.str.66, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef %316)
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %317

317:                                              ; preds = %304, %296
  %318 = load ptr, ptr %16, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.vertexT, ptr %318, i32 0, i32 4
  %320 = load i32, ptr %319, align 8, !tbaa !33
  %321 = load i32, ptr %18, align 4, !tbaa !9
  %322 = icmp uge i32 %320, %321
  br i1 %322, label %323, label %334

323:                                              ; preds = %317
  %324 = load ptr, ptr %5, align 8, !tbaa !5
  %325 = load ptr, ptr %5, align 8, !tbaa !5
  %326 = getelementptr inbounds %struct.qhT, ptr %325, i32 0, i32 158
  %327 = load ptr, ptr %326, align 8, !tbaa !18
  %328 = load ptr, ptr %6, align 8, !tbaa !5
  %329 = getelementptr inbounds %struct.facetT, ptr %328, i32 0, i32 14
  %330 = load i32, ptr %329, align 4, !tbaa !19
  %331 = load ptr, ptr %16, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.vertexT, ptr %331, i32 0, i32 4
  %333 = load i32, ptr %332, align 8, !tbaa !33
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %324, ptr noundef %327, i32 noundef 6122, ptr noundef @.str.67, i32 noundef %330, i32 noundef %333)
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %338

334:                                              ; preds = %317
  %335 = load ptr, ptr %16, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.vertexT, ptr %335, i32 0, i32 4
  %337 = load i32, ptr %336, align 8, !tbaa !33
  store i32 %337, ptr %18, align 4, !tbaa !9
  br label %291, !llvm.loop !35

338:                                              ; preds = %323, %291
  br label %339

339:                                              ; preds = %338, %245
  %340 = load ptr, ptr %5, align 8, !tbaa !5
  %341 = load ptr, ptr %6, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.facetT, ptr %341, i32 0, i32 10
  %343 = load ptr, ptr %342, align 8, !tbaa !32
  %344 = call i32 @qh_setsize(ptr noundef %340, ptr noundef %343)
  store i32 %344, ptr %19, align 4, !tbaa !9
  %345 = load ptr, ptr %5, align 8, !tbaa !5
  %346 = load ptr, ptr %6, align 8, !tbaa !5
  %347 = getelementptr inbounds %struct.facetT, ptr %346, i32 0, i32 8
  %348 = load ptr, ptr %347, align 8, !tbaa !28
  %349 = call i32 @qh_setsize(ptr noundef %345, ptr noundef %348)
  store i32 %349, ptr %20, align 4, !tbaa !9
  %350 = load ptr, ptr %5, align 8, !tbaa !5
  %351 = load ptr, ptr %6, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.facetT, ptr %351, i32 0, i32 9
  %353 = load ptr, ptr %352, align 8, !tbaa !29
  %354 = call i32 @qh_setsize(ptr noundef %350, ptr noundef %353)
  store i32 %354, ptr %21, align 4, !tbaa !9
  %355 = load ptr, ptr %6, align 8, !tbaa !5
  %356 = getelementptr inbounds %struct.facetT, ptr %355, i32 0, i32 15
  %357 = load i32, ptr %356, align 8
  %358 = lshr i32 %357, 13
  %359 = and i32 %358, 1
  %360 = icmp ne i32 %359, 0
  br i1 %360, label %361, label %401

361:                                              ; preds = %339
  %362 = load i32, ptr %20, align 4, !tbaa !9
  %363 = load i32, ptr %19, align 4, !tbaa !9
  %364 = add nsw i32 %362, %363
  %365 = load ptr, ptr %5, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.qhT, ptr %365, i32 0, i32 110
  %367 = load i32, ptr %366, align 8, !tbaa !11
  %368 = mul nsw i32 2, %367
  %369 = icmp ne i32 %364, %368
  br i1 %369, label %370, label %400

370:                                              ; preds = %361
  %371 = load ptr, ptr %6, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.facetT, ptr %371, i32 0, i32 15
  %373 = load i32, ptr %372, align 8
  %374 = lshr i32 %373, 30
  %375 = and i32 %374, 1
  %376 = icmp ne i32 %375, 0
  br i1 %376, label %400, label %377

377:                                              ; preds = %370
  %378 = load ptr, ptr %6, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.facetT, ptr %378, i32 0, i32 15
  %380 = load i32, ptr %379, align 8
  %381 = lshr i32 %380, 31
  %382 = icmp ne i32 %381, 0
  br i1 %382, label %400, label %383

383:                                              ; preds = %377
  %384 = load ptr, ptr %5, align 8, !tbaa !5
  %385 = load ptr, ptr %5, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.qhT, ptr %385, i32 0, i32 158
  %387 = load ptr, ptr %386, align 8, !tbaa !18
  %388 = load ptr, ptr %6, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.facetT, ptr %388, i32 0, i32 14
  %390 = load i32, ptr %389, align 4, !tbaa !19
  %391 = load i32, ptr %20, align 4, !tbaa !9
  %392 = load i32, ptr %19, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %384, ptr noundef %387, i32 noundef 6123, ptr noundef @.str.68, i32 noundef %390, i32 noundef %391, i32 noundef %392)
  %393 = load ptr, ptr %5, align 8, !tbaa !5
  %394 = load ptr, ptr %5, align 8, !tbaa !5
  %395 = getelementptr inbounds %struct.qhT, ptr %394, i32 0, i32 158
  %396 = load ptr, ptr %395, align 8, !tbaa !18
  %397 = load ptr, ptr %6, align 8, !tbaa !5
  %398 = getelementptr inbounds %struct.facetT, ptr %397, i32 0, i32 10
  %399 = load ptr, ptr %398, align 8, !tbaa !32
  call void @qh_setprint(ptr noundef %393, ptr noundef %396, ptr noundef @.str.4, ptr noundef %399)
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %400

400:                                              ; preds = %383, %377, %370, %361
  br label %495

401:                                              ; preds = %339
  %402 = load i32, ptr %7, align 4, !tbaa !9
  %403 = icmp ne i32 %402, 0
  br i1 %403, label %439, label %404

404:                                              ; preds = %401
  %405 = load i32, ptr %20, align 4, !tbaa !9
  %406 = load ptr, ptr %5, align 8, !tbaa !5
  %407 = getelementptr inbounds %struct.qhT, ptr %406, i32 0, i32 110
  %408 = load i32, ptr %407, align 8, !tbaa !11
  %409 = icmp slt i32 %405, %408
  br i1 %409, label %416, label %410

410:                                              ; preds = %404
  %411 = load i32, ptr %19, align 4, !tbaa !9
  %412 = load ptr, ptr %5, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.qhT, ptr %412, i32 0, i32 110
  %414 = load i32, ptr %413, align 8, !tbaa !11
  %415 = icmp slt i32 %411, %414
  br i1 %415, label %416, label %439

416:                                              ; preds = %410, %404
  %417 = load ptr, ptr %6, align 8, !tbaa !5
  %418 = getelementptr inbounds %struct.facetT, ptr %417, i32 0, i32 15
  %419 = load i32, ptr %418, align 8
  %420 = lshr i32 %419, 30
  %421 = and i32 %420, 1
  %422 = icmp ne i32 %421, 0
  br i1 %422, label %439, label %423

423:                                              ; preds = %416
  %424 = load ptr, ptr %6, align 8, !tbaa !5
  %425 = getelementptr inbounds %struct.facetT, ptr %424, i32 0, i32 15
  %426 = load i32, ptr %425, align 8
  %427 = lshr i32 %426, 31
  %428 = icmp ne i32 %427, 0
  br i1 %428, label %439, label %429

429:                                              ; preds = %423
  %430 = load ptr, ptr %5, align 8, !tbaa !5
  %431 = load ptr, ptr %5, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.qhT, ptr %431, i32 0, i32 158
  %433 = load ptr, ptr %432, align 8, !tbaa !18
  %434 = load ptr, ptr %6, align 8, !tbaa !5
  %435 = getelementptr inbounds %struct.facetT, ptr %434, i32 0, i32 14
  %436 = load i32, ptr %435, align 4, !tbaa !19
  %437 = load i32, ptr %20, align 4, !tbaa !9
  %438 = load i32, ptr %19, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %430, ptr noundef %433, i32 noundef 6124, ptr noundef @.str.69, i32 noundef %436, i32 noundef %437, i32 noundef %438)
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %439

439:                                              ; preds = %429, %423, %416, %410, %401
  %440 = load i32, ptr %21, align 4, !tbaa !9
  %441 = load i32, ptr %19, align 4, !tbaa !9
  %442 = icmp slt i32 %440, %441
  br i1 %442, label %469, label %443

443:                                              ; preds = %439
  %444 = load ptr, ptr %5, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.qhT, ptr %444, i32 0, i32 110
  %446 = load i32, ptr %445, align 8, !tbaa !11
  %447 = icmp eq i32 %446, 3
  br i1 %447, label %448, label %457

448:                                              ; preds = %443
  %449 = load i32, ptr %20, align 4, !tbaa !9
  %450 = load i32, ptr %21, align 4, !tbaa !9
  %451 = icmp sgt i32 %449, %450
  br i1 %451, label %452, label %457

452:                                              ; preds = %448
  %453 = load ptr, ptr %5, align 8, !tbaa !5
  %454 = getelementptr inbounds %struct.qhT, ptr %453, i32 0, i32 202
  %455 = load i32, ptr %454, align 8, !tbaa !37
  %456 = icmp ne i32 %455, 0
  br i1 %456, label %457, label %469

457:                                              ; preds = %452, %448, %443
  %458 = load ptr, ptr %5, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.qhT, ptr %458, i32 0, i32 110
  %460 = load i32, ptr %459, align 8, !tbaa !11
  %461 = icmp eq i32 %460, 2
  br i1 %461, label %462, label %494

462:                                              ; preds = %457
  %463 = load i32, ptr %21, align 4, !tbaa !9
  %464 = load i32, ptr %20, align 4, !tbaa !9
  %465 = add nsw i32 %463, %464
  %466 = load i32, ptr %19, align 4, !tbaa !9
  %467 = add nsw i32 %465, %466
  %468 = icmp ne i32 %467, 6
  br i1 %468, label %469, label %494

469:                                              ; preds = %462, %452, %439
  %470 = load ptr, ptr %6, align 8, !tbaa !5
  %471 = getelementptr inbounds %struct.facetT, ptr %470, i32 0, i32 15
  %472 = load i32, ptr %471, align 8
  %473 = lshr i32 %472, 30
  %474 = and i32 %473, 1
  %475 = icmp ne i32 %474, 0
  br i1 %475, label %493, label %476

476:                                              ; preds = %469
  %477 = load ptr, ptr %6, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.facetT, ptr %477, i32 0, i32 15
  %479 = load i32, ptr %478, align 8
  %480 = lshr i32 %479, 31
  %481 = icmp ne i32 %480, 0
  br i1 %481, label %493, label %482

482:                                              ; preds = %476
  %483 = load ptr, ptr %5, align 8, !tbaa !5
  %484 = load ptr, ptr %5, align 8, !tbaa !5
  %485 = getelementptr inbounds %struct.qhT, ptr %484, i32 0, i32 158
  %486 = load ptr, ptr %485, align 8, !tbaa !18
  %487 = load ptr, ptr %6, align 8, !tbaa !5
  %488 = getelementptr inbounds %struct.facetT, ptr %487, i32 0, i32 14
  %489 = load i32, ptr %488, align 4, !tbaa !19
  %490 = load i32, ptr %21, align 4, !tbaa !9
  %491 = load i32, ptr %19, align 4, !tbaa !9
  %492 = load i32, ptr %20, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %483, ptr noundef %486, i32 noundef 6125, ptr noundef @.str.70, i32 noundef %489, i32 noundef %490, i32 noundef %491, i32 noundef %492)
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %493

493:                                              ; preds = %482, %476, %469
  br label %494

494:                                              ; preds = %493, %462, %457
  br label %495

495:                                              ; preds = %494, %400
  store ptr null, ptr %9, align 8, !tbaa !5
  %496 = load ptr, ptr %6, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct.facetT, ptr %496, i32 0, i32 10
  %498 = load ptr, ptr %497, align 8, !tbaa !32
  %499 = icmp ne ptr %498, null
  br i1 %499, label %500, label %553

500:                                              ; preds = %495
  %501 = load ptr, ptr %6, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.facetT, ptr %501, i32 0, i32 10
  %503 = load ptr, ptr %502, align 8, !tbaa !32
  %504 = getelementptr inbounds %struct.setT, ptr %503, i32 0, i32 1
  %505 = getelementptr inbounds [1 x %union.setelemT], ptr %504, i64 0, i64 0
  store ptr %505, ptr %10, align 8, !tbaa !5
  br label %506

506:                                              ; preds = %546, %500
  %507 = load ptr, ptr %10, align 8, !tbaa !5
  %508 = getelementptr inbounds ptr, ptr %507, i32 1
  store ptr %508, ptr %10, align 8, !tbaa !5
  %509 = load ptr, ptr %507, align 8, !tbaa !5
  store ptr %509, ptr %9, align 8, !tbaa !5
  %510 = icmp ne ptr %509, null
  br i1 %510, label %511, label %552

511:                                              ; preds = %506
  %512 = load ptr, ptr %9, align 8, !tbaa !5
  %513 = icmp eq ptr %512, inttoptr (i64 2 to ptr)
  br i1 %513, label %517, label %514

514:                                              ; preds = %511
  %515 = load ptr, ptr %9, align 8, !tbaa !5
  %516 = icmp eq ptr %515, inttoptr (i64 1 to ptr)
  br i1 %516, label %517, label %527

517:                                              ; preds = %514, %511
  %518 = load ptr, ptr %5, align 8, !tbaa !5
  %519 = load ptr, ptr %5, align 8, !tbaa !5
  %520 = getelementptr inbounds %struct.qhT, ptr %519, i32 0, i32 158
  %521 = load ptr, ptr %520, align 8, !tbaa !18
  %522 = load ptr, ptr %6, align 8, !tbaa !5
  %523 = getelementptr inbounds %struct.facetT, ptr %522, i32 0, i32 14
  %524 = load i32, ptr %523, align 4, !tbaa !19
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %518, ptr noundef %521, i32 noundef 6126, ptr noundef @.str.71, i32 noundef %524)
  %525 = load ptr, ptr %5, align 8, !tbaa !5
  %526 = load ptr, ptr %6, align 8, !tbaa !5
  call void @qh_errexit(ptr noundef %525, i32 noundef 5, ptr noundef %526, ptr noundef null)
  br label %527

527:                                              ; preds = %517, %514
  %528 = load ptr, ptr %9, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.facetT, ptr %528, i32 0, i32 15
  %530 = load i32, ptr %529, align 8
  %531 = lshr i32 %530, 11
  %532 = and i32 %531, 1
  %533 = icmp ne i32 %532, 0
  br i1 %533, label %534, label %546

534:                                              ; preds = %527
  %535 = load ptr, ptr %5, align 8, !tbaa !5
  %536 = load ptr, ptr %5, align 8, !tbaa !5
  %537 = getelementptr inbounds %struct.qhT, ptr %536, i32 0, i32 158
  %538 = load ptr, ptr %537, align 8, !tbaa !18
  %539 = load ptr, ptr %6, align 8, !tbaa !5
  %540 = getelementptr inbounds %struct.facetT, ptr %539, i32 0, i32 14
  %541 = load i32, ptr %540, align 4, !tbaa !19
  %542 = load ptr, ptr %9, align 8, !tbaa !5
  %543 = getelementptr inbounds %struct.facetT, ptr %542, i32 0, i32 14
  %544 = load i32, ptr %543, align 4, !tbaa !19
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %535, ptr noundef %538, i32 noundef 6401, ptr noundef @.str.72, i32 noundef %541, i32 noundef %544)
  %545 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %545, ptr %11, align 8, !tbaa !5
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %546

546:                                              ; preds = %534, %527
  %547 = load ptr, ptr %9, align 8, !tbaa !5
  %548 = getelementptr inbounds %struct.facetT, ptr %547, i32 0, i32 15
  %549 = load i32, ptr %548, align 8
  %550 = and i32 %549, -16385
  %551 = or i32 %550, 16384
  store i32 %551, ptr %548, align 8
  br label %506, !llvm.loop !38

552:                                              ; preds = %506
  br label %553

553:                                              ; preds = %552, %495
  store ptr null, ptr %9, align 8, !tbaa !5
  %554 = load ptr, ptr %6, align 8, !tbaa !5
  %555 = getelementptr inbounds %struct.facetT, ptr %554, i32 0, i32 10
  %556 = load ptr, ptr %555, align 8, !tbaa !32
  %557 = icmp ne ptr %556, null
  br i1 %557, label %558, label %620

558:                                              ; preds = %553
  %559 = load ptr, ptr %6, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.facetT, ptr %559, i32 0, i32 10
  %561 = load ptr, ptr %560, align 8, !tbaa !32
  %562 = getelementptr inbounds %struct.setT, ptr %561, i32 0, i32 1
  %563 = getelementptr inbounds [1 x %union.setelemT], ptr %562, i64 0, i64 0
  store ptr %563, ptr %10, align 8, !tbaa !5
  br label %564

564:                                              ; preds = %613, %558
  %565 = load ptr, ptr %10, align 8, !tbaa !5
  %566 = getelementptr inbounds ptr, ptr %565, i32 1
  store ptr %566, ptr %10, align 8, !tbaa !5
  %567 = load ptr, ptr %565, align 8, !tbaa !5
  store ptr %567, ptr %9, align 8, !tbaa !5
  %568 = icmp ne ptr %567, null
  br i1 %568, label %569, label %619

569:                                              ; preds = %564
  %570 = load ptr, ptr %9, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.facetT, ptr %570, i32 0, i32 10
  %572 = load ptr, ptr %571, align 8, !tbaa !32
  %573 = load ptr, ptr %6, align 8, !tbaa !5
  %574 = call i32 @qh_setin(ptr noundef %572, ptr noundef %573)
  %575 = icmp ne i32 %574, 0
  br i1 %575, label %594, label %576

576:                                              ; preds = %569
  %577 = load ptr, ptr %5, align 8, !tbaa !5
  %578 = load ptr, ptr %5, align 8, !tbaa !5
  %579 = getelementptr inbounds %struct.qhT, ptr %578, i32 0, i32 158
  %580 = load ptr, ptr %579, align 8, !tbaa !18
  %581 = load ptr, ptr %6, align 8, !tbaa !5
  %582 = getelementptr inbounds %struct.facetT, ptr %581, i32 0, i32 14
  %583 = load i32, ptr %582, align 4, !tbaa !19
  %584 = load ptr, ptr %9, align 8, !tbaa !5
  %585 = getelementptr inbounds %struct.facetT, ptr %584, i32 0, i32 14
  %586 = load i32, ptr %585, align 4, !tbaa !19
  %587 = load ptr, ptr %9, align 8, !tbaa !5
  %588 = getelementptr inbounds %struct.facetT, ptr %587, i32 0, i32 14
  %589 = load i32, ptr %588, align 4, !tbaa !19
  %590 = load ptr, ptr %6, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.facetT, ptr %590, i32 0, i32 14
  %592 = load i32, ptr %591, align 4, !tbaa !19
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %577, ptr noundef %580, i32 noundef 6127, ptr noundef @.str.73, i32 noundef %583, i32 noundef %586, i32 noundef %589, i32 noundef %592)
  %593 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %593, ptr %11, align 8, !tbaa !5
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %594

594:                                              ; preds = %576, %569
  %595 = load ptr, ptr %9, align 8, !tbaa !5
  %596 = getelementptr inbounds %struct.facetT, ptr %595, i32 0, i32 15
  %597 = load i32, ptr %596, align 8
  %598 = lshr i32 %597, 14
  %599 = and i32 %598, 1
  %600 = icmp ne i32 %599, 0
  br i1 %600, label %613, label %601

601:                                              ; preds = %594
  %602 = load ptr, ptr %5, align 8, !tbaa !5
  %603 = load ptr, ptr %5, align 8, !tbaa !5
  %604 = getelementptr inbounds %struct.qhT, ptr %603, i32 0, i32 158
  %605 = load ptr, ptr %604, align 8, !tbaa !18
  %606 = load ptr, ptr %6, align 8, !tbaa !5
  %607 = getelementptr inbounds %struct.facetT, ptr %606, i32 0, i32 14
  %608 = load i32, ptr %607, align 4, !tbaa !19
  %609 = load ptr, ptr %9, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct.facetT, ptr %609, i32 0, i32 14
  %611 = load i32, ptr %610, align 4, !tbaa !19
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %602, ptr noundef %605, i32 noundef 6128, ptr noundef @.str.74, i32 noundef %608, i32 noundef %611)
  %612 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %612, ptr %11, align 8, !tbaa !5
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %613

613:                                              ; preds = %601, %594
  %614 = load ptr, ptr %9, align 8, !tbaa !5
  %615 = getelementptr inbounds %struct.facetT, ptr %614, i32 0, i32 15
  %616 = load i32, ptr %615, align 8
  %617 = and i32 %616, -16385
  %618 = or i32 %617, 0
  store i32 %618, ptr %615, align 8
  br label %564, !llvm.loop !39

619:                                              ; preds = %564
  br label %620

620:                                              ; preds = %619, %553
  store ptr null, ptr %12, align 8, !tbaa !5
  %621 = load ptr, ptr %6, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct.facetT, ptr %621, i32 0, i32 9
  %623 = load ptr, ptr %622, align 8, !tbaa !29
  %624 = icmp ne ptr %623, null
  br i1 %624, label %625, label %650

625:                                              ; preds = %620
  %626 = load ptr, ptr %6, align 8, !tbaa !5
  %627 = getelementptr inbounds %struct.facetT, ptr %626, i32 0, i32 9
  %628 = load ptr, ptr %627, align 8, !tbaa !29
  %629 = getelementptr inbounds %struct.setT, ptr %628, i32 0, i32 1
  %630 = getelementptr inbounds [1 x %union.setelemT], ptr %629, i64 0, i64 0
  store ptr %630, ptr %13, align 8, !tbaa !5
  br label %631

631:                                              ; preds = %636, %625
  %632 = load ptr, ptr %13, align 8, !tbaa !5
  %633 = getelementptr inbounds ptr, ptr %632, i32 1
  store ptr %633, ptr %13, align 8, !tbaa !5
  %634 = load ptr, ptr %632, align 8, !tbaa !5
  store ptr %634, ptr %12, align 8, !tbaa !5
  %635 = icmp ne ptr %634, null
  br i1 %635, label %636, label %649

636:                                              ; preds = %631
  %637 = load ptr, ptr %5, align 8, !tbaa !5
  %638 = load ptr, ptr %12, align 8, !tbaa !5
  %639 = getelementptr inbounds %struct.ridgeT, ptr %638, i32 0, i32 0
  %640 = load ptr, ptr %639, align 8, !tbaa !40
  %641 = load ptr, ptr %12, align 8, !tbaa !5
  %642 = getelementptr inbounds %struct.ridgeT, ptr %641, i32 0, i32 3
  %643 = load i32, ptr %642, align 8, !tbaa !42
  call void @qh_setcheck(ptr noundef %637, ptr noundef %640, ptr noundef @.str.75, i32 noundef %643)
  %644 = load ptr, ptr %12, align 8, !tbaa !5
  %645 = getelementptr inbounds %struct.ridgeT, ptr %644, i32 0, i32 4
  %646 = load i8, ptr %645, align 4
  %647 = and i8 %646, -2
  %648 = or i8 %647, 0
  store i8 %648, ptr %645, align 4
  br label %631, !llvm.loop !43

649:                                              ; preds = %631
  br label %650

650:                                              ; preds = %649, %620
  store ptr null, ptr %12, align 8, !tbaa !5
  %651 = load ptr, ptr %6, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.facetT, ptr %651, i32 0, i32 9
  %653 = load ptr, ptr %652, align 8, !tbaa !29
  %654 = icmp ne ptr %653, null
  br i1 %654, label %655, label %836

655:                                              ; preds = %650
  %656 = load ptr, ptr %6, align 8, !tbaa !5
  %657 = getelementptr inbounds %struct.facetT, ptr %656, i32 0, i32 9
  %658 = load ptr, ptr %657, align 8, !tbaa !29
  %659 = getelementptr inbounds %struct.setT, ptr %658, i32 0, i32 1
  %660 = getelementptr inbounds [1 x %union.setelemT], ptr %659, i64 0, i64 0
  store ptr %660, ptr %13, align 8, !tbaa !5
  br label %661

661:                                              ; preds = %834, %655
  %662 = load ptr, ptr %13, align 8, !tbaa !5
  %663 = getelementptr inbounds ptr, ptr %662, i32 1
  store ptr %663, ptr %13, align 8, !tbaa !5
  %664 = load ptr, ptr %662, align 8, !tbaa !5
  store ptr %664, ptr %12, align 8, !tbaa !5
  %665 = icmp ne ptr %664, null
  br i1 %665, label %666, label %835

666:                                              ; preds = %661
  %667 = load ptr, ptr %12, align 8, !tbaa !5
  %668 = getelementptr inbounds %struct.ridgeT, ptr %667, i32 0, i32 4
  %669 = load i8, ptr %668, align 4
  %670 = and i8 %669, 1
  %671 = zext i8 %670 to i32
  %672 = icmp ne i32 %671, 0
  br i1 %672, label %673, label %685

673:                                              ; preds = %666
  %674 = load ptr, ptr %5, align 8, !tbaa !5
  %675 = load ptr, ptr %5, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.qhT, ptr %675, i32 0, i32 158
  %677 = load ptr, ptr %676, align 8, !tbaa !18
  %678 = load ptr, ptr %6, align 8, !tbaa !5
  %679 = getelementptr inbounds %struct.facetT, ptr %678, i32 0, i32 14
  %680 = load i32, ptr %679, align 4, !tbaa !19
  %681 = load ptr, ptr %12, align 8, !tbaa !5
  %682 = getelementptr inbounds %struct.ridgeT, ptr %681, i32 0, i32 3
  %683 = load i32, ptr %682, align 8, !tbaa !42
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %674, ptr noundef %677, i32 noundef 6129, ptr noundef @.str.76, i32 noundef %680, i32 noundef %683)
  %684 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %684, ptr %14, align 8, !tbaa !5
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %685

685:                                              ; preds = %673, %666
  %686 = load ptr, ptr %12, align 8, !tbaa !5
  %687 = getelementptr inbounds %struct.ridgeT, ptr %686, i32 0, i32 4
  %688 = load i8, ptr %687, align 4
  %689 = and i8 %688, -2
  %690 = or i8 %689, 1
  store i8 %690, ptr %687, align 4
  %691 = load ptr, ptr %5, align 8, !tbaa !5
  %692 = load ptr, ptr %12, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.ridgeT, ptr %692, i32 0, i32 0
  %694 = load ptr, ptr %693, align 8, !tbaa !40
  %695 = call i32 @qh_setsize(ptr noundef %691, ptr noundef %694)
  store i32 %695, ptr %22, align 4, !tbaa !9
  %696 = load i32, ptr %22, align 4, !tbaa !9
  %697 = load ptr, ptr %5, align 8, !tbaa !5
  %698 = getelementptr inbounds %struct.qhT, ptr %697, i32 0, i32 110
  %699 = load i32, ptr %698, align 8, !tbaa !11
  %700 = sub nsw i32 %699, 1
  %701 = icmp ne i32 %696, %700
  br i1 %701, label %702, label %719

702:                                              ; preds = %685
  %703 = load ptr, ptr %5, align 8, !tbaa !5
  %704 = load ptr, ptr %5, align 8, !tbaa !5
  %705 = getelementptr inbounds %struct.qhT, ptr %704, i32 0, i32 158
  %706 = load ptr, ptr %705, align 8, !tbaa !18
  %707 = load ptr, ptr %12, align 8, !tbaa !5
  %708 = getelementptr inbounds %struct.ridgeT, ptr %707, i32 0, i32 1
  %709 = load ptr, ptr %708, align 8, !tbaa !44
  %710 = getelementptr inbounds %struct.facetT, ptr %709, i32 0, i32 14
  %711 = load i32, ptr %710, align 4, !tbaa !19
  %712 = load ptr, ptr %12, align 8, !tbaa !5
  %713 = getelementptr inbounds %struct.ridgeT, ptr %712, i32 0, i32 2
  %714 = load ptr, ptr %713, align 8, !tbaa !45
  %715 = getelementptr inbounds %struct.facetT, ptr %714, i32 0, i32 14
  %716 = load i32, ptr %715, align 4, !tbaa !19
  %717 = load i32, ptr %22, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %703, ptr noundef %706, i32 noundef 6130, ptr noundef @.str.77, i32 noundef %711, i32 noundef %716, i32 noundef %717)
  %718 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %718, ptr %14, align 8, !tbaa !5
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %719

719:                                              ; preds = %702, %685
  %720 = load ptr, ptr %12, align 8, !tbaa !5
  %721 = getelementptr inbounds %struct.ridgeT, ptr %720, i32 0, i32 1
  %722 = load ptr, ptr %721, align 8, !tbaa !44
  %723 = load ptr, ptr %6, align 8, !tbaa !5
  %724 = icmp eq ptr %722, %723
  br i1 %724, label %725, label %729

725:                                              ; preds = %719
  %726 = load ptr, ptr %12, align 8, !tbaa !5
  %727 = getelementptr inbounds %struct.ridgeT, ptr %726, i32 0, i32 2
  %728 = load ptr, ptr %727, align 8, !tbaa !45
  br label %733

729:                                              ; preds = %719
  %730 = load ptr, ptr %12, align 8, !tbaa !5
  %731 = getelementptr inbounds %struct.ridgeT, ptr %730, i32 0, i32 1
  %732 = load ptr, ptr %731, align 8, !tbaa !44
  br label %733

733:                                              ; preds = %729, %725
  %734 = phi ptr [ %728, %725 ], [ %732, %729 ]
  store ptr %734, ptr %9, align 8, !tbaa !5
  %735 = load ptr, ptr %9, align 8, !tbaa !5
  %736 = getelementptr inbounds %struct.facetT, ptr %735, i32 0, i32 15
  %737 = load i32, ptr %736, align 8
  %738 = and i32 %737, -16385
  %739 = or i32 %738, 16384
  store i32 %739, ptr %736, align 8
  %740 = load ptr, ptr %6, align 8, !tbaa !5
  %741 = getelementptr inbounds %struct.facetT, ptr %740, i32 0, i32 10
  %742 = load ptr, ptr %741, align 8, !tbaa !32
  %743 = load ptr, ptr %9, align 8, !tbaa !5
  %744 = call i32 @qh_setin(ptr noundef %742, ptr noundef %743)
  %745 = icmp ne i32 %744, 0
  br i1 %745, label %761, label %746

746:                                              ; preds = %733
  %747 = load ptr, ptr %5, align 8, !tbaa !5
  %748 = load ptr, ptr %5, align 8, !tbaa !5
  %749 = getelementptr inbounds %struct.qhT, ptr %748, i32 0, i32 158
  %750 = load ptr, ptr %749, align 8, !tbaa !18
  %751 = load ptr, ptr %6, align 8, !tbaa !5
  %752 = getelementptr inbounds %struct.facetT, ptr %751, i32 0, i32 14
  %753 = load i32, ptr %752, align 4, !tbaa !19
  %754 = load ptr, ptr %9, align 8, !tbaa !5
  %755 = getelementptr inbounds %struct.facetT, ptr %754, i32 0, i32 14
  %756 = load i32, ptr %755, align 4, !tbaa !19
  %757 = load ptr, ptr %12, align 8, !tbaa !5
  %758 = getelementptr inbounds %struct.ridgeT, ptr %757, i32 0, i32 3
  %759 = load i32, ptr %758, align 8, !tbaa !42
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %747, ptr noundef %750, i32 noundef 6131, ptr noundef @.str.78, i32 noundef %753, i32 noundef %756, i32 noundef %759)
  %760 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %760, ptr %14, align 8, !tbaa !5
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %761

761:                                              ; preds = %746, %733
  %762 = load ptr, ptr %6, align 8, !tbaa !5
  %763 = getelementptr inbounds %struct.facetT, ptr %762, i32 0, i32 15
  %764 = load i32, ptr %763, align 8
  %765 = lshr i32 %764, 10
  %766 = and i32 %765, 1
  %767 = icmp ne i32 %766, 0
  br i1 %767, label %834, label %768

768:                                              ; preds = %761
  %769 = load ptr, ptr %9, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.facetT, ptr %769, i32 0, i32 15
  %771 = load i32, ptr %770, align 8
  %772 = lshr i32 %771, 10
  %773 = and i32 %772, 1
  %774 = icmp ne i32 %773, 0
  br i1 %774, label %834, label %775

775:                                              ; preds = %768
  %776 = load ptr, ptr %12, align 8, !tbaa !5
  %777 = getelementptr inbounds %struct.ridgeT, ptr %776, i32 0, i32 4
  %778 = load i8, ptr %777, align 4
  %779 = lshr i8 %778, 1
  %780 = and i8 %779, 1
  %781 = zext i8 %780 to i32
  %782 = icmp ne i32 %781, 0
  %783 = xor i1 %782, true
  %784 = zext i1 %783 to i32
  %785 = load ptr, ptr %12, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.ridgeT, ptr %785, i32 0, i32 4
  %787 = load i8, ptr %786, align 4
  %788 = lshr i8 %787, 2
  %789 = and i8 %788, 1
  %790 = zext i8 %789 to i32
  %791 = or i32 %784, %790
  %792 = load ptr, ptr %12, align 8, !tbaa !5
  %793 = getelementptr inbounds %struct.ridgeT, ptr %792, i32 0, i32 4
  %794 = load i8, ptr %793, align 4
  %795 = lshr i8 %794, 3
  %796 = and i8 %795, 1
  %797 = zext i8 %796 to i32
  %798 = or i32 %791, %797
  %799 = icmp ne i32 %798, 0
  br i1 %799, label %800, label %833

800:                                              ; preds = %775
  %801 = load ptr, ptr %5, align 8, !tbaa !5
  %802 = load ptr, ptr %5, align 8, !tbaa !5
  %803 = getelementptr inbounds %struct.qhT, ptr %802, i32 0, i32 158
  %804 = load ptr, ptr %803, align 8, !tbaa !18
  %805 = load ptr, ptr %12, align 8, !tbaa !5
  %806 = getelementptr inbounds %struct.ridgeT, ptr %805, i32 0, i32 3
  %807 = load i32, ptr %806, align 8, !tbaa !42
  %808 = load ptr, ptr %12, align 8, !tbaa !5
  %809 = getelementptr inbounds %struct.ridgeT, ptr %808, i32 0, i32 4
  %810 = load i8, ptr %809, align 4
  %811 = lshr i8 %810, 2
  %812 = and i8 %811, 1
  %813 = zext i8 %812 to i32
  %814 = load ptr, ptr %12, align 8, !tbaa !5
  %815 = getelementptr inbounds %struct.ridgeT, ptr %814, i32 0, i32 4
  %816 = load i8, ptr %815, align 4
  %817 = lshr i8 %816, 3
  %818 = and i8 %817, 1
  %819 = zext i8 %818 to i32
  %820 = load ptr, ptr %12, align 8, !tbaa !5
  %821 = getelementptr inbounds %struct.ridgeT, ptr %820, i32 0, i32 4
  %822 = load i8, ptr %821, align 4
  %823 = lshr i8 %822, 1
  %824 = and i8 %823, 1
  %825 = zext i8 %824 to i32
  %826 = load ptr, ptr %6, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.facetT, ptr %826, i32 0, i32 14
  %828 = load i32, ptr %827, align 4, !tbaa !19
  %829 = load ptr, ptr %9, align 8, !tbaa !5
  %830 = getelementptr inbounds %struct.facetT, ptr %829, i32 0, i32 14
  %831 = load i32, ptr %830, align 4, !tbaa !19
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %801, ptr noundef %804, i32 noundef 6384, ptr noundef @.str.79, i32 noundef %807, i32 noundef %813, i32 noundef %819, i32 noundef %825, i32 noundef %828, i32 noundef %831)
  %832 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %832, ptr %14, align 8, !tbaa !5
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %833

833:                                              ; preds = %800, %775
  br label %834

834:                                              ; preds = %833, %768, %761
  br label %661, !llvm.loop !46

835:                                              ; preds = %661
  br label %836

836:                                              ; preds = %835, %650
  %837 = load ptr, ptr %6, align 8, !tbaa !5
  %838 = getelementptr inbounds %struct.facetT, ptr %837, i32 0, i32 15
  %839 = load i32, ptr %838, align 8
  %840 = lshr i32 %839, 13
  %841 = and i32 %840, 1
  %842 = icmp ne i32 %841, 0
  br i1 %842, label %1106, label %843

843:                                              ; preds = %836
  store ptr null, ptr %9, align 8, !tbaa !5
  %844 = load ptr, ptr %6, align 8, !tbaa !5
  %845 = getelementptr inbounds %struct.facetT, ptr %844, i32 0, i32 10
  %846 = load ptr, ptr %845, align 8, !tbaa !32
  %847 = icmp ne ptr %846, null
  br i1 %847, label %848, label %1105

848:                                              ; preds = %843
  %849 = load ptr, ptr %6, align 8, !tbaa !5
  %850 = getelementptr inbounds %struct.facetT, ptr %849, i32 0, i32 10
  %851 = load ptr, ptr %850, align 8, !tbaa !32
  %852 = getelementptr inbounds %struct.setT, ptr %851, i32 0, i32 1
  %853 = getelementptr inbounds [1 x %union.setelemT], ptr %852, i64 0, i64 0
  store ptr %853, ptr %10, align 8, !tbaa !5
  br label %854

854:                                              ; preds = %1102, %848
  %855 = load ptr, ptr %10, align 8, !tbaa !5
  %856 = getelementptr inbounds ptr, ptr %855, i32 1
  store ptr %856, ptr %10, align 8, !tbaa !5
  %857 = load ptr, ptr %855, align 8, !tbaa !5
  store ptr %857, ptr %9, align 8, !tbaa !5
  %858 = icmp ne ptr %857, null
  br i1 %858, label %859, label %1104

859:                                              ; preds = %854
  %860 = load ptr, ptr %9, align 8, !tbaa !5
  %861 = getelementptr inbounds %struct.facetT, ptr %860, i32 0, i32 15
  %862 = load i32, ptr %861, align 8
  %863 = lshr i32 %862, 14
  %864 = and i32 %863, 1
  %865 = icmp ne i32 %864, 0
  br i1 %865, label %878, label %866

866:                                              ; preds = %859
  %867 = load ptr, ptr %5, align 8, !tbaa !5
  %868 = load ptr, ptr %5, align 8, !tbaa !5
  %869 = getelementptr inbounds %struct.qhT, ptr %868, i32 0, i32 158
  %870 = load ptr, ptr %869, align 8, !tbaa !18
  %871 = load ptr, ptr %6, align 8, !tbaa !5
  %872 = getelementptr inbounds %struct.facetT, ptr %871, i32 0, i32 14
  %873 = load i32, ptr %872, align 4, !tbaa !19
  %874 = load ptr, ptr %9, align 8, !tbaa !5
  %875 = getelementptr inbounds %struct.facetT, ptr %874, i32 0, i32 14
  %876 = load i32, ptr %875, align 4, !tbaa !19
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %867, ptr noundef %870, i32 noundef 6132, ptr noundef @.str.80, i32 noundef %873, i32 noundef %876)
  %877 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %877, ptr %11, align 8, !tbaa !5
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %878

878:                                              ; preds = %866, %859
  %879 = load ptr, ptr %5, align 8, !tbaa !5
  %880 = load ptr, ptr %6, align 8, !tbaa !5
  %881 = getelementptr inbounds %struct.facetT, ptr %880, i32 0, i32 8
  %882 = load ptr, ptr %881, align 8, !tbaa !28
  %883 = load ptr, ptr %9, align 8, !tbaa !5
  %884 = getelementptr inbounds %struct.facetT, ptr %883, i32 0, i32 8
  %885 = load ptr, ptr %884, align 8, !tbaa !28
  %886 = call ptr @qh_vertexintersect_new(ptr noundef %879, ptr noundef %882, ptr noundef %885)
  store ptr %886, ptr %30, align 8, !tbaa !5
  %887 = load ptr, ptr %5, align 8, !tbaa !5
  %888 = load ptr, ptr %30, align 8, !tbaa !5
  call void @qh_settemppush(ptr noundef %887, ptr noundef %888)
  store ptr null, ptr %16, align 8, !tbaa !5
  %889 = load ptr, ptr %6, align 8, !tbaa !5
  %890 = getelementptr inbounds %struct.facetT, ptr %889, i32 0, i32 8
  %891 = load ptr, ptr %890, align 8, !tbaa !28
  %892 = icmp ne ptr %891, null
  br i1 %892, label %893, label %916

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

899:                                              ; preds = %904, %893
  %900 = load ptr, ptr %17, align 8, !tbaa !5
  %901 = getelementptr inbounds ptr, ptr %900, i32 1
  store ptr %901, ptr %17, align 8, !tbaa !5
  %902 = load ptr, ptr %900, align 8, !tbaa !5
  store ptr %902, ptr %16, align 8, !tbaa !5
  %903 = icmp ne ptr %902, null
  br i1 %903, label %904, label %915

904:                                              ; preds = %899
  %905 = load ptr, ptr %16, align 8, !tbaa !5
  %906 = getelementptr inbounds %struct.vertexT, ptr %905, i32 0, i32 6
  %907 = load i8, ptr %906, align 8
  %908 = and i8 %907, -2
  %909 = or i8 %908, 0
  store i8 %909, ptr %906, align 8
  %910 = load ptr, ptr %16, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct.vertexT, ptr %910, i32 0, i32 6
  %912 = load i8, ptr %911, align 8
  %913 = and i8 %912, -3
  %914 = or i8 %913, 0
  store i8 %914, ptr %911, align 8
  br label %899, !llvm.loop !47

915:                                              ; preds = %899
  br label %916

916:                                              ; preds = %915, %878
  store ptr null, ptr %16, align 8, !tbaa !5
  %917 = load ptr, ptr %30, align 8, !tbaa !5
  %918 = icmp ne ptr %917, null
  br i1 %918, label %919, label %935

919:                                              ; preds = %916
  %920 = load ptr, ptr %30, align 8, !tbaa !5
  %921 = getelementptr inbounds %struct.setT, ptr %920, i32 0, i32 1
  %922 = getelementptr inbounds [1 x %union.setelemT], ptr %921, i64 0, i64 0
  store ptr %922, ptr %17, align 8, !tbaa !5
  br label %923

923:                                              ; preds = %928, %919
  %924 = load ptr, ptr %17, align 8, !tbaa !5
  %925 = getelementptr inbounds ptr, ptr %924, i32 1
  store ptr %925, ptr %17, align 8, !tbaa !5
  %926 = load ptr, ptr %924, align 8, !tbaa !5
  store ptr %926, ptr %16, align 8, !tbaa !5
  %927 = icmp ne ptr %926, null
  br i1 %927, label %928, label %934

928:                                              ; preds = %923
  %929 = load ptr, ptr %16, align 8, !tbaa !5
  %930 = getelementptr inbounds %struct.vertexT, ptr %929, i32 0, i32 6
  %931 = load i8, ptr %930, align 8
  %932 = and i8 %931, -2
  %933 = or i8 %932, 1
  store i8 %933, ptr %930, align 8
  br label %923, !llvm.loop !48

934:                                              ; preds = %923
  br label %935

935:                                              ; preds = %934, %916
  store ptr null, ptr %12, align 8, !tbaa !5
  %936 = load ptr, ptr %6, align 8, !tbaa !5
  %937 = getelementptr inbounds %struct.facetT, ptr %936, i32 0, i32 9
  %938 = load ptr, ptr %937, align 8, !tbaa !29
  %939 = icmp ne ptr %938, null
  br i1 %939, label %940, label %1022

940:                                              ; preds = %935
  %941 = load ptr, ptr %6, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.facetT, ptr %941, i32 0, i32 9
  %943 = load ptr, ptr %942, align 8, !tbaa !29
  %944 = getelementptr inbounds %struct.setT, ptr %943, i32 0, i32 1
  %945 = getelementptr inbounds [1 x %union.setelemT], ptr %944, i64 0, i64 0
  store ptr %945, ptr %13, align 8, !tbaa !5
  br label %946

946:                                              ; preds = %1020, %969, %940
  %947 = load ptr, ptr %13, align 8, !tbaa !5
  %948 = getelementptr inbounds ptr, ptr %947, i32 1
  store ptr %948, ptr %13, align 8, !tbaa !5
  %949 = load ptr, ptr %947, align 8, !tbaa !5
  store ptr %949, ptr %12, align 8, !tbaa !5
  %950 = icmp ne ptr %949, null
  br i1 %950, label %951, label %1021

951:                                              ; preds = %946
  %952 = load ptr, ptr %9, align 8, !tbaa !5
  %953 = load ptr, ptr %12, align 8, !tbaa !5
  %954 = getelementptr inbounds %struct.ridgeT, ptr %953, i32 0, i32 1
  %955 = load ptr, ptr %954, align 8, !tbaa !44
  %956 = load ptr, ptr %6, align 8, !tbaa !5
  %957 = icmp eq ptr %955, %956
  br i1 %957, label %958, label %962

958:                                              ; preds = %951
  %959 = load ptr, ptr %12, align 8, !tbaa !5
  %960 = getelementptr inbounds %struct.ridgeT, ptr %959, i32 0, i32 2
  %961 = load ptr, ptr %960, align 8, !tbaa !45
  br label %966

962:                                              ; preds = %951
  %963 = load ptr, ptr %12, align 8, !tbaa !5
  %964 = getelementptr inbounds %struct.ridgeT, ptr %963, i32 0, i32 1
  %965 = load ptr, ptr %964, align 8, !tbaa !44
  br label %966

966:                                              ; preds = %962, %958
  %967 = phi ptr [ %961, %958 ], [ %965, %962 ]
  %968 = icmp ne ptr %952, %967
  br i1 %968, label %969, label %970

969:                                              ; preds = %966
  br label %946, !llvm.loop !49

970:                                              ; preds = %966
  store ptr null, ptr %16, align 8, !tbaa !5
  %971 = load ptr, ptr %12, align 8, !tbaa !5
  %972 = getelementptr inbounds %struct.ridgeT, ptr %971, i32 0, i32 0
  %973 = load ptr, ptr %972, align 8, !tbaa !40
  %974 = icmp ne ptr %973, null
  br i1 %974, label %975, label %1020

975:                                              ; preds = %970
  %976 = load ptr, ptr %12, align 8, !tbaa !5
  %977 = getelementptr inbounds %struct.ridgeT, ptr %976, i32 0, i32 0
  %978 = load ptr, ptr %977, align 8, !tbaa !40
  %979 = getelementptr inbounds %struct.setT, ptr %978, i32 0, i32 1
  %980 = getelementptr inbounds [1 x %union.setelemT], ptr %979, i64 0, i64 0
  store ptr %980, ptr %17, align 8, !tbaa !5
  br label %981

981:                                              ; preds = %1013, %975
  %982 = load ptr, ptr %17, align 8, !tbaa !5
  %983 = getelementptr inbounds ptr, ptr %982, i32 1
  store ptr %983, ptr %17, align 8, !tbaa !5
  %984 = load ptr, ptr %982, align 8, !tbaa !5
  store ptr %984, ptr %16, align 8, !tbaa !5
  %985 = icmp ne ptr %984, null
  br i1 %985, label %986, label %1019

986:                                              ; preds = %981
  %987 = load ptr, ptr %16, align 8, !tbaa !5
  %988 = getelementptr inbounds %struct.vertexT, ptr %987, i32 0, i32 6
  %989 = load i8, ptr %988, align 8
  %990 = and i8 %989, 1
  %991 = zext i8 %990 to i32
  %992 = icmp ne i32 %991, 0
  br i1 %992, label %1013, label %993

993:                                              ; preds = %986
  %994 = load ptr, ptr %5, align 8, !tbaa !5
  %995 = load ptr, ptr %5, align 8, !tbaa !5
  %996 = getelementptr inbounds %struct.qhT, ptr %995, i32 0, i32 158
  %997 = load ptr, ptr %996, align 8, !tbaa !18
  %998 = load ptr, ptr %16, align 8, !tbaa !5
  %999 = getelementptr inbounds %struct.vertexT, ptr %998, i32 0, i32 4
  %1000 = load i32, ptr %999, align 8, !tbaa !33
  %1001 = load ptr, ptr %12, align 8, !tbaa !5
  %1002 = getelementptr inbounds %struct.ridgeT, ptr %1001, i32 0, i32 3
  %1003 = load i32, ptr %1002, align 8, !tbaa !42
  %1004 = load ptr, ptr %6, align 8, !tbaa !5
  %1005 = getelementptr inbounds %struct.facetT, ptr %1004, i32 0, i32 14
  %1006 = load i32, ptr %1005, align 4, !tbaa !19
  %1007 = load ptr, ptr %9, align 8, !tbaa !5
  %1008 = getelementptr inbounds %struct.facetT, ptr %1007, i32 0, i32 14
  %1009 = load i32, ptr %1008, align 4, !tbaa !19
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %994, ptr noundef %997, i32 noundef 6133, ptr noundef @.str.81, i32 noundef %1000, i32 noundef %1003, i32 noundef %1006, i32 noundef %1009)
  %1010 = load ptr, ptr %5, align 8, !tbaa !5
  %1011 = load ptr, ptr %6, align 8, !tbaa !5
  %1012 = load ptr, ptr %12, align 8, !tbaa !5
  call void @qh_errexit(ptr noundef %1010, i32 noundef 5, ptr noundef %1011, ptr noundef %1012)
  br label %1013

1013:                                             ; preds = %993, %986
  %1014 = load ptr, ptr %16, align 8, !tbaa !5
  %1015 = getelementptr inbounds %struct.vertexT, ptr %1014, i32 0, i32 6
  %1016 = load i8, ptr %1015, align 8
  %1017 = and i8 %1016, -3
  %1018 = or i8 %1017, 2
  store i8 %1018, ptr %1015, align 8
  br label %981, !llvm.loop !50

1019:                                             ; preds = %981
  br label %1020

1020:                                             ; preds = %1019, %970
  br label %946, !llvm.loop !49

1021:                                             ; preds = %946
  br label %1022

1022:                                             ; preds = %1021, %935
  %1023 = load i32, ptr %7, align 4, !tbaa !9
  %1024 = icmp ne i32 %1023, 0
  br i1 %1024, label %1102, label %1025

1025:                                             ; preds = %1022
  store ptr null, ptr %16, align 8, !tbaa !5
  %1026 = load ptr, ptr %30, align 8, !tbaa !5
  %1027 = icmp ne ptr %1026, null
  br i1 %1027, label %1028, label %1101

1028:                                             ; preds = %1025
  %1029 = load ptr, ptr %30, align 8, !tbaa !5
  %1030 = getelementptr inbounds %struct.setT, ptr %1029, i32 0, i32 1
  %1031 = getelementptr inbounds [1 x %union.setelemT], ptr %1030, i64 0, i64 0
  store ptr %1031, ptr %17, align 8, !tbaa !5
  br label %1032

1032:                                             ; preds = %1099, %1028
  %1033 = load ptr, ptr %17, align 8, !tbaa !5
  %1034 = getelementptr inbounds ptr, ptr %1033, i32 1
  store ptr %1034, ptr %17, align 8, !tbaa !5
  %1035 = load ptr, ptr %1033, align 8, !tbaa !5
  store ptr %1035, ptr %16, align 8, !tbaa !5
  %1036 = icmp ne ptr %1035, null
  br i1 %1036, label %1037, label %1100

1037:                                             ; preds = %1032
  %1038 = load ptr, ptr %16, align 8, !tbaa !5
  %1039 = getelementptr inbounds %struct.vertexT, ptr %1038, i32 0, i32 6
  %1040 = load i8, ptr %1039, align 8
  %1041 = lshr i8 %1040, 1
  %1042 = and i8 %1041, 1
  %1043 = zext i8 %1042 to i32
  %1044 = icmp ne i32 %1043, 0
  br i1 %1044, label %1099, label %1045

1045:                                             ; preds = %1037
  %1046 = load ptr, ptr %5, align 8, !tbaa !5
  %1047 = getelementptr inbounds %struct.qhT, ptr %1046, i32 0, i32 39
  %1048 = load i32, ptr %1047, align 4, !tbaa !51
  %1049 = icmp ne i32 %1048, 0
  br i1 %1049, label %1078, label %1050

1050:                                             ; preds = %1045
  %1051 = load ptr, ptr %5, align 8, !tbaa !5
  %1052 = load ptr, ptr %5, align 8, !tbaa !5
  %1053 = getelementptr inbounds %struct.qhT, ptr %1052, i32 0, i32 158
  %1054 = load ptr, ptr %1053, align 8, !tbaa !18
  %1055 = load ptr, ptr %16, align 8, !tbaa !5
  %1056 = getelementptr inbounds %struct.vertexT, ptr %1055, i32 0, i32 4
  %1057 = load i32, ptr %1056, align 8, !tbaa !33
  %1058 = load ptr, ptr %6, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.facetT, ptr %1058, i32 0, i32 14
  %1060 = load i32, ptr %1059, align 4, !tbaa !19
  %1061 = load ptr, ptr %9, align 8, !tbaa !5
  %1062 = getelementptr inbounds %struct.facetT, ptr %1061, i32 0, i32 14
  %1063 = load i32, ptr %1062, align 4, !tbaa !19
  %1064 = load ptr, ptr %5, align 8, !tbaa !5
  %1065 = getelementptr inbounds %struct.qhT, ptr %1064, i32 0, i32 190
  %1066 = load i32, ptr %1065, align 4, !tbaa !52
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %1051, ptr noundef %1054, i32 noundef 6420, ptr noundef @.str.82, i32 noundef %1057, i32 noundef %1060, i32 noundef %1063, i32 noundef %1066)
  %1067 = load ptr, ptr %5, align 8, !tbaa !5
  %1068 = getelementptr inbounds %struct.qhT, ptr %1067, i32 0, i32 21
  %1069 = load i32, ptr %1068, align 8, !tbaa !53
  %1070 = icmp ne i32 %1069, 0
  br i1 %1070, label %1077, label %1071

1071:                                             ; preds = %1050
  %1072 = load ptr, ptr %5, align 8, !tbaa !5
  %1073 = load ptr, ptr %6, align 8, !tbaa !5
  %1074 = load ptr, ptr %9, align 8, !tbaa !5
  %1075 = load ptr, ptr %16, align 8, !tbaa !5
  call void @qh_errprint(ptr noundef %1072, ptr noundef @.str.66, ptr noundef %1073, ptr noundef %1074, ptr noundef null, ptr noundef %1075)
  %1076 = load ptr, ptr %5, align 8, !tbaa !5
  call void @qh_errexit(ptr noundef %1076, i32 noundef 7, ptr noundef null, ptr noundef null)
  br label %1077

1077:                                             ; preds = %1071, %1050
  br label %1098

1078:                                             ; preds = %1045
  %1079 = load ptr, ptr %5, align 8, !tbaa !5
  %1080 = getelementptr inbounds %struct.qhT, ptr %1079, i32 0, i32 29
  %1081 = load i32, ptr %1080, align 8, !tbaa !17
  %1082 = icmp sge i32 %1081, 4
  br i1 %1082, label %1083, label %1097

1083:                                             ; preds = %1078
  %1084 = load ptr, ptr %5, align 8, !tbaa !5
  %1085 = load ptr, ptr %5, align 8, !tbaa !5
  %1086 = getelementptr inbounds %struct.qhT, ptr %1085, i32 0, i32 158
  %1087 = load ptr, ptr %1086, align 8, !tbaa !18
  %1088 = load ptr, ptr %16, align 8, !tbaa !5
  %1089 = getelementptr inbounds %struct.vertexT, ptr %1088, i32 0, i32 4
  %1090 = load i32, ptr %1089, align 8, !tbaa !33
  %1091 = load ptr, ptr %6, align 8, !tbaa !5
  %1092 = getelementptr inbounds %struct.facetT, ptr %1091, i32 0, i32 14
  %1093 = load i32, ptr %1092, align 4, !tbaa !19
  %1094 = load ptr, ptr %9, align 8, !tbaa !5
  %1095 = getelementptr inbounds %struct.facetT, ptr %1094, i32 0, i32 14
  %1096 = load i32, ptr %1095, align 4, !tbaa !19
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %1084, ptr noundef %1087, i32 noundef 4025, ptr noundef @.str.83, i32 noundef %1090, i32 noundef %1093, i32 noundef %1096)
  br label %1097

1097:                                             ; preds = %1083, %1078
  br label %1098

1098:                                             ; preds = %1097, %1077
  br label %1099

1099:                                             ; preds = %1098, %1037
  br label %1032, !llvm.loop !54

1100:                                             ; preds = %1032
  br label %1101

1101:                                             ; preds = %1100, %1025
  br label %1102

1102:                                             ; preds = %1101, %1022
  %1103 = load ptr, ptr %5, align 8, !tbaa !5
  call void @qh_settempfree(ptr noundef %1103, ptr noundef %30)
  br label %854, !llvm.loop !55

1104:                                             ; preds = %854
  br label %1105

1105:                                             ; preds = %1104, %843
  br label %1194

1106:                                             ; preds = %836
  store ptr null, ptr %9, align 8, !tbaa !5
  %1107 = load ptr, ptr %6, align 8, !tbaa !5
  %1108 = getelementptr inbounds %struct.facetT, ptr %1107, i32 0, i32 10
  %1109 = load ptr, ptr %1108, align 8, !tbaa !32
  %1110 = icmp ne ptr %1109, null
  br i1 %1110, label %1111, label %1193

1111:                                             ; preds = %1106
  %1112 = load ptr, ptr %6, align 8, !tbaa !5
  %1113 = getelementptr inbounds %struct.facetT, ptr %1112, i32 0, i32 10
  %1114 = load ptr, ptr %1113, align 8, !tbaa !32
  %1115 = getelementptr inbounds %struct.setT, ptr %1114, i32 0, i32 1
  %1116 = getelementptr inbounds [1 x %union.setelemT], ptr %1115, i64 0, i64 0
  store ptr %1116, ptr %10, align 8, !tbaa !5
  br label %1117

1117:                                             ; preds = %1191, %1111
  %1118 = load ptr, ptr %10, align 8, !tbaa !5
  %1119 = getelementptr inbounds ptr, ptr %1118, i32 1
  store ptr %1119, ptr %10, align 8, !tbaa !5
  %1120 = load ptr, ptr %1118, align 8, !tbaa !5
  store ptr %1120, ptr %9, align 8, !tbaa !5
  %1121 = icmp ne ptr %1120, null
  br i1 %1121, label %1122, label %1192

1122:                                             ; preds = %1117
  %1123 = load ptr, ptr %9, align 8, !tbaa !5
  %1124 = getelementptr inbounds %struct.facetT, ptr %1123, i32 0, i32 15
  %1125 = load i32, ptr %1124, align 8
  %1126 = lshr i32 %1125, 13
  %1127 = and i32 %1126, 1
  %1128 = icmp ne i32 %1127, 0
  br i1 %1128, label %1129, label %1191

1129:                                             ; preds = %1122
  %1130 = load ptr, ptr %6, align 8, !tbaa !5
  %1131 = getelementptr inbounds %struct.facetT, ptr %1130, i32 0, i32 15
  %1132 = load i32, ptr %1131, align 8
  %1133 = lshr i32 %1132, 30
  %1134 = and i32 %1133, 1
  %1135 = icmp ne i32 %1134, 0
  br i1 %1135, label %1191, label %1136

1136:                                             ; preds = %1129
  %1137 = load ptr, ptr %9, align 8, !tbaa !5
  %1138 = getelementptr inbounds %struct.facetT, ptr %1137, i32 0, i32 15
  %1139 = load i32, ptr %1138, align 8
  %1140 = lshr i32 %1139, 30
  %1141 = and i32 %1140, 1
  %1142 = icmp ne i32 %1141, 0
  br i1 %1142, label %1191, label %1143

1143:                                             ; preds = %1136
  %1144 = load ptr, ptr %10, align 8, !tbaa !5
  %1145 = load ptr, ptr %6, align 8, !tbaa !5
  %1146 = getelementptr inbounds %struct.facetT, ptr %1145, i32 0, i32 10
  %1147 = load ptr, ptr %1146, align 8, !tbaa !32
  %1148 = getelementptr inbounds %struct.setT, ptr %1147, i32 0, i32 1
  %1149 = getelementptr inbounds [1 x %union.setelemT], ptr %1148, i64 0, i64 1
  %1150 = ptrtoint ptr %1144 to i64
  %1151 = ptrtoint ptr %1149 to i64
  %1152 = sub i64 %1150, %1151
  %1153 = sdiv exact i64 %1152, 8
  %1154 = trunc i64 %1153 to i32
  store i32 %1154, ptr %24, align 4, !tbaa !9
  %1155 = load ptr, ptr %9, align 8, !tbaa !5
  %1156 = getelementptr inbounds %struct.facetT, ptr %1155, i32 0, i32 10
  %1157 = load ptr, ptr %1156, align 8, !tbaa !32
  %1158 = load ptr, ptr %6, align 8, !tbaa !5
  %1159 = call i32 @qh_setindex(ptr noundef %1157, ptr noundef %1158)
  store i32 %1159, ptr %25, align 4, !tbaa !9
  %1160 = load i32, ptr %24, align 4, !tbaa !9
  %1161 = icmp slt i32 %1160, 0
  br i1 %1161, label %1176, label %1162

1162:                                             ; preds = %1143
  %1163 = load i32, ptr %25, align 4, !tbaa !9
  %1164 = icmp slt i32 %1163, 0
  br i1 %1164, label %1176, label %1165

1165:                                             ; preds = %1162
  %1166 = load ptr, ptr %6, align 8, !tbaa !5
  %1167 = getelementptr inbounds %struct.facetT, ptr %1166, i32 0, i32 8
  %1168 = load ptr, ptr %1167, align 8, !tbaa !28
  %1169 = load i32, ptr %24, align 4, !tbaa !9
  %1170 = load ptr, ptr %9, align 8, !tbaa !5
  %1171 = getelementptr inbounds %struct.facetT, ptr %1170, i32 0, i32 8
  %1172 = load ptr, ptr %1171, align 8, !tbaa !28
  %1173 = load i32, ptr %25, align 4, !tbaa !9
  %1174 = call i32 @qh_setequal_skip(ptr noundef %1168, i32 noundef %1169, ptr noundef %1172, i32 noundef %1173)
  %1175 = icmp ne i32 %1174, 0
  br i1 %1175, label %1190, label %1176

1176:                                             ; preds = %1165, %1162, %1143
  %1177 = load ptr, ptr %5, align 8, !tbaa !5
  %1178 = load ptr, ptr %5, align 8, !tbaa !5
  %1179 = getelementptr inbounds %struct.qhT, ptr %1178, i32 0, i32 158
  %1180 = load ptr, ptr %1179, align 8, !tbaa !18
  %1181 = load ptr, ptr %6, align 8, !tbaa !5
  %1182 = getelementptr inbounds %struct.facetT, ptr %1181, i32 0, i32 14
  %1183 = load i32, ptr %1182, align 4, !tbaa !19
  %1184 = load i32, ptr %24, align 4, !tbaa !9
  %1185 = load ptr, ptr %9, align 8, !tbaa !5
  %1186 = getelementptr inbounds %struct.facetT, ptr %1185, i32 0, i32 14
  %1187 = load i32, ptr %1186, align 4, !tbaa !19
  %1188 = load i32, ptr %25, align 4, !tbaa !9
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %1177, ptr noundef %1180, i32 noundef 6135, ptr noundef @.str.84, i32 noundef %1183, i32 noundef %1184, i32 noundef %1187, i32 noundef %1188)
  %1189 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %1189, ptr %11, align 8, !tbaa !5
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %1190

1190:                                             ; preds = %1176, %1165
  br label %1191

1191:                                             ; preds = %1190, %1136, %1129, %1122
  br label %1117, !llvm.loop !56

1192:                                             ; preds = %1117
  br label %1193

1193:                                             ; preds = %1192, %1106
  br label %1194

1194:                                             ; preds = %1193, %1105
  %1195 = load i32, ptr %7, align 4, !tbaa !9
  %1196 = icmp ne i32 %1195, 0
  br i1 %1196, label %1337, label %1197

1197:                                             ; preds = %1194
  %1198 = load ptr, ptr %5, align 8, !tbaa !5
  %1199 = getelementptr inbounds %struct.qhT, ptr %1198, i32 0, i32 13
  %1200 = load i32, ptr %1199, align 8, !tbaa !57
  %1201 = icmp ne i32 %1200, 0
  br i1 %1201, label %1202, label %1337

1202:                                             ; preds = %1197
  %1203 = load ptr, ptr %5, align 8, !tbaa !5
  %1204 = getelementptr inbounds %struct.qhT, ptr %1203, i32 0, i32 110
  %1205 = load i32, ptr %1204, align 8, !tbaa !11
  %1206 = icmp slt i32 %1205, 5
  br i1 %1206, label %1207, label %1337

1207:                                             ; preds = %1202
  %1208 = load ptr, ptr %5, align 8, !tbaa !5
  %1209 = getelementptr inbounds %struct.qhT, ptr %1208, i32 0, i32 29
  %1210 = load i32, ptr %1209, align 8, !tbaa !17
  %1211 = icmp sgt i32 %1210, 2
  br i1 %1211, label %1217, label %1212

1212:                                             ; preds = %1207
  %1213 = load ptr, ptr %5, align 8, !tbaa !5
  %1214 = getelementptr inbounds %struct.qhT, ptr %1213, i32 0, i32 14
  %1215 = load i32, ptr %1214, align 4, !tbaa !58
  %1216 = icmp ne i32 %1215, 0
  br i1 %1216, label %1217, label %1337

1217:                                             ; preds = %1212, %1207
  store ptr null, ptr %12, align 8, !tbaa !5
  %1218 = load ptr, ptr %6, align 8, !tbaa !5
  %1219 = getelementptr inbounds %struct.facetT, ptr %1218, i32 0, i32 9
  %1220 = load ptr, ptr %1219, align 8, !tbaa !29
  %1221 = icmp ne ptr %1220, null
  br i1 %1221, label %1222, label %1336

1222:                                             ; preds = %1217
  store i32 0, ptr %26, align 4, !tbaa !9
  %1223 = load ptr, ptr %6, align 8, !tbaa !5
  %1224 = getelementptr inbounds %struct.facetT, ptr %1223, i32 0, i32 9
  %1225 = load ptr, ptr %1224, align 8, !tbaa !29
  %1226 = getelementptr inbounds %struct.setT, ptr %1225, i32 0, i32 1
  %1227 = getelementptr inbounds [1 x %union.setelemT], ptr %1226, i64 0, i64 0
  %1228 = load ptr, ptr %1227, align 8, !tbaa !59
  store ptr %1228, ptr %12, align 8, !tbaa !5
  %1229 = load ptr, ptr %5, align 8, !tbaa !5
  %1230 = load ptr, ptr %6, align 8, !tbaa !5
  %1231 = getelementptr inbounds %struct.facetT, ptr %1230, i32 0, i32 9
  %1232 = load ptr, ptr %1231, align 8, !tbaa !29
  %1233 = call i32 @qh_setsize(ptr noundef %1229, ptr noundef %1232)
  store i32 %1233, ptr %27, align 4, !tbaa !9
  br label %1234

1234:                                             ; preds = %1325, %1222
  %1235 = load i32, ptr %26, align 4, !tbaa !9
  %1236 = load i32, ptr %27, align 4, !tbaa !9
  %1237 = icmp slt i32 %1235, %1236
  br i1 %1237, label %1238, label %1335

1238:                                             ; preds = %1234
  %1239 = load ptr, ptr %12, align 8, !tbaa !5
  %1240 = getelementptr inbounds %struct.ridgeT, ptr %1239, i32 0, i32 4
  %1241 = load i8, ptr %1240, align 4
  %1242 = lshr i8 %1241, 3
  %1243 = and i8 %1242, 1
  %1244 = zext i8 %1243 to i32
  %1245 = icmp ne i32 %1244, 0
  br i1 %1245, label %1324, label %1246

1246:                                             ; preds = %1238
  %1247 = load i32, ptr %26, align 4, !tbaa !9
  %1248 = add nsw i32 %1247, 1
  store i32 %1248, ptr %28, align 4, !tbaa !9
  br label %1249

1249:                                             ; preds = %1320, %1246
  %1250 = load i32, ptr %28, align 4, !tbaa !9
  %1251 = load i32, ptr %27, align 4, !tbaa !9
  %1252 = icmp slt i32 %1250, %1251
  br i1 %1252, label %1253, label %1323

1253:                                             ; preds = %1249
  %1254 = load ptr, ptr %6, align 8, !tbaa !5
  %1255 = getelementptr inbounds %struct.facetT, ptr %1254, i32 0, i32 9
  %1256 = load ptr, ptr %1255, align 8, !tbaa !29
  %1257 = getelementptr inbounds %struct.setT, ptr %1256, i32 0, i32 1
  %1258 = load i32, ptr %28, align 4, !tbaa !9
  %1259 = sext i32 %1258 to i64
  %1260 = getelementptr inbounds [1 x %union.setelemT], ptr %1257, i64 0, i64 %1259
  %1261 = load ptr, ptr %1260, align 8, !tbaa !59
  store ptr %1261, ptr %15, align 8, !tbaa !5
  %1262 = load ptr, ptr %12, align 8, !tbaa !5
  %1263 = getelementptr inbounds %struct.ridgeT, ptr %1262, i32 0, i32 0
  %1264 = load ptr, ptr %1263, align 8, !tbaa !40
  %1265 = getelementptr inbounds %struct.setT, ptr %1264, i32 0, i32 1
  %1266 = load i32, ptr %29, align 4, !tbaa !9
  %1267 = sext i32 %1266 to i64
  %1268 = getelementptr inbounds [1 x %union.setelemT], ptr %1265, i64 0, i64 %1267
  %1269 = load ptr, ptr %1268, align 8, !tbaa !59
  %1270 = load ptr, ptr %15, align 8, !tbaa !5
  %1271 = getelementptr inbounds %struct.ridgeT, ptr %1270, i32 0, i32 0
  %1272 = load ptr, ptr %1271, align 8, !tbaa !40
  %1273 = getelementptr inbounds %struct.setT, ptr %1272, i32 0, i32 1
  %1274 = load i32, ptr %29, align 4, !tbaa !9
  %1275 = sext i32 %1274 to i64
  %1276 = getelementptr inbounds [1 x %union.setelemT], ptr %1273, i64 0, i64 %1275
  %1277 = load ptr, ptr %1276, align 8, !tbaa !59
  %1278 = icmp eq ptr %1269, %1277
  br i1 %1278, label %1279, label %1319

1279:                                             ; preds = %1253
  %1280 = load ptr, ptr %12, align 8, !tbaa !5
  %1281 = getelementptr inbounds %struct.ridgeT, ptr %1280, i32 0, i32 0
  %1282 = load ptr, ptr %1281, align 8, !tbaa !40
  %1283 = getelementptr inbounds %struct.setT, ptr %1282, i32 0, i32 1
  %1284 = getelementptr inbounds [1 x %union.setelemT], ptr %1283, i64 0, i64 0
  %1285 = load ptr, ptr %1284, align 8, !tbaa !59
  %1286 = load ptr, ptr %15, align 8, !tbaa !5
  %1287 = getelementptr inbounds %struct.ridgeT, ptr %1286, i32 0, i32 0
  %1288 = load ptr, ptr %1287, align 8, !tbaa !40
  %1289 = getelementptr inbounds %struct.setT, ptr %1288, i32 0, i32 1
  %1290 = getelementptr inbounds [1 x %union.setelemT], ptr %1289, i64 0, i64 0
  %1291 = load ptr, ptr %1290, align 8, !tbaa !59
  %1292 = icmp eq ptr %1285, %1291
  br i1 %1292, label %1293, label %1318

1293:                                             ; preds = %1279
  %1294 = load ptr, ptr %12, align 8, !tbaa !5
  %1295 = getelementptr inbounds %struct.ridgeT, ptr %1294, i32 0, i32 0
  %1296 = load ptr, ptr %1295, align 8, !tbaa !40
  %1297 = load ptr, ptr %15, align 8, !tbaa !5
  %1298 = getelementptr inbounds %struct.ridgeT, ptr %1297, i32 0, i32 0
  %1299 = load ptr, ptr %1298, align 8, !tbaa !40
  %1300 = call i32 @qh_setequal(ptr noundef %1296, ptr noundef %1299)
  %1301 = icmp ne i32 %1300, 0
  br i1 %1301, label %1302, label %1317

1302:                                             ; preds = %1293
  %1303 = load ptr, ptr %5, align 8, !tbaa !5
  %1304 = load ptr, ptr %5, align 8, !tbaa !5
  %1305 = getelementptr inbounds %struct.qhT, ptr %1304, i32 0, i32 158
  %1306 = load ptr, ptr %1305, align 8, !tbaa !18
  %1307 = load ptr, ptr %12, align 8, !tbaa !5
  %1308 = getelementptr inbounds %struct.ridgeT, ptr %1307, i32 0, i32 3
  %1309 = load i32, ptr %1308, align 8, !tbaa !42
  %1310 = load ptr, ptr %15, align 8, !tbaa !5
  %1311 = getelementptr inbounds %struct.ridgeT, ptr %1310, i32 0, i32 3
  %1312 = load i32, ptr %1311, align 8, !tbaa !42
  %1313 = load ptr, ptr %6, align 8, !tbaa !5
  %1314 = getelementptr inbounds %struct.facetT, ptr %1313, i32 0, i32 14
  %1315 = load i32, ptr %1314, align 4, !tbaa !19
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %1303, ptr noundef %1306, i32 noundef 6294, ptr noundef @.str.85, i32 noundef %1309, i32 noundef %1312, i32 noundef %1315)
  %1316 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %1316, ptr %14, align 8, !tbaa !5
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %1317

1317:                                             ; preds = %1302, %1293
  br label %1318

1318:                                             ; preds = %1317, %1279
  br label %1319

1319:                                             ; preds = %1318, %1253
  br label %1320

1320:                                             ; preds = %1319
  %1321 = load i32, ptr %28, align 4, !tbaa !9
  %1322 = add nsw i32 %1321, 1
  store i32 %1322, ptr %28, align 4, !tbaa !9
  br label %1249, !llvm.loop !60

1323:                                             ; preds = %1249
  br label %1324

1324:                                             ; preds = %1323, %1238
  br label %1325

1325:                                             ; preds = %1324
  %1326 = load ptr, ptr %6, align 8, !tbaa !5
  %1327 = getelementptr inbounds %struct.facetT, ptr %1326, i32 0, i32 9
  %1328 = load ptr, ptr %1327, align 8, !tbaa !29
  %1329 = getelementptr inbounds %struct.setT, ptr %1328, i32 0, i32 1
  %1330 = load i32, ptr %26, align 4, !tbaa !9
  %1331 = add nsw i32 %1330, 1
  store i32 %1331, ptr %26, align 4, !tbaa !9
  %1332 = sext i32 %1331 to i64
  %1333 = getelementptr inbounds [1 x %union.setelemT], ptr %1329, i64 0, i64 %1332
  %1334 = load ptr, ptr %1333, align 8, !tbaa !59
  store ptr %1334, ptr %12, align 8, !tbaa !5
  br label %1234, !llvm.loop !61

1335:                                             ; preds = %1234
  br label %1336

1336:                                             ; preds = %1335, %1217
  br label %1337

1337:                                             ; preds = %1336, %1212, %1202, %1197, %1194
  %1338 = load i32, ptr %23, align 4, !tbaa !9
  %1339 = icmp ne i32 %1338, 0
  br i1 %1339, label %1340, label %1346

1340:                                             ; preds = %1337
  %1341 = load ptr, ptr %5, align 8, !tbaa !5
  %1342 = load ptr, ptr %6, align 8, !tbaa !5
  %1343 = load ptr, ptr %11, align 8, !tbaa !5
  %1344 = load ptr, ptr %14, align 8, !tbaa !5
  call void @qh_errprint(ptr noundef %1341, ptr noundef @.str.66, ptr noundef %1342, ptr noundef %1343, ptr noundef %1344, ptr noundef null)
  %1345 = load ptr, ptr %8, align 8, !tbaa !5
  store i32 1, ptr %1345, align 4, !tbaa !9
  br label %1346

1346:                                             ; preds = %1340, %1337
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, 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 8, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 8, 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
  ret void
}

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

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

declare void @qh_setprint(ptr noundef, 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, ptr noundef) #2

declare void @qh_settemppush(ptr noundef, 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, !10, i64 2984, !10, i64 2988, !7, i64 2992, !7, i64 3192, !10, i64 3232, !13, i64 3240, !6, i64 3248, !6, i64 3256, !6, i64 3264, !15, i64 3272, !16, i64 3424}
!13 = !{!"double", !7, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = !{!"qhmemT", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !10, i64 64, !6, i64 72, !6, i64 80, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144}
!16 = !{!"qhstatT", !7, i64 0, !7, i64 1992, !7, i64 2256, !7, i64 4248, !7, i64 4746, !7, i64 4995, !7, i64 5248, !10, i64 5320, !10, i64 5324, !10, i64 5328, !10, i64 5332, !13, i64 5336}
!17 = !{!12, !10, i64 136}
!18 = !{!12, !6, i64 2424}
!19 = !{!20, !10, i64 108}
!20 = !{!"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}
!21 = !{!12, !10, i64 2584}
!22 = !{!20, !10, i64 104}
!23 = !{!12, !10, i64 2784}
!24 = !{!12, !10, i64 2708}
!25 = !{!12, !6, i64 2808}
!26 = !{!20, !6, i64 24}
!27 = !{!12, !6, i64 2480}
!28 = !{!20, !6, i64 64}
!29 = !{!20, !6, i64 72}
!30 = !{!20, !6, i64 88}
!31 = !{!20, !6, i64 96}
!32 = !{!20, !6, i64 80}
!33 = !{!34, !10, i64 32}
!34 = !{!"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}
!35 = distinct !{!35, !36}
!36 = !{!"llvm.loop.mustprogress"}
!37 = !{!12, !10, i64 2704}
!38 = distinct !{!38, !36}
!39 = distinct !{!39, !36}
!40 = !{!41, !6, i64 0}
!41 = !{!"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}
!42 = !{!41, !10, i64 24}
!43 = distinct !{!43, !36}
!44 = !{!41, !6, i64 8}
!45 = !{!41, !6, i64 16}
!46 = distinct !{!46, !36}
!47 = distinct !{!47, !36}
!48 = distinct !{!48, !36}
!49 = distinct !{!49, !36}
!50 = distinct !{!50, !36}
!51 = !{!12, !10, i64 188}
!52 = !{!12, !10, i64 2620}
!53 = !{!12, !10, i64 96}
!54 = distinct !{!54, !36}
!55 = distinct !{!55, !36}
!56 = distinct !{!56, !36}
!57 = !{!12, !10, i64 56}
!58 = !{!12, !10, i64 60}
!59 = !{!7, !7, i64 0}
!60 = distinct !{!60, !36}
!61 = distinct !{!61, !36}


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

%union.setelemT = type { ptr }

@.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 [112 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [99 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, 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, ptr noundef, i32 noundef, ptr noundef, ...) local_unnamed_addr #1

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

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

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

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

17:                                               ; preds = %12, %4
  %18 = getelementptr inbounds i8, ptr %1, i64 108
  %19 = load i32, ptr %18, align 4, !tbaa !17
  %20 = getelementptr inbounds i8, ptr %0, i64 2584
  %21 = load i32, ptr %20, align 8, !tbaa !19
  %.not = icmp ult i32 %19, %21
  br i1 %.not, label %25, label %22

22:                                               ; preds = %17
  %23 = getelementptr inbounds i8, ptr %0, i64 2424
  %24 = load ptr, ptr %23, align 8, !tbaa !16
  tail call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %24, i32 noundef 6414, ptr noundef nonnull @.str.52, i32 noundef %19, i32 noundef %21) #3
  br label %25

25:                                               ; preds = %22, %17
  %.0367 = phi i32 [ 1, %22 ], [ 0, %17 ]
  %26 = getelementptr inbounds i8, ptr %1, i64 104
  %27 = load i32, ptr %26, align 8, !tbaa !20
  %28 = getelementptr inbounds i8, ptr %0, i64 2784
  %29 = load i32, ptr %28, align 8, !tbaa !21
  %30 = icmp ugt i32 %27, %29
  br i1 %30, label %31, label %35

31:                                               ; preds = %25
  %32 = getelementptr inbounds i8, ptr %0, i64 2424
  %33 = load ptr, ptr %32, align 8, !tbaa !16
  %34 = load i32, ptr %18, align 4, !tbaa !17
  tail call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %33, i32 noundef 6415, ptr noundef nonnull @.str.53, i32 noundef %34, i32 noundef %29, i32 noundef %27) #3
  br label %35

35:                                               ; preds = %31, %25
  %.1368 = phi i32 [ 1, %31 ], [ %.0367, %25 ]
  %36 = getelementptr inbounds i8, ptr %1, i64 112
  %37 = load i32, ptr %36, align 8
  %38 = and i32 %37, 2048
  %.not441 = icmp eq i32 %38, 0
  br i1 %.not441, label %46, label %39

39:                                               ; preds = %35
  %40 = getelementptr inbounds i8, ptr %0, i64 2708
  %41 = load i32, ptr %40, align 4, !tbaa !22
  %.not442 = icmp eq i32 %41, 0
  br i1 %.not442, label %42, label %46

42:                                               ; preds = %39
  %43 = getelementptr inbounds i8, ptr %0, i64 2424
  %44 = load ptr, ptr %43, align 8, !tbaa !16
  %45 = load i32, ptr %18, align 4, !tbaa !17
  tail call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %44, i32 noundef 6119, ptr noundef nonnull @.str.54, i32 noundef %45) #3
  tail call void @qh_errexit(ptr noundef nonnull %0, i32 noundef 5, ptr noundef nonnull %1, ptr noundef null) #3
  %.pre = load i32, ptr %36, align 8
  br label %46

46:                                               ; preds = %42, %39, %35
  %47 = phi i32 [ %.pre, %42 ], [ %37, %39 ], [ %37, %35 ]
  %48 = and i32 %47, -2147481600
  %or.cond528 = icmp eq i32 %48, -2147483648
  br i1 %or.cond528, label %49, label %58

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

54:                                               ; preds = %49
  %55 = getelementptr inbounds i8, ptr %0, i64 2424
  %56 = load ptr, ptr %55, align 8, !tbaa !16
  %57 = load i32, ptr %18, align 4, !tbaa !17
  tail call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %56, i32 noundef 6399, ptr noundef nonnull @.str.55, i32 noundef %57) #3
  br label %58

58:                                               ; preds = %54, %49, %46
  %.2369 = phi i32 [ 1, %54 ], [ %.1368, %49 ], [ %.1368, %46 ]
  %59 = load i32, ptr %36, align 8
  %60 = and i32 %59, 1073743872
  %or.cond529 = icmp eq i32 %60, 1073741824
  br i1 %or.cond529, label %61, label %70

61:                                               ; preds = %58
  %62 = getelementptr inbounds i8, ptr %0, i64 2808
  %63 = load ptr, ptr %62, align 8, !tbaa !23
  %64 = tail call i32 @qh_setsize(ptr noundef nonnull %0, ptr noundef %63) #3
  %65 = icmp eq i32 %64, 0
  br i1 %65, label %66, label %70

66:                                               ; preds = %61
  %67 = getelementptr inbounds i8, ptr %0, i64 2424
  %68 = load ptr, ptr %67, align 8, !tbaa !16
  %69 = load i32, ptr %18, align 4, !tbaa !17
  tail call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %68, i32 noundef 6400, ptr noundef nonnull @.str.56, i32 noundef %69) #3
  br label %70

70:                                               ; preds = %66, %61, %58
  %.3370 = phi i32 [ 1, %66 ], [ %.2369, %61 ], [ %.2369, %58 ]
  %71 = getelementptr inbounds i8, ptr %1, i64 24
  %72 = load ptr, ptr %71, align 8, !tbaa !24
  %.not447 = icmp eq ptr %72, null
  br i1 %.not447, label %73, label %77

73:                                               ; preds = %70
  %74 = getelementptr inbounds i8, ptr %0, i64 2424
  %75 = load ptr, ptr %74, align 8, !tbaa !16
  %76 = load i32, ptr %18, align 4, !tbaa !17
  tail call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %75, i32 noundef 6120, ptr noundef nonnull @.str.57, i32 noundef %76) #3
  br label %77

77:                                               ; preds = %73, %70
  %.4371 = phi i32 [ %.3370, %70 ], [ 1, %73 ]
  %78 = load i32, ptr %36, align 8
  %79 = and i32 %78, 1024
  %.not448 = icmp eq i32 %79, 0
  br i1 %.not448, label %80, label %107

80:                                               ; preds = %77
  %81 = and i32 %78, 2097152
  %.not449 = icmp eq i32 %81, 0
  br i1 %.not449, label %93, label %82

82:                                               ; preds = %80
  %83 = getelementptr inbounds i8, ptr %0, i64 2424
  %84 = load ptr, ptr %83, align 8, !tbaa !16
  %85 = load i32, ptr %18, align 4, !tbaa !17
  %86 = getelementptr inbounds i8, ptr %0, i64 2480
  %87 = load ptr, ptr %86, align 8, !tbaa !25
  %.not450 = icmp eq ptr %87, null
  br i1 %.not450, label %91, label %88

88:                                               ; preds = %82
  %89 = getelementptr inbounds i8, ptr %87, i64 108
  %90 = load i32, ptr %89, align 4, !tbaa !17
  br label %91

91:                                               ; preds = %82, %88
  %92 = phi i32 [ %90, %88 ], [ -1, %82 ]
  tail call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %84, i32 noundef 6349, ptr noundef nonnull @.str.58, i32 noundef %85, i32 noundef %92) #3
  %.pre653 = load i32, ptr %36, align 8
  br label %93

93:                                               ; preds = %91, %80
  %94 = phi i32 [ %.pre653, %91 ], [ %78, %80 ]
  %.5372 = phi i32 [ 1, %91 ], [ %.4371, %80 ]
  %95 = and i32 %94, 536870912
  %.not451 = icmp eq i32 %95, 0
  br i1 %.not451, label %107, label %96

96:                                               ; preds = %93
  %97 = getelementptr inbounds i8, ptr %0, i64 2424
  %98 = load ptr, ptr %97, align 8, !tbaa !16
  %99 = load i32, ptr %18, align 4, !tbaa !17
  %100 = getelementptr inbounds i8, ptr %0, i64 2480
  %101 = load ptr, ptr %100, align 8, !tbaa !25
  %.not452 = icmp eq ptr %101, null
  br i1 %.not452, label %105, label %102

102:                                              ; preds = %96
  %103 = getelementptr inbounds i8, ptr %101, i64 108
  %104 = load i32, ptr %103, align 4, !tbaa !17
  br label %105

105:                                              ; preds = %96, %102
  %106 = phi i32 [ %104, %102 ], [ -1, %96 ]
  tail call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %98, i32 noundef 6383, ptr noundef nonnull @.str.59, i32 noundef %99, i32 noundef %106) #3
  br label %107

107:                                              ; preds = %93, %105, %77
  %.6373 = phi i32 [ %.4371, %77 ], [ 1, %105 ], [ %.5372, %93 ]
  %108 = getelementptr inbounds i8, ptr %1, i64 64
  %109 = load ptr, ptr %108, align 8, !tbaa !26
  %110 = load i32, ptr %18, align 4, !tbaa !17
  tail call void @qh_setcheck(ptr noundef nonnull %0, ptr noundef %109, ptr noundef nonnull @.str.60, i32 noundef %110) #3
  %111 = getelementptr inbounds i8, ptr %1, i64 72
  %112 = load ptr, ptr %111, align 8, !tbaa !27
  %113 = load i32, ptr %18, align 4, !tbaa !17
  tail call void @qh_setcheck(ptr noundef nonnull %0, ptr noundef %112, ptr noundef nonnull @.str.61, i32 noundef %113) #3
  %114 = getelementptr inbounds i8, ptr %1, i64 88
  %115 = load ptr, ptr %114, align 8, !tbaa !28
  %116 = load i32, ptr %18, align 4, !tbaa !17
  tail call void @qh_setcheck(ptr noundef nonnull %0, ptr noundef %115, ptr noundef nonnull @.str.62, i32 noundef %116) #3
  %117 = getelementptr inbounds i8, ptr %1, i64 96
  %118 = load ptr, ptr %117, align 8, !tbaa !29
  %119 = load i32, ptr %18, align 4, !tbaa !17
  tail call void @qh_setcheck(ptr noundef nonnull %0, ptr noundef %118, ptr noundef nonnull @.str.63, i32 noundef %119) #3
  %120 = getelementptr inbounds i8, ptr %1, i64 80
  %121 = load ptr, ptr %120, align 8, !tbaa !30
  %122 = load i32, ptr %18, align 4, !tbaa !17
  tail call void @qh_setcheck(ptr noundef nonnull %0, ptr noundef %121, ptr noundef nonnull @.str.64, i32 noundef %122) #3
  %123 = load ptr, ptr %108, align 8, !tbaa !26
  %.not453 = icmp eq ptr %123, null
  br i1 %.not453, label %.loopexit564, label %.preheader563

.preheader563:                                    ; preds = %107
  %124 = getelementptr inbounds i8, ptr %0, i64 2424
  br label %125

125:                                              ; preds = %.preheader563, %136
  %.pn = phi ptr [ %.0394, %136 ], [ %123, %.preheader563 ]
  %.0393 = phi i32 [ %138, %136 ], [ 2147483647, %.preheader563 ]
  %.7374 = phi i32 [ %.8375, %136 ], [ %.6373, %.preheader563 ]
  %.0394 = getelementptr inbounds i8, ptr %.pn, i64 8
  %126 = load ptr, ptr %.0394, align 8, !tbaa !31
  %.not454 = icmp eq ptr %126, null
  br i1 %.not454, label %.loopexit564, label %127

127:                                              ; preds = %125
  %128 = getelementptr inbounds i8, ptr %126, i64 40
  %129 = load i8, ptr %128, align 8
  %130 = and i8 %129, 4
  %.not455 = icmp eq i8 %130, 0
  br i1 %.not455, label %136, label %131

131:                                              ; preds = %127
  %132 = load ptr, ptr %124, align 8, !tbaa !16
  %133 = getelementptr inbounds i8, ptr %126, i64 32
  %134 = load i32, ptr %133, align 8, !tbaa !32
  %135 = load i32, ptr %18, align 4, !tbaa !17
  tail call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, ptr noundef %132, i32 noundef 6121, ptr noundef nonnull @.str.65, i32 noundef %134, i32 noundef %135) #3
  tail call void @qh_errprint(ptr noundef %0, ptr noundef nonnull @.str.66, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef nonnull %126) #3
  br label %136

136:                                              ; preds = %131, %127
  %.8375 = phi i32 [ 1, %131 ], [ %.7374, %127 ]
  %137 = getelementptr inbounds i8, ptr %126, i64 32
  %138 = load i32, ptr %137, align 8, !tbaa !32
  %.not456 = icmp ult i32 %138, %.0393
  br i1 %.not456, label %125, label %139, !llvm.loop !34

139:                                              ; preds = %136
  %140 = load ptr, ptr %124, align 8, !tbaa !16
  %141 = load i32, ptr %18, align 4, !tbaa !17
  tail call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, ptr noundef %140, i32 noundef 6122, ptr noundef nonnull @.str.67, i32 noundef %141, i32 noundef %138) #3
  br label %.loopexit564

.loopexit564:                                     ; preds = %125, %139, %107
  %.9376 = phi i32 [ 1, %139 ], [ %.6373, %107 ], [ %.7374, %125 ]
  %142 = load ptr, ptr %120, align 8, !tbaa !30
  %143 = tail call i32 @qh_setsize(ptr noundef %0, ptr noundef %142) #3
  %144 = load ptr, ptr %108, align 8, !tbaa !26
  %145 = tail call i32 @qh_setsize(ptr noundef %0, ptr noundef %144) #3
  %146 = load ptr, ptr %111, align 8, !tbaa !27
  %147 = tail call i32 @qh_setsize(ptr noundef %0, ptr noundef %146) #3
  %148 = load i32, ptr %36, align 8
  %149 = and i32 %148, 8192
  %.not457 = icmp eq i32 %149, 0
  br i1 %.not457, label %161, label %150

150:                                              ; preds = %.loopexit564
  %151 = add nsw i32 %145, %143
  %152 = load i32, ptr %6, align 8, !tbaa !5
  %153 = shl nsw i32 %152, 1
  %.not465 = icmp ne i32 %151, %153
  %154 = icmp ult i32 %148, 1073741824
  %or.cond531 = and i1 %154, %.not465
  br i1 %or.cond531, label %155, label %.thread

155:                                              ; preds = %150
  %156 = getelementptr inbounds i8, ptr %0, i64 2424
  %157 = load ptr, ptr %156, align 8, !tbaa !16
  %158 = load i32, ptr %18, align 4, !tbaa !17
  tail call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %157, i32 noundef 6123, ptr noundef nonnull @.str.68, i32 noundef %158, i32 noundef %145, i32 noundef %143) #3
  %159 = load ptr, ptr %156, align 8, !tbaa !16
  %160 = load ptr, ptr %120, align 8, !tbaa !30
  tail call void @qh_setprint(ptr noundef nonnull %0, ptr noundef %159, ptr noundef nonnull @.str.4, ptr noundef %160) #3
  br label %.thread

161:                                              ; preds = %.loopexit564
  %.not458 = icmp eq i32 %2, 0
  br i1 %.not458, label %162, label %170

162:                                              ; preds = %161
  %163 = load i32, ptr %6, align 8, !tbaa !5
  %164 = icmp slt i32 %145, %163
  %165 = icmp slt i32 %143, %163
  %or.cond532 = select i1 %164, i1 true, i1 %165
  %or.cond533 = icmp ult i32 %148, 1073741824
  %or.cond545 = and i1 %or.cond533, %or.cond532
  br i1 %or.cond545, label %166, label %170

166:                                              ; preds = %162
  %167 = getelementptr inbounds i8, ptr %0, i64 2424
  %168 = load ptr, ptr %167, align 8, !tbaa !16
  %169 = load i32, ptr %18, align 4, !tbaa !17
  tail call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %168, i32 noundef 6124, ptr noundef nonnull @.str.69, i32 noundef %169, i32 noundef %145, i32 noundef %143) #3
  br label %170

170:                                              ; preds = %162, %166, %161
  %.10377 = phi i32 [ %.9376, %161 ], [ 1, %166 ], [ %.9376, %162 ]
  %171 = icmp slt i32 %147, %143
  br i1 %171, label %184, label %172

172:                                              ; preds = %170
  %173 = load i32, ptr %6, align 8, !tbaa !5
  %174 = icmp eq i32 %173, 3
  %175 = icmp sgt i32 %145, %147
  %or.cond534 = select i1 %174, i1 %175, i1 false
  br i1 %or.cond534, label %176, label %179

176:                                              ; preds = %172
  %177 = getelementptr inbounds i8, ptr %0, i64 2704
  %178 = load i32, ptr %177, align 8, !tbaa !36
  %.not461 = icmp eq i32 %178, 0
  br i1 %.not461, label %184, label %.thread

179:                                              ; preds = %172
  %180 = icmp eq i32 %173, 2
  br i1 %180, label %181, label %.thread

181:                                              ; preds = %179
  %182 = add i32 %145, %143
  %183 = add i32 %182, %147
  %.not462 = icmp eq i32 %183, 6
  br i1 %.not462, label %.thread, label %184

184:                                              ; preds = %181, %176, %170
  %185 = load i32, ptr %36, align 8
  %or.cond535 = icmp ult i32 %185, 1073741824
  br i1 %or.cond535, label %186, label %.thread

186:                                              ; preds = %184
  %187 = getelementptr inbounds i8, ptr %0, i64 2424
  %188 = load ptr, ptr %187, align 8, !tbaa !16
  %189 = load i32, ptr %18, align 4, !tbaa !17
  tail call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, ptr noundef %188, i32 noundef 6125, ptr noundef nonnull @.str.70, i32 noundef %189, i32 noundef %147, i32 noundef %143, i32 noundef %145) #3
  br label %.thread

.thread:                                          ; preds = %176, %179, %181, %186, %184, %150, %155
  %.11378 = phi i32 [ 1, %155 ], [ %.9376, %150 ], [ %.10377, %184 ], [ 1, %186 ], [ %.10377, %181 ], [ %.10377, %179 ], [ %.10377, %176 ]
  %190 = load ptr, ptr %120, align 8, !tbaa !30
  %.not468 = icmp eq ptr %190, null
  br i1 %.not468, label %.thread537, label %.preheader562

.preheader562:                                    ; preds = %.thread
  %.0360566 = getelementptr inbounds i8, ptr %190, i64 8
  %191 = load ptr, ptr %.0360566, align 8, !tbaa !31
  %.not470567 = icmp eq ptr %191, null
  br i1 %.not470567, label %.preheader561, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader562
  %192 = getelementptr inbounds i8, ptr %0, i64 2424
  br label %193

193:                                              ; preds = %.lr.ph, %207
  %194 = phi ptr [ %191, %.lr.ph ], [ %210, %207 ]
  %.0360570 = phi ptr [ %.0360566, %.lr.ph ], [ %.0360, %207 ]
  %.0362569 = phi ptr [ null, %.lr.ph ], [ %.1363, %207 ]
  %.12568 = phi i32 [ %.11378, %.lr.ph ], [ %.13, %207 ]
  %switch = icmp ult ptr %194, inttoptr (i64 3 to ptr)
  br i1 %switch, label %195, label %198

195:                                              ; preds = %193
  %196 = load ptr, ptr %192, align 8, !tbaa !16
  %197 = load i32, ptr %18, align 4, !tbaa !17
  tail call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, ptr noundef %196, i32 noundef 6126, ptr noundef nonnull @.str.71, i32 noundef %197) #3
  tail call void @qh_errexit(ptr noundef %0, i32 noundef 5, ptr noundef %1, ptr noundef null) #3
  br label %198

198:                                              ; preds = %193, %195
  %199 = getelementptr inbounds i8, ptr %194, i64 112
  %200 = load i32, ptr %199, align 8
  %201 = and i32 %200, 2048
  %.not527 = icmp eq i32 %201, 0
  br i1 %.not527, label %207, label %202

202:                                              ; preds = %198
  %203 = load ptr, ptr %192, align 8, !tbaa !16
  %204 = load i32, ptr %18, align 4, !tbaa !17
  %205 = getelementptr inbounds i8, ptr %194, i64 108
  %206 = load i32, ptr %205, align 4, !tbaa !17
  tail call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, ptr noundef %203, i32 noundef 6401, ptr noundef nonnull @.str.72, i32 noundef %204, i32 noundef %206) #3
  %.pre654 = load i32, ptr %199, align 8
  br label %207

207:                                              ; preds = %202, %198
  %208 = phi i32 [ %.pre654, %202 ], [ %200, %198 ]
  %.13 = phi i32 [ 1, %202 ], [ %.12568, %198 ]
  %.1363 = phi ptr [ %194, %202 ], [ %.0362569, %198 ]
  %209 = or i32 %208, 16384
  store i32 %209, ptr %199, align 8
  %.0360 = getelementptr inbounds i8, ptr %.0360570, i64 8
  %210 = load ptr, ptr %.0360, align 8, !tbaa !31
  %.not470 = icmp eq ptr %210, null
  br i1 %.not470, label %._crit_edge, label %193, !llvm.loop !37

._crit_edge:                                      ; preds = %207
  %.pr.pre = load ptr, ptr %120, align 8, !tbaa !30
  %.not471 = icmp eq ptr %.pr.pre, null
  br i1 %.not471, label %.thread537, label %.preheader561

.preheader561:                                    ; preds = %.preheader562, %._crit_edge
  %.0362.lcssa668 = phi ptr [ %.1363, %._crit_edge ], [ null, %.preheader562 ]
  %.12.lcssa667 = phi i32 [ %.13, %._crit_edge ], [ %.11378, %.preheader562 ]
  %.pr666 = phi ptr [ %.pr.pre, %._crit_edge ], [ %190, %.preheader562 ]
  %.1572 = getelementptr inbounds i8, ptr %.pr666, i64 8
  %211 = load ptr, ptr %.1572, align 8, !tbaa !31
  %.not473573 = icmp eq ptr %211, null
  br i1 %.not473573, label %.thread537, label %.lr.ph577

.lr.ph577:                                        ; preds = %.preheader561
  %212 = getelementptr inbounds i8, ptr %0, i64 2424
  br label %213

213:                                              ; preds = %.lr.ph577, %232
  %214 = phi ptr [ %211, %.lr.ph577 ], [ %235, %232 ]
  %.1576 = phi ptr [ %.1572, %.lr.ph577 ], [ %.1, %232 ]
  %.3365575 = phi ptr [ %.0362.lcssa668, %.lr.ph577 ], [ %.5, %232 ]
  %.15574 = phi i32 [ %.12.lcssa667, %.lr.ph577 ], [ %.17, %232 ]
  %215 = getelementptr inbounds i8, ptr %214, i64 80
  %216 = load ptr, ptr %215, align 8, !tbaa !30
  %217 = tail call i32 @qh_setin(ptr noundef %216, ptr noundef %1) #3
  %.not525 = icmp eq i32 %217, 0
  br i1 %.not525, label %218, label %223

218:                                              ; preds = %213
  %219 = load ptr, ptr %212, align 8, !tbaa !16
  %220 = load i32, ptr %18, align 4, !tbaa !17
  %221 = getelementptr inbounds i8, ptr %214, i64 108
  %222 = load i32, ptr %221, align 4, !tbaa !17
  tail call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, ptr noundef %219, i32 noundef 6127, ptr noundef nonnull @.str.73, i32 noundef %220, i32 noundef %222, i32 noundef %222, i32 noundef %220) #3
  br label %223

223:                                              ; preds = %218, %213
  %.16 = phi i32 [ %.15574, %213 ], [ 1, %218 ]
  %.4 = phi ptr [ %.3365575, %213 ], [ %214, %218 ]
  %224 = getelementptr inbounds i8, ptr %214, i64 112
  %225 = load i32, ptr %224, align 8
  %226 = and i32 %225, 16384
  %.not526 = icmp eq i32 %226, 0
  br i1 %.not526, label %227, label %232

227:                                              ; preds = %223
  %228 = load ptr, ptr %212, align 8, !tbaa !16
  %229 = load i32, ptr %18, align 4, !tbaa !17
  %230 = getelementptr inbounds i8, ptr %214, i64 108
  %231 = load i32, ptr %230, align 4, !tbaa !17
  tail call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, ptr noundef %228, i32 noundef 6128, ptr noundef nonnull @.str.74, i32 noundef %229, i32 noundef %231) #3
  %.pre656 = load i32, ptr %224, align 8
  br label %232

232:                                              ; preds = %227, %223
  %233 = phi i32 [ %225, %223 ], [ %.pre656, %227 ]
  %.17 = phi i32 [ %.16, %223 ], [ 1, %227 ]
  %.5 = phi ptr [ %.4, %223 ], [ %214, %227 ]
  %234 = and i32 %233, -16385
  store i32 %234, ptr %224, align 8
  %.1 = getelementptr inbounds i8, ptr %.1576, i64 8
  %235 = load ptr, ptr %.1, align 8, !tbaa !31
  %.not473 = icmp eq ptr %235, null
  br i1 %.not473, label %.thread537, label %213, !llvm.loop !38

.thread537:                                       ; preds = %232, %.preheader561, %.thread, %._crit_edge
  %.18 = phi i32 [ %.13, %._crit_edge ], [ %.11378, %.thread ], [ %.12.lcssa667, %.preheader561 ], [ %.17, %232 ]
  %.6 = phi ptr [ %.1363, %._crit_edge ], [ null, %.thread ], [ %.0362.lcssa668, %.preheader561 ], [ %.5, %232 ]
  %236 = load ptr, ptr %111, align 8, !tbaa !27
  %.not474 = icmp eq ptr %236, null
  br i1 %.not474, label %.thread543, label %.preheader560

.preheader560:                                    ; preds = %.thread537
  %.0379580 = getelementptr inbounds i8, ptr %236, i64 8
  %237 = load ptr, ptr %.0379580, align 8, !tbaa !31
  %.not476581 = icmp eq ptr %237, null
  br i1 %.not476581, label %.preheader559, label %.lr.ph583

.lr.ph583:                                        ; preds = %.preheader560, %.lr.ph583
  %238 = phi ptr [ %245, %.lr.ph583 ], [ %237, %.preheader560 ]
  %.0379582 = phi ptr [ %.0379, %.lr.ph583 ], [ %.0379580, %.preheader560 ]
  %239 = load ptr, ptr %238, align 8, !tbaa !39
  %240 = getelementptr inbounds i8, ptr %238, i64 24
  %241 = load i32, ptr %240, align 8, !tbaa !41
  tail call void @qh_setcheck(ptr noundef %0, ptr noundef %239, ptr noundef nonnull @.str.75, i32 noundef %241) #3
  %242 = getelementptr inbounds i8, ptr %238, i64 28
  %243 = load i8, ptr %242, align 4
  %244 = and i8 %243, -2
  store i8 %244, ptr %242, align 4
  %.0379 = getelementptr inbounds i8, ptr %.0379582, i64 8
  %245 = load ptr, ptr %.0379, align 8, !tbaa !31
  %.not476 = icmp eq ptr %245, null
  br i1 %.not476, label %._crit_edge584, label %.lr.ph583, !llvm.loop !42

._crit_edge584:                                   ; preds = %.lr.ph583
  %.pr542.pre = load ptr, ptr %111, align 8, !tbaa !27
  %.not477 = icmp eq ptr %.pr542.pre, null
  br i1 %.not477, label %.thread543, label %.preheader559

.preheader559:                                    ; preds = %.preheader560, %._crit_edge584
  %.pr542671 = phi ptr [ %.pr542.pre, %._crit_edge584 ], [ %236, %.preheader560 ]
  %.1380585 = getelementptr inbounds i8, ptr %.pr542671, i64 8
  %246 = load ptr, ptr %.1380585, align 8, !tbaa !31
  %.not479586 = icmp eq ptr %246, null
  br i1 %.not479586, label %.thread543, label %.lr.ph590

.lr.ph590:                                        ; preds = %.preheader559
  %247 = getelementptr inbounds i8, ptr %0, i64 2424
  br label %248

248:                                              ; preds = %.lr.ph590, %323
  %249 = phi ptr [ %246, %.lr.ph590 ], [ %324, %323 ]
  %.1380589 = phi ptr [ %.1380585, %.lr.ph590 ], [ %.1380, %323 ]
  %.19588 = phi i32 [ %.18, %.lr.ph590 ], [ %.23, %323 ]
  %.0382587 = phi ptr [ null, %.lr.ph590 ], [ %.4386, %323 ]
  %250 = getelementptr inbounds i8, ptr %249, i64 28
  %251 = load i8, ptr %250, align 4
  %252 = and i8 %251, 1
  %.not518 = icmp eq i8 %252, 0
  br i1 %.not518, label %258, label %253

253:                                              ; preds = %248
  %254 = load ptr, ptr %247, align 8, !tbaa !16
  %255 = load i32, ptr %18, align 4, !tbaa !17
  %256 = getelementptr inbounds i8, ptr %249, i64 24
  %257 = load i32, ptr %256, align 8, !tbaa !41
  tail call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, ptr noundef %254, i32 noundef 6129, ptr noundef nonnull @.str.76, i32 noundef %255, i32 noundef %257) #3
  %.pre658 = load i8, ptr %250, align 4
  br label %258

258:                                              ; preds = %253, %248
  %259 = phi i8 [ %.pre658, %253 ], [ %251, %248 ]
  %.1383 = phi ptr [ %249, %253 ], [ %.0382587, %248 ]
  %.20 = phi i32 [ 1, %253 ], [ %.19588, %248 ]
  %260 = or i8 %259, 1
  store i8 %260, ptr %250, align 4
  %261 = load ptr, ptr %249, align 8, !tbaa !39
  %262 = tail call i32 @qh_setsize(ptr noundef %0, ptr noundef %261) #3
  %263 = load i32, ptr %6, align 8, !tbaa !5
  %264 = add nsw i32 %263, -1
  %.not519 = icmp eq i32 %262, %264
  br i1 %.not519, label %275, label %265

265:                                              ; preds = %258
  %266 = load ptr, ptr %247, align 8, !tbaa !16
  %267 = getelementptr inbounds i8, ptr %249, i64 8
  %268 = load ptr, ptr %267, align 8, !tbaa !43
  %269 = getelementptr inbounds i8, ptr %268, i64 108
  %270 = load i32, ptr %269, align 4, !tbaa !17
  %271 = getelementptr inbounds i8, ptr %249, i64 16
  %272 = load ptr, ptr %271, align 8, !tbaa !44
  %273 = getelementptr inbounds i8, ptr %272, i64 108
  %274 = load i32, ptr %273, align 4, !tbaa !17
  tail call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %266, i32 noundef 6130, ptr noundef nonnull @.str.77, i32 noundef %270, i32 noundef %274, i32 noundef %262) #3
  br label %275

275:                                              ; preds = %265, %258
  %.2384 = phi ptr [ %249, %265 ], [ %.1383, %258 ]
  %.21 = phi i32 [ 1, %265 ], [ %.20, %258 ]
  %276 = getelementptr inbounds i8, ptr %249, i64 8
  %277 = load ptr, ptr %276, align 8, !tbaa !43
  %278 = icmp eq ptr %277, %1
  br i1 %278, label %279, label %282

279:                                              ; preds = %275
  %280 = getelementptr inbounds i8, ptr %249, i64 16
  %281 = load ptr, ptr %280, align 8, !tbaa !44
  br label %282

282:                                              ; preds = %275, %279
  %283 = phi ptr [ %281, %279 ], [ %277, %275 ]
  %284 = getelementptr inbounds i8, ptr %283, i64 112
  %285 = load i32, ptr %284, align 8
  %286 = or i32 %285, 16384
  store i32 %286, ptr %284, align 8
  %287 = load ptr, ptr %120, align 8, !tbaa !30
  %288 = tail call i32 @qh_setin(ptr noundef %287, ptr noundef %283) #3
  %.not520 = icmp eq i32 %288, 0
  br i1 %.not520, label %289, label %296

289:                                              ; preds = %282
  %290 = load ptr, ptr %247, align 8, !tbaa !16
  %291 = load i32, ptr %18, align 4, !tbaa !17
  %292 = getelementptr inbounds i8, ptr %283, i64 108
  %293 = load i32, ptr %292, align 4, !tbaa !17
  %294 = getelementptr inbounds i8, ptr %249, i64 24
  %295 = load i32, ptr %294, align 8, !tbaa !41
  tail call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %290, i32 noundef 6131, ptr noundef nonnull @.str.78, i32 noundef %291, i32 noundef %293, i32 noundef %295) #3
  br label %296

296:                                              ; preds = %289, %282
  %.3385 = phi ptr [ %.2384, %282 ], [ %249, %289 ]
  %.22 = phi i32 [ %.21, %282 ], [ 1, %289 ]
  %297 = load i32, ptr %36, align 8
  %298 = and i32 %297, 1024
  %.not521 = icmp eq i32 %298, 0
  br i1 %.not521, label %299, label %323

299:                                              ; preds = %296
  %300 = load i32, ptr %284, align 8
  %301 = and i32 %300, 1024
  %.not522 = icmp eq i32 %301, 0
  br i1 %.not522, label %302, label %323

302:                                              ; preds = %299
  %303 = load i8, ptr %250, align 4
  %304 = lshr i8 %303, 1
  %305 = and i8 %304, 1
  %306 = xor i8 %305, 1
  %307 = lshr i8 %303, 2
  %308 = and i8 %307, 1
  %309 = lshr i8 %303, 3
  %310 = and i8 %309, 1
  %311 = or i8 %308, %306
  %312 = or i8 %311, %310
  %.not524 = icmp eq i8 %312, 0
  br i1 %.not524, label %323, label %313

313:                                              ; preds = %302
  %314 = zext nneg i8 %310 to i32
  %315 = zext nneg i8 %308 to i32
  %316 = zext nneg i8 %305 to i32
  %317 = load ptr, ptr %247, align 8, !tbaa !16
  %318 = getelementptr inbounds i8, ptr %249, i64 24
  %319 = load i32, ptr %318, align 8, !tbaa !41
  %320 = load i32, ptr %18, align 4, !tbaa !17
  %321 = getelementptr inbounds i8, ptr %283, i64 108
  %322 = load i32, ptr %321, align 4, !tbaa !17
  tail call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %317, i32 noundef 6384, ptr noundef nonnull @.str.79, i32 noundef %319, i32 noundef %315, i32 noundef %314, i32 noundef %316, i32 noundef %320, i32 noundef %322) #3
  br label %323

323:                                              ; preds = %302, %313, %299, %296
  %.4386 = phi ptr [ %.3385, %296 ], [ %.3385, %299 ], [ %249, %313 ], [ %.3385, %302 ]
  %.23 = phi i32 [ %.22, %296 ], [ %.22, %299 ], [ 1, %313 ], [ %.22, %302 ]
  %.1380 = getelementptr inbounds i8, ptr %.1380589, i64 8
  %324 = load ptr, ptr %.1380, align 8, !tbaa !31
  %.not479 = icmp eq ptr %324, null
  br i1 %.not479, label %.thread543, label %248, !llvm.loop !45

.thread543:                                       ; preds = %323, %.preheader559, %.thread537, %._crit_edge584
  %.5387 = phi ptr [ null, %._crit_edge584 ], [ null, %.thread537 ], [ null, %.preheader559 ], [ %.4386, %323 ]
  %.24 = phi i32 [ %.18, %._crit_edge584 ], [ %.18, %.thread537 ], [ %.18, %.preheader559 ], [ %.23, %323 ]
  %325 = load i32, ptr %36, align 8
  %326 = and i32 %325, 8192
  %.not480 = icmp eq i32 %326, 0
  %327 = load ptr, ptr %120, align 8, !tbaa !30
  %.not481 = icmp eq ptr %327, null
  br i1 %.not480, label %328, label %433

328:                                              ; preds = %.thread543
  br i1 %.not481, label %.loopexit557, label %.preheader556

.preheader556:                                    ; preds = %328
  %.2619 = getelementptr inbounds i8, ptr %327, i64 8
  %329 = load ptr, ptr %.2619, align 8, !tbaa !31
  %.not483620 = icmp eq ptr %329, null
  br i1 %.not483620, label %.loopexit557, label %.lr.ph624

.lr.ph624:                                        ; preds = %.preheader556
  %330 = getelementptr inbounds i8, ptr %0, i64 2424
  %.not493 = icmp ne i32 %2, 0
  %331 = getelementptr inbounds i8, ptr %0, i64 188
  %332 = getelementptr inbounds i8, ptr %0, i64 2620
  %333 = getelementptr inbounds i8, ptr %0, i64 96
  br label %334

334:                                              ; preds = %.lr.ph624, %.loopexit550
  %335 = phi ptr [ %329, %.lr.ph624 ], [ %432, %.loopexit550 ]
  %.2623 = phi ptr [ %.2619, %.lr.ph624 ], [ %.2, %.loopexit550 ]
  %.7622 = phi ptr [ %.6, %.lr.ph624 ], [ %.8, %.loopexit550 ]
  %.25621 = phi i32 [ %.24, %.lr.ph624 ], [ %.26, %.loopexit550 ]
  %336 = getelementptr inbounds i8, ptr %335, i64 112
  %337 = load i32, ptr %336, align 8
  %338 = and i32 %337, 16384
  %.not484 = icmp eq i32 %338, 0
  br i1 %.not484, label %339, label %344

339:                                              ; preds = %334
  %340 = load ptr, ptr %330, align 8, !tbaa !16
  %341 = load i32, ptr %18, align 4, !tbaa !17
  %342 = getelementptr inbounds i8, ptr %335, i64 108
  %343 = load i32, ptr %342, align 4, !tbaa !17
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, ptr noundef %340, i32 noundef 6132, ptr noundef nonnull @.str.80, i32 noundef %341, i32 noundef %343) #3
  br label %344

344:                                              ; preds = %339, %334
  %.26 = phi i32 [ %.25621, %334 ], [ 1, %339 ]
  %.8 = phi ptr [ %.7622, %334 ], [ %335, %339 ]
  %345 = load ptr, ptr %108, align 8, !tbaa !26
  %346 = getelementptr inbounds i8, ptr %335, i64 64
  %347 = load ptr, ptr %346, align 8, !tbaa !26
  %348 = call ptr @qh_vertexintersect_new(ptr noundef %0, ptr noundef %345, ptr noundef %347)
  store ptr %348, ptr %5, align 8, !tbaa !31
  call void @qh_settemppush(ptr noundef %0, ptr noundef %348) #3
  %349 = load ptr, ptr %108, align 8, !tbaa !26
  %.not485 = icmp eq ptr %349, null
  br i1 %.not485, label %.loopexit555, label %.preheader554

.preheader554:                                    ; preds = %344
  %.1395600 = getelementptr inbounds i8, ptr %349, i64 8
  %350 = load ptr, ptr %.1395600, align 8, !tbaa !31
  %.not487601 = icmp eq ptr %350, null
  br i1 %.not487601, label %.loopexit555, label %.lr.ph603

.lr.ph603:                                        ; preds = %.preheader554, %.lr.ph603
  %351 = phi ptr [ %355, %.lr.ph603 ], [ %350, %.preheader554 ]
  %.1395602 = phi ptr [ %.1395, %.lr.ph603 ], [ %.1395600, %.preheader554 ]
  %352 = getelementptr inbounds i8, ptr %351, i64 40
  %353 = load i8, ptr %352, align 8
  %354 = and i8 %353, -4
  store i8 %354, ptr %352, align 8
  %.1395 = getelementptr inbounds i8, ptr %.1395602, i64 8
  %355 = load ptr, ptr %.1395, align 8, !tbaa !31
  %.not487 = icmp eq ptr %355, null
  br i1 %.not487, label %.loopexit555, label %.lr.ph603, !llvm.loop !46

.loopexit555:                                     ; preds = %.lr.ph603, %.preheader554, %344
  %356 = load ptr, ptr %5, align 8
  %.not488 = icmp eq ptr %356, null
  br i1 %.not488, label %.loopexit553, label %.preheader552

.preheader552:                                    ; preds = %.loopexit555
  %.2396604 = getelementptr inbounds i8, ptr %356, i64 8
  %357 = load ptr, ptr %.2396604, align 8, !tbaa !31
  %.not490605 = icmp eq ptr %357, null
  br i1 %.not490605, label %.loopexit553, label %.lr.ph607

.lr.ph607:                                        ; preds = %.preheader552, %.lr.ph607
  %358 = phi ptr [ %362, %.lr.ph607 ], [ %357, %.preheader552 ]
  %.2396606 = phi ptr [ %.2396, %.lr.ph607 ], [ %.2396604, %.preheader552 ]
  %359 = getelementptr inbounds i8, ptr %358, i64 40
  %360 = load i8, ptr %359, align 8
  %361 = or i8 %360, 1
  store i8 %361, ptr %359, align 8
  %.2396 = getelementptr inbounds i8, ptr %.2396606, i64 8
  %362 = load ptr, ptr %.2396, align 8, !tbaa !31
  %.not490 = icmp eq ptr %362, null
  br i1 %.not490, label %.loopexit553, label %.lr.ph607, !llvm.loop !47

.loopexit553:                                     ; preds = %.lr.ph607, %.preheader552, %.loopexit555
  %363 = load ptr, ptr %111, align 8, !tbaa !27
  %.not491 = icmp eq ptr %363, null
  br i1 %.not491, label %.loopexit551, label %364

364:                                              ; preds = %.loopexit553
  %365 = getelementptr inbounds i8, ptr %363, i64 8
  %366 = load ptr, ptr %365, align 8, !tbaa !31
  %.not492612 = icmp eq ptr %366, null
  br i1 %.not492612, label %.loopexit551, label %.lr.ph614

.lr.ph614:                                        ; preds = %364
  %367 = getelementptr inbounds i8, ptr %363, i64 16
  %368 = getelementptr inbounds i8, ptr %335, i64 108
  br label %369

369:                                              ; preds = %.lr.ph614, %.backedge
  %370 = phi ptr [ %366, %.lr.ph614 ], [ %401, %.backedge ]
  %371 = phi ptr [ %367, %.lr.ph614 ], [ %400, %.backedge ]
  %372 = getelementptr inbounds i8, ptr %370, i64 8
  %373 = load ptr, ptr %372, align 8, !tbaa !43
  %374 = icmp eq ptr %373, %1
  br i1 %374, label %375, label %378

375:                                              ; preds = %369
  %376 = getelementptr inbounds i8, ptr %370, i64 16
  %377 = load ptr, ptr %376, align 8, !tbaa !44
  br label %378

378:                                              ; preds = %369, %375
  %379 = phi ptr [ %377, %375 ], [ %373, %369 ]
  %.not500 = icmp eq ptr %335, %379
  br i1 %.not500, label %380, label %.backedge

380:                                              ; preds = %378
  %381 = load ptr, ptr %370, align 8, !tbaa !39
  %.not501 = icmp eq ptr %381, null
  br i1 %.not501, label %.backedge, label %.preheader547

.preheader547:                                    ; preds = %380
  %.3397608 = getelementptr inbounds i8, ptr %381, i64 8
  %382 = load ptr, ptr %.3397608, align 8, !tbaa !31
  %.not503609 = icmp eq ptr %382, null
  br i1 %.not503609, label %.backedge, label %.lr.ph611

.lr.ph611:                                        ; preds = %.preheader547
  %383 = getelementptr inbounds i8, ptr %370, i64 24
  br label %384

384:                                              ; preds = %.lr.ph611, %396
  %385 = phi ptr [ %382, %.lr.ph611 ], [ %399, %396 ]
  %.3397610 = phi ptr [ %.3397608, %.lr.ph611 ], [ %.3397, %396 ]
  %386 = getelementptr inbounds i8, ptr %385, i64 40
  %387 = load i8, ptr %386, align 8
  %388 = and i8 %387, 1
  %.not504 = icmp eq i8 %388, 0
  br i1 %.not504, label %389, label %396

389:                                              ; preds = %384
  %390 = load ptr, ptr %330, align 8, !tbaa !16
  %391 = getelementptr inbounds i8, ptr %385, i64 32
  %392 = load i32, ptr %391, align 8, !tbaa !32
  %393 = load i32, ptr %383, align 8, !tbaa !41
  %394 = load i32, ptr %18, align 4, !tbaa !17
  %395 = load i32, ptr %368, align 4, !tbaa !17
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, ptr noundef %390, i32 noundef 6133, ptr noundef nonnull @.str.81, i32 noundef %392, i32 noundef %393, i32 noundef %394, i32 noundef %395) #3
  call void @qh_errexit(ptr noundef %0, i32 noundef 5, ptr noundef %1, ptr noundef nonnull %370) #3
  %.pre659 = load i8, ptr %386, align 8
  br label %396

396:                                              ; preds = %389, %384
  %397 = phi i8 [ %.pre659, %389 ], [ %387, %384 ]
  %398 = or i8 %397, 2
  store i8 %398, ptr %386, align 8
  %.3397 = getelementptr inbounds i8, ptr %.3397610, i64 8
  %399 = load ptr, ptr %.3397, align 8, !tbaa !31
  %.not503 = icmp eq ptr %399, null
  br i1 %.not503, label %.backedge, label %384, !llvm.loop !48

.backedge:                                        ; preds = %396, %380, %.preheader547, %378
  %400 = getelementptr inbounds i8, ptr %371, i64 8
  %401 = load ptr, ptr %371, align 8, !tbaa !31
  %.not492 = icmp eq ptr %401, null
  br i1 %.not492, label %.loopexit551.loopexit, label %369, !llvm.loop !49

.loopexit551.loopexit:                            ; preds = %.backedge
  %.pre660 = load ptr, ptr %5, align 8
  br label %.loopexit551

.loopexit551:                                     ; preds = %.loopexit551.loopexit, %364, %.loopexit553
  %402 = phi ptr [ %.pre660, %.loopexit551.loopexit ], [ %356, %364 ], [ %356, %.loopexit553 ]
  %.not494 = icmp eq ptr %402, null
  %or.cond536 = select i1 %.not493, i1 true, i1 %.not494
  br i1 %or.cond536, label %.loopexit550, label %.preheader549

.preheader549:                                    ; preds = %.loopexit551
  %.4398615 = getelementptr inbounds i8, ptr %402, i64 8
  %403 = load ptr, ptr %.4398615, align 8, !tbaa !31
  %.not496616 = icmp eq ptr %403, null
  br i1 %.not496616, label %.loopexit550, label %.lr.ph618

.lr.ph618:                                        ; preds = %.preheader549
  %404 = getelementptr inbounds i8, ptr %335, i64 108
  br label %405

405:                                              ; preds = %.lr.ph618, %430
  %406 = phi ptr [ %403, %.lr.ph618 ], [ %431, %430 ]
  %.4398617 = phi ptr [ %.4398615, %.lr.ph618 ], [ %.4398, %430 ]
  %407 = getelementptr inbounds i8, ptr %406, i64 40
  %408 = load i8, ptr %407, align 8
  %409 = and i8 %408, 2
  %.not497 = icmp eq i8 %409, 0
  br i1 %.not497, label %410, label %430

410:                                              ; preds = %405
  %411 = load i32, ptr %331, align 4, !tbaa !50
  %.not498 = icmp eq i32 %411, 0
  br i1 %.not498, label %412, label %421

412:                                              ; preds = %410
  %413 = load ptr, ptr %330, align 8, !tbaa !16
  %414 = getelementptr inbounds i8, ptr %406, i64 32
  %415 = load i32, ptr %414, align 8, !tbaa !32
  %416 = load i32, ptr %18, align 4, !tbaa !17
  %417 = load i32, ptr %404, align 4, !tbaa !17
  %418 = load i32, ptr %332, align 4, !tbaa !51
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %413, i32 noundef 6420, ptr noundef nonnull @.str.82, i32 noundef %415, i32 noundef %416, i32 noundef %417, i32 noundef %418) #3
  %419 = load i32, ptr %333, align 8, !tbaa !52
  %.not499 = icmp eq i32 %419, 0
  br i1 %.not499, label %420, label %430

420:                                              ; preds = %412
  call void @qh_errprint(ptr noundef nonnull %0, ptr noundef nonnull @.str.66, ptr noundef nonnull %1, ptr noundef nonnull %335, ptr noundef null, ptr noundef nonnull %406) #3
  call void @qh_errexit(ptr noundef nonnull %0, i32 noundef 7, ptr noundef null, ptr noundef null) #3
  br label %430

421:                                              ; preds = %410
  %422 = load i32, ptr %9, align 8, !tbaa !15
  %423 = icmp sgt i32 %422, 3
  br i1 %423, label %424, label %430

424:                                              ; preds = %421
  %425 = load ptr, ptr %330, align 8, !tbaa !16
  %426 = getelementptr inbounds i8, ptr %406, i64 32
  %427 = load i32, ptr %426, align 8, !tbaa !32
  %428 = load i32, ptr %18, align 4, !tbaa !17
  %429 = load i32, ptr %404, align 4, !tbaa !17
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef nonnull %0, ptr noundef %425, i32 noundef 4025, ptr noundef nonnull @.str.83, i32 noundef %427, i32 noundef %428, i32 noundef %429) #3
  br label %430

430:                                              ; preds = %420, %412, %424, %421, %405
  %.4398 = getelementptr inbounds i8, ptr %.4398617, i64 8
  %431 = load ptr, ptr %.4398, align 8, !tbaa !31
  %.not496 = icmp eq ptr %431, null
  br i1 %.not496, label %.loopexit550, label %405, !llvm.loop !53

.loopexit550:                                     ; preds = %430, %.preheader549, %.loopexit551
  call void @qh_settempfree(ptr noundef %0, ptr noundef nonnull %5) #3
  %.2 = getelementptr inbounds i8, ptr %.2623, i64 8
  %432 = load ptr, ptr %.2, align 8, !tbaa !31
  %.not483 = icmp eq ptr %432, null
  br i1 %.not483, label %.loopexit557, label %334, !llvm.loop !54

433:                                              ; preds = %.thread543
  br i1 %.not481, label %.loopexit557, label %434

434:                                              ; preds = %433
  %435 = getelementptr inbounds i8, ptr %327, i64 8
  %436 = load ptr, ptr %435, align 8, !tbaa !31
  %.not506593 = icmp eq ptr %436, null
  br i1 %.not506593, label %.loopexit557, label %.lr.ph597

.lr.ph597:                                        ; preds = %434
  %437 = getelementptr inbounds i8, ptr %327, i64 16
  %438 = getelementptr inbounds i8, ptr %0, i64 2424
  br label %439

439:                                              ; preds = %.lr.ph597, %472
  %440 = phi ptr [ %436, %.lr.ph597 ], [ %474, %472 ]
  %441 = phi ptr [ %437, %.lr.ph597 ], [ %473, %472 ]
  %.9595 = phi ptr [ %.6, %.lr.ph597 ], [ %.10, %472 ]
  %.27594 = phi i32 [ %.24, %.lr.ph597 ], [ %.28, %472 ]
  %442 = getelementptr inbounds i8, ptr %440, i64 112
  %443 = load i32, ptr %442, align 8
  %444 = and i32 %443, 8192
  %.not514 = icmp eq i32 %444, 0
  br i1 %.not514, label %472, label %445

445:                                              ; preds = %439
  %446 = load i32, ptr %36, align 8
  %447 = or i32 %446, %443
  %448 = and i32 %447, 1073741824
  %or.cond = icmp eq i32 %448, 0
  br i1 %or.cond, label %449, label %472

449:                                              ; preds = %445
  %450 = load ptr, ptr %120, align 8, !tbaa !30
  %451 = getelementptr inbounds i8, ptr %450, i64 16
  %452 = ptrtoint ptr %441 to i64
  %453 = ptrtoint ptr %451 to i64
  %454 = sub i64 %452, %453
  %455 = lshr exact i64 %454, 3
  %456 = trunc i64 %455 to i32
  %457 = getelementptr inbounds i8, ptr %440, i64 80
  %458 = load ptr, ptr %457, align 8, !tbaa !30
  %459 = tail call i32 @qh_setindex(ptr noundef %458, ptr noundef nonnull %1) #3
  %460 = icmp slt i32 %456, 0
  %461 = icmp slt i32 %459, 0
  %or.cond3 = select i1 %460, i1 true, i1 %461
  br i1 %or.cond3, label %467, label %462

462:                                              ; preds = %449
  %463 = load ptr, ptr %108, align 8, !tbaa !26
  %464 = getelementptr inbounds i8, ptr %440, i64 64
  %465 = load ptr, ptr %464, align 8, !tbaa !26
  %466 = tail call i32 @qh_setequal_skip(ptr noundef %463, i32 noundef %456, ptr noundef %465, i32 noundef %459) #3
  %.not517 = icmp eq i32 %466, 0
  br i1 %.not517, label %467, label %472

467:                                              ; preds = %462, %449
  %468 = load ptr, ptr %438, align 8, !tbaa !16
  %469 = load i32, ptr %18, align 4, !tbaa !17
  %470 = getelementptr inbounds i8, ptr %440, i64 108
  %471 = load i32, ptr %470, align 4, !tbaa !17
  tail call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, ptr noundef %468, i32 noundef 6135, ptr noundef nonnull @.str.84, i32 noundef %469, i32 noundef %456, i32 noundef %471, i32 noundef %459) #3
  br label %472

472:                                              ; preds = %462, %467, %445, %439
  %.28 = phi i32 [ %.27594, %445 ], [ 1, %467 ], [ %.27594, %462 ], [ %.27594, %439 ]
  %.10 = phi ptr [ %.9595, %445 ], [ %440, %467 ], [ %.9595, %462 ], [ %.9595, %439 ]
  %473 = getelementptr inbounds i8, ptr %441, i64 8
  %474 = load ptr, ptr %441, align 8, !tbaa !31
  %.not506 = icmp eq ptr %474, null
  br i1 %.not506, label %.loopexit557, label %439, !llvm.loop !55

.loopexit557:                                     ; preds = %472, %.loopexit550, %434, %.preheader556, %433, %328
  %.29 = phi i32 [ %.24, %433 ], [ %.24, %328 ], [ %.24, %.preheader556 ], [ %.24, %434 ], [ %.26, %.loopexit550 ], [ %.28, %472 ]
  %.11 = phi ptr [ %.6, %433 ], [ %.6, %328 ], [ %.6, %.preheader556 ], [ %.6, %434 ], [ %.8, %.loopexit550 ], [ %.10, %472 ]
  %.not507 = icmp eq i32 %2, 0
  br i1 %.not507, label %475, label %.loopexit546

475:                                              ; preds = %.loopexit557
  %476 = getelementptr inbounds i8, ptr %0, i64 56
  %477 = load i32, ptr %476, align 8, !tbaa !56
  %.not508 = icmp eq i32 %477, 0
  br i1 %.not508, label %.loopexit546, label %478

478:                                              ; preds = %475
  %479 = load i32, ptr %6, align 8, !tbaa !5
  %480 = icmp slt i32 %479, 5
  br i1 %480, label %481, label %.loopexit546

481:                                              ; preds = %478
  %482 = load i32, ptr %9, align 8, !tbaa !15
  %483 = icmp sgt i32 %482, 2
  br i1 %483, label %487, label %484

484:                                              ; preds = %481
  %485 = getelementptr inbounds i8, ptr %0, i64 60
  %486 = load i32, ptr %485, align 4, !tbaa !57
  %.not509 = icmp eq i32 %486, 0
  br i1 %.not509, label %.loopexit546, label %487

487:                                              ; preds = %484, %481
  %488 = load ptr, ptr %111, align 8, !tbaa !27
  %.not510 = icmp eq ptr %488, null
  br i1 %.not510, label %.loopexit546, label %489

489:                                              ; preds = %487
  %490 = getelementptr inbounds i8, ptr %488, i64 8
  %491 = load ptr, ptr %490, align 8, !tbaa !58
  %492 = call i32 @qh_setsize(ptr noundef nonnull %0, ptr noundef nonnull %488) #3
  %493 = icmp sgt i32 %492, 0
  br i1 %493, label %.lr.ph639, label %.loopexit546

.lr.ph639:                                        ; preds = %489
  %494 = sext i32 %8 to i64
  %495 = getelementptr inbounds i8, ptr %0, i64 2424
  %496 = zext nneg i32 %492 to i64
  %wide.trip.count651 = zext nneg i32 %492 to i64
  br label %497

497:                                              ; preds = %.lr.ph639, %.loopexit
  %indvars.iv647 = phi i64 [ 0, %.lr.ph639 ], [ %501, %.loopexit ]
  %indvars.iv = phi i64 [ 1, %.lr.ph639 ], [ %indvars.iv.next, %.loopexit ]
  %.0366636 = phi ptr [ %491, %.lr.ph639 ], [ %534, %.loopexit ]
  %.30635 = phi i32 [ %.29, %.lr.ph639 ], [ %.33, %.loopexit ]
  %.6388634 = phi ptr [ %.5387, %.lr.ph639 ], [ %.9391, %.loopexit ]
  %498 = getelementptr inbounds i8, ptr %.0366636, i64 28
  %499 = load i8, ptr %498, align 4
  %500 = and i8 %499, 8
  %.not511 = icmp eq i8 %500, 0
  %501 = add nuw nsw i64 %indvars.iv647, 1
  %502 = icmp ult i64 %501, %496
  %or.cond674 = select i1 %.not511, i1 %502, i1 false
  br i1 %or.cond674, label %.lr.ph631, label %.loopexit

.lr.ph631:                                        ; preds = %497
  %503 = getelementptr inbounds i8, ptr %.0366636, i64 24
  br label %504

504:                                              ; preds = %.lr.ph631, %530
  %indvars.iv644 = phi i64 [ %indvars.iv, %.lr.ph631 ], [ %indvars.iv.next645, %530 ]
  %.31629 = phi i32 [ %.30635, %.lr.ph631 ], [ %.32, %530 ]
  %.7389628 = phi ptr [ %.6388634, %.lr.ph631 ], [ %.8390, %530 ]
  %505 = load ptr, ptr %111, align 8, !tbaa !27
  %506 = getelementptr inbounds i8, ptr %505, i64 8
  %507 = getelementptr inbounds [1 x %union.setelemT], ptr %506, i64 0, i64 %indvars.iv644
  %508 = load ptr, ptr %507, align 8, !tbaa !58
  %509 = load ptr, ptr %.0366636, align 8, !tbaa !39
  %510 = getelementptr inbounds i8, ptr %509, i64 8
  %511 = getelementptr inbounds [1 x %union.setelemT], ptr %510, i64 0, i64 %494
  %512 = load ptr, ptr %511, align 8, !tbaa !58
  %513 = load ptr, ptr %508, align 8, !tbaa !39
  %514 = getelementptr inbounds i8, ptr %513, i64 8
  %515 = getelementptr inbounds [1 x %union.setelemT], ptr %514, i64 0, i64 %494
  %516 = load ptr, ptr %515, align 8, !tbaa !58
  %517 = icmp eq ptr %512, %516
  br i1 %517, label %518, label %530

518:                                              ; preds = %504
  %519 = load ptr, ptr %510, align 8, !tbaa !58
  %520 = load ptr, ptr %514, align 8, !tbaa !58
  %521 = icmp eq ptr %519, %520
  br i1 %521, label %522, label %530

522:                                              ; preds = %518
  %523 = call i32 @qh_setequal(ptr noundef nonnull %509, ptr noundef nonnull %513) #3
  %.not512 = icmp eq i32 %523, 0
  br i1 %.not512, label %530, label %524

524:                                              ; preds = %522
  %525 = load ptr, ptr %495, align 8, !tbaa !16
  %526 = load i32, ptr %503, align 8, !tbaa !41
  %527 = getelementptr inbounds i8, ptr %508, i64 24
  %528 = load i32, ptr %527, align 8, !tbaa !41
  %529 = load i32, ptr %18, align 4, !tbaa !17
  call void (ptr, ptr, i32, ptr, ...) @qh_fprintf(ptr noundef %0, ptr noundef %525, i32 noundef 6294, ptr noundef nonnull @.str.85, i32 noundef %526, i32 noundef %528, i32 noundef %529) #3
  br label %530

530:                                              ; preds = %504, %522, %524, %518
  %.8390 = phi ptr [ %.0366636, %524 ], [ %.7389628, %522 ], [ %.7389628, %518 ], [ %.7389628, %504 ]
  %.32 = phi i32 [ 1, %524 ], [ %.31629, %522 ], [ %.31629, %518 ], [ %.31629, %504 ]
  %indvars.iv.next645 = add nuw nsw i64 %indvars.iv644, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next645, %wide.trip.count651
  br i1 %exitcond.not, label %.loopexit, label %504, !llvm.loop !59

.loopexit:                                        ; preds = %530, %497
  %.9391 = phi ptr [ %.6388634, %497 ], [ %.8390, %530 ]
  %.33 = phi i32 [ %.30635, %497 ], [ %.32, %530 ]
  %531 = load ptr, ptr %111, align 8, !tbaa !27
  %532 = getelementptr inbounds i8, ptr %531, i64 8
  %533 = getelementptr inbounds [1 x %union.setelemT], ptr %532, i64 0, i64 %501
  %534 = load ptr, ptr %533, align 8, !tbaa !58
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond652.not = icmp eq i64 %501, %wide.trip.count651
  br i1 %exitcond652.not, label %.loopexit546, label %497, !llvm.loop !60

.loopexit546:                                     ; preds = %.loopexit, %489, %487, %484, %478, %475, %.loopexit557
  %.10392 = phi ptr [ %.5387, %.loopexit557 ], [ %.5387, %487 ], [ %.5387, %484 ], [ %.5387, %478 ], [ %.5387, %475 ], [ %.5387, %489 ], [ %.9391, %.loopexit ]
  %.34 = phi i32 [ %.29, %.loopexit557 ], [ %.29, %487 ], [ %.29, %484 ], [ %.29, %478 ], [ %.29, %475 ], [ %.29, %489 ], [ %.33, %.loopexit ]
  %.not513 = icmp eq i32 %.34, 0
  br i1 %.not513, label %536, label %535

535:                                              ; preds = %.loopexit546
  call void @qh_errprint(ptr noundef %0, ptr noundef nonnull @.str.66, ptr noundef %1, ptr noundef %.11, ptr noundef %.10392, ptr noundef null) #3
  store i32 1, ptr %3, align 4, !tbaa !61
  br label %536

536:                                              ; preds = %535, %.loopexit546
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #3
  ret void
}

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

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

declare void @qh_setprint(ptr noundef, 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, ptr noundef) local_unnamed_addr #2

declare void @qh_settemppush(ptr noundef, 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, !7, i64 2984, !7, i64 2988, !8, i64 2992, !8, i64 3192, !7, i64 3232, !10, i64 3240, !11, i64 3248, !11, i64 3256, !11, i64 3264, !13, i64 3272, !14, i64 3424}
!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 = !{!"qhmemT", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !11, i64 56, !7, i64 64, !11, i64 72, !11, i64 80, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !7, i64 124, !7, i64 128, !7, i64 132, !7, i64 136, !7, i64 140, !7, i64 144}
!14 = !{!"qhstatT", !8, i64 0, !8, i64 1992, !8, i64 2256, !8, i64 4248, !8, i64 4746, !8, i64 4995, !8, i64 5248, !7, i64 5320, !7, i64 5324, !7, i64 5328, !7, i64 5332, !10, i64 5336}
!15 = !{!6, !7, i64 136}
!16 = !{!6, !11, i64 2424}
!17 = !{!18, !7, i64 108}
!18 = !{!"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}
!19 = !{!6, !7, i64 2584}
!20 = !{!18, !7, i64 104}
!21 = !{!6, !7, i64 2784}
!22 = !{!6, !7, i64 2708}
!23 = !{!6, !11, i64 2808}
!24 = !{!18, !11, i64 24}
!25 = !{!6, !11, i64 2480}
!26 = !{!18, !11, i64 64}
!27 = !{!18, !11, i64 72}
!28 = !{!18, !11, i64 88}
!29 = !{!18, !11, i64 96}
!30 = !{!18, !11, i64 80}
!31 = !{!11, !11, i64 0}
!32 = !{!33, !7, i64 32}
!33 = !{!"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}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = !{!6, !7, i64 2704}
!37 = distinct !{!37, !35}
!38 = distinct !{!38, !35}
!39 = !{!40, !11, i64 0}
!40 = !{!"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}
!41 = !{!40, !7, i64 24}
!42 = distinct !{!42, !35}
!43 = !{!40, !11, i64 8}
!44 = !{!40, !11, i64 16}
!45 = distinct !{!45, !35}
!46 = distinct !{!46, !35}
!47 = distinct !{!47, !35}
!48 = distinct !{!48, !35}
!49 = distinct !{!49, !35}
!50 = !{!6, !7, i64 188}
!51 = !{!6, !7, i64 2620}
!52 = !{!6, !7, i64 96}
!53 = distinct !{!53, !35}
!54 = distinct !{!54, !35}
!55 = distinct !{!55, !35}
!56 = !{!6, !7, i64 56}
!57 = !{!6, !7, i64 60}
!58 = !{!8, !8, i64 0}
!59 = distinct !{!59, !35}
!60 = distinct !{!60, !35}
!61 = !{!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