; LLVM IR from ronan-kerviche/glip-lib :: GLIP-Lib/src/Core/Geometry.ll (ZN4Glip12CorePipeline13GeometryModel15generateNormalsEv)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.2" = type { i8 }
%"class.std::allocator.5" = type { i8 }
%"class.Glip::CorePipeline::GeometryModel" = type { ptr, %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.0", i32, i8, i8, i32, i32, i32, i32 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str.2 = external hidden unnamed_addr constant [88 x i8], align 1
@_ZTIN4Glip9ExceptionE = external constant ptr
@.str.11 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [13 x i8], align 1

declare i32 @__gxx_personality_v0(...)

declare ptr @__cxa_allocate_exception(i64)

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(4)) #2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

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

declare void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(4)) unnamed_addr #4

; Function Attrs: nounwind
declare void @_ZN4Glip9ExceptionD1Ev(ptr noundef nonnull align 8 dereferenceable(152)) unnamed_addr #5

declare void @__cxa_throw(ptr, ptr, ptr)

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3 align 2

declare void @__cxa_free_exception(ptr)

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4Glip12CorePipeline13GeometryModel15generateNormalsEv(ptr noundef nonnull align 8 dereferenceable(128) %0) #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  %4 = alloca float, align 4
  %5 = alloca i32, align 4
  %6 = alloca %"class.std::vector.0", align 8
  %7 = alloca i32, align 4
  %8 = alloca %"class.std::allocator.2", align 1
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca float, align 4
  %18 = alloca float, align 4
  %19 = alloca float, align 4
  %20 = alloca float, align 4
  %21 = alloca float, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca float, align 4
  %27 = alloca float, align 4
  %28 = alloca float, align 4
  %29 = alloca float, align 4
  %30 = alloca float, align 4
  %31 = alloca float, align 4
  %32 = alloca float, align 4
  %33 = alloca float, align 4
  %34 = alloca float, align 4
  %35 = alloca float, align 4
  %36 = alloca float, align 4
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator.5", align 1
  %42 = alloca i32, align 4
  %43 = alloca i1, align 1
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %46 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #8
  %47 = call noundef i32 @_ZNK4Glip12CorePipeline13GeometryModel14getNumElementsEv(ptr noundef nonnull align 8 dereferenceable(128) %46)
  store i32 %47, ptr %3, align 4, !tbaa !9
  %48 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 2
  call void @_ZNSt6vectorIfSaIfEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %48) #8
  %49 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 2
  %50 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 1
  %51 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %50) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #8
  store float 0.000000e+00, ptr %4, align 4, !tbaa !11
  call void @_ZNSt6vectorIfSaIfEE6assignEmRKf(ptr noundef nonnull align 8 dereferenceable(24) %49, i64 noundef %51, ptr noundef nonnull align 4 dereferenceable(4) %4)
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #8
  %52 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 9
  %53 = load i32, ptr %52, align 4, !tbaa !13
  %54 = icmp sle i32 %53, 1
  br i1 %54, label %55, label %56

55:                                               ; preds = %1
  store i32 1, ptr %5, align 4
  br label %685

56:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 24, ptr %6) #8
  %57 = call noundef i32 @_ZNK4Glip12CorePipeline13GeometryModel14getNumVerticesEv(ptr noundef nonnull align 8 dereferenceable(128) %46)
  %58 = zext i32 %57 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #8
  store i32 0, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #8
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  invoke void @_ZNSt6vectorIjSaIjEEC2EmRKjRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %58, ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %59 unwind label %65

59:                                               ; preds = %56
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #8
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %60

60:                                               ; preds = %625, %59
  %61 = load i32, ptr %11, align 4, !tbaa !9
  %62 = load i32, ptr %3, align 4, !tbaa !9
  %63 = icmp ult i32 %61, %62
  br i1 %63, label %69, label %64

64:                                               ; preds = %60
  store i32 2, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #8
  br label %629

65:                                               ; preds = %56
  %66 = landingpad { ptr, i32 }
          cleanup
  %67 = extractvalue { ptr, i32 } %66, 0
  store ptr %67, ptr %9, align 8
  %68 = extractvalue { ptr, i32 } %66, 1
  store i32 %68, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #8
  br label %688

69:                                               ; preds = %60
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #8
  %70 = load i32, ptr %11, align 4, !tbaa !9
  %71 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 9
  %72 = load i32, ptr %71, align 4, !tbaa !13
  %73 = mul i32 %70, %72
  store i32 %73, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #8
  %74 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 9
  %75 = load i32, ptr %74, align 4, !tbaa !13
  %76 = icmp sge i32 %75, 3
  br i1 %76, label %77, label %80

77:                                               ; preds = %69
  %78 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 9
  %79 = load i32, ptr %78, align 4, !tbaa !13
  br label %81

80:                                               ; preds = %69
  br label %81

81:                                               ; preds = %80, %77
  %82 = phi i32 [ %79, %77 ], [ 1, %80 ]
  store i32 %82, ptr %13, align 4, !tbaa !9
  %83 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %84 = load i32, ptr %83, align 8, !tbaa !25
  %85 = icmp eq i32 %84, 2
  br i1 %85, label %86, label %239

86:                                               ; preds = %81
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #8
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %87

87:                                               ; preds = %235, %86
  %88 = load i32, ptr %14, align 4, !tbaa !9
  %89 = load i32, ptr %13, align 4, !tbaa !9
  %90 = icmp ult i32 %88, %89
  br i1 %90, label %92, label %91

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

92:                                               ; preds = %87
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #8
  %93 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 4
  %94 = load i32, ptr %12, align 4, !tbaa !9
  %95 = load i32, ptr %14, align 4, !tbaa !9
  %96 = add i32 %94, %95
  %97 = zext i32 %96 to i64
  %98 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %93, i64 noundef %97) #8
  %99 = load i32, ptr %98, align 4, !tbaa !9
  store i32 %99, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  %100 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 4
  %101 = load i32, ptr %12, align 4, !tbaa !9
  %102 = load i32, ptr %14, align 4, !tbaa !9
  %103 = add i32 %102, 1
  %104 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 9
  %105 = load i32, ptr %104, align 4, !tbaa !13
  %106 = urem i32 %103, %105
  %107 = add i32 %101, %106
  %108 = zext i32 %107 to i64
  %109 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %100, i64 noundef %108) #8
  %110 = load i32, ptr %109, align 4, !tbaa !9
  store i32 %110, ptr %16, align 4, !tbaa !9
  %111 = load i32, ptr %15, align 4, !tbaa !9
  %112 = zext i32 %111 to i64
  %113 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 1
  %114 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %113) #8
  %115 = icmp ult i64 %112, %114
  br i1 %115, label %116, label %234

116:                                              ; preds = %92
  %117 = load i32, ptr %16, align 4, !tbaa !9
  %118 = zext i32 %117 to i64
  %119 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 1
  %120 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %119) #8
  %121 = icmp ult i64 %118, %120
  br i1 %121, label %122, label %234

122:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  %123 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 1
  %124 = load i32, ptr %16, align 4, !tbaa !9
  %125 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %126 = load i32, ptr %125, align 8, !tbaa !25
  %127 = mul i32 %124, %126
  %128 = add i32 %127, 0
  %129 = zext i32 %128 to i64
  %130 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %123, i64 noundef %129) #8
  %131 = load float, ptr %130, align 4, !tbaa !11
  %132 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 1
  %133 = load i32, ptr %15, align 4, !tbaa !9
  %134 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %135 = load i32, ptr %134, align 8, !tbaa !25
  %136 = mul i32 %133, %135
  %137 = add i32 %136, 0
  %138 = zext i32 %137 to i64
  %139 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %132, i64 noundef %138) #8
  %140 = load float, ptr %139, align 4, !tbaa !11
  %141 = fsub float %131, %140
  store float %141, ptr %17, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  %142 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 1
  %143 = load i32, ptr %16, align 4, !tbaa !9
  %144 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %145 = load i32, ptr %144, align 8, !tbaa !25
  %146 = mul i32 %143, %145
  %147 = add i32 %146, 1
  %148 = zext i32 %147 to i64
  %149 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %142, i64 noundef %148) #8
  %150 = load float, ptr %149, align 4, !tbaa !11
  %151 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 1
  %152 = load i32, ptr %15, align 4, !tbaa !9
  %153 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %154 = load i32, ptr %153, align 8, !tbaa !25
  %155 = mul i32 %152, %154
  %156 = add i32 %155, 1
  %157 = zext i32 %156 to i64
  %158 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %151, i64 noundef %157) #8
  %159 = load float, ptr %158, align 4, !tbaa !11
  %160 = fsub float %150, %159
  store float %160, ptr %18, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #8
  %161 = load float, ptr %17, align 4, !tbaa !11
  %162 = load float, ptr %17, align 4, !tbaa !11
  %163 = load float, ptr %18, align 4, !tbaa !11
  %164 = load float, ptr %18, align 4, !tbaa !11
  %165 = fmul float %163, %164
  %166 = call float @llvm.fmuladd.f32(float %161, float %162, float %165)
  %167 = invoke noundef float @_ZSt4sqrtf(float noundef %166)
          to label %168 unwind label %230

168:                                              ; preds = %122
  store float %167, ptr %19, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #8
  %169 = load float, ptr %18, align 4, !tbaa !11
  %170 = fneg float %169
  %171 = load float, ptr %19, align 4, !tbaa !11
  %172 = fdiv float %170, %171
  store float %172, ptr %20, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  %173 = load float, ptr %17, align 4, !tbaa !11
  %174 = load float, ptr %19, align 4, !tbaa !11
  %175 = fdiv float %173, %174
  store float %175, ptr %21, align 4, !tbaa !11
  %176 = load float, ptr %20, align 4, !tbaa !11
  %177 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 2
  %178 = load i32, ptr %15, align 4, !tbaa !9
  %179 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %180 = load i32, ptr %179, align 8, !tbaa !25
  %181 = mul i32 %178, %180
  %182 = add i32 %181, 0
  %183 = zext i32 %182 to i64
  %184 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %177, i64 noundef %183) #8
  %185 = load float, ptr %184, align 4, !tbaa !11
  %186 = fadd float %185, %176
  store float %186, ptr %184, align 4, !tbaa !11
  %187 = load float, ptr %21, align 4, !tbaa !11
  %188 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 2
  %189 = load i32, ptr %15, align 4, !tbaa !9
  %190 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %191 = load i32, ptr %190, align 8, !tbaa !25
  %192 = mul i32 %189, %191
  %193 = add i32 %192, 1
  %194 = zext i32 %193 to i64
  %195 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %188, i64 noundef %194) #8
  %196 = load float, ptr %195, align 4, !tbaa !11
  %197 = fadd float %196, %187
  store float %197, ptr %195, align 4, !tbaa !11
  %198 = load i32, ptr %15, align 4, !tbaa !9
  %199 = zext i32 %198 to i64
  %200 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %199) #8
  %201 = load i32, ptr %200, align 4, !tbaa !9
  %202 = add i32 %201, 1
  store i32 %202, ptr %200, align 4, !tbaa !9
  %203 = load float, ptr %20, align 4, !tbaa !11
  %204 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 2
  %205 = load i32, ptr %16, align 4, !tbaa !9
  %206 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %207 = load i32, ptr %206, align 8, !tbaa !25
  %208 = mul i32 %205, %207
  %209 = add i32 %208, 0
  %210 = zext i32 %209 to i64
  %211 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %204, i64 noundef %210) #8
  %212 = load float, ptr %211, align 4, !tbaa !11
  %213 = fadd float %212, %203
  store float %213, ptr %211, align 4, !tbaa !11
  %214 = load float, ptr %21, align 4, !tbaa !11
  %215 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 2
  %216 = load i32, ptr %16, align 4, !tbaa !9
  %217 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %218 = load i32, ptr %217, align 8, !tbaa !25
  %219 = mul i32 %216, %218
  %220 = add i32 %219, 1
  %221 = zext i32 %220 to i64
  %222 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %215, i64 noundef %221) #8
  %223 = load float, ptr %222, align 4, !tbaa !11
  %224 = fadd float %223, %214
  store float %224, ptr %222, align 4, !tbaa !11
  %225 = load i32, ptr %16, align 4, !tbaa !9
  %226 = zext i32 %225 to i64
  %227 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %226) #8
  %228 = load i32, ptr %227, align 4, !tbaa !9
  %229 = add i32 %228, 1
  store i32 %229, ptr %227, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  br label %234

230:                                              ; preds = %122
  %231 = landingpad { ptr, i32 }
          cleanup
  %232 = extractvalue { ptr, i32 } %231, 0
  store ptr %232, ptr %9, align 8
  %233 = extractvalue { ptr, i32 } %231, 1
  store i32 %233, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  br label %628

234:                                              ; preds = %168, %116, %92
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  br label %235

235:                                              ; preds = %234
  %236 = load i32, ptr %14, align 4, !tbaa !9
  %237 = add i32 %236, 1
  store i32 %237, ptr %14, align 4, !tbaa !9
  br label %87, !llvm.loop !26

238:                                              ; preds = %91
  br label %624

239:                                              ; preds = %81
  %240 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %241 = load i32, ptr %240, align 8, !tbaa !25
  %242 = icmp eq i32 %241, 3
  br i1 %242, label %243, label %588

243:                                              ; preds = %239
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %244

244:                                              ; preds = %584, %243
  %245 = load i32, ptr %22, align 4, !tbaa !9
  %246 = load i32, ptr %13, align 4, !tbaa !9
  %247 = icmp ult i32 %245, %246
  br i1 %247, label %249, label %248

248:                                              ; preds = %244
  store i32 8, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %587

249:                                              ; preds = %244
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #8
  %250 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 4
  %251 = load i32, ptr %12, align 4, !tbaa !9
  %252 = load i32, ptr %22, align 4, !tbaa !9
  %253 = add i32 %251, %252
  %254 = zext i32 %253 to i64
  %255 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %250, i64 noundef %254) #8
  %256 = load i32, ptr %255, align 4, !tbaa !9
  store i32 %256, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  %257 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 4
  %258 = load i32, ptr %12, align 4, !tbaa !9
  %259 = load i32, ptr %22, align 4, !tbaa !9
  %260 = add i32 %259, 1
  %261 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 9
  %262 = load i32, ptr %261, align 4, !tbaa !13
  %263 = urem i32 %260, %262
  %264 = add i32 %258, %263
  %265 = zext i32 %264 to i64
  %266 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %257, i64 noundef %265) #8
  %267 = load i32, ptr %266, align 4, !tbaa !9
  store i32 %267, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  %268 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 4
  %269 = load i32, ptr %12, align 4, !tbaa !9
  %270 = load i32, ptr %22, align 4, !tbaa !9
  %271 = add i32 %270, 2
  %272 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 9
  %273 = load i32, ptr %272, align 4, !tbaa !13
  %274 = urem i32 %271, %273
  %275 = add i32 %269, %274
  %276 = zext i32 %275 to i64
  %277 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %268, i64 noundef %276) #8
  %278 = load i32, ptr %277, align 4, !tbaa !9
  store i32 %278, ptr %25, align 4, !tbaa !9
  %279 = load i32, ptr %23, align 4, !tbaa !9
  %280 = zext i32 %279 to i64
  %281 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 1
  %282 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %281) #8
  %283 = icmp ult i64 %280, %282
  br i1 %283, label %284, label %583

284:                                              ; preds = %249
  %285 = load i32, ptr %24, align 4, !tbaa !9
  %286 = zext i32 %285 to i64
  %287 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 1
  %288 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %287) #8
  %289 = icmp ult i64 %286, %288
  br i1 %289, label %290, label %583

290:                                              ; preds = %284
  %291 = load i32, ptr %25, align 4, !tbaa !9
  %292 = zext i32 %291 to i64
  %293 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 1
  %294 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %293) #8
  %295 = icmp ult i64 %292, %294
  br i1 %295, label %296, label %583

296:                                              ; preds = %290
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #8
  %297 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 1
  %298 = load i32, ptr %24, align 4, !tbaa !9
  %299 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %300 = load i32, ptr %299, align 8, !tbaa !25
  %301 = mul i32 %298, %300
  %302 = add i32 %301, 0
  %303 = zext i32 %302 to i64
  %304 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %297, i64 noundef %303) #8
  %305 = load float, ptr %304, align 4, !tbaa !11
  %306 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 1
  %307 = load i32, ptr %23, align 4, !tbaa !9
  %308 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %309 = load i32, ptr %308, align 8, !tbaa !25
  %310 = mul i32 %307, %309
  %311 = add i32 %310, 0
  %312 = zext i32 %311 to i64
  %313 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %306, i64 noundef %312) #8
  %314 = load float, ptr %313, align 4, !tbaa !11
  %315 = fsub float %305, %314
  store float %315, ptr %26, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #8
  %316 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 1
  %317 = load i32, ptr %24, align 4, !tbaa !9
  %318 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %319 = load i32, ptr %318, align 8, !tbaa !25
  %320 = mul i32 %317, %319
  %321 = add i32 %320, 1
  %322 = zext i32 %321 to i64
  %323 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %316, i64 noundef %322) #8
  %324 = load float, ptr %323, align 4, !tbaa !11
  %325 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 1
  %326 = load i32, ptr %23, align 4, !tbaa !9
  %327 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %328 = load i32, ptr %327, align 8, !tbaa !25
  %329 = mul i32 %326, %328
  %330 = add i32 %329, 1
  %331 = zext i32 %330 to i64
  %332 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %325, i64 noundef %331) #8
  %333 = load float, ptr %332, align 4, !tbaa !11
  %334 = fsub float %324, %333
  store float %334, ptr %27, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #8
  %335 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 1
  %336 = load i32, ptr %24, align 4, !tbaa !9
  %337 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %338 = load i32, ptr %337, align 8, !tbaa !25
  %339 = mul i32 %336, %338
  %340 = add i32 %339, 2
  %341 = zext i32 %340 to i64
  %342 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %335, i64 noundef %341) #8
  %343 = load float, ptr %342, align 4, !tbaa !11
  %344 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 1
  %345 = load i32, ptr %23, align 4, !tbaa !9
  %346 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %347 = load i32, ptr %346, align 8, !tbaa !25
  %348 = mul i32 %345, %347
  %349 = add i32 %348, 2
  %350 = zext i32 %349 to i64
  %351 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %344, i64 noundef %350) #8
  %352 = load float, ptr %351, align 4, !tbaa !11
  %353 = fsub float %343, %352
  store float %353, ptr %28, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #8
  %354 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 1
  %355 = load i32, ptr %25, align 4, !tbaa !9
  %356 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %357 = load i32, ptr %356, align 8, !tbaa !25
  %358 = mul i32 %355, %357
  %359 = add i32 %358, 0
  %360 = zext i32 %359 to i64
  %361 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %354, i64 noundef %360) #8
  %362 = load float, ptr %361, align 4, !tbaa !11
  %363 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 1
  %364 = load i32, ptr %24, align 4, !tbaa !9
  %365 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %366 = load i32, ptr %365, align 8, !tbaa !25
  %367 = mul i32 %364, %366
  %368 = add i32 %367, 0
  %369 = zext i32 %368 to i64
  %370 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %363, i64 noundef %369) #8
  %371 = load float, ptr %370, align 4, !tbaa !11
  %372 = fsub float %362, %371
  store float %372, ptr %29, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #8
  %373 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 1
  %374 = load i32, ptr %25, align 4, !tbaa !9
  %375 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %376 = load i32, ptr %375, align 8, !tbaa !25
  %377 = mul i32 %374, %376
  %378 = add i32 %377, 1
  %379 = zext i32 %378 to i64
  %380 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %373, i64 noundef %379) #8
  %381 = load float, ptr %380, align 4, !tbaa !11
  %382 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 1
  %383 = load i32, ptr %24, align 4, !tbaa !9
  %384 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %385 = load i32, ptr %384, align 8, !tbaa !25
  %386 = mul i32 %383, %385
  %387 = add i32 %386, 1
  %388 = zext i32 %387 to i64
  %389 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %382, i64 noundef %388) #8
  %390 = load float, ptr %389, align 4, !tbaa !11
  %391 = fsub float %381, %390
  store float %391, ptr %30, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #8
  %392 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 1
  %393 = load i32, ptr %25, align 4, !tbaa !9
  %394 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %395 = load i32, ptr %394, align 8, !tbaa !25
  %396 = mul i32 %393, %395
  %397 = add i32 %396, 2
  %398 = zext i32 %397 to i64
  %399 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %392, i64 noundef %398) #8
  %400 = load float, ptr %399, align 4, !tbaa !11
  %401 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 1
  %402 = load i32, ptr %24, align 4, !tbaa !9
  %403 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %404 = load i32, ptr %403, align 8, !tbaa !25
  %405 = mul i32 %402, %404
  %406 = add i32 %405, 2
  %407 = zext i32 %406 to i64
  %408 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %401, i64 noundef %407) #8
  %409 = load float, ptr %408, align 4, !tbaa !11
  %410 = fsub float %400, %409
  store float %410, ptr %31, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #8
  %411 = load float, ptr %26, align 4, !tbaa !11
  %412 = load float, ptr %26, align 4, !tbaa !11
  %413 = load float, ptr %27, align 4, !tbaa !11
  %414 = load float, ptr %27, align 4, !tbaa !11
  %415 = fmul float %413, %414
  %416 = call float @llvm.fmuladd.f32(float %411, float %412, float %415)
  %417 = invoke noundef float @_ZSt4sqrtf(float noundef %416)
          to label %418 unwind label %574

418:                                              ; preds = %296
  store float %417, ptr %32, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #8
  %419 = load float, ptr %29, align 4, !tbaa !11
  %420 = load float, ptr %29, align 4, !tbaa !11
  %421 = load float, ptr %30, align 4, !tbaa !11
  %422 = load float, ptr %30, align 4, !tbaa !11
  %423 = fmul float %421, %422
  %424 = call float @llvm.fmuladd.f32(float %419, float %420, float %423)
  %425 = invoke noundef float @_ZSt4sqrtf(float noundef %424)
          to label %426 unwind label %578

426:                                              ; preds = %418
  store float %425, ptr %33, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #8
  %427 = load float, ptr %27, align 4, !tbaa !11
  %428 = load float, ptr %31, align 4, !tbaa !11
  %429 = load float, ptr %30, align 4, !tbaa !11
  %430 = load float, ptr %28, align 4, !tbaa !11
  %431 = fmul float %429, %430
  %432 = fneg float %431
  %433 = call float @llvm.fmuladd.f32(float %427, float %428, float %432)
  %434 = load float, ptr %32, align 4, !tbaa !11
  %435 = load float, ptr %33, align 4, !tbaa !11
  %436 = fmul float %434, %435
  %437 = fdiv float %433, %436
  store float %437, ptr %34, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #8
  %438 = load float, ptr %29, align 4, !tbaa !11
  %439 = load float, ptr %28, align 4, !tbaa !11
  %440 = load float, ptr %26, align 4, !tbaa !11
  %441 = load float, ptr %31, align 4, !tbaa !11
  %442 = fmul float %440, %441
  %443 = fneg float %442
  %444 = call float @llvm.fmuladd.f32(float %438, float %439, float %443)
  %445 = load float, ptr %32, align 4, !tbaa !11
  %446 = load float, ptr %33, align 4, !tbaa !11
  %447 = fmul float %445, %446
  %448 = fdiv float %444, %447
  store float %448, ptr %35, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #8
  %449 = load float, ptr %26, align 4, !tbaa !11
  %450 = load float, ptr %30, align 4, !tbaa !11
  %451 = load float, ptr %29, align 4, !tbaa !11
  %452 = load float, ptr %27, align 4, !tbaa !11
  %453 = fmul float %451, %452
  %454 = fneg float %453
  %455 = call float @llvm.fmuladd.f32(float %449, float %450, float %454)
  %456 = load float, ptr %32, align 4, !tbaa !11
  %457 = load float, ptr %33, align 4, !tbaa !11
  %458 = fmul float %456, %457
  %459 = fdiv float %455, %458
  store float %459, ptr %36, align 4, !tbaa !11
  %460 = load float, ptr %34, align 4, !tbaa !11
  %461 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 2
  %462 = load i32, ptr %23, align 4, !tbaa !9
  %463 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %464 = load i32, ptr %463, align 8, !tbaa !25
  %465 = mul i32 %462, %464
  %466 = add i32 %465, 0
  %467 = zext i32 %466 to i64
  %468 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %461, i64 noundef %467) #8
  %469 = load float, ptr %468, align 4, !tbaa !11
  %470 = fadd float %469, %460
  store float %470, ptr %468, align 4, !tbaa !11
  %471 = load float, ptr %35, align 4, !tbaa !11
  %472 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 2
  %473 = load i32, ptr %23, align 4, !tbaa !9
  %474 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %475 = load i32, ptr %474, align 8, !tbaa !25
  %476 = mul i32 %473, %475
  %477 = add i32 %476, 1
  %478 = zext i32 %477 to i64
  %479 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %472, i64 noundef %478) #8
  %480 = load float, ptr %479, align 4, !tbaa !11
  %481 = fadd float %480, %471
  store float %481, ptr %479, align 4, !tbaa !11
  %482 = load float, ptr %36, align 4, !tbaa !11
  %483 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 2
  %484 = load i32, ptr %23, align 4, !tbaa !9
  %485 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %486 = load i32, ptr %485, align 8, !tbaa !25
  %487 = mul i32 %484, %486
  %488 = add i32 %487, 2
  %489 = zext i32 %488 to i64
  %490 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %483, i64 noundef %489) #8
  %491 = load float, ptr %490, align 4, !tbaa !11
  %492 = fadd float %491, %482
  store float %492, ptr %490, align 4, !tbaa !11
  %493 = load i32, ptr %23, align 4, !tbaa !9
  %494 = zext i32 %493 to i64
  %495 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %494) #8
  %496 = load i32, ptr %495, align 4, !tbaa !9
  %497 = add i32 %496, 1
  store i32 %497, ptr %495, align 4, !tbaa !9
  %498 = load float, ptr %34, align 4, !tbaa !11
  %499 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 2
  %500 = load i32, ptr %24, align 4, !tbaa !9
  %501 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %502 = load i32, ptr %501, align 8, !tbaa !25
  %503 = mul i32 %500, %502
  %504 = add i32 %503, 0
  %505 = zext i32 %504 to i64
  %506 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %499, i64 noundef %505) #8
  %507 = load float, ptr %506, align 4, !tbaa !11
  %508 = fadd float %507, %498
  store float %508, ptr %506, align 4, !tbaa !11
  %509 = load float, ptr %35, align 4, !tbaa !11
  %510 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 2
  %511 = load i32, ptr %24, align 4, !tbaa !9
  %512 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %513 = load i32, ptr %512, align 8, !tbaa !25
  %514 = mul i32 %511, %513
  %515 = add i32 %514, 1
  %516 = zext i32 %515 to i64
  %517 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %510, i64 noundef %516) #8
  %518 = load float, ptr %517, align 4, !tbaa !11
  %519 = fadd float %518, %509
  store float %519, ptr %517, align 4, !tbaa !11
  %520 = load float, ptr %36, align 4, !tbaa !11
  %521 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 2
  %522 = load i32, ptr %24, align 4, !tbaa !9
  %523 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %524 = load i32, ptr %523, align 8, !tbaa !25
  %525 = mul i32 %522, %524
  %526 = add i32 %525, 2
  %527 = zext i32 %526 to i64
  %528 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %521, i64 noundef %527) #8
  %529 = load float, ptr %528, align 4, !tbaa !11
  %530 = fadd float %529, %520
  store float %530, ptr %528, align 4, !tbaa !11
  %531 = load i32, ptr %24, align 4, !tbaa !9
  %532 = zext i32 %531 to i64
  %533 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %532) #8
  %534 = load i32, ptr %533, align 4, !tbaa !9
  %535 = add i32 %534, 1
  store i32 %535, ptr %533, align 4, !tbaa !9
  %536 = load float, ptr %34, align 4, !tbaa !11
  %537 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 2
  %538 = load i32, ptr %25, align 4, !tbaa !9
  %539 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %540 = load i32, ptr %539, align 8, !tbaa !25
  %541 = mul i32 %538, %540
  %542 = add i32 %541, 0
  %543 = zext i32 %542 to i64
  %544 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %537, i64 noundef %543) #8
  %545 = load float, ptr %544, align 4, !tbaa !11
  %546 = fadd float %545, %536
  store float %546, ptr %544, align 4, !tbaa !11
  %547 = load float, ptr %35, align 4, !tbaa !11
  %548 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 2
  %549 = load i32, ptr %25, align 4, !tbaa !9
  %550 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %551 = load i32, ptr %550, align 8, !tbaa !25
  %552 = mul i32 %549, %551
  %553 = add i32 %552, 1
  %554 = zext i32 %553 to i64
  %555 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %548, i64 noundef %554) #8
  %556 = load float, ptr %555, align 4, !tbaa !11
  %557 = fadd float %556, %547
  store float %557, ptr %555, align 4, !tbaa !11
  %558 = load float, ptr %36, align 4, !tbaa !11
  %559 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 2
  %560 = load i32, ptr %25, align 4, !tbaa !9
  %561 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %562 = load i32, ptr %561, align 8, !tbaa !25
  %563 = mul i32 %560, %562
  %564 = add i32 %563, 2
  %565 = zext i32 %564 to i64
  %566 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %559, i64 noundef %565) #8
  %567 = load float, ptr %566, align 4, !tbaa !11
  %568 = fadd float %567, %558
  store float %568, ptr %566, align 4, !tbaa !11
  %569 = load i32, ptr %25, align 4, !tbaa !9
  %570 = zext i32 %569 to i64
  %571 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %570) #8
  %572 = load i32, ptr %571, align 4, !tbaa !9
  %573 = add i32 %572, 1
  store i32 %573, ptr %571, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  br label %583

574:                                              ; preds = %296
  %575 = landingpad { ptr, i32 }
          cleanup
  %576 = extractvalue { ptr, i32 } %575, 0
  store ptr %576, ptr %9, align 8
  %577 = extractvalue { ptr, i32 } %575, 1
  store i32 %577, ptr %10, align 4
  br label %582

578:                                              ; preds = %418
  %579 = landingpad { ptr, i32 }
          cleanup
  %580 = extractvalue { ptr, i32 } %579, 0
  store ptr %580, ptr %9, align 8
  %581 = extractvalue { ptr, i32 } %579, 1
  store i32 %581, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  br label %582

582:                                              ; preds = %578, %574
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %628

583:                                              ; preds = %426, %290, %284, %249
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  br label %584

584:                                              ; preds = %583
  %585 = load i32, ptr %22, align 4, !tbaa !9
  %586 = add i32 %585, 1
  store i32 %586, ptr %22, align 4, !tbaa !9
  br label %244, !llvm.loop !28

587:                                              ; preds = %248
  br label %623

588:                                              ; preds = %239
  store i1 true, ptr %43, align 1
  %589 = call ptr @__cxa_allocate_exception(i64 152) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #8
  %590 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  invoke void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %39, ptr noundef nonnull align 4 dereferenceable(4) %590)
          to label %591 unwind label %596

591:                                              ; preds = %588
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %38, ptr noundef @.str.11, ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %592 unwind label %600

592:                                              ; preds = %591
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %37, ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef @.str.12)
          to label %593 unwind label %604

593:                                              ; preds = %592
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %594 unwind label %608

594:                                              ; preds = %593
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #8
  store i32 1, ptr %42, align 4, !tbaa !29
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %589, ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef %40, i32 noundef 593, ptr noundef nonnull align 4 dereferenceable(4) %42)
          to label %595 unwind label %612

595:                                              ; preds = %594
  store i1 false, ptr %43, align 1
  invoke void @__cxa_throw(ptr %589, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #9
          to label %694 unwind label %612

596:                                              ; preds = %588
  %597 = landingpad { ptr, i32 }
          cleanup
  %598 = extractvalue { ptr, i32 } %597, 0
  store ptr %598, ptr %9, align 8
  %599 = extractvalue { ptr, i32 } %597, 1
  store i32 %599, ptr %10, align 4
  br label %619

600:                                              ; preds = %591
  %601 = landingpad { ptr, i32 }
          cleanup
  %602 = extractvalue { ptr, i32 } %601, 0
  store ptr %602, ptr %9, align 8
  %603 = extractvalue { ptr, i32 } %601, 1
  store i32 %603, ptr %10, align 4
  br label %618

604:                                              ; preds = %592
  %605 = landingpad { ptr, i32 }
          cleanup
  %606 = extractvalue { ptr, i32 } %605, 0
  store ptr %606, ptr %9, align 8
  %607 = extractvalue { ptr, i32 } %605, 1
  store i32 %607, ptr %10, align 4
  br label %617

608:                                              ; preds = %593
  %609 = landingpad { ptr, i32 }
          cleanup
  %610 = extractvalue { ptr, i32 } %609, 0
  store ptr %610, ptr %9, align 8
  %611 = extractvalue { ptr, i32 } %609, 1
  store i32 %611, ptr %10, align 4
  br label %616

612:                                              ; preds = %595, %594
  %613 = landingpad { ptr, i32 }
          cleanup
  %614 = extractvalue { ptr, i32 } %613, 0
  store ptr %614, ptr %9, align 8
  %615 = extractvalue { ptr, i32 } %613, 1
  store i32 %615, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #8
  br label %616

616:                                              ; preds = %612, %608
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  br label %617

617:                                              ; preds = %616, %604
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  br label %618

618:                                              ; preds = %617, %600
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #8
  br label %619

619:                                              ; preds = %618, %596
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #8
  %620 = load i1, ptr %43, align 1
  br i1 %620, label %621, label %622

621:                                              ; preds = %619
  call void @__cxa_free_exception(ptr %589) #8
  br label %622

622:                                              ; preds = %621, %619
  br label %628

623:                                              ; preds = %587
  br label %624

624:                                              ; preds = %623, %238
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  br label %625

625:                                              ; preds = %624
  %626 = load i32, ptr %11, align 4, !tbaa !9
  %627 = add i32 %626, 1
  store i32 %627, ptr %11, align 4, !tbaa !9
  br label %60, !llvm.loop !31

628:                                              ; preds = %622, %582, %230
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #8
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  br label %688

629:                                              ; preds = %64
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #8
  store i32 0, ptr %44, align 4, !tbaa !9
  br label %630

630:                                              ; preds = %681, %629
  %631 = load i32, ptr %44, align 4, !tbaa !9
  %632 = zext i32 %631 to i64
  %633 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  %634 = icmp ult i64 %632, %633
  br i1 %634, label %636, label %635

635:                                              ; preds = %630
  store i32 11, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  br label %684

636:                                              ; preds = %630
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #8
  store i32 0, ptr %45, align 4, !tbaa !9
  br label %637

637:                                              ; preds = %677, %636
  %638 = load i32, ptr %45, align 4, !tbaa !9
  %639 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %640 = load i32, ptr %639, align 8, !tbaa !25
  %641 = icmp slt i32 %638, %640
  br i1 %641, label %643, label %642

642:                                              ; preds = %637
  store i32 14, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  br label %680

643:                                              ; preds = %637
  %644 = load i32, ptr %44, align 4, !tbaa !9
  %645 = zext i32 %644 to i64
  %646 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %645) #8
  %647 = load i32, ptr %646, align 4, !tbaa !9
  %648 = icmp eq i32 %647, 0
  br i1 %648, label %649, label %659

649:                                              ; preds = %643
  %650 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 2
  %651 = load i32, ptr %44, align 4, !tbaa !9
  %652 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %653 = load i32, ptr %652, align 8, !tbaa !25
  %654 = mul i32 %651, %653
  %655 = load i32, ptr %45, align 4, !tbaa !9
  %656 = add i32 %654, %655
  %657 = zext i32 %656 to i64
  %658 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %650, i64 noundef %657) #8
  store float 0.000000e+00, ptr %658, align 4, !tbaa !11
  br label %676

659:                                              ; preds = %643
  %660 = load i32, ptr %44, align 4, !tbaa !9
  %661 = zext i32 %660 to i64
  %662 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %661) #8
  %663 = load i32, ptr %662, align 4, !tbaa !9
  %664 = uitofp i32 %663 to float
  %665 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 2
  %666 = load i32, ptr %44, align 4, !tbaa !9
  %667 = getelementptr inbounds %"class.Glip::CorePipeline::GeometryModel", ptr %46, i32 0, i32 8
  %668 = load i32, ptr %667, align 8, !tbaa !25
  %669 = mul i32 %666, %668
  %670 = load i32, ptr %45, align 4, !tbaa !9
  %671 = add i32 %669, %670
  %672 = zext i32 %671 to i64
  %673 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %665, i64 noundef %672) #8
  %674 = load float, ptr %673, align 4, !tbaa !11
  %675 = fdiv float %674, %664
  store float %675, ptr %673, align 4, !tbaa !11
  br label %676

676:                                              ; preds = %659, %649
  br label %677

677:                                              ; preds = %676
  %678 = load i32, ptr %45, align 4, !tbaa !9
  %679 = add nsw i32 %678, 1
  store i32 %679, ptr %45, align 4, !tbaa !9
  br label %637, !llvm.loop !32

680:                                              ; preds = %642
  br label %681

681:                                              ; preds = %680
  %682 = load i32, ptr %44, align 4, !tbaa !9
  %683 = add i32 %682, 1
  store i32 %683, ptr %44, align 4, !tbaa !9
  br label %630, !llvm.loop !33

684:                                              ; preds = %635
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %6) #8
  store i32 0, ptr %5, align 4
  br label %685

685:                                              ; preds = %684, %55
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #8
  %686 = load i32, ptr %5, align 4
  switch i32 %686, label %694 [
    i32 0, label %687
    i32 1, label %687
  ]

687:                                              ; preds = %685, %685
  ret void

688:                                              ; preds = %628, %65
  call void @llvm.lifetime.end.p0(i64 24, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #8
  br label %689

689:                                              ; preds = %688
  %690 = load ptr, ptr %9, align 8
  %691 = load i32, ptr %10, align 4
  %692 = insertvalue { ptr, i32 } poison, ptr %690, 0
  %693 = insertvalue { ptr, i32 } %692, i32 %691, 1
  resume { ptr, i32 } %693

694:                                              ; preds = %685, %595
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIfSaIfEE6assignEmRKf(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 4 dereferenceable(4)) #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIjSaIjEEC2EmRKjRKS0_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt4sqrtf(float noundef) #6

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = !{!14, !10, i64 116}
!14 = !{!"_ZTSN4Glip12CorePipeline13GeometryModelE", !15, i64 8, !15, i64 32, !15, i64 56, !19, i64 80, !23, i64 104, !24, i64 108, !24, i64 109, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124}
!15 = !{!"_ZTSSt6vectorIfSaIfEE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIfSaIfEE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!19 = !{!"_ZTSSt6vectorIjSaIjEE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!23 = !{!"_ZTSN4Glip12CorePipeline13GeometryModel12GeometryTypeE", !7, i64 0}
!24 = !{!"bool", !7, i64 0}
!25 = !{!14, !10, i64 112}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = distinct !{!28, !27}
!29 = !{!30, !30, i64 0}
!30 = !{!"_ZTSN4Glip9Exception4TypeE", !7, i64 0}
!31 = distinct !{!31, !27}
!32 = distinct !{!32, !27}
!33 = distinct !{!33, !27}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.2" = type { i8 }
%"class.std::allocator.5" = type { i8 }

@.str.2 = external hidden unnamed_addr constant [88 x i8], align 1
@_ZTIN4Glip9ExceptionE = external constant ptr
@.str.11 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [13 x i8], align 1

declare i32 @__gxx_personality_v0(...)

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

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

declare void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(4)) unnamed_addr #4

; Function Attrs: nounwind
declare void @_ZN4Glip9ExceptionD1Ev(ptr noundef nonnull align 8 dereferenceable(152)) unnamed_addr #5

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3 align 2

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4Glip12CorePipeline13GeometryModel15generateNormalsEv(ptr noundef nonnull align 8 dereferenceable(128) %0) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca float, align 4
  %3 = alloca %"class.std::vector.0", align 8
  %4 = alloca i32, align 4
  %5 = alloca %"class.std::allocator.2", align 1
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::allocator.5", align 1
  %11 = alloca i32, align 4
  %12 = tail call noundef i32 @_ZNK4Glip12CorePipeline13GeometryModel14getNumElementsEv(ptr noundef nonnull align 8 dereferenceable(128) %0)
  %13 = getelementptr inbounds i8, ptr %0, i64 32
  tail call void @_ZNSt6vectorIfSaIfEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #9
  %14 = getelementptr inbounds i8, ptr %0, i64 8
  %15 = tail call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #9
  store float 0.000000e+00, ptr %2, align 4, !tbaa !5
  call void @_ZNSt6vectorIfSaIfEE6assignEmRKf(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %15, ptr noundef nonnull align 4 dereferenceable(4) %2)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #9
  %16 = getelementptr inbounds i8, ptr %0, i64 116
  %17 = load i32, ptr %16, align 4, !tbaa !9
  %18 = icmp slt i32 %17, 2
  br i1 %18, label %363, label %19

19:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #9
  %20 = call noundef i32 @_ZNK4Glip12CorePipeline13GeometryModel14getNumVerticesEv(ptr noundef nonnull align 8 dereferenceable(128) %0)
  %21 = zext i32 %20 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #9
  store i32 0, ptr %4, align 4, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #9
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  invoke void @_ZNSt6vectorIjSaIjEEC2EmRKjRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %21, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %22 unwind label %27

22:                                               ; preds = %19
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #9
  %.not = icmp eq i32 %12, 0
  br i1 %.not, label %.preheader154, label %.lr.ph

.lr.ph:                                           ; preds = %22
  %23 = getelementptr inbounds i8, ptr %0, i64 112
  %24 = getelementptr inbounds i8, ptr %0, i64 80
  br label %29

.preheader154:                                    ; preds = %.loopexit, %22
  %25 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #9
  %.not165 = icmp eq i64 %25, 0
  br i1 %.not165, label %._crit_edge164, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %.preheader154
  %26 = getelementptr inbounds i8, ptr %0, i64 112
  br label %.preheader

27:                                               ; preds = %19
  %28 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #9
  br label %364

29:                                               ; preds = %.lr.ph, %.loopexit
  %.0131160 = phi i32 [ 0, %.lr.ph ], [ %330, %.loopexit ]
  %30 = load i32, ptr %16, align 4, !tbaa !9
  %31 = mul i32 %30, %.0131160
  %32 = icmp sgt i32 %30, 2
  %spec.select = select i1 %32, i32 %30, i32 1
  %33 = load i32, ptr %23, align 8, !tbaa !24
  switch i32 %33, label %312 [
    i32 2, label %.preheader155.preheader
    i32 3, label %.preheader156.preheader
  ]

.preheader156.preheader:                          ; preds = %29
  %umax = call i32 @llvm.umax.i32(i32 %spec.select, i32 1)
  %wide.trip.count = zext i32 %umax to i64
  br label %.preheader156

.preheader155.preheader:                          ; preds = %29
  %umax171 = call i32 @llvm.umax.i32(i32 %spec.select, i32 1)
  %wide.trip.count172 = zext i32 %umax171 to i64
  br label %.preheader155

.preheader155:                                    ; preds = %.preheader155.preheader, %116
  %indvars.iv168 = phi i64 [ 0, %.preheader155.preheader ], [ %indvars.iv.next169, %116 ]
  %34 = trunc nuw nsw i64 %indvars.iv168 to i32
  %35 = add i32 %31, %34
  %36 = zext i32 %35 to i64
  %37 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef %36) #9
  %38 = load i32, ptr %37, align 4, !tbaa !23
  %indvars.iv.next169 = add nuw nsw i64 %indvars.iv168, 1
  %39 = load i32, ptr %16, align 4, !tbaa !9
  %40 = trunc nuw i64 %indvars.iv.next169 to i32
  %41 = urem i32 %40, %39
  %42 = add i32 %41, %31
  %43 = zext i32 %42 to i64
  %44 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef %43) #9
  %45 = load i32, ptr %44, align 4, !tbaa !23
  %46 = zext i32 %38 to i64
  %47 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #9
  %48 = icmp ugt i64 %47, %46
  br i1 %48, label %49, label %116

49:                                               ; preds = %.preheader155
  %50 = zext i32 %45 to i64
  %51 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #9
  %52 = icmp ugt i64 %51, %50
  br i1 %52, label %53, label %116

53:                                               ; preds = %49
  %54 = load i32, ptr %23, align 8, !tbaa !24
  %55 = mul i32 %54, %45
  %56 = zext i32 %55 to i64
  %57 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %56) #9
  %58 = load float, ptr %57, align 4, !tbaa !5
  %59 = load i32, ptr %23, align 8, !tbaa !24
  %60 = mul i32 %59, %38
  %61 = zext i32 %60 to i64
  %62 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %61) #9
  %63 = load float, ptr %62, align 4, !tbaa !5
  %64 = fsub float %58, %63
  %65 = load i32, ptr %23, align 8, !tbaa !24
  %66 = mul i32 %65, %45
  %67 = add i32 %66, 1
  %68 = zext i32 %67 to i64
  %69 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %68) #9
  %70 = load float, ptr %69, align 4, !tbaa !5
  %71 = load i32, ptr %23, align 8, !tbaa !24
  %72 = mul i32 %71, %38
  %73 = add i32 %72, 1
  %74 = zext i32 %73 to i64
  %75 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %74) #9
  %76 = load float, ptr %75, align 4, !tbaa !5
  %77 = fsub float %70, %76
  %78 = fmul float %77, %77
  %79 = call float @llvm.fmuladd.f32(float %64, float %64, float %78)
  %80 = call noundef float @_ZSt4sqrtf(float noundef %79)
  %81 = fneg float %77
  %82 = fdiv float %81, %80
  %83 = fdiv float %64, %80
  %84 = load i32, ptr %23, align 8, !tbaa !24
  %85 = mul i32 %84, %38
  %86 = zext i32 %85 to i64
  %87 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %86) #9
  %88 = load float, ptr %87, align 4, !tbaa !5
  %89 = fadd float %82, %88
  store float %89, ptr %87, align 4, !tbaa !5
  %90 = load i32, ptr %23, align 8, !tbaa !24
  %91 = mul i32 %90, %38
  %92 = add i32 %91, 1
  %93 = zext i32 %92 to i64
  %94 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %93) #9
  %95 = load float, ptr %94, align 4, !tbaa !5
  %96 = fadd float %83, %95
  store float %96, ptr %94, align 4, !tbaa !5
  %97 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %46) #9
  %98 = load i32, ptr %97, align 4, !tbaa !23
  %99 = add i32 %98, 1
  store i32 %99, ptr %97, align 4, !tbaa !23
  %100 = load i32, ptr %23, align 8, !tbaa !24
  %101 = mul i32 %100, %45
  %102 = zext i32 %101 to i64
  %103 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %102) #9
  %104 = load float, ptr %103, align 4, !tbaa !5
  %105 = fadd float %82, %104
  store float %105, ptr %103, align 4, !tbaa !5
  %106 = load i32, ptr %23, align 8, !tbaa !24
  %107 = mul i32 %106, %45
  %108 = add i32 %107, 1
  %109 = zext i32 %108 to i64
  %110 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %109) #9
  %111 = load float, ptr %110, align 4, !tbaa !5
  %112 = fadd float %83, %111
  store float %112, ptr %110, align 4, !tbaa !5
  %113 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %50) #9
  %114 = load i32, ptr %113, align 4, !tbaa !23
  %115 = add i32 %114, 1
  store i32 %115, ptr %113, align 4, !tbaa !23
  br label %116

116:                                              ; preds = %53, %49, %.preheader155
  %exitcond173.not = icmp eq i64 %indvars.iv.next169, %wide.trip.count172
  br i1 %exitcond173.not, label %.loopexit, label %.preheader155, !llvm.loop !25

.preheader156:                                    ; preds = %.preheader156.preheader, %311
  %indvars.iv = phi i64 [ 0, %.preheader156.preheader ], [ %indvars.iv.next, %311 ]
  %117 = trunc nuw nsw i64 %indvars.iv to i32
  %118 = add i32 %31, %117
  %119 = zext i32 %118 to i64
  %120 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef %119) #9
  %121 = load i32, ptr %120, align 4, !tbaa !23
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %122 = load i32, ptr %16, align 4, !tbaa !9
  %123 = trunc nuw i64 %indvars.iv.next to i32
  %124 = urem i32 %123, %122
  %125 = add i32 %124, %31
  %126 = zext i32 %125 to i64
  %127 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef %126) #9
  %128 = load i32, ptr %127, align 4, !tbaa !23
  %129 = load i32, ptr %16, align 4, !tbaa !9
  %130 = trunc i64 %indvars.iv to i32
  %131 = add i32 %130, 2
  %132 = urem i32 %131, %129
  %133 = add i32 %132, %31
  %134 = zext i32 %133 to i64
  %135 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef %134) #9
  %136 = load i32, ptr %135, align 4, !tbaa !23
  %137 = zext i32 %121 to i64
  %138 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #9
  %139 = icmp ugt i64 %138, %137
  br i1 %139, label %140, label %311

140:                                              ; preds = %.preheader156
  %141 = zext i32 %128 to i64
  %142 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #9
  %143 = icmp ugt i64 %142, %141
  br i1 %143, label %144, label %311

144:                                              ; preds = %140
  %145 = zext i32 %136 to i64
  %146 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #9
  %147 = icmp ugt i64 %146, %145
  br i1 %147, label %148, label %311

148:                                              ; preds = %144
  %149 = load i32, ptr %23, align 8, !tbaa !24
  %150 = mul i32 %149, %128
  %151 = zext i32 %150 to i64
  %152 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %151) #9
  %153 = load float, ptr %152, align 4, !tbaa !5
  %154 = load i32, ptr %23, align 8, !tbaa !24
  %155 = mul i32 %154, %121
  %156 = zext i32 %155 to i64
  %157 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %156) #9
  %158 = load float, ptr %157, align 4, !tbaa !5
  %159 = fsub float %153, %158
  %160 = load i32, ptr %23, align 8, !tbaa !24
  %161 = mul i32 %160, %128
  %162 = add i32 %161, 1
  %163 = zext i32 %162 to i64
  %164 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %163) #9
  %165 = load float, ptr %164, align 4, !tbaa !5
  %166 = load i32, ptr %23, align 8, !tbaa !24
  %167 = mul i32 %166, %121
  %168 = add i32 %167, 1
  %169 = zext i32 %168 to i64
  %170 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %169) #9
  %171 = load float, ptr %170, align 4, !tbaa !5
  %172 = fsub float %165, %171
  %173 = load i32, ptr %23, align 8, !tbaa !24
  %174 = mul i32 %173, %128
  %175 = add i32 %174, 2
  %176 = zext i32 %175 to i64
  %177 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %176) #9
  %178 = load float, ptr %177, align 4, !tbaa !5
  %179 = load i32, ptr %23, align 8, !tbaa !24
  %180 = mul i32 %179, %121
  %181 = add i32 %180, 2
  %182 = zext i32 %181 to i64
  %183 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %182) #9
  %184 = load float, ptr %183, align 4, !tbaa !5
  %185 = fsub float %178, %184
  %186 = load i32, ptr %23, align 8, !tbaa !24
  %187 = mul i32 %186, %136
  %188 = zext i32 %187 to i64
  %189 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %188) #9
  %190 = load float, ptr %189, align 4, !tbaa !5
  %191 = load i32, ptr %23, align 8, !tbaa !24
  %192 = mul i32 %191, %128
  %193 = zext i32 %192 to i64
  %194 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %193) #9
  %195 = load float, ptr %194, align 4, !tbaa !5
  %196 = fsub float %190, %195
  %197 = load i32, ptr %23, align 8, !tbaa !24
  %198 = mul i32 %197, %136
  %199 = add i32 %198, 1
  %200 = zext i32 %199 to i64
  %201 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %200) #9
  %202 = load float, ptr %201, align 4, !tbaa !5
  %203 = load i32, ptr %23, align 8, !tbaa !24
  %204 = mul i32 %203, %128
  %205 = add i32 %204, 1
  %206 = zext i32 %205 to i64
  %207 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %206) #9
  %208 = load float, ptr %207, align 4, !tbaa !5
  %209 = fsub float %202, %208
  %210 = load i32, ptr %23, align 8, !tbaa !24
  %211 = mul i32 %210, %136
  %212 = add i32 %211, 2
  %213 = zext i32 %212 to i64
  %214 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %213) #9
  %215 = load float, ptr %214, align 4, !tbaa !5
  %216 = load i32, ptr %23, align 8, !tbaa !24
  %217 = mul i32 %216, %128
  %218 = add i32 %217, 2
  %219 = zext i32 %218 to i64
  %220 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %219) #9
  %221 = load float, ptr %220, align 4, !tbaa !5
  %222 = fsub float %215, %221
  %223 = fmul float %172, %172
  %224 = call float @llvm.fmuladd.f32(float %159, float %159, float %223)
  %225 = call noundef float @_ZSt4sqrtf(float noundef %224)
  %226 = fmul float %209, %209
  %227 = call float @llvm.fmuladd.f32(float %196, float %196, float %226)
  %228 = call noundef float @_ZSt4sqrtf(float noundef %227)
  %229 = fneg float %209
  %230 = fmul float %185, %229
  %231 = call float @llvm.fmuladd.f32(float %172, float %222, float %230)
  %232 = fmul float %225, %228
  %233 = fdiv float %231, %232
  %234 = fneg float %159
  %235 = fmul float %222, %234
  %236 = call float @llvm.fmuladd.f32(float %196, float %185, float %235)
  %237 = fdiv float %236, %232
  %238 = fneg float %196
  %239 = fmul float %172, %238
  %240 = call float @llvm.fmuladd.f32(float %159, float %209, float %239)
  %241 = fdiv float %240, %232
  %242 = load i32, ptr %23, align 8, !tbaa !24
  %243 = mul i32 %242, %121
  %244 = zext i32 %243 to i64
  %245 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %244) #9
  %246 = load float, ptr %245, align 4, !tbaa !5
  %247 = fadd float %233, %246
  store float %247, ptr %245, align 4, !tbaa !5
  %248 = load i32, ptr %23, align 8, !tbaa !24
  %249 = mul i32 %248, %121
  %250 = add i32 %249, 1
  %251 = zext i32 %250 to i64
  %252 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %251) #9
  %253 = load float, ptr %252, align 4, !tbaa !5
  %254 = fadd float %237, %253
  store float %254, ptr %252, align 4, !tbaa !5
  %255 = load i32, ptr %23, align 8, !tbaa !24
  %256 = mul i32 %255, %121
  %257 = add i32 %256, 2
  %258 = zext i32 %257 to i64
  %259 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %258) #9
  %260 = load float, ptr %259, align 4, !tbaa !5
  %261 = fadd float %241, %260
  store float %261, ptr %259, align 4, !tbaa !5
  %262 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %137) #9
  %263 = load i32, ptr %262, align 4, !tbaa !23
  %264 = add i32 %263, 1
  store i32 %264, ptr %262, align 4, !tbaa !23
  %265 = load i32, ptr %23, align 8, !tbaa !24
  %266 = mul i32 %265, %128
  %267 = zext i32 %266 to i64
  %268 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %267) #9
  %269 = load float, ptr %268, align 4, !tbaa !5
  %270 = fadd float %233, %269
  store float %270, ptr %268, align 4, !tbaa !5
  %271 = load i32, ptr %23, align 8, !tbaa !24
  %272 = mul i32 %271, %128
  %273 = add i32 %272, 1
  %274 = zext i32 %273 to i64
  %275 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %274) #9
  %276 = load float, ptr %275, align 4, !tbaa !5
  %277 = fadd float %237, %276
  store float %277, ptr %275, align 4, !tbaa !5
  %278 = load i32, ptr %23, align 8, !tbaa !24
  %279 = mul i32 %278, %128
  %280 = add i32 %279, 2
  %281 = zext i32 %280 to i64
  %282 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %281) #9
  %283 = load float, ptr %282, align 4, !tbaa !5
  %284 = fadd float %241, %283
  store float %284, ptr %282, align 4, !tbaa !5
  %285 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %141) #9
  %286 = load i32, ptr %285, align 4, !tbaa !23
  %287 = add i32 %286, 1
  store i32 %287, ptr %285, align 4, !tbaa !23
  %288 = load i32, ptr %23, align 8, !tbaa !24
  %289 = mul i32 %288, %136
  %290 = zext i32 %289 to i64
  %291 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %290) #9
  %292 = load float, ptr %291, align 4, !tbaa !5
  %293 = fadd float %233, %292
  store float %293, ptr %291, align 4, !tbaa !5
  %294 = load i32, ptr %23, align 8, !tbaa !24
  %295 = mul i32 %294, %136
  %296 = add i32 %295, 1
  %297 = zext i32 %296 to i64
  %298 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %297) #9
  %299 = load float, ptr %298, align 4, !tbaa !5
  %300 = fadd float %237, %299
  store float %300, ptr %298, align 4, !tbaa !5
  %301 = load i32, ptr %23, align 8, !tbaa !24
  %302 = mul i32 %301, %136
  %303 = add i32 %302, 2
  %304 = zext i32 %303 to i64
  %305 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %304) #9
  %306 = load float, ptr %305, align 4, !tbaa !5
  %307 = fadd float %241, %306
  store float %307, ptr %305, align 4, !tbaa !5
  %308 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %145) #9
  %309 = load i32, ptr %308, align 4, !tbaa !23
  %310 = add i32 %309, 1
  store i32 %310, ptr %308, align 4, !tbaa !23
  br label %311

311:                                              ; preds = %148, %144, %140, %.preheader156
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit, label %.preheader156, !llvm.loop !27

312:                                              ; preds = %29
  %313 = call ptr @__cxa_allocate_exception(i64 152) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #9
  invoke void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %314 unwind label %.thread

314:                                              ; preds = %312
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull @.str.11, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %315 unwind label %.thread151

315:                                              ; preds = %314
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.12)
          to label %316 unwind label %321

316:                                              ; preds = %315
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %317 unwind label %323

317:                                              ; preds = %316
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #9
  store i32 1, ptr %11, align 4, !tbaa !28
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %313, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull %9, i32 noundef 593, ptr noundef nonnull align 4 dereferenceable(4) %11)
          to label %318 unwind label %325

318:                                              ; preds = %317
  invoke void @__cxa_throw(ptr nonnull %313, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #10
          to label %365 unwind label %325

.thread:                                          ; preds = %312
  %319 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #9
  br label %329

.thread151:                                       ; preds = %314
  %320 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #9
  br label %329

321:                                              ; preds = %315
  %322 = landingpad { ptr, i32 }
          cleanup
  br label %328

323:                                              ; preds = %316
  %324 = landingpad { ptr, i32 }
          cleanup
  br label %327

325:                                              ; preds = %318, %317
  %.0120 = phi i1 [ false, %318 ], [ true, %317 ]
  %326 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  br label %327

327:                                              ; preds = %325, %323
  %.pn = phi { ptr, i32 } [ %326, %325 ], [ %324, %323 ]
  %.1 = phi i1 [ %.0120, %325 ], [ true, %323 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #9
  br label %328

328:                                              ; preds = %321, %327
  %.pn.pn = phi { ptr, i32 } [ %.pn, %327 ], [ %322, %321 ]
  %.2 = phi i1 [ %.1, %327 ], [ true, %321 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #9
  br i1 %.2, label %329, label %331

329:                                              ; preds = %.thread151, %.thread, %328
  %.pn.pn.pn.pn150 = phi { ptr, i32 } [ %319, %.thread ], [ %.pn.pn, %328 ], [ %320, %.thread151 ]
  call void @__cxa_free_exception(ptr %313) #9
  br label %331

.loopexit:                                        ; preds = %311, %116
  %330 = add nuw i32 %.0131160, 1
  %exitcond174.not = icmp eq i32 %330, %12
  br i1 %exitcond174.not, label %.preheader154, label %29, !llvm.loop !30

331:                                              ; preds = %328, %329
  %.pn.pn.pn.pn149 = phi { ptr, i32 } [ %.pn.pn, %328 ], [ %.pn.pn.pn.pn150, %329 ]
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #9
  br label %364

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge
  %332 = phi i64 [ 0, %.preheader.lr.ph ], [ %336, %._crit_edge ]
  %.0119163 = phi i32 [ 0, %.preheader.lr.ph ], [ %335, %._crit_edge ]
  %333 = load i32, ptr %26, align 8, !tbaa !24
  %334 = icmp sgt i32 %333, 0
  br i1 %334, label %.lr.ph162, label %._crit_edge

._crit_edge164:                                   ; preds = %._crit_edge, %.preheader154
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #9
  br label %363

._crit_edge:                                      ; preds = %359, %.preheader
  %335 = add i32 %.0119163, 1
  %336 = zext i32 %335 to i64
  %337 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #9
  %338 = icmp ugt i64 %337, %336
  br i1 %338, label %.preheader, label %._crit_edge164, !llvm.loop !31

.lr.ph162:                                        ; preds = %.preheader, %359
  %.0161 = phi i32 [ %360, %359 ], [ 0, %.preheader ]
  %339 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %332) #9
  %340 = load i32, ptr %339, align 4, !tbaa !23
  %341 = icmp eq i32 %340, 0
  br i1 %341, label %342, label %348

342:                                              ; preds = %.lr.ph162
  %343 = load i32, ptr %26, align 8, !tbaa !24
  %344 = mul i32 %343, %.0119163
  %345 = add i32 %344, %.0161
  %346 = zext i32 %345 to i64
  %347 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %346) #9
  store float 0.000000e+00, ptr %347, align 4, !tbaa !5
  br label %359

348:                                              ; preds = %.lr.ph162
  %349 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %332) #9
  %350 = load i32, ptr %349, align 4, !tbaa !23
  %351 = uitofp i32 %350 to float
  %352 = load i32, ptr %26, align 8, !tbaa !24
  %353 = mul i32 %352, %.0119163
  %354 = add i32 %353, %.0161
  %355 = zext i32 %354 to i64
  %356 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %355) #9
  %357 = load float, ptr %356, align 4, !tbaa !5
  %358 = fdiv float %357, %351
  store float %358, ptr %356, align 4, !tbaa !5
  br label %359

359:                                              ; preds = %342, %348
  %360 = add nuw nsw i32 %.0161, 1
  %361 = load i32, ptr %26, align 8, !tbaa !24
  %362 = icmp slt i32 %360, %361
  br i1 %362, label %.lr.ph162, label %._crit_edge, !llvm.loop !32

363:                                              ; preds = %1, %._crit_edge164
  ret void

364:                                              ; preds = %331, %27
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn149, %331 ], [ %28, %27 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #9
  resume { ptr, i32 } %.pn.pn.pn.pn.pn

365:                                              ; preds = %318
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIfSaIfEE6assignEmRKf(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIjSaIjEEC2EmRKjRKS0_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt4sqrtf(float noundef) local_unnamed_addr #6

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #7

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umax.i32(i32, i32) #8

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

!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 = !{!"float", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !22, i64 116}
!10 = !{!"_ZTSN4Glip12CorePipeline13GeometryModelE", !11, i64 8, !11, i64 32, !11, i64 56, !16, i64 80, !20, i64 104, !21, i64 108, !21, i64 109, !22, i64 112, !22, i64 116, !22, i64 120, !22, i64 124}
!11 = !{!"_ZTSSt6vectorIfSaIfEE", !12, i64 0}
!12 = !{!"_ZTSSt12_Vector_baseIfSaIfEE", !13, i64 0}
!13 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE12_Vector_implE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!15 = !{!"any pointer", !7, i64 0}
!16 = !{!"_ZTSSt6vectorIjSaIjEE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!20 = !{!"_ZTSN4Glip12CorePipeline13GeometryModel12GeometryTypeE", !7, i64 0}
!21 = !{!"bool", !7, i64 0}
!22 = !{!"int", !7, i64 0}
!23 = !{!22, !22, i64 0}
!24 = !{!10, !22, i64 112}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = distinct !{!27, !26}
!28 = !{!29, !29, i64 0}
!29 = !{!"_ZTSN4Glip9Exception4TypeE", !7, i64 0}
!30 = distinct !{!30, !26}
!31 = distinct !{!31, !26}
!32 = distinct !{!32, !26}


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