; LLVM IR from romerojosh/zefr :: src/tets.ll (ZN4Tets9setup_PMGEii)

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

%class.mdvector = type <{ i32, [4 x i8], i64, i64, %"struct.std::array", %"struct.std::array", %"class.std::vector", ptr, i8, [7 x i8] }>
%"struct.std::array" = type { [6 x i32] }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::initializer_list" = type { ptr, i64 }
%"class.std::allocator.2" = type { i8 }
%class.Elements = type { ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [4 x i8], %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %"class.std::vector.0", %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector.5, %class.mdvector.5, %class.mdvector.5, %class.mdvector.5, %class.mdvector.5, %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, i32, %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.7", %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, i64, i64, i64, i64, i64, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdview, %class.mdview, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, i32, [4 x i8], %class.mdvector, %class.mdvector, i32, ptr, %"class.std::vector.7", %class.mdvector.5, %class.mdvector, %class.mdvector, %class.mdvector }
%class.mdview = type { %class.mdvector.12, %class.mdvector.5, i32, [4 x i8] }
%class.mdvector.12 = type <{ i32, [4 x i8], i64, i64, %"struct.std::array", %"struct.std::array", %"class.std::vector.13", ptr, i8, [7 x i8] }>
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<double *, std::allocator<double *>>::_Vector_impl" }
%"struct.std::_Vector_base<double *, std::allocator<double *>>::_Vector_impl" = type { %"struct.std::_Vector_base<double *, std::allocator<double *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double *, std::allocator<double *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.7" = type { %"struct.std::_Vector_base.8" }
%"struct.std::_Vector_base.8" = 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.mdvector.5 = type <{ i32, [4 x i8], i64, i64, %"struct.std::array", %"struct.std::array", %"class.std::vector.0", ptr, i8, [7 x i8] }>

declare i32 @__gxx_personality_v0(...)

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

; 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 @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8mdvectorIdE6assignESt6vectorIjSaIjEEdb(ptr noundef nonnull align 8 dereferenceable(105), ptr noundef, double noundef, i1 noundef zeroext) #2 align 2

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

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

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

declare void @_Z10WS_Tet_ptsj(ptr dead_on_unwind writable sret(%class.mdvector) align 8, i32 noundef) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105), i32 noundef, i32 noundef) #1 align 2

declare noundef double @_Z9Dubiner3Djdddj(i32 noundef, double noundef, double noundef, double noundef, i32 noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8mdvectorIdEC2ESt6vectorIjSaIjEEdb(ptr noundef nonnull align 8 dereferenceable(105), ptr noundef, double noundef, i1 noundef zeroext) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105)) #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4Tets9setup_PMGEii(ptr noundef nonnull align 8 dereferenceable(14304) %0, i32 noundef %1, i32 noundef %2) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca %"class.std::vector.0", align 8
  %10 = alloca %"class.std::initializer_list", align 8
  %11 = alloca [2 x i32], align 4
  %12 = alloca %"class.std::allocator.2", align 1
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca %class.mdvector, align 8
  %16 = alloca %class.mdvector, align 8
  %17 = alloca %"class.std::vector.0", align 8
  %18 = alloca %"class.std::initializer_list", align 8
  %19 = alloca [2 x i32], align 4
  %20 = alloca %"class.std::allocator.2", align 1
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca %class.mdvector, align 8
  %25 = alloca %"class.std::vector.0", align 8
  %26 = alloca %"class.std::initializer_list", align 8
  %27 = alloca [2 x i32], align 4
  %28 = alloca %"class.std::allocator.2", align 1
  %29 = alloca i32, align 4
  %30 = alloca %class.mdvector, align 8
  %31 = alloca %"class.std::vector.0", align 8
  %32 = alloca %"class.std::initializer_list", align 8
  %33 = alloca [2 x i32], align 4
  %34 = alloca %"class.std::allocator.2", align 1
  %35 = alloca %"class.std::vector.0", align 8
  %36 = alloca %"class.std::initializer_list", align 8
  %37 = alloca [2 x i32], align 4
  %38 = alloca %"class.std::allocator.2", align 1
  %39 = alloca %class.mdvector, align 8
  %40 = alloca %class.mdvector, align 8
  %41 = alloca %"class.std::vector.0", align 8
  %42 = alloca %"class.std::initializer_list", align 8
  %43 = alloca [2 x i32], align 4
  %44 = alloca %"class.std::allocator.2", align 1
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca %class.mdvector, align 8
  %48 = alloca %"class.std::vector.0", align 8
  %49 = alloca %"class.std::initializer_list", align 8
  %50 = alloca [2 x i32], align 4
  %51 = alloca %"class.std::allocator.2", align 1
  %52 = alloca i32, align 4
  %53 = alloca %class.mdvector, align 8
  %54 = alloca %"class.std::vector.0", align 8
  %55 = alloca %"class.std::initializer_list", align 8
  %56 = alloca [2 x i32], align 4
  %57 = alloca %"class.std::allocator.2", align 1
  store ptr %0, ptr %4, align 8, !tbaa !5
  store i32 %1, ptr %5, align 4, !tbaa !9
  store i32 %2, ptr %6, align 4, !tbaa !9
  %58 = load ptr, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #4
  %59 = load i32, ptr %5, align 4, !tbaa !9
  %60 = add nsw i32 %59, 1
  %61 = load i32, ptr %5, align 4, !tbaa !9
  %62 = add nsw i32 %61, 2
  %63 = mul nsw i32 %60, %62
  %64 = load i32, ptr %5, align 4, !tbaa !9
  %65 = add nsw i32 %64, 3
  %66 = mul nsw i32 %63, %65
  %67 = sdiv i32 %66, 6
  store i32 %67, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #4
  %68 = load i32, ptr %6, align 4, !tbaa !9
  %69 = add nsw i32 %68, 1
  %70 = load i32, ptr %6, align 4, !tbaa !9
  %71 = add nsw i32 %70, 2
  %72 = mul nsw i32 %69, %71
  %73 = load i32, ptr %6, align 4, !tbaa !9
  %74 = add nsw i32 %73, 3
  %75 = mul nsw i32 %72, %74
  %76 = sdiv i32 %75, 6
  store i32 %76, ptr %8, align 4, !tbaa !9
  %77 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 5
  %78 = load i32, ptr %77, align 8, !tbaa !11
  %79 = load i32, ptr %5, align 4, !tbaa !9
  %80 = icmp ne i32 %78, %79
  br i1 %80, label %81, label %275

81:                                               ; preds = %3
  %82 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 122
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #4
  %83 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %83, ptr %11, align 4, !tbaa !9
  %84 = getelementptr inbounds i32, ptr %11, i64 1
  %85 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %86 = load i32, ptr %85, align 4, !tbaa !37
  store i32 %86, ptr %84, align 4, !tbaa !9
  %87 = getelementptr inbounds %"class.std::initializer_list", ptr %10, i32 0, i32 0
  store ptr %11, ptr %87, align 8, !tbaa !38
  %88 = getelementptr inbounds %"class.std::initializer_list", ptr %10, i32 0, i32 1
  store i64 2, ptr %88, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #4
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #4
  %89 = getelementptr inbounds { ptr, i64 }, ptr %10, i32 0, i32 0
  %90 = load ptr, ptr %89, align 8
  %91 = getelementptr inbounds { ptr, i64 }, ptr %10, i32 0, i32 1
  %92 = load i64, ptr %91, align 8
  invoke void @_ZNSt6vectorIjSaIjEEC2ESt16initializer_listIjERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr %90, i64 %92, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %93 unwind label %112

93:                                               ; preds = %81
  invoke void @_ZN8mdvectorIdE6assignESt6vectorIjSaIjEEdb(ptr noundef nonnull align 8 dereferenceable(105) %82, ptr noundef %9, double noundef 0.000000e+00, i1 noundef zeroext false)
          to label %94 unwind label %116

94:                                               ; preds = %93
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #4
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 112, ptr %15) #4
  %95 = load i32, ptr %5, align 4, !tbaa !9
  call void @_Z10WS_Tet_ptsj(ptr dead_on_unwind writable sret(%class.mdvector) align 8 %15, i32 noundef %95)
  call void @llvm.lifetime.start.p0(i64 112, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #4
  %96 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %96, ptr %19, align 4, !tbaa !9
  %97 = getelementptr inbounds i32, ptr %19, i64 1
  %98 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %98, ptr %97, align 4, !tbaa !9
  %99 = getelementptr inbounds %"class.std::initializer_list", ptr %18, i32 0, i32 0
  store ptr %19, ptr %99, align 8, !tbaa !38
  %100 = getelementptr inbounds %"class.std::initializer_list", ptr %18, i32 0, i32 1
  store i64 2, ptr %100, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #4
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #4
  %101 = getelementptr inbounds { ptr, i64 }, ptr %18, i32 0, i32 0
  %102 = load ptr, ptr %101, align 8
  %103 = getelementptr inbounds { ptr, i64 }, ptr %18, i32 0, i32 1
  %104 = load i64, ptr %103, align 8
  invoke void @_ZNSt6vectorIjSaIjEEC2ESt16initializer_listIjERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr %102, i64 %104, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %105 unwind label %121

105:                                              ; preds = %94
  invoke void @_ZN8mdvectorIdEC2ESt6vectorIjSaIjEEdb(ptr noundef nonnull align 8 dereferenceable(105) %16, ptr noundef %17, double noundef 0.000000e+00, i1 noundef zeroext false)
          to label %106 unwind label %125

106:                                              ; preds = %105
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #4
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #4
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %107

107:                                              ; preds = %165, %106
  %108 = load i32, ptr %21, align 4, !tbaa !9
  %109 = load i32, ptr %7, align 4, !tbaa !9
  %110 = icmp ult i32 %108, %109
  br i1 %110, label %130, label %111

111:                                              ; preds = %107
  store i32 2, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  br label %168

112:                                              ; preds = %81
  %113 = landingpad { ptr, i32 }
          cleanup
  %114 = extractvalue { ptr, i32 } %113, 0
  store ptr %114, ptr %13, align 8
  %115 = extractvalue { ptr, i32 } %113, 1
  store i32 %115, ptr %14, align 4
  br label %120

116:                                              ; preds = %93
  %117 = landingpad { ptr, i32 }
          cleanup
  %118 = extractvalue { ptr, i32 } %117, 0
  store ptr %118, ptr %13, align 8
  %119 = extractvalue { ptr, i32 } %117, 1
  store i32 %119, ptr %14, align 4
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #4
  br label %120

120:                                              ; preds = %116, %112
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  br label %473

121:                                              ; preds = %94
  %122 = landingpad { ptr, i32 }
          cleanup
  %123 = extractvalue { ptr, i32 } %122, 0
  store ptr %123, ptr %13, align 8
  %124 = extractvalue { ptr, i32 } %122, 1
  store i32 %124, ptr %14, align 4
  br label %129

125:                                              ; preds = %105
  %126 = landingpad { ptr, i32 }
          cleanup
  %127 = extractvalue { ptr, i32 } %126, 0
  store ptr %127, ptr %13, align 8
  %128 = extractvalue { ptr, i32 } %126, 1
  store i32 %128, ptr %14, align 4
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #4
  br label %129

129:                                              ; preds = %125, %121
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  br label %274

130:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #4
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %131

131:                                              ; preds = %157, %130
  %132 = load i32, ptr %23, align 4, !tbaa !9
  %133 = load i32, ptr %7, align 4, !tbaa !9
  %134 = icmp ult i32 %132, %133
  br i1 %134, label %136, label %135

135:                                              ; preds = %131
  store i32 5, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  br label %164

136:                                              ; preds = %131
  %137 = load i32, ptr %5, align 4, !tbaa !9
  %138 = load i32, ptr %21, align 4, !tbaa !9
  %139 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %15, i32 noundef %138, i32 noundef 0)
          to label %140 unwind label %160

140:                                              ; preds = %136
  %141 = load double, ptr %139, align 8, !tbaa !41
  %142 = load i32, ptr %21, align 4, !tbaa !9
  %143 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %15, i32 noundef %142, i32 noundef 1)
          to label %144 unwind label %160

144:                                              ; preds = %140
  %145 = load double, ptr %143, align 8, !tbaa !41
  %146 = load i32, ptr %21, align 4, !tbaa !9
  %147 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %15, i32 noundef %146, i32 noundef 2)
          to label %148 unwind label %160

148:                                              ; preds = %144
  %149 = load double, ptr %147, align 8, !tbaa !41
  %150 = load i32, ptr %23, align 4, !tbaa !9
  %151 = invoke noundef double @_Z9Dubiner3Djdddj(i32 noundef %137, double noundef %141, double noundef %145, double noundef %149, i32 noundef %150)
          to label %152 unwind label %160

152:                                              ; preds = %148
  %153 = load i32, ptr %21, align 4, !tbaa !9
  %154 = load i32, ptr %23, align 4, !tbaa !9
  %155 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %16, i32 noundef %153, i32 noundef %154)
          to label %156 unwind label %160

156:                                              ; preds = %152
  store double %151, ptr %155, align 8, !tbaa !41
  br label %157

157:                                              ; preds = %156
  %158 = load i32, ptr %23, align 4, !tbaa !9
  %159 = add i32 %158, 1
  store i32 %159, ptr %23, align 4, !tbaa !9
  br label %131, !llvm.loop !43

160:                                              ; preds = %152, %148, %144, %140, %136
  %161 = landingpad { ptr, i32 }
          cleanup
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %13, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  br label %273

164:                                              ; preds = %135
  br label %165

165:                                              ; preds = %164
  %166 = load i32, ptr %21, align 4, !tbaa !9
  %167 = add i32 %166, 1
  store i32 %167, ptr %21, align 4, !tbaa !9
  br label %107, !llvm.loop !45

168:                                              ; preds = %111
  call void @llvm.lifetime.start.p0(i64 112, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #4
  %169 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %169, ptr %27, align 4, !tbaa !9
  %170 = getelementptr inbounds i32, ptr %27, i64 1
  %171 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %172 = load i32, ptr %171, align 4, !tbaa !37
  store i32 %172, ptr %170, align 4, !tbaa !9
  %173 = getelementptr inbounds %"class.std::initializer_list", ptr %26, i32 0, i32 0
  store ptr %27, ptr %173, align 8, !tbaa !38
  %174 = getelementptr inbounds %"class.std::initializer_list", ptr %26, i32 0, i32 1
  store i64 2, ptr %174, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #4
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #4
  %175 = getelementptr inbounds { ptr, i64 }, ptr %26, i32 0, i32 0
  %176 = load ptr, ptr %175, align 8
  %177 = getelementptr inbounds { ptr, i64 }, ptr %26, i32 0, i32 1
  %178 = load i64, ptr %177, align 8
  invoke void @_ZNSt6vectorIjSaIjEEC2ESt16initializer_listIjERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr %176, i64 %178, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %179 unwind label %187

179:                                              ; preds = %168
  invoke void @_ZN8mdvectorIdEC2ESt6vectorIjSaIjEEdb(ptr noundef nonnull align 8 dereferenceable(105) %24, ptr noundef %25, double noundef 0.000000e+00, i1 noundef zeroext false)
          to label %180 unwind label %191

180:                                              ; preds = %179
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #4
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #4
  store i32 0, ptr %29, align 4, !tbaa !9
  br label %181

181:                                              ; preds = %201, %180
  %182 = load i32, ptr %29, align 4, !tbaa !9
  %183 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %184 = load i32, ptr %183, align 4, !tbaa !37
  %185 = icmp ult i32 %182, %184
  br i1 %185, label %196, label %186

186:                                              ; preds = %181
  store i32 8, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  br label %208

187:                                              ; preds = %168
  %188 = landingpad { ptr, i32 }
          cleanup
  %189 = extractvalue { ptr, i32 } %188, 0
  store ptr %189, ptr %13, align 8
  %190 = extractvalue { ptr, i32 } %188, 1
  store i32 %190, ptr %14, align 4
  br label %195

191:                                              ; preds = %179
  %192 = landingpad { ptr, i32 }
          cleanup
  %193 = extractvalue { ptr, i32 } %192, 0
  store ptr %193, ptr %13, align 8
  %194 = extractvalue { ptr, i32 } %192, 1
  store i32 %194, ptr %14, align 4
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #4
  br label %195

195:                                              ; preds = %191, %187
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  br label %272

196:                                              ; preds = %181
  %197 = load i32, ptr %29, align 4, !tbaa !9
  %198 = load i32, ptr %29, align 4, !tbaa !9
  %199 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %24, i32 noundef %197, i32 noundef %198)
          to label %200 unwind label %204

200:                                              ; preds = %196
  store double 1.000000e+00, ptr %199, align 8, !tbaa !41
  br label %201

201:                                              ; preds = %200
  %202 = load i32, ptr %29, align 4, !tbaa !9
  %203 = add i32 %202, 1
  store i32 %203, ptr %29, align 4, !tbaa !9
  br label %181, !llvm.loop !46

204:                                              ; preds = %196
  %205 = landingpad { ptr, i32 }
          cleanup
  %206 = extractvalue { ptr, i32 } %205, 0
  store ptr %206, ptr %13, align 8
  %207 = extractvalue { ptr, i32 } %205, 1
  store i32 %207, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  br label %271

208:                                              ; preds = %186
  call void @llvm.lifetime.start.p0(i64 112, ptr %30) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #4
  %209 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %209, ptr %33, align 4, !tbaa !9
  %210 = getelementptr inbounds i32, ptr %33, i64 1
  %211 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %212 = load i32, ptr %211, align 4, !tbaa !37
  store i32 %212, ptr %210, align 4, !tbaa !9
  %213 = getelementptr inbounds %"class.std::initializer_list", ptr %32, i32 0, i32 0
  store ptr %33, ptr %213, align 8, !tbaa !38
  %214 = getelementptr inbounds %"class.std::initializer_list", ptr %32, i32 0, i32 1
  store i64 2, ptr %214, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #4
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #4
  %215 = getelementptr inbounds { ptr, i64 }, ptr %32, i32 0, i32 0
  %216 = load ptr, ptr %215, align 8
  %217 = getelementptr inbounds { ptr, i64 }, ptr %32, i32 0, i32 1
  %218 = load i64, ptr %217, align 8
  invoke void @_ZNSt6vectorIjSaIjEEC2ESt16initializer_listIjERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr %216, i64 %218, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %219 unwind label %257

219:                                              ; preds = %208
  invoke void @_ZN8mdvectorIdEC2ESt6vectorIjSaIjEEdb(ptr noundef nonnull align 8 dereferenceable(105) %30, ptr noundef %31, double noundef 0.000000e+00, i1 noundef zeroext false)
          to label %220 unwind label %261

220:                                              ; preds = %219
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #4
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  %221 = load i32, ptr %7, align 4, !tbaa !9
  %222 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %223 = load i32, ptr %222, align 4, !tbaa !37
  %224 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %225 = load i32, ptr %224, align 4, !tbaa !37
  %226 = invoke noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %24)
          to label %227 unwind label %266

227:                                              ; preds = %220
  %228 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %229 = load i32, ptr %228, align 4, !tbaa !37
  %230 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 68
  %231 = invoke noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %230)
          to label %232 unwind label %266

232:                                              ; preds = %227
  %233 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %234 = load i32, ptr %233, align 4, !tbaa !37
  %235 = invoke noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %30)
          to label %236 unwind label %266

236:                                              ; preds = %232
  %237 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %238 = load i32, ptr %237, align 4, !tbaa !37
  invoke void @cblas_dgemm(i32 noundef 101, i32 noundef 111, i32 noundef 111, i32 noundef %221, i32 noundef %223, i32 noundef %225, double noundef 1.000000e+00, ptr noundef %226, i32 noundef %229, ptr noundef %231, i32 noundef %234, double noundef 0.000000e+00, ptr noundef %235, i32 noundef %238)
          to label %239 unwind label %266

239:                                              ; preds = %236
  %240 = load i32, ptr %7, align 4, !tbaa !9
  %241 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %242 = load i32, ptr %241, align 4, !tbaa !37
  %243 = load i32, ptr %7, align 4, !tbaa !9
  %244 = invoke noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %16)
          to label %245 unwind label %266

245:                                              ; preds = %239
  %246 = load i32, ptr %7, align 4, !tbaa !9
  %247 = invoke noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %30)
          to label %248 unwind label %266

248:                                              ; preds = %245
  %249 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %250 = load i32, ptr %249, align 4, !tbaa !37
  %251 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 122
  %252 = invoke noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %251)
          to label %253 unwind label %266

253:                                              ; preds = %248
  %254 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %255 = load i32, ptr %254, align 4, !tbaa !37
  invoke void @cblas_dgemm(i32 noundef 101, i32 noundef 111, i32 noundef 111, i32 noundef %240, i32 noundef %242, i32 noundef %243, double noundef 1.000000e+00, ptr noundef %244, i32 noundef %246, ptr noundef %247, i32 noundef %250, double noundef 0.000000e+00, ptr noundef %252, i32 noundef %255)
          to label %256 unwind label %266

256:                                              ; preds = %253
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %30) #4
  call void @llvm.lifetime.end.p0(i64 112, ptr %30) #4
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %24) #4
  call void @llvm.lifetime.end.p0(i64 112, ptr %24) #4
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %16) #4
  call void @llvm.lifetime.end.p0(i64 112, ptr %16) #4
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %15) #4
  call void @llvm.lifetime.end.p0(i64 112, ptr %15) #4
  br label %275

257:                                              ; preds = %208
  %258 = landingpad { ptr, i32 }
          cleanup
  %259 = extractvalue { ptr, i32 } %258, 0
  store ptr %259, ptr %13, align 8
  %260 = extractvalue { ptr, i32 } %258, 1
  store i32 %260, ptr %14, align 4
  br label %265

261:                                              ; preds = %219
  %262 = landingpad { ptr, i32 }
          cleanup
  %263 = extractvalue { ptr, i32 } %262, 0
  store ptr %263, ptr %13, align 8
  %264 = extractvalue { ptr, i32 } %262, 1
  store i32 %264, ptr %14, align 4
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #4
  br label %265

265:                                              ; preds = %261, %257
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  br label %270

266:                                              ; preds = %253, %248, %245, %239, %236, %232, %227, %220
  %267 = landingpad { ptr, i32 }
          cleanup
  %268 = extractvalue { ptr, i32 } %267, 0
  store ptr %268, ptr %13, align 8
  %269 = extractvalue { ptr, i32 } %267, 1
  store i32 %269, ptr %14, align 4
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %30) #4
  br label %270

270:                                              ; preds = %266, %265
  call void @llvm.lifetime.end.p0(i64 112, ptr %30) #4
  br label %271

271:                                              ; preds = %270, %204
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %24) #4
  br label %272

272:                                              ; preds = %271, %195
  call void @llvm.lifetime.end.p0(i64 112, ptr %24) #4
  br label %273

273:                                              ; preds = %272, %160
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %16) #4
  br label %274

274:                                              ; preds = %273, %129
  call void @llvm.lifetime.end.p0(i64 112, ptr %16) #4
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %15) #4
  call void @llvm.lifetime.end.p0(i64 112, ptr %15) #4
  br label %473

275:                                              ; preds = %256, %3
  %276 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 5
  %277 = load i32, ptr %276, align 8, !tbaa !11
  %278 = icmp ne i32 %277, 0
  br i1 %278, label %279, label %472

279:                                              ; preds = %275
  %280 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 123
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #4
  %281 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %281, ptr %37, align 4, !tbaa !9
  %282 = getelementptr inbounds i32, ptr %37, i64 1
  %283 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %284 = load i32, ptr %283, align 4, !tbaa !37
  store i32 %284, ptr %282, align 4, !tbaa !9
  %285 = getelementptr inbounds %"class.std::initializer_list", ptr %36, i32 0, i32 0
  store ptr %37, ptr %285, align 8, !tbaa !38
  %286 = getelementptr inbounds %"class.std::initializer_list", ptr %36, i32 0, i32 1
  store i64 2, ptr %286, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #4
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #4
  %287 = getelementptr inbounds { ptr, i64 }, ptr %36, i32 0, i32 0
  %288 = load ptr, ptr %287, align 8
  %289 = getelementptr inbounds { ptr, i64 }, ptr %36, i32 0, i32 1
  %290 = load i64, ptr %289, align 8
  invoke void @_ZNSt6vectorIjSaIjEEC2ESt16initializer_listIjERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %35, ptr %288, i64 %290, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %291 unwind label %310

291:                                              ; preds = %279
  invoke void @_ZN8mdvectorIdE6assignESt6vectorIjSaIjEEdb(ptr noundef nonnull align 8 dereferenceable(105) %280, ptr noundef %35, double noundef 0.000000e+00, i1 noundef zeroext false)
          to label %292 unwind label %314

292:                                              ; preds = %291
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #4
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.start.p0(i64 112, ptr %39) #4
  %293 = load i32, ptr %6, align 4, !tbaa !9
  call void @_Z10WS_Tet_ptsj(ptr dead_on_unwind writable sret(%class.mdvector) align 8 %39, i32 noundef %293)
  call void @llvm.lifetime.start.p0(i64 112, ptr %40) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #4
  %294 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %294, ptr %43, align 4, !tbaa !9
  %295 = getelementptr inbounds i32, ptr %43, i64 1
  %296 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %296, ptr %295, align 4, !tbaa !9
  %297 = getelementptr inbounds %"class.std::initializer_list", ptr %42, i32 0, i32 0
  store ptr %43, ptr %297, align 8, !tbaa !38
  %298 = getelementptr inbounds %"class.std::initializer_list", ptr %42, i32 0, i32 1
  store i64 2, ptr %298, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #4
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #4
  %299 = getelementptr inbounds { ptr, i64 }, ptr %42, i32 0, i32 0
  %300 = load ptr, ptr %299, align 8
  %301 = getelementptr inbounds { ptr, i64 }, ptr %42, i32 0, i32 1
  %302 = load i64, ptr %301, align 8
  invoke void @_ZNSt6vectorIjSaIjEEC2ESt16initializer_listIjERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr %300, i64 %302, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %303 unwind label %319

303:                                              ; preds = %292
  invoke void @_ZN8mdvectorIdEC2ESt6vectorIjSaIjEEdb(ptr noundef nonnull align 8 dereferenceable(105) %40, ptr noundef %41, double noundef 0.000000e+00, i1 noundef zeroext false)
          to label %304 unwind label %323

304:                                              ; preds = %303
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #4
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #4
  store i32 0, ptr %45, align 4, !tbaa !9
  br label %305

305:                                              ; preds = %363, %304
  %306 = load i32, ptr %45, align 4, !tbaa !9
  %307 = load i32, ptr %8, align 4, !tbaa !9
  %308 = icmp ult i32 %306, %307
  br i1 %308, label %328, label %309

309:                                              ; preds = %305
  store i32 11, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  br label %366

310:                                              ; preds = %279
  %311 = landingpad { ptr, i32 }
          cleanup
  %312 = extractvalue { ptr, i32 } %311, 0
  store ptr %312, ptr %13, align 8
  %313 = extractvalue { ptr, i32 } %311, 1
  store i32 %313, ptr %14, align 4
  br label %318

314:                                              ; preds = %291
  %315 = landingpad { ptr, i32 }
          cleanup
  %316 = extractvalue { ptr, i32 } %315, 0
  store ptr %316, ptr %13, align 8
  %317 = extractvalue { ptr, i32 } %315, 1
  store i32 %317, ptr %14, align 4
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #4
  br label %318

318:                                              ; preds = %314, %310
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  br label %473

319:                                              ; preds = %292
  %320 = landingpad { ptr, i32 }
          cleanup
  %321 = extractvalue { ptr, i32 } %320, 0
  store ptr %321, ptr %13, align 8
  %322 = extractvalue { ptr, i32 } %320, 1
  store i32 %322, ptr %14, align 4
  br label %327

323:                                              ; preds = %303
  %324 = landingpad { ptr, i32 }
          cleanup
  %325 = extractvalue { ptr, i32 } %324, 0
  store ptr %325, ptr %13, align 8
  %326 = extractvalue { ptr, i32 } %324, 1
  store i32 %326, ptr %14, align 4
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #4
  br label %327

327:                                              ; preds = %323, %319
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  br label %471

328:                                              ; preds = %305
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #4
  store i32 0, ptr %46, align 4, !tbaa !9
  br label %329

329:                                              ; preds = %355, %328
  %330 = load i32, ptr %46, align 4, !tbaa !9
  %331 = load i32, ptr %8, align 4, !tbaa !9
  %332 = icmp ult i32 %330, %331
  br i1 %332, label %334, label %333

333:                                              ; preds = %329
  store i32 14, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  br label %362

334:                                              ; preds = %329
  %335 = load i32, ptr %6, align 4, !tbaa !9
  %336 = load i32, ptr %45, align 4, !tbaa !9
  %337 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %39, i32 noundef %336, i32 noundef 0)
          to label %338 unwind label %358

338:                                              ; preds = %334
  %339 = load double, ptr %337, align 8, !tbaa !41
  %340 = load i32, ptr %45, align 4, !tbaa !9
  %341 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %39, i32 noundef %340, i32 noundef 1)
          to label %342 unwind label %358

342:                                              ; preds = %338
  %343 = load double, ptr %341, align 8, !tbaa !41
  %344 = load i32, ptr %45, align 4, !tbaa !9
  %345 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %39, i32 noundef %344, i32 noundef 2)
          to label %346 unwind label %358

346:                                              ; preds = %342
  %347 = load double, ptr %345, align 8, !tbaa !41
  %348 = load i32, ptr %46, align 4, !tbaa !9
  %349 = invoke noundef double @_Z9Dubiner3Djdddj(i32 noundef %335, double noundef %339, double noundef %343, double noundef %347, i32 noundef %348)
          to label %350 unwind label %358

350:                                              ; preds = %346
  %351 = load i32, ptr %45, align 4, !tbaa !9
  %352 = load i32, ptr %46, align 4, !tbaa !9
  %353 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %40, i32 noundef %351, i32 noundef %352)
          to label %354 unwind label %358

354:                                              ; preds = %350
  store double %349, ptr %353, align 8, !tbaa !41
  br label %355

355:                                              ; preds = %354
  %356 = load i32, ptr %46, align 4, !tbaa !9
  %357 = add i32 %356, 1
  store i32 %357, ptr %46, align 4, !tbaa !9
  br label %329, !llvm.loop !47

358:                                              ; preds = %350, %346, %342, %338, %334
  %359 = landingpad { ptr, i32 }
          cleanup
  %360 = extractvalue { ptr, i32 } %359, 0
  store ptr %360, ptr %13, align 8
  %361 = extractvalue { ptr, i32 } %359, 1
  store i32 %361, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  br label %470

362:                                              ; preds = %333
  br label %363

363:                                              ; preds = %362
  %364 = load i32, ptr %45, align 4, !tbaa !9
  %365 = add i32 %364, 1
  store i32 %365, ptr %45, align 4, !tbaa !9
  br label %305, !llvm.loop !48

366:                                              ; preds = %309
  call void @llvm.lifetime.start.p0(i64 112, ptr %47) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #4
  %367 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %367, ptr %50, align 4, !tbaa !9
  %368 = getelementptr inbounds i32, ptr %50, i64 1
  %369 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %370 = load i32, ptr %369, align 4, !tbaa !37
  store i32 %370, ptr %368, align 4, !tbaa !9
  %371 = getelementptr inbounds %"class.std::initializer_list", ptr %49, i32 0, i32 0
  store ptr %50, ptr %371, align 8, !tbaa !38
  %372 = getelementptr inbounds %"class.std::initializer_list", ptr %49, i32 0, i32 1
  store i64 2, ptr %372, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #4
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #4
  %373 = getelementptr inbounds { ptr, i64 }, ptr %49, i32 0, i32 0
  %374 = load ptr, ptr %373, align 8
  %375 = getelementptr inbounds { ptr, i64 }, ptr %49, i32 0, i32 1
  %376 = load i64, ptr %375, align 8
  invoke void @_ZNSt6vectorIjSaIjEEC2ESt16initializer_listIjERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %48, ptr %374, i64 %376, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %377 unwind label %384

377:                                              ; preds = %366
  invoke void @_ZN8mdvectorIdEC2ESt6vectorIjSaIjEEdb(ptr noundef nonnull align 8 dereferenceable(105) %47, ptr noundef %48, double noundef 0.000000e+00, i1 noundef zeroext false)
          to label %378 unwind label %388

378:                                              ; preds = %377
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #4
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #4
  store i32 0, ptr %52, align 4, !tbaa !9
  br label %379

379:                                              ; preds = %398, %378
  %380 = load i32, ptr %52, align 4, !tbaa !9
  %381 = load i32, ptr %8, align 4, !tbaa !9
  %382 = icmp ult i32 %380, %381
  br i1 %382, label %393, label %383

383:                                              ; preds = %379
  store i32 17, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  br label %405

384:                                              ; preds = %366
  %385 = landingpad { ptr, i32 }
          cleanup
  %386 = extractvalue { ptr, i32 } %385, 0
  store ptr %386, ptr %13, align 8
  %387 = extractvalue { ptr, i32 } %385, 1
  store i32 %387, ptr %14, align 4
  br label %392

388:                                              ; preds = %377
  %389 = landingpad { ptr, i32 }
          cleanup
  %390 = extractvalue { ptr, i32 } %389, 0
  store ptr %390, ptr %13, align 8
  %391 = extractvalue { ptr, i32 } %389, 1
  store i32 %391, ptr %14, align 4
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #4
  br label %392

392:                                              ; preds = %388, %384
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  br label %469

393:                                              ; preds = %379
  %394 = load i32, ptr %52, align 4, !tbaa !9
  %395 = load i32, ptr %52, align 4, !tbaa !9
  %396 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %47, i32 noundef %394, i32 noundef %395)
          to label %397 unwind label %401

397:                                              ; preds = %393
  store double 1.000000e+00, ptr %396, align 8, !tbaa !41
  br label %398

398:                                              ; preds = %397
  %399 = load i32, ptr %52, align 4, !tbaa !9
  %400 = add i32 %399, 1
  store i32 %400, ptr %52, align 4, !tbaa !9
  br label %379, !llvm.loop !49

401:                                              ; preds = %393
  %402 = landingpad { ptr, i32 }
          cleanup
  %403 = extractvalue { ptr, i32 } %402, 0
  store ptr %403, ptr %13, align 8
  %404 = extractvalue { ptr, i32 } %402, 1
  store i32 %404, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  br label %468

405:                                              ; preds = %383
  call void @llvm.lifetime.start.p0(i64 112, ptr %53) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #4
  %406 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %406, ptr %56, align 4, !tbaa !9
  %407 = getelementptr inbounds i32, ptr %56, i64 1
  %408 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %409 = load i32, ptr %408, align 4, !tbaa !37
  store i32 %409, ptr %407, align 4, !tbaa !9
  %410 = getelementptr inbounds %"class.std::initializer_list", ptr %55, i32 0, i32 0
  store ptr %56, ptr %410, align 8, !tbaa !38
  %411 = getelementptr inbounds %"class.std::initializer_list", ptr %55, i32 0, i32 1
  store i64 2, ptr %411, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #4
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #4
  %412 = getelementptr inbounds { ptr, i64 }, ptr %55, i32 0, i32 0
  %413 = load ptr, ptr %412, align 8
  %414 = getelementptr inbounds { ptr, i64 }, ptr %55, i32 0, i32 1
  %415 = load i64, ptr %414, align 8
  invoke void @_ZNSt6vectorIjSaIjEEC2ESt16initializer_listIjERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %54, ptr %413, i64 %415, ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %416 unwind label %454

416:                                              ; preds = %405
  invoke void @_ZN8mdvectorIdEC2ESt6vectorIjSaIjEEdb(ptr noundef nonnull align 8 dereferenceable(105) %53, ptr noundef %54, double noundef 0.000000e+00, i1 noundef zeroext false)
          to label %417 unwind label %458

417:                                              ; preds = %416
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #4
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  %418 = load i32, ptr %8, align 4, !tbaa !9
  %419 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %420 = load i32, ptr %419, align 4, !tbaa !37
  %421 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %422 = load i32, ptr %421, align 4, !tbaa !37
  %423 = invoke noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %47)
          to label %424 unwind label %463

424:                                              ; preds = %417
  %425 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %426 = load i32, ptr %425, align 4, !tbaa !37
  %427 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 68
  %428 = invoke noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %427)
          to label %429 unwind label %463

429:                                              ; preds = %424
  %430 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %431 = load i32, ptr %430, align 4, !tbaa !37
  %432 = invoke noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %53)
          to label %433 unwind label %463

433:                                              ; preds = %429
  %434 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %435 = load i32, ptr %434, align 4, !tbaa !37
  invoke void @cblas_dgemm(i32 noundef 101, i32 noundef 111, i32 noundef 111, i32 noundef %418, i32 noundef %420, i32 noundef %422, double noundef 1.000000e+00, ptr noundef %423, i32 noundef %426, ptr noundef %428, i32 noundef %431, double noundef 0.000000e+00, ptr noundef %432, i32 noundef %435)
          to label %436 unwind label %463

436:                                              ; preds = %433
  %437 = load i32, ptr %8, align 4, !tbaa !9
  %438 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %439 = load i32, ptr %438, align 4, !tbaa !37
  %440 = load i32, ptr %8, align 4, !tbaa !9
  %441 = invoke noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %40)
          to label %442 unwind label %463

442:                                              ; preds = %436
  %443 = load i32, ptr %8, align 4, !tbaa !9
  %444 = invoke noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %53)
          to label %445 unwind label %463

445:                                              ; preds = %442
  %446 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %447 = load i32, ptr %446, align 4, !tbaa !37
  %448 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 123
  %449 = invoke noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %448)
          to label %450 unwind label %463

450:                                              ; preds = %445
  %451 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %452 = load i32, ptr %451, align 4, !tbaa !37
  invoke void @cblas_dgemm(i32 noundef 101, i32 noundef 111, i32 noundef 111, i32 noundef %437, i32 noundef %439, i32 noundef %440, double noundef 1.000000e+00, ptr noundef %441, i32 noundef %443, ptr noundef %444, i32 noundef %447, double noundef 0.000000e+00, ptr noundef %449, i32 noundef %452)
          to label %453 unwind label %463

453:                                              ; preds = %450
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %53) #4
  call void @llvm.lifetime.end.p0(i64 112, ptr %53) #4
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %47) #4
  call void @llvm.lifetime.end.p0(i64 112, ptr %47) #4
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %40) #4
  call void @llvm.lifetime.end.p0(i64 112, ptr %40) #4
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %39) #4
  call void @llvm.lifetime.end.p0(i64 112, ptr %39) #4
  br label %472

454:                                              ; preds = %405
  %455 = landingpad { ptr, i32 }
          cleanup
  %456 = extractvalue { ptr, i32 } %455, 0
  store ptr %456, ptr %13, align 8
  %457 = extractvalue { ptr, i32 } %455, 1
  store i32 %457, ptr %14, align 4
  br label %462

458:                                              ; preds = %416
  %459 = landingpad { ptr, i32 }
          cleanup
  %460 = extractvalue { ptr, i32 } %459, 0
  store ptr %460, ptr %13, align 8
  %461 = extractvalue { ptr, i32 } %459, 1
  store i32 %461, ptr %14, align 4
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #4
  br label %462

462:                                              ; preds = %458, %454
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  br label %467

463:                                              ; preds = %450, %445, %442, %436, %433, %429, %424, %417
  %464 = landingpad { ptr, i32 }
          cleanup
  %465 = extractvalue { ptr, i32 } %464, 0
  store ptr %465, ptr %13, align 8
  %466 = extractvalue { ptr, i32 } %464, 1
  store i32 %466, ptr %14, align 4
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %53) #4
  br label %467

467:                                              ; preds = %463, %462
  call void @llvm.lifetime.end.p0(i64 112, ptr %53) #4
  br label %468

468:                                              ; preds = %467, %401
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %47) #4
  br label %469

469:                                              ; preds = %468, %392
  call void @llvm.lifetime.end.p0(i64 112, ptr %47) #4
  br label %470

470:                                              ; preds = %469, %358
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %40) #4
  br label %471

471:                                              ; preds = %470, %327
  call void @llvm.lifetime.end.p0(i64 112, ptr %40) #4
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %39) #4
  call void @llvm.lifetime.end.p0(i64 112, ptr %39) #4
  br label %473

472:                                              ; preds = %453, %275
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #4
  ret void

473:                                              ; preds = %471, %318, %274, %120
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #4
  br label %474

474:                                              ; preds = %473
  %475 = load ptr, ptr %13, align 8
  %476 = load i32, ptr %14, align 4
  %477 = insertvalue { ptr, i32 } poison, ptr %475, 0
  %478 = insertvalue { ptr, i32 } %477, i32 %476, 1
  resume { ptr, i32 } %478
}

declare void @cblas_dgemm(i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, double noundef, ptr noundef, i32 noundef) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIjED2Ev(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 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 32}
!12 = !{!"_ZTS8Elements", !6, i64 8, !6, i64 16, !13, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !14, i64 104, !14, i64 216, !14, i64 328, !14, i64 440, !22, i64 552, !14, i64 576, !14, i64 688, !14, i64 800, !14, i64 912, !14, i64 1024, !26, i64 1136, !26, i64 1248, !26, i64 1360, !26, i64 1472, !26, i64 1584, !17, i64 1696, !17, i64 1720, !17, i64 1744, !17, i64 1768, !14, i64 1792, !14, i64 1904, !14, i64 2016, !14, i64 2128, !14, i64 2240, !14, i64 2352, !14, i64 2464, !14, i64 2576, !14, i64 2688, !14, i64 2800, !14, i64 2912, !14, i64 3024, !14, i64 3136, !14, i64 3248, !14, i64 3360, !14, i64 3472, !14, i64 3584, !14, i64 3696, !14, i64 3808, !14, i64 3920, !14, i64 4032, !14, i64 4144, !14, i64 4256, !14, i64 4368, !14, i64 4480, !14, i64 4592, !14, i64 4704, !14, i64 4816, !14, i64 4928, !14, i64 5040, !14, i64 5152, !14, i64 5264, !14, i64 5376, !14, i64 5488, !14, i64 5600, !14, i64 5712, !14, i64 5824, !14, i64 5936, !10, i64 6048, !17, i64 6056, !17, i64 6080, !17, i64 6104, !17, i64 6128, !17, i64 6152, !17, i64 6176, !17, i64 6200, !27, i64 6224, !14, i64 6248, !14, i64 6360, !14, i64 6472, !14, i64 6584, !14, i64 6696, !14, i64 6808, !14, i64 6920, !14, i64 7032, !14, i64 7144, !15, i64 7256, !15, i64 7264, !15, i64 7272, !15, i64 7280, !15, i64 7288, !14, i64 7296, !14, i64 7408, !14, i64 7520, !14, i64 7632, !14, i64 7744, !14, i64 7856, !14, i64 7968, !14, i64 8080, !14, i64 8192, !14, i64 8304, !14, i64 8416, !14, i64 8528, !14, i64 8640, !14, i64 8752, !14, i64 8864, !14, i64 8976, !14, i64 9088, !14, i64 9200, !14, i64 9312, !14, i64 9424, !14, i64 9536, !14, i64 9648, !14, i64 9760, !14, i64 9872, !14, i64 9984, !14, i64 10096, !14, i64 10208, !14, i64 10320, !14, i64 10432, !14, i64 10544, !14, i64 10656, !14, i64 10768, !14, i64 10880, !14, i64 10992, !14, i64 11104, !14, i64 11216, !14, i64 11328, !14, i64 11440, !14, i64 11552, !14, i64 11664, !14, i64 11776, !14, i64 11888, !14, i64 12000, !31, i64 12112, !31, i64 12344, !14, i64 12576, !14, i64 12688, !14, i64 12800, !14, i64 12912, !14, i64 13024, !14, i64 13136, !10, i64 13248, !14, i64 13256, !14, i64 13368, !10, i64 13480, !6, i64 13488, !27, i64 13496, !26, i64 13520, !14, i64 13632, !14, i64 13744, !14, i64 13856}
!13 = !{!"_ZTS8ELE_TYPE", !7, i64 0}
!14 = !{!"_ZTS8mdvectorIdE", !10, i64 0, !15, i64 8, !15, i64 16, !16, i64 24, !16, i64 48, !17, i64 72, !6, i64 96, !21, i64 104}
!15 = !{!"long", !7, i64 0}
!16 = !{!"_ZTSSt5arrayIjLm6EE", !7, i64 0}
!17 = !{!"_ZTSSt6vectorIdSaIdEE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = !{!"bool", !7, i64 0}
!22 = !{!"_ZTSSt6vectorIjSaIjEE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!26 = !{!"_ZTS8mdvectorIjE", !10, i64 0, !15, i64 8, !15, i64 16, !16, i64 24, !16, i64 48, !22, i64 72, !6, i64 96, !21, i64 104}
!27 = !{!"_ZTSSt6vectorIiSaIiEE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!31 = !{!"_ZTS6mdviewIdE", !32, i64 0, !26, i64 112, !10, i64 224}
!32 = !{!"_ZTS8mdvectorIPdE", !10, i64 0, !15, i64 8, !15, i64 16, !16, i64 24, !16, i64 48, !33, i64 72, !6, i64 96, !21, i64 104}
!33 = !{!"_ZTSSt6vectorIPdSaIS0_EE", !34, i64 0}
!34 = !{!"_ZTSSt12_Vector_baseIPdSaIS0_EE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIPdSaIS0_EE12_Vector_implE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIPdSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!37 = !{!12, !10, i64 60}
!38 = !{!39, !6, i64 0}
!39 = !{!"_ZTSSt16initializer_listIjE", !6, i64 0, !15, i64 8}
!40 = !{!39, !15, i64 8}
!41 = !{!42, !42, i64 0}
!42 = !{!"double", !7, i64 0}
!43 = distinct !{!43, !44}
!44 = !{!"llvm.loop.mustprogress"}
!45 = distinct !{!45, !44}
!46 = distinct !{!46, !44}
!47 = distinct !{!47, !44}
!48 = distinct !{!48, !44}
!49 = distinct !{!49, !44}


; 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.mdvector = type <{ i32, [4 x i8], i64, i64, %"struct.std::array", %"struct.std::array", %"class.std::vector", ptr, i8, [7 x i8] }>
%"struct.std::array" = type { [6 x i32] }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.2" = type { i8 }

declare i32 @__gxx_personality_v0(...)

; 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 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 @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8mdvectorIdE6assignESt6vectorIjSaIjEEdb(ptr noundef nonnull align 8 dereferenceable(105), ptr noundef, double noundef, i1 noundef zeroext) local_unnamed_addr #2 align 2

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

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

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

declare void @_Z10WS_Tet_ptsj(ptr dead_on_unwind writable sret(%class.mdvector) align 8, i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105), i32 noundef, i32 noundef) local_unnamed_addr #1 align 2

declare noundef double @_Z9Dubiner3Djdddj(i32 noundef, double noundef, double noundef, double noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8mdvectorIdEC2ESt6vectorIjSaIjEEdb(ptr noundef nonnull align 8 dereferenceable(105), ptr noundef, double noundef, i1 noundef zeroext) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4Tets9setup_PMGEii(ptr noundef nonnull align 8 dereferenceable(14304) %0, i32 noundef %1, i32 noundef %2) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.std::vector.0", align 8
  %5 = alloca [2 x i32], align 4
  %6 = alloca %"class.std::allocator.2", align 1
  %7 = alloca %class.mdvector, align 8
  %8 = alloca %class.mdvector, align 8
  %9 = alloca %"class.std::vector.0", align 8
  %10 = alloca [2 x i32], align 4
  %11 = alloca %"class.std::allocator.2", align 1
  %12 = alloca %class.mdvector, align 8
  %13 = alloca %"class.std::vector.0", align 8
  %14 = alloca [2 x i32], align 4
  %15 = alloca %"class.std::allocator.2", align 1
  %16 = alloca %class.mdvector, align 8
  %17 = alloca %"class.std::vector.0", align 8
  %18 = alloca [2 x i32], align 4
  %19 = alloca %"class.std::allocator.2", align 1
  %20 = alloca %"class.std::vector.0", align 8
  %21 = alloca [2 x i32], align 4
  %22 = alloca %"class.std::allocator.2", align 1
  %23 = alloca %class.mdvector, align 8
  %24 = alloca %class.mdvector, align 8
  %25 = alloca %"class.std::vector.0", align 8
  %26 = alloca [2 x i32], align 4
  %27 = alloca %"class.std::allocator.2", align 1
  %28 = alloca %class.mdvector, align 8
  %29 = alloca %"class.std::vector.0", align 8
  %30 = alloca [2 x i32], align 4
  %31 = alloca %"class.std::allocator.2", align 1
  %32 = alloca %class.mdvector, align 8
  %33 = alloca %"class.std::vector.0", align 8
  %34 = alloca [2 x i32], align 4
  %35 = alloca %"class.std::allocator.2", align 1
  %36 = add nsw i32 %1, 1
  %37 = add nsw i32 %1, 2
  %38 = mul nsw i32 %36, %37
  %39 = add nsw i32 %1, 3
  %40 = mul nsw i32 %38, %39
  %41 = sdiv i32 %40, 6
  %42 = add nsw i32 %2, 1
  %43 = add nsw i32 %2, 2
  %44 = mul nsw i32 %42, %43
  %45 = add nsw i32 %2, 3
  %46 = mul nsw i32 %44, %45
  %47 = sdiv i32 %46, 6
  %48 = getelementptr inbounds i8, ptr %0, i64 32
  %49 = load i32, ptr %48, align 8, !tbaa !5
  %.not = icmp eq i32 %49, %1
  br i1 %.not, label %129, label %50

50:                                               ; preds = %3
  %51 = getelementptr inbounds i8, ptr %0, i64 9424
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #5
  store i32 %41, ptr %5, align 4, !tbaa !35
  %52 = getelementptr inbounds i8, ptr %5, i64 4
  %53 = getelementptr inbounds i8, ptr %0, i64 60
  %54 = load i32, ptr %53, align 4, !tbaa !36
  store i32 %54, ptr %52, align 4, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #5
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #5
  invoke void @_ZNSt6vectorIjSaIjEEC2ESt16initializer_listIjERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr nonnull %5, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %55 unwind label %62

55:                                               ; preds = %50
  invoke void @_ZN8mdvectorIdE6assignESt6vectorIjSaIjEEdb(ptr noundef nonnull align 8 dereferenceable(105) %51, ptr noundef nonnull %4, double noundef 0.000000e+00, i1 noundef zeroext false)
          to label %56 unwind label %64

56:                                               ; preds = %55
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #5
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #5
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %7) #5
  call void @_Z10WS_Tet_ptsj(ptr dead_on_unwind nonnull writable sret(%class.mdvector) align 8 %7, i32 noundef %1)
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %8) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #5
  store i32 %41, ptr %10, align 4, !tbaa !35
  %57 = getelementptr inbounds i8, ptr %10, i64 4
  store i32 %41, ptr %57, align 4, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #5
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #5
  invoke void @_ZNSt6vectorIjSaIjEEC2ESt16initializer_listIjERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr nonnull %10, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %58 unwind label %67

58:                                               ; preds = %56
  invoke void @_ZN8mdvectorIdEC2ESt6vectorIjSaIjEEdb(ptr noundef nonnull align 8 dereferenceable(105) %8, ptr noundef nonnull %9, double noundef 0.000000e+00, i1 noundef zeroext false)
          to label %59 unwind label %69

59:                                               ; preds = %58
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #5
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #5
  %.off = add i32 %40, 5
  %.not148 = icmp ult i32 %.off, 11
  br i1 %.not148, label %._crit_edge, label %.preheader135.preheader

.preheader135.preheader:                          ; preds = %59
  %umax = call i32 @llvm.umax.i32(i32 %41, i32 1)
  br label %.preheader135

.preheader135:                                    ; preds = %.preheader135.preheader, %72
  %.096137 = phi i32 [ %73, %72 ], [ 0, %.preheader135.preheader ]
  br label %74

._crit_edge:                                      ; preds = %72, %59
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #5
  store i32 %41, ptr %14, align 4, !tbaa !35
  %60 = getelementptr inbounds i8, ptr %14, i64 4
  %61 = load i32, ptr %53, align 4, !tbaa !36
  store i32 %61, ptr %60, align 4, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #5
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #5
  invoke void @_ZNSt6vectorIjSaIjEEC2ESt16initializer_listIjERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr nonnull %14, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %87 unwind label %91

62:                                               ; preds = %50
  %63 = landingpad { ptr, i32 }
          cleanup
  br label %66

64:                                               ; preds = %55
  %65 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #5
  br label %66

66:                                               ; preds = %64, %62
  %.pn = phi { ptr, i32 } [ %65, %64 ], [ %63, %62 ]
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #5
  br label %209

67:                                               ; preds = %56
  %68 = landingpad { ptr, i32 }
          cleanup
  br label %71

69:                                               ; preds = %58
  %70 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #5
  br label %71

71:                                               ; preds = %69, %67
  %.pn107 = phi { ptr, i32 } [ %70, %69 ], [ %68, %67 ]
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #5
  br label %128

72:                                               ; preds = %82
  %73 = add nuw i32 %.096137, 1
  %exitcond155.not = icmp eq i32 %73, %umax
  br i1 %exitcond155.not, label %._crit_edge, label %.preheader135, !llvm.loop !37

74:                                               ; preds = %.preheader135, %82
  %.099136 = phi i32 [ 0, %.preheader135 ], [ %84, %82 ]
  %75 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %7, i32 noundef %.096137, i32 noundef 0)
  %76 = load double, ptr %75, align 8, !tbaa !39
  %77 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %7, i32 noundef %.096137, i32 noundef 1)
  %78 = load double, ptr %77, align 8, !tbaa !39
  %79 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %7, i32 noundef %.096137, i32 noundef 2)
  %80 = load double, ptr %79, align 8, !tbaa !39
  %81 = invoke noundef double @_Z9Dubiner3Djdddj(i32 noundef %1, double noundef %76, double noundef %78, double noundef %80, i32 noundef %.099136)
          to label %82 unwind label %85

82:                                               ; preds = %74
  %83 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %8, i32 noundef %.096137, i32 noundef %.099136)
  store double %81, ptr %83, align 8, !tbaa !39
  %84 = add nuw i32 %.099136, 1
  %exitcond.not = icmp eq i32 %84, %umax
  br i1 %exitcond.not, label %72, label %74, !llvm.loop !41

85:                                               ; preds = %74
  %86 = landingpad { ptr, i32 }
          cleanup
  br label %127

87:                                               ; preds = %._crit_edge
  invoke void @_ZN8mdvectorIdEC2ESt6vectorIjSaIjEEdb(ptr noundef nonnull align 8 dereferenceable(105) %12, ptr noundef nonnull %13, double noundef 0.000000e+00, i1 noundef zeroext false)
          to label %88 unwind label %93

88:                                               ; preds = %87
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #5
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #5
  %89 = load i32, ptr %53, align 4, !tbaa !36
  %.not149 = icmp eq i32 %89, 0
  br i1 %.not149, label %._crit_edge140, label %.lr.ph

._crit_edge140:                                   ; preds = %.lr.ph, %88
  %.lcssa = phi i32 [ 0, %88 ], [ %98, %.lr.ph ]
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #5
  store i32 %41, ptr %18, align 4, !tbaa !35
  %90 = getelementptr inbounds i8, ptr %18, i64 4
  store i32 %.lcssa, ptr %90, align 4, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #5
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #5
  invoke void @_ZNSt6vectorIjSaIjEEC2ESt16initializer_listIjERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr nonnull %18, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %100 unwind label %118

91:                                               ; preds = %._crit_edge
  %92 = landingpad { ptr, i32 }
          cleanup
  br label %95

93:                                               ; preds = %87
  %94 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #5
  br label %95

95:                                               ; preds = %93, %91
  %.pn109 = phi { ptr, i32 } [ %94, %93 ], [ %92, %91 ]
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #5
  br label %126

.lr.ph:                                           ; preds = %88, %.lr.ph
  %.0100138 = phi i32 [ %97, %.lr.ph ], [ 0, %88 ]
  %96 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %12, i32 noundef %.0100138, i32 noundef %.0100138)
  store double 1.000000e+00, ptr %96, align 8, !tbaa !39
  %97 = add nuw i32 %.0100138, 1
  %98 = load i32, ptr %53, align 4, !tbaa !36
  %99 = icmp ult i32 %97, %98
  br i1 %99, label %.lr.ph, label %._crit_edge140, !llvm.loop !42

100:                                              ; preds = %._crit_edge140
  invoke void @_ZN8mdvectorIdEC2ESt6vectorIjSaIjEEdb(ptr noundef nonnull align 8 dereferenceable(105) %16, ptr noundef nonnull %17, double noundef 0.000000e+00, i1 noundef zeroext false)
          to label %101 unwind label %120

101:                                              ; preds = %100
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #5
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #5
  %102 = load i32, ptr %53, align 4, !tbaa !36
  %103 = call noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %12)
  %104 = load i32, ptr %53, align 4, !tbaa !36
  %105 = getelementptr inbounds i8, ptr %0, i64 4704
  %106 = call noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %105)
  %107 = load i32, ptr %53, align 4, !tbaa !36
  %108 = call noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %16)
  %109 = load i32, ptr %53, align 4, !tbaa !36
  invoke void @cblas_dgemm(i32 noundef 101, i32 noundef 111, i32 noundef 111, i32 noundef %41, i32 noundef %102, i32 noundef %102, double noundef 1.000000e+00, ptr noundef %103, i32 noundef %104, ptr noundef %106, i32 noundef %107, double noundef 0.000000e+00, ptr noundef %108, i32 noundef %109)
          to label %110 unwind label %123

110:                                              ; preds = %101
  %111 = load i32, ptr %53, align 4, !tbaa !36
  %112 = call noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %8)
  %113 = call noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %16)
  %114 = load i32, ptr %53, align 4, !tbaa !36
  %115 = call noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %51)
  %116 = load i32, ptr %53, align 4, !tbaa !36
  invoke void @cblas_dgemm(i32 noundef 101, i32 noundef 111, i32 noundef 111, i32 noundef %41, i32 noundef %111, i32 noundef %41, double noundef 1.000000e+00, ptr noundef %112, i32 noundef %41, ptr noundef %113, i32 noundef %114, double noundef 0.000000e+00, ptr noundef %115, i32 noundef %116)
          to label %117 unwind label %123

117:                                              ; preds = %110
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %16) #5
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %16) #5
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %12) #5
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %12) #5
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %8) #5
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %8) #5
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %7) #5
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %7) #5
  %.pr = load i32, ptr %48, align 8, !tbaa !5
  br label %129

118:                                              ; preds = %._crit_edge140
  %119 = landingpad { ptr, i32 }
          cleanup
  br label %122

120:                                              ; preds = %100
  %121 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #5
  br label %122

122:                                              ; preds = %120, %118
  %.pn111 = phi { ptr, i32 } [ %121, %120 ], [ %119, %118 ]
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #5
  br label %125

123:                                              ; preds = %110, %101
  %124 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %16) #5
  br label %125

125:                                              ; preds = %123, %122
  %.pn113 = phi { ptr, i32 } [ %124, %123 ], [ %.pn111, %122 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %16) #5
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %12) #5
  br label %126

126:                                              ; preds = %125, %95
  %.pn113.pn = phi { ptr, i32 } [ %.pn113, %125 ], [ %.pn109, %95 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %12) #5
  br label %127

127:                                              ; preds = %126, %85
  %.pn131 = phi { ptr, i32 } [ %86, %85 ], [ %.pn113.pn, %126 ]
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %8) #5
  br label %128

128:                                              ; preds = %127, %71
  %.pn131.pn = phi { ptr, i32 } [ %.pn131, %127 ], [ %.pn107, %71 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %8) #5
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %7) #5
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %7) #5
  br label %209

129:                                              ; preds = %117, %3
  %130 = phi i32 [ %.pr, %117 ], [ %1, %3 ]
  %.not116 = icmp eq i32 %130, 0
  br i1 %.not116, label %208, label %131

131:                                              ; preds = %129
  %132 = getelementptr inbounds i8, ptr %0, i64 9536
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #5
  store i32 %47, ptr %21, align 4, !tbaa !35
  %133 = getelementptr inbounds i8, ptr %21, i64 4
  %134 = getelementptr inbounds i8, ptr %0, i64 60
  %135 = load i32, ptr %134, align 4, !tbaa !36
  store i32 %135, ptr %133, align 4, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #5
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #5
  invoke void @_ZNSt6vectorIjSaIjEEC2ESt16initializer_listIjERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr nonnull %21, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %136 unwind label %143

136:                                              ; preds = %131
  invoke void @_ZN8mdvectorIdE6assignESt6vectorIjSaIjEEdb(ptr noundef nonnull align 8 dereferenceable(105) %132, ptr noundef nonnull %20, double noundef 0.000000e+00, i1 noundef zeroext false)
          to label %137 unwind label %145

137:                                              ; preds = %136
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #5
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %23) #5
  call void @_Z10WS_Tet_ptsj(ptr dead_on_unwind nonnull writable sret(%class.mdvector) align 8 %23, i32 noundef %2)
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #5
  store i32 %47, ptr %26, align 4, !tbaa !35
  %138 = getelementptr inbounds i8, ptr %26, i64 4
  store i32 %47, ptr %138, align 4, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #5
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #5
  invoke void @_ZNSt6vectorIjSaIjEEC2ESt16initializer_listIjERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr nonnull %26, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %139 unwind label %148

139:                                              ; preds = %137
  invoke void @_ZN8mdvectorIdEC2ESt6vectorIjSaIjEEdb(ptr noundef nonnull align 8 dereferenceable(105) %24, ptr noundef nonnull %25, double noundef 0.000000e+00, i1 noundef zeroext false)
          to label %140 unwind label %150

140:                                              ; preds = %139
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #5
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  %.off151 = add i32 %46, 5
  %.not150 = icmp ult i32 %.off151, 11
  br i1 %.not150, label %._crit_edge143, label %.preheader.preheader

.preheader.preheader:                             ; preds = %140
  %umax156 = call i32 @llvm.umax.i32(i32 %47, i32 1)
  br label %.preheader

.preheader:                                       ; preds = %.preheader.preheader, %153
  %.098142 = phi i32 [ %154, %153 ], [ 0, %.preheader.preheader ]
  br label %155

._crit_edge143:                                   ; preds = %153, %140
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %28) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #5
  store i32 %47, ptr %30, align 4, !tbaa !35
  %141 = getelementptr inbounds i8, ptr %30, i64 4
  %142 = load i32, ptr %134, align 4, !tbaa !36
  store i32 %142, ptr %141, align 4, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #5
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #5
  invoke void @_ZNSt6vectorIjSaIjEEC2ESt16initializer_listIjERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr nonnull %30, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %168 unwind label %172

143:                                              ; preds = %131
  %144 = landingpad { ptr, i32 }
          cleanup
  br label %147

145:                                              ; preds = %136
  %146 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #5
  br label %147

147:                                              ; preds = %145, %143
  %.pn117 = phi { ptr, i32 } [ %146, %145 ], [ %144, %143 ]
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  br label %209

148:                                              ; preds = %137
  %149 = landingpad { ptr, i32 }
          cleanup
  br label %152

150:                                              ; preds = %139
  %151 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #5
  br label %152

152:                                              ; preds = %150, %148
  %.pn119 = phi { ptr, i32 } [ %151, %150 ], [ %149, %148 ]
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  br label %207

153:                                              ; preds = %163
  %154 = add nuw i32 %.098142, 1
  %exitcond158.not = icmp eq i32 %154, %umax156
  br i1 %exitcond158.not, label %._crit_edge143, label %.preheader, !llvm.loop !43

155:                                              ; preds = %.preheader, %163
  %.097141 = phi i32 [ 0, %.preheader ], [ %165, %163 ]
  %156 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %23, i32 noundef %.098142, i32 noundef 0)
  %157 = load double, ptr %156, align 8, !tbaa !39
  %158 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %23, i32 noundef %.098142, i32 noundef 1)
  %159 = load double, ptr %158, align 8, !tbaa !39
  %160 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %23, i32 noundef %.098142, i32 noundef 2)
  %161 = load double, ptr %160, align 8, !tbaa !39
  %162 = invoke noundef double @_Z9Dubiner3Djdddj(i32 noundef %2, double noundef %157, double noundef %159, double noundef %161, i32 noundef %.097141)
          to label %163 unwind label %166

163:                                              ; preds = %155
  %164 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %24, i32 noundef %.098142, i32 noundef %.097141)
  store double %162, ptr %164, align 8, !tbaa !39
  %165 = add nuw i32 %.097141, 1
  %exitcond157.not = icmp eq i32 %165, %umax156
  br i1 %exitcond157.not, label %153, label %155, !llvm.loop !44

166:                                              ; preds = %155
  %167 = landingpad { ptr, i32 }
          cleanup
  br label %206

168:                                              ; preds = %._crit_edge143
  invoke void @_ZN8mdvectorIdEC2ESt6vectorIjSaIjEEdb(ptr noundef nonnull align 8 dereferenceable(105) %28, ptr noundef nonnull %29, double noundef 0.000000e+00, i1 noundef zeroext false)
          to label %169 unwind label %174

169:                                              ; preds = %168
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #5
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #5
  br i1 %.not150, label %._crit_edge147, label %.lr.ph146.preheader

.lr.ph146.preheader:                              ; preds = %169
  %umax159 = call i32 @llvm.umax.i32(i32 %47, i32 1)
  br label %.lr.ph146

._crit_edge147:                                   ; preds = %.lr.ph146, %169
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #5
  store i32 %47, ptr %34, align 4, !tbaa !35
  %170 = getelementptr inbounds i8, ptr %34, i64 4
  %171 = load i32, ptr %134, align 4, !tbaa !36
  store i32 %171, ptr %170, align 4, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %35) #5
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  invoke void @_ZNSt6vectorIjSaIjEEC2ESt16initializer_listIjERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr nonnull %34, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %179 unwind label %197

172:                                              ; preds = %._crit_edge143
  %173 = landingpad { ptr, i32 }
          cleanup
  br label %176

174:                                              ; preds = %168
  %175 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #5
  br label %176

176:                                              ; preds = %174, %172
  %.pn121 = phi { ptr, i32 } [ %175, %174 ], [ %173, %172 ]
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #5
  br label %205

.lr.ph146:                                        ; preds = %.lr.ph146.preheader, %.lr.ph146
  %.095144 = phi i32 [ %178, %.lr.ph146 ], [ 0, %.lr.ph146.preheader ]
  %177 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %28, i32 noundef %.095144, i32 noundef %.095144)
  store double 1.000000e+00, ptr %177, align 8, !tbaa !39
  %178 = add nuw i32 %.095144, 1
  %exitcond160.not = icmp eq i32 %178, %umax159
  br i1 %exitcond160.not, label %._crit_edge147, label %.lr.ph146, !llvm.loop !45

179:                                              ; preds = %._crit_edge147
  invoke void @_ZN8mdvectorIdEC2ESt6vectorIjSaIjEEdb(ptr noundef nonnull align 8 dereferenceable(105) %32, ptr noundef nonnull %33, double noundef 0.000000e+00, i1 noundef zeroext false)
          to label %180 unwind label %199

180:                                              ; preds = %179
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #5
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #5
  %181 = load i32, ptr %134, align 4, !tbaa !36
  %182 = call noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %28)
  %183 = load i32, ptr %134, align 4, !tbaa !36
  %184 = getelementptr inbounds i8, ptr %0, i64 4704
  %185 = call noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %184)
  %186 = load i32, ptr %134, align 4, !tbaa !36
  %187 = call noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %32)
  %188 = load i32, ptr %134, align 4, !tbaa !36
  invoke void @cblas_dgemm(i32 noundef 101, i32 noundef 111, i32 noundef 111, i32 noundef %47, i32 noundef %181, i32 noundef %181, double noundef 1.000000e+00, ptr noundef %182, i32 noundef %183, ptr noundef %185, i32 noundef %186, double noundef 0.000000e+00, ptr noundef %187, i32 noundef %188)
          to label %189 unwind label %202

189:                                              ; preds = %180
  %190 = load i32, ptr %134, align 4, !tbaa !36
  %191 = call noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %24)
  %192 = call noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %32)
  %193 = load i32, ptr %134, align 4, !tbaa !36
  %194 = call noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %132)
  %195 = load i32, ptr %134, align 4, !tbaa !36
  invoke void @cblas_dgemm(i32 noundef 101, i32 noundef 111, i32 noundef 111, i32 noundef %47, i32 noundef %190, i32 noundef %47, double noundef 1.000000e+00, ptr noundef %191, i32 noundef %47, ptr noundef %192, i32 noundef %193, double noundef 0.000000e+00, ptr noundef %194, i32 noundef %195)
          to label %196 unwind label %202

196:                                              ; preds = %189
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %32) #5
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %32) #5
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %28) #5
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %28) #5
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %24) #5
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %24) #5
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %23) #5
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %23) #5
  br label %208

197:                                              ; preds = %._crit_edge147
  %198 = landingpad { ptr, i32 }
          cleanup
  br label %201

199:                                              ; preds = %179
  %200 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #5
  br label %201

201:                                              ; preds = %199, %197
  %.pn123 = phi { ptr, i32 } [ %200, %199 ], [ %198, %197 ]
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #5
  br label %204

202:                                              ; preds = %189, %180
  %203 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %32) #5
  br label %204

204:                                              ; preds = %202, %201
  %.pn125 = phi { ptr, i32 } [ %203, %202 ], [ %.pn123, %201 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %32) #5
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %28) #5
  br label %205

205:                                              ; preds = %204, %176
  %.pn125.pn = phi { ptr, i32 } [ %.pn125, %204 ], [ %.pn121, %176 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %28) #5
  br label %206

206:                                              ; preds = %205, %166
  %.pn128 = phi { ptr, i32 } [ %167, %166 ], [ %.pn125.pn, %205 ]
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %24) #5
  br label %207

207:                                              ; preds = %206, %152
  %.pn128.pn = phi { ptr, i32 } [ %.pn128, %206 ], [ %.pn119, %152 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %24) #5
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %23) #5
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %23) #5
  br label %209

208:                                              ; preds = %196, %129
  ret void

209:                                              ; preds = %207, %147, %128, %66
  %.pn131.pn.pn = phi { ptr, i32 } [ %.pn131.pn, %128 ], [ %.pn128.pn, %207 ], [ %.pn117, %147 ], [ %.pn, %66 ]
  resume { ptr, i32 } %.pn131.pn.pn
}

declare void @cblas_dgemm(i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, double noundef, ptr noundef, i32 noundef) local_unnamed_addr #3

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

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

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 = { 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, !11, i64 32}
!6 = !{!"_ZTS8Elements", !7, i64 8, !7, i64 16, !10, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44, !11, i64 48, !11, i64 52, !11, i64 56, !11, i64 60, !11, i64 64, !11, i64 68, !11, i64 72, !11, i64 76, !11, i64 80, !11, i64 84, !11, i64 88, !11, i64 92, !11, i64 96, !12, i64 104, !12, i64 216, !12, i64 328, !12, i64 440, !20, i64 552, !12, i64 576, !12, i64 688, !12, i64 800, !12, i64 912, !12, i64 1024, !24, i64 1136, !24, i64 1248, !24, i64 1360, !24, i64 1472, !24, i64 1584, !15, i64 1696, !15, i64 1720, !15, i64 1744, !15, i64 1768, !12, i64 1792, !12, i64 1904, !12, i64 2016, !12, i64 2128, !12, i64 2240, !12, i64 2352, !12, i64 2464, !12, i64 2576, !12, i64 2688, !12, i64 2800, !12, i64 2912, !12, i64 3024, !12, i64 3136, !12, i64 3248, !12, i64 3360, !12, i64 3472, !12, i64 3584, !12, i64 3696, !12, i64 3808, !12, i64 3920, !12, i64 4032, !12, i64 4144, !12, i64 4256, !12, i64 4368, !12, i64 4480, !12, i64 4592, !12, i64 4704, !12, i64 4816, !12, i64 4928, !12, i64 5040, !12, i64 5152, !12, i64 5264, !12, i64 5376, !12, i64 5488, !12, i64 5600, !12, i64 5712, !12, i64 5824, !12, i64 5936, !11, i64 6048, !15, i64 6056, !15, i64 6080, !15, i64 6104, !15, i64 6128, !15, i64 6152, !15, i64 6176, !15, i64 6200, !25, i64 6224, !12, i64 6248, !12, i64 6360, !12, i64 6472, !12, i64 6584, !12, i64 6696, !12, i64 6808, !12, i64 6920, !12, i64 7032, !12, i64 7144, !13, i64 7256, !13, i64 7264, !13, i64 7272, !13, i64 7280, !13, i64 7288, !12, i64 7296, !12, i64 7408, !12, i64 7520, !12, i64 7632, !12, i64 7744, !12, i64 7856, !12, i64 7968, !12, i64 8080, !12, i64 8192, !12, i64 8304, !12, i64 8416, !12, i64 8528, !12, i64 8640, !12, i64 8752, !12, i64 8864, !12, i64 8976, !12, i64 9088, !12, i64 9200, !12, i64 9312, !12, i64 9424, !12, i64 9536, !12, i64 9648, !12, i64 9760, !12, i64 9872, !12, i64 9984, !12, i64 10096, !12, i64 10208, !12, i64 10320, !12, i64 10432, !12, i64 10544, !12, i64 10656, !12, i64 10768, !12, i64 10880, !12, i64 10992, !12, i64 11104, !12, i64 11216, !12, i64 11328, !12, i64 11440, !12, i64 11552, !12, i64 11664, !12, i64 11776, !12, i64 11888, !12, i64 12000, !29, i64 12112, !29, i64 12344, !12, i64 12576, !12, i64 12688, !12, i64 12800, !12, i64 12912, !12, i64 13024, !12, i64 13136, !11, i64 13248, !12, i64 13256, !12, i64 13368, !11, i64 13480, !7, i64 13488, !25, i64 13496, !24, i64 13520, !12, i64 13632, !12, i64 13744, !12, i64 13856}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTS8ELE_TYPE", !8, i64 0}
!11 = !{!"int", !8, i64 0}
!12 = !{!"_ZTS8mdvectorIdE", !11, i64 0, !13, i64 8, !13, i64 16, !14, i64 24, !14, i64 48, !15, i64 72, !7, i64 96, !19, i64 104}
!13 = !{!"long", !8, i64 0}
!14 = !{!"_ZTSSt5arrayIjLm6EE", !8, i64 0}
!15 = !{!"_ZTSSt6vectorIdSaIdEE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!19 = !{!"bool", !8, i64 0}
!20 = !{!"_ZTSSt6vectorIjSaIjEE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!24 = !{!"_ZTS8mdvectorIjE", !11, i64 0, !13, i64 8, !13, i64 16, !14, i64 24, !14, i64 48, !20, i64 72, !7, i64 96, !19, i64 104}
!25 = !{!"_ZTSSt6vectorIiSaIiEE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!29 = !{!"_ZTS6mdviewIdE", !30, i64 0, !24, i64 112, !11, i64 224}
!30 = !{!"_ZTS8mdvectorIPdE", !11, i64 0, !13, i64 8, !13, i64 16, !14, i64 24, !14, i64 48, !31, i64 72, !7, i64 96, !19, i64 104}
!31 = !{!"_ZTSSt6vectorIPdSaIS0_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIPdSaIS0_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIPdSaIS0_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIPdSaIS0_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!35 = !{!11, !11, i64 0}
!36 = !{!6, !11, i64 60}
!37 = distinct !{!37, !38}
!38 = !{!"llvm.loop.mustprogress"}
!39 = !{!40, !40, i64 0}
!40 = !{!"double", !8, i64 0}
!41 = distinct !{!41, !38}
!42 = distinct !{!42, !38}
!43 = distinct !{!43, !38}
!44 = distinct !{!44, !38}
!45 = distinct !{!45, !38}


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