; 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.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
@__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
@.str.41 = external hidden unnamed_addr constant [130 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

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

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

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

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

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

; 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: nounwind willreturn memory(read)
declare i32 @strcmp(ptr noundef, ptr noundef) #9

; Function Attrs: mustprogress nounwind uwtable
define dso_local noundef ptr @_ZN8nvinfer16plugin23NMSDynamicPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE(ptr noundef nonnull align 8 dereferenceable(124) %0, ptr noundef %1, ptr noundef %2) unnamed_addr #5 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_7ILogger8SeverityE2EA130_cEERNS0_9LogStreamIXT_EEES7_RKT0_(ptr noundef nonnull align 8 dereferenceable(152) @_ZN8nvinfer16plugin11gLogWarningE, ptr noundef nonnull align 1 dereferenceable(130) @.str.41)
          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 = %395, %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 %398

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 %423

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 764, i32 noundef 0, ptr noundef @.str.39) #13
          to label %70 unwind label %71

70:                                               ; preds = %69
  unreachable

71:                                               ; preds = %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 %422

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 %394

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 769, 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 %393

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 774, 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 %392

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 779, 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 %391

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 784, 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 %390

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 789, 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 %389

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 794, 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 %388

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 799, 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 %387

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 %386

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 %385

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 812, 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 %384

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 823, 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 %383

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 828, 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 %382

382:                                              ; preds = %373, %359
  br label %383

383:                                              ; preds = %382, %349
  br label %384

384:                                              ; preds = %383, %334
  br label %385

385:                                              ; preds = %384, %277
  br label %386

386:                                              ; preds = %385, %261
  br label %387

387:                                              ; preds = %386, %247
  br label %388

388:                                              ; preds = %387, %223
  br label %389

389:                                              ; preds = %388, %199
  br label %390

390:                                              ; preds = %389, %175
  br label %391

391:                                              ; preds = %390, %151
  br label %392

392:                                              ; preds = %391, %127
  br label %393

393:                                              ; preds = %392, %101
  br label %394

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

395:                                              ; preds = %394
  %396 = load i32, ptr %11, align 4, !tbaa !25
  %397 = add nsw i32 %396, 1
  store i32 %397, ptr %11, align 4, !tbaa !25
  br label %40, !llvm.loop !47

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

400:                                              ; preds = %398
  %401 = 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 %401, i64 48, i1 false), !tbaa.struct !48
  invoke void @_ZN8nvinfer16plugin22DetectionOutputDynamicC1ENS0_25DetectionOutputParametersE(ptr noundef nonnull align 8 dereferenceable(112) %399, ptr noundef byval(%"struct.nvinfer1::plugin::DetectionOutputParameters") align 8 %18)
          to label %402 unwind label %417

402:                                              ; preds = %400
  store ptr %399, ptr %17, align 8, !tbaa !5
  %403 = load ptr, ptr %17, align 8, !tbaa !5
  %404 = getelementptr inbounds %"class.nvinfer1::plugin::NMSBasePluginCreator", ptr %20, i32 0, i32 3
  %405 = load i32, ptr %404, align 8, !tbaa !26
  call void @_ZN8nvinfer16plugin22DetectionOutputDynamic12setScoreBitsEi(ptr noundef nonnull align 8 dereferenceable(112) %403, i32 noundef %405) #11
  %406 = load ptr, ptr %17, align 8, !tbaa !5
  %407 = getelementptr inbounds %"class.nvinfer1::pluginInternal::BaseCreator", ptr %20, i32 0, i32 1
  %408 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %407) #11
  %409 = load ptr, ptr %406, align 8, !tbaa !52
  %410 = getelementptr inbounds ptr, ptr %409, i64 15
  %411 = load ptr, ptr %410, align 8
  call void %411(ptr noundef nonnull align 8 dereferenceable(112) %406, ptr noundef %408) #11
  %412 = load ptr, ptr %17, align 8, !tbaa !5
  store ptr %412, 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 %434

413:                                              ; preds = %398
  %414 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %415 = extractvalue { ptr, i32 } %414, 0
  store ptr %415, ptr %8, align 8
  %416 = extractvalue { ptr, i32 } %414, 1
  store i32 %416, ptr %9, align 4
  br label %421

417:                                              ; preds = %400
  %418 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %419 = extractvalue { ptr, i32 } %418, 0
  store ptr %419, ptr %8, align 8
  %420 = extractvalue { ptr, i32 } %418, 1
  store i32 %420, ptr %9, align 4
  call void @_ZdlPvm(ptr noundef %399, i64 noundef 112) #15
  br label %421

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

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

423:                                              ; preds = %422, %47
  %424 = load i32, ptr %9, align 4
  %425 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt9exception) #11
  %426 = icmp eq i32 %424, %425
  br i1 %426, label %427, label %439

427:                                              ; preds = %423
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #11
  %428 = load ptr, ptr %8, align 8
  %429 = call ptr @__cxa_begin_catch(ptr %428) #11
  store ptr %429, ptr %19, align 8
  %430 = load ptr, ptr %19, align 8, !tbaa !5
  invoke void @_ZN8nvinfer16plugin11caughtErrorERKSt9exception(ptr noundef nonnull align 8 dereferenceable(8) %430)
          to label %431 unwind label %436

431:                                              ; preds = %427
  invoke void @__cxa_end_catch()
          to label %432 unwind label %436

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

433:                                              ; preds = %432
  store ptr null, ptr %4, align 8
  br label %434

434:                                              ; preds = %433, %402
  %435 = load ptr, ptr %4, align 8
  ret ptr %435

436:                                              ; preds = %431, %427
  %437 = landingpad { ptr, i32 }
          catch ptr null
  %438 = extractvalue { ptr, i32 } %437, 0
  call void @__clang_call_terminate(ptr %438) #16
  unreachable

439:                                              ; preds = %423
  %440 = load ptr, ptr %8, align 8
  call void @__clang_call_terminate(ptr %440) #16
  unreachable
}

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

declare void @_ZN8nvinfer16plugin22DetectionOutputDynamicC1ENS0_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 = { 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 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 = { nounwind memory(none) }
attributes #9 = { 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 #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 }
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 = distinct !{!47, !46}
!48 = !{i64 0, i64 1, !49, i64 1, i64 1, !49, 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, !50, i64 32, i64 12, !51, i64 44, i64 1, !49, i64 45, i64 1, !49, i64 46, i64 1, !49}
!49 = !{!22, !22, i64 0}
!50 = !{!24, !24, i64 0}
!51 = !{!7, !7, i64 0}
!52 = !{!53, !53, i64 0}
!53 = !{!"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.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
@__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
@.str.41 = external hidden unnamed_addr constant [130 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

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 #1

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

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

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

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

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

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

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

; 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 nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #7

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

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 %28

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.ph109, label %._crit_edge

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

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

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

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

35:                                               ; preds = %30
  %36 = getelementptr inbounds i8, ptr %32, i64 16
  %37 = load i32, ptr %36, align 8, !tbaa !29
  %38 = icmp eq i32 %37, 5
  br i1 %38, label %41, label %.invoke

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

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

47:                                               ; preds = %30
  %48 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %33, ptr noundef nonnull dereferenceable(1) @.str.26) #10
  %.not91 = icmp eq i32 %48, 0
  br i1 %.not91, label %49, label %59

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

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

59:                                               ; preds = %47
  %60 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %33, ptr noundef nonnull dereferenceable(1) @.str.27) #10
  %.not92 = icmp eq i32 %60, 0
  br i1 %.not92, label %61, label %69

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

65:                                               ; preds = %61
  %66 = getelementptr inbounds i8, ptr %32, i64 8
  %67 = load ptr, ptr %66, align 8, !tbaa !30
  %68 = load i32, ptr %67, align 4, !tbaa !31
  store i32 %68, ptr %24, align 4, !tbaa !34
  br label %.loopexit

69:                                               ; preds = %59
  %70 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %33, ptr noundef nonnull dereferenceable(1) @.str.28) #10
  %.not93 = icmp eq i32 %70, 0
  br i1 %.not93, label %71, label %79

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

75:                                               ; preds = %71
  %76 = getelementptr inbounds i8, ptr %32, i64 8
  %77 = load ptr, ptr %76, align 8, !tbaa !30
  %78 = load i32, ptr %77, align 4, !tbaa !31
  store i32 %78, ptr %23, align 8, !tbaa !35
  br label %.loopexit

79:                                               ; preds = %69
  %80 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %33, ptr noundef nonnull dereferenceable(1) @.str.29) #10
  %.not94 = icmp eq i32 %80, 0
  br i1 %.not94, label %81, label %89

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

85:                                               ; preds = %81
  %86 = getelementptr inbounds i8, ptr %32, i64 8
  %87 = load ptr, ptr %86, align 8, !tbaa !30
  %88 = load i32, ptr %87, align 4, !tbaa !31
  store i32 %88, ptr %22, align 4, !tbaa !36
  br label %.loopexit

89:                                               ; preds = %79
  %90 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %33, ptr noundef nonnull dereferenceable(1) @.str.30) #10
  %.not95 = icmp eq i32 %90, 0
  br i1 %.not95, label %91, label %99

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

95:                                               ; preds = %91
  %96 = getelementptr inbounds i8, ptr %32, i64 8
  %97 = load ptr, ptr %96, align 8, !tbaa !30
  %98 = load i32, ptr %97, align 4, !tbaa !31
  store i32 %98, ptr %21, align 8, !tbaa !37
  br label %.loopexit

99:                                               ; preds = %89
  %100 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %33, ptr noundef nonnull dereferenceable(1) @.str.31) #10
  %.not96 = icmp eq i32 %100, 0
  br i1 %.not96, label %101, label %109

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

105:                                              ; preds = %101
  %106 = getelementptr inbounds i8, ptr %32, i64 8
  %107 = load ptr, ptr %106, align 8, !tbaa !30
  %108 = load float, ptr %107, align 4, !tbaa !38
  store float %108, ptr %20, align 4, !tbaa !39
  br label %.loopexit

109:                                              ; preds = %99
  %110 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %33, ptr noundef nonnull dereferenceable(1) @.str.32) #10
  %.not97 = icmp eq i32 %110, 0
  br i1 %.not97, label %111, label %119

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

115:                                              ; preds = %111
  %116 = getelementptr inbounds i8, ptr %32, i64 8
  %117 = load ptr, ptr %116, align 8, !tbaa !30
  %118 = load float, ptr %117, align 4, !tbaa !38
  store float %118, ptr %19, align 8, !tbaa !40
  br label %.loopexit

119:                                              ; preds = %109
  %120 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %33, ptr noundef nonnull dereferenceable(1) @.str.34) #10
  %.not98 = icmp eq i32 %120, 0
  br i1 %.not98, label %121, label %127

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

127:                                              ; preds = %119
  %128 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %33, ptr noundef nonnull dereferenceable(1) @.str.35) #10
  %.not99 = icmp eq i32 %128, 0
  br i1 %.not99, label %129, label %135

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

135:                                              ; preds = %127
  %136 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %33, ptr noundef nonnull dereferenceable(1) @.str.33) #10
  %.not100 = icmp eq i32 %136, 0
  br i1 %.not100, label %137, label %171

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

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

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

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %wide.trip.count, 2147483640
  %149 = shl nuw nsw i64 %n.vec, 2
  %ind.end = getelementptr i8, ptr %146, i64 %149
  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 %146, i64 %offset.idx
  %150 = getelementptr i8, ptr %next.gep, i64 16
  %wide.load = load <4 x i32>, ptr %next.gep, align 4, !tbaa !31
  %wide.load116 = load <4 x i32>, ptr %150, align 4, !tbaa !31
  %151 = getelementptr inbounds [3 x i32], ptr %13, i64 0, i64 %index
  %152 = getelementptr inbounds i8, ptr %151, i64 16
  store <4 x i32> %wide.load, ptr %151, align 8, !tbaa !31
  store <4 x i32> %wide.load116, ptr %152, align 8, !tbaa !31
  %index.next = add nuw i64 %index, 8
  %153 = icmp eq i64 %index.next, %n.vec
  br i1 %153, 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.preheader118

.lr.ph.preheader118:                              ; preds = %middle.block, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ 0, %.lr.ph.preheader ], [ %n.vec, %middle.block ]
  %.085106.ph = phi ptr [ %146, %.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.preheader118, %.lr.ph.prol
  %indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %.lr.ph.prol ], [ %indvars.iv.ph, %.lr.ph.preheader118 ]
  %.085106.prol = phi ptr [ %156, %.lr.ph.prol ], [ %.085106.ph, %.lr.ph.preheader118 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph.prol ], [ 0, %.lr.ph.preheader118 ]
  %154 = load i32, ptr %.085106.prol, align 4, !tbaa !31
  %155 = getelementptr inbounds [3 x i32], ptr %13, i64 0, i64 %indvars.iv.prol
  store i32 %154, ptr %155, align 4, !tbaa !31
  %156 = getelementptr inbounds i8, ptr %.085106.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.preheader118
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %.lr.ph.preheader118 ], [ %indvars.iv.next.prol, %.lr.ph.prol ]
  %.085106.unr = phi ptr [ %.085106.ph, %.lr.ph.preheader118 ], [ %156, %.lr.ph.prol ]
  %157 = sub nsw i64 %indvars.iv.ph, %wide.trip.count
  %158 = icmp ugt i64 %157, -4
  br i1 %158, 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 ]
  %.085106 = phi ptr [ %170, %.lr.ph ], [ %.085106.unr, %.lr.ph.prol.loopexit ]
  %159 = load i32, ptr %.085106, align 4, !tbaa !31
  %160 = getelementptr inbounds [3 x i32], ptr %13, i64 0, i64 %indvars.iv
  store i32 %159, ptr %160, align 4, !tbaa !31
  %161 = getelementptr inbounds i8, ptr %.085106, i64 4
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %162 = load i32, ptr %161, align 4, !tbaa !31
  %163 = getelementptr inbounds [3 x i32], ptr %13, i64 0, i64 %indvars.iv.next
  store i32 %162, ptr %163, align 4, !tbaa !31
  %164 = getelementptr inbounds i8, ptr %.085106, i64 8
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %165 = load i32, ptr %164, align 4, !tbaa !31
  %166 = getelementptr inbounds [3 x i32], ptr %13, i64 0, i64 %indvars.iv.next.1
  store i32 %165, ptr %166, align 4, !tbaa !31
  %167 = getelementptr inbounds i8, ptr %.085106, i64 12
  %indvars.iv.next.2 = add nuw nsw i64 %indvars.iv, 3
  %168 = load i32, ptr %167, align 4, !tbaa !31
  %169 = getelementptr inbounds [3 x i32], ptr %13, i64 0, i64 %indvars.iv.next.2
  store i32 %168, ptr %169, align 4, !tbaa !31
  %170 = getelementptr inbounds i8, ptr %.085106, 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

171:                                              ; preds = %135
  %172 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %33, ptr noundef nonnull dereferenceable(1) @.str.36) #10
  %.not101 = icmp eq i32 %172, 0
  br i1 %.not101, label %173, label %181

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

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

181:                                              ; preds = %171
  %182 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %33, ptr noundef nonnull dereferenceable(1) @.str.37) #10
  %.not102 = icmp eq i32 %182, 0
  br i1 %.not102, label %183, label %.loopexit

183:                                              ; preds = %181
  %184 = getelementptr inbounds i8, ptr %32, i64 16
  %185 = load i32, ptr %184, align 8, !tbaa !29
  %186 = icmp eq i32 %185, 5
  br i1 %186, label %189, label %.invoke

.invoke:                                          ; preds = %35, %183, %173, %137, %111, %101, %91, %81, %71, %61, %49
  %187 = phi i32 [ 769, %49 ], [ 774, %61 ], [ 779, %71 ], [ 784, %81 ], [ 789, %91 ], [ 794, %101 ], [ 799, %111 ], [ 812, %137 ], [ 823, %173 ], [ 828, %183 ], [ 764, %35 ]
  %188 = phi ptr [ @.str.39, %49 ], [ @.str.39, %61 ], [ @.str.39, %71 ], [ @.str.39, %81 ], [ @.str.39, %91 ], [ @.str.40, %101 ], [ @.str.40, %111 ], [ @.str.39, %137 ], [ @.str.39, %173 ], [ @.str.39, %183 ], [ @.str.39, %35 ]
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__._ZN8nvinfer16plugin16NMSPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef %187, i32 noundef 0, ptr noundef nonnull %188) #11
          to label %.cont unwind label %39

.cont:                                            ; preds = %.invoke
  unreachable

189:                                              ; preds = %183
  %190 = getelementptr inbounds i8, ptr %32, i64 8
  %191 = load ptr, ptr %190, align 8, !tbaa !30
  %192 = load i32, ptr %191, align 4, !tbaa !31
  store i32 %192, ptr %14, align 8, !tbaa !12
  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, %141, %53, %75, %95, %115, %129, %177, %189, %181, %121, %105, %85, %65, %41
  %193 = phi i32 [ %.pre, %.loopexit.loopexit ], [ %31, %141 ], [ %31, %53 ], [ %31, %75 ], [ %31, %95 ], [ %31, %115 ], [ %31, %129 ], [ %31, %177 ], [ %31, %189 ], [ %31, %181 ], [ %31, %121 ], [ %31, %105 ], [ %31, %85 ], [ %31, %65 ], [ %31, %41 ]
  %indvars.iv.next112 = add nuw nsw i64 %indvars.iv111, 1
  %194 = sext i32 %193 to i64
  %195 = icmp slt i64 %indvars.iv.next112, %194
  br i1 %195, label %30, label %._crit_edge, !llvm.loop !52

196:                                              ; preds = %._crit_edge
  invoke void @_ZN8nvinfer16plugin22DetectionOutputDynamicC1ENS0_25DetectionOutputParametersE(ptr noundef nonnull align 8 dereferenceable(112) %27, ptr noundef nonnull byval(%"struct.nvinfer1::plugin::DetectionOutputParameters") align 8 %11)
          to label %197 unwind label %206

197:                                              ; preds = %196
  %198 = load i32, ptr %14, align 8, !tbaa !12
  tail call void @_ZN8nvinfer16plugin22DetectionOutputDynamic12setScoreBitsEi(ptr noundef nonnull align 8 dereferenceable(112) %27, i32 noundef %198) #12
  %199 = getelementptr inbounds i8, ptr %0, i64 8
  %200 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %199) #12
  %201 = load ptr, ptr %27, align 8, !tbaa !53
  %202 = getelementptr inbounds i8, ptr %201, i64 120
  %203 = load ptr, ptr %202, align 8
  tail call void %203(ptr noundef nonnull align 8 dereferenceable(112) %27, ptr noundef %200) #12
  br label %214

204:                                              ; preds = %._crit_edge
  %205 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %208

206:                                              ; preds = %196
  %207 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  tail call void @_ZdlPvm(ptr noundef nonnull %27, i64 noundef 112) #13
  br label %208

208:                                              ; preds = %39, %206, %204, %28
  %.pn103.pn = phi { ptr, i32 } [ %29, %28 ], [ %40, %39 ], [ %207, %206 ], [ %205, %204 ]
  %.2 = extractvalue { ptr, i32 } %.pn103.pn, 0
  %.288 = extractvalue { ptr, i32 } %.pn103.pn, 1
  %209 = tail call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9exception) #12
  %210 = icmp eq i32 %.288, %209
  br i1 %210, label %211, label %218

211:                                              ; preds = %208
  %212 = tail call ptr @__cxa_begin_catch(ptr %.2) #12
  invoke void @_ZN8nvinfer16plugin11caughtErrorERKSt9exception(ptr noundef nonnull align 8 dereferenceable(8) %212)
          to label %213 unwind label %215

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

214:                                              ; preds = %213, %197
  %.0 = phi ptr [ %27, %197 ], [ null, %213 ]
  ret ptr %.0

215:                                              ; preds = %213, %211
  %216 = landingpad { ptr, i32 }
          catch ptr null
  %217 = extractvalue { ptr, i32 } %216, 0
  tail call void @__clang_call_terminate(ptr %217) #14
  unreachable

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

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

declare void @_ZN8nvinfer16plugin22DetectionOutputDynamicC1ENS0_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 = { 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 #2 = { 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 #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { 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 #6 = { nofree nosync nounwind memory(none) }
attributes #7 = { 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 #8 = { 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 #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 = distinct !{!52, !45}
!53 = !{!54, !54, i64 0}
!54 = !{!"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