; LLVM IR from huawei-noah/bolt :: model_tools/src (model_data_type_converter)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::set" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<DataType, DataType, std::_Identity<DataType>, std::less<DataType>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<DataType, DataType, std::_Identity<DataType>, std::less<DataType>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::map" = type { %"class.std::_Rb_tree.9" }
%"class.std::_Rb_tree.9" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, DataType>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, DataType>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, DataType>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, DataType>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::allocator.6" = type { i8 }
%"struct.std::_Rb_tree_iterator" = type { ptr }
%struct.ModelSpec = type { i32, i32, [128 x i8], i32, i32, ptr, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, ptr }
%struct.TensorDesc = type { i32, i32, i32, [20 x i32] }
%struct.OperatorSpec = type <{ [128 x i8], i32, i32, ptr, i32, [4 x i8], ptr, ptr, i32, [4 x i8], ptr, %union.ParameterSpec, [4 x i8] }>
%union.ParameterSpec = type { %struct.MultiHeadAttentionParamSpec }
%struct.MultiHeadAttentionParamSpec = type { [6 x %struct.FullyConnectedParamSpec], %struct.PowerParamSpec, [2 x i8], i32, [4 x %struct.ReshapeParamSpec], [2 x %struct.EltwiseParamSpec] }
%struct.FullyConnectedParamSpec = type { i32, i32, [32 x i32] }
%struct.PowerParamSpec = type { float, float, float }
%struct.ReshapeParamSpec = type { [8 x i32], i32, i32, i32 }
%struct.EltwiseParamSpec = type { i32, %struct.EltwiseSumSpec, i32, %union.ActivationSpec }
%struct.EltwiseSumSpec = type { [8 x float], i32 }
%union.ActivationSpec = type { %struct.ClipParamSpec }
%struct.ClipParamSpec = type { float, float }
%struct.QuantSpec = type { i32, ptr }
%struct.SharedWeightParamSpec = type { %struct.TensorDesc }
%struct.ConstantOfShapeParamSpec = type { i32, float }
%struct.PreAllocatedMemoryParamSpec = type { %struct.TensorDesc, float }
%struct.CastParamSpec = type { i32 }
%struct.RandomParamSpec = type { i32, i32, [2 x float], float, [8 x i32], i32 }
%struct.WeightSpec = type { [128 x i8], i32, i32, ptr, i32, ptr, i32, ptr }
%struct.OperatorRelationshipMapEntry = type { [128 x i8], i32, ptr, i32, ptr }

@_ZL10quantTypes = external hidden global %"class.std::set", align 8
@_ZL12noQuantTypes = external hidden global %"class.std::set", align 8
@.str = external hidden unnamed_addr constant [20 x i8], align 1
@stdout = external global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [89 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_Z25ws_datatype_converter_bnnPhS_i(ptr noundef, ptr noundef, i32 noundef) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z26ws_datatype_converter_int8PhS_iPf(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z26ws_datatype_converter_int4PhS_iPf(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_Z17quantizationErrorP9ModelSpecNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef, ptr noundef) #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_Z7bytesOf8DataType(i32 noundef) #3

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_Z21ms_datatype_converterP9ModelSpecS0_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) #2 personality ptr @__gxx_personality_v0 {
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca ptr, align 8
  %27 = alloca %"class.std::map", align 8
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::allocator.6", align 1
  %37 = alloca i32, align 4
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca i32, align 4
  %52 = alloca ptr, align 8
  %53 = alloca float, align 4
  %54 = alloca ptr, align 8
  %55 = alloca float, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.std::allocator.6", align 1
  %63 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  %65 = alloca %"class.std::allocator.6", align 1
  %66 = alloca i32, align 4
  %67 = alloca %"class.std::__cxx11::basic_string", align 8
  %68 = alloca i32, align 4
  %69 = alloca %"class.std::__cxx11::basic_string", align 8
  %70 = alloca %"class.std::allocator.6", align 1
  %71 = alloca float, align 4
  %72 = alloca %"class.std::__cxx11::basic_string", align 8
  %73 = alloca %"class.std::allocator.6", align 1
  %74 = alloca i32, align 4
  %75 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca %"class.std::allocator.6", align 1
  %78 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %79 = alloca %"class.std::__cxx11::basic_string", align 8
  %80 = alloca %"class.std::allocator.6", align 1
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca i32, align 4
  %85 = alloca i32, align 4
  %86 = alloca %"class.std::__cxx11::basic_string", align 8
  %87 = alloca i32, align 4
  %88 = alloca float, align 4
  %89 = alloca float, align 4
  %90 = alloca i32, align 4
  %91 = alloca i32, align 4
  %92 = alloca %"class.std::__cxx11::basic_string", align 8
  %93 = alloca %"class.std::allocator.6", align 1
  %94 = alloca i32, align 4
  %95 = alloca i32, align 4
  %96 = alloca i32, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  %97 = load ptr, ptr %7, align 8, !tbaa !5
  %98 = getelementptr inbounds %struct.ModelSpec, ptr %97, i32 0, i32 2
  %99 = getelementptr inbounds [128 x i8], ptr %98, i64 0, i64 0
  %100 = load ptr, ptr %6, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.ModelSpec, ptr %100, i32 0, i32 2
  %102 = getelementptr inbounds [128 x i8], ptr %101, i64 0, i64 0
  %103 = call noundef i32 @_Z8str_copyPcPKcii(ptr noundef %99, ptr noundef %102, i32 noundef 128, i32 noundef 128)
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(32) %2)
  %104 = invoke noundef i32 @_Z17getTargetDataTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8DataType(ptr noundef %13, ptr noundef %11)
          to label %105 unwind label %120

105:                                              ; preds = %4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #10
  store i32 %104, ptr %12, align 4, !tbaa !9
  %106 = load i32, ptr %12, align 4, !tbaa !9
  %107 = icmp ne i32 %106, 0
  br i1 %107, label %108, label %124

108:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #10
  %109 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %110 = trunc i64 %109 to i32
  store i32 %110, ptr %16, align 4, !tbaa !11
  %111 = load i32, ptr %16, align 4, !tbaa !11
  %112 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %111)
  %113 = load ptr, ptr @stdout, align 8, !tbaa !5
  %114 = call i32 @fflush(ptr noundef %113)
  %115 = load i32, ptr %12, align 4, !tbaa !9
  %116 = call ptr @ee2str(i32 noundef %115)
  %117 = call i32 (ptr, ...) @printf(ptr noundef @.str.2, ptr noundef %116)
  %118 = load ptr, ptr @stdout, align 8, !tbaa !5
  %119 = call i32 @fflush(ptr noundef %118)
  call void @exit(i32 noundef 1) #11
  unreachable

120:                                              ; preds = %4
  %121 = landingpad { ptr, i32 }
          cleanup
  %122 = extractvalue { ptr, i32 } %121, 0
  store ptr %122, ptr %14, align 8
  %123 = extractvalue { ptr, i32 } %121, 1
  store i32 %123, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #10
  br label %2494

124:                                              ; preds = %105
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(32) %3)
  %125 = invoke noundef i32 @_Z17getTargetDataTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8DataType(ptr noundef %18, ptr noundef %10)
          to label %126 unwind label %141

126:                                              ; preds = %124
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #10
  store i32 %125, ptr %17, align 4, !tbaa !9
  %127 = load i32, ptr %17, align 4, !tbaa !9
  %128 = icmp ne i32 %127, 0
  br i1 %128, label %129, label %145

129:                                              ; preds = %126
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #10
  %130 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %131 = trunc i64 %130 to i32
  store i32 %131, ptr %19, align 4, !tbaa !11
  %132 = load i32, ptr %19, align 4, !tbaa !11
  %133 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %132)
  %134 = load ptr, ptr @stdout, align 8, !tbaa !5
  %135 = call i32 @fflush(ptr noundef %134)
  %136 = load i32, ptr %17, align 4, !tbaa !9
  %137 = call ptr @ee2str(i32 noundef %136)
  %138 = call i32 (ptr, ...) @printf(ptr noundef @.str.2, ptr noundef %137)
  %139 = load ptr, ptr @stdout, align 8, !tbaa !5
  %140 = call i32 @fflush(ptr noundef %139)
  call void @exit(i32 noundef 1) #11
  unreachable

141:                                              ; preds = %124
  %142 = landingpad { ptr, i32 }
          cleanup
  %143 = extractvalue { ptr, i32 } %142, 0
  store ptr %143, ptr %14, align 8
  %144 = extractvalue { ptr, i32 } %142, 1
  store i32 %144, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #10
  br label %2494

145:                                              ; preds = %126
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #10
  %146 = load i32, ptr %11, align 4, !tbaa !13
  %147 = load ptr, ptr %7, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.ModelSpec, ptr %147, i32 0, i32 3
  store i32 %146, ptr %148, align 8, !tbaa !15
  %149 = load ptr, ptr %6, align 8, !tbaa !5
  %150 = getelementptr inbounds %struct.ModelSpec, ptr %149, i32 0, i32 4
  %151 = load i32, ptr %150, align 4, !tbaa !17
  %152 = load ptr, ptr %7, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.ModelSpec, ptr %152, i32 0, i32 4
  store i32 %151, ptr %153, align 4, !tbaa !17
  %154 = load ptr, ptr %7, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.ModelSpec, ptr %154, i32 0, i32 4
  %156 = load i32, ptr %155, align 4, !tbaa !17
  %157 = sext i32 %156 to i64
  %158 = mul i64 %157, 8
  %159 = trunc i64 %158 to i32
  %160 = call noundef ptr @_Z9mt_mallocj(i32 noundef %159)
  %161 = load ptr, ptr %7, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.ModelSpec, ptr %161, i32 0, i32 5
  store ptr %160, ptr %162, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #10
  store i32 0, ptr %20, align 4, !tbaa !11
  br label %163

163:                                              ; preds = %193, %145
  %164 = load i32, ptr %20, align 4, !tbaa !11
  %165 = load ptr, ptr %7, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct.ModelSpec, ptr %165, i32 0, i32 4
  %167 = load i32, ptr %166, align 4, !tbaa !17
  %168 = icmp slt i32 %164, %167
  br i1 %168, label %170, label %169

169:                                              ; preds = %163
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #10
  br label %196

170:                                              ; preds = %163
  %171 = call noundef ptr @_Z9mt_mallocj(i32 noundef 128)
  %172 = load ptr, ptr %7, align 8, !tbaa !5
  %173 = getelementptr inbounds %struct.ModelSpec, ptr %172, i32 0, i32 5
  %174 = load ptr, ptr %173, align 8, !tbaa !18
  %175 = load i32, ptr %20, align 4, !tbaa !11
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds ptr, ptr %174, i64 %176
  store ptr %171, ptr %177, align 8, !tbaa !5
  %178 = load ptr, ptr %7, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.ModelSpec, ptr %178, i32 0, i32 5
  %180 = load ptr, ptr %179, align 8, !tbaa !18
  %181 = load i32, ptr %20, align 4, !tbaa !11
  %182 = sext i32 %181 to i64
  %183 = getelementptr inbounds ptr, ptr %180, i64 %182
  %184 = load ptr, ptr %183, align 8, !tbaa !5
  %185 = load ptr, ptr %6, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.ModelSpec, ptr %185, i32 0, i32 5
  %187 = load ptr, ptr %186, align 8, !tbaa !18
  %188 = load i32, ptr %20, align 4, !tbaa !11
  %189 = sext i32 %188 to i64
  %190 = getelementptr inbounds ptr, ptr %187, i64 %189
  %191 = load ptr, ptr %190, align 8, !tbaa !5
  %192 = call noundef i32 @_Z8str_copyPcPKcii(ptr noundef %184, ptr noundef %191, i32 noundef 128, i32 noundef 128)
  br label %193

193:                                              ; preds = %170
  %194 = load i32, ptr %20, align 4, !tbaa !11
  %195 = add nsw i32 %194, 1
  store i32 %195, ptr %20, align 4, !tbaa !11
  br label %163, !llvm.loop !19

196:                                              ; preds = %169
  %197 = load ptr, ptr %7, align 8, !tbaa !5
  %198 = getelementptr inbounds %struct.ModelSpec, ptr %197, i32 0, i32 4
  %199 = load i32, ptr %198, align 4, !tbaa !17
  %200 = sext i32 %199 to i64
  %201 = mul i64 %200, 92
  %202 = trunc i64 %201 to i32
  %203 = call noundef ptr @_Z9mt_mallocj(i32 noundef %202)
  %204 = load ptr, ptr %7, align 8, !tbaa !5
  %205 = getelementptr inbounds %struct.ModelSpec, ptr %204, i32 0, i32 6
  store ptr %203, ptr %205, align 8, !tbaa !21
  %206 = load ptr, ptr %7, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.ModelSpec, ptr %206, i32 0, i32 6
  %208 = load ptr, ptr %207, align 8, !tbaa !21
  %209 = load ptr, ptr %6, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.ModelSpec, ptr %209, i32 0, i32 6
  %211 = load ptr, ptr %210, align 8, !tbaa !21
  %212 = load ptr, ptr %7, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.ModelSpec, ptr %212, i32 0, i32 4
  %214 = load i32, ptr %213, align 4, !tbaa !17
  %215 = sext i32 %214 to i64
  %216 = mul i64 %215, 92
  call void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %208, ptr noundef %211, i64 noundef %216)
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #10
  store i32 0, ptr %21, align 4, !tbaa !11
  br label %217

217:                                              ; preds = %253, %196
  %218 = load i32, ptr %21, align 4, !tbaa !11
  %219 = load ptr, ptr %7, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.ModelSpec, ptr %219, i32 0, i32 4
  %221 = load i32, ptr %220, align 4, !tbaa !17
  %222 = icmp slt i32 %218, %221
  br i1 %222, label %224, label %223

223:                                              ; preds = %217
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #10
  br label %256

224:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %2)
  %225 = load ptr, ptr %7, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.ModelSpec, ptr %225, i32 0, i32 6
  %227 = load ptr, ptr %226, align 8, !tbaa !21
  %228 = load i32, ptr %21, align 4, !tbaa !11
  %229 = sext i32 %228 to i64
  %230 = getelementptr inbounds %struct.TensorDesc, ptr %227, i64 %229
  %231 = getelementptr inbounds %struct.TensorDesc, ptr %230, i32 0, i32 0
  %232 = invoke noundef i32 @_Z18getNoquantDataTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8DataType(ptr noundef %23, ptr noundef %231)
          to label %233 unwind label %248

233:                                              ; preds = %224
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #10
  store i32 %232, ptr %22, align 4, !tbaa !9
  %234 = load i32, ptr %22, align 4, !tbaa !9
  %235 = icmp ne i32 %234, 0
  br i1 %235, label %236, label %252

236:                                              ; preds = %233
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #10
  %237 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %238 = trunc i64 %237 to i32
  store i32 %238, ptr %24, align 4, !tbaa !11
  %239 = load i32, ptr %24, align 4, !tbaa !11
  %240 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %239)
  %241 = load ptr, ptr @stdout, align 8, !tbaa !5
  %242 = call i32 @fflush(ptr noundef %241)
  %243 = load i32, ptr %22, align 4, !tbaa !9
  %244 = call ptr @ee2str(i32 noundef %243)
  %245 = call i32 (ptr, ...) @printf(ptr noundef @.str.2, ptr noundef %244)
  %246 = load ptr, ptr @stdout, align 8, !tbaa !5
  %247 = call i32 @fflush(ptr noundef %246)
  call void @exit(i32 noundef 1) #11
  unreachable

248:                                              ; preds = %224
  %249 = landingpad { ptr, i32 }
          cleanup
  %250 = extractvalue { ptr, i32 } %249, 0
  store ptr %250, ptr %14, align 8
  %251 = extractvalue { ptr, i32 } %249, 1
  store i32 %251, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #10
  br label %2494

252:                                              ; preds = %233
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #10
  br label %253

253:                                              ; preds = %252
  %254 = load i32, ptr %21, align 4, !tbaa !11
  %255 = add nsw i32 %254, 1
  store i32 %255, ptr %21, align 4, !tbaa !11
  br label %217, !llvm.loop !22

256:                                              ; preds = %223
  %257 = load ptr, ptr %6, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.ModelSpec, ptr %257, i32 0, i32 7
  %259 = load i32, ptr %258, align 8, !tbaa !23
  %260 = load ptr, ptr %7, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.ModelSpec, ptr %260, i32 0, i32 7
  store i32 %259, ptr %261, align 8, !tbaa !23
  %262 = load ptr, ptr %7, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.ModelSpec, ptr %262, i32 0, i32 7
  %264 = load i32, ptr %263, align 8, !tbaa !23
  %265 = sext i32 %264 to i64
  %266 = mul i64 %265, 8
  %267 = trunc i64 %266 to i32
  %268 = call noundef ptr @_Z9mt_mallocj(i32 noundef %267)
  %269 = load ptr, ptr %7, align 8, !tbaa !5
  %270 = getelementptr inbounds %struct.ModelSpec, ptr %269, i32 0, i32 8
  store ptr %268, ptr %270, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #10
  store i32 0, ptr %25, align 4, !tbaa !11
  br label %271

271:                                              ; preds = %301, %256
  %272 = load i32, ptr %25, align 4, !tbaa !11
  %273 = load ptr, ptr %7, align 8, !tbaa !5
  %274 = getelementptr inbounds %struct.ModelSpec, ptr %273, i32 0, i32 7
  %275 = load i32, ptr %274, align 8, !tbaa !23
  %276 = icmp slt i32 %272, %275
  br i1 %276, label %278, label %277

277:                                              ; preds = %271
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  br label %304

278:                                              ; preds = %271
  %279 = call noundef ptr @_Z9mt_mallocj(i32 noundef 128)
  %280 = load ptr, ptr %7, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.ModelSpec, ptr %280, i32 0, i32 8
  %282 = load ptr, ptr %281, align 8, !tbaa !24
  %283 = load i32, ptr %25, align 4, !tbaa !11
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds ptr, ptr %282, i64 %284
  store ptr %279, ptr %285, align 8, !tbaa !5
  %286 = load ptr, ptr %7, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.ModelSpec, ptr %286, i32 0, i32 8
  %288 = load ptr, ptr %287, align 8, !tbaa !24
  %289 = load i32, ptr %25, align 4, !tbaa !11
  %290 = sext i32 %289 to i64
  %291 = getelementptr inbounds ptr, ptr %288, i64 %290
  %292 = load ptr, ptr %291, align 8, !tbaa !5
  %293 = load ptr, ptr %6, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.ModelSpec, ptr %293, i32 0, i32 8
  %295 = load ptr, ptr %294, align 8, !tbaa !24
  %296 = load i32, ptr %25, align 4, !tbaa !11
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds ptr, ptr %295, i64 %297
  %299 = load ptr, ptr %298, align 8, !tbaa !5
  %300 = call noundef i32 @_Z8str_copyPcPKcii(ptr noundef %292, ptr noundef %299, i32 noundef 128, i32 noundef 128)
  br label %301

301:                                              ; preds = %278
  %302 = load i32, ptr %25, align 4, !tbaa !11
  %303 = add nsw i32 %302, 1
  store i32 %303, ptr %25, align 4, !tbaa !11
  br label %271, !llvm.loop !25

304:                                              ; preds = %277
  %305 = load ptr, ptr %6, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.ModelSpec, ptr %305, i32 0, i32 9
  %307 = load i32, ptr %306, align 8, !tbaa !26
  %308 = load ptr, ptr %7, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.ModelSpec, ptr %308, i32 0, i32 9
  store i32 %307, ptr %309, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #10
  %310 = load ptr, ptr %7, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.ModelSpec, ptr %310, i32 0, i32 9
  %312 = load i32, ptr %311, align 8, !tbaa !26
  %313 = sext i32 %312 to i64
  %314 = mul i64 %313, 1304
  %315 = trunc i64 %314 to i32
  %316 = call noundef ptr @_Z9mt_mallocj(i32 noundef %315)
  store ptr %316, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 48, ptr %27) #10
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeSt4lessIS5_ESaISt4pairIKS5_S6_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %27) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #10
  store i32 0, ptr %28, align 4, !tbaa !11
  br label %317

317:                                              ; preds = %998, %304
  %318 = load i32, ptr %28, align 4, !tbaa !11
  %319 = load ptr, ptr %7, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.ModelSpec, ptr %319, i32 0, i32 9
  %321 = load i32, ptr %320, align 8, !tbaa !26
  %322 = icmp slt i32 %318, %321
  br i1 %322, label %324, label %323

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

324:                                              ; preds = %317
  %325 = load ptr, ptr %26, align 8, !tbaa !5
  %326 = load i32, ptr %28, align 4, !tbaa !11
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds %struct.OperatorSpec, ptr %325, i64 %327
  %329 = getelementptr inbounds %struct.OperatorSpec, ptr %328, i32 0, i32 0
  %330 = getelementptr inbounds [128 x i8], ptr %329, i64 0, i64 0
  %331 = load ptr, ptr %6, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.ModelSpec, ptr %331, i32 0, i32 10
  %333 = load ptr, ptr %332, align 8, !tbaa !27
  %334 = load i32, ptr %28, align 4, !tbaa !11
  %335 = sext i32 %334 to i64
  %336 = getelementptr inbounds %struct.OperatorSpec, ptr %333, i64 %335
  %337 = getelementptr inbounds %struct.OperatorSpec, ptr %336, i32 0, i32 0
  %338 = getelementptr inbounds [128 x i8], ptr %337, i64 0, i64 0
  %339 = invoke noundef i32 @_Z8str_copyPcPKcii(ptr noundef %330, ptr noundef %338, i32 noundef 128, i32 noundef 128)
          to label %340 unwind label %393

340:                                              ; preds = %324
  %341 = load ptr, ptr %6, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.ModelSpec, ptr %341, i32 0, i32 10
  %343 = load ptr, ptr %342, align 8, !tbaa !27
  %344 = load i32, ptr %28, align 4, !tbaa !11
  %345 = sext i32 %344 to i64
  %346 = getelementptr inbounds %struct.OperatorSpec, ptr %343, i64 %345
  %347 = getelementptr inbounds %struct.OperatorSpec, ptr %346, i32 0, i32 1
  %348 = load i32, ptr %347, align 8, !tbaa !28
  %349 = load ptr, ptr %26, align 8, !tbaa !5
  %350 = load i32, ptr %28, align 4, !tbaa !11
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds %struct.OperatorSpec, ptr %349, i64 %351
  %353 = getelementptr inbounds %struct.OperatorSpec, ptr %352, i32 0, i32 1
  store i32 %348, ptr %353, align 8, !tbaa !28
  %354 = load ptr, ptr %6, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.ModelSpec, ptr %354, i32 0, i32 10
  %356 = load ptr, ptr %355, align 8, !tbaa !27
  %357 = load i32, ptr %28, align 4, !tbaa !11
  %358 = sext i32 %357 to i64
  %359 = getelementptr inbounds %struct.OperatorSpec, ptr %356, i64 %358
  %360 = getelementptr inbounds %struct.OperatorSpec, ptr %359, i32 0, i32 2
  %361 = load i32, ptr %360, align 4, !tbaa !31
  %362 = load ptr, ptr %26, align 8, !tbaa !5
  %363 = load i32, ptr %28, align 4, !tbaa !11
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds %struct.OperatorSpec, ptr %362, i64 %364
  %366 = getelementptr inbounds %struct.OperatorSpec, ptr %365, i32 0, i32 2
  store i32 %361, ptr %366, align 4, !tbaa !31
  %367 = load ptr, ptr %26, align 8, !tbaa !5
  %368 = load i32, ptr %28, align 4, !tbaa !11
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds %struct.OperatorSpec, ptr %367, i64 %369
  %371 = getelementptr inbounds %struct.OperatorSpec, ptr %370, i32 0, i32 2
  %372 = load i32, ptr %371, align 4, !tbaa !31
  %373 = zext i32 %372 to i64
  %374 = mul i64 %373, 8
  %375 = trunc i64 %374 to i32
  %376 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef %375)
          to label %377 unwind label %393

377:                                              ; preds = %340
  %378 = load ptr, ptr %26, align 8, !tbaa !5
  %379 = load i32, ptr %28, align 4, !tbaa !11
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds %struct.OperatorSpec, ptr %378, i64 %380
  %382 = getelementptr inbounds %struct.OperatorSpec, ptr %381, i32 0, i32 3
  store ptr %376, ptr %382, align 8, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #10
  store i32 0, ptr %30, align 4, !tbaa !11
  br label %383

383:                                              ; preds = %432, %377
  %384 = load i32, ptr %30, align 4, !tbaa !11
  %385 = load ptr, ptr %26, align 8, !tbaa !5
  %386 = load i32, ptr %28, align 4, !tbaa !11
  %387 = sext i32 %386 to i64
  %388 = getelementptr inbounds %struct.OperatorSpec, ptr %385, i64 %387
  %389 = getelementptr inbounds %struct.OperatorSpec, ptr %388, i32 0, i32 2
  %390 = load i32, ptr %389, align 4, !tbaa !31
  %391 = icmp ult i32 %384, %390
  br i1 %391, label %397, label %392

392:                                              ; preds = %383
  store i32 14, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #10
  br label %439

393:                                              ; preds = %620, %439, %340, %324
  %394 = landingpad { ptr, i32 }
          cleanup
  %395 = extractvalue { ptr, i32 } %394, 0
  store ptr %395, ptr %14, align 8
  %396 = extractvalue { ptr, i32 } %394, 1
  store i32 %396, ptr %15, align 4
  br label %1001

397:                                              ; preds = %383
  %398 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef 128)
          to label %399 unwind label %435

399:                                              ; preds = %397
  %400 = load ptr, ptr %26, align 8, !tbaa !5
  %401 = load i32, ptr %28, align 4, !tbaa !11
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds %struct.OperatorSpec, ptr %400, i64 %402
  %404 = getelementptr inbounds %struct.OperatorSpec, ptr %403, i32 0, i32 3
  %405 = load ptr, ptr %404, align 8, !tbaa !32
  %406 = load i32, ptr %30, align 4, !tbaa !11
  %407 = zext i32 %406 to i64
  %408 = getelementptr inbounds ptr, ptr %405, i64 %407
  store ptr %398, ptr %408, align 8, !tbaa !5
  %409 = load ptr, ptr %26, align 8, !tbaa !5
  %410 = load i32, ptr %28, align 4, !tbaa !11
  %411 = sext i32 %410 to i64
  %412 = getelementptr inbounds %struct.OperatorSpec, ptr %409, i64 %411
  %413 = getelementptr inbounds %struct.OperatorSpec, ptr %412, i32 0, i32 3
  %414 = load ptr, ptr %413, align 8, !tbaa !32
  %415 = load i32, ptr %30, align 4, !tbaa !11
  %416 = zext i32 %415 to i64
  %417 = getelementptr inbounds ptr, ptr %414, i64 %416
  %418 = load ptr, ptr %417, align 8, !tbaa !5
  %419 = load ptr, ptr %6, align 8, !tbaa !5
  %420 = getelementptr inbounds %struct.ModelSpec, ptr %419, i32 0, i32 10
  %421 = load ptr, ptr %420, align 8, !tbaa !27
  %422 = load i32, ptr %28, align 4, !tbaa !11
  %423 = sext i32 %422 to i64
  %424 = getelementptr inbounds %struct.OperatorSpec, ptr %421, i64 %423
  %425 = getelementptr inbounds %struct.OperatorSpec, ptr %424, i32 0, i32 3
  %426 = load ptr, ptr %425, align 8, !tbaa !32
  %427 = load i32, ptr %30, align 4, !tbaa !11
  %428 = zext i32 %427 to i64
  %429 = getelementptr inbounds ptr, ptr %426, i64 %428
  %430 = load ptr, ptr %429, align 8, !tbaa !5
  invoke void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %418, ptr noundef %430, i64 noundef 128)
          to label %431 unwind label %435

431:                                              ; preds = %399
  br label %432

432:                                              ; preds = %431
  %433 = load i32, ptr %30, align 4, !tbaa !11
  %434 = add i32 %433, 1
  store i32 %434, ptr %30, align 4, !tbaa !11
  br label %383, !llvm.loop !33

435:                                              ; preds = %399, %397
  %436 = landingpad { ptr, i32 }
          cleanup
  %437 = extractvalue { ptr, i32 } %436, 0
  store ptr %437, ptr %14, align 8
  %438 = extractvalue { ptr, i32 } %436, 1
  store i32 %438, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #10
  br label %1001

439:                                              ; preds = %392
  %440 = load ptr, ptr %6, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct.ModelSpec, ptr %440, i32 0, i32 10
  %442 = load ptr, ptr %441, align 8, !tbaa !27
  %443 = load i32, ptr %28, align 4, !tbaa !11
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds %struct.OperatorSpec, ptr %442, i64 %444
  %446 = getelementptr inbounds %struct.OperatorSpec, ptr %445, i32 0, i32 4
  %447 = load i32, ptr %446, align 8, !tbaa !34
  %448 = load ptr, ptr %26, align 8, !tbaa !5
  %449 = load i32, ptr %28, align 4, !tbaa !11
  %450 = sext i32 %449 to i64
  %451 = getelementptr inbounds %struct.OperatorSpec, ptr %448, i64 %450
  %452 = getelementptr inbounds %struct.OperatorSpec, ptr %451, i32 0, i32 4
  store i32 %447, ptr %452, align 8, !tbaa !34
  %453 = load ptr, ptr %26, align 8, !tbaa !5
  %454 = load i32, ptr %28, align 4, !tbaa !11
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds %struct.OperatorSpec, ptr %453, i64 %455
  %457 = getelementptr inbounds %struct.OperatorSpec, ptr %456, i32 0, i32 4
  %458 = load i32, ptr %457, align 8, !tbaa !34
  %459 = zext i32 %458 to i64
  %460 = mul i64 %459, 8
  %461 = trunc i64 %460 to i32
  %462 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef %461)
          to label %463 unwind label %393

463:                                              ; preds = %439
  %464 = load ptr, ptr %26, align 8, !tbaa !5
  %465 = load i32, ptr %28, align 4, !tbaa !11
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds %struct.OperatorSpec, ptr %464, i64 %466
  %468 = getelementptr inbounds %struct.OperatorSpec, ptr %467, i32 0, i32 6
  store ptr %462, ptr %468, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #10
  store i32 0, ptr %31, align 4, !tbaa !11
  br label %469

469:                                              ; preds = %514, %463
  %470 = load i32, ptr %31, align 4, !tbaa !11
  %471 = load ptr, ptr %26, align 8, !tbaa !5
  %472 = load i32, ptr %28, align 4, !tbaa !11
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds %struct.OperatorSpec, ptr %471, i64 %473
  %475 = getelementptr inbounds %struct.OperatorSpec, ptr %474, i32 0, i32 4
  %476 = load i32, ptr %475, align 8, !tbaa !34
  %477 = icmp ult i32 %470, %476
  br i1 %477, label %479, label %478

478:                                              ; preds = %469
  store i32 17, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #10
  br label %521

479:                                              ; preds = %469
  %480 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef 128)
          to label %481 unwind label %517

481:                                              ; preds = %479
  %482 = load ptr, ptr %26, align 8, !tbaa !5
  %483 = load i32, ptr %28, align 4, !tbaa !11
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds %struct.OperatorSpec, ptr %482, i64 %484
  %486 = getelementptr inbounds %struct.OperatorSpec, ptr %485, i32 0, i32 6
  %487 = load ptr, ptr %486, align 8, !tbaa !35
  %488 = load i32, ptr %31, align 4, !tbaa !11
  %489 = zext i32 %488 to i64
  %490 = getelementptr inbounds ptr, ptr %487, i64 %489
  store ptr %480, ptr %490, align 8, !tbaa !5
  %491 = load ptr, ptr %26, align 8, !tbaa !5
  %492 = load i32, ptr %28, align 4, !tbaa !11
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds %struct.OperatorSpec, ptr %491, i64 %493
  %495 = getelementptr inbounds %struct.OperatorSpec, ptr %494, i32 0, i32 6
  %496 = load ptr, ptr %495, align 8, !tbaa !35
  %497 = load i32, ptr %31, align 4, !tbaa !11
  %498 = zext i32 %497 to i64
  %499 = getelementptr inbounds ptr, ptr %496, i64 %498
  %500 = load ptr, ptr %499, align 8, !tbaa !5
  %501 = load ptr, ptr %6, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.ModelSpec, ptr %501, i32 0, i32 10
  %503 = load ptr, ptr %502, align 8, !tbaa !27
  %504 = load i32, ptr %28, align 4, !tbaa !11
  %505 = sext i32 %504 to i64
  %506 = getelementptr inbounds %struct.OperatorSpec, ptr %503, i64 %505
  %507 = getelementptr inbounds %struct.OperatorSpec, ptr %506, i32 0, i32 6
  %508 = load ptr, ptr %507, align 8, !tbaa !35
  %509 = load i32, ptr %31, align 4, !tbaa !11
  %510 = zext i32 %509 to i64
  %511 = getelementptr inbounds ptr, ptr %508, i64 %510
  %512 = load ptr, ptr %511, align 8, !tbaa !5
  invoke void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %500, ptr noundef %512, i64 noundef 128)
          to label %513 unwind label %517

513:                                              ; preds = %481
  br label %514

514:                                              ; preds = %513
  %515 = load i32, ptr %31, align 4, !tbaa !11
  %516 = add i32 %515, 1
  store i32 %516, ptr %31, align 4, !tbaa !11
  br label %469, !llvm.loop !36

517:                                              ; preds = %481, %479
  %518 = landingpad { ptr, i32 }
          cleanup
  %519 = extractvalue { ptr, i32 } %518, 0
  store ptr %519, ptr %14, align 8
  %520 = extractvalue { ptr, i32 } %518, 1
  store i32 %520, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #10
  br label %1001

521:                                              ; preds = %478
  %522 = load ptr, ptr %26, align 8, !tbaa !5
  %523 = load i32, ptr %28, align 4, !tbaa !11
  %524 = sext i32 %523 to i64
  %525 = getelementptr inbounds %struct.OperatorSpec, ptr %522, i64 %524
  %526 = getelementptr inbounds %struct.OperatorSpec, ptr %525, i32 0, i32 1
  %527 = load i32, ptr %526, align 8, !tbaa !28
  %528 = icmp ne i32 0, %527
  br i1 %528, label %529, label %587

529:                                              ; preds = %521
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #10
  %530 = load ptr, ptr %26, align 8, !tbaa !5
  %531 = load i32, ptr %28, align 4, !tbaa !11
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds %struct.OperatorSpec, ptr %530, i64 %532
  %534 = getelementptr inbounds %struct.OperatorSpec, ptr %533, i32 0, i32 2
  %535 = load i32, ptr %534, align 4, !tbaa !31
  %536 = load ptr, ptr %26, align 8, !tbaa !5
  %537 = load i32, ptr %28, align 4, !tbaa !11
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds %struct.OperatorSpec, ptr %536, i64 %538
  %540 = getelementptr inbounds %struct.OperatorSpec, ptr %539, i32 0, i32 4
  %541 = load i32, ptr %540, align 8, !tbaa !34
  %542 = add i32 %535, %541
  store i32 %542, ptr %32, align 4, !tbaa !11
  %543 = load i32, ptr %32, align 4, !tbaa !11
  %544 = zext i32 %543 to i64
  %545 = mul i64 %544, 4
  %546 = trunc i64 %545 to i32
  %547 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef %546)
          to label %548 unwind label %582

548:                                              ; preds = %529
  %549 = load ptr, ptr %26, align 8, !tbaa !5
  %550 = load i32, ptr %28, align 4, !tbaa !11
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds %struct.OperatorSpec, ptr %549, i64 %551
  %553 = getelementptr inbounds %struct.OperatorSpec, ptr %552, i32 0, i32 7
  store ptr %547, ptr %553, align 8, !tbaa !37
  %554 = load ptr, ptr %6, align 8, !tbaa !5
  %555 = getelementptr inbounds %struct.ModelSpec, ptr %554, i32 0, i32 10
  %556 = load ptr, ptr %555, align 8, !tbaa !27
  %557 = load i32, ptr %28, align 4, !tbaa !11
  %558 = sext i32 %557 to i64
  %559 = getelementptr inbounds %struct.OperatorSpec, ptr %556, i64 %558
  %560 = getelementptr inbounds %struct.OperatorSpec, ptr %559, i32 0, i32 7
  %561 = load ptr, ptr %560, align 8, !tbaa !37
  %562 = icmp ne ptr %561, null
  br i1 %562, label %563, label %586

563:                                              ; preds = %548
  %564 = load ptr, ptr %26, align 8, !tbaa !5
  %565 = load i32, ptr %28, align 4, !tbaa !11
  %566 = sext i32 %565 to i64
  %567 = getelementptr inbounds %struct.OperatorSpec, ptr %564, i64 %566
  %568 = getelementptr inbounds %struct.OperatorSpec, ptr %567, i32 0, i32 7
  %569 = load ptr, ptr %568, align 8, !tbaa !37
  %570 = load ptr, ptr %6, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.ModelSpec, ptr %570, i32 0, i32 10
  %572 = load ptr, ptr %571, align 8, !tbaa !27
  %573 = load i32, ptr %28, align 4, !tbaa !11
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds %struct.OperatorSpec, ptr %572, i64 %574
  %576 = getelementptr inbounds %struct.OperatorSpec, ptr %575, i32 0, i32 7
  %577 = load ptr, ptr %576, align 8, !tbaa !37
  %578 = load i32, ptr %32, align 4, !tbaa !11
  %579 = zext i32 %578 to i64
  %580 = mul i64 %579, 4
  invoke void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %569, ptr noundef %577, i64 noundef %580)
          to label %581 unwind label %582

581:                                              ; preds = %563
  br label %586

582:                                              ; preds = %563, %529
  %583 = landingpad { ptr, i32 }
          cleanup
  %584 = extractvalue { ptr, i32 } %583, 0
  store ptr %584, ptr %14, align 8
  %585 = extractvalue { ptr, i32 } %583, 1
  store i32 %585, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #10
  br label %1001

586:                                              ; preds = %581, %548
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #10
  br label %593

587:                                              ; preds = %521
  %588 = load ptr, ptr %26, align 8, !tbaa !5
  %589 = load i32, ptr %28, align 4, !tbaa !11
  %590 = sext i32 %589 to i64
  %591 = getelementptr inbounds %struct.OperatorSpec, ptr %588, i64 %590
  %592 = getelementptr inbounds %struct.OperatorSpec, ptr %591, i32 0, i32 7
  store ptr null, ptr %592, align 8, !tbaa !37
  br label %593

593:                                              ; preds = %587, %586
  %594 = load ptr, ptr %6, align 8, !tbaa !5
  %595 = getelementptr inbounds %struct.ModelSpec, ptr %594, i32 0, i32 10
  %596 = load ptr, ptr %595, align 8, !tbaa !27
  %597 = load i32, ptr %28, align 4, !tbaa !11
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds %struct.OperatorSpec, ptr %596, i64 %598
  %600 = getelementptr inbounds %struct.OperatorSpec, ptr %599, i32 0, i32 8
  %601 = load i32, ptr %600, align 8, !tbaa !38
  %602 = load ptr, ptr %26, align 8, !tbaa !5
  %603 = load i32, ptr %28, align 4, !tbaa !11
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds %struct.OperatorSpec, ptr %602, i64 %604
  %606 = getelementptr inbounds %struct.OperatorSpec, ptr %605, i32 0, i32 8
  store i32 %601, ptr %606, align 8, !tbaa !38
  %607 = load ptr, ptr %26, align 8, !tbaa !5
  %608 = load i32, ptr %28, align 4, !tbaa !11
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds %struct.OperatorSpec, ptr %607, i64 %609
  %611 = getelementptr inbounds %struct.OperatorSpec, ptr %610, i32 0, i32 8
  %612 = load i32, ptr %611, align 8, !tbaa !38
  %613 = icmp eq i32 0, %612
  br i1 %613, label %614, label %620

614:                                              ; preds = %593
  %615 = load ptr, ptr %26, align 8, !tbaa !5
  %616 = load i32, ptr %28, align 4, !tbaa !11
  %617 = sext i32 %616 to i64
  %618 = getelementptr inbounds %struct.OperatorSpec, ptr %615, i64 %617
  %619 = getelementptr inbounds %struct.OperatorSpec, ptr %618, i32 0, i32 10
  store ptr null, ptr %619, align 8, !tbaa !39
  br label %734

620:                                              ; preds = %593
  %621 = load ptr, ptr %26, align 8, !tbaa !5
  %622 = load i32, ptr %28, align 4, !tbaa !11
  %623 = sext i32 %622 to i64
  %624 = getelementptr inbounds %struct.OperatorSpec, ptr %621, i64 %623
  %625 = getelementptr inbounds %struct.OperatorSpec, ptr %624, i32 0, i32 8
  %626 = load i32, ptr %625, align 8, !tbaa !38
  %627 = zext i32 %626 to i64
  %628 = mul i64 %627, 16
  %629 = trunc i64 %628 to i32
  %630 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef %629)
          to label %631 unwind label %393

631:                                              ; preds = %620
  %632 = load ptr, ptr %26, align 8, !tbaa !5
  %633 = load i32, ptr %28, align 4, !tbaa !11
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds %struct.OperatorSpec, ptr %632, i64 %634
  %636 = getelementptr inbounds %struct.OperatorSpec, ptr %635, i32 0, i32 10
  store ptr %630, ptr %636, align 8, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #10
  store i32 0, ptr %33, align 4, !tbaa !11
  br label %637

637:                                              ; preds = %726, %631
  %638 = load i32, ptr %33, align 4, !tbaa !11
  %639 = load ptr, ptr %26, align 8, !tbaa !5
  %640 = load i32, ptr %28, align 4, !tbaa !11
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds %struct.OperatorSpec, ptr %639, i64 %641
  %643 = getelementptr inbounds %struct.OperatorSpec, ptr %642, i32 0, i32 8
  %644 = load i32, ptr %643, align 8, !tbaa !38
  %645 = icmp ult i32 %638, %644
  br i1 %645, label %647, label %646

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

647:                                              ; preds = %637
  %648 = load ptr, ptr %6, align 8, !tbaa !5
  %649 = getelementptr inbounds %struct.ModelSpec, ptr %648, i32 0, i32 10
  %650 = load ptr, ptr %649, align 8, !tbaa !27
  %651 = load i32, ptr %28, align 4, !tbaa !11
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds %struct.OperatorSpec, ptr %650, i64 %652
  %654 = getelementptr inbounds %struct.OperatorSpec, ptr %653, i32 0, i32 10
  %655 = load ptr, ptr %654, align 8, !tbaa !39
  %656 = load i32, ptr %33, align 4, !tbaa !11
  %657 = zext i32 %656 to i64
  %658 = getelementptr inbounds %struct.QuantSpec, ptr %655, i64 %657
  %659 = getelementptr inbounds %struct.QuantSpec, ptr %658, i32 0, i32 0
  %660 = load i32, ptr %659, align 8, !tbaa !40
  %661 = load ptr, ptr %26, align 8, !tbaa !5
  %662 = load i32, ptr %28, align 4, !tbaa !11
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds %struct.OperatorSpec, ptr %661, i64 %663
  %665 = getelementptr inbounds %struct.OperatorSpec, ptr %664, i32 0, i32 10
  %666 = load ptr, ptr %665, align 8, !tbaa !39
  %667 = load i32, ptr %33, align 4, !tbaa !11
  %668 = zext i32 %667 to i64
  %669 = getelementptr inbounds %struct.QuantSpec, ptr %666, i64 %668
  %670 = getelementptr inbounds %struct.QuantSpec, ptr %669, i32 0, i32 0
  store i32 %660, ptr %670, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #10
  %671 = load ptr, ptr %26, align 8, !tbaa !5
  %672 = load i32, ptr %28, align 4, !tbaa !11
  %673 = sext i32 %672 to i64
  %674 = getelementptr inbounds %struct.OperatorSpec, ptr %671, i64 %673
  %675 = getelementptr inbounds %struct.OperatorSpec, ptr %674, i32 0, i32 10
  %676 = load ptr, ptr %675, align 8, !tbaa !39
  %677 = load i32, ptr %33, align 4, !tbaa !11
  %678 = zext i32 %677 to i64
  %679 = getelementptr inbounds %struct.QuantSpec, ptr %676, i64 %678
  %680 = getelementptr inbounds %struct.QuantSpec, ptr %679, i32 0, i32 0
  %681 = load i32, ptr %680, align 8, !tbaa !40
  store i32 %681, ptr %34, align 4, !tbaa !11
  %682 = load i32, ptr %34, align 4, !tbaa !11
  %683 = sext i32 %682 to i64
  %684 = mul i64 %683, 4
  %685 = trunc i64 %684 to i32
  %686 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef %685)
          to label %687 unwind label %729

687:                                              ; preds = %647
  %688 = load ptr, ptr %26, align 8, !tbaa !5
  %689 = load i32, ptr %28, align 4, !tbaa !11
  %690 = sext i32 %689 to i64
  %691 = getelementptr inbounds %struct.OperatorSpec, ptr %688, i64 %690
  %692 = getelementptr inbounds %struct.OperatorSpec, ptr %691, i32 0, i32 10
  %693 = load ptr, ptr %692, align 8, !tbaa !39
  %694 = load i32, ptr %33, align 4, !tbaa !11
  %695 = zext i32 %694 to i64
  %696 = getelementptr inbounds %struct.QuantSpec, ptr %693, i64 %695
  %697 = getelementptr inbounds %struct.QuantSpec, ptr %696, i32 0, i32 1
  store ptr %686, ptr %697, align 8, !tbaa !42
  %698 = load ptr, ptr %26, align 8, !tbaa !5
  %699 = load i32, ptr %28, align 4, !tbaa !11
  %700 = sext i32 %699 to i64
  %701 = getelementptr inbounds %struct.OperatorSpec, ptr %698, i64 %700
  %702 = getelementptr inbounds %struct.OperatorSpec, ptr %701, i32 0, i32 10
  %703 = load ptr, ptr %702, align 8, !tbaa !39
  %704 = load i32, ptr %33, align 4, !tbaa !11
  %705 = zext i32 %704 to i64
  %706 = getelementptr inbounds %struct.QuantSpec, ptr %703, i64 %705
  %707 = getelementptr inbounds %struct.QuantSpec, ptr %706, i32 0, i32 1
  %708 = load ptr, ptr %707, align 8, !tbaa !42
  %709 = load ptr, ptr %6, align 8, !tbaa !5
  %710 = getelementptr inbounds %struct.ModelSpec, ptr %709, i32 0, i32 10
  %711 = load ptr, ptr %710, align 8, !tbaa !27
  %712 = load i32, ptr %28, align 4, !tbaa !11
  %713 = sext i32 %712 to i64
  %714 = getelementptr inbounds %struct.OperatorSpec, ptr %711, i64 %713
  %715 = getelementptr inbounds %struct.OperatorSpec, ptr %714, i32 0, i32 10
  %716 = load ptr, ptr %715, align 8, !tbaa !39
  %717 = load i32, ptr %33, align 4, !tbaa !11
  %718 = zext i32 %717 to i64
  %719 = getelementptr inbounds %struct.QuantSpec, ptr %716, i64 %718
  %720 = getelementptr inbounds %struct.QuantSpec, ptr %719, i32 0, i32 1
  %721 = load ptr, ptr %720, align 8, !tbaa !42
  %722 = load i32, ptr %34, align 4, !tbaa !11
  %723 = sext i32 %722 to i64
  %724 = mul i64 %723, 4
  invoke void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %708, ptr noundef %721, i64 noundef %724)
          to label %725 unwind label %729

725:                                              ; preds = %687
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #10
  br label %726

726:                                              ; preds = %725
  %727 = load i32, ptr %33, align 4, !tbaa !11
  %728 = add i32 %727, 1
  store i32 %728, ptr %33, align 4, !tbaa !11
  br label %637, !llvm.loop !43

729:                                              ; preds = %687, %647
  %730 = landingpad { ptr, i32 }
          cleanup
  %731 = extractvalue { ptr, i32 } %730, 0
  store ptr %731, ptr %14, align 8
  %732 = extractvalue { ptr, i32 } %730, 1
  store i32 %732, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #10
  br label %1001

733:                                              ; preds = %646
  br label %734

734:                                              ; preds = %733, %614
  %735 = load ptr, ptr %6, align 8, !tbaa !5
  %736 = getelementptr inbounds %struct.ModelSpec, ptr %735, i32 0, i32 10
  %737 = load ptr, ptr %736, align 8, !tbaa !27
  %738 = load i32, ptr %28, align 4, !tbaa !11
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds %struct.OperatorSpec, ptr %737, i64 %739
  %741 = getelementptr inbounds %struct.OperatorSpec, ptr %740, i32 0, i32 11
  %742 = load ptr, ptr %26, align 8, !tbaa !5
  %743 = load i32, ptr %28, align 4, !tbaa !11
  %744 = sext i32 %743 to i64
  %745 = getelementptr inbounds %struct.OperatorSpec, ptr %742, i64 %744
  %746 = getelementptr inbounds %struct.OperatorSpec, ptr %745, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %746, ptr align 8 %741, i64 1116, i1 false), !tbaa.struct !44
  %747 = load ptr, ptr %26, align 8, !tbaa !5
  %748 = load i32, ptr %28, align 4, !tbaa !11
  %749 = sext i32 %748 to i64
  %750 = getelementptr inbounds %struct.OperatorSpec, ptr %747, i64 %749
  %751 = getelementptr inbounds %struct.OperatorSpec, ptr %750, i32 0, i32 1
  %752 = load i32, ptr %751, align 8, !tbaa !28
  switch i32 %752, label %996 [
    i32 50, label %753
    i32 40, label %823
    i32 49, label %866
    i32 38, label %910
    i32 95, label %953
  ]

753:                                              ; preds = %734
  %754 = load ptr, ptr %26, align 8, !tbaa !5
  %755 = load i32, ptr %28, align 4, !tbaa !11
  %756 = sext i32 %755 to i64
  %757 = getelementptr inbounds %struct.OperatorSpec, ptr %754, i64 %756
  %758 = getelementptr inbounds %struct.OperatorSpec, ptr %757, i32 0, i32 11
  %759 = getelementptr inbounds %struct.SharedWeightParamSpec, ptr %758, i32 0, i32 0
  %760 = getelementptr inbounds %struct.TensorDesc, ptr %759, i32 0, i32 0
  %761 = load i32, ptr %760, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #10
  %762 = load ptr, ptr %26, align 8, !tbaa !5
  %763 = load i32, ptr %28, align 4, !tbaa !11
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds %struct.OperatorSpec, ptr %762, i64 %764
  %766 = getelementptr inbounds %struct.OperatorSpec, ptr %765, i32 0, i32 0
  %767 = getelementptr inbounds [128 x i8], ptr %766, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef %767, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %768 unwind label %800

768:                                              ; preds = %753
  %769 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeSt4lessIS5_ESaISt4pairIKS5_S6_EEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %27, ptr noundef nonnull align 8 dereferenceable(32) %35)
          to label %770 unwind label %804

770:                                              ; preds = %768
  store i32 %761, ptr %769, align 4, !tbaa !13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %771 unwind label %809

771:                                              ; preds = %770
  %772 = load ptr, ptr %26, align 8, !tbaa !5
  %773 = load i32, ptr %28, align 4, !tbaa !11
  %774 = sext i32 %773 to i64
  %775 = getelementptr inbounds %struct.OperatorSpec, ptr %772, i64 %774
  %776 = getelementptr inbounds %struct.OperatorSpec, ptr %775, i32 0, i32 11
  %777 = getelementptr inbounds %struct.SharedWeightParamSpec, ptr %776, i32 0, i32 0
  %778 = getelementptr inbounds %struct.TensorDesc, ptr %777, i32 0, i32 0
  %779 = invoke noundef i32 @_Z18getNoquantDataTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8DataType(ptr noundef %38, ptr noundef %778)
          to label %780 unwind label %813

780:                                              ; preds = %771
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #10
  store i32 %779, ptr %37, align 4, !tbaa !9
  %781 = load i32, ptr %37, align 4, !tbaa !9
  %782 = icmp ne i32 %781, 0
  br i1 %782, label %783, label %821

783:                                              ; preds = %780
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #10
  %784 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %785 = trunc i64 %784 to i32
  store i32 %785, ptr %39, align 4, !tbaa !11
  %786 = load i32, ptr %39, align 4, !tbaa !11
  %787 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %786)
          to label %788 unwind label %817

788:                                              ; preds = %783
  %789 = load ptr, ptr @stdout, align 8, !tbaa !5
  %790 = invoke i32 @fflush(ptr noundef %789)
          to label %791 unwind label %817

791:                                              ; preds = %788
  %792 = load i32, ptr %37, align 4, !tbaa !9
  %793 = invoke ptr @ee2str(i32 noundef %792)
          to label %794 unwind label %817

794:                                              ; preds = %791
  %795 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.2, ptr noundef %793)
          to label %796 unwind label %817

796:                                              ; preds = %794
  %797 = load ptr, ptr @stdout, align 8, !tbaa !5
  %798 = invoke i32 @fflush(ptr noundef %797)
          to label %799 unwind label %817

799:                                              ; preds = %796
  call void @exit(i32 noundef 1) #11
  unreachable

800:                                              ; preds = %753
  %801 = landingpad { ptr, i32 }
          cleanup
  %802 = extractvalue { ptr, i32 } %801, 0
  store ptr %802, ptr %14, align 8
  %803 = extractvalue { ptr, i32 } %801, 1
  store i32 %803, ptr %15, align 4
  br label %808

804:                                              ; preds = %768
  %805 = landingpad { ptr, i32 }
          cleanup
  %806 = extractvalue { ptr, i32 } %805, 0
  store ptr %806, ptr %14, align 8
  %807 = extractvalue { ptr, i32 } %805, 1
  store i32 %807, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #10
  br label %808

808:                                              ; preds = %804, %800
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #10
  br label %1001

809:                                              ; preds = %770
  %810 = landingpad { ptr, i32 }
          cleanup
  %811 = extractvalue { ptr, i32 } %810, 0
  store ptr %811, ptr %14, align 8
  %812 = extractvalue { ptr, i32 } %810, 1
  store i32 %812, ptr %15, align 4
  br label %822

813:                                              ; preds = %771
  %814 = landingpad { ptr, i32 }
          cleanup
  %815 = extractvalue { ptr, i32 } %814, 0
  store ptr %815, ptr %14, align 8
  %816 = extractvalue { ptr, i32 } %814, 1
  store i32 %816, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #10
  br label %822

817:                                              ; preds = %796, %794, %791, %788, %783
  %818 = landingpad { ptr, i32 }
          cleanup
  %819 = extractvalue { ptr, i32 } %818, 0
  store ptr %819, ptr %14, align 8
  %820 = extractvalue { ptr, i32 } %818, 1
  store i32 %820, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #10
  br label %822

821:                                              ; preds = %780
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #10
  br label %997

822:                                              ; preds = %817, %813, %809
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #10
  br label %1001

823:                                              ; preds = %734
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %824 unwind label %852

824:                                              ; preds = %823
  %825 = load ptr, ptr %26, align 8, !tbaa !5
  %826 = load i32, ptr %28, align 4, !tbaa !11
  %827 = sext i32 %826 to i64
  %828 = getelementptr inbounds %struct.OperatorSpec, ptr %825, i64 %827
  %829 = getelementptr inbounds %struct.OperatorSpec, ptr %828, i32 0, i32 11
  %830 = getelementptr inbounds %struct.ConstantOfShapeParamSpec, ptr %829, i32 0, i32 0
  %831 = invoke noundef i32 @_Z18getNoquantDataTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8DataType(ptr noundef %41, ptr noundef %830)
          to label %832 unwind label %856

832:                                              ; preds = %824
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #10
  store i32 %831, ptr %40, align 4, !tbaa !9
  %833 = load i32, ptr %40, align 4, !tbaa !9
  %834 = icmp ne i32 %833, 0
  br i1 %834, label %835, label %864

835:                                              ; preds = %832
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #10
  %836 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %837 = trunc i64 %836 to i32
  store i32 %837, ptr %42, align 4, !tbaa !11
  %838 = load i32, ptr %42, align 4, !tbaa !11
  %839 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %838)
          to label %840 unwind label %860

840:                                              ; preds = %835
  %841 = load ptr, ptr @stdout, align 8, !tbaa !5
  %842 = invoke i32 @fflush(ptr noundef %841)
          to label %843 unwind label %860

843:                                              ; preds = %840
  %844 = load i32, ptr %40, align 4, !tbaa !9
  %845 = invoke ptr @ee2str(i32 noundef %844)
          to label %846 unwind label %860

846:                                              ; preds = %843
  %847 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.2, ptr noundef %845)
          to label %848 unwind label %860

848:                                              ; preds = %846
  %849 = load ptr, ptr @stdout, align 8, !tbaa !5
  %850 = invoke i32 @fflush(ptr noundef %849)
          to label %851 unwind label %860

851:                                              ; preds = %848
  call void @exit(i32 noundef 1) #11
  unreachable

852:                                              ; preds = %823
  %853 = landingpad { ptr, i32 }
          cleanup
  %854 = extractvalue { ptr, i32 } %853, 0
  store ptr %854, ptr %14, align 8
  %855 = extractvalue { ptr, i32 } %853, 1
  store i32 %855, ptr %15, align 4
  br label %865

856:                                              ; preds = %824
  %857 = landingpad { ptr, i32 }
          cleanup
  %858 = extractvalue { ptr, i32 } %857, 0
  store ptr %858, ptr %14, align 8
  %859 = extractvalue { ptr, i32 } %857, 1
  store i32 %859, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #10
  br label %865

860:                                              ; preds = %848, %846, %843, %840, %835
  %861 = landingpad { ptr, i32 }
          cleanup
  %862 = extractvalue { ptr, i32 } %861, 0
  store ptr %862, ptr %14, align 8
  %863 = extractvalue { ptr, i32 } %861, 1
  store i32 %863, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #10
  br label %865

864:                                              ; preds = %832
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #10
  br label %997

865:                                              ; preds = %860, %856, %852
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #10
  br label %1001

866:                                              ; preds = %734
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %867 unwind label %896

867:                                              ; preds = %866
  %868 = load ptr, ptr %26, align 8, !tbaa !5
  %869 = load i32, ptr %28, align 4, !tbaa !11
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds %struct.OperatorSpec, ptr %868, i64 %870
  %872 = getelementptr inbounds %struct.OperatorSpec, ptr %871, i32 0, i32 11
  %873 = getelementptr inbounds %struct.PreAllocatedMemoryParamSpec, ptr %872, i32 0, i32 0
  %874 = getelementptr inbounds %struct.TensorDesc, ptr %873, i32 0, i32 0
  %875 = invoke noundef i32 @_Z18getNoquantDataTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8DataType(ptr noundef %44, ptr noundef %874)
          to label %876 unwind label %900

876:                                              ; preds = %867
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #10
  store i32 %875, ptr %43, align 4, !tbaa !9
  %877 = load i32, ptr %43, align 4, !tbaa !9
  %878 = icmp ne i32 %877, 0
  br i1 %878, label %879, label %908

879:                                              ; preds = %876
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #10
  %880 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %881 = trunc i64 %880 to i32
  store i32 %881, ptr %45, align 4, !tbaa !11
  %882 = load i32, ptr %45, align 4, !tbaa !11
  %883 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %882)
          to label %884 unwind label %904

884:                                              ; preds = %879
  %885 = load ptr, ptr @stdout, align 8, !tbaa !5
  %886 = invoke i32 @fflush(ptr noundef %885)
          to label %887 unwind label %904

887:                                              ; preds = %884
  %888 = load i32, ptr %43, align 4, !tbaa !9
  %889 = invoke ptr @ee2str(i32 noundef %888)
          to label %890 unwind label %904

890:                                              ; preds = %887
  %891 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.2, ptr noundef %889)
          to label %892 unwind label %904

892:                                              ; preds = %890
  %893 = load ptr, ptr @stdout, align 8, !tbaa !5
  %894 = invoke i32 @fflush(ptr noundef %893)
          to label %895 unwind label %904

895:                                              ; preds = %892
  call void @exit(i32 noundef 1) #11
  unreachable

896:                                              ; preds = %866
  %897 = landingpad { ptr, i32 }
          cleanup
  %898 = extractvalue { ptr, i32 } %897, 0
  store ptr %898, ptr %14, align 8
  %899 = extractvalue { ptr, i32 } %897, 1
  store i32 %899, ptr %15, align 4
  br label %909

900:                                              ; preds = %867
  %901 = landingpad { ptr, i32 }
          cleanup
  %902 = extractvalue { ptr, i32 } %901, 0
  store ptr %902, ptr %14, align 8
  %903 = extractvalue { ptr, i32 } %901, 1
  store i32 %903, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #10
  br label %909

904:                                              ; preds = %892, %890, %887, %884, %879
  %905 = landingpad { ptr, i32 }
          cleanup
  %906 = extractvalue { ptr, i32 } %905, 0
  store ptr %906, ptr %14, align 8
  %907 = extractvalue { ptr, i32 } %905, 1
  store i32 %907, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #10
  br label %909

908:                                              ; preds = %876
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #10
  br label %997

909:                                              ; preds = %904, %900, %896
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #10
  br label %1001

910:                                              ; preds = %734
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %911 unwind label %939

911:                                              ; preds = %910
  %912 = load ptr, ptr %26, align 8, !tbaa !5
  %913 = load i32, ptr %28, align 4, !tbaa !11
  %914 = sext i32 %913 to i64
  %915 = getelementptr inbounds %struct.OperatorSpec, ptr %912, i64 %914
  %916 = getelementptr inbounds %struct.OperatorSpec, ptr %915, i32 0, i32 11
  %917 = getelementptr inbounds %struct.CastParamSpec, ptr %916, i32 0, i32 0
  %918 = invoke noundef i32 @_Z18getNoquantDataTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8DataType(ptr noundef %47, ptr noundef %917)
          to label %919 unwind label %943

919:                                              ; preds = %911
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #10
  store i32 %918, ptr %46, align 4, !tbaa !9
  %920 = load i32, ptr %46, align 4, !tbaa !9
  %921 = icmp ne i32 %920, 0
  br i1 %921, label %922, label %951

922:                                              ; preds = %919
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #10
  %923 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %924 = trunc i64 %923 to i32
  store i32 %924, ptr %48, align 4, !tbaa !11
  %925 = load i32, ptr %48, align 4, !tbaa !11
  %926 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %925)
          to label %927 unwind label %947

927:                                              ; preds = %922
  %928 = load ptr, ptr @stdout, align 8, !tbaa !5
  %929 = invoke i32 @fflush(ptr noundef %928)
          to label %930 unwind label %947

930:                                              ; preds = %927
  %931 = load i32, ptr %46, align 4, !tbaa !9
  %932 = invoke ptr @ee2str(i32 noundef %931)
          to label %933 unwind label %947

933:                                              ; preds = %930
  %934 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.2, ptr noundef %932)
          to label %935 unwind label %947

935:                                              ; preds = %933
  %936 = load ptr, ptr @stdout, align 8, !tbaa !5
  %937 = invoke i32 @fflush(ptr noundef %936)
          to label %938 unwind label %947

938:                                              ; preds = %935
  call void @exit(i32 noundef 1) #11
  unreachable

939:                                              ; preds = %910
  %940 = landingpad { ptr, i32 }
          cleanup
  %941 = extractvalue { ptr, i32 } %940, 0
  store ptr %941, ptr %14, align 8
  %942 = extractvalue { ptr, i32 } %940, 1
  store i32 %942, ptr %15, align 4
  br label %952

943:                                              ; preds = %911
  %944 = landingpad { ptr, i32 }
          cleanup
  %945 = extractvalue { ptr, i32 } %944, 0
  store ptr %945, ptr %14, align 8
  %946 = extractvalue { ptr, i32 } %944, 1
  store i32 %946, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #10
  br label %952

947:                                              ; preds = %935, %933, %930, %927, %922
  %948 = landingpad { ptr, i32 }
          cleanup
  %949 = extractvalue { ptr, i32 } %948, 0
  store ptr %949, ptr %14, align 8
  %950 = extractvalue { ptr, i32 } %948, 1
  store i32 %950, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #10
  br label %952

951:                                              ; preds = %919
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #10
  br label %997

952:                                              ; preds = %947, %943, %939
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #10
  br label %1001

953:                                              ; preds = %734
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %954 unwind label %982

954:                                              ; preds = %953
  %955 = load ptr, ptr %26, align 8, !tbaa !5
  %956 = load i32, ptr %28, align 4, !tbaa !11
  %957 = sext i32 %956 to i64
  %958 = getelementptr inbounds %struct.OperatorSpec, ptr %955, i64 %957
  %959 = getelementptr inbounds %struct.OperatorSpec, ptr %958, i32 0, i32 11
  %960 = getelementptr inbounds %struct.RandomParamSpec, ptr %959, i32 0, i32 1
  %961 = invoke noundef i32 @_Z18getNoquantDataTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8DataType(ptr noundef %50, ptr noundef %960)
          to label %962 unwind label %986

962:                                              ; preds = %954
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #10
  store i32 %961, ptr %49, align 4, !tbaa !9
  %963 = load i32, ptr %49, align 4, !tbaa !9
  %964 = icmp ne i32 %963, 0
  br i1 %964, label %965, label %994

965:                                              ; preds = %962
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #10
  %966 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %967 = trunc i64 %966 to i32
  store i32 %967, ptr %51, align 4, !tbaa !11
  %968 = load i32, ptr %51, align 4, !tbaa !11
  %969 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %968)
          to label %970 unwind label %990

970:                                              ; preds = %965
  %971 = load ptr, ptr @stdout, align 8, !tbaa !5
  %972 = invoke i32 @fflush(ptr noundef %971)
          to label %973 unwind label %990

973:                                              ; preds = %970
  %974 = load i32, ptr %49, align 4, !tbaa !9
  %975 = invoke ptr @ee2str(i32 noundef %974)
          to label %976 unwind label %990

976:                                              ; preds = %973
  %977 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.2, ptr noundef %975)
          to label %978 unwind label %990

978:                                              ; preds = %976
  %979 = load ptr, ptr @stdout, align 8, !tbaa !5
  %980 = invoke i32 @fflush(ptr noundef %979)
          to label %981 unwind label %990

981:                                              ; preds = %978
  call void @exit(i32 noundef 1) #11
  unreachable

982:                                              ; preds = %953
  %983 = landingpad { ptr, i32 }
          cleanup
  %984 = extractvalue { ptr, i32 } %983, 0
  store ptr %984, ptr %14, align 8
  %985 = extractvalue { ptr, i32 } %983, 1
  store i32 %985, ptr %15, align 4
  br label %995

986:                                              ; preds = %954
  %987 = landingpad { ptr, i32 }
          cleanup
  %988 = extractvalue { ptr, i32 } %987, 0
  store ptr %988, ptr %14, align 8
  %989 = extractvalue { ptr, i32 } %987, 1
  store i32 %989, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #10
  br label %995

990:                                              ; preds = %978, %976, %973, %970, %965
  %991 = landingpad { ptr, i32 }
          cleanup
  %992 = extractvalue { ptr, i32 } %991, 0
  store ptr %992, ptr %14, align 8
  %993 = extractvalue { ptr, i32 } %991, 1
  store i32 %993, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #10
  br label %995

994:                                              ; preds = %962
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #10
  br label %997

995:                                              ; preds = %990, %986, %982
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #10
  br label %1001

996:                                              ; preds = %734
  br label %997

997:                                              ; preds = %996, %994, %951, %908, %864, %821
  br label %998

998:                                              ; preds = %997
  %999 = load i32, ptr %28, align 4, !tbaa !11
  %1000 = add nsw i32 %999, 1
  store i32 %1000, ptr %28, align 4, !tbaa !11
  br label %317, !llvm.loop !46

1001:                                             ; preds = %995, %952, %909, %865, %822, %808, %729, %582, %517, %435, %393
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #10
  br label %2493

1002:                                             ; preds = %323
  %1003 = load ptr, ptr %26, align 8, !tbaa !5
  %1004 = load ptr, ptr %7, align 8, !tbaa !5
  %1005 = getelementptr inbounds %struct.ModelSpec, ptr %1004, i32 0, i32 10
  store ptr %1003, ptr %1005, align 8, !tbaa !27
  %1006 = load ptr, ptr %6, align 8, !tbaa !5
  %1007 = getelementptr inbounds %struct.ModelSpec, ptr %1006, i32 0, i32 11
  %1008 = load i32, ptr %1007, align 8, !tbaa !47
  %1009 = load ptr, ptr %7, align 8, !tbaa !5
  %1010 = getelementptr inbounds %struct.ModelSpec, ptr %1009, i32 0, i32 11
  store i32 %1008, ptr %1010, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #10
  %1011 = load ptr, ptr %7, align 8, !tbaa !5
  %1012 = getelementptr inbounds %struct.ModelSpec, ptr %1011, i32 0, i32 11
  %1013 = load i32, ptr %1012, align 8, !tbaa !47
  %1014 = sext i32 %1013 to i64
  %1015 = mul i64 %1014, 176
  %1016 = trunc i64 %1015 to i32
  %1017 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef %1016)
          to label %1018 unwind label %1051

1018:                                             ; preds = %1002
  store ptr %1017, ptr %52, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #10
  store float 0.000000e+00, ptr %53, align 4, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #10
  %1019 = call ptr @getenv(ptr noundef @.str.3) #10
  store ptr %1019, ptr %54, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #10
  %1020 = load ptr, ptr %54, align 8, !tbaa !5
  %1021 = icmp ne ptr %1020, null
  br i1 %1021, label %1022, label %1025

1022:                                             ; preds = %1018
  %1023 = load ptr, ptr %54, align 8, !tbaa !5
  %1024 = call double @atof(ptr noundef %1023) #12
  br label %1026

1025:                                             ; preds = %1018
  br label %1026

1026:                                             ; preds = %1025, %1022
  %1027 = phi double [ %1024, %1022 ], [ 9.999900e+04, %1025 ]
  %1028 = fptrunc double %1027 to float
  store float %1028, ptr %55, align 4, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #10
  %1029 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %1030 = trunc i64 %1029 to i32
  store i32 %1030, ptr %56, align 4, !tbaa !11
  %1031 = load i32, ptr %56, align 4, !tbaa !11
  %1032 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.4, i32 noundef %1031)
          to label %1033 unwind label %1055

1033:                                             ; preds = %1026
  %1034 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1035 = invoke i32 @fflush(ptr noundef %1034)
          to label %1036 unwind label %1055

1036:                                             ; preds = %1033
  %1037 = load float, ptr %55, align 4, !tbaa !48
  %1038 = fpext float %1037 to double
  %1039 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.5, double noundef %1038)
          to label %1040 unwind label %1055

1040:                                             ; preds = %1036
  %1041 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1042 = invoke i32 @fflush(ptr noundef %1041)
          to label %1043 unwind label %1055

1043:                                             ; preds = %1040
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #10
  store i32 0, ptr %57, align 4, !tbaa !11
  br label %1044

1044:                                             ; preds = %2175, %1043
  %1045 = load i32, ptr %57, align 4, !tbaa !11
  %1046 = load ptr, ptr %7, align 8, !tbaa !5
  %1047 = getelementptr inbounds %struct.ModelSpec, ptr %1046, i32 0, i32 11
  %1048 = load i32, ptr %1047, align 8, !tbaa !47
  %1049 = icmp slt i32 %1045, %1048
  br i1 %1049, label %1059, label %1050

1050:                                             ; preds = %1044
  store i32 24, ptr %29, align 4
  br label %2180

1051:                                             ; preds = %1002
  %1052 = landingpad { ptr, i32 }
          cleanup
  %1053 = extractvalue { ptr, i32 } %1052, 0
  store ptr %1053, ptr %14, align 8
  %1054 = extractvalue { ptr, i32 } %1052, 1
  store i32 %1054, ptr %15, align 4
  br label %2492

1055:                                             ; preds = %1040, %1036, %1033, %1026
  %1056 = landingpad { ptr, i32 }
          cleanup
  %1057 = extractvalue { ptr, i32 } %1056, 0
  store ptr %1057, ptr %14, align 8
  %1058 = extractvalue { ptr, i32 } %1056, 1
  store i32 %1058, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #10
  br label %2491

1059:                                             ; preds = %1044
  %1060 = load ptr, ptr %52, align 8, !tbaa !5
  %1061 = load i32, ptr %57, align 4, !tbaa !11
  %1062 = sext i32 %1061 to i64
  %1063 = getelementptr inbounds %struct.WeightSpec, ptr %1060, i64 %1062
  %1064 = getelementptr inbounds %struct.WeightSpec, ptr %1063, i32 0, i32 0
  %1065 = getelementptr inbounds [128 x i8], ptr %1064, i64 0, i64 0
  %1066 = load ptr, ptr %6, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.ModelSpec, ptr %1066, i32 0, i32 12
  %1068 = load ptr, ptr %1067, align 8, !tbaa !50
  %1069 = load i32, ptr %57, align 4, !tbaa !11
  %1070 = sext i32 %1069 to i64
  %1071 = getelementptr inbounds %struct.WeightSpec, ptr %1068, i64 %1070
  %1072 = getelementptr inbounds %struct.WeightSpec, ptr %1071, i32 0, i32 0
  %1073 = getelementptr inbounds [128 x i8], ptr %1072, i64 0, i64 0
  %1074 = invoke noundef i32 @_Z8str_copyPcPKcii(ptr noundef %1065, ptr noundef %1073, i32 noundef 128, i32 noundef 128)
          to label %1075 unwind label %1136

1075:                                             ; preds = %1059
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #10
  store i32 0, ptr %58, align 4, !tbaa !11
  %1076 = load ptr, ptr %6, align 8, !tbaa !5
  %1077 = getelementptr inbounds %struct.ModelSpec, ptr %1076, i32 0, i32 12
  %1078 = load ptr, ptr %1077, align 8, !tbaa !50
  %1079 = load i32, ptr %57, align 4, !tbaa !11
  %1080 = sext i32 %1079 to i64
  %1081 = getelementptr inbounds %struct.WeightSpec, ptr %1078, i64 %1080
  %1082 = getelementptr inbounds %struct.WeightSpec, ptr %1081, i32 0, i32 1
  %1083 = load i32, ptr %1082, align 8, !tbaa !51
  %1084 = icmp eq i32 %1083, 7
  br i1 %1084, label %1095, label %1085

1085:                                             ; preds = %1075
  %1086 = load ptr, ptr %6, align 8, !tbaa !5
  %1087 = getelementptr inbounds %struct.ModelSpec, ptr %1086, i32 0, i32 12
  %1088 = load ptr, ptr %1087, align 8, !tbaa !50
  %1089 = load i32, ptr %57, align 4, !tbaa !11
  %1090 = sext i32 %1089 to i64
  %1091 = getelementptr inbounds %struct.WeightSpec, ptr %1088, i64 %1090
  %1092 = getelementptr inbounds %struct.WeightSpec, ptr %1091, i32 0, i32 1
  %1093 = load i32, ptr %1092, align 8, !tbaa !51
  %1094 = icmp eq i32 %1093, 8
  br i1 %1094, label %1095, label %1144

1095:                                             ; preds = %1085, %1075
  %1096 = load ptr, ptr %6, align 8, !tbaa !5
  %1097 = getelementptr inbounds %struct.ModelSpec, ptr %1096, i32 0, i32 12
  %1098 = load ptr, ptr %1097, align 8, !tbaa !50
  %1099 = load i32, ptr %57, align 4, !tbaa !11
  %1100 = sext i32 %1099 to i64
  %1101 = getelementptr inbounds %struct.WeightSpec, ptr %1098, i64 %1100
  %1102 = getelementptr inbounds %struct.WeightSpec, ptr %1101, i32 0, i32 1
  %1103 = load i32, ptr %1102, align 8, !tbaa !51
  %1104 = load ptr, ptr %52, align 8, !tbaa !5
  %1105 = load i32, ptr %57, align 4, !tbaa !11
  %1106 = sext i32 %1105 to i64
  %1107 = getelementptr inbounds %struct.WeightSpec, ptr %1104, i64 %1106
  %1108 = getelementptr inbounds %struct.WeightSpec, ptr %1107, i32 0, i32 1
  store i32 %1103, ptr %1108, align 8, !tbaa !51
  %1109 = load ptr, ptr %6, align 8, !tbaa !5
  %1110 = getelementptr inbounds %struct.ModelSpec, ptr %1109, i32 0, i32 12
  %1111 = load ptr, ptr %1110, align 8, !tbaa !50
  %1112 = load i32, ptr %57, align 4, !tbaa !11
  %1113 = sext i32 %1112 to i64
  %1114 = getelementptr inbounds %struct.WeightSpec, ptr %1111, i64 %1113
  %1115 = getelementptr inbounds %struct.WeightSpec, ptr %1114, i32 0, i32 2
  %1116 = load i32, ptr %1115, align 4, !tbaa !53
  %1117 = invoke noundef i32 @_Z7bytesOf8DataType(i32 noundef 6)
          to label %1118 unwind label %1140

1118:                                             ; preds = %1095
  %1119 = udiv i32 %1116, %1117
  store i32 %1119, ptr %58, align 4, !tbaa !11
  %1120 = load i32, ptr %58, align 4, !tbaa !11
  %1121 = load ptr, ptr %52, align 8, !tbaa !5
  %1122 = load i32, ptr %57, align 4, !tbaa !11
  %1123 = sext i32 %1122 to i64
  %1124 = getelementptr inbounds %struct.WeightSpec, ptr %1121, i64 %1123
  %1125 = getelementptr inbounds %struct.WeightSpec, ptr %1124, i32 0, i32 1
  %1126 = load i32, ptr %1125, align 8, !tbaa !51
  %1127 = invoke noundef i32 @_Z7bytesOf8DataType(i32 noundef %1126)
          to label %1128 unwind label %1140

1128:                                             ; preds = %1118
  %1129 = mul i32 %1120, %1127
  %1130 = udiv i32 %1129, 8
  %1131 = load ptr, ptr %52, align 8, !tbaa !5
  %1132 = load i32, ptr %57, align 4, !tbaa !11
  %1133 = sext i32 %1132 to i64
  %1134 = getelementptr inbounds %struct.WeightSpec, ptr %1131, i64 %1133
  %1135 = getelementptr inbounds %struct.WeightSpec, ptr %1134, i32 0, i32 2
  store i32 %1130, ptr %1135, align 4, !tbaa !53
  br label %1492

1136:                                             ; preds = %1059
  %1137 = landingpad { ptr, i32 }
          cleanup
  %1138 = extractvalue { ptr, i32 } %1137, 0
  store ptr %1138, ptr %14, align 8
  %1139 = extractvalue { ptr, i32 } %1137, 1
  store i32 %1139, ptr %15, align 4
  br label %2182

1140:                                             ; preds = %1532, %1492, %1118, %1095
  %1141 = landingpad { ptr, i32 }
          cleanup
  %1142 = extractvalue { ptr, i32 } %1141, 0
  store ptr %1142, ptr %14, align 8
  %1143 = extractvalue { ptr, i32 } %1141, 1
  store i32 %1143, ptr %15, align 4
  br label %2179

1144:                                             ; preds = %1085
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #10
  %1145 = load ptr, ptr %6, align 8, !tbaa !5
  %1146 = getelementptr inbounds %struct.ModelSpec, ptr %1145, i32 0, i32 12
  %1147 = load ptr, ptr %1146, align 8, !tbaa !50
  %1148 = load i32, ptr %57, align 4, !tbaa !11
  %1149 = sext i32 %1148 to i64
  %1150 = getelementptr inbounds %struct.WeightSpec, ptr %1147, i64 %1149
  %1151 = getelementptr inbounds %struct.WeightSpec, ptr %1150, i32 0, i32 1
  %1152 = load i32, ptr %1151, align 8, !tbaa !51
  store i32 %1152, ptr %59, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %61) #10
  %1153 = load ptr, ptr %52, align 8, !tbaa !5
  %1154 = load i32, ptr %57, align 4, !tbaa !11
  %1155 = sext i32 %1154 to i64
  %1156 = getelementptr inbounds %struct.WeightSpec, ptr %1153, i64 %1155
  %1157 = getelementptr inbounds %struct.WeightSpec, ptr %1156, i32 0, i32 0
  %1158 = getelementptr inbounds [128 x i8], ptr %1157, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef %1158, ptr noundef nonnull align 1 dereferenceable(1) %62)
          to label %1159 unwind label %1177

1159:                                             ; preds = %1144
  %1160 = invoke ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeSt4lessIS5_ESaISt4pairIKS5_S6_EEE4findERSA_(ptr noundef nonnull align 8 dereferenceable(48) %27, ptr noundef nonnull align 8 dereferenceable(32) %61)
          to label %1161 unwind label %1181

1161:                                             ; preds = %1159
  %1162 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %60, i32 0, i32 0
  store ptr %1160, ptr %1162, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #10
  %1163 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeSt4lessIS5_ESaISt4pairIKS5_S6_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %27) #10
  %1164 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %63, i32 0, i32 0
  store ptr %1163, ptr %1164, align 8
  %1165 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeEESC_(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull align 8 dereferenceable(8) %63) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #10
  br i1 %1165, label %1166, label %1195

1166:                                             ; preds = %1161
  call void @llvm.lifetime.start.p0(i64 32, ptr %64) #10
  %1167 = load ptr, ptr %52, align 8, !tbaa !5
  %1168 = load i32, ptr %57, align 4, !tbaa !11
  %1169 = sext i32 %1168 to i64
  %1170 = getelementptr inbounds %struct.WeightSpec, ptr %1167, i64 %1169
  %1171 = getelementptr inbounds %struct.WeightSpec, ptr %1170, i32 0, i32 0
  %1172 = getelementptr inbounds [128 x i8], ptr %1171, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef %1172, ptr noundef nonnull align 1 dereferenceable(1) %65)
          to label %1173 unwind label %1186

1173:                                             ; preds = %1166
  %1174 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeSt4lessIS5_ESaISt4pairIKS5_S6_EEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %27, ptr noundef nonnull align 8 dereferenceable(32) %64)
          to label %1175 unwind label %1190

1175:                                             ; preds = %1173
  %1176 = load i32, ptr %1174, align 4, !tbaa !13
  store i32 %1176, ptr %59, align 4, !tbaa !13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #10
  br label %1195

1177:                                             ; preds = %1144
  %1178 = landingpad { ptr, i32 }
          cleanup
  %1179 = extractvalue { ptr, i32 } %1178, 0
  store ptr %1179, ptr %14, align 8
  %1180 = extractvalue { ptr, i32 } %1178, 1
  store i32 %1180, ptr %15, align 4
  br label %1185

1181:                                             ; preds = %1159
  %1182 = landingpad { ptr, i32 }
          cleanup
  %1183 = extractvalue { ptr, i32 } %1182, 0
  store ptr %1183, ptr %14, align 8
  %1184 = extractvalue { ptr, i32 } %1182, 1
  store i32 %1184, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #10
  br label %1185

1185:                                             ; preds = %1181, %1177
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #10
  br label %1491

1186:                                             ; preds = %1166
  %1187 = landingpad { ptr, i32 }
          cleanup
  %1188 = extractvalue { ptr, i32 } %1187, 0
  store ptr %1188, ptr %14, align 8
  %1189 = extractvalue { ptr, i32 } %1187, 1
  store i32 %1189, ptr %15, align 4
  br label %1194

1190:                                             ; preds = %1173
  %1191 = landingpad { ptr, i32 }
          cleanup
  %1192 = extractvalue { ptr, i32 } %1191, 0
  store ptr %1192, ptr %14, align 8
  %1193 = extractvalue { ptr, i32 } %1191, 1
  store i32 %1193, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #10
  br label %1194

1194:                                             ; preds = %1190, %1186
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #10
  br label %1491

1195:                                             ; preds = %1175, %1161
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %1196 unwind label %1218

1196:                                             ; preds = %1195
  %1197 = invoke noundef i32 @_Z18getNoquantDataTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8DataType(ptr noundef %67, ptr noundef %59)
          to label %1198 unwind label %1222

1198:                                             ; preds = %1196
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #10
  store i32 %1197, ptr %66, align 4, !tbaa !9
  %1199 = load i32, ptr %66, align 4, !tbaa !9
  %1200 = icmp ne i32 %1199, 0
  br i1 %1200, label %1201, label %1230

1201:                                             ; preds = %1198
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #10
  %1202 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %1203 = trunc i64 %1202 to i32
  store i32 %1203, ptr %68, align 4, !tbaa !11
  %1204 = load i32, ptr %68, align 4, !tbaa !11
  %1205 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %1204)
          to label %1206 unwind label %1226

1206:                                             ; preds = %1201
  %1207 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1208 = invoke i32 @fflush(ptr noundef %1207)
          to label %1209 unwind label %1226

1209:                                             ; preds = %1206
  %1210 = load i32, ptr %66, align 4, !tbaa !9
  %1211 = invoke ptr @ee2str(i32 noundef %1210)
          to label %1212 unwind label %1226

1212:                                             ; preds = %1209
  %1213 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.2, ptr noundef %1211)
          to label %1214 unwind label %1226

1214:                                             ; preds = %1212
  %1215 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1216 = invoke i32 @fflush(ptr noundef %1215)
          to label %1217 unwind label %1226

1217:                                             ; preds = %1214
  call void @exit(i32 noundef 1) #11
  unreachable

1218:                                             ; preds = %1195
  %1219 = landingpad { ptr, i32 }
          cleanup
  %1220 = extractvalue { ptr, i32 } %1219, 0
  store ptr %1220, ptr %14, align 8
  %1221 = extractvalue { ptr, i32 } %1219, 1
  store i32 %1221, ptr %15, align 4
  br label %1261

1222:                                             ; preds = %1196
  %1223 = landingpad { ptr, i32 }
          cleanup
  %1224 = extractvalue { ptr, i32 } %1223, 0
  store ptr %1224, ptr %14, align 8
  %1225 = extractvalue { ptr, i32 } %1223, 1
  store i32 %1225, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #10
  br label %1261

1226:                                             ; preds = %1214, %1212, %1209, %1206, %1201
  %1227 = landingpad { ptr, i32 }
          cleanup
  %1228 = extractvalue { ptr, i32 } %1227, 0
  store ptr %1228, ptr %14, align 8
  %1229 = extractvalue { ptr, i32 } %1227, 1
  store i32 %1229, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #10
  br label %1261

1230:                                             ; preds = %1198
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #10
  %1231 = load i32, ptr %59, align 4, !tbaa !13
  %1232 = load ptr, ptr %52, align 8, !tbaa !5
  %1233 = load i32, ptr %57, align 4, !tbaa !11
  %1234 = sext i32 %1233 to i64
  %1235 = getelementptr inbounds %struct.WeightSpec, ptr %1232, i64 %1234
  %1236 = getelementptr inbounds %struct.WeightSpec, ptr %1235, i32 0, i32 1
  store i32 %1231, ptr %1236, align 8, !tbaa !51
  %1237 = invoke noundef i64 @_ZNKSt3setI8DataTypeSt4lessIS0_ESaIS0_EE5countERKS0_(ptr noundef nonnull align 8 dereferenceable(48) @_ZL12noQuantTypes, ptr noundef nonnull align 4 dereferenceable(4) %59)
          to label %1238 unwind label %1262

1238:                                             ; preds = %1230
  %1239 = icmp ne i64 %1237, 0
  br i1 %1239, label %1240, label %1275

1240:                                             ; preds = %1238
  %1241 = invoke noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbPKT_RKNSt7__cxx1112basic_stringIS3_T0_T1_EE(ptr noundef @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %1242 unwind label %1262

1242:                                             ; preds = %1240
  br i1 %1241, label %1243, label %1275

1243:                                             ; preds = %1242
  %1244 = load ptr, ptr %7, align 8, !tbaa !5
  %1245 = load ptr, ptr %52, align 8, !tbaa !5
  %1246 = load i32, ptr %57, align 4, !tbaa !11
  %1247 = sext i32 %1246 to i64
  %1248 = getelementptr inbounds %struct.WeightSpec, ptr %1245, i64 %1247
  %1249 = getelementptr inbounds %struct.WeightSpec, ptr %1248, i32 0, i32 0
  %1250 = getelementptr inbounds [128 x i8], ptr %1249, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef %1250, ptr noundef nonnull align 1 dereferenceable(1) %70)
          to label %1251 unwind label %1266

1251:                                             ; preds = %1243
  %1252 = load i32, ptr %10, align 4, !tbaa !13
  %1253 = load i32, ptr %11, align 4, !tbaa !13
  %1254 = invoke noundef i32 @_Z16get_storage_typeP9ModelSpecNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeS7_(ptr noundef %1244, ptr noundef %69, i32 noundef %1252, i32 noundef %1253)
          to label %1255 unwind label %1270

1255:                                             ; preds = %1251
  %1256 = load ptr, ptr %52, align 8, !tbaa !5
  %1257 = load i32, ptr %57, align 4, !tbaa !11
  %1258 = sext i32 %1257 to i64
  %1259 = getelementptr inbounds %struct.WeightSpec, ptr %1256, i64 %1258
  %1260 = getelementptr inbounds %struct.WeightSpec, ptr %1259, i32 0, i32 1
  store i32 %1254, ptr %1260, align 8, !tbaa !51
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #10
  br label %1275

1261:                                             ; preds = %1226, %1222, %1218
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #10
  br label %1491

1262:                                             ; preds = %1420, %1402, %1279, %1275, %1240, %1230
  %1263 = landingpad { ptr, i32 }
          cleanup
  %1264 = extractvalue { ptr, i32 } %1263, 0
  store ptr %1264, ptr %14, align 8
  %1265 = extractvalue { ptr, i32 } %1263, 1
  store i32 %1265, ptr %15, align 4
  br label %1491

1266:                                             ; preds = %1243
  %1267 = landingpad { ptr, i32 }
          cleanup
  %1268 = extractvalue { ptr, i32 } %1267, 0
  store ptr %1268, ptr %14, align 8
  %1269 = extractvalue { ptr, i32 } %1267, 1
  store i32 %1269, ptr %15, align 4
  br label %1274

1270:                                             ; preds = %1251
  %1271 = landingpad { ptr, i32 }
          cleanup
  %1272 = extractvalue { ptr, i32 } %1271, 0
  store ptr %1272, ptr %14, align 8
  %1273 = extractvalue { ptr, i32 } %1271, 1
  store i32 %1273, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #10
  br label %1274

1274:                                             ; preds = %1270, %1266
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %70) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #10
  br label %1491

1275:                                             ; preds = %1255, %1242, %1238
  %1276 = invoke noundef i64 @_ZNKSt3setI8DataTypeSt4lessIS0_ESaIS0_EE5countERKS0_(ptr noundef nonnull align 8 dereferenceable(48) @_ZL12noQuantTypes, ptr noundef nonnull align 4 dereferenceable(4) %11)
          to label %1277 unwind label %1262

1277:                                             ; preds = %1275
  %1278 = icmp ne i64 %1276, 0
  br i1 %1278, label %1279, label %1354

1279:                                             ; preds = %1277
  %1280 = invoke noundef i64 @_ZNKSt3setI8DataTypeSt4lessIS0_ESaIS0_EE5countERKS0_(ptr noundef nonnull align 8 dereferenceable(48) @_ZL10quantTypes, ptr noundef nonnull align 4 dereferenceable(4) %10)
          to label %1281 unwind label %1262

1281:                                             ; preds = %1279
  %1282 = icmp ne i64 %1280, 0
  br i1 %1282, label %1283, label %1354

1283:                                             ; preds = %1281
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #10
  %1284 = load ptr, ptr %6, align 8, !tbaa !5
  %1285 = load ptr, ptr %6, align 8, !tbaa !5
  %1286 = getelementptr inbounds %struct.ModelSpec, ptr %1285, i32 0, i32 12
  %1287 = load ptr, ptr %1286, align 8, !tbaa !50
  %1288 = load i32, ptr %57, align 4, !tbaa !11
  %1289 = sext i32 %1288 to i64
  %1290 = getelementptr inbounds %struct.WeightSpec, ptr %1287, i64 %1289
  %1291 = getelementptr inbounds %struct.WeightSpec, ptr %1290, i32 0, i32 0
  %1292 = getelementptr inbounds [128 x i8], ptr %1291, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef %1292, ptr noundef nonnull align 1 dereferenceable(1) %73)
          to label %1293 unwind label %1314

1293:                                             ; preds = %1283
  %1294 = invoke noundef float @_Z17quantizationErrorP9ModelSpecNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef %1284, ptr noundef %72)
          to label %1295 unwind label %1318

1295:                                             ; preds = %1293
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #10
  store float %1294, ptr %71, align 4, !tbaa !48
  %1296 = load float, ptr %53, align 4, !tbaa !48
  %1297 = load float, ptr %71, align 4, !tbaa !48
  %1298 = fcmp ogt float %1296, %1297
  br i1 %1298, label %1299, label %1301

1299:                                             ; preds = %1295
  %1300 = load float, ptr %53, align 4, !tbaa !48
  br label %1303

1301:                                             ; preds = %1295
  %1302 = load float, ptr %71, align 4, !tbaa !48
  br label %1303

1303:                                             ; preds = %1301, %1299
  %1304 = phi float [ %1300, %1299 ], [ %1302, %1301 ]
  store float %1304, ptr %53, align 4, !tbaa !48
  %1305 = load float, ptr %71, align 4, !tbaa !48
  %1306 = load float, ptr %55, align 4, !tbaa !48
  %1307 = fcmp ogt float %1305, %1306
  br i1 %1307, label %1308, label %1323

1308:                                             ; preds = %1303
  %1309 = load ptr, ptr %52, align 8, !tbaa !5
  %1310 = load i32, ptr %57, align 4, !tbaa !11
  %1311 = sext i32 %1310 to i64
  %1312 = getelementptr inbounds %struct.WeightSpec, ptr %1309, i64 %1311
  %1313 = getelementptr inbounds %struct.WeightSpec, ptr %1312, i32 0, i32 1
  store i32 4, ptr %1313, align 8, !tbaa !51
  br label %1323

1314:                                             ; preds = %1283
  %1315 = landingpad { ptr, i32 }
          cleanup
  %1316 = extractvalue { ptr, i32 } %1315, 0
  store ptr %1316, ptr %14, align 8
  %1317 = extractvalue { ptr, i32 } %1315, 1
  store i32 %1317, ptr %15, align 4
  br label %1322

1318:                                             ; preds = %1293
  %1319 = landingpad { ptr, i32 }
          cleanup
  %1320 = extractvalue { ptr, i32 } %1319, 0
  store ptr %1320, ptr %14, align 8
  %1321 = extractvalue { ptr, i32 } %1319, 1
  store i32 %1321, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #10
  br label %1322

1322:                                             ; preds = %1318, %1314
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #10
  br label %1353

1323:                                             ; preds = %1308, %1303
  %1324 = load i32, ptr %57, align 4, !tbaa !11
  %1325 = load ptr, ptr %7, align 8, !tbaa !5
  %1326 = getelementptr inbounds %struct.ModelSpec, ptr %1325, i32 0, i32 11
  %1327 = load i32, ptr %1326, align 8, !tbaa !47
  %1328 = sub nsw i32 %1327, 1
  %1329 = icmp eq i32 %1324, %1328
  br i1 %1329, label %1330, label %1352

1330:                                             ; preds = %1323
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #10
  %1331 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %1332 = trunc i64 %1331 to i32
  store i32 %1332, ptr %74, align 4, !tbaa !11
  %1333 = load i32, ptr %74, align 4, !tbaa !11
  %1334 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.4, i32 noundef %1333)
          to label %1335 unwind label %1348

1335:                                             ; preds = %1330
  %1336 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1337 = invoke i32 @fflush(ptr noundef %1336)
          to label %1338 unwind label %1348

1338:                                             ; preds = %1335
  %1339 = load float, ptr %53, align 4, !tbaa !48
  %1340 = fpext float %1339 to double
  %1341 = load float, ptr %55, align 4, !tbaa !48
  %1342 = fpext float %1341 to double
  %1343 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.7, double noundef %1340, double noundef %1342)
          to label %1344 unwind label %1348

1344:                                             ; preds = %1338
  %1345 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1346 = invoke i32 @fflush(ptr noundef %1345)
          to label %1347 unwind label %1348

1347:                                             ; preds = %1344
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #10
  br label %1352

1348:                                             ; preds = %1344, %1338, %1335, %1330
  %1349 = landingpad { ptr, i32 }
          cleanup
  %1350 = extractvalue { ptr, i32 } %1349, 0
  store ptr %1350, ptr %14, align 8
  %1351 = extractvalue { ptr, i32 } %1349, 1
  store i32 %1351, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #10
  br label %1353

1352:                                             ; preds = %1347, %1323
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #10
  br label %1354

1353:                                             ; preds = %1348, %1322
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #10
  br label %1491

1354:                                             ; preds = %1352, %1281, %1277
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %76) #10
  %1355 = load ptr, ptr %52, align 8, !tbaa !5
  %1356 = load i32, ptr %57, align 4, !tbaa !11
  %1357 = sext i32 %1356 to i64
  %1358 = getelementptr inbounds %struct.WeightSpec, ptr %1355, i64 %1357
  %1359 = getelementptr inbounds %struct.WeightSpec, ptr %1358, i32 0, i32 0
  %1360 = getelementptr inbounds [128 x i8], ptr %1359, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef %1360, ptr noundef nonnull align 1 dereferenceable(1) %77)
          to label %1361 unwind label %1384

1361:                                             ; preds = %1354
  %1362 = invoke ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeSt4lessIS5_ESaISt4pairIKS5_S6_EEE4findERSA_(ptr noundef nonnull align 8 dereferenceable(48) %27, ptr noundef nonnull align 8 dereferenceable(32) %76)
          to label %1363 unwind label %1388

1363:                                             ; preds = %1361
  %1364 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %75, i32 0, i32 0
  store ptr %1362, ptr %1364, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #10
  %1365 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeSt4lessIS5_ESaISt4pairIKS5_S6_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %27) #10
  %1366 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %78, i32 0, i32 0
  store ptr %1365, ptr %1366, align 8
  %1367 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeEESC_(ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef nonnull align 8 dereferenceable(8) %78) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #10
  br i1 %1367, label %1368, label %1402

1368:                                             ; preds = %1363
  %1369 = load ptr, ptr %52, align 8, !tbaa !5
  %1370 = load i32, ptr %57, align 4, !tbaa !11
  %1371 = sext i32 %1370 to i64
  %1372 = getelementptr inbounds %struct.WeightSpec, ptr %1369, i64 %1371
  %1373 = getelementptr inbounds %struct.WeightSpec, ptr %1372, i32 0, i32 1
  %1374 = load i32, ptr %1373, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 32, ptr %79) #10
  %1375 = load ptr, ptr %52, align 8, !tbaa !5
  %1376 = load i32, ptr %57, align 4, !tbaa !11
  %1377 = sext i32 %1376 to i64
  %1378 = getelementptr inbounds %struct.WeightSpec, ptr %1375, i64 %1377
  %1379 = getelementptr inbounds %struct.WeightSpec, ptr %1378, i32 0, i32 0
  %1380 = getelementptr inbounds [128 x i8], ptr %1379, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 1, ptr %80) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %79, ptr noundef %1380, ptr noundef nonnull align 1 dereferenceable(1) %80)
          to label %1381 unwind label %1393

1381:                                             ; preds = %1368
  %1382 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeSt4lessIS5_ESaISt4pairIKS5_S6_EEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %27, ptr noundef nonnull align 8 dereferenceable(32) %79)
          to label %1383 unwind label %1397

1383:                                             ; preds = %1381
  store i32 %1374, ptr %1382, align 4, !tbaa !13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %79) #10
  br label %1402

1384:                                             ; preds = %1354
  %1385 = landingpad { ptr, i32 }
          cleanup
  %1386 = extractvalue { ptr, i32 } %1385, 0
  store ptr %1386, ptr %14, align 8
  %1387 = extractvalue { ptr, i32 } %1385, 1
  store i32 %1387, ptr %15, align 4
  br label %1392

1388:                                             ; preds = %1361
  %1389 = landingpad { ptr, i32 }
          cleanup
  %1390 = extractvalue { ptr, i32 } %1389, 0
  store ptr %1390, ptr %14, align 8
  %1391 = extractvalue { ptr, i32 } %1389, 1
  store i32 %1391, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #10
  br label %1392

1392:                                             ; preds = %1388, %1384
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #10
  br label %1491

1393:                                             ; preds = %1368
  %1394 = landingpad { ptr, i32 }
          cleanup
  %1395 = extractvalue { ptr, i32 } %1394, 0
  store ptr %1395, ptr %14, align 8
  %1396 = extractvalue { ptr, i32 } %1394, 1
  store i32 %1396, ptr %15, align 4
  br label %1401

1397:                                             ; preds = %1381
  %1398 = landingpad { ptr, i32 }
          cleanup
  %1399 = extractvalue { ptr, i32 } %1398, 0
  store ptr %1399, ptr %14, align 8
  %1400 = extractvalue { ptr, i32 } %1398, 1
  store i32 %1400, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #10
  br label %1401

1401:                                             ; preds = %1397, %1393
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %79) #10
  br label %1491

1402:                                             ; preds = %1383, %1363
  %1403 = load ptr, ptr %6, align 8, !tbaa !5
  %1404 = getelementptr inbounds %struct.ModelSpec, ptr %1403, i32 0, i32 12
  %1405 = load ptr, ptr %1404, align 8, !tbaa !50
  %1406 = load i32, ptr %57, align 4, !tbaa !11
  %1407 = sext i32 %1406 to i64
  %1408 = getelementptr inbounds %struct.WeightSpec, ptr %1405, i64 %1407
  %1409 = getelementptr inbounds %struct.WeightSpec, ptr %1408, i32 0, i32 2
  %1410 = load i32, ptr %1409, align 4, !tbaa !53
  %1411 = load ptr, ptr %6, align 8, !tbaa !5
  %1412 = getelementptr inbounds %struct.ModelSpec, ptr %1411, i32 0, i32 12
  %1413 = load ptr, ptr %1412, align 8, !tbaa !50
  %1414 = load i32, ptr %57, align 4, !tbaa !11
  %1415 = sext i32 %1414 to i64
  %1416 = getelementptr inbounds %struct.WeightSpec, ptr %1413, i64 %1415
  %1417 = getelementptr inbounds %struct.WeightSpec, ptr %1416, i32 0, i32 1
  %1418 = load i32, ptr %1417, align 8, !tbaa !51
  %1419 = invoke noundef i32 @_Z7bytesOf8DataType(i32 noundef %1418)
          to label %1420 unwind label %1262

1420:                                             ; preds = %1402
  %1421 = udiv i32 %1410, %1419
  store i32 %1421, ptr %58, align 4, !tbaa !11
  %1422 = load i32, ptr %58, align 4, !tbaa !11
  %1423 = load ptr, ptr %52, align 8, !tbaa !5
  %1424 = load i32, ptr %57, align 4, !tbaa !11
  %1425 = sext i32 %1424 to i64
  %1426 = getelementptr inbounds %struct.WeightSpec, ptr %1423, i64 %1425
  %1427 = getelementptr inbounds %struct.WeightSpec, ptr %1426, i32 0, i32 1
  %1428 = load i32, ptr %1427, align 8, !tbaa !51
  %1429 = invoke noundef i32 @_Z7bytesOf8DataType(i32 noundef %1428)
          to label %1430 unwind label %1262

1430:                                             ; preds = %1420
  %1431 = mul i32 %1422, %1429
  %1432 = load ptr, ptr %52, align 8, !tbaa !5
  %1433 = load i32, ptr %57, align 4, !tbaa !11
  %1434 = sext i32 %1433 to i64
  %1435 = getelementptr inbounds %struct.WeightSpec, ptr %1432, i64 %1434
  %1436 = getelementptr inbounds %struct.WeightSpec, ptr %1435, i32 0, i32 2
  store i32 %1431, ptr %1436, align 4, !tbaa !53
  %1437 = load ptr, ptr %52, align 8, !tbaa !5
  %1438 = load i32, ptr %57, align 4, !tbaa !11
  %1439 = sext i32 %1438 to i64
  %1440 = getelementptr inbounds %struct.WeightSpec, ptr %1437, i64 %1439
  %1441 = getelementptr inbounds %struct.WeightSpec, ptr %1440, i32 0, i32 1
  %1442 = load i32, ptr %1441, align 8, !tbaa !51
  %1443 = icmp eq i32 %1442, 5
  br i1 %1443, label %1444, label %1452

1444:                                             ; preds = %1430
  %1445 = load ptr, ptr %52, align 8, !tbaa !5
  %1446 = load i32, ptr %57, align 4, !tbaa !11
  %1447 = sext i32 %1446 to i64
  %1448 = getelementptr inbounds %struct.WeightSpec, ptr %1445, i64 %1447
  %1449 = getelementptr inbounds %struct.WeightSpec, ptr %1448, i32 0, i32 2
  %1450 = load i32, ptr %1449, align 4, !tbaa !53
  %1451 = udiv i32 %1450, 2
  store i32 %1451, ptr %1449, align 4, !tbaa !53
  br label %1452

1452:                                             ; preds = %1444, %1430
  %1453 = load ptr, ptr %52, align 8, !tbaa !5
  %1454 = load i32, ptr %57, align 4, !tbaa !11
  %1455 = sext i32 %1454 to i64
  %1456 = getelementptr inbounds %struct.WeightSpec, ptr %1453, i64 %1455
  %1457 = getelementptr inbounds %struct.WeightSpec, ptr %1456, i32 0, i32 1
  %1458 = load i32, ptr %1457, align 8, !tbaa !51
  %1459 = icmp eq i32 %1458, 9
  br i1 %1459, label %1460, label %1468

1460:                                             ; preds = %1452
  %1461 = load ptr, ptr %52, align 8, !tbaa !5
  %1462 = load i32, ptr %57, align 4, !tbaa !11
  %1463 = sext i32 %1462 to i64
  %1464 = getelementptr inbounds %struct.WeightSpec, ptr %1461, i64 %1463
  %1465 = getelementptr inbounds %struct.WeightSpec, ptr %1464, i32 0, i32 2
  %1466 = load i32, ptr %1465, align 4, !tbaa !53
  %1467 = udiv i32 %1466, 4
  store i32 %1467, ptr %1465, align 4, !tbaa !53
  br label %1468

1468:                                             ; preds = %1460, %1452
  %1469 = load ptr, ptr %52, align 8, !tbaa !5
  %1470 = load i32, ptr %57, align 4, !tbaa !11
  %1471 = sext i32 %1470 to i64
  %1472 = getelementptr inbounds %struct.WeightSpec, ptr %1469, i64 %1471
  %1473 = getelementptr inbounds %struct.WeightSpec, ptr %1472, i32 0, i32 1
  %1474 = load i32, ptr %1473, align 8, !tbaa !51
  %1475 = icmp eq i32 %1474, 15
  br i1 %1475, label %1476, label %1490

1476:                                             ; preds = %1468
  %1477 = load ptr, ptr %52, align 8, !tbaa !5
  %1478 = load i32, ptr %57, align 4, !tbaa !11
  %1479 = sext i32 %1478 to i64
  %1480 = getelementptr inbounds %struct.WeightSpec, ptr %1477, i64 %1479
  %1481 = getelementptr inbounds %struct.WeightSpec, ptr %1480, i32 0, i32 2
  %1482 = load i32, ptr %1481, align 4, !tbaa !53
  %1483 = add i32 %1482, 1
  %1484 = udiv i32 %1483, 2
  %1485 = load ptr, ptr %52, align 8, !tbaa !5
  %1486 = load i32, ptr %57, align 4, !tbaa !11
  %1487 = sext i32 %1486 to i64
  %1488 = getelementptr inbounds %struct.WeightSpec, ptr %1485, i64 %1487
  %1489 = getelementptr inbounds %struct.WeightSpec, ptr %1488, i32 0, i32 2
  store i32 %1484, ptr %1489, align 4, !tbaa !53
  br label %1490

1490:                                             ; preds = %1476, %1468
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #10
  br label %1492

1491:                                             ; preds = %1401, %1392, %1353, %1274, %1262, %1261, %1194, %1185
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #10
  br label %2179

1492:                                             ; preds = %1490, %1128
  %1493 = load ptr, ptr %52, align 8, !tbaa !5
  %1494 = load i32, ptr %57, align 4, !tbaa !11
  %1495 = sext i32 %1494 to i64
  %1496 = getelementptr inbounds %struct.WeightSpec, ptr %1493, i64 %1495
  %1497 = getelementptr inbounds %struct.WeightSpec, ptr %1496, i32 0, i32 2
  %1498 = load i32, ptr %1497, align 4, !tbaa !53
  %1499 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef %1498)
          to label %1500 unwind label %1140

1500:                                             ; preds = %1492
  %1501 = load ptr, ptr %52, align 8, !tbaa !5
  %1502 = load i32, ptr %57, align 4, !tbaa !11
  %1503 = sext i32 %1502 to i64
  %1504 = getelementptr inbounds %struct.WeightSpec, ptr %1501, i64 %1503
  %1505 = getelementptr inbounds %struct.WeightSpec, ptr %1504, i32 0, i32 3
  store ptr %1499, ptr %1505, align 8, !tbaa !54
  %1506 = load ptr, ptr %6, align 8, !tbaa !5
  %1507 = getelementptr inbounds %struct.ModelSpec, ptr %1506, i32 0, i32 12
  %1508 = load ptr, ptr %1507, align 8, !tbaa !50
  %1509 = load i32, ptr %57, align 4, !tbaa !11
  %1510 = sext i32 %1509 to i64
  %1511 = getelementptr inbounds %struct.WeightSpec, ptr %1508, i64 %1510
  %1512 = getelementptr inbounds %struct.WeightSpec, ptr %1511, i32 0, i32 6
  %1513 = load i32, ptr %1512, align 8, !tbaa !55
  %1514 = load ptr, ptr %52, align 8, !tbaa !5
  %1515 = load i32, ptr %57, align 4, !tbaa !11
  %1516 = sext i32 %1515 to i64
  %1517 = getelementptr inbounds %struct.WeightSpec, ptr %1514, i64 %1516
  %1518 = getelementptr inbounds %struct.WeightSpec, ptr %1517, i32 0, i32 6
  store i32 %1513, ptr %1518, align 8, !tbaa !55
  %1519 = load ptr, ptr %52, align 8, !tbaa !5
  %1520 = load i32, ptr %57, align 4, !tbaa !11
  %1521 = sext i32 %1520 to i64
  %1522 = getelementptr inbounds %struct.WeightSpec, ptr %1519, i64 %1521
  %1523 = getelementptr inbounds %struct.WeightSpec, ptr %1522, i32 0, i32 6
  %1524 = load i32, ptr %1523, align 8, !tbaa !55
  %1525 = icmp eq i32 0, %1524
  br i1 %1525, label %1526, label %1532

1526:                                             ; preds = %1500
  %1527 = load ptr, ptr %52, align 8, !tbaa !5
  %1528 = load i32, ptr %57, align 4, !tbaa !11
  %1529 = sext i32 %1528 to i64
  %1530 = getelementptr inbounds %struct.WeightSpec, ptr %1527, i64 %1529
  %1531 = getelementptr inbounds %struct.WeightSpec, ptr %1530, i32 0, i32 7
  store ptr null, ptr %1531, align 8, !tbaa !56
  br label %1646

1532:                                             ; preds = %1500
  %1533 = load ptr, ptr %52, align 8, !tbaa !5
  %1534 = load i32, ptr %57, align 4, !tbaa !11
  %1535 = sext i32 %1534 to i64
  %1536 = getelementptr inbounds %struct.WeightSpec, ptr %1533, i64 %1535
  %1537 = getelementptr inbounds %struct.WeightSpec, ptr %1536, i32 0, i32 6
  %1538 = load i32, ptr %1537, align 8, !tbaa !55
  %1539 = zext i32 %1538 to i64
  %1540 = mul i64 %1539, 16
  %1541 = trunc i64 %1540 to i32
  %1542 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef %1541)
          to label %1543 unwind label %1140

1543:                                             ; preds = %1532
  %1544 = load ptr, ptr %52, align 8, !tbaa !5
  %1545 = load i32, ptr %57, align 4, !tbaa !11
  %1546 = sext i32 %1545 to i64
  %1547 = getelementptr inbounds %struct.WeightSpec, ptr %1544, i64 %1546
  %1548 = getelementptr inbounds %struct.WeightSpec, ptr %1547, i32 0, i32 7
  store ptr %1542, ptr %1548, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #10
  store i32 0, ptr %81, align 4, !tbaa !11
  br label %1549

1549:                                             ; preds = %1638, %1543
  %1550 = load i32, ptr %81, align 4, !tbaa !11
  %1551 = load ptr, ptr %52, align 8, !tbaa !5
  %1552 = load i32, ptr %57, align 4, !tbaa !11
  %1553 = sext i32 %1552 to i64
  %1554 = getelementptr inbounds %struct.WeightSpec, ptr %1551, i64 %1553
  %1555 = getelementptr inbounds %struct.WeightSpec, ptr %1554, i32 0, i32 6
  %1556 = load i32, ptr %1555, align 8, !tbaa !55
  %1557 = icmp ult i32 %1550, %1556
  br i1 %1557, label %1559, label %1558

1558:                                             ; preds = %1549
  store i32 27, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #10
  br label %1645

1559:                                             ; preds = %1549
  %1560 = load ptr, ptr %6, align 8, !tbaa !5
  %1561 = getelementptr inbounds %struct.ModelSpec, ptr %1560, i32 0, i32 12
  %1562 = load ptr, ptr %1561, align 8, !tbaa !50
  %1563 = load i32, ptr %57, align 4, !tbaa !11
  %1564 = sext i32 %1563 to i64
  %1565 = getelementptr inbounds %struct.WeightSpec, ptr %1562, i64 %1564
  %1566 = getelementptr inbounds %struct.WeightSpec, ptr %1565, i32 0, i32 7
  %1567 = load ptr, ptr %1566, align 8, !tbaa !56
  %1568 = load i32, ptr %81, align 4, !tbaa !11
  %1569 = zext i32 %1568 to i64
  %1570 = getelementptr inbounds %struct.QuantSpec, ptr %1567, i64 %1569
  %1571 = getelementptr inbounds %struct.QuantSpec, ptr %1570, i32 0, i32 0
  %1572 = load i32, ptr %1571, align 8, !tbaa !40
  %1573 = load ptr, ptr %52, align 8, !tbaa !5
  %1574 = load i32, ptr %57, align 4, !tbaa !11
  %1575 = sext i32 %1574 to i64
  %1576 = getelementptr inbounds %struct.WeightSpec, ptr %1573, i64 %1575
  %1577 = getelementptr inbounds %struct.WeightSpec, ptr %1576, i32 0, i32 7
  %1578 = load ptr, ptr %1577, align 8, !tbaa !56
  %1579 = load i32, ptr %81, align 4, !tbaa !11
  %1580 = zext i32 %1579 to i64
  %1581 = getelementptr inbounds %struct.QuantSpec, ptr %1578, i64 %1580
  %1582 = getelementptr inbounds %struct.QuantSpec, ptr %1581, i32 0, i32 0
  store i32 %1572, ptr %1582, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #10
  %1583 = load ptr, ptr %52, align 8, !tbaa !5
  %1584 = load i32, ptr %57, align 4, !tbaa !11
  %1585 = sext i32 %1584 to i64
  %1586 = getelementptr inbounds %struct.WeightSpec, ptr %1583, i64 %1585
  %1587 = getelementptr inbounds %struct.WeightSpec, ptr %1586, i32 0, i32 7
  %1588 = load ptr, ptr %1587, align 8, !tbaa !56
  %1589 = load i32, ptr %81, align 4, !tbaa !11
  %1590 = zext i32 %1589 to i64
  %1591 = getelementptr inbounds %struct.QuantSpec, ptr %1588, i64 %1590
  %1592 = getelementptr inbounds %struct.QuantSpec, ptr %1591, i32 0, i32 0
  %1593 = load i32, ptr %1592, align 8, !tbaa !40
  store i32 %1593, ptr %82, align 4, !tbaa !11
  %1594 = load i32, ptr %82, align 4, !tbaa !11
  %1595 = sext i32 %1594 to i64
  %1596 = mul i64 %1595, 4
  %1597 = trunc i64 %1596 to i32
  %1598 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef %1597)
          to label %1599 unwind label %1641

1599:                                             ; preds = %1559
  %1600 = load ptr, ptr %52, align 8, !tbaa !5
  %1601 = load i32, ptr %57, align 4, !tbaa !11
  %1602 = sext i32 %1601 to i64
  %1603 = getelementptr inbounds %struct.WeightSpec, ptr %1600, i64 %1602
  %1604 = getelementptr inbounds %struct.WeightSpec, ptr %1603, i32 0, i32 7
  %1605 = load ptr, ptr %1604, align 8, !tbaa !56
  %1606 = load i32, ptr %81, align 4, !tbaa !11
  %1607 = zext i32 %1606 to i64
  %1608 = getelementptr inbounds %struct.QuantSpec, ptr %1605, i64 %1607
  %1609 = getelementptr inbounds %struct.QuantSpec, ptr %1608, i32 0, i32 1
  store ptr %1598, ptr %1609, align 8, !tbaa !42
  %1610 = load ptr, ptr %52, align 8, !tbaa !5
  %1611 = load i32, ptr %57, align 4, !tbaa !11
  %1612 = sext i32 %1611 to i64
  %1613 = getelementptr inbounds %struct.WeightSpec, ptr %1610, i64 %1612
  %1614 = getelementptr inbounds %struct.WeightSpec, ptr %1613, i32 0, i32 7
  %1615 = load ptr, ptr %1614, align 8, !tbaa !56
  %1616 = load i32, ptr %81, align 4, !tbaa !11
  %1617 = zext i32 %1616 to i64
  %1618 = getelementptr inbounds %struct.QuantSpec, ptr %1615, i64 %1617
  %1619 = getelementptr inbounds %struct.QuantSpec, ptr %1618, i32 0, i32 1
  %1620 = load ptr, ptr %1619, align 8, !tbaa !42
  %1621 = load ptr, ptr %6, align 8, !tbaa !5
  %1622 = getelementptr inbounds %struct.ModelSpec, ptr %1621, i32 0, i32 12
  %1623 = load ptr, ptr %1622, align 8, !tbaa !50
  %1624 = load i32, ptr %57, align 4, !tbaa !11
  %1625 = sext i32 %1624 to i64
  %1626 = getelementptr inbounds %struct.WeightSpec, ptr %1623, i64 %1625
  %1627 = getelementptr inbounds %struct.WeightSpec, ptr %1626, i32 0, i32 7
  %1628 = load ptr, ptr %1627, align 8, !tbaa !56
  %1629 = load i32, ptr %81, align 4, !tbaa !11
  %1630 = zext i32 %1629 to i64
  %1631 = getelementptr inbounds %struct.QuantSpec, ptr %1628, i64 %1630
  %1632 = getelementptr inbounds %struct.QuantSpec, ptr %1631, i32 0, i32 1
  %1633 = load ptr, ptr %1632, align 8, !tbaa !42
  %1634 = load i32, ptr %82, align 4, !tbaa !11
  %1635 = sext i32 %1634 to i64
  %1636 = mul i64 %1635, 4
  invoke void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %1620, ptr noundef %1633, i64 noundef %1636)
          to label %1637 unwind label %1641

1637:                                             ; preds = %1599
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #10
  br label %1638

1638:                                             ; preds = %1637
  %1639 = load i32, ptr %81, align 4, !tbaa !11
  %1640 = add i32 %1639, 1
  store i32 %1640, ptr %81, align 4, !tbaa !11
  br label %1549, !llvm.loop !57

1641:                                             ; preds = %1599, %1559
  %1642 = landingpad { ptr, i32 }
          cleanup
  %1643 = extractvalue { ptr, i32 } %1642, 0
  store ptr %1643, ptr %14, align 8
  %1644 = extractvalue { ptr, i32 } %1642, 1
  store i32 %1644, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #10
  br label %2179

1645:                                             ; preds = %1558
  br label %1646

1646:                                             ; preds = %1645, %1526
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #10
  store i32 6, ptr %83, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #10
  %1647 = load ptr, ptr %6, align 8, !tbaa !5
  %1648 = getelementptr inbounds %struct.ModelSpec, ptr %1647, i32 0, i32 12
  %1649 = load ptr, ptr %1648, align 8, !tbaa !50
  %1650 = load i32, ptr %57, align 4, !tbaa !11
  %1651 = sext i32 %1650 to i64
  %1652 = getelementptr inbounds %struct.WeightSpec, ptr %1649, i64 %1651
  %1653 = getelementptr inbounds %struct.WeightSpec, ptr %1652, i32 0, i32 4
  %1654 = load i32, ptr %1653, align 8, !tbaa !58
  %1655 = load i32, ptr %83, align 4, !tbaa !13
  %1656 = invoke noundef i32 @_Z7bytesOf8DataType(i32 noundef %1655)
          to label %1657 unwind label %1681

1657:                                             ; preds = %1646
  %1658 = udiv i32 %1654, %1656
  store i32 %1658, ptr %84, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %86, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %1659 unwind label %1685

1659:                                             ; preds = %1657
  %1660 = invoke noundef i32 @_Z18getNoquantDataTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8DataType(ptr noundef %86, ptr noundef %83)
          to label %1661 unwind label %1689

1661:                                             ; preds = %1659
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #10
  store i32 %1660, ptr %85, align 4, !tbaa !9
  %1662 = load i32, ptr %85, align 4, !tbaa !9
  %1663 = icmp ne i32 %1662, 0
  br i1 %1663, label %1664, label %1697

1664:                                             ; preds = %1661
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #10
  %1665 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %1666 = trunc i64 %1665 to i32
  store i32 %1666, ptr %87, align 4, !tbaa !11
  %1667 = load i32, ptr %87, align 4, !tbaa !11
  %1668 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %1667)
          to label %1669 unwind label %1693

1669:                                             ; preds = %1664
  %1670 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1671 = invoke i32 @fflush(ptr noundef %1670)
          to label %1672 unwind label %1693

1672:                                             ; preds = %1669
  %1673 = load i32, ptr %85, align 4, !tbaa !9
  %1674 = invoke ptr @ee2str(i32 noundef %1673)
          to label %1675 unwind label %1693

1675:                                             ; preds = %1672
  %1676 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.2, ptr noundef %1674)
          to label %1677 unwind label %1693

1677:                                             ; preds = %1675
  %1678 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1679 = invoke i32 @fflush(ptr noundef %1678)
          to label %1680 unwind label %1693

1680:                                             ; preds = %1677
  call void @exit(i32 noundef 1) #11
  unreachable

1681:                                             ; preds = %2060, %2027, %1993, %1986, %1958, %1925, %1891, %1884, %1852, %1829, %1796, %1763, %1744, %1728, %1714, %1710, %1646
  %1682 = landingpad { ptr, i32 }
          cleanup
  %1683 = extractvalue { ptr, i32 } %1682, 0
  store ptr %1683, ptr %14, align 8
  %1684 = extractvalue { ptr, i32 } %1682, 1
  store i32 %1684, ptr %15, align 4
  br label %2178

1685:                                             ; preds = %1657
  %1686 = landingpad { ptr, i32 }
          cleanup
  %1687 = extractvalue { ptr, i32 } %1686, 0
  store ptr %1687, ptr %14, align 8
  %1688 = extractvalue { ptr, i32 } %1686, 1
  store i32 %1688, ptr %15, align 4
  br label %1709

1689:                                             ; preds = %1659
  %1690 = landingpad { ptr, i32 }
          cleanup
  %1691 = extractvalue { ptr, i32 } %1690, 0
  store ptr %1691, ptr %14, align 8
  %1692 = extractvalue { ptr, i32 } %1690, 1
  store i32 %1692, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #10
  br label %1709

1693:                                             ; preds = %1677, %1675, %1672, %1669, %1664
  %1694 = landingpad { ptr, i32 }
          cleanup
  %1695 = extractvalue { ptr, i32 } %1694, 0
  store ptr %1695, ptr %14, align 8
  %1696 = extractvalue { ptr, i32 } %1694, 1
  store i32 %1696, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #10
  br label %1709

1697:                                             ; preds = %1661
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #10
  %1698 = load i32, ptr %83, align 4, !tbaa !13
  %1699 = icmp eq i32 6, %1698
  br i1 %1699, label %1700, label %1710

1700:                                             ; preds = %1697
  %1701 = load ptr, ptr %52, align 8, !tbaa !5
  %1702 = load i32, ptr %57, align 4, !tbaa !11
  %1703 = sext i32 %1702 to i64
  %1704 = getelementptr inbounds %struct.WeightSpec, ptr %1701, i64 %1703
  %1705 = getelementptr inbounds %struct.WeightSpec, ptr %1704, i32 0, i32 1
  %1706 = load i32, ptr %1705, align 8, !tbaa !51
  %1707 = icmp eq i32 4, %1706
  br i1 %1707, label %1708, label %1710

1708:                                             ; preds = %1700
  store i32 4, ptr %83, align 4, !tbaa !13
  br label %1710

1709:                                             ; preds = %1693, %1689, %1685
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #10
  br label %2178

1710:                                             ; preds = %1708, %1700, %1697
  %1711 = load i32, ptr %84, align 4, !tbaa !11
  %1712 = load i32, ptr %83, align 4, !tbaa !13
  %1713 = invoke noundef i32 @_Z7bytesOf8DataType(i32 noundef %1712)
          to label %1714 unwind label %1681

1714:                                             ; preds = %1710
  %1715 = mul i32 %1711, %1713
  %1716 = load ptr, ptr %52, align 8, !tbaa !5
  %1717 = load i32, ptr %57, align 4, !tbaa !11
  %1718 = sext i32 %1717 to i64
  %1719 = getelementptr inbounds %struct.WeightSpec, ptr %1716, i64 %1718
  %1720 = getelementptr inbounds %struct.WeightSpec, ptr %1719, i32 0, i32 4
  store i32 %1715, ptr %1720, align 8, !tbaa !58
  %1721 = load ptr, ptr %52, align 8, !tbaa !5
  %1722 = load i32, ptr %57, align 4, !tbaa !11
  %1723 = sext i32 %1722 to i64
  %1724 = getelementptr inbounds %struct.WeightSpec, ptr %1721, i64 %1723
  %1725 = getelementptr inbounds %struct.WeightSpec, ptr %1724, i32 0, i32 4
  %1726 = load i32, ptr %1725, align 8, !tbaa !58
  %1727 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef %1726)
          to label %1728 unwind label %1681

1728:                                             ; preds = %1714
  %1729 = load ptr, ptr %52, align 8, !tbaa !5
  %1730 = load i32, ptr %57, align 4, !tbaa !11
  %1731 = sext i32 %1730 to i64
  %1732 = getelementptr inbounds %struct.WeightSpec, ptr %1729, i64 %1731
  %1733 = getelementptr inbounds %struct.WeightSpec, ptr %1732, i32 0, i32 5
  store ptr %1727, ptr %1733, align 8, !tbaa !59
  %1734 = load ptr, ptr %6, align 8, !tbaa !5
  %1735 = getelementptr inbounds %struct.ModelSpec, ptr %1734, i32 0, i32 12
  %1736 = load ptr, ptr %1735, align 8, !tbaa !50
  %1737 = load i32, ptr %57, align 4, !tbaa !11
  %1738 = sext i32 %1737 to i64
  %1739 = getelementptr inbounds %struct.WeightSpec, ptr %1736, i64 %1738
  %1740 = getelementptr inbounds %struct.WeightSpec, ptr %1739, i32 0, i32 1
  %1741 = invoke noundef i64 @_ZNKSt3setI8DataTypeSt4lessIS0_ESaIS0_EE5countERKS0_(ptr noundef nonnull align 8 dereferenceable(48) @_ZL10quantTypes, ptr noundef nonnull align 4 dereferenceable(4) %1740)
          to label %1742 unwind label %1681

1742:                                             ; preds = %1728
  %1743 = icmp ne i64 %1741, 0
  br i1 %1743, label %1822, label %1744

1744:                                             ; preds = %1742
  %1745 = load ptr, ptr %6, align 8, !tbaa !5
  %1746 = getelementptr inbounds %struct.ModelSpec, ptr %1745, i32 0, i32 12
  %1747 = load ptr, ptr %1746, align 8, !tbaa !50
  %1748 = load i32, ptr %57, align 4, !tbaa !11
  %1749 = sext i32 %1748 to i64
  %1750 = getelementptr inbounds %struct.WeightSpec, ptr %1747, i64 %1749
  %1751 = getelementptr inbounds %struct.WeightSpec, ptr %1750, i32 0, i32 1
  %1752 = invoke noundef i64 @_ZNKSt3setI8DataTypeSt4lessIS0_ESaIS0_EE5countERKS0_(ptr noundef nonnull align 8 dereferenceable(48) @_ZL12noQuantTypes, ptr noundef nonnull align 4 dereferenceable(4) %1751)
          to label %1753 unwind label %1681

1753:                                             ; preds = %1744
  %1754 = icmp ne i64 %1752, 0
  br i1 %1754, label %1822, label %1755

1755:                                             ; preds = %1753
  %1756 = load ptr, ptr %52, align 8, !tbaa !5
  %1757 = load i32, ptr %57, align 4, !tbaa !11
  %1758 = sext i32 %1757 to i64
  %1759 = getelementptr inbounds %struct.WeightSpec, ptr %1756, i64 %1758
  %1760 = getelementptr inbounds %struct.WeightSpec, ptr %1759, i32 0, i32 2
  %1761 = load i32, ptr %1760, align 4, !tbaa !53
  %1762 = icmp ugt i32 %1761, 0
  br i1 %1762, label %1763, label %1788

1763:                                             ; preds = %1755
  %1764 = load ptr, ptr %52, align 8, !tbaa !5
  %1765 = load i32, ptr %57, align 4, !tbaa !11
  %1766 = sext i32 %1765 to i64
  %1767 = getelementptr inbounds %struct.WeightSpec, ptr %1764, i64 %1766
  %1768 = getelementptr inbounds %struct.WeightSpec, ptr %1767, i32 0, i32 3
  %1769 = load ptr, ptr %1768, align 8, !tbaa !54
  %1770 = load ptr, ptr %6, align 8, !tbaa !5
  %1771 = getelementptr inbounds %struct.ModelSpec, ptr %1770, i32 0, i32 12
  %1772 = load ptr, ptr %1771, align 8, !tbaa !50
  %1773 = load i32, ptr %57, align 4, !tbaa !11
  %1774 = sext i32 %1773 to i64
  %1775 = getelementptr inbounds %struct.WeightSpec, ptr %1772, i64 %1774
  %1776 = getelementptr inbounds %struct.WeightSpec, ptr %1775, i32 0, i32 3
  %1777 = load ptr, ptr %1776, align 8, !tbaa !54
  %1778 = load ptr, ptr %6, align 8, !tbaa !5
  %1779 = getelementptr inbounds %struct.ModelSpec, ptr %1778, i32 0, i32 12
  %1780 = load ptr, ptr %1779, align 8, !tbaa !50
  %1781 = load i32, ptr %57, align 4, !tbaa !11
  %1782 = sext i32 %1781 to i64
  %1783 = getelementptr inbounds %struct.WeightSpec, ptr %1780, i64 %1782
  %1784 = getelementptr inbounds %struct.WeightSpec, ptr %1783, i32 0, i32 2
  %1785 = load i32, ptr %1784, align 4, !tbaa !53
  %1786 = zext i32 %1785 to i64
  invoke void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %1769, ptr noundef %1777, i64 noundef %1786)
          to label %1787 unwind label %1681

1787:                                             ; preds = %1763
  br label %1788

1788:                                             ; preds = %1787, %1755
  %1789 = load ptr, ptr %52, align 8, !tbaa !5
  %1790 = load i32, ptr %57, align 4, !tbaa !11
  %1791 = sext i32 %1790 to i64
  %1792 = getelementptr inbounds %struct.WeightSpec, ptr %1789, i64 %1791
  %1793 = getelementptr inbounds %struct.WeightSpec, ptr %1792, i32 0, i32 4
  %1794 = load i32, ptr %1793, align 8, !tbaa !58
  %1795 = icmp ugt i32 %1794, 0
  br i1 %1795, label %1796, label %1821

1796:                                             ; preds = %1788
  %1797 = load ptr, ptr %52, align 8, !tbaa !5
  %1798 = load i32, ptr %57, align 4, !tbaa !11
  %1799 = sext i32 %1798 to i64
  %1800 = getelementptr inbounds %struct.WeightSpec, ptr %1797, i64 %1799
  %1801 = getelementptr inbounds %struct.WeightSpec, ptr %1800, i32 0, i32 5
  %1802 = load ptr, ptr %1801, align 8, !tbaa !59
  %1803 = load ptr, ptr %6, align 8, !tbaa !5
  %1804 = getelementptr inbounds %struct.ModelSpec, ptr %1803, i32 0, i32 12
  %1805 = load ptr, ptr %1804, align 8, !tbaa !50
  %1806 = load i32, ptr %57, align 4, !tbaa !11
  %1807 = sext i32 %1806 to i64
  %1808 = getelementptr inbounds %struct.WeightSpec, ptr %1805, i64 %1807
  %1809 = getelementptr inbounds %struct.WeightSpec, ptr %1808, i32 0, i32 5
  %1810 = load ptr, ptr %1809, align 8, !tbaa !59
  %1811 = load ptr, ptr %6, align 8, !tbaa !5
  %1812 = getelementptr inbounds %struct.ModelSpec, ptr %1811, i32 0, i32 12
  %1813 = load ptr, ptr %1812, align 8, !tbaa !50
  %1814 = load i32, ptr %57, align 4, !tbaa !11
  %1815 = sext i32 %1814 to i64
  %1816 = getelementptr inbounds %struct.WeightSpec, ptr %1813, i64 %1815
  %1817 = getelementptr inbounds %struct.WeightSpec, ptr %1816, i32 0, i32 4
  %1818 = load i32, ptr %1817, align 8, !tbaa !58
  %1819 = zext i32 %1818 to i64
  invoke void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %1802, ptr noundef %1810, i64 noundef %1819)
          to label %1820 unwind label %1681

1820:                                             ; preds = %1796
  br label %1821

1821:                                             ; preds = %1820, %1788
  br label %2171

1822:                                             ; preds = %1753, %1742
  %1823 = load ptr, ptr %52, align 8, !tbaa !5
  %1824 = load i32, ptr %57, align 4, !tbaa !11
  %1825 = sext i32 %1824 to i64
  %1826 = getelementptr inbounds %struct.WeightSpec, ptr %1823, i64 %1825
  %1827 = getelementptr inbounds %struct.WeightSpec, ptr %1826, i32 0, i32 1
  %1828 = load i32, ptr %1827, align 8, !tbaa !51
  switch i32 %1828, label %2169 [
    i32 11, label %1829
    i32 3, label %1829
    i32 2, label %1829
    i32 6, label %1829
    i32 4, label %1829
    i32 9, label %1876
    i32 5, label %1876
    i32 1, label %1876
    i32 15, label %1978
    i32 7, label %2080
    i32 8, label %2080
  ]

1829:                                             ; preds = %1822, %1822, %1822, %1822, %1822
  %1830 = load ptr, ptr %52, align 8, !tbaa !5
  %1831 = load i32, ptr %57, align 4, !tbaa !11
  %1832 = sext i32 %1831 to i64
  %1833 = getelementptr inbounds %struct.WeightSpec, ptr %1830, i64 %1832
  %1834 = getelementptr inbounds %struct.WeightSpec, ptr %1833, i32 0, i32 1
  %1835 = load i32, ptr %1834, align 8, !tbaa !51
  %1836 = load ptr, ptr %6, align 8, !tbaa !5
  %1837 = getelementptr inbounds %struct.ModelSpec, ptr %1836, i32 0, i32 12
  %1838 = load ptr, ptr %1837, align 8, !tbaa !50
  %1839 = load i32, ptr %57, align 4, !tbaa !11
  %1840 = sext i32 %1839 to i64
  %1841 = getelementptr inbounds %struct.WeightSpec, ptr %1838, i64 %1840
  %1842 = getelementptr inbounds %struct.WeightSpec, ptr %1841, i32 0, i32 3
  %1843 = load ptr, ptr %1842, align 8, !tbaa !54
  %1844 = load ptr, ptr %52, align 8, !tbaa !5
  %1845 = load i32, ptr %57, align 4, !tbaa !11
  %1846 = sext i32 %1845 to i64
  %1847 = getelementptr inbounds %struct.WeightSpec, ptr %1844, i64 %1846
  %1848 = getelementptr inbounds %struct.WeightSpec, ptr %1847, i32 0, i32 3
  %1849 = load ptr, ptr %1848, align 8, !tbaa !54
  %1850 = load i32, ptr %58, align 4, !tbaa !11
  %1851 = invoke noundef i32 @_Z18transformFromFloat8DataTypePKfPvif(i32 noundef %1835, ptr noundef %1843, ptr noundef %1849, i32 noundef %1850, float noundef 1.000000e+00)
          to label %1852 unwind label %1681

1852:                                             ; preds = %1829
  %1853 = load ptr, ptr %52, align 8, !tbaa !5
  %1854 = load i32, ptr %57, align 4, !tbaa !11
  %1855 = sext i32 %1854 to i64
  %1856 = getelementptr inbounds %struct.WeightSpec, ptr %1853, i64 %1855
  %1857 = getelementptr inbounds %struct.WeightSpec, ptr %1856, i32 0, i32 1
  %1858 = load i32, ptr %1857, align 8, !tbaa !51
  %1859 = load ptr, ptr %6, align 8, !tbaa !5
  %1860 = getelementptr inbounds %struct.ModelSpec, ptr %1859, i32 0, i32 12
  %1861 = load ptr, ptr %1860, align 8, !tbaa !50
  %1862 = load i32, ptr %57, align 4, !tbaa !11
  %1863 = sext i32 %1862 to i64
  %1864 = getelementptr inbounds %struct.WeightSpec, ptr %1861, i64 %1863
  %1865 = getelementptr inbounds %struct.WeightSpec, ptr %1864, i32 0, i32 5
  %1866 = load ptr, ptr %1865, align 8, !tbaa !59
  %1867 = load ptr, ptr %52, align 8, !tbaa !5
  %1868 = load i32, ptr %57, align 4, !tbaa !11
  %1869 = sext i32 %1868 to i64
  %1870 = getelementptr inbounds %struct.WeightSpec, ptr %1867, i64 %1869
  %1871 = getelementptr inbounds %struct.WeightSpec, ptr %1870, i32 0, i32 5
  %1872 = load ptr, ptr %1871, align 8, !tbaa !59
  %1873 = load i32, ptr %84, align 4, !tbaa !11
  %1874 = invoke noundef i32 @_Z18transformFromFloat8DataTypePKfPvif(i32 noundef %1858, ptr noundef %1866, ptr noundef %1872, i32 noundef %1873, float noundef 1.000000e+00)
          to label %1875 unwind label %1681

1875:                                             ; preds = %1852
  br label %2170

1876:                                             ; preds = %1822, %1822, %1822
  %1877 = load ptr, ptr %52, align 8, !tbaa !5
  %1878 = load i32, ptr %57, align 4, !tbaa !11
  %1879 = sext i32 %1878 to i64
  %1880 = getelementptr inbounds %struct.WeightSpec, ptr %1877, i64 %1879
  %1881 = getelementptr inbounds %struct.WeightSpec, ptr %1880, i32 0, i32 7
  %1882 = load ptr, ptr %1881, align 8, !tbaa !56
  %1883 = icmp eq ptr %1882, null
  br i1 %1883, label %1884, label %1925

1884:                                             ; preds = %1876
  %1885 = load ptr, ptr %52, align 8, !tbaa !5
  %1886 = load i32, ptr %57, align 4, !tbaa !11
  %1887 = sext i32 %1886 to i64
  %1888 = getelementptr inbounds %struct.WeightSpec, ptr %1885, i64 %1887
  %1889 = getelementptr inbounds %struct.WeightSpec, ptr %1888, i32 0, i32 6
  store i32 1, ptr %1889, align 8, !tbaa !55
  %1890 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef 16)
          to label %1891 unwind label %1681

1891:                                             ; preds = %1884
  %1892 = load ptr, ptr %52, align 8, !tbaa !5
  %1893 = load i32, ptr %57, align 4, !tbaa !11
  %1894 = sext i32 %1893 to i64
  %1895 = getelementptr inbounds %struct.WeightSpec, ptr %1892, i64 %1894
  %1896 = getelementptr inbounds %struct.WeightSpec, ptr %1895, i32 0, i32 7
  store ptr %1890, ptr %1896, align 8, !tbaa !56
  %1897 = load ptr, ptr %52, align 8, !tbaa !5
  %1898 = load i32, ptr %57, align 4, !tbaa !11
  %1899 = sext i32 %1898 to i64
  %1900 = getelementptr inbounds %struct.WeightSpec, ptr %1897, i64 %1899
  %1901 = getelementptr inbounds %struct.WeightSpec, ptr %1900, i32 0, i32 7
  %1902 = load ptr, ptr %1901, align 8, !tbaa !56
  %1903 = getelementptr inbounds %struct.QuantSpec, ptr %1902, i64 0
  %1904 = getelementptr inbounds %struct.QuantSpec, ptr %1903, i32 0, i32 0
  store i32 1, ptr %1904, align 8, !tbaa !40
  %1905 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef 4)
          to label %1906 unwind label %1681

1906:                                             ; preds = %1891
  %1907 = load ptr, ptr %52, align 8, !tbaa !5
  %1908 = load i32, ptr %57, align 4, !tbaa !11
  %1909 = sext i32 %1908 to i64
  %1910 = getelementptr inbounds %struct.WeightSpec, ptr %1907, i64 %1909
  %1911 = getelementptr inbounds %struct.WeightSpec, ptr %1910, i32 0, i32 7
  %1912 = load ptr, ptr %1911, align 8, !tbaa !56
  %1913 = getelementptr inbounds %struct.QuantSpec, ptr %1912, i64 0
  %1914 = getelementptr inbounds %struct.QuantSpec, ptr %1913, i32 0, i32 1
  store ptr %1905, ptr %1914, align 8, !tbaa !42
  %1915 = load ptr, ptr %52, align 8, !tbaa !5
  %1916 = load i32, ptr %57, align 4, !tbaa !11
  %1917 = sext i32 %1916 to i64
  %1918 = getelementptr inbounds %struct.WeightSpec, ptr %1915, i64 %1917
  %1919 = getelementptr inbounds %struct.WeightSpec, ptr %1918, i32 0, i32 7
  %1920 = load ptr, ptr %1919, align 8, !tbaa !56
  %1921 = getelementptr inbounds %struct.QuantSpec, ptr %1920, i64 0
  %1922 = getelementptr inbounds %struct.QuantSpec, ptr %1921, i32 0, i32 1
  %1923 = load ptr, ptr %1922, align 8, !tbaa !42
  %1924 = getelementptr inbounds float, ptr %1923, i64 0
  store float -1.000000e+00, ptr %1924, align 4, !tbaa !48
  br label %1925

1925:                                             ; preds = %1906, %1876
  %1926 = load ptr, ptr %6, align 8, !tbaa !5
  %1927 = getelementptr inbounds %struct.ModelSpec, ptr %1926, i32 0, i32 12
  %1928 = load ptr, ptr %1927, align 8, !tbaa !50
  %1929 = load i32, ptr %57, align 4, !tbaa !11
  %1930 = sext i32 %1929 to i64
  %1931 = getelementptr inbounds %struct.WeightSpec, ptr %1928, i64 %1930
  %1932 = getelementptr inbounds %struct.WeightSpec, ptr %1931, i32 0, i32 3
  %1933 = load ptr, ptr %1932, align 8, !tbaa !54
  %1934 = load ptr, ptr %52, align 8, !tbaa !5
  %1935 = load i32, ptr %57, align 4, !tbaa !11
  %1936 = sext i32 %1935 to i64
  %1937 = getelementptr inbounds %struct.WeightSpec, ptr %1934, i64 %1936
  %1938 = getelementptr inbounds %struct.WeightSpec, ptr %1937, i32 0, i32 3
  %1939 = load ptr, ptr %1938, align 8, !tbaa !54
  %1940 = load i32, ptr %58, align 4, !tbaa !11
  %1941 = load ptr, ptr %52, align 8, !tbaa !5
  %1942 = load i32, ptr %57, align 4, !tbaa !11
  %1943 = sext i32 %1942 to i64
  %1944 = getelementptr inbounds %struct.WeightSpec, ptr %1941, i64 %1943
  %1945 = getelementptr inbounds %struct.WeightSpec, ptr %1944, i32 0, i32 7
  %1946 = load ptr, ptr %1945, align 8, !tbaa !56
  %1947 = getelementptr inbounds %struct.QuantSpec, ptr %1946, i64 0
  %1948 = getelementptr inbounds %struct.QuantSpec, ptr %1947, i32 0, i32 1
  %1949 = load ptr, ptr %1948, align 8, !tbaa !42
  invoke void @_Z26ws_datatype_converter_int8PhS_iPf(ptr noundef %1933, ptr noundef %1939, i32 noundef %1940, ptr noundef %1949)
          to label %1950 unwind label %1681

1950:                                             ; preds = %1925
  %1951 = load ptr, ptr %52, align 8, !tbaa !5
  %1952 = load i32, ptr %57, align 4, !tbaa !11
  %1953 = sext i32 %1952 to i64
  %1954 = getelementptr inbounds %struct.WeightSpec, ptr %1951, i64 %1953
  %1955 = getelementptr inbounds %struct.WeightSpec, ptr %1954, i32 0, i32 4
  %1956 = load i32, ptr %1955, align 8, !tbaa !58
  %1957 = icmp ugt i32 %1956, 0
  br i1 %1957, label %1958, label %1977

1958:                                             ; preds = %1950
  %1959 = load i32, ptr %83, align 4, !tbaa !13
  %1960 = load ptr, ptr %6, align 8, !tbaa !5
  %1961 = getelementptr inbounds %struct.ModelSpec, ptr %1960, i32 0, i32 12
  %1962 = load ptr, ptr %1961, align 8, !tbaa !50
  %1963 = load i32, ptr %57, align 4, !tbaa !11
  %1964 = sext i32 %1963 to i64
  %1965 = getelementptr inbounds %struct.WeightSpec, ptr %1962, i64 %1964
  %1966 = getelementptr inbounds %struct.WeightSpec, ptr %1965, i32 0, i32 5
  %1967 = load ptr, ptr %1966, align 8, !tbaa !59
  %1968 = load ptr, ptr %52, align 8, !tbaa !5
  %1969 = load i32, ptr %57, align 4, !tbaa !11
  %1970 = sext i32 %1969 to i64
  %1971 = getelementptr inbounds %struct.WeightSpec, ptr %1968, i64 %1970
  %1972 = getelementptr inbounds %struct.WeightSpec, ptr %1971, i32 0, i32 5
  %1973 = load ptr, ptr %1972, align 8, !tbaa !59
  %1974 = load i32, ptr %84, align 4, !tbaa !11
  %1975 = invoke noundef i32 @_Z18transformFromFloat8DataTypePKfPvif(i32 noundef %1959, ptr noundef %1967, ptr noundef %1973, i32 noundef %1974, float noundef 1.000000e+00)
          to label %1976 unwind label %1681

1976:                                             ; preds = %1958
  br label %1977

1977:                                             ; preds = %1976, %1950
  br label %2170

1978:                                             ; preds = %1822
  %1979 = load ptr, ptr %52, align 8, !tbaa !5
  %1980 = load i32, ptr %57, align 4, !tbaa !11
  %1981 = sext i32 %1980 to i64
  %1982 = getelementptr inbounds %struct.WeightSpec, ptr %1979, i64 %1981
  %1983 = getelementptr inbounds %struct.WeightSpec, ptr %1982, i32 0, i32 7
  %1984 = load ptr, ptr %1983, align 8, !tbaa !56
  %1985 = icmp eq ptr %1984, null
  br i1 %1985, label %1986, label %2027

1986:                                             ; preds = %1978
  %1987 = load ptr, ptr %52, align 8, !tbaa !5
  %1988 = load i32, ptr %57, align 4, !tbaa !11
  %1989 = sext i32 %1988 to i64
  %1990 = getelementptr inbounds %struct.WeightSpec, ptr %1987, i64 %1989
  %1991 = getelementptr inbounds %struct.WeightSpec, ptr %1990, i32 0, i32 6
  store i32 1, ptr %1991, align 8, !tbaa !55
  %1992 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef 16)
          to label %1993 unwind label %1681

1993:                                             ; preds = %1986
  %1994 = load ptr, ptr %52, align 8, !tbaa !5
  %1995 = load i32, ptr %57, align 4, !tbaa !11
  %1996 = sext i32 %1995 to i64
  %1997 = getelementptr inbounds %struct.WeightSpec, ptr %1994, i64 %1996
  %1998 = getelementptr inbounds %struct.WeightSpec, ptr %1997, i32 0, i32 7
  store ptr %1992, ptr %1998, align 8, !tbaa !56
  %1999 = load ptr, ptr %52, align 8, !tbaa !5
  %2000 = load i32, ptr %57, align 4, !tbaa !11
  %2001 = sext i32 %2000 to i64
  %2002 = getelementptr inbounds %struct.WeightSpec, ptr %1999, i64 %2001
  %2003 = getelementptr inbounds %struct.WeightSpec, ptr %2002, i32 0, i32 7
  %2004 = load ptr, ptr %2003, align 8, !tbaa !56
  %2005 = getelementptr inbounds %struct.QuantSpec, ptr %2004, i64 0
  %2006 = getelementptr inbounds %struct.QuantSpec, ptr %2005, i32 0, i32 0
  store i32 1, ptr %2006, align 8, !tbaa !40
  %2007 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef 4)
          to label %2008 unwind label %1681

2008:                                             ; preds = %1993
  %2009 = load ptr, ptr %52, align 8, !tbaa !5
  %2010 = load i32, ptr %57, align 4, !tbaa !11
  %2011 = sext i32 %2010 to i64
  %2012 = getelementptr inbounds %struct.WeightSpec, ptr %2009, i64 %2011
  %2013 = getelementptr inbounds %struct.WeightSpec, ptr %2012, i32 0, i32 7
  %2014 = load ptr, ptr %2013, align 8, !tbaa !56
  %2015 = getelementptr inbounds %struct.QuantSpec, ptr %2014, i64 0
  %2016 = getelementptr inbounds %struct.QuantSpec, ptr %2015, i32 0, i32 1
  store ptr %2007, ptr %2016, align 8, !tbaa !42
  %2017 = load ptr, ptr %52, align 8, !tbaa !5
  %2018 = load i32, ptr %57, align 4, !tbaa !11
  %2019 = sext i32 %2018 to i64
  %2020 = getelementptr inbounds %struct.WeightSpec, ptr %2017, i64 %2019
  %2021 = getelementptr inbounds %struct.WeightSpec, ptr %2020, i32 0, i32 7
  %2022 = load ptr, ptr %2021, align 8, !tbaa !56
  %2023 = getelementptr inbounds %struct.QuantSpec, ptr %2022, i64 0
  %2024 = getelementptr inbounds %struct.QuantSpec, ptr %2023, i32 0, i32 1
  %2025 = load ptr, ptr %2024, align 8, !tbaa !42
  %2026 = getelementptr inbounds float, ptr %2025, i64 0
  store float -1.000000e+00, ptr %2026, align 4, !tbaa !48
  br label %2027

2027:                                             ; preds = %2008, %1978
  %2028 = load ptr, ptr %6, align 8, !tbaa !5
  %2029 = getelementptr inbounds %struct.ModelSpec, ptr %2028, i32 0, i32 12
  %2030 = load ptr, ptr %2029, align 8, !tbaa !50
  %2031 = load i32, ptr %57, align 4, !tbaa !11
  %2032 = sext i32 %2031 to i64
  %2033 = getelementptr inbounds %struct.WeightSpec, ptr %2030, i64 %2032
  %2034 = getelementptr inbounds %struct.WeightSpec, ptr %2033, i32 0, i32 3
  %2035 = load ptr, ptr %2034, align 8, !tbaa !54
  %2036 = load ptr, ptr %52, align 8, !tbaa !5
  %2037 = load i32, ptr %57, align 4, !tbaa !11
  %2038 = sext i32 %2037 to i64
  %2039 = getelementptr inbounds %struct.WeightSpec, ptr %2036, i64 %2038
  %2040 = getelementptr inbounds %struct.WeightSpec, ptr %2039, i32 0, i32 3
  %2041 = load ptr, ptr %2040, align 8, !tbaa !54
  %2042 = load i32, ptr %58, align 4, !tbaa !11
  %2043 = load ptr, ptr %52, align 8, !tbaa !5
  %2044 = load i32, ptr %57, align 4, !tbaa !11
  %2045 = sext i32 %2044 to i64
  %2046 = getelementptr inbounds %struct.WeightSpec, ptr %2043, i64 %2045
  %2047 = getelementptr inbounds %struct.WeightSpec, ptr %2046, i32 0, i32 7
  %2048 = load ptr, ptr %2047, align 8, !tbaa !56
  %2049 = getelementptr inbounds %struct.QuantSpec, ptr %2048, i64 0
  %2050 = getelementptr inbounds %struct.QuantSpec, ptr %2049, i32 0, i32 1
  %2051 = load ptr, ptr %2050, align 8, !tbaa !42
  invoke void @_Z26ws_datatype_converter_int4PhS_iPf(ptr noundef %2035, ptr noundef %2041, i32 noundef %2042, ptr noundef %2051)
          to label %2052 unwind label %1681

2052:                                             ; preds = %2027
  %2053 = load ptr, ptr %52, align 8, !tbaa !5
  %2054 = load i32, ptr %57, align 4, !tbaa !11
  %2055 = sext i32 %2054 to i64
  %2056 = getelementptr inbounds %struct.WeightSpec, ptr %2053, i64 %2055
  %2057 = getelementptr inbounds %struct.WeightSpec, ptr %2056, i32 0, i32 4
  %2058 = load i32, ptr %2057, align 8, !tbaa !58
  %2059 = icmp ugt i32 %2058, 0
  br i1 %2059, label %2060, label %2079

2060:                                             ; preds = %2052
  %2061 = load i32, ptr %83, align 4, !tbaa !13
  %2062 = load ptr, ptr %6, align 8, !tbaa !5
  %2063 = getelementptr inbounds %struct.ModelSpec, ptr %2062, i32 0, i32 12
  %2064 = load ptr, ptr %2063, align 8, !tbaa !50
  %2065 = load i32, ptr %57, align 4, !tbaa !11
  %2066 = sext i32 %2065 to i64
  %2067 = getelementptr inbounds %struct.WeightSpec, ptr %2064, i64 %2066
  %2068 = getelementptr inbounds %struct.WeightSpec, ptr %2067, i32 0, i32 5
  %2069 = load ptr, ptr %2068, align 8, !tbaa !59
  %2070 = load ptr, ptr %52, align 8, !tbaa !5
  %2071 = load i32, ptr %57, align 4, !tbaa !11
  %2072 = sext i32 %2071 to i64
  %2073 = getelementptr inbounds %struct.WeightSpec, ptr %2070, i64 %2072
  %2074 = getelementptr inbounds %struct.WeightSpec, ptr %2073, i32 0, i32 5
  %2075 = load ptr, ptr %2074, align 8, !tbaa !59
  %2076 = load i32, ptr %84, align 4, !tbaa !11
  %2077 = invoke noundef i32 @_Z18transformFromFloat8DataTypePKfPvif(i32 noundef %2061, ptr noundef %2069, ptr noundef %2075, i32 noundef %2076, float noundef 1.000000e+00)
          to label %2078 unwind label %1681

2078:                                             ; preds = %2060
  br label %2079

2079:                                             ; preds = %2078, %2052
  br label %2170

2080:                                             ; preds = %1822, %1822
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #10
  %2081 = load ptr, ptr %6, align 8, !tbaa !5
  %2082 = getelementptr inbounds %struct.ModelSpec, ptr %2081, i32 0, i32 12
  %2083 = load ptr, ptr %2082, align 8, !tbaa !50
  %2084 = load i32, ptr %57, align 4, !tbaa !11
  %2085 = sext i32 %2084 to i64
  %2086 = getelementptr inbounds %struct.WeightSpec, ptr %2083, i64 %2085
  %2087 = getelementptr inbounds %struct.WeightSpec, ptr %2086, i32 0, i32 3
  %2088 = load ptr, ptr %2087, align 8, !tbaa !54
  %2089 = load ptr, ptr %52, align 8, !tbaa !5
  %2090 = load i32, ptr %57, align 4, !tbaa !11
  %2091 = sext i32 %2090 to i64
  %2092 = getelementptr inbounds %struct.WeightSpec, ptr %2089, i64 %2091
  %2093 = getelementptr inbounds %struct.WeightSpec, ptr %2092, i32 0, i32 3
  %2094 = load ptr, ptr %2093, align 8, !tbaa !54
  %2095 = load i32, ptr %58, align 4, !tbaa !11
  %2096 = call noundef float @_Z25ws_datatype_converter_bnnPhS_i(ptr noundef %2088, ptr noundef %2094, i32 noundef %2095)
  store float %2096, ptr %88, align 4, !tbaa !48
  %2097 = load ptr, ptr %6, align 8, !tbaa !5
  %2098 = getelementptr inbounds %struct.ModelSpec, ptr %2097, i32 0, i32 12
  %2099 = load ptr, ptr %2098, align 8, !tbaa !50
  %2100 = load i32, ptr %57, align 4, !tbaa !11
  %2101 = sext i32 %2100 to i64
  %2102 = getelementptr inbounds %struct.WeightSpec, ptr %2099, i64 %2101
  %2103 = getelementptr inbounds %struct.WeightSpec, ptr %2102, i32 0, i32 5
  %2104 = load ptr, ptr %2103, align 8, !tbaa !59
  %2105 = load ptr, ptr %52, align 8, !tbaa !5
  %2106 = load i32, ptr %57, align 4, !tbaa !11
  %2107 = sext i32 %2106 to i64
  %2108 = getelementptr inbounds %struct.WeightSpec, ptr %2105, i64 %2107
  %2109 = getelementptr inbounds %struct.WeightSpec, ptr %2108, i32 0, i32 5
  %2110 = load ptr, ptr %2109, align 8, !tbaa !59
  %2111 = load i32, ptr %84, align 4, !tbaa !11
  %2112 = invoke noundef i32 @_Z18transformFromFloat8DataTypePKfPvif(i32 noundef 4, ptr noundef %2104, ptr noundef %2110, i32 noundef %2111, float noundef 1.000000e+00)
          to label %2113 unwind label %2123

2113:                                             ; preds = %2080
  %2114 = load float, ptr %88, align 4, !tbaa !48
  %2115 = fcmp une float 1.000000e+00, %2114
  br i1 %2115, label %2116, label %2167

2116:                                             ; preds = %2113
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #10
  store i32 0, ptr %90, align 4, !tbaa !11
  br label %2117

2117:                                             ; preds = %2159, %2116
  %2118 = load i32, ptr %90, align 4, !tbaa !11
  %2119 = load i32, ptr %84, align 4, !tbaa !11
  %2120 = sdiv i32 %2119, 2
  %2121 = icmp slt i32 %2118, %2120
  br i1 %2121, label %2127, label %2122

2122:                                             ; preds = %2117
  store i32 31, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #10
  br label %2166

2123:                                             ; preds = %2080
  %2124 = landingpad { ptr, i32 }
          cleanup
  %2125 = extractvalue { ptr, i32 } %2124, 0
  store ptr %2125, ptr %14, align 8
  %2126 = extractvalue { ptr, i32 } %2124, 1
  store i32 %2126, ptr %15, align 4
  br label %2168

2127:                                             ; preds = %2117
  %2128 = load ptr, ptr %52, align 8, !tbaa !5
  %2129 = load i32, ptr %57, align 4, !tbaa !11
  %2130 = sext i32 %2129 to i64
  %2131 = getelementptr inbounds %struct.WeightSpec, ptr %2128, i64 %2130
  %2132 = getelementptr inbounds %struct.WeightSpec, ptr %2131, i32 0, i32 5
  %2133 = load ptr, ptr %2132, align 8, !tbaa !59
  %2134 = load i32, ptr %90, align 4, !tbaa !11
  %2135 = invoke noundef i32 @_Z7bytesOf8DataType(i32 noundef 4)
          to label %2136 unwind label %2162

2136:                                             ; preds = %2127
  %2137 = mul i32 %2134, %2135
  %2138 = zext i32 %2137 to i64
  %2139 = getelementptr inbounds i8, ptr %2133, i64 %2138
  %2140 = invoke noundef i32 @_Z16transformToFloat8DataTypePKvPfif(i32 noundef 4, ptr noundef %2139, ptr noundef %89, i32 noundef 1, float noundef 1.000000e+00)
          to label %2141 unwind label %2162

2141:                                             ; preds = %2136
  %2142 = load float, ptr %88, align 4, !tbaa !48
  %2143 = load float, ptr %89, align 4, !tbaa !48
  %2144 = fmul float %2143, %2142
  store float %2144, ptr %89, align 4, !tbaa !48
  %2145 = load ptr, ptr %52, align 8, !tbaa !5
  %2146 = load i32, ptr %57, align 4, !tbaa !11
  %2147 = sext i32 %2146 to i64
  %2148 = getelementptr inbounds %struct.WeightSpec, ptr %2145, i64 %2147
  %2149 = getelementptr inbounds %struct.WeightSpec, ptr %2148, i32 0, i32 5
  %2150 = load ptr, ptr %2149, align 8, !tbaa !59
  %2151 = load i32, ptr %90, align 4, !tbaa !11
  %2152 = invoke noundef i32 @_Z7bytesOf8DataType(i32 noundef 4)
          to label %2153 unwind label %2162

2153:                                             ; preds = %2141
  %2154 = mul i32 %2151, %2152
  %2155 = zext i32 %2154 to i64
  %2156 = getelementptr inbounds i8, ptr %2150, i64 %2155
  %2157 = invoke noundef i32 @_Z18transformFromFloat8DataTypePKfPvif(i32 noundef 4, ptr noundef %89, ptr noundef %2156, i32 noundef 1, float noundef 1.000000e+00)
          to label %2158 unwind label %2162

2158:                                             ; preds = %2153
  br label %2159

2159:                                             ; preds = %2158
  %2160 = load i32, ptr %90, align 4, !tbaa !11
  %2161 = add nsw i32 %2160, 1
  store i32 %2161, ptr %90, align 4, !tbaa !11
  br label %2117, !llvm.loop !60

2162:                                             ; preds = %2153, %2141, %2136, %2127
  %2163 = landingpad { ptr, i32 }
          cleanup
  %2164 = extractvalue { ptr, i32 } %2163, 0
  store ptr %2164, ptr %14, align 8
  %2165 = extractvalue { ptr, i32 } %2163, 1
  store i32 %2165, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #10
  br label %2168

2166:                                             ; preds = %2122
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #10
  br label %2167

2167:                                             ; preds = %2166, %2113
  store i32 30, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #10
  br label %2170

2168:                                             ; preds = %2162, %2123
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #10
  br label %2178

2169:                                             ; preds = %1822
  store i32 51, ptr %5, align 4
  store i32 1, ptr %29, align 4
  br label %2172

2170:                                             ; preds = %2167, %2079, %1977, %1875
  br label %2171

2171:                                             ; preds = %2170, %1821
  store i32 0, ptr %29, align 4
  br label %2172

2172:                                             ; preds = %2171, %2169
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #10
  %2173 = load i32, ptr %29, align 4
  switch i32 %2173, label %2180 [
    i32 0, label %2174
  ]

2174:                                             ; preds = %2172
  br label %2175

2175:                                             ; preds = %2174
  %2176 = load i32, ptr %57, align 4, !tbaa !11
  %2177 = add nsw i32 %2176, 1
  store i32 %2177, ptr %57, align 4, !tbaa !11
  br label %1044, !llvm.loop !61

2178:                                             ; preds = %2168, %1709, %1681
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #10
  br label %2179

2179:                                             ; preds = %2178, %1641, %1491, %1140
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #10
  br label %2182

2180:                                             ; preds = %2172, %1050
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #10
  %2181 = load i32, ptr %29, align 4
  switch i32 %2181, label %2489 [
    i32 24, label %2183
  ]

2182:                                             ; preds = %2179, %1136
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #10
  br label %2491

2183:                                             ; preds = %2180
  %2184 = load ptr, ptr %52, align 8, !tbaa !5
  %2185 = load ptr, ptr %7, align 8, !tbaa !5
  %2186 = getelementptr inbounds %struct.ModelSpec, ptr %2185, i32 0, i32 12
  store ptr %2184, ptr %2186, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #10
  store i32 0, ptr %91, align 4, !tbaa !11
  br label %2187

2187:                                             ; preds = %2230, %2183
  %2188 = load i32, ptr %91, align 4, !tbaa !11
  %2189 = load ptr, ptr %7, align 8, !tbaa !5
  %2190 = getelementptr inbounds %struct.ModelSpec, ptr %2189, i32 0, i32 9
  %2191 = load i32, ptr %2190, align 8, !tbaa !26
  %2192 = icmp slt i32 %2188, %2191
  br i1 %2192, label %2194, label %2193

2193:                                             ; preds = %2187
  store i32 34, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #10
  br label %2233

2194:                                             ; preds = %2187
  %2195 = load ptr, ptr %26, align 8, !tbaa !5
  %2196 = load i32, ptr %91, align 4, !tbaa !11
  %2197 = sext i32 %2196 to i64
  %2198 = getelementptr inbounds %struct.OperatorSpec, ptr %2195, i64 %2197
  %2199 = getelementptr inbounds %struct.OperatorSpec, ptr %2198, i32 0, i32 1
  %2200 = load i32, ptr %2199, align 8, !tbaa !28
  switch i32 %2200, label %2228 [
    i32 50, label %2201
  ]

2201:                                             ; preds = %2194
  call void @llvm.lifetime.start.p0(i64 32, ptr %92) #10
  %2202 = load ptr, ptr %26, align 8, !tbaa !5
  %2203 = load i32, ptr %91, align 4, !tbaa !11
  %2204 = sext i32 %2203 to i64
  %2205 = getelementptr inbounds %struct.OperatorSpec, ptr %2202, i64 %2204
  %2206 = getelementptr inbounds %struct.OperatorSpec, ptr %2205, i32 0, i32 0
  %2207 = getelementptr inbounds [128 x i8], ptr %2206, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 1, ptr %93) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef %2207, ptr noundef nonnull align 1 dereferenceable(1) %93)
          to label %2208 unwind label %2219

2208:                                             ; preds = %2201
  %2209 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeSt4lessIS5_ESaISt4pairIKS5_S6_EEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %27, ptr noundef nonnull align 8 dereferenceable(32) %92)
          to label %2210 unwind label %2223

2210:                                             ; preds = %2208
  %2211 = load i32, ptr %2209, align 4, !tbaa !13
  %2212 = load ptr, ptr %26, align 8, !tbaa !5
  %2213 = load i32, ptr %91, align 4, !tbaa !11
  %2214 = sext i32 %2213 to i64
  %2215 = getelementptr inbounds %struct.OperatorSpec, ptr %2212, i64 %2214
  %2216 = getelementptr inbounds %struct.OperatorSpec, ptr %2215, i32 0, i32 11
  %2217 = getelementptr inbounds %struct.SharedWeightParamSpec, ptr %2216, i32 0, i32 0
  %2218 = getelementptr inbounds %struct.TensorDesc, ptr %2217, i32 0, i32 0
  store i32 %2211, ptr %2218, align 8, !tbaa !45
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %92) #10
  br label %2229

2219:                                             ; preds = %2201
  %2220 = landingpad { ptr, i32 }
          cleanup
  %2221 = extractvalue { ptr, i32 } %2220, 0
  store ptr %2221, ptr %14, align 8
  %2222 = extractvalue { ptr, i32 } %2220, 1
  store i32 %2222, ptr %15, align 4
  br label %2227

2223:                                             ; preds = %2208
  %2224 = landingpad { ptr, i32 }
          cleanup
  %2225 = extractvalue { ptr, i32 } %2224, 0
  store ptr %2225, ptr %14, align 8
  %2226 = extractvalue { ptr, i32 } %2224, 1
  store i32 %2226, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #10
  br label %2227

2227:                                             ; preds = %2223, %2219
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %92) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #10
  br label %2491

2228:                                             ; preds = %2194
  br label %2229

2229:                                             ; preds = %2228, %2210
  br label %2230

2230:                                             ; preds = %2229
  %2231 = load i32, ptr %91, align 4, !tbaa !11
  %2232 = add nsw i32 %2231, 1
  store i32 %2232, ptr %91, align 4, !tbaa !11
  br label %2187, !llvm.loop !62

2233:                                             ; preds = %2193
  %2234 = load ptr, ptr %6, align 8, !tbaa !5
  %2235 = getelementptr inbounds %struct.ModelSpec, ptr %2234, i32 0, i32 14
  %2236 = load ptr, ptr %2235, align 8, !tbaa !63
  %2237 = icmp ne ptr null, %2236
  br i1 %2237, label %2238, label %2483

2238:                                             ; preds = %2233
  %2239 = load ptr, ptr %6, align 8, !tbaa !5
  %2240 = getelementptr inbounds %struct.ModelSpec, ptr %2239, i32 0, i32 13
  %2241 = load i32, ptr %2240, align 8, !tbaa !64
  %2242 = load ptr, ptr %7, align 8, !tbaa !5
  %2243 = getelementptr inbounds %struct.ModelSpec, ptr %2242, i32 0, i32 13
  store i32 %2241, ptr %2243, align 8, !tbaa !64
  %2244 = load ptr, ptr %7, align 8, !tbaa !5
  %2245 = getelementptr inbounds %struct.ModelSpec, ptr %2244, i32 0, i32 13
  %2246 = load i32, ptr %2245, align 8, !tbaa !64
  %2247 = sext i32 %2246 to i64
  %2248 = mul i64 %2247, 160
  %2249 = trunc i64 %2248 to i32
  %2250 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef %2249)
          to label %2251 unwind label %2261

2251:                                             ; preds = %2238
  %2252 = load ptr, ptr %7, align 8, !tbaa !5
  %2253 = getelementptr inbounds %struct.ModelSpec, ptr %2252, i32 0, i32 14
  store ptr %2250, ptr %2253, align 8, !tbaa !63
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #10
  store i32 0, ptr %94, align 4, !tbaa !11
  br label %2254

2254:                                             ; preds = %2478, %2251
  %2255 = load i32, ptr %94, align 4, !tbaa !11
  %2256 = load ptr, ptr %7, align 8, !tbaa !5
  %2257 = getelementptr inbounds %struct.ModelSpec, ptr %2256, i32 0, i32 13
  %2258 = load i32, ptr %2257, align 8, !tbaa !64
  %2259 = icmp slt i32 %2255, %2258
  br i1 %2259, label %2265, label %2260

2260:                                             ; preds = %2254
  store i32 38, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #10
  br label %2482

2261:                                             ; preds = %2238
  %2262 = landingpad { ptr, i32 }
          cleanup
  %2263 = extractvalue { ptr, i32 } %2262, 0
  store ptr %2263, ptr %14, align 8
  %2264 = extractvalue { ptr, i32 } %2262, 1
  store i32 %2264, ptr %15, align 4
  br label %2491

2265:                                             ; preds = %2254
  %2266 = load ptr, ptr %7, align 8, !tbaa !5
  %2267 = getelementptr inbounds %struct.ModelSpec, ptr %2266, i32 0, i32 14
  %2268 = load ptr, ptr %2267, align 8, !tbaa !63
  %2269 = load i32, ptr %94, align 4, !tbaa !11
  %2270 = sext i32 %2269 to i64
  %2271 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2268, i64 %2270
  %2272 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2271, i32 0, i32 0
  %2273 = getelementptr inbounds [128 x i8], ptr %2272, i64 0, i64 0
  %2274 = load ptr, ptr %6, align 8, !tbaa !5
  %2275 = getelementptr inbounds %struct.ModelSpec, ptr %2274, i32 0, i32 14
  %2276 = load ptr, ptr %2275, align 8, !tbaa !63
  %2277 = load i32, ptr %94, align 4, !tbaa !11
  %2278 = sext i32 %2277 to i64
  %2279 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2276, i64 %2278
  %2280 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2279, i32 0, i32 0
  %2281 = getelementptr inbounds [128 x i8], ptr %2280, i64 0, i64 0
  %2282 = invoke noundef i32 @_Z8str_copyPcPKcii(ptr noundef %2273, ptr noundef %2281, i32 noundef 128, i32 noundef 128)
          to label %2283 unwind label %2331

2283:                                             ; preds = %2265
  %2284 = load ptr, ptr %6, align 8, !tbaa !5
  %2285 = getelementptr inbounds %struct.ModelSpec, ptr %2284, i32 0, i32 14
  %2286 = load ptr, ptr %2285, align 8, !tbaa !63
  %2287 = load i32, ptr %94, align 4, !tbaa !11
  %2288 = sext i32 %2287 to i64
  %2289 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2286, i64 %2288
  %2290 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2289, i32 0, i32 1
  %2291 = load i32, ptr %2290, align 8, !tbaa !65
  %2292 = load ptr, ptr %7, align 8, !tbaa !5
  %2293 = getelementptr inbounds %struct.ModelSpec, ptr %2292, i32 0, i32 14
  %2294 = load ptr, ptr %2293, align 8, !tbaa !63
  %2295 = load i32, ptr %94, align 4, !tbaa !11
  %2296 = sext i32 %2295 to i64
  %2297 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2294, i64 %2296
  %2298 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2297, i32 0, i32 1
  store i32 %2291, ptr %2298, align 8, !tbaa !65
  %2299 = load ptr, ptr %7, align 8, !tbaa !5
  %2300 = getelementptr inbounds %struct.ModelSpec, ptr %2299, i32 0, i32 14
  %2301 = load ptr, ptr %2300, align 8, !tbaa !63
  %2302 = load i32, ptr %94, align 4, !tbaa !11
  %2303 = sext i32 %2302 to i64
  %2304 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2301, i64 %2303
  %2305 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2304, i32 0, i32 1
  %2306 = load i32, ptr %2305, align 8, !tbaa !65
  %2307 = zext i32 %2306 to i64
  %2308 = mul i64 %2307, 8
  %2309 = trunc i64 %2308 to i32
  %2310 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef %2309)
          to label %2311 unwind label %2331

2311:                                             ; preds = %2283
  %2312 = load ptr, ptr %7, align 8, !tbaa !5
  %2313 = getelementptr inbounds %struct.ModelSpec, ptr %2312, i32 0, i32 14
  %2314 = load ptr, ptr %2313, align 8, !tbaa !63
  %2315 = load i32, ptr %94, align 4, !tbaa !11
  %2316 = sext i32 %2315 to i64
  %2317 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2314, i64 %2316
  %2318 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2317, i32 0, i32 2
  store ptr %2310, ptr %2318, align 8, !tbaa !67
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #10
  store i32 0, ptr %95, align 4, !tbaa !11
  br label %2319

2319:                                             ; preds = %2375, %2311
  %2320 = load i32, ptr %95, align 4, !tbaa !11
  %2321 = load ptr, ptr %7, align 8, !tbaa !5
  %2322 = getelementptr inbounds %struct.ModelSpec, ptr %2321, i32 0, i32 14
  %2323 = load ptr, ptr %2322, align 8, !tbaa !63
  %2324 = load i32, ptr %94, align 4, !tbaa !11
  %2325 = sext i32 %2324 to i64
  %2326 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2323, i64 %2325
  %2327 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2326, i32 0, i32 1
  %2328 = load i32, ptr %2327, align 8, !tbaa !65
  %2329 = icmp ult i32 %2320, %2328
  br i1 %2329, label %2335, label %2330

2330:                                             ; preds = %2319
  store i32 41, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #10
  br label %2382

2331:                                             ; preds = %2382, %2283, %2265
  %2332 = landingpad { ptr, i32 }
          cleanup
  %2333 = extractvalue { ptr, i32 } %2332, 0
  store ptr %2333, ptr %14, align 8
  %2334 = extractvalue { ptr, i32 } %2332, 1
  store i32 %2334, ptr %15, align 4
  br label %2481

2335:                                             ; preds = %2319
  %2336 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef 128)
          to label %2337 unwind label %2378

2337:                                             ; preds = %2335
  %2338 = load ptr, ptr %7, align 8, !tbaa !5
  %2339 = getelementptr inbounds %struct.ModelSpec, ptr %2338, i32 0, i32 14
  %2340 = load ptr, ptr %2339, align 8, !tbaa !63
  %2341 = load i32, ptr %94, align 4, !tbaa !11
  %2342 = sext i32 %2341 to i64
  %2343 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2340, i64 %2342
  %2344 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2343, i32 0, i32 2
  %2345 = load ptr, ptr %2344, align 8, !tbaa !67
  %2346 = load i32, ptr %95, align 4, !tbaa !11
  %2347 = zext i32 %2346 to i64
  %2348 = getelementptr inbounds ptr, ptr %2345, i64 %2347
  store ptr %2336, ptr %2348, align 8, !tbaa !5
  %2349 = load ptr, ptr %7, align 8, !tbaa !5
  %2350 = getelementptr inbounds %struct.ModelSpec, ptr %2349, i32 0, i32 14
  %2351 = load ptr, ptr %2350, align 8, !tbaa !63
  %2352 = load i32, ptr %94, align 4, !tbaa !11
  %2353 = sext i32 %2352 to i64
  %2354 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2351, i64 %2353
  %2355 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2354, i32 0, i32 2
  %2356 = load ptr, ptr %2355, align 8, !tbaa !67
  %2357 = load i32, ptr %95, align 4, !tbaa !11
  %2358 = zext i32 %2357 to i64
  %2359 = getelementptr inbounds ptr, ptr %2356, i64 %2358
  %2360 = load ptr, ptr %2359, align 8, !tbaa !5
  %2361 = load ptr, ptr %6, align 8, !tbaa !5
  %2362 = getelementptr inbounds %struct.ModelSpec, ptr %2361, i32 0, i32 14
  %2363 = load ptr, ptr %2362, align 8, !tbaa !63
  %2364 = load i32, ptr %94, align 4, !tbaa !11
  %2365 = sext i32 %2364 to i64
  %2366 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2363, i64 %2365
  %2367 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2366, i32 0, i32 2
  %2368 = load ptr, ptr %2367, align 8, !tbaa !67
  %2369 = load i32, ptr %95, align 4, !tbaa !11
  %2370 = zext i32 %2369 to i64
  %2371 = getelementptr inbounds ptr, ptr %2368, i64 %2370
  %2372 = load ptr, ptr %2371, align 8, !tbaa !5
  %2373 = invoke noundef i32 @_Z8str_copyPcPKcii(ptr noundef %2360, ptr noundef %2372, i32 noundef 128, i32 noundef 128)
          to label %2374 unwind label %2378

2374:                                             ; preds = %2337
  br label %2375

2375:                                             ; preds = %2374
  %2376 = load i32, ptr %95, align 4, !tbaa !11
  %2377 = add i32 %2376, 1
  store i32 %2377, ptr %95, align 4, !tbaa !11
  br label %2319, !llvm.loop !68

2378:                                             ; preds = %2337, %2335
  %2379 = landingpad { ptr, i32 }
          cleanup
  %2380 = extractvalue { ptr, i32 } %2379, 0
  store ptr %2380, ptr %14, align 8
  %2381 = extractvalue { ptr, i32 } %2379, 1
  store i32 %2381, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #10
  br label %2481

2382:                                             ; preds = %2330
  %2383 = load ptr, ptr %6, align 8, !tbaa !5
  %2384 = getelementptr inbounds %struct.ModelSpec, ptr %2383, i32 0, i32 14
  %2385 = load ptr, ptr %2384, align 8, !tbaa !63
  %2386 = load i32, ptr %94, align 4, !tbaa !11
  %2387 = sext i32 %2386 to i64
  %2388 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2385, i64 %2387
  %2389 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2388, i32 0, i32 3
  %2390 = load i32, ptr %2389, align 8, !tbaa !69
  %2391 = load ptr, ptr %7, align 8, !tbaa !5
  %2392 = getelementptr inbounds %struct.ModelSpec, ptr %2391, i32 0, i32 14
  %2393 = load ptr, ptr %2392, align 8, !tbaa !63
  %2394 = load i32, ptr %94, align 4, !tbaa !11
  %2395 = sext i32 %2394 to i64
  %2396 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2393, i64 %2395
  %2397 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2396, i32 0, i32 3
  store i32 %2390, ptr %2397, align 8, !tbaa !69
  %2398 = load ptr, ptr %7, align 8, !tbaa !5
  %2399 = getelementptr inbounds %struct.ModelSpec, ptr %2398, i32 0, i32 14
  %2400 = load ptr, ptr %2399, align 8, !tbaa !63
  %2401 = load i32, ptr %94, align 4, !tbaa !11
  %2402 = sext i32 %2401 to i64
  %2403 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2400, i64 %2402
  %2404 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2403, i32 0, i32 3
  %2405 = load i32, ptr %2404, align 8, !tbaa !69
  %2406 = zext i32 %2405 to i64
  %2407 = mul i64 %2406, 8
  %2408 = trunc i64 %2407 to i32
  %2409 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef %2408)
          to label %2410 unwind label %2331

2410:                                             ; preds = %2382
  %2411 = load ptr, ptr %7, align 8, !tbaa !5
  %2412 = getelementptr inbounds %struct.ModelSpec, ptr %2411, i32 0, i32 14
  %2413 = load ptr, ptr %2412, align 8, !tbaa !63
  %2414 = load i32, ptr %94, align 4, !tbaa !11
  %2415 = sext i32 %2414 to i64
  %2416 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2413, i64 %2415
  %2417 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2416, i32 0, i32 4
  store ptr %2409, ptr %2417, align 8, !tbaa !70
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #10
  store i32 0, ptr %96, align 4, !tbaa !11
  br label %2418

2418:                                             ; preds = %2470, %2410
  %2419 = load i32, ptr %96, align 4, !tbaa !11
  %2420 = load ptr, ptr %7, align 8, !tbaa !5
  %2421 = getelementptr inbounds %struct.ModelSpec, ptr %2420, i32 0, i32 14
  %2422 = load ptr, ptr %2421, align 8, !tbaa !63
  %2423 = load i32, ptr %94, align 4, !tbaa !11
  %2424 = sext i32 %2423 to i64
  %2425 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2422, i64 %2424
  %2426 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2425, i32 0, i32 3
  %2427 = load i32, ptr %2426, align 8, !tbaa !69
  %2428 = icmp ult i32 %2419, %2427
  br i1 %2428, label %2430, label %2429

2429:                                             ; preds = %2418
  store i32 44, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #10
  br label %2477

2430:                                             ; preds = %2418
  %2431 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef 128)
          to label %2432 unwind label %2473

2432:                                             ; preds = %2430
  %2433 = load ptr, ptr %7, align 8, !tbaa !5
  %2434 = getelementptr inbounds %struct.ModelSpec, ptr %2433, i32 0, i32 14
  %2435 = load ptr, ptr %2434, align 8, !tbaa !63
  %2436 = load i32, ptr %94, align 4, !tbaa !11
  %2437 = sext i32 %2436 to i64
  %2438 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2435, i64 %2437
  %2439 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2438, i32 0, i32 4
  %2440 = load ptr, ptr %2439, align 8, !tbaa !70
  %2441 = load i32, ptr %96, align 4, !tbaa !11
  %2442 = zext i32 %2441 to i64
  %2443 = getelementptr inbounds ptr, ptr %2440, i64 %2442
  store ptr %2431, ptr %2443, align 8, !tbaa !5
  %2444 = load ptr, ptr %7, align 8, !tbaa !5
  %2445 = getelementptr inbounds %struct.ModelSpec, ptr %2444, i32 0, i32 14
  %2446 = load ptr, ptr %2445, align 8, !tbaa !63
  %2447 = load i32, ptr %94, align 4, !tbaa !11
  %2448 = sext i32 %2447 to i64
  %2449 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2446, i64 %2448
  %2450 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2449, i32 0, i32 4
  %2451 = load ptr, ptr %2450, align 8, !tbaa !70
  %2452 = load i32, ptr %96, align 4, !tbaa !11
  %2453 = zext i32 %2452 to i64
  %2454 = getelementptr inbounds ptr, ptr %2451, i64 %2453
  %2455 = load ptr, ptr %2454, align 8, !tbaa !5
  %2456 = load ptr, ptr %6, align 8, !tbaa !5
  %2457 = getelementptr inbounds %struct.ModelSpec, ptr %2456, i32 0, i32 14
  %2458 = load ptr, ptr %2457, align 8, !tbaa !63
  %2459 = load i32, ptr %94, align 4, !tbaa !11
  %2460 = sext i32 %2459 to i64
  %2461 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2458, i64 %2460
  %2462 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %2461, i32 0, i32 4
  %2463 = load ptr, ptr %2462, align 8, !tbaa !70
  %2464 = load i32, ptr %96, align 4, !tbaa !11
  %2465 = zext i32 %2464 to i64
  %2466 = getelementptr inbounds ptr, ptr %2463, i64 %2465
  %2467 = load ptr, ptr %2466, align 8, !tbaa !5
  %2468 = invoke noundef i32 @_Z8str_copyPcPKcii(ptr noundef %2455, ptr noundef %2467, i32 noundef 128, i32 noundef 128)
          to label %2469 unwind label %2473

2469:                                             ; preds = %2432
  br label %2470

2470:                                             ; preds = %2469
  %2471 = load i32, ptr %96, align 4, !tbaa !11
  %2472 = add i32 %2471, 1
  store i32 %2472, ptr %96, align 4, !tbaa !11
  br label %2418, !llvm.loop !71

2473:                                             ; preds = %2432, %2430
  %2474 = landingpad { ptr, i32 }
          cleanup
  %2475 = extractvalue { ptr, i32 } %2474, 0
  store ptr %2475, ptr %14, align 8
  %2476 = extractvalue { ptr, i32 } %2474, 1
  store i32 %2476, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #10
  br label %2481

2477:                                             ; preds = %2429
  br label %2478

2478:                                             ; preds = %2477
  %2479 = load i32, ptr %94, align 4, !tbaa !11
  %2480 = add nsw i32 %2479, 1
  store i32 %2480, ptr %94, align 4, !tbaa !11
  br label %2254, !llvm.loop !72

2481:                                             ; preds = %2473, %2378, %2331
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #10
  br label %2491

2482:                                             ; preds = %2260
  br label %2488

2483:                                             ; preds = %2233
  %2484 = load ptr, ptr %7, align 8, !tbaa !5
  %2485 = getelementptr inbounds %struct.ModelSpec, ptr %2484, i32 0, i32 13
  store i32 0, ptr %2485, align 8, !tbaa !64
  %2486 = load ptr, ptr %7, align 8, !tbaa !5
  %2487 = getelementptr inbounds %struct.ModelSpec, ptr %2486, i32 0, i32 14
  store ptr null, ptr %2487, align 8, !tbaa !63
  br label %2488

2488:                                             ; preds = %2483, %2482
  store i32 0, ptr %5, align 4
  store i32 1, ptr %29, align 4
  br label %2489

2489:                                             ; preds = %2488, %2180
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #10
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeSt4lessIS5_ESaISt4pairIKS5_S6_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %27) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #10
  %2490 = load i32, ptr %5, align 4
  ret i32 %2490

2491:                                             ; preds = %2481, %2261, %2227, %2182, %1055
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #10
  br label %2492

2492:                                             ; preds = %2491, %1051
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #10
  br label %2493

2493:                                             ; preds = %2492, %1001
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeSt4lessIS5_ESaISt4pairIKS5_S6_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %27) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  br label %2494

2494:                                             ; preds = %2493, %248, %141, %120
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #10
  br label %2495

2495:                                             ; preds = %2494
  %2496 = load ptr, ptr %14, align 8
  %2497 = load i32, ptr %15, align 4
  %2498 = insertvalue { ptr, i32 } poison, ptr %2496, 0
  %2499 = insertvalue { ptr, i32 } %2498, i32 %2497, 1
  resume { ptr, i32 } %2499
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_Z8str_copyPcPKcii(ptr noundef, ptr noundef, i32 noundef, i32 noundef) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_Z17getTargetDataTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8DataType(ptr noundef, ptr noundef) #3

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

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

; Function Attrs: nounwind
declare i64 @syscall(i64 noundef, ...) #4

declare i32 @printf(ptr noundef, ...) #5

declare i32 @fflush(ptr noundef) #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local ptr @ee2str(i32 noundef) #6

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_Z9mt_mallocj(i32 noundef) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z10UNI_MEMCPYPvPKvm(ptr noundef, ptr noundef, i64 noundef) #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z18getNoquantDataTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8DataType(ptr noundef, ptr noundef) #6

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeSt4lessIS5_ESaISt4pairIKS5_S6_EEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

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

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

; Function Attrs: nounwind
declare ptr @getenv(ptr noundef) #4

; Function Attrs: inlinehint mustprogress nounwind willreturn memory(read) uwtable
declare double @atof(ptr noundef nonnull) #9

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeEESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #1

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeSt4lessIS5_ESaISt4pairIKS5_S6_EEE4findERSA_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbPKT_RKNSt7__cxx1112basic_stringIS3_T0_T1_EE(ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_Z16get_storage_typeP9ModelSpecNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeS7_(ptr noundef, ptr noundef, i32 noundef, i32 noundef) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_Z18transformFromFloat8DataTypePKfPvif(i32 noundef, ptr noundef, ptr noundef, i32 noundef, float noundef) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_Z16transformToFloat8DataTypePKvPfif(i32 noundef, ptr noundef, ptr noundef, i32 noundef, float noundef) #3

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"_ZTS2EE", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"_ZTS8DataType", !7, i64 0}
!15 = !{!16, !14, i64 136}
!16 = !{!"_ZTS9ModelSpec", !12, i64 0, !12, i64 4, !7, i64 8, !14, i64 136, !12, i64 140, !6, i64 144, !6, i64 152, !12, i64 160, !6, i64 168, !12, i64 176, !6, i64 184, !12, i64 192, !6, i64 200, !12, i64 208, !6, i64 216, !6, i64 224}
!17 = !{!16, !12, i64 140}
!18 = !{!16, !6, i64 144}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = !{!16, !6, i64 152}
!22 = distinct !{!22, !20}
!23 = !{!16, !12, i64 160}
!24 = !{!16, !6, i64 168}
!25 = distinct !{!25, !20}
!26 = !{!16, !12, i64 176}
!27 = !{!16, !6, i64 184}
!28 = !{!29, !30, i64 128}
!29 = !{!"_ZTS12OperatorSpec", !7, i64 0, !30, i64 128, !12, i64 132, !6, i64 136, !12, i64 144, !6, i64 152, !6, i64 160, !12, i64 168, !6, i64 176, !7, i64 184}
!30 = !{!"_ZTS12OperatorType", !7, i64 0}
!31 = !{!29, !12, i64 132}
!32 = !{!29, !6, i64 136}
!33 = distinct !{!33, !20}
!34 = !{!29, !12, i64 144}
!35 = !{!29, !6, i64 152}
!36 = distinct !{!36, !20}
!37 = !{!29, !6, i64 160}
!38 = !{!29, !12, i64 168}
!39 = !{!29, !6, i64 176}
!40 = !{!41, !12, i64 0}
!41 = !{!"_ZTS9QuantSpec", !12, i64 0, !6, i64 8}
!42 = !{!41, !6, i64 8}
!43 = distinct !{!43, !20}
!44 = !{i64 0, i64 1116, !45}
!45 = !{!7, !7, i64 0}
!46 = distinct !{!46, !20}
!47 = !{!16, !12, i64 192}
!48 = !{!49, !49, i64 0}
!49 = !{!"float", !7, i64 0}
!50 = !{!16, !6, i64 200}
!51 = !{!52, !14, i64 128}
!52 = !{!"_ZTS10WeightSpec", !7, i64 0, !14, i64 128, !12, i64 132, !6, i64 136, !12, i64 144, !6, i64 152, !12, i64 160, !6, i64 168}
!53 = !{!52, !12, i64 132}
!54 = !{!52, !6, i64 136}
!55 = !{!52, !12, i64 160}
!56 = !{!52, !6, i64 168}
!57 = distinct !{!57, !20}
!58 = !{!52, !12, i64 144}
!59 = !{!52, !6, i64 152}
!60 = distinct !{!60, !20}
!61 = distinct !{!61, !20}
!62 = distinct !{!62, !20}
!63 = !{!16, !6, i64 216}
!64 = !{!16, !12, i64 208}
!65 = !{!66, !12, i64 128}
!66 = !{!"_ZTS28OperatorRelationshipMapEntry", !7, i64 0, !12, i64 128, !6, i64 136, !12, i64 144, !6, i64 152}
!67 = !{!66, !6, i64 136}
!68 = distinct !{!68, !20}
!69 = !{!66, !12, i64 144}
!70 = !{!66, !6, i64 152}
!71 = distinct !{!71, !20}
!72 = distinct !{!72, !20}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::set" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<DataType, DataType, std::_Identity<DataType>, std::less<DataType>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<DataType, DataType, std::_Identity<DataType>, std::less<DataType>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::map" = type { %"class.std::_Rb_tree.9" }
%"class.std::_Rb_tree.9" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, DataType>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, DataType>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, DataType>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, DataType>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::allocator.6" = type { i8 }
%"struct.std::_Rb_tree_iterator" = type { ptr }
%struct.TensorDesc = type { i32, i32, i32, [20 x i32] }
%struct.OperatorSpec = type <{ [128 x i8], i32, i32, ptr, i32, [4 x i8], ptr, ptr, i32, [4 x i8], ptr, %union.ParameterSpec, [4 x i8] }>
%union.ParameterSpec = type { %struct.MultiHeadAttentionParamSpec }
%struct.MultiHeadAttentionParamSpec = type { [6 x %struct.FullyConnectedParamSpec], %struct.PowerParamSpec, [2 x i8], i32, [4 x %struct.ReshapeParamSpec], [2 x %struct.EltwiseParamSpec] }
%struct.FullyConnectedParamSpec = type { i32, i32, [32 x i32] }
%struct.PowerParamSpec = type { float, float, float }
%struct.ReshapeParamSpec = type { [8 x i32], i32, i32, i32 }
%struct.EltwiseParamSpec = type { i32, %struct.EltwiseSumSpec, i32, %union.ActivationSpec }
%struct.EltwiseSumSpec = type { [8 x float], i32 }
%union.ActivationSpec = type { %struct.ClipParamSpec }
%struct.ClipParamSpec = type { float, float }
%struct.QuantSpec = type { i32, ptr }
%struct.WeightSpec = type { [128 x i8], i32, i32, ptr, i32, ptr, i32, ptr }
%struct.OperatorRelationshipMapEntry = type { [128 x i8], i32, ptr, i32, ptr }

@_ZL10quantTypes = external hidden global %"class.std::set", align 8
@_ZL12noQuantTypes = external hidden global %"class.std::set", align 8
@.str = external hidden unnamed_addr constant [20 x i8], align 1
@stdout = external local_unnamed_addr global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [89 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_Z25ws_datatype_converter_bnnPhS_i(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z26ws_datatype_converter_int8PhS_iPf(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z26ws_datatype_converter_int4PhS_iPf(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_Z17quantizationErrorP9ModelSpecNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_Z7bytesOf8DataType(i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_Z21ms_datatype_converterP9ModelSpecS0_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) local_unnamed_addr #2 personality ptr @__gxx_personality_v0 {
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::map", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator.6", align 1
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca i32, align 4
  %19 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::allocator.6", align 1
  %22 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::allocator.6", align 1
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::allocator.6", align 1
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator.6", align 1
  %30 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::allocator.6", align 1
  %33 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::allocator.6", align 1
  %36 = alloca i32, align 4
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca float, align 4
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::allocator.6", align 1
  %41 = getelementptr inbounds i8, ptr %1, i64 8
  %42 = getelementptr inbounds i8, ptr %0, i64 8
  %43 = tail call noundef i32 @_Z8str_copyPcPKcii(ptr noundef nonnull %41, ptr noundef nonnull %42, i32 noundef 128, i32 noundef 128)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %2)
  %44 = invoke noundef i32 @_Z17getTargetDataTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8DataType(ptr noundef nonnull %7, ptr noundef nonnull %6)
          to label %45 unwind label %56

45:                                               ; preds = %4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #11
  %.not = icmp eq i32 %44, 0
  br i1 %.not, label %58, label %46

46:                                               ; preds = %45
  %47 = call i64 (i64, ...) @syscall(i64 noundef 186) #11
  %48 = trunc i64 %47 to i32
  %49 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %48)
  %50 = load ptr, ptr @stdout, align 8, !tbaa !5
  %51 = call i32 @fflush(ptr noundef %50)
  %52 = call ptr @ee2str(i32 noundef %44)
  %53 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, ptr noundef %52)
  %54 = load ptr, ptr @stdout, align 8, !tbaa !5
  %55 = call i32 @fflush(ptr noundef %54)
  call void @exit(i32 noundef 1) #12
  unreachable

56:                                               ; preds = %4
  %57 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #11
  br label %895

58:                                               ; preds = %45
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %3)
  %59 = invoke noundef i32 @_Z17getTargetDataTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8DataType(ptr noundef nonnull %8, ptr noundef nonnull %5)
          to label %60 unwind label %71

60:                                               ; preds = %58
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #11
  %.not582 = icmp eq i32 %59, 0
  br i1 %.not582, label %73, label %61

61:                                               ; preds = %60
  %62 = call i64 (i64, ...) @syscall(i64 noundef 186) #11
  %63 = trunc i64 %62 to i32
  %64 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %63)
  %65 = load ptr, ptr @stdout, align 8, !tbaa !5
  %66 = call i32 @fflush(ptr noundef %65)
  %67 = call ptr @ee2str(i32 noundef %59)
  %68 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, ptr noundef %67)
  %69 = load ptr, ptr @stdout, align 8, !tbaa !5
  %70 = call i32 @fflush(ptr noundef %69)
  call void @exit(i32 noundef 1) #12
  unreachable

71:                                               ; preds = %58
  %72 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #11
  br label %895

73:                                               ; preds = %60
  %74 = load i32, ptr %6, align 4, !tbaa !9
  %75 = getelementptr inbounds i8, ptr %1, i64 136
  store i32 %74, ptr %75, align 8, !tbaa !11
  %76 = getelementptr inbounds i8, ptr %0, i64 140
  %77 = load i32, ptr %76, align 4, !tbaa !14
  %78 = getelementptr inbounds i8, ptr %1, i64 140
  store i32 %77, ptr %78, align 4, !tbaa !14
  %79 = shl i32 %77, 3
  %80 = call noundef ptr @_Z9mt_mallocj(i32 noundef %79)
  %81 = getelementptr inbounds i8, ptr %1, i64 144
  store ptr %80, ptr %81, align 8, !tbaa !15
  %82 = load i32, ptr %78, align 4, !tbaa !14
  %83 = icmp sgt i32 %82, 0
  br i1 %83, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %73
  %84 = getelementptr inbounds i8, ptr %0, i64 144
  br label %95

._crit_edge:                                      ; preds = %95, %73
  %.lcssa665 = phi i32 [ %82, %73 ], [ %106, %95 ]
  %85 = mul i32 %.lcssa665, 92
  %86 = call noundef ptr @_Z9mt_mallocj(i32 noundef %85)
  %87 = getelementptr inbounds i8, ptr %1, i64 152
  store ptr %86, ptr %87, align 8, !tbaa !16
  %88 = getelementptr inbounds i8, ptr %0, i64 152
  %89 = load ptr, ptr %88, align 8, !tbaa !16
  %90 = load i32, ptr %78, align 4, !tbaa !14
  %91 = sext i32 %90 to i64
  %92 = mul nsw i64 %91, 92
  call void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %86, ptr noundef %89, i64 noundef %92)
  %93 = load i32, ptr %78, align 4, !tbaa !14
  %94 = icmp sgt i32 %93, 0
  br i1 %94, label %.lr.ph669, label %._crit_edge670

95:                                               ; preds = %.lr.ph, %95
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %95 ]
  %96 = call noundef ptr @_Z9mt_mallocj(i32 noundef 128)
  %97 = load ptr, ptr %81, align 8, !tbaa !15
  %98 = getelementptr inbounds ptr, ptr %97, i64 %indvars.iv
  store ptr %96, ptr %98, align 8, !tbaa !5
  %99 = load ptr, ptr %81, align 8, !tbaa !15
  %100 = getelementptr inbounds ptr, ptr %99, i64 %indvars.iv
  %101 = load ptr, ptr %100, align 8, !tbaa !5
  %102 = load ptr, ptr %84, align 8, !tbaa !15
  %103 = getelementptr inbounds ptr, ptr %102, i64 %indvars.iv
  %104 = load ptr, ptr %103, align 8, !tbaa !5
  %105 = call noundef i32 @_Z8str_copyPcPKcii(ptr noundef %101, ptr noundef %104, i32 noundef 128, i32 noundef 128)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %106 = load i32, ptr %78, align 4, !tbaa !14
  %107 = sext i32 %106 to i64
  %108 = icmp slt i64 %indvars.iv.next, %107
  br i1 %108, label %95, label %._crit_edge, !llvm.loop !17

109:                                              ; preds = %.lr.ph669
  %indvars.iv.next751 = add nuw nsw i64 %indvars.iv750, 1
  %110 = load i32, ptr %78, align 4, !tbaa !14
  %111 = sext i32 %110 to i64
  %112 = icmp slt i64 %indvars.iv.next751, %111
  br i1 %112, label %.lr.ph669, label %._crit_edge670, !llvm.loop !19

._crit_edge670:                                   ; preds = %109, %._crit_edge
  %113 = getelementptr inbounds i8, ptr %0, i64 160
  %114 = load i32, ptr %113, align 8, !tbaa !20
  %115 = getelementptr inbounds i8, ptr %1, i64 160
  store i32 %114, ptr %115, align 8, !tbaa !20
  %116 = shl i32 %114, 3
  %117 = call noundef ptr @_Z9mt_mallocj(i32 noundef %116)
  %118 = getelementptr inbounds i8, ptr %1, i64 168
  store ptr %117, ptr %118, align 8, !tbaa !21
  %119 = load i32, ptr %115, align 8, !tbaa !20
  %120 = icmp sgt i32 %119, 0
  br i1 %120, label %.lr.ph673, label %._crit_edge674

.lr.ph673:                                        ; preds = %._crit_edge670
  %121 = getelementptr inbounds i8, ptr %0, i64 168
  br label %143

.lr.ph669:                                        ; preds = %._crit_edge, %109
  %indvars.iv750 = phi i64 [ %indvars.iv.next751, %109 ], [ 0, %._crit_edge ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %2)
  %122 = load ptr, ptr %87, align 8, !tbaa !16
  %123 = getelementptr inbounds %struct.TensorDesc, ptr %122, i64 %indvars.iv750
  %124 = call noundef i32 @_Z18getNoquantDataTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8DataType(ptr noundef nonnull %9, ptr noundef %123)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #11
  %.not634 = icmp eq i32 %124, 0
  br i1 %.not634, label %109, label %125

125:                                              ; preds = %.lr.ph669
  %126 = call i64 (i64, ...) @syscall(i64 noundef 186) #11
  %127 = trunc i64 %126 to i32
  %128 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %127)
  %129 = load ptr, ptr @stdout, align 8, !tbaa !5
  %130 = call i32 @fflush(ptr noundef %129)
  %131 = call ptr @ee2str(i32 noundef %124)
  %132 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, ptr noundef %131)
  %133 = load ptr, ptr @stdout, align 8, !tbaa !5
  %134 = call i32 @fflush(ptr noundef %133)
  call void @exit(i32 noundef 1) #12
  unreachable

._crit_edge674:                                   ; preds = %143, %._crit_edge670
  %135 = getelementptr inbounds i8, ptr %0, i64 176
  %136 = load i32, ptr %135, align 8, !tbaa !22
  %137 = getelementptr inbounds i8, ptr %1, i64 176
  store i32 %136, ptr %137, align 8, !tbaa !22
  %138 = mul i32 %136, 1304
  %139 = call noundef ptr @_Z9mt_mallocj(i32 noundef %138)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %10) #11
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeSt4lessIS5_ESaISt4pairIKS5_S6_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %10) #11
  %140 = load i32, ptr %137, align 8, !tbaa !22
  %141 = icmp sgt i32 %140, 0
  br i1 %141, label %.lr.ph689, label %._crit_edge690

.lr.ph689:                                        ; preds = %._crit_edge674
  %142 = getelementptr inbounds i8, ptr %0, i64 184
  br label %163

143:                                              ; preds = %.lr.ph673, %143
  %indvars.iv753 = phi i64 [ 0, %.lr.ph673 ], [ %indvars.iv.next754, %143 ]
  %144 = call noundef ptr @_Z9mt_mallocj(i32 noundef 128)
  %145 = load ptr, ptr %118, align 8, !tbaa !21
  %146 = getelementptr inbounds ptr, ptr %145, i64 %indvars.iv753
  store ptr %144, ptr %146, align 8, !tbaa !5
  %147 = load ptr, ptr %118, align 8, !tbaa !21
  %148 = getelementptr inbounds ptr, ptr %147, i64 %indvars.iv753
  %149 = load ptr, ptr %148, align 8, !tbaa !5
  %150 = load ptr, ptr %121, align 8, !tbaa !21
  %151 = getelementptr inbounds ptr, ptr %150, i64 %indvars.iv753
  %152 = load ptr, ptr %151, align 8, !tbaa !5
  %153 = call noundef i32 @_Z8str_copyPcPKcii(ptr noundef %149, ptr noundef %152, i32 noundef 128, i32 noundef 128)
  %indvars.iv.next754 = add nuw nsw i64 %indvars.iv753, 1
  %154 = load i32, ptr %115, align 8, !tbaa !20
  %155 = sext i32 %154 to i64
  %156 = icmp slt i64 %indvars.iv.next754, %155
  br i1 %156, label %143, label %._crit_edge674, !llvm.loop !23

._crit_edge690:                                   ; preds = %374, %._crit_edge674
  %157 = getelementptr inbounds i8, ptr %1, i64 184
  store ptr %139, ptr %157, align 8, !tbaa !24
  %158 = getelementptr inbounds i8, ptr %0, i64 192
  %159 = load i32, ptr %158, align 8, !tbaa !25
  %160 = getelementptr inbounds i8, ptr %1, i64 192
  store i32 %159, ptr %160, align 8, !tbaa !25
  %161 = mul i32 %159, 176
  %162 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef %161)
          to label %378 unwind label %396

163:                                              ; preds = %.lr.ph689, %374
  %indvars.iv765 = phi i64 [ 0, %.lr.ph689 ], [ %indvars.iv.next766, %374 ]
  %164 = getelementptr inbounds %struct.OperatorSpec, ptr %139, i64 %indvars.iv765
  %165 = load ptr, ptr %142, align 8, !tbaa !24
  %166 = getelementptr inbounds %struct.OperatorSpec, ptr %165, i64 %indvars.iv765
  %167 = invoke noundef i32 @_Z8str_copyPcPKcii(ptr noundef %164, ptr noundef %166, i32 noundef 128, i32 noundef 128)
          to label %168 unwind label %187

168:                                              ; preds = %163
  %169 = load ptr, ptr %142, align 8, !tbaa !24
  %170 = getelementptr inbounds %struct.OperatorSpec, ptr %169, i64 %indvars.iv765, i32 1
  %171 = load i32, ptr %170, align 8, !tbaa !26
  %172 = getelementptr inbounds i8, ptr %164, i64 128
  store i32 %171, ptr %172, align 8, !tbaa !26
  %173 = getelementptr inbounds %struct.OperatorSpec, ptr %169, i64 %indvars.iv765, i32 2
  %174 = load i32, ptr %173, align 4, !tbaa !29
  %175 = getelementptr inbounds i8, ptr %164, i64 132
  store i32 %174, ptr %175, align 4, !tbaa !29
  %176 = shl i32 %174, 3
  %177 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef %176)
          to label %178 unwind label %187

178:                                              ; preds = %168
  %179 = getelementptr inbounds i8, ptr %164, i64 136
  store ptr %177, ptr %179, align 8, !tbaa !30
  %180 = load i32, ptr %175, align 4, !tbaa !29
  %.not719 = icmp eq i32 %180, 0
  br i1 %.not719, label %._crit_edge678, label %.lr.ph677

._crit_edge678:                                   ; preds = %201, %178
  %181 = load ptr, ptr %142, align 8, !tbaa !24
  %182 = getelementptr inbounds %struct.OperatorSpec, ptr %181, i64 %indvars.iv765, i32 4
  %183 = load i32, ptr %182, align 8, !tbaa !31
  %184 = getelementptr inbounds i8, ptr %164, i64 144
  store i32 %183, ptr %184, align 8, !tbaa !31
  %185 = shl i32 %183, 3
  %186 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef %185)
          to label %207 unwind label %187

187:                                              ; preds = %254, %._crit_edge678, %168, %163
  %188 = landingpad { ptr, i32 }
          cleanup
  br label %894

.lr.ph677:                                        ; preds = %178, %201
  %indvars.iv756 = phi i64 [ %indvars.iv.next757, %201 ], [ 0, %178 ]
  %189 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef 128)
          to label %190 unwind label %205

190:                                              ; preds = %.lr.ph677
  %191 = load ptr, ptr %179, align 8, !tbaa !30
  %192 = getelementptr inbounds ptr, ptr %191, i64 %indvars.iv756
  store ptr %189, ptr %192, align 8, !tbaa !5
  %193 = load ptr, ptr %179, align 8, !tbaa !30
  %194 = getelementptr inbounds ptr, ptr %193, i64 %indvars.iv756
  %195 = load ptr, ptr %194, align 8, !tbaa !5
  %196 = load ptr, ptr %142, align 8, !tbaa !24
  %197 = getelementptr inbounds %struct.OperatorSpec, ptr %196, i64 %indvars.iv765, i32 3
  %198 = load ptr, ptr %197, align 8, !tbaa !30
  %199 = getelementptr inbounds ptr, ptr %198, i64 %indvars.iv756
  %200 = load ptr, ptr %199, align 8, !tbaa !5
  invoke void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %195, ptr noundef %200, i64 noundef 128)
          to label %201 unwind label %205

201:                                              ; preds = %190
  %indvars.iv.next757 = add nuw nsw i64 %indvars.iv756, 1
  %202 = load i32, ptr %175, align 4, !tbaa !29
  %203 = zext i32 %202 to i64
  %204 = icmp ult i64 %indvars.iv.next757, %203
  br i1 %204, label %.lr.ph677, label %._crit_edge678, !llvm.loop !32

205:                                              ; preds = %190, %.lr.ph677
  %206 = landingpad { ptr, i32 }
          cleanup
  br label %894

207:                                              ; preds = %._crit_edge678
  %208 = getelementptr inbounds i8, ptr %164, i64 152
  store ptr %186, ptr %208, align 8, !tbaa !33
  %209 = load i32, ptr %184, align 8, !tbaa !31
  %.not720 = icmp eq i32 %209, 0
  br i1 %.not720, label %._crit_edge682, label %.lr.ph681

._crit_edge682:                                   ; preds = %223, %207
  %.lcssa657 = phi i32 [ 0, %207 ], [ %224, %223 ]
  %210 = load i32, ptr %172, align 8, !tbaa !26
  %.not621 = icmp eq i32 %210, 0
  br i1 %.not621, label %244, label %229

.lr.ph681:                                        ; preds = %207, %223
  %indvars.iv759 = phi i64 [ %indvars.iv.next760, %223 ], [ 0, %207 ]
  %211 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef 128)
          to label %212 unwind label %227

212:                                              ; preds = %.lr.ph681
  %213 = load ptr, ptr %208, align 8, !tbaa !33
  %214 = getelementptr inbounds ptr, ptr %213, i64 %indvars.iv759
  store ptr %211, ptr %214, align 8, !tbaa !5
  %215 = load ptr, ptr %208, align 8, !tbaa !33
  %216 = getelementptr inbounds ptr, ptr %215, i64 %indvars.iv759
  %217 = load ptr, ptr %216, align 8, !tbaa !5
  %218 = load ptr, ptr %142, align 8, !tbaa !24
  %219 = getelementptr inbounds %struct.OperatorSpec, ptr %218, i64 %indvars.iv765, i32 6
  %220 = load ptr, ptr %219, align 8, !tbaa !33
  %221 = getelementptr inbounds ptr, ptr %220, i64 %indvars.iv759
  %222 = load ptr, ptr %221, align 8, !tbaa !5
  invoke void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %217, ptr noundef %222, i64 noundef 128)
          to label %223 unwind label %227

223:                                              ; preds = %212
  %indvars.iv.next760 = add nuw nsw i64 %indvars.iv759, 1
  %224 = load i32, ptr %184, align 8, !tbaa !31
  %225 = zext i32 %224 to i64
  %226 = icmp ult i64 %indvars.iv.next760, %225
  br i1 %226, label %.lr.ph681, label %._crit_edge682, !llvm.loop !34

227:                                              ; preds = %212, %.lr.ph681
  %228 = landingpad { ptr, i32 }
          cleanup
  br label %894

229:                                              ; preds = %._crit_edge682
  %230 = load i32, ptr %175, align 4, !tbaa !29
  %231 = add i32 %230, %.lcssa657
  %232 = zext i32 %231 to i64
  %233 = shl nuw nsw i64 %232, 2
  %234 = trunc i64 %233 to i32
  %235 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef %234)
          to label %236 unwind label %242

236:                                              ; preds = %229
  %237 = getelementptr inbounds i8, ptr %164, i64 160
  store ptr %235, ptr %237, align 8, !tbaa !35
  %238 = load ptr, ptr %142, align 8, !tbaa !24
  %239 = getelementptr inbounds %struct.OperatorSpec, ptr %238, i64 %indvars.iv765, i32 7
  %240 = load ptr, ptr %239, align 8, !tbaa !35
  %.not622 = icmp eq ptr %240, null
  br i1 %.not622, label %246, label %241

241:                                              ; preds = %236
  invoke void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %235, ptr noundef nonnull %240, i64 noundef %233)
          to label %246 unwind label %242

242:                                              ; preds = %241, %229
  %243 = landingpad { ptr, i32 }
          cleanup
  br label %894

244:                                              ; preds = %._crit_edge682
  %245 = getelementptr inbounds i8, ptr %164, i64 160
  store ptr null, ptr %245, align 8, !tbaa !35
  br label %246

246:                                              ; preds = %236, %241, %244
  %247 = load ptr, ptr %142, align 8, !tbaa !24
  %248 = getelementptr inbounds %struct.OperatorSpec, ptr %247, i64 %indvars.iv765, i32 8
  %249 = load i32, ptr %248, align 8, !tbaa !36
  %250 = getelementptr inbounds i8, ptr %164, i64 168
  store i32 %249, ptr %250, align 8, !tbaa !36
  %251 = icmp eq i32 %249, 0
  br i1 %251, label %252, label %254

252:                                              ; preds = %246
  %253 = getelementptr inbounds i8, ptr %164, i64 176
  store ptr null, ptr %253, align 8, !tbaa !37
  br label %.loopexit639

254:                                              ; preds = %246
  %255 = shl i32 %249, 4
  %256 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef %255)
          to label %257 unwind label %187

257:                                              ; preds = %254
  %258 = getelementptr inbounds i8, ptr %164, i64 176
  store ptr %256, ptr %258, align 8, !tbaa !37
  %259 = load i32, ptr %250, align 8, !tbaa !36
  %.not721 = icmp eq i32 %259, 0
  br i1 %.not721, label %.loopexit639, label %.lr.ph686

.lr.ph686:                                        ; preds = %257, %279
  %indvars.iv762 = phi i64 [ %indvars.iv.next763, %279 ], [ 0, %257 ]
  %260 = load ptr, ptr %142, align 8, !tbaa !24
  %261 = getelementptr inbounds %struct.OperatorSpec, ptr %260, i64 %indvars.iv765, i32 10
  %262 = load ptr, ptr %261, align 8, !tbaa !37
  %263 = getelementptr inbounds %struct.QuantSpec, ptr %262, i64 %indvars.iv762
  %264 = load i32, ptr %263, align 8, !tbaa !38
  %265 = load ptr, ptr %258, align 8, !tbaa !37
  %266 = getelementptr inbounds %struct.QuantSpec, ptr %265, i64 %indvars.iv762
  store i32 %264, ptr %266, align 8, !tbaa !38
  %267 = sext i32 %264 to i64
  %268 = shl nsw i64 %267, 2
  %269 = trunc i64 %268 to i32
  %270 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef %269)
          to label %271 unwind label %283

271:                                              ; preds = %.lr.ph686
  %272 = load ptr, ptr %258, align 8, !tbaa !37
  %273 = getelementptr inbounds %struct.QuantSpec, ptr %272, i64 %indvars.iv762, i32 1
  store ptr %270, ptr %273, align 8, !tbaa !40
  %274 = load ptr, ptr %142, align 8, !tbaa !24
  %275 = getelementptr inbounds %struct.OperatorSpec, ptr %274, i64 %indvars.iv765, i32 10
  %276 = load ptr, ptr %275, align 8, !tbaa !37
  %277 = getelementptr inbounds %struct.QuantSpec, ptr %276, i64 %indvars.iv762, i32 1
  %278 = load ptr, ptr %277, align 8, !tbaa !40
  invoke void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %270, ptr noundef %278, i64 noundef %268)
          to label %279 unwind label %283

279:                                              ; preds = %271
  %indvars.iv.next763 = add nuw nsw i64 %indvars.iv762, 1
  %280 = load i32, ptr %250, align 8, !tbaa !36
  %281 = zext i32 %280 to i64
  %282 = icmp ult i64 %indvars.iv.next763, %281
  br i1 %282, label %.lr.ph686, label %.loopexit639, !llvm.loop !41

283:                                              ; preds = %271, %.lr.ph686
  %284 = landingpad { ptr, i32 }
          cleanup
  br label %894

.loopexit639:                                     ; preds = %279, %257, %252
  %285 = load ptr, ptr %142, align 8, !tbaa !24
  %286 = getelementptr inbounds %struct.OperatorSpec, ptr %285, i64 %indvars.iv765, i32 11
  %287 = getelementptr inbounds i8, ptr %164, i64 184
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1116) %287, ptr noundef nonnull align 8 dereferenceable(1116) %286, i64 1116, i1 false), !tbaa.struct !42
  %288 = load i32, ptr %172, align 8, !tbaa !26
  switch i32 %288, label %374 [
    i32 50, label %289
    i32 40, label %313
    i32 49, label %328
    i32 38, label %343
    i32 95, label %358
  ]

289:                                              ; preds = %.loopexit639
  %290 = load i32, ptr %287, align 8, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull %164, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %291 unwind label %306

291:                                              ; preds = %289
  %292 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeSt4lessIS5_ESaISt4pairIKS5_S6_EEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %10, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %293 unwind label %308

293:                                              ; preds = %291
  store i32 %290, ptr %292, align 4, !tbaa !9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %294 unwind label %311

294:                                              ; preds = %293
  %295 = call noundef i32 @_Z18getNoquantDataTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8DataType(ptr noundef nonnull %13, ptr noundef nonnull %287)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  %.not629 = icmp eq i32 %295, 0
  br i1 %.not629, label %374, label %296

296:                                              ; preds = %294
  %297 = call i64 (i64, ...) @syscall(i64 noundef 186) #11
  %298 = trunc i64 %297 to i32
  %299 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %298)
  %300 = load ptr, ptr @stdout, align 8, !tbaa !5
  %301 = call i32 @fflush(ptr noundef %300)
  %302 = call ptr @ee2str(i32 noundef %295)
  %303 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, ptr noundef %302)
  %304 = load ptr, ptr @stdout, align 8, !tbaa !5
  %305 = call i32 @fflush(ptr noundef %304)
  call void @exit(i32 noundef 1) #12
  unreachable

306:                                              ; preds = %289
  %307 = landingpad { ptr, i32 }
          cleanup
  br label %310

308:                                              ; preds = %291
  %309 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #11
  br label %310

310:                                              ; preds = %308, %306
  %.pn627 = phi { ptr, i32 } [ %309, %308 ], [ %307, %306 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #11
  br label %894

311:                                              ; preds = %293
  %312 = landingpad { ptr, i32 }
          cleanup
  br label %894

313:                                              ; preds = %.loopexit639
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %314 unwind label %326

314:                                              ; preds = %313
  %315 = call noundef i32 @_Z18getNoquantDataTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8DataType(ptr noundef nonnull %14, ptr noundef nonnull %287)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #11
  %.not626 = icmp eq i32 %315, 0
  br i1 %.not626, label %374, label %316

316:                                              ; preds = %314
  %317 = call i64 (i64, ...) @syscall(i64 noundef 186) #11
  %318 = trunc i64 %317 to i32
  %319 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %318)
  %320 = load ptr, ptr @stdout, align 8, !tbaa !5
  %321 = call i32 @fflush(ptr noundef %320)
  %322 = call ptr @ee2str(i32 noundef %315)
  %323 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, ptr noundef %322)
  %324 = load ptr, ptr @stdout, align 8, !tbaa !5
  %325 = call i32 @fflush(ptr noundef %324)
  call void @exit(i32 noundef 1) #12
  unreachable

326:                                              ; preds = %313
  %327 = landingpad { ptr, i32 }
          cleanup
  br label %894

328:                                              ; preds = %.loopexit639
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %329 unwind label %341

329:                                              ; preds = %328
  %330 = call noundef i32 @_Z18getNoquantDataTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8DataType(ptr noundef nonnull %15, ptr noundef nonnull %287)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #11
  %.not625 = icmp eq i32 %330, 0
  br i1 %.not625, label %374, label %331

331:                                              ; preds = %329
  %332 = call i64 (i64, ...) @syscall(i64 noundef 186) #11
  %333 = trunc i64 %332 to i32
  %334 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %333)
  %335 = load ptr, ptr @stdout, align 8, !tbaa !5
  %336 = call i32 @fflush(ptr noundef %335)
  %337 = call ptr @ee2str(i32 noundef %330)
  %338 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, ptr noundef %337)
  %339 = load ptr, ptr @stdout, align 8, !tbaa !5
  %340 = call i32 @fflush(ptr noundef %339)
  call void @exit(i32 noundef 1) #12
  unreachable

341:                                              ; preds = %328
  %342 = landingpad { ptr, i32 }
          cleanup
  br label %894

343:                                              ; preds = %.loopexit639
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %344 unwind label %356

344:                                              ; preds = %343
  %345 = call noundef i32 @_Z18getNoquantDataTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8DataType(ptr noundef nonnull %16, ptr noundef nonnull %287)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #11
  %.not624 = icmp eq i32 %345, 0
  br i1 %.not624, label %374, label %346

346:                                              ; preds = %344
  %347 = call i64 (i64, ...) @syscall(i64 noundef 186) #11
  %348 = trunc i64 %347 to i32
  %349 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %348)
  %350 = load ptr, ptr @stdout, align 8, !tbaa !5
  %351 = call i32 @fflush(ptr noundef %350)
  %352 = call ptr @ee2str(i32 noundef %345)
  %353 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, ptr noundef %352)
  %354 = load ptr, ptr @stdout, align 8, !tbaa !5
  %355 = call i32 @fflush(ptr noundef %354)
  call void @exit(i32 noundef 1) #12
  unreachable

356:                                              ; preds = %343
  %357 = landingpad { ptr, i32 }
          cleanup
  br label %894

358:                                              ; preds = %.loopexit639
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %359 unwind label %372

359:                                              ; preds = %358
  %360 = getelementptr inbounds i8, ptr %164, i64 188
  %361 = call noundef i32 @_Z18getNoquantDataTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8DataType(ptr noundef nonnull %17, ptr noundef nonnull %360)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #11
  %.not623 = icmp eq i32 %361, 0
  br i1 %.not623, label %374, label %362

362:                                              ; preds = %359
  %363 = call i64 (i64, ...) @syscall(i64 noundef 186) #11
  %364 = trunc i64 %363 to i32
  %365 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %364)
  %366 = load ptr, ptr @stdout, align 8, !tbaa !5
  %367 = call i32 @fflush(ptr noundef %366)
  %368 = call ptr @ee2str(i32 noundef %361)
  %369 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, ptr noundef %368)
  %370 = load ptr, ptr @stdout, align 8, !tbaa !5
  %371 = call i32 @fflush(ptr noundef %370)
  call void @exit(i32 noundef 1) #12
  unreachable

372:                                              ; preds = %358
  %373 = landingpad { ptr, i32 }
          cleanup
  br label %894

374:                                              ; preds = %359, %344, %329, %314, %294, %.loopexit639
  %indvars.iv.next766 = add nuw nsw i64 %indvars.iv765, 1
  %375 = load i32, ptr %137, align 8, !tbaa !22
  %376 = sext i32 %375 to i64
  %377 = icmp slt i64 %indvars.iv.next766, %376
  br i1 %377, label %163, label %._crit_edge690, !llvm.loop !44

378:                                              ; preds = %._crit_edge690
  %379 = call ptr @getenv(ptr noundef nonnull @.str.3) #11
  %.not583 = icmp eq ptr %379, null
  br i1 %.not583, label %382, label %380

380:                                              ; preds = %378
  %381 = call double @atof(ptr noundef %379) #13
  br label %382

382:                                              ; preds = %378, %380
  %383 = phi double [ %381, %380 ], [ 9.999900e+04, %378 ]
  %384 = fptrunc double %383 to float
  %385 = call i64 (i64, ...) @syscall(i64 noundef 186) #11
  %386 = trunc i64 %385 to i32
  %387 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4, i32 noundef %386)
  %388 = load ptr, ptr @stdout, align 8, !tbaa !5
  %389 = call i32 @fflush(ptr noundef %388)
  %390 = fpext float %384 to double
  %391 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5, double noundef %390)
  %392 = load ptr, ptr @stdout, align 8, !tbaa !5
  %393 = call i32 @fflush(ptr noundef %392)
  %394 = load i32, ptr %160, align 8, !tbaa !25
  %.not613698 = icmp sgt i32 %394, 0
  br i1 %.not613698, label %.lr.ph702, label %.critedge636

.lr.ph702:                                        ; preds = %382
  %395 = getelementptr inbounds i8, ptr %0, i64 200
  br label %398

396:                                              ; preds = %._crit_edge690
  %397 = landingpad { ptr, i32 }
          cleanup
  br label %894

398:                                              ; preds = %.lr.ph702, %766
  %indvars.iv771 = phi i64 [ 0, %.lr.ph702 ], [ %indvars.iv.next772, %766 ]
  %.0561699 = phi float [ 0.000000e+00, %.lr.ph702 ], [ %.2563, %766 ]
  %399 = getelementptr inbounds %struct.WeightSpec, ptr %162, i64 %indvars.iv771
  %400 = load ptr, ptr %395, align 8, !tbaa !45
  %401 = getelementptr inbounds %struct.WeightSpec, ptr %400, i64 %indvars.iv771
  %402 = invoke noundef i32 @_Z8str_copyPcPKcii(ptr noundef %399, ptr noundef %401, i32 noundef 128, i32 noundef 128)
          to label %403 unwind label %420

403:                                              ; preds = %398
  %404 = load ptr, ptr %395, align 8, !tbaa !45
  %405 = getelementptr inbounds %struct.WeightSpec, ptr %404, i64 %indvars.iv771, i32 1
  %406 = load i32, ptr %405, align 8, !tbaa !46
  %.off = add i32 %406, -7
  %switch = icmp ult i32 %.off, 2
  br i1 %switch, label %407, label %424

407:                                              ; preds = %403
  %408 = getelementptr inbounds i8, ptr %399, i64 128
  store i32 %406, ptr %408, align 8, !tbaa !46
  %409 = getelementptr inbounds %struct.WeightSpec, ptr %404, i64 %indvars.iv771, i32 2
  %410 = load i32, ptr %409, align 4, !tbaa !48
  %411 = invoke noundef i32 @_Z7bytesOf8DataType(i32 noundef 6)
          to label %412 unwind label %422

412:                                              ; preds = %407
  %413 = load i32, ptr %408, align 8, !tbaa !46
  %414 = invoke noundef i32 @_Z7bytesOf8DataType(i32 noundef %413)
          to label %415 unwind label %422

415:                                              ; preds = %412
  %416 = udiv i32 %410, %411
  %417 = mul i32 %416, %414
  %418 = lshr i32 %417, 3
  %419 = getelementptr inbounds i8, ptr %399, i64 132
  store i32 %418, ptr %419, align 4, !tbaa !48
  br label %560

420:                                              ; preds = %398
  %421 = landingpad { ptr, i32 }
          cleanup
  br label %894

422:                                              ; preds = %573, %560, %412, %407
  %423 = landingpad { ptr, i32 }
          cleanup
  br label %894

424:                                              ; preds = %403
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #11
  store i32 %406, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %21) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef %399, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %425 unwind label %435

425:                                              ; preds = %424
  %426 = invoke ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeSt4lessIS5_ESaISt4pairIKS5_S6_EEE4findERSA_(ptr noundef nonnull align 8 dereferenceable(48) %10, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %427 unwind label %437

427:                                              ; preds = %425
  store ptr %426, ptr %19, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #11
  %428 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeSt4lessIS5_ESaISt4pairIKS5_S6_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %10) #11
  store ptr %428, ptr %22, align 8
  %429 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeEESC_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %22) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #11
  br i1 %429, label %430, label %445

430:                                              ; preds = %427
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef %399, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %431 unwind label %440

431:                                              ; preds = %430
  %432 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeSt4lessIS5_ESaISt4pairIKS5_S6_EEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %10, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %433 unwind label %442

433:                                              ; preds = %431
  %434 = load i32, ptr %432, align 4, !tbaa !9
  store i32 %434, ptr %18, align 4, !tbaa !9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #11
  br label %445

435:                                              ; preds = %424
  %436 = landingpad { ptr, i32 }
          cleanup
  br label %439

437:                                              ; preds = %425
  %438 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #11
  br label %439

439:                                              ; preds = %437, %435
  %.pn = phi { ptr, i32 } [ %438, %437 ], [ %436, %435 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #11
  br label %559

440:                                              ; preds = %430
  %441 = landingpad { ptr, i32 }
          cleanup
  br label %444

442:                                              ; preds = %431
  %443 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #11
  br label %444

444:                                              ; preds = %442, %440
  %.pn585 = phi { ptr, i32 } [ %443, %442 ], [ %441, %440 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #11
  br label %559

445:                                              ; preds = %433, %427
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %446 unwind label %458

446:                                              ; preds = %445
  %447 = call noundef i32 @_Z18getNoquantDataTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8DataType(ptr noundef nonnull %25, ptr noundef nonnull %18)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #11
  %.not587 = icmp eq i32 %447, 0
  br i1 %.not587, label %460, label %448

448:                                              ; preds = %446
  %449 = call i64 (i64, ...) @syscall(i64 noundef 186) #11
  %450 = trunc i64 %449 to i32
  %451 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %450)
  %452 = load ptr, ptr @stdout, align 8, !tbaa !5
  %453 = call i32 @fflush(ptr noundef %452)
  %454 = call ptr @ee2str(i32 noundef %447)
  %455 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, ptr noundef %454)
  %456 = load ptr, ptr @stdout, align 8, !tbaa !5
  %457 = call i32 @fflush(ptr noundef %456)
  call void @exit(i32 noundef 1) #12
  unreachable

458:                                              ; preds = %445
  %459 = landingpad { ptr, i32 }
          cleanup
  br label %559

460:                                              ; preds = %446
  %461 = load i32, ptr %18, align 4, !tbaa !9
  %462 = getelementptr inbounds i8, ptr %399, i64 128
  store i32 %461, ptr %462, align 8, !tbaa !46
  %463 = invoke noundef i64 @_ZNKSt3setI8DataTypeSt4lessIS0_ESaIS0_EE5countERKS0_(ptr noundef nonnull align 8 dereferenceable(48) @_ZL12noQuantTypes, ptr noundef nonnull align 4 dereferenceable(4) %18)
          to label %464 unwind label %473

464:                                              ; preds = %460
  %.not588 = icmp eq i64 %463, 0
  br i1 %.not588, label %480, label %465

465:                                              ; preds = %464
  %466 = call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbPKT_RKNSt7__cxx1112basic_stringIS3_T0_T1_EE(ptr noundef nonnull @.str.6, ptr noundef nonnull align 8 dereferenceable(32) %3)
  br i1 %466, label %467, label %480

467:                                              ; preds = %465
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull %399, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %468 unwind label %475

468:                                              ; preds = %467
  %469 = load i32, ptr %5, align 4, !tbaa !9
  %470 = load i32, ptr %6, align 4, !tbaa !9
  %471 = invoke noundef i32 @_Z16get_storage_typeP9ModelSpecNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeS7_(ptr noundef nonnull %1, ptr noundef nonnull %26, i32 noundef %469, i32 noundef %470)
          to label %472 unwind label %477

472:                                              ; preds = %468
  store i32 %471, ptr %462, align 8, !tbaa !46
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #11
  br label %480

473:                                              ; preds = %545, %537, %483, %480, %460
  %474 = landingpad { ptr, i32 }
          cleanup
  br label %559

475:                                              ; preds = %467
  %476 = landingpad { ptr, i32 }
          cleanup
  br label %479

477:                                              ; preds = %468
  %478 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #11
  br label %479

479:                                              ; preds = %477, %475
  %.pn589 = phi { ptr, i32 } [ %478, %477 ], [ %476, %475 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #11
  br label %559

480:                                              ; preds = %472, %465, %464
  %481 = invoke noundef i64 @_ZNKSt3setI8DataTypeSt4lessIS0_ESaIS0_EE5countERKS0_(ptr noundef nonnull align 8 dereferenceable(48) @_ZL12noQuantTypes, ptr noundef nonnull align 4 dereferenceable(4) %6)
          to label %482 unwind label %473

482:                                              ; preds = %480
  %.not591 = icmp eq i64 %481, 0
  br i1 %.not591, label %516, label %483

483:                                              ; preds = %482
  %484 = invoke noundef i64 @_ZNKSt3setI8DataTypeSt4lessIS0_ESaIS0_EE5countERKS0_(ptr noundef nonnull align 8 dereferenceable(48) @_ZL10quantTypes, ptr noundef nonnull align 4 dereferenceable(4) %5)
          to label %485 unwind label %473

485:                                              ; preds = %483
  %.not592 = icmp eq i64 %484, 0
  br i1 %.not592, label %516, label %486

486:                                              ; preds = %485
  %487 = load ptr, ptr %395, align 8, !tbaa !45
  %488 = getelementptr inbounds %struct.WeightSpec, ptr %487, i64 %indvars.iv771
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef %488, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %489 unwind label %496

489:                                              ; preds = %486
  %490 = invoke noundef float @_Z17quantizationErrorP9ModelSpecNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull %0, ptr noundef nonnull %28)
          to label %491 unwind label %498

491:                                              ; preds = %489
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #11
  %492 = fcmp ogt float %.0561699, %490
  %493 = select i1 %492, float %.0561699, float %490
  %494 = fcmp ogt float %490, %384
  br i1 %494, label %495, label %501

495:                                              ; preds = %491
  store i32 4, ptr %462, align 8, !tbaa !46
  br label %501

496:                                              ; preds = %486
  %497 = landingpad { ptr, i32 }
          cleanup
  br label %500

498:                                              ; preds = %489
  %499 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #11
  br label %500

500:                                              ; preds = %498, %496
  %.pn593 = phi { ptr, i32 } [ %499, %498 ], [ %497, %496 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #11
  br label %559

501:                                              ; preds = %495, %491
  %502 = load i32, ptr %160, align 8, !tbaa !25
  %503 = add nsw i32 %502, -1
  %504 = zext i32 %503 to i64
  %505 = icmp eq i64 %indvars.iv771, %504
  br i1 %505, label %506, label %516

506:                                              ; preds = %501
  %507 = call i64 (i64, ...) @syscall(i64 noundef 186) #11
  %508 = trunc i64 %507 to i32
  %509 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4, i32 noundef %508)
  %510 = load ptr, ptr @stdout, align 8, !tbaa !5
  %511 = call i32 @fflush(ptr noundef %510)
  %512 = fpext float %493 to double
  %513 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.7, double noundef %512, double noundef %390)
  %514 = load ptr, ptr @stdout, align 8, !tbaa !5
  %515 = call i32 @fflush(ptr noundef %514)
  br label %516

516:                                              ; preds = %501, %506, %485, %482
  %.1562 = phi float [ %.0561699, %485 ], [ %.0561699, %482 ], [ %493, %506 ], [ %493, %501 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull %399, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %517 unwind label %527

517:                                              ; preds = %516
  %518 = invoke ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeSt4lessIS5_ESaISt4pairIKS5_S6_EEE4findERSA_(ptr noundef nonnull align 8 dereferenceable(48) %10, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %519 unwind label %529

519:                                              ; preds = %517
  store ptr %518, ptr %30, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #11
  %520 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeSt4lessIS5_ESaISt4pairIKS5_S6_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %10) #11
  store ptr %520, ptr %33, align 8
  %521 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeEESC_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %33) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #11
  br i1 %521, label %522, label %537

522:                                              ; preds = %519
  %523 = load i32, ptr %462, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %35) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull %399, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %524 unwind label %532

524:                                              ; preds = %522
  %525 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeSt4lessIS5_ESaISt4pairIKS5_S6_EEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %10, ptr noundef nonnull align 8 dereferenceable(32) %34)
          to label %526 unwind label %534

526:                                              ; preds = %524
  store i32 %523, ptr %525, align 4, !tbaa !9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #11
  br label %537

527:                                              ; preds = %516
  %528 = landingpad { ptr, i32 }
          cleanup
  br label %531

529:                                              ; preds = %517
  %530 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #11
  br label %531

531:                                              ; preds = %529, %527
  %.pn595 = phi { ptr, i32 } [ %530, %529 ], [ %528, %527 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #11
  br label %559

532:                                              ; preds = %522
  %533 = landingpad { ptr, i32 }
          cleanup
  br label %536

534:                                              ; preds = %524
  %535 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #11
  br label %536

536:                                              ; preds = %534, %532
  %.pn597 = phi { ptr, i32 } [ %535, %534 ], [ %533, %532 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #11
  br label %559

537:                                              ; preds = %526, %519
  %538 = load ptr, ptr %395, align 8, !tbaa !45
  %539 = getelementptr inbounds %struct.WeightSpec, ptr %538, i64 %indvars.iv771
  %540 = getelementptr inbounds i8, ptr %539, i64 132
  %541 = load i32, ptr %540, align 4, !tbaa !48
  %542 = getelementptr inbounds i8, ptr %539, i64 128
  %543 = load i32, ptr %542, align 8, !tbaa !46
  %544 = invoke noundef i32 @_Z7bytesOf8DataType(i32 noundef %543)
          to label %545 unwind label %473

545:                                              ; preds = %537
  %546 = udiv i32 %541, %544
  %547 = load i32, ptr %462, align 8, !tbaa !46
  %548 = invoke noundef i32 @_Z7bytesOf8DataType(i32 noundef %547)
          to label %549 unwind label %473

549:                                              ; preds = %545
  %550 = mul i32 %548, %546
  %551 = getelementptr inbounds i8, ptr %399, i64 132
  store i32 %550, ptr %551, align 4, !tbaa !48
  %552 = load i32, ptr %462, align 8, !tbaa !46
  switch i32 %552, label %.thread637 [
    i32 5, label %.thread
    i32 9, label %554
    i32 15, label %556
  ]

.thread:                                          ; preds = %549
  %553 = lshr i32 %550, 1
  br label %.thread637.sink.split

554:                                              ; preds = %549
  %555 = lshr i32 %550, 2
  br label %.thread637.sink.split

556:                                              ; preds = %549
  %557 = add i32 %550, 1
  %558 = lshr i32 %557, 1
  br label %.thread637.sink.split

.thread637.sink.split:                            ; preds = %556, %.thread, %554
  %.sink = phi i32 [ %555, %554 ], [ %553, %.thread ], [ %558, %556 ]
  store i32 %.sink, ptr %551, align 4, !tbaa !48
  br label %.thread637

.thread637:                                       ; preds = %.thread637.sink.split, %549
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #11
  %.pre = load i32, ptr %551, align 4, !tbaa !48
  br label %560

559:                                              ; preds = %536, %531, %500, %479, %473, %458, %444, %439
  %.pn599 = phi { ptr, i32 } [ %474, %473 ], [ %.pn597, %536 ], [ %.pn595, %531 ], [ %.pn593, %500 ], [ %.pn589, %479 ], [ %459, %458 ], [ %.pn585, %444 ], [ %.pn, %439 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #11
  br label %894

560:                                              ; preds = %.thread637, %415
  %561 = phi i32 [ %418, %415 ], [ %.pre, %.thread637 ]
  %.2563 = phi float [ %.0561699, %415 ], [ %.1562, %.thread637 ]
  %.0557 = phi i32 [ %416, %415 ], [ %546, %.thread637 ]
  %562 = getelementptr inbounds i8, ptr %399, i64 132
  %563 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef %561)
          to label %564 unwind label %422

564:                                              ; preds = %560
  %565 = getelementptr inbounds i8, ptr %399, i64 136
  store ptr %563, ptr %565, align 8, !tbaa !49
  %566 = load ptr, ptr %395, align 8, !tbaa !45
  %567 = getelementptr inbounds %struct.WeightSpec, ptr %566, i64 %indvars.iv771, i32 6
  %568 = load i32, ptr %567, align 8, !tbaa !50
  %569 = getelementptr inbounds i8, ptr %399, i64 160
  store i32 %568, ptr %569, align 8, !tbaa !50
  %570 = icmp eq i32 %568, 0
  br i1 %570, label %571, label %573

571:                                              ; preds = %564
  %572 = getelementptr inbounds i8, ptr %399, i64 168
  store ptr null, ptr %572, align 8, !tbaa !51
  br label %.loopexit638

573:                                              ; preds = %564
  %574 = shl i32 %568, 4
  %575 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef %574)
          to label %576 unwind label %422

576:                                              ; preds = %573
  %577 = getelementptr inbounds i8, ptr %399, i64 168
  store ptr %575, ptr %577, align 8, !tbaa !51
  %578 = load i32, ptr %569, align 8, !tbaa !50
  %.not722 = icmp eq i32 %578, 0
  br i1 %.not722, label %.loopexit638, label %.lr.ph693

.lr.ph693:                                        ; preds = %576, %598
  %indvars.iv768 = phi i64 [ %indvars.iv.next769, %598 ], [ 0, %576 ]
  %579 = load ptr, ptr %395, align 8, !tbaa !45
  %580 = getelementptr inbounds %struct.WeightSpec, ptr %579, i64 %indvars.iv771, i32 7
  %581 = load ptr, ptr %580, align 8, !tbaa !51
  %582 = getelementptr inbounds %struct.QuantSpec, ptr %581, i64 %indvars.iv768
  %583 = load i32, ptr %582, align 8, !tbaa !38
  %584 = load ptr, ptr %577, align 8, !tbaa !51
  %585 = getelementptr inbounds %struct.QuantSpec, ptr %584, i64 %indvars.iv768
  store i32 %583, ptr %585, align 8, !tbaa !38
  %586 = sext i32 %583 to i64
  %587 = shl nsw i64 %586, 2
  %588 = trunc i64 %587 to i32
  %589 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef %588)
          to label %590 unwind label %602

590:                                              ; preds = %.lr.ph693
  %591 = load ptr, ptr %577, align 8, !tbaa !51
  %592 = getelementptr inbounds %struct.QuantSpec, ptr %591, i64 %indvars.iv768, i32 1
  store ptr %589, ptr %592, align 8, !tbaa !40
  %593 = load ptr, ptr %395, align 8, !tbaa !45
  %594 = getelementptr inbounds %struct.WeightSpec, ptr %593, i64 %indvars.iv771, i32 7
  %595 = load ptr, ptr %594, align 8, !tbaa !51
  %596 = getelementptr inbounds %struct.QuantSpec, ptr %595, i64 %indvars.iv768, i32 1
  %597 = load ptr, ptr %596, align 8, !tbaa !40
  invoke void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %589, ptr noundef %597, i64 noundef %587)
          to label %598 unwind label %602

598:                                              ; preds = %590
  %indvars.iv.next769 = add nuw nsw i64 %indvars.iv768, 1
  %599 = load i32, ptr %569, align 8, !tbaa !50
  %600 = zext i32 %599 to i64
  %601 = icmp ult i64 %indvars.iv.next769, %600
  br i1 %601, label %.lr.ph693, label %.loopexit638, !llvm.loop !52

602:                                              ; preds = %590, %.lr.ph693
  %603 = landingpad { ptr, i32 }
          cleanup
  br label %894

.loopexit638:                                     ; preds = %598, %576, %571
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #11
  store i32 6, ptr %36, align 4, !tbaa !9
  %604 = load ptr, ptr %395, align 8, !tbaa !45
  %605 = getelementptr inbounds %struct.WeightSpec, ptr %604, i64 %indvars.iv771, i32 4
  %606 = load i32, ptr %605, align 8, !tbaa !53
  %607 = invoke noundef i32 @_Z7bytesOf8DataType(i32 noundef 6)
          to label %608 unwind label %622

608:                                              ; preds = %.loopexit638
  %609 = udiv i32 %606, %607
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %610 unwind label %624

610:                                              ; preds = %608
  %611 = call noundef i32 @_Z18getNoquantDataTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8DataType(ptr noundef nonnull %37, ptr noundef nonnull %36)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #11
  %.not601 = icmp eq i32 %611, 0
  br i1 %.not601, label %626, label %612

612:                                              ; preds = %610
  %613 = call i64 (i64, ...) @syscall(i64 noundef 186) #11
  %614 = trunc i64 %613 to i32
  %615 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %614)
  %616 = load ptr, ptr @stdout, align 8, !tbaa !5
  %617 = call i32 @fflush(ptr noundef %616)
  %618 = call ptr @ee2str(i32 noundef %611)
  %619 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, ptr noundef %618)
  %620 = load ptr, ptr @stdout, align 8, !tbaa !5
  %621 = call i32 @fflush(ptr noundef %620)
  call void @exit(i32 noundef 1) #12
  unreachable

622:                                              ; preds = %.invoke, %713, %708, %706, %694, %689, %687, %677, %665, %654, %647, %641, %637, %634, %.loopexit638
  %623 = landingpad { ptr, i32 }
          cleanup
  br label %769

624:                                              ; preds = %608
  %625 = landingpad { ptr, i32 }
          cleanup
  br label %769

626:                                              ; preds = %610
  %627 = load i32, ptr %36, align 4, !tbaa !9
  %628 = icmp eq i32 %627, 6
  br i1 %628, label %629, label %634

629:                                              ; preds = %626
  %630 = getelementptr inbounds i8, ptr %399, i64 128
  %631 = load i32, ptr %630, align 8, !tbaa !46
  %632 = icmp eq i32 %631, 4
  br i1 %632, label %633, label %634

633:                                              ; preds = %629
  store i32 4, ptr %36, align 4, !tbaa !9
  br label %634

634:                                              ; preds = %633, %629, %626
  %635 = phi i32 [ 4, %633 ], [ 6, %629 ], [ %627, %626 ]
  %636 = invoke noundef i32 @_Z7bytesOf8DataType(i32 noundef %635)
          to label %637 unwind label %622

637:                                              ; preds = %634
  %638 = mul i32 %636, %609
  %639 = getelementptr inbounds i8, ptr %399, i64 144
  store i32 %638, ptr %639, align 8, !tbaa !53
  %640 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef %638)
          to label %641 unwind label %622

641:                                              ; preds = %637
  %642 = getelementptr inbounds i8, ptr %399, i64 152
  store ptr %640, ptr %642, align 8, !tbaa !54
  %643 = load ptr, ptr %395, align 8, !tbaa !45
  %644 = getelementptr inbounds %struct.WeightSpec, ptr %643, i64 %indvars.iv771, i32 1
  %645 = invoke noundef i64 @_ZNKSt3setI8DataTypeSt4lessIS0_ESaIS0_EE5countERKS0_(ptr noundef nonnull align 8 dereferenceable(48) @_ZL10quantTypes, ptr noundef nonnull align 4 dereferenceable(4) %644)
          to label %646 unwind label %622

646:                                              ; preds = %641
  %.not602 = icmp eq i64 %645, 0
  br i1 %.not602, label %647, label %674

647:                                              ; preds = %646
  %648 = load ptr, ptr %395, align 8, !tbaa !45
  %649 = getelementptr inbounds %struct.WeightSpec, ptr %648, i64 %indvars.iv771, i32 1
  %650 = invoke noundef i64 @_ZNKSt3setI8DataTypeSt4lessIS0_ESaIS0_EE5countERKS0_(ptr noundef nonnull align 8 dereferenceable(48) @_ZL12noQuantTypes, ptr noundef nonnull align 4 dereferenceable(4) %649)
          to label %651 unwind label %622

651:                                              ; preds = %647
  %.not603 = icmp eq i64 %650, 0
  br i1 %.not603, label %652, label %674

652:                                              ; preds = %651
  %653 = load i32, ptr %562, align 4, !tbaa !48
  %.not604 = icmp eq i32 %653, 0
  br i1 %.not604, label %663, label %654

654:                                              ; preds = %652
  %655 = load ptr, ptr %565, align 8, !tbaa !49
  %656 = load ptr, ptr %395, align 8, !tbaa !45
  %657 = getelementptr inbounds %struct.WeightSpec, ptr %656, i64 %indvars.iv771
  %658 = getelementptr inbounds i8, ptr %657, i64 136
  %659 = load ptr, ptr %658, align 8, !tbaa !49
  %660 = getelementptr inbounds i8, ptr %657, i64 132
  %661 = load i32, ptr %660, align 4, !tbaa !48
  %662 = zext i32 %661 to i64
  invoke void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %655, ptr noundef %659, i64 noundef %662)
          to label %663 unwind label %622

663:                                              ; preds = %654, %652
  %664 = load i32, ptr %639, align 8, !tbaa !53
  %.not605 = icmp eq i32 %664, 0
  br i1 %.not605, label %766, label %665

665:                                              ; preds = %663
  %666 = load ptr, ptr %642, align 8, !tbaa !54
  %667 = load ptr, ptr %395, align 8, !tbaa !45
  %668 = getelementptr inbounds %struct.WeightSpec, ptr %667, i64 %indvars.iv771
  %669 = getelementptr inbounds i8, ptr %668, i64 152
  %670 = load ptr, ptr %669, align 8, !tbaa !54
  %671 = getelementptr inbounds i8, ptr %668, i64 144
  %672 = load i32, ptr %671, align 8, !tbaa !53
  %673 = zext i32 %672 to i64
  invoke void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %666, ptr noundef %670, i64 noundef %673)
          to label %766 unwind label %622

674:                                              ; preds = %651, %646
  %675 = getelementptr inbounds i8, ptr %399, i64 128
  %676 = load i32, ptr %675, align 8, !tbaa !46
  switch i32 %676, label %.critedge [
    i32 11, label %677
    i32 3, label %677
    i32 2, label %677
    i32 6, label %677
    i32 4, label %677
    i32 9, label %683
    i32 5, label %683
    i32 1, label %683
    i32 15, label %702
    i32 7, label %727
    i32 8, label %727
  ]

677:                                              ; preds = %674, %674, %674, %674, %674
  %678 = load ptr, ptr %395, align 8, !tbaa !45
  %679 = getelementptr inbounds %struct.WeightSpec, ptr %678, i64 %indvars.iv771, i32 3
  %680 = load ptr, ptr %679, align 8, !tbaa !49
  %681 = load ptr, ptr %565, align 8, !tbaa !49
  %682 = invoke noundef i32 @_Z18transformFromFloat8DataTypePKfPvif(i32 noundef %676, ptr noundef %680, ptr noundef %681, i32 noundef %.0557, float noundef 1.000000e+00)
          to label %.invoke unwind label %622

683:                                              ; preds = %674, %674, %674
  %684 = getelementptr inbounds i8, ptr %399, i64 168
  %685 = load ptr, ptr %684, align 8, !tbaa !51
  %686 = icmp eq ptr %685, null
  br i1 %686, label %687, label %._crit_edge789

._crit_edge789:                                   ; preds = %683
  %.phi.trans.insert790 = getelementptr inbounds i8, ptr %685, i64 8
  %.pre791 = load ptr, ptr %.phi.trans.insert790, align 8, !tbaa !40
  br label %694

687:                                              ; preds = %683
  store i32 1, ptr %569, align 8, !tbaa !50
  %688 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef 16)
          to label %689 unwind label %622

689:                                              ; preds = %687
  store ptr %688, ptr %684, align 8, !tbaa !51
  store i32 1, ptr %688, align 8, !tbaa !38
  %690 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef 4)
          to label %691 unwind label %622

691:                                              ; preds = %689
  %692 = load ptr, ptr %684, align 8, !tbaa !51
  %693 = getelementptr inbounds i8, ptr %692, i64 8
  store ptr %690, ptr %693, align 8, !tbaa !40
  store float -1.000000e+00, ptr %690, align 4, !tbaa !55
  br label %694

694:                                              ; preds = %._crit_edge789, %691
  %695 = phi ptr [ %690, %691 ], [ %.pre791, %._crit_edge789 ]
  %696 = load ptr, ptr %395, align 8, !tbaa !45
  %697 = getelementptr inbounds %struct.WeightSpec, ptr %696, i64 %indvars.iv771, i32 3
  %698 = load ptr, ptr %697, align 8, !tbaa !49
  %699 = load ptr, ptr %565, align 8, !tbaa !49
  invoke void @_Z26ws_datatype_converter_int8PhS_iPf(ptr noundef %698, ptr noundef %699, i32 noundef %.0557, ptr noundef %695)
          to label %700 unwind label %622

700:                                              ; preds = %694
  %701 = load i32, ptr %639, align 8, !tbaa !53
  %.not609 = icmp eq i32 %701, 0
  br i1 %.not609, label %766, label %.invoke

702:                                              ; preds = %674
  %703 = getelementptr inbounds i8, ptr %399, i64 168
  %704 = load ptr, ptr %703, align 8, !tbaa !51
  %705 = icmp eq ptr %704, null
  br i1 %705, label %706, label %._crit_edge786

._crit_edge786:                                   ; preds = %702
  %.phi.trans.insert787 = getelementptr inbounds i8, ptr %704, i64 8
  %.pre788 = load ptr, ptr %.phi.trans.insert787, align 8, !tbaa !40
  br label %713

706:                                              ; preds = %702
  store i32 1, ptr %569, align 8, !tbaa !50
  %707 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef 16)
          to label %708 unwind label %622

708:                                              ; preds = %706
  store ptr %707, ptr %703, align 8, !tbaa !51
  store i32 1, ptr %707, align 8, !tbaa !38
  %709 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef 4)
          to label %710 unwind label %622

710:                                              ; preds = %708
  %711 = load ptr, ptr %703, align 8, !tbaa !51
  %712 = getelementptr inbounds i8, ptr %711, i64 8
  store ptr %709, ptr %712, align 8, !tbaa !40
  store float -1.000000e+00, ptr %709, align 4, !tbaa !55
  br label %713

713:                                              ; preds = %._crit_edge786, %710
  %714 = phi ptr [ %709, %710 ], [ %.pre788, %._crit_edge786 ]
  %715 = load ptr, ptr %395, align 8, !tbaa !45
  %716 = getelementptr inbounds %struct.WeightSpec, ptr %715, i64 %indvars.iv771, i32 3
  %717 = load ptr, ptr %716, align 8, !tbaa !49
  %718 = load ptr, ptr %565, align 8, !tbaa !49
  invoke void @_Z26ws_datatype_converter_int4PhS_iPf(ptr noundef %717, ptr noundef %718, i32 noundef %.0557, ptr noundef %714)
          to label %719 unwind label %622

719:                                              ; preds = %713
  %720 = load i32, ptr %639, align 8, !tbaa !53
  %.not608 = icmp eq i32 %720, 0
  br i1 %.not608, label %766, label %.invoke

.invoke:                                          ; preds = %719, %700, %677
  %.in = phi ptr [ %675, %677 ], [ %36, %700 ], [ %36, %719 ]
  %721 = load i32, ptr %.in, align 4, !tbaa !9
  %722 = load ptr, ptr %395, align 8, !tbaa !45
  %723 = getelementptr inbounds %struct.WeightSpec, ptr %722, i64 %indvars.iv771, i32 5
  %724 = load ptr, ptr %723, align 8, !tbaa !54
  %725 = load ptr, ptr %642, align 8, !tbaa !54
  %726 = invoke noundef i32 @_Z18transformFromFloat8DataTypePKfPvif(i32 noundef %721, ptr noundef %724, ptr noundef %725, i32 noundef %609, float noundef 1.000000e+00)
          to label %766 unwind label %622

727:                                              ; preds = %674, %674
  %728 = load ptr, ptr %395, align 8, !tbaa !45
  %729 = getelementptr inbounds %struct.WeightSpec, ptr %728, i64 %indvars.iv771, i32 3
  %730 = load ptr, ptr %729, align 8, !tbaa !49
  %731 = load ptr, ptr %565, align 8, !tbaa !49
  %732 = call noundef float @_Z25ws_datatype_converter_bnnPhS_i(ptr noundef %730, ptr noundef %731, i32 noundef %.0557)
  %733 = load ptr, ptr %395, align 8, !tbaa !45
  %734 = getelementptr inbounds %struct.WeightSpec, ptr %733, i64 %indvars.iv771, i32 5
  %735 = load ptr, ptr %734, align 8, !tbaa !54
  %736 = load ptr, ptr %642, align 8, !tbaa !54
  %737 = invoke noundef i32 @_Z18transformFromFloat8DataTypePKfPvif(i32 noundef 4, ptr noundef %735, ptr noundef %736, i32 noundef %609, float noundef 1.000000e+00)
          to label %738 unwind label %743

738:                                              ; preds = %727
  %739 = fcmp une float %732, 1.000000e+00
  br i1 %739, label %740, label %766

740:                                              ; preds = %738
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %38) #11
  %741 = sdiv i32 %609, 2
  %742 = icmp sgt i32 %609, 1
  br i1 %742, label %.lr.ph696, label %._crit_edge697

._crit_edge697:                                   ; preds = %762, %740
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #11
  br label %766

743:                                              ; preds = %727
  %744 = landingpad { ptr, i32 }
          cleanup
  br label %769

.lr.ph696:                                        ; preds = %740, %762
  %.0524694 = phi i32 [ %763, %762 ], [ 0, %740 ]
  %745 = load ptr, ptr %642, align 8, !tbaa !54
  %746 = invoke noundef i32 @_Z7bytesOf8DataType(i32 noundef 4)
          to label %747 unwind label %764

747:                                              ; preds = %.lr.ph696
  %748 = mul i32 %746, %.0524694
  %749 = zext i32 %748 to i64
  %750 = getelementptr inbounds i8, ptr %745, i64 %749
  %751 = invoke noundef i32 @_Z16transformToFloat8DataTypePKvPfif(i32 noundef 4, ptr noundef %750, ptr noundef nonnull %38, i32 noundef 1, float noundef 1.000000e+00)
          to label %752 unwind label %764

752:                                              ; preds = %747
  %753 = load float, ptr %38, align 4, !tbaa !55
  %754 = fmul float %732, %753
  store float %754, ptr %38, align 4, !tbaa !55
  %755 = load ptr, ptr %642, align 8, !tbaa !54
  %756 = invoke noundef i32 @_Z7bytesOf8DataType(i32 noundef 4)
          to label %757 unwind label %764

757:                                              ; preds = %752
  %758 = mul i32 %756, %.0524694
  %759 = zext i32 %758 to i64
  %760 = getelementptr inbounds i8, ptr %755, i64 %759
  %761 = invoke noundef i32 @_Z18transformFromFloat8DataTypePKfPvif(i32 noundef 4, ptr noundef nonnull %38, ptr noundef %760, i32 noundef 1, float noundef 1.000000e+00)
          to label %762 unwind label %764

762:                                              ; preds = %757
  %763 = add nuw nsw i32 %.0524694, 1
  %exitcond.not = icmp eq i32 %763, %741
  br i1 %exitcond.not, label %._crit_edge697, label %.lr.ph696, !llvm.loop !57

764:                                              ; preds = %757, %752, %747, %.lr.ph696
  %765 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #11
  br label %769

766:                                              ; preds = %.invoke, %665, %663, %719, %700, %._crit_edge697, %738
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #11
  %indvars.iv.next772 = add nuw nsw i64 %indvars.iv771, 1
  %767 = load i32, ptr %160, align 8, !tbaa !25
  %768 = sext i32 %767 to i64
  %.not613 = icmp slt i64 %indvars.iv.next772, %768
  br i1 %.not613, label %398, label %.critedge636, !llvm.loop !58

769:                                              ; preds = %743, %764, %624, %622
  %.pn606.pn = phi { ptr, i32 } [ %623, %622 ], [ %625, %624 ], [ %765, %764 ], [ %744, %743 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #11
  br label %894

.critedge:                                        ; preds = %674
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #11
  br label %.loopexit

.critedge636:                                     ; preds = %766, %382
  %770 = getelementptr inbounds i8, ptr %1, i64 200
  store ptr %162, ptr %770, align 8, !tbaa !45
  %771 = load i32, ptr %137, align 8, !tbaa !22
  %772 = icmp sgt i32 %771, 0
  br i1 %772, label %.lr.ph704, label %._crit_edge705

._crit_edge705:                                   ; preds = %790, %.critedge636
  %773 = getelementptr inbounds i8, ptr %0, i64 216
  %774 = load ptr, ptr %773, align 8, !tbaa !59
  %.not614 = icmp eq ptr %774, null
  br i1 %.not614, label %891, label %794

.lr.ph704:                                        ; preds = %.critedge636, %790
  %775 = phi i32 [ %791, %790 ], [ %771, %.critedge636 ]
  %indvars.iv774 = phi i64 [ %indvars.iv.next775, %790 ], [ 0, %.critedge636 ]
  %776 = getelementptr inbounds %struct.OperatorSpec, ptr %139, i64 %indvars.iv774
  %777 = getelementptr inbounds i8, ptr %776, i64 128
  %778 = load i32, ptr %777, align 8, !tbaa !26
  %cond1 = icmp eq i32 %778, 50
  br i1 %cond1, label %779, label %790

779:                                              ; preds = %.lr.ph704
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %39) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %40) #11
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull %776, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %780 unwind label %785

780:                                              ; preds = %779
  %781 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeSt4lessIS5_ESaISt4pairIKS5_S6_EEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %10, ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %782 unwind label %787

782:                                              ; preds = %780
  %783 = load i32, ptr %781, align 4, !tbaa !9
  %784 = getelementptr inbounds i8, ptr %776, i64 184
  store i32 %783, ptr %784, align 8, !tbaa !43
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #11
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #11
  %.pre792 = load i32, ptr %137, align 8, !tbaa !22
  br label %790

785:                                              ; preds = %779
  %786 = landingpad { ptr, i32 }
          cleanup
  br label %789

787:                                              ; preds = %780
  %788 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #11
  br label %789

789:                                              ; preds = %787, %785
  %.pn617 = phi { ptr, i32 } [ %788, %787 ], [ %786, %785 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #11
  br label %894

790:                                              ; preds = %782, %.lr.ph704
  %791 = phi i32 [ %.pre792, %782 ], [ %775, %.lr.ph704 ]
  %indvars.iv.next775 = add nuw nsw i64 %indvars.iv774, 1
  %792 = sext i32 %791 to i64
  %793 = icmp slt i64 %indvars.iv.next775, %792
  br i1 %793, label %.lr.ph704, label %._crit_edge705, !llvm.loop !60

794:                                              ; preds = %._crit_edge705
  %795 = getelementptr inbounds i8, ptr %0, i64 208
  %796 = load i32, ptr %795, align 8, !tbaa !61
  %797 = getelementptr inbounds i8, ptr %1, i64 208
  store i32 %796, ptr %797, align 8, !tbaa !61
  %798 = mul i32 %796, 160
  %799 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef %798)
          to label %800 unwind label %804

800:                                              ; preds = %794
  %801 = getelementptr inbounds i8, ptr %1, i64 216
  store ptr %799, ptr %801, align 8, !tbaa !59
  %802 = load i32, ptr %797, align 8, !tbaa !61
  %803 = icmp sgt i32 %802, 0
  br i1 %803, label %.lr.ph718, label %.loopexit

804:                                              ; preds = %794
  %805 = landingpad { ptr, i32 }
          cleanup
  br label %894

.lr.ph718:                                        ; preds = %800, %._crit_edge715
  %806 = phi ptr [ %862, %._crit_edge715 ], [ %799, %800 ]
  %indvars.iv783 = phi i64 [ %indvars.iv.next784, %._crit_edge715 ], [ 0, %800 ]
  %807 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %806, i64 %indvars.iv783
  %808 = load ptr, ptr %773, align 8, !tbaa !59
  %809 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %808, i64 %indvars.iv783
  %810 = invoke noundef i32 @_Z8str_copyPcPKcii(ptr noundef %807, ptr noundef %809, i32 noundef 128, i32 noundef 128)
          to label %811 unwind label %830

811:                                              ; preds = %.lr.ph718
  %812 = load ptr, ptr %773, align 8, !tbaa !59
  %813 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %812, i64 %indvars.iv783, i32 1
  %814 = load i32, ptr %813, align 8, !tbaa !62
  %815 = load ptr, ptr %801, align 8, !tbaa !59
  %816 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %815, i64 %indvars.iv783, i32 1
  store i32 %814, ptr %816, align 8, !tbaa !62
  %817 = shl i32 %814, 3
  %818 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef %817)
          to label %819 unwind label %830

819:                                              ; preds = %811
  %820 = load ptr, ptr %801, align 8, !tbaa !59
  %821 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %820, i64 %indvars.iv783, i32 2
  store ptr %818, ptr %821, align 8, !tbaa !64
  %822 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %820, i64 %indvars.iv783, i32 1
  %823 = load i32, ptr %822, align 8, !tbaa !62
  %.not723 = icmp eq i32 %823, 0
  br i1 %.not723, label %._crit_edge709, label %.lr.ph708

._crit_edge709:                                   ; preds = %849, %819
  %.lcssa641 = phi ptr [ %820, %819 ], [ %850, %849 ]
  %824 = load ptr, ptr %773, align 8, !tbaa !59
  %825 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %824, i64 %indvars.iv783, i32 3
  %826 = load i32, ptr %825, align 8, !tbaa !65
  %827 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %.lcssa641, i64 %indvars.iv783, i32 3
  store i32 %826, ptr %827, align 8, !tbaa !65
  %828 = shl i32 %826, 3
  %829 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef %828)
          to label %857 unwind label %830

830:                                              ; preds = %._crit_edge709, %811, %.lr.ph718
  %831 = landingpad { ptr, i32 }
          cleanup
  br label %894

.lr.ph708:                                        ; preds = %819, %849
  %indvars.iv777 = phi i64 [ %indvars.iv.next778, %849 ], [ 0, %819 ]
  %832 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef 128)
          to label %833 unwind label %855

833:                                              ; preds = %.lr.ph708
  %834 = load ptr, ptr %801, align 8, !tbaa !59
  %835 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %834, i64 %indvars.iv783, i32 2
  %836 = load ptr, ptr %835, align 8, !tbaa !64
  %837 = getelementptr inbounds ptr, ptr %836, i64 %indvars.iv777
  store ptr %832, ptr %837, align 8, !tbaa !5
  %838 = load ptr, ptr %801, align 8, !tbaa !59
  %839 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %838, i64 %indvars.iv783, i32 2
  %840 = load ptr, ptr %839, align 8, !tbaa !64
  %841 = getelementptr inbounds ptr, ptr %840, i64 %indvars.iv777
  %842 = load ptr, ptr %841, align 8, !tbaa !5
  %843 = load ptr, ptr %773, align 8, !tbaa !59
  %844 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %843, i64 %indvars.iv783, i32 2
  %845 = load ptr, ptr %844, align 8, !tbaa !64
  %846 = getelementptr inbounds ptr, ptr %845, i64 %indvars.iv777
  %847 = load ptr, ptr %846, align 8, !tbaa !5
  %848 = invoke noundef i32 @_Z8str_copyPcPKcii(ptr noundef %842, ptr noundef %847, i32 noundef 128, i32 noundef 128)
          to label %849 unwind label %855

849:                                              ; preds = %833
  %indvars.iv.next778 = add nuw nsw i64 %indvars.iv777, 1
  %850 = load ptr, ptr %801, align 8, !tbaa !59
  %851 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %850, i64 %indvars.iv783, i32 1
  %852 = load i32, ptr %851, align 8, !tbaa !62
  %853 = zext i32 %852 to i64
  %854 = icmp ult i64 %indvars.iv.next778, %853
  br i1 %854, label %.lr.ph708, label %._crit_edge709, !llvm.loop !66

855:                                              ; preds = %833, %.lr.ph708
  %856 = landingpad { ptr, i32 }
          cleanup
  br label %894

857:                                              ; preds = %._crit_edge709
  %858 = load ptr, ptr %801, align 8, !tbaa !59
  %859 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %858, i64 %indvars.iv783, i32 4
  store ptr %829, ptr %859, align 8, !tbaa !67
  %860 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %858, i64 %indvars.iv783, i32 3
  %861 = load i32, ptr %860, align 8, !tbaa !65
  %.not724 = icmp eq i32 %861, 0
  br i1 %.not724, label %._crit_edge715, label %.lr.ph714

._crit_edge715:                                   ; preds = %883, %857
  %862 = phi ptr [ %858, %857 ], [ %884, %883 ]
  %indvars.iv.next784 = add nuw nsw i64 %indvars.iv783, 1
  %863 = load i32, ptr %797, align 8, !tbaa !61
  %864 = sext i32 %863 to i64
  %865 = icmp slt i64 %indvars.iv.next784, %864
  br i1 %865, label %.lr.ph718, label %.loopexit, !llvm.loop !68

.lr.ph714:                                        ; preds = %857, %883
  %indvars.iv780 = phi i64 [ %indvars.iv.next781, %883 ], [ 0, %857 ]
  %866 = invoke noundef ptr @_Z9mt_mallocj(i32 noundef 128)
          to label %867 unwind label %889

867:                                              ; preds = %.lr.ph714
  %868 = load ptr, ptr %801, align 8, !tbaa !59
  %869 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %868, i64 %indvars.iv783, i32 4
  %870 = load ptr, ptr %869, align 8, !tbaa !67
  %871 = getelementptr inbounds ptr, ptr %870, i64 %indvars.iv780
  store ptr %866, ptr %871, align 8, !tbaa !5
  %872 = load ptr, ptr %801, align 8, !tbaa !59
  %873 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %872, i64 %indvars.iv783, i32 4
  %874 = load ptr, ptr %873, align 8, !tbaa !67
  %875 = getelementptr inbounds ptr, ptr %874, i64 %indvars.iv780
  %876 = load ptr, ptr %875, align 8, !tbaa !5
  %877 = load ptr, ptr %773, align 8, !tbaa !59
  %878 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %877, i64 %indvars.iv783, i32 4
  %879 = load ptr, ptr %878, align 8, !tbaa !67
  %880 = getelementptr inbounds ptr, ptr %879, i64 %indvars.iv780
  %881 = load ptr, ptr %880, align 8, !tbaa !5
  %882 = invoke noundef i32 @_Z8str_copyPcPKcii(ptr noundef %876, ptr noundef %881, i32 noundef 128, i32 noundef 128)
          to label %883 unwind label %889

883:                                              ; preds = %867
  %indvars.iv.next781 = add nuw nsw i64 %indvars.iv780, 1
  %884 = load ptr, ptr %801, align 8, !tbaa !59
  %885 = getelementptr inbounds %struct.OperatorRelationshipMapEntry, ptr %884, i64 %indvars.iv783, i32 3
  %886 = load i32, ptr %885, align 8, !tbaa !65
  %887 = zext i32 %886 to i64
  %888 = icmp ult i64 %indvars.iv.next781, %887
  br i1 %888, label %.lr.ph714, label %._crit_edge715, !llvm.loop !69

889:                                              ; preds = %867, %.lr.ph714
  %890 = landingpad { ptr, i32 }
          cleanup
  br label %894

891:                                              ; preds = %._crit_edge705
  %892 = getelementptr inbounds i8, ptr %1, i64 208
  store i32 0, ptr %892, align 8, !tbaa !61
  %893 = getelementptr inbounds i8, ptr %1, i64 216
  store ptr null, ptr %893, align 8, !tbaa !59
  br label %.loopexit

.loopexit:                                        ; preds = %._crit_edge715, %800, %.critedge, %891
  %.3 = phi i32 [ 51, %.critedge ], [ 0, %891 ], [ 0, %800 ], [ 0, %._crit_edge715 ]
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeSt4lessIS5_ESaISt4pairIKS5_S6_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %10) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #11
  ret i32 %.3

894:                                              ; preds = %396, %830, %855, %889, %420, %769, %602, %559, %422, %804, %789, %187, %205, %227, %242, %283, %310, %311, %326, %341, %356, %372
  %.pn630.pn = phi { ptr, i32 } [ %206, %205 ], [ %228, %227 ], [ %373, %372 ], [ %357, %356 ], [ %342, %341 ], [ %327, %326 ], [ %312, %311 ], [ %.pn627, %310 ], [ %284, %283 ], [ %188, %187 ], [ %243, %242 ], [ %397, %396 ], [ %.pn617, %789 ], [ %805, %804 ], [ %421, %420 ], [ %.pn606.pn, %769 ], [ %603, %602 ], [ %423, %422 ], [ %.pn599, %559 ], [ %856, %855 ], [ %890, %889 ], [ %831, %830 ]
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeSt4lessIS5_ESaISt4pairIKS5_S6_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %10) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %10) #11
  br label %895

895:                                              ; preds = %894, %71, %56
  %.pn630.pn.pn = phi { ptr, i32 } [ %.pn630.pn, %894 ], [ %72, %71 ], [ %57, %56 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #11
  resume { ptr, i32 } %.pn630.pn.pn
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_Z8str_copyPcPKcii(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_Z17getTargetDataTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8DataType(ptr noundef, ptr noundef) local_unnamed_addr #3

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

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

; Function Attrs: nounwind
declare i64 @syscall(i64 noundef, ...) local_unnamed_addr #4

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #5

; Function Attrs: nofree nounwind
declare noundef i32 @fflush(ptr nocapture noundef) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local ptr @ee2str(i32 noundef) local_unnamed_addr #6

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) local_unnamed_addr #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_Z9mt_mallocj(i32 noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z10UNI_MEMCPYPvPKvm(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z18getNoquantDataTypeNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8DataType(ptr noundef, ptr noundef) local_unnamed_addr #6

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeSt4lessIS5_ESaISt4pairIKS5_S6_EEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

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

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

; Function Attrs: nofree nounwind memory(read)
declare noundef ptr @getenv(ptr nocapture noundef) local_unnamed_addr #9

; Function Attrs: inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable
declare double @atof(ptr nocapture noundef nonnull) local_unnamed_addr #10

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeEESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeSt4lessIS5_ESaISt4pairIKS5_S6_EEE4findERSA_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbPKT_RKNSt7__cxx1112basic_stringIS3_T0_T1_EE(ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_Z16get_storage_typeP9ModelSpecNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE8DataTypeS7_(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_Z18transformFromFloat8DataTypePKfPvif(i32 noundef, ptr noundef, ptr noundef, i32 noundef, float noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_Z16transformToFloat8DataTypePKvPfif(i32 noundef, ptr noundef, ptr noundef, i32 noundef, float noundef) local_unnamed_addr #3

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"_ZTS8DataType", !7, i64 0}
!11 = !{!12, !10, i64 136}
!12 = !{!"_ZTS9ModelSpec", !13, i64 0, !13, i64 4, !7, i64 8, !10, i64 136, !13, i64 140, !6, i64 144, !6, i64 152, !13, i64 160, !6, i64 168, !13, i64 176, !6, i64 184, !13, i64 192, !6, i64 200, !13, i64 208, !6, i64 216, !6, i64 224}
!13 = !{!"int", !7, i64 0}
!14 = !{!12, !13, i64 140}
!15 = !{!12, !6, i64 144}
!16 = !{!12, !6, i64 152}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = distinct !{!19, !18}
!20 = !{!12, !13, i64 160}
!21 = !{!12, !6, i64 168}
!22 = !{!12, !13, i64 176}
!23 = distinct !{!23, !18}
!24 = !{!12, !6, i64 184}
!25 = !{!12, !13, i64 192}
!26 = !{!27, !28, i64 128}
!27 = !{!"_ZTS12OperatorSpec", !7, i64 0, !28, i64 128, !13, i64 132, !6, i64 136, !13, i64 144, !6, i64 152, !6, i64 160, !13, i64 168, !6, i64 176, !7, i64 184}
!28 = !{!"_ZTS12OperatorType", !7, i64 0}
!29 = !{!27, !13, i64 132}
!30 = !{!27, !6, i64 136}
!31 = !{!27, !13, i64 144}
!32 = distinct !{!32, !18}
!33 = !{!27, !6, i64 152}
!34 = distinct !{!34, !18}
!35 = !{!27, !6, i64 160}
!36 = !{!27, !13, i64 168}
!37 = !{!27, !6, i64 176}
!38 = !{!39, !13, i64 0}
!39 = !{!"_ZTS9QuantSpec", !13, i64 0, !6, i64 8}
!40 = !{!39, !6, i64 8}
!41 = distinct !{!41, !18}
!42 = !{i64 0, i64 1116, !43}
!43 = !{!7, !7, i64 0}
!44 = distinct !{!44, !18}
!45 = !{!12, !6, i64 200}
!46 = !{!47, !10, i64 128}
!47 = !{!"_ZTS10WeightSpec", !7, i64 0, !10, i64 128, !13, i64 132, !6, i64 136, !13, i64 144, !6, i64 152, !13, i64 160, !6, i64 168}
!48 = !{!47, !13, i64 132}
!49 = !{!47, !6, i64 136}
!50 = !{!47, !13, i64 160}
!51 = !{!47, !6, i64 168}
!52 = distinct !{!52, !18}
!53 = !{!47, !13, i64 144}
!54 = !{!47, !6, i64 152}
!55 = !{!56, !56, i64 0}
!56 = !{!"float", !7, i64 0}
!57 = distinct !{!57, !18}
!58 = distinct !{!58, !18}
!59 = !{!12, !6, i64 216}
!60 = distinct !{!60, !18}
!61 = !{!12, !13, i64 208}
!62 = !{!63, !13, i64 128}
!63 = !{!"_ZTS28OperatorRelationshipMapEntry", !7, i64 0, !13, i64 128, !6, i64 136, !13, i64 144, !6, i64 152}
!64 = !{!63, !6, i64 136}
!65 = !{!63, !13, i64 144}
!66 = distinct !{!66, !18}
!67 = !{!63, !6, i64 152}
!68 = distinct !{!68, !18}
!69 = distinct !{!69, !18}


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