; LLVM IR from Xingyu-Lin/softgym :: PyFlex/core/sdf.ll (Z7MakeSDFPKjjjjPf)

; 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<(anonymous namespace)::Coord3D, std::allocator<(anonymous namespace)::Coord3D>>::_Vector_impl" }
%"struct.std::_Vector_base<(anonymous namespace)::Coord3D, std::allocator<(anonymous namespace)::Coord3D>>::_Vector_impl" = type { %"struct.std::_Vector_base<(anonymous namespace)::Coord3D, std::allocator<(anonymous namespace)::Coord3D>>::_Vector_impl_data" }
%"struct.std::_Vector_base<(anonymous namespace)::Coord3D, std::allocator<(anonymous namespace)::Coord3D>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.(anonymous namespace)::Coord3D" = type { i32, i32, i32, float, i32, i32, i32 }
%"class.__gnu_cxx::__normal_iterator.5" = type { ptr }

@.str.1 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [9 x i8], align 1
@__PRETTY_FUNCTION__._Z7MakeSDFPKjjjjPf = external hidden unnamed_addr constant [70 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [34 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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #1

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: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #1

; Function Attrs: nounwind
declare float @sqrtf(float noundef) #3

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #4

; Function Attrs: mustprogress uwtable
define dso_local void @_Z7MakeSDFPKjjjjPf(ptr noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, ptr noundef %4) #5 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca float, align 4
  %12 = alloca %"class.std::vector.0", align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca float, align 4
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca %"struct.(anonymous namespace)::Coord3D", align 4
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.5", align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.5", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.5", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.5", align 8
  %25 = alloca %"struct.(anonymous namespace)::Coord3D", align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca float, align 4
  %51 = alloca %"struct.(anonymous namespace)::Coord3D", align 4
  %52 = alloca %"class.__gnu_cxx::__normal_iterator.5", align 8
  %53 = alloca %"class.__gnu_cxx::__normal_iterator.5", align 8
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store i32 %1, ptr %7, align 4, !tbaa !9
  store i32 %2, ptr %8, align 4, !tbaa !9
  store i32 %3, ptr %9, align 4, !tbaa !9
  store ptr %4, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #8
  %57 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %8)
  %58 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %57, ptr noundef nonnull align 4 dereferenceable(4) %9)
  %59 = load i32, ptr %58, align 4, !tbaa !9
  %60 = uitofp i32 %59 to float
  %61 = fdiv float 1.000000e+00, %60
  store float %61, ptr %11, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 24, ptr %12) #8
  call void @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #8
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %62

62:                                               ; preds = %137, %5
  %63 = load i32, ptr %13, align 4, !tbaa !9
  %64 = load i32, ptr %9, align 4, !tbaa !9
  %65 = icmp ult i32 %63, %64
  br i1 %65, label %67, label %66

66:                                               ; preds = %62
  store i32 2, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  br label %140

67:                                               ; preds = %62
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #8
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %68

68:                                               ; preds = %133, %67
  %69 = load i32, ptr %15, align 4, !tbaa !9
  %70 = load i32, ptr %8, align 4, !tbaa !9
  %71 = icmp ult i32 %69, %70
  br i1 %71, label %73, label %72

72:                                               ; preds = %68
  store i32 5, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  br label %136

73:                                               ; preds = %68
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %74

74:                                               ; preds = %128, %73
  %75 = load i32, ptr %16, align 4, !tbaa !9
  %76 = load i32, ptr %7, align 4, !tbaa !9
  %77 = icmp ult i32 %75, %76
  br i1 %77, label %79, label %78

78:                                               ; preds = %74
  store i32 8, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  br label %132

79:                                               ; preds = %74
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  %80 = load ptr, ptr %6, align 8, !tbaa !5
  %81 = load i32, ptr %7, align 4, !tbaa !9
  %82 = load i32, ptr %8, align 4, !tbaa !9
  %83 = load i32, ptr %9, align 4, !tbaa !9
  %84 = load i32, ptr %16, align 4, !tbaa !9
  %85 = load i32, ptr %15, align 4, !tbaa !9
  %86 = load i32, ptr %13, align 4, !tbaa !9
  %87 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_110EdgeDetectEPKjjjjiiiRf(ptr noundef %80, i32 noundef %81, i32 noundef %82, i32 noundef %83, i32 noundef %84, i32 noundef %85, i32 noundef %86, ptr noundef nonnull align 4 dereferenceable(4) %17)
          to label %88 unwind label %105

88:                                               ; preds = %79
  br i1 %87, label %89, label %113

89:                                               ; preds = %88
  call void @llvm.lifetime.start.p0(i64 28, ptr %20) #8
  %90 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %20, i32 0, i32 0
  %91 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %91, ptr %90, align 4, !tbaa !13
  %92 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %20, i32 0, i32 1
  %93 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %93, ptr %92, align 4, !tbaa !15
  %94 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %20, i32 0, i32 2
  %95 = load i32, ptr %13, align 4, !tbaa !9
  store i32 %95, ptr %94, align 4, !tbaa !16
  %96 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %20, i32 0, i32 3
  %97 = load float, ptr %17, align 4, !tbaa !11
  store float %97, ptr %96, align 4, !tbaa !17
  %98 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %20, i32 0, i32 4
  %99 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %99, ptr %98, align 4, !tbaa !18
  %100 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %20, i32 0, i32 5
  %101 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %101, ptr %100, align 4, !tbaa !19
  %102 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %20, i32 0, i32 6
  %103 = load i32, ptr %13, align 4, !tbaa !9
  store i32 %103, ptr %102, align 4, !tbaa !20
  invoke void @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 4 dereferenceable(28) %20)
          to label %104 unwind label %109

104:                                              ; preds = %89
  call void @llvm.lifetime.end.p0(i64 28, ptr %20) #8
  br label %113

105:                                              ; preds = %79
  %106 = landingpad { ptr, i32 }
          cleanup
  %107 = extractvalue { ptr, i32 } %106, 0
  store ptr %107, ptr %18, align 8
  %108 = extractvalue { ptr, i32 } %106, 1
  store i32 %108, ptr %19, align 4
  br label %131

109:                                              ; preds = %89
  %110 = landingpad { ptr, i32 }
          cleanup
  %111 = extractvalue { ptr, i32 } %110, 0
  store ptr %111, ptr %18, align 8
  %112 = extractvalue { ptr, i32 } %110, 1
  store i32 %112, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %20) #8
  br label %131

113:                                              ; preds = %104, %88
  %114 = load ptr, ptr %10, align 8, !tbaa !5
  %115 = load i32, ptr %13, align 4, !tbaa !9
  %116 = load i32, ptr %7, align 4, !tbaa !9
  %117 = mul i32 %115, %116
  %118 = load i32, ptr %8, align 4, !tbaa !9
  %119 = mul i32 %117, %118
  %120 = load i32, ptr %15, align 4, !tbaa !9
  %121 = load i32, ptr %7, align 4, !tbaa !9
  %122 = mul i32 %120, %121
  %123 = add i32 %119, %122
  %124 = load i32, ptr %16, align 4, !tbaa !9
  %125 = add i32 %123, %124
  %126 = zext i32 %125 to i64
  %127 = getelementptr inbounds float, ptr %114, i64 %126
  store float 0x47EFFFFFE0000000, ptr %127, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  br label %128

128:                                              ; preds = %113
  %129 = load i32, ptr %16, align 4, !tbaa !9
  %130 = add i32 %129, 1
  store i32 %130, ptr %16, align 4, !tbaa !9
  br label %74, !llvm.loop !21

131:                                              ; preds = %109, %105
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  br label %520

132:                                              ; preds = %78
  br label %133

133:                                              ; preds = %132
  %134 = load i32, ptr %15, align 4, !tbaa !9
  %135 = add i32 %134, 1
  store i32 %135, ptr %15, align 4, !tbaa !9
  br label %68, !llvm.loop !23

136:                                              ; preds = %72
  br label %137

137:                                              ; preds = %136
  %138 = load i32, ptr %13, align 4, !tbaa !9
  %139 = add i32 %138, 1
  store i32 %139, ptr %13, align 4, !tbaa !9
  br label %62, !llvm.loop !24

140:                                              ; preds = %66
  %141 = call noundef zeroext i1 @_ZNKSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  br i1 %141, label %142, label %143

142:                                              ; preds = %140
  store i32 1, ptr %14, align 4
  br label %517

143:                                              ; preds = %140
  %144 = call ptr @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  %145 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.5", ptr %21, i32 0, i32 0
  store ptr %144, ptr %145, align 8
  %146 = call ptr @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  %147 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.5", ptr %22, i32 0, i32 0
  store ptr %146, ptr %147, align 8
  %148 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.5", ptr %21, i32 0, i32 0
  %149 = load ptr, ptr %148, align 8
  %150 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.5", ptr %22, i32 0, i32 0
  %151 = load ptr, ptr %150, align 8
  invoke void @_ZSt9make_heapIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_17Coord3DESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr %149, ptr %151)
          to label %152 unwind label %254

152:                                              ; preds = %143
  br label %153

153:                                              ; preds = %429, %152
  %154 = call noundef zeroext i1 @_ZNKSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  %155 = xor i1 %154, true
  br i1 %155, label %156, label %430

156:                                              ; preds = %153
  %157 = call ptr @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  %158 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.5", ptr %23, i32 0, i32 0
  store ptr %157, ptr %158, align 8
  %159 = call ptr @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  %160 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.5", ptr %24, i32 0, i32 0
  store ptr %159, ptr %160, align 8
  %161 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.5", ptr %23, i32 0, i32 0
  %162 = load ptr, ptr %161, align 8
  %163 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.5", ptr %24, i32 0, i32 0
  %164 = load ptr, ptr %163, align 8
  invoke void @_ZSt8pop_heapIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_17Coord3DESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr %162, ptr %164)
          to label %165 unwind label %254

165:                                              ; preds = %156
  call void @llvm.lifetime.start.p0(i64 28, ptr %25) #8
  %166 = call noundef nonnull align 4 dereferenceable(28) ptr @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %25, ptr align 4 %166, i64 28, i1 false), !tbaa.struct !25
  call void @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  %167 = load ptr, ptr %10, align 8, !tbaa !5
  %168 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %25, i32 0, i32 2
  %169 = load i32, ptr %168, align 4, !tbaa !16
  %170 = load i32, ptr %7, align 4, !tbaa !9
  %171 = mul i32 %169, %170
  %172 = load i32, ptr %8, align 4, !tbaa !9
  %173 = mul i32 %171, %172
  %174 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %25, i32 0, i32 1
  %175 = load i32, ptr %174, align 4, !tbaa !15
  %176 = load i32, ptr %7, align 4, !tbaa !9
  %177 = mul i32 %175, %176
  %178 = add i32 %173, %177
  %179 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %25, i32 0, i32 0
  %180 = load i32, ptr %179, align 4, !tbaa !13
  %181 = add i32 %178, %180
  %182 = zext i32 %181 to i64
  %183 = getelementptr inbounds float, ptr %167, i64 %182
  %184 = load float, ptr %183, align 4, !tbaa !11
  %185 = fcmp oeq float %184, 0x47EFFFFFE0000000
  br i1 %185, label %186, label %429

186:                                              ; preds = %165
  %187 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %25, i32 0, i32 3
  %188 = load float, ptr %187, align 4, !tbaa !17
  %189 = load ptr, ptr %10, align 8, !tbaa !5
  %190 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %25, i32 0, i32 2
  %191 = load i32, ptr %190, align 4, !tbaa !16
  %192 = load i32, ptr %7, align 4, !tbaa !9
  %193 = mul i32 %191, %192
  %194 = load i32, ptr %8, align 4, !tbaa !9
  %195 = mul i32 %193, %194
  %196 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %25, i32 0, i32 1
  %197 = load i32, ptr %196, align 4, !tbaa !15
  %198 = load i32, ptr %7, align 4, !tbaa !9
  %199 = mul i32 %197, %198
  %200 = add i32 %195, %199
  %201 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %25, i32 0, i32 0
  %202 = load i32, ptr %201, align 4, !tbaa !13
  %203 = add i32 %200, %202
  %204 = zext i32 %203 to i64
  %205 = getelementptr inbounds float, ptr %189, i64 %204
  store float %188, ptr %205, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #8
  %206 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %25, i32 0, i32 0
  %207 = load i32, ptr %206, align 4, !tbaa !13
  %208 = sub nsw i32 %207, 1
  store i32 %208, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #8
  store i32 0, ptr %28, align 4, !tbaa !9
  %209 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %27, ptr noundef nonnull align 4 dereferenceable(4) %28)
          to label %210 unwind label %258

210:                                              ; preds = %186
  %211 = load i32, ptr %209, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  store i32 %211, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #8
  %212 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %25, i32 0, i32 0
  %213 = load i32, ptr %212, align 4, !tbaa !13
  %214 = add nsw i32 %213, 1
  store i32 %214, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #8
  %215 = load i32, ptr %7, align 4, !tbaa !9
  %216 = sub i32 %215, 1
  store i32 %216, ptr %31, align 4, !tbaa !9
  %217 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %30, ptr noundef nonnull align 4 dereferenceable(4) %31)
          to label %218 unwind label %262

218:                                              ; preds = %210
  %219 = load i32, ptr %217, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  store i32 %219, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #8
  %220 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %25, i32 0, i32 1
  %221 = load i32, ptr %220, align 4, !tbaa !15
  %222 = sub nsw i32 %221, 1
  store i32 %222, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #8
  store i32 0, ptr %34, align 4, !tbaa !9
  %223 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %33, ptr noundef nonnull align 4 dereferenceable(4) %34)
          to label %224 unwind label %266

224:                                              ; preds = %218
  %225 = load i32, ptr %223, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  store i32 %225, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #8
  %226 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %25, i32 0, i32 1
  %227 = load i32, ptr %226, align 4, !tbaa !15
  %228 = add nsw i32 %227, 1
  store i32 %228, ptr %36, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #8
  %229 = load i32, ptr %8, align 4, !tbaa !9
  %230 = sub i32 %229, 1
  store i32 %230, ptr %37, align 4, !tbaa !9
  %231 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %36, ptr noundef nonnull align 4 dereferenceable(4) %37)
          to label %232 unwind label %270

232:                                              ; preds = %224
  %233 = load i32, ptr %231, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  store i32 %233, ptr %35, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #8
  %234 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %25, i32 0, i32 2
  %235 = load i32, ptr %234, align 4, !tbaa !16
  %236 = sub nsw i32 %235, 1
  store i32 %236, ptr %39, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #8
  store i32 0, ptr %40, align 4, !tbaa !9
  %237 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %39, ptr noundef nonnull align 4 dereferenceable(4) %40)
          to label %238 unwind label %274

238:                                              ; preds = %232
  %239 = load i32, ptr %237, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #8
  store i32 %239, ptr %38, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #8
  %240 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %25, i32 0, i32 2
  %241 = load i32, ptr %240, align 4, !tbaa !16
  %242 = add nsw i32 %241, 1
  store i32 %242, ptr %42, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #8
  %243 = load i32, ptr %9, align 4, !tbaa !9
  %244 = sub i32 %243, 1
  store i32 %244, ptr %43, align 4, !tbaa !9
  %245 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %42, ptr noundef nonnull align 4 dereferenceable(4) %43)
          to label %246 unwind label %278

246:                                              ; preds = %238
  %247 = load i32, ptr %245, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #8
  store i32 %247, ptr %41, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #8
  %248 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %248, ptr %44, align 4, !tbaa !9
  br label %249

249:                                              ; preds = %419, %246
  %250 = load i32, ptr %44, align 4, !tbaa !9
  %251 = load i32, ptr %41, align 4, !tbaa !9
  %252 = icmp sle i32 %250, %251
  br i1 %252, label %282, label %253

253:                                              ; preds = %249
  store i32 13, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  br label %422

254:                                              ; preds = %156, %143
  %255 = landingpad { ptr, i32 }
          cleanup
  %256 = extractvalue { ptr, i32 } %255, 0
  store ptr %256, ptr %18, align 8
  %257 = extractvalue { ptr, i32 } %255, 1
  store i32 %257, ptr %19, align 4
  br label %520

258:                                              ; preds = %186
  %259 = landingpad { ptr, i32 }
          cleanup
  %260 = extractvalue { ptr, i32 } %259, 0
  store ptr %260, ptr %18, align 8
  %261 = extractvalue { ptr, i32 } %259, 1
  store i32 %261, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  br label %428

262:                                              ; preds = %210
  %263 = landingpad { ptr, i32 }
          cleanup
  %264 = extractvalue { ptr, i32 } %263, 0
  store ptr %264, ptr %18, align 8
  %265 = extractvalue { ptr, i32 } %263, 1
  store i32 %265, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  br label %427

266:                                              ; preds = %218
  %267 = landingpad { ptr, i32 }
          cleanup
  %268 = extractvalue { ptr, i32 } %267, 0
  store ptr %268, ptr %18, align 8
  %269 = extractvalue { ptr, i32 } %267, 1
  store i32 %269, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  br label %426

270:                                              ; preds = %224
  %271 = landingpad { ptr, i32 }
          cleanup
  %272 = extractvalue { ptr, i32 } %271, 0
  store ptr %272, ptr %18, align 8
  %273 = extractvalue { ptr, i32 } %271, 1
  store i32 %273, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  br label %425

274:                                              ; preds = %232
  %275 = landingpad { ptr, i32 }
          cleanup
  %276 = extractvalue { ptr, i32 } %275, 0
  store ptr %276, ptr %18, align 8
  %277 = extractvalue { ptr, i32 } %275, 1
  store i32 %277, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #8
  br label %424

278:                                              ; preds = %238
  %279 = landingpad { ptr, i32 }
          cleanup
  %280 = extractvalue { ptr, i32 } %279, 0
  store ptr %280, ptr %18, align 8
  %281 = extractvalue { ptr, i32 } %279, 1
  store i32 %281, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #8
  br label %423

282:                                              ; preds = %249
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #8
  %283 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %283, ptr %45, align 4, !tbaa !9
  br label %284

284:                                              ; preds = %415, %282
  %285 = load i32, ptr %45, align 4, !tbaa !9
  %286 = load i32, ptr %35, align 4, !tbaa !9
  %287 = icmp sle i32 %285, %286
  br i1 %287, label %289, label %288

288:                                              ; preds = %284
  store i32 16, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  br label %418

289:                                              ; preds = %284
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #8
  %290 = load i32, ptr %26, align 4, !tbaa !9
  store i32 %290, ptr %46, align 4, !tbaa !9
  br label %291

291:                                              ; preds = %411, %289
  %292 = load i32, ptr %46, align 4, !tbaa !9
  %293 = load i32, ptr %29, align 4, !tbaa !9
  %294 = icmp sle i32 %292, %293
  br i1 %294, label %296, label %295

295:                                              ; preds = %291
  store i32 19, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #8
  br label %414

296:                                              ; preds = %291
  %297 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %25, i32 0, i32 0
  %298 = load i32, ptr %297, align 4, !tbaa !13
  %299 = load i32, ptr %46, align 4, !tbaa !9
  %300 = icmp ne i32 %298, %299
  br i1 %300, label %311, label %301

301:                                              ; preds = %296
  %302 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %25, i32 0, i32 1
  %303 = load i32, ptr %302, align 4, !tbaa !15
  %304 = load i32, ptr %45, align 4, !tbaa !9
  %305 = icmp ne i32 %303, %304
  br i1 %305, label %311, label %306

306:                                              ; preds = %301
  %307 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %25, i32 0, i32 2
  %308 = load i32, ptr %307, align 4, !tbaa !16
  %309 = load i32, ptr %44, align 4, !tbaa !9
  %310 = icmp ne i32 %308, %309
  br i1 %310, label %311, label %410

311:                                              ; preds = %306, %301, %296
  %312 = load ptr, ptr %10, align 8, !tbaa !5
  %313 = load i32, ptr %44, align 4, !tbaa !9
  %314 = load i32, ptr %7, align 4, !tbaa !9
  %315 = mul i32 %313, %314
  %316 = load i32, ptr %8, align 4, !tbaa !9
  %317 = mul i32 %315, %316
  %318 = load i32, ptr %45, align 4, !tbaa !9
  %319 = load i32, ptr %7, align 4, !tbaa !9
  %320 = mul i32 %318, %319
  %321 = add i32 %317, %320
  %322 = load i32, ptr %46, align 4, !tbaa !9
  %323 = add i32 %321, %322
  %324 = zext i32 %323 to i64
  %325 = getelementptr inbounds float, ptr %312, i64 %324
  %326 = load float, ptr %325, align 4, !tbaa !11
  %327 = fcmp oeq float %326, 0x47EFFFFFE0000000
  br i1 %327, label %328, label %410

328:                                              ; preds = %311
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #8
  %329 = load i32, ptr %46, align 4, !tbaa !9
  %330 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %25, i32 0, i32 4
  %331 = load i32, ptr %330, align 4, !tbaa !18
  %332 = sub nsw i32 %329, %331
  store i32 %332, ptr %47, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #8
  %333 = load i32, ptr %45, align 4, !tbaa !9
  %334 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %25, i32 0, i32 5
  %335 = load i32, ptr %334, align 4, !tbaa !19
  %336 = sub nsw i32 %333, %335
  store i32 %336, ptr %48, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #8
  %337 = load i32, ptr %44, align 4, !tbaa !9
  %338 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %25, i32 0, i32 6
  %339 = load i32, ptr %338, align 4, !tbaa !20
  %340 = sub nsw i32 %337, %339
  store i32 %340, ptr %49, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #8
  %341 = load i32, ptr %47, align 4, !tbaa !9
  %342 = load i32, ptr %47, align 4, !tbaa !9
  %343 = mul nsw i32 %341, %342
  %344 = load i32, ptr %48, align 4, !tbaa !9
  %345 = load i32, ptr %48, align 4, !tbaa !9
  %346 = mul nsw i32 %344, %345
  %347 = add nsw i32 %343, %346
  %348 = load i32, ptr %49, align 4, !tbaa !9
  %349 = load i32, ptr %49, align 4, !tbaa !9
  %350 = mul nsw i32 %348, %349
  %351 = add nsw i32 %347, %350
  %352 = sitofp i32 %351 to float
  %353 = call float @sqrtf(float noundef %352) #8
  %354 = load ptr, ptr %10, align 8, !tbaa !5
  %355 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %25, i32 0, i32 6
  %356 = load i32, ptr %355, align 4, !tbaa !20
  %357 = load i32, ptr %7, align 4, !tbaa !9
  %358 = mul i32 %356, %357
  %359 = load i32, ptr %8, align 4, !tbaa !9
  %360 = mul i32 %358, %359
  %361 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %25, i32 0, i32 5
  %362 = load i32, ptr %361, align 4, !tbaa !19
  %363 = load i32, ptr %7, align 4, !tbaa !9
  %364 = mul i32 %362, %363
  %365 = add i32 %360, %364
  %366 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %25, i32 0, i32 4
  %367 = load i32, ptr %366, align 4, !tbaa !18
  %368 = add i32 %365, %367
  %369 = zext i32 %368 to i64
  %370 = getelementptr inbounds float, ptr %354, i64 %369
  %371 = load float, ptr %370, align 4, !tbaa !11
  %372 = fadd float %353, %371
  store float %372, ptr %50, align 4, !tbaa !11
  %373 = load float, ptr %50, align 4, !tbaa !11
  %374 = fcmp ogt float %373, 0.000000e+00
  br i1 %374, label %375, label %376

375:                                              ; preds = %328
  br label %378

376:                                              ; preds = %328
  call void @__assert_fail(ptr noundef @.str.2, ptr noundef @.str.1, i32 noundef 265, ptr noundef @__PRETTY_FUNCTION__._Z7MakeSDFPKjjjjPf) #9
  unreachable

377:                                              ; No predecessors!
  br label %378

378:                                              ; preds = %377, %375
  call void @llvm.lifetime.start.p0(i64 28, ptr %51) #8
  %379 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %51, i32 0, i32 0
  %380 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %380, ptr %379, align 4, !tbaa !13
  %381 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %51, i32 0, i32 1
  %382 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %382, ptr %381, align 4, !tbaa !15
  %383 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %51, i32 0, i32 2
  %384 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %384, ptr %383, align 4, !tbaa !16
  %385 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %51, i32 0, i32 3
  %386 = load float, ptr %50, align 4, !tbaa !11
  store float %386, ptr %385, align 4, !tbaa !17
  %387 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %51, i32 0, i32 4
  %388 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %25, i32 0, i32 4
  %389 = load i32, ptr %388, align 4, !tbaa !18
  store i32 %389, ptr %387, align 4, !tbaa !18
  %390 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %51, i32 0, i32 5
  %391 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %25, i32 0, i32 5
  %392 = load i32, ptr %391, align 4, !tbaa !19
  store i32 %392, ptr %390, align 4, !tbaa !19
  %393 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %51, i32 0, i32 6
  %394 = getelementptr inbounds %"struct.(anonymous namespace)::Coord3D", ptr %25, i32 0, i32 6
  %395 = load i32, ptr %394, align 4, !tbaa !20
  store i32 %395, ptr %393, align 4, !tbaa !20
  invoke void @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 4 dereferenceable(28) %51)
          to label %396 unwind label %406

396:                                              ; preds = %378
  %397 = call ptr @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  %398 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.5", ptr %52, i32 0, i32 0
  store ptr %397, ptr %398, align 8
  %399 = call ptr @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  %400 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.5", ptr %53, i32 0, i32 0
  store ptr %399, ptr %400, align 8
  %401 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.5", ptr %52, i32 0, i32 0
  %402 = load ptr, ptr %401, align 8
  %403 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.5", ptr %53, i32 0, i32 0
  %404 = load ptr, ptr %403, align 8
  invoke void @_ZSt9push_heapIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_17Coord3DESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr %402, ptr %404)
          to label %405 unwind label %406

405:                                              ; preds = %396
  call void @llvm.lifetime.end.p0(i64 28, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #8
  br label %410

406:                                              ; preds = %396, %378
  %407 = landingpad { ptr, i32 }
          cleanup
  %408 = extractvalue { ptr, i32 } %407, 0
  store ptr %408, ptr %18, align 8
  %409 = extractvalue { ptr, i32 } %407, 1
  store i32 %409, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 28, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  br label %423

410:                                              ; preds = %405, %311, %306
  br label %411

411:                                              ; preds = %410
  %412 = load i32, ptr %46, align 4, !tbaa !9
  %413 = add nsw i32 %412, 1
  store i32 %413, ptr %46, align 4, !tbaa !9
  br label %291, !llvm.loop !26

414:                                              ; preds = %295
  br label %415

415:                                              ; preds = %414
  %416 = load i32, ptr %45, align 4, !tbaa !9
  %417 = add nsw i32 %416, 1
  store i32 %417, ptr %45, align 4, !tbaa !9
  br label %284, !llvm.loop !27

418:                                              ; preds = %288
  br label %419

419:                                              ; preds = %418
  %420 = load i32, ptr %44, align 4, !tbaa !9
  %421 = add nsw i32 %420, 1
  store i32 %421, ptr %44, align 4, !tbaa !9
  br label %249, !llvm.loop !28

422:                                              ; preds = %253
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  br label %429

423:                                              ; preds = %406, %278
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #8
  br label %424

424:                                              ; preds = %423, %274
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #8
  br label %425

425:                                              ; preds = %424, %270
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  br label %426

426:                                              ; preds = %425, %266
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #8
  br label %427

427:                                              ; preds = %426, %262
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  br label %428

428:                                              ; preds = %427, %258
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 28, ptr %25) #8
  br label %520

429:                                              ; preds = %422, %165
  call void @llvm.lifetime.end.p0(i64 28, ptr %25) #8
  br label %153, !llvm.loop !29

430:                                              ; preds = %153
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #8
  store i32 0, ptr %54, align 4, !tbaa !9
  br label %431

431:                                              ; preds = %513, %430
  %432 = load i32, ptr %54, align 4, !tbaa !9
  %433 = load i32, ptr %9, align 4, !tbaa !9
  %434 = icmp ult i32 %432, %433
  br i1 %434, label %436, label %435

435:                                              ; preds = %431
  store i32 22, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #8
  br label %516

436:                                              ; preds = %431
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #8
  store i32 0, ptr %55, align 4, !tbaa !9
  br label %437

437:                                              ; preds = %509, %436
  %438 = load i32, ptr %55, align 4, !tbaa !9
  %439 = load i32, ptr %8, align 4, !tbaa !9
  %440 = icmp ult i32 %438, %439
  br i1 %440, label %442, label %441

441:                                              ; preds = %437
  store i32 25, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #8
  br label %512

442:                                              ; preds = %437
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #8
  store i32 0, ptr %56, align 4, !tbaa !9
  br label %443

443:                                              ; preds = %505, %442
  %444 = load i32, ptr %56, align 4, !tbaa !9
  %445 = load i32, ptr %7, align 4, !tbaa !9
  %446 = icmp ult i32 %444, %445
  br i1 %446, label %448, label %447

447:                                              ; preds = %443
  store i32 28, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #8
  br label %508

448:                                              ; preds = %443
  %449 = load ptr, ptr %10, align 8, !tbaa !5
  %450 = load i32, ptr %54, align 4, !tbaa !9
  %451 = load i32, ptr %7, align 4, !tbaa !9
  %452 = mul i32 %450, %451
  %453 = load i32, ptr %8, align 4, !tbaa !9
  %454 = mul i32 %452, %453
  %455 = load i32, ptr %55, align 4, !tbaa !9
  %456 = load i32, ptr %7, align 4, !tbaa !9
  %457 = mul i32 %455, %456
  %458 = add i32 %454, %457
  %459 = load i32, ptr %56, align 4, !tbaa !9
  %460 = add i32 %458, %459
  %461 = zext i32 %460 to i64
  %462 = getelementptr inbounds float, ptr %449, i64 %461
  %463 = load float, ptr %462, align 4, !tbaa !11
  %464 = fcmp olt float %463, 0x47EFFFFFE0000000
  br i1 %464, label %465, label %466

465:                                              ; preds = %448
  br label %468

466:                                              ; preds = %448
  call void @__assert_fail(ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 284, ptr noundef @__PRETTY_FUNCTION__._Z7MakeSDFPKjjjjPf) #9
  unreachable

467:                                              ; No predecessors!
  br label %468

468:                                              ; preds = %467, %465
  %469 = load ptr, ptr %6, align 8, !tbaa !5
  %470 = load i32, ptr %54, align 4, !tbaa !9
  %471 = load i32, ptr %7, align 4, !tbaa !9
  %472 = mul i32 %470, %471
  %473 = load i32, ptr %8, align 4, !tbaa !9
  %474 = mul i32 %472, %473
  %475 = load i32, ptr %55, align 4, !tbaa !9
  %476 = load i32, ptr %7, align 4, !tbaa !9
  %477 = mul i32 %475, %476
  %478 = add i32 %474, %477
  %479 = load i32, ptr %56, align 4, !tbaa !9
  %480 = add i32 %478, %479
  %481 = zext i32 %480 to i64
  %482 = getelementptr inbounds i32, ptr %469, i64 %481
  %483 = load i32, ptr %482, align 4, !tbaa !9
  %484 = icmp ne i32 %483, 0
  %485 = zext i1 %484 to i64
  %486 = select i1 %484, float -1.000000e+00, float 1.000000e+00
  %487 = load float, ptr %11, align 4, !tbaa !11
  %488 = fmul float %486, %487
  %489 = load ptr, ptr %10, align 8, !tbaa !5
  %490 = load i32, ptr %54, align 4, !tbaa !9
  %491 = load i32, ptr %7, align 4, !tbaa !9
  %492 = mul i32 %490, %491
  %493 = load i32, ptr %8, align 4, !tbaa !9
  %494 = mul i32 %492, %493
  %495 = load i32, ptr %55, align 4, !tbaa !9
  %496 = load i32, ptr %7, align 4, !tbaa !9
  %497 = mul i32 %495, %496
  %498 = add i32 %494, %497
  %499 = load i32, ptr %56, align 4, !tbaa !9
  %500 = add i32 %498, %499
  %501 = zext i32 %500 to i64
  %502 = getelementptr inbounds float, ptr %489, i64 %501
  %503 = load float, ptr %502, align 4, !tbaa !11
  %504 = fmul float %503, %488
  store float %504, ptr %502, align 4, !tbaa !11
  br label %505

505:                                              ; preds = %468
  %506 = load i32, ptr %56, align 4, !tbaa !9
  %507 = add i32 %506, 1
  store i32 %507, ptr %56, align 4, !tbaa !9
  br label %443, !llvm.loop !30

508:                                              ; preds = %447
  br label %509

509:                                              ; preds = %508
  %510 = load i32, ptr %55, align 4, !tbaa !9
  %511 = add i32 %510, 1
  store i32 %511, ptr %55, align 4, !tbaa !9
  br label %437, !llvm.loop !31

512:                                              ; preds = %441
  br label %513

513:                                              ; preds = %512
  %514 = load i32, ptr %54, align 4, !tbaa !9
  %515 = add i32 %514, 1
  store i32 %515, ptr %54, align 4, !tbaa !9
  br label %431, !llvm.loop !32

516:                                              ; preds = %435
  store i32 0, ptr %14, align 4
  br label %517

517:                                              ; preds = %516, %142
  call void @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #8
  %518 = load i32, ptr %14, align 4
  switch i32 %518, label %526 [
    i32 0, label %519
    i32 1, label %519
  ]

519:                                              ; preds = %517, %517
  ret void

520:                                              ; preds = %428, %254, %131
  call void @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #8
  br label %521

521:                                              ; preds = %520
  %522 = load ptr, ptr %18, align 8
  %523 = load i32, ptr %19, align 4
  %524 = insertvalue { ptr, i32 } poison, ptr %522, 0
  %525 = insertvalue { ptr, i32 } %524, i32 %523, 1
  resume { ptr, i32 } %525

526:                                              ; preds = %517
  unreachable
}

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_110EdgeDetectEPKjjjjiiiRf(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(4)) #5

; Function Attrs: mustprogress uwtable
declare hidden void @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(28)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZNKSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZSt9make_heapIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_17Coord3DESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr, ptr) #7

; Function Attrs: mustprogress nounwind uwtable
declare hidden ptr @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden ptr @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZSt8pop_heapIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_17Coord3DESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr, ptr) #7

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 4 dereferenceable(28) ptr @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24)) #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24)) #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZSt9push_heapIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_17Coord3DESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr, ptr) #7

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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 = { noreturn 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 #5 = { 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 #6 = { 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 #7 = { 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 #8 = { nounwind }
attributes #9 = { noreturn 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 = !{!"float", !7, i64 0}
!13 = !{!14, !10, i64 0}
!14 = !{!"_ZTSN12_GLOBAL__N_17Coord3DE", !10, i64 0, !10, i64 4, !10, i64 8, !12, i64 12, !10, i64 16, !10, i64 20, !10, i64 24}
!15 = !{!14, !10, i64 4}
!16 = !{!14, !10, i64 8}
!17 = !{!14, !12, i64 12}
!18 = !{!14, !10, i64 16}
!19 = !{!14, !10, i64 20}
!20 = !{!14, !10, i64 24}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = distinct !{!23, !22}
!24 = distinct !{!24, !22}
!25 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !11, i64 16, i64 4, !9, i64 20, i64 4, !9, i64 24, i64 4, !9}
!26 = distinct !{!26, !22}
!27 = distinct !{!27, !22}
!28 = distinct !{!28, !22}
!29 = distinct !{!29, !22}
!30 = distinct !{!30, !22}
!31 = distinct !{!31, !22}
!32 = distinct !{!32, !22}


; 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<(anonymous namespace)::Coord3D, std::allocator<(anonymous namespace)::Coord3D>>::_Vector_impl" }
%"struct.std::_Vector_base<(anonymous namespace)::Coord3D, std::allocator<(anonymous namespace)::Coord3D>>::_Vector_impl" = type { %"struct.std::_Vector_base<(anonymous namespace)::Coord3D, std::allocator<(anonymous namespace)::Coord3D>>::_Vector_impl_data" }
%"struct.std::_Vector_base<(anonymous namespace)::Coord3D, std::allocator<(anonymous namespace)::Coord3D>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.(anonymous namespace)::Coord3D" = type { i32, i32, i32, float, i32, i32, i32 }

@.str.1 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [9 x i8], align 1
@__PRETTY_FUNCTION__._Z7MakeSDFPKjjjjPf = external hidden unnamed_addr constant [70 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [34 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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1

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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
define dso_local void @_Z7MakeSDFPKjjjjPf(ptr noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, ptr nocapture noundef %4) local_unnamed_addr #3 personality ptr @__gxx_personality_v0 {
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca %"class.std::vector.0", align 8
  %10 = alloca float, align 4
  %11 = alloca %"struct.(anonymous namespace)::Coord3D", align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca %"struct.(anonymous namespace)::Coord3D", align 4
  store i32 %1, ptr %6, align 4, !tbaa !5
  store i32 %2, ptr %7, align 4, !tbaa !5
  store i32 %3, ptr %8, align 4, !tbaa !5
  %25 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 4 dereferenceable(4) %7)
  %26 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %25, ptr noundef nonnull align 4 dereferenceable(4) %8)
  %27 = load i32, ptr %26, align 4, !tbaa !5
  %28 = uitofp i32 %27 to float
  %29 = fdiv float 1.000000e+00, %28
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #7
  call void @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  %30 = load i32, ptr %8, align 4, !tbaa !5
  %.not = icmp eq i32 %30, 0
  br i1 %.not, label %._crit_edge145, label %.preheader139.lr.ph

.preheader139.lr.ph:                              ; preds = %5
  %31 = getelementptr inbounds i8, ptr %11, i64 4
  %32 = getelementptr inbounds i8, ptr %11, i64 8
  %33 = getelementptr inbounds i8, ptr %11, i64 12
  %34 = getelementptr inbounds i8, ptr %11, i64 16
  %35 = getelementptr inbounds i8, ptr %11, i64 20
  %36 = getelementptr inbounds i8, ptr %11, i64 24
  %37 = load i32, ptr %7, align 4, !tbaa !5
  %.not170 = icmp eq i32 %37, 0
  br i1 %.not170, label %._crit_edge145, label %.preheader139

.preheader139:                                    ; preds = %.preheader139.lr.ph, %._crit_edge142
  %38 = phi i32 [ %47, %._crit_edge142 ], [ %30, %.preheader139.lr.ph ]
  %39 = phi i32 [ %48, %._crit_edge142 ], [ %37, %.preheader139.lr.ph ]
  %40 = phi i32 [ %49, %._crit_edge142 ], [ %37, %.preheader139.lr.ph ]
  %41 = phi i32 [ %50, %._crit_edge142 ], [ %37, %.preheader139.lr.ph ]
  %.0102143 = phi i32 [ %51, %._crit_edge142 ], [ 0, %.preheader139.lr.ph ]
  %.not171 = icmp eq i32 %41, 0
  br i1 %.not171, label %._crit_edge142, label %.preheader138.lr.ph

.preheader138.lr.ph:                              ; preds = %.preheader139
  %42 = load i32, ptr %6, align 4, !tbaa !5
  %.not172 = icmp eq i32 %42, 0
  br i1 %.not172, label %._crit_edge142, label %.preheader138

._crit_edge145:                                   ; preds = %._crit_edge142, %.preheader139.lr.ph, %5
  %43 = call noundef zeroext i1 @_ZNKSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  br i1 %43, label %.loopexit, label %79

.preheader138:                                    ; preds = %.preheader138.lr.ph, %._crit_edge
  %44 = phi i32 [ %53, %._crit_edge ], [ %39, %.preheader138.lr.ph ]
  %45 = phi i32 [ %53, %._crit_edge ], [ %40, %.preheader138.lr.ph ]
  %46 = phi i32 [ %54, %._crit_edge ], [ %42, %.preheader138.lr.ph ]
  %.0103141 = phi i32 [ %55, %._crit_edge ], [ 0, %.preheader138.lr.ph ]
  %.not173 = icmp eq i32 %46, 0
  br i1 %.not173, label %._crit_edge, label %.lr.ph

._crit_edge142.loopexit181:                       ; preds = %._crit_edge
  %.pre = load i32, ptr %8, align 4, !tbaa !5
  br label %._crit_edge142

._crit_edge142:                                   ; preds = %.preheader138.lr.ph, %._crit_edge142.loopexit181, %.preheader139
  %47 = phi i32 [ %.pre, %._crit_edge142.loopexit181 ], [ %38, %.preheader139 ], [ %38, %.preheader138.lr.ph ]
  %48 = phi i32 [ %53, %._crit_edge142.loopexit181 ], [ %39, %.preheader139 ], [ %39, %.preheader138.lr.ph ]
  %49 = phi i32 [ %53, %._crit_edge142.loopexit181 ], [ %40, %.preheader139 ], [ %40, %.preheader138.lr.ph ]
  %50 = phi i32 [ %53, %._crit_edge142.loopexit181 ], [ 0, %.preheader139 ], [ %41, %.preheader138.lr.ph ]
  %51 = add nuw i32 %.0102143, 1
  %52 = icmp ult i32 %51, %47
  br i1 %52, label %.preheader139, label %._crit_edge145, !llvm.loop !9

._crit_edge:                                      ; preds = %69, %.preheader138
  %53 = phi i32 [ %44, %.preheader138 ], [ %71, %69 ]
  %54 = phi i32 [ 0, %.preheader138 ], [ %70, %69 ]
  %55 = add nuw i32 %.0103141, 1
  %56 = icmp ult i32 %55, %53
  br i1 %56, label %.preheader138, label %._crit_edge142.loopexit181, !llvm.loop !12

.lr.ph:                                           ; preds = %.preheader138, %69
  %57 = phi i32 [ %71, %69 ], [ %45, %.preheader138 ]
  %58 = phi i32 [ %70, %69 ], [ %46, %.preheader138 ]
  %.0104140 = phi i32 [ %76, %69 ], [ 0, %.preheader138 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #7
  %59 = load i32, ptr %8, align 4, !tbaa !5
  %60 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_110EdgeDetectEPKjjjjiiiRf(ptr noundef %0, i32 noundef %58, i32 noundef %57, i32 noundef %59, i32 noundef %.0104140, i32 noundef %.0103141, i32 noundef %.0102143, ptr noundef nonnull align 4 dereferenceable(4) %10)
          to label %61 unwind label %65

61:                                               ; preds = %.lr.ph
  br i1 %60, label %62, label %69

62:                                               ; preds = %61
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %11) #7
  store i32 %.0104140, ptr %11, align 4, !tbaa !13
  store i32 %.0103141, ptr %31, align 4, !tbaa !16
  store i32 %.0102143, ptr %32, align 4, !tbaa !17
  %63 = load float, ptr %10, align 4, !tbaa !18
  store float %63, ptr %33, align 4, !tbaa !19
  store i32 %.0104140, ptr %34, align 4, !tbaa !20
  store i32 %.0103141, ptr %35, align 4, !tbaa !21
  store i32 %.0102143, ptr %36, align 4, !tbaa !22
  invoke void @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 4 dereferenceable(28) %11)
          to label %64 unwind label %67

64:                                               ; preds = %62
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %11) #7
  br label %69

65:                                               ; preds = %.lr.ph
  %66 = landingpad { ptr, i32 }
          cleanup
  br label %78

67:                                               ; preds = %62
  %68 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %11) #7
  br label %78

69:                                               ; preds = %64, %61
  %70 = load i32, ptr %6, align 4, !tbaa !5
  %71 = load i32, ptr %7, align 4, !tbaa !5
  %72 = mul i32 %71, %.0102143
  %reass.add129 = add i32 %72, %.0103141
  %reass.mul130 = mul i32 %reass.add129, %70
  %73 = add i32 %reass.mul130, %.0104140
  %74 = zext i32 %73 to i64
  %75 = getelementptr inbounds float, ptr %4, i64 %74
  store float 0x47EFFFFFE0000000, ptr %75, align 4, !tbaa !18
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #7
  %76 = add nuw i32 %.0104140, 1
  %77 = icmp ult i32 %76, %70
  br i1 %77, label %.lr.ph, label %._crit_edge, !llvm.loop !23

78:                                               ; preds = %67, %65
  %.pn = phi { ptr, i32 } [ %68, %67 ], [ %66, %65 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #7
  br label %186

79:                                               ; preds = %._crit_edge145
  %80 = call ptr @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  %81 = call ptr @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  invoke void @_ZSt9make_heapIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_17Coord3DESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr %80, ptr %81)
          to label %.preheader136 unwind label %.loopexit.split-lp

.preheader136:                                    ; preds = %79
  %82 = call noundef zeroext i1 @_ZNKSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  br i1 %82, label %.preheader132, label %.lr.ph159

.lr.ph159:                                        ; preds = %.preheader136
  %83 = getelementptr inbounds i8, ptr %24, i64 4
  %84 = getelementptr inbounds i8, ptr %24, i64 8
  %85 = getelementptr inbounds i8, ptr %24, i64 12
  %86 = getelementptr inbounds i8, ptr %24, i64 16
  %87 = getelementptr inbounds i8, ptr %24, i64 20
  %88 = getelementptr inbounds i8, ptr %24, i64 24
  br label %108

.preheader132:                                    ; preds = %.loopexit135, %.preheader136
  %89 = load i32, ptr %8, align 4, !tbaa !5
  %.not174 = icmp eq i32 %89, 0
  br i1 %.not174, label %.loopexit, label %.preheader131.lr.ph

.preheader131.lr.ph:                              ; preds = %.preheader132
  %90 = load i32, ptr %7, align 4, !tbaa !5
  %.not175 = icmp eq i32 %90, 0
  %91 = load i32, ptr %6, align 4
  %92 = fneg float %29
  %.not176 = icmp eq i32 %91, 0
  %or.cond191 = select i1 %.not175, i1 true, i1 %.not176
  br i1 %or.cond191, label %.loopexit, label %.preheader131.us.us.preheader

.preheader131.us.us.preheader:                    ; preds = %.preheader131.lr.ph
  %wide.trip.count = zext i32 %91 to i64
  br label %.preheader131.us.us

.preheader131.us.us:                              ; preds = %.preheader131.us.us.preheader, %._crit_edge164.split.us.us.us
  %.0101165.us.us = phi i32 [ %107, %._crit_edge164.split.us.us.us ], [ 0, %.preheader131.us.us.preheader ]
  %93 = mul i32 %90, %.0101165.us.us
  br label %.preheader.us.us.us

.preheader.us.us.us:                              ; preds = %._crit_edge162.us.us.us, %.preheader131.us.us
  %.0100163.us.us.us = phi i32 [ 0, %.preheader131.us.us ], [ %106, %._crit_edge162.us.us.us ]
  %reass.add127.us.us.us = add i32 %93, %.0100163.us.us.us
  %reass.mul128.us.us.us = mul i32 %reass.add127.us.us.us, %91
  br label %94

94:                                               ; preds = %101, %.preheader.us.us.us
  %indvars.iv = phi i64 [ %indvars.iv.next, %101 ], [ 0, %.preheader.us.us.us ]
  %95 = trunc nuw i64 %indvars.iv to i32
  %96 = add i32 %reass.mul128.us.us.us, %95
  %97 = zext i32 %96 to i64
  %98 = getelementptr inbounds float, ptr %4, i64 %97
  %99 = load float, ptr %98, align 4, !tbaa !18
  %100 = fcmp olt float %99, 0x47EFFFFFE0000000
  br i1 %100, label %101, label %.split.us

101:                                              ; preds = %94
  %102 = getelementptr inbounds i32, ptr %0, i64 %97
  %103 = load i32, ptr %102, align 4, !tbaa !5
  %.not.us.us.us = icmp eq i32 %103, 0
  %104 = select i1 %.not.us.us.us, float %29, float %92
  %105 = fmul float %99, %104
  store float %105, ptr %98, align 4, !tbaa !18
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond186.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond186.not, label %._crit_edge162.us.us.us, label %94, !llvm.loop !24

._crit_edge162.us.us.us:                          ; preds = %101
  %106 = add nuw i32 %.0100163.us.us.us, 1
  %exitcond187.not = icmp eq i32 %106, %90
  br i1 %exitcond187.not, label %._crit_edge164.split.us.us.us, label %.preheader.us.us.us, !llvm.loop !25

._crit_edge164.split.us.us.us:                    ; preds = %._crit_edge162.us.us.us
  %107 = add nuw i32 %.0101165.us.us, 1
  %exitcond188.not = icmp eq i32 %107, %89
  br i1 %exitcond188.not, label %.loopexit, label %.preheader131.us.us, !llvm.loop !26

108:                                              ; preds = %.lr.ph159, %.loopexit135
  %109 = call ptr @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  %110 = call ptr @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  invoke void @_ZSt8pop_heapIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_17Coord3DESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr %109, ptr %110)
          to label %111 unwind label %.loopexit137

111:                                              ; preds = %108
  %112 = call noundef nonnull align 4 dereferenceable(28) ptr @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  %.sroa.047.0.copyload = load i32, ptr %112, align 4, !tbaa !5
  %.sroa.9.0..sroa_idx = getelementptr inbounds i8, ptr %112, i64 4
  %.sroa.9.0.copyload = load i32, ptr %.sroa.9.0..sroa_idx, align 4, !tbaa !5
  %.sroa.14.0..sroa_idx = getelementptr inbounds i8, ptr %112, i64 8
  %.sroa.14.0.copyload = load i32, ptr %.sroa.14.0..sroa_idx, align 4, !tbaa !5
  %.sroa.19.0..sroa_idx = getelementptr inbounds i8, ptr %112, i64 12
  %.sroa.19.0.copyload = load float, ptr %.sroa.19.0..sroa_idx, align 4, !tbaa !18
  %.sroa.20.0..sroa_idx = getelementptr inbounds i8, ptr %112, i64 16
  %.sroa.20.0.copyload = load i32, ptr %.sroa.20.0..sroa_idx, align 4, !tbaa !5
  %.sroa.23.0..sroa_idx = getelementptr inbounds i8, ptr %112, i64 20
  %.sroa.23.0.copyload = load i32, ptr %.sroa.23.0..sroa_idx, align 4, !tbaa !5
  %.sroa.26.0..sroa_idx = getelementptr inbounds i8, ptr %112, i64 24
  %.sroa.26.0.copyload = load i32, ptr %.sroa.26.0..sroa_idx, align 4, !tbaa !5
  call void @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  %113 = load i32, ptr %6, align 4, !tbaa !5
  %114 = load i32, ptr %7, align 4, !tbaa !5
  %115 = mul i32 %114, %.sroa.14.0.copyload
  %reass.add = add i32 %115, %.sroa.9.0.copyload
  %reass.mul = mul i32 %reass.add, %113
  %116 = add i32 %reass.mul, %.sroa.047.0.copyload
  %117 = zext i32 %116 to i64
  %118 = getelementptr inbounds float, ptr %4, i64 %117
  %119 = load float, ptr %118, align 4, !tbaa !18
  %120 = fcmp oeq float %119, 0x47EFFFFFE0000000
  br i1 %120, label %121, label %.loopexit135

121:                                              ; preds = %111
  store float %.sroa.19.0.copyload, ptr %118, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #7
  %122 = add nsw i32 %.sroa.047.0.copyload, -1
  store i32 %122, ptr %12, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #7
  store i32 0, ptr %13, align 4, !tbaa !5
  %123 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %12, ptr noundef nonnull align 4 dereferenceable(4) %13)
  %124 = load i32, ptr %123, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #7
  %125 = add nsw i32 %.sroa.047.0.copyload, 1
  store i32 %125, ptr %14, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #7
  %126 = load i32, ptr %6, align 4, !tbaa !5
  %127 = add i32 %126, -1
  store i32 %127, ptr %15, align 4, !tbaa !5
  %128 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %14, ptr noundef nonnull align 4 dereferenceable(4) %15)
  %129 = load i32, ptr %128, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #7
  %130 = add nsw i32 %.sroa.9.0.copyload, -1
  store i32 %130, ptr %16, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #7
  store i32 0, ptr %17, align 4, !tbaa !5
  %131 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %16, ptr noundef nonnull align 4 dereferenceable(4) %17)
  %132 = load i32, ptr %131, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #7
  %133 = add nsw i32 %.sroa.9.0.copyload, 1
  store i32 %133, ptr %18, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #7
  %134 = load i32, ptr %7, align 4, !tbaa !5
  %135 = add i32 %134, -1
  store i32 %135, ptr %19, align 4, !tbaa !5
  %136 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %18, ptr noundef nonnull align 4 dereferenceable(4) %19)
  %137 = load i32, ptr %136, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #7
  %138 = add nsw i32 %.sroa.14.0.copyload, -1
  store i32 %138, ptr %20, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #7
  store i32 0, ptr %21, align 4, !tbaa !5
  %139 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %20, ptr noundef nonnull align 4 dereferenceable(4) %21)
  %140 = load i32, ptr %139, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #7
  %141 = add nsw i32 %.sroa.14.0.copyload, 1
  store i32 %141, ptr %22, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #7
  %142 = load i32, ptr %8, align 4, !tbaa !5
  %143 = add i32 %142, -1
  store i32 %143, ptr %23, align 4, !tbaa !5
  %144 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %22, ptr noundef nonnull align 4 dereferenceable(4) %23)
  %145 = load i32, ptr %144, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #7
  %.not114153 = icmp sgt i32 %140, %145
  %.not115150 = icmp sgt i32 %132, %137
  %or.cond192 = select i1 %.not114153, i1 true, i1 %.not115150
  %.not116146 = icmp sgt i32 %124, %129
  %or.cond193 = select i1 %or.cond192, i1 true, i1 %.not116146
  br i1 %or.cond193, label %.loopexit135, label %.preheader134

.preheader134:                                    ; preds = %121, %._crit_edge152.split
  %.0110154 = phi i32 [ %151, %._crit_edge152.split ], [ %140, %121 ]
  %.not119 = icmp eq i32 %.sroa.14.0.copyload, %.0110154
  %146 = sub nsw i32 %.0110154, %.sroa.26.0.copyload
  %147 = mul nsw i32 %146, %146
  br label %.preheader133

.loopexit137:                                     ; preds = %108
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %186

.loopexit.split-lp:                               ; preds = %79
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %186

.preheader133:                                    ; preds = %.preheader134, %._crit_edge149
  %.0109151 = phi i32 [ %132, %.preheader134 ], [ %152, %._crit_edge149 ]
  %.not118 = icmp eq i32 %.sroa.9.0.copyload, %.0109151
  %148 = sub nsw i32 %.0109151, %.sroa.23.0.copyload
  %149 = mul nsw i32 %148, %148
  %150 = add nuw nsw i32 %149, %147
  br label %153

._crit_edge152.split:                             ; preds = %._crit_edge149
  %151 = add i32 %.0110154, 1
  %exitcond184.not = icmp eq i32 %.0110154, %145
  br i1 %exitcond184.not, label %.loopexit135, label %.preheader134, !llvm.loop !27

._crit_edge149:                                   ; preds = %183
  %152 = add i32 %.0109151, 1
  %exitcond183.not = icmp eq i32 %.0109151, %137
  br i1 %exitcond183.not, label %._crit_edge152.split, label %.preheader133, !llvm.loop !28

153:                                              ; preds = %.preheader133, %183
  %.0108147 = phi i32 [ %124, %.preheader133 ], [ %184, %183 ]
  %.not117 = icmp eq i32 %.sroa.047.0.copyload, %.0108147
  %or.cond = select i1 %.not117, i1 %.not118, i1 false
  %or.cond122 = select i1 %or.cond, i1 %.not119, i1 false
  br i1 %or.cond122, label %183, label %154

154:                                              ; preds = %153
  %155 = load i32, ptr %6, align 4, !tbaa !5
  %156 = load i32, ptr %7, align 4, !tbaa !5
  %157 = mul i32 %156, %.0110154
  %reass.add123 = add i32 %157, %.0109151
  %reass.mul124 = mul i32 %reass.add123, %155
  %158 = add i32 %reass.mul124, %.0108147
  %159 = zext i32 %158 to i64
  %160 = getelementptr inbounds float, ptr %4, i64 %159
  %161 = load float, ptr %160, align 4, !tbaa !18
  %162 = fcmp oeq float %161, 0x47EFFFFFE0000000
  br i1 %162, label %163, label %183

163:                                              ; preds = %154
  %164 = sub nsw i32 %.0108147, %.sroa.20.0.copyload
  %165 = mul nsw i32 %164, %164
  %166 = add nuw nsw i32 %150, %165
  %167 = uitofp nneg i32 %166 to float
  %sqrt = call float @llvm.sqrt.f32(float %167)
  %168 = mul i32 %156, %.sroa.26.0.copyload
  %reass.add125 = add i32 %168, %.sroa.23.0.copyload
  %reass.mul126 = mul i32 %reass.add125, %155
  %169 = add i32 %reass.mul126, %.sroa.20.0.copyload
  %170 = zext i32 %169 to i64
  %171 = getelementptr inbounds float, ptr %4, i64 %170
  %172 = load float, ptr %171, align 4, !tbaa !18
  %173 = fadd float %sqrt, %172
  %174 = fcmp ogt float %173, 0.000000e+00
  br i1 %174, label %176, label %175

175:                                              ; preds = %163
  call void @__assert_fail(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.1, i32 noundef 265, ptr noundef nonnull @__PRETTY_FUNCTION__._Z7MakeSDFPKjjjjPf) #8
  unreachable

176:                                              ; preds = %163
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %24) #7
  store i32 %.0108147, ptr %24, align 4, !tbaa !13
  store i32 %.0109151, ptr %83, align 4, !tbaa !16
  store i32 %.0110154, ptr %84, align 4, !tbaa !17
  store float %173, ptr %85, align 4, !tbaa !19
  store i32 %.sroa.20.0.copyload, ptr %86, align 4, !tbaa !20
  store i32 %.sroa.23.0.copyload, ptr %87, align 4, !tbaa !21
  store i32 %.sroa.26.0.copyload, ptr %88, align 4, !tbaa !22
  invoke void @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 4 dereferenceable(28) %24)
          to label %177 unwind label %181

177:                                              ; preds = %176
  %178 = call ptr @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  %179 = call ptr @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  invoke void @_ZSt9push_heapIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_17Coord3DESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr %178, ptr %179)
          to label %180 unwind label %181

180:                                              ; preds = %177
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %24) #7
  br label %183

181:                                              ; preds = %177, %176
  %182 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %24) #7
  br label %186

183:                                              ; preds = %153, %154, %180
  %184 = add i32 %.0108147, 1
  %exitcond.not = icmp eq i32 %.0108147, %129
  br i1 %exitcond.not, label %._crit_edge149, label %153, !llvm.loop !29

.loopexit135:                                     ; preds = %._crit_edge152.split, %121, %111
  %185 = call noundef zeroext i1 @_ZNKSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  br i1 %185, label %.preheader132, label %108, !llvm.loop !30

.split.us:                                        ; preds = %94
  call void @__assert_fail(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, i32 noundef 284, ptr noundef nonnull @__PRETTY_FUNCTION__._Z7MakeSDFPKjjjjPf) #8
  unreachable

.loopexit:                                        ; preds = %._crit_edge164.split.us.us.us, %.preheader131.lr.ph, %.preheader132, %._crit_edge145
  call void @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #7
  ret void

186:                                              ; preds = %.loopexit137, %.loopexit.split-lp, %181, %78
  %.pn.pn = phi { ptr, i32 } [ %.pn, %78 ], [ %182, %181 ], [ %lpad.loopexit, %.loopexit137 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #7
  resume { ptr, i32 } %.pn.pn
}

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_110EdgeDetectEPKjjjjiiiRf(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZNKSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZSt9make_heapIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_17Coord3DESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr, ptr) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare hidden ptr @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden ptr @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZSt8pop_heapIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_17Coord3DESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr, ptr) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 4 dereferenceable(28) ptr @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZNSt6vectorIN12_GLOBAL__N_17Coord3DESaIS1_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZSt9push_heapIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_17Coord3DESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr, ptr) local_unnamed_addr #5

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.sqrt.f32(float) #6

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { noreturn 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 #3 = { 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 = { 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 #5 = { 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 #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { nounwind }
attributes #8 = { noreturn 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10, !11}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!"llvm.loop.unswitch.partial.disable"}
!12 = distinct !{!12, !10, !11}
!13 = !{!14, !6, i64 0}
!14 = !{!"_ZTSN12_GLOBAL__N_17Coord3DE", !6, i64 0, !6, i64 4, !6, i64 8, !15, i64 12, !6, i64 16, !6, i64 20, !6, i64 24}
!15 = !{!"float", !7, i64 0}
!16 = !{!14, !6, i64 4}
!17 = !{!14, !6, i64 8}
!18 = !{!15, !15, i64 0}
!19 = !{!14, !15, i64 12}
!20 = !{!14, !6, i64 16}
!21 = !{!14, !6, i64 20}
!22 = !{!14, !6, i64 24}
!23 = distinct !{!23, !10}
!24 = distinct !{!24, !10}
!25 = distinct !{!25, !10}
!26 = distinct !{!26, !10}
!27 = distinct !{!27, !10}
!28 = distinct !{!28, !10}
!29 = distinct !{!29, !10}
!30 = distinct !{!30, !10}


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