; LLVM IR from HRI-EU/Rcs :: src/RcsCore (Rcs_geometry)

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

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

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

declare double @Vec3d_innerProduct(ptr noundef, ptr noundef) #1

declare void @Vec3d_constMulAndAdd(ptr noundef, ptr noundef, ptr noundef, double noundef) #1

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

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

declare double @Vec3d_sqrLength(ptr noundef) #1

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #3

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

; Function Attrs: nounwind uwtable
define dso_local double @Math_sqrDistLinesegLineseg(ptr noundef %0, ptr noundef %1, double noundef %2, ptr noundef %3, ptr noundef %4, double noundef %5, ptr noundef %6, ptr noundef %7) #2 {
  %9 = alloca double, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca double, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca double, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca double, align 8
  %19 = alloca [3 x double], align 16
  %20 = alloca [3 x double], align 16
  %21 = alloca [3 x double], align 16
  %22 = alloca [3 x double], align 16
  %23 = alloca [3 x double], align 16
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca i32, align 4
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca double, align 8
  %45 = alloca double, align 8
  store ptr %0, ptr %10, align 8, !tbaa !5
  store ptr %1, ptr %11, align 8, !tbaa !5
  store double %2, ptr %12, align 8, !tbaa !9
  store ptr %3, ptr %13, align 8, !tbaa !5
  store ptr %4, ptr %14, align 8, !tbaa !5
  store double %5, ptr %15, align 8, !tbaa !9
  store ptr %6, ptr %16, align 8, !tbaa !5
  store ptr %7, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #4
  store double 1.000000e-08, ptr %18, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 24, ptr %20) #4
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 24, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #4
  %46 = load double, ptr %12, align 8, !tbaa !9
  %47 = fmul double 5.000000e-01, %46
  store double %47, ptr %31, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #4
  %48 = load double, ptr %15, align 8, !tbaa !9
  %49 = fmul double 5.000000e-01, %48
  store double %49, ptr %32, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #4
  %50 = load ptr, ptr %16, align 8, !tbaa !5
  %51 = icmp eq ptr %50, null
  br i1 %51, label %52, label %54

52:                                               ; preds = %8
  %53 = getelementptr inbounds [3 x double], ptr %19, i64 0, i64 0
  br label %56

54:                                               ; preds = %8
  %55 = load ptr, ptr %16, align 8, !tbaa !5
  br label %56

56:                                               ; preds = %54, %52
  %57 = phi ptr [ %53, %52 ], [ %55, %54 ]
  store ptr %57, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #4
  %58 = load ptr, ptr %17, align 8, !tbaa !5
  %59 = icmp eq ptr %58, null
  br i1 %59, label %60, label %62

60:                                               ; preds = %56
  %61 = getelementptr inbounds [3 x double], ptr %20, i64 0, i64 0
  br label %64

62:                                               ; preds = %56
  %63 = load ptr, ptr %17, align 8, !tbaa !5
  br label %64

64:                                               ; preds = %62, %60
  %65 = phi ptr [ %61, %60 ], [ %63, %62 ]
  store ptr %65, ptr %34, align 8, !tbaa !5
  %66 = getelementptr inbounds [3 x double], ptr %22, i64 0, i64 0
  %67 = load ptr, ptr %10, align 8, !tbaa !5
  %68 = load ptr, ptr %11, align 8, !tbaa !5
  %69 = load double, ptr %31, align 8, !tbaa !9
  call void @Vec3d_constMulAndAdd(ptr noundef %66, ptr noundef %67, ptr noundef %68, double noundef %69)
  %70 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 0
  %71 = load ptr, ptr %13, align 8, !tbaa !5
  %72 = load ptr, ptr %14, align 8, !tbaa !5
  %73 = load double, ptr %32, align 8, !tbaa !9
  call void @Vec3d_constMulAndAdd(ptr noundef %70, ptr noundef %71, ptr noundef %72, double noundef %73)
  %74 = load double, ptr %12, align 8, !tbaa !9
  %75 = fcmp oeq double %74, 0.000000e+00
  br i1 %75, label %76, label %86

76:                                               ; preds = %64
  %77 = load ptr, ptr %10, align 8, !tbaa !5
  %78 = load ptr, ptr %13, align 8, !tbaa !5
  %79 = load ptr, ptr %14, align 8, !tbaa !5
  %80 = load double, ptr %15, align 8, !tbaa !9
  %81 = load ptr, ptr %34, align 8, !tbaa !5
  %82 = call double @Math_sqrDistPointLineseg(ptr noundef %77, ptr noundef %78, ptr noundef %79, double noundef %80, ptr noundef %81)
  store double %82, ptr %26, align 8, !tbaa !9
  %83 = load ptr, ptr %33, align 8, !tbaa !5
  %84 = load ptr, ptr %10, align 8, !tbaa !5
  call void @Vec3d_copy(ptr noundef %83, ptr noundef %84)
  %85 = load double, ptr %26, align 8, !tbaa !9
  store double %85, ptr %9, align 8
  store i32 1, ptr %35, align 4
  br label %925

86:                                               ; preds = %64
  %87 = getelementptr inbounds [3 x double], ptr %21, i64 0, i64 0
  %88 = getelementptr inbounds [3 x double], ptr %22, i64 0, i64 0
  %89 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 0
  call void @Vec3d_sub(ptr noundef %87, ptr noundef %88, ptr noundef %89)
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #4
  %90 = load ptr, ptr %11, align 8, !tbaa !5
  %91 = load ptr, ptr %14, align 8, !tbaa !5
  %92 = call double @Vec3d_innerProduct(ptr noundef %90, ptr noundef %91)
  %93 = fneg double %92
  store double %93, ptr %36, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #4
  %94 = getelementptr inbounds [3 x double], ptr %21, i64 0, i64 0
  %95 = load ptr, ptr %11, align 8, !tbaa !5
  %96 = call double @Vec3d_innerProduct(ptr noundef %94, ptr noundef %95)
  store double %96, ptr %37, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #4
  %97 = getelementptr inbounds [3 x double], ptr %21, i64 0, i64 0
  %98 = load ptr, ptr %14, align 8, !tbaa !5
  %99 = call double @Vec3d_innerProduct(ptr noundef %97, ptr noundef %98)
  %100 = fneg double %99
  store double %100, ptr %38, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #4
  %101 = getelementptr inbounds [3 x double], ptr %21, i64 0, i64 0
  %102 = call double @Vec3d_sqrLength(ptr noundef %101)
  store double %102, ptr %39, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #4
  %103 = load double, ptr %36, align 8, !tbaa !9
  %104 = load double, ptr %36, align 8, !tbaa !9
  %105 = fneg double %103
  %106 = call double @llvm.fmuladd.f64(double %105, double %104, double 1.000000e+00)
  %107 = call double @llvm.fabs.f64(double %106)
  store double %107, ptr %40, align 8, !tbaa !9
  %108 = load double, ptr %40, align 8, !tbaa !9
  %109 = fcmp oge double %108, 1.000000e-08
  br i1 %109, label %110, label %853

110:                                              ; preds = %86
  %111 = load double, ptr %36, align 8, !tbaa !9
  %112 = load double, ptr %38, align 8, !tbaa !9
  %113 = load double, ptr %37, align 8, !tbaa !9
  %114 = fneg double %113
  %115 = call double @llvm.fmuladd.f64(double %111, double %112, double %114)
  store double %115, ptr %24, align 8, !tbaa !9
  %116 = load double, ptr %36, align 8, !tbaa !9
  %117 = load double, ptr %37, align 8, !tbaa !9
  %118 = load double, ptr %38, align 8, !tbaa !9
  %119 = fneg double %118
  %120 = call double @llvm.fmuladd.f64(double %116, double %117, double %119)
  store double %120, ptr %25, align 8, !tbaa !9
  %121 = load double, ptr %31, align 8, !tbaa !9
  %122 = load double, ptr %40, align 8, !tbaa !9
  %123 = fmul double %121, %122
  store double %123, ptr %27, align 8, !tbaa !9
  %124 = load double, ptr %32, align 8, !tbaa !9
  %125 = load double, ptr %40, align 8, !tbaa !9
  %126 = fmul double %124, %125
  store double %126, ptr %28, align 8, !tbaa !9
  %127 = load double, ptr %24, align 8, !tbaa !9
  %128 = load double, ptr %27, align 8, !tbaa !9
  %129 = fneg double %128
  %130 = fcmp oge double %127, %129
  br i1 %130, label %131, label %572

131:                                              ; preds = %110
  %132 = load double, ptr %24, align 8, !tbaa !9
  %133 = load double, ptr %27, align 8, !tbaa !9
  %134 = fcmp ole double %132, %133
  br i1 %134, label %135, label %292

135:                                              ; preds = %131
  %136 = load double, ptr %25, align 8, !tbaa !9
  %137 = load double, ptr %28, align 8, !tbaa !9
  %138 = fneg double %137
  %139 = fcmp oge double %136, %138
  br i1 %139, label %140, label %231

140:                                              ; preds = %135
  %141 = load double, ptr %25, align 8, !tbaa !9
  %142 = load double, ptr %28, align 8, !tbaa !9
  %143 = fcmp ole double %141, %142
  br i1 %143, label %144, label %171

144:                                              ; preds = %140
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #4
  %145 = load double, ptr %40, align 8, !tbaa !9
  %146 = fdiv double 1.000000e+00, %145
  store double %146, ptr %41, align 8, !tbaa !9
  %147 = load double, ptr %41, align 8, !tbaa !9
  %148 = load double, ptr %24, align 8, !tbaa !9
  %149 = fmul double %148, %147
  store double %149, ptr %24, align 8, !tbaa !9
  %150 = load double, ptr %41, align 8, !tbaa !9
  %151 = load double, ptr %25, align 8, !tbaa !9
  %152 = fmul double %151, %150
  store double %152, ptr %25, align 8, !tbaa !9
  %153 = load double, ptr %24, align 8, !tbaa !9
  %154 = load double, ptr %24, align 8, !tbaa !9
  %155 = load double, ptr %36, align 8, !tbaa !9
  %156 = load double, ptr %25, align 8, !tbaa !9
  %157 = call double @llvm.fmuladd.f64(double %155, double %156, double %154)
  %158 = load double, ptr %37, align 8, !tbaa !9
  %159 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %158, double %157)
  %160 = load double, ptr %25, align 8, !tbaa !9
  %161 = load double, ptr %36, align 8, !tbaa !9
  %162 = load double, ptr %24, align 8, !tbaa !9
  %163 = load double, ptr %25, align 8, !tbaa !9
  %164 = call double @llvm.fmuladd.f64(double %161, double %162, double %163)
  %165 = load double, ptr %38, align 8, !tbaa !9
  %166 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %165, double %164)
  %167 = fmul double %160, %166
  %168 = call double @llvm.fmuladd.f64(double %153, double %159, double %167)
  %169 = load double, ptr %39, align 8, !tbaa !9
  %170 = fadd double %168, %169
  store double %170, ptr %26, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  br label %230

171:                                              ; preds = %140
  %172 = load double, ptr %32, align 8, !tbaa !9
  store double %172, ptr %25, align 8, !tbaa !9
  %173 = load double, ptr %36, align 8, !tbaa !9
  %174 = load double, ptr %25, align 8, !tbaa !9
  %175 = load double, ptr %37, align 8, !tbaa !9
  %176 = call double @llvm.fmuladd.f64(double %173, double %174, double %175)
  %177 = fneg double %176
  store double %177, ptr %29, align 8, !tbaa !9
  %178 = load double, ptr %29, align 8, !tbaa !9
  %179 = load double, ptr %31, align 8, !tbaa !9
  %180 = fneg double %179
  %181 = fcmp olt double %178, %180
  br i1 %181, label %182, label %197

182:                                              ; preds = %171
  %183 = load double, ptr %31, align 8, !tbaa !9
  %184 = fneg double %183
  store double %184, ptr %24, align 8, !tbaa !9
  %185 = load double, ptr %24, align 8, !tbaa !9
  %186 = load double, ptr %24, align 8, !tbaa !9
  %187 = load double, ptr %29, align 8, !tbaa !9
  %188 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %187, double %186)
  %189 = load double, ptr %25, align 8, !tbaa !9
  %190 = load double, ptr %25, align 8, !tbaa !9
  %191 = load double, ptr %38, align 8, !tbaa !9
  %192 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %191, double %190)
  %193 = fmul double %189, %192
  %194 = call double @llvm.fmuladd.f64(double %185, double %188, double %193)
  %195 = load double, ptr %39, align 8, !tbaa !9
  %196 = fadd double %194, %195
  store double %196, ptr %26, align 8, !tbaa !9
  br label %229

197:                                              ; preds = %171
  %198 = load double, ptr %29, align 8, !tbaa !9
  %199 = load double, ptr %31, align 8, !tbaa !9
  %200 = fcmp ole double %198, %199
  br i1 %200, label %201, label %214

201:                                              ; preds = %197
  %202 = load double, ptr %29, align 8, !tbaa !9
  store double %202, ptr %24, align 8, !tbaa !9
  %203 = load double, ptr %24, align 8, !tbaa !9
  %204 = fneg double %203
  %205 = load double, ptr %24, align 8, !tbaa !9
  %206 = load double, ptr %25, align 8, !tbaa !9
  %207 = load double, ptr %25, align 8, !tbaa !9
  %208 = load double, ptr %38, align 8, !tbaa !9
  %209 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %208, double %207)
  %210 = fmul double %206, %209
  %211 = call double @llvm.fmuladd.f64(double %204, double %205, double %210)
  %212 = load double, ptr %39, align 8, !tbaa !9
  %213 = fadd double %211, %212
  store double %213, ptr %26, align 8, !tbaa !9
  br label %228

214:                                              ; preds = %197
  %215 = load double, ptr %31, align 8, !tbaa !9
  store double %215, ptr %24, align 8, !tbaa !9
  %216 = load double, ptr %24, align 8, !tbaa !9
  %217 = load double, ptr %24, align 8, !tbaa !9
  %218 = load double, ptr %29, align 8, !tbaa !9
  %219 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %218, double %217)
  %220 = load double, ptr %25, align 8, !tbaa !9
  %221 = load double, ptr %25, align 8, !tbaa !9
  %222 = load double, ptr %38, align 8, !tbaa !9
  %223 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %222, double %221)
  %224 = fmul double %220, %223
  %225 = call double @llvm.fmuladd.f64(double %216, double %219, double %224)
  %226 = load double, ptr %39, align 8, !tbaa !9
  %227 = fadd double %225, %226
  store double %227, ptr %26, align 8, !tbaa !9
  br label %228

228:                                              ; preds = %214, %201
  br label %229

229:                                              ; preds = %228, %182
  br label %230

230:                                              ; preds = %229, %144
  br label %291

231:                                              ; preds = %135
  %232 = load double, ptr %32, align 8, !tbaa !9
  %233 = fneg double %232
  store double %233, ptr %25, align 8, !tbaa !9
  %234 = load double, ptr %36, align 8, !tbaa !9
  %235 = load double, ptr %25, align 8, !tbaa !9
  %236 = load double, ptr %37, align 8, !tbaa !9
  %237 = call double @llvm.fmuladd.f64(double %234, double %235, double %236)
  %238 = fneg double %237
  store double %238, ptr %29, align 8, !tbaa !9
  %239 = load double, ptr %29, align 8, !tbaa !9
  %240 = load double, ptr %31, align 8, !tbaa !9
  %241 = fneg double %240
  %242 = fcmp olt double %239, %241
  br i1 %242, label %243, label %258

243:                                              ; preds = %231
  %244 = load double, ptr %31, align 8, !tbaa !9
  %245 = fneg double %244
  store double %245, ptr %24, align 8, !tbaa !9
  %246 = load double, ptr %24, align 8, !tbaa !9
  %247 = load double, ptr %24, align 8, !tbaa !9
  %248 = load double, ptr %29, align 8, !tbaa !9
  %249 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %248, double %247)
  %250 = load double, ptr %25, align 8, !tbaa !9
  %251 = load double, ptr %25, align 8, !tbaa !9
  %252 = load double, ptr %38, align 8, !tbaa !9
  %253 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %252, double %251)
  %254 = fmul double %250, %253
  %255 = call double @llvm.fmuladd.f64(double %246, double %249, double %254)
  %256 = load double, ptr %39, align 8, !tbaa !9
  %257 = fadd double %255, %256
  store double %257, ptr %26, align 8, !tbaa !9
  br label %290

258:                                              ; preds = %231
  %259 = load double, ptr %29, align 8, !tbaa !9
  %260 = load double, ptr %31, align 8, !tbaa !9
  %261 = fcmp ole double %259, %260
  br i1 %261, label %262, label %275

262:                                              ; preds = %258
  %263 = load double, ptr %29, align 8, !tbaa !9
  store double %263, ptr %24, align 8, !tbaa !9
  %264 = load double, ptr %24, align 8, !tbaa !9
  %265 = fneg double %264
  %266 = load double, ptr %24, align 8, !tbaa !9
  %267 = load double, ptr %25, align 8, !tbaa !9
  %268 = load double, ptr %25, align 8, !tbaa !9
  %269 = load double, ptr %38, align 8, !tbaa !9
  %270 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %269, double %268)
  %271 = fmul double %267, %270
  %272 = call double @llvm.fmuladd.f64(double %265, double %266, double %271)
  %273 = load double, ptr %39, align 8, !tbaa !9
  %274 = fadd double %272, %273
  store double %274, ptr %26, align 8, !tbaa !9
  br label %289

275:                                              ; preds = %258
  %276 = load double, ptr %31, align 8, !tbaa !9
  store double %276, ptr %24, align 8, !tbaa !9
  %277 = load double, ptr %24, align 8, !tbaa !9
  %278 = load double, ptr %24, align 8, !tbaa !9
  %279 = load double, ptr %29, align 8, !tbaa !9
  %280 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %279, double %278)
  %281 = load double, ptr %25, align 8, !tbaa !9
  %282 = load double, ptr %25, align 8, !tbaa !9
  %283 = load double, ptr %38, align 8, !tbaa !9
  %284 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %283, double %282)
  %285 = fmul double %281, %284
  %286 = call double @llvm.fmuladd.f64(double %277, double %280, double %285)
  %287 = load double, ptr %39, align 8, !tbaa !9
  %288 = fadd double %286, %287
  store double %288, ptr %26, align 8, !tbaa !9
  br label %289

289:                                              ; preds = %275, %262
  br label %290

290:                                              ; preds = %289, %243
  br label %291

291:                                              ; preds = %290, %230
  br label %571

292:                                              ; preds = %131
  %293 = load double, ptr %25, align 8, !tbaa !9
  %294 = load double, ptr %28, align 8, !tbaa !9
  %295 = fneg double %294
  %296 = fcmp oge double %293, %295
  br i1 %296, label %297, label %465

297:                                              ; preds = %292
  %298 = load double, ptr %25, align 8, !tbaa !9
  %299 = load double, ptr %28, align 8, !tbaa !9
  %300 = fcmp ole double %298, %299
  br i1 %300, label %301, label %360

301:                                              ; preds = %297
  %302 = load double, ptr %31, align 8, !tbaa !9
  store double %302, ptr %24, align 8, !tbaa !9
  %303 = load double, ptr %36, align 8, !tbaa !9
  %304 = load double, ptr %24, align 8, !tbaa !9
  %305 = load double, ptr %38, align 8, !tbaa !9
  %306 = call double @llvm.fmuladd.f64(double %303, double %304, double %305)
  %307 = fneg double %306
  store double %307, ptr %30, align 8, !tbaa !9
  %308 = load double, ptr %30, align 8, !tbaa !9
  %309 = load double, ptr %32, align 8, !tbaa !9
  %310 = fneg double %309
  %311 = fcmp olt double %308, %310
  br i1 %311, label %312, label %327

312:                                              ; preds = %301
  %313 = load double, ptr %32, align 8, !tbaa !9
  %314 = fneg double %313
  store double %314, ptr %25, align 8, !tbaa !9
  %315 = load double, ptr %25, align 8, !tbaa !9
  %316 = load double, ptr %25, align 8, !tbaa !9
  %317 = load double, ptr %30, align 8, !tbaa !9
  %318 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %317, double %316)
  %319 = load double, ptr %24, align 8, !tbaa !9
  %320 = load double, ptr %24, align 8, !tbaa !9
  %321 = load double, ptr %37, align 8, !tbaa !9
  %322 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %321, double %320)
  %323 = fmul double %319, %322
  %324 = call double @llvm.fmuladd.f64(double %315, double %318, double %323)
  %325 = load double, ptr %39, align 8, !tbaa !9
  %326 = fadd double %324, %325
  store double %326, ptr %26, align 8, !tbaa !9
  br label %359

327:                                              ; preds = %301
  %328 = load double, ptr %30, align 8, !tbaa !9
  %329 = load double, ptr %32, align 8, !tbaa !9
  %330 = fcmp ole double %328, %329
  br i1 %330, label %331, label %344

331:                                              ; preds = %327
  %332 = load double, ptr %30, align 8, !tbaa !9
  store double %332, ptr %25, align 8, !tbaa !9
  %333 = load double, ptr %25, align 8, !tbaa !9
  %334 = fneg double %333
  %335 = load double, ptr %25, align 8, !tbaa !9
  %336 = load double, ptr %24, align 8, !tbaa !9
  %337 = load double, ptr %24, align 8, !tbaa !9
  %338 = load double, ptr %37, align 8, !tbaa !9
  %339 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %338, double %337)
  %340 = fmul double %336, %339
  %341 = call double @llvm.fmuladd.f64(double %334, double %335, double %340)
  %342 = load double, ptr %39, align 8, !tbaa !9
  %343 = fadd double %341, %342
  store double %343, ptr %26, align 8, !tbaa !9
  br label %358

344:                                              ; preds = %327
  %345 = load double, ptr %32, align 8, !tbaa !9
  store double %345, ptr %25, align 8, !tbaa !9
  %346 = load double, ptr %25, align 8, !tbaa !9
  %347 = load double, ptr %25, align 8, !tbaa !9
  %348 = load double, ptr %30, align 8, !tbaa !9
  %349 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %348, double %347)
  %350 = load double, ptr %24, align 8, !tbaa !9
  %351 = load double, ptr %24, align 8, !tbaa !9
  %352 = load double, ptr %37, align 8, !tbaa !9
  %353 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %352, double %351)
  %354 = fmul double %350, %353
  %355 = call double @llvm.fmuladd.f64(double %346, double %349, double %354)
  %356 = load double, ptr %39, align 8, !tbaa !9
  %357 = fadd double %355, %356
  store double %357, ptr %26, align 8, !tbaa !9
  br label %358

358:                                              ; preds = %344, %331
  br label %359

359:                                              ; preds = %358, %312
  br label %464

360:                                              ; preds = %297
  %361 = load double, ptr %32, align 8, !tbaa !9
  store double %361, ptr %25, align 8, !tbaa !9
  %362 = load double, ptr %36, align 8, !tbaa !9
  %363 = load double, ptr %25, align 8, !tbaa !9
  %364 = load double, ptr %37, align 8, !tbaa !9
  %365 = call double @llvm.fmuladd.f64(double %362, double %363, double %364)
  %366 = fneg double %365
  store double %366, ptr %29, align 8, !tbaa !9
  %367 = load double, ptr %29, align 8, !tbaa !9
  %368 = load double, ptr %31, align 8, !tbaa !9
  %369 = fneg double %368
  %370 = fcmp olt double %367, %369
  br i1 %370, label %371, label %386

371:                                              ; preds = %360
  %372 = load double, ptr %31, align 8, !tbaa !9
  %373 = fneg double %372
  store double %373, ptr %24, align 8, !tbaa !9
  %374 = load double, ptr %24, align 8, !tbaa !9
  %375 = load double, ptr %24, align 8, !tbaa !9
  %376 = load double, ptr %29, align 8, !tbaa !9
  %377 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %376, double %375)
  %378 = load double, ptr %25, align 8, !tbaa !9
  %379 = load double, ptr %25, align 8, !tbaa !9
  %380 = load double, ptr %38, align 8, !tbaa !9
  %381 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %380, double %379)
  %382 = fmul double %378, %381
  %383 = call double @llvm.fmuladd.f64(double %374, double %377, double %382)
  %384 = load double, ptr %39, align 8, !tbaa !9
  %385 = fadd double %383, %384
  store double %385, ptr %26, align 8, !tbaa !9
  br label %463

386:                                              ; preds = %360
  %387 = load double, ptr %29, align 8, !tbaa !9
  %388 = load double, ptr %31, align 8, !tbaa !9
  %389 = fcmp ole double %387, %388
  br i1 %389, label %390, label %403

390:                                              ; preds = %386
  %391 = load double, ptr %29, align 8, !tbaa !9
  store double %391, ptr %24, align 8, !tbaa !9
  %392 = load double, ptr %24, align 8, !tbaa !9
  %393 = fneg double %392
  %394 = load double, ptr %24, align 8, !tbaa !9
  %395 = load double, ptr %25, align 8, !tbaa !9
  %396 = load double, ptr %25, align 8, !tbaa !9
  %397 = load double, ptr %38, align 8, !tbaa !9
  %398 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %397, double %396)
  %399 = fmul double %395, %398
  %400 = call double @llvm.fmuladd.f64(double %393, double %394, double %399)
  %401 = load double, ptr %39, align 8, !tbaa !9
  %402 = fadd double %400, %401
  store double %402, ptr %26, align 8, !tbaa !9
  br label %462

403:                                              ; preds = %386
  %404 = load double, ptr %31, align 8, !tbaa !9
  store double %404, ptr %24, align 8, !tbaa !9
  %405 = load double, ptr %36, align 8, !tbaa !9
  %406 = load double, ptr %24, align 8, !tbaa !9
  %407 = load double, ptr %38, align 8, !tbaa !9
  %408 = call double @llvm.fmuladd.f64(double %405, double %406, double %407)
  %409 = fneg double %408
  store double %409, ptr %30, align 8, !tbaa !9
  %410 = load double, ptr %30, align 8, !tbaa !9
  %411 = load double, ptr %32, align 8, !tbaa !9
  %412 = fneg double %411
  %413 = fcmp olt double %410, %412
  br i1 %413, label %414, label %429

414:                                              ; preds = %403
  %415 = load double, ptr %32, align 8, !tbaa !9
  %416 = fneg double %415
  store double %416, ptr %25, align 8, !tbaa !9
  %417 = load double, ptr %25, align 8, !tbaa !9
  %418 = load double, ptr %25, align 8, !tbaa !9
  %419 = load double, ptr %30, align 8, !tbaa !9
  %420 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %419, double %418)
  %421 = load double, ptr %24, align 8, !tbaa !9
  %422 = load double, ptr %24, align 8, !tbaa !9
  %423 = load double, ptr %37, align 8, !tbaa !9
  %424 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %423, double %422)
  %425 = fmul double %421, %424
  %426 = call double @llvm.fmuladd.f64(double %417, double %420, double %425)
  %427 = load double, ptr %39, align 8, !tbaa !9
  %428 = fadd double %426, %427
  store double %428, ptr %26, align 8, !tbaa !9
  br label %461

429:                                              ; preds = %403
  %430 = load double, ptr %30, align 8, !tbaa !9
  %431 = load double, ptr %32, align 8, !tbaa !9
  %432 = fcmp ole double %430, %431
  br i1 %432, label %433, label %446

433:                                              ; preds = %429
  %434 = load double, ptr %30, align 8, !tbaa !9
  store double %434, ptr %25, align 8, !tbaa !9
  %435 = load double, ptr %25, align 8, !tbaa !9
  %436 = fneg double %435
  %437 = load double, ptr %25, align 8, !tbaa !9
  %438 = load double, ptr %24, align 8, !tbaa !9
  %439 = load double, ptr %24, align 8, !tbaa !9
  %440 = load double, ptr %37, align 8, !tbaa !9
  %441 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %440, double %439)
  %442 = fmul double %438, %441
  %443 = call double @llvm.fmuladd.f64(double %436, double %437, double %442)
  %444 = load double, ptr %39, align 8, !tbaa !9
  %445 = fadd double %443, %444
  store double %445, ptr %26, align 8, !tbaa !9
  br label %460

446:                                              ; preds = %429
  %447 = load double, ptr %32, align 8, !tbaa !9
  store double %447, ptr %25, align 8, !tbaa !9
  %448 = load double, ptr %25, align 8, !tbaa !9
  %449 = load double, ptr %25, align 8, !tbaa !9
  %450 = load double, ptr %30, align 8, !tbaa !9
  %451 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %450, double %449)
  %452 = load double, ptr %24, align 8, !tbaa !9
  %453 = load double, ptr %24, align 8, !tbaa !9
  %454 = load double, ptr %37, align 8, !tbaa !9
  %455 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %454, double %453)
  %456 = fmul double %452, %455
  %457 = call double @llvm.fmuladd.f64(double %448, double %451, double %456)
  %458 = load double, ptr %39, align 8, !tbaa !9
  %459 = fadd double %457, %458
  store double %459, ptr %26, align 8, !tbaa !9
  br label %460

460:                                              ; preds = %446, %433
  br label %461

461:                                              ; preds = %460, %414
  br label %462

462:                                              ; preds = %461, %390
  br label %463

463:                                              ; preds = %462, %371
  br label %464

464:                                              ; preds = %463, %359
  br label %570

465:                                              ; preds = %292
  %466 = load double, ptr %32, align 8, !tbaa !9
  %467 = fneg double %466
  store double %467, ptr %25, align 8, !tbaa !9
  %468 = load double, ptr %36, align 8, !tbaa !9
  %469 = load double, ptr %25, align 8, !tbaa !9
  %470 = load double, ptr %37, align 8, !tbaa !9
  %471 = call double @llvm.fmuladd.f64(double %468, double %469, double %470)
  %472 = fneg double %471
  store double %472, ptr %29, align 8, !tbaa !9
  %473 = load double, ptr %29, align 8, !tbaa !9
  %474 = load double, ptr %31, align 8, !tbaa !9
  %475 = fneg double %474
  %476 = fcmp olt double %473, %475
  br i1 %476, label %477, label %492

477:                                              ; preds = %465
  %478 = load double, ptr %31, align 8, !tbaa !9
  %479 = fneg double %478
  store double %479, ptr %24, align 8, !tbaa !9
  %480 = load double, ptr %24, align 8, !tbaa !9
  %481 = load double, ptr %24, align 8, !tbaa !9
  %482 = load double, ptr %29, align 8, !tbaa !9
  %483 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %482, double %481)
  %484 = load double, ptr %25, align 8, !tbaa !9
  %485 = load double, ptr %25, align 8, !tbaa !9
  %486 = load double, ptr %38, align 8, !tbaa !9
  %487 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %486, double %485)
  %488 = fmul double %484, %487
  %489 = call double @llvm.fmuladd.f64(double %480, double %483, double %488)
  %490 = load double, ptr %39, align 8, !tbaa !9
  %491 = fadd double %489, %490
  store double %491, ptr %26, align 8, !tbaa !9
  br label %569

492:                                              ; preds = %465
  %493 = load double, ptr %29, align 8, !tbaa !9
  %494 = load double, ptr %31, align 8, !tbaa !9
  %495 = fcmp ole double %493, %494
  br i1 %495, label %496, label %509

496:                                              ; preds = %492
  %497 = load double, ptr %29, align 8, !tbaa !9
  store double %497, ptr %24, align 8, !tbaa !9
  %498 = load double, ptr %24, align 8, !tbaa !9
  %499 = fneg double %498
  %500 = load double, ptr %24, align 8, !tbaa !9
  %501 = load double, ptr %25, align 8, !tbaa !9
  %502 = load double, ptr %25, align 8, !tbaa !9
  %503 = load double, ptr %38, align 8, !tbaa !9
  %504 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %503, double %502)
  %505 = fmul double %501, %504
  %506 = call double @llvm.fmuladd.f64(double %499, double %500, double %505)
  %507 = load double, ptr %39, align 8, !tbaa !9
  %508 = fadd double %506, %507
  store double %508, ptr %26, align 8, !tbaa !9
  br label %568

509:                                              ; preds = %492
  %510 = load double, ptr %31, align 8, !tbaa !9
  store double %510, ptr %24, align 8, !tbaa !9
  %511 = load double, ptr %36, align 8, !tbaa !9
  %512 = load double, ptr %24, align 8, !tbaa !9
  %513 = load double, ptr %38, align 8, !tbaa !9
  %514 = call double @llvm.fmuladd.f64(double %511, double %512, double %513)
  %515 = fneg double %514
  store double %515, ptr %30, align 8, !tbaa !9
  %516 = load double, ptr %30, align 8, !tbaa !9
  %517 = load double, ptr %32, align 8, !tbaa !9
  %518 = fcmp ogt double %516, %517
  br i1 %518, label %519, label %533

519:                                              ; preds = %509
  %520 = load double, ptr %32, align 8, !tbaa !9
  store double %520, ptr %25, align 8, !tbaa !9
  %521 = load double, ptr %25, align 8, !tbaa !9
  %522 = load double, ptr %25, align 8, !tbaa !9
  %523 = load double, ptr %30, align 8, !tbaa !9
  %524 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %523, double %522)
  %525 = load double, ptr %24, align 8, !tbaa !9
  %526 = load double, ptr %24, align 8, !tbaa !9
  %527 = load double, ptr %37, align 8, !tbaa !9
  %528 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %527, double %526)
  %529 = fmul double %525, %528
  %530 = call double @llvm.fmuladd.f64(double %521, double %524, double %529)
  %531 = load double, ptr %39, align 8, !tbaa !9
  %532 = fadd double %530, %531
  store double %532, ptr %26, align 8, !tbaa !9
  br label %567

533:                                              ; preds = %509
  %534 = load double, ptr %30, align 8, !tbaa !9
  %535 = load double, ptr %32, align 8, !tbaa !9
  %536 = fneg double %535
  %537 = fcmp oge double %534, %536
  br i1 %537, label %538, label %551

538:                                              ; preds = %533
  %539 = load double, ptr %30, align 8, !tbaa !9
  store double %539, ptr %25, align 8, !tbaa !9
  %540 = load double, ptr %25, align 8, !tbaa !9
  %541 = fneg double %540
  %542 = load double, ptr %25, align 8, !tbaa !9
  %543 = load double, ptr %24, align 8, !tbaa !9
  %544 = load double, ptr %24, align 8, !tbaa !9
  %545 = load double, ptr %37, align 8, !tbaa !9
  %546 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %545, double %544)
  %547 = fmul double %543, %546
  %548 = call double @llvm.fmuladd.f64(double %541, double %542, double %547)
  %549 = load double, ptr %39, align 8, !tbaa !9
  %550 = fadd double %548, %549
  store double %550, ptr %26, align 8, !tbaa !9
  br label %566

551:                                              ; preds = %533
  %552 = load double, ptr %32, align 8, !tbaa !9
  %553 = fneg double %552
  store double %553, ptr %25, align 8, !tbaa !9
  %554 = load double, ptr %25, align 8, !tbaa !9
  %555 = load double, ptr %25, align 8, !tbaa !9
  %556 = load double, ptr %30, align 8, !tbaa !9
  %557 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %556, double %555)
  %558 = load double, ptr %24, align 8, !tbaa !9
  %559 = load double, ptr %24, align 8, !tbaa !9
  %560 = load double, ptr %37, align 8, !tbaa !9
  %561 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %560, double %559)
  %562 = fmul double %558, %561
  %563 = call double @llvm.fmuladd.f64(double %554, double %557, double %562)
  %564 = load double, ptr %39, align 8, !tbaa !9
  %565 = fadd double %563, %564
  store double %565, ptr %26, align 8, !tbaa !9
  br label %566

566:                                              ; preds = %551, %538
  br label %567

567:                                              ; preds = %566, %519
  br label %568

568:                                              ; preds = %567, %496
  br label %569

569:                                              ; preds = %568, %477
  br label %570

570:                                              ; preds = %569, %464
  br label %571

571:                                              ; preds = %570, %291
  br label %852

572:                                              ; preds = %110
  %573 = load double, ptr %25, align 8, !tbaa !9
  %574 = load double, ptr %28, align 8, !tbaa !9
  %575 = fneg double %574
  %576 = fcmp oge double %573, %575
  br i1 %576, label %577, label %746

577:                                              ; preds = %572
  %578 = load double, ptr %25, align 8, !tbaa !9
  %579 = load double, ptr %28, align 8, !tbaa !9
  %580 = fcmp ole double %578, %579
  br i1 %580, label %581, label %641

581:                                              ; preds = %577
  %582 = load double, ptr %31, align 8, !tbaa !9
  %583 = fneg double %582
  store double %583, ptr %24, align 8, !tbaa !9
  %584 = load double, ptr %36, align 8, !tbaa !9
  %585 = load double, ptr %24, align 8, !tbaa !9
  %586 = load double, ptr %38, align 8, !tbaa !9
  %587 = call double @llvm.fmuladd.f64(double %584, double %585, double %586)
  %588 = fneg double %587
  store double %588, ptr %30, align 8, !tbaa !9
  %589 = load double, ptr %30, align 8, !tbaa !9
  %590 = load double, ptr %32, align 8, !tbaa !9
  %591 = fneg double %590
  %592 = fcmp olt double %589, %591
  br i1 %592, label %593, label %608

593:                                              ; preds = %581
  %594 = load double, ptr %32, align 8, !tbaa !9
  %595 = fneg double %594
  store double %595, ptr %25, align 8, !tbaa !9
  %596 = load double, ptr %25, align 8, !tbaa !9
  %597 = load double, ptr %25, align 8, !tbaa !9
  %598 = load double, ptr %30, align 8, !tbaa !9
  %599 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %598, double %597)
  %600 = load double, ptr %24, align 8, !tbaa !9
  %601 = load double, ptr %24, align 8, !tbaa !9
  %602 = load double, ptr %37, align 8, !tbaa !9
  %603 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %602, double %601)
  %604 = fmul double %600, %603
  %605 = call double @llvm.fmuladd.f64(double %596, double %599, double %604)
  %606 = load double, ptr %39, align 8, !tbaa !9
  %607 = fadd double %605, %606
  store double %607, ptr %26, align 8, !tbaa !9
  br label %640

608:                                              ; preds = %581
  %609 = load double, ptr %30, align 8, !tbaa !9
  %610 = load double, ptr %32, align 8, !tbaa !9
  %611 = fcmp ole double %609, %610
  br i1 %611, label %612, label %625

612:                                              ; preds = %608
  %613 = load double, ptr %30, align 8, !tbaa !9
  store double %613, ptr %25, align 8, !tbaa !9
  %614 = load double, ptr %25, align 8, !tbaa !9
  %615 = fneg double %614
  %616 = load double, ptr %25, align 8, !tbaa !9
  %617 = load double, ptr %24, align 8, !tbaa !9
  %618 = load double, ptr %24, align 8, !tbaa !9
  %619 = load double, ptr %37, align 8, !tbaa !9
  %620 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %619, double %618)
  %621 = fmul double %617, %620
  %622 = call double @llvm.fmuladd.f64(double %615, double %616, double %621)
  %623 = load double, ptr %39, align 8, !tbaa !9
  %624 = fadd double %622, %623
  store double %624, ptr %26, align 8, !tbaa !9
  br label %639

625:                                              ; preds = %608
  %626 = load double, ptr %32, align 8, !tbaa !9
  store double %626, ptr %25, align 8, !tbaa !9
  %627 = load double, ptr %25, align 8, !tbaa !9
  %628 = load double, ptr %25, align 8, !tbaa !9
  %629 = load double, ptr %30, align 8, !tbaa !9
  %630 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %629, double %628)
  %631 = load double, ptr %24, align 8, !tbaa !9
  %632 = load double, ptr %24, align 8, !tbaa !9
  %633 = load double, ptr %37, align 8, !tbaa !9
  %634 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %633, double %632)
  %635 = fmul double %631, %634
  %636 = call double @llvm.fmuladd.f64(double %627, double %630, double %635)
  %637 = load double, ptr %39, align 8, !tbaa !9
  %638 = fadd double %636, %637
  store double %638, ptr %26, align 8, !tbaa !9
  br label %639

639:                                              ; preds = %625, %612
  br label %640

640:                                              ; preds = %639, %593
  br label %745

641:                                              ; preds = %577
  %642 = load double, ptr %32, align 8, !tbaa !9
  store double %642, ptr %25, align 8, !tbaa !9
  %643 = load double, ptr %36, align 8, !tbaa !9
  %644 = load double, ptr %25, align 8, !tbaa !9
  %645 = load double, ptr %37, align 8, !tbaa !9
  %646 = call double @llvm.fmuladd.f64(double %643, double %644, double %645)
  %647 = fneg double %646
  store double %647, ptr %29, align 8, !tbaa !9
  %648 = load double, ptr %29, align 8, !tbaa !9
  %649 = load double, ptr %31, align 8, !tbaa !9
  %650 = fcmp ogt double %648, %649
  br i1 %650, label %651, label %665

651:                                              ; preds = %641
  %652 = load double, ptr %31, align 8, !tbaa !9
  store double %652, ptr %24, align 8, !tbaa !9
  %653 = load double, ptr %24, align 8, !tbaa !9
  %654 = load double, ptr %24, align 8, !tbaa !9
  %655 = load double, ptr %29, align 8, !tbaa !9
  %656 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %655, double %654)
  %657 = load double, ptr %25, align 8, !tbaa !9
  %658 = load double, ptr %25, align 8, !tbaa !9
  %659 = load double, ptr %38, align 8, !tbaa !9
  %660 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %659, double %658)
  %661 = fmul double %657, %660
  %662 = call double @llvm.fmuladd.f64(double %653, double %656, double %661)
  %663 = load double, ptr %39, align 8, !tbaa !9
  %664 = fadd double %662, %663
  store double %664, ptr %26, align 8, !tbaa !9
  br label %744

665:                                              ; preds = %641
  %666 = load double, ptr %29, align 8, !tbaa !9
  %667 = load double, ptr %31, align 8, !tbaa !9
  %668 = fneg double %667
  %669 = fcmp oge double %666, %668
  br i1 %669, label %670, label %683

670:                                              ; preds = %665
  %671 = load double, ptr %29, align 8, !tbaa !9
  store double %671, ptr %24, align 8, !tbaa !9
  %672 = load double, ptr %24, align 8, !tbaa !9
  %673 = fneg double %672
  %674 = load double, ptr %24, align 8, !tbaa !9
  %675 = load double, ptr %25, align 8, !tbaa !9
  %676 = load double, ptr %25, align 8, !tbaa !9
  %677 = load double, ptr %38, align 8, !tbaa !9
  %678 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %677, double %676)
  %679 = fmul double %675, %678
  %680 = call double @llvm.fmuladd.f64(double %673, double %674, double %679)
  %681 = load double, ptr %39, align 8, !tbaa !9
  %682 = fadd double %680, %681
  store double %682, ptr %26, align 8, !tbaa !9
  br label %743

683:                                              ; preds = %665
  %684 = load double, ptr %31, align 8, !tbaa !9
  %685 = fneg double %684
  store double %685, ptr %24, align 8, !tbaa !9
  %686 = load double, ptr %36, align 8, !tbaa !9
  %687 = load double, ptr %24, align 8, !tbaa !9
  %688 = load double, ptr %38, align 8, !tbaa !9
  %689 = call double @llvm.fmuladd.f64(double %686, double %687, double %688)
  %690 = fneg double %689
  store double %690, ptr %30, align 8, !tbaa !9
  %691 = load double, ptr %30, align 8, !tbaa !9
  %692 = load double, ptr %32, align 8, !tbaa !9
  %693 = fneg double %692
  %694 = fcmp olt double %691, %693
  br i1 %694, label %695, label %710

695:                                              ; preds = %683
  %696 = load double, ptr %32, align 8, !tbaa !9
  %697 = fneg double %696
  store double %697, ptr %25, align 8, !tbaa !9
  %698 = load double, ptr %25, align 8, !tbaa !9
  %699 = load double, ptr %25, align 8, !tbaa !9
  %700 = load double, ptr %30, align 8, !tbaa !9
  %701 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %700, double %699)
  %702 = load double, ptr %24, align 8, !tbaa !9
  %703 = load double, ptr %24, align 8, !tbaa !9
  %704 = load double, ptr %37, align 8, !tbaa !9
  %705 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %704, double %703)
  %706 = fmul double %702, %705
  %707 = call double @llvm.fmuladd.f64(double %698, double %701, double %706)
  %708 = load double, ptr %39, align 8, !tbaa !9
  %709 = fadd double %707, %708
  store double %709, ptr %26, align 8, !tbaa !9
  br label %742

710:                                              ; preds = %683
  %711 = load double, ptr %30, align 8, !tbaa !9
  %712 = load double, ptr %32, align 8, !tbaa !9
  %713 = fcmp ole double %711, %712
  br i1 %713, label %714, label %727

714:                                              ; preds = %710
  %715 = load double, ptr %30, align 8, !tbaa !9
  store double %715, ptr %25, align 8, !tbaa !9
  %716 = load double, ptr %25, align 8, !tbaa !9
  %717 = fneg double %716
  %718 = load double, ptr %25, align 8, !tbaa !9
  %719 = load double, ptr %24, align 8, !tbaa !9
  %720 = load double, ptr %24, align 8, !tbaa !9
  %721 = load double, ptr %37, align 8, !tbaa !9
  %722 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %721, double %720)
  %723 = fmul double %719, %722
  %724 = call double @llvm.fmuladd.f64(double %717, double %718, double %723)
  %725 = load double, ptr %39, align 8, !tbaa !9
  %726 = fadd double %724, %725
  store double %726, ptr %26, align 8, !tbaa !9
  br label %741

727:                                              ; preds = %710
  %728 = load double, ptr %32, align 8, !tbaa !9
  store double %728, ptr %25, align 8, !tbaa !9
  %729 = load double, ptr %25, align 8, !tbaa !9
  %730 = load double, ptr %25, align 8, !tbaa !9
  %731 = load double, ptr %30, align 8, !tbaa !9
  %732 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %731, double %730)
  %733 = load double, ptr %24, align 8, !tbaa !9
  %734 = load double, ptr %24, align 8, !tbaa !9
  %735 = load double, ptr %37, align 8, !tbaa !9
  %736 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %735, double %734)
  %737 = fmul double %733, %736
  %738 = call double @llvm.fmuladd.f64(double %729, double %732, double %737)
  %739 = load double, ptr %39, align 8, !tbaa !9
  %740 = fadd double %738, %739
  store double %740, ptr %26, align 8, !tbaa !9
  br label %741

741:                                              ; preds = %727, %714
  br label %742

742:                                              ; preds = %741, %695
  br label %743

743:                                              ; preds = %742, %670
  br label %744

744:                                              ; preds = %743, %651
  br label %745

745:                                              ; preds = %744, %640
  br label %851

746:                                              ; preds = %572
  %747 = load double, ptr %32, align 8, !tbaa !9
  %748 = fneg double %747
  store double %748, ptr %25, align 8, !tbaa !9
  %749 = load double, ptr %36, align 8, !tbaa !9
  %750 = load double, ptr %25, align 8, !tbaa !9
  %751 = load double, ptr %37, align 8, !tbaa !9
  %752 = call double @llvm.fmuladd.f64(double %749, double %750, double %751)
  %753 = fneg double %752
  store double %753, ptr %29, align 8, !tbaa !9
  %754 = load double, ptr %29, align 8, !tbaa !9
  %755 = load double, ptr %31, align 8, !tbaa !9
  %756 = fcmp ogt double %754, %755
  br i1 %756, label %757, label %771

757:                                              ; preds = %746
  %758 = load double, ptr %31, align 8, !tbaa !9
  store double %758, ptr %24, align 8, !tbaa !9
  %759 = load double, ptr %24, align 8, !tbaa !9
  %760 = load double, ptr %24, align 8, !tbaa !9
  %761 = load double, ptr %29, align 8, !tbaa !9
  %762 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %761, double %760)
  %763 = load double, ptr %25, align 8, !tbaa !9
  %764 = load double, ptr %25, align 8, !tbaa !9
  %765 = load double, ptr %38, align 8, !tbaa !9
  %766 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %765, double %764)
  %767 = fmul double %763, %766
  %768 = call double @llvm.fmuladd.f64(double %759, double %762, double %767)
  %769 = load double, ptr %39, align 8, !tbaa !9
  %770 = fadd double %768, %769
  store double %770, ptr %26, align 8, !tbaa !9
  br label %850

771:                                              ; preds = %746
  %772 = load double, ptr %29, align 8, !tbaa !9
  %773 = load double, ptr %31, align 8, !tbaa !9
  %774 = fneg double %773
  %775 = fcmp oge double %772, %774
  br i1 %775, label %776, label %789

776:                                              ; preds = %771
  %777 = load double, ptr %29, align 8, !tbaa !9
  store double %777, ptr %24, align 8, !tbaa !9
  %778 = load double, ptr %24, align 8, !tbaa !9
  %779 = fneg double %778
  %780 = load double, ptr %24, align 8, !tbaa !9
  %781 = load double, ptr %25, align 8, !tbaa !9
  %782 = load double, ptr %25, align 8, !tbaa !9
  %783 = load double, ptr %38, align 8, !tbaa !9
  %784 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %783, double %782)
  %785 = fmul double %781, %784
  %786 = call double @llvm.fmuladd.f64(double %779, double %780, double %785)
  %787 = load double, ptr %39, align 8, !tbaa !9
  %788 = fadd double %786, %787
  store double %788, ptr %26, align 8, !tbaa !9
  br label %849

789:                                              ; preds = %771
  %790 = load double, ptr %31, align 8, !tbaa !9
  %791 = fneg double %790
  store double %791, ptr %24, align 8, !tbaa !9
  %792 = load double, ptr %36, align 8, !tbaa !9
  %793 = load double, ptr %24, align 8, !tbaa !9
  %794 = load double, ptr %38, align 8, !tbaa !9
  %795 = call double @llvm.fmuladd.f64(double %792, double %793, double %794)
  %796 = fneg double %795
  store double %796, ptr %30, align 8, !tbaa !9
  %797 = load double, ptr %30, align 8, !tbaa !9
  %798 = load double, ptr %32, align 8, !tbaa !9
  %799 = fneg double %798
  %800 = fcmp olt double %797, %799
  br i1 %800, label %801, label %816

801:                                              ; preds = %789
  %802 = load double, ptr %32, align 8, !tbaa !9
  %803 = fneg double %802
  store double %803, ptr %25, align 8, !tbaa !9
  %804 = load double, ptr %25, align 8, !tbaa !9
  %805 = load double, ptr %25, align 8, !tbaa !9
  %806 = load double, ptr %30, align 8, !tbaa !9
  %807 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %806, double %805)
  %808 = load double, ptr %24, align 8, !tbaa !9
  %809 = load double, ptr %24, align 8, !tbaa !9
  %810 = load double, ptr %37, align 8, !tbaa !9
  %811 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %810, double %809)
  %812 = fmul double %808, %811
  %813 = call double @llvm.fmuladd.f64(double %804, double %807, double %812)
  %814 = load double, ptr %39, align 8, !tbaa !9
  %815 = fadd double %813, %814
  store double %815, ptr %26, align 8, !tbaa !9
  br label %848

816:                                              ; preds = %789
  %817 = load double, ptr %30, align 8, !tbaa !9
  %818 = load double, ptr %32, align 8, !tbaa !9
  %819 = fcmp ole double %817, %818
  br i1 %819, label %820, label %833

820:                                              ; preds = %816
  %821 = load double, ptr %30, align 8, !tbaa !9
  store double %821, ptr %25, align 8, !tbaa !9
  %822 = load double, ptr %25, align 8, !tbaa !9
  %823 = fneg double %822
  %824 = load double, ptr %25, align 8, !tbaa !9
  %825 = load double, ptr %24, align 8, !tbaa !9
  %826 = load double, ptr %24, align 8, !tbaa !9
  %827 = load double, ptr %37, align 8, !tbaa !9
  %828 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %827, double %826)
  %829 = fmul double %825, %828
  %830 = call double @llvm.fmuladd.f64(double %823, double %824, double %829)
  %831 = load double, ptr %39, align 8, !tbaa !9
  %832 = fadd double %830, %831
  store double %832, ptr %26, align 8, !tbaa !9
  br label %847

833:                                              ; preds = %816
  %834 = load double, ptr %32, align 8, !tbaa !9
  store double %834, ptr %25, align 8, !tbaa !9
  %835 = load double, ptr %25, align 8, !tbaa !9
  %836 = load double, ptr %25, align 8, !tbaa !9
  %837 = load double, ptr %30, align 8, !tbaa !9
  %838 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %837, double %836)
  %839 = load double, ptr %24, align 8, !tbaa !9
  %840 = load double, ptr %24, align 8, !tbaa !9
  %841 = load double, ptr %37, align 8, !tbaa !9
  %842 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %841, double %840)
  %843 = fmul double %839, %842
  %844 = call double @llvm.fmuladd.f64(double %835, double %838, double %843)
  %845 = load double, ptr %39, align 8, !tbaa !9
  %846 = fadd double %844, %845
  store double %846, ptr %26, align 8, !tbaa !9
  br label %847

847:                                              ; preds = %833, %820
  br label %848

848:                                              ; preds = %847, %801
  br label %849

849:                                              ; preds = %848, %776
  br label %850

850:                                              ; preds = %849, %757
  br label %851

851:                                              ; preds = %850, %745
  br label %852

852:                                              ; preds = %851, %571
  br label %902

853:                                              ; preds = %86
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #4
  %854 = load double, ptr %31, align 8, !tbaa !9
  %855 = load double, ptr %32, align 8, !tbaa !9
  %856 = fadd double %854, %855
  store double %856, ptr %42, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #4
  %857 = load double, ptr %36, align 8, !tbaa !9
  %858 = fcmp ogt double %857, 0.000000e+00
  %859 = zext i1 %858 to i64
  %860 = select i1 %858, double -1.000000e+00, double 1.000000e+00
  store double %860, ptr %43, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #4
  %861 = load double, ptr %37, align 8, !tbaa !9
  %862 = load double, ptr %43, align 8, !tbaa !9
  %863 = load double, ptr %38, align 8, !tbaa !9
  %864 = fneg double %862
  %865 = call double @llvm.fmuladd.f64(double %864, double %863, double %861)
  %866 = fmul double 5.000000e-01, %865
  store double %866, ptr %44, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #4
  %867 = load double, ptr %44, align 8, !tbaa !9
  %868 = fneg double %867
  store double %868, ptr %45, align 8, !tbaa !9
  %869 = load double, ptr %45, align 8, !tbaa !9
  %870 = load double, ptr %42, align 8, !tbaa !9
  %871 = fneg double %870
  %872 = fcmp olt double %869, %871
  br i1 %872, label %873, label %876

873:                                              ; preds = %853
  %874 = load double, ptr %42, align 8, !tbaa !9
  %875 = fneg double %874
  store double %875, ptr %45, align 8, !tbaa !9
  br label %883

876:                                              ; preds = %853
  %877 = load double, ptr %45, align 8, !tbaa !9
  %878 = load double, ptr %42, align 8, !tbaa !9
  %879 = fcmp ogt double %877, %878
  br i1 %879, label %880, label %882

880:                                              ; preds = %876
  %881 = load double, ptr %42, align 8, !tbaa !9
  store double %881, ptr %45, align 8, !tbaa !9
  br label %882

882:                                              ; preds = %880, %876
  br label %883

883:                                              ; preds = %882, %873
  %884 = load double, ptr %43, align 8, !tbaa !9
  %885 = fneg double %884
  %886 = load double, ptr %45, align 8, !tbaa !9
  %887 = fmul double %885, %886
  %888 = load double, ptr %32, align 8, !tbaa !9
  %889 = fmul double %887, %888
  %890 = load double, ptr %42, align 8, !tbaa !9
  %891 = fdiv double %889, %890
  store double %891, ptr %25, align 8, !tbaa !9
  %892 = load double, ptr %45, align 8, !tbaa !9
  %893 = load double, ptr %43, align 8, !tbaa !9
  %894 = load double, ptr %25, align 8, !tbaa !9
  %895 = call double @llvm.fmuladd.f64(double %893, double %894, double %892)
  store double %895, ptr %24, align 8, !tbaa !9
  %896 = load double, ptr %45, align 8, !tbaa !9
  %897 = load double, ptr %45, align 8, !tbaa !9
  %898 = load double, ptr %44, align 8, !tbaa !9
  %899 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %898, double %897)
  %900 = load double, ptr %39, align 8, !tbaa !9
  %901 = call double @llvm.fmuladd.f64(double %896, double %899, double %900)
  store double %901, ptr %26, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  br label %902

902:                                              ; preds = %883, %852
  %903 = load ptr, ptr %16, align 8, !tbaa !5
  %904 = icmp ne ptr %903, null
  br i1 %904, label %908, label %905

905:                                              ; preds = %902
  %906 = load ptr, ptr %17, align 8, !tbaa !5
  %907 = icmp ne ptr %906, null
  br i1 %907, label %908, label %917

908:                                              ; preds = %905, %902
  %909 = load ptr, ptr %33, align 8, !tbaa !5
  %910 = getelementptr inbounds [3 x double], ptr %22, i64 0, i64 0
  %911 = load ptr, ptr %11, align 8, !tbaa !5
  %912 = load double, ptr %24, align 8, !tbaa !9
  call void @Vec3d_constMulAndAdd(ptr noundef %909, ptr noundef %910, ptr noundef %911, double noundef %912)
  %913 = load ptr, ptr %34, align 8, !tbaa !5
  %914 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 0
  %915 = load ptr, ptr %14, align 8, !tbaa !5
  %916 = load double, ptr %25, align 8, !tbaa !9
  call void @Vec3d_constMulAndAdd(ptr noundef %913, ptr noundef %914, ptr noundef %915, double noundef %916)
  br label %917

917:                                              ; preds = %908, %905
  %918 = load double, ptr %26, align 8, !tbaa !9
  %919 = fcmp olt double %918, 0.000000e+00
  br i1 %919, label %920, label %921

920:                                              ; preds = %917
  br label %923

921:                                              ; preds = %917
  %922 = load double, ptr %26, align 8, !tbaa !9
  br label %923

923:                                              ; preds = %921, %920
  %924 = phi double [ 0.000000e+00, %920 ], [ %922, %921 ]
  store double %924, ptr %9, align 8
  store i32 1, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  br label %925

925:                                              ; preds = %923, %76
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  %926 = load double, ptr %9, align 8
  ret double %926
}

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fabs.f64(double) #3

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

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}


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

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

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

declare double @Vec3d_innerProduct(ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @Vec3d_constMulAndAdd(ptr noundef, ptr noundef, ptr noundef, double noundef) local_unnamed_addr #1

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

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

declare double @Vec3d_sqrLength(ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #3

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

; Function Attrs: nounwind uwtable
define dso_local double @Math_sqrDistLinesegLineseg(ptr noundef %0, ptr noundef %1, double noundef %2, ptr noundef %3, ptr noundef %4, double noundef %5, ptr noundef %6, ptr noundef %7) local_unnamed_addr #2 {
  %9 = alloca [3 x double], align 16
  %10 = alloca [3 x double], align 16
  %11 = alloca [3 x double], align 16
  %12 = alloca [3 x double], align 16
  %13 = alloca [3 x double], align 16
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #4
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #4
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #4
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #4
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #4
  %14 = fmul double %2, 5.000000e-01
  %15 = fmul double %5, 5.000000e-01
  %16 = icmp eq ptr %6, null
  %17 = select i1 %16, ptr %9, ptr %6
  %18 = icmp eq ptr %7, null
  %19 = select i1 %18, ptr %10, ptr %7
  call void @Vec3d_constMulAndAdd(ptr noundef nonnull %12, ptr noundef %0, ptr noundef %1, double noundef %14) #4
  call void @Vec3d_constMulAndAdd(ptr noundef nonnull %13, ptr noundef %3, ptr noundef %4, double noundef %15) #4
  %20 = fcmp oeq double %2, 0.000000e+00
  br i1 %20, label %21, label %23

21:                                               ; preds = %8
  %22 = call double @Math_sqrDistPointLineseg(ptr noundef %0, ptr noundef %3, ptr noundef %4, double noundef %5, ptr noundef nonnull %19)
  call void @Vec3d_copy(ptr noundef nonnull %17, ptr noundef %0) #4
  br label %361

23:                                               ; preds = %8
  call void @Vec3d_sub(ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %13) #4
  %24 = call double @Vec3d_innerProduct(ptr noundef %1, ptr noundef %4) #4
  %25 = fneg double %24
  %26 = call double @Vec3d_innerProduct(ptr noundef nonnull %11, ptr noundef %1) #4
  %27 = call double @Vec3d_innerProduct(ptr noundef nonnull %11, ptr noundef %4) #4
  %28 = fneg double %27
  %29 = call double @Vec3d_sqrLength(ptr noundef nonnull %11) #4
  %30 = call double @llvm.fmuladd.f64(double %24, double %25, double 1.000000e+00)
  %31 = call double @llvm.fabs.f64(double %30)
  %32 = fcmp ult double %31, 1.000000e-08
  br i1 %32, label %333, label %33

33:                                               ; preds = %23
  %34 = fneg double %26
  %35 = call double @llvm.fmuladd.f64(double %24, double %27, double %34)
  %36 = call double @llvm.fmuladd.f64(double %25, double %26, double %27)
  %37 = fmul double %14, %31
  %38 = fmul double %15, %31
  %39 = fneg double %37
  %40 = fcmp ult double %35, %39
  br i1 %40, label %219, label %41

41:                                               ; preds = %33
  %42 = fcmp ugt double %35, %37
  %43 = fneg double %38
  %44 = fcmp ult double %36, %43
  br i1 %42, label %108, label %45

45:                                               ; preds = %41
  br i1 %44, label %83, label %46

46:                                               ; preds = %45
  %47 = fcmp ugt double %36, %38
  br i1 %47, label %59, label %48

48:                                               ; preds = %46
  %49 = fdiv double 1.000000e+00, %31
  %50 = fmul double %35, %49
  %51 = fmul double %36, %49
  %52 = call double @llvm.fmuladd.f64(double %25, double %51, double %50)
  %53 = call double @llvm.fmuladd.f64(double %26, double 2.000000e+00, double %52)
  %54 = call double @llvm.fmuladd.f64(double %25, double %50, double %51)
  %55 = call double @llvm.fmuladd.f64(double %28, double 2.000000e+00, double %54)
  %56 = fmul double %51, %55
  %57 = call double @llvm.fmuladd.f64(double %50, double %53, double %56)
  %58 = fadd double %29, %57
  br label %354

59:                                               ; preds = %46
  %60 = call double @llvm.fmuladd.f64(double %25, double %15, double %26)
  %61 = fneg double %60
  %62 = fcmp ogt double %60, %14
  br i1 %62, label %63, label %70

63:                                               ; preds = %59
  %64 = fneg double %14
  %65 = call double @llvm.fmuladd.f64(double %61, double -2.000000e+00, double %64)
  %66 = call double @llvm.fmuladd.f64(double %28, double 2.000000e+00, double %15)
  %67 = fmul double %15, %66
  %68 = call double @llvm.fmuladd.f64(double %64, double %65, double %67)
  %69 = fadd double %29, %68
  br label %354

70:                                               ; preds = %59
  %71 = fcmp ult double %14, %61
  br i1 %71, label %77, label %72

72:                                               ; preds = %70
  %73 = call double @llvm.fmuladd.f64(double %28, double 2.000000e+00, double %15)
  %74 = fmul double %15, %73
  %75 = call double @llvm.fmuladd.f64(double %60, double %61, double %74)
  %76 = fadd double %29, %75
  br label %354

77:                                               ; preds = %70
  %78 = call double @llvm.fmuladd.f64(double %61, double -2.000000e+00, double %14)
  %79 = call double @llvm.fmuladd.f64(double %28, double 2.000000e+00, double %15)
  %80 = fmul double %15, %79
  %81 = call double @llvm.fmuladd.f64(double %14, double %78, double %80)
  %82 = fadd double %29, %81
  br label %354

83:                                               ; preds = %45
  %84 = fneg double %15
  %85 = call double @llvm.fmuladd.f64(double %24, double %15, double %26)
  %86 = fneg double %85
  %87 = fcmp ogt double %85, %14
  br i1 %87, label %88, label %95

88:                                               ; preds = %83
  %89 = fneg double %14
  %90 = call double @llvm.fmuladd.f64(double %86, double -2.000000e+00, double %89)
  %91 = call double @llvm.fmuladd.f64(double %28, double 2.000000e+00, double %84)
  %92 = fmul double %91, %84
  %93 = call double @llvm.fmuladd.f64(double %89, double %90, double %92)
  %94 = fadd double %29, %93
  br label %354

95:                                               ; preds = %83
  %96 = fcmp ult double %14, %86
  br i1 %96, label %102, label %97

97:                                               ; preds = %95
  %98 = call double @llvm.fmuladd.f64(double %28, double 2.000000e+00, double %84)
  %99 = fmul double %98, %84
  %100 = call double @llvm.fmuladd.f64(double %85, double %86, double %99)
  %101 = fadd double %29, %100
  br label %354

102:                                              ; preds = %95
  %103 = call double @llvm.fmuladd.f64(double %86, double -2.000000e+00, double %14)
  %104 = call double @llvm.fmuladd.f64(double %28, double 2.000000e+00, double %84)
  %105 = fmul double %104, %84
  %106 = call double @llvm.fmuladd.f64(double %14, double %103, double %105)
  %107 = fadd double %29, %106
  br label %354

108:                                              ; preds = %41
  br i1 %44, label %177, label %109

109:                                              ; preds = %108
  %110 = fcmp ugt double %36, %38
  br i1 %110, label %135, label %111

111:                                              ; preds = %109
  %112 = call double @llvm.fmuladd.f64(double %25, double %14, double %28)
  %113 = fneg double %112
  %114 = fcmp ogt double %112, %15
  br i1 %114, label %115, label %122

115:                                              ; preds = %111
  %116 = fneg double %15
  %117 = call double @llvm.fmuladd.f64(double %113, double -2.000000e+00, double %116)
  %118 = call double @llvm.fmuladd.f64(double %26, double 2.000000e+00, double %14)
  %119 = fmul double %14, %118
  %120 = call double @llvm.fmuladd.f64(double %116, double %117, double %119)
  %121 = fadd double %29, %120
  br label %354

122:                                              ; preds = %111
  %123 = fcmp ult double %15, %113
  br i1 %123, label %129, label %124

124:                                              ; preds = %122
  %125 = call double @llvm.fmuladd.f64(double %26, double 2.000000e+00, double %14)
  %126 = fmul double %14, %125
  %127 = call double @llvm.fmuladd.f64(double %112, double %113, double %126)
  %128 = fadd double %29, %127
  br label %354

129:                                              ; preds = %122
  %130 = call double @llvm.fmuladd.f64(double %113, double -2.000000e+00, double %15)
  %131 = call double @llvm.fmuladd.f64(double %26, double 2.000000e+00, double %14)
  %132 = fmul double %14, %131
  %133 = call double @llvm.fmuladd.f64(double %15, double %130, double %132)
  %134 = fadd double %29, %133
  br label %354

135:                                              ; preds = %109
  %136 = call double @llvm.fmuladd.f64(double %25, double %15, double %26)
  %137 = fneg double %136
  %138 = fcmp ogt double %136, %14
  br i1 %138, label %139, label %146

139:                                              ; preds = %135
  %140 = fneg double %14
  %141 = call double @llvm.fmuladd.f64(double %137, double -2.000000e+00, double %140)
  %142 = call double @llvm.fmuladd.f64(double %28, double 2.000000e+00, double %15)
  %143 = fmul double %15, %142
  %144 = call double @llvm.fmuladd.f64(double %140, double %141, double %143)
  %145 = fadd double %29, %144
  br label %354

146:                                              ; preds = %135
  %147 = fcmp ult double %14, %137
  br i1 %147, label %153, label %148

148:                                              ; preds = %146
  %149 = call double @llvm.fmuladd.f64(double %28, double 2.000000e+00, double %15)
  %150 = fmul double %15, %149
  %151 = call double @llvm.fmuladd.f64(double %136, double %137, double %150)
  %152 = fadd double %29, %151
  br label %354

153:                                              ; preds = %146
  %154 = call double @llvm.fmuladd.f64(double %25, double %14, double %28)
  %155 = fneg double %154
  %156 = fcmp ogt double %154, %15
  br i1 %156, label %157, label %164

157:                                              ; preds = %153
  %158 = fneg double %15
  %159 = call double @llvm.fmuladd.f64(double %155, double -2.000000e+00, double %158)
  %160 = call double @llvm.fmuladd.f64(double %26, double 2.000000e+00, double %14)
  %161 = fmul double %14, %160
  %162 = call double @llvm.fmuladd.f64(double %158, double %159, double %161)
  %163 = fadd double %29, %162
  br label %354

164:                                              ; preds = %153
  %165 = fcmp ult double %15, %155
  br i1 %165, label %171, label %166

166:                                              ; preds = %164
  %167 = call double @llvm.fmuladd.f64(double %26, double 2.000000e+00, double %14)
  %168 = fmul double %14, %167
  %169 = call double @llvm.fmuladd.f64(double %154, double %155, double %168)
  %170 = fadd double %29, %169
  br label %354

171:                                              ; preds = %164
  %172 = call double @llvm.fmuladd.f64(double %155, double -2.000000e+00, double %15)
  %173 = call double @llvm.fmuladd.f64(double %26, double 2.000000e+00, double %14)
  %174 = fmul double %14, %173
  %175 = call double @llvm.fmuladd.f64(double %15, double %172, double %174)
  %176 = fadd double %29, %175
  br label %354

177:                                              ; preds = %108
  %178 = fneg double %15
  %179 = call double @llvm.fmuladd.f64(double %24, double %15, double %26)
  %180 = fneg double %179
  %181 = fcmp ogt double %179, %14
  br i1 %181, label %182, label %189

182:                                              ; preds = %177
  %183 = fneg double %14
  %184 = call double @llvm.fmuladd.f64(double %180, double -2.000000e+00, double %183)
  %185 = call double @llvm.fmuladd.f64(double %28, double 2.000000e+00, double %178)
  %186 = fmul double %185, %178
  %187 = call double @llvm.fmuladd.f64(double %183, double %184, double %186)
  %188 = fadd double %29, %187
  br label %354

189:                                              ; preds = %177
  %190 = fcmp ult double %14, %180
  br i1 %190, label %196, label %191

191:                                              ; preds = %189
  %192 = call double @llvm.fmuladd.f64(double %28, double 2.000000e+00, double %178)
  %193 = fmul double %192, %178
  %194 = call double @llvm.fmuladd.f64(double %179, double %180, double %193)
  %195 = fadd double %29, %194
  br label %354

196:                                              ; preds = %189
  %197 = call double @llvm.fmuladd.f64(double %25, double %14, double %28)
  %198 = fneg double %197
  %199 = fcmp olt double %15, %198
  br i1 %199, label %200, label %206

200:                                              ; preds = %196
  %201 = call double @llvm.fmuladd.f64(double %198, double -2.000000e+00, double %15)
  %202 = call double @llvm.fmuladd.f64(double %26, double 2.000000e+00, double %14)
  %203 = fmul double %14, %202
  %204 = call double @llvm.fmuladd.f64(double %15, double %201, double %203)
  %205 = fadd double %29, %204
  br label %354

206:                                              ; preds = %196
  %207 = fcmp ugt double %197, %15
  br i1 %207, label %213, label %208

208:                                              ; preds = %206
  %209 = call double @llvm.fmuladd.f64(double %26, double 2.000000e+00, double %14)
  %210 = fmul double %14, %209
  %211 = call double @llvm.fmuladd.f64(double %197, double %198, double %210)
  %212 = fadd double %29, %211
  br label %354

213:                                              ; preds = %206
  %214 = call double @llvm.fmuladd.f64(double %198, double -2.000000e+00, double %178)
  %215 = call double @llvm.fmuladd.f64(double %26, double 2.000000e+00, double %14)
  %216 = fmul double %14, %215
  %217 = call double @llvm.fmuladd.f64(double %178, double %214, double %216)
  %218 = fadd double %29, %217
  br label %354

219:                                              ; preds = %33
  %220 = fneg double %38
  %221 = fcmp ult double %36, %220
  br i1 %221, label %291, label %222

222:                                              ; preds = %219
  %223 = fcmp ugt double %36, %38
  br i1 %223, label %249, label %224

224:                                              ; preds = %222
  %225 = fneg double %14
  %226 = call double @llvm.fmuladd.f64(double %24, double %14, double %28)
  %227 = fneg double %226
  %228 = fcmp ogt double %226, %15
  br i1 %228, label %229, label %236

229:                                              ; preds = %224
  %230 = fneg double %15
  %231 = call double @llvm.fmuladd.f64(double %227, double -2.000000e+00, double %230)
  %232 = call double @llvm.fmuladd.f64(double %26, double 2.000000e+00, double %225)
  %233 = fmul double %232, %225
  %234 = call double @llvm.fmuladd.f64(double %230, double %231, double %233)
  %235 = fadd double %29, %234
  br label %354

236:                                              ; preds = %224
  %237 = fcmp ult double %15, %227
  br i1 %237, label %243, label %238

238:                                              ; preds = %236
  %239 = call double @llvm.fmuladd.f64(double %26, double 2.000000e+00, double %225)
  %240 = fmul double %239, %225
  %241 = call double @llvm.fmuladd.f64(double %226, double %227, double %240)
  %242 = fadd double %29, %241
  br label %354

243:                                              ; preds = %236
  %244 = call double @llvm.fmuladd.f64(double %227, double -2.000000e+00, double %15)
  %245 = call double @llvm.fmuladd.f64(double %26, double 2.000000e+00, double %225)
  %246 = fmul double %245, %225
  %247 = call double @llvm.fmuladd.f64(double %15, double %244, double %246)
  %248 = fadd double %29, %247
  br label %354

249:                                              ; preds = %222
  %250 = call double @llvm.fmuladd.f64(double %25, double %15, double %26)
  %251 = fneg double %250
  %252 = fcmp olt double %14, %251
  br i1 %252, label %253, label %259

253:                                              ; preds = %249
  %254 = call double @llvm.fmuladd.f64(double %251, double -2.000000e+00, double %14)
  %255 = call double @llvm.fmuladd.f64(double %28, double 2.000000e+00, double %15)
  %256 = fmul double %15, %255
  %257 = call double @llvm.fmuladd.f64(double %14, double %254, double %256)
  %258 = fadd double %29, %257
  br label %354

259:                                              ; preds = %249
  %260 = fneg double %14
  %261 = fcmp ugt double %250, %14
  br i1 %261, label %267, label %262

262:                                              ; preds = %259
  %263 = call double @llvm.fmuladd.f64(double %28, double 2.000000e+00, double %15)
  %264 = fmul double %15, %263
  %265 = call double @llvm.fmuladd.f64(double %250, double %251, double %264)
  %266 = fadd double %29, %265
  br label %354

267:                                              ; preds = %259
  %268 = call double @llvm.fmuladd.f64(double %24, double %14, double %28)
  %269 = fneg double %268
  %270 = fcmp ogt double %268, %15
  br i1 %270, label %271, label %278

271:                                              ; preds = %267
  %272 = fneg double %15
  %273 = call double @llvm.fmuladd.f64(double %269, double -2.000000e+00, double %272)
  %274 = call double @llvm.fmuladd.f64(double %26, double 2.000000e+00, double %260)
  %275 = fmul double %274, %260
  %276 = call double @llvm.fmuladd.f64(double %272, double %273, double %275)
  %277 = fadd double %29, %276
  br label %354

278:                                              ; preds = %267
  %279 = fcmp ult double %15, %269
  br i1 %279, label %285, label %280

280:                                              ; preds = %278
  %281 = call double @llvm.fmuladd.f64(double %26, double 2.000000e+00, double %260)
  %282 = fmul double %281, %260
  %283 = call double @llvm.fmuladd.f64(double %268, double %269, double %282)
  %284 = fadd double %29, %283
  br label %354

285:                                              ; preds = %278
  %286 = call double @llvm.fmuladd.f64(double %269, double -2.000000e+00, double %15)
  %287 = call double @llvm.fmuladd.f64(double %26, double 2.000000e+00, double %260)
  %288 = fmul double %287, %260
  %289 = call double @llvm.fmuladd.f64(double %15, double %286, double %288)
  %290 = fadd double %29, %289
  br label %354

291:                                              ; preds = %219
  %292 = fneg double %15
  %293 = call double @llvm.fmuladd.f64(double %24, double %15, double %26)
  %294 = fneg double %293
  %295 = fcmp olt double %14, %294
  br i1 %295, label %296, label %302

296:                                              ; preds = %291
  %297 = call double @llvm.fmuladd.f64(double %294, double -2.000000e+00, double %14)
  %298 = call double @llvm.fmuladd.f64(double %28, double 2.000000e+00, double %292)
  %299 = fmul double %298, %292
  %300 = call double @llvm.fmuladd.f64(double %14, double %297, double %299)
  %301 = fadd double %29, %300
  br label %354

302:                                              ; preds = %291
  %303 = fneg double %14
  %304 = fcmp ugt double %293, %14
  br i1 %304, label %310, label %305

305:                                              ; preds = %302
  %306 = call double @llvm.fmuladd.f64(double %28, double 2.000000e+00, double %292)
  %307 = fmul double %306, %292
  %308 = call double @llvm.fmuladd.f64(double %293, double %294, double %307)
  %309 = fadd double %29, %308
  br label %354

310:                                              ; preds = %302
  %311 = call double @llvm.fmuladd.f64(double %24, double %14, double %28)
  %312 = fneg double %311
  %313 = fcmp ogt double %311, %15
  br i1 %313, label %314, label %320

314:                                              ; preds = %310
  %315 = call double @llvm.fmuladd.f64(double %312, double -2.000000e+00, double %292)
  %316 = call double @llvm.fmuladd.f64(double %26, double 2.000000e+00, double %303)
  %317 = fmul double %316, %303
  %318 = call double @llvm.fmuladd.f64(double %292, double %315, double %317)
  %319 = fadd double %29, %318
  br label %354

320:                                              ; preds = %310
  %321 = fcmp ult double %15, %312
  br i1 %321, label %327, label %322

322:                                              ; preds = %320
  %323 = call double @llvm.fmuladd.f64(double %26, double 2.000000e+00, double %303)
  %324 = fmul double %323, %303
  %325 = call double @llvm.fmuladd.f64(double %311, double %312, double %324)
  %326 = fadd double %29, %325
  br label %354

327:                                              ; preds = %320
  %328 = call double @llvm.fmuladd.f64(double %312, double -2.000000e+00, double %15)
  %329 = call double @llvm.fmuladd.f64(double %26, double 2.000000e+00, double %303)
  %330 = fmul double %329, %303
  %331 = call double @llvm.fmuladd.f64(double %15, double %328, double %330)
  %332 = fadd double %29, %331
  br label %354

333:                                              ; preds = %23
  %334 = fadd double %14, %15
  %335 = fcmp olt double %24, 0.000000e+00
  %336 = select i1 %335, double -1.000000e+00, double 1.000000e+00
  %337 = fneg double %336
  %338 = call double @llvm.fmuladd.f64(double %336, double %27, double %26)
  %339 = fmul double %338, 5.000000e-01
  %340 = fcmp ogt double %339, %334
  br i1 %340, label %341, label %343

341:                                              ; preds = %333
  %342 = fneg double %334
  br label %347

343:                                              ; preds = %333
  %344 = fneg double %339
  %345 = fcmp olt double %334, %344
  br i1 %345, label %346, label %347

346:                                              ; preds = %343
  br label %347

347:                                              ; preds = %343, %346, %341
  %.0 = phi double [ %342, %341 ], [ %334, %346 ], [ %344, %343 ]
  %348 = fmul double %.0, %337
  %349 = fmul double %15, %348
  %350 = fdiv double %349, %334
  %351 = call double @llvm.fmuladd.f64(double %336, double %350, double %.0)
  %352 = call double @llvm.fmuladd.f64(double %339, double 2.000000e+00, double %.0)
  %353 = call double @llvm.fmuladd.f64(double %.0, double %352, double %29)
  br label %354

354:                                              ; preds = %139, %157, %171, %166, %148, %115, %129, %124, %191, %208, %213, %200, %182, %63, %77, %72, %48, %97, %102, %88, %296, %314, %327, %322, %305, %238, %243, %229, %262, %280, %285, %271, %253, %347
  %.0449 = phi double [ %58, %48 ], [ %69, %63 ], [ %76, %72 ], [ %82, %77 ], [ %94, %88 ], [ %101, %97 ], [ %107, %102 ], [ %121, %115 ], [ %128, %124 ], [ %134, %129 ], [ %145, %139 ], [ %152, %148 ], [ %163, %157 ], [ %170, %166 ], [ %176, %171 ], [ %188, %182 ], [ %195, %191 ], [ %205, %200 ], [ %212, %208 ], [ %218, %213 ], [ %235, %229 ], [ %242, %238 ], [ %248, %243 ], [ %258, %253 ], [ %266, %262 ], [ %277, %271 ], [ %284, %280 ], [ %290, %285 ], [ %301, %296 ], [ %309, %305 ], [ %319, %314 ], [ %326, %322 ], [ %332, %327 ], [ %353, %347 ]
  %.0448 = phi double [ %51, %48 ], [ %15, %63 ], [ %15, %72 ], [ %15, %77 ], [ %84, %88 ], [ %84, %97 ], [ %84, %102 ], [ %116, %115 ], [ %113, %124 ], [ %15, %129 ], [ %15, %139 ], [ %15, %148 ], [ %158, %157 ], [ %155, %166 ], [ %15, %171 ], [ %178, %182 ], [ %178, %191 ], [ %15, %200 ], [ %198, %208 ], [ %178, %213 ], [ %230, %229 ], [ %227, %238 ], [ %15, %243 ], [ %15, %253 ], [ %15, %262 ], [ %272, %271 ], [ %269, %280 ], [ %15, %285 ], [ %292, %296 ], [ %292, %305 ], [ %292, %314 ], [ %312, %322 ], [ %15, %327 ], [ %350, %347 ]
  %.0447 = phi double [ %50, %48 ], [ %64, %63 ], [ %61, %72 ], [ %14, %77 ], [ %89, %88 ], [ %86, %97 ], [ %14, %102 ], [ %14, %115 ], [ %14, %124 ], [ %14, %129 ], [ %140, %139 ], [ %137, %148 ], [ %14, %157 ], [ %14, %166 ], [ %14, %171 ], [ %183, %182 ], [ %180, %191 ], [ %14, %200 ], [ %14, %208 ], [ %14, %213 ], [ %225, %229 ], [ %225, %238 ], [ %225, %243 ], [ %14, %253 ], [ %251, %262 ], [ %260, %271 ], [ %260, %280 ], [ %260, %285 ], [ %14, %296 ], [ %294, %305 ], [ %303, %314 ], [ %303, %322 ], [ %303, %327 ], [ %351, %347 ]
  %355 = icmp ne ptr %6, null
  %356 = icmp ne ptr %7, null
  %or.cond = or i1 %355, %356
  br i1 %or.cond, label %357, label %358

357:                                              ; preds = %354
  call void @Vec3d_constMulAndAdd(ptr noundef nonnull %17, ptr noundef nonnull %12, ptr noundef %1, double noundef %.0447) #4
  call void @Vec3d_constMulAndAdd(ptr noundef nonnull %19, ptr noundef nonnull %13, ptr noundef %4, double noundef %.0448) #4
  br label %358

358:                                              ; preds = %354, %357
  %359 = fcmp olt double %.0449, 0.000000e+00
  %360 = select i1 %359, double 0.000000e+00, double %.0449
  br label %361

361:                                              ; preds = %358, %21
  %.0446 = phi double [ %22, %21 ], [ %360, %358 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #4
  ret double %.0446
}

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fabs.f64(double) #3

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


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