; LLVM IR from NVIDIA/TensorRT :: plugin/efficientNMSPlugin (efficientNMSPlugin)

; 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::set" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, std::_Identity<std::__cxx11::basic_string<char>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, std::_Identity<std::__cxx11::basic_string<char>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::initializer_list" = type { ptr, i64 }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%"struct.std::less" = type { i8 }
%"class.std::allocator.6" = type { i8 }
%"struct.nvinfer1::plugin::EfficientNMSParameters" = type { float, float, i32, i32, i8, i32, i8, i8, i32, i8, i32, i32, i8, i32, i32, i32, i32, i32, i8, i8, i8, i32 }
%"struct.nvinfer1::PluginFieldCollection" = type { i32, ptr }
%"class.nvinfer1::PluginField" = type { ptr, ptr, i32, i32 }
%"class.nvinfer1::plugin::EfficientNMSPluginCreator" = type { %"class.nvinfer1::pluginInternal::BaseCreator", %"struct.nvinfer1::PluginFieldCollection", %"struct.nvinfer1::plugin::EfficientNMSParameters", %"class.std::vector", %"class.std::__cxx11::basic_string" }
%"class.nvinfer1::pluginInternal::BaseCreator" = type { %"class.nvinfer1::v_1_0::IPluginCreator", %"class.std::__cxx11::basic_string" }
%"class.nvinfer1::v_1_0::IPluginCreator" = type { %"class.nvinfer1::v_1_0::IPluginCreatorInterface" }
%"class.nvinfer1::v_1_0::IPluginCreatorInterface" = type { %"class.nvinfer1::IVersionedInterface" }
%"class.nvinfer1::IVersionedInterface" = type { ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<nvinfer1::PluginField, std::allocator<nvinfer1::PluginField>>::_Vector_impl" }
%"struct.std::_Vector_base<nvinfer1::PluginField, std::allocator<nvinfer1::PluginField>>::_Vector_impl" = type { %"struct.std::_Vector_base<nvinfer1::PluginField, std::allocator<nvinfer1::PluginField>>::_Vector_impl_data" }
%"struct.std::_Vector_base<nvinfer1::PluginField, std::allocator<nvinfer1::PluginField>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str = external hidden unnamed_addr constant [98 x i8], align 1
@_ZTISt9exception = external constant ptr
@.str.20 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [11 x i8], align 1
@__func__._ZN8nvinfer16plugin25EfficientNMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE = external hidden unnamed_addr constant [13 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [33 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

; Function Attrs: noreturn
declare void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef) #3

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

declare ptr @__cxa_begin_catch(ptr)

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8nvinfer16plugin11caughtErrorERKSt9exception(ptr noundef nonnull align 8 dereferenceable(8)) #6

declare void @__cxa_end_catch()

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

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

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

; Function Attrs: mustprogress nounwind uwtable
define dso_local noundef ptr @_ZN8nvinfer16plugin25EfficientNMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr noundef %1, ptr noundef %2) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca %"class.std::set", align 8
  %12 = alloca %"class.std::initializer_list", align 8
  %13 = alloca [6 x %"class.std::__cxx11::basic_string"], align 8
  %14 = alloca ptr, align 8
  %15 = alloca %"class.std::allocator", align 1
  %16 = alloca %"class.std::allocator", align 1
  %17 = alloca %"class.std::allocator", align 1
  %18 = alloca %"class.std::allocator", align 1
  %19 = alloca %"class.std::allocator", align 1
  %20 = alloca %"class.std::allocator", align 1
  %21 = alloca i1, align 1
  %22 = alloca %"struct.std::less", align 1
  %23 = alloca %"class.std::allocator.6", align 1
  %24 = alloca i32, align 4
  %25 = alloca ptr, align 8
  %26 = alloca float, align 4
  %27 = alloca float, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca ptr, align 8
  %33 = alloca %"struct.nvinfer1::plugin::EfficientNMSParameters", align 8
  %34 = alloca ptr, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  %35 = load ptr, ptr %5, align 8
  %36 = load ptr, ptr %7, align 8, !tbaa !5
  %37 = icmp ne ptr %36, null
  br i1 %37, label %44, label %38

38:                                               ; preds = %3
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str, ptr noundef @__func__._ZN8nvinfer16plugin25EfficientNMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 447, i32 noundef 0, ptr noundef @.str.27) #12
          to label %39 unwind label %40

39:                                               ; preds = %38
  unreachable

40:                                               ; preds = %38
  %41 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %42 = extractvalue { ptr, i32 } %41, 0
  store ptr %42, ptr %8, align 8
  %43 = extractvalue { ptr, i32 } %41, 1
  store i32 %43, ptr %9, align 4
  br label %405

44:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #13
  %45 = load ptr, ptr %7, align 8, !tbaa !5
  %46 = getelementptr inbounds %"struct.nvinfer1::PluginFieldCollection", ptr %45, i32 0, i32 1
  %47 = load ptr, ptr %46, align 8, !tbaa !9
  store ptr %47, ptr %10, align 8, !tbaa !5
  %48 = load ptr, ptr %10, align 8, !tbaa !5
  %49 = icmp ne ptr %48, null
  br i1 %49, label %56, label %50

50:                                               ; preds = %44
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str, ptr noundef @__func__._ZN8nvinfer16plugin25EfficientNMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 449, i32 noundef 0, ptr noundef @.str.28) #12
          to label %51 unwind label %52

51:                                               ; preds = %50
  unreachable

52:                                               ; preds = %50
  %53 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %54 = extractvalue { ptr, i32 } %53, 0
  store ptr %54, ptr %8, align 8
  %55 = extractvalue { ptr, i32 } %53, 1
  store i32 %55, ptr %9, align 4
  br label %404

56:                                               ; preds = %44
  call void @llvm.lifetime.start.p0(i64 192, ptr %13) #13
  store i1 true, ptr %21, align 1
  store ptr %13, ptr %14, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #13
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #13
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef @.str.20, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %57 unwind label %91

57:                                               ; preds = %56
  %58 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %13, i64 1
  store ptr %58, ptr %14, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #13
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #13
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef @.str.21, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %59 unwind label %95

59:                                               ; preds = %57
  %60 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %13, i64 2
  store ptr %60, ptr %14, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #13
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #13
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef @.str.22, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %61 unwind label %99

61:                                               ; preds = %59
  %62 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %13, i64 3
  store ptr %62, ptr %14, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #13
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #13
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef @.str.23, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %63 unwind label %103

63:                                               ; preds = %61
  %64 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %13, i64 4
  store ptr %64, ptr %14, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #13
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #13
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef @.str.24, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %65 unwind label %107

65:                                               ; preds = %63
  %66 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %13, i64 5
  store ptr %66, ptr %14, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #13
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #13
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef @.str.26, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %67 unwind label %111

67:                                               ; preds = %65
  store i1 false, ptr %21, align 1
  %68 = getelementptr inbounds %"class.std::initializer_list", ptr %12, i32 0, i32 0
  store ptr %13, ptr %68, align 8, !tbaa !12
  %69 = getelementptr inbounds %"class.std::initializer_list", ptr %12, i32 0, i32 1
  store i64 6, ptr %69, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #13
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #13
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #13
  %70 = getelementptr inbounds { ptr, i64 }, ptr %12, i32 0, i32 0
  %71 = load ptr, ptr %70, align 8
  %72 = getelementptr inbounds { ptr, i64 }, ptr %12, i32 0, i32 1
  %73 = load i64, ptr %72, align 8
  invoke void @_ZNSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EEC2ESt16initializer_listIS5_ERKS7_RKS8_(ptr noundef nonnull align 8 dereferenceable(48) %11, ptr %71, i64 %73, ptr noundef nonnull align 1 dereferenceable(1) %22, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %74 unwind label %115

74:                                               ; preds = %67
  %75 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN8nvinfer16plugin31validateRequiredAttributesExistESt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS7_ESaIS7_EEPKNS_21PluginFieldCollectionE(ptr noundef %11, ptr noundef %75)
          to label %76 unwind label %119

76:                                               ; preds = %74
  call void @_ZNSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %11) #13
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #13
  %77 = getelementptr inbounds [6 x %"class.std::__cxx11::basic_string"], ptr %13, i32 0, i32 0
  %78 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %77, i64 6
  br label %79

79:                                               ; preds = %79, %76
  %80 = phi ptr [ %78, %76 ], [ %81, %79 ]
  %81 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %80, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #13
  %82 = icmp eq ptr %81, %77
  br i1 %82, label %83, label %79

83:                                               ; preds = %79
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #13
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #13
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #13
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #13
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #13
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #13
  call void @llvm.lifetime.end.p0(i64 192, ptr %13) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #13
  store i32 0, ptr %24, align 4, !tbaa !16
  br label %84

84:                                               ; preds = %379, %83
  %85 = load i32, ptr %24, align 4, !tbaa !16
  %86 = load ptr, ptr %7, align 8, !tbaa !5
  %87 = getelementptr inbounds %"struct.nvinfer1::PluginFieldCollection", ptr %86, i32 0, i32 0
  %88 = load i32, ptr %87, align 8, !tbaa !17
  %89 = icmp slt i32 %85, %88
  br i1 %89, label %147, label %90

90:                                               ; preds = %84
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #13
  br label %383

91:                                               ; preds = %56
  %92 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %93 = extractvalue { ptr, i32 } %92, 0
  store ptr %93, ptr %8, align 8
  %94 = extractvalue { ptr, i32 } %92, 1
  store i32 %94, ptr %9, align 4
  br label %136

95:                                               ; preds = %57
  %96 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %97 = extractvalue { ptr, i32 } %96, 0
  store ptr %97, ptr %8, align 8
  %98 = extractvalue { ptr, i32 } %96, 1
  store i32 %98, ptr %9, align 4
  br label %135

99:                                               ; preds = %59
  %100 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %101 = extractvalue { ptr, i32 } %100, 0
  store ptr %101, ptr %8, align 8
  %102 = extractvalue { ptr, i32 } %100, 1
  store i32 %102, ptr %9, align 4
  br label %134

103:                                              ; preds = %61
  %104 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %105 = extractvalue { ptr, i32 } %104, 0
  store ptr %105, ptr %8, align 8
  %106 = extractvalue { ptr, i32 } %104, 1
  store i32 %106, ptr %9, align 4
  br label %133

107:                                              ; preds = %63
  %108 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %109 = extractvalue { ptr, i32 } %108, 0
  store ptr %109, ptr %8, align 8
  %110 = extractvalue { ptr, i32 } %108, 1
  store i32 %110, ptr %9, align 4
  br label %132

111:                                              ; preds = %65
  %112 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %113 = extractvalue { ptr, i32 } %112, 0
  store ptr %113, ptr %8, align 8
  %114 = extractvalue { ptr, i32 } %112, 1
  store i32 %114, ptr %9, align 4
  br label %131

115:                                              ; preds = %67
  %116 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %117 = extractvalue { ptr, i32 } %116, 0
  store ptr %117, ptr %8, align 8
  %118 = extractvalue { ptr, i32 } %116, 1
  store i32 %118, ptr %9, align 4
  br label %123

119:                                              ; preds = %74
  %120 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %8, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %9, align 4
  call void @_ZNSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %11) #13
  br label %123

123:                                              ; preds = %119, %115
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #13
  %124 = getelementptr inbounds [6 x %"class.std::__cxx11::basic_string"], ptr %13, i32 0, i32 0
  %125 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %124, i64 6
  br label %126

126:                                              ; preds = %126, %123
  %127 = phi ptr [ %125, %123 ], [ %128, %126 ]
  %128 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %127, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #13
  %129 = icmp eq ptr %128, %124
  br i1 %129, label %130, label %126

130:                                              ; preds = %126
  br label %131

131:                                              ; preds = %130, %111
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #13
  br label %132

132:                                              ; preds = %131, %107
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #13
  br label %133

133:                                              ; preds = %132, %103
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #13
  br label %134

134:                                              ; preds = %133, %99
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #13
  br label %135

135:                                              ; preds = %134, %95
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #13
  br label %136

136:                                              ; preds = %135, %91
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #13
  %137 = load i1, ptr %21, align 1
  br i1 %137, label %138, label %146

138:                                              ; preds = %136
  %139 = load ptr, ptr %14, align 8
  %140 = icmp eq ptr %13, %139
  br i1 %140, label %145, label %141

141:                                              ; preds = %141, %138
  %142 = phi ptr [ %139, %138 ], [ %143, %141 ]
  %143 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %142, i64 -1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #13
  %144 = icmp eq ptr %143, %13
  br i1 %144, label %145, label %141

145:                                              ; preds = %141, %138
  br label %146

146:                                              ; preds = %145, %136
  call void @llvm.lifetime.end.p0(i64 192, ptr %13) #13
  br label %404

147:                                              ; preds = %84
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #13
  %148 = load ptr, ptr %10, align 8, !tbaa !5
  %149 = load i32, ptr %24, align 4, !tbaa !16
  %150 = sext i32 %149 to i64
  %151 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %148, i64 %150
  %152 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %151, i32 0, i32 0
  %153 = load ptr, ptr %152, align 8, !tbaa !18
  store ptr %153, ptr %25, align 8, !tbaa !5
  %154 = load ptr, ptr %25, align 8, !tbaa !5
  %155 = call i32 @strcmp(ptr noundef %154, ptr noundef @.str.20) #14
  %156 = icmp ne i32 %155, 0
  br i1 %156, label %191, label %157

157:                                              ; preds = %147
  %158 = load ptr, ptr %10, align 8, !tbaa !5
  %159 = load i32, ptr %24, align 4, !tbaa !16
  %160 = sext i32 %159 to i64
  %161 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %158, i64 %160
  %162 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %161, i32 0, i32 2
  %163 = load i32, ptr %162, align 8, !tbaa !21
  %164 = icmp eq i32 %163, 1
  br i1 %164, label %171, label %165

165:                                              ; preds = %157
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str, ptr noundef @__func__._ZN8nvinfer16plugin25EfficientNMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 458, i32 noundef 0, ptr noundef @.str.29) #12
          to label %166 unwind label %167

166:                                              ; preds = %165
  unreachable

167:                                              ; preds = %353, %271, %237, %203, %165
  %168 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %169 = extractvalue { ptr, i32 } %168, 0
  store ptr %169, ptr %8, align 8
  %170 = extractvalue { ptr, i32 } %168, 1
  store i32 %170, ptr %9, align 4
  br label %382

171:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #13
  %172 = load ptr, ptr %10, align 8, !tbaa !5
  %173 = load i32, ptr %24, align 4, !tbaa !16
  %174 = sext i32 %173 to i64
  %175 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %172, i64 %174
  %176 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %175, i32 0, i32 1
  %177 = load ptr, ptr %176, align 8, !tbaa !22
  %178 = load float, ptr %177, align 4, !tbaa !23
  store float %178, ptr %26, align 4, !tbaa !23
  %179 = load float, ptr %26, align 4, !tbaa !23
  %180 = fcmp oge float %179, 0.000000e+00
  br i1 %180, label %187, label %181

181:                                              ; preds = %171
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str, ptr noundef @__func__._ZN8nvinfer16plugin25EfficientNMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 460, i32 noundef 0, ptr noundef @.str.30) #12
          to label %182 unwind label %183

182:                                              ; preds = %181
  unreachable

183:                                              ; preds = %181
  %184 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %185 = extractvalue { ptr, i32 } %184, 0
  store ptr %185, ptr %8, align 8
  %186 = extractvalue { ptr, i32 } %184, 1
  store i32 %186, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #13
  br label %382

187:                                              ; preds = %171
  %188 = load float, ptr %26, align 4, !tbaa !23
  %189 = getelementptr inbounds %"class.nvinfer1::plugin::EfficientNMSPluginCreator", ptr %35, i32 0, i32 2
  %190 = getelementptr inbounds %"struct.nvinfer1::plugin::EfficientNMSParameters", ptr %189, i32 0, i32 1
  store float %188, ptr %190, align 4, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #13
  br label %191

191:                                              ; preds = %187, %147
  %192 = load ptr, ptr %25, align 8, !tbaa !5
  %193 = call i32 @strcmp(ptr noundef %192, ptr noundef @.str.21) #14
  %194 = icmp ne i32 %193, 0
  br i1 %194, label %225, label %195

195:                                              ; preds = %191
  %196 = load ptr, ptr %10, align 8, !tbaa !5
  %197 = load i32, ptr %24, align 4, !tbaa !16
  %198 = sext i32 %197 to i64
  %199 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %196, i64 %198
  %200 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %199, i32 0, i32 2
  %201 = load i32, ptr %200, align 8, !tbaa !21
  %202 = icmp eq i32 %201, 1
  br i1 %202, label %205, label %203

203:                                              ; preds = %195
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str, ptr noundef @__func__._ZN8nvinfer16plugin25EfficientNMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 465, i32 noundef 0, ptr noundef @.str.29) #12
          to label %204 unwind label %167

204:                                              ; preds = %203
  unreachable

205:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #13
  %206 = load ptr, ptr %10, align 8, !tbaa !5
  %207 = load i32, ptr %24, align 4, !tbaa !16
  %208 = sext i32 %207 to i64
  %209 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %206, i64 %208
  %210 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %209, i32 0, i32 1
  %211 = load ptr, ptr %210, align 8, !tbaa !22
  %212 = load float, ptr %211, align 4, !tbaa !23
  store float %212, ptr %27, align 4, !tbaa !23
  %213 = load float, ptr %27, align 4, !tbaa !23
  %214 = fcmp ogt float %213, 0.000000e+00
  br i1 %214, label %221, label %215

215:                                              ; preds = %205
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str, ptr noundef @__func__._ZN8nvinfer16plugin25EfficientNMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 467, i32 noundef 0, ptr noundef @.str.31) #12
          to label %216 unwind label %217

216:                                              ; preds = %215
  unreachable

217:                                              ; preds = %215
  %218 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %219 = extractvalue { ptr, i32 } %218, 0
  store ptr %219, ptr %8, align 8
  %220 = extractvalue { ptr, i32 } %218, 1
  store i32 %220, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #13
  br label %382

221:                                              ; preds = %205
  %222 = load float, ptr %27, align 4, !tbaa !23
  %223 = getelementptr inbounds %"class.nvinfer1::plugin::EfficientNMSPluginCreator", ptr %35, i32 0, i32 2
  %224 = getelementptr inbounds %"struct.nvinfer1::plugin::EfficientNMSParameters", ptr %223, i32 0, i32 0
  store float %222, ptr %224, align 8, !tbaa !40
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #13
  br label %225

225:                                              ; preds = %221, %191
  %226 = load ptr, ptr %25, align 8, !tbaa !5
  %227 = call i32 @strcmp(ptr noundef %226, ptr noundef @.str.22) #14
  %228 = icmp ne i32 %227, 0
  br i1 %228, label %259, label %229

229:                                              ; preds = %225
  %230 = load ptr, ptr %10, align 8, !tbaa !5
  %231 = load i32, ptr %24, align 4, !tbaa !16
  %232 = sext i32 %231 to i64
  %233 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %230, i64 %232
  %234 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %233, i32 0, i32 2
  %235 = load i32, ptr %234, align 8, !tbaa !21
  %236 = icmp eq i32 %235, 5
  br i1 %236, label %239, label %237

237:                                              ; preds = %229
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str, ptr noundef @__func__._ZN8nvinfer16plugin25EfficientNMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 472, i32 noundef 0, ptr noundef @.str.32) #12
          to label %238 unwind label %167

238:                                              ; preds = %237
  unreachable

239:                                              ; preds = %229
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #13
  %240 = load ptr, ptr %10, align 8, !tbaa !5
  %241 = load i32, ptr %24, align 4, !tbaa !16
  %242 = sext i32 %241 to i64
  %243 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %240, i64 %242
  %244 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %243, i32 0, i32 1
  %245 = load ptr, ptr %244, align 8, !tbaa !22
  %246 = load i32, ptr %245, align 4, !tbaa !16
  store i32 %246, ptr %28, align 4, !tbaa !16
  %247 = load i32, ptr %28, align 4, !tbaa !16
  %248 = icmp sgt i32 %247, 0
  br i1 %248, label %255, label %249

249:                                              ; preds = %239
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str, ptr noundef @__func__._ZN8nvinfer16plugin25EfficientNMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 474, i32 noundef 0, ptr noundef @.str.33) #12
          to label %250 unwind label %251

250:                                              ; preds = %249
  unreachable

251:                                              ; preds = %249
  %252 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %253 = extractvalue { ptr, i32 } %252, 0
  store ptr %253, ptr %8, align 8
  %254 = extractvalue { ptr, i32 } %252, 1
  store i32 %254, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #13
  br label %382

255:                                              ; preds = %239
  %256 = load i32, ptr %28, align 4, !tbaa !16
  %257 = getelementptr inbounds %"class.nvinfer1::plugin::EfficientNMSPluginCreator", ptr %35, i32 0, i32 2
  %258 = getelementptr inbounds %"struct.nvinfer1::plugin::EfficientNMSParameters", ptr %257, i32 0, i32 2
  store i32 %256, ptr %258, align 8, !tbaa !41
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #13
  br label %259

259:                                              ; preds = %255, %225
  %260 = load ptr, ptr %25, align 8, !tbaa !5
  %261 = call i32 @strcmp(ptr noundef %260, ptr noundef @.str.23) #14
  %262 = icmp ne i32 %261, 0
  br i1 %262, label %283, label %263

263:                                              ; preds = %259
  %264 = load ptr, ptr %10, align 8, !tbaa !5
  %265 = load i32, ptr %24, align 4, !tbaa !16
  %266 = sext i32 %265 to i64
  %267 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %264, i64 %266
  %268 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %267, i32 0, i32 2
  %269 = load i32, ptr %268, align 8, !tbaa !21
  %270 = icmp eq i32 %269, 5
  br i1 %270, label %273, label %271

271:                                              ; preds = %263
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str, ptr noundef @__func__._ZN8nvinfer16plugin25EfficientNMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 479, i32 noundef 0, ptr noundef @.str.32) #12
          to label %272 unwind label %167

272:                                              ; preds = %271
  unreachable

273:                                              ; preds = %263
  %274 = load ptr, ptr %10, align 8, !tbaa !5
  %275 = load i32, ptr %24, align 4, !tbaa !16
  %276 = sext i32 %275 to i64
  %277 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %274, i64 %276
  %278 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %277, i32 0, i32 1
  %279 = load ptr, ptr %278, align 8, !tbaa !22
  %280 = load i32, ptr %279, align 4, !tbaa !16
  %281 = getelementptr inbounds %"class.nvinfer1::plugin::EfficientNMSPluginCreator", ptr %35, i32 0, i32 2
  %282 = getelementptr inbounds %"struct.nvinfer1::plugin::EfficientNMSParameters", ptr %281, i32 0, i32 5
  store i32 %280, ptr %282, align 4, !tbaa !42
  br label %283

283:                                              ; preds = %273, %259
  %284 = load ptr, ptr %25, align 8, !tbaa !5
  %285 = call i32 @strcmp(ptr noundef %284, ptr noundef @.str.24) #14
  %286 = icmp ne i32 %285, 0
  br i1 %286, label %312, label %287

287:                                              ; preds = %283
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #13
  %288 = load ptr, ptr %10, align 8, !tbaa !5
  %289 = load i32, ptr %24, align 4, !tbaa !16
  %290 = sext i32 %289 to i64
  %291 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %288, i64 %290
  %292 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %291, i32 0, i32 1
  %293 = load ptr, ptr %292, align 8, !tbaa !22
  %294 = load i32, ptr %293, align 4, !tbaa !16
  store i32 %294, ptr %29, align 4, !tbaa !16
  %295 = load i32, ptr %29, align 4, !tbaa !16
  %296 = icmp eq i32 %295, 0
  br i1 %296, label %306, label %297

297:                                              ; preds = %287
  %298 = load i32, ptr %29, align 4, !tbaa !16
  %299 = icmp eq i32 %298, 1
  br i1 %299, label %306, label %300

300:                                              ; preds = %297
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str, ptr noundef @__func__._ZN8nvinfer16plugin25EfficientNMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 485, i32 noundef 0, ptr noundef @.str.34) #12
          to label %301 unwind label %302

301:                                              ; preds = %300
  unreachable

302:                                              ; preds = %300
  %303 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %304 = extractvalue { ptr, i32 } %303, 0
  store ptr %304, ptr %8, align 8
  %305 = extractvalue { ptr, i32 } %303, 1
  store i32 %305, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #13
  br label %382

306:                                              ; preds = %297, %287
  %307 = load i32, ptr %29, align 4, !tbaa !16
  %308 = icmp ne i32 %307, 0
  %309 = getelementptr inbounds %"class.nvinfer1::plugin::EfficientNMSPluginCreator", ptr %35, i32 0, i32 2
  %310 = getelementptr inbounds %"struct.nvinfer1::plugin::EfficientNMSParameters", ptr %309, i32 0, i32 6
  %311 = zext i1 %308 to i8
  store i8 %311, ptr %310, align 8, !tbaa !43
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #13
  br label %312

312:                                              ; preds = %306, %283
  %313 = load ptr, ptr %25, align 8, !tbaa !5
  %314 = call i32 @strcmp(ptr noundef %313, ptr noundef @.str.25) #14
  %315 = icmp ne i32 %314, 0
  br i1 %315, label %341, label %316

316:                                              ; preds = %312
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #13
  %317 = load ptr, ptr %10, align 8, !tbaa !5
  %318 = load i32, ptr %24, align 4, !tbaa !16
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %317, i64 %319
  %321 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %320, i32 0, i32 1
  %322 = load ptr, ptr %321, align 8, !tbaa !22
  %323 = load i32, ptr %322, align 4, !tbaa !16
  store i32 %323, ptr %30, align 4, !tbaa !16
  %324 = load i32, ptr %30, align 4, !tbaa !16
  %325 = icmp eq i32 %324, 0
  br i1 %325, label %335, label %326

326:                                              ; preds = %316
  %327 = load i32, ptr %30, align 4, !tbaa !16
  %328 = icmp eq i32 %327, 1
  br i1 %328, label %335, label %329

329:                                              ; preds = %326
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str, ptr noundef @__func__._ZN8nvinfer16plugin25EfficientNMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 491, i32 noundef 0, ptr noundef @.str.35) #12
          to label %330 unwind label %331

330:                                              ; preds = %329
  unreachable

331:                                              ; preds = %329
  %332 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %333 = extractvalue { ptr, i32 } %332, 0
  store ptr %333, ptr %8, align 8
  %334 = extractvalue { ptr, i32 } %332, 1
  store i32 %334, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #13
  br label %382

335:                                              ; preds = %326, %316
  %336 = load i32, ptr %30, align 4, !tbaa !16
  %337 = icmp ne i32 %336, 0
  %338 = getelementptr inbounds %"class.nvinfer1::plugin::EfficientNMSPluginCreator", ptr %35, i32 0, i32 2
  %339 = getelementptr inbounds %"struct.nvinfer1::plugin::EfficientNMSParameters", ptr %338, i32 0, i32 9
  %340 = zext i1 %337 to i8
  store i8 %340, ptr %339, align 8, !tbaa !44
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #13
  br label %341

341:                                              ; preds = %335, %312
  %342 = load ptr, ptr %25, align 8, !tbaa !5
  %343 = call i32 @strcmp(ptr noundef %342, ptr noundef @.str.26) #14
  %344 = icmp ne i32 %343, 0
  br i1 %344, label %378, label %345

345:                                              ; preds = %341
  %346 = load ptr, ptr %10, align 8, !tbaa !5
  %347 = load i32, ptr %24, align 4, !tbaa !16
  %348 = sext i32 %347 to i64
  %349 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %346, i64 %348
  %350 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %349, i32 0, i32 2
  %351 = load i32, ptr %350, align 8, !tbaa !21
  %352 = icmp eq i32 %351, 5
  br i1 %352, label %355, label %353

353:                                              ; preds = %345
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str, ptr noundef @__func__._ZN8nvinfer16plugin25EfficientNMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 496, i32 noundef 0, ptr noundef @.str.32) #12
          to label %354 unwind label %167

354:                                              ; preds = %353
  unreachable

355:                                              ; preds = %345
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #13
  %356 = load ptr, ptr %10, align 8, !tbaa !5
  %357 = load i32, ptr %24, align 4, !tbaa !16
  %358 = sext i32 %357 to i64
  %359 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %356, i64 %358
  %360 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %359, i32 0, i32 1
  %361 = load ptr, ptr %360, align 8, !tbaa !22
  %362 = load i32, ptr %361, align 4, !tbaa !16
  store i32 %362, ptr %31, align 4, !tbaa !16
  %363 = load i32, ptr %31, align 4, !tbaa !16
  %364 = icmp eq i32 %363, 0
  br i1 %364, label %374, label %365

365:                                              ; preds = %355
  %366 = load i32, ptr %31, align 4, !tbaa !16
  %367 = icmp eq i32 %366, 1
  br i1 %367, label %374, label %368

368:                                              ; preds = %365
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str, ptr noundef @__func__._ZN8nvinfer16plugin25EfficientNMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 498, i32 noundef 0, ptr noundef @.str.36) #12
          to label %369 unwind label %370

369:                                              ; preds = %368
  unreachable

370:                                              ; preds = %368
  %371 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %372 = extractvalue { ptr, i32 } %371, 0
  store ptr %372, ptr %8, align 8
  %373 = extractvalue { ptr, i32 } %371, 1
  store i32 %373, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #13
  br label %382

374:                                              ; preds = %365, %355
  %375 = load i32, ptr %31, align 4, !tbaa !16
  %376 = getelementptr inbounds %"class.nvinfer1::plugin::EfficientNMSPluginCreator", ptr %35, i32 0, i32 2
  %377 = getelementptr inbounds %"struct.nvinfer1::plugin::EfficientNMSParameters", ptr %376, i32 0, i32 8
  store i32 %375, ptr %377, align 4, !tbaa !45
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #13
  br label %378

378:                                              ; preds = %374, %341
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #13
  br label %379

379:                                              ; preds = %378
  %380 = load i32, ptr %24, align 4, !tbaa !16
  %381 = add nsw i32 %380, 1
  store i32 %381, ptr %24, align 4, !tbaa !16
  br label %84, !llvm.loop !46

382:                                              ; preds = %370, %331, %302, %251, %217, %183, %167
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #13
  br label %404

383:                                              ; preds = %90
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #13
  %384 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 120) #15
          to label %385 unwind label %395

385:                                              ; preds = %383
  %386 = getelementptr inbounds %"class.nvinfer1::plugin::EfficientNMSPluginCreator", ptr %35, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %33, ptr align 8 %386, i64 76, i1 false), !tbaa.struct !48
  invoke void @_ZN8nvinfer16plugin18EfficientNMSPluginC1ENS0_22EfficientNMSParametersE(ptr noundef nonnull align 8 dereferenceable(120) %384, ptr noundef byval(%"struct.nvinfer1::plugin::EfficientNMSParameters") align 8 %33)
          to label %387 unwind label %399

387:                                              ; preds = %385
  store ptr %384, ptr %32, align 8, !tbaa !5
  %388 = load ptr, ptr %32, align 8, !tbaa !5
  %389 = getelementptr inbounds %"class.nvinfer1::pluginInternal::BaseCreator", ptr %35, i32 0, i32 1
  %390 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %389) #13
  %391 = load ptr, ptr %388, align 8, !tbaa !51
  %392 = getelementptr inbounds ptr, ptr %391, i64 15
  %393 = load ptr, ptr %392, align 8
  call void %393(ptr noundef nonnull align 8 dereferenceable(120) %388, ptr noundef %390) #13
  %394 = load ptr, ptr %32, align 8, !tbaa !5
  store ptr %394, ptr %4, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #13
  br label %416

395:                                              ; preds = %383
  %396 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %8, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %9, align 4
  br label %403

399:                                              ; preds = %385
  %400 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %401 = extractvalue { ptr, i32 } %400, 0
  store ptr %401, ptr %8, align 8
  %402 = extractvalue { ptr, i32 } %400, 1
  store i32 %402, ptr %9, align 4
  call void @_ZdlPvm(ptr noundef %384, i64 noundef 120) #16
  br label %403

403:                                              ; preds = %399, %395
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #13
  br label %404

404:                                              ; preds = %403, %382, %146, %52
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #13
  br label %405

405:                                              ; preds = %404, %40
  %406 = load i32, ptr %9, align 4
  %407 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt9exception) #13
  %408 = icmp eq i32 %406, %407
  br i1 %408, label %409, label %421

409:                                              ; preds = %405
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #13
  %410 = load ptr, ptr %8, align 8
  %411 = call ptr @__cxa_begin_catch(ptr %410) #13
  store ptr %411, ptr %34, align 8
  %412 = load ptr, ptr %34, align 8, !tbaa !5
  invoke void @_ZN8nvinfer16plugin11caughtErrorERKSt9exception(ptr noundef nonnull align 8 dereferenceable(8) %412)
          to label %413 unwind label %418

413:                                              ; preds = %409
  invoke void @__cxa_end_catch()
          to label %414 unwind label %418

414:                                              ; preds = %413
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #13
  br label %415

415:                                              ; preds = %414
  store ptr null, ptr %4, align 8
  br label %416

416:                                              ; preds = %415, %387
  %417 = load ptr, ptr %4, align 8
  ret ptr %417

418:                                              ; preds = %413, %409
  %419 = landingpad { ptr, i32 }
          catch ptr null
  %420 = extractvalue { ptr, i32 } %419, 0
  call void @__clang_call_terminate(ptr %420) #17
  unreachable

421:                                              ; preds = %405
  %422 = load ptr, ptr %8, align 8
  call void @__clang_call_terminate(ptr %422) #17
  unreachable
}

declare void @_ZN8nvinfer16plugin31validateRequiredAttributesExistESt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS7_ESaIS7_EEPKNS_21PluginFieldCollectionE(ptr noundef, ptr noundef) #9

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

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

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

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

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

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

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strcmp(ptr noundef, ptr noundef) #11

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

declare void @_ZN8nvinfer16plugin18EfficientNMSPluginC1ENS0_22EfficientNMSParametersE(ptr, ptr)

attributes #0 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { 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 #5 = { nounwind memory(none) }
attributes #6 = { 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 #7 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { mustprogress 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 #11 = { nounwind willreturn memory(read) "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 #12 = { noreturn }
attributes #13 = { nounwind }
attributes #14 = { nounwind willreturn memory(read) }
attributes #15 = { builtin allocsize(0) }
attributes #16 = { builtin nounwind }
attributes #17 = { 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, !6, i64 8}
!10 = !{!"_ZTSN8nvinfer121PluginFieldCollectionE", !11, i64 0, !6, i64 8}
!11 = !{!"int", !7, i64 0}
!12 = !{!13, !6, i64 0}
!13 = !{!"_ZTSSt16initializer_listINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE", !6, i64 0, !14, i64 8}
!14 = !{!"long", !7, i64 0}
!15 = !{!13, !14, i64 8}
!16 = !{!11, !11, i64 0}
!17 = !{!10, !11, i64 0}
!18 = !{!19, !6, i64 0}
!19 = !{!"_ZTSN8nvinfer111PluginFieldE", !6, i64 0, !6, i64 8, !20, i64 16, !11, i64 20}
!20 = !{!"_ZTSN8nvinfer115PluginFieldTypeE", !7, i64 0}
!21 = !{!19, !20, i64 16}
!22 = !{!19, !6, i64 8}
!23 = !{!24, !24, i64 0}
!24 = !{!"float", !7, i64 0}
!25 = !{!26, !24, i64 60}
!26 = !{!"_ZTSN8nvinfer16plugin25EfficientNMSPluginCreatorE", !27, i64 0, !10, i64 40, !33, i64 56, !36, i64 136, !31, i64 160}
!27 = !{!"_ZTSN8nvinfer114pluginInternal11BaseCreatorE", !28, i64 0, !31, i64 8}
!28 = !{!"_ZTSN8nvinfer15v_1_014IPluginCreatorE", !29, i64 0}
!29 = !{!"_ZTSN8nvinfer15v_1_023IPluginCreatorInterfaceE", !30, i64 0}
!30 = !{!"_ZTSN8nvinfer119IVersionedInterfaceE"}
!31 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !32, i64 0, !14, i64 8, !7, i64 16}
!32 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!33 = !{!"_ZTSN8nvinfer16plugin22EfficientNMSParametersE", !24, i64 0, !24, i64 4, !11, i64 8, !11, i64 12, !34, i64 16, !11, i64 20, !34, i64 24, !34, i64 25, !11, i64 28, !34, i64 32, !11, i64 36, !11, i64 40, !34, i64 44, !11, i64 48, !11, i64 52, !11, i64 56, !11, i64 60, !11, i64 64, !34, i64 68, !34, i64 69, !34, i64 70, !35, i64 72}
!34 = !{!"bool", !7, i64 0}
!35 = !{!"_ZTSN8nvinfer18DataTypeE", !7, i64 0}
!36 = !{!"_ZTSSt6vectorIN8nvinfer111PluginFieldESaIS1_EE", !37, i64 0}
!37 = !{!"_ZTSSt12_Vector_baseIN8nvinfer111PluginFieldESaIS1_EE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIN8nvinfer111PluginFieldESaIS1_EE12_Vector_implE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIN8nvinfer111PluginFieldESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!40 = !{!26, !24, i64 56}
!41 = !{!26, !11, i64 64}
!42 = !{!26, !11, i64 76}
!43 = !{!26, !34, i64 80}
!44 = !{!26, !34, i64 88}
!45 = !{!26, !11, i64 84}
!46 = distinct !{!46, !47}
!47 = !{!"llvm.loop.mustprogress"}
!48 = !{i64 0, i64 4, !23, i64 4, i64 4, !23, i64 8, i64 4, !16, i64 12, i64 4, !16, i64 16, i64 1, !49, i64 20, i64 4, !16, i64 24, i64 1, !49, i64 25, i64 1, !49, i64 28, i64 4, !16, i64 32, i64 1, !49, i64 36, i64 4, !16, i64 40, i64 4, !16, i64 44, i64 1, !49, i64 48, i64 4, !16, i64 52, i64 4, !16, i64 56, i64 4, !16, i64 60, i64 4, !16, i64 64, i64 4, !16, i64 68, i64 1, !49, i64 69, i64 1, !49, i64 70, i64 1, !49, i64 72, i64 4, !50}
!49 = !{!34, !34, i64 0}
!50 = !{!35, !35, i64 0}
!51 = !{!52, !52, i64 0}
!52 = !{!"vtable pointer", !8, i64 0}


; 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::set" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, std::_Identity<std::__cxx11::basic_string<char>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, std::_Identity<std::__cxx11::basic_string<char>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%"struct.std::less" = type { i8 }
%"class.std::allocator.6" = type { i8 }
%"class.nvinfer1::PluginField" = type { ptr, ptr, i32, i32 }
%"struct.nvinfer1::plugin::EfficientNMSParameters" = type { float, float, i32, i32, i8, i32, i8, i8, i32, i8, i32, i32, i8, i32, i32, i32, i32, i32, i8, i8, i8, i32 }

@.str = external hidden unnamed_addr constant [98 x i8], align 1
@_ZTISt9exception = external constant ptr
@.str.20 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [11 x i8], align 1
@__func__._ZN8nvinfer16plugin25EfficientNMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE = external hidden unnamed_addr constant [13 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [33 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8nvinfer16plugin11caughtErrorERKSt9exception(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

declare void @__cxa_end_catch() local_unnamed_addr

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

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

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

; Function Attrs: mustprogress nounwind uwtable
define dso_local noundef ptr @_ZN8nvinfer16plugin25EfficientNMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE(ptr noundef nonnull align 8 dereferenceable(192) %0, ptr nocapture noundef readnone %1, ptr noundef %2) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.std::set", align 8
  %5 = alloca [6 x %"class.std::__cxx11::basic_string"], align 8
  %6 = alloca %"class.std::allocator", align 1
  %7 = alloca %"class.std::allocator", align 1
  %8 = alloca %"class.std::allocator", align 1
  %9 = alloca %"class.std::allocator", align 1
  %10 = alloca %"class.std::allocator", align 1
  %11 = alloca %"class.std::allocator", align 1
  %12 = alloca %"struct.std::less", align 1
  %13 = alloca %"class.std::allocator.6", align 1
  %.not101 = icmp eq ptr %2, null
  br i1 %.not101, label %14, label %18

14:                                               ; preds = %3
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN8nvinfer16plugin25EfficientNMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 447, i32 noundef 0, ptr noundef nonnull @.str.27) #11
          to label %15 unwind label %16

15:                                               ; preds = %14
  unreachable

16:                                               ; preds = %14
  %17 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %199

18:                                               ; preds = %3
  %19 = getelementptr inbounds i8, ptr %2, i64 8
  %20 = load ptr, ptr %19, align 8, !tbaa !5
  %.not102 = icmp eq ptr %20, null
  br i1 %.not102, label %21, label %25

21:                                               ; preds = %18
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN8nvinfer16plugin25EfficientNMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 449, i32 noundef 0, ptr noundef nonnull @.str.28) #11
          to label %22 unwind label %23

22:                                               ; preds = %21
  unreachable

23:                                               ; preds = %21
  %24 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %199

25:                                               ; preds = %18
  call void @llvm.lifetime.start.p0(i64 192, ptr nonnull %5) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.20, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %26 unwind label %.thread

26:                                               ; preds = %25
  %27 = getelementptr inbounds i8, ptr %5, i64 32
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull @.str.21, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %28 unwind label %55

28:                                               ; preds = %26
  %29 = getelementptr inbounds i8, ptr %5, i64 64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull @.str.22, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %30 unwind label %57

30:                                               ; preds = %28
  %31 = getelementptr inbounds i8, ptr %5, i64 96
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull @.str.23, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %32 unwind label %59

32:                                               ; preds = %30
  %33 = getelementptr inbounds i8, ptr %5, i64 128
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull @.str.24, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %34 unwind label %61

34:                                               ; preds = %32
  %35 = getelementptr inbounds i8, ptr %5, i64 160
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull @.str.26, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %36 unwind label %63

36:                                               ; preds = %34
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #12
  call void @_ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #12
  invoke void @_ZNSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EEC2ESt16initializer_listIS5_ERKS7_RKS8_(ptr noundef nonnull align 8 dereferenceable(48) %4, ptr nonnull %5, i64 6, ptr noundef nonnull align 1 dereferenceable(1) %12, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %37 unwind label %65

37:                                               ; preds = %36
  invoke void @_ZN8nvinfer16plugin31validateRequiredAttributesExistESt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS7_ESaIS7_EEPKNS_21PluginFieldCollectionE(ptr noundef nonnull %4, ptr noundef nonnull %2)
          to label %38 unwind label %67

38:                                               ; preds = %37
  call void @_ZNSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %4) #12
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #12
  %39 = getelementptr inbounds i8, ptr %5, i64 160
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #12
  %40 = getelementptr inbounds i8, ptr %5, i64 128
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #12
  %41 = getelementptr inbounds i8, ptr %5, i64 96
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #12
  %42 = getelementptr inbounds i8, ptr %5, i64 64
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #12
  %43 = getelementptr inbounds i8, ptr %5, i64 32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #12
  call void @llvm.lifetime.end.p0(i64 192, ptr nonnull %5) #12
  %44 = load i32, ptr %2, align 8, !tbaa !11
  %45 = icmp sgt i32 %44, 0
  br i1 %45, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %38
  %46 = getelementptr inbounds i8, ptr %0, i64 60
  %47 = getelementptr inbounds i8, ptr %0, i64 56
  %48 = getelementptr inbounds i8, ptr %0, i64 64
  %49 = getelementptr inbounds i8, ptr %0, i64 76
  %50 = getelementptr inbounds i8, ptr %0, i64 80
  %51 = getelementptr inbounds i8, ptr %0, i64 88
  %52 = getelementptr inbounds i8, ptr %0, i64 84
  %wide.trip.count = zext nneg i32 %44 to i64
  br label %83

._crit_edge:                                      ; preds = %186, %38
  %53 = invoke noalias noundef nonnull dereferenceable(120) ptr @_Znwm(i64 noundef 120) #13
          to label %187 unwind label %195

.thread:                                          ; preds = %25
  %54 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #12
  br label %.loopexit

55:                                               ; preds = %26
  %56 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %78

57:                                               ; preds = %28
  %58 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %77

59:                                               ; preds = %30
  %60 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %76

61:                                               ; preds = %32
  %62 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %75

63:                                               ; preds = %34
  %64 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %.loopexit127

65:                                               ; preds = %36
  %66 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %.loopexit127.loopexit

67:                                               ; preds = %37
  %68 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  call void @_ZNSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %4) #12
  br label %.loopexit127.loopexit

.loopexit127.loopexit:                            ; preds = %67, %65
  %.pn = phi { ptr, i32 } [ %68, %67 ], [ %66, %65 ]
  call void @_ZNSt15__new_allocatorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #12
  %69 = getelementptr inbounds i8, ptr %5, i64 160
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #12
  %70 = getelementptr inbounds i8, ptr %5, i64 128
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #12
  %71 = getelementptr inbounds i8, ptr %5, i64 96
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #12
  %72 = getelementptr inbounds i8, ptr %5, i64 64
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #12
  %73 = getelementptr inbounds i8, ptr %5, i64 32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #12
  br label %.loopexit127

.loopexit127:                                     ; preds = %.loopexit127.loopexit, %63
  %74 = phi i1 [ false, %63 ], [ true, %.loopexit127.loopexit ]
  %.pn.pn = phi { ptr, i32 } [ %64, %63 ], [ %.pn, %.loopexit127.loopexit ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #12
  br label %75

75:                                               ; preds = %.loopexit127, %61
  %.189 = phi i1 [ %74, %.loopexit127 ], [ false, %61 ]
  %.083 = phi ptr [ %35, %.loopexit127 ], [ %33, %61 ]
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %.loopexit127 ], [ %62, %61 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #12
  br label %76

76:                                               ; preds = %75, %59
  %.290 = phi i1 [ %.189, %75 ], [ false, %59 ]
  %.184 = phi ptr [ %.083, %75 ], [ %31, %59 ]
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %75 ], [ %60, %59 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #12
  br label %77

77:                                               ; preds = %76, %57
  %.391 = phi i1 [ %.290, %76 ], [ false, %57 ]
  %.285 = phi ptr [ %.184, %76 ], [ %29, %57 ]
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %76 ], [ %58, %57 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #12
  br label %78

78:                                               ; preds = %55, %77
  %.492 = phi i1 [ %.391, %77 ], [ false, %55 ]
  %.386 = phi ptr [ %.285, %77 ], [ %27, %55 ]
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %77 ], [ %56, %55 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #12
  %79 = icmp eq ptr %5, %.386
  %or.cond7 = select i1 %.492, i1 true, i1 %79
  br i1 %or.cond7, label %.loopexit, label %.preheader

.preheader:                                       ; preds = %78, %.preheader
  %80 = phi ptr [ %81, %.preheader ], [ %.386, %78 ]
  %81 = getelementptr inbounds i8, ptr %80, i64 -32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #12
  %82 = icmp eq ptr %81, %5
  br i1 %82, label %.loopexit, label %.preheader

.loopexit:                                        ; preds = %.preheader, %.thread, %78
  %.pn.pn.pn.pn.pn.pn.pn126 = phi { ptr, i32 } [ %54, %.thread ], [ %.pn.pn.pn.pn.pn.pn, %78 ], [ %.pn.pn.pn.pn.pn.pn, %.preheader ]
  call void @llvm.lifetime.end.p0(i64 192, ptr nonnull %5) #12
  br label %199

83:                                               ; preds = %.lr.ph, %186
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %186 ]
  %84 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %20, i64 %indvars.iv
  %85 = load ptr, ptr %84, align 8, !tbaa !12
  %86 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %85, ptr noundef nonnull dereferenceable(1) @.str.20) #14
  %.not = icmp eq i32 %86, 0
  br i1 %.not, label %87, label %103

87:                                               ; preds = %83
  %88 = getelementptr inbounds i8, ptr %84, i64 16
  %89 = load i32, ptr %88, align 8, !tbaa !15
  %90 = icmp eq i32 %89, 1
  br i1 %90, label %93, label %.invoke

91:                                               ; preds = %.invoke
  %92 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %199

93:                                               ; preds = %87
  %94 = getelementptr inbounds i8, ptr %84, i64 8
  %95 = load ptr, ptr %94, align 8, !tbaa !16
  %96 = load float, ptr %95, align 4, !tbaa !17
  %97 = fcmp ult float %96, 0.000000e+00
  br i1 %97, label %98, label %102

98:                                               ; preds = %93
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN8nvinfer16plugin25EfficientNMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 460, i32 noundef 0, ptr noundef nonnull @.str.30) #11
          to label %99 unwind label %100

99:                                               ; preds = %98
  unreachable

100:                                              ; preds = %98
  %101 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %199

102:                                              ; preds = %93
  store float %96, ptr %46, align 4, !tbaa !19
  br label %103

103:                                              ; preds = %102, %83
  %104 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %85, ptr noundef nonnull dereferenceable(1) @.str.21) #14
  %.not112 = icmp eq i32 %104, 0
  br i1 %.not112, label %105, label %119

105:                                              ; preds = %103
  %106 = getelementptr inbounds i8, ptr %84, i64 16
  %107 = load i32, ptr %106, align 8, !tbaa !15
  %108 = icmp eq i32 %107, 1
  br i1 %108, label %109, label %.invoke

109:                                              ; preds = %105
  %110 = getelementptr inbounds i8, ptr %84, i64 8
  %111 = load ptr, ptr %110, align 8, !tbaa !16
  %112 = load float, ptr %111, align 4, !tbaa !17
  %113 = fcmp ogt float %112, 0.000000e+00
  br i1 %113, label %118, label %114

114:                                              ; preds = %109
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN8nvinfer16plugin25EfficientNMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 467, i32 noundef 0, ptr noundef nonnull @.str.31) #11
          to label %115 unwind label %116

115:                                              ; preds = %114
  unreachable

116:                                              ; preds = %114
  %117 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %199

118:                                              ; preds = %109
  store float %112, ptr %47, align 8, !tbaa !35
  br label %119

119:                                              ; preds = %118, %103
  %120 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %85, ptr noundef nonnull dereferenceable(1) @.str.22) #14
  %.not113 = icmp eq i32 %120, 0
  br i1 %.not113, label %121, label %135

121:                                              ; preds = %119
  %122 = getelementptr inbounds i8, ptr %84, i64 16
  %123 = load i32, ptr %122, align 8, !tbaa !15
  %124 = icmp eq i32 %123, 5
  br i1 %124, label %125, label %.invoke

125:                                              ; preds = %121
  %126 = getelementptr inbounds i8, ptr %84, i64 8
  %127 = load ptr, ptr %126, align 8, !tbaa !16
  %128 = load i32, ptr %127, align 4, !tbaa !36
  %129 = icmp sgt i32 %128, 0
  br i1 %129, label %134, label %130

130:                                              ; preds = %125
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN8nvinfer16plugin25EfficientNMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 474, i32 noundef 0, ptr noundef nonnull @.str.33) #11
          to label %131 unwind label %132

131:                                              ; preds = %130
  unreachable

132:                                              ; preds = %130
  %133 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %199

134:                                              ; preds = %125
  store i32 %128, ptr %48, align 8, !tbaa !37
  br label %135

135:                                              ; preds = %134, %119
  %136 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %85, ptr noundef nonnull dereferenceable(1) @.str.23) #14
  %.not114 = icmp eq i32 %136, 0
  br i1 %.not114, label %137, label %145

137:                                              ; preds = %135
  %138 = getelementptr inbounds i8, ptr %84, i64 16
  %139 = load i32, ptr %138, align 8, !tbaa !15
  %140 = icmp eq i32 %139, 5
  br i1 %140, label %141, label %.invoke

141:                                              ; preds = %137
  %142 = getelementptr inbounds i8, ptr %84, i64 8
  %143 = load ptr, ptr %142, align 8, !tbaa !16
  %144 = load i32, ptr %143, align 4, !tbaa !36
  store i32 %144, ptr %49, align 4, !tbaa !38
  br label %145

145:                                              ; preds = %141, %135
  %146 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %85, ptr noundef nonnull dereferenceable(1) @.str.24) #14
  %.not115 = icmp eq i32 %146, 0
  br i1 %.not115, label %147, label %157

147:                                              ; preds = %145
  %148 = getelementptr inbounds i8, ptr %84, i64 8
  %149 = load ptr, ptr %148, align 8, !tbaa !16
  %150 = load i32, ptr %149, align 4, !tbaa !36
  %or.cond = icmp ult i32 %150, 2
  br i1 %or.cond, label %155, label %151

151:                                              ; preds = %147
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN8nvinfer16plugin25EfficientNMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 485, i32 noundef 0, ptr noundef nonnull @.str.34) #11
          to label %152 unwind label %153

152:                                              ; preds = %151
  unreachable

153:                                              ; preds = %151
  %154 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %199

155:                                              ; preds = %147
  %156 = trunc nuw i32 %150 to i8
  store i8 %156, ptr %50, align 8, !tbaa !39
  br label %157

157:                                              ; preds = %155, %145
  %158 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %85, ptr noundef nonnull dereferenceable(1) @.str.25) #14
  %.not116 = icmp eq i32 %158, 0
  br i1 %.not116, label %159, label %169

159:                                              ; preds = %157
  %160 = getelementptr inbounds i8, ptr %84, i64 8
  %161 = load ptr, ptr %160, align 8, !tbaa !16
  %162 = load i32, ptr %161, align 4, !tbaa !36
  %or.cond3 = icmp ult i32 %162, 2
  br i1 %or.cond3, label %167, label %163

163:                                              ; preds = %159
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN8nvinfer16plugin25EfficientNMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 491, i32 noundef 0, ptr noundef nonnull @.str.35) #11
          to label %164 unwind label %165

164:                                              ; preds = %163
  unreachable

165:                                              ; preds = %163
  %166 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %199

167:                                              ; preds = %159
  %168 = trunc nuw i32 %162 to i8
  store i8 %168, ptr %51, align 8, !tbaa !40
  br label %169

169:                                              ; preds = %167, %157
  %170 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %85, ptr noundef nonnull dereferenceable(1) @.str.26) #14
  %.not117 = icmp eq i32 %170, 0
  br i1 %.not117, label %171, label %186

171:                                              ; preds = %169
  %172 = getelementptr inbounds i8, ptr %84, i64 16
  %173 = load i32, ptr %172, align 8, !tbaa !15
  %174 = icmp eq i32 %173, 5
  br i1 %174, label %177, label %.invoke

.invoke:                                          ; preds = %87, %171, %137, %121, %105
  %175 = phi i32 [ 465, %105 ], [ 472, %121 ], [ 479, %137 ], [ 496, %171 ], [ 458, %87 ]
  %176 = phi ptr [ @.str.29, %105 ], [ @.str.32, %121 ], [ @.str.32, %137 ], [ @.str.32, %171 ], [ @.str.29, %87 ]
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN8nvinfer16plugin25EfficientNMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef %175, i32 noundef 0, ptr noundef nonnull %176) #11
          to label %.cont unwind label %91

.cont:                                            ; preds = %.invoke
  unreachable

177:                                              ; preds = %171
  %178 = getelementptr inbounds i8, ptr %84, i64 8
  %179 = load ptr, ptr %178, align 8, !tbaa !16
  %180 = load i32, ptr %179, align 4, !tbaa !36
  %or.cond5 = icmp ult i32 %180, 2
  br i1 %or.cond5, label %185, label %181

181:                                              ; preds = %177
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN8nvinfer16plugin25EfficientNMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 498, i32 noundef 0, ptr noundef nonnull @.str.36) #11
          to label %182 unwind label %183

182:                                              ; preds = %181
  unreachable

183:                                              ; preds = %181
  %184 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %199

185:                                              ; preds = %177
  store i32 %180, ptr %52, align 4, !tbaa !41
  br label %186

186:                                              ; preds = %185, %169
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %83, !llvm.loop !42

187:                                              ; preds = %._crit_edge
  %188 = getelementptr inbounds i8, ptr %0, i64 56
  invoke void @_ZN8nvinfer16plugin18EfficientNMSPluginC1ENS0_22EfficientNMSParametersE(ptr noundef nonnull align 8 dereferenceable(120) %53, ptr noundef nonnull byval(%"struct.nvinfer1::plugin::EfficientNMSParameters") align 8 %188)
          to label %189 unwind label %197

189:                                              ; preds = %187
  %190 = getelementptr inbounds i8, ptr %0, i64 8
  %191 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %190) #12
  %192 = load ptr, ptr %53, align 8, !tbaa !44
  %193 = getelementptr inbounds i8, ptr %192, i64 120
  %194 = load ptr, ptr %193, align 8
  call void %194(ptr noundef nonnull align 8 dereferenceable(120) %53, ptr noundef %191) #12
  br label %205

195:                                              ; preds = %._crit_edge
  %196 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %199

197:                                              ; preds = %187
  %198 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  call void @_ZdlPvm(ptr noundef nonnull %53, i64 noundef 120) #15
  br label %199

199:                                              ; preds = %23, %.loopexit, %183, %165, %153, %132, %116, %100, %91, %197, %195, %16
  %.pn118.pn.pn = phi { ptr, i32 } [ %17, %16 ], [ %.pn.pn.pn.pn.pn.pn.pn126, %.loopexit ], [ %24, %23 ], [ %184, %183 ], [ %92, %91 ], [ %166, %165 ], [ %154, %153 ], [ %133, %132 ], [ %117, %116 ], [ %101, %100 ], [ %198, %197 ], [ %196, %195 ]
  %.10 = extractvalue { ptr, i32 } %.pn118.pn.pn, 0
  %.1082 = extractvalue { ptr, i32 } %.pn118.pn.pn, 1
  %200 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9exception) #12
  %201 = icmp eq i32 %.1082, %200
  br i1 %201, label %202, label %209

202:                                              ; preds = %199
  %203 = call ptr @__cxa_begin_catch(ptr %.10) #12
  invoke void @_ZN8nvinfer16plugin11caughtErrorERKSt9exception(ptr noundef nonnull align 8 dereferenceable(8) %203)
          to label %204 unwind label %206

204:                                              ; preds = %202
  invoke void @__cxa_end_catch()
          to label %205 unwind label %206

205:                                              ; preds = %204, %189
  %.0 = phi ptr [ %53, %189 ], [ null, %204 ]
  ret ptr %.0

206:                                              ; preds = %204, %202
  %207 = landingpad { ptr, i32 }
          catch ptr null
  %208 = extractvalue { ptr, i32 } %207, 0
  call void @__clang_call_terminate(ptr %208) #16
  unreachable

209:                                              ; preds = %199
  call void @__clang_call_terminate(ptr %.10) #16
  unreachable
}

declare void @_ZN8nvinfer16plugin31validateRequiredAttributesExistESt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS7_ESaIS7_EEPKNS_21PluginFieldCollectionE(ptr noundef, ptr noundef) local_unnamed_addr #8

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

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

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

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #10

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

declare void @_ZN8nvinfer16plugin18EfficientNMSPluginC1ENS0_22EfficientNMSParametersE(ptr, ptr) local_unnamed_addr

attributes #0 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { 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 #4 = { nofree nosync nounwind memory(none) }
attributes #5 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { 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 #10 = { mustprogress nofree nounwind willreturn memory(argmem: read) "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 #11 = { noreturn }
attributes #12 = { nounwind }
attributes #13 = { builtin allocsize(0) }
attributes #14 = { nounwind willreturn memory(read) }
attributes #15 = { builtin nounwind }
attributes #16 = { 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, !10, i64 8}
!6 = !{!"_ZTSN8nvinfer121PluginFieldCollectionE", !7, i64 0, !10, i64 8}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!6, !7, i64 0}
!12 = !{!13, !10, i64 0}
!13 = !{!"_ZTSN8nvinfer111PluginFieldE", !10, i64 0, !10, i64 8, !14, i64 16, !7, i64 20}
!14 = !{!"_ZTSN8nvinfer115PluginFieldTypeE", !8, i64 0}
!15 = !{!13, !14, i64 16}
!16 = !{!13, !10, i64 8}
!17 = !{!18, !18, i64 0}
!18 = !{!"float", !8, i64 0}
!19 = !{!20, !18, i64 60}
!20 = !{!"_ZTSN8nvinfer16plugin25EfficientNMSPluginCreatorE", !21, i64 0, !6, i64 40, !28, i64 56, !31, i64 136, !25, i64 160}
!21 = !{!"_ZTSN8nvinfer114pluginInternal11BaseCreatorE", !22, i64 0, !25, i64 8}
!22 = !{!"_ZTSN8nvinfer15v_1_014IPluginCreatorE", !23, i64 0}
!23 = !{!"_ZTSN8nvinfer15v_1_023IPluginCreatorInterfaceE", !24, i64 0}
!24 = !{!"_ZTSN8nvinfer119IVersionedInterfaceE"}
!25 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !26, i64 0, !27, i64 8, !8, i64 16}
!26 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !10, i64 0}
!27 = !{!"long", !8, i64 0}
!28 = !{!"_ZTSN8nvinfer16plugin22EfficientNMSParametersE", !18, i64 0, !18, i64 4, !7, i64 8, !7, i64 12, !29, i64 16, !7, i64 20, !29, i64 24, !29, i64 25, !7, i64 28, !29, i64 32, !7, i64 36, !7, i64 40, !29, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !29, i64 68, !29, i64 69, !29, i64 70, !30, i64 72}
!29 = !{!"bool", !8, i64 0}
!30 = !{!"_ZTSN8nvinfer18DataTypeE", !8, i64 0}
!31 = !{!"_ZTSSt6vectorIN8nvinfer111PluginFieldESaIS1_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIN8nvinfer111PluginFieldESaIS1_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIN8nvinfer111PluginFieldESaIS1_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIN8nvinfer111PluginFieldESaIS1_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!35 = !{!20, !18, i64 56}
!36 = !{!7, !7, i64 0}
!37 = !{!20, !7, i64 64}
!38 = !{!20, !7, i64 76}
!39 = !{!20, !29, i64 80}
!40 = !{!20, !29, i64 88}
!41 = !{!20, !7, i64 84}
!42 = distinct !{!42, !43}
!43 = !{!"llvm.loop.mustprogress"}
!44 = !{!45, !45, i64 0}
!45 = !{!"vtable pointer", !9, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass