; LLVM IR from ubaldot/defrecs :: stm32f4x/ADC_Readings/Drivers/CMSIS/NN/Source/ConvolutionFunctions (s8)

; 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.cmsis_nn_dims = type { i32, i32, i32, i32 }
%struct.cmsis_nn_dw_conv_params = type { i32, i32, i32, %struct.cmsis_nn_tile, %struct.cmsis_nn_tile, %struct.cmsis_nn_tile, %struct.cmsis_nn_activation }
%struct.cmsis_nn_tile = type { i32, i32 }
%struct.cmsis_nn_activation = type { i32, i32 }
%struct.cmsis_nn_per_channel_quant_params = type { ptr, ptr }

; Function Attrs: nounwind uwtable
define dso_local i32 @arm_depthwise_conv_3x3_s8(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10) #0 {
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %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 ptr, align 8
  %33 = alloca ptr, align 8
  %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 i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca ptr, align 8
  %54 = alloca ptr, align 8
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca ptr, align 8
  %60 = alloca ptr, align 8
  %61 = alloca i32, align 4
  store ptr %0, ptr %13, align 8, !tbaa !5
  store ptr %1, ptr %14, align 8, !tbaa !5
  store ptr %2, ptr %15, align 8, !tbaa !5
  store ptr %3, ptr %16, align 8, !tbaa !5
  store ptr %4, ptr %17, align 8, !tbaa !5
  store ptr %5, ptr %18, align 8, !tbaa !5
  store ptr %6, ptr %19, align 8, !tbaa !5
  store ptr %7, ptr %20, align 8, !tbaa !5
  store ptr %8, ptr %21, align 8, !tbaa !5
  store ptr %9, ptr %22, align 8, !tbaa !5
  store ptr %10, ptr %23, align 8, !tbaa !5
  %62 = load ptr, ptr %13, align 8, !tbaa !5
  %63 = load ptr, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  %64 = load ptr, ptr %16, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.cmsis_nn_dims, ptr %64, i32 0, i32 2
  %66 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %66, ptr %24, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  %67 = load ptr, ptr %16, align 8, !tbaa !5
  %68 = getelementptr inbounds %struct.cmsis_nn_dims, ptr %67, i32 0, i32 1
  %69 = load i32, ptr %68, align 4, !tbaa !13
  store i32 %69, ptr %25, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  %70 = load ptr, ptr %16, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.cmsis_nn_dims, ptr %70, i32 0, i32 3
  %72 = load i32, ptr %71, align 4, !tbaa !14
  store i32 %72, ptr %26, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #3
  %73 = load ptr, ptr %22, align 8, !tbaa !5
  %74 = getelementptr inbounds %struct.cmsis_nn_dims, ptr %73, i32 0, i32 3
  %75 = load i32, ptr %74, align 4, !tbaa !14
  store i32 %75, ptr %27, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #3
  %76 = load ptr, ptr %14, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.cmsis_nn_dw_conv_params, ptr %76, i32 0, i32 4
  %78 = getelementptr inbounds %struct.cmsis_nn_tile, ptr %77, i32 0, i32 0
  %79 = load i32, ptr %78, align 4, !tbaa !15
  store i32 %79, ptr %28, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #3
  %80 = load ptr, ptr %14, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.cmsis_nn_dw_conv_params, ptr %80, i32 0, i32 4
  %82 = getelementptr inbounds %struct.cmsis_nn_tile, ptr %81, i32 0, i32 1
  %83 = load i32, ptr %82, align 4, !tbaa !18
  store i32 %83, ptr %29, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #3
  %84 = load ptr, ptr %14, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.cmsis_nn_dw_conv_params, ptr %84, i32 0, i32 3
  %86 = getelementptr inbounds %struct.cmsis_nn_tile, ptr %85, i32 0, i32 0
  %87 = load i32, ptr %86, align 4, !tbaa !19
  store i32 %87, ptr %30, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #3
  %88 = load ptr, ptr %14, align 8, !tbaa !5
  %89 = getelementptr inbounds %struct.cmsis_nn_dw_conv_params, ptr %88, i32 0, i32 3
  %90 = getelementptr inbounds %struct.cmsis_nn_tile, ptr %89, i32 0, i32 1
  %91 = load i32, ptr %90, align 4, !tbaa !20
  store i32 %91, ptr %31, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #3
  %92 = load ptr, ptr %15, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.cmsis_nn_per_channel_quant_params, ptr %92, i32 0, i32 1
  %94 = load ptr, ptr %93, align 8, !tbaa !21
  store ptr %94, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #3
  %95 = load ptr, ptr %15, align 8, !tbaa !5
  %96 = getelementptr inbounds %struct.cmsis_nn_per_channel_quant_params, ptr %95, i32 0, i32 0
  %97 = load ptr, ptr %96, align 8, !tbaa !23
  store ptr %97, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #3
  %98 = load ptr, ptr %22, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct.cmsis_nn_dims, ptr %98, i32 0, i32 2
  %100 = load i32, ptr %99, align 4, !tbaa !9
  store i32 %100, ptr %34, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #3
  %101 = load ptr, ptr %22, align 8, !tbaa !5
  %102 = getelementptr inbounds %struct.cmsis_nn_dims, ptr %101, i32 0, i32 1
  %103 = load i32, ptr %102, align 4, !tbaa !13
  store i32 %103, ptr %35, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #3
  %104 = load ptr, ptr %14, align 8, !tbaa !5
  %105 = getelementptr inbounds %struct.cmsis_nn_dw_conv_params, ptr %104, i32 0, i32 1
  %106 = load i32, ptr %105, align 4, !tbaa !24
  store i32 %106, ptr %36, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #3
  %107 = load ptr, ptr %14, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.cmsis_nn_dw_conv_params, ptr %107, i32 0, i32 0
  %109 = load i32, ptr %108, align 4, !tbaa !25
  store i32 %109, ptr %37, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #3
  %110 = load ptr, ptr %14, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct.cmsis_nn_dw_conv_params, ptr %110, i32 0, i32 6
  %112 = getelementptr inbounds %struct.cmsis_nn_activation, ptr %111, i32 0, i32 0
  %113 = load i32, ptr %112, align 4, !tbaa !26
  store i32 %113, ptr %38, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #3
  %114 = load ptr, ptr %14, align 8, !tbaa !5
  %115 = getelementptr inbounds %struct.cmsis_nn_dw_conv_params, ptr %114, i32 0, i32 6
  %116 = getelementptr inbounds %struct.cmsis_nn_activation, ptr %115, i32 0, i32 1
  %117 = load i32, ptr %116, align 4, !tbaa !27
  store i32 %117, ptr %39, align 4, !tbaa !12
  %118 = load i32, ptr %26, align 4, !tbaa !12
  %119 = load i32, ptr %27, align 4, !tbaa !12
  %120 = icmp ne i32 %118, %119
  br i1 %120, label %121, label %122

121:                                              ; preds = %11
  store i32 -3, ptr %12, align 4
  store i32 1, ptr %40, align 4
  br label %839

122:                                              ; preds = %11
  %123 = load i32, ptr %28, align 4, !tbaa !12
  %124 = icmp sgt i32 %123, 1
  br i1 %124, label %135, label %125

125:                                              ; preds = %122
  %126 = load ptr, ptr %18, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.cmsis_nn_dims, ptr %126, i32 0, i32 2
  %128 = load i32, ptr %127, align 4, !tbaa !9
  %129 = icmp ne i32 %128, 3
  br i1 %129, label %135, label %130

130:                                              ; preds = %125
  %131 = load ptr, ptr %18, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.cmsis_nn_dims, ptr %131, i32 0, i32 1
  %133 = load i32, ptr %132, align 4, !tbaa !13
  %134 = icmp ne i32 %133, 3
  br i1 %134, label %135, label %136

135:                                              ; preds = %130, %125, %122
  store i32 -1, ptr %12, align 4
  store i32 1, ptr %40, align 4
  br label %839

136:                                              ; preds = %130
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #3
  %137 = load i32, ptr %29, align 4, !tbaa !12
  %138 = sub nsw i32 0, %137
  store i32 %138, ptr %41, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #3
  store i32 0, ptr %42, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #3
  store i32 0, ptr %43, align 4, !tbaa !12
  br label %139

139:                                              ; preds = %832, %136
  %140 = load i32, ptr %42, align 4, !tbaa !12
  %141 = load i32, ptr %35, align 4, !tbaa !12
  %142 = icmp slt i32 %140, %141
  br i1 %142, label %144, label %143

143:                                              ; preds = %139
  store i32 2, ptr %40, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #3
  br label %838

144:                                              ; preds = %139
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #3
  %145 = load i32, ptr %28, align 4, !tbaa !12
  %146 = sub nsw i32 0, %145
  store i32 %146, ptr %44, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #3
  store i32 0, ptr %45, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #3
  %147 = load i32, ptr %41, align 4, !tbaa !12
  %148 = sub nsw i32 0, %147
  %149 = icmp sgt i32 0, %148
  br i1 %149, label %150, label %151

150:                                              ; preds = %144
  br label %154

151:                                              ; preds = %144
  %152 = load i32, ptr %41, align 4, !tbaa !12
  %153 = sub nsw i32 0, %152
  br label %154

154:                                              ; preds = %151, %150
  %155 = phi i32 [ 0, %150 ], [ %153, %151 ]
  store i32 %155, ptr %46, align 4, !tbaa !12
  br label %156

156:                                              ; preds = %825, %154
  %157 = load i32, ptr %45, align 4, !tbaa !12
  %158 = load i32, ptr %34, align 4, !tbaa !12
  %159 = icmp slt i32 %157, %158
  br i1 %159, label %161, label %160

160:                                              ; preds = %156
  store i32 5, ptr %40, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  br label %831

161:                                              ; preds = %156
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #3
  store i32 0, ptr %47, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #3
  %162 = load i32, ptr %44, align 4, !tbaa !12
  %163 = sub nsw i32 0, %162
  %164 = icmp sgt i32 0, %163
  br i1 %164, label %165, label %166

165:                                              ; preds = %161
  br label %169

166:                                              ; preds = %161
  %167 = load i32, ptr %44, align 4, !tbaa !12
  %168 = sub nsw i32 0, %167
  br label %169

169:                                              ; preds = %166, %165
  %170 = phi i32 [ 0, %165 ], [ %168, %166 ]
  store i32 %170, ptr %48, align 4, !tbaa !12
  br label %171

171:                                              ; preds = %643, %169
  %172 = load i32, ptr %47, align 4, !tbaa !12
  %173 = load i32, ptr %26, align 4, !tbaa !12
  %174 = sub nsw i32 %173, 4
  %175 = icmp sle i32 %172, %174
  br i1 %175, label %176, label %646

176:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #3
  %177 = load ptr, ptr %21, align 8, !tbaa !5
  %178 = load i32, ptr %47, align 4, !tbaa !12
  %179 = add nsw i32 %178, 0
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds i32, ptr %177, i64 %180
  %182 = load i32, ptr %181, align 4, !tbaa !12
  store i32 %182, ptr %49, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #3
  %183 = load ptr, ptr %21, align 8, !tbaa !5
  %184 = load i32, ptr %47, align 4, !tbaa !12
  %185 = add nsw i32 %184, 1
  %186 = sext i32 %185 to i64
  %187 = getelementptr inbounds i32, ptr %183, i64 %186
  %188 = load i32, ptr %187, align 4, !tbaa !12
  store i32 %188, ptr %50, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #3
  %189 = load ptr, ptr %21, align 8, !tbaa !5
  %190 = load i32, ptr %47, align 4, !tbaa !12
  %191 = add nsw i32 %190, 2
  %192 = sext i32 %191 to i64
  %193 = getelementptr inbounds i32, ptr %189, i64 %192
  %194 = load i32, ptr %193, align 4, !tbaa !12
  store i32 %194, ptr %51, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #3
  %195 = load ptr, ptr %21, align 8, !tbaa !5
  %196 = load i32, ptr %47, align 4, !tbaa !12
  %197 = add nsw i32 %196, 3
  %198 = sext i32 %197 to i64
  %199 = getelementptr inbounds i32, ptr %195, i64 %198
  %200 = load i32, ptr %199, align 4, !tbaa !12
  store i32 %200, ptr %52, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #3
  %201 = load ptr, ptr %17, align 8, !tbaa !5
  %202 = load i32, ptr %41, align 4, !tbaa !12
  %203 = load i32, ptr %46, align 4, !tbaa !12
  %204 = add nsw i32 %202, %203
  %205 = load i32, ptr %26, align 4, !tbaa !12
  %206 = load i32, ptr %24, align 4, !tbaa !12
  %207 = mul nsw i32 %205, %206
  %208 = mul nsw i32 %204, %207
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds i8, ptr %201, i64 %209
  %211 = load i32, ptr %44, align 4, !tbaa !12
  %212 = load i32, ptr %26, align 4, !tbaa !12
  %213 = mul nsw i32 %211, %212
  %214 = sext i32 %213 to i64
  %215 = getelementptr inbounds i8, ptr %210, i64 %214
  %216 = load i32, ptr %47, align 4, !tbaa !12
  %217 = sext i32 %216 to i64
  %218 = getelementptr inbounds i8, ptr %215, i64 %217
  store ptr %218, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #3
  %219 = load ptr, ptr %19, align 8, !tbaa !5
  %220 = load i32, ptr %46, align 4, !tbaa !12
  %221 = load i32, ptr %26, align 4, !tbaa !12
  %222 = mul nsw i32 %221, 3
  %223 = mul nsw i32 %220, %222
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds i8, ptr %219, i64 %224
  %226 = load i32, ptr %47, align 4, !tbaa !12
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds i8, ptr %225, i64 %227
  store ptr %228, ptr %54, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #3
  %229 = load i32, ptr %46, align 4, !tbaa !12
  store i32 %229, ptr %55, align 4, !tbaa !12
  br label %230

230:                                              ; preds = %443, %176
  %231 = load i32, ptr %55, align 4, !tbaa !12
  %232 = load i32, ptr %25, align 4, !tbaa !12
  %233 = load i32, ptr %41, align 4, !tbaa !12
  %234 = sub nsw i32 %232, %233
  %235 = icmp slt i32 3, %234
  br i1 %235, label %236, label %237

236:                                              ; preds = %230
  br label %241

237:                                              ; preds = %230
  %238 = load i32, ptr %25, align 4, !tbaa !12
  %239 = load i32, ptr %41, align 4, !tbaa !12
  %240 = sub nsw i32 %238, %239
  br label %241

241:                                              ; preds = %237, %236
  %242 = phi i32 [ 3, %236 ], [ %240, %237 ]
  %243 = icmp slt i32 %231, %242
  br i1 %243, label %245, label %244

244:                                              ; preds = %241
  store i32 11, ptr %40, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #3
  br label %446

245:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #3
  store i32 0, ptr %56, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #3
  store i32 0, ptr %57, align 4, !tbaa !12
  %246 = load i32, ptr %48, align 4, !tbaa !12
  %247 = icmp eq i32 %246, 0
  br i1 %247, label %248, label %303

248:                                              ; preds = %245
  %249 = load ptr, ptr %53, align 8, !tbaa !5
  %250 = call i32 @arm_nn_read_q7x4(ptr noundef %249)
  store i32 %250, ptr %56, align 4, !tbaa !12
  %251 = load ptr, ptr %54, align 8, !tbaa !5
  %252 = call i32 @arm_nn_read_q7x4(ptr noundef %251)
  store i32 %252, ptr %57, align 4, !tbaa !12
  %253 = load i32, ptr %56, align 4, !tbaa !12
  %254 = trunc i32 %253 to i8
  %255 = sext i8 %254 to i32
  %256 = load i32, ptr %37, align 4, !tbaa !12
  %257 = add nsw i32 %255, %256
  %258 = load i32, ptr %57, align 4, !tbaa !12
  %259 = trunc i32 %258 to i8
  %260 = sext i8 %259 to i32
  %261 = mul nsw i32 %257, %260
  %262 = load i32, ptr %49, align 4, !tbaa !12
  %263 = add nsw i32 %262, %261
  store i32 %263, ptr %49, align 4, !tbaa !12
  %264 = load i32, ptr %56, align 4, !tbaa !12
  %265 = ashr i32 %264, 8
  %266 = trunc i32 %265 to i8
  %267 = sext i8 %266 to i32
  %268 = load i32, ptr %37, align 4, !tbaa !12
  %269 = add nsw i32 %267, %268
  %270 = load i32, ptr %57, align 4, !tbaa !12
  %271 = ashr i32 %270, 8
  %272 = trunc i32 %271 to i8
  %273 = sext i8 %272 to i32
  %274 = mul nsw i32 %269, %273
  %275 = load i32, ptr %50, align 4, !tbaa !12
  %276 = add nsw i32 %275, %274
  store i32 %276, ptr %50, align 4, !tbaa !12
  %277 = load i32, ptr %56, align 4, !tbaa !12
  %278 = ashr i32 %277, 16
  %279 = trunc i32 %278 to i8
  %280 = sext i8 %279 to i32
  %281 = load i32, ptr %37, align 4, !tbaa !12
  %282 = add nsw i32 %280, %281
  %283 = load i32, ptr %57, align 4, !tbaa !12
  %284 = ashr i32 %283, 16
  %285 = trunc i32 %284 to i8
  %286 = sext i8 %285 to i32
  %287 = mul nsw i32 %282, %286
  %288 = load i32, ptr %51, align 4, !tbaa !12
  %289 = add nsw i32 %288, %287
  store i32 %289, ptr %51, align 4, !tbaa !12
  %290 = load i32, ptr %56, align 4, !tbaa !12
  %291 = ashr i32 %290, 24
  %292 = trunc i32 %291 to i8
  %293 = sext i8 %292 to i32
  %294 = load i32, ptr %37, align 4, !tbaa !12
  %295 = add nsw i32 %293, %294
  %296 = load i32, ptr %57, align 4, !tbaa !12
  %297 = ashr i32 %296, 24
  %298 = trunc i32 %297 to i8
  %299 = sext i8 %298 to i32
  %300 = mul nsw i32 %295, %299
  %301 = load i32, ptr %52, align 4, !tbaa !12
  %302 = add nsw i32 %301, %300
  store i32 %302, ptr %52, align 4, !tbaa !12
  br label %303

303:                                              ; preds = %248, %245
  %304 = load ptr, ptr %53, align 8, !tbaa !5
  %305 = load i32, ptr %26, align 4, !tbaa !12
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds i8, ptr %304, i64 %306
  %308 = call i32 @arm_nn_read_q7x4(ptr noundef %307)
  store i32 %308, ptr %56, align 4, !tbaa !12
  %309 = load ptr, ptr %54, align 8, !tbaa !5
  %310 = load i32, ptr %26, align 4, !tbaa !12
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds i8, ptr %309, i64 %311
  %313 = call i32 @arm_nn_read_q7x4(ptr noundef %312)
  store i32 %313, ptr %57, align 4, !tbaa !12
  %314 = load i32, ptr %56, align 4, !tbaa !12
  %315 = trunc i32 %314 to i8
  %316 = sext i8 %315 to i32
  %317 = load i32, ptr %37, align 4, !tbaa !12
  %318 = add nsw i32 %316, %317
  %319 = load i32, ptr %57, align 4, !tbaa !12
  %320 = trunc i32 %319 to i8
  %321 = sext i8 %320 to i32
  %322 = mul nsw i32 %318, %321
  %323 = load i32, ptr %49, align 4, !tbaa !12
  %324 = add nsw i32 %323, %322
  store i32 %324, ptr %49, align 4, !tbaa !12
  %325 = load i32, ptr %56, align 4, !tbaa !12
  %326 = ashr i32 %325, 8
  %327 = trunc i32 %326 to i8
  %328 = sext i8 %327 to i32
  %329 = load i32, ptr %37, align 4, !tbaa !12
  %330 = add nsw i32 %328, %329
  %331 = load i32, ptr %57, align 4, !tbaa !12
  %332 = ashr i32 %331, 8
  %333 = trunc i32 %332 to i8
  %334 = sext i8 %333 to i32
  %335 = mul nsw i32 %330, %334
  %336 = load i32, ptr %50, align 4, !tbaa !12
  %337 = add nsw i32 %336, %335
  store i32 %337, ptr %50, align 4, !tbaa !12
  %338 = load i32, ptr %56, align 4, !tbaa !12
  %339 = ashr i32 %338, 16
  %340 = trunc i32 %339 to i8
  %341 = sext i8 %340 to i32
  %342 = load i32, ptr %37, align 4, !tbaa !12
  %343 = add nsw i32 %341, %342
  %344 = load i32, ptr %57, align 4, !tbaa !12
  %345 = ashr i32 %344, 16
  %346 = trunc i32 %345 to i8
  %347 = sext i8 %346 to i32
  %348 = mul nsw i32 %343, %347
  %349 = load i32, ptr %51, align 4, !tbaa !12
  %350 = add nsw i32 %349, %348
  store i32 %350, ptr %51, align 4, !tbaa !12
  %351 = load i32, ptr %56, align 4, !tbaa !12
  %352 = ashr i32 %351, 24
  %353 = trunc i32 %352 to i8
  %354 = sext i8 %353 to i32
  %355 = load i32, ptr %37, align 4, !tbaa !12
  %356 = add nsw i32 %354, %355
  %357 = load i32, ptr %57, align 4, !tbaa !12
  %358 = ashr i32 %357, 24
  %359 = trunc i32 %358 to i8
  %360 = sext i8 %359 to i32
  %361 = mul nsw i32 %356, %360
  %362 = load i32, ptr %52, align 4, !tbaa !12
  %363 = add nsw i32 %362, %361
  store i32 %363, ptr %52, align 4, !tbaa !12
  %364 = load i32, ptr %24, align 4, !tbaa !12
  %365 = load i32, ptr %44, align 4, !tbaa !12
  %366 = sub nsw i32 %364, %365
  %367 = icmp sge i32 %366, 3
  br i1 %367, label %368, label %431

368:                                              ; preds = %303
  %369 = load ptr, ptr %53, align 8, !tbaa !5
  %370 = load i32, ptr %26, align 4, !tbaa !12
  %371 = shl i32 %370, 1
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds i8, ptr %369, i64 %372
  %374 = call i32 @arm_nn_read_q7x4(ptr noundef %373)
  store i32 %374, ptr %56, align 4, !tbaa !12
  %375 = load ptr, ptr %54, align 8, !tbaa !5
  %376 = load i32, ptr %26, align 4, !tbaa !12
  %377 = shl i32 %376, 1
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds i8, ptr %375, i64 %378
  %380 = call i32 @arm_nn_read_q7x4(ptr noundef %379)
  store i32 %380, ptr %57, align 4, !tbaa !12
  %381 = load i32, ptr %56, align 4, !tbaa !12
  %382 = trunc i32 %381 to i8
  %383 = sext i8 %382 to i32
  %384 = load i32, ptr %37, align 4, !tbaa !12
  %385 = add nsw i32 %383, %384
  %386 = load i32, ptr %57, align 4, !tbaa !12
  %387 = trunc i32 %386 to i8
  %388 = sext i8 %387 to i32
  %389 = mul nsw i32 %385, %388
  %390 = load i32, ptr %49, align 4, !tbaa !12
  %391 = add nsw i32 %390, %389
  store i32 %391, ptr %49, align 4, !tbaa !12
  %392 = load i32, ptr %56, align 4, !tbaa !12
  %393 = ashr i32 %392, 8
  %394 = trunc i32 %393 to i8
  %395 = sext i8 %394 to i32
  %396 = load i32, ptr %37, align 4, !tbaa !12
  %397 = add nsw i32 %395, %396
  %398 = load i32, ptr %57, align 4, !tbaa !12
  %399 = ashr i32 %398, 8
  %400 = trunc i32 %399 to i8
  %401 = sext i8 %400 to i32
  %402 = mul nsw i32 %397, %401
  %403 = load i32, ptr %50, align 4, !tbaa !12
  %404 = add nsw i32 %403, %402
  store i32 %404, ptr %50, align 4, !tbaa !12
  %405 = load i32, ptr %56, align 4, !tbaa !12
  %406 = ashr i32 %405, 16
  %407 = trunc i32 %406 to i8
  %408 = sext i8 %407 to i32
  %409 = load i32, ptr %37, align 4, !tbaa !12
  %410 = add nsw i32 %408, %409
  %411 = load i32, ptr %57, align 4, !tbaa !12
  %412 = ashr i32 %411, 16
  %413 = trunc i32 %412 to i8
  %414 = sext i8 %413 to i32
  %415 = mul nsw i32 %410, %414
  %416 = load i32, ptr %51, align 4, !tbaa !12
  %417 = add nsw i32 %416, %415
  store i32 %417, ptr %51, align 4, !tbaa !12
  %418 = load i32, ptr %56, align 4, !tbaa !12
  %419 = ashr i32 %418, 24
  %420 = trunc i32 %419 to i8
  %421 = sext i8 %420 to i32
  %422 = load i32, ptr %37, align 4, !tbaa !12
  %423 = add nsw i32 %421, %422
  %424 = load i32, ptr %57, align 4, !tbaa !12
  %425 = ashr i32 %424, 24
  %426 = trunc i32 %425 to i8
  %427 = sext i8 %426 to i32
  %428 = mul nsw i32 %423, %427
  %429 = load i32, ptr %52, align 4, !tbaa !12
  %430 = add nsw i32 %429, %428
  store i32 %430, ptr %52, align 4, !tbaa !12
  br label %431

431:                                              ; preds = %368, %303
  %432 = load i32, ptr %26, align 4, !tbaa !12
  %433 = load i32, ptr %24, align 4, !tbaa !12
  %434 = mul nsw i32 %432, %433
  %435 = load ptr, ptr %53, align 8, !tbaa !5
  %436 = sext i32 %434 to i64
  %437 = getelementptr inbounds i8, ptr %435, i64 %436
  store ptr %437, ptr %53, align 8, !tbaa !5
  %438 = load i32, ptr %26, align 4, !tbaa !12
  %439 = mul nsw i32 %438, 3
  %440 = load ptr, ptr %54, align 8, !tbaa !5
  %441 = sext i32 %439 to i64
  %442 = getelementptr inbounds i8, ptr %440, i64 %441
  store ptr %442, ptr %54, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  br label %443

443:                                              ; preds = %431
  %444 = load i32, ptr %55, align 4, !tbaa !12
  %445 = add nsw i32 %444, 1
  store i32 %445, ptr %55, align 4, !tbaa !12
  br label %230, !llvm.loop !28

446:                                              ; preds = %244
  %447 = load i32, ptr %49, align 4, !tbaa !12
  %448 = load ptr, ptr %33, align 8, !tbaa !5
  %449 = load i32, ptr %47, align 4, !tbaa !12
  %450 = add nsw i32 %449, 0
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds i32, ptr %448, i64 %451
  %453 = load i32, ptr %452, align 4, !tbaa !12
  %454 = load ptr, ptr %32, align 8, !tbaa !5
  %455 = load i32, ptr %47, align 4, !tbaa !12
  %456 = add nsw i32 %455, 0
  %457 = sext i32 %456 to i64
  %458 = getelementptr inbounds i32, ptr %454, i64 %457
  %459 = load i32, ptr %458, align 4, !tbaa !12
  %460 = call i32 @arm_nn_requantize(i32 noundef %447, i32 noundef %453, i32 noundef %459)
  store i32 %460, ptr %49, align 4, !tbaa !12
  %461 = load i32, ptr %50, align 4, !tbaa !12
  %462 = load ptr, ptr %33, align 8, !tbaa !5
  %463 = load i32, ptr %47, align 4, !tbaa !12
  %464 = add nsw i32 %463, 1
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds i32, ptr %462, i64 %465
  %467 = load i32, ptr %466, align 4, !tbaa !12
  %468 = load ptr, ptr %32, align 8, !tbaa !5
  %469 = load i32, ptr %47, align 4, !tbaa !12
  %470 = add nsw i32 %469, 1
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds i32, ptr %468, i64 %471
  %473 = load i32, ptr %472, align 4, !tbaa !12
  %474 = call i32 @arm_nn_requantize(i32 noundef %461, i32 noundef %467, i32 noundef %473)
  store i32 %474, ptr %50, align 4, !tbaa !12
  %475 = load i32, ptr %51, align 4, !tbaa !12
  %476 = load ptr, ptr %33, align 8, !tbaa !5
  %477 = load i32, ptr %47, align 4, !tbaa !12
  %478 = add nsw i32 %477, 2
  %479 = sext i32 %478 to i64
  %480 = getelementptr inbounds i32, ptr %476, i64 %479
  %481 = load i32, ptr %480, align 4, !tbaa !12
  %482 = load ptr, ptr %32, align 8, !tbaa !5
  %483 = load i32, ptr %47, align 4, !tbaa !12
  %484 = add nsw i32 %483, 2
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds i32, ptr %482, i64 %485
  %487 = load i32, ptr %486, align 4, !tbaa !12
  %488 = call i32 @arm_nn_requantize(i32 noundef %475, i32 noundef %481, i32 noundef %487)
  store i32 %488, ptr %51, align 4, !tbaa !12
  %489 = load i32, ptr %52, align 4, !tbaa !12
  %490 = load ptr, ptr %33, align 8, !tbaa !5
  %491 = load i32, ptr %47, align 4, !tbaa !12
  %492 = add nsw i32 %491, 3
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds i32, ptr %490, i64 %493
  %495 = load i32, ptr %494, align 4, !tbaa !12
  %496 = load ptr, ptr %32, align 8, !tbaa !5
  %497 = load i32, ptr %47, align 4, !tbaa !12
  %498 = add nsw i32 %497, 3
  %499 = sext i32 %498 to i64
  %500 = getelementptr inbounds i32, ptr %496, i64 %499
  %501 = load i32, ptr %500, align 4, !tbaa !12
  %502 = call i32 @arm_nn_requantize(i32 noundef %489, i32 noundef %495, i32 noundef %501)
  store i32 %502, ptr %52, align 4, !tbaa !12
  %503 = load i32, ptr %36, align 4, !tbaa !12
  %504 = load i32, ptr %49, align 4, !tbaa !12
  %505 = add nsw i32 %504, %503
  store i32 %505, ptr %49, align 4, !tbaa !12
  %506 = load i32, ptr %36, align 4, !tbaa !12
  %507 = load i32, ptr %50, align 4, !tbaa !12
  %508 = add nsw i32 %507, %506
  store i32 %508, ptr %50, align 4, !tbaa !12
  %509 = load i32, ptr %36, align 4, !tbaa !12
  %510 = load i32, ptr %51, align 4, !tbaa !12
  %511 = add nsw i32 %510, %509
  store i32 %511, ptr %51, align 4, !tbaa !12
  %512 = load i32, ptr %36, align 4, !tbaa !12
  %513 = load i32, ptr %52, align 4, !tbaa !12
  %514 = add nsw i32 %513, %512
  store i32 %514, ptr %52, align 4, !tbaa !12
  %515 = load i32, ptr %49, align 4, !tbaa !12
  %516 = load i32, ptr %38, align 4, !tbaa !12
  %517 = icmp sgt i32 %515, %516
  br i1 %517, label %518, label %520

518:                                              ; preds = %446
  %519 = load i32, ptr %49, align 4, !tbaa !12
  br label %522

520:                                              ; preds = %446
  %521 = load i32, ptr %38, align 4, !tbaa !12
  br label %522

522:                                              ; preds = %520, %518
  %523 = phi i32 [ %519, %518 ], [ %521, %520 ]
  %524 = load i32, ptr %39, align 4, !tbaa !12
  %525 = icmp slt i32 %523, %524
  br i1 %525, label %526, label %536

526:                                              ; preds = %522
  %527 = load i32, ptr %49, align 4, !tbaa !12
  %528 = load i32, ptr %38, align 4, !tbaa !12
  %529 = icmp sgt i32 %527, %528
  br i1 %529, label %530, label %532

530:                                              ; preds = %526
  %531 = load i32, ptr %49, align 4, !tbaa !12
  br label %534

532:                                              ; preds = %526
  %533 = load i32, ptr %38, align 4, !tbaa !12
  br label %534

534:                                              ; preds = %532, %530
  %535 = phi i32 [ %531, %530 ], [ %533, %532 ]
  br label %538

536:                                              ; preds = %522
  %537 = load i32, ptr %39, align 4, !tbaa !12
  br label %538

538:                                              ; preds = %536, %534
  %539 = phi i32 [ %535, %534 ], [ %537, %536 ]
  store i32 %539, ptr %49, align 4, !tbaa !12
  %540 = load i32, ptr %50, align 4, !tbaa !12
  %541 = load i32, ptr %38, align 4, !tbaa !12
  %542 = icmp sgt i32 %540, %541
  br i1 %542, label %543, label %545

543:                                              ; preds = %538
  %544 = load i32, ptr %50, align 4, !tbaa !12
  br label %547

545:                                              ; preds = %538
  %546 = load i32, ptr %38, align 4, !tbaa !12
  br label %547

547:                                              ; preds = %545, %543
  %548 = phi i32 [ %544, %543 ], [ %546, %545 ]
  %549 = load i32, ptr %39, align 4, !tbaa !12
  %550 = icmp slt i32 %548, %549
  br i1 %550, label %551, label %561

551:                                              ; preds = %547
  %552 = load i32, ptr %50, align 4, !tbaa !12
  %553 = load i32, ptr %38, align 4, !tbaa !12
  %554 = icmp sgt i32 %552, %553
  br i1 %554, label %555, label %557

555:                                              ; preds = %551
  %556 = load i32, ptr %50, align 4, !tbaa !12
  br label %559

557:                                              ; preds = %551
  %558 = load i32, ptr %38, align 4, !tbaa !12
  br label %559

559:                                              ; preds = %557, %555
  %560 = phi i32 [ %556, %555 ], [ %558, %557 ]
  br label %563

561:                                              ; preds = %547
  %562 = load i32, ptr %39, align 4, !tbaa !12
  br label %563

563:                                              ; preds = %561, %559
  %564 = phi i32 [ %560, %559 ], [ %562, %561 ]
  store i32 %564, ptr %50, align 4, !tbaa !12
  %565 = load i32, ptr %51, align 4, !tbaa !12
  %566 = load i32, ptr %38, align 4, !tbaa !12
  %567 = icmp sgt i32 %565, %566
  br i1 %567, label %568, label %570

568:                                              ; preds = %563
  %569 = load i32, ptr %51, align 4, !tbaa !12
  br label %572

570:                                              ; preds = %563
  %571 = load i32, ptr %38, align 4, !tbaa !12
  br label %572

572:                                              ; preds = %570, %568
  %573 = phi i32 [ %569, %568 ], [ %571, %570 ]
  %574 = load i32, ptr %39, align 4, !tbaa !12
  %575 = icmp slt i32 %573, %574
  br i1 %575, label %576, label %586

576:                                              ; preds = %572
  %577 = load i32, ptr %51, align 4, !tbaa !12
  %578 = load i32, ptr %38, align 4, !tbaa !12
  %579 = icmp sgt i32 %577, %578
  br i1 %579, label %580, label %582

580:                                              ; preds = %576
  %581 = load i32, ptr %51, align 4, !tbaa !12
  br label %584

582:                                              ; preds = %576
  %583 = load i32, ptr %38, align 4, !tbaa !12
  br label %584

584:                                              ; preds = %582, %580
  %585 = phi i32 [ %581, %580 ], [ %583, %582 ]
  br label %588

586:                                              ; preds = %572
  %587 = load i32, ptr %39, align 4, !tbaa !12
  br label %588

588:                                              ; preds = %586, %584
  %589 = phi i32 [ %585, %584 ], [ %587, %586 ]
  store i32 %589, ptr %51, align 4, !tbaa !12
  %590 = load i32, ptr %52, align 4, !tbaa !12
  %591 = load i32, ptr %38, align 4, !tbaa !12
  %592 = icmp sgt i32 %590, %591
  br i1 %592, label %593, label %595

593:                                              ; preds = %588
  %594 = load i32, ptr %52, align 4, !tbaa !12
  br label %597

595:                                              ; preds = %588
  %596 = load i32, ptr %38, align 4, !tbaa !12
  br label %597

597:                                              ; preds = %595, %593
  %598 = phi i32 [ %594, %593 ], [ %596, %595 ]
  %599 = load i32, ptr %39, align 4, !tbaa !12
  %600 = icmp slt i32 %598, %599
  br i1 %600, label %601, label %611

601:                                              ; preds = %597
  %602 = load i32, ptr %52, align 4, !tbaa !12
  %603 = load i32, ptr %38, align 4, !tbaa !12
  %604 = icmp sgt i32 %602, %603
  br i1 %604, label %605, label %607

605:                                              ; preds = %601
  %606 = load i32, ptr %52, align 4, !tbaa !12
  br label %609

607:                                              ; preds = %601
  %608 = load i32, ptr %38, align 4, !tbaa !12
  br label %609

609:                                              ; preds = %607, %605
  %610 = phi i32 [ %606, %605 ], [ %608, %607 ]
  br label %613

611:                                              ; preds = %597
  %612 = load i32, ptr %39, align 4, !tbaa !12
  br label %613

613:                                              ; preds = %611, %609
  %614 = phi i32 [ %610, %609 ], [ %612, %611 ]
  store i32 %614, ptr %52, align 4, !tbaa !12
  %615 = load i32, ptr %49, align 4, !tbaa !12
  %616 = trunc i32 %615 to i8
  %617 = load ptr, ptr %23, align 8, !tbaa !5
  %618 = load i32, ptr %43, align 4, !tbaa !12
  %619 = add nsw i32 %618, 1
  store i32 %619, ptr %43, align 4, !tbaa !12
  %620 = sext i32 %618 to i64
  %621 = getelementptr inbounds i8, ptr %617, i64 %620
  store i8 %616, ptr %621, align 1, !tbaa !30
  %622 = load i32, ptr %50, align 4, !tbaa !12
  %623 = trunc i32 %622 to i8
  %624 = load ptr, ptr %23, align 8, !tbaa !5
  %625 = load i32, ptr %43, align 4, !tbaa !12
  %626 = add nsw i32 %625, 1
  store i32 %626, ptr %43, align 4, !tbaa !12
  %627 = sext i32 %625 to i64
  %628 = getelementptr inbounds i8, ptr %624, i64 %627
  store i8 %623, ptr %628, align 1, !tbaa !30
  %629 = load i32, ptr %51, align 4, !tbaa !12
  %630 = trunc i32 %629 to i8
  %631 = load ptr, ptr %23, align 8, !tbaa !5
  %632 = load i32, ptr %43, align 4, !tbaa !12
  %633 = add nsw i32 %632, 1
  store i32 %633, ptr %43, align 4, !tbaa !12
  %634 = sext i32 %632 to i64
  %635 = getelementptr inbounds i8, ptr %631, i64 %634
  store i8 %630, ptr %635, align 1, !tbaa !30
  %636 = load i32, ptr %52, align 4, !tbaa !12
  %637 = trunc i32 %636 to i8
  %638 = load ptr, ptr %23, align 8, !tbaa !5
  %639 = load i32, ptr %43, align 4, !tbaa !12
  %640 = add nsw i32 %639, 1
  store i32 %640, ptr %43, align 4, !tbaa !12
  %641 = sext i32 %639 to i64
  %642 = getelementptr inbounds i8, ptr %638, i64 %641
  store i8 %637, ptr %642, align 1, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  br label %643

643:                                              ; preds = %613
  %644 = load i32, ptr %47, align 4, !tbaa !12
  %645 = add nsw i32 %644, 4
  store i32 %645, ptr %47, align 4, !tbaa !12
  br label %171, !llvm.loop !31

646:                                              ; preds = %171
  br label %647

647:                                              ; preds = %821, %646
  %648 = load i32, ptr %47, align 4, !tbaa !12
  %649 = load i32, ptr %26, align 4, !tbaa !12
  %650 = icmp slt i32 %648, %649
  br i1 %650, label %651, label %824

651:                                              ; preds = %647
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #3
  %652 = load ptr, ptr %21, align 8, !tbaa !5
  %653 = load i32, ptr %47, align 4, !tbaa !12
  %654 = sext i32 %653 to i64
  %655 = getelementptr inbounds i32, ptr %652, i64 %654
  %656 = load i32, ptr %655, align 4, !tbaa !12
  store i32 %656, ptr %58, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #3
  %657 = load ptr, ptr %17, align 8, !tbaa !5
  %658 = load i32, ptr %41, align 4, !tbaa !12
  %659 = load i32, ptr %46, align 4, !tbaa !12
  %660 = add nsw i32 %658, %659
  %661 = load i32, ptr %26, align 4, !tbaa !12
  %662 = load i32, ptr %24, align 4, !tbaa !12
  %663 = mul nsw i32 %661, %662
  %664 = mul nsw i32 %660, %663
  %665 = sext i32 %664 to i64
  %666 = getelementptr inbounds i8, ptr %657, i64 %665
  %667 = load i32, ptr %44, align 4, !tbaa !12
  %668 = load i32, ptr %26, align 4, !tbaa !12
  %669 = mul nsw i32 %667, %668
  %670 = sext i32 %669 to i64
  %671 = getelementptr inbounds i8, ptr %666, i64 %670
  %672 = load i32, ptr %47, align 4, !tbaa !12
  %673 = sext i32 %672 to i64
  %674 = getelementptr inbounds i8, ptr %671, i64 %673
  store ptr %674, ptr %59, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #3
  %675 = load ptr, ptr %19, align 8, !tbaa !5
  %676 = load i32, ptr %46, align 4, !tbaa !12
  %677 = load i32, ptr %26, align 4, !tbaa !12
  %678 = mul nsw i32 %677, 3
  %679 = mul nsw i32 %676, %678
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds i8, ptr %675, i64 %680
  %682 = load i32, ptr %47, align 4, !tbaa !12
  %683 = sext i32 %682 to i64
  %684 = getelementptr inbounds i8, ptr %681, i64 %683
  store ptr %684, ptr %60, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #3
  %685 = load i32, ptr %46, align 4, !tbaa !12
  store i32 %685, ptr %61, align 4, !tbaa !12
  br label %686

686:                                              ; preds = %770, %651
  %687 = load i32, ptr %61, align 4, !tbaa !12
  %688 = load i32, ptr %25, align 4, !tbaa !12
  %689 = load i32, ptr %41, align 4, !tbaa !12
  %690 = sub nsw i32 %688, %689
  %691 = icmp slt i32 3, %690
  br i1 %691, label %692, label %693

692:                                              ; preds = %686
  br label %697

693:                                              ; preds = %686
  %694 = load i32, ptr %25, align 4, !tbaa !12
  %695 = load i32, ptr %41, align 4, !tbaa !12
  %696 = sub nsw i32 %694, %695
  br label %697

697:                                              ; preds = %693, %692
  %698 = phi i32 [ 3, %692 ], [ %696, %693 ]
  %699 = icmp slt i32 %687, %698
  br i1 %699, label %701, label %700

700:                                              ; preds = %697
  store i32 17, ptr %40, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #3
  br label %773

701:                                              ; preds = %697
  %702 = load i32, ptr %48, align 4, !tbaa !12
  %703 = icmp eq i32 %702, 0
  br i1 %703, label %704, label %716

704:                                              ; preds = %701
  %705 = load ptr, ptr %59, align 8, !tbaa !5
  %706 = load i8, ptr %705, align 1, !tbaa !30
  %707 = sext i8 %706 to i32
  %708 = load i32, ptr %37, align 4, !tbaa !12
  %709 = add nsw i32 %707, %708
  %710 = load ptr, ptr %60, align 8, !tbaa !5
  %711 = load i8, ptr %710, align 1, !tbaa !30
  %712 = sext i8 %711 to i32
  %713 = mul nsw i32 %709, %712
  %714 = load i32, ptr %58, align 4, !tbaa !12
  %715 = add nsw i32 %714, %713
  store i32 %715, ptr %58, align 4, !tbaa !12
  br label %716

716:                                              ; preds = %704, %701
  %717 = load ptr, ptr %59, align 8, !tbaa !5
  %718 = load i32, ptr %26, align 4, !tbaa !12
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds i8, ptr %717, i64 %719
  %721 = load i8, ptr %720, align 1, !tbaa !30
  %722 = sext i8 %721 to i32
  %723 = load i32, ptr %37, align 4, !tbaa !12
  %724 = add nsw i32 %722, %723
  %725 = load ptr, ptr %60, align 8, !tbaa !5
  %726 = load i32, ptr %26, align 4, !tbaa !12
  %727 = sext i32 %726 to i64
  %728 = getelementptr inbounds i8, ptr %725, i64 %727
  %729 = load i8, ptr %728, align 1, !tbaa !30
  %730 = sext i8 %729 to i32
  %731 = mul nsw i32 %724, %730
  %732 = load i32, ptr %58, align 4, !tbaa !12
  %733 = add nsw i32 %732, %731
  store i32 %733, ptr %58, align 4, !tbaa !12
  %734 = load i32, ptr %24, align 4, !tbaa !12
  %735 = load i32, ptr %44, align 4, !tbaa !12
  %736 = sub nsw i32 %734, %735
  %737 = icmp sge i32 %736, 3
  br i1 %737, label %738, label %758

738:                                              ; preds = %716
  %739 = load ptr, ptr %59, align 8, !tbaa !5
  %740 = load i32, ptr %26, align 4, !tbaa !12
  %741 = shl i32 %740, 1
  %742 = sext i32 %741 to i64
  %743 = getelementptr inbounds i8, ptr %739, i64 %742
  %744 = load i8, ptr %743, align 1, !tbaa !30
  %745 = sext i8 %744 to i32
  %746 = load i32, ptr %37, align 4, !tbaa !12
  %747 = add nsw i32 %745, %746
  %748 = load ptr, ptr %60, align 8, !tbaa !5
  %749 = load i32, ptr %26, align 4, !tbaa !12
  %750 = shl i32 %749, 1
  %751 = sext i32 %750 to i64
  %752 = getelementptr inbounds i8, ptr %748, i64 %751
  %753 = load i8, ptr %752, align 1, !tbaa !30
  %754 = sext i8 %753 to i32
  %755 = mul nsw i32 %747, %754
  %756 = load i32, ptr %58, align 4, !tbaa !12
  %757 = add nsw i32 %756, %755
  store i32 %757, ptr %58, align 4, !tbaa !12
  br label %758

758:                                              ; preds = %738, %716
  %759 = load i32, ptr %26, align 4, !tbaa !12
  %760 = load i32, ptr %24, align 4, !tbaa !12
  %761 = mul nsw i32 %759, %760
  %762 = load ptr, ptr %59, align 8, !tbaa !5
  %763 = sext i32 %761 to i64
  %764 = getelementptr inbounds i8, ptr %762, i64 %763
  store ptr %764, ptr %59, align 8, !tbaa !5
  %765 = load i32, ptr %26, align 4, !tbaa !12
  %766 = mul nsw i32 %765, 3
  %767 = load ptr, ptr %60, align 8, !tbaa !5
  %768 = sext i32 %766 to i64
  %769 = getelementptr inbounds i8, ptr %767, i64 %768
  store ptr %769, ptr %60, align 8, !tbaa !5
  br label %770

770:                                              ; preds = %758
  %771 = load i32, ptr %61, align 4, !tbaa !12
  %772 = add nsw i32 %771, 1
  store i32 %772, ptr %61, align 4, !tbaa !12
  br label %686, !llvm.loop !32

773:                                              ; preds = %700
  %774 = load i32, ptr %58, align 4, !tbaa !12
  %775 = load ptr, ptr %33, align 8, !tbaa !5
  %776 = load i32, ptr %47, align 4, !tbaa !12
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds i32, ptr %775, i64 %777
  %779 = load i32, ptr %778, align 4, !tbaa !12
  %780 = load ptr, ptr %32, align 8, !tbaa !5
  %781 = load i32, ptr %47, align 4, !tbaa !12
  %782 = sext i32 %781 to i64
  %783 = getelementptr inbounds i32, ptr %780, i64 %782
  %784 = load i32, ptr %783, align 4, !tbaa !12
  %785 = call i32 @arm_nn_requantize(i32 noundef %774, i32 noundef %779, i32 noundef %784)
  store i32 %785, ptr %58, align 4, !tbaa !12
  %786 = load i32, ptr %36, align 4, !tbaa !12
  %787 = load i32, ptr %58, align 4, !tbaa !12
  %788 = add nsw i32 %787, %786
  store i32 %788, ptr %58, align 4, !tbaa !12
  %789 = load i32, ptr %58, align 4, !tbaa !12
  %790 = load i32, ptr %38, align 4, !tbaa !12
  %791 = icmp sgt i32 %789, %790
  br i1 %791, label %792, label %794

792:                                              ; preds = %773
  %793 = load i32, ptr %58, align 4, !tbaa !12
  br label %796

794:                                              ; preds = %773
  %795 = load i32, ptr %38, align 4, !tbaa !12
  br label %796

796:                                              ; preds = %794, %792
  %797 = phi i32 [ %793, %792 ], [ %795, %794 ]
  %798 = load i32, ptr %39, align 4, !tbaa !12
  %799 = icmp slt i32 %797, %798
  br i1 %799, label %800, label %810

800:                                              ; preds = %796
  %801 = load i32, ptr %58, align 4, !tbaa !12
  %802 = load i32, ptr %38, align 4, !tbaa !12
  %803 = icmp sgt i32 %801, %802
  br i1 %803, label %804, label %806

804:                                              ; preds = %800
  %805 = load i32, ptr %58, align 4, !tbaa !12
  br label %808

806:                                              ; preds = %800
  %807 = load i32, ptr %38, align 4, !tbaa !12
  br label %808

808:                                              ; preds = %806, %804
  %809 = phi i32 [ %805, %804 ], [ %807, %806 ]
  br label %812

810:                                              ; preds = %796
  %811 = load i32, ptr %39, align 4, !tbaa !12
  br label %812

812:                                              ; preds = %810, %808
  %813 = phi i32 [ %809, %808 ], [ %811, %810 ]
  store i32 %813, ptr %58, align 4, !tbaa !12
  %814 = load i32, ptr %58, align 4, !tbaa !12
  %815 = trunc i32 %814 to i8
  %816 = load ptr, ptr %23, align 8, !tbaa !5
  %817 = load i32, ptr %43, align 4, !tbaa !12
  %818 = add nsw i32 %817, 1
  store i32 %818, ptr %43, align 4, !tbaa !12
  %819 = sext i32 %817 to i64
  %820 = getelementptr inbounds i8, ptr %816, i64 %819
  store i8 %815, ptr %820, align 1, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #3
  br label %821

821:                                              ; preds = %812
  %822 = load i32, ptr %47, align 4, !tbaa !12
  %823 = add nsw i32 %822, 1
  store i32 %823, ptr %47, align 4, !tbaa !12
  br label %647, !llvm.loop !33

824:                                              ; preds = %647
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  br label %825

825:                                              ; preds = %824
  %826 = load i32, ptr %30, align 4, !tbaa !12
  %827 = load i32, ptr %44, align 4, !tbaa !12
  %828 = add nsw i32 %827, %826
  store i32 %828, ptr %44, align 4, !tbaa !12
  %829 = load i32, ptr %45, align 4, !tbaa !12
  %830 = add nsw i32 %829, 1
  store i32 %830, ptr %45, align 4, !tbaa !12
  br label %156, !llvm.loop !34

831:                                              ; preds = %160
  br label %832

832:                                              ; preds = %831
  %833 = load i32, ptr %31, align 4, !tbaa !12
  %834 = load i32, ptr %41, align 4, !tbaa !12
  %835 = add nsw i32 %834, %833
  store i32 %835, ptr %41, align 4, !tbaa !12
  %836 = load i32, ptr %42, align 4, !tbaa !12
  %837 = add nsw i32 %836, 1
  store i32 %837, ptr %42, align 4, !tbaa !12
  br label %139, !llvm.loop !35

838:                                              ; preds = %143
  store i32 0, ptr %12, align 4
  store i32 1, ptr %40, align 4
  br label %839

839:                                              ; preds = %838, %135, %121
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  %840 = load i32, ptr %12, align 4
  ret i32 %840
}

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

; Function Attrs: alwaysinline nounwind uwtable
declare hidden i32 @arm_nn_read_q7x4(ptr noundef) #2

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

; Function Attrs: alwaysinline nounwind uwtable
declare hidden i32 @arm_nn_requantize(i32 noundef, i32 noundef, i32 noundef) #2

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { alwaysinline 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 = { 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/C++ TBAA"}
!9 = !{!10, !11, i64 8}
!10 = !{!"", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12}
!11 = !{!"int", !7, i64 0}
!12 = !{!11, !11, i64 0}
!13 = !{!10, !11, i64 4}
!14 = !{!10, !11, i64 12}
!15 = !{!16, !11, i64 20}
!16 = !{!"", !11, i64 0, !11, i64 4, !11, i64 8, !17, i64 12, !17, i64 20, !17, i64 28, !17, i64 36}
!17 = !{!"", !11, i64 0, !11, i64 4}
!18 = !{!16, !11, i64 24}
!19 = !{!16, !11, i64 12}
!20 = !{!16, !11, i64 16}
!21 = !{!22, !6, i64 8}
!22 = !{!"", !6, i64 0, !6, i64 8}
!23 = !{!22, !6, i64 0}
!24 = !{!16, !11, i64 4}
!25 = !{!16, !11, i64 0}
!26 = !{!16, !11, i64 36}
!27 = !{!16, !11, i64 40}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = !{!7, !7, i64 0}
!31 = distinct !{!31, !29}
!32 = distinct !{!32, !29}
!33 = distinct !{!33, !29}
!34 = distinct !{!34, !29}
!35 = distinct !{!35, !29}


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

; Function Attrs: nounwind uwtable
define dso_local range(i32 -3, 1) i32 @arm_depthwise_conv_3x3_s8(ptr nocapture noundef readnone %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3, ptr noundef %4, ptr nocapture noundef readonly %5, ptr noundef %6, ptr nocapture noundef readnone %7, ptr nocapture noundef readonly %8, ptr nocapture noundef readonly %9, ptr nocapture noundef writeonly %10) local_unnamed_addr #0 {
  %12 = getelementptr inbounds i8, ptr %3, i64 8
  %13 = load i32, ptr %12, align 4, !tbaa !5
  %14 = getelementptr inbounds i8, ptr %3, i64 4
  %15 = load i32, ptr %14, align 4, !tbaa !10
  %16 = getelementptr inbounds i8, ptr %3, i64 12
  %17 = load i32, ptr %16, align 4, !tbaa !11
  %18 = getelementptr inbounds i8, ptr %9, i64 12
  %19 = load i32, ptr %18, align 4, !tbaa !11
  %20 = getelementptr inbounds i8, ptr %1, i64 20
  %21 = load i32, ptr %20, align 4, !tbaa !12
  %22 = getelementptr inbounds i8, ptr %1, i64 24
  %23 = load i32, ptr %22, align 4, !tbaa !15
  %24 = getelementptr inbounds i8, ptr %1, i64 12
  %25 = load i32, ptr %24, align 4, !tbaa !16
  %26 = getelementptr inbounds i8, ptr %1, i64 16
  %27 = load i32, ptr %26, align 4, !tbaa !17
  %28 = getelementptr inbounds i8, ptr %2, i64 8
  %29 = load ptr, ptr %28, align 8, !tbaa !18
  %30 = load ptr, ptr %2, align 8, !tbaa !21
  %31 = getelementptr inbounds i8, ptr %9, i64 8
  %32 = load i32, ptr %31, align 4, !tbaa !5
  %33 = getelementptr inbounds i8, ptr %9, i64 4
  %34 = load i32, ptr %33, align 4, !tbaa !10
  %35 = getelementptr inbounds i8, ptr %1, i64 4
  %36 = load i32, ptr %35, align 4, !tbaa !22
  %37 = load i32, ptr %1, align 4, !tbaa !23
  %38 = getelementptr inbounds i8, ptr %1, i64 36
  %39 = load i32, ptr %38, align 4, !tbaa !24
  %40 = getelementptr inbounds i8, ptr %1, i64 40
  %41 = load i32, ptr %40, align 4, !tbaa !25
  %.not = icmp eq i32 %17, %19
  br i1 %.not, label %42, label %.loopexit

42:                                               ; preds = %11
  %43 = icmp sgt i32 %21, 1
  br i1 %43, label %.loopexit, label %44

44:                                               ; preds = %42
  %45 = getelementptr inbounds i8, ptr %5, i64 8
  %46 = load i32, ptr %45, align 4, !tbaa !5
  %.not322 = icmp eq i32 %46, 3
  br i1 %.not322, label %47, label %.loopexit

47:                                               ; preds = %44
  %48 = getelementptr inbounds i8, ptr %5, i64 4
  %49 = load i32, ptr %48, align 4, !tbaa !10
  %.not323 = icmp eq i32 %49, 3
  br i1 %.not323, label %50, label %.loopexit

50:                                               ; preds = %47
  %51 = icmp sgt i32 %34, 0
  br i1 %51, label %.lr.ph413, label %.loopexit

.lr.ph413:                                        ; preds = %50
  %52 = icmp sgt i32 %32, 0
  %53 = add nsw i32 %17, -4
  %.not324360 = icmp slt i32 %17, 4
  %54 = mul nsw i32 %17, %13
  %55 = mul nsw i32 %17, 3
  %56 = sext i32 %17 to i64
  %57 = shl i32 %17, 1
  %58 = sext i32 %57 to i64
  %59 = sext i32 %54 to i64
  %60 = sext i32 %55 to i64
  br i1 %52, label %.preheader349.lr.ph.us.preheader, label %.loopexit

.preheader349.lr.ph.us.preheader:                 ; preds = %.lr.ph413
  %61 = sub i32 0, %21
  %62 = sub nsw i32 0, %23
  %63 = sext i32 %61 to i64
  %64 = sext i32 %25 to i64
  %65 = sext i32 %13 to i64
  %invariant.op = add nsw i64 %65, -2
  %invariant.op462 = add nsw i64 %65, -2
  %66 = add i32 %23, %15
  br label %.preheader349.lr.ph.us

.preheader349.lr.ph.us:                           ; preds = %.preheader349.lr.ph.us.preheader, %._crit_edge407.us
  %.0306411.us = phi i32 [ %.3.lcssa.us, %._crit_edge407.us ], [ 0, %.preheader349.lr.ph.us.preheader ]
  %.0309410.us = phi i32 [ %491, %._crit_edge407.us ], [ 0, %.preheader349.lr.ph.us.preheader ]
  %.0310409.us = phi i32 [ %490, %._crit_edge407.us ], [ %62, %.preheader349.lr.ph.us.preheader ]
  %67 = mul i32 %27, %.0309410.us
  %68 = sub i32 %66, %67
  %smin482 = tail call i32 @llvm.smin.i32(i32 %68, i32 3)
  %69 = sub i32 %23, %67
  %smax483 = tail call i32 @llvm.smax.i32(i32 %69, i32 0)
  %70 = sub i32 %smin482, %smax483
  %.neg487 = add nuw i32 %smax483, 1
  %71 = mul i32 %27, %.0309410.us
  %72 = sub i32 %66, %71
  %smin477 = tail call i32 @llvm.smin.i32(i32 %72, i32 3)
  %73 = sub i32 %23, %71
  %smax478 = tail call i32 @llvm.smax.i32(i32 %73, i32 0)
  %74 = sub i32 %smin477, %smax478
  %.neg = add nuw i32 %smax478, 1
  %75 = mul i32 %27, %.0309410.us
  %76 = sub i32 %66, %75
  %smin = tail call i32 @llvm.smin.i32(i32 %76, i32 3)
  %77 = sub i32 %23, %75
  %smax = tail call i32 @llvm.smax.i32(i32 %77, i32 0)
  %78 = sub i32 %smin, %smax
  %79 = sub nsw i32 0, %.0310409.us
  %80 = tail call i32 @llvm.smax.i32(i32 %79, i32 0)
  %81 = add nsw i32 %80, %.0310409.us
  %82 = mul nsw i32 %81, %54
  %83 = sext i32 %82 to i64
  %84 = getelementptr inbounds i8, ptr %4, i64 %83
  %85 = mul nsw i32 %80, %55
  %86 = sext i32 %85 to i64
  %87 = getelementptr inbounds i8, ptr %6, i64 %86
  %88 = sub nsw i32 %15, %.0310409.us
  %89 = tail call i32 @llvm.smin.i32(i32 %88, i32 3)
  %90 = icmp slt i32 %80, %89
  %xtraiter = and i32 %78, 3
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  %91 = sub i32 %smax, %smin
  %92 = icmp ugt i32 %91, -4
  %xtraiter479 = and i32 %74, 1
  %lcmp.mod480.not = icmp eq i32 %xtraiter479, 0
  %93 = add nuw nsw i32 %80, 1
  %94 = icmp eq i32 %smin477, %.neg
  %xtraiter484 = and i32 %70, 1
  %lcmp.mod485.not = icmp eq i32 %xtraiter484, 0
  %95 = add nuw nsw i32 %80, 1
  %96 = icmp eq i32 %smin482, %.neg487
  br label %.preheader349.us

97:                                               ; preds = %.lr.ph363.us, %._crit_edge.us
  %indvars.iv432 = phi i64 [ %263, %.lr.ph363.us ], [ %indvars.iv.next433, %._crit_edge.us ]
  %indvars.iv = phi i64 [ 0, %.lr.ph363.us ], [ %indvars.iv.next, %._crit_edge.us ]
  %98 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv
  %99 = load i32, ptr %98, align 4, !tbaa !26
  %100 = or disjoint i64 %indvars.iv, 1
  %101 = getelementptr inbounds i32, ptr %8, i64 %100
  %102 = load i32, ptr %101, align 4, !tbaa !26
  %103 = or disjoint i64 %indvars.iv, 2
  %104 = getelementptr inbounds i32, ptr %8, i64 %103
  %105 = load i32, ptr %104, align 4, !tbaa !26
  %106 = or disjoint i64 %indvars.iv, 3
  %107 = getelementptr inbounds i32, ptr %8, i64 %106
  %108 = load i32, ptr %107, align 4, !tbaa !26
  br i1 %90, label %.lr.ph.us.preheader, label %._crit_edge.us

.lr.ph.us.preheader:                              ; preds = %97
  %109 = getelementptr inbounds i8, ptr %87, i64 %indvars.iv
  %110 = getelementptr inbounds i8, ptr %260, i64 %indvars.iv
  br label %.lr.ph.us

._crit_edge.us:                                   ; preds = %236, %97
  %.0298.lcssa.us = phi i32 [ %99, %97 ], [ %.2300.us, %236 ]
  %.0295.lcssa.us = phi i32 [ %102, %97 ], [ %.2297.us, %236 ]
  %.0292.lcssa.us = phi i32 [ %105, %97 ], [ %.2294.us, %236 ]
  %.0289.lcssa.us = phi i32 [ %108, %97 ], [ %.2291.us, %236 ]
  %111 = getelementptr inbounds i32, ptr %30, i64 %indvars.iv
  %112 = load i32, ptr %111, align 4, !tbaa !26
  %113 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv
  %114 = load i32, ptr %113, align 4, !tbaa !26
  %115 = tail call i32 @arm_nn_requantize(i32 noundef %.0298.lcssa.us, i32 noundef %112, i32 noundef %114)
  %116 = getelementptr inbounds i32, ptr %30, i64 %100
  %117 = load i32, ptr %116, align 4, !tbaa !26
  %118 = getelementptr inbounds i32, ptr %29, i64 %100
  %119 = load i32, ptr %118, align 4, !tbaa !26
  %120 = tail call i32 @arm_nn_requantize(i32 noundef %.0295.lcssa.us, i32 noundef %117, i32 noundef %119)
  %121 = getelementptr inbounds i32, ptr %30, i64 %103
  %122 = load i32, ptr %121, align 4, !tbaa !26
  %123 = getelementptr inbounds i32, ptr %29, i64 %103
  %124 = load i32, ptr %123, align 4, !tbaa !26
  %125 = tail call i32 @arm_nn_requantize(i32 noundef %.0292.lcssa.us, i32 noundef %122, i32 noundef %124)
  %126 = getelementptr inbounds i32, ptr %30, i64 %106
  %127 = load i32, ptr %126, align 4, !tbaa !26
  %128 = getelementptr inbounds i32, ptr %29, i64 %106
  %129 = load i32, ptr %128, align 4, !tbaa !26
  %130 = tail call i32 @arm_nn_requantize(i32 noundef %.0289.lcssa.us, i32 noundef %127, i32 noundef %129)
  %131 = add nsw i32 %115, %36
  %132 = add nsw i32 %120, %36
  %133 = add nsw i32 %125, %36
  %134 = add nsw i32 %130, %36
  %135 = tail call i32 @llvm.smax.i32(i32 %131, i32 %39)
  %..us = tail call i32 @llvm.smin.i32(i32 %135, i32 %41)
  %136 = tail call i32 @llvm.smax.i32(i32 %132, i32 %39)
  %137 = tail call i32 @llvm.smin.i32(i32 %136, i32 %41)
  %138 = tail call i32 @llvm.smax.i32(i32 %133, i32 %39)
  %139 = tail call i32 @llvm.smin.i32(i32 %138, i32 %41)
  %140 = tail call i32 @llvm.smax.i32(i32 %134, i32 %39)
  %141 = tail call i32 @llvm.smin.i32(i32 %140, i32 %41)
  %142 = trunc i32 %..us to i8
  %143 = getelementptr inbounds i8, ptr %10, i64 %indvars.iv432
  store i8 %142, ptr %143, align 1, !tbaa !27
  %144 = trunc i32 %137 to i8
  %145 = getelementptr i8, ptr %143, i64 1
  store i8 %144, ptr %145, align 1, !tbaa !27
  %146 = trunc i32 %139 to i8
  %147 = getelementptr i8, ptr %143, i64 2
  store i8 %146, ptr %147, align 1, !tbaa !27
  %148 = trunc i32 %141 to i8
  %indvars.iv.next433 = add nsw i64 %indvars.iv432, 4
  %149 = getelementptr i8, ptr %143, i64 3
  store i8 %148, ptr %149, align 1, !tbaa !27
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 4
  %150 = trunc nuw i64 %indvars.iv.next to i32
  %.not324.us = icmp slt i32 %53, %150
  br i1 %.not324.us, label %.preheader.us.loopexit, label %97, !llvm.loop !28

.lr.ph.us:                                        ; preds = %.lr.ph.us.preheader, %236
  %.0286356.us = phi i32 [ %239, %236 ], [ %80, %.lr.ph.us.preheader ]
  %.0287355.us = phi ptr [ %238, %236 ], [ %109, %.lr.ph.us.preheader ]
  %.0288354.us = phi ptr [ %237, %236 ], [ %110, %.lr.ph.us.preheader ]
  %.0289353.us = phi i32 [ %.2291.us, %236 ], [ %108, %.lr.ph.us.preheader ]
  %.0292352.us = phi i32 [ %.2294.us, %236 ], [ %105, %.lr.ph.us.preheader ]
  %.0295351.us = phi i32 [ %.2297.us, %236 ], [ %102, %.lr.ph.us.preheader ]
  %.0298350.us = phi i32 [ %.2300.us, %236 ], [ %99, %.lr.ph.us.preheader ]
  br i1 %261, label %151, label %178

151:                                              ; preds = %.lr.ph.us
  %152 = tail call i32 @arm_nn_read_q7x4(ptr noundef %.0288354.us)
  %153 = tail call i32 @arm_nn_read_q7x4(ptr noundef %.0287355.us)
  %sext.us = shl i32 %152, 24
  %154 = ashr exact i32 %sext.us, 24
  %155 = add nsw i32 %154, %37
  %sext325.us = shl i32 %153, 24
  %156 = ashr exact i32 %sext325.us, 24
  %157 = mul nsw i32 %155, %156
  %158 = add nsw i32 %157, %.0298350.us
  %159 = shl i32 %152, 16
  %160 = ashr i32 %159, 24
  %161 = add nsw i32 %160, %37
  %162 = shl i32 %153, 16
  %163 = ashr i32 %162, 24
  %164 = mul nsw i32 %161, %163
  %165 = add nsw i32 %164, %.0295351.us
  %166 = shl i32 %152, 8
  %167 = ashr i32 %166, 24
  %168 = add nsw i32 %167, %37
  %169 = shl i32 %153, 8
  %170 = ashr i32 %169, 24
  %171 = mul nsw i32 %168, %170
  %172 = add nsw i32 %171, %.0292352.us
  %173 = ashr i32 %152, 24
  %174 = add nsw i32 %173, %37
  %175 = ashr i32 %153, 24
  %176 = mul nsw i32 %174, %175
  %177 = add nsw i32 %176, %.0289353.us
  br label %178

178:                                              ; preds = %151, %.lr.ph.us
  %.1299.us = phi i32 [ %158, %151 ], [ %.0298350.us, %.lr.ph.us ]
  %.1296.us = phi i32 [ %165, %151 ], [ %.0295351.us, %.lr.ph.us ]
  %.1293.us = phi i32 [ %172, %151 ], [ %.0292352.us, %.lr.ph.us ]
  %.1290.us = phi i32 [ %177, %151 ], [ %.0289353.us, %.lr.ph.us ]
  %179 = getelementptr inbounds i8, ptr %.0288354.us, i64 %56
  %180 = tail call i32 @arm_nn_read_q7x4(ptr noundef nonnull %179)
  %181 = getelementptr inbounds i8, ptr %.0287355.us, i64 %56
  %182 = tail call i32 @arm_nn_read_q7x4(ptr noundef nonnull %181)
  %sext332.us = shl i32 %180, 24
  %183 = ashr exact i32 %sext332.us, 24
  %184 = add nsw i32 %183, %37
  %sext333.us = shl i32 %182, 24
  %185 = ashr exact i32 %sext333.us, 24
  %186 = mul nsw i32 %184, %185
  %187 = add nsw i32 %186, %.1299.us
  %188 = shl i32 %180, 16
  %189 = ashr i32 %188, 24
  %190 = add nsw i32 %189, %37
  %191 = shl i32 %182, 16
  %192 = ashr i32 %191, 24
  %193 = mul nsw i32 %190, %192
  %194 = add nsw i32 %193, %.1296.us
  %195 = shl i32 %180, 8
  %196 = ashr i32 %195, 24
  %197 = add nsw i32 %196, %37
  %198 = shl i32 %182, 8
  %199 = ashr i32 %198, 24
  %200 = mul nsw i32 %197, %199
  %201 = add nsw i32 %200, %.1293.us
  %202 = ashr i32 %180, 24
  %203 = add nsw i32 %202, %37
  %204 = ashr i32 %182, 24
  %205 = mul nsw i32 %203, %204
  %206 = add nsw i32 %205, %.1290.us
  br i1 %262, label %207, label %236

207:                                              ; preds = %178
  %208 = getelementptr inbounds i8, ptr %.0288354.us, i64 %58
  %209 = tail call i32 @arm_nn_read_q7x4(ptr noundef nonnull %208)
  %210 = getelementptr inbounds i8, ptr %.0287355.us, i64 %58
  %211 = tail call i32 @arm_nn_read_q7x4(ptr noundef nonnull %210)
  %sext340.us = shl i32 %209, 24
  %212 = ashr exact i32 %sext340.us, 24
  %213 = add nsw i32 %212, %37
  %sext341.us = shl i32 %211, 24
  %214 = ashr exact i32 %sext341.us, 24
  %215 = mul nsw i32 %213, %214
  %216 = add nsw i32 %215, %187
  %217 = shl i32 %209, 16
  %218 = ashr i32 %217, 24
  %219 = add nsw i32 %218, %37
  %220 = shl i32 %211, 16
  %221 = ashr i32 %220, 24
  %222 = mul nsw i32 %219, %221
  %223 = add nsw i32 %222, %194
  %224 = shl i32 %209, 8
  %225 = ashr i32 %224, 24
  %226 = add nsw i32 %225, %37
  %227 = shl i32 %211, 8
  %228 = ashr i32 %227, 24
  %229 = mul nsw i32 %226, %228
  %230 = add nsw i32 %229, %201
  %231 = ashr i32 %209, 24
  %232 = add nsw i32 %231, %37
  %233 = ashr i32 %211, 24
  %234 = mul nsw i32 %232, %233
  %235 = add nsw i32 %234, %206
  br label %236

236:                                              ; preds = %207, %178
  %.2300.us = phi i32 [ %216, %207 ], [ %187, %178 ]
  %.2297.us = phi i32 [ %223, %207 ], [ %194, %178 ]
  %.2294.us = phi i32 [ %230, %207 ], [ %201, %178 ]
  %.2291.us = phi i32 [ %235, %207 ], [ %206, %178 ]
  %237 = getelementptr inbounds i8, ptr %.0288354.us, i64 %59
  %238 = getelementptr inbounds i8, ptr %.0287355.us, i64 %60
  %239 = add nuw nsw i32 %.0286356.us, 1
  %240 = icmp slt i32 %239, %89
  br i1 %240, label %.lr.ph.us, label %._crit_edge.us, !llvm.loop !30

._crit_edge385.us.loopexit:                       ; preds = %._crit_edge372.us.us
  %241 = trunc nsw i64 %indvars.iv.next447 to i32
  br label %._crit_edge385.us

._crit_edge385.us.loopexit423:                    ; preds = %.lr.ph384.split.us419
  %242 = trunc nsw i64 %indvars.iv.next440 to i32
  br label %._crit_edge385.us

._crit_edge385.us:                                ; preds = %._crit_edge385.us.loopexit423, %._crit_edge385.us.loopexit, %.preheader.us
  %.3.lcssa.us = phi i32 [ %.2308.lcssa.us, %.preheader.us ], [ %241, %._crit_edge385.us.loopexit ], [ %242, %._crit_edge385.us.loopexit423 ]
  %indvars.iv.next452 = add nsw i64 %indvars.iv451, %64
  %243 = add nuw nsw i32 %.0304406.us, 1
  %exitcond.not = icmp eq i32 %243, %32
  br i1 %exitcond.not, label %._crit_edge407.us, label %.preheader349.us, !llvm.loop !31

.lr.ph384.split.us419:                            ; preds = %.lr.ph384.us, %.lr.ph384.split.us419
  %indvars.iv439 = phi i64 [ %indvars.iv.next440, %.lr.ph384.split.us419 ], [ %269, %.lr.ph384.us ]
  %indvars.iv437 = phi i64 [ %indvars.iv.next438, %.lr.ph384.split.us419 ], [ %268, %.lr.ph384.us ]
  %244 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv437
  %245 = load i32, ptr %244, align 4, !tbaa !26
  %246 = getelementptr inbounds i32, ptr %30, i64 %indvars.iv437
  %247 = load i32, ptr %246, align 4, !tbaa !26
  %248 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv437
  %249 = load i32, ptr %248, align 4, !tbaa !26
  %250 = tail call i32 @arm_nn_requantize(i32 noundef %245, i32 noundef %247, i32 noundef %249)
  %251 = add nsw i32 %250, %36
  %252 = tail call i32 @llvm.smax.i32(i32 %251, i32 %39)
  %.348.us416 = tail call i32 @llvm.smin.i32(i32 %252, i32 %41)
  %253 = trunc i32 %.348.us416 to i8
  %indvars.iv.next440 = add nsw i64 %indvars.iv439, 1
  %254 = getelementptr inbounds i8, ptr %10, i64 %indvars.iv439
  store i8 %253, ptr %254, align 1, !tbaa !27
  %indvars.iv.next438 = add nuw nsw i64 %indvars.iv437, 1
  %255 = trunc nuw i64 %indvars.iv.next438 to i32
  %256 = icmp sgt i32 %17, %255
  br i1 %256, label %.lr.ph384.split.us419, label %._crit_edge385.us.loopexit423, !llvm.loop !32

.preheader.us.loopexit:                           ; preds = %._crit_edge.us
  %257 = trunc nsw i64 %indvars.iv.next433 to i32
  br label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.us.loopexit, %.preheader349.us
  %.2308.lcssa.us = phi i32 [ %.1307404.us, %.preheader349.us ], [ %257, %.preheader.us.loopexit ]
  %.0302.lcssa.us = phi i32 [ 0, %.preheader349.us ], [ %150, %.preheader.us.loopexit ]
  %258 = icmp slt i32 %.0302.lcssa.us, %17
  br i1 %258, label %.lr.ph384.us, label %._crit_edge385.us

.preheader349.us:                                 ; preds = %.preheader349.lr.ph.us, %._crit_edge385.us
  %indvars.iv451 = phi i64 [ %63, %.preheader349.lr.ph.us ], [ %indvars.iv.next452, %._crit_edge385.us ]
  %.0304406.us = phi i32 [ 0, %.preheader349.lr.ph.us ], [ %243, %._crit_edge385.us ]
  %.1307404.us = phi i32 [ %.0306411.us, %.preheader349.lr.ph.us ], [ %.3.lcssa.us, %._crit_edge385.us ]
  br i1 %.not324360, label %.preheader.us, label %.lr.ph363.us

.lr.ph363.us:                                     ; preds = %.preheader349.us
  %259 = mul nsw i64 %indvars.iv451, %56
  %260 = getelementptr inbounds i8, ptr %84, i64 %259
  %261 = icmp sgt i64 %indvars.iv451, -1
  %262 = icmp slt i64 %indvars.iv451, %invariant.op
  %263 = sext i32 %.1307404.us to i64
  br label %97

.lr.ph384.us:                                     ; preds = %.preheader.us
  %264 = mul nsw i64 %indvars.iv451, %56
  %265 = getelementptr inbounds i8, ptr %84, i64 %264
  %266 = icmp sgt i64 %indvars.iv451, -1
  %267 = icmp slt i64 %indvars.iv451, %invariant.op462
  %268 = zext i32 %.0302.lcssa.us to i64
  %269 = sext i32 %.2308.lcssa.us to i64
  br i1 %90, label %.lr.ph371.us.us, label %.lr.ph384.split.us419

.lr.ph371.us.us:                                  ; preds = %.lr.ph384.us, %._crit_edge372.us.us
  %indvars.iv446 = phi i64 [ %indvars.iv.next447, %._crit_edge372.us.us ], [ %269, %.lr.ph384.us ]
  %indvars.iv444 = phi i64 [ %indvars.iv.next445, %._crit_edge372.us.us ], [ %268, %.lr.ph384.us ]
  %270 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv444
  %271 = load i32, ptr %270, align 4, !tbaa !26
  %272 = getelementptr inbounds i8, ptr %265, i64 %indvars.iv444
  %273 = getelementptr inbounds i8, ptr %87, i64 %indvars.iv444
  br i1 %266, label %.lr.ph371.split.us.us.us, label %.lr.ph371.split.us393.us

.lr.ph371.split.split.us400.us:                   ; preds = %.lr.ph371.split.split.us400.us.prol.loopexit, %.lr.ph371.split.split.us400.us
  %.0369.us387.us = phi i32 [ %318, %.lr.ph371.split.split.us400.us ], [ %.0369.us387.us.unr, %.lr.ph371.split.split.us400.us.prol.loopexit ]
  %.0283368.us388.us = phi ptr [ %317, %.lr.ph371.split.split.us400.us ], [ %.0283368.us388.us.unr, %.lr.ph371.split.split.us400.us.prol.loopexit ]
  %.0284367.us389.us = phi ptr [ %316, %.lr.ph371.split.split.us400.us ], [ %.0284367.us389.us.unr, %.lr.ph371.split.split.us400.us.prol.loopexit ]
  %.0285366.us390.us = phi i32 [ %315, %.lr.ph371.split.split.us400.us ], [ %.0285366.us390.us.unr, %.lr.ph371.split.split.us400.us.prol.loopexit ]
  %274 = getelementptr inbounds i8, ptr %.0284367.us389.us, i64 %56
  %275 = load i8, ptr %274, align 1, !tbaa !27
  %276 = sext i8 %275 to i32
  %277 = add nsw i32 %37, %276
  %278 = getelementptr inbounds i8, ptr %.0283368.us388.us, i64 %56
  %279 = load i8, ptr %278, align 1, !tbaa !27
  %280 = sext i8 %279 to i32
  %281 = mul nsw i32 %277, %280
  %282 = add nsw i32 %281, %.0285366.us390.us
  %283 = getelementptr inbounds i8, ptr %.0284367.us389.us, i64 %59
  %284 = getelementptr inbounds i8, ptr %.0283368.us388.us, i64 %60
  %285 = getelementptr inbounds i8, ptr %283, i64 %56
  %286 = load i8, ptr %285, align 1, !tbaa !27
  %287 = sext i8 %286 to i32
  %288 = add nsw i32 %37, %287
  %289 = getelementptr inbounds i8, ptr %284, i64 %56
  %290 = load i8, ptr %289, align 1, !tbaa !27
  %291 = sext i8 %290 to i32
  %292 = mul nsw i32 %288, %291
  %293 = add nsw i32 %292, %282
  %294 = getelementptr inbounds i8, ptr %283, i64 %59
  %295 = getelementptr inbounds i8, ptr %284, i64 %60
  %296 = getelementptr inbounds i8, ptr %294, i64 %56
  %297 = load i8, ptr %296, align 1, !tbaa !27
  %298 = sext i8 %297 to i32
  %299 = add nsw i32 %37, %298
  %300 = getelementptr inbounds i8, ptr %295, i64 %56
  %301 = load i8, ptr %300, align 1, !tbaa !27
  %302 = sext i8 %301 to i32
  %303 = mul nsw i32 %299, %302
  %304 = add nsw i32 %303, %293
  %305 = getelementptr inbounds i8, ptr %294, i64 %59
  %306 = getelementptr inbounds i8, ptr %295, i64 %60
  %307 = getelementptr inbounds i8, ptr %305, i64 %56
  %308 = load i8, ptr %307, align 1, !tbaa !27
  %309 = sext i8 %308 to i32
  %310 = add nsw i32 %37, %309
  %311 = getelementptr inbounds i8, ptr %306, i64 %56
  %312 = load i8, ptr %311, align 1, !tbaa !27
  %313 = sext i8 %312 to i32
  %314 = mul nsw i32 %310, %313
  %315 = add nsw i32 %314, %304
  %316 = getelementptr inbounds i8, ptr %305, i64 %59
  %317 = getelementptr inbounds i8, ptr %306, i64 %60
  %318 = add nuw nsw i32 %.0369.us387.us, 4
  %319 = icmp slt i32 %318, %89
  br i1 %319, label %.lr.ph371.split.split.us400.us, label %._crit_edge372.us.us, !llvm.loop !33

.lr.ph371.split.us393.us:                         ; preds = %.lr.ph371.us.us
  br i1 %267, label %.lr.ph371.split.split.us.us.us.preheader, label %.lr.ph371.split.split.us400.us.preheader

.lr.ph371.split.split.us400.us.preheader:         ; preds = %.lr.ph371.split.us393.us
  br i1 %lcmp.mod.not, label %.lr.ph371.split.split.us400.us.prol.loopexit, label %.lr.ph371.split.split.us400.us.prol

.lr.ph371.split.split.us400.us.prol:              ; preds = %.lr.ph371.split.split.us400.us.preheader, %.lr.ph371.split.split.us400.us.prol
  %.0369.us387.us.prol = phi i32 [ %331, %.lr.ph371.split.split.us400.us.prol ], [ %80, %.lr.ph371.split.split.us400.us.preheader ]
  %.0283368.us388.us.prol = phi ptr [ %330, %.lr.ph371.split.split.us400.us.prol ], [ %273, %.lr.ph371.split.split.us400.us.preheader ]
  %.0284367.us389.us.prol = phi ptr [ %329, %.lr.ph371.split.split.us400.us.prol ], [ %272, %.lr.ph371.split.split.us400.us.preheader ]
  %.0285366.us390.us.prol = phi i32 [ %328, %.lr.ph371.split.split.us400.us.prol ], [ %271, %.lr.ph371.split.split.us400.us.preheader ]
  %prol.iter = phi i32 [ %prol.iter.next, %.lr.ph371.split.split.us400.us.prol ], [ 0, %.lr.ph371.split.split.us400.us.preheader ]
  %320 = getelementptr inbounds i8, ptr %.0284367.us389.us.prol, i64 %56
  %321 = load i8, ptr %320, align 1, !tbaa !27
  %322 = sext i8 %321 to i32
  %323 = add nsw i32 %37, %322
  %324 = getelementptr inbounds i8, ptr %.0283368.us388.us.prol, i64 %56
  %325 = load i8, ptr %324, align 1, !tbaa !27
  %326 = sext i8 %325 to i32
  %327 = mul nsw i32 %323, %326
  %328 = add nsw i32 %327, %.0285366.us390.us.prol
  %329 = getelementptr inbounds i8, ptr %.0284367.us389.us.prol, i64 %59
  %330 = getelementptr inbounds i8, ptr %.0283368.us388.us.prol, i64 %60
  %331 = add nuw nsw i32 %.0369.us387.us.prol, 1
  %prol.iter.next = add i32 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i32 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.lr.ph371.split.split.us400.us.prol.loopexit, label %.lr.ph371.split.split.us400.us.prol, !llvm.loop !34

.lr.ph371.split.split.us400.us.prol.loopexit:     ; preds = %.lr.ph371.split.split.us400.us.prol, %.lr.ph371.split.split.us400.us.preheader
  %.0369.us387.us.unr = phi i32 [ %80, %.lr.ph371.split.split.us400.us.preheader ], [ %331, %.lr.ph371.split.split.us400.us.prol ]
  %.0283368.us388.us.unr = phi ptr [ %273, %.lr.ph371.split.split.us400.us.preheader ], [ %330, %.lr.ph371.split.split.us400.us.prol ]
  %.0284367.us389.us.unr = phi ptr [ %272, %.lr.ph371.split.split.us400.us.preheader ], [ %329, %.lr.ph371.split.split.us400.us.prol ]
  %.0285366.us390.us.unr = phi i32 [ %271, %.lr.ph371.split.split.us400.us.preheader ], [ %328, %.lr.ph371.split.split.us400.us.prol ]
  %.lcssa473.unr = phi i32 [ poison, %.lr.ph371.split.split.us400.us.preheader ], [ %328, %.lr.ph371.split.split.us400.us.prol ]
  br i1 %92, label %._crit_edge372.us.us, label %.lr.ph371.split.split.us400.us

.lr.ph371.split.split.us.us.us.preheader:         ; preds = %.lr.ph371.split.us393.us
  br i1 %lcmp.mod480.not, label %.lr.ph371.split.split.us.us.us.prol.loopexit, label %.lr.ph371.split.split.us.us.us.prol

.lr.ph371.split.split.us.us.us.prol:              ; preds = %.lr.ph371.split.split.us.us.us.preheader
  %332 = getelementptr inbounds i8, ptr %272, i64 %56
  %333 = load i8, ptr %332, align 1, !tbaa !27
  %334 = sext i8 %333 to i32
  %335 = add nsw i32 %37, %334
  %336 = getelementptr inbounds i8, ptr %273, i64 %56
  %337 = load i8, ptr %336, align 1, !tbaa !27
  %338 = sext i8 %337 to i32
  %339 = mul nsw i32 %335, %338
  %340 = add nsw i32 %339, %271
  %341 = getelementptr inbounds i8, ptr %272, i64 %58
  %342 = load i8, ptr %341, align 1, !tbaa !27
  %343 = sext i8 %342 to i32
  %344 = add nsw i32 %37, %343
  %345 = getelementptr inbounds i8, ptr %273, i64 %58
  %346 = load i8, ptr %345, align 1, !tbaa !27
  %347 = sext i8 %346 to i32
  %348 = mul nsw i32 %344, %347
  %349 = add nsw i32 %348, %340
  %350 = getelementptr inbounds i8, ptr %272, i64 %59
  %351 = getelementptr inbounds i8, ptr %273, i64 %60
  br label %.lr.ph371.split.split.us.us.us.prol.loopexit

.lr.ph371.split.split.us.us.us.prol.loopexit:     ; preds = %.lr.ph371.split.split.us.us.us.prol, %.lr.ph371.split.split.us.us.us.preheader
  %.0369.us374.us.us.unr = phi i32 [ %80, %.lr.ph371.split.split.us.us.us.preheader ], [ %93, %.lr.ph371.split.split.us.us.us.prol ]
  %.0283368.us375.us.us.unr = phi ptr [ %273, %.lr.ph371.split.split.us.us.us.preheader ], [ %351, %.lr.ph371.split.split.us.us.us.prol ]
  %.0284367.us376.us.us.unr = phi ptr [ %272, %.lr.ph371.split.split.us.us.us.preheader ], [ %350, %.lr.ph371.split.split.us.us.us.prol ]
  %.0285366.us377.us.us.unr = phi i32 [ %271, %.lr.ph371.split.split.us.us.us.preheader ], [ %349, %.lr.ph371.split.split.us.us.us.prol ]
  %.lcssa474.unr = phi i32 [ poison, %.lr.ph371.split.split.us.us.us.preheader ], [ %349, %.lr.ph371.split.split.us.us.us.prol ]
  br i1 %94, label %._crit_edge372.us.us, label %.lr.ph371.split.split.us.us.us

._crit_edge372.us.us:                             ; preds = %.lr.ph371.split.split.us400.us.prol.loopexit, %.lr.ph371.split.split.us400.us, %.lr.ph371.split.split.us.us.us.prol.loopexit, %.lr.ph371.split.split.us.us.us, %.lr.ph371.split.us.split.us402.us.prol.loopexit, %.lr.ph371.split.us.split.us402.us, %.lr.ph371.split.us.split.us.us.us
  %.us-phi.us.us = phi i32 [ %485, %.lr.ph371.split.us.split.us.us.us ], [ %.lcssa475.unr, %.lr.ph371.split.us.split.us402.us.prol.loopexit ], [ %414, %.lr.ph371.split.us.split.us402.us ], [ %.lcssa474.unr, %.lr.ph371.split.split.us.us.us.prol.loopexit ], [ %456, %.lr.ph371.split.split.us.us.us ], [ %.lcssa473.unr, %.lr.ph371.split.split.us400.us.prol.loopexit ], [ %315, %.lr.ph371.split.split.us400.us ]
  %352 = getelementptr inbounds i32, ptr %30, i64 %indvars.iv444
  %353 = load i32, ptr %352, align 4, !tbaa !26
  %354 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv444
  %355 = load i32, ptr %354, align 4, !tbaa !26
  %356 = tail call i32 @arm_nn_requantize(i32 noundef %.us-phi.us.us, i32 noundef %353, i32 noundef %355)
  %357 = add nsw i32 %356, %36
  %358 = tail call i32 @llvm.smax.i32(i32 %357, i32 %39)
  %.348.us.us = tail call i32 @llvm.smin.i32(i32 %358, i32 %41)
  %359 = trunc i32 %.348.us.us to i8
  %indvars.iv.next447 = add nsw i64 %indvars.iv446, 1
  %360 = getelementptr inbounds i8, ptr %10, i64 %indvars.iv446
  store i8 %359, ptr %360, align 1, !tbaa !27
  %indvars.iv.next445 = add nuw nsw i64 %indvars.iv444, 1
  %361 = trunc nuw i64 %indvars.iv.next445 to i32
  %362 = icmp sgt i32 %17, %361
  br i1 %362, label %.lr.ph371.us.us, label %._crit_edge385.us.loopexit, !llvm.loop !32

.lr.ph371.split.us.us.us:                         ; preds = %.lr.ph371.us.us
  br i1 %267, label %.lr.ph371.split.us.split.us.us.us, label %.lr.ph371.split.us.split.us402.us.preheader

.lr.ph371.split.us.split.us402.us.preheader:      ; preds = %.lr.ph371.split.us.us.us
  br i1 %lcmp.mod485.not, label %.lr.ph371.split.us.split.us402.us.prol.loopexit, label %.lr.ph371.split.us.split.us402.us.prol

.lr.ph371.split.us.split.us402.us.prol:           ; preds = %.lr.ph371.split.us.split.us402.us.preheader
  %363 = load i8, ptr %272, align 1, !tbaa !27
  %364 = sext i8 %363 to i32
  %365 = add nsw i32 %37, %364
  %366 = load i8, ptr %273, align 1, !tbaa !27
  %367 = sext i8 %366 to i32
  %368 = mul nsw i32 %365, %367
  %369 = add nsw i32 %368, %271
  %370 = getelementptr inbounds i8, ptr %272, i64 %56
  %371 = load i8, ptr %370, align 1, !tbaa !27
  %372 = sext i8 %371 to i32
  %373 = add nsw i32 %37, %372
  %374 = getelementptr inbounds i8, ptr %273, i64 %56
  %375 = load i8, ptr %374, align 1, !tbaa !27
  %376 = sext i8 %375 to i32
  %377 = mul nsw i32 %373, %376
  %378 = add nsw i32 %377, %369
  %379 = getelementptr inbounds i8, ptr %272, i64 %59
  %380 = getelementptr inbounds i8, ptr %273, i64 %60
  br label %.lr.ph371.split.us.split.us402.us.prol.loopexit

.lr.ph371.split.us.split.us402.us.prol.loopexit:  ; preds = %.lr.ph371.split.us.split.us402.us.prol, %.lr.ph371.split.us.split.us402.us.preheader
  %.0369.us.us394.us.unr = phi i32 [ %80, %.lr.ph371.split.us.split.us402.us.preheader ], [ %95, %.lr.ph371.split.us.split.us402.us.prol ]
  %.0283368.us.us395.us.unr = phi ptr [ %273, %.lr.ph371.split.us.split.us402.us.preheader ], [ %380, %.lr.ph371.split.us.split.us402.us.prol ]
  %.0284367.us.us396.us.unr = phi ptr [ %272, %.lr.ph371.split.us.split.us402.us.preheader ], [ %379, %.lr.ph371.split.us.split.us402.us.prol ]
  %.0285366.us.us397.us.unr = phi i32 [ %271, %.lr.ph371.split.us.split.us402.us.preheader ], [ %378, %.lr.ph371.split.us.split.us402.us.prol ]
  %.lcssa475.unr = phi i32 [ poison, %.lr.ph371.split.us.split.us402.us.preheader ], [ %378, %.lr.ph371.split.us.split.us402.us.prol ]
  br i1 %96, label %._crit_edge372.us.us, label %.lr.ph371.split.us.split.us402.us

.lr.ph371.split.us.split.us402.us:                ; preds = %.lr.ph371.split.us.split.us402.us.prol.loopexit, %.lr.ph371.split.us.split.us402.us
  %.0369.us.us394.us = phi i32 [ %417, %.lr.ph371.split.us.split.us402.us ], [ %.0369.us.us394.us.unr, %.lr.ph371.split.us.split.us402.us.prol.loopexit ]
  %.0283368.us.us395.us = phi ptr [ %416, %.lr.ph371.split.us.split.us402.us ], [ %.0283368.us.us395.us.unr, %.lr.ph371.split.us.split.us402.us.prol.loopexit ]
  %.0284367.us.us396.us = phi ptr [ %415, %.lr.ph371.split.us.split.us402.us ], [ %.0284367.us.us396.us.unr, %.lr.ph371.split.us.split.us402.us.prol.loopexit ]
  %.0285366.us.us397.us = phi i32 [ %414, %.lr.ph371.split.us.split.us402.us ], [ %.0285366.us.us397.us.unr, %.lr.ph371.split.us.split.us402.us.prol.loopexit ]
  %381 = load i8, ptr %.0284367.us.us396.us, align 1, !tbaa !27
  %382 = sext i8 %381 to i32
  %383 = add nsw i32 %37, %382
  %384 = load i8, ptr %.0283368.us.us395.us, align 1, !tbaa !27
  %385 = sext i8 %384 to i32
  %386 = mul nsw i32 %383, %385
  %387 = add nsw i32 %386, %.0285366.us.us397.us
  %388 = getelementptr inbounds i8, ptr %.0284367.us.us396.us, i64 %56
  %389 = load i8, ptr %388, align 1, !tbaa !27
  %390 = sext i8 %389 to i32
  %391 = add nsw i32 %37, %390
  %392 = getelementptr inbounds i8, ptr %.0283368.us.us395.us, i64 %56
  %393 = load i8, ptr %392, align 1, !tbaa !27
  %394 = sext i8 %393 to i32
  %395 = mul nsw i32 %391, %394
  %396 = add nsw i32 %395, %387
  %397 = getelementptr inbounds i8, ptr %.0284367.us.us396.us, i64 %59
  %398 = getelementptr inbounds i8, ptr %.0283368.us.us395.us, i64 %60
  %399 = load i8, ptr %397, align 1, !tbaa !27
  %400 = sext i8 %399 to i32
  %401 = add nsw i32 %37, %400
  %402 = load i8, ptr %398, align 1, !tbaa !27
  %403 = sext i8 %402 to i32
  %404 = mul nsw i32 %401, %403
  %405 = add nsw i32 %404, %396
  %406 = getelementptr inbounds i8, ptr %397, i64 %56
  %407 = load i8, ptr %406, align 1, !tbaa !27
  %408 = sext i8 %407 to i32
  %409 = add nsw i32 %37, %408
  %410 = getelementptr inbounds i8, ptr %398, i64 %56
  %411 = load i8, ptr %410, align 1, !tbaa !27
  %412 = sext i8 %411 to i32
  %413 = mul nsw i32 %409, %412
  %414 = add nsw i32 %413, %405
  %415 = getelementptr inbounds i8, ptr %397, i64 %59
  %416 = getelementptr inbounds i8, ptr %398, i64 %60
  %417 = add nuw nsw i32 %.0369.us.us394.us, 2
  %418 = icmp slt i32 %417, %89
  br i1 %418, label %.lr.ph371.split.us.split.us402.us, label %._crit_edge372.us.us, !llvm.loop !33

.lr.ph371.split.split.us.us.us:                   ; preds = %.lr.ph371.split.split.us.us.us.prol.loopexit, %.lr.ph371.split.split.us.us.us
  %.0369.us374.us.us = phi i32 [ %459, %.lr.ph371.split.split.us.us.us ], [ %.0369.us374.us.us.unr, %.lr.ph371.split.split.us.us.us.prol.loopexit ]
  %.0283368.us375.us.us = phi ptr [ %458, %.lr.ph371.split.split.us.us.us ], [ %.0283368.us375.us.us.unr, %.lr.ph371.split.split.us.us.us.prol.loopexit ]
  %.0284367.us376.us.us = phi ptr [ %457, %.lr.ph371.split.split.us.us.us ], [ %.0284367.us376.us.us.unr, %.lr.ph371.split.split.us.us.us.prol.loopexit ]
  %.0285366.us377.us.us = phi i32 [ %456, %.lr.ph371.split.split.us.us.us ], [ %.0285366.us377.us.us.unr, %.lr.ph371.split.split.us.us.us.prol.loopexit ]
  %419 = getelementptr inbounds i8, ptr %.0284367.us376.us.us, i64 %56
  %420 = load i8, ptr %419, align 1, !tbaa !27
  %421 = sext i8 %420 to i32
  %422 = add nsw i32 %37, %421
  %423 = getelementptr inbounds i8, ptr %.0283368.us375.us.us, i64 %56
  %424 = load i8, ptr %423, align 1, !tbaa !27
  %425 = sext i8 %424 to i32
  %426 = mul nsw i32 %422, %425
  %427 = add nsw i32 %426, %.0285366.us377.us.us
  %428 = getelementptr inbounds i8, ptr %.0284367.us376.us.us, i64 %58
  %429 = load i8, ptr %428, align 1, !tbaa !27
  %430 = sext i8 %429 to i32
  %431 = add nsw i32 %37, %430
  %432 = getelementptr inbounds i8, ptr %.0283368.us375.us.us, i64 %58
  %433 = load i8, ptr %432, align 1, !tbaa !27
  %434 = sext i8 %433 to i32
  %435 = mul nsw i32 %431, %434
  %436 = add nsw i32 %435, %427
  %437 = getelementptr inbounds i8, ptr %.0284367.us376.us.us, i64 %59
  %438 = getelementptr inbounds i8, ptr %.0283368.us375.us.us, i64 %60
  %439 = getelementptr inbounds i8, ptr %437, i64 %56
  %440 = load i8, ptr %439, align 1, !tbaa !27
  %441 = sext i8 %440 to i32
  %442 = add nsw i32 %37, %441
  %443 = getelementptr inbounds i8, ptr %438, i64 %56
  %444 = load i8, ptr %443, align 1, !tbaa !27
  %445 = sext i8 %444 to i32
  %446 = mul nsw i32 %442, %445
  %447 = add nsw i32 %446, %436
  %448 = getelementptr inbounds i8, ptr %437, i64 %58
  %449 = load i8, ptr %448, align 1, !tbaa !27
  %450 = sext i8 %449 to i32
  %451 = add nsw i32 %37, %450
  %452 = getelementptr inbounds i8, ptr %438, i64 %58
  %453 = load i8, ptr %452, align 1, !tbaa !27
  %454 = sext i8 %453 to i32
  %455 = mul nsw i32 %451, %454
  %456 = add nsw i32 %455, %447
  %457 = getelementptr inbounds i8, ptr %437, i64 %59
  %458 = getelementptr inbounds i8, ptr %438, i64 %60
  %459 = add nuw nsw i32 %.0369.us374.us.us, 2
  %460 = icmp slt i32 %459, %89
  br i1 %460, label %.lr.ph371.split.split.us.us.us, label %._crit_edge372.us.us, !llvm.loop !33

.lr.ph371.split.us.split.us.us.us:                ; preds = %.lr.ph371.split.us.us.us, %.lr.ph371.split.us.split.us.us.us
  %.0369.us.us.us.us = phi i32 [ %488, %.lr.ph371.split.us.split.us.us.us ], [ %80, %.lr.ph371.split.us.us.us ]
  %.0283368.us.us.us.us = phi ptr [ %487, %.lr.ph371.split.us.split.us.us.us ], [ %273, %.lr.ph371.split.us.us.us ]
  %.0284367.us.us.us.us = phi ptr [ %486, %.lr.ph371.split.us.split.us.us.us ], [ %272, %.lr.ph371.split.us.us.us ]
  %.0285366.us.us.us.us = phi i32 [ %485, %.lr.ph371.split.us.split.us.us.us ], [ %271, %.lr.ph371.split.us.us.us ]
  %461 = load i8, ptr %.0284367.us.us.us.us, align 1, !tbaa !27
  %462 = sext i8 %461 to i32
  %463 = add nsw i32 %37, %462
  %464 = load i8, ptr %.0283368.us.us.us.us, align 1, !tbaa !27
  %465 = sext i8 %464 to i32
  %466 = mul nsw i32 %463, %465
  %467 = add nsw i32 %466, %.0285366.us.us.us.us
  %468 = getelementptr inbounds i8, ptr %.0284367.us.us.us.us, i64 %56
  %469 = load i8, ptr %468, align 1, !tbaa !27
  %470 = sext i8 %469 to i32
  %471 = add nsw i32 %37, %470
  %472 = getelementptr inbounds i8, ptr %.0283368.us.us.us.us, i64 %56
  %473 = load i8, ptr %472, align 1, !tbaa !27
  %474 = sext i8 %473 to i32
  %475 = mul nsw i32 %471, %474
  %476 = add nsw i32 %475, %467
  %477 = getelementptr inbounds i8, ptr %.0284367.us.us.us.us, i64 %58
  %478 = load i8, ptr %477, align 1, !tbaa !27
  %479 = sext i8 %478 to i32
  %480 = add nsw i32 %37, %479
  %481 = getelementptr inbounds i8, ptr %.0283368.us.us.us.us, i64 %58
  %482 = load i8, ptr %481, align 1, !tbaa !27
  %483 = sext i8 %482 to i32
  %484 = mul nsw i32 %480, %483
  %485 = add nsw i32 %484, %476
  %486 = getelementptr inbounds i8, ptr %.0284367.us.us.us.us, i64 %59
  %487 = getelementptr inbounds i8, ptr %.0283368.us.us.us.us, i64 %60
  %488 = add nuw nsw i32 %.0369.us.us.us.us, 1
  %489 = icmp slt i32 %488, %89
  br i1 %489, label %.lr.ph371.split.us.split.us.us.us, label %._crit_edge372.us.us, !llvm.loop !33

._crit_edge407.us:                                ; preds = %._crit_edge385.us
  %490 = add nsw i32 %.0310409.us, %27
  %491 = add nuw nsw i32 %.0309410.us, 1
  %exitcond454.not = icmp eq i32 %491, %34
  br i1 %exitcond454.not, label %.loopexit, label %.preheader349.lr.ph.us, !llvm.loop !36

.loopexit:                                        ; preds = %._crit_edge407.us, %.lr.ph413, %50, %42, %44, %47, %11
  %.0301 = phi i32 [ -3, %11 ], [ -1, %47 ], [ -1, %44 ], [ -1, %42 ], [ 0, %50 ], [ 0, %.lr.ph413 ], [ 0, %._crit_edge407.us ]
  ret i32 %.0301
}

; Function Attrs: alwaysinline nounwind uwtable
declare hidden i32 @arm_nn_read_q7x4(ptr noundef) local_unnamed_addr #1

; Function Attrs: alwaysinline nounwind uwtable
declare hidden i32 @arm_nn_requantize(i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

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

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

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

!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, !7, i64 8}
!6 = !{!"", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!6, !7, i64 4}
!11 = !{!6, !7, i64 12}
!12 = !{!13, !7, i64 20}
!13 = !{!"", !7, i64 0, !7, i64 4, !7, i64 8, !14, i64 12, !14, i64 20, !14, i64 28, !14, i64 36}
!14 = !{!"", !7, i64 0, !7, i64 4}
!15 = !{!13, !7, i64 24}
!16 = !{!13, !7, i64 12}
!17 = !{!13, !7, i64 16}
!18 = !{!19, !20, i64 8}
!19 = !{!"", !20, i64 0, !20, i64 8}
!20 = !{!"any pointer", !8, i64 0}
!21 = !{!19, !20, i64 0}
!22 = !{!13, !7, i64 4}
!23 = !{!13, !7, i64 0}
!24 = !{!13, !7, i64 36}
!25 = !{!13, !7, i64 40}
!26 = !{!7, !7, i64 0}
!27 = !{!8, !8, i64 0}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = distinct !{!30, !29}
!31 = distinct !{!31, !29}
!32 = distinct !{!32, !29}
!33 = distinct !{!33, !29}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.unroll.disable"}
!36 = distinct !{!36, !29}


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