; LLVM IR from robotics-upo/Heuristic_path_planners :: include/voro++-0.4.6/src (cell)

; 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.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.voro::voronoicell_base" = type { ptr, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, ptr, double, double, double, double }

@.str.17 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [2 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 uwtable
declare dso_local noundef double @_ZN4voro16voronoicell_base6volumeEv(ptr noundef nonnull align 8 dereferenceable(160)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4voro16voronoicell_base10face_areasERSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(24)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZN4voro16voronoicell_base12surface_areaEv(ptr noundef nonnull align 8 dereferenceable(160)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4voro16voronoicell_base8centroidERdS1_S1_(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZN4voro16voronoicell_base18max_radius_squaredEv(ptr noundef nonnull align 8 dereferenceable(160)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZN4voro16voronoicell_base19total_edge_distanceEv(ptr noundef nonnull align 8 dereferenceable(160)) #2 align 2

; Function Attrs: nounwind
declare i32 @fprintf(ptr noundef, ptr noundef, ...) #3

declare i32 @fputs(ptr noundef, ptr noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4voro16voronoicell_base7normalsERSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(24)) #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4voro16voronoicell_base20output_vertex_ordersEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4voro16voronoicell_base15output_verticesEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4voro16voronoicell_base15output_verticesEdddP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(160), double noundef, double noundef, double noundef, ptr noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4voro16voronoicell_base15face_perimetersERSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(24)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4voro16voronoicell_base13face_verticesERSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(24)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4voro16voronoicell_base11face_ordersERSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(24)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4voro16voronoicell_base15face_freq_tableERSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(24)) #1 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4voro16voronoicell_base13output_customEPKciddddP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef %1, i32 noundef %2, double noundef %3, double noundef %4, double noundef %5, double noundef %6, ptr noundef %7) #1 align 2 personality ptr @__gxx_personality_v0 {
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca %"class.std::vector.0", align 8
  %19 = alloca %"class.std::vector", align 8
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store i32 %2, ptr %11, align 4, !tbaa !9
  store double %3, ptr %12, align 8, !tbaa !11
  store double %4, ptr %13, align 8, !tbaa !11
  store double %5, ptr %14, align 8, !tbaa !11
  store double %6, ptr %15, align 8, !tbaa !11
  store ptr %7, ptr %16, align 8, !tbaa !5
  %28 = load ptr, ptr %9, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #6
  %29 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %29, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %18) #6
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #6
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #6
  br label %30

30:                                               ; preds = %198, %8
  %31 = load ptr, ptr %17, align 8, !tbaa !5
  %32 = load i8, ptr %31, align 1, !tbaa !13
  %33 = sext i8 %32 to i32
  %34 = icmp ne i32 %33, 0
  br i1 %34, label %35, label %201

35:                                               ; preds = %30
  %36 = load ptr, ptr %17, align 8, !tbaa !5
  %37 = load i8, ptr %36, align 1, !tbaa !13
  %38 = sext i8 %37 to i32
  %39 = icmp eq i32 %38, 37
  br i1 %39, label %40, label %191

40:                                               ; preds = %35
  %41 = load ptr, ptr %17, align 8, !tbaa !5
  %42 = getelementptr inbounds i8, ptr %41, i32 1
  store ptr %42, ptr %17, align 8, !tbaa !5
  %43 = load ptr, ptr %17, align 8, !tbaa !5
  %44 = load i8, ptr %43, align 1, !tbaa !13
  %45 = sext i8 %44 to i32
  switch i32 %45, label %180 [
    i32 105, label %46
    i32 120, label %50
    i32 121, label %54
    i32 122, label %58
    i32 113, label %62
    i32 114, label %68
    i32 119, label %72
    i32 112, label %77
    i32 80, label %79
    i32 111, label %84
    i32 109, label %86
    i32 103, label %91
    i32 69, label %95
    i32 101, label %99
    i32 115, label %107
    i32 70, label %112
    i32 65, label %117
    i32 97, label %121
    i32 102, label %125
    i32 116, label %129
    i32 108, label %133
    i32 110, label %137
    i32 118, label %144
    i32 99, label %149
    i32 67, label %160
    i32 0, label %177
  ]

46:                                               ; preds = %40
  %47 = load ptr, ptr %16, align 8, !tbaa !5
  %48 = load i32, ptr %11, align 4, !tbaa !9
  %49 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %47, ptr noundef @.str.17, i32 noundef %48) #6
  br label %190

50:                                               ; preds = %40
  %51 = load ptr, ptr %16, align 8, !tbaa !5
  %52 = load double, ptr %12, align 8, !tbaa !11
  %53 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %51, ptr noundef @.str.21, double noundef %52) #6
  br label %190

54:                                               ; preds = %40
  %55 = load ptr, ptr %16, align 8, !tbaa !5
  %56 = load double, ptr %13, align 8, !tbaa !11
  %57 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %55, ptr noundef @.str.21, double noundef %56) #6
  br label %190

58:                                               ; preds = %40
  %59 = load ptr, ptr %16, align 8, !tbaa !5
  %60 = load double, ptr %14, align 8, !tbaa !11
  %61 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %59, ptr noundef @.str.21, double noundef %60) #6
  br label %190

62:                                               ; preds = %40
  %63 = load ptr, ptr %16, align 8, !tbaa !5
  %64 = load double, ptr %12, align 8, !tbaa !11
  %65 = load double, ptr %13, align 8, !tbaa !11
  %66 = load double, ptr %14, align 8, !tbaa !11
  %67 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %63, ptr noundef @.str.22, double noundef %64, double noundef %65, double noundef %66) #6
  br label %190

68:                                               ; preds = %40
  %69 = load ptr, ptr %16, align 8, !tbaa !5
  %70 = load double, ptr %15, align 8, !tbaa !11
  %71 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %69, ptr noundef @.str.21, double noundef %70) #6
  br label %190

72:                                               ; preds = %40
  %73 = load ptr, ptr %16, align 8, !tbaa !5
  %74 = getelementptr inbounds %"class.voro::voronoicell_base", ptr %28, i32 0, i32 5
  %75 = load i32, ptr %74, align 8, !tbaa !14
  %76 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %73, ptr noundef @.str.17, i32 noundef %75) #6
  br label %190

77:                                               ; preds = %40
  %78 = load ptr, ptr %16, align 8, !tbaa !5
  call void @_ZN4voro16voronoicell_base15output_verticesEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(160) %28, ptr noundef %78)
  br label %190

79:                                               ; preds = %40
  %80 = load double, ptr %12, align 8, !tbaa !11
  %81 = load double, ptr %13, align 8, !tbaa !11
  %82 = load double, ptr %14, align 8, !tbaa !11
  %83 = load ptr, ptr %16, align 8, !tbaa !5
  call void @_ZN4voro16voronoicell_base15output_verticesEdddP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(160) %28, double noundef %80, double noundef %81, double noundef %82, ptr noundef %83)
  br label %190

84:                                               ; preds = %40
  %85 = load ptr, ptr %16, align 8, !tbaa !5
  call void @_ZN4voro16voronoicell_base20output_vertex_ordersEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(160) %28, ptr noundef %85)
  br label %190

86:                                               ; preds = %40
  %87 = load ptr, ptr %16, align 8, !tbaa !5
  %88 = call noundef double @_ZN4voro16voronoicell_base18max_radius_squaredEv(ptr noundef nonnull align 8 dereferenceable(160) %28)
  %89 = fmul double 2.500000e-01, %88
  %90 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %87, ptr noundef @.str.21, double noundef %89) #6
  br label %190

91:                                               ; preds = %40
  %92 = load ptr, ptr %16, align 8, !tbaa !5
  %93 = call noundef i32 @_ZN4voro16voronoicell_base15number_of_edgesEv(ptr noundef nonnull align 8 dereferenceable(160) %28)
  %94 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %92, ptr noundef @.str.17, i32 noundef %93) #6
  br label %190

95:                                               ; preds = %40
  %96 = load ptr, ptr %16, align 8, !tbaa !5
  %97 = call noundef double @_ZN4voro16voronoicell_base19total_edge_distanceEv(ptr noundef nonnull align 8 dereferenceable(160) %28)
  %98 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %96, ptr noundef @.str.21, double noundef %97) #6
  br label %190

99:                                               ; preds = %40
  invoke void @_ZN4voro16voronoicell_base15face_perimetersERSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(160) %28, ptr noundef nonnull align 8 dereferenceable(24) %19)
          to label %100 unwind label %103

100:                                              ; preds = %99
  %101 = load ptr, ptr %16, align 8, !tbaa !5
  invoke void @_ZN4voro17voro_print_vectorERSt6vectorIdSaIdEEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef %101)
          to label %102 unwind label %103

102:                                              ; preds = %100
  br label %190

103:                                              ; preds = %201, %191, %183, %180, %144, %141, %137, %134, %133, %130, %129, %126, %125, %122, %121, %118, %117, %112, %107, %100, %99
  %104 = landingpad { ptr, i32 }
          cleanup
  %105 = extractvalue { ptr, i32 } %104, 0
  store ptr %105, ptr %20, align 8
  %106 = extractvalue { ptr, i32 } %104, 1
  store i32 %106, ptr %21, align 4
  br label %205

107:                                              ; preds = %40
  %108 = load ptr, ptr %16, align 8, !tbaa !5
  %109 = invoke noundef i32 @_ZN4voro16voronoicell_base15number_of_facesEv(ptr noundef nonnull align 8 dereferenceable(160) %28)
          to label %110 unwind label %103

110:                                              ; preds = %107
  %111 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %108, ptr noundef @.str.17, i32 noundef %109) #6
  br label %190

112:                                              ; preds = %40
  %113 = load ptr, ptr %16, align 8, !tbaa !5
  %114 = invoke noundef double @_ZN4voro16voronoicell_base12surface_areaEv(ptr noundef nonnull align 8 dereferenceable(160) %28)
          to label %115 unwind label %103

115:                                              ; preds = %112
  %116 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %113, ptr noundef @.str.21, double noundef %114) #6
  br label %190

117:                                              ; preds = %40
  invoke void @_ZN4voro16voronoicell_base15face_freq_tableERSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(160) %28, ptr noundef nonnull align 8 dereferenceable(24) %18)
          to label %118 unwind label %103

118:                                              ; preds = %117
  %119 = load ptr, ptr %16, align 8, !tbaa !5
  invoke void @_ZN4voro17voro_print_vectorERSt6vectorIiSaIiEEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef %119)
          to label %120 unwind label %103

120:                                              ; preds = %118
  br label %190

121:                                              ; preds = %40
  invoke void @_ZN4voro16voronoicell_base11face_ordersERSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(160) %28, ptr noundef nonnull align 8 dereferenceable(24) %18)
          to label %122 unwind label %103

122:                                              ; preds = %121
  %123 = load ptr, ptr %16, align 8, !tbaa !5
  invoke void @_ZN4voro17voro_print_vectorERSt6vectorIiSaIiEEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef %123)
          to label %124 unwind label %103

124:                                              ; preds = %122
  br label %190

125:                                              ; preds = %40
  invoke void @_ZN4voro16voronoicell_base10face_areasERSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(160) %28, ptr noundef nonnull align 8 dereferenceable(24) %19)
          to label %126 unwind label %103

126:                                              ; preds = %125
  %127 = load ptr, ptr %16, align 8, !tbaa !5
  invoke void @_ZN4voro17voro_print_vectorERSt6vectorIdSaIdEEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef %127)
          to label %128 unwind label %103

128:                                              ; preds = %126
  br label %190

129:                                              ; preds = %40
  invoke void @_ZN4voro16voronoicell_base13face_verticesERSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(160) %28, ptr noundef nonnull align 8 dereferenceable(24) %18)
          to label %130 unwind label %103

130:                                              ; preds = %129
  %131 = load ptr, ptr %16, align 8, !tbaa !5
  invoke void @_ZN4voro24voro_print_face_verticesERSt6vectorIiSaIiEEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef %131)
          to label %132 unwind label %103

132:                                              ; preds = %130
  br label %190

133:                                              ; preds = %40
  invoke void @_ZN4voro16voronoicell_base7normalsERSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(160) %28, ptr noundef nonnull align 8 dereferenceable(24) %19)
          to label %134 unwind label %103

134:                                              ; preds = %133
  %135 = load ptr, ptr %16, align 8, !tbaa !5
  invoke void @_ZN4voro20voro_print_positionsERSt6vectorIdSaIdEEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef %135)
          to label %136 unwind label %103

136:                                              ; preds = %134
  br label %190

137:                                              ; preds = %40
  %138 = load ptr, ptr %28, align 8, !tbaa !16
  %139 = getelementptr inbounds ptr, ptr %138, i64 0
  %140 = load ptr, ptr %139, align 8
  invoke void %140(ptr noundef nonnull align 8 dereferenceable(160) %28, ptr noundef nonnull align 8 dereferenceable(24) %18)
          to label %141 unwind label %103

141:                                              ; preds = %137
  %142 = load ptr, ptr %16, align 8, !tbaa !5
  invoke void @_ZN4voro17voro_print_vectorERSt6vectorIiSaIiEEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef %142)
          to label %143 unwind label %103

143:                                              ; preds = %141
  br label %190

144:                                              ; preds = %40
  %145 = load ptr, ptr %16, align 8, !tbaa !5
  %146 = invoke noundef double @_ZN4voro16voronoicell_base6volumeEv(ptr noundef nonnull align 8 dereferenceable(160) %28)
          to label %147 unwind label %103

147:                                              ; preds = %144
  %148 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %145, ptr noundef @.str.21, double noundef %146) #6
  br label %190

149:                                              ; preds = %40
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #6
  invoke void @_ZN4voro16voronoicell_base8centroidERdS1_S1_(ptr noundef nonnull align 8 dereferenceable(160) %28, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %150 unwind label %156

150:                                              ; preds = %149
  %151 = load ptr, ptr %16, align 8, !tbaa !5
  %152 = load double, ptr %22, align 8, !tbaa !11
  %153 = load double, ptr %23, align 8, !tbaa !11
  %154 = load double, ptr %24, align 8, !tbaa !11
  %155 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %151, ptr noundef @.str.22, double noundef %152, double noundef %153, double noundef %154) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #6
  br label %190

156:                                              ; preds = %149
  %157 = landingpad { ptr, i32 }
          cleanup
  %158 = extractvalue { ptr, i32 } %157, 0
  store ptr %158, ptr %20, align 8
  %159 = extractvalue { ptr, i32 } %157, 1
  store i32 %159, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #6
  br label %205

160:                                              ; preds = %40
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #6
  invoke void @_ZN4voro16voronoicell_base8centroidERdS1_S1_(ptr noundef nonnull align 8 dereferenceable(160) %28, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %161 unwind label %173

161:                                              ; preds = %160
  %162 = load ptr, ptr %16, align 8, !tbaa !5
  %163 = load double, ptr %12, align 8, !tbaa !11
  %164 = load double, ptr %25, align 8, !tbaa !11
  %165 = fadd double %163, %164
  %166 = load double, ptr %13, align 8, !tbaa !11
  %167 = load double, ptr %26, align 8, !tbaa !11
  %168 = fadd double %166, %167
  %169 = load double, ptr %14, align 8, !tbaa !11
  %170 = load double, ptr %27, align 8, !tbaa !11
  %171 = fadd double %169, %170
  %172 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %162, ptr noundef @.str.22, double noundef %165, double noundef %168, double noundef %171) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #6
  br label %190

173:                                              ; preds = %160
  %174 = landingpad { ptr, i32 }
          cleanup
  %175 = extractvalue { ptr, i32 } %174, 0
  store ptr %175, ptr %20, align 8
  %176 = extractvalue { ptr, i32 } %174, 1
  store i32 %176, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #6
  br label %205

177:                                              ; preds = %40
  %178 = load ptr, ptr %17, align 8, !tbaa !5
  %179 = getelementptr inbounds i8, ptr %178, i32 -1
  store ptr %179, ptr %17, align 8, !tbaa !5
  br label %190

180:                                              ; preds = %40
  %181 = load ptr, ptr %16, align 8, !tbaa !5
  %182 = invoke i32 @putc(i32 noundef 37, ptr noundef %181)
          to label %183 unwind label %103

183:                                              ; preds = %180
  %184 = load ptr, ptr %17, align 8, !tbaa !5
  %185 = load i8, ptr %184, align 1, !tbaa !13
  %186 = sext i8 %185 to i32
  %187 = load ptr, ptr %16, align 8, !tbaa !5
  %188 = invoke i32 @putc(i32 noundef %186, ptr noundef %187)
          to label %189 unwind label %103

189:                                              ; preds = %183
  br label %190

190:                                              ; preds = %189, %177, %161, %150, %147, %143, %136, %132, %128, %124, %120, %115, %110, %102, %95, %91, %86, %84, %79, %77, %72, %68, %62, %58, %54, %50, %46
  br label %198

191:                                              ; preds = %35
  %192 = load ptr, ptr %17, align 8, !tbaa !5
  %193 = load i8, ptr %192, align 1, !tbaa !13
  %194 = sext i8 %193 to i32
  %195 = load ptr, ptr %16, align 8, !tbaa !5
  %196 = invoke i32 @putc(i32 noundef %194, ptr noundef %195)
          to label %197 unwind label %103

197:                                              ; preds = %191
  br label %198

198:                                              ; preds = %197, %190
  %199 = load ptr, ptr %17, align 8, !tbaa !5
  %200 = getelementptr inbounds i8, ptr %199, i32 1
  store ptr %200, ptr %17, align 8, !tbaa !5
  br label %30, !llvm.loop !18

201:                                              ; preds = %30
  %202 = load ptr, ptr %16, align 8, !tbaa !5
  %203 = invoke i32 @fputs(ptr noundef @.str.23, ptr noundef %202)
          to label %204 unwind label %103

204:                                              ; preds = %201
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #6
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  ret void

205:                                              ; preds = %173, %156, %103
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #6
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  br label %206

206:                                              ; preds = %205
  %207 = load ptr, ptr %20, align 8
  %208 = load i32, ptr %21, align 4
  %209 = insertvalue { ptr, i32 } poison, ptr %207, 0
  %210 = insertvalue { ptr, i32 } %209, i32 %208, 1
  resume { ptr, i32 } %210
}

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

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

declare void @_ZN4voro17voro_print_vectorERSt6vectorIdSaIdEEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) #4

declare void @_ZN4voro17voro_print_vectorERSt6vectorIiSaIiEEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) #4

declare void @_ZN4voro24voro_print_face_verticesERSt6vectorIiSaIiEEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN4voro20voro_print_positionsERSt6vectorIdSaIdEEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) #5

declare i32 @putc(i32 noundef, ptr noundef) #4

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { 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 #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "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 = { inlinehint 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 #6 = { 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, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!7, !7, i64 0}
!14 = !{!15, !10, i64 24}
!15 = !{!"_ZTSN4voro16voronoicell_baseE", !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !10, i64 112, !10, i64 116, !6, i64 120, !12, i64 128, !12, i64 136, !12, i64 144, !12, i64 152}
!16 = !{!17, !17, i64 0}
!17 = !{!"vtable pointer", !8, i64 0}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.mustprogress"}


; 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.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str.17 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [2 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 uwtable
declare dso_local noundef double @_ZN4voro16voronoicell_base6volumeEv(ptr noundef nonnull align 8 dereferenceable(160)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4voro16voronoicell_base10face_areasERSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZN4voro16voronoicell_base12surface_areaEv(ptr noundef nonnull align 8 dereferenceable(160)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4voro16voronoicell_base8centroidERdS1_S1_(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZN4voro16voronoicell_base18max_radius_squaredEv(ptr noundef nonnull align 8 dereferenceable(160)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZN4voro16voronoicell_base19total_edge_distanceEv(ptr noundef nonnull align 8 dereferenceable(160)) local_unnamed_addr #2 align 2

; Function Attrs: nofree nounwind
declare noundef i32 @fprintf(ptr nocapture noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #3

; Function Attrs: nofree nounwind
declare noundef i32 @fputs(ptr nocapture noundef readonly, ptr nocapture noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4voro16voronoicell_base7normalsERSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4voro16voronoicell_base20output_vertex_ordersEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4voro16voronoicell_base15output_verticesEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4voro16voronoicell_base15output_verticesEdddP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(160), double noundef, double noundef, double noundef, ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4voro16voronoicell_base15face_perimetersERSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4voro16voronoicell_base13face_verticesERSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4voro16voronoicell_base11face_ordersERSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4voro16voronoicell_base15face_freq_tableERSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4voro16voronoicell_base13output_customEPKciddddP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr nocapture noundef readonly %1, i32 noundef %2, double noundef %3, double noundef %4, double noundef %5, double noundef %6, ptr noundef %7) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %9 = alloca %"class.std::vector.0", align 8
  %10 = alloca %"class.std::vector", align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #6
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #6
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #6
  %17 = getelementptr inbounds i8, ptr %0, i64 24
  br label %18

18:                                               ; preds = %103, %8
  %.055 = phi ptr [ %1, %8 ], [ %104, %103 ]
  %19 = load i8, ptr %.055, align 1, !tbaa !5
  switch i8 %19, label %100 [
    i8 0, label %105
    i8 37, label %20
  ]

20:                                               ; preds = %18
  %21 = getelementptr inbounds i8, ptr %.055, i64 1
  %22 = load i8, ptr %21, align 1, !tbaa !5
  switch i8 %22, label %95 [
    i8 105, label %23
    i8 120, label %25
    i8 121, label %27
    i8 122, label %29
    i8 113, label %31
    i8 114, label %33
    i8 119, label %35
    i8 112, label %38
    i8 80, label %39
    i8 111, label %40
    i8 109, label %41
    i8 103, label %45
    i8 69, label %48
    i8 101, label %51
    i8 115, label %54
    i8 70, label %58
    i8 65, label %62
    i8 97, label %63
    i8 102, label %64
    i8 116, label %65
    i8 108, label %67
    i8 110, label %69
    i8 118, label %72
    i8 99, label %76
    i8 67, label %84
    i8 0, label %103
  ]

23:                                               ; preds = %20
  %24 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7, ptr noundef nonnull @.str.17, i32 noundef %2) #6
  br label %103

25:                                               ; preds = %20
  %26 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7, ptr noundef nonnull @.str.21, double noundef %3) #6
  br label %103

27:                                               ; preds = %20
  %28 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7, ptr noundef nonnull @.str.21, double noundef %4) #6
  br label %103

29:                                               ; preds = %20
  %30 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7, ptr noundef nonnull @.str.21, double noundef %5) #6
  br label %103

31:                                               ; preds = %20
  %32 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7, ptr noundef nonnull @.str.22, double noundef %3, double noundef %4, double noundef %5) #6
  br label %103

33:                                               ; preds = %20
  %34 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7, ptr noundef nonnull @.str.21, double noundef %6) #6
  br label %103

35:                                               ; preds = %20
  %36 = load i32, ptr %17, align 8, !tbaa !8
  %37 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7, ptr noundef nonnull @.str.17, i32 noundef %36) #6
  br label %103

38:                                               ; preds = %20
  call void @_ZN4voro16voronoicell_base15output_verticesEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef %7)
  br label %103

39:                                               ; preds = %20
  call void @_ZN4voro16voronoicell_base15output_verticesEdddP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(160) %0, double noundef %3, double noundef %4, double noundef %5, ptr noundef %7)
  br label %103

40:                                               ; preds = %20
  call void @_ZN4voro16voronoicell_base20output_vertex_ordersEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef %7)
  br label %103

41:                                               ; preds = %20
  %42 = call noundef double @_ZN4voro16voronoicell_base18max_radius_squaredEv(ptr noundef nonnull align 8 dereferenceable(160) %0)
  %43 = fmul double %42, 2.500000e-01
  %44 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7, ptr noundef nonnull @.str.21, double noundef %43) #6
  br label %103

45:                                               ; preds = %20
  %46 = call noundef i32 @_ZN4voro16voronoicell_base15number_of_edgesEv(ptr noundef nonnull align 8 dereferenceable(160) %0)
  %47 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7, ptr noundef nonnull @.str.17, i32 noundef %46) #6
  br label %103

48:                                               ; preds = %20
  %49 = call noundef double @_ZN4voro16voronoicell_base19total_edge_distanceEv(ptr noundef nonnull align 8 dereferenceable(160) %0)
  %50 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7, ptr noundef nonnull @.str.21, double noundef %49) #6
  br label %103

51:                                               ; preds = %20
  invoke void @_ZN4voro16voronoicell_base15face_perimetersERSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef nonnull align 8 dereferenceable(24) %10)
          to label %.invoke58 unwind label %52

52:                                               ; preds = %.invoke58, %.invoke, %72, %69, %67, %66, %65, %64, %63, %62, %58, %54, %51
  %53 = landingpad { ptr, i32 }
          cleanup
  br label %107

54:                                               ; preds = %20
  %55 = invoke noundef i32 @_ZN4voro16voronoicell_base15number_of_facesEv(ptr noundef nonnull align 8 dereferenceable(160) %0)
          to label %56 unwind label %52

56:                                               ; preds = %54
  %57 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7, ptr noundef nonnull @.str.17, i32 noundef %55) #6
  br label %103

58:                                               ; preds = %20
  %59 = invoke noundef double @_ZN4voro16voronoicell_base12surface_areaEv(ptr noundef nonnull align 8 dereferenceable(160) %0)
          to label %60 unwind label %52

60:                                               ; preds = %58
  %61 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7, ptr noundef nonnull @.str.21, double noundef %59) #6
  br label %103

62:                                               ; preds = %20
  invoke void @_ZN4voro16voronoicell_base15face_freq_tableERSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef nonnull align 8 dereferenceable(24) %9)
          to label %.invoke unwind label %52

63:                                               ; preds = %20
  invoke void @_ZN4voro16voronoicell_base11face_ordersERSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef nonnull align 8 dereferenceable(24) %9)
          to label %.invoke unwind label %52

64:                                               ; preds = %20
  invoke void @_ZN4voro16voronoicell_base10face_areasERSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef nonnull align 8 dereferenceable(24) %10)
          to label %.invoke58 unwind label %52

.invoke58:                                        ; preds = %51, %64
  invoke void @_ZN4voro17voro_print_vectorERSt6vectorIdSaIdEEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef %7)
          to label %103 unwind label %52

65:                                               ; preds = %20
  invoke void @_ZN4voro16voronoicell_base13face_verticesERSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef nonnull align 8 dereferenceable(24) %9)
          to label %66 unwind label %52

66:                                               ; preds = %65
  invoke void @_ZN4voro24voro_print_face_verticesERSt6vectorIiSaIiEEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef %7)
          to label %103 unwind label %52

67:                                               ; preds = %20
  invoke void @_ZN4voro16voronoicell_base7normalsERSt6vectorIdSaIdEE(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef nonnull align 8 dereferenceable(24) %10)
          to label %68 unwind label %52

68:                                               ; preds = %67
  call void @_ZN4voro20voro_print_positionsERSt6vectorIdSaIdEEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef %7)
  br label %103

69:                                               ; preds = %20
  %70 = load ptr, ptr %0, align 8, !tbaa !13
  %71 = load ptr, ptr %70, align 8
  invoke void %71(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef nonnull align 8 dereferenceable(24) %9)
          to label %.invoke unwind label %52

.invoke:                                          ; preds = %69, %63, %62
  invoke void @_ZN4voro17voro_print_vectorERSt6vectorIiSaIiEEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef %7)
          to label %103 unwind label %52

72:                                               ; preds = %20
  %73 = invoke noundef double @_ZN4voro16voronoicell_base6volumeEv(ptr noundef nonnull align 8 dereferenceable(160) %0)
          to label %74 unwind label %52

74:                                               ; preds = %72
  %75 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7, ptr noundef nonnull @.str.21, double noundef %73) #6
  br label %103

76:                                               ; preds = %20
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #6
  invoke void @_ZN4voro16voronoicell_base8centroidERdS1_S1_(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %77 unwind label %82

77:                                               ; preds = %76
  %78 = load double, ptr %11, align 8, !tbaa !15
  %79 = load double, ptr %12, align 8, !tbaa !15
  %80 = load double, ptr %13, align 8, !tbaa !15
  %81 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7, ptr noundef nonnull @.str.22, double noundef %78, double noundef %79, double noundef %80) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  br label %103

82:                                               ; preds = %76
  %83 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  br label %107

84:                                               ; preds = %20
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #6
  invoke void @_ZN4voro16voronoicell_base8centroidERdS1_S1_(ptr noundef nonnull align 8 dereferenceable(160) %0, ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %85 unwind label %93

85:                                               ; preds = %84
  %86 = load double, ptr %14, align 8, !tbaa !15
  %87 = fadd double %86, %3
  %88 = load double, ptr %15, align 8, !tbaa !15
  %89 = fadd double %88, %4
  %90 = load double, ptr %16, align 8, !tbaa !15
  %91 = fadd double %90, %5
  %92 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7, ptr noundef nonnull @.str.22, double noundef %87, double noundef %89, double noundef %91) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  br label %103

93:                                               ; preds = %84
  %94 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  br label %107

95:                                               ; preds = %20
  %96 = call i32 @putc(i32 noundef 37, ptr noundef %7)
  %97 = load i8, ptr %21, align 1, !tbaa !5
  %98 = sext i8 %97 to i32
  %99 = call i32 @putc(i32 noundef %98, ptr noundef %7)
  br label %103

100:                                              ; preds = %18
  %101 = sext i8 %19 to i32
  %102 = call i32 @putc(i32 noundef %101, ptr noundef %7)
  br label %103

103:                                              ; preds = %.invoke58, %.invoke, %20, %23, %25, %27, %29, %31, %33, %35, %38, %39, %40, %41, %45, %48, %56, %60, %68, %74, %77, %85, %95, %66, %100
  %.1 = phi ptr [ %21, %95 ], [ %21, %85 ], [ %21, %77 ], [ %21, %74 ], [ %21, %68 ], [ %21, %66 ], [ %21, %60 ], [ %21, %56 ], [ %21, %48 ], [ %21, %45 ], [ %21, %41 ], [ %21, %40 ], [ %21, %39 ], [ %21, %38 ], [ %21, %35 ], [ %21, %33 ], [ %21, %31 ], [ %21, %29 ], [ %21, %27 ], [ %21, %25 ], [ %21, %23 ], [ %.055, %100 ], [ %.055, %20 ], [ %21, %.invoke ], [ %21, %.invoke58 ]
  %104 = getelementptr inbounds i8, ptr %.1, i64 1
  br label %18, !llvm.loop !16

105:                                              ; preds = %18
  %106 = call i32 @fputs(ptr noundef nonnull @.str.23, ptr noundef %7)
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #6
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #6
  ret void

107:                                              ; preds = %93, %82, %52
  %.pn = phi { ptr, i32 } [ %94, %93 ], [ %83, %82 ], [ %53, %52 ]
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #6
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #6
  resume { ptr, i32 } %.pn
}

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

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

declare void @_ZN4voro17voro_print_vectorERSt6vectorIdSaIdEEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) local_unnamed_addr #4

declare void @_ZN4voro17voro_print_vectorERSt6vectorIiSaIiEEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) local_unnamed_addr #4

declare void @_ZN4voro24voro_print_face_verticesERSt6vectorIiSaIiEEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN4voro20voro_print_positionsERSt6vectorIdSaIdEEP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) local_unnamed_addr #5

; Function Attrs: nofree nounwind
declare noundef i32 @putc(i32 noundef, ptr nocapture noundef) local_unnamed_addr #3

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { 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 #3 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "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 = { inlinehint 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 #6 = { 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 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !10, i64 24}
!9 = !{!"_ZTSN4voro16voronoicell_baseE", !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !11, i64 32, !11, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !11, i64 72, !11, i64 80, !11, i64 88, !11, i64 96, !11, i64 104, !10, i64 112, !10, i64 116, !11, i64 120, !12, i64 128, !12, i64 136, !12, i64 144, !12, i64 152}
!10 = !{!"int", !6, i64 0}
!11 = !{!"any pointer", !6, i64 0}
!12 = !{!"double", !6, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"vtable pointer", !7, i64 0}
!15 = !{!12, !12, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,LICMPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass