; LLVM IR from NVIDIA/TensorRT :: plugin/multilevelProposeROI (multilevelProposeROIPlugin)

; 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::shared_ptr.37" = type { %"class.std::__shared_ptr.38" }
%"class.std::__shared_ptr.38" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::vector.40" = type { %"struct.std::_Vector_base.41" }
%"struct.std::_Vector_base.41" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.42" = type { i8 }
%"class.std::vector.17" = type { %"struct.std::_Vector_base.18" }
%"struct.std::_Vector_base.18" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.19" = type { i8 }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::vector.46" = type { %"struct.std::_Vector_base.47" }
%"struct.std::_Vector_base.47" = type { %"struct.std::_Vector_base<void *, std::allocator<void *>>::_Vector_impl" }
%"struct.std::_Vector_base<void *, std::allocator<void *>>::_Vector_impl" = type { %"struct.std::_Vector_base<void *, std::allocator<void *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<void *, std::allocator<void *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::shared_ptr.51" = type { %"class.std::__shared_ptr.52" }
%"class.std::__shared_ptr.52" = type { ptr, %"class.std::__shared_count" }
%"class.nvinfer1::plugin::MultilevelProposeROI" = type { %"class.nvinfer1::IPluginV2Ext", i32, i32, i32, i32, float, float, i32, %"class.std::vector.17", %"class.std::shared_ptr", %"class.std::vector.22", %"class.std::vector.27", %"class.std::vector.22", %"class.std::vector.22", %"class.std::vector.32", %"class.std::vector.32", ptr, ptr, %"class.std::shared_ptr.37", %"class.nvinfer1::Dims64", i32, %struct.RefineNMSParameters, %"class.std::__cxx11::basic_string" }
%"class.nvinfer1::IPluginV2Ext" = type { %"class.nvinfer1::IPluginV2" }
%"class.nvinfer1::IPluginV2" = type { ptr }
%"class.std::vector.27" = type { %"struct.std::_Vector_base.28" }
%"struct.std::_Vector_base.28" = type { %"struct.std::_Vector_base<std::vector<float>, std::allocator<std::vector<float>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<float>, std::allocator<std::vector<float>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<float>, std::allocator<std::vector<float>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<float>, std::allocator<std::vector<float>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.22" = type { %"struct.std::_Vector_base.23" }
%"struct.std::_Vector_base.23" = type { %"struct.std::_Vector_base<std::shared_ptr<nvinfer1::plugin::CudaBind<float>>, std::allocator<std::shared_ptr<nvinfer1::plugin::CudaBind<float>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::shared_ptr<nvinfer1::plugin::CudaBind<float>>, std::allocator<std::shared_ptr<nvinfer1::plugin::CudaBind<float>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::shared_ptr<nvinfer1::plugin::CudaBind<float>>, std::allocator<std::shared_ptr<nvinfer1::plugin::CudaBind<float>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::shared_ptr<nvinfer1::plugin::CudaBind<float>>, std::allocator<std::shared_ptr<nvinfer1::plugin::CudaBind<float>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.32" = type { %"struct.std::_Vector_base.33" }
%"struct.std::_Vector_base.33" = type { %"struct.std::_Vector_base<std::shared_ptr<nvinfer1::plugin::CudaBind<unsigned short>>, std::allocator<std::shared_ptr<nvinfer1::plugin::CudaBind<unsigned short>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::shared_ptr<nvinfer1::plugin::CudaBind<unsigned short>>, std::allocator<std::shared_ptr<nvinfer1::plugin::CudaBind<unsigned short>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::shared_ptr<nvinfer1::plugin::CudaBind<unsigned short>>, std::allocator<std::shared_ptr<nvinfer1::plugin::CudaBind<unsigned short>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::shared_ptr<nvinfer1::plugin::CudaBind<unsigned short>>, std::allocator<std::shared_ptr<nvinfer1::plugin::CudaBind<unsigned short>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.nvinfer1::Dims64" = type { i32, [8 x i64] }
%struct.RefineNMSParameters = type { i32, i32, i32, float, float }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"struct.nvinfer1::plugin::CudaBind" = type { i64, ptr }
%"struct.nvinfer1::plugin::CudaBind.45" = type { i64, ptr }
%"struct.nvinfer1::plugin::CudaBind.54" = type { i64, ptr }

@.str.101 = external hidden unnamed_addr constant [108 x i8], align 1
@__func__._ZN8nvinfer16plugin20MultilevelProposeROI10initializeEv = external hidden unnamed_addr constant [11 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

; Function Attrs: mustprogress nounwind uwtable
define dso_local noundef i32 @_ZN8nvinfer16plugin20MultilevelProposeROI10initializeEv(ptr noundef nonnull align 8 dereferenceable(384) %0) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.std::shared_ptr.37", align 8
  %4 = alloca i32, align 4
  %5 = alloca %"class.std::vector.40", align 8
  %6 = alloca float, align 4
  %7 = alloca %"class.std::allocator.42", align 1
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca %"class.std::vector.17", align 8
  %11 = alloca %"class.std::allocator.19", align 1
  %12 = alloca %"class.std::shared_ptr", align 8
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca %"class.std::shared_ptr.37", align 8
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca ptr, align 8
  %26 = alloca %"class.std::vector.46", align 8
  %27 = alloca %"class.std::vector.46", align 8
  %28 = alloca i32, align 4
  %29 = alloca %"class.std::shared_ptr.37", align 8
  %30 = alloca i32, align 4
  %31 = alloca %"class.std::shared_ptr.37", align 8
  %32 = alloca i32, align 4
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca %"class.std::shared_ptr.51", align 8
  %36 = alloca i32, align 4
  %37 = alloca %"class.std::shared_ptr.51", align 8
  %38 = alloca i32, align 4
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca i32, align 4
  %42 = alloca ptr, align 8
  %43 = alloca i32, align 4
  %44 = alloca ptr, align 8
  %45 = alloca i32, align 4
  %46 = alloca ptr, align 8
  %47 = alloca i32, align 4
  %48 = alloca ptr, align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %49 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %3) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #7
  store i32 4, ptr %4, align 4, !tbaa !9
  invoke void @_ZSt11make_sharedIN8nvinfer16plugin8CudaBindIfEEJiEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES6_E4typeEEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.37") align 8 %3, ptr noundef nonnull align 4 dereferenceable(4) %4)
          to label %50 unwind label %314

50:                                               ; preds = %1
  %51 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 18
  %52 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN8nvinfer16plugin8CudaBindIfEEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(16) %51, ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  call void @_ZNSt12__shared_ptrIN8nvinfer16plugin8CudaBindIfEELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %5) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #7
  store float 1.000000e+00, ptr %6, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #7
  call void @_ZNSaIfEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #7
  invoke void @_ZNSt6vectorIfSaIfEEC2EmRKfRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 4, ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %53 unwind label %314

53:                                               ; preds = %50
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #7
  %54 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 18
  %55 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN8nvinfer16plugin8CudaBindIfEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %54) #7
  %56 = getelementptr inbounds %"struct.nvinfer1::plugin::CudaBind", ptr %55, i32 0, i32 1
  %57 = load ptr, ptr %56, align 8, !tbaa !13
  %58 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  %59 = invoke i32 @cudaMemcpy(ptr noundef %57, ptr noundef %58, i64 noundef 16, i32 noundef 1)
          to label %60 unwind label %314

60:                                               ; preds = %53
  store i32 %59, ptr %8, align 4, !tbaa !16
  %61 = load i32, ptr %8, align 4, !tbaa !16
  %62 = icmp ne i32 %61, 0
  br i1 %62, label %63, label %70

63:                                               ; preds = %60
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #7
  %64 = load i32, ptr %8, align 4, !tbaa !16
  %65 = invoke ptr @cudaGetErrorString(i32 noundef %64)
          to label %66 unwind label %314

66:                                               ; preds = %63
  store ptr %65, ptr %9, align 8, !tbaa !5
  %67 = load i32, ptr %8, align 4, !tbaa !16
  %68 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN8nvinfer16plugin14throwCudaErrorEPKcS2_iiS2_(ptr noundef @.str.101, ptr noundef @__func__._ZN8nvinfer16plugin20MultilevelProposeROI10initializeEv, i32 noundef 172, i32 noundef %67, ptr noundef %68) #8
          to label %69 unwind label %314

69:                                               ; preds = %66
  unreachable

70:                                               ; preds = %60
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %10) #7
  %71 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 7
  %72 = load i32, ptr %71, align 8, !tbaa !18
  %73 = sext i32 %72 to i64
  %74 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #7
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #7
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKiRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %73, ptr noundef nonnull align 4 dereferenceable(4) %74, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %75 unwind label %314

75:                                               ; preds = %70
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %12) #7
  %76 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 7
  invoke void @_ZSt11make_sharedIN8nvinfer16plugin8CudaBindIiEEJRiEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES7_E4typeEEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %12, ptr noundef nonnull align 4 dereferenceable(4) %76)
          to label %77 unwind label %314

77:                                               ; preds = %75
  %78 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 9
  %79 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN8nvinfer16plugin8CudaBindIiEEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(16) %78, ptr noundef nonnull align 8 dereferenceable(16) %12) #7
  call void @_ZNSt12__shared_ptrIN8nvinfer16plugin8CudaBindIiEELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #7
  %80 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 9
  %81 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN8nvinfer16plugin8CudaBindIiEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %80) #7
  %82 = getelementptr inbounds %"struct.nvinfer1::plugin::CudaBind.45", ptr %81, i32 0, i32 1
  %83 = load ptr, ptr %82, align 8, !tbaa !48
  %84 = call noundef ptr @_ZNSt6vectorIiSaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  %85 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 7
  %86 = load i32, ptr %85, align 8, !tbaa !18
  %87 = sext i32 %86 to i64
  %88 = mul i64 4, %87
  %89 = invoke i32 @cudaMemcpy(ptr noundef %83, ptr noundef %84, i64 noundef %88, i32 noundef 1)
          to label %90 unwind label %314

90:                                               ; preds = %77
  store i32 %89, ptr %13, align 4, !tbaa !16
  %91 = load i32, ptr %13, align 4, !tbaa !16
  %92 = icmp ne i32 %91, 0
  br i1 %92, label %93, label %100

93:                                               ; preds = %90
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  %94 = load i32, ptr %13, align 4, !tbaa !16
  %95 = invoke ptr @cudaGetErrorString(i32 noundef %94)
          to label %96 unwind label %314

96:                                               ; preds = %93
  store ptr %95, ptr %14, align 8, !tbaa !5
  %97 = load i32, ptr %13, align 4, !tbaa !16
  %98 = load ptr, ptr %14, align 8, !tbaa !5
  invoke void @_ZN8nvinfer16plugin14throwCudaErrorEPKcS2_iiS2_(ptr noundef @.str.101, ptr noundef @__func__._ZN8nvinfer16plugin20MultilevelProposeROI10initializeEv, i32 noundef 180, i32 noundef %97, ptr noundef %98) #8
          to label %99 unwind label %314

99:                                               ; preds = %96
  unreachable

100:                                              ; preds = %90
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #7
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %101

101:                                              ; preds = %166, %100
  %102 = load i32, ptr %15, align 4, !tbaa !9
  %103 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 4
  %104 = load i32, ptr %103, align 4, !tbaa !50
  %105 = icmp slt i32 %102, %104
  br i1 %105, label %107, label %106

106:                                              ; preds = %101
  store i32 2, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  br label %169

107:                                              ; preds = %101
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #7
  %108 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 8
  %109 = load i32, ptr %15, align 4, !tbaa !9
  %110 = sext i32 %109 to i64
  %111 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %108, i64 noundef %110) #7
  %112 = load i32, ptr %111, align 4, !tbaa !9
  store i32 %112, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  %113 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 11
  %114 = load i32, ptr %15, align 4, !tbaa !9
  %115 = sext i32 %114 to i64
  %116 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IfSaIfEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %113, i64 noundef %115) #7
  %117 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %116) #7
  store ptr %117, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  %118 = load i32, ptr %17, align 4, !tbaa !9
  %119 = mul nsw i32 %118, 4
  %120 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 7
  %121 = load i32, ptr %120, align 8, !tbaa !18
  %122 = mul nsw i32 %119, %121
  store i32 %122, ptr %20, align 4, !tbaa !9
  invoke void @_ZSt11make_sharedIN8nvinfer16plugin8CudaBindIfEEJiEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES6_E4typeEEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.37") align 8 %19, ptr noundef nonnull align 4 dereferenceable(4) %20)
          to label %123 unwind label %314

123:                                              ; preds = %107
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #7
  %124 = load i32, ptr %17, align 4, !tbaa !9
  %125 = sext i32 %124 to i64
  %126 = mul i64 4, %125
  %127 = mul i64 %126, 4
  %128 = trunc i64 %127 to i32
  store i32 %128, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  %129 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN8nvinfer16plugin8CudaBindIfEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  %130 = getelementptr inbounds %"struct.nvinfer1::plugin::CudaBind", ptr %129, i32 0, i32 1
  %131 = load ptr, ptr %130, align 8, !tbaa !13
  store ptr %131, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #7
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %132

132:                                              ; preds = %160, %123
  %133 = load i32, ptr %23, align 4, !tbaa !9
  %134 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 7
  %135 = load i32, ptr %134, align 8, !tbaa !18
  %136 = icmp slt i32 %133, %135
  br i1 %136, label %138, label %137

137:                                              ; preds = %132
  store i32 5, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  br label %163

138:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #7
  %139 = load ptr, ptr %22, align 8, !tbaa !5
  %140 = load i32, ptr %23, align 4, !tbaa !9
  %141 = load i32, ptr %21, align 4, !tbaa !9
  %142 = mul nsw i32 %140, %141
  %143 = sext i32 %142 to i64
  %144 = getelementptr inbounds i8, ptr %139, i64 %143
  %145 = load ptr, ptr %18, align 8, !tbaa !5
  %146 = load i32, ptr %21, align 4, !tbaa !9
  %147 = sext i32 %146 to i64
  %148 = invoke i32 @cudaMemcpy(ptr noundef %144, ptr noundef %145, i64 noundef %147, i32 noundef 1)
          to label %149 unwind label %314

149:                                              ; preds = %138
  store i32 %148, ptr %24, align 4, !tbaa !16
  %150 = load i32, ptr %24, align 4, !tbaa !16
  %151 = icmp ne i32 %150, 0
  br i1 %151, label %152, label %159

152:                                              ; preds = %149
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %153 = load i32, ptr %24, align 4, !tbaa !16
  %154 = invoke ptr @cudaGetErrorString(i32 noundef %153)
          to label %155 unwind label %314

155:                                              ; preds = %152
  store ptr %154, ptr %25, align 8, !tbaa !5
  %156 = load i32, ptr %24, align 4, !tbaa !16
  %157 = load ptr, ptr %25, align 8, !tbaa !5
  invoke void @_ZN8nvinfer16plugin14throwCudaErrorEPKcS2_iiS2_(ptr noundef @.str.101, ptr noundef @__func__._ZN8nvinfer16plugin20MultilevelProposeROI10initializeEv, i32 noundef 193, i32 noundef %156, ptr noundef %157) #8
          to label %158 unwind label %314

158:                                              ; preds = %155
  unreachable

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

160:                                              ; preds = %159
  %161 = load i32, ptr %23, align 4, !tbaa !9
  %162 = add nsw i32 %161, 1
  store i32 %162, ptr %23, align 4, !tbaa !9
  br label %132, !llvm.loop !51

163:                                              ; preds = %137
  %164 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 10
  invoke void @_ZNSt6vectorISt10shared_ptrIN8nvinfer16plugin8CudaBindIfEEESaIS5_EE9push_backERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %164, ptr noundef nonnull align 8 dereferenceable(16) %19)
          to label %165 unwind label %314

165:                                              ; preds = %163
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  call void @_ZNSt12__shared_ptrIN8nvinfer16plugin8CudaBindIfEELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  br label %166

166:                                              ; preds = %165
  %167 = load i32, ptr %15, align 4, !tbaa !9
  %168 = add nsw i32 %167, 1
  store i32 %168, ptr %15, align 4, !tbaa !9
  br label %101, !llvm.loop !53

169:                                              ; preds = %106
  call void @llvm.lifetime.start.p0(i64 24, ptr %26) #7
  call void @_ZNSt6vectorIPvSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %27) #7
  call void @_ZNSt6vectorIPvSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  store i32 0, ptr %28, align 4, !tbaa !9
  br label %170

170:                                              ; preds = %238, %169
  %171 = load i32, ptr %28, align 4, !tbaa !9
  %172 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 4
  %173 = load i32, ptr %172, align 4, !tbaa !50
  %174 = icmp slt i32 %171, %173
  br i1 %174, label %176, label %175

175:                                              ; preds = %170
  store i32 8, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  br label %241

176:                                              ; preds = %170
  %177 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 20
  %178 = load i32, ptr %177, align 8, !tbaa !54
  %179 = icmp eq i32 %178, 0
  br i1 %179, label %180, label %206

180:                                              ; preds = %176
  call void @llvm.lifetime.start.p0(i64 16, ptr %29) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #7
  %181 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 3
  %182 = load i32, ptr %181, align 8, !tbaa !55
  %183 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 7
  %184 = load i32, ptr %183, align 8, !tbaa !18
  %185 = mul nsw i32 %182, %184
  store i32 %185, ptr %30, align 4, !tbaa !9
  invoke void @_ZSt11make_sharedIN8nvinfer16plugin8CudaBindIfEEJiEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES6_E4typeEEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.37") align 8 %29, ptr noundef nonnull align 4 dereferenceable(4) %30)
          to label %186 unwind label %314

186:                                              ; preds = %180
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #7
  %187 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 3
  %188 = load i32, ptr %187, align 8, !tbaa !55
  %189 = mul nsw i32 %188, 4
  %190 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 7
  %191 = load i32, ptr %190, align 8, !tbaa !18
  %192 = mul nsw i32 %189, %191
  store i32 %192, ptr %32, align 4, !tbaa !9
  invoke void @_ZSt11make_sharedIN8nvinfer16plugin8CudaBindIfEEJiEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES6_E4typeEEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.37") align 8 %31, ptr noundef nonnull align 4 dereferenceable(4) %32)
          to label %193 unwind label %314

193:                                              ; preds = %186
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  %194 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 12
  invoke void @_ZNSt6vectorISt10shared_ptrIN8nvinfer16plugin8CudaBindIfEEESaIS5_EE9push_backERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %194, ptr noundef nonnull align 8 dereferenceable(16) %29)
          to label %195 unwind label %314

195:                                              ; preds = %193
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  %196 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN8nvinfer16plugin8CudaBindIfEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  %197 = getelementptr inbounds %"struct.nvinfer1::plugin::CudaBind", ptr %196, i32 0, i32 1
  %198 = load ptr, ptr %197, align 8, !tbaa !13
  store ptr %198, ptr %33, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPvSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %26, ptr noundef nonnull align 8 dereferenceable(8) %33)
          to label %199 unwind label %314

199:                                              ; preds = %195
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  %200 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 13
  invoke void @_ZNSt6vectorISt10shared_ptrIN8nvinfer16plugin8CudaBindIfEEESaIS5_EE9push_backERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %200, ptr noundef nonnull align 8 dereferenceable(16) %31)
          to label %201 unwind label %314

201:                                              ; preds = %199
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %202 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN8nvinfer16plugin8CudaBindIfEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  %203 = getelementptr inbounds %"struct.nvinfer1::plugin::CudaBind", ptr %202, i32 0, i32 1
  %204 = load ptr, ptr %203, align 8, !tbaa !13
  store ptr %204, ptr %34, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPvSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %27, ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %205 unwind label %314

205:                                              ; preds = %201
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @_ZNSt12__shared_ptrIN8nvinfer16plugin8CudaBindIfEELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #7
  call void @_ZNSt12__shared_ptrIN8nvinfer16plugin8CudaBindIfEELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #7
  br label %237

206:                                              ; preds = %176
  %207 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 20
  %208 = load i32, ptr %207, align 8, !tbaa !54
  %209 = icmp eq i32 %208, 1
  br i1 %209, label %210, label %236

210:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 16, ptr %35) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #7
  %211 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 3
  %212 = load i32, ptr %211, align 8, !tbaa !55
  %213 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 7
  %214 = load i32, ptr %213, align 8, !tbaa !18
  %215 = mul nsw i32 %212, %214
  store i32 %215, ptr %36, align 4, !tbaa !9
  invoke void @_ZSt11make_sharedIN8nvinfer16plugin8CudaBindItEEJiEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES6_E4typeEEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.51") align 8 %35, ptr noundef nonnull align 4 dereferenceable(4) %36)
          to label %216 unwind label %314

216:                                              ; preds = %210
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #7
  %217 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 3
  %218 = load i32, ptr %217, align 8, !tbaa !55
  %219 = mul nsw i32 %218, 4
  %220 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 7
  %221 = load i32, ptr %220, align 8, !tbaa !18
  %222 = mul nsw i32 %219, %221
  store i32 %222, ptr %38, align 4, !tbaa !9
  invoke void @_ZSt11make_sharedIN8nvinfer16plugin8CudaBindItEEJiEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES6_E4typeEEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.51") align 8 %37, ptr noundef nonnull align 4 dereferenceable(4) %38)
          to label %223 unwind label %314

223:                                              ; preds = %216
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #7
  %224 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 14
  invoke void @_ZNSt6vectorISt10shared_ptrIN8nvinfer16plugin8CudaBindItEEESaIS5_EE9push_backERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %224, ptr noundef nonnull align 8 dereferenceable(16) %35)
          to label %225 unwind label %314

225:                                              ; preds = %223
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #7
  %226 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN8nvinfer16plugin8CudaBindItEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #7
  %227 = getelementptr inbounds %"struct.nvinfer1::plugin::CudaBind.54", ptr %226, i32 0, i32 1
  %228 = load ptr, ptr %227, align 8, !tbaa !56
  store ptr %228, ptr %39, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPvSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %26, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %229 unwind label %314

229:                                              ; preds = %225
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  %230 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 15
  invoke void @_ZNSt6vectorISt10shared_ptrIN8nvinfer16plugin8CudaBindItEEESaIS5_EE9push_backERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %230, ptr noundef nonnull align 8 dereferenceable(16) %37)
          to label %231 unwind label %314

231:                                              ; preds = %229
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  %232 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN8nvinfer16plugin8CudaBindItEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %37) #7
  %233 = getelementptr inbounds %"struct.nvinfer1::plugin::CudaBind.54", ptr %232, i32 0, i32 1
  %234 = load ptr, ptr %233, align 8, !tbaa !56
  store ptr %234, ptr %40, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPvSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %27, ptr noundef nonnull align 8 dereferenceable(8) %40)
          to label %235 unwind label %314

235:                                              ; preds = %231
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @_ZNSt12__shared_ptrIN8nvinfer16plugin8CudaBindItEELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #7
  call void @_ZNSt12__shared_ptrIN8nvinfer16plugin8CudaBindItEELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #7
  br label %236

236:                                              ; preds = %235, %206
  br label %237

237:                                              ; preds = %236, %205
  br label %238

238:                                              ; preds = %237
  %239 = load i32, ptr %28, align 4, !tbaa !9
  %240 = add nsw i32 %239, 1
  store i32 %240, ptr %28, align 4, !tbaa !9
  br label %170, !llvm.loop !58

241:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #7
  %242 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 16
  %243 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 4
  %244 = load i32, ptr %243, align 4, !tbaa !50
  %245 = sext i32 %244 to i64
  %246 = mul i64 8, %245
  %247 = invoke noundef i32 @_ZL10cudaMallocIPfE9cudaErrorPPT_m(ptr noundef %242, i64 noundef %246)
          to label %248 unwind label %314

248:                                              ; preds = %241
  store i32 %247, ptr %41, align 4, !tbaa !16
  %249 = load i32, ptr %41, align 4, !tbaa !16
  %250 = icmp ne i32 %249, 0
  br i1 %250, label %251, label %258

251:                                              ; preds = %248
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  %252 = load i32, ptr %41, align 4, !tbaa !16
  %253 = invoke ptr @cudaGetErrorString(i32 noundef %252)
          to label %254 unwind label %314

254:                                              ; preds = %251
  store ptr %253, ptr %42, align 8, !tbaa !5
  %255 = load i32, ptr %41, align 4, !tbaa !16
  %256 = load ptr, ptr %42, align 8, !tbaa !5
  invoke void @_ZN8nvinfer16plugin14throwCudaErrorEPKcS2_iiS2_(ptr noundef @.str.101, ptr noundef @__func__._ZN8nvinfer16plugin20MultilevelProposeROI10initializeEv, i32 noundef 224, i32 noundef %255, ptr noundef %256) #8
          to label %257 unwind label %314

257:                                              ; preds = %254
  unreachable

258:                                              ; preds = %248
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #7
  %259 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 17
  %260 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 4
  %261 = load i32, ptr %260, align 4, !tbaa !50
  %262 = sext i32 %261 to i64
  %263 = mul i64 8, %262
  %264 = invoke noundef i32 @_ZL10cudaMallocIPfE9cudaErrorPPT_m(ptr noundef %259, i64 noundef %263)
          to label %265 unwind label %314

265:                                              ; preds = %258
  store i32 %264, ptr %43, align 4, !tbaa !16
  %266 = load i32, ptr %43, align 4, !tbaa !16
  %267 = icmp ne i32 %266, 0
  br i1 %267, label %268, label %275

268:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  %269 = load i32, ptr %43, align 4, !tbaa !16
  %270 = invoke ptr @cudaGetErrorString(i32 noundef %269)
          to label %271 unwind label %314

271:                                              ; preds = %268
  store ptr %270, ptr %44, align 8, !tbaa !5
  %272 = load i32, ptr %43, align 4, !tbaa !16
  %273 = load ptr, ptr %44, align 8, !tbaa !5
  invoke void @_ZN8nvinfer16plugin14throwCudaErrorEPKcS2_iiS2_(ptr noundef @.str.101, ptr noundef @__func__._ZN8nvinfer16plugin20MultilevelProposeROI10initializeEv, i32 noundef 225, i32 noundef %272, ptr noundef %273) #8
          to label %274 unwind label %314

274:                                              ; preds = %271
  unreachable

275:                                              ; preds = %265
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #7
  %276 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 16
  %277 = load ptr, ptr %276, align 8, !tbaa !59
  %278 = call noundef ptr @_ZNSt6vectorIPvSaIS0_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %26) #7
  %279 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 4
  %280 = load i32, ptr %279, align 4, !tbaa !50
  %281 = sext i32 %280 to i64
  %282 = mul i64 8, %281
  %283 = invoke i32 @cudaMemcpy(ptr noundef %277, ptr noundef %278, i64 noundef %282, i32 noundef 1)
          to label %284 unwind label %314

284:                                              ; preds = %275
  store i32 %283, ptr %45, align 4, !tbaa !16
  %285 = load i32, ptr %45, align 4, !tbaa !16
  %286 = icmp ne i32 %285, 0
  br i1 %286, label %287, label %294

287:                                              ; preds = %284
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  %288 = load i32, ptr %45, align 4, !tbaa !16
  %289 = invoke ptr @cudaGetErrorString(i32 noundef %288)
          to label %290 unwind label %314

290:                                              ; preds = %287
  store ptr %289, ptr %46, align 8, !tbaa !5
  %291 = load i32, ptr %45, align 4, !tbaa !16
  %292 = load ptr, ptr %46, align 8, !tbaa !5
  invoke void @_ZN8nvinfer16plugin14throwCudaErrorEPKcS2_iiS2_(ptr noundef @.str.101, ptr noundef @__func__._ZN8nvinfer16plugin20MultilevelProposeROI10initializeEv, i32 noundef 227, i32 noundef %291, ptr noundef %292) #8
          to label %293 unwind label %314

293:                                              ; preds = %290
  unreachable

294:                                              ; preds = %284
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #7
  %295 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 17
  %296 = load ptr, ptr %295, align 8, !tbaa !60
  %297 = call noundef ptr @_ZNSt6vectorIPvSaIS0_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %27) #7
  %298 = getelementptr inbounds %"class.nvinfer1::plugin::MultilevelProposeROI", ptr %49, i32 0, i32 4
  %299 = load i32, ptr %298, align 4, !tbaa !50
  %300 = sext i32 %299 to i64
  %301 = mul i64 8, %300
  %302 = invoke i32 @cudaMemcpy(ptr noundef %296, ptr noundef %297, i64 noundef %301, i32 noundef 1)
          to label %303 unwind label %314

303:                                              ; preds = %294
  store i32 %302, ptr %47, align 4, !tbaa !16
  %304 = load i32, ptr %47, align 4, !tbaa !16
  %305 = icmp ne i32 %304, 0
  br i1 %305, label %306, label %313

306:                                              ; preds = %303
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  %307 = load i32, ptr %47, align 4, !tbaa !16
  %308 = invoke ptr @cudaGetErrorString(i32 noundef %307)
          to label %309 unwind label %314

309:                                              ; preds = %306
  store ptr %308, ptr %48, align 8, !tbaa !5
  %310 = load i32, ptr %47, align 4, !tbaa !16
  %311 = load ptr, ptr %48, align 8, !tbaa !5
  invoke void @_ZN8nvinfer16plugin14throwCudaErrorEPKcS2_iiS2_(ptr noundef @.str.101, ptr noundef @__func__._ZN8nvinfer16plugin20MultilevelProposeROI10initializeEv, i32 noundef 228, i32 noundef %310, ptr noundef %311) #8
          to label %312 unwind label %314

312:                                              ; preds = %309
  unreachable

313:                                              ; preds = %303
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #7
  store i32 1, ptr %16, align 4
  call void @_ZNSt6vectorIPvSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #7
  call void @_ZNSt6vectorIPvSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #7
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %5) #7
  ret i32 0

314:                                              ; preds = %309, %306, %294, %290, %287, %275, %271, %268, %258, %254, %251, %241, %231, %229, %225, %223, %216, %210, %201, %199, %195, %193, %186, %180, %163, %155, %152, %138, %107, %96, %93, %77, %75, %70, %66, %63, %53, %50, %1
  %315 = landingpad { ptr, i32 }
          catch ptr null
  %316 = extractvalue { ptr, i32 } %315, 0
  call void @__clang_call_terminate(ptr %316) #9
  unreachable
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_sharedIN8nvinfer16plugin8CudaBindIfEEJiEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES6_E4typeEEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr.37") align 8, ptr noundef nonnull align 4 dereferenceable(4)) #3

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

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

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

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

declare i32 @cudaMemcpy(ptr noundef, ptr noundef, i64 noundef, i32 noundef) #5

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

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

declare ptr @cudaGetErrorString(i32 noundef) #5

; Function Attrs: noreturn
declare void @_ZN8nvinfer16plugin14throwCudaErrorEPKcS2_iiS2_(ptr noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef) #6

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_sharedIN8nvinfer16plugin8CudaBindItEEJiEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES6_E4typeEEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr.51") align 8, ptr noundef nonnull align 4 dereferenceable(4)) #3

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @_ZL10cudaMallocIPfE9cudaErrorPPT_m(ptr noundef, i64 noundef) #3

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = !{!14, !6, i64 8}
!14 = !{!"_ZTSN8nvinfer16plugin8CudaBindIfEE", !15, i64 0, !6, i64 8}
!15 = !{!"long", !7, i64 0}
!16 = !{!17, !17, i64 0}
!17 = !{!"_ZTS9cudaError", !7, i64 0}
!18 = !{!19, !10, i64 32}
!19 = !{!"_ZTSN8nvinfer16plugin20MultilevelProposeROIE", !20, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !12, i64 24, !12, i64 28, !10, i64 32, !22, i64 40, !26, i64 64, !29, i64 80, !33, i64 104, !29, i64 128, !29, i64 152, !37, i64 176, !37, i64 200, !6, i64 224, !6, i64 232, !41, i64 240, !43, i64 256, !44, i64 328, !45, i64 332, !46, i64 352}
!20 = !{!"_ZTSN8nvinfer112IPluginV2ExtE", !21, i64 0}
!21 = !{!"_ZTSN8nvinfer19IPluginV2E"}
!22 = !{!"_ZTSSt6vectorIiSaIiEE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!26 = !{!"_ZTSSt10shared_ptrIN8nvinfer16plugin8CudaBindIiEEE", !27, i64 0}
!27 = !{!"_ZTSSt12__shared_ptrIN8nvinfer16plugin8CudaBindIiEELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !28, i64 8}
!28 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!29 = !{!"_ZTSSt6vectorISt10shared_ptrIN8nvinfer16plugin8CudaBindIfEEESaIS5_EE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrIN8nvinfer16plugin8CudaBindIfEEESaIS5_EE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN8nvinfer16plugin8CudaBindIfEEESaIS5_EE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN8nvinfer16plugin8CudaBindIfEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!33 = !{!"_ZTSSt6vectorIS_IfSaIfEESaIS1_EE", !34, i64 0}
!34 = !{!"_ZTSSt12_Vector_baseISt6vectorIfSaIfEESaIS2_EE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseISt6vectorIfSaIfEESaIS2_EE12_Vector_implE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseISt6vectorIfSaIfEESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!37 = !{!"_ZTSSt6vectorISt10shared_ptrIN8nvinfer16plugin8CudaBindItEEESaIS5_EE", !38, i64 0}
!38 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrIN8nvinfer16plugin8CudaBindItEEESaIS5_EE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN8nvinfer16plugin8CudaBindItEEESaIS5_EE12_Vector_implE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN8nvinfer16plugin8CudaBindItEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!41 = !{!"_ZTSSt10shared_ptrIN8nvinfer16plugin8CudaBindIfEEE", !42, i64 0}
!42 = !{!"_ZTSSt12__shared_ptrIN8nvinfer16plugin8CudaBindIfEELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !28, i64 8}
!43 = !{!"_ZTSN8nvinfer16Dims64E", !10, i64 0, !7, i64 8}
!44 = !{!"_ZTSN8nvinfer18DataTypeE", !7, i64 0}
!45 = !{!"_ZTS19RefineNMSParameters", !10, i64 0, !10, i64 4, !10, i64 8, !12, i64 12, !12, i64 16}
!46 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !47, i64 0, !15, i64 8, !7, i64 16}
!47 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!48 = !{!49, !6, i64 8}
!49 = !{!"_ZTSN8nvinfer16plugin8CudaBindIiEE", !15, i64 0, !6, i64 8}
!50 = !{!19, !10, i64 20}
!51 = distinct !{!51, !52}
!52 = !{!"llvm.loop.mustprogress"}
!53 = distinct !{!53, !52}
!54 = !{!19, !44, i64 328}
!55 = !{!19, !10, i64 16}
!56 = !{!57, !6, i64 8}
!57 = !{!"_ZTSN8nvinfer16plugin8CudaBindItEE", !15, i64 0, !6, i64 8}
!58 = distinct !{!58, !52}
!59 = !{!19, !6, i64 224}
!60 = !{!19, !6, i64 232}


; 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::shared_ptr.37" = type { %"class.std::__shared_ptr.38" }
%"class.std::__shared_ptr.38" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::vector.40" = type { %"struct.std::_Vector_base.41" }
%"struct.std::_Vector_base.41" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.42" = type { i8 }
%"class.std::vector.17" = type { %"struct.std::_Vector_base.18" }
%"struct.std::_Vector_base.18" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.19" = type { i8 }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::vector.46" = type { %"struct.std::_Vector_base.47" }
%"struct.std::_Vector_base.47" = type { %"struct.std::_Vector_base<void *, std::allocator<void *>>::_Vector_impl" }
%"struct.std::_Vector_base<void *, std::allocator<void *>>::_Vector_impl" = type { %"struct.std::_Vector_base<void *, std::allocator<void *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<void *, std::allocator<void *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::shared_ptr.51" = type { %"class.std::__shared_ptr.52" }
%"class.std::__shared_ptr.52" = type { ptr, %"class.std::__shared_count" }

@.str.101 = external hidden unnamed_addr constant [108 x i8], align 1
@__func__._ZN8nvinfer16plugin20MultilevelProposeROI10initializeEv = external hidden unnamed_addr constant [11 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

; Function Attrs: mustprogress nounwind uwtable
define dso_local noundef i32 @_ZN8nvinfer16plugin20MultilevelProposeROI10initializeEv(ptr noundef nonnull align 8 dereferenceable(384) %0) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::shared_ptr.37", align 8
  %3 = alloca i32, align 4
  %4 = alloca %"class.std::vector.40", align 8
  %5 = alloca float, align 4
  %6 = alloca %"class.std::allocator.42", align 1
  %7 = alloca %"class.std::vector.17", align 8
  %8 = alloca %"class.std::allocator.19", align 1
  %9 = alloca %"class.std::shared_ptr", align 8
  %10 = alloca %"class.std::shared_ptr.37", align 8
  %11 = alloca i32, align 4
  %12 = alloca %"class.std::vector.46", align 8
  %13 = alloca %"class.std::vector.46", align 8
  %14 = alloca %"class.std::shared_ptr.37", align 8
  %15 = alloca i32, align 4
  %16 = alloca %"class.std::shared_ptr.37", align 8
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca %"class.std::shared_ptr.51", align 8
  %21 = alloca i32, align 4
  %22 = alloca %"class.std::shared_ptr.51", align 8
  %23 = alloca i32, align 4
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #7
  store i32 4, ptr %3, align 4, !tbaa !5
  invoke void @_ZSt11make_sharedIN8nvinfer16plugin8CudaBindIfEEJiEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES6_E4typeEEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.37") align 8 %2, ptr noundef nonnull align 4 dereferenceable(4) %3)
          to label %26 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

26:                                               ; preds = %1
  %27 = getelementptr inbounds i8, ptr %0, i64 240
  %28 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN8nvinfer16plugin8CudaBindIfEEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(16) %27, ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  call void @_ZNSt12__shared_ptrIN8nvinfer16plugin8CudaBindIfEELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #7
  store float 1.000000e+00, ptr %5, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #7
  call void @_ZNSaIfEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  invoke void @_ZNSt6vectorIfSaIfEEC2EmRKfRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef 4, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %29 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

29:                                               ; preds = %26
  call void @_ZNSt15__new_allocatorIfED2Ev(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 4, ptr nonnull %5) #7
  %30 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN8nvinfer16plugin8CudaBindIfEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %27) #7
  %31 = getelementptr inbounds i8, ptr %30, i64 8
  %32 = load ptr, ptr %31, align 8, !tbaa !11
  %33 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #7
  %34 = invoke i32 @cudaMemcpy(ptr noundef %32, ptr noundef %33, i64 noundef 16, i32 noundef 1)
          to label %35 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

35:                                               ; preds = %29
  %.not = icmp eq i32 %34, 0
  br i1 %.not, label %41, label %36

36:                                               ; preds = %35
  %37 = invoke ptr @cudaGetErrorString(i32 noundef %34)
          to label %.invoke unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

.invoke:                                          ; preds = %186, %176, %166, %157, %100, %65, %36
  %38 = phi i32 [ 172, %36 ], [ 180, %65 ], [ 193, %100 ], [ 224, %157 ], [ 225, %166 ], [ 227, %176 ], [ 228, %186 ]
  %39 = phi i32 [ %34, %36 ], [ %57, %65 ], [ %98, %100 ], [ %109, %157 ], [ %164, %166 ], [ %174, %176 ], [ %184, %186 ]
  %40 = phi ptr [ %37, %36 ], [ %66, %65 ], [ %101, %100 ], [ %158, %157 ], [ %167, %166 ], [ %177, %176 ], [ %187, %186 ]
  invoke void @_ZN8nvinfer16plugin14throwCudaErrorEPKcS2_iiS2_(ptr noundef nonnull @.str.101, ptr noundef nonnull @__func__._ZN8nvinfer16plugin20MultilevelProposeROI10initializeEv, i32 noundef %38, i32 noundef %39, ptr noundef %40) #8
          to label %.cont unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

.cont:                                            ; preds = %.invoke
  unreachable

41:                                               ; preds = %35
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #7
  %42 = getelementptr inbounds i8, ptr %0, i64 32
  %43 = load i32, ptr %42, align 8, !tbaa !15
  %44 = sext i32 %43 to i64
  %45 = getelementptr inbounds i8, ptr %0, i64 12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #7
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  invoke void @_ZNSt6vectorIiSaIiEEC2EmRKiRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %44, ptr noundef nonnull align 4 dereferenceable(4) %45, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %46 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

46:                                               ; preds = %41
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #7
  invoke void @_ZSt11make_sharedIN8nvinfer16plugin8CudaBindIiEEJRiEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES7_E4typeEEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %9, ptr noundef nonnull align 4 dereferenceable(4) %42)
          to label %47 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

47:                                               ; preds = %46
  %48 = getelementptr inbounds i8, ptr %0, i64 64
  %49 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN8nvinfer16plugin8CudaBindIiEEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef nonnull align 8 dereferenceable(16) %9) #7
  call void @_ZNSt12__shared_ptrIN8nvinfer16plugin8CudaBindIiEELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #7
  %50 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN8nvinfer16plugin8CudaBindIiEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %48) #7
  %51 = getelementptr inbounds i8, ptr %50, i64 8
  %52 = load ptr, ptr %51, align 8, !tbaa !45
  %53 = call noundef ptr @_ZNSt6vectorIiSaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  %54 = load i32, ptr %42, align 8, !tbaa !15
  %55 = sext i32 %54 to i64
  %56 = shl nsw i64 %55, 2
  %57 = invoke i32 @cudaMemcpy(ptr noundef %52, ptr noundef %53, i64 noundef %56, i32 noundef 1)
          to label %58 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

58:                                               ; preds = %47
  %.not54 = icmp eq i32 %57, 0
  br i1 %.not54, label %.preheader, label %65

.preheader:                                       ; preds = %58
  %59 = getelementptr inbounds i8, ptr %0, i64 20
  %60 = load i32, ptr %59, align 4, !tbaa !47
  %61 = icmp sgt i32 %60, 0
  br i1 %61, label %.lr.ph73, label %._crit_edge74

.lr.ph73:                                         ; preds = %.preheader
  %62 = getelementptr inbounds i8, ptr %0, i64 40
  %63 = getelementptr inbounds i8, ptr %0, i64 104
  %64 = getelementptr inbounds i8, ptr %0, i64 80
  br label %75

65:                                               ; preds = %58
  %66 = invoke ptr @cudaGetErrorString(i32 noundef %57)
          to label %.invoke unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

._crit_edge74:                                    ; preds = %102, %.preheader
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #7
  call void @_ZNSt6vectorIPvSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #7
  call void @_ZNSt6vectorIPvSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #7
  %67 = load i32, ptr %59, align 4, !tbaa !47
  %68 = icmp sgt i32 %67, 0
  br i1 %68, label %.lr.ph77, label %._crit_edge78

.lr.ph77:                                         ; preds = %._crit_edge74
  %69 = getelementptr inbounds i8, ptr %0, i64 328
  %70 = getelementptr inbounds i8, ptr %0, i64 16
  %71 = getelementptr inbounds i8, ptr %0, i64 176
  %72 = getelementptr inbounds i8, ptr %0, i64 200
  %73 = getelementptr inbounds i8, ptr %0, i64 128
  %74 = getelementptr inbounds i8, ptr %0, i64 152
  br label %110

75:                                               ; preds = %.lr.ph73, %102
  %indvars.iv83 = phi i64 [ 0, %.lr.ph73 ], [ %indvars.iv.next84, %102 ]
  %76 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %indvars.iv83) #7
  %77 = load i32, ptr %76, align 4, !tbaa !5
  %78 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IfSaIfEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %63, i64 noundef %indvars.iv83) #7
  %79 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %78) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #7
  %80 = shl nsw i32 %77, 2
  %81 = load i32, ptr %42, align 8, !tbaa !15
  %82 = mul nsw i32 %80, %81
  store i32 %82, ptr %11, align 4, !tbaa !5
  invoke void @_ZSt11make_sharedIN8nvinfer16plugin8CudaBindIfEEJiEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES6_E4typeEEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.37") align 8 %10, ptr noundef nonnull align 4 dereferenceable(4) %11)
          to label %83 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

83:                                               ; preds = %75
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #7
  %84 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN8nvinfer16plugin8CudaBindIfEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %10) #7
  %85 = getelementptr inbounds i8, ptr %84, i64 8
  %86 = load ptr, ptr %85, align 8, !tbaa !11
  %87 = load i32, ptr %42, align 8, !tbaa !15
  %88 = icmp sgt i32 %87, 0
  br i1 %88, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %83
  %89 = shl i32 %77, 4
  %90 = sext i32 %89 to i64
  br label %95

91:                                               ; preds = %99
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %92 = load i32, ptr %42, align 8, !tbaa !15
  %93 = sext i32 %92 to i64
  %94 = icmp slt i64 %indvars.iv.next, %93
  br i1 %94, label %95, label %._crit_edge, !llvm.loop !48

._crit_edge:                                      ; preds = %91, %83
  invoke void @_ZNSt6vectorISt10shared_ptrIN8nvinfer16plugin8CudaBindIfEEESaIS5_EE9push_backERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %64, ptr noundef nonnull align 8 dereferenceable(16) %10)
          to label %102 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

95:                                               ; preds = %.lr.ph, %91
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %91 ]
  %96 = mul nsw i64 %indvars.iv, %90
  %97 = getelementptr inbounds i8, ptr %86, i64 %96
  %98 = invoke i32 @cudaMemcpy(ptr noundef %97, ptr noundef %79, i64 noundef %90, i32 noundef 1)
          to label %99 unwind label %.loopexit.split-lp.loopexit

99:                                               ; preds = %95
  %.not59 = icmp eq i32 %98, 0
  br i1 %.not59, label %91, label %100

100:                                              ; preds = %99
  %101 = invoke ptr @cudaGetErrorString(i32 noundef %98)
          to label %.invoke unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

102:                                              ; preds = %._crit_edge
  call void @_ZNSt12__shared_ptrIN8nvinfer16plugin8CudaBindIfEELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #7
  %indvars.iv.next84 = add nuw nsw i64 %indvars.iv83, 1
  %103 = load i32, ptr %59, align 4, !tbaa !47
  %104 = sext i32 %103 to i64
  %105 = icmp slt i64 %indvars.iv.next84, %104
  br i1 %105, label %75, label %._crit_edge74, !llvm.loop !50

._crit_edge78:                                    ; preds = %152, %._crit_edge74
  %.lcssa = phi i32 [ %67, %._crit_edge74 ], [ %154, %152 ]
  %106 = getelementptr inbounds i8, ptr %0, i64 224
  %107 = sext i32 %.lcssa to i64
  %108 = shl nsw i64 %107, 3
  %109 = invoke noundef i32 @_ZL10cudaMallocIPfE9cudaErrorPPT_m(ptr noundef nonnull %106, i64 noundef %108)
          to label %156 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

110:                                              ; preds = %.lr.ph77, %152
  %.04475 = phi i32 [ 0, %.lr.ph77 ], [ %153, %152 ]
  %111 = load i32, ptr %69, align 8, !tbaa !51
  switch i32 %111, label %152 [
    i32 0, label %112
    i32 1, label %132
  ]

112:                                              ; preds = %110
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #7
  %113 = load i32, ptr %70, align 8, !tbaa !52
  %114 = load i32, ptr %42, align 8, !tbaa !15
  %115 = mul nsw i32 %114, %113
  store i32 %115, ptr %15, align 4, !tbaa !5
  invoke void @_ZSt11make_sharedIN8nvinfer16plugin8CudaBindIfEEJiEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES6_E4typeEEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.37") align 8 %14, ptr noundef nonnull align 4 dereferenceable(4) %15)
          to label %116 unwind label %.loopexit

116:                                              ; preds = %112
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #7
  %117 = load i32, ptr %70, align 8, !tbaa !52
  %118 = shl nsw i32 %117, 2
  %119 = load i32, ptr %42, align 8, !tbaa !15
  %120 = mul nsw i32 %118, %119
  store i32 %120, ptr %17, align 4, !tbaa !5
  invoke void @_ZSt11make_sharedIN8nvinfer16plugin8CudaBindIfEEJiEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES6_E4typeEEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.37") align 8 %16, ptr noundef nonnull align 4 dereferenceable(4) %17)
          to label %121 unwind label %.loopexit

121:                                              ; preds = %116
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #7
  invoke void @_ZNSt6vectorISt10shared_ptrIN8nvinfer16plugin8CudaBindIfEEESaIS5_EE9push_backERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %73, ptr noundef nonnull align 8 dereferenceable(16) %14)
          to label %122 unwind label %.loopexit

122:                                              ; preds = %121
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #7
  %123 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN8nvinfer16plugin8CudaBindIfEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %14) #7
  %124 = getelementptr inbounds i8, ptr %123, i64 8
  %125 = load ptr, ptr %124, align 8, !tbaa !11
  store ptr %125, ptr %18, align 8, !tbaa !53
  invoke void @_ZNSt6vectorIPvSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 8 dereferenceable(8) %18)
          to label %126 unwind label %.loopexit

126:                                              ; preds = %122
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  invoke void @_ZNSt6vectorISt10shared_ptrIN8nvinfer16plugin8CudaBindIfEEESaIS5_EE9push_backERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %74, ptr noundef nonnull align 8 dereferenceable(16) %16)
          to label %127 unwind label %.loopexit

127:                                              ; preds = %126
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #7
  %128 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN8nvinfer16plugin8CudaBindIfEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  %129 = getelementptr inbounds i8, ptr %128, i64 8
  %130 = load ptr, ptr %129, align 8, !tbaa !11
  store ptr %130, ptr %19, align 8, !tbaa !53
  invoke void @_ZNSt6vectorIPvSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %131 unwind label %.loopexit

131:                                              ; preds = %127
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  call void @_ZNSt12__shared_ptrIN8nvinfer16plugin8CudaBindIfEELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #7
  call void @_ZNSt12__shared_ptrIN8nvinfer16plugin8CudaBindIfEELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #7
  br label %152

132:                                              ; preds = %110
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #7
  %133 = load i32, ptr %70, align 8, !tbaa !52
  %134 = load i32, ptr %42, align 8, !tbaa !15
  %135 = mul nsw i32 %134, %133
  store i32 %135, ptr %21, align 4, !tbaa !5
  invoke void @_ZSt11make_sharedIN8nvinfer16plugin8CudaBindItEEJiEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES6_E4typeEEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.51") align 8 %20, ptr noundef nonnull align 4 dereferenceable(4) %21)
          to label %136 unwind label %.loopexit

136:                                              ; preds = %132
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #7
  %137 = load i32, ptr %70, align 8, !tbaa !52
  %138 = shl nsw i32 %137, 2
  %139 = load i32, ptr %42, align 8, !tbaa !15
  %140 = mul nsw i32 %138, %139
  store i32 %140, ptr %23, align 4, !tbaa !5
  invoke void @_ZSt11make_sharedIN8nvinfer16plugin8CudaBindItEEJiEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES6_E4typeEEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.51") align 8 %22, ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %141 unwind label %.loopexit

141:                                              ; preds = %136
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #7
  invoke void @_ZNSt6vectorISt10shared_ptrIN8nvinfer16plugin8CudaBindItEEESaIS5_EE9push_backERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %71, ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %142 unwind label %.loopexit

142:                                              ; preds = %141
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #7
  %143 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN8nvinfer16plugin8CudaBindItEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %20) #7
  %144 = getelementptr inbounds i8, ptr %143, i64 8
  %145 = load ptr, ptr %144, align 8, !tbaa !54
  store ptr %145, ptr %24, align 8, !tbaa !53
  invoke void @_ZNSt6vectorIPvSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %146 unwind label %.loopexit

146:                                              ; preds = %142
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  invoke void @_ZNSt6vectorISt10shared_ptrIN8nvinfer16plugin8CudaBindItEEESaIS5_EE9push_backERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %72, ptr noundef nonnull align 8 dereferenceable(16) %22)
          to label %147 unwind label %.loopexit

147:                                              ; preds = %146
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #7
  %148 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN8nvinfer16plugin8CudaBindItEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %22) #7
  %149 = getelementptr inbounds i8, ptr %148, i64 8
  %150 = load ptr, ptr %149, align 8, !tbaa !54
  store ptr %150, ptr %25, align 8, !tbaa !53
  invoke void @_ZNSt6vectorIPvSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %151 unwind label %.loopexit

151:                                              ; preds = %147
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  call void @_ZNSt12__shared_ptrIN8nvinfer16plugin8CudaBindItEELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #7
  call void @_ZNSt12__shared_ptrIN8nvinfer16plugin8CudaBindItEELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #7
  br label %152

152:                                              ; preds = %110, %131, %151
  %153 = add nuw nsw i32 %.04475, 1
  %154 = load i32, ptr %59, align 4, !tbaa !47
  %155 = icmp slt i32 %153, %154
  br i1 %155, label %110, label %._crit_edge78, !llvm.loop !56

156:                                              ; preds = %._crit_edge78
  %.not55 = icmp eq i32 %109, 0
  br i1 %.not55, label %159, label %157

157:                                              ; preds = %156
  %158 = invoke ptr @cudaGetErrorString(i32 noundef %109)
          to label %.invoke unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

159:                                              ; preds = %156
  %160 = getelementptr inbounds i8, ptr %0, i64 232
  %161 = load i32, ptr %59, align 4, !tbaa !47
  %162 = sext i32 %161 to i64
  %163 = shl nsw i64 %162, 3
  %164 = invoke noundef i32 @_ZL10cudaMallocIPfE9cudaErrorPPT_m(ptr noundef nonnull %160, i64 noundef %163)
          to label %165 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

165:                                              ; preds = %159
  %.not56 = icmp eq i32 %164, 0
  br i1 %.not56, label %168, label %166

166:                                              ; preds = %165
  %167 = invoke ptr @cudaGetErrorString(i32 noundef %164)
          to label %.invoke unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

168:                                              ; preds = %165
  %169 = load ptr, ptr %106, align 8, !tbaa !57
  %170 = call noundef ptr @_ZNSt6vectorIPvSaIS0_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  %171 = load i32, ptr %59, align 4, !tbaa !47
  %172 = sext i32 %171 to i64
  %173 = shl nsw i64 %172, 3
  %174 = invoke i32 @cudaMemcpy(ptr noundef %169, ptr noundef %170, i64 noundef %173, i32 noundef 1)
          to label %175 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

175:                                              ; preds = %168
  %.not57 = icmp eq i32 %174, 0
  br i1 %.not57, label %178, label %176

176:                                              ; preds = %175
  %177 = invoke ptr @cudaGetErrorString(i32 noundef %174)
          to label %.invoke unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

178:                                              ; preds = %175
  %179 = load ptr, ptr %160, align 8, !tbaa !58
  %180 = call noundef ptr @_ZNSt6vectorIPvSaIS0_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #7
  %181 = load i32, ptr %59, align 4, !tbaa !47
  %182 = sext i32 %181 to i64
  %183 = shl nsw i64 %182, 3
  %184 = invoke i32 @cudaMemcpy(ptr noundef %179, ptr noundef %180, i64 noundef %183, i32 noundef 1)
          to label %185 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

185:                                              ; preds = %178
  %.not58 = icmp eq i32 %184, 0
  br i1 %.not58, label %188, label %186

186:                                              ; preds = %185
  %187 = invoke ptr @cudaGetErrorString(i32 noundef %184)
          to label %.invoke unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

188:                                              ; preds = %185
  call void @_ZNSt6vectorIPvSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #7
  call void @_ZNSt6vectorIPvSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #7
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #7
  ret i32 0

.loopexit:                                        ; preds = %112, %116, %121, %122, %126, %127, %132, %136, %141, %142, %146, %147
  %lpad.loopexit = landingpad { ptr, i32 }
          catch ptr null
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit:                      ; preds = %95
  %lpad.loopexit60 = landingpad { ptr, i32 }
          catch ptr null
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit:    ; preds = %75, %._crit_edge
  %lpad.loopexit63 = landingpad { ptr, i32 }
          catch ptr null
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %.invoke, %1, %26, %29, %36, %41, %46, %47, %65, %100, %._crit_edge78, %157, %159, %166, %168, %176, %178, %186
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          catch ptr null
  br label %.loopexit.split-lp

.loopexit.split-lp:                               ; preds = %.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit
  %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit60, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit63, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ]
  %189 = extractvalue { ptr, i32 } %lpad.phi, 0
  call void @__clang_call_terminate(ptr %189) #9
  unreachable
}

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

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

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

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

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

declare i32 @cudaMemcpy(ptr noundef, ptr noundef, i64 noundef, i32 noundef) local_unnamed_addr #5

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

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

declare ptr @cudaGetErrorString(i32 noundef) local_unnamed_addr #5

; Function Attrs: noreturn
declare void @_ZN8nvinfer16plugin14throwCudaErrorEPKcS2_iiS2_(ptr noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #6

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @_ZL10cudaMallocIPfE9cudaErrorPPT_m(ptr noundef, i64 noundef) local_unnamed_addr #3

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = !{!12, !14, i64 8}
!12 = !{!"_ZTSN8nvinfer16plugin8CudaBindIfEE", !13, i64 0, !14, i64 8}
!13 = !{!"long", !7, i64 0}
!14 = !{!"any pointer", !7, i64 0}
!15 = !{!16, !6, i64 32}
!16 = !{!"_ZTSN8nvinfer16plugin20MultilevelProposeROIE", !17, i64 0, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !10, i64 24, !10, i64 28, !6, i64 32, !19, i64 40, !23, i64 64, !26, i64 80, !30, i64 104, !26, i64 128, !26, i64 152, !34, i64 176, !34, i64 200, !14, i64 224, !14, i64 232, !38, i64 240, !40, i64 256, !41, i64 328, !42, i64 332, !43, i64 352}
!17 = !{!"_ZTSN8nvinfer112IPluginV2ExtE", !18, i64 0}
!18 = !{!"_ZTSN8nvinfer19IPluginV2E"}
!19 = !{!"_ZTSSt6vectorIiSaIiEE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!23 = !{!"_ZTSSt10shared_ptrIN8nvinfer16plugin8CudaBindIiEEE", !24, i64 0}
!24 = !{!"_ZTSSt12__shared_ptrIN8nvinfer16plugin8CudaBindIiEELN9__gnu_cxx12_Lock_policyE2EE", !14, i64 0, !25, i64 8}
!25 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !14, i64 0}
!26 = !{!"_ZTSSt6vectorISt10shared_ptrIN8nvinfer16plugin8CudaBindIfEEESaIS5_EE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrIN8nvinfer16plugin8CudaBindIfEEESaIS5_EE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN8nvinfer16plugin8CudaBindIfEEESaIS5_EE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN8nvinfer16plugin8CudaBindIfEEESaIS5_EE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!30 = !{!"_ZTSSt6vectorIS_IfSaIfEESaIS1_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseISt6vectorIfSaIfEESaIS2_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseISt6vectorIfSaIfEESaIS2_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseISt6vectorIfSaIfEESaIS2_EE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!34 = !{!"_ZTSSt6vectorISt10shared_ptrIN8nvinfer16plugin8CudaBindItEEESaIS5_EE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrIN8nvinfer16plugin8CudaBindItEEESaIS5_EE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN8nvinfer16plugin8CudaBindItEEESaIS5_EE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN8nvinfer16plugin8CudaBindItEEESaIS5_EE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!38 = !{!"_ZTSSt10shared_ptrIN8nvinfer16plugin8CudaBindIfEEE", !39, i64 0}
!39 = !{!"_ZTSSt12__shared_ptrIN8nvinfer16plugin8CudaBindIfEELN9__gnu_cxx12_Lock_policyE2EE", !14, i64 0, !25, i64 8}
!40 = !{!"_ZTSN8nvinfer16Dims64E", !6, i64 0, !7, i64 8}
!41 = !{!"_ZTSN8nvinfer18DataTypeE", !7, i64 0}
!42 = !{!"_ZTS19RefineNMSParameters", !6, i64 0, !6, i64 4, !6, i64 8, !10, i64 12, !10, i64 16}
!43 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !44, i64 0, !13, i64 8, !7, i64 16}
!44 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !14, i64 0}
!45 = !{!46, !14, i64 8}
!46 = !{!"_ZTSN8nvinfer16plugin8CudaBindIiEE", !13, i64 0, !14, i64 8}
!47 = !{!16, !6, i64 20}
!48 = distinct !{!48, !49}
!49 = !{!"llvm.loop.mustprogress"}
!50 = distinct !{!50, !49}
!51 = !{!16, !41, i64 328}
!52 = !{!16, !6, i64 16}
!53 = !{!14, !14, i64 0}
!54 = !{!55, !14, i64 8}
!55 = !{!"_ZTSN8nvinfer16plugin8CudaBindItEE", !13, i64 0, !14, i64 8}
!56 = distinct !{!56, !49}
!57 = !{!16, !14, i64 224}
!58 = !{!16, !14, i64 232}


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