; LLVM IR from NVIDIA/DALI :: dali/operators/sequence/optical_flow/optical_flow_impl (optical_flow_impl)

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

%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.0" = type { i8 }
%"class.std::unique_ptr.6" = type { %"struct.std::__uniq_ptr_data.7" }
%"struct.std::__uniq_ptr_data.7" = type { %"class.std::__uniq_ptr_impl.8" }
%"class.std::__uniq_ptr_impl.8" = type { %"class.std::tuple.9" }
%"class.std::tuple.9" = type { %"struct.std::_Tuple_impl.10" }
%"struct.std::_Tuple_impl.10" = type { %"struct.std::_Tuple_impl.11", %"struct.std::_Head_base.13" }
%"struct.std::_Tuple_impl.11" = type { %"struct.std::_Head_base.12" }
%"struct.std::_Head_base.12" = type { %"class.std::function" }
%"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 } }
%"struct.std::_Head_base.13" = type { ptr }
%class.anon = type { i8 }
%"struct.dali::optical_flow::OpticalFlowParams" = type <{ float, i32, i32, i8, i8, [2 x i8] }>
%"class.dali::DeviceGuard" = type { ptr }
%"class.dali::optical_flow::OpticalFlowImpl" = type <{ %"class.dali::optical_flow::OpticalFlowAdapter", %"class.std::__cxx11::basic_string", i64, i64, i64, i32, i32, i32, [4 x i8], ptr, ptr, ptr, %struct._NV_OF_CUDA_API_FUNCTION_LIST, %struct._NV_OF_INIT_PARAMS, %struct._NV_OF_INIT_PARAMS, %"class.std::unique_ptr", %"class.std::unique_ptr", %"class.std::unique_ptr", %"class.std::unique_ptr", i32, [4 x i8], %"class.std::unique_ptr.6", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", i8, [7 x i8] }>
%"class.dali::optical_flow::OpticalFlowAdapter" = type { ptr, %"struct.dali::optical_flow::OpticalFlowParams" }
%struct._NV_OF_CUDA_API_FUNCTION_LIST = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct._NV_OF_INIT_PARAMS = type { i32, i32, i32, i32, i32, i32, i32, i32, ptr, i32, i32 }
%"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.5" }
%"struct.std::_Head_base.5" = type { ptr }

@.str = external hidden unnamed_addr constant [12 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1
@_ZTIN4dali13DALIExceptionE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.13 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [128 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [128 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [7 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4dali12optical_flow15GetCapabilitiesEPF13_NV_OF_STATUSP13NvOFHandle_st11_NV_OF_CAPSPjS5_ES3_S4_(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8, ptr noundef, ptr noundef, i32 noundef) #0

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z9CUDA_CALLI13_NV_OF_STATUSEvT_(i32 noundef) #2

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

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

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

declare void @__cxa_free_exception(ptr)

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN4dali12optical_flow17OutGridSizeToEnumEi(i32 noundef) #3

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4dali12optical_flow15OpticalFlowImpl4InitERNS0_17OpticalFlowParamsE(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 4 dereferenceable(14) %1) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator.0", align 1
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::allocator.0", align 1
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca i1, align 1
  %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::allocator.0", align 1
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator.0", align 1
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca i1, align 1
  %28 = alloca %"class.std::unique_ptr.6", align 8
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::allocator.0", align 1
  %31 = alloca %"class.std::function", align 8
  %32 = alloca %class.anon, align 1
  %33 = alloca %"struct.dali::optical_flow::OpticalFlowParams", align 4
  %34 = alloca %"class.dali::DeviceGuard", align 8
  %35 = alloca %"class.std::vector", align 8
  %36 = alloca %"class.std::vector", align 8
  %37 = alloca %"class.std::vector", align 8
  %38 = alloca %"class.std::vector", align 8
  %39 = alloca %"class.std::vector", align 8
  %40 = alloca %"class.std::vector", align 8
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::allocator.0", align 1
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::allocator.0", align 1
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::allocator.0", align 1
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::allocator.0", align 1
  %49 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %50 = load ptr, ptr %3, align 8
  br label %51

51:                                               ; preds = %2
  %52 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 4
  %53 = load i64, ptr %52, align 8, !tbaa !9
  %54 = icmp eq i64 %53, 1
  br i1 %54, label %109, label %55

55:                                               ; preds = %51
  %56 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 4
  %57 = load i64, ptr %56, align 8, !tbaa !9
  %58 = icmp eq i64 %57, 3
  br i1 %58, label %109, label %59

59:                                               ; preds = %55
  %60 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 4
  %61 = load i64, ptr %60, align 8, !tbaa !9
  %62 = icmp eq i64 %61, 4
  br i1 %62, label %109, label %63

63:                                               ; preds = %59
  call void @llvm.lifetime.start.p0(i64 32, ptr %5) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %6) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %7) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %64 unwind label %72

64:                                               ; preds = %63
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef @.str.13)
          to label %65 unwind label %76

65:                                               ; preds = %64
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef @.str.2)
          to label %66 unwind label %80

66:                                               ; preds = %65
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %6) #8
  store i1 true, ptr %15, align 1
  %67 = call ptr @__cxa_allocate_exception(i64 80) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #8
  invoke void @_ZN4dali11make_stringIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEES6_DpRKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %68 unwind label %86

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

69:                                               ; preds = %68
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #8
  invoke void @_ZN4dali13GetStacktraceB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %14)
          to label %70 unwind label %94

70:                                               ; preds = %69
  invoke void @_ZN4dali13DALIExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_S8_(ptr noundef nonnull align 8 dereferenceable(80) %67, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef %12, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %71 unwind label %98

71:                                               ; preds = %70
  store i1 false, ptr %15, align 1
  invoke void @__cxa_throw(ptr %67, ptr @_ZTIN4dali13DALIExceptionE, ptr @_ZN4dali13DALIExceptionD2Ev) #9
          to label %408 unwind label %98

72:                                               ; preds = %63
  %73 = landingpad { ptr, i32 }
          cleanup
  %74 = extractvalue { ptr, i32 } %73, 0
  store ptr %74, ptr %9, align 8
  %75 = extractvalue { ptr, i32 } %73, 1
  store i32 %75, ptr %10, align 4
  br label %85

76:                                               ; preds = %64
  %77 = landingpad { ptr, i32 }
          cleanup
  %78 = extractvalue { ptr, i32 } %77, 0
  store ptr %78, ptr %9, align 8
  %79 = extractvalue { ptr, i32 } %77, 1
  store i32 %79, ptr %10, align 4
  br label %84

80:                                               ; preds = %65
  %81 = landingpad { ptr, i32 }
          cleanup
  %82 = extractvalue { ptr, i32 } %81, 0
  store ptr %82, ptr %9, align 8
  %83 = extractvalue { ptr, i32 } %81, 1
  store i32 %83, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  br label %84

84:                                               ; preds = %80, %76
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  br label %85

85:                                               ; preds = %84, %72
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %6) #8
  br label %108

86:                                               ; preds = %66
  %87 = landingpad { ptr, i32 }
          cleanup
  %88 = extractvalue { ptr, i32 } %87, 0
  store ptr %88, ptr %9, align 8
  %89 = extractvalue { ptr, i32 } %87, 1
  store i32 %89, ptr %10, align 4
  br label %104

90:                                               ; preds = %68
  %91 = landingpad { ptr, i32 }
          cleanup
  %92 = extractvalue { ptr, i32 } %91, 0
  store ptr %92, ptr %9, align 8
  %93 = extractvalue { ptr, i32 } %91, 1
  store i32 %93, ptr %10, align 4
  br label %103

94:                                               ; preds = %69
  %95 = landingpad { ptr, i32 }
          cleanup
  %96 = extractvalue { ptr, i32 } %95, 0
  store ptr %96, ptr %9, align 8
  %97 = extractvalue { ptr, i32 } %95, 1
  store i32 %97, ptr %10, align 4
  br label %102

98:                                               ; preds = %71, %70
  %99 = landingpad { ptr, i32 }
          cleanup
  %100 = extractvalue { ptr, i32 } %99, 0
  store ptr %100, ptr %9, align 8
  %101 = extractvalue { ptr, i32 } %99, 1
  store i32 %101, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  br label %102

102:                                              ; preds = %98, %94
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  br label %103

103:                                              ; preds = %102, %90
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  br label %104

104:                                              ; preds = %103, %86
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #8
  %105 = load i1, ptr %15, align 1
  br i1 %105, label %106, label %107

106:                                              ; preds = %104
  call void @__cxa_free_exception(ptr %67) #8
  br label %107

107:                                              ; preds = %106, %104
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #8
  br label %108

108:                                              ; preds = %107, %85
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #8
  br label %403

109:                                              ; preds = %59, %55, %51
  br label %110

110:                                              ; preds = %109
  br label %111

111:                                              ; preds = %110
  %112 = call noundef zeroext i1 @_Z13cuInitCheckedv()
  br i1 %112, label %178, label %113

113:                                              ; preds = %111
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %114 unwind label %126

114:                                              ; preds = %113
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef @.str.15)
          to label %115 unwind label %130

115:                                              ; preds = %114
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef @.str.2)
          to label %116 unwind label %134

116:                                              ; preds = %115
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef @.str.16, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %117 unwind label %140

117:                                              ; preds = %116
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #8
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %22, ptr noundef @.str.5, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %118 unwind label %144

118:                                              ; preds = %117
  %119 = 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) %22)
          to label %120 unwind label %148

120:                                              ; preds = %118
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #8
  store i1 true, ptr %27, align 1
  %121 = call ptr @__cxa_allocate_exception(i64 80) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #8
  invoke void @_ZN4dali11make_stringIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEES6_DpRKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %122 unwind label %153

122:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @.str.17, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %123 unwind label %157

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

124:                                              ; preds = %123
  invoke void @_ZN4dali13DALIExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_S8_(ptr noundef nonnull align 8 dereferenceable(80) %121, ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef %24, ptr noundef nonnull align 8 dereferenceable(32) %26)
          to label %125 unwind label %165

125:                                              ; preds = %124
  store i1 false, ptr %27, align 1
  invoke void @__cxa_throw(ptr %121, ptr @_ZTIN4dali13DALIExceptionE, ptr @_ZN4dali13DALIExceptionD2Ev) #9
          to label %408 unwind label %165

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

130:                                              ; preds = %114
  %131 = landingpad { ptr, i32 }
          cleanup
  %132 = extractvalue { ptr, i32 } %131, 0
  store ptr %132, ptr %9, align 8
  %133 = extractvalue { ptr, i32 } %131, 1
  store i32 %133, ptr %10, align 4
  br label %138

134:                                              ; preds = %115
  %135 = landingpad { ptr, i32 }
          cleanup
  %136 = extractvalue { ptr, i32 } %135, 0
  store ptr %136, ptr %9, align 8
  %137 = extractvalue { ptr, i32 } %135, 1
  store i32 %137, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  br label %138

138:                                              ; preds = %134, %130
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  br label %139

139:                                              ; preds = %138, %126
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #8
  br label %177

140:                                              ; preds = %116
  %141 = landingpad { ptr, i32 }
          cleanup
  %142 = extractvalue { ptr, i32 } %141, 0
  store ptr %142, ptr %9, align 8
  %143 = extractvalue { ptr, i32 } %141, 1
  store i32 %143, ptr %10, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #8
  br label %176

144:                                              ; preds = %117
  %145 = landingpad { ptr, i32 }
          cleanup
  %146 = extractvalue { ptr, i32 } %145, 0
  store ptr %146, ptr %9, align 8
  %147 = extractvalue { ptr, i32 } %145, 1
  store i32 %147, ptr %10, align 4
  br label %152

148:                                              ; preds = %118
  %149 = landingpad { ptr, i32 }
          cleanup
  %150 = extractvalue { ptr, i32 } %149, 0
  store ptr %150, ptr %9, align 8
  %151 = extractvalue { ptr, i32 } %149, 1
  store i32 %151, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  br label %152

152:                                              ; preds = %148, %144
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #8
  br label %175

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

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

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

165:                                              ; preds = %125, %124
  %166 = landingpad { ptr, i32 }
          cleanup
  %167 = extractvalue { ptr, i32 } %166, 0
  store ptr %167, ptr %9, align 8
  %168 = extractvalue { ptr, i32 } %166, 1
  store i32 %168, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  br label %169

169:                                              ; preds = %165, %161
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  br label %170

170:                                              ; preds = %169, %157
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  br label %171

171:                                              ; preds = %170, %153
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #8
  %172 = load i1, ptr %27, align 1
  br i1 %172, label %173, label %174

173:                                              ; preds = %171
  call void @__cxa_free_exception(ptr %121) #8
  br label %174

174:                                              ; preds = %173, %171
  br label %175

175:                                              ; preds = %174, %152
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #8
  br label %176

176:                                              ; preds = %175, %140
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #8
  br label %177

177:                                              ; preds = %176, %139
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #8
  br label %403

178:                                              ; preds = %111
  br label %179

179:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 40, ptr %28) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef @.str.18, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %180 unwind label %250

180:                                              ; preds = %179
  %181 = invoke noundef ptr @_ZN4dali12optical_flow15OpticalFlowImpl15LoadOpticalFlowERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(489) %50, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %182 unwind label %254

182:                                              ; preds = %180
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #8
  call void @"_ZNSt8functionIFvPvEEC2IZN4dali12optical_flow15OpticalFlowImpl4InitERNS5_17OpticalFlowParamsEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 1 dereferenceable(1) %32) #8
  call void @_ZNSt10unique_ptrIvSt8functionIFvPvEEEC2IS3_vEES1_NSt9enable_ifIXntsr19is_lvalue_referenceIT_EE5valueEOS7_E4typeE(ptr noundef nonnull align 8 dereferenceable(40) %28, ptr noundef %181, ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  %183 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 21
  %184 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt10unique_ptrIvSt8functionIFvPvEEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(40) %183, ptr noundef nonnull align 8 dereferenceable(40) %28) #8
  call void @_ZNSt10unique_ptrIvSt8functionIFvPvEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %28) #8
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %28) #8
  %185 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %33, ptr align 4 %185, i64 16, i1 false), !tbaa.struct !48
  %186 = getelementptr inbounds { i64, i64 }, ptr %33, i32 0, i32 0
  %187 = load i64, ptr %186, align 4
  %188 = getelementptr inbounds { i64, i64 }, ptr %33, i32 0, i32 1
  %189 = load i64, ptr %188, align 4
  call void @_ZN4dali12optical_flow15OpticalFlowImpl13SetInitParamsENS0_17OpticalFlowParamsE(ptr noundef nonnull align 8 dereferenceable(489) %50, i64 %187, i64 %189)
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  %190 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 7
  %191 = load i32, ptr %190, align 8, !tbaa !52
  call void @_ZN4dali11DeviceGuardC1Ei(ptr noundef nonnull align 8 dereferenceable(8) %34, i32 noundef %191)
  %192 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 9
  %193 = invoke i32 @cuCtxGetCurrent(ptr noundef %192)
          to label %194 unwind label %259

194:                                              ; preds = %182
  invoke void @_Z9CUDA_CALLI14cudaError_enumEvT_(i32 noundef %193)
          to label %195 unwind label %259

195:                                              ; preds = %194
  invoke void @_ZN4dali12optical_flow15OpticalFlowImpl8CreateOfEv(ptr noundef nonnull align 8 dereferenceable(489) %50)
          to label %196 unwind label %259

196:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 24, ptr %35) #8
  %197 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 12
  %198 = getelementptr inbounds %struct._NV_OF_CUDA_API_FUNCTION_LIST, ptr %197, i32 0, i32 11
  %199 = load ptr, ptr %198, align 8, !tbaa !53
  %200 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 11
  %201 = load ptr, ptr %200, align 8, !tbaa !54
  invoke void @_ZN4dali12optical_flow15GetCapabilitiesEPF13_NV_OF_STATUSP13NvOFHandle_st11_NV_OF_CAPSPjS5_ES3_S4_(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %35, ptr noundef %199, ptr noundef %201, i32 noundef 1)
          to label %202 unwind label %263

202:                                              ; preds = %196
  call void @llvm.lifetime.start.p0(i64 24, ptr %36) #8
  %203 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 12
  %204 = getelementptr inbounds %struct._NV_OF_CUDA_API_FUNCTION_LIST, ptr %203, i32 0, i32 11
  %205 = load ptr, ptr %204, align 8, !tbaa !53
  %206 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 11
  %207 = load ptr, ptr %206, align 8, !tbaa !54
  invoke void @_ZN4dali12optical_flow15GetCapabilitiesEPF13_NV_OF_STATUSP13NvOFHandle_st11_NV_OF_CAPSPjS5_ES3_S4_(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %36, ptr noundef %205, ptr noundef %207, i32 noundef 1)
          to label %208 unwind label %267

208:                                              ; preds = %202
  call void @llvm.lifetime.start.p0(i64 24, ptr %37) #8
  %209 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 12
  %210 = getelementptr inbounds %struct._NV_OF_CUDA_API_FUNCTION_LIST, ptr %209, i32 0, i32 11
  %211 = load ptr, ptr %210, align 8, !tbaa !53
  %212 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 11
  %213 = load ptr, ptr %212, align 8, !tbaa !54
  invoke void @_ZN4dali12optical_flow15GetCapabilitiesEPF13_NV_OF_STATUSP13NvOFHandle_st11_NV_OF_CAPSPjS5_ES3_S4_(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %37, ptr noundef %211, ptr noundef %213, i32 noundef 4)
          to label %214 unwind label %271

214:                                              ; preds = %208
  %215 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 22
  %216 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIjSaIjEEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %215, ptr noundef nonnull align 8 dereferenceable(24) %37) #8
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %38) #8
  %217 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 12
  %218 = getelementptr inbounds %struct._NV_OF_CUDA_API_FUNCTION_LIST, ptr %217, i32 0, i32 11
  %219 = load ptr, ptr %218, align 8, !tbaa !53
  %220 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 11
  %221 = load ptr, ptr %220, align 8, !tbaa !54
  invoke void @_ZN4dali12optical_flow15GetCapabilitiesEPF13_NV_OF_STATUSP13NvOFHandle_st11_NV_OF_CAPSPjS5_ES3_S4_(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %38, ptr noundef %219, ptr noundef %221, i32 noundef 5)
          to label %222 unwind label %275

222:                                              ; preds = %214
  %223 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 24
  %224 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIjSaIjEEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %223, ptr noundef nonnull align 8 dereferenceable(24) %38) #8
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %39) #8
  %225 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 12
  %226 = getelementptr inbounds %struct._NV_OF_CUDA_API_FUNCTION_LIST, ptr %225, i32 0, i32 11
  %227 = load ptr, ptr %226, align 8, !tbaa !53
  %228 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 11
  %229 = load ptr, ptr %228, align 8, !tbaa !54
  invoke void @_ZN4dali12optical_flow15GetCapabilitiesEPF13_NV_OF_STATUSP13NvOFHandle_st11_NV_OF_CAPSPjS5_ES3_S4_(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %39, ptr noundef %227, ptr noundef %229, i32 noundef 6)
          to label %230 unwind label %279

230:                                              ; preds = %222
  %231 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 23
  %232 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIjSaIjEEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %231, ptr noundef nonnull align 8 dereferenceable(24) %39) #8
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %39) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %40) #8
  %233 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 12
  %234 = getelementptr inbounds %struct._NV_OF_CUDA_API_FUNCTION_LIST, ptr %233, i32 0, i32 11
  %235 = load ptr, ptr %234, align 8, !tbaa !53
  %236 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 11
  %237 = load ptr, ptr %236, align 8, !tbaa !54
  invoke void @_ZN4dali12optical_flow15GetCapabilitiesEPF13_NV_OF_STATUSP13NvOFHandle_st11_NV_OF_CAPSPjS5_ES3_S4_(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %40, ptr noundef %235, ptr noundef %237, i32 noundef 7)
          to label %238 unwind label %283

238:                                              ; preds = %230
  %239 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 25
  %240 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIjSaIjEEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %239, ptr noundef nonnull align 8 dereferenceable(24) %40) #8
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %40) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #8
  %241 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 22
  %242 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %241) #8
  %243 = icmp ne i64 %242, 0
  br i1 %243, label %244, label %287

244:                                              ; preds = %238
  %245 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 22
  %246 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %245, i64 noundef 0) #8
  %247 = load i32, ptr %246, align 4, !tbaa !50
  %248 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 14
  %249 = getelementptr inbounds %struct._NV_OF_INIT_PARAMS, ptr %248, i32 0, i32 0
  store i32 %247, ptr %249, align 8, !tbaa !55
  br label %287

250:                                              ; preds = %179
  %251 = landingpad { ptr, i32 }
          cleanup
  %252 = extractvalue { ptr, i32 } %251, 0
  store ptr %252, ptr %9, align 8
  %253 = extractvalue { ptr, i32 } %251, 1
  store i32 %253, ptr %10, align 4
  br label %258

254:                                              ; preds = %180
  %255 = landingpad { ptr, i32 }
          cleanup
  %256 = extractvalue { ptr, i32 } %255, 0
  store ptr %256, ptr %9, align 8
  %257 = extractvalue { ptr, i32 } %255, 1
  store i32 %257, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  br label %258

258:                                              ; preds = %254, %250
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %28) #8
  br label %403

259:                                              ; preds = %195, %194, %182
  %260 = landingpad { ptr, i32 }
          cleanup
  %261 = extractvalue { ptr, i32 } %260, 0
  store ptr %261, ptr %9, align 8
  %262 = extractvalue { ptr, i32 } %260, 1
  store i32 %262, ptr %10, align 4
  br label %402

263:                                              ; preds = %196
  %264 = landingpad { ptr, i32 }
          cleanup
  %265 = extractvalue { ptr, i32 } %264, 0
  store ptr %265, ptr %9, align 8
  %266 = extractvalue { ptr, i32 } %264, 1
  store i32 %266, ptr %10, align 4
  br label %401

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

271:                                              ; preds = %208
  %272 = landingpad { ptr, i32 }
          cleanup
  %273 = extractvalue { ptr, i32 } %272, 0
  store ptr %273, ptr %9, align 8
  %274 = extractvalue { ptr, i32 } %272, 1
  store i32 %274, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #8
  br label %399

275:                                              ; preds = %214
  %276 = landingpad { ptr, i32 }
          cleanup
  %277 = extractvalue { ptr, i32 } %276, 0
  store ptr %277, ptr %9, align 8
  %278 = extractvalue { ptr, i32 } %276, 1
  store i32 %278, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #8
  br label %399

279:                                              ; preds = %222
  %280 = landingpad { ptr, i32 }
          cleanup
  %281 = extractvalue { ptr, i32 } %280, 0
  store ptr %281, ptr %9, align 8
  %282 = extractvalue { ptr, i32 } %280, 1
  store i32 %282, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %39) #8
  br label %399

283:                                              ; preds = %230
  %284 = landingpad { ptr, i32 }
          cleanup
  %285 = extractvalue { ptr, i32 } %284, 0
  store ptr %285, ptr %9, align 8
  %286 = extractvalue { ptr, i32 } %284, 1
  store i32 %286, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #8
  br label %399

287:                                              ; preds = %244, %238
  %288 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 24
  %289 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %288) #8
  %290 = icmp ne i64 %289, 0
  br i1 %290, label %291, label %297

291:                                              ; preds = %287
  %292 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 24
  %293 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %292, i64 noundef 0) #8
  %294 = load i32, ptr %293, align 4, !tbaa !50
  %295 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 14
  %296 = getelementptr inbounds %struct._NV_OF_INIT_PARAMS, ptr %295, i32 0, i32 1
  store i32 %294, ptr %296, align 4, !tbaa !56
  br label %297

297:                                              ; preds = %291, %287
  %298 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %35) #8
  %299 = icmp ne i64 %298, 0
  br i1 %299, label %300, label %306

300:                                              ; preds = %297
  %301 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef 0) #8
  %302 = load i32, ptr %301, align 4, !tbaa !50
  %303 = call noundef i32 @_ZN4dali12optical_flow17OutGridSizeToEnumEi(i32 noundef %302)
  %304 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 14
  %305 = getelementptr inbounds %struct._NV_OF_INIT_PARAMS, ptr %304, i32 0, i32 2
  store i32 %303, ptr %305, align 8, !tbaa !57
  br label %306

306:                                              ; preds = %300, %297
  %307 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 5
  %308 = load i32, ptr %307, align 8, !tbaa !58
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef @.str.19, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %309 unwind label %355

309:                                              ; preds = %306
  invoke void @_ZN4dali12optical_flow15IsGridSupportedERKSt6vectorIjSaIjEEiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(24) %35, i32 noundef %308, ptr noundef %41)
          to label %310 unwind label %359

310:                                              ; preds = %309
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #8
  %311 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 6
  %312 = load i32, ptr %311, align 4, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef @.str.20, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %313 unwind label %364

313:                                              ; preds = %310
  invoke void @_ZN4dali12optical_flow15IsGridSupportedERKSt6vectorIjSaIjEEiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(24) %36, i32 noundef %312, ptr noundef %43)
          to label %314 unwind label %368

314:                                              ; preds = %313
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #8
  %315 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 22
  %316 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 23
  %317 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 2
  %318 = load i64, ptr %317, align 8, !tbaa !60
  %319 = trunc i64 %318 to i32
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef @.str.21, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %320 unwind label %373

320:                                              ; preds = %314
  invoke void @_ZN4dali12optical_flow15IsSizeSupportedERSt6vectorIjSaIjEES4_iNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(24) %315, ptr noundef nonnull align 8 dereferenceable(24) %316, i32 noundef %319, ptr noundef %45)
          to label %321 unwind label %377

321:                                              ; preds = %320
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #8
  %322 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 24
  %323 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 25
  %324 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 3
  %325 = load i64, ptr %324, align 8, !tbaa !61
  %326 = trunc i64 %325 to i32
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef @.str.22, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %327 unwind label %382

327:                                              ; preds = %321
  invoke void @_ZN4dali12optical_flow15IsSizeSupportedERSt6vectorIjSaIjEES4_iNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(24) %322, ptr noundef nonnull align 8 dereferenceable(24) %323, i32 noundef %326, ptr noundef %47)
          to label %328 unwind label %386

328:                                              ; preds = %327
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #8
  %329 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 12
  %330 = getelementptr inbounds %struct._NV_OF_CUDA_API_FUNCTION_LIST, ptr %329, i32 0, i32 6
  %331 = load ptr, ptr %330, align 8, !tbaa !62
  %332 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 11
  %333 = load ptr, ptr %332, align 8, !tbaa !54
  %334 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 10
  %335 = load ptr, ptr %334, align 8, !tbaa !63
  %336 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 10
  %337 = load ptr, ptr %336, align 8, !tbaa !63
  %338 = invoke noundef i32 %331(ptr noundef %333, ptr noundef %335, ptr noundef %337)
          to label %339 unwind label %391

339:                                              ; preds = %328
  invoke void @_Z9CUDA_CALLI13_NV_OF_STATUSEvT_(i32 noundef %338)
          to label %340 unwind label %391

340:                                              ; preds = %339
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #8
  %341 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 12
  %342 = getelementptr inbounds %struct._NV_OF_CUDA_API_FUNCTION_LIST, ptr %341, i32 0, i32 1
  %343 = load ptr, ptr %342, align 8, !tbaa !64
  %344 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 11
  %345 = load ptr, ptr %344, align 8, !tbaa !54
  %346 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 13
  %347 = invoke noundef i32 %343(ptr noundef %345, ptr noundef %346)
          to label %348 unwind label %395

348:                                              ; preds = %340
  %349 = invoke noundef i32 @_ZN4dali12optical_flow12_GLOBAL__N_113VerifySupportE13_NV_OF_STATUS(i32 noundef %347)
          to label %350 unwind label %395

350:                                              ; preds = %348
  store i32 %349, ptr %49, align 4, !tbaa !65
  %351 = load i32, ptr %49, align 4, !tbaa !65
  invoke void @_Z9CUDA_CALLI13_NV_OF_STATUSEvT_(i32 noundef %351)
          to label %352 unwind label %395

352:                                              ; preds = %350
  %353 = getelementptr inbounds %"class.dali::optical_flow::OpticalFlowImpl", ptr %50, i32 0, i32 26
  store i8 1, ptr %353, align 8, !tbaa !67
  invoke void @_ZN4dali12optical_flow15OpticalFlowImpl13CreateBuffersEv(ptr noundef nonnull align 8 dereferenceable(489) %50)
          to label %354 unwind label %395

354:                                              ; preds = %352
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #8
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %36) #8
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #8
  call void @_ZN4dali11DeviceGuardD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  ret void

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

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

363:                                              ; preds = %359, %355
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #8
  br label %399

364:                                              ; preds = %310
  %365 = landingpad { ptr, i32 }
          cleanup
  %366 = extractvalue { ptr, i32 } %365, 0
  store ptr %366, ptr %9, align 8
  %367 = extractvalue { ptr, i32 } %365, 1
  store i32 %367, ptr %10, align 4
  br label %372

368:                                              ; preds = %313
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %9, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  br label %372

372:                                              ; preds = %368, %364
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #8
  br label %399

373:                                              ; preds = %314
  %374 = landingpad { ptr, i32 }
          cleanup
  %375 = extractvalue { ptr, i32 } %374, 0
  store ptr %375, ptr %9, align 8
  %376 = extractvalue { ptr, i32 } %374, 1
  store i32 %376, ptr %10, align 4
  br label %381

377:                                              ; preds = %320
  %378 = landingpad { ptr, i32 }
          cleanup
  %379 = extractvalue { ptr, i32 } %378, 0
  store ptr %379, ptr %9, align 8
  %380 = extractvalue { ptr, i32 } %378, 1
  store i32 %380, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #8
  br label %381

381:                                              ; preds = %377, %373
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #8
  br label %399

382:                                              ; preds = %321
  %383 = landingpad { ptr, i32 }
          cleanup
  %384 = extractvalue { ptr, i32 } %383, 0
  store ptr %384, ptr %9, align 8
  %385 = extractvalue { ptr, i32 } %383, 1
  store i32 %385, ptr %10, align 4
  br label %390

386:                                              ; preds = %327
  %387 = landingpad { ptr, i32 }
          cleanup
  %388 = extractvalue { ptr, i32 } %387, 0
  store ptr %388, ptr %9, align 8
  %389 = extractvalue { ptr, i32 } %387, 1
  store i32 %389, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #8
  br label %390

390:                                              ; preds = %386, %382
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #8
  br label %399

391:                                              ; preds = %339, %328
  %392 = landingpad { ptr, i32 }
          cleanup
  %393 = extractvalue { ptr, i32 } %392, 0
  store ptr %393, ptr %9, align 8
  %394 = extractvalue { ptr, i32 } %392, 1
  store i32 %394, ptr %10, align 4
  br label %399

395:                                              ; preds = %352, %350, %348, %340
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %9, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #8
  br label %399

399:                                              ; preds = %395, %391, %390, %381, %372, %363, %283, %279, %275, %271
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #8
  br label %400

400:                                              ; preds = %399, %267
  call void @llvm.lifetime.end.p0(i64 24, ptr %36) #8
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #8
  br label %401

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

402:                                              ; preds = %401, %259
  call void @_ZN4dali11DeviceGuardD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  br label %403

403:                                              ; preds = %402, %258, %177, %108
  %404 = load ptr, ptr %9, align 8
  %405 = load i32, ptr %10, align 4
  %406 = insertvalue { ptr, i32 } poison, ptr %404, 0
  %407 = insertvalue { ptr, i32 } %406, i32 %405, 1
  resume { ptr, i32 } %407

408:                                              ; preds = %125, %71
  unreachable
}

declare noundef zeroext i1 @_Z13cuInitCheckedv() #5

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4dali12optical_flow15OpticalFlowImpl13SetInitParamsENS0_17OpticalFlowParamsE(ptr noundef nonnull align 8 dereferenceable(489), i64, i64) #3 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) #6

declare void @_ZN4dali11DeviceGuardC1Ei(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z9CUDA_CALLI14cudaError_enumEvT_(i32 noundef) #2

declare i32 @cuCtxGetCurrent(ptr noundef) #5

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN4dali12optical_flow12_GLOBAL__N_113VerifySupportE13_NV_OF_STATUS(i32 noundef) #0

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

; Function Attrs: nounwind
declare void @_ZN4dali11DeviceGuardD1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #7

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !18, i64 72}
!10 = !{!"_ZTSN4dali12optical_flow15OpticalFlowImplE", !11, i64 0, !16, i64 24, !18, i64 56, !18, i64 64, !18, i64 72, !14, i64 80, !14, i64 84, !14, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !19, i64 120, !20, i64 216, !20, i64 264, !27, i64 312, !27, i64 320, !27, i64 328, !27, i64 336, !33, i64 344, !34, i64 352, !44, i64 392, !44, i64 416, !44, i64 440, !44, i64 464, !15, i64 488}
!11 = !{!"_ZTSN4dali12optical_flow18OpticalFlowAdapterINS_10ComputeGPUEEE", !12, i64 8}
!12 = !{!"_ZTSN4dali12optical_flow17OpticalFlowParamsE", !13, i64 0, !14, i64 4, !14, i64 8, !15, i64 12, !15, i64 13}
!13 = !{!"float", !7, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{!"bool", !7, i64 0}
!16 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !17, i64 0, !18, i64 8, !7, i64 16}
!17 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!18 = !{!"long", !7, i64 0}
!19 = !{!"_ZTS29_NV_OF_CUDA_API_FUNCTION_LIST", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88}
!20 = !{!"_ZTS18_NV_OF_INIT_PARAMS", !14, i64 0, !14, i64 4, !21, i64 8, !22, i64 12, !23, i64 16, !24, i64 20, !25, i64 24, !25, i64 28, !6, i64 32, !26, i64 40, !25, i64 44}
!21 = !{!"_ZTS30_NV_OF_OUTPUT_VECTOR_GRID_SIZE", !7, i64 0}
!22 = !{!"_ZTS28_NV_OF_HINT_VECTOR_GRID_SIZE", !7, i64 0}
!23 = !{!"_ZTS11_NV_OF_MODE", !7, i64 0}
!24 = !{!"_ZTS17_NV_OF_PERF_LEVEL", !7, i64 0}
!25 = !{!"_ZTS11_NV_OF_BOOL", !7, i64 0}
!26 = !{!"_ZTS29_NV_OF_STEREO_DISPARITY_RANGE", !7, i64 0}
!27 = !{!"_ZTSSt10unique_ptrIN4dali12optical_flow17OpticalFlowBufferESt14default_deleteIS2_EE", !28, i64 0}
!28 = !{!"_ZTSSt15__uniq_ptr_dataIN4dali12optical_flow17OpticalFlowBufferESt14default_deleteIS2_ELb1ELb1EE", !29, i64 0}
!29 = !{!"_ZTSSt15__uniq_ptr_implIN4dali12optical_flow17OpticalFlowBufferESt14default_deleteIS2_EE", !30, i64 0}
!30 = !{!"_ZTSSt5tupleIJPN4dali12optical_flow17OpticalFlowBufferESt14default_deleteIS2_EEE", !31, i64 0}
!31 = !{!"_ZTSSt11_Tuple_implILm0EJPN4dali12optical_flow17OpticalFlowBufferESt14default_deleteIS2_EEE", !32, i64 0}
!32 = !{!"_ZTSSt10_Head_baseILm0EPN4dali12optical_flow17OpticalFlowBufferELb0EE", !6, i64 0}
!33 = !{!"_ZTSN4dali13DALIImageTypeE", !7, i64 0}
!34 = !{!"_ZTSSt10unique_ptrIvSt8functionIFvPvEEE", !35, i64 0}
!35 = !{!"_ZTSSt15__uniq_ptr_dataIvSt8functionIFvPvEELb1ELb1EE", !36, i64 0}
!36 = !{!"_ZTSSt15__uniq_ptr_implIvSt8functionIFvPvEEE", !37, i64 0}
!37 = !{!"_ZTSSt5tupleIJPvSt8functionIFvS0_EEEE", !38, i64 0}
!38 = !{!"_ZTSSt11_Tuple_implILm0EJPvSt8functionIFvS0_EEEE", !39, i64 0, !43, i64 32}
!39 = !{!"_ZTSSt11_Tuple_implILm1EJSt8functionIFvPvEEEE", !40, i64 0}
!40 = !{!"_ZTSSt10_Head_baseILm1ESt8functionIFvPvEELb0EE", !41, i64 0}
!41 = !{!"_ZTSSt8functionIFvPvEE", !42, i64 0, !6, i64 24}
!42 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!43 = !{!"_ZTSSt10_Head_baseILm0EPvLb0EE", !6, i64 0}
!44 = !{!"_ZTSSt6vectorIjSaIjEE", !45, i64 0}
!45 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!48 = !{i64 0, i64 4, !49, i64 4, i64 4, !50, i64 8, i64 4, !50, i64 12, i64 1, !51, i64 13, i64 1, !51}
!49 = !{!13, !13, i64 0}
!50 = !{!14, !14, i64 0}
!51 = !{!15, !15, i64 0}
!52 = !{!10, !14, i64 88}
!53 = !{!10, !6, i64 208}
!54 = !{!10, !6, i64 112}
!55 = !{!10, !14, i64 264}
!56 = !{!10, !14, i64 268}
!57 = !{!10, !21, i64 272}
!58 = !{!10, !14, i64 80}
!59 = !{!10, !14, i64 84}
!60 = !{!10, !18, i64 56}
!61 = !{!10, !18, i64 64}
!62 = !{!10, !6, i64 168}
!63 = !{!10, !6, i64 104}
!64 = !{!10, !6, i64 128}
!65 = !{!66, !66, i64 0}
!66 = !{!"_ZTS13_NV_OF_STATUS", !7, i64 0}
!67 = !{!10, !15, i64 488}


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

%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.0" = type { i8 }
%"class.std::unique_ptr.6" = type { %"struct.std::__uniq_ptr_data.7" }
%"struct.std::__uniq_ptr_data.7" = type { %"class.std::__uniq_ptr_impl.8" }
%"class.std::__uniq_ptr_impl.8" = type { %"class.std::tuple.9" }
%"class.std::tuple.9" = type { %"struct.std::_Tuple_impl.10" }
%"struct.std::_Tuple_impl.10" = type { %"struct.std::_Tuple_impl.11", %"struct.std::_Head_base.13" }
%"struct.std::_Tuple_impl.11" = type { %"struct.std::_Head_base.12" }
%"struct.std::_Head_base.12" = type { %"class.std::function" }
%"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 } }
%"struct.std::_Head_base.13" = type { ptr }
%class.anon = type { i8 }
%"class.dali::DeviceGuard" = type { ptr }

@.str = external hidden unnamed_addr constant [12 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1
@_ZTIN4dali13DALIExceptionE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.13 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [128 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [128 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [7 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4dali12optical_flow15GetCapabilitiesEPF13_NV_OF_STATUSP13NvOFHandle_st11_NV_OF_CAPSPjS5_ES3_S4_(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #0

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z9CUDA_CALLI13_NV_OF_STATUSEvT_(i32 noundef) local_unnamed_addr #2

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN4dali12optical_flow17OutGridSizeToEnumEi(i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4dali12optical_flow15OpticalFlowImpl4InitERNS0_17OpticalFlowParamsE(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr nocapture noundef nonnull readonly align 4 dereferenceable(14) %1) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::allocator.0", align 1
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::allocator.0", align 1
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::allocator.0", align 1
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::allocator.0", align 1
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::allocator.0", align 1
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::unique_ptr.6", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::allocator.0", align 1
  %25 = alloca %"class.std::function", align 8
  %26 = alloca %class.anon, align 1
  %27 = alloca %"class.dali::DeviceGuard", align 8
  %28 = alloca %"class.std::vector", align 8
  %29 = alloca %"class.std::vector", align 8
  %30 = alloca %"class.std::vector", align 8
  %31 = alloca %"class.std::vector", align 8
  %32 = alloca %"class.std::vector", align 8
  %33 = alloca %"class.std::vector", align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::allocator.0", align 1
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::allocator.0", align 1
  %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 %"class.std::allocator.0", align 1
  %42 = getelementptr inbounds i8, ptr %0, i64 72
  %43 = load i64, ptr %42, align 8, !tbaa !5
  switch i64 %43, label %44 [
    i64 1, label %73
    i64 3, label %73
    i64 4, label %73
  ]

44:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %45 unwind label %53

45:                                               ; preds = %44
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %4, ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.13)
          to label %46 unwind label %55

46:                                               ; preds = %45
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %3, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull @.str.2)
          to label %47 unwind label %57

47:                                               ; preds = %46
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #7
  %48 = call ptr @__cxa_allocate_exception(i64 80) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #7
  invoke void @_ZN4dali11make_stringIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEES6_DpRKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %49 unwind label %.thread

49:                                               ; preds = %47
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.14, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %50 unwind label %62

50:                                               ; preds = %49
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #7
  invoke void @_ZN4dali13GetStacktraceB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10)
          to label %51 unwind label %64

51:                                               ; preds = %50
  invoke void @_ZN4dali13DALIExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_S8_(ptr noundef nonnull align 8 dereferenceable(80) %48, ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull %8, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %52 unwind label %66

52:                                               ; preds = %51
  invoke void @__cxa_throw(ptr nonnull %48, ptr nonnull @_ZTIN4dali13DALIExceptionE, ptr nonnull @_ZN4dali13DALIExceptionD2Ev) #8
          to label %261 unwind label %66

53:                                               ; preds = %44
  %54 = landingpad { ptr, i32 }
          cleanup
  br label %60

55:                                               ; preds = %45
  %56 = landingpad { ptr, i32 }
          cleanup
  br label %59

57:                                               ; preds = %46
  %58 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #7
  br label %59

59:                                               ; preds = %57, %55
  %.pn = phi { ptr, i32 } [ %58, %57 ], [ %56, %55 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  br label %60

60:                                               ; preds = %59, %53
  %.pn.pn = phi { ptr, i32 } [ %.pn, %59 ], [ %54, %53 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #7
  br label %72

.thread:                                          ; preds = %47
  %61 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  br label %70

62:                                               ; preds = %49
  %63 = landingpad { ptr, i32 }
          cleanup
  br label %69

64:                                               ; preds = %50
  %65 = landingpad { ptr, i32 }
          cleanup
  br label %68

66:                                               ; preds = %52, %51
  %.034 = phi i1 [ false, %52 ], [ true, %51 ]
  %67 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  br label %68

68:                                               ; preds = %66, %64
  %.135 = phi i1 [ %.034, %66 ], [ true, %64 ]
  %.pn45 = phi { ptr, i32 } [ %67, %66 ], [ %65, %64 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  br label %69

69:                                               ; preds = %62, %68
  %.236 = phi i1 [ %.135, %68 ], [ true, %62 ]
  %.pn45.pn = phi { ptr, i32 } [ %.pn45, %68 ], [ %63, %62 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  br i1 %.236, label %70, label %71

70:                                               ; preds = %.thread, %69
  %.pn45.pn.pn83 = phi { ptr, i32 } [ %61, %.thread ], [ %.pn45.pn, %69 ]
  call void @__cxa_free_exception(ptr %48) #7
  br label %71

71:                                               ; preds = %70, %69
  %.pn45.pn.pn82 = phi { ptr, i32 } [ %.pn45.pn.pn83, %70 ], [ %.pn45.pn, %69 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #7
  br label %72

72:                                               ; preds = %71, %60
  %.pn45.pn.pn.pn = phi { ptr, i32 } [ %.pn45.pn.pn82, %71 ], [ %.pn.pn, %60 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #7
  br label %260

73:                                               ; preds = %2, %2, %2
  %74 = tail call noundef zeroext i1 @_Z13cuInitCheckedv()
  br i1 %74, label %116, label %75

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

76:                                               ; preds = %75
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.15)
          to label %77 unwind label %90

77:                                               ; preds = %76
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @.str.2)
          to label %78 unwind label %92

78:                                               ; preds = %77
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @.str.16, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %79 unwind label %96

79:                                               ; preds = %78
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #7
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull @.str.5, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %80 unwind label %98

80:                                               ; preds = %79
  %81 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %82 unwind label %100

82:                                               ; preds = %80
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  %83 = call ptr @__cxa_allocate_exception(i64 80) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #7
  invoke void @_ZN4dali11make_stringIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEES6_DpRKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %84 unwind label %.thread84

84:                                               ; preds = %82
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.17, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %85 unwind label %104

85:                                               ; preds = %84
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #7
  invoke void @_ZN4dali13GetStacktraceB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %21)
          to label %86 unwind label %106

86:                                               ; preds = %85
  invoke void @_ZN4dali13DALIExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_S8_(ptr noundef nonnull align 8 dereferenceable(80) %83, ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull %19, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %87 unwind label %108

87:                                               ; preds = %86
  invoke void @__cxa_throw(ptr nonnull %83, ptr nonnull @_ZTIN4dali13DALIExceptionE, ptr nonnull @_ZN4dali13DALIExceptionD2Ev) #8
          to label %261 unwind label %108

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

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

92:                                               ; preds = %77
  %93 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  br label %94

94:                                               ; preds = %92, %90
  %.pn50 = phi { ptr, i32 } [ %93, %92 ], [ %91, %90 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  br label %95

95:                                               ; preds = %94, %88
  %.pn50.pn = phi { ptr, i32 } [ %.pn50, %94 ], [ %89, %88 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  br label %115

96:                                               ; preds = %78
  %97 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #7
  br label %114

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

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

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

.thread84:                                        ; preds = %82
  %103 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  br label %112

104:                                              ; preds = %84
  %105 = landingpad { ptr, i32 }
          cleanup
  br label %111

106:                                              ; preds = %85
  %107 = landingpad { ptr, i32 }
          cleanup
  br label %110

108:                                              ; preds = %87, %86
  %.038 = phi i1 [ false, %87 ], [ true, %86 ]
  %109 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  br label %110

110:                                              ; preds = %108, %106
  %.139 = phi i1 [ %.038, %108 ], [ true, %106 ]
  %.pn55 = phi { ptr, i32 } [ %109, %108 ], [ %107, %106 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  br label %111

111:                                              ; preds = %104, %110
  %.240 = phi i1 [ %.139, %110 ], [ true, %104 ]
  %.pn55.pn = phi { ptr, i32 } [ %.pn55, %110 ], [ %105, %104 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  br i1 %.240, label %112, label %113

112:                                              ; preds = %.thread84, %111
  %.pn55.pn.pn87 = phi { ptr, i32 } [ %103, %.thread84 ], [ %.pn55.pn, %111 ]
  call void @__cxa_free_exception(ptr %83) #7
  br label %113

113:                                              ; preds = %111, %112, %102
  %.pn55.pn.pn.pn = phi { ptr, i32 } [ %.pn55.pn.pn87, %112 ], [ %.pn55.pn, %111 ], [ %.pn53, %102 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  br label %114

114:                                              ; preds = %113, %96
  %.pn55.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn55.pn.pn.pn, %113 ], [ %97, %96 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  br label %115

115:                                              ; preds = %114, %95
  %.pn55.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn55.pn.pn.pn.pn, %114 ], [ %.pn50.pn, %95 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  br label %260

116:                                              ; preds = %73
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull @.str.18, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %117 unwind label %162

117:                                              ; preds = %116
  %118 = invoke noundef ptr @_ZN4dali12optical_flow15OpticalFlowImpl15LoadOpticalFlowERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %119 unwind label %164

119:                                              ; preds = %117
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #7
  call void @"_ZNSt8functionIFvPvEEC2IZN4dali12optical_flow15OpticalFlowImpl4InitERNS5_17OpticalFlowParamsEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 1 dereferenceable(1) %26) #7
  call void @_ZNSt10unique_ptrIvSt8functionIFvPvEEEC2IS3_vEES1_NSt9enable_ifIXntsr19is_lvalue_referenceIT_EE5valueEOS7_E4typeE(ptr noundef nonnull align 8 dereferenceable(40) %22, ptr noundef %118, ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  %120 = getelementptr inbounds i8, ptr %0, i64 352
  %121 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt10unique_ptrIvSt8functionIFvPvEEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(40) %120, ptr noundef nonnull align 8 dereferenceable(40) %22) #7
  call void @_ZNSt10unique_ptrIvSt8functionIFvPvEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %22) #7
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %22) #7
  %.sroa.0.0.copyload = load i64, ptr %1, align 4
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %1, i64 8
  %.sroa.2.0.copyload = load i64, ptr %.sroa.2.0..sroa_idx, align 4
  call void @_ZN4dali12optical_flow15OpticalFlowImpl13SetInitParamsENS0_17OpticalFlowParamsE(ptr noundef nonnull align 8 dereferenceable(489) %0, i64 %.sroa.0.0.copyload, i64 %.sroa.2.0.copyload)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #7
  %122 = getelementptr inbounds i8, ptr %0, i64 88
  %123 = load i32, ptr %122, align 8, !tbaa !47
  call void @_ZN4dali11DeviceGuardC1Ei(ptr noundef nonnull align 8 dereferenceable(8) %27, i32 noundef %123)
  %124 = getelementptr inbounds i8, ptr %0, i64 96
  %125 = invoke i32 @cuCtxGetCurrent(ptr noundef nonnull %124)
          to label %126 unwind label %167

126:                                              ; preds = %119
  invoke void @_Z9CUDA_CALLI14cudaError_enumEvT_(i32 noundef %125)
          to label %127 unwind label %167

127:                                              ; preds = %126
  invoke void @_ZN4dali12optical_flow15OpticalFlowImpl8CreateOfEv(ptr noundef nonnull align 8 dereferenceable(489) %0)
          to label %128 unwind label %167

128:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %28) #7
  %129 = getelementptr inbounds i8, ptr %0, i64 208
  %130 = load ptr, ptr %129, align 8, !tbaa !48
  %131 = getelementptr inbounds i8, ptr %0, i64 112
  %132 = load ptr, ptr %131, align 8, !tbaa !49
  invoke void @_ZN4dali12optical_flow15GetCapabilitiesEPF13_NV_OF_STATUSP13NvOFHandle_st11_NV_OF_CAPSPjS5_ES3_S4_(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %28, ptr noundef %130, ptr noundef %132, i32 noundef 1)
          to label %133 unwind label %169

133:                                              ; preds = %128
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %29) #7
  %134 = load ptr, ptr %129, align 8, !tbaa !48
  %135 = load ptr, ptr %131, align 8, !tbaa !49
  invoke void @_ZN4dali12optical_flow15GetCapabilitiesEPF13_NV_OF_STATUSP13NvOFHandle_st11_NV_OF_CAPSPjS5_ES3_S4_(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %29, ptr noundef %134, ptr noundef %135, i32 noundef 1)
          to label %136 unwind label %171

136:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %30) #7
  %137 = load ptr, ptr %129, align 8, !tbaa !48
  %138 = load ptr, ptr %131, align 8, !tbaa !49
  invoke void @_ZN4dali12optical_flow15GetCapabilitiesEPF13_NV_OF_STATUSP13NvOFHandle_st11_NV_OF_CAPSPjS5_ES3_S4_(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %30, ptr noundef %137, ptr noundef %138, i32 noundef 4)
          to label %139 unwind label %173

139:                                              ; preds = %136
  %140 = getelementptr inbounds i8, ptr %0, i64 392
  %141 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIjSaIjEEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %140, ptr noundef nonnull align 8 dereferenceable(24) %30) #7
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31) #7
  %142 = load ptr, ptr %129, align 8, !tbaa !48
  %143 = load ptr, ptr %131, align 8, !tbaa !49
  invoke void @_ZN4dali12optical_flow15GetCapabilitiesEPF13_NV_OF_STATUSP13NvOFHandle_st11_NV_OF_CAPSPjS5_ES3_S4_(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %31, ptr noundef %142, ptr noundef %143, i32 noundef 5)
          to label %144 unwind label %175

144:                                              ; preds = %139
  %145 = getelementptr inbounds i8, ptr %0, i64 440
  %146 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIjSaIjEEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %145, ptr noundef nonnull align 8 dereferenceable(24) %31) #7
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %32) #7
  %147 = load ptr, ptr %129, align 8, !tbaa !48
  %148 = load ptr, ptr %131, align 8, !tbaa !49
  invoke void @_ZN4dali12optical_flow15GetCapabilitiesEPF13_NV_OF_STATUSP13NvOFHandle_st11_NV_OF_CAPSPjS5_ES3_S4_(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %32, ptr noundef %147, ptr noundef %148, i32 noundef 6)
          to label %149 unwind label %177

149:                                              ; preds = %144
  %150 = getelementptr inbounds i8, ptr %0, i64 416
  %151 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIjSaIjEEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %150, ptr noundef nonnull align 8 dereferenceable(24) %32) #7
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %33) #7
  %152 = load ptr, ptr %129, align 8, !tbaa !48
  %153 = load ptr, ptr %131, align 8, !tbaa !49
  invoke void @_ZN4dali12optical_flow15GetCapabilitiesEPF13_NV_OF_STATUSP13NvOFHandle_st11_NV_OF_CAPSPjS5_ES3_S4_(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %33, ptr noundef %152, ptr noundef %153, i32 noundef 7)
          to label %154 unwind label %179

154:                                              ; preds = %149
  %155 = getelementptr inbounds i8, ptr %0, i64 464
  %156 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIjSaIjEEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %155, ptr noundef nonnull align 8 dereferenceable(24) %33) #7
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %33) #7
  %157 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %140) #7
  %.not = icmp eq i64 %157, 0
  br i1 %.not, label %181, label %158

158:                                              ; preds = %154
  %159 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %140, i64 noundef 0) #7
  %160 = load i32, ptr %159, align 4, !tbaa !50
  %161 = getelementptr inbounds i8, ptr %0, i64 264
  store i32 %160, ptr %161, align 8, !tbaa !51
  br label %181

162:                                              ; preds = %116
  %163 = landingpad { ptr, i32 }
          cleanup
  br label %166

164:                                              ; preds = %117
  %165 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  br label %166

166:                                              ; preds = %164, %162
  %.pn62 = phi { ptr, i32 } [ %165, %164 ], [ %163, %162 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %22) #7
  br label %260

167:                                              ; preds = %127, %126, %119
  %168 = landingpad { ptr, i32 }
          cleanup
  br label %259

169:                                              ; preds = %128
  %170 = landingpad { ptr, i32 }
          cleanup
  br label %258

171:                                              ; preds = %133
  %172 = landingpad { ptr, i32 }
          cleanup
  br label %257

173:                                              ; preds = %136
  %174 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %30) #7
  br label %256

175:                                              ; preds = %139
  %176 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #7
  br label %256

177:                                              ; preds = %144
  %178 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %32) #7
  br label %256

179:                                              ; preds = %149
  %180 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %33) #7
  br label %256

181:                                              ; preds = %158, %154
  %182 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %145) #7
  %.not64 = icmp eq i64 %182, 0
  br i1 %.not64, label %187, label %183

183:                                              ; preds = %181
  %184 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %145, i64 noundef 0) #7
  %185 = load i32, ptr %184, align 4, !tbaa !50
  %186 = getelementptr inbounds i8, ptr %0, i64 268
  store i32 %185, ptr %186, align 4, !tbaa !52
  br label %187

187:                                              ; preds = %183, %181
  %188 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %28) #7
  %.not65 = icmp eq i64 %188, 0
  br i1 %.not65, label %194, label %189

189:                                              ; preds = %187
  %190 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef 0) #7
  %191 = load i32, ptr %190, align 4, !tbaa !50
  %192 = call noundef i32 @_ZN4dali12optical_flow17OutGridSizeToEnumEi(i32 noundef %191)
  %193 = getelementptr inbounds i8, ptr %0, i64 272
  store i32 %192, ptr %193, align 8, !tbaa !53
  br label %194

194:                                              ; preds = %189, %187
  %195 = getelementptr inbounds i8, ptr %0, i64 80
  %196 = load i32, ptr %195, align 8, !tbaa !54
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %35) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull @.str.19, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %197 unwind label %232

197:                                              ; preds = %194
  invoke void @_ZN4dali12optical_flow15IsGridSupportedERKSt6vectorIjSaIjEEiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(24) %28, i32 noundef %196, ptr noundef nonnull %34)
          to label %198 unwind label %234

198:                                              ; preds = %197
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #7
  %199 = getelementptr inbounds i8, ptr %0, i64 84
  %200 = load i32, ptr %199, align 4, !tbaa !55
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %37) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull @.str.20, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %201 unwind label %237

201:                                              ; preds = %198
  invoke void @_ZN4dali12optical_flow15IsGridSupportedERKSt6vectorIjSaIjEEiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(24) %29, i32 noundef %200, ptr noundef nonnull %36)
          to label %202 unwind label %239

202:                                              ; preds = %201
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #7
  %203 = getelementptr inbounds i8, ptr %0, i64 56
  %204 = load i64, ptr %203, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %39) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull @.str.21, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %205 unwind label %242

205:                                              ; preds = %202
  %206 = trunc i64 %204 to i32
  invoke void @_ZN4dali12optical_flow15IsSizeSupportedERSt6vectorIjSaIjEES4_iNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(24) %140, ptr noundef nonnull align 8 dereferenceable(24) %150, i32 noundef %206, ptr noundef nonnull %38)
          to label %207 unwind label %244

207:                                              ; preds = %205
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #7
  %208 = getelementptr inbounds i8, ptr %0, i64 64
  %209 = load i64, ptr %208, align 8, !tbaa !57
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull @.str.22, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %210 unwind label %247

210:                                              ; preds = %207
  %211 = trunc i64 %209 to i32
  invoke void @_ZN4dali12optical_flow15IsSizeSupportedERSt6vectorIjSaIjEES4_iNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(24) %145, ptr noundef nonnull align 8 dereferenceable(24) %155, i32 noundef %211, ptr noundef nonnull %40)
          to label %212 unwind label %249

212:                                              ; preds = %210
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #7
  %213 = getelementptr inbounds i8, ptr %0, i64 168
  %214 = load ptr, ptr %213, align 8, !tbaa !58
  %215 = load ptr, ptr %131, align 8, !tbaa !49
  %216 = getelementptr inbounds i8, ptr %0, i64 104
  %217 = load ptr, ptr %216, align 8, !tbaa !59
  %218 = invoke noundef i32 %214(ptr noundef %215, ptr noundef %217, ptr noundef %217)
          to label %219 unwind label %252

219:                                              ; preds = %212
  invoke void @_Z9CUDA_CALLI13_NV_OF_STATUSEvT_(i32 noundef %218)
          to label %220 unwind label %252

220:                                              ; preds = %219
  %221 = getelementptr inbounds i8, ptr %0, i64 128
  %222 = load ptr, ptr %221, align 8, !tbaa !60
  %223 = load ptr, ptr %131, align 8, !tbaa !49
  %224 = getelementptr inbounds i8, ptr %0, i64 216
  %225 = invoke noundef i32 %222(ptr noundef %223, ptr noundef nonnull %224)
          to label %226 unwind label %254

226:                                              ; preds = %220
  %227 = invoke noundef i32 @_ZN4dali12optical_flow12_GLOBAL__N_113VerifySupportE13_NV_OF_STATUS(i32 noundef %225)
          to label %228 unwind label %254

228:                                              ; preds = %226
  invoke void @_Z9CUDA_CALLI13_NV_OF_STATUSEvT_(i32 noundef %227)
          to label %229 unwind label %254

229:                                              ; preds = %228
  %230 = getelementptr inbounds i8, ptr %0, i64 488
  store i8 1, ptr %230, align 8, !tbaa !61
  invoke void @_ZN4dali12optical_flow15OpticalFlowImpl13CreateBuffersEv(ptr noundef nonnull align 8 dereferenceable(489) %0)
          to label %231 unwind label %254

231:                                              ; preds = %229
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #7
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #7
  call void @_ZN4dali11DeviceGuardD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #7
  ret void

232:                                              ; preds = %194
  %233 = landingpad { ptr, i32 }
          cleanup
  br label %236

234:                                              ; preds = %197
  %235 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  br label %236

236:                                              ; preds = %234, %232
  %.pn66 = phi { ptr, i32 } [ %235, %234 ], [ %233, %232 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #7
  br label %256

237:                                              ; preds = %198
  %238 = landingpad { ptr, i32 }
          cleanup
  br label %241

239:                                              ; preds = %201
  %240 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  br label %241

241:                                              ; preds = %239, %237
  %.pn68 = phi { ptr, i32 } [ %240, %239 ], [ %238, %237 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #7
  br label %256

242:                                              ; preds = %202
  %243 = landingpad { ptr, i32 }
          cleanup
  br label %246

244:                                              ; preds = %205
  %245 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  br label %246

246:                                              ; preds = %244, %242
  %.pn70 = phi { ptr, i32 } [ %245, %244 ], [ %243, %242 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #7
  br label %256

247:                                              ; preds = %207
  %248 = landingpad { ptr, i32 }
          cleanup
  br label %251

249:                                              ; preds = %210
  %250 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  br label %251

251:                                              ; preds = %249, %247
  %.pn72 = phi { ptr, i32 } [ %250, %249 ], [ %248, %247 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #7
  br label %256

252:                                              ; preds = %219, %212
  %253 = landingpad { ptr, i32 }
          cleanup
  br label %256

254:                                              ; preds = %229, %228, %226, %220
  %255 = landingpad { ptr, i32 }
          cleanup
  br label %256

256:                                              ; preds = %254, %252, %251, %246, %241, %236, %179, %177, %175, %173
  %.pn74 = phi { ptr, i32 } [ %255, %254 ], [ %253, %252 ], [ %.pn72, %251 ], [ %.pn70, %246 ], [ %.pn68, %241 ], [ %.pn66, %236 ], [ %180, %179 ], [ %178, %177 ], [ %176, %175 ], [ %174, %173 ]
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #7
  br label %257

257:                                              ; preds = %256, %171
  %.pn74.pn = phi { ptr, i32 } [ %.pn74, %256 ], [ %172, %171 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #7
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #7
  br label %258

258:                                              ; preds = %257, %169
  %.pn74.pn.pn = phi { ptr, i32 } [ %.pn74.pn, %257 ], [ %170, %169 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #7
  br label %259

259:                                              ; preds = %258, %167
  %.pn74.pn.pn.pn = phi { ptr, i32 } [ %.pn74.pn.pn, %258 ], [ %168, %167 ]
  call void @_ZN4dali11DeviceGuardD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #7
  br label %260

260:                                              ; preds = %259, %166, %115, %72
  %.pn74.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn74.pn.pn.pn, %259 ], [ %.pn62, %166 ], [ %.pn55.pn.pn.pn.pn.pn, %115 ], [ %.pn45.pn.pn.pn, %72 ]
  resume { ptr, i32 } %.pn74.pn.pn.pn.pn

261:                                              ; preds = %87, %52
  unreachable
}

declare noundef zeroext i1 @_Z13cuInitCheckedv() local_unnamed_addr #5

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4dali12optical_flow15OpticalFlowImpl13SetInitParamsENS0_17OpticalFlowParamsE(ptr noundef nonnull align 8 dereferenceable(489), i64, i64) local_unnamed_addr #3 align 2

declare void @_ZN4dali11DeviceGuardC1Ei(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z9CUDA_CALLI14cudaError_enumEvT_(i32 noundef) local_unnamed_addr #2

declare i32 @cuCtxGetCurrent(ptr noundef) local_unnamed_addr #5

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN4dali12optical_flow12_GLOBAL__N_113VerifySupportE13_NV_OF_STATUS(i32 noundef) local_unnamed_addr #0

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

; Function Attrs: nounwind
declare void @_ZN4dali11DeviceGuardD1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #6

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !17, i64 72}
!6 = !{!"_ZTSN4dali12optical_flow15OpticalFlowImplE", !7, i64 0, !14, i64 24, !17, i64 56, !17, i64 64, !17, i64 72, !12, i64 80, !12, i64 84, !12, i64 88, !16, i64 96, !16, i64 104, !16, i64 112, !18, i64 120, !19, i64 216, !19, i64 264, !26, i64 312, !26, i64 320, !26, i64 328, !26, i64 336, !32, i64 344, !33, i64 352, !43, i64 392, !43, i64 416, !43, i64 440, !43, i64 464, !13, i64 488}
!7 = !{!"_ZTSN4dali12optical_flow18OpticalFlowAdapterINS_10ComputeGPUEEE", !8, i64 8}
!8 = !{!"_ZTSN4dali12optical_flow17OpticalFlowParamsE", !9, i64 0, !12, i64 4, !12, i64 8, !13, i64 12, !13, i64 13}
!9 = !{!"float", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"int", !10, i64 0}
!13 = !{!"bool", !10, i64 0}
!14 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !15, i64 0, !17, i64 8, !10, i64 16}
!15 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !16, i64 0}
!16 = !{!"any pointer", !10, i64 0}
!17 = !{!"long", !10, i64 0}
!18 = !{!"_ZTS29_NV_OF_CUDA_API_FUNCTION_LIST", !16, i64 0, !16, i64 8, !16, i64 16, !16, i64 24, !16, i64 32, !16, i64 40, !16, i64 48, !16, i64 56, !16, i64 64, !16, i64 72, !16, i64 80, !16, i64 88}
!19 = !{!"_ZTS18_NV_OF_INIT_PARAMS", !12, i64 0, !12, i64 4, !20, i64 8, !21, i64 12, !22, i64 16, !23, i64 20, !24, i64 24, !24, i64 28, !16, i64 32, !25, i64 40, !24, i64 44}
!20 = !{!"_ZTS30_NV_OF_OUTPUT_VECTOR_GRID_SIZE", !10, i64 0}
!21 = !{!"_ZTS28_NV_OF_HINT_VECTOR_GRID_SIZE", !10, i64 0}
!22 = !{!"_ZTS11_NV_OF_MODE", !10, i64 0}
!23 = !{!"_ZTS17_NV_OF_PERF_LEVEL", !10, i64 0}
!24 = !{!"_ZTS11_NV_OF_BOOL", !10, i64 0}
!25 = !{!"_ZTS29_NV_OF_STEREO_DISPARITY_RANGE", !10, i64 0}
!26 = !{!"_ZTSSt10unique_ptrIN4dali12optical_flow17OpticalFlowBufferESt14default_deleteIS2_EE", !27, i64 0}
!27 = !{!"_ZTSSt15__uniq_ptr_dataIN4dali12optical_flow17OpticalFlowBufferESt14default_deleteIS2_ELb1ELb1EE", !28, i64 0}
!28 = !{!"_ZTSSt15__uniq_ptr_implIN4dali12optical_flow17OpticalFlowBufferESt14default_deleteIS2_EE", !29, i64 0}
!29 = !{!"_ZTSSt5tupleIJPN4dali12optical_flow17OpticalFlowBufferESt14default_deleteIS2_EEE", !30, i64 0}
!30 = !{!"_ZTSSt11_Tuple_implILm0EJPN4dali12optical_flow17OpticalFlowBufferESt14default_deleteIS2_EEE", !31, i64 0}
!31 = !{!"_ZTSSt10_Head_baseILm0EPN4dali12optical_flow17OpticalFlowBufferELb0EE", !16, i64 0}
!32 = !{!"_ZTSN4dali13DALIImageTypeE", !10, i64 0}
!33 = !{!"_ZTSSt10unique_ptrIvSt8functionIFvPvEEE", !34, i64 0}
!34 = !{!"_ZTSSt15__uniq_ptr_dataIvSt8functionIFvPvEELb1ELb1EE", !35, i64 0}
!35 = !{!"_ZTSSt15__uniq_ptr_implIvSt8functionIFvPvEEE", !36, i64 0}
!36 = !{!"_ZTSSt5tupleIJPvSt8functionIFvS0_EEEE", !37, i64 0}
!37 = !{!"_ZTSSt11_Tuple_implILm0EJPvSt8functionIFvS0_EEEE", !38, i64 0, !42, i64 32}
!38 = !{!"_ZTSSt11_Tuple_implILm1EJSt8functionIFvPvEEEE", !39, i64 0}
!39 = !{!"_ZTSSt10_Head_baseILm1ESt8functionIFvPvEELb0EE", !40, i64 0}
!40 = !{!"_ZTSSt8functionIFvPvEE", !41, i64 0, !16, i64 24}
!41 = !{!"_ZTSSt14_Function_base", !10, i64 0, !16, i64 16}
!42 = !{!"_ZTSSt10_Head_baseILm0EPvLb0EE", !16, i64 0}
!43 = !{!"_ZTSSt6vectorIjSaIjEE", !44, i64 0}
!44 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!47 = !{!6, !12, i64 88}
!48 = !{!6, !16, i64 208}
!49 = !{!6, !16, i64 112}
!50 = !{!12, !12, i64 0}
!51 = !{!6, !12, i64 264}
!52 = !{!6, !12, i64 268}
!53 = !{!6, !20, i64 272}
!54 = !{!6, !12, i64 80}
!55 = !{!6, !12, i64 84}
!56 = !{!6, !17, i64 56}
!57 = !{!6, !17, i64 64}
!58 = !{!6, !16, i64 168}
!59 = !{!6, !16, i64 104}
!60 = !{!6, !16, i64 128}
!61 = !{!6, !13, i64 488}


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