; LLVM IR from romerojosh/zefr :: src/tris.ll (ZN4Tris9setup_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 uwtable
declare dso_local void @_ZN8mdvectorIdE6assignESt6vectorIjSaIjEEdb(ptr noundef nonnull align 8 dereferenceable(105), ptr noundef, double noundef, i1 noundef zeroext) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 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 #1 align 2

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

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

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

; 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) #2 align 2

declare noundef double @_Z9Dubiner2Djddj(i32 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 #1 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4Tris9setup_PMGEii(ptr noundef nonnull align 8 dereferenceable(13968) %0, i32 noundef %1, i32 noundef %2) unnamed_addr #1 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 = sdiv i32 %63, 2
  store i32 %64, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #4
  %65 = load i32, ptr %6, align 4, !tbaa !9
  %66 = add nsw i32 %65, 1
  %67 = load i32, ptr %6, align 4, !tbaa !9
  %68 = add nsw i32 %67, 2
  %69 = mul nsw i32 %66, %68
  %70 = sdiv i32 %69, 2
  store i32 %70, ptr %8, align 4, !tbaa !9
  %71 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 5
  %72 = load i32, ptr %71, align 8, !tbaa !11
  %73 = load i32, ptr %5, align 4, !tbaa !9
  %74 = icmp ne i32 %72, %73
  br i1 %74, label %75, label %265

75:                                               ; preds = %3
  %76 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 122
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #4
  %77 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %77, ptr %11, align 4, !tbaa !9
  %78 = getelementptr inbounds i32, ptr %11, i64 1
  %79 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %80 = load i32, ptr %79, align 4, !tbaa !37
  store i32 %80, ptr %78, align 4, !tbaa !9
  %81 = getelementptr inbounds %"class.std::initializer_list", ptr %10, i32 0, i32 0
  store ptr %11, ptr %81, align 8, !tbaa !38
  %82 = getelementptr inbounds %"class.std::initializer_list", ptr %10, i32 0, i32 1
  store i64 2, ptr %82, 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
  %83 = getelementptr inbounds { ptr, i64 }, ptr %10, i32 0, i32 0
  %84 = load ptr, ptr %83, align 8
  %85 = getelementptr inbounds { ptr, i64 }, ptr %10, i32 0, i32 1
  %86 = load i64, ptr %85, align 8
  invoke void @_ZNSt6vectorIjSaIjEEC2ESt16initializer_listIjERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr %84, i64 %86, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %87 unwind label %106

87:                                               ; preds = %75
  invoke void @_ZN8mdvectorIdE6assignESt6vectorIjSaIjEEdb(ptr noundef nonnull align 8 dereferenceable(105) %76, ptr noundef %9, double noundef 0.000000e+00, i1 noundef zeroext false)
          to label %88 unwind label %110

88:                                               ; preds = %87
  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
  %89 = load i32, ptr %5, align 4, !tbaa !9
  call void @_Z10WS_Tri_ptsj(ptr dead_on_unwind writable sret(%class.mdvector) align 8 %15, i32 noundef %89)
  call void @llvm.lifetime.start.p0(i64 112, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #4
  %90 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %90, ptr %19, align 4, !tbaa !9
  %91 = getelementptr inbounds i32, ptr %19, i64 1
  %92 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %92, ptr %91, align 4, !tbaa !9
  %93 = getelementptr inbounds %"class.std::initializer_list", ptr %18, i32 0, i32 0
  store ptr %19, ptr %93, align 8, !tbaa !38
  %94 = getelementptr inbounds %"class.std::initializer_list", ptr %18, i32 0, i32 1
  store i64 2, ptr %94, 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
  %95 = getelementptr inbounds { ptr, i64 }, ptr %18, i32 0, i32 0
  %96 = load ptr, ptr %95, align 8
  %97 = getelementptr inbounds { ptr, i64 }, ptr %18, i32 0, i32 1
  %98 = load i64, ptr %97, align 8
  invoke void @_ZNSt6vectorIjSaIjEEC2ESt16initializer_listIjERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr %96, i64 %98, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %99 unwind label %115

99:                                               ; preds = %88
  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 %100 unwind label %119

100:                                              ; preds = %99
  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 %101

101:                                              ; preds = %155, %100
  %102 = load i32, ptr %21, align 4, !tbaa !9
  %103 = load i32, ptr %7, align 4, !tbaa !9
  %104 = icmp ult i32 %102, %103
  br i1 %104, label %124, label %105

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

106:                                              ; preds = %75
  %107 = landingpad { ptr, i32 }
          cleanup
  %108 = extractvalue { ptr, i32 } %107, 0
  store ptr %108, ptr %13, align 8
  %109 = extractvalue { ptr, i32 } %107, 1
  store i32 %109, ptr %14, align 4
  br label %114

110:                                              ; preds = %87
  %111 = landingpad { ptr, i32 }
          cleanup
  %112 = extractvalue { ptr, i32 } %111, 0
  store ptr %112, ptr %13, align 8
  %113 = extractvalue { ptr, i32 } %111, 1
  store i32 %113, ptr %14, align 4
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #4
  br label %114

114:                                              ; preds = %110, %106
  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 %459

115:                                              ; preds = %88
  %116 = landingpad { ptr, i32 }
          cleanup
  %117 = extractvalue { ptr, i32 } %116, 0
  store ptr %117, ptr %13, align 8
  %118 = extractvalue { ptr, i32 } %116, 1
  store i32 %118, ptr %14, align 4
  br label %123

119:                                              ; preds = %99
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %13, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %14, align 4
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #4
  br label %123

123:                                              ; preds = %119, %115
  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 %264

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

125:                                              ; preds = %147, %124
  %126 = load i32, ptr %23, align 4, !tbaa !9
  %127 = load i32, ptr %7, align 4, !tbaa !9
  %128 = icmp ult i32 %126, %127
  br i1 %128, label %130, label %129

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

130:                                              ; preds = %125
  %131 = load i32, ptr %5, align 4, !tbaa !9
  %132 = load i32, ptr %21, align 4, !tbaa !9
  %133 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %15, i32 noundef %132, i32 noundef 0)
          to label %134 unwind label %150

134:                                              ; preds = %130
  %135 = load double, ptr %133, align 8, !tbaa !41
  %136 = load i32, ptr %21, align 4, !tbaa !9
  %137 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %15, i32 noundef %136, i32 noundef 1)
          to label %138 unwind label %150

138:                                              ; preds = %134
  %139 = load double, ptr %137, align 8, !tbaa !41
  %140 = load i32, ptr %23, align 4, !tbaa !9
  %141 = invoke noundef double @_Z9Dubiner2Djddj(i32 noundef %131, double noundef %135, double noundef %139, i32 noundef %140)
          to label %142 unwind label %150

142:                                              ; preds = %138
  %143 = load i32, ptr %21, align 4, !tbaa !9
  %144 = load i32, ptr %23, align 4, !tbaa !9
  %145 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %16, i32 noundef %143, i32 noundef %144)
          to label %146 unwind label %150

146:                                              ; preds = %142
  store double %141, ptr %145, align 8, !tbaa !41
  br label %147

147:                                              ; preds = %146
  %148 = load i32, ptr %23, align 4, !tbaa !9
  %149 = add i32 %148, 1
  store i32 %149, ptr %23, align 4, !tbaa !9
  br label %125, !llvm.loop !43

150:                                              ; preds = %142, %138, %134, %130
  %151 = landingpad { ptr, i32 }
          cleanup
  %152 = extractvalue { ptr, i32 } %151, 0
  store ptr %152, ptr %13, align 8
  %153 = extractvalue { ptr, i32 } %151, 1
  store i32 %153, 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 %263

154:                                              ; preds = %129
  br label %155

155:                                              ; preds = %154
  %156 = load i32, ptr %21, align 4, !tbaa !9
  %157 = add i32 %156, 1
  store i32 %157, ptr %21, align 4, !tbaa !9
  br label %101, !llvm.loop !45

158:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 112, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #4
  %159 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %159, ptr %27, align 4, !tbaa !9
  %160 = getelementptr inbounds i32, ptr %27, i64 1
  %161 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %162 = load i32, ptr %161, align 4, !tbaa !37
  store i32 %162, ptr %160, align 4, !tbaa !9
  %163 = getelementptr inbounds %"class.std::initializer_list", ptr %26, i32 0, i32 0
  store ptr %27, ptr %163, align 8, !tbaa !38
  %164 = getelementptr inbounds %"class.std::initializer_list", ptr %26, i32 0, i32 1
  store i64 2, ptr %164, 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
  %165 = getelementptr inbounds { ptr, i64 }, ptr %26, i32 0, i32 0
  %166 = load ptr, ptr %165, align 8
  %167 = getelementptr inbounds { ptr, i64 }, ptr %26, i32 0, i32 1
  %168 = load i64, ptr %167, align 8
  invoke void @_ZNSt6vectorIjSaIjEEC2ESt16initializer_listIjERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr %166, i64 %168, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %169 unwind label %177

169:                                              ; preds = %158
  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 %170 unwind label %181

170:                                              ; preds = %169
  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 %171

171:                                              ; preds = %191, %170
  %172 = load i32, ptr %29, align 4, !tbaa !9
  %173 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %174 = load i32, ptr %173, align 4, !tbaa !37
  %175 = icmp ult i32 %172, %174
  br i1 %175, label %186, label %176

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

177:                                              ; preds = %158
  %178 = landingpad { ptr, i32 }
          cleanup
  %179 = extractvalue { ptr, i32 } %178, 0
  store ptr %179, ptr %13, align 8
  %180 = extractvalue { ptr, i32 } %178, 1
  store i32 %180, ptr %14, align 4
  br label %185

181:                                              ; preds = %169
  %182 = landingpad { ptr, i32 }
          cleanup
  %183 = extractvalue { ptr, i32 } %182, 0
  store ptr %183, ptr %13, align 8
  %184 = extractvalue { ptr, i32 } %182, 1
  store i32 %184, ptr %14, align 4
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #4
  br label %185

185:                                              ; preds = %181, %177
  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 %262

186:                                              ; preds = %171
  %187 = load i32, ptr %29, align 4, !tbaa !9
  %188 = load i32, ptr %29, align 4, !tbaa !9
  %189 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %24, i32 noundef %187, i32 noundef %188)
          to label %190 unwind label %194

190:                                              ; preds = %186
  store double 1.000000e+00, ptr %189, align 8, !tbaa !41
  br label %191

191:                                              ; preds = %190
  %192 = load i32, ptr %29, align 4, !tbaa !9
  %193 = add i32 %192, 1
  store i32 %193, ptr %29, align 4, !tbaa !9
  br label %171, !llvm.loop !46

194:                                              ; preds = %186
  %195 = landingpad { ptr, i32 }
          cleanup
  %196 = extractvalue { ptr, i32 } %195, 0
  store ptr %196, ptr %13, align 8
  %197 = extractvalue { ptr, i32 } %195, 1
  store i32 %197, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  br label %261

198:                                              ; preds = %176
  call void @llvm.lifetime.start.p0(i64 112, ptr %30) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #4
  %199 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %199, ptr %33, align 4, !tbaa !9
  %200 = getelementptr inbounds i32, ptr %33, i64 1
  %201 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %202 = load i32, ptr %201, align 4, !tbaa !37
  store i32 %202, ptr %200, align 4, !tbaa !9
  %203 = getelementptr inbounds %"class.std::initializer_list", ptr %32, i32 0, i32 0
  store ptr %33, ptr %203, align 8, !tbaa !38
  %204 = getelementptr inbounds %"class.std::initializer_list", ptr %32, i32 0, i32 1
  store i64 2, ptr %204, 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
  %205 = getelementptr inbounds { ptr, i64 }, ptr %32, i32 0, i32 0
  %206 = load ptr, ptr %205, align 8
  %207 = getelementptr inbounds { ptr, i64 }, ptr %32, i32 0, i32 1
  %208 = load i64, ptr %207, align 8
  invoke void @_ZNSt6vectorIjSaIjEEC2ESt16initializer_listIjERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr %206, i64 %208, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %209 unwind label %247

209:                                              ; preds = %198
  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 %210 unwind label %251

210:                                              ; preds = %209
  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
  %211 = load i32, ptr %7, align 4, !tbaa !9
  %212 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %213 = load i32, ptr %212, align 4, !tbaa !37
  %214 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %215 = load i32, ptr %214, align 4, !tbaa !37
  %216 = invoke noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %24)
          to label %217 unwind label %256

217:                                              ; preds = %210
  %218 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %219 = load i32, ptr %218, align 4, !tbaa !37
  %220 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 68
  %221 = invoke noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %220)
          to label %222 unwind label %256

222:                                              ; preds = %217
  %223 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %224 = load i32, ptr %223, align 4, !tbaa !37
  %225 = invoke noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %30)
          to label %226 unwind label %256

226:                                              ; preds = %222
  %227 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %228 = load i32, ptr %227, align 4, !tbaa !37
  invoke void @cblas_dgemm(i32 noundef 101, i32 noundef 111, i32 noundef 111, i32 noundef %211, i32 noundef %213, i32 noundef %215, double noundef 1.000000e+00, ptr noundef %216, i32 noundef %219, ptr noundef %221, i32 noundef %224, double noundef 0.000000e+00, ptr noundef %225, i32 noundef %228)
          to label %229 unwind label %256

229:                                              ; preds = %226
  %230 = load i32, ptr %7, align 4, !tbaa !9
  %231 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %232 = load i32, ptr %231, align 4, !tbaa !37
  %233 = load i32, ptr %7, align 4, !tbaa !9
  %234 = invoke noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %16)
          to label %235 unwind label %256

235:                                              ; preds = %229
  %236 = load i32, ptr %7, align 4, !tbaa !9
  %237 = invoke noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %30)
          to label %238 unwind label %256

238:                                              ; preds = %235
  %239 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %240 = load i32, ptr %239, align 4, !tbaa !37
  %241 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 122
  %242 = invoke noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %241)
          to label %243 unwind label %256

243:                                              ; preds = %238
  %244 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %245 = load i32, ptr %244, align 4, !tbaa !37
  invoke void @cblas_dgemm(i32 noundef 101, i32 noundef 111, i32 noundef 111, i32 noundef %230, i32 noundef %232, i32 noundef %233, double noundef 1.000000e+00, ptr noundef %234, i32 noundef %236, ptr noundef %237, i32 noundef %240, double noundef 0.000000e+00, ptr noundef %242, i32 noundef %245)
          to label %246 unwind label %256

246:                                              ; preds = %243
  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 %265

247:                                              ; preds = %198
  %248 = landingpad { ptr, i32 }
          cleanup
  %249 = extractvalue { ptr, i32 } %248, 0
  store ptr %249, ptr %13, align 8
  %250 = extractvalue { ptr, i32 } %248, 1
  store i32 %250, ptr %14, align 4
  br label %255

251:                                              ; preds = %209
  %252 = landingpad { ptr, i32 }
          cleanup
  %253 = extractvalue { ptr, i32 } %252, 0
  store ptr %253, ptr %13, align 8
  %254 = extractvalue { ptr, i32 } %252, 1
  store i32 %254, ptr %14, align 4
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #4
  br label %255

255:                                              ; preds = %251, %247
  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 %260

256:                                              ; preds = %243, %238, %235, %229, %226, %222, %217, %210
  %257 = landingpad { ptr, i32 }
          cleanup
  %258 = extractvalue { ptr, i32 } %257, 0
  store ptr %258, ptr %13, align 8
  %259 = extractvalue { ptr, i32 } %257, 1
  store i32 %259, ptr %14, align 4
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %30) #4
  br label %260

260:                                              ; preds = %256, %255
  call void @llvm.lifetime.end.p0(i64 112, ptr %30) #4
  br label %261

261:                                              ; preds = %260, %194
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %24) #4
  br label %262

262:                                              ; preds = %261, %185
  call void @llvm.lifetime.end.p0(i64 112, ptr %24) #4
  br label %263

263:                                              ; preds = %262, %150
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %16) #4
  br label %264

264:                                              ; preds = %263, %123
  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 %459

265:                                              ; preds = %246, %3
  %266 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 5
  %267 = load i32, ptr %266, align 8, !tbaa !11
  %268 = icmp ne i32 %267, 0
  br i1 %268, label %269, label %458

269:                                              ; preds = %265
  %270 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 123
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #4
  %271 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %271, ptr %37, align 4, !tbaa !9
  %272 = getelementptr inbounds i32, ptr %37, i64 1
  %273 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %274 = load i32, ptr %273, align 4, !tbaa !37
  store i32 %274, ptr %272, align 4, !tbaa !9
  %275 = getelementptr inbounds %"class.std::initializer_list", ptr %36, i32 0, i32 0
  store ptr %37, ptr %275, align 8, !tbaa !38
  %276 = getelementptr inbounds %"class.std::initializer_list", ptr %36, i32 0, i32 1
  store i64 2, ptr %276, 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
  %277 = getelementptr inbounds { ptr, i64 }, ptr %36, i32 0, i32 0
  %278 = load ptr, ptr %277, align 8
  %279 = getelementptr inbounds { ptr, i64 }, ptr %36, i32 0, i32 1
  %280 = load i64, ptr %279, align 8
  invoke void @_ZNSt6vectorIjSaIjEEC2ESt16initializer_listIjERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %35, ptr %278, i64 %280, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %281 unwind label %300

281:                                              ; preds = %269
  invoke void @_ZN8mdvectorIdE6assignESt6vectorIjSaIjEEdb(ptr noundef nonnull align 8 dereferenceable(105) %270, ptr noundef %35, double noundef 0.000000e+00, i1 noundef zeroext false)
          to label %282 unwind label %304

282:                                              ; preds = %281
  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
  %283 = load i32, ptr %6, align 4, !tbaa !9
  call void @_Z10WS_Tri_ptsj(ptr dead_on_unwind writable sret(%class.mdvector) align 8 %39, i32 noundef %283)
  call void @llvm.lifetime.start.p0(i64 112, ptr %40) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #4
  %284 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %284, ptr %43, align 4, !tbaa !9
  %285 = getelementptr inbounds i32, ptr %43, i64 1
  %286 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %286, ptr %285, align 4, !tbaa !9
  %287 = getelementptr inbounds %"class.std::initializer_list", ptr %42, i32 0, i32 0
  store ptr %43, ptr %287, align 8, !tbaa !38
  %288 = getelementptr inbounds %"class.std::initializer_list", ptr %42, i32 0, i32 1
  store i64 2, ptr %288, 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
  %289 = getelementptr inbounds { ptr, i64 }, ptr %42, i32 0, i32 0
  %290 = load ptr, ptr %289, align 8
  %291 = getelementptr inbounds { ptr, i64 }, ptr %42, i32 0, i32 1
  %292 = load i64, ptr %291, align 8
  invoke void @_ZNSt6vectorIjSaIjEEC2ESt16initializer_listIjERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr %290, i64 %292, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %293 unwind label %309

293:                                              ; preds = %282
  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 %294 unwind label %313

294:                                              ; preds = %293
  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 %295

295:                                              ; preds = %349, %294
  %296 = load i32, ptr %45, align 4, !tbaa !9
  %297 = load i32, ptr %8, align 4, !tbaa !9
  %298 = icmp ult i32 %296, %297
  br i1 %298, label %318, label %299

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

300:                                              ; preds = %269
  %301 = landingpad { ptr, i32 }
          cleanup
  %302 = extractvalue { ptr, i32 } %301, 0
  store ptr %302, ptr %13, align 8
  %303 = extractvalue { ptr, i32 } %301, 1
  store i32 %303, ptr %14, align 4
  br label %308

304:                                              ; preds = %281
  %305 = landingpad { ptr, i32 }
          cleanup
  %306 = extractvalue { ptr, i32 } %305, 0
  store ptr %306, ptr %13, align 8
  %307 = extractvalue { ptr, i32 } %305, 1
  store i32 %307, ptr %14, align 4
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #4
  br label %308

308:                                              ; preds = %304, %300
  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 %459

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

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

317:                                              ; preds = %313, %309
  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 %457

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

319:                                              ; preds = %341, %318
  %320 = load i32, ptr %46, align 4, !tbaa !9
  %321 = load i32, ptr %8, align 4, !tbaa !9
  %322 = icmp ult i32 %320, %321
  br i1 %322, label %324, label %323

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

324:                                              ; preds = %319
  %325 = load i32, ptr %6, align 4, !tbaa !9
  %326 = load i32, ptr %45, align 4, !tbaa !9
  %327 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %39, i32 noundef %326, i32 noundef 0)
          to label %328 unwind label %344

328:                                              ; preds = %324
  %329 = load double, ptr %327, align 8, !tbaa !41
  %330 = load i32, ptr %45, align 4, !tbaa !9
  %331 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %39, i32 noundef %330, i32 noundef 1)
          to label %332 unwind label %344

332:                                              ; preds = %328
  %333 = load double, ptr %331, align 8, !tbaa !41
  %334 = load i32, ptr %46, align 4, !tbaa !9
  %335 = invoke noundef double @_Z9Dubiner2Djddj(i32 noundef %325, double noundef %329, double noundef %333, i32 noundef %334)
          to label %336 unwind label %344

336:                                              ; preds = %332
  %337 = load i32, ptr %45, align 4, !tbaa !9
  %338 = load i32, ptr %46, align 4, !tbaa !9
  %339 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %40, i32 noundef %337, i32 noundef %338)
          to label %340 unwind label %344

340:                                              ; preds = %336
  store double %335, ptr %339, align 8, !tbaa !41
  br label %341

341:                                              ; preds = %340
  %342 = load i32, ptr %46, align 4, !tbaa !9
  %343 = add i32 %342, 1
  store i32 %343, ptr %46, align 4, !tbaa !9
  br label %319, !llvm.loop !47

344:                                              ; preds = %336, %332, %328, %324
  %345 = landingpad { ptr, i32 }
          cleanup
  %346 = extractvalue { ptr, i32 } %345, 0
  store ptr %346, ptr %13, align 8
  %347 = extractvalue { ptr, i32 } %345, 1
  store i32 %347, 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 %456

348:                                              ; preds = %323
  br label %349

349:                                              ; preds = %348
  %350 = load i32, ptr %45, align 4, !tbaa !9
  %351 = add i32 %350, 1
  store i32 %351, ptr %45, align 4, !tbaa !9
  br label %295, !llvm.loop !48

352:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 112, ptr %47) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #4
  %353 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %353, ptr %50, align 4, !tbaa !9
  %354 = getelementptr inbounds i32, ptr %50, i64 1
  %355 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %356 = load i32, ptr %355, align 4, !tbaa !37
  store i32 %356, ptr %354, align 4, !tbaa !9
  %357 = getelementptr inbounds %"class.std::initializer_list", ptr %49, i32 0, i32 0
  store ptr %50, ptr %357, align 8, !tbaa !38
  %358 = getelementptr inbounds %"class.std::initializer_list", ptr %49, i32 0, i32 1
  store i64 2, ptr %358, 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
  %359 = getelementptr inbounds { ptr, i64 }, ptr %49, i32 0, i32 0
  %360 = load ptr, ptr %359, align 8
  %361 = getelementptr inbounds { ptr, i64 }, ptr %49, i32 0, i32 1
  %362 = load i64, ptr %361, align 8
  invoke void @_ZNSt6vectorIjSaIjEEC2ESt16initializer_listIjERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %48, ptr %360, i64 %362, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %363 unwind label %370

363:                                              ; preds = %352
  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 %364 unwind label %374

364:                                              ; preds = %363
  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 %365

365:                                              ; preds = %384, %364
  %366 = load i32, ptr %52, align 4, !tbaa !9
  %367 = load i32, ptr %8, align 4, !tbaa !9
  %368 = icmp ult i32 %366, %367
  br i1 %368, label %379, label %369

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

370:                                              ; preds = %352
  %371 = landingpad { ptr, i32 }
          cleanup
  %372 = extractvalue { ptr, i32 } %371, 0
  store ptr %372, ptr %13, align 8
  %373 = extractvalue { ptr, i32 } %371, 1
  store i32 %373, ptr %14, align 4
  br label %378

374:                                              ; preds = %363
  %375 = landingpad { ptr, i32 }
          cleanup
  %376 = extractvalue { ptr, i32 } %375, 0
  store ptr %376, ptr %13, align 8
  %377 = extractvalue { ptr, i32 } %375, 1
  store i32 %377, ptr %14, align 4
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #4
  br label %378

378:                                              ; preds = %374, %370
  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 %455

379:                                              ; preds = %365
  %380 = load i32, ptr %52, align 4, !tbaa !9
  %381 = load i32, ptr %52, align 4, !tbaa !9
  %382 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %47, i32 noundef %380, i32 noundef %381)
          to label %383 unwind label %387

383:                                              ; preds = %379
  store double 1.000000e+00, ptr %382, align 8, !tbaa !41
  br label %384

384:                                              ; preds = %383
  %385 = load i32, ptr %52, align 4, !tbaa !9
  %386 = add i32 %385, 1
  store i32 %386, ptr %52, align 4, !tbaa !9
  br label %365, !llvm.loop !49

387:                                              ; preds = %379
  %388 = landingpad { ptr, i32 }
          cleanup
  %389 = extractvalue { ptr, i32 } %388, 0
  store ptr %389, ptr %13, align 8
  %390 = extractvalue { ptr, i32 } %388, 1
  store i32 %390, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  br label %454

391:                                              ; preds = %369
  call void @llvm.lifetime.start.p0(i64 112, ptr %53) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #4
  %392 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %392, ptr %56, align 4, !tbaa !9
  %393 = getelementptr inbounds i32, ptr %56, i64 1
  %394 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %395 = load i32, ptr %394, align 4, !tbaa !37
  store i32 %395, ptr %393, align 4, !tbaa !9
  %396 = getelementptr inbounds %"class.std::initializer_list", ptr %55, i32 0, i32 0
  store ptr %56, ptr %396, align 8, !tbaa !38
  %397 = getelementptr inbounds %"class.std::initializer_list", ptr %55, i32 0, i32 1
  store i64 2, ptr %397, 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
  %398 = getelementptr inbounds { ptr, i64 }, ptr %55, i32 0, i32 0
  %399 = load ptr, ptr %398, align 8
  %400 = getelementptr inbounds { ptr, i64 }, ptr %55, i32 0, i32 1
  %401 = load i64, ptr %400, align 8
  invoke void @_ZNSt6vectorIjSaIjEEC2ESt16initializer_listIjERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %54, ptr %399, i64 %401, ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %402 unwind label %440

402:                                              ; preds = %391
  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 %403 unwind label %444

403:                                              ; preds = %402
  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
  %404 = load i32, ptr %8, align 4, !tbaa !9
  %405 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %406 = load i32, ptr %405, align 4, !tbaa !37
  %407 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %408 = load i32, ptr %407, align 4, !tbaa !37
  %409 = invoke noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %47)
          to label %410 unwind label %449

410:                                              ; preds = %403
  %411 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %412 = load i32, ptr %411, align 4, !tbaa !37
  %413 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 68
  %414 = invoke noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %413)
          to label %415 unwind label %449

415:                                              ; preds = %410
  %416 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %417 = load i32, ptr %416, align 4, !tbaa !37
  %418 = invoke noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %53)
          to label %419 unwind label %449

419:                                              ; preds = %415
  %420 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %421 = load i32, ptr %420, align 4, !tbaa !37
  invoke void @cblas_dgemm(i32 noundef 101, i32 noundef 111, i32 noundef 111, i32 noundef %404, i32 noundef %406, i32 noundef %408, double noundef 1.000000e+00, ptr noundef %409, i32 noundef %412, ptr noundef %414, i32 noundef %417, double noundef 0.000000e+00, ptr noundef %418, i32 noundef %421)
          to label %422 unwind label %449

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

428:                                              ; preds = %422
  %429 = load i32, ptr %8, align 4, !tbaa !9
  %430 = invoke noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %53)
          to label %431 unwind label %449

431:                                              ; preds = %428
  %432 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %433 = load i32, ptr %432, align 4, !tbaa !37
  %434 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 123
  %435 = invoke noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %434)
          to label %436 unwind label %449

436:                                              ; preds = %431
  %437 = getelementptr inbounds %class.Elements, ptr %58, i32 0, i32 12
  %438 = load i32, ptr %437, align 4, !tbaa !37
  invoke void @cblas_dgemm(i32 noundef 101, i32 noundef 111, i32 noundef 111, i32 noundef %423, i32 noundef %425, i32 noundef %426, double noundef 1.000000e+00, ptr noundef %427, i32 noundef %429, ptr noundef %430, i32 noundef %433, double noundef 0.000000e+00, ptr noundef %435, i32 noundef %438)
          to label %439 unwind label %449

439:                                              ; preds = %436
  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 %458

440:                                              ; preds = %391
  %441 = landingpad { ptr, i32 }
          cleanup
  %442 = extractvalue { ptr, i32 } %441, 0
  store ptr %442, ptr %13, align 8
  %443 = extractvalue { ptr, i32 } %441, 1
  store i32 %443, ptr %14, align 4
  br label %448

444:                                              ; preds = %402
  %445 = landingpad { ptr, i32 }
          cleanup
  %446 = extractvalue { ptr, i32 } %445, 0
  store ptr %446, ptr %13, align 8
  %447 = extractvalue { ptr, i32 } %445, 1
  store i32 %447, ptr %14, align 4
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #4
  br label %448

448:                                              ; preds = %444, %440
  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 %453

449:                                              ; preds = %436, %431, %428, %422, %419, %415, %410, %403
  %450 = landingpad { ptr, i32 }
          cleanup
  %451 = extractvalue { ptr, i32 } %450, 0
  store ptr %451, ptr %13, align 8
  %452 = extractvalue { ptr, i32 } %450, 1
  store i32 %452, ptr %14, align 4
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %53) #4
  br label %453

453:                                              ; preds = %449, %448
  call void @llvm.lifetime.end.p0(i64 112, ptr %53) #4
  br label %454

454:                                              ; preds = %453, %387
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %47) #4
  br label %455

455:                                              ; preds = %454, %378
  call void @llvm.lifetime.end.p0(i64 112, ptr %47) #4
  br label %456

456:                                              ; preds = %455, %344
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %40) #4
  br label %457

457:                                              ; preds = %456, %317
  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 %459

458:                                              ; preds = %439, %265
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #4
  ret void

459:                                              ; preds = %457, %308, %264, %114
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #4
  br label %460

460:                                              ; preds = %459
  %461 = load ptr, ptr %13, align 8
  %462 = load i32, ptr %14, align 4
  %463 = insertvalue { ptr, i32 } poison, ptr %461, 0
  %464 = insertvalue { ptr, i32 } %463, i32 %462, 1
  resume { ptr, i32 } %464
}

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 #2 align 2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { "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 uwtable
declare dso_local void @_ZN8mdvectorIdE6assignESt6vectorIjSaIjEEdb(ptr noundef nonnull align 8 dereferenceable(105), ptr noundef, double noundef, i1 noundef zeroext) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 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 #1 align 2

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

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

; 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 #2 align 2

declare noundef double @_Z9Dubiner2Djddj(i32 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 #1 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4Tris9setup_PMGEii(ptr noundef nonnull align 8 dereferenceable(13968) %0, i32 noundef %1, i32 noundef %2) unnamed_addr #1 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 = sdiv i32 %38, 2
  %40 = add nsw i32 %2, 1
  %41 = add nsw i32 %2, 2
  %42 = mul nsw i32 %40, %41
  %43 = sdiv i32 %42, 2
  %44 = getelementptr inbounds i8, ptr %0, i64 32
  %45 = load i32, ptr %44, align 8, !tbaa !5
  %.not = icmp eq i32 %45, %1
  br i1 %.not, label %123, label %46

46:                                               ; preds = %3
  %47 = getelementptr inbounds i8, ptr %0, i64 9424
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #5
  store i32 %39, ptr %5, align 4, !tbaa !35
  %48 = getelementptr inbounds i8, ptr %5, i64 4
  %49 = getelementptr inbounds i8, ptr %0, i64 60
  %50 = load i32, ptr %49, align 4, !tbaa !36
  store i32 %50, ptr %48, 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 %51 unwind label %58

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

52:                                               ; preds = %51
  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_Tri_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 %39, ptr %10, align 4, !tbaa !35
  %53 = getelementptr inbounds i8, ptr %10, i64 4
  store i32 %39, ptr %53, 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 %54 unwind label %63

54:                                               ; preds = %52
  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 %55 unwind label %65

55:                                               ; preds = %54
  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 %38, 1
  %.not144 = icmp ult i32 %.off, 3
  br i1 %.not144, label %._crit_edge, label %.preheader131.preheader

.preheader131.preheader:                          ; preds = %55
  %umax = call i32 @llvm.umax.i32(i32 %39, i32 1)
  br label %.preheader131

.preheader131:                                    ; preds = %.preheader131.preheader, %68
  %.092133 = phi i32 [ %69, %68 ], [ 0, %.preheader131.preheader ]
  br label %70

._crit_edge:                                      ; preds = %68, %55
  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 %39, ptr %14, align 4, !tbaa !35
  %56 = getelementptr inbounds i8, ptr %14, i64 4
  %57 = load i32, ptr %49, align 4, !tbaa !36
  store i32 %57, ptr %56, 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 %81 unwind label %85

58:                                               ; preds = %46
  %59 = landingpad { ptr, i32 }
          cleanup
  br label %62

60:                                               ; preds = %51
  %61 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #5
  br label %62

62:                                               ; preds = %60, %58
  %.pn = phi { ptr, i32 } [ %61, %60 ], [ %59, %58 ]
  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 %201

63:                                               ; preds = %52
  %64 = landingpad { ptr, i32 }
          cleanup
  br label %67

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

67:                                               ; preds = %65, %63
  %.pn103 = phi { ptr, i32 } [ %66, %65 ], [ %64, %63 ]
  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 %122

68:                                               ; preds = %76
  %69 = add nuw i32 %.092133, 1
  %exitcond151.not = icmp eq i32 %69, %umax
  br i1 %exitcond151.not, label %._crit_edge, label %.preheader131, !llvm.loop !37

70:                                               ; preds = %.preheader131, %76
  %.095132 = phi i32 [ 0, %.preheader131 ], [ %78, %76 ]
  %71 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %7, i32 noundef %.092133, i32 noundef 0)
  %72 = load double, ptr %71, align 8, !tbaa !39
  %73 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %7, i32 noundef %.092133, i32 noundef 1)
  %74 = load double, ptr %73, align 8, !tbaa !39
  %75 = invoke noundef double @_Z9Dubiner2Djddj(i32 noundef %1, double noundef %72, double noundef %74, i32 noundef %.095132)
          to label %76 unwind label %79

76:                                               ; preds = %70
  %77 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %8, i32 noundef %.092133, i32 noundef %.095132)
  store double %75, ptr %77, align 8, !tbaa !39
  %78 = add nuw i32 %.095132, 1
  %exitcond.not = icmp eq i32 %78, %umax
  br i1 %exitcond.not, label %68, label %70, !llvm.loop !41

79:                                               ; preds = %70
  %80 = landingpad { ptr, i32 }
          cleanup
  br label %121

81:                                               ; 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 %82 unwind label %87

82:                                               ; preds = %81
  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
  %83 = load i32, ptr %49, align 4, !tbaa !36
  %.not145 = icmp eq i32 %83, 0
  br i1 %.not145, label %._crit_edge136, label %.lr.ph

._crit_edge136:                                   ; preds = %.lr.ph, %82
  %.lcssa = phi i32 [ 0, %82 ], [ %92, %.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 %39, ptr %18, align 4, !tbaa !35
  %84 = getelementptr inbounds i8, ptr %18, i64 4
  store i32 %.lcssa, ptr %84, 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 %94 unwind label %112

85:                                               ; preds = %._crit_edge
  %86 = landingpad { ptr, i32 }
          cleanup
  br label %89

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

89:                                               ; preds = %87, %85
  %.pn105 = phi { ptr, i32 } [ %88, %87 ], [ %86, %85 ]
  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 %120

.lr.ph:                                           ; preds = %82, %.lr.ph
  %.096134 = phi i32 [ %91, %.lr.ph ], [ 0, %82 ]
  %90 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %12, i32 noundef %.096134, i32 noundef %.096134)
  store double 1.000000e+00, ptr %90, align 8, !tbaa !39
  %91 = add nuw i32 %.096134, 1
  %92 = load i32, ptr %49, align 4, !tbaa !36
  %93 = icmp ult i32 %91, %92
  br i1 %93, label %.lr.ph, label %._crit_edge136, !llvm.loop !42

94:                                               ; preds = %._crit_edge136
  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 %95 unwind label %114

95:                                               ; preds = %94
  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
  %96 = load i32, ptr %49, align 4, !tbaa !36
  %97 = call noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %12)
  %98 = load i32, ptr %49, align 4, !tbaa !36
  %99 = getelementptr inbounds i8, ptr %0, i64 4704
  %100 = call noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %99)
  %101 = load i32, ptr %49, align 4, !tbaa !36
  %102 = call noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %16)
  %103 = load i32, ptr %49, align 4, !tbaa !36
  invoke void @cblas_dgemm(i32 noundef 101, i32 noundef 111, i32 noundef 111, i32 noundef %39, i32 noundef %96, i32 noundef %96, double noundef 1.000000e+00, ptr noundef %97, i32 noundef %98, ptr noundef %100, i32 noundef %101, double noundef 0.000000e+00, ptr noundef %102, i32 noundef %103)
          to label %104 unwind label %117

104:                                              ; preds = %95
  %105 = load i32, ptr %49, align 4, !tbaa !36
  %106 = call noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %8)
  %107 = call noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %16)
  %108 = load i32, ptr %49, align 4, !tbaa !36
  %109 = call noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %47)
  %110 = load i32, ptr %49, align 4, !tbaa !36
  invoke void @cblas_dgemm(i32 noundef 101, i32 noundef 111, i32 noundef 111, i32 noundef %39, i32 noundef %105, i32 noundef %39, double noundef 1.000000e+00, ptr noundef %106, i32 noundef %39, ptr noundef %107, i32 noundef %108, double noundef 0.000000e+00, ptr noundef %109, i32 noundef %110)
          to label %111 unwind label %117

111:                                              ; preds = %104
  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 %44, align 8, !tbaa !5
  br label %123

112:                                              ; preds = %._crit_edge136
  %113 = landingpad { ptr, i32 }
          cleanup
  br label %116

114:                                              ; preds = %94
  %115 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #5
  br label %116

116:                                              ; preds = %114, %112
  %.pn107 = phi { ptr, i32 } [ %115, %114 ], [ %113, %112 ]
  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 %119

117:                                              ; preds = %104, %95
  %118 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %16) #5
  br label %119

119:                                              ; preds = %117, %116
  %.pn109 = phi { ptr, i32 } [ %118, %117 ], [ %.pn107, %116 ]
  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 %120

120:                                              ; preds = %119, %89
  %.pn109.pn = phi { ptr, i32 } [ %.pn109, %119 ], [ %.pn105, %89 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %12) #5
  br label %121

121:                                              ; preds = %120, %79
  %.pn127 = phi { ptr, i32 } [ %80, %79 ], [ %.pn109.pn, %120 ]
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %8) #5
  br label %122

122:                                              ; preds = %121, %67
  %.pn127.pn = phi { ptr, i32 } [ %.pn127, %121 ], [ %.pn103, %67 ]
  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 %201

123:                                              ; preds = %111, %3
  %124 = phi i32 [ %.pr, %111 ], [ %1, %3 ]
  %.not112 = icmp eq i32 %124, 0
  br i1 %.not112, label %200, label %125

125:                                              ; preds = %123
  %126 = getelementptr inbounds i8, ptr %0, i64 9536
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #5
  store i32 %43, ptr %21, align 4, !tbaa !35
  %127 = getelementptr inbounds i8, ptr %21, i64 4
  %128 = getelementptr inbounds i8, ptr %0, i64 60
  %129 = load i32, ptr %128, align 4, !tbaa !36
  store i32 %129, ptr %127, 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 %130 unwind label %137

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

131:                                              ; preds = %130
  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_Tri_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 %43, ptr %26, align 4, !tbaa !35
  %132 = getelementptr inbounds i8, ptr %26, i64 4
  store i32 %43, ptr %132, 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 %133 unwind label %142

133:                                              ; preds = %131
  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 %134 unwind label %144

134:                                              ; preds = %133
  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
  %.off147 = add i32 %42, 1
  %.not146 = icmp ult i32 %.off147, 3
  br i1 %.not146, label %._crit_edge139, label %.preheader.preheader

.preheader.preheader:                             ; preds = %134
  %umax152 = call i32 @llvm.umax.i32(i32 %43, i32 1)
  br label %.preheader

.preheader:                                       ; preds = %.preheader.preheader, %147
  %.094138 = phi i32 [ %148, %147 ], [ 0, %.preheader.preheader ]
  br label %149

._crit_edge139:                                   ; preds = %147, %134
  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 %43, ptr %30, align 4, !tbaa !35
  %135 = getelementptr inbounds i8, ptr %30, i64 4
  %136 = load i32, ptr %128, align 4, !tbaa !36
  store i32 %136, ptr %135, 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 %160 unwind label %164

137:                                              ; preds = %125
  %138 = landingpad { ptr, i32 }
          cleanup
  br label %141

139:                                              ; preds = %130
  %140 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #5
  br label %141

141:                                              ; preds = %139, %137
  %.pn113 = phi { ptr, i32 } [ %140, %139 ], [ %138, %137 ]
  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 %201

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

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

146:                                              ; preds = %144, %142
  %.pn115 = phi { ptr, i32 } [ %145, %144 ], [ %143, %142 ]
  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 %199

147:                                              ; preds = %155
  %148 = add nuw i32 %.094138, 1
  %exitcond154.not = icmp eq i32 %148, %umax152
  br i1 %exitcond154.not, label %._crit_edge139, label %.preheader, !llvm.loop !43

149:                                              ; preds = %.preheader, %155
  %.093137 = phi i32 [ 0, %.preheader ], [ %157, %155 ]
  %150 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %23, i32 noundef %.094138, i32 noundef 0)
  %151 = load double, ptr %150, align 8, !tbaa !39
  %152 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %23, i32 noundef %.094138, i32 noundef 1)
  %153 = load double, ptr %152, align 8, !tbaa !39
  %154 = invoke noundef double @_Z9Dubiner2Djddj(i32 noundef %2, double noundef %151, double noundef %153, i32 noundef %.093137)
          to label %155 unwind label %158

155:                                              ; preds = %149
  %156 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %24, i32 noundef %.094138, i32 noundef %.093137)
  store double %154, ptr %156, align 8, !tbaa !39
  %157 = add nuw i32 %.093137, 1
  %exitcond153.not = icmp eq i32 %157, %umax152
  br i1 %exitcond153.not, label %147, label %149, !llvm.loop !44

158:                                              ; preds = %149
  %159 = landingpad { ptr, i32 }
          cleanup
  br label %198

160:                                              ; preds = %._crit_edge139
  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 %161 unwind label %166

161:                                              ; preds = %160
  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 %.not146, label %._crit_edge143, label %.lr.ph142.preheader

.lr.ph142.preheader:                              ; preds = %161
  %umax155 = call i32 @llvm.umax.i32(i32 %43, i32 1)
  br label %.lr.ph142

._crit_edge143:                                   ; preds = %.lr.ph142, %161
  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 %43, ptr %34, align 4, !tbaa !35
  %162 = getelementptr inbounds i8, ptr %34, i64 4
  %163 = load i32, ptr %128, align 4, !tbaa !36
  store i32 %163, ptr %162, 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 %171 unwind label %189

164:                                              ; preds = %._crit_edge139
  %165 = landingpad { ptr, i32 }
          cleanup
  br label %168

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

168:                                              ; preds = %166, %164
  %.pn117 = phi { ptr, i32 } [ %167, %166 ], [ %165, %164 ]
  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 %197

.lr.ph142:                                        ; preds = %.lr.ph142.preheader, %.lr.ph142
  %.091140 = phi i32 [ %170, %.lr.ph142 ], [ 0, %.lr.ph142.preheader ]
  %169 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8mdvectorIdEclEjj(ptr noundef nonnull align 8 dereferenceable(105) %28, i32 noundef %.091140, i32 noundef %.091140)
  store double 1.000000e+00, ptr %169, align 8, !tbaa !39
  %170 = add nuw i32 %.091140, 1
  %exitcond156.not = icmp eq i32 %170, %umax155
  br i1 %exitcond156.not, label %._crit_edge143, label %.lr.ph142, !llvm.loop !45

171:                                              ; preds = %._crit_edge143
  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 %172 unwind label %191

172:                                              ; preds = %171
  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
  %173 = load i32, ptr %128, align 4, !tbaa !36
  %174 = call noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %28)
  %175 = load i32, ptr %128, align 4, !tbaa !36
  %176 = getelementptr inbounds i8, ptr %0, i64 4704
  %177 = call noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %176)
  %178 = load i32, ptr %128, align 4, !tbaa !36
  %179 = call noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %32)
  %180 = load i32, ptr %128, align 4, !tbaa !36
  invoke void @cblas_dgemm(i32 noundef 101, i32 noundef 111, i32 noundef 111, i32 noundef %43, i32 noundef %173, i32 noundef %173, double noundef 1.000000e+00, ptr noundef %174, i32 noundef %175, ptr noundef %177, i32 noundef %178, double noundef 0.000000e+00, ptr noundef %179, i32 noundef %180)
          to label %181 unwind label %194

181:                                              ; preds = %172
  %182 = load i32, ptr %128, align 4, !tbaa !36
  %183 = call noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %24)
  %184 = call noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %32)
  %185 = load i32, ptr %128, align 4, !tbaa !36
  %186 = call noundef ptr @_ZN8mdvectorIdE4dataEv(ptr noundef nonnull align 8 dereferenceable(105) %126)
  %187 = load i32, ptr %128, align 4, !tbaa !36
  invoke void @cblas_dgemm(i32 noundef 101, i32 noundef 111, i32 noundef 111, i32 noundef %43, i32 noundef %182, i32 noundef %43, double noundef 1.000000e+00, ptr noundef %183, i32 noundef %43, ptr noundef %184, i32 noundef %185, double noundef 0.000000e+00, ptr noundef %186, i32 noundef %187)
          to label %188 unwind label %194

188:                                              ; preds = %181
  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 %200

189:                                              ; preds = %._crit_edge143
  %190 = landingpad { ptr, i32 }
          cleanup
  br label %193

191:                                              ; preds = %171
  %192 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #5
  br label %193

193:                                              ; preds = %191, %189
  %.pn119 = phi { ptr, i32 } [ %192, %191 ], [ %190, %189 ]
  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 %196

194:                                              ; preds = %181, %172
  %195 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %32) #5
  br label %196

196:                                              ; preds = %194, %193
  %.pn121 = phi { ptr, i32 } [ %195, %194 ], [ %.pn119, %193 ]
  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 %197

197:                                              ; preds = %196, %168
  %.pn121.pn = phi { ptr, i32 } [ %.pn121, %196 ], [ %.pn117, %168 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %28) #5
  br label %198

198:                                              ; preds = %197, %158
  %.pn124 = phi { ptr, i32 } [ %159, %158 ], [ %.pn121.pn, %197 ]
  call void @_ZN8mdvectorIdED2Ev(ptr noundef nonnull align 8 dereferenceable(105) %24) #5
  br label %199

199:                                              ; preds = %198, %146
  %.pn124.pn = phi { ptr, i32 } [ %.pn124, %198 ], [ %.pn115, %146 ]
  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 %201

200:                                              ; preds = %188, %123
  ret void

201:                                              ; preds = %199, %141, %122, %62
  %.pn127.pn.pn = phi { ptr, i32 } [ %.pn127.pn, %122 ], [ %.pn124.pn, %199 ], [ %.pn113, %141 ], [ %.pn, %62 ]
  resume { ptr, i32 } %.pn127.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 #2 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 uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { "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