; LLVM IR from NVIDIA/TensorRT :: plugin/nvFasterRCNN (nvFasterRCNNPlugin)

; 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"

%"struct.nvinfer1::plugin::RPROIParams" = type { i32, i32, i32, i32, i32, i32, i32, float, float, float }
%"struct.nvinfer1::PluginFieldCollection" = type { i32, ptr }
%"class.nvinfer1::PluginField" = type { ptr, ptr, i32, i32 }
%"class.nvinfer1::plugin::RPROIPluginCreator" = type { %"class.nvinfer1::pluginInternal::BaseCreator", %"struct.nvinfer1::plugin::RPROIParams", %"class.std::vector.3", %"class.std::vector.3" }
%"class.nvinfer1::pluginInternal::BaseCreator" = type { %"class.nvinfer1::v_1_0::IPluginCreator", %"class.std::__cxx11::basic_string" }
%"class.nvinfer1::v_1_0::IPluginCreator" = type { %"class.nvinfer1::v_1_0::IPluginCreatorInterface" }
%"class.nvinfer1::v_1_0::IPluginCreatorInterface" = type { %"class.nvinfer1::IVersionedInterface" }
%"class.nvinfer1::IVersionedInterface" = type { ptr }
%"class.std::__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::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str = external hidden unnamed_addr constant [92 x i8], align 1
@_ZTISt9exception = external constant ptr
@.str.22 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [14 x i8], align 1
@__func__._ZN8nvinfer16plugin18RPROIPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE = external hidden unnamed_addr constant [13 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.35 = 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: noreturn
declare void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef) #1

declare i32 @__gxx_personality_v0(...)

; 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: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) #3

declare ptr @__cxa_begin_catch(ptr)

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

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

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

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

declare void @__cxa_end_catch()

; Function Attrs: mustprogress nounwind uwtable
define dso_local noundef ptr @_ZN8nvinfer16plugin18RPROIPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE(ptr noundef nonnull align 8 dereferenceable(128) %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 i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %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 i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca %"struct.nvinfer1::plugin::RPROIParams", align 8
  %21 = 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
  %22 = load ptr, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #11
  %23 = load ptr, ptr %7, align 8, !tbaa !5
  %24 = getelementptr inbounds %"struct.nvinfer1::PluginFieldCollection", ptr %23, i32 0, i32 1
  %25 = load ptr, ptr %24, align 8, !tbaa !9
  store ptr %25, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #11
  %26 = load ptr, ptr %7, align 8, !tbaa !5
  %27 = getelementptr inbounds %"struct.nvinfer1::PluginFieldCollection", ptr %26, i32 0, i32 0
  %28 = load i32, ptr %27, align 8, !tbaa !12
  store i32 %28, ptr %9, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #11
  store i32 0, ptr %10, align 4, !tbaa !13
  br label %29

29:                                               ; preds = %381, %3
  %30 = load i32, ptr %10, align 4, !tbaa !13
  %31 = load i32, ptr %9, align 4, !tbaa !13
  %32 = icmp slt i32 %30, %31
  br i1 %32, label %34, label %33

33:                                               ; preds = %29
  store i32 2, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #11
  br label %385

34:                                               ; preds = %29
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #11
  %35 = load ptr, ptr %8, align 8, !tbaa !5
  %36 = load i32, ptr %10, align 4, !tbaa !13
  %37 = sext i32 %36 to i64
  %38 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %35, i64 %37
  %39 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %38, i32 0, i32 0
  %40 = load ptr, ptr %39, align 8, !tbaa !14
  store ptr %40, ptr %12, align 8, !tbaa !5
  %41 = load ptr, ptr %12, align 8, !tbaa !5
  %42 = call i32 @strcmp(ptr noundef %41, ptr noundef @.str.22) #12
  %43 = icmp ne i32 %42, 0
  br i1 %43, label %68, label %44

44:                                               ; preds = %34
  %45 = load ptr, ptr %8, align 8, !tbaa !5
  %46 = load i32, ptr %10, align 4, !tbaa !13
  %47 = sext i32 %46 to i64
  %48 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %45, i64 %47
  %49 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %48, i32 0, i32 2
  %50 = load i32, ptr %49, align 8, !tbaa !17
  %51 = icmp eq i32 %50, 5
  br i1 %51, label %58, label %52

52:                                               ; preds = %44
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str, ptr noundef @__func__._ZN8nvinfer16plugin18RPROIPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 442, i32 noundef 0, ptr noundef @.str.34) #13
          to label %53 unwind label %54

53:                                               ; preds = %52
  unreachable

54:                                               ; preds = %346, %344, %298, %296, %272, %248, %224, %200, %176, %152, %128, %104, %80, %52
  %55 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %56 = extractvalue { ptr, i32 } %55, 0
  store ptr %56, ptr %13, align 8
  %57 = extractvalue { ptr, i32 } %55, 1
  store i32 %57, ptr %14, align 4
  br label %384

58:                                               ; preds = %44
  %59 = load ptr, ptr %8, align 8, !tbaa !5
  %60 = load i32, ptr %10, align 4, !tbaa !13
  %61 = sext i32 %60 to i64
  %62 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %59, i64 %61
  %63 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %62, i32 0, i32 1
  %64 = load ptr, ptr %63, align 8, !tbaa !18
  %65 = load i32, ptr %64, align 4, !tbaa !13
  %66 = getelementptr inbounds %"class.nvinfer1::plugin::RPROIPluginCreator", ptr %22, i32 0, i32 1
  %67 = getelementptr inbounds %"struct.nvinfer1::plugin::RPROIParams", ptr %66, i32 0, i32 0
  store i32 %65, ptr %67, align 8, !tbaa !19
  br label %68

68:                                               ; preds = %58, %34
  %69 = load ptr, ptr %12, align 8, !tbaa !5
  %70 = call i32 @strcmp(ptr noundef %69, ptr noundef @.str.23) #12
  %71 = icmp ne i32 %70, 0
  br i1 %71, label %92, label %72

72:                                               ; preds = %68
  %73 = load ptr, ptr %8, align 8, !tbaa !5
  %74 = load i32, ptr %10, align 4, !tbaa !13
  %75 = sext i32 %74 to i64
  %76 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %73, i64 %75
  %77 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %76, i32 0, i32 2
  %78 = load i32, ptr %77, align 8, !tbaa !17
  %79 = icmp eq i32 %78, 5
  br i1 %79, label %82, label %80

80:                                               ; preds = %72
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str, ptr noundef @__func__._ZN8nvinfer16plugin18RPROIPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 447, i32 noundef 0, ptr noundef @.str.34) #13
          to label %81 unwind label %54

81:                                               ; preds = %80
  unreachable

82:                                               ; preds = %72
  %83 = load ptr, ptr %8, align 8, !tbaa !5
  %84 = load i32, ptr %10, align 4, !tbaa !13
  %85 = sext i32 %84 to i64
  %86 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %83, i64 %85
  %87 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %86, i32 0, i32 1
  %88 = load ptr, ptr %87, align 8, !tbaa !18
  %89 = load i32, ptr %88, align 4, !tbaa !13
  %90 = getelementptr inbounds %"class.nvinfer1::plugin::RPROIPluginCreator", ptr %22, i32 0, i32 1
  %91 = getelementptr inbounds %"struct.nvinfer1::plugin::RPROIParams", ptr %90, i32 0, i32 1
  store i32 %89, ptr %91, align 4, !tbaa !34
  br label %92

92:                                               ; preds = %82, %68
  %93 = load ptr, ptr %12, align 8, !tbaa !5
  %94 = call i32 @strcmp(ptr noundef %93, ptr noundef @.str.24) #12
  %95 = icmp ne i32 %94, 0
  br i1 %95, label %116, label %96

96:                                               ; preds = %92
  %97 = load ptr, ptr %8, align 8, !tbaa !5
  %98 = load i32, ptr %10, align 4, !tbaa !13
  %99 = sext i32 %98 to i64
  %100 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %97, i64 %99
  %101 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %100, i32 0, i32 2
  %102 = load i32, ptr %101, align 8, !tbaa !17
  %103 = icmp eq i32 %102, 5
  br i1 %103, label %106, label %104

104:                                              ; preds = %96
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str, ptr noundef @__func__._ZN8nvinfer16plugin18RPROIPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 452, i32 noundef 0, ptr noundef @.str.34) #13
          to label %105 unwind label %54

105:                                              ; preds = %104
  unreachable

106:                                              ; preds = %96
  %107 = load ptr, ptr %8, align 8, !tbaa !5
  %108 = load i32, ptr %10, align 4, !tbaa !13
  %109 = sext i32 %108 to i64
  %110 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %107, i64 %109
  %111 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %110, i32 0, i32 1
  %112 = load ptr, ptr %111, align 8, !tbaa !18
  %113 = load i32, ptr %112, align 4, !tbaa !13
  %114 = getelementptr inbounds %"class.nvinfer1::plugin::RPROIPluginCreator", ptr %22, i32 0, i32 1
  %115 = getelementptr inbounds %"struct.nvinfer1::plugin::RPROIParams", ptr %114, i32 0, i32 2
  store i32 %113, ptr %115, align 8, !tbaa !35
  br label %116

116:                                              ; preds = %106, %92
  %117 = load ptr, ptr %12, align 8, !tbaa !5
  %118 = call i32 @strcmp(ptr noundef %117, ptr noundef @.str.25) #12
  %119 = icmp ne i32 %118, 0
  br i1 %119, label %140, label %120

120:                                              ; preds = %116
  %121 = load ptr, ptr %8, align 8, !tbaa !5
  %122 = load i32, ptr %10, align 4, !tbaa !13
  %123 = sext i32 %122 to i64
  %124 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %121, i64 %123
  %125 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %124, i32 0, i32 2
  %126 = load i32, ptr %125, align 8, !tbaa !17
  %127 = icmp eq i32 %126, 5
  br i1 %127, label %130, label %128

128:                                              ; preds = %120
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str, ptr noundef @__func__._ZN8nvinfer16plugin18RPROIPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 457, i32 noundef 0, ptr noundef @.str.34) #13
          to label %129 unwind label %54

129:                                              ; preds = %128
  unreachable

130:                                              ; preds = %120
  %131 = load ptr, ptr %8, align 8, !tbaa !5
  %132 = load i32, ptr %10, align 4, !tbaa !13
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %131, i64 %133
  %135 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %134, i32 0, i32 1
  %136 = load ptr, ptr %135, align 8, !tbaa !18
  %137 = load i32, ptr %136, align 4, !tbaa !13
  %138 = getelementptr inbounds %"class.nvinfer1::plugin::RPROIPluginCreator", ptr %22, i32 0, i32 1
  %139 = getelementptr inbounds %"struct.nvinfer1::plugin::RPROIParams", ptr %138, i32 0, i32 3
  store i32 %137, ptr %139, align 4, !tbaa !36
  br label %140

140:                                              ; preds = %130, %116
  %141 = load ptr, ptr %12, align 8, !tbaa !5
  %142 = call i32 @strcmp(ptr noundef %141, ptr noundef @.str.26) #12
  %143 = icmp ne i32 %142, 0
  br i1 %143, label %164, label %144

144:                                              ; preds = %140
  %145 = load ptr, ptr %8, align 8, !tbaa !5
  %146 = load i32, ptr %10, align 4, !tbaa !13
  %147 = sext i32 %146 to i64
  %148 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %145, i64 %147
  %149 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %148, i32 0, i32 2
  %150 = load i32, ptr %149, align 8, !tbaa !17
  %151 = icmp eq i32 %150, 5
  br i1 %151, label %154, label %152

152:                                              ; preds = %144
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str, ptr noundef @__func__._ZN8nvinfer16plugin18RPROIPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 462, i32 noundef 0, ptr noundef @.str.34) #13
          to label %153 unwind label %54

153:                                              ; preds = %152
  unreachable

154:                                              ; preds = %144
  %155 = load ptr, ptr %8, align 8, !tbaa !5
  %156 = load i32, ptr %10, align 4, !tbaa !13
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %155, i64 %157
  %159 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %158, i32 0, i32 1
  %160 = load ptr, ptr %159, align 8, !tbaa !18
  %161 = load i32, ptr %160, align 4, !tbaa !13
  %162 = getelementptr inbounds %"class.nvinfer1::plugin::RPROIPluginCreator", ptr %22, i32 0, i32 1
  %163 = getelementptr inbounds %"struct.nvinfer1::plugin::RPROIParams", ptr %162, i32 0, i32 4
  store i32 %161, ptr %163, align 8, !tbaa !37
  br label %164

164:                                              ; preds = %154, %140
  %165 = load ptr, ptr %12, align 8, !tbaa !5
  %166 = call i32 @strcmp(ptr noundef %165, ptr noundef @.str.27) #12
  %167 = icmp ne i32 %166, 0
  br i1 %167, label %188, label %168

168:                                              ; preds = %164
  %169 = load ptr, ptr %8, align 8, !tbaa !5
  %170 = load i32, ptr %10, align 4, !tbaa !13
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %169, i64 %171
  %173 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %172, i32 0, i32 2
  %174 = load i32, ptr %173, align 8, !tbaa !17
  %175 = icmp eq i32 %174, 5
  br i1 %175, label %178, label %176

176:                                              ; preds = %168
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str, ptr noundef @__func__._ZN8nvinfer16plugin18RPROIPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 467, i32 noundef 0, ptr noundef @.str.34) #13
          to label %177 unwind label %54

177:                                              ; preds = %176
  unreachable

178:                                              ; preds = %168
  %179 = load ptr, ptr %8, align 8, !tbaa !5
  %180 = load i32, ptr %10, align 4, !tbaa !13
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %179, i64 %181
  %183 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %182, i32 0, i32 1
  %184 = load ptr, ptr %183, align 8, !tbaa !18
  %185 = load i32, ptr %184, align 4, !tbaa !13
  %186 = getelementptr inbounds %"class.nvinfer1::plugin::RPROIPluginCreator", ptr %22, i32 0, i32 1
  %187 = getelementptr inbounds %"struct.nvinfer1::plugin::RPROIParams", ptr %186, i32 0, i32 5
  store i32 %185, ptr %187, align 4, !tbaa !38
  br label %188

188:                                              ; preds = %178, %164
  %189 = load ptr, ptr %12, align 8, !tbaa !5
  %190 = call i32 @strcmp(ptr noundef %189, ptr noundef @.str.28) #12
  %191 = icmp ne i32 %190, 0
  br i1 %191, label %212, label %192

192:                                              ; preds = %188
  %193 = load ptr, ptr %8, align 8, !tbaa !5
  %194 = load i32, ptr %10, align 4, !tbaa !13
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %193, i64 %195
  %197 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %196, i32 0, i32 2
  %198 = load i32, ptr %197, align 8, !tbaa !17
  %199 = icmp eq i32 %198, 5
  br i1 %199, label %202, label %200

200:                                              ; preds = %192
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str, ptr noundef @__func__._ZN8nvinfer16plugin18RPROIPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 472, i32 noundef 0, ptr noundef @.str.34) #13
          to label %201 unwind label %54

201:                                              ; preds = %200
  unreachable

202:                                              ; preds = %192
  %203 = load ptr, ptr %8, align 8, !tbaa !5
  %204 = load i32, ptr %10, align 4, !tbaa !13
  %205 = sext i32 %204 to i64
  %206 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %203, i64 %205
  %207 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %206, i32 0, i32 1
  %208 = load ptr, ptr %207, align 8, !tbaa !18
  %209 = load i32, ptr %208, align 4, !tbaa !13
  %210 = getelementptr inbounds %"class.nvinfer1::plugin::RPROIPluginCreator", ptr %22, i32 0, i32 1
  %211 = getelementptr inbounds %"struct.nvinfer1::plugin::RPROIParams", ptr %210, i32 0, i32 6
  store i32 %209, ptr %211, align 8, !tbaa !39
  br label %212

212:                                              ; preds = %202, %188
  %213 = load ptr, ptr %12, align 8, !tbaa !5
  %214 = call i32 @strcmp(ptr noundef %213, ptr noundef @.str.29) #12
  %215 = icmp ne i32 %214, 0
  br i1 %215, label %236, label %216

216:                                              ; preds = %212
  %217 = load ptr, ptr %8, align 8, !tbaa !5
  %218 = load i32, ptr %10, align 4, !tbaa !13
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %217, i64 %219
  %221 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %220, i32 0, i32 2
  %222 = load i32, ptr %221, align 8, !tbaa !17
  %223 = icmp eq i32 %222, 1
  br i1 %223, label %226, label %224

224:                                              ; preds = %216
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str, ptr noundef @__func__._ZN8nvinfer16plugin18RPROIPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 477, i32 noundef 0, ptr noundef @.str.35) #13
          to label %225 unwind label %54

225:                                              ; preds = %224
  unreachable

226:                                              ; preds = %216
  %227 = load ptr, ptr %8, align 8, !tbaa !5
  %228 = load i32, ptr %10, align 4, !tbaa !13
  %229 = sext i32 %228 to i64
  %230 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %227, i64 %229
  %231 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %230, i32 0, i32 1
  %232 = load ptr, ptr %231, align 8, !tbaa !18
  %233 = load float, ptr %232, align 4, !tbaa !40
  %234 = getelementptr inbounds %"class.nvinfer1::plugin::RPROIPluginCreator", ptr %22, i32 0, i32 1
  %235 = getelementptr inbounds %"struct.nvinfer1::plugin::RPROIParams", ptr %234, i32 0, i32 7
  store float %233, ptr %235, align 4, !tbaa !41
  br label %236

236:                                              ; preds = %226, %212
  %237 = load ptr, ptr %12, align 8, !tbaa !5
  %238 = call i32 @strcmp(ptr noundef %237, ptr noundef @.str.30) #12
  %239 = icmp ne i32 %238, 0
  br i1 %239, label %260, label %240

240:                                              ; preds = %236
  %241 = load ptr, ptr %8, align 8, !tbaa !5
  %242 = load i32, ptr %10, align 4, !tbaa !13
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %241, i64 %243
  %245 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %244, i32 0, i32 2
  %246 = load i32, ptr %245, align 8, !tbaa !17
  %247 = icmp eq i32 %246, 1
  br i1 %247, label %250, label %248

248:                                              ; preds = %240
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str, ptr noundef @__func__._ZN8nvinfer16plugin18RPROIPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 482, i32 noundef 0, ptr noundef @.str.35) #13
          to label %249 unwind label %54

249:                                              ; preds = %248
  unreachable

250:                                              ; preds = %240
  %251 = load ptr, ptr %8, align 8, !tbaa !5
  %252 = load i32, ptr %10, align 4, !tbaa !13
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %251, i64 %253
  %255 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %254, i32 0, i32 1
  %256 = load ptr, ptr %255, align 8, !tbaa !18
  %257 = load float, ptr %256, align 4, !tbaa !40
  %258 = getelementptr inbounds %"class.nvinfer1::plugin::RPROIPluginCreator", ptr %22, i32 0, i32 1
  %259 = getelementptr inbounds %"struct.nvinfer1::plugin::RPROIParams", ptr %258, i32 0, i32 8
  store float %257, ptr %259, align 8, !tbaa !42
  br label %260

260:                                              ; preds = %250, %236
  %261 = load ptr, ptr %12, align 8, !tbaa !5
  %262 = call i32 @strcmp(ptr noundef %261, ptr noundef @.str.31) #12
  %263 = icmp ne i32 %262, 0
  br i1 %263, label %284, label %264

264:                                              ; preds = %260
  %265 = load ptr, ptr %8, align 8, !tbaa !5
  %266 = load i32, ptr %10, align 4, !tbaa !13
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %265, i64 %267
  %269 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %268, i32 0, i32 2
  %270 = load i32, ptr %269, align 8, !tbaa !17
  %271 = icmp eq i32 %270, 1
  br i1 %271, label %274, label %272

272:                                              ; preds = %264
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str, ptr noundef @__func__._ZN8nvinfer16plugin18RPROIPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 487, i32 noundef 0, ptr noundef @.str.35) #13
          to label %273 unwind label %54

273:                                              ; preds = %272
  unreachable

274:                                              ; preds = %264
  %275 = load ptr, ptr %8, align 8, !tbaa !5
  %276 = load i32, ptr %10, align 4, !tbaa !13
  %277 = sext i32 %276 to i64
  %278 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %275, i64 %277
  %279 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %278, i32 0, i32 1
  %280 = load ptr, ptr %279, align 8, !tbaa !18
  %281 = load float, ptr %280, align 4, !tbaa !40
  %282 = getelementptr inbounds %"class.nvinfer1::plugin::RPROIPluginCreator", ptr %22, i32 0, i32 1
  %283 = getelementptr inbounds %"struct.nvinfer1::plugin::RPROIParams", ptr %282, i32 0, i32 9
  store float %281, ptr %283, align 4, !tbaa !43
  br label %284

284:                                              ; preds = %274, %260
  %285 = load ptr, ptr %12, align 8, !tbaa !5
  %286 = call i32 @strcmp(ptr noundef %285, ptr noundef @.str.32) #12
  %287 = icmp ne i32 %286, 0
  br i1 %287, label %332, label %288

288:                                              ; preds = %284
  %289 = load ptr, ptr %8, align 8, !tbaa !5
  %290 = load i32, ptr %10, align 4, !tbaa !13
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %289, i64 %291
  %293 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %292, i32 0, i32 2
  %294 = load i32, ptr %293, align 8, !tbaa !17
  %295 = icmp eq i32 %294, 1
  br i1 %295, label %298, label %296

296:                                              ; preds = %288
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str, ptr noundef @__func__._ZN8nvinfer16plugin18RPROIPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 492, i32 noundef 0, ptr noundef @.str.35) #13
          to label %297 unwind label %54

297:                                              ; preds = %296
  unreachable

298:                                              ; preds = %288
  %299 = getelementptr inbounds %"class.nvinfer1::plugin::RPROIPluginCreator", ptr %22, i32 0, i32 2
  %300 = getelementptr inbounds %"class.nvinfer1::plugin::RPROIPluginCreator", ptr %22, i32 0, i32 1
  %301 = getelementptr inbounds %"struct.nvinfer1::plugin::RPROIParams", ptr %300, i32 0, i32 5
  %302 = load i32, ptr %301, align 4, !tbaa !38
  %303 = sext i32 %302 to i64
  invoke void @_ZNSt6vectorIfSaIfEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %299, i64 noundef %303)
          to label %304 unwind label %54

304:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #11
  %305 = load ptr, ptr %8, align 8, !tbaa !5
  %306 = load i32, ptr %10, align 4, !tbaa !13
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %305, i64 %307
  %309 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %308, i32 0, i32 1
  %310 = load ptr, ptr %309, align 8, !tbaa !18
  store ptr %310, 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 !13
  br label %311

311:                                              ; preds = %324, %304
  %312 = load i32, ptr %16, align 4, !tbaa !13
  %313 = getelementptr inbounds %"class.nvinfer1::plugin::RPROIPluginCreator", ptr %22, i32 0, i32 1
  %314 = getelementptr inbounds %"struct.nvinfer1::plugin::RPROIParams", ptr %313, i32 0, i32 5
  %315 = load i32, ptr %314, align 4, !tbaa !38
  %316 = icmp slt i32 %312, %315
  br i1 %316, label %318, label %317

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

318:                                              ; preds = %311
  %319 = getelementptr inbounds %"class.nvinfer1::plugin::RPROIPluginCreator", ptr %22, i32 0, i32 2
  %320 = load ptr, ptr %15, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIfSaIfEE9push_backERKf(ptr noundef nonnull align 8 dereferenceable(24) %319, ptr noundef nonnull align 4 dereferenceable(4) %320)
          to label %321 unwind label %327

321:                                              ; preds = %318
  %322 = load ptr, ptr %15, align 8, !tbaa !5
  %323 = getelementptr inbounds float, ptr %322, i32 1
  store ptr %323, ptr %15, align 8, !tbaa !5
  br label %324

324:                                              ; preds = %321
  %325 = load i32, ptr %16, align 4, !tbaa !13
  %326 = add nsw i32 %325, 1
  store i32 %326, ptr %16, align 4, !tbaa !13
  br label %311, !llvm.loop !44

327:                                              ; preds = %318
  %328 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %329 = extractvalue { ptr, i32 } %328, 0
  store ptr %329, ptr %13, align 8
  %330 = extractvalue { ptr, i32 } %328, 1
  store i32 %330, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #11
  br label %384

331:                                              ; preds = %317
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #11
  br label %332

332:                                              ; preds = %331, %284
  %333 = load ptr, ptr %12, align 8, !tbaa !5
  %334 = call i32 @strcmp(ptr noundef %333, ptr noundef @.str.33) #12
  %335 = icmp ne i32 %334, 0
  br i1 %335, label %380, label %336

336:                                              ; preds = %332
  %337 = load ptr, ptr %8, align 8, !tbaa !5
  %338 = load i32, ptr %10, align 4, !tbaa !13
  %339 = sext i32 %338 to i64
  %340 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %337, i64 %339
  %341 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %340, i32 0, i32 2
  %342 = load i32, ptr %341, align 8, !tbaa !17
  %343 = icmp eq i32 %342, 1
  br i1 %343, label %346, label %344

344:                                              ; preds = %336
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef @.str, ptr noundef @__func__._ZN8nvinfer16plugin18RPROIPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef 503, i32 noundef 0, ptr noundef @.str.35) #13
          to label %345 unwind label %54

345:                                              ; preds = %344
  unreachable

346:                                              ; preds = %336
  %347 = getelementptr inbounds %"class.nvinfer1::plugin::RPROIPluginCreator", ptr %22, i32 0, i32 3
  %348 = getelementptr inbounds %"class.nvinfer1::plugin::RPROIPluginCreator", ptr %22, i32 0, i32 1
  %349 = getelementptr inbounds %"struct.nvinfer1::plugin::RPROIParams", ptr %348, i32 0, i32 6
  %350 = load i32, ptr %349, align 8, !tbaa !39
  %351 = sext i32 %350 to i64
  invoke void @_ZNSt6vectorIfSaIfEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %347, i64 noundef %351)
          to label %352 unwind label %54

352:                                              ; preds = %346
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #11
  %353 = load ptr, ptr %8, align 8, !tbaa !5
  %354 = load i32, ptr %10, align 4, !tbaa !13
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %353, i64 %355
  %357 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %356, i32 0, i32 1
  %358 = load ptr, ptr %357, align 8, !tbaa !18
  store ptr %358, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #11
  store i32 0, ptr %18, align 4, !tbaa !13
  br label %359

359:                                              ; preds = %372, %352
  %360 = load i32, ptr %18, align 4, !tbaa !13
  %361 = getelementptr inbounds %"class.nvinfer1::plugin::RPROIPluginCreator", ptr %22, i32 0, i32 1
  %362 = getelementptr inbounds %"struct.nvinfer1::plugin::RPROIParams", ptr %361, i32 0, i32 6
  %363 = load i32, ptr %362, align 8, !tbaa !39
  %364 = icmp slt i32 %360, %363
  br i1 %364, label %366, label %365

365:                                              ; preds = %359
  store i32 8, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #11
  br label %379

366:                                              ; preds = %359
  %367 = getelementptr inbounds %"class.nvinfer1::plugin::RPROIPluginCreator", ptr %22, i32 0, i32 3
  %368 = load ptr, ptr %17, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIfSaIfEE9push_backERKf(ptr noundef nonnull align 8 dereferenceable(24) %367, ptr noundef nonnull align 4 dereferenceable(4) %368)
          to label %369 unwind label %375

369:                                              ; preds = %366
  %370 = load ptr, ptr %17, align 8, !tbaa !5
  %371 = getelementptr inbounds float, ptr %370, i32 1
  store ptr %371, ptr %17, align 8, !tbaa !5
  br label %372

372:                                              ; preds = %369
  %373 = load i32, ptr %18, align 4, !tbaa !13
  %374 = add nsw i32 %373, 1
  store i32 %374, ptr %18, align 4, !tbaa !13
  br label %359, !llvm.loop !46

375:                                              ; preds = %366
  %376 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %377 = extractvalue { ptr, i32 } %376, 0
  store ptr %377, ptr %13, align 8
  %378 = extractvalue { ptr, i32 } %376, 1
  store i32 %378, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #11
  br label %384

379:                                              ; preds = %365
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #11
  br label %380

380:                                              ; preds = %379, %332
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #11
  br label %381

381:                                              ; preds = %380
  %382 = load i32, ptr %10, align 4, !tbaa !13
  %383 = add nsw i32 %382, 1
  store i32 %383, ptr %10, align 4, !tbaa !13
  br label %29, !llvm.loop !47

384:                                              ; preds = %375, %327, %54
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #11
  br label %410

385:                                              ; preds = %33
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #11
  %386 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 152) #14
          to label %387 unwind label %401

387:                                              ; preds = %385
  %388 = getelementptr inbounds %"class.nvinfer1::plugin::RPROIPluginCreator", ptr %22, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %20, ptr align 8 %388, i64 40, i1 false), !tbaa.struct !48
  %389 = getelementptr inbounds %"class.nvinfer1::plugin::RPROIPluginCreator", ptr %22, i32 0, i32 2
  %390 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %389) #11
  %391 = getelementptr inbounds %"class.nvinfer1::plugin::RPROIPluginCreator", ptr %22, i32 0, i32 3
  %392 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %391) #11
  invoke void @_ZN8nvinfer16plugin11RPROIPluginC1ENS0_11RPROIParamsEPKfS4_(ptr noundef nonnull align 8 dereferenceable(148) %386, ptr noundef byval(%"struct.nvinfer1::plugin::RPROIParams") align 8 %20, ptr noundef %390, ptr noundef %392)
          to label %393 unwind label %405

393:                                              ; preds = %387
  store ptr %386, ptr %19, align 8, !tbaa !5
  %394 = load ptr, ptr %19, align 8, !tbaa !5
  %395 = getelementptr inbounds %"class.nvinfer1::pluginInternal::BaseCreator", ptr %22, i32 0, i32 1
  %396 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %395) #11
  %397 = load ptr, ptr %394, align 8, !tbaa !49
  %398 = getelementptr inbounds ptr, ptr %397, i64 15
  %399 = load ptr, ptr %398, align 8
  call void %399(ptr noundef nonnull align 8 dereferenceable(148) %394, ptr noundef %396) #11
  %400 = load ptr, ptr %19, align 8, !tbaa !5
  store ptr %400, ptr %4, align 8
  store i32 1, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #11
  br label %422

401:                                              ; preds = %385
  %402 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %403 = extractvalue { ptr, i32 } %402, 0
  store ptr %403, ptr %13, align 8
  %404 = extractvalue { ptr, i32 } %402, 1
  store i32 %404, ptr %14, align 4
  br label %409

405:                                              ; preds = %387
  %406 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %407 = extractvalue { ptr, i32 } %406, 0
  store ptr %407, ptr %13, align 8
  %408 = extractvalue { ptr, i32 } %406, 1
  store i32 %408, ptr %14, align 4
  call void @_ZdlPvm(ptr noundef %386, i64 noundef 152) #15
  br label %409

409:                                              ; preds = %405, %401
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #11
  br label %410

410:                                              ; preds = %409, %384
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #11
  br label %411

411:                                              ; preds = %410
  %412 = load i32, ptr %14, align 4
  %413 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt9exception) #11
  %414 = icmp eq i32 %412, %413
  br i1 %414, label %415, label %427

415:                                              ; preds = %411
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #11
  %416 = load ptr, ptr %13, align 8
  %417 = call ptr @__cxa_begin_catch(ptr %416) #11
  store ptr %417, ptr %21, align 8
  %418 = load ptr, ptr %21, align 8, !tbaa !5
  invoke void @_ZN8nvinfer16plugin11caughtErrorERKSt9exception(ptr noundef nonnull align 8 dereferenceable(8) %418)
          to label %419 unwind label %424

419:                                              ; preds = %415
  invoke void @__cxa_end_catch()
          to label %420 unwind label %424

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

421:                                              ; preds = %420
  store ptr null, ptr %4, align 8
  br label %422

422:                                              ; preds = %421, %393
  %423 = load ptr, ptr %4, align 8
  ret ptr %423

424:                                              ; preds = %419, %415
  %425 = landingpad { ptr, i32 }
          catch ptr null
  %426 = extractvalue { ptr, i32 } %425, 0
  call void @__clang_call_terminate(ptr %426) #16
  unreachable

427:                                              ; preds = %411
  %428 = load ptr, ptr %13, align 8
  call void @__clang_call_terminate(ptr %428) #16
  unreachable
}

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

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

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

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

declare void @_ZN8nvinfer16plugin11RPROIPluginC1ENS0_11RPROIParamsEPKfS4_(ptr, ptr, ptr, ptr)

attributes #0 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { 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 #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 = { 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 = { nounwind memory(none) }
attributes #8 = { 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 #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 = !{!10, !11, i64 0}
!13 = !{!11, !11, i64 0}
!14 = !{!15, !6, i64 0}
!15 = !{!"_ZTSN8nvinfer111PluginFieldE", !6, i64 0, !6, i64 8, !16, i64 16, !11, i64 20}
!16 = !{!"_ZTSN8nvinfer115PluginFieldTypeE", !7, i64 0}
!17 = !{!15, !16, i64 16}
!18 = !{!15, !6, i64 8}
!19 = !{!20, !11, i64 40}
!20 = !{!"_ZTSN8nvinfer16plugin18RPROIPluginCreatorE", !21, i64 0, !28, i64 40, !30, i64 80, !30, i64 104}
!21 = !{!"_ZTSN8nvinfer114pluginInternal11BaseCreatorE", !22, i64 0, !25, i64 8}
!22 = !{!"_ZTSN8nvinfer15v_1_014IPluginCreatorE", !23, i64 0}
!23 = !{!"_ZTSN8nvinfer15v_1_023IPluginCreatorInterfaceE", !24, i64 0}
!24 = !{!"_ZTSN8nvinfer119IVersionedInterfaceE"}
!25 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !26, i64 0, !27, i64 8, !7, i64 16}
!26 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!27 = !{!"long", !7, i64 0}
!28 = !{!"_ZTSN8nvinfer16plugin11RPROIParamsE", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !29, i64 28, !29, i64 32, !29, i64 36}
!29 = !{!"float", !7, i64 0}
!30 = !{!"_ZTSSt6vectorIfSaIfEE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseIfSaIfEE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!34 = !{!20, !11, i64 44}
!35 = !{!20, !11, i64 48}
!36 = !{!20, !11, i64 52}
!37 = !{!20, !11, i64 56}
!38 = !{!20, !11, i64 60}
!39 = !{!20, !11, i64 64}
!40 = !{!29, !29, i64 0}
!41 = !{!20, !29, i64 68}
!42 = !{!20, !29, i64 72}
!43 = !{!20, !29, i64 76}
!44 = distinct !{!44, !45}
!45 = !{!"llvm.loop.mustprogress"}
!46 = distinct !{!46, !45}
!47 = distinct !{!47, !45}
!48 = !{i64 0, i64 4, !13, i64 4, i64 4, !13, i64 8, i64 4, !13, i64 12, i64 4, !13, i64 16, i64 4, !13, i64 20, i64 4, !13, i64 24, i64 4, !13, i64 28, i64 4, !40, i64 32, i64 4, !40, i64 36, i64 4, !40}
!49 = !{!50, !50, i64 0}
!50 = !{!"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"

%"struct.nvinfer1::plugin::RPROIParams" = type { i32, i32, i32, i32, i32, i32, i32, float, float, float }
%"class.nvinfer1::PluginField" = type { ptr, ptr, i32, i32 }

@.str = external hidden unnamed_addr constant [92 x i8], align 1
@_ZTISt9exception = external constant ptr
@.str.22 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [14 x i8], align 1
@__func__._ZN8nvinfer16plugin18RPROIPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE = external hidden unnamed_addr constant [13 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [44 x i8], align 1

; Function Attrs: mustprogress 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: noreturn
declare void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #1

declare i32 @__gxx_personality_v0(...)

; 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: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #3

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5 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 #7

declare void @__cxa_end_catch() local_unnamed_addr

; Function Attrs: mustprogress nounwind uwtable
define dso_local noundef ptr @_ZN8nvinfer16plugin18RPROIPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE(ptr noundef nonnull align 8 dereferenceable(128) %0, ptr nocapture noundef readnone %1, ptr nocapture noundef readonly %2) unnamed_addr #5 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"struct.nvinfer1::plugin::RPROIParams", align 8
  %5 = getelementptr inbounds i8, ptr %2, i64 8
  %6 = load ptr, ptr %5, align 8, !tbaa !5
  %7 = load i32, ptr %2, align 8, !tbaa !11
  %8 = icmp sgt i32 %7, 0
  br i1 %8, label %.lr.ph114, label %._crit_edge

.lr.ph114:                                        ; preds = %3
  %9 = getelementptr inbounds i8, ptr %0, i64 40
  %10 = getelementptr inbounds i8, ptr %0, i64 44
  %11 = getelementptr inbounds i8, ptr %0, i64 48
  %12 = getelementptr inbounds i8, ptr %0, i64 52
  %13 = getelementptr inbounds i8, ptr %0, i64 56
  %14 = getelementptr inbounds i8, ptr %0, i64 60
  %15 = getelementptr inbounds i8, ptr %0, i64 64
  %16 = getelementptr inbounds i8, ptr %0, i64 68
  %17 = getelementptr inbounds i8, ptr %0, i64 72
  %18 = getelementptr inbounds i8, ptr %0, i64 76
  %19 = getelementptr inbounds i8, ptr %0, i64 80
  %20 = getelementptr inbounds i8, ptr %0, i64 104
  %wide.trip.count = zext nneg i32 %7 to i64
  br label %22

._crit_edge:                                      ; preds = %.loopexit, %3
  %21 = invoke noalias noundef nonnull dereferenceable(152) ptr @_Znwm(i64 noundef 152) #10
          to label %167 unwind label %179

22:                                               ; preds = %.lr.ph114, %.loopexit
  %indvars.iv = phi i64 [ 0, %.lr.ph114 ], [ %indvars.iv.next, %.loopexit ]
  %23 = getelementptr inbounds %"class.nvinfer1::PluginField", ptr %6, i64 %indvars.iv
  %24 = load ptr, ptr %23, align 8, !tbaa !12
  %25 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.22) #11
  %.not = icmp eq i32 %25, 0
  br i1 %.not, label %26, label %36

26:                                               ; preds = %22
  %27 = getelementptr inbounds i8, ptr %23, i64 16
  %28 = load i32, ptr %27, align 8, !tbaa !15
  %29 = icmp eq i32 %28, 5
  br i1 %29, label %32, label %.invoke

.invoke:                                          ; preds = %26, %148, %128, %118, %108, %98, %88, %78, %68, %58, %48, %38
  %30 = phi i32 [ 447, %38 ], [ 452, %48 ], [ 457, %58 ], [ 462, %68 ], [ 467, %78 ], [ 472, %88 ], [ 477, %98 ], [ 482, %108 ], [ 487, %118 ], [ 492, %128 ], [ 503, %148 ], [ 442, %26 ]
  %31 = phi ptr [ @.str.34, %38 ], [ @.str.34, %48 ], [ @.str.34, %58 ], [ @.str.34, %68 ], [ @.str.34, %78 ], [ @.str.34, %88 ], [ @.str.35, %98 ], [ @.str.35, %108 ], [ @.str.35, %118 ], [ @.str.35, %128 ], [ @.str.35, %148 ], [ @.str.34, %26 ]
  invoke void @_ZN8nvinfer16plugin16throwPluginErrorEPKcS2_iiS2_(ptr noundef nonnull @.str, ptr noundef nonnull @__func__._ZN8nvinfer16plugin18RPROIPluginCreator12createPluginEPKcPKNS_21PluginFieldCollectionE, i32 noundef %30, i32 noundef 0, ptr noundef nonnull %31) #12
          to label %.cont unwind label %.loopexit.split-lp

.cont:                                            ; preds = %.invoke
  unreachable

.loopexit107:                                     ; preds = %132, %152
  %lpad.loopexit = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %183

.loopexit.split-lp:                               ; preds = %.invoke
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %183

32:                                               ; preds = %26
  %33 = getelementptr inbounds i8, ptr %23, i64 8
  %34 = load ptr, ptr %33, align 8, !tbaa !16
  %35 = load i32, ptr %34, align 4, !tbaa !17
  store i32 %35, ptr %9, align 8, !tbaa !18
  br label %36

36:                                               ; preds = %32, %22
  %37 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.23) #11
  %.not92 = icmp eq i32 %37, 0
  br i1 %.not92, label %38, label %46

38:                                               ; preds = %36
  %39 = getelementptr inbounds i8, ptr %23, i64 16
  %40 = load i32, ptr %39, align 8, !tbaa !15
  %41 = icmp eq i32 %40, 5
  br i1 %41, label %42, label %.invoke

42:                                               ; preds = %38
  %43 = getelementptr inbounds i8, ptr %23, i64 8
  %44 = load ptr, ptr %43, align 8, !tbaa !16
  %45 = load i32, ptr %44, align 4, !tbaa !17
  store i32 %45, ptr %10, align 4, !tbaa !33
  br label %46

46:                                               ; preds = %42, %36
  %47 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.24) #11
  %.not93 = icmp eq i32 %47, 0
  br i1 %.not93, label %48, label %56

48:                                               ; preds = %46
  %49 = getelementptr inbounds i8, ptr %23, i64 16
  %50 = load i32, ptr %49, align 8, !tbaa !15
  %51 = icmp eq i32 %50, 5
  br i1 %51, label %52, label %.invoke

52:                                               ; preds = %48
  %53 = getelementptr inbounds i8, ptr %23, i64 8
  %54 = load ptr, ptr %53, align 8, !tbaa !16
  %55 = load i32, ptr %54, align 4, !tbaa !17
  store i32 %55, ptr %11, align 8, !tbaa !34
  br label %56

56:                                               ; preds = %52, %46
  %57 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.25) #11
  %.not94 = icmp eq i32 %57, 0
  br i1 %.not94, label %58, label %66

58:                                               ; preds = %56
  %59 = getelementptr inbounds i8, ptr %23, i64 16
  %60 = load i32, ptr %59, align 8, !tbaa !15
  %61 = icmp eq i32 %60, 5
  br i1 %61, label %62, label %.invoke

62:                                               ; preds = %58
  %63 = getelementptr inbounds i8, ptr %23, i64 8
  %64 = load ptr, ptr %63, align 8, !tbaa !16
  %65 = load i32, ptr %64, align 4, !tbaa !17
  store i32 %65, ptr %12, align 4, !tbaa !35
  br label %66

66:                                               ; preds = %62, %56
  %67 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.26) #11
  %.not95 = icmp eq i32 %67, 0
  br i1 %.not95, label %68, label %76

68:                                               ; preds = %66
  %69 = getelementptr inbounds i8, ptr %23, i64 16
  %70 = load i32, ptr %69, align 8, !tbaa !15
  %71 = icmp eq i32 %70, 5
  br i1 %71, label %72, label %.invoke

72:                                               ; preds = %68
  %73 = getelementptr inbounds i8, ptr %23, i64 8
  %74 = load ptr, ptr %73, align 8, !tbaa !16
  %75 = load i32, ptr %74, align 4, !tbaa !17
  store i32 %75, ptr %13, align 8, !tbaa !36
  br label %76

76:                                               ; preds = %72, %66
  %77 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.27) #11
  %.not96 = icmp eq i32 %77, 0
  br i1 %.not96, label %78, label %86

78:                                               ; preds = %76
  %79 = getelementptr inbounds i8, ptr %23, i64 16
  %80 = load i32, ptr %79, align 8, !tbaa !15
  %81 = icmp eq i32 %80, 5
  br i1 %81, label %82, label %.invoke

82:                                               ; preds = %78
  %83 = getelementptr inbounds i8, ptr %23, i64 8
  %84 = load ptr, ptr %83, align 8, !tbaa !16
  %85 = load i32, ptr %84, align 4, !tbaa !17
  store i32 %85, ptr %14, align 4, !tbaa !37
  br label %86

86:                                               ; preds = %82, %76
  %87 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.28) #11
  %.not97 = icmp eq i32 %87, 0
  br i1 %.not97, label %88, label %96

88:                                               ; preds = %86
  %89 = getelementptr inbounds i8, ptr %23, i64 16
  %90 = load i32, ptr %89, align 8, !tbaa !15
  %91 = icmp eq i32 %90, 5
  br i1 %91, label %92, label %.invoke

92:                                               ; preds = %88
  %93 = getelementptr inbounds i8, ptr %23, i64 8
  %94 = load ptr, ptr %93, align 8, !tbaa !16
  %95 = load i32, ptr %94, align 4, !tbaa !17
  store i32 %95, ptr %15, align 8, !tbaa !38
  br label %96

96:                                               ; preds = %92, %86
  %97 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.29) #11
  %.not98 = icmp eq i32 %97, 0
  br i1 %.not98, label %98, label %106

98:                                               ; preds = %96
  %99 = getelementptr inbounds i8, ptr %23, i64 16
  %100 = load i32, ptr %99, align 8, !tbaa !15
  %101 = icmp eq i32 %100, 1
  br i1 %101, label %102, label %.invoke

102:                                              ; preds = %98
  %103 = getelementptr inbounds i8, ptr %23, i64 8
  %104 = load ptr, ptr %103, align 8, !tbaa !16
  %105 = load float, ptr %104, align 4, !tbaa !39
  store float %105, ptr %16, align 4, !tbaa !40
  br label %106

106:                                              ; preds = %102, %96
  %107 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.30) #11
  %.not99 = icmp eq i32 %107, 0
  br i1 %.not99, label %108, label %116

108:                                              ; preds = %106
  %109 = getelementptr inbounds i8, ptr %23, i64 16
  %110 = load i32, ptr %109, align 8, !tbaa !15
  %111 = icmp eq i32 %110, 1
  br i1 %111, label %112, label %.invoke

112:                                              ; preds = %108
  %113 = getelementptr inbounds i8, ptr %23, i64 8
  %114 = load ptr, ptr %113, align 8, !tbaa !16
  %115 = load float, ptr %114, align 4, !tbaa !39
  store float %115, ptr %17, align 8, !tbaa !41
  br label %116

116:                                              ; preds = %112, %106
  %117 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.31) #11
  %.not100 = icmp eq i32 %117, 0
  br i1 %.not100, label %118, label %126

118:                                              ; preds = %116
  %119 = getelementptr inbounds i8, ptr %23, i64 16
  %120 = load i32, ptr %119, align 8, !tbaa !15
  %121 = icmp eq i32 %120, 1
  br i1 %121, label %122, label %.invoke

122:                                              ; preds = %118
  %123 = getelementptr inbounds i8, ptr %23, i64 8
  %124 = load ptr, ptr %123, align 8, !tbaa !16
  %125 = load float, ptr %124, align 4, !tbaa !39
  store float %125, ptr %18, align 4, !tbaa !42
  br label %126

126:                                              ; preds = %122, %116
  %127 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.32) #11
  %.not101 = icmp eq i32 %127, 0
  br i1 %.not101, label %128, label %.loopexit106

128:                                              ; preds = %126
  %129 = getelementptr inbounds i8, ptr %23, i64 16
  %130 = load i32, ptr %129, align 8, !tbaa !15
  %131 = icmp eq i32 %130, 1
  br i1 %131, label %132, label %.invoke

132:                                              ; preds = %128
  %133 = load i32, ptr %14, align 4, !tbaa !37
  %134 = sext i32 %133 to i64
  invoke void @_ZNSt6vectorIfSaIfEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %134)
          to label %135 unwind label %.loopexit107

135:                                              ; preds = %132
  %136 = load i32, ptr %14, align 4, !tbaa !37
  %137 = icmp sgt i32 %136, 0
  br i1 %137, label %.lr.ph.preheader, label %.loopexit106

.lr.ph.preheader:                                 ; preds = %135
  %138 = getelementptr inbounds i8, ptr %23, i64 8
  %139 = load ptr, ptr %138, align 8, !tbaa !16
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %140
  %.085109 = phi i32 [ %142, %140 ], [ 0, %.lr.ph.preheader ]
  %.086108 = phi ptr [ %141, %140 ], [ %139, %.lr.ph.preheader ]
  invoke void @_ZNSt6vectorIfSaIfEE9push_backERKf(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 4 dereferenceable(4) %.086108)
          to label %140 unwind label %145

140:                                              ; preds = %.lr.ph
  %141 = getelementptr inbounds i8, ptr %.086108, i64 4
  %142 = add nuw nsw i32 %.085109, 1
  %143 = load i32, ptr %14, align 4, !tbaa !37
  %144 = icmp slt i32 %142, %143
  br i1 %144, label %.lr.ph, label %.loopexit106, !llvm.loop !43

145:                                              ; preds = %.lr.ph
  %146 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %183

.loopexit106:                                     ; preds = %140, %135, %126
  %147 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.33) #11
  %.not102 = icmp eq i32 %147, 0
  br i1 %.not102, label %148, label %.loopexit

148:                                              ; preds = %.loopexit106
  %149 = getelementptr inbounds i8, ptr %23, i64 16
  %150 = load i32, ptr %149, align 8, !tbaa !15
  %151 = icmp eq i32 %150, 1
  br i1 %151, label %152, label %.invoke

152:                                              ; preds = %148
  %153 = load i32, ptr %15, align 8, !tbaa !38
  %154 = sext i32 %153 to i64
  invoke void @_ZNSt6vectorIfSaIfEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %154)
          to label %155 unwind label %.loopexit107

155:                                              ; preds = %152
  %156 = load i32, ptr %15, align 8, !tbaa !38
  %157 = icmp sgt i32 %156, 0
  br i1 %157, label %.lr.ph112.preheader, label %.loopexit

.lr.ph112.preheader:                              ; preds = %155
  %158 = getelementptr inbounds i8, ptr %23, i64 8
  %159 = load ptr, ptr %158, align 8, !tbaa !16
  br label %.lr.ph112

.lr.ph112:                                        ; preds = %.lr.ph112.preheader, %160
  %.083111 = phi i32 [ %162, %160 ], [ 0, %.lr.ph112.preheader ]
  %.084110 = phi ptr [ %161, %160 ], [ %159, %.lr.ph112.preheader ]
  invoke void @_ZNSt6vectorIfSaIfEE9push_backERKf(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 4 dereferenceable(4) %.084110)
          to label %160 unwind label %165

160:                                              ; preds = %.lr.ph112
  %161 = getelementptr inbounds i8, ptr %.084110, i64 4
  %162 = add nuw nsw i32 %.083111, 1
  %163 = load i32, ptr %15, align 8, !tbaa !38
  %164 = icmp slt i32 %162, %163
  br i1 %164, label %.lr.ph112, label %.loopexit, !llvm.loop !45

165:                                              ; preds = %.lr.ph112
  %166 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %183

.loopexit:                                        ; preds = %160, %155, %.loopexit106
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %22, !llvm.loop !46

167:                                              ; preds = %._crit_edge
  %168 = getelementptr inbounds i8, ptr %0, i64 40
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %4, ptr noundef nonnull align 8 dereferenceable(40) %168, i64 40, i1 false), !tbaa.struct !47
  %169 = getelementptr inbounds i8, ptr %0, i64 80
  %170 = tail call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %169) #13
  %171 = getelementptr inbounds i8, ptr %0, i64 104
  %172 = tail call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %171) #13
  invoke void @_ZN8nvinfer16plugin11RPROIPluginC1ENS0_11RPROIParamsEPKfS4_(ptr noundef nonnull align 8 dereferenceable(148) %21, ptr noundef nonnull byval(%"struct.nvinfer1::plugin::RPROIParams") align 8 %4, ptr noundef %170, ptr noundef %172)
          to label %173 unwind label %181

173:                                              ; preds = %167
  %174 = getelementptr inbounds i8, ptr %0, i64 8
  %175 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %174) #13
  %176 = load ptr, ptr %21, align 8, !tbaa !48
  %177 = getelementptr inbounds i8, ptr %176, i64 120
  %178 = load ptr, ptr %177, align 8
  tail call void %178(ptr noundef nonnull align 8 dereferenceable(148) %21, ptr noundef %175) #13
  br label %189

179:                                              ; preds = %._crit_edge
  %180 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %183

181:                                              ; preds = %167
  %182 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  tail call void @_ZdlPvm(ptr noundef nonnull %21, i64 noundef 152) #14
  br label %183

183:                                              ; preds = %.loopexit107, %.loopexit.split-lp, %179, %181, %145, %165
  %.pn103.pn = phi { ptr, i32 } [ %166, %165 ], [ %146, %145 ], [ %182, %181 ], [ %180, %179 ], [ %lpad.loopexit, %.loopexit107 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  %.2 = extractvalue { ptr, i32 } %.pn103.pn, 1
  %.290 = extractvalue { ptr, i32 } %.pn103.pn, 0
  %184 = tail call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9exception) #13
  %185 = icmp eq i32 %.2, %184
  br i1 %185, label %186, label %193

186:                                              ; preds = %183
  %187 = tail call ptr @__cxa_begin_catch(ptr %.290) #13
  invoke void @_ZN8nvinfer16plugin11caughtErrorERKSt9exception(ptr noundef nonnull align 8 dereferenceable(8) %187)
          to label %188 unwind label %190

188:                                              ; preds = %186
  invoke void @__cxa_end_catch()
          to label %189 unwind label %190

189:                                              ; preds = %188, %173
  %.0 = phi ptr [ %21, %173 ], [ null, %188 ]
  ret ptr %.0

190:                                              ; preds = %188, %186
  %191 = landingpad { ptr, i32 }
          catch ptr null
  %192 = extractvalue { ptr, i32 } %191, 0
  tail call void @__clang_call_terminate(ptr %192) #15
  unreachable

193:                                              ; preds = %183
  tail call void @__clang_call_terminate(ptr %.290) #15
  unreachable
}

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

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

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

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

declare void @_ZN8nvinfer16plugin11RPROIPluginC1ENS0_11RPROIParamsEPKfS4_(ptr, ptr, ptr, ptr) local_unnamed_addr

attributes #0 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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 = { 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 #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 = { 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 = { nofree nosync nounwind memory(none) }
attributes #7 = { 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 #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 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { builtin allocsize(0) }
attributes #11 = { nounwind willreturn memory(read) }
attributes #12 = { noreturn }
attributes #13 = { nounwind }
attributes #14 = { builtin nounwind }
attributes #15 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 8}
!6 = !{!"_ZTSN8nvinfer121PluginFieldCollectionE", !7, i64 0, !10, i64 8}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!6, !7, i64 0}
!12 = !{!13, !10, i64 0}
!13 = !{!"_ZTSN8nvinfer111PluginFieldE", !10, i64 0, !10, i64 8, !14, i64 16, !7, i64 20}
!14 = !{!"_ZTSN8nvinfer115PluginFieldTypeE", !8, i64 0}
!15 = !{!13, !14, i64 16}
!16 = !{!13, !10, i64 8}
!17 = !{!7, !7, i64 0}
!18 = !{!19, !7, i64 40}
!19 = !{!"_ZTSN8nvinfer16plugin18RPROIPluginCreatorE", !20, i64 0, !27, i64 40, !29, i64 80, !29, i64 104}
!20 = !{!"_ZTSN8nvinfer114pluginInternal11BaseCreatorE", !21, i64 0, !24, i64 8}
!21 = !{!"_ZTSN8nvinfer15v_1_014IPluginCreatorE", !22, i64 0}
!22 = !{!"_ZTSN8nvinfer15v_1_023IPluginCreatorInterfaceE", !23, i64 0}
!23 = !{!"_ZTSN8nvinfer119IVersionedInterfaceE"}
!24 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !25, i64 0, !26, i64 8, !8, i64 16}
!25 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !10, i64 0}
!26 = !{!"long", !8, i64 0}
!27 = !{!"_ZTSN8nvinfer16plugin11RPROIParamsE", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !28, i64 28, !28, i64 32, !28, i64 36}
!28 = !{!"float", !8, i64 0}
!29 = !{!"_ZTSSt6vectorIfSaIfEE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseIfSaIfEE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!33 = !{!19, !7, i64 44}
!34 = !{!19, !7, i64 48}
!35 = !{!19, !7, i64 52}
!36 = !{!19, !7, i64 56}
!37 = !{!19, !7, i64 60}
!38 = !{!19, !7, i64 64}
!39 = !{!28, !28, i64 0}
!40 = !{!19, !28, i64 68}
!41 = !{!19, !28, i64 72}
!42 = !{!19, !28, i64 76}
!43 = distinct !{!43, !44}
!44 = !{!"llvm.loop.mustprogress"}
!45 = distinct !{!45, !44}
!46 = distinct !{!46, !44}
!47 = !{i64 0, i64 4, !17, i64 4, i64 4, !17, i64 8, i64 4, !17, i64 12, i64 4, !17, i64 16, i64 4, !17, i64 20, i64 4, !17, i64 24, i64 4, !17, i64 28, i64 4, !39, i64 32, i64 4, !39, i64 36, i64 4, !39}
!48 = !{!49, !49, i64 0}
!49 = !{!"vtable pointer", !9, i64 0}


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