; LLVM IR from INMOST-DEV/INMOST-FEM :: anifem++/fem/fem_space.ll (ZN3Ani13UnionFemSpace13orthogonalizeEj)

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

%"struct.std::array.62" = type { [4 x double] }
%"class.std::vector.55" = type { %"struct.std::_Vector_base.56" }
%"struct.std::_Vector_base.56" = 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::allocator.57" = type { i8 }
%"struct.Ani::DenseMatrix.9" = type { ptr, i64, i64, i64 }
%"struct.Ani::Tetra" = type { %"struct.Ani::Tetras.base", [4 x i8] }
%"struct.Ani::Tetras.base" = type { %"struct.Ani::TetrasCommon.base" }
%"struct.Ani::TetrasCommon.base" = type <{ %"struct.Ani::DenseMatrix", %"struct.Ani::DenseMatrix", %"struct.Ani::DenseMatrix", %"struct.Ani::DenseMatrix", i32 }>
%"struct.Ani::DenseMatrix" = type { ptr, i64, i64, i64 }
%"struct.Ani::OpMemoryRequirements" = type { i64, i64, i64, i64 }
%"struct.Ani::PlainMemoryX" = type { ptr, ptr, ptr, i64, i64, i64 }
%"class.std::vector.60" = type { %"struct.std::_Vector_base.61" }
%"struct.std::_Vector_base.61" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.24" = type { i8 }
%"struct.Ani::AniMemoryX" = type { %"struct.Ani::AniMemory", %"struct.Ani::ArrayView.1", %"struct.Ani::ArrayView.0", %"struct.Ani::ArrayView.0", i64 }
%"struct.Ani::AniMemory" = type { %"struct.Ani::ArrayView", %"struct.Ani::ArrayView", %"struct.Ani::ArrayView", %"struct.Ani::ArrayView", %"struct.Ani::ArrayView", %"struct.Ani::ArrayView", %"struct.Ani::ArrayView", %"struct.Ani::ArrayView", %"struct.Ani::ArrayView", %"struct.Ani::ArrayView", %"struct.Ani::ArrayView", %"struct.Ani::ArrayView", %"struct.Ani::ArrayView", %"struct.Ani::ArrayView.0", i64, i64 }
%"struct.Ani::ArrayView" = type { ptr, i64 }
%"struct.Ani::ArrayView.1" = type { ptr, i64 }
%"struct.Ani::ArrayView.0" = type { ptr, i64 }
%class.anon.63 = type { ptr }
%"class.std::vector.64" = type { %"struct.std::_Vector_base.65" }
%"struct.std::_Vector_base.65" = type { %"struct.std::_Vector_base<Ani::ArrayView<>, std::allocator<Ani::ArrayView<>>>::_Vector_impl" }
%"struct.std::_Vector_base<Ani::ArrayView<>, std::allocator<Ani::ArrayView<>>>::_Vector_impl" = type { %"struct.std::_Vector_base<Ani::ArrayView<>, std::allocator<Ani::ArrayView<>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Ani::ArrayView<>, std::allocator<Ani::ArrayView<>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.66" = type { i8 }
%class.anon.69 = type { ptr, ptr }
%"class.std::vector.70" = type { %"struct.std::_Vector_base.71" }
%"struct.std::_Vector_base.71" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.72" = type { i8 }
%class.anon.75 = type { i8 }
%class.anon.76 = type { double }
%"struct.Ani::UnionFemSpace" = type { %"struct.Ani::BaseFemSpace", %"class.std::vector.31", %"class.std::vector.55" }
%"struct.Ani::BaseFemSpace" = type { ptr, %"struct.Ani::DofT::DofMap" }
%"struct.Ani::DofT::DofMap" = type { %"class.std::shared_ptr" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::vector.31" = type { %"struct.std::_Vector_base.32" }
%"struct.std::_Vector_base.32" = type { %"struct.std::_Vector_base<std::shared_ptr<Ani::BaseFemSpace>, std::allocator<std::shared_ptr<Ani::BaseFemSpace>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::shared_ptr<Ani::BaseFemSpace>, std::allocator<std::shared_ptr<Ani::BaseFemSpace>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::shared_ptr<Ani::BaseFemSpace>, std::allocator<std::shared_ptr<Ani::BaseFemSpace>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::shared_ptr<Ani::BaseFemSpace>, std::allocator<std::shared_ptr<Ani::BaseFemSpace>>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@__const._ZN3Ani13UnionFemSpace13orthogonalizeEj.xyl = external hidden unnamed_addr constant %"struct.std::array.62", align 8

; 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 nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1

declare i32 @__gxx_personality_v0(...)

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZNK3Ani4DofT6DofMap11NumDofOnTetEv(ptr noundef nonnull align 8 dereferenceable(16)) #3 align 2

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3Ani13UnionFemSpace13orthogonalizeEj(ptr noundef nonnull align 8 dereferenceable(72) %0, i32 noundef %1) #5 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca %"class.std::vector.55", align 8
  %7 = alloca double, align 8
  %8 = alloca %"class.std::allocator.57", align 1
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca %"struct.Ani::DenseMatrix.9", align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca [12 x double], align 16
  %15 = alloca double, align 8
  %16 = alloca %"struct.Ani::Tetra", align 8
  %17 = alloca %"struct.Ani::OpMemoryRequirements", align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca %"struct.Ani::OpMemoryRequirements", align 8
  %21 = alloca i32, align 4
  %22 = alloca %"struct.Ani::PlainMemoryX", align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca %"struct.Ani::PlainMemoryX", align 8
  %28 = alloca i64, align 8
  %29 = alloca %"class.std::vector.60", align 8
  %30 = alloca %"class.std::allocator.24", align 1
  %31 = alloca %"struct.Ani::AniMemoryX", align 8
  %32 = alloca %"struct.std::array.62", align 8
  %33 = alloca %class.anon.63, align 8
  %34 = alloca %"class.std::vector.64", align 8
  %35 = alloca %"class.std::allocator.66", align 1
  %36 = alloca i32, align 4
  %37 = alloca %"struct.Ani::ArrayView", align 8
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca %class.anon.69, align 8
  %44 = alloca i32, align 4
  %45 = alloca %"struct.Ani::PlainMemoryX", align 8
  %46 = alloca i32, align 4
  %47 = alloca %"struct.Ani::DenseMatrix.9", align 8
  %48 = alloca %"class.std::vector.55", align 8
  %49 = alloca %"class.std::allocator.57", align 1
  %50 = alloca %"class.std::vector.70", align 8
  %51 = alloca %"class.std::allocator.72", align 1
  %52 = alloca i32, align 4
  %53 = alloca ptr, align 8
  %54 = alloca %class.anon.75, align 1
  %55 = alloca %class.anon.76, align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store i32 %1, ptr %4, align 4, !tbaa !9
  %56 = load ptr, ptr %3, align 8
  %57 = getelementptr inbounds %"struct.Ani::UnionFemSpace", ptr %56, i32 0, i32 1
  %58 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %57) #8
  %59 = icmp ule i64 %58, 1
  br i1 %59, label %60, label %61

60:                                               ; preds = %2
  br label %703

61:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #8
  %62 = getelementptr inbounds %"struct.Ani::BaseFemSpace", ptr %56, i32 0, i32 1
  %63 = call noundef i32 @_ZNK3Ani4DofT6DofMap11NumDofOnTetEv(ptr noundef nonnull align 8 dereferenceable(16) %62)
  store i32 %63, ptr %5, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %6) #8
  %64 = load i32, ptr %5, align 4, !tbaa !9
  %65 = load i32, ptr %5, align 4, !tbaa !9
  %66 = mul i32 %64, %65
  %67 = zext i32 %66 to i64
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #8
  store double 0.000000e+00, ptr %7, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #8
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKdRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %67, ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %68 unwind label %100

68:                                               ; preds = %61
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #8
  %69 = getelementptr inbounds %"struct.Ani::UnionFemSpace", ptr %56, i32 0, i32 2
  %70 = load i32, ptr %5, align 4, !tbaa !9
  %71 = load i32, ptr %5, align 4, !tbaa !9
  %72 = mul i32 %70, %71
  %73 = zext i32 %72 to i64
  invoke void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %69, i64 noundef %73)
          to label %74 unwind label %104

74:                                               ; preds = %68
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #8
  %75 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  %76 = load i32, ptr %5, align 4, !tbaa !9
  %77 = zext i32 %76 to i64
  %78 = load i32, ptr %5, align 4, !tbaa !9
  %79 = zext i32 %78 to i64
  invoke void @_ZN3Ani11DenseMatrixIdEC2EPdmm(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef %75, i64 noundef %77, i64 noundef %79)
          to label %80 unwind label %108

80:                                               ; preds = %74
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #8
  store i32 0, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #8
  store i32 0, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 96, ptr %14) #8
  call void @llvm.memset.p0.i64(ptr align 16 %14, i8 0, i64 96, i1 false)
  %81 = getelementptr inbounds [12 x double], ptr %14, i32 0, i32 3
  store double 1.000000e+00, ptr %81, align 8
  %82 = getelementptr inbounds [12 x double], ptr %14, i32 0, i32 7
  store double 1.000000e+00, ptr %82, align 8
  %83 = getelementptr inbounds [12 x double], ptr %14, i32 0, i32 11
  store double 1.000000e+00, ptr %83, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  store double 1.000000e+00, ptr %15, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 136, ptr %16) #8
  %84 = getelementptr inbounds [12 x double], ptr %14, i64 0, i64 0
  %85 = getelementptr inbounds double, ptr %84, i64 0
  %86 = getelementptr inbounds [12 x double], ptr %14, i64 0, i64 0
  %87 = getelementptr inbounds double, ptr %86, i64 3
  %88 = getelementptr inbounds [12 x double], ptr %14, i64 0, i64 0
  %89 = getelementptr inbounds double, ptr %88, i64 6
  %90 = getelementptr inbounds [12 x double], ptr %14, i64 0, i64 0
  %91 = getelementptr inbounds double, ptr %90, i64 9
  invoke void @_ZN3Ani5TetraIKdEC2EPS1_S3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(132) %16, ptr noundef %85, ptr noundef %87, ptr noundef %89, ptr noundef %91)
          to label %92 unwind label %112

92:                                               ; preds = %80
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #8
  call void @_ZN3Ani20OpMemoryRequirementsC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  store i32 0, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #8
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %93

93:                                               ; preds = %161, %92
  %94 = load i32, ptr %19, align 4, !tbaa !9
  %95 = zext i32 %94 to i64
  %96 = getelementptr inbounds %"struct.Ani::UnionFemSpace", ptr %56, i32 0, i32 1
  %97 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %96) #8
  %98 = icmp ult i64 %95, %97
  br i1 %98, label %116, label %99

99:                                               ; preds = %93
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  br label %173

100:                                              ; preds = %61
  %101 = landingpad { ptr, i32 }
          cleanup
  %102 = extractvalue { ptr, i32 } %101, 0
  store ptr %102, ptr %9, align 8
  %103 = extractvalue { ptr, i32 } %101, 1
  store i32 %103, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #8
  br label %716

104:                                              ; preds = %68
  %105 = landingpad { ptr, i32 }
          cleanup
  %106 = extractvalue { ptr, i32 } %105, 0
  store ptr %106, ptr %9, align 8
  %107 = extractvalue { ptr, i32 } %105, 1
  store i32 %107, ptr %10, align 4
  br label %715

108:                                              ; preds = %74
  %109 = landingpad { ptr, i32 }
          cleanup
  %110 = extractvalue { ptr, i32 } %109, 0
  store ptr %110, ptr %9, align 8
  %111 = extractvalue { ptr, i32 } %109, 1
  store i32 %111, ptr %10, align 4
  br label %714

112:                                              ; preds = %80
  %113 = landingpad { ptr, i32 }
          cleanup
  %114 = extractvalue { ptr, i32 } %113, 0
  store ptr %114, ptr %9, align 8
  %115 = extractvalue { ptr, i32 } %113, 1
  store i32 %115, ptr %10, align 4
  br label %713

116:                                              ; preds = %93
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #8
  %117 = getelementptr inbounds %"struct.Ani::UnionFemSpace", ptr %56, i32 0, i32 1
  %118 = load i32, ptr %19, align 4, !tbaa !9
  %119 = zext i32 %118 to i64
  %120 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %117, i64 noundef %119) #8
  %121 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3Ani12BaseFemSpaceELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %120) #8
  %122 = load ptr, ptr %121, align 8, !tbaa !13
  %123 = getelementptr inbounds ptr, ptr %122, i64 9
  %124 = load ptr, ptr %123, align 8
  invoke void %124(ptr dead_on_unwind writable sret(%"struct.Ani::OpMemoryRequirements") align 8 %20, ptr noundef nonnull align 8 dereferenceable(24) %121, i32 noundef 1, i32 noundef 1)
          to label %125 unwind label %164

125:                                              ; preds = %116
  %126 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %20, i32 0, i32 0
  %127 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 0
  %128 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %126, ptr noundef nonnull align 8 dereferenceable(8) %127)
          to label %129 unwind label %164

129:                                              ; preds = %125
  %130 = load i64, ptr %128, align 8, !tbaa !15
  %131 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 0
  store i64 %130, ptr %131, align 8, !tbaa !17
  %132 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %20, i32 0, i32 3
  %133 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 3
  %134 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %132, ptr noundef nonnull align 8 dereferenceable(8) %133)
          to label %135 unwind label %164

135:                                              ; preds = %129
  %136 = load i64, ptr %134, align 8, !tbaa !15
  %137 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 3
  store i64 %136, ptr %137, align 8, !tbaa !19
  %138 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %20, i32 0, i32 2
  %139 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 2
  %140 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %138, ptr noundef nonnull align 8 dereferenceable(8) %139)
          to label %141 unwind label %164

141:                                              ; preds = %135
  %142 = load i64, ptr %140, align 8, !tbaa !15
  %143 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 2
  store i64 %142, ptr %143, align 8, !tbaa !20
  %144 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %20, i32 0, i32 1
  %145 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 1
  %146 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %144, ptr noundef nonnull align 8 dereferenceable(8) %145)
          to label %147 unwind label %164

147:                                              ; preds = %141
  %148 = load i64, ptr %146, align 8, !tbaa !15
  %149 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 1
  store i64 %148, ptr %149, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  %150 = getelementptr inbounds %"struct.Ani::UnionFemSpace", ptr %56, i32 0, i32 1
  %151 = load i32, ptr %19, align 4, !tbaa !9
  %152 = zext i32 %151 to i64
  %153 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %150, i64 noundef %152) #8
  %154 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3Ani12BaseFemSpaceELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %153) #8
  %155 = getelementptr inbounds %"struct.Ani::BaseFemSpace", ptr %154, i32 0, i32 1
  %156 = invoke noundef i32 @_ZNK3Ani4DofT6DofMap11NumDofOnTetEv(ptr noundef nonnull align 8 dereferenceable(16) %155)
          to label %157 unwind label %168

157:                                              ; preds = %147
  store i32 %156, ptr %21, align 4, !tbaa !9
  %158 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %18, ptr noundef nonnull align 4 dereferenceable(4) %21)
          to label %159 unwind label %168

159:                                              ; preds = %157
  %160 = load i32, ptr %158, align 4, !tbaa !9
  store i32 %160, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #8
  br label %161

161:                                              ; preds = %159
  %162 = load i32, ptr %19, align 4, !tbaa !9
  %163 = add i32 %162, 1
  store i32 %163, ptr %19, align 4, !tbaa !9
  br label %93, !llvm.loop !22

164:                                              ; preds = %141, %135, %129, %125, %116
  %165 = landingpad { ptr, i32 }
          cleanup
  %166 = extractvalue { ptr, i32 } %165, 0
  store ptr %166, ptr %9, align 8
  %167 = extractvalue { ptr, i32 } %165, 1
  store i32 %167, ptr %10, align 4
  br label %172

168:                                              ; preds = %157, %147
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %9, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  br label %172

172:                                              ; preds = %168, %164
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  br label %712

173:                                              ; preds = %99
  call void @llvm.lifetime.start.p0(i64 48, ptr %22) #8
  call void @_ZN3Ani12PlainMemoryXIdiEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %22) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #8
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %174

174:                                              ; preds = %238, %173
  %175 = load i32, ptr %23, align 4, !tbaa !9
  %176 = zext i32 %175 to i64
  %177 = getelementptr inbounds %"struct.Ani::UnionFemSpace", ptr %56, i32 0, i32 1
  %178 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %177) #8
  %179 = icmp ult i64 %176, %178
  br i1 %179, label %181, label %180

180:                                              ; preds = %174
  store i32 5, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  br label %242

181:                                              ; preds = %174
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  %182 = getelementptr inbounds %"struct.Ani::UnionFemSpace", ptr %56, i32 0, i32 1
  %183 = load i32, ptr %23, align 4, !tbaa !9
  %184 = zext i32 %183 to i64
  %185 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %182, i64 noundef %184) #8
  %186 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3Ani12BaseFemSpaceELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %185) #8
  %187 = getelementptr inbounds %"struct.Ani::BaseFemSpace", ptr %186, i32 0, i32 1
  %188 = invoke noundef i32 @_ZNK3Ani4DofT6DofMap11NumDofOnTetEv(ptr noundef nonnull align 8 dereferenceable(16) %187)
          to label %189 unwind label %195

189:                                              ; preds = %181
  store i32 %188, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #8
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %190

190:                                              ; preds = %230, %189
  %191 = load i32, ptr %26, align 4, !tbaa !9
  %192 = load i32, ptr %25, align 4, !tbaa !9
  %193 = icmp ult i32 %191, %192
  br i1 %193, label %199, label %194

194:                                              ; preds = %190
  store i32 8, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  br label %237

195:                                              ; preds = %181
  %196 = landingpad { ptr, i32 }
          cleanup
  %197 = extractvalue { ptr, i32 } %196, 0
  store ptr %197, ptr %9, align 8
  %198 = extractvalue { ptr, i32 } %196, 1
  store i32 %198, ptr %10, align 4
  br label %241

199:                                              ; preds = %190
  call void @llvm.lifetime.start.p0(i64 48, ptr %27) #8
  %200 = getelementptr inbounds %"struct.Ani::UnionFemSpace", ptr %56, i32 0, i32 1
  %201 = load i32, ptr %23, align 4, !tbaa !9
  %202 = zext i32 %201 to i64
  %203 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %200, i64 noundef %202) #8
  %204 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3Ani12BaseFemSpaceELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %203) #8
  %205 = load i32, ptr %26, align 4, !tbaa !9
  %206 = load i32, ptr %18, align 4, !tbaa !9
  %207 = load i32, ptr %4, align 4, !tbaa !9
  %208 = load ptr, ptr %204, align 8, !tbaa !13
  %209 = getelementptr inbounds ptr, ptr %208, i64 7
  %210 = load ptr, ptr %209, align 8
  invoke void %210(ptr dead_on_unwind writable sret(%"struct.Ani::PlainMemoryX") align 8 %27, ptr noundef nonnull align 8 dereferenceable(24) %204, i32 noundef %205, i32 noundef %206, i32 noundef %207)
          to label %211 unwind label %233

211:                                              ; preds = %199
  %212 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 3
  %213 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %27, i32 0, i32 3
  %214 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %212, ptr noundef nonnull align 8 dereferenceable(8) %213)
          to label %215 unwind label %233

215:                                              ; preds = %211
  %216 = load i64, ptr %214, align 8, !tbaa !15
  %217 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 3
  store i64 %216, ptr %217, align 8, !tbaa !24
  %218 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 4
  %219 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %27, i32 0, i32 4
  %220 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %218, ptr noundef nonnull align 8 dereferenceable(8) %219)
          to label %221 unwind label %233

221:                                              ; preds = %215
  %222 = load i64, ptr %220, align 8, !tbaa !15
  %223 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 4
  store i64 %222, ptr %223, align 8, !tbaa !26
  %224 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 5
  %225 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %27, i32 0, i32 5
  %226 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %224, ptr noundef nonnull align 8 dereferenceable(8) %225)
          to label %227 unwind label %233

227:                                              ; preds = %221
  %228 = load i64, ptr %226, align 8, !tbaa !15
  %229 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 5
  store i64 %228, ptr %229, align 8, !tbaa !27
  call void @llvm.lifetime.end.p0(i64 48, ptr %27) #8
  br label %230

230:                                              ; preds = %227
  %231 = load i32, ptr %26, align 4, !tbaa !9
  %232 = add i32 %231, 1
  store i32 %232, ptr %26, align 4, !tbaa !9
  br label %190, !llvm.loop !28

233:                                              ; preds = %221, %215, %211, %199
  %234 = landingpad { ptr, i32 }
          cleanup
  %235 = extractvalue { ptr, i32 } %234, 0
  store ptr %235, ptr %9, align 8
  %236 = extractvalue { ptr, i32 } %234, 1
  store i32 %236, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 48, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  br label %241

237:                                              ; preds = %194
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  br label %238

238:                                              ; preds = %237
  %239 = load i32, ptr %23, align 4, !tbaa !9
  %240 = add i32 %239, 1
  store i32 %240, ptr %23, align 4, !tbaa !9
  br label %174, !llvm.loop !29

241:                                              ; preds = %233, %195
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  br label %711

242:                                              ; preds = %180
  %243 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 2
  %244 = load i64, ptr %243, align 8, !tbaa !20
  %245 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 3
  %246 = load i64, ptr %245, align 8, !tbaa !19
  %247 = add i64 %246, 2
  %248 = mul i64 2, %247
  %249 = add i64 %244, %248
  %250 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 4
  %251 = load i64, ptr %250, align 8, !tbaa !26
  %252 = add i64 %251, %249
  store i64 %252, ptr %250, align 8, !tbaa !26
  %253 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 3
  %254 = load i64, ptr %253, align 8, !tbaa !19
  %255 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 5
  %256 = load i64, ptr %255, align 8, !tbaa !27
  %257 = add i64 %256, %254
  store i64 %257, ptr %255, align 8, !tbaa !27
  %258 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 1
  %259 = load i64, ptr %258, align 8, !tbaa !21
  %260 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 0
  %261 = load i64, ptr %260, align 8, !tbaa !17
  %262 = add i64 %259, %261
  %263 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 3
  %264 = load i64, ptr %263, align 8, !tbaa !24
  %265 = add i64 %264, %262
  store i64 %265, ptr %263, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  %266 = invoke noundef i64 @_ZNK3Ani12PlainMemoryXIdiE13enoughRawSizeEv(ptr noundef nonnull align 8 dereferenceable(48) %22)
          to label %267 unwind label %404

267:                                              ; preds = %242
  store i64 %266, ptr %28, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 24, ptr %29) #8
  %268 = load i64, ptr %28, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  invoke void @_ZNSt6vectorIcSaIcEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %268, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %269 unwind label %408

269:                                              ; preds = %267
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #8
  %270 = call noundef ptr @_ZNSt6vectorIcSaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #8
  %271 = load i64, ptr %28, align 8, !tbaa !15
  %272 = invoke noundef ptr @_ZN3Ani12PlainMemoryXIdiE15allocateFromRawEPvm(ptr noundef nonnull align 8 dereferenceable(48) %22, ptr noundef %270, i64 noundef %271)
          to label %273 unwind label %412

273:                                              ; preds = %269
  call void @llvm.lifetime.start.p0(i64 296, ptr %31) #8
  call void @_ZN3Ani10AniMemoryXIdiEC2Ev(ptr noundef nonnull align 8 dereferenceable(296) %31) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %32, ptr align 8 @__const._ZN3Ani13UnionFemSpace13orthogonalizeEj.xyl, i64 32, i1 false)
  %274 = getelementptr inbounds %"struct.Ani::AniMemory", ptr %31, i32 0, i32 0
  %275 = getelementptr inbounds [12 x double], ptr %14, i64 0, i64 0
  invoke void @_ZN3Ani9ArrayViewIdE4InitEPdm(ptr noundef nonnull align 8 dereferenceable(16) %274, ptr noundef %275, i64 noundef 12)
          to label %276 unwind label %416

276:                                              ; preds = %273
  %277 = getelementptr inbounds %"struct.Ani::AniMemory", ptr %31, i32 0, i32 1
  %278 = getelementptr inbounds [12 x double], ptr %14, i64 0, i64 0
  %279 = getelementptr inbounds double, ptr %278, i64 3
  invoke void @_ZN3Ani9ArrayViewIdE4InitEPdm(ptr noundef nonnull align 8 dereferenceable(16) %277, ptr noundef %279, i64 noundef 9)
          to label %280 unwind label %416

280:                                              ; preds = %276
  %281 = getelementptr inbounds %"struct.Ani::AniMemory", ptr %31, i32 0, i32 2
  invoke void @_ZN3Ani9ArrayViewIdE4InitEPdm(ptr noundef nonnull align 8 dereferenceable(16) %281, ptr noundef null, i64 noundef 3)
          to label %282 unwind label %416

282:                                              ; preds = %280
  %283 = getelementptr inbounds %"struct.Ani::AniMemory", ptr %31, i32 0, i32 3
  invoke void @_ZN3Ani9ArrayViewIdE4InitEPdm(ptr noundef nonnull align 8 dereferenceable(16) %283, ptr noundef %15, i64 noundef 1)
          to label %284 unwind label %416

284:                                              ; preds = %282
  %285 = getelementptr inbounds %"struct.Ani::AniMemory", ptr %31, i32 0, i32 10
  %286 = call noundef ptr @_ZNSt5arrayIdLm4EE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %32) #9
  invoke void @_ZN3Ani9ArrayViewIdE4InitEPdm(ptr noundef nonnull align 8 dereferenceable(16) %285, ptr noundef %286, i64 noundef 4)
          to label %287 unwind label %416

287:                                              ; preds = %284
  %288 = getelementptr inbounds %"struct.Ani::AniMemory", ptr %31, i32 0, i32 11
  invoke void @_ZN3Ani9ArrayViewIdE4InitEPdm(ptr noundef nonnull align 8 dereferenceable(16) %288, ptr noundef %15, i64 noundef 1)
          to label %289 unwind label %416

289:                                              ; preds = %287
  %290 = getelementptr inbounds %"struct.Ani::AniMemory", ptr %31, i32 0, i32 6
  %291 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 0
  %292 = load ptr, ptr %291, align 8, !tbaa !30
  %293 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 0
  %294 = load i64, ptr %293, align 8, !tbaa !17
  invoke void @_ZN3Ani9ArrayViewIdE4InitEPdm(ptr noundef nonnull align 8 dereferenceable(16) %290, ptr noundef %292, i64 noundef %294)
          to label %295 unwind label %416

295:                                              ; preds = %289
  %296 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 0
  %297 = load i64, ptr %296, align 8, !tbaa !17
  %298 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 0
  %299 = load ptr, ptr %298, align 8, !tbaa !30
  %300 = getelementptr inbounds double, ptr %299, i64 %297
  store ptr %300, ptr %298, align 8, !tbaa !30
  %301 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 0
  %302 = load i64, ptr %301, align 8, !tbaa !17
  %303 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 3
  %304 = load i64, ptr %303, align 8, !tbaa !24
  %305 = sub i64 %304, %302
  store i64 %305, ptr %303, align 8, !tbaa !24
  %306 = getelementptr inbounds %"struct.Ani::AniMemory", ptr %31, i32 0, i32 12
  %307 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 0
  %308 = load ptr, ptr %307, align 8, !tbaa !30
  %309 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 1
  %310 = load i64, ptr %309, align 8, !tbaa !21
  invoke void @_ZN3Ani9ArrayViewIdE4InitEPdm(ptr noundef nonnull align 8 dereferenceable(16) %306, ptr noundef %308, i64 noundef %310)
          to label %311 unwind label %416

311:                                              ; preds = %295
  %312 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 1
  %313 = load i64, ptr %312, align 8, !tbaa !21
  %314 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 0
  %315 = load ptr, ptr %314, align 8, !tbaa !30
  %316 = getelementptr inbounds double, ptr %315, i64 %313
  store ptr %316, ptr %314, align 8, !tbaa !30
  %317 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 1
  %318 = load i64, ptr %317, align 8, !tbaa !21
  %319 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 3
  %320 = load i64, ptr %319, align 8, !tbaa !24
  %321 = sub i64 %320, %318
  store i64 %321, ptr %319, align 8, !tbaa !24
  %322 = getelementptr inbounds %"struct.Ani::AniMemory", ptr %31, i32 0, i32 13
  %323 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 1
  %324 = load ptr, ptr %323, align 8, !tbaa !31
  %325 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 2
  %326 = load i64, ptr %325, align 8, !tbaa !20
  invoke void @_ZN3Ani9ArrayViewIiE4InitEPim(ptr noundef nonnull align 8 dereferenceable(16) %322, ptr noundef %324, i64 noundef %326)
          to label %327 unwind label %416

327:                                              ; preds = %311
  %328 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 2
  %329 = load i64, ptr %328, align 8, !tbaa !20
  %330 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 1
  %331 = load ptr, ptr %330, align 8, !tbaa !31
  %332 = getelementptr inbounds i32, ptr %331, i64 %329
  store ptr %332, ptr %330, align 8, !tbaa !31
  %333 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 2
  %334 = load i64, ptr %333, align 8, !tbaa !20
  %335 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 4
  %336 = load i64, ptr %335, align 8, !tbaa !26
  %337 = sub i64 %336, %334
  store i64 %337, ptr %335, align 8, !tbaa !26
  %338 = getelementptr inbounds %"struct.Ani::AniMemoryX", ptr %31, i32 0, i32 3
  %339 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 1
  %340 = load ptr, ptr %339, align 8, !tbaa !31
  %341 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 3
  %342 = load i64, ptr %341, align 8, !tbaa !19
  %343 = add i64 %342, 2
  invoke void @_ZN3Ani9ArrayViewIiE4InitEPim(ptr noundef nonnull align 8 dereferenceable(16) %338, ptr noundef %340, i64 noundef %343)
          to label %344 unwind label %416

344:                                              ; preds = %327
  %345 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 3
  %346 = load i64, ptr %345, align 8, !tbaa !19
  %347 = add i64 %346, 2
  %348 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 1
  %349 = load ptr, ptr %348, align 8, !tbaa !31
  %350 = getelementptr inbounds i32, ptr %349, i64 %347
  store ptr %350, ptr %348, align 8, !tbaa !31
  %351 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 3
  %352 = load i64, ptr %351, align 8, !tbaa !19
  %353 = add i64 %352, 2
  %354 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 4
  %355 = load i64, ptr %354, align 8, !tbaa !26
  %356 = sub i64 %355, %353
  store i64 %356, ptr %354, align 8, !tbaa !26
  %357 = getelementptr inbounds %"struct.Ani::AniMemoryX", ptr %31, i32 0, i32 2
  %358 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 1
  %359 = load ptr, ptr %358, align 8, !tbaa !31
  %360 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 3
  %361 = load i64, ptr %360, align 8, !tbaa !19
  %362 = add i64 %361, 2
  invoke void @_ZN3Ani9ArrayViewIiE4InitEPim(ptr noundef nonnull align 8 dereferenceable(16) %357, ptr noundef %359, i64 noundef %362)
          to label %363 unwind label %416

363:                                              ; preds = %344
  %364 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 3
  %365 = load i64, ptr %364, align 8, !tbaa !19
  %366 = add i64 %365, 2
  %367 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 1
  %368 = load ptr, ptr %367, align 8, !tbaa !31
  %369 = getelementptr inbounds i32, ptr %368, i64 %366
  store ptr %369, ptr %367, align 8, !tbaa !31
  %370 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 3
  %371 = load i64, ptr %370, align 8, !tbaa !19
  %372 = add i64 %371, 2
  %373 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 4
  %374 = load i64, ptr %373, align 8, !tbaa !26
  %375 = sub i64 %374, %372
  store i64 %375, ptr %373, align 8, !tbaa !26
  %376 = getelementptr inbounds %"struct.Ani::AniMemoryX", ptr %31, i32 0, i32 1
  %377 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 2
  %378 = load ptr, ptr %377, align 8, !tbaa !32
  %379 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 3
  %380 = load i64, ptr %379, align 8, !tbaa !19
  invoke void @_ZN3Ani9ArrayViewINS_11DenseMatrixIdEEE4InitEPS2_m(ptr noundef nonnull align 8 dereferenceable(16) %376, ptr noundef %378, i64 noundef %380)
          to label %381 unwind label %416

381:                                              ; preds = %363
  %382 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 3
  %383 = load i64, ptr %382, align 8, !tbaa !19
  %384 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 2
  %385 = load ptr, ptr %384, align 8, !tbaa !32
  %386 = getelementptr inbounds %"struct.Ani::DenseMatrix.9", ptr %385, i64 %383
  store ptr %386, ptr %384, align 8, !tbaa !32
  %387 = getelementptr inbounds %"struct.Ani::OpMemoryRequirements", ptr %17, i32 0, i32 3
  %388 = load i64, ptr %387, align 8, !tbaa !19
  %389 = getelementptr inbounds %"struct.Ani::PlainMemoryX", ptr %22, i32 0, i32 5
  %390 = load i64, ptr %389, align 8, !tbaa !27
  %391 = sub i64 %390, %388
  store i64 %391, ptr %389, align 8, !tbaa !27
  %392 = getelementptr inbounds %"struct.Ani::AniMemory", ptr %31, i32 0, i32 14
  store i64 1, ptr %392, align 8, !tbaa !33
  %393 = getelementptr inbounds %"struct.Ani::AniMemory", ptr %31, i32 0, i32 15
  store i64 1, ptr %393, align 8, !tbaa !37
  %394 = getelementptr inbounds %"struct.Ani::AniMemoryX", ptr %31, i32 0, i32 4
  store i64 0, ptr %394, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  %395 = getelementptr inbounds %class.anon.63, ptr %33, i32 0, i32 0
  store ptr %31, ptr %395, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %34) #8
  %396 = load i32, ptr %18, align 4, !tbaa !9
  %397 = zext i32 %396 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #8
  call void @_ZNSaIN3Ani9ArrayViewIdEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #8
  invoke void @_ZNSt6vectorIN3Ani9ArrayViewIdEESaIS2_EEC2EmRKS3_(ptr noundef nonnull align 8 dereferenceable(24) %34, i64 noundef %397, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %398 unwind label %420

398:                                              ; preds = %381
  call void @_ZNSt15__new_allocatorIN3Ani9ArrayViewIdEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #8
  store i32 0, ptr %36, align 4, !tbaa !9
  br label %399

399:                                              ; preds = %438, %398
  %400 = load i32, ptr %36, align 4, !tbaa !9
  %401 = load i32, ptr %18, align 4, !tbaa !9
  %402 = icmp ult i32 %400, %401
  br i1 %402, label %424, label %403

403:                                              ; preds = %399
  store i32 11, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  br label %445

404:                                              ; preds = %242
  %405 = landingpad { ptr, i32 }
          cleanup
  %406 = extractvalue { ptr, i32 } %405, 0
  store ptr %406, ptr %9, align 8
  %407 = extractvalue { ptr, i32 } %405, 1
  store i32 %407, ptr %10, align 4
  br label %710

408:                                              ; preds = %267
  %409 = landingpad { ptr, i32 }
          cleanup
  %410 = extractvalue { ptr, i32 } %409, 0
  store ptr %410, ptr %9, align 8
  %411 = extractvalue { ptr, i32 } %409, 1
  store i32 %411, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #8
  br label %709

412:                                              ; preds = %269
  %413 = landingpad { ptr, i32 }
          cleanup
  %414 = extractvalue { ptr, i32 } %413, 0
  store ptr %414, ptr %9, align 8
  %415 = extractvalue { ptr, i32 } %413, 1
  store i32 %415, ptr %10, align 4
  br label %708

416:                                              ; preds = %363, %344, %327, %311, %295, %289, %287, %284, %282, %280, %276, %273
  %417 = landingpad { ptr, i32 }
          cleanup
  %418 = extractvalue { ptr, i32 } %417, 0
  store ptr %418, ptr %9, align 8
  %419 = extractvalue { ptr, i32 } %417, 1
  store i32 %419, ptr %10, align 4
  br label %707

420:                                              ; preds = %381
  %421 = landingpad { ptr, i32 }
          cleanup
  %422 = extractvalue { ptr, i32 } %421, 0
  store ptr %422, ptr %9, align 8
  %423 = extractvalue { ptr, i32 } %421, 1
  store i32 %423, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIN3Ani9ArrayViewIdEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #8
  br label %706

424:                                              ; preds = %399
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #8
  %425 = getelementptr inbounds %"struct.Ani::UnionFemSpace", ptr %56, i32 0, i32 2
  %426 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %425) #8
  %427 = load i32, ptr %5, align 4, !tbaa !9
  %428 = load i32, ptr %36, align 4, !tbaa !9
  %429 = mul i32 %427, %428
  %430 = zext i32 %429 to i64
  %431 = getelementptr inbounds double, ptr %426, i64 %430
  %432 = load i32, ptr %5, align 4, !tbaa !9
  %433 = zext i32 %432 to i64
  invoke void @_ZN3Ani9ArrayViewIdEC2EPdm(ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef %431, i64 noundef %433)
          to label %434 unwind label %441

434:                                              ; preds = %424
  %435 = load i32, ptr %36, align 4, !tbaa !9
  %436 = zext i32 %435 to i64
  %437 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN3Ani9ArrayViewIdEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %34, i64 noundef %436) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %437, ptr align 8 %37, i64 16, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #8
  br label %438

438:                                              ; preds = %434
  %439 = load i32, ptr %36, align 4, !tbaa !9
  %440 = add i32 %439, 1
  store i32 %440, ptr %36, align 4, !tbaa !9
  br label %399, !llvm.loop !42

441:                                              ; preds = %424
  %442 = landingpad { ptr, i32 }
          cleanup
  %443 = extractvalue { ptr, i32 } %442, 0
  store ptr %443, ptr %9, align 8
  %444 = extractvalue { ptr, i32 } %442, 1
  store i32 %444, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  br label %705

445:                                              ; preds = %403
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #8
  store i32 0, ptr %38, align 4, !tbaa !9
  br label %446

446:                                              ; preds = %593, %445
  %447 = load i32, ptr %38, align 4, !tbaa !9
  %448 = zext i32 %447 to i64
  %449 = getelementptr inbounds %"struct.Ani::UnionFemSpace", ptr %56, i32 0, i32 1
  %450 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %449) #8
  %451 = icmp ult i64 %448, %450
  br i1 %451, label %453, label %452

452:                                              ; preds = %446
  store i32 14, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #8
  br label %597

453:                                              ; preds = %446
  store i32 0, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #8
  %454 = getelementptr inbounds %"struct.Ani::UnionFemSpace", ptr %56, i32 0, i32 1
  %455 = load i32, ptr %38, align 4, !tbaa !9
  %456 = zext i32 %455 to i64
  %457 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %454, i64 noundef %456) #8
  %458 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3Ani12BaseFemSpaceELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %457) #8
  %459 = getelementptr inbounds %"struct.Ani::BaseFemSpace", ptr %458, i32 0, i32 1
  %460 = invoke noundef i32 @_ZNK3Ani4DofT6DofMap11NumDofOnTetEv(ptr noundef nonnull align 8 dereferenceable(16) %459)
          to label %461 unwind label %467

461:                                              ; preds = %453
  store i32 %460, ptr %39, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #8
  store i32 0, ptr %40, align 4, !tbaa !9
  br label %462

462:                                              ; preds = %482, %461
  %463 = load i32, ptr %40, align 4, !tbaa !9
  %464 = load i32, ptr %39, align 4, !tbaa !9
  %465 = icmp ult i32 %463, %464
  br i1 %465, label %471, label %466

466:                                              ; preds = %462
  store i32 17, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #8
  br label %489

467:                                              ; preds = %453
  %468 = landingpad { ptr, i32 }
          cleanup
  %469 = extractvalue { ptr, i32 } %468, 0
  store ptr %469, ptr %9, align 8
  %470 = extractvalue { ptr, i32 } %468, 1
  store i32 %470, ptr %10, align 4
  br label %596

471:                                              ; preds = %462
  %472 = load i32, ptr %40, align 4, !tbaa !9
  %473 = load i32, ptr %12, align 4, !tbaa !9
  %474 = add i32 %472, %473
  %475 = zext i32 %474 to i64
  %476 = load i32, ptr %40, align 4, !tbaa !9
  %477 = load i32, ptr %12, align 4, !tbaa !9
  %478 = add i32 %476, %477
  %479 = zext i32 %478 to i64
  %480 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3Ani11DenseMatrixIdEclEmm(ptr noundef nonnull align 8 dereferenceable(32) %11, i64 noundef %475, i64 noundef %479)
          to label %481 unwind label %485

481:                                              ; preds = %471
  store double 1.000000e+00, ptr %480, align 8, !tbaa !11
  br label %482

482:                                              ; preds = %481
  %483 = load i32, ptr %40, align 4, !tbaa !9
  %484 = add i32 %483, 1
  store i32 %484, ptr %40, align 4, !tbaa !9
  br label %462, !llvm.loop !43

485:                                              ; preds = %471
  %486 = landingpad { ptr, i32 }
          cleanup
  %487 = extractvalue { ptr, i32 } %486, 0
  store ptr %487, ptr %9, align 8
  %488 = extractvalue { ptr, i32 } %486, 1
  store i32 %488, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #8
  br label %596

489:                                              ; preds = %466
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #8
  store i32 0, ptr %41, align 4, !tbaa !9
  br label %490

490:                                              ; preds = %585, %489
  %491 = load i32, ptr %41, align 4, !tbaa !9
  %492 = zext i32 %491 to i64
  %493 = getelementptr inbounds %"struct.Ani::UnionFemSpace", ptr %56, i32 0, i32 1
  %494 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %493) #8
  %495 = icmp ult i64 %492, %494
  br i1 %495, label %497, label %496

496:                                              ; preds = %490
  store i32 20, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #8
  br label %589

497:                                              ; preds = %490
  %498 = load i32, ptr %41, align 4, !tbaa !9
  %499 = load i32, ptr %38, align 4, !tbaa !9
  %500 = icmp eq i32 %498, %499
  br i1 %500, label %501, label %505

501:                                              ; preds = %497
  %502 = load i32, ptr %39, align 4, !tbaa !9
  %503 = load i32, ptr %13, align 4, !tbaa !9
  %504 = add i32 %503, %502
  store i32 %504, ptr %13, align 4, !tbaa !9
  br label %585

505:                                              ; preds = %497
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #8
  %506 = getelementptr inbounds %"struct.Ani::UnionFemSpace", ptr %56, i32 0, i32 1
  %507 = load i32, ptr %41, align 4, !tbaa !9
  %508 = zext i32 %507 to i64
  %509 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %506, i64 noundef %508) #8
  %510 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3Ani12BaseFemSpaceELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %509) #8
  %511 = getelementptr inbounds %"struct.Ani::BaseFemSpace", ptr %510, i32 0, i32 1
  %512 = invoke noundef i32 @_ZNK3Ani4DofT6DofMap11NumDofOnTetEv(ptr noundef nonnull align 8 dereferenceable(16) %511)
          to label %513 unwind label %526

513:                                              ; preds = %505
  store i32 %512, ptr %42, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %43) #8
  %514 = getelementptr inbounds %class.anon.69, ptr %43, i32 0, i32 0
  %515 = getelementptr inbounds %"struct.Ani::UnionFemSpace", ptr %56, i32 0, i32 1
  %516 = load i32, ptr %41, align 4, !tbaa !9
  %517 = zext i32 %516 to i64
  %518 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %515, i64 noundef %517) #8
  %519 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessIN3Ani12BaseFemSpaceELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %518) #8
  store ptr %519, ptr %514, align 8, !tbaa !5
  %520 = getelementptr inbounds %class.anon.69, ptr %43, i32 0, i32 1
  store ptr %33, ptr %520, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #8
  store i32 0, ptr %44, align 4, !tbaa !9
  br label %521

521:                                              ; preds = %577, %513
  %522 = load i32, ptr %44, align 4, !tbaa !9
  %523 = load i32, ptr %39, align 4, !tbaa !9
  %524 = icmp ult i32 %522, %523
  br i1 %524, label %530, label %525

525:                                              ; preds = %521
  store i32 23, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  br label %581

526:                                              ; preds = %505
  %527 = landingpad { ptr, i32 }
          cleanup
  %528 = extractvalue { ptr, i32 } %527, 0
  store ptr %528, ptr %9, align 8
  %529 = extractvalue { ptr, i32 } %527, 1
  store i32 %529, ptr %10, align 4
  br label %588

530:                                              ; preds = %521
  %531 = getelementptr inbounds %"struct.Ani::UnionFemSpace", ptr %56, i32 0, i32 1
  %532 = load i32, ptr %38, align 4, !tbaa !9
  %533 = zext i32 %532 to i64
  %534 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %531, i64 noundef %533) #8
  %535 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3Ani12BaseFemSpaceELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %534) #8
  %536 = call noundef ptr @_ZNSt6vectorIN3Ani9ArrayViewIdEESaIS2_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %34) #8
  %537 = load i32, ptr %44, align 4, !tbaa !9
  %538 = load i32, ptr %42, align 4, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %45, ptr align 8 %22, i64 48, i1 false), !tbaa.struct !44
  %539 = load i32, ptr %4, align 4, !tbaa !9
  invoke void @"_ZNK3Ani12BaseFemSpace16interpolateOnDOFIZNS_13UnionFemSpace13orthogonalizeEjE3$_2TnNSt9enable_ifIXntsr3std7is_sameIT_PFiRKSt5arrayIdLm3EEPdjPvEEE5valueEbE4typeELb1EEEvRKNS_5TetraIKdEERKS5_PNS_9ArrayViewIdEEiiNS_12PlainMemoryXIdiEESB_j"(ptr noundef nonnull align 8 dereferenceable(24) %535, ptr noundef nonnull align 8 dereferenceable(132) %16, ptr noundef nonnull align 8 dereferenceable(16) %43, ptr noundef %536, i32 noundef %537, i32 noundef %538, ptr noundef byval(%"struct.Ani::PlainMemoryX") align 8 %45, ptr noundef null, i32 noundef %539)
          to label %540 unwind label %546

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

541:                                              ; preds = %569, %540
  %542 = load i32, ptr %46, align 4, !tbaa !9
  %543 = load i32, ptr %42, align 4, !tbaa !9
  %544 = icmp ult i32 %542, %543
  br i1 %544, label %550, label %545

545:                                              ; preds = %541
  store i32 26, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #8
  br label %576

546:                                              ; preds = %530
  %547 = landingpad { ptr, i32 }
          cleanup
  %548 = extractvalue { ptr, i32 } %547, 0
  store ptr %548, ptr %9, align 8
  %549 = extractvalue { ptr, i32 } %547, 1
  store i32 %549, ptr %10, align 4
  br label %580

550:                                              ; preds = %541
  %551 = load i32, ptr %46, align 4, !tbaa !9
  %552 = zext i32 %551 to i64
  %553 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN3Ani9ArrayViewIdEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %34, i64 noundef %552) #8
  %554 = load i32, ptr %44, align 4, !tbaa !9
  %555 = zext i32 %554 to i64
  %556 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3Ani9ArrayViewIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %553, i64 noundef %555)
          to label %557 unwind label %572

557:                                              ; preds = %550
  %558 = load double, ptr %556, align 8, !tbaa !11
  %559 = load i32, ptr %12, align 4, !tbaa !9
  %560 = load i32, ptr %44, align 4, !tbaa !9
  %561 = add i32 %559, %560
  %562 = zext i32 %561 to i64
  %563 = load i32, ptr %13, align 4, !tbaa !9
  %564 = load i32, ptr %46, align 4, !tbaa !9
  %565 = add i32 %563, %564
  %566 = zext i32 %565 to i64
  %567 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3Ani11DenseMatrixIdEclEmm(ptr noundef nonnull align 8 dereferenceable(32) %11, i64 noundef %562, i64 noundef %566)
          to label %568 unwind label %572

568:                                              ; preds = %557
  store double %558, ptr %567, align 8, !tbaa !11
  br label %569

569:                                              ; preds = %568
  %570 = load i32, ptr %46, align 4, !tbaa !9
  %571 = add i32 %570, 1
  store i32 %571, ptr %46, align 4, !tbaa !9
  br label %541, !llvm.loop !45

572:                                              ; preds = %557, %550
  %573 = landingpad { ptr, i32 }
          cleanup
  %574 = extractvalue { ptr, i32 } %573, 0
  store ptr %574, ptr %9, align 8
  %575 = extractvalue { ptr, i32 } %573, 1
  store i32 %575, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #8
  br label %580

576:                                              ; preds = %545
  br label %577

577:                                              ; preds = %576
  %578 = load i32, ptr %44, align 4, !tbaa !9
  %579 = add i32 %578, 1
  store i32 %579, ptr %44, align 4, !tbaa !9
  br label %521, !llvm.loop !46

580:                                              ; preds = %572, %546
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #8
  br label %588

581:                                              ; preds = %525
  %582 = load i32, ptr %42, align 4, !tbaa !9
  %583 = load i32, ptr %13, align 4, !tbaa !9
  %584 = add i32 %583, %582
  store i32 %584, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #8
  br label %585

585:                                              ; preds = %581, %501
  %586 = load i32, ptr %41, align 4, !tbaa !9
  %587 = add i32 %586, 1
  store i32 %587, ptr %41, align 4, !tbaa !9
  br label %490, !llvm.loop !47

588:                                              ; preds = %580, %526
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #8
  br label %596

589:                                              ; preds = %496
  %590 = load i32, ptr %39, align 4, !tbaa !9
  %591 = load i32, ptr %12, align 4, !tbaa !9
  %592 = add i32 %591, %590
  store i32 %592, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #8
  br label %593

593:                                              ; preds = %589
  %594 = load i32, ptr %38, align 4, !tbaa !9
  %595 = add i32 %594, 1
  store i32 %595, ptr %38, align 4, !tbaa !9
  br label %446, !llvm.loop !48

596:                                              ; preds = %588, %485, %467
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #8
  br label %705

597:                                              ; preds = %452
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #8
  %598 = getelementptr inbounds %"struct.Ani::UnionFemSpace", ptr %56, i32 0, i32 2
  %599 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %598) #8
  %600 = load i32, ptr %5, align 4, !tbaa !9
  %601 = zext i32 %600 to i64
  %602 = load i32, ptr %5, align 4, !tbaa !9
  %603 = zext i32 %602 to i64
  invoke void @_ZN3Ani11DenseMatrixIdEC2EPdmm(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef %599, i64 noundef %601, i64 noundef %603)
          to label %604 unwind label %628

604:                                              ; preds = %597
  call void @llvm.lifetime.start.p0(i64 24, ptr %48) #8
  %605 = load i32, ptr %5, align 4, !tbaa !9
  %606 = mul i32 2, %605
  %607 = load i32, ptr %5, align 4, !tbaa !9
  %608 = mul i32 %606, %607
  %609 = zext i32 %608 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #8
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #8
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %48, i64 noundef %609, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %610 unwind label %632

610:                                              ; preds = %604
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %50) #8
  %611 = load i32, ptr %5, align 4, !tbaa !9
  %612 = mul i32 2, %611
  %613 = zext i32 %612 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %50, i64 noundef %613, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %614 unwind label %636

614:                                              ; preds = %610
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #8
  %615 = getelementptr inbounds %"struct.Ani::DenseMatrix.9", ptr %11, i32 0, i32 0
  %616 = load ptr, ptr %615, align 8, !tbaa !49
  %617 = getelementptr inbounds %"struct.Ani::DenseMatrix.9", ptr %47, i32 0, i32 0
  %618 = load ptr, ptr %617, align 8, !tbaa !49
  %619 = load i32, ptr %5, align 4, !tbaa !9
  %620 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %48) #8
  %621 = call noundef ptr @_ZNSt6vectorIiSaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %50) #8
  invoke void @_ZN3Ani17fullPivLU_inverseIdEEvPKT_PS1_iS4_Pi(ptr noundef %616, ptr noundef %618, i32 noundef %619, ptr noundef %620, ptr noundef %621)
          to label %622 unwind label %640

622:                                              ; preds = %614
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %50) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %48) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #8
  store i32 0, ptr %52, align 4, !tbaa !9
  br label %623

623:                                              ; preds = %695, %622
  %624 = load i32, ptr %52, align 4, !tbaa !9
  %625 = load i32, ptr %5, align 4, !tbaa !9
  %626 = icmp ult i32 %624, %625
  br i1 %626, label %646, label %627

627:                                              ; preds = %623
  store i32 29, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #8
  br label %702

628:                                              ; preds = %597
  %629 = landingpad { ptr, i32 }
          cleanup
  %630 = extractvalue { ptr, i32 } %629, 0
  store ptr %630, ptr %9, align 8
  %631 = extractvalue { ptr, i32 } %629, 1
  store i32 %631, ptr %10, align 4
  br label %704

632:                                              ; preds = %604
  %633 = landingpad { ptr, i32 }
          cleanup
  %634 = extractvalue { ptr, i32 } %633, 0
  store ptr %634, ptr %9, align 8
  %635 = extractvalue { ptr, i32 } %633, 1
  store i32 %635, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #8
  br label %645

636:                                              ; preds = %610
  %637 = landingpad { ptr, i32 }
          cleanup
  %638 = extractvalue { ptr, i32 } %637, 0
  store ptr %638, ptr %9, align 8
  %639 = extractvalue { ptr, i32 } %637, 1
  store i32 %639, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #8
  br label %644

640:                                              ; preds = %614
  %641 = landingpad { ptr, i32 }
          cleanup
  %642 = extractvalue { ptr, i32 } %641, 0
  store ptr %642, ptr %9, align 8
  %643 = extractvalue { ptr, i32 } %641, 1
  store i32 %643, ptr %10, align 4
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #8
  br label %644

644:                                              ; preds = %640, %636
  call void @llvm.lifetime.end.p0(i64 24, ptr %50) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #8
  br label %645

645:                                              ; preds = %644, %632
  call void @llvm.lifetime.end.p0(i64 24, ptr %48) #8
  br label %704

646:                                              ; preds = %623
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #8
  %647 = getelementptr inbounds %"struct.Ani::DenseMatrix.9", ptr %47, i32 0, i32 0
  %648 = load ptr, ptr %647, align 8, !tbaa !49
  %649 = load i32, ptr %52, align 4, !tbaa !9
  %650 = load i32, ptr %5, align 4, !tbaa !9
  %651 = mul i32 %649, %650
  %652 = zext i32 %651 to i64
  %653 = getelementptr inbounds double, ptr %648, i64 %652
  %654 = getelementptr inbounds %"struct.Ani::DenseMatrix.9", ptr %47, i32 0, i32 0
  %655 = load ptr, ptr %654, align 8, !tbaa !49
  %656 = load i32, ptr %52, align 4, !tbaa !9
  %657 = add i32 %656, 1
  %658 = load i32, ptr %5, align 4, !tbaa !9
  %659 = mul i32 %657, %658
  %660 = zext i32 %659 to i64
  %661 = getelementptr inbounds double, ptr %655, i64 %660
  %662 = invoke noundef ptr @"_ZSt11max_elementIPdZN3Ani13UnionFemSpace13orthogonalizeEjE3$_0ET_S4_S4_T0_"(ptr noundef %653, ptr noundef %661)
          to label %663 unwind label %698

663:                                              ; preds = %646
  store ptr %662, ptr %53, align 8, !tbaa !5
  %664 = getelementptr inbounds %"struct.Ani::DenseMatrix.9", ptr %47, i32 0, i32 0
  %665 = load ptr, ptr %664, align 8, !tbaa !49
  %666 = load i32, ptr %52, align 4, !tbaa !9
  %667 = load i32, ptr %5, align 4, !tbaa !9
  %668 = mul i32 %666, %667
  %669 = zext i32 %668 to i64
  %670 = getelementptr inbounds double, ptr %665, i64 %669
  %671 = getelementptr inbounds %"struct.Ani::DenseMatrix.9", ptr %47, i32 0, i32 0
  %672 = load ptr, ptr %671, align 8, !tbaa !49
  %673 = load i32, ptr %52, align 4, !tbaa !9
  %674 = add i32 %673, 1
  %675 = load i32, ptr %5, align 4, !tbaa !9
  %676 = mul i32 %674, %675
  %677 = zext i32 %676 to i64
  %678 = getelementptr inbounds double, ptr %672, i64 %677
  %679 = getelementptr inbounds %"struct.Ani::DenseMatrix.9", ptr %47, i32 0, i32 0
  %680 = load ptr, ptr %679, align 8, !tbaa !49
  %681 = load i32, ptr %52, align 4, !tbaa !9
  %682 = load i32, ptr %5, align 4, !tbaa !9
  %683 = mul i32 %681, %682
  %684 = zext i32 %683 to i64
  %685 = getelementptr inbounds double, ptr %680, i64 %684
  %686 = getelementptr inbounds %class.anon.76, ptr %55, i32 0, i32 0
  %687 = load ptr, ptr %53, align 8, !tbaa !5
  %688 = load double, ptr %687, align 8, !tbaa !11
  %689 = invoke noundef double @_ZSt3absd(double noundef %688)
          to label %690 unwind label %698

690:                                              ; preds = %663
  store double %689, ptr %686, align 8, !tbaa !51
  %691 = getelementptr inbounds %class.anon.76, ptr %55, i32 0, i32 0
  %692 = load double, ptr %691, align 8
  %693 = invoke noundef ptr @"_ZSt9transformIPdS0_ZN3Ani13UnionFemSpace13orthogonalizeEjE3$_3ET0_T_S5_S4_T1_"(ptr noundef %670, ptr noundef %678, ptr noundef %685, double %692)
          to label %694 unwind label %698

694:                                              ; preds = %690
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  br label %695

695:                                              ; preds = %694
  %696 = load i32, ptr %52, align 4, !tbaa !9
  %697 = add i32 %696, 1
  store i32 %697, ptr %52, align 4, !tbaa !9
  br label %623, !llvm.loop !53

698:                                              ; preds = %690, %663, %646
  %699 = landingpad { ptr, i32 }
          cleanup
  %700 = extractvalue { ptr, i32 } %699, 0
  store ptr %700, ptr %9, align 8
  %701 = extractvalue { ptr, i32 } %699, 1
  store i32 %701, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #8
  br label %704

702:                                              ; preds = %627
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #8
  call void @_ZNSt6vectorIN3Ani9ArrayViewIdEESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 296, ptr %31) #8
  call void @_ZNSt6vectorIcSaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 136, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 96, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #8
  br label %703

703:                                              ; preds = %702, %60
  ret void

704:                                              ; preds = %698, %645, %628
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #8
  br label %705

705:                                              ; preds = %704, %596, %441
  call void @_ZNSt6vectorIN3Ani9ArrayViewIdEESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #8
  br label %706

706:                                              ; preds = %705, %420
  call void @llvm.lifetime.end.p0(i64 24, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  br label %707

707:                                              ; preds = %706, %416
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 296, ptr %31) #8
  br label %708

708:                                              ; preds = %707, %412
  call void @_ZNSt6vectorIcSaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #8
  br label %709

709:                                              ; preds = %708, %408
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #8
  br label %710

710:                                              ; preds = %709, %404
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  br label %711

711:                                              ; preds = %710, %241
  call void @llvm.lifetime.end.p0(i64 48, ptr %22) #8
  br label %712

712:                                              ; preds = %711, %172
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #8
  br label %713

713:                                              ; preds = %712, %112
  call void @llvm.lifetime.end.p0(i64 136, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 96, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  br label %714

714:                                              ; preds = %713, %108
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #8
  br label %715

715:                                              ; preds = %714, %104
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  br label %716

716:                                              ; preds = %715, %100
  call void @llvm.lifetime.end.p0(i64 24, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #8
  br label %717

717:                                              ; preds = %716
  %718 = load ptr, ptr %9, align 8
  %719 = load i32, ptr %10, align 4
  %720 = insertvalue { ptr, i32 } poison, ptr %718, 0
  %721 = insertvalue { ptr, i32 } %720, i32 %719, 1
  resume { ptr, i32 } %721
}

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

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3Ani5TetraIKdEC2EPS1_S3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(132), ptr noundef, ptr noundef, ptr noundef, ptr noundef) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNK3Ani12PlainMemoryXIdiE13enoughRawSizeEv(ptr noundef nonnull align 8 dereferenceable(48)) #5 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN3Ani12PlainMemoryXIdiE15allocateFromRawEPvm(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef, i64 noundef) #5 align 2

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

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

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

; Function Attrs: mustprogress nounwind willreturn memory(none) uwtable
declare dso_local noundef ptr @_ZNSt5arrayIdLm4EE4dataEv(ptr noundef nonnull align 8 dereferenceable(32)) #7 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZNK3Ani12BaseFemSpace16interpolateOnDOFIZNS_13UnionFemSpace13orthogonalizeEjE3$_2TnNSt9enable_ifIXntsr3std7is_sameIT_PFiRKSt5arrayIdLm3EEPdjPvEEE5valueEbE4typeELb1EEEvRKNS_5TetraIKdEERKS5_PNS_9ArrayViewIdEEiiNS_12PlainMemoryXIdiEESB_j"(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(132), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, i32 noundef, i32 noundef, ptr noundef byval(%"struct.Ani::PlainMemoryX") align 8, ptr noundef, i32 noundef) #3 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3Ani17fullPivLU_inverseIdEEvPKT_PS1_iS4_Pi(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) #3

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef ptr @"_ZSt11max_elementIPdZN3Ani13UnionFemSpace13orthogonalizeEjE3$_0ET_S4_S4_T0_"(ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @"_ZSt9transformIPdS0_ZN3Ani13UnionFemSpace13orthogonalizeEjE3$_3ET0_T_S5_S4_T1_"(ptr noundef, ptr noundef, ptr noundef, double) #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3absd(double noundef) #2

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"vtable pointer", !8, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"long", !7, i64 0}
!17 = !{!18, !16, i64 0}
!18 = !{!"_ZTSN3Ani20OpMemoryRequirementsE", !16, i64 0, !16, i64 8, !16, i64 16, !16, i64 24}
!19 = !{!18, !16, i64 24}
!20 = !{!18, !16, i64 16}
!21 = !{!18, !16, i64 8}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}
!24 = !{!25, !16, i64 24}
!25 = !{!"_ZTSN3Ani12PlainMemoryXIdiEE", !6, i64 0, !6, i64 8, !6, i64 16, !16, i64 24, !16, i64 32, !16, i64 40}
!26 = !{!25, !16, i64 32}
!27 = !{!25, !16, i64 40}
!28 = distinct !{!28, !23}
!29 = distinct !{!29, !23}
!30 = !{!25, !6, i64 0}
!31 = !{!25, !6, i64 8}
!32 = !{!25, !6, i64 16}
!33 = !{!34, !16, i64 224}
!34 = !{!"_ZTSN3Ani9AniMemoryIdiEE", !35, i64 0, !35, i64 16, !35, i64 32, !35, i64 48, !35, i64 64, !35, i64 80, !35, i64 96, !35, i64 112, !35, i64 128, !35, i64 144, !35, i64 160, !35, i64 176, !35, i64 192, !36, i64 208, !16, i64 224, !16, i64 232}
!35 = !{!"_ZTSN3Ani9ArrayViewIdEE", !6, i64 0, !16, i64 8}
!36 = !{!"_ZTSN3Ani9ArrayViewIiEE", !6, i64 0, !16, i64 8}
!37 = !{!34, !16, i64 232}
!38 = !{!39, !16, i64 288}
!39 = !{!"_ZTSN3Ani10AniMemoryXIdiEE", !34, i64 0, !40, i64 240, !36, i64 256, !36, i64 272, !16, i64 288}
!40 = !{!"_ZTSN3Ani9ArrayViewINS_11DenseMatrixIdEEEE", !6, i64 0, !16, i64 8}
!41 = !{i64 0, i64 8, !5, i64 8, i64 8, !15}
!42 = distinct !{!42, !23}
!43 = distinct !{!43, !23}
!44 = !{i64 0, i64 8, !5, i64 8, i64 8, !5, i64 16, i64 8, !5, i64 24, i64 8, !15, i64 32, i64 8, !15, i64 40, i64 8, !15}
!45 = distinct !{!45, !23}
!46 = distinct !{!46, !23}
!47 = distinct !{!47, !23}
!48 = distinct !{!48, !23}
!49 = !{!50, !6, i64 0}
!50 = !{!"_ZTSN3Ani11DenseMatrixIdEE", !6, i64 0, !16, i64 8, !16, i64 16, !16, i64 24}
!51 = !{!52, !12, i64 0}
!52 = !{!"_ZTSZN3Ani13UnionFemSpace13orthogonalizeEjE3$_3", !12, i64 0}
!53 = distinct !{!53, !23}


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

%"struct.std::array.62" = type { [4 x double] }
%"class.std::vector.55" = type { %"struct.std::_Vector_base.56" }
%"struct.std::_Vector_base.56" = 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::allocator.57" = type { i8 }
%"struct.Ani::DenseMatrix.9" = type { ptr, i64, i64, i64 }
%"struct.Ani::Tetra" = type { %"struct.Ani::Tetras.base", [4 x i8] }
%"struct.Ani::Tetras.base" = type { %"struct.Ani::TetrasCommon.base" }
%"struct.Ani::TetrasCommon.base" = type <{ %"struct.Ani::DenseMatrix", %"struct.Ani::DenseMatrix", %"struct.Ani::DenseMatrix", %"struct.Ani::DenseMatrix", i32 }>
%"struct.Ani::DenseMatrix" = type { ptr, i64, i64, i64 }
%"struct.Ani::OpMemoryRequirements" = type { i64, i64, i64, i64 }
%"struct.Ani::PlainMemoryX" = type { ptr, ptr, ptr, i64, i64, i64 }
%"class.std::vector.60" = type { %"struct.std::_Vector_base.61" }
%"struct.std::_Vector_base.61" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.24" = type { i8 }
%"struct.Ani::AniMemoryX" = type { %"struct.Ani::AniMemory", %"struct.Ani::ArrayView.1", %"struct.Ani::ArrayView.0", %"struct.Ani::ArrayView.0", i64 }
%"struct.Ani::AniMemory" = type { %"struct.Ani::ArrayView", %"struct.Ani::ArrayView", %"struct.Ani::ArrayView", %"struct.Ani::ArrayView", %"struct.Ani::ArrayView", %"struct.Ani::ArrayView", %"struct.Ani::ArrayView", %"struct.Ani::ArrayView", %"struct.Ani::ArrayView", %"struct.Ani::ArrayView", %"struct.Ani::ArrayView", %"struct.Ani::ArrayView", %"struct.Ani::ArrayView", %"struct.Ani::ArrayView.0", i64, i64 }
%"struct.Ani::ArrayView" = type { ptr, i64 }
%"struct.Ani::ArrayView.1" = type { ptr, i64 }
%"struct.Ani::ArrayView.0" = type { ptr, i64 }
%class.anon.63 = type { ptr }
%"class.std::vector.64" = type { %"struct.std::_Vector_base.65" }
%"struct.std::_Vector_base.65" = type { %"struct.std::_Vector_base<Ani::ArrayView<>, std::allocator<Ani::ArrayView<>>>::_Vector_impl" }
%"struct.std::_Vector_base<Ani::ArrayView<>, std::allocator<Ani::ArrayView<>>>::_Vector_impl" = type { %"struct.std::_Vector_base<Ani::ArrayView<>, std::allocator<Ani::ArrayView<>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Ani::ArrayView<>, std::allocator<Ani::ArrayView<>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.66" = type { i8 }
%class.anon.69 = type { ptr, ptr }
%"class.std::vector.70" = type { %"struct.std::_Vector_base.71" }
%"struct.std::_Vector_base.71" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.72" = type { i8 }

@__const._ZN3Ani13UnionFemSpace13orthogonalizeEj.xyl = external hidden unnamed_addr constant %"struct.std::array.62", align 8

; 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 nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1

declare i32 @__gxx_personality_v0(...)

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZNK3Ani4DofT6DofMap11NumDofOnTetEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 align 2

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3Ani13UnionFemSpace13orthogonalizeEj(ptr noundef nonnull align 8 dereferenceable(72) %0, i32 noundef %1) local_unnamed_addr #5 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::vector.55", align 8
  %4 = alloca double, align 8
  %5 = alloca %"class.std::allocator.57", align 1
  %6 = alloca %"struct.Ani::DenseMatrix.9", align 8
  %7 = alloca [12 x double], align 16
  %8 = alloca double, align 8
  %9 = alloca %"struct.Ani::Tetra", align 8
  %10 = alloca %"struct.Ani::OpMemoryRequirements", align 8
  %11 = alloca i32, align 4
  %12 = alloca %"struct.Ani::OpMemoryRequirements", align 8
  %13 = alloca i32, align 4
  %14 = alloca %"struct.Ani::PlainMemoryX", align 8
  %15 = alloca %"struct.Ani::PlainMemoryX", align 8
  %16 = alloca %"class.std::vector.60", align 8
  %17 = alloca %"class.std::allocator.24", align 1
  %18 = alloca %"struct.Ani::AniMemoryX", align 8
  %19 = alloca %"struct.std::array.62", align 8
  %20 = alloca %class.anon.63, align 8
  %21 = alloca %"class.std::vector.64", align 8
  %22 = alloca %"class.std::allocator.66", align 1
  %23 = alloca %"struct.Ani::ArrayView", align 8
  %24 = alloca %class.anon.69, align 8
  %25 = alloca %"struct.Ani::DenseMatrix.9", align 8
  %26 = alloca %"class.std::vector.55", align 8
  %27 = alloca %"class.std::allocator.57", align 1
  %28 = alloca %"class.std::vector.70", align 8
  %29 = alloca %"class.std::allocator.72", align 1
  %30 = getelementptr inbounds i8, ptr %0, i64 24
  %31 = tail call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %30) #8
  %32 = icmp ult i64 %31, 2
  br i1 %32, label %349, label %33

33:                                               ; preds = %2
  %34 = getelementptr inbounds i8, ptr %0, i64 8
  %35 = tail call noundef i32 @_ZNK3Ani4DofT6DofMap11NumDofOnTetEv(ptr noundef nonnull align 8 dereferenceable(16) %34)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #8
  %36 = mul i32 %35, %35
  %37 = zext i32 %36 to i64
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #8
  store double 0.000000e+00, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #8
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #8
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKdRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %37, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %38 unwind label %63

38:                                               ; preds = %33
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  %39 = getelementptr inbounds i8, ptr %0, i64 48
  invoke void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %39, i64 noundef %37)
          to label %40 unwind label %65

40:                                               ; preds = %38
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #8
  %41 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #8
  %42 = zext i32 %35 to i64
  call void @_ZN3Ani11DenseMatrixIdEC2EPdmm(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef %41, i64 noundef %42, i64 noundef %42)
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %7) #8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(96) %7, i8 0, i64 96, i1 false)
  %43 = getelementptr inbounds i8, ptr %7, i64 24
  store double 1.000000e+00, ptr %43, align 8
  %44 = getelementptr inbounds i8, ptr %7, i64 56
  store double 1.000000e+00, ptr %44, align 8
  %45 = getelementptr inbounds i8, ptr %7, i64 88
  store double 1.000000e+00, ptr %45, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  store double 1.000000e+00, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %9) #8
  %46 = getelementptr inbounds i8, ptr %7, i64 48
  %47 = getelementptr inbounds i8, ptr %7, i64 72
  invoke void @_ZN3Ani5TetraIKdEC2EPS1_S3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(132) %9, ptr noundef nonnull %7, ptr noundef nonnull %43, ptr noundef nonnull %46, ptr noundef nonnull %47)
          to label %48 unwind label %67

48:                                               ; preds = %40
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #8
  call void @_ZN3Ani20OpMemoryRequirementsC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #8
  store i32 0, ptr %11, align 4, !tbaa !9
  %49 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %30) #8
  %.not = icmp eq i64 %49, 0
  br i1 %.not, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %48
  %50 = getelementptr inbounds i8, ptr %12, i64 24
  %51 = getelementptr inbounds i8, ptr %10, i64 24
  %52 = getelementptr inbounds i8, ptr %12, i64 16
  %53 = getelementptr inbounds i8, ptr %10, i64 16
  %54 = getelementptr inbounds i8, ptr %12, i64 8
  %55 = getelementptr inbounds i8, ptr %10, i64 8
  br label %69

._crit_edge:                                      ; preds = %89, %48
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %14) #8
  call void @_ZN3Ani12PlainMemoryXIdiEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %14) #8
  %56 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %30) #8
  %.not191 = icmp eq i64 %56, 0
  br i1 %.not191, label %._crit_edge157, label %.lr.ph156

.lr.ph156:                                        ; preds = %._crit_edge
  %57 = getelementptr inbounds i8, ptr %14, i64 24
  %58 = getelementptr inbounds i8, ptr %15, i64 24
  %59 = getelementptr inbounds i8, ptr %14, i64 32
  %60 = getelementptr inbounds i8, ptr %15, i64 32
  %61 = getelementptr inbounds i8, ptr %14, i64 40
  %62 = getelementptr inbounds i8, ptr %15, i64 40
  br label %122

63:                                               ; preds = %33
  %64 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  br label %359

65:                                               ; preds = %38
  %66 = landingpad { ptr, i32 }
          cleanup
  br label %358

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

69:                                               ; preds = %.lr.ph, %89
  %70 = phi i64 [ 0, %.lr.ph ], [ %93, %89 ]
  %.0114150 = phi i32 [ 0, %.lr.ph ], [ %92, %89 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #8
  %71 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %70) #8
  %72 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3Ani12BaseFemSpaceELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  %73 = load ptr, ptr %72, align 8, !tbaa !11
  %74 = getelementptr inbounds i8, ptr %73, i64 72
  %75 = load ptr, ptr %74, align 8
  invoke void %75(ptr dead_on_unwind nonnull writable sret(%"struct.Ani::OpMemoryRequirements") align 8 %12, ptr noundef nonnull align 8 dereferenceable(24) %72, i32 noundef 1, i32 noundef 1)
          to label %76 unwind label %96

76:                                               ; preds = %69
  %77 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %10)
  %78 = load i64, ptr %77, align 8, !tbaa !13
  store i64 %78, ptr %10, align 8, !tbaa !15
  %79 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 8 dereferenceable(8) %51)
  %80 = load i64, ptr %79, align 8, !tbaa !13
  store i64 %80, ptr %51, align 8, !tbaa !17
  %81 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %53)
  %82 = load i64, ptr %81, align 8, !tbaa !13
  store i64 %82, ptr %53, align 8, !tbaa !18
  %83 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(8) %55)
  %84 = load i64, ptr %83, align 8, !tbaa !13
  store i64 %84, ptr %55, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #8
  %85 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %70) #8
  %86 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3Ani12BaseFemSpaceELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %85) #8
  %87 = getelementptr inbounds i8, ptr %86, i64 8
  %88 = invoke noundef i32 @_ZNK3Ani4DofT6DofMap11NumDofOnTetEv(ptr noundef nonnull align 8 dereferenceable(16) %87)
          to label %89 unwind label %98

89:                                               ; preds = %76
  store i32 %88, ptr %13, align 4, !tbaa !9
  %90 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 4 dereferenceable(4) %13)
  %91 = load i32, ptr %90, align 4, !tbaa !9
  store i32 %91, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #8
  %92 = add i32 %.0114150, 1
  %93 = zext i32 %92 to i64
  %94 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %30) #8
  %95 = icmp ugt i64 %94, %93
  br i1 %95, label %69, label %._crit_edge, !llvm.loop !20

96:                                               ; preds = %69
  %97 = landingpad { ptr, i32 }
          cleanup
  br label %100

98:                                               ; preds = %76
  %99 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #8
  br label %100

100:                                              ; preds = %98, %96
  %.pn139 = phi { ptr, i32 } [ %99, %98 ], [ %97, %96 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #8
  br label %356

._crit_edge157:                                   ; preds = %._crit_edge153, %._crit_edge
  %101 = getelementptr inbounds i8, ptr %10, i64 16
  %102 = load i64, ptr %101, align 8, !tbaa !18
  %103 = getelementptr inbounds i8, ptr %10, i64 24
  %104 = load i64, ptr %103, align 8, !tbaa !17
  %105 = shl i64 %104, 1
  %106 = getelementptr inbounds i8, ptr %14, i64 32
  %107 = load i64, ptr %106, align 8, !tbaa !22
  %108 = add i64 %102, 4
  %109 = add i64 %108, %105
  %110 = add i64 %109, %107
  store i64 %110, ptr %106, align 8, !tbaa !22
  %111 = getelementptr inbounds i8, ptr %14, i64 40
  %112 = load i64, ptr %111, align 8, !tbaa !25
  %113 = add i64 %112, %104
  store i64 %113, ptr %111, align 8, !tbaa !25
  %114 = getelementptr inbounds i8, ptr %10, i64 8
  %115 = load i64, ptr %114, align 8, !tbaa !19
  %116 = load i64, ptr %10, align 8, !tbaa !15
  %117 = add i64 %116, %115
  %118 = getelementptr inbounds i8, ptr %14, i64 24
  %119 = load i64, ptr %118, align 8, !tbaa !26
  %120 = add i64 %117, %119
  store i64 %120, ptr %118, align 8, !tbaa !26
  %121 = invoke noundef i64 @_ZNK3Ani12PlainMemoryXIdiE13enoughRawSizeEv(ptr noundef nonnull align 8 dereferenceable(48) %14)
          to label %150 unwind label %219

122:                                              ; preds = %.lr.ph156, %._crit_edge153
  %123 = phi i64 [ 0, %.lr.ph156 ], [ %129, %._crit_edge153 ]
  %.0116154 = phi i32 [ 0, %.lr.ph156 ], [ %128, %._crit_edge153 ]
  %124 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %123) #8
  %125 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3Ani12BaseFemSpaceELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %124) #8
  %126 = getelementptr inbounds i8, ptr %125, i64 8
  %127 = invoke noundef i32 @_ZNK3Ani4DofT6DofMap11NumDofOnTetEv(ptr noundef nonnull align 8 dereferenceable(16) %126)
          to label %.preheader149 unwind label %132

.preheader149:                                    ; preds = %122
  %.not192 = icmp eq i32 %127, 0
  br i1 %.not192, label %._crit_edge153, label %.lr.ph152

._crit_edge153:                                   ; preds = %140, %.preheader149
  %128 = add i32 %.0116154, 1
  %129 = zext i32 %128 to i64
  %130 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %30) #8
  %131 = icmp ugt i64 %130, %129
  br i1 %131, label %122, label %._crit_edge157, !llvm.loop !27

132:                                              ; preds = %122
  %133 = landingpad { ptr, i32 }
          cleanup
  br label %355

.lr.ph152:                                        ; preds = %.preheader149, %140
  %.0115151 = phi i32 [ %147, %140 ], [ 0, %.preheader149 ]
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %15) #8
  %134 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %123) #8
  %135 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3Ani12BaseFemSpaceELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %134) #8
  %136 = load i32, ptr %11, align 4, !tbaa !9
  %137 = load ptr, ptr %135, align 8, !tbaa !11
  %138 = getelementptr inbounds i8, ptr %137, i64 56
  %139 = load ptr, ptr %138, align 8
  invoke void %139(ptr dead_on_unwind nonnull writable sret(%"struct.Ani::PlainMemoryX") align 8 %15, ptr noundef nonnull align 8 dereferenceable(24) %135, i32 noundef %.0115151, i32 noundef %136, i32 noundef %1)
          to label %140 unwind label %148

140:                                              ; preds = %.lr.ph152
  %141 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef nonnull align 8 dereferenceable(8) %58)
  %142 = load i64, ptr %141, align 8, !tbaa !13
  store i64 %142, ptr %57, align 8, !tbaa !26
  %143 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull align 8 dereferenceable(8) %60)
  %144 = load i64, ptr %143, align 8, !tbaa !13
  store i64 %144, ptr %59, align 8, !tbaa !22
  %145 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull align 8 dereferenceable(8) %62)
  %146 = load i64, ptr %145, align 8, !tbaa !13
  store i64 %146, ptr %61, align 8, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) #8
  %147 = add nuw i32 %.0115151, 1
  %exitcond.not = icmp eq i32 %147, %127
  br i1 %exitcond.not, label %._crit_edge153, label %.lr.ph152, !llvm.loop !28

148:                                              ; preds = %.lr.ph152
  %149 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) #8
  br label %355

150:                                              ; preds = %._crit_edge157
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #8
  invoke void @_ZNSt6vectorIcSaIcEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %121, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %151 unwind label %221

151:                                              ; preds = %150
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #8
  %152 = call noundef ptr @_ZNSt6vectorIcSaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #8
  %153 = invoke noundef ptr @_ZN3Ani12PlainMemoryXIdiE15allocateFromRawEPvm(ptr noundef nonnull align 8 dereferenceable(48) %14, ptr noundef %152, i64 noundef %121)
          to label %154 unwind label %223

154:                                              ; preds = %151
  call void @llvm.lifetime.start.p0(i64 296, ptr nonnull %18) #8
  call void @_ZN3Ani10AniMemoryXIdiEC2Ev(ptr noundef nonnull align 8 dereferenceable(296) %18) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(32) @__const._ZN3Ani13UnionFemSpace13orthogonalizeEj.xyl, i64 32, i1 false)
  call void @_ZN3Ani9ArrayViewIdE4InitEPdm(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull %7, i64 noundef 12)
  %155 = getelementptr inbounds i8, ptr %18, i64 16
  call void @_ZN3Ani9ArrayViewIdE4InitEPdm(ptr noundef nonnull align 8 dereferenceable(16) %155, ptr noundef nonnull %43, i64 noundef 9)
  %156 = getelementptr inbounds i8, ptr %18, i64 32
  call void @_ZN3Ani9ArrayViewIdE4InitEPdm(ptr noundef nonnull align 8 dereferenceable(16) %156, ptr noundef null, i64 noundef 3)
  %157 = getelementptr inbounds i8, ptr %18, i64 48
  call void @_ZN3Ani9ArrayViewIdE4InitEPdm(ptr noundef nonnull align 8 dereferenceable(16) %157, ptr noundef nonnull %8, i64 noundef 1)
  %158 = getelementptr inbounds i8, ptr %18, i64 160
  %159 = call noundef ptr @_ZNSt5arrayIdLm4EE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  call void @_ZN3Ani9ArrayViewIdE4InitEPdm(ptr noundef nonnull align 8 dereferenceable(16) %158, ptr noundef %159, i64 noundef 4)
  %160 = getelementptr inbounds i8, ptr %18, i64 176
  call void @_ZN3Ani9ArrayViewIdE4InitEPdm(ptr noundef nonnull align 8 dereferenceable(16) %160, ptr noundef nonnull %8, i64 noundef 1)
  %161 = getelementptr inbounds i8, ptr %18, i64 96
  %162 = load ptr, ptr %14, align 8, !tbaa !29
  %163 = load i64, ptr %10, align 8, !tbaa !15
  call void @_ZN3Ani9ArrayViewIdE4InitEPdm(ptr noundef nonnull align 8 dereferenceable(16) %161, ptr noundef %162, i64 noundef %163)
  %164 = load i64, ptr %10, align 8, !tbaa !15
  %165 = load ptr, ptr %14, align 8, !tbaa !29
  %166 = getelementptr inbounds double, ptr %165, i64 %164
  store ptr %166, ptr %14, align 8, !tbaa !29
  %167 = load i64, ptr %118, align 8, !tbaa !26
  %168 = sub i64 %167, %164
  store i64 %168, ptr %118, align 8, !tbaa !26
  %169 = getelementptr inbounds i8, ptr %18, i64 192
  %170 = load i64, ptr %114, align 8, !tbaa !19
  call void @_ZN3Ani9ArrayViewIdE4InitEPdm(ptr noundef nonnull align 8 dereferenceable(16) %169, ptr noundef %166, i64 noundef %170)
  %171 = load i64, ptr %114, align 8, !tbaa !19
  %172 = load ptr, ptr %14, align 8, !tbaa !29
  %173 = getelementptr inbounds double, ptr %172, i64 %171
  store ptr %173, ptr %14, align 8, !tbaa !29
  %174 = load i64, ptr %118, align 8, !tbaa !26
  %175 = sub i64 %174, %171
  store i64 %175, ptr %118, align 8, !tbaa !26
  %176 = getelementptr inbounds i8, ptr %18, i64 208
  %177 = getelementptr inbounds i8, ptr %14, i64 8
  %178 = load ptr, ptr %177, align 8, !tbaa !30
  %179 = load i64, ptr %101, align 8, !tbaa !18
  call void @_ZN3Ani9ArrayViewIiE4InitEPim(ptr noundef nonnull align 8 dereferenceable(16) %176, ptr noundef %178, i64 noundef %179)
  %180 = load i64, ptr %101, align 8, !tbaa !18
  %181 = load ptr, ptr %177, align 8, !tbaa !30
  %182 = getelementptr inbounds i32, ptr %181, i64 %180
  store ptr %182, ptr %177, align 8, !tbaa !30
  %183 = load i64, ptr %106, align 8, !tbaa !22
  %184 = sub i64 %183, %180
  store i64 %184, ptr %106, align 8, !tbaa !22
  %185 = getelementptr inbounds i8, ptr %18, i64 272
  %186 = load i64, ptr %103, align 8, !tbaa !17
  %187 = add i64 %186, 2
  call void @_ZN3Ani9ArrayViewIiE4InitEPim(ptr noundef nonnull align 8 dereferenceable(16) %185, ptr noundef %182, i64 noundef %187)
  %188 = load i64, ptr %103, align 8, !tbaa !17
  %189 = load ptr, ptr %177, align 8, !tbaa !30
  %190 = getelementptr i32, ptr %189, i64 %188
  %191 = getelementptr i8, ptr %190, i64 8
  store ptr %191, ptr %177, align 8, !tbaa !30
  %192 = add i64 %188, 2
  %193 = load i64, ptr %106, align 8, !tbaa !22
  %194 = sub i64 %193, %192
  store i64 %194, ptr %106, align 8, !tbaa !22
  %195 = getelementptr inbounds i8, ptr %18, i64 256
  call void @_ZN3Ani9ArrayViewIiE4InitEPim(ptr noundef nonnull align 8 dereferenceable(16) %195, ptr noundef %191, i64 noundef %192)
  %196 = load i64, ptr %103, align 8, !tbaa !17
  %197 = load ptr, ptr %177, align 8, !tbaa !30
  %198 = getelementptr i32, ptr %197, i64 %196
  %199 = getelementptr i8, ptr %198, i64 8
  store ptr %199, ptr %177, align 8, !tbaa !30
  %200 = load i64, ptr %106, align 8, !tbaa !22
  %reass.sub = sub i64 %200, %196
  %201 = add i64 %reass.sub, -2
  store i64 %201, ptr %106, align 8, !tbaa !22
  %202 = getelementptr inbounds i8, ptr %18, i64 240
  %203 = getelementptr inbounds i8, ptr %14, i64 16
  %204 = load ptr, ptr %203, align 8, !tbaa !31
  call void @_ZN3Ani9ArrayViewINS_11DenseMatrixIdEEE4InitEPS2_m(ptr noundef nonnull align 8 dereferenceable(16) %202, ptr noundef %204, i64 noundef %196)
  %205 = load i64, ptr %103, align 8, !tbaa !17
  %206 = load ptr, ptr %203, align 8, !tbaa !31
  %207 = getelementptr inbounds %"struct.Ani::DenseMatrix.9", ptr %206, i64 %205
  store ptr %207, ptr %203, align 8, !tbaa !31
  %208 = load i64, ptr %111, align 8, !tbaa !25
  %209 = sub i64 %208, %205
  store i64 %209, ptr %111, align 8, !tbaa !25
  %210 = getelementptr inbounds i8, ptr %18, i64 224
  store i64 1, ptr %210, align 8, !tbaa !32
  %211 = getelementptr inbounds i8, ptr %18, i64 232
  store i64 1, ptr %211, align 8, !tbaa !36
  %212 = getelementptr inbounds i8, ptr %18, i64 288
  store i64 0, ptr %212, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #8
  store ptr %18, ptr %20, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #8
  %213 = load i32, ptr %11, align 4, !tbaa !9
  %214 = zext i32 %213 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #8
  call void @_ZNSaIN3Ani9ArrayViewIdEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #8
  invoke void @_ZNSt6vectorIN3Ani9ArrayViewIdEESaIS2_EEC2EmRKS3_(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %214, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %215 unwind label %225

215:                                              ; preds = %154
  call void @_ZNSt15__new_allocatorIN3Ani9ArrayViewIdEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #8
  %216 = load i32, ptr %11, align 4, !tbaa !9
  %.not193 = icmp eq i32 %216, 0
  br i1 %.not193, label %.preheader148, label %.lr.ph160

.preheader148:                                    ; preds = %.lr.ph160, %215
  %217 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %30) #8
  %.not194 = icmp eq i64 %217, 0
  br i1 %.not194, label %._crit_edge190, label %.lr.ph189

.lr.ph189:                                        ; preds = %.preheader148
  %218 = getelementptr inbounds i8, ptr %24, i64 8
  br label %240

219:                                              ; preds = %._crit_edge157
  %220 = landingpad { ptr, i32 }
          cleanup
  br label %355

221:                                              ; preds = %150
  %222 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #8
  br label %354

223:                                              ; preds = %151
  %224 = landingpad { ptr, i32 }
          cleanup
  br label %353

225:                                              ; preds = %154
  %226 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIN3Ani9ArrayViewIdEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #8
  br label %352

.lr.ph160:                                        ; preds = %215, %.lr.ph160
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph160 ], [ 0, %215 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #8
  %227 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %39) #8
  %228 = trunc nuw i64 %indvars.iv to i32
  %229 = mul i32 %35, %228
  %230 = zext i32 %229 to i64
  %231 = getelementptr inbounds double, ptr %227, i64 %230
  call void @_ZN3Ani9ArrayViewIdEC2EPdm(ptr noundef nonnull align 8 dereferenceable(16) %23, ptr noundef %231, i64 noundef %42)
  %232 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN3Ani9ArrayViewIdEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %indvars.iv) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %232, ptr noundef nonnull align 8 dereferenceable(16) %23, i64 16, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #8
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %233 = load i32, ptr %11, align 4, !tbaa !9
  %234 = zext i32 %233 to i64
  %235 = icmp ult i64 %indvars.iv.next, %234
  br i1 %235, label %.lr.ph160, label %.preheader148, !llvm.loop !42

._crit_edge190:                                   ; preds = %._crit_edge175, %.preheader148
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #8
  %236 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %39) #8
  call void @_ZN3Ani11DenseMatrixIdEC2EPdmm(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef %236, i64 noundef %42, i64 noundef %42)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %26) #8
  %237 = shl i32 %35, 1
  %238 = mul i32 %237, %35
  %239 = zext i32 %238 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #8
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #8
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %239, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %311 unwind label %321

240:                                              ; preds = %.lr.ph189, %._crit_edge175
  %241 = phi i64 [ 0, %.lr.ph189 ], [ %291, %._crit_edge175 ]
  %.0107187 = phi i32 [ 0, %.lr.ph189 ], [ %289, %._crit_edge175 ]
  %.0112185 = phi i32 [ 0, %.lr.ph189 ], [ %290, %._crit_edge175 ]
  %242 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %241) #8
  %243 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3Ani12BaseFemSpaceELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %242) #8
  %244 = getelementptr inbounds i8, ptr %243, i64 8
  %245 = invoke noundef i32 @_ZNK3Ani4DofT6DofMap11NumDofOnTetEv(ptr noundef nonnull align 8 dereferenceable(16) %244)
          to label %.preheader147 unwind label %283

.preheader147:                                    ; preds = %240
  %.not195 = icmp eq i32 %245, 0
  br i1 %.not195, label %.preheader146.thread, label %.lr.ph162.preheader

.lr.ph162.preheader:                              ; preds = %.preheader147
  %wide.trip.count = zext i32 %245 to i64
  br label %.lr.ph162

.preheader146:                                    ; preds = %.lr.ph162
  %246 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %30) #8
  %.not196 = icmp eq i64 %246, 0
  br i1 %.not196, label %._crit_edge175, label %.lr.ph174

.preheader146.thread:                             ; preds = %.preheader147
  %247 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %30) #8
  %.not196222 = icmp eq i64 %247, 0
  br i1 %.not196222, label %._crit_edge175, label %.lr.ph174.split.preheader

.lr.ph174:                                        ; preds = %.preheader146
  br i1 %.not195, label %.lr.ph174.split.preheader, label %.lr.ph174.split.us.preheader

.lr.ph174.split.preheader:                        ; preds = %.preheader146.thread, %.lr.ph174
  br label %.lr.ph174.split

.lr.ph174.split.us.preheader:                     ; preds = %.lr.ph174
  %wide.trip.count214 = zext i32 %245 to i64
  br label %.lr.ph174.split.us

.lr.ph174.split.us:                               ; preds = %.lr.ph174.split.us.preheader, %260
  %248 = phi i64 [ %262, %260 ], [ 0, %.lr.ph174.split.us.preheader ]
  %.0108173.us = phi i32 [ %261, %260 ], [ 0, %.lr.ph174.split.us.preheader ]
  %.0110170.us = phi i32 [ %.1111.us, %260 ], [ 0, %.lr.ph174.split.us.preheader ]
  %249 = icmp eq i32 %.0108173.us, %.0112185
  br i1 %249, label %260, label %250

250:                                              ; preds = %.lr.ph174.split.us
  %251 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %248) #8
  %252 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3Ani12BaseFemSpaceELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %251) #8
  %253 = getelementptr inbounds i8, ptr %252, i64 8
  %254 = invoke noundef i32 @_ZNK3Ani4DofT6DofMap11NumDofOnTetEv(ptr noundef nonnull align 8 dereferenceable(16) %253)
          to label %.lr.ph168.us unwind label %.split181.us

.lr.ph168.us:                                     ; preds = %250
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #8
  %255 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %248) #8
  %256 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessIN3Ani12BaseFemSpaceELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %255) #8
  store ptr %256, ptr %24, align 8, !tbaa !40
  store ptr %20, ptr %218, align 8, !tbaa !40
  %.not198 = icmp eq i32 %254, 0
  br i1 %.not198, label %.lr.ph168.split.us179, label %.lr.ph168.split.us.us.preheader

.lr.ph168.split.us.us.preheader:                  ; preds = %.lr.ph168.us
  %wide.trip.count209 = zext i32 %254 to i64
  br label %.lr.ph168.split.us.us

.lr.ph168.split.us179:                            ; preds = %.lr.ph168.us, %.preheader.us177
  %.0106166.us176 = phi i32 [ %265, %.preheader.us177 ], [ 0, %.lr.ph168.us ]
  %257 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %241) #8
  %258 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3Ani12BaseFemSpaceELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %257) #8
  %259 = call noundef ptr @_ZNSt6vectorIN3Ani9ArrayViewIdEESaIS2_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  invoke void @"_ZNK3Ani12BaseFemSpace16interpolateOnDOFIZNS_13UnionFemSpace13orthogonalizeEjE3$_2TnNSt9enable_ifIXntsr3std7is_sameIT_PFiRKSt5arrayIdLm3EEPdjPvEEE5valueEbE4typeELb1EEEvRKNS_5TetraIKdEERKS5_PNS_9ArrayViewIdEEiiNS_12PlainMemoryXIdiEESB_j"(ptr noundef nonnull align 8 dereferenceable(24) %258, ptr noundef nonnull align 8 dereferenceable(132) %9, ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef %259, i32 noundef %.0106166.us176, i32 noundef 0, ptr noundef nonnull byval(%"struct.Ani::PlainMemoryX") align 8 %14, ptr noundef null, i32 noundef %1)
          to label %.preheader.us177 unwind label %.split.split.us

260:                                              ; preds = %._crit_edge169.us, %.lr.ph174.split.us
  %.pn135.us = phi i32 [ %254, %._crit_edge169.us ], [ %245, %.lr.ph174.split.us ]
  %.1111.us = add i32 %.pn135.us, %.0110170.us
  %261 = add i32 %.0108173.us, 1
  %262 = zext i32 %261 to i64
  %263 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %30) #8
  %264 = icmp ugt i64 %263, %262
  br i1 %264, label %.lr.ph174.split.us, label %._crit_edge175, !llvm.loop !43

.preheader.us177:                                 ; preds = %.lr.ph168.split.us179
  %265 = add nuw i32 %.0106166.us176, 1
  %exitcond216.not = icmp eq i32 %265, %245
  br i1 %exitcond216.not, label %._crit_edge169.us, label %.lr.ph168.split.us179, !llvm.loop !44

._crit_edge169.us:                                ; preds = %._crit_edge165.us.us, %.preheader.us177
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #8
  br label %260

.lr.ph168.split.us.us:                            ; preds = %.lr.ph168.split.us.us.preheader, %._crit_edge165.us.us
  %indvars.iv211 = phi i64 [ 0, %.lr.ph168.split.us.us.preheader ], [ %indvars.iv.next212, %._crit_edge165.us.us ]
  %266 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %241) #8
  %267 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3Ani12BaseFemSpaceELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %266) #8
  %268 = call noundef ptr @_ZNSt6vectorIN3Ani9ArrayViewIdEESaIS2_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  %269 = trunc nuw i64 %indvars.iv211 to i32
  invoke void @"_ZNK3Ani12BaseFemSpace16interpolateOnDOFIZNS_13UnionFemSpace13orthogonalizeEjE3$_2TnNSt9enable_ifIXntsr3std7is_sameIT_PFiRKSt5arrayIdLm3EEPdjPvEEE5valueEbE4typeELb1EEEvRKNS_5TetraIKdEERKS5_PNS_9ArrayViewIdEEiiNS_12PlainMemoryXIdiEESB_j"(ptr noundef nonnull align 8 dereferenceable(24) %267, ptr noundef nonnull align 8 dereferenceable(132) %9, ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef %268, i32 noundef %269, i32 noundef %254, ptr noundef nonnull byval(%"struct.Ani::PlainMemoryX") align 8 %14, ptr noundef null, i32 noundef %1)
          to label %.preheader.us.us unwind label %.split.us.split.us

270:                                              ; preds = %.preheader.us.us, %270
  %indvars.iv206 = phi i64 [ 0, %.preheader.us.us ], [ %indvars.iv.next207, %270 ]
  %271 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN3Ani9ArrayViewIdEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %indvars.iv206) #8
  %272 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3Ani9ArrayViewIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %271, i64 noundef %indvars.iv211)
  %273 = load double, ptr %272, align 8, !tbaa !5
  %274 = trunc nuw i64 %indvars.iv206 to i32
  %275 = add i32 %.0110170.us, %274
  %276 = zext i32 %275 to i64
  %277 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3Ani11DenseMatrixIdEclEmm(ptr noundef nonnull align 8 dereferenceable(32) %6, i64 noundef %279, i64 noundef %276)
  store double %273, ptr %277, align 8, !tbaa !5
  %indvars.iv.next207 = add nuw nsw i64 %indvars.iv206, 1
  %exitcond210.not = icmp eq i64 %indvars.iv.next207, %wide.trip.count209
  br i1 %exitcond210.not, label %._crit_edge165.us.us, label %270, !llvm.loop !45

.preheader.us.us:                                 ; preds = %.lr.ph168.split.us.us
  %278 = add i32 %.0107187, %269
  %279 = zext i32 %278 to i64
  br label %270

._crit_edge165.us.us:                             ; preds = %270
  %indvars.iv.next212 = add nuw nsw i64 %indvars.iv211, 1
  %exitcond215.not = icmp eq i64 %indvars.iv.next212, %wide.trip.count214
  br i1 %exitcond215.not, label %._crit_edge169.us, label %.lr.ph168.split.us.us, !llvm.loop !44

.split181.us:                                     ; preds = %250
  %280 = landingpad { ptr, i32 }
          cleanup
  br label %351

.split.split.us:                                  ; preds = %.lr.ph168.split.us179
  %281 = landingpad { ptr, i32 }
          cleanup
  br label %305

.split.us.split.us:                               ; preds = %.lr.ph168.split.us.us
  %282 = landingpad { ptr, i32 }
          cleanup
  br label %305

283:                                              ; preds = %240
  %284 = landingpad { ptr, i32 }
          cleanup
  br label %351

.lr.ph162:                                        ; preds = %.lr.ph162.preheader, %.lr.ph162
  %indvars.iv202 = phi i64 [ 0, %.lr.ph162.preheader ], [ %indvars.iv.next203, %.lr.ph162 ]
  %285 = trunc nuw i64 %indvars.iv202 to i32
  %286 = add i32 %.0107187, %285
  %287 = zext i32 %286 to i64
  %288 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3Ani11DenseMatrixIdEclEmm(ptr noundef nonnull align 8 dereferenceable(32) %6, i64 noundef %287, i64 noundef %287)
  store double 1.000000e+00, ptr %288, align 8, !tbaa !5
  %indvars.iv.next203 = add nuw nsw i64 %indvars.iv202, 1
  %exitcond205.not = icmp eq i64 %indvars.iv.next203, %wide.trip.count
  br i1 %exitcond205.not, label %.preheader146, label %.lr.ph162, !llvm.loop !46

._crit_edge175:                                   ; preds = %260, %306, %.preheader146.thread, %.preheader146
  %289 = add i32 %245, %.0107187
  %290 = add i32 %.0112185, 1
  %291 = zext i32 %290 to i64
  %292 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %30) #8
  %293 = icmp ugt i64 %292, %291
  br i1 %293, label %240, label %._crit_edge190, !llvm.loop !47

.lr.ph174.split:                                  ; preds = %.lr.ph174.split.preheader, %306
  %294 = phi i64 [ %308, %306 ], [ 0, %.lr.ph174.split.preheader ]
  %.0108173 = phi i32 [ %307, %306 ], [ 0, %.lr.ph174.split.preheader ]
  %295 = icmp eq i32 %.0108173, %.0112185
  br i1 %295, label %306, label %296

296:                                              ; preds = %.lr.ph174.split
  %297 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %294) #8
  %298 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3Ani12BaseFemSpaceELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %297) #8
  %299 = getelementptr inbounds i8, ptr %298, i64 8
  %300 = invoke noundef i32 @_ZNK3Ani4DofT6DofMap11NumDofOnTetEv(ptr noundef nonnull align 8 dereferenceable(16) %299)
          to label %301 unwind label %.split181

301:                                              ; preds = %296
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #8
  %302 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %294) #8
  %303 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessIN3Ani12BaseFemSpaceELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %302) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #8
  br label %306

.split181:                                        ; preds = %296
  %304 = landingpad { ptr, i32 }
          cleanup
  br label %351

305:                                              ; preds = %.split.us.split.us, %.split.split.us
  %.us-phi = phi { ptr, i32 } [ %281, %.split.split.us ], [ %282, %.split.us.split.us ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #8
  br label %351

306:                                              ; preds = %.lr.ph174.split, %301
  %307 = add i32 %.0108173, 1
  %308 = zext i32 %307 to i64
  %309 = call noundef i64 @_ZNKSt6vectorISt10shared_ptrIN3Ani12BaseFemSpaceEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %30) #8
  %310 = icmp ugt i64 %309, %308
  br i1 %310, label %.lr.ph174.split, label %._crit_edge175, !llvm.loop !43

311:                                              ; preds = %._crit_edge190
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %28) #8
  %312 = zext i32 %237 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %312, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %313 unwind label %323

313:                                              ; preds = %311
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #8
  %314 = load ptr, ptr %6, align 8, !tbaa !48
  %315 = load ptr, ptr %25, align 8, !tbaa !48
  %316 = call noundef ptr @_ZNSt6vectorIdSaIdEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %26) #8
  %317 = call noundef ptr @_ZNSt6vectorIiSaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %28) #8
  invoke void @_ZN3Ani17fullPivLU_inverseIdEEvPKT_PS1_iS4_Pi(ptr noundef %314, ptr noundef %315, i32 noundef %35, ptr noundef %316, ptr noundef %317)
          to label %318 unwind label %325

318:                                              ; preds = %313
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #8
  br label %319

319:                                              ; preds = %340, %318
  %indvars.iv217 = phi i64 [ %indvars.iv.next218, %340 ], [ 0, %318 ]
  %exitcond221.not = icmp eq i64 %indvars.iv217, %42
  br i1 %exitcond221.not, label %320, label %329

320:                                              ; preds = %319
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #8
  call void @_ZNSt6vectorIN3Ani9ArrayViewIdEESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 296, ptr nonnull %18) #8
  call void @_ZNSt6vectorIcSaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #8
  br label %349

321:                                              ; preds = %._crit_edge190
  %322 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #8
  br label %328

323:                                              ; preds = %311
  %324 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #8
  br label %327

325:                                              ; preds = %313
  %326 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #8
  br label %327

327:                                              ; preds = %325, %323
  %.pn = phi { ptr, i32 } [ %326, %325 ], [ %324, %323 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #8
  br label %328

328:                                              ; preds = %327, %321
  %.pn.pn = phi { ptr, i32 } [ %.pn, %327 ], [ %322, %321 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #8
  br label %350

329:                                              ; preds = %319
  %330 = load ptr, ptr %25, align 8, !tbaa !48
  %331 = trunc nuw i64 %indvars.iv217 to i32
  %332 = mul i32 %35, %331
  %333 = zext i32 %332 to i64
  %334 = getelementptr inbounds double, ptr %330, i64 %333
  %indvars.iv.next218 = add nuw nsw i64 %indvars.iv217, 1
  %335 = trunc nuw i64 %indvars.iv.next218 to i32
  %336 = mul i32 %35, %335
  %337 = zext i32 %336 to i64
  %338 = getelementptr inbounds double, ptr %330, i64 %337
  %339 = invoke noundef ptr @"_ZSt11max_elementIPdZN3Ani13UnionFemSpace13orthogonalizeEjE3$_0ET_S4_S4_T0_"(ptr noundef %334, ptr noundef %338)
          to label %340 unwind label %347

340:                                              ; preds = %329
  %341 = load ptr, ptr %25, align 8, !tbaa !48
  %342 = getelementptr inbounds double, ptr %341, i64 %333
  %343 = getelementptr inbounds double, ptr %341, i64 %337
  %344 = load double, ptr %339, align 8, !tbaa !5
  %345 = call noundef double @_ZSt3absd(double noundef %344)
  %346 = invoke noundef ptr @"_ZSt9transformIPdS0_ZN3Ani13UnionFemSpace13orthogonalizeEjE3$_3ET0_T_S5_S4_T1_"(ptr noundef %342, ptr noundef %343, ptr noundef %342, double %345)
          to label %319 unwind label %347, !llvm.loop !50

347:                                              ; preds = %340, %329
  %348 = landingpad { ptr, i32 }
          cleanup
  br label %350

349:                                              ; preds = %2, %320
  ret void

350:                                              ; preds = %347, %328
  %.pn125 = phi { ptr, i32 } [ %348, %347 ], [ %.pn.pn, %328 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #8
  br label %351

351:                                              ; preds = %.split181, %.split181.us, %283, %305, %350
  %.pn127.pn.pn = phi { ptr, i32 } [ %.pn125, %350 ], [ %284, %283 ], [ %.us-phi, %305 ], [ %304, %.split181 ], [ %280, %.split181.us ]
  call void @_ZNSt6vectorIN3Ani9ArrayViewIdEESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  br label %352

352:                                              ; preds = %351, %225
  %.pn127.pn.pn.pn = phi { ptr, i32 } [ %.pn127.pn.pn, %351 ], [ %226, %225 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 296, ptr nonnull %18) #8
  br label %353

353:                                              ; preds = %352, %223
  %.pn127.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn127.pn.pn.pn, %352 ], [ %224, %223 ]
  call void @_ZNSt6vectorIcSaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #8
  br label %354

354:                                              ; preds = %353, %221
  %.pn127.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn127.pn.pn.pn.pn, %353 ], [ %222, %221 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #8
  br label %355

355:                                              ; preds = %219, %354, %132, %148
  %.pn136.pn = phi { ptr, i32 } [ %149, %148 ], [ %133, %132 ], [ %.pn127.pn.pn.pn.pn.pn, %354 ], [ %220, %219 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %14) #8
  br label %356

356:                                              ; preds = %355, %100
  %.pn139.pn = phi { ptr, i32 } [ %.pn139, %100 ], [ %.pn136.pn, %355 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #8
  br label %357

357:                                              ; preds = %356, %67
  %.pn139.pn.pn = phi { ptr, i32 } [ %.pn139.pn, %356 ], [ %68, %67 ]
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #8
  br label %358

358:                                              ; preds = %357, %65
  %.pn139.pn.pn.pn = phi { ptr, i32 } [ %.pn139.pn.pn, %357 ], [ %66, %65 ]
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #8
  br label %359

359:                                              ; preds = %358, %63
  %.pn139.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn139.pn.pn.pn, %358 ], [ %64, %63 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #8
  resume { ptr, i32 } %.pn139.pn.pn.pn.pn
}

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

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

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

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

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3Ani5TetraIKdEC2EPS1_S3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(132), ptr noundef, ptr noundef, ptr noundef, ptr noundef) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNK3Ani12PlainMemoryXIdiE13enoughRawSizeEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #5 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN3Ani12PlainMemoryXIdiE15allocateFromRawEPvm(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef, i64 noundef) local_unnamed_addr #5 align 2

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

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

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

; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(none) uwtable
declare dso_local noundef ptr @_ZNSt5arrayIdLm4EE4dataEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #7 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZNK3Ani12BaseFemSpace16interpolateOnDOFIZNS_13UnionFemSpace13orthogonalizeEjE3$_2TnNSt9enable_ifIXntsr3std7is_sameIT_PFiRKSt5arrayIdLm3EEPdjPvEEE5valueEbE4typeELb1EEEvRKNS_5TetraIKdEERKS5_PNS_9ArrayViewIdEEiiNS_12PlainMemoryXIdiEESB_j"(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(132), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, i32 noundef, i32 noundef, ptr noundef byval(%"struct.Ani::PlainMemoryX") align 8, ptr noundef, i32 noundef) local_unnamed_addr #3 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3Ani17fullPivLU_inverseIdEEvPKT_PS1_iS4_Pi(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef ptr @"_ZSt11max_elementIPdZN3Ani13UnionFemSpace13orthogonalizeEjE3$_0ET_S4_S4_T0_"(ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @"_ZSt9transformIPdS0_ZN3Ani13UnionFemSpace13orthogonalizeEjE3$_3ET0_T_S5_S4_T1_"(ptr noundef, ptr noundef, ptr noundef, double) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3absd(double noundef) local_unnamed_addr #2

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

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

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

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

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

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

!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 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"vtable pointer", !8, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = !{!16, !14, i64 0}
!16 = !{!"_ZTSN3Ani20OpMemoryRequirementsE", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24}
!17 = !{!16, !14, i64 24}
!18 = !{!16, !14, i64 16}
!19 = !{!16, !14, i64 8}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.mustprogress"}
!22 = !{!23, !14, i64 32}
!23 = !{!"_ZTSN3Ani12PlainMemoryXIdiEE", !24, i64 0, !24, i64 8, !24, i64 16, !14, i64 24, !14, i64 32, !14, i64 40}
!24 = !{!"any pointer", !7, i64 0}
!25 = !{!23, !14, i64 40}
!26 = !{!23, !14, i64 24}
!27 = distinct !{!27, !21}
!28 = distinct !{!28, !21}
!29 = !{!23, !24, i64 0}
!30 = !{!23, !24, i64 8}
!31 = !{!23, !24, i64 16}
!32 = !{!33, !14, i64 224}
!33 = !{!"_ZTSN3Ani9AniMemoryIdiEE", !34, i64 0, !34, i64 16, !34, i64 32, !34, i64 48, !34, i64 64, !34, i64 80, !34, i64 96, !34, i64 112, !34, i64 128, !34, i64 144, !34, i64 160, !34, i64 176, !34, i64 192, !35, i64 208, !14, i64 224, !14, i64 232}
!34 = !{!"_ZTSN3Ani9ArrayViewIdEE", !24, i64 0, !14, i64 8}
!35 = !{!"_ZTSN3Ani9ArrayViewIiEE", !24, i64 0, !14, i64 8}
!36 = !{!33, !14, i64 232}
!37 = !{!38, !14, i64 288}
!38 = !{!"_ZTSN3Ani10AniMemoryXIdiEE", !33, i64 0, !39, i64 240, !35, i64 256, !35, i64 272, !14, i64 288}
!39 = !{!"_ZTSN3Ani9ArrayViewINS_11DenseMatrixIdEEEE", !24, i64 0, !14, i64 8}
!40 = !{!24, !24, i64 0}
!41 = !{i64 0, i64 8, !40, i64 8, i64 8, !13}
!42 = distinct !{!42, !21}
!43 = distinct !{!43, !21}
!44 = distinct !{!44, !21}
!45 = distinct !{!45, !21}
!46 = distinct !{!46, !21}
!47 = distinct !{!47, !21}
!48 = !{!49, !24, i64 0}
!49 = !{!"_ZTSN3Ani11DenseMatrixIdEE", !24, i64 0, !14, i64 8, !14, i64 16, !14, i64 24}
!50 = distinct !{!50, !21}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass