; LLVM IR from awawa-dev/HyperHDR :: sources/base/SoundCaptureResult.ll (ZN18SoundCaptureResult6SmoothEv)

; 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.MovingTarget = type { %struct.ColorRgb, %struct.ColorRgb, %struct.ColorRgb, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.ColorRgb = type { i8, i8, i8 }
%class.SoundCaptureResult = type { i32, i8, i32, [8 x i32], [8 x i32], [8 x i32], [8 x i8], [8 x i8], [8 x i8], [8 x %struct.ColorRgb], i32, %struct.ColorRgb, i32, i32, i32, %struct.MovingTarget, %struct.MovingTarget }

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #0

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #0

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8ColorRgbC2Ehhh(ptr noundef nonnull align 1 dereferenceable(3), i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext) unnamed_addr #2 align 2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN18SoundCaptureResult6SmoothEv(ptr noundef nonnull align 4 dereferenceable(296) %0) #4 align 2 {
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca %struct.MovingTarget, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca %struct.ColorRgb, align 1
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca %struct.ColorRgb, align 1
  %57 = alloca %struct.ColorRgb, align 1
  %58 = alloca %struct.ColorRgb, align 1
  %59 = alloca i24, align 4
  %60 = alloca i24, align 4
  %61 = alloca i24, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca %struct.ColorRgb, align 1
  %66 = alloca %struct.ColorRgb, align 1
  %67 = alloca %struct.ColorRgb, align 1
  %68 = alloca i24, align 4
  %69 = alloca i24, align 4
  %70 = alloca i24, align 4
  %71 = alloca i32, align 4
  %72 = alloca i32, align 4
  %73 = alloca i32, align 4
  %74 = alloca %struct.ColorRgb, align 1
  %75 = alloca %struct.ColorRgb, align 1
  %76 = alloca %struct.ColorRgb, align 1
  %77 = alloca i24, align 4
  %78 = alloca i24, align 4
  %79 = alloca i24, align 4
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca i32, align 4
  %85 = alloca i32, align 4
  %86 = alloca i32, align 4
  %87 = alloca i32, align 4
  %88 = alloca i32, align 4
  %89 = alloca i32, align 4
  %90 = alloca i32, align 4
  %91 = alloca i32, align 4
  %92 = alloca i32, align 4
  %93 = alloca %struct.ColorRgb, align 1
  %94 = alloca i32, align 4
  %95 = alloca i32, align 4
  %96 = alloca i32, align 4
  %97 = alloca i32, align 4
  %98 = alloca i32, align 4
  %99 = alloca i32, align 4
  %100 = alloca i32, align 4
  %101 = alloca i32, align 4
  %102 = alloca i32, align 4
  %103 = alloca i32, align 4
  %104 = alloca i32, align 4
  %105 = alloca i32, align 4
  %106 = alloca i32, align 4
  %107 = alloca %struct.ColorRgb, align 1
  %108 = alloca i32, align 4
  %109 = alloca i32, align 4
  %110 = alloca i32, align 4
  %111 = alloca i32, align 4
  %112 = alloca i32, align 4
  %113 = alloca i32, align 4
  %114 = alloca i32, align 4
  %115 = alloca i32, align 4
  %116 = alloca i32, align 4
  %117 = alloca i32, align 4
  %118 = alloca i32, align 4
  %119 = alloca i32, align 4
  %120 = alloca i32, align 4
  %121 = alloca %struct.ColorRgb, align 1
  store ptr %0, ptr %2, align 8, !tbaa !5
  %122 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #6
  store i32 0, ptr %3, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #6
  store i32 0, ptr %4, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #6
  store i32 0, ptr %5, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #6
  store i32 0, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #6
  store i32 0, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 60, ptr %8) #6
  %123 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 16
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %8, ptr align 4 %123, i64 60, i1 false), !tbaa.struct !11
  %124 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 1
  store i8 1, ptr %124, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #6
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %125

125:                                              ; preds = %336, %1
  %126 = load i32, ptr %9, align 4, !tbaa !9
  %127 = icmp slt i32 %126, 8
  br i1 %127, label %129, label %128

128:                                              ; preds = %125
  store i32 2, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  br label %339

129:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  %130 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 3
  %131 = load i32, ptr %9, align 4, !tbaa !9
  %132 = sext i32 %131 to i64
  %133 = getelementptr inbounds [8 x i32], ptr %130, i64 0, i64 %132
  %134 = load i32, ptr %133, align 4, !tbaa !9
  %135 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 4
  %136 = load i32, ptr %9, align 4, !tbaa !9
  %137 = sext i32 %136 to i64
  %138 = getelementptr inbounds [8 x i32], ptr %135, i64 0, i64 %137
  %139 = load i32, ptr %138, align 4, !tbaa !9
  %140 = add nsw i32 %134, %139
  %141 = sdiv i32 %140, 2
  store i32 %141, ptr %11, align 4, !tbaa !9
  %142 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 5
  %143 = load i32, ptr %9, align 4, !tbaa !9
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds [8 x i32], ptr %142, i64 0, i64 %144
  %146 = load i32, ptr %145, align 4, !tbaa !9
  %147 = load i32, ptr %11, align 4, !tbaa !9
  %148 = icmp sle i32 %146, %147
  br i1 %148, label %149, label %203

149:                                              ; preds = %129
  %150 = load i32, ptr %11, align 4, !tbaa !9
  %151 = icmp sgt i32 %150, 400
  br i1 %151, label %152, label %203

152:                                              ; preds = %149
  %153 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 5
  %154 = load i32, ptr %9, align 4, !tbaa !9
  %155 = sext i32 %154 to i64
  %156 = getelementptr inbounds [8 x i32], ptr %153, i64 0, i64 %155
  %157 = load i32, ptr %156, align 4, !tbaa !9
  %158 = icmp eq i32 %157, 0
  br i1 %158, label %159, label %161

159:                                              ; preds = %152
  %160 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 1
  store i8 0, ptr %160, align 4, !tbaa !13
  br label %161

161:                                              ; preds = %159, %152
  %162 = load i32, ptr %11, align 4, !tbaa !9
  %163 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 5
  %164 = load i32, ptr %9, align 4, !tbaa !9
  %165 = sext i32 %164 to i64
  %166 = getelementptr inbounds [8 x i32], ptr %163, i64 0, i64 %165
  store i32 %162, ptr %166, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %167

167:                                              ; preds = %199, %161
  %168 = load i32, ptr %12, align 4, !tbaa !9
  %169 = icmp slt i32 %168, 8
  br i1 %169, label %171, label %170

170:                                              ; preds = %167
  store i32 5, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  br label %202

171:                                              ; preds = %167
  %172 = load i32, ptr %9, align 4, !tbaa !9
  %173 = load i32, ptr %12, align 4, !tbaa !9
  %174 = icmp ne i32 %172, %173
  br i1 %174, label %175, label %198

175:                                              ; preds = %171
  %176 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 5
  %177 = load i32, ptr %12, align 4, !tbaa !9
  %178 = sext i32 %177 to i64
  %179 = getelementptr inbounds [8 x i32], ptr %176, i64 0, i64 %178
  %180 = load i32, ptr %179, align 4, !tbaa !9
  %181 = load i32, ptr %11, align 4, !tbaa !9
  %182 = sdiv i32 %181, 4
  %183 = icmp slt i32 %180, %182
  br i1 %183, label %184, label %198

184:                                              ; preds = %175
  %185 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 5
  %186 = load i32, ptr %12, align 4, !tbaa !9
  %187 = sext i32 %186 to i64
  %188 = getelementptr inbounds [8 x i32], ptr %185, i64 0, i64 %187
  %189 = load i32, ptr %188, align 4, !tbaa !9
  %190 = icmp slt i32 %189, 400
  br i1 %190, label %191, label %198

191:                                              ; preds = %184
  %192 = load i32, ptr %11, align 4, !tbaa !9
  %193 = sdiv i32 %192, 4
  %194 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 5
  %195 = load i32, ptr %12, align 4, !tbaa !9
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds [8 x i32], ptr %194, i64 0, i64 %196
  store i32 %193, ptr %197, align 4, !tbaa !9
  br label %198

198:                                              ; preds = %191, %184, %175, %171
  br label %199

199:                                              ; preds = %198
  %200 = load i32, ptr %12, align 4, !tbaa !9
  %201 = add nsw i32 %200, 1
  store i32 %201, ptr %12, align 4, !tbaa !9
  br label %167, !llvm.loop !18

202:                                              ; preds = %170
  br label %203

203:                                              ; preds = %202, %149, %129
  %204 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 1
  %205 = load i8, ptr %204, align 4, !tbaa !13, !range !20, !noundef !21
  %206 = trunc i8 %205 to i1
  br i1 %206, label %207, label %326

207:                                              ; preds = %203
  %208 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 5
  %209 = load i32, ptr %9, align 4, !tbaa !9
  %210 = sext i32 %209 to i64
  %211 = getelementptr inbounds [8 x i32], ptr %208, i64 0, i64 %210
  %212 = load i32, ptr %211, align 4, !tbaa !9
  %213 = icmp sgt i32 %212, 0
  br i1 %213, label %214, label %326

214:                                              ; preds = %207
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #6
  %215 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 3
  %216 = load i32, ptr %9, align 4, !tbaa !9
  %217 = sext i32 %216 to i64
  %218 = getelementptr inbounds [8 x i32], ptr %215, i64 0, i64 %217
  %219 = load i32, ptr %218, align 4, !tbaa !9
  %220 = mul nsw i32 %219, 255
  %221 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 5
  %222 = load i32, ptr %9, align 4, !tbaa !9
  %223 = sext i32 %222 to i64
  %224 = getelementptr inbounds [8 x i32], ptr %221, i64 0, i64 %223
  %225 = load i32, ptr %224, align 4, !tbaa !9
  %226 = sdiv i32 %220, %225
  store i32 %226, ptr %13, align 4, !tbaa !9
  %227 = load i32, ptr %13, align 4, !tbaa !9
  %228 = icmp sgt i32 %227, 255
  br i1 %228, label %229, label %230

229:                                              ; preds = %214
  store i32 255, ptr %13, align 4, !tbaa !9
  br label %230

230:                                              ; preds = %229, %214
  %231 = load i32, ptr %13, align 4, !tbaa !9
  %232 = trunc i32 %231 to i8
  %233 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 6
  %234 = load i32, ptr %9, align 4, !tbaa !9
  %235 = sext i32 %234 to i64
  %236 = getelementptr inbounds [8 x i8], ptr %233, i64 0, i64 %235
  store i8 %232, ptr %236, align 1, !tbaa !12
  %237 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 6
  %238 = load i32, ptr %9, align 4, !tbaa !9
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds [8 x i8], ptr %237, i64 0, i64 %239
  %241 = load i8, ptr %240, align 1, !tbaa !12
  %242 = zext i8 %241 to i32
  %243 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 8
  %244 = load i32, ptr %9, align 4, !tbaa !9
  %245 = sext i32 %244 to i64
  %246 = getelementptr inbounds [8 x i8], ptr %243, i64 0, i64 %245
  %247 = load i8, ptr %246, align 1, !tbaa !12
  %248 = zext i8 %247 to i32
  %249 = icmp sge i32 %242, %248
  br i1 %249, label %271, label %250

250:                                              ; preds = %230
  %251 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 8
  %252 = load i32, ptr %9, align 4, !tbaa !9
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds [8 x i8], ptr %251, i64 0, i64 %253
  %255 = load i8, ptr %254, align 1, !tbaa !12
  %256 = zext i8 %255 to i32
  %257 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 7
  %258 = load i32, ptr %9, align 4, !tbaa !9
  %259 = sext i32 %258 to i64
  %260 = getelementptr inbounds [8 x i8], ptr %257, i64 0, i64 %259
  %261 = load i8, ptr %260, align 1, !tbaa !12
  %262 = zext i8 %261 to i32
  %263 = sub nsw i32 %256, %262
  %264 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 6
  %265 = load i32, ptr %9, align 4, !tbaa !9
  %266 = sext i32 %265 to i64
  %267 = getelementptr inbounds [8 x i8], ptr %264, i64 0, i64 %266
  %268 = load i8, ptr %267, align 1, !tbaa !12
  %269 = zext i8 %268 to i32
  %270 = icmp slt i32 %263, %269
  br i1 %270, label %271, label %295

271:                                              ; preds = %250, %230
  %272 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 6
  %273 = load i32, ptr %9, align 4, !tbaa !9
  %274 = sext i32 %273 to i64
  %275 = getelementptr inbounds [8 x i8], ptr %272, i64 0, i64 %274
  %276 = load i8, ptr %275, align 1, !tbaa !12
  %277 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 8
  %278 = load i32, ptr %9, align 4, !tbaa !9
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds [8 x i8], ptr %277, i64 0, i64 %279
  store i8 %276, ptr %280, align 1, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  %281 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 6
  %282 = load i32, ptr %9, align 4, !tbaa !9
  %283 = sext i32 %282 to i64
  %284 = getelementptr inbounds [8 x i8], ptr %281, i64 0, i64 %283
  %285 = load i8, ptr %284, align 1, !tbaa !12
  %286 = zext i8 %285 to i32
  %287 = sdiv i32 %286, 10
  store i32 %287, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  store i32 3, ptr %15, align 4, !tbaa !9
  %288 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %14, ptr noundef nonnull align 4 dereferenceable(4) %15)
  %289 = load i32, ptr %288, align 4, !tbaa !9
  %290 = trunc i32 %289 to i8
  %291 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 7
  %292 = load i32, ptr %9, align 4, !tbaa !9
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds [8 x i8], ptr %291, i64 0, i64 %293
  store i8 %290, ptr %294, align 1, !tbaa !12
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  br label %325

295:                                              ; preds = %250
  %296 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 7
  %297 = load i32, ptr %9, align 4, !tbaa !9
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds [8 x i8], ptr %296, i64 0, i64 %298
  %300 = load i8, ptr %299, align 1, !tbaa !12
  %301 = zext i8 %300 to i32
  %302 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 8
  %303 = load i32, ptr %9, align 4, !tbaa !9
  %304 = sext i32 %303 to i64
  %305 = getelementptr inbounds [8 x i8], ptr %302, i64 0, i64 %304
  %306 = load i8, ptr %305, align 1, !tbaa !12
  %307 = zext i8 %306 to i32
  %308 = sub nsw i32 %307, %301
  %309 = trunc i32 %308 to i8
  store i8 %309, ptr %305, align 1, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  %310 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 7
  %311 = load i32, ptr %9, align 4, !tbaa !9
  %312 = sext i32 %311 to i64
  %313 = getelementptr inbounds [8 x i8], ptr %310, i64 0, i64 %312
  %314 = load i8, ptr %313, align 1, !tbaa !12
  %315 = zext i8 %314 to i32
  %316 = mul nsw i32 %315, 3
  %317 = sdiv i32 %316, 2
  store i32 %317, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  store i32 255, ptr %17, align 4, !tbaa !9
  %318 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %16, ptr noundef nonnull align 4 dereferenceable(4) %17)
  %319 = load i32, ptr %318, align 4, !tbaa !9
  %320 = trunc i32 %319 to i8
  %321 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 7
  %322 = load i32, ptr %9, align 4, !tbaa !9
  %323 = sext i32 %322 to i64
  %324 = getelementptr inbounds [8 x i8], ptr %321, i64 0, i64 %323
  store i8 %320, ptr %324, align 1, !tbaa !12
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  br label %325

325:                                              ; preds = %295, %271
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  br label %326

326:                                              ; preds = %325, %207, %203
  %327 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 3
  %328 = load i32, ptr %9, align 4, !tbaa !9
  %329 = sext i32 %328 to i64
  %330 = getelementptr inbounds [8 x i32], ptr %327, i64 0, i64 %329
  %331 = load i32, ptr %330, align 4, !tbaa !9
  %332 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 4
  %333 = load i32, ptr %9, align 4, !tbaa !9
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds [8 x i32], ptr %332, i64 0, i64 %334
  store i32 %331, ptr %335, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  br label %336

336:                                              ; preds = %326
  %337 = load i32, ptr %9, align 4, !tbaa !9
  %338 = add nsw i32 %337, 1
  store i32 %338, ptr %9, align 4, !tbaa !9
  br label %125, !llvm.loop !22

339:                                              ; preds = %128
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %340

340:                                              ; preds = %368, %339
  %341 = load i32, ptr %18, align 4, !tbaa !9
  %342 = icmp slt i32 %341, 8
  br i1 %342, label %344, label %343

343:                                              ; preds = %340
  store i32 8, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  br label %371

344:                                              ; preds = %340
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  %345 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 5
  %346 = load i32, ptr %18, align 4, !tbaa !9
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds [8 x i32], ptr %345, i64 0, i64 %347
  %349 = load i32, ptr %348, align 4, !tbaa !9
  store i32 %349, ptr %19, align 4, !tbaa !9
  %350 = load i32, ptr %19, align 4, !tbaa !9
  %351 = icmp sgt i32 %350, 2000
  br i1 %351, label %352, label %359

352:                                              ; preds = %344
  %353 = load i32, ptr %19, align 4, !tbaa !9
  %354 = sub nsw i32 %353, 2
  %355 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 5
  %356 = load i32, ptr %18, align 4, !tbaa !9
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds [8 x i32], ptr %355, i64 0, i64 %357
  store i32 %354, ptr %358, align 4, !tbaa !9
  br label %359

359:                                              ; preds = %352, %344
  %360 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 8
  %361 = load i32, ptr %18, align 4, !tbaa !9
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds [8 x i8], ptr %360, i64 0, i64 %362
  %364 = load i8, ptr %363, align 1, !tbaa !12
  %365 = zext i8 %364 to i32
  %366 = load i32, ptr %3, align 4, !tbaa !9
  %367 = add nsw i32 %366, %365
  store i32 %367, ptr %3, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  br label %368

368:                                              ; preds = %359
  %369 = load i32, ptr %18, align 4, !tbaa !9
  %370 = add nsw i32 %369, 1
  store i32 %370, ptr %18, align 4, !tbaa !9
  br label %340, !llvm.loop !23

371:                                              ; preds = %343
  %372 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 1
  %373 = load i8, ptr %372, align 4, !tbaa !13, !range !20, !noundef !21
  %374 = trunc i8 %373 to i1
  br i1 %374, label %375, label %1174

375:                                              ; preds = %371
  %376 = load i32, ptr %3, align 4, !tbaa !9
  %377 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 0
  %378 = load i32, ptr %377, align 4, !tbaa !24
  %379 = icmp sgt i32 %376, %378
  br i1 %379, label %380, label %383

380:                                              ; preds = %375
  %381 = load i32, ptr %3, align 4, !tbaa !9
  %382 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 0
  store i32 %381, ptr %382, align 4, !tbaa !24
  br label %383

383:                                              ; preds = %380, %375
  %384 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 0
  %385 = load i32, ptr %384, align 4, !tbaa !24
  %386 = icmp sgt i32 %385, 0
  br i1 %386, label %387, label %1165

387:                                              ; preds = %383
  %388 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 14
  store i32 0, ptr %388, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %389

389:                                              ; preds = %412, %387
  %390 = load i32, ptr %20, align 4, !tbaa !9
  %391 = icmp slt i32 %390, 8
  br i1 %391, label %393, label %392

392:                                              ; preds = %389
  store i32 11, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  br label %415

393:                                              ; preds = %389
  %394 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 8
  %395 = load i32, ptr %20, align 4, !tbaa !9
  %396 = sext i32 %395 to i64
  %397 = getelementptr inbounds [8 x i8], ptr %394, i64 0, i64 %396
  %398 = load i8, ptr %397, align 1, !tbaa !12
  %399 = zext i8 %398 to i32
  %400 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 14
  %401 = load i32, ptr %400, align 4, !tbaa !25
  %402 = icmp sgt i32 %399, %401
  br i1 %402, label %403, label %411

403:                                              ; preds = %393
  %404 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 8
  %405 = load i32, ptr %20, align 4, !tbaa !9
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds [8 x i8], ptr %404, i64 0, i64 %406
  %408 = load i8, ptr %407, align 1, !tbaa !12
  %409 = zext i8 %408 to i32
  %410 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 14
  store i32 %409, ptr %410, align 4, !tbaa !25
  br label %411

411:                                              ; preds = %403, %393
  br label %412

412:                                              ; preds = %411
  %413 = load i32, ptr %20, align 4, !tbaa !9
  %414 = add nsw i32 %413, 1
  store i32 %414, ptr %20, align 4, !tbaa !9
  br label %389, !llvm.loop !26

415:                                              ; preds = %392
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #6
  %416 = load i32, ptr %3, align 4, !tbaa !9
  %417 = mul nsw i32 %416, 255
  %418 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 0
  %419 = load i32, ptr %418, align 4, !tbaa !24
  %420 = sdiv i32 %417, %419
  store i32 %420, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  store i32 255, ptr %22, align 4, !tbaa !9
  %421 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %21, ptr noundef nonnull align 4 dereferenceable(4) %22)
  %422 = load i32, ptr %421, align 4, !tbaa !9
  store i32 %422, ptr %3, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  %423 = load i32, ptr %3, align 4, !tbaa !9
  %424 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 14
  %425 = load i32, ptr %424, align 4, !tbaa !25
  %426 = add nsw i32 %423, %425
  %427 = sdiv i32 %426, 2
  store i32 %427, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #6
  store i32 255, ptr %24, align 4, !tbaa !9
  %428 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %23, ptr noundef nonnull align 4 dereferenceable(4) %24)
  %429 = load i32, ptr %428, align 4, !tbaa !9
  store i32 %429, ptr %3, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  %430 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 12
  %431 = load i32, ptr %430, align 4, !tbaa !27
  %432 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 13
  store i32 %431, ptr %432, align 4, !tbaa !28
  %433 = load i32, ptr %3, align 4, !tbaa !9
  %434 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 12
  %435 = load i32, ptr %434, align 4, !tbaa !27
  %436 = icmp sge i32 %433, %435
  br i1 %436, label %445, label %437

437:                                              ; preds = %415
  %438 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 12
  %439 = load i32, ptr %438, align 4, !tbaa !27
  %440 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 10
  %441 = load i32, ptr %440, align 4, !tbaa !29
  %442 = sub nsw i32 %439, %441
  %443 = load i32, ptr %3, align 4, !tbaa !9
  %444 = icmp slt i32 %442, %443
  br i1 %444, label %445, label %453

445:                                              ; preds = %437, %415
  %446 = load i32, ptr %3, align 4, !tbaa !9
  %447 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 12
  store i32 %446, ptr %447, align 4, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  %448 = load i32, ptr %3, align 4, !tbaa !9
  %449 = sdiv i32 %448, 14
  store i32 %449, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  store i32 3, ptr %26, align 4, !tbaa !9
  %450 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %25, ptr noundef nonnull align 4 dereferenceable(4) %26)
  %451 = load i32, ptr %450, align 4, !tbaa !9
  %452 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 10
  store i32 %451, ptr %452, align 4, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  br label %465

453:                                              ; preds = %437
  %454 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 10
  %455 = load i32, ptr %454, align 4, !tbaa !29
  %456 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 12
  %457 = load i32, ptr %456, align 4, !tbaa !27
  %458 = sub nsw i32 %457, %455
  store i32 %458, ptr %456, align 4, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  %459 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 10
  %460 = load i32, ptr %459, align 4, !tbaa !29
  %461 = mul nsw i32 %460, 2
  store i32 %461, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  store i32 255, ptr %28, align 4, !tbaa !9
  %462 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %27, ptr noundef nonnull align 4 dereferenceable(4) %28)
  %463 = load i32, ptr %462, align 4, !tbaa !9
  %464 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 10
  store i32 %463, ptr %464, align 4, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  br label %465

465:                                              ; preds = %453, %445
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  store i32 0, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  store i32 0, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  store i32 0, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #6
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %466

466:                                              ; preds = %547, %465
  %467 = load i32, ptr %32, align 4, !tbaa !9
  %468 = icmp slt i32 %467, 8
  br i1 %468, label %469, label %473

469:                                              ; preds = %466
  %470 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 14
  %471 = load i32, ptr %470, align 4, !tbaa !25
  %472 = icmp sgt i32 %471, 0
  br label %473

473:                                              ; preds = %469, %466
  %474 = phi i1 [ false, %466 ], [ %472, %469 ]
  br i1 %474, label %476, label %475

475:                                              ; preds = %473
  store i32 14, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  br label %550

476:                                              ; preds = %473
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  store i32 0, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  store i32 0, ptr %34, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  store i32 0, ptr %35, align 4, !tbaa !9
  %477 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 9
  %478 = load i32, ptr %32, align 4, !tbaa !9
  %479 = sext i32 %478 to i64
  %480 = getelementptr inbounds [8 x %struct.ColorRgb], ptr %477, i64 0, i64 %479
  call void @_ZN8ColorRgb6getRGBERiS0_S0_(ptr noundef nonnull align 1 dereferenceable(3) %480, ptr noundef nonnull align 4 dereferenceable(4) %33, ptr noundef nonnull align 4 dereferenceable(4) %34, ptr noundef nonnull align 4 dereferenceable(4) %35)
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  %481 = load i32, ptr %33, align 4, !tbaa !9
  %482 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 14
  %483 = load i32, ptr %482, align 4, !tbaa !25
  %484 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 14
  %485 = load i32, ptr %484, align 4, !tbaa !25
  %486 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 8
  %487 = load i32, ptr %32, align 4, !tbaa !9
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds [8 x i8], ptr %486, i64 0, i64 %488
  %490 = load i8, ptr %489, align 1, !tbaa !12
  %491 = zext i8 %490 to i32
  %492 = sub nsw i32 %485, %491
  %493 = mul nsw i32 5, %492
  %494 = sub nsw i32 %483, %493
  %495 = mul nsw i32 %481, %494
  %496 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 14
  %497 = load i32, ptr %496, align 4, !tbaa !25
  %498 = sdiv i32 %495, %497
  store i32 %498, ptr %36, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #6
  store i32 0, ptr %37, align 4, !tbaa !9
  %499 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %36, ptr noundef nonnull align 4 dereferenceable(4) %37)
  %500 = load i32, ptr %499, align 4, !tbaa !9
  %501 = load i32, ptr %29, align 4, !tbaa !9
  %502 = add nsw i32 %501, %500
  store i32 %502, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #6
  %503 = load i32, ptr %34, align 4, !tbaa !9
  %504 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 14
  %505 = load i32, ptr %504, align 4, !tbaa !25
  %506 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 14
  %507 = load i32, ptr %506, align 4, !tbaa !25
  %508 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 8
  %509 = load i32, ptr %32, align 4, !tbaa !9
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds [8 x i8], ptr %508, i64 0, i64 %510
  %512 = load i8, ptr %511, align 1, !tbaa !12
  %513 = zext i8 %512 to i32
  %514 = sub nsw i32 %507, %513
  %515 = mul nsw i32 5, %514
  %516 = sub nsw i32 %505, %515
  %517 = mul nsw i32 %503, %516
  %518 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 14
  %519 = load i32, ptr %518, align 4, !tbaa !25
  %520 = sdiv i32 %517, %519
  store i32 %520, ptr %38, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #6
  store i32 0, ptr %39, align 4, !tbaa !9
  %521 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %38, ptr noundef nonnull align 4 dereferenceable(4) %39)
  %522 = load i32, ptr %521, align 4, !tbaa !9
  %523 = load i32, ptr %30, align 4, !tbaa !9
  %524 = add nsw i32 %523, %522
  store i32 %524, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #6
  %525 = load i32, ptr %35, align 4, !tbaa !9
  %526 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 14
  %527 = load i32, ptr %526, align 4, !tbaa !25
  %528 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 14
  %529 = load i32, ptr %528, align 4, !tbaa !25
  %530 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 8
  %531 = load i32, ptr %32, align 4, !tbaa !9
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds [8 x i8], ptr %530, i64 0, i64 %532
  %534 = load i8, ptr %533, align 1, !tbaa !12
  %535 = zext i8 %534 to i32
  %536 = sub nsw i32 %529, %535
  %537 = mul nsw i32 5, %536
  %538 = sub nsw i32 %527, %537
  %539 = mul nsw i32 %525, %538
  %540 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 14
  %541 = load i32, ptr %540, align 4, !tbaa !25
  %542 = sdiv i32 %539, %541
  store i32 %542, ptr %40, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #6
  store i32 0, ptr %41, align 4, !tbaa !9
  %543 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef nonnull align 4 dereferenceable(4) %41)
  %544 = load i32, ptr %543, align 4, !tbaa !9
  %545 = load i32, ptr %31, align 4, !tbaa !9
  %546 = add nsw i32 %545, %544
  store i32 %546, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  br label %547

547:                                              ; preds = %476
  %548 = load i32, ptr %32, align 4, !tbaa !9
  %549 = add nsw i32 %548, 1
  store i32 %549, ptr %32, align 4, !tbaa !9
  br label %466, !llvm.loop !30

550:                                              ; preds = %475
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #6
  %551 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %29, ptr noundef nonnull align 4 dereferenceable(4) %30)
  %552 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %551, ptr noundef nonnull align 4 dereferenceable(4) %31)
  %553 = load i32, ptr %552, align 4, !tbaa !9
  store i32 %553, ptr %42, align 4, !tbaa !9
  %554 = load i32, ptr %42, align 4, !tbaa !9
  %555 = icmp ne i32 %554, 0
  br i1 %555, label %556, label %593

556:                                              ; preds = %550
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #6
  %557 = load i32, ptr %29, align 4, !tbaa !9
  %558 = mul nsw i32 %557, 255
  %559 = load i32, ptr %42, align 4, !tbaa !9
  %560 = sdiv i32 %558, %559
  %561 = add nsw i32 %560, 32
  store i32 %561, ptr %43, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #6
  store i32 0, ptr %44, align 4, !tbaa !9
  %562 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %43, ptr noundef nonnull align 4 dereferenceable(4) %44)
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #6
  store i32 255, ptr %45, align 4, !tbaa !9
  %563 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %562, ptr noundef nonnull align 4 dereferenceable(4) %45)
  %564 = load i32, ptr %563, align 4, !tbaa !9
  %565 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 12
  %566 = load i32, ptr %565, align 4, !tbaa !27
  %567 = mul nsw i32 %564, %566
  %568 = sdiv i32 %567, 255
  store i32 %568, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #6
  %569 = load i32, ptr %30, align 4, !tbaa !9
  %570 = mul nsw i32 %569, 255
  %571 = load i32, ptr %42, align 4, !tbaa !9
  %572 = sdiv i32 %570, %571
  %573 = add nsw i32 %572, 32
  store i32 %573, ptr %46, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #6
  store i32 0, ptr %47, align 4, !tbaa !9
  %574 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %46, ptr noundef nonnull align 4 dereferenceable(4) %47)
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #6
  store i32 255, ptr %48, align 4, !tbaa !9
  %575 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %574, ptr noundef nonnull align 4 dereferenceable(4) %48)
  %576 = load i32, ptr %575, align 4, !tbaa !9
  %577 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 12
  %578 = load i32, ptr %577, align 4, !tbaa !27
  %579 = mul nsw i32 %576, %578
  %580 = sdiv i32 %579, 255
  store i32 %580, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #6
  %581 = load i32, ptr %31, align 4, !tbaa !9
  %582 = mul nsw i32 %581, 255
  %583 = load i32, ptr %42, align 4, !tbaa !9
  %584 = sdiv i32 %582, %583
  %585 = add nsw i32 %584, 32
  store i32 %585, ptr %49, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #6
  store i32 0, ptr %50, align 4, !tbaa !9
  %586 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %49, ptr noundef nonnull align 4 dereferenceable(4) %50)
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #6
  store i32 255, ptr %51, align 4, !tbaa !9
  %587 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %586, ptr noundef nonnull align 4 dereferenceable(4) %51)
  %588 = load i32, ptr %587, align 4, !tbaa !9
  %589 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 12
  %590 = load i32, ptr %589, align 4, !tbaa !27
  %591 = mul nsw i32 %588, %590
  %592 = sdiv i32 %591, 255
  store i32 %592, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #6
  br label %593

593:                                              ; preds = %556, %550
  call void @llvm.lifetime.start.p0(i64 3, ptr %52) #6
  %594 = load i32, ptr %29, align 4, !tbaa !9
  %595 = trunc i32 %594 to i8
  %596 = load i32, ptr %30, align 4, !tbaa !9
  %597 = trunc i32 %596 to i8
  %598 = load i32, ptr %31, align 4, !tbaa !9
  %599 = trunc i32 %598 to i8
  call void @_ZN8ColorRgbC2Ehhh(ptr noundef nonnull align 1 dereferenceable(3) %52, i8 noundef zeroext %595, i8 noundef zeroext %597, i8 noundef zeroext %599)
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %56, ptr align 1 %52, i64 3, i1 false), !tbaa.struct !31
  %600 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %57, ptr align 4 %600, i64 3, i1 false), !tbaa.struct !31
  %601 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %58, ptr align 4 %601, i64 3, i1 false), !tbaa.struct !31
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %59, ptr align 1 %56, i64 3, i1 false)
  %602 = load i24, ptr %59, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %60, ptr align 1 %57, i64 3, i1 false)
  %603 = load i24, ptr %60, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %61, ptr align 1 %58, i64 3, i1 false)
  %604 = load i24, ptr %61, align 4
  call void @_ZN18SoundCaptureResult17CalculateRgbDeltaE8ColorRgbS0_S0_RiS1_S1_(ptr noundef nonnull align 4 dereferenceable(296) %122, i24 %602, i24 %603, i24 %604, ptr noundef nonnull align 4 dereferenceable(4) %53, ptr noundef nonnull align 4 dereferenceable(4) %54, ptr noundef nonnull align 4 dereferenceable(4) %55)
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %65, ptr align 1 %52, i64 3, i1 false), !tbaa.struct !31
  %605 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %66, ptr align 4 %605, i64 3, i1 false), !tbaa.struct !31
  %606 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %67, ptr align 2 %606, i64 3, i1 false), !tbaa.struct !31
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %68, ptr align 1 %65, i64 3, i1 false)
  %607 = load i24, ptr %68, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %69, ptr align 1 %66, i64 3, i1 false)
  %608 = load i24, ptr %69, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %70, ptr align 1 %67, i64 3, i1 false)
  %609 = load i24, ptr %70, align 4
  call void @_ZN18SoundCaptureResult17CalculateRgbDeltaE8ColorRgbS0_S0_RiS1_S1_(ptr noundef nonnull align 4 dereferenceable(296) %122, i24 %607, i24 %608, i24 %609, ptr noundef nonnull align 4 dereferenceable(4) %62, ptr noundef nonnull align 4 dereferenceable(4) %63, ptr noundef nonnull align 4 dereferenceable(4) %64)
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %74, ptr align 1 %52, i64 3, i1 false), !tbaa.struct !31
  %610 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %75, ptr align 4 %610, i64 3, i1 false), !tbaa.struct !31
  %611 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %76, ptr align 1 %611, i64 3, i1 false), !tbaa.struct !31
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %77, ptr align 1 %74, i64 3, i1 false)
  %612 = load i24, ptr %77, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %78, ptr align 1 %75, i64 3, i1 false)
  %613 = load i24, ptr %78, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %79, ptr align 1 %76, i64 3, i1 false)
  %614 = load i24, ptr %79, align 4
  call void @_ZN18SoundCaptureResult17CalculateRgbDeltaE8ColorRgbS0_S0_RiS1_S1_(ptr noundef nonnull align 4 dereferenceable(296) %122, i24 %612, i24 %613, i24 %614, ptr noundef nonnull align 4 dereferenceable(4) %71, ptr noundef nonnull align 4 dereferenceable(4) %72, ptr noundef nonnull align 4 dereferenceable(4) %73)
  %615 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %615, ptr align 1 %52, i64 3, i1 false), !tbaa.struct !31
  %616 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 14
  %617 = load i32, ptr %616, align 4, !tbaa !32
  %618 = add nsw i32 %617, -1
  store i32 %618, ptr %616, align 4, !tbaa !32
  %619 = icmp sle i32 %617, 0
  br i1 %619, label %620, label %755

620:                                              ; preds = %593
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #6
  %621 = load i32, ptr %71, align 4, !tbaa !9
  %622 = load i32, ptr %71, align 4, !tbaa !9
  %623 = mul nsw i32 %621, %622
  %624 = load i32, ptr %72, align 4, !tbaa !9
  %625 = load i32, ptr %72, align 4, !tbaa !9
  %626 = mul nsw i32 %624, %625
  %627 = add nsw i32 %623, %626
  %628 = load i32, ptr %73, align 4, !tbaa !9
  %629 = load i32, ptr %73, align 4, !tbaa !9
  %630 = mul nsw i32 %628, %629
  %631 = add nsw i32 %627, %630
  %632 = call noundef double @_ZSt4sqrtIiEN9__gnu_cxx11__enable_ifIXsr12__is_integerIT_EE7__valueEdE6__typeES2_(i32 noundef %631)
  %633 = fptosi double %632 to i32
  store i32 %633, ptr %80, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #6
  store i32 0, ptr %81, align 4, !tbaa !9
  %634 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %80, ptr noundef nonnull align 4 dereferenceable(4) %81)
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #6
  store i32 255, ptr %82, align 4, !tbaa !9
  %635 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %634, ptr noundef nonnull align 4 dereferenceable(4) %82)
  %636 = load i32, ptr %635, align 4, !tbaa !9
  store i32 %636, ptr %4, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #6
  store i32 30, ptr %83, align 4, !tbaa !9
  %637 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %83)
  %638 = load i32, ptr %637, align 4, !tbaa !9
  %639 = sdiv i32 %638, 15
  store i32 %639, ptr %4, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #6
  %640 = load i32, ptr %71, align 4, !tbaa !9
  %641 = icmp eq i32 %640, 0
  br i1 %641, label %642, label %644

642:                                              ; preds = %620
  %643 = load i32, ptr %71, align 4, !tbaa !9
  br label %669

644:                                              ; preds = %620
  %645 = load i32, ptr %71, align 4, !tbaa !9
  %646 = icmp sge i32 %645, 0
  br i1 %646, label %647, label %652

647:                                              ; preds = %644
  %648 = load i32, ptr %71, align 4, !tbaa !9
  %649 = load i32, ptr %4, align 4, !tbaa !9
  %650 = icmp slt i32 %648, %649
  br i1 %650, label %651, label %652

651:                                              ; preds = %647
  br label %667

652:                                              ; preds = %647, %644
  %653 = load i32, ptr %71, align 4, !tbaa !9
  %654 = icmp slt i32 %653, 0
  br i1 %654, label %655, label %661

655:                                              ; preds = %652
  %656 = load i32, ptr %71, align 4, !tbaa !9
  %657 = sub nsw i32 0, %656
  %658 = load i32, ptr %4, align 4, !tbaa !9
  %659 = icmp slt i32 %657, %658
  br i1 %659, label %660, label %661

660:                                              ; preds = %655
  br label %665

661:                                              ; preds = %655, %652
  %662 = load i32, ptr %71, align 4, !tbaa !9
  %663 = load i32, ptr %4, align 4, !tbaa !9
  %664 = sdiv i32 %662, %663
  br label %665

665:                                              ; preds = %661, %660
  %666 = phi i32 [ -1, %660 ], [ %664, %661 ]
  br label %667

667:                                              ; preds = %665, %651
  %668 = phi i32 [ 1, %651 ], [ %666, %665 ]
  br label %669

669:                                              ; preds = %667, %642
  %670 = phi i32 [ %643, %642 ], [ %668, %667 ]
  %671 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 11
  store i32 %670, ptr %671, align 4, !tbaa !33
  %672 = load i32, ptr %72, align 4, !tbaa !9
  %673 = icmp eq i32 %672, 0
  br i1 %673, label %674, label %676

674:                                              ; preds = %669
  %675 = load i32, ptr %72, align 4, !tbaa !9
  br label %701

676:                                              ; preds = %669
  %677 = load i32, ptr %72, align 4, !tbaa !9
  %678 = icmp sge i32 %677, 0
  br i1 %678, label %679, label %684

679:                                              ; preds = %676
  %680 = load i32, ptr %72, align 4, !tbaa !9
  %681 = load i32, ptr %4, align 4, !tbaa !9
  %682 = icmp slt i32 %680, %681
  br i1 %682, label %683, label %684

683:                                              ; preds = %679
  br label %699

684:                                              ; preds = %679, %676
  %685 = load i32, ptr %72, align 4, !tbaa !9
  %686 = icmp slt i32 %685, 0
  br i1 %686, label %687, label %693

687:                                              ; preds = %684
  %688 = load i32, ptr %72, align 4, !tbaa !9
  %689 = sub nsw i32 0, %688
  %690 = load i32, ptr %4, align 4, !tbaa !9
  %691 = icmp slt i32 %689, %690
  br i1 %691, label %692, label %693

692:                                              ; preds = %687
  br label %697

693:                                              ; preds = %687, %684
  %694 = load i32, ptr %72, align 4, !tbaa !9
  %695 = load i32, ptr %4, align 4, !tbaa !9
  %696 = sdiv i32 %694, %695
  br label %697

697:                                              ; preds = %693, %692
  %698 = phi i32 [ -1, %692 ], [ %696, %693 ]
  br label %699

699:                                              ; preds = %697, %683
  %700 = phi i32 [ 1, %683 ], [ %698, %697 ]
  br label %701

701:                                              ; preds = %699, %674
  %702 = phi i32 [ %675, %674 ], [ %700, %699 ]
  %703 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 12
  store i32 %702, ptr %703, align 4, !tbaa !34
  %704 = load i32, ptr %73, align 4, !tbaa !9
  %705 = icmp eq i32 %704, 0
  br i1 %705, label %706, label %708

706:                                              ; preds = %701
  %707 = load i32, ptr %73, align 4, !tbaa !9
  br label %733

708:                                              ; preds = %701
  %709 = load i32, ptr %73, align 4, !tbaa !9
  %710 = icmp sge i32 %709, 0
  br i1 %710, label %711, label %716

711:                                              ; preds = %708
  %712 = load i32, ptr %73, align 4, !tbaa !9
  %713 = load i32, ptr %4, align 4, !tbaa !9
  %714 = icmp slt i32 %712, %713
  br i1 %714, label %715, label %716

715:                                              ; preds = %711
  br label %731

716:                                              ; preds = %711, %708
  %717 = load i32, ptr %73, align 4, !tbaa !9
  %718 = icmp slt i32 %717, 0
  br i1 %718, label %719, label %725

719:                                              ; preds = %716
  %720 = load i32, ptr %73, align 4, !tbaa !9
  %721 = sub nsw i32 0, %720
  %722 = load i32, ptr %4, align 4, !tbaa !9
  %723 = icmp slt i32 %721, %722
  br i1 %723, label %724, label %725

724:                                              ; preds = %719
  br label %729

725:                                              ; preds = %719, %716
  %726 = load i32, ptr %73, align 4, !tbaa !9
  %727 = load i32, ptr %4, align 4, !tbaa !9
  %728 = sdiv i32 %726, %727
  br label %729

729:                                              ; preds = %725, %724
  %730 = phi i32 [ -1, %724 ], [ %728, %725 ]
  br label %731

731:                                              ; preds = %729, %715
  %732 = phi i32 [ 1, %715 ], [ %730, %729 ]
  br label %733

733:                                              ; preds = %731, %706
  %734 = phi i32 [ %707, %706 ], [ %732, %731 ]
  %735 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 13
  store i32 %734, ptr %735, align 4, !tbaa !35
  %736 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 11
  %737 = load i32, ptr %736, align 4, !tbaa !33
  %738 = call i32 @llvm.abs.i32(i32 %737, i1 true)
  %739 = icmp sge i32 %738, 2
  br i1 %739, label %750, label %740

740:                                              ; preds = %733
  %741 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 12
  %742 = load i32, ptr %741, align 4, !tbaa !34
  %743 = call i32 @llvm.abs.i32(i32 %742, i1 true)
  %744 = icmp sge i32 %743, 2
  br i1 %744, label %750, label %745

745:                                              ; preds = %740
  %746 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 13
  %747 = load i32, ptr %746, align 4, !tbaa !35
  %748 = call i32 @llvm.abs.i32(i32 %747, i1 true)
  %749 = icmp sge i32 %748, 2
  br i1 %749, label %750, label %752

750:                                              ; preds = %745, %740, %733
  %751 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 14
  store i32 1, ptr %751, align 4, !tbaa !32
  br label %754

752:                                              ; preds = %745
  %753 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 14
  store i32 0, ptr %753, align 4, !tbaa !32
  br label %754

754:                                              ; preds = %752, %750
  br label %755

755:                                              ; preds = %754, %593
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #6
  %756 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 11
  %757 = load i32, ptr %756, align 4, !tbaa !33
  %758 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 1
  %759 = call noundef i32 @_ZN8ColorRgb3RedEv(ptr noundef nonnull align 1 dereferenceable(3) %758)
  %760 = add nsw i32 %757, %759
  store i32 %760, ptr %84, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #6
  store i32 0, ptr %85, align 4, !tbaa !9
  %761 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %84, ptr noundef nonnull align 4 dereferenceable(4) %85)
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #6
  store i32 255, ptr %86, align 4, !tbaa !9
  %762 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %761, ptr noundef nonnull align 4 dereferenceable(4) %86)
  %763 = load i32, ptr %762, align 4, !tbaa !9
  store i32 %763, ptr %5, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #6
  %764 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 12
  %765 = load i32, ptr %764, align 4, !tbaa !34
  %766 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 1
  %767 = call noundef i32 @_ZN8ColorRgb5GreenEv(ptr noundef nonnull align 1 dereferenceable(3) %766)
  %768 = add nsw i32 %765, %767
  store i32 %768, ptr %87, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #6
  store i32 0, ptr %88, align 4, !tbaa !9
  %769 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %87, ptr noundef nonnull align 4 dereferenceable(4) %88)
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #6
  store i32 255, ptr %89, align 4, !tbaa !9
  %770 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %769, ptr noundef nonnull align 4 dereferenceable(4) %89)
  %771 = load i32, ptr %770, align 4, !tbaa !9
  store i32 %771, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #6
  %772 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 13
  %773 = load i32, ptr %772, align 4, !tbaa !35
  %774 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 1
  %775 = call noundef i32 @_ZN8ColorRgb4BlueEv(ptr noundef nonnull align 1 dereferenceable(3) %774)
  %776 = add nsw i32 %773, %775
  store i32 %776, ptr %90, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #6
  store i32 0, ptr %91, align 4, !tbaa !9
  %777 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %90, ptr noundef nonnull align 4 dereferenceable(4) %91)
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #6
  store i32 255, ptr %92, align 4, !tbaa !9
  %778 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %777, ptr noundef nonnull align 4 dereferenceable(4) %92)
  %779 = load i32, ptr %778, align 4, !tbaa !9
  store i32 %779, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #6
  call void @llvm.lifetime.start.p0(i64 3, ptr %93) #6
  %780 = load i32, ptr %5, align 4, !tbaa !9
  %781 = trunc i32 %780 to i8
  %782 = load i32, ptr %6, align 4, !tbaa !9
  %783 = trunc i32 %782 to i8
  %784 = load i32, ptr %7, align 4, !tbaa !9
  %785 = trunc i32 %784 to i8
  call void @_ZN8ColorRgbC2Ehhh(ptr noundef nonnull align 1 dereferenceable(3) %93, i8 noundef zeroext %781, i8 noundef zeroext %783, i8 noundef zeroext %785)
  %786 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %786, ptr align 1 %93, i64 3, i1 false), !tbaa.struct !31
  call void @llvm.lifetime.end.p0(i64 3, ptr %93) #6
  %787 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 10
  %788 = load i32, ptr %787, align 4, !tbaa !36
  %789 = add nsw i32 %788, -1
  store i32 %789, ptr %787, align 4, !tbaa !36
  %790 = icmp sle i32 %788, 0
  br i1 %790, label %791, label %944

791:                                              ; preds = %755
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #6
  %792 = load i32, ptr %62, align 4, !tbaa !9
  %793 = load i32, ptr %62, align 4, !tbaa !9
  %794 = mul nsw i32 %792, %793
  %795 = load i32, ptr %63, align 4, !tbaa !9
  %796 = load i32, ptr %63, align 4, !tbaa !9
  %797 = mul nsw i32 %795, %796
  %798 = add nsw i32 %794, %797
  %799 = load i32, ptr %64, align 4, !tbaa !9
  %800 = load i32, ptr %64, align 4, !tbaa !9
  %801 = mul nsw i32 %799, %800
  %802 = add nsw i32 %798, %801
  %803 = call noundef double @_ZSt4sqrtIiEN9__gnu_cxx11__enable_ifIXsr12__is_integerIT_EE7__valueEdE6__typeES2_(i32 noundef %802)
  %804 = fptosi double %803 to i32
  store i32 %804, ptr %94, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #6
  store i32 0, ptr %95, align 4, !tbaa !9
  %805 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %94, ptr noundef nonnull align 4 dereferenceable(4) %95)
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #6
  store i32 255, ptr %96, align 4, !tbaa !9
  %806 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %805, ptr noundef nonnull align 4 dereferenceable(4) %96)
  %807 = load i32, ptr %806, align 4, !tbaa !9
  store i32 %807, ptr %4, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #6
  store i32 16, ptr %97, align 4, !tbaa !9
  %808 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %97)
  %809 = load i32, ptr %808, align 4, !tbaa !9
  %810 = sdiv i32 %809, 8
  store i32 %810, ptr %4, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #6
  %811 = load i32, ptr %62, align 4, !tbaa !9
  %812 = icmp eq i32 %811, 0
  br i1 %812, label %813, label %815

813:                                              ; preds = %791
  %814 = load i32, ptr %62, align 4, !tbaa !9
  br label %840

815:                                              ; preds = %791
  %816 = load i32, ptr %62, align 4, !tbaa !9
  %817 = icmp sge i32 %816, 0
  br i1 %817, label %818, label %823

818:                                              ; preds = %815
  %819 = load i32, ptr %62, align 4, !tbaa !9
  %820 = load i32, ptr %4, align 4, !tbaa !9
  %821 = icmp slt i32 %819, %820
  br i1 %821, label %822, label %823

822:                                              ; preds = %818
  br label %838

823:                                              ; preds = %818, %815
  %824 = load i32, ptr %62, align 4, !tbaa !9
  %825 = icmp slt i32 %824, 0
  br i1 %825, label %826, label %832

826:                                              ; preds = %823
  %827 = load i32, ptr %62, align 4, !tbaa !9
  %828 = sub nsw i32 0, %827
  %829 = load i32, ptr %4, align 4, !tbaa !9
  %830 = icmp slt i32 %828, %829
  br i1 %830, label %831, label %832

831:                                              ; preds = %826
  br label %836

832:                                              ; preds = %826, %823
  %833 = load i32, ptr %62, align 4, !tbaa !9
  %834 = load i32, ptr %4, align 4, !tbaa !9
  %835 = sdiv i32 %833, %834
  br label %836

836:                                              ; preds = %832, %831
  %837 = phi i32 [ -1, %831 ], [ %835, %832 ]
  br label %838

838:                                              ; preds = %836, %822
  %839 = phi i32 [ 1, %822 ], [ %837, %836 ]
  br label %840

840:                                              ; preds = %838, %813
  %841 = phi i32 [ %814, %813 ], [ %839, %838 ]
  %842 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 7
  store i32 %841, ptr %842, align 4, !tbaa !37
  %843 = load i32, ptr %63, align 4, !tbaa !9
  %844 = icmp eq i32 %843, 0
  br i1 %844, label %845, label %847

845:                                              ; preds = %840
  %846 = load i32, ptr %63, align 4, !tbaa !9
  br label %872

847:                                              ; preds = %840
  %848 = load i32, ptr %63, align 4, !tbaa !9
  %849 = icmp sge i32 %848, 0
  br i1 %849, label %850, label %855

850:                                              ; preds = %847
  %851 = load i32, ptr %63, align 4, !tbaa !9
  %852 = load i32, ptr %4, align 4, !tbaa !9
  %853 = icmp slt i32 %851, %852
  br i1 %853, label %854, label %855

854:                                              ; preds = %850
  br label %870

855:                                              ; preds = %850, %847
  %856 = load i32, ptr %63, align 4, !tbaa !9
  %857 = icmp slt i32 %856, 0
  br i1 %857, label %858, label %864

858:                                              ; preds = %855
  %859 = load i32, ptr %63, align 4, !tbaa !9
  %860 = sub nsw i32 0, %859
  %861 = load i32, ptr %4, align 4, !tbaa !9
  %862 = icmp slt i32 %860, %861
  br i1 %862, label %863, label %864

863:                                              ; preds = %858
  br label %868

864:                                              ; preds = %858, %855
  %865 = load i32, ptr %63, align 4, !tbaa !9
  %866 = load i32, ptr %4, align 4, !tbaa !9
  %867 = sdiv i32 %865, %866
  br label %868

868:                                              ; preds = %864, %863
  %869 = phi i32 [ -1, %863 ], [ %867, %864 ]
  br label %870

870:                                              ; preds = %868, %854
  %871 = phi i32 [ 1, %854 ], [ %869, %868 ]
  br label %872

872:                                              ; preds = %870, %845
  %873 = phi i32 [ %846, %845 ], [ %871, %870 ]
  %874 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 8
  store i32 %873, ptr %874, align 4, !tbaa !38
  %875 = load i32, ptr %64, align 4, !tbaa !9
  %876 = icmp eq i32 %875, 0
  br i1 %876, label %877, label %879

877:                                              ; preds = %872
  %878 = load i32, ptr %64, align 4, !tbaa !9
  br label %904

879:                                              ; preds = %872
  %880 = load i32, ptr %64, align 4, !tbaa !9
  %881 = icmp sge i32 %880, 0
  br i1 %881, label %882, label %887

882:                                              ; preds = %879
  %883 = load i32, ptr %64, align 4, !tbaa !9
  %884 = load i32, ptr %4, align 4, !tbaa !9
  %885 = icmp slt i32 %883, %884
  br i1 %885, label %886, label %887

886:                                              ; preds = %882
  br label %902

887:                                              ; preds = %882, %879
  %888 = load i32, ptr %64, align 4, !tbaa !9
  %889 = icmp slt i32 %888, 0
  br i1 %889, label %890, label %896

890:                                              ; preds = %887
  %891 = load i32, ptr %64, align 4, !tbaa !9
  %892 = sub nsw i32 0, %891
  %893 = load i32, ptr %4, align 4, !tbaa !9
  %894 = icmp slt i32 %892, %893
  br i1 %894, label %895, label %896

895:                                              ; preds = %890
  br label %900

896:                                              ; preds = %890, %887
  %897 = load i32, ptr %64, align 4, !tbaa !9
  %898 = load i32, ptr %4, align 4, !tbaa !9
  %899 = sdiv i32 %897, %898
  br label %900

900:                                              ; preds = %896, %895
  %901 = phi i32 [ -1, %895 ], [ %899, %896 ]
  br label %902

902:                                              ; preds = %900, %886
  %903 = phi i32 [ 1, %886 ], [ %901, %900 ]
  br label %904

904:                                              ; preds = %902, %877
  %905 = phi i32 [ %878, %877 ], [ %903, %902 ]
  %906 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 9
  store i32 %905, ptr %906, align 4, !tbaa !39
  %907 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 7
  %908 = load i32, ptr %907, align 4, !tbaa !37
  %909 = call i32 @llvm.abs.i32(i32 %908, i1 true)
  %910 = icmp sge i32 %909, 3
  br i1 %910, label %921, label %911

911:                                              ; preds = %904
  %912 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 8
  %913 = load i32, ptr %912, align 4, !tbaa !38
  %914 = call i32 @llvm.abs.i32(i32 %913, i1 true)
  %915 = icmp sge i32 %914, 3
  br i1 %915, label %921, label %916

916:                                              ; preds = %911
  %917 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 9
  %918 = load i32, ptr %917, align 4, !tbaa !39
  %919 = call i32 @llvm.abs.i32(i32 %918, i1 true)
  %920 = icmp sge i32 %919, 3
  br i1 %920, label %921, label %923

921:                                              ; preds = %916, %911, %904
  %922 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 10
  store i32 3, ptr %922, align 4, !tbaa !36
  br label %943

923:                                              ; preds = %916
  %924 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 7
  %925 = load i32, ptr %924, align 4, !tbaa !37
  %926 = call i32 @llvm.abs.i32(i32 %925, i1 true)
  %927 = icmp sge i32 %926, 2
  br i1 %927, label %938, label %928

928:                                              ; preds = %923
  %929 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 8
  %930 = load i32, ptr %929, align 4, !tbaa !38
  %931 = call i32 @llvm.abs.i32(i32 %930, i1 true)
  %932 = icmp sge i32 %931, 2
  br i1 %932, label %938, label %933

933:                                              ; preds = %928
  %934 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 9
  %935 = load i32, ptr %934, align 4, !tbaa !39
  %936 = call i32 @llvm.abs.i32(i32 %935, i1 true)
  %937 = icmp sge i32 %936, 2
  br i1 %937, label %938, label %940

938:                                              ; preds = %933, %928, %923
  %939 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 10
  store i32 1, ptr %939, align 4, !tbaa !36
  br label %942

940:                                              ; preds = %933
  %941 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 10
  store i32 0, ptr %941, align 4, !tbaa !36
  br label %942

942:                                              ; preds = %940, %938
  br label %943

943:                                              ; preds = %942, %921
  br label %944

944:                                              ; preds = %943, %755
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #6
  %945 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 7
  %946 = load i32, ptr %945, align 4, !tbaa !37
  %947 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 2
  %948 = call noundef i32 @_ZN8ColorRgb3RedEv(ptr noundef nonnull align 1 dereferenceable(3) %947)
  %949 = add nsw i32 %946, %948
  store i32 %949, ptr %98, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #6
  store i32 0, ptr %99, align 4, !tbaa !9
  %950 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %98, ptr noundef nonnull align 4 dereferenceable(4) %99)
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #6
  store i32 255, ptr %100, align 4, !tbaa !9
  %951 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %950, ptr noundef nonnull align 4 dereferenceable(4) %100)
  %952 = load i32, ptr %951, align 4, !tbaa !9
  store i32 %952, ptr %5, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #6
  %953 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 8
  %954 = load i32, ptr %953, align 4, !tbaa !38
  %955 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 2
  %956 = call noundef i32 @_ZN8ColorRgb5GreenEv(ptr noundef nonnull align 1 dereferenceable(3) %955)
  %957 = add nsw i32 %954, %956
  store i32 %957, ptr %101, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #6
  store i32 0, ptr %102, align 4, !tbaa !9
  %958 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %101, ptr noundef nonnull align 4 dereferenceable(4) %102)
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #6
  store i32 255, ptr %103, align 4, !tbaa !9
  %959 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %958, ptr noundef nonnull align 4 dereferenceable(4) %103)
  %960 = load i32, ptr %959, align 4, !tbaa !9
  store i32 %960, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #6
  %961 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 9
  %962 = load i32, ptr %961, align 4, !tbaa !39
  %963 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 2
  %964 = call noundef i32 @_ZN8ColorRgb4BlueEv(ptr noundef nonnull align 1 dereferenceable(3) %963)
  %965 = add nsw i32 %962, %964
  store i32 %965, ptr %104, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #6
  store i32 0, ptr %105, align 4, !tbaa !9
  %966 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %104, ptr noundef nonnull align 4 dereferenceable(4) %105)
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #6
  store i32 255, ptr %106, align 4, !tbaa !9
  %967 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %966, ptr noundef nonnull align 4 dereferenceable(4) %106)
  %968 = load i32, ptr %967, align 4, !tbaa !9
  store i32 %968, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #6
  call void @llvm.lifetime.start.p0(i64 3, ptr %107) #6
  %969 = load i32, ptr %5, align 4, !tbaa !9
  %970 = trunc i32 %969 to i8
  %971 = load i32, ptr %6, align 4, !tbaa !9
  %972 = trunc i32 %971 to i8
  %973 = load i32, ptr %7, align 4, !tbaa !9
  %974 = trunc i32 %973 to i8
  call void @_ZN8ColorRgbC2Ehhh(ptr noundef nonnull align 1 dereferenceable(3) %107, i8 noundef zeroext %970, i8 noundef zeroext %972, i8 noundef zeroext %974)
  %975 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 2 %975, ptr align 1 %107, i64 3, i1 false), !tbaa.struct !31
  call void @llvm.lifetime.end.p0(i64 3, ptr %107) #6
  %976 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 6
  %977 = load i32, ptr %976, align 4, !tbaa !40
  %978 = add nsw i32 %977, -1
  store i32 %978, ptr %976, align 4, !tbaa !40
  %979 = icmp sle i32 %977, 0
  br i1 %979, label %980, label %1133

980:                                              ; preds = %944
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #6
  %981 = load i32, ptr %53, align 4, !tbaa !9
  %982 = load i32, ptr %53, align 4, !tbaa !9
  %983 = mul nsw i32 %981, %982
  %984 = load i32, ptr %54, align 4, !tbaa !9
  %985 = load i32, ptr %54, align 4, !tbaa !9
  %986 = mul nsw i32 %984, %985
  %987 = add nsw i32 %983, %986
  %988 = load i32, ptr %55, align 4, !tbaa !9
  %989 = load i32, ptr %55, align 4, !tbaa !9
  %990 = mul nsw i32 %988, %989
  %991 = add nsw i32 %987, %990
  %992 = call noundef double @_ZSt4sqrtIiEN9__gnu_cxx11__enable_ifIXsr12__is_integerIT_EE7__valueEdE6__typeES2_(i32 noundef %991)
  %993 = fptosi double %992 to i32
  store i32 %993, ptr %108, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #6
  store i32 0, ptr %109, align 4, !tbaa !9
  %994 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %108, ptr noundef nonnull align 4 dereferenceable(4) %109)
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #6
  store i32 255, ptr %110, align 4, !tbaa !9
  %995 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %994, ptr noundef nonnull align 4 dereferenceable(4) %110)
  %996 = load i32, ptr %995, align 4, !tbaa !9
  store i32 %996, ptr %4, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #6
  store i32 22, ptr %111, align 4, !tbaa !9
  %997 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %111)
  %998 = load i32, ptr %997, align 4, !tbaa !9
  %999 = sdiv i32 %998, 11
  store i32 %999, ptr %4, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #6
  %1000 = load i32, ptr %53, align 4, !tbaa !9
  %1001 = icmp eq i32 %1000, 0
  br i1 %1001, label %1002, label %1004

1002:                                             ; preds = %980
  %1003 = load i32, ptr %53, align 4, !tbaa !9
  br label %1029

1004:                                             ; preds = %980
  %1005 = load i32, ptr %53, align 4, !tbaa !9
  %1006 = icmp sge i32 %1005, 0
  br i1 %1006, label %1007, label %1012

1007:                                             ; preds = %1004
  %1008 = load i32, ptr %53, align 4, !tbaa !9
  %1009 = load i32, ptr %4, align 4, !tbaa !9
  %1010 = icmp slt i32 %1008, %1009
  br i1 %1010, label %1011, label %1012

1011:                                             ; preds = %1007
  br label %1027

1012:                                             ; preds = %1007, %1004
  %1013 = load i32, ptr %53, align 4, !tbaa !9
  %1014 = icmp slt i32 %1013, 0
  br i1 %1014, label %1015, label %1021

1015:                                             ; preds = %1012
  %1016 = load i32, ptr %53, align 4, !tbaa !9
  %1017 = sub nsw i32 0, %1016
  %1018 = load i32, ptr %4, align 4, !tbaa !9
  %1019 = icmp slt i32 %1017, %1018
  br i1 %1019, label %1020, label %1021

1020:                                             ; preds = %1015
  br label %1025

1021:                                             ; preds = %1015, %1012
  %1022 = load i32, ptr %53, align 4, !tbaa !9
  %1023 = load i32, ptr %4, align 4, !tbaa !9
  %1024 = sdiv i32 %1022, %1023
  br label %1025

1025:                                             ; preds = %1021, %1020
  %1026 = phi i32 [ -1, %1020 ], [ %1024, %1021 ]
  br label %1027

1027:                                             ; preds = %1025, %1011
  %1028 = phi i32 [ 1, %1011 ], [ %1026, %1025 ]
  br label %1029

1029:                                             ; preds = %1027, %1002
  %1030 = phi i32 [ %1003, %1002 ], [ %1028, %1027 ]
  %1031 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 3
  store i32 %1030, ptr %1031, align 4, !tbaa !41
  %1032 = load i32, ptr %54, align 4, !tbaa !9
  %1033 = icmp eq i32 %1032, 0
  br i1 %1033, label %1034, label %1036

1034:                                             ; preds = %1029
  %1035 = load i32, ptr %54, align 4, !tbaa !9
  br label %1061

1036:                                             ; preds = %1029
  %1037 = load i32, ptr %54, align 4, !tbaa !9
  %1038 = icmp sge i32 %1037, 0
  br i1 %1038, label %1039, label %1044

1039:                                             ; preds = %1036
  %1040 = load i32, ptr %54, align 4, !tbaa !9
  %1041 = load i32, ptr %4, align 4, !tbaa !9
  %1042 = icmp slt i32 %1040, %1041
  br i1 %1042, label %1043, label %1044

1043:                                             ; preds = %1039
  br label %1059

1044:                                             ; preds = %1039, %1036
  %1045 = load i32, ptr %54, align 4, !tbaa !9
  %1046 = icmp slt i32 %1045, 0
  br i1 %1046, label %1047, label %1053

1047:                                             ; preds = %1044
  %1048 = load i32, ptr %54, align 4, !tbaa !9
  %1049 = sub nsw i32 0, %1048
  %1050 = load i32, ptr %4, align 4, !tbaa !9
  %1051 = icmp slt i32 %1049, %1050
  br i1 %1051, label %1052, label %1053

1052:                                             ; preds = %1047
  br label %1057

1053:                                             ; preds = %1047, %1044
  %1054 = load i32, ptr %54, align 4, !tbaa !9
  %1055 = load i32, ptr %4, align 4, !tbaa !9
  %1056 = sdiv i32 %1054, %1055
  br label %1057

1057:                                             ; preds = %1053, %1052
  %1058 = phi i32 [ -1, %1052 ], [ %1056, %1053 ]
  br label %1059

1059:                                             ; preds = %1057, %1043
  %1060 = phi i32 [ 1, %1043 ], [ %1058, %1057 ]
  br label %1061

1061:                                             ; preds = %1059, %1034
  %1062 = phi i32 [ %1035, %1034 ], [ %1060, %1059 ]
  %1063 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 4
  store i32 %1062, ptr %1063, align 4, !tbaa !42
  %1064 = load i32, ptr %55, align 4, !tbaa !9
  %1065 = icmp eq i32 %1064, 0
  br i1 %1065, label %1066, label %1068

1066:                                             ; preds = %1061
  %1067 = load i32, ptr %55, align 4, !tbaa !9
  br label %1093

1068:                                             ; preds = %1061
  %1069 = load i32, ptr %55, align 4, !tbaa !9
  %1070 = icmp sge i32 %1069, 0
  br i1 %1070, label %1071, label %1076

1071:                                             ; preds = %1068
  %1072 = load i32, ptr %55, align 4, !tbaa !9
  %1073 = load i32, ptr %4, align 4, !tbaa !9
  %1074 = icmp slt i32 %1072, %1073
  br i1 %1074, label %1075, label %1076

1075:                                             ; preds = %1071
  br label %1091

1076:                                             ; preds = %1071, %1068
  %1077 = load i32, ptr %55, align 4, !tbaa !9
  %1078 = icmp slt i32 %1077, 0
  br i1 %1078, label %1079, label %1085

1079:                                             ; preds = %1076
  %1080 = load i32, ptr %55, align 4, !tbaa !9
  %1081 = sub nsw i32 0, %1080
  %1082 = load i32, ptr %4, align 4, !tbaa !9
  %1083 = icmp slt i32 %1081, %1082
  br i1 %1083, label %1084, label %1085

1084:                                             ; preds = %1079
  br label %1089

1085:                                             ; preds = %1079, %1076
  %1086 = load i32, ptr %55, align 4, !tbaa !9
  %1087 = load i32, ptr %4, align 4, !tbaa !9
  %1088 = sdiv i32 %1086, %1087
  br label %1089

1089:                                             ; preds = %1085, %1084
  %1090 = phi i32 [ -1, %1084 ], [ %1088, %1085 ]
  br label %1091

1091:                                             ; preds = %1089, %1075
  %1092 = phi i32 [ 1, %1075 ], [ %1090, %1089 ]
  br label %1093

1093:                                             ; preds = %1091, %1066
  %1094 = phi i32 [ %1067, %1066 ], [ %1092, %1091 ]
  %1095 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 5
  store i32 %1094, ptr %1095, align 4, !tbaa !43
  %1096 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 3
  %1097 = load i32, ptr %1096, align 4, !tbaa !41
  %1098 = call i32 @llvm.abs.i32(i32 %1097, i1 true)
  %1099 = icmp sge i32 %1098, 3
  br i1 %1099, label %1110, label %1100

1100:                                             ; preds = %1093
  %1101 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 4
  %1102 = load i32, ptr %1101, align 4, !tbaa !42
  %1103 = call i32 @llvm.abs.i32(i32 %1102, i1 true)
  %1104 = icmp sge i32 %1103, 3
  br i1 %1104, label %1110, label %1105

1105:                                             ; preds = %1100
  %1106 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 5
  %1107 = load i32, ptr %1106, align 4, !tbaa !43
  %1108 = call i32 @llvm.abs.i32(i32 %1107, i1 true)
  %1109 = icmp sge i32 %1108, 3
  br i1 %1109, label %1110, label %1112

1110:                                             ; preds = %1105, %1100, %1093
  %1111 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 6
  store i32 3, ptr %1111, align 4, !tbaa !40
  br label %1132

1112:                                             ; preds = %1105
  %1113 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 3
  %1114 = load i32, ptr %1113, align 4, !tbaa !41
  %1115 = call i32 @llvm.abs.i32(i32 %1114, i1 true)
  %1116 = icmp sge i32 %1115, 2
  br i1 %1116, label %1127, label %1117

1117:                                             ; preds = %1112
  %1118 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 4
  %1119 = load i32, ptr %1118, align 4, !tbaa !42
  %1120 = call i32 @llvm.abs.i32(i32 %1119, i1 true)
  %1121 = icmp sge i32 %1120, 2
  br i1 %1121, label %1127, label %1122

1122:                                             ; preds = %1117
  %1123 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 5
  %1124 = load i32, ptr %1123, align 4, !tbaa !43
  %1125 = call i32 @llvm.abs.i32(i32 %1124, i1 true)
  %1126 = icmp sge i32 %1125, 2
  br i1 %1126, label %1127, label %1129

1127:                                             ; preds = %1122, %1117, %1112
  %1128 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 6
  store i32 1, ptr %1128, align 4, !tbaa !40
  br label %1131

1129:                                             ; preds = %1122
  %1130 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 6
  store i32 0, ptr %1130, align 4, !tbaa !40
  br label %1131

1131:                                             ; preds = %1129, %1127
  br label %1132

1132:                                             ; preds = %1131, %1110
  br label %1133

1133:                                             ; preds = %1132, %944
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #6
  %1134 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 3
  %1135 = load i32, ptr %1134, align 4, !tbaa !41
  %1136 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 0
  %1137 = call noundef i32 @_ZN8ColorRgb3RedEv(ptr noundef nonnull align 1 dereferenceable(3) %1136)
  %1138 = add nsw i32 %1135, %1137
  store i32 %1138, ptr %112, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %113) #6
  store i32 0, ptr %113, align 4, !tbaa !9
  %1139 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %112, ptr noundef nonnull align 4 dereferenceable(4) %113)
  call void @llvm.lifetime.start.p0(i64 4, ptr %114) #6
  store i32 255, ptr %114, align 4, !tbaa !9
  %1140 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %1139, ptr noundef nonnull align 4 dereferenceable(4) %114)
  %1141 = load i32, ptr %1140, align 4, !tbaa !9
  store i32 %1141, ptr %5, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %115) #6
  %1142 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 4
  %1143 = load i32, ptr %1142, align 4, !tbaa !42
  %1144 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 0
  %1145 = call noundef i32 @_ZN8ColorRgb5GreenEv(ptr noundef nonnull align 1 dereferenceable(3) %1144)
  %1146 = add nsw i32 %1143, %1145
  store i32 %1146, ptr %115, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %116) #6
  store i32 0, ptr %116, align 4, !tbaa !9
  %1147 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %115, ptr noundef nonnull align 4 dereferenceable(4) %116)
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #6
  store i32 255, ptr %117, align 4, !tbaa !9
  %1148 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %1147, ptr noundef nonnull align 4 dereferenceable(4) %117)
  %1149 = load i32, ptr %1148, align 4, !tbaa !9
  store i32 %1149, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %116) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %115) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %118) #6
  %1150 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 5
  %1151 = load i32, ptr %1150, align 4, !tbaa !43
  %1152 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 0
  %1153 = call noundef i32 @_ZN8ColorRgb4BlueEv(ptr noundef nonnull align 1 dereferenceable(3) %1152)
  %1154 = add nsw i32 %1151, %1153
  store i32 %1154, ptr %118, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %119) #6
  store i32 0, ptr %119, align 4, !tbaa !9
  %1155 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %118, ptr noundef nonnull align 4 dereferenceable(4) %119)
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #6
  store i32 255, ptr %120, align 4, !tbaa !9
  %1156 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %1155, ptr noundef nonnull align 4 dereferenceable(4) %120)
  %1157 = load i32, ptr %1156, align 4, !tbaa !9
  store i32 %1157, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #6
  call void @llvm.lifetime.start.p0(i64 3, ptr %121) #6
  %1158 = load i32, ptr %5, align 4, !tbaa !9
  %1159 = trunc i32 %1158 to i8
  %1160 = load i32, ptr %6, align 4, !tbaa !9
  %1161 = trunc i32 %1160 to i8
  %1162 = load i32, ptr %7, align 4, !tbaa !9
  %1163 = trunc i32 %1162 to i8
  call void @_ZN8ColorRgbC2Ehhh(ptr noundef nonnull align 1 dereferenceable(3) %121, i8 noundef zeroext %1159, i8 noundef zeroext %1161, i8 noundef zeroext %1163)
  %1164 = getelementptr inbounds %struct.MovingTarget, ptr %8, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1164, ptr align 1 %121, i64 3, i1 false), !tbaa.struct !31
  call void @llvm.lifetime.end.p0(i64 3, ptr %121) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 3, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  br label %1165

1165:                                             ; preds = %1133, %383
  %1166 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 0
  %1167 = load i32, ptr %1166, align 4, !tbaa !24
  %1168 = icmp sgt i32 %1167, 1024
  br i1 %1168, label %1169, label %1173

1169:                                             ; preds = %1165
  %1170 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 0
  %1171 = load i32, ptr %1170, align 4, !tbaa !24
  %1172 = add nsw i32 %1171, -1
  store i32 %1172, ptr %1170, align 4, !tbaa !24
  br label %1173

1173:                                             ; preds = %1169, %1165
  br label %1174

1174:                                             ; preds = %1173, %371
  %1175 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 16
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1175, ptr align 4 %8, i64 60, i1 false), !tbaa.struct !11
  %1176 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 15
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1176, ptr align 4 %8, i64 60, i1 false), !tbaa.struct !11
  %1177 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 1
  %1178 = load i8, ptr %1177, align 4, !tbaa !13, !range !20, !noundef !21
  %1179 = trunc i8 %1178 to i1
  br i1 %1179, label %1180, label %1184

1180:                                             ; preds = %1174
  %1181 = getelementptr inbounds %class.SoundCaptureResult, ptr %122, i32 0, i32 2
  %1182 = load i32, ptr %1181, align 4, !tbaa !44
  %1183 = add i32 %1182, 1
  store i32 %1183, ptr %1181, align 4, !tbaa !44
  br label %1184

1184:                                             ; preds = %1180, %1174
  call void @llvm.lifetime.end.p0(i64 60, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #6
  ret void
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8ColorRgb6getRGBERiS0_S0_(ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN18SoundCaptureResult17CalculateRgbDeltaE8ColorRgbS0_S0_RiS1_S1_(ptr noundef nonnull align 4 dereferenceable(296), i24, i24, i24, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt4sqrtIiEN9__gnu_cxx11__enable_ifIXsr12__is_integerIT_EE7__valueEdE6__typeES2_(i32 noundef) #0

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.abs.i32(i32, i1 immarg) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN8ColorRgb3RedEv(ptr noundef nonnull align 1 dereferenceable(3)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN8ColorRgb5GreenEv(ptr noundef nonnull align 1 dereferenceable(3)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN8ColorRgb4BlueEv(ptr noundef nonnull align 1 dereferenceable(3)) #2 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{i64 0, i64 1, !12, i64 1, i64 1, !12, i64 2, i64 1, !12, i64 3, i64 1, !12, i64 4, i64 1, !12, i64 5, i64 1, !12, i64 6, i64 1, !12, i64 7, i64 1, !12, i64 8, i64 1, !12, i64 12, i64 4, !9, i64 16, i64 4, !9, i64 20, i64 4, !9, i64 24, i64 4, !9, i64 28, i64 4, !9, i64 32, i64 4, !9, i64 36, i64 4, !9, i64 40, i64 4, !9, i64 44, i64 4, !9, i64 48, i64 4, !9, i64 52, i64 4, !9, i64 56, i64 4, !9}
!12 = !{!7, !7, i64 0}
!13 = !{!14, !15, i64 4}
!14 = !{!"_ZTS18SoundCaptureResult", !10, i64 0, !15, i64 4, !10, i64 8, !7, i64 12, !7, i64 44, !7, i64 76, !7, i64 108, !7, i64 116, !7, i64 124, !7, i64 132, !10, i64 156, !16, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !17, i64 176, !17, i64 236}
!15 = !{!"bool", !7, i64 0}
!16 = !{!"_ZTS8ColorRgb", !7, i64 0, !7, i64 1, !7, i64 2}
!17 = !{!"_ZTS12MovingTarget", !16, i64 0, !16, i64 3, !16, i64 6, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.mustprogress"}
!20 = !{i8 0, i8 2}
!21 = !{}
!22 = distinct !{!22, !19}
!23 = distinct !{!23, !19}
!24 = !{!14, !10, i64 0}
!25 = !{!14, !10, i64 172}
!26 = distinct !{!26, !19}
!27 = !{!14, !10, i64 164}
!28 = !{!14, !10, i64 168}
!29 = !{!14, !10, i64 156}
!30 = distinct !{!30, !19}
!31 = !{i64 0, i64 1, !12, i64 1, i64 1, !12, i64 2, i64 1, !12}
!32 = !{!17, !10, i64 56}
!33 = !{!17, !10, i64 44}
!34 = !{!17, !10, i64 48}
!35 = !{!17, !10, i64 52}
!36 = !{!17, !10, i64 40}
!37 = !{!17, !10, i64 28}
!38 = !{!17, !10, i64 32}
!39 = !{!17, !10, i64 36}
!40 = !{!17, !10, i64 24}
!41 = !{!17, !10, i64 12}
!42 = !{!17, !10, i64 16}
!43 = !{!17, !10, i64 20}
!44 = !{!14, !10, i64 8}


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

%struct.MovingTarget = type { %struct.ColorRgb, %struct.ColorRgb, %struct.ColorRgb, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.ColorRgb = type { i8, i8, i8 }

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8ColorRgbC2Ehhh(ptr noundef nonnull align 1 dereferenceable(3), i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext) unnamed_addr #2 align 2

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN18SoundCaptureResult6SmoothEv(ptr noundef nonnull align 4 dereferenceable(296) %0) local_unnamed_addr #4 align 2 {
.peel.begin:
  %1 = alloca i32, align 4
  %2 = alloca %struct.MovingTarget, align 4
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca %struct.ColorRgb, 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 i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca %struct.ColorRgb, align 1
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca i32, align 4
  %72 = alloca i32, align 4
  %73 = alloca %struct.ColorRgb, align 1
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca i32, align 4
  %85 = alloca i32, align 4
  %86 = alloca i32, align 4
  %87 = alloca %struct.ColorRgb, align 1
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %1) #7
  store i32 0, ptr %1, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 60, ptr nonnull %2) #7
  %88 = getelementptr inbounds i8, ptr %0, i64 236
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(60) %2, ptr noundef nonnull align 4 dereferenceable(60) %88, i64 60, i1 false), !tbaa.struct !9
  %89 = getelementptr inbounds i8, ptr %0, i64 4
  store i8 1, ptr %89, align 4, !tbaa !11
  %90 = getelementptr inbounds i8, ptr %0, i64 12
  %91 = getelementptr inbounds i8, ptr %0, i64 44
  %92 = getelementptr inbounds i8, ptr %0, i64 76
  %93 = getelementptr inbounds i8, ptr %0, i64 108
  %94 = getelementptr inbounds i8, ptr %0, i64 124
  %95 = getelementptr inbounds i8, ptr %0, i64 116
  %96 = load i32, ptr %90, align 4, !tbaa !5
  %97 = load i32, ptr %91, align 4, !tbaa !5
  %98 = add nsw i32 %97, %96
  %99 = sdiv i32 %98, 2
  %100 = load i32, ptr %92, align 4, !tbaa !5
  %101 = icmp sle i32 %100, %99
  %102 = icmp sgt i32 %98, 801
  %or.cond.peel = and i1 %102, %101
  br i1 %or.cond.peel, label %103, label %.loopexit.peel.thread

103:                                              ; preds = %.peel.begin
  %.not262 = icmp eq i32 %100, 0
  br i1 %.not262, label %104, label %105

104:                                              ; preds = %103
  store i8 0, ptr %89, align 4, !tbaa !11
  br label %105

105:                                              ; preds = %104, %103
  store i32 %99, ptr %92, align 4, !tbaa !5
  %106 = lshr i32 %99, 2
  %107 = tail call i32 @llvm.umin.i32(i32 %106, i32 400)
  %108 = getelementptr inbounds i8, ptr %0, i64 80
  %109 = load i32, ptr %108, align 4, !tbaa !5
  %or.cond160.1.peel = icmp slt i32 %109, %107
  br i1 %or.cond160.1.peel, label %110, label %111

110:                                              ; preds = %105
  store i32 %106, ptr %108, align 4, !tbaa !5
  br label %111

111:                                              ; preds = %105, %110
  %112 = getelementptr inbounds i8, ptr %0, i64 84
  %113 = load i32, ptr %112, align 4, !tbaa !5
  %or.cond160.2.peel = icmp slt i32 %113, %107
  br i1 %or.cond160.2.peel, label %114, label %115

114:                                              ; preds = %111
  store i32 %106, ptr %112, align 4, !tbaa !5
  br label %115

115:                                              ; preds = %111, %114
  %116 = getelementptr inbounds i8, ptr %0, i64 88
  %117 = load i32, ptr %116, align 4, !tbaa !5
  %or.cond160.3.peel = icmp slt i32 %117, %107
  br i1 %or.cond160.3.peel, label %118, label %119

118:                                              ; preds = %115
  store i32 %106, ptr %116, align 4, !tbaa !5
  br label %119

119:                                              ; preds = %115, %118
  %120 = getelementptr inbounds i8, ptr %0, i64 92
  %121 = load i32, ptr %120, align 4, !tbaa !5
  %or.cond160.4.peel = icmp slt i32 %121, %107
  br i1 %or.cond160.4.peel, label %122, label %123

122:                                              ; preds = %119
  store i32 %106, ptr %120, align 4, !tbaa !5
  br label %123

123:                                              ; preds = %119, %122
  %124 = getelementptr inbounds i8, ptr %0, i64 96
  %125 = load i32, ptr %124, align 4, !tbaa !5
  %or.cond160.5.peel = icmp slt i32 %125, %107
  br i1 %or.cond160.5.peel, label %126, label %127

126:                                              ; preds = %123
  store i32 %106, ptr %124, align 4, !tbaa !5
  br label %127

127:                                              ; preds = %123, %126
  %128 = getelementptr inbounds i8, ptr %0, i64 100
  %129 = load i32, ptr %128, align 4, !tbaa !5
  %or.cond160.6.peel = icmp slt i32 %129, %107
  br i1 %or.cond160.6.peel, label %130, label %131

130:                                              ; preds = %127
  store i32 %106, ptr %128, align 4, !tbaa !5
  br label %131

131:                                              ; preds = %127, %130
  %132 = getelementptr inbounds i8, ptr %0, i64 104
  %133 = load i32, ptr %132, align 4, !tbaa !5
  %or.cond160.7.peel = icmp slt i32 %133, %107
  br i1 %or.cond160.7.peel, label %134, label %.loopexit.peel

134:                                              ; preds = %131
  store i32 %106, ptr %132, align 4, !tbaa !5
  br i1 %.not262, label %.peel.next, label %.loopexit.peel.thread

.loopexit.peel:                                   ; preds = %131
  br i1 %.not262, label %.peel.next, label %.loopexit.peel.thread

.loopexit.peel.thread:                            ; preds = %.peel.begin, %134, %.loopexit.peel
  %135 = phi i32 [ %99, %.loopexit.peel ], [ %99, %134 ], [ %100, %.peel.begin ]
  %136 = icmp sgt i32 %135, 0
  br i1 %136, label %137, label %.peel.next

137:                                              ; preds = %.loopexit.peel.thread
  %138 = mul nsw i32 %96, 255
  %139 = sdiv i32 %138, %135
  %spec.store.select.peel = tail call i32 @llvm.smin.i32(i32 %139, i32 255)
  %140 = trunc i32 %spec.store.select.peel to i8
  store i8 %140, ptr %93, align 4, !tbaa !10
  %141 = and i32 %spec.store.select.peel, 255
  %142 = load i8, ptr %94, align 4, !tbaa !10
  %143 = zext i8 %142 to i32
  %.not158.peel = icmp ult i32 %141, %143
  br i1 %.not158.peel, label %144, label %156

144:                                              ; preds = %137
  %145 = load i8, ptr %95, align 4, !tbaa !10
  %146 = zext i8 %145 to i32
  %147 = sub nsw i32 %143, %146
  %148 = icmp slt i32 %147, %141
  br i1 %148, label %156, label %149

149:                                              ; preds = %144
  %150 = trunc nuw i32 %147 to i8
  store i8 %150, ptr %94, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #7
  %151 = lshr i32 %146, 1
  %152 = add nuw nsw i32 %151, %146
  store i32 %152, ptr %5, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #7
  store i32 255, ptr %6, align 4, !tbaa !5
  %153 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 4 dereferenceable(4) %6)
  %154 = load i32, ptr %153, align 4, !tbaa !5
  %155 = trunc i32 %154 to i8
  store i8 %155, ptr %95, align 4, !tbaa !10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #7
  br label %.peel.next

156:                                              ; preds = %144, %137
  store i8 %140, ptr %94, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #7
  %157 = udiv i8 %140, 10
  %158 = zext nneg i8 %157 to i32
  store i32 %158, ptr %3, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #7
  store i32 3, ptr %4, align 4, !tbaa !5
  %159 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %3, ptr noundef nonnull align 4 dereferenceable(4) %4)
  %160 = load i32, ptr %159, align 4, !tbaa !5
  %161 = trunc i32 %160 to i8
  store i8 %161, ptr %95, align 4, !tbaa !10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #7
  br label %.peel.next

.peel.next:                                       ; preds = %.loopexit.peel, %.loopexit.peel.thread, %149, %156, %134
  %162 = load i32, ptr %90, align 4, !tbaa !5
  store i32 %162, ptr %91, align 4, !tbaa !5
  %163 = getelementptr inbounds i8, ptr %0, i64 80
  %164 = getelementptr inbounds i8, ptr %0, i64 84
  %165 = getelementptr inbounds i8, ptr %0, i64 88
  %166 = getelementptr inbounds i8, ptr %0, i64 92
  %167 = getelementptr inbounds i8, ptr %0, i64 96
  %168 = getelementptr inbounds i8, ptr %0, i64 100
  %169 = getelementptr inbounds i8, ptr %0, i64 104
  %170 = getelementptr inbounds i8, ptr %0, i64 16
  %171 = load i32, ptr %170, align 4, !tbaa !5
  %172 = getelementptr inbounds i8, ptr %0, i64 48
  %173 = load i32, ptr %172, align 4, !tbaa !5
  %174 = add nsw i32 %173, %171
  %175 = sdiv i32 %174, 2
  %176 = getelementptr inbounds i8, ptr %0, i64 80
  %177 = load i32, ptr %176, align 4, !tbaa !5
  %178 = icmp sle i32 %177, %175
  %179 = icmp sgt i32 %174, 801
  %or.cond.peel266 = and i1 %179, %178
  br i1 %or.cond.peel266, label %180, label %.loopexit.peel274

180:                                              ; preds = %.peel.next
  %181 = icmp eq i32 %177, 0
  br i1 %181, label %182, label %183

182:                                              ; preds = %180
  store i8 0, ptr %89, align 4, !tbaa !11
  br label %183

183:                                              ; preds = %182, %180
  store i32 %175, ptr %176, align 4, !tbaa !5
  %184 = lshr i32 %175, 2
  %185 = call i32 @llvm.umin.i32(i32 %184, i32 400)
  %186 = load i32, ptr %92, align 4, !tbaa !5
  %or.cond160.peel = icmp slt i32 %186, %185
  br i1 %or.cond160.peel, label %187, label %.thread.peel

187:                                              ; preds = %183
  store i32 %184, ptr %92, align 4, !tbaa !5
  br label %.thread.peel

.thread.peel:                                     ; preds = %183, %187
  %188 = load i32, ptr %164, align 4, !tbaa !5
  %or.cond160.2.peel268 = icmp slt i32 %188, %185
  br i1 %or.cond160.2.peel268, label %189, label %.thread250.peel

189:                                              ; preds = %.thread.peel
  store i32 %184, ptr %164, align 4, !tbaa !5
  br label %.thread250.peel

.thread250.peel:                                  ; preds = %.thread.peel, %189
  %190 = load i32, ptr %165, align 4, !tbaa !5
  %or.cond160.3.peel269 = icmp slt i32 %190, %185
  br i1 %or.cond160.3.peel269, label %191, label %.thread252.peel

191:                                              ; preds = %.thread250.peel
  store i32 %184, ptr %165, align 4, !tbaa !5
  br label %.thread252.peel

.thread252.peel:                                  ; preds = %.thread250.peel, %191
  %192 = load i32, ptr %166, align 4, !tbaa !5
  %or.cond160.4.peel270 = icmp slt i32 %192, %185
  br i1 %or.cond160.4.peel270, label %193, label %.thread254.peel

193:                                              ; preds = %.thread252.peel
  store i32 %184, ptr %166, align 4, !tbaa !5
  br label %.thread254.peel

.thread254.peel:                                  ; preds = %.thread252.peel, %193
  %194 = load i32, ptr %167, align 4, !tbaa !5
  %or.cond160.5.peel271 = icmp slt i32 %194, %185
  br i1 %or.cond160.5.peel271, label %195, label %.thread256.peel

195:                                              ; preds = %.thread254.peel
  store i32 %184, ptr %167, align 4, !tbaa !5
  br label %.thread256.peel

.thread256.peel:                                  ; preds = %.thread254.peel, %195
  %196 = load i32, ptr %168, align 4, !tbaa !5
  %or.cond160.6.peel272 = icmp slt i32 %196, %185
  br i1 %or.cond160.6.peel272, label %197, label %198

197:                                              ; preds = %.thread256.peel
  store i32 %184, ptr %168, align 4, !tbaa !5
  br label %198

198:                                              ; preds = %197, %.thread256.peel
  %199 = load i32, ptr %169, align 4
  %or.cond160.7.peel273 = icmp slt i32 %199, %185
  br i1 %or.cond160.7.peel273, label %200, label %.loopexit.peel274

200:                                              ; preds = %198
  store i32 %184, ptr %169, align 4, !tbaa !5
  br label %.loopexit.peel274

.loopexit.peel274:                                ; preds = %200, %198, %.peel.next
  %201 = load i8, ptr %89, align 4, !tbaa !11, !range !16, !noundef !17
  %202 = trunc nuw i8 %201 to i1
  br i1 %202, label %203, label %.peel.next265

203:                                              ; preds = %.loopexit.peel274
  %204 = load i32, ptr %176, align 4, !tbaa !5
  %205 = icmp sgt i32 %204, 0
  br i1 %205, label %206, label %.peel.next265

206:                                              ; preds = %203
  %207 = load i32, ptr %170, align 4, !tbaa !5
  %208 = mul nsw i32 %207, 255
  %209 = sdiv i32 %208, %204
  %spec.store.select.peel275 = call i32 @llvm.smin.i32(i32 %209, i32 255)
  %210 = trunc i32 %spec.store.select.peel275 to i8
  %211 = getelementptr inbounds i8, ptr %0, i64 109
  store i8 %210, ptr %211, align 1, !tbaa !10
  %212 = and i32 %spec.store.select.peel275, 255
  %213 = getelementptr inbounds i8, ptr %0, i64 125
  %214 = load i8, ptr %213, align 1, !tbaa !10
  %215 = zext i8 %214 to i32
  %.not158.peel276 = icmp ult i32 %212, %215
  br i1 %.not158.peel276, label %216, label %229

216:                                              ; preds = %206
  %217 = getelementptr inbounds i8, ptr %0, i64 117
  %218 = load i8, ptr %217, align 1, !tbaa !10
  %219 = zext i8 %218 to i32
  %220 = sub nsw i32 %215, %219
  %221 = icmp slt i32 %220, %212
  br i1 %221, label %229, label %222

222:                                              ; preds = %216
  %223 = trunc nuw i32 %220 to i8
  store i8 %223, ptr %213, align 1, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #7
  %224 = lshr i32 %219, 1
  %225 = add nuw nsw i32 %224, %219
  store i32 %225, ptr %5, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #7
  store i32 255, ptr %6, align 4, !tbaa !5
  %226 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 4 dereferenceable(4) %6)
  %227 = load i32, ptr %226, align 4, !tbaa !5
  %228 = trunc i32 %227 to i8
  store i8 %228, ptr %217, align 1, !tbaa !10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #7
  br label %.peel.next265

229:                                              ; preds = %216, %206
  store i8 %210, ptr %213, align 1, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #7
  %230 = udiv i8 %210, 10
  %231 = zext nneg i8 %230 to i32
  store i32 %231, ptr %3, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #7
  store i32 3, ptr %4, align 4, !tbaa !5
  %232 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %3, ptr noundef nonnull align 4 dereferenceable(4) %4)
  %233 = load i32, ptr %232, align 4, !tbaa !5
  %234 = trunc i32 %233 to i8
  %235 = getelementptr inbounds i8, ptr %0, i64 117
  store i8 %234, ptr %235, align 1, !tbaa !10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #7
  br label %.peel.next265

.peel.next265:                                    ; preds = %229, %222, %203, %.loopexit.peel274
  %236 = load i32, ptr %170, align 4, !tbaa !5
  store i32 %236, ptr %172, align 4, !tbaa !5
  br label %239

.preheader:                                       ; preds = %314
  %237 = load i32, ptr %92, align 4, !tbaa !5
  %238 = icmp sgt i32 %237, 2000
  br i1 %238, label %316, label %318

239:                                              ; preds = %.peel.next265, %314
  %indvars.iv = phi i64 [ 2, %.peel.next265 ], [ %indvars.iv.next, %314 ]
  %240 = getelementptr inbounds [8 x i32], ptr %90, i64 0, i64 %indvars.iv
  %241 = load i32, ptr %240, align 4, !tbaa !5
  %242 = getelementptr inbounds [8 x i32], ptr %91, i64 0, i64 %indvars.iv
  %243 = load i32, ptr %242, align 4, !tbaa !5
  %244 = add nsw i32 %243, %241
  %245 = sdiv i32 %244, 2
  %246 = getelementptr inbounds [8 x i32], ptr %92, i64 0, i64 %indvars.iv
  %247 = load i32, ptr %246, align 4, !tbaa !5
  %248 = icmp sle i32 %247, %245
  %249 = icmp sgt i32 %244, 801
  %or.cond = and i1 %249, %248
  br i1 %or.cond, label %250, label %.loopexit

250:                                              ; preds = %239
  %251 = icmp eq i32 %247, 0
  br i1 %251, label %252, label %253

252:                                              ; preds = %250
  store i8 0, ptr %89, align 4, !tbaa !11
  br label %253

253:                                              ; preds = %250, %252
  store i32 %245, ptr %246, align 4, !tbaa !5
  %254 = lshr i32 %245, 2
  %255 = call i32 @llvm.umin.i32(i32 %254, i32 400)
  %256 = load i32, ptr %92, align 4, !tbaa !5
  %or.cond160 = icmp slt i32 %256, %255
  br i1 %or.cond160, label %257, label %258

257:                                              ; preds = %253
  store i32 %254, ptr %92, align 4, !tbaa !5
  br label %258

258:                                              ; preds = %257, %253
  %259 = load i32, ptr %163, align 4, !tbaa !5
  %or.cond160.1 = icmp slt i32 %259, %255
  br i1 %or.cond160.1, label %260, label %261

260:                                              ; preds = %258
  store i32 %254, ptr %163, align 4, !tbaa !5
  br label %261

261:                                              ; preds = %260, %258
  %.not159.2 = icmp eq i64 %indvars.iv, 2
  br i1 %.not159.2, label %.thread250, label %.thread

.thread:                                          ; preds = %261
  %262 = load i32, ptr %164, align 4, !tbaa !5
  %or.cond160.2 = icmp slt i32 %262, %255
  br i1 %or.cond160.2, label %263, label %264

263:                                              ; preds = %.thread
  store i32 %254, ptr %164, align 4, !tbaa !5
  br label %264

264:                                              ; preds = %263, %.thread
  %.not159.3 = icmp eq i64 %indvars.iv, 3
  br i1 %.not159.3, label %.thread252, label %.thread250

.thread250:                                       ; preds = %261, %264
  %265 = load i32, ptr %165, align 4, !tbaa !5
  %or.cond160.3 = icmp slt i32 %265, %255
  br i1 %or.cond160.3, label %266, label %267

266:                                              ; preds = %.thread250
  store i32 %254, ptr %165, align 4, !tbaa !5
  br label %267

267:                                              ; preds = %266, %.thread250
  %.not159.4 = icmp eq i64 %indvars.iv, 4
  br i1 %.not159.4, label %.thread254, label %.thread252

.thread252:                                       ; preds = %264, %267
  %268 = load i32, ptr %166, align 4, !tbaa !5
  %or.cond160.4 = icmp slt i32 %268, %255
  br i1 %or.cond160.4, label %269, label %270

269:                                              ; preds = %.thread252
  store i32 %254, ptr %166, align 4, !tbaa !5
  br label %270

270:                                              ; preds = %269, %.thread252
  %.not159.5 = icmp eq i64 %indvars.iv, 5
  br i1 %.not159.5, label %.thread256, label %.thread254

.thread254:                                       ; preds = %267, %270
  %271 = load i32, ptr %167, align 4, !tbaa !5
  %or.cond160.5 = icmp slt i32 %271, %255
  br i1 %or.cond160.5, label %272, label %273

272:                                              ; preds = %.thread254
  store i32 %254, ptr %167, align 4, !tbaa !5
  br label %273

273:                                              ; preds = %272, %.thread254
  %.not159.6 = icmp eq i64 %indvars.iv, 6
  br i1 %.not159.6, label %.thread258, label %.thread256

.thread256:                                       ; preds = %270, %273
  %274 = load i32, ptr %168, align 4, !tbaa !5
  %or.cond160.6 = icmp slt i32 %274, %255
  br i1 %or.cond160.6, label %275, label %276

275:                                              ; preds = %.thread256
  store i32 %254, ptr %168, align 4, !tbaa !5
  br label %276

276:                                              ; preds = %275, %.thread256
  %.not159.7 = icmp ne i64 %indvars.iv, 7
  %277 = load i32, ptr %169, align 4
  %or.cond160.7 = icmp slt i32 %277, %255
  %or.cond261 = select i1 %.not159.7, i1 %or.cond160.7, i1 false
  br i1 %or.cond261, label %278, label %.loopexit

.thread258:                                       ; preds = %273
  %.old = load i32, ptr %169, align 4, !tbaa !5
  %or.cond160.7.old = icmp slt i32 %.old, %255
  br i1 %or.cond160.7.old, label %278, label %.loopexit

278:                                              ; preds = %276, %.thread258
  store i32 %254, ptr %169, align 4, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %276, %.thread258, %278, %239
  %279 = load i8, ptr %89, align 4, !tbaa !11, !range !16, !noundef !17
  %280 = trunc nuw i8 %279 to i1
  br i1 %280, label %281, label %314

281:                                              ; preds = %.loopexit
  %282 = load i32, ptr %246, align 4, !tbaa !5
  %283 = icmp sgt i32 %282, 0
  br i1 %283, label %284, label %314

284:                                              ; preds = %281
  %285 = load i32, ptr %240, align 4, !tbaa !5
  %286 = mul nsw i32 %285, 255
  %287 = sdiv i32 %286, %282
  %spec.store.select = call i32 @llvm.smin.i32(i32 %287, i32 255)
  %288 = trunc i32 %spec.store.select to i8
  %289 = getelementptr inbounds [8 x i8], ptr %93, i64 0, i64 %indvars.iv
  store i8 %288, ptr %289, align 1, !tbaa !10
  %290 = and i32 %spec.store.select, 255
  %291 = getelementptr inbounds [8 x i8], ptr %94, i64 0, i64 %indvars.iv
  %292 = load i8, ptr %291, align 1, !tbaa !10
  %293 = zext i8 %292 to i32
  %.not158 = icmp ult i32 %290, %293
  br i1 %.not158, label %294, label %300

294:                                              ; preds = %284
  %295 = getelementptr inbounds [8 x i8], ptr %95, i64 0, i64 %indvars.iv
  %296 = load i8, ptr %295, align 1, !tbaa !10
  %297 = zext i8 %296 to i32
  %298 = sub nsw i32 %293, %297
  %299 = icmp slt i32 %298, %290
  br i1 %299, label %300, label %307

300:                                              ; preds = %294, %284
  store i8 %288, ptr %291, align 1, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #7
  %301 = udiv i8 %288, 10
  %302 = zext nneg i8 %301 to i32
  store i32 %302, ptr %3, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #7
  store i32 3, ptr %4, align 4, !tbaa !5
  %303 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %3, ptr noundef nonnull align 4 dereferenceable(4) %4)
  %304 = load i32, ptr %303, align 4, !tbaa !5
  %305 = trunc i32 %304 to i8
  %306 = getelementptr inbounds [8 x i8], ptr %95, i64 0, i64 %indvars.iv
  store i8 %305, ptr %306, align 1, !tbaa !10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #7
  br label %314

307:                                              ; preds = %294
  %308 = trunc nuw i32 %298 to i8
  store i8 %308, ptr %291, align 1, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #7
  %309 = lshr i32 %297, 1
  %310 = add nuw nsw i32 %309, %297
  store i32 %310, ptr %5, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #7
  store i32 255, ptr %6, align 4, !tbaa !5
  %311 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 4 dereferenceable(4) %6)
  %312 = load i32, ptr %311, align 4, !tbaa !5
  %313 = trunc i32 %312 to i8
  store i8 %313, ptr %295, align 1, !tbaa !10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #7
  br label %314

314:                                              ; preds = %300, %307, %281, %.loopexit
  %315 = load i32, ptr %240, align 4, !tbaa !5
  store i32 %315, ptr %242, align 4, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 8
  br i1 %exitcond.not, label %.preheader, label %239, !llvm.loop !18

316:                                              ; preds = %.preheader
  %317 = add nsw i32 %237, -2
  store i32 %317, ptr %92, align 4, !tbaa !5
  br label %318

318:                                              ; preds = %316, %.preheader
  %319 = load i8, ptr %94, align 4, !tbaa !10
  %320 = zext i8 %319 to i32
  %321 = getelementptr inbounds i8, ptr %0, i64 80
  %322 = load i32, ptr %321, align 4, !tbaa !5
  %323 = icmp sgt i32 %322, 2000
  br i1 %323, label %324, label %326

324:                                              ; preds = %318
  %325 = add nsw i32 %322, -2
  store i32 %325, ptr %321, align 4, !tbaa !5
  br label %326

326:                                              ; preds = %324, %318
  %327 = getelementptr inbounds i8, ptr %0, i64 125
  %328 = load i8, ptr %327, align 1, !tbaa !10
  %329 = zext i8 %328 to i32
  %330 = add nuw nsw i32 %320, %329
  %331 = getelementptr inbounds i8, ptr %0, i64 84
  %332 = load i32, ptr %331, align 4, !tbaa !5
  %333 = icmp sgt i32 %332, 2000
  br i1 %333, label %334, label %336

334:                                              ; preds = %326
  %335 = add nsw i32 %332, -2
  store i32 %335, ptr %331, align 4, !tbaa !5
  br label %336

336:                                              ; preds = %334, %326
  %337 = getelementptr inbounds i8, ptr %0, i64 126
  %338 = load i8, ptr %337, align 2, !tbaa !10
  %339 = zext i8 %338 to i32
  %340 = add nuw nsw i32 %330, %339
  %341 = getelementptr inbounds i8, ptr %0, i64 88
  %342 = load i32, ptr %341, align 4, !tbaa !5
  %343 = icmp sgt i32 %342, 2000
  br i1 %343, label %344, label %346

344:                                              ; preds = %336
  %345 = add nsw i32 %342, -2
  store i32 %345, ptr %341, align 4, !tbaa !5
  br label %346

346:                                              ; preds = %344, %336
  %347 = getelementptr inbounds i8, ptr %0, i64 127
  %348 = load i8, ptr %347, align 1, !tbaa !10
  %349 = zext i8 %348 to i32
  %350 = add nuw nsw i32 %340, %349
  %351 = getelementptr inbounds i8, ptr %0, i64 92
  %352 = load i32, ptr %351, align 4, !tbaa !5
  %353 = icmp sgt i32 %352, 2000
  br i1 %353, label %354, label %356

354:                                              ; preds = %346
  %355 = add nsw i32 %352, -2
  store i32 %355, ptr %351, align 4, !tbaa !5
  br label %356

356:                                              ; preds = %354, %346
  %357 = getelementptr inbounds i8, ptr %0, i64 128
  %358 = load i8, ptr %357, align 4, !tbaa !10
  %359 = zext i8 %358 to i32
  %360 = add nuw nsw i32 %350, %359
  %361 = getelementptr inbounds i8, ptr %0, i64 96
  %362 = load i32, ptr %361, align 4, !tbaa !5
  %363 = icmp sgt i32 %362, 2000
  br i1 %363, label %364, label %366

364:                                              ; preds = %356
  %365 = add nsw i32 %362, -2
  store i32 %365, ptr %361, align 4, !tbaa !5
  br label %366

366:                                              ; preds = %364, %356
  %367 = getelementptr inbounds i8, ptr %0, i64 129
  %368 = load i8, ptr %367, align 1, !tbaa !10
  %369 = zext i8 %368 to i32
  %370 = add nuw nsw i32 %360, %369
  %371 = getelementptr inbounds i8, ptr %0, i64 100
  %372 = load i32, ptr %371, align 4, !tbaa !5
  %373 = icmp sgt i32 %372, 2000
  br i1 %373, label %374, label %376

374:                                              ; preds = %366
  %375 = add nsw i32 %372, -2
  store i32 %375, ptr %371, align 4, !tbaa !5
  br label %376

376:                                              ; preds = %374, %366
  %377 = getelementptr inbounds i8, ptr %0, i64 130
  %378 = load i8, ptr %377, align 2, !tbaa !10
  %379 = zext i8 %378 to i32
  %380 = add nuw nsw i32 %370, %379
  %381 = getelementptr inbounds i8, ptr %0, i64 104
  %382 = load i32, ptr %381, align 4, !tbaa !5
  %383 = icmp sgt i32 %382, 2000
  br i1 %383, label %384, label %386

384:                                              ; preds = %376
  %385 = add nsw i32 %382, -2
  store i32 %385, ptr %381, align 4, !tbaa !5
  br label %386

386:                                              ; preds = %384, %376
  %387 = getelementptr inbounds i8, ptr %0, i64 131
  %388 = load i8, ptr %387, align 1, !tbaa !10
  %389 = zext i8 %388 to i32
  %390 = add nuw nsw i32 %380, %389
  %391 = load i8, ptr %89, align 4, !tbaa !11, !range !16, !noundef !17
  %392 = trunc nuw i8 %391 to i1
  br i1 %392, label %393, label %.thread260

393:                                              ; preds = %386
  %394 = load i32, ptr %0, align 4, !tbaa !21
  %395 = icmp sgt i32 %390, %394
  br i1 %395, label %396, label %397

396:                                              ; preds = %393
  store i32 %390, ptr %0, align 4, !tbaa !21
  br label %397

397:                                              ; preds = %396, %393
  %398 = phi i32 [ %390, %396 ], [ %394, %393 ]
  %.not263 = icmp eq i32 %398, 0
  br i1 %.not263, label %.thread260, label %399

399:                                              ; preds = %397
  %400 = getelementptr inbounds i8, ptr %0, i64 172
  %storemerge242 = call i32 @llvm.umax.i32(i32 %320, i32 %329)
  %storemerge243 = call i32 @llvm.umax.i32(i32 %storemerge242, i32 %339)
  %storemerge244 = call i32 @llvm.umax.i32(i32 %storemerge243, i32 %349)
  %storemerge245 = call i32 @llvm.umax.i32(i32 %storemerge244, i32 %359)
  %storemerge246 = call i32 @llvm.umax.i32(i32 %storemerge245, i32 %369)
  %storemerge247 = call i32 @llvm.umax.i32(i32 %storemerge246, i32 %379)
  %storemerge248 = call i32 @llvm.umax.i32(i32 %storemerge247, i32 %389)
  store i32 %storemerge248, ptr %400, align 4, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #7
  %401 = mul nuw nsw i32 %390, 255
  %402 = udiv i32 %401, %398
  store i32 %402, ptr %7, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #7
  store i32 255, ptr %8, align 4, !tbaa !5
  %403 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %8)
  %404 = load i32, ptr %403, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #7
  %405 = load i32, ptr %400, align 4, !tbaa !22
  %406 = add nsw i32 %405, %404
  %407 = sdiv i32 %406, 2
  store i32 %407, ptr %9, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #7
  store i32 255, ptr %10, align 4, !tbaa !5
  %408 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %10)
  %409 = load i32, ptr %408, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  %410 = getelementptr inbounds i8, ptr %0, i64 164
  %411 = load i32, ptr %410, align 4, !tbaa !23
  %412 = getelementptr inbounds i8, ptr %0, i64 168
  store i32 %411, ptr %412, align 4, !tbaa !24
  %.not = icmp slt i32 %409, %411
  br i1 %.not, label %413, label %418

413:                                              ; preds = %399
  %414 = getelementptr inbounds i8, ptr %0, i64 156
  %415 = load i32, ptr %414, align 4, !tbaa !25
  %416 = sub nsw i32 %411, %415
  %417 = icmp slt i32 %416, %409
  br i1 %417, label %418, label %423

418:                                              ; preds = %413, %399
  store i32 %409, ptr %410, align 4, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #7
  %419 = sdiv i32 %409, 14
  store i32 %419, ptr %11, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #7
  store i32 3, ptr %12, align 4, !tbaa !5
  %420 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 4 dereferenceable(4) %12)
  %421 = load i32, ptr %420, align 4, !tbaa !5
  %422 = getelementptr inbounds i8, ptr %0, i64 156
  store i32 %421, ptr %422, align 4, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #7
  br label %427

423:                                              ; preds = %413
  store i32 %416, ptr %410, align 4, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #7
  %424 = shl nsw i32 %415, 1
  store i32 %424, ptr %13, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #7
  store i32 255, ptr %14, align 4, !tbaa !5
  %425 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %13, ptr noundef nonnull align 4 dereferenceable(4) %14)
  %426 = load i32, ptr %425, align 4, !tbaa !5
  store i32 %426, ptr %414, align 4, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #7
  br label %427

427:                                              ; preds = %423, %418
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #7
  store i32 0, ptr %15, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #7
  store i32 0, ptr %16, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #7
  store i32 0, ptr %17, align 4, !tbaa !5
  %428 = load i32, ptr %400, align 4
  %429 = icmp sgt i32 %428, 0
  br i1 %429, label %.lr.ph, label %.critedge

.lr.ph:                                           ; preds = %427
  %430 = getelementptr inbounds i8, ptr %0, i64 132
  br label %434

.critedge:                                        ; preds = %434, %427
  %431 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %15, ptr noundef nonnull align 4 dereferenceable(4) %16)
  %432 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %431, ptr noundef nonnull align 4 dereferenceable(4) %17)
  %433 = load i32, ptr %432, align 4, !tbaa !5
  %.not155 = icmp eq i32 %433, 0
  br i1 %.not155, label %.critedge._crit_edge, label %476

.critedge._crit_edge:                             ; preds = %.critedge
  %.pre = load i32, ptr %17, align 4, !tbaa !5
  br label %507

434:                                              ; preds = %.lr.ph, %434
  %indvars.iv222 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next223, %434 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #7
  store i32 0, ptr %18, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #7
  store i32 0, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #7
  store i32 0, ptr %20, align 4, !tbaa !5
  %435 = getelementptr inbounds [8 x %struct.ColorRgb], ptr %430, i64 0, i64 %indvars.iv222
  call void @_ZN8ColorRgb6getRGBERiS0_S0_(ptr noundef nonnull align 1 dereferenceable(3) %435, ptr noundef nonnull align 4 dereferenceable(4) %18, ptr noundef nonnull align 4 dereferenceable(4) %19, ptr noundef nonnull align 4 dereferenceable(4) %20)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #7
  %436 = load i32, ptr %18, align 4, !tbaa !5
  %437 = load i32, ptr %400, align 4, !tbaa !22
  %438 = getelementptr inbounds [8 x i8], ptr %94, i64 0, i64 %indvars.iv222
  %439 = load i8, ptr %438, align 1, !tbaa !10
  %440 = zext i8 %439 to i32
  %441 = sub nsw i32 %437, %440
  %.neg = mul i32 %441, -5
  %442 = add i32 %.neg, %437
  %443 = mul nsw i32 %442, %436
  %444 = sdiv i32 %443, %437
  store i32 %444, ptr %21, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #7
  store i32 0, ptr %22, align 4, !tbaa !5
  %445 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %21, ptr noundef nonnull align 4 dereferenceable(4) %22)
  %446 = load i32, ptr %445, align 4, !tbaa !5
  %447 = load i32, ptr %15, align 4, !tbaa !5
  %448 = add nsw i32 %447, %446
  store i32 %448, ptr %15, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #7
  %449 = load i32, ptr %19, align 4, !tbaa !5
  %450 = load i32, ptr %400, align 4, !tbaa !22
  %451 = load i8, ptr %438, align 1, !tbaa !10
  %452 = zext i8 %451 to i32
  %453 = sub nsw i32 %450, %452
  %.neg156 = mul i32 %453, -5
  %454 = add i32 %.neg156, %450
  %455 = mul nsw i32 %454, %449
  %456 = sdiv i32 %455, %450
  store i32 %456, ptr %23, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #7
  store i32 0, ptr %24, align 4, !tbaa !5
  %457 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %23, ptr noundef nonnull align 4 dereferenceable(4) %24)
  %458 = load i32, ptr %457, align 4, !tbaa !5
  %459 = load i32, ptr %16, align 4, !tbaa !5
  %460 = add nsw i32 %459, %458
  store i32 %460, ptr %16, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #7
  %461 = load i32, ptr %20, align 4, !tbaa !5
  %462 = load i32, ptr %400, align 4, !tbaa !22
  %463 = load i8, ptr %438, align 1, !tbaa !10
  %464 = zext i8 %463 to i32
  %465 = sub nsw i32 %462, %464
  %.neg157 = mul i32 %465, -5
  %466 = add i32 %.neg157, %462
  %467 = mul nsw i32 %466, %461
  %468 = sdiv i32 %467, %462
  store i32 %468, ptr %25, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #7
  store i32 0, ptr %26, align 4, !tbaa !5
  %469 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %25, ptr noundef nonnull align 4 dereferenceable(4) %26)
  %470 = load i32, ptr %469, align 4, !tbaa !5
  %471 = load i32, ptr %17, align 4, !tbaa !5
  %472 = add nsw i32 %471, %470
  store i32 %472, ptr %17, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #7
  %indvars.iv.next223 = add nuw nsw i64 %indvars.iv222, 1
  %473 = icmp ult i64 %indvars.iv222, 7
  %474 = load i32, ptr %400, align 4
  %475 = icmp sgt i32 %474, 0
  %or.cond162 = select i1 %473, i1 %475, i1 false
  br i1 %or.cond162, label %434, label %.critedge, !llvm.loop !26

476:                                              ; preds = %.critedge
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #7
  %477 = load i32, ptr %15, align 4, !tbaa !5
  %478 = mul nsw i32 %477, 255
  %479 = sdiv i32 %478, %433
  %480 = add nsw i32 %479, 32
  store i32 %480, ptr %27, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #7
  store i32 0, ptr %28, align 4, !tbaa !5
  %481 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %27, ptr noundef nonnull align 4 dereferenceable(4) %28)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #7
  store i32 255, ptr %29, align 4, !tbaa !5
  %482 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %481, ptr noundef nonnull align 4 dereferenceable(4) %29)
  %483 = load i32, ptr %482, align 4, !tbaa !5
  %484 = load i32, ptr %410, align 4, !tbaa !23
  %485 = mul nsw i32 %484, %483
  %486 = sdiv i32 %485, 255
  store i32 %486, ptr %15, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #7
  %487 = load i32, ptr %16, align 4, !tbaa !5
  %488 = mul nsw i32 %487, 255
  %489 = sdiv i32 %488, %433
  %490 = add nsw i32 %489, 32
  store i32 %490, ptr %30, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #7
  store i32 0, ptr %31, align 4, !tbaa !5
  %491 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %30, ptr noundef nonnull align 4 dereferenceable(4) %31)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #7
  store i32 255, ptr %32, align 4, !tbaa !5
  %492 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %491, ptr noundef nonnull align 4 dereferenceable(4) %32)
  %493 = load i32, ptr %492, align 4, !tbaa !5
  %494 = load i32, ptr %410, align 4, !tbaa !23
  %495 = mul nsw i32 %494, %493
  %496 = sdiv i32 %495, 255
  store i32 %496, ptr %16, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #7
  %497 = load i32, ptr %17, align 4, !tbaa !5
  %498 = mul nsw i32 %497, 255
  %499 = sdiv i32 %498, %433
  %500 = add nsw i32 %499, 32
  store i32 %500, ptr %33, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #7
  store i32 0, ptr %34, align 4, !tbaa !5
  %501 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %33, ptr noundef nonnull align 4 dereferenceable(4) %34)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #7
  store i32 255, ptr %35, align 4, !tbaa !5
  %502 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %501, ptr noundef nonnull align 4 dereferenceable(4) %35)
  %503 = load i32, ptr %502, align 4, !tbaa !5
  %504 = load i32, ptr %410, align 4, !tbaa !23
  %505 = mul nsw i32 %504, %503
  %506 = sdiv i32 %505, 255
  store i32 %506, ptr %17, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #7
  br label %507

507:                                              ; preds = %.critedge._crit_edge, %476
  %508 = phi i32 [ %.pre, %.critedge._crit_edge ], [ %506, %476 ]
  call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %36) #7
  %509 = load i32, ptr %15, align 4, !tbaa !5
  %510 = trunc i32 %509 to i8
  %511 = load i32, ptr %16, align 4, !tbaa !5
  %512 = trunc i32 %511 to i8
  %513 = trunc i32 %508 to i8
  call void @_ZN8ColorRgbC2Ehhh(ptr noundef nonnull align 1 dereferenceable(3) %36, i8 noundef zeroext %510, i8 noundef zeroext %512, i8 noundef zeroext %513)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %38) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %39) #7
  %.sroa.023.0.copyload = load i24, ptr %36, align 4
  %514 = getelementptr inbounds i8, ptr %0, i64 160
  %.sroa.022.0.copyload = load i24, ptr %514, align 4
  %.sroa.021.0.copyload = load i24, ptr %2, align 4
  call void @_ZN18SoundCaptureResult17CalculateRgbDeltaE8ColorRgbS0_S0_RiS1_S1_(ptr noundef nonnull align 4 dereferenceable(296) %0, i24 %.sroa.023.0.copyload, i24 %.sroa.022.0.copyload, i24 %.sroa.021.0.copyload, ptr noundef nonnull align 4 dereferenceable(4) %37, ptr noundef nonnull align 4 dereferenceable(4) %38, ptr noundef nonnull align 4 dereferenceable(4) %39)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %40) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %41) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %42) #7
  %.sroa.015.0.copyload = load i24, ptr %36, align 4
  %.sroa.014.0.copyload = load i24, ptr %514, align 4
  %515 = getelementptr inbounds i8, ptr %2, i64 6
  %.sroa.013.0.copyload = load i24, ptr %515, align 2
  call void @_ZN18SoundCaptureResult17CalculateRgbDeltaE8ColorRgbS0_S0_RiS1_S1_(ptr noundef nonnull align 4 dereferenceable(296) %0, i24 %.sroa.015.0.copyload, i24 %.sroa.014.0.copyload, i24 %.sroa.013.0.copyload, ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef nonnull align 4 dereferenceable(4) %41, ptr noundef nonnull align 4 dereferenceable(4) %42)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %43) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %44) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %45) #7
  %.sroa.07.0.copyload = load i24, ptr %36, align 4
  %.sroa.06.0.copyload = load i24, ptr %514, align 4
  %516 = getelementptr inbounds i8, ptr %2, i64 3
  %.sroa.0.0.copyload = load i24, ptr %516, align 1
  call void @_ZN18SoundCaptureResult17CalculateRgbDeltaE8ColorRgbS0_S0_RiS1_S1_(ptr noundef nonnull align 4 dereferenceable(296) %0, i24 %.sroa.07.0.copyload, i24 %.sroa.06.0.copyload, i24 %.sroa.0.0.copyload, ptr noundef nonnull align 4 dereferenceable(4) %43, ptr noundef nonnull align 4 dereferenceable(4) %44, ptr noundef nonnull align 4 dereferenceable(4) %45)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(3) %514, ptr noundef nonnull align 4 dereferenceable(3) %36, i64 3, i1 false), !tbaa.struct !27
  %517 = getelementptr inbounds i8, ptr %2, i64 56
  %518 = load i32, ptr %517, align 4, !tbaa !28
  %519 = add nsw i32 %518, -1
  store i32 %519, ptr %517, align 4, !tbaa !28
  %520 = icmp slt i32 %518, 1
  br i1 %520, label %521, label %._crit_edge232

._crit_edge232:                                   ; preds = %507
  %.phi.trans.insert = getelementptr inbounds i8, ptr %2, i64 44
  %.pre233 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !29
  br label %589

521:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %46) #7
  %522 = load i32, ptr %43, align 4, !tbaa !5
  %523 = mul nsw i32 %522, %522
  %524 = load i32, ptr %44, align 4, !tbaa !5
  %525 = mul nsw i32 %524, %524
  %526 = add nuw nsw i32 %525, %523
  %527 = load i32, ptr %45, align 4, !tbaa !5
  %528 = mul nsw i32 %527, %527
  %529 = add nuw nsw i32 %526, %528
  %530 = call noundef double @_ZSt4sqrtIiEN9__gnu_cxx11__enable_ifIXsr12__is_integerIT_EE7__valueEdE6__typeES2_(i32 noundef %529)
  %531 = fptosi double %530 to i32
  store i32 %531, ptr %46, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %47) #7
  store i32 0, ptr %47, align 4, !tbaa !5
  %532 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %46, ptr noundef nonnull align 4 dereferenceable(4) %47)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %48) #7
  store i32 255, ptr %48, align 4, !tbaa !5
  %533 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %532, ptr noundef nonnull align 4 dereferenceable(4) %48)
  %534 = load i32, ptr %533, align 4, !tbaa !5
  store i32 %534, ptr %1, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %48) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %47) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %46) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %49) #7
  store i32 30, ptr %49, align 4, !tbaa !5
  %535 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %1, ptr noundef nonnull align 4 dereferenceable(4) %49)
  %536 = load i32, ptr %535, align 4, !tbaa !5
  %537 = sdiv i32 %536, 15
  store i32 %537, ptr %1, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %49) #7
  %538 = load i32, ptr %43, align 4, !tbaa !5
  %539 = icmp eq i32 %538, 0
  br i1 %539, label %549, label %540

540:                                              ; preds = %521
  %541 = icmp sgt i32 %538, -1
  %542 = icmp slt i32 %538, %537
  %or.cond164 = select i1 %541, i1 %542, i1 false
  br i1 %or.cond164, label %549, label %543

543:                                              ; preds = %540
  %544 = icmp slt i32 %538, 0
  %545 = sub nsw i32 0, %538
  %546 = icmp sgt i32 %537, %545
  %or.cond188 = select i1 %544, i1 %546, i1 false
  br i1 %or.cond188, label %549, label %547

547:                                              ; preds = %543
  %548 = sdiv i32 %538, %537
  br label %549

549:                                              ; preds = %543, %540, %521, %547
  %550 = phi i32 [ %548, %547 ], [ 0, %521 ], [ 1, %540 ], [ -1, %543 ]
  %551 = getelementptr inbounds i8, ptr %2, i64 44
  store i32 %550, ptr %551, align 4, !tbaa !29
  %552 = load i32, ptr %44, align 4, !tbaa !5
  %553 = icmp eq i32 %552, 0
  br i1 %553, label %563, label %554

554:                                              ; preds = %549
  %555 = icmp sgt i32 %552, -1
  %556 = icmp slt i32 %552, %537
  %or.cond166 = select i1 %555, i1 %556, i1 false
  br i1 %or.cond166, label %563, label %557

557:                                              ; preds = %554
  %558 = icmp slt i32 %552, 0
  %559 = sub nsw i32 0, %552
  %560 = icmp sgt i32 %537, %559
  %or.cond190 = select i1 %558, i1 %560, i1 false
  br i1 %or.cond190, label %563, label %561

561:                                              ; preds = %557
  %562 = sdiv i32 %552, %537
  br label %563

563:                                              ; preds = %557, %554, %549, %561
  %564 = phi i32 [ %562, %561 ], [ 0, %549 ], [ 1, %554 ], [ -1, %557 ]
  %565 = getelementptr inbounds i8, ptr %2, i64 48
  store i32 %564, ptr %565, align 4, !tbaa !30
  %566 = load i32, ptr %45, align 4, !tbaa !5
  %567 = icmp eq i32 %566, 0
  br i1 %567, label %577, label %568

568:                                              ; preds = %563
  %569 = icmp sgt i32 %566, -1
  %570 = icmp slt i32 %566, %537
  %or.cond168 = select i1 %569, i1 %570, i1 false
  br i1 %or.cond168, label %577, label %571

571:                                              ; preds = %568
  %572 = icmp slt i32 %566, 0
  %573 = sub nsw i32 0, %566
  %574 = icmp sgt i32 %537, %573
  %or.cond192 = select i1 %572, i1 %574, i1 false
  br i1 %or.cond192, label %577, label %575

575:                                              ; preds = %571
  %576 = sdiv i32 %566, %537
  br label %577

577:                                              ; preds = %571, %568, %563, %575
  %578 = phi i32 [ %576, %575 ], [ 0, %563 ], [ 1, %568 ], [ -1, %571 ]
  %579 = getelementptr inbounds i8, ptr %2, i64 52
  store i32 %578, ptr %579, align 4, !tbaa !31
  %580 = call i32 @llvm.abs.i32(i32 %550, i1 true)
  %581 = icmp ugt i32 %580, 1
  br i1 %581, label %587, label %582

582:                                              ; preds = %577
  %583 = call i32 @llvm.abs.i32(i32 %564, i1 true)
  %584 = icmp ugt i32 %583, 1
  %585 = call i32 @llvm.abs.i32(i32 %578, i1 true)
  %586 = icmp ugt i32 %585, 1
  %or.cond170 = select i1 %584, i1 true, i1 %586
  br i1 %or.cond170, label %587, label %588

587:                                              ; preds = %582, %577
  store i32 1, ptr %517, align 4, !tbaa !28
  br label %589

588:                                              ; preds = %582
  store i32 0, ptr %517, align 4, !tbaa !28
  br label %589

589:                                              ; preds = %._crit_edge232, %587, %588
  %590 = phi i32 [ %.pre233, %._crit_edge232 ], [ %550, %587 ], [ %550, %588 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %50) #7
  %591 = call noundef i32 @_ZN8ColorRgb3RedEv(ptr noundef nonnull align 1 dereferenceable(3) %516)
  %592 = add nsw i32 %591, %590
  store i32 %592, ptr %50, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %51) #7
  store i32 0, ptr %51, align 4, !tbaa !5
  %593 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %50, ptr noundef nonnull align 4 dereferenceable(4) %51)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %52) #7
  store i32 255, ptr %52, align 4, !tbaa !5
  %594 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %593, ptr noundef nonnull align 4 dereferenceable(4) %52)
  %595 = load i32, ptr %594, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %52) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %51) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %50) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %53) #7
  %596 = getelementptr inbounds i8, ptr %2, i64 48
  %597 = load i32, ptr %596, align 4, !tbaa !30
  %598 = call noundef i32 @_ZN8ColorRgb5GreenEv(ptr noundef nonnull align 1 dereferenceable(3) %516)
  %599 = add nsw i32 %598, %597
  store i32 %599, ptr %53, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %54) #7
  store i32 0, ptr %54, align 4, !tbaa !5
  %600 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %53, ptr noundef nonnull align 4 dereferenceable(4) %54)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %55) #7
  store i32 255, ptr %55, align 4, !tbaa !5
  %601 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %600, ptr noundef nonnull align 4 dereferenceable(4) %55)
  %602 = load i32, ptr %601, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %55) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %54) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %53) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %56) #7
  %603 = getelementptr inbounds i8, ptr %2, i64 52
  %604 = load i32, ptr %603, align 4, !tbaa !31
  %605 = call noundef i32 @_ZN8ColorRgb4BlueEv(ptr noundef nonnull align 1 dereferenceable(3) %516)
  %606 = add nsw i32 %605, %604
  store i32 %606, ptr %56, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %57) #7
  store i32 0, ptr %57, align 4, !tbaa !5
  %607 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %56, ptr noundef nonnull align 4 dereferenceable(4) %57)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %58) #7
  store i32 255, ptr %58, align 4, !tbaa !5
  %608 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %607, ptr noundef nonnull align 4 dereferenceable(4) %58)
  %609 = load i32, ptr %608, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %58) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %57) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %56) #7
  call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %59) #7
  %610 = trunc i32 %595 to i8
  %611 = trunc i32 %602 to i8
  %612 = trunc i32 %609 to i8
  call void @_ZN8ColorRgbC2Ehhh(ptr noundef nonnull align 1 dereferenceable(3) %59, i8 noundef zeroext %610, i8 noundef zeroext %611, i8 noundef zeroext %612)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %516, ptr noundef nonnull align 1 dereferenceable(3) %59, i64 3, i1 false), !tbaa.struct !27
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %59) #7
  %613 = getelementptr inbounds i8, ptr %2, i64 40
  %614 = load i32, ptr %613, align 4, !tbaa !32
  %615 = add nsw i32 %614, -1
  store i32 %615, ptr %613, align 4, !tbaa !32
  %616 = icmp slt i32 %614, 1
  br i1 %616, label %617, label %._crit_edge234

._crit_edge234:                                   ; preds = %589
  %.phi.trans.insert235 = getelementptr inbounds i8, ptr %2, i64 28
  %.pre236 = load i32, ptr %.phi.trans.insert235, align 4, !tbaa !33
  br label %691

617:                                              ; preds = %589
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %60) #7
  %618 = load i32, ptr %40, align 4, !tbaa !5
  %619 = mul nsw i32 %618, %618
  %620 = load i32, ptr %41, align 4, !tbaa !5
  %621 = mul nsw i32 %620, %620
  %622 = add nuw nsw i32 %621, %619
  %623 = load i32, ptr %42, align 4, !tbaa !5
  %624 = mul nsw i32 %623, %623
  %625 = add nuw nsw i32 %622, %624
  %626 = call noundef double @_ZSt4sqrtIiEN9__gnu_cxx11__enable_ifIXsr12__is_integerIT_EE7__valueEdE6__typeES2_(i32 noundef %625)
  %627 = fptosi double %626 to i32
  store i32 %627, ptr %60, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %61) #7
  store i32 0, ptr %61, align 4, !tbaa !5
  %628 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %60, ptr noundef nonnull align 4 dereferenceable(4) %61)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %62) #7
  store i32 255, ptr %62, align 4, !tbaa !5
  %629 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %628, ptr noundef nonnull align 4 dereferenceable(4) %62)
  %630 = load i32, ptr %629, align 4, !tbaa !5
  store i32 %630, ptr %1, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %62) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %61) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %60) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %63) #7
  store i32 16, ptr %63, align 4, !tbaa !5
  %631 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %1, ptr noundef nonnull align 4 dereferenceable(4) %63)
  %632 = load i32, ptr %631, align 4, !tbaa !5
  %633 = sdiv i32 %632, 8
  store i32 %633, ptr %1, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %63) #7
  %634 = load i32, ptr %40, align 4, !tbaa !5
  %635 = icmp eq i32 %634, 0
  br i1 %635, label %645, label %636

636:                                              ; preds = %617
  %637 = icmp sgt i32 %634, -1
  %638 = icmp slt i32 %634, %633
  %or.cond172 = select i1 %637, i1 %638, i1 false
  br i1 %or.cond172, label %645, label %639

639:                                              ; preds = %636
  %640 = icmp slt i32 %634, 0
  %641 = sub nsw i32 0, %634
  %642 = icmp sgt i32 %633, %641
  %or.cond194 = select i1 %640, i1 %642, i1 false
  br i1 %or.cond194, label %645, label %643

643:                                              ; preds = %639
  %644 = sdiv i32 %634, %633
  br label %645

645:                                              ; preds = %639, %636, %617, %643
  %646 = phi i32 [ %644, %643 ], [ 0, %617 ], [ 1, %636 ], [ -1, %639 ]
  %647 = getelementptr inbounds i8, ptr %2, i64 28
  store i32 %646, ptr %647, align 4, !tbaa !33
  %648 = load i32, ptr %41, align 4, !tbaa !5
  %649 = icmp eq i32 %648, 0
  br i1 %649, label %659, label %650

650:                                              ; preds = %645
  %651 = icmp sgt i32 %648, -1
  %652 = icmp slt i32 %648, %633
  %or.cond174 = select i1 %651, i1 %652, i1 false
  br i1 %or.cond174, label %659, label %653

653:                                              ; preds = %650
  %654 = icmp slt i32 %648, 0
  %655 = sub nsw i32 0, %648
  %656 = icmp sgt i32 %633, %655
  %or.cond196 = select i1 %654, i1 %656, i1 false
  br i1 %or.cond196, label %659, label %657

657:                                              ; preds = %653
  %658 = sdiv i32 %648, %633
  br label %659

659:                                              ; preds = %653, %650, %645, %657
  %660 = phi i32 [ %658, %657 ], [ 0, %645 ], [ 1, %650 ], [ -1, %653 ]
  %661 = getelementptr inbounds i8, ptr %2, i64 32
  store i32 %660, ptr %661, align 4, !tbaa !34
  %662 = load i32, ptr %42, align 4, !tbaa !5
  %663 = icmp eq i32 %662, 0
  br i1 %663, label %673, label %664

664:                                              ; preds = %659
  %665 = icmp sgt i32 %662, -1
  %666 = icmp slt i32 %662, %633
  %or.cond176 = select i1 %665, i1 %666, i1 false
  br i1 %or.cond176, label %673, label %667

667:                                              ; preds = %664
  %668 = icmp slt i32 %662, 0
  %669 = sub nsw i32 0, %662
  %670 = icmp sgt i32 %633, %669
  %or.cond198 = select i1 %668, i1 %670, i1 false
  br i1 %or.cond198, label %673, label %671

671:                                              ; preds = %667
  %672 = sdiv i32 %662, %633
  br label %673

673:                                              ; preds = %667, %664, %659, %671
  %674 = phi i32 [ %672, %671 ], [ 0, %659 ], [ 1, %664 ], [ -1, %667 ]
  %675 = getelementptr inbounds i8, ptr %2, i64 36
  store i32 %674, ptr %675, align 4, !tbaa !35
  %676 = call i32 @llvm.abs.i32(i32 %646, i1 true)
  %677 = icmp ugt i32 %676, 2
  br i1 %677, label %684, label %678

678:                                              ; preds = %673
  %679 = call i32 @llvm.abs.i32(i32 %660, i1 true)
  %680 = icmp ugt i32 %679, 2
  br i1 %680, label %684, label %681

681:                                              ; preds = %678
  %682 = call i32 @llvm.abs.i32(i32 %674, i1 true)
  %683 = icmp ugt i32 %682, 2
  br i1 %683, label %684, label %685

684:                                              ; preds = %681, %678, %673
  store i32 3, ptr %613, align 4, !tbaa !32
  br label %691

685:                                              ; preds = %681
  %686 = icmp eq i32 %676, 2
  %687 = icmp eq i32 %679, 2
  %or.cond177 = or i1 %686, %687
  %688 = icmp eq i32 %682, 2
  %or.cond178 = or i1 %or.cond177, %688
  br i1 %or.cond178, label %689, label %690

689:                                              ; preds = %685
  store i32 1, ptr %613, align 4, !tbaa !32
  br label %691

690:                                              ; preds = %685
  store i32 0, ptr %613, align 4, !tbaa !32
  br label %691

691:                                              ; preds = %._crit_edge234, %684, %690, %689
  %692 = phi i32 [ %.pre236, %._crit_edge234 ], [ %646, %684 ], [ %646, %690 ], [ %646, %689 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %64) #7
  %693 = call noundef i32 @_ZN8ColorRgb3RedEv(ptr noundef nonnull align 1 dereferenceable(3) %515)
  %694 = add nsw i32 %693, %692
  store i32 %694, ptr %64, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %65) #7
  store i32 0, ptr %65, align 4, !tbaa !5
  %695 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %64, ptr noundef nonnull align 4 dereferenceable(4) %65)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %66) #7
  store i32 255, ptr %66, align 4, !tbaa !5
  %696 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %695, ptr noundef nonnull align 4 dereferenceable(4) %66)
  %697 = load i32, ptr %696, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %66) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %65) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %64) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %67) #7
  %698 = getelementptr inbounds i8, ptr %2, i64 32
  %699 = load i32, ptr %698, align 4, !tbaa !34
  %700 = call noundef i32 @_ZN8ColorRgb5GreenEv(ptr noundef nonnull align 1 dereferenceable(3) %515)
  %701 = add nsw i32 %700, %699
  store i32 %701, ptr %67, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %68) #7
  store i32 0, ptr %68, align 4, !tbaa !5
  %702 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %67, ptr noundef nonnull align 4 dereferenceable(4) %68)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %69) #7
  store i32 255, ptr %69, align 4, !tbaa !5
  %703 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %702, ptr noundef nonnull align 4 dereferenceable(4) %69)
  %704 = load i32, ptr %703, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %69) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %68) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %67) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %70) #7
  %705 = getelementptr inbounds i8, ptr %2, i64 36
  %706 = load i32, ptr %705, align 4, !tbaa !35
  %707 = call noundef i32 @_ZN8ColorRgb4BlueEv(ptr noundef nonnull align 1 dereferenceable(3) %515)
  %708 = add nsw i32 %707, %706
  store i32 %708, ptr %70, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %71) #7
  store i32 0, ptr %71, align 4, !tbaa !5
  %709 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %70, ptr noundef nonnull align 4 dereferenceable(4) %71)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %72) #7
  store i32 255, ptr %72, align 4, !tbaa !5
  %710 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %709, ptr noundef nonnull align 4 dereferenceable(4) %72)
  %711 = load i32, ptr %710, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %72) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %71) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %70) #7
  call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %73) #7
  %712 = trunc i32 %697 to i8
  %713 = trunc i32 %704 to i8
  %714 = trunc i32 %711 to i8
  call void @_ZN8ColorRgbC2Ehhh(ptr noundef nonnull align 1 dereferenceable(3) %73, i8 noundef zeroext %712, i8 noundef zeroext %713, i8 noundef zeroext %714)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(3) %515, ptr noundef nonnull align 1 dereferenceable(3) %73, i64 3, i1 false), !tbaa.struct !27
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %73) #7
  %715 = getelementptr inbounds i8, ptr %2, i64 24
  %716 = load i32, ptr %715, align 4, !tbaa !36
  %717 = add nsw i32 %716, -1
  store i32 %717, ptr %715, align 4, !tbaa !36
  %718 = icmp slt i32 %716, 1
  br i1 %718, label %719, label %._crit_edge237

._crit_edge237:                                   ; preds = %691
  %.phi.trans.insert238 = getelementptr inbounds i8, ptr %2, i64 12
  %.pre239 = load i32, ptr %.phi.trans.insert238, align 4, !tbaa !37
  br label %793

719:                                              ; preds = %691
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %74) #7
  %720 = load i32, ptr %37, align 4, !tbaa !5
  %721 = mul nsw i32 %720, %720
  %722 = load i32, ptr %38, align 4, !tbaa !5
  %723 = mul nsw i32 %722, %722
  %724 = add nuw nsw i32 %723, %721
  %725 = load i32, ptr %39, align 4, !tbaa !5
  %726 = mul nsw i32 %725, %725
  %727 = add nuw nsw i32 %724, %726
  %728 = call noundef double @_ZSt4sqrtIiEN9__gnu_cxx11__enable_ifIXsr12__is_integerIT_EE7__valueEdE6__typeES2_(i32 noundef %727)
  %729 = fptosi double %728 to i32
  store i32 %729, ptr %74, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %75) #7
  store i32 0, ptr %75, align 4, !tbaa !5
  %730 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %74, ptr noundef nonnull align 4 dereferenceable(4) %75)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %76) #7
  store i32 255, ptr %76, align 4, !tbaa !5
  %731 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %730, ptr noundef nonnull align 4 dereferenceable(4) %76)
  %732 = load i32, ptr %731, align 4, !tbaa !5
  store i32 %732, ptr %1, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %76) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %75) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %74) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %77) #7
  store i32 22, ptr %77, align 4, !tbaa !5
  %733 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %1, ptr noundef nonnull align 4 dereferenceable(4) %77)
  %734 = load i32, ptr %733, align 4, !tbaa !5
  %735 = sdiv i32 %734, 11
  store i32 %735, ptr %1, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %77) #7
  %736 = load i32, ptr %37, align 4, !tbaa !5
  %737 = icmp eq i32 %736, 0
  br i1 %737, label %747, label %738

738:                                              ; preds = %719
  %739 = icmp sgt i32 %736, -1
  %740 = icmp slt i32 %736, %735
  %or.cond180 = select i1 %739, i1 %740, i1 false
  br i1 %or.cond180, label %747, label %741

741:                                              ; preds = %738
  %742 = icmp slt i32 %736, 0
  %743 = sub nsw i32 0, %736
  %744 = icmp sgt i32 %735, %743
  %or.cond200 = select i1 %742, i1 %744, i1 false
  br i1 %or.cond200, label %747, label %745

745:                                              ; preds = %741
  %746 = sdiv i32 %736, %735
  br label %747

747:                                              ; preds = %741, %738, %719, %745
  %748 = phi i32 [ %746, %745 ], [ 0, %719 ], [ 1, %738 ], [ -1, %741 ]
  %749 = getelementptr inbounds i8, ptr %2, i64 12
  store i32 %748, ptr %749, align 4, !tbaa !37
  %750 = load i32, ptr %38, align 4, !tbaa !5
  %751 = icmp eq i32 %750, 0
  br i1 %751, label %761, label %752

752:                                              ; preds = %747
  %753 = icmp sgt i32 %750, -1
  %754 = icmp slt i32 %750, %735
  %or.cond182 = select i1 %753, i1 %754, i1 false
  br i1 %or.cond182, label %761, label %755

755:                                              ; preds = %752
  %756 = icmp slt i32 %750, 0
  %757 = sub nsw i32 0, %750
  %758 = icmp sgt i32 %735, %757
  %or.cond202 = select i1 %756, i1 %758, i1 false
  br i1 %or.cond202, label %761, label %759

759:                                              ; preds = %755
  %760 = sdiv i32 %750, %735
  br label %761

761:                                              ; preds = %755, %752, %747, %759
  %762 = phi i32 [ %760, %759 ], [ 0, %747 ], [ 1, %752 ], [ -1, %755 ]
  %763 = getelementptr inbounds i8, ptr %2, i64 16
  store i32 %762, ptr %763, align 4, !tbaa !38
  %764 = load i32, ptr %39, align 4, !tbaa !5
  %765 = icmp eq i32 %764, 0
  br i1 %765, label %775, label %766

766:                                              ; preds = %761
  %767 = icmp sgt i32 %764, -1
  %768 = icmp slt i32 %764, %735
  %or.cond184 = select i1 %767, i1 %768, i1 false
  br i1 %or.cond184, label %775, label %769

769:                                              ; preds = %766
  %770 = icmp slt i32 %764, 0
  %771 = sub nsw i32 0, %764
  %772 = icmp sgt i32 %735, %771
  %or.cond204 = select i1 %770, i1 %772, i1 false
  br i1 %or.cond204, label %775, label %773

773:                                              ; preds = %769
  %774 = sdiv i32 %764, %735
  br label %775

775:                                              ; preds = %769, %766, %761, %773
  %776 = phi i32 [ %774, %773 ], [ 0, %761 ], [ 1, %766 ], [ -1, %769 ]
  %777 = getelementptr inbounds i8, ptr %2, i64 20
  store i32 %776, ptr %777, align 4, !tbaa !39
  %778 = call i32 @llvm.abs.i32(i32 %748, i1 true)
  %779 = icmp ugt i32 %778, 2
  br i1 %779, label %786, label %780

780:                                              ; preds = %775
  %781 = call i32 @llvm.abs.i32(i32 %762, i1 true)
  %782 = icmp ugt i32 %781, 2
  br i1 %782, label %786, label %783

783:                                              ; preds = %780
  %784 = call i32 @llvm.abs.i32(i32 %776, i1 true)
  %785 = icmp ugt i32 %784, 2
  br i1 %785, label %786, label %787

786:                                              ; preds = %783, %780, %775
  store i32 3, ptr %715, align 4, !tbaa !36
  br label %793

787:                                              ; preds = %783
  %788 = icmp eq i32 %778, 2
  %789 = icmp eq i32 %781, 2
  %or.cond185 = or i1 %788, %789
  %790 = icmp eq i32 %784, 2
  %or.cond186 = or i1 %or.cond185, %790
  br i1 %or.cond186, label %791, label %792

791:                                              ; preds = %787
  store i32 1, ptr %715, align 4, !tbaa !36
  br label %793

792:                                              ; preds = %787
  store i32 0, ptr %715, align 4, !tbaa !36
  br label %793

793:                                              ; preds = %791, %792, %786, %._crit_edge237
  %794 = phi i32 [ %.pre239, %._crit_edge237 ], [ %748, %786 ], [ %748, %792 ], [ %748, %791 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %78) #7
  %795 = call noundef i32 @_ZN8ColorRgb3RedEv(ptr noundef nonnull align 1 dereferenceable(3) %2)
  %796 = add nsw i32 %795, %794
  store i32 %796, ptr %78, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %79) #7
  store i32 0, ptr %79, align 4, !tbaa !5
  %797 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %78, ptr noundef nonnull align 4 dereferenceable(4) %79)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %80) #7
  store i32 255, ptr %80, align 4, !tbaa !5
  %798 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %797, ptr noundef nonnull align 4 dereferenceable(4) %80)
  %799 = load i32, ptr %798, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %80) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %79) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %78) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %81) #7
  %800 = getelementptr inbounds i8, ptr %2, i64 16
  %801 = load i32, ptr %800, align 4, !tbaa !38
  %802 = call noundef i32 @_ZN8ColorRgb5GreenEv(ptr noundef nonnull align 1 dereferenceable(3) %2)
  %803 = add nsw i32 %802, %801
  store i32 %803, ptr %81, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %82) #7
  store i32 0, ptr %82, align 4, !tbaa !5
  %804 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %81, ptr noundef nonnull align 4 dereferenceable(4) %82)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %83) #7
  store i32 255, ptr %83, align 4, !tbaa !5
  %805 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %804, ptr noundef nonnull align 4 dereferenceable(4) %83)
  %806 = load i32, ptr %805, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %83) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %82) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %81) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %84) #7
  %807 = getelementptr inbounds i8, ptr %2, i64 20
  %808 = load i32, ptr %807, align 4, !tbaa !39
  %809 = call noundef i32 @_ZN8ColorRgb4BlueEv(ptr noundef nonnull align 1 dereferenceable(3) %2)
  %810 = add nsw i32 %809, %808
  store i32 %810, ptr %84, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %85) #7
  store i32 0, ptr %85, align 4, !tbaa !5
  %811 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %84, ptr noundef nonnull align 4 dereferenceable(4) %85)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %86) #7
  store i32 255, ptr %86, align 4, !tbaa !5
  %812 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %811, ptr noundef nonnull align 4 dereferenceable(4) %86)
  %813 = load i32, ptr %812, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %86) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %85) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %84) #7
  call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %87) #7
  %814 = trunc i32 %799 to i8
  %815 = trunc i32 %806 to i8
  %816 = trunc i32 %813 to i8
  call void @_ZN8ColorRgbC2Ehhh(ptr noundef nonnull align 1 dereferenceable(3) %87, i8 noundef zeroext %814, i8 noundef zeroext %815, i8 noundef zeroext %816)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(3) %2, ptr noundef nonnull align 1 dereferenceable(3) %87, i64 3, i1 false), !tbaa.struct !27
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %87) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %45) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %44) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %43) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %42) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #7
  %.pre240 = load i32, ptr %0, align 4, !tbaa !21
  %817 = icmp sgt i32 %.pre240, 1024
  br i1 %817, label %818, label %.thread260

818:                                              ; preds = %793
  %819 = add nsw i32 %.pre240, -1
  store i32 %819, ptr %0, align 4, !tbaa !21
  br label %.thread260

.thread260:                                       ; preds = %397, %793, %818, %386
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(60) %88, ptr noundef nonnull align 4 dereferenceable(60) %2, i64 60, i1 false), !tbaa.struct !9
  %820 = getelementptr inbounds i8, ptr %0, i64 176
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(60) %820, ptr noundef nonnull align 4 dereferenceable(60) %2, i64 60, i1 false), !tbaa.struct !9
  %821 = load i8, ptr %89, align 4, !tbaa !11, !range !16, !noundef !17
  %822 = trunc nuw i8 %821 to i1
  br i1 %822, label %823, label %827

823:                                              ; preds = %.thread260
  %824 = getelementptr inbounds i8, ptr %0, i64 8
  %825 = load i32, ptr %824, align 4, !tbaa !40
  %826 = add i32 %825, 1
  store i32 %826, ptr %824, align 4, !tbaa !40
  br label %827

827:                                              ; preds = %823, %.thread260
  call void @llvm.lifetime.end.p0(i64 60, ptr nonnull %2) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %1) #7
  ret void
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8ColorRgb6getRGBERiS0_S0_(ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN18SoundCaptureResult17CalculateRgbDeltaE8ColorRgbS0_S0_RiS1_S1_(ptr noundef nonnull align 4 dereferenceable(296), i24, i24, i24, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt4sqrtIiEN9__gnu_cxx11__enable_ifIXsr12__is_integerIT_EE7__valueEdE6__typeES2_(i32 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.abs.i32(i32, i1 immarg) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN8ColorRgb3RedEv(ptr noundef nonnull align 1 dereferenceable(3)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN8ColorRgb5GreenEv(ptr noundef nonnull align 1 dereferenceable(3)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN8ColorRgb4BlueEv(ptr noundef nonnull align 1 dereferenceable(3)) local_unnamed_addr #2 align 2

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

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

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

attributes #0 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{i64 0, i64 1, !10, i64 1, i64 1, !10, i64 2, i64 1, !10, i64 3, i64 1, !10, i64 4, i64 1, !10, i64 5, i64 1, !10, i64 6, i64 1, !10, i64 7, i64 1, !10, i64 8, i64 1, !10, i64 12, i64 4, !5, i64 16, i64 4, !5, i64 20, i64 4, !5, i64 24, i64 4, !5, i64 28, i64 4, !5, i64 32, i64 4, !5, i64 36, i64 4, !5, i64 40, i64 4, !5, i64 44, i64 4, !5, i64 48, i64 4, !5, i64 52, i64 4, !5, i64 56, i64 4, !5}
!10 = !{!7, !7, i64 0}
!11 = !{!12, !13, i64 4}
!12 = !{!"_ZTS18SoundCaptureResult", !6, i64 0, !13, i64 4, !6, i64 8, !7, i64 12, !7, i64 44, !7, i64 76, !7, i64 108, !7, i64 116, !7, i64 124, !7, i64 132, !6, i64 156, !14, i64 160, !6, i64 164, !6, i64 168, !6, i64 172, !15, i64 176, !15, i64 236}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"_ZTS8ColorRgb", !7, i64 0, !7, i64 1, !7, i64 2}
!15 = !{!"_ZTS12MovingTarget", !14, i64 0, !14, i64 3, !14, i64 6, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 40, !6, i64 44, !6, i64 48, !6, i64 52, !6, i64 56}
!16 = !{i8 0, i8 2}
!17 = !{}
!18 = distinct !{!18, !19, !20}
!19 = !{!"llvm.loop.mustprogress"}
!20 = !{!"llvm.loop.peeled.count", i32 2}
!21 = !{!12, !6, i64 0}
!22 = !{!12, !6, i64 172}
!23 = !{!12, !6, i64 164}
!24 = !{!12, !6, i64 168}
!25 = !{!12, !6, i64 156}
!26 = distinct !{!26, !19}
!27 = !{i64 0, i64 1, !10, i64 1, i64 1, !10, i64 2, i64 1, !10}
!28 = !{!15, !6, i64 56}
!29 = !{!15, !6, i64 44}
!30 = !{!15, !6, i64 48}
!31 = !{!15, !6, i64 52}
!32 = !{!15, !6, i64 40}
!33 = !{!15, !6, i64 28}
!34 = !{!15, !6, i64 32}
!35 = !{!15, !6, i64 36}
!36 = !{!15, !6, i64 24}
!37 = !{!15, !6, i64 12}
!38 = !{!15, !6, i64 16}
!39 = !{!15, !6, i64 20}
!40 = !{!12, !6, i64 8}


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