; LLVM IR from huawei-noah/bolt :: compute/tensor/src/cpu/x86/int8/avx512 (depthwise_convolution_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, 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._Z36depthwise_pointwise_convolution_int810TensorDescPhPfS_PKaS_S3_20ConvolutionParamSpecS_PKfS_S6_jPvS_S7_S1_19ActivationParamSpecS8_.kernel = external hidden unnamed_addr constant [3 x ptr], align 16
@__const._Z36depthwise_pointwise_convolution_int810TensorDescPhPfS_PKaS_S3_20ConvolutionParamSpecS_PKfS_S6_jPvS_S7_S1_19ActivationParamSpecS8_.hwSizes = external hidden unnamed_addr constant [3 x i32], align 4

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_Z36depthwise_pointwise_convolution_int810TensorDescPhPfS_PKaS_S3_20ConvolutionParamSpecS_PKfS_S6_jPvS_S7_S1_19ActivationParamSpecS8_(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.TensorDesc) align 8 %5, ptr noundef %6, ptr noundef byval(%struct.ConvolutionParamSpec) align 8 %7, ptr noundef byval(%struct.TensorDesc) align 8 %8, ptr noundef %9, ptr noundef byval(%struct.TensorDesc) align 8 %10, ptr noundef %11, i32 noundef %12, ptr noundef %13, ptr noundef byval(%struct.TensorDesc) align 8 %14, ptr noundef %15, ptr noundef %16, ptr noundef byval(%struct.ActivationParamSpec) align 8 %17, ptr noundef byval(%struct.ActivationParamSpec) align 8 %18) #0 {
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca i32, align 4
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %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 i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca %struct.TensorDesc, align 8
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca %struct.TensorDesc, align 8
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca %struct.TensorDesc, align 8
  %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 i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca i32, align 4
  %72 = alloca i32, align 4
  %73 = alloca %struct.ConvController, align 8
  %74 = alloca ptr, align 8
  %75 = alloca ptr, align 8
  %76 = alloca [3 x ptr], align 16
  %77 = alloca [3 x i32], align 4
  %78 = alloca ptr, align 8
  %79 = alloca ptr, align 8
  %80 = alloca ptr, align 8
  %81 = alloca %struct.TensorDesc, align 4
  %82 = alloca i32, align 4
  %83 = alloca %struct.TensorDesc, align 8
  %84 = alloca i32, align 4
  %85 = alloca %struct.TensorDesc, align 8
  %86 = alloca %struct.TensorDesc, align 8
  %87 = alloca ptr, align 8
  %88 = alloca float, align 4
  %89 = alloca ptr, align 8
  %90 = alloca i32, align 4
  %91 = alloca %struct.TensorDesc, align 8
  %92 = alloca %struct.TensorDesc, align 8
  %93 = alloca i32, align 4
  %94 = alloca i32, align 4
  %95 = alloca ptr, align 8
  %96 = alloca i64, align 8
  %97 = alloca i32, align 4
  %98 = alloca i32, align 4
  %99 = alloca i32, align 4
  %100 = alloca i32, align 4
  %101 = alloca ptr, align 8
  %102 = alloca i32, align 4
  %103 = alloca ptr, align 8
  %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 i32, align 4
  store ptr %1, ptr %20, align 8, !tbaa !5
  store ptr %2, ptr %21, align 8, !tbaa !5
  store ptr %4, ptr %22, align 8, !tbaa !5
  store ptr %6, ptr %23, align 8, !tbaa !5
  store ptr %9, ptr %24, align 8, !tbaa !5
  store ptr %11, ptr %25, align 8, !tbaa !5
  store i32 %12, ptr %26, align 4, !tbaa !9
  store ptr %13, ptr %27, align 8, !tbaa !5
  store ptr %15, ptr %28, align 8, !tbaa !5
  store ptr %16, ptr %29, align 8, !tbaa !5
  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.lifetime.start.p0(i64 4, ptr %42) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %49, ptr align 8 %0, i64 92, i1 false), !tbaa.struct !11
  %115 = call noundef i32 @_Z14tensor4dGetI3210TensorDescP8DataTypeP10DataFormatPiS4_S4_S4_(ptr noundef byval(%struct.TensorDesc) align 8 %49, ptr noundef %30, ptr noundef %33, ptr noundef %36, ptr noundef %37, ptr noundef %38, ptr noundef %39)
  store i32 %115, ptr %48, align 4, !tbaa !17
  %116 = load i32, ptr %48, align 4, !tbaa !17
  %117 = icmp ne i32 %116, 0
  br i1 %117, label %118, label %130

118:                                              ; preds = %19
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #8
  %119 = call i64 (i64, ...) @syscall(i64 noundef 186) #8
  %120 = trunc i64 %119 to i32
  store i32 %120, ptr %50, align 4, !tbaa !9
  %121 = load i32, ptr %50, align 4, !tbaa !9
  %122 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %121)
  %123 = load ptr, ptr @stdout, align 8, !tbaa !5
  %124 = call i32 @fflush(ptr noundef %123)
  %125 = load i32, ptr %48, align 4, !tbaa !17
  %126 = call ptr @ee2str(i32 noundef %125)
  %127 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %126)
  %128 = load ptr, ptr @stdout, align 8, !tbaa !5
  %129 = call i32 @fflush(ptr noundef %128)
  call void @exit(i32 noundef 1) #9
  unreachable

130:                                              ; preds = %19
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %52, ptr align 8 %3, i64 92, i1 false), !tbaa.struct !11
  %131 = call noundef i32 @_Z14tensor4dGetI3210TensorDescP8DataTypeP10DataFormatPiS4_S4_S4_(ptr noundef byval(%struct.TensorDesc) align 8 %52, ptr noundef %31, ptr noundef %34, ptr noundef %40, ptr noundef %41, ptr noundef %42, ptr noundef %43)
  store i32 %131, ptr %51, align 4, !tbaa !17
  %132 = load i32, ptr %51, align 4, !tbaa !17
  %133 = icmp ne i32 %132, 0
  br i1 %133, label %134, label %146

134:                                              ; preds = %130
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #8
  %135 = call i64 (i64, ...) @syscall(i64 noundef 186) #8
  %136 = trunc i64 %135 to i32
  store i32 %136, ptr %53, align 4, !tbaa !9
  %137 = load i32, ptr %53, align 4, !tbaa !9
  %138 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %137)
  %139 = load ptr, ptr @stdout, align 8, !tbaa !5
  %140 = call i32 @fflush(ptr noundef %139)
  %141 = load i32, ptr %51, align 4, !tbaa !17
  %142 = call ptr @ee2str(i32 noundef %141)
  %143 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %142)
  %144 = load ptr, ptr @stdout, align 8, !tbaa !5
  %145 = call i32 @fflush(ptr noundef %144)
  call void @exit(i32 noundef 1) #9
  unreachable

146:                                              ; preds = %130
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %55, ptr align 8 %14, i64 92, i1 false), !tbaa.struct !11
  %147 = call noundef i32 @_Z14tensor4dGetI3210TensorDescP8DataTypeP10DataFormatPiS4_S4_S4_(ptr noundef byval(%struct.TensorDesc) align 8 %55, ptr noundef %32, ptr noundef %35, ptr noundef %44, ptr noundef %45, ptr noundef %46, ptr noundef %47)
  store i32 %147, ptr %54, align 4, !tbaa !17
  %148 = load i32, ptr %54, align 4, !tbaa !17
  %149 = icmp ne i32 %148, 0
  br i1 %149, label %150, label %162

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

162:                                              ; preds = %146
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #8
  %163 = load i32, ptr %33, align 4, !tbaa !14
  %164 = icmp ne i32 %163, 41
  br i1 %164, label %169, label %165

165:                                              ; preds = %162
  %166 = load i32, ptr %37, align 4, !tbaa !9
  %167 = srem i32 %166, 16
  %168 = icmp ne i32 %167, 0
  br i1 %168, label %169, label %185

169:                                              ; preds = %165, %162
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #8
  store i32 2, ptr %57, align 4, !tbaa !17
  %170 = load i32, ptr %57, align 4, !tbaa !17
  %171 = icmp ne i32 %170, 0
  br i1 %171, label %172, label %184

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

184:                                              ; preds = %169
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #8
  br label %185

185:                                              ; preds = %184, %165
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #8
  %186 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %7, i32 0, i32 5
  %187 = load i32, ptr %186, align 4, !tbaa !19
  store i32 %187, ptr %59, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #8
  %188 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %7, i32 0, i32 6
  %189 = load i32, ptr %188, align 8, !tbaa !24
  store i32 %189, ptr %60, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #8
  %190 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %7, i32 0, i32 9
  %191 = load i32, ptr %190, align 4, !tbaa !25
  store i32 %191, ptr %61, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #8
  %192 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %7, i32 0, i32 10
  %193 = load i32, ptr %192, align 8, !tbaa !26
  store i32 %193, ptr %62, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #8
  %194 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %7, i32 0, i32 11
  %195 = load i32, ptr %194, align 4, !tbaa !27
  store i32 %195, ptr %63, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #8
  %196 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %7, i32 0, i32 12
  %197 = load i32, ptr %196, align 8, !tbaa !28
  store i32 %197, ptr %64, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #8
  %198 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %7, i32 0, i32 15
  %199 = load i32, ptr %198, align 4, !tbaa !29
  store i32 %199, ptr %65, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #8
  %200 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %7, i32 0, i32 16
  %201 = load i32, ptr %200, align 8, !tbaa !30
  store i32 %201, ptr %66, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #8
  %202 = load i32, ptr %42, align 4, !tbaa !9
  %203 = sub nsw i32 %202, 1
  %204 = load i32, ptr %65, align 4, !tbaa !9
  %205 = mul nsw i32 %203, %204
  %206 = add nsw i32 %205, 1
  store i32 %206, ptr %67, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #8
  %207 = load i32, ptr %43, align 4, !tbaa !9
  %208 = sub nsw i32 %207, 1
  %209 = load i32, ptr %66, align 4, !tbaa !9
  %210 = mul nsw i32 %208, %209
  %211 = add nsw i32 %210, 1
  store i32 %211, ptr %68, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #8
  %212 = load i32, ptr %46, align 4, !tbaa !9
  %213 = load i32, ptr %47, align 4, !tbaa !9
  %214 = mul nsw i32 %212, %213
  store i32 %214, ptr %69, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #8
  %215 = load i32, ptr %42, align 4, !tbaa !9
  %216 = load i32, ptr %43, align 4, !tbaa !9
  %217 = mul nsw i32 %215, %216
  store i32 %217, ptr %70, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #8
  %218 = load i32, ptr %39, align 4, !tbaa !9
  %219 = load i32, ptr %63, align 4, !tbaa !9
  %220 = add nsw i32 %218, %219
  %221 = load i32, ptr %64, align 4, !tbaa !9
  %222 = add nsw i32 %220, %221
  store i32 %222, ptr %71, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #8
  %223 = load i32, ptr %38, align 4, !tbaa !9
  %224 = load i32, ptr %61, align 4, !tbaa !9
  %225 = add nsw i32 %223, %224
  %226 = load i32, ptr %62, align 4, !tbaa !9
  %227 = add nsw i32 %225, %226
  store i32 %227, ptr %72, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 136, ptr %73) #8
  %228 = load i32, ptr %46, align 4, !tbaa !9
  %229 = load i32, ptr %47, align 4, !tbaa !9
  %230 = mul nsw i32 %228, %229
  %231 = mul nsw i32 %230, 16
  %232 = mul nsw i32 %231, 4
  %233 = sext i32 %232 to i64
  %234 = getelementptr inbounds %struct.ConvController, ptr %73, i32 0, i32 10
  store i64 %233, ptr %234, align 8, !tbaa !31
  %235 = load i32, ptr %72, align 4, !tbaa !9
  %236 = load i32, ptr %71, align 4, !tbaa !9
  %237 = mul nsw i32 %235, %236
  %238 = mul nsw i32 %237, 16
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds %struct.ConvController, ptr %73, i32 0, i32 12
  store i64 %239, ptr %240, align 8, !tbaa !34
  %241 = load i32, ptr %43, align 4, !tbaa !9
  %242 = sext i32 %241 to i64
  %243 = getelementptr inbounds %struct.ConvController, ptr %73, i32 0, i32 7
  store i64 %242, ptr %243, align 8, !tbaa !35
  %244 = load i32, ptr %42, align 4, !tbaa !9
  %245 = sext i32 %244 to i64
  %246 = getelementptr inbounds %struct.ConvController, ptr %73, i32 0, i32 8
  store i64 %245, ptr %246, align 8, !tbaa !36
  %247 = getelementptr inbounds %struct.ConvController, ptr %73, i32 0, i32 16
  store ptr null, ptr %247, align 8, !tbaa !37
  %248 = load i32, ptr %60, align 4, !tbaa !9
  %249 = sext i32 %248 to i64
  %250 = getelementptr inbounds %struct.ConvController, ptr %73, i32 0, i32 14
  store i64 %249, ptr %250, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #8
  %251 = load ptr, ptr %27, align 8, !tbaa !5
  store ptr %251, ptr %74, align 8, !tbaa !5
  %252 = load ptr, ptr %23, align 8, !tbaa !5
  %253 = icmp eq ptr %252, null
  br i1 %253, label %254, label %256

254:                                              ; preds = %185
  %255 = load ptr, ptr %28, align 8, !tbaa !5
  store ptr %255, ptr %74, align 8, !tbaa !5
  br label %256

256:                                              ; preds = %254, %185
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #8
  %257 = load ptr, ptr %74, align 8, !tbaa !5
  store ptr %257, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %76) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %76, ptr align 16 @__const._Z36depthwise_pointwise_convolution_int810TensorDescPhPfS_PKaS_S3_20ConvolutionParamSpecS_PKfS_S6_jPvS_S7_S1_19ActivationParamSpecS8_.kernel, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %77) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %77, ptr align 4 @__const._Z36depthwise_pointwise_convolution_int810TensorDescPhPfS_PKaS_S3_20ConvolutionParamSpecS_PKfS_S6_jPvS_S7_S1_19ActivationParamSpecS8_.hwSizes, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #8
  %258 = load ptr, ptr %29, align 8, !tbaa !5
  store ptr %258, ptr %78, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #8
  %259 = load ptr, ptr %29, align 8, !tbaa !5
  %260 = getelementptr inbounds float, ptr %259, i64 1
  store ptr %260, ptr %79, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #8
  %261 = load ptr, ptr %29, align 8, !tbaa !5
  %262 = getelementptr inbounds float, ptr %261, i64 2
  store ptr %262, ptr %80, align 8, !tbaa !5
  %263 = load i32, ptr %30, align 4, !tbaa !12
  %264 = icmp ne i32 %263, 10
  br i1 %264, label %265, label %291

265:                                              ; preds = %256
  call void @llvm.lifetime.start.p0(i64 92, ptr %81) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %81, ptr align 8 %0, i64 92, i1 false), !tbaa.struct !11
  %266 = getelementptr inbounds %struct.TensorDesc, ptr %81, i32 0, i32 0
  store i32 10, ptr %266, align 4, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %83, ptr align 8 %0, i64 92, i1 false), !tbaa.struct !11
  %267 = load ptr, ptr %20, align 8, !tbaa !5
  %268 = load ptr, ptr %27, align 8, !tbaa !5
  %269 = load ptr, ptr %78, align 8, !tbaa !5
  %270 = call noundef i32 @_Z12quantize_x8610TensorDescPKvPS_PvPfi(ptr noundef byval(%struct.TensorDesc) align 8 %83, ptr noundef %267, ptr noundef %81, ptr noundef %268, ptr noundef %269, i32 noundef 0)
  store i32 %270, ptr %82, align 4, !tbaa !17
  %271 = load i32, ptr %82, align 4, !tbaa !17
  %272 = icmp ne i32 %271, 0
  br i1 %272, label %273, label %285

273:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #8
  %274 = call i64 (i64, ...) @syscall(i64 noundef 186) #8
  %275 = trunc i64 %274 to i32
  store i32 %275, ptr %84, align 4, !tbaa !9
  %276 = load i32, ptr %84, align 4, !tbaa !9
  %277 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %276)
  %278 = load ptr, ptr @stdout, align 8, !tbaa !5
  %279 = call i32 @fflush(ptr noundef %278)
  %280 = load i32, ptr %82, align 4, !tbaa !17
  %281 = call ptr @ee2str(i32 noundef %280)
  %282 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %281)
  %283 = load ptr, ptr @stdout, align 8, !tbaa !5
  %284 = call i32 @fflush(ptr noundef %283)
  call void @exit(i32 noundef 1) #9
  unreachable

285:                                              ; preds = %265
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #8
  %286 = load ptr, ptr %27, align 8, !tbaa !5
  store ptr %286, ptr %20, align 8, !tbaa !5
  %287 = load ptr, ptr %27, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %85, ptr align 4 %81, i64 92, i1 false), !tbaa.struct !11
  %288 = call noundef i32 @_Z14tensorNumBytes10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8 %85)
  %289 = zext i32 %288 to i64
  %290 = getelementptr inbounds i8, ptr %287, i64 %289
  store ptr %290, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 92, ptr %81) #8
  br label %291

291:                                              ; preds = %285, %256
  %292 = load ptr, ptr %78, align 8, !tbaa !5
  %293 = getelementptr inbounds float, ptr %292, i64 0
  %294 = load float, ptr %293, align 4, !tbaa !41
  %295 = load ptr, ptr %80, align 8, !tbaa !5
  %296 = getelementptr inbounds float, ptr %295, i64 0
  %297 = load float, ptr %296, align 4, !tbaa !41
  %298 = fmul float %294, %297
  %299 = load ptr, ptr %79, align 8, !tbaa !5
  store float %298, ptr %299, align 4, !tbaa !41
  %300 = load i32, ptr %32, align 4, !tbaa !12
  %301 = icmp ne i32 %300, 6
  br i1 %301, label %302, label %314

302:                                              ; preds = %291
  %303 = load i32, ptr %32, align 4, !tbaa !12
  %304 = icmp ne i32 %303, 3
  br i1 %304, label %305, label %314

305:                                              ; preds = %302
  %306 = load ptr, ptr %27, align 8, !tbaa !5
  store ptr %306, ptr %75, align 8, !tbaa !5
  %307 = load ptr, ptr %27, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %86, ptr align 8 %14, i64 92, i1 false), !tbaa.struct !11
  %308 = call noundef i32 @_Z17tensorNumElements10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8 %86)
  %309 = call noundef i32 @_Z7bytesOf8DataType(i32 noundef 3)
  %310 = mul i32 %308, %309
  %311 = zext i32 %310 to i64
  %312 = getelementptr inbounds i8, ptr %307, i64 %311
  store ptr %312, ptr %27, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.TensorDesc, ptr %14, i32 0, i32 0
  store i32 3, ptr %313, align 8, !tbaa !39
  br label %314

314:                                              ; preds = %305, %302, %291
  %315 = load ptr, ptr %21, align 8, !tbaa !5
  %316 = icmp ne ptr %315, null
  br i1 %316, label %317, label %319

317:                                              ; preds = %314
  %318 = getelementptr inbounds %struct.TensorDesc, ptr %14, i32 0, i32 0
  store i32 6, ptr %318, align 8, !tbaa !39
  br label %319

319:                                              ; preds = %317, %314
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #8
  store ptr null, ptr %87, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #8
  store float 0.000000e+00, ptr %88, align 4, !tbaa !41
  %320 = load ptr, ptr %29, align 8, !tbaa !5
  %321 = icmp ne ptr %320, null
  br i1 %321, label %322, label %330

322:                                              ; preds = %319
  %323 = getelementptr inbounds %struct.TensorDesc, ptr %14, i32 0, i32 0
  %324 = load i32, ptr %323, align 8, !tbaa !39
  %325 = icmp eq i32 %324, 6
  br i1 %325, label %326, label %330

326:                                              ; preds = %322
  %327 = load ptr, ptr %79, align 8, !tbaa !5
  %328 = load float, ptr %327, align 4, !tbaa !41
  %329 = fdiv float 1.000000e+00, %328
  store float %329, ptr %88, align 4, !tbaa !41
  store ptr %88, ptr %87, align 8, !tbaa !5
  br label %330

330:                                              ; preds = %326, %322, %319
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #8
  %331 = load ptr, ptr %27, align 8, !tbaa !5
  store ptr %331, ptr %89, align 8, !tbaa !5
  %332 = load ptr, ptr %27, align 8, !tbaa !5
  %333 = load i32, ptr %45, align 4, !tbaa !9
  %334 = call noundef i32 @_Z7bytesOf8DataType(i32 noundef 3)
  %335 = mul i32 %333, %334
  %336 = zext i32 %335 to i64
  %337 = getelementptr inbounds i8, ptr %332, i64 %336
  store ptr %337, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #8
  %338 = load ptr, ptr %24, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %91, ptr align 8 %8, i64 92, i1 false), !tbaa.struct !11
  %339 = load ptr, ptr %22, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %92, ptr align 8 %3, i64 92, i1 false), !tbaa.struct !11
  %340 = load ptr, ptr %79, align 8, !tbaa !5
  %341 = load ptr, ptr %89, align 8, !tbaa !5
  %342 = call noundef i32 @_Z21quantize_bias_offsetCPKv10TensorDesc8DataTypeS0_S1_PKfPv(ptr noundef %338, ptr noundef byval(%struct.TensorDesc) align 8 %91, i32 noundef 3, ptr noundef %339, ptr noundef byval(%struct.TensorDesc) align 8 %92, ptr noundef %340, ptr noundef %341)
  store i32 %342, ptr %90, align 4, !tbaa !17
  %343 = load i32, ptr %90, align 4, !tbaa !17
  %344 = icmp ne i32 %343, 0
  br i1 %344, label %345, label %357

345:                                              ; preds = %330
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #8
  %346 = call i64 (i64, ...) @syscall(i64 noundef 186) #8
  %347 = trunc i64 %346 to i32
  store i32 %347, ptr %93, align 4, !tbaa !9
  %348 = load i32, ptr %93, align 4, !tbaa !9
  %349 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %348)
  %350 = load ptr, ptr @stdout, align 8, !tbaa !5
  %351 = call i32 @fflush(ptr noundef %350)
  %352 = load i32, ptr %90, align 4, !tbaa !17
  %353 = call ptr @ee2str(i32 noundef %352)
  %354 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %353)
  %355 = load ptr, ptr @stdout, align 8, !tbaa !5
  %356 = call i32 @fflush(ptr noundef %355)
  call void @exit(i32 noundef 1) #9
  unreachable

357:                                              ; preds = %330
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #8
  %358 = load i32, ptr %45, align 4, !tbaa !9
  %359 = mul nsw i32 %358, 4
  %360 = load ptr, ptr %22, align 8, !tbaa !5
  %361 = sext i32 %359 to i64
  %362 = getelementptr inbounds i8, ptr %360, i64 %361
  store ptr %362, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #8
  %363 = load i32, ptr %42, align 4, !tbaa !9
  %364 = load i32, ptr %43, align 4, !tbaa !9
  %365 = mul nsw i32 %363, %364
  %366 = add nsw i32 %365, 3
  %367 = sdiv i32 %366, 4
  %368 = mul nsw i32 %367, 4
  store i32 %368, ptr %94, align 4, !tbaa !9
  %369 = load i32, ptr %94, align 4, !tbaa !9
  %370 = udiv i32 %369, 4
  %371 = zext i32 %370 to i64
  %372 = getelementptr inbounds %struct.ConvController, ptr %73, i32 0, i32 15
  store i64 %371, ptr %372, align 8, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #8
  %373 = load ptr, ptr %27, align 8, !tbaa !5
  store ptr %373, ptr %95, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #8
  store i64 0, ptr %96, align 8, !tbaa !44
  %374 = load ptr, ptr %21, align 8, !tbaa !5
  %375 = icmp ne ptr %374, null
  %376 = zext i1 %375 to i32
  %377 = shl i32 %376, 1
  %378 = sext i32 %377 to i64
  %379 = load i64, ptr %96, align 8, !tbaa !44
  %380 = or i64 %379, %378
  store i64 %380, ptr %96, align 8, !tbaa !44
  %381 = getelementptr inbounds %struct.ActivationParamSpec, ptr %17, i32 0, i32 0
  %382 = load i32, ptr %381, align 8, !tbaa !45
  %383 = shl i32 %382, 2
  %384 = zext i32 %383 to i64
  %385 = load i64, ptr %96, align 8, !tbaa !44
  %386 = or i64 %385, %384
  store i64 %386, ptr %96, align 8, !tbaa !44
  %387 = load ptr, ptr %87, align 8, !tbaa !5
  %388 = getelementptr inbounds %struct.ConvController, ptr %73, i32 0, i32 16
  store ptr %387, ptr %388, align 8, !tbaa !37
  %389 = load i64, ptr %96, align 8, !tbaa !44
  %390 = getelementptr inbounds %struct.ConvController, ptr %73, i32 0, i32 11
  store i64 %389, ptr %390, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #8
  store i32 0, ptr %97, align 4, !tbaa !9
  br label %391

391:                                              ; preds = %611, %357
  %392 = load i32, ptr %97, align 4, !tbaa !9
  %393 = load i32, ptr %36, align 4, !tbaa !9
  %394 = icmp slt i32 %392, %393
  br i1 %394, label %396, label %395

395:                                              ; preds = %391
  store i32 2, ptr %98, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #8
  br label %614

396:                                              ; preds = %391
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #8
  store i32 16, 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 %397

397:                                              ; preds = %606, %396
  %398 = load i32, ptr %100, align 4, !tbaa !9
  %399 = load i32, ptr %45, align 4, !tbaa !9
  %400 = icmp slt i32 %398, %399
  br i1 %400, label %402, label %401

401:                                              ; preds = %397
  store i32 5, ptr %98, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #8
  br label %610

402:                                              ; preds = %397
  %403 = load ptr, ptr %89, align 8, !tbaa !5
  %404 = load i32, ptr %100, align 4, !tbaa !9
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds i32, ptr %403, i64 %405
  %407 = getelementptr inbounds %struct.ConvController, ptr %73, i32 0, i32 5
  store ptr %406, ptr %407, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #8
  %408 = load ptr, ptr %75, align 8, !tbaa !5
  %409 = load i32, ptr %97, align 4, !tbaa !9
  %410 = load i32, ptr %45, align 4, !tbaa !9
  %411 = mul nsw i32 %409, %410
  %412 = load i32, ptr %100, align 4, !tbaa !9
  %413 = add nsw i32 %411, %412
  %414 = load i32, ptr %46, align 4, !tbaa !9
  %415 = mul nsw i32 %413, %414
  %416 = load i32, ptr %47, align 4, !tbaa !9
  %417 = mul nsw i32 %415, %416
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds float, ptr %408, i64 %418
  store ptr %419, ptr %101, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #8
  store i32 0, ptr %102, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #8
  %420 = load ptr, ptr %20, align 8, !tbaa !5
  %421 = load i32, ptr %97, align 4, !tbaa !9
  %422 = load i32, ptr %37, align 4, !tbaa !9
  %423 = mul nsw i32 %421, %422
  %424 = load i32, ptr %100, align 4, !tbaa !9
  %425 = add nsw i32 %423, %424
  %426 = load i32, ptr %38, align 4, !tbaa !9
  %427 = mul nsw i32 %425, %426
  %428 = load i32, ptr %39, align 4, !tbaa !9
  %429 = mul nsw i32 %427, %428
  %430 = sext i32 %429 to i64
  %431 = getelementptr inbounds i8, ptr %420, i64 %430
  store ptr %431, ptr %103, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #8
  store i32 0, ptr %104, align 4, !tbaa !9
  br label %432

432:                                              ; preds = %601, %402
  %433 = load i32, ptr %104, align 4, !tbaa !9
  %434 = load i32, ptr %69, align 4, !tbaa !9
  %435 = icmp slt i32 %433, %434
  br i1 %435, label %437, label %436

436:                                              ; preds = %432
  store i32 8, ptr %98, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #8
  br label %605

437:                                              ; preds = %432
  %438 = load i32, ptr %69, align 4, !tbaa !9
  %439 = load i32, ptr %104, align 4, !tbaa !9
  %440 = sub nsw i32 %438, %439
  %441 = icmp slt i32 %440, 16
  br i1 %441, label %442, label %446

442:                                              ; preds = %437
  %443 = load i32, ptr %69, align 4, !tbaa !9
  %444 = load i32, ptr %104, align 4, !tbaa !9
  %445 = sub nsw i32 %443, %444
  br label %447

446:                                              ; preds = %437
  br label %447

447:                                              ; preds = %446, %442
  %448 = phi i32 [ %445, %442 ], [ 16, %446 ]
  store i32 %448, ptr %102, align 4, !tbaa !9
  %449 = load i32, ptr %102, align 4, !tbaa !9
  %450 = ashr i32 %449, 3
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds [3 x i32], ptr %77, i64 0, i64 %451
  %453 = load i32, ptr %452, align 4, !tbaa !9
  store i32 %453, ptr %102, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #8
  %454 = load i32, ptr %104, align 4, !tbaa !9
  %455 = load i32, ptr %47, align 4, !tbaa !9
  %456 = sdiv i32 %454, %455
  store i32 %456, ptr %105, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #8
  %457 = load i32, ptr %104, align 4, !tbaa !9
  %458 = load i32, ptr %47, align 4, !tbaa !9
  %459 = srem i32 %457, %458
  store i32 %459, ptr %106, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %107) #8
  %460 = load i32, ptr %105, align 4, !tbaa !9
  %461 = load i32, ptr %59, align 4, !tbaa !9
  %462 = mul nsw i32 %460, %461
  store i32 %462, ptr %107, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #8
  %463 = load i32, ptr %106, align 4, !tbaa !9
  %464 = load i32, ptr %60, align 4, !tbaa !9
  %465 = mul nsw i32 %463, %464
  store i32 %465, ptr %108, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #8
  store i32 0, ptr %109, align 4, !tbaa !9
  br label %466

466:                                              ; preds = %568, %447
  %467 = load i32, ptr %109, align 4, !tbaa !9
  %468 = load i32, ptr %94, align 4, !tbaa !9
  %469 = icmp ult i32 %467, %468
  br i1 %469, label %471, label %470

470:                                              ; preds = %466
  store i32 11, ptr %98, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #8
  br label %571

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

472:                                              ; preds = %564, %471
  %473 = load i32, ptr %110, align 4, !tbaa !9
  %474 = load i32, ptr %102, align 4, !tbaa !9
  %475 = icmp slt i32 %473, %474
  br i1 %475, label %477, label %476

476:                                              ; preds = %472
  store i32 14, ptr %98, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #8
  br label %567

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

478:                                              ; preds = %560, %477
  %479 = load i32, ptr %111, align 4, !tbaa !9
  %480 = icmp slt i32 %479, 16
  br i1 %480, label %482, label %481

481:                                              ; preds = %478
  store i32 17, ptr %98, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #8
  br label %563

482:                                              ; preds = %478
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #8
  store i32 0, ptr %112, align 4, !tbaa !9
  br label %483

483:                                              ; preds = %556, %482
  %484 = load i32, ptr %112, align 4, !tbaa !9
  %485 = icmp slt i32 %484, 4
  br i1 %485, label %487, label %486

486:                                              ; preds = %483
  store i32 20, ptr %98, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #8
  br label %559

487:                                              ; preds = %483
  call void @llvm.lifetime.start.p0(i64 4, ptr %113) #8
  %488 = load i32, ptr %112, align 4, !tbaa !9
  %489 = load i32, ptr %111, align 4, !tbaa !9
  %490 = mul nsw i32 %489, 4
  %491 = add nsw i32 %488, %490
  %492 = load i32, ptr %110, align 4, !tbaa !9
  %493 = mul nsw i32 %492, 4
  %494 = mul nsw i32 %493, 16
  %495 = add nsw i32 %491, %494
  %496 = load i32, ptr %109, align 4, !tbaa !9
  %497 = mul i32 %496, 16
  %498 = load i32, ptr %102, align 4, !tbaa !9
  %499 = mul i32 %497, %498
  %500 = add i32 %495, %499
  store i32 %500, ptr %113, align 4, !tbaa !9
  %501 = load i32, ptr %112, align 4, !tbaa !9
  %502 = load i32, ptr %109, align 4, !tbaa !9
  %503 = add i32 %501, %502
  %504 = load i32, ptr %70, align 4, !tbaa !9
  %505 = icmp slt i32 %503, %504
  br i1 %505, label %506, label %550

506:                                              ; preds = %487
  %507 = load i32, ptr %104, align 4, !tbaa !9
  %508 = load i32, ptr %110, align 4, !tbaa !9
  %509 = add nsw i32 %507, %508
  %510 = load i32, ptr %47, align 4, !tbaa !9
  %511 = sdiv i32 %509, %510
  %512 = load i32, ptr %59, align 4, !tbaa !9
  %513 = mul nsw i32 %511, %512
  %514 = load i32, ptr %109, align 4, !tbaa !9
  %515 = load i32, ptr %112, align 4, !tbaa !9
  %516 = add i32 %514, %515
  %517 = load i32, ptr %43, align 4, !tbaa !9
  %518 = udiv i32 %516, %517
  %519 = add i32 %513, %518
  store i32 %519, ptr %107, align 4, !tbaa !9
  %520 = load i32, ptr %104, align 4, !tbaa !9
  %521 = load i32, ptr %110, align 4, !tbaa !9
  %522 = add nsw i32 %520, %521
  %523 = load i32, ptr %47, align 4, !tbaa !9
  %524 = srem i32 %522, %523
  %525 = load i32, ptr %60, align 4, !tbaa !9
  %526 = mul nsw i32 %524, %525
  %527 = load i32, ptr %109, align 4, !tbaa !9
  %528 = load i32, ptr %112, align 4, !tbaa !9
  %529 = add i32 %527, %528
  %530 = load i32, ptr %43, align 4, !tbaa !9
  %531 = urem i32 %529, %530
  %532 = add i32 %526, %531
  store i32 %532, ptr %108, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %114) #8
  %533 = load i32, ptr %111, align 4, !tbaa !9
  %534 = load i32, ptr %107, align 4, !tbaa !9
  %535 = load i32, ptr %39, align 4, !tbaa !9
  %536 = mul nsw i32 %534, %535
  %537 = load i32, ptr %108, align 4, !tbaa !9
  %538 = add nsw i32 %536, %537
  %539 = mul nsw i32 %538, 16
  %540 = add nsw i32 %533, %539
  store i32 %540, ptr %114, align 4, !tbaa !9
  %541 = load ptr, ptr %103, align 8, !tbaa !5
  %542 = load i32, ptr %114, align 4, !tbaa !9
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds i8, ptr %541, i64 %543
  %545 = load i8, ptr %544, align 1, !tbaa !16
  %546 = load ptr, ptr %95, align 8, !tbaa !5
  %547 = load i32, ptr %113, align 4, !tbaa !9
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds i8, ptr %546, i64 %548
  store i8 %545, ptr %549, align 1, !tbaa !16
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #8
  br label %555

550:                                              ; preds = %487
  %551 = load ptr, ptr %95, align 8, !tbaa !5
  %552 = load i32, ptr %113, align 4, !tbaa !9
  %553 = sext i32 %552 to i64
  %554 = getelementptr inbounds i8, ptr %551, i64 %553
  store i8 0, ptr %554, align 1, !tbaa !16
  br label %555

555:                                              ; preds = %550, %506
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #8
  br label %556

556:                                              ; preds = %555
  %557 = load i32, ptr %112, align 4, !tbaa !9
  %558 = add nsw i32 %557, 1
  store i32 %558, ptr %112, align 4, !tbaa !9
  br label %483, !llvm.loop !49

559:                                              ; preds = %486
  br label %560

560:                                              ; preds = %559
  %561 = load i32, ptr %111, align 4, !tbaa !9
  %562 = add nsw i32 %561, 1
  store i32 %562, ptr %111, align 4, !tbaa !9
  br label %478, !llvm.loop !51

563:                                              ; preds = %481
  br label %564

564:                                              ; preds = %563
  %565 = load i32, ptr %110, align 4, !tbaa !9
  %566 = add nsw i32 %565, 1
  store i32 %566, ptr %110, align 4, !tbaa !9
  br label %472, !llvm.loop !52

567:                                              ; preds = %476
  br label %568

568:                                              ; preds = %567
  %569 = load i32, ptr %109, align 4, !tbaa !9
  %570 = add i32 %569, 4
  store i32 %570, ptr %109, align 4, !tbaa !9
  br label %466, !llvm.loop !53

571:                                              ; preds = %470
  %572 = load ptr, ptr %95, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.ConvController, ptr %73, i32 0, i32 0
  store ptr %572, ptr %573, align 8, !tbaa !54
  %574 = load ptr, ptr %101, align 8, !tbaa !5
  %575 = load i32, ptr %105, align 4, !tbaa !9
  %576 = load i32, ptr %47, align 4, !tbaa !9
  %577 = mul nsw i32 %575, %576
  %578 = load i32, ptr %106, align 4, !tbaa !9
  %579 = add nsw i32 %577, %578
  %580 = mul nsw i32 %579, 16
  %581 = sext i32 %580 to i64
  %582 = getelementptr inbounds float, ptr %574, i64 %581
  %583 = getelementptr inbounds %struct.ConvController, ptr %73, i32 0, i32 2
  store ptr %582, ptr %583, align 8, !tbaa !55
  %584 = load ptr, ptr %22, align 8, !tbaa !5
  %585 = load i32, ptr %100, align 4, !tbaa !9
  %586 = load i32, ptr %94, align 4, !tbaa !9
  %587 = mul i32 %585, %586
  %588 = zext i32 %587 to i64
  %589 = getelementptr inbounds i8, ptr %584, i64 %588
  %590 = getelementptr inbounds %struct.ConvController, ptr %73, i32 0, i32 1
  store ptr %589, ptr %590, align 8, !tbaa !56
  %591 = load i32, ptr %102, align 4, !tbaa !9
  %592 = mul nsw i32 %591, 16
  %593 = mul nsw i32 %592, 4
  %594 = sext i32 %593 to i64
  %595 = getelementptr inbounds %struct.ConvController, ptr %73, i32 0, i32 13
  store i64 %594, ptr %595, align 8, !tbaa !57
  %596 = load i32, ptr %102, align 4, !tbaa !9
  %597 = ashr i32 %596, 3
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds [3 x ptr], ptr %76, i64 0, i64 %598
  %600 = load ptr, ptr %599, align 8, !tbaa !5
  call void %600(ptr noundef nonnull align 8 dereferenceable(136) %73)
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #8
  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 4, ptr %105) #8
  br label %601

601:                                              ; preds = %571
  %602 = load i32, ptr %102, align 4, !tbaa !9
  %603 = load i32, ptr %104, align 4, !tbaa !9
  %604 = add nsw i32 %603, %602
  store i32 %604, ptr %104, align 4, !tbaa !9
  br label %432, !llvm.loop !58

605:                                              ; preds = %436
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #8
  br label %606

606:                                              ; preds = %605
  %607 = load i32, ptr %99, align 4, !tbaa !9
  %608 = load i32, ptr %100, align 4, !tbaa !9
  %609 = add nsw i32 %608, %607
  store i32 %609, ptr %100, align 4, !tbaa !9
  br label %397, !llvm.loop !59

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

611:                                              ; preds = %610
  %612 = load i32, ptr %97, align 4, !tbaa !9
  %613 = add nsw i32 %612, 1
  store i32 %613, ptr %97, align 4, !tbaa !9
  br label %391, !llvm.loop !60

614:                                              ; preds = %395
  store i32 1, ptr %98, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %76) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  call void @llvm.lifetime.end.p0(i64 136, ptr %73) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #8
  call void @llvm.lifetime.end.p0(i64 4, 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 %47) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #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
  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 @_Z14tensor4dGetI3210TensorDescP8DataTypeP10DataFormatPiS4_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

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 80}
!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, !6, i64 128}
!33 = !{!"long", !7, i64 0}
!34 = !{!32, !33, i64 96}
!35 = !{!32, !33, i64 56}
!36 = !{!32, !33, i64 64}
!37 = !{!32, !6, i64 128}
!38 = !{!32, !33, i64 112}
!39 = !{!40, !13, i64 0}
!40 = !{!"_ZTS10TensorDesc", !13, i64 0, !15, i64 4, !10, i64 8, !7, i64 12}
!41 = !{!42, !42, i64 0}
!42 = !{!"float", !7, i64 0}
!43 = !{!32, !33, i64 120}
!44 = !{!33, !33, i64 0}
!45 = !{!46, !22, i64 0}
!46 = !{!"_ZTS19ActivationParamSpec", !22, i64 0, !7, i64 4}
!47 = !{!32, !33, i64 88}
!48 = !{!32, !6, i64 40}
!49 = distinct !{!49, !50}
!50 = !{!"llvm.loop.mustprogress"}
!51 = distinct !{!51, !50}
!52 = distinct !{!52, !50}
!53 = distinct !{!53, !50}
!54 = !{!32, !6, i64 0}
!55 = !{!32, !6, i64 16}
!56 = !{!32, !6, i64 8}
!57 = !{!32, !33, i64 104}
!58 = distinct !{!58, !50}
!59 = distinct !{!59, !50}
!60 = distinct !{!60, !50}


; 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, 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._Z36depthwise_pointwise_convolution_int810TensorDescPhPfS_PKaS_S3_20ConvolutionParamSpecS_PKfS_S6_jPvS_S7_S1_19ActivationParamSpecS8_.kernel = external hidden unnamed_addr constant [3 x ptr], align 16
@__const._Z36depthwise_pointwise_convolution_int810TensorDescPhPfS_PKaS_S3_20ConvolutionParamSpecS_PKfS_S6_jPvS_S7_S1_19ActivationParamSpecS8_.hwSizes = external hidden unnamed_addr constant [3 x i32], align 4

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_Z36depthwise_pointwise_convolution_int810TensorDescPhPfS_PKaS_S3_20ConvolutionParamSpecS_PKfS_S6_jPvS_S7_S1_19ActivationParamSpecS8_(ptr nocapture noundef readonly byval(%struct.TensorDesc) align 8 %0, ptr noundef %1, ptr noundef readnone %2, ptr nocapture noundef readonly byval(%struct.TensorDesc) align 8 %3, ptr noundef %4, ptr nocapture noundef readnone byval(%struct.TensorDesc) align 8 %5, ptr noundef readnone %6, ptr nocapture noundef readonly byval(%struct.ConvolutionParamSpec) align 8 %7, ptr nocapture noundef readonly byval(%struct.TensorDesc) align 8 %8, ptr noundef %9, ptr nocapture noundef readnone byval(%struct.TensorDesc) align 8 %10, ptr nocapture noundef readnone %11, i32 noundef %12, ptr noundef %13, ptr nocapture noundef byval(%struct.TensorDesc) align 8 %14, ptr noundef %15, ptr noundef %16, ptr nocapture noundef readonly byval(%struct.ActivationParamSpec) align 8 %17, ptr nocapture noundef readnone byval(%struct.ActivationParamSpec) align 8 %18) local_unnamed_addr #0 {
  %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 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 %struct.ConvController, align 8
  %39 = alloca %struct.TensorDesc, align 8
  %40 = alloca float, align 4
  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
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #10
  %41 = call noundef i32 @_Z14tensor4dGetI3210TensorDescP8DataTypeP10DataFormatPiS4_S4_S4_(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %0, ptr noundef nonnull %20, ptr noundef nonnull %23, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef nonnull %28, ptr noundef nonnull %29)
  %.not = icmp eq i32 %41, 0
  br i1 %.not, label %52, label %42

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

52:                                               ; preds = %19
  %53 = call noundef i32 @_Z14tensor4dGetI3210TensorDescP8DataTypeP10DataFormatPiS4_S4_S4_(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %3, ptr noundef nonnull %21, ptr noundef nonnull %24, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef nonnull %33)
  %.not158 = icmp eq i32 %53, 0
  br i1 %.not158, label %64, label %54

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

64:                                               ; preds = %52
  %65 = call noundef i32 @_Z14tensor4dGetI3210TensorDescP8DataTypeP10DataFormatPiS4_S4_S4_(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %14, ptr noundef nonnull %22, ptr noundef nonnull %25, ptr noundef nonnull %34, ptr noundef nonnull %35, ptr noundef nonnull %36, ptr noundef nonnull %37)
  %.not159 = icmp eq i32 %65, 0
  br i1 %.not159, label %76, label %66

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

76:                                               ; preds = %64
  %77 = load i32, ptr %23, align 4, !tbaa !9
  %.not160 = icmp eq i32 %77, 41
  br i1 %.not160, label %78, label %81

78:                                               ; preds = %76
  %79 = load i32, ptr %27, align 4, !tbaa !11
  %80 = and i32 %79, 15
  %.not161 = icmp eq i32 %80, 0
  br i1 %.not161, label %91, label %81

81:                                               ; preds = %76, %78
  %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 = %78
  %92 = getelementptr inbounds i8, ptr %7, i64 20
  %93 = load i32, ptr %92, align 4, !tbaa !13
  %94 = getelementptr inbounds i8, ptr %7, i64 24
  %95 = load i32, ptr %94, align 8, !tbaa !18
  %96 = getelementptr inbounds i8, ptr %7, i64 36
  %97 = load i32, ptr %96, align 4, !tbaa !19
  %98 = getelementptr inbounds i8, ptr %7, i64 40
  %99 = load i32, ptr %98, align 8, !tbaa !20
  %100 = getelementptr inbounds i8, ptr %7, i64 44
  %101 = load i32, ptr %100, align 4, !tbaa !21
  %102 = getelementptr inbounds i8, ptr %7, i64 48
  %103 = load i32, ptr %102, align 8, !tbaa !22
  %104 = load i32, ptr %32, align 4, !tbaa !11
  %105 = load i32, ptr %33, align 4, !tbaa !11
  %106 = load i32, ptr %36, align 4, !tbaa !11
  %107 = load i32, ptr %37, align 4, !tbaa !11
  %108 = mul nsw i32 %107, %106
  %109 = mul nsw i32 %105, %104
  %110 = load i32, ptr %29, align 4, !tbaa !11
  %111 = add i32 %103, %101
  %112 = add i32 %111, %110
  %113 = load i32, ptr %28, align 4, !tbaa !11
  %114 = add i32 %99, %97
  %115 = add i32 %114, %113
  call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %38) #10
  %116 = shl nsw i32 %108, 6
  %117 = sext i32 %116 to i64
  %118 = getelementptr inbounds i8, ptr %38, i64 80
  store i64 %117, ptr %118, align 8, !tbaa !23
  %119 = shl i32 %112, 4
  %120 = mul i32 %119, %115
  %121 = sext i32 %120 to i64
  %122 = getelementptr inbounds i8, ptr %38, i64 96
  store i64 %121, ptr %122, align 8, !tbaa !26
  %123 = sext i32 %105 to i64
  %124 = getelementptr inbounds i8, ptr %38, i64 56
  store i64 %123, ptr %124, align 8, !tbaa !27
  %125 = sext i32 %104 to i64
  %126 = getelementptr inbounds i8, ptr %38, i64 64
  store i64 %125, ptr %126, align 8, !tbaa !28
  %127 = getelementptr inbounds i8, ptr %38, i64 128
  store ptr null, ptr %127, align 8, !tbaa !29
  %128 = sext i32 %95 to i64
  %129 = getelementptr inbounds i8, ptr %38, i64 112
  store i64 %128, ptr %129, align 8, !tbaa !30
  %130 = icmp eq ptr %6, null
  %spec.select = select i1 %130, ptr %15, ptr %13
  %131 = getelementptr inbounds i8, ptr %16, i64 4
  %132 = getelementptr inbounds i8, ptr %16, i64 8
  %133 = load i32, ptr %20, align 4, !tbaa !31
  %.not162 = icmp eq i32 %133, 10
  br i1 %.not162, label %150, label %134

134:                                              ; preds = %91
  call void @llvm.lifetime.start.p0(i64 92, ptr nonnull %39) #10
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(92) %39, ptr noundef nonnull align 8 dereferenceable(92) %0, i64 92, i1 false), !tbaa.struct !33
  store i32 10, ptr %39, align 8, !tbaa !35
  %135 = call noundef i32 @_Z12quantize_x8610TensorDescPKvPS_PvPfi(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %0, ptr noundef %1, ptr noundef nonnull %39, ptr noundef %13, ptr noundef %16, i32 noundef 0)
  %.not163 = icmp eq i32 %135, 0
  br i1 %.not163, label %146, label %136

136:                                              ; preds = %134
  %137 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %138 = trunc i64 %137 to i32
  %139 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %138)
  %140 = load ptr, ptr @stdout, align 8, !tbaa !5
  %141 = call i32 @fflush(ptr noundef %140)
  %142 = call ptr @ee2str(i32 noundef %135)
  %143 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, ptr noundef %142)
  %144 = load ptr, ptr @stdout, align 8, !tbaa !5
  %145 = call i32 @fflush(ptr noundef %144)
  call void @exit(i32 noundef 1) #11
  unreachable

146:                                              ; preds = %134
  %147 = call noundef i32 @_Z14tensorNumBytes10TensorDesc(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %39)
  %148 = zext i32 %147 to i64
  %149 = getelementptr inbounds i8, ptr %13, i64 %148
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %39) #10
  br label %150

150:                                              ; preds = %146, %91
  %.0142 = phi ptr [ %149, %146 ], [ %13, %91 ]
  %.0 = phi ptr [ %13, %146 ], [ %1, %91 ]
  %151 = load float, ptr %16, align 4, !tbaa !37
  %152 = load float, ptr %132, align 4, !tbaa !37
  %153 = fmul float %151, %152
  store float %153, ptr %131, align 4, !tbaa !37
  %154 = load i32, ptr %22, align 4
  switch i32 %154, label %155 [
    i32 6, label %161
    i32 3, label %161
  ]

155:                                              ; preds = %150
  %156 = call noundef i32 @_Z17tensorNumElements10TensorDesc(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %14)
  %157 = call noundef i32 @_Z7bytesOf8DataType(i32 noundef 3)
  %158 = mul i32 %157, %156
  %159 = zext i32 %158 to i64
  %160 = getelementptr inbounds i8, ptr %.0142, i64 %159
  store i32 3, ptr %14, align 8, !tbaa !35
  br label %161

161:                                              ; preds = %150, %150, %155
  %.0145 = phi ptr [ %.0142, %155 ], [ %spec.select, %150 ], [ %spec.select, %150 ]
  %.1 = phi ptr [ %160, %155 ], [ %.0142, %150 ], [ %.0142, %150 ]
  %.not165 = icmp eq ptr %2, null
  br i1 %.not165, label %162, label %.thread

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

162:                                              ; preds = %161
  %.pr = load i32, ptr %14, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %40) #10
  store float 0.000000e+00, ptr %40, align 4, !tbaa !37
  %163 = icmp eq i32 %.pr, 6
  br i1 %163, label %164, label %167

164:                                              ; preds = %.thread, %162
  %165 = load float, ptr %131, align 4, !tbaa !37
  %166 = fdiv float 1.000000e+00, %165
  store float %166, ptr %40, align 4, !tbaa !37
  br label %167

167:                                              ; preds = %164, %162
  %.0146 = phi ptr [ %40, %164 ], [ null, %162 ]
  %168 = load i32, ptr %35, align 4, !tbaa !11
  %169 = call noundef i32 @_Z7bytesOf8DataType(i32 noundef 3)
  %170 = mul i32 %169, %168
  %171 = zext i32 %170 to i64
  %172 = getelementptr inbounds i8, ptr %.1, i64 %171
  %173 = call noundef i32 @_Z21quantize_bias_offsetCPKv10TensorDesc8DataTypeS0_S1_PKfPv(ptr noundef %9, ptr noundef nonnull byval(%struct.TensorDesc) align 8 %8, i32 noundef 3, ptr noundef %4, ptr noundef nonnull byval(%struct.TensorDesc) align 8 %3, ptr noundef nonnull %131, ptr noundef %.1)
  %.not164 = icmp eq i32 %173, 0
  br i1 %.not164, label %184, label %174

174:                                              ; preds = %167
  %175 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %176 = trunc i64 %175 to i32
  %177 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %176)
  %178 = load ptr, ptr @stdout, align 8, !tbaa !5
  %179 = call i32 @fflush(ptr noundef %178)
  %180 = call ptr @ee2str(i32 noundef %173)
  %181 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, ptr noundef %180)
  %182 = load ptr, ptr @stdout, align 8, !tbaa !5
  %183 = call i32 @fflush(ptr noundef %182)
  call void @exit(i32 noundef 1) #11
  unreachable

184:                                              ; preds = %167
  %185 = load i32, ptr %35, align 4, !tbaa !11
  %186 = shl nsw i32 %185, 2
  %187 = sext i32 %186 to i64
  %188 = getelementptr inbounds i8, ptr %4, i64 %187
  %189 = load i32, ptr %32, align 4, !tbaa !11
  %190 = load i32, ptr %33, align 4, !tbaa !11
  %191 = mul nsw i32 %190, %189
  %192 = add nsw i32 %191, 3
  %193 = sdiv i32 %192, 4
  %194 = shl nsw i32 %193, 2
  %195 = and i32 %193, 1073741823
  %196 = zext nneg i32 %195 to i64
  %197 = getelementptr inbounds i8, ptr %38, i64 120
  store i64 %196, ptr %197, align 8, !tbaa !39
  %198 = select i1 %.not165, i64 0, i64 2
  %199 = load i32, ptr %17, align 8, !tbaa !40
  %200 = shl i32 %199, 2
  %201 = zext i32 %200 to i64
  %202 = or disjoint i64 %198, %201
  store ptr %.0146, ptr %127, align 8, !tbaa !29
  %203 = getelementptr inbounds i8, ptr %38, i64 88
  store i64 %202, ptr %203, align 8, !tbaa !42
  %204 = load i32, ptr %26, align 4, !tbaa !11
  %205 = icmp sgt i32 %204, 0
  br i1 %205, label %.preheader168.lr.ph, label %._crit_edge

.preheader168.lr.ph:                              ; preds = %184
  %206 = getelementptr inbounds i8, ptr %38, i64 40
  %207 = icmp slt i32 %108, 1
  %.off = add i32 %191, 6
  %.not191 = icmp ult i32 %.off, 7
  %208 = getelementptr inbounds i8, ptr %38, i64 16
  %209 = getelementptr inbounds i8, ptr %38, i64 8
  %210 = getelementptr inbounds i8, ptr %38, i64 104
  %211 = icmp sgt i32 %185, 0
  br i1 %211, label %.preheader168.preheader, label %._crit_edge

.preheader168.preheader:                          ; preds = %.preheader168.lr.ph
  %212 = sext i32 %109 to i64
  br label %.preheader168

.preheader168:                                    ; preds = %.preheader168.preheader, %._crit_edge183
  %213 = phi i32 [ %412, %._crit_edge183 ], [ %185, %.preheader168.preheader ]
  %214 = phi i32 [ %413, %._crit_edge183 ], [ %185, %.preheader168.preheader ]
  %.0148188 = phi i32 [ %414, %._crit_edge183 ], [ 0, %.preheader168.preheader ]
  %215 = icmp slt i32 %214, 1
  %brmerge = select i1 %215, i1 true, i1 %207
  %.mux = select i1 %215, i32 %214, i32 %213
  br i1 %brmerge, label %._crit_edge183, label %.lr.ph182.split.us

.lr.ph182.split.us:                               ; preds = %.preheader168
  br i1 %.not191, label %.lr.ph.us, label %.lr.ph.us.us

.lr.ph.us.us:                                     ; preds = %.lr.ph182.split.us, %._crit_edge.split.us.us.us
  %indvars.iv198 = phi i64 [ %indvars.iv.next199, %._crit_edge.split.us.us.us ], [ 0, %.lr.ph182.split.us ]
  %216 = phi i32 [ %374, %._crit_edge.split.us.us.us ], [ %214, %.lr.ph182.split.us ]
  %217 = getelementptr inbounds i32, ptr %.1, i64 %indvars.iv198
  store ptr %217, ptr %206, align 8, !tbaa !43
  %218 = mul nsw i32 %216, %.0148188
  %219 = trunc nuw nsw i64 %indvars.iv198 to i32
  %220 = add nsw i32 %218, %219
  %221 = load i32, ptr %36, align 4, !tbaa !11
  %222 = mul nsw i32 %221, %220
  %223 = load i32, ptr %37, align 4, !tbaa !11
  %224 = mul nsw i32 %222, %223
  %225 = sext i32 %224 to i64
  %226 = getelementptr inbounds float, ptr %.0145, i64 %225
  %227 = load i32, ptr %27, align 4, !tbaa !11
  %228 = mul nsw i32 %227, %.0148188
  %229 = add nsw i32 %228, %219
  %230 = load i32, ptr %28, align 4, !tbaa !11
  %231 = mul nsw i32 %229, %230
  %232 = load i32, ptr %29, align 4, !tbaa !11
  %233 = mul nsw i32 %231, %232
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds i8, ptr %.0, i64 %234
  %236 = mul i32 %194, %219
  %237 = zext i32 %236 to i64
  %238 = getelementptr inbounds i8, ptr %188, i64 %237
  br label %.preheader167.lr.ph.us.us.us

.preheader167.lr.ph.us.us.us:                     ; preds = %._crit_edge174.us.us.us, %.lr.ph.us.us
  %.0144175.us.us.us = phi i32 [ 0, %.lr.ph.us.us ], [ %261, %._crit_edge174.us.us.us ]
  %239 = sub nsw i32 %108, %.0144175.us.us.us
  %240 = call i32 @llvm.smin.i32(i32 %239, i32 16)
  %241 = ashr i32 %240, 3
  %242 = sext i32 %241 to i64
  %243 = getelementptr inbounds [3 x i32], ptr @__const._Z36depthwise_pointwise_convolution_int810TensorDescPhPfS_PKaS_S3_20ConvolutionParamSpecS_PKfS_S6_jPvS_S7_S1_19ActivationParamSpecS8_.hwSizes, i64 0, i64 %242
  %244 = load i32, ptr %243, align 4, !tbaa !11
  %245 = load i32, ptr %37, align 4, !tbaa !11
  %246 = sdiv i32 %.0144175.us.us.us, %245
  %247 = srem i32 %.0144175.us.us.us, %245
  %factor.op.mul172.us.us.us = shl i32 %244, 4
  %248 = icmp sgt i32 %244, 0
  br i1 %248, label %.preheader167.us.us.us.us, label %._crit_edge174.us.us.us

._crit_edge174.us.us.us.loopexit:                 ; preds = %._crit_edge.us.us.us.us
  %.pre = load i32, ptr %37, align 4, !tbaa !11
  br label %._crit_edge174.us.us.us

._crit_edge174.us.us.us:                          ; preds = %.preheader167.lr.ph.us.us.us, %._crit_edge174.us.us.us.loopexit
  %249 = phi i32 [ %.pre, %._crit_edge174.us.us.us.loopexit ], [ %245, %.preheader167.lr.ph.us.us.us ]
  store ptr %172, ptr %38, align 8, !tbaa !44
  %250 = mul nsw i32 %249, %246
  %251 = add nsw i32 %250, %247
  %252 = shl nsw i32 %251, 4
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds float, ptr %226, i64 %253
  store ptr %254, ptr %208, align 8, !tbaa !45
  store ptr %238, ptr %209, align 8, !tbaa !46
  %255 = shl nsw i32 %244, 6
  %256 = sext i32 %255 to i64
  store i64 %256, ptr %210, align 8, !tbaa !47
  %257 = ashr i32 %244, 3
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds [3 x ptr], ptr @__const._Z36depthwise_pointwise_convolution_int810TensorDescPhPfS_PKaS_S3_20ConvolutionParamSpecS_PKfS_S6_jPvS_S7_S1_19ActivationParamSpecS8_.kernel, i64 0, i64 %258
  %260 = load ptr, ptr %259, align 8, !tbaa !5
  call void %260(ptr noundef nonnull align 8 dereferenceable(136) %38)
  %261 = add nsw i32 %244, %.0144175.us.us.us
  %262 = icmp slt i32 %261, %108
  br i1 %262, label %.preheader167.lr.ph.us.us.us, label %._crit_edge.split.us.us.us, !llvm.loop !48

.preheader167.us.us.us.us:                        ; preds = %.preheader167.lr.ph.us.us.us, %._crit_edge.us.us.us.us
  %.0141173.us.us.us.us = phi i32 [ %372, %._crit_edge.us.us.us.us ], [ 0, %.preheader167.lr.ph.us.us.us ]
  %factor.op.mul.reass.us.us.us.us = mul i32 %factor.op.mul172.us.us.us, %.0141173.us.us.us.us
  %263 = sext i32 %.0141173.us.us.us.us to i64
  %264 = icmp slt i32 %.0141173.us.us.us.us, %109
  %265 = or disjoint i64 %263, 1
  %266 = icmp slt i64 %265, %212
  %267 = trunc nsw i64 %265 to i32
  %268 = or disjoint i64 %263, 2
  %269 = icmp slt i64 %268, %212
  %270 = trunc nsw i64 %268 to i32
  %271 = or disjoint i64 %263, 3
  %272 = icmp slt i64 %271, %212
  %273 = trunc nsw i64 %271 to i32
  br label %.preheader166.us.us.us.us

274:                                              ; preds = %364
  %275 = add nuw nsw i32 %.0140171.us.us.us.us, 1
  %exitcond197.not = icmp eq i32 %275, %244
  br i1 %exitcond197.not, label %._crit_edge.us.us.us.us, label %.preheader166.us.us.us.us, !llvm.loop !50

276:                                              ; preds = %.preheader.us.us.us.us
  %277 = load i32, ptr %37, align 4, !tbaa !11
  %278 = sdiv i32 %371, %277
  %279 = mul nsw i32 %278, %93
  %280 = load i32, ptr %33, align 4, !tbaa !11
  %281 = udiv i32 %.0141173.us.us.us.us, %280
  %282 = add i32 %281, %279
  %283 = srem i32 %371, %277
  %284 = mul nsw i32 %283, %95
  %285 = urem i32 %.0141173.us.us.us.us, %280
  %286 = add i32 %284, %285
  %287 = load i32, ptr %29, align 4, !tbaa !11
  %288 = mul nsw i32 %287, %282
  %289 = add nsw i32 %286, %288
  %290 = shl nsw i32 %289, 4
  %291 = sext i32 %290 to i64
  %292 = getelementptr i8, ptr %235, i64 %indvars.iv
  %293 = getelementptr i8, ptr %292, i64 %291
  %294 = load i8, ptr %293, align 1, !tbaa !34
  br label %295

295:                                              ; preds = %.preheader.us.us.us.us, %276
  %.sink = phi i8 [ %294, %276 ], [ 0, %.preheader.us.us.us.us ]
  %296 = sext i32 %368 to i64
  %297 = getelementptr inbounds i8, ptr %172, i64 %296
  store i8 %.sink, ptr %297, align 1, !tbaa !34
  %298 = or disjoint i32 %368, 1
  br i1 %266, label %299, label %318

299:                                              ; preds = %295
  %300 = load i32, ptr %37, align 4, !tbaa !11
  %301 = sdiv i32 %371, %300
  %302 = mul nsw i32 %301, %93
  %303 = load i32, ptr %33, align 4, !tbaa !11
  %304 = udiv i32 %267, %303
  %305 = add i32 %304, %302
  %306 = srem i32 %371, %300
  %307 = mul nsw i32 %306, %95
  %308 = urem i32 %267, %303
  %309 = add i32 %307, %308
  %310 = load i32, ptr %29, align 4, !tbaa !11
  %311 = mul nsw i32 %310, %305
  %312 = add nsw i32 %309, %311
  %313 = shl nsw i32 %312, 4
  %314 = sext i32 %313 to i64
  %315 = getelementptr i8, ptr %235, i64 %indvars.iv
  %316 = getelementptr i8, ptr %315, i64 %314
  %317 = load i8, ptr %316, align 1, !tbaa !34
  br label %318

318:                                              ; preds = %295, %299
  %.sink208 = phi i8 [ %317, %299 ], [ 0, %295 ]
  %319 = sext i32 %298 to i64
  %320 = getelementptr inbounds i8, ptr %172, i64 %319
  store i8 %.sink208, ptr %320, align 1, !tbaa !34
  %321 = or disjoint i32 %368, 2
  br i1 %269, label %322, label %341

322:                                              ; preds = %318
  %323 = load i32, ptr %37, align 4, !tbaa !11
  %324 = sdiv i32 %371, %323
  %325 = mul nsw i32 %324, %93
  %326 = load i32, ptr %33, align 4, !tbaa !11
  %327 = udiv i32 %270, %326
  %328 = add i32 %327, %325
  %329 = srem i32 %371, %323
  %330 = mul nsw i32 %329, %95
  %331 = urem i32 %270, %326
  %332 = add i32 %330, %331
  %333 = load i32, ptr %29, align 4, !tbaa !11
  %334 = mul nsw i32 %333, %328
  %335 = add nsw i32 %332, %334
  %336 = shl nsw i32 %335, 4
  %337 = sext i32 %336 to i64
  %338 = getelementptr i8, ptr %235, i64 %indvars.iv
  %339 = getelementptr i8, ptr %338, i64 %337
  %340 = load i8, ptr %339, align 1, !tbaa !34
  br label %341

341:                                              ; preds = %318, %322
  %.sink211 = phi i8 [ %340, %322 ], [ 0, %318 ]
  %342 = sext i32 %321 to i64
  %343 = getelementptr inbounds i8, ptr %172, i64 %342
  store i8 %.sink211, ptr %343, align 1, !tbaa !34
  %344 = or disjoint i32 %368, 3
  br i1 %272, label %345, label %364

345:                                              ; preds = %341
  %346 = load i32, ptr %37, align 4, !tbaa !11
  %347 = sdiv i32 %371, %346
  %348 = mul nsw i32 %347, %93
  %349 = load i32, ptr %33, align 4, !tbaa !11
  %350 = udiv i32 %273, %349
  %351 = add i32 %350, %348
  %352 = srem i32 %371, %346
  %353 = mul nsw i32 %352, %95
  %354 = urem i32 %273, %349
  %355 = add i32 %353, %354
  %356 = load i32, ptr %29, align 4, !tbaa !11
  %357 = mul nsw i32 %356, %351
  %358 = add nsw i32 %355, %357
  %359 = shl nsw i32 %358, 4
  %360 = sext i32 %359 to i64
  %361 = getelementptr i8, ptr %235, i64 %indvars.iv
  %362 = getelementptr i8, ptr %361, i64 %360
  %363 = load i8, ptr %362, align 1, !tbaa !34
  br label %364

364:                                              ; preds = %341, %345
  %.sink214 = phi i8 [ %363, %345 ], [ 0, %341 ]
  %365 = sext i32 %344 to i64
  %366 = getelementptr inbounds i8, ptr %172, i64 %365
  store i8 %.sink214, ptr %366, align 1, !tbaa !34
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 16
  br i1 %exitcond.not, label %274, label %.preheader.us.us.us.us, !llvm.loop !51

.preheader.us.us.us.us:                           ; preds = %.preheader166.us.us.us.us, %364
  %indvars.iv = phi i64 [ 0, %.preheader166.us.us.us.us ], [ %indvars.iv.next, %364 ]
  %indvars.iv.tr = trunc i64 %indvars.iv to i32
  %367 = shl i32 %indvars.iv.tr, 2
  %368 = add i32 %370, %367
  br i1 %264, label %276, label %295

.preheader166.us.us.us.us:                        ; preds = %274, %.preheader167.us.us.us.us
  %.0140171.us.us.us.us = phi i32 [ 0, %.preheader167.us.us.us.us ], [ %275, %274 ]
  %369 = shl nsw i32 %.0140171.us.us.us.us, 6
  %370 = add i32 %369, %factor.op.mul.reass.us.us.us.us
  %371 = add nsw i32 %.0140171.us.us.us.us, %.0144175.us.us.us
  br label %.preheader.us.us.us.us

._crit_edge.us.us.us.us:                          ; preds = %274
  %372 = add nuw i32 %.0141173.us.us.us.us, 4
  %373 = icmp ult i32 %372, %194
  br i1 %373, label %.preheader167.us.us.us.us, label %._crit_edge174.us.us.us.loopexit, !llvm.loop !52

._crit_edge.split.us.us.us:                       ; preds = %._crit_edge174.us.us.us
  %indvars.iv.next199 = add nuw nsw i64 %indvars.iv198, 16
  %374 = load i32, ptr %35, align 4, !tbaa !11
  %375 = trunc nuw i64 %indvars.iv.next199 to i32
  %376 = icmp sgt i32 %374, %375
  br i1 %376, label %.lr.ph.us.us, label %._crit_edge183, !llvm.loop !53

.lr.ph.us:                                        ; preds = %.lr.ph182.split.us, %._crit_edge.split.us185
  %indvars.iv201 = phi i64 [ %indvars.iv.next202, %._crit_edge.split.us185 ], [ 0, %.lr.ph182.split.us ]
  %377 = phi i32 [ %409, %._crit_edge.split.us185 ], [ %214, %.lr.ph182.split.us ]
  %378 = getelementptr inbounds i32, ptr %.1, i64 %indvars.iv201
  store ptr %378, ptr %206, align 8, !tbaa !43
  %379 = mul nsw i32 %377, %.0148188
  %380 = trunc nuw nsw i64 %indvars.iv201 to i32
  %381 = add nsw i32 %379, %380
  %382 = load i32, ptr %36, align 4, !tbaa !11
  %383 = mul nsw i32 %382, %381
  %384 = load i32, ptr %37, align 4, !tbaa !11
  %385 = mul nsw i32 %383, %384
  %386 = sext i32 %385 to i64
  %387 = getelementptr inbounds float, ptr %.0145, i64 %386
  %388 = mul i32 %194, %380
  %389 = zext i32 %388 to i64
  %390 = getelementptr inbounds i8, ptr %188, i64 %389
  br label %391

391:                                              ; preds = %.lr.ph.us, %391
  %.0144175.us184 = phi i32 [ 0, %.lr.ph.us ], [ %407, %391 ]
  %.0144175.us184.fr = freeze i32 %.0144175.us184
  %392 = sub nsw i32 %108, %.0144175.us184.fr
  %393 = call i32 @llvm.smin.i32(i32 %392, i32 16)
  %394 = ashr i32 %393, 3
  %395 = sext i32 %394 to i64
  %396 = getelementptr inbounds [3 x i32], ptr @__const._Z36depthwise_pointwise_convolution_int810TensorDescPhPfS_PKaS_S3_20ConvolutionParamSpecS_PKfS_S6_jPvS_S7_S1_19ActivationParamSpecS8_.hwSizes, i64 0, i64 %395
  %397 = load i32, ptr %396, align 4, !tbaa !11
  store ptr %172, ptr %38, align 8, !tbaa !44
  %398 = shl nsw i32 %.0144175.us184.fr, 4
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds float, ptr %387, i64 %399
  store ptr %400, ptr %208, align 8, !tbaa !45
  store ptr %390, ptr %209, align 8, !tbaa !46
  %401 = shl nsw i32 %397, 6
  %402 = sext i32 %401 to i64
  store i64 %402, ptr %210, align 8, !tbaa !47
  %403 = ashr i32 %397, 3
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds [3 x ptr], ptr @__const._Z36depthwise_pointwise_convolution_int810TensorDescPhPfS_PKaS_S3_20ConvolutionParamSpecS_PKfS_S6_jPvS_S7_S1_19ActivationParamSpecS8_.kernel, i64 0, i64 %404
  %406 = load ptr, ptr %405, align 8, !tbaa !5
  call void %406(ptr noundef nonnull align 8 dereferenceable(136) %38)
  %407 = add nsw i32 %397, %.0144175.us184.fr
  %408 = icmp slt i32 %407, %108
  br i1 %408, label %391, label %._crit_edge.split.us185, !llvm.loop !48

._crit_edge.split.us185:                          ; preds = %391
  %indvars.iv.next202 = add nuw nsw i64 %indvars.iv201, 16
  %409 = load i32, ptr %35, align 4, !tbaa !11
  %410 = trunc nuw i64 %indvars.iv.next202 to i32
  %411 = icmp sgt i32 %409, %410
  br i1 %411, label %.lr.ph.us, label %._crit_edge183, !llvm.loop !53

._crit_edge:                                      ; preds = %._crit_edge183, %.preheader168.lr.ph, %184
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #10
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %38) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #10
  call void @llvm.lifetime.end.p0(i64 4, 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
  ret i32 0

._crit_edge183:                                   ; preds = %._crit_edge.split.us.us.us, %._crit_edge.split.us185, %.preheader168
  %412 = phi i32 [ %213, %.preheader168 ], [ %409, %._crit_edge.split.us185 ], [ %374, %._crit_edge.split.us.us.us ]
  %413 = phi i32 [ %.mux, %.preheader168 ], [ %409, %._crit_edge.split.us185 ], [ %374, %._crit_edge.split.us.us.us ]
  %414 = add nuw nsw i32 %.0148188, 1
  %415 = load i32, ptr %26, align 4, !tbaa !11
  %416 = icmp slt i32 %414, %415
  br i1 %416, label %.preheader168, label %._crit_edge, !llvm.loop !54
}

; 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 @_Z14tensor4dGetI3210TensorDescP8DataTypeP10DataFormatPiS4_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: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.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, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !12, i64 20}
!14 = !{!"_ZTS20ConvolutionParamSpec", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !12, i64 56, !12, i64 60, !12, i64 64, !12, i64 68, !15, i64 72, !16, i64 76, !16, i64 80, !7, i64 84, !17, i64 92, !12, i64 96, !12, i64 100, !12, i64 104}
!15 = !{!"_ZTS15ConvolutionMode", !7, i64 0}
!16 = !{!"_ZTS14ActivationMode", !7, i64 0}
!17 = !{!"_ZTS9RoundMode", !7, i64 0}
!18 = !{!14, !12, i64 24}
!19 = !{!14, !12, i64 36}
!20 = !{!14, !12, i64 40}
!21 = !{!14, !12, i64 44}
!22 = !{!14, !12, i64 48}
!23 = !{!24, !25, i64 80}
!24 = !{!"_ZTS14ConvController", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !25, i64 48, !25, i64 56, !25, i64 64, !6, i64 72, !25, i64 80, !25, i64 88, !25, i64 96, !25, i64 104, !25, i64 112, !25, i64 120, !6, i64 128}
!25 = !{!"long", !7, i64 0}
!26 = !{!24, !25, i64 96}
!27 = !{!24, !25, i64 56}
!28 = !{!24, !25, i64 64}
!29 = !{!24, !6, i64 128}
!30 = !{!24, !25, i64 112}
!31 = !{!32, !32, i64 0}
!32 = !{!"_ZTS8DataType", !7, i64 0}
!33 = !{i64 0, i64 4, !31, i64 4, i64 4, !9, i64 8, i64 4, !11, i64 12, i64 80, !34}
!34 = !{!7, !7, i64 0}
!35 = !{!36, !32, i64 0}
!36 = !{!"_ZTS10TensorDesc", !32, i64 0, !10, i64 4, !12, i64 8, !7, i64 12}
!37 = !{!38, !38, i64 0}
!38 = !{!"float", !7, i64 0}
!39 = !{!24, !25, i64 120}
!40 = !{!41, !16, i64 0}
!41 = !{!"_ZTS19ActivationParamSpec", !16, i64 0, !7, i64 4}
!42 = !{!24, !25, i64 88}
!43 = !{!24, !6, i64 40}
!44 = !{!24, !6, i64 0}
!45 = !{!24, !6, i64 16}
!46 = !{!24, !6, i64 8}
!47 = !{!24, !25, i64 104}
!48 = distinct !{!48, !49}
!49 = !{!"llvm.loop.mustprogress"}
!50 = distinct !{!50, !49}
!51 = distinct !{!51, !49}
!52 = distinct !{!52, !49}
!53 = distinct !{!53, !49}
!54 = distinct !{!54, !49, !55}
!55 = !{!"llvm.loop.unswitch.partial.disable"}


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