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

; 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.nvinfer1::plugin::LogStream" = type { %"class.std::basic_ostream.base", %"class.nvinfer1::plugin::LogStream<nvinfer1::ILogger::Severity::kWARNING>::Buf", %"class.std::mutex", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.nvinfer1::plugin::LogStream<nvinfer1::ILogger::Severity::kWARNING>::Buf" = type { %"class.std::__cxx11::basic_stringbuf" }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { 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::mutex" = type { %"class.std::__mutex_base" }
%"class.std::__mutex_base" = type { %union.pthread_mutex_t }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"struct.nvinfer1::plugin::DetectionOutputParameters" = type <{ i8, i8, [2 x i8], i32, i32, i32, i32, float, float, i32, [3 x i32], i8, i8, i8, i8 }>
%"struct.nvinfer1::PluginFieldCollection" = type { i32, ptr }
%"class.nvinfer1::plugin::NMSBasePluginCreator" = type <{ %"class.nvinfer1::pluginInternal::BaseCreator", %"struct.nvinfer1::plugin::DetectionOutputParameters", %"class.std::__cxx11::basic_string", i32, [4 x i8] }>
%"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.nvinfer1::PluginField" = type { ptr, ptr, i32, i32 }

@_ZN8nvinfer16plugin11gLogWarningE = external global %"class.nvinfer1::plugin::LogStream", align 8
@.str = external hidden unnamed_addr constant [123 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [80 x i8], align 1
@_ZTISt9exception = external constant ptr
@.str.25 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [16 x i8], align 1
@__func__._ZN8nvinfer16plugin16NMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE = external hidden unnamed_addr constant [13 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [44 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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(152) ptr @_ZN8nvinfer16pluginlsILNS_7ILogger8SeverityE2EEERNS0_9LogStreamIXT_EEES6_PFRSoS7_E(ptr noundef nonnull align 8 dereferenceable(152), ptr noundef) #1

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #1

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

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

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

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

declare ptr @__cxa_begin_catch(ptr)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8nvinfer16plugin15DetectionOutput12setScoreBitsEi(ptr noundef nonnull align 8 dereferenceable(112), i32 noundef) #6 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
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) #6 align 2

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

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

declare void @__cxa_end_catch()

; Function Attrs: mustprogress nounwind uwtable
define dso_local noundef ptr @_ZN8nvinfer16plugin16NMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE(ptr noundef nonnull align 8 dereferenceable(124) %0, ptr noundef %1, ptr noundef %2) unnamed_addr #6 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 i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca %"struct.nvinfer1::plugin::DetectionOutputParameters", align 8
  %19 = 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
  %20 = load ptr, ptr %5, align 8
  %21 = invoke noundef nonnull align 8 dereferenceable(152) ptr @_ZN8nvinfer16pluginlsILNS_7ILogger8SeverityE2EA123_cEERNS0_9LogStreamIXT_EEES7_RKT0_(ptr noundef nonnull align 8 dereferenceable(152) @_ZN8nvinfer16plugin11gLogWarningE, ptr noundef nonnull align 1 dereferenceable(123) @.str)
          to label %22 unwind label %47

22:                                               ; preds = %3
  %23 = invoke noundef nonnull align 8 dereferenceable(152) ptr @_ZN8nvinfer16pluginlsILNS_7ILogger8SeverityE2EEERNS0_9LogStreamIXT_EEES6_PFRSoS7_E(ptr noundef nonnull align 8 dereferenceable(152) %21, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %24 unwind label %47

24:                                               ; preds = %22
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #11
  %25 = load ptr, ptr %7, align 8, !tbaa !5
  %26 = getelementptr inbounds %"struct.nvinfer1::PluginFieldCollection", ptr %25, i32 0, i32 1
  %27 = load ptr, ptr %26, align 8, !tbaa !9
  store ptr %27, ptr %10, align 8, !tbaa !5
  %28 = getelementptr inbounds %"class.nvinfer1::plugin::NMSBasePluginCreator", ptr %20, i32 0, i32 1
  %29 = getelementptr inbounds %"struct.nvinfer1::plugin::DetectionOutputParameters", ptr %28, i32 0, i32 9
  store i32 3, ptr %29, align 4, !tbaa !12
  %30 = getelementptr inbounds %"class.nvinfer1::plugin::NMSBasePluginCreator", ptr %20, i32 0, i32 1
  %31 = getelementptr inbounds %"struct.nvinfer1::plugin::DetectionOutputParameters", ptr %30, i32 0, i32 10
  %32 = getelementptr inbounds [3 x i32], ptr %31, i64 0, i64 0
  store i32 0, ptr %32, align 8, !tbaa !25
  %33 = getelementptr inbounds %"class.nvinfer1::plugin::NMSBasePluginCreator", ptr %20, i32 0, i32 1
  %34 = getelementptr inbounds %"struct.nvinfer1::plugin::DetectionOutputParameters", ptr %33, i32 0, i32 10
  %35 = getelementptr inbounds [3 x i32], ptr %34, i64 0, i64 1
  store i32 2, ptr %35, align 4, !tbaa !25
  %36 = getelementptr inbounds %"class.nvinfer1::plugin::NMSBasePluginCreator", ptr %20, i32 0, i32 1
  %37 = getelementptr inbounds %"struct.nvinfer1::plugin::DetectionOutputParameters", ptr %36, i32 0, i32 10
  %38 = getelementptr inbounds [3 x i32], ptr %37, i64 0, i64 2
  store i32 1, ptr %38, align 8, !tbaa !25
  %39 = getelementptr inbounds %"class.nvinfer1::plugin::NMSBasePluginCreator", ptr %20, i32 0, i32 3
  store i32 16, ptr %39, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #11
  store i32 0, ptr %11, align 4, !tbaa !25
  br label %40

40:                                               ; preds = %422, %24
  %41 = load i32, ptr %11, align 4, !tbaa !25
  %42 = load ptr, ptr %7, align 8, !tbaa !5
  %43 = getelementptr inbounds %"struct.nvinfer1::PluginFieldCollection", ptr %42, i32 0, i32 0
  %44 = load i32, ptr %43, align 8, !tbaa !27
  %45 = icmp slt i32 %41, %44
  br i1 %45, label %51, label %46

46:                                               ; preds = %40
  store i32 2, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #11
  br label %425

47:                                               ; preds = %22, %3
  %48 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %49 = extractvalue { ptr, i32 } %48, 0
  store ptr %49, ptr %8, align 8
  %50 = extractvalue { ptr, i32 } %48, 1
  store i32 %50, ptr %9, align 4
  br label %450

51:                                               ; preds = %40
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #11
  %52 = load ptr, ptr %10, align 8, !tbaa !5
  %53 = load i32, ptr %11, align 4, !tbaa !25
  %54 = sext i32 %53 to i64
  %55 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %52, i64 %54
  %56 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %55, i32 0, i32 0
  %57 = load ptr, ptr %56, align 8, !tbaa !28
  store ptr %57, ptr %13, align 8, !tbaa !5
  %58 = load ptr, ptr %13, align 8, !tbaa !5
  %59 = call i32 @strcmp(ptr noundef %58, ptr noundef @.str.25) #12
  %60 = icmp ne i32 %59, 0
  br i1 %60, label %87, label %61

61:                                               ; preds = %51
  %62 = load ptr, ptr %10, align 8, !tbaa !5
  %63 = load i32, ptr %11, align 4, !tbaa !25
  %64 = sext i32 %63 to i64
  %65 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %62, i64 %64
  %66 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %65, i32 0, i32 2
  %67 = load i32, ptr %66, align 8, !tbaa !31
  %68 = icmp eq i32 %67, 5
  br i1 %68, label %75, label %69

69:                                               ; preds = %61
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str.2, ptr noundef @__func__._ZN8nvinfer16plugin16NMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 656, i32 noundef 0, ptr noundef @.str.39) #13
          to label %70 unwind label %71

70:                                               ; preds = %69
  unreachable

71:                                               ; preds = %394, %371, %347, %301, %245, %221, %197, %173, %149, %125, %99, %69
  %72 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %73 = extractvalue { ptr, i32 } %72, 0
  store ptr %73, ptr %8, align 8
  %74 = extractvalue { ptr, i32 } %72, 1
  store i32 %74, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #11
  br label %449

75:                                               ; preds = %61
  %76 = load ptr, ptr %10, align 8, !tbaa !5
  %77 = load i32, ptr %11, align 4, !tbaa !25
  %78 = sext i32 %77 to i64
  %79 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %76, i64 %78
  %80 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %79, i32 0, i32 1
  %81 = load ptr, ptr %80, align 8, !tbaa !32
  %82 = load i32, ptr %81, align 4, !tbaa !25
  %83 = icmp ne i32 %82, 0
  %84 = getelementptr inbounds %"class.nvinfer1::plugin::NMSBasePluginCreator", ptr %20, i32 0, i32 1
  %85 = getelementptr inbounds %"struct.nvinfer1::plugin::DetectionOutputParameters", ptr %84, i32 0, i32 0
  %86 = zext i1 %83 to i8
  store i8 %86, ptr %85, align 8, !tbaa !33
  br label %421

87:                                               ; preds = %51
  %88 = load ptr, ptr %13, align 8, !tbaa !5
  %89 = call i32 @strcmp(ptr noundef %88, ptr noundef @.str.26) #12
  %90 = icmp ne i32 %89, 0
  br i1 %90, label %113, label %91

91:                                               ; preds = %87
  %92 = load ptr, ptr %10, align 8, !tbaa !5
  %93 = load i32, ptr %11, align 4, !tbaa !25
  %94 = sext i32 %93 to i64
  %95 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %92, i64 %94
  %96 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %95, i32 0, i32 2
  %97 = load i32, ptr %96, align 8, !tbaa !31
  %98 = icmp eq i32 %97, 5
  br i1 %98, label %101, label %99

99:                                               ; preds = %91
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str.2, ptr noundef @__func__._ZN8nvinfer16plugin16NMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 661, i32 noundef 0, ptr noundef @.str.39) #13
          to label %100 unwind label %71

100:                                              ; preds = %99
  unreachable

101:                                              ; preds = %91
  %102 = load ptr, ptr %10, align 8, !tbaa !5
  %103 = load i32, ptr %11, align 4, !tbaa !25
  %104 = sext i32 %103 to i64
  %105 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %102, i64 %104
  %106 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %105, i32 0, i32 1
  %107 = load ptr, ptr %106, align 8, !tbaa !32
  %108 = load i32, ptr %107, align 4, !tbaa !25
  %109 = icmp ne i32 %108, 0
  %110 = getelementptr inbounds %"class.nvinfer1::plugin::NMSBasePluginCreator", ptr %20, i32 0, i32 1
  %111 = getelementptr inbounds %"struct.nvinfer1::plugin::DetectionOutputParameters", ptr %110, i32 0, i32 1
  %112 = zext i1 %109 to i8
  store i8 %112, ptr %111, align 1, !tbaa !34
  br label %420

113:                                              ; preds = %87
  %114 = load ptr, ptr %13, align 8, !tbaa !5
  %115 = call i32 @strcmp(ptr noundef %114, ptr noundef @.str.27) #12
  %116 = icmp ne i32 %115, 0
  br i1 %116, label %137, label %117

117:                                              ; preds = %113
  %118 = load ptr, ptr %10, align 8, !tbaa !5
  %119 = load i32, ptr %11, align 4, !tbaa !25
  %120 = sext i32 %119 to i64
  %121 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %118, i64 %120
  %122 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %121, i32 0, i32 2
  %123 = load i32, ptr %122, align 8, !tbaa !31
  %124 = icmp eq i32 %123, 5
  br i1 %124, label %127, label %125

125:                                              ; preds = %117
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str.2, ptr noundef @__func__._ZN8nvinfer16plugin16NMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 666, i32 noundef 0, ptr noundef @.str.39) #13
          to label %126 unwind label %71

126:                                              ; preds = %125
  unreachable

127:                                              ; preds = %117
  %128 = load ptr, ptr %10, align 8, !tbaa !5
  %129 = load i32, ptr %11, align 4, !tbaa !25
  %130 = sext i32 %129 to i64
  %131 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %128, i64 %130
  %132 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %131, i32 0, i32 1
  %133 = load ptr, ptr %132, align 8, !tbaa !32
  %134 = load i32, ptr %133, align 4, !tbaa !25
  %135 = getelementptr inbounds %"class.nvinfer1::plugin::NMSBasePluginCreator", ptr %20, i32 0, i32 1
  %136 = getelementptr inbounds %"struct.nvinfer1::plugin::DetectionOutputParameters", ptr %135, i32 0, i32 3
  store i32 %134, ptr %136, align 4, !tbaa !35
  br label %419

137:                                              ; preds = %113
  %138 = load ptr, ptr %13, align 8, !tbaa !5
  %139 = call i32 @strcmp(ptr noundef %138, ptr noundef @.str.28) #12
  %140 = icmp ne i32 %139, 0
  br i1 %140, label %161, label %141

141:                                              ; preds = %137
  %142 = load ptr, ptr %10, align 8, !tbaa !5
  %143 = load i32, ptr %11, align 4, !tbaa !25
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %142, i64 %144
  %146 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %145, i32 0, i32 2
  %147 = load i32, ptr %146, align 8, !tbaa !31
  %148 = icmp eq i32 %147, 5
  br i1 %148, label %151, label %149

149:                                              ; preds = %141
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str.2, ptr noundef @__func__._ZN8nvinfer16plugin16NMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 671, i32 noundef 0, ptr noundef @.str.39) #13
          to label %150 unwind label %71

150:                                              ; preds = %149
  unreachable

151:                                              ; preds = %141
  %152 = load ptr, ptr %10, align 8, !tbaa !5
  %153 = load i32, ptr %11, align 4, !tbaa !25
  %154 = sext i32 %153 to i64
  %155 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %152, i64 %154
  %156 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %155, i32 0, i32 1
  %157 = load ptr, ptr %156, align 8, !tbaa !32
  %158 = load i32, ptr %157, align 4, !tbaa !25
  %159 = getelementptr inbounds %"class.nvinfer1::plugin::NMSBasePluginCreator", ptr %20, i32 0, i32 1
  %160 = getelementptr inbounds %"struct.nvinfer1::plugin::DetectionOutputParameters", ptr %159, i32 0, i32 4
  store i32 %158, ptr %160, align 8, !tbaa !36
  br label %418

161:                                              ; preds = %137
  %162 = load ptr, ptr %13, align 8, !tbaa !5
  %163 = call i32 @strcmp(ptr noundef %162, ptr noundef @.str.29) #12
  %164 = icmp ne i32 %163, 0
  br i1 %164, label %185, label %165

165:                                              ; preds = %161
  %166 = load ptr, ptr %10, align 8, !tbaa !5
  %167 = load i32, ptr %11, align 4, !tbaa !25
  %168 = sext i32 %167 to i64
  %169 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %166, i64 %168
  %170 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %169, i32 0, i32 2
  %171 = load i32, ptr %170, align 8, !tbaa !31
  %172 = icmp eq i32 %171, 5
  br i1 %172, label %175, label %173

173:                                              ; preds = %165
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str.2, ptr noundef @__func__._ZN8nvinfer16plugin16NMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 676, i32 noundef 0, ptr noundef @.str.39) #13
          to label %174 unwind label %71

174:                                              ; preds = %173
  unreachable

175:                                              ; preds = %165
  %176 = load ptr, ptr %10, align 8, !tbaa !5
  %177 = load i32, ptr %11, align 4, !tbaa !25
  %178 = sext i32 %177 to i64
  %179 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %176, i64 %178
  %180 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %179, i32 0, i32 1
  %181 = load ptr, ptr %180, align 8, !tbaa !32
  %182 = load i32, ptr %181, align 4, !tbaa !25
  %183 = getelementptr inbounds %"class.nvinfer1::plugin::NMSBasePluginCreator", ptr %20, i32 0, i32 1
  %184 = getelementptr inbounds %"struct.nvinfer1::plugin::DetectionOutputParameters", ptr %183, i32 0, i32 5
  store i32 %182, ptr %184, align 4, !tbaa !37
  br label %417

185:                                              ; preds = %161
  %186 = load ptr, ptr %13, align 8, !tbaa !5
  %187 = call i32 @strcmp(ptr noundef %186, ptr noundef @.str.30) #12
  %188 = icmp ne i32 %187, 0
  br i1 %188, label %209, label %189

189:                                              ; preds = %185
  %190 = load ptr, ptr %10, align 8, !tbaa !5
  %191 = load i32, ptr %11, align 4, !tbaa !25
  %192 = sext i32 %191 to i64
  %193 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %190, i64 %192
  %194 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %193, i32 0, i32 2
  %195 = load i32, ptr %194, align 8, !tbaa !31
  %196 = icmp eq i32 %195, 5
  br i1 %196, label %199, label %197

197:                                              ; preds = %189
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str.2, ptr noundef @__func__._ZN8nvinfer16plugin16NMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 681, i32 noundef 0, ptr noundef @.str.39) #13
          to label %198 unwind label %71

198:                                              ; preds = %197
  unreachable

199:                                              ; preds = %189
  %200 = load ptr, ptr %10, align 8, !tbaa !5
  %201 = load i32, ptr %11, align 4, !tbaa !25
  %202 = sext i32 %201 to i64
  %203 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %200, i64 %202
  %204 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %203, i32 0, i32 1
  %205 = load ptr, ptr %204, align 8, !tbaa !32
  %206 = load i32, ptr %205, align 4, !tbaa !25
  %207 = getelementptr inbounds %"class.nvinfer1::plugin::NMSBasePluginCreator", ptr %20, i32 0, i32 1
  %208 = getelementptr inbounds %"struct.nvinfer1::plugin::DetectionOutputParameters", ptr %207, i32 0, i32 6
  store i32 %206, ptr %208, align 8, !tbaa !38
  br label %416

209:                                              ; preds = %185
  %210 = load ptr, ptr %13, align 8, !tbaa !5
  %211 = call i32 @strcmp(ptr noundef %210, ptr noundef @.str.31) #12
  %212 = icmp ne i32 %211, 0
  br i1 %212, label %233, label %213

213:                                              ; preds = %209
  %214 = load ptr, ptr %10, align 8, !tbaa !5
  %215 = load i32, ptr %11, align 4, !tbaa !25
  %216 = sext i32 %215 to i64
  %217 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %214, i64 %216
  %218 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %217, i32 0, i32 2
  %219 = load i32, ptr %218, align 8, !tbaa !31
  %220 = icmp eq i32 %219, 1
  br i1 %220, label %223, label %221

221:                                              ; preds = %213
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str.2, ptr noundef @__func__._ZN8nvinfer16plugin16NMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 686, i32 noundef 0, ptr noundef @.str.40) #13
          to label %222 unwind label %71

222:                                              ; preds = %221
  unreachable

223:                                              ; preds = %213
  %224 = load ptr, ptr %10, align 8, !tbaa !5
  %225 = load i32, ptr %11, align 4, !tbaa !25
  %226 = sext i32 %225 to i64
  %227 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %224, i64 %226
  %228 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %227, i32 0, i32 1
  %229 = load ptr, ptr %228, align 8, !tbaa !32
  %230 = load float, ptr %229, align 4, !tbaa !39
  %231 = getelementptr inbounds %"class.nvinfer1::plugin::NMSBasePluginCreator", ptr %20, i32 0, i32 1
  %232 = getelementptr inbounds %"struct.nvinfer1::plugin::DetectionOutputParameters", ptr %231, i32 0, i32 7
  store float %230, ptr %232, align 4, !tbaa !40
  br label %415

233:                                              ; preds = %209
  %234 = load ptr, ptr %13, align 8, !tbaa !5
  %235 = call i32 @strcmp(ptr noundef %234, ptr noundef @.str.32) #12
  %236 = icmp ne i32 %235, 0
  br i1 %236, label %257, label %237

237:                                              ; preds = %233
  %238 = load ptr, ptr %10, align 8, !tbaa !5
  %239 = load i32, ptr %11, align 4, !tbaa !25
  %240 = sext i32 %239 to i64
  %241 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %238, i64 %240
  %242 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %241, i32 0, i32 2
  %243 = load i32, ptr %242, align 8, !tbaa !31
  %244 = icmp eq i32 %243, 1
  br i1 %244, label %247, label %245

245:                                              ; preds = %237
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str.2, ptr noundef @__func__._ZN8nvinfer16plugin16NMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 691, i32 noundef 0, ptr noundef @.str.40) #13
          to label %246 unwind label %71

246:                                              ; preds = %245
  unreachable

247:                                              ; preds = %237
  %248 = load ptr, ptr %10, align 8, !tbaa !5
  %249 = load i32, ptr %11, align 4, !tbaa !25
  %250 = sext i32 %249 to i64
  %251 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %248, i64 %250
  %252 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %251, i32 0, i32 1
  %253 = load ptr, ptr %252, align 8, !tbaa !32
  %254 = load float, ptr %253, align 4, !tbaa !39
  %255 = getelementptr inbounds %"class.nvinfer1::plugin::NMSBasePluginCreator", ptr %20, i32 0, i32 1
  %256 = getelementptr inbounds %"struct.nvinfer1::plugin::DetectionOutputParameters", ptr %255, i32 0, i32 8
  store float %254, ptr %256, align 8, !tbaa !41
  br label %414

257:                                              ; preds = %233
  %258 = load ptr, ptr %13, align 8, !tbaa !5
  %259 = call i32 @strcmp(ptr noundef %258, ptr noundef @.str.34) #12
  %260 = icmp ne i32 %259, 0
  br i1 %260, label %273, label %261

261:                                              ; preds = %257
  %262 = load ptr, ptr %10, align 8, !tbaa !5
  %263 = load i32, ptr %11, align 4, !tbaa !25
  %264 = sext i32 %263 to i64
  %265 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %262, i64 %264
  %266 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %265, i32 0, i32 1
  %267 = load ptr, ptr %266, align 8, !tbaa !32
  %268 = load i32, ptr %267, align 4, !tbaa !25
  %269 = icmp ne i32 %268, 0
  %270 = getelementptr inbounds %"class.nvinfer1::plugin::NMSBasePluginCreator", ptr %20, i32 0, i32 1
  %271 = getelementptr inbounds %"struct.nvinfer1::plugin::DetectionOutputParameters", ptr %270, i32 0, i32 11
  %272 = zext i1 %269 to i8
  store i8 %272, ptr %271, align 4, !tbaa !42
  br label %413

273:                                              ; preds = %257
  %274 = load ptr, ptr %13, align 8, !tbaa !5
  %275 = call i32 @strcmp(ptr noundef %274, ptr noundef @.str.35) #12
  %276 = icmp ne i32 %275, 0
  br i1 %276, label %289, label %277

277:                                              ; preds = %273
  %278 = load ptr, ptr %10, align 8, !tbaa !5
  %279 = load i32, ptr %11, align 4, !tbaa !25
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %278, i64 %280
  %282 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %281, i32 0, i32 1
  %283 = load ptr, ptr %282, align 8, !tbaa !32
  %284 = load i32, ptr %283, align 4, !tbaa !25
  %285 = icmp ne i32 %284, 0
  %286 = getelementptr inbounds %"class.nvinfer1::plugin::NMSBasePluginCreator", ptr %20, i32 0, i32 1
  %287 = getelementptr inbounds %"struct.nvinfer1::plugin::DetectionOutputParameters", ptr %286, i32 0, i32 12
  %288 = zext i1 %285 to i8
  store i8 %288, ptr %287, align 1, !tbaa !43
  br label %412

289:                                              ; preds = %273
  %290 = load ptr, ptr %13, align 8, !tbaa !5
  %291 = call i32 @strcmp(ptr noundef %290, ptr noundef @.str.33) #12
  %292 = icmp ne i32 %291, 0
  br i1 %292, label %335, label %293

293:                                              ; preds = %289
  %294 = load ptr, ptr %10, align 8, !tbaa !5
  %295 = load i32, ptr %11, align 4, !tbaa !25
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %294, i64 %296
  %298 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %297, i32 0, i32 2
  %299 = load i32, ptr %298, align 8, !tbaa !31
  %300 = icmp eq i32 %299, 5
  br i1 %300, label %303, label %301

301:                                              ; preds = %293
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str.2, ptr noundef @__func__._ZN8nvinfer16plugin16NMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 704, i32 noundef 0, ptr noundef @.str.39) #13
          to label %302 unwind label %71

302:                                              ; preds = %301
  unreachable

303:                                              ; preds = %293
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #11
  %304 = load ptr, ptr %10, align 8, !tbaa !5
  %305 = load i32, ptr %11, align 4, !tbaa !25
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %304, i64 %306
  %308 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %307, i32 0, i32 3
  %309 = load i32, ptr %308, align 4, !tbaa !44
  store i32 %309, ptr %14, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #11
  %310 = load ptr, ptr %10, align 8, !tbaa !5
  %311 = load i32, ptr %11, align 4, !tbaa !25
  %312 = sext i32 %311 to i64
  %313 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %310, i64 %312
  %314 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %313, i32 0, i32 1
  %315 = load ptr, ptr %314, align 8, !tbaa !32
  store ptr %315, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #11
  store i32 0, ptr %16, align 4, !tbaa !25
  br label %316

316:                                              ; preds = %331, %303
  %317 = load i32, ptr %16, align 4, !tbaa !25
  %318 = load i32, ptr %14, align 4, !tbaa !25
  %319 = icmp slt i32 %317, %318
  br i1 %319, label %321, label %320

320:                                              ; preds = %316
  store i32 5, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #11
  br label %334

321:                                              ; preds = %316
  %322 = load ptr, ptr %15, align 8, !tbaa !5
  %323 = load i32, ptr %322, align 4, !tbaa !25
  %324 = getelementptr inbounds %"class.nvinfer1::plugin::NMSBasePluginCreator", ptr %20, i32 0, i32 1
  %325 = getelementptr inbounds %"struct.nvinfer1::plugin::DetectionOutputParameters", ptr %324, i32 0, i32 10
  %326 = load i32, ptr %16, align 4, !tbaa !25
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds [3 x i32], ptr %325, i64 0, i64 %327
  store i32 %323, ptr %328, align 4, !tbaa !25
  %329 = load ptr, ptr %15, align 8, !tbaa !5
  %330 = getelementptr inbounds i32, ptr %329, i32 1
  store ptr %330, ptr %15, align 8, !tbaa !5
  br label %331

331:                                              ; preds = %321
  %332 = load i32, ptr %16, align 4, !tbaa !25
  %333 = add nsw i32 %332, 1
  store i32 %333, ptr %16, align 4, !tbaa !25
  br label %316, !llvm.loop !45

334:                                              ; preds = %320
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #11
  br label %411

335:                                              ; preds = %289
  %336 = load ptr, ptr %13, align 8, !tbaa !5
  %337 = call i32 @strcmp(ptr noundef %336, ptr noundef @.str.36) #12
  %338 = icmp ne i32 %337, 0
  br i1 %338, label %359, label %339

339:                                              ; preds = %335
  %340 = load ptr, ptr %10, align 8, !tbaa !5
  %341 = load i32, ptr %11, align 4, !tbaa !25
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %340, i64 %342
  %344 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %343, i32 0, i32 2
  %345 = load i32, ptr %344, align 8, !tbaa !31
  %346 = icmp eq i32 %345, 5
  br i1 %346, label %349, label %347

347:                                              ; preds = %339
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str.2, ptr noundef @__func__._ZN8nvinfer16plugin16NMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 715, i32 noundef 0, ptr noundef @.str.39) #13
          to label %348 unwind label %71

348:                                              ; preds = %347
  unreachable

349:                                              ; preds = %339
  %350 = load ptr, ptr %10, align 8, !tbaa !5
  %351 = load i32, ptr %11, align 4, !tbaa !25
  %352 = sext i32 %351 to i64
  %353 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %350, i64 %352
  %354 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %353, i32 0, i32 1
  %355 = load ptr, ptr %354, align 8, !tbaa !32
  %356 = load i32, ptr %355, align 4, !tbaa !25
  %357 = getelementptr inbounds %"class.nvinfer1::plugin::NMSBasePluginCreator", ptr %20, i32 0, i32 1
  %358 = getelementptr inbounds %"struct.nvinfer1::plugin::DetectionOutputParameters", ptr %357, i32 0, i32 9
  store i32 %356, ptr %358, align 4, !tbaa !12
  br label %410

359:                                              ; preds = %335
  %360 = load ptr, ptr %13, align 8, !tbaa !5
  %361 = call i32 @strcmp(ptr noundef %360, ptr noundef @.str.37) #12
  %362 = icmp ne i32 %361, 0
  br i1 %362, label %382, label %363

363:                                              ; preds = %359
  %364 = load ptr, ptr %10, align 8, !tbaa !5
  %365 = load i32, ptr %11, align 4, !tbaa !25
  %366 = sext i32 %365 to i64
  %367 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %364, i64 %366
  %368 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %367, i32 0, i32 2
  %369 = load i32, ptr %368, align 8, !tbaa !31
  %370 = icmp eq i32 %369, 5
  br i1 %370, label %373, label %371

371:                                              ; preds = %363
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str.2, ptr noundef @__func__._ZN8nvinfer16plugin16NMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 720, i32 noundef 0, ptr noundef @.str.39) #13
          to label %372 unwind label %71

372:                                              ; preds = %371
  unreachable

373:                                              ; preds = %363
  %374 = load ptr, ptr %10, align 8, !tbaa !5
  %375 = load i32, ptr %11, align 4, !tbaa !25
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %374, i64 %376
  %378 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %377, i32 0, i32 1
  %379 = load ptr, ptr %378, align 8, !tbaa !32
  %380 = load i32, ptr %379, align 4, !tbaa !25
  %381 = getelementptr inbounds %"class.nvinfer1::plugin::NMSBasePluginCreator", ptr %20, i32 0, i32 3
  store i32 %380, ptr %381, align 8, !tbaa !26
  br label %409

382:                                              ; preds = %359
  %383 = load ptr, ptr %13, align 8, !tbaa !5
  %384 = call i32 @strcmp(ptr noundef %383, ptr noundef @.str.38) #12
  %385 = icmp ne i32 %384, 0
  br i1 %385, label %408, label %386

386:                                              ; preds = %382
  %387 = load ptr, ptr %10, align 8, !tbaa !5
  %388 = load i32, ptr %11, align 4, !tbaa !25
  %389 = sext i32 %388 to i64
  %390 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %387, i64 %389
  %391 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %390, i32 0, i32 2
  %392 = load i32, ptr %391, align 8, !tbaa !31
  %393 = icmp eq i32 %392, 5
  br i1 %393, label %396, label %394

394:                                              ; preds = %386
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str.2, ptr noundef @__func__._ZN8nvinfer16plugin16NMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 725, i32 noundef 0, ptr noundef @.str.39) #13
          to label %395 unwind label %71

395:                                              ; preds = %394
  unreachable

396:                                              ; preds = %386
  %397 = load ptr, ptr %10, align 8, !tbaa !5
  %398 = load i32, ptr %11, align 4, !tbaa !25
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %397, i64 %399
  %401 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %400, i32 0, i32 1
  %402 = load ptr, ptr %401, align 8, !tbaa !32
  %403 = load i32, ptr %402, align 4, !tbaa !25
  %404 = icmp ne i32 %403, 0
  %405 = getelementptr inbounds %"class.nvinfer1::plugin::NMSBasePluginCreator", ptr %20, i32 0, i32 1
  %406 = getelementptr inbounds %"struct.nvinfer1::plugin::DetectionOutputParameters", ptr %405, i32 0, i32 13
  %407 = zext i1 %404 to i8
  store i8 %407, ptr %406, align 2, !tbaa !47
  br label %408

408:                                              ; preds = %396, %382
  br label %409

409:                                              ; preds = %408, %373
  br label %410

410:                                              ; preds = %409, %349
  br label %411

411:                                              ; preds = %410, %334
  br label %412

412:                                              ; preds = %411, %277
  br label %413

413:                                              ; preds = %412, %261
  br label %414

414:                                              ; preds = %413, %247
  br label %415

415:                                              ; preds = %414, %223
  br label %416

416:                                              ; preds = %415, %199
  br label %417

417:                                              ; preds = %416, %175
  br label %418

418:                                              ; preds = %417, %151
  br label %419

419:                                              ; preds = %418, %127
  br label %420

420:                                              ; preds = %419, %101
  br label %421

421:                                              ; preds = %420, %75
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #11
  br label %422

422:                                              ; preds = %421
  %423 = load i32, ptr %11, align 4, !tbaa !25
  %424 = add nsw i32 %423, 1
  store i32 %424, ptr %11, align 4, !tbaa !25
  br label %40, !llvm.loop !48

425:                                              ; preds = %46
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #11
  %426 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 112) #14
          to label %427 unwind label %440

427:                                              ; preds = %425
  %428 = getelementptr inbounds %"class.nvinfer1::plugin::NMSBasePluginCreator", ptr %20, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %18, ptr align 8 %428, i64 48, i1 false), !tbaa.struct !49
  invoke void @_ZN8nvinfer16plugin15DetectionOutputC1ENS0_25DetectionOutputParametersE(ptr noundef nonnull align 8 dereferenceable(112) %426, ptr noundef byval(%"struct.nvinfer1::plugin::DetectionOutputParameters") align 8 %18)
          to label %429 unwind label %444

429:                                              ; preds = %427
  store ptr %426, ptr %17, align 8, !tbaa !5
  %430 = load ptr, ptr %17, align 8, !tbaa !5
  %431 = getelementptr inbounds %"class.nvinfer1::plugin::NMSBasePluginCreator", ptr %20, i32 0, i32 3
  %432 = load i32, ptr %431, align 8, !tbaa !26
  call void @_ZN8nvinfer16plugin15DetectionOutput12setScoreBitsEi(ptr noundef nonnull align 8 dereferenceable(112) %430, i32 noundef %432) #11
  %433 = load ptr, ptr %17, align 8, !tbaa !5
  %434 = getelementptr inbounds %"class.nvinfer1::pluginInternal::BaseCreator", ptr %20, i32 0, i32 1
  %435 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %434) #11
  %436 = load ptr, ptr %433, align 8, !tbaa !53
  %437 = getelementptr inbounds ptr, ptr %436, i64 15
  %438 = load ptr, ptr %437, align 8
  call void %438(ptr noundef nonnull align 8 dereferenceable(112) %433, ptr noundef %435) #11
  %439 = load ptr, ptr %17, align 8, !tbaa !5
  store ptr %439, ptr %4, align 8
  store i32 1, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #11
  br label %461

440:                                              ; preds = %425
  %441 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %442 = extractvalue { ptr, i32 } %441, 0
  store ptr %442, ptr %8, align 8
  %443 = extractvalue { ptr, i32 } %441, 1
  store i32 %443, ptr %9, align 4
  br label %448

444:                                              ; preds = %427
  %445 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %446 = extractvalue { ptr, i32 } %445, 0
  store ptr %446, ptr %8, align 8
  %447 = extractvalue { ptr, i32 } %445, 1
  store i32 %447, ptr %9, align 4
  call void @_ZdlPvm(ptr noundef %426, i64 noundef 112) #15
  br label %448

448:                                              ; preds = %444, %440
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #11
  br label %449

449:                                              ; preds = %448, %71
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #11
  br label %450

450:                                              ; preds = %449, %47
  %451 = load i32, ptr %9, align 4
  %452 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt9exception) #11
  %453 = icmp eq i32 %451, %452
  br i1 %453, label %454, label %466

454:                                              ; preds = %450
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #11
  %455 = load ptr, ptr %8, align 8
  %456 = call ptr @__cxa_begin_catch(ptr %455) #11
  store ptr %456, ptr %19, align 8
  %457 = load ptr, ptr %19, align 8, !tbaa !5
  invoke void @_ZN8nvinfer16plugin11caughtErrorERKSt9exception(ptr noundef nonnull align 8 dereferenceable(8) %457)
          to label %458 unwind label %463

458:                                              ; preds = %454
  invoke void @__cxa_end_catch()
          to label %459 unwind label %463

459:                                              ; preds = %458
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #11
  br label %460

460:                                              ; preds = %459
  store ptr null, ptr %4, align 8
  br label %461

461:                                              ; preds = %460, %429
  %462 = load ptr, ptr %4, align 8
  ret ptr %462

463:                                              ; preds = %458, %454
  %464 = landingpad { ptr, i32 }
          catch ptr null
  %465 = extractvalue { ptr, i32 } %464, 0
  call void @__clang_call_terminate(ptr %465) #16
  unreachable

466:                                              ; preds = %450
  %467 = load ptr, ptr %8, align 8
  call void @__clang_call_terminate(ptr %467) #16
  unreachable
}

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

declare void @_ZN8nvinfer16plugin15DetectionOutputC1ENS0_25DetectionOutputParametersE(ptr, ptr)

attributes #0 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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 #5 = { 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 #6 = { 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 #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 = { nounwind memory(none) }
attributes #10 = { 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 #11 = { nounwind }
attributes #12 = { nounwind willreturn memory(read) }
attributes #13 = { noreturn }
attributes #14 = { builtin allocsize(0) }
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, !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, !24, i64 68}
!13 = !{!"_ZTSN8nvinfer16plugin20NMSBasePluginCreatorE", !14, i64 0, !21, i64 40, !18, i64 88, !11, i64 120}
!14 = !{!"_ZTSN8nvinfer114pluginInternal11BaseCreatorE", !15, i64 0, !18, i64 8}
!15 = !{!"_ZTSN8nvinfer15v_1_014IPluginCreatorE", !16, i64 0}
!16 = !{!"_ZTSN8nvinfer15v_1_023IPluginCreatorInterfaceE", !17, i64 0}
!17 = !{!"_ZTSN8nvinfer119IVersionedInterfaceE"}
!18 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !19, i64 0, !20, i64 8, !7, i64 16}
!19 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!20 = !{!"long", !7, i64 0}
!21 = !{!"_ZTSN8nvinfer16plugin25DetectionOutputParametersE", !22, i64 0, !22, i64 1, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !23, i64 20, !23, i64 24, !24, i64 28, !7, i64 32, !22, i64 44, !22, i64 45, !22, i64 46}
!22 = !{!"bool", !7, i64 0}
!23 = !{!"float", !7, i64 0}
!24 = !{!"_ZTSN8nvinfer16plugin11CodeTypeSSDE", !7, i64 0}
!25 = !{!11, !11, i64 0}
!26 = !{!13, !11, i64 120}
!27 = !{!10, !11, i64 0}
!28 = !{!29, !6, i64 0}
!29 = !{!"_ZTSN8nvinfer111PluginFieldE", !6, i64 0, !6, i64 8, !30, i64 16, !11, i64 20}
!30 = !{!"_ZTSN8nvinfer115PluginFieldTypeE", !7, i64 0}
!31 = !{!29, !30, i64 16}
!32 = !{!29, !6, i64 8}
!33 = !{!13, !22, i64 40}
!34 = !{!13, !22, i64 41}
!35 = !{!13, !11, i64 44}
!36 = !{!13, !11, i64 48}
!37 = !{!13, !11, i64 52}
!38 = !{!13, !11, i64 56}
!39 = !{!23, !23, i64 0}
!40 = !{!13, !23, i64 60}
!41 = !{!13, !23, i64 64}
!42 = !{!13, !22, i64 84}
!43 = !{!13, !22, i64 85}
!44 = !{!29, !11, i64 20}
!45 = distinct !{!45, !46}
!46 = !{!"llvm.loop.mustprogress"}
!47 = !{!13, !22, i64 86}
!48 = distinct !{!48, !46}
!49 = !{i64 0, i64 1, !50, i64 1, i64 1, !50, i64 4, i64 4, !25, i64 8, i64 4, !25, i64 12, i64 4, !25, i64 16, i64 4, !25, i64 20, i64 4, !39, i64 24, i64 4, !39, i64 28, i64 4, !51, i64 32, i64 12, !52, i64 44, i64 1, !50, i64 45, i64 1, !50, i64 46, i64 1, !50}
!50 = !{!22, !22, i64 0}
!51 = !{!24, !24, i64 0}
!52 = !{!7, !7, i64 0}
!53 = !{!54, !54, i64 0}
!54 = !{!"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.nvinfer1::plugin::LogStream" = type { %"class.std::basic_ostream.base", %"class.nvinfer1::plugin::LogStream<nvinfer1::ILogger::Severity::kWARNING>::Buf", %"class.std::mutex", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.nvinfer1::plugin::LogStream<nvinfer1::ILogger::Severity::kWARNING>::Buf" = type { %"class.std::__cxx11::basic_stringbuf" }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { 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::mutex" = type { %"class.std::__mutex_base" }
%"class.std::__mutex_base" = type { %union.pthread_mutex_t }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.nvinfer1::PluginField" = type { ptr, ptr, i32, i32 }
%"struct.nvinfer1::plugin::DetectionOutputParameters" = type <{ i8, i8, [2 x i8], i32, i32, i32, i32, float, float, i32, [3 x i32], i8, i8, i8, i8 }>

@_ZN8nvinfer16plugin11gLogWarningE = external global %"class.nvinfer1::plugin::LogStream", align 8
@.str = external hidden unnamed_addr constant [123 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [80 x i8], align 1
@_ZTISt9exception = external constant ptr
@.str.25 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [16 x i8], align 1
@__func__._ZN8nvinfer16plugin16NMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE = external hidden unnamed_addr constant [13 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [44 x i8], align 1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(152) ptr @_ZN8nvinfer16pluginlsILNS_7ILogger8SeverityE2EEERNS0_9LogStreamIXT_EEES6_PFRSoS7_E(ptr noundef nonnull align 8 dereferenceable(152), ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(152) ptr @_ZN8nvinfer16pluginlsILNS_7ILogger8SeverityE2EA123_cEERNS0_9LogStreamIXT_EEES7_RKT0_(ptr noundef nonnull align 8 dereferenceable(152), ptr noundef nonnull align 1 dereferenceable(123)) local_unnamed_addr #1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #0

; 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: mustprogress nounwind uwtable
declare dso_local void @_ZN8nvinfer16plugin15DetectionOutput12setScoreBitsEi(ptr noundef nonnull align 8 dereferenceable(112), i32 noundef) local_unnamed_addr #4 align 2

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

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

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

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

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

declare void @__cxa_end_catch() local_unnamed_addr

; Function Attrs: mustprogress nounwind uwtable
define dso_local noundef ptr @_ZN8nvinfer16plugin16NMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE(ptr noundef nonnull align 8 dereferenceable(124) %0, ptr nocapture noundef readnone %1, ptr nocapture noundef readonly %2) unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %4 = ptrtoint ptr %0 to i64
  %5 = invoke noundef nonnull align 8 dereferenceable(152) ptr @_ZN8nvinfer16pluginlsILNS_7ILogger8SeverityE2EA123_cEERNS0_9LogStreamIXT_EEES7_RKT0_(ptr noundef nonnull align 8 dereferenceable(152) @_ZN8nvinfer16plugin11gLogWarningE, ptr noundef nonnull align 1 dereferenceable(123) @.str)
          to label %6 unwind label %29

6:                                                ; preds = %3
  %7 = invoke noundef nonnull align 8 dereferenceable(152) ptr @_ZN8nvinfer16pluginlsILNS_7ILogger8SeverityE2EEERNS0_9LogStreamIXT_EEES6_PFRSoS7_E(ptr noundef nonnull align 8 dereferenceable(152) %5, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %8 unwind label %29

8:                                                ; preds = %6
  %9 = getelementptr inbounds i8, ptr %2, i64 8
  %10 = load ptr, ptr %9, align 8, !tbaa !5
  %11 = getelementptr inbounds i8, ptr %0, i64 40
  %12 = getelementptr inbounds i8, ptr %0, i64 68
  %13 = getelementptr inbounds i8, ptr %0, i64 72
  store <4 x i32> <i32 3, i32 0, i32 2, i32 1>, ptr %12, align 4, !tbaa !11
  %14 = getelementptr inbounds i8, ptr %0, i64 120
  store i32 16, ptr %14, align 8, !tbaa !12
  %15 = load i32, ptr %2, align 8, !tbaa !25
  %16 = icmp sgt i32 %15, 0
  br i1 %16, label %.lr.ph115, label %._crit_edge

.lr.ph115:                                        ; preds = %8
  %17 = getelementptr inbounds i8, ptr %0, i64 86
  %18 = getelementptr inbounds i8, ptr %0, i64 85
  %19 = getelementptr inbounds i8, ptr %0, i64 84
  %20 = getelementptr inbounds i8, ptr %0, i64 64
  %21 = getelementptr inbounds i8, ptr %0, i64 60
  %22 = getelementptr inbounds i8, ptr %0, i64 56
  %23 = getelementptr inbounds i8, ptr %0, i64 52
  %24 = getelementptr inbounds i8, ptr %0, i64 48
  %25 = getelementptr inbounds i8, ptr %0, i64 44
  %26 = getelementptr inbounds i8, ptr %0, i64 41
  %27 = add i64 %4, 72
  br label %31

._crit_edge:                                      ; preds = %.loopexit, %8
  %28 = invoke noalias noundef nonnull dereferenceable(112) ptr @_Znwm(i64 noundef 112) #9
          to label %209 unwind label %217

29:                                               ; preds = %6, %3
  %30 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %221

31:                                               ; preds = %.lr.ph115, %.loopexit
  %32 = phi i32 [ %15, %.lr.ph115 ], [ %206, %.loopexit ]
  %indvars.iv117 = phi i64 [ 0, %.lr.ph115 ], [ %indvars.iv.next118, %.loopexit ]
  %33 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %10, i64 %indvars.iv117
  %34 = load ptr, ptr %33, align 8, !tbaa !26
  %35 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %34, ptr noundef nonnull dereferenceable(1) @.str.25) #10
  %.not = icmp eq i32 %35, 0
  br i1 %.not, label %36, label %48

36:                                               ; preds = %31
  %37 = getelementptr inbounds i8, ptr %33, i64 16
  %38 = load i32, ptr %37, align 8, !tbaa !29
  %39 = icmp eq i32 %38, 5
  br i1 %39, label %42, label %.invoke

40:                                               ; preds = %.invoke
  %41 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %221

42:                                               ; preds = %36
  %43 = getelementptr inbounds i8, ptr %33, i64 8
  %44 = load ptr, ptr %43, align 8, !tbaa !30
  %45 = load i32, ptr %44, align 4, !tbaa !31
  %46 = icmp ne i32 %45, 0
  %47 = zext i1 %46 to i8
  store i8 %47, ptr %11, align 8, !tbaa !32
  br label %.loopexit

48:                                               ; preds = %31
  %49 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %34, ptr noundef nonnull dereferenceable(1) @.str.26) #10
  %.not96 = icmp eq i32 %49, 0
  br i1 %.not96, label %50, label %60

50:                                               ; preds = %48
  %51 = getelementptr inbounds i8, ptr %33, i64 16
  %52 = load i32, ptr %51, align 8, !tbaa !29
  %53 = icmp eq i32 %52, 5
  br i1 %53, label %54, label %.invoke

54:                                               ; preds = %50
  %55 = getelementptr inbounds i8, ptr %33, i64 8
  %56 = load ptr, ptr %55, align 8, !tbaa !30
  %57 = load i32, ptr %56, align 4, !tbaa !31
  %58 = icmp ne i32 %57, 0
  %59 = zext i1 %58 to i8
  store i8 %59, ptr %26, align 1, !tbaa !33
  br label %.loopexit

60:                                               ; preds = %48
  %61 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %34, ptr noundef nonnull dereferenceable(1) @.str.27) #10
  %.not97 = icmp eq i32 %61, 0
  br i1 %.not97, label %62, label %70

62:                                               ; preds = %60
  %63 = getelementptr inbounds i8, ptr %33, i64 16
  %64 = load i32, ptr %63, align 8, !tbaa !29
  %65 = icmp eq i32 %64, 5
  br i1 %65, label %66, label %.invoke

66:                                               ; preds = %62
  %67 = getelementptr inbounds i8, ptr %33, i64 8
  %68 = load ptr, ptr %67, align 8, !tbaa !30
  %69 = load i32, ptr %68, align 4, !tbaa !31
  store i32 %69, ptr %25, align 4, !tbaa !34
  br label %.loopexit

70:                                               ; preds = %60
  %71 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %34, ptr noundef nonnull dereferenceable(1) @.str.28) #10
  %.not98 = icmp eq i32 %71, 0
  br i1 %.not98, label %72, label %80

72:                                               ; preds = %70
  %73 = getelementptr inbounds i8, ptr %33, i64 16
  %74 = load i32, ptr %73, align 8, !tbaa !29
  %75 = icmp eq i32 %74, 5
  br i1 %75, label %76, label %.invoke

76:                                               ; preds = %72
  %77 = getelementptr inbounds i8, ptr %33, i64 8
  %78 = load ptr, ptr %77, align 8, !tbaa !30
  %79 = load i32, ptr %78, align 4, !tbaa !31
  store i32 %79, ptr %24, align 8, !tbaa !35
  br label %.loopexit

80:                                               ; preds = %70
  %81 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %34, ptr noundef nonnull dereferenceable(1) @.str.29) #10
  %.not99 = icmp eq i32 %81, 0
  br i1 %.not99, label %82, label %90

82:                                               ; preds = %80
  %83 = getelementptr inbounds i8, ptr %33, i64 16
  %84 = load i32, ptr %83, align 8, !tbaa !29
  %85 = icmp eq i32 %84, 5
  br i1 %85, label %86, label %.invoke

86:                                               ; preds = %82
  %87 = getelementptr inbounds i8, ptr %33, i64 8
  %88 = load ptr, ptr %87, align 8, !tbaa !30
  %89 = load i32, ptr %88, align 4, !tbaa !31
  store i32 %89, ptr %23, align 4, !tbaa !36
  br label %.loopexit

90:                                               ; preds = %80
  %91 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %34, ptr noundef nonnull dereferenceable(1) @.str.30) #10
  %.not100 = icmp eq i32 %91, 0
  br i1 %.not100, label %92, label %100

92:                                               ; preds = %90
  %93 = getelementptr inbounds i8, ptr %33, i64 16
  %94 = load i32, ptr %93, align 8, !tbaa !29
  %95 = icmp eq i32 %94, 5
  br i1 %95, label %96, label %.invoke

96:                                               ; preds = %92
  %97 = getelementptr inbounds i8, ptr %33, i64 8
  %98 = load ptr, ptr %97, align 8, !tbaa !30
  %99 = load i32, ptr %98, align 4, !tbaa !31
  store i32 %99, ptr %22, align 8, !tbaa !37
  br label %.loopexit

100:                                              ; preds = %90
  %101 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %34, ptr noundef nonnull dereferenceable(1) @.str.31) #10
  %.not101 = icmp eq i32 %101, 0
  br i1 %.not101, label %102, label %110

102:                                              ; preds = %100
  %103 = getelementptr inbounds i8, ptr %33, i64 16
  %104 = load i32, ptr %103, align 8, !tbaa !29
  %105 = icmp eq i32 %104, 1
  br i1 %105, label %106, label %.invoke

106:                                              ; preds = %102
  %107 = getelementptr inbounds i8, ptr %33, i64 8
  %108 = load ptr, ptr %107, align 8, !tbaa !30
  %109 = load float, ptr %108, align 4, !tbaa !38
  store float %109, ptr %21, align 4, !tbaa !39
  br label %.loopexit

110:                                              ; preds = %100
  %111 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %34, ptr noundef nonnull dereferenceable(1) @.str.32) #10
  %.not102 = icmp eq i32 %111, 0
  br i1 %.not102, label %112, label %120

112:                                              ; preds = %110
  %113 = getelementptr inbounds i8, ptr %33, i64 16
  %114 = load i32, ptr %113, align 8, !tbaa !29
  %115 = icmp eq i32 %114, 1
  br i1 %115, label %116, label %.invoke

116:                                              ; preds = %112
  %117 = getelementptr inbounds i8, ptr %33, i64 8
  %118 = load ptr, ptr %117, align 8, !tbaa !30
  %119 = load float, ptr %118, align 4, !tbaa !38
  store float %119, ptr %20, align 8, !tbaa !40
  br label %.loopexit

120:                                              ; preds = %110
  %121 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %34, ptr noundef nonnull dereferenceable(1) @.str.34) #10
  %.not103 = icmp eq i32 %121, 0
  br i1 %.not103, label %122, label %128

122:                                              ; preds = %120
  %123 = getelementptr inbounds i8, ptr %33, i64 8
  %124 = load ptr, ptr %123, align 8, !tbaa !30
  %125 = load i32, ptr %124, align 4, !tbaa !31
  %126 = icmp ne i32 %125, 0
  %127 = zext i1 %126 to i8
  store i8 %127, ptr %19, align 4, !tbaa !41
  br label %.loopexit

128:                                              ; preds = %120
  %129 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %34, ptr noundef nonnull dereferenceable(1) @.str.35) #10
  %.not104 = icmp eq i32 %129, 0
  br i1 %.not104, label %130, label %136

130:                                              ; preds = %128
  %131 = getelementptr inbounds i8, ptr %33, i64 8
  %132 = load ptr, ptr %131, align 8, !tbaa !30
  %133 = load i32, ptr %132, align 4, !tbaa !31
  %134 = icmp ne i32 %133, 0
  %135 = zext i1 %134 to i8
  store i8 %135, ptr %18, align 1, !tbaa !42
  br label %.loopexit

136:                                              ; preds = %128
  %137 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %34, ptr noundef nonnull dereferenceable(1) @.str.33) #10
  %.not105 = icmp eq i32 %137, 0
  br i1 %.not105, label %138, label %172

138:                                              ; preds = %136
  %139 = getelementptr inbounds i8, ptr %33, i64 16
  %140 = load i32, ptr %139, align 8, !tbaa !29
  %141 = icmp eq i32 %140, 5
  br i1 %141, label %142, label %.invoke

142:                                              ; preds = %138
  %143 = getelementptr inbounds i8, ptr %33, i64 20
  %144 = load i32, ptr %143, align 4, !tbaa !43
  %145 = icmp sgt i32 %144, 0
  br i1 %145, label %.lr.ph.preheader, label %.loopexit

.lr.ph.preheader:                                 ; preds = %142
  %146 = getelementptr inbounds i8, ptr %33, i64 8
  %147 = load ptr, ptr %146, align 8, !tbaa !30
  %wide.trip.count = zext nneg i32 %144 to i64
  %min.iters.check = icmp ult i32 %144, 8
  %148 = ptrtoint ptr %147 to i64
  %149 = sub i64 %27, %148
  %diff.check = icmp ult i64 %149, 32
  %or.cond = select i1 %min.iters.check, i1 true, i1 %diff.check
  br i1 %or.cond, label %.lr.ph.preheader124, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %wide.trip.count, 2147483640
  %150 = shl nuw nsw i64 %n.vec, 2
  %ind.end = getelementptr i8, ptr %147, i64 %150
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = shl i64 %index, 2
  %next.gep = getelementptr i8, ptr %147, i64 %offset.idx
  %151 = getelementptr i8, ptr %next.gep, i64 16
  %wide.load = load <4 x i32>, ptr %next.gep, align 4, !tbaa !31
  %wide.load122 = load <4 x i32>, ptr %151, align 4, !tbaa !31
  %152 = getelementptr inbounds [3 x i32], ptr %13, i64 0, i64 %index
  %153 = getelementptr inbounds i8, ptr %152, i64 16
  store <4 x i32> %wide.load, ptr %152, align 8, !tbaa !31
  store <4 x i32> %wide.load122, ptr %153, align 8, !tbaa !31
  %index.next = add nuw i64 %index, 8
  %154 = icmp eq i64 %index.next, %n.vec
  br i1 %154, label %middle.block, label %vector.body, !llvm.loop !44

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count
  br i1 %cmp.n, label %.loopexit.loopexit, label %.lr.ph.preheader124

.lr.ph.preheader124:                              ; preds = %middle.block, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ 0, %.lr.ph.preheader ], [ %n.vec, %middle.block ]
  %.090112.ph = phi ptr [ %147, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  %xtraiter = and i64 %wide.trip.count, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader124, %.lr.ph.prol
  %indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %.lr.ph.prol ], [ %indvars.iv.ph, %.lr.ph.preheader124 ]
  %.090112.prol = phi ptr [ %157, %.lr.ph.prol ], [ %.090112.ph, %.lr.ph.preheader124 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph.prol ], [ 0, %.lr.ph.preheader124 ]
  %155 = load i32, ptr %.090112.prol, align 4, !tbaa !31
  %156 = getelementptr inbounds [3 x i32], ptr %13, i64 0, i64 %indvars.iv.prol
  store i32 %155, ptr %156, align 4, !tbaa !31
  %157 = getelementptr inbounds i8, ptr %.090112.prol, i64 4
  %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol, !llvm.loop !48

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader124
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %.lr.ph.preheader124 ], [ %indvars.iv.next.prol, %.lr.ph.prol ]
  %.090112.unr = phi ptr [ %.090112.ph, %.lr.ph.preheader124 ], [ %157, %.lr.ph.prol ]
  %158 = sub nsw i64 %indvars.iv.ph, %wide.trip.count
  %159 = icmp ugt i64 %158, -4
  br i1 %159, label %.loopexit.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.prol.loopexit, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next.3, %.lr.ph ], [ %indvars.iv.unr, %.lr.ph.prol.loopexit ]
  %.090112 = phi ptr [ %171, %.lr.ph ], [ %.090112.unr, %.lr.ph.prol.loopexit ]
  %160 = load i32, ptr %.090112, align 4, !tbaa !31
  %161 = getelementptr inbounds [3 x i32], ptr %13, i64 0, i64 %indvars.iv
  store i32 %160, ptr %161, align 4, !tbaa !31
  %162 = getelementptr inbounds i8, ptr %.090112, i64 4
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %163 = load i32, ptr %162, align 4, !tbaa !31
  %164 = getelementptr inbounds [3 x i32], ptr %13, i64 0, i64 %indvars.iv.next
  store i32 %163, ptr %164, align 4, !tbaa !31
  %165 = getelementptr inbounds i8, ptr %.090112, i64 8
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %166 = load i32, ptr %165, align 4, !tbaa !31
  %167 = getelementptr inbounds [3 x i32], ptr %13, i64 0, i64 %indvars.iv.next.1
  store i32 %166, ptr %167, align 4, !tbaa !31
  %168 = getelementptr inbounds i8, ptr %.090112, i64 12
  %indvars.iv.next.2 = add nuw nsw i64 %indvars.iv, 3
  %169 = load i32, ptr %168, align 4, !tbaa !31
  %170 = getelementptr inbounds [3 x i32], ptr %13, i64 0, i64 %indvars.iv.next.2
  store i32 %169, ptr %170, align 4, !tbaa !31
  %171 = getelementptr inbounds i8, ptr %.090112, i64 16
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %exitcond.not.3 = icmp eq i64 %indvars.iv.next.3, %wide.trip.count
  br i1 %exitcond.not.3, label %.loopexit.loopexit, label %.lr.ph, !llvm.loop !50

172:                                              ; preds = %136
  %173 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %34, ptr noundef nonnull dereferenceable(1) @.str.36) #10
  %.not106 = icmp eq i32 %173, 0
  br i1 %.not106, label %174, label %182

174:                                              ; preds = %172
  %175 = getelementptr inbounds i8, ptr %33, i64 16
  %176 = load i32, ptr %175, align 8, !tbaa !29
  %177 = icmp eq i32 %176, 5
  br i1 %177, label %178, label %.invoke

178:                                              ; preds = %174
  %179 = getelementptr inbounds i8, ptr %33, i64 8
  %180 = load ptr, ptr %179, align 8, !tbaa !30
  %181 = load i32, ptr %180, align 4, !tbaa !31
  store i32 %181, ptr %12, align 4, !tbaa !51
  br label %.loopexit

182:                                              ; preds = %172
  %183 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %34, ptr noundef nonnull dereferenceable(1) @.str.37) #10
  %.not107 = icmp eq i32 %183, 0
  br i1 %.not107, label %184, label %192

184:                                              ; preds = %182
  %185 = getelementptr inbounds i8, ptr %33, i64 16
  %186 = load i32, ptr %185, align 8, !tbaa !29
  %187 = icmp eq i32 %186, 5
  br i1 %187, label %188, label %.invoke

188:                                              ; preds = %184
  %189 = getelementptr inbounds i8, ptr %33, i64 8
  %190 = load ptr, ptr %189, align 8, !tbaa !30
  %191 = load i32, ptr %190, align 4, !tbaa !31
  store i32 %191, ptr %14, align 8, !tbaa !12
  br label %.loopexit

192:                                              ; preds = %182
  %193 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %34, ptr noundef nonnull dereferenceable(1) @.str.38) #10
  %.not108 = icmp eq i32 %193, 0
  br i1 %.not108, label %194, label %.loopexit

194:                                              ; preds = %192
  %195 = getelementptr inbounds i8, ptr %33, i64 16
  %196 = load i32, ptr %195, align 8, !tbaa !29
  %197 = icmp eq i32 %196, 5
  br i1 %197, label %200, label %.invoke

.invoke:                                          ; preds = %36, %194, %184, %174, %138, %112, %102, %92, %82, %72, %62, %50
  %198 = phi i32 [ 661, %50 ], [ 666, %62 ], [ 671, %72 ], [ 676, %82 ], [ 681, %92 ], [ 686, %102 ], [ 691, %112 ], [ 704, %138 ], [ 715, %174 ], [ 720, %184 ], [ 725, %194 ], [ 656, %36 ]
  %199 = phi ptr [ @.str.39, %50 ], [ @.str.39, %62 ], [ @.str.39, %72 ], [ @.str.39, %82 ], [ @.str.39, %92 ], [ @.str.40, %102 ], [ @.str.40, %112 ], [ @.str.39, %138 ], [ @.str.39, %174 ], [ @.str.39, %184 ], [ @.str.39, %194 ], [ @.str.39, %36 ]
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__._ZN8nvinfer16plugin16NMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef %198, i32 noundef 0, ptr noundef nonnull %199) #11
          to label %.cont unwind label %40

.cont:                                            ; preds = %.invoke
  unreachable

200:                                              ; preds = %194
  %201 = getelementptr inbounds i8, ptr %33, i64 8
  %202 = load ptr, ptr %201, align 8, !tbaa !30
  %203 = load i32, ptr %202, align 4, !tbaa !31
  %204 = icmp ne i32 %203, 0
  %205 = zext i1 %204 to i8
  store i8 %205, ptr %17, align 2, !tbaa !52
  br label %.loopexit

.loopexit.loopexit:                               ; preds = %.lr.ph.prol.loopexit, %.lr.ph, %middle.block
  %.pre = load i32, ptr %2, align 8, !tbaa !25
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %142, %54, %76, %96, %116, %130, %178, %192, %200, %188, %122, %106, %86, %66, %42
  %206 = phi i32 [ %.pre, %.loopexit.loopexit ], [ %32, %142 ], [ %32, %54 ], [ %32, %76 ], [ %32, %96 ], [ %32, %116 ], [ %32, %130 ], [ %32, %178 ], [ %32, %192 ], [ %32, %200 ], [ %32, %188 ], [ %32, %122 ], [ %32, %106 ], [ %32, %86 ], [ %32, %66 ], [ %32, %42 ]
  %indvars.iv.next118 = add nuw nsw i64 %indvars.iv117, 1
  %207 = sext i32 %206 to i64
  %208 = icmp slt i64 %indvars.iv.next118, %207
  br i1 %208, label %31, label %._crit_edge, !llvm.loop !53

209:                                              ; preds = %._crit_edge
  invoke void @_ZN8nvinfer16plugin15DetectionOutputC1ENS0_25DetectionOutputParametersE(ptr noundef nonnull align 8 dereferenceable(112) %28, ptr noundef nonnull byval(%"struct.nvinfer1::plugin::DetectionOutputParameters") align 8 %11)
          to label %210 unwind label %219

210:                                              ; preds = %209
  %211 = load i32, ptr %14, align 8, !tbaa !12
  tail call void @_ZN8nvinfer16plugin15DetectionOutput12setScoreBitsEi(ptr noundef nonnull align 8 dereferenceable(112) %28, i32 noundef %211) #12
  %212 = getelementptr inbounds i8, ptr %0, i64 8
  %213 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %212) #12
  %214 = load ptr, ptr %28, align 8, !tbaa !54
  %215 = getelementptr inbounds i8, ptr %214, i64 120
  %216 = load ptr, ptr %215, align 8
  tail call void %216(ptr noundef nonnull align 8 dereferenceable(112) %28, ptr noundef %213) #12
  br label %227

217:                                              ; preds = %._crit_edge
  %218 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %221

219:                                              ; preds = %209
  %220 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  tail call void @_ZdlPvm(ptr noundef nonnull %28, i64 noundef 112) #13
  br label %221

221:                                              ; preds = %40, %219, %217, %29
  %.pn109.pn = phi { ptr, i32 } [ %30, %29 ], [ %41, %40 ], [ %220, %219 ], [ %218, %217 ]
  %.2 = extractvalue { ptr, i32 } %.pn109.pn, 0
  %.293 = extractvalue { ptr, i32 } %.pn109.pn, 1
  %222 = tail call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9exception) #12
  %223 = icmp eq i32 %.293, %222
  br i1 %223, label %224, label %231

224:                                              ; preds = %221
  %225 = tail call ptr @__cxa_begin_catch(ptr %.2) #12
  invoke void @_ZN8nvinfer16plugin11caughtErrorERKSt9exception(ptr noundef nonnull align 8 dereferenceable(8) %225)
          to label %226 unwind label %228

226:                                              ; preds = %224
  invoke void @__cxa_end_catch()
          to label %227 unwind label %228

227:                                              ; preds = %226, %210
  %.0 = phi ptr [ %28, %210 ], [ null, %226 ]
  ret ptr %.0

228:                                              ; preds = %226, %224
  %229 = landingpad { ptr, i32 }
          catch ptr null
  %230 = extractvalue { ptr, i32 } %229, 0
  tail call void @__clang_call_terminate(ptr %230) #14
  unreachable

231:                                              ; preds = %221
  tail call void @__clang_call_terminate(ptr %.2) #14
  unreachable
}

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

declare void @_ZN8nvinfer16plugin15DetectionOutputC1ENS0_25DetectionOutputParametersE(ptr, ptr) local_unnamed_addr

attributes #0 = { 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 #1 = { 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 #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 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nofree nosync nounwind memory(none) }
attributes #8 = { 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 #9 = { builtin allocsize(0) }
attributes #10 = { nounwind willreturn memory(read) }
attributes #11 = { noreturn }
attributes #12 = { nounwind }
attributes #13 = { builtin nounwind }
attributes #14 = { 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 = !{!8, !8, i64 0}
!12 = !{!13, !7, i64 120}
!13 = !{!"_ZTSN8nvinfer16plugin20NMSBasePluginCreatorE", !14, i64 0, !21, i64 40, !18, i64 88, !7, i64 120}
!14 = !{!"_ZTSN8nvinfer114pluginInternal11BaseCreatorE", !15, i64 0, !18, i64 8}
!15 = !{!"_ZTSN8nvinfer15v_1_014IPluginCreatorE", !16, i64 0}
!16 = !{!"_ZTSN8nvinfer15v_1_023IPluginCreatorInterfaceE", !17, i64 0}
!17 = !{!"_ZTSN8nvinfer119IVersionedInterfaceE"}
!18 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !19, i64 0, !20, i64 8, !8, i64 16}
!19 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !10, i64 0}
!20 = !{!"long", !8, i64 0}
!21 = !{!"_ZTSN8nvinfer16plugin25DetectionOutputParametersE", !22, i64 0, !22, i64 1, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !23, i64 20, !23, i64 24, !24, i64 28, !8, i64 32, !22, i64 44, !22, i64 45, !22, i64 46}
!22 = !{!"bool", !8, i64 0}
!23 = !{!"float", !8, i64 0}
!24 = !{!"_ZTSN8nvinfer16plugin11CodeTypeSSDE", !8, i64 0}
!25 = !{!6, !7, i64 0}
!26 = !{!27, !10, i64 0}
!27 = !{!"_ZTSN8nvinfer111PluginFieldE", !10, i64 0, !10, i64 8, !28, i64 16, !7, i64 20}
!28 = !{!"_ZTSN8nvinfer115PluginFieldTypeE", !8, i64 0}
!29 = !{!27, !28, i64 16}
!30 = !{!27, !10, i64 8}
!31 = !{!7, !7, i64 0}
!32 = !{!13, !22, i64 40}
!33 = !{!13, !22, i64 41}
!34 = !{!13, !7, i64 44}
!35 = !{!13, !7, i64 48}
!36 = !{!13, !7, i64 52}
!37 = !{!13, !7, i64 56}
!38 = !{!23, !23, i64 0}
!39 = !{!13, !23, i64 60}
!40 = !{!13, !23, i64 64}
!41 = !{!13, !22, i64 84}
!42 = !{!13, !22, i64 85}
!43 = !{!27, !7, i64 20}
!44 = distinct !{!44, !45, !46, !47}
!45 = !{!"llvm.loop.mustprogress"}
!46 = !{!"llvm.loop.isvectorized", i32 1}
!47 = !{!"llvm.loop.unroll.runtime.disable"}
!48 = distinct !{!48, !49}
!49 = !{!"llvm.loop.unroll.disable"}
!50 = distinct !{!50, !45, !46}
!51 = !{!13, !24, i64 68}
!52 = !{!13, !22, i64 86}
!53 = distinct !{!53, !45}
!54 = !{!55, !55, i64 0}
!55 = !{!"vtable pointer", !9, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,MemCpyOptPass,PostOrderFunctionAttrsPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass