; LLVM IR from ChenyangZhang-cs/iMLBench :: MLP/co-run&zero-copy/examples/MNIST_CNN.ll (Z9MNIST_CNNb)

; 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::vector.4" = type { %"struct.std::_Vector_base.5" }
%"struct.std::_Vector_base.5" = type { %"struct.std::_Vector_base<clnet::Tensor *, std::allocator<clnet::Tensor *>>::_Vector_impl" }
%"struct.std::_Vector_base<clnet::Tensor *, std::allocator<clnet::Tensor *>>::_Vector_impl" = type { %"struct.std::_Vector_base<clnet::Tensor *, std::allocator<clnet::Tensor *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<clnet::Tensor *, std::allocator<clnet::Tensor *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<long long, std::allocator<long long>>::_Vector_impl" }
%"struct.std::_Vector_base<long long, std::allocator<long long>>::_Vector_impl" = type { %"struct.std::_Vector_base<long long, std::allocator<long long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<long long, std::allocator<long long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::initializer_list" = type { ptr, i64 }
%"class.std::allocator" = type { i8 }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.1" = type { i8 }
%"class.std::vector.9" = type { %"struct.std::_Vector_base.10" }
%"struct.std::_Vector_base.10" = 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.14" = type { ptr, i64 }
%"class.std::allocator.11" = type { i8 }
%"class.std::function.15" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon = type { %"class.std::__cxx11::basic_string" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%class.anon.26 = type { i8 }
%"class.std::function.18" = type { %"class.std::_Function_base", ptr }
%class.anon.27 = type { i8 }
%"class.std::initializer_list.29" = type { ptr, i64 }
%"class.std::allocator.6" = type { i8 }
%class.anon.30 = type { ptr }
%"class.std::function.21" = type { %"class.std::_Function_base", ptr }
%class.anon.31 = type { i8 }
%"class.std::function.23" = type { %"class.std::_Function_base", ptr }
%class.anon.33 = type { i8 }
%class.anon.35 = type { i8 }
%class.anon.37 = type { i8 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%class.anon.40 = type { i32, i32, ptr, %"class.std::vector.4", %"class.std::__cxx11::basic_string" }
%class.anon.41 = type { ptr, i32, ptr, ptr }
%class.anon.42 = type { ptr }
%"struct.clnet::Tensor" = type { ptr, %"class.std::vector", %"class.std::vector.4", %"class.std::__cxx11::basic_string", %"class.std::vector.4", i64, ptr, ptr, i64 }

@constinit = external hidden constant [4 x i64], align 8
@.str = external hidden unnamed_addr constant [21 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [19 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.26 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [4 x i8], align 1
@_ZN5clnet6Tensor3ALLE = external global %"class.std::vector.4", align 8
@_ZTIN5clnet6TensorE = external constant ptr
@_ZTIN5clnet4type9ParameterE = external constant ptr
@.str.31 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [20 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local noundef nonnull align 8 dereferenceable(144) ptr @_Z9MNIST_CNNb(i1 noundef zeroext %0) #0 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca i8, align 1
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca %"class.std::vector", align 8
  %8 = alloca %"class.std::initializer_list", align 8
  %9 = alloca [4 x i64], align 8
  %10 = alloca %"class.std::allocator", align 1
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::allocator.1", align 1
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::allocator.1", align 1
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator.1", align 1
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::allocator.1", align 1
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca i1, align 1
  %24 = alloca %"class.std::vector", align 8
  %25 = alloca %"class.std::initializer_list", align 8
  %26 = alloca [4 x i64], align 8
  %27 = alloca %"class.std::allocator", align 1
  %28 = alloca %"class.std::vector", align 8
  %29 = alloca %"class.std::vector.4", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::allocator.1", align 1
  %32 = alloca %"class.std::vector.4", align 8
  %33 = alloca i1, align 1
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator.1", align 1
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::allocator.1", align 1
  %44 = alloca ptr, align 8
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::allocator.1", align 1
  %48 = alloca ptr, align 8
  %49 = alloca %"class.std::vector.9", align 8
  %50 = alloca %"class.std::initializer_list.14", align 8
  %51 = alloca [1 x i32], align 4
  %52 = alloca %"class.std::allocator.11", align 1
  %53 = alloca %"class.std::vector.9", align 8
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca %"class.std::allocator.1", align 1
  %57 = alloca ptr, align 8
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.std::allocator.1", align 1
  %61 = alloca ptr, align 8
  %62 = alloca %"class.std::vector.9", align 8
  %63 = alloca %"class.std::initializer_list.14", align 8
  %64 = alloca [1 x i32], align 4
  %65 = alloca %"class.std::allocator.11", align 1
  %66 = alloca %"class.std::vector.9", align 8
  %67 = alloca %"class.std::__cxx11::basic_string", align 8
  %68 = alloca %"class.std::__cxx11::basic_string", align 8
  %69 = alloca %"class.std::allocator.1", align 1
  %70 = alloca ptr, align 8
  %71 = alloca %"class.std::vector", align 8
  %72 = alloca %"class.std::initializer_list", align 8
  %73 = alloca [2 x i64], align 8
  %74 = alloca %"class.std::allocator", align 1
  %75 = alloca %"class.std::__cxx11::basic_string", align 8
  %76 = alloca %"class.std::allocator.1", align 1
  %77 = alloca ptr, align 8
  %78 = alloca %"class.std::__cxx11::basic_string", align 8
  %79 = alloca %"class.std::__cxx11::basic_string", align 8
  %80 = alloca %"class.std::allocator.1", align 1
  %81 = alloca ptr, align 8
  %82 = alloca %"class.std::__cxx11::basic_string", align 8
  %83 = alloca %"class.std::allocator.1", align 1
  %84 = alloca %"class.std::__cxx11::basic_string", align 8
  %85 = alloca %"class.std::allocator.1", align 1
  %86 = alloca %"class.std::__cxx11::basic_string", align 8
  %87 = alloca %"class.std::__cxx11::basic_string", align 8
  %88 = alloca %"class.std::allocator.1", align 1
  %89 = alloca %"class.std::__cxx11::basic_string", align 8
  %90 = alloca %"class.std::allocator.1", align 1
  %91 = alloca ptr, align 8
  %92 = alloca %"class.std::__cxx11::basic_string", align 8
  %93 = alloca %"class.std::allocator.1", align 1
  %94 = alloca %"class.std::vector.4", align 8
  %95 = alloca %"class.std::vector.4", align 8
  %96 = alloca %"class.std::function.15", align 8
  %97 = alloca %class.anon, align 8
  %98 = alloca %"class.std::function", align 8
  %99 = alloca %class.anon.26, align 1
  %100 = alloca %"class.std::function.18", align 8
  %101 = alloca %class.anon.27, align 1
  %102 = alloca i1, align 1
  %103 = alloca ptr, align 8
  %104 = alloca %"class.std::__cxx11::basic_string", align 8
  %105 = alloca %"class.std::allocator.1", align 1
  %106 = alloca ptr, align 8
  %107 = alloca %"class.std::__cxx11::basic_string", align 8
  %108 = alloca %"class.std::allocator.1", align 1
  %109 = alloca %"class.std::vector.4", align 8
  %110 = alloca %"class.std::initializer_list.29", align 8
  %111 = alloca [1 x ptr], align 8
  %112 = alloca %"class.std::allocator.6", align 1
  %113 = alloca %"class.std::function.15", align 8
  %114 = alloca %class.anon.30, align 8
  %115 = alloca %"class.std::vector.4", align 8
  %116 = alloca %"class.std::initializer_list.29", align 8
  %117 = alloca [1 x ptr], align 8
  %118 = alloca %"class.std::allocator.6", align 1
  %119 = alloca %"class.std::function.21", align 8
  %120 = alloca %class.anon.31, align 1
  %121 = alloca %"class.std::function.23", align 8
  %122 = alloca %class.anon.33, align 1
  %123 = alloca %"class.std::function", align 8
  %124 = alloca %class.anon.35, align 1
  %125 = alloca %"class.std::function.18", align 8
  %126 = alloca %class.anon.37, align 1
  %127 = alloca i1, align 1
  %128 = alloca %"class.std::__cxx11::basic_string", align 8
  %129 = alloca %"class.std::__cxx11::basic_string", align 8
  %130 = alloca %"class.std::allocator.1", align 1
  %131 = alloca %"class.std::__cxx11::basic_string", align 8
  %132 = alloca %"class.std::allocator.1", align 1
  %133 = alloca i32, align 4
  %134 = alloca i32, align 4
  %135 = alloca ptr, align 8
  %136 = alloca %"class.std::__cxx11::basic_string", align 8
  %137 = alloca i1, align 1
  %138 = alloca ptr, align 8
  %139 = alloca i32, align 4
  %140 = alloca i32, align 4
  %141 = alloca i32, align 4
  %142 = alloca i32, align 4
  %143 = alloca float, align 4
  %144 = alloca %"class.std::__cxx11::basic_string", align 8
  %145 = alloca %"class.std::allocator.1", align 1
  %146 = alloca float, align 4
  %147 = alloca %"class.std::__cxx11::basic_string", align 8
  %148 = alloca %"class.std::allocator.1", align 1
  %149 = alloca i32, align 4
  %150 = alloca %"class.std::__cxx11::basic_string", align 8
  %151 = alloca %"class.std::allocator.1", align 1
  %152 = alloca ptr, align 8
  %153 = alloca %"class.std::vector", align 8
  %154 = alloca %"class.std::initializer_list", align 8
  %155 = alloca [1 x i64], align 8
  %156 = alloca %"class.std::allocator", align 1
  %157 = alloca %"class.std::vector.4", align 8
  %158 = alloca %"class.std::__cxx11::basic_string", align 8
  %159 = alloca %"class.std::allocator.1", align 1
  %160 = alloca %"class.std::vector.4", align 8
  %161 = alloca i1, align 1
  %162 = alloca ptr, align 8
  %163 = alloca ptr, align 8
  %164 = alloca %"class.std::__cxx11::basic_string", align 8
  %165 = alloca %"class.std::allocator.1", align 1
  %166 = alloca ptr, align 8
  %167 = alloca %"class.std::vector.4", align 8
  %168 = alloca %"class.std::vector.4", align 8
  %169 = alloca ptr, align 8
  %170 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %171 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %172 = alloca ptr, align 8
  %173 = alloca i32, align 4
  %174 = alloca ptr, align 8
  %175 = alloca %"class.std::__cxx11::basic_string", align 8
  %176 = alloca %"class.std::allocator.1", align 1
  %177 = alloca %"class.std::vector.4", align 8
  %178 = alloca %"class.std::vector.4", align 8
  %179 = alloca %"class.std::function.15", align 8
  %180 = alloca %class.anon.40, align 8
  %181 = alloca %"class.std::function", align 8
  %182 = alloca %class.anon.26, align 1
  %183 = alloca %"class.std::function.18", align 8
  %184 = alloca %class.anon.27, align 1
  %185 = alloca i1, align 1
  %186 = alloca ptr, align 8
  %187 = alloca %"class.std::__cxx11::basic_string", align 8
  %188 = alloca %"class.std::allocator.1", align 1
  %189 = alloca %"class.std::vector.4", align 8
  %190 = alloca %"class.std::function.15", align 8
  %191 = alloca %class.anon.41, align 8
  %192 = alloca %"class.std::vector.4", align 8
  %193 = alloca %"class.std::function.21", align 8
  %194 = alloca %class.anon.42, align 8
  %195 = alloca %"class.std::function.23", align 8
  %196 = alloca %class.anon.33, align 1
  %197 = alloca %"class.std::function", align 8
  %198 = alloca %class.anon.35, align 1
  %199 = alloca %"class.std::function.18", align 8
  %200 = alloca %class.anon.37, align 1
  %201 = alloca i1, align 1
  %202 = alloca %"class.std::vector.4", align 8
  %203 = alloca %"class.std::initializer_list.29", align 8
  %204 = alloca [1 x ptr], align 8
  %205 = alloca %"class.std::allocator.6", align 1
  %206 = alloca %"class.std::vector.4", align 8
  %207 = alloca %"class.std::initializer_list.29", align 8
  %208 = alloca [4 x ptr], align 8
  %209 = alloca %"class.std::allocator.6", align 1
  %210 = zext i1 %0 to i8
  store i8 %210, ptr %3, align 1, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #12
  store ptr null, ptr %6, align 8, !tbaa !9
  %211 = load i8, ptr %3, align 1, !tbaa !5, !range !11, !noundef !12
  %212 = trunc i8 %211 to i1
  br i1 %212, label %213, label %238

213:                                              ; preds = %1
  store i32 1, ptr %4, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 32, ptr %9) #12
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %9, ptr align 8 @constinit, i64 32, i1 false), !tbaa.struct !15
  %214 = getelementptr inbounds %"class.std::initializer_list", ptr %8, i32 0, i32 0
  store ptr %9, ptr %214, align 8, !tbaa !17
  %215 = getelementptr inbounds %"class.std::initializer_list", ptr %8, i32 0, i32 1
  store i64 4, ptr %215, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #12
  call void @_ZNSaIxEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #12
  %216 = getelementptr inbounds { ptr, i64 }, ptr %8, i32 0, i32 0
  %217 = load ptr, ptr %216, align 8
  %218 = getelementptr inbounds { ptr, i64 }, ptr %8, i32 0, i32 1
  %219 = load i64, ptr %218, align 8
  invoke void @_ZNSt6vectorIxSaIxEEC2ESt16initializer_listIxERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr %217, i64 %219, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %220 unwind label %224

220:                                              ; preds = %213
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %221 unwind label %228

221:                                              ; preds = %220
  %222 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet4DataESt6vectorIxSaIxEEPNS_6TensorENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef %7, ptr noundef null, ptr noundef %13)
          to label %223 unwind label %232

223:                                              ; preds = %221
  store ptr %222, ptr %5, align 8, !tbaa !9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #12
  call void @_ZNSt6vectorIxSaIxEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #12
  call void @_ZNSt15__new_allocatorIxED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #12
  br label %352

224:                                              ; preds = %213
  %225 = landingpad { ptr, i32 }
          cleanup
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %11, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %12, align 4
  br label %237

228:                                              ; preds = %220
  %229 = landingpad { ptr, i32 }
          cleanup
  %230 = extractvalue { ptr, i32 } %229, 0
  store ptr %230, ptr %11, align 8
  %231 = extractvalue { ptr, i32 } %229, 1
  store i32 %231, ptr %12, align 4
  br label %236

232:                                              ; preds = %221
  %233 = landingpad { ptr, i32 }
          cleanup
  %234 = extractvalue { ptr, i32 } %233, 0
  store ptr %234, ptr %11, align 8
  %235 = extractvalue { ptr, i32 } %233, 1
  store i32 %235, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #12
  br label %236

236:                                              ; preds = %232, %228
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #12
  call void @_ZNSt6vectorIxSaIxEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #12
  br label %237

237:                                              ; preds = %236, %224
  call void @_ZNSt15__new_allocatorIxED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #12
  br label %1064

238:                                              ; preds = %1
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %239 unwind label %284

239:                                              ; preds = %238
  %240 = invoke noundef i32 @_ZN5clnet8optionalIiEET_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES1_(ptr noundef %15, i32 noundef 32)
          to label %241 unwind label %288

241:                                              ; preds = %239
  store i32 %240, ptr %4, align 4, !tbaa !13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %242 unwind label %293

242:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef @.str.6, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %243 unwind label %297

243:                                              ; preds = %242
  invoke void @_ZN5clnet8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEET_S6_S7_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef %18, ptr noundef %20)
          to label %244 unwind label %301

244:                                              ; preds = %243
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #12
  %245 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 168) #13
          to label %246 unwind label %307

246:                                              ; preds = %244
  store i1 true, ptr %23, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %247 unwind label %311

247:                                              ; preds = %246
  %248 = load i32, ptr %4, align 4, !tbaa !13
  invoke void @_ZN18MNISTImageIteratorC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(168) %245, ptr noundef %22, i32 noundef %248)
          to label %249 unwind label %315

249:                                              ; preds = %247
  store i1 false, ptr %23, align 1
  store ptr %245, ptr %6, align 8, !tbaa !9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr %24) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #12
  %250 = load i32, ptr %4, align 4, !tbaa !13
  %251 = sext i32 %250 to i64
  store i64 %251, ptr %26, align 8, !tbaa !21
  %252 = getelementptr inbounds i64, ptr %26, i64 1
  %253 = load ptr, ptr %6, align 8, !tbaa !9
  %254 = getelementptr inbounds %"struct.clnet::Tensor", ptr %253, i32 0, i32 4
  %255 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %254, i64 noundef 0) #12
  %256 = load ptr, ptr %255, align 8, !tbaa !9
  %257 = getelementptr inbounds %"struct.clnet::Tensor", ptr %256, i32 0, i32 1
  %258 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIxSaIxEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %257, i64 noundef 1) #12
  %259 = load i64, ptr %258, align 8, !tbaa !21
  store i64 %259, ptr %252, align 8, !tbaa !21
  %260 = getelementptr inbounds i64, ptr %26, i64 2
  %261 = load ptr, ptr %6, align 8, !tbaa !9
  %262 = getelementptr inbounds %"struct.clnet::Tensor", ptr %261, i32 0, i32 4
  %263 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %262, i64 noundef 0) #12
  %264 = load ptr, ptr %263, align 8, !tbaa !9
  %265 = getelementptr inbounds %"struct.clnet::Tensor", ptr %264, i32 0, i32 1
  %266 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIxSaIxEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %265, i64 noundef 2) #12
  %267 = load i64, ptr %266, align 8, !tbaa !21
  store i64 %267, ptr %260, align 8, !tbaa !21
  %268 = getelementptr inbounds i64, ptr %26, i64 3
  store i64 1, ptr %268, align 8, !tbaa !21
  %269 = getelementptr inbounds %"class.std::initializer_list", ptr %25, i32 0, i32 0
  store ptr %26, ptr %269, align 8, !tbaa !17
  %270 = getelementptr inbounds %"class.std::initializer_list", ptr %25, i32 0, i32 1
  store i64 4, ptr %270, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #12
  call void @_ZNSaIxEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #12
  %271 = getelementptr inbounds { ptr, i64 }, ptr %25, i32 0, i32 0
  %272 = load ptr, ptr %271, align 8
  %273 = getelementptr inbounds { ptr, i64 }, ptr %25, i32 0, i32 1
  %274 = load i64, ptr %273, align 8
  invoke void @_ZNSt6vectorIxSaIxEEC2ESt16initializer_listIxERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %24, ptr %272, i64 %274, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %275 unwind label %323

275:                                              ; preds = %249
  call void @_ZNSt15__new_allocatorIxED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #12
  %276 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 144) #13
          to label %277 unwind label %327

277:                                              ; preds = %275
  store i1 true, ptr %33, align 1
  invoke void @_ZNSt6vectorIxSaIxEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %28, ptr noundef nonnull align 8 dereferenceable(24) %24)
          to label %278 unwind label %331

278:                                              ; preds = %277
  call void @llvm.memset.p0.i64(ptr align 8 %29, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef @.str.7, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %279 unwind label %335

279:                                              ; preds = %278
  call void @llvm.memset.p0.i64(ptr align 8 %32, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #12
  invoke void @_ZN5clnet6TensorC1ESt6vectorIxSaIxEES1_IPS0_SaIS4_EENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_(ptr noundef nonnull align 8 dereferenceable(144) %276, ptr noundef %28, ptr noundef %29, ptr noundef %30, ptr noundef %32)
          to label %280 unwind label %339

280:                                              ; preds = %279
  store i1 false, ptr %33, align 1
  store ptr %276, ptr %5, align 8, !tbaa !9
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #12
  call void @_ZNSt6vectorIxSaIxEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #12
  %281 = load ptr, ptr %5, align 8, !tbaa !9
  %282 = load ptr, ptr %6, align 8, !tbaa !9
  invoke void @_ZN5clnet6Tensor12dependent_onEPS0_(ptr noundef nonnull align 8 dereferenceable(144) %281, ptr noundef %282)
          to label %283 unwind label %327

283:                                              ; preds = %280
  call void @_ZNSt6vectorIxSaIxEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #12
  br label %352

284:                                              ; preds = %238
  %285 = landingpad { ptr, i32 }
          cleanup
  %286 = extractvalue { ptr, i32 } %285, 0
  store ptr %286, ptr %11, align 8
  %287 = extractvalue { ptr, i32 } %285, 1
  store i32 %287, ptr %12, align 4
  br label %292

288:                                              ; preds = %239
  %289 = landingpad { ptr, i32 }
          cleanup
  %290 = extractvalue { ptr, i32 } %289, 0
  store ptr %290, ptr %11, align 8
  %291 = extractvalue { ptr, i32 } %289, 1
  store i32 %291, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #12
  br label %292

292:                                              ; preds = %288, %284
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #12
  br label %1064

293:                                              ; preds = %241
  %294 = landingpad { ptr, i32 }
          cleanup
  %295 = extractvalue { ptr, i32 } %294, 0
  store ptr %295, ptr %11, align 8
  %296 = extractvalue { ptr, i32 } %294, 1
  store i32 %296, ptr %12, align 4
  br label %306

297:                                              ; preds = %242
  %298 = landingpad { ptr, i32 }
          cleanup
  %299 = extractvalue { ptr, i32 } %298, 0
  store ptr %299, ptr %11, align 8
  %300 = extractvalue { ptr, i32 } %298, 1
  store i32 %300, ptr %12, align 4
  br label %305

301:                                              ; preds = %243
  %302 = landingpad { ptr, i32 }
          cleanup
  %303 = extractvalue { ptr, i32 } %302, 0
  store ptr %303, ptr %11, align 8
  %304 = extractvalue { ptr, i32 } %302, 1
  store i32 %304, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #12
  br label %305

305:                                              ; preds = %301, %297
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #12
  br label %306

306:                                              ; preds = %305, %293
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #12
  br label %351

307:                                              ; preds = %244
  %308 = landingpad { ptr, i32 }
          cleanup
  %309 = extractvalue { ptr, i32 } %308, 0
  store ptr %309, ptr %11, align 8
  %310 = extractvalue { ptr, i32 } %308, 1
  store i32 %310, ptr %12, align 4
  br label %350

311:                                              ; preds = %246
  %312 = landingpad { ptr, i32 }
          cleanup
  %313 = extractvalue { ptr, i32 } %312, 0
  store ptr %313, ptr %11, align 8
  %314 = extractvalue { ptr, i32 } %312, 1
  store i32 %314, ptr %12, align 4
  br label %319

315:                                              ; preds = %247
  %316 = landingpad { ptr, i32 }
          cleanup
  %317 = extractvalue { ptr, i32 } %316, 0
  store ptr %317, ptr %11, align 8
  %318 = extractvalue { ptr, i32 } %316, 1
  store i32 %318, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #12
  br label %319

319:                                              ; preds = %315, %311
  %320 = load i1, ptr %23, align 1
  br i1 %320, label %321, label %322

321:                                              ; preds = %319
  call void @_ZdlPvm(ptr noundef %245, i64 noundef 168) #14
  br label %322

322:                                              ; preds = %321, %319
  br label %350

323:                                              ; preds = %249
  %324 = landingpad { ptr, i32 }
          cleanup
  %325 = extractvalue { ptr, i32 } %324, 0
  store ptr %325, ptr %11, align 8
  %326 = extractvalue { ptr, i32 } %324, 1
  store i32 %326, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIxED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #12
  br label %349

327:                                              ; preds = %280, %275
  %328 = landingpad { ptr, i32 }
          cleanup
  %329 = extractvalue { ptr, i32 } %328, 0
  store ptr %329, ptr %11, align 8
  %330 = extractvalue { ptr, i32 } %328, 1
  store i32 %330, ptr %12, align 4
  br label %348

331:                                              ; preds = %277
  %332 = landingpad { ptr, i32 }
          cleanup
  %333 = extractvalue { ptr, i32 } %332, 0
  store ptr %333, ptr %11, align 8
  %334 = extractvalue { ptr, i32 } %332, 1
  store i32 %334, ptr %12, align 4
  br label %344

335:                                              ; preds = %278
  %336 = landingpad { ptr, i32 }
          cleanup
  %337 = extractvalue { ptr, i32 } %336, 0
  store ptr %337, ptr %11, align 8
  %338 = extractvalue { ptr, i32 } %336, 1
  store i32 %338, ptr %12, align 4
  br label %343

339:                                              ; preds = %279
  %340 = landingpad { ptr, i32 }
          cleanup
  %341 = extractvalue { ptr, i32 } %340, 0
  store ptr %341, ptr %11, align 8
  %342 = extractvalue { ptr, i32 } %340, 1
  store i32 %342, ptr %12, align 4
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #12
  br label %343

343:                                              ; preds = %339, %335
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #12
  call void @_ZNSt6vectorIxSaIxEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #12
  br label %344

344:                                              ; preds = %343, %331
  %345 = load i1, ptr %33, align 1
  br i1 %345, label %346, label %347

346:                                              ; preds = %344
  call void @_ZdlPvm(ptr noundef %276, i64 noundef 144) #14
  br label %347

347:                                              ; preds = %346, %344
  br label %348

348:                                              ; preds = %347, %327
  call void @_ZNSt6vectorIxSaIxEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #12
  br label %349

349:                                              ; preds = %348, %323
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #12
  br label %350

350:                                              ; preds = %349, %322, %307
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #12
  br label %351

351:                                              ; preds = %350, %306
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #12
  br label %1064

352:                                              ; preds = %283, %223
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #12
  store i32 5, ptr %34, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #12
  store i32 1, ptr %35, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #12
  store i32 20, ptr %36, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #12
  store i32 50, ptr %37, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #12
  store i32 480, ptr %38, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #12
  store i32 10, ptr %39, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef @.str.8, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %353 unwind label %487

353:                                              ; preds = %352
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr %42) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %354 unwind label %491

354:                                              ; preds = %353
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #12
  %355 = load ptr, ptr %5, align 8, !tbaa !9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %356 unwind label %495

356:                                              ; preds = %354
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %357 unwind label %499

357:                                              ; preds = %356
  %358 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet16ConvolutionLayerERNS_6TensorEiiiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbbS7_(ptr noundef nonnull align 8 dereferenceable(144) %355, i32 noundef 20, i32 noundef 5, i32 noundef 1, ptr noundef %45, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef %46)
          to label %359 unwind label %503

359:                                              ; preds = %357
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #12
  store ptr %358, ptr %44, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #12
  %360 = load ptr, ptr %44, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #12
  store i32 2, ptr %51, align 4, !tbaa !13
  %361 = getelementptr inbounds %"class.std::initializer_list.14", ptr %50, i32 0, i32 0
  store ptr %51, ptr %361, align 8, !tbaa !23
  %362 = getelementptr inbounds %"class.std::initializer_list.14", ptr %50, i32 0, i32 1
  store i64 1, ptr %362, align 8, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #12
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #12
  %363 = getelementptr inbounds { ptr, i64 }, ptr %50, i32 0, i32 0
  %364 = load ptr, ptr %363, align 8
  %365 = getelementptr inbounds { ptr, i64 }, ptr %50, i32 0, i32 1
  %366 = load i64, ptr %365, align 8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %49, ptr %364, i64 %366, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %367 unwind label %508

367:                                              ; preds = %359
  call void @llvm.memset.p0.i64(ptr align 8 %53, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef nonnull align 8 dereferenceable(32) %42)
          to label %368 unwind label %512

368:                                              ; preds = %367
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef @.str.11, ptr noundef nonnull align 1 dereferenceable(1) %56)
          to label %369 unwind label %516

369:                                              ; preds = %368
  %370 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet7PoolingERNS_6TensorESt6vectorIiSaIiEES4_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbSA_(ptr noundef nonnull align 8 dereferenceable(144) %360, ptr noundef %49, ptr noundef %53, ptr noundef %54, i1 noundef zeroext true, ptr noundef %55)
          to label %371 unwind label %520

371:                                              ; preds = %369
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #12
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #12
  store ptr %370, ptr %48, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #12
  %372 = load ptr, ptr %48, align 8, !tbaa !9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %373 unwind label %527

373:                                              ; preds = %371
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef @.str.12, ptr noundef nonnull align 1 dereferenceable(1) %60)
          to label %374 unwind label %531

374:                                              ; preds = %373
  %375 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet16ConvolutionLayerERNS_6TensorEiiiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbbS7_(ptr noundef nonnull align 8 dereferenceable(144) %372, i32 noundef 50, i32 noundef 5, i32 noundef 1, ptr noundef %58, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef %59)
          to label %376 unwind label %535

376:                                              ; preds = %374
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #12
  store ptr %375, ptr %57, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #12
  %377 = load ptr, ptr %57, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #12
  store i32 2, ptr %64, align 4, !tbaa !13
  %378 = getelementptr inbounds %"class.std::initializer_list.14", ptr %63, i32 0, i32 0
  store ptr %64, ptr %378, align 8, !tbaa !23
  %379 = getelementptr inbounds %"class.std::initializer_list.14", ptr %63, i32 0, i32 1
  store i64 1, ptr %379, align 8, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #12
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #12
  %380 = getelementptr inbounds { ptr, i64 }, ptr %63, i32 0, i32 0
  %381 = load ptr, ptr %380, align 8
  %382 = getelementptr inbounds { ptr, i64 }, ptr %63, i32 0, i32 1
  %383 = load i64, ptr %382, align 8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %62, ptr %381, i64 %383, ptr noundef nonnull align 1 dereferenceable(1) %65)
          to label %384 unwind label %540

384:                                              ; preds = %376
  call void @llvm.memset.p0.i64(ptr align 8 %66, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef nonnull align 8 dereferenceable(32) %42)
          to label %385 unwind label %544

385:                                              ; preds = %384
  call void @llvm.lifetime.start.p0(i64 1, ptr %69) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef @.str.13, ptr noundef nonnull align 1 dereferenceable(1) %69)
          to label %386 unwind label %548

386:                                              ; preds = %385
  %387 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet7PoolingERNS_6TensorESt6vectorIiSaIiEES4_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbSA_(ptr noundef nonnull align 8 dereferenceable(144) %377, ptr noundef %62, ptr noundef %66, ptr noundef %67, i1 noundef zeroext true, ptr noundef %68)
          to label %388 unwind label %552

388:                                              ; preds = %386
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #12
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #12
  store ptr %387, ptr %61, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #12
  %389 = load ptr, ptr %61, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %73) #12
  %390 = load ptr, ptr %61, align 8, !tbaa !9
  %391 = getelementptr inbounds %"struct.clnet::Tensor", ptr %390, i32 0, i32 1
  %392 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIxSaIxEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %391, i64 noundef 0) #12
  %393 = load i64, ptr %392, align 8, !tbaa !21
  store i64 %393, ptr %73, align 8, !tbaa !21
  %394 = getelementptr inbounds i64, ptr %73, i64 1
  %395 = load ptr, ptr %61, align 8, !tbaa !9
  %396 = getelementptr inbounds %"struct.clnet::Tensor", ptr %395, i32 0, i32 8
  %397 = load i64, ptr %396, align 8, !tbaa !26
  %398 = load ptr, ptr %61, align 8, !tbaa !9
  %399 = getelementptr inbounds %"struct.clnet::Tensor", ptr %398, i32 0, i32 1
  %400 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIxSaIxEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %399, i64 noundef 0) #12
  %401 = load i64, ptr %400, align 8, !tbaa !21
  %402 = sdiv i64 %397, %401
  store i64 %402, ptr %394, align 8, !tbaa !21
  %403 = getelementptr inbounds %"class.std::initializer_list", ptr %72, i32 0, i32 0
  store ptr %73, ptr %403, align 8, !tbaa !17
  %404 = getelementptr inbounds %"class.std::initializer_list", ptr %72, i32 0, i32 1
  store i64 2, ptr %404, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #12
  call void @_ZNSaIxEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #12
  %405 = getelementptr inbounds { ptr, i64 }, ptr %72, i32 0, i32 0
  %406 = load ptr, ptr %405, align 8
  %407 = getelementptr inbounds { ptr, i64 }, ptr %72, i32 0, i32 1
  %408 = load i64, ptr %407, align 8
  invoke void @_ZNSt6vectorIxSaIxEEC2ESt16initializer_listIxERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %71, ptr %406, i64 %408, ptr noundef nonnull align 1 dereferenceable(1) %74)
          to label %409 unwind label %559

409:                                              ; preds = %388
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %75, ptr noundef @.str.14, ptr noundef nonnull align 1 dereferenceable(1) %76)
          to label %410 unwind label %563

410:                                              ; preds = %409
  %411 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet7ReshapeERNS_6TensorESt6vectorIxSaIxEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(144) %389, ptr noundef %71, ptr noundef %75)
          to label %412 unwind label %567

412:                                              ; preds = %410
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #12
  call void @_ZNSt6vectorIxSaIxEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %71) #12
  call void @_ZNSt15__new_allocatorIxED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #12
  store ptr %411, ptr %70, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #12
  %413 = load ptr, ptr %70, align 8, !tbaa !9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %414 unwind label %573

414:                                              ; preds = %412
  call void @llvm.lifetime.start.p0(i64 1, ptr %80) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %79, ptr noundef @.str.15, ptr noundef nonnull align 1 dereferenceable(1) %80)
          to label %415 unwind label %577

415:                                              ; preds = %414
  %416 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet19FullyConnectedLayerERNS_6TensorEiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_(ptr noundef nonnull align 8 dereferenceable(144) %413, i32 noundef 480, ptr noundef %78, ptr noundef %79)
          to label %417 unwind label %581

417:                                              ; preds = %415
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #12
  store ptr %416, ptr %77, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #12
  %418 = load ptr, ptr %77, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %82, ptr noundef @.str.16, ptr noundef nonnull align 1 dereferenceable(1) %83)
          to label %419 unwind label %586

419:                                              ; preds = %417
  call void @llvm.lifetime.start.p0(i64 1, ptr %85) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef @.str.17, ptr noundef nonnull align 1 dereferenceable(1) %85)
          to label %420 unwind label %590

420:                                              ; preds = %419
  %421 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet19FullyConnectedLayerERNS_6TensorEiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_(ptr noundef nonnull align 8 dereferenceable(144) %418, i32 noundef 10, ptr noundef %82, ptr noundef %84)
          to label %422 unwind label %594

422:                                              ; preds = %420
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #12
  store ptr %421, ptr %81, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %86) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef @.str.18, ptr noundef nonnull align 1 dereferenceable(1) %88)
          to label %423 unwind label %600

423:                                              ; preds = %422
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %89, ptr noundef @.str.19, ptr noundef nonnull align 1 dereferenceable(1) %90)
          to label %424 unwind label %604

424:                                              ; preds = %423
  invoke void @_ZN5clnet8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEET_S6_S7_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %86, ptr noundef %87, ptr noundef %89)
          to label %425 unwind label %608

425:                                              ; preds = %424
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #12
  %426 = load i8, ptr %3, align 1, !tbaa !5, !range !11, !noundef !12
  %427 = trunc i8 %426 to i1
  br i1 %427, label %428, label %775

428:                                              ; preds = %425
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #12
  %429 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 312) #13
          to label %430 unwind label %614

430:                                              ; preds = %428
  store i1 true, ptr %102, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %93) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef @.str.20, ptr noundef nonnull align 1 dereferenceable(1) %93)
          to label %431 unwind label %618

431:                                              ; preds = %430
  call void @llvm.memset.p0.i64(ptr align 8 %94, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %94) #12
  call void @llvm.memset.p0.i64(ptr align 8 %95, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %95) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr %97) #12
  %432 = getelementptr inbounds %class.anon, ptr %97, i32 0, i32 0
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %432, ptr noundef nonnull align 8 dereferenceable(32) %86)
          to label %433 unwind label %622

433:                                              ; preds = %431
  invoke void @"_ZNSt8functionIFvPN5clnet13InstantTensorERNS0_14DeviceInstanceEEEC2IZ9MNIST_CNNbE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %96, ptr noundef nonnull align 8 dereferenceable(32) %97)
          to label %434 unwind label %626

434:                                              ; preds = %433
  call void @llvm.lifetime.start.p0(i64 1, ptr %99) #12
  call void @_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN5clnet13InstantTensorERNS6_14DeviceInstanceEEEC2IZNS7_C1ES5_St6vectorIPNS6_6TensorESaISG_EESI_S_IFvS8_SA_EESC_S_IFSG_S8_SG_EEEd0_UlS8_SA_E_vEEOT_(ptr noundef nonnull align 8 dereferenceable(32) %98, ptr noundef nonnull align 1 dereferenceable(1) %99) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %101) #12
  call void @_ZNSt8functionIFPN5clnet6TensorEPNS0_13InstantTensorES2_EEC2IZNS3_C1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS2_SaIS2_EESG_S_IFvS4_RNS0_14DeviceInstanceEEES_IFSD_S4_SI_EES6_Ed_UlS4_S2_E_vEEOT_(ptr noundef nonnull align 8 dereferenceable(32) %100, ptr noundef nonnull align 1 dereferenceable(1) %101) #12
  invoke void @_ZN5clnet13InstantTensorC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPNS_6TensorESaIS9_EESB_St8functionIFvPS0_RNS_14DeviceInstanceEEESC_IFS6_SD_SF_EESC_IFS9_SD_S9_EE(ptr noundef nonnull align 8 dereferenceable(312) %429, ptr noundef %92, ptr noundef %94, ptr noundef %95, ptr noundef %96, ptr noundef %98, ptr noundef %100)
          to label %435 unwind label %630

435:                                              ; preds = %434
  store i1 false, ptr %102, align 1
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %101) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #12
  call void @"_ZZ9MNIST_CNNbEN3$_0D2Ev"(ptr noundef nonnull align 8 dereferenceable(32) %97) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %97) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %95) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %94) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #12
  store ptr %429, ptr %91, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #12
  %436 = load ptr, ptr %81, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %105) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef @.str.21, ptr noundef nonnull align 1 dereferenceable(1) %105)
          to label %437 unwind label %640

437:                                              ; preds = %435
  %438 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet7SoftmaxERNS_6TensorENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(144) %436, ptr noundef %104)
          to label %439 unwind label %644

439:                                              ; preds = %437
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #12
  store ptr %438, ptr %103, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #12
  %440 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 312) #13
          to label %441 unwind label %649

441:                                              ; preds = %439
  store i1 true, ptr %127, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %108) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %107, ptr noundef @.str.22, ptr noundef nonnull align 1 dereferenceable(1) %108)
          to label %442 unwind label %653

442:                                              ; preds = %441
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #12
  %443 = load ptr, ptr %91, align 8, !tbaa !9
  store ptr %443, ptr %111, align 8, !tbaa !9
  %444 = getelementptr inbounds %"class.std::initializer_list.29", ptr %110, i32 0, i32 0
  store ptr %111, ptr %444, align 8, !tbaa !38
  %445 = getelementptr inbounds %"class.std::initializer_list.29", ptr %110, i32 0, i32 1
  store i64 1, ptr %445, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 1, ptr %112) #12
  call void @_ZNSaIPN5clnet6TensorEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %112) #12
  %446 = getelementptr inbounds { ptr, i64 }, ptr %110, i32 0, i32 0
  %447 = load ptr, ptr %446, align 8
  %448 = getelementptr inbounds { ptr, i64 }, ptr %110, i32 0, i32 1
  %449 = load i64, ptr %448, align 8
  invoke void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %109, ptr %447, i64 %449, ptr noundef nonnull align 1 dereferenceable(1) %112)
          to label %450 unwind label %657

450:                                              ; preds = %442
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #12
  %451 = getelementptr inbounds %class.anon.30, ptr %114, i32 0, i32 0
  %452 = load ptr, ptr %103, align 8, !tbaa !9
  store ptr %452, ptr %451, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvPN5clnet13InstantTensorERNS0_14DeviceInstanceEEEC2IZ9MNIST_CNNbE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %113, ptr noundef nonnull align 8 dereferenceable(8) %114) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #12
  %453 = load ptr, ptr %81, align 8, !tbaa !9
  store ptr %453, ptr %117, align 8, !tbaa !9
  %454 = getelementptr inbounds %"class.std::initializer_list.29", ptr %116, i32 0, i32 0
  store ptr %117, ptr %454, align 8, !tbaa !38
  %455 = getelementptr inbounds %"class.std::initializer_list.29", ptr %116, i32 0, i32 1
  store i64 1, ptr %455, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 1, ptr %118) #12
  call void @_ZNSaIPN5clnet6TensorEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %118) #12
  %456 = getelementptr inbounds { ptr, i64 }, ptr %116, i32 0, i32 0
  %457 = load ptr, ptr %456, align 8
  %458 = getelementptr inbounds { ptr, i64 }, ptr %116, i32 0, i32 1
  %459 = load i64, ptr %458, align 8
  invoke void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %115, ptr %457, i64 %459, ptr noundef nonnull align 1 dereferenceable(1) %118)
          to label %460 unwind label %661

460:                                              ; preds = %450
  call void @llvm.lifetime.start.p0(i64 1, ptr %120) #12
  call void @"_ZNSt8functionIFPN5clnet6TensorEPNS0_13InstantTensorEEEC2IZ9MNIST_CNNbE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %119, ptr noundef nonnull align 1 dereferenceable(1) %120) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %122) #12
  call void @_ZNSt8functionIFSt6vectorIPN5clnet6TensorESaIS3_EEPNS1_13InstantTensorEEEC2IZNS6_C1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_S_IFvS7_RNS1_14DeviceInstanceEEES5_S_IFS3_S7_EES9_S_IFSG_S7_SI_EES_IFS3_S7_S3_EEEd1_UlS7_E_vEEOT_(ptr noundef nonnull align 8 dereferenceable(32) %121, ptr noundef nonnull align 1 dereferenceable(1) %122) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %124) #12
  call void @_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN5clnet13InstantTensorERNS6_14DeviceInstanceEEEC2IZNS7_C1ES5_St6vectorIPNS6_6TensorESaISG_EES_IFvS8_SA_EESI_S_IFSG_S8_EES_IFSI_S8_EESC_S_IFSG_S8_SG_EEEd0_UlS8_SA_E_vEEOT_(ptr noundef nonnull align 8 dereferenceable(32) %123, ptr noundef nonnull align 1 dereferenceable(1) %124) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %126) #12
  call void @_ZNSt8functionIFPN5clnet6TensorEPNS0_13InstantTensorES2_EEC2IZNS3_C1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS2_SaIS2_EES_IFvS4_RNS0_14DeviceInstanceEEESG_S_IFS2_S4_EES_IFSG_S4_EES_IFSD_S4_SI_EES6_Ed_UlS4_S2_E_vEEOT_(ptr noundef nonnull align 8 dereferenceable(32) %125, ptr noundef nonnull align 1 dereferenceable(1) %126) #12
  invoke void @_ZN5clnet13InstantTensorC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPNS_6TensorESaIS9_EESt8functionIFvPS0_RNS_14DeviceInstanceEEESB_SC_IFS9_SD_EESC_IFSB_SD_EESC_IFS6_SD_SF_EESC_IFS9_SD_S9_EE(ptr noundef nonnull align 8 dereferenceable(312) %440, ptr noundef %107, ptr noundef %109, ptr noundef %113, ptr noundef %115, ptr noundef %119, ptr noundef %121, ptr noundef %123, ptr noundef %125)
          to label %461 unwind label %665

461:                                              ; preds = %460
  store i1 false, ptr %127, align 1
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %126) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %124) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %122) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %120) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %115) #12
  call void @_ZNSt15__new_allocatorIPN5clnet6TensorEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %118) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %109) #12
  call void @_ZNSt15__new_allocatorIPN5clnet6TensorEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %112) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %112) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %108) #12
  store ptr %440, ptr %106, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %128) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %130) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %130) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %129, ptr noundef @.str.23, ptr noundef nonnull align 1 dereferenceable(1) %130)
          to label %462 unwind label %675

462:                                              ; preds = %461
  call void @llvm.lifetime.start.p0(i64 1, ptr %132) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %132) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %131, ptr noundef @.str.24, ptr noundef nonnull align 1 dereferenceable(1) %132)
          to label %463 unwind label %679

463:                                              ; preds = %462
  invoke void @_ZN5clnet8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEET_S6_S7_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %128, ptr noundef %129, ptr noundef %131)
          to label %464 unwind label %683

464:                                              ; preds = %463
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %132) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %132) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %129) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %130) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %130) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %133) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %134) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #12
  %465 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %128) #12
  %466 = invoke noundef ptr @_Z15read_24bits_bmpPKcPiS1_(ptr noundef %465, ptr noundef %133, ptr noundef %134)
          to label %467 unwind label %689

467:                                              ; preds = %464
  store ptr %466, ptr %135, align 8, !tbaa !9
  %468 = load i32, ptr %134, align 4, !tbaa !13
  %469 = sext i32 %468 to i64
  %470 = load ptr, ptr %5, align 8, !tbaa !9
  %471 = getelementptr inbounds %"struct.clnet::Tensor", ptr %470, i32 0, i32 1
  %472 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIxSaIxEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %471, i64 noundef 1) #12
  %473 = load i64, ptr %472, align 8, !tbaa !21
  %474 = icmp ne i64 %469, %473
  br i1 %474, label %483, label %475

475:                                              ; preds = %467
  %476 = load i32, ptr %133, align 4, !tbaa !13
  %477 = sext i32 %476 to i64
  %478 = load ptr, ptr %5, align 8, !tbaa !9
  %479 = getelementptr inbounds %"struct.clnet::Tensor", ptr %478, i32 0, i32 1
  %480 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIxSaIxEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %479, i64 noundef 2) #12
  %481 = load i64, ptr %480, align 8, !tbaa !21
  %482 = icmp ne i64 %477, %481
  br i1 %482, label %483, label %705

483:                                              ; preds = %475, %467
  store i1 true, ptr %137, align 1
  %484 = call ptr @__cxa_allocate_exception(i64 16) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr %136) #12
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %136, ptr noundef @.str.25, ptr noundef nonnull align 8 dereferenceable(32) %128)
          to label %485 unwind label %693

485:                                              ; preds = %483
  invoke void @_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %484, ptr noundef nonnull align 8 dereferenceable(32) %136)
          to label %486 unwind label %697

486:                                              ; preds = %485
  store i1 false, ptr %137, align 1
  invoke void @__cxa_throw(ptr %484, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #15
          to label %1070 unwind label %697

487:                                              ; preds = %352
  %488 = landingpad { ptr, i32 }
          cleanup
  %489 = extractvalue { ptr, i32 } %488, 0
  store ptr %489, ptr %11, align 8
  %490 = extractvalue { ptr, i32 } %488, 1
  store i32 %490, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #12
  br label %1063

491:                                              ; preds = %353
  %492 = landingpad { ptr, i32 }
          cleanup
  %493 = extractvalue { ptr, i32 } %492, 0
  store ptr %493, ptr %11, align 8
  %494 = extractvalue { ptr, i32 } %492, 1
  store i32 %494, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #12
  br label %1062

495:                                              ; preds = %354
  %496 = landingpad { ptr, i32 }
          cleanup
  %497 = extractvalue { ptr, i32 } %496, 0
  store ptr %497, ptr %11, align 8
  %498 = extractvalue { ptr, i32 } %496, 1
  store i32 %498, ptr %12, align 4
  br label %1061

499:                                              ; preds = %356
  %500 = landingpad { ptr, i32 }
          cleanup
  %501 = extractvalue { ptr, i32 } %500, 0
  store ptr %501, ptr %11, align 8
  %502 = extractvalue { ptr, i32 } %500, 1
  store i32 %502, ptr %12, align 4
  br label %507

503:                                              ; preds = %357
  %504 = landingpad { ptr, i32 }
          cleanup
  %505 = extractvalue { ptr, i32 } %504, 0
  store ptr %505, ptr %11, align 8
  %506 = extractvalue { ptr, i32 } %504, 1
  store i32 %506, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #12
  br label %507

507:                                              ; preds = %503, %499
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #12
  br label %1061

508:                                              ; preds = %359
  %509 = landingpad { ptr, i32 }
          cleanup
  %510 = extractvalue { ptr, i32 } %509, 0
  store ptr %510, ptr %11, align 8
  %511 = extractvalue { ptr, i32 } %509, 1
  store i32 %511, ptr %12, align 4
  br label %526

512:                                              ; preds = %367
  %513 = landingpad { ptr, i32 }
          cleanup
  %514 = extractvalue { ptr, i32 } %513, 0
  store ptr %514, ptr %11, align 8
  %515 = extractvalue { ptr, i32 } %513, 1
  store i32 %515, ptr %12, align 4
  br label %525

516:                                              ; preds = %368
  %517 = landingpad { ptr, i32 }
          cleanup
  %518 = extractvalue { ptr, i32 } %517, 0
  store ptr %518, ptr %11, align 8
  %519 = extractvalue { ptr, i32 } %517, 1
  store i32 %519, ptr %12, align 4
  br label %524

520:                                              ; preds = %369
  %521 = landingpad { ptr, i32 }
          cleanup
  %522 = extractvalue { ptr, i32 } %521, 0
  store ptr %522, ptr %11, align 8
  %523 = extractvalue { ptr, i32 } %521, 1
  store i32 %523, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #12
  br label %524

524:                                              ; preds = %520, %516
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #12
  br label %525

525:                                              ; preds = %524, %512
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #12
  br label %526

526:                                              ; preds = %525, %508
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #12
  br label %1060

527:                                              ; preds = %371
  %528 = landingpad { ptr, i32 }
          cleanup
  %529 = extractvalue { ptr, i32 } %528, 0
  store ptr %529, ptr %11, align 8
  %530 = extractvalue { ptr, i32 } %528, 1
  store i32 %530, ptr %12, align 4
  br label %1059

531:                                              ; preds = %373
  %532 = landingpad { ptr, i32 }
          cleanup
  %533 = extractvalue { ptr, i32 } %532, 0
  store ptr %533, ptr %11, align 8
  %534 = extractvalue { ptr, i32 } %532, 1
  store i32 %534, ptr %12, align 4
  br label %539

535:                                              ; preds = %374
  %536 = landingpad { ptr, i32 }
          cleanup
  %537 = extractvalue { ptr, i32 } %536, 0
  store ptr %537, ptr %11, align 8
  %538 = extractvalue { ptr, i32 } %536, 1
  store i32 %538, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #12
  br label %539

539:                                              ; preds = %535, %531
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #12
  br label %1059

540:                                              ; preds = %376
  %541 = landingpad { ptr, i32 }
          cleanup
  %542 = extractvalue { ptr, i32 } %541, 0
  store ptr %542, ptr %11, align 8
  %543 = extractvalue { ptr, i32 } %541, 1
  store i32 %543, ptr %12, align 4
  br label %558

544:                                              ; preds = %384
  %545 = landingpad { ptr, i32 }
          cleanup
  %546 = extractvalue { ptr, i32 } %545, 0
  store ptr %546, ptr %11, align 8
  %547 = extractvalue { ptr, i32 } %545, 1
  store i32 %547, ptr %12, align 4
  br label %557

548:                                              ; preds = %385
  %549 = landingpad { ptr, i32 }
          cleanup
  %550 = extractvalue { ptr, i32 } %549, 0
  store ptr %550, ptr %11, align 8
  %551 = extractvalue { ptr, i32 } %549, 1
  store i32 %551, ptr %12, align 4
  br label %556

552:                                              ; preds = %386
  %553 = landingpad { ptr, i32 }
          cleanup
  %554 = extractvalue { ptr, i32 } %553, 0
  store ptr %554, ptr %11, align 8
  %555 = extractvalue { ptr, i32 } %553, 1
  store i32 %555, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #12
  br label %556

556:                                              ; preds = %552, %548
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #12
  br label %557

557:                                              ; preds = %556, %544
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #12
  br label %558

558:                                              ; preds = %557, %540
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #12
  br label %1058

559:                                              ; preds = %388
  %560 = landingpad { ptr, i32 }
          cleanup
  %561 = extractvalue { ptr, i32 } %560, 0
  store ptr %561, ptr %11, align 8
  %562 = extractvalue { ptr, i32 } %560, 1
  store i32 %562, ptr %12, align 4
  br label %572

563:                                              ; preds = %409
  %564 = landingpad { ptr, i32 }
          cleanup
  %565 = extractvalue { ptr, i32 } %564, 0
  store ptr %565, ptr %11, align 8
  %566 = extractvalue { ptr, i32 } %564, 1
  store i32 %566, ptr %12, align 4
  br label %571

567:                                              ; preds = %410
  %568 = landingpad { ptr, i32 }
          cleanup
  %569 = extractvalue { ptr, i32 } %568, 0
  store ptr %569, ptr %11, align 8
  %570 = extractvalue { ptr, i32 } %568, 1
  store i32 %570, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #12
  br label %571

571:                                              ; preds = %567, %563
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %76) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #12
  call void @_ZNSt6vectorIxSaIxEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %71) #12
  br label %572

572:                                              ; preds = %571, %559
  call void @_ZNSt15__new_allocatorIxED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #12
  br label %1057

573:                                              ; preds = %412
  %574 = landingpad { ptr, i32 }
          cleanup
  %575 = extractvalue { ptr, i32 } %574, 0
  store ptr %575, ptr %11, align 8
  %576 = extractvalue { ptr, i32 } %574, 1
  store i32 %576, ptr %12, align 4
  br label %1056

577:                                              ; preds = %414
  %578 = landingpad { ptr, i32 }
          cleanup
  %579 = extractvalue { ptr, i32 } %578, 0
  store ptr %579, ptr %11, align 8
  %580 = extractvalue { ptr, i32 } %578, 1
  store i32 %580, ptr %12, align 4
  br label %585

581:                                              ; preds = %415
  %582 = landingpad { ptr, i32 }
          cleanup
  %583 = extractvalue { ptr, i32 } %582, 0
  store ptr %583, ptr %11, align 8
  %584 = extractvalue { ptr, i32 } %582, 1
  store i32 %584, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #12
  br label %585

585:                                              ; preds = %581, %577
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #12
  br label %1056

586:                                              ; preds = %417
  %587 = landingpad { ptr, i32 }
          cleanup
  %588 = extractvalue { ptr, i32 } %587, 0
  store ptr %588, ptr %11, align 8
  %589 = extractvalue { ptr, i32 } %587, 1
  store i32 %589, ptr %12, align 4
  br label %599

590:                                              ; preds = %419
  %591 = landingpad { ptr, i32 }
          cleanup
  %592 = extractvalue { ptr, i32 } %591, 0
  store ptr %592, ptr %11, align 8
  %593 = extractvalue { ptr, i32 } %591, 1
  store i32 %593, ptr %12, align 4
  br label %598

594:                                              ; preds = %420
  %595 = landingpad { ptr, i32 }
          cleanup
  %596 = extractvalue { ptr, i32 } %595, 0
  store ptr %596, ptr %11, align 8
  %597 = extractvalue { ptr, i32 } %595, 1
  store i32 %597, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #12
  br label %598

598:                                              ; preds = %594, %590
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #12
  br label %599

599:                                              ; preds = %598, %586
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %83) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #12
  br label %1055

600:                                              ; preds = %422
  %601 = landingpad { ptr, i32 }
          cleanup
  %602 = extractvalue { ptr, i32 } %601, 0
  store ptr %602, ptr %11, align 8
  %603 = extractvalue { ptr, i32 } %601, 1
  store i32 %603, ptr %12, align 4
  br label %613

604:                                              ; preds = %423
  %605 = landingpad { ptr, i32 }
          cleanup
  %606 = extractvalue { ptr, i32 } %605, 0
  store ptr %606, ptr %11, align 8
  %607 = extractvalue { ptr, i32 } %605, 1
  store i32 %607, ptr %12, align 4
  br label %612

608:                                              ; preds = %424
  %609 = landingpad { ptr, i32 }
          cleanup
  %610 = extractvalue { ptr, i32 } %609, 0
  store ptr %610, ptr %11, align 8
  %611 = extractvalue { ptr, i32 } %609, 1
  store i32 %611, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #12
  br label %612

612:                                              ; preds = %608, %604
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #12
  br label %613

613:                                              ; preds = %612, %600
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #12
  br label %1054

614:                                              ; preds = %428
  %615 = landingpad { ptr, i32 }
          cleanup
  %616 = extractvalue { ptr, i32 } %615, 0
  store ptr %616, ptr %11, align 8
  %617 = extractvalue { ptr, i32 } %615, 1
  store i32 %617, ptr %12, align 4
  br label %774

618:                                              ; preds = %430
  %619 = landingpad { ptr, i32 }
          cleanup
  %620 = extractvalue { ptr, i32 } %619, 0
  store ptr %620, ptr %11, align 8
  %621 = extractvalue { ptr, i32 } %619, 1
  store i32 %621, ptr %12, align 4
  br label %636

622:                                              ; preds = %431
  %623 = landingpad { ptr, i32 }
          cleanup
  %624 = extractvalue { ptr, i32 } %623, 0
  store ptr %624, ptr %11, align 8
  %625 = extractvalue { ptr, i32 } %623, 1
  store i32 %625, ptr %12, align 4
  br label %635

626:                                              ; preds = %433
  %627 = landingpad { ptr, i32 }
          cleanup
  %628 = extractvalue { ptr, i32 } %627, 0
  store ptr %628, ptr %11, align 8
  %629 = extractvalue { ptr, i32 } %627, 1
  store i32 %629, ptr %12, align 4
  br label %634

630:                                              ; preds = %434
  %631 = landingpad { ptr, i32 }
          cleanup
  %632 = extractvalue { ptr, i32 } %631, 0
  store ptr %632, ptr %11, align 8
  %633 = extractvalue { ptr, i32 } %631, 1
  store i32 %633, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %101) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #12
  br label %634

634:                                              ; preds = %630, %626
  call void @"_ZZ9MNIST_CNNbEN3$_0D2Ev"(ptr noundef nonnull align 8 dereferenceable(32) %97) #12
  br label %635

635:                                              ; preds = %634, %622
  call void @llvm.lifetime.end.p0(i64 32, ptr %97) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %95) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %94) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #12
  br label %636

636:                                              ; preds = %635, %618
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #12
  %637 = load i1, ptr %102, align 1
  br i1 %637, label %638, label %639

638:                                              ; preds = %636
  call void @_ZdlPvm(ptr noundef %429, i64 noundef 312) #14
  br label %639

639:                                              ; preds = %638, %636
  br label %774

640:                                              ; preds = %435
  %641 = landingpad { ptr, i32 }
          cleanup
  %642 = extractvalue { ptr, i32 } %641, 0
  store ptr %642, ptr %11, align 8
  %643 = extractvalue { ptr, i32 } %641, 1
  store i32 %643, ptr %12, align 4
  br label %648

644:                                              ; preds = %437
  %645 = landingpad { ptr, i32 }
          cleanup
  %646 = extractvalue { ptr, i32 } %645, 0
  store ptr %646, ptr %11, align 8
  %647 = extractvalue { ptr, i32 } %645, 1
  store i32 %647, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #12
  br label %648

648:                                              ; preds = %644, %640
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #12
  br label %773

649:                                              ; preds = %439
  %650 = landingpad { ptr, i32 }
          cleanup
  %651 = extractvalue { ptr, i32 } %650, 0
  store ptr %651, ptr %11, align 8
  %652 = extractvalue { ptr, i32 } %650, 1
  store i32 %652, ptr %12, align 4
  br label %772

653:                                              ; preds = %441
  %654 = landingpad { ptr, i32 }
          cleanup
  %655 = extractvalue { ptr, i32 } %654, 0
  store ptr %655, ptr %11, align 8
  %656 = extractvalue { ptr, i32 } %654, 1
  store i32 %656, ptr %12, align 4
  br label %671

657:                                              ; preds = %442
  %658 = landingpad { ptr, i32 }
          cleanup
  %659 = extractvalue { ptr, i32 } %658, 0
  store ptr %659, ptr %11, align 8
  %660 = extractvalue { ptr, i32 } %658, 1
  store i32 %660, ptr %12, align 4
  br label %670

661:                                              ; preds = %450
  %662 = landingpad { ptr, i32 }
          cleanup
  %663 = extractvalue { ptr, i32 } %662, 0
  store ptr %663, ptr %11, align 8
  %664 = extractvalue { ptr, i32 } %662, 1
  store i32 %664, ptr %12, align 4
  br label %669

665:                                              ; preds = %460
  %666 = landingpad { ptr, i32 }
          cleanup
  %667 = extractvalue { ptr, i32 } %666, 0
  store ptr %667, ptr %11, align 8
  %668 = extractvalue { ptr, i32 } %666, 1
  store i32 %668, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %126) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %124) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %122) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %120) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %115) #12
  br label %669

669:                                              ; preds = %665, %661
  call void @_ZNSt15__new_allocatorIPN5clnet6TensorEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %118) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %109) #12
  br label %670

670:                                              ; preds = %669, %657
  call void @_ZNSt15__new_allocatorIPN5clnet6TensorEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %112) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %112) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #12
  br label %671

671:                                              ; preds = %670, %653
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %108) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %108) #12
  %672 = load i1, ptr %127, align 1
  br i1 %672, label %673, label %674

673:                                              ; preds = %671
  call void @_ZdlPvm(ptr noundef %440, i64 noundef 312) #14
  br label %674

674:                                              ; preds = %673, %671
  br label %772

675:                                              ; preds = %461
  %676 = landingpad { ptr, i32 }
          cleanup
  %677 = extractvalue { ptr, i32 } %676, 0
  store ptr %677, ptr %11, align 8
  %678 = extractvalue { ptr, i32 } %676, 1
  store i32 %678, ptr %12, align 4
  br label %688

679:                                              ; preds = %462
  %680 = landingpad { ptr, i32 }
          cleanup
  %681 = extractvalue { ptr, i32 } %680, 0
  store ptr %681, ptr %11, align 8
  %682 = extractvalue { ptr, i32 } %680, 1
  store i32 %682, ptr %12, align 4
  br label %687

683:                                              ; preds = %463
  %684 = landingpad { ptr, i32 }
          cleanup
  %685 = extractvalue { ptr, i32 } %684, 0
  store ptr %685, ptr %11, align 8
  %686 = extractvalue { ptr, i32 } %684, 1
  store i32 %686, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #12
  br label %687

687:                                              ; preds = %683, %679
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %132) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %132) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %129) #12
  br label %688

688:                                              ; preds = %687, %675
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %130) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %130) #12
  br label %771

689:                                              ; preds = %705, %464
  %690 = landingpad { ptr, i32 }
          cleanup
  %691 = extractvalue { ptr, i32 } %690, 0
  store ptr %691, ptr %11, align 8
  %692 = extractvalue { ptr, i32 } %690, 1
  store i32 %692, ptr %12, align 4
  br label %770

693:                                              ; preds = %483
  %694 = landingpad { ptr, i32 }
          cleanup
  %695 = extractvalue { ptr, i32 } %694, 0
  store ptr %695, ptr %11, align 8
  %696 = extractvalue { ptr, i32 } %694, 1
  store i32 %696, ptr %12, align 4
  br label %701

697:                                              ; preds = %486, %485
  %698 = landingpad { ptr, i32 }
          cleanup
  %699 = extractvalue { ptr, i32 } %698, 0
  store ptr %699, ptr %11, align 8
  %700 = extractvalue { ptr, i32 } %698, 1
  store i32 %700, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %136) #12
  br label %701

701:                                              ; preds = %697, %693
  call void @llvm.lifetime.end.p0(i64 32, ptr %136) #12
  %702 = load i1, ptr %137, align 1
  br i1 %702, label %703, label %704

703:                                              ; preds = %701
  call void @__cxa_free_exception(ptr %484) #12
  br label %704

704:                                              ; preds = %703, %701
  br label %770

705:                                              ; preds = %475
  %706 = load ptr, ptr %5, align 8, !tbaa !9
  %707 = load ptr, ptr %706, align 8, !tbaa !41
  %708 = getelementptr inbounds ptr, ptr %707, i64 6
  %709 = load ptr, ptr %708, align 8
  invoke void %709(ptr noundef nonnull align 8 dereferenceable(144) %706, ptr noundef null)
          to label %710 unwind label %689

710:                                              ; preds = %705
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #12
  %711 = load ptr, ptr %5, align 8, !tbaa !9
  %712 = getelementptr inbounds %"struct.clnet::Tensor", ptr %711, i32 0, i32 6
  %713 = load ptr, ptr %712, align 8, !tbaa !43
  store ptr %713, ptr %138, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %139) #12
  %714 = load i32, ptr %134, align 4, !tbaa !13
  %715 = sub nsw i32 %714, 1
  store i32 %715, ptr %139, align 4, !tbaa !13
  br label %716

716:                                              ; preds = %765, %710
  %717 = load i32, ptr %139, align 4, !tbaa !13
  %718 = icmp sge i32 %717, 0
  br i1 %718, label %720, label %719

719:                                              ; preds = %716
  store i32 2, ptr %140, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %139) #12
  br label %768

720:                                              ; preds = %716
  call void @llvm.lifetime.start.p0(i64 4, ptr %141) #12
  store i32 0, ptr %141, align 4, !tbaa !13
  br label %721

721:                                              ; preds = %761, %720
  %722 = load i32, ptr %141, align 4, !tbaa !13
  %723 = load i32, ptr %133, align 4, !tbaa !13
  %724 = icmp slt i32 %722, %723
  br i1 %724, label %726, label %725

725:                                              ; preds = %721
  store i32 5, ptr %140, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %141) #12
  br label %764

726:                                              ; preds = %721
  call void @llvm.lifetime.start.p0(i64 4, ptr %142) #12
  %727 = load i32, ptr %139, align 4, !tbaa !13
  %728 = load i32, ptr %133, align 4, !tbaa !13
  %729 = mul nsw i32 %727, %728
  %730 = load i32, ptr %141, align 4, !tbaa !13
  %731 = add nsw i32 %729, %730
  %732 = mul nsw i32 %731, 3
  store i32 %732, ptr %142, align 4, !tbaa !13
  %733 = load ptr, ptr %135, align 8, !tbaa !9
  %734 = load i32, ptr %142, align 4, !tbaa !13
  %735 = sext i32 %734 to i64
  %736 = getelementptr inbounds i8, ptr %733, i64 %735
  %737 = load i8, ptr %736, align 1, !tbaa !16
  %738 = zext i8 %737 to i32
  %739 = sitofp i32 %738 to float
  %740 = load ptr, ptr %135, align 8, !tbaa !9
  %741 = load i32, ptr %142, align 4, !tbaa !13
  %742 = add nsw i32 %741, 1
  %743 = sext i32 %742 to i64
  %744 = getelementptr inbounds i8, ptr %740, i64 %743
  %745 = load i8, ptr %744, align 1, !tbaa !16
  %746 = zext i8 %745 to i32
  %747 = sitofp i32 %746 to float
  %748 = fmul float 0x3FE2E147A0000000, %747
  %749 = call float @llvm.fmuladd.f32(float 0x3FD3333340000000, float %739, float %748)
  %750 = load ptr, ptr %135, align 8, !tbaa !9
  %751 = load i32, ptr %142, align 4, !tbaa !13
  %752 = add nsw i32 %751, 2
  %753 = sext i32 %752 to i64
  %754 = getelementptr inbounds i8, ptr %750, i64 %753
  %755 = load i8, ptr %754, align 1, !tbaa !16
  %756 = zext i8 %755 to i32
  %757 = sitofp i32 %756 to float
  %758 = call float @llvm.fmuladd.f32(float 0x3FBC28F5C0000000, float %757, float %749)
  %759 = load ptr, ptr %138, align 8, !tbaa !9
  %760 = getelementptr inbounds float, ptr %759, i32 1
  store ptr %760, ptr %138, align 8, !tbaa !9
  store float %758, ptr %759, align 4, !tbaa !44
  call void @llvm.lifetime.end.p0(i64 4, ptr %142) #12
  br label %761

761:                                              ; preds = %726
  %762 = load i32, ptr %141, align 4, !tbaa !13
  %763 = add nsw i32 %762, 1
  store i32 %763, ptr %141, align 4, !tbaa !13
  br label %721, !llvm.loop !46

764:                                              ; preds = %725
  br label %765

765:                                              ; preds = %764
  %766 = load i32, ptr %139, align 4, !tbaa !13
  %767 = add nsw i32 %766, -1
  store i32 %767, ptr %139, align 4, !tbaa !13
  br label %716, !llvm.loop !48

768:                                              ; preds = %719
  %769 = load ptr, ptr %106, align 8, !tbaa !9
  store ptr %769, ptr %2, align 8
  store i32 1, ptr %140, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %134) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %133) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %128) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #12
  br label %1051

770:                                              ; preds = %704, %689
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %134) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %133) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #12
  br label %771

771:                                              ; preds = %770, %688
  call void @llvm.lifetime.end.p0(i64 32, ptr %128) #12
  br label %772

772:                                              ; preds = %771, %674, %649
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #12
  br label %773

773:                                              ; preds = %772, %648
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #12
  br label %774

774:                                              ; preds = %773, %639, %614
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #12
  br label %1053

775:                                              ; preds = %425
  call void @llvm.lifetime.start.p0(i64 4, ptr %143) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %145) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %145) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %144, ptr noundef @.str.26, ptr noundef nonnull align 1 dereferenceable(1) %145)
          to label %776 unwind label %823

776:                                              ; preds = %775
  %777 = invoke noundef float @_ZN5clnet8optionalIfEET_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES1_(ptr noundef %144, float noundef 0x3F7A36E2E0000000)
          to label %778 unwind label %827

778:                                              ; preds = %776
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %144) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %145) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %145) #12
  store float %777, ptr %143, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 4, ptr %146) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %148) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %148) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %147, ptr noundef @.str.27, ptr noundef nonnull align 1 dereferenceable(1) %148)
          to label %779 unwind label %832

779:                                              ; preds = %778
  %780 = invoke noundef float @_ZN5clnet8optionalIfEET_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES1_(ptr noundef %147, float noundef 0.000000e+00)
          to label %781 unwind label %836

781:                                              ; preds = %779
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %147) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %148) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %148) #12
  store float %780, ptr %146, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 4, ptr %149) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %151) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %151) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %150, ptr noundef @.str.28, ptr noundef nonnull align 1 dereferenceable(1) %151)
          to label %782 unwind label %841

782:                                              ; preds = %781
  %783 = invoke noundef i32 @_ZN5clnet8optionalIiEET_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES1_(ptr noundef %150, i32 noundef 5000)
          to label %784 unwind label %845

784:                                              ; preds = %782
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %150) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %151) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %151) #12
  store i32 %783, ptr %149, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %152) #12
  %785 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 144) #13
          to label %786 unwind label %850

786:                                              ; preds = %784
  store i1 true, ptr %161, align 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %155) #12
  %787 = load i32, ptr %4, align 4, !tbaa !13
  %788 = sext i32 %787 to i64
  store i64 %788, ptr %155, align 8, !tbaa !21
  %789 = getelementptr inbounds %"class.std::initializer_list", ptr %154, i32 0, i32 0
  store ptr %155, ptr %789, align 8, !tbaa !17
  %790 = getelementptr inbounds %"class.std::initializer_list", ptr %154, i32 0, i32 1
  store i64 1, ptr %790, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 1, ptr %156) #12
  call void @_ZNSaIxEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %156) #12
  %791 = getelementptr inbounds { ptr, i64 }, ptr %154, i32 0, i32 0
  %792 = load ptr, ptr %791, align 8
  %793 = getelementptr inbounds { ptr, i64 }, ptr %154, i32 0, i32 1
  %794 = load i64, ptr %793, align 8
  invoke void @_ZNSt6vectorIxSaIxEEC2ESt16initializer_listIxERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %153, ptr %792, i64 %794, ptr noundef nonnull align 1 dereferenceable(1) %156)
          to label %795 unwind label %854

795:                                              ; preds = %786
  call void @llvm.memset.p0.i64(ptr align 8 %157, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %157) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %159) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %159) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %158, ptr noundef @.str.29, ptr noundef nonnull align 1 dereferenceable(1) %159)
          to label %796 unwind label %858

796:                                              ; preds = %795
  call void @llvm.memset.p0.i64(ptr align 8 %160, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %160) #12
  invoke void @_ZN5clnet6TensorC1ESt6vectorIxSaIxEES1_IPS0_SaIS4_EENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_(ptr noundef nonnull align 8 dereferenceable(144) %785, ptr noundef %153, ptr noundef %157, ptr noundef %158, ptr noundef %160)
          to label %797 unwind label %862

797:                                              ; preds = %796
  store i1 false, ptr %161, align 1
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %160) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %158) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %159) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %159) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %157) #12
  call void @_ZNSt6vectorIxSaIxEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %153) #12
  call void @_ZNSt15__new_allocatorIxED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %156) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %156) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #12
  store ptr %785, ptr %152, align 8, !tbaa !9
  %798 = load ptr, ptr %152, align 8, !tbaa !9
  %799 = load ptr, ptr %6, align 8, !tbaa !9
  invoke void @_ZN5clnet6Tensor12dependent_onEPS0_(ptr noundef nonnull align 8 dereferenceable(144) %798, ptr noundef %799)
          to label %800 unwind label %850

800:                                              ; preds = %797
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #12
  %801 = load ptr, ptr %81, align 8, !tbaa !9
  %802 = load ptr, ptr %152, align 8, !tbaa !9
  %803 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet16CrossEntropyLossERNS_6TensorES1_(ptr noundef nonnull align 8 dereferenceable(144) %801, ptr noundef nonnull align 8 dereferenceable(144) %802)
          to label %804 unwind label %871

804:                                              ; preds = %800
  store ptr %803, ptr %162, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %163) #12
  %805 = load ptr, ptr %162, align 8, !tbaa !9
  %806 = load float, ptr %143, align 4, !tbaa !44
  %807 = load float, ptr %146, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 1, ptr %165) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %165) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %164, ptr noundef @.str.30, ptr noundef nonnull align 1 dereferenceable(1) %165)
          to label %808 unwind label %875

808:                                              ; preds = %804
  %809 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet32StochasticGradientDescentUpdaterERNS_6TensorEfffNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(144) %805, float noundef %806, float noundef %807, float noundef 0.000000e+00, ptr noundef %164)
          to label %810 unwind label %879

810:                                              ; preds = %808
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %164) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %165) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %165) #12
  store ptr %809, ptr %163, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %166) #12
  %811 = load ptr, ptr %163, align 8, !tbaa !9
  %812 = getelementptr inbounds %"struct.clnet::Tensor", ptr %811, i32 0, i32 4
  invoke void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(24) %167, ptr noundef nonnull align 8 dereferenceable(24) %812)
          to label %813 unwind label %884

813:                                              ; preds = %810
  %814 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet18GeneralInitializerESt6vectorIPNS_6TensorESaIS2_EEff(ptr noundef %167, float noundef 0.000000e+00, float noundef 1.000000e+00)
          to label %815 unwind label %888

815:                                              ; preds = %813
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %167) #12
  store ptr %814, ptr %166, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %168) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %168) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %169) #12
  store ptr @_ZN5clnet6Tensor3ALLE, ptr %169, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %170) #12
  %816 = call ptr @_ZNSt6vectorIPN5clnet6TensorESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZN5clnet6Tensor3ALLE) #12
  %817 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %170, i32 0, i32 0
  store ptr %816, ptr %817, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %171) #12
  %818 = call ptr @_ZNSt6vectorIPN5clnet6TensorESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZN5clnet6Tensor3ALLE) #12
  %819 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %171, i32 0, i32 0
  store ptr %818, ptr %819, align 8
  br label %820

820:                                              ; preds = %910, %815
  %821 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN5clnet6TensorESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %170, ptr noundef nonnull align 8 dereferenceable(8) %171) #12
  br i1 %821, label %892, label %822

822:                                              ; preds = %820
  store i32 8, ptr %140, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %169) #12
  br label %912

823:                                              ; preds = %775
  %824 = landingpad { ptr, i32 }
          cleanup
  %825 = extractvalue { ptr, i32 } %824, 0
  store ptr %825, ptr %11, align 8
  %826 = extractvalue { ptr, i32 } %824, 1
  store i32 %826, ptr %12, align 4
  br label %831

827:                                              ; preds = %776
  %828 = landingpad { ptr, i32 }
          cleanup
  %829 = extractvalue { ptr, i32 } %828, 0
  store ptr %829, ptr %11, align 8
  %830 = extractvalue { ptr, i32 } %828, 1
  store i32 %830, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %144) #12
  br label %831

831:                                              ; preds = %827, %823
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %145) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %145) #12
  br label %1050

832:                                              ; preds = %778
  %833 = landingpad { ptr, i32 }
          cleanup
  %834 = extractvalue { ptr, i32 } %833, 0
  store ptr %834, ptr %11, align 8
  %835 = extractvalue { ptr, i32 } %833, 1
  store i32 %835, ptr %12, align 4
  br label %840

836:                                              ; preds = %779
  %837 = landingpad { ptr, i32 }
          cleanup
  %838 = extractvalue { ptr, i32 } %837, 0
  store ptr %838, ptr %11, align 8
  %839 = extractvalue { ptr, i32 } %837, 1
  store i32 %839, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %147) #12
  br label %840

840:                                              ; preds = %836, %832
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %148) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %148) #12
  br label %1049

841:                                              ; preds = %781
  %842 = landingpad { ptr, i32 }
          cleanup
  %843 = extractvalue { ptr, i32 } %842, 0
  store ptr %843, ptr %11, align 8
  %844 = extractvalue { ptr, i32 } %842, 1
  store i32 %844, ptr %12, align 4
  br label %849

845:                                              ; preds = %782
  %846 = landingpad { ptr, i32 }
          cleanup
  %847 = extractvalue { ptr, i32 } %846, 0
  store ptr %847, ptr %11, align 8
  %848 = extractvalue { ptr, i32 } %846, 1
  store i32 %848, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %150) #12
  br label %849

849:                                              ; preds = %845, %841
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %151) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %151) #12
  br label %1048

850:                                              ; preds = %797, %784
  %851 = landingpad { ptr, i32 }
          cleanup
  %852 = extractvalue { ptr, i32 } %851, 0
  store ptr %852, ptr %11, align 8
  %853 = extractvalue { ptr, i32 } %851, 1
  store i32 %853, ptr %12, align 4
  br label %1047

854:                                              ; preds = %786
  %855 = landingpad { ptr, i32 }
          cleanup
  %856 = extractvalue { ptr, i32 } %855, 0
  store ptr %856, ptr %11, align 8
  %857 = extractvalue { ptr, i32 } %855, 1
  store i32 %857, ptr %12, align 4
  br label %867

858:                                              ; preds = %795
  %859 = landingpad { ptr, i32 }
          cleanup
  %860 = extractvalue { ptr, i32 } %859, 0
  store ptr %860, ptr %11, align 8
  %861 = extractvalue { ptr, i32 } %859, 1
  store i32 %861, ptr %12, align 4
  br label %866

862:                                              ; preds = %796
  %863 = landingpad { ptr, i32 }
          cleanup
  %864 = extractvalue { ptr, i32 } %863, 0
  store ptr %864, ptr %11, align 8
  %865 = extractvalue { ptr, i32 } %863, 1
  store i32 %865, ptr %12, align 4
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %160) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %158) #12
  br label %866

866:                                              ; preds = %862, %858
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %159) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %159) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %157) #12
  call void @_ZNSt6vectorIxSaIxEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %153) #12
  br label %867

867:                                              ; preds = %866, %854
  call void @_ZNSt15__new_allocatorIxED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %156) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %156) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #12
  %868 = load i1, ptr %161, align 1
  br i1 %868, label %869, label %870

869:                                              ; preds = %867
  call void @_ZdlPvm(ptr noundef %785, i64 noundef 144) #14
  br label %870

870:                                              ; preds = %869, %867
  br label %1047

871:                                              ; preds = %800
  %872 = landingpad { ptr, i32 }
          cleanup
  %873 = extractvalue { ptr, i32 } %872, 0
  store ptr %873, ptr %11, align 8
  %874 = extractvalue { ptr, i32 } %872, 1
  store i32 %874, ptr %12, align 4
  br label %1046

875:                                              ; preds = %804
  %876 = landingpad { ptr, i32 }
          cleanup
  %877 = extractvalue { ptr, i32 } %876, 0
  store ptr %877, ptr %11, align 8
  %878 = extractvalue { ptr, i32 } %876, 1
  store i32 %878, ptr %12, align 4
  br label %883

879:                                              ; preds = %808
  %880 = landingpad { ptr, i32 }
          cleanup
  %881 = extractvalue { ptr, i32 } %880, 0
  store ptr %881, ptr %11, align 8
  %882 = extractvalue { ptr, i32 } %880, 1
  store i32 %882, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %164) #12
  br label %883

883:                                              ; preds = %879, %875
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %165) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %165) #12
  br label %1045

884:                                              ; preds = %810
  %885 = landingpad { ptr, i32 }
          cleanup
  %886 = extractvalue { ptr, i32 } %885, 0
  store ptr %886, ptr %11, align 8
  %887 = extractvalue { ptr, i32 } %885, 1
  store i32 %887, ptr %12, align 4
  br label %1044

888:                                              ; preds = %813
  %889 = landingpad { ptr, i32 }
          cleanup
  %890 = extractvalue { ptr, i32 } %889, 0
  store ptr %890, ptr %11, align 8
  %891 = extractvalue { ptr, i32 } %889, 1
  store i32 %891, ptr %12, align 4
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %167) #12
  br label %1044

892:                                              ; preds = %820
  call void @llvm.lifetime.start.p0(i64 8, ptr %172) #12
  %893 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN5clnet6TensorESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %170) #12
  %894 = load ptr, ptr %893, align 8, !tbaa !9
  store ptr %894, ptr %172, align 8, !tbaa !9
  %895 = load ptr, ptr %172, align 8, !tbaa !9
  %896 = icmp eq ptr %895, null
  br i1 %896, label %899, label %897

897:                                              ; preds = %892
  %898 = call ptr @__dynamic_cast(ptr %895, ptr @_ZTIN5clnet6TensorE, ptr @_ZTIN5clnet4type9ParameterE, i64 0) #12
  br label %900

899:                                              ; preds = %892
  br label %900

900:                                              ; preds = %899, %897
  %901 = phi ptr [ %898, %897 ], [ null, %899 ]
  %902 = icmp ne ptr %901, null
  br i1 %902, label %903, label %909

903:                                              ; preds = %900
  invoke void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %168, ptr noundef nonnull align 8 dereferenceable(8) %172)
          to label %904 unwind label %905

904:                                              ; preds = %903
  br label %909

905:                                              ; preds = %903
  %906 = landingpad { ptr, i32 }
          cleanup
  %907 = extractvalue { ptr, i32 } %906, 0
  store ptr %907, ptr %11, align 8
  %908 = extractvalue { ptr, i32 } %906, 1
  store i32 %908, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %172) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %169) #12
  br label %1043

909:                                              ; preds = %904, %900
  call void @llvm.lifetime.end.p0(i64 8, ptr %172) #12
  br label %910

910:                                              ; preds = %909
  %911 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN5clnet6TensorESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %170) #12
  br label %820

912:                                              ; preds = %822
  call void @llvm.lifetime.start.p0(i64 4, ptr %173) #12
  %913 = load ptr, ptr %6, align 8, !tbaa !9
  %914 = getelementptr inbounds %"struct.clnet::Tensor", ptr %913, i32 0, i32 4
  %915 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %914, i64 noundef 0) #12
  %916 = load ptr, ptr %915, align 8, !tbaa !9
  %917 = getelementptr inbounds %"struct.clnet::Tensor", ptr %916, i32 0, i32 1
  %918 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIxSaIxEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %917, i64 noundef 0) #12
  %919 = load i64, ptr %918, align 8, !tbaa !21
  %920 = trunc i64 %919 to i32
  store i32 %920, ptr %173, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %174) #12
  %921 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 312) #13
          to label %922 unwind label %976

922:                                              ; preds = %912
  store i1 true, ptr %185, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %176) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %176) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %175, ptr noundef @.str.31, ptr noundef nonnull align 1 dereferenceable(1) %176)
          to label %923 unwind label %980

923:                                              ; preds = %922
  call void @llvm.memset.p0.i64(ptr align 8 %177, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %177) #12
  call void @llvm.memset.p0.i64(ptr align 8 %178, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %178) #12
  call void @llvm.lifetime.start.p0(i64 72, ptr %180) #12
  %924 = getelementptr inbounds %class.anon.40, ptr %180, i32 0, i32 0
  %925 = load i32, ptr %4, align 4, !tbaa !13
  store i32 %925, ptr %924, align 8, !tbaa !49
  %926 = getelementptr inbounds %class.anon.40, ptr %180, i32 0, i32 1
  %927 = load i32, ptr %173, align 4, !tbaa !13
  store i32 %927, ptr %926, align 4, !tbaa !51
  %928 = getelementptr inbounds %class.anon.40, ptr %180, i32 0, i32 2
  %929 = load ptr, ptr %162, align 8, !tbaa !9
  store ptr %929, ptr %928, align 8, !tbaa !9
  %930 = getelementptr inbounds %class.anon.40, ptr %180, i32 0, i32 3
  invoke void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(24) %930, ptr noundef nonnull align 8 dereferenceable(24) %168)
          to label %931 unwind label %984

931:                                              ; preds = %923
  %932 = getelementptr inbounds %class.anon.40, ptr %180, i32 0, i32 4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %932, ptr noundef nonnull align 8 dereferenceable(32) %86)
          to label %933 unwind label %988

933:                                              ; preds = %931
  invoke void @"_ZNSt8functionIFvPN5clnet13InstantTensorERNS0_14DeviceInstanceEEEC2IZ9MNIST_CNNbE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %179, ptr noundef nonnull align 8 dereferenceable(72) %180)
          to label %934 unwind label %992

934:                                              ; preds = %933
  call void @llvm.lifetime.start.p0(i64 1, ptr %182) #12
  call void @_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN5clnet13InstantTensorERNS6_14DeviceInstanceEEEC2IZNS7_C1ES5_St6vectorIPNS6_6TensorESaISG_EESI_S_IFvS8_SA_EESC_S_IFSG_S8_SG_EEEd0_UlS8_SA_E_vEEOT_(ptr noundef nonnull align 8 dereferenceable(32) %181, ptr noundef nonnull align 1 dereferenceable(1) %182) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %184) #12
  call void @_ZNSt8functionIFPN5clnet6TensorEPNS0_13InstantTensorES2_EEC2IZNS3_C1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS2_SaIS2_EESG_S_IFvS4_RNS0_14DeviceInstanceEEES_IFSD_S4_SI_EES6_Ed_UlS4_S2_E_vEEOT_(ptr noundef nonnull align 8 dereferenceable(32) %183, ptr noundef nonnull align 1 dereferenceable(1) %184) #12
  invoke void @_ZN5clnet13InstantTensorC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPNS_6TensorESaIS9_EESB_St8functionIFvPS0_RNS_14DeviceInstanceEEESC_IFS6_SD_SF_EESC_IFS9_SD_S9_EE(ptr noundef nonnull align 8 dereferenceable(312) %921, ptr noundef %175, ptr noundef %177, ptr noundef %178, ptr noundef %179, ptr noundef %181, ptr noundef %183)
          to label %935 unwind label %996

935:                                              ; preds = %934
  store i1 false, ptr %185, align 1
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %183) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %184) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %181) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %182) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %179) #12
  call void @"_ZZ9MNIST_CNNbEN3$_3D2Ev"(ptr noundef nonnull align 8 dereferenceable(72) %180) #12
  call void @llvm.lifetime.end.p0(i64 72, ptr %180) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %178) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %177) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %175) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %176) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %176) #12
  store ptr %921, ptr %174, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %186) #12
  %936 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 312) #13
          to label %937 unwind label %1006

937:                                              ; preds = %935
  store i1 true, ptr %201, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %188) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %188) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %187, ptr noundef @.str.32, ptr noundef nonnull align 1 dereferenceable(1) %188)
          to label %938 unwind label %1010

938:                                              ; preds = %937
  call void @llvm.memset.p0.i64(ptr align 8 %189, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %189) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr %191) #12
  %939 = getelementptr inbounds %class.anon.41, ptr %191, i32 0, i32 0
  %940 = load ptr, ptr %6, align 8, !tbaa !9
  store ptr %940, ptr %939, align 8, !tbaa !52
  %941 = getelementptr inbounds %class.anon.41, ptr %191, i32 0, i32 1
  store i32 10, ptr %941, align 8, !tbaa !54
  %942 = getelementptr inbounds %class.anon.41, ptr %191, i32 0, i32 2
  %943 = load ptr, ptr %81, align 8, !tbaa !9
  store ptr %943, ptr %942, align 8, !tbaa !9
  %944 = getelementptr inbounds %class.anon.41, ptr %191, i32 0, i32 3
  %945 = load ptr, ptr %152, align 8, !tbaa !9
  store ptr %945, ptr %944, align 8, !tbaa !9
  invoke void @"_ZNSt8functionIFvPN5clnet13InstantTensorERNS0_14DeviceInstanceEEEC2IZ9MNIST_CNNbE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %190, ptr noundef nonnull align 8 dereferenceable(32) %191)
          to label %946 unwind label %1014

946:                                              ; preds = %938
  call void @llvm.memset.p0.i64(ptr align 8 %192, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %192) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %194) #12
  %947 = getelementptr inbounds %class.anon.42, ptr %194, i32 0, i32 0
  %948 = load ptr, ptr %81, align 8, !tbaa !9
  store ptr %948, ptr %947, align 8, !tbaa !9
  call void @"_ZNSt8functionIFPN5clnet6TensorEPNS0_13InstantTensorEEEC2IZ9MNIST_CNNbE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %193, ptr noundef nonnull align 8 dereferenceable(8) %194) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %196) #12
  call void @_ZNSt8functionIFSt6vectorIPN5clnet6TensorESaIS3_EEPNS1_13InstantTensorEEEC2IZNS6_C1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_S_IFvS7_RNS1_14DeviceInstanceEEES5_S_IFS3_S7_EES9_S_IFSG_S7_SI_EES_IFS3_S7_S3_EEEd1_UlS7_E_vEEOT_(ptr noundef nonnull align 8 dereferenceable(32) %195, ptr noundef nonnull align 1 dereferenceable(1) %196) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %198) #12
  call void @_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN5clnet13InstantTensorERNS6_14DeviceInstanceEEEC2IZNS7_C1ES5_St6vectorIPNS6_6TensorESaISG_EES_IFvS8_SA_EESI_S_IFSG_S8_EES_IFSI_S8_EESC_S_IFSG_S8_SG_EEEd0_UlS8_SA_E_vEEOT_(ptr noundef nonnull align 8 dereferenceable(32) %197, ptr noundef nonnull align 1 dereferenceable(1) %198) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %200) #12
  call void @_ZNSt8functionIFPN5clnet6TensorEPNS0_13InstantTensorES2_EEC2IZNS3_C1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS2_SaIS2_EES_IFvS4_RNS0_14DeviceInstanceEEESG_S_IFS2_S4_EES_IFSG_S4_EES_IFSD_S4_SI_EES6_Ed_UlS4_S2_E_vEEOT_(ptr noundef nonnull align 8 dereferenceable(32) %199, ptr noundef nonnull align 1 dereferenceable(1) %200) #12
  invoke void @_ZN5clnet13InstantTensorC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPNS_6TensorESaIS9_EESt8functionIFvPS0_RNS_14DeviceInstanceEEESB_SC_IFS9_SD_EESC_IFSB_SD_EESC_IFS6_SD_SF_EESC_IFS9_SD_S9_EE(ptr noundef nonnull align 8 dereferenceable(312) %936, ptr noundef %187, ptr noundef %189, ptr noundef %190, ptr noundef %192, ptr noundef %193, ptr noundef %195, ptr noundef %197, ptr noundef %199)
          to label %949 unwind label %1018

949:                                              ; preds = %946
  store i1 false, ptr %201, align 1
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %199) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %200) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %197) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %198) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %195) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %196) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %193) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %194) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %192) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %190) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %191) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %189) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %187) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %188) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %188) #12
  store ptr %936, ptr %186, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %204) #12
  %950 = load ptr, ptr %166, align 8, !tbaa !9
  store ptr %950, ptr %204, align 8, !tbaa !9
  %951 = getelementptr inbounds %"class.std::initializer_list.29", ptr %203, i32 0, i32 0
  store ptr %204, ptr %951, align 8, !tbaa !38
  %952 = getelementptr inbounds %"class.std::initializer_list.29", ptr %203, i32 0, i32 1
  store i64 1, ptr %952, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 1, ptr %205) #12
  call void @_ZNSaIPN5clnet6TensorEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %205) #12
  %953 = getelementptr inbounds { ptr, i64 }, ptr %203, i32 0, i32 0
  %954 = load ptr, ptr %953, align 8
  %955 = getelementptr inbounds { ptr, i64 }, ptr %203, i32 0, i32 1
  %956 = load i64, ptr %955, align 8
  invoke void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %202, ptr %954, i64 %956, ptr noundef nonnull align 1 dereferenceable(1) %205)
          to label %957 unwind label %1027

957:                                              ; preds = %949
  call void @llvm.lifetime.start.p0(i64 32, ptr %208) #12
  %958 = load ptr, ptr %163, align 8, !tbaa !9
  store ptr %958, ptr %208, align 8, !tbaa !9
  %959 = getelementptr inbounds ptr, ptr %208, i64 1
  %960 = load ptr, ptr %6, align 8, !tbaa !9
  store ptr %960, ptr %959, align 8, !tbaa !9
  %961 = getelementptr inbounds ptr, ptr %208, i64 2
  %962 = load ptr, ptr %174, align 8, !tbaa !9
  store ptr %962, ptr %961, align 8, !tbaa !9
  %963 = getelementptr inbounds ptr, ptr %208, i64 3
  %964 = load ptr, ptr %186, align 8, !tbaa !9
  store ptr %964, ptr %963, align 8, !tbaa !9
  %965 = getelementptr inbounds %"class.std::initializer_list.29", ptr %207, i32 0, i32 0
  store ptr %208, ptr %965, align 8, !tbaa !38
  %966 = getelementptr inbounds %"class.std::initializer_list.29", ptr %207, i32 0, i32 1
  store i64 4, ptr %966, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 1, ptr %209) #12
  call void @_ZNSaIPN5clnet6TensorEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %209) #12
  %967 = getelementptr inbounds { ptr, i64 }, ptr %207, i32 0, i32 0
  %968 = load ptr, ptr %967, align 8
  %969 = getelementptr inbounds { ptr, i64 }, ptr %207, i32 0, i32 1
  %970 = load i64, ptr %969, align 8
  invoke void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %206, ptr %968, i64 %970, ptr noundef nonnull align 1 dereferenceable(1) %209)
          to label %971 unwind label %1031

971:                                              ; preds = %957
  %972 = load i32, ptr %149, align 4, !tbaa !13
  %973 = sext i32 %972 to i64
  %974 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet18IterativeOptimizerESt6vectorIPNS_6TensorESaIS2_EES4_m(ptr noundef %202, ptr noundef %206, i64 noundef %973)
          to label %975 unwind label %1035

975:                                              ; preds = %971
  store ptr %974, ptr %2, align 8
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %206) #12
  call void @_ZNSt15__new_allocatorIPN5clnet6TensorEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %209) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %209) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %208) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %202) #12
  call void @_ZNSt15__new_allocatorIPN5clnet6TensorEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %205) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %205) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %204) #12
  store i32 1, ptr %140, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %186) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %174) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %173) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %168) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %168) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %149) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %146) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %143) #12
  br label %1051

976:                                              ; preds = %912
  %977 = landingpad { ptr, i32 }
          cleanup
  %978 = extractvalue { ptr, i32 } %977, 0
  store ptr %978, ptr %11, align 8
  %979 = extractvalue { ptr, i32 } %977, 1
  store i32 %979, ptr %12, align 4
  br label %1042

980:                                              ; preds = %922
  %981 = landingpad { ptr, i32 }
          cleanup
  %982 = extractvalue { ptr, i32 } %981, 0
  store ptr %982, ptr %11, align 8
  %983 = extractvalue { ptr, i32 } %981, 1
  store i32 %983, ptr %12, align 4
  br label %1002

984:                                              ; preds = %923
  %985 = landingpad { ptr, i32 }
          cleanup
  %986 = extractvalue { ptr, i32 } %985, 0
  store ptr %986, ptr %11, align 8
  %987 = extractvalue { ptr, i32 } %985, 1
  store i32 %987, ptr %12, align 4
  br label %1001

988:                                              ; preds = %931
  %989 = landingpad { ptr, i32 }
          cleanup
  %990 = extractvalue { ptr, i32 } %989, 0
  store ptr %990, ptr %11, align 8
  %991 = extractvalue { ptr, i32 } %989, 1
  store i32 %991, ptr %12, align 4
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %930) #12
  br label %1001

992:                                              ; preds = %933
  %993 = landingpad { ptr, i32 }
          cleanup
  %994 = extractvalue { ptr, i32 } %993, 0
  store ptr %994, ptr %11, align 8
  %995 = extractvalue { ptr, i32 } %993, 1
  store i32 %995, ptr %12, align 4
  br label %1000

996:                                              ; preds = %934
  %997 = landingpad { ptr, i32 }
          cleanup
  %998 = extractvalue { ptr, i32 } %997, 0
  store ptr %998, ptr %11, align 8
  %999 = extractvalue { ptr, i32 } %997, 1
  store i32 %999, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %183) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %184) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %181) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %182) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %179) #12
  br label %1000

1000:                                             ; preds = %996, %992
  call void @"_ZZ9MNIST_CNNbEN3$_3D2Ev"(ptr noundef nonnull align 8 dereferenceable(72) %180) #12
  br label %1001

1001:                                             ; preds = %1000, %988, %984
  call void @llvm.lifetime.end.p0(i64 72, ptr %180) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %178) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %177) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %175) #12
  br label %1002

1002:                                             ; preds = %1001, %980
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %176) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %176) #12
  %1003 = load i1, ptr %185, align 1
  br i1 %1003, label %1004, label %1005

1004:                                             ; preds = %1002
  call void @_ZdlPvm(ptr noundef %921, i64 noundef 312) #14
  br label %1005

1005:                                             ; preds = %1004, %1002
  br label %1042

1006:                                             ; preds = %935
  %1007 = landingpad { ptr, i32 }
          cleanup
  %1008 = extractvalue { ptr, i32 } %1007, 0
  store ptr %1008, ptr %11, align 8
  %1009 = extractvalue { ptr, i32 } %1007, 1
  store i32 %1009, ptr %12, align 4
  br label %1041

1010:                                             ; preds = %937
  %1011 = landingpad { ptr, i32 }
          cleanup
  %1012 = extractvalue { ptr, i32 } %1011, 0
  store ptr %1012, ptr %11, align 8
  %1013 = extractvalue { ptr, i32 } %1011, 1
  store i32 %1013, ptr %12, align 4
  br label %1023

1014:                                             ; preds = %938
  %1015 = landingpad { ptr, i32 }
          cleanup
  %1016 = extractvalue { ptr, i32 } %1015, 0
  store ptr %1016, ptr %11, align 8
  %1017 = extractvalue { ptr, i32 } %1015, 1
  store i32 %1017, ptr %12, align 4
  br label %1022

1018:                                             ; preds = %946
  %1019 = landingpad { ptr, i32 }
          cleanup
  %1020 = extractvalue { ptr, i32 } %1019, 0
  store ptr %1020, ptr %11, align 8
  %1021 = extractvalue { ptr, i32 } %1019, 1
  store i32 %1021, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %199) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %200) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %197) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %198) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %195) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %196) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %193) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %194) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %192) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %190) #12
  br label %1022

1022:                                             ; preds = %1018, %1014
  call void @llvm.lifetime.end.p0(i64 32, ptr %191) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %189) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %187) #12
  br label %1023

1023:                                             ; preds = %1022, %1010
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %188) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %188) #12
  %1024 = load i1, ptr %201, align 1
  br i1 %1024, label %1025, label %1026

1025:                                             ; preds = %1023
  call void @_ZdlPvm(ptr noundef %936, i64 noundef 312) #14
  br label %1026

1026:                                             ; preds = %1025, %1023
  br label %1041

1027:                                             ; preds = %949
  %1028 = landingpad { ptr, i32 }
          cleanup
  %1029 = extractvalue { ptr, i32 } %1028, 0
  store ptr %1029, ptr %11, align 8
  %1030 = extractvalue { ptr, i32 } %1028, 1
  store i32 %1030, ptr %12, align 4
  br label %1040

1031:                                             ; preds = %957
  %1032 = landingpad { ptr, i32 }
          cleanup
  %1033 = extractvalue { ptr, i32 } %1032, 0
  store ptr %1033, ptr %11, align 8
  %1034 = extractvalue { ptr, i32 } %1032, 1
  store i32 %1034, ptr %12, align 4
  br label %1039

1035:                                             ; preds = %971
  %1036 = landingpad { ptr, i32 }
          cleanup
  %1037 = extractvalue { ptr, i32 } %1036, 0
  store ptr %1037, ptr %11, align 8
  %1038 = extractvalue { ptr, i32 } %1036, 1
  store i32 %1038, ptr %12, align 4
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %206) #12
  br label %1039

1039:                                             ; preds = %1035, %1031
  call void @_ZNSt15__new_allocatorIPN5clnet6TensorEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %209) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %209) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %208) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %202) #12
  br label %1040

1040:                                             ; preds = %1039, %1027
  call void @_ZNSt15__new_allocatorIPN5clnet6TensorEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %205) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %205) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %204) #12
  br label %1041

1041:                                             ; preds = %1040, %1026, %1006
  call void @llvm.lifetime.end.p0(i64 8, ptr %186) #12
  br label %1042

1042:                                             ; preds = %1041, %1005, %976
  call void @llvm.lifetime.end.p0(i64 8, ptr %174) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %173) #12
  br label %1043

1043:                                             ; preds = %1042, %905
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %168) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %168) #12
  br label %1044

1044:                                             ; preds = %1043, %888, %884
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #12
  br label %1045

1045:                                             ; preds = %1044, %883
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #12
  br label %1046

1046:                                             ; preds = %1045, %871
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #12
  br label %1047

1047:                                             ; preds = %1046, %870, %850
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #12
  br label %1048

1048:                                             ; preds = %1047, %849
  call void @llvm.lifetime.end.p0(i64 4, ptr %149) #12
  br label %1049

1049:                                             ; preds = %1048, %840
  call void @llvm.lifetime.end.p0(i64 4, ptr %146) #12
  br label %1050

1050:                                             ; preds = %1049, %831
  call void @llvm.lifetime.end.p0(i64 4, ptr %143) #12
  br label %1053

1051:                                             ; preds = %975, %768
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %86) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #12
  %1052 = load ptr, ptr %2, align 8
  ret ptr %1052

1053:                                             ; preds = %1050, %774
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #12
  br label %1054

1054:                                             ; preds = %1053, %613
  call void @llvm.lifetime.end.p0(i64 32, ptr %86) #12
  br label %1055

1055:                                             ; preds = %1054, %599
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #12
  br label %1056

1056:                                             ; preds = %1055, %585, %573
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #12
  br label %1057

1057:                                             ; preds = %1056, %572
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #12
  br label %1058

1058:                                             ; preds = %1057, %558
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #12
  br label %1059

1059:                                             ; preds = %1058, %539, %527
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #12
  br label %1060

1060:                                             ; preds = %1059, %526
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #12
  br label %1061

1061:                                             ; preds = %1060, %507, %495
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #12
  br label %1062

1062:                                             ; preds = %1061, %491
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #12
  br label %1063

1063:                                             ; preds = %1062, %487
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #12
  br label %1064

1064:                                             ; preds = %1063, %351, %292, %237
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #12
  br label %1065

1065:                                             ; preds = %1064
  %1066 = load ptr, ptr %11, align 8
  %1067 = load i32, ptr %12, align 4
  %1068 = insertvalue { ptr, i32 } poison, ptr %1066, 0
  %1069 = insertvalue { ptr, i32 } %1068, i32 %1067, 1
  resume { ptr, i32 } %1069

1070:                                             ; preds = %486
  unreachable
}

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

declare noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet4DataESt6vectorIxSaIxEEPNS_6TensorENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

declare noundef i32 @_ZN5clnet8optionalIiEET_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES1_(ptr noundef, i32 noundef) #2

declare void @_ZN5clnet8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEET_S6_S7_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef) #2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN18MNISTImageIteratorC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(168), ptr noundef, i32 noundef) unnamed_addr #0 align 2

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #6

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

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

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

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

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

declare void @_ZN5clnet6TensorC1ESt6vectorIxSaIxEES1_IPS0_SaIS4_EENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef, ptr noundef, ptr noundef, ptr noundef) unnamed_addr #2

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

declare void @_ZN5clnet6Tensor12dependent_onEPS0_(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef) #2

declare noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet16ConvolutionLayerERNS_6TensorEiiiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbbS7_(ptr noundef nonnull align 8 dereferenceable(144), i32 noundef, i32 noundef, i32 noundef, ptr noundef, i1 noundef zeroext, i1 noundef zeroext, ptr noundef) #2

declare noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet7PoolingERNS_6TensorESt6vectorIiSaIiEES4_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbSA_(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef, ptr noundef, ptr noundef, i1 noundef zeroext, ptr noundef) #2

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

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

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

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

declare noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet7ReshapeERNS_6TensorESt6vectorIxSaIxEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef, ptr noundef) #2

declare noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet19FullyConnectedLayerERNS_6TensorEiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_(ptr noundef nonnull align 8 dereferenceable(144), i32 noundef, ptr noundef, ptr noundef) #2

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @"_ZZ9MNIST_CNNbEN3$_0D2Ev"(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #8 align 2

declare noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet7SoftmaxERNS_6TensorENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef) #2

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

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

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

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

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

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

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

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

declare noundef ptr @_Z15read_24bits_bmpPKcPiS1_(ptr noundef, ptr noundef, ptr noundef) #2

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #9

declare void @__cxa_throw(ptr, ptr, ptr)

declare void @__cxa_free_exception(ptr)

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #10

declare noundef float @_ZN5clnet8optionalIfEET_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES1_(ptr noundef, float noundef) #2

declare noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet16CrossEntropyLossERNS_6TensorES1_(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(144)) #2

declare noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet32StochasticGradientDescentUpdaterERNS_6TensorEfffNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(144), float noundef, float noundef, float noundef, ptr noundef) #2

declare noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet18GeneralInitializerESt6vectorIPNS_6TensorESaIS2_EEff(ptr noundef, float noundef, float noundef) #2

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

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

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

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

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

; Function Attrs: nounwind willreturn memory(read)
declare ptr @__dynamic_cast(ptr, ptr, ptr, i64) #11

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNSt8functionIFvPN5clnet13InstantTensorERNS0_14DeviceInstanceEEEC2IZ9MNIST_CNNbE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @"_ZZ9MNIST_CNNbEN3$_3D2Ev"(ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #8 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFPN5clnet6TensorEPNS0_13InstantTensorEEEC2IZ9MNIST_CNNbE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4 align 2

declare noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet18IterativeOptimizerESt6vectorIPNS_6TensorESaIS2_EES4_m(ptr noundef, ptr noundef, i64 noundef) #2

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

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

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

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

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

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

!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 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{i8 0, i8 2}
!12 = !{}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{i64 0, i64 32, !16}
!16 = !{!7, !7, i64 0}
!17 = !{!18, !10, i64 0}
!18 = !{!"_ZTSSt16initializer_listIxE", !10, i64 0, !19, i64 8}
!19 = !{!"long", !7, i64 0}
!20 = !{!18, !19, i64 8}
!21 = !{!22, !22, i64 0}
!22 = !{!"long long", !7, i64 0}
!23 = !{!24, !10, i64 0}
!24 = !{!"_ZTSSt16initializer_listIiE", !10, i64 0, !19, i64 8}
!25 = !{!24, !19, i64 8}
!26 = !{!27, !22, i64 136}
!27 = !{!"_ZTSN5clnet6TensorE", !28, i64 8, !32, i64 32, !36, i64 56, !32, i64 88, !22, i64 112, !10, i64 120, !10, i64 128, !22, i64 136}
!28 = !{!"_ZTSSt6vectorIxSaIxEE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseIxSaIxEE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIxSaIxEE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIxSaIxEE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!32 = !{!"_ZTSSt6vectorIPN5clnet6TensorESaIS2_EE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseIPN5clnet6TensorESaIS2_EE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIPN5clnet6TensorESaIS2_EE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIPN5clnet6TensorESaIS2_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!36 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !37, i64 0, !19, i64 8, !7, i64 16}
!37 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !10, i64 0}
!38 = !{!39, !10, i64 0}
!39 = !{!"_ZTSSt16initializer_listIPN5clnet6TensorEE", !10, i64 0, !19, i64 8}
!40 = !{!39, !19, i64 8}
!41 = !{!42, !42, i64 0}
!42 = !{!"vtable pointer", !8, i64 0}
!43 = !{!27, !10, i64 120}
!44 = !{!45, !45, i64 0}
!45 = !{!"float", !7, i64 0}
!46 = distinct !{!46, !47}
!47 = !{!"llvm.loop.mustprogress"}
!48 = distinct !{!48, !47}
!49 = !{!50, !14, i64 0}
!50 = !{!"_ZTSZ9MNIST_CNNbE3$_3", !14, i64 0, !14, i64 4, !10, i64 8, !32, i64 16, !36, i64 40}
!51 = !{!50, !14, i64 4}
!52 = !{!53, !10, i64 0}
!53 = !{!"_ZTSZ9MNIST_CNNbE3$_4", !10, i64 0, !14, i64 8, !10, i64 16, !10, i64 24}
!54 = !{!53, !14, i64 8}


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

%"class.std::vector.4" = type { %"struct.std::_Vector_base.5" }
%"struct.std::_Vector_base.5" = type { %"struct.std::_Vector_base<clnet::Tensor *, std::allocator<clnet::Tensor *>>::_Vector_impl" }
%"struct.std::_Vector_base<clnet::Tensor *, std::allocator<clnet::Tensor *>>::_Vector_impl" = type { %"struct.std::_Vector_base<clnet::Tensor *, std::allocator<clnet::Tensor *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<clnet::Tensor *, std::allocator<clnet::Tensor *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<long long, std::allocator<long long>>::_Vector_impl" }
%"struct.std::_Vector_base<long long, std::allocator<long long>>::_Vector_impl" = type { %"struct.std::_Vector_base<long long, std::allocator<long long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<long long, std::allocator<long long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator" = type { i8 }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.1" = type { i8 }
%"class.std::vector.9" = type { %"struct.std::_Vector_base.10" }
%"struct.std::_Vector_base.10" = 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.11" = type { i8 }
%"class.std::function.15" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon = type { %"class.std::__cxx11::basic_string" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%class.anon.26 = type { i8 }
%"class.std::function.18" = type { %"class.std::_Function_base", ptr }
%class.anon.27 = type { i8 }
%"class.std::allocator.6" = type { i8 }
%class.anon.30 = type { ptr }
%"class.std::function.21" = type { %"class.std::_Function_base", ptr }
%class.anon.31 = type { i8 }
%"class.std::function.23" = type { %"class.std::_Function_base", ptr }
%class.anon.33 = type { i8 }
%class.anon.35 = type { i8 }
%class.anon.37 = type { i8 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%class.anon.40 = type { i32, i32, ptr, %"class.std::vector.4", %"class.std::__cxx11::basic_string" }
%class.anon.41 = type { ptr, i32, ptr, ptr }
%class.anon.42 = type { ptr }

@constinit = external hidden local_unnamed_addr constant [4 x i64], align 8
@.str = external hidden unnamed_addr constant [21 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [19 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.26 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [4 x i8], align 1
@_ZN5clnet6Tensor3ALLE = external global %"class.std::vector.4", align 8
@_ZTIN5clnet6TensorE = external constant ptr
@_ZTIN5clnet4type9ParameterE = external constant ptr
@.str.31 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [20 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local noundef nonnull align 8 dereferenceable(144) ptr @_Z9MNIST_CNNb(i1 noundef zeroext %0) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::vector", align 8
  %3 = alloca [4 x i64], align 8
  %4 = alloca %"class.std::allocator", align 1
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::allocator.1", align 1
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator.1", align 1
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::allocator.1", align 1
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::allocator.1", align 1
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::vector", align 8
  %16 = alloca [4 x i64], align 8
  %17 = alloca %"class.std::allocator", align 1
  %18 = alloca %"class.std::vector", align 8
  %19 = alloca %"class.std::vector.4", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::allocator.1", align 1
  %22 = alloca %"class.std::vector.4", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::allocator.1", align 1
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::allocator.1", align 1
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator.1", align 1
  %30 = alloca %"class.std::vector.9", align 8
  %31 = alloca [1 x i32], align 4
  %32 = alloca %"class.std::allocator.11", align 1
  %33 = alloca %"class.std::vector.9", align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::allocator.1", align 1
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::allocator.1", align 1
  %40 = alloca %"class.std::vector.9", align 8
  %41 = alloca [1 x i32], align 4
  %42 = alloca %"class.std::allocator.11", align 1
  %43 = alloca %"class.std::vector.9", align 8
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::allocator.1", align 1
  %47 = alloca %"class.std::vector", align 8
  %48 = alloca [2 x i64], align 8
  %49 = alloca %"class.std::allocator", align 1
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::allocator.1", align 1
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca %"class.std::allocator.1", align 1
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca %"class.std::allocator.1", align 1
  %57 = alloca %"class.std::__cxx11::basic_string", align 8
  %58 = alloca %"class.std::allocator.1", align 1
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.std::allocator.1", align 1
  %62 = alloca %"class.std::__cxx11::basic_string", align 8
  %63 = alloca %"class.std::allocator.1", align 1
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  %65 = alloca %"class.std::allocator.1", align 1
  %66 = alloca %"class.std::vector.4", align 8
  %67 = alloca %"class.std::vector.4", align 8
  %68 = alloca %"class.std::function.15", align 8
  %69 = alloca %class.anon, align 8
  %70 = alloca %"class.std::function", align 8
  %71 = alloca %class.anon.26, align 1
  %72 = alloca %"class.std::function.18", align 8
  %73 = alloca %class.anon.27, align 1
  %74 = alloca %"class.std::__cxx11::basic_string", align 8
  %75 = alloca %"class.std::allocator.1", align 1
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca %"class.std::allocator.1", align 1
  %78 = alloca %"class.std::vector.4", align 8
  %79 = alloca [1 x ptr], align 8
  %80 = alloca %"class.std::allocator.6", align 1
  %81 = alloca %"class.std::function.15", align 8
  %82 = alloca %class.anon.30, align 8
  %83 = alloca %"class.std::vector.4", align 8
  %84 = alloca [1 x ptr], align 8
  %85 = alloca %"class.std::allocator.6", align 1
  %86 = alloca %"class.std::function.21", align 8
  %87 = alloca %class.anon.31, align 1
  %88 = alloca %"class.std::function.23", align 8
  %89 = alloca %class.anon.33, align 1
  %90 = alloca %"class.std::function", align 8
  %91 = alloca %class.anon.35, align 1
  %92 = alloca %"class.std::function.18", align 8
  %93 = alloca %class.anon.37, align 1
  %94 = alloca %"class.std::__cxx11::basic_string", align 8
  %95 = alloca %"class.std::__cxx11::basic_string", align 8
  %96 = alloca %"class.std::allocator.1", align 1
  %97 = alloca %"class.std::__cxx11::basic_string", align 8
  %98 = alloca %"class.std::allocator.1", align 1
  %99 = alloca i32, align 4
  %100 = alloca i32, align 4
  %101 = alloca %"class.std::__cxx11::basic_string", align 8
  %102 = alloca %"class.std::__cxx11::basic_string", align 8
  %103 = alloca %"class.std::allocator.1", align 1
  %104 = alloca %"class.std::__cxx11::basic_string", align 8
  %105 = alloca %"class.std::allocator.1", align 1
  %106 = alloca %"class.std::__cxx11::basic_string", align 8
  %107 = alloca %"class.std::allocator.1", align 1
  %108 = alloca %"class.std::vector", align 8
  %109 = alloca [1 x i64], align 8
  %110 = alloca %"class.std::allocator", align 1
  %111 = alloca %"class.std::vector.4", align 8
  %112 = alloca %"class.std::__cxx11::basic_string", align 8
  %113 = alloca %"class.std::allocator.1", align 1
  %114 = alloca %"class.std::vector.4", align 8
  %115 = alloca %"class.std::__cxx11::basic_string", align 8
  %116 = alloca %"class.std::allocator.1", align 1
  %117 = alloca %"class.std::vector.4", align 8
  %118 = alloca %"class.std::vector.4", align 8
  %119 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %120 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %121 = alloca ptr, align 8
  %122 = alloca %"class.std::__cxx11::basic_string", align 8
  %123 = alloca %"class.std::allocator.1", align 1
  %124 = alloca %"class.std::vector.4", align 8
  %125 = alloca %"class.std::vector.4", align 8
  %126 = alloca %"class.std::function.15", align 8
  %127 = alloca %class.anon.40, align 8
  %128 = alloca %"class.std::function", align 8
  %129 = alloca %class.anon.26, align 1
  %130 = alloca %"class.std::function.18", align 8
  %131 = alloca %class.anon.27, align 1
  %132 = alloca %"class.std::__cxx11::basic_string", align 8
  %133 = alloca %"class.std::allocator.1", align 1
  %134 = alloca %"class.std::vector.4", align 8
  %135 = alloca %"class.std::function.15", align 8
  %136 = alloca %class.anon.41, align 8
  %137 = alloca %"class.std::vector.4", align 8
  %138 = alloca %"class.std::function.21", align 8
  %139 = alloca %class.anon.42, align 8
  %140 = alloca %"class.std::function.23", align 8
  %141 = alloca %class.anon.33, align 1
  %142 = alloca %"class.std::function", align 8
  %143 = alloca %class.anon.35, align 1
  %144 = alloca %"class.std::function.18", align 8
  %145 = alloca %class.anon.37, align 1
  %146 = alloca %"class.std::vector.4", align 8
  %147 = alloca [1 x ptr], align 8
  %148 = alloca %"class.std::allocator.6", align 1
  %149 = alloca %"class.std::vector.4", align 8
  %150 = alloca [4 x ptr], align 8
  %151 = alloca %"class.std::allocator.6", align 1
  br i1 %0, label %152, label %165

152:                                              ; preds = %1
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) @constinit, i64 32, i1 false), !tbaa.struct !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #12
  call void @_ZNSaIxEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #12
  invoke void @_ZNSt6vectorIxSaIxEEC2ESt16initializer_listIxERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr nonnull %3, i64 4, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %153 unwind label %157

153:                                              ; preds = %152
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %154 unwind label %159

154:                                              ; preds = %153
  %155 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet4DataESt6vectorIxSaIxEEPNS_6TensorENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull %2, ptr noundef null, ptr noundef nonnull %5)
          to label %156 unwind label %161

156:                                              ; preds = %154
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #12
  call void @_ZNSt6vectorIxSaIxEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #12
  call void @_ZNSt15__new_allocatorIxED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #12
  br label %234

157:                                              ; preds = %152
  %158 = landingpad { ptr, i32 }
          cleanup
  br label %164

159:                                              ; preds = %153
  %160 = landingpad { ptr, i32 }
          cleanup
  br label %163

161:                                              ; preds = %154
  %162 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #12
  br label %163

163:                                              ; preds = %161, %159
  %.pn194 = phi { ptr, i32 } [ %162, %161 ], [ %160, %159 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #12
  call void @_ZNSt6vectorIxSaIxEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #12
  br label %164

164:                                              ; preds = %163, %157
  %.pn194.pn = phi { ptr, i32 } [ %.pn194, %163 ], [ %158, %157 ]
  call void @_ZNSt15__new_allocatorIxED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #12
  br label %614

165:                                              ; preds = %1
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %166 unwind label %198

166:                                              ; preds = %165
  %167 = invoke noundef i32 @_ZN5clnet8optionalIiEET_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES1_(ptr noundef nonnull %7, i32 noundef 32)
          to label %168 unwind label %200

168:                                              ; preds = %166
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %169 unwind label %203

169:                                              ; preds = %168
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @.str.6, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %170 unwind label %205

170:                                              ; preds = %169
  invoke void @_ZN5clnet8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEET_S6_S7_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull %10, ptr noundef nonnull %12)
          to label %171 unwind label %207

171:                                              ; preds = %170
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #12
  %172 = invoke noalias noundef nonnull dereferenceable(168) ptr @_Znwm(i64 noundef 168) #13
          to label %173 unwind label %211

173:                                              ; preds = %171
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %174 unwind label %213

174:                                              ; preds = %173
  invoke void @_ZN18MNISTImageIteratorC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(168) %172, ptr noundef nonnull %14, i32 noundef %167)
          to label %175 unwind label %215

175:                                              ; preds = %174
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #12
  %176 = sext i32 %167 to i64
  store i64 %176, ptr %16, align 8, !tbaa !9
  %177 = getelementptr inbounds i8, ptr %16, i64 8
  %178 = getelementptr inbounds i8, ptr %172, i64 88
  %179 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %178, i64 noundef 0) #12
  %180 = load ptr, ptr %179, align 8, !tbaa !11
  %181 = getelementptr inbounds i8, ptr %180, i64 8
  %182 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIxSaIxEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %181, i64 noundef 1) #12
  %183 = load i64, ptr %182, align 8, !tbaa !9
  store i64 %183, ptr %177, align 8, !tbaa !9
  %184 = getelementptr inbounds i8, ptr %16, i64 16
  %185 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %178, i64 noundef 0) #12
  %186 = load ptr, ptr %185, align 8, !tbaa !11
  %187 = getelementptr inbounds i8, ptr %186, i64 8
  %188 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIxSaIxEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %187, i64 noundef 2) #12
  %189 = load i64, ptr %188, align 8, !tbaa !9
  store i64 %189, ptr %184, align 8, !tbaa !9
  %190 = getelementptr inbounds i8, ptr %16, i64 24
  store i64 1, ptr %190, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #12
  call void @_ZNSaIxEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #12
  invoke void @_ZNSt6vectorIxSaIxEEC2ESt16initializer_listIxERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr nonnull %16, i64 4, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %191 unwind label %218

191:                                              ; preds = %175
  call void @_ZNSt15__new_allocatorIxED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #12
  %192 = invoke noalias noundef nonnull dereferenceable(144) ptr @_Znwm(i64 noundef 144) #13
          to label %193 unwind label %220

193:                                              ; preds = %191
  invoke void @_ZNSt6vectorIxSaIxEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(24) %15)
          to label %194 unwind label %222

194:                                              ; preds = %193
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %19, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %21) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull @.str.7, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %195 unwind label %224

195:                                              ; preds = %194
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %22, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #12
  invoke void @_ZN5clnet6TensorC1ESt6vectorIxSaIxEES1_IPS0_SaIS4_EENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_(ptr noundef nonnull align 8 dereferenceable(144) %192, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %22)
          to label %196 unwind label %226

196:                                              ; preds = %195
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #12
  call void @_ZNSt6vectorIxSaIxEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #12
  invoke void @_ZN5clnet6Tensor12dependent_onEPS0_(ptr noundef nonnull align 8 dereferenceable(144) %192, ptr noundef nonnull %172)
          to label %197 unwind label %220

197:                                              ; preds = %196
  call void @_ZNSt6vectorIxSaIxEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #12
  br label %234

198:                                              ; preds = %165
  %199 = landingpad { ptr, i32 }
          cleanup
  br label %202

200:                                              ; preds = %166
  %201 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #12
  br label %202

202:                                              ; preds = %200, %198
  %.pn = phi { ptr, i32 } [ %201, %200 ], [ %199, %198 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #12
  br label %614

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

205:                                              ; preds = %169
  %206 = landingpad { ptr, i32 }
          cleanup
  br label %209

207:                                              ; preds = %170
  %208 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #12
  br label %209

209:                                              ; preds = %207, %205
  %.pn181 = phi { ptr, i32 } [ %208, %207 ], [ %206, %205 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #12
  br label %210

210:                                              ; preds = %209, %203
  %.pn181.pn = phi { ptr, i32 } [ %.pn181, %209 ], [ %204, %203 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #12
  br label %233

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

213:                                              ; preds = %173
  %214 = landingpad { ptr, i32 }
          cleanup
  br label %217

215:                                              ; preds = %174
  %216 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #12
  br label %217

217:                                              ; preds = %213, %215
  %.pn184 = phi { ptr, i32 } [ %216, %215 ], [ %214, %213 ]
  call void @_ZdlPvm(ptr noundef nonnull %172, i64 noundef 168) #14
  br label %232

218:                                              ; preds = %175
  %219 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIxED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #12
  br label %231

220:                                              ; preds = %196, %191
  %221 = landingpad { ptr, i32 }
          cleanup
  br label %230

222:                                              ; preds = %193
  %223 = landingpad { ptr, i32 }
          cleanup
  br label %229

224:                                              ; preds = %194
  %225 = landingpad { ptr, i32 }
          cleanup
  br label %228

226:                                              ; preds = %195
  %227 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #12
  br label %228

228:                                              ; preds = %226, %224
  %.pn186 = phi { ptr, i32 } [ %227, %226 ], [ %225, %224 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #12
  call void @_ZNSt6vectorIxSaIxEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #12
  br label %229

229:                                              ; preds = %222, %228
  %.pn186.pn = phi { ptr, i32 } [ %.pn186, %228 ], [ %223, %222 ]
  call void @_ZdlPvm(ptr noundef nonnull %192, i64 noundef 144) #14
  br label %230

230:                                              ; preds = %229, %220
  %.pn189 = phi { ptr, i32 } [ %221, %220 ], [ %.pn186.pn, %229 ]
  call void @_ZNSt6vectorIxSaIxEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #12
  br label %231

231:                                              ; preds = %230, %218
  %.pn189.pn = phi { ptr, i32 } [ %.pn189, %230 ], [ %219, %218 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #12
  br label %232

232:                                              ; preds = %217, %231, %211
  %.pn189.pn.pn = phi { ptr, i32 } [ %.pn189.pn, %231 ], [ %.pn184, %217 ], [ %212, %211 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #12
  br label %233

233:                                              ; preds = %232, %210
  %.pn189.pn.pn.pn = phi { ptr, i32 } [ %.pn189.pn.pn, %232 ], [ %.pn181.pn, %210 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #12
  br label %614

234:                                              ; preds = %197, %156
  %.093 = phi ptr [ null, %156 ], [ %172, %197 ]
  %.092 = phi ptr [ %155, %156 ], [ %192, %197 ]
  %.091 = phi i32 [ 1, %156 ], [ %167, %197 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull @.str.8, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %235 unwind label %316

235:                                              ; preds = %234
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %236 unwind label %318

236:                                              ; preds = %235
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %237 unwind label %320

237:                                              ; preds = %236
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %238 unwind label %322

238:                                              ; preds = %237
  %239 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet16ConvolutionLayerERNS_6TensorEiiiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbbS7_(ptr noundef nonnull align 8 dereferenceable(144) %.092, i32 noundef 20, i32 noundef 5, i32 noundef 1, ptr noundef nonnull %27, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef nonnull %28)
          to label %240 unwind label %324

240:                                              ; preds = %238
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #12
  store i32 2, ptr %31, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #12
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #12
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %30, ptr nonnull %31, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %241 unwind label %327

241:                                              ; preds = %240
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %33, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %242 unwind label %329

242:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %36) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull @.str.11, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %243 unwind label %331

243:                                              ; preds = %242
  %244 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet7PoolingERNS_6TensorESt6vectorIiSaIiEES4_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbSA_(ptr noundef nonnull align 8 dereferenceable(144) %239, ptr noundef nonnull %30, ptr noundef nonnull %33, ptr noundef nonnull %34, i1 noundef zeroext true, ptr noundef nonnull %35)
          to label %245 unwind label %333

245:                                              ; preds = %243
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #12
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %246 unwind label %338

246:                                              ; preds = %245
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %39) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull @.str.12, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %247 unwind label %340

247:                                              ; preds = %246
  %248 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet16ConvolutionLayerERNS_6TensorEiiiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbbS7_(ptr noundef nonnull align 8 dereferenceable(144) %244, i32 noundef 50, i32 noundef 5, i32 noundef 1, ptr noundef nonnull %37, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef nonnull %38)
          to label %249 unwind label %342

249:                                              ; preds = %247
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %41) #12
  store i32 2, ptr %41, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %42) #12
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #12
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %40, ptr nonnull %41, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %250 unwind label %345

250:                                              ; preds = %249
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %43, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %251 unwind label %347

251:                                              ; preds = %250
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %46) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull @.str.13, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %252 unwind label %349

252:                                              ; preds = %251
  %253 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet7PoolingERNS_6TensorESt6vectorIiSaIiEES4_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbSA_(ptr noundef nonnull align 8 dereferenceable(144) %248, ptr noundef nonnull %40, ptr noundef nonnull %43, ptr noundef nonnull %44, i1 noundef zeroext true, ptr noundef nonnull %45)
          to label %254 unwind label %351

254:                                              ; preds = %252
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %40) #12
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %48) #12
  %255 = getelementptr inbounds i8, ptr %253, i64 8
  %256 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIxSaIxEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %255, i64 noundef 0) #12
  %257 = load i64, ptr %256, align 8, !tbaa !9
  store i64 %257, ptr %48, align 8, !tbaa !9
  %258 = getelementptr inbounds i8, ptr %48, i64 8
  %259 = getelementptr inbounds i8, ptr %253, i64 136
  %260 = load i64, ptr %259, align 8, !tbaa !15
  %261 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIxSaIxEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %255, i64 noundef 0) #12
  %262 = load i64, ptr %261, align 8, !tbaa !9
  %263 = sdiv i64 %260, %262
  store i64 %263, ptr %258, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %49) #12
  call void @_ZNSaIxEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #12
  invoke void @_ZNSt6vectorIxSaIxEEC2ESt16initializer_listIxERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr nonnull %48, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %264 unwind label %356

264:                                              ; preds = %254
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %51) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull @.str.14, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %265 unwind label %358

265:                                              ; preds = %264
  %266 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet7ReshapeERNS_6TensorESt6vectorIxSaIxEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(144) %253, ptr noundef nonnull %47, ptr noundef nonnull %50)
          to label %267 unwind label %360

267:                                              ; preds = %265
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %51) #12
  call void @_ZNSt6vectorIxSaIxEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #12
  call void @_ZNSt15__new_allocatorIxED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %49) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %268 unwind label %364

268:                                              ; preds = %267
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %54) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull @.str.15, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %269 unwind label %366

269:                                              ; preds = %268
  %270 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet19FullyConnectedLayerERNS_6TensorEiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_(ptr noundef nonnull align 8 dereferenceable(144) %266, i32 noundef 480, ptr noundef nonnull %52, ptr noundef nonnull %53)
          to label %271 unwind label %368

271:                                              ; preds = %269
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %56) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull @.str.16, ptr noundef nonnull align 1 dereferenceable(1) %56)
          to label %272 unwind label %371

272:                                              ; preds = %271
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %58) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef nonnull @.str.17, ptr noundef nonnull align 1 dereferenceable(1) %58)
          to label %273 unwind label %373

273:                                              ; preds = %272
  %274 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet19FullyConnectedLayerERNS_6TensorEiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_(ptr noundef nonnull align 8 dereferenceable(144) %270, i32 noundef 10, ptr noundef nonnull %55, ptr noundef nonnull %57)
          to label %275 unwind label %375

275:                                              ; preds = %273
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %58) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %56) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %59) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %61) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull @.str.18, ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %276 unwind label %379

276:                                              ; preds = %275
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %63) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef nonnull @.str.19, ptr noundef nonnull align 1 dereferenceable(1) %63)
          to label %277 unwind label %381

277:                                              ; preds = %276
  invoke void @_ZN5clnet8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEET_S6_S7_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %59, ptr noundef nonnull %60, ptr noundef nonnull %62)
          to label %278 unwind label %383

278:                                              ; preds = %277
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %63) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %61) #12
  br i1 %0, label %279, label %465

279:                                              ; preds = %278
  %280 = invoke noalias noundef nonnull dereferenceable(312) ptr @_Znwm(i64 noundef 312) #13
          to label %281 unwind label %387

281:                                              ; preds = %279
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %65) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef nonnull @.str.20, ptr noundef nonnull align 1 dereferenceable(1) %65)
          to label %282 unwind label %389

282:                                              ; preds = %281
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %66, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %67, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %67) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %69) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef nonnull align 8 dereferenceable(32) %59)
          to label %283 unwind label %391

283:                                              ; preds = %282
  invoke void @"_ZNSt8functionIFvPN5clnet13InstantTensorERNS0_14DeviceInstanceEEEC2IZ9MNIST_CNNbE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef nonnull align 8 dereferenceable(32) %69)
          to label %284 unwind label %393

284:                                              ; preds = %283
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %71) #12
  call void @_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN5clnet13InstantTensorERNS6_14DeviceInstanceEEEC2IZNS7_C1ES5_St6vectorIPNS6_6TensorESaISG_EESI_S_IFvS8_SA_EESC_S_IFSG_S8_SG_EEEd0_UlS8_SA_E_vEEOT_(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull align 1 dereferenceable(1) %71) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %73) #12
  call void @_ZNSt8functionIFPN5clnet6TensorEPNS0_13InstantTensorES2_EEC2IZNS3_C1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS2_SaIS2_EESG_S_IFvS4_RNS0_14DeviceInstanceEEES_IFSD_S4_SI_EES6_Ed_UlS4_S2_E_vEEOT_(ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef nonnull align 1 dereferenceable(1) %73) #12
  invoke void @_ZN5clnet13InstantTensorC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPNS_6TensorESaIS9_EESB_St8functionIFvPS0_RNS_14DeviceInstanceEEESC_IFS6_SD_SF_EESC_IFS9_SD_S9_EE(ptr noundef nonnull align 8 dereferenceable(312) %280, ptr noundef nonnull %64, ptr noundef nonnull %66, ptr noundef nonnull %67, ptr noundef nonnull %68, ptr noundef nonnull %70, ptr noundef nonnull %72)
          to label %285 unwind label %395

285:                                              ; preds = %284
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %73) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %71) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #12
  call void @"_ZZ9MNIST_CNNbEN3$_0D2Ev"(ptr noundef nonnull align 8 dereferenceable(32) %69) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %69) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %67) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %65) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %75) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef nonnull @.str.21, ptr noundef nonnull align 1 dereferenceable(1) %75)
          to label %286 unwind label %400

286:                                              ; preds = %285
  %287 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet7SoftmaxERNS_6TensorENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(144) %274, ptr noundef nonnull %74)
          to label %288 unwind label %402

288:                                              ; preds = %286
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %75) #12
  %289 = invoke noalias noundef nonnull dereferenceable(312) ptr @_Znwm(i64 noundef 312) #13
          to label %290 unwind label %405

290:                                              ; preds = %288
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %77) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull @.str.22, ptr noundef nonnull align 1 dereferenceable(1) %77)
          to label %291 unwind label %407

291:                                              ; preds = %290
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %79) #12
  store ptr %280, ptr %79, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %80) #12
  call void @_ZNSaIPN5clnet6TensorEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #12
  invoke void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %78, ptr nonnull %79, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %80)
          to label %292 unwind label %409

292:                                              ; preds = %291
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %82) #12
  store ptr %287, ptr %82, align 8, !tbaa !11
  call void @"_ZNSt8functionIFvPN5clnet13InstantTensorERNS0_14DeviceInstanceEEEC2IZ9MNIST_CNNbE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %81, ptr noundef nonnull align 8 dereferenceable(8) %82) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %84) #12
  store ptr %274, ptr %84, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %85) #12
  call void @_ZNSaIPN5clnet6TensorEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #12
  invoke void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %83, ptr nonnull %84, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %85)
          to label %293 unwind label %411

293:                                              ; preds = %292
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %87) #12
  call void @"_ZNSt8functionIFPN5clnet6TensorEPNS0_13InstantTensorEEEC2IZ9MNIST_CNNbE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %86, ptr noundef nonnull align 1 dereferenceable(1) %87) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %89) #12
  call void @_ZNSt8functionIFSt6vectorIPN5clnet6TensorESaIS3_EEPNS1_13InstantTensorEEEC2IZNS6_C1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_S_IFvS7_RNS1_14DeviceInstanceEEES5_S_IFS3_S7_EES9_S_IFSG_S7_SI_EES_IFS3_S7_S3_EEEd1_UlS7_E_vEEOT_(ptr noundef nonnull align 8 dereferenceable(32) %88, ptr noundef nonnull align 1 dereferenceable(1) %89) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %91) #12
  call void @_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN5clnet13InstantTensorERNS6_14DeviceInstanceEEEC2IZNS7_C1ES5_St6vectorIPNS6_6TensorESaISG_EES_IFvS8_SA_EESI_S_IFSG_S8_EES_IFSI_S8_EESC_S_IFSG_S8_SG_EEEd0_UlS8_SA_E_vEEOT_(ptr noundef nonnull align 8 dereferenceable(32) %90, ptr noundef nonnull align 1 dereferenceable(1) %91) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %93) #12
  call void @_ZNSt8functionIFPN5clnet6TensorEPNS0_13InstantTensorES2_EEC2IZNS3_C1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS2_SaIS2_EES_IFvS4_RNS0_14DeviceInstanceEEESG_S_IFS2_S4_EES_IFSG_S4_EES_IFSD_S4_SI_EES6_Ed_UlS4_S2_E_vEEOT_(ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef nonnull align 1 dereferenceable(1) %93) #12
  invoke void @_ZN5clnet13InstantTensorC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPNS_6TensorESaIS9_EESt8functionIFvPS0_RNS_14DeviceInstanceEEESB_SC_IFS9_SD_EESC_IFSB_SD_EESC_IFS6_SD_SF_EESC_IFS9_SD_S9_EE(ptr noundef nonnull align 8 dereferenceable(312) %289, ptr noundef nonnull %76, ptr noundef nonnull %78, ptr noundef nonnull %81, ptr noundef nonnull %83, ptr noundef nonnull %86, ptr noundef nonnull %88, ptr noundef nonnull %90, ptr noundef nonnull %92)
          to label %294 unwind label %413

294:                                              ; preds = %293
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %93) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %91) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %89) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %87) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %83) #12
  call void @_ZNSt15__new_allocatorIPN5clnet6TensorEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %85) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %84) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #12
  call void @_ZNSt15__new_allocatorIPN5clnet6TensorEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %80) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %79) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %77) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %94) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %96) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %95, ptr noundef nonnull @.str.23, ptr noundef nonnull align 1 dereferenceable(1) %96)
          to label %295 unwind label %418

295:                                              ; preds = %294
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %98) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %97, ptr noundef nonnull @.str.24, ptr noundef nonnull align 1 dereferenceable(1) %98)
          to label %296 unwind label %420

296:                                              ; preds = %295
  invoke void @_ZN5clnet8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEET_S6_S7_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %94, ptr noundef nonnull %95, ptr noundef nonnull %97)
          to label %297 unwind label %422

297:                                              ; preds = %296
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %98) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %96) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %99) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %100) #12
  %298 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %94) #12
  %299 = invoke noundef ptr @_Z15read_24bits_bmpPKcPiS1_(ptr noundef %298, ptr noundef nonnull %99, ptr noundef nonnull %100)
          to label %300 unwind label %426

300:                                              ; preds = %297
  %301 = load i32, ptr %100, align 4, !tbaa !13
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds i8, ptr %.092, i64 8
  %304 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIxSaIxEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %303, i64 noundef 1) #12
  %305 = load i64, ptr %304, align 8, !tbaa !9
  %.not265 = icmp eq i64 %305, %302
  br i1 %.not265, label %306, label %311

306:                                              ; preds = %300
  %307 = load i32, ptr %99, align 4, !tbaa !13
  %308 = sext i32 %307 to i64
  %309 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIxSaIxEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %303, i64 noundef 2) #12
  %310 = load i64, ptr %309, align 8, !tbaa !9
  %.not266 = icmp eq i64 %310, %308
  br i1 %.not266, label %432, label %311

311:                                              ; preds = %306, %300
  %312 = call ptr @__cxa_allocate_exception(i64 16) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %101) #12
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %101, ptr noundef nonnull @.str.25, ptr noundef nonnull align 8 dereferenceable(32) %94)
          to label %313 unwind label %.thread

313:                                              ; preds = %311
  invoke void @_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %312, ptr noundef nonnull align 8 dereferenceable(32) %101)
          to label %315 unwind label %.thread289

.thread289:                                       ; preds = %313
  %314 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %101) #12
  br label %431

315:                                              ; preds = %313
  invoke void @__cxa_throw(ptr nonnull %312, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #15
          to label %615 unwind label %429

316:                                              ; preds = %234
  %317 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #12
  br label %613

318:                                              ; preds = %235
  %319 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #12
  br label %612

320:                                              ; preds = %236
  %321 = landingpad { ptr, i32 }
          cleanup
  br label %611

322:                                              ; preds = %237
  %323 = landingpad { ptr, i32 }
          cleanup
  br label %326

324:                                              ; preds = %238
  %325 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #12
  br label %326

326:                                              ; preds = %324, %322
  %.pn197 = phi { ptr, i32 } [ %325, %324 ], [ %323, %322 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #12
  br label %611

327:                                              ; preds = %240
  %328 = landingpad { ptr, i32 }
          cleanup
  br label %337

329:                                              ; preds = %241
  %330 = landingpad { ptr, i32 }
          cleanup
  br label %336

331:                                              ; preds = %242
  %332 = landingpad { ptr, i32 }
          cleanup
  br label %335

333:                                              ; preds = %243
  %334 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #12
  br label %335

335:                                              ; preds = %333, %331
  %.pn199 = phi { ptr, i32 } [ %334, %333 ], [ %332, %331 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #12
  br label %336

336:                                              ; preds = %335, %329
  %.pn199.pn = phi { ptr, i32 } [ %.pn199, %335 ], [ %330, %329 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #12
  br label %337

337:                                              ; preds = %336, %327
  %.pn199.pn.pn = phi { ptr, i32 } [ %.pn199.pn, %336 ], [ %328, %327 ]
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #12
  br label %611

338:                                              ; preds = %245
  %339 = landingpad { ptr, i32 }
          cleanup
  br label %611

340:                                              ; preds = %246
  %341 = landingpad { ptr, i32 }
          cleanup
  br label %344

342:                                              ; preds = %247
  %343 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #12
  br label %344

344:                                              ; preds = %342, %340
  %.pn203 = phi { ptr, i32 } [ %343, %342 ], [ %341, %340 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #12
  br label %611

345:                                              ; preds = %249
  %346 = landingpad { ptr, i32 }
          cleanup
  br label %355

347:                                              ; preds = %250
  %348 = landingpad { ptr, i32 }
          cleanup
  br label %354

349:                                              ; preds = %251
  %350 = landingpad { ptr, i32 }
          cleanup
  br label %353

351:                                              ; preds = %252
  %352 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #12
  br label %353

353:                                              ; preds = %351, %349
  %.pn205 = phi { ptr, i32 } [ %352, %351 ], [ %350, %349 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #12
  br label %354

354:                                              ; preds = %353, %347
  %.pn205.pn = phi { ptr, i32 } [ %.pn205, %353 ], [ %348, %347 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %40) #12
  br label %355

355:                                              ; preds = %354, %345
  %.pn205.pn.pn = phi { ptr, i32 } [ %.pn205.pn, %354 ], [ %346, %345 ]
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #12
  br label %611

356:                                              ; preds = %254
  %357 = landingpad { ptr, i32 }
          cleanup
  br label %363

358:                                              ; preds = %264
  %359 = landingpad { ptr, i32 }
          cleanup
  br label %362

360:                                              ; preds = %265
  %361 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #12
  br label %362

362:                                              ; preds = %360, %358
  %.pn209 = phi { ptr, i32 } [ %361, %360 ], [ %359, %358 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %51) #12
  call void @_ZNSt6vectorIxSaIxEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #12
  br label %363

363:                                              ; preds = %362, %356
  %.pn209.pn = phi { ptr, i32 } [ %.pn209, %362 ], [ %357, %356 ]
  call void @_ZNSt15__new_allocatorIxED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %49) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #12
  br label %611

364:                                              ; preds = %267
  %365 = landingpad { ptr, i32 }
          cleanup
  br label %611

366:                                              ; preds = %268
  %367 = landingpad { ptr, i32 }
          cleanup
  br label %370

368:                                              ; preds = %269
  %369 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #12
  br label %370

370:                                              ; preds = %368, %366
  %.pn212 = phi { ptr, i32 } [ %369, %368 ], [ %367, %366 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #12
  br label %611

371:                                              ; preds = %271
  %372 = landingpad { ptr, i32 }
          cleanup
  br label %378

373:                                              ; preds = %272
  %374 = landingpad { ptr, i32 }
          cleanup
  br label %377

375:                                              ; preds = %273
  %376 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #12
  br label %377

377:                                              ; preds = %375, %373
  %.pn214 = phi { ptr, i32 } [ %376, %375 ], [ %374, %373 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %58) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #12
  br label %378

378:                                              ; preds = %377, %371
  %.pn214.pn = phi { ptr, i32 } [ %.pn214, %377 ], [ %372, %371 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %56) #12
  br label %611

379:                                              ; preds = %275
  %380 = landingpad { ptr, i32 }
          cleanup
  br label %386

381:                                              ; preds = %276
  %382 = landingpad { ptr, i32 }
          cleanup
  br label %385

383:                                              ; preds = %277
  %384 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #12
  br label %385

385:                                              ; preds = %383, %381
  %.pn217 = phi { ptr, i32 } [ %384, %383 ], [ %382, %381 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %63) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #12
  br label %386

386:                                              ; preds = %385, %379
  %.pn217.pn = phi { ptr, i32 } [ %.pn217, %385 ], [ %380, %379 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %61) #12
  br label %610

387:                                              ; preds = %279
  %388 = landingpad { ptr, i32 }
          cleanup
  br label %609

389:                                              ; preds = %281
  %390 = landingpad { ptr, i32 }
          cleanup
  br label %399

391:                                              ; preds = %282
  %392 = landingpad { ptr, i32 }
          cleanup
  br label %398

393:                                              ; preds = %283
  %394 = landingpad { ptr, i32 }
          cleanup
  br label %397

395:                                              ; preds = %284
  %396 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %73) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %71) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #12
  br label %397

397:                                              ; preds = %395, %393
  %.pn252 = phi { ptr, i32 } [ %396, %395 ], [ %394, %393 ]
  call void @"_ZZ9MNIST_CNNbEN3$_0D2Ev"(ptr noundef nonnull align 8 dereferenceable(32) %69) #12
  br label %398

398:                                              ; preds = %397, %391
  %.pn252.pn = phi { ptr, i32 } [ %.pn252, %397 ], [ %392, %391 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %69) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %67) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #12
  br label %399

399:                                              ; preds = %398, %389
  %.pn252.pn.pn = phi { ptr, i32 } [ %.pn252.pn, %398 ], [ %390, %389 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %65) #12
  call void @_ZdlPvm(ptr noundef nonnull %280, i64 noundef 312) #14
  br label %609

400:                                              ; preds = %285
  %401 = landingpad { ptr, i32 }
          cleanup
  br label %404

402:                                              ; preds = %286
  %403 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #12
  br label %404

404:                                              ; preds = %402, %400
  %.pn256 = phi { ptr, i32 } [ %403, %402 ], [ %401, %400 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %75) #12
  br label %609

405:                                              ; preds = %288
  %406 = landingpad { ptr, i32 }
          cleanup
  br label %609

407:                                              ; preds = %290
  %408 = landingpad { ptr, i32 }
          cleanup
  br label %417

409:                                              ; preds = %291
  %410 = landingpad { ptr, i32 }
          cleanup
  br label %416

411:                                              ; preds = %292
  %412 = landingpad { ptr, i32 }
          cleanup
  br label %415

413:                                              ; preds = %293
  %414 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %93) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %91) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %89) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %87) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %83) #12
  br label %415

415:                                              ; preds = %413, %411
  %.pn258 = phi { ptr, i32 } [ %414, %413 ], [ %412, %411 ]
  call void @_ZNSt15__new_allocatorIPN5clnet6TensorEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %85) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %84) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #12
  br label %416

416:                                              ; preds = %415, %409
  %.pn258.pn = phi { ptr, i32 } [ %.pn258, %415 ], [ %410, %409 ]
  call void @_ZNSt15__new_allocatorIPN5clnet6TensorEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %80) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %79) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #12
  br label %417

417:                                              ; preds = %416, %407
  %.pn258.pn.pn = phi { ptr, i32 } [ %.pn258.pn, %416 ], [ %408, %407 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %77) #12
  call void @_ZdlPvm(ptr noundef nonnull %289, i64 noundef 312) #14
  br label %609

418:                                              ; preds = %294
  %419 = landingpad { ptr, i32 }
          cleanup
  br label %425

420:                                              ; preds = %295
  %421 = landingpad { ptr, i32 }
          cleanup
  br label %424

422:                                              ; preds = %296
  %423 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #12
  br label %424

424:                                              ; preds = %422, %420
  %.pn262 = phi { ptr, i32 } [ %423, %422 ], [ %421, %420 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %98) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %98) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #12
  br label %425

425:                                              ; preds = %424, %418
  %.pn262.pn = phi { ptr, i32 } [ %.pn262, %424 ], [ %419, %418 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %96) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %96) #12
  br label %464

426:                                              ; preds = %432, %297
  %427 = landingpad { ptr, i32 }
          cleanup
  br label %463

.thread:                                          ; preds = %311
  %428 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %101) #12
  br label %431

429:                                              ; preds = %315
  %430 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %101) #12
  br label %463

431:                                              ; preds = %.thread289, %.thread
  %.pn267288 = phi { ptr, i32 } [ %428, %.thread ], [ %314, %.thread289 ]
  call void @__cxa_free_exception(ptr %312) #12
  br label %463

432:                                              ; preds = %306
  %433 = load ptr, ptr %.092, align 8, !tbaa !28
  %434 = getelementptr inbounds i8, ptr %433, i64 48
  %435 = load ptr, ptr %434, align 8
  invoke void %435(ptr noundef nonnull align 8 dereferenceable(144) %.092, ptr noundef null)
          to label %436 unwind label %426

436:                                              ; preds = %432
  %437 = load i32, ptr %100, align 4, !tbaa !13
  %438 = icmp sgt i32 %437, 0
  br i1 %438, label %.preheader.lr.ph, label %._crit_edge299

.preheader.lr.ph:                                 ; preds = %436
  %439 = load i32, ptr %99, align 4, !tbaa !13
  %440 = icmp sgt i32 %439, 0
  br i1 %440, label %.preheader.us.preheader, label %._crit_edge299

.preheader.us.preheader:                          ; preds = %.preheader.lr.ph
  %441 = getelementptr inbounds i8, ptr %.092, i64 120
  %442 = load ptr, ptr %441, align 8, !tbaa !30
  %443 = zext nneg i32 %437 to i64
  %444 = zext nneg i32 %439 to i64
  %wide.trip.count = zext nneg i32 %439 to i64
  br label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.us.preheader, %..loopexit_crit_edge.us
  %indvars.iv302.in = phi i64 [ %443, %.preheader.us.preheader ], [ %indvars.iv302, %..loopexit_crit_edge.us ]
  %.0174297.us = phi ptr [ %442, %.preheader.us.preheader ], [ %461, %..loopexit_crit_edge.us ]
  %indvars.iv302 = add nsw i64 %indvars.iv302.in, -1
  %445 = mul nsw i64 %indvars.iv302, %444
  br label %446

446:                                              ; preds = %.preheader.us, %446
  %indvars.iv = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next, %446 ]
  %.1175294.us = phi ptr [ %.0174297.us, %.preheader.us ], [ %461, %446 ]
  %447 = add nsw i64 %445, %indvars.iv
  %448 = mul nsw i64 %447, 3
  %449 = getelementptr inbounds i8, ptr %299, i64 %448
  %450 = load i8, ptr %449, align 1, !tbaa !6
  %451 = uitofp i8 %450 to float
  %452 = getelementptr i8, ptr %449, i64 1
  %453 = load i8, ptr %452, align 1, !tbaa !6
  %454 = uitofp i8 %453 to float
  %455 = fmul float %454, 0x3FE2E147A0000000
  %456 = call float @llvm.fmuladd.f32(float %451, float 0x3FD3333340000000, float %455)
  %457 = getelementptr i8, ptr %449, i64 2
  %458 = load i8, ptr %457, align 1, !tbaa !6
  %459 = uitofp i8 %458 to float
  %460 = call float @llvm.fmuladd.f32(float %459, float 0x3FBC28F5C0000000, float %456)
  %461 = getelementptr inbounds i8, ptr %.1175294.us, i64 4
  store float %460, ptr %.1175294.us, align 4, !tbaa !31
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %..loopexit_crit_edge.us, label %446, !llvm.loop !33

..loopexit_crit_edge.us:                          ; preds = %446
  %462 = icmp sgt i64 %indvars.iv302.in, 1
  br i1 %462, label %.preheader.us, label %._crit_edge299, !llvm.loop !36

._crit_edge299:                                   ; preds = %..loopexit_crit_edge.us, %.preheader.lr.ph, %436
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %100) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %99) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %94) #12
  br label %608

463:                                              ; preds = %429, %431, %426
  %.pn267.pn = phi { ptr, i32 } [ %.pn267288, %431 ], [ %430, %429 ], [ %427, %426 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %100) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %99) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #12
  br label %464

464:                                              ; preds = %463, %425
  %.pn267.pn.pn = phi { ptr, i32 } [ %.pn267.pn, %463 ], [ %.pn262.pn, %425 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %94) #12
  br label %609

465:                                              ; preds = %278
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %103) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %102, ptr noundef nonnull @.str.26, ptr noundef nonnull align 1 dereferenceable(1) %103)
          to label %466 unwind label %502

466:                                              ; preds = %465
  %467 = invoke noundef float @_ZN5clnet8optionalIfEET_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES1_(ptr noundef nonnull %102, float noundef 0x3F7A36E2E0000000)
          to label %468 unwind label %504

468:                                              ; preds = %466
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %103) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %105) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef nonnull @.str.27, ptr noundef nonnull align 1 dereferenceable(1) %105)
          to label %469 unwind label %507

469:                                              ; preds = %468
  %470 = invoke noundef float @_ZN5clnet8optionalIfEET_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES1_(ptr noundef nonnull %104, float noundef 0.000000e+00)
          to label %471 unwind label %509

471:                                              ; preds = %469
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %105) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %107) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %106, ptr noundef nonnull @.str.28, ptr noundef nonnull align 1 dereferenceable(1) %107)
          to label %472 unwind label %512

472:                                              ; preds = %471
  %473 = invoke noundef i32 @_ZN5clnet8optionalIiEET_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES1_(ptr noundef nonnull %106, i32 noundef 5000)
          to label %474 unwind label %514

474:                                              ; preds = %472
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %107) #12
  %475 = invoke noalias noundef nonnull dereferenceable(144) ptr @_Znwm(i64 noundef 144) #13
          to label %476 unwind label %517

476:                                              ; preds = %474
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %109) #12
  %477 = sext i32 %.091 to i64
  store i64 %477, ptr %109, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %110) #12
  call void @_ZNSaIxEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #12
  invoke void @_ZNSt6vectorIxSaIxEEC2ESt16initializer_listIxERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %108, ptr nonnull %109, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %110)
          to label %478 unwind label %519

478:                                              ; preds = %476
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %111, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %111) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %113) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %113) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %112, ptr noundef nonnull @.str.29, ptr noundef nonnull align 1 dereferenceable(1) %113)
          to label %479 unwind label %521

479:                                              ; preds = %478
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %114, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %114) #12
  invoke void @_ZN5clnet6TensorC1ESt6vectorIxSaIxEES1_IPS0_SaIS4_EENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_(ptr noundef nonnull align 8 dereferenceable(144) %475, ptr noundef nonnull %108, ptr noundef nonnull %111, ptr noundef nonnull %112, ptr noundef nonnull %114)
          to label %480 unwind label %523

480:                                              ; preds = %479
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %114) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %113) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %113) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %111) #12
  call void @_ZNSt6vectorIxSaIxEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %108) #12
  call void @_ZNSt15__new_allocatorIxED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %110) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %109) #12
  invoke void @_ZN5clnet6Tensor12dependent_onEPS0_(ptr noundef nonnull align 8 dereferenceable(144) %475, ptr noundef %.093)
          to label %481 unwind label %517

481:                                              ; preds = %480
  %482 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet16CrossEntropyLossERNS_6TensorES1_(ptr noundef nonnull align 8 dereferenceable(144) %274, ptr noundef nonnull align 8 dereferenceable(144) %475)
          to label %483 unwind label %527

483:                                              ; preds = %481
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %116) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %115, ptr noundef nonnull @.str.30, ptr noundef nonnull align 1 dereferenceable(1) %116)
          to label %484 unwind label %529

484:                                              ; preds = %483
  %485 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet32StochasticGradientDescentUpdaterERNS_6TensorEfffNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(144) %482, float noundef %467, float noundef %470, float noundef 0.000000e+00, ptr noundef nonnull %115)
          to label %486 unwind label %531

486:                                              ; preds = %484
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %116) #12
  %487 = getelementptr inbounds i8, ptr %485, i64 88
  invoke void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(24) %117, ptr noundef nonnull align 8 dereferenceable(24) %487)
          to label %488 unwind label %534

488:                                              ; preds = %486
  %489 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet18GeneralInitializerESt6vectorIPNS_6TensorESaIS2_EEff(ptr noundef nonnull %117, float noundef 0.000000e+00, float noundef 1.000000e+00)
          to label %490 unwind label %536

490:                                              ; preds = %488
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %117) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %118) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %118) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %119) #12
  %491 = call ptr @_ZNSt6vectorIPN5clnet6TensorESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZN5clnet6Tensor3ALLE) #12
  store ptr %491, ptr %119, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %120) #12
  %492 = call ptr @_ZNSt6vectorIPN5clnet6TensorESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZN5clnet6Tensor3ALLE) #12
  store ptr %492, ptr %120, align 8
  %493 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN5clnet6TensorESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %119, ptr noundef nonnull align 8 dereferenceable(8) %120) #12
  br i1 %493, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %.thread291, %490
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %120) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %119) #12
  %494 = getelementptr inbounds i8, ptr %.093, i64 88
  %495 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %494, i64 noundef 0) #12
  %496 = load ptr, ptr %495, align 8, !tbaa !11
  %497 = getelementptr inbounds i8, ptr %496, i64 8
  %498 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIxSaIxEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %497, i64 noundef 0) #12
  %499 = load i64, ptr %498, align 8, !tbaa !9
  %500 = trunc i64 %499 to i32
  %501 = invoke noalias noundef nonnull dereferenceable(312) ptr @_Znwm(i64 noundef 312) #13
          to label %548 unwind label %574

502:                                              ; preds = %465
  %503 = landingpad { ptr, i32 }
          cleanup
  br label %506

504:                                              ; preds = %466
  %505 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #12
  br label %506

506:                                              ; preds = %504, %502
  %.pn220 = phi { ptr, i32 } [ %505, %504 ], [ %503, %502 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %103) #12
  br label %609

507:                                              ; preds = %468
  %508 = landingpad { ptr, i32 }
          cleanup
  br label %511

509:                                              ; preds = %469
  %510 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #12
  br label %511

511:                                              ; preds = %509, %507
  %.pn222 = phi { ptr, i32 } [ %510, %509 ], [ %508, %507 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %105) #12
  br label %609

512:                                              ; preds = %471
  %513 = landingpad { ptr, i32 }
          cleanup
  br label %516

514:                                              ; preds = %472
  %515 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #12
  br label %516

516:                                              ; preds = %514, %512
  %.pn224 = phi { ptr, i32 } [ %515, %514 ], [ %513, %512 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %107) #12
  br label %609

517:                                              ; preds = %480, %474
  %518 = landingpad { ptr, i32 }
          cleanup
  br label %609

519:                                              ; preds = %476
  %520 = landingpad { ptr, i32 }
          cleanup
  br label %526

521:                                              ; preds = %478
  %522 = landingpad { ptr, i32 }
          cleanup
  br label %525

523:                                              ; preds = %479
  %524 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %114) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #12
  br label %525

525:                                              ; preds = %523, %521
  %.pn226 = phi { ptr, i32 } [ %524, %523 ], [ %522, %521 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %113) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %113) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %111) #12
  call void @_ZNSt6vectorIxSaIxEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %108) #12
  br label %526

526:                                              ; preds = %525, %519
  %.pn226.pn = phi { ptr, i32 } [ %.pn226, %525 ], [ %520, %519 ]
  call void @_ZNSt15__new_allocatorIxED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %110) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %110) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %109) #12
  call void @_ZdlPvm(ptr noundef nonnull %475, i64 noundef 144) #14
  br label %609

527:                                              ; preds = %481
  %528 = landingpad { ptr, i32 }
          cleanup
  br label %609

529:                                              ; preds = %483
  %530 = landingpad { ptr, i32 }
          cleanup
  br label %533

531:                                              ; preds = %484
  %532 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #12
  br label %533

533:                                              ; preds = %531, %529
  %.pn229 = phi { ptr, i32 } [ %532, %531 ], [ %530, %529 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %116) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %116) #12
  br label %609

534:                                              ; preds = %486
  %535 = landingpad { ptr, i32 }
          cleanup
  br label %609

536:                                              ; preds = %488
  %537 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %117) #12
  br label %609

.lr.ph:                                           ; preds = %490, %.thread291
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %121) #12
  %538 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN5clnet6TensorESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %119) #12
  %539 = load ptr, ptr %538, align 8, !tbaa !11
  store ptr %539, ptr %121, align 8, !tbaa !11
  %540 = icmp eq ptr %539, null
  br i1 %540, label %.thread291, label %541

541:                                              ; preds = %.lr.ph
  %542 = call ptr @__dynamic_cast(ptr nonnull %539, ptr nonnull @_ZTIN5clnet6TensorE, ptr nonnull @_ZTIN5clnet4type9ParameterE, i64 0) #12
  %.not = icmp eq ptr %542, null
  br i1 %.not, label %.thread291, label %543

543:                                              ; preds = %541
  invoke void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %118, ptr noundef nonnull align 8 dereferenceable(8) %121)
          to label %.thread291 unwind label %544

544:                                              ; preds = %543
  %545 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %121) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %120) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %119) #12
  br label %607

.thread291:                                       ; preds = %.lr.ph, %543, %541
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %121) #12
  %546 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN5clnet6TensorESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %119) #12
  %547 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN5clnet6TensorESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %119, ptr noundef nonnull align 8 dereferenceable(8) %120) #12
  br i1 %547, label %.lr.ph, label %._crit_edge

548:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %123) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %123) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %122, ptr noundef nonnull @.str.31, ptr noundef nonnull align 1 dereferenceable(1) %123)
          to label %549 unwind label %576

549:                                              ; preds = %548
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %124, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %124) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %125, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %125) #12
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %127) #12
  store i32 %.091, ptr %127, align 8, !tbaa !37
  %550 = getelementptr inbounds i8, ptr %127, i64 4
  store i32 %500, ptr %550, align 4, !tbaa !39
  %551 = getelementptr inbounds i8, ptr %127, i64 8
  store ptr %482, ptr %551, align 8, !tbaa !11
  %552 = getelementptr inbounds i8, ptr %127, i64 16
  invoke void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(24) %552, ptr noundef nonnull align 8 dereferenceable(24) %118)
          to label %553 unwind label %578

553:                                              ; preds = %549
  %554 = getelementptr inbounds i8, ptr %127, i64 40
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %554, ptr noundef nonnull align 8 dereferenceable(32) %59)
          to label %555 unwind label %580

555:                                              ; preds = %553
  invoke void @"_ZNSt8functionIFvPN5clnet13InstantTensorERNS0_14DeviceInstanceEEEC2IZ9MNIST_CNNbE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %126, ptr noundef nonnull align 8 dereferenceable(72) %127)
          to label %556 unwind label %582

556:                                              ; preds = %555
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %129) #12
  call void @_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN5clnet13InstantTensorERNS6_14DeviceInstanceEEEC2IZNS7_C1ES5_St6vectorIPNS6_6TensorESaISG_EESI_S_IFvS8_SA_EESC_S_IFSG_S8_SG_EEEd0_UlS8_SA_E_vEEOT_(ptr noundef nonnull align 8 dereferenceable(32) %128, ptr noundef nonnull align 1 dereferenceable(1) %129) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %131) #12
  call void @_ZNSt8functionIFPN5clnet6TensorEPNS0_13InstantTensorES2_EEC2IZNS3_C1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS2_SaIS2_EESG_S_IFvS4_RNS0_14DeviceInstanceEEES_IFSD_S4_SI_EES6_Ed_UlS4_S2_E_vEEOT_(ptr noundef nonnull align 8 dereferenceable(32) %130, ptr noundef nonnull align 1 dereferenceable(1) %131) #12
  invoke void @_ZN5clnet13InstantTensorC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPNS_6TensorESaIS9_EESB_St8functionIFvPS0_RNS_14DeviceInstanceEEESC_IFS6_SD_SF_EESC_IFS9_SD_S9_EE(ptr noundef nonnull align 8 dereferenceable(312) %501, ptr noundef nonnull %122, ptr noundef nonnull %124, ptr noundef nonnull %125, ptr noundef nonnull %126, ptr noundef nonnull %128, ptr noundef nonnull %130)
          to label %557 unwind label %584

557:                                              ; preds = %556
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %131) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %129) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %126) #12
  call void @"_ZZ9MNIST_CNNbEN3$_3D2Ev"(ptr noundef nonnull align 8 dereferenceable(72) %127) #12
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %127) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %125) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %124) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %123) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %123) #12
  %558 = invoke noalias noundef nonnull dereferenceable(312) ptr @_Znwm(i64 noundef 312) #13
          to label %559 unwind label %589

559:                                              ; preds = %557
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %133) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %133) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %132, ptr noundef nonnull @.str.32, ptr noundef nonnull align 1 dereferenceable(1) %133)
          to label %560 unwind label %591

560:                                              ; preds = %559
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %134, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %134) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %136) #12
  store ptr %.093, ptr %136, align 8, !tbaa !40
  %561 = getelementptr inbounds i8, ptr %136, i64 8
  store i32 10, ptr %561, align 8, !tbaa !42
  %562 = getelementptr inbounds i8, ptr %136, i64 16
  store ptr %274, ptr %562, align 8, !tbaa !11
  %563 = getelementptr inbounds i8, ptr %136, i64 24
  store ptr %475, ptr %563, align 8, !tbaa !11
  invoke void @"_ZNSt8functionIFvPN5clnet13InstantTensorERNS0_14DeviceInstanceEEEC2IZ9MNIST_CNNbE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %135, ptr noundef nonnull align 8 dereferenceable(32) %136)
          to label %564 unwind label %593

564:                                              ; preds = %560
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %137, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %137) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %139) #12
  store ptr %274, ptr %139, align 8, !tbaa !11
  call void @"_ZNSt8functionIFPN5clnet6TensorEPNS0_13InstantTensorEEEC2IZ9MNIST_CNNbE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %138, ptr noundef nonnull align 8 dereferenceable(8) %139) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %141) #12
  call void @_ZNSt8functionIFSt6vectorIPN5clnet6TensorESaIS3_EEPNS1_13InstantTensorEEEC2IZNS6_C1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_S_IFvS7_RNS1_14DeviceInstanceEEES5_S_IFS3_S7_EES9_S_IFSG_S7_SI_EES_IFS3_S7_S3_EEEd1_UlS7_E_vEEOT_(ptr noundef nonnull align 8 dereferenceable(32) %140, ptr noundef nonnull align 1 dereferenceable(1) %141) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %143) #12
  call void @_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN5clnet13InstantTensorERNS6_14DeviceInstanceEEEC2IZNS7_C1ES5_St6vectorIPNS6_6TensorESaISG_EES_IFvS8_SA_EESI_S_IFSG_S8_EES_IFSI_S8_EESC_S_IFSG_S8_SG_EEEd0_UlS8_SA_E_vEEOT_(ptr noundef nonnull align 8 dereferenceable(32) %142, ptr noundef nonnull align 1 dereferenceable(1) %143) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %145) #12
  call void @_ZNSt8functionIFPN5clnet6TensorEPNS0_13InstantTensorES2_EEC2IZNS3_C1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS2_SaIS2_EES_IFvS4_RNS0_14DeviceInstanceEEESG_S_IFS2_S4_EES_IFSG_S4_EES_IFSD_S4_SI_EES6_Ed_UlS4_S2_E_vEEOT_(ptr noundef nonnull align 8 dereferenceable(32) %144, ptr noundef nonnull align 1 dereferenceable(1) %145) #12
  invoke void @_ZN5clnet13InstantTensorC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPNS_6TensorESaIS9_EESt8functionIFvPS0_RNS_14DeviceInstanceEEESB_SC_IFS9_SD_EESC_IFSB_SD_EESC_IFS6_SD_SF_EESC_IFS9_SD_S9_EE(ptr noundef nonnull align 8 dereferenceable(312) %558, ptr noundef nonnull %132, ptr noundef nonnull %134, ptr noundef nonnull %135, ptr noundef nonnull %137, ptr noundef nonnull %138, ptr noundef nonnull %140, ptr noundef nonnull %142, ptr noundef nonnull %144)
          to label %565 unwind label %595

565:                                              ; preds = %564
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %144) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %145) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %142) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %143) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %141) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %139) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %137) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %135) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %136) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %134) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %132) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %133) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %133) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %147) #12
  store ptr %489, ptr %147, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %148) #12
  call void @_ZNSaIPN5clnet6TensorEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %148) #12
  invoke void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %146, ptr nonnull %147, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %148)
          to label %566 unwind label %599

566:                                              ; preds = %565
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %150) #12
  store ptr %485, ptr %150, align 8, !tbaa !11
  %567 = getelementptr inbounds i8, ptr %150, i64 8
  store ptr %.093, ptr %567, align 8, !tbaa !11
  %568 = getelementptr inbounds i8, ptr %150, i64 16
  store ptr %501, ptr %568, align 8, !tbaa !11
  %569 = getelementptr inbounds i8, ptr %150, i64 24
  store ptr %558, ptr %569, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %151) #12
  call void @_ZNSaIPN5clnet6TensorEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %151) #12
  invoke void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EEC2ESt16initializer_listIS2_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %149, ptr nonnull %150, i64 4, ptr noundef nonnull align 1 dereferenceable(1) %151)
          to label %570 unwind label %601

570:                                              ; preds = %566
  %571 = sext i32 %473 to i64
  %572 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet18IterativeOptimizerESt6vectorIPNS_6TensorESaIS2_EES4_m(ptr noundef nonnull %146, ptr noundef nonnull %149, i64 noundef %571)
          to label %573 unwind label %603

573:                                              ; preds = %570
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %149) #12
  call void @_ZNSt15__new_allocatorIPN5clnet6TensorEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %151) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %151) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %150) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %146) #12
  call void @_ZNSt15__new_allocatorIPN5clnet6TensorEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %148) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %148) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %147) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %118) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %118) #12
  br label %608

574:                                              ; preds = %._crit_edge
  %575 = landingpad { ptr, i32 }
          cleanup
  br label %607

576:                                              ; preds = %548
  %577 = landingpad { ptr, i32 }
          cleanup
  br label %588

578:                                              ; preds = %549
  %579 = landingpad { ptr, i32 }
          cleanup
  br label %587

580:                                              ; preds = %553
  %581 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %552) #12
  br label %587

582:                                              ; preds = %555
  %583 = landingpad { ptr, i32 }
          cleanup
  br label %586

584:                                              ; preds = %556
  %585 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %131) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %129) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %126) #12
  br label %586

586:                                              ; preds = %584, %582
  %.pn231 = phi { ptr, i32 } [ %585, %584 ], [ %583, %582 ]
  call void @"_ZZ9MNIST_CNNbEN3$_3D2Ev"(ptr noundef nonnull align 8 dereferenceable(72) %127) #12
  br label %587

587:                                              ; preds = %586, %580, %578
  %.pn231.pn = phi { ptr, i32 } [ %.pn231, %586 ], [ %581, %580 ], [ %579, %578 ]
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %127) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %125) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %124) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #12
  br label %588

588:                                              ; preds = %587, %576
  %.pn231.pn.pn = phi { ptr, i32 } [ %.pn231.pn, %587 ], [ %577, %576 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %123) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %123) #12
  call void @_ZdlPvm(ptr noundef nonnull %501, i64 noundef 312) #14
  br label %607

589:                                              ; preds = %557
  %590 = landingpad { ptr, i32 }
          cleanup
  br label %607

591:                                              ; preds = %559
  %592 = landingpad { ptr, i32 }
          cleanup
  br label %598

593:                                              ; preds = %560
  %594 = landingpad { ptr, i32 }
          cleanup
  br label %597

595:                                              ; preds = %564
  %596 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %144) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %145) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %142) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %143) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %141) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %139) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %137) #12
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %135) #12
  br label %597

597:                                              ; preds = %595, %593
  %.pn235 = phi { ptr, i32 } [ %596, %595 ], [ %594, %593 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %136) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %134) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %132) #12
  br label %598

598:                                              ; preds = %597, %591
  %.pn235.pn = phi { ptr, i32 } [ %.pn235, %597 ], [ %592, %591 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %133) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %133) #12
  call void @_ZdlPvm(ptr noundef nonnull %558, i64 noundef 312) #14
  br label %607

599:                                              ; preds = %565
  %600 = landingpad { ptr, i32 }
          cleanup
  br label %606

601:                                              ; preds = %566
  %602 = landingpad { ptr, i32 }
          cleanup
  br label %605

603:                                              ; preds = %570
  %604 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %149) #12
  br label %605

605:                                              ; preds = %603, %601
  %.pn238 = phi { ptr, i32 } [ %604, %603 ], [ %602, %601 ]
  call void @_ZNSt15__new_allocatorIPN5clnet6TensorEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %151) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %151) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %150) #12
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %146) #12
  br label %606

606:                                              ; preds = %605, %599
  %.pn238.pn = phi { ptr, i32 } [ %.pn238, %605 ], [ %600, %599 ]
  call void @_ZNSt15__new_allocatorIPN5clnet6TensorEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %148) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %148) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %147) #12
  br label %607

607:                                              ; preds = %574, %588, %598, %606, %589, %544
  %.pn243 = phi { ptr, i32 } [ %545, %544 ], [ %.pn231.pn.pn, %588 ], [ %575, %574 ], [ %.pn238.pn, %606 ], [ %.pn235.pn, %598 ], [ %590, %589 ]
  call void @_ZNSt6vectorIPN5clnet6TensorESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %118) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %118) #12
  br label %609

608:                                              ; preds = %573, %._crit_edge299
  %.0 = phi ptr [ %289, %._crit_edge299 ], [ %572, %573 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #12
  ret ptr %.0

609:                                              ; preds = %506, %516, %527, %534, %536, %607, %533, %526, %517, %511, %387, %399, %405, %464, %417, %404
  %.pn267.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn252.pn.pn, %399 ], [ %388, %387 ], [ %.pn256, %404 ], [ %.pn267.pn.pn, %464 ], [ %.pn258.pn.pn, %417 ], [ %406, %405 ], [ %.pn220, %506 ], [ %.pn222, %511 ], [ %.pn224, %516 ], [ %518, %517 ], [ %.pn226.pn, %526 ], [ %528, %527 ], [ %.pn229, %533 ], [ %.pn243, %607 ], [ %537, %536 ], [ %535, %534 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #12
  br label %610

610:                                              ; preds = %609, %386
  %.pn267.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn267.pn.pn.pn.pn.pn.pn, %609 ], [ %.pn217.pn, %386 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #12
  br label %611

611:                                              ; preds = %337, %355, %364, %370, %610, %378, %363, %344, %338, %326, %320
  %.pn267.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn197, %326 ], [ %321, %320 ], [ %.pn199.pn.pn, %337 ], [ %.pn203, %344 ], [ %339, %338 ], [ %.pn205.pn.pn, %355 ], [ %.pn209.pn, %363 ], [ %.pn212, %370 ], [ %365, %364 ], [ %.pn267.pn.pn.pn.pn.pn.pn.pn, %610 ], [ %.pn214.pn, %378 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #12
  br label %612

612:                                              ; preds = %611, %318
  %.pn267.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn267.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %611 ], [ %319, %318 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #12
  br label %613

613:                                              ; preds = %612, %316
  %.pn267.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn267.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %612 ], [ %317, %316 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #12
  br label %614

614:                                              ; preds = %613, %233, %202, %164
  %.pn267.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn267.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %613 ], [ %.pn194.pn, %164 ], [ %.pn189.pn.pn.pn, %233 ], [ %.pn, %202 ]
  resume { ptr, i32 } %.pn267.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn

615:                                              ; preds = %315
  unreachable
}

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

declare noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet4DataESt6vectorIxSaIxEEPNS_6TensorENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

declare noundef i32 @_ZN5clnet8optionalIiEET_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES1_(ptr noundef, i32 noundef) local_unnamed_addr #2

declare void @_ZN5clnet8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEET_S6_S7_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN18MNISTImageIteratorC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(168), ptr noundef, i32 noundef) unnamed_addr #0 align 2

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #6

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

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

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

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

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

declare void @_ZN5clnet6TensorC1ESt6vectorIxSaIxEES1_IPS0_SaIS4_EENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef, ptr noundef, ptr noundef, ptr noundef) unnamed_addr #2

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

declare void @_ZN5clnet6Tensor12dependent_onEPS0_(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef) local_unnamed_addr #2

declare noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet16ConvolutionLayerERNS_6TensorEiiiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbbS7_(ptr noundef nonnull align 8 dereferenceable(144), i32 noundef, i32 noundef, i32 noundef, ptr noundef, i1 noundef zeroext, i1 noundef zeroext, ptr noundef) local_unnamed_addr #2

declare noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet7PoolingERNS_6TensorESt6vectorIiSaIiEES4_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbSA_(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef, ptr noundef, ptr noundef, i1 noundef zeroext, ptr noundef) local_unnamed_addr #2

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

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

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

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

declare noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet7ReshapeERNS_6TensorESt6vectorIxSaIxEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef, ptr noundef) local_unnamed_addr #2

declare noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet19FullyConnectedLayerERNS_6TensorEiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_(ptr noundef nonnull align 8 dereferenceable(144), i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @"_ZZ9MNIST_CNNbEN3$_0D2Ev"(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #8 align 2

declare noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet7SoftmaxERNS_6TensorENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

declare noundef ptr @_Z15read_24bits_bmpPKcPiS1_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

; 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 #0

declare void @_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #9

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #10

declare noundef float @_ZN5clnet8optionalIfEET_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES1_(ptr noundef, float noundef) local_unnamed_addr #2

declare noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet16CrossEntropyLossERNS_6TensorES1_(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #2

declare noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet32StochasticGradientDescentUpdaterERNS_6TensorEfffNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(144), float noundef, float noundef, float noundef, ptr noundef) local_unnamed_addr #2

declare noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet18GeneralInitializerESt6vectorIPNS_6TensorESaIS2_EEff(ptr noundef, float noundef, float noundef) local_unnamed_addr #2

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

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

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(read)
declare ptr @__dynamic_cast(ptr, ptr, ptr, i64) local_unnamed_addr #11

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNSt8functionIFvPN5clnet13InstantTensorERNS0_14DeviceInstanceEEEC2IZ9MNIST_CNNbE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @"_ZZ9MNIST_CNNbEN3$_3D2Ev"(ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #8 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFPN5clnet6TensorEPNS0_13InstantTensorEEEC2IZ9MNIST_CNNbE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4 align 2

declare noundef nonnull align 8 dereferenceable(144) ptr @_ZN5clnet18IterativeOptimizerESt6vectorIPNS_6TensorESaIS2_EES4_m(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

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

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

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

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

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

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

!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 = !{i64 0, i64 32, !6}
!6 = !{!7, !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"any pointer", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{!16, !10, i64 136}
!16 = !{!"_ZTSN5clnet6TensorE", !17, i64 8, !21, i64 32, !25, i64 56, !21, i64 88, !10, i64 112, !12, i64 120, !12, i64 128, !10, i64 136}
!17 = !{!"_ZTSSt6vectorIxSaIxEE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIxSaIxEE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIxSaIxEE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIxSaIxEE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!21 = !{!"_ZTSSt6vectorIPN5clnet6TensorESaIS2_EE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseIPN5clnet6TensorESaIS2_EE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIPN5clnet6TensorESaIS2_EE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIPN5clnet6TensorESaIS2_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!25 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !26, i64 0, !27, i64 8, !7, i64 16}
!26 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !12, i64 0}
!27 = !{!"long", !7, i64 0}
!28 = !{!29, !29, i64 0}
!29 = !{!"vtable pointer", !8, i64 0}
!30 = !{!16, !12, i64 120}
!31 = !{!32, !32, i64 0}
!32 = !{!"float", !7, i64 0}
!33 = distinct !{!33, !34, !35}
!34 = !{!"llvm.loop.mustprogress"}
!35 = !{!"llvm.loop.isvectorized", i32 1}
!36 = distinct !{!36, !34}
!37 = !{!38, !14, i64 0}
!38 = !{!"_ZTSZ9MNIST_CNNbE3$_3", !14, i64 0, !14, i64 4, !12, i64 8, !21, i64 16, !25, i64 40}
!39 = !{!38, !14, i64 4}
!40 = !{!41, !12, i64 0}
!41 = !{!"_ZTSZ9MNIST_CNNbE3$_4", !12, i64 0, !14, i64 8, !12, i64 16, !12, i64 24}
!42 = !{!41, !14, i64 8}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,ReassociatePass,SROAPass,SimplifyCFGPass