; LLVM IR from huawei-noah/bolt :: compute/tensor/src/cpu/x86/int8/avx512 (convolution_1x1_direct)

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

%struct.TensorDesc = type { i32, i32, i32, [20 x i32] }
%struct.ConvolutionParamSpec = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %union.ActivationSpec, i32, i32, i32, i32 }
%union.ActivationSpec = type { %struct.ClipParamSpec }
%struct.ClipParamSpec = type { float, float }
%struct.ActivationParamSpec = type { i32, [4 x float] }
%struct.ConvController = type { ptr, ptr, ptr, ptr, ptr, ptr, i64, i64, i64, ptr, i64, i64, i64, i64, i64, i64, i64, i64, ptr, i8, i64, i64, ptr }

@.str = external hidden unnamed_addr constant [20 x i8], align 1
@stdout = external global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [18 x i8], align 1
@__const._Z22convolution_1x1_direct10TensorDescPhPfS_PKa20ConvolutionParamSpecS_PKfjPvS_S7_S1_19ActivationParamSpec.ocSizeArray = external hidden unnamed_addr constant [4 x i32], align 16
@__const._Z22convolution_1x1_direct10TensorDescPhPfS_PKa20ConvolutionParamSpecS_PKfjPvS_S7_S1_19ActivationParamSpec.wSizeArray = external hidden unnamed_addr constant [4 x i32], align 16
@__const._Z22convolution_1x1_direct10TensorDescPhPfS_PKa20ConvolutionParamSpecS_PKfjPvS_S7_S1_19ActivationParamSpec.kernel = external hidden unnamed_addr constant [4 x [3 x ptr]], align 16

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_Z22convolution_1x1_direct10TensorDescPhPfS_PKa20ConvolutionParamSpecS_PKfjPvS_S7_S1_19ActivationParamSpec(ptr noundef byval(%struct.TensorDesc) align 8 %0, ptr noundef %1, ptr noundef %2, ptr noundef byval(%struct.TensorDesc) align 8 %3, ptr noundef %4, ptr noundef byval(%struct.ConvolutionParamSpec) align 8 %5, ptr noundef byval(%struct.TensorDesc) align 8 %6, ptr noundef %7, i32 noundef %8, ptr noundef %9, ptr noundef byval(%struct.TensorDesc) align 8 %10, ptr noundef %11, ptr noundef %12, ptr noundef byval(%struct.ActivationParamSpec) align 8 %13) #0 {
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %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 i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca %struct.TensorDesc, align 8
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca %struct.TensorDesc, align 8
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca %struct.TensorDesc, align 8
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca [4 x i32], align 16
  %53 = alloca [4 x i32], align 16
  %54 = alloca [4 x [3 x ptr]], align 16
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca ptr, align 8
  %67 = alloca %struct.ConvController, align 8
  %68 = alloca i32, align 4
  %69 = alloca ptr, align 8
  %70 = alloca ptr, align 8
  %71 = alloca ptr, align 8
  %72 = alloca %struct.TensorDesc, align 4
  %73 = alloca i32, align 4
  %74 = alloca %struct.TensorDesc, align 8
  %75 = alloca i32, align 4
  %76 = alloca %struct.TensorDesc, align 8
  %77 = alloca %struct.TensorDesc, align 8
  %78 = alloca ptr, align 8
  %79 = alloca float, align 4
  %80 = alloca ptr, align 8
  %81 = alloca i32, align 4
  %82 = alloca %struct.TensorDesc, align 8
  %83 = alloca %struct.TensorDesc, align 8
  %84 = alloca i32, align 4
  %85 = alloca ptr, align 8
  %86 = alloca %struct.TensorDesc, align 8
  %87 = alloca i32, align 4
  %88 = alloca ptr, align 8
  %89 = alloca ptr, align 8
  %90 = alloca i32, align 4
  %91 = alloca i32, align 4
  %92 = alloca ptr, align 8
  %93 = alloca %struct.TensorDesc, align 8
  %94 = alloca %struct.ConvolutionParamSpec, align 8
  %95 = alloca %struct.TensorDesc, align 8
  %96 = alloca %struct.ConvolutionParamSpec, align 8
  %97 = alloca %struct.TensorDesc, align 8
  %98 = alloca %struct.ConvolutionParamSpec, align 8
  %99 = alloca i32, align 4
  %100 = alloca i32, align 4
  %101 = alloca i32, align 4
  %102 = alloca i32, align 4
  %103 = alloca i32, align 4
  %104 = alloca i32, align 4
  %105 = alloca i32, align 4
  %106 = alloca i32, align 4
  %107 = alloca i32, align 4
  %108 = alloca i32, align 4
  %109 = alloca i32, align 4
  %110 = alloca i32, align 4
  %111 = alloca i32, align 4
  %112 = alloca i32, align 4
  %113 = alloca i32, align 4
  %114 = alloca ptr, align 8
  %115 = alloca i32, align 4
  %116 = alloca i32, align 4
  %117 = alloca i32, align 4
  %118 = alloca i32, align 4
  %119 = alloca i32, align 4
  %120 = alloca i32, align 4
  %121 = alloca i32, align 4
  %122 = alloca i32, align 4
  %123 = alloca i32, align 4
  %124 = alloca ptr, align 8
  %125 = alloca i32, align 4
  %126 = alloca i32, align 4
  %127 = alloca i32, align 4
  %128 = alloca i32, align 4
  %129 = alloca i32, align 4
  %130 = alloca [2 x float], align 4
  %131 = alloca %struct.TensorDesc, align 4
  %132 = alloca i32, align 4
  %133 = alloca %struct.TensorDesc, align 8
  %134 = alloca i32, align 4
  store ptr %1, ptr %15, align 8, !tbaa !5
  store ptr %2, ptr %16, align 8, !tbaa !5
  store ptr %4, ptr %17, align 8, !tbaa !5
  store ptr %7, ptr %18, align 8, !tbaa !5
  store i32 %8, ptr %19, align 4, !tbaa !9
  store ptr %9, ptr %20, align 8, !tbaa !5
  store ptr %11, ptr %21, align 8, !tbaa !5
  store ptr %12, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %42, ptr align 8 %0, i64 92, i1 false), !tbaa.struct !11
  %135 = call noundef i32 @_Z11tensor4dGet10TensorDescP8DataTypeP10DataFormatPjS4_S4_S4_(ptr noundef byval(%struct.TensorDesc) align 8 %42, ptr noundef %23, ptr noundef %26, ptr noundef %29, ptr noundef %30, ptr noundef %31, ptr noundef %32)
  store i32 %135, ptr %41, align 4, !tbaa !17
  %136 = load i32, ptr %41, align 4, !tbaa !17
  %137 = icmp ne i32 %136, 0
  br i1 %137, label %138, label %150

138:                                              ; preds = %14
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #8
  %139 = call i64 (i64, ...) @syscall(i64 noundef 186) #8
  %140 = trunc i64 %139 to i32
  store i32 %140, ptr %43, align 4, !tbaa !9
  %141 = load i32, ptr %43, align 4, !tbaa !9
  %142 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %141)
  %143 = load ptr, ptr @stdout, align 8, !tbaa !5
  %144 = call i32 @fflush(ptr noundef %143)
  %145 = load i32, ptr %41, align 4, !tbaa !17
  %146 = call ptr @ee2str(i32 noundef %145)
  %147 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %146)
  %148 = load ptr, ptr @stdout, align 8, !tbaa !5
  %149 = call i32 @fflush(ptr noundef %148)
  call void @exit(i32 noundef 1) #9
  unreachable

150:                                              ; preds = %14
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %45, ptr align 8 %3, i64 92, i1 false), !tbaa.struct !11
  %151 = call noundef i32 @_Z11tensor4dGet10TensorDescP8DataTypeP10DataFormatPjS4_S4_S4_(ptr noundef byval(%struct.TensorDesc) align 8 %45, ptr noundef %24, ptr noundef %27, ptr noundef %33, ptr noundef %34, ptr noundef %35, ptr noundef %36)
  store i32 %151, ptr %44, align 4, !tbaa !17
  %152 = load i32, ptr %44, align 4, !tbaa !17
  %153 = icmp ne i32 %152, 0
  br i1 %153, label %154, label %166

154:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #8
  %155 = call i64 (i64, ...) @syscall(i64 noundef 186) #8
  %156 = trunc i64 %155 to i32
  store i32 %156, ptr %46, align 4, !tbaa !9
  %157 = load i32, ptr %46, align 4, !tbaa !9
  %158 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %157)
  %159 = load ptr, ptr @stdout, align 8, !tbaa !5
  %160 = call i32 @fflush(ptr noundef %159)
  %161 = load i32, ptr %44, align 4, !tbaa !17
  %162 = call ptr @ee2str(i32 noundef %161)
  %163 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %162)
  %164 = load ptr, ptr @stdout, align 8, !tbaa !5
  %165 = call i32 @fflush(ptr noundef %164)
  call void @exit(i32 noundef 1) #9
  unreachable

166:                                              ; preds = %150
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %48, ptr align 8 %10, i64 92, i1 false), !tbaa.struct !11
  %167 = call noundef i32 @_Z11tensor4dGet10TensorDescP8DataTypeP10DataFormatPjS4_S4_S4_(ptr noundef byval(%struct.TensorDesc) align 8 %48, ptr noundef %25, ptr noundef %28, ptr noundef %37, ptr noundef %38, ptr noundef %39, ptr noundef %40)
  store i32 %167, ptr %47, align 4, !tbaa !17
  %168 = load i32, ptr %47, align 4, !tbaa !17
  %169 = icmp ne i32 %168, 0
  br i1 %169, label %170, label %182

170:                                              ; preds = %166
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #8
  %171 = call i64 (i64, ...) @syscall(i64 noundef 186) #8
  %172 = trunc i64 %171 to i32
  store i32 %172, ptr %49, align 4, !tbaa !9
  %173 = load i32, ptr %49, align 4, !tbaa !9
  %174 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %173)
  %175 = load ptr, ptr @stdout, align 8, !tbaa !5
  %176 = call i32 @fflush(ptr noundef %175)
  %177 = load i32, ptr %47, align 4, !tbaa !17
  %178 = call ptr @ee2str(i32 noundef %177)
  %179 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %178)
  %180 = load ptr, ptr @stdout, align 8, !tbaa !5
  %181 = call i32 @fflush(ptr noundef %180)
  call void @exit(i32 noundef 1) #9
  unreachable

182:                                              ; preds = %166
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #8
  %183 = load i32, ptr %26, align 4, !tbaa !14
  %184 = icmp eq i32 %183, 15
  br i1 %184, label %185, label %186

185:                                              ; preds = %182
  store i32 0, ptr %26, align 4, !tbaa !14
  br label %186

186:                                              ; preds = %185, %182
  %187 = load i32, ptr %27, align 4, !tbaa !14
  %188 = icmp ne i32 %187, 42
  br i1 %188, label %198, label %189

189:                                              ; preds = %186
  %190 = load i32, ptr %26, align 4, !tbaa !14
  %191 = icmp ne i32 %190, 41
  br i1 %191, label %192, label %214

192:                                              ; preds = %189
  %193 = load i32, ptr %26, align 4, !tbaa !14
  %194 = icmp ne i32 %193, 0
  br i1 %194, label %195, label %214

195:                                              ; preds = %192
  %196 = load i32, ptr %26, align 4, !tbaa !14
  %197 = icmp ne i32 %196, 2
  br i1 %197, label %198, label %214

198:                                              ; preds = %195, %186
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #8
  store i32 2, ptr %50, align 4, !tbaa !17
  %199 = load i32, ptr %50, align 4, !tbaa !17
  %200 = icmp ne i32 %199, 0
  br i1 %200, label %201, label %213

201:                                              ; preds = %198
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #8
  %202 = call i64 (i64, ...) @syscall(i64 noundef 186) #8
  %203 = trunc i64 %202 to i32
  store i32 %203, ptr %51, align 4, !tbaa !9
  %204 = load i32, ptr %51, align 4, !tbaa !9
  %205 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %204)
  %206 = load ptr, ptr @stdout, align 8, !tbaa !5
  %207 = call i32 @fflush(ptr noundef %206)
  %208 = load i32, ptr %50, align 4, !tbaa !17
  %209 = call ptr @ee2str(i32 noundef %208)
  %210 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %209)
  %211 = load ptr, ptr @stdout, align 8, !tbaa !5
  %212 = call i32 @fflush(ptr noundef %211)
  call void @exit(i32 noundef 1) #9
  unreachable

213:                                              ; preds = %198
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #8
  br label %214

214:                                              ; preds = %213, %195, %192, %189
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %52, ptr align 16 @__const._Z22convolution_1x1_direct10TensorDescPhPfS_PKa20ConvolutionParamSpecS_PKfjPvS_S7_S1_19ActivationParamSpec.ocSizeArray, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %53) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %53, ptr align 16 @__const._Z22convolution_1x1_direct10TensorDescPhPfS_PKa20ConvolutionParamSpecS_PKfjPvS_S7_S1_19ActivationParamSpec.wSizeArray, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 96, ptr %54) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %54, ptr align 16 @__const._Z22convolution_1x1_direct10TensorDescPhPfS_PKa20ConvolutionParamSpecS_PKfjPvS_S7_S1_19ActivationParamSpec.kernel, i64 96, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #8
  %215 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %5, i32 0, i32 5
  %216 = load i32, ptr %215, align 4, !tbaa !19
  store i32 %216, ptr %55, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #8
  %217 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %5, i32 0, i32 6
  %218 = load i32, ptr %217, align 8, !tbaa !24
  store i32 %218, ptr %56, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #8
  %219 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %5, i32 0, i32 9
  %220 = load i32, ptr %219, align 4, !tbaa !25
  store i32 %220, ptr %57, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #8
  %221 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %5, i32 0, i32 10
  %222 = load i32, ptr %221, align 8, !tbaa !26
  store i32 %222, ptr %58, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #8
  %223 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %5, i32 0, i32 11
  %224 = load i32, ptr %223, align 4, !tbaa !27
  store i32 %224, ptr %59, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #8
  %225 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %5, i32 0, i32 12
  %226 = load i32, ptr %225, align 8, !tbaa !28
  store i32 %226, ptr %60, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #8
  %227 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %5, i32 0, i32 15
  %228 = load i32, ptr %227, align 4, !tbaa !29
  store i32 %228, ptr %61, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #8
  %229 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %5, i32 0, i32 16
  %230 = load i32, ptr %229, align 8, !tbaa !30
  store i32 %230, ptr %62, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #8
  %231 = load i32, ptr %31, align 4, !tbaa !9
  %232 = load i32, ptr %55, align 4, !tbaa !9
  %233 = add i32 %231, %232
  %234 = sub i32 %233, 1
  %235 = load i32, ptr %55, align 4, !tbaa !9
  %236 = udiv i32 %234, %235
  store i32 %236, ptr %63, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #8
  %237 = load i32, ptr %32, align 4, !tbaa !9
  %238 = load i32, ptr %56, align 4, !tbaa !9
  %239 = add i32 %237, %238
  %240 = sub i32 %239, 1
  %241 = load i32, ptr %56, align 4, !tbaa !9
  %242 = udiv i32 %240, %241
  store i32 %242, ptr %64, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #8
  %243 = load i32, ptr %39, align 4, !tbaa !9
  %244 = load i32, ptr %40, align 4, !tbaa !9
  %245 = mul i32 %243, %244
  store i32 %245, ptr %65, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #8
  %246 = load ptr, ptr %21, align 8, !tbaa !5
  store ptr %246, ptr %66, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 184, ptr %67) #8
  %247 = load i32, ptr %39, align 4, !tbaa !9
  %248 = load i32, ptr %40, align 4, !tbaa !9
  %249 = mul i32 %247, %248
  %250 = mul i32 %249, 16
  %251 = mul i32 %250, 4
  %252 = zext i32 %251 to i64
  %253 = getelementptr inbounds %struct.ConvController, ptr %67, i32 0, i32 12
  store i64 %252, ptr %253, align 8, !tbaa !31
  %254 = load i32, ptr %62, align 4, !tbaa !9
  %255 = mul i32 %254, 16
  %256 = zext i32 %255 to i64
  %257 = getelementptr inbounds %struct.ConvController, ptr %67, i32 0, i32 10
  store i64 %256, ptr %257, align 8, !tbaa !35
  %258 = load i32, ptr %64, align 4, !tbaa !9
  %259 = load i32, ptr %36, align 4, !tbaa !9
  %260 = load i32, ptr %62, align 4, !tbaa !9
  %261 = mul i32 %259, %260
  %262 = sub i32 %258, %261
  %263 = load i32, ptr %61, align 4, !tbaa !9
  %264 = sub i32 %263, 1
  %265 = load i32, ptr %64, align 4, !tbaa !9
  %266 = mul i32 %264, %265
  %267 = add i32 %262, %266
  %268 = mul i32 %267, 16
  %269 = zext i32 %268 to i64
  %270 = getelementptr inbounds %struct.ConvController, ptr %67, i32 0, i32 11
  store i64 %269, ptr %270, align 8, !tbaa !36
  %271 = load i32, ptr %63, align 4, !tbaa !9
  %272 = load i32, ptr %64, align 4, !tbaa !9
  %273 = mul i32 %271, %272
  %274 = mul i32 %273, 16
  %275 = zext i32 %274 to i64
  %276 = getelementptr inbounds %struct.ConvController, ptr %67, i32 0, i32 14
  store i64 %275, ptr %276, align 8, !tbaa !37
  %277 = load i32, ptr %36, align 4, !tbaa !9
  %278 = zext i32 %277 to i64
  %279 = getelementptr inbounds %struct.ConvController, ptr %67, i32 0, i32 7
  store i64 %278, ptr %279, align 8, !tbaa !38
  %280 = load i32, ptr %35, align 4, !tbaa !9
  %281 = zext i32 %280 to i64
  %282 = getelementptr inbounds %struct.ConvController, ptr %67, i32 0, i32 8
  store i64 %281, ptr %282, align 8, !tbaa !39
  %283 = getelementptr inbounds %struct.ConvController, ptr %67, i32 0, i32 18
  store ptr null, ptr %283, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #8
  store i32 48, ptr %68, align 4, !tbaa !9
  %284 = load i32, ptr %33, align 4, !tbaa !9
  %285 = urem i32 %284, 32
  %286 = icmp eq i32 %285, 0
  br i1 %286, label %287, label %292

287:                                              ; preds = %214
  %288 = load i32, ptr %33, align 4, !tbaa !9
  %289 = urem i32 %288, 48
  %290 = icmp ne i32 %289, 0
  br i1 %290, label %291, label %292

291:                                              ; preds = %287
  store i32 32, ptr %68, align 4, !tbaa !9
  br label %292

292:                                              ; preds = %291, %287, %214
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #8
  %293 = load ptr, ptr %22, align 8, !tbaa !5
  store ptr %293, ptr %69, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #8
  %294 = load ptr, ptr %22, align 8, !tbaa !5
  %295 = getelementptr inbounds float, ptr %294, i64 1
  store ptr %295, ptr %70, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #8
  %296 = load ptr, ptr %22, align 8, !tbaa !5
  %297 = getelementptr inbounds float, ptr %296, i64 2
  store ptr %297, ptr %71, align 8, !tbaa !5
  %298 = load i32, ptr %23, align 4, !tbaa !12
  %299 = icmp ne i32 %298, 10
  br i1 %299, label %300, label %326

300:                                              ; preds = %292
  call void @llvm.lifetime.start.p0(i64 92, ptr %72) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %72, ptr align 8 %0, i64 92, i1 false), !tbaa.struct !11
  %301 = getelementptr inbounds %struct.TensorDesc, ptr %72, i32 0, i32 0
  store i32 10, ptr %301, align 4, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %74, ptr align 8 %0, i64 92, i1 false), !tbaa.struct !11
  %302 = load ptr, ptr %15, align 8, !tbaa !5
  %303 = load ptr, ptr %20, align 8, !tbaa !5
  %304 = load ptr, ptr %69, align 8, !tbaa !5
  %305 = call noundef i32 @_Z12quantize_x8610TensorDescPKvPS_PvPfi(ptr noundef byval(%struct.TensorDesc) align 8 %74, ptr noundef %302, ptr noundef %72, ptr noundef %303, ptr noundef %304, i32 noundef 0)
  store i32 %305, ptr %73, align 4, !tbaa !17
  %306 = load i32, ptr %73, align 4, !tbaa !17
  %307 = icmp ne i32 %306, 0
  br i1 %307, label %308, label %320

308:                                              ; preds = %300
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #8
  %309 = call i64 (i64, ...) @syscall(i64 noundef 186) #8
  %310 = trunc i64 %309 to i32
  store i32 %310, ptr %75, align 4, !tbaa !9
  %311 = load i32, ptr %75, align 4, !tbaa !9
  %312 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %311)
  %313 = load ptr, ptr @stdout, align 8, !tbaa !5
  %314 = call i32 @fflush(ptr noundef %313)
  %315 = load i32, ptr %73, align 4, !tbaa !17
  %316 = call ptr @ee2str(i32 noundef %315)
  %317 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %316)
  %318 = load ptr, ptr @stdout, align 8, !tbaa !5
  %319 = call i32 @fflush(ptr noundef %318)
  call void @exit(i32 noundef 1) #9
  unreachable

320:                                              ; preds = %300
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #8
  %321 = load ptr, ptr %20, align 8, !tbaa !5
  store ptr %321, ptr %15, align 8, !tbaa !5
  %322 = load ptr, ptr %20, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %76, ptr align 4 %72, i64 92, i1 false), !tbaa.struct !11
  %323 = call noundef i32 @_Z14tensorNumBytes10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8 %76)
  %324 = zext i32 %323 to i64
  %325 = getelementptr inbounds i8, ptr %322, i64 %324
  store ptr %325, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 92, ptr %72) #8
  br label %326

326:                                              ; preds = %320, %292
  %327 = load ptr, ptr %69, align 8, !tbaa !5
  %328 = getelementptr inbounds float, ptr %327, i64 0
  %329 = load float, ptr %328, align 4, !tbaa !43
  %330 = load ptr, ptr %71, align 8, !tbaa !5
  %331 = getelementptr inbounds float, ptr %330, i64 0
  %332 = load float, ptr %331, align 4, !tbaa !43
  %333 = fmul float %329, %332
  %334 = load ptr, ptr %70, align 8, !tbaa !5
  store float %333, ptr %334, align 4, !tbaa !43
  %335 = load i32, ptr %25, align 4, !tbaa !12
  %336 = icmp ne i32 %335, 6
  br i1 %336, label %337, label %349

337:                                              ; preds = %326
  %338 = load i32, ptr %25, align 4, !tbaa !12
  %339 = icmp ne i32 %338, 3
  br i1 %339, label %340, label %349

340:                                              ; preds = %337
  %341 = load ptr, ptr %20, align 8, !tbaa !5
  store ptr %341, ptr %66, align 8, !tbaa !5
  %342 = load ptr, ptr %20, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %77, ptr align 8 %10, i64 92, i1 false), !tbaa.struct !11
  %343 = call noundef i32 @_Z17tensorNumElements10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8 %77)
  %344 = call noundef i32 @_Z7bytesOf8DataType(i32 noundef 3)
  %345 = mul i32 %343, %344
  %346 = zext i32 %345 to i64
  %347 = getelementptr inbounds i8, ptr %342, i64 %346
  store ptr %347, ptr %20, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.TensorDesc, ptr %10, i32 0, i32 0
  store i32 3, ptr %348, align 8, !tbaa !41
  br label %349

349:                                              ; preds = %340, %337, %326
  %350 = load ptr, ptr %16, align 8, !tbaa !5
  %351 = icmp ne ptr %350, null
  br i1 %351, label %352, label %354

352:                                              ; preds = %349
  %353 = getelementptr inbounds %struct.TensorDesc, ptr %10, i32 0, i32 0
  store i32 6, ptr %353, align 8, !tbaa !41
  br label %354

354:                                              ; preds = %352, %349
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #8
  store ptr null, ptr %78, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #8
  store float 0.000000e+00, ptr %79, align 4, !tbaa !43
  %355 = load ptr, ptr %22, align 8, !tbaa !5
  %356 = icmp ne ptr %355, null
  br i1 %356, label %357, label %365

357:                                              ; preds = %354
  %358 = getelementptr inbounds %struct.TensorDesc, ptr %10, i32 0, i32 0
  %359 = load i32, ptr %358, align 8, !tbaa !41
  %360 = icmp eq i32 %359, 6
  br i1 %360, label %361, label %365

361:                                              ; preds = %357
  %362 = load ptr, ptr %70, align 8, !tbaa !5
  %363 = load float, ptr %362, align 4, !tbaa !43
  %364 = fdiv float 1.000000e+00, %363
  store float %364, ptr %79, align 4, !tbaa !43
  store ptr %79, ptr %78, align 8, !tbaa !5
  br label %365

365:                                              ; preds = %361, %357, %354
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #8
  %366 = load ptr, ptr %20, align 8, !tbaa !5
  store ptr %366, ptr %80, align 8, !tbaa !5
  %367 = load ptr, ptr %20, align 8, !tbaa !5
  %368 = load i32, ptr %38, align 4, !tbaa !9
  %369 = call noundef i32 @_Z7bytesOf8DataType(i32 noundef 3)
  %370 = mul i32 %368, %369
  %371 = zext i32 %370 to i64
  %372 = getelementptr inbounds i8, ptr %367, i64 %371
  store ptr %372, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #8
  %373 = load ptr, ptr %18, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %82, ptr align 8 %6, i64 92, i1 false), !tbaa.struct !11
  %374 = load ptr, ptr %17, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %83, ptr align 8 %3, i64 92, i1 false), !tbaa.struct !11
  %375 = load ptr, ptr %70, align 8, !tbaa !5
  %376 = load ptr, ptr %80, align 8, !tbaa !5
  %377 = call noundef i32 @_Z21quantize_bias_offsetCPKv10TensorDesc8DataTypeS0_S1_PKfPv(ptr noundef %373, ptr noundef byval(%struct.TensorDesc) align 8 %82, i32 noundef 3, ptr noundef %374, ptr noundef byval(%struct.TensorDesc) align 8 %83, ptr noundef %375, ptr noundef %376)
  store i32 %377, ptr %81, align 4, !tbaa !17
  %378 = load i32, ptr %81, align 4, !tbaa !17
  %379 = icmp ne i32 %378, 0
  br i1 %379, label %380, label %392

380:                                              ; preds = %365
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #8
  %381 = call i64 (i64, ...) @syscall(i64 noundef 186) #8
  %382 = trunc i64 %381 to i32
  store i32 %382, ptr %84, align 4, !tbaa !9
  %383 = load i32, ptr %84, align 4, !tbaa !9
  %384 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %383)
  %385 = load ptr, ptr @stdout, align 8, !tbaa !5
  %386 = call i32 @fflush(ptr noundef %385)
  %387 = load i32, ptr %81, align 4, !tbaa !17
  %388 = call ptr @ee2str(i32 noundef %387)
  %389 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %388)
  %390 = load ptr, ptr @stdout, align 8, !tbaa !5
  %391 = call i32 @fflush(ptr noundef %390)
  call void @exit(i32 noundef 1) #9
  unreachable

392:                                              ; preds = %365
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #8
  %393 = load i32, ptr %38, align 4, !tbaa !9
  %394 = mul i32 %393, 4
  %395 = load ptr, ptr %17, align 8, !tbaa !5
  %396 = zext i32 %394 to i64
  %397 = getelementptr inbounds i8, ptr %395, i64 %396
  store ptr %397, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #8
  %398 = load ptr, ptr %20, align 8, !tbaa !5
  store ptr %398, ptr %85, align 8, !tbaa !5
  %399 = load i32, ptr %57, align 4, !tbaa !9
  %400 = icmp ugt i32 %399, 0
  br i1 %400, label %410, label %401

401:                                              ; preds = %392
  %402 = load i32, ptr %58, align 4, !tbaa !9
  %403 = icmp ugt i32 %402, 0
  br i1 %403, label %410, label %404

404:                                              ; preds = %401
  %405 = load i32, ptr %59, align 4, !tbaa !9
  %406 = icmp ugt i32 %405, 0
  br i1 %406, label %410, label %407

407:                                              ; preds = %404
  %408 = load i32, ptr %60, align 4, !tbaa !9
  %409 = icmp ugt i32 %408, 0
  br i1 %409, label %410, label %425

410:                                              ; preds = %407, %404, %401, %392
  %411 = load ptr, ptr %18, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %86, ptr align 8 %6, i64 92, i1 false), !tbaa.struct !11
  %412 = getelementptr inbounds %struct.TensorDesc, ptr %10, i32 0, i32 0
  %413 = load i32, ptr %412, align 8, !tbaa !41
  %414 = load ptr, ptr %85, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.ActivationParamSpec, ptr %13, i32 0, i32 0
  %416 = load i32, ptr %415, align 8, !tbaa !45
  %417 = load ptr, ptr %70, align 8, !tbaa !5
  %418 = load float, ptr %417, align 4, !tbaa !43
  call void @_Z26getActivatedBiasForPaddingPKf10TensorDesc8DataTypePv14ActivationModef(ptr noundef %411, ptr noundef byval(%struct.TensorDesc) align 8 %86, i32 noundef %413, ptr noundef %414, i32 noundef %416, float noundef %418)
  %419 = load ptr, ptr %20, align 8, !tbaa !5
  %420 = load i32, ptr %38, align 4, !tbaa !9
  %421 = call noundef i32 @_Z7bytesOf8DataType(i32 noundef 6)
  %422 = mul i32 %420, %421
  %423 = zext i32 %422 to i64
  %424 = getelementptr inbounds i8, ptr %419, i64 %423
  store ptr %424, ptr %20, align 8, !tbaa !5
  br label %425

425:                                              ; preds = %410, %407
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #8
  %426 = getelementptr inbounds %struct.TensorDesc, ptr %10, i32 0, i32 0
  %427 = load i32, ptr %426, align 8, !tbaa !41
  %428 = call noundef i32 @_Z7bytesOf8DataType(i32 noundef %427)
  store i32 %428, ptr %87, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #8
  %429 = load ptr, ptr %20, align 8, !tbaa !5
  store ptr %429, ptr %88, align 8, !tbaa !5
  %430 = load i32, ptr %26, align 4, !tbaa !14
  %431 = icmp ne i32 %430, 41
  br i1 %431, label %432, label %441

432:                                              ; preds = %425
  %433 = load ptr, ptr %20, align 8, !tbaa !5
  %434 = load i32, ptr %30, align 4, !tbaa !9
  %435 = load i32, ptr %31, align 4, !tbaa !9
  %436 = mul i32 %434, %435
  %437 = load i32, ptr %32, align 4, !tbaa !9
  %438 = mul i32 %436, %437
  %439 = zext i32 %438 to i64
  %440 = getelementptr inbounds i8, ptr %433, i64 %439
  store ptr %440, ptr %20, align 8, !tbaa !5
  br label %441

441:                                              ; preds = %432, %425
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #8
  %442 = load ptr, ptr %20, align 8, !tbaa !5
  store ptr %442, ptr %89, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #8
  store i32 0, ptr %90, align 4, !tbaa !9
  br label %443

443:                                              ; preds = %1124, %441
  %444 = load i32, ptr %90, align 4, !tbaa !9
  %445 = load i32, ptr %29, align 4, !tbaa !9
  %446 = icmp ult i32 %444, %445
  br i1 %446, label %448, label %447

447:                                              ; preds = %443
  store i32 2, ptr %91, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #8
  br label %1127

448:                                              ; preds = %443
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #8
  %449 = load ptr, ptr %15, align 8, !tbaa !5
  %450 = load i32, ptr %90, align 4, !tbaa !9
  %451 = load i32, ptr %30, align 4, !tbaa !9
  %452 = mul i32 %450, %451
  %453 = load i32, ptr %31, align 4, !tbaa !9
  %454 = mul i32 %452, %453
  %455 = load i32, ptr %32, align 4, !tbaa !9
  %456 = mul i32 %454, %455
  %457 = zext i32 %456 to i64
  %458 = getelementptr inbounds i8, ptr %449, i64 %457
  store ptr %458, ptr %92, align 8, !tbaa !5
  %459 = load i32, ptr %26, align 4, !tbaa !14
  %460 = icmp eq i32 %459, 41
  br i1 %460, label %461, label %471

461:                                              ; preds = %448
  %462 = load i32, ptr %30, align 4, !tbaa !9
  %463 = urem i32 %462, 16
  %464 = icmp ne i32 %463, 0
  br i1 %464, label %465, label %468

465:                                              ; preds = %461
  %466 = load ptr, ptr %92, align 8, !tbaa !5
  %467 = load ptr, ptr %88, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %93, ptr align 8 %0, i64 92, i1 false), !tbaa.struct !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %94, ptr align 8 %5, i64 108, i1 false), !tbaa.struct !47
  call void @_Z21PaddingChannelNCHWC16PhS_10TensorDesc20ConvolutionParamSpec(ptr noundef %466, ptr noundef %467, ptr noundef byval(%struct.TensorDesc) align 8 %93, ptr noundef byval(%struct.ConvolutionParamSpec) align 8 %94)
  br label %470

468:                                              ; preds = %461
  %469 = load ptr, ptr %92, align 8, !tbaa !5
  store ptr %469, ptr %88, align 8, !tbaa !5
  br label %470

470:                                              ; preds = %468, %465
  br label %481

471:                                              ; preds = %448
  %472 = load i32, ptr %26, align 4, !tbaa !14
  %473 = icmp eq i32 %472, 2
  br i1 %473, label %474, label %477

474:                                              ; preds = %471
  %475 = load ptr, ptr %92, align 8, !tbaa !5
  %476 = load ptr, ptr %88, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %95, ptr align 8 %0, i64 92, i1 false), !tbaa.struct !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %96, ptr align 8 %5, i64 108, i1 false), !tbaa.struct !47
  call void @_Z22PaddingNCHWC8ToNCHWC16PhS_10TensorDesc20ConvolutionParamSpec(ptr noundef %475, ptr noundef %476, ptr noundef byval(%struct.TensorDesc) align 8 %95, ptr noundef byval(%struct.ConvolutionParamSpec) align 8 %96)
  br label %480

477:                                              ; preds = %471
  %478 = load ptr, ptr %92, align 8, !tbaa !5
  %479 = load ptr, ptr %88, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %97, ptr align 8 %0, i64 92, i1 false), !tbaa.struct !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %98, ptr align 8 %5, i64 108, i1 false), !tbaa.struct !47
  call void @_Z19PaddingNCHW2NCHWC16PhS_10TensorDesc20ConvolutionParamSpec(ptr noundef %478, ptr noundef %479, ptr noundef byval(%struct.TensorDesc) align 8 %97, ptr noundef byval(%struct.ConvolutionParamSpec) align 8 %98)
  br label %480

480:                                              ; preds = %477, %474
  br label %481

481:                                              ; preds = %480, %470
  %482 = load i32, ptr %30, align 4, !tbaa !9
  %483 = add i32 %482, 16
  %484 = sub i32 %483, 1
  %485 = udiv i32 %484, 16
  %486 = mul i32 %485, 16
  store i32 %486, ptr %30, align 4, !tbaa !9
  %487 = load i32, ptr %55, align 4, !tbaa !9
  %488 = icmp ugt i32 %487, 1
  br i1 %488, label %492, label %489

489:                                              ; preds = %481
  %490 = load i32, ptr %56, align 4, !tbaa !9
  %491 = icmp ugt i32 %490, 1
  br i1 %491, label %492, label %563

492:                                              ; preds = %489, %481
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #8
  %493 = load i32, ptr %30, align 4, !tbaa !9
  %494 = udiv i32 %493, 16
  store i32 %494, ptr %99, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #8
  store i32 0, ptr %100, align 4, !tbaa !9
  br label %495

495:                                              ; preds = %559, %492
  %496 = load i32, ptr %100, align 4, !tbaa !9
  %497 = load i32, ptr %63, align 4, !tbaa !9
  %498 = load i32, ptr %99, align 4, !tbaa !9
  %499 = mul i32 %497, %498
  %500 = icmp ult i32 %496, %499
  br i1 %500, label %502, label %501

501:                                              ; preds = %495
  store i32 5, ptr %91, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #8
  br label %562

502:                                              ; preds = %495
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #8
  %503 = load i32, ptr %100, align 4, !tbaa !9
  %504 = load i32, ptr %63, align 4, !tbaa !9
  %505 = udiv i32 %503, %504
  store i32 %505, ptr %101, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #8
  %506 = load i32, ptr %100, align 4, !tbaa !9
  %507 = load i32, ptr %63, align 4, !tbaa !9
  %508 = urem i32 %506, %507
  store i32 %508, ptr %102, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #8
  store i32 0, ptr %103, align 4, !tbaa !9
  br label %509

509:                                              ; preds = %555, %502
  %510 = load i32, ptr %103, align 4, !tbaa !9
  %511 = load i32, ptr %64, align 4, !tbaa !9
  %512 = icmp ult i32 %510, %511
  br i1 %512, label %514, label %513

513:                                              ; preds = %509
  store i32 8, ptr %91, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #8
  br label %558

514:                                              ; preds = %509
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #8
  %515 = load i32, ptr %102, align 4, !tbaa !9
  %516 = load i32, ptr %55, align 4, !tbaa !9
  %517 = mul i32 %515, %516
  store i32 %517, ptr %104, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #8
  %518 = load i32, ptr %103, align 4, !tbaa !9
  %519 = load i32, ptr %56, align 4, !tbaa !9
  %520 = mul i32 %518, %519
  store i32 %520, ptr %105, align 4, !tbaa !9
  %521 = load ptr, ptr %89, align 8, !tbaa !5
  %522 = load i32, ptr %101, align 4, !tbaa !9
  %523 = load i32, ptr %63, align 4, !tbaa !9
  %524 = mul i32 %522, %523
  %525 = load i32, ptr %64, align 4, !tbaa !9
  %526 = mul i32 %524, %525
  %527 = mul i32 %526, 16
  %528 = zext i32 %527 to i64
  %529 = getelementptr inbounds i8, ptr %521, i64 %528
  %530 = load i32, ptr %102, align 4, !tbaa !9
  %531 = load i32, ptr %64, align 4, !tbaa !9
  %532 = mul i32 %530, %531
  %533 = load i32, ptr %103, align 4, !tbaa !9
  %534 = add i32 %532, %533
  %535 = mul i32 %534, 16
  %536 = zext i32 %535 to i64
  %537 = getelementptr inbounds i8, ptr %529, i64 %536
  %538 = load ptr, ptr %88, align 8, !tbaa !5
  %539 = load i32, ptr %101, align 4, !tbaa !9
  %540 = load i32, ptr %31, align 4, !tbaa !9
  %541 = mul i32 %539, %540
  %542 = load i32, ptr %32, align 4, !tbaa !9
  %543 = mul i32 %541, %542
  %544 = mul i32 %543, 16
  %545 = zext i32 %544 to i64
  %546 = getelementptr inbounds i8, ptr %538, i64 %545
  %547 = load i32, ptr %104, align 4, !tbaa !9
  %548 = load i32, ptr %32, align 4, !tbaa !9
  %549 = mul i32 %547, %548
  %550 = load i32, ptr %105, align 4, !tbaa !9
  %551 = add i32 %549, %550
  %552 = mul i32 %551, 16
  %553 = zext i32 %552 to i64
  %554 = getelementptr inbounds i8, ptr %546, i64 %553
  call void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %537, ptr noundef %554, i64 noundef 16)
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #8
  br label %555

555:                                              ; preds = %514
  %556 = load i32, ptr %103, align 4, !tbaa !9
  %557 = add i32 %556, 1
  store i32 %557, ptr %103, align 4, !tbaa !9
  br label %509, !llvm.loop !51

558:                                              ; preds = %513
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #8
  br label %559

559:                                              ; preds = %558
  %560 = load i32, ptr %100, align 4, !tbaa !9
  %561 = add i32 %560, 1
  store i32 %561, ptr %100, align 4, !tbaa !9
  br label %495, !llvm.loop !53

562:                                              ; preds = %501
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #8
  br label %565

563:                                              ; preds = %489
  %564 = load ptr, ptr %88, align 8, !tbaa !5
  store ptr %564, ptr %89, align 8, !tbaa !5
  br label %565

565:                                              ; preds = %563, %562
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #8
  store i32 0, ptr %106, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %107) #8
  store i32 0, ptr %107, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #8
  store i32 0, ptr %108, align 4, !tbaa !9
  br label %566

566:                                              ; preds = %1119, %565
  %567 = load i32, ptr %108, align 4, !tbaa !9
  %568 = load i32, ptr %30, align 4, !tbaa !9
  %569 = icmp ult i32 %567, %568
  br i1 %569, label %571, label %570

570:                                              ; preds = %566
  store i32 11, ptr %91, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #8
  br label %1123

571:                                              ; preds = %566
  %572 = load i32, ptr %30, align 4, !tbaa !9
  %573 = load i32, ptr %108, align 4, !tbaa !9
  %574 = sub i32 %572, %573
  %575 = icmp ult i32 256, %574
  br i1 %575, label %576, label %577

576:                                              ; preds = %571
  br label %581

577:                                              ; preds = %571
  %578 = load i32, ptr %30, align 4, !tbaa !9
  %579 = load i32, ptr %108, align 4, !tbaa !9
  %580 = sub i32 %578, %579
  br label %581

581:                                              ; preds = %577, %576
  %582 = phi i32 [ 256, %576 ], [ %580, %577 ]
  store i32 %582, ptr %107, align 4, !tbaa !9
  %583 = load i32, ptr %108, align 4, !tbaa !9
  %584 = icmp ugt i32 %583, 0
  %585 = zext i1 %584 to i32
  %586 = load i32, ptr %106, align 4, !tbaa !9
  %587 = or i32 %586, %585
  store i32 %587, ptr %106, align 4, !tbaa !9
  %588 = load i32, ptr %108, align 4, !tbaa !9
  %589 = load i32, ptr %30, align 4, !tbaa !9
  %590 = load i32, ptr %107, align 4, !tbaa !9
  %591 = sub i32 %589, %590
  %592 = icmp eq i32 %588, %591
  br i1 %592, label %593, label %607

593:                                              ; preds = %581
  %594 = load ptr, ptr %16, align 8, !tbaa !5
  %595 = icmp ne ptr %594, null
  %596 = zext i1 %595 to i32
  %597 = shl i32 %596, 1
  %598 = load i32, ptr %106, align 4, !tbaa !9
  %599 = or i32 %598, %597
  store i32 %599, ptr %106, align 4, !tbaa !9
  %600 = getelementptr inbounds %struct.ActivationParamSpec, ptr %13, i32 0, i32 0
  %601 = load i32, ptr %600, align 8, !tbaa !45
  %602 = shl i32 %601, 2
  %603 = load i32, ptr %106, align 4, !tbaa !9
  %604 = or i32 %603, %602
  store i32 %604, ptr %106, align 4, !tbaa !9
  %605 = load ptr, ptr %78, align 8, !tbaa !5
  %606 = getelementptr inbounds %struct.ConvController, ptr %67, i32 0, i32 18
  store ptr %605, ptr %606, align 8, !tbaa !40
  br label %607

607:                                              ; preds = %593, %581
  %608 = load i32, ptr %106, align 4, !tbaa !9
  %609 = zext i32 %608 to i64
  %610 = getelementptr inbounds %struct.ConvController, ptr %67, i32 0, i32 13
  store i64 %609, ptr %610, align 8, !tbaa !54
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #8
  store i32 16, ptr %109, align 4, !tbaa !9
  %611 = load i32, ptr %57, align 4, !tbaa !9
  %612 = icmp eq i32 %611, 0
  br i1 %612, label %613, label %829

613:                                              ; preds = %607
  %614 = load i32, ptr %58, align 4, !tbaa !9
  %615 = icmp eq i32 %614, 0
  br i1 %615, label %616, label %829

616:                                              ; preds = %613
  %617 = load i32, ptr %59, align 4, !tbaa !9
  %618 = icmp eq i32 %617, 0
  br i1 %618, label %619, label %829

619:                                              ; preds = %616
  %620 = load i32, ptr %60, align 4, !tbaa !9
  %621 = icmp eq i32 %620, 0
  br i1 %621, label %622, label %829

622:                                              ; preds = %619
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #8
  store i32 0, ptr %110, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #8
  store i32 0, ptr %111, align 4, !tbaa !9
  br label %623

623:                                              ; preds = %824, %622
  %624 = load i32, ptr %111, align 4, !tbaa !9
  %625 = load i32, ptr %65, align 4, !tbaa !9
  %626 = icmp ult i32 %624, %625
  br i1 %626, label %628, label %627

627:                                              ; preds = %623
  store i32 14, ptr %91, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #8
  br label %828

628:                                              ; preds = %623
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #8
  store i32 0, ptr %112, align 4, !tbaa !9
  %629 = load i32, ptr %65, align 4, !tbaa !9
  %630 = load i32, ptr %111, align 4, !tbaa !9
  %631 = sub i32 %629, %630
  %632 = icmp ult i32 768, %631
  br i1 %632, label %633, label %634

633:                                              ; preds = %628
  br label %638

634:                                              ; preds = %628
  %635 = load i32, ptr %65, align 4, !tbaa !9
  %636 = load i32, ptr %111, align 4, !tbaa !9
  %637 = sub i32 %635, %636
  br label %638

638:                                              ; preds = %634, %633
  %639 = phi i32 [ 768, %633 ], [ %637, %634 ]
  store i32 %639, ptr %110, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %113) #8
  store i32 0, ptr %113, align 4, !tbaa !9
  br label %640

640:                                              ; preds = %819, %638
  %641 = load i32, ptr %113, align 4, !tbaa !9
  %642 = load i32, ptr %38, align 4, !tbaa !9
  %643 = icmp ult i32 %641, %642
  br i1 %643, label %645, label %644

644:                                              ; preds = %640
  store i32 17, ptr %91, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #8
  br label %823

645:                                              ; preds = %640
  %646 = load i32, ptr %68, align 4, !tbaa !9
  %647 = load i32, ptr %38, align 4, !tbaa !9
  %648 = load i32, ptr %113, align 4, !tbaa !9
  %649 = sub i32 %647, %648
  %650 = icmp ult i32 %646, %649
  br i1 %650, label %651, label %653

651:                                              ; preds = %645
  %652 = load i32, ptr %68, align 4, !tbaa !9
  br label %657

653:                                              ; preds = %645
  %654 = load i32, ptr %38, align 4, !tbaa !9
  %655 = load i32, ptr %113, align 4, !tbaa !9
  %656 = sub i32 %654, %655
  br label %657

657:                                              ; preds = %653, %651
  %658 = phi i32 [ %652, %651 ], [ %656, %653 ]
  store i32 %658, ptr %112, align 4, !tbaa !9
  %659 = load i32, ptr %112, align 4, !tbaa !9
  %660 = lshr i32 %659, 4
  %661 = zext i32 %660 to i64
  %662 = getelementptr inbounds [4 x i32], ptr %52, i64 0, i64 %661
  %663 = load i32, ptr %662, align 4, !tbaa !9
  store i32 %663, ptr %112, align 4, !tbaa !9
  %664 = load i32, ptr %112, align 4, !tbaa !9
  %665 = icmp ult i32 16, %664
  br i1 %665, label %666, label %667

666:                                              ; preds = %657
  br label %669

667:                                              ; preds = %657
  %668 = load i32, ptr %112, align 4, !tbaa !9
  br label %669

669:                                              ; preds = %667, %666
  %670 = phi i32 [ 16, %666 ], [ %668, %667 ]
  store i32 %670, ptr %109, align 4, !tbaa !9
  %671 = load ptr, ptr %80, align 8, !tbaa !5
  %672 = load i32, ptr %113, align 4, !tbaa !9
  %673 = zext i32 %672 to i64
  %674 = getelementptr inbounds i32, ptr %671, i64 %673
  %675 = getelementptr inbounds %struct.ConvController, ptr %67, i32 0, i32 5
  store ptr %674, ptr %675, align 8, !tbaa !55
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #8
  %676 = load ptr, ptr %89, align 8, !tbaa !5
  %677 = load i32, ptr %108, align 4, !tbaa !9
  %678 = load i32, ptr %63, align 4, !tbaa !9
  %679 = mul i32 %677, %678
  %680 = load i32, ptr %64, align 4, !tbaa !9
  %681 = mul i32 %679, %680
  %682 = zext i32 %681 to i64
  %683 = getelementptr inbounds i8, ptr %676, i64 %682
  store ptr %683, ptr %114, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %115) #8
  store i32 8, ptr %115, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %116) #8
  %684 = load i32, ptr %112, align 4, !tbaa !9
  %685 = lshr i32 %684, 4
  %686 = zext i32 %685 to i64
  %687 = getelementptr inbounds [4 x i32], ptr %53, i64 0, i64 %686
  %688 = load i32, ptr %687, align 4, !tbaa !9
  store i32 %688, ptr %116, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #8
  %689 = load i32, ptr %111, align 4, !tbaa !9
  store i32 %689, ptr %117, align 4, !tbaa !9
  br label %690

690:                                              ; preds = %814, %669
  %691 = load i32, ptr %117, align 4, !tbaa !9
  %692 = load i32, ptr %111, align 4, !tbaa !9
  %693 = load i32, ptr %110, align 4, !tbaa !9
  %694 = add i32 %692, %693
  %695 = icmp ult i32 %691, %694
  br i1 %695, label %697, label %696

696:                                              ; preds = %690
  store i32 20, ptr %91, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #8
  br label %818

697:                                              ; preds = %690
  %698 = load i32, ptr %111, align 4, !tbaa !9
  %699 = load i32, ptr %110, align 4, !tbaa !9
  %700 = add i32 %698, %699
  %701 = load i32, ptr %117, align 4, !tbaa !9
  %702 = sub i32 %700, %701
  %703 = load i32, ptr %116, align 4, !tbaa !9
  %704 = icmp ult i32 %702, %703
  br i1 %704, label %705, label %711

705:                                              ; preds = %697
  %706 = load i32, ptr %111, align 4, !tbaa !9
  %707 = load i32, ptr %110, align 4, !tbaa !9
  %708 = add i32 %706, %707
  %709 = load i32, ptr %117, align 4, !tbaa !9
  %710 = sub i32 %708, %709
  br label %713

711:                                              ; preds = %697
  %712 = load i32, ptr %116, align 4, !tbaa !9
  br label %713

713:                                              ; preds = %711, %705
  %714 = phi i32 [ %710, %705 ], [ %712, %711 ]
  store i32 %714, ptr %115, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %118) #8
  %715 = load i32, ptr %115, align 4, !tbaa !9
  %716 = mul i32 %715, 2
  %717 = load i32, ptr %116, align 4, !tbaa !9
  %718 = udiv i32 %716, %717
  store i32 %718, ptr %118, align 4, !tbaa !9
  %719 = load i32, ptr %118, align 4, !tbaa !9
  %720 = load i32, ptr %116, align 4, !tbaa !9
  %721 = mul i32 %719, %720
  %722 = udiv i32 %721, 2
  %723 = icmp ugt i32 %722, 1
  br i1 %723, label %724, label %729

724:                                              ; preds = %713
  %725 = load i32, ptr %118, align 4, !tbaa !9
  %726 = load i32, ptr %116, align 4, !tbaa !9
  %727 = mul i32 %725, %726
  %728 = udiv i32 %727, 2
  br label %730

729:                                              ; preds = %713
  br label %730

730:                                              ; preds = %729, %724
  %731 = phi i32 [ %728, %724 ], [ 1, %729 ]
  store i32 %731, ptr %115, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %119) #8
  %732 = load i32, ptr %117, align 4, !tbaa !9
  %733 = load i32, ptr %40, align 4, !tbaa !9
  %734 = udiv i32 %732, %733
  store i32 %734, ptr %119, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #8
  %735 = load i32, ptr %117, align 4, !tbaa !9
  %736 = load i32, ptr %40, align 4, !tbaa !9
  %737 = urem i32 %735, %736
  store i32 %737, ptr %120, align 4, !tbaa !9
  %738 = load ptr, ptr %114, align 8, !tbaa !5
  %739 = load i32, ptr %119, align 4, !tbaa !9
  %740 = load i32, ptr %64, align 4, !tbaa !9
  %741 = mul i32 %739, %740
  %742 = mul i32 %741, 16
  %743 = zext i32 %742 to i64
  %744 = getelementptr inbounds i8, ptr %738, i64 %743
  %745 = load i32, ptr %120, align 4, !tbaa !9
  %746 = mul i32 %745, 16
  %747 = zext i32 %746 to i64
  %748 = getelementptr inbounds i8, ptr %744, i64 %747
  %749 = getelementptr inbounds %struct.ConvController, ptr %67, i32 0, i32 0
  store ptr %748, ptr %749, align 8, !tbaa !56
  %750 = load ptr, ptr %66, align 8, !tbaa !5
  %751 = load i32, ptr %90, align 4, !tbaa !9
  %752 = load i32, ptr %38, align 4, !tbaa !9
  %753 = mul i32 %751, %752
  %754 = load i32, ptr %113, align 4, !tbaa !9
  %755 = add i32 %753, %754
  %756 = load i32, ptr %65, align 4, !tbaa !9
  %757 = mul i32 %755, %756
  %758 = load i32, ptr %117, align 4, !tbaa !9
  %759 = load i32, ptr %109, align 4, !tbaa !9
  %760 = mul i32 %758, %759
  %761 = add i32 %757, %760
  %762 = load i32, ptr %87, align 4, !tbaa !9
  %763 = mul i32 %761, %762
  %764 = zext i32 %763 to i64
  %765 = getelementptr inbounds i8, ptr %750, i64 %764
  %766 = getelementptr inbounds %struct.ConvController, ptr %67, i32 0, i32 2
  store ptr %765, ptr %766, align 8, !tbaa !57
  %767 = load ptr, ptr %16, align 8, !tbaa !5
  %768 = load i32, ptr %90, align 4, !tbaa !9
  %769 = load i32, ptr %38, align 4, !tbaa !9
  %770 = mul i32 %768, %769
  %771 = load i32, ptr %113, align 4, !tbaa !9
  %772 = add i32 %770, %771
  %773 = load i32, ptr %65, align 4, !tbaa !9
  %774 = mul i32 %772, %773
  %775 = zext i32 %774 to i64
  %776 = getelementptr inbounds float, ptr %767, i64 %775
  %777 = load i32, ptr %117, align 4, !tbaa !9
  %778 = load i32, ptr %109, align 4, !tbaa !9
  %779 = mul i32 %777, %778
  %780 = zext i32 %779 to i64
  %781 = getelementptr inbounds float, ptr %776, i64 %780
  %782 = getelementptr inbounds %struct.ConvController, ptr %67, i32 0, i32 3
  store ptr %781, ptr %782, align 8, !tbaa !58
  %783 = load ptr, ptr %17, align 8, !tbaa !5
  %784 = load i32, ptr %113, align 4, !tbaa !9
  %785 = load i32, ptr %30, align 4, !tbaa !9
  %786 = mul i32 %784, %785
  %787 = load i32, ptr %35, align 4, !tbaa !9
  %788 = mul i32 %786, %787
  %789 = load i32, ptr %36, align 4, !tbaa !9
  %790 = mul i32 %788, %789
  %791 = zext i32 %790 to i64
  %792 = getelementptr inbounds i8, ptr %783, i64 %791
  %793 = load i32, ptr %112, align 4, !tbaa !9
  %794 = load i32, ptr %108, align 4, !tbaa !9
  %795 = mul i32 %793, %794
  %796 = load i32, ptr %35, align 4, !tbaa !9
  %797 = mul i32 %795, %796
  %798 = load i32, ptr %36, align 4, !tbaa !9
  %799 = mul i32 %797, %798
  %800 = zext i32 %799 to i64
  %801 = getelementptr inbounds i8, ptr %792, i64 %800
  %802 = getelementptr inbounds %struct.ConvController, ptr %67, i32 0, i32 1
  store ptr %801, ptr %802, align 8, !tbaa !59
  %803 = load i32, ptr %107, align 4, !tbaa !9
  %804 = zext i32 %803 to i64
  %805 = getelementptr inbounds %struct.ConvController, ptr %67, i32 0, i32 6
  store i64 %804, ptr %805, align 8, !tbaa !60
  %806 = load i32, ptr %112, align 4, !tbaa !9
  %807 = lshr i32 %806, 4
  %808 = zext i32 %807 to i64
  %809 = getelementptr inbounds [4 x [3 x ptr]], ptr %54, i64 0, i64 %808
  %810 = load i32, ptr %118, align 4, !tbaa !9
  %811 = zext i32 %810 to i64
  %812 = getelementptr inbounds [3 x ptr], ptr %809, i64 0, i64 %811
  %813 = load ptr, ptr %812, align 8, !tbaa !5
  call void %813(ptr noundef nonnull align 8 dereferenceable(184) %67)
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #8
  br label %814

814:                                              ; preds = %730
  %815 = load i32, ptr %115, align 4, !tbaa !9
  %816 = load i32, ptr %117, align 4, !tbaa !9
  %817 = add i32 %816, %815
  store i32 %817, ptr %117, align 4, !tbaa !9
  br label %690, !llvm.loop !61

818:                                              ; preds = %696
  call void @llvm.lifetime.end.p0(i64 4, ptr %116) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %115) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #8
  br label %819

819:                                              ; preds = %818
  %820 = load i32, ptr %112, align 4, !tbaa !9
  %821 = load i32, ptr %113, align 4, !tbaa !9
  %822 = add i32 %821, %820
  store i32 %822, ptr %113, align 4, !tbaa !9
  br label %640, !llvm.loop !62

823:                                              ; preds = %644
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #8
  br label %824

824:                                              ; preds = %823
  %825 = load i32, ptr %110, align 4, !tbaa !9
  %826 = load i32, ptr %111, align 4, !tbaa !9
  %827 = add i32 %826, %825
  store i32 %827, ptr %111, align 4, !tbaa !9
  br label %623, !llvm.loop !63

828:                                              ; preds = %627
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #8
  br label %1118

829:                                              ; preds = %619, %616, %613, %607
  call void @llvm.lifetime.start.p0(i64 4, ptr %121) #8
  store i32 0, ptr %121, align 4, !tbaa !9
  br label %830

830:                                              ; preds = %1114, %829
  %831 = load i32, ptr %121, align 4, !tbaa !9
  %832 = load i32, ptr %39, align 4, !tbaa !9
  %833 = icmp ult i32 %831, %832
  br i1 %833, label %835, label %834

834:                                              ; preds = %830
  store i32 23, ptr %91, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %121) #8
  br label %1117

835:                                              ; preds = %830
  call void @llvm.lifetime.start.p0(i64 4, ptr %122) #8
  store i32 0, ptr %122, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %123) #8
  store i32 0, ptr %123, align 4, !tbaa !9
  br label %836

836:                                              ; preds = %1109, %835
  %837 = load i32, ptr %123, align 4, !tbaa !9
  %838 = load i32, ptr %38, align 4, !tbaa !9
  %839 = icmp ult i32 %837, %838
  br i1 %839, label %841, label %840

840:                                              ; preds = %836
  store i32 26, ptr %91, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %123) #8
  br label %1113

841:                                              ; preds = %836
  %842 = load i32, ptr %68, align 4, !tbaa !9
  %843 = load i32, ptr %38, align 4, !tbaa !9
  %844 = load i32, ptr %123, align 4, !tbaa !9
  %845 = sub i32 %843, %844
  %846 = icmp ult i32 %842, %845
  br i1 %846, label %847, label %849

847:                                              ; preds = %841
  %848 = load i32, ptr %68, align 4, !tbaa !9
  br label %853

849:                                              ; preds = %841
  %850 = load i32, ptr %38, align 4, !tbaa !9
  %851 = load i32, ptr %123, align 4, !tbaa !9
  %852 = sub i32 %850, %851
  br label %853

853:                                              ; preds = %849, %847
  %854 = phi i32 [ %848, %847 ], [ %852, %849 ]
  store i32 %854, ptr %122, align 4, !tbaa !9
  %855 = load i32, ptr %122, align 4, !tbaa !9
  %856 = lshr i32 %855, 4
  %857 = zext i32 %856 to i64
  %858 = getelementptr inbounds [4 x i32], ptr %52, i64 0, i64 %857
  %859 = load i32, ptr %858, align 4, !tbaa !9
  store i32 %859, ptr %122, align 4, !tbaa !9
  %860 = load i32, ptr %122, align 4, !tbaa !9
  %861 = icmp ult i32 16, %860
  br i1 %861, label %862, label %863

862:                                              ; preds = %853
  br label %865

863:                                              ; preds = %853
  %864 = load i32, ptr %122, align 4, !tbaa !9
  br label %865

865:                                              ; preds = %863, %862
  %866 = phi i32 [ 16, %862 ], [ %864, %863 ]
  store i32 %866, ptr %109, align 4, !tbaa !9
  %867 = load ptr, ptr %80, align 8, !tbaa !5
  %868 = load i32, ptr %123, align 4, !tbaa !9
  %869 = zext i32 %868 to i64
  %870 = getelementptr inbounds i32, ptr %867, i64 %869
  %871 = getelementptr inbounds %struct.ConvController, ptr %67, i32 0, i32 5
  store ptr %870, ptr %871, align 8, !tbaa !55
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #8
  %872 = load ptr, ptr %89, align 8, !tbaa !5
  %873 = load i32, ptr %108, align 4, !tbaa !9
  %874 = load i32, ptr %63, align 4, !tbaa !9
  %875 = mul i32 %873, %874
  %876 = load i32, ptr %64, align 4, !tbaa !9
  %877 = mul i32 %875, %876
  %878 = zext i32 %877 to i64
  %879 = getelementptr inbounds i8, ptr %872, i64 %878
  store ptr %879, ptr %124, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %125) #8
  store i32 8, ptr %125, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %126) #8
  %880 = load i32, ptr %122, align 4, !tbaa !9
  %881 = lshr i32 %880, 4
  %882 = zext i32 %881 to i64
  %883 = getelementptr inbounds [4 x i32], ptr %53, i64 0, i64 %882
  %884 = load i32, ptr %883, align 4, !tbaa !9
  store i32 %884, ptr %126, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %127) #8
  store i32 0, ptr %127, align 4, !tbaa !9
  br label %885

885:                                              ; preds = %1104, %865
  %886 = load i32, ptr %127, align 4, !tbaa !9
  %887 = load i32, ptr %40, align 4, !tbaa !9
  %888 = icmp ult i32 %886, %887
  br i1 %888, label %890, label %889

889:                                              ; preds = %885
  store i32 29, ptr %91, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %127) #8
  br label %1108

890:                                              ; preds = %885
  store i32 1, ptr %125, align 4, !tbaa !9
  %891 = load ptr, ptr %66, align 8, !tbaa !5
  %892 = load i32, ptr %90, align 4, !tbaa !9
  %893 = load i32, ptr %38, align 4, !tbaa !9
  %894 = mul i32 %892, %893
  %895 = load i32, ptr %123, align 4, !tbaa !9
  %896 = add i32 %894, %895
  %897 = load i32, ptr %65, align 4, !tbaa !9
  %898 = mul i32 %896, %897
  %899 = load i32, ptr %121, align 4, !tbaa !9
  %900 = load i32, ptr %40, align 4, !tbaa !9
  %901 = mul i32 %899, %900
  %902 = load i32, ptr %127, align 4, !tbaa !9
  %903 = add i32 %901, %902
  %904 = load i32, ptr %109, align 4, !tbaa !9
  %905 = mul i32 %903, %904
  %906 = add i32 %898, %905
  %907 = load i32, ptr %87, align 4, !tbaa !9
  %908 = mul i32 %906, %907
  %909 = zext i32 %908 to i64
  %910 = getelementptr inbounds i8, ptr %891, i64 %909
  %911 = getelementptr inbounds %struct.ConvController, ptr %67, i32 0, i32 2
  store ptr %910, ptr %911, align 8, !tbaa !57
  %912 = load ptr, ptr %16, align 8, !tbaa !5
  %913 = load i32, ptr %90, align 4, !tbaa !9
  %914 = load i32, ptr %38, align 4, !tbaa !9
  %915 = mul i32 %913, %914
  %916 = load i32, ptr %123, align 4, !tbaa !9
  %917 = add i32 %915, %916
  %918 = load i32, ptr %65, align 4, !tbaa !9
  %919 = mul i32 %917, %918
  %920 = load i32, ptr %121, align 4, !tbaa !9
  %921 = load i32, ptr %40, align 4, !tbaa !9
  %922 = mul i32 %920, %921
  %923 = load i32, ptr %127, align 4, !tbaa !9
  %924 = add i32 %922, %923
  %925 = load i32, ptr %109, align 4, !tbaa !9
  %926 = mul i32 %924, %925
  %927 = add i32 %919, %926
  %928 = load i32, ptr %87, align 4, !tbaa !9
  %929 = mul i32 %927, %928
  %930 = zext i32 %929 to i64
  %931 = getelementptr inbounds float, ptr %912, i64 %930
  %932 = getelementptr inbounds %struct.ConvController, ptr %67, i32 0, i32 3
  store ptr %931, ptr %932, align 8, !tbaa !58
  %933 = load i32, ptr %121, align 4, !tbaa !9
  %934 = load i32, ptr %57, align 4, !tbaa !9
  %935 = icmp ult i32 %933, %934
  br i1 %935, label %952, label %936

936:                                              ; preds = %890
  %937 = load i32, ptr %121, align 4, !tbaa !9
  %938 = load i32, ptr %63, align 4, !tbaa !9
  %939 = load i32, ptr %57, align 4, !tbaa !9
  %940 = add i32 %938, %939
  %941 = icmp uge i32 %937, %940
  br i1 %941, label %952, label %942

942:                                              ; preds = %936
  %943 = load i32, ptr %127, align 4, !tbaa !9
  %944 = load i32, ptr %59, align 4, !tbaa !9
  %945 = icmp ult i32 %943, %944
  br i1 %945, label %952, label %946

946:                                              ; preds = %942
  %947 = load i32, ptr %127, align 4, !tbaa !9
  %948 = load i32, ptr %59, align 4, !tbaa !9
  %949 = load i32, ptr %64, align 4, !tbaa !9
  %950 = add i32 %948, %949
  %951 = icmp uge i32 %947, %950
  br i1 %951, label %952, label %1022

952:                                              ; preds = %946, %942, %936, %890
  %953 = load i32, ptr %106, align 4, !tbaa !9
  %954 = and i32 %953, 2
  %955 = icmp ne i32 %954, 0
  br i1 %955, label %1021, label %956

956:                                              ; preds = %952
  %957 = load i32, ptr %108, align 4, !tbaa !9
  %958 = load i32, ptr %30, align 4, !tbaa !9
  %959 = load i32, ptr %107, align 4, !tbaa !9
  %960 = sub i32 %958, %959
  %961 = icmp eq i32 %957, %960
  br i1 %961, label %962, label %1021

962:                                              ; preds = %956
  call void @llvm.lifetime.start.p0(i64 4, ptr %128) #8
  store i32 0, ptr %128, align 4, !tbaa !9
  store i32 0, ptr %128, align 4, !tbaa !9
  br label %963

963:                                              ; preds = %989, %962
  %964 = load i32, ptr %128, align 4, !tbaa !9
  %965 = load i32, ptr %122, align 4, !tbaa !9
  %966 = add nsw i32 %965, 1
  %967 = sub nsw i32 %966, 16
  %968 = icmp slt i32 %964, %967
  br i1 %968, label %969, label %992

969:                                              ; preds = %963
  %970 = getelementptr inbounds %struct.ConvController, ptr %67, i32 0, i32 2
  %971 = load ptr, ptr %970, align 8, !tbaa !57
  %972 = load i32, ptr %65, align 4, !tbaa !9
  %973 = load i32, ptr %128, align 4, !tbaa !9
  %974 = mul i32 %972, %973
  %975 = load i32, ptr %87, align 4, !tbaa !9
  %976 = mul i32 %974, %975
  %977 = zext i32 %976 to i64
  %978 = getelementptr inbounds i8, ptr %971, i64 %977
  %979 = load ptr, ptr %85, align 8, !tbaa !5
  %980 = load i32, ptr %128, align 4, !tbaa !9
  %981 = sext i32 %980 to i64
  %982 = getelementptr inbounds float, ptr %979, i64 %981
  %983 = load i32, ptr %123, align 4, !tbaa !9
  %984 = zext i32 %983 to i64
  %985 = getelementptr inbounds float, ptr %982, i64 %984
  %986 = load i32, ptr %87, align 4, !tbaa !9
  %987 = mul i32 16, %986
  %988 = zext i32 %987 to i64
  call void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %978, ptr noundef %985, i64 noundef %988)
  br label %989

989:                                              ; preds = %969
  %990 = load i32, ptr %128, align 4, !tbaa !9
  %991 = add nsw i32 %990, 16
  store i32 %991, ptr %128, align 4, !tbaa !9
  br label %963, !llvm.loop !64

992:                                              ; preds = %963
  br label %993

993:                                              ; preds = %1017, %992
  %994 = load i32, ptr %128, align 4, !tbaa !9
  %995 = load i32, ptr %122, align 4, !tbaa !9
  %996 = icmp slt i32 %994, %995
  br i1 %996, label %997, label %1020

997:                                              ; preds = %993
  %998 = getelementptr inbounds %struct.ConvController, ptr %67, i32 0, i32 2
  %999 = load ptr, ptr %998, align 8, !tbaa !57
  %1000 = load i32, ptr %65, align 4, !tbaa !9
  %1001 = load i32, ptr %128, align 4, !tbaa !9
  %1002 = mul i32 %1000, %1001
  %1003 = load i32, ptr %87, align 4, !tbaa !9
  %1004 = mul i32 %1002, %1003
  %1005 = zext i32 %1004 to i64
  %1006 = getelementptr inbounds i8, ptr %999, i64 %1005
  %1007 = load ptr, ptr %85, align 8, !tbaa !5
  %1008 = load i32, ptr %128, align 4, !tbaa !9
  %1009 = sext i32 %1008 to i64
  %1010 = getelementptr inbounds float, ptr %1007, i64 %1009
  %1011 = load i32, ptr %123, align 4, !tbaa !9
  %1012 = zext i32 %1011 to i64
  %1013 = getelementptr inbounds float, ptr %1010, i64 %1012
  %1014 = load i32, ptr %87, align 4, !tbaa !9
  %1015 = mul i32 8, %1014
  %1016 = zext i32 %1015 to i64
  call void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %1006, ptr noundef %1013, i64 noundef %1016)
  br label %1017

1017:                                             ; preds = %997
  %1018 = load i32, ptr %128, align 4, !tbaa !9
  %1019 = add nsw i32 %1018, 8
  store i32 %1019, ptr %128, align 4, !tbaa !9
  br label %993, !llvm.loop !65

1020:                                             ; preds = %993
  call void @llvm.lifetime.end.p0(i64 4, ptr %128) #8
  br label %1021

1021:                                             ; preds = %1020, %956, %952
  br label %1104

1022:                                             ; preds = %946
  %1023 = load i32, ptr %64, align 4, !tbaa !9
  %1024 = load i32, ptr %127, align 4, !tbaa !9
  %1025 = load i32, ptr %59, align 4, !tbaa !9
  %1026 = sub i32 %1024, %1025
  %1027 = sub i32 %1023, %1026
  %1028 = load i32, ptr %126, align 4, !tbaa !9
  %1029 = icmp ult i32 %1027, %1028
  br i1 %1029, label %1030, label %1036

1030:                                             ; preds = %1022
  %1031 = load i32, ptr %64, align 4, !tbaa !9
  %1032 = load i32, ptr %127, align 4, !tbaa !9
  %1033 = load i32, ptr %59, align 4, !tbaa !9
  %1034 = sub i32 %1032, %1033
  %1035 = sub i32 %1031, %1034
  br label %1038

1036:                                             ; preds = %1022
  %1037 = load i32, ptr %126, align 4, !tbaa !9
  br label %1038

1038:                                             ; preds = %1036, %1030
  %1039 = phi i32 [ %1035, %1030 ], [ %1037, %1036 ]
  store i32 %1039, ptr %125, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %129) #8
  %1040 = load i32, ptr %125, align 4, !tbaa !9
  %1041 = mul i32 %1040, 2
  %1042 = load i32, ptr %126, align 4, !tbaa !9
  %1043 = udiv i32 %1041, %1042
  store i32 %1043, ptr %129, align 4, !tbaa !9
  %1044 = load i32, ptr %129, align 4, !tbaa !9
  %1045 = load i32, ptr %126, align 4, !tbaa !9
  %1046 = mul i32 %1044, %1045
  %1047 = udiv i32 %1046, 2
  %1048 = icmp ugt i32 %1047, 1
  br i1 %1048, label %1049, label %1054

1049:                                             ; preds = %1038
  %1050 = load i32, ptr %129, align 4, !tbaa !9
  %1051 = load i32, ptr %126, align 4, !tbaa !9
  %1052 = mul i32 %1050, %1051
  %1053 = udiv i32 %1052, 2
  br label %1055

1054:                                             ; preds = %1038
  br label %1055

1055:                                             ; preds = %1054, %1049
  %1056 = phi i32 [ %1053, %1049 ], [ 1, %1054 ]
  store i32 %1056, ptr %125, align 4, !tbaa !9
  %1057 = load ptr, ptr %124, align 8, !tbaa !5
  %1058 = load i32, ptr %121, align 4, !tbaa !9
  %1059 = load i32, ptr %57, align 4, !tbaa !9
  %1060 = sub i32 %1058, %1059
  %1061 = load i32, ptr %64, align 4, !tbaa !9
  %1062 = mul i32 %1060, %1061
  %1063 = mul i32 %1062, 16
  %1064 = zext i32 %1063 to i64
  %1065 = getelementptr inbounds i8, ptr %1057, i64 %1064
  %1066 = load i32, ptr %127, align 4, !tbaa !9
  %1067 = load i32, ptr %59, align 4, !tbaa !9
  %1068 = sub i32 %1066, %1067
  %1069 = mul i32 %1068, 16
  %1070 = zext i32 %1069 to i64
  %1071 = getelementptr inbounds i8, ptr %1065, i64 %1070
  %1072 = getelementptr inbounds %struct.ConvController, ptr %67, i32 0, i32 0
  store ptr %1071, ptr %1072, align 8, !tbaa !56
  %1073 = load ptr, ptr %17, align 8, !tbaa !5
  %1074 = load i32, ptr %123, align 4, !tbaa !9
  %1075 = load i32, ptr %30, align 4, !tbaa !9
  %1076 = mul i32 %1074, %1075
  %1077 = load i32, ptr %35, align 4, !tbaa !9
  %1078 = mul i32 %1076, %1077
  %1079 = load i32, ptr %36, align 4, !tbaa !9
  %1080 = mul i32 %1078, %1079
  %1081 = zext i32 %1080 to i64
  %1082 = getelementptr inbounds i8, ptr %1073, i64 %1081
  %1083 = load i32, ptr %122, align 4, !tbaa !9
  %1084 = load i32, ptr %108, align 4, !tbaa !9
  %1085 = mul i32 %1083, %1084
  %1086 = load i32, ptr %35, align 4, !tbaa !9
  %1087 = mul i32 %1085, %1086
  %1088 = load i32, ptr %36, align 4, !tbaa !9
  %1089 = mul i32 %1087, %1088
  %1090 = zext i32 %1089 to i64
  %1091 = getelementptr inbounds i8, ptr %1082, i64 %1090
  %1092 = getelementptr inbounds %struct.ConvController, ptr %67, i32 0, i32 1
  store ptr %1091, ptr %1092, align 8, !tbaa !59
  %1093 = load i32, ptr %107, align 4, !tbaa !9
  %1094 = zext i32 %1093 to i64
  %1095 = getelementptr inbounds %struct.ConvController, ptr %67, i32 0, i32 6
  store i64 %1094, ptr %1095, align 8, !tbaa !60
  %1096 = load i32, ptr %122, align 4, !tbaa !9
  %1097 = lshr i32 %1096, 4
  %1098 = zext i32 %1097 to i64
  %1099 = getelementptr inbounds [4 x [3 x ptr]], ptr %54, i64 0, i64 %1098
  %1100 = load i32, ptr %129, align 4, !tbaa !9
  %1101 = zext i32 %1100 to i64
  %1102 = getelementptr inbounds [3 x ptr], ptr %1099, i64 0, i64 %1101
  %1103 = load ptr, ptr %1102, align 8, !tbaa !5
  call void %1103(ptr noundef nonnull align 8 dereferenceable(184) %67)
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #8
  br label %1104

1104:                                             ; preds = %1055, %1021
  %1105 = load i32, ptr %125, align 4, !tbaa !9
  %1106 = load i32, ptr %127, align 4, !tbaa !9
  %1107 = add i32 %1106, %1105
  store i32 %1107, ptr %127, align 4, !tbaa !9
  br label %885, !llvm.loop !66

1108:                                             ; preds = %889
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %125) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #8
  br label %1109

1109:                                             ; preds = %1108
  %1110 = load i32, ptr %122, align 4, !tbaa !9
  %1111 = load i32, ptr %123, align 4, !tbaa !9
  %1112 = add i32 %1111, %1110
  store i32 %1112, ptr %123, align 4, !tbaa !9
  br label %836, !llvm.loop !67

1113:                                             ; preds = %840
  call void @llvm.lifetime.end.p0(i64 4, ptr %122) #8
  br label %1114

1114:                                             ; preds = %1113
  %1115 = load i32, ptr %121, align 4, !tbaa !9
  %1116 = add i32 %1115, 1
  store i32 %1116, ptr %121, align 4, !tbaa !9
  br label %830, !llvm.loop !68

1117:                                             ; preds = %834
  br label %1118

1118:                                             ; preds = %1117, %828
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #8
  br label %1119

1119:                                             ; preds = %1118
  %1120 = load i32, ptr %107, align 4, !tbaa !9
  %1121 = load i32, ptr %108, align 4, !tbaa !9
  %1122 = add i32 %1121, %1120
  store i32 %1122, ptr %108, align 4, !tbaa !9
  br label %566, !llvm.loop !69

1123:                                             ; preds = %570
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #8
  br label %1124

1124:                                             ; preds = %1123
  %1125 = load i32, ptr %90, align 4, !tbaa !9
  %1126 = add i32 %1125, 1
  store i32 %1126, ptr %90, align 4, !tbaa !9
  br label %443, !llvm.loop !70

1127:                                             ; preds = %447
  %1128 = load i32, ptr %25, align 4, !tbaa !12
  %1129 = icmp eq i32 %1128, 10
  br i1 %1129, label %1130, label %1158

1130:                                             ; preds = %1127
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #8
  store float -1.000000e+00, ptr %130, align 4, !tbaa !43
  %1131 = getelementptr inbounds float, ptr %130, i64 1
  %1132 = load ptr, ptr %70, align 8, !tbaa !5
  %1133 = getelementptr inbounds float, ptr %1132, i64 0
  %1134 = load float, ptr %1133, align 4, !tbaa !43
  store float %1134, ptr %1131, align 4, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 92, ptr %131) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %131, ptr align 8 %10, i64 92, i1 false), !tbaa.struct !11
  %1135 = getelementptr inbounds %struct.TensorDesc, ptr %131, i32 0, i32 0
  store i32 10, ptr %1135, align 4, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 4, ptr %132) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %133, ptr align 8 %10, i64 92, i1 false), !tbaa.struct !11
  %1136 = load ptr, ptr %66, align 8, !tbaa !5
  %1137 = load ptr, ptr %21, align 8, !tbaa !5
  %1138 = getelementptr inbounds [2 x float], ptr %130, i64 0, i64 0
  %1139 = call noundef i32 @_Z12quantize_x8610TensorDescPKvPS_PvPfi(ptr noundef byval(%struct.TensorDesc) align 8 %133, ptr noundef %1136, ptr noundef %131, ptr noundef %1137, ptr noundef %1138, i32 noundef 0)
  store i32 %1139, ptr %132, align 4, !tbaa !17
  %1140 = load i32, ptr %132, align 4, !tbaa !17
  %1141 = icmp ne i32 %1140, 0
  br i1 %1141, label %1142, label %1154

1142:                                             ; preds = %1130
  call void @llvm.lifetime.start.p0(i64 4, ptr %134) #8
  %1143 = call i64 (i64, ...) @syscall(i64 noundef 186) #8
  %1144 = trunc i64 %1143 to i32
  store i32 %1144, ptr %134, align 4, !tbaa !9
  %1145 = load i32, ptr %134, align 4, !tbaa !9
  %1146 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %1145)
  %1147 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1148 = call i32 @fflush(ptr noundef %1147)
  %1149 = load i32, ptr %132, align 4, !tbaa !17
  %1150 = call ptr @ee2str(i32 noundef %1149)
  %1151 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %1150)
  %1152 = load ptr, ptr @stdout, align 8, !tbaa !5
  %1153 = call i32 @fflush(ptr noundef %1152)
  call void @exit(i32 noundef 1) #9
  unreachable

1154:                                             ; preds = %1130
  call void @llvm.lifetime.end.p0(i64 4, ptr %132) #8
  %1155 = getelementptr inbounds [2 x float], ptr %130, i64 0, i64 0
  %1156 = load float, ptr %1155, align 4, !tbaa !43
  %1157 = load ptr, ptr %70, align 8, !tbaa !5
  store float %1156, ptr %1157, align 4, !tbaa !43
  call void @llvm.lifetime.end.p0(i64 92, ptr %131) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #8
  br label %1158

1158:                                             ; preds = %1154, %1127
  store i32 1, ptr %91, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #8
  call void @llvm.lifetime.end.p0(i64 184, ptr %67) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 96, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  ret i32 0
}

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z11tensor4dGet10TensorDescP8DataTypeP10DataFormatPjS4_S4_S4_(ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #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) #3

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

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

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

declare noundef i32 @_Z12quantize_x8610TensorDescPKvPS_PvPfi(ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_Z14tensorNumBytes10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8) #7

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z17tensorNumElements10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8) #2

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

declare noundef i32 @_Z21quantize_bias_offsetCPKv10TensorDesc8DataTypeS0_S1_PKfPv(ptr noundef, ptr noundef byval(%struct.TensorDesc) align 8, i32 noundef, ptr noundef, ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef, ptr noundef) #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z26getActivatedBiasForPaddingPKf10TensorDesc8DataTypePv14ActivationModef(ptr noundef, ptr noundef byval(%struct.TensorDesc) align 8, i32 noundef, ptr noundef, i32 noundef, float noundef) #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z21PaddingChannelNCHWC16PhS_10TensorDesc20ConvolutionParamSpec(ptr noundef, ptr noundef, ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef byval(%struct.ConvolutionParamSpec) align 8) #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z22PaddingNCHWC8ToNCHWC16PhS_10TensorDesc20ConvolutionParamSpec(ptr noundef, ptr noundef, ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef byval(%struct.ConvolutionParamSpec) align 8) #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z19PaddingNCHW2NCHWC16PhS_10TensorDesc20ConvolutionParamSpec(ptr noundef, ptr noundef, ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef byval(%struct.ConvolutionParamSpec) align 8) #7

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{i64 0, i64 4, !12, i64 4, i64 4, !14, i64 8, i64 4, !9, i64 12, i64 80, !16}
!12 = !{!13, !13, i64 0}
!13 = !{!"_ZTS8DataType", !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"_ZTS10DataFormat", !7, i64 0}
!16 = !{!7, !7, i64 0}
!17 = !{!18, !18, i64 0}
!18 = !{!"_ZTS2EE", !7, i64 0}
!19 = !{!20, !10, i64 20}
!20 = !{!"_ZTS20ConvolutionParamSpec", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !21, i64 72, !22, i64 76, !22, i64 80, !7, i64 84, !23, i64 92, !10, i64 96, !10, i64 100, !10, i64 104}
!21 = !{!"_ZTS15ConvolutionMode", !7, i64 0}
!22 = !{!"_ZTS14ActivationMode", !7, i64 0}
!23 = !{!"_ZTS9RoundMode", !7, i64 0}
!24 = !{!20, !10, i64 24}
!25 = !{!20, !10, i64 36}
!26 = !{!20, !10, i64 40}
!27 = !{!20, !10, i64 44}
!28 = !{!20, !10, i64 48}
!29 = !{!20, !10, i64 60}
!30 = !{!20, !10, i64 64}
!31 = !{!32, !33, i64 96}
!32 = !{!"_ZTS14ConvController", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !33, i64 48, !33, i64 56, !33, i64 64, !6, i64 72, !33, i64 80, !33, i64 88, !33, i64 96, !33, i64 104, !33, i64 112, !33, i64 120, !33, i64 128, !33, i64 136, !6, i64 144, !34, i64 152, !33, i64 160, !33, i64 168, !6, i64 176}
!33 = !{!"long", !7, i64 0}
!34 = !{!"bool", !7, i64 0}
!35 = !{!32, !33, i64 80}
!36 = !{!32, !33, i64 88}
!37 = !{!32, !33, i64 112}
!38 = !{!32, !33, i64 56}
!39 = !{!32, !33, i64 64}
!40 = !{!32, !6, i64 144}
!41 = !{!42, !13, i64 0}
!42 = !{!"_ZTS10TensorDesc", !13, i64 0, !15, i64 4, !10, i64 8, !7, i64 12}
!43 = !{!44, !44, i64 0}
!44 = !{!"float", !7, i64 0}
!45 = !{!46, !22, i64 0}
!46 = !{!"_ZTS19ActivationParamSpec", !22, i64 0, !7, i64 4}
!47 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !9, i64 16, i64 4, !9, i64 20, i64 4, !9, i64 24, i64 4, !9, i64 28, i64 4, !9, i64 32, i64 4, !9, i64 36, i64 4, !9, i64 40, i64 4, !9, i64 44, i64 4, !9, i64 48, i64 4, !9, i64 52, i64 4, !9, i64 56, i64 4, !9, i64 60, i64 4, !9, i64 64, i64 4, !9, i64 68, i64 4, !9, i64 72, i64 4, !48, i64 76, i64 4, !49, i64 80, i64 4, !49, i64 84, i64 8, !16, i64 92, i64 4, !50, i64 96, i64 4, !9, i64 100, i64 4, !9, i64 104, i64 4, !9}
!48 = !{!21, !21, i64 0}
!49 = !{!22, !22, i64 0}
!50 = !{!23, !23, i64 0}
!51 = distinct !{!51, !52}
!52 = !{!"llvm.loop.mustprogress"}
!53 = distinct !{!53, !52}
!54 = !{!32, !33, i64 104}
!55 = !{!32, !6, i64 40}
!56 = !{!32, !6, i64 0}
!57 = !{!32, !6, i64 16}
!58 = !{!32, !6, i64 24}
!59 = !{!32, !6, i64 8}
!60 = !{!32, !33, i64 48}
!61 = distinct !{!61, !52}
!62 = distinct !{!62, !52}
!63 = distinct !{!63, !52}
!64 = distinct !{!64, !52}
!65 = distinct !{!65, !52}
!66 = distinct !{!66, !52}
!67 = distinct !{!67, !52}
!68 = distinct !{!68, !52}
!69 = distinct !{!69, !52}
!70 = distinct !{!70, !52}


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

%struct.TensorDesc = type { i32, i32, i32, [20 x i32] }
%struct.ConvolutionParamSpec = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %union.ActivationSpec, i32, i32, i32, i32 }
%union.ActivationSpec = type { %struct.ClipParamSpec }
%struct.ClipParamSpec = type { float, float }
%struct.ActivationParamSpec = type { i32, [4 x float] }
%struct.ConvController = type { ptr, ptr, ptr, ptr, ptr, ptr, i64, i64, i64, ptr, i64, i64, i64, i64, i64, i64, i64, i64, ptr, i8, i64, i64, ptr }

@.str = external hidden unnamed_addr constant [20 x i8], align 1
@stdout = external local_unnamed_addr global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [18 x i8], align 1
@__const._Z22convolution_1x1_direct10TensorDescPhPfS_PKa20ConvolutionParamSpecS_PKfjPvS_S7_S1_19ActivationParamSpec.ocSizeArray = external hidden unnamed_addr constant [4 x i32], align 16
@__const._Z22convolution_1x1_direct10TensorDescPhPfS_PKa20ConvolutionParamSpecS_PKfjPvS_S7_S1_19ActivationParamSpec.wSizeArray = external hidden unnamed_addr constant [4 x i32], align 16
@__const._Z22convolution_1x1_direct10TensorDescPhPfS_PKa20ConvolutionParamSpecS_PKfjPvS_S7_S1_19ActivationParamSpec.kernel = external hidden unnamed_addr constant [4 x [3 x ptr]], align 16

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_Z22convolution_1x1_direct10TensorDescPhPfS_PKa20ConvolutionParamSpecS_PKfjPvS_S7_S1_19ActivationParamSpec(ptr nocapture noundef readonly byval(%struct.TensorDesc) align 8 %0, ptr noundef %1, ptr noundef %2, ptr nocapture noundef readonly byval(%struct.TensorDesc) align 8 %3, ptr noundef %4, ptr nocapture noundef readonly byval(%struct.ConvolutionParamSpec) align 8 %5, ptr nocapture noundef readonly byval(%struct.TensorDesc) align 8 %6, ptr noundef %7, i32 noundef %8, ptr noundef %9, ptr nocapture noundef byval(%struct.TensorDesc) align 8 %10, ptr noundef %11, ptr noundef %12, ptr nocapture noundef readonly byval(%struct.ActivationParamSpec) align 8 %13) local_unnamed_addr #0 {
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %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 %struct.ConvController, align 8
  %34 = alloca %struct.TensorDesc, align 8
  %35 = alloca float, align 4
  %36 = alloca [2 x float], align 4
  %37 = alloca %struct.TensorDesc, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #10
  %38 = call noundef i32 @_Z11tensor4dGet10TensorDescP8DataTypeP10DataFormatPjS4_S4_S4_(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %0, ptr noundef nonnull %15, ptr noundef nonnull %18, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %24)
  %.not = icmp eq i32 %38, 0
  br i1 %.not, label %49, label %39

39:                                               ; preds = %14
  %40 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %41 = trunc i64 %40 to i32
  %42 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %41)
  %43 = load ptr, ptr @stdout, align 8, !tbaa !5
  %44 = call i32 @fflush(ptr noundef %43)
  %45 = call ptr @ee2str(i32 noundef %38)
  %46 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, ptr noundef %45)
  %47 = load ptr, ptr @stdout, align 8, !tbaa !5
  %48 = call i32 @fflush(ptr noundef %47)
  call void @exit(i32 noundef 1) #11
  unreachable

49:                                               ; preds = %14
  %50 = call noundef i32 @_Z11tensor4dGet10TensorDescP8DataTypeP10DataFormatPjS4_S4_S4_(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %3, ptr noundef nonnull %16, ptr noundef nonnull %19, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef nonnull %28)
  %.not363 = icmp eq i32 %50, 0
  br i1 %.not363, label %61, label %51

51:                                               ; preds = %49
  %52 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %53 = trunc i64 %52 to i32
  %54 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %53)
  %55 = load ptr, ptr @stdout, align 8, !tbaa !5
  %56 = call i32 @fflush(ptr noundef %55)
  %57 = call ptr @ee2str(i32 noundef %50)
  %58 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, ptr noundef %57)
  %59 = load ptr, ptr @stdout, align 8, !tbaa !5
  %60 = call i32 @fflush(ptr noundef %59)
  call void @exit(i32 noundef 1) #11
  unreachable

61:                                               ; preds = %49
  %62 = call noundef i32 @_Z11tensor4dGet10TensorDescP8DataTypeP10DataFormatPjS4_S4_S4_(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %10, ptr noundef nonnull %17, ptr noundef nonnull %20, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull %32)
  %.not364 = icmp eq i32 %62, 0
  br i1 %.not364, label %73, label %63

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

73:                                               ; preds = %61
  %74 = load i32, ptr %18, align 4
  %75 = icmp eq i32 %74, 15
  br i1 %75, label %76, label %77

76:                                               ; preds = %73
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %77

77:                                               ; preds = %76, %73
  %78 = phi i32 [ 0, %76 ], [ %74, %73 ]
  %79 = load i32, ptr %19, align 4, !tbaa !9
  %.not365 = icmp eq i32 %79, 42
  br i1 %.not365, label %80, label %81

80:                                               ; preds = %77
  switch i32 %78, label %81 [
    i32 41, label %91
    i32 2, label %91
    i32 0, label %91
  ]

81:                                               ; preds = %77, %80
  %82 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %83 = trunc i64 %82 to i32
  %84 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %83)
  %85 = load ptr, ptr @stdout, align 8, !tbaa !5
  %86 = call i32 @fflush(ptr noundef %85)
  %87 = call ptr @ee2str(i32 noundef 2)
  %88 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, ptr noundef %87)
  %89 = load ptr, ptr @stdout, align 8, !tbaa !5
  %90 = call i32 @fflush(ptr noundef %89)
  call void @exit(i32 noundef 1) #11
  unreachable

91:                                               ; preds = %80, %80, %80
  %92 = getelementptr inbounds i8, ptr %5, i64 20
  %93 = load i32, ptr %92, align 4, !tbaa !11
  %94 = getelementptr inbounds i8, ptr %5, i64 24
  %95 = load i32, ptr %94, align 8, !tbaa !17
  %96 = getelementptr inbounds i8, ptr %5, i64 36
  %97 = load i32, ptr %96, align 4, !tbaa !18
  %98 = getelementptr inbounds i8, ptr %5, i64 40
  %99 = load i32, ptr %98, align 8, !tbaa !19
  %100 = getelementptr inbounds i8, ptr %5, i64 44
  %101 = load i32, ptr %100, align 4, !tbaa !20
  %102 = getelementptr inbounds i8, ptr %5, i64 48
  %103 = load i32, ptr %102, align 8, !tbaa !21
  %104 = getelementptr inbounds i8, ptr %5, i64 60
  %105 = load i32, ptr %104, align 4, !tbaa !22
  %106 = getelementptr inbounds i8, ptr %5, i64 64
  %107 = load i32, ptr %106, align 8, !tbaa !23
  %108 = load i32, ptr %23, align 4, !tbaa !24
  %109 = add i32 %93, -1
  %110 = add i32 %109, %108
  %111 = udiv i32 %110, %93
  %112 = load i32, ptr %24, align 4, !tbaa !24
  %113 = add i32 %95, -1
  %114 = add i32 %113, %112
  %115 = udiv i32 %114, %95
  %116 = load i32, ptr %31, align 4, !tbaa !24
  %117 = load i32, ptr %32, align 4, !tbaa !24
  %118 = mul i32 %117, %116
  call void @llvm.lifetime.start.p0(i64 184, ptr nonnull %33) #10
  %119 = shl i32 %118, 6
  %120 = zext i32 %119 to i64
  %121 = getelementptr inbounds i8, ptr %33, i64 96
  store i64 %120, ptr %121, align 8, !tbaa !25
  %122 = shl i32 %107, 4
  %123 = zext i32 %122 to i64
  %124 = getelementptr inbounds i8, ptr %33, i64 80
  store i64 %123, ptr %124, align 8, !tbaa !29
  %125 = load i32, ptr %28, align 4, !tbaa !24
  %126 = mul i32 %125, %107
  %127 = mul i32 %115, %105
  %128 = sub i32 %127, %126
  %129 = shl i32 %128, 4
  %130 = zext i32 %129 to i64
  %131 = getelementptr inbounds i8, ptr %33, i64 88
  store i64 %130, ptr %131, align 8, !tbaa !30
  %132 = mul i32 %115, %111
  %133 = shl i32 %132, 4
  %134 = zext i32 %133 to i64
  %135 = getelementptr inbounds i8, ptr %33, i64 112
  store i64 %134, ptr %135, align 8, !tbaa !31
  %136 = zext i32 %125 to i64
  %137 = getelementptr inbounds i8, ptr %33, i64 56
  store i64 %136, ptr %137, align 8, !tbaa !32
  %138 = load i32, ptr %27, align 4, !tbaa !24
  %139 = zext i32 %138 to i64
  %140 = getelementptr inbounds i8, ptr %33, i64 64
  store i64 %139, ptr %140, align 8, !tbaa !33
  %141 = getelementptr inbounds i8, ptr %33, i64 144
  store ptr null, ptr %141, align 8, !tbaa !34
  %142 = load i32, ptr %25, align 4, !tbaa !24
  %143 = and i32 %142, 31
  %144 = icmp ne i32 %143, 0
  %145 = urem i32 %142, 48
  %.not366 = icmp eq i32 %145, 0
  %or.cond = or i1 %144, %.not366
  %.0326 = select i1 %or.cond, i32 48, i32 32
  %146 = getelementptr inbounds i8, ptr %12, i64 4
  %147 = getelementptr inbounds i8, ptr %12, i64 8
  %148 = load i32, ptr %15, align 4, !tbaa !35
  %.not367 = icmp eq i32 %148, 10
  br i1 %.not367, label %165, label %149

149:                                              ; preds = %91
  call void @llvm.lifetime.start.p0(i64 92, ptr nonnull %34) #10
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(92) %34, ptr noundef nonnull align 8 dereferenceable(92) %0, i64 92, i1 false), !tbaa.struct !37
  store i32 10, ptr %34, align 8, !tbaa !39
  %150 = call noundef i32 @_Z12quantize_x8610TensorDescPKvPS_PvPfi(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %0, ptr noundef %1, ptr noundef nonnull %34, ptr noundef %9, ptr noundef %12, i32 noundef 0)
  %.not368 = icmp eq i32 %150, 0
  br i1 %.not368, label %161, label %151

151:                                              ; preds = %149
  %152 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %153 = trunc i64 %152 to i32
  %154 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %153)
  %155 = load ptr, ptr @stdout, align 8, !tbaa !5
  %156 = call i32 @fflush(ptr noundef %155)
  %157 = call ptr @ee2str(i32 noundef %150)
  %158 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, ptr noundef %157)
  %159 = load ptr, ptr @stdout, align 8, !tbaa !5
  %160 = call i32 @fflush(ptr noundef %159)
  call void @exit(i32 noundef 1) #11
  unreachable

161:                                              ; preds = %149
  %162 = call noundef i32 @_Z14tensorNumBytes10TensorDesc(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %34)
  %163 = zext i32 %162 to i64
  %164 = getelementptr inbounds i8, ptr %9, i64 %163
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %34) #10
  br label %165

165:                                              ; preds = %161, %91
  %.0320 = phi ptr [ %164, %161 ], [ %9, %91 ]
  %.0 = phi ptr [ %9, %161 ], [ %1, %91 ]
  %166 = load float, ptr %12, align 4, !tbaa !41
  %167 = load float, ptr %147, align 4, !tbaa !41
  %168 = fmul float %166, %167
  store float %168, ptr %146, align 4, !tbaa !41
  %169 = load i32, ptr %17, align 4
  switch i32 %169, label %170 [
    i32 6, label %176
    i32 3, label %176
  ]

170:                                              ; preds = %165
  %171 = call noundef i32 @_Z17tensorNumElements10TensorDesc(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %10)
  %172 = call noundef i32 @_Z7bytesOf8DataType(i32 noundef 3)
  %173 = mul i32 %172, %171
  %174 = zext i32 %173 to i64
  %175 = getelementptr inbounds i8, ptr %.0320, i64 %174
  store i32 3, ptr %10, align 8, !tbaa !39
  br label %176

176:                                              ; preds = %165, %165, %170
  %.0324 = phi ptr [ %.0320, %170 ], [ %11, %165 ], [ %11, %165 ]
  %.1 = phi ptr [ %175, %170 ], [ %.0320, %165 ], [ %.0320, %165 ]
  %.not373 = icmp eq ptr %2, null
  br i1 %.not373, label %177, label %.thread

.thread:                                          ; preds = %176
  store i32 6, ptr %10, align 8, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #10
  br label %179

177:                                              ; preds = %176
  %.pr = load i32, ptr %10, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #10
  store float 0.000000e+00, ptr %35, align 4, !tbaa !41
  %178 = icmp eq i32 %.pr, 6
  br i1 %178, label %179, label %182

179:                                              ; preds = %.thread, %177
  %180 = load float, ptr %146, align 4, !tbaa !41
  %181 = fdiv float 1.000000e+00, %180
  store float %181, ptr %35, align 4, !tbaa !41
  br label %182

182:                                              ; preds = %179, %177
  %.0329 = phi ptr [ %35, %179 ], [ null, %177 ]
  %183 = load i32, ptr %30, align 4, !tbaa !24
  %184 = call noundef i32 @_Z7bytesOf8DataType(i32 noundef 3)
  %185 = mul i32 %184, %183
  %186 = zext i32 %185 to i64
  %187 = getelementptr inbounds i8, ptr %.1, i64 %186
  %188 = call noundef i32 @_Z21quantize_bias_offsetCPKv10TensorDesc8DataTypeS0_S1_PKfPv(ptr noundef %7, ptr noundef nonnull byval(%struct.TensorDesc) align 8 %6, i32 noundef 3, ptr noundef %4, ptr noundef nonnull byval(%struct.TensorDesc) align 8 %3, ptr noundef nonnull %146, ptr noundef %.1)
  %.not369 = icmp eq i32 %188, 0
  br i1 %.not369, label %199, label %189

189:                                              ; preds = %182
  %190 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %191 = trunc i64 %190 to i32
  %192 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %191)
  %193 = load ptr, ptr @stdout, align 8, !tbaa !5
  %194 = call i32 @fflush(ptr noundef %193)
  %195 = call ptr @ee2str(i32 noundef %188)
  %196 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, ptr noundef %195)
  %197 = load ptr, ptr @stdout, align 8, !tbaa !5
  %198 = call i32 @fflush(ptr noundef %197)
  call void @exit(i32 noundef 1) #11
  unreachable

199:                                              ; preds = %182
  %200 = load i32, ptr %30, align 4, !tbaa !24
  %201 = shl i32 %200, 2
  %202 = zext i32 %201 to i64
  %203 = getelementptr inbounds i8, ptr %4, i64 %202
  %204 = icmp ne i32 %97, 0
  %205 = icmp ne i32 %99, 0
  %or.cond10 = select i1 %204, i1 true, i1 %205
  %206 = icmp ne i32 %101, 0
  %or.cond12 = select i1 %or.cond10, i1 true, i1 %206
  %207 = icmp ne i32 %103, 0
  %or.cond14 = select i1 %or.cond12, i1 true, i1 %207
  br i1 %or.cond14, label %208, label %217

208:                                              ; preds = %199
  %209 = load i32, ptr %10, align 8, !tbaa !39
  %210 = load i32, ptr %13, align 8, !tbaa !43
  %211 = load float, ptr %146, align 4, !tbaa !41
  call void @_Z26getActivatedBiasForPaddingPKf10TensorDesc8DataTypePv14ActivationModef(ptr noundef %7, ptr noundef nonnull byval(%struct.TensorDesc) align 8 %6, i32 noundef %209, ptr noundef %187, i32 noundef %210, float noundef %211)
  %212 = load i32, ptr %30, align 4, !tbaa !24
  %213 = call noundef i32 @_Z7bytesOf8DataType(i32 noundef 6)
  %214 = mul i32 %213, %212
  %215 = zext i32 %214 to i64
  %216 = getelementptr inbounds i8, ptr %187, i64 %215
  br label %217

217:                                              ; preds = %199, %208
  %.2 = phi ptr [ %216, %208 ], [ %187, %199 ]
  %218 = load i32, ptr %10, align 8, !tbaa !39
  %219 = call noundef i32 @_Z7bytesOf8DataType(i32 noundef %218)
  %220 = load i32, ptr %18, align 4, !tbaa !9
  %.not370 = icmp eq i32 %220, 41
  br i1 %.not370, label %229, label %221

221:                                              ; preds = %217
  %222 = load i32, ptr %22, align 4, !tbaa !24
  %223 = load i32, ptr %23, align 4, !tbaa !24
  %224 = mul i32 %223, %222
  %225 = load i32, ptr %24, align 4, !tbaa !24
  %226 = mul i32 %224, %225
  %227 = zext i32 %226 to i64
  %228 = getelementptr inbounds i8, ptr %.2, i64 %227
  br label %229

229:                                              ; preds = %221, %217
  %.3 = phi ptr [ %228, %221 ], [ %.2, %217 ]
  %230 = load i32, ptr %21, align 4, !tbaa !24
  %.not449 = icmp eq i32 %230, 0
  br i1 %.not449, label %._crit_edge448, label %.lr.ph447

.lr.ph447:                                        ; preds = %229
  %231 = or i32 %95, %93
  %or.cond16.not = icmp ult i32 %231, 2
  %.not450 = icmp ugt i32 %95, %114
  %232 = select i1 %.not373, i32 0, i32 2
  %233 = getelementptr inbounds i8, ptr %33, i64 104
  %234 = icmp eq i32 %97, 0
  %235 = icmp eq i32 %99, 0
  %or.cond18 = select i1 %234, i1 %235, i1 false
  %236 = icmp eq i32 %101, 0
  %or.cond20 = select i1 %or.cond18, i1 %236, i1 false
  %237 = icmp eq i32 %103, 0
  %or.cond22 = select i1 %or.cond20, i1 %237, i1 false
  %238 = getelementptr inbounds i8, ptr %33, i64 40
  %factor.op.mul406 = mul i32 %118, %219
  %239 = getelementptr inbounds i8, ptr %33, i64 16
  %240 = getelementptr inbounds i8, ptr %33, i64 24
  %241 = add i32 %111, %97
  %242 = add i32 %115, %101
  %243 = shl i32 %219, 4
  %244 = zext i32 %243 to i64
  %245 = shl i32 %219, 3
  %246 = zext i32 %245 to i64
  %247 = shl i32 %115, 4
  %248 = getelementptr inbounds i8, ptr %33, i64 8
  %249 = getelementptr inbounds i8, ptr %33, i64 48
  %.not451 = icmp eq i32 %118, 0
  %250 = zext i32 %115 to i64
  %251 = zext i32 %241 to i64
  %252 = zext i32 %97 to i64
  %.pre = load i32, ptr %22, align 4, !tbaa !24
  br label %255

._crit_edge448:                                   ; preds = %._crit_edge440, %229
  %253 = load i32, ptr %17, align 4, !tbaa !35
  %254 = icmp eq i32 %253, 10
  br i1 %254, label %545, label %561

255:                                              ; preds = %.lr.ph447, %._crit_edge440
  %256 = phi i32 [ %.pre, %.lr.ph447 ], [ %305, %._crit_edge440 ]
  %.0330445 = phi ptr [ %.2, %.lr.ph447 ], [ %.1331, %._crit_edge440 ]
  %.0332443 = phi ptr [ %.3, %.lr.ph447 ], [ %.1333, %._crit_edge440 ]
  %.0335442 = phi i32 [ 0, %.lr.ph447 ], [ %306, %._crit_edge440 ]
  %257 = mul i32 %256, %.0335442
  %258 = load i32, ptr %23, align 4, !tbaa !24
  %259 = mul i32 %257, %258
  %260 = load i32, ptr %24, align 4, !tbaa !24
  %261 = mul i32 %259, %260
  %262 = zext i32 %261 to i64
  %263 = getelementptr inbounds i8, ptr %.0, i64 %262
  %264 = load i32, ptr %18, align 4, !tbaa !9
  switch i32 %264, label %269 [
    i32 41, label %265
    i32 2, label %268
  ]

265:                                              ; preds = %255
  %266 = and i32 %256, 15
  %.not372 = icmp eq i32 %266, 0
  br i1 %.not372, label %270, label %267

267:                                              ; preds = %265
  call void @_Z21PaddingChannelNCHWC16PhS_10TensorDesc20ConvolutionParamSpec(ptr noundef %263, ptr noundef %.0330445, ptr noundef nonnull byval(%struct.TensorDesc) align 8 %0, ptr noundef nonnull byval(%struct.ConvolutionParamSpec) align 8 %5)
  br label %270

268:                                              ; preds = %255
  call void @_Z22PaddingNCHWC8ToNCHWC16PhS_10TensorDesc20ConvolutionParamSpec(ptr noundef %263, ptr noundef %.0330445, ptr noundef nonnull byval(%struct.TensorDesc) align 8 %0, ptr noundef nonnull byval(%struct.ConvolutionParamSpec) align 8 %5)
  br label %270

269:                                              ; preds = %255
  call void @_Z19PaddingNCHW2NCHWC16PhS_10TensorDesc20ConvolutionParamSpec(ptr noundef %263, ptr noundef %.0330445, ptr noundef nonnull byval(%struct.TensorDesc) align 8 %0, ptr noundef nonnull byval(%struct.ConvolutionParamSpec) align 8 %5)
  br label %270

270:                                              ; preds = %265, %268, %269, %267
  %.1331 = phi ptr [ %.0330445, %267 ], [ %.0330445, %268 ], [ %.0330445, %269 ], [ %263, %265 ]
  %271 = load i32, ptr %22, align 4, !tbaa !24
  %272 = add i32 %271, 15
  %273 = and i32 %272, -16
  store i32 %273, ptr %22, align 4, !tbaa !24
  br i1 %or.cond16.not, label %.loopexit394, label %.preheader393

.preheader393:                                    ; preds = %270
  %274 = lshr i32 %272, 4
  %275 = mul i32 %274, %111
  %.not452 = icmp eq i32 %275, 0
  %brmerge = select i1 %.not452, i1 true, i1 %.not450
  br i1 %brmerge, label %.loopexit394, label %.lr.ph.us

.lr.ph.us:                                        ; preds = %.preheader393, %._crit_edge.us
  %.0341397.us = phi i32 [ %302, %._crit_edge.us ], [ 0, %.preheader393 ]
  %276 = udiv i32 %.0341397.us, %111
  %277 = urem i32 %.0341397.us, %111
  %factor.op.mul395.reass.us = mul i32 %133, %276
  %278 = mul i32 %277, %93
  %279 = zext i32 %factor.op.mul395.reass.us to i64
  %280 = getelementptr inbounds i8, ptr %.0332443, i64 %279
  %281 = mul i32 %277, %115
  %282 = shl i32 %276, 4
  br label %283

283:                                              ; preds = %.lr.ph.us, %283
  %indvars.iv = phi i64 [ 0, %.lr.ph.us ], [ %indvars.iv.next, %283 ]
  %284 = trunc nuw i64 %indvars.iv to i32
  %285 = mul i32 %95, %284
  %286 = add i32 %281, %284
  %287 = shl i32 %286, 4
  %288 = zext i32 %287 to i64
  %289 = getelementptr inbounds i8, ptr %280, i64 %288
  %290 = load i32, ptr %23, align 4, !tbaa !24
  %291 = load i32, ptr %24, align 4, !tbaa !24
  %292 = mul i32 %282, %290
  %293 = mul i32 %292, %291
  %294 = zext i32 %293 to i64
  %295 = getelementptr inbounds i8, ptr %.1331, i64 %294
  %296 = mul i32 %278, %291
  %297 = add i32 %296, %285
  %298 = shl i32 %297, 4
  %299 = zext i32 %298 to i64
  %300 = getelementptr inbounds i8, ptr %295, i64 %299
  call void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %289, ptr noundef %300, i64 noundef 16)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %301 = icmp ult i64 %indvars.iv.next, %250
  br i1 %301, label %283, label %._crit_edge.us, !llvm.loop !45

._crit_edge.us:                                   ; preds = %283
  %302 = add nuw i32 %.0341397.us, 1
  %303 = icmp ult i32 %302, %275
  br i1 %303, label %.lr.ph.us, label %.loopexit394.loopexit464, !llvm.loop !47

.loopexit394.loopexit464:                         ; preds = %._crit_edge.us
  %.pre479 = load i32, ptr %22, align 4
  br label %.loopexit394

.loopexit394:                                     ; preds = %.preheader393, %.loopexit394.loopexit464, %270
  %304 = phi i32 [ %273, %270 ], [ %273, %.preheader393 ], [ %.pre479, %.loopexit394.loopexit464 ]
  %.1333 = phi ptr [ %.1331, %270 ], [ %.0332443, %.preheader393 ], [ %.0332443, %.loopexit394.loopexit464 ]
  %.not453 = icmp eq i32 %304, 0
  br i1 %.not453, label %._crit_edge440, label %.lr.ph439

._crit_edge440:                                   ; preds = %.loopexit390, %.loopexit394
  %305 = phi i32 [ 0, %.loopexit394 ], [ %543, %.loopexit390 ]
  %306 = add nuw i32 %.0335442, 1
  %307 = load i32, ptr %21, align 4, !tbaa !24
  %308 = icmp ult i32 %306, %307
  br i1 %308, label %255, label %._crit_edge448, !llvm.loop !48

.lr.ph439:                                        ; preds = %.loopexit394, %.loopexit390
  %309 = phi i32 [ %543, %.loopexit390 ], [ %304, %.loopexit394 ]
  %.0338435 = phi i32 [ %542, %.loopexit390 ], [ 0, %.loopexit394 ]
  %.0339434 = phi i32 [ %.1340, %.loopexit390 ], [ 0, %.loopexit394 ]
  %310 = sub i32 %309, %.0338435
  %311 = call i32 @llvm.umin.i32(i32 %310, i32 256)
  %312 = icmp ne i32 %.0338435, 0
  %313 = zext i1 %312 to i32
  %314 = or i32 %.0339434, %313
  %315 = sub i32 %309, %311
  %316 = icmp eq i32 %.0338435, %315
  br i1 %316, label %317, label %322

317:                                              ; preds = %.lr.ph439
  %318 = load i32, ptr %13, align 8, !tbaa !43
  %319 = shl i32 %318, 2
  %320 = or disjoint i32 %319, %232
  %321 = or i32 %320, %314
  store ptr %.0329, ptr %141, align 8, !tbaa !34
  br label %322

322:                                              ; preds = %317, %.lr.ph439
  %.1340 = phi i32 [ %321, %317 ], [ %314, %.lr.ph439 ]
  %323 = zext i32 %.1340 to i64
  store i64 %323, ptr %233, align 8, !tbaa !49
  br i1 %or.cond22, label %.preheader389, label %.preheader391

.preheader391:                                    ; preds = %322
  %324 = load i32, ptr %31, align 4, !tbaa !24
  %.not454 = icmp eq i32 %324, 0
  br i1 %.not454, label %.loopexit390, label %.preheader388.lr.ph

.preheader388.lr.ph:                              ; preds = %.preheader391
  %factor.op.mul410.reass = mul i32 %132, %.0338435
  %325 = zext i32 %factor.op.mul410.reass to i64
  %326 = getelementptr inbounds i8, ptr %.1333, i64 %325
  %327 = and i32 %.1340, 2
  %.not376 = icmp eq i32 %327, 0
  %328 = zext nneg i32 %311 to i64
  %329 = load i32, ptr %30, align 4
  %.not455 = icmp eq i32 %329, 0
  br i1 %.not455, label %.loopexit390, label %.preheader388

.preheader389:                                    ; preds = %322
  br i1 %.not451, label %.loopexit390, label %.lr.ph433

.lr.ph433:                                        ; preds = %.preheader389
  %factor.op.mul423.reass = mul i32 %132, %.0338435
  %330 = zext i32 %factor.op.mul423.reass to i64
  %331 = getelementptr inbounds i8, ptr %.1333, i64 %330
  %332 = zext nneg i32 %311 to i64
  %333 = load i32, ptr %30, align 4
  %.not459 = icmp eq i32 %333, 0
  br i1 %.not459, label %.loopexit390, label %.lr.ph433.split

.lr.ph433.split:                                  ; preds = %.lr.ph433, %._crit_edge428
  %334 = phi i32 [ %411, %._crit_edge428 ], [ %333, %.lr.ph433 ]
  %335 = phi i32 [ %412, %._crit_edge428 ], [ %333, %.lr.ph433 ]
  %.0337431 = phi i32 [ %.pre482, %._crit_edge428 ], [ 0, %.lr.ph433 ]
  %336 = sub i32 %118, %.0337431
  %337 = call i32 @llvm.umin.i32(i32 %336, i32 768)
  %.not460 = icmp eq i32 %335, 0
  %.pre482 = add i32 %337, %.0337431
  br i1 %.not460, label %._crit_edge428, label %.lr.ph427

.lr.ph427:                                        ; preds = %.lr.ph433.split
  %338 = icmp ult i32 %.0337431, %.pre482
  br i1 %338, label %.lr.ph421.us, label %.lr.ph427.split

.lr.ph421.us:                                     ; preds = %.lr.ph427, %._crit_edge422.us
  %339 = phi i32 [ %401, %._crit_edge422.us ], [ %335, %.lr.ph427 ]
  %.0336425.us = phi i32 [ %400, %._crit_edge422.us ], [ 0, %.lr.ph427 ]
  %340 = sub i32 %339, %.0336425.us
  %341 = call i32 @llvm.umin.i32(i32 %.0326, i32 %340)
  %342 = lshr i32 %341, 4
  %343 = zext nneg i32 %342 to i64
  %344 = getelementptr inbounds [4 x i32], ptr @__const._Z22convolution_1x1_direct10TensorDescPhPfS_PKa20ConvolutionParamSpecS_PKfjPvS_S7_S1_19ActivationParamSpec.ocSizeArray, i64 0, i64 %343
  %345 = load i32, ptr %344, align 4, !tbaa !24
  %346 = call i32 @llvm.umin.i32(i32 %345, i32 16)
  %347 = zext i32 %.0336425.us to i64
  %348 = getelementptr inbounds i32, ptr %.1, i64 %347
  store ptr %348, ptr %238, align 8, !tbaa !50
  %349 = lshr i32 %345, 4
  %350 = zext nneg i32 %349 to i64
  %351 = getelementptr inbounds [4 x i32], ptr @__const._Z22convolution_1x1_direct10TensorDescPhPfS_PKa20ConvolutionParamSpecS_PKfjPvS_S7_S1_19ActivationParamSpec.wSizeArray, i64 0, i64 %350
  %352 = load i32, ptr %351, align 4, !tbaa !24
  %353 = mul i32 %345, %.0338435
  br label %354

354:                                              ; preds = %.lr.ph421.us, %354
  %.0334419.us = phi i32 [ %.0337431, %.lr.ph421.us ], [ %398, %354 ]
  %355 = sub i32 %.pre482, %.0334419.us
  %..us = call i32 @llvm.umin.i32(i32 %355, i32 %352)
  %356 = shl i32 %..us, 1
  %357 = udiv i32 %356, %352
  %358 = mul i32 %357, %352
  %359 = lshr i32 %358, 1
  %360 = call i32 @llvm.umax.i32(i32 %359, i32 1)
  %361 = load i32, ptr %32, align 4, !tbaa !24
  %362 = udiv i32 %.0334419.us, %361
  %363 = urem i32 %.0334419.us, %361
  %364 = mul i32 %247, %362
  %365 = zext i32 %364 to i64
  %366 = getelementptr inbounds i8, ptr %331, i64 %365
  %367 = shl i32 %363, 4
  %368 = zext i32 %367 to i64
  %369 = getelementptr inbounds i8, ptr %366, i64 %368
  store ptr %369, ptr %33, align 8, !tbaa !51
  %370 = load i32, ptr %30, align 4, !tbaa !24
  %371 = mul i32 %370, %.0335442
  %372 = add i32 %371, %.0336425.us
  %373 = mul i32 %372, %118
  %374 = mul i32 %.0334419.us, %346
  %375 = add i32 %373, %374
  %376 = mul i32 %375, %219
  %377 = zext i32 %376 to i64
  %378 = getelementptr inbounds i8, ptr %.0324, i64 %377
  store ptr %378, ptr %239, align 8, !tbaa !52
  %379 = zext i32 %373 to i64
  %380 = getelementptr inbounds float, ptr %2, i64 %379
  %381 = zext i32 %374 to i64
  %382 = getelementptr inbounds float, ptr %380, i64 %381
  store ptr %382, ptr %240, align 8, !tbaa !53
  %383 = load i32, ptr %22, align 4, !tbaa !24
  %384 = load i32, ptr %27, align 4, !tbaa !24
  %385 = load i32, ptr %28, align 4, !tbaa !24
  %386 = mul i32 %385, %384
  %387 = mul i32 %386, %.0336425.us
  %388 = mul i32 %387, %383
  %389 = zext i32 %388 to i64
  %390 = getelementptr inbounds i8, ptr %203, i64 %389
  %391 = mul i32 %353, %384
  %392 = mul i32 %391, %385
  %393 = zext i32 %392 to i64
  %394 = getelementptr inbounds i8, ptr %390, i64 %393
  store ptr %394, ptr %248, align 8, !tbaa !54
  store i64 %332, ptr %249, align 8, !tbaa !55
  %395 = zext i32 %357 to i64
  %396 = getelementptr inbounds [4 x [3 x ptr]], ptr @__const._Z22convolution_1x1_direct10TensorDescPhPfS_PKa20ConvolutionParamSpecS_PKfjPvS_S7_S1_19ActivationParamSpec.kernel, i64 0, i64 %350, i64 %395
  %397 = load ptr, ptr %396, align 8, !tbaa !5
  call void %397(ptr noundef nonnull align 8 dereferenceable(184) %33)
  %398 = add i32 %360, %.0334419.us
  %399 = icmp ult i32 %398, %.pre482
  br i1 %399, label %354, label %._crit_edge422.us, !llvm.loop !56

._crit_edge422.us:                                ; preds = %354
  %400 = add i32 %345, %.0336425.us
  %401 = load i32, ptr %30, align 4
  %402 = icmp ult i32 %400, %401
  br i1 %402, label %.lr.ph421.us, label %._crit_edge428, !llvm.loop !57

.lr.ph427.split:                                  ; preds = %.lr.ph427
  %403 = call i32 @llvm.umin.i32(i32 %.0326, i32 %335)
  %404 = lshr i32 %403, 4
  %405 = zext nneg i32 %404 to i64
  %406 = getelementptr inbounds [4 x i32], ptr @__const._Z22convolution_1x1_direct10TensorDescPhPfS_PKa20ConvolutionParamSpecS_PKfjPvS_S7_S1_19ActivationParamSpec.ocSizeArray, i64 0, i64 %405
  %407 = load i32, ptr %406, align 4, !tbaa !24
  %408 = icmp ult i32 %407, %334
  br i1 %408, label %.peel.next477, label %._crit_edge428.split

._crit_edge428.split:                             ; preds = %.peel.next477, %.lr.ph427.split
  %.0336425.lcssa = phi i32 [ 0, %.lr.ph427.split ], [ %.0336425, %.peel.next477 ]
  %409 = zext i32 %.0336425.lcssa to i64
  %410 = getelementptr inbounds i32, ptr %.1, i64 %409
  store ptr %410, ptr %238, align 8, !tbaa !50
  br label %._crit_edge428

._crit_edge428:                                   ; preds = %._crit_edge422.us, %.lr.ph433.split, %._crit_edge428.split
  %411 = phi i32 [ %334, %._crit_edge428.split ], [ %334, %.lr.ph433.split ], [ %401, %._crit_edge422.us ]
  %412 = phi i32 [ %334, %._crit_edge428.split ], [ 0, %.lr.ph433.split ], [ %401, %._crit_edge422.us ]
  %413 = icmp ult i32 %.pre482, %118
  br i1 %413, label %.lr.ph433.split, label %.loopexit390, !llvm.loop !58

.peel.next477:                                    ; preds = %.lr.ph427.split, %.peel.next477
  %.0336425 = phi i32 [ %420, %.peel.next477 ], [ %407, %.lr.ph427.split ]
  %414 = sub i32 %334, %.0336425
  %415 = call i32 @llvm.umin.i32(i32 %.0326, i32 %414)
  %416 = lshr i32 %415, 4
  %417 = zext nneg i32 %416 to i64
  %418 = getelementptr inbounds [4 x i32], ptr @__const._Z22convolution_1x1_direct10TensorDescPhPfS_PKa20ConvolutionParamSpecS_PKfjPvS_S7_S1_19ActivationParamSpec.ocSizeArray, i64 0, i64 %417
  %419 = load i32, ptr %418, align 4, !tbaa !24
  %420 = add i32 %419, %.0336425
  %421 = icmp ult i32 %420, %334
  br i1 %421, label %.peel.next477, label %._crit_edge428.split, !llvm.loop !60

.preheader388:                                    ; preds = %.preheader388.lr.ph, %._crit_edge414
  %422 = phi i32 [ %449, %._crit_edge414 ], [ %324, %.preheader388.lr.ph ]
  %423 = phi i32 [ %450, %._crit_edge414 ], [ %329, %.preheader388.lr.ph ]
  %424 = phi i32 [ %451, %._crit_edge414 ], [ %329, %.preheader388.lr.ph ]
  %425 = phi i32 [ %452, %._crit_edge414 ], [ %329, %.preheader388.lr.ph ]
  %indvars.iv473 = phi i64 [ %indvars.iv.next474, %._crit_edge414 ], [ 0, %.preheader388.lr.ph ]
  %.not456 = icmp eq i32 %425, 0
  br i1 %.not456, label %._crit_edge414, label %.lr.ph413

.lr.ph413:                                        ; preds = %.preheader388
  %426 = icmp uge i64 %indvars.iv473, %252
  %.not374 = icmp ult i64 %indvars.iv473, %251
  %or.cond377.not382.not386 = select i1 %426, i1 %.not374, i1 false
  %427 = trunc nuw i64 %indvars.iv473 to i32
  %428 = sub i32 %427, %97
  %429 = mul i32 %247, %428
  %430 = zext i32 %429 to i64
  %431 = getelementptr inbounds i8, ptr %326, i64 %430
  %432 = load i32, ptr %32, align 4, !tbaa !24
  %.not457 = icmp eq i32 %432, 0
  br i1 %.not457, label %.lr.ph413.split.us, label %.lr.ph413.split

.lr.ph413.split.us:                               ; preds = %.lr.ph413
  %433 = call i32 @llvm.umin.i32(i32 %.0326, i32 %425)
  %434 = lshr i32 %433, 4
  %435 = zext nneg i32 %434 to i64
  %436 = getelementptr inbounds [4 x i32], ptr @__const._Z22convolution_1x1_direct10TensorDescPhPfS_PKa20ConvolutionParamSpecS_PKfjPvS_S7_S1_19ActivationParamSpec.ocSizeArray, i64 0, i64 %435
  %437 = load i32, ptr %436, align 4, !tbaa !24
  %438 = icmp ult i32 %437, %423
  br i1 %438, label %.peel.next, label %._crit_edge414.split.us

.peel.next:                                       ; preds = %.lr.ph413.split.us, %.peel.next
  %.0327412.us = phi i32 [ %445, %.peel.next ], [ %437, %.lr.ph413.split.us ]
  %439 = sub i32 %423, %.0327412.us
  %440 = call i32 @llvm.umin.i32(i32 %.0326, i32 %439)
  %441 = lshr i32 %440, 4
  %442 = zext nneg i32 %441 to i64
  %443 = getelementptr inbounds [4 x i32], ptr @__const._Z22convolution_1x1_direct10TensorDescPhPfS_PKa20ConvolutionParamSpecS_PKfjPvS_S7_S1_19ActivationParamSpec.ocSizeArray, i64 0, i64 %442
  %444 = load i32, ptr %443, align 4, !tbaa !24
  %445 = add i32 %444, %.0327412.us
  %446 = icmp ult i32 %445, %423
  br i1 %446, label %.peel.next, label %._crit_edge414.split.us, !llvm.loop !62

._crit_edge414.split.us:                          ; preds = %.peel.next, %.lr.ph413.split.us
  %.0327412.us.lcssa = phi i32 [ 0, %.lr.ph413.split.us ], [ %.0327412.us, %.peel.next ]
  %447 = zext i32 %.0327412.us.lcssa to i64
  %448 = getelementptr inbounds i32, ptr %.1, i64 %447
  store ptr %448, ptr %238, align 8, !tbaa !50
  br label %._crit_edge414

._crit_edge414.loopexit:                          ; preds = %._crit_edge
  %.pre481 = load i32, ptr %31, align 4, !tbaa !24
  br label %._crit_edge414

._crit_edge414:                                   ; preds = %._crit_edge414.loopexit, %._crit_edge414.split.us, %.preheader388
  %449 = phi i32 [ %.pre481, %._crit_edge414.loopexit ], [ %422, %._crit_edge414.split.us ], [ %422, %.preheader388 ]
  %450 = phi i32 [ %475, %._crit_edge414.loopexit ], [ %423, %._crit_edge414.split.us ], [ %423, %.preheader388 ]
  %451 = phi i32 [ %476, %._crit_edge414.loopexit ], [ %423, %._crit_edge414.split.us ], [ %424, %.preheader388 ]
  %452 = phi i32 [ %476, %._crit_edge414.loopexit ], [ %423, %._crit_edge414.split.us ], [ 0, %.preheader388 ]
  %indvars.iv.next474 = add nuw nsw i64 %indvars.iv473, 1
  %453 = zext i32 %449 to i64
  %454 = icmp ult i64 %indvars.iv.next474, %453
  br i1 %454, label %.preheader388, label %.loopexit390, !llvm.loop !63

.lr.ph413.split:                                  ; preds = %.lr.ph413, %._crit_edge
  %455 = phi i32 [ %475, %._crit_edge ], [ %423, %.lr.ph413 ]
  %456 = phi i32 [ %476, %._crit_edge ], [ %424, %.lr.ph413 ]
  %457 = phi i32 [ %477, %._crit_edge ], [ %432, %.lr.ph413 ]
  %458 = phi i32 [ %476, %._crit_edge ], [ %425, %.lr.ph413 ]
  %.0327412 = phi i32 [ %478, %._crit_edge ], [ 0, %.lr.ph413 ]
  %459 = sub i32 %458, %.0327412
  %460 = call i32 @llvm.umin.i32(i32 %.0326, i32 %459)
  %461 = lshr i32 %460, 4
  %462 = zext nneg i32 %461 to i64
  %463 = getelementptr inbounds [4 x i32], ptr @__const._Z22convolution_1x1_direct10TensorDescPhPfS_PKa20ConvolutionParamSpecS_PKfjPvS_S7_S1_19ActivationParamSpec.ocSizeArray, i64 0, i64 %462
  %464 = load i32, ptr %463, align 4, !tbaa !24
  %465 = call i32 @llvm.umin.i32(i32 %464, i32 16)
  %466 = zext i32 %.0327412 to i64
  %467 = getelementptr inbounds i32, ptr %.1, i64 %466
  store ptr %467, ptr %238, align 8, !tbaa !50
  %468 = lshr i32 %464, 4
  %469 = zext nneg i32 %468 to i64
  %470 = getelementptr inbounds [4 x i32], ptr @__const._Z22convolution_1x1_direct10TensorDescPhPfS_PKa20ConvolutionParamSpecS_PKfjPvS_S7_S1_19ActivationParamSpec.wSizeArray, i64 0, i64 %469
  %471 = load i32, ptr %470, align 4, !tbaa !24
  %factor.op.mul405 = mul i32 %465, %219
  %.not458 = icmp eq i32 %457, 0
  br i1 %.not458, label %._crit_edge, label %.lr.ph409

.lr.ph409:                                        ; preds = %.lr.ph413.split
  %472 = add nsw i32 %464, -15
  %invariant.gep = getelementptr inbounds float, ptr %187, i64 %466
  %473 = icmp sgt i32 %464, 15
  %474 = mul i32 %464, %.0338435
  br label %480

._crit_edge.loopexit:                             ; preds = %.loopexit
  %.pre480 = load i32, ptr %30, align 4
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.lr.ph413.split
  %475 = phi i32 [ %.pre480, %._crit_edge.loopexit ], [ %455, %.lr.ph413.split ]
  %476 = phi i32 [ %.pre480, %._crit_edge.loopexit ], [ %456, %.lr.ph413.split ]
  %477 = phi i32 [ %540, %._crit_edge.loopexit ], [ 0, %.lr.ph413.split ]
  %478 = add i32 %464, %.0327412
  %479 = icmp ult i32 %478, %476
  br i1 %479, label %.lr.ph413.split, label %._crit_edge414.loopexit, !llvm.loop !64

480:                                              ; preds = %.lr.ph409, %.loopexit
  %481 = phi i32 [ %457, %.lr.ph409 ], [ %540, %.loopexit ]
  %.0323408 = phi i32 [ 0, %.lr.ph409 ], [ %539, %.loopexit ]
  %482 = load i32, ptr %30, align 4
  %483 = mul i32 %482, %.0335442
  %484 = add i32 %483, %.0327412
  %.reass407 = mul i32 %484, %factor.op.mul406
  %485 = mul i32 %481, %427
  %486 = add i32 %485, %.0323408
  %.reass = mul i32 %486, %factor.op.mul405
  %487 = add i32 %.reass407, %.reass
  %488 = zext i32 %487 to i64
  %489 = getelementptr inbounds i8, ptr %.0324, i64 %488
  store ptr %489, ptr %239, align 8, !tbaa !52
  %490 = getelementptr inbounds float, ptr %2, i64 %488
  store ptr %490, ptr %240, align 8, !tbaa !53
  %491 = icmp uge i32 %.0323408, %101
  %or.cond378.not384 = select i1 %or.cond377.not382.not386, i1 %491, i1 false
  %.not375 = icmp ult i32 %.0323408, %242
  %or.cond379 = select i1 %or.cond378.not384, i1 %.not375, i1 false
  br i1 %or.cond379, label %513, label %492

492:                                              ; preds = %480
  br i1 %.not376, label %493, label %.loopexit

493:                                              ; preds = %492
  %494 = load i32, ptr %22, align 4, !tbaa !24
  %495 = sub i32 %494, %311
  %496 = icmp eq i32 %.0338435, %495
  br i1 %496, label %.preheader387, label %.loopexit

.preheader387:                                    ; preds = %493
  br i1 %473, label %.lr.ph, label %.preheader

.preheader:                                       ; preds = %.lr.ph, %.preheader387
  %.0321.lcssa = phi i32 [ 0, %.preheader387 ], [ %504, %.lr.ph ]
  %497 = icmp slt i32 %.0321.lcssa, %464
  br i1 %497, label %.lr.ph404.preheader, label %.loopexit

.lr.ph404.preheader:                              ; preds = %.preheader
  %498 = zext i32 %.0321.lcssa to i64
  br label %.lr.ph404

.lr.ph:                                           ; preds = %.preheader387, %.lr.ph
  %indvars.iv466 = phi i64 [ %indvars.iv.next467, %.lr.ph ], [ 0, %.preheader387 ]
  %499 = load ptr, ptr %239, align 8, !tbaa !52
  %500 = trunc nuw nsw i64 %indvars.iv466 to i32
  %501 = mul i32 %factor.op.mul406, %500
  %502 = zext i32 %501 to i64
  %503 = getelementptr inbounds i8, ptr %499, i64 %502
  %gep = getelementptr inbounds float, ptr %invariant.gep, i64 %indvars.iv466
  call void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %503, ptr noundef %gep, i64 noundef %244)
  %indvars.iv.next467 = add nuw nsw i64 %indvars.iv466, 16
  %504 = trunc nuw i64 %indvars.iv.next467 to i32
  %505 = icmp sgt i32 %472, %504
  br i1 %505, label %.lr.ph, label %.preheader, !llvm.loop !65

.lr.ph404:                                        ; preds = %.lr.ph404.preheader, %.lr.ph404
  %indvars.iv469 = phi i64 [ %498, %.lr.ph404.preheader ], [ %indvars.iv.next470, %.lr.ph404 ]
  %506 = load ptr, ptr %239, align 8, !tbaa !52
  %507 = trunc nuw i64 %indvars.iv469 to i32
  %508 = mul i32 %factor.op.mul406, %507
  %509 = zext i32 %508 to i64
  %510 = getelementptr inbounds i8, ptr %506, i64 %509
  %gep402 = getelementptr inbounds float, ptr %invariant.gep, i64 %indvars.iv469
  call void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %510, ptr noundef %gep402, i64 noundef %246)
  %indvars.iv.next470 = add nuw nsw i64 %indvars.iv469, 8
  %511 = trunc nuw i64 %indvars.iv.next470 to i32
  %512 = icmp sgt i32 %464, %511
  br i1 %512, label %.lr.ph404, label %.loopexit, !llvm.loop !66

513:                                              ; preds = %480
  %514 = sub i32 %.0323408, %101
  %515 = sub i32 %115, %514
  %.380 = call i32 @llvm.umin.i32(i32 %515, i32 %471)
  %516 = shl i32 %.380, 1
  %517 = udiv i32 %516, %471
  %518 = mul i32 %517, %471
  %519 = lshr i32 %518, 1
  %520 = call i32 @llvm.umax.i32(i32 %519, i32 1)
  %521 = shl i32 %514, 4
  %522 = zext i32 %521 to i64
  %523 = getelementptr inbounds i8, ptr %431, i64 %522
  store ptr %523, ptr %33, align 8, !tbaa !51
  %524 = load i32, ptr %22, align 4, !tbaa !24
  %525 = load i32, ptr %27, align 4, !tbaa !24
  %526 = load i32, ptr %28, align 4, !tbaa !24
  %527 = mul i32 %526, %525
  %528 = mul i32 %527, %.0327412
  %529 = mul i32 %528, %524
  %530 = zext i32 %529 to i64
  %531 = getelementptr inbounds i8, ptr %203, i64 %530
  %532 = mul i32 %474, %525
  %533 = mul i32 %532, %526
  %534 = zext i32 %533 to i64
  %535 = getelementptr inbounds i8, ptr %531, i64 %534
  store ptr %535, ptr %248, align 8, !tbaa !54
  store i64 %328, ptr %249, align 8, !tbaa !55
  %536 = zext i32 %517 to i64
  %537 = getelementptr inbounds [4 x [3 x ptr]], ptr @__const._Z22convolution_1x1_direct10TensorDescPhPfS_PKa20ConvolutionParamSpecS_PKfjPvS_S7_S1_19ActivationParamSpec.kernel, i64 0, i64 %469, i64 %536
  %538 = load ptr, ptr %537, align 8, !tbaa !5
  call void %538(ptr noundef nonnull align 8 dereferenceable(184) %33)
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph404, %.preheader, %492, %493, %513
  %.0325 = phi i32 [ 1, %492 ], [ 1, %493 ], [ %520, %513 ], [ 1, %.preheader ], [ 1, %.lr.ph404 ]
  %539 = add i32 %.0325, %.0323408
  %540 = load i32, ptr %32, align 4, !tbaa !24
  %541 = icmp ult i32 %539, %540
  br i1 %541, label %480, label %._crit_edge.loopexit, !llvm.loop !67

.loopexit390:                                     ; preds = %._crit_edge414, %._crit_edge428, %.lr.ph433, %.preheader388.lr.ph, %.preheader391, %.preheader389
  %542 = add i32 %311, %.0338435
  %543 = load i32, ptr %22, align 4
  %544 = icmp ult i32 %542, %543
  br i1 %544, label %.lr.ph439, label %._crit_edge440, !llvm.loop !68

545:                                              ; preds = %._crit_edge448
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #10
  store float -1.000000e+00, ptr %36, align 4, !tbaa !41
  %546 = getelementptr inbounds i8, ptr %36, i64 4
  %547 = load float, ptr %146, align 4, !tbaa !41
  store float %547, ptr %546, align 4, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 92, ptr nonnull %37) #10
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(92) %37, ptr noundef nonnull align 8 dereferenceable(92) %10, i64 92, i1 false), !tbaa.struct !37
  store i32 10, ptr %37, align 4, !tbaa !39
  %548 = call noundef i32 @_Z12quantize_x8610TensorDescPKvPS_PvPfi(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %10, ptr noundef %.0324, ptr noundef nonnull %37, ptr noundef %11, ptr noundef nonnull %36, i32 noundef 0)
  %.not371 = icmp eq i32 %548, 0
  br i1 %.not371, label %559, label %549

549:                                              ; preds = %545
  %550 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %551 = trunc i64 %550 to i32
  %552 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %551)
  %553 = load ptr, ptr @stdout, align 8, !tbaa !5
  %554 = call i32 @fflush(ptr noundef %553)
  %555 = call ptr @ee2str(i32 noundef %548)
  %556 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, ptr noundef %555)
  %557 = load ptr, ptr @stdout, align 8, !tbaa !5
  %558 = call i32 @fflush(ptr noundef %557)
  call void @exit(i32 noundef 1) #11
  unreachable

559:                                              ; preds = %545
  %560 = load float, ptr %36, align 4, !tbaa !41
  store float %560, ptr %146, align 4, !tbaa !41
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %37) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #10
  br label %561

561:                                              ; preds = %559, %._crit_edge448
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #10
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %33) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #10
  ret i32 0
}

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z11tensor4dGet10TensorDescP8DataTypeP10DataFormatPjS4_S4_S4_(ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #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) #3

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

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

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

declare noundef i32 @_Z12quantize_x8610TensorDescPKvPS_PvPfi(ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_Z14tensorNumBytes10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8) local_unnamed_addr #8

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z17tensorNumElements10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8) local_unnamed_addr #2

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

declare noundef i32 @_Z21quantize_bias_offsetCPKv10TensorDesc8DataTypeS0_S1_PKfPv(ptr noundef, ptr noundef byval(%struct.TensorDesc) align 8, i32 noundef, ptr noundef, ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef, ptr noundef) local_unnamed_addr #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z26getActivatedBiasForPaddingPKf10TensorDesc8DataTypePv14ActivationModef(ptr noundef, ptr noundef byval(%struct.TensorDesc) align 8, i32 noundef, ptr noundef, i32 noundef, float noundef) local_unnamed_addr #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z21PaddingChannelNCHWC16PhS_10TensorDesc20ConvolutionParamSpec(ptr noundef, ptr noundef, ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef byval(%struct.ConvolutionParamSpec) align 8) local_unnamed_addr #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z22PaddingNCHWC8ToNCHWC16PhS_10TensorDesc20ConvolutionParamSpec(ptr noundef, ptr noundef, ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef byval(%struct.ConvolutionParamSpec) align 8) local_unnamed_addr #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z19PaddingNCHW2NCHWC16PhS_10TensorDesc20ConvolutionParamSpec(ptr noundef, ptr noundef, ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef byval(%struct.ConvolutionParamSpec) align 8) local_unnamed_addr #8

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umin.i32(i32, i32) #9

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umax.i32(i32, i32) #9

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"_ZTS10DataFormat", !7, i64 0}
!11 = !{!12, !13, i64 20}
!12 = !{!"_ZTS20ConvolutionParamSpec", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32, !13, i64 36, !13, i64 40, !13, i64 44, !13, i64 48, !13, i64 52, !13, i64 56, !13, i64 60, !13, i64 64, !13, i64 68, !14, i64 72, !15, i64 76, !15, i64 80, !7, i64 84, !16, i64 92, !13, i64 96, !13, i64 100, !13, i64 104}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTS15ConvolutionMode", !7, i64 0}
!15 = !{!"_ZTS14ActivationMode", !7, i64 0}
!16 = !{!"_ZTS9RoundMode", !7, i64 0}
!17 = !{!12, !13, i64 24}
!18 = !{!12, !13, i64 36}
!19 = !{!12, !13, i64 40}
!20 = !{!12, !13, i64 44}
!21 = !{!12, !13, i64 48}
!22 = !{!12, !13, i64 60}
!23 = !{!12, !13, i64 64}
!24 = !{!13, !13, i64 0}
!25 = !{!26, !27, i64 96}
!26 = !{!"_ZTS14ConvController", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !27, i64 48, !27, i64 56, !27, i64 64, !6, i64 72, !27, i64 80, !27, i64 88, !27, i64 96, !27, i64 104, !27, i64 112, !27, i64 120, !27, i64 128, !27, i64 136, !6, i64 144, !28, i64 152, !27, i64 160, !27, i64 168, !6, i64 176}
!27 = !{!"long", !7, i64 0}
!28 = !{!"bool", !7, i64 0}
!29 = !{!26, !27, i64 80}
!30 = !{!26, !27, i64 88}
!31 = !{!26, !27, i64 112}
!32 = !{!26, !27, i64 56}
!33 = !{!26, !27, i64 64}
!34 = !{!26, !6, i64 144}
!35 = !{!36, !36, i64 0}
!36 = !{!"_ZTS8DataType", !7, i64 0}
!37 = !{i64 0, i64 4, !35, i64 4, i64 4, !9, i64 8, i64 4, !24, i64 12, i64 80, !38}
!38 = !{!7, !7, i64 0}
!39 = !{!40, !36, i64 0}
!40 = !{!"_ZTS10TensorDesc", !36, i64 0, !10, i64 4, !13, i64 8, !7, i64 12}
!41 = !{!42, !42, i64 0}
!42 = !{!"float", !7, i64 0}
!43 = !{!44, !15, i64 0}
!44 = !{!"_ZTS19ActivationParamSpec", !15, i64 0, !7, i64 4}
!45 = distinct !{!45, !46}
!46 = !{!"llvm.loop.mustprogress"}
!47 = distinct !{!47, !46}
!48 = distinct !{!48, !46}
!49 = !{!26, !27, i64 104}
!50 = !{!26, !6, i64 40}
!51 = !{!26, !6, i64 0}
!52 = !{!26, !6, i64 16}
!53 = !{!26, !6, i64 24}
!54 = !{!26, !6, i64 8}
!55 = !{!26, !27, i64 48}
!56 = distinct !{!56, !46}
!57 = distinct !{!57, !46}
!58 = distinct !{!58, !46, !59}
!59 = !{!"llvm.loop.unswitch.partial.disable"}
!60 = distinct !{!60, !46, !61}
!61 = !{!"llvm.loop.peeled.count", i32 1}
!62 = distinct !{!62, !46, !61}
!63 = distinct !{!63, !46, !59}
!64 = distinct !{!64, !46, !59}
!65 = distinct !{!65, !46}
!66 = distinct !{!66, !46}
!67 = distinct !{!67, !46}
!68 = distinct !{!68, !46}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopFullUnrollPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimpleLoopUnswitchPass,SimplifyCFGPass