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

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%class.CPU_Matrix = type { %class.Matrix.base, [7 x i8] }
%class.Matrix.base = type <{ ptr, i32, [4 x i8], i64, i64, i64, ptr, i8 }>
%class.FEMdataKeeper = type { i32, i32, i32, i32, i32, i32, %class.CPU_Matrix, %"class.std::vector.10", %class.CPU_Matrix, i32, [4 x i8], %class.CPU_Matrix, %class.CPU_Matrix, %"class.std::vector.15", %"class.std::vector.20", %"class.std::vector.25", %"class.std::vector.30", ptr, ptr, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", float, float, %"class.std::basic_fstream", %"class.std::basic_fstream", %"class.std::basic_fstream", %"class.std::basic_fstream", %"class.std::basic_fstream" }
%"class.std::vector.10" = type { %"struct.std::_Vector_base.11" }
%"struct.std::_Vector_base.11" = type { %"struct.std::_Vector_base<CPU_Matrix, std::allocator<CPU_Matrix>>::_Vector_impl" }
%"struct.std::_Vector_base<CPU_Matrix, std::allocator<CPU_Matrix>>::_Vector_impl" = type { %"struct.std::_Vector_base<CPU_Matrix, std::allocator<CPU_Matrix>>::_Vector_impl_data" }
%"struct.std::_Vector_base<CPU_Matrix, std::allocator<CPU_Matrix>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = type { %"struct.std::_Vector_base<Element, std::allocator<Element>>::_Vector_impl" }
%"struct.std::_Vector_base<Element, std::allocator<Element>>::_Vector_impl" = type { %"struct.std::_Vector_base<Element, std::allocator<Element>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Element, std::allocator<Element>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.20" = type { %"struct.std::_Vector_base.21" }
%"struct.std::_Vector_base.21" = type { %"struct.std::_Vector_base<Constraint, std::allocator<Constraint>>::_Vector_impl" }
%"struct.std::_Vector_base<Constraint, std::allocator<Constraint>>::_Vector_impl" = type { %"struct.std::_Vector_base<Constraint, std::allocator<Constraint>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Constraint, std::allocator<Constraint>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.25" = type { %"struct.std::_Vector_base.26" }
%"struct.std::_Vector_base.26" = type { %"struct.std::_Vector_base<Load, std::allocator<Load>>::_Vector_impl" }
%"struct.std::_Vector_base<Load, std::allocator<Load>>::_Vector_impl" = type { %"struct.std::_Vector_base<Load, std::allocator<Load>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Load, std::allocator<Load>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.30" = type { %"struct.std::_Vector_base.31" }
%"struct.std::_Vector_base.31" = type { %"struct.std::_Vector_base<BoundaryEdge, std::allocator<BoundaryEdge>>::_Vector_impl" }
%"struct.std::_Vector_base<BoundaryEdge, std::allocator<BoundaryEdge>>::_Vector_impl" = type { %"struct.std::_Vector_base<BoundaryEdge, std::allocator<BoundaryEdge>>::_Vector_impl_data" }
%"struct.std::_Vector_base<BoundaryEdge, std::allocator<BoundaryEdge>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::basic_fstream" = type { %"class.std::basic_iostream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_iostream.base" = type { %"class.std::basic_istream.base", %"class.std::basic_ostream.base" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::basic_filebuf" = type { %"class.std::basic_streambuf", %union.pthread_mutex_t, %"class.std::__basic_file", i32, %struct.__mbstate_t, %struct.__mbstate_t, %struct.__mbstate_t, ptr, i64, i8, i8, i8, i8, ptr, ptr, i8, ptr, ptr, i64, ptr, ptr }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::__basic_file" = type <{ ptr, i8, [7 x i8] }>
%struct.__mbstate_t = type { i32, %union.anon.0 }
%union.anon.0 = type { i32 }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }

@.str.27 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [12 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(264), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) #2 align 2

declare noundef ptr @_ZN6Matrix9setMatrixE11DEVICE_NAMEmm(i32 noundef, i64 noundef, i64 noundef) #3

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

declare noundef ptr @_ZN6Matrix9setVectorE11DEVICE_NAMEm(i32 noundef, i64 noundef) #3

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4)) #3

declare void @_ZN10CPU_MatrixC1Emm(ptr noundef nonnull align 8 dereferenceable(49), i64 noundef, i64 noundef) unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(264)) unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN13FEMdataKeeperC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS5_S5_S5_ff(ptr noundef nonnull align 8 dereferenceable(3168) %0, ptr noundef %1, i32 noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, float noundef %6, float noundef %7) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca float, align 4
  %16 = alloca float, align 4
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca i32, align 4
  %25 = alloca %class.CPU_Matrix, align 8
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store i32 %2, ptr %11, align 4, !tbaa !9
  store ptr %3, ptr %12, align 8, !tbaa !5
  store ptr %4, ptr %13, align 8, !tbaa !5
  store ptr %5, ptr %14, align 8, !tbaa !5
  store float %6, ptr %15, align 4, !tbaa !11
  store float %7, ptr %16, align 4, !tbaa !11
  %26 = load ptr, ptr %9, align 8
  %27 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 6
  call void @_ZN10CPU_MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(49) %27)
  %28 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 7
  call void @_ZNSt6vectorI10CPU_MatrixSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #6
  %29 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 8
  invoke void @_ZN10CPU_MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(49) %29)
          to label %30 unwind label %117

30:                                               ; preds = %8
  %31 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 11
  invoke void @_ZN10CPU_MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(49) %31)
          to label %32 unwind label %121

32:                                               ; preds = %30
  %33 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 12
  invoke void @_ZN10CPU_MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(49) %33)
          to label %34 unwind label %125

34:                                               ; preds = %32
  %35 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 13
  call void @_ZNSt6vectorI7ElementSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #6
  %36 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 14
  call void @_ZNSt6vectorI10ConstraintSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #6
  %37 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 15
  call void @_ZNSt6vectorI4LoadSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #6
  %38 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 16
  call void @_ZNSt6vectorI12BoundaryEdgeSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #6
  %39 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 19
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #6
  %40 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 20
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #6
  %41 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 21
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #6
  %42 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 22
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #6
  %43 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 25
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(264) %43)
          to label %44 unwind label %129

44:                                               ; preds = %34
  %45 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 26
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(264) %45)
          to label %46 unwind label %133

46:                                               ; preds = %44
  %47 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 27
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(264) %47)
          to label %48 unwind label %137

48:                                               ; preds = %46
  %49 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 28
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(264) %49)
          to label %50 unwind label %141

50:                                               ; preds = %48
  %51 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 29
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(264) %51)
          to label %52 unwind label %145

52:                                               ; preds = %50
  %53 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 19
  %54 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %55 unwind label %149

55:                                               ; preds = %52
  %56 = load i32, ptr %11, align 4, !tbaa !9
  %57 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 0
  store i32 %56, ptr %57, align 8, !tbaa !13
  %58 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 20
  %59 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %60 unwind label %149

60:                                               ; preds = %55
  %61 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 21
  %62 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %63 unwind label %149

63:                                               ; preds = %60
  %64 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 22
  %65 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %66 unwind label %149

66:                                               ; preds = %63
  %67 = load float, ptr %15, align 4, !tbaa !11
  %68 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 23
  store float %67, ptr %68, align 8, !tbaa !52
  %69 = load float, ptr %16, align 4, !tbaa !11
  %70 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 24
  store float %69, ptr %70, align 4, !tbaa !53
  %71 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 25
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #6
  %72 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 21
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef @.str.27)
          to label %73 unwind label %153

73:                                               ; preds = %66
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(264) %71, ptr noundef nonnull align 8 dereferenceable(32) %19, i32 noundef 8)
          to label %74 unwind label %157

74:                                               ; preds = %73
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #6
  %75 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 26
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #6
  %76 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 21
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef @.str.28)
          to label %77 unwind label %162

77:                                               ; preds = %74
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(264) %75, ptr noundef nonnull align 8 dereferenceable(32) %20, i32 noundef 8)
          to label %78 unwind label %166

78:                                               ; preds = %77
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #6
  %79 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 27
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #6
  %80 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 21
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef @.str.29)
          to label %81 unwind label %171

81:                                               ; preds = %78
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(264) %79, ptr noundef nonnull align 8 dereferenceable(32) %21, i32 noundef 8)
          to label %82 unwind label %175

82:                                               ; preds = %81
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #6
  %83 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 28
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #6
  %84 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 21
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %22, ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef @.str.30)
          to label %85 unwind label %180

85:                                               ; preds = %82
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(264) %83, ptr noundef nonnull align 8 dereferenceable(32) %22, i32 noundef 8)
          to label %86 unwind label %184

86:                                               ; preds = %85
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #6
  %87 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 29
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #6
  %88 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 21
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 8 dereferenceable(32) %88, ptr noundef @.str.31)
          to label %89 unwind label %189

89:                                               ; preds = %86
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(264) %87, ptr noundef nonnull align 8 dereferenceable(32) %23, i32 noundef 8)
          to label %90 unwind label %193

90:                                               ; preds = %89
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #6
  %91 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 25
  %92 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 1
  %93 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) %91, ptr noundef nonnull align 4 dereferenceable(4) %92)
          to label %94 unwind label %149

94:                                               ; preds = %90
  %95 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 26
  %96 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 2
  %97 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) %95, ptr noundef nonnull align 4 dereferenceable(4) %96)
          to label %98 unwind label %149

98:                                               ; preds = %94
  %99 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 28
  %100 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 5
  %101 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) %99, ptr noundef nonnull align 4 dereferenceable(4) %100)
          to label %102 unwind label %149

102:                                              ; preds = %98
  %103 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 27
  %104 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 4
  %105 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) %103, ptr noundef nonnull align 4 dereferenceable(4) %104)
          to label %106 unwind label %149

106:                                              ; preds = %102
  %107 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 29
  %108 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 3
  %109 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) %107, ptr noundef nonnull align 4 dereferenceable(4) %108)
          to label %110 unwind label %149

110:                                              ; preds = %106
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #6
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %111

111:                                              ; preds = %205, %110
  %112 = load i32, ptr %24, align 4, !tbaa !9
  %113 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 0
  %114 = load i32, ptr %113, align 8, !tbaa !13
  %115 = icmp slt i32 %112, %114
  br i1 %115, label %198, label %116

116:                                              ; preds = %111
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  br label %217

117:                                              ; preds = %8
  %118 = landingpad { ptr, i32 }
          cleanup
  %119 = extractvalue { ptr, i32 } %118, 0
  store ptr %119, ptr %17, align 8
  %120 = extractvalue { ptr, i32 } %118, 1
  store i32 %120, ptr %18, align 4
  br label %268

121:                                              ; preds = %30
  %122 = landingpad { ptr, i32 }
          cleanup
  %123 = extractvalue { ptr, i32 } %122, 0
  store ptr %123, ptr %17, align 8
  %124 = extractvalue { ptr, i32 } %122, 1
  store i32 %124, ptr %18, align 4
  br label %267

125:                                              ; preds = %32
  %126 = landingpad { ptr, i32 }
          cleanup
  %127 = extractvalue { ptr, i32 } %126, 0
  store ptr %127, ptr %17, align 8
  %128 = extractvalue { ptr, i32 } %126, 1
  store i32 %128, ptr %18, align 4
  br label %266

129:                                              ; preds = %34
  %130 = landingpad { ptr, i32 }
          cleanup
  %131 = extractvalue { ptr, i32 } %130, 0
  store ptr %131, ptr %17, align 8
  %132 = extractvalue { ptr, i32 } %130, 1
  store i32 %132, ptr %18, align 4
  br label %265

133:                                              ; preds = %44
  %134 = landingpad { ptr, i32 }
          cleanup
  %135 = extractvalue { ptr, i32 } %134, 0
  store ptr %135, ptr %17, align 8
  %136 = extractvalue { ptr, i32 } %134, 1
  store i32 %136, ptr %18, align 4
  br label %264

137:                                              ; preds = %46
  %138 = landingpad { ptr, i32 }
          cleanup
  %139 = extractvalue { ptr, i32 } %138, 0
  store ptr %139, ptr %17, align 8
  %140 = extractvalue { ptr, i32 } %138, 1
  store i32 %140, ptr %18, align 4
  br label %263

141:                                              ; preds = %48
  %142 = landingpad { ptr, i32 }
          cleanup
  %143 = extractvalue { ptr, i32 } %142, 0
  store ptr %143, ptr %17, align 8
  %144 = extractvalue { ptr, i32 } %142, 1
  store i32 %144, ptr %18, align 4
  br label %262

145:                                              ; preds = %50
  %146 = landingpad { ptr, i32 }
          cleanup
  %147 = extractvalue { ptr, i32 } %146, 0
  store ptr %147, ptr %17, align 8
  %148 = extractvalue { ptr, i32 } %146, 1
  store i32 %148, ptr %18, align 4
  br label %261

149:                                              ; preds = %258, %243, %235, %227, %217, %106, %102, %98, %94, %90, %63, %60, %55, %52
  %150 = landingpad { ptr, i32 }
          cleanup
  %151 = extractvalue { ptr, i32 } %150, 0
  store ptr %151, ptr %17, align 8
  %152 = extractvalue { ptr, i32 } %150, 1
  store i32 %152, ptr %18, align 4
  br label %260

153:                                              ; preds = %66
  %154 = landingpad { ptr, i32 }
          cleanup
  %155 = extractvalue { ptr, i32 } %154, 0
  store ptr %155, ptr %17, align 8
  %156 = extractvalue { ptr, i32 } %154, 1
  store i32 %156, ptr %18, align 4
  br label %161

157:                                              ; preds = %73
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %17, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %18, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  br label %161

161:                                              ; preds = %157, %153
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #6
  br label %260

162:                                              ; preds = %74
  %163 = landingpad { ptr, i32 }
          cleanup
  %164 = extractvalue { ptr, i32 } %163, 0
  store ptr %164, ptr %17, align 8
  %165 = extractvalue { ptr, i32 } %163, 1
  store i32 %165, ptr %18, align 4
  br label %170

166:                                              ; preds = %77
  %167 = landingpad { ptr, i32 }
          cleanup
  %168 = extractvalue { ptr, i32 } %167, 0
  store ptr %168, ptr %17, align 8
  %169 = extractvalue { ptr, i32 } %167, 1
  store i32 %169, ptr %18, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  br label %170

170:                                              ; preds = %166, %162
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #6
  br label %260

171:                                              ; preds = %78
  %172 = landingpad { ptr, i32 }
          cleanup
  %173 = extractvalue { ptr, i32 } %172, 0
  store ptr %173, ptr %17, align 8
  %174 = extractvalue { ptr, i32 } %172, 1
  store i32 %174, ptr %18, align 4
  br label %179

175:                                              ; preds = %81
  %176 = landingpad { ptr, i32 }
          cleanup
  %177 = extractvalue { ptr, i32 } %176, 0
  store ptr %177, ptr %17, align 8
  %178 = extractvalue { ptr, i32 } %176, 1
  store i32 %178, ptr %18, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  br label %179

179:                                              ; preds = %175, %171
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #6
  br label %260

180:                                              ; preds = %82
  %181 = landingpad { ptr, i32 }
          cleanup
  %182 = extractvalue { ptr, i32 } %181, 0
  store ptr %182, ptr %17, align 8
  %183 = extractvalue { ptr, i32 } %181, 1
  store i32 %183, ptr %18, align 4
  br label %188

184:                                              ; preds = %85
  %185 = landingpad { ptr, i32 }
          cleanup
  %186 = extractvalue { ptr, i32 } %185, 0
  store ptr %186, ptr %17, align 8
  %187 = extractvalue { ptr, i32 } %185, 1
  store i32 %187, ptr %18, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #6
  br label %188

188:                                              ; preds = %184, %180
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #6
  br label %260

189:                                              ; preds = %86
  %190 = landingpad { ptr, i32 }
          cleanup
  %191 = extractvalue { ptr, i32 } %190, 0
  store ptr %191, ptr %17, align 8
  %192 = extractvalue { ptr, i32 } %190, 1
  store i32 %192, ptr %18, align 4
  br label %197

193:                                              ; preds = %89
  %194 = landingpad { ptr, i32 }
          cleanup
  %195 = extractvalue { ptr, i32 } %194, 0
  store ptr %195, ptr %17, align 8
  %196 = extractvalue { ptr, i32 } %194, 1
  store i32 %196, ptr %18, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #6
  br label %197

197:                                              ; preds = %193, %189
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #6
  br label %260

198:                                              ; preds = %111
  %199 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 7
  call void @llvm.lifetime.start.p0(i64 56, ptr %25) #6
  %200 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 1
  %201 = load i32, ptr %200, align 4, !tbaa !54
  %202 = sext i32 %201 to i64
  invoke void @_ZN10CPU_MatrixC1Emm(ptr noundef nonnull align 8 dereferenceable(49) %25, i64 noundef %202, i64 noundef 1)
          to label %203 unwind label %208

203:                                              ; preds = %198
  invoke void @_ZNSt6vectorI10CPU_MatrixSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 8 dereferenceable(49) %25)
          to label %204 unwind label %212

204:                                              ; preds = %203
  call void @_ZN10CPU_MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(49) %25) #6
  call void @llvm.lifetime.end.p0(i64 56, ptr %25) #6
  br label %205

205:                                              ; preds = %204
  %206 = load i32, ptr %24, align 4, !tbaa !9
  %207 = add nsw i32 %206, 1
  store i32 %207, ptr %24, align 4, !tbaa !9
  br label %111, !llvm.loop !55

208:                                              ; preds = %198
  %209 = landingpad { ptr, i32 }
          cleanup
  %210 = extractvalue { ptr, i32 } %209, 0
  store ptr %210, ptr %17, align 8
  %211 = extractvalue { ptr, i32 } %209, 1
  store i32 %211, ptr %18, align 4
  br label %216

212:                                              ; preds = %203
  %213 = landingpad { ptr, i32 }
          cleanup
  %214 = extractvalue { ptr, i32 } %213, 0
  store ptr %214, ptr %17, align 8
  %215 = extractvalue { ptr, i32 } %213, 1
  store i32 %215, ptr %18, align 4
  call void @_ZN10CPU_MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(49) %25) #6
  br label %216

216:                                              ; preds = %212, %208
  call void @llvm.lifetime.end.p0(i64 56, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  br label %260

217:                                              ; preds = %116
  %218 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 6
  %219 = load i32, ptr %11, align 4, !tbaa !9
  %220 = sub nsw i32 %219, 1
  %221 = mul nsw i32 3, %220
  %222 = sext i32 %221 to i64
  %223 = load i32, ptr %11, align 4, !tbaa !9
  %224 = sub nsw i32 %223, 1
  %225 = mul nsw i32 3, %224
  %226 = sext i32 %225 to i64
  invoke void @_ZN10CPU_Matrix6resizeEmm(ptr noundef nonnull align 8 dereferenceable(49) %218, i64 noundef %222, i64 noundef %226)
          to label %227 unwind label %149

227:                                              ; preds = %217
  %228 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 0
  %229 = load i32, ptr %228, align 8, !tbaa !13
  %230 = sext i32 %229 to i64
  %231 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 1
  %232 = load i32, ptr %231, align 4, !tbaa !54
  %233 = sext i32 %232 to i64
  %234 = invoke noundef ptr @_ZN6Matrix9setMatrixE11DEVICE_NAMEmm(i32 noundef 0, i64 noundef %230, i64 noundef %233)
          to label %235 unwind label %149

235:                                              ; preds = %227
  %236 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 17
  store ptr %234, ptr %236, align 8, !tbaa !57
  %237 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 18
  %238 = load ptr, ptr %237, align 8, !tbaa !58
  %239 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 3
  %240 = load i32, ptr %239, align 4, !tbaa !59
  %241 = sext i32 %240 to i64
  %242 = invoke noundef ptr @_ZN6Matrix9setVectorE11DEVICE_NAMEm(i32 noundef 0, i64 noundef %241)
          to label %243 unwind label %149

243:                                              ; preds = %235
  %244 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 12
  %245 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 0
  %246 = load i32, ptr %245, align 8, !tbaa !13
  %247 = sub nsw i32 %246, 1
  %248 = mul nsw i32 3, %247
  %249 = mul nsw i32 %248, 6
  %250 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 0
  %251 = load i32, ptr %250, align 8, !tbaa !13
  %252 = sub nsw i32 %251, 1
  %253 = mul nsw i32 %249, %252
  %254 = getelementptr inbounds %class.FEMdataKeeper, ptr %26, i32 0, i32 2
  %255 = load i32, ptr %254, align 8, !tbaa !60
  %256 = mul nsw i32 %253, %255
  %257 = sext i32 %256 to i64
  invoke void @_ZN10CPU_Matrix6resizeEmm(ptr noundef nonnull align 8 dereferenceable(49) %244, i64 noundef %257, i64 noundef 1)
          to label %258 unwind label %149

258:                                              ; preds = %243
  invoke void @_ZN13FEMdataKeeper10parseFilesEv(ptr noundef nonnull align 8 dereferenceable(3168) %26)
          to label %259 unwind label %149

259:                                              ; preds = %258
  ret void

260:                                              ; preds = %216, %197, %188, %179, %170, %161, %149
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %51) #6
  br label %261

261:                                              ; preds = %260, %145
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %49) #6
  br label %262

262:                                              ; preds = %261, %141
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %47) #6
  br label %263

263:                                              ; preds = %262, %137
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %45) #6
  br label %264

264:                                              ; preds = %263, %133
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %43) #6
  br label %265

265:                                              ; preds = %264, %129
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #6
  call void @_ZNSt6vectorI12BoundaryEdgeSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #6
  call void @_ZNSt6vectorI4LoadSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #6
  call void @_ZNSt6vectorI10ConstraintSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #6
  call void @_ZNSt6vectorI7ElementSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #6
  call void @_ZN10CPU_MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(49) %33) #6
  br label %266

266:                                              ; preds = %265, %125
  call void @_ZN10CPU_MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(49) %31) #6
  br label %267

267:                                              ; preds = %266, %121
  call void @_ZN10CPU_MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(49) %29) #6
  br label %268

268:                                              ; preds = %267, %117
  call void @_ZNSt6vectorI10CPU_MatrixSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #6
  call void @_ZN10CPU_MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(49) %27) #6
  br label %269

269:                                              ; preds = %268
  %270 = load ptr, ptr %17, align 8
  %271 = load i32, ptr %18, align 4
  %272 = insertvalue { ptr, i32 } poison, ptr %270, 0
  %273 = insertvalue { ptr, i32 } %272, i32 %271, 1
  resume { ptr, i32 } %273
}

declare void @_ZN10CPU_MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(49)) unnamed_addr #3

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

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

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

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

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

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

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

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

declare void @_ZN10CPU_Matrix6resizeEmm(ptr noundef nonnull align 8 dereferenceable(49), i64 noundef, i64 noundef) unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN13FEMdataKeeper10parseFilesEv(ptr noundef nonnull align 8 dereferenceable(3168)) #2 align 2

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = !{!14, !10, i64 0}
!14 = !{!"_ZTS13FEMdataKeeper", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !15, i64 24, !20, i64 80, !15, i64 104, !10, i64 160, !15, i64 168, !15, i64 224, !24, i64 280, !28, i64 304, !32, i64 328, !36, i64 352, !6, i64 376, !6, i64 384, !40, i64 392, !40, i64 424, !40, i64 456, !40, i64 488, !12, i64 520, !12, i64 524, !42, i64 528, !42, i64 1056, !42, i64 1584, !42, i64 2112, !42, i64 2640}
!15 = !{!"_ZTS10CPU_Matrix", !16, i64 0}
!16 = !{!"_ZTS6Matrix", !17, i64 8, !18, i64 16, !18, i64 24, !18, i64 32, !6, i64 40, !19, i64 48}
!17 = !{!"_ZTS11DEVICE_NAME", !7, i64 0}
!18 = !{!"long", !7, i64 0}
!19 = !{!"bool", !7, i64 0}
!20 = !{!"_ZTSSt6vectorI10CPU_MatrixSaIS0_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseI10CPU_MatrixSaIS0_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseI10CPU_MatrixSaIS0_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseI10CPU_MatrixSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!"_ZTSSt6vectorI7ElementSaIS0_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseI7ElementSaIS0_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseI7ElementSaIS0_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseI7ElementSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!"_ZTSSt6vectorI10ConstraintSaIS0_EE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseI10ConstraintSaIS0_EE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseI10ConstraintSaIS0_EE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseI10ConstraintSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!32 = !{!"_ZTSSt6vectorI4LoadSaIS0_EE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseI4LoadSaIS0_EE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseI4LoadSaIS0_EE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseI4LoadSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!36 = !{!"_ZTSSt6vectorI12BoundaryEdgeSaIS0_EE", !37, i64 0}
!37 = !{!"_ZTSSt12_Vector_baseI12BoundaryEdgeSaIS0_EE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseI12BoundaryEdgeSaIS0_EE12_Vector_implE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseI12BoundaryEdgeSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!40 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !41, i64 0, !18, i64 8, !7, i64 16}
!41 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!42 = !{!"_ZTSSt13basic_fstreamIcSt11char_traitsIcEE", !43, i64 0, !46, i64 24}
!43 = !{!"_ZTSSd", !44, i64 0, !45, i64 16}
!44 = !{!"_ZTSSi", !18, i64 8}
!45 = !{!"_ZTSSo"}
!46 = !{!"_ZTSSt13basic_filebufIcSt11char_traitsIcEE", !47, i64 0, !7, i64 64, !49, i64 104, !50, i64 120, !51, i64 124, !51, i64 132, !51, i64 140, !6, i64 152, !18, i64 160, !19, i64 168, !19, i64 169, !19, i64 170, !7, i64 171, !6, i64 176, !6, i64 184, !19, i64 192, !6, i64 200, !6, i64 208, !18, i64 216, !6, i64 224, !6, i64 232}
!47 = !{!"_ZTSSt15basic_streambufIcSt11char_traitsIcEE", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !48, i64 56}
!48 = !{!"_ZTSSt6locale", !6, i64 0}
!49 = !{!"_ZTSSt12__basic_fileIcE", !6, i64 0, !19, i64 8}
!50 = !{!"_ZTSSt13_Ios_Openmode", !7, i64 0}
!51 = !{!"_ZTS11__mbstate_t", !10, i64 0, !7, i64 4}
!52 = !{!14, !12, i64 520}
!53 = !{!14, !12, i64 524}
!54 = !{!14, !10, i64 4}
!55 = distinct !{!55, !56}
!56 = !{!"llvm.loop.mustprogress"}
!57 = !{!14, !6, i64 376}
!58 = !{!14, !6, i64 384}
!59 = !{!14, !10, i64 12}
!60 = !{!14, !10, i64 8}


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%class.CPU_Matrix = type { %class.Matrix.base, [7 x i8] }
%class.Matrix.base = type <{ ptr, i32, [4 x i8], i64, i64, i64, ptr, i8 }>

@.str.27 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [12 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(264), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #2 align 2

declare noundef ptr @_ZN6Matrix9setMatrixE11DEVICE_NAMEmm(i32 noundef, i64 noundef, i64 noundef) local_unnamed_addr #3

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

declare noundef ptr @_ZN6Matrix9setVectorE11DEVICE_NAMEm(i32 noundef, i64 noundef) local_unnamed_addr #3

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3

declare void @_ZN10CPU_MatrixC1Emm(ptr noundef nonnull align 8 dereferenceable(49), i64 noundef, i64 noundef) unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(264)) unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN13FEMdataKeeperC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS5_S5_S5_ff(ptr noundef nonnull align 8 dereferenceable(3168) %0, ptr noundef %1, i32 noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, float noundef %6, float noundef %7) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %class.CPU_Matrix, align 8
  %15 = getelementptr inbounds i8, ptr %0, i64 24
  tail call void @_ZN10CPU_MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(49) %15)
  %16 = getelementptr inbounds i8, ptr %0, i64 80
  tail call void @_ZNSt6vectorI10CPU_MatrixSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #6
  %17 = getelementptr inbounds i8, ptr %0, i64 104
  invoke void @_ZN10CPU_MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(49) %17)
          to label %18 unwind label %80

18:                                               ; preds = %8
  %19 = getelementptr inbounds i8, ptr %0, i64 168
  invoke void @_ZN10CPU_MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(49) %19)
          to label %20 unwind label %82

20:                                               ; preds = %18
  %21 = getelementptr inbounds i8, ptr %0, i64 224
  invoke void @_ZN10CPU_MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(49) %21)
          to label %22 unwind label %84

22:                                               ; preds = %20
  %23 = getelementptr inbounds i8, ptr %0, i64 280
  tail call void @_ZNSt6vectorI7ElementSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #6
  %24 = getelementptr inbounds i8, ptr %0, i64 304
  tail call void @_ZNSt6vectorI10ConstraintSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #6
  %25 = getelementptr inbounds i8, ptr %0, i64 328
  tail call void @_ZNSt6vectorI4LoadSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #6
  %26 = getelementptr inbounds i8, ptr %0, i64 352
  tail call void @_ZNSt6vectorI12BoundaryEdgeSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #6
  %27 = getelementptr inbounds i8, ptr %0, i64 392
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #6
  %28 = getelementptr inbounds i8, ptr %0, i64 424
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #6
  %29 = getelementptr inbounds i8, ptr %0, i64 456
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #6
  %30 = getelementptr inbounds i8, ptr %0, i64 488
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #6
  %31 = getelementptr inbounds i8, ptr %0, i64 528
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(264) %31)
          to label %32 unwind label %86

32:                                               ; preds = %22
  %33 = getelementptr inbounds i8, ptr %0, i64 1056
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(264) %33)
          to label %34 unwind label %88

34:                                               ; preds = %32
  %35 = getelementptr inbounds i8, ptr %0, i64 1584
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(264) %35)
          to label %36 unwind label %90

36:                                               ; preds = %34
  %37 = getelementptr inbounds i8, ptr %0, i64 2112
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(264) %37)
          to label %38 unwind label %92

38:                                               ; preds = %36
  %39 = getelementptr inbounds i8, ptr %0, i64 2640
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(264) %39)
          to label %40 unwind label %94

40:                                               ; preds = %38
  %41 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %42 unwind label %96

42:                                               ; preds = %40
  store i32 %2, ptr %0, align 8, !tbaa !5
  %43 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %44 unwind label %96

44:                                               ; preds = %42
  %45 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %46 unwind label %96

46:                                               ; preds = %44
  %47 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %48 unwind label %96

48:                                               ; preds = %46
  %49 = getelementptr inbounds i8, ptr %0, i64 520
  store float %6, ptr %49, align 8, !tbaa !49
  %50 = getelementptr inbounds i8, ptr %0, i64 524
  store float %7, ptr %50, align 4, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #6
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull @.str.27)
          to label %51 unwind label %98

51:                                               ; preds = %48
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(264) %31, ptr noundef nonnull align 8 dereferenceable(32) %9, i32 noundef 8)
          to label %52 unwind label %100

52:                                               ; preds = %51
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #6
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull @.str.28)
          to label %53 unwind label %103

53:                                               ; preds = %52
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(264) %33, ptr noundef nonnull align 8 dereferenceable(32) %10, i32 noundef 8)
          to label %54 unwind label %105

54:                                               ; preds = %53
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #6
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull @.str.29)
          to label %55 unwind label %108

55:                                               ; preds = %54
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(264) %35, ptr noundef nonnull align 8 dereferenceable(32) %11, i32 noundef 8)
          to label %56 unwind label %110

56:                                               ; preds = %55
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #6
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull @.str.30)
          to label %57 unwind label %113

57:                                               ; preds = %56
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(264) %37, ptr noundef nonnull align 8 dereferenceable(32) %12, i32 noundef 8)
          to label %58 unwind label %115

58:                                               ; preds = %57
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #6
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull @.str.31)
          to label %59 unwind label %118

59:                                               ; preds = %58
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(264) %39, ptr noundef nonnull align 8 dereferenceable(32) %13, i32 noundef 8)
          to label %60 unwind label %120

60:                                               ; preds = %59
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #6
  %61 = getelementptr inbounds i8, ptr %0, i64 4
  %62 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 4 dereferenceable(4) %61)
          to label %63 unwind label %96

63:                                               ; preds = %60
  %64 = getelementptr inbounds i8, ptr %0, i64 8
  %65 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) %33, ptr noundef nonnull align 4 dereferenceable(4) %64)
          to label %66 unwind label %96

66:                                               ; preds = %63
  %67 = getelementptr inbounds i8, ptr %0, i64 20
  %68 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef nonnull align 4 dereferenceable(4) %67)
          to label %69 unwind label %96

69:                                               ; preds = %66
  %70 = getelementptr inbounds i8, ptr %0, i64 16
  %71 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) %35, ptr noundef nonnull align 4 dereferenceable(4) %70)
          to label %72 unwind label %96

72:                                               ; preds = %69
  %73 = getelementptr inbounds i8, ptr %0, i64 12
  %74 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef nonnull align 4 dereferenceable(4) %73)
          to label %.preheader unwind label %96

.preheader:                                       ; preds = %72
  %75 = load i32, ptr %0, align 8, !tbaa !5
  %76 = icmp sgt i32 %75, 0
  br i1 %76, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %126, %.preheader
  %77 = mul i32 %2, 3
  %78 = add i32 %77, -3
  %79 = sext i32 %78 to i64
  invoke void @_ZN10CPU_Matrix6resizeEmm(ptr noundef nonnull align 8 dereferenceable(49) %15, i64 noundef %79, i64 noundef %79)
          to label %135 unwind label %96

80:                                               ; preds = %8
  %81 = landingpad { ptr, i32 }
          cleanup
  br label %164

82:                                               ; preds = %18
  %83 = landingpad { ptr, i32 }
          cleanup
  br label %163

84:                                               ; preds = %20
  %85 = landingpad { ptr, i32 }
          cleanup
  br label %162

86:                                               ; preds = %22
  %87 = landingpad { ptr, i32 }
          cleanup
  br label %161

88:                                               ; preds = %32
  %89 = landingpad { ptr, i32 }
          cleanup
  br label %160

90:                                               ; preds = %34
  %91 = landingpad { ptr, i32 }
          cleanup
  br label %159

92:                                               ; preds = %36
  %93 = landingpad { ptr, i32 }
          cleanup
  br label %158

94:                                               ; preds = %38
  %95 = landingpad { ptr, i32 }
          cleanup
  br label %157

96:                                               ; preds = %154, %146, %141, %135, %._crit_edge, %72, %69, %66, %63, %60, %46, %44, %42, %40
  %97 = landingpad { ptr, i32 }
          cleanup
  br label %156

98:                                               ; preds = %48
  %99 = landingpad { ptr, i32 }
          cleanup
  br label %102

100:                                              ; preds = %51
  %101 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  br label %102

102:                                              ; preds = %100, %98
  %.pn = phi { ptr, i32 } [ %101, %100 ], [ %99, %98 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  br label %156

103:                                              ; preds = %52
  %104 = landingpad { ptr, i32 }
          cleanup
  br label %107

105:                                              ; preds = %53
  %106 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  br label %107

107:                                              ; preds = %105, %103
  %.pn26 = phi { ptr, i32 } [ %106, %105 ], [ %104, %103 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  br label %156

108:                                              ; preds = %54
  %109 = landingpad { ptr, i32 }
          cleanup
  br label %112

110:                                              ; preds = %55
  %111 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  br label %112

112:                                              ; preds = %110, %108
  %.pn28 = phi { ptr, i32 } [ %111, %110 ], [ %109, %108 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  br label %156

113:                                              ; preds = %56
  %114 = landingpad { ptr, i32 }
          cleanup
  br label %117

115:                                              ; preds = %57
  %116 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  br label %117

117:                                              ; preds = %115, %113
  %.pn30 = phi { ptr, i32 } [ %116, %115 ], [ %114, %113 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #6
  br label %156

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

120:                                              ; preds = %59
  %121 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  br label %122

122:                                              ; preds = %120, %118
  %.pn32 = phi { ptr, i32 } [ %121, %120 ], [ %119, %118 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #6
  br label %156

.lr.ph:                                           ; preds = %.preheader, %126
  %.045 = phi i32 [ %127, %126 ], [ 0, %.preheader ]
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %14) #6
  %123 = load i32, ptr %61, align 4, !tbaa !51
  %124 = sext i32 %123 to i64
  invoke void @_ZN10CPU_MatrixC1Emm(ptr noundef nonnull align 8 dereferenceable(49) %14, i64 noundef %124, i64 noundef 1)
          to label %125 unwind label %130

125:                                              ; preds = %.lr.ph
  invoke void @_ZNSt6vectorI10CPU_MatrixSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 8 dereferenceable(49) %14)
          to label %126 unwind label %132

126:                                              ; preds = %125
  call void @_ZN10CPU_MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(49) %14) #6
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %14) #6
  %127 = add nuw nsw i32 %.045, 1
  %128 = load i32, ptr %0, align 8, !tbaa !5
  %129 = icmp slt i32 %127, %128
  br i1 %129, label %.lr.ph, label %._crit_edge, !llvm.loop !52

130:                                              ; preds = %.lr.ph
  %131 = landingpad { ptr, i32 }
          cleanup
  br label %134

132:                                              ; preds = %125
  %133 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10CPU_MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(49) %14) #6
  br label %134

134:                                              ; preds = %132, %130
  %.pn34 = phi { ptr, i32 } [ %133, %132 ], [ %131, %130 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %14) #6
  br label %156

135:                                              ; preds = %._crit_edge
  %136 = load i32, ptr %0, align 8, !tbaa !5
  %137 = sext i32 %136 to i64
  %138 = load i32, ptr %61, align 4, !tbaa !51
  %139 = sext i32 %138 to i64
  %140 = invoke noundef ptr @_ZN6Matrix9setMatrixE11DEVICE_NAMEmm(i32 noundef 0, i64 noundef %137, i64 noundef %139)
          to label %141 unwind label %96

141:                                              ; preds = %135
  %142 = getelementptr inbounds i8, ptr %0, i64 376
  store ptr %140, ptr %142, align 8, !tbaa !54
  %143 = load i32, ptr %73, align 4, !tbaa !55
  %144 = sext i32 %143 to i64
  %145 = invoke noundef ptr @_ZN6Matrix9setVectorE11DEVICE_NAMEm(i32 noundef 0, i64 noundef %144)
          to label %146 unwind label %96

146:                                              ; preds = %141
  %147 = load i32, ptr %0, align 8, !tbaa !5
  %148 = add nsw i32 %147, -1
  %149 = mul i32 %148, 18
  %150 = mul nsw i32 %149, %148
  %151 = load i32, ptr %64, align 8, !tbaa !56
  %152 = mul nsw i32 %150, %151
  %153 = sext i32 %152 to i64
  invoke void @_ZN10CPU_Matrix6resizeEmm(ptr noundef nonnull align 8 dereferenceable(49) %21, i64 noundef %153, i64 noundef 1)
          to label %154 unwind label %96

154:                                              ; preds = %146
  invoke void @_ZN13FEMdataKeeper10parseFilesEv(ptr noundef nonnull align 8 dereferenceable(3168) %0)
          to label %155 unwind label %96

155:                                              ; preds = %154
  ret void

156:                                              ; preds = %134, %122, %117, %112, %107, %102, %96
  %.pn34.pn = phi { ptr, i32 } [ %.pn34, %134 ], [ %97, %96 ], [ %.pn32, %122 ], [ %.pn30, %117 ], [ %.pn28, %112 ], [ %.pn26, %107 ], [ %.pn, %102 ]
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %39) #6
  br label %157

157:                                              ; preds = %156, %94
  %.pn34.pn.pn = phi { ptr, i32 } [ %.pn34.pn, %156 ], [ %95, %94 ]
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %37) #6
  br label %158

158:                                              ; preds = %157, %92
  %.pn34.pn.pn.pn = phi { ptr, i32 } [ %.pn34.pn.pn, %157 ], [ %93, %92 ]
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %35) #6
  br label %159

159:                                              ; preds = %158, %90
  %.pn34.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn34.pn.pn.pn, %158 ], [ %91, %90 ]
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %33) #6
  br label %160

160:                                              ; preds = %159, %88
  %.pn34.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn34.pn.pn.pn.pn, %159 ], [ %89, %88 ]
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %31) #6
  br label %161

161:                                              ; preds = %160, %86
  %.pn34.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn34.pn.pn.pn.pn.pn, %160 ], [ %87, %86 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #6
  call void @_ZNSt6vectorI12BoundaryEdgeSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #6
  call void @_ZNSt6vectorI4LoadSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #6
  call void @_ZNSt6vectorI10ConstraintSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #6
  call void @_ZNSt6vectorI7ElementSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #6
  call void @_ZN10CPU_MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(49) %21) #6
  br label %162

162:                                              ; preds = %161, %84
  %.pn34.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn34.pn.pn.pn.pn.pn.pn, %161 ], [ %85, %84 ]
  call void @_ZN10CPU_MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(49) %19) #6
  br label %163

163:                                              ; preds = %162, %82
  %.pn34.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn34.pn.pn.pn.pn.pn.pn.pn, %162 ], [ %83, %82 ]
  call void @_ZN10CPU_MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(49) %17) #6
  br label %164

164:                                              ; preds = %163, %80
  %.pn34.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn34.pn.pn.pn.pn.pn.pn.pn.pn, %163 ], [ %81, %80 ]
  call void @_ZNSt6vectorI10CPU_MatrixSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #6
  call void @_ZN10CPU_MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(49) %15) #6
  resume { ptr, i32 } %.pn34.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

declare void @_ZN10CPU_MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(49)) unnamed_addr #3

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

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

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

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

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

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

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

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

declare void @_ZN10CPU_Matrix6resizeEmm(ptr noundef nonnull align 8 dereferenceable(49), i64 noundef, i64 noundef) unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN13FEMdataKeeper10parseFilesEv(ptr noundef nonnull align 8 dereferenceable(3168)) local_unnamed_addr #2 align 2

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"_ZTS13FEMdataKeeper", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !10, i64 24, !16, i64 80, !10, i64 104, !7, i64 160, !10, i64 168, !10, i64 224, !20, i64 280, !24, i64 304, !28, i64 328, !32, i64 352, !14, i64 376, !14, i64 384, !36, i64 392, !36, i64 424, !36, i64 456, !36, i64 488, !38, i64 520, !38, i64 524, !39, i64 528, !39, i64 1056, !39, i64 1584, !39, i64 2112, !39, i64 2640}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTS10CPU_Matrix", !11, i64 0}
!11 = !{!"_ZTS6Matrix", !12, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !14, i64 40, !15, i64 48}
!12 = !{!"_ZTS11DEVICE_NAME", !8, i64 0}
!13 = !{!"long", !8, i64 0}
!14 = !{!"any pointer", !8, i64 0}
!15 = !{!"bool", !8, i64 0}
!16 = !{!"_ZTSSt6vectorI10CPU_MatrixSaIS0_EE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseI10CPU_MatrixSaIS0_EE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseI10CPU_MatrixSaIS0_EE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseI10CPU_MatrixSaIS0_EE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!20 = !{!"_ZTSSt6vectorI7ElementSaIS0_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseI7ElementSaIS0_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseI7ElementSaIS0_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseI7ElementSaIS0_EE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!24 = !{!"_ZTSSt6vectorI10ConstraintSaIS0_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseI10ConstraintSaIS0_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseI10ConstraintSaIS0_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseI10ConstraintSaIS0_EE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!28 = !{!"_ZTSSt6vectorI4LoadSaIS0_EE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseI4LoadSaIS0_EE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseI4LoadSaIS0_EE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseI4LoadSaIS0_EE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!32 = !{!"_ZTSSt6vectorI12BoundaryEdgeSaIS0_EE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseI12BoundaryEdgeSaIS0_EE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseI12BoundaryEdgeSaIS0_EE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseI12BoundaryEdgeSaIS0_EE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!36 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !37, i64 0, !13, i64 8, !8, i64 16}
!37 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !14, i64 0}
!38 = !{!"float", !8, i64 0}
!39 = !{!"_ZTSSt13basic_fstreamIcSt11char_traitsIcEE", !40, i64 0, !43, i64 24}
!40 = !{!"_ZTSSd", !41, i64 0, !42, i64 16}
!41 = !{!"_ZTSSi", !13, i64 8}
!42 = !{!"_ZTSSo"}
!43 = !{!"_ZTSSt13basic_filebufIcSt11char_traitsIcEE", !44, i64 0, !8, i64 64, !46, i64 104, !47, i64 120, !48, i64 124, !48, i64 132, !48, i64 140, !14, i64 152, !13, i64 160, !15, i64 168, !15, i64 169, !15, i64 170, !8, i64 171, !14, i64 176, !14, i64 184, !15, i64 192, !14, i64 200, !14, i64 208, !13, i64 216, !14, i64 224, !14, i64 232}
!44 = !{!"_ZTSSt15basic_streambufIcSt11char_traitsIcEE", !14, i64 8, !14, i64 16, !14, i64 24, !14, i64 32, !14, i64 40, !14, i64 48, !45, i64 56}
!45 = !{!"_ZTSSt6locale", !14, i64 0}
!46 = !{!"_ZTSSt12__basic_fileIcE", !14, i64 0, !15, i64 8}
!47 = !{!"_ZTSSt13_Ios_Openmode", !8, i64 0}
!48 = !{!"_ZTS11__mbstate_t", !7, i64 0, !8, i64 4}
!49 = !{!6, !38, i64 520}
!50 = !{!6, !38, i64 524}
!51 = !{!6, !7, i64 4}
!52 = distinct !{!52, !53}
!53 = !{!"llvm.loop.mustprogress"}
!54 = !{!6, !14, i64 376}
!55 = !{!6, !7, i64 12}
!56 = !{!6, !7, i64 8}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass,TailCallElimPass