; LLVM IR from NVIDIA/DALI :: dali/operators/reader/loader (numpy_loader)

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::optional.28" = type { %"struct.std::_Optional_base.29" }
%"struct.std::_Optional_base.29" = type { %"struct.std::_Optional_payload.31" }
%"struct.std::_Optional_payload.31" = type { %"struct.std::_Optional_payload_base.base.33", [7 x i8] }
%"struct.std::_Optional_payload_base.base.33" = type <{ %"union.std::_Optional_payload_base<unsigned long>::_Storage", i8 }>
%"union.std::_Optional_payload_base<unsigned long>::_Storage" = type { i64 }
%"class.dali::DALIMeta" = type <{ %"class.dali::TensorLayout", %"class.std::__cxx11::basic_string", i8, [7 x i8] }>
%"class.dali::TensorLayout" = type { [16 x i8] }
%"class.dali::AccessOrder" = type <{ ptr, i32, [4 x i8] }>
%"struct.dali::TensorShape" = type { %"struct.dali::TensorShapeBase" }
%"struct.dali::TensorShapeBase" = type { %"class.dali::SmallVector" }
%"class.dali::SmallVector" = type { %union.anon.6, i64 }
%union.anon.6 = type { %struct.anon, [32 x i8] }
%struct.anon = type { ptr, i64 }
%"struct.dali::FileStream::Options" = type { i8, i8, i8 }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.40" }
%"struct.std::_Head_base.40" = type { ptr }
%"class.dali::numpy::HeaderData" = type { %"struct.dali::TensorShape", ptr, i8, i64 }
%"class.std::allocator.0" = type { i8 }
%"class.std::shared_ptr.36" = type { %"class.std::__shared_ptr.37" }
%"class.std::__shared_ptr.37" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.dali::CUDASharedEvent" = type { %"class.std::shared_ptr.36" }
%"class.dali::FileLoader" = type { %"class.dali::Loader", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"struct.dali::FileDiscoveryOptions", %"class.std::vector.23", %"class.std::vector.23", i8, i8, i8, i8, i64, i32, %"class.dali::FileStream::MappingReserver" }
%"class.dali::Loader" = type { ptr, %"class.std::vector.7", %"class.std::vector.12", i8, i32, i32, i32, %"class.std::linear_congruential_engine", i64, %"class.std::mutex", i32, i32, i8, i8, i8, i32, i8, %"class.std::mutex", i8, i8, %"class.dali::once_flag", %"class.std::shared_ptr", i64, i8, i8, i8, i32, i32, i32, %"struct.dali::Loader<dali::CPUBackend, dali::NumpyFileWrapper, true>::IndexedLoadTargetSharedPtr", %"class.std::deque", i8, i64, i64, %"struct.dali::LoaderStateSnapshot" }
%"class.std::vector.7" = type { %"struct.std::_Vector_base.8" }
%"struct.std::_Vector_base.8" = type { %"struct.std::_Vector_base<dali::Loader<dali::CPUBackend, dali::NumpyFileWrapper, true>::IndexedLoadTargetSharedPtr, std::allocator<dali::Loader<dali::CPUBackend, dali::NumpyFileWrapper, true>::IndexedLoadTargetSharedPtr>>::_Vector_impl" }
%"struct.std::_Vector_base<dali::Loader<dali::CPUBackend, dali::NumpyFileWrapper, true>::IndexedLoadTargetSharedPtr, std::allocator<dali::Loader<dali::CPUBackend, dali::NumpyFileWrapper, true>::IndexedLoadTargetSharedPtr>>::_Vector_impl" = type { %"struct.std::_Vector_base<dali::Loader<dali::CPUBackend, dali::NumpyFileWrapper, true>::IndexedLoadTargetSharedPtr, std::allocator<dali::Loader<dali::CPUBackend, dali::NumpyFileWrapper, true>::IndexedLoadTargetSharedPtr>>::_Vector_impl_data" }
%"struct.std::_Vector_base<dali::Loader<dali::CPUBackend, dali::NumpyFileWrapper, true>::IndexedLoadTargetSharedPtr, std::allocator<dali::Loader<dali::CPUBackend, dali::NumpyFileWrapper, true>::IndexedLoadTargetSharedPtr>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.12" = type { %"struct.std::_Vector_base.13" }
%"struct.std::_Vector_base.13" = type { %"struct.std::_Vector_base<std::unique_ptr<dali::NumpyFileWrapper>, std::allocator<std::unique_ptr<dali::NumpyFileWrapper>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<dali::NumpyFileWrapper>, std::allocator<std::unique_ptr<dali::NumpyFileWrapper>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<dali::NumpyFileWrapper>, std::allocator<std::unique_ptr<dali::NumpyFileWrapper>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<dali::NumpyFileWrapper>, std::allocator<std::unique_ptr<dali::NumpyFileWrapper>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::linear_congruential_engine" = type { i64 }
%"class.std::mutex" = type { %"class.std::__mutex_base" }
%"class.std::__mutex_base" = type { %union.pthread_mutex_t }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.dali::once_flag" = type { i8, %"class.std::mutex" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"struct.dali::Loader<dali::CPUBackend, dali::NumpyFileWrapper, true>::IndexedLoadTargetSharedPtr" = type { i64, %"class.std::shared_ptr.17" }
%"class.std::shared_ptr.17" = type { %"class.std::__shared_ptr.18" }
%"class.std::__shared_ptr.18" = type { ptr, %"class.std::__shared_count" }
%"class.std::deque" = type { %"class.std::_Deque_base" }
%"class.std::_Deque_base" = type { %"struct.std::_Deque_base<dali::Loader<dali::CPUBackend, dali::NumpyFileWrapper, true>::ShardBoundaries, std::allocator<dali::Loader<dali::CPUBackend, dali::NumpyFileWrapper, true>::ShardBoundaries>>::_Deque_impl" }
%"struct.std::_Deque_base<dali::Loader<dali::CPUBackend, dali::NumpyFileWrapper, true>::ShardBoundaries, std::allocator<dali::Loader<dali::CPUBackend, dali::NumpyFileWrapper, true>::ShardBoundaries>>::_Deque_impl" = type { %"struct.std::_Deque_base<dali::Loader<dali::CPUBackend, dali::NumpyFileWrapper, true>::ShardBoundaries, std::allocator<dali::Loader<dali::CPUBackend, dali::NumpyFileWrapper, true>::ShardBoundaries>>::_Deque_impl_data" }
%"struct.std::_Deque_base<dali::Loader<dali::CPUBackend, dali::NumpyFileWrapper, true>::ShardBoundaries, std::allocator<dali::Loader<dali::CPUBackend, dali::NumpyFileWrapper, true>::ShardBoundaries>>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" }
%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr }
%"struct.dali::LoaderStateSnapshot" = type { %"class.std::linear_congruential_engine", i32, i64 }
%"struct.dali::FileDiscoveryOptions" = type { i8, i8, %"class.std::vector", %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = type { %"struct.std::_Vector_base<dali::FileLabelEntry, std::allocator<dali::FileLabelEntry>>::_Vector_impl" }
%"struct.std::_Vector_base<dali::FileLabelEntry, std::allocator<dali::FileLabelEntry>>::_Vector_impl" = type { %"struct.std::_Vector_base<dali::FileLabelEntry, std::allocator<dali::FileLabelEntry>>::_Vector_impl_data" }
%"struct.std::_Vector_base<dali::FileLabelEntry, std::allocator<dali::FileLabelEntry>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.dali::FileStream::MappingReserver" = type { i32 }
%"struct.dali::FileLabelEntry" = type { %"class.std::__cxx11::basic_string", %"class.std::optional", %"class.std::optional.28" }
%"class.std::optional" = type { %"struct.std::_Optional_base" }
%"struct.std::_Optional_base" = type { %"struct.std::_Optional_payload" }
%"struct.std::_Optional_payload" = type { %"struct.std::_Optional_payload_base.base", [3 x i8] }
%"struct.std::_Optional_payload_base.base" = type <{ %"union.std::_Optional_payload_base<int>::_Storage", i8 }>
%"union.std::_Optional_payload_base<int>::_Storage" = type { i32 }
%"struct.dali::NumpyFileWrapper" = type { %"class.dali::Tensor", %"class.std::__cxx11::basic_string", i64, %"struct.dali::TensorShape", i32, [4 x i8], %"class.dali::DALIMeta", i64, i8, %"class.std::unique_ptr" }
%"class.dali::Tensor" = type { %"class.dali::Buffer.base", %"struct.dali::TensorShape", %"class.dali::DALIMeta", %"class.dali::CUDASharedEvent" }
%"class.dali::Buffer.base" = type <{ ptr, %"class.dali::TypeInfo", %"class.std::shared_ptr.36", %"class.std::function", i64, i64, i32, [4 x i8], %"class.dali::AccessOrder", i8, i8 }>
%"class.dali::TypeInfo" = type { ptr, i32, i64, %"class.std::basic_string_view" }
%"class.std::basic_string_view" = type { i64, ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.dali::NumpyLoader" = type { %"class.dali::FileLoader", %"class.dali::detail::NumpyHeaderCache", i8, i64, i64 }
%"class.dali::detail::NumpyHeaderCache" = type { %"class.std::mutex", i8, %"class.std::map" }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, dali::numpy::HeaderData>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, dali::numpy::HeaderData>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, dali::numpy::HeaderData>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, dali::numpy::HeaderData>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }

@_ZTISt13runtime_error = external constant ptr
@.str.33 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [96 x i8], align 1
@_ZTIN4dali13DALIExceptionE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.35 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [97 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN4dali6detail16NumpyHeaderCache12GetFromCacheERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS_5numpy10HeaderDataE(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(80)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4dali6detail16NumpyHeaderCache11UpdateCacheERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_5numpy10HeaderDataE(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(80)) #2 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4dali11NumpyLoader10ReadSampleERNS_16NumpyFileWrapperE(ptr noundef nonnull align 8 dereferenceable(784) %0, ptr noundef nonnull align 8 dereferenceable(456) %1) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::optional.28", align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca %"class.dali::DALIMeta", align 8
  %11 = alloca %"class.dali::AccessOrder", align 8
  %12 = alloca %"struct.dali::TensorShape", align 8
  %13 = alloca i32, align 4
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"struct.dali::FileStream::Options", align 1
  %16 = alloca %"class.std::unique_ptr", align 8
  %17 = alloca %"struct.dali::FileStream::Options", align 1
  %18 = alloca %"class.std::optional.28", align 8
  %19 = alloca i24, align 4
  %20 = alloca %"class.dali::numpy::HeaderData", align 8
  %21 = alloca i8, align 1
  %22 = alloca ptr, align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca ptr, align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::allocator.0", align 1
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca i1, align 1
  %29 = alloca i64, align 8
  %30 = alloca %"class.std::shared_ptr.36", align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::allocator.0", align 1
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::allocator.0", align 1
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca i1, align 1
  %42 = alloca %"class.std::shared_ptr.36", align 8
  %43 = alloca %"struct.dali::TensorShape", align 8
  %44 = alloca %"class.dali::AccessOrder", align 8
  %45 = alloca %"class.dali::CUDASharedEvent", align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %46 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #10
  %47 = getelementptr inbounds %"class.dali::FileLoader", ptr %46, i32 0, i32 5
  %48 = getelementptr inbounds %"class.dali::FileLoader", ptr %46, i32 0, i32 11
  %49 = load i64, ptr %48, align 8, !tbaa !9
  %50 = add nsw i64 %49, 1
  store i64 %50, ptr %48, align 8, !tbaa !9
  %51 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4dali14FileLabelEntryESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %49) #10
  store ptr %51, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %6) #10
  %52 = load ptr, ptr %5, align 8, !tbaa !5
  %53 = getelementptr inbounds %"struct.dali::FileLabelEntry", ptr %52, i32 0, i32 0
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %53)
  call void @llvm.lifetime.start.p0(i64 16, ptr %7) #10
  %54 = load ptr, ptr %5, align 8, !tbaa !5
  %55 = getelementptr inbounds %"struct.dali::FileLabelEntry", ptr %54, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %7, ptr align 8 %55, i64 16, i1 false)
  %56 = getelementptr inbounds %"class.dali::FileLoader", ptr %46, i32 0, i32 11
  %57 = load i64, ptr %56, align 8, !tbaa !9
  %58 = load ptr, ptr %46, align 8, !tbaa !51
  %59 = getelementptr inbounds ptr, ptr %58, i64 7
  %60 = load ptr, ptr %59, align 8
  invoke void %60(ptr noundef nonnull align 8 dereferenceable(440) %46, i64 noundef %57)
          to label %61 unwind label %85

61:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 56, ptr %10) #10
  invoke void @_ZN4dali8DALIMetaC2Ev(ptr noundef nonnull align 8 dereferenceable(49) %10)
          to label %62 unwind label %89

62:                                               ; preds = %61
  invoke void @_ZN4dali8DALIMeta13SetSourceInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(49) %10, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %63 unwind label %93

63:                                               ; preds = %62
  invoke void @_ZN4dali8DALIMeta13SetSkipSampleEb(ptr noundef nonnull align 8 dereferenceable(49) %10, i1 noundef zeroext false)
          to label %64 unwind label %93

64:                                               ; preds = %63
  %65 = invoke noundef zeroext i1 @_ZN4dali6LoaderINS_10CPUBackendENS_16NumpyFileWrapperELb1EE15ShouldSkipImageERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(440) %46, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %66 unwind label %93

66:                                               ; preds = %64
  br i1 %65, label %67, label %106

67:                                               ; preds = %66
  invoke void @_ZN4dali8DALIMeta13SetSkipSampleEb(ptr noundef nonnull align 8 dereferenceable(49) %10, i1 noundef zeroext true)
          to label %68 unwind label %93

68:                                               ; preds = %67
  %69 = load ptr, ptr %4, align 8, !tbaa !5
  %70 = getelementptr inbounds %"struct.dali::NumpyFileWrapper", ptr %69, i32 0, i32 0
  call void @llvm.memset.p0.i64(ptr align 8 %11, i8 0, i64 16, i1 false)
  call void @_ZN4dali11AccessOrderC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %11) #10
  %71 = getelementptr inbounds { ptr, i32 }, ptr %11, i32 0, i32 0
  %72 = load ptr, ptr %71, align 8
  %73 = getelementptr inbounds { ptr, i32 }, ptr %11, i32 0, i32 1
  %74 = load i32, ptr %73, align 8
  invoke void @_ZN4dali6TensorINS_10CPUBackendEE5ResetENS_11AccessOrderE(ptr noundef nonnull align 8 dereferenceable(272) %70, ptr %72, i32 %74)
          to label %75 unwind label %93

75:                                               ; preds = %68
  %76 = load ptr, ptr %4, align 8, !tbaa !5
  %77 = getelementptr inbounds %"struct.dali::NumpyFileWrapper", ptr %76, i32 0, i32 0
  invoke void @_ZN4dali6TensorINS_10CPUBackendEE7SetMetaERKNS_8DALIMetaE(ptr noundef nonnull align 8 dereferenceable(272) %77, ptr noundef nonnull align 8 dereferenceable(49) %10)
          to label %78 unwind label %93

78:                                               ; preds = %75
  %79 = load ptr, ptr %4, align 8, !tbaa !5
  %80 = getelementptr inbounds %"struct.dali::NumpyFileWrapper", ptr %79, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 56, ptr %12) #10
  invoke void @_ZN4dali11TensorShapeILin1EEC2IJEvEElDpT_(ptr noundef nonnull align 8 dereferenceable(56) %12, i64 noundef 0)
          to label %81 unwind label %97

81:                                               ; preds = %78
  invoke void @_ZN4dali6TensorINS_10CPUBackendEE6ResizeERKNS_11TensorShapeILin1EEE13_DALIDataType(ptr noundef nonnull align 8 dereferenceable(272) %80, ptr noundef nonnull align 8 dereferenceable(56) %12, i32 noundef 0)
          to label %82 unwind label %101

82:                                               ; preds = %81
  call void @_ZN4dali15TensorShapeBaseINS_11SmallVectorIlLm6ESaIlEEELin1EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %12) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr %12) #10
  %83 = load ptr, ptr %4, align 8, !tbaa !5
  %84 = getelementptr inbounds %"struct.dali::NumpyFileWrapper", ptr %83, i32 0, i32 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv(ptr noundef nonnull align 8 dereferenceable(32) %84) #10
  store i32 1, ptr %13, align 4
  br label %397

85:                                               ; preds = %2
  %86 = landingpad { ptr, i32 }
          cleanup
  %87 = extractvalue { ptr, i32 } %86, 0
  store ptr %87, ptr %8, align 8
  %88 = extractvalue { ptr, i32 } %86, 1
  store i32 %88, ptr %9, align 4
  br label %407

89:                                               ; preds = %61
  %90 = landingpad { ptr, i32 }
          cleanup
  %91 = extractvalue { ptr, i32 } %90, 0
  store ptr %91, ptr %8, align 8
  %92 = extractvalue { ptr, i32 } %90, 1
  store i32 %92, ptr %9, align 4
  br label %406

93:                                               ; preds = %75, %68, %67, %64, %63, %62
  %94 = landingpad { ptr, i32 }
          cleanup
  %95 = extractvalue { ptr, i32 } %94, 0
  store ptr %95, ptr %8, align 8
  %96 = extractvalue { ptr, i32 } %94, 1
  store i32 %96, ptr %9, align 4
  br label %405

97:                                               ; preds = %78
  %98 = landingpad { ptr, i32 }
          cleanup
  %99 = extractvalue { ptr, i32 } %98, 0
  store ptr %99, ptr %8, align 8
  %100 = extractvalue { ptr, i32 } %98, 1
  store i32 %100, ptr %9, align 4
  br label %105

101:                                              ; preds = %81
  %102 = landingpad { ptr, i32 }
          cleanup
  %103 = extractvalue { ptr, i32 } %102, 0
  store ptr %103, ptr %8, align 8
  %104 = extractvalue { ptr, i32 } %102, 1
  store i32 %104, ptr %9, align 4
  call void @_ZN4dali15TensorShapeBaseINS_11SmallVectorIlLm6ESaIlEEELin1EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %12) #10
  br label %105

105:                                              ; preds = %101, %97
  call void @llvm.lifetime.end.p0(i64 56, ptr %12) #10
  br label %405

106:                                              ; preds = %66
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #10
  %107 = getelementptr inbounds %"class.dali::FileLoader", ptr %46, i32 0, i32 2
  invoke void @_ZN4dali10filesystem9join_pathERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %14, ptr noundef nonnull align 8 dereferenceable(32) %107, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %108 unwind label %149

108:                                              ; preds = %106
  call void @llvm.lifetime.start.p0(i64 3, ptr %15) #10
  %109 = getelementptr inbounds %"class.dali::Loader", ptr %46, i32 0, i32 13
  %110 = load i8, ptr %109, align 1, !tbaa !53, !range !54, !noundef !55
  %111 = trunc i8 %110 to i1
  %112 = getelementptr inbounds %"struct.dali::FileStream::Options", ptr %15, i32 0, i32 0
  %113 = zext i1 %111 to i8
  store i8 %113, ptr %112, align 1, !tbaa !56
  %114 = getelementptr inbounds %"class.dali::Loader", ptr %46, i32 0, i32 12
  %115 = load i8, ptr %114, align 8, !tbaa !58, !range !54, !noundef !55
  %116 = trunc i8 %115 to i1
  %117 = xor i1 %116, true
  %118 = getelementptr inbounds %"struct.dali::FileStream::Options", ptr %15, i32 0, i32 1
  %119 = zext i1 %117 to i8
  store i8 %119, ptr %118, align 1, !tbaa !59
  %120 = getelementptr inbounds %"class.dali::NumpyLoader", ptr %46, i32 0, i32 2
  %121 = load i8, ptr %120, align 8, !tbaa !60, !range !54, !noundef !55
  %122 = trunc i8 %121 to i1
  %123 = getelementptr inbounds %"struct.dali::FileStream::Options", ptr %15, i32 0, i32 2
  %124 = zext i1 %122 to i8
  store i8 %124, ptr %123, align 1, !tbaa !71
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %17, ptr align 1 %15, i64 3, i1 false), !tbaa.struct !72
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %18, ptr align 8 %7, i64 16, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %19, ptr align 1 %17, i64 3, i1 false)
  %125 = load i24, ptr %19, align 4
  %126 = getelementptr inbounds { i64, i8 }, ptr %18, i32 0, i32 0
  %127 = load i64, ptr %126, align 8
  %128 = getelementptr inbounds { i64, i8 }, ptr %18, i32 0, i32 1
  %129 = load i8, ptr %128, align 8
  invoke void @_ZN4dali10FileStream4OpenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS0_7OptionsESt8optionalImE(ptr dead_on_unwind writable sret(%"class.std::unique_ptr") align 8 %16, ptr noundef nonnull align 8 dereferenceable(32) %14, i24 %125, i64 %127, i8 %129)
          to label %130 unwind label %153

130:                                              ; preds = %108
  call void @llvm.lifetime.start.p0(i64 80, ptr %20) #10
  invoke void @_ZN4dali5numpy10HeaderDataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %20)
          to label %131 unwind label %157

131:                                              ; preds = %130
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #10
  %132 = getelementptr inbounds %"class.dali::NumpyLoader", ptr %46, i32 0, i32 1
  %133 = invoke noundef zeroext i1 @_ZN4dali6detail16NumpyHeaderCache12GetFromCacheERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS_5numpy10HeaderDataE(ptr noundef nonnull align 8 dereferenceable(96) %132, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(80) %20)
          to label %134 unwind label %161

134:                                              ; preds = %131
  %135 = zext i1 %133 to i8
  store i8 %135, ptr %21, align 1, !tbaa !73
  %136 = load i8, ptr %21, align 1, !tbaa !73, !range !54, !noundef !55
  %137 = trunc i8 %136 to i1
  br i1 %137, label %192, label %138

138:                                              ; preds = %134
  %139 = getelementptr inbounds %"struct.dali::FileStream::Options", ptr %15, i32 0, i32 2
  %140 = load i8, ptr %139, align 1, !tbaa !71, !range !54, !noundef !55
  %141 = trunc i8 %140 to i1
  br i1 %141, label %142, label %186

142:                                              ; preds = %138
  %143 = call noundef ptr @_ZNKSt10unique_ptrIN4dali10FileStreamESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  %144 = getelementptr inbounds %"class.dali::NumpyLoader", ptr %46, i32 0, i32 3
  %145 = load i64, ptr %144, align 8, !tbaa !74
  %146 = getelementptr inbounds %"class.dali::NumpyLoader", ptr %46, i32 0, i32 4
  %147 = load i64, ptr %146, align 8, !tbaa !75
  invoke void @_ZN4dali5numpy18ParseODirectHeaderERNS0_10HeaderDataEPNS_11InputStreamEmm(ptr noundef nonnull align 8 dereferenceable(80) %20, ptr noundef %143, i64 noundef %145, i64 noundef %147)
          to label %148 unwind label %165

148:                                              ; preds = %142
  br label %189

149:                                              ; preds = %106
  %150 = landingpad { ptr, i32 }
          cleanup
  %151 = extractvalue { ptr, i32 } %150, 0
  store ptr %151, ptr %8, align 8
  %152 = extractvalue { ptr, i32 } %150, 1
  store i32 %152, ptr %9, align 4
  br label %404

153:                                              ; preds = %108
  %154 = landingpad { ptr, i32 }
          cleanup
  %155 = extractvalue { ptr, i32 } %154, 0
  store ptr %155, ptr %8, align 8
  %156 = extractvalue { ptr, i32 } %154, 1
  store i32 %156, ptr %9, align 4
  br label %403

157:                                              ; preds = %130
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %8, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %9, align 4
  br label %402

161:                                              ; preds = %216, %131
  %162 = landingpad { ptr, i32 }
          cleanup
  %163 = extractvalue { ptr, i32 } %162, 0
  store ptr %163, ptr %8, align 8
  %164 = extractvalue { ptr, i32 } %162, 1
  store i32 %164, ptr %9, align 4
  br label %401

165:                                              ; preds = %189, %186, %142
  %166 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt13runtime_error
  %167 = extractvalue { ptr, i32 } %166, 0
  store ptr %167, ptr %8, align 8
  %168 = extractvalue { ptr, i32 } %166, 1
  store i32 %168, ptr %9, align 4
  br label %169

169:                                              ; preds = %165
  %170 = load i32, ptr %9, align 4
  %171 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt13runtime_error) #10
  %172 = icmp eq i32 %170, %171
  br i1 %172, label %173, label %401

173:                                              ; preds = %169
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #10
  %174 = load ptr, ptr %8, align 8
  %175 = call ptr @__cxa_begin_catch(ptr %174) #10
  store ptr %175, ptr %22, align 8
  store i1 true, ptr %28, align 1
  %176 = call ptr @__cxa_allocate_exception(i64 80) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #10
  %177 = load ptr, ptr %22, align 8, !tbaa !5
  %178 = load ptr, ptr %177, align 8, !tbaa !51
  %179 = getelementptr inbounds ptr, ptr %178, i64 2
  %180 = load ptr, ptr %179, align 8
  %181 = call noundef ptr %180(ptr noundef nonnull align 8 dereferenceable(16) %177) #10
  store ptr %181, ptr %24, align 8, !tbaa !5
  invoke void @_ZN4dali11make_stringIJPKcA9_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEES9_DpRKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 1 dereferenceable(9) @.str.33, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %182 unwind label %193

182:                                              ; preds = %173
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.34, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %183 unwind label %197

183:                                              ; preds = %182
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #10
  invoke void @_ZN4dali13GetStacktraceB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %27)
          to label %184 unwind label %201

184:                                              ; preds = %183
  invoke void @_ZN4dali13DALIExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_S8_(ptr noundef nonnull align 8 dereferenceable(80) %176, ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef %25, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %185 unwind label %205

185:                                              ; preds = %184
  store i1 false, ptr %28, align 1
  invoke void @__cxa_throw(ptr %176, ptr @_ZTIN4dali13DALIExceptionE, ptr @_ZN4dali13DALIExceptionD2Ev) #11
          to label %416 unwind label %205

186:                                              ; preds = %138
  %187 = call noundef ptr @_ZNKSt10unique_ptrIN4dali10FileStreamESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  invoke void @_ZN4dali5numpy11ParseHeaderERNS0_10HeaderDataEPNS_11InputStreamE(ptr noundef nonnull align 8 dereferenceable(80) %20, ptr noundef %187)
          to label %188 unwind label %165

188:                                              ; preds = %186
  br label %189

189:                                              ; preds = %188, %148
  %190 = getelementptr inbounds %"class.dali::NumpyLoader", ptr %46, i32 0, i32 1
  invoke void @_ZN4dali6detail16NumpyHeaderCache11UpdateCacheERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_5numpy10HeaderDataE(ptr noundef nonnull align 8 dereferenceable(96) %190, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(80) %20)
          to label %191 unwind label %165

191:                                              ; preds = %189
  br label %192

192:                                              ; preds = %191, %134
  br label %216

193:                                              ; preds = %173
  %194 = landingpad { ptr, i32 }
          cleanup
  %195 = extractvalue { ptr, i32 } %194, 0
  store ptr %195, ptr %8, align 8
  %196 = extractvalue { ptr, i32 } %194, 1
  store i32 %196, ptr %9, align 4
  br label %211

197:                                              ; preds = %182
  %198 = landingpad { ptr, i32 }
          cleanup
  %199 = extractvalue { ptr, i32 } %198, 0
  store ptr %199, ptr %8, align 8
  %200 = extractvalue { ptr, i32 } %198, 1
  store i32 %200, ptr %9, align 4
  br label %210

201:                                              ; preds = %183
  %202 = landingpad { ptr, i32 }
          cleanup
  %203 = extractvalue { ptr, i32 } %202, 0
  store ptr %203, ptr %8, align 8
  %204 = extractvalue { ptr, i32 } %202, 1
  store i32 %204, ptr %9, align 4
  br label %209

205:                                              ; preds = %185, %184
  %206 = landingpad { ptr, i32 }
          cleanup
  %207 = extractvalue { ptr, i32 } %206, 0
  store ptr %207, ptr %8, align 8
  %208 = extractvalue { ptr, i32 } %206, 1
  store i32 %208, ptr %9, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #10
  br label %209

209:                                              ; preds = %205, %201
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #10
  br label %210

210:                                              ; preds = %209, %197
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #10
  br label %211

211:                                              ; preds = %210, %193
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #10
  %212 = load i1, ptr %28, align 1
  br i1 %212, label %213, label %214

213:                                              ; preds = %211
  call void @__cxa_free_exception(ptr %176) #10
  br label %214

214:                                              ; preds = %213, %211
  invoke void @__cxa_end_catch()
          to label %215 unwind label %413

215:                                              ; preds = %214
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  br label %401

216:                                              ; preds = %192
  %217 = call noundef ptr @_ZNKSt10unique_ptrIN4dali10FileStreamESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  %218 = getelementptr inbounds %"class.dali::numpy::HeaderData", ptr %20, i32 0, i32 3
  %219 = load i64, ptr %218, align 8, !tbaa !76
  %220 = load ptr, ptr %217, align 8, !tbaa !51
  %221 = getelementptr inbounds ptr, ptr %220, i64 3
  %222 = load ptr, ptr %221, align 8
  invoke void %222(ptr noundef nonnull align 8 dereferenceable(8) %217, i64 noundef %219, i32 noundef 0)
          to label %223 unwind label %161

223:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #10
  %224 = invoke noundef i64 @_ZNK4dali5numpy10HeaderData6nbytesEv(ptr noundef nonnull align 8 dereferenceable(80) %20)
          to label %225 unwind label %263

225:                                              ; preds = %223
  store i64 %224, ptr %29, align 8, !tbaa !81
  %226 = getelementptr inbounds %"class.dali::numpy::HeaderData", ptr %20, i32 0, i32 0
  %227 = load ptr, ptr %4, align 8, !tbaa !5
  %228 = getelementptr inbounds %"struct.dali::NumpyFileWrapper", ptr %227, i32 0, i32 3
  %229 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN4dali11TensorShapeILin1EEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(56) %228, ptr noundef nonnull align 8 dereferenceable(56) %226)
          to label %230 unwind label %263

230:                                              ; preds = %225
  %231 = invoke noundef i32 @_ZNK4dali5numpy10HeaderData4typeEv(ptr noundef nonnull align 8 dereferenceable(80) %20)
          to label %232 unwind label %263

232:                                              ; preds = %230
  %233 = load ptr, ptr %4, align 8, !tbaa !5
  %234 = getelementptr inbounds %"struct.dali::NumpyFileWrapper", ptr %233, i32 0, i32 4
  store i32 %231, ptr %234, align 8, !tbaa !82
  %235 = load ptr, ptr %4, align 8, !tbaa !5
  %236 = getelementptr inbounds %"struct.dali::NumpyFileWrapper", ptr %235, i32 0, i32 6
  %237 = invoke noundef nonnull align 8 dereferenceable(49) ptr @_ZN4dali8DALIMetaaSERKS0_(ptr noundef nonnull align 8 dereferenceable(49) %236, ptr noundef nonnull align 8 dereferenceable(49) %10)
          to label %238 unwind label %263

238:                                              ; preds = %232
  %239 = getelementptr inbounds %"class.dali::numpy::HeaderData", ptr %20, i32 0, i32 3
  %240 = load i64, ptr %239, align 8, !tbaa !76
  %241 = load ptr, ptr %4, align 8, !tbaa !5
  %242 = getelementptr inbounds %"struct.dali::NumpyFileWrapper", ptr %241, i32 0, i32 2
  store i64 %240, ptr %242, align 8, !tbaa !103
  %243 = load i64, ptr %29, align 8, !tbaa !81
  %244 = load ptr, ptr %4, align 8, !tbaa !5
  %245 = getelementptr inbounds %"struct.dali::NumpyFileWrapper", ptr %244, i32 0, i32 7
  store i64 %243, ptr %245, align 8, !tbaa !104
  %246 = load ptr, ptr %4, align 8, !tbaa !5
  %247 = getelementptr inbounds %"struct.dali::NumpyFileWrapper", ptr %246, i32 0, i32 1
  %248 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %247, ptr noundef nonnull align 8 dereferenceable(32) %14) #10
  %249 = getelementptr inbounds %"struct.dali::FileStream::Options", ptr %15, i32 0, i32 1
  %250 = load i8, ptr %249, align 1, !tbaa !59, !range !54, !noundef !55
  %251 = trunc i8 %250 to i1
  br i1 %251, label %252, label %259

252:                                              ; preds = %238
  %253 = call noundef ptr @_ZNKSt10unique_ptrIN4dali10FileStreamESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  %254 = load ptr, ptr %253, align 8, !tbaa !51
  %255 = getelementptr inbounds ptr, ptr %254, i64 7
  %256 = load ptr, ptr %255, align 8
  %257 = invoke noundef zeroext i1 %256(ptr noundef nonnull align 8 dereferenceable(40) %253)
          to label %258 unwind label %263

258:                                              ; preds = %252
  br i1 %257, label %267, label %259

259:                                              ; preds = %258, %238
  %260 = load ptr, ptr %4, align 8, !tbaa !5
  %261 = getelementptr inbounds %"struct.dali::NumpyFileWrapper", ptr %260, i32 0, i32 9
  %262 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrIN4dali10FileStreamESt14default_deleteIS1_EEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(8) %261, ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  br label %387

263:                                              ; preds = %387, %252, %232, %230, %225, %223
  %264 = landingpad { ptr, i32 }
          cleanup
  %265 = extractvalue { ptr, i32 } %264, 0
  store ptr %265, ptr %8, align 8
  %266 = extractvalue { ptr, i32 } %264, 1
  store i32 %266, ptr %9, align 4
  br label %400

267:                                              ; preds = %258
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #10
  %268 = call noundef ptr @_ZNKSt10unique_ptrIN4dali10FileStreamESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  %269 = load i64, ptr %29, align 8, !tbaa !81
  %270 = load ptr, ptr %268, align 8, !tbaa !51
  %271 = getelementptr inbounds ptr, ptr %270, i64 8
  %272 = load ptr, ptr %271, align 8
  invoke void %272(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.36") align 8 %30, ptr noundef nonnull align 8 dereferenceable(40) %268, i64 noundef %269)
          to label %273 unwind label %289

273:                                              ; preds = %267
  br label %274

274:                                              ; preds = %273
  %275 = call noundef zeroext i1 @_ZStneIvEbRKSt10shared_ptrIT_EDn(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr null) #10
  br i1 %275, label %345, label %276

276:                                              ; preds = %274
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %277 unwind label %293

277:                                              ; preds = %276
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %32, ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef @.str.36)
          to label %278 unwind label %297

278:                                              ; preds = %277
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %31, ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef @.str.37)
          to label %279 unwind label %301

279:                                              ; preds = %278
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #10
  invoke void @_ZN4dali11make_stringIJA22_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEES7_DpRKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull align 1 dereferenceable(22) @.str.38, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %280 unwind label %307

280:                                              ; preds = %279
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #10
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %36, ptr noundef @.str.39, ptr noundef nonnull align 8 dereferenceable(32) %35)
          to label %281 unwind label %311

281:                                              ; preds = %280
  %282 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(32) %36)
          to label %283 unwind label %315

283:                                              ; preds = %281
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #10
  store i1 true, ptr %41, align 1
  %284 = call ptr @__cxa_allocate_exception(i64 80) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #10
  invoke void @_ZN4dali11make_stringIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEES6_DpRKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %37, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %285 unwind label %320

285:                                              ; preds = %283
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef @.str.40, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %286 unwind label %324

286:                                              ; preds = %285
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #10
  invoke void @_ZN4dali13GetStacktraceB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %40)
          to label %287 unwind label %328

287:                                              ; preds = %286
  invoke void @_ZN4dali13DALIExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_S8_(ptr noundef nonnull align 8 dereferenceable(80) %284, ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef %38, ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %288 unwind label %332

288:                                              ; preds = %287
  store i1 false, ptr %41, align 1
  invoke void @__cxa_throw(ptr %284, ptr @_ZTIN4dali13DALIExceptionE, ptr @_ZN4dali13DALIExceptionD2Ev) #11
          to label %416 unwind label %332

289:                                              ; preds = %267
  %290 = landingpad { ptr, i32 }
          cleanup
  %291 = extractvalue { ptr, i32 } %290, 0
  store ptr %291, ptr %8, align 8
  %292 = extractvalue { ptr, i32 } %290, 1
  store i32 %292, ptr %9, align 4
  br label %386

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

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

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

305:                                              ; preds = %301, %297
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #10
  br label %306

306:                                              ; preds = %305, %293
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #10
  br label %344

307:                                              ; preds = %279
  %308 = landingpad { ptr, i32 }
          cleanup
  %309 = extractvalue { ptr, i32 } %308, 0
  store ptr %309, ptr %8, align 8
  %310 = extractvalue { ptr, i32 } %308, 1
  store i32 %310, ptr %9, align 4
  br label %343

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

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

319:                                              ; preds = %315, %311
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #10
  br label %342

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

324:                                              ; preds = %285
  %325 = landingpad { ptr, i32 }
          cleanup
  %326 = extractvalue { ptr, i32 } %325, 0
  store ptr %326, ptr %8, align 8
  %327 = extractvalue { ptr, i32 } %325, 1
  store i32 %327, ptr %9, align 4
  br label %337

328:                                              ; preds = %286
  %329 = landingpad { ptr, i32 }
          cleanup
  %330 = extractvalue { ptr, i32 } %329, 0
  store ptr %330, ptr %8, align 8
  %331 = extractvalue { ptr, i32 } %329, 1
  store i32 %331, ptr %9, align 4
  br label %336

332:                                              ; preds = %288, %287
  %333 = landingpad { ptr, i32 }
          cleanup
  %334 = extractvalue { ptr, i32 } %333, 0
  store ptr %334, ptr %8, align 8
  %335 = extractvalue { ptr, i32 } %333, 1
  store i32 %335, ptr %9, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #10
  br label %336

336:                                              ; preds = %332, %328
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #10
  br label %337

337:                                              ; preds = %336, %324
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #10
  br label %338

338:                                              ; preds = %337, %320
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #10
  %339 = load i1, ptr %41, align 1
  br i1 %339, label %340, label %341

340:                                              ; preds = %338
  call void @__cxa_free_exception(ptr %284) #10
  br label %341

341:                                              ; preds = %340, %338
  br label %342

342:                                              ; preds = %341, %319
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #10
  br label %343

343:                                              ; preds = %342, %307
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #10
  br label %344

344:                                              ; preds = %343, %306
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #10
  br label %385

345:                                              ; preds = %274
  br label %346

346:                                              ; preds = %345
  br label %347

347:                                              ; preds = %346
  %348 = load ptr, ptr %4, align 8, !tbaa !5
  %349 = getelementptr inbounds %"struct.dali::NumpyFileWrapper", ptr %348, i32 0, i32 0
  call void @_ZNSt10shared_ptrIvEC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %42, ptr noundef nonnull align 8 dereferenceable(16) %30) #10
  %350 = load i64, ptr %29, align 8, !tbaa !81
  call void @llvm.lifetime.start.p0(i64 56, ptr %43) #10
  %351 = load i64, ptr %29, align 8, !tbaa !81
  invoke void @_ZN4dali11TensorShapeILin1EEC2IJEvEElDpT_(ptr noundef nonnull align 8 dereferenceable(56) %43, i64 noundef %351)
          to label %352 unwind label %367

352:                                              ; preds = %347
  %353 = invoke noundef i32 @_ZNK4dali5numpy10HeaderData4typeEv(ptr noundef nonnull align 8 dereferenceable(80) %20)
          to label %354 unwind label %371

354:                                              ; preds = %352
  call void @llvm.memset.p0.i64(ptr align 8 %44, i8 0, i64 16, i1 false)
  call void @_ZN4dali11AccessOrderC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %44) #10
  call void @llvm.memset.p0.i64(ptr align 8 %45, i8 0, i64 16, i1 false)
  call void @_ZN4dali15CUDASharedEventC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #10
  invoke void @_ZN4dali6TensorINS_10CPUBackendEE9ShareDataESt10shared_ptrIvEmbRKNS_11TensorShapeILin1EEE13_DALIDataTypeiNS_11AccessOrderENS_15CUDASharedEventE(ptr noundef nonnull align 8 dereferenceable(272) %349, ptr noundef %42, i64 noundef %350, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(56) %43, i32 noundef %353, i32 noundef -99999, ptr noundef byval(%"class.dali::AccessOrder") align 8 %44, ptr noundef %45)
          to label %355 unwind label %375

355:                                              ; preds = %354
  call void @_ZN4dali15CUDASharedEventD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #10
  call void @_ZN4dali15TensorShapeBaseINS_11SmallVectorIlLm6ESaIlEEELin1EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %43) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr %43) #10
  call void @_ZNSt12__shared_ptrIvLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #10
  %356 = load ptr, ptr %4, align 8, !tbaa !5
  %357 = getelementptr inbounds %"struct.dali::NumpyFileWrapper", ptr %356, i32 0, i32 0
  %358 = getelementptr inbounds %"class.dali::numpy::HeaderData", ptr %20, i32 0, i32 0
  %359 = invoke noundef i32 @_ZNK4dali5numpy10HeaderData4typeEv(ptr noundef nonnull align 8 dereferenceable(80) %20)
          to label %360 unwind label %381

360:                                              ; preds = %355
  invoke void @_ZN4dali6TensorINS_10CPUBackendEE6ResizeERKNS_11TensorShapeILin1EEE13_DALIDataType(ptr noundef nonnull align 8 dereferenceable(272) %357, ptr noundef nonnull align 8 dereferenceable(56) %358, i32 noundef %359)
          to label %361 unwind label %381

361:                                              ; preds = %360
  %362 = call noundef ptr @_ZNKSt10unique_ptrIN4dali10FileStreamESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  %363 = load ptr, ptr %362, align 8, !tbaa !51
  %364 = getelementptr inbounds ptr, ptr %363, i64 6
  %365 = load ptr, ptr %364, align 8
  invoke void %365(ptr noundef nonnull align 8 dereferenceable(40) %362)
          to label %366 unwind label %381

366:                                              ; preds = %361
  call void @_ZNSt12__shared_ptrIvLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #10
  br label %387

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

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

375:                                              ; preds = %354
  %376 = landingpad { ptr, i32 }
          cleanup
  %377 = extractvalue { ptr, i32 } %376, 0
  store ptr %377, ptr %8, align 8
  %378 = extractvalue { ptr, i32 } %376, 1
  store i32 %378, ptr %9, align 4
  call void @_ZN4dali15CUDASharedEventD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #10
  br label %379

379:                                              ; preds = %375, %371
  call void @_ZN4dali15TensorShapeBaseINS_11SmallVectorIlLm6ESaIlEEELin1EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %43) #10
  br label %380

380:                                              ; preds = %379, %367
  call void @llvm.lifetime.end.p0(i64 56, ptr %43) #10
  call void @_ZNSt12__shared_ptrIvLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #10
  br label %385

381:                                              ; preds = %361, %360, %355
  %382 = landingpad { ptr, i32 }
          cleanup
  %383 = extractvalue { ptr, i32 } %382, 0
  store ptr %383, ptr %8, align 8
  %384 = extractvalue { ptr, i32 } %382, 1
  store i32 %384, ptr %9, align 4
  br label %385

385:                                              ; preds = %381, %380, %344
  call void @_ZNSt12__shared_ptrIvLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #10
  br label %386

386:                                              ; preds = %385, %289
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #10
  br label %400

387:                                              ; preds = %366, %259
  %388 = load ptr, ptr %4, align 8, !tbaa !5
  %389 = getelementptr inbounds %"struct.dali::NumpyFileWrapper", ptr %388, i32 0, i32 0
  invoke void @_ZN4dali6TensorINS_10CPUBackendEE7SetMetaERKNS_8DALIMetaE(ptr noundef nonnull align 8 dereferenceable(272) %389, ptr noundef nonnull align 8 dereferenceable(49) %10)
          to label %390 unwind label %263

390:                                              ; preds = %387
  %391 = getelementptr inbounds %"class.dali::numpy::HeaderData", ptr %20, i32 0, i32 2
  %392 = load i8, ptr %391, align 8, !tbaa !105, !range !54, !noundef !55
  %393 = trunc i8 %392 to i1
  %394 = load ptr, ptr %4, align 8, !tbaa !5
  %395 = getelementptr inbounds %"struct.dali::NumpyFileWrapper", ptr %394, i32 0, i32 8
  %396 = zext i1 %393 to i8
  store i8 %396, ptr %395, align 8, !tbaa !106
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #10
  call void @_ZN4dali5numpy10HeaderDataD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %20) #10
  call void @llvm.lifetime.end.p0(i64 80, ptr %20) #10
  call void @_ZNSt10unique_ptrIN4dali10FileStreamESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 3, ptr %15) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #10
  store i32 0, ptr %13, align 4
  br label %397

397:                                              ; preds = %390, %82
  call void @_ZN4dali8DALIMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(49) %10) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr %10) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %6) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #10
  %398 = load i32, ptr %13, align 4
  switch i32 %398, label %416 [
    i32 0, label %399
    i32 1, label %399
  ]

399:                                              ; preds = %397, %397
  ret void

400:                                              ; preds = %386, %263
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  br label %401

401:                                              ; preds = %400, %215, %169, %161
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #10
  call void @_ZN4dali5numpy10HeaderDataD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %20) #10
  br label %402

402:                                              ; preds = %401, %157
  call void @llvm.lifetime.end.p0(i64 80, ptr %20) #10
  call void @_ZNSt10unique_ptrIN4dali10FileStreamESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  br label %403

403:                                              ; preds = %402, %153
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 3, ptr %15) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #10
  br label %404

404:                                              ; preds = %403, %149
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #10
  br label %405

405:                                              ; preds = %404, %105, %93
  call void @_ZN4dali8DALIMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(49) %10) #10
  br label %406

406:                                              ; preds = %405, %89
  call void @llvm.lifetime.end.p0(i64 56, ptr %10) #10
  br label %407

407:                                              ; preds = %406, %85
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %6) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #10
  br label %408

408:                                              ; preds = %407
  %409 = load ptr, ptr %8, align 8
  %410 = load i32, ptr %9, align 4
  %411 = insertvalue { ptr, i32 } poison, ptr %409, 0
  %412 = insertvalue { ptr, i32 } %411, i32 %410, 1
  resume { ptr, i32 } %412

413:                                              ; preds = %214
  %414 = landingpad { ptr, i32 }
          catch ptr null
  %415 = extractvalue { ptr, i32 } %414, 0
  call void @__clang_call_terminate(ptr %415) #12
  unreachable

416:                                              ; preds = %397, %288, %185
  unreachable
}

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

; 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 #2 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN4dali8DALIMeta13SetSourceInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(49), ptr noundef nonnull align 8 dereferenceable(32)) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN4dali8DALIMeta13SetSkipSampleEb(ptr noundef nonnull align 8 dereferenceable(49), i1 noundef zeroext) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN4dali6LoaderINS_10CPUBackendENS_16NumpyFileWrapperELb1EE15ShouldSkipImageERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(440), ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN4dali6TensorINS_10CPUBackendEE5ResetENS_11AccessOrderE(ptr noundef nonnull align 8 dereferenceable(272), ptr, i32) #4 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN4dali6TensorINS_10CPUBackendEE6ResizeERKNS_11TensorShapeILin1EEE13_DALIDataType(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef nonnull align 8 dereferenceable(56), i32 noundef) #4 align 2

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

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

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

declare void @_ZN4dali10filesystem9join_pathERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #7

declare void @_ZN4dali10FileStream4OpenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS0_7OptionsESt8optionalImE(ptr dead_on_unwind writable sret(%"class.std::unique_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(32), i24, i64, i8) #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN4dali5numpy10HeaderDataC2Ev(ptr noundef nonnull align 8 dereferenceable(80)) unnamed_addr #4 align 2

declare void @_ZN4dali5numpy18ParseODirectHeaderERNS0_10HeaderDataEPNS_11InputStreamEmm(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef, i64 noundef, i64 noundef) #7

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

declare void @_ZN4dali5numpy11ParseHeaderERNS0_10HeaderDataEPNS_11InputStreamE(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef) #7

; Function Attrs: nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #8

declare ptr @__cxa_begin_catch(ptr)

declare ptr @__cxa_allocate_exception(i64)

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

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

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

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

declare void @__cxa_throw(ptr, ptr, ptr)

declare void @__cxa_free_exception(ptr)

declare void @__cxa_end_catch()

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) #9

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

declare noundef i64 @_ZNK4dali5numpy10HeaderData6nbytesEv(ptr noundef nonnull align 8 dereferenceable(80)) #7

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

declare noundef i32 @_ZNK4dali5numpy10HeaderData4typeEv(ptr noundef nonnull align 8 dereferenceable(80)) #7

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN4dali6TensorINS_10CPUBackendEE9ShareDataESt10shared_ptrIvEmbRKNS_11TensorShapeILin1EEE13_DALIDataTypeiNS_11AccessOrderENS_15CUDASharedEventE(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef, i64 noundef, i1 noundef zeroext, ptr noundef nonnull align 8 dereferenceable(56), i32 noundef, i32 noundef, ptr noundef byval(%"class.dali::AccessOrder") align 8, ptr noundef) #4 align 2

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !23, i64 648}
!10 = !{!"_ZTSN4dali10FileLoaderINS_10CPUBackendENS_16NumpyFileWrapperENS_10FileStreamEEE", !11, i64 0, !39, i64 440, !39, i64 472, !39, i64 504, !41, i64 536, !46, i64 592, !46, i64 616, !20, i64 640, !20, i64 641, !20, i64 642, !20, i64 643, !23, i64 648, !21, i64 656, !50, i64 660}
!11 = !{!"_ZTSN4dali6LoaderINS_10CPUBackendENS_16NumpyFileWrapperELb1EEE", !12, i64 8, !16, i64 32, !20, i64 56, !21, i64 60, !21, i64 64, !21, i64 68, !22, i64 72, !23, i64 80, !24, i64 88, !21, i64 128, !21, i64 132, !20, i64 136, !20, i64 137, !20, i64 138, !21, i64 140, !20, i64 144, !24, i64 152, !20, i64 192, !20, i64 193, !26, i64 200, !27, i64 248, !23, i64 264, !20, i64 272, !20, i64 273, !20, i64 274, !21, i64 276, !21, i64 280, !21, i64 284, !30, i64 288, !33, i64 312, !20, i64 392, !23, i64 400, !23, i64 408, !38, i64 416}
!12 = !{!"_ZTSSt6vectorIN4dali6LoaderINS0_10CPUBackendENS0_16NumpyFileWrapperELb1EE26IndexedLoadTargetSharedPtrESaIS5_EE", !13, i64 0}
!13 = !{!"_ZTSSt12_Vector_baseIN4dali6LoaderINS0_10CPUBackendENS0_16NumpyFileWrapperELb1EE26IndexedLoadTargetSharedPtrESaIS5_EE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIN4dali6LoaderINS0_10CPUBackendENS0_16NumpyFileWrapperELb1EE26IndexedLoadTargetSharedPtrESaIS5_EE12_Vector_implE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIN4dali6LoaderINS0_10CPUBackendENS0_16NumpyFileWrapperELb1EE26IndexedLoadTargetSharedPtrESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!16 = !{!"_ZTSSt6vectorISt10unique_ptrIN4dali16NumpyFileWrapperESt14default_deleteIS2_EESaIS5_EE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN4dali16NumpyFileWrapperESt14default_deleteIS2_EESaIS5_EE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN4dali16NumpyFileWrapperESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN4dali16NumpyFileWrapperESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!20 = !{!"bool", !7, i64 0}
!21 = !{!"int", !7, i64 0}
!22 = !{!"_ZTSSt26linear_congruential_engineImLm16807ELm0ELm2147483647EE", !23, i64 0}
!23 = !{!"long", !7, i64 0}
!24 = !{!"_ZTSSt5mutex", !25, i64 0}
!25 = !{!"_ZTSSt12__mutex_base", !7, i64 0}
!26 = !{!"_ZTSN4dali9once_flagE", !20, i64 0, !24, i64 8}
!27 = !{!"_ZTSSt10shared_ptrIN4dali10ImageCacheEE", !28, i64 0}
!28 = !{!"_ZTSSt12__shared_ptrIN4dali10ImageCacheELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !29, i64 8}
!29 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!30 = !{!"_ZTSN4dali6LoaderINS_10CPUBackendENS_16NumpyFileWrapperELb1EE26IndexedLoadTargetSharedPtrE", !23, i64 0, !31, i64 8}
!31 = !{!"_ZTSSt10shared_ptrIN4dali16NumpyFileWrapperEE", !32, i64 0}
!32 = !{!"_ZTSSt12__shared_ptrIN4dali16NumpyFileWrapperELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !29, i64 8}
!33 = !{!"_ZTSSt5dequeIN4dali6LoaderINS0_10CPUBackendENS0_16NumpyFileWrapperELb1EE15ShardBoundariesESaIS5_EE", !34, i64 0}
!34 = !{!"_ZTSSt11_Deque_baseIN4dali6LoaderINS0_10CPUBackendENS0_16NumpyFileWrapperELb1EE15ShardBoundariesESaIS5_EE", !35, i64 0}
!35 = !{!"_ZTSNSt11_Deque_baseIN4dali6LoaderINS0_10CPUBackendENS0_16NumpyFileWrapperELb1EE15ShardBoundariesESaIS5_EE11_Deque_implE", !36, i64 0}
!36 = !{!"_ZTSNSt11_Deque_baseIN4dali6LoaderINS0_10CPUBackendENS0_16NumpyFileWrapperELb1EE15ShardBoundariesESaIS5_EE16_Deque_impl_dataE", !6, i64 0, !23, i64 8, !37, i64 16, !37, i64 48}
!37 = !{!"_ZTSSt15_Deque_iteratorIN4dali6LoaderINS0_10CPUBackendENS0_16NumpyFileWrapperELb1EE15ShardBoundariesERS5_PS5_E", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!38 = !{!"_ZTSN4dali19LoaderStateSnapshotE", !22, i64 0, !21, i64 8, !23, i64 16}
!39 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !40, i64 0, !23, i64 8, !7, i64 16}
!40 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!41 = !{!"_ZTSN4dali20FileDiscoveryOptionsE", !20, i64 0, !20, i64 1, !42, i64 8, !42, i64 32}
!42 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !43, i64 0}
!43 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!46 = !{!"_ZTSSt6vectorIN4dali14FileLabelEntryESaIS1_EE", !47, i64 0}
!47 = !{!"_ZTSSt12_Vector_baseIN4dali14FileLabelEntryESaIS1_EE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIN4dali14FileLabelEntryESaIS1_EE12_Vector_implE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIN4dali14FileLabelEntryESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!50 = !{!"_ZTSN4dali10FileStream15MappingReserverE", !21, i64 0}
!51 = !{!52, !52, i64 0}
!52 = !{!"vtable pointer", !8, i64 0}
!53 = !{!11, !20, i64 137}
!54 = !{i8 0, i8 2}
!55 = !{}
!56 = !{!57, !20, i64 0}
!57 = !{!"_ZTSN4dali10FileStream7OptionsE", !20, i64 0, !20, i64 1, !20, i64 2}
!58 = !{!11, !20, i64 136}
!59 = !{!57, !20, i64 1}
!60 = !{!61, !20, i64 760}
!61 = !{!"_ZTSN4dali11NumpyLoaderE", !10, i64 0, !62, i64 664, !20, i64 760, !23, i64 768, !23, i64 776}
!62 = !{!"_ZTSN4dali6detail16NumpyHeaderCacheE", !24, i64 0, !20, i64 40, !63, i64 48}
!63 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4dali5numpy10HeaderDataESt4lessIS5_ESaISt4pairIKS5_S8_EEE", !64, i64 0}
!64 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N4dali5numpy10HeaderDataEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE", !65, i64 0}
!65 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N4dali5numpy10HeaderDataEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE13_Rb_tree_implISF_Lb1EEE", !66, i64 0, !68, i64 8}
!66 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !67, i64 0}
!67 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!68 = !{!"_ZTSSt15_Rb_tree_header", !69, i64 0, !23, i64 32}
!69 = !{!"_ZTSSt18_Rb_tree_node_base", !70, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!70 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!71 = !{!57, !20, i64 2}
!72 = !{i64 0, i64 1, !73, i64 1, i64 1, !73, i64 2, i64 1, !73}
!73 = !{!20, !20, i64 0}
!74 = !{!61, !23, i64 768}
!75 = !{!61, !23, i64 776}
!76 = !{!77, !23, i64 72}
!77 = !{!"_ZTSN4dali5numpy10HeaderDataE", !78, i64 0, !6, i64 56, !20, i64 64, !23, i64 72}
!78 = !{!"_ZTSN4dali11TensorShapeILin1EEE", !79, i64 0}
!79 = !{!"_ZTSN4dali15TensorShapeBaseINS_11SmallVectorIlLm6ESaIlEEELin1EEE", !80, i64 0}
!80 = !{!"_ZTSN4dali11SmallVectorIlLm6ESaIlEEE", !7, i64 0, !23, i64 48}
!81 = !{!23, !23, i64 0}
!82 = !{!83, !87, i64 368}
!83 = !{!"_ZTSN4dali16NumpyFileWrapperE", !84, i64 0, !39, i64 272, !23, i64 304, !78, i64 312, !87, i64 368, !94, i64 376, !23, i64 432, !20, i64 440, !97, i64 448}
!84 = !{!"_ZTSN4dali6TensorINS_10CPUBackendEEE", !85, i64 0, !78, i64 144, !94, i64 200, !96, i64 256}
!85 = !{!"_ZTSN4dali6BufferINS_10CPUBackendEEE", !86, i64 8, !89, i64 48, !91, i64 64, !23, i64 96, !23, i64 104, !21, i64 112, !93, i64 120, !20, i64 136, !20, i64 137}
!86 = !{!"_ZTSN4dali8TypeInfoE", !6, i64 0, !87, i64 8, !23, i64 16, !88, i64 24}
!87 = !{!"_ZTS13_DALIDataType", !7, i64 0}
!88 = !{!"_ZTSSt17basic_string_viewIcSt11char_traitsIcEE", !23, i64 0, !6, i64 8}
!89 = !{!"_ZTSSt10shared_ptrIvE", !90, i64 0}
!90 = !{!"_ZTSSt12__shared_ptrIvLN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !29, i64 8}
!91 = !{!"_ZTSSt8functionIFSt10shared_ptrIhEmEE", !92, i64 0, !6, i64 24}
!92 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!93 = !{!"_ZTSN4dali11AccessOrderE", !6, i64 0, !21, i64 8}
!94 = !{!"_ZTSN4dali8DALIMetaE", !95, i64 0, !39, i64 16, !20, i64 48}
!95 = !{!"_ZTSN4dali12TensorLayoutE", !7, i64 0}
!96 = !{!"_ZTSN4dali15CUDASharedEventE", !89, i64 0}
!97 = !{!"_ZTSSt10unique_ptrIN4dali10FileStreamESt14default_deleteIS1_EE", !98, i64 0}
!98 = !{!"_ZTSSt15__uniq_ptr_dataIN4dali10FileStreamESt14default_deleteIS1_ELb1ELb1EE", !99, i64 0}
!99 = !{!"_ZTSSt15__uniq_ptr_implIN4dali10FileStreamESt14default_deleteIS1_EE", !100, i64 0}
!100 = !{!"_ZTSSt5tupleIJPN4dali10FileStreamESt14default_deleteIS1_EEE", !101, i64 0}
!101 = !{!"_ZTSSt11_Tuple_implILm0EJPN4dali10FileStreamESt14default_deleteIS1_EEE", !102, i64 0}
!102 = !{!"_ZTSSt10_Head_baseILm0EPN4dali10FileStreamELb0EE", !6, i64 0}
!103 = !{!83, !23, i64 304}
!104 = !{!83, !23, i64 432}
!105 = !{!77, !20, i64 64}
!106 = !{!83, !20, i64 440}


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.dali::DALIMeta" = type <{ %"class.dali::TensorLayout", %"class.std::__cxx11::basic_string", i8, [7 x i8] }>
%"class.dali::TensorLayout" = type { [16 x i8] }
%"class.dali::AccessOrder" = type <{ ptr, i32, [4 x i8] }>
%"struct.dali::TensorShape" = type { %"struct.dali::TensorShapeBase" }
%"struct.dali::TensorShapeBase" = type { %"class.dali::SmallVector" }
%"class.dali::SmallVector" = type { %union.anon.6, i64 }
%union.anon.6 = type { %struct.anon, [32 x i8] }
%struct.anon = type { ptr, i64 }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.40" }
%"struct.std::_Head_base.40" = type { ptr }
%"class.dali::numpy::HeaderData" = type { %"struct.dali::TensorShape", ptr, i8, i64 }
%"class.std::allocator.0" = type { i8 }
%"class.std::shared_ptr.36" = type { %"class.std::__shared_ptr.37" }
%"class.std::__shared_ptr.37" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.dali::CUDASharedEvent" = type { %"class.std::shared_ptr.36" }

@_ZTISt13runtime_error = external constant ptr
@.str.33 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [96 x i8], align 1
@_ZTIN4dali13DALIExceptionE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.35 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [97 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN4dali6detail16NumpyHeaderCache12GetFromCacheERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS_5numpy10HeaderDataE(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4dali6detail16NumpyHeaderCache11UpdateCacheERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_5numpy10HeaderDataE(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4dali11NumpyLoader10ReadSampleERNS_16NumpyFileWrapperE(ptr noundef nonnull align 8 dereferenceable(784) %0, ptr noundef nonnull align 8 dereferenceable(456) %1) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.dali::DALIMeta", align 8
  %5 = alloca %"class.dali::AccessOrder", align 8
  %6 = alloca %"struct.dali::TensorShape", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::unique_ptr", align 8
  %9 = alloca %"class.dali::numpy::HeaderData", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca ptr, align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::allocator.0", align 1
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::shared_ptr.36", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator.0", align 1
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::allocator.0", align 1
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::shared_ptr.36", align 8
  %27 = alloca %"struct.dali::TensorShape", align 8
  %28 = alloca %"class.dali::AccessOrder", align 8
  %29 = alloca %"class.dali::CUDASharedEvent", align 8
  %30 = getelementptr inbounds i8, ptr %0, i64 592
  %31 = getelementptr inbounds i8, ptr %0, i64 648
  %32 = load i64, ptr %31, align 8, !tbaa !5
  %33 = add nsw i64 %32, 1
  store i64 %33, ptr %31, align 8, !tbaa !5
  %34 = tail call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4dali14FileLabelEntryESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %32) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %34)
  %35 = getelementptr inbounds i8, ptr %34, i64 40
  %.sroa.014.0.copyload = load i64, ptr %35, align 8
  %.sroa.515.0..sroa_idx = getelementptr inbounds i8, ptr %34, i64 48
  %.sroa.515.0.copyload = load i8, ptr %.sroa.515.0..sroa_idx, align 8
  %36 = load i64, ptr %31, align 8, !tbaa !5
  %37 = load ptr, ptr %0, align 8, !tbaa !50
  %38 = getelementptr inbounds i8, ptr %37, i64 56
  %39 = load ptr, ptr %38, align 8
  invoke void %39(ptr noundef nonnull align 8 dereferenceable(440) %0, i64 noundef %36)
          to label %40 unwind label %54

40:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %4) #9
  invoke void @_ZN4dali8DALIMetaC2Ev(ptr noundef nonnull align 8 dereferenceable(49) %4)
          to label %41 unwind label %58

41:                                               ; preds = %40
  invoke void @_ZN4dali8DALIMeta13SetSourceInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(49) %4, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %42 unwind label %62

42:                                               ; preds = %41
  call void @_ZN4dali8DALIMeta13SetSkipSampleEb(ptr noundef nonnull align 8 dereferenceable(49) %4, i1 noundef zeroext false)
  %43 = invoke noundef zeroext i1 @_ZN4dali6LoaderINS_10CPUBackendENS_16NumpyFileWrapperELb1EE15ShouldSkipImageERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %44 unwind label %62

44:                                               ; preds = %42
  br i1 %43, label %45, label %71

45:                                               ; preds = %44
  call void @_ZN4dali8DALIMeta13SetSkipSampleEb(ptr noundef nonnull align 8 dereferenceable(49) %4, i1 noundef zeroext true)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %5, i8 0, i64 16, i1 false)
  call void @_ZN4dali11AccessOrderC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %5) #9
  %46 = load ptr, ptr %5, align 8
  %47 = getelementptr inbounds i8, ptr %5, i64 8
  %48 = load i32, ptr %47, align 8
  invoke void @_ZN4dali6TensorINS_10CPUBackendEE5ResetENS_11AccessOrderE(ptr noundef nonnull align 8 dereferenceable(272) %1, ptr %46, i32 %48)
          to label %49 unwind label %62

49:                                               ; preds = %45
  invoke void @_ZN4dali6TensorINS_10CPUBackendEE7SetMetaERKNS_8DALIMetaE(ptr noundef nonnull align 8 dereferenceable(272) %1, ptr noundef nonnull align 8 dereferenceable(49) %4)
          to label %50 unwind label %62

50:                                               ; preds = %49
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %6) #9
  invoke void @_ZN4dali11TensorShapeILin1EEC2IJEvEElDpT_(ptr noundef nonnull align 8 dereferenceable(56) %6, i64 noundef 0)
          to label %51 unwind label %66

51:                                               ; preds = %50
  invoke void @_ZN4dali6TensorINS_10CPUBackendEE6ResizeERKNS_11TensorShapeILin1EEE13_DALIDataType(ptr noundef nonnull align 8 dereferenceable(272) %1, ptr noundef nonnull align 8 dereferenceable(56) %6, i32 noundef 0)
          to label %52 unwind label %68

52:                                               ; preds = %51
  call void @_ZN4dali15TensorShapeBaseINS_11SmallVectorIlLm6ESaIlEEELin1EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %6) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %6) #9
  %53 = getelementptr inbounds i8, ptr %1, i64 272
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv(ptr noundef nonnull align 8 dereferenceable(32) %53) #9
  br label %256

54:                                               ; preds = %2
  %55 = landingpad { ptr, i32 }
          cleanup
  %56 = extractvalue { ptr, i32 } %55, 0
  %57 = extractvalue { ptr, i32 } %55, 1
  br label %264

58:                                               ; preds = %40
  %59 = landingpad { ptr, i32 }
          cleanup
  %60 = extractvalue { ptr, i32 } %59, 0
  %61 = extractvalue { ptr, i32 } %59, 1
  br label %263

62:                                               ; preds = %49, %45, %42, %41
  %63 = landingpad { ptr, i32 }
          cleanup
  %64 = extractvalue { ptr, i32 } %63, 0
  %65 = extractvalue { ptr, i32 } %63, 1
  br label %262

66:                                               ; preds = %50
  %67 = landingpad { ptr, i32 }
          cleanup
  br label %70

68:                                               ; preds = %51
  %69 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4dali15TensorShapeBaseINS_11SmallVectorIlLm6ESaIlEEELin1EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %6) #9
  br label %70

70:                                               ; preds = %68, %66
  %.pn91 = phi { ptr, i32 } [ %69, %68 ], [ %67, %66 ]
  %.034 = extractvalue { ptr, i32 } %.pn91, 0
  %.042 = extractvalue { ptr, i32 } %.pn91, 1
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %6) #9
  br label %262

71:                                               ; preds = %44
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #9
  %72 = getelementptr inbounds i8, ptr %0, i64 472
  invoke void @_ZN4dali10filesystem9join_pathERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %73 unwind label %94

73:                                               ; preds = %71
  %74 = getelementptr inbounds i8, ptr %0, i64 137
  %75 = load i8, ptr %74, align 1, !tbaa !52, !range !53, !noundef !54
  %76 = getelementptr inbounds i8, ptr %0, i64 136
  %77 = load i8, ptr %76, align 8, !tbaa !55, !range !53, !noundef !54
  %78 = trunc nuw i8 %77 to i1
  %79 = getelementptr inbounds i8, ptr %0, i64 760
  %80 = load i8, ptr %79, align 8, !tbaa !56, !range !53, !noundef !54
  %81 = trunc nuw i8 %80 to i1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #9
  %.sroa.7.0.insert.ext = zext nneg i8 %80 to i24
  %.sroa.7.0.insert.shift = shl nuw nsw i24 %.sroa.7.0.insert.ext, 16
  %.sroa.5.0.insert.shift = select i1 %78, i24 0, i24 256
  %.sroa.5.0.insert.insert = or disjoint i24 %.sroa.7.0.insert.shift, %.sroa.5.0.insert.shift
  %.sroa.09.0.insert.ext = zext nneg i8 %75 to i24
  %.sroa.09.0.insert.insert = or disjoint i24 %.sroa.5.0.insert.insert, %.sroa.09.0.insert.ext
  invoke void @_ZN4dali10FileStream4OpenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS0_7OptionsESt8optionalImE(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr") align 8 %8, ptr noundef nonnull align 8 dereferenceable(32) %7, i24 %.sroa.09.0.insert.insert, i64 %.sroa.014.0.copyload, i8 %.sroa.515.0.copyload)
          to label %82 unwind label %98

82:                                               ; preds = %73
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %9) #9
  invoke void @_ZN4dali5numpy10HeaderDataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %9)
          to label %83 unwind label %102

83:                                               ; preds = %82
  %84 = getelementptr inbounds i8, ptr %0, i64 664
  %85 = invoke noundef zeroext i1 @_ZN4dali6detail16NumpyHeaderCache12GetFromCacheERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS_5numpy10HeaderDataE(ptr noundef nonnull align 8 dereferenceable(96) %84, ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(80) %9)
          to label %86 unwind label %106

86:                                               ; preds = %83
  br i1 %85, label %140, label %87

87:                                               ; preds = %86
  %88 = call noundef ptr @_ZNKSt10unique_ptrIN4dali10FileStreamESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #9
  br i1 %81, label %89, label %127

89:                                               ; preds = %87
  %90 = getelementptr inbounds i8, ptr %0, i64 768
  %91 = load i64, ptr %90, align 8, !tbaa !67
  %92 = getelementptr inbounds i8, ptr %0, i64 776
  %93 = load i64, ptr %92, align 8, !tbaa !68
  invoke void @_ZN4dali5numpy18ParseODirectHeaderERNS0_10HeaderDataEPNS_11InputStreamEmm(ptr noundef nonnull align 8 dereferenceable(80) %9, ptr noundef %88, i64 noundef %91, i64 noundef %93)
          to label %128 unwind label %110

94:                                               ; preds = %71
  %95 = landingpad { ptr, i32 }
          cleanup
  %96 = extractvalue { ptr, i32 } %95, 0
  %97 = extractvalue { ptr, i32 } %95, 1
  br label %261

98:                                               ; preds = %73
  %99 = landingpad { ptr, i32 }
          cleanup
  %100 = extractvalue { ptr, i32 } %99, 0
  %101 = extractvalue { ptr, i32 } %99, 1
  br label %260

102:                                              ; preds = %82
  %103 = landingpad { ptr, i32 }
          cleanup
  %104 = extractvalue { ptr, i32 } %103, 0
  %105 = extractvalue { ptr, i32 } %103, 1
  br label %259

106:                                              ; preds = %140, %83
  %107 = landingpad { ptr, i32 }
          cleanup
  %108 = extractvalue { ptr, i32 } %107, 0
  %109 = extractvalue { ptr, i32 } %107, 1
  br label %258

110:                                              ; preds = %128, %127, %89
  %111 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt13runtime_error
  %112 = extractvalue { ptr, i32 } %111, 0
  %113 = extractvalue { ptr, i32 } %111, 1
  %114 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt13runtime_error) #9
  %115 = icmp eq i32 %113, %114
  br i1 %115, label %116, label %258

116:                                              ; preds = %110
  %117 = call ptr @__cxa_begin_catch(ptr %112) #9
  %118 = call ptr @__cxa_allocate_exception(i64 80) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #9
  %119 = load ptr, ptr %117, align 8, !tbaa !50
  %120 = getelementptr inbounds i8, ptr %119, i64 16
  %121 = load ptr, ptr %120, align 8
  %122 = call noundef ptr %121(ptr noundef nonnull align 8 dereferenceable(16) %117) #9
  store ptr %122, ptr %11, align 8, !tbaa !69
  invoke void @_ZN4dali11make_stringIJPKcA9_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEES9_DpRKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 1 dereferenceable(9) @.str.33, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %123 unwind label %.thread

123:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @.str.34, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %124 unwind label %130

124:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #9
  invoke void @_ZN4dali13GetStacktraceB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %14)
          to label %125 unwind label %132

125:                                              ; preds = %124
  invoke void @_ZN4dali13DALIExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_S8_(ptr noundef nonnull align 8 dereferenceable(80) %118, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull %12, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %126 unwind label %134

126:                                              ; preds = %125
  invoke void @__cxa_throw(ptr nonnull %118, ptr nonnull @_ZTIN4dali13DALIExceptionE, ptr nonnull @_ZN4dali13DALIExceptionD2Ev) #10
          to label %270 unwind label %134

127:                                              ; preds = %87
  invoke void @_ZN4dali5numpy11ParseHeaderERNS0_10HeaderDataEPNS_11InputStreamE(ptr noundef nonnull align 8 dereferenceable(80) %9, ptr noundef %88)
          to label %128 unwind label %110

128:                                              ; preds = %127, %89
  invoke void @_ZN4dali6detail16NumpyHeaderCache11UpdateCacheERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_5numpy10HeaderDataE(ptr noundef nonnull align 8 dereferenceable(96) %84, ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(80) %9)
          to label %140 unwind label %110

.thread:                                          ; preds = %116
  %129 = landingpad { ptr, i32 }
          cleanup
  %.33795 = extractvalue { ptr, i32 } %129, 0
  %.34596 = extractvalue { ptr, i32 } %129, 1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  br label %138

130:                                              ; preds = %123
  %131 = landingpad { ptr, i32 }
          cleanup
  br label %137

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

134:                                              ; preds = %126, %125
  %.038 = phi i1 [ false, %126 ], [ true, %125 ]
  %135 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  br label %136

136:                                              ; preds = %134, %132
  %.pn = phi { ptr, i32 } [ %135, %134 ], [ %133, %132 ]
  %.139 = phi i1 [ %.038, %134 ], [ true, %132 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  br label %137

137:                                              ; preds = %130, %136
  %.pn.pn = phi { ptr, i32 } [ %.pn, %136 ], [ %131, %130 ]
  %.240 = phi i1 [ %.139, %136 ], [ true, %130 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  %.337 = extractvalue { ptr, i32 } %.pn.pn, 0
  %.345 = extractvalue { ptr, i32 } %.pn.pn, 1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  br i1 %.240, label %138, label %139

138:                                              ; preds = %.thread, %137
  %.345100 = phi i32 [ %.34596, %.thread ], [ %.345, %137 ]
  %.33798 = phi ptr [ %.33795, %.thread ], [ %.337, %137 ]
  call void @__cxa_free_exception(ptr %118) #9
  br label %139

139:                                              ; preds = %138, %137
  %.34599 = phi i32 [ %.345100, %138 ], [ %.345, %137 ]
  %.33797 = phi ptr [ %.33798, %138 ], [ %.337, %137 ]
  invoke void @__cxa_end_catch()
          to label %258 unwind label %267

140:                                              ; preds = %86, %128
  %141 = call noundef ptr @_ZNKSt10unique_ptrIN4dali10FileStreamESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #9
  %142 = getelementptr inbounds i8, ptr %9, i64 72
  %143 = load i64, ptr %142, align 8, !tbaa !70
  %144 = load ptr, ptr %141, align 8, !tbaa !50
  %145 = getelementptr inbounds i8, ptr %144, i64 24
  %146 = load ptr, ptr %145, align 8
  invoke void %146(ptr noundef nonnull align 8 dereferenceable(8) %141, i64 noundef %143, i32 noundef 0)
          to label %147 unwind label %106

147:                                              ; preds = %140
  %148 = invoke noundef i64 @_ZNK4dali5numpy10HeaderData6nbytesEv(ptr noundef nonnull align 8 dereferenceable(80) %9)
          to label %149 unwind label %174

149:                                              ; preds = %147
  %150 = getelementptr inbounds i8, ptr %1, i64 312
  %151 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN4dali11TensorShapeILin1EEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(56) %150, ptr noundef nonnull align 8 dereferenceable(56) %9)
          to label %152 unwind label %174

152:                                              ; preds = %149
  %153 = invoke noundef i32 @_ZNK4dali5numpy10HeaderData4typeEv(ptr noundef nonnull align 8 dereferenceable(80) %9)
          to label %154 unwind label %174

154:                                              ; preds = %152
  %155 = getelementptr inbounds i8, ptr %1, i64 368
  store i32 %153, ptr %155, align 8, !tbaa !75
  %156 = getelementptr inbounds i8, ptr %1, i64 376
  %157 = invoke noundef nonnull align 8 dereferenceable(49) ptr @_ZN4dali8DALIMetaaSERKS0_(ptr noundef nonnull align 8 dereferenceable(49) %156, ptr noundef nonnull align 8 dereferenceable(49) %4)
          to label %158 unwind label %174

158:                                              ; preds = %154
  %159 = load i64, ptr %142, align 8, !tbaa !70
  %160 = getelementptr inbounds i8, ptr %1, i64 304
  store i64 %159, ptr %160, align 8, !tbaa !96
  %161 = getelementptr inbounds i8, ptr %1, i64 432
  store i64 %148, ptr %161, align 8, !tbaa !97
  %162 = getelementptr inbounds i8, ptr %1, i64 272
  %163 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %162, ptr noundef nonnull align 8 dereferenceable(32) %7) #9
  br i1 %78, label %171, label %164

164:                                              ; preds = %158
  %165 = call noundef ptr @_ZNKSt10unique_ptrIN4dali10FileStreamESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #9
  %166 = load ptr, ptr %165, align 8, !tbaa !50
  %167 = getelementptr inbounds i8, ptr %166, i64 56
  %168 = load ptr, ptr %167, align 8
  %169 = invoke noundef zeroext i1 %168(ptr noundef nonnull align 8 dereferenceable(40) %165)
          to label %170 unwind label %174

170:                                              ; preds = %164
  br i1 %169, label %176, label %171

171:                                              ; preds = %170, %158
  %172 = getelementptr inbounds i8, ptr %1, i64 448
  %173 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt10unique_ptrIN4dali10FileStreamESt14default_deleteIS1_EEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(8) %172, ptr noundef nonnull align 8 dereferenceable(8) %8) #9
  br label %251

174:                                              ; preds = %251, %164, %154, %152, %149, %147
  %175 = landingpad { ptr, i32 }
          cleanup
  br label %257

176:                                              ; preds = %170
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #9
  %177 = call noundef ptr @_ZNKSt10unique_ptrIN4dali10FileStreamESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #9
  %178 = load ptr, ptr %177, align 8, !tbaa !50
  %179 = getelementptr inbounds i8, ptr %178, i64 64
  %180 = load ptr, ptr %179, align 8
  invoke void %180(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.36") align 8 %15, ptr noundef nonnull align 8 dereferenceable(40) %177, i64 noundef %148)
          to label %181 unwind label %196

181:                                              ; preds = %176
  %182 = call noundef zeroext i1 @_ZStneIvEbRKSt10shared_ptrIT_EDn(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr null) #9
  br i1 %182, label %226, label %183

183:                                              ; preds = %181
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull @.str.35, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %184 unwind label %198

184:                                              ; preds = %183
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull @.str.36)
          to label %185 unwind label %200

185:                                              ; preds = %184
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull @.str.37)
          to label %186 unwind label %202

186:                                              ; preds = %185
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #9
  invoke void @_ZN4dali11make_stringIJA22_cNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEES7_DpRKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull align 1 dereferenceable(22) @.str.38, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %187 unwind label %206

187:                                              ; preds = %186
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull @.str.39, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %188 unwind label %208

188:                                              ; preds = %187
  %189 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %190 unwind label %210

190:                                              ; preds = %188
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #9
  %191 = call ptr @__cxa_allocate_exception(i64 80) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #9
  invoke void @_ZN4dali11make_stringIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEES6_DpRKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %22, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %192 unwind label %.thread101

192:                                              ; preds = %190
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull @.str.40, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %193 unwind label %214

193:                                              ; preds = %192
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #9
  invoke void @_ZN4dali13GetStacktraceB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %25)
          to label %194 unwind label %216

194:                                              ; preds = %193
  invoke void @_ZN4dali13DALIExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_S8_(ptr noundef nonnull align 8 dereferenceable(80) %191, ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull %23, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %195 unwind label %218

195:                                              ; preds = %194
  invoke void @__cxa_throw(ptr nonnull %191, ptr nonnull @_ZTIN4dali13DALIExceptionE, ptr nonnull @_ZN4dali13DALIExceptionD2Ev) #10
          to label %270 unwind label %218

196:                                              ; preds = %176
  %197 = landingpad { ptr, i32 }
          cleanup
  br label %250

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

200:                                              ; preds = %184
  %201 = landingpad { ptr, i32 }
          cleanup
  br label %204

202:                                              ; preds = %185
  %203 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #9
  br label %204

204:                                              ; preds = %202, %200
  %.pn71 = phi { ptr, i32 } [ %203, %202 ], [ %201, %200 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  br label %205

205:                                              ; preds = %204, %198
  %.pn71.pn = phi { ptr, i32 } [ %.pn71, %204 ], [ %199, %198 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #9
  br label %225

206:                                              ; preds = %186
  %207 = landingpad { ptr, i32 }
          cleanup
  br label %224

208:                                              ; preds = %187
  %209 = landingpad { ptr, i32 }
          cleanup
  br label %212

210:                                              ; preds = %188
  %211 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  br label %212

212:                                              ; preds = %210, %208
  %.pn74 = phi { ptr, i32 } [ %211, %210 ], [ %209, %208 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #9
  br label %223

.thread101:                                       ; preds = %190
  %213 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #9
  br label %222

214:                                              ; preds = %192
  %215 = landingpad { ptr, i32 }
          cleanup
  br label %221

216:                                              ; preds = %193
  %217 = landingpad { ptr, i32 }
          cleanup
  br label %220

218:                                              ; preds = %195, %194
  %.0 = phi i1 [ false, %195 ], [ true, %194 ]
  %219 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  br label %220

220:                                              ; preds = %218, %216
  %.pn76 = phi { ptr, i32 } [ %219, %218 ], [ %217, %216 ]
  %.1 = phi i1 [ %.0, %218 ], [ true, %216 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  br label %221

221:                                              ; preds = %214, %220
  %.pn76.pn = phi { ptr, i32 } [ %.pn76, %220 ], [ %215, %214 ]
  %.2 = phi i1 [ %.1, %220 ], [ true, %214 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #9
  br i1 %.2, label %222, label %223

222:                                              ; preds = %.thread101, %221
  %.pn76.pn.pn104 = phi { ptr, i32 } [ %213, %.thread101 ], [ %.pn76.pn, %221 ]
  call void @__cxa_free_exception(ptr %191) #9
  br label %223

223:                                              ; preds = %221, %222, %212
  %.pn76.pn.pn.pn = phi { ptr, i32 } [ %.pn76.pn.pn104, %222 ], [ %.pn76.pn, %221 ], [ %.pn74, %212 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  br label %224

224:                                              ; preds = %223, %206
  %.pn76.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn76.pn.pn.pn, %223 ], [ %207, %206 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  br label %225

225:                                              ; preds = %224, %205
  %.pn76.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn76.pn.pn.pn.pn, %224 ], [ %.pn71.pn, %205 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #9
  br label %249

226:                                              ; preds = %181
  call void @_ZNSt10shared_ptrIvEC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef nonnull align 8 dereferenceable(16) %15) #9
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %27) #9
  invoke void @_ZN4dali11TensorShapeILin1EEC2IJEvEElDpT_(ptr noundef nonnull align 8 dereferenceable(56) %27, i64 noundef %148)
          to label %227 unwind label %239

227:                                              ; preds = %226
  %228 = invoke noundef i32 @_ZNK4dali5numpy10HeaderData4typeEv(ptr noundef nonnull align 8 dereferenceable(80) %9)
          to label %229 unwind label %241

229:                                              ; preds = %227
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %28, i8 0, i64 16, i1 false)
  call void @_ZN4dali11AccessOrderC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %28) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %29, i8 0, i64 16, i1 false)
  call void @_ZN4dali15CUDASharedEventC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #9
  invoke void @_ZN4dali6TensorINS_10CPUBackendEE9ShareDataESt10shared_ptrIvEmbRKNS_11TensorShapeILin1EEE13_DALIDataTypeiNS_11AccessOrderENS_15CUDASharedEventE(ptr noundef nonnull align 8 dereferenceable(272) %1, ptr noundef nonnull %26, i64 noundef %148, i1 noundef zeroext false, ptr noundef nonnull align 8 dereferenceable(56) %27, i32 noundef %228, i32 noundef -99999, ptr noundef nonnull byval(%"class.dali::AccessOrder") align 8 %28, ptr noundef nonnull %29)
          to label %230 unwind label %243

230:                                              ; preds = %229
  call void @_ZN4dali15CUDASharedEventD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #9
  call void @_ZN4dali15TensorShapeBaseINS_11SmallVectorIlLm6ESaIlEEELin1EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %27) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %27) #9
  call void @_ZNSt12__shared_ptrIvLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #9
  %231 = invoke noundef i32 @_ZNK4dali5numpy10HeaderData4typeEv(ptr noundef nonnull align 8 dereferenceable(80) %9)
          to label %232 unwind label %247

232:                                              ; preds = %230
  invoke void @_ZN4dali6TensorINS_10CPUBackendEE6ResizeERKNS_11TensorShapeILin1EEE13_DALIDataType(ptr noundef nonnull align 8 dereferenceable(272) %1, ptr noundef nonnull align 8 dereferenceable(56) %9, i32 noundef %231)
          to label %233 unwind label %247

233:                                              ; preds = %232
  %234 = call noundef ptr @_ZNKSt10unique_ptrIN4dali10FileStreamESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #9
  %235 = load ptr, ptr %234, align 8, !tbaa !50
  %236 = getelementptr inbounds i8, ptr %235, i64 48
  %237 = load ptr, ptr %236, align 8
  invoke void %237(ptr noundef nonnull align 8 dereferenceable(40) %234)
          to label %238 unwind label %247

238:                                              ; preds = %233
  call void @_ZNSt12__shared_ptrIvLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #9
  br label %251

239:                                              ; preds = %226
  %240 = landingpad { ptr, i32 }
          cleanup
  br label %246

241:                                              ; preds = %227
  %242 = landingpad { ptr, i32 }
          cleanup
  br label %245

243:                                              ; preds = %229
  %244 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4dali15CUDASharedEventD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #9
  br label %245

245:                                              ; preds = %243, %241
  %.pn83 = phi { ptr, i32 } [ %244, %243 ], [ %242, %241 ]
  call void @_ZN4dali15TensorShapeBaseINS_11SmallVectorIlLm6ESaIlEEELin1EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %27) #9
  br label %246

246:                                              ; preds = %245, %239
  %.pn83.pn = phi { ptr, i32 } [ %.pn83, %245 ], [ %240, %239 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %27) #9
  call void @_ZNSt12__shared_ptrIvLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #9
  br label %249

247:                                              ; preds = %233, %232, %230
  %248 = landingpad { ptr, i32 }
          cleanup
  br label %249

249:                                              ; preds = %247, %246, %225
  %.pn86 = phi { ptr, i32 } [ %248, %247 ], [ %.pn83.pn, %246 ], [ %.pn76.pn.pn.pn.pn.pn, %225 ]
  call void @_ZNSt12__shared_ptrIvLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #9
  br label %250

250:                                              ; preds = %249, %196
  %.pn86.pn = phi { ptr, i32 } [ %.pn86, %249 ], [ %197, %196 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #9
  br label %257

251:                                              ; preds = %238, %171
  invoke void @_ZN4dali6TensorINS_10CPUBackendEE7SetMetaERKNS_8DALIMetaE(ptr noundef nonnull align 8 dereferenceable(272) %1, ptr noundef nonnull align 8 dereferenceable(49) %4)
          to label %252 unwind label %174

252:                                              ; preds = %251
  %253 = getelementptr inbounds i8, ptr %9, i64 64
  %254 = load i8, ptr %253, align 8, !tbaa !98, !range !53, !noundef !54
  %255 = getelementptr inbounds i8, ptr %1, i64 440
  store i8 %254, ptr %255, align 8, !tbaa !99
  call void @_ZN4dali5numpy10HeaderDataD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %9) #9
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %9) #9
  call void @_ZNSt10unique_ptrIN4dali10FileStreamESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #9
  br label %256

256:                                              ; preds = %252, %52
  call void @_ZN4dali8DALIMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(49) %4) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %4) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #9
  ret void

257:                                              ; preds = %250, %174
  %.pn89 = phi { ptr, i32 } [ %175, %174 ], [ %.pn86.pn, %250 ]
  %.17 = extractvalue { ptr, i32 } %.pn89, 0
  %.1759 = extractvalue { ptr, i32 } %.pn89, 1
  br label %258

258:                                              ; preds = %139, %257, %110, %106
  %.1860 = phi i32 [ %.1759, %257 ], [ %109, %106 ], [ %113, %110 ], [ %.34599, %139 ]
  %.18 = phi ptr [ %.17, %257 ], [ %108, %106 ], [ %112, %110 ], [ %.33797, %139 ]
  call void @_ZN4dali5numpy10HeaderDataD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %9) #9
  br label %259

259:                                              ; preds = %258, %102
  %.1961 = phi i32 [ %.1860, %258 ], [ %105, %102 ]
  %.19 = phi ptr [ %.18, %258 ], [ %104, %102 ]
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %9) #9
  call void @_ZNSt10unique_ptrIN4dali10FileStreamESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #9
  br label %260

260:                                              ; preds = %259, %98
  %.2062 = phi i32 [ %.1961, %259 ], [ %101, %98 ]
  %.20 = phi ptr [ %.19, %259 ], [ %100, %98 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #9
  br label %261

261:                                              ; preds = %260, %94
  %.2163 = phi i32 [ %.2062, %260 ], [ %97, %94 ]
  %.21 = phi ptr [ %.20, %260 ], [ %96, %94 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #9
  br label %262

262:                                              ; preds = %261, %70, %62
  %.2264 = phi i32 [ %.042, %70 ], [ %65, %62 ], [ %.2163, %261 ]
  %.22 = phi ptr [ %.034, %70 ], [ %64, %62 ], [ %.21, %261 ]
  call void @_ZN4dali8DALIMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(49) %4) #9
  br label %263

263:                                              ; preds = %262, %58
  %.2365 = phi i32 [ %.2264, %262 ], [ %61, %58 ]
  %.23 = phi ptr [ %.22, %262 ], [ %60, %58 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %4) #9
  br label %264

264:                                              ; preds = %263, %54
  %.2466 = phi i32 [ %.2365, %263 ], [ %57, %54 ]
  %.24 = phi ptr [ %.23, %263 ], [ %56, %54 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #9
  %265 = insertvalue { ptr, i32 } poison, ptr %.24, 0
  %266 = insertvalue { ptr, i32 } %265, i32 %.2466, 1
  resume { ptr, i32 } %266

267:                                              ; preds = %139
  %268 = landingpad { ptr, i32 }
          catch ptr null
  %269 = extractvalue { ptr, i32 } %268, 0
  call void @__clang_call_terminate(ptr %269) #11
  unreachable

270:                                              ; preds = %195, %126
  unreachable
}

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

; 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 #2 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN4dali8DALIMeta13SetSourceInfoERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(49), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN4dali6LoaderINS_10CPUBackendENS_16NumpyFileWrapperELb1EE15ShouldSkipImageERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(440), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN4dali6TensorINS_10CPUBackendEE5ResetENS_11AccessOrderE(ptr noundef nonnull align 8 dereferenceable(272), ptr, i32) local_unnamed_addr #3 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) #5

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN4dali6TensorINS_10CPUBackendEE6ResizeERKNS_11TensorShapeILin1EEE13_DALIDataType(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef nonnull align 8 dereferenceable(56), i32 noundef) local_unnamed_addr #3 align 2

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

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

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

declare void @_ZN4dali10filesystem9join_pathERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #6

declare void @_ZN4dali10FileStream4OpenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS0_7OptionsESt8optionalImE(ptr dead_on_unwind writable sret(%"class.std::unique_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(32), i24, i64, i8) local_unnamed_addr #6

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

declare void @_ZN4dali5numpy18ParseODirectHeaderERNS0_10HeaderDataEPNS_11InputStreamEmm(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef, i64 noundef, i64 noundef) local_unnamed_addr #6

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

declare void @_ZN4dali5numpy11ParseHeaderERNS0_10HeaderDataEPNS_11InputStreamE(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef) local_unnamed_addr #6

; Function Attrs: nofree nosync nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #7

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN4dali13GetStacktraceB5cxx11Ev(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8) local_unnamed_addr #3

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

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

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

declare void @__cxa_end_catch() local_unnamed_addr

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) local_unnamed_addr #8

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

declare noundef i64 @_ZNK4dali5numpy10HeaderData6nbytesEv(ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #6

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

declare noundef i32 @_ZNK4dali5numpy10HeaderData4typeEv(ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #6

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN4dali6TensorINS_10CPUBackendEE9ShareDataESt10shared_ptrIvEmbRKNS_11TensorShapeILin1EEE13_DALIDataTypeiNS_11AccessOrderENS_15CUDASharedEventE(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef, i64 noundef, i1 noundef zeroext, ptr noundef nonnull align 8 dereferenceable(56), i32 noundef, i32 noundef, ptr noundef byval(%"class.dali::AccessOrder") align 8, ptr noundef) local_unnamed_addr #3 align 2

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !22, i64 648}
!6 = !{!"_ZTSN4dali10FileLoaderINS_10CPUBackendENS_16NumpyFileWrapperENS_10FileStreamEEE", !7, i64 0, !38, i64 440, !38, i64 472, !38, i64 504, !40, i64 536, !45, i64 592, !45, i64 616, !19, i64 640, !19, i64 641, !19, i64 642, !19, i64 643, !22, i64 648, !20, i64 656, !49, i64 660}
!7 = !{!"_ZTSN4dali6LoaderINS_10CPUBackendENS_16NumpyFileWrapperELb1EEE", !8, i64 8, !15, i64 32, !19, i64 56, !20, i64 60, !20, i64 64, !20, i64 68, !21, i64 72, !22, i64 80, !23, i64 88, !20, i64 128, !20, i64 132, !19, i64 136, !19, i64 137, !19, i64 138, !20, i64 140, !19, i64 144, !23, i64 152, !19, i64 192, !19, i64 193, !25, i64 200, !26, i64 248, !22, i64 264, !19, i64 272, !19, i64 273, !19, i64 274, !20, i64 276, !20, i64 280, !20, i64 284, !29, i64 288, !32, i64 312, !19, i64 392, !22, i64 400, !22, i64 408, !37, i64 416}
!8 = !{!"_ZTSSt6vectorIN4dali6LoaderINS0_10CPUBackendENS0_16NumpyFileWrapperELb1EE26IndexedLoadTargetSharedPtrESaIS5_EE", !9, i64 0}
!9 = !{!"_ZTSSt12_Vector_baseIN4dali6LoaderINS0_10CPUBackendENS0_16NumpyFileWrapperELb1EE26IndexedLoadTargetSharedPtrESaIS5_EE", !10, i64 0}
!10 = !{!"_ZTSNSt12_Vector_baseIN4dali6LoaderINS0_10CPUBackendENS0_16NumpyFileWrapperELb1EE26IndexedLoadTargetSharedPtrESaIS5_EE12_Vector_implE", !11, i64 0}
!11 = !{!"_ZTSNSt12_Vector_baseIN4dali6LoaderINS0_10CPUBackendENS0_16NumpyFileWrapperELb1EE26IndexedLoadTargetSharedPtrESaIS5_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!12 = !{!"any pointer", !13, i64 0}
!13 = !{!"omnipotent char", !14, i64 0}
!14 = !{!"Simple C++ TBAA"}
!15 = !{!"_ZTSSt6vectorISt10unique_ptrIN4dali16NumpyFileWrapperESt14default_deleteIS2_EESaIS5_EE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN4dali16NumpyFileWrapperESt14default_deleteIS2_EESaIS5_EE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN4dali16NumpyFileWrapperESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN4dali16NumpyFileWrapperESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!19 = !{!"bool", !13, i64 0}
!20 = !{!"int", !13, i64 0}
!21 = !{!"_ZTSSt26linear_congruential_engineImLm16807ELm0ELm2147483647EE", !22, i64 0}
!22 = !{!"long", !13, i64 0}
!23 = !{!"_ZTSSt5mutex", !24, i64 0}
!24 = !{!"_ZTSSt12__mutex_base", !13, i64 0}
!25 = !{!"_ZTSN4dali9once_flagE", !19, i64 0, !23, i64 8}
!26 = !{!"_ZTSSt10shared_ptrIN4dali10ImageCacheEE", !27, i64 0}
!27 = !{!"_ZTSSt12__shared_ptrIN4dali10ImageCacheELN9__gnu_cxx12_Lock_policyE2EE", !12, i64 0, !28, i64 8}
!28 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !12, i64 0}
!29 = !{!"_ZTSN4dali6LoaderINS_10CPUBackendENS_16NumpyFileWrapperELb1EE26IndexedLoadTargetSharedPtrE", !22, i64 0, !30, i64 8}
!30 = !{!"_ZTSSt10shared_ptrIN4dali16NumpyFileWrapperEE", !31, i64 0}
!31 = !{!"_ZTSSt12__shared_ptrIN4dali16NumpyFileWrapperELN9__gnu_cxx12_Lock_policyE2EE", !12, i64 0, !28, i64 8}
!32 = !{!"_ZTSSt5dequeIN4dali6LoaderINS0_10CPUBackendENS0_16NumpyFileWrapperELb1EE15ShardBoundariesESaIS5_EE", !33, i64 0}
!33 = !{!"_ZTSSt11_Deque_baseIN4dali6LoaderINS0_10CPUBackendENS0_16NumpyFileWrapperELb1EE15ShardBoundariesESaIS5_EE", !34, i64 0}
!34 = !{!"_ZTSNSt11_Deque_baseIN4dali6LoaderINS0_10CPUBackendENS0_16NumpyFileWrapperELb1EE15ShardBoundariesESaIS5_EE11_Deque_implE", !35, i64 0}
!35 = !{!"_ZTSNSt11_Deque_baseIN4dali6LoaderINS0_10CPUBackendENS0_16NumpyFileWrapperELb1EE15ShardBoundariesESaIS5_EE16_Deque_impl_dataE", !12, i64 0, !22, i64 8, !36, i64 16, !36, i64 48}
!36 = !{!"_ZTSSt15_Deque_iteratorIN4dali6LoaderINS0_10CPUBackendENS0_16NumpyFileWrapperELb1EE15ShardBoundariesERS5_PS5_E", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24}
!37 = !{!"_ZTSN4dali19LoaderStateSnapshotE", !21, i64 0, !20, i64 8, !22, i64 16}
!38 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !39, i64 0, !22, i64 8, !13, i64 16}
!39 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !12, i64 0}
!40 = !{!"_ZTSN4dali20FileDiscoveryOptionsE", !19, i64 0, !19, i64 1, !41, i64 8, !41, i64 32}
!41 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !42, i64 0}
!42 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!45 = !{!"_ZTSSt6vectorIN4dali14FileLabelEntryESaIS1_EE", !46, i64 0}
!46 = !{!"_ZTSSt12_Vector_baseIN4dali14FileLabelEntryESaIS1_EE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseIN4dali14FileLabelEntryESaIS1_EE12_Vector_implE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIN4dali14FileLabelEntryESaIS1_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!49 = !{!"_ZTSN4dali10FileStream15MappingReserverE", !20, i64 0}
!50 = !{!51, !51, i64 0}
!51 = !{!"vtable pointer", !14, i64 0}
!52 = !{!7, !19, i64 137}
!53 = !{i8 0, i8 2}
!54 = !{}
!55 = !{!7, !19, i64 136}
!56 = !{!57, !19, i64 760}
!57 = !{!"_ZTSN4dali11NumpyLoaderE", !6, i64 0, !58, i64 664, !19, i64 760, !22, i64 768, !22, i64 776}
!58 = !{!"_ZTSN4dali6detail16NumpyHeaderCacheE", !23, i64 0, !19, i64 40, !59, i64 48}
!59 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4dali5numpy10HeaderDataESt4lessIS5_ESaISt4pairIKS5_S8_EEE", !60, i64 0}
!60 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N4dali5numpy10HeaderDataEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE", !61, i64 0}
!61 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N4dali5numpy10HeaderDataEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE13_Rb_tree_implISF_Lb1EEE", !62, i64 0, !64, i64 8}
!62 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !63, i64 0}
!63 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!64 = !{!"_ZTSSt15_Rb_tree_header", !65, i64 0, !22, i64 32}
!65 = !{!"_ZTSSt18_Rb_tree_node_base", !66, i64 0, !12, i64 8, !12, i64 16, !12, i64 24}
!66 = !{!"_ZTSSt14_Rb_tree_color", !13, i64 0}
!67 = !{!57, !22, i64 768}
!68 = !{!57, !22, i64 776}
!69 = !{!12, !12, i64 0}
!70 = !{!71, !22, i64 72}
!71 = !{!"_ZTSN4dali5numpy10HeaderDataE", !72, i64 0, !12, i64 56, !19, i64 64, !22, i64 72}
!72 = !{!"_ZTSN4dali11TensorShapeILin1EEE", !73, i64 0}
!73 = !{!"_ZTSN4dali15TensorShapeBaseINS_11SmallVectorIlLm6ESaIlEEELin1EEE", !74, i64 0}
!74 = !{!"_ZTSN4dali11SmallVectorIlLm6ESaIlEEE", !13, i64 0, !22, i64 48}
!75 = !{!76, !80, i64 368}
!76 = !{!"_ZTSN4dali16NumpyFileWrapperE", !77, i64 0, !38, i64 272, !22, i64 304, !72, i64 312, !80, i64 368, !87, i64 376, !22, i64 432, !19, i64 440, !90, i64 448}
!77 = !{!"_ZTSN4dali6TensorINS_10CPUBackendEEE", !78, i64 0, !72, i64 144, !87, i64 200, !89, i64 256}
!78 = !{!"_ZTSN4dali6BufferINS_10CPUBackendEEE", !79, i64 8, !82, i64 48, !84, i64 64, !22, i64 96, !22, i64 104, !20, i64 112, !86, i64 120, !19, i64 136, !19, i64 137}
!79 = !{!"_ZTSN4dali8TypeInfoE", !12, i64 0, !80, i64 8, !22, i64 16, !81, i64 24}
!80 = !{!"_ZTS13_DALIDataType", !13, i64 0}
!81 = !{!"_ZTSSt17basic_string_viewIcSt11char_traitsIcEE", !22, i64 0, !12, i64 8}
!82 = !{!"_ZTSSt10shared_ptrIvE", !83, i64 0}
!83 = !{!"_ZTSSt12__shared_ptrIvLN9__gnu_cxx12_Lock_policyE2EE", !12, i64 0, !28, i64 8}
!84 = !{!"_ZTSSt8functionIFSt10shared_ptrIhEmEE", !85, i64 0, !12, i64 24}
!85 = !{!"_ZTSSt14_Function_base", !13, i64 0, !12, i64 16}
!86 = !{!"_ZTSN4dali11AccessOrderE", !12, i64 0, !20, i64 8}
!87 = !{!"_ZTSN4dali8DALIMetaE", !88, i64 0, !38, i64 16, !19, i64 48}
!88 = !{!"_ZTSN4dali12TensorLayoutE", !13, i64 0}
!89 = !{!"_ZTSN4dali15CUDASharedEventE", !82, i64 0}
!90 = !{!"_ZTSSt10unique_ptrIN4dali10FileStreamESt14default_deleteIS1_EE", !91, i64 0}
!91 = !{!"_ZTSSt15__uniq_ptr_dataIN4dali10FileStreamESt14default_deleteIS1_ELb1ELb1EE", !92, i64 0}
!92 = !{!"_ZTSSt15__uniq_ptr_implIN4dali10FileStreamESt14default_deleteIS1_EE", !93, i64 0}
!93 = !{!"_ZTSSt5tupleIJPN4dali10FileStreamESt14default_deleteIS1_EEE", !94, i64 0}
!94 = !{!"_ZTSSt11_Tuple_implILm0EJPN4dali10FileStreamESt14default_deleteIS1_EEE", !95, i64 0}
!95 = !{!"_ZTSSt10_Head_baseILm0EPN4dali10FileStreamELb0EE", !12, i64 0}
!96 = !{!76, !22, i64 304}
!97 = !{!76, !22, i64 432}
!98 = !{!71, !19, i64 64}
!99 = !{!76, !19, i64 440}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass