; LLVM IR from Discngine/fpocket :: src/qhull/src/libqhullcpp/QhullFacet.ll (ZlsRSoRKN8orgQhull10QhullFacet11PrintRidgesE)

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

%"class.orgQhull::QhullFacetSet" = type <{ %"class.orgQhull::QhullSet.5", i8, [7 x i8] }>
%"class.orgQhull::QhullSet.5" = type { %"class.orgQhull::QhullSetBase" }
%"class.orgQhull::QhullSetBase" = type { ptr, ptr }
%"class.orgQhull::QhullSet.6" = type { %"class.orgQhull::QhullSetBase" }
%"class.orgQhull::QhullFacet" = type { ptr, ptr }
%"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator" = type { ptr, ptr }
%"class.orgQhull::QhullRidge" = type { ptr, ptr }
%"struct.orgQhull::QhullRidge::PrintRidge" = type { ptr, ptr }
%"class.orgQhull::QhullSet<orgQhull::QhullFacet>::iterator" = type { ptr, ptr }
%"struct.orgQhull::QhullFacet::PrintRidges" = type { ptr }
%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.qhT = type { i32, i32, i32, double, i32, i32, i32, i32, i32, i32, i32, double, double, i32, i32, i32, i32, i32, ptr, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, double, double, i32, i32, i32, double, double, i32, double, i32, 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, i32, double, double, double, 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, i32, ptr, double, double, double, double, [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, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i64, i32, i32, i32, i32, ptr, i32, i32, double, i32, double, double, double, i32, i32, i32, i32, double, double, i32, i32, i32, i32, double, double, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, ptr, ptr, i32, i32, i32, ptr, double, double, double, i32, i32, ptr, i32, i32, [1 x %struct.__jmp_buf_tag], [40 x i8], i32, double, 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 { [227 x %union.intrealT], [237 x i8], [227 x ptr], [227 x i16], [227 x i8], [227 x i8], [9 x %union.intrealT], i32, i32, i32, i32, double }
%union.intrealT = type { double }
%struct.ridgeT = type { ptr, ptr, ptr, i32, i8 }

@.str.55 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [19 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 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK8orgQhull10QhullFacet9getFacetTEv(ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK8orgQhull10QhullFacet14neighborFacetsEv(ptr dead_on_unwind noalias writable sret(%"class.orgQhull::QhullFacetSet") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK8orgQhull10QhullFacet6ridgesEv(ptr dead_on_unwind noalias writable sret(%"class.orgQhull::QhullSet.6") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8orgQhull10QhullFacetC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK8orgQhull12QhullSetBase7isEmptyEv(ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8orgQhull12QhullSetBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRKN8orgQhull10QhullFacet11PrintRidgesE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca %"class.orgQhull::QhullFacet", align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca %"class.orgQhull::QhullSet.6", align 8
  %10 = alloca %"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator", align 8
  %11 = alloca %"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator", align 8
  %12 = alloca %"class.orgQhull::QhullRidge", align 8
  %13 = alloca %"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator", align 8
  %14 = alloca %"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator", align 8
  %15 = alloca %"class.orgQhull::QhullRidge", align 8
  %16 = alloca i32, align 4
  %17 = alloca %"class.orgQhull::QhullRidge", align 8
  %18 = alloca i32, align 4
  %19 = alloca %"struct.orgQhull::QhullRidge::PrintRidge", align 8
  %20 = alloca %"class.orgQhull::QhullRidge", align 8
  %21 = alloca %"class.orgQhull::QhullFacetSet", align 8
  %22 = alloca %"class.orgQhull::QhullSet<orgQhull::QhullFacet>::iterator", align 8
  %23 = alloca %"class.orgQhull::QhullSet<orgQhull::QhullFacet>::iterator", align 8
  %24 = alloca %"class.orgQhull::QhullFacet", align 8
  %25 = alloca %"class.orgQhull::QhullSet.6", align 8
  %26 = alloca %"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator", align 8
  %27 = alloca %"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator", align 8
  %28 = alloca %"class.orgQhull::QhullRidge", align 8
  %29 = alloca %"class.orgQhull::QhullFacet", align 8
  %30 = alloca %"struct.orgQhull::QhullRidge::PrintRidge", align 8
  %31 = alloca %"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator", align 8
  %32 = alloca %"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator", align 8
  %33 = alloca %"class.orgQhull::QhullRidge", align 8
  %34 = alloca %"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator", align 8
  %35 = alloca %"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator", align 8
  %36 = alloca %"class.orgQhull::QhullRidge", align 8
  %37 = alloca %"struct.orgQhull::QhullRidge::PrintRidge", align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %5) #5
  %38 = load ptr, ptr %4, align 8, !tbaa !5
  %39 = getelementptr inbounds %"struct.orgQhull::QhullFacet::PrintRidges", ptr %38, i32 0, i32 0
  %40 = load ptr, ptr %39, align 8, !tbaa !9
  call void @_ZN8orgQhull10QhullFacetC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %40)
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #5
  %41 = invoke noundef ptr @_ZNK8orgQhull10QhullFacet9getFacetTEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
          to label %42 unwind label %72

42:                                               ; preds = %2
  store ptr %41, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %9) #5
  invoke void @_ZNK8orgQhull10QhullFacet6ridgesEv(ptr dead_on_unwind writable sret(%"class.orgQhull::QhullSet.6") align 8 %9, ptr noundef nonnull align 8 dereferenceable(16) %5)
          to label %43 unwind label %76

43:                                               ; preds = %42
  %44 = invoke noundef zeroext i1 @_ZNK8orgQhull12QhullSetBase7isEmptyEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %45 unwind label %80

45:                                               ; preds = %43
  br i1 %44, label %440, label %46

46:                                               ; preds = %45
  %47 = load ptr, ptr %6, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.facetT, ptr %47, i32 0, i32 15
  %49 = load i32, ptr %48, align 8
  %50 = lshr i32 %49, 11
  %51 = and i32 %50, 1
  %52 = icmp ne i32 %51, 0
  br i1 %52, label %53, label %118

53:                                               ; preds = %46
  %54 = load ptr, ptr %4, align 8, !tbaa !5
  %55 = getelementptr inbounds %"struct.orgQhull::QhullFacet::PrintRidges", ptr %54, i32 0, i32 0
  %56 = load ptr, ptr %55, align 8, !tbaa !9
  %57 = invoke noundef ptr @_ZNK8orgQhull10QhullFacet2qhEv(ptr noundef nonnull align 8 dereferenceable(16) %56)
          to label %58 unwind label %80

58:                                               ; preds = %53
  %59 = getelementptr inbounds %struct.qhT, ptr %57, i32 0, i32 189
  %60 = load i32, ptr %59, align 8, !tbaa !11
  %61 = icmp ne i32 %60, 0
  br i1 %61, label %62, label %118

62:                                               ; preds = %58
  %63 = load ptr, ptr %3, align 8, !tbaa !5
  %64 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef @.str.55)
          to label %65 unwind label %80

65:                                               ; preds = %62
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #5
  invoke void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE5beginEv(ptr dead_on_unwind writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator") align 8 %10, ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %66 unwind label %84

66:                                               ; preds = %65
  br label %67

67:                                               ; preds = %103, %66
  call void @llvm.lifetime.start.p0(i64 16, ptr %11) #5
  invoke void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE3endEv(ptr dead_on_unwind writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator") align 8 %11, ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %68 unwind label %88

68:                                               ; preds = %67
  %69 = invoke noundef zeroext i1 @_ZNK8orgQhull8QhullSetINS_10QhullRidgeEE8iteratorneERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull align 8 dereferenceable(16) %11)
          to label %70 unwind label %88

70:                                               ; preds = %68
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #5
  br i1 %69, label %92, label %71

71:                                               ; preds = %70
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #5
  br label %114

72:                                               ; preds = %2
  %73 = landingpad { ptr, i32 }
          cleanup
  %74 = extractvalue { ptr, i32 } %73, 0
  store ptr %74, ptr %7, align 8
  %75 = extractvalue { ptr, i32 } %73, 1
  store i32 %75, ptr %8, align 4
  br label %444

76:                                               ; preds = %42
  %77 = landingpad { ptr, i32 }
          cleanup
  %78 = extractvalue { ptr, i32 } %77, 0
  store ptr %78, ptr %7, align 8
  %79 = extractvalue { ptr, i32 } %77, 1
  store i32 %79, ptr %8, align 4
  br label %443

80:                                               ; preds = %121, %118, %114, %62, %53, %43
  %81 = landingpad { ptr, i32 }
          cleanup
  %82 = extractvalue { ptr, i32 } %81, 0
  store ptr %82, ptr %7, align 8
  %83 = extractvalue { ptr, i32 } %81, 1
  store i32 %83, ptr %8, align 4
  br label %442

84:                                               ; preds = %101, %65
  %85 = landingpad { ptr, i32 }
          cleanup
  %86 = extractvalue { ptr, i32 } %85, 0
  store ptr %86, ptr %7, align 8
  %87 = extractvalue { ptr, i32 } %85, 1
  store i32 %87, ptr %8, align 4
  br label %113

88:                                               ; preds = %68, %67
  %89 = landingpad { ptr, i32 }
          cleanup
  %90 = extractvalue { ptr, i32 } %89, 0
  store ptr %90, ptr %7, align 8
  %91 = extractvalue { ptr, i32 } %89, 1
  store i32 %91, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #5
  br label %113

92:                                               ; preds = %70
  call void @llvm.lifetime.start.p0(i64 16, ptr %12) #5
  invoke void @_ZNK8orgQhull8QhullSetINS_10QhullRidgeEE8iteratordeEv(ptr dead_on_unwind writable sret(%"class.orgQhull::QhullRidge") align 8 %12, ptr noundef nonnull align 8 dereferenceable(16) %10)
          to label %93 unwind label %104

93:                                               ; preds = %92
  %94 = load ptr, ptr %3, align 8, !tbaa !5
  %95 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef @.str.56)
          to label %96 unwind label %108

96:                                               ; preds = %93
  %97 = invoke noundef i32 @_ZNK8orgQhull10QhullRidge2idEv(ptr noundef nonnull align 8 dereferenceable(16) %12)
          to label %98 unwind label %108

98:                                               ; preds = %96
  %99 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %95, i32 noundef %97)
          to label %100 unwind label %108

100:                                              ; preds = %98
  call void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #5
  br label %101

101:                                              ; preds = %100
  %102 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %10)
          to label %103 unwind label %84

103:                                              ; preds = %101
  br label %67, !llvm.loop !19

104:                                              ; preds = %92
  %105 = landingpad { ptr, i32 }
          cleanup
  %106 = extractvalue { ptr, i32 } %105, 0
  store ptr %106, ptr %7, align 8
  %107 = extractvalue { ptr, i32 } %105, 1
  store i32 %107, ptr %8, align 4
  br label %112

108:                                              ; preds = %98, %96, %93
  %109 = landingpad { ptr, i32 }
          cleanup
  %110 = extractvalue { ptr, i32 } %109, 0
  store ptr %110, ptr %7, align 8
  %111 = extractvalue { ptr, i32 } %109, 1
  store i32 %111, ptr %8, align 4
  call void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #5
  br label %112

112:                                              ; preds = %108, %104
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #5
  br label %113

113:                                              ; preds = %112, %88, %84
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #5
  br label %442

114:                                              ; preds = %71
  %115 = load ptr, ptr %3, align 8, !tbaa !5
  %116 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %115, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %117 unwind label %80

117:                                              ; preds = %114
  br label %124

118:                                              ; preds = %58, %46
  %119 = load ptr, ptr %3, align 8, !tbaa !5
  %120 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %119, ptr noundef @.str.57)
          to label %121 unwind label %80

121:                                              ; preds = %118
  %122 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %120, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %123 unwind label %80

123:                                              ; preds = %121
  br label %124

124:                                              ; preds = %123, %117
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #5
  invoke void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE5beginEv(ptr dead_on_unwind writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator") align 8 %13, ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %125 unwind label %131

125:                                              ; preds = %124
  br label %126

126:                                              ; preds = %149, %125
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #5
  invoke void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE3endEv(ptr dead_on_unwind writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator") align 8 %14, ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %127 unwind label %135

127:                                              ; preds = %126
  %128 = invoke noundef zeroext i1 @_ZNK8orgQhull8QhullSetINS_10QhullRidgeEE8iteratorneERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(16) %14)
          to label %129 unwind label %135

129:                                              ; preds = %127
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #5
  br i1 %128, label %139, label %130

130:                                              ; preds = %129
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #5
  br label %160

131:                                              ; preds = %147, %124
  %132 = landingpad { ptr, i32 }
          cleanup
  %133 = extractvalue { ptr, i32 } %132, 0
  store ptr %133, ptr %7, align 8
  %134 = extractvalue { ptr, i32 } %132, 1
  store i32 %134, ptr %8, align 4
  br label %159

135:                                              ; preds = %127, %126
  %136 = landingpad { ptr, i32 }
          cleanup
  %137 = extractvalue { ptr, i32 } %136, 0
  store ptr %137, ptr %7, align 8
  %138 = extractvalue { ptr, i32 } %136, 1
  store i32 %138, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #5
  br label %159

139:                                              ; preds = %129
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #5
  invoke void @_ZNK8orgQhull8QhullSetINS_10QhullRidgeEE8iteratordeEv(ptr dead_on_unwind writable sret(%"class.orgQhull::QhullRidge") align 8 %15, ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %140 unwind label %150

140:                                              ; preds = %139
  %141 = invoke noundef ptr @_ZNK8orgQhull10QhullRidge9getRidgeTEv(ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %142 unwind label %154

142:                                              ; preds = %140
  %143 = getelementptr inbounds %struct.ridgeT, ptr %141, i32 0, i32 4
  %144 = load i8, ptr %143, align 4
  %145 = and i8 %144, -2
  %146 = or i8 %145, 0
  store i8 %146, ptr %143, align 4
  call void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #5
  br label %147

147:                                              ; preds = %142
  %148 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %149 unwind label %131

149:                                              ; preds = %147
  br label %126, !llvm.loop !21

150:                                              ; preds = %139
  %151 = landingpad { ptr, i32 }
          cleanup
  %152 = extractvalue { ptr, i32 } %151, 0
  store ptr %152, ptr %7, align 8
  %153 = extractvalue { ptr, i32 } %151, 1
  store i32 %153, ptr %8, align 4
  br label %158

154:                                              ; preds = %140
  %155 = landingpad { ptr, i32 }
          cleanup
  %156 = extractvalue { ptr, i32 } %155, 0
  store ptr %156, ptr %7, align 8
  %157 = extractvalue { ptr, i32 } %155, 1
  store i32 %157, ptr %8, align 4
  call void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #5
  br label %158

158:                                              ; preds = %154, %150
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #5
  br label %159

159:                                              ; preds = %158, %135, %131
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #5
  br label %442

160:                                              ; preds = %130
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  store i32 0, ptr %16, align 4, !tbaa !22
  %161 = invoke noundef i32 @_ZNK8orgQhull10QhullFacet9dimensionEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
          to label %162 unwind label %176

162:                                              ; preds = %160
  %163 = icmp eq i32 %161, 3
  br i1 %163, label %164, label %231

164:                                              ; preds = %162
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #5
  invoke void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE5firstEv(ptr dead_on_unwind writable sret(%"class.orgQhull::QhullRidge") align 8 %17, ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %165 unwind label %180

165:                                              ; preds = %164
  br label %166

166:                                              ; preds = %217, %165
  %167 = invoke noundef ptr @_ZNK8orgQhull10QhullRidge9getRidgeTEv(ptr noundef nonnull align 8 dereferenceable(16) %17)
          to label %168 unwind label %184

168:                                              ; preds = %166
  %169 = getelementptr inbounds %struct.ridgeT, ptr %167, i32 0, i32 4
  %170 = load i8, ptr %169, align 4
  %171 = and i8 %170, 1
  %172 = zext i8 %171 to i32
  %173 = icmp ne i32 %172, 0
  %174 = xor i1 %173, true
  br i1 %174, label %188, label %175

175:                                              ; preds = %168
  store i32 8, ptr %18, align 4
  br label %227

176:                                              ; preds = %381, %341, %336, %160
  %177 = landingpad { ptr, i32 }
          cleanup
  %178 = extractvalue { ptr, i32 } %177, 0
  store ptr %178, ptr %7, align 8
  %179 = extractvalue { ptr, i32 } %177, 1
  store i32 %179, ptr %8, align 4
  br label %439

180:                                              ; preds = %164
  %181 = landingpad { ptr, i32 }
          cleanup
  %182 = extractvalue { ptr, i32 } %181, 0
  store ptr %182, ptr %7, align 8
  %183 = extractvalue { ptr, i32 } %181, 1
  store i32 %183, ptr %8, align 4
  br label %229

184:                                              ; preds = %203, %188, %166
  %185 = landingpad { ptr, i32 }
          cleanup
  %186 = extractvalue { ptr, i32 } %185, 0
  store ptr %186, ptr %7, align 8
  %187 = extractvalue { ptr, i32 } %185, 1
  store i32 %187, ptr %8, align 4
  br label %228

188:                                              ; preds = %168
  %189 = invoke noundef ptr @_ZNK8orgQhull10QhullRidge9getRidgeTEv(ptr noundef nonnull align 8 dereferenceable(16) %17)
          to label %190 unwind label %184

190:                                              ; preds = %188
  %191 = getelementptr inbounds %struct.ridgeT, ptr %189, i32 0, i32 4
  %192 = load i8, ptr %191, align 4
  %193 = and i8 %192, -2
  %194 = or i8 %193, 1
  store i8 %194, ptr %191, align 4
  %195 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #5
  %196 = invoke { ptr, ptr } @_ZNK8orgQhull10QhullRidge5printEPKc(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef @.str.58)
          to label %197 unwind label %209

197:                                              ; preds = %190
  %198 = getelementptr inbounds { ptr, ptr }, ptr %19, i32 0, i32 0
  %199 = extractvalue { ptr, ptr } %196, 0
  store ptr %199, ptr %198, align 8
  %200 = getelementptr inbounds { ptr, ptr }, ptr %19, i32 0, i32 1
  %201 = extractvalue { ptr, ptr } %196, 1
  store ptr %201, ptr %200, align 8
  %202 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRKN8orgQhull10QhullRidge10PrintRidgeE(ptr noundef nonnull align 8 dereferenceable(8) %195, ptr noundef nonnull align 8 dereferenceable(16) %19)
          to label %203 unwind label %209

203:                                              ; preds = %197
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #5
  %204 = load i32, ptr %16, align 4, !tbaa !22
  %205 = add nsw i32 %204, 1
  store i32 %205, ptr %16, align 4, !tbaa !22
  %206 = invoke noundef zeroext i1 @_ZNK8orgQhull10QhullRidge14hasNextRidge3dERKNS_10QhullFacetE(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %5)
          to label %207 unwind label %184

207:                                              ; preds = %203
  br i1 %206, label %213, label %208

208:                                              ; preds = %207
  store i32 8, ptr %18, align 4
  br label %227

209:                                              ; preds = %197, %190
  %210 = landingpad { ptr, i32 }
          cleanup
  %211 = extractvalue { ptr, i32 } %210, 0
  store ptr %211, ptr %7, align 8
  %212 = extractvalue { ptr, i32 } %210, 1
  store i32 %212, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #5
  br label %228

213:                                              ; preds = %207
  br label %214

214:                                              ; preds = %213
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #5
  invoke void @_ZNK8orgQhull10QhullRidge11nextRidge3dERKNS_10QhullFacetE(ptr dead_on_unwind writable sret(%"class.orgQhull::QhullRidge") align 8 %20, ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %5)
          to label %215 unwind label %218

215:                                              ; preds = %214
  %216 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN8orgQhull10QhullRidgeaSERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %217 unwind label %222

217:                                              ; preds = %215
  call void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #5
  br label %166, !llvm.loop !23

218:                                              ; preds = %214
  %219 = landingpad { ptr, i32 }
          cleanup
  %220 = extractvalue { ptr, i32 } %219, 0
  store ptr %220, ptr %7, align 8
  %221 = extractvalue { ptr, i32 } %219, 1
  store i32 %221, ptr %8, align 4
  br label %226

222:                                              ; preds = %215
  %223 = landingpad { ptr, i32 }
          cleanup
  %224 = extractvalue { ptr, i32 } %223, 0
  store ptr %224, ptr %7, align 8
  %225 = extractvalue { ptr, i32 } %223, 1
  store i32 %225, ptr %8, align 4
  call void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #5
  br label %226

226:                                              ; preds = %222, %218
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #5
  br label %228

227:                                              ; preds = %208, %175
  call void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #5
  br label %230

228:                                              ; preds = %226, %209, %184
  call void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #5
  br label %229

229:                                              ; preds = %228, %180
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #5
  br label %439

230:                                              ; preds = %227
  br label %336

231:                                              ; preds = %162
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #5
  invoke void @_ZNK8orgQhull10QhullFacet14neighborFacetsEv(ptr dead_on_unwind writable sret(%"class.orgQhull::QhullFacetSet") align 8 %21, ptr noundef nonnull align 8 dereferenceable(16) %5)
          to label %232 unwind label %239

232:                                              ; preds = %231
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #5
  invoke void @_ZN8orgQhull8QhullSetINS_10QhullFacetEE5beginEv(ptr dead_on_unwind writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullFacet>::iterator") align 8 %22, ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %233 unwind label %243

233:                                              ; preds = %232
  br label %234

234:                                              ; preds = %330, %233
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #5
  invoke void @_ZN8orgQhull8QhullSetINS_10QhullFacetEE3endEv(ptr dead_on_unwind writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullFacet>::iterator") align 8 %23, ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %235 unwind label %247

235:                                              ; preds = %234
  %236 = invoke noundef zeroext i1 @_ZNK8orgQhull8QhullSetINS_10QhullFacetEE8iteratorneERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(16) %23)
          to label %237 unwind label %247

237:                                              ; preds = %235
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #5
  br i1 %236, label %251, label %238

238:                                              ; preds = %237
  store i32 11, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #5
  br label %334

239:                                              ; preds = %231
  %240 = landingpad { ptr, i32 }
          cleanup
  %241 = extractvalue { ptr, i32 } %240, 0
  store ptr %241, ptr %7, align 8
  %242 = extractvalue { ptr, i32 } %240, 1
  store i32 %242, ptr %8, align 4
  br label %335

243:                                              ; preds = %328, %232
  %244 = landingpad { ptr, i32 }
          cleanup
  %245 = extractvalue { ptr, i32 } %244, 0
  store ptr %245, ptr %7, align 8
  %246 = extractvalue { ptr, i32 } %244, 1
  store i32 %246, ptr %8, align 4
  br label %333

247:                                              ; preds = %235, %234
  %248 = landingpad { ptr, i32 }
          cleanup
  %249 = extractvalue { ptr, i32 } %248, 0
  store ptr %249, ptr %7, align 8
  %250 = extractvalue { ptr, i32 } %248, 1
  store i32 %250, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #5
  br label %333

251:                                              ; preds = %237
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #5
  invoke void @_ZNK8orgQhull8QhullSetINS_10QhullFacetEE8iteratordeEv(ptr dead_on_unwind writable sret(%"class.orgQhull::QhullFacet") align 8 %24, ptr noundef nonnull align 8 dereferenceable(16) %22)
          to label %252 unwind label %260

252:                                              ; preds = %251
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #5
  invoke void @_ZNK8orgQhull10QhullFacet6ridgesEv(ptr dead_on_unwind writable sret(%"class.orgQhull::QhullSet.6") align 8 %25, ptr noundef nonnull align 8 dereferenceable(16) %24)
          to label %253 unwind label %264

253:                                              ; preds = %252
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #5
  invoke void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE5beginEv(ptr dead_on_unwind writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator") align 8 %26, ptr noundef nonnull align 8 dereferenceable(16) %25)
          to label %254 unwind label %268

254:                                              ; preds = %253
  br label %255

255:                                              ; preds = %323, %254
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #5
  invoke void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE3endEv(ptr dead_on_unwind writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator") align 8 %27, ptr noundef nonnull align 8 dereferenceable(16) %25)
          to label %256 unwind label %272

256:                                              ; preds = %255
  %257 = invoke noundef zeroext i1 @_ZNK8orgQhull8QhullSetINS_10QhullRidgeEE8iteratorneERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef nonnull align 8 dereferenceable(16) %27)
          to label %258 unwind label %272

258:                                              ; preds = %256
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #5
  br i1 %257, label %276, label %259

259:                                              ; preds = %258
  store i32 14, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #5
  br label %327

260:                                              ; preds = %251
  %261 = landingpad { ptr, i32 }
          cleanup
  %262 = extractvalue { ptr, i32 } %261, 0
  store ptr %262, ptr %7, align 8
  %263 = extractvalue { ptr, i32 } %261, 1
  store i32 %263, ptr %8, align 4
  br label %332

264:                                              ; preds = %252
  %265 = landingpad { ptr, i32 }
          cleanup
  %266 = extractvalue { ptr, i32 } %265, 0
  store ptr %266, ptr %7, align 8
  %267 = extractvalue { ptr, i32 } %265, 1
  store i32 %267, ptr %8, align 4
  br label %331

268:                                              ; preds = %321, %253
  %269 = landingpad { ptr, i32 }
          cleanup
  %270 = extractvalue { ptr, i32 } %269, 0
  store ptr %270, ptr %7, align 8
  %271 = extractvalue { ptr, i32 } %269, 1
  store i32 %271, ptr %8, align 4
  br label %326

272:                                              ; preds = %256, %255
  %273 = landingpad { ptr, i32 }
          cleanup
  %274 = extractvalue { ptr, i32 } %273, 0
  store ptr %274, ptr %7, align 8
  %275 = extractvalue { ptr, i32 } %273, 1
  store i32 %275, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #5
  br label %326

276:                                              ; preds = %258
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #5
  invoke void @_ZNK8orgQhull8QhullSetINS_10QhullRidgeEE8iteratordeEv(ptr dead_on_unwind writable sret(%"class.orgQhull::QhullRidge") align 8 %28, ptr noundef nonnull align 8 dereferenceable(16) %26)
          to label %277 unwind label %299

277:                                              ; preds = %276
  call void @llvm.lifetime.start.p0(i64 16, ptr %29) #5
  invoke void @_ZNK8orgQhull10QhullRidge10otherFacetERKNS_10QhullFacetE(ptr dead_on_unwind writable sret(%"class.orgQhull::QhullFacet") align 8 %29, ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef nonnull align 8 dereferenceable(16) %24)
          to label %278 unwind label %303

278:                                              ; preds = %277
  %279 = invoke noundef zeroext i1 @_ZNK8orgQhull10QhullFaceteqERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %29, ptr noundef nonnull align 8 dereferenceable(16) %5)
          to label %280 unwind label %307

280:                                              ; preds = %278
  call void @_ZN8orgQhull10QhullFacetD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #5
  br i1 %279, label %281, label %320

281:                                              ; preds = %280
  %282 = invoke noundef ptr @_ZNK8orgQhull10QhullRidge9getRidgeTEv(ptr noundef nonnull align 8 dereferenceable(16) %28)
          to label %283 unwind label %312

283:                                              ; preds = %281
  %284 = getelementptr inbounds %struct.ridgeT, ptr %282, i32 0, i32 4
  %285 = load i8, ptr %284, align 4
  %286 = and i8 %285, -2
  %287 = or i8 %286, 1
  store i8 %287, ptr %284, align 4
  %288 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #5
  %289 = invoke { ptr, ptr } @_ZNK8orgQhull10QhullRidge5printEPKc(ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef @.str.58)
          to label %290 unwind label %316

290:                                              ; preds = %283
  %291 = getelementptr inbounds { ptr, ptr }, ptr %30, i32 0, i32 0
  %292 = extractvalue { ptr, ptr } %289, 0
  store ptr %292, ptr %291, align 8
  %293 = getelementptr inbounds { ptr, ptr }, ptr %30, i32 0, i32 1
  %294 = extractvalue { ptr, ptr } %289, 1
  store ptr %294, ptr %293, align 8
  %295 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRKN8orgQhull10QhullRidge10PrintRidgeE(ptr noundef nonnull align 8 dereferenceable(8) %288, ptr noundef nonnull align 8 dereferenceable(16) %30)
          to label %296 unwind label %316

296:                                              ; preds = %290
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #5
  %297 = load i32, ptr %16, align 4, !tbaa !22
  %298 = add nsw i32 %297, 1
  store i32 %298, ptr %16, align 4, !tbaa !22
  br label %320

299:                                              ; preds = %276
  %300 = landingpad { ptr, i32 }
          cleanup
  %301 = extractvalue { ptr, i32 } %300, 0
  store ptr %301, ptr %7, align 8
  %302 = extractvalue { ptr, i32 } %300, 1
  store i32 %302, ptr %8, align 4
  br label %325

303:                                              ; preds = %277
  %304 = landingpad { ptr, i32 }
          cleanup
  %305 = extractvalue { ptr, i32 } %304, 0
  store ptr %305, ptr %7, align 8
  %306 = extractvalue { ptr, i32 } %304, 1
  store i32 %306, ptr %8, align 4
  br label %311

307:                                              ; preds = %278
  %308 = landingpad { ptr, i32 }
          cleanup
  %309 = extractvalue { ptr, i32 } %308, 0
  store ptr %309, ptr %7, align 8
  %310 = extractvalue { ptr, i32 } %308, 1
  store i32 %310, ptr %8, align 4
  call void @_ZN8orgQhull10QhullFacetD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #5
  br label %311

311:                                              ; preds = %307, %303
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #5
  br label %324

312:                                              ; preds = %281
  %313 = landingpad { ptr, i32 }
          cleanup
  %314 = extractvalue { ptr, i32 } %313, 0
  store ptr %314, ptr %7, align 8
  %315 = extractvalue { ptr, i32 } %313, 1
  store i32 %315, ptr %8, align 4
  br label %324

316:                                              ; preds = %290, %283
  %317 = landingpad { ptr, i32 }
          cleanup
  %318 = extractvalue { ptr, i32 } %317, 0
  store ptr %318, ptr %7, align 8
  %319 = extractvalue { ptr, i32 } %317, 1
  store i32 %319, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #5
  br label %324

320:                                              ; preds = %296, %280
  call void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #5
  br label %321

321:                                              ; preds = %320
  %322 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %26)
          to label %323 unwind label %268

323:                                              ; preds = %321
  br label %255, !llvm.loop !24

324:                                              ; preds = %316, %312, %311
  call void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #5
  br label %325

325:                                              ; preds = %324, %299
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #5
  br label %326

326:                                              ; preds = %325, %272, %268
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #5
  call void @_ZN8orgQhull12QhullSetBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #5
  br label %331

327:                                              ; preds = %259
  call void @_ZN8orgQhull12QhullSetBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #5
  call void @_ZN8orgQhull10QhullFacetD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #5
  br label %328

328:                                              ; preds = %327
  %329 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN8orgQhull8QhullSetINS_10QhullFacetEE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %22)
          to label %330 unwind label %243

330:                                              ; preds = %328
  br label %234, !llvm.loop !25

331:                                              ; preds = %326, %264
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #5
  call void @_ZN8orgQhull10QhullFacetD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #5
  br label %332

332:                                              ; preds = %331, %260
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #5
  br label %333

333:                                              ; preds = %332, %247, %243
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #5
  call void @_ZN8orgQhull12QhullSetBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(17) %21) #5
  br label %335

334:                                              ; preds = %238
  call void @_ZN8orgQhull12QhullSetBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(17) %21) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #5
  br label %336

335:                                              ; preds = %333, %239
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #5
  br label %439

336:                                              ; preds = %334, %230
  %337 = load i32, ptr %16, align 4, !tbaa !22
  %338 = invoke noundef i32 @_ZNK8orgQhull12QhullSetBase5countEv(ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %339 unwind label %176

339:                                              ; preds = %336
  %340 = icmp ne i32 %337, %338
  br i1 %340, label %341, label %385

341:                                              ; preds = %339
  %342 = load ptr, ptr %3, align 8, !tbaa !5
  %343 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %342, ptr noundef @.str.59)
          to label %344 unwind label %176

344:                                              ; preds = %341
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #5
  invoke void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE5beginEv(ptr dead_on_unwind writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator") align 8 %31, ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %345 unwind label %351

345:                                              ; preds = %344
  br label %346

346:                                              ; preds = %370, %345
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #5
  invoke void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE3endEv(ptr dead_on_unwind writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator") align 8 %32, ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %347 unwind label %355

347:                                              ; preds = %346
  %348 = invoke noundef zeroext i1 @_ZNK8orgQhull8QhullSetINS_10QhullRidgeEE8iteratorneERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(16) %32)
          to label %349 unwind label %355

349:                                              ; preds = %347
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #5
  br i1 %348, label %359, label %350

350:                                              ; preds = %349
  store i32 17, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #5
  br label %381

351:                                              ; preds = %368, %344
  %352 = landingpad { ptr, i32 }
          cleanup
  %353 = extractvalue { ptr, i32 } %352, 0
  store ptr %353, ptr %7, align 8
  %354 = extractvalue { ptr, i32 } %352, 1
  store i32 %354, ptr %8, align 4
  br label %380

355:                                              ; preds = %347, %346
  %356 = landingpad { ptr, i32 }
          cleanup
  %357 = extractvalue { ptr, i32 } %356, 0
  store ptr %357, ptr %7, align 8
  %358 = extractvalue { ptr, i32 } %356, 1
  store i32 %358, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #5
  br label %380

359:                                              ; preds = %349
  call void @llvm.lifetime.start.p0(i64 16, ptr %33) #5
  invoke void @_ZNK8orgQhull8QhullSetINS_10QhullRidgeEE8iteratordeEv(ptr dead_on_unwind writable sret(%"class.orgQhull::QhullRidge") align 8 %33, ptr noundef nonnull align 8 dereferenceable(16) %31)
          to label %360 unwind label %371

360:                                              ; preds = %359
  %361 = load ptr, ptr %3, align 8, !tbaa !5
  %362 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %361, ptr noundef @.str.56)
          to label %363 unwind label %375

363:                                              ; preds = %360
  %364 = invoke noundef i32 @_ZNK8orgQhull10QhullRidge2idEv(ptr noundef nonnull align 8 dereferenceable(16) %33)
          to label %365 unwind label %375

365:                                              ; preds = %363
  %366 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %362, i32 noundef %364)
          to label %367 unwind label %375

367:                                              ; preds = %365
  call void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #5
  br label %368

368:                                              ; preds = %367
  %369 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %31)
          to label %370 unwind label %351

370:                                              ; preds = %368
  br label %346, !llvm.loop !26

371:                                              ; preds = %359
  %372 = landingpad { ptr, i32 }
          cleanup
  %373 = extractvalue { ptr, i32 } %372, 0
  store ptr %373, ptr %7, align 8
  %374 = extractvalue { ptr, i32 } %372, 1
  store i32 %374, ptr %8, align 4
  br label %379

375:                                              ; preds = %365, %363, %360
  %376 = landingpad { ptr, i32 }
          cleanup
  %377 = extractvalue { ptr, i32 } %376, 0
  store ptr %377, ptr %7, align 8
  %378 = extractvalue { ptr, i32 } %376, 1
  store i32 %378, ptr %8, align 4
  call void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #5
  br label %379

379:                                              ; preds = %375, %371
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #5
  br label %380

380:                                              ; preds = %379, %355, %351
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #5
  br label %439

381:                                              ; preds = %350
  %382 = load ptr, ptr %3, align 8, !tbaa !5
  %383 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %382, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %384 unwind label %176

384:                                              ; preds = %381
  br label %385

385:                                              ; preds = %384, %339
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #5
  invoke void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE5beginEv(ptr dead_on_unwind writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator") align 8 %34, ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %386 unwind label %392

386:                                              ; preds = %385
  br label %387

387:                                              ; preds = %434, %386
  call void @llvm.lifetime.start.p0(i64 16, ptr %35) #5
  invoke void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE3endEv(ptr dead_on_unwind writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator") align 8 %35, ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %388 unwind label %396

388:                                              ; preds = %387
  %389 = invoke noundef zeroext i1 @_ZNK8orgQhull8QhullSetINS_10QhullRidgeEE8iteratorneERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(16) %35)
          to label %390 unwind label %396

390:                                              ; preds = %388
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #5
  br i1 %389, label %400, label %391

391:                                              ; preds = %390
  store i32 20, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #5
  br label %438

392:                                              ; preds = %432, %385
  %393 = landingpad { ptr, i32 }
          cleanup
  %394 = extractvalue { ptr, i32 } %393, 0
  store ptr %394, ptr %7, align 8
  %395 = extractvalue { ptr, i32 } %393, 1
  store i32 %395, ptr %8, align 4
  br label %437

396:                                              ; preds = %388, %387
  %397 = landingpad { ptr, i32 }
          cleanup
  %398 = extractvalue { ptr, i32 } %397, 0
  store ptr %398, ptr %7, align 8
  %399 = extractvalue { ptr, i32 } %397, 1
  store i32 %399, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #5
  br label %437

400:                                              ; preds = %390
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #5
  invoke void @_ZNK8orgQhull8QhullSetINS_10QhullRidgeEE8iteratordeEv(ptr dead_on_unwind writable sret(%"class.orgQhull::QhullRidge") align 8 %36, ptr noundef nonnull align 8 dereferenceable(16) %34)
          to label %401 unwind label %419

401:                                              ; preds = %400
  %402 = invoke noundef ptr @_ZNK8orgQhull10QhullRidge9getRidgeTEv(ptr noundef nonnull align 8 dereferenceable(16) %36)
          to label %403 unwind label %423

403:                                              ; preds = %401
  %404 = getelementptr inbounds %struct.ridgeT, ptr %402, i32 0, i32 4
  %405 = load i8, ptr %404, align 4
  %406 = and i8 %405, 1
  %407 = zext i8 %406 to i32
  %408 = icmp ne i32 %407, 0
  br i1 %408, label %431, label %409

409:                                              ; preds = %403
  %410 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #5
  %411 = invoke { ptr, ptr } @_ZNK8orgQhull10QhullRidge5printEPKc(ptr noundef nonnull align 8 dereferenceable(16) %36, ptr noundef @.str.58)
          to label %412 unwind label %427

412:                                              ; preds = %409
  %413 = getelementptr inbounds { ptr, ptr }, ptr %37, i32 0, i32 0
  %414 = extractvalue { ptr, ptr } %411, 0
  store ptr %414, ptr %413, align 8
  %415 = getelementptr inbounds { ptr, ptr }, ptr %37, i32 0, i32 1
  %416 = extractvalue { ptr, ptr } %411, 1
  store ptr %416, ptr %415, align 8
  %417 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRKN8orgQhull10QhullRidge10PrintRidgeE(ptr noundef nonnull align 8 dereferenceable(8) %410, ptr noundef nonnull align 8 dereferenceable(16) %37)
          to label %418 unwind label %427

418:                                              ; preds = %412
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #5
  br label %431

419:                                              ; preds = %400
  %420 = landingpad { ptr, i32 }
          cleanup
  %421 = extractvalue { ptr, i32 } %420, 0
  store ptr %421, ptr %7, align 8
  %422 = extractvalue { ptr, i32 } %420, 1
  store i32 %422, ptr %8, align 4
  br label %436

423:                                              ; preds = %401
  %424 = landingpad { ptr, i32 }
          cleanup
  %425 = extractvalue { ptr, i32 } %424, 0
  store ptr %425, ptr %7, align 8
  %426 = extractvalue { ptr, i32 } %424, 1
  store i32 %426, ptr %8, align 4
  br label %435

427:                                              ; preds = %412, %409
  %428 = landingpad { ptr, i32 }
          cleanup
  %429 = extractvalue { ptr, i32 } %428, 0
  store ptr %429, ptr %7, align 8
  %430 = extractvalue { ptr, i32 } %428, 1
  store i32 %430, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #5
  br label %435

431:                                              ; preds = %418, %403
  call void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #5
  br label %432

432:                                              ; preds = %431
  %433 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %34)
          to label %434 unwind label %392

434:                                              ; preds = %432
  br label %387, !llvm.loop !27

435:                                              ; preds = %427, %423
  call void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #5
  br label %436

436:                                              ; preds = %435, %419
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #5
  br label %437

437:                                              ; preds = %436, %396, %392
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #5
  br label %439

438:                                              ; preds = %391
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  br label %440

439:                                              ; preds = %437, %380, %335, %229, %176
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  br label %442

440:                                              ; preds = %438, %45
  %441 = load ptr, ptr %3, align 8, !tbaa !5
  store i32 1, ptr %18, align 4
  call void @_ZN8orgQhull12QhullSetBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #5
  call void @_ZN8orgQhull10QhullFacetD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %5) #5
  ret ptr %441

442:                                              ; preds = %439, %159, %113, %80
  call void @_ZN8orgQhull12QhullSetBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #5
  br label %443

443:                                              ; preds = %442, %76
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #5
  br label %444

444:                                              ; preds = %443, %72
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #5
  call void @_ZN8orgQhull10QhullFacetD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %5) #5
  br label %445

445:                                              ; preds = %444
  %446 = load ptr, ptr %7, align 8
  %447 = load i32, ptr %8, align 4
  %448 = insertvalue { ptr, i32 } poison, ptr %446, 0
  %449 = insertvalue { ptr, i32 } %448, i32 %447, 1
  resume { ptr, i32 } %449
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8orgQhull10QhullFacetD2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK8orgQhull10QhullFacet2qhEv(ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE5beginEv(ptr dead_on_unwind noalias writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK8orgQhull8QhullSetINS_10QhullRidgeEE8iteratorneERKS3_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE3endEv(ptr dead_on_unwind noalias writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK8orgQhull8QhullSetINS_10QhullRidgeEE8iteratordeEv(ptr dead_on_unwind noalias writable sret(%"class.orgQhull::QhullRidge") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK8orgQhull10QhullRidge2idEv(ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK8orgQhull10QhullRidge9getRidgeTEv(ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK8orgQhull10QhullFacet9dimensionEv(ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE5firstEv(ptr dead_on_unwind noalias writable sret(%"class.orgQhull::QhullRidge") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRKN8orgQhull10QhullRidge10PrintRidgeE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(16)) #4

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, ptr } @_ZNK8orgQhull10QhullRidge5printEPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #2 align 2

declare noundef zeroext i1 @_ZNK8orgQhull10QhullRidge14hasNextRidge3dERKNS_10QhullFacetE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK8orgQhull10QhullRidge11nextRidge3dERKNS_10QhullFacetE(ptr dead_on_unwind noalias writable sret(%"class.orgQhull::QhullRidge") align 8, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN8orgQhull10QhullRidgeaSERKS0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8orgQhull8QhullSetINS_10QhullFacetEE5beginEv(ptr dead_on_unwind noalias writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullFacet>::iterator") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK8orgQhull8QhullSetINS_10QhullFacetEE8iteratorneERKS3_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8orgQhull8QhullSetINS_10QhullFacetEE3endEv(ptr dead_on_unwind noalias writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullFacet>::iterator") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK8orgQhull8QhullSetINS_10QhullFacetEE8iteratordeEv(ptr dead_on_unwind noalias writable sret(%"class.orgQhull::QhullFacet") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK8orgQhull10QhullRidge10otherFacetERKNS_10QhullFacetE(ptr dead_on_unwind noalias writable sret(%"class.orgQhull::QhullFacet") align 8, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK8orgQhull10QhullFaceteqERKS0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN8orgQhull8QhullSetINS_10QhullFacetEE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK8orgQhull12QhullSetBase5countEv(ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

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

!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++ TBAA"}
!9 = !{!10, !6, i64 0}
!10 = !{!"_ZTSN8orgQhull10QhullFacet11PrintRidgesE", !6, i64 0}
!11 = !{!12, !13, i64 2648}
!12 = !{!"_ZTS3qhT", !13, i64 0, !13, i64 4, !13, i64 8, !14, i64 16, !13, i64 24, !13, i64 28, !13, i64 32, !13, i64 36, !13, i64 40, !13, i64 44, !13, i64 48, !14, i64 56, !14, i64 64, !13, i64 72, !13, i64 76, !13, i64 80, !13, i64 84, !13, i64 88, !6, i64 96, !13, i64 104, !13, i64 108, !6, i64 112, !13, i64 120, !13, i64 124, !13, i64 128, !13, i64 132, !13, i64 136, !13, i64 140, !13, i64 144, !14, i64 152, !14, i64 160, !13, i64 168, !13, i64 172, !13, i64 176, !14, i64 184, !14, i64 192, !13, i64 200, !14, i64 208, !13, i64 216, !13, i64 220, !13, i64 224, !13, i64 228, !13, i64 232, !13, i64 236, !13, i64 240, !13, i64 244, !13, i64 248, !13, i64 252, !13, i64 256, !13, i64 260, !13, i64 264, !13, i64 268, !13, i64 272, !13, i64 276, !13, i64 280, !13, i64 284, !13, i64 288, !13, i64 292, !7, i64 296, !13, i64 412, !13, i64 416, !13, i64 420, !13, i64 424, !13, i64 428, !13, i64 432, !13, i64 436, !13, i64 440, !13, i64 444, !14, i64 448, !14, i64 456, !14, i64 464, !13, i64 472, !13, i64 476, !13, i64 480, !13, i64 484, !13, i64 488, !13, i64 492, !13, i64 496, !13, i64 500, !13, i64 504, !13, i64 508, !13, i64 512, !13, i64 516, !13, i64 520, !13, i64 524, !13, i64 528, !13, i64 532, !13, i64 536, !13, i64 540, !14, i64 544, !13, i64 552, !13, i64 556, !13, i64 560, !13, i64 564, !13, i64 568, !13, i64 572, !13, i64 576, !13, i64 580, !14, i64 584, !13, i64 592, !6, i64 600, !6, i64 608, !13, i64 616, !13, i64 620, !13, i64 624, !13, i64 628, !13, i64 632, !6, i64 640, !13, i64 648, !6, i64 656, !13, i64 664, !7, i64 668, !13, i64 924, !7, i64 928, !7, i64 1184, !13, i64 1696, !13, i64 1700, !13, i64 1704, !13, i64 1708, !13, i64 1712, !13, i64 1716, !6, i64 1720, !6, i64 1728, !6, i64 1736, !6, i64 1744, !14, i64 1752, !14, i64 1760, !14, i64 1768, !14, i64 1776, !14, i64 1784, !14, i64 1792, !14, i64 1800, !14, i64 1808, !14, i64 1816, !14, i64 1824, !14, i64 1832, !14, i64 1840, !14, i64 1848, !13, i64 1856, !6, i64 1864, !14, i64 1872, !14, i64 1880, !14, i64 1888, !14, i64 1896, !7, i64 1904, !7, i64 1912, !7, i64 2112, !7, i64 2152, !7, i64 2352, !6, i64 2392, !6, i64 2400, !6, i64 2408, !6, i64 2416, !13, i64 2424, !13, i64 2428, !13, i64 2432, !6, i64 2440, !6, i64 2448, !6, i64 2456, !6, i64 2464, !6, i64 2472, !13, i64 2480, !13, i64 2484, !6, i64 2488, !13, i64 2496, !6, i64 2504, !6, i64 2512, !6, i64 2520, !6, i64 2528, !13, i64 2536, !13, i64 2540, !13, i64 2544, !13, i64 2548, !13, i64 2552, !13, i64 2556, !13, i64 2560, !15, i64 2568, !13, i64 2576, !13, i64 2580, !16, i64 2584, !13, i64 2588, !6, i64 2592, !13, i64 2600, !13, i64 2604, !14, i64 2608, !13, i64 2616, !14, i64 2624, !14, i64 2632, !14, i64 2640, !13, i64 2648, !13, i64 2652, !13, i64 2656, !13, i64 2660, !14, i64 2664, !14, i64 2672, !13, i64 2680, !13, i64 2684, !13, i64 2688, !13, i64 2692, !14, i64 2696, !14, i64 2704, !13, i64 2712, !13, i64 2716, !13, i64 2720, !13, i64 2724, !6, i64 2728, !6, i64 2736, !6, i64 2744, !6, i64 2752, !6, i64 2760, !6, i64 2768, !6, i64 2776, !6, i64 2784, !13, i64 2792, !6, i64 2800, !6, i64 2808, !13, i64 2816, !13, i64 2820, !13, i64 2824, !6, i64 2832, !14, i64 2840, !14, i64 2848, !14, i64 2856, !13, i64 2864, !13, i64 2868, !6, i64 2872, !13, i64 2880, !13, i64 2884, !7, i64 2888, !7, i64 3088, !13, i64 3128, !14, i64 3136, !6, i64 3144, !17, i64 3152, !18, i64 3304}
!13 = !{!"int", !7, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = !{!"long", !7, i64 0}
!16 = !{!"_ZTS9qh_CENTER", !7, i64 0}
!17 = !{!"_ZTS6qhmemT", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !13, i64 64, !6, i64 72, !6, i64 80, !13, i64 88, !13, i64 92, !13, i64 96, !13, i64 100, !13, i64 104, !13, i64 108, !13, i64 112, !13, i64 116, !13, i64 120, !13, i64 124, !13, i64 128, !13, i64 132, !13, i64 136, !13, i64 140, !13, i64 144}
!18 = !{!"_ZTS7qhstatT", !7, i64 0, !7, i64 1816, !7, i64 2056, !7, i64 3872, !7, i64 4326, !7, i64 4553, !7, i64 4784, !13, i64 4856, !13, i64 4860, !13, i64 4864, !13, i64 4868, !14, i64 4872}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = distinct !{!21, !20}
!22 = !{!13, !13, i64 0}
!23 = distinct !{!23, !20}
!24 = distinct !{!24, !20}
!25 = distinct !{!25, !20}
!26 = distinct !{!26, !20}
!27 = distinct !{!27, !20}


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

%"class.orgQhull::QhullFacetSet" = type <{ %"class.orgQhull::QhullSet.5", i8, [7 x i8] }>
%"class.orgQhull::QhullSet.5" = type { %"class.orgQhull::QhullSetBase" }
%"class.orgQhull::QhullSetBase" = type { ptr, ptr }
%"class.orgQhull::QhullSet.6" = type { %"class.orgQhull::QhullSetBase" }
%"class.orgQhull::QhullFacet" = type { ptr, ptr }
%"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator" = type { ptr, ptr }
%"class.orgQhull::QhullRidge" = type { ptr, ptr }
%"struct.orgQhull::QhullRidge::PrintRidge" = type { ptr, ptr }
%"class.orgQhull::QhullSet<orgQhull::QhullFacet>::iterator" = type { ptr, ptr }

@.str.55 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [19 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 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK8orgQhull10QhullFacet9getFacetTEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK8orgQhull10QhullFacet14neighborFacetsEv(ptr dead_on_unwind noalias writable sret(%"class.orgQhull::QhullFacetSet") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK8orgQhull10QhullFacet6ridgesEv(ptr dead_on_unwind noalias writable sret(%"class.orgQhull::QhullSet.6") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8orgQhull10QhullFacetC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK8orgQhull12QhullSetBase7isEmptyEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8orgQhull12QhullSetBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRKN8orgQhull10QhullFacet11PrintRidgesE(ptr noundef nonnull returned align 8 dereferenceable(8) %0, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %1) local_unnamed_addr #2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.orgQhull::QhullFacet", align 8
  %4 = alloca %"class.orgQhull::QhullSet.6", align 8
  %5 = alloca %"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator", align 8
  %6 = alloca %"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator", align 8
  %7 = alloca %"class.orgQhull::QhullRidge", align 8
  %8 = alloca %"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator", align 8
  %9 = alloca %"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator", align 8
  %10 = alloca %"class.orgQhull::QhullRidge", align 8
  %11 = alloca %"class.orgQhull::QhullRidge", align 8
  %12 = alloca %"struct.orgQhull::QhullRidge::PrintRidge", align 8
  %13 = alloca %"class.orgQhull::QhullRidge", align 8
  %14 = alloca %"class.orgQhull::QhullFacetSet", align 8
  %15 = alloca %"class.orgQhull::QhullSet<orgQhull::QhullFacet>::iterator", align 8
  %16 = alloca %"class.orgQhull::QhullSet<orgQhull::QhullFacet>::iterator", align 8
  %17 = alloca %"class.orgQhull::QhullFacet", align 8
  %18 = alloca %"class.orgQhull::QhullSet.6", align 8
  %19 = alloca %"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator", align 8
  %20 = alloca %"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator", align 8
  %21 = alloca %"class.orgQhull::QhullRidge", align 8
  %22 = alloca %"class.orgQhull::QhullFacet", align 8
  %23 = alloca %"struct.orgQhull::QhullRidge::PrintRidge", align 8
  %24 = alloca %"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator", align 8
  %25 = alloca %"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator", align 8
  %26 = alloca %"class.orgQhull::QhullRidge", align 8
  %27 = alloca %"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator", align 8
  %28 = alloca %"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator", align 8
  %29 = alloca %"class.orgQhull::QhullRidge", align 8
  %30 = alloca %"struct.orgQhull::QhullRidge::PrintRidge", align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #5
  %31 = load ptr, ptr %1, align 8, !tbaa !5
  call void @_ZN8orgQhull10QhullFacetC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %31)
  %32 = call noundef ptr @_ZNK8orgQhull10QhullFacet9getFacetTEv(ptr noundef nonnull align 8 dereferenceable(16) %3)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #5
  invoke void @_ZNK8orgQhull10QhullFacet6ridgesEv(ptr dead_on_unwind nonnull writable sret(%"class.orgQhull::QhullSet.6") align 8 %4, ptr noundef nonnull align 8 dereferenceable(16) %3)
          to label %33 unwind label %51

33:                                               ; preds = %2
  %34 = call noundef zeroext i1 @_ZNK8orgQhull12QhullSetBase7isEmptyEv(ptr noundef nonnull align 8 dereferenceable(16) %4)
  br i1 %34, label %259, label %35

35:                                               ; preds = %33
  %36 = getelementptr inbounds i8, ptr %32, i64 112
  %37 = load i32, ptr %36, align 8
  %38 = and i32 %37, 2048
  %.not = icmp eq i32 %38, 0
  br i1 %.not, label %73, label %39

39:                                               ; preds = %35
  %40 = load ptr, ptr %1, align 8, !tbaa !5
  %41 = call noundef ptr @_ZNK8orgQhull10QhullFacet2qhEv(ptr noundef nonnull align 8 dereferenceable(16) %40)
  %42 = getelementptr inbounds i8, ptr %41, i64 2648
  %43 = load i32, ptr %42, align 8, !tbaa !10
  %.not43 = icmp eq i32 %43, 0
  br i1 %.not43, label %73, label %44

44:                                               ; preds = %39
  %45 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.55)
          to label %46 unwind label %53

46:                                               ; preds = %44
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #5
  invoke void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator") align 8 %5, ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %.preheader76 unwind label %55

.preheader76:                                     ; preds = %46, %65
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #5
  invoke void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator") align 8 %6, ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %47 unwind label %57

47:                                               ; preds = %.preheader76
  %48 = invoke noundef zeroext i1 @_ZNK8orgQhull8QhullSetINS_10QhullRidgeEE8iteratorneERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %6)
          to label %49 unwind label %57

49:                                               ; preds = %47
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #5
  br i1 %48, label %59, label %50

50:                                               ; preds = %49
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #5
  br label %.invoke

51:                                               ; preds = %2
  %52 = landingpad { ptr, i32 }
          cleanup
  br label %261

53:                                               ; preds = %.invoke, %73, %44
  %54 = landingpad { ptr, i32 }
          cleanup
  br label %260

55:                                               ; preds = %46
  %56 = landingpad { ptr, i32 }
          cleanup
  br label %72

57:                                               ; preds = %47, %.preheader76
  %58 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #5
  br label %72

59:                                               ; preds = %49
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #5
  invoke void @_ZNK8orgQhull8QhullSetINS_10QhullRidgeEE8iteratordeEv(ptr dead_on_unwind nonnull writable sret(%"class.orgQhull::QhullRidge") align 8 %7, ptr noundef nonnull align 8 dereferenceable(16) %5)
          to label %60 unwind label %67

60:                                               ; preds = %59
  %61 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.56)
          to label %62 unwind label %69

62:                                               ; preds = %60
  %63 = call noundef i32 @_ZNK8orgQhull10QhullRidge2idEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
  %64 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %61, i32 noundef %63)
          to label %65 unwind label %69

65:                                               ; preds = %62
  call void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #5
  %66 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  br label %.preheader76, !llvm.loop !18

67:                                               ; preds = %59
  %68 = landingpad { ptr, i32 }
          cleanup
  br label %71

69:                                               ; preds = %62, %60
  %70 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #5
  br label %71

71:                                               ; preds = %69, %67
  %.pn66 = phi { ptr, i32 } [ %70, %69 ], [ %68, %67 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #5
  br label %72

72:                                               ; preds = %71, %57, %55
  %.pn66.pn = phi { ptr, i32 } [ %.pn66, %71 ], [ %58, %57 ], [ %56, %55 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #5
  br label %260

73:                                               ; preds = %39, %35
  %74 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.57)
          to label %.invoke unwind label %53

.invoke:                                          ; preds = %73, %50
  %75 = phi ptr [ %0, %50 ], [ %74, %73 ]
  %76 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %77 unwind label %53

77:                                               ; preds = %.invoke
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #5
  invoke void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator") align 8 %8, ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %.preheader75 unwind label %84

.preheader75:                                     ; preds = %77, %89
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #5
  invoke void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator") align 8 %9, ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %78 unwind label %86

78:                                               ; preds = %.preheader75
  %79 = invoke noundef zeroext i1 @_ZNK8orgQhull8QhullSetINS_10QhullRidgeEE8iteratorneERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %80 unwind label %86

80:                                               ; preds = %78
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #5
  br i1 %79, label %88, label %81

81:                                               ; preds = %80
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #5
  %82 = call noundef i32 @_ZNK8orgQhull10QhullFacet9dimensionEv(ptr noundef nonnull align 8 dereferenceable(16) %3)
  %83 = icmp eq i32 %82, 3
  br i1 %83, label %98, label %137

84:                                               ; preds = %77
  %85 = landingpad { ptr, i32 }
          cleanup
  br label %97

86:                                               ; preds = %78, %.preheader75
  %87 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #5
  br label %97

88:                                               ; preds = %80
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #5
  invoke void @_ZNK8orgQhull8QhullSetINS_10QhullRidgeEE8iteratordeEv(ptr dead_on_unwind nonnull writable sret(%"class.orgQhull::QhullRidge") align 8 %10, ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %89 unwind label %95

89:                                               ; preds = %88
  %90 = call noundef ptr @_ZNK8orgQhull10QhullRidge9getRidgeTEv(ptr noundef nonnull align 8 dereferenceable(16) %10)
  %91 = getelementptr inbounds i8, ptr %90, i64 28
  %92 = load i8, ptr %91, align 4
  %93 = and i8 %92, -2
  store i8 %93, ptr %91, align 4
  call void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #5
  %94 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %8)
  br label %.preheader75, !llvm.loop !20

95:                                               ; preds = %88
  %96 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #5
  br label %97

97:                                               ; preds = %95, %86, %84
  %.pn64 = phi { ptr, i32 } [ %96, %95 ], [ %87, %86 ], [ %85, %84 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #5
  br label %260

98:                                               ; preds = %81
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #5
  invoke void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE5firstEv(ptr dead_on_unwind nonnull writable sret(%"class.orgQhull::QhullRidge") align 8 %11, ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %.preheader72 unwind label %106

.preheader72:                                     ; preds = %98
  %99 = call noundef ptr @_ZNK8orgQhull10QhullRidge9getRidgeTEv(ptr noundef nonnull align 8 dereferenceable(16) %11)
  %100 = getelementptr inbounds i8, ptr %99, i64 28
  %101 = load i8, ptr %100, align 4
  %102 = and i8 %101, 1
  %.not5189 = icmp eq i8 %102, 0
  br i1 %.not5189, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader72
  %103 = getelementptr inbounds i8, ptr %12, i64 8
  br label %110

104:                                              ; preds = %207, %201, %198
  %105 = landingpad { ptr, i32 }
          cleanup
  br label %260

106:                                              ; preds = %98
  %107 = landingpad { ptr, i32 }
          cleanup
  br label %136

108:                                              ; preds = %120
  %109 = landingpad { ptr, i32 }
          cleanup
  br label %135

110:                                              ; preds = %.lr.ph, %127
  %.090 = phi i32 [ 0, %.lr.ph ], [ %121, %127 ]
  %111 = call noundef ptr @_ZNK8orgQhull10QhullRidge9getRidgeTEv(ptr noundef nonnull align 8 dereferenceable(16) %11)
  %112 = getelementptr inbounds i8, ptr %111, i64 28
  %113 = load i8, ptr %112, align 4
  %114 = or i8 %113, 1
  store i8 %114, ptr %112, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #5
  %115 = invoke { ptr, ptr } @_ZNK8orgQhull10QhullRidge5printEPKc(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull @.str.58)
          to label %116 unwind label %124

116:                                              ; preds = %110
  %117 = extractvalue { ptr, ptr } %115, 0
  store ptr %117, ptr %12, align 8
  %118 = extractvalue { ptr, ptr } %115, 1
  store ptr %118, ptr %103, align 8
  %119 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRKN8orgQhull10QhullRidge10PrintRidgeE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(16) %12)
          to label %120 unwind label %124

120:                                              ; preds = %116
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #5
  %121 = add nuw nsw i32 %.090, 1
  %122 = invoke noundef zeroext i1 @_ZNK8orgQhull10QhullRidge14hasNextRidge3dERKNS_10QhullFacetE(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 8 dereferenceable(16) %3)
          to label %123 unwind label %108

123:                                              ; preds = %120
  br i1 %122, label %126, label %._crit_edge

124:                                              ; preds = %116, %110
  %125 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #5
  br label %135

126:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #5
  invoke void @_ZNK8orgQhull10QhullRidge11nextRidge3dERKNS_10QhullFacetE(ptr dead_on_unwind nonnull writable sret(%"class.orgQhull::QhullRidge") align 8 %13, ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 8 dereferenceable(16) %3)
          to label %127 unwind label %133

127:                                              ; preds = %126
  %128 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8orgQhull10QhullRidgeaSERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 8 dereferenceable(16) %13)
  call void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #5
  %129 = call noundef ptr @_ZNK8orgQhull10QhullRidge9getRidgeTEv(ptr noundef nonnull align 8 dereferenceable(16) %11)
  %130 = getelementptr inbounds i8, ptr %129, i64 28
  %131 = load i8, ptr %130, align 4
  %132 = and i8 %131, 1
  %.not51 = icmp eq i8 %132, 0
  br i1 %.not51, label %110, label %._crit_edge, !llvm.loop !21

133:                                              ; preds = %126
  %134 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #5
  br label %135

._crit_edge:                                      ; preds = %127, %123, %.preheader72
  %.1 = phi i32 [ 0, %.preheader72 ], [ %121, %123 ], [ %121, %127 ]
  call void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #5
  br label %198

135:                                              ; preds = %133, %124, %108
  %.pn60 = phi { ptr, i32 } [ %134, %133 ], [ %109, %108 ], [ %125, %124 ]
  call void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #5
  br label %136

136:                                              ; preds = %135, %106
  %.pn60.pn = phi { ptr, i32 } [ %.pn60, %135 ], [ %107, %106 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #5
  br label %260

137:                                              ; preds = %81
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #5
  invoke void @_ZNK8orgQhull10QhullFacet14neighborFacetsEv(ptr dead_on_unwind nonnull writable sret(%"class.orgQhull::QhullFacetSet") align 8 %14, ptr noundef nonnull align 8 dereferenceable(16) %3)
          to label %138 unwind label %145

138:                                              ; preds = %137
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #5
  invoke void @_ZN8orgQhull8QhullSetINS_10QhullFacetEE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullFacet>::iterator") align 8 %15, ptr noundef nonnull align 8 dereferenceable(16) %14)
          to label %.preheader74 unwind label %147

.preheader74:                                     ; preds = %138
  %139 = getelementptr inbounds i8, ptr %23, i64 8
  br label %140

140:                                              ; preds = %.preheader74, %157
  %.2 = phi i32 [ %.3, %157 ], [ 0, %.preheader74 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #5
  invoke void @_ZN8orgQhull8QhullSetINS_10QhullFacetEE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullFacet>::iterator") align 8 %16, ptr noundef nonnull align 8 dereferenceable(16) %14)
          to label %141 unwind label %149

141:                                              ; preds = %140
  %142 = invoke noundef zeroext i1 @_ZNK8orgQhull8QhullSetINS_10QhullFacetEE8iteratorneERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(16) %16)
          to label %143 unwind label %149

143:                                              ; preds = %141
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #5
  br i1 %142, label %151, label %144

144:                                              ; preds = %143
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #5
  call void @_ZN8orgQhull12QhullSetBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(17) %14) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #5
  br label %198

145:                                              ; preds = %137
  %146 = landingpad { ptr, i32 }
          cleanup
  br label %197

147:                                              ; preds = %138
  %148 = landingpad { ptr, i32 }
          cleanup
  br label %196

149:                                              ; preds = %141, %140
  %150 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #5
  br label %196

151:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #5
  invoke void @_ZNK8orgQhull8QhullSetINS_10QhullFacetEE8iteratordeEv(ptr dead_on_unwind nonnull writable sret(%"class.orgQhull::QhullFacet") align 8 %17, ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %152 unwind label %159

152:                                              ; preds = %151
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #5
  invoke void @_ZNK8orgQhull10QhullFacet6ridgesEv(ptr dead_on_unwind nonnull writable sret(%"class.orgQhull::QhullSet.6") align 8 %18, ptr noundef nonnull align 8 dereferenceable(16) %17)
          to label %153 unwind label %161

153:                                              ; preds = %152
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #5
  invoke void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator") align 8 %19, ptr noundef nonnull align 8 dereferenceable(16) %18)
          to label %.preheader73 unwind label %163

.preheader73:                                     ; preds = %153, %189
  %.3 = phi i32 [ %.4, %189 ], [ %.2, %153 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #5
  invoke void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator") align 8 %20, ptr noundef nonnull align 8 dereferenceable(16) %18)
          to label %154 unwind label %165

154:                                              ; preds = %.preheader73
  %155 = invoke noundef zeroext i1 @_ZNK8orgQhull8QhullSetINS_10QhullRidgeEE8iteratorneERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %156 unwind label %165

156:                                              ; preds = %154
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #5
  br i1 %155, label %167, label %157

157:                                              ; preds = %156
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #5
  call void @_ZN8orgQhull12QhullSetBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #5
  call void @_ZN8orgQhull10QhullFacetD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #5
  %158 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8orgQhull8QhullSetINS_10QhullFacetEE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %15)
  br label %140, !llvm.loop !22

159:                                              ; preds = %151
  %160 = landingpad { ptr, i32 }
          cleanup
  br label %195

161:                                              ; preds = %152
  %162 = landingpad { ptr, i32 }
          cleanup
  br label %194

163:                                              ; preds = %153
  %164 = landingpad { ptr, i32 }
          cleanup
  br label %193

165:                                              ; preds = %154, %.preheader73
  %166 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #5
  br label %193

167:                                              ; preds = %156
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #5
  invoke void @_ZNK8orgQhull8QhullSetINS_10QhullRidgeEE8iteratordeEv(ptr dead_on_unwind nonnull writable sret(%"class.orgQhull::QhullRidge") align 8 %21, ptr noundef nonnull align 8 dereferenceable(16) %19)
          to label %168 unwind label %183

168:                                              ; preds = %167
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #5
  invoke void @_ZNK8orgQhull10QhullRidge10otherFacetERKNS_10QhullFacetE(ptr dead_on_unwind nonnull writable sret(%"class.orgQhull::QhullFacet") align 8 %22, ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef nonnull align 8 dereferenceable(16) %17)
          to label %169 unwind label %185

169:                                              ; preds = %168
  %170 = call noundef zeroext i1 @_ZNK8orgQhull10QhullFaceteqERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(16) %3)
  call void @_ZN8orgQhull10QhullFacetD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #5
  br i1 %170, label %171, label %189

171:                                              ; preds = %169
  %172 = call noundef ptr @_ZNK8orgQhull10QhullRidge9getRidgeTEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
  %173 = getelementptr inbounds i8, ptr %172, i64 28
  %174 = load i8, ptr %173, align 4
  %175 = or i8 %174, 1
  store i8 %175, ptr %173, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #5
  %176 = invoke { ptr, ptr } @_ZNK8orgQhull10QhullRidge5printEPKc(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef nonnull @.str.58)
          to label %177 unwind label %187

177:                                              ; preds = %171
  %178 = extractvalue { ptr, ptr } %176, 0
  store ptr %178, ptr %23, align 8
  %179 = extractvalue { ptr, ptr } %176, 1
  store ptr %179, ptr %139, align 8
  %180 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRKN8orgQhull10QhullRidge10PrintRidgeE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(16) %23)
          to label %181 unwind label %187

181:                                              ; preds = %177
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #5
  %182 = add nsw i32 %.3, 1
  br label %189

183:                                              ; preds = %167
  %184 = landingpad { ptr, i32 }
          cleanup
  br label %192

185:                                              ; preds = %168
  %186 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #5
  br label %191

187:                                              ; preds = %177, %171
  %188 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #5
  br label %191

189:                                              ; preds = %181, %169
  %.4 = phi i32 [ %182, %181 ], [ %.3, %169 ]
  call void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #5
  %190 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %19)
  br label %.preheader73, !llvm.loop !23

191:                                              ; preds = %187, %185
  %.pn = phi { ptr, i32 } [ %188, %187 ], [ %186, %185 ]
  call void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #5
  br label %192

192:                                              ; preds = %191, %183
  %.pn.pn = phi { ptr, i32 } [ %.pn, %191 ], [ %184, %183 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #5
  br label %193

193:                                              ; preds = %192, %165, %163
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %192 ], [ %166, %165 ], [ %164, %163 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #5
  call void @_ZN8orgQhull12QhullSetBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #5
  br label %194

194:                                              ; preds = %193, %161
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %193 ], [ %162, %161 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #5
  call void @_ZN8orgQhull10QhullFacetD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #5
  br label %195

195:                                              ; preds = %194, %159
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %194 ], [ %160, %159 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #5
  br label %196

196:                                              ; preds = %195, %149, %147
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %195 ], [ %150, %149 ], [ %148, %147 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #5
  call void @_ZN8orgQhull12QhullSetBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(17) %14) #5
  br label %197

197:                                              ; preds = %196, %145
  %.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn, %196 ], [ %146, %145 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #5
  br label %260

198:                                              ; preds = %144, %._crit_edge
  %.5 = phi i32 [ %.1, %._crit_edge ], [ %.2, %144 ]
  %199 = invoke noundef i32 @_ZNK8orgQhull12QhullSetBase5countEv(ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %200 unwind label %104

200:                                              ; preds = %198
  %.not52 = icmp eq i32 %.5, %199
  br i1 %.not52, label %227, label %201

201:                                              ; preds = %200
  %202 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.59)
          to label %203 unwind label %104

203:                                              ; preds = %201
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #5
  invoke void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator") align 8 %24, ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %.preheader71 unwind label %209

.preheader71:                                     ; preds = %203, %219
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #5
  invoke void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator") align 8 %25, ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %204 unwind label %211

204:                                              ; preds = %.preheader71
  %205 = invoke noundef zeroext i1 @_ZNK8orgQhull8QhullSetINS_10QhullRidgeEE8iteratorneERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 8 dereferenceable(16) %25)
          to label %206 unwind label %211

206:                                              ; preds = %204
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #5
  br i1 %205, label %213, label %207

207:                                              ; preds = %206
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #5
  %208 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %227 unwind label %104

209:                                              ; preds = %203
  %210 = landingpad { ptr, i32 }
          cleanup
  br label %226

211:                                              ; preds = %204, %.preheader71
  %212 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #5
  br label %226

213:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #5
  invoke void @_ZNK8orgQhull8QhullSetINS_10QhullRidgeEE8iteratordeEv(ptr dead_on_unwind nonnull writable sret(%"class.orgQhull::QhullRidge") align 8 %26, ptr noundef nonnull align 8 dereferenceable(16) %24)
          to label %214 unwind label %221

214:                                              ; preds = %213
  %215 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.56)
          to label %216 unwind label %223

216:                                              ; preds = %214
  %217 = call noundef i32 @_ZNK8orgQhull10QhullRidge2idEv(ptr noundef nonnull align 8 dereferenceable(16) %26)
  %218 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %215, i32 noundef %217)
          to label %219 unwind label %223

219:                                              ; preds = %216
  call void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #5
  %220 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %24)
  br label %.preheader71, !llvm.loop !24

221:                                              ; preds = %213
  %222 = landingpad { ptr, i32 }
          cleanup
  br label %225

223:                                              ; preds = %216, %214
  %224 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #5
  br label %225

225:                                              ; preds = %223, %221
  %.pn57 = phi { ptr, i32 } [ %224, %223 ], [ %222, %221 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #5
  br label %226

226:                                              ; preds = %225, %211, %209
  %.pn57.pn = phi { ptr, i32 } [ %.pn57, %225 ], [ %212, %211 ], [ %210, %209 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #5
  br label %260

227:                                              ; preds = %207, %200
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #5
  invoke void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator") align 8 %27, ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %.preheader unwind label %234

.preheader:                                       ; preds = %227
  %228 = getelementptr inbounds i8, ptr %30, i64 8
  br label %229

229:                                              ; preds = %.preheader, %255
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #5
  invoke void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator") align 8 %28, ptr noundef nonnull align 8 dereferenceable(16) %4)
          to label %230 unwind label %236

230:                                              ; preds = %229
  %231 = invoke noundef zeroext i1 @_ZNK8orgQhull8QhullSetINS_10QhullRidgeEE8iteratorneERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %27, ptr noundef nonnull align 8 dereferenceable(16) %28)
          to label %232 unwind label %236

232:                                              ; preds = %230
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #5
  br i1 %231, label %238, label %233

233:                                              ; preds = %232
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #5
  br label %259

234:                                              ; preds = %227
  %235 = landingpad { ptr, i32 }
          cleanup
  br label %258

236:                                              ; preds = %230, %229
  %237 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #5
  br label %258

238:                                              ; preds = %232
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #5
  invoke void @_ZNK8orgQhull8QhullSetINS_10QhullRidgeEE8iteratordeEv(ptr dead_on_unwind nonnull writable sret(%"class.orgQhull::QhullRidge") align 8 %29, ptr noundef nonnull align 8 dereferenceable(16) %27)
          to label %239 unwind label %251

239:                                              ; preds = %238
  %240 = call noundef ptr @_ZNK8orgQhull10QhullRidge9getRidgeTEv(ptr noundef nonnull align 8 dereferenceable(16) %29)
  %241 = getelementptr inbounds i8, ptr %240, i64 28
  %242 = load i8, ptr %241, align 4
  %243 = and i8 %242, 1
  %.not53 = icmp eq i8 %243, 0
  br i1 %.not53, label %244, label %255

244:                                              ; preds = %239
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30) #5
  %245 = invoke { ptr, ptr } @_ZNK8orgQhull10QhullRidge5printEPKc(ptr noundef nonnull align 8 dereferenceable(16) %29, ptr noundef nonnull @.str.58)
          to label %246 unwind label %253

246:                                              ; preds = %244
  %247 = extractvalue { ptr, ptr } %245, 0
  store ptr %247, ptr %30, align 8
  %248 = extractvalue { ptr, ptr } %245, 1
  store ptr %248, ptr %228, align 8
  %249 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRKN8orgQhull10QhullRidge10PrintRidgeE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(16) %30)
          to label %250 unwind label %253

250:                                              ; preds = %246
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #5
  br label %255

251:                                              ; preds = %238
  %252 = landingpad { ptr, i32 }
          cleanup
  br label %257

253:                                              ; preds = %246, %244
  %254 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #5
  call void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #5
  br label %257

255:                                              ; preds = %250, %239
  call void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #5
  %256 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16) %27)
  br label %229, !llvm.loop !25

257:                                              ; preds = %253, %251
  %.pn54 = phi { ptr, i32 } [ %254, %253 ], [ %252, %251 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #5
  br label %258

258:                                              ; preds = %257, %236, %234
  %.pn54.pn = phi { ptr, i32 } [ %.pn54, %257 ], [ %237, %236 ], [ %235, %234 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #5
  br label %260

259:                                              ; preds = %233, %33
  call void @_ZN8orgQhull12QhullSetBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #5
  call void @_ZN8orgQhull10QhullFacetD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #5
  ret ptr %0

260:                                              ; preds = %104, %136, %197, %226, %258, %97, %72, %53
  %.pn66.pn.pn = phi { ptr, i32 } [ %.pn66.pn, %72 ], [ %.pn64, %97 ], [ %54, %53 ], [ %.pn60.pn, %136 ], [ %.pn57.pn, %226 ], [ %.pn54.pn, %258 ], [ %105, %104 ], [ %.pn.pn.pn.pn.pn.pn.pn, %197 ]
  call void @_ZN8orgQhull12QhullSetBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #5
  br label %261

261:                                              ; preds = %260, %51
  %.pn66.pn.pn.pn = phi { ptr, i32 } [ %.pn66.pn.pn, %260 ], [ %52, %51 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #5
  call void @_ZN8orgQhull10QhullFacetD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #5
  resume { ptr, i32 } %.pn66.pn.pn.pn
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8orgQhull10QhullFacetD2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK8orgQhull10QhullFacet2qhEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE5beginEv(ptr dead_on_unwind noalias writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK8orgQhull8QhullSetINS_10QhullRidgeEE8iteratorneERKS3_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE3endEv(ptr dead_on_unwind noalias writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullRidge>::iterator") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK8orgQhull8QhullSetINS_10QhullRidgeEE8iteratordeEv(ptr dead_on_unwind noalias writable sret(%"class.orgQhull::QhullRidge") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK8orgQhull10QhullRidge2idEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8orgQhull10QhullRidgeD2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK8orgQhull10QhullRidge9getRidgeTEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK8orgQhull10QhullFacet9dimensionEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8orgQhull8QhullSetINS_10QhullRidgeEE5firstEv(ptr dead_on_unwind noalias writable sret(%"class.orgQhull::QhullRidge") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRKN8orgQhull10QhullRidge10PrintRidgeE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, ptr } @_ZNK8orgQhull10QhullRidge5printEPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #2 align 2

declare noundef zeroext i1 @_ZNK8orgQhull10QhullRidge14hasNextRidge3dERKNS_10QhullFacetE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK8orgQhull10QhullRidge11nextRidge3dERKNS_10QhullFacetE(ptr dead_on_unwind noalias writable sret(%"class.orgQhull::QhullRidge") align 8, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN8orgQhull10QhullRidgeaSERKS0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8orgQhull8QhullSetINS_10QhullFacetEE5beginEv(ptr dead_on_unwind noalias writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullFacet>::iterator") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK8orgQhull8QhullSetINS_10QhullFacetEE8iteratorneERKS3_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8orgQhull8QhullSetINS_10QhullFacetEE3endEv(ptr dead_on_unwind noalias writable sret(%"class.orgQhull::QhullSet<orgQhull::QhullFacet>::iterator") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK8orgQhull8QhullSetINS_10QhullFacetEE8iteratordeEv(ptr dead_on_unwind noalias writable sret(%"class.orgQhull::QhullFacet") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK8orgQhull10QhullRidge10otherFacetERKNS_10QhullFacetE(ptr dead_on_unwind noalias writable sret(%"class.orgQhull::QhullFacet") align 8, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK8orgQhull10QhullFaceteqERKS0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN8orgQhull8QhullSetINS_10QhullFacetEE8iteratorppEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK8orgQhull12QhullSetBase5countEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

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

!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 0}
!6 = !{!"_ZTSN8orgQhull10QhullFacet11PrintRidgesE", !7, i64 0}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!11, !12, i64 2648}
!11 = !{!"_ZTS3qhT", !12, i64 0, !12, i64 4, !12, i64 8, !13, i64 16, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !13, i64 56, !13, i64 64, !12, i64 72, !12, i64 76, !12, i64 80, !12, i64 84, !12, i64 88, !7, i64 96, !12, i64 104, !12, i64 108, !7, i64 112, !12, i64 120, !12, i64 124, !12, i64 128, !12, i64 132, !12, i64 136, !12, i64 140, !12, i64 144, !13, i64 152, !13, i64 160, !12, i64 168, !12, i64 172, !12, i64 176, !13, i64 184, !13, i64 192, !12, i64 200, !13, i64 208, !12, i64 216, !12, i64 220, !12, i64 224, !12, i64 228, !12, i64 232, !12, i64 236, !12, i64 240, !12, i64 244, !12, i64 248, !12, i64 252, !12, i64 256, !12, i64 260, !12, i64 264, !12, i64 268, !12, i64 272, !12, i64 276, !12, i64 280, !12, i64 284, !12, i64 288, !12, i64 292, !8, i64 296, !12, i64 412, !12, i64 416, !12, i64 420, !12, i64 424, !12, i64 428, !12, i64 432, !12, i64 436, !12, i64 440, !12, i64 444, !13, i64 448, !13, i64 456, !13, i64 464, !12, i64 472, !12, i64 476, !12, i64 480, !12, i64 484, !12, i64 488, !12, i64 492, !12, i64 496, !12, i64 500, !12, i64 504, !12, i64 508, !12, i64 512, !12, i64 516, !12, i64 520, !12, i64 524, !12, i64 528, !12, i64 532, !12, i64 536, !12, i64 540, !13, i64 544, !12, i64 552, !12, i64 556, !12, i64 560, !12, i64 564, !12, i64 568, !12, i64 572, !12, i64 576, !12, i64 580, !13, i64 584, !12, i64 592, !7, i64 600, !7, i64 608, !12, i64 616, !12, i64 620, !12, i64 624, !12, i64 628, !12, i64 632, !7, i64 640, !12, i64 648, !7, i64 656, !12, i64 664, !8, i64 668, !12, i64 924, !8, i64 928, !8, i64 1184, !12, i64 1696, !12, i64 1700, !12, i64 1704, !12, i64 1708, !12, i64 1712, !12, i64 1716, !7, i64 1720, !7, i64 1728, !7, i64 1736, !7, i64 1744, !13, 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, !12, i64 1856, !7, i64 1864, !13, i64 1872, !13, i64 1880, !13, i64 1888, !13, i64 1896, !8, i64 1904, !8, i64 1912, !8, i64 2112, !8, i64 2152, !8, i64 2352, !7, i64 2392, !7, i64 2400, !7, i64 2408, !7, i64 2416, !12, i64 2424, !12, i64 2428, !12, i64 2432, !7, i64 2440, !7, i64 2448, !7, i64 2456, !7, i64 2464, !7, i64 2472, !12, i64 2480, !12, i64 2484, !7, i64 2488, !12, i64 2496, !7, i64 2504, !7, i64 2512, !7, i64 2520, !7, i64 2528, !12, i64 2536, !12, i64 2540, !12, i64 2544, !12, i64 2548, !12, i64 2552, !12, i64 2556, !12, i64 2560, !14, i64 2568, !12, i64 2576, !12, i64 2580, !15, i64 2584, !12, i64 2588, !7, i64 2592, !12, i64 2600, !12, i64 2604, !13, i64 2608, !12, i64 2616, !13, i64 2624, !13, i64 2632, !13, i64 2640, !12, i64 2648, !12, i64 2652, !12, i64 2656, !12, i64 2660, !13, i64 2664, !13, i64 2672, !12, i64 2680, !12, i64 2684, !12, i64 2688, !12, i64 2692, !13, i64 2696, !13, i64 2704, !12, i64 2712, !12, i64 2716, !12, i64 2720, !12, i64 2724, !7, i64 2728, !7, i64 2736, !7, i64 2744, !7, i64 2752, !7, i64 2760, !7, i64 2768, !7, i64 2776, !7, i64 2784, !12, i64 2792, !7, i64 2800, !7, i64 2808, !12, i64 2816, !12, i64 2820, !12, i64 2824, !7, i64 2832, !13, i64 2840, !13, i64 2848, !13, i64 2856, !12, i64 2864, !12, i64 2868, !7, i64 2872, !12, i64 2880, !12, i64 2884, !8, i64 2888, !8, i64 3088, !12, i64 3128, !13, i64 3136, !7, i64 3144, !16, i64 3152, !17, i64 3304}
!12 = !{!"int", !8, i64 0}
!13 = !{!"double", !8, i64 0}
!14 = !{!"long", !8, i64 0}
!15 = !{!"_ZTS9qh_CENTER", !8, i64 0}
!16 = !{!"_ZTS6qhmemT", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !12, i64 64, !7, i64 72, !7, i64 80, !12, i64 88, !12, i64 92, !12, i64 96, !12, i64 100, !12, i64 104, !12, i64 108, !12, i64 112, !12, i64 116, !12, i64 120, !12, i64 124, !12, i64 128, !12, i64 132, !12, i64 136, !12, i64 140, !12, i64 144}
!17 = !{!"_ZTS7qhstatT", !8, i64 0, !8, i64 1816, !8, i64 2056, !8, i64 3872, !8, i64 4326, !8, i64 4553, !8, i64 4784, !12, i64 4856, !12, i64 4860, !12, i64 4864, !12, i64 4868, !13, i64 4872}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.mustprogress"}
!20 = distinct !{!20, !19}
!21 = distinct !{!21, !19}
!22 = distinct !{!22, !19}
!23 = distinct !{!23, !19}
!24 = distinct !{!24, !19}
!25 = distinct !{!25, !19}


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