; LLVM IR from moarseniy/CudaFEMproject :: FEMproject/femstruct/src (femstruct)

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

%struct.MathVector = type { float, float, float }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator" = type { i8 }
%struct.TimeDependentEntity = type { float, float, float, float, { i64, i64 } }
%struct.Edge = type { %"class.std::vector", i32, i32 }
%struct.Element = type { i32, %"class.std::vector", %class.CPU_Matrix, %class.CPU_Matrix, %class.CPU_Matrix, %class.CPU_Matrix, float, float, %class.CPU_Matrix, %class.CPU_Matrix, %class.CPU_Matrix, %class.CPU_Matrix, %class.CPU_Matrix, %class.CPU_Matrix, %class.CPU_Matrix, %class.CPU_Matrix, %class.CPU_Matrix, %class.CPU_Matrix, %class.CPU_Matrix, %class.CPU_Matrix, %class.CPU_Matrix, %class.CPU_Matrix, %class.CPU_Matrix }
%class.CPU_Matrix = type { %class.Matrix.base, [7 x i8] }
%class.Matrix.base = type <{ ptr, i32, [4 x i8], i64, i64, i64, ptr, i8 }>
%struct.BoundaryEdge = type { %struct.Edge, %struct.TimeDependentEntity, %"class.std::vector.5", %"class.std::vector.10" }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = 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 }
%"class.std::vector.10" = type { %"struct.std::_Vector_base.11" }
%"struct.std::_Vector_base.11" = type { %"struct.std::_Vector_base<Constraint::Type, std::allocator<Constraint::Type>>::_Vector_impl" }
%"struct.std::_Vector_base<Constraint::Type, std::allocator<Constraint::Type>>::_Vector_impl" = type { %"struct.std::_Vector_base<Constraint::Type, std::allocator<Constraint::Type>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Constraint::Type, std::allocator<Constraint::Type>>::_Vector_impl_data" = type { ptr, ptr, ptr }

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

declare noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49), i64 noundef) #3

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(49) ptr @_ZNSt6vectorI10CPU_MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN10Constraint4TypeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #1 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) #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7Element17CalculateFlocal3DER12BoundaryEdgeRSt6vectorI10CPU_MatrixSaIS3_EEf(ptr noundef nonnull align 8 dereferenceable(1104) %0, ptr noundef nonnull align 8 dereferenceable(112) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, float noundef %3) #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca float, align 4
  %9 = alloca float, align 4
  %10 = alloca float, align 4
  %11 = alloca float, align 4
  %12 = alloca float, align 4
  %13 = alloca float, align 4
  %14 = alloca float, align 4
  %15 = alloca float, align 4
  %16 = alloca float, align 4
  %17 = alloca float, align 4
  %18 = alloca float, align 4
  %19 = alloca %struct.MathVector, align 4
  %20 = alloca %struct.MathVector, align 4
  %21 = alloca float, align 4
  %22 = alloca %"class.std::vector", align 8
  %23 = alloca %"class.std::allocator", align 1
  %24 = alloca ptr, align 8
  %25 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store float %3, ptr %8, align 4, !tbaa !9
  %26 = load ptr, ptr %5, align 8
  %27 = load ptr, ptr %6, align 8, !tbaa !5
  %28 = getelementptr inbounds i8, ptr %27, i64 32
  %29 = load float, ptr %8, align 4, !tbaa !9
  call void @_ZN19TimeDependentEntity6updateEf(ptr noundef nonnull align 8 dereferenceable(32) %28, float noundef %29)
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #5
  %30 = load ptr, ptr %6, align 8, !tbaa !5
  %31 = getelementptr inbounds i8, ptr %30, i64 32
  %32 = getelementptr inbounds %struct.TimeDependentEntity, ptr %31, i32 0, i32 0
  %33 = load float, ptr %32, align 8, !tbaa !11
  store float %33, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #5
  %34 = load ptr, ptr %7, align 8, !tbaa !5
  %35 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNSt6vectorI10CPU_MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %34, i64 noundef 0) #5
  %36 = load ptr, ptr %6, align 8, !tbaa !5
  %37 = getelementptr inbounds %struct.Edge, ptr %36, i32 0, i32 0
  %38 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %37, i64 noundef 0) #5
  %39 = load i32, ptr %38, align 4, !tbaa !13
  %40 = sext i32 %39 to i64
  %41 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %35, i64 noundef %40)
  %42 = load float, ptr %41, align 4, !tbaa !9
  store float %42, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  %43 = load ptr, ptr %7, align 8, !tbaa !5
  %44 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNSt6vectorI10CPU_MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %43, i64 noundef 0) #5
  %45 = load ptr, ptr %6, align 8, !tbaa !5
  %46 = getelementptr inbounds %struct.Edge, ptr %45, i32 0, i32 0
  %47 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %46, i64 noundef 1) #5
  %48 = load i32, ptr %47, align 4, !tbaa !13
  %49 = sext i32 %48 to i64
  %50 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %44, i64 noundef %49)
  %51 = load float, ptr %50, align 4, !tbaa !9
  store float %51, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #5
  %52 = load ptr, ptr %7, align 8, !tbaa !5
  %53 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNSt6vectorI10CPU_MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %52, i64 noundef 0) #5
  %54 = load ptr, ptr %6, align 8, !tbaa !5
  %55 = getelementptr inbounds %struct.Edge, ptr %54, i32 0, i32 0
  %56 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef 2) #5
  %57 = load i32, ptr %56, align 4, !tbaa !13
  %58 = sext i32 %57 to i64
  %59 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %53, i64 noundef %58)
  %60 = load float, ptr %59, align 4, !tbaa !9
  store float %60, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  %61 = load ptr, ptr %7, align 8, !tbaa !5
  %62 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNSt6vectorI10CPU_MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %61, i64 noundef 1) #5
  %63 = load ptr, ptr %6, align 8, !tbaa !5
  %64 = getelementptr inbounds %struct.Edge, ptr %63, i32 0, i32 0
  %65 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %64, i64 noundef 0) #5
  %66 = load i32, ptr %65, align 4, !tbaa !13
  %67 = sext i32 %66 to i64
  %68 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %62, i64 noundef %67)
  %69 = load float, ptr %68, align 4, !tbaa !9
  store float %69, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #5
  %70 = load ptr, ptr %7, align 8, !tbaa !5
  %71 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNSt6vectorI10CPU_MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef 1) #5
  %72 = load ptr, ptr %6, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.Edge, ptr %72, i32 0, i32 0
  %74 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %73, i64 noundef 1) #5
  %75 = load i32, ptr %74, align 4, !tbaa !13
  %76 = sext i32 %75 to i64
  %77 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %71, i64 noundef %76)
  %78 = load float, ptr %77, align 4, !tbaa !9
  store float %78, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  %79 = load ptr, ptr %7, align 8, !tbaa !5
  %80 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNSt6vectorI10CPU_MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %79, i64 noundef 1) #5
  %81 = load ptr, ptr %6, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct.Edge, ptr %81, i32 0, i32 0
  %83 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %82, i64 noundef 2) #5
  %84 = load i32, ptr %83, align 4, !tbaa !13
  %85 = sext i32 %84 to i64
  %86 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %80, i64 noundef %85)
  %87 = load float, ptr %86, align 4, !tbaa !9
  store float %87, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  %88 = load ptr, ptr %7, align 8, !tbaa !5
  %89 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNSt6vectorI10CPU_MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef 2) #5
  %90 = load ptr, ptr %6, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.Edge, ptr %90, i32 0, i32 0
  %92 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %91, i64 noundef 0) #5
  %93 = load i32, ptr %92, align 4, !tbaa !13
  %94 = sext i32 %93 to i64
  %95 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %89, i64 noundef %94)
  %96 = load float, ptr %95, align 4, !tbaa !9
  store float %96, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  %97 = load ptr, ptr %7, align 8, !tbaa !5
  %98 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNSt6vectorI10CPU_MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %97, i64 noundef 2) #5
  %99 = load ptr, ptr %6, align 8, !tbaa !5
  %100 = getelementptr inbounds %struct.Edge, ptr %99, i32 0, i32 0
  %101 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %100, i64 noundef 1) #5
  %102 = load i32, ptr %101, align 4, !tbaa !13
  %103 = sext i32 %102 to i64
  %104 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %98, i64 noundef %103)
  %105 = load float, ptr %104, align 4, !tbaa !9
  store float %105, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  %106 = load ptr, ptr %7, align 8, !tbaa !5
  %107 = call noundef nonnull align 8 dereferenceable(49) ptr @_ZNSt6vectorI10CPU_MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %106, i64 noundef 2) #5
  %108 = load ptr, ptr %6, align 8, !tbaa !5
  %109 = getelementptr inbounds %struct.Edge, ptr %108, i32 0, i32 0
  %110 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %109, i64 noundef 2) #5
  %111 = load i32, ptr %110, align 4, !tbaa !13
  %112 = sext i32 %111 to i64
  %113 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %107, i64 noundef %112)
  %114 = load float, ptr %113, align 4, !tbaa !9
  store float %114, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 12, ptr %19) #5
  %115 = getelementptr inbounds %struct.MathVector, ptr %19, i32 0, i32 0
  %116 = load float, ptr %11, align 4, !tbaa !9
  %117 = load float, ptr %10, align 4, !tbaa !9
  %118 = fsub float %116, %117
  store float %118, ptr %115, align 4, !tbaa !15
  %119 = getelementptr inbounds %struct.MathVector, ptr %19, i32 0, i32 1
  %120 = load float, ptr %14, align 4, !tbaa !9
  %121 = load float, ptr %13, align 4, !tbaa !9
  %122 = fsub float %120, %121
  store float %122, ptr %119, align 4, !tbaa !17
  %123 = getelementptr inbounds %struct.MathVector, ptr %19, i32 0, i32 2
  %124 = load float, ptr %17, align 4, !tbaa !9
  %125 = load float, ptr %16, align 4, !tbaa !9
  %126 = fsub float %124, %125
  store float %126, ptr %123, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 12, ptr %20) #5
  %127 = getelementptr inbounds %struct.MathVector, ptr %20, i32 0, i32 0
  %128 = load float, ptr %12, align 4, !tbaa !9
  %129 = load float, ptr %10, align 4, !tbaa !9
  %130 = fsub float %128, %129
  store float %130, ptr %127, align 4, !tbaa !15
  %131 = getelementptr inbounds %struct.MathVector, ptr %20, i32 0, i32 1
  %132 = load float, ptr %15, align 4, !tbaa !9
  %133 = load float, ptr %13, align 4, !tbaa !9
  %134 = fsub float %132, %133
  store float %134, ptr %131, align 4, !tbaa !17
  %135 = getelementptr inbounds %struct.MathVector, ptr %20, i32 0, i32 2
  %136 = load float, ptr %18, align 4, !tbaa !9
  %137 = load float, ptr %16, align 4, !tbaa !9
  %138 = fsub float %136, %137
  store float %138, ptr %135, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  %139 = getelementptr inbounds %struct.MathVector, ptr %19, i32 0, i32 1
  %140 = load float, ptr %139, align 4, !tbaa !17
  %141 = getelementptr inbounds %struct.MathVector, ptr %20, i32 0, i32 2
  %142 = load float, ptr %141, align 4, !tbaa !18
  %143 = getelementptr inbounds %struct.MathVector, ptr %19, i32 0, i32 2
  %144 = load float, ptr %143, align 4, !tbaa !18
  %145 = getelementptr inbounds %struct.MathVector, ptr %20, i32 0, i32 1
  %146 = load float, ptr %145, align 4, !tbaa !17
  %147 = fmul float %144, %146
  %148 = fneg float %147
  %149 = call float @llvm.fmuladd.f32(float %140, float %142, float %148)
  %150 = getelementptr inbounds %struct.MathVector, ptr %19, i32 0, i32 1
  %151 = load float, ptr %150, align 4, !tbaa !17
  %152 = getelementptr inbounds %struct.MathVector, ptr %20, i32 0, i32 2
  %153 = load float, ptr %152, align 4, !tbaa !18
  %154 = getelementptr inbounds %struct.MathVector, ptr %19, i32 0, i32 2
  %155 = load float, ptr %154, align 4, !tbaa !18
  %156 = getelementptr inbounds %struct.MathVector, ptr %20, i32 0, i32 1
  %157 = load float, ptr %156, align 4, !tbaa !17
  %158 = fmul float %155, %157
  %159 = fneg float %158
  %160 = call float @llvm.fmuladd.f32(float %151, float %153, float %159)
  %161 = getelementptr inbounds %struct.MathVector, ptr %19, i32 0, i32 2
  %162 = load float, ptr %161, align 4, !tbaa !18
  %163 = getelementptr inbounds %struct.MathVector, ptr %20, i32 0, i32 0
  %164 = load float, ptr %163, align 4, !tbaa !15
  %165 = getelementptr inbounds %struct.MathVector, ptr %19, i32 0, i32 0
  %166 = load float, ptr %165, align 4, !tbaa !15
  %167 = getelementptr inbounds %struct.MathVector, ptr %20, i32 0, i32 2
  %168 = load float, ptr %167, align 4, !tbaa !18
  %169 = fmul float %166, %168
  %170 = fneg float %169
  %171 = call float @llvm.fmuladd.f32(float %162, float %164, float %170)
  %172 = getelementptr inbounds %struct.MathVector, ptr %19, i32 0, i32 2
  %173 = load float, ptr %172, align 4, !tbaa !18
  %174 = getelementptr inbounds %struct.MathVector, ptr %20, i32 0, i32 0
  %175 = load float, ptr %174, align 4, !tbaa !15
  %176 = getelementptr inbounds %struct.MathVector, ptr %19, i32 0, i32 0
  %177 = load float, ptr %176, align 4, !tbaa !15
  %178 = getelementptr inbounds %struct.MathVector, ptr %20, i32 0, i32 2
  %179 = load float, ptr %178, align 4, !tbaa !18
  %180 = fmul float %177, %179
  %181 = fneg float %180
  %182 = call float @llvm.fmuladd.f32(float %173, float %175, float %181)
  %183 = fmul float %171, %182
  %184 = call float @llvm.fmuladd.f32(float %149, float %160, float %183)
  %185 = getelementptr inbounds %struct.MathVector, ptr %19, i32 0, i32 0
  %186 = load float, ptr %185, align 4, !tbaa !15
  %187 = getelementptr inbounds %struct.MathVector, ptr %20, i32 0, i32 1
  %188 = load float, ptr %187, align 4, !tbaa !17
  %189 = getelementptr inbounds %struct.MathVector, ptr %19, i32 0, i32 1
  %190 = load float, ptr %189, align 4, !tbaa !17
  %191 = getelementptr inbounds %struct.MathVector, ptr %20, i32 0, i32 0
  %192 = load float, ptr %191, align 4, !tbaa !15
  %193 = fmul float %190, %192
  %194 = fneg float %193
  %195 = call float @llvm.fmuladd.f32(float %186, float %188, float %194)
  %196 = getelementptr inbounds %struct.MathVector, ptr %19, i32 0, i32 0
  %197 = load float, ptr %196, align 4, !tbaa !15
  %198 = getelementptr inbounds %struct.MathVector, ptr %20, i32 0, i32 1
  %199 = load float, ptr %198, align 4, !tbaa !17
  %200 = getelementptr inbounds %struct.MathVector, ptr %19, i32 0, i32 1
  %201 = load float, ptr %200, align 4, !tbaa !17
  %202 = getelementptr inbounds %struct.MathVector, ptr %20, i32 0, i32 0
  %203 = load float, ptr %202, align 4, !tbaa !15
  %204 = fmul float %201, %203
  %205 = fneg float %204
  %206 = call float @llvm.fmuladd.f32(float %197, float %199, float %205)
  %207 = call float @llvm.fmuladd.f32(float %195, float %206, float %184)
  %208 = fmul float 5.000000e-01, %207
  store float %208, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #5
  %209 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 0
  %210 = load i32, ptr %209, align 8, !tbaa !19
  %211 = add nsw i32 %210, 1
  %212 = sext i32 %211 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #5
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #5
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %212, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %213 unwind label %224

213:                                              ; preds = %4
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #5
  %214 = load ptr, ptr %6, align 8, !tbaa !5
  %215 = getelementptr inbounds %struct.Edge, ptr %214, i32 0, i32 0
  %216 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %215, i64 noundef 0) #5
  %217 = load i32, ptr %216, align 4, !tbaa !13
  %218 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 1
  %219 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %218, i64 noundef 0) #5
  %220 = load i32, ptr %219, align 4, !tbaa !13
  %221 = icmp eq i32 %217, %220
  br i1 %221, label %222, label %228

222:                                              ; preds = %213
  %223 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 0) #5
  store i32 0, ptr %223, align 4, !tbaa !13
  br label %264

224:                                              ; preds = %4
  %225 = landingpad { ptr, i32 }
          cleanup
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %24, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %25, align 4
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #5
  br label %872

228:                                              ; preds = %213
  %229 = load ptr, ptr %6, align 8, !tbaa !5
  %230 = getelementptr inbounds %struct.Edge, ptr %229, i32 0, i32 0
  %231 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %230, i64 noundef 0) #5
  %232 = load i32, ptr %231, align 4, !tbaa !13
  %233 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 1
  %234 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %233, i64 noundef 1) #5
  %235 = load i32, ptr %234, align 4, !tbaa !13
  %236 = icmp eq i32 %232, %235
  br i1 %236, label %237, label %239

237:                                              ; preds = %228
  %238 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 0) #5
  store i32 1, ptr %238, align 4, !tbaa !13
  br label %263

239:                                              ; preds = %228
  %240 = load ptr, ptr %6, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.Edge, ptr %240, i32 0, i32 0
  %242 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %241, i64 noundef 0) #5
  %243 = load i32, ptr %242, align 4, !tbaa !13
  %244 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 1
  %245 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %244, i64 noundef 2) #5
  %246 = load i32, ptr %245, align 4, !tbaa !13
  %247 = icmp eq i32 %243, %246
  br i1 %247, label %248, label %250

248:                                              ; preds = %239
  %249 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 0) #5
  store i32 2, ptr %249, align 4, !tbaa !13
  br label %262

250:                                              ; preds = %239
  %251 = load ptr, ptr %6, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.Edge, ptr %251, i32 0, i32 0
  %253 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %252, i64 noundef 0) #5
  %254 = load i32, ptr %253, align 4, !tbaa !13
  %255 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 1
  %256 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %255, i64 noundef 3) #5
  %257 = load i32, ptr %256, align 4, !tbaa !13
  %258 = icmp eq i32 %254, %257
  br i1 %258, label %259, label %261

259:                                              ; preds = %250
  %260 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 0) #5
  store i32 3, ptr %260, align 4, !tbaa !13
  br label %261

261:                                              ; preds = %259, %250
  br label %262

262:                                              ; preds = %261, %248
  br label %263

263:                                              ; preds = %262, %237
  br label %264

264:                                              ; preds = %263, %222
  %265 = load ptr, ptr %6, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.Edge, ptr %265, i32 0, i32 0
  %267 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %266, i64 noundef 1) #5
  %268 = load i32, ptr %267, align 4, !tbaa !13
  %269 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 1
  %270 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %269, i64 noundef 0) #5
  %271 = load i32, ptr %270, align 4, !tbaa !13
  %272 = icmp eq i32 %268, %271
  br i1 %272, label %273, label %275

273:                                              ; preds = %264
  %274 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 1) #5
  store i32 0, ptr %274, align 4, !tbaa !13
  br label %311

275:                                              ; preds = %264
  %276 = load ptr, ptr %6, align 8, !tbaa !5
  %277 = getelementptr inbounds %struct.Edge, ptr %276, i32 0, i32 0
  %278 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %277, i64 noundef 1) #5
  %279 = load i32, ptr %278, align 4, !tbaa !13
  %280 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 1
  %281 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %280, i64 noundef 1) #5
  %282 = load i32, ptr %281, align 4, !tbaa !13
  %283 = icmp eq i32 %279, %282
  br i1 %283, label %284, label %286

284:                                              ; preds = %275
  %285 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 1) #5
  store i32 1, ptr %285, align 4, !tbaa !13
  br label %310

286:                                              ; preds = %275
  %287 = load ptr, ptr %6, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.Edge, ptr %287, i32 0, i32 0
  %289 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %288, i64 noundef 1) #5
  %290 = load i32, ptr %289, align 4, !tbaa !13
  %291 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 1
  %292 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %291, i64 noundef 2) #5
  %293 = load i32, ptr %292, align 4, !tbaa !13
  %294 = icmp eq i32 %290, %293
  br i1 %294, label %295, label %297

295:                                              ; preds = %286
  %296 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 1) #5
  store i32 2, ptr %296, align 4, !tbaa !13
  br label %309

297:                                              ; preds = %286
  %298 = load ptr, ptr %6, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.Edge, ptr %298, i32 0, i32 0
  %300 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %299, i64 noundef 1) #5
  %301 = load i32, ptr %300, align 4, !tbaa !13
  %302 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 1
  %303 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %302, i64 noundef 3) #5
  %304 = load i32, ptr %303, align 4, !tbaa !13
  %305 = icmp eq i32 %301, %304
  br i1 %305, label %306, label %308

306:                                              ; preds = %297
  %307 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 1) #5
  store i32 3, ptr %307, align 4, !tbaa !13
  br label %308

308:                                              ; preds = %306, %297
  br label %309

309:                                              ; preds = %308, %295
  br label %310

310:                                              ; preds = %309, %284
  br label %311

311:                                              ; preds = %310, %273
  %312 = load ptr, ptr %6, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.Edge, ptr %312, i32 0, i32 0
  %314 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %313, i64 noundef 2) #5
  %315 = load i32, ptr %314, align 4, !tbaa !13
  %316 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 1
  %317 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %316, i64 noundef 0) #5
  %318 = load i32, ptr %317, align 4, !tbaa !13
  %319 = icmp eq i32 %315, %318
  br i1 %319, label %320, label %322

320:                                              ; preds = %311
  %321 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  store i32 0, ptr %321, align 4, !tbaa !13
  br label %358

322:                                              ; preds = %311
  %323 = load ptr, ptr %6, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.Edge, ptr %323, i32 0, i32 0
  %325 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %324, i64 noundef 2) #5
  %326 = load i32, ptr %325, align 4, !tbaa !13
  %327 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 1
  %328 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %327, i64 noundef 1) #5
  %329 = load i32, ptr %328, align 4, !tbaa !13
  %330 = icmp eq i32 %326, %329
  br i1 %330, label %331, label %333

331:                                              ; preds = %322
  %332 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  store i32 1, ptr %332, align 4, !tbaa !13
  br label %357

333:                                              ; preds = %322
  %334 = load ptr, ptr %6, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.Edge, ptr %334, i32 0, i32 0
  %336 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %335, i64 noundef 2) #5
  %337 = load i32, ptr %336, align 4, !tbaa !13
  %338 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 1
  %339 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %338, i64 noundef 2) #5
  %340 = load i32, ptr %339, align 4, !tbaa !13
  %341 = icmp eq i32 %337, %340
  br i1 %341, label %342, label %344

342:                                              ; preds = %333
  %343 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  store i32 2, ptr %343, align 4, !tbaa !13
  br label %356

344:                                              ; preds = %333
  %345 = load ptr, ptr %6, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.Edge, ptr %345, i32 0, i32 0
  %347 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %346, i64 noundef 2) #5
  %348 = load i32, ptr %347, align 4, !tbaa !13
  %349 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 1
  %350 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %349, i64 noundef 3) #5
  %351 = load i32, ptr %350, align 4, !tbaa !13
  %352 = icmp eq i32 %348, %351
  br i1 %352, label %353, label %355

353:                                              ; preds = %344
  %354 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  store i32 3, ptr %354, align 4, !tbaa !13
  br label %355

355:                                              ; preds = %353, %344
  br label %356

356:                                              ; preds = %355, %342
  br label %357

357:                                              ; preds = %356, %331
  br label %358

358:                                              ; preds = %357, %320
  %359 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 0) #5
  %360 = load i32, ptr %359, align 4, !tbaa !13
  %361 = icmp eq i32 %360, 0
  br i1 %361, label %362, label %399

362:                                              ; preds = %358
  %363 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 1) #5
  %364 = load i32, ptr %363, align 4, !tbaa !13
  %365 = icmp eq i32 %364, 1
  br i1 %365, label %366, label %375

366:                                              ; preds = %362
  %367 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  %368 = load i32, ptr %367, align 4, !tbaa !13
  %369 = icmp eq i32 %368, 2
  br i1 %369, label %370, label %372

370:                                              ; preds = %366
  %371 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 3) #5
  store i32 3, ptr %371, align 4, !tbaa !13
  br label %374

372:                                              ; preds = %366
  %373 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 3) #5
  store i32 2, ptr %373, align 4, !tbaa !13
  br label %374

374:                                              ; preds = %372, %370
  br label %398

375:                                              ; preds = %362
  %376 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 1) #5
  %377 = load i32, ptr %376, align 4, !tbaa !13
  %378 = icmp eq i32 %377, 2
  br i1 %378, label %379, label %388

379:                                              ; preds = %375
  %380 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  %381 = load i32, ptr %380, align 4, !tbaa !13
  %382 = icmp eq i32 %381, 1
  br i1 %382, label %383, label %385

383:                                              ; preds = %379
  %384 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  store i32 3, ptr %384, align 4, !tbaa !13
  br label %387

385:                                              ; preds = %379
  %386 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  store i32 1, ptr %386, align 4, !tbaa !13
  br label %387

387:                                              ; preds = %385, %383
  br label %397

388:                                              ; preds = %375
  %389 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  %390 = load i32, ptr %389, align 4, !tbaa !13
  %391 = icmp eq i32 %390, 1
  br i1 %391, label %392, label %394

392:                                              ; preds = %388
  %393 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  store i32 2, ptr %393, align 4, !tbaa !13
  br label %396

394:                                              ; preds = %388
  %395 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  store i32 1, ptr %395, align 4, !tbaa !13
  br label %396

396:                                              ; preds = %394, %392
  br label %397

397:                                              ; preds = %396, %387
  br label %398

398:                                              ; preds = %397, %374
  br label %525

399:                                              ; preds = %358
  %400 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 0) #5
  %401 = load i32, ptr %400, align 4, !tbaa !13
  %402 = icmp eq i32 %401, 1
  br i1 %402, label %403, label %440

403:                                              ; preds = %399
  %404 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 1) #5
  %405 = load i32, ptr %404, align 4, !tbaa !13
  %406 = icmp eq i32 %405, 0
  br i1 %406, label %407, label %416

407:                                              ; preds = %403
  %408 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  %409 = load i32, ptr %408, align 4, !tbaa !13
  %410 = icmp eq i32 %409, 2
  br i1 %410, label %411, label %413

411:                                              ; preds = %407
  %412 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 3) #5
  store i32 3, ptr %412, align 4, !tbaa !13
  br label %415

413:                                              ; preds = %407
  %414 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 3) #5
  store i32 2, ptr %414, align 4, !tbaa !13
  br label %415

415:                                              ; preds = %413, %411
  br label %439

416:                                              ; preds = %403
  %417 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 1) #5
  %418 = load i32, ptr %417, align 4, !tbaa !13
  %419 = icmp eq i32 %418, 2
  br i1 %419, label %420, label %429

420:                                              ; preds = %416
  %421 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  %422 = load i32, ptr %421, align 4, !tbaa !13
  %423 = icmp eq i32 %422, 0
  br i1 %423, label %424, label %426

424:                                              ; preds = %420
  %425 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  store i32 3, ptr %425, align 4, !tbaa !13
  br label %428

426:                                              ; preds = %420
  %427 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  store i32 0, ptr %427, align 4, !tbaa !13
  br label %428

428:                                              ; preds = %426, %424
  br label %438

429:                                              ; preds = %416
  %430 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  %431 = load i32, ptr %430, align 4, !tbaa !13
  %432 = icmp eq i32 %431, 0
  br i1 %432, label %433, label %435

433:                                              ; preds = %429
  %434 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  store i32 2, ptr %434, align 4, !tbaa !13
  br label %437

435:                                              ; preds = %429
  %436 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  store i32 0, ptr %436, align 4, !tbaa !13
  br label %437

437:                                              ; preds = %435, %433
  br label %438

438:                                              ; preds = %437, %428
  br label %439

439:                                              ; preds = %438, %415
  br label %524

440:                                              ; preds = %399
  %441 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 0) #5
  %442 = load i32, ptr %441, align 4, !tbaa !13
  %443 = icmp eq i32 %442, 2
  br i1 %443, label %444, label %481

444:                                              ; preds = %440
  %445 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 1) #5
  %446 = load i32, ptr %445, align 4, !tbaa !13
  %447 = icmp eq i32 %446, 0
  br i1 %447, label %448, label %457

448:                                              ; preds = %444
  %449 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  %450 = load i32, ptr %449, align 4, !tbaa !13
  %451 = icmp eq i32 %450, 1
  br i1 %451, label %452, label %454

452:                                              ; preds = %448
  %453 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 3) #5
  store i32 3, ptr %453, align 4, !tbaa !13
  br label %456

454:                                              ; preds = %448
  %455 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 3) #5
  store i32 1, ptr %455, align 4, !tbaa !13
  br label %456

456:                                              ; preds = %454, %452
  br label %480

457:                                              ; preds = %444
  %458 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 1) #5
  %459 = load i32, ptr %458, align 4, !tbaa !13
  %460 = icmp eq i32 %459, 1
  br i1 %460, label %461, label %470

461:                                              ; preds = %457
  %462 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  %463 = load i32, ptr %462, align 4, !tbaa !13
  %464 = icmp eq i32 %463, 0
  br i1 %464, label %465, label %467

465:                                              ; preds = %461
  %466 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  store i32 3, ptr %466, align 4, !tbaa !13
  br label %469

467:                                              ; preds = %461
  %468 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  store i32 0, ptr %468, align 4, !tbaa !13
  br label %469

469:                                              ; preds = %467, %465
  br label %479

470:                                              ; preds = %457
  %471 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  %472 = load i32, ptr %471, align 4, !tbaa !13
  %473 = icmp eq i32 %472, 0
  br i1 %473, label %474, label %476

474:                                              ; preds = %470
  %475 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  store i32 1, ptr %475, align 4, !tbaa !13
  br label %478

476:                                              ; preds = %470
  %477 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  store i32 0, ptr %477, align 4, !tbaa !13
  br label %478

478:                                              ; preds = %476, %474
  br label %479

479:                                              ; preds = %478, %469
  br label %480

480:                                              ; preds = %479, %456
  br label %523

481:                                              ; preds = %440
  %482 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 0) #5
  %483 = load i32, ptr %482, align 4, !tbaa !13
  %484 = icmp eq i32 %483, 3
  br i1 %484, label %485, label %522

485:                                              ; preds = %481
  %486 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 1) #5
  %487 = load i32, ptr %486, align 4, !tbaa !13
  %488 = icmp eq i32 %487, 0
  br i1 %488, label %489, label %498

489:                                              ; preds = %485
  %490 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  %491 = load i32, ptr %490, align 4, !tbaa !13
  %492 = icmp eq i32 %491, 1
  br i1 %492, label %493, label %495

493:                                              ; preds = %489
  %494 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 3) #5
  store i32 2, ptr %494, align 4, !tbaa !13
  br label %497

495:                                              ; preds = %489
  %496 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 3) #5
  store i32 1, ptr %496, align 4, !tbaa !13
  br label %497

497:                                              ; preds = %495, %493
  br label %521

498:                                              ; preds = %485
  %499 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 1) #5
  %500 = load i32, ptr %499, align 4, !tbaa !13
  %501 = icmp eq i32 %500, 1
  br i1 %501, label %502, label %511

502:                                              ; preds = %498
  %503 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  %504 = load i32, ptr %503, align 4, !tbaa !13
  %505 = icmp eq i32 %504, 0
  br i1 %505, label %506, label %508

506:                                              ; preds = %502
  %507 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  store i32 2, ptr %507, align 4, !tbaa !13
  br label %510

508:                                              ; preds = %502
  %509 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  store i32 0, ptr %509, align 4, !tbaa !13
  br label %510

510:                                              ; preds = %508, %506
  br label %520

511:                                              ; preds = %498
  %512 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  %513 = load i32, ptr %512, align 4, !tbaa !13
  %514 = icmp eq i32 %513, 0
  br i1 %514, label %515, label %517

515:                                              ; preds = %511
  %516 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  store i32 1, ptr %516, align 4, !tbaa !13
  br label %519

517:                                              ; preds = %511
  %518 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  store i32 0, ptr %518, align 4, !tbaa !13
  br label %519

519:                                              ; preds = %517, %515
  br label %520

520:                                              ; preds = %519, %510
  br label %521

521:                                              ; preds = %520, %497
  br label %522

522:                                              ; preds = %521, %481
  br label %523

523:                                              ; preds = %522, %480
  br label %524

524:                                              ; preds = %523, %439
  br label %525

525:                                              ; preds = %524, %398
  %526 = load ptr, ptr %6, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.BoundaryEdge, ptr %526, i32 0, i32 3
  %528 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN10Constraint4TypeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %527, i64 noundef 0) #5
  %529 = load i32, ptr %528, align 4, !tbaa !30
  %530 = and i32 %529, 1
  %531 = icmp ne i32 %530, 0
  br i1 %531, label %532, label %545

532:                                              ; preds = %525
  %533 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 8
  %534 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 0) #5
  %535 = load i32, ptr %534, align 4, !tbaa !13
  %536 = mul nsw i32 3, %535
  %537 = add nsw i32 %536, 0
  %538 = sext i32 %537 to i64
  %539 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %533, i64 noundef %538)
          to label %540 unwind label %541

540:                                              ; preds = %532
  store float 0.000000e+00, ptr %539, align 4, !tbaa !9
  br label %567

541:                                              ; preds = %849, %840, %811, %802, %773, %764, %735, %726, %697, %688, %659, %650, %621, %612, %583, %574, %545, %532
  %542 = landingpad { ptr, i32 }
          cleanup
  %543 = extractvalue { ptr, i32 } %542, 0
  store ptr %543, ptr %24, align 8
  %544 = extractvalue { ptr, i32 } %542, 1
  store i32 %544, ptr %25, align 4
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #5
  br label %872

545:                                              ; preds = %525
  %546 = load float, ptr %9, align 4, !tbaa !9
  %547 = fpext float %546 to double
  %548 = fmul double -5.000000e-01, %547
  %549 = load float, ptr %21, align 4, !tbaa !9
  %550 = fpext float %549 to double
  %551 = fmul double %548, %550
  %552 = load ptr, ptr %6, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.BoundaryEdge, ptr %552, i32 0, i32 2
  %554 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %553, i64 noundef 0) #5
  %555 = load float, ptr %554, align 4, !tbaa !9
  %556 = fpext float %555 to double
  %557 = fmul double %551, %556
  %558 = fptrunc double %557 to float
  %559 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 8
  %560 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 0) #5
  %561 = load i32, ptr %560, align 4, !tbaa !13
  %562 = mul nsw i32 3, %561
  %563 = add nsw i32 %562, 0
  %564 = sext i32 %563 to i64
  %565 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %559, i64 noundef %564)
          to label %566 unwind label %541

566:                                              ; preds = %545
  store float %558, ptr %565, align 4, !tbaa !9
  br label %567

567:                                              ; preds = %566, %540
  %568 = load ptr, ptr %6, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.BoundaryEdge, ptr %568, i32 0, i32 3
  %570 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN10Constraint4TypeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %569, i64 noundef 0) #5
  %571 = load i32, ptr %570, align 4, !tbaa !30
  %572 = and i32 %571, 2
  %573 = icmp ne i32 %572, 0
  br i1 %573, label %574, label %583

574:                                              ; preds = %567
  %575 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 8
  %576 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 0) #5
  %577 = load i32, ptr %576, align 4, !tbaa !13
  %578 = mul nsw i32 3, %577
  %579 = add nsw i32 %578, 1
  %580 = sext i32 %579 to i64
  %581 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %575, i64 noundef %580)
          to label %582 unwind label %541

582:                                              ; preds = %574
  store float 0.000000e+00, ptr %581, align 4, !tbaa !9
  br label %605

583:                                              ; preds = %567
  %584 = load float, ptr %9, align 4, !tbaa !9
  %585 = fpext float %584 to double
  %586 = fmul double -5.000000e-01, %585
  %587 = load float, ptr %21, align 4, !tbaa !9
  %588 = fpext float %587 to double
  %589 = fmul double %586, %588
  %590 = load ptr, ptr %6, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.BoundaryEdge, ptr %590, i32 0, i32 2
  %592 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %591, i64 noundef 1) #5
  %593 = load float, ptr %592, align 4, !tbaa !9
  %594 = fpext float %593 to double
  %595 = fmul double %589, %594
  %596 = fptrunc double %595 to float
  %597 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 8
  %598 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 0) #5
  %599 = load i32, ptr %598, align 4, !tbaa !13
  %600 = mul nsw i32 3, %599
  %601 = add nsw i32 %600, 1
  %602 = sext i32 %601 to i64
  %603 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %597, i64 noundef %602)
          to label %604 unwind label %541

604:                                              ; preds = %583
  store float %596, ptr %603, align 4, !tbaa !9
  br label %605

605:                                              ; preds = %604, %582
  %606 = load ptr, ptr %6, align 8, !tbaa !5
  %607 = getelementptr inbounds %struct.BoundaryEdge, ptr %606, i32 0, i32 3
  %608 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN10Constraint4TypeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %607, i64 noundef 0) #5
  %609 = load i32, ptr %608, align 4, !tbaa !30
  %610 = and i32 %609, 3
  %611 = icmp ne i32 %610, 0
  br i1 %611, label %612, label %621

612:                                              ; preds = %605
  %613 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 8
  %614 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 0) #5
  %615 = load i32, ptr %614, align 4, !tbaa !13
  %616 = mul nsw i32 3, %615
  %617 = add nsw i32 %616, 2
  %618 = sext i32 %617 to i64
  %619 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %613, i64 noundef %618)
          to label %620 unwind label %541

620:                                              ; preds = %612
  store float 0.000000e+00, ptr %619, align 4, !tbaa !9
  br label %643

621:                                              ; preds = %605
  %622 = load float, ptr %9, align 4, !tbaa !9
  %623 = fpext float %622 to double
  %624 = fmul double -5.000000e-01, %623
  %625 = load float, ptr %21, align 4, !tbaa !9
  %626 = fpext float %625 to double
  %627 = fmul double %624, %626
  %628 = load ptr, ptr %6, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.BoundaryEdge, ptr %628, i32 0, i32 2
  %630 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %629, i64 noundef 2) #5
  %631 = load float, ptr %630, align 4, !tbaa !9
  %632 = fpext float %631 to double
  %633 = fmul double %627, %632
  %634 = fptrunc double %633 to float
  %635 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 8
  %636 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 0) #5
  %637 = load i32, ptr %636, align 4, !tbaa !13
  %638 = mul nsw i32 3, %637
  %639 = add nsw i32 %638, 2
  %640 = sext i32 %639 to i64
  %641 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %635, i64 noundef %640)
          to label %642 unwind label %541

642:                                              ; preds = %621
  store float %634, ptr %641, align 4, !tbaa !9
  br label %643

643:                                              ; preds = %642, %620
  %644 = load ptr, ptr %6, align 8, !tbaa !5
  %645 = getelementptr inbounds %struct.BoundaryEdge, ptr %644, i32 0, i32 3
  %646 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN10Constraint4TypeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %645, i64 noundef 1) #5
  %647 = load i32, ptr %646, align 4, !tbaa !30
  %648 = and i32 %647, 1
  %649 = icmp ne i32 %648, 0
  br i1 %649, label %650, label %659

650:                                              ; preds = %643
  %651 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 8
  %652 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 1) #5
  %653 = load i32, ptr %652, align 4, !tbaa !13
  %654 = mul nsw i32 3, %653
  %655 = add nsw i32 %654, 0
  %656 = sext i32 %655 to i64
  %657 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %651, i64 noundef %656)
          to label %658 unwind label %541

658:                                              ; preds = %650
  store float 0.000000e+00, ptr %657, align 4, !tbaa !9
  br label %681

659:                                              ; preds = %643
  %660 = load float, ptr %9, align 4, !tbaa !9
  %661 = fpext float %660 to double
  %662 = fmul double -5.000000e-01, %661
  %663 = load float, ptr %21, align 4, !tbaa !9
  %664 = fpext float %663 to double
  %665 = fmul double %662, %664
  %666 = load ptr, ptr %6, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct.BoundaryEdge, ptr %666, i32 0, i32 2
  %668 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %667, i64 noundef 0) #5
  %669 = load float, ptr %668, align 4, !tbaa !9
  %670 = fpext float %669 to double
  %671 = fmul double %665, %670
  %672 = fptrunc double %671 to float
  %673 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 8
  %674 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 1) #5
  %675 = load i32, ptr %674, align 4, !tbaa !13
  %676 = mul nsw i32 3, %675
  %677 = add nsw i32 %676, 0
  %678 = sext i32 %677 to i64
  %679 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %673, i64 noundef %678)
          to label %680 unwind label %541

680:                                              ; preds = %659
  store float %672, ptr %679, align 4, !tbaa !9
  br label %681

681:                                              ; preds = %680, %658
  %682 = load ptr, ptr %6, align 8, !tbaa !5
  %683 = getelementptr inbounds %struct.BoundaryEdge, ptr %682, i32 0, i32 3
  %684 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN10Constraint4TypeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %683, i64 noundef 1) #5
  %685 = load i32, ptr %684, align 4, !tbaa !30
  %686 = and i32 %685, 2
  %687 = icmp ne i32 %686, 0
  br i1 %687, label %688, label %697

688:                                              ; preds = %681
  %689 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 8
  %690 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 1) #5
  %691 = load i32, ptr %690, align 4, !tbaa !13
  %692 = mul nsw i32 3, %691
  %693 = add nsw i32 %692, 1
  %694 = sext i32 %693 to i64
  %695 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %689, i64 noundef %694)
          to label %696 unwind label %541

696:                                              ; preds = %688
  store float 0.000000e+00, ptr %695, align 4, !tbaa !9
  br label %719

697:                                              ; preds = %681
  %698 = load float, ptr %9, align 4, !tbaa !9
  %699 = fpext float %698 to double
  %700 = fmul double -5.000000e-01, %699
  %701 = load float, ptr %21, align 4, !tbaa !9
  %702 = fpext float %701 to double
  %703 = fmul double %700, %702
  %704 = load ptr, ptr %6, align 8, !tbaa !5
  %705 = getelementptr inbounds %struct.BoundaryEdge, ptr %704, i32 0, i32 2
  %706 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %705, i64 noundef 1) #5
  %707 = load float, ptr %706, align 4, !tbaa !9
  %708 = fpext float %707 to double
  %709 = fmul double %703, %708
  %710 = fptrunc double %709 to float
  %711 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 8
  %712 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 1) #5
  %713 = load i32, ptr %712, align 4, !tbaa !13
  %714 = mul nsw i32 3, %713
  %715 = add nsw i32 %714, 1
  %716 = sext i32 %715 to i64
  %717 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %711, i64 noundef %716)
          to label %718 unwind label %541

718:                                              ; preds = %697
  store float %710, ptr %717, align 4, !tbaa !9
  br label %719

719:                                              ; preds = %718, %696
  %720 = load ptr, ptr %6, align 8, !tbaa !5
  %721 = getelementptr inbounds %struct.BoundaryEdge, ptr %720, i32 0, i32 3
  %722 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN10Constraint4TypeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %721, i64 noundef 1) #5
  %723 = load i32, ptr %722, align 4, !tbaa !30
  %724 = and i32 %723, 3
  %725 = icmp ne i32 %724, 0
  br i1 %725, label %726, label %735

726:                                              ; preds = %719
  %727 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 8
  %728 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 1) #5
  %729 = load i32, ptr %728, align 4, !tbaa !13
  %730 = mul nsw i32 3, %729
  %731 = add nsw i32 %730, 2
  %732 = sext i32 %731 to i64
  %733 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %727, i64 noundef %732)
          to label %734 unwind label %541

734:                                              ; preds = %726
  store float 0.000000e+00, ptr %733, align 4, !tbaa !9
  br label %757

735:                                              ; preds = %719
  %736 = load float, ptr %9, align 4, !tbaa !9
  %737 = fpext float %736 to double
  %738 = fmul double -5.000000e-01, %737
  %739 = load float, ptr %21, align 4, !tbaa !9
  %740 = fpext float %739 to double
  %741 = fmul double %738, %740
  %742 = load ptr, ptr %6, align 8, !tbaa !5
  %743 = getelementptr inbounds %struct.BoundaryEdge, ptr %742, i32 0, i32 2
  %744 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %743, i64 noundef 2) #5
  %745 = load float, ptr %744, align 4, !tbaa !9
  %746 = fpext float %745 to double
  %747 = fmul double %741, %746
  %748 = fptrunc double %747 to float
  %749 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 8
  %750 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 1) #5
  %751 = load i32, ptr %750, align 4, !tbaa !13
  %752 = mul nsw i32 3, %751
  %753 = add nsw i32 %752, 2
  %754 = sext i32 %753 to i64
  %755 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %749, i64 noundef %754)
          to label %756 unwind label %541

756:                                              ; preds = %735
  store float %748, ptr %755, align 4, !tbaa !9
  br label %757

757:                                              ; preds = %756, %734
  %758 = load ptr, ptr %6, align 8, !tbaa !5
  %759 = getelementptr inbounds %struct.BoundaryEdge, ptr %758, i32 0, i32 3
  %760 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN10Constraint4TypeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %759, i64 noundef 2) #5
  %761 = load i32, ptr %760, align 4, !tbaa !30
  %762 = and i32 %761, 1
  %763 = icmp ne i32 %762, 0
  br i1 %763, label %764, label %773

764:                                              ; preds = %757
  %765 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 8
  %766 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  %767 = load i32, ptr %766, align 4, !tbaa !13
  %768 = mul nsw i32 3, %767
  %769 = add nsw i32 %768, 0
  %770 = sext i32 %769 to i64
  %771 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %765, i64 noundef %770)
          to label %772 unwind label %541

772:                                              ; preds = %764
  store float 0.000000e+00, ptr %771, align 4, !tbaa !9
  br label %795

773:                                              ; preds = %757
  %774 = load float, ptr %9, align 4, !tbaa !9
  %775 = fpext float %774 to double
  %776 = fmul double -5.000000e-01, %775
  %777 = load float, ptr %21, align 4, !tbaa !9
  %778 = fpext float %777 to double
  %779 = fmul double %776, %778
  %780 = load ptr, ptr %6, align 8, !tbaa !5
  %781 = getelementptr inbounds %struct.BoundaryEdge, ptr %780, i32 0, i32 2
  %782 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %781, i64 noundef 0) #5
  %783 = load float, ptr %782, align 4, !tbaa !9
  %784 = fpext float %783 to double
  %785 = fmul double %779, %784
  %786 = fptrunc double %785 to float
  %787 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 8
  %788 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  %789 = load i32, ptr %788, align 4, !tbaa !13
  %790 = mul nsw i32 3, %789
  %791 = add nsw i32 %790, 0
  %792 = sext i32 %791 to i64
  %793 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %787, i64 noundef %792)
          to label %794 unwind label %541

794:                                              ; preds = %773
  store float %786, ptr %793, align 4, !tbaa !9
  br label %795

795:                                              ; preds = %794, %772
  %796 = load ptr, ptr %6, align 8, !tbaa !5
  %797 = getelementptr inbounds %struct.BoundaryEdge, ptr %796, i32 0, i32 3
  %798 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN10Constraint4TypeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %797, i64 noundef 2) #5
  %799 = load i32, ptr %798, align 4, !tbaa !30
  %800 = and i32 %799, 2
  %801 = icmp ne i32 %800, 0
  br i1 %801, label %802, label %811

802:                                              ; preds = %795
  %803 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 8
  %804 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  %805 = load i32, ptr %804, align 4, !tbaa !13
  %806 = mul nsw i32 3, %805
  %807 = add nsw i32 %806, 1
  %808 = sext i32 %807 to i64
  %809 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %803, i64 noundef %808)
          to label %810 unwind label %541

810:                                              ; preds = %802
  store float 0.000000e+00, ptr %809, align 4, !tbaa !9
  br label %833

811:                                              ; preds = %795
  %812 = load float, ptr %9, align 4, !tbaa !9
  %813 = fpext float %812 to double
  %814 = fmul double -5.000000e-01, %813
  %815 = load float, ptr %21, align 4, !tbaa !9
  %816 = fpext float %815 to double
  %817 = fmul double %814, %816
  %818 = load ptr, ptr %6, align 8, !tbaa !5
  %819 = getelementptr inbounds %struct.BoundaryEdge, ptr %818, i32 0, i32 2
  %820 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %819, i64 noundef 1) #5
  %821 = load float, ptr %820, align 4, !tbaa !9
  %822 = fpext float %821 to double
  %823 = fmul double %817, %822
  %824 = fptrunc double %823 to float
  %825 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 8
  %826 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  %827 = load i32, ptr %826, align 4, !tbaa !13
  %828 = mul nsw i32 3, %827
  %829 = add nsw i32 %828, 1
  %830 = sext i32 %829 to i64
  %831 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %825, i64 noundef %830)
          to label %832 unwind label %541

832:                                              ; preds = %811
  store float %824, ptr %831, align 4, !tbaa !9
  br label %833

833:                                              ; preds = %832, %810
  %834 = load ptr, ptr %6, align 8, !tbaa !5
  %835 = getelementptr inbounds %struct.BoundaryEdge, ptr %834, i32 0, i32 3
  %836 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN10Constraint4TypeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %835, i64 noundef 2) #5
  %837 = load i32, ptr %836, align 4, !tbaa !30
  %838 = and i32 %837, 3
  %839 = icmp ne i32 %838, 0
  br i1 %839, label %840, label %849

840:                                              ; preds = %833
  %841 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 8
  %842 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  %843 = load i32, ptr %842, align 4, !tbaa !13
  %844 = mul nsw i32 3, %843
  %845 = add nsw i32 %844, 2
  %846 = sext i32 %845 to i64
  %847 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %841, i64 noundef %846)
          to label %848 unwind label %541

848:                                              ; preds = %840
  store float 0.000000e+00, ptr %847, align 4, !tbaa !9
  br label %871

849:                                              ; preds = %833
  %850 = load float, ptr %9, align 4, !tbaa !9
  %851 = fpext float %850 to double
  %852 = fmul double -5.000000e-01, %851
  %853 = load float, ptr %21, align 4, !tbaa !9
  %854 = fpext float %853 to double
  %855 = fmul double %852, %854
  %856 = load ptr, ptr %6, align 8, !tbaa !5
  %857 = getelementptr inbounds %struct.BoundaryEdge, ptr %856, i32 0, i32 2
  %858 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %857, i64 noundef 2) #5
  %859 = load float, ptr %858, align 4, !tbaa !9
  %860 = fpext float %859 to double
  %861 = fmul double %855, %860
  %862 = fptrunc double %861 to float
  %863 = getelementptr inbounds %struct.Element, ptr %26, i32 0, i32 8
  %864 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #5
  %865 = load i32, ptr %864, align 4, !tbaa !13
  %866 = mul nsw i32 3, %865
  %867 = add nsw i32 %866, 2
  %868 = sext i32 %867 to i64
  %869 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %863, i64 noundef %868)
          to label %870 unwind label %541

870:                                              ; preds = %849
  store float %862, ptr %869, align 4, !tbaa !9
  br label %871

871:                                              ; preds = %870, %848
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  ret void

872:                                              ; preds = %541, %224
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  br label %873

873:                                              ; preds = %872
  %874 = load ptr, ptr %24, align 8
  %875 = load i32, ptr %25, align 4
  %876 = insertvalue { ptr, i32 } poison, ptr %874, 0
  %877 = insertvalue { ptr, i32 } %876, i32 %875, 1
  resume { ptr, i32 } %877
}

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"_ZTS19TimeDependentEntity", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !7, i64 16}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{!16, !10, i64 0}
!16 = !{!"_ZTSZN7Element17CalculateFlocal3DER12BoundaryEdgeRSt6vectorI10CPU_MatrixSaIS3_EEfE10MathVector", !10, i64 0, !10, i64 4, !10, i64 8}
!17 = !{!16, !10, i64 4}
!18 = !{!16, !10, i64 8}
!19 = !{!20, !14, i64 0}
!20 = !{!"_ZTS7Element", !14, i64 0, !21, i64 8, !25, i64 32, !25, i64 88, !25, i64 144, !25, i64 200, !10, i64 256, !10, i64 260, !25, i64 264, !25, i64 320, !25, i64 376, !25, i64 432, !25, i64 488, !25, i64 544, !25, i64 600, !25, i64 656, !25, i64 712, !25, i64 768, !25, i64 824, !25, i64 880, !25, i64 936, !25, i64 992, !25, i64 1048}
!21 = !{!"_ZTSSt6vectorIiSaIiEE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!25 = !{!"_ZTS10CPU_Matrix", !26, i64 0}
!26 = !{!"_ZTS6Matrix", !27, i64 8, !28, i64 16, !28, i64 24, !28, i64 32, !6, i64 40, !29, i64 48}
!27 = !{!"_ZTS11DEVICE_NAME", !7, i64 0}
!28 = !{!"long", !7, i64 0}
!29 = !{!"bool", !7, i64 0}
!30 = !{!31, !31, i64 0}
!31 = !{!"_ZTSN10Constraint4TypeE", !7, i64 0}


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

%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator" = type { i8 }

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

declare noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49), i64 noundef) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN19TimeDependentEntity6updateEf(ptr noundef nonnull align 8 dereferenceable(32), float noundef) local_unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN10Constraint4TypeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1 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 #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7Element17CalculateFlocal3DER12BoundaryEdgeRSt6vectorI10CPU_MatrixSaIS3_EEf(ptr noundef nonnull align 8 dereferenceable(1104) %0, ptr noundef nonnull align 8 dereferenceable(112) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, float noundef %3) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.std::vector", align 8
  %6 = alloca %"class.std::allocator", align 1
  %7 = getelementptr inbounds i8, ptr %1, i64 32
  tail call void @_ZN19TimeDependentEntity6updateEf(ptr noundef nonnull align 8 dereferenceable(32) %7, float noundef %3)
  %8 = load float, ptr %7, align 8, !tbaa !5
  %9 = tail call noundef nonnull align 8 dereferenceable(49) ptr @_ZNSt6vectorI10CPU_MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 0) #5
  %10 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0) #5
  %11 = load i32, ptr %10, align 4, !tbaa !10
  %12 = sext i32 %11 to i64
  %13 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %9, i64 noundef %12)
  %14 = load float, ptr %13, align 4, !tbaa !12
  %15 = tail call noundef nonnull align 8 dereferenceable(49) ptr @_ZNSt6vectorI10CPU_MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 0) #5
  %16 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 1) #5
  %17 = load i32, ptr %16, align 4, !tbaa !10
  %18 = sext i32 %17 to i64
  %19 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %15, i64 noundef %18)
  %20 = load float, ptr %19, align 4, !tbaa !12
  %21 = tail call noundef nonnull align 8 dereferenceable(49) ptr @_ZNSt6vectorI10CPU_MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 0) #5
  %22 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 2) #5
  %23 = load i32, ptr %22, align 4, !tbaa !10
  %24 = sext i32 %23 to i64
  %25 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %21, i64 noundef %24)
  %26 = load float, ptr %25, align 4, !tbaa !12
  %27 = tail call noundef nonnull align 8 dereferenceable(49) ptr @_ZNSt6vectorI10CPU_MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 1) #5
  %28 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0) #5
  %29 = load i32, ptr %28, align 4, !tbaa !10
  %30 = sext i32 %29 to i64
  %31 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %27, i64 noundef %30)
  %32 = load float, ptr %31, align 4, !tbaa !12
  %33 = tail call noundef nonnull align 8 dereferenceable(49) ptr @_ZNSt6vectorI10CPU_MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 1) #5
  %34 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 1) #5
  %35 = load i32, ptr %34, align 4, !tbaa !10
  %36 = sext i32 %35 to i64
  %37 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %33, i64 noundef %36)
  %38 = load float, ptr %37, align 4, !tbaa !12
  %39 = tail call noundef nonnull align 8 dereferenceable(49) ptr @_ZNSt6vectorI10CPU_MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 1) #5
  %40 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 2) #5
  %41 = load i32, ptr %40, align 4, !tbaa !10
  %42 = sext i32 %41 to i64
  %43 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %39, i64 noundef %42)
  %44 = load float, ptr %43, align 4, !tbaa !12
  %45 = tail call noundef nonnull align 8 dereferenceable(49) ptr @_ZNSt6vectorI10CPU_MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 2) #5
  %46 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0) #5
  %47 = load i32, ptr %46, align 4, !tbaa !10
  %48 = sext i32 %47 to i64
  %49 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %45, i64 noundef %48)
  %50 = load float, ptr %49, align 4, !tbaa !12
  %51 = tail call noundef nonnull align 8 dereferenceable(49) ptr @_ZNSt6vectorI10CPU_MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 2) #5
  %52 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 1) #5
  %53 = load i32, ptr %52, align 4, !tbaa !10
  %54 = sext i32 %53 to i64
  %55 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %51, i64 noundef %54)
  %56 = load float, ptr %55, align 4, !tbaa !12
  %57 = tail call noundef nonnull align 8 dereferenceable(49) ptr @_ZNSt6vectorI10CPU_MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 2) #5
  %58 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 2) #5
  %59 = load i32, ptr %58, align 4, !tbaa !10
  %60 = sext i32 %59 to i64
  %61 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %57, i64 noundef %60)
  %62 = load float, ptr %61, align 4, !tbaa !12
  %63 = fsub float %20, %14
  %64 = fsub float %38, %32
  %65 = fsub float %56, %50
  %66 = fsub float %26, %14
  %67 = fsub float %44, %32
  %68 = fsub float %62, %50
  %69 = fneg float %65
  %70 = fmul float %67, %69
  %71 = tail call float @llvm.fmuladd.f32(float %64, float %68, float %70)
  %72 = fneg float %63
  %73 = fmul float %68, %72
  %74 = tail call float @llvm.fmuladd.f32(float %65, float %66, float %73)
  %75 = fmul float %74, %74
  %76 = tail call float @llvm.fmuladd.f32(float %71, float %71, float %75)
  %77 = fneg float %64
  %78 = fmul float %66, %77
  %79 = tail call float @llvm.fmuladd.f32(float %63, float %67, float %78)
  %80 = tail call float @llvm.fmuladd.f32(float %79, float %79, float %76)
  %81 = fmul float %80, 5.000000e-01
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #5
  %82 = load i32, ptr %0, align 8, !tbaa !13
  %83 = add nsw i32 %82, 1
  %84 = sext i32 %83 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #5
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #5
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %84, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %85 unwind label %92

85:                                               ; preds = %4
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #5
  %86 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0) #5
  %87 = load i32, ptr %86, align 4, !tbaa !10
  %88 = getelementptr inbounds i8, ptr %0, i64 8
  %89 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef 0) #5
  %90 = load i32, ptr %89, align 4, !tbaa !10
  %91 = icmp eq i32 %87, %90
  br i1 %91, label %.sink.split, label %94

92:                                               ; preds = %4
  %93 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #5
  br label %565

94:                                               ; preds = %85
  %95 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0) #5
  %96 = load i32, ptr %95, align 4, !tbaa !10
  %97 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef 1) #5
  %98 = load i32, ptr %97, align 4, !tbaa !10
  %99 = icmp eq i32 %96, %98
  br i1 %99, label %.sink.split, label %100

100:                                              ; preds = %94
  %101 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0) #5
  %102 = load i32, ptr %101, align 4, !tbaa !10
  %103 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef 2) #5
  %104 = load i32, ptr %103, align 4, !tbaa !10
  %105 = icmp eq i32 %102, %104
  br i1 %105, label %.sink.split, label %106

106:                                              ; preds = %100
  %107 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0) #5
  %108 = load i32, ptr %107, align 4, !tbaa !10
  %109 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef 3) #5
  %110 = load i32, ptr %109, align 4, !tbaa !10
  %111 = icmp eq i32 %108, %110
  br i1 %111, label %.sink.split, label %113

.sink.split:                                      ; preds = %106, %100, %94, %85
  %.sink = phi i32 [ 0, %85 ], [ 1, %94 ], [ 2, %100 ], [ 3, %106 ]
  %112 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #5
  store i32 %.sink, ptr %112, align 4, !tbaa !10
  br label %113

113:                                              ; preds = %.sink.split, %106
  %114 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 1) #5
  %115 = load i32, ptr %114, align 4, !tbaa !10
  %116 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef 0) #5
  %117 = load i32, ptr %116, align 4, !tbaa !10
  %118 = icmp eq i32 %115, %117
  br i1 %118, label %.sink.split115, label %119

119:                                              ; preds = %113
  %120 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 1) #5
  %121 = load i32, ptr %120, align 4, !tbaa !10
  %122 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef 1) #5
  %123 = load i32, ptr %122, align 4, !tbaa !10
  %124 = icmp eq i32 %121, %123
  br i1 %124, label %.sink.split115, label %125

125:                                              ; preds = %119
  %126 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 1) #5
  %127 = load i32, ptr %126, align 4, !tbaa !10
  %128 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef 2) #5
  %129 = load i32, ptr %128, align 4, !tbaa !10
  %130 = icmp eq i32 %127, %129
  br i1 %130, label %.sink.split115, label %131

131:                                              ; preds = %125
  %132 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 1) #5
  %133 = load i32, ptr %132, align 4, !tbaa !10
  %134 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef 3) #5
  %135 = load i32, ptr %134, align 4, !tbaa !10
  %136 = icmp eq i32 %133, %135
  br i1 %136, label %.sink.split115, label %138

.sink.split115:                                   ; preds = %131, %125, %119, %113
  %.sink116 = phi i32 [ 0, %113 ], [ 1, %119 ], [ 2, %125 ], [ 3, %131 ]
  %137 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #5
  store i32 %.sink116, ptr %137, align 4, !tbaa !10
  br label %138

138:                                              ; preds = %.sink.split115, %131
  %139 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 2) #5
  %140 = load i32, ptr %139, align 4, !tbaa !10
  %141 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef 0) #5
  %142 = load i32, ptr %141, align 4, !tbaa !10
  %143 = icmp eq i32 %140, %142
  br i1 %143, label %.sink.split118, label %144

144:                                              ; preds = %138
  %145 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 2) #5
  %146 = load i32, ptr %145, align 4, !tbaa !10
  %147 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef 1) #5
  %148 = load i32, ptr %147, align 4, !tbaa !10
  %149 = icmp eq i32 %146, %148
  br i1 %149, label %.sink.split118, label %150

150:                                              ; preds = %144
  %151 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 2) #5
  %152 = load i32, ptr %151, align 4, !tbaa !10
  %153 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef 2) #5
  %154 = load i32, ptr %153, align 4, !tbaa !10
  %155 = icmp eq i32 %152, %154
  br i1 %155, label %.sink.split118, label %156

156:                                              ; preds = %150
  %157 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 2) #5
  %158 = load i32, ptr %157, align 4, !tbaa !10
  %159 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef 3) #5
  %160 = load i32, ptr %159, align 4, !tbaa !10
  %161 = icmp eq i32 %158, %160
  br i1 %161, label %.sink.split118, label %163

.sink.split118:                                   ; preds = %156, %150, %144, %138
  %.sink119 = phi i32 [ 0, %138 ], [ 1, %144 ], [ 2, %150 ], [ 3, %156 ]
  %162 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 2) #5
  store i32 %.sink119, ptr %162, align 4, !tbaa !10
  br label %163

163:                                              ; preds = %.sink.split118, %156
  %164 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #5
  %165 = load i32, ptr %164, align 4, !tbaa !10
  %166 = icmp eq i32 %165, 0
  br i1 %166, label %167, label %192

167:                                              ; preds = %163
  %168 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #5
  %169 = load i32, ptr %168, align 4, !tbaa !10
  %170 = icmp eq i32 %169, 1
  br i1 %170, label %171, label %178

171:                                              ; preds = %167
  %172 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 2) #5
  %173 = load i32, ptr %172, align 4, !tbaa !10
  %174 = icmp eq i32 %173, 2
  %175 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 3) #5
  br i1 %174, label %176, label %177

176:                                              ; preds = %171
  store i32 3, ptr %175, align 4, !tbaa !10
  br label %279

177:                                              ; preds = %171
  store i32 2, ptr %175, align 4, !tbaa !10
  br label %279

178:                                              ; preds = %167
  %179 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #5
  %180 = load i32, ptr %179, align 4, !tbaa !10
  %181 = icmp eq i32 %180, 2
  %182 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 2) #5
  %183 = load i32, ptr %182, align 4, !tbaa !10
  %184 = icmp eq i32 %183, 1
  %185 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 2) #5
  br i1 %181, label %186, label %189

186:                                              ; preds = %178
  br i1 %184, label %187, label %188

187:                                              ; preds = %186
  store i32 3, ptr %185, align 4, !tbaa !10
  br label %279

188:                                              ; preds = %186
  store i32 1, ptr %185, align 4, !tbaa !10
  br label %279

189:                                              ; preds = %178
  br i1 %184, label %190, label %191

190:                                              ; preds = %189
  store i32 2, ptr %185, align 4, !tbaa !10
  br label %279

191:                                              ; preds = %189
  store i32 1, ptr %185, align 4, !tbaa !10
  br label %279

192:                                              ; preds = %163
  %193 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #5
  %194 = load i32, ptr %193, align 4, !tbaa !10
  %195 = icmp eq i32 %194, 1
  br i1 %195, label %196, label %221

196:                                              ; preds = %192
  %197 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #5
  %198 = load i32, ptr %197, align 4, !tbaa !10
  %199 = icmp eq i32 %198, 0
  br i1 %199, label %200, label %207

200:                                              ; preds = %196
  %201 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 2) #5
  %202 = load i32, ptr %201, align 4, !tbaa !10
  %203 = icmp eq i32 %202, 2
  %204 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 3) #5
  br i1 %203, label %205, label %206

205:                                              ; preds = %200
  store i32 3, ptr %204, align 4, !tbaa !10
  br label %279

206:                                              ; preds = %200
  store i32 2, ptr %204, align 4, !tbaa !10
  br label %279

207:                                              ; preds = %196
  %208 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #5
  %209 = load i32, ptr %208, align 4, !tbaa !10
  %210 = icmp eq i32 %209, 2
  %211 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 2) #5
  %212 = load i32, ptr %211, align 4, !tbaa !10
  %213 = icmp eq i32 %212, 0
  %214 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 2) #5
  br i1 %210, label %215, label %218

215:                                              ; preds = %207
  br i1 %213, label %216, label %217

216:                                              ; preds = %215
  store i32 3, ptr %214, align 4, !tbaa !10
  br label %279

217:                                              ; preds = %215
  store i32 0, ptr %214, align 4, !tbaa !10
  br label %279

218:                                              ; preds = %207
  br i1 %213, label %219, label %220

219:                                              ; preds = %218
  store i32 2, ptr %214, align 4, !tbaa !10
  br label %279

220:                                              ; preds = %218
  store i32 0, ptr %214, align 4, !tbaa !10
  br label %279

221:                                              ; preds = %192
  %222 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #5
  %223 = load i32, ptr %222, align 4, !tbaa !10
  %224 = icmp eq i32 %223, 2
  br i1 %224, label %225, label %250

225:                                              ; preds = %221
  %226 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #5
  %227 = load i32, ptr %226, align 4, !tbaa !10
  %228 = icmp eq i32 %227, 0
  br i1 %228, label %229, label %236

229:                                              ; preds = %225
  %230 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 2) #5
  %231 = load i32, ptr %230, align 4, !tbaa !10
  %232 = icmp eq i32 %231, 1
  %233 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 3) #5
  br i1 %232, label %234, label %235

234:                                              ; preds = %229
  store i32 3, ptr %233, align 4, !tbaa !10
  br label %279

235:                                              ; preds = %229
  store i32 1, ptr %233, align 4, !tbaa !10
  br label %279

236:                                              ; preds = %225
  %237 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #5
  %238 = load i32, ptr %237, align 4, !tbaa !10
  %239 = icmp eq i32 %238, 1
  %240 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 2) #5
  %241 = load i32, ptr %240, align 4, !tbaa !10
  %242 = icmp eq i32 %241, 0
  %243 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 2) #5
  br i1 %239, label %244, label %247

244:                                              ; preds = %236
  br i1 %242, label %245, label %246

245:                                              ; preds = %244
  store i32 3, ptr %243, align 4, !tbaa !10
  br label %279

246:                                              ; preds = %244
  store i32 0, ptr %243, align 4, !tbaa !10
  br label %279

247:                                              ; preds = %236
  br i1 %242, label %248, label %249

248:                                              ; preds = %247
  store i32 1, ptr %243, align 4, !tbaa !10
  br label %279

249:                                              ; preds = %247
  store i32 0, ptr %243, align 4, !tbaa !10
  br label %279

250:                                              ; preds = %221
  %251 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #5
  %252 = load i32, ptr %251, align 4, !tbaa !10
  %253 = icmp eq i32 %252, 3
  br i1 %253, label %254, label %279

254:                                              ; preds = %250
  %255 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #5
  %256 = load i32, ptr %255, align 4, !tbaa !10
  %257 = icmp eq i32 %256, 0
  br i1 %257, label %258, label %265

258:                                              ; preds = %254
  %259 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 2) #5
  %260 = load i32, ptr %259, align 4, !tbaa !10
  %261 = icmp eq i32 %260, 1
  %262 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 3) #5
  br i1 %261, label %263, label %264

263:                                              ; preds = %258
  store i32 2, ptr %262, align 4, !tbaa !10
  br label %279

264:                                              ; preds = %258
  store i32 1, ptr %262, align 4, !tbaa !10
  br label %279

265:                                              ; preds = %254
  %266 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #5
  %267 = load i32, ptr %266, align 4, !tbaa !10
  %268 = icmp eq i32 %267, 1
  %269 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 2) #5
  %270 = load i32, ptr %269, align 4, !tbaa !10
  %271 = icmp eq i32 %270, 0
  %272 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 2) #5
  br i1 %268, label %273, label %276

273:                                              ; preds = %265
  br i1 %271, label %274, label %275

274:                                              ; preds = %273
  store i32 2, ptr %272, align 4, !tbaa !10
  br label %279

275:                                              ; preds = %273
  store i32 0, ptr %272, align 4, !tbaa !10
  br label %279

276:                                              ; preds = %265
  br i1 %271, label %277, label %278

277:                                              ; preds = %276
  store i32 1, ptr %272, align 4, !tbaa !10
  br label %279

278:                                              ; preds = %276
  store i32 0, ptr %272, align 4, !tbaa !10
  br label %279

279:                                              ; preds = %217, %216, %220, %219, %205, %206, %250, %275, %274, %278, %277, %263, %264, %235, %234, %248, %249, %245, %246, %177, %176, %190, %191, %187, %188
  %280 = getelementptr inbounds i8, ptr %1, i64 88
  %281 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN10Constraint4TypeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %280, i64 noundef 0) #5
  %282 = load i32, ptr %281, align 4, !tbaa !25
  %283 = and i32 %282, 1
  %.not = icmp eq i32 %283, 0
  br i1 %.not, label %294, label %284

284:                                              ; preds = %279
  %285 = getelementptr inbounds i8, ptr %0, i64 264
  %286 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #5
  %287 = load i32, ptr %286, align 4, !tbaa !10
  %288 = mul nsw i32 %287, 3
  %289 = sext i32 %288 to i64
  %290 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %285, i64 noundef %289)
          to label %291 unwind label %292

291:                                              ; preds = %284
  store float 0.000000e+00, ptr %290, align 4, !tbaa !12
  br label %312

292:                                              ; preds = %545, %536, %513, %504, %482, %474, %451, %442, %419, %410, %388, %380, %357, %348, %325, %316, %294, %284
  %293 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #5
  br label %565

294:                                              ; preds = %279
  %295 = getelementptr inbounds i8, ptr %1, i64 64
  %296 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %295, i64 noundef 0) #5
  %297 = load float, ptr %296, align 4, !tbaa !12
  %298 = getelementptr inbounds i8, ptr %0, i64 264
  %299 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #5
  %300 = load i32, ptr %299, align 4, !tbaa !10
  %301 = mul nsw i32 %300, 3
  %302 = sext i32 %301 to i64
  %303 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %298, i64 noundef %302)
          to label %304 unwind label %292

304:                                              ; preds = %294
  %305 = fpext float %8 to double
  %306 = fmul double %305, -5.000000e-01
  %307 = fpext float %81 to double
  %308 = fmul double %306, %307
  %309 = fpext float %297 to double
  %310 = fmul double %308, %309
  %311 = fptrunc double %310 to float
  store float %311, ptr %303, align 4, !tbaa !12
  br label %312

312:                                              ; preds = %304, %291
  %313 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN10Constraint4TypeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %280, i64 noundef 0) #5
  %314 = load i32, ptr %313, align 4, !tbaa !25
  %315 = and i32 %314, 2
  %.not105 = icmp eq i32 %315, 0
  br i1 %.not105, label %325, label %316

316:                                              ; preds = %312
  %317 = getelementptr inbounds i8, ptr %0, i64 264
  %318 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #5
  %319 = load i32, ptr %318, align 4, !tbaa !10
  %320 = mul nsw i32 %319, 3
  %321 = add nsw i32 %320, 1
  %322 = sext i32 %321 to i64
  %323 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %317, i64 noundef %322)
          to label %324 unwind label %292

324:                                              ; preds = %316
  store float 0.000000e+00, ptr %323, align 4, !tbaa !12
  br label %344

325:                                              ; preds = %312
  %326 = getelementptr inbounds i8, ptr %1, i64 64
  %327 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %326, i64 noundef 1) #5
  %328 = load float, ptr %327, align 4, !tbaa !12
  %329 = getelementptr inbounds i8, ptr %0, i64 264
  %330 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #5
  %331 = load i32, ptr %330, align 4, !tbaa !10
  %332 = mul nsw i32 %331, 3
  %333 = add nsw i32 %332, 1
  %334 = sext i32 %333 to i64
  %335 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %329, i64 noundef %334)
          to label %336 unwind label %292

336:                                              ; preds = %325
  %337 = fpext float %8 to double
  %338 = fmul double %337, -5.000000e-01
  %339 = fpext float %81 to double
  %340 = fmul double %338, %339
  %341 = fpext float %328 to double
  %342 = fmul double %340, %341
  %343 = fptrunc double %342 to float
  store float %343, ptr %335, align 4, !tbaa !12
  br label %344

344:                                              ; preds = %336, %324
  %345 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN10Constraint4TypeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %280, i64 noundef 0) #5
  %346 = load i32, ptr %345, align 4, !tbaa !25
  %347 = and i32 %346, 3
  %.not106 = icmp eq i32 %347, 0
  br i1 %.not106, label %357, label %348

348:                                              ; preds = %344
  %349 = getelementptr inbounds i8, ptr %0, i64 264
  %350 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #5
  %351 = load i32, ptr %350, align 4, !tbaa !10
  %352 = mul nsw i32 %351, 3
  %353 = add nsw i32 %352, 2
  %354 = sext i32 %353 to i64
  %355 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %349, i64 noundef %354)
          to label %356 unwind label %292

356:                                              ; preds = %348
  store float 0.000000e+00, ptr %355, align 4, !tbaa !12
  br label %376

357:                                              ; preds = %344
  %358 = getelementptr inbounds i8, ptr %1, i64 64
  %359 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %358, i64 noundef 2) #5
  %360 = load float, ptr %359, align 4, !tbaa !12
  %361 = getelementptr inbounds i8, ptr %0, i64 264
  %362 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #5
  %363 = load i32, ptr %362, align 4, !tbaa !10
  %364 = mul nsw i32 %363, 3
  %365 = add nsw i32 %364, 2
  %366 = sext i32 %365 to i64
  %367 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %361, i64 noundef %366)
          to label %368 unwind label %292

368:                                              ; preds = %357
  %369 = fpext float %8 to double
  %370 = fmul double %369, -5.000000e-01
  %371 = fpext float %81 to double
  %372 = fmul double %370, %371
  %373 = fpext float %360 to double
  %374 = fmul double %372, %373
  %375 = fptrunc double %374 to float
  store float %375, ptr %367, align 4, !tbaa !12
  br label %376

376:                                              ; preds = %368, %356
  %377 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN10Constraint4TypeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %280, i64 noundef 1) #5
  %378 = load i32, ptr %377, align 4, !tbaa !25
  %379 = and i32 %378, 1
  %.not107 = icmp eq i32 %379, 0
  br i1 %.not107, label %388, label %380

380:                                              ; preds = %376
  %381 = getelementptr inbounds i8, ptr %0, i64 264
  %382 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #5
  %383 = load i32, ptr %382, align 4, !tbaa !10
  %384 = mul nsw i32 %383, 3
  %385 = sext i32 %384 to i64
  %386 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %381, i64 noundef %385)
          to label %387 unwind label %292

387:                                              ; preds = %380
  store float 0.000000e+00, ptr %386, align 4, !tbaa !12
  br label %406

388:                                              ; preds = %376
  %389 = getelementptr inbounds i8, ptr %1, i64 64
  %390 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %389, i64 noundef 0) #5
  %391 = load float, ptr %390, align 4, !tbaa !12
  %392 = getelementptr inbounds i8, ptr %0, i64 264
  %393 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #5
  %394 = load i32, ptr %393, align 4, !tbaa !10
  %395 = mul nsw i32 %394, 3
  %396 = sext i32 %395 to i64
  %397 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %392, i64 noundef %396)
          to label %398 unwind label %292

398:                                              ; preds = %388
  %399 = fpext float %8 to double
  %400 = fmul double %399, -5.000000e-01
  %401 = fpext float %81 to double
  %402 = fmul double %400, %401
  %403 = fpext float %391 to double
  %404 = fmul double %402, %403
  %405 = fptrunc double %404 to float
  store float %405, ptr %397, align 4, !tbaa !12
  br label %406

406:                                              ; preds = %398, %387
  %407 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN10Constraint4TypeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %280, i64 noundef 1) #5
  %408 = load i32, ptr %407, align 4, !tbaa !25
  %409 = and i32 %408, 2
  %.not108 = icmp eq i32 %409, 0
  br i1 %.not108, label %419, label %410

410:                                              ; preds = %406
  %411 = getelementptr inbounds i8, ptr %0, i64 264
  %412 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #5
  %413 = load i32, ptr %412, align 4, !tbaa !10
  %414 = mul nsw i32 %413, 3
  %415 = add nsw i32 %414, 1
  %416 = sext i32 %415 to i64
  %417 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %411, i64 noundef %416)
          to label %418 unwind label %292

418:                                              ; preds = %410
  store float 0.000000e+00, ptr %417, align 4, !tbaa !12
  br label %438

419:                                              ; preds = %406
  %420 = getelementptr inbounds i8, ptr %1, i64 64
  %421 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %420, i64 noundef 1) #5
  %422 = load float, ptr %421, align 4, !tbaa !12
  %423 = getelementptr inbounds i8, ptr %0, i64 264
  %424 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #5
  %425 = load i32, ptr %424, align 4, !tbaa !10
  %426 = mul nsw i32 %425, 3
  %427 = add nsw i32 %426, 1
  %428 = sext i32 %427 to i64
  %429 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %423, i64 noundef %428)
          to label %430 unwind label %292

430:                                              ; preds = %419
  %431 = fpext float %8 to double
  %432 = fmul double %431, -5.000000e-01
  %433 = fpext float %81 to double
  %434 = fmul double %432, %433
  %435 = fpext float %422 to double
  %436 = fmul double %434, %435
  %437 = fptrunc double %436 to float
  store float %437, ptr %429, align 4, !tbaa !12
  br label %438

438:                                              ; preds = %430, %418
  %439 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN10Constraint4TypeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %280, i64 noundef 1) #5
  %440 = load i32, ptr %439, align 4, !tbaa !25
  %441 = and i32 %440, 3
  %.not109 = icmp eq i32 %441, 0
  br i1 %.not109, label %451, label %442

442:                                              ; preds = %438
  %443 = getelementptr inbounds i8, ptr %0, i64 264
  %444 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #5
  %445 = load i32, ptr %444, align 4, !tbaa !10
  %446 = mul nsw i32 %445, 3
  %447 = add nsw i32 %446, 2
  %448 = sext i32 %447 to i64
  %449 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %443, i64 noundef %448)
          to label %450 unwind label %292

450:                                              ; preds = %442
  store float 0.000000e+00, ptr %449, align 4, !tbaa !12
  br label %470

451:                                              ; preds = %438
  %452 = getelementptr inbounds i8, ptr %1, i64 64
  %453 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %452, i64 noundef 2) #5
  %454 = load float, ptr %453, align 4, !tbaa !12
  %455 = getelementptr inbounds i8, ptr %0, i64 264
  %456 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #5
  %457 = load i32, ptr %456, align 4, !tbaa !10
  %458 = mul nsw i32 %457, 3
  %459 = add nsw i32 %458, 2
  %460 = sext i32 %459 to i64
  %461 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %455, i64 noundef %460)
          to label %462 unwind label %292

462:                                              ; preds = %451
  %463 = fpext float %8 to double
  %464 = fmul double %463, -5.000000e-01
  %465 = fpext float %81 to double
  %466 = fmul double %464, %465
  %467 = fpext float %454 to double
  %468 = fmul double %466, %467
  %469 = fptrunc double %468 to float
  store float %469, ptr %461, align 4, !tbaa !12
  br label %470

470:                                              ; preds = %462, %450
  %471 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN10Constraint4TypeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %280, i64 noundef 2) #5
  %472 = load i32, ptr %471, align 4, !tbaa !25
  %473 = and i32 %472, 1
  %.not110 = icmp eq i32 %473, 0
  br i1 %.not110, label %482, label %474

474:                                              ; preds = %470
  %475 = getelementptr inbounds i8, ptr %0, i64 264
  %476 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 2) #5
  %477 = load i32, ptr %476, align 4, !tbaa !10
  %478 = mul nsw i32 %477, 3
  %479 = sext i32 %478 to i64
  %480 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %475, i64 noundef %479)
          to label %481 unwind label %292

481:                                              ; preds = %474
  store float 0.000000e+00, ptr %480, align 4, !tbaa !12
  br label %500

482:                                              ; preds = %470
  %483 = getelementptr inbounds i8, ptr %1, i64 64
  %484 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %483, i64 noundef 0) #5
  %485 = load float, ptr %484, align 4, !tbaa !12
  %486 = getelementptr inbounds i8, ptr %0, i64 264
  %487 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 2) #5
  %488 = load i32, ptr %487, align 4, !tbaa !10
  %489 = mul nsw i32 %488, 3
  %490 = sext i32 %489 to i64
  %491 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %486, i64 noundef %490)
          to label %492 unwind label %292

492:                                              ; preds = %482
  %493 = fpext float %8 to double
  %494 = fmul double %493, -5.000000e-01
  %495 = fpext float %81 to double
  %496 = fmul double %494, %495
  %497 = fpext float %485 to double
  %498 = fmul double %496, %497
  %499 = fptrunc double %498 to float
  store float %499, ptr %491, align 4, !tbaa !12
  br label %500

500:                                              ; preds = %492, %481
  %501 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN10Constraint4TypeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %280, i64 noundef 2) #5
  %502 = load i32, ptr %501, align 4, !tbaa !25
  %503 = and i32 %502, 2
  %.not111 = icmp eq i32 %503, 0
  br i1 %.not111, label %513, label %504

504:                                              ; preds = %500
  %505 = getelementptr inbounds i8, ptr %0, i64 264
  %506 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 2) #5
  %507 = load i32, ptr %506, align 4, !tbaa !10
  %508 = mul nsw i32 %507, 3
  %509 = add nsw i32 %508, 1
  %510 = sext i32 %509 to i64
  %511 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %505, i64 noundef %510)
          to label %512 unwind label %292

512:                                              ; preds = %504
  store float 0.000000e+00, ptr %511, align 4, !tbaa !12
  br label %532

513:                                              ; preds = %500
  %514 = getelementptr inbounds i8, ptr %1, i64 64
  %515 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %514, i64 noundef 1) #5
  %516 = load float, ptr %515, align 4, !tbaa !12
  %517 = getelementptr inbounds i8, ptr %0, i64 264
  %518 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 2) #5
  %519 = load i32, ptr %518, align 4, !tbaa !10
  %520 = mul nsw i32 %519, 3
  %521 = add nsw i32 %520, 1
  %522 = sext i32 %521 to i64
  %523 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %517, i64 noundef %522)
          to label %524 unwind label %292

524:                                              ; preds = %513
  %525 = fpext float %8 to double
  %526 = fmul double %525, -5.000000e-01
  %527 = fpext float %81 to double
  %528 = fmul double %526, %527
  %529 = fpext float %516 to double
  %530 = fmul double %528, %529
  %531 = fptrunc double %530 to float
  store float %531, ptr %523, align 4, !tbaa !12
  br label %532

532:                                              ; preds = %524, %512
  %533 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN10Constraint4TypeESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %280, i64 noundef 2) #5
  %534 = load i32, ptr %533, align 4, !tbaa !25
  %535 = and i32 %534, 3
  %.not112 = icmp eq i32 %535, 0
  br i1 %.not112, label %545, label %536

536:                                              ; preds = %532
  %537 = getelementptr inbounds i8, ptr %0, i64 264
  %538 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 2) #5
  %539 = load i32, ptr %538, align 4, !tbaa !10
  %540 = mul nsw i32 %539, 3
  %541 = add nsw i32 %540, 2
  %542 = sext i32 %541 to i64
  %543 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %537, i64 noundef %542)
          to label %544 unwind label %292

544:                                              ; preds = %536
  store float 0.000000e+00, ptr %543, align 4, !tbaa !12
  br label %564

545:                                              ; preds = %532
  %546 = getelementptr inbounds i8, ptr %1, i64 64
  %547 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %546, i64 noundef 2) #5
  %548 = load float, ptr %547, align 4, !tbaa !12
  %549 = getelementptr inbounds i8, ptr %0, i64 264
  %550 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 2) #5
  %551 = load i32, ptr %550, align 4, !tbaa !10
  %552 = mul nsw i32 %551, 3
  %553 = add nsw i32 %552, 2
  %554 = sext i32 %553 to i64
  %555 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6MatrixixEm(ptr noundef nonnull align 8 dereferenceable(49) %549, i64 noundef %554)
          to label %556 unwind label %292

556:                                              ; preds = %545
  %557 = fpext float %8 to double
  %558 = fmul double %557, -5.000000e-01
  %559 = fpext float %81 to double
  %560 = fmul double %558, %559
  %561 = fpext float %548 to double
  %562 = fmul double %560, %561
  %563 = fptrunc double %562 to float
  store float %563, ptr %555, align 4, !tbaa !12
  br label %564

564:                                              ; preds = %556, %544
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #5
  ret void

565:                                              ; preds = %292, %92
  %.pn = phi { ptr, i32 } [ %293, %292 ], [ %93, %92 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #5
  resume { ptr, i32 } %.pn
}

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"_ZTS19TimeDependentEntity", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !8, i64 16}
!7 = !{!"float", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!11, !11, i64 0}
!11 = !{!"int", !8, i64 0}
!12 = !{!7, !7, i64 0}
!13 = !{!14, !11, i64 0}
!14 = !{!"_ZTS7Element", !11, i64 0, !15, i64 8, !20, i64 32, !20, i64 88, !20, i64 144, !20, i64 200, !7, i64 256, !7, i64 260, !20, i64 264, !20, i64 320, !20, i64 376, !20, i64 432, !20, i64 488, !20, i64 544, !20, i64 600, !20, i64 656, !20, i64 712, !20, i64 768, !20, i64 824, !20, i64 880, !20, i64 936, !20, i64 992, !20, i64 1048}
!15 = !{!"_ZTSSt6vectorIiSaIiEE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!19 = !{!"any pointer", !8, i64 0}
!20 = !{!"_ZTS10CPU_Matrix", !21, i64 0}
!21 = !{!"_ZTS6Matrix", !22, i64 8, !23, i64 16, !23, i64 24, !23, i64 32, !19, i64 40, !24, i64 48}
!22 = !{!"_ZTS11DEVICE_NAME", !8, i64 0}
!23 = !{!"long", !8, i64 0}
!24 = !{!"bool", !8, i64 0}
!25 = !{!26, !26, i64 0}
!26 = !{!"_ZTSN10Constraint4TypeE", !8, i64 0}


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