; LLVM IR from Tiramisu-Compiler/tiramisu :: utils/code_generator (tiramisu_code_generator)

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::vector.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::initializer_list.39" = type { ptr, i64 }
%"class.std::allocator.25" = type { i8 }
%"class.std::vector.40" = type { %"struct.std::_Vector_base.41" }
%"struct.std::_Vector_base.41" = type { %"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<variable *, std::allocator<variable *>>::_Vector_impl" }
%"struct.std::_Vector_base<variable *, std::allocator<variable *>>::_Vector_impl" = type { %"struct.std::_Vector_base<variable *, std::allocator<variable *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<variable *, std::allocator<variable *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<computation_abstract *, std::allocator<computation_abstract *>>::_Vector_impl" }
%"struct.std::_Vector_base<computation_abstract *, std::allocator<computation_abstract *>>::_Vector_impl" = type { %"struct.std::_Vector_base<computation_abstract *, std::allocator<computation_abstract *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<computation_abstract *, std::allocator<computation_abstract *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.0" = type { i8 }
%class.tiramisu_code = type { %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::vector.28", %"class.std::vector", %"class.std::vector.3", %"class.std::vector.18", %"class.std::vector.8", i32, %"class.std::basic_ofstream" }
%"class.std::vector.28" = type { %"struct.std::_Vector_base.29" }
%"struct.std::_Vector_base.29" = type { %"struct.std::_Vector_base<constant *, std::allocator<constant *>>::_Vector_impl" }
%"struct.std::_Vector_base<constant *, std::allocator<constant *>>::_Vector_impl" = type { %"struct.std::_Vector_base<constant *, std::allocator<constant *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<constant *, std::allocator<constant *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<computation *, std::allocator<computation *>>::_Vector_impl" }
%"struct.std::_Vector_base<computation *, std::allocator<computation *>>::_Vector_impl" = type { %"struct.std::_Vector_base<computation *, std::allocator<computation *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<computation *, std::allocator<computation *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<input *, std::allocator<input *>>::_Vector_impl" }
%"struct.std::_Vector_base<input *, std::allocator<input *>>::_Vector_impl" = type { %"struct.std::_Vector_base<input *, std::allocator<input *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<input *, std::allocator<input *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<buffer *, std::allocator<buffer *>>::_Vector_impl" }
%"struct.std::_Vector_base<buffer *, std::allocator<buffer *>>::_Vector_impl" = type { %"struct.std::_Vector_base<buffer *, std::allocator<buffer *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<buffer *, std::allocator<buffer *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::basic_ofstream" = type { %"class.std::basic_ostream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::basic_filebuf" = type { %"class.std::basic_streambuf", %union.pthread_mutex_t, %"class.std::__basic_file", i32, %struct.__mbstate_t, %struct.__mbstate_t, %struct.__mbstate_t, ptr, i64, i8, i8, i8, i8, ptr, ptr, i8, ptr, ptr, i64, ptr, ptr }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::__basic_file" = type <{ ptr, i8, [7 x i8] }>
%struct.__mbstate_t = type { i32, %union.anon.33 }
%union.anon.33 = type { i32 }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%class.computation_abstract = type { %"class.std::__cxx11::basic_string", %"class.std::vector" }
%class.variable = type { %"class.std::__cxx11::basic_string", i32, i32 }

@.str.19 = external hidden unnamed_addr constant [113 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [5 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIP8variableSaIS1_EEC2Ev(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 uwtable
declare dso_local void @_ZNSt6vectorIP8variableSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #3

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #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: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nounwind
declare i32 @mkdir(ptr noundef, i32 noundef) #6

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN13tiramisu_code28generate_tiramisu_conv_layerEPSt6vectorIiSaIiEEP20computation_abstractS3_ii(ptr noundef nonnull align 8 dereferenceable(736), ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #2 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN13tiramisu_codeC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPSt6vectorIiSaIiEEPS5_(ptr noundef nonnull align 8 dereferenceable(736) %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca i32, align 4
  %19 = alloca %"class.std::vector.23", align 8
  %20 = alloca %"class.std::initializer_list.39", align 8
  %21 = alloca [3 x i32], align 4
  %22 = alloca %"class.std::allocator.25", align 1
  %23 = alloca %"class.std::vector.40", align 8
  %24 = alloca i32, align 4
  %25 = alloca %"class.std::vector.23", align 8
  %26 = alloca %"class.std::initializer_list.39", align 8
  %27 = alloca [4 x i32], align 4
  %28 = alloca %"class.std::allocator.25", align 1
  %29 = alloca %"class.std::vector", align 8
  %30 = alloca %"class.std::vector.13", align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca ptr, align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::allocator.0", align 1
  %37 = alloca i1, align 1
  %38 = alloca ptr, align 8
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::allocator.0", align 1
  %41 = alloca i1, align 1
  %42 = alloca ptr, align 8
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::allocator.0", align 1
  %45 = alloca i1, align 1
  %46 = alloca ptr, align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::allocator.0", align 1
  %49 = alloca i1, align 1
  %50 = alloca ptr, align 8
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca %"class.std::allocator.0", align 1
  %53 = alloca i1, align 1
  %54 = alloca ptr, align 8
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca %"class.std::allocator.0", align 1
  %57 = alloca i1, align 1
  %58 = alloca ptr, align 8
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.std::allocator.0", align 1
  %61 = alloca i1, align 1
  %62 = alloca ptr, align 8
  %63 = alloca ptr, align 8
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  %65 = alloca %"class.std::allocator.0", align 1
  %66 = alloca %"class.std::vector.23", align 8
  %67 = alloca i1, align 1
  %68 = alloca ptr, align 8
  %69 = alloca i32, align 4
  %70 = alloca %"class.std::initializer_list.39", align 8
  %71 = alloca [3 x i32], align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  %72 = load ptr, ptr %5, align 8
  %73 = getelementptr inbounds %class.tiramisu_code, ptr %72, i32 0, i32 0
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #7
  %74 = getelementptr inbounds %class.tiramisu_code, ptr %72, i32 0, i32 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #7
  %75 = getelementptr inbounds %class.tiramisu_code, ptr %72, i32 0, i32 2
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #7
  %76 = getelementptr inbounds %class.tiramisu_code, ptr %72, i32 0, i32 3
  call void @_ZNSt6vectorIP8constantSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %76) #7
  %77 = getelementptr inbounds %class.tiramisu_code, ptr %72, i32 0, i32 4
  call void @_ZNSt6vectorIP8variableSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %77) #7
  %78 = getelementptr inbounds %class.tiramisu_code, ptr %72, i32 0, i32 5
  call void @_ZNSt6vectorIP11computationSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #7
  %79 = getelementptr inbounds %class.tiramisu_code, ptr %72, i32 0, i32 6
  call void @_ZNSt6vectorIP5inputSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %79) #7
  %80 = getelementptr inbounds %class.tiramisu_code, ptr %72, i32 0, i32 7
  call void @_ZNSt6vectorIP6bufferSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %80) #7
  %81 = getelementptr inbounds %class.tiramisu_code, ptr %72, i32 0, i32 9
  invoke void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(248) %81)
          to label %82 unwind label %121

82:                                               ; preds = %4
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #7
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef @.str.19, ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %83 unwind label %125

83:                                               ; preds = %82
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef @.str.20)
          to label %84 unwind label %129

84:                                               ; preds = %83
  %85 = getelementptr inbounds %class.tiramisu_code, ptr %72, i32 0, i32 1
  %86 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #7
  %87 = getelementptr inbounds %class.tiramisu_code, ptr %72, i32 0, i32 2
  %88 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %89 unwind label %134

89:                                               ; preds = %84
  %90 = load ptr, ptr %8, align 8, !tbaa !5
  %91 = getelementptr inbounds %class.tiramisu_code, ptr %72, i32 0, i32 0
  %92 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %91, ptr noundef nonnull align 8 dereferenceable(32) %90)
          to label %93 unwind label %134

93:                                               ; preds = %89
  %94 = getelementptr inbounds %class.tiramisu_code, ptr %72, i32 0, i32 8
  store i32 1, ptr %94, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %13) #7
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef @.str.21, ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %95 unwind label %138

95:                                               ; preds = %93
  %96 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  %97 = call i32 @mkdir(ptr noundef %96, i32 noundef 509) #7
  %98 = getelementptr inbounds %class.tiramisu_code, ptr %72, i32 0, i32 9
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #7
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef @.str.21, ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %99 unwind label %142

99:                                               ; preds = %95
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef @.str.22)
          to label %100 unwind label %146

100:                                              ; preds = %99
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %15, ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %101 unwind label %150

101:                                              ; preds = %100
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %14, ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef @.str.23)
          to label %102 unwind label %154

102:                                              ; preds = %101
  invoke void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(248) %98, ptr noundef nonnull align 8 dereferenceable(32) %14, i32 noundef 16)
          to label %103 unwind label %158

103:                                              ; preds = %102
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #7
  %104 = load ptr, ptr %7, align 8, !tbaa !5
  %105 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %104) #7
  %106 = trunc i64 %105 to i32
  store i32 %106, ptr %18, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %21) #7
  store i32 3, ptr %21, align 4, !tbaa !44
  %107 = getelementptr inbounds i32, ptr %21, i64 1
  store i32 1200, ptr %107, align 4, !tbaa !44
  %108 = getelementptr inbounds i32, ptr %21, i64 2
  store i32 1200, ptr %108, align 4, !tbaa !44
  %109 = getelementptr inbounds %"class.std::initializer_list.39", ptr %20, i32 0, i32 0
  store ptr %21, ptr %109, align 8, !tbaa !45
  %110 = getelementptr inbounds %"class.std::initializer_list.39", ptr %20, i32 0, i32 1
  store i64 3, ptr %110, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #7
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #7
  %111 = getelementptr inbounds { ptr, i64 }, ptr %20, i32 0, i32 0
  %112 = load ptr, ptr %111, align 8
  %113 = getelementptr inbounds { ptr, i64 }, ptr %20, i32 0, i32 1
  %114 = load i64, ptr %113, align 8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr %112, i64 %114, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %115 unwind label %166

115:                                              ; preds = %103
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %21) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %23) #7
  call void @_ZNSt6vectorIS_IiSaIiEESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #7
  store i32 0, ptr %24, align 4, !tbaa !44
  br label %116

116:                                              ; preds = %182, %115
  %117 = load i32, ptr %24, align 4, !tbaa !44
  %118 = load i32, ptr %18, align 4, !tbaa !44
  %119 = icmp slt i32 %117, %118
  br i1 %119, label %170, label %120

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

121:                                              ; preds = %4
  %122 = landingpad { ptr, i32 }
          cleanup
  %123 = extractvalue { ptr, i32 } %122, 0
  store ptr %123, ptr %9, align 8
  %124 = extractvalue { ptr, i32 } %122, 1
  store i32 %124, ptr %10, align 4
  br label %481

125:                                              ; preds = %82
  %126 = landingpad { ptr, i32 }
          cleanup
  %127 = extractvalue { ptr, i32 } %126, 0
  store ptr %127, ptr %9, align 8
  %128 = extractvalue { ptr, i32 } %126, 1
  store i32 %128, ptr %10, align 4
  br label %133

129:                                              ; preds = %83
  %130 = landingpad { ptr, i32 }
          cleanup
  %131 = extractvalue { ptr, i32 } %130, 0
  store ptr %131, ptr %9, align 8
  %132 = extractvalue { ptr, i32 } %130, 1
  store i32 %132, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  br label %133

133:                                              ; preds = %129, %125
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #7
  br label %480

134:                                              ; preds = %89, %84
  %135 = landingpad { ptr, i32 }
          cleanup
  %136 = extractvalue { ptr, i32 } %135, 0
  store ptr %136, ptr %9, align 8
  %137 = extractvalue { ptr, i32 } %135, 1
  store i32 %137, ptr %10, align 4
  br label %480

138:                                              ; preds = %93
  %139 = landingpad { ptr, i32 }
          cleanup
  %140 = extractvalue { ptr, i32 } %139, 0
  store ptr %140, ptr %9, align 8
  %141 = extractvalue { ptr, i32 } %139, 1
  store i32 %141, ptr %10, align 4
  br label %479

142:                                              ; preds = %95
  %143 = landingpad { ptr, i32 }
          cleanup
  %144 = extractvalue { ptr, i32 } %143, 0
  store ptr %144, ptr %9, align 8
  %145 = extractvalue { ptr, i32 } %143, 1
  store i32 %145, ptr %10, align 4
  br label %165

146:                                              ; preds = %99
  %147 = landingpad { ptr, i32 }
          cleanup
  %148 = extractvalue { ptr, i32 } %147, 0
  store ptr %148, ptr %9, align 8
  %149 = extractvalue { ptr, i32 } %147, 1
  store i32 %149, ptr %10, align 4
  br label %164

150:                                              ; preds = %100
  %151 = landingpad { ptr, i32 }
          cleanup
  %152 = extractvalue { ptr, i32 } %151, 0
  store ptr %152, ptr %9, align 8
  %153 = extractvalue { ptr, i32 } %151, 1
  store i32 %153, ptr %10, align 4
  br label %163

154:                                              ; preds = %101
  %155 = landingpad { ptr, i32 }
          cleanup
  %156 = extractvalue { ptr, i32 } %155, 0
  store ptr %156, ptr %9, align 8
  %157 = extractvalue { ptr, i32 } %155, 1
  store i32 %157, ptr %10, align 4
  br label %162

158:                                              ; preds = %102
  %159 = landingpad { ptr, i32 }
          cleanup
  %160 = extractvalue { ptr, i32 } %159, 0
  store ptr %160, ptr %9, align 8
  %161 = extractvalue { ptr, i32 } %159, 1
  store i32 %161, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  br label %162

162:                                              ; preds = %158, %154
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  br label %163

163:                                              ; preds = %162, %150
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  br label %164

164:                                              ; preds = %163, %146
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  br label %165

165:                                              ; preds = %164, %142
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #7
  br label %478

166:                                              ; preds = %103
  %167 = landingpad { ptr, i32 }
          cleanup
  %168 = extractvalue { ptr, i32 } %167, 0
  store ptr %168, ptr %9, align 8
  %169 = extractvalue { ptr, i32 } %167, 1
  store i32 %169, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %21) #7
  br label %477

170:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 24, ptr %25) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #7
  store i32 3, ptr %27, align 4, !tbaa !44
  %171 = getelementptr inbounds i32, ptr %27, i64 1
  store i32 3, ptr %171, align 4, !tbaa !44
  %172 = getelementptr inbounds i32, ptr %27, i64 2
  store i32 3, ptr %172, align 4, !tbaa !44
  %173 = getelementptr inbounds i32, ptr %27, i64 3
  store i32 3, ptr %173, align 4, !tbaa !44
  %174 = getelementptr inbounds %"class.std::initializer_list.39", ptr %26, i32 0, i32 0
  store ptr %27, ptr %174, align 8, !tbaa !45
  %175 = getelementptr inbounds %"class.std::initializer_list.39", ptr %26, i32 0, i32 1
  store i64 4, ptr %175, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #7
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  %176 = getelementptr inbounds { ptr, i64 }, ptr %26, i32 0, i32 0
  %177 = load ptr, ptr %176, align 8
  %178 = getelementptr inbounds { ptr, i64 }, ptr %26, i32 0, i32 1
  %179 = load i64, ptr %178, align 8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr %177, i64 %179, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %180 unwind label %185

180:                                              ; preds = %170
  invoke void @_ZNSt6vectorIS_IiSaIiEESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(24) %25)
          to label %181 unwind label %189

181:                                              ; preds = %180
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #7
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #7
  br label %182

182:                                              ; preds = %181
  %183 = load i32, ptr %24, align 4, !tbaa !44
  %184 = add nsw i32 %183, 1
  store i32 %184, ptr %24, align 4, !tbaa !44
  br label %116, !llvm.loop !48

185:                                              ; preds = %170
  %186 = landingpad { ptr, i32 }
          cleanup
  %187 = extractvalue { ptr, i32 } %186, 0
  store ptr %187, ptr %9, align 8
  %188 = extractvalue { ptr, i32 } %186, 1
  store i32 %188, ptr %10, align 4
  br label %193

189:                                              ; preds = %180
  %190 = landingpad { ptr, i32 }
          cleanup
  %191 = extractvalue { ptr, i32 } %190, 0
  store ptr %191, ptr %9, align 8
  %192 = extractvalue { ptr, i32 } %190, 1
  store i32 %192, ptr %10, align 4
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #7
  br label %193

193:                                              ; preds = %189, %185
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  br label %476

194:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 24, ptr %29) #7
  call void @_ZNSt6vectorIP8variableSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %30) #7
  call void @_ZNSt6vectorIP20computation_abstractSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #7
  %195 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef 0) #7
  %196 = load i32, ptr %195, align 4, !tbaa !44
  store i32 %196, ptr %31, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #7
  %197 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef 1) #7
  %198 = load i32, ptr %197, align 4, !tbaa !44
  store i32 %198, ptr %32, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #7
  %199 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef 2) #7
  %200 = load i32, ptr %199, align 4, !tbaa !44
  store i32 %200, ptr %33, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %201 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 40) #8
          to label %202 unwind label %265

202:                                              ; preds = %194
  store i1 true, ptr %37, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef @.str.72, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %203 unwind label %269

203:                                              ; preds = %202
  %204 = load i32, ptr %31, align 4, !tbaa !44
  invoke void @_ZN8variableC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(40) %201, ptr noundef %35, i32 noundef 0, i32 noundef %204)
          to label %205 unwind label %273

205:                                              ; preds = %203
  store i1 false, ptr %37, align 1
  store ptr %201, ptr %34, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP8variableSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %206 unwind label %273

206:                                              ; preds = %205
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  %207 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 40) #8
          to label %208 unwind label %282

208:                                              ; preds = %206
  store i1 true, ptr %41, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef @.str.73, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %209 unwind label %286

209:                                              ; preds = %208
  %210 = load i32, ptr %32, align 4, !tbaa !44
  invoke void @_ZN8variableC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(40) %207, ptr noundef %39, i32 noundef 0, i32 noundef %210)
          to label %211 unwind label %290

211:                                              ; preds = %209
  store i1 false, ptr %41, align 1
  store ptr %207, ptr %38, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP8variableSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %212 unwind label %290

212:                                              ; preds = %211
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  %213 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 40) #8
          to label %214 unwind label %299

214:                                              ; preds = %212
  store i1 true, ptr %45, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %215 unwind label %303

215:                                              ; preds = %214
  %216 = load i32, ptr %33, align 4, !tbaa !44
  invoke void @_ZN8variableC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(40) %213, ptr noundef %43, i32 noundef 0, i32 noundef %216)
          to label %217 unwind label %307

217:                                              ; preds = %215
  store i1 false, ptr %45, align 1
  store ptr %213, ptr %42, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP8variableSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 8 dereferenceable(8) %42)
          to label %218 unwind label %307

218:                                              ; preds = %217
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  %219 = getelementptr inbounds %class.tiramisu_code, ptr %72, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  %220 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 40) #8
          to label %221 unwind label %316

221:                                              ; preds = %218
  store i1 true, ptr %49, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef @.str.72, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %222 unwind label %320

222:                                              ; preds = %221
  %223 = load i32, ptr %31, align 4, !tbaa !44
  invoke void @_ZN8variableC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(40) %220, ptr noundef %47, i32 noundef 0, i32 noundef %223)
          to label %224 unwind label %324

224:                                              ; preds = %222
  store i1 false, ptr %49, align 1
  store ptr %220, ptr %46, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP8variableSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %219, ptr noundef nonnull align 8 dereferenceable(8) %46)
          to label %225 unwind label %324

225:                                              ; preds = %224
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  %226 = getelementptr inbounds %class.tiramisu_code, ptr %72, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #7
  %227 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 40) #8
          to label %228 unwind label %333

228:                                              ; preds = %225
  store i1 true, ptr %53, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef @.str.73, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %229 unwind label %337

229:                                              ; preds = %228
  %230 = load i32, ptr %32, align 4, !tbaa !44
  invoke void @_ZN8variableC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(40) %227, ptr noundef %51, i32 noundef 0, i32 noundef %230)
          to label %231 unwind label %341

231:                                              ; preds = %229
  store i1 false, ptr %53, align 1
  store ptr %227, ptr %50, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP8variableSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %226, ptr noundef nonnull align 8 dereferenceable(8) %50)
          to label %232 unwind label %341

232:                                              ; preds = %231
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  %233 = getelementptr inbounds %class.tiramisu_code, ptr %72, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #7
  %234 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 40) #8
          to label %235 unwind label %350

235:                                              ; preds = %232
  store i1 true, ptr %57, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %56)
          to label %236 unwind label %354

236:                                              ; preds = %235
  %237 = load i32, ptr %33, align 4, !tbaa !44
  invoke void @_ZN8variableC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(40) %234, ptr noundef %55, i32 noundef 0, i32 noundef %237)
          to label %238 unwind label %358

238:                                              ; preds = %236
  store i1 false, ptr %57, align 1
  store ptr %234, ptr %54, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP8variableSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %233, ptr noundef nonnull align 8 dereferenceable(8) %54)
          to label %239 unwind label %358

239:                                              ; preds = %238
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  %240 = getelementptr inbounds %class.tiramisu_code, ptr %72, i32 0, i32 6
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #7
  %241 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 56) #8
          to label %242 unwind label %367

242:                                              ; preds = %239
  store i1 true, ptr %61, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef @.str.75, ptr noundef nonnull align 1 dereferenceable(1) %60)
          to label %243 unwind label %371

243:                                              ; preds = %242
  invoke void @_ZN5inputC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPSt6vectorIP8variableSaIS8_EE(ptr noundef nonnull align 8 dereferenceable(56) %241, ptr noundef %59, ptr noundef %29)
          to label %244 unwind label %375

244:                                              ; preds = %243
  store i1 false, ptr %61, align 1
  store ptr %241, ptr %58, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP5inputSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %240, ptr noundef nonnull align 8 dereferenceable(8) %58)
          to label %245 unwind label %375

245:                                              ; preds = %244
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #7
  %246 = getelementptr inbounds %class.tiramisu_code, ptr %72, i32 0, i32 6
  %247 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP5inputSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %246, i64 noundef 0) #7
  %248 = load ptr, ptr %247, align 8, !tbaa !5
  store ptr %248, ptr %62, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP20computation_abstractSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %30, ptr noundef nonnull align 8 dereferenceable(8) %62)
          to label %249 unwind label %384

249:                                              ; preds = %245
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #7
  %250 = getelementptr inbounds %class.tiramisu_code, ptr %72, i32 0, i32 7
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #7
  %251 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 88) #8
          to label %252 unwind label %388

252:                                              ; preds = %249
  store i1 true, ptr %67, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef @.str.76, ptr noundef nonnull align 1 dereferenceable(1) %65)
          to label %253 unwind label %392

253:                                              ; preds = %252
  invoke void @_ZNSt6vectorIiSaIiEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %66, ptr noundef nonnull align 8 dereferenceable(24) %19)
          to label %254 unwind label %396

254:                                              ; preds = %253
  invoke void @_ZN6bufferC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIiSaIiEEiPS6_IP20computation_abstractSaISA_EE(ptr noundef nonnull align 8 dereferenceable(88) %251, ptr noundef %64, ptr noundef %66, i32 noundef 0, ptr noundef %30)
          to label %255 unwind label %400

255:                                              ; preds = %254
  store i1 false, ptr %67, align 1
  store ptr %251, ptr %63, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP6bufferSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %250, ptr noundef nonnull align 8 dereferenceable(8) %63)
          to label %256 unwind label %400

256:                                              ; preds = %255
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #7
  %257 = getelementptr inbounds %class.tiramisu_code, ptr %72, i32 0, i32 6
  %258 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP5inputSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %257, i64 noundef 0) #7
  %259 = load ptr, ptr %258, align 8, !tbaa !5
  store ptr %259, ptr %68, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #7
  store i32 1, ptr %69, align 4, !tbaa !44
  br label %260

260:                                              ; preds = %451, %256
  %261 = load i32, ptr %69, align 4, !tbaa !44
  %262 = load i32, ptr %18, align 4, !tbaa !44
  %263 = icmp slt i32 %261, %262
  br i1 %263, label %410, label %264

264:                                              ; preds = %260
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #7
  br label %463

265:                                              ; preds = %194
  %266 = landingpad { ptr, i32 }
          cleanup
  %267 = extractvalue { ptr, i32 } %266, 0
  store ptr %267, ptr %9, align 8
  %268 = extractvalue { ptr, i32 } %266, 1
  store i32 %268, ptr %10, align 4
  br label %281

269:                                              ; preds = %202
  %270 = landingpad { ptr, i32 }
          cleanup
  %271 = extractvalue { ptr, i32 } %270, 0
  store ptr %271, ptr %9, align 8
  %272 = extractvalue { ptr, i32 } %270, 1
  store i32 %272, ptr %10, align 4
  br label %277

273:                                              ; preds = %205, %203
  %274 = landingpad { ptr, i32 }
          cleanup
  %275 = extractvalue { ptr, i32 } %274, 0
  store ptr %275, ptr %9, align 8
  %276 = extractvalue { ptr, i32 } %274, 1
  store i32 %276, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  br label %277

277:                                              ; preds = %273, %269
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #7
  %278 = load i1, ptr %37, align 1
  br i1 %278, label %279, label %280

279:                                              ; preds = %277
  call void @_ZdlPvm(ptr noundef %201, i64 noundef 40) #9
  br label %280

280:                                              ; preds = %279, %277
  br label %281

281:                                              ; preds = %280, %265
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  br label %475

282:                                              ; preds = %206
  %283 = landingpad { ptr, i32 }
          cleanup
  %284 = extractvalue { ptr, i32 } %283, 0
  store ptr %284, ptr %9, align 8
  %285 = extractvalue { ptr, i32 } %283, 1
  store i32 %285, ptr %10, align 4
  br label %298

286:                                              ; preds = %208
  %287 = landingpad { ptr, i32 }
          cleanup
  %288 = extractvalue { ptr, i32 } %287, 0
  store ptr %288, ptr %9, align 8
  %289 = extractvalue { ptr, i32 } %287, 1
  store i32 %289, ptr %10, align 4
  br label %294

290:                                              ; preds = %211, %209
  %291 = landingpad { ptr, i32 }
          cleanup
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %9, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  br label %294

294:                                              ; preds = %290, %286
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #7
  %295 = load i1, ptr %41, align 1
  br i1 %295, label %296, label %297

296:                                              ; preds = %294
  call void @_ZdlPvm(ptr noundef %207, i64 noundef 40) #9
  br label %297

297:                                              ; preds = %296, %294
  br label %298

298:                                              ; preds = %297, %282
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  br label %475

299:                                              ; preds = %212
  %300 = landingpad { ptr, i32 }
          cleanup
  %301 = extractvalue { ptr, i32 } %300, 0
  store ptr %301, ptr %9, align 8
  %302 = extractvalue { ptr, i32 } %300, 1
  store i32 %302, ptr %10, align 4
  br label %315

303:                                              ; preds = %214
  %304 = landingpad { ptr, i32 }
          cleanup
  %305 = extractvalue { ptr, i32 } %304, 0
  store ptr %305, ptr %9, align 8
  %306 = extractvalue { ptr, i32 } %304, 1
  store i32 %306, ptr %10, align 4
  br label %311

307:                                              ; preds = %217, %215
  %308 = landingpad { ptr, i32 }
          cleanup
  %309 = extractvalue { ptr, i32 } %308, 0
  store ptr %309, ptr %9, align 8
  %310 = extractvalue { ptr, i32 } %308, 1
  store i32 %310, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #7
  br label %311

311:                                              ; preds = %307, %303
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #7
  %312 = load i1, ptr %45, align 1
  br i1 %312, label %313, label %314

313:                                              ; preds = %311
  call void @_ZdlPvm(ptr noundef %213, i64 noundef 40) #9
  br label %314

314:                                              ; preds = %313, %311
  br label %315

315:                                              ; preds = %314, %299
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  br label %475

316:                                              ; preds = %218
  %317 = landingpad { ptr, i32 }
          cleanup
  %318 = extractvalue { ptr, i32 } %317, 0
  store ptr %318, ptr %9, align 8
  %319 = extractvalue { ptr, i32 } %317, 1
  store i32 %319, ptr %10, align 4
  br label %332

320:                                              ; preds = %221
  %321 = landingpad { ptr, i32 }
          cleanup
  %322 = extractvalue { ptr, i32 } %321, 0
  store ptr %322, ptr %9, align 8
  %323 = extractvalue { ptr, i32 } %321, 1
  store i32 %323, ptr %10, align 4
  br label %328

324:                                              ; preds = %224, %222
  %325 = landingpad { ptr, i32 }
          cleanup
  %326 = extractvalue { ptr, i32 } %325, 0
  store ptr %326, ptr %9, align 8
  %327 = extractvalue { ptr, i32 } %325, 1
  store i32 %327, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #7
  br label %328

328:                                              ; preds = %324, %320
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #7
  %329 = load i1, ptr %49, align 1
  br i1 %329, label %330, label %331

330:                                              ; preds = %328
  call void @_ZdlPvm(ptr noundef %220, i64 noundef 40) #9
  br label %331

331:                                              ; preds = %330, %328
  br label %332

332:                                              ; preds = %331, %316
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  br label %475

333:                                              ; preds = %225
  %334 = landingpad { ptr, i32 }
          cleanup
  %335 = extractvalue { ptr, i32 } %334, 0
  store ptr %335, ptr %9, align 8
  %336 = extractvalue { ptr, i32 } %334, 1
  store i32 %336, ptr %10, align 4
  br label %349

337:                                              ; preds = %228
  %338 = landingpad { ptr, i32 }
          cleanup
  %339 = extractvalue { ptr, i32 } %338, 0
  store ptr %339, ptr %9, align 8
  %340 = extractvalue { ptr, i32 } %338, 1
  store i32 %340, ptr %10, align 4
  br label %345

341:                                              ; preds = %231, %229
  %342 = landingpad { ptr, i32 }
          cleanup
  %343 = extractvalue { ptr, i32 } %342, 0
  store ptr %343, ptr %9, align 8
  %344 = extractvalue { ptr, i32 } %342, 1
  store i32 %344, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #7
  br label %345

345:                                              ; preds = %341, %337
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #7
  %346 = load i1, ptr %53, align 1
  br i1 %346, label %347, label %348

347:                                              ; preds = %345
  call void @_ZdlPvm(ptr noundef %227, i64 noundef 40) #9
  br label %348

348:                                              ; preds = %347, %345
  br label %349

349:                                              ; preds = %348, %333
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  br label %475

350:                                              ; preds = %232
  %351 = landingpad { ptr, i32 }
          cleanup
  %352 = extractvalue { ptr, i32 } %351, 0
  store ptr %352, ptr %9, align 8
  %353 = extractvalue { ptr, i32 } %351, 1
  store i32 %353, ptr %10, align 4
  br label %366

354:                                              ; preds = %235
  %355 = landingpad { ptr, i32 }
          cleanup
  %356 = extractvalue { ptr, i32 } %355, 0
  store ptr %356, ptr %9, align 8
  %357 = extractvalue { ptr, i32 } %355, 1
  store i32 %357, ptr %10, align 4
  br label %362

358:                                              ; preds = %238, %236
  %359 = landingpad { ptr, i32 }
          cleanup
  %360 = extractvalue { ptr, i32 } %359, 0
  store ptr %360, ptr %9, align 8
  %361 = extractvalue { ptr, i32 } %359, 1
  store i32 %361, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #7
  br label %362

362:                                              ; preds = %358, %354
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #7
  %363 = load i1, ptr %57, align 1
  br i1 %363, label %364, label %365

364:                                              ; preds = %362
  call void @_ZdlPvm(ptr noundef %234, i64 noundef 40) #9
  br label %365

365:                                              ; preds = %364, %362
  br label %366

366:                                              ; preds = %365, %350
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  br label %475

367:                                              ; preds = %239
  %368 = landingpad { ptr, i32 }
          cleanup
  %369 = extractvalue { ptr, i32 } %368, 0
  store ptr %369, ptr %9, align 8
  %370 = extractvalue { ptr, i32 } %368, 1
  store i32 %370, ptr %10, align 4
  br label %383

371:                                              ; preds = %242
  %372 = landingpad { ptr, i32 }
          cleanup
  %373 = extractvalue { ptr, i32 } %372, 0
  store ptr %373, ptr %9, align 8
  %374 = extractvalue { ptr, i32 } %372, 1
  store i32 %374, ptr %10, align 4
  br label %379

375:                                              ; preds = %244, %243
  %376 = landingpad { ptr, i32 }
          cleanup
  %377 = extractvalue { ptr, i32 } %376, 0
  store ptr %377, ptr %9, align 8
  %378 = extractvalue { ptr, i32 } %376, 1
  store i32 %378, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  br label %379

379:                                              ; preds = %375, %371
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #7
  %380 = load i1, ptr %61, align 1
  br i1 %380, label %381, label %382

381:                                              ; preds = %379
  call void @_ZdlPvm(ptr noundef %241, i64 noundef 56) #9
  br label %382

382:                                              ; preds = %381, %379
  br label %383

383:                                              ; preds = %382, %367
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  br label %475

384:                                              ; preds = %245
  %385 = landingpad { ptr, i32 }
          cleanup
  %386 = extractvalue { ptr, i32 } %385, 0
  store ptr %386, ptr %9, align 8
  %387 = extractvalue { ptr, i32 } %385, 1
  store i32 %387, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #7
  br label %475

388:                                              ; preds = %249
  %389 = landingpad { ptr, i32 }
          cleanup
  %390 = extractvalue { ptr, i32 } %389, 0
  store ptr %390, ptr %9, align 8
  %391 = extractvalue { ptr, i32 } %389, 1
  store i32 %391, ptr %10, align 4
  br label %409

392:                                              ; preds = %252
  %393 = landingpad { ptr, i32 }
          cleanup
  %394 = extractvalue { ptr, i32 } %393, 0
  store ptr %394, ptr %9, align 8
  %395 = extractvalue { ptr, i32 } %393, 1
  store i32 %395, ptr %10, align 4
  br label %405

396:                                              ; preds = %253
  %397 = landingpad { ptr, i32 }
          cleanup
  %398 = extractvalue { ptr, i32 } %397, 0
  store ptr %398, ptr %9, align 8
  %399 = extractvalue { ptr, i32 } %397, 1
  store i32 %399, ptr %10, align 4
  br label %404

400:                                              ; preds = %255, %254
  %401 = landingpad { ptr, i32 }
          cleanup
  %402 = extractvalue { ptr, i32 } %401, 0
  store ptr %402, ptr %9, align 8
  %403 = extractvalue { ptr, i32 } %401, 1
  store i32 %403, ptr %10, align 4
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #7
  br label %404

404:                                              ; preds = %400, %396
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #7
  br label %405

405:                                              ; preds = %404, %392
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #7
  %406 = load i1, ptr %67, align 1
  br i1 %406, label %407, label %408

407:                                              ; preds = %405
  call void @_ZdlPvm(ptr noundef %251, i64 noundef 88) #9
  br label %408

408:                                              ; preds = %407, %405
  br label %409

409:                                              ; preds = %408, %388
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #7
  br label %475

410:                                              ; preds = %260
  %411 = load ptr, ptr %68, align 8, !tbaa !5
  %412 = load i32, ptr %69, align 4, !tbaa !44
  %413 = sext i32 %412 to i64
  %414 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %413) #7
  %415 = load ptr, ptr %7, align 8, !tbaa !5
  %416 = load i32, ptr %69, align 4, !tbaa !44
  %417 = sub nsw i32 %416, 1
  %418 = sext i32 %417 to i64
  %419 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %415, i64 noundef %418) #7
  %420 = load i32, ptr %419, align 4, !tbaa !44
  %421 = load i32, ptr %69, align 4, !tbaa !44
  %422 = invoke noundef ptr @_ZN13tiramisu_code28generate_tiramisu_conv_layerEPSt6vectorIiSaIiEEP20computation_abstractS3_ii(ptr noundef nonnull align 8 dereferenceable(736) %72, ptr noundef %19, ptr noundef %411, ptr noundef %414, i32 noundef %420, i32 noundef %421)
          to label %423 unwind label %454

423:                                              ; preds = %410
  store ptr %422, ptr %68, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %71) #7
  %424 = load i32, ptr %69, align 4, !tbaa !44
  %425 = sext i32 %424 to i64
  %426 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %425) #7
  %427 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %426, i64 noundef 0) #7
  %428 = load i32, ptr %427, align 4, !tbaa !44
  store i32 %428, ptr %71, align 4, !tbaa !44
  %429 = getelementptr inbounds i32, ptr %71, i64 1
  %430 = load ptr, ptr %68, align 8, !tbaa !5
  %431 = getelementptr inbounds %class.computation_abstract, ptr %430, i32 0, i32 1
  %432 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP8variableSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %431, i64 noundef 1) #7
  %433 = load ptr, ptr %432, align 8, !tbaa !5
  %434 = getelementptr inbounds %class.variable, ptr %433, i32 0, i32 2
  %435 = load i32, ptr %434, align 4, !tbaa !50
  store i32 %435, ptr %429, align 4, !tbaa !44
  %436 = getelementptr inbounds i32, ptr %71, i64 2
  %437 = load ptr, ptr %68, align 8, !tbaa !5
  %438 = getelementptr inbounds %class.computation_abstract, ptr %437, i32 0, i32 1
  %439 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP8variableSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %438, i64 noundef 2) #7
  %440 = load ptr, ptr %439, align 8, !tbaa !5
  %441 = getelementptr inbounds %class.variable, ptr %440, i32 0, i32 2
  %442 = load i32, ptr %441, align 4, !tbaa !50
  store i32 %442, ptr %436, align 4, !tbaa !44
  %443 = getelementptr inbounds %"class.std::initializer_list.39", ptr %70, i32 0, i32 0
  store ptr %71, ptr %443, align 8, !tbaa !45
  %444 = getelementptr inbounds %"class.std::initializer_list.39", ptr %70, i32 0, i32 1
  store i64 3, ptr %444, align 8, !tbaa !47
  %445 = getelementptr inbounds { ptr, i64 }, ptr %70, i32 0, i32 0
  %446 = load ptr, ptr %445, align 8
  %447 = getelementptr inbounds { ptr, i64 }, ptr %70, i32 0, i32 1
  %448 = load i64, ptr %447, align 8
  %449 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIiSaIiEEaSESt16initializer_listIiE(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr %446, i64 %448)
          to label %450 unwind label %458

450:                                              ; preds = %423
  call void @llvm.lifetime.end.p0(i64 12, ptr %71) #7
  br label %451

451:                                              ; preds = %450
  %452 = load i32, ptr %69, align 4, !tbaa !44
  %453 = add nsw i32 %452, 1
  store i32 %453, ptr %69, align 4, !tbaa !44
  br label %260, !llvm.loop !52

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

458:                                              ; preds = %423
  %459 = landingpad { ptr, i32 }
          cleanup
  %460 = extractvalue { ptr, i32 } %459, 0
  store ptr %460, ptr %9, align 8
  %461 = extractvalue { ptr, i32 } %459, 1
  store i32 %461, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %71) #7
  br label %462

462:                                              ; preds = %458, %454
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #7
  br label %474

463:                                              ; preds = %264
  invoke void @_ZN13tiramisu_code15write_variablesEv(ptr noundef nonnull align 8 dereferenceable(736) %72)
          to label %464 unwind label %470

464:                                              ; preds = %463
  invoke void @_ZN13tiramisu_code12write_inputsEv(ptr noundef nonnull align 8 dereferenceable(736) %72)
          to label %465 unwind label %470

465:                                              ; preds = %464
  invoke void @_ZN13tiramisu_code18write_computationsEv(ptr noundef nonnull align 8 dereferenceable(736) %72)
          to label %466 unwind label %470

466:                                              ; preds = %465
  invoke void @_ZN13tiramisu_code13write_buffersEv(ptr noundef nonnull align 8 dereferenceable(736) %72)
          to label %467 unwind label %470

467:                                              ; preds = %466
  invoke void @_ZN13tiramisu_code13generate_codeEv(ptr noundef nonnull align 8 dereferenceable(736) %72)
          to label %468 unwind label %470

468:                                              ; preds = %467
  invoke void @_ZN13tiramisu_code12write_footerEv(ptr noundef nonnull align 8 dereferenceable(736) %72)
          to label %469 unwind label %470

469:                                              ; preds = %468
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  call void @_ZNSt6vectorIP20computation_abstractSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %30) #7
  call void @_ZNSt6vectorIP8variableSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #7
  call void @_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #7
  ret void

470:                                              ; preds = %468, %467, %466, %465, %464, %463
  %471 = landingpad { ptr, i32 }
          cleanup
  %472 = extractvalue { ptr, i32 } %471, 0
  store ptr %472, ptr %9, align 8
  %473 = extractvalue { ptr, i32 } %471, 1
  store i32 %473, ptr %10, align 4
  br label %474

474:                                              ; preds = %470, %462
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #7
  br label %475

475:                                              ; preds = %474, %409, %384, %383, %366, %349, %332, %315, %298, %281
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  call void @_ZNSt6vectorIP20computation_abstractSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %30) #7
  call void @_ZNSt6vectorIP8variableSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #7
  br label %476

476:                                              ; preds = %475, %193
  call void @_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  br label %477

477:                                              ; preds = %476, %166
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  br label %478

478:                                              ; preds = %477, %165
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  br label %479

479:                                              ; preds = %478, %138
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #7
  br label %480

480:                                              ; preds = %479, %134, %133
  call void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(248) %81) #7
  br label %481

481:                                              ; preds = %480, %121
  call void @_ZNSt6vectorIP6bufferSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %80) #7
  call void @_ZNSt6vectorIP5inputSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %79) #7
  call void @_ZNSt6vectorIP11computationSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #7
  call void @_ZNSt6vectorIP8variableSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %77) #7
  call void @_ZNSt6vectorIP8constantSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %76) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #7
  br label %482

482:                                              ; preds = %481
  %483 = load ptr, ptr %9, align 8
  %484 = load i32, ptr %10, align 4
  %485 = insertvalue { ptr, i32 } poison, ptr %483, 0
  %486 = insertvalue { ptr, i32 } %485, i32 %484, 1
  resume { ptr, i32 } %486
}

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

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

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

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

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

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

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

declare void @_ZN6bufferC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIiSaIiEEiPS6_IP20computation_abstractSaISA_EE(ptr, ptr, ptr, i32, ptr)

declare void @_ZN5inputC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPSt6vectorIP8variableSaIS8_EE(ptr, ptr, ptr)

declare void @_ZN8variableC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr, ptr, i32, i32)

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 = { nobuiltin allocsize(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 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }
attributes #8 = { builtin allocsize(0) }
attributes #9 = { builtin 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, !34, i64 216}
!10 = !{!"_ZTS13tiramisu_code", !11, i64 0, !11, i64 32, !11, i64 64, !14, i64 96, !18, i64 120, !22, i64 144, !26, i64 168, !30, i64 192, !34, i64 216, !35, i64 224}
!11 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !12, i64 0, !13, i64 8, !7, i64 16}
!12 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!13 = !{!"long", !7, i64 0}
!14 = !{!"_ZTSSt6vectorIP8constantSaIS1_EE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseIP8constantSaIS1_EE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIP8constantSaIS1_EE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIP8constantSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!18 = !{!"_ZTSSt6vectorIP8variableSaIS1_EE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIP8variableSaIS1_EE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIP8variableSaIS1_EE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIP8variableSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!22 = !{!"_ZTSSt6vectorIP11computationSaIS1_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIP11computationSaIS1_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIP11computationSaIS1_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIP11computationSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!26 = !{!"_ZTSSt6vectorIP5inputSaIS1_EE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseIP5inputSaIS1_EE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIP5inputSaIS1_EE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIP5inputSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!30 = !{!"_ZTSSt6vectorIP6bufferSaIS1_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseIP6bufferSaIS1_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIP6bufferSaIS1_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIP6bufferSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!34 = !{!"int", !7, i64 0}
!35 = !{!"_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE", !36, i64 0, !37, i64 8}
!36 = !{!"_ZTSSo"}
!37 = !{!"_ZTSSt13basic_filebufIcSt11char_traitsIcEE", !38, i64 0, !7, i64 64, !40, i64 104, !42, i64 120, !43, i64 124, !43, i64 132, !43, i64 140, !6, i64 152, !13, i64 160, !41, i64 168, !41, i64 169, !41, i64 170, !7, i64 171, !6, i64 176, !6, i64 184, !41, i64 192, !6, i64 200, !6, i64 208, !13, i64 216, !6, i64 224, !6, i64 232}
!38 = !{!"_ZTSSt15basic_streambufIcSt11char_traitsIcEE", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !39, i64 56}
!39 = !{!"_ZTSSt6locale", !6, i64 0}
!40 = !{!"_ZTSSt12__basic_fileIcE", !6, i64 0, !41, i64 8}
!41 = !{!"bool", !7, i64 0}
!42 = !{!"_ZTSSt13_Ios_Openmode", !7, i64 0}
!43 = !{!"_ZTS11__mbstate_t", !34, i64 0, !7, i64 4}
!44 = !{!34, !34, i64 0}
!45 = !{!46, !6, i64 0}
!46 = !{!"_ZTSSt16initializer_listIiE", !6, i64 0, !13, i64 8}
!47 = !{!46, !13, i64 8}
!48 = distinct !{!48, !49}
!49 = !{!"llvm.loop.mustprogress"}
!50 = !{!51, !34, i64 36}
!51 = !{!"_ZTS8variable", !11, i64 0, !34, i64 32, !34, i64 36}
!52 = distinct !{!52, !49}


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::vector.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.25" = type { i8 }
%"class.std::vector.40" = type { %"struct.std::_Vector_base.41" }
%"struct.std::_Vector_base.41" = type { %"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<variable *, std::allocator<variable *>>::_Vector_impl" }
%"struct.std::_Vector_base<variable *, std::allocator<variable *>>::_Vector_impl" = type { %"struct.std::_Vector_base<variable *, std::allocator<variable *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<variable *, std::allocator<variable *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<computation_abstract *, std::allocator<computation_abstract *>>::_Vector_impl" }
%"struct.std::_Vector_base<computation_abstract *, std::allocator<computation_abstract *>>::_Vector_impl" = type { %"struct.std::_Vector_base<computation_abstract *, std::allocator<computation_abstract *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<computation_abstract *, std::allocator<computation_abstract *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.0" = type { i8 }

@.str.19 = external hidden unnamed_addr constant [113 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [5 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIP8variableSaIS1_EEC2Ev(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 uwtable
declare dso_local void @_ZNSt6vectorIP8variableSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 align 2

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #3

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #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: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nofree nounwind
declare noundef i32 @mkdir(ptr nocapture noundef readonly, i32 noundef) local_unnamed_addr #6

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN13tiramisu_code28generate_tiramisu_conv_layerEPSt6vectorIiSaIiEEP20computation_abstractS3_ii(ptr noundef nonnull align 8 dereferenceable(736), ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN13tiramisu_codeC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPSt6vectorIiSaIiEEPS5_(ptr noundef nonnull align 8 dereferenceable(736) %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::vector.23", align 8
  %13 = alloca [3 x i32], align 4
  %14 = alloca %"class.std::allocator.25", align 1
  %15 = alloca %"class.std::vector.40", align 8
  %16 = alloca %"class.std::vector.23", align 8
  %17 = alloca [4 x i32], align 16
  %18 = alloca %"class.std::allocator.25", align 1
  %19 = alloca %"class.std::vector", align 8
  %20 = alloca %"class.std::vector.13", align 8
  %21 = alloca ptr, align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::allocator.0", align 1
  %24 = alloca ptr, align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::allocator.0", align 1
  %27 = alloca ptr, align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator.0", align 1
  %30 = alloca ptr, align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::allocator.0", align 1
  %33 = alloca ptr, align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::allocator.0", align 1
  %36 = alloca ptr, align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::allocator.0", align 1
  %39 = alloca ptr, align 8
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator.0", align 1
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::allocator.0", align 1
  %46 = alloca %"class.std::vector.23", align 8
  %47 = alloca [3 x i32], align 4
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #7
  %48 = getelementptr inbounds i8, ptr %0, i64 32
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  %49 = getelementptr inbounds i8, ptr %0, i64 64
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #7
  %50 = getelementptr inbounds i8, ptr %0, i64 96
  tail call void @_ZNSt6vectorIP8constantSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #7
  %51 = getelementptr inbounds i8, ptr %0, i64 120
  tail call void @_ZNSt6vectorIP8variableSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %51) #7
  %52 = getelementptr inbounds i8, ptr %0, i64 144
  tail call void @_ZNSt6vectorIP11computationSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #7
  %53 = getelementptr inbounds i8, ptr %0, i64 168
  tail call void @_ZNSt6vectorIP5inputSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #7
  %54 = getelementptr inbounds i8, ptr %0, i64 192
  tail call void @_ZNSt6vectorIP6bufferSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #7
  %55 = getelementptr inbounds i8, ptr %0, i64 224
  invoke void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(248) %55)
          to label %56 unwind label %86

56:                                               ; preds = %4
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #7
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull @.str.19, ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %57 unwind label %88

57:                                               ; preds = %56
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull @.str.20)
          to label %58 unwind label %90

58:                                               ; preds = %57
  %59 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  %60 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %61 unwind label %93

61:                                               ; preds = %58
  %62 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %63 unwind label %93

63:                                               ; preds = %61
  %64 = getelementptr inbounds i8, ptr %0, i64 216
  store i32 1, ptr %64, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #7
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull @.str.21, ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %65 unwind label %95

65:                                               ; preds = %63
  %66 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  %67 = call i32 @mkdir(ptr noundef %66, i32 noundef 509) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #7
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull @.str.21, ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %68 unwind label %97

68:                                               ; preds = %65
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.22)
          to label %69 unwind label %99

69:                                               ; preds = %68
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %70 unwind label %101

70:                                               ; preds = %69
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.23)
          to label %71 unwind label %103

71:                                               ; preds = %70
  invoke void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(248) %55, ptr noundef nonnull align 8 dereferenceable(32) %8, i32 noundef 16)
          to label %72 unwind label %105

72:                                               ; preds = %71
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #7
  %73 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #7
  %74 = trunc i64 %73 to i32
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %13) #7
  store i32 3, ptr %13, align 4, !tbaa !43
  %75 = getelementptr inbounds i8, ptr %13, i64 4
  store i32 1200, ptr %75, align 4, !tbaa !43
  %76 = getelementptr inbounds i8, ptr %13, i64 8
  store i32 1200, ptr %76, align 4, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #7
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr nonnull %13, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %77 unwind label %111

77:                                               ; preds = %72
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #7
  call void @_ZNSt6vectorIS_IiSaIiEESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #7
  %78 = icmp sgt i32 %74, 0
  br i1 %78, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %114, %77
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #7
  call void @_ZNSt6vectorIP8variableSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #7
  call void @_ZNSt6vectorIP20computation_abstractSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #7
  %79 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef 0) #7
  %80 = load i32, ptr %79, align 4, !tbaa !43
  %81 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef 1) #7
  %82 = load i32, ptr %81, align 4, !tbaa !43
  %83 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef 2) #7
  %84 = load i32, ptr %83, align 4, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #7
  %85 = invoke noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #8
          to label %121 unwind label %169

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

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

90:                                               ; preds = %57
  %91 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  br label %92

92:                                               ; preds = %90, %88
  %.pn = phi { ptr, i32 } [ %91, %90 ], [ %89, %88 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  br label %269

93:                                               ; preds = %61, %58
  %94 = landingpad { ptr, i32 }
          cleanup
  br label %269

95:                                               ; preds = %63
  %96 = landingpad { ptr, i32 }
          cleanup
  br label %268

97:                                               ; preds = %65
  %98 = landingpad { ptr, i32 }
          cleanup
  br label %110

99:                                               ; preds = %68
  %100 = landingpad { ptr, i32 }
          cleanup
  br label %109

101:                                              ; preds = %69
  %102 = landingpad { ptr, i32 }
          cleanup
  br label %108

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

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

107:                                              ; preds = %105, %103
  %.pn90 = phi { ptr, i32 } [ %106, %105 ], [ %104, %103 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  br label %108

108:                                              ; preds = %107, %101
  %.pn90.pn = phi { ptr, i32 } [ %.pn90, %107 ], [ %102, %101 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  br label %109

109:                                              ; preds = %108, %99
  %.pn90.pn.pn = phi { ptr, i32 } [ %.pn90.pn, %108 ], [ %100, %99 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  br label %110

110:                                              ; preds = %109, %97
  %.pn90.pn.pn.pn = phi { ptr, i32 } [ %.pn90.pn.pn, %109 ], [ %98, %97 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #7
  br label %267

111:                                              ; preds = %72
  %112 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %13) #7
  br label %266

.lr.ph:                                           ; preds = %77, %114
  %.087163 = phi i32 [ %115, %114 ], [ 0, %77 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #7
  store <4 x i32> <i32 3, i32 3, i32 3, i32 3>, ptr %17, align 16, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #7
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr nonnull %17, i64 4, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %113 unwind label %116

113:                                              ; preds = %.lr.ph
  invoke void @_ZNSt6vectorIS_IiSaIiEESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(24) %16)
          to label %114 unwind label %118

114:                                              ; preds = %113
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #7
  %115 = add nuw nsw i32 %.087163, 1
  %exitcond.not = icmp eq i32 %115, %74
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !44

116:                                              ; preds = %.lr.ph
  %117 = landingpad { ptr, i32 }
          cleanup
  br label %120

118:                                              ; preds = %113
  %119 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  br label %120

120:                                              ; preds = %118, %116
  %.pn124 = phi { ptr, i32 } [ %119, %118 ], [ %117, %116 ]
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #7
  br label %265

121:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull @.str.72, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %122 unwind label %.thread

122:                                              ; preds = %121
  invoke void @_ZN8variableC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(40) %85, ptr noundef nonnull %22, i32 noundef 0, i32 noundef %80)
          to label %123 unwind label %172

123:                                              ; preds = %122
  store ptr %85, ptr %21, align 8, !tbaa !46
  invoke void @_ZNSt6vectorIP8variableSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %124 unwind label %172

124:                                              ; preds = %123
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #7
  %125 = invoke noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #8
          to label %126 unwind label %176

126:                                              ; preds = %124
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull @.str.73, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %127 unwind label %.thread135

127:                                              ; preds = %126
  invoke void @_ZN8variableC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(40) %125, ptr noundef nonnull %25, i32 noundef 0, i32 noundef %82)
          to label %128 unwind label %179

128:                                              ; preds = %127
  store ptr %125, ptr %24, align 8, !tbaa !46
  invoke void @_ZNSt6vectorIP8variableSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %129 unwind label %179

129:                                              ; preds = %128
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #7
  %130 = invoke noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #8
          to label %131 unwind label %183

131:                                              ; preds = %129
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %132 unwind label %.thread139

132:                                              ; preds = %131
  invoke void @_ZN8variableC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(40) %130, ptr noundef nonnull %28, i32 noundef 0, i32 noundef %84)
          to label %133 unwind label %186

133:                                              ; preds = %132
  store ptr %130, ptr %27, align 8, !tbaa !46
  invoke void @_ZNSt6vectorIP8variableSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %134 unwind label %186

134:                                              ; preds = %133
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #7
  %135 = invoke noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #8
          to label %136 unwind label %190

136:                                              ; preds = %134
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull @.str.72, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %137 unwind label %.thread143

137:                                              ; preds = %136
  invoke void @_ZN8variableC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(40) %135, ptr noundef nonnull %31, i32 noundef 0, i32 noundef %80)
          to label %138 unwind label %193

138:                                              ; preds = %137
  store ptr %135, ptr %30, align 8, !tbaa !46
  invoke void @_ZNSt6vectorIP8variableSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %51, ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %139 unwind label %193

139:                                              ; preds = %138
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #7
  %140 = invoke noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #8
          to label %141 unwind label %197

141:                                              ; preds = %139
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %35) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull @.str.73, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %142 unwind label %.thread147

142:                                              ; preds = %141
  invoke void @_ZN8variableC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(40) %140, ptr noundef nonnull %34, i32 noundef 0, i32 noundef %82)
          to label %143 unwind label %200

143:                                              ; preds = %142
  store ptr %140, ptr %33, align 8, !tbaa !46
  invoke void @_ZNSt6vectorIP8variableSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %51, ptr noundef nonnull align 8 dereferenceable(8) %33)
          to label %144 unwind label %200

144:                                              ; preds = %143
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #7
  %145 = invoke noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #8
          to label %146 unwind label %204

146:                                              ; preds = %144
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %38) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %147 unwind label %.thread151

147:                                              ; preds = %146
  invoke void @_ZN8variableC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(40) %145, ptr noundef nonnull %37, i32 noundef 0, i32 noundef %84)
          to label %148 unwind label %207

148:                                              ; preds = %147
  store ptr %145, ptr %36, align 8, !tbaa !46
  invoke void @_ZNSt6vectorIP8variableSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %51, ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %149 unwind label %207

149:                                              ; preds = %148
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #7
  %150 = invoke noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #8
          to label %151 unwind label %211

151:                                              ; preds = %149
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull @.str.75, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %152 unwind label %.thread155

152:                                              ; preds = %151
  invoke void @_ZN5inputC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPSt6vectorIP8variableSaIS8_EE(ptr noundef nonnull align 8 dereferenceable(56) %150, ptr noundef nonnull %40, ptr noundef nonnull %19)
          to label %153 unwind label %214

153:                                              ; preds = %152
  store ptr %150, ptr %39, align 8, !tbaa !46
  invoke void @_ZNSt6vectorIP5inputSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %53, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %154 unwind label %214

154:                                              ; preds = %153
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #7
  %155 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP5inputSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef 0) #7
  %156 = load ptr, ptr %155, align 8, !tbaa !46
  store ptr %156, ptr %42, align 8, !tbaa !46
  invoke void @_ZNSt6vectorIP20computation_abstractSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(8) %42)
          to label %157 unwind label %218

157:                                              ; preds = %154
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #7
  %158 = invoke noalias noundef nonnull dereferenceable(88) ptr @_Znwm(i64 noundef 88) #8
          to label %159 unwind label %220

159:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %45) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull @.str.76, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %160 unwind label %.thread159

160:                                              ; preds = %159
  invoke void @_ZNSt6vectorIiSaIiEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %161 unwind label %223

161:                                              ; preds = %160
  invoke void @_ZN6bufferC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIiSaIiEEiPS6_IP20computation_abstractSaISA_EE(ptr noundef nonnull align 8 dereferenceable(88) %158, ptr noundef nonnull %44, ptr noundef nonnull %46, i32 noundef 0, ptr noundef nonnull %20)
          to label %162 unwind label %225

162:                                              ; preds = %161
  store ptr %158, ptr %43, align 8, !tbaa !46
  invoke void @_ZNSt6vectorIP6bufferSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %54, ptr noundef nonnull align 8 dereferenceable(8) %43)
          to label %163 unwind label %225

163:                                              ; preds = %162
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #7
  %164 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP5inputSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef 0) #7
  %165 = icmp sgt i32 %74, 1
  br i1 %165, label %.lr.ph167, label %._crit_edge168

.lr.ph167:                                        ; preds = %163
  %166 = load ptr, ptr %164, align 8, !tbaa !46
  %167 = getelementptr inbounds i8, ptr %47, i64 4
  %168 = getelementptr inbounds i8, ptr %47, i64 8
  %wide.trip.count = and i64 %73, 2147483647
  br label %230

._crit_edge168:                                   ; preds = %251, %163
  invoke void @_ZN13tiramisu_code15write_variablesEv(ptr noundef nonnull align 8 dereferenceable(736) %0)
          to label %256 unwind label %262

169:                                              ; preds = %._crit_edge
  %170 = landingpad { ptr, i32 }
          cleanup
  br label %175

.thread:                                          ; preds = %121
  %171 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #7
  br label %174

172:                                              ; preds = %122, %123
  %.085 = phi i1 [ false, %123 ], [ true, %122 ]
  %173 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #7
  br i1 %.085, label %174, label %175

174:                                              ; preds = %.thread, %172
  %.pn95134 = phi { ptr, i32 } [ %171, %.thread ], [ %173, %172 ]
  call void @_ZdlPvm(ptr noundef nonnull %85, i64 noundef 40) #9
  br label %175

175:                                              ; preds = %172, %174, %169
  %.pn95.pn = phi { ptr, i32 } [ %.pn95134, %174 ], [ %173, %172 ], [ %170, %169 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  br label %264

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

.thread135:                                       ; preds = %126
  %178 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #7
  br label %181

179:                                              ; preds = %127, %128
  %.083 = phi i1 [ false, %128 ], [ true, %127 ]
  %180 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #7
  br i1 %.083, label %181, label %182

181:                                              ; preds = %.thread135, %179
  %.pn98138 = phi { ptr, i32 } [ %178, %.thread135 ], [ %180, %179 ]
  call void @_ZdlPvm(ptr noundef nonnull %125, i64 noundef 40) #9
  br label %182

182:                                              ; preds = %179, %181, %176
  %.pn98.pn = phi { ptr, i32 } [ %.pn98138, %181 ], [ %180, %179 ], [ %177, %176 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  br label %264

183:                                              ; preds = %129
  %184 = landingpad { ptr, i32 }
          cleanup
  br label %189

.thread139:                                       ; preds = %131
  %185 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #7
  br label %188

186:                                              ; preds = %132, %133
  %.081 = phi i1 [ false, %133 ], [ true, %132 ]
  %187 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #7
  br i1 %.081, label %188, label %189

188:                                              ; preds = %.thread139, %186
  %.pn101142 = phi { ptr, i32 } [ %185, %.thread139 ], [ %187, %186 ]
  call void @_ZdlPvm(ptr noundef nonnull %130, i64 noundef 40) #9
  br label %189

189:                                              ; preds = %186, %188, %183
  %.pn101.pn = phi { ptr, i32 } [ %.pn101142, %188 ], [ %187, %186 ], [ %184, %183 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #7
  br label %264

190:                                              ; preds = %134
  %191 = landingpad { ptr, i32 }
          cleanup
  br label %196

.thread143:                                       ; preds = %136
  %192 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #7
  br label %195

193:                                              ; preds = %137, %138
  %.079 = phi i1 [ false, %138 ], [ true, %137 ]
  %194 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #7
  br i1 %.079, label %195, label %196

195:                                              ; preds = %.thread143, %193
  %.pn104146 = phi { ptr, i32 } [ %192, %.thread143 ], [ %194, %193 ]
  call void @_ZdlPvm(ptr noundef nonnull %135, i64 noundef 40) #9
  br label %196

196:                                              ; preds = %193, %195, %190
  %.pn104.pn = phi { ptr, i32 } [ %.pn104146, %195 ], [ %194, %193 ], [ %191, %190 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  br label %264

197:                                              ; preds = %139
  %198 = landingpad { ptr, i32 }
          cleanup
  br label %203

.thread147:                                       ; preds = %141
  %199 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #7
  br label %202

200:                                              ; preds = %142, %143
  %.077 = phi i1 [ false, %143 ], [ true, %142 ]
  %201 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #7
  br i1 %.077, label %202, label %203

202:                                              ; preds = %.thread147, %200
  %.pn107150 = phi { ptr, i32 } [ %199, %.thread147 ], [ %201, %200 ]
  call void @_ZdlPvm(ptr noundef nonnull %140, i64 noundef 40) #9
  br label %203

203:                                              ; preds = %200, %202, %197
  %.pn107.pn = phi { ptr, i32 } [ %.pn107150, %202 ], [ %201, %200 ], [ %198, %197 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #7
  br label %264

204:                                              ; preds = %144
  %205 = landingpad { ptr, i32 }
          cleanup
  br label %210

.thread151:                                       ; preds = %146
  %206 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #7
  br label %209

207:                                              ; preds = %147, %148
  %.075 = phi i1 [ false, %148 ], [ true, %147 ]
  %208 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #7
  br i1 %.075, label %209, label %210

209:                                              ; preds = %.thread151, %207
  %.pn110154 = phi { ptr, i32 } [ %206, %.thread151 ], [ %208, %207 ]
  call void @_ZdlPvm(ptr noundef nonnull %145, i64 noundef 40) #9
  br label %210

210:                                              ; preds = %207, %209, %204
  %.pn110.pn = phi { ptr, i32 } [ %.pn110154, %209 ], [ %208, %207 ], [ %205, %204 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #7
  br label %264

211:                                              ; preds = %149
  %212 = landingpad { ptr, i32 }
          cleanup
  br label %217

.thread155:                                       ; preds = %151
  %213 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #7
  br label %216

214:                                              ; preds = %152, %153
  %.073 = phi i1 [ false, %153 ], [ true, %152 ]
  %215 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #7
  br i1 %.073, label %216, label %217

216:                                              ; preds = %.thread155, %214
  %.pn113158 = phi { ptr, i32 } [ %213, %.thread155 ], [ %215, %214 ]
  call void @_ZdlPvm(ptr noundef nonnull %150, i64 noundef 56) #9
  br label %217

217:                                              ; preds = %214, %216, %211
  %.pn113.pn = phi { ptr, i32 } [ %.pn113158, %216 ], [ %215, %214 ], [ %212, %211 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #7
  br label %264

218:                                              ; preds = %154
  %219 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #7
  br label %264

220:                                              ; preds = %157
  %221 = landingpad { ptr, i32 }
          cleanup
  br label %229

.thread159:                                       ; preds = %159
  %222 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %45) #7
  br label %228

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

225:                                              ; preds = %162, %161
  %.070 = phi i1 [ false, %162 ], [ true, %161 ]
  %226 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  br label %227

227:                                              ; preds = %223, %225
  %.171 = phi i1 [ %.070, %225 ], [ true, %223 ]
  %.pn116 = phi { ptr, i32 } [ %226, %225 ], [ %224, %223 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %45) #7
  br i1 %.171, label %228, label %229

228:                                              ; preds = %.thread159, %227
  %.pn116.pn162 = phi { ptr, i32 } [ %222, %.thread159 ], [ %.pn116, %227 ]
  call void @_ZdlPvm(ptr noundef nonnull %158, i64 noundef 88) #9
  br label %229

229:                                              ; preds = %227, %228, %220
  %.pn116.pn.pn = phi { ptr, i32 } [ %.pn116.pn162, %228 ], [ %.pn116, %227 ], [ %221, %220 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #7
  br label %264

230:                                              ; preds = %.lr.ph167, %251
  %indvars.iv = phi i64 [ 1, %.lr.ph167 ], [ %indvars.iv.next, %251 ]
  %.069164 = phi ptr [ %166, %.lr.ph167 ], [ %236, %251 ]
  %231 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %indvars.iv) #7
  %232 = add nsw i64 %indvars.iv, -1
  %233 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %232) #7
  %234 = load i32, ptr %233, align 4, !tbaa !43
  %235 = trunc nuw nsw i64 %indvars.iv to i32
  %236 = invoke noundef ptr @_ZN13tiramisu_code28generate_tiramisu_conv_layerEPSt6vectorIiSaIiEEP20computation_abstractS3_ii(ptr noundef nonnull align 8 dereferenceable(736) %0, ptr noundef nonnull %12, ptr noundef %.069164, ptr noundef nonnull %231, i32 noundef %234, i32 noundef %235)
          to label %237 unwind label %252

237:                                              ; preds = %230
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %47) #7
  %238 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %indvars.iv) #7
  %239 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %238, i64 noundef 0) #7
  %240 = load i32, ptr %239, align 4, !tbaa !43
  store i32 %240, ptr %47, align 4, !tbaa !43
  %241 = getelementptr inbounds i8, ptr %236, i64 32
  %242 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP8variableSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %241, i64 noundef 1) #7
  %243 = load ptr, ptr %242, align 8, !tbaa !46
  %244 = getelementptr inbounds i8, ptr %243, i64 36
  %245 = load i32, ptr %244, align 4, !tbaa !47
  store i32 %245, ptr %167, align 4, !tbaa !43
  %246 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP8variableSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %241, i64 noundef 2) #7
  %247 = load ptr, ptr %246, align 8, !tbaa !46
  %248 = getelementptr inbounds i8, ptr %247, i64 36
  %249 = load i32, ptr %248, align 4, !tbaa !47
  store i32 %249, ptr %168, align 4, !tbaa !43
  %250 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIiSaIiEEaSESt16initializer_listIiE(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr nonnull %47, i64 3)
          to label %251 unwind label %254

251:                                              ; preds = %237
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %47) #7
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond170.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond170.not, label %._crit_edge168, label %230, !llvm.loop !49

252:                                              ; preds = %230
  %253 = landingpad { ptr, i32 }
          cleanup
  br label %264

254:                                              ; preds = %237
  %255 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %47) #7
  br label %264

256:                                              ; preds = %._crit_edge168
  invoke void @_ZN13tiramisu_code12write_inputsEv(ptr noundef nonnull align 8 dereferenceable(736) %0)
          to label %257 unwind label %262

257:                                              ; preds = %256
  invoke void @_ZN13tiramisu_code18write_computationsEv(ptr noundef nonnull align 8 dereferenceable(736) %0)
          to label %258 unwind label %262

258:                                              ; preds = %257
  invoke void @_ZN13tiramisu_code13write_buffersEv(ptr noundef nonnull align 8 dereferenceable(736) %0)
          to label %259 unwind label %262

259:                                              ; preds = %258
  invoke void @_ZN13tiramisu_code13generate_codeEv(ptr noundef nonnull align 8 dereferenceable(736) %0)
          to label %260 unwind label %262

260:                                              ; preds = %259
  invoke void @_ZN13tiramisu_code12write_footerEv(ptr noundef nonnull align 8 dereferenceable(736) %0)
          to label %261 unwind label %262

261:                                              ; preds = %260
  call void @_ZNSt6vectorIP20computation_abstractSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #7
  call void @_ZNSt6vectorIP8variableSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #7
  call void @_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  ret void

262:                                              ; preds = %260, %259, %258, %257, %256, %._crit_edge168
  %263 = landingpad { ptr, i32 }
          cleanup
  br label %264

264:                                              ; preds = %262, %254, %252, %229, %218, %217, %210, %203, %196, %189, %182, %175
  %.pn120.pn.pn = phi { ptr, i32 } [ %.pn116.pn.pn, %229 ], [ %219, %218 ], [ %.pn113.pn, %217 ], [ %.pn110.pn, %210 ], [ %.pn107.pn, %203 ], [ %.pn104.pn, %196 ], [ %.pn101.pn, %189 ], [ %.pn98.pn, %182 ], [ %.pn95.pn, %175 ], [ %263, %262 ], [ %255, %254 ], [ %253, %252 ]
  call void @_ZNSt6vectorIP20computation_abstractSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #7
  call void @_ZNSt6vectorIP8variableSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #7
  br label %265

265:                                              ; preds = %264, %120
  %.pn124.pn = phi { ptr, i32 } [ %.pn124, %120 ], [ %.pn120.pn.pn, %264 ]
  call void @_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  br label %266

266:                                              ; preds = %265, %111
  %.pn124.pn.pn = phi { ptr, i32 } [ %.pn124.pn, %265 ], [ %112, %111 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #7
  br label %267

267:                                              ; preds = %266, %110
  %.pn124.pn.pn.pn = phi { ptr, i32 } [ %.pn124.pn.pn, %266 ], [ %.pn90.pn.pn.pn, %110 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  br label %268

268:                                              ; preds = %267, %95
  %.pn124.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn124.pn.pn.pn, %267 ], [ %96, %95 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  br label %269

269:                                              ; preds = %268, %93, %92
  %.pn124.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn124.pn.pn.pn.pn, %268 ], [ %94, %93 ], [ %.pn, %92 ]
  call void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(248) %55) #7
  br label %270

270:                                              ; preds = %269, %86
  %.pn124.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn124.pn.pn.pn.pn.pn, %269 ], [ %87, %86 ]
  call void @_ZNSt6vectorIP6bufferSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #7
  call void @_ZNSt6vectorIP5inputSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #7
  call void @_ZNSt6vectorIP11computationSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #7
  call void @_ZNSt6vectorIP8variableSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %51) #7
  call void @_ZNSt6vectorIP8constantSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #7
  resume { ptr, i32 } %.pn124.pn.pn.pn.pn.pn.pn
}

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

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

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

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

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

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

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

declare void @_ZN6bufferC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIiSaIiEEiPS6_IP20computation_abstractSaISA_EE(ptr, ptr, ptr, i32, ptr) local_unnamed_addr

declare void @_ZN5inputC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPSt6vectorIP8variableSaIS8_EE(ptr, ptr, ptr) local_unnamed_addr

declare void @_ZN8variableC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr, ptr, i32, i32) local_unnamed_addr

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 = { nobuiltin allocsize(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 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }
attributes #8 = { builtin allocsize(0) }
attributes #9 = { builtin 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, !33, i64 216}
!6 = !{!"_ZTS13tiramisu_code", !7, i64 0, !7, i64 32, !7, i64 64, !13, i64 96, !17, i64 120, !21, i64 144, !25, i64 168, !29, i64 192, !33, i64 216, !34, i64 224}
!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 = !{!"_ZTSSt6vectorIP8constantSaIS1_EE", !14, i64 0}
!14 = !{!"_ZTSSt12_Vector_baseIP8constantSaIS1_EE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIP8constantSaIS1_EE12_Vector_implE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIP8constantSaIS1_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!17 = !{!"_ZTSSt6vectorIP8variableSaIS1_EE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIP8variableSaIS1_EE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIP8variableSaIS1_EE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIP8variableSaIS1_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!21 = !{!"_ZTSSt6vectorIP11computationSaIS1_EE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseIP11computationSaIS1_EE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIP11computationSaIS1_EE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIP11computationSaIS1_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!25 = !{!"_ZTSSt6vectorIP5inputSaIS1_EE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseIP5inputSaIS1_EE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIP5inputSaIS1_EE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIP5inputSaIS1_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!29 = !{!"_ZTSSt6vectorIP6bufferSaIS1_EE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseIP6bufferSaIS1_EE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIP6bufferSaIS1_EE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIP6bufferSaIS1_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!33 = !{!"int", !10, i64 0}
!34 = !{!"_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE", !35, i64 0, !36, i64 8}
!35 = !{!"_ZTSSo"}
!36 = !{!"_ZTSSt13basic_filebufIcSt11char_traitsIcEE", !37, i64 0, !10, i64 64, !39, i64 104, !41, i64 120, !42, i64 124, !42, i64 132, !42, i64 140, !9, i64 152, !12, i64 160, !40, i64 168, !40, i64 169, !40, i64 170, !10, i64 171, !9, i64 176, !9, i64 184, !40, i64 192, !9, i64 200, !9, i64 208, !12, i64 216, !9, i64 224, !9, i64 232}
!37 = !{!"_ZTSSt15basic_streambufIcSt11char_traitsIcEE", !9, i64 8, !9, i64 16, !9, i64 24, !9, i64 32, !9, i64 40, !9, i64 48, !38, i64 56}
!38 = !{!"_ZTSSt6locale", !9, i64 0}
!39 = !{!"_ZTSSt12__basic_fileIcE", !9, i64 0, !40, i64 8}
!40 = !{!"bool", !10, i64 0}
!41 = !{!"_ZTSSt13_Ios_Openmode", !10, i64 0}
!42 = !{!"_ZTS11__mbstate_t", !33, i64 0, !10, i64 4}
!43 = !{!33, !33, i64 0}
!44 = distinct !{!44, !45}
!45 = !{!"llvm.loop.mustprogress"}
!46 = !{!9, !9, i64 0}
!47 = !{!48, !33, i64 36}
!48 = !{!"_ZTS8variable", !7, i64 0, !33, i64 32, !33, i64 36}
!49 = distinct !{!49, !45}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass