; LLVM IR from facebookresearch/StarSpace :: src (model)

; 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.boost::numeric::ublas::matrix_row" = type { %"class.boost::numeric::ublas::matrix_reference", i64 }
%"class.boost::numeric::ublas::matrix_reference" = type { ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.81 = type { i8 }
%class.anon.82 = type { ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator" = type { i8 }
%"class.__gnu_cxx::__normal_iterator.83" = type { ptr }
%"struct.std::pair" = type { i32, float }
%"struct.starspace::EmbedModel" = type { %"class.std::shared_ptr.0", %"class.std::shared_ptr.3", %"class.std::shared_ptr.3", %"class.std::shared_ptr", %"class.std::vector", %"class.std::vector" }
%"class.std::shared_ptr.0" = type { %"class.std::__shared_ptr.1" }
%"class.std::__shared_ptr.1" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::shared_ptr.3" = type { %"class.std::__shared_ptr.4" }
%"class.std::__shared_ptr.4" = type { ptr, %"class.std::__shared_count" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.starspace::Args" = type <{ %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i8, [7 x i8], double, double, double, double, double, double, double, double, double, i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8 }>
%"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] }
%"struct.starspace::ParseResults" = type { float, %"class.std::vector.24", %"class.std::vector.24", %"class.std::vector.57" }
%"class.std::vector.24" = type { %"struct.std::_Vector_base.25" }
%"struct.std::_Vector_base.25" = type { %"struct.std::_Vector_base<std::pair<int, float>, std::allocator<std::pair<int, float>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<int, float>, std::allocator<std::pair<int, float>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<int, float>, std::allocator<std::pair<int, float>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<int, float>, std::allocator<std::pair<int, float>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.57" = type { %"struct.std::_Vector_base.58" }
%"struct.std::_Vector_base.58" = type { %"struct.std::_Vector_base<std::vector<std::pair<int, float>>, std::allocator<std::vector<std::pair<int, float>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<std::pair<int, float>>, std::allocator<std::vector<std::pair<int, float>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<std::pair<int, float>>, std::allocator<std::vector<std::pair<int, float>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<std::pair<int, float>>, std::allocator<std::vector<std::pair<int, float>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZN9starspace3dotEN5boost7numeric5ublas10matrix_rowINS2_6matrixIfNS2_15basic_row_majorImlEENS2_15unbounded_arrayIfSaIfEEEEEEESB_(ptr noundef, ptr noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN9starspace5indexESt4pairIifE(i64) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZN9starspace6weightESt4pairIifE(i64) #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9starspace6MatrixIfEcvN5boost7numeric5ublas10matrix_rowINS4_6matrixIfNS4_15basic_row_majorImlEENS4_15unbounded_arrayIfSaIfEEEEEEEEv(ptr dead_on_unwind noalias writable sret(%"class.boost::numeric::ublas::matrix_row") align 8, ptr noundef nonnull align 8 dereferenceable(40)) #2 align 2

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

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

; 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) #4

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(80) ptr @_ZNKSt6vectorIN9starspace12ParseResultsESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN9starspace6MatrixIfEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #0 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN9starspace10EmbedModel8backwardERKSt6vectorINS_12ParseResultsESaIS2_EERKS1_IS1_ISt4pairIifESaIS8_EESaISA_EES1_INS_6MatrixIfEESaISG_EESI_RKS1_IiSaIiEEfRKS1_IfSaIfEERKS1_ISO_SaISO_EE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef %3, ptr noundef %4, ptr noundef nonnull align 8 dereferenceable(24) %5, float noundef %6, ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %8) #2 align 2 personality ptr @__gxx_personality_v0 {
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca float, align 4
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca i64, align 8
  %20 = alloca %"class.std::function", align 8
  %21 = alloca %class.anon.81, align 1
  %22 = alloca %"class.std::function", align 8
  %23 = alloca %class.anon.82, align 8
  %24 = alloca ptr, align 8
  %25 = alloca i64, align 8
  %26 = alloca %"class.std::vector", align 8
  %27 = alloca float, align 4
  %28 = alloca %"class.std::allocator", align 1
  %29 = alloca ptr, align 8
  %30 = alloca i32, align 4
  %31 = alloca %"class.std::vector", align 8
  %32 = alloca float, align 4
  %33 = alloca %"class.std::allocator", align 1
  %34 = alloca i32, align 4
  %35 = alloca %"class.boost::numeric::ublas::matrix_row", align 8
  %36 = alloca %"class.boost::numeric::ublas::matrix_row", align 8
  %37 = alloca %"class.boost::numeric::ublas::matrix_row", align 8
  %38 = alloca %"class.boost::numeric::ublas::matrix_row", align 8
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca %"class.__gnu_cxx::__normal_iterator.83", align 8
  %45 = alloca %"class.__gnu_cxx::__normal_iterator.83", align 8
  %46 = alloca %"struct.std::pair", align 4
  %47 = alloca %"class.boost::numeric::ublas::matrix_row", align 8
  %48 = alloca %"struct.std::pair", align 4
  %49 = alloca %"class.boost::numeric::ublas::matrix_row", align 8
  %50 = alloca %"struct.std::pair", align 4
  %51 = alloca %"struct.std::pair", align 4
  %52 = alloca ptr, align 8
  %53 = alloca %"class.__gnu_cxx::__normal_iterator.83", align 8
  %54 = alloca %"class.__gnu_cxx::__normal_iterator.83", align 8
  %55 = alloca %"struct.std::pair", align 4
  %56 = alloca %"class.boost::numeric::ublas::matrix_row", align 8
  %57 = alloca %"struct.std::pair", align 4
  %58 = alloca %"class.boost::numeric::ublas::matrix_row", align 8
  %59 = alloca %"struct.std::pair", align 4
  %60 = alloca %"struct.std::pair", align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca ptr, align 8
  %64 = alloca %"class.__gnu_cxx::__normal_iterator.83", align 8
  %65 = alloca %"class.__gnu_cxx::__normal_iterator.83", align 8
  %66 = alloca %"struct.std::pair", align 4
  %67 = alloca %"class.boost::numeric::ublas::matrix_row", align 8
  %68 = alloca %"struct.std::pair", align 4
  %69 = alloca %"class.boost::numeric::ublas::matrix_row", align 8
  %70 = alloca %"struct.std::pair", align 4
  %71 = alloca %"struct.std::pair", align 4
  store ptr %0, ptr %10, align 8, !tbaa !5
  store ptr %1, ptr %11, align 8, !tbaa !5
  store ptr %2, ptr %12, align 8, !tbaa !5
  store ptr %3, ptr %13, align 8, !tbaa !5
  store ptr %4, ptr %14, align 8, !tbaa !5
  store ptr %5, ptr %15, align 8, !tbaa !5
  store float %6, ptr %16, align 4, !tbaa !9
  store ptr %7, ptr %17, align 8, !tbaa !5
  store ptr %8, ptr %18, align 8, !tbaa !5
  %72 = load ptr, ptr %10, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  %73 = getelementptr inbounds %"struct.starspace::EmbedModel", ptr %72, i32 0, i32 3
  %74 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9starspace4ArgsELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %73) #5
  %75 = getelementptr inbounds %"class.starspace::Args", ptr %74, i32 0, i32 23
  %76 = load i64, ptr %75, align 8, !tbaa !11
  store i64 %76, ptr %19, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #5
  call void @"_ZNSt8functionIFvRN5boost7numeric5ublas10matrix_rowINS2_6matrixIfNS2_15basic_row_majorImlEENS2_15unbounded_arrayIfSaIfEEEEEEERKSB_ffRSt6vectorIfS8_EiEEC2IZN9starspace10EmbedModel8backwardERKSF_INSL_12ParseResultsESaISN_EERKSF_ISF_ISt4pairIifESaIST_EESaISV_EESF_INSL_6MatrixIfEESaIS11_EES13_RKSF_IiSaIiEEfRKSG_RKSF_ISG_SaISG_EEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 1 dereferenceable(1) %21) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #5
  %77 = getelementptr inbounds %class.anon.82, ptr %23, i32 0, i32 0
  store ptr %19, ptr %77, align 8, !tbaa !5
  %78 = getelementptr inbounds %class.anon.82, ptr %23, i32 0, i32 1
  store ptr %20, ptr %78, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRN5boost7numeric5ublas10matrix_rowINS2_6matrixIfNS2_15basic_row_majorImlEENS2_15unbounded_arrayIfSaIfEEEEEEERKSB_ffRSt6vectorIfS8_EiEEC2IZN9starspace10EmbedModel8backwardERKSF_INSL_12ParseResultsESaISN_EERKSF_ISF_ISt4pairIifESaIST_EESaISV_EESF_INSL_6MatrixIfEESaIS11_EES13_RKSF_IiSaIiEEfRKSG_RKSF_ISG_SaISG_EEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(16) %23) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  %79 = getelementptr inbounds %"struct.starspace::EmbedModel", ptr %72, i32 0, i32 3
  %80 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9starspace4ArgsELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %79) #5
  %81 = getelementptr inbounds %"class.starspace::Args", ptr %80, i32 0, i32 41
  %82 = load i8, ptr %81, align 2, !tbaa !20, !range !21, !noundef !22
  %83 = trunc i8 %82 to i1
  br i1 %83, label %84, label %85

84:                                               ; preds = %9
  br label %86

85:                                               ; preds = %9
  br label %86

86:                                               ; preds = %85, %84
  %87 = phi ptr [ %22, %84 ], [ %20, %85 ]
  store ptr %87, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  %88 = load ptr, ptr %11, align 8, !tbaa !5
  %89 = call noundef i64 @_ZNKSt6vectorIN9starspace12ParseResultsESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %88) #5
  store i64 %89, ptr %25, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 24, ptr %26) #5
  %90 = load i64, ptr %25, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #5
  store float 0.000000e+00, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #5
  call void @_ZNSaIfEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #5
  invoke void @_ZNSt6vectorIfSaIfEEC2EmRKfRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %90, ptr noundef nonnull align 4 dereferenceable(4) %27, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %91 unwind label %106

91:                                               ; preds = %86
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 24, ptr %31) #5
  %92 = load i64, ptr %25, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #5
  store float 0.000000e+00, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #5
  call void @_ZNSaIfEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #5
  invoke void @_ZNSt6vectorIfSaIfEEC2EmRKfRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef %92, ptr noundef nonnull align 4 dereferenceable(4) %32, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %93 unwind label %110

93:                                               ; preds = %91
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #5
  %94 = getelementptr inbounds %"struct.starspace::EmbedModel", ptr %72, i32 0, i32 3
  %95 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9starspace4ArgsELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %94) #5
  %96 = getelementptr inbounds %"class.starspace::Args", ptr %95, i32 0, i32 41
  %97 = load i8, ptr %96, align 2, !tbaa !20, !range !21, !noundef !22
  %98 = trunc i8 %97 to i1
  br i1 %98, label %99, label %176

99:                                               ; preds = %93
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #5
  store i32 0, ptr %34, align 4, !tbaa !23
  br label %100

100:                                              ; preds = %171, %99
  %101 = load i32, ptr %34, align 4, !tbaa !23
  %102 = zext i32 %101 to i64
  %103 = load i64, ptr %25, align 8, !tbaa !19
  %104 = icmp ult i64 %102, %103
  br i1 %104, label %114, label %105

105:                                              ; preds = %100
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  br label %175

106:                                              ; preds = %86
  %107 = landingpad { ptr, i32 }
          cleanup
  %108 = extractvalue { ptr, i32 } %107, 0
  store ptr %108, ptr %29, align 8
  %109 = extractvalue { ptr, i32 } %107, 1
  store i32 %109, ptr %30, align 4
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  br label %421

110:                                              ; preds = %91
  %111 = landingpad { ptr, i32 }
          cleanup
  %112 = extractvalue { ptr, i32 } %111, 0
  store ptr %112, ptr %29, align 8
  %113 = extractvalue { ptr, i32 } %111, 1
  store i32 %113, ptr %30, align 4
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #5
  br label %420

114:                                              ; preds = %100
  %115 = load ptr, ptr %15, align 8, !tbaa !5
  %116 = load i32, ptr %34, align 4, !tbaa !23
  %117 = zext i32 %116 to i64
  %118 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %115, i64 noundef %117) #5
  %119 = load i32, ptr %118, align 4, !tbaa !23
  %120 = icmp sgt i32 %119, 0
  br i1 %120, label %121, label %170

121:                                              ; preds = %114
  %122 = load i32, ptr %34, align 4, !tbaa !23
  %123 = zext i32 %122 to i64
  %124 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN9starspace6MatrixIfEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %123) #5
  invoke void @_ZN9starspace6MatrixIfEcvN5boost7numeric5ublas10matrix_rowINS4_6matrixIfNS4_15basic_row_majorImlEENS4_15unbounded_arrayIfSaIfEEEEEEEEv(ptr dead_on_unwind writable sret(%"class.boost::numeric::ublas::matrix_row") align 8 %35, ptr noundef nonnull align 8 dereferenceable(40) %124)
          to label %125 unwind label %148

125:                                              ; preds = %121
  %126 = load i32, ptr %34, align 4, !tbaa !23
  %127 = zext i32 %126 to i64
  %128 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN9starspace6MatrixIfEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %127) #5
  invoke void @_ZN9starspace6MatrixIfEcvN5boost7numeric5ublas10matrix_rowINS4_6matrixIfNS4_15basic_row_majorImlEENS4_15unbounded_arrayIfSaIfEEEEEEEEv(ptr dead_on_unwind writable sret(%"class.boost::numeric::ublas::matrix_row") align 8 %36, ptr noundef nonnull align 8 dereferenceable(40) %128)
          to label %129 unwind label %152

129:                                              ; preds = %125
  %130 = invoke noundef float @_ZN9starspace3dotEN5boost7numeric5ublas10matrix_rowINS2_6matrixIfNS2_15basic_row_majorImlEENS2_15unbounded_arrayIfSaIfEEEEEEESB_(ptr noundef %35, ptr noundef %36)
          to label %131 unwind label %156

131:                                              ; preds = %129
  %132 = load i32, ptr %34, align 4, !tbaa !23
  %133 = zext i32 %132 to i64
  %134 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %133) #5
  store float %130, ptr %134, align 4, !tbaa !9
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #5
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #5
  %135 = load i32, ptr %34, align 4, !tbaa !23
  %136 = zext i32 %135 to i64
  %137 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN9starspace6MatrixIfEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %136) #5
  invoke void @_ZN9starspace6MatrixIfEcvN5boost7numeric5ublas10matrix_rowINS4_6matrixIfNS4_15basic_row_majorImlEENS4_15unbounded_arrayIfSaIfEEEEEEEEv(ptr dead_on_unwind writable sret(%"class.boost::numeric::ublas::matrix_row") align 8 %37, ptr noundef nonnull align 8 dereferenceable(40) %137)
          to label %138 unwind label %148

138:                                              ; preds = %131
  %139 = load i32, ptr %34, align 4, !tbaa !23
  %140 = zext i32 %139 to i64
  %141 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN9starspace6MatrixIfEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %140) #5
  invoke void @_ZN9starspace6MatrixIfEcvN5boost7numeric5ublas10matrix_rowINS4_6matrixIfNS4_15basic_row_majorImlEENS4_15unbounded_arrayIfSaIfEEEEEEEEv(ptr dead_on_unwind writable sret(%"class.boost::numeric::ublas::matrix_row") align 8 %38, ptr noundef nonnull align 8 dereferenceable(40) %141)
          to label %142 unwind label %161

142:                                              ; preds = %138
  %143 = invoke noundef float @_ZN9starspace3dotEN5boost7numeric5ublas10matrix_rowINS2_6matrixIfNS2_15basic_row_majorImlEENS2_15unbounded_arrayIfSaIfEEEEEEESB_(ptr noundef %37, ptr noundef %38)
          to label %144 unwind label %165

144:                                              ; preds = %142
  %145 = load i32, ptr %34, align 4, !tbaa !23
  %146 = zext i32 %145 to i64
  %147 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef %146) #5
  store float %143, ptr %147, align 4, !tbaa !9
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #5
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #5
  br label %170

148:                                              ; preds = %131, %121
  %149 = landingpad { ptr, i32 }
          cleanup
  %150 = extractvalue { ptr, i32 } %149, 0
  store ptr %150, ptr %29, align 8
  %151 = extractvalue { ptr, i32 } %149, 1
  store i32 %151, ptr %30, align 4
  br label %174

152:                                              ; preds = %125
  %153 = landingpad { ptr, i32 }
          cleanup
  %154 = extractvalue { ptr, i32 } %153, 0
  store ptr %154, ptr %29, align 8
  %155 = extractvalue { ptr, i32 } %153, 1
  store i32 %155, ptr %30, align 4
  br label %160

156:                                              ; preds = %129
  %157 = landingpad { ptr, i32 }
          cleanup
  %158 = extractvalue { ptr, i32 } %157, 0
  store ptr %158, ptr %29, align 8
  %159 = extractvalue { ptr, i32 } %157, 1
  store i32 %159, ptr %30, align 4
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #5
  br label %160

160:                                              ; preds = %156, %152
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #5
  br label %174

161:                                              ; preds = %138
  %162 = landingpad { ptr, i32 }
          cleanup
  %163 = extractvalue { ptr, i32 } %162, 0
  store ptr %163, ptr %29, align 8
  %164 = extractvalue { ptr, i32 } %162, 1
  store i32 %164, ptr %30, align 4
  br label %169

165:                                              ; preds = %142
  %166 = landingpad { ptr, i32 }
          cleanup
  %167 = extractvalue { ptr, i32 } %166, 0
  store ptr %167, ptr %29, align 8
  %168 = extractvalue { ptr, i32 } %166, 1
  store i32 %168, ptr %30, align 4
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #5
  br label %169

169:                                              ; preds = %165, %161
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #5
  br label %174

170:                                              ; preds = %144, %114
  br label %171

171:                                              ; preds = %170
  %172 = load i32, ptr %34, align 4, !tbaa !23
  %173 = add i32 %172, 1
  store i32 %173, ptr %34, align 4, !tbaa !23
  br label %100, !llvm.loop !24

174:                                              ; preds = %169, %160, %148
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  br label %419

175:                                              ; preds = %105
  br label %176

176:                                              ; preds = %175, %93
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #5
  store i32 0, ptr %39, align 4, !tbaa !23
  br label %177

177:                                              ; preds = %311, %176
  %178 = load i32, ptr %39, align 4, !tbaa !23
  %179 = zext i32 %178 to i64
  %180 = load i64, ptr %25, align 8, !tbaa !19
  %181 = icmp ult i64 %179, %180
  br i1 %181, label %183, label %182

182:                                              ; preds = %177
  store i32 5, ptr %40, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  br label %314

183:                                              ; preds = %177
  %184 = load ptr, ptr %15, align 8, !tbaa !5
  %185 = load i32, ptr %39, align 4, !tbaa !23
  %186 = zext i32 %185 to i64
  %187 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %184, i64 noundef %186) #5
  %188 = load i32, ptr %187, align 4, !tbaa !23
  %189 = icmp sgt i32 %188, 0
  br i1 %189, label %190, label %310

190:                                              ; preds = %183
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #5
  %191 = load ptr, ptr %11, align 8, !tbaa !5
  %192 = load i32, ptr %39, align 4, !tbaa !23
  %193 = zext i32 %192 to i64
  %194 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNKSt6vectorIN9starspace12ParseResultsESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %191, i64 noundef %193) #5
  %195 = getelementptr inbounds %"struct.starspace::ParseResults", ptr %194, i32 0, i32 1
  store ptr %195, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #5
  %196 = load ptr, ptr %11, align 8, !tbaa !5
  %197 = load i32, ptr %39, align 4, !tbaa !23
  %198 = zext i32 %197 to i64
  %199 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNKSt6vectorIN9starspace12ParseResultsESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %196, i64 noundef %198) #5
  %200 = getelementptr inbounds %"struct.starspace::ParseResults", ptr %199, i32 0, i32 2
  store ptr %200, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #5
  %201 = load ptr, ptr %41, align 8, !tbaa !5
  store ptr %201, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #5
  %202 = load ptr, ptr %43, align 8, !tbaa !5
  %203 = call ptr @_ZNKSt6vectorISt4pairIifESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %202) #5
  %204 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.83", ptr %44, i32 0, i32 0
  store ptr %203, ptr %204, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #5
  %205 = load ptr, ptr %43, align 8, !tbaa !5
  %206 = call ptr @_ZNKSt6vectorISt4pairIifESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %205) #5
  %207 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.83", ptr %45, i32 0, i32 0
  store ptr %206, ptr %207, align 8
  br label %208

208:                                              ; preds = %236, %190
  %209 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIifESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(8) %45) #5
  br i1 %209, label %211, label %210

210:                                              ; preds = %208
  store i32 8, ptr %40, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  br label %252

211:                                              ; preds = %208
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #5
  %212 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairIifESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %44) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %46, ptr align 4 %212, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %47) #5
  %213 = getelementptr inbounds %"struct.starspace::EmbedModel", ptr %72, i32 0, i32 1
  %214 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9starspace12SparseLinearIfEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %213) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %48, ptr align 4 %46, i64 8, i1 false)
  %215 = load i64, ptr %48, align 4
  %216 = call noundef i32 @_ZN9starspace5indexESt4pairIifE(i64 %215)
  %217 = sext i32 %216 to i64
  invoke void @_ZN9starspace6MatrixIfE3rowEm(ptr dead_on_unwind writable sret(%"class.boost::numeric::ublas::matrix_row") align 8 %47, ptr noundef nonnull align 8 dereferenceable(40) %214, i64 noundef %217)
          to label %218 unwind label %238

218:                                              ; preds = %211
  %219 = load ptr, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %49) #5
  %220 = load i32, ptr %39, align 4, !tbaa !23
  %221 = zext i32 %220 to i64
  %222 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN9starspace6MatrixIfEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %221) #5
  invoke void @_ZN9starspace6MatrixIfEcvN5boost7numeric5ublas10matrix_rowINS4_6matrixIfNS4_15basic_row_majorImlEENS4_15unbounded_arrayIfSaIfEEEEEEEEv(ptr dead_on_unwind writable sret(%"class.boost::numeric::ublas::matrix_row") align 8 %49, ptr noundef nonnull align 8 dereferenceable(40) %222)
          to label %223 unwind label %242

223:                                              ; preds = %218
  %224 = load float, ptr %16, align 4, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %50, ptr align 4 %46, i64 8, i1 false)
  %225 = load i64, ptr %50, align 4
  %226 = call noundef float @_ZN9starspace6weightESt4pairIifE(i64 %225)
  %227 = fmul float %224, %226
  %228 = load i32, ptr %39, align 4, !tbaa !23
  %229 = zext i32 %228 to i64
  %230 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %229) #5
  %231 = load float, ptr %230, align 4, !tbaa !9
  %232 = getelementptr inbounds %"struct.starspace::EmbedModel", ptr %72, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %51, ptr align 4 %46, i64 8, i1 false)
  %233 = load i64, ptr %51, align 4
  %234 = call noundef i32 @_ZN9starspace5indexESt4pairIifE(i64 %233)
  invoke void @_ZNKSt8functionIFvRN5boost7numeric5ublas10matrix_rowINS2_6matrixIfNS2_15basic_row_majorImlEENS2_15unbounded_arrayIfSaIfEEEEEEERKSB_ffRSt6vectorIfS8_EiEEclESC_SE_ffSH_i(ptr noundef nonnull align 8 dereferenceable(32) %219, ptr noundef nonnull align 8 dereferenceable(16) %47, ptr noundef nonnull align 8 dereferenceable(16) %49, float noundef %227, float noundef %231, ptr noundef nonnull align 8 dereferenceable(24) %232, i32 noundef %234)
          to label %235 unwind label %246

235:                                              ; preds = %223
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #5
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  br label %236

236:                                              ; preds = %235
  %237 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIifESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %44) #5
  br label %208

238:                                              ; preds = %211
  %239 = landingpad { ptr, i32 }
          cleanup
  %240 = extractvalue { ptr, i32 } %239, 0
  store ptr %240, ptr %29, align 8
  %241 = extractvalue { ptr, i32 } %239, 1
  store i32 %241, ptr %30, align 4
  br label %251

242:                                              ; preds = %218
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %29, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %30, align 4
  br label %250

246:                                              ; preds = %223
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %29, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %30, align 4
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #5
  br label %250

250:                                              ; preds = %246, %242
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #5
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #5
  br label %251

251:                                              ; preds = %250, %238
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  br label %309

252:                                              ; preds = %210
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #5
  %253 = load ptr, ptr %42, align 8, !tbaa !5
  store ptr %253, ptr %52, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #5
  %254 = load ptr, ptr %52, align 8, !tbaa !5
  %255 = call ptr @_ZNKSt6vectorISt4pairIifESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %254) #5
  %256 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.83", ptr %53, i32 0, i32 0
  store ptr %255, ptr %256, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #5
  %257 = load ptr, ptr %52, align 8, !tbaa !5
  %258 = call ptr @_ZNKSt6vectorISt4pairIifESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %257) #5
  %259 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.83", ptr %54, i32 0, i32 0
  store ptr %258, ptr %259, align 8
  br label %260

260:                                              ; preds = %292, %252
  %261 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIifESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull align 8 dereferenceable(8) %54) #5
  br i1 %261, label %263, label %262

262:                                              ; preds = %260
  store i32 10, ptr %40, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  br label %308

263:                                              ; preds = %260
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #5
  %264 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairIifESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %53) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %55, ptr align 4 %264, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %56) #5
  %265 = getelementptr inbounds %"struct.starspace::EmbedModel", ptr %72, i32 0, i32 2
  %266 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9starspace12SparseLinearIfEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %265) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %57, ptr align 4 %55, i64 8, i1 false)
  %267 = load i64, ptr %57, align 4
  %268 = call noundef i32 @_ZN9starspace5indexESt4pairIifE(i64 %267)
  %269 = sext i32 %268 to i64
  invoke void @_ZN9starspace6MatrixIfE3rowEm(ptr dead_on_unwind writable sret(%"class.boost::numeric::ublas::matrix_row") align 8 %56, ptr noundef nonnull align 8 dereferenceable(40) %266, i64 noundef %269)
          to label %270 unwind label %294

270:                                              ; preds = %263
  %271 = load ptr, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %58) #5
  %272 = load i32, ptr %39, align 4, !tbaa !23
  %273 = zext i32 %272 to i64
  %274 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN9starspace6MatrixIfEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %273) #5
  invoke void @_ZN9starspace6MatrixIfEcvN5boost7numeric5ublas10matrix_rowINS4_6matrixIfNS4_15basic_row_majorImlEENS4_15unbounded_arrayIfSaIfEEEEEEEEv(ptr dead_on_unwind writable sret(%"class.boost::numeric::ublas::matrix_row") align 8 %58, ptr noundef nonnull align 8 dereferenceable(40) %274)
          to label %275 unwind label %298

275:                                              ; preds = %270
  %276 = load ptr, ptr %17, align 8, !tbaa !5
  %277 = load i32, ptr %39, align 4, !tbaa !23
  %278 = zext i32 %277 to i64
  %279 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %276, i64 noundef %278) #5
  %280 = load float, ptr %279, align 4, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %59, ptr align 4 %55, i64 8, i1 false)
  %281 = load i64, ptr %59, align 4
  %282 = call noundef float @_ZN9starspace6weightESt4pairIifE(i64 %281)
  %283 = fmul float %280, %282
  %284 = load i32, ptr %39, align 4, !tbaa !23
  %285 = zext i32 %284 to i64
  %286 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef %285) #5
  %287 = load float, ptr %286, align 4, !tbaa !9
  %288 = getelementptr inbounds %"struct.starspace::EmbedModel", ptr %72, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %60, ptr align 4 %55, i64 8, i1 false)
  %289 = load i64, ptr %60, align 4
  %290 = call noundef i32 @_ZN9starspace5indexESt4pairIifE(i64 %289)
  invoke void @_ZNKSt8functionIFvRN5boost7numeric5ublas10matrix_rowINS2_6matrixIfNS2_15basic_row_majorImlEENS2_15unbounded_arrayIfSaIfEEEEEEERKSB_ffRSt6vectorIfS8_EiEEclESC_SE_ffSH_i(ptr noundef nonnull align 8 dereferenceable(32) %271, ptr noundef nonnull align 8 dereferenceable(16) %56, ptr noundef nonnull align 8 dereferenceable(16) %58, float noundef %283, float noundef %287, ptr noundef nonnull align 8 dereferenceable(24) %288, i32 noundef %290)
          to label %291 unwind label %302

291:                                              ; preds = %275
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #5
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  br label %292

292:                                              ; preds = %291
  %293 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIifESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %53) #5
  br label %260

294:                                              ; preds = %263
  %295 = landingpad { ptr, i32 }
          cleanup
  %296 = extractvalue { ptr, i32 } %295, 0
  store ptr %296, ptr %29, align 8
  %297 = extractvalue { ptr, i32 } %295, 1
  store i32 %297, ptr %30, align 4
  br label %307

298:                                              ; preds = %270
  %299 = landingpad { ptr, i32 }
          cleanup
  %300 = extractvalue { ptr, i32 } %299, 0
  store ptr %300, ptr %29, align 8
  %301 = extractvalue { ptr, i32 } %299, 1
  store i32 %301, ptr %30, align 4
  br label %306

302:                                              ; preds = %275
  %303 = landingpad { ptr, i32 }
          cleanup
  %304 = extractvalue { ptr, i32 } %303, 0
  store ptr %304, ptr %29, align 8
  %305 = extractvalue { ptr, i32 } %303, 1
  store i32 %305, ptr %30, align 4
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58) #5
  br label %306

306:                                              ; preds = %302, %298
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #5
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #5
  br label %307

307:                                              ; preds = %306, %294
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  br label %309

308:                                              ; preds = %262
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  br label %310

309:                                              ; preds = %307, %251
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  br label %419

310:                                              ; preds = %308, %183
  br label %311

311:                                              ; preds = %310
  %312 = load i32, ptr %39, align 4, !tbaa !23
  %313 = add i32 %312, 1
  store i32 %313, ptr %39, align 4, !tbaa !23
  br label %177, !llvm.loop !26

314:                                              ; preds = %182
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #5
  store i32 0, ptr %61, align 4, !tbaa !23
  br label %315

315:                                              ; preds = %415, %314
  %316 = load i32, ptr %61, align 4, !tbaa !23
  %317 = zext i32 %316 to i64
  %318 = load ptr, ptr %12, align 8, !tbaa !5
  %319 = call noundef i64 @_ZNKSt6vectorIS_ISt4pairIifESaIS1_EESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %318) #5
  %320 = icmp ult i64 %317, %319
  br i1 %320, label %322, label %321

321:                                              ; preds = %315
  store i32 12, ptr %40, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #5
  br label %418

322:                                              ; preds = %315
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #5
  store i32 0, ptr %62, align 4, !tbaa !23
  br label %323

323:                                              ; preds = %410, %322
  %324 = load i32, ptr %62, align 4, !tbaa !23
  %325 = zext i32 %324 to i64
  %326 = load i64, ptr %25, align 8, !tbaa !19
  %327 = icmp ult i64 %325, %326
  br i1 %327, label %329, label %328

328:                                              ; preds = %323
  store i32 15, ptr %40, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #5
  br label %414

329:                                              ; preds = %323
  %330 = load ptr, ptr %18, align 8, !tbaa !5
  %331 = load i32, ptr %62, align 4, !tbaa !23
  %332 = zext i32 %331 to i64
  %333 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IfSaIfEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %330, i64 noundef %332) #5
  %334 = load i32, ptr %61, align 4, !tbaa !23
  %335 = zext i32 %334 to i64
  %336 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %333, i64 noundef %335) #5
  %337 = load float, ptr %336, align 4, !tbaa !9
  %338 = invoke noundef float @_ZSt4fabsf(float noundef %337)
          to label %339 unwind label %356

339:                                              ; preds = %329
  %340 = fpext float %338 to double
  %341 = fcmp ogt double %340, 1.000000e-08
  br i1 %341, label %342, label %409

342:                                              ; preds = %339
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #5
  %343 = load ptr, ptr %12, align 8, !tbaa !5
  %344 = load i32, ptr %61, align 4, !tbaa !23
  %345 = zext i32 %344 to i64
  %346 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_ISt4pairIifESaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %343, i64 noundef %345) #5
  store ptr %346, ptr %63, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #5
  %347 = load ptr, ptr %63, align 8, !tbaa !5
  %348 = call ptr @_ZNKSt6vectorISt4pairIifESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %347) #5
  %349 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.83", ptr %64, i32 0, i32 0
  store ptr %348, ptr %349, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #5
  %350 = load ptr, ptr %63, align 8, !tbaa !5
  %351 = call ptr @_ZNKSt6vectorISt4pairIifESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %350) #5
  %352 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.83", ptr %65, i32 0, i32 0
  store ptr %351, ptr %352, align 8
  br label %353

353:                                              ; preds = %392, %342
  %354 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIifESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(8) %65) #5
  br i1 %354, label %360, label %355

355:                                              ; preds = %353
  store i32 18, ptr %40, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #5
  br label %408

356:                                              ; preds = %329
  %357 = landingpad { ptr, i32 }
          cleanup
  %358 = extractvalue { ptr, i32 } %357, 0
  store ptr %358, ptr %29, align 8
  %359 = extractvalue { ptr, i32 } %357, 1
  store i32 %359, ptr %30, align 4
  br label %413

360:                                              ; preds = %353
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #5
  %361 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairIifESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %64) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %66, ptr align 4 %361, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %67) #5
  %362 = getelementptr inbounds %"struct.starspace::EmbedModel", ptr %72, i32 0, i32 2
  %363 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9starspace12SparseLinearIfEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %362) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %68, ptr align 4 %66, i64 8, i1 false)
  %364 = load i64, ptr %68, align 4
  %365 = call noundef i32 @_ZN9starspace5indexESt4pairIifE(i64 %364)
  %366 = sext i32 %365 to i64
  invoke void @_ZN9starspace6MatrixIfE3rowEm(ptr dead_on_unwind writable sret(%"class.boost::numeric::ublas::matrix_row") align 8 %67, ptr noundef nonnull align 8 dereferenceable(40) %363, i64 noundef %366)
          to label %367 unwind label %394

367:                                              ; preds = %360
  %368 = load ptr, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %69) #5
  %369 = load i32, ptr %62, align 4, !tbaa !23
  %370 = zext i32 %369 to i64
  %371 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN9starspace6MatrixIfEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %370) #5
  invoke void @_ZN9starspace6MatrixIfEcvN5boost7numeric5ublas10matrix_rowINS4_6matrixIfNS4_15basic_row_majorImlEENS4_15unbounded_arrayIfSaIfEEEEEEEEv(ptr dead_on_unwind writable sret(%"class.boost::numeric::ublas::matrix_row") align 8 %69, ptr noundef nonnull align 8 dereferenceable(40) %371)
          to label %372 unwind label %398

372:                                              ; preds = %367
  %373 = load ptr, ptr %18, align 8, !tbaa !5
  %374 = load i32, ptr %62, align 4, !tbaa !23
  %375 = zext i32 %374 to i64
  %376 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IfSaIfEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %373, i64 noundef %375) #5
  %377 = load i32, ptr %61, align 4, !tbaa !23
  %378 = zext i32 %377 to i64
  %379 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %376, i64 noundef %378) #5
  %380 = load float, ptr %379, align 4, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %70, ptr align 4 %66, i64 8, i1 false)
  %381 = load i64, ptr %70, align 4
  %382 = call noundef float @_ZN9starspace6weightESt4pairIifE(i64 %381)
  %383 = fmul float %380, %382
  %384 = load i32, ptr %62, align 4, !tbaa !23
  %385 = zext i32 %384 to i64
  %386 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef %385) #5
  %387 = load float, ptr %386, align 4, !tbaa !9
  %388 = getelementptr inbounds %"struct.starspace::EmbedModel", ptr %72, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %71, ptr align 4 %66, i64 8, i1 false)
  %389 = load i64, ptr %71, align 4
  %390 = call noundef i32 @_ZN9starspace5indexESt4pairIifE(i64 %389)
  invoke void @_ZNKSt8functionIFvRN5boost7numeric5ublas10matrix_rowINS2_6matrixIfNS2_15basic_row_majorImlEENS2_15unbounded_arrayIfSaIfEEEEEEERKSB_ffRSt6vectorIfS8_EiEEclESC_SE_ffSH_i(ptr noundef nonnull align 8 dereferenceable(32) %368, ptr noundef nonnull align 8 dereferenceable(16) %67, ptr noundef nonnull align 8 dereferenceable(16) %69, float noundef %383, float noundef %387, ptr noundef nonnull align 8 dereferenceable(24) %388, i32 noundef %390)
          to label %391 unwind label %402

391:                                              ; preds = %372
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %69) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #5
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  br label %392

392:                                              ; preds = %391
  %393 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIifESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %64) #5
  br label %353

394:                                              ; preds = %360
  %395 = landingpad { ptr, i32 }
          cleanup
  %396 = extractvalue { ptr, i32 } %395, 0
  store ptr %396, ptr %29, align 8
  %397 = extractvalue { ptr, i32 } %395, 1
  store i32 %397, ptr %30, align 4
  br label %407

398:                                              ; preds = %367
  %399 = landingpad { ptr, i32 }
          cleanup
  %400 = extractvalue { ptr, i32 } %399, 0
  store ptr %400, ptr %29, align 8
  %401 = extractvalue { ptr, i32 } %399, 1
  store i32 %401, ptr %30, align 4
  br label %406

402:                                              ; preds = %372
  %403 = landingpad { ptr, i32 }
          cleanup
  %404 = extractvalue { ptr, i32 } %403, 0
  store ptr %404, ptr %29, align 8
  %405 = extractvalue { ptr, i32 } %403, 1
  store i32 %405, ptr %30, align 4
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %69) #5
  br label %406

406:                                              ; preds = %402, %398
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #5
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #5
  br label %407

407:                                              ; preds = %406, %394
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #5
  br label %413

408:                                              ; preds = %355
  br label %409

409:                                              ; preds = %408, %339
  br label %410

410:                                              ; preds = %409
  %411 = load i32, ptr %62, align 4, !tbaa !23
  %412 = add i32 %411, 1
  store i32 %412, ptr %62, align 4, !tbaa !23
  br label %323, !llvm.loop !27

413:                                              ; preds = %407, %356
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #5
  br label %419

414:                                              ; preds = %328
  br label %415

415:                                              ; preds = %414
  %416 = load i32, ptr %61, align 4, !tbaa !23
  %417 = add i32 %416, 1
  store i32 %417, ptr %61, align 4, !tbaa !23
  br label %315, !llvm.loop !28

418:                                              ; preds = %321
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #5
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #5
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  ret void

419:                                              ; preds = %413, %309, %174
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #5
  br label %420

420:                                              ; preds = %419, %110
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #5
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #5
  br label %421

421:                                              ; preds = %420, %106
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #5
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  br label %422

422:                                              ; preds = %421
  %423 = load ptr, ptr %29, align 8
  %424 = load i32, ptr %30, align 4
  %425 = insertvalue { ptr, i32 } poison, ptr %423, 0
  %426 = insertvalue { ptr, i32 } %425, i32 %424, 1
  resume { ptr, i32 } %426
}

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRN5boost7numeric5ublas10matrix_rowINS2_6matrixIfNS2_15basic_row_majorImlEENS2_15unbounded_arrayIfSaIfEEEEEEERKSB_ffRSt6vectorIfS8_EiEEC2IZN9starspace10EmbedModel8backwardERKSF_INSL_12ParseResultsESaISN_EERKSF_ISF_ISt4pairIifESaIST_EESaISV_EESF_INSL_6MatrixIfEESaIS11_EES13_RKSF_IiSaIiEEfRKSG_RKSF_ISG_SaISG_EEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRN5boost7numeric5ublas10matrix_rowINS2_6matrixIfNS2_15basic_row_majorImlEENS2_15unbounded_arrayIfSaIfEEEEEEERKSB_ffRSt6vectorIfS8_EiEEC2IZN9starspace10EmbedModel8backwardERKSF_INSL_12ParseResultsESaISN_EERKSF_ISF_ISt4pairIifESaIST_EESaISV_EESF_INSL_6MatrixIfEESaIS11_EES13_RKSF_IiSaIiEEfRKSG_RKSF_ISG_SaISG_EEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #0 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIifESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #3

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9starspace6MatrixIfE3rowEm(ptr dead_on_unwind noalias writable sret(%"class.boost::numeric::ublas::matrix_row") align 8, ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) #2 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt4fabsf(float noundef) #3

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

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

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

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

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { 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 #4 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = !{!12, !15, i64 464}
!12 = !{!"_ZTSN9starspace4ArgsE", !13, i64 0, !13, i64 32, !13, i64 64, !13, i64 96, !13, i64 128, !13, i64 160, !13, i64 192, !13, i64 224, !13, i64 256, !13, i64 288, !13, i64 320, !13, i64 352, !7, i64 384, !16, i64 392, !16, i64 400, !16, i64 408, !16, i64 416, !16, i64 424, !16, i64 432, !16, i64 440, !16, i64 448, !16, i64 456, !15, i64 464, !17, i64 472, !17, i64 476, !17, i64 480, !17, i64 484, !17, i64 488, !17, i64 492, !17, i64 496, !17, i64 500, !17, i64 504, !17, i64 508, !17, i64 512, !17, i64 516, !17, i64 520, !17, i64 524, !17, i64 528, !18, i64 532, !18, i64 533, !18, i64 534, !18, i64 535, !18, i64 536, !18, i64 537, !18, i64 538, !18, i64 539, !18, i64 540, !18, i64 541, !18, i64 542}
!13 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !14, i64 0, !15, i64 8, !7, i64 16}
!14 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!15 = !{!"long", !7, i64 0}
!16 = !{!"double", !7, i64 0}
!17 = !{!"int", !7, i64 0}
!18 = !{!"bool", !7, i64 0}
!19 = !{!15, !15, i64 0}
!20 = !{!12, !18, i64 534}
!21 = !{i8 0, i8 2}
!22 = !{}
!23 = !{!17, !17, i64 0}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = distinct !{!26, !25}
!27 = distinct !{!27, !25}
!28 = distinct !{!28, !25}


; 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.boost::numeric::ublas::matrix_row" = type { %"class.boost::numeric::ublas::matrix_reference", i64 }
%"class.boost::numeric::ublas::matrix_reference" = type { ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.81 = type { i8 }
%class.anon.82 = type { ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator" = type { i8 }
%"class.__gnu_cxx::__normal_iterator.83" = type { ptr }

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZN9starspace3dotEN5boost7numeric5ublas10matrix_rowINS2_6matrixIfNS2_15basic_row_majorImlEENS2_15unbounded_arrayIfSaIfEEEEEEESB_(ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN9starspace5indexESt4pairIifE(i64) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZN9starspace6weightESt4pairIifE(i64) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9starspace6MatrixIfEcvN5boost7numeric5ublas10matrix_rowINS4_6matrixIfNS4_15basic_row_majorImlEENS4_15unbounded_arrayIfSaIfEEEEEEEEv(ptr dead_on_unwind noalias writable sret(%"class.boost::numeric::ublas::matrix_row") align 8, ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #2 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN9starspace10EmbedModel8backwardERKSt6vectorINS_12ParseResultsESaIS2_EERKS1_IS1_ISt4pairIifESaIS8_EESaISA_EES1_INS_6MatrixIfEESaISG_EESI_RKS1_IiSaIiEEfRKS1_IfSaIfEERKS1_ISO_SaISO_EE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef %3, ptr noundef %4, ptr noundef nonnull align 8 dereferenceable(24) %5, float noundef %6, ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %8) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %10 = alloca i64, align 8
  %11 = alloca %"class.std::function", align 8
  %12 = alloca %class.anon.81, align 1
  %13 = alloca %"class.std::function", align 8
  %14 = alloca %class.anon.82, align 8
  %15 = alloca %"class.std::vector", align 8
  %16 = alloca float, align 4
  %17 = alloca %"class.std::allocator", align 1
  %18 = alloca %"class.std::vector", align 8
  %19 = alloca float, align 4
  %20 = alloca %"class.std::allocator", align 1
  %21 = alloca %"class.boost::numeric::ublas::matrix_row", align 8
  %22 = alloca %"class.boost::numeric::ublas::matrix_row", align 8
  %23 = alloca %"class.boost::numeric::ublas::matrix_row", align 8
  %24 = alloca %"class.boost::numeric::ublas::matrix_row", align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator.83", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator.83", align 8
  %27 = alloca %"class.boost::numeric::ublas::matrix_row", align 8
  %28 = alloca %"class.boost::numeric::ublas::matrix_row", align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator.83", align 8
  %30 = alloca %"class.__gnu_cxx::__normal_iterator.83", align 8
  %31 = alloca %"class.boost::numeric::ublas::matrix_row", align 8
  %32 = alloca %"class.boost::numeric::ublas::matrix_row", align 8
  %33 = alloca %"class.__gnu_cxx::__normal_iterator.83", align 8
  %34 = alloca %"class.__gnu_cxx::__normal_iterator.83", align 8
  %35 = alloca %"class.boost::numeric::ublas::matrix_row", align 8
  %36 = alloca %"class.boost::numeric::ublas::matrix_row", align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #4
  %37 = getelementptr inbounds i8, ptr %0, i64 48
  %38 = tail call noundef ptr @_ZNKSt19__shared_ptr_accessIN9starspace4ArgsELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %37) #4
  %39 = getelementptr inbounds i8, ptr %38, i64 464
  %40 = load i64, ptr %39, align 8, !tbaa !5
  store i64 %40, ptr %10, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #4
  call void @"_ZNSt8functionIFvRN5boost7numeric5ublas10matrix_rowINS2_6matrixIfNS2_15basic_row_majorImlEENS2_15unbounded_arrayIfSaIfEEEEEEERKSB_ffRSt6vectorIfS8_EiEEC2IZN9starspace10EmbedModel8backwardERKSF_INSL_12ParseResultsESaISN_EERKSF_ISF_ISt4pairIifESaIST_EESaISV_EESF_INSL_6MatrixIfEESaIS11_EES13_RKSF_IiSaIiEEfRKSG_RKSF_ISG_SaISG_EEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 1 dereferenceable(1) %12) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #4
  store ptr %10, ptr %14, align 8, !tbaa !17
  %41 = getelementptr inbounds i8, ptr %14, i64 8
  store ptr %11, ptr %41, align 8, !tbaa !17
  call void @"_ZNSt8functionIFvRN5boost7numeric5ublas10matrix_rowINS2_6matrixIfNS2_15basic_row_majorImlEENS2_15unbounded_arrayIfSaIfEEEEEEERKSB_ffRSt6vectorIfS8_EiEEC2IZN9starspace10EmbedModel8backwardERKSF_INSL_12ParseResultsESaISN_EERKSF_ISF_ISt4pairIifESaIST_EESaISV_EESF_INSL_6MatrixIfEESaIS11_EES13_RKSF_IiSaIiEEfRKSG_RKSF_ISG_SaISG_EEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(16) %14) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #4
  %42 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9starspace4ArgsELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %37) #4
  %43 = getelementptr inbounds i8, ptr %42, i64 534
  %44 = load i8, ptr %43, align 2, !tbaa !18, !range !19, !noundef !20
  %45 = trunc nuw i8 %44 to i1
  %. = select i1 %45, ptr %13, ptr %11
  %46 = call noundef i64 @_ZNKSt6vectorIN9starspace12ParseResultsESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #4
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #4
  store float 0.000000e+00, ptr %16, align 4, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #4
  call void @_ZNSaIfEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #4
  invoke void @_ZNSt6vectorIfSaIfEEC2EmRKfRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %46, ptr noundef nonnull align 4 dereferenceable(4) %16, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %47 unwind label %54

47:                                               ; preds = %9
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #4
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #4
  store float 0.000000e+00, ptr %19, align 4, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #4
  call void @_ZNSaIfEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #4
  invoke void @_ZNSt6vectorIfSaIfEEC2EmRKfRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %46, ptr noundef nonnull align 4 dereferenceable(4) %19, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %48 unwind label %56

48:                                               ; preds = %47
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #4
  %49 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9starspace4ArgsELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %37) #4
  %50 = getelementptr inbounds i8, ptr %49, i64 534
  %51 = load i8, ptr %50, align 2, !tbaa !18, !range !19, !noundef !20
  %52 = trunc nuw i8 %51 to i1
  %53 = icmp ne i64 %46, 0
  %or.cond = and i1 %53, %52
  br i1 %or.cond, label %.lr.ph, label %.loopexit

54:                                               ; preds = %9
  %55 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #4
  br label %219

56:                                               ; preds = %47
  %57 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #4
  br label %218

.lr.ph:                                           ; preds = %48, %89
  %58 = phi i64 [ %91, %89 ], [ 0, %48 ]
  %.089117 = phi i32 [ %90, %89 ], [ 0, %48 ]
  %59 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %58) #4
  %60 = load i32, ptr %59, align 4, !tbaa !23
  %61 = icmp sgt i32 %60, 0
  br i1 %61, label %62, label %89

62:                                               ; preds = %.lr.ph
  %63 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN9starspace6MatrixIfEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %58) #4
  invoke void @_ZN9starspace6MatrixIfEcvN5boost7numeric5ublas10matrix_rowINS4_6matrixIfNS4_15basic_row_majorImlEENS4_15unbounded_arrayIfSaIfEEEEEEEEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::numeric::ublas::matrix_row") align 8 %21, ptr noundef nonnull align 8 dereferenceable(40) %63)
          to label %64 unwind label %77

64:                                               ; preds = %62
  %65 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN9starspace6MatrixIfEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %58) #4
  invoke void @_ZN9starspace6MatrixIfEcvN5boost7numeric5ublas10matrix_rowINS4_6matrixIfNS4_15basic_row_majorImlEENS4_15unbounded_arrayIfSaIfEEEEEEEEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::numeric::ublas::matrix_row") align 8 %22, ptr noundef nonnull align 8 dereferenceable(40) %65)
          to label %66 unwind label %79

66:                                               ; preds = %64
  %67 = invoke noundef float @_ZN9starspace3dotEN5boost7numeric5ublas10matrix_rowINS2_6matrixIfNS2_15basic_row_majorImlEENS2_15unbounded_arrayIfSaIfEEEEEEESB_(ptr noundef nonnull %21, ptr noundef nonnull %22)
          to label %68 unwind label %81

68:                                               ; preds = %66
  %69 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %58) #4
  store float %67, ptr %69, align 4, !tbaa !21
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #4
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #4
  %70 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN9starspace6MatrixIfEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %58) #4
  invoke void @_ZN9starspace6MatrixIfEcvN5boost7numeric5ublas10matrix_rowINS4_6matrixIfNS4_15basic_row_majorImlEENS4_15unbounded_arrayIfSaIfEEEEEEEEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::numeric::ublas::matrix_row") align 8 %23, ptr noundef nonnull align 8 dereferenceable(40) %70)
          to label %71 unwind label %77

71:                                               ; preds = %68
  %72 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN9starspace6MatrixIfEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %58) #4
  invoke void @_ZN9starspace6MatrixIfEcvN5boost7numeric5ublas10matrix_rowINS4_6matrixIfNS4_15basic_row_majorImlEENS4_15unbounded_arrayIfSaIfEEEEEEEEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::numeric::ublas::matrix_row") align 8 %24, ptr noundef nonnull align 8 dereferenceable(40) %72)
          to label %73 unwind label %84

73:                                               ; preds = %71
  %74 = invoke noundef float @_ZN9starspace3dotEN5boost7numeric5ublas10matrix_rowINS2_6matrixIfNS2_15basic_row_majorImlEENS2_15unbounded_arrayIfSaIfEEEEEEESB_(ptr noundef nonnull %23, ptr noundef nonnull %24)
          to label %75 unwind label %86

75:                                               ; preds = %73
  %76 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %58) #4
  store float %74, ptr %76, align 4, !tbaa !21
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #4
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #4
  br label %89

77:                                               ; preds = %68, %62
  %78 = landingpad { ptr, i32 }
          cleanup
  br label %217

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

81:                                               ; preds = %66
  %82 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #4
  br label %83

83:                                               ; preds = %81, %79
  %.pn107 = phi { ptr, i32 } [ %82, %81 ], [ %80, %79 ]
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #4
  br label %217

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

86:                                               ; preds = %73
  %87 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #4
  br label %88

88:                                               ; preds = %86, %84
  %.pn109 = phi { ptr, i32 } [ %87, %86 ], [ %85, %84 ]
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #4
  br label %217

89:                                               ; preds = %.lr.ph, %75
  %90 = add i32 %.089117, 1
  %91 = zext i32 %90 to i64
  %92 = icmp ugt i64 %46, %91
  br i1 %92, label %.lr.ph, label %.lr.ph124, !llvm.loop !24

.loopexit:                                        ; preds = %48
  %.not = icmp eq i64 %46, 0
  br i1 %.not, label %.preheader115, label %.lr.ph124

.lr.ph124:                                        ; preds = %89, %.loopexit
  %93 = getelementptr inbounds i8, ptr %0, i64 16
  %94 = getelementptr inbounds i8, ptr %0, i64 64
  %95 = getelementptr inbounds i8, ptr %0, i64 32
  %96 = getelementptr inbounds i8, ptr %0, i64 88
  br label %143

.preheader115:                                    ; preds = %207, %.loopexit
  %.not144 = phi i1 [ true, %.loopexit ], [ false, %207 ]
  %97 = call noundef i64 @_ZNKSt6vectorIS_ISt4pairIifESaIS1_EESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #4
  %.not139 = icmp eq i64 %97, 0
  br i1 %.not139, label %._crit_edge132, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %.preheader115
  %98 = getelementptr inbounds i8, ptr %0, i64 32
  %99 = getelementptr inbounds i8, ptr %0, i64 88
  br i1 %.not144, label %.preheader, label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.lr.ph, %._crit_edge130.us
  %100 = phi i64 [ %137, %._crit_edge130.us ], [ 0, %.preheader.lr.ph ]
  %.092131.us = phi i32 [ %136, %._crit_edge130.us ], [ 0, %.preheader.lr.ph ]
  br label %101

101:                                              ; preds = %.preheader.us, %114
  %102 = phi i64 [ 0, %.preheader.us ], [ %116, %114 ]
  %.091128.us = phi i32 [ 0, %.preheader.us ], [ %115, %114 ]
  %103 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IfSaIfEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %102) #4
  %104 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %103, i64 noundef %100) #4
  %105 = load float, ptr %104, align 4, !tbaa !21
  %106 = call noundef float @_ZSt4fabsf(float noundef %105)
  %107 = fpext float %106 to double
  %108 = fcmp ogt double %107, 1.000000e-08
  br i1 %108, label %109, label %114

109:                                              ; preds = %101
  %110 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_ISt4pairIifESaIS1_EESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %100) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #4
  %111 = call ptr @_ZNKSt6vectorISt4pairIifESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %110) #4
  store ptr %111, ptr %33, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #4
  %112 = call ptr @_ZNKSt6vectorISt4pairIifESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %110) #4
  store ptr %112, ptr %34, align 8
  %113 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIifESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %34) #4
  br i1 %113, label %.lr.ph126.us, label %._crit_edge127.us

._crit_edge127.us:                                ; preds = %133, %109
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #4
  br label %114

114:                                              ; preds = %._crit_edge127.us, %101
  %115 = add i32 %.091128.us, 1
  %116 = zext i32 %115 to i64
  %117 = icmp ugt i64 %46, %116
  br i1 %117, label %101, label %._crit_edge130.us, !llvm.loop !26

.lr.ph126.us:                                     ; preds = %109, %133
  %118 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairIifESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %33) #4
  %.sroa.03.0.copyload.us = load i64, ptr %118, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %35) #4
  %119 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9starspace12SparseLinearIfEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %98) #4
  %120 = call noundef i32 @_ZN9starspace5indexESt4pairIifE(i64 %.sroa.03.0.copyload.us)
  %121 = sext i32 %120 to i64
  invoke void @_ZN9starspace6MatrixIfE3rowEm(ptr dead_on_unwind nonnull writable sret(%"class.boost::numeric::ublas::matrix_row") align 8 %35, ptr noundef nonnull align 8 dereferenceable(40) %119, i64 noundef %121)
          to label %122 unwind label %.split.us

122:                                              ; preds = %.lr.ph126.us
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #4
  %123 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN9starspace6MatrixIfEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %102) #4
  invoke void @_ZN9starspace6MatrixIfEcvN5boost7numeric5ublas10matrix_rowINS4_6matrixIfNS4_15basic_row_majorImlEENS4_15unbounded_arrayIfSaIfEEEEEEEEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::numeric::ublas::matrix_row") align 8 %36, ptr noundef nonnull align 8 dereferenceable(40) %123)
          to label %124 unwind label %.split134.us

124:                                              ; preds = %122
  %125 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IfSaIfEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %102) #4
  %126 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %125, i64 noundef %100) #4
  %127 = load float, ptr %126, align 4, !tbaa !21
  %128 = call noundef float @_ZN9starspace6weightESt4pairIifE(i64 %.sroa.03.0.copyload.us)
  %129 = fmul float %127, %128
  %130 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %102) #4
  %131 = load float, ptr %130, align 4, !tbaa !21
  %132 = call noundef i32 @_ZN9starspace5indexESt4pairIifE(i64 %.sroa.03.0.copyload.us)
  invoke void @_ZNKSt8functionIFvRN5boost7numeric5ublas10matrix_rowINS2_6matrixIfNS2_15basic_row_majorImlEENS2_15unbounded_arrayIfSaIfEEEEEEERKSB_ffRSt6vectorIfS8_EiEEclESC_SE_ffSH_i(ptr noundef nonnull align 8 dereferenceable(32) %., ptr noundef nonnull align 8 dereferenceable(16) %35, ptr noundef nonnull align 8 dereferenceable(16) %36, float noundef %129, float noundef %131, ptr noundef nonnull align 8 dereferenceable(24) %99, i32 noundef %132)
          to label %133 unwind label %.split137.us

133:                                              ; preds = %124
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #4
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #4
  %134 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIifESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %33) #4
  %135 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIifESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %34) #4
  br i1 %135, label %.lr.ph126.us, label %._crit_edge127.us

._crit_edge130.us:                                ; preds = %114
  %136 = add i32 %.092131.us, 1
  %137 = zext i32 %136 to i64
  %138 = call noundef i64 @_ZNKSt6vectorIS_ISt4pairIifESaIS1_EESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #4
  %139 = icmp ugt i64 %138, %137
  br i1 %139, label %.preheader.us, label %._crit_edge132, !llvm.loop !27

.split.us:                                        ; preds = %.lr.ph126.us
  %140 = landingpad { ptr, i32 }
          cleanup
  br label %216

.split134.us:                                     ; preds = %122
  %141 = landingpad { ptr, i32 }
          cleanup
  br label %215

.split137.us:                                     ; preds = %124
  %142 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #4
  br label %215

143:                                              ; preds = %.lr.ph124, %207
  %144 = phi i64 [ 0, %.lr.ph124 ], [ %209, %207 ]
  %.090122 = phi i32 [ 0, %.lr.ph124 ], [ %208, %207 ]
  %145 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %144) #4
  %146 = load i32, ptr %145, align 4, !tbaa !23
  %147 = icmp sgt i32 %146, 0
  br i1 %147, label %148, label %207

148:                                              ; preds = %143
  %149 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNKSt6vectorIN9starspace12ParseResultsESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %144) #4
  %150 = getelementptr inbounds i8, ptr %149, i64 8
  %151 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNKSt6vectorIN9starspace12ParseResultsESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %144) #4
  %152 = getelementptr inbounds i8, ptr %151, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #4
  %153 = call ptr @_ZNKSt6vectorISt4pairIifESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %150) #4
  store ptr %153, ptr %25, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #4
  %154 = call ptr @_ZNKSt6vectorISt4pairIifESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %150) #4
  store ptr %154, ptr %26, align 8
  %155 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIifESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #4
  br i1 %155, label %.lr.ph118, label %._crit_edge

._crit_edge:                                      ; preds = %171, %148
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #4
  %156 = call ptr @_ZNKSt6vectorISt4pairIifESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %152) #4
  store ptr %156, ptr %29, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #4
  %157 = call ptr @_ZNKSt6vectorISt4pairIifESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %152) #4
  store ptr %157, ptr %30, align 8
  %158 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIifESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #4
  br i1 %158, label %.lr.ph120, label %._crit_edge121

.lr.ph118:                                        ; preds = %148, %171
  %159 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairIifESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #4
  %.sroa.028.0.copyload = load i64, ptr %159, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #4
  %160 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9starspace12SparseLinearIfEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %93) #4
  %161 = call noundef i32 @_ZN9starspace5indexESt4pairIifE(i64 %.sroa.028.0.copyload)
  %162 = sext i32 %161 to i64
  invoke void @_ZN9starspace6MatrixIfE3rowEm(ptr dead_on_unwind nonnull writable sret(%"class.boost::numeric::ublas::matrix_row") align 8 %27, ptr noundef nonnull align 8 dereferenceable(40) %160, i64 noundef %162)
          to label %163 unwind label %174

163:                                              ; preds = %.lr.ph118
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #4
  %164 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN9starspace6MatrixIfEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %144) #4
  invoke void @_ZN9starspace6MatrixIfEcvN5boost7numeric5ublas10matrix_rowINS4_6matrixIfNS4_15basic_row_majorImlEENS4_15unbounded_arrayIfSaIfEEEEEEEEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::numeric::ublas::matrix_row") align 8 %28, ptr noundef nonnull align 8 dereferenceable(40) %164)
          to label %165 unwind label %176

165:                                              ; preds = %163
  %166 = call noundef float @_ZN9starspace6weightESt4pairIifE(i64 %.sroa.028.0.copyload)
  %167 = fmul float %166, %6
  %168 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %144) #4
  %169 = load float, ptr %168, align 4, !tbaa !21
  %170 = call noundef i32 @_ZN9starspace5indexESt4pairIifE(i64 %.sroa.028.0.copyload)
  invoke void @_ZNKSt8functionIFvRN5boost7numeric5ublas10matrix_rowINS2_6matrixIfNS2_15basic_row_majorImlEENS2_15unbounded_arrayIfSaIfEEEEEEERKSB_ffRSt6vectorIfS8_EiEEclESC_SE_ffSH_i(ptr noundef nonnull align 8 dereferenceable(32) %., ptr noundef nonnull align 8 dereferenceable(16) %27, ptr noundef nonnull align 8 dereferenceable(16) %28, float noundef %167, float noundef %169, ptr noundef nonnull align 8 dereferenceable(24) %94, i32 noundef %170)
          to label %171 unwind label %178

171:                                              ; preds = %165
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #4
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #4
  %172 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIifESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #4
  %173 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIifESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #4
  br i1 %173, label %.lr.ph118, label %._crit_edge

174:                                              ; preds = %.lr.ph118
  %175 = landingpad { ptr, i32 }
          cleanup
  br label %181

176:                                              ; preds = %163
  %177 = landingpad { ptr, i32 }
          cleanup
  br label %180

178:                                              ; preds = %165
  %179 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #4
  br label %180

180:                                              ; preds = %178, %176
  %.pn103 = phi { ptr, i32 } [ %179, %178 ], [ %177, %176 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #4
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #4
  br label %181

181:                                              ; preds = %180, %174
  %.pn103.pn = phi { ptr, i32 } [ %.pn103, %180 ], [ %175, %174 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #4
  br label %217

._crit_edge121:                                   ; preds = %196, %._crit_edge
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #4
  br label %207

.lr.ph120:                                        ; preds = %._crit_edge, %196
  %182 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairIifESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #4
  %.sroa.020.0.copyload = load i64, ptr %182, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %31) #4
  %183 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN9starspace12SparseLinearIfEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %95) #4
  %184 = call noundef i32 @_ZN9starspace5indexESt4pairIifE(i64 %.sroa.020.0.copyload)
  %185 = sext i32 %184 to i64
  invoke void @_ZN9starspace6MatrixIfE3rowEm(ptr dead_on_unwind nonnull writable sret(%"class.boost::numeric::ublas::matrix_row") align 8 %31, ptr noundef nonnull align 8 dereferenceable(40) %183, i64 noundef %185)
          to label %186 unwind label %199

186:                                              ; preds = %.lr.ph120
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #4
  %187 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN9starspace6MatrixIfEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %144) #4
  invoke void @_ZN9starspace6MatrixIfEcvN5boost7numeric5ublas10matrix_rowINS4_6matrixIfNS4_15basic_row_majorImlEENS4_15unbounded_arrayIfSaIfEEEEEEEEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::numeric::ublas::matrix_row") align 8 %32, ptr noundef nonnull align 8 dereferenceable(40) %187)
          to label %188 unwind label %201

188:                                              ; preds = %186
  %189 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %144) #4
  %190 = load float, ptr %189, align 4, !tbaa !21
  %191 = call noundef float @_ZN9starspace6weightESt4pairIifE(i64 %.sroa.020.0.copyload)
  %192 = fmul float %190, %191
  %193 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %144) #4
  %194 = load float, ptr %193, align 4, !tbaa !21
  %195 = call noundef i32 @_ZN9starspace5indexESt4pairIifE(i64 %.sroa.020.0.copyload)
  invoke void @_ZNKSt8functionIFvRN5boost7numeric5ublas10matrix_rowINS2_6matrixIfNS2_15basic_row_majorImlEENS2_15unbounded_arrayIfSaIfEEEEEEERKSB_ffRSt6vectorIfS8_EiEEclESC_SE_ffSH_i(ptr noundef nonnull align 8 dereferenceable(32) %., ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(16) %32, float noundef %192, float noundef %194, ptr noundef nonnull align 8 dereferenceable(24) %96, i32 noundef %195)
          to label %196 unwind label %203

196:                                              ; preds = %188
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #4
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #4
  %197 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIifESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #4
  %198 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIifESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #4
  br i1 %198, label %.lr.ph120, label %._crit_edge121

199:                                              ; preds = %.lr.ph120
  %200 = landingpad { ptr, i32 }
          cleanup
  br label %206

201:                                              ; preds = %186
  %202 = landingpad { ptr, i32 }
          cleanup
  br label %205

203:                                              ; preds = %188
  %204 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #4
  br label %205

205:                                              ; preds = %203, %201
  %.pn100 = phi { ptr, i32 } [ %204, %203 ], [ %202, %201 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #4
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #4
  br label %206

206:                                              ; preds = %205, %199
  %.pn100.pn = phi { ptr, i32 } [ %.pn100, %205 ], [ %200, %199 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #4
  br label %217

207:                                              ; preds = %143, %._crit_edge121
  %208 = add i32 %.090122, 1
  %209 = zext i32 %208 to i64
  %210 = icmp ugt i64 %46, %209
  br i1 %210, label %143, label %.preheader115, !llvm.loop !28

.preheader:                                       ; preds = %.preheader.lr.ph, %.preheader
  %.092131 = phi i32 [ %211, %.preheader ], [ 0, %.preheader.lr.ph ]
  %211 = add i32 %.092131, 1
  %212 = zext i32 %211 to i64
  %213 = call noundef i64 @_ZNKSt6vectorIS_ISt4pairIifESaIS1_EESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #4
  %214 = icmp ugt i64 %213, %212
  br i1 %214, label %.preheader, label %._crit_edge132, !llvm.loop !27

._crit_edge132:                                   ; preds = %._crit_edge130.us, %.preheader, %.preheader115
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #4
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #4
  ret void

215:                                              ; preds = %.split137.us, %.split134.us
  %.pn = phi { ptr, i32 } [ %142, %.split137.us ], [ %141, %.split134.us ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #4
  call void @_ZN5boost7numeric5ublas10matrix_rowINS1_6matrixIfNS1_15basic_row_majorImlEENS1_15unbounded_arrayIfSaIfEEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #4
  br label %216

216:                                              ; preds = %215, %.split.us
  %.pn.pn = phi { ptr, i32 } [ %.pn, %215 ], [ %140, %.split.us ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #4
  br label %217

217:                                              ; preds = %181, %206, %77, %83, %88, %216
  %.pn109.pn.pn = phi { ptr, i32 } [ %.pn.pn, %216 ], [ %.pn109, %88 ], [ %78, %77 ], [ %.pn107, %83 ], [ %.pn103.pn, %181 ], [ %.pn100.pn, %206 ]
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #4
  br label %218

218:                                              ; preds = %217, %56
  %.pn109.pn.pn.pn = phi { ptr, i32 } [ %.pn109.pn.pn, %217 ], [ %57, %56 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #4
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #4
  br label %219

219:                                              ; preds = %218, %54
  %.pn109.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn109.pn.pn.pn, %218 ], [ %55, %54 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #4
  resume { ptr, i32 } %.pn109.pn.pn.pn.pn
}

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRN5boost7numeric5ublas10matrix_rowINS2_6matrixIfNS2_15basic_row_majorImlEENS2_15unbounded_arrayIfSaIfEEEEEEERKSB_ffRSt6vectorIfS8_EiEEC2IZN9starspace10EmbedModel8backwardERKSF_INSL_12ParseResultsESaISN_EERKSF_ISF_ISt4pairIifESaIST_EESaISV_EESF_INSL_6MatrixIfEESaIS11_EES13_RKSF_IiSaIiEEfRKSG_RKSF_ISG_SaISG_EEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRN5boost7numeric5ublas10matrix_rowINS2_6matrixIfNS2_15basic_row_majorImlEENS2_15unbounded_arrayIfSaIfEEEEEEERKSB_ffRSt6vectorIfS8_EiEEC2IZN9starspace10EmbedModel8backwardERKSF_INSL_12ParseResultsESaISN_EERKSF_ISF_ISt4pairIifESaIST_EESaISV_EESF_INSL_6MatrixIfEESaIS11_EES13_RKSF_IiSaIiEEfRKSG_RKSF_ISG_SaISG_EEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #0 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIifESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9starspace6MatrixIfE3rowEm(ptr dead_on_unwind noalias writable sret(%"class.boost::numeric::ublas::matrix_row") align 8, ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) local_unnamed_addr #2 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt4fabsf(float noundef) local_unnamed_addr #3

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

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

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

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

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { 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 #4 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !12, i64 464}
!6 = !{!"_ZTSN9starspace4ArgsE", !7, i64 0, !7, i64 32, !7, i64 64, !7, i64 96, !7, i64 128, !7, i64 160, !7, i64 192, !7, i64 224, !7, i64 256, !7, i64 288, !7, i64 320, !7, i64 352, !10, i64 384, !13, i64 392, !13, i64 400, !13, i64 408, !13, i64 416, !13, i64 424, !13, i64 432, !13, i64 440, !13, i64 448, !13, i64 456, !12, i64 464, !14, i64 472, !14, i64 476, !14, i64 480, !14, i64 484, !14, i64 488, !14, i64 492, !14, i64 496, !14, i64 500, !14, i64 504, !14, i64 508, !14, i64 512, !14, i64 516, !14, i64 520, !14, i64 524, !14, i64 528, !15, i64 532, !15, i64 533, !15, i64 534, !15, i64 535, !15, i64 536, !15, i64 537, !15, i64 538, !15, i64 539, !15, i64 540, !15, i64 541, !15, i64 542}
!7 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !8, i64 0, !12, i64 8, !10, i64 16}
!8 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !9, i64 0}
!9 = !{!"any pointer", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"long", !10, i64 0}
!13 = !{!"double", !10, i64 0}
!14 = !{!"int", !10, i64 0}
!15 = !{!"bool", !10, i64 0}
!16 = !{!12, !12, i64 0}
!17 = !{!9, !9, i64 0}
!18 = !{!6, !15, i64 534}
!19 = !{i8 0, i8 2}
!20 = !{}
!21 = !{!22, !22, i64 0}
!22 = !{!"float", !10, i64 0}
!23 = !{!14, !14, i64 0}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = distinct !{!26, !25}
!27 = distinct !{!27, !25}
!28 = distinct !{!28, !25}


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