; LLVM IR from Slingshot-Physics/slingshot-community :: common/geometry/src (segment)

; 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.Vector3 = type { [3 x float] }
%"struct.geometry::types::segmentClosestPoints_t" = type { i32, [2 x %class.Vector3], [2 x %class.Vector3] }
%"struct.geometry::types::segment_t" = type { [2 x %class.Vector3] }
%"struct.geometry::types::plane_t" = type { %class.Vector3, %class.Vector3 }
%"struct.geometry::types::clippedSegment_t" = type { i8, [2 x %class.Vector3] }
%"struct.geometry::types::aabb_t" = type { %class.Vector3, %class.Vector3 }

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7Vector3miERKS_(ptr dead_on_unwind noalias writable sret(%class.Vector3) align 4, ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK7Vector316magnitudeSquaredEv(ptr noundef nonnull align 4 dereferenceable(12)) #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7Vector3plERKS_(ptr dead_on_unwind noalias writable sret(%class.Vector3) align 4, ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZN7Vector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8geometry7segment22closestPointsToSegmentERK7Vector3S3_S3_S3_f(ptr dead_on_unwind noalias writable sret(%"struct.geometry::types::segmentClosestPoints_t") align 4, ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), float noundef) #1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8geometry5types22segmentClosestPoints_tC2Ev(ptr noundef nonnull align 4 dereferenceable(52)) unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7Vector3C2ERKS_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8geometry7segment20closestPointsToPlaneERK7Vector3S3_RKNS_5types7plane_tE(ptr dead_on_unwind noalias writable sret(%"struct.geometry::types::segmentClosestPoints_t") align 4, ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(24)) #1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN8geometry7segment19closestPointsToAabbERK7Vector3S3_RKNS_5types6aabb_tE(ptr dead_on_unwind noalias writable sret(%"struct.geometry::types::segmentClosestPoints_t") align 4 %0, ptr noundef nonnull align 4 dereferenceable(12) %1, ptr noundef nonnull align 4 dereferenceable(12) %2, ptr noundef nonnull align 4 dereferenceable(24) %3) #1 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca float, align 4
  %10 = alloca %class.Vector3, align 4
  %11 = alloca %class.Vector3, align 4
  %12 = alloca %class.Vector3, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca [12 x %"struct.geometry::types::segment_t"], align 16
  %17 = alloca i32, align 4
  %18 = alloca %"struct.geometry::types::segmentClosestPoints_t", align 4
  %19 = alloca float, align 4
  %20 = alloca %class.Vector3, align 4
  %21 = alloca %class.Vector3, align 4
  %22 = alloca %class.Vector3, align 4
  %23 = alloca float, align 4
  %24 = alloca i32, align 4
  %25 = alloca [6 x %"struct.geometry::types::plane_t"], align 16
  %26 = alloca i32, align 4
  %27 = alloca %"struct.geometry::types::segmentClosestPoints_t", align 4
  %28 = alloca float, align 4
  %29 = alloca %class.Vector3, align 4
  %30 = alloca i32, align 4
  %31 = alloca ptr, align 8
  %32 = alloca %"struct.geometry::types::clippedSegment_t", align 4
  %33 = alloca %"struct.geometry::types::clippedSegment_t", align 4
  %34 = alloca i32, align 4
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca float, align 4
  %38 = alloca %class.Vector3, align 4
  store ptr %0, ptr %5, align 8
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #5
  store float 0x47EFFFFFE0000000, ptr %9, align 4, !tbaa !9
  call void @_ZN8geometry5types22segmentClosestPoints_tC2Ev(ptr noundef nonnull align 4 dereferenceable(52) %0)
  call void @llvm.lifetime.start.p0(i64 12, ptr %10) #5
  %39 = load ptr, ptr %8, align 8, !tbaa !5
  %40 = getelementptr inbounds %"struct.geometry::types::aabb_t", ptr %39, i32 0, i32 1
  call void @_ZN7Vector3C2ERKS_(ptr noundef nonnull align 4 dereferenceable(12) %10, ptr noundef nonnull align 4 dereferenceable(12) %40)
  call void @llvm.lifetime.start.p0(i64 12, ptr %11) #5
  %41 = load ptr, ptr %8, align 8, !tbaa !5
  %42 = getelementptr inbounds %"struct.geometry::types::aabb_t", ptr %41, i32 0, i32 0
  call void @_ZN7Vector3C2ERKS_(ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %42)
  call void @llvm.lifetime.start.p0(i64 12, ptr %12) #5
  %43 = load ptr, ptr %6, align 8, !tbaa !5
  %44 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZNK7Vector3miERKS_(ptr dead_on_unwind writable sret(%class.Vector3) align 4 %12, ptr noundef nonnull align 4 dereferenceable(12) %43, ptr noundef nonnull align 4 dereferenceable(12) %44)
  %45 = call noundef float @_ZNK7Vector39magnitudeEv(ptr noundef nonnull align 4 dereferenceable(12) %12)
  %46 = fcmp olt float %45, 0x3E7AD7F2A0000000
  call void @llvm.lifetime.end.p0(i64 12, ptr %12) #5
  br i1 %46, label %47, label %76

47:                                               ; preds = %4
  %48 = getelementptr inbounds %"struct.geometry::types::segmentClosestPoints_t", ptr %0, i32 0, i32 0
  store i32 1, ptr %48, align 4, !tbaa !11
  %49 = load ptr, ptr %6, align 8, !tbaa !5
  %50 = getelementptr inbounds %"struct.geometry::types::segmentClosestPoints_t", ptr %0, i32 0, i32 1
  %51 = getelementptr inbounds [2 x %class.Vector3], ptr %50, i64 0, i64 0
  %52 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN7Vector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %51, ptr noundef nonnull align 4 dereferenceable(12) %49)
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  store i32 0, ptr %13, align 4, !tbaa !14
  br label %53

53:                                               ; preds = %72, %47
  %54 = load i32, ptr %13, align 4, !tbaa !14
  %55 = icmp slt i32 %54, 3
  br i1 %55, label %57, label %56

56:                                               ; preds = %53
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  br label %75

57:                                               ; preds = %53
  %58 = load ptr, ptr %6, align 8, !tbaa !5
  %59 = load i32, ptr %13, align 4, !tbaa !14
  %60 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %58, i32 noundef %59)
  %61 = load i32, ptr %13, align 4, !tbaa !14
  %62 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef %61)
  %63 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %60, ptr noundef nonnull align 4 dereferenceable(4) %62)
  %64 = load i32, ptr %13, align 4, !tbaa !14
  %65 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef %64)
  %66 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %63, ptr noundef nonnull align 4 dereferenceable(4) %65)
  %67 = load float, ptr %66, align 4, !tbaa !9
  %68 = getelementptr inbounds %"struct.geometry::types::segmentClosestPoints_t", ptr %0, i32 0, i32 2
  %69 = getelementptr inbounds [2 x %class.Vector3], ptr %68, i64 0, i64 0
  %70 = load i32, ptr %13, align 4, !tbaa !14
  %71 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %69, i32 noundef %70)
  store float %67, ptr %71, align 4, !tbaa !9
  br label %72

72:                                               ; preds = %57
  %73 = load i32, ptr %13, align 4, !tbaa !14
  %74 = add nsw i32 %73, 1
  store i32 %74, ptr %13, align 4, !tbaa !14
  br label %53, !llvm.loop !15

75:                                               ; preds = %56
  store i32 1, ptr %14, align 4
  br label %626

76:                                               ; preds = %4
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  store i32 12, ptr %15, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 288, ptr %16) #5
  %77 = getelementptr inbounds %"struct.geometry::types::segment_t", ptr %16, i32 0, i32 0
  %78 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 0)
  %79 = load float, ptr %78, align 4, !tbaa !9
  %80 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 1)
  %81 = load float, ptr %80, align 4, !tbaa !9
  %82 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 2)
  %83 = load float, ptr %82, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %77, float noundef %79, float noundef %81, float noundef %83)
  %84 = getelementptr inbounds %class.Vector3, ptr %77, i64 1
  %85 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 0)
  %86 = load float, ptr %85, align 4, !tbaa !9
  %87 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 1)
  %88 = load float, ptr %87, align 4, !tbaa !9
  %89 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 2)
  %90 = load float, ptr %89, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %84, float noundef %86, float noundef %88, float noundef %90)
  %91 = getelementptr inbounds %"struct.geometry::types::segment_t", ptr %16, i64 1
  %92 = getelementptr inbounds %"struct.geometry::types::segment_t", ptr %91, i32 0, i32 0
  %93 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 0)
  %94 = load float, ptr %93, align 4, !tbaa !9
  %95 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 1)
  %96 = load float, ptr %95, align 4, !tbaa !9
  %97 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 2)
  %98 = load float, ptr %97, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %92, float noundef %94, float noundef %96, float noundef %98)
  %99 = getelementptr inbounds %class.Vector3, ptr %92, i64 1
  %100 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 0)
  %101 = load float, ptr %100, align 4, !tbaa !9
  %102 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 1)
  %103 = load float, ptr %102, align 4, !tbaa !9
  %104 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 2)
  %105 = load float, ptr %104, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %99, float noundef %101, float noundef %103, float noundef %105)
  %106 = getelementptr inbounds %"struct.geometry::types::segment_t", ptr %16, i64 2
  %107 = getelementptr inbounds %"struct.geometry::types::segment_t", ptr %106, i32 0, i32 0
  %108 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 0)
  %109 = load float, ptr %108, align 4, !tbaa !9
  %110 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 1)
  %111 = load float, ptr %110, align 4, !tbaa !9
  %112 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 2)
  %113 = load float, ptr %112, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %107, float noundef %109, float noundef %111, float noundef %113)
  %114 = getelementptr inbounds %class.Vector3, ptr %107, i64 1
  %115 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 0)
  %116 = load float, ptr %115, align 4, !tbaa !9
  %117 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 1)
  %118 = load float, ptr %117, align 4, !tbaa !9
  %119 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 2)
  %120 = load float, ptr %119, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %114, float noundef %116, float noundef %118, float noundef %120)
  %121 = getelementptr inbounds %"struct.geometry::types::segment_t", ptr %16, i64 3
  %122 = getelementptr inbounds %"struct.geometry::types::segment_t", ptr %121, i32 0, i32 0
  %123 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 0)
  %124 = load float, ptr %123, align 4, !tbaa !9
  %125 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 1)
  %126 = load float, ptr %125, align 4, !tbaa !9
  %127 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 2)
  %128 = load float, ptr %127, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %122, float noundef %124, float noundef %126, float noundef %128)
  %129 = getelementptr inbounds %class.Vector3, ptr %122, i64 1
  %130 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 0)
  %131 = load float, ptr %130, align 4, !tbaa !9
  %132 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 1)
  %133 = load float, ptr %132, align 4, !tbaa !9
  %134 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 2)
  %135 = load float, ptr %134, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %129, float noundef %131, float noundef %133, float noundef %135)
  %136 = getelementptr inbounds %"struct.geometry::types::segment_t", ptr %16, i64 4
  %137 = getelementptr inbounds %"struct.geometry::types::segment_t", ptr %136, i32 0, i32 0
  %138 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 0)
  %139 = load float, ptr %138, align 4, !tbaa !9
  %140 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 1)
  %141 = load float, ptr %140, align 4, !tbaa !9
  %142 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 2)
  %143 = load float, ptr %142, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %137, float noundef %139, float noundef %141, float noundef %143)
  %144 = getelementptr inbounds %class.Vector3, ptr %137, i64 1
  %145 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 0)
  %146 = load float, ptr %145, align 4, !tbaa !9
  %147 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 1)
  %148 = load float, ptr %147, align 4, !tbaa !9
  %149 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 2)
  %150 = load float, ptr %149, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %144, float noundef %146, float noundef %148, float noundef %150)
  %151 = getelementptr inbounds %"struct.geometry::types::segment_t", ptr %16, i64 5
  %152 = getelementptr inbounds %"struct.geometry::types::segment_t", ptr %151, i32 0, i32 0
  %153 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 0)
  %154 = load float, ptr %153, align 4, !tbaa !9
  %155 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 1)
  %156 = load float, ptr %155, align 4, !tbaa !9
  %157 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 2)
  %158 = load float, ptr %157, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %152, float noundef %154, float noundef %156, float noundef %158)
  %159 = getelementptr inbounds %class.Vector3, ptr %152, i64 1
  %160 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 0)
  %161 = load float, ptr %160, align 4, !tbaa !9
  %162 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 1)
  %163 = load float, ptr %162, align 4, !tbaa !9
  %164 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 2)
  %165 = load float, ptr %164, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %159, float noundef %161, float noundef %163, float noundef %165)
  %166 = getelementptr inbounds %"struct.geometry::types::segment_t", ptr %16, i64 6
  %167 = getelementptr inbounds %"struct.geometry::types::segment_t", ptr %166, i32 0, i32 0
  %168 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 0)
  %169 = load float, ptr %168, align 4, !tbaa !9
  %170 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 1)
  %171 = load float, ptr %170, align 4, !tbaa !9
  %172 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 2)
  %173 = load float, ptr %172, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %167, float noundef %169, float noundef %171, float noundef %173)
  %174 = getelementptr inbounds %class.Vector3, ptr %167, i64 1
  %175 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 0)
  %176 = load float, ptr %175, align 4, !tbaa !9
  %177 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 1)
  %178 = load float, ptr %177, align 4, !tbaa !9
  %179 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 2)
  %180 = load float, ptr %179, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %174, float noundef %176, float noundef %178, float noundef %180)
  %181 = getelementptr inbounds %"struct.geometry::types::segment_t", ptr %16, i64 7
  %182 = getelementptr inbounds %"struct.geometry::types::segment_t", ptr %181, i32 0, i32 0
  %183 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 0)
  %184 = load float, ptr %183, align 4, !tbaa !9
  %185 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 1)
  %186 = load float, ptr %185, align 4, !tbaa !9
  %187 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 2)
  %188 = load float, ptr %187, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %182, float noundef %184, float noundef %186, float noundef %188)
  %189 = getelementptr inbounds %class.Vector3, ptr %182, i64 1
  %190 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 0)
  %191 = load float, ptr %190, align 4, !tbaa !9
  %192 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 1)
  %193 = load float, ptr %192, align 4, !tbaa !9
  %194 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 2)
  %195 = load float, ptr %194, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %189, float noundef %191, float noundef %193, float noundef %195)
  %196 = getelementptr inbounds %"struct.geometry::types::segment_t", ptr %16, i64 8
  %197 = getelementptr inbounds %"struct.geometry::types::segment_t", ptr %196, i32 0, i32 0
  %198 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 0)
  %199 = load float, ptr %198, align 4, !tbaa !9
  %200 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 1)
  %201 = load float, ptr %200, align 4, !tbaa !9
  %202 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 2)
  %203 = load float, ptr %202, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %197, float noundef %199, float noundef %201, float noundef %203)
  %204 = getelementptr inbounds %class.Vector3, ptr %197, i64 1
  %205 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 0)
  %206 = load float, ptr %205, align 4, !tbaa !9
  %207 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 1)
  %208 = load float, ptr %207, align 4, !tbaa !9
  %209 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 2)
  %210 = load float, ptr %209, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %204, float noundef %206, float noundef %208, float noundef %210)
  %211 = getelementptr inbounds %"struct.geometry::types::segment_t", ptr %16, i64 9
  %212 = getelementptr inbounds %"struct.geometry::types::segment_t", ptr %211, i32 0, i32 0
  %213 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 0)
  %214 = load float, ptr %213, align 4, !tbaa !9
  %215 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 1)
  %216 = load float, ptr %215, align 4, !tbaa !9
  %217 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 2)
  %218 = load float, ptr %217, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %212, float noundef %214, float noundef %216, float noundef %218)
  %219 = getelementptr inbounds %class.Vector3, ptr %212, i64 1
  %220 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 0)
  %221 = load float, ptr %220, align 4, !tbaa !9
  %222 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 1)
  %223 = load float, ptr %222, align 4, !tbaa !9
  %224 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 2)
  %225 = load float, ptr %224, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %219, float noundef %221, float noundef %223, float noundef %225)
  %226 = getelementptr inbounds %"struct.geometry::types::segment_t", ptr %16, i64 10
  %227 = getelementptr inbounds %"struct.geometry::types::segment_t", ptr %226, i32 0, i32 0
  %228 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 0)
  %229 = load float, ptr %228, align 4, !tbaa !9
  %230 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 1)
  %231 = load float, ptr %230, align 4, !tbaa !9
  %232 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 2)
  %233 = load float, ptr %232, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %227, float noundef %229, float noundef %231, float noundef %233)
  %234 = getelementptr inbounds %class.Vector3, ptr %227, i64 1
  %235 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 0)
  %236 = load float, ptr %235, align 4, !tbaa !9
  %237 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 1)
  %238 = load float, ptr %237, align 4, !tbaa !9
  %239 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 2)
  %240 = load float, ptr %239, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %234, float noundef %236, float noundef %238, float noundef %240)
  %241 = getelementptr inbounds %"struct.geometry::types::segment_t", ptr %16, i64 11
  %242 = getelementptr inbounds %"struct.geometry::types::segment_t", ptr %241, i32 0, i32 0
  %243 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 0)
  %244 = load float, ptr %243, align 4, !tbaa !9
  %245 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 1)
  %246 = load float, ptr %245, align 4, !tbaa !9
  %247 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 2)
  %248 = load float, ptr %247, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %242, float noundef %244, float noundef %246, float noundef %248)
  %249 = getelementptr inbounds %class.Vector3, ptr %242, i64 1
  %250 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 0)
  %251 = load float, ptr %250, align 4, !tbaa !9
  %252 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 1)
  %253 = load float, ptr %252, align 4, !tbaa !9
  %254 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 2)
  %255 = load float, ptr %254, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %249, float noundef %251, float noundef %253, float noundef %255)
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  store i32 0, ptr %17, align 4, !tbaa !14
  br label %256

256:                                              ; preds = %292, %76
  %257 = load i32, ptr %17, align 4, !tbaa !14
  %258 = icmp slt i32 %257, 12
  br i1 %258, label %260, label %259

259:                                              ; preds = %256
  store i32 5, ptr %14, align 4
  br label %295

260:                                              ; preds = %256
  call void @llvm.lifetime.start.p0(i64 52, ptr %18) #5
  %261 = load ptr, ptr %6, align 8, !tbaa !5
  %262 = load ptr, ptr %7, align 8, !tbaa !5
  %263 = load i32, ptr %17, align 4, !tbaa !14
  %264 = sext i32 %263 to i64
  %265 = getelementptr inbounds [12 x %"struct.geometry::types::segment_t"], ptr %16, i64 0, i64 %264
  %266 = getelementptr inbounds %"struct.geometry::types::segment_t", ptr %265, i32 0, i32 0
  %267 = getelementptr inbounds [2 x %class.Vector3], ptr %266, i64 0, i64 0
  %268 = load i32, ptr %17, align 4, !tbaa !14
  %269 = sext i32 %268 to i64
  %270 = getelementptr inbounds [12 x %"struct.geometry::types::segment_t"], ptr %16, i64 0, i64 %269
  %271 = getelementptr inbounds %"struct.geometry::types::segment_t", ptr %270, i32 0, i32 0
  %272 = getelementptr inbounds [2 x %class.Vector3], ptr %271, i64 0, i64 1
  call void @_ZN8geometry7segment22closestPointsToSegmentERK7Vector3S3_S3_S3_f(ptr dead_on_unwind writable sret(%"struct.geometry::types::segmentClosestPoints_t") align 4 %18, ptr noundef nonnull align 4 dereferenceable(12) %261, ptr noundef nonnull align 4 dereferenceable(12) %262, ptr noundef nonnull align 4 dereferenceable(12) %267, ptr noundef nonnull align 4 dereferenceable(12) %272, float noundef 0x3EB0C6F7A0000000)
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %20) #5
  %273 = getelementptr inbounds %"struct.geometry::types::segmentClosestPoints_t", ptr %18, i32 0, i32 1
  %274 = getelementptr inbounds [2 x %class.Vector3], ptr %273, i64 0, i64 0
  %275 = getelementptr inbounds %"struct.geometry::types::segmentClosestPoints_t", ptr %18, i32 0, i32 2
  %276 = getelementptr inbounds [2 x %class.Vector3], ptr %275, i64 0, i64 0
  call void @_ZNK7Vector3miERKS_(ptr dead_on_unwind writable sret(%class.Vector3) align 4 %20, ptr noundef nonnull align 4 dereferenceable(12) %274, ptr noundef nonnull align 4 dereferenceable(12) %276)
  %277 = call noundef float @_ZNK7Vector316magnitudeSquaredEv(ptr noundef nonnull align 4 dereferenceable(12) %20)
  call void @llvm.lifetime.end.p0(i64 12, ptr %20) #5
  store float %277, ptr %19, align 4, !tbaa !9
  %278 = load float, ptr %19, align 4, !tbaa !9
  %279 = load float, ptr %9, align 4, !tbaa !9
  %280 = fcmp olt float %278, %279
  br i1 %280, label %281, label %284

281:                                              ; preds = %260
  %282 = load float, ptr %19, align 4, !tbaa !9
  store float %282, ptr %9, align 4, !tbaa !9
  %283 = call noundef nonnull align 4 dereferenceable(52) ptr @_ZN8geometry5types22segmentClosestPoints_taSERKS1_(ptr noundef nonnull align 4 dereferenceable(52) %0, ptr noundef nonnull align 4 dereferenceable(52) %18)
  br label %284

284:                                              ; preds = %281, %260
  %285 = load float, ptr %19, align 4, !tbaa !9
  %286 = fcmp olt float %285, 0x3E7AD7F2A0000000
  br i1 %286, label %287, label %288

287:                                              ; preds = %284
  store i32 5, ptr %14, align 4
  br label %289

288:                                              ; preds = %284
  store i32 0, ptr %14, align 4
  br label %289

289:                                              ; preds = %288, %287
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 52, ptr %18) #5
  %290 = load i32, ptr %14, align 4
  switch i32 %290, label %295 [
    i32 0, label %291
  ]

291:                                              ; preds = %289
  br label %292

292:                                              ; preds = %291
  %293 = load i32, ptr %17, align 4, !tbaa !14
  %294 = add nsw i32 %293, 1
  store i32 %294, ptr %17, align 4, !tbaa !14
  br label %256, !llvm.loop !17

295:                                              ; preds = %289, %259
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  br label %296

296:                                              ; preds = %295
  call void @llvm.lifetime.start.p0(i64 12, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %22) #5
  call void @_ZNK7Vector3plERKS_(ptr dead_on_unwind writable sret(%class.Vector3) align 4 %22, ptr noundef nonnull align 4 dereferenceable(12) %10, ptr noundef nonnull align 4 dereferenceable(12) %11)
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #5
  store float 2.000000e+00, ptr %23, align 4, !tbaa !9
  call void @_ZNK7Vector3dvERKf(ptr dead_on_unwind writable sret(%class.Vector3) align 4 %21, ptr noundef nonnull align 4 dereferenceable(12) %22, ptr noundef nonnull align 4 dereferenceable(4) %23)
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #5
  store i32 6, ptr %24, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 144, ptr %25) #5
  %297 = getelementptr inbounds %"struct.geometry::types::plane_t", ptr %25, i32 0, i32 0
  %298 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 0)
  %299 = load float, ptr %298, align 4, !tbaa !9
  %300 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %21, i32 noundef 1)
  %301 = load float, ptr %300, align 4, !tbaa !9
  %302 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %21, i32 noundef 2)
  %303 = load float, ptr %302, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %297, float noundef %299, float noundef %301, float noundef %303)
  %304 = getelementptr inbounds %"struct.geometry::types::plane_t", ptr %25, i32 0, i32 1
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %304, float noundef -1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %305 = getelementptr inbounds %"struct.geometry::types::plane_t", ptr %25, i64 1
  %306 = getelementptr inbounds %"struct.geometry::types::plane_t", ptr %305, i32 0, i32 0
  %307 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 0)
  %308 = load float, ptr %307, align 4, !tbaa !9
  %309 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %21, i32 noundef 1)
  %310 = load float, ptr %309, align 4, !tbaa !9
  %311 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %21, i32 noundef 2)
  %312 = load float, ptr %311, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %306, float noundef %308, float noundef %310, float noundef %312)
  %313 = getelementptr inbounds %"struct.geometry::types::plane_t", ptr %305, i32 0, i32 1
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %313, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %314 = getelementptr inbounds %"struct.geometry::types::plane_t", ptr %25, i64 2
  %315 = getelementptr inbounds %"struct.geometry::types::plane_t", ptr %314, i32 0, i32 0
  %316 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %21, i32 noundef 0)
  %317 = load float, ptr %316, align 4, !tbaa !9
  %318 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 1)
  %319 = load float, ptr %318, align 4, !tbaa !9
  %320 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %21, i32 noundef 2)
  %321 = load float, ptr %320, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %315, float noundef %317, float noundef %319, float noundef %321)
  %322 = getelementptr inbounds %"struct.geometry::types::plane_t", ptr %314, i32 0, i32 1
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %322, float noundef 0.000000e+00, float noundef -1.000000e+00, float noundef 0.000000e+00)
  %323 = getelementptr inbounds %"struct.geometry::types::plane_t", ptr %25, i64 3
  %324 = getelementptr inbounds %"struct.geometry::types::plane_t", ptr %323, i32 0, i32 0
  %325 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %21, i32 noundef 0)
  %326 = load float, ptr %325, align 4, !tbaa !9
  %327 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 1)
  %328 = load float, ptr %327, align 4, !tbaa !9
  %329 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %21, i32 noundef 2)
  %330 = load float, ptr %329, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %324, float noundef %326, float noundef %328, float noundef %330)
  %331 = getelementptr inbounds %"struct.geometry::types::plane_t", ptr %323, i32 0, i32 1
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %331, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
  %332 = getelementptr inbounds %"struct.geometry::types::plane_t", ptr %25, i64 4
  %333 = getelementptr inbounds %"struct.geometry::types::plane_t", ptr %332, i32 0, i32 0
  %334 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %21, i32 noundef 0)
  %335 = load float, ptr %334, align 4, !tbaa !9
  %336 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %21, i32 noundef 1)
  %337 = load float, ptr %336, align 4, !tbaa !9
  %338 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef 2)
  %339 = load float, ptr %338, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %333, float noundef %335, float noundef %337, float noundef %339)
  %340 = getelementptr inbounds %"struct.geometry::types::plane_t", ptr %332, i32 0, i32 1
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %340, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef -1.000000e+00)
  %341 = getelementptr inbounds %"struct.geometry::types::plane_t", ptr %25, i64 5
  %342 = getelementptr inbounds %"struct.geometry::types::plane_t", ptr %341, i32 0, i32 0
  %343 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %21, i32 noundef 0)
  %344 = load float, ptr %343, align 4, !tbaa !9
  %345 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %21, i32 noundef 1)
  %346 = load float, ptr %345, align 4, !tbaa !9
  %347 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 2)
  %348 = load float, ptr %347, align 4, !tbaa !9
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %342, float noundef %344, float noundef %346, float noundef %348)
  %349 = getelementptr inbounds %"struct.geometry::types::plane_t", ptr %341, i32 0, i32 1
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %349, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.000000e+00)
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #5
  store i32 0, ptr %26, align 4, !tbaa !14
  br label %350

350:                                              ; preds = %621, %296
  %351 = load i32, ptr %26, align 4, !tbaa !14
  %352 = icmp slt i32 %351, 6
  br i1 %352, label %354, label %353

353:                                              ; preds = %350
  store i32 8, ptr %14, align 4
  br label %624

354:                                              ; preds = %350
  call void @llvm.lifetime.start.p0(i64 52, ptr %27) #5
  %355 = load ptr, ptr %6, align 8, !tbaa !5
  %356 = load ptr, ptr %7, align 8, !tbaa !5
  %357 = load i32, ptr %26, align 4, !tbaa !14
  %358 = sext i32 %357 to i64
  %359 = getelementptr inbounds [6 x %"struct.geometry::types::plane_t"], ptr %25, i64 0, i64 %358
  call void @_ZN8geometry7segment20closestPointsToPlaneERK7Vector3S3_RKNS_5types7plane_tE(ptr dead_on_unwind writable sret(%"struct.geometry::types::segmentClosestPoints_t") align 4 %27, ptr noundef nonnull align 4 dereferenceable(12) %355, ptr noundef nonnull align 4 dereferenceable(12) %356, ptr noundef nonnull align 4 dereferenceable(24) %359)
  %360 = getelementptr inbounds %"struct.geometry::types::segmentClosestPoints_t", ptr %27, i32 0, i32 0
  %361 = load i32, ptr %360, align 4, !tbaa !11
  %362 = icmp eq i32 %361, 1
  br i1 %362, label %363, label %440

363:                                              ; preds = %354
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %29) #5
  %364 = getelementptr inbounds %"struct.geometry::types::segmentClosestPoints_t", ptr %27, i32 0, i32 2
  %365 = getelementptr inbounds [2 x %class.Vector3], ptr %364, i64 0, i64 0
  %366 = getelementptr inbounds %"struct.geometry::types::segmentClosestPoints_t", ptr %27, i32 0, i32 1
  %367 = getelementptr inbounds [2 x %class.Vector3], ptr %366, i64 0, i64 0
  call void @_ZNK7Vector3miERKS_(ptr dead_on_unwind writable sret(%class.Vector3) align 4 %29, ptr noundef nonnull align 4 dereferenceable(12) %365, ptr noundef nonnull align 4 dereferenceable(12) %367)
  %368 = call noundef float @_ZNK7Vector316magnitudeSquaredEv(ptr noundef nonnull align 4 dereferenceable(12) %29)
  call void @llvm.lifetime.end.p0(i64 12, ptr %29) #5
  store float %368, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #5
  %369 = load i32, ptr %26, align 4, !tbaa !14
  %370 = sdiv i32 %369, 2
  store i32 %370, ptr %30, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #5
  %371 = getelementptr inbounds %"struct.geometry::types::segmentClosestPoints_t", ptr %27, i32 0, i32 2
  %372 = getelementptr inbounds [2 x %class.Vector3], ptr %371, i64 0, i64 0
  store ptr %372, ptr %31, align 8, !tbaa !5
  %373 = load ptr, ptr %31, align 8, !tbaa !5
  %374 = load i32, ptr %30, align 4, !tbaa !14
  %375 = add nsw i32 %374, 1
  %376 = srem i32 %375, 3
  %377 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %373, i32 noundef %376)
  %378 = load float, ptr %377, align 4, !tbaa !9
  %379 = load i32, ptr %30, align 4, !tbaa !14
  %380 = add nsw i32 %379, 1
  %381 = srem i32 %380, 3
  %382 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef %381)
  %383 = load float, ptr %382, align 4, !tbaa !9
  %384 = fcmp olt float %378, %383
  br i1 %384, label %424, label %385

385:                                              ; preds = %363
  %386 = load ptr, ptr %31, align 8, !tbaa !5
  %387 = load i32, ptr %30, align 4, !tbaa !14
  %388 = add nsw i32 %387, 1
  %389 = srem i32 %388, 3
  %390 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %386, i32 noundef %389)
  %391 = load float, ptr %390, align 4, !tbaa !9
  %392 = load i32, ptr %30, align 4, !tbaa !14
  %393 = add nsw i32 %392, 1
  %394 = srem i32 %393, 3
  %395 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef %394)
  %396 = load float, ptr %395, align 4, !tbaa !9
  %397 = fcmp ogt float %391, %396
  br i1 %397, label %424, label %398

398:                                              ; preds = %385
  %399 = load ptr, ptr %31, align 8, !tbaa !5
  %400 = load i32, ptr %30, align 4, !tbaa !14
  %401 = add nsw i32 %400, 2
  %402 = srem i32 %401, 3
  %403 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %399, i32 noundef %402)
  %404 = load float, ptr %403, align 4, !tbaa !9
  %405 = load i32, ptr %30, align 4, !tbaa !14
  %406 = add nsw i32 %405, 2
  %407 = srem i32 %406, 3
  %408 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef %407)
  %409 = load float, ptr %408, align 4, !tbaa !9
  %410 = fcmp olt float %404, %409
  br i1 %410, label %424, label %411

411:                                              ; preds = %398
  %412 = load ptr, ptr %31, align 8, !tbaa !5
  %413 = load i32, ptr %30, align 4, !tbaa !14
  %414 = add nsw i32 %413, 2
  %415 = srem i32 %414, 3
  %416 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %412, i32 noundef %415)
  %417 = load float, ptr %416, align 4, !tbaa !9
  %418 = load i32, ptr %30, align 4, !tbaa !14
  %419 = add nsw i32 %418, 2
  %420 = srem i32 %419, 3
  %421 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef %420)
  %422 = load float, ptr %421, align 4, !tbaa !9
  %423 = fcmp ogt float %417, %422
  br i1 %423, label %424, label %425

424:                                              ; preds = %411, %398, %385, %363
  store i32 10, ptr %14, align 4
  br label %437

425:                                              ; preds = %411
  %426 = load float, ptr %28, align 4, !tbaa !9
  %427 = load float, ptr %9, align 4, !tbaa !9
  %428 = fcmp olt float %426, %427
  br i1 %428, label %429, label %432

429:                                              ; preds = %425
  %430 = load float, ptr %28, align 4, !tbaa !9
  store float %430, ptr %9, align 4, !tbaa !9
  %431 = call noundef nonnull align 4 dereferenceable(52) ptr @_ZN8geometry5types22segmentClosestPoints_taSERKS1_(ptr noundef nonnull align 4 dereferenceable(52) %0, ptr noundef nonnull align 4 dereferenceable(52) %27)
  br label %432

432:                                              ; preds = %429, %425
  %433 = load float, ptr %28, align 4, !tbaa !9
  %434 = fcmp olt float %433, 0x3E7AD7F2A0000000
  br i1 %434, label %435, label %436

435:                                              ; preds = %432
  store i32 8, ptr %14, align 4
  br label %437

436:                                              ; preds = %432
  store i32 0, ptr %14, align 4
  br label %437

437:                                              ; preds = %436, %435, %424
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #5
  %438 = load i32, ptr %14, align 4
  switch i32 %438, label %618 [
    i32 0, label %439
  ]

439:                                              ; preds = %437
  br label %617

440:                                              ; preds = %354
  %441 = getelementptr inbounds %"struct.geometry::types::segmentClosestPoints_t", ptr %27, i32 0, i32 0
  %442 = load i32, ptr %441, align 4, !tbaa !11
  %443 = icmp eq i32 %442, 2
  br i1 %443, label %444, label %616

444:                                              ; preds = %440
  call void @llvm.lifetime.start.p0(i64 28, ptr %32) #5
  %445 = getelementptr inbounds %"struct.geometry::types::segmentClosestPoints_t", ptr %27, i32 0, i32 1
  %446 = getelementptr inbounds [2 x %class.Vector3], ptr %445, i64 0, i64 0
  %447 = getelementptr inbounds %"struct.geometry::types::segmentClosestPoints_t", ptr %27, i32 0, i32 1
  %448 = getelementptr inbounds [2 x %class.Vector3], ptr %447, i64 0, i64 1
  %449 = load ptr, ptr %8, align 8, !tbaa !5
  %450 = load i32, ptr %26, align 4, !tbaa !14
  %451 = sdiv i32 %450, 2
  call void @_ZN8geometry7segment35clipSegmentAgainstAxisAlignedSquareERK7Vector3S3_RKNS_5types6aabb_tEi(ptr dead_on_unwind writable sret(%"struct.geometry::types::clippedSegment_t") align 4 %32, ptr noundef nonnull align 4 dereferenceable(12) %446, ptr noundef nonnull align 4 dereferenceable(12) %448, ptr noundef nonnull align 4 dereferenceable(24) %449, i32 noundef %451)
  %452 = getelementptr inbounds %"struct.geometry::types::clippedSegment_t", ptr %32, i32 0, i32 0
  %453 = load i8, ptr %452, align 4, !tbaa !18, !range !21, !noundef !22
  %454 = trunc i8 %453 to i1
  br i1 %454, label %456, label %455

455:                                              ; preds = %444
  store i32 10, ptr %14, align 4
  br label %613

456:                                              ; preds = %444
  call void @llvm.lifetime.start.p0(i64 28, ptr %33) #5
  %457 = getelementptr inbounds %"struct.geometry::types::segmentClosestPoints_t", ptr %27, i32 0, i32 2
  %458 = getelementptr inbounds [2 x %class.Vector3], ptr %457, i64 0, i64 0
  %459 = getelementptr inbounds %"struct.geometry::types::segmentClosestPoints_t", ptr %27, i32 0, i32 2
  %460 = getelementptr inbounds [2 x %class.Vector3], ptr %459, i64 0, i64 1
  %461 = load ptr, ptr %8, align 8, !tbaa !5
  %462 = load i32, ptr %26, align 4, !tbaa !14
  %463 = sdiv i32 %462, 2
  call void @_ZN8geometry7segment35clipSegmentAgainstAxisAlignedSquareERK7Vector3S3_RKNS_5types6aabb_tEi(ptr dead_on_unwind writable sret(%"struct.geometry::types::clippedSegment_t") align 4 %33, ptr noundef nonnull align 4 dereferenceable(12) %458, ptr noundef nonnull align 4 dereferenceable(12) %460, ptr noundef nonnull align 4 dereferenceable(24) %461, i32 noundef %463)
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #5
  %464 = load i32, ptr %26, align 4, !tbaa !14
  %465 = sdiv i32 %464, 2
  store i32 %465, ptr %34, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #5
  %466 = getelementptr inbounds %"struct.geometry::types::clippedSegment_t", ptr %33, i32 0, i32 1
  %467 = getelementptr inbounds [2 x %class.Vector3], ptr %466, i64 0, i64 0
  store ptr %467, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #5
  %468 = getelementptr inbounds %"struct.geometry::types::clippedSegment_t", ptr %33, i32 0, i32 1
  %469 = getelementptr inbounds [2 x %class.Vector3], ptr %468, i64 0, i64 1
  store ptr %469, ptr %36, align 8, !tbaa !5
  %470 = load ptr, ptr %35, align 8, !tbaa !5
  %471 = load i32, ptr %34, align 4, !tbaa !14
  %472 = add nsw i32 %471, 1
  %473 = srem i32 %472, 3
  %474 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %470, i32 noundef %473)
  %475 = load float, ptr %474, align 4, !tbaa !9
  %476 = load i32, ptr %34, align 4, !tbaa !14
  %477 = add nsw i32 %476, 1
  %478 = srem i32 %477, 3
  %479 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef %478)
  %480 = load float, ptr %479, align 4, !tbaa !9
  %481 = fcmp olt float %475, %480
  br i1 %481, label %573, label %482

482:                                              ; preds = %456
  %483 = load ptr, ptr %35, align 8, !tbaa !5
  %484 = load i32, ptr %34, align 4, !tbaa !14
  %485 = add nsw i32 %484, 1
  %486 = srem i32 %485, 3
  %487 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %483, i32 noundef %486)
  %488 = load float, ptr %487, align 4, !tbaa !9
  %489 = load i32, ptr %34, align 4, !tbaa !14
  %490 = add nsw i32 %489, 1
  %491 = srem i32 %490, 3
  %492 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef %491)
  %493 = load float, ptr %492, align 4, !tbaa !9
  %494 = fcmp ogt float %488, %493
  br i1 %494, label %573, label %495

495:                                              ; preds = %482
  %496 = load ptr, ptr %35, align 8, !tbaa !5
  %497 = load i32, ptr %34, align 4, !tbaa !14
  %498 = add nsw i32 %497, 2
  %499 = srem i32 %498, 3
  %500 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %496, i32 noundef %499)
  %501 = load float, ptr %500, align 4, !tbaa !9
  %502 = load i32, ptr %34, align 4, !tbaa !14
  %503 = add nsw i32 %502, 2
  %504 = srem i32 %503, 3
  %505 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef %504)
  %506 = load float, ptr %505, align 4, !tbaa !9
  %507 = fcmp olt float %501, %506
  br i1 %507, label %573, label %508

508:                                              ; preds = %495
  %509 = load ptr, ptr %35, align 8, !tbaa !5
  %510 = load i32, ptr %34, align 4, !tbaa !14
  %511 = add nsw i32 %510, 2
  %512 = srem i32 %511, 3
  %513 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %509, i32 noundef %512)
  %514 = load float, ptr %513, align 4, !tbaa !9
  %515 = load i32, ptr %34, align 4, !tbaa !14
  %516 = add nsw i32 %515, 2
  %517 = srem i32 %516, 3
  %518 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef %517)
  %519 = load float, ptr %518, align 4, !tbaa !9
  %520 = fcmp ogt float %514, %519
  br i1 %520, label %573, label %521

521:                                              ; preds = %508
  %522 = load ptr, ptr %36, align 8, !tbaa !5
  %523 = load i32, ptr %34, align 4, !tbaa !14
  %524 = add nsw i32 %523, 1
  %525 = srem i32 %524, 3
  %526 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %522, i32 noundef %525)
  %527 = load float, ptr %526, align 4, !tbaa !9
  %528 = load i32, ptr %34, align 4, !tbaa !14
  %529 = add nsw i32 %528, 1
  %530 = srem i32 %529, 3
  %531 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef %530)
  %532 = load float, ptr %531, align 4, !tbaa !9
  %533 = fcmp olt float %527, %532
  br i1 %533, label %573, label %534

534:                                              ; preds = %521
  %535 = load ptr, ptr %36, align 8, !tbaa !5
  %536 = load i32, ptr %34, align 4, !tbaa !14
  %537 = add nsw i32 %536, 1
  %538 = srem i32 %537, 3
  %539 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %535, i32 noundef %538)
  %540 = load float, ptr %539, align 4, !tbaa !9
  %541 = load i32, ptr %34, align 4, !tbaa !14
  %542 = add nsw i32 %541, 1
  %543 = srem i32 %542, 3
  %544 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef %543)
  %545 = load float, ptr %544, align 4, !tbaa !9
  %546 = fcmp ogt float %540, %545
  br i1 %546, label %573, label %547

547:                                              ; preds = %534
  %548 = load ptr, ptr %36, align 8, !tbaa !5
  %549 = load i32, ptr %34, align 4, !tbaa !14
  %550 = add nsw i32 %549, 2
  %551 = srem i32 %550, 3
  %552 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %548, i32 noundef %551)
  %553 = load float, ptr %552, align 4, !tbaa !9
  %554 = load i32, ptr %34, align 4, !tbaa !14
  %555 = add nsw i32 %554, 2
  %556 = srem i32 %555, 3
  %557 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 noundef %556)
  %558 = load float, ptr %557, align 4, !tbaa !9
  %559 = fcmp olt float %553, %558
  br i1 %559, label %573, label %560

560:                                              ; preds = %547
  %561 = load ptr, ptr %36, align 8, !tbaa !5
  %562 = load i32, ptr %34, align 4, !tbaa !14
  %563 = add nsw i32 %562, 2
  %564 = srem i32 %563, 3
  %565 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %561, i32 noundef %564)
  %566 = load float, ptr %565, align 4, !tbaa !9
  %567 = load i32, ptr %34, align 4, !tbaa !14
  %568 = add nsw i32 %567, 2
  %569 = srem i32 %568, 3
  %570 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef %569)
  %571 = load float, ptr %570, align 4, !tbaa !9
  %572 = fcmp ogt float %566, %571
  br i1 %572, label %573, label %574

573:                                              ; preds = %560, %547, %534, %521, %508, %495, %482, %456
  store i32 10, ptr %14, align 4
  br label %612

574:                                              ; preds = %560
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %38) #5
  %575 = getelementptr inbounds %"struct.geometry::types::clippedSegment_t", ptr %32, i32 0, i32 1
  %576 = getelementptr inbounds [2 x %class.Vector3], ptr %575, i64 0, i64 0
  %577 = getelementptr inbounds %"struct.geometry::types::clippedSegment_t", ptr %33, i32 0, i32 1
  %578 = getelementptr inbounds [2 x %class.Vector3], ptr %577, i64 0, i64 0
  call void @_ZNK7Vector3miERKS_(ptr dead_on_unwind writable sret(%class.Vector3) align 4 %38, ptr noundef nonnull align 4 dereferenceable(12) %576, ptr noundef nonnull align 4 dereferenceable(12) %578)
  %579 = call noundef float @_ZNK7Vector316magnitudeSquaredEv(ptr noundef nonnull align 4 dereferenceable(12) %38)
  call void @llvm.lifetime.end.p0(i64 12, ptr %38) #5
  store float %579, ptr %37, align 4, !tbaa !9
  %580 = load float, ptr %37, align 4, !tbaa !9
  %581 = load float, ptr %9, align 4, !tbaa !9
  %582 = fcmp ole float %580, %581
  br i1 %582, label %583, label %606

583:                                              ; preds = %574
  %584 = load float, ptr %37, align 4, !tbaa !9
  store float %584, ptr %9, align 4, !tbaa !9
  %585 = getelementptr inbounds %"struct.geometry::types::segmentClosestPoints_t", ptr %0, i32 0, i32 0
  store i32 2, ptr %585, align 4, !tbaa !11
  %586 = getelementptr inbounds %"struct.geometry::types::clippedSegment_t", ptr %32, i32 0, i32 1
  %587 = getelementptr inbounds [2 x %class.Vector3], ptr %586, i64 0, i64 0
  %588 = getelementptr inbounds %"struct.geometry::types::segmentClosestPoints_t", ptr %0, i32 0, i32 1
  %589 = getelementptr inbounds [2 x %class.Vector3], ptr %588, i64 0, i64 0
  %590 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN7Vector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %589, ptr noundef nonnull align 4 dereferenceable(12) %587)
  %591 = getelementptr inbounds %"struct.geometry::types::clippedSegment_t", ptr %32, i32 0, i32 1
  %592 = getelementptr inbounds [2 x %class.Vector3], ptr %591, i64 0, i64 1
  %593 = getelementptr inbounds %"struct.geometry::types::segmentClosestPoints_t", ptr %0, i32 0, i32 1
  %594 = getelementptr inbounds [2 x %class.Vector3], ptr %593, i64 0, i64 1
  %595 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN7Vector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %594, ptr noundef nonnull align 4 dereferenceable(12) %592)
  %596 = getelementptr inbounds %"struct.geometry::types::clippedSegment_t", ptr %33, i32 0, i32 1
  %597 = getelementptr inbounds [2 x %class.Vector3], ptr %596, i64 0, i64 0
  %598 = getelementptr inbounds %"struct.geometry::types::segmentClosestPoints_t", ptr %0, i32 0, i32 2
  %599 = getelementptr inbounds [2 x %class.Vector3], ptr %598, i64 0, i64 0
  %600 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN7Vector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %599, ptr noundef nonnull align 4 dereferenceable(12) %597)
  %601 = getelementptr inbounds %"struct.geometry::types::clippedSegment_t", ptr %33, i32 0, i32 1
  %602 = getelementptr inbounds [2 x %class.Vector3], ptr %601, i64 0, i64 1
  %603 = getelementptr inbounds %"struct.geometry::types::segmentClosestPoints_t", ptr %0, i32 0, i32 2
  %604 = getelementptr inbounds [2 x %class.Vector3], ptr %603, i64 0, i64 1
  %605 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN7Vector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %604, ptr noundef nonnull align 4 dereferenceable(12) %602)
  br label %606

606:                                              ; preds = %583, %574
  %607 = load float, ptr %37, align 4, !tbaa !9
  %608 = fcmp olt float %607, 0x3E7AD7F2A0000000
  br i1 %608, label %609, label %610

609:                                              ; preds = %606
  store i32 8, ptr %14, align 4
  br label %611

610:                                              ; preds = %606
  store i32 0, ptr %14, align 4
  br label %611

611:                                              ; preds = %610, %609
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  br label %612

612:                                              ; preds = %611, %573
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 28, ptr %33) #5
  br label %613

613:                                              ; preds = %612, %455
  call void @llvm.lifetime.end.p0(i64 28, ptr %32) #5
  %614 = load i32, ptr %14, align 4
  switch i32 %614, label %618 [
    i32 0, label %615
  ]

615:                                              ; preds = %613
  br label %616

616:                                              ; preds = %615, %440
  br label %617

617:                                              ; preds = %616, %439
  store i32 0, ptr %14, align 4
  br label %618

618:                                              ; preds = %617, %613, %437
  call void @llvm.lifetime.end.p0(i64 52, ptr %27) #5
  %619 = load i32, ptr %14, align 4
  switch i32 %619, label %624 [
    i32 0, label %620
    i32 10, label %621
  ]

620:                                              ; preds = %618
  br label %621

621:                                              ; preds = %620, %618
  %622 = load i32, ptr %26, align 4, !tbaa !14
  %623 = add nsw i32 %622, 1
  store i32 %623, ptr %26, align 4, !tbaa !14
  br label %350, !llvm.loop !23

624:                                              ; preds = %618, %353
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #5
  br label %625

625:                                              ; preds = %624
  store i32 1, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 144, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 288, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  br label %626

626:                                              ; preds = %625, %75
  call void @llvm.lifetime.end.p0(i64 12, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  ret void
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK7Vector39magnitudeEv(ptr noundef nonnull align 4 dereferenceable(12)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12), i32 noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12), i32 noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12), float noundef, float noundef, float noundef) unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(52) ptr @_ZN8geometry5types22segmentClosestPoints_taSERKS1_(ptr noundef nonnull align 4 dereferenceable(52), ptr noundef nonnull align 4 dereferenceable(52)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7Vector3dvERKf(ptr dead_on_unwind noalias writable sret(%class.Vector3) align 4, ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(4)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8geometry7segment35clipSegmentAgainstAxisAlignedSquareERK7Vector3S3_RKNS_5types6aabb_tEi(ptr dead_on_unwind noalias writable sret(%"struct.geometry::types::clippedSegment_t") align 4, ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(24), i32 noundef) #1

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = !{!12, !13, i64 0}
!12 = !{!"_ZTSN8geometry5types22segmentClosestPoints_tE", !13, i64 0, !7, i64 4, !7, i64 28}
!13 = !{!"int", !7, i64 0}
!14 = !{!13, !13, i64 0}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}
!18 = !{!19, !20, i64 0}
!19 = !{!"_ZTSN8geometry5types16clippedSegment_tE", !20, i64 0, !7, i64 4}
!20 = !{!"bool", !7, i64 0}
!21 = !{i8 0, i8 2}
!22 = !{}
!23 = distinct !{!23, !16}


; 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.Vector3 = type { [3 x float] }
%"struct.geometry::types::segmentClosestPoints_t" = type { i32, [2 x %class.Vector3], [2 x %class.Vector3] }
%"struct.geometry::types::segment_t" = type { [2 x %class.Vector3] }
%"struct.geometry::types::plane_t" = type { %class.Vector3, %class.Vector3 }
%"struct.geometry::types::clippedSegment_t" = type { i8, [2 x %class.Vector3] }

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7Vector3miERKS_(ptr dead_on_unwind noalias writable sret(%class.Vector3) align 4, ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK7Vector316magnitudeSquaredEv(ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7Vector3plERKS_(ptr dead_on_unwind noalias writable sret(%class.Vector3) align 4, ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZN7Vector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8geometry7segment22closestPointsToSegmentERK7Vector3S3_S3_S3_f(ptr dead_on_unwind noalias writable sret(%"struct.geometry::types::segmentClosestPoints_t") align 4, ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), float noundef) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8geometry5types22segmentClosestPoints_tC2Ev(ptr noundef nonnull align 4 dereferenceable(52)) unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7Vector3C2ERKS_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8geometry7segment20closestPointsToPlaneERK7Vector3S3_RKNS_5types7plane_tE(ptr dead_on_unwind noalias writable sret(%"struct.geometry::types::segmentClosestPoints_t") align 4, ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(24)) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN8geometry7segment19closestPointsToAabbERK7Vector3S3_RKNS_5types6aabb_tE(ptr dead_on_unwind noalias nonnull writable sret(%"struct.geometry::types::segmentClosestPoints_t") align 4 %0, ptr noundef nonnull align 4 dereferenceable(12) %1, ptr noundef nonnull align 4 dereferenceable(12) %2, ptr noundef nonnull align 4 dereferenceable(24) %3) local_unnamed_addr #1 {
  %5 = alloca %class.Vector3, align 4
  %6 = alloca %class.Vector3, align 4
  %7 = alloca %class.Vector3, align 4
  %8 = alloca [12 x %"struct.geometry::types::segment_t"], align 16
  %9 = alloca %"struct.geometry::types::segmentClosestPoints_t", align 4
  %10 = alloca %class.Vector3, align 4
  %11 = alloca %class.Vector3, align 4
  %12 = alloca %class.Vector3, align 4
  %13 = alloca float, align 4
  %14 = alloca [6 x %"struct.geometry::types::plane_t"], align 16
  %15 = alloca %"struct.geometry::types::segmentClosestPoints_t", align 4
  %16 = alloca %class.Vector3, align 4
  %17 = alloca %"struct.geometry::types::clippedSegment_t", align 4
  %18 = alloca %"struct.geometry::types::clippedSegment_t", align 4
  %19 = alloca %class.Vector3, align 4
  tail call void @_ZN8geometry5types22segmentClosestPoints_tC2Ev(ptr noundef nonnull align 4 dereferenceable(52) %0)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %5) #5
  %20 = getelementptr inbounds i8, ptr %3, i64 12
  call void @_ZN7Vector3C2ERKS_(ptr noundef nonnull align 4 dereferenceable(12) %5, ptr noundef nonnull align 4 dereferenceable(12) %20)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %6) #5
  call void @_ZN7Vector3C2ERKS_(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %3)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %7) #5
  call void @_ZNK7Vector3miERKS_(ptr dead_on_unwind nonnull writable sret(%class.Vector3) align 4 %7, ptr noundef nonnull align 4 dereferenceable(12) %1, ptr noundef nonnull align 4 dereferenceable(12) %2)
  %21 = call noundef float @_ZNK7Vector39magnitudeEv(ptr noundef nonnull align 4 dereferenceable(12) %7)
  %22 = fcmp olt float %21, 0x3E7AD7F2A0000000
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %7) #5
  br i1 %22, label %.loopexit.loopexit, label %47

.loopexit.loopexit:                               ; preds = %4
  store i32 1, ptr %0, align 4, !tbaa !5
  %23 = getelementptr inbounds i8, ptr %0, i64 4
  %24 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN7Vector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %23, ptr noundef nonnull align 4 dereferenceable(12) %1)
  %25 = getelementptr inbounds i8, ptr %0, i64 28
  %26 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %1, i32 noundef 0)
  %27 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 0)
  %28 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %26, ptr noundef nonnull align 4 dereferenceable(4) %27)
  %29 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 0)
  %30 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %28, ptr noundef nonnull align 4 dereferenceable(4) %29)
  %31 = load float, ptr %30, align 4, !tbaa !10
  %32 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %25, i32 noundef 0)
  store float %31, ptr %32, align 4, !tbaa !10
  %33 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %1, i32 noundef 1)
  %34 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 1)
  %35 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %33, ptr noundef nonnull align 4 dereferenceable(4) %34)
  %36 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 1)
  %37 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %35, ptr noundef nonnull align 4 dereferenceable(4) %36)
  %38 = load float, ptr %37, align 4, !tbaa !10
  %39 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %25, i32 noundef 1)
  store float %38, ptr %39, align 4, !tbaa !10
  %40 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %1, i32 noundef 2)
  %41 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 2)
  %42 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef nonnull align 4 dereferenceable(4) %41)
  %43 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 2)
  %44 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %42, ptr noundef nonnull align 4 dereferenceable(4) %43)
  %45 = load float, ptr %44, align 4, !tbaa !10
  %46 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %25, i32 noundef 2)
  store float %45, ptr %46, align 4, !tbaa !10
  br label %.loopexit

47:                                               ; preds = %4
  call void @llvm.lifetime.start.p0(i64 288, ptr nonnull %8) #5
  %48 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 0)
  %49 = load float, ptr %48, align 4, !tbaa !10
  %50 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 1)
  %51 = load float, ptr %50, align 4, !tbaa !10
  %52 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 2)
  %53 = load float, ptr %52, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %8, float noundef %49, float noundef %51, float noundef %53)
  %54 = getelementptr inbounds i8, ptr %8, i64 12
  %55 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 0)
  %56 = load float, ptr %55, align 4, !tbaa !10
  %57 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 1)
  %58 = load float, ptr %57, align 4, !tbaa !10
  %59 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 2)
  %60 = load float, ptr %59, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %54, float noundef %56, float noundef %58, float noundef %60)
  %61 = getelementptr inbounds i8, ptr %8, i64 24
  %62 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 0)
  %63 = load float, ptr %62, align 4, !tbaa !10
  %64 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 1)
  %65 = load float, ptr %64, align 4, !tbaa !10
  %66 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 2)
  %67 = load float, ptr %66, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %61, float noundef %63, float noundef %65, float noundef %67)
  %68 = getelementptr inbounds i8, ptr %8, i64 36
  %69 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 0)
  %70 = load float, ptr %69, align 4, !tbaa !10
  %71 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 1)
  %72 = load float, ptr %71, align 4, !tbaa !10
  %73 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 2)
  %74 = load float, ptr %73, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %68, float noundef %70, float noundef %72, float noundef %74)
  %75 = getelementptr inbounds i8, ptr %8, i64 48
  %76 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 0)
  %77 = load float, ptr %76, align 4, !tbaa !10
  %78 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 1)
  %79 = load float, ptr %78, align 4, !tbaa !10
  %80 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 2)
  %81 = load float, ptr %80, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %75, float noundef %77, float noundef %79, float noundef %81)
  %82 = getelementptr inbounds i8, ptr %8, i64 60
  %83 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 0)
  %84 = load float, ptr %83, align 4, !tbaa !10
  %85 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 1)
  %86 = load float, ptr %85, align 4, !tbaa !10
  %87 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 2)
  %88 = load float, ptr %87, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %82, float noundef %84, float noundef %86, float noundef %88)
  %89 = getelementptr inbounds i8, ptr %8, i64 72
  %90 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 0)
  %91 = load float, ptr %90, align 4, !tbaa !10
  %92 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 1)
  %93 = load float, ptr %92, align 4, !tbaa !10
  %94 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 2)
  %95 = load float, ptr %94, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %89, float noundef %91, float noundef %93, float noundef %95)
  %96 = getelementptr inbounds i8, ptr %8, i64 84
  %97 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 0)
  %98 = load float, ptr %97, align 4, !tbaa !10
  %99 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 1)
  %100 = load float, ptr %99, align 4, !tbaa !10
  %101 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 2)
  %102 = load float, ptr %101, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %96, float noundef %98, float noundef %100, float noundef %102)
  %103 = getelementptr inbounds i8, ptr %8, i64 96
  %104 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 0)
  %105 = load float, ptr %104, align 4, !tbaa !10
  %106 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 1)
  %107 = load float, ptr %106, align 4, !tbaa !10
  %108 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 2)
  %109 = load float, ptr %108, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %103, float noundef %105, float noundef %107, float noundef %109)
  %110 = getelementptr inbounds i8, ptr %8, i64 108
  %111 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 0)
  %112 = load float, ptr %111, align 4, !tbaa !10
  %113 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 1)
  %114 = load float, ptr %113, align 4, !tbaa !10
  %115 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 2)
  %116 = load float, ptr %115, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %110, float noundef %112, float noundef %114, float noundef %116)
  %117 = getelementptr inbounds i8, ptr %8, i64 120
  %118 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 0)
  %119 = load float, ptr %118, align 4, !tbaa !10
  %120 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 1)
  %121 = load float, ptr %120, align 4, !tbaa !10
  %122 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 2)
  %123 = load float, ptr %122, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %117, float noundef %119, float noundef %121, float noundef %123)
  %124 = getelementptr inbounds i8, ptr %8, i64 132
  %125 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 0)
  %126 = load float, ptr %125, align 4, !tbaa !10
  %127 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 1)
  %128 = load float, ptr %127, align 4, !tbaa !10
  %129 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 2)
  %130 = load float, ptr %129, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %124, float noundef %126, float noundef %128, float noundef %130)
  %131 = getelementptr inbounds i8, ptr %8, i64 144
  %132 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 0)
  %133 = load float, ptr %132, align 4, !tbaa !10
  %134 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 1)
  %135 = load float, ptr %134, align 4, !tbaa !10
  %136 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 2)
  %137 = load float, ptr %136, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %131, float noundef %133, float noundef %135, float noundef %137)
  %138 = getelementptr inbounds i8, ptr %8, i64 156
  %139 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 0)
  %140 = load float, ptr %139, align 4, !tbaa !10
  %141 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 1)
  %142 = load float, ptr %141, align 4, !tbaa !10
  %143 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 2)
  %144 = load float, ptr %143, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %138, float noundef %140, float noundef %142, float noundef %144)
  %145 = getelementptr inbounds i8, ptr %8, i64 168
  %146 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 0)
  %147 = load float, ptr %146, align 4, !tbaa !10
  %148 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 1)
  %149 = load float, ptr %148, align 4, !tbaa !10
  %150 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 2)
  %151 = load float, ptr %150, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %145, float noundef %147, float noundef %149, float noundef %151)
  %152 = getelementptr inbounds i8, ptr %8, i64 180
  %153 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 0)
  %154 = load float, ptr %153, align 4, !tbaa !10
  %155 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 1)
  %156 = load float, ptr %155, align 4, !tbaa !10
  %157 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 2)
  %158 = load float, ptr %157, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %152, float noundef %154, float noundef %156, float noundef %158)
  %159 = getelementptr inbounds i8, ptr %8, i64 192
  %160 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 0)
  %161 = load float, ptr %160, align 4, !tbaa !10
  %162 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 1)
  %163 = load float, ptr %162, align 4, !tbaa !10
  %164 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 2)
  %165 = load float, ptr %164, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %159, float noundef %161, float noundef %163, float noundef %165)
  %166 = getelementptr inbounds i8, ptr %8, i64 204
  %167 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 0)
  %168 = load float, ptr %167, align 4, !tbaa !10
  %169 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 1)
  %170 = load float, ptr %169, align 4, !tbaa !10
  %171 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 2)
  %172 = load float, ptr %171, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %166, float noundef %168, float noundef %170, float noundef %172)
  %173 = getelementptr inbounds i8, ptr %8, i64 216
  %174 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 0)
  %175 = load float, ptr %174, align 4, !tbaa !10
  %176 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 1)
  %177 = load float, ptr %176, align 4, !tbaa !10
  %178 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 2)
  %179 = load float, ptr %178, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %173, float noundef %175, float noundef %177, float noundef %179)
  %180 = getelementptr inbounds i8, ptr %8, i64 228
  %181 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 0)
  %182 = load float, ptr %181, align 4, !tbaa !10
  %183 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 1)
  %184 = load float, ptr %183, align 4, !tbaa !10
  %185 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 2)
  %186 = load float, ptr %185, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %180, float noundef %182, float noundef %184, float noundef %186)
  %187 = getelementptr inbounds i8, ptr %8, i64 240
  %188 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 0)
  %189 = load float, ptr %188, align 4, !tbaa !10
  %190 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 1)
  %191 = load float, ptr %190, align 4, !tbaa !10
  %192 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 2)
  %193 = load float, ptr %192, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %187, float noundef %189, float noundef %191, float noundef %193)
  %194 = getelementptr inbounds i8, ptr %8, i64 252
  %195 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 0)
  %196 = load float, ptr %195, align 4, !tbaa !10
  %197 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 1)
  %198 = load float, ptr %197, align 4, !tbaa !10
  %199 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 2)
  %200 = load float, ptr %199, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %194, float noundef %196, float noundef %198, float noundef %200)
  %201 = getelementptr inbounds i8, ptr %8, i64 264
  %202 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 0)
  %203 = load float, ptr %202, align 4, !tbaa !10
  %204 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 1)
  %205 = load float, ptr %204, align 4, !tbaa !10
  %206 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 2)
  %207 = load float, ptr %206, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %201, float noundef %203, float noundef %205, float noundef %207)
  %208 = getelementptr inbounds i8, ptr %8, i64 276
  %209 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 0)
  %210 = load float, ptr %209, align 4, !tbaa !10
  %211 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 1)
  %212 = load float, ptr %211, align 4, !tbaa !10
  %213 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 2)
  %214 = load float, ptr %213, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %208, float noundef %210, float noundef %212, float noundef %214)
  %215 = getelementptr inbounds i8, ptr %9, i64 4
  %216 = getelementptr inbounds i8, ptr %9, i64 28
  call void @llvm.lifetime.start.p0(i64 52, ptr nonnull %9) #5
  call void @_ZN8geometry7segment22closestPointsToSegmentERK7Vector3S3_S3_S3_f(ptr dead_on_unwind nonnull writable sret(%"struct.geometry::types::segmentClosestPoints_t") align 4 %9, ptr noundef nonnull align 4 dereferenceable(12) %1, ptr noundef nonnull align 4 dereferenceable(12) %2, ptr noundef nonnull align 4 dereferenceable(12) %8, ptr noundef nonnull align 4 dereferenceable(12) %54, float noundef 0x3EB0C6F7A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %10) #5
  call void @_ZNK7Vector3miERKS_(ptr dead_on_unwind nonnull writable sret(%class.Vector3) align 4 %10, ptr noundef nonnull align 4 dereferenceable(12) %215, ptr noundef nonnull align 4 dereferenceable(12) %216)
  %217 = call noundef float @_ZNK7Vector316magnitudeSquaredEv(ptr noundef nonnull align 4 dereferenceable(12) %10)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #5
  %218 = fcmp olt float %217, 0x47EFFFFFE0000000
  br i1 %218, label %306, label %308

219:                                              ; preds = %308
  call void @llvm.lifetime.start.p0(i64 52, ptr nonnull %9) #5
  %220 = getelementptr inbounds i8, ptr %8, i64 36
  call void @_ZN8geometry7segment22closestPointsToSegmentERK7Vector3S3_S3_S3_f(ptr dead_on_unwind nonnull writable sret(%"struct.geometry::types::segmentClosestPoints_t") align 4 %9, ptr noundef nonnull align 4 dereferenceable(12) %1, ptr noundef nonnull align 4 dereferenceable(12) %2, ptr noundef nonnull align 4 dereferenceable(12) %61, ptr noundef nonnull align 4 dereferenceable(12) %220, float noundef 0x3EB0C6F7A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %10) #5
  call void @_ZNK7Vector3miERKS_(ptr dead_on_unwind nonnull writable sret(%class.Vector3) align 4 %10, ptr noundef nonnull align 4 dereferenceable(12) %215, ptr noundef nonnull align 4 dereferenceable(12) %216)
  %221 = call noundef float @_ZNK7Vector316magnitudeSquaredEv(ptr noundef nonnull align 4 dereferenceable(12) %10)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #5
  %222 = fcmp olt float %221, %.1
  br i1 %222, label %223, label %225

223:                                              ; preds = %219
  %224 = call noundef nonnull align 4 dereferenceable(52) ptr @_ZN8geometry5types22segmentClosestPoints_taSERKS1_(ptr noundef nonnull align 4 dereferenceable(52) %0, ptr noundef nonnull align 4 dereferenceable(52) %9)
  br label %225

225:                                              ; preds = %223, %219
  %.1.1 = phi float [ %221, %223 ], [ %.1, %219 ]
  %226 = fcmp uge float %221, 0x3E7AD7F2A0000000
  call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %9) #5
  br i1 %226, label %227, label %310

227:                                              ; preds = %225
  call void @llvm.lifetime.start.p0(i64 52, ptr nonnull %9) #5
  %228 = getelementptr inbounds i8, ptr %8, i64 60
  call void @_ZN8geometry7segment22closestPointsToSegmentERK7Vector3S3_S3_S3_f(ptr dead_on_unwind nonnull writable sret(%"struct.geometry::types::segmentClosestPoints_t") align 4 %9, ptr noundef nonnull align 4 dereferenceable(12) %1, ptr noundef nonnull align 4 dereferenceable(12) %2, ptr noundef nonnull align 4 dereferenceable(12) %75, ptr noundef nonnull align 4 dereferenceable(12) %228, float noundef 0x3EB0C6F7A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %10) #5
  call void @_ZNK7Vector3miERKS_(ptr dead_on_unwind nonnull writable sret(%class.Vector3) align 4 %10, ptr noundef nonnull align 4 dereferenceable(12) %215, ptr noundef nonnull align 4 dereferenceable(12) %216)
  %229 = call noundef float @_ZNK7Vector316magnitudeSquaredEv(ptr noundef nonnull align 4 dereferenceable(12) %10)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #5
  %230 = fcmp olt float %229, %.1.1
  br i1 %230, label %231, label %233

231:                                              ; preds = %227
  %232 = call noundef nonnull align 4 dereferenceable(52) ptr @_ZN8geometry5types22segmentClosestPoints_taSERKS1_(ptr noundef nonnull align 4 dereferenceable(52) %0, ptr noundef nonnull align 4 dereferenceable(52) %9)
  br label %233

233:                                              ; preds = %231, %227
  %.1.2 = phi float [ %229, %231 ], [ %.1.1, %227 ]
  %234 = fcmp uge float %229, 0x3E7AD7F2A0000000
  call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %9) #5
  br i1 %234, label %235, label %310

235:                                              ; preds = %233
  call void @llvm.lifetime.start.p0(i64 52, ptr nonnull %9) #5
  %236 = getelementptr inbounds i8, ptr %8, i64 84
  call void @_ZN8geometry7segment22closestPointsToSegmentERK7Vector3S3_S3_S3_f(ptr dead_on_unwind nonnull writable sret(%"struct.geometry::types::segmentClosestPoints_t") align 4 %9, ptr noundef nonnull align 4 dereferenceable(12) %1, ptr noundef nonnull align 4 dereferenceable(12) %2, ptr noundef nonnull align 4 dereferenceable(12) %89, ptr noundef nonnull align 4 dereferenceable(12) %236, float noundef 0x3EB0C6F7A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %10) #5
  call void @_ZNK7Vector3miERKS_(ptr dead_on_unwind nonnull writable sret(%class.Vector3) align 4 %10, ptr noundef nonnull align 4 dereferenceable(12) %215, ptr noundef nonnull align 4 dereferenceable(12) %216)
  %237 = call noundef float @_ZNK7Vector316magnitudeSquaredEv(ptr noundef nonnull align 4 dereferenceable(12) %10)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #5
  %238 = fcmp olt float %237, %.1.2
  br i1 %238, label %239, label %241

239:                                              ; preds = %235
  %240 = call noundef nonnull align 4 dereferenceable(52) ptr @_ZN8geometry5types22segmentClosestPoints_taSERKS1_(ptr noundef nonnull align 4 dereferenceable(52) %0, ptr noundef nonnull align 4 dereferenceable(52) %9)
  br label %241

241:                                              ; preds = %239, %235
  %.1.3 = phi float [ %237, %239 ], [ %.1.2, %235 ]
  %242 = fcmp uge float %237, 0x3E7AD7F2A0000000
  call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %9) #5
  br i1 %242, label %243, label %310

243:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 52, ptr nonnull %9) #5
  %244 = getelementptr inbounds i8, ptr %8, i64 108
  call void @_ZN8geometry7segment22closestPointsToSegmentERK7Vector3S3_S3_S3_f(ptr dead_on_unwind nonnull writable sret(%"struct.geometry::types::segmentClosestPoints_t") align 4 %9, ptr noundef nonnull align 4 dereferenceable(12) %1, ptr noundef nonnull align 4 dereferenceable(12) %2, ptr noundef nonnull align 4 dereferenceable(12) %103, ptr noundef nonnull align 4 dereferenceable(12) %244, float noundef 0x3EB0C6F7A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %10) #5
  call void @_ZNK7Vector3miERKS_(ptr dead_on_unwind nonnull writable sret(%class.Vector3) align 4 %10, ptr noundef nonnull align 4 dereferenceable(12) %215, ptr noundef nonnull align 4 dereferenceable(12) %216)
  %245 = call noundef float @_ZNK7Vector316magnitudeSquaredEv(ptr noundef nonnull align 4 dereferenceable(12) %10)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #5
  %246 = fcmp olt float %245, %.1.3
  br i1 %246, label %247, label %249

247:                                              ; preds = %243
  %248 = call noundef nonnull align 4 dereferenceable(52) ptr @_ZN8geometry5types22segmentClosestPoints_taSERKS1_(ptr noundef nonnull align 4 dereferenceable(52) %0, ptr noundef nonnull align 4 dereferenceable(52) %9)
  br label %249

249:                                              ; preds = %247, %243
  %.1.4 = phi float [ %245, %247 ], [ %.1.3, %243 ]
  %250 = fcmp uge float %245, 0x3E7AD7F2A0000000
  call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %9) #5
  br i1 %250, label %251, label %310

251:                                              ; preds = %249
  call void @llvm.lifetime.start.p0(i64 52, ptr nonnull %9) #5
  %252 = getelementptr inbounds i8, ptr %8, i64 132
  call void @_ZN8geometry7segment22closestPointsToSegmentERK7Vector3S3_S3_S3_f(ptr dead_on_unwind nonnull writable sret(%"struct.geometry::types::segmentClosestPoints_t") align 4 %9, ptr noundef nonnull align 4 dereferenceable(12) %1, ptr noundef nonnull align 4 dereferenceable(12) %2, ptr noundef nonnull align 4 dereferenceable(12) %117, ptr noundef nonnull align 4 dereferenceable(12) %252, float noundef 0x3EB0C6F7A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %10) #5
  call void @_ZNK7Vector3miERKS_(ptr dead_on_unwind nonnull writable sret(%class.Vector3) align 4 %10, ptr noundef nonnull align 4 dereferenceable(12) %215, ptr noundef nonnull align 4 dereferenceable(12) %216)
  %253 = call noundef float @_ZNK7Vector316magnitudeSquaredEv(ptr noundef nonnull align 4 dereferenceable(12) %10)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #5
  %254 = fcmp olt float %253, %.1.4
  br i1 %254, label %255, label %257

255:                                              ; preds = %251
  %256 = call noundef nonnull align 4 dereferenceable(52) ptr @_ZN8geometry5types22segmentClosestPoints_taSERKS1_(ptr noundef nonnull align 4 dereferenceable(52) %0, ptr noundef nonnull align 4 dereferenceable(52) %9)
  br label %257

257:                                              ; preds = %255, %251
  %.1.5 = phi float [ %253, %255 ], [ %.1.4, %251 ]
  %258 = fcmp uge float %253, 0x3E7AD7F2A0000000
  call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %9) #5
  br i1 %258, label %259, label %310

259:                                              ; preds = %257
  call void @llvm.lifetime.start.p0(i64 52, ptr nonnull %9) #5
  %260 = getelementptr inbounds i8, ptr %8, i64 156
  call void @_ZN8geometry7segment22closestPointsToSegmentERK7Vector3S3_S3_S3_f(ptr dead_on_unwind nonnull writable sret(%"struct.geometry::types::segmentClosestPoints_t") align 4 %9, ptr noundef nonnull align 4 dereferenceable(12) %1, ptr noundef nonnull align 4 dereferenceable(12) %2, ptr noundef nonnull align 4 dereferenceable(12) %131, ptr noundef nonnull align 4 dereferenceable(12) %260, float noundef 0x3EB0C6F7A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %10) #5
  call void @_ZNK7Vector3miERKS_(ptr dead_on_unwind nonnull writable sret(%class.Vector3) align 4 %10, ptr noundef nonnull align 4 dereferenceable(12) %215, ptr noundef nonnull align 4 dereferenceable(12) %216)
  %261 = call noundef float @_ZNK7Vector316magnitudeSquaredEv(ptr noundef nonnull align 4 dereferenceable(12) %10)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #5
  %262 = fcmp olt float %261, %.1.5
  br i1 %262, label %263, label %265

263:                                              ; preds = %259
  %264 = call noundef nonnull align 4 dereferenceable(52) ptr @_ZN8geometry5types22segmentClosestPoints_taSERKS1_(ptr noundef nonnull align 4 dereferenceable(52) %0, ptr noundef nonnull align 4 dereferenceable(52) %9)
  br label %265

265:                                              ; preds = %263, %259
  %.1.6 = phi float [ %261, %263 ], [ %.1.5, %259 ]
  %266 = fcmp uge float %261, 0x3E7AD7F2A0000000
  call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %9) #5
  br i1 %266, label %267, label %310

267:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 52, ptr nonnull %9) #5
  %268 = getelementptr inbounds i8, ptr %8, i64 180
  call void @_ZN8geometry7segment22closestPointsToSegmentERK7Vector3S3_S3_S3_f(ptr dead_on_unwind nonnull writable sret(%"struct.geometry::types::segmentClosestPoints_t") align 4 %9, ptr noundef nonnull align 4 dereferenceable(12) %1, ptr noundef nonnull align 4 dereferenceable(12) %2, ptr noundef nonnull align 4 dereferenceable(12) %145, ptr noundef nonnull align 4 dereferenceable(12) %268, float noundef 0x3EB0C6F7A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %10) #5
  call void @_ZNK7Vector3miERKS_(ptr dead_on_unwind nonnull writable sret(%class.Vector3) align 4 %10, ptr noundef nonnull align 4 dereferenceable(12) %215, ptr noundef nonnull align 4 dereferenceable(12) %216)
  %269 = call noundef float @_ZNK7Vector316magnitudeSquaredEv(ptr noundef nonnull align 4 dereferenceable(12) %10)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #5
  %270 = fcmp olt float %269, %.1.6
  br i1 %270, label %271, label %273

271:                                              ; preds = %267
  %272 = call noundef nonnull align 4 dereferenceable(52) ptr @_ZN8geometry5types22segmentClosestPoints_taSERKS1_(ptr noundef nonnull align 4 dereferenceable(52) %0, ptr noundef nonnull align 4 dereferenceable(52) %9)
  br label %273

273:                                              ; preds = %271, %267
  %.1.7 = phi float [ %269, %271 ], [ %.1.6, %267 ]
  %274 = fcmp uge float %269, 0x3E7AD7F2A0000000
  call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %9) #5
  br i1 %274, label %275, label %310

275:                                              ; preds = %273
  call void @llvm.lifetime.start.p0(i64 52, ptr nonnull %9) #5
  %276 = getelementptr inbounds i8, ptr %8, i64 204
  call void @_ZN8geometry7segment22closestPointsToSegmentERK7Vector3S3_S3_S3_f(ptr dead_on_unwind nonnull writable sret(%"struct.geometry::types::segmentClosestPoints_t") align 4 %9, ptr noundef nonnull align 4 dereferenceable(12) %1, ptr noundef nonnull align 4 dereferenceable(12) %2, ptr noundef nonnull align 4 dereferenceable(12) %159, ptr noundef nonnull align 4 dereferenceable(12) %276, float noundef 0x3EB0C6F7A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %10) #5
  call void @_ZNK7Vector3miERKS_(ptr dead_on_unwind nonnull writable sret(%class.Vector3) align 4 %10, ptr noundef nonnull align 4 dereferenceable(12) %215, ptr noundef nonnull align 4 dereferenceable(12) %216)
  %277 = call noundef float @_ZNK7Vector316magnitudeSquaredEv(ptr noundef nonnull align 4 dereferenceable(12) %10)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #5
  %278 = fcmp olt float %277, %.1.7
  br i1 %278, label %279, label %281

279:                                              ; preds = %275
  %280 = call noundef nonnull align 4 dereferenceable(52) ptr @_ZN8geometry5types22segmentClosestPoints_taSERKS1_(ptr noundef nonnull align 4 dereferenceable(52) %0, ptr noundef nonnull align 4 dereferenceable(52) %9)
  br label %281

281:                                              ; preds = %279, %275
  %.1.8 = phi float [ %277, %279 ], [ %.1.7, %275 ]
  %282 = fcmp uge float %277, 0x3E7AD7F2A0000000
  call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %9) #5
  br i1 %282, label %283, label %310

283:                                              ; preds = %281
  call void @llvm.lifetime.start.p0(i64 52, ptr nonnull %9) #5
  %284 = getelementptr inbounds i8, ptr %8, i64 228
  call void @_ZN8geometry7segment22closestPointsToSegmentERK7Vector3S3_S3_S3_f(ptr dead_on_unwind nonnull writable sret(%"struct.geometry::types::segmentClosestPoints_t") align 4 %9, ptr noundef nonnull align 4 dereferenceable(12) %1, ptr noundef nonnull align 4 dereferenceable(12) %2, ptr noundef nonnull align 4 dereferenceable(12) %173, ptr noundef nonnull align 4 dereferenceable(12) %284, float noundef 0x3EB0C6F7A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %10) #5
  call void @_ZNK7Vector3miERKS_(ptr dead_on_unwind nonnull writable sret(%class.Vector3) align 4 %10, ptr noundef nonnull align 4 dereferenceable(12) %215, ptr noundef nonnull align 4 dereferenceable(12) %216)
  %285 = call noundef float @_ZNK7Vector316magnitudeSquaredEv(ptr noundef nonnull align 4 dereferenceable(12) %10)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #5
  %286 = fcmp olt float %285, %.1.8
  br i1 %286, label %287, label %289

287:                                              ; preds = %283
  %288 = call noundef nonnull align 4 dereferenceable(52) ptr @_ZN8geometry5types22segmentClosestPoints_taSERKS1_(ptr noundef nonnull align 4 dereferenceable(52) %0, ptr noundef nonnull align 4 dereferenceable(52) %9)
  br label %289

289:                                              ; preds = %287, %283
  %.1.9 = phi float [ %285, %287 ], [ %.1.8, %283 ]
  %290 = fcmp uge float %285, 0x3E7AD7F2A0000000
  call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %9) #5
  br i1 %290, label %291, label %310

291:                                              ; preds = %289
  call void @llvm.lifetime.start.p0(i64 52, ptr nonnull %9) #5
  %292 = getelementptr inbounds i8, ptr %8, i64 252
  call void @_ZN8geometry7segment22closestPointsToSegmentERK7Vector3S3_S3_S3_f(ptr dead_on_unwind nonnull writable sret(%"struct.geometry::types::segmentClosestPoints_t") align 4 %9, ptr noundef nonnull align 4 dereferenceable(12) %1, ptr noundef nonnull align 4 dereferenceable(12) %2, ptr noundef nonnull align 4 dereferenceable(12) %187, ptr noundef nonnull align 4 dereferenceable(12) %292, float noundef 0x3EB0C6F7A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %10) #5
  call void @_ZNK7Vector3miERKS_(ptr dead_on_unwind nonnull writable sret(%class.Vector3) align 4 %10, ptr noundef nonnull align 4 dereferenceable(12) %215, ptr noundef nonnull align 4 dereferenceable(12) %216)
  %293 = call noundef float @_ZNK7Vector316magnitudeSquaredEv(ptr noundef nonnull align 4 dereferenceable(12) %10)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #5
  %294 = fcmp olt float %293, %.1.9
  br i1 %294, label %295, label %297

295:                                              ; preds = %291
  %296 = call noundef nonnull align 4 dereferenceable(52) ptr @_ZN8geometry5types22segmentClosestPoints_taSERKS1_(ptr noundef nonnull align 4 dereferenceable(52) %0, ptr noundef nonnull align 4 dereferenceable(52) %9)
  br label %297

297:                                              ; preds = %295, %291
  %.1.10 = phi float [ %293, %295 ], [ %.1.9, %291 ]
  %298 = fcmp uge float %293, 0x3E7AD7F2A0000000
  call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %9) #5
  br i1 %298, label %299, label %310

299:                                              ; preds = %297
  call void @llvm.lifetime.start.p0(i64 52, ptr nonnull %9) #5
  %300 = getelementptr inbounds i8, ptr %8, i64 276
  call void @_ZN8geometry7segment22closestPointsToSegmentERK7Vector3S3_S3_S3_f(ptr dead_on_unwind nonnull writable sret(%"struct.geometry::types::segmentClosestPoints_t") align 4 %9, ptr noundef nonnull align 4 dereferenceable(12) %1, ptr noundef nonnull align 4 dereferenceable(12) %2, ptr noundef nonnull align 4 dereferenceable(12) %201, ptr noundef nonnull align 4 dereferenceable(12) %300, float noundef 0x3EB0C6F7A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %10) #5
  call void @_ZNK7Vector3miERKS_(ptr dead_on_unwind nonnull writable sret(%class.Vector3) align 4 %10, ptr noundef nonnull align 4 dereferenceable(12) %215, ptr noundef nonnull align 4 dereferenceable(12) %216)
  %301 = call noundef float @_ZNK7Vector316magnitudeSquaredEv(ptr noundef nonnull align 4 dereferenceable(12) %10)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #5
  %302 = fcmp olt float %301, %.1.10
  br i1 %302, label %303, label %305

303:                                              ; preds = %299
  %304 = call noundef nonnull align 4 dereferenceable(52) ptr @_ZN8geometry5types22segmentClosestPoints_taSERKS1_(ptr noundef nonnull align 4 dereferenceable(52) %0, ptr noundef nonnull align 4 dereferenceable(52) %9)
  br label %305

305:                                              ; preds = %303, %299
  %.1.11 = phi float [ %301, %303 ], [ %.1.10, %299 ]
  call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %9) #5
  br label %310

306:                                              ; preds = %47
  %307 = call noundef nonnull align 4 dereferenceable(52) ptr @_ZN8geometry5types22segmentClosestPoints_taSERKS1_(ptr noundef nonnull align 4 dereferenceable(52) %0, ptr noundef nonnull align 4 dereferenceable(52) %9)
  br label %308

308:                                              ; preds = %306, %47
  %.1 = phi float [ %217, %306 ], [ 0x47EFFFFFE0000000, %47 ]
  %309 = fcmp uge float %217, 0x3E7AD7F2A0000000
  call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %9) #5
  br i1 %309, label %219, label %310

310:                                              ; preds = %305, %297, %289, %281, %273, %265, %257, %249, %241, %233, %225, %308
  %.1.lcssa = phi float [ %.1, %308 ], [ %.1.1, %225 ], [ %.1.2, %233 ], [ %.1.3, %241 ], [ %.1.4, %249 ], [ %.1.5, %257 ], [ %.1.6, %265 ], [ %.1.7, %273 ], [ %.1.8, %281 ], [ %.1.9, %289 ], [ %.1.10, %297 ], [ %.1.11, %305 ]
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %12) #5
  call void @_ZNK7Vector3plERKS_(ptr dead_on_unwind nonnull writable sret(%class.Vector3) align 4 %12, ptr noundef nonnull align 4 dereferenceable(12) %5, ptr noundef nonnull align 4 dereferenceable(12) %6)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #5
  store float 2.000000e+00, ptr %13, align 4, !tbaa !10
  call void @_ZNK7Vector3dvERKf(ptr dead_on_unwind nonnull writable sret(%class.Vector3) align 4 %11, ptr noundef nonnull align 4 dereferenceable(12) %12, ptr noundef nonnull align 4 dereferenceable(4) %13)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %14) #5
  %311 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 0)
  %312 = load float, ptr %311, align 4, !tbaa !10
  %313 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 1)
  %314 = load float, ptr %313, align 4, !tbaa !10
  %315 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 2)
  %316 = load float, ptr %315, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %14, float noundef %312, float noundef %314, float noundef %316)
  %317 = getelementptr inbounds i8, ptr %14, i64 12
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %317, float noundef -1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %318 = getelementptr inbounds i8, ptr %14, i64 24
  %319 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 0)
  %320 = load float, ptr %319, align 4, !tbaa !10
  %321 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 1)
  %322 = load float, ptr %321, align 4, !tbaa !10
  %323 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 2)
  %324 = load float, ptr %323, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %318, float noundef %320, float noundef %322, float noundef %324)
  %325 = getelementptr inbounds i8, ptr %14, i64 36
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %325, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %326 = getelementptr inbounds i8, ptr %14, i64 48
  %327 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 0)
  %328 = load float, ptr %327, align 4, !tbaa !10
  %329 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 1)
  %330 = load float, ptr %329, align 4, !tbaa !10
  %331 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 2)
  %332 = load float, ptr %331, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %326, float noundef %328, float noundef %330, float noundef %332)
  %333 = getelementptr inbounds i8, ptr %14, i64 60
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %333, float noundef 0.000000e+00, float noundef -1.000000e+00, float noundef 0.000000e+00)
  %334 = getelementptr inbounds i8, ptr %14, i64 72
  %335 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 0)
  %336 = load float, ptr %335, align 4, !tbaa !10
  %337 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 1)
  %338 = load float, ptr %337, align 4, !tbaa !10
  %339 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 2)
  %340 = load float, ptr %339, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %334, float noundef %336, float noundef %338, float noundef %340)
  %341 = getelementptr inbounds i8, ptr %14, i64 84
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %341, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
  %342 = getelementptr inbounds i8, ptr %14, i64 96
  %343 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 0)
  %344 = load float, ptr %343, align 4, !tbaa !10
  %345 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 1)
  %346 = load float, ptr %345, align 4, !tbaa !10
  %347 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef 2)
  %348 = load float, ptr %347, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %342, float noundef %344, float noundef %346, float noundef %348)
  %349 = getelementptr inbounds i8, ptr %14, i64 108
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %349, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef -1.000000e+00)
  %350 = getelementptr inbounds i8, ptr %14, i64 120
  %351 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 0)
  %352 = load float, ptr %351, align 4, !tbaa !10
  %353 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 1)
  %354 = load float, ptr %353, align 4, !tbaa !10
  %355 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 2)
  %356 = load float, ptr %355, align 4, !tbaa !10
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %350, float noundef %352, float noundef %354, float noundef %356)
  %357 = getelementptr inbounds i8, ptr %14, i64 132
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %357, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.000000e+00)
  %358 = getelementptr inbounds i8, ptr %15, i64 4
  %359 = getelementptr inbounds i8, ptr %15, i64 16
  %360 = getelementptr inbounds i8, ptr %15, i64 28
  %361 = getelementptr inbounds i8, ptr %15, i64 40
  %362 = getelementptr inbounds i8, ptr %18, i64 4
  %363 = getelementptr inbounds i8, ptr %18, i64 16
  %364 = getelementptr inbounds i8, ptr %17, i64 4
  %365 = getelementptr inbounds i8, ptr %0, i64 4
  %366 = getelementptr inbounds i8, ptr %17, i64 16
  %367 = getelementptr inbounds i8, ptr %0, i64 16
  %368 = getelementptr inbounds i8, ptr %0, i64 28
  %369 = getelementptr inbounds i8, ptr %0, i64 40
  br label %370

370:                                              ; preds = %310, %475
  %indvars.iv = phi i64 [ 0, %310 ], [ %indvars.iv.next, %475 ]
  %.3129 = phi float [ %.1.lcssa, %310 ], [ %.10113, %475 ]
  call void @llvm.lifetime.start.p0(i64 52, ptr nonnull %15) #5
  %371 = getelementptr inbounds [6 x %"struct.geometry::types::plane_t"], ptr %14, i64 0, i64 %indvars.iv
  call void @_ZN8geometry7segment20closestPointsToPlaneERK7Vector3S3_RKNS_5types7plane_tE(ptr dead_on_unwind nonnull writable sret(%"struct.geometry::types::segmentClosestPoints_t") align 4 %15, ptr noundef nonnull align 4 dereferenceable(12) %1, ptr noundef nonnull align 4 dereferenceable(12) %2, ptr noundef nonnull align 4 dereferenceable(24) %371)
  %372 = load i32, ptr %15, align 4, !tbaa !5
  switch i32 %372, label %.thread110 [
    i32 1, label %373
    i32 2, label %408
  ]

373:                                              ; preds = %370
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %16) #5
  call void @_ZNK7Vector3miERKS_(ptr dead_on_unwind nonnull writable sret(%class.Vector3) align 4 %16, ptr noundef nonnull align 4 dereferenceable(12) %360, ptr noundef nonnull align 4 dereferenceable(12) %358)
  %374 = call noundef float @_ZNK7Vector316magnitudeSquaredEv(ptr noundef nonnull align 4 dereferenceable(12) %16)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %16) #5
  %375 = trunc nuw nsw i64 %indvars.iv to i32
  %376 = lshr i32 %375, 1
  %.cmp = icmp ult i64 %indvars.iv, 4
  %.v122 = select i1 %.cmp, i32 1, i32 -2
  %377 = add nsw i32 %.v122, %376
  %378 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %360, i32 noundef %377)
  %379 = load float, ptr %378, align 4, !tbaa !10
  %380 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef %377)
  %381 = load float, ptr %380, align 4, !tbaa !10
  %382 = fcmp olt float %379, %381
  br i1 %382, label %.thread110, label %383

383:                                              ; preds = %373
  %384 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %360, i32 noundef %377)
  %385 = load float, ptr %384, align 4, !tbaa !10
  %386 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef %377)
  %387 = load float, ptr %386, align 4, !tbaa !10
  %388 = fcmp ogt float %385, %387
  br i1 %388, label %.thread110, label %389

389:                                              ; preds = %383
  %.cmp116 = icmp ult i64 %indvars.iv, 2
  %.v123 = select i1 %.cmp116, i32 2, i32 -1
  %390 = add nsw i32 %.v123, %376
  %391 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %360, i32 noundef %390)
  %392 = load float, ptr %391, align 4, !tbaa !10
  %393 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef %390)
  %394 = load float, ptr %393, align 4, !tbaa !10
  %395 = fcmp olt float %392, %394
  br i1 %395, label %.thread110, label %396

396:                                              ; preds = %389
  %397 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %360, i32 noundef %390)
  %398 = load float, ptr %397, align 4, !tbaa !10
  %399 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef %390)
  %400 = load float, ptr %399, align 4, !tbaa !10
  %401 = fcmp ogt float %398, %400
  br i1 %401, label %.thread110, label %402

402:                                              ; preds = %396
  %403 = fcmp olt float %374, %.3129
  br i1 %403, label %404, label %406

404:                                              ; preds = %402
  %405 = call noundef nonnull align 4 dereferenceable(52) ptr @_ZN8geometry5types22segmentClosestPoints_taSERKS1_(ptr noundef nonnull align 4 dereferenceable(52) %0, ptr noundef nonnull align 4 dereferenceable(52) %15)
  br label %406

406:                                              ; preds = %402, %404
  %.4 = phi float [ %374, %404 ], [ %.3129, %402 ]
  %407 = fcmp uge float %374, 0x3E7AD7F2A0000000
  br i1 %407, label %.thread110, label %474

408:                                              ; preds = %370
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %17) #5
  %409 = trunc nuw nsw i64 %indvars.iv to i32
  %410 = lshr i32 %409, 1
  call void @_ZN8geometry7segment35clipSegmentAgainstAxisAlignedSquareERK7Vector3S3_RKNS_5types6aabb_tEi(ptr dead_on_unwind nonnull writable sret(%"struct.geometry::types::clippedSegment_t") align 4 %17, ptr noundef nonnull align 4 dereferenceable(12) %358, ptr noundef nonnull align 4 dereferenceable(12) %359, ptr noundef nonnull align 4 dereferenceable(24) %3, i32 noundef %410)
  %411 = load i8, ptr %17, align 4, !tbaa !12, !range !15, !noundef !16
  %412 = trunc nuw i8 %411 to i1
  br i1 %412, label %413, label %.thread100

.thread100:                                       ; preds = %408
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %17) #5
  br label %.thread110

413:                                              ; preds = %408
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %18) #5
  call void @_ZN8geometry7segment35clipSegmentAgainstAxisAlignedSquareERK7Vector3S3_RKNS_5types6aabb_tEi(ptr dead_on_unwind nonnull writable sret(%"struct.geometry::types::clippedSegment_t") align 4 %18, ptr noundef nonnull align 4 dereferenceable(12) %360, ptr noundef nonnull align 4 dereferenceable(12) %361, ptr noundef nonnull align 4 dereferenceable(24) %3, i32 noundef %410)
  %.cmp118 = icmp ult i64 %indvars.iv, 4
  %.v = select i1 %.cmp118, i32 1, i32 -2
  %414 = add nsw i32 %.v, %410
  %415 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %362, i32 noundef %414)
  %416 = load float, ptr %415, align 4, !tbaa !10
  %417 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef %414)
  %418 = load float, ptr %417, align 4, !tbaa !10
  %419 = fcmp olt float %416, %418
  br i1 %419, label %.thread105, label %420

420:                                              ; preds = %413
  %421 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %362, i32 noundef %414)
  %422 = load float, ptr %421, align 4, !tbaa !10
  %423 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef %414)
  %424 = load float, ptr %423, align 4, !tbaa !10
  %425 = fcmp ogt float %422, %424
  br i1 %425, label %.thread105, label %426

426:                                              ; preds = %420
  %.cmp120 = icmp ult i64 %indvars.iv, 2
  %.v121 = select i1 %.cmp120, i32 2, i32 -1
  %427 = add nsw i32 %.v121, %410
  %428 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %362, i32 noundef %427)
  %429 = load float, ptr %428, align 4, !tbaa !10
  %430 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef %427)
  %431 = load float, ptr %430, align 4, !tbaa !10
  %432 = fcmp olt float %429, %431
  br i1 %432, label %.thread105, label %433

433:                                              ; preds = %426
  %434 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %362, i32 noundef %427)
  %435 = load float, ptr %434, align 4, !tbaa !10
  %436 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef %427)
  %437 = load float, ptr %436, align 4, !tbaa !10
  %438 = fcmp ogt float %435, %437
  br i1 %438, label %.thread105, label %439

439:                                              ; preds = %433
  %440 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %363, i32 noundef %414)
  %441 = load float, ptr %440, align 4, !tbaa !10
  %442 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef %414)
  %443 = load float, ptr %442, align 4, !tbaa !10
  %444 = fcmp olt float %441, %443
  br i1 %444, label %.thread105, label %445

445:                                              ; preds = %439
  %446 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %363, i32 noundef %414)
  %447 = load float, ptr %446, align 4, !tbaa !10
  %448 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef %414)
  %449 = load float, ptr %448, align 4, !tbaa !10
  %450 = fcmp ogt float %447, %449
  br i1 %450, label %.thread105, label %451

451:                                              ; preds = %445
  %452 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %363, i32 noundef %427)
  %453 = load float, ptr %452, align 4, !tbaa !10
  %454 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %5, i32 noundef %427)
  %455 = load float, ptr %454, align 4, !tbaa !10
  %456 = fcmp olt float %453, %455
  br i1 %456, label %.thread105, label %457

457:                                              ; preds = %451
  %458 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %363, i32 noundef %427)
  %459 = load float, ptr %458, align 4, !tbaa !10
  %460 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef %427)
  %461 = load float, ptr %460, align 4, !tbaa !10
  %462 = fcmp ogt float %459, %461
  br i1 %462, label %.thread105, label %463

463:                                              ; preds = %457
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %19) #5
  call void @_ZNK7Vector3miERKS_(ptr dead_on_unwind nonnull writable sret(%class.Vector3) align 4 %19, ptr noundef nonnull align 4 dereferenceable(12) %364, ptr noundef nonnull align 4 dereferenceable(12) %362)
  %464 = call noundef float @_ZNK7Vector316magnitudeSquaredEv(ptr noundef nonnull align 4 dereferenceable(12) %19)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %19) #5
  %465 = fcmp ugt float %464, %.3129
  br i1 %465, label %471, label %466

466:                                              ; preds = %463
  store i32 2, ptr %0, align 4, !tbaa !5
  %467 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN7Vector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %365, ptr noundef nonnull align 4 dereferenceable(12) %364)
  %468 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN7Vector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %367, ptr noundef nonnull align 4 dereferenceable(12) %366)
  %469 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN7Vector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %368, ptr noundef nonnull align 4 dereferenceable(12) %362)
  %470 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN7Vector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %369, ptr noundef nonnull align 4 dereferenceable(12) %363)
  br label %471

471:                                              ; preds = %466, %463
  %.6 = phi float [ %464, %466 ], [ %.3129, %463 ]
  %472 = fcmp olt float %464, 0x3E7AD7F2A0000000
  br i1 %472, label %.thread105, label %473

.thread105:                                       ; preds = %457, %451, %445, %439, %433, %426, %420, %413, %471
  %.386.ph = phi i32 [ 10, %413 ], [ 10, %420 ], [ 10, %426 ], [ 10, %433 ], [ 10, %439 ], [ 10, %445 ], [ 10, %451 ], [ 10, %457 ], [ 8, %471 ]
  %.7.ph = phi float [ %.3129, %413 ], [ %.3129, %420 ], [ %.3129, %426 ], [ %.3129, %433 ], [ %.3129, %439 ], [ %.3129, %445 ], [ %.3129, %451 ], [ %.3129, %457 ], [ %.6, %471 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %17) #5
  br label %474

473:                                              ; preds = %471
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %17) #5
  br label %.thread110

.thread110:                                       ; preds = %.thread100, %473, %370, %396, %389, %383, %373, %406
  %.10.ph = phi float [ %.3129, %370 ], [ %.6, %473 ], [ %.3129, %.thread100 ], [ %.3129, %396 ], [ %.3129, %389 ], [ %.3129, %383 ], [ %.3129, %373 ], [ %.4, %406 ]
  call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %15) #5
  br label %475

474:                                              ; preds = %.thread105, %406
  %.588 = phi i32 [ 8, %406 ], [ %.386.ph, %.thread105 ]
  %.10 = phi float [ %.4, %406 ], [ %.7.ph, %.thread105 ]
  call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %15) #5
  %cond = icmp eq i32 %.588, 10
  br i1 %cond, label %475, label %476

475:                                              ; preds = %474, %.thread110
  %.10113 = phi float [ %.10.ph, %.thread110 ], [ %.10, %474 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 6
  br i1 %exitcond.not, label %476, label %370, !llvm.loop !17

476:                                              ; preds = %474, %475
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %8) #5
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %476
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %5) #5
  ret void
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK7Vector39magnitudeEv(ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNK7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12), i32 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN7Vector3ixEj(ptr noundef nonnull align 4 dereferenceable(12), i32 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12), float noundef, float noundef, float noundef) unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(52) ptr @_ZN8geometry5types22segmentClosestPoints_taSERKS1_(ptr noundef nonnull align 4 dereferenceable(52), ptr noundef nonnull align 4 dereferenceable(52)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7Vector3dvERKf(ptr dead_on_unwind noalias writable sret(%class.Vector3) align 4, ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8geometry7segment35clipSegmentAgainstAxisAlignedSquareERK7Vector3S3_RKNS_5types6aabb_tEi(ptr dead_on_unwind noalias writable sret(%"struct.geometry::types::clippedSegment_t") align 4, ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(24), i32 noundef) local_unnamed_addr #1

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"_ZTSN8geometry5types22segmentClosestPoints_tE", !7, i64 0, !8, i64 4, !8, i64 28}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!11, !11, i64 0}
!11 = !{!"float", !8, i64 0}
!12 = !{!13, !14, i64 0}
!13 = !{!"_ZTSN8geometry5types16clippedSegment_tE", !14, i64 0, !8, i64 4}
!14 = !{!"bool", !8, i64 0}
!15 = !{i8 0, i8 2}
!16 = !{}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: ADCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass