; LLVM IR from dbry/wavpack-stream :: src (pack)

; 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.decorr_pass = type { i32, i32, i32, i32, [8 x i32], [8 x i32], i32, i32, i32, i32 }

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

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

; Function Attrs: nounwind uwtable
define dso_local void @decorr_stereo_pass(ptr noundef %0, ptr noundef %1, i32 noundef %2) #1 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %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
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store i32 %2, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #2
  %38 = load ptr, ptr %5, align 8, !tbaa !5
  %39 = load i32, ptr %6, align 4, !tbaa !9
  %40 = mul nsw i32 %39, 2
  %41 = sext i32 %40 to i64
  %42 = getelementptr inbounds i32, ptr %38, i64 %41
  store ptr %42, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #2
  %43 = load ptr, ptr %4, align 8, !tbaa !5
  %44 = getelementptr inbounds %struct.decorr_pass, ptr %43, i32 0, i32 0
  %45 = load i32, ptr %44, align 4, !tbaa !11
  switch i32 %45, label %410 [
    i32 17, label %46
    i32 18, label %223
    i32 -1, label %579
    i32 -2, label %751
    i32 -3, label %923
  ]

46:                                               ; preds = %3
  %47 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %47, ptr %7, align 8, !tbaa !5
  br label %48

48:                                               ; preds = %219, %46
  %49 = load ptr, ptr %7, align 8, !tbaa !5
  %50 = load ptr, ptr %8, align 8, !tbaa !5
  %51 = icmp ult ptr %49, %50
  br i1 %51, label %52, label %222

52:                                               ; preds = %48
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #2
  %53 = load ptr, ptr %4, align 8, !tbaa !5
  %54 = getelementptr inbounds %struct.decorr_pass, ptr %53, i32 0, i32 4
  %55 = getelementptr inbounds [8 x i32], ptr %54, i64 0, i64 0
  %56 = load i32, ptr %55, align 4, !tbaa !9
  %57 = mul nsw i32 2, %56
  %58 = load ptr, ptr %4, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.decorr_pass, ptr %58, i32 0, i32 4
  %60 = getelementptr inbounds [8 x i32], ptr %59, i64 0, i64 1
  %61 = load i32, ptr %60, align 4, !tbaa !9
  %62 = sub nsw i32 %57, %61
  store i32 %62, ptr %11, align 4, !tbaa !9
  %63 = load ptr, ptr %4, align 8, !tbaa !5
  %64 = getelementptr inbounds %struct.decorr_pass, ptr %63, i32 0, i32 4
  %65 = getelementptr inbounds [8 x i32], ptr %64, i64 0, i64 0
  %66 = load i32, ptr %65, align 4, !tbaa !9
  %67 = load ptr, ptr %4, align 8, !tbaa !5
  %68 = getelementptr inbounds %struct.decorr_pass, ptr %67, i32 0, i32 4
  %69 = getelementptr inbounds [8 x i32], ptr %68, i64 0, i64 1
  store i32 %66, ptr %69, align 4, !tbaa !9
  %70 = load ptr, ptr %7, align 8, !tbaa !5
  %71 = getelementptr inbounds i32, ptr %70, i64 0
  %72 = load i32, ptr %71, align 4, !tbaa !9
  %73 = load ptr, ptr %4, align 8, !tbaa !5
  %74 = getelementptr inbounds %struct.decorr_pass, ptr %73, i32 0, i32 4
  %75 = getelementptr inbounds [8 x i32], ptr %74, i64 0, i64 0
  store i32 %72, ptr %75, align 4, !tbaa !9
  %76 = load i32, ptr %11, align 4, !tbaa !9
  %77 = load i32, ptr %11, align 4, !tbaa !9
  %78 = trunc i32 %77 to i16
  %79 = sext i16 %78 to i32
  %80 = icmp ne i32 %76, %79
  br i1 %80, label %81, label %99

81:                                               ; preds = %52
  %82 = load i32, ptr %11, align 4, !tbaa !9
  %83 = and i32 %82, 65535
  %84 = load ptr, ptr %4, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.decorr_pass, ptr %84, i32 0, i32 2
  %86 = load i32, ptr %85, align 4, !tbaa !13
  %87 = mul nsw i32 %83, %86
  %88 = ashr i32 %87, 9
  %89 = load i32, ptr %11, align 4, !tbaa !9
  %90 = and i32 %89, -65536
  %91 = ashr i32 %90, 9
  %92 = load ptr, ptr %4, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.decorr_pass, ptr %92, i32 0, i32 2
  %94 = load i32, ptr %93, align 4, !tbaa !13
  %95 = mul nsw i32 %91, %94
  %96 = add nsw i32 %88, %95
  %97 = add nsw i32 %96, 1
  %98 = ashr i32 %97, 1
  br label %107

99:                                               ; preds = %52
  %100 = load ptr, ptr %4, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.decorr_pass, ptr %100, i32 0, i32 2
  %102 = load i32, ptr %101, align 4, !tbaa !13
  %103 = load i32, ptr %11, align 4, !tbaa !9
  %104 = mul nsw i32 %102, %103
  %105 = add nsw i32 %104, 512
  %106 = ashr i32 %105, 10
  br label %107

107:                                              ; preds = %99, %81
  %108 = phi i32 [ %98, %81 ], [ %106, %99 ]
  %109 = sub nsw i32 %72, %108
  store i32 %109, ptr %12, align 4, !tbaa !9
  %110 = load ptr, ptr %7, align 8, !tbaa !5
  %111 = getelementptr inbounds i32, ptr %110, i64 0
  store i32 %109, ptr %111, align 4, !tbaa !9
  %112 = load i32, ptr %11, align 4, !tbaa !9
  %113 = icmp ne i32 %112, 0
  br i1 %113, label %114, label %135

114:                                              ; preds = %107
  %115 = load i32, ptr %12, align 4, !tbaa !9
  %116 = icmp ne i32 %115, 0
  br i1 %116, label %117, label %135

117:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #2
  %118 = load i32, ptr %11, align 4, !tbaa !9
  %119 = load i32, ptr %12, align 4, !tbaa !9
  %120 = xor i32 %118, %119
  %121 = ashr i32 %120, 31
  store i32 %121, ptr %13, align 4, !tbaa !9
  %122 = load ptr, ptr %4, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.decorr_pass, ptr %122, i32 0, i32 1
  %124 = load i32, ptr %123, align 4, !tbaa !14
  %125 = load i32, ptr %13, align 4, !tbaa !9
  %126 = xor i32 %124, %125
  %127 = load ptr, ptr %4, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.decorr_pass, ptr %127, i32 0, i32 2
  %129 = load i32, ptr %128, align 4, !tbaa !13
  %130 = load i32, ptr %13, align 4, !tbaa !9
  %131 = sub nsw i32 %129, %130
  %132 = add nsw i32 %126, %131
  %133 = load ptr, ptr %4, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.decorr_pass, ptr %133, i32 0, i32 2
  store i32 %132, ptr %134, align 4, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #2
  br label %135

135:                                              ; preds = %117, %114, %107
  %136 = load ptr, ptr %4, align 8, !tbaa !5
  %137 = getelementptr inbounds %struct.decorr_pass, ptr %136, i32 0, i32 5
  %138 = getelementptr inbounds [8 x i32], ptr %137, i64 0, i64 0
  %139 = load i32, ptr %138, align 4, !tbaa !9
  %140 = mul nsw i32 2, %139
  %141 = load ptr, ptr %4, align 8, !tbaa !5
  %142 = getelementptr inbounds %struct.decorr_pass, ptr %141, i32 0, i32 5
  %143 = getelementptr inbounds [8 x i32], ptr %142, i64 0, i64 1
  %144 = load i32, ptr %143, align 4, !tbaa !9
  %145 = sub nsw i32 %140, %144
  store i32 %145, ptr %11, align 4, !tbaa !9
  %146 = load ptr, ptr %4, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.decorr_pass, ptr %146, i32 0, i32 5
  %148 = getelementptr inbounds [8 x i32], ptr %147, i64 0, i64 0
  %149 = load i32, ptr %148, align 4, !tbaa !9
  %150 = load ptr, ptr %4, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.decorr_pass, ptr %150, i32 0, i32 5
  %152 = getelementptr inbounds [8 x i32], ptr %151, i64 0, i64 1
  store i32 %149, ptr %152, align 4, !tbaa !9
  %153 = load ptr, ptr %7, align 8, !tbaa !5
  %154 = getelementptr inbounds i32, ptr %153, i64 1
  %155 = load i32, ptr %154, align 4, !tbaa !9
  %156 = load ptr, ptr %4, align 8, !tbaa !5
  %157 = getelementptr inbounds %struct.decorr_pass, ptr %156, i32 0, i32 5
  %158 = getelementptr inbounds [8 x i32], ptr %157, i64 0, i64 0
  store i32 %155, ptr %158, align 4, !tbaa !9
  %159 = load i32, ptr %11, align 4, !tbaa !9
  %160 = load i32, ptr %11, align 4, !tbaa !9
  %161 = trunc i32 %160 to i16
  %162 = sext i16 %161 to i32
  %163 = icmp ne i32 %159, %162
  br i1 %163, label %164, label %182

164:                                              ; preds = %135
  %165 = load i32, ptr %11, align 4, !tbaa !9
  %166 = and i32 %165, 65535
  %167 = load ptr, ptr %4, align 8, !tbaa !5
  %168 = getelementptr inbounds %struct.decorr_pass, ptr %167, i32 0, i32 3
  %169 = load i32, ptr %168, align 4, !tbaa !15
  %170 = mul nsw i32 %166, %169
  %171 = ashr i32 %170, 9
  %172 = load i32, ptr %11, align 4, !tbaa !9
  %173 = and i32 %172, -65536
  %174 = ashr i32 %173, 9
  %175 = load ptr, ptr %4, align 8, !tbaa !5
  %176 = getelementptr inbounds %struct.decorr_pass, ptr %175, i32 0, i32 3
  %177 = load i32, ptr %176, align 4, !tbaa !15
  %178 = mul nsw i32 %174, %177
  %179 = add nsw i32 %171, %178
  %180 = add nsw i32 %179, 1
  %181 = ashr i32 %180, 1
  br label %190

182:                                              ; preds = %135
  %183 = load ptr, ptr %4, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.decorr_pass, ptr %183, i32 0, i32 3
  %185 = load i32, ptr %184, align 4, !tbaa !15
  %186 = load i32, ptr %11, align 4, !tbaa !9
  %187 = mul nsw i32 %185, %186
  %188 = add nsw i32 %187, 512
  %189 = ashr i32 %188, 10
  br label %190

190:                                              ; preds = %182, %164
  %191 = phi i32 [ %181, %164 ], [ %189, %182 ]
  %192 = sub nsw i32 %155, %191
  store i32 %192, ptr %12, align 4, !tbaa !9
  %193 = load ptr, ptr %7, align 8, !tbaa !5
  %194 = getelementptr inbounds i32, ptr %193, i64 1
  store i32 %192, ptr %194, align 4, !tbaa !9
  %195 = load i32, ptr %11, align 4, !tbaa !9
  %196 = icmp ne i32 %195, 0
  br i1 %196, label %197, label %218

197:                                              ; preds = %190
  %198 = load i32, ptr %12, align 4, !tbaa !9
  %199 = icmp ne i32 %198, 0
  br i1 %199, label %200, label %218

200:                                              ; preds = %197
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #2
  %201 = load i32, ptr %11, align 4, !tbaa !9
  %202 = load i32, ptr %12, align 4, !tbaa !9
  %203 = xor i32 %201, %202
  %204 = ashr i32 %203, 31
  store i32 %204, ptr %14, align 4, !tbaa !9
  %205 = load ptr, ptr %4, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.decorr_pass, ptr %205, i32 0, i32 1
  %207 = load i32, ptr %206, align 4, !tbaa !14
  %208 = load i32, ptr %14, align 4, !tbaa !9
  %209 = xor i32 %207, %208
  %210 = load ptr, ptr %4, align 8, !tbaa !5
  %211 = getelementptr inbounds %struct.decorr_pass, ptr %210, i32 0, i32 3
  %212 = load i32, ptr %211, align 4, !tbaa !15
  %213 = load i32, ptr %14, align 4, !tbaa !9
  %214 = sub nsw i32 %212, %213
  %215 = add nsw i32 %209, %214
  %216 = load ptr, ptr %4, align 8, !tbaa !5
  %217 = getelementptr inbounds %struct.decorr_pass, ptr %216, i32 0, i32 3
  store i32 %215, ptr %217, align 4, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #2
  br label %218

218:                                              ; preds = %200, %197, %190
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #2
  br label %219

219:                                              ; preds = %218
  %220 = load ptr, ptr %7, align 8, !tbaa !5
  %221 = getelementptr inbounds i32, ptr %220, i64 2
  store ptr %221, ptr %7, align 8, !tbaa !5
  br label %48, !llvm.loop !16

222:                                              ; preds = %48
  br label %1104

223:                                              ; preds = %3
  %224 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %224, ptr %7, align 8, !tbaa !5
  br label %225

225:                                              ; preds = %406, %223
  %226 = load ptr, ptr %7, align 8, !tbaa !5
  %227 = load ptr, ptr %8, align 8, !tbaa !5
  %228 = icmp ult ptr %226, %227
  br i1 %228, label %229, label %409

229:                                              ; preds = %225
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #2
  %230 = load ptr, ptr %4, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.decorr_pass, ptr %230, i32 0, i32 4
  %232 = getelementptr inbounds [8 x i32], ptr %231, i64 0, i64 0
  %233 = load i32, ptr %232, align 4, !tbaa !9
  %234 = load ptr, ptr %4, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.decorr_pass, ptr %234, i32 0, i32 4
  %236 = getelementptr inbounds [8 x i32], ptr %235, i64 0, i64 0
  %237 = load i32, ptr %236, align 4, !tbaa !9
  %238 = load ptr, ptr %4, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.decorr_pass, ptr %238, i32 0, i32 4
  %240 = getelementptr inbounds [8 x i32], ptr %239, i64 0, i64 1
  %241 = load i32, ptr %240, align 4, !tbaa !9
  %242 = sub nsw i32 %237, %241
  %243 = ashr i32 %242, 1
  %244 = add nsw i32 %233, %243
  store i32 %244, ptr %15, align 4, !tbaa !9
  %245 = load ptr, ptr %4, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.decorr_pass, ptr %245, i32 0, i32 4
  %247 = getelementptr inbounds [8 x i32], ptr %246, i64 0, i64 0
  %248 = load i32, ptr %247, align 4, !tbaa !9
  %249 = load ptr, ptr %4, align 8, !tbaa !5
  %250 = getelementptr inbounds %struct.decorr_pass, ptr %249, i32 0, i32 4
  %251 = getelementptr inbounds [8 x i32], ptr %250, i64 0, i64 1
  store i32 %248, ptr %251, align 4, !tbaa !9
  %252 = load ptr, ptr %7, align 8, !tbaa !5
  %253 = getelementptr inbounds i32, ptr %252, i64 0
  %254 = load i32, ptr %253, align 4, !tbaa !9
  %255 = load ptr, ptr %4, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.decorr_pass, ptr %255, i32 0, i32 4
  %257 = getelementptr inbounds [8 x i32], ptr %256, i64 0, i64 0
  store i32 %254, ptr %257, align 4, !tbaa !9
  %258 = load i32, ptr %15, align 4, !tbaa !9
  %259 = load i32, ptr %15, align 4, !tbaa !9
  %260 = trunc i32 %259 to i16
  %261 = sext i16 %260 to i32
  %262 = icmp ne i32 %258, %261
  br i1 %262, label %263, label %281

263:                                              ; preds = %229
  %264 = load i32, ptr %15, align 4, !tbaa !9
  %265 = and i32 %264, 65535
  %266 = load ptr, ptr %4, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.decorr_pass, ptr %266, i32 0, i32 2
  %268 = load i32, ptr %267, align 4, !tbaa !13
  %269 = mul nsw i32 %265, %268
  %270 = ashr i32 %269, 9
  %271 = load i32, ptr %15, align 4, !tbaa !9
  %272 = and i32 %271, -65536
  %273 = ashr i32 %272, 9
  %274 = load ptr, ptr %4, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.decorr_pass, ptr %274, i32 0, i32 2
  %276 = load i32, ptr %275, align 4, !tbaa !13
  %277 = mul nsw i32 %273, %276
  %278 = add nsw i32 %270, %277
  %279 = add nsw i32 %278, 1
  %280 = ashr i32 %279, 1
  br label %289

281:                                              ; preds = %229
  %282 = load ptr, ptr %4, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.decorr_pass, ptr %282, i32 0, i32 2
  %284 = load i32, ptr %283, align 4, !tbaa !13
  %285 = load i32, ptr %15, align 4, !tbaa !9
  %286 = mul nsw i32 %284, %285
  %287 = add nsw i32 %286, 512
  %288 = ashr i32 %287, 10
  br label %289

289:                                              ; preds = %281, %263
  %290 = phi i32 [ %280, %263 ], [ %288, %281 ]
  %291 = sub nsw i32 %254, %290
  store i32 %291, ptr %16, align 4, !tbaa !9
  %292 = load ptr, ptr %7, align 8, !tbaa !5
  %293 = getelementptr inbounds i32, ptr %292, i64 0
  store i32 %291, ptr %293, align 4, !tbaa !9
  %294 = load i32, ptr %15, align 4, !tbaa !9
  %295 = icmp ne i32 %294, 0
  br i1 %295, label %296, label %317

296:                                              ; preds = %289
  %297 = load i32, ptr %16, align 4, !tbaa !9
  %298 = icmp ne i32 %297, 0
  br i1 %298, label %299, label %317

299:                                              ; preds = %296
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #2
  %300 = load i32, ptr %15, align 4, !tbaa !9
  %301 = load i32, ptr %16, align 4, !tbaa !9
  %302 = xor i32 %300, %301
  %303 = ashr i32 %302, 31
  store i32 %303, ptr %17, align 4, !tbaa !9
  %304 = load ptr, ptr %4, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.decorr_pass, ptr %304, i32 0, i32 1
  %306 = load i32, ptr %305, align 4, !tbaa !14
  %307 = load i32, ptr %17, align 4, !tbaa !9
  %308 = xor i32 %306, %307
  %309 = load ptr, ptr %4, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.decorr_pass, ptr %309, i32 0, i32 2
  %311 = load i32, ptr %310, align 4, !tbaa !13
  %312 = load i32, ptr %17, align 4, !tbaa !9
  %313 = sub nsw i32 %311, %312
  %314 = add nsw i32 %308, %313
  %315 = load ptr, ptr %4, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.decorr_pass, ptr %315, i32 0, i32 2
  store i32 %314, ptr %316, align 4, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #2
  br label %317

317:                                              ; preds = %299, %296, %289
  %318 = load ptr, ptr %4, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.decorr_pass, ptr %318, i32 0, i32 5
  %320 = getelementptr inbounds [8 x i32], ptr %319, i64 0, i64 0
  %321 = load i32, ptr %320, align 4, !tbaa !9
  %322 = load ptr, ptr %4, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.decorr_pass, ptr %322, i32 0, i32 5
  %324 = getelementptr inbounds [8 x i32], ptr %323, i64 0, i64 0
  %325 = load i32, ptr %324, align 4, !tbaa !9
  %326 = load ptr, ptr %4, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.decorr_pass, ptr %326, i32 0, i32 5
  %328 = getelementptr inbounds [8 x i32], ptr %327, i64 0, i64 1
  %329 = load i32, ptr %328, align 4, !tbaa !9
  %330 = sub nsw i32 %325, %329
  %331 = ashr i32 %330, 1
  %332 = add nsw i32 %321, %331
  store i32 %332, ptr %15, align 4, !tbaa !9
  %333 = load ptr, ptr %4, align 8, !tbaa !5
  %334 = getelementptr inbounds %struct.decorr_pass, ptr %333, i32 0, i32 5
  %335 = getelementptr inbounds [8 x i32], ptr %334, i64 0, i64 0
  %336 = load i32, ptr %335, align 4, !tbaa !9
  %337 = load ptr, ptr %4, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.decorr_pass, ptr %337, i32 0, i32 5
  %339 = getelementptr inbounds [8 x i32], ptr %338, i64 0, i64 1
  store i32 %336, ptr %339, align 4, !tbaa !9
  %340 = load ptr, ptr %7, align 8, !tbaa !5
  %341 = getelementptr inbounds i32, ptr %340, i64 1
  %342 = load i32, ptr %341, align 4, !tbaa !9
  %343 = load ptr, ptr %4, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct.decorr_pass, ptr %343, i32 0, i32 5
  %345 = getelementptr inbounds [8 x i32], ptr %344, i64 0, i64 0
  store i32 %342, ptr %345, align 4, !tbaa !9
  %346 = load i32, ptr %15, align 4, !tbaa !9
  %347 = load i32, ptr %15, align 4, !tbaa !9
  %348 = trunc i32 %347 to i16
  %349 = sext i16 %348 to i32
  %350 = icmp ne i32 %346, %349
  br i1 %350, label %351, label %369

351:                                              ; preds = %317
  %352 = load i32, ptr %15, align 4, !tbaa !9
  %353 = and i32 %352, 65535
  %354 = load ptr, ptr %4, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.decorr_pass, ptr %354, i32 0, i32 3
  %356 = load i32, ptr %355, align 4, !tbaa !15
  %357 = mul nsw i32 %353, %356
  %358 = ashr i32 %357, 9
  %359 = load i32, ptr %15, align 4, !tbaa !9
  %360 = and i32 %359, -65536
  %361 = ashr i32 %360, 9
  %362 = load ptr, ptr %4, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.decorr_pass, ptr %362, i32 0, i32 3
  %364 = load i32, ptr %363, align 4, !tbaa !15
  %365 = mul nsw i32 %361, %364
  %366 = add nsw i32 %358, %365
  %367 = add nsw i32 %366, 1
  %368 = ashr i32 %367, 1
  br label %377

369:                                              ; preds = %317
  %370 = load ptr, ptr %4, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.decorr_pass, ptr %370, i32 0, i32 3
  %372 = load i32, ptr %371, align 4, !tbaa !15
  %373 = load i32, ptr %15, align 4, !tbaa !9
  %374 = mul nsw i32 %372, %373
  %375 = add nsw i32 %374, 512
  %376 = ashr i32 %375, 10
  br label %377

377:                                              ; preds = %369, %351
  %378 = phi i32 [ %368, %351 ], [ %376, %369 ]
  %379 = sub nsw i32 %342, %378
  store i32 %379, ptr %16, align 4, !tbaa !9
  %380 = load ptr, ptr %7, align 8, !tbaa !5
  %381 = getelementptr inbounds i32, ptr %380, i64 1
  store i32 %379, ptr %381, align 4, !tbaa !9
  %382 = load i32, ptr %15, align 4, !tbaa !9
  %383 = icmp ne i32 %382, 0
  br i1 %383, label %384, label %405

384:                                              ; preds = %377
  %385 = load i32, ptr %16, align 4, !tbaa !9
  %386 = icmp ne i32 %385, 0
  br i1 %386, label %387, label %405

387:                                              ; preds = %384
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #2
  %388 = load i32, ptr %15, align 4, !tbaa !9
  %389 = load i32, ptr %16, align 4, !tbaa !9
  %390 = xor i32 %388, %389
  %391 = ashr i32 %390, 31
  store i32 %391, ptr %18, align 4, !tbaa !9
  %392 = load ptr, ptr %4, align 8, !tbaa !5
  %393 = getelementptr inbounds %struct.decorr_pass, ptr %392, i32 0, i32 1
  %394 = load i32, ptr %393, align 4, !tbaa !14
  %395 = load i32, ptr %18, align 4, !tbaa !9
  %396 = xor i32 %394, %395
  %397 = load ptr, ptr %4, align 8, !tbaa !5
  %398 = getelementptr inbounds %struct.decorr_pass, ptr %397, i32 0, i32 3
  %399 = load i32, ptr %398, align 4, !tbaa !15
  %400 = load i32, ptr %18, align 4, !tbaa !9
  %401 = sub nsw i32 %399, %400
  %402 = add nsw i32 %396, %401
  %403 = load ptr, ptr %4, align 8, !tbaa !5
  %404 = getelementptr inbounds %struct.decorr_pass, ptr %403, i32 0, i32 3
  store i32 %402, ptr %404, align 4, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #2
  br label %405

405:                                              ; preds = %387, %384, %377
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #2
  br label %406

406:                                              ; preds = %405
  %407 = load ptr, ptr %7, align 8, !tbaa !5
  %408 = getelementptr inbounds i32, ptr %407, i64 2
  store ptr %408, ptr %7, align 8, !tbaa !5
  br label %225, !llvm.loop !18

409:                                              ; preds = %225
  br label %1104

410:                                              ; preds = %3
  store i32 0, ptr %9, align 4, !tbaa !9
  %411 = load ptr, ptr %4, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.decorr_pass, ptr %411, i32 0, i32 0
  %413 = load i32, ptr %412, align 4, !tbaa !11
  %414 = and i32 %413, 7
  store i32 %414, ptr %10, align 4, !tbaa !9
  %415 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %415, ptr %7, align 8, !tbaa !5
  br label %416

416:                                              ; preds = %575, %410
  %417 = load ptr, ptr %7, align 8, !tbaa !5
  %418 = load ptr, ptr %8, align 8, !tbaa !5
  %419 = icmp ult ptr %417, %418
  br i1 %419, label %420, label %578

420:                                              ; preds = %416
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #2
  %421 = load ptr, ptr %4, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.decorr_pass, ptr %421, i32 0, i32 4
  %423 = load i32, ptr %9, align 4, !tbaa !9
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds [8 x i32], ptr %422, i64 0, i64 %424
  %426 = load i32, ptr %425, align 4, !tbaa !9
  store i32 %426, ptr %19, align 4, !tbaa !9
  %427 = load ptr, ptr %7, align 8, !tbaa !5
  %428 = getelementptr inbounds i32, ptr %427, i64 0
  %429 = load i32, ptr %428, align 4, !tbaa !9
  %430 = load ptr, ptr %4, align 8, !tbaa !5
  %431 = getelementptr inbounds %struct.decorr_pass, ptr %430, i32 0, i32 4
  %432 = load i32, ptr %10, align 4, !tbaa !9
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds [8 x i32], ptr %431, i64 0, i64 %433
  store i32 %429, ptr %434, align 4, !tbaa !9
  %435 = load i32, ptr %19, align 4, !tbaa !9
  %436 = load i32, ptr %19, align 4, !tbaa !9
  %437 = trunc i32 %436 to i16
  %438 = sext i16 %437 to i32
  %439 = icmp ne i32 %435, %438
  br i1 %439, label %440, label %458

440:                                              ; preds = %420
  %441 = load i32, ptr %19, align 4, !tbaa !9
  %442 = and i32 %441, 65535
  %443 = load ptr, ptr %4, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct.decorr_pass, ptr %443, i32 0, i32 2
  %445 = load i32, ptr %444, align 4, !tbaa !13
  %446 = mul nsw i32 %442, %445
  %447 = ashr i32 %446, 9
  %448 = load i32, ptr %19, align 4, !tbaa !9
  %449 = and i32 %448, -65536
  %450 = ashr i32 %449, 9
  %451 = load ptr, ptr %4, align 8, !tbaa !5
  %452 = getelementptr inbounds %struct.decorr_pass, ptr %451, i32 0, i32 2
  %453 = load i32, ptr %452, align 4, !tbaa !13
  %454 = mul nsw i32 %450, %453
  %455 = add nsw i32 %447, %454
  %456 = add nsw i32 %455, 1
  %457 = ashr i32 %456, 1
  br label %466

458:                                              ; preds = %420
  %459 = load ptr, ptr %4, align 8, !tbaa !5
  %460 = getelementptr inbounds %struct.decorr_pass, ptr %459, i32 0, i32 2
  %461 = load i32, ptr %460, align 4, !tbaa !13
  %462 = load i32, ptr %19, align 4, !tbaa !9
  %463 = mul nsw i32 %461, %462
  %464 = add nsw i32 %463, 512
  %465 = ashr i32 %464, 10
  br label %466

466:                                              ; preds = %458, %440
  %467 = phi i32 [ %457, %440 ], [ %465, %458 ]
  %468 = sub nsw i32 %429, %467
  store i32 %468, ptr %20, align 4, !tbaa !9
  %469 = load ptr, ptr %7, align 8, !tbaa !5
  %470 = getelementptr inbounds i32, ptr %469, i64 0
  store i32 %468, ptr %470, align 4, !tbaa !9
  %471 = load i32, ptr %19, align 4, !tbaa !9
  %472 = icmp ne i32 %471, 0
  br i1 %472, label %473, label %494

473:                                              ; preds = %466
  %474 = load i32, ptr %20, align 4, !tbaa !9
  %475 = icmp ne i32 %474, 0
  br i1 %475, label %476, label %494

476:                                              ; preds = %473
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #2
  %477 = load i32, ptr %19, align 4, !tbaa !9
  %478 = load i32, ptr %20, align 4, !tbaa !9
  %479 = xor i32 %477, %478
  %480 = ashr i32 %479, 31
  store i32 %480, ptr %21, align 4, !tbaa !9
  %481 = load ptr, ptr %4, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.decorr_pass, ptr %481, i32 0, i32 1
  %483 = load i32, ptr %482, align 4, !tbaa !14
  %484 = load i32, ptr %21, align 4, !tbaa !9
  %485 = xor i32 %483, %484
  %486 = load ptr, ptr %4, align 8, !tbaa !5
  %487 = getelementptr inbounds %struct.decorr_pass, ptr %486, i32 0, i32 2
  %488 = load i32, ptr %487, align 4, !tbaa !13
  %489 = load i32, ptr %21, align 4, !tbaa !9
  %490 = sub nsw i32 %488, %489
  %491 = add nsw i32 %485, %490
  %492 = load ptr, ptr %4, align 8, !tbaa !5
  %493 = getelementptr inbounds %struct.decorr_pass, ptr %492, i32 0, i32 2
  store i32 %491, ptr %493, align 4, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #2
  br label %494

494:                                              ; preds = %476, %473, %466
  %495 = load ptr, ptr %4, align 8, !tbaa !5
  %496 = getelementptr inbounds %struct.decorr_pass, ptr %495, i32 0, i32 5
  %497 = load i32, ptr %9, align 4, !tbaa !9
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds [8 x i32], ptr %496, i64 0, i64 %498
  %500 = load i32, ptr %499, align 4, !tbaa !9
  store i32 %500, ptr %19, align 4, !tbaa !9
  %501 = load ptr, ptr %7, align 8, !tbaa !5
  %502 = getelementptr inbounds i32, ptr %501, i64 1
  %503 = load i32, ptr %502, align 4, !tbaa !9
  %504 = load ptr, ptr %4, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.decorr_pass, ptr %504, i32 0, i32 5
  %506 = load i32, ptr %10, align 4, !tbaa !9
  %507 = sext i32 %506 to i64
  %508 = getelementptr inbounds [8 x i32], ptr %505, i64 0, i64 %507
  store i32 %503, ptr %508, align 4, !tbaa !9
  %509 = load i32, ptr %19, align 4, !tbaa !9
  %510 = load i32, ptr %19, align 4, !tbaa !9
  %511 = trunc i32 %510 to i16
  %512 = sext i16 %511 to i32
  %513 = icmp ne i32 %509, %512
  br i1 %513, label %514, label %532

514:                                              ; preds = %494
  %515 = load i32, ptr %19, align 4, !tbaa !9
  %516 = and i32 %515, 65535
  %517 = load ptr, ptr %4, align 8, !tbaa !5
  %518 = getelementptr inbounds %struct.decorr_pass, ptr %517, i32 0, i32 3
  %519 = load i32, ptr %518, align 4, !tbaa !15
  %520 = mul nsw i32 %516, %519
  %521 = ashr i32 %520, 9
  %522 = load i32, ptr %19, align 4, !tbaa !9
  %523 = and i32 %522, -65536
  %524 = ashr i32 %523, 9
  %525 = load ptr, ptr %4, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.decorr_pass, ptr %525, i32 0, i32 3
  %527 = load i32, ptr %526, align 4, !tbaa !15
  %528 = mul nsw i32 %524, %527
  %529 = add nsw i32 %521, %528
  %530 = add nsw i32 %529, 1
  %531 = ashr i32 %530, 1
  br label %540

532:                                              ; preds = %494
  %533 = load ptr, ptr %4, align 8, !tbaa !5
  %534 = getelementptr inbounds %struct.decorr_pass, ptr %533, i32 0, i32 3
  %535 = load i32, ptr %534, align 4, !tbaa !15
  %536 = load i32, ptr %19, align 4, !tbaa !9
  %537 = mul nsw i32 %535, %536
  %538 = add nsw i32 %537, 512
  %539 = ashr i32 %538, 10
  br label %540

540:                                              ; preds = %532, %514
  %541 = phi i32 [ %531, %514 ], [ %539, %532 ]
  %542 = sub nsw i32 %503, %541
  store i32 %542, ptr %20, align 4, !tbaa !9
  %543 = load ptr, ptr %7, align 8, !tbaa !5
  %544 = getelementptr inbounds i32, ptr %543, i64 1
  store i32 %542, ptr %544, align 4, !tbaa !9
  %545 = load i32, ptr %19, align 4, !tbaa !9
  %546 = icmp ne i32 %545, 0
  br i1 %546, label %547, label %568

547:                                              ; preds = %540
  %548 = load i32, ptr %20, align 4, !tbaa !9
  %549 = icmp ne i32 %548, 0
  br i1 %549, label %550, label %568

550:                                              ; preds = %547
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #2
  %551 = load i32, ptr %19, align 4, !tbaa !9
  %552 = load i32, ptr %20, align 4, !tbaa !9
  %553 = xor i32 %551, %552
  %554 = ashr i32 %553, 31
  store i32 %554, ptr %22, align 4, !tbaa !9
  %555 = load ptr, ptr %4, align 8, !tbaa !5
  %556 = getelementptr inbounds %struct.decorr_pass, ptr %555, i32 0, i32 1
  %557 = load i32, ptr %556, align 4, !tbaa !14
  %558 = load i32, ptr %22, align 4, !tbaa !9
  %559 = xor i32 %557, %558
  %560 = load ptr, ptr %4, align 8, !tbaa !5
  %561 = getelementptr inbounds %struct.decorr_pass, ptr %560, i32 0, i32 3
  %562 = load i32, ptr %561, align 4, !tbaa !15
  %563 = load i32, ptr %22, align 4, !tbaa !9
  %564 = sub nsw i32 %562, %563
  %565 = add nsw i32 %559, %564
  %566 = load ptr, ptr %4, align 8, !tbaa !5
  %567 = getelementptr inbounds %struct.decorr_pass, ptr %566, i32 0, i32 3
  store i32 %565, ptr %567, align 4, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #2
  br label %568

568:                                              ; preds = %550, %547, %540
  %569 = load i32, ptr %9, align 4, !tbaa !9
  %570 = add nsw i32 %569, 1
  %571 = and i32 %570, 7
  store i32 %571, ptr %9, align 4, !tbaa !9
  %572 = load i32, ptr %10, align 4, !tbaa !9
  %573 = add nsw i32 %572, 1
  %574 = and i32 %573, 7
  store i32 %574, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #2
  br label %575

575:                                              ; preds = %568
  %576 = load ptr, ptr %7, align 8, !tbaa !5
  %577 = getelementptr inbounds i32, ptr %576, i64 2
  store ptr %577, ptr %7, align 8, !tbaa !5
  br label %416, !llvm.loop !19

578:                                              ; preds = %416
  br label %1104

579:                                              ; preds = %3
  %580 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %580, ptr %7, align 8, !tbaa !5
  br label %581

581:                                              ; preds = %747, %579
  %582 = load ptr, ptr %7, align 8, !tbaa !5
  %583 = load ptr, ptr %8, align 8, !tbaa !5
  %584 = icmp ult ptr %582, %583
  br i1 %584, label %585, label %750

585:                                              ; preds = %581
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #2
  %586 = load ptr, ptr %4, align 8, !tbaa !5
  %587 = getelementptr inbounds %struct.decorr_pass, ptr %586, i32 0, i32 4
  %588 = getelementptr inbounds [8 x i32], ptr %587, i64 0, i64 0
  %589 = load i32, ptr %588, align 4, !tbaa !9
  store i32 %589, ptr %23, align 4, !tbaa !9
  %590 = load ptr, ptr %7, align 8, !tbaa !5
  %591 = getelementptr inbounds i32, ptr %590, i64 0
  %592 = load i32, ptr %591, align 4, !tbaa !9
  store i32 %592, ptr %24, align 4, !tbaa !9
  %593 = load i32, ptr %23, align 4, !tbaa !9
  %594 = load i32, ptr %23, align 4, !tbaa !9
  %595 = trunc i32 %594 to i16
  %596 = sext i16 %595 to i32
  %597 = icmp ne i32 %593, %596
  br i1 %597, label %598, label %616

598:                                              ; preds = %585
  %599 = load i32, ptr %23, align 4, !tbaa !9
  %600 = and i32 %599, 65535
  %601 = load ptr, ptr %4, align 8, !tbaa !5
  %602 = getelementptr inbounds %struct.decorr_pass, ptr %601, i32 0, i32 2
  %603 = load i32, ptr %602, align 4, !tbaa !13
  %604 = mul nsw i32 %600, %603
  %605 = ashr i32 %604, 9
  %606 = load i32, ptr %23, align 4, !tbaa !9
  %607 = and i32 %606, -65536
  %608 = ashr i32 %607, 9
  %609 = load ptr, ptr %4, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct.decorr_pass, ptr %609, i32 0, i32 2
  %611 = load i32, ptr %610, align 4, !tbaa !13
  %612 = mul nsw i32 %608, %611
  %613 = add nsw i32 %605, %612
  %614 = add nsw i32 %613, 1
  %615 = ashr i32 %614, 1
  br label %624

616:                                              ; preds = %585
  %617 = load ptr, ptr %4, align 8, !tbaa !5
  %618 = getelementptr inbounds %struct.decorr_pass, ptr %617, i32 0, i32 2
  %619 = load i32, ptr %618, align 4, !tbaa !13
  %620 = load i32, ptr %23, align 4, !tbaa !9
  %621 = mul nsw i32 %619, %620
  %622 = add nsw i32 %621, 512
  %623 = ashr i32 %622, 10
  br label %624

624:                                              ; preds = %616, %598
  %625 = phi i32 [ %615, %598 ], [ %623, %616 ]
  %626 = sub nsw i32 %592, %625
  store i32 %626, ptr %25, align 4, !tbaa !9
  %627 = load ptr, ptr %7, align 8, !tbaa !5
  %628 = getelementptr inbounds i32, ptr %627, i64 0
  store i32 %626, ptr %628, align 4, !tbaa !9
  %629 = load i32, ptr %23, align 4, !tbaa !9
  %630 = icmp ne i32 %629, 0
  br i1 %630, label %631, label %666

631:                                              ; preds = %624
  %632 = load i32, ptr %25, align 4, !tbaa !9
  %633 = icmp ne i32 %632, 0
  br i1 %633, label %634, label %666

634:                                              ; preds = %631
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #2
  %635 = load i32, ptr %23, align 4, !tbaa !9
  %636 = load i32, ptr %25, align 4, !tbaa !9
  %637 = xor i32 %635, %636
  %638 = ashr i32 %637, 31
  store i32 %638, ptr %26, align 4, !tbaa !9
  %639 = load ptr, ptr %4, align 8, !tbaa !5
  %640 = getelementptr inbounds %struct.decorr_pass, ptr %639, i32 0, i32 2
  %641 = load i32, ptr %640, align 4, !tbaa !13
  %642 = load i32, ptr %26, align 4, !tbaa !9
  %643 = xor i32 %641, %642
  %644 = load ptr, ptr %4, align 8, !tbaa !5
  %645 = getelementptr inbounds %struct.decorr_pass, ptr %644, i32 0, i32 1
  %646 = load i32, ptr %645, align 4, !tbaa !14
  %647 = load i32, ptr %26, align 4, !tbaa !9
  %648 = sub nsw i32 %646, %647
  %649 = add nsw i32 %643, %648
  %650 = load ptr, ptr %4, align 8, !tbaa !5
  %651 = getelementptr inbounds %struct.decorr_pass, ptr %650, i32 0, i32 2
  store i32 %649, ptr %651, align 4, !tbaa !13
  %652 = icmp sgt i32 %649, 1024
  br i1 %652, label %653, label %656

653:                                              ; preds = %634
  %654 = load ptr, ptr %4, align 8, !tbaa !5
  %655 = getelementptr inbounds %struct.decorr_pass, ptr %654, i32 0, i32 2
  store i32 1024, ptr %655, align 4, !tbaa !13
  br label %656

656:                                              ; preds = %653, %634
  %657 = load ptr, ptr %4, align 8, !tbaa !5
  %658 = getelementptr inbounds %struct.decorr_pass, ptr %657, i32 0, i32 2
  %659 = load i32, ptr %658, align 4, !tbaa !13
  %660 = load i32, ptr %26, align 4, !tbaa !9
  %661 = xor i32 %659, %660
  %662 = load i32, ptr %26, align 4, !tbaa !9
  %663 = sub nsw i32 %661, %662
  %664 = load ptr, ptr %4, align 8, !tbaa !5
  %665 = getelementptr inbounds %struct.decorr_pass, ptr %664, i32 0, i32 2
  store i32 %663, ptr %665, align 4, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #2
  br label %666

666:                                              ; preds = %656, %631, %624
  %667 = load ptr, ptr %7, align 8, !tbaa !5
  %668 = getelementptr inbounds i32, ptr %667, i64 1
  %669 = load i32, ptr %668, align 4, !tbaa !9
  %670 = load ptr, ptr %4, align 8, !tbaa !5
  %671 = getelementptr inbounds %struct.decorr_pass, ptr %670, i32 0, i32 4
  %672 = getelementptr inbounds [8 x i32], ptr %671, i64 0, i64 0
  store i32 %669, ptr %672, align 4, !tbaa !9
  %673 = load i32, ptr %24, align 4, !tbaa !9
  %674 = load i32, ptr %24, align 4, !tbaa !9
  %675 = trunc i32 %674 to i16
  %676 = sext i16 %675 to i32
  %677 = icmp ne i32 %673, %676
  br i1 %677, label %678, label %696

678:                                              ; preds = %666
  %679 = load i32, ptr %24, align 4, !tbaa !9
  %680 = and i32 %679, 65535
  %681 = load ptr, ptr %4, align 8, !tbaa !5
  %682 = getelementptr inbounds %struct.decorr_pass, ptr %681, i32 0, i32 3
  %683 = load i32, ptr %682, align 4, !tbaa !15
  %684 = mul nsw i32 %680, %683
  %685 = ashr i32 %684, 9
  %686 = load i32, ptr %24, align 4, !tbaa !9
  %687 = and i32 %686, -65536
  %688 = ashr i32 %687, 9
  %689 = load ptr, ptr %4, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.decorr_pass, ptr %689, i32 0, i32 3
  %691 = load i32, ptr %690, align 4, !tbaa !15
  %692 = mul nsw i32 %688, %691
  %693 = add nsw i32 %685, %692
  %694 = add nsw i32 %693, 1
  %695 = ashr i32 %694, 1
  br label %704

696:                                              ; preds = %666
  %697 = load ptr, ptr %4, align 8, !tbaa !5
  %698 = getelementptr inbounds %struct.decorr_pass, ptr %697, i32 0, i32 3
  %699 = load i32, ptr %698, align 4, !tbaa !15
  %700 = load i32, ptr %24, align 4, !tbaa !9
  %701 = mul nsw i32 %699, %700
  %702 = add nsw i32 %701, 512
  %703 = ashr i32 %702, 10
  br label %704

704:                                              ; preds = %696, %678
  %705 = phi i32 [ %695, %678 ], [ %703, %696 ]
  %706 = sub nsw i32 %669, %705
  store i32 %706, ptr %25, align 4, !tbaa !9
  %707 = load ptr, ptr %7, align 8, !tbaa !5
  %708 = getelementptr inbounds i32, ptr %707, i64 1
  store i32 %706, ptr %708, align 4, !tbaa !9
  %709 = load i32, ptr %24, align 4, !tbaa !9
  %710 = icmp ne i32 %709, 0
  br i1 %710, label %711, label %746

711:                                              ; preds = %704
  %712 = load i32, ptr %25, align 4, !tbaa !9
  %713 = icmp ne i32 %712, 0
  br i1 %713, label %714, label %746

714:                                              ; preds = %711
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #2
  %715 = load i32, ptr %24, align 4, !tbaa !9
  %716 = load i32, ptr %25, align 4, !tbaa !9
  %717 = xor i32 %715, %716
  %718 = ashr i32 %717, 31
  store i32 %718, ptr %27, align 4, !tbaa !9
  %719 = load ptr, ptr %4, align 8, !tbaa !5
  %720 = getelementptr inbounds %struct.decorr_pass, ptr %719, i32 0, i32 3
  %721 = load i32, ptr %720, align 4, !tbaa !15
  %722 = load i32, ptr %27, align 4, !tbaa !9
  %723 = xor i32 %721, %722
  %724 = load ptr, ptr %4, align 8, !tbaa !5
  %725 = getelementptr inbounds %struct.decorr_pass, ptr %724, i32 0, i32 1
  %726 = load i32, ptr %725, align 4, !tbaa !14
  %727 = load i32, ptr %27, align 4, !tbaa !9
  %728 = sub nsw i32 %726, %727
  %729 = add nsw i32 %723, %728
  %730 = load ptr, ptr %4, align 8, !tbaa !5
  %731 = getelementptr inbounds %struct.decorr_pass, ptr %730, i32 0, i32 3
  store i32 %729, ptr %731, align 4, !tbaa !15
  %732 = icmp sgt i32 %729, 1024
  br i1 %732, label %733, label %736

733:                                              ; preds = %714
  %734 = load ptr, ptr %4, align 8, !tbaa !5
  %735 = getelementptr inbounds %struct.decorr_pass, ptr %734, i32 0, i32 3
  store i32 1024, ptr %735, align 4, !tbaa !15
  br label %736

736:                                              ; preds = %733, %714
  %737 = load ptr, ptr %4, align 8, !tbaa !5
  %738 = getelementptr inbounds %struct.decorr_pass, ptr %737, i32 0, i32 3
  %739 = load i32, ptr %738, align 4, !tbaa !15
  %740 = load i32, ptr %27, align 4, !tbaa !9
  %741 = xor i32 %739, %740
  %742 = load i32, ptr %27, align 4, !tbaa !9
  %743 = sub nsw i32 %741, %742
  %744 = load ptr, ptr %4, align 8, !tbaa !5
  %745 = getelementptr inbounds %struct.decorr_pass, ptr %744, i32 0, i32 3
  store i32 %743, ptr %745, align 4, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #2
  br label %746

746:                                              ; preds = %736, %711, %704
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #2
  br label %747

747:                                              ; preds = %746
  %748 = load ptr, ptr %7, align 8, !tbaa !5
  %749 = getelementptr inbounds i32, ptr %748, i64 2
  store ptr %749, ptr %7, align 8, !tbaa !5
  br label %581, !llvm.loop !20

750:                                              ; preds = %581
  br label %1104

751:                                              ; preds = %3
  %752 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %752, ptr %7, align 8, !tbaa !5
  br label %753

753:                                              ; preds = %919, %751
  %754 = load ptr, ptr %7, align 8, !tbaa !5
  %755 = load ptr, ptr %8, align 8, !tbaa !5
  %756 = icmp ult ptr %754, %755
  br i1 %756, label %757, label %922

757:                                              ; preds = %753
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #2
  %758 = load ptr, ptr %4, align 8, !tbaa !5
  %759 = getelementptr inbounds %struct.decorr_pass, ptr %758, i32 0, i32 5
  %760 = getelementptr inbounds [8 x i32], ptr %759, i64 0, i64 0
  %761 = load i32, ptr %760, align 4, !tbaa !9
  store i32 %761, ptr %29, align 4, !tbaa !9
  %762 = load ptr, ptr %7, align 8, !tbaa !5
  %763 = getelementptr inbounds i32, ptr %762, i64 1
  %764 = load i32, ptr %763, align 4, !tbaa !9
  store i32 %764, ptr %28, align 4, !tbaa !9
  %765 = load i32, ptr %29, align 4, !tbaa !9
  %766 = load i32, ptr %29, align 4, !tbaa !9
  %767 = trunc i32 %766 to i16
  %768 = sext i16 %767 to i32
  %769 = icmp ne i32 %765, %768
  br i1 %769, label %770, label %788

770:                                              ; preds = %757
  %771 = load i32, ptr %29, align 4, !tbaa !9
  %772 = and i32 %771, 65535
  %773 = load ptr, ptr %4, align 8, !tbaa !5
  %774 = getelementptr inbounds %struct.decorr_pass, ptr %773, i32 0, i32 3
  %775 = load i32, ptr %774, align 4, !tbaa !15
  %776 = mul nsw i32 %772, %775
  %777 = ashr i32 %776, 9
  %778 = load i32, ptr %29, align 4, !tbaa !9
  %779 = and i32 %778, -65536
  %780 = ashr i32 %779, 9
  %781 = load ptr, ptr %4, align 8, !tbaa !5
  %782 = getelementptr inbounds %struct.decorr_pass, ptr %781, i32 0, i32 3
  %783 = load i32, ptr %782, align 4, !tbaa !15
  %784 = mul nsw i32 %780, %783
  %785 = add nsw i32 %777, %784
  %786 = add nsw i32 %785, 1
  %787 = ashr i32 %786, 1
  br label %796

788:                                              ; preds = %757
  %789 = load ptr, ptr %4, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.decorr_pass, ptr %789, i32 0, i32 3
  %791 = load i32, ptr %790, align 4, !tbaa !15
  %792 = load i32, ptr %29, align 4, !tbaa !9
  %793 = mul nsw i32 %791, %792
  %794 = add nsw i32 %793, 512
  %795 = ashr i32 %794, 10
  br label %796

796:                                              ; preds = %788, %770
  %797 = phi i32 [ %787, %770 ], [ %795, %788 ]
  %798 = sub nsw i32 %764, %797
  store i32 %798, ptr %30, align 4, !tbaa !9
  %799 = load ptr, ptr %7, align 8, !tbaa !5
  %800 = getelementptr inbounds i32, ptr %799, i64 1
  store i32 %798, ptr %800, align 4, !tbaa !9
  %801 = load i32, ptr %29, align 4, !tbaa !9
  %802 = icmp ne i32 %801, 0
  br i1 %802, label %803, label %838

803:                                              ; preds = %796
  %804 = load i32, ptr %30, align 4, !tbaa !9
  %805 = icmp ne i32 %804, 0
  br i1 %805, label %806, label %838

806:                                              ; preds = %803
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #2
  %807 = load i32, ptr %29, align 4, !tbaa !9
  %808 = load i32, ptr %30, align 4, !tbaa !9
  %809 = xor i32 %807, %808
  %810 = ashr i32 %809, 31
  store i32 %810, ptr %31, align 4, !tbaa !9
  %811 = load ptr, ptr %4, align 8, !tbaa !5
  %812 = getelementptr inbounds %struct.decorr_pass, ptr %811, i32 0, i32 3
  %813 = load i32, ptr %812, align 4, !tbaa !15
  %814 = load i32, ptr %31, align 4, !tbaa !9
  %815 = xor i32 %813, %814
  %816 = load ptr, ptr %4, align 8, !tbaa !5
  %817 = getelementptr inbounds %struct.decorr_pass, ptr %816, i32 0, i32 1
  %818 = load i32, ptr %817, align 4, !tbaa !14
  %819 = load i32, ptr %31, align 4, !tbaa !9
  %820 = sub nsw i32 %818, %819
  %821 = add nsw i32 %815, %820
  %822 = load ptr, ptr %4, align 8, !tbaa !5
  %823 = getelementptr inbounds %struct.decorr_pass, ptr %822, i32 0, i32 3
  store i32 %821, ptr %823, align 4, !tbaa !15
  %824 = icmp sgt i32 %821, 1024
  br i1 %824, label %825, label %828

825:                                              ; preds = %806
  %826 = load ptr, ptr %4, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.decorr_pass, ptr %826, i32 0, i32 3
  store i32 1024, ptr %827, align 4, !tbaa !15
  br label %828

828:                                              ; preds = %825, %806
  %829 = load ptr, ptr %4, align 8, !tbaa !5
  %830 = getelementptr inbounds %struct.decorr_pass, ptr %829, i32 0, i32 3
  %831 = load i32, ptr %830, align 4, !tbaa !15
  %832 = load i32, ptr %31, align 4, !tbaa !9
  %833 = xor i32 %831, %832
  %834 = load i32, ptr %31, align 4, !tbaa !9
  %835 = sub nsw i32 %833, %834
  %836 = load ptr, ptr %4, align 8, !tbaa !5
  %837 = getelementptr inbounds %struct.decorr_pass, ptr %836, i32 0, i32 3
  store i32 %835, ptr %837, align 4, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #2
  br label %838

838:                                              ; preds = %828, %803, %796
  %839 = load ptr, ptr %7, align 8, !tbaa !5
  %840 = getelementptr inbounds i32, ptr %839, i64 0
  %841 = load i32, ptr %840, align 4, !tbaa !9
  %842 = load ptr, ptr %4, align 8, !tbaa !5
  %843 = getelementptr inbounds %struct.decorr_pass, ptr %842, i32 0, i32 5
  %844 = getelementptr inbounds [8 x i32], ptr %843, i64 0, i64 0
  store i32 %841, ptr %844, align 4, !tbaa !9
  %845 = load i32, ptr %28, align 4, !tbaa !9
  %846 = load i32, ptr %28, align 4, !tbaa !9
  %847 = trunc i32 %846 to i16
  %848 = sext i16 %847 to i32
  %849 = icmp ne i32 %845, %848
  br i1 %849, label %850, label %868

850:                                              ; preds = %838
  %851 = load i32, ptr %28, align 4, !tbaa !9
  %852 = and i32 %851, 65535
  %853 = load ptr, ptr %4, align 8, !tbaa !5
  %854 = getelementptr inbounds %struct.decorr_pass, ptr %853, i32 0, i32 2
  %855 = load i32, ptr %854, align 4, !tbaa !13
  %856 = mul nsw i32 %852, %855
  %857 = ashr i32 %856, 9
  %858 = load i32, ptr %28, align 4, !tbaa !9
  %859 = and i32 %858, -65536
  %860 = ashr i32 %859, 9
  %861 = load ptr, ptr %4, align 8, !tbaa !5
  %862 = getelementptr inbounds %struct.decorr_pass, ptr %861, i32 0, i32 2
  %863 = load i32, ptr %862, align 4, !tbaa !13
  %864 = mul nsw i32 %860, %863
  %865 = add nsw i32 %857, %864
  %866 = add nsw i32 %865, 1
  %867 = ashr i32 %866, 1
  br label %876

868:                                              ; preds = %838
  %869 = load ptr, ptr %4, align 8, !tbaa !5
  %870 = getelementptr inbounds %struct.decorr_pass, ptr %869, i32 0, i32 2
  %871 = load i32, ptr %870, align 4, !tbaa !13
  %872 = load i32, ptr %28, align 4, !tbaa !9
  %873 = mul nsw i32 %871, %872
  %874 = add nsw i32 %873, 512
  %875 = ashr i32 %874, 10
  br label %876

876:                                              ; preds = %868, %850
  %877 = phi i32 [ %867, %850 ], [ %875, %868 ]
  %878 = sub nsw i32 %841, %877
  store i32 %878, ptr %30, align 4, !tbaa !9
  %879 = load ptr, ptr %7, align 8, !tbaa !5
  %880 = getelementptr inbounds i32, ptr %879, i64 0
  store i32 %878, ptr %880, align 4, !tbaa !9
  %881 = load i32, ptr %28, align 4, !tbaa !9
  %882 = icmp ne i32 %881, 0
  br i1 %882, label %883, label %918

883:                                              ; preds = %876
  %884 = load i32, ptr %30, align 4, !tbaa !9
  %885 = icmp ne i32 %884, 0
  br i1 %885, label %886, label %918

886:                                              ; preds = %883
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #2
  %887 = load i32, ptr %28, align 4, !tbaa !9
  %888 = load i32, ptr %30, align 4, !tbaa !9
  %889 = xor i32 %887, %888
  %890 = ashr i32 %889, 31
  store i32 %890, ptr %32, align 4, !tbaa !9
  %891 = load ptr, ptr %4, align 8, !tbaa !5
  %892 = getelementptr inbounds %struct.decorr_pass, ptr %891, i32 0, i32 2
  %893 = load i32, ptr %892, align 4, !tbaa !13
  %894 = load i32, ptr %32, align 4, !tbaa !9
  %895 = xor i32 %893, %894
  %896 = load ptr, ptr %4, align 8, !tbaa !5
  %897 = getelementptr inbounds %struct.decorr_pass, ptr %896, i32 0, i32 1
  %898 = load i32, ptr %897, align 4, !tbaa !14
  %899 = load i32, ptr %32, align 4, !tbaa !9
  %900 = sub nsw i32 %898, %899
  %901 = add nsw i32 %895, %900
  %902 = load ptr, ptr %4, align 8, !tbaa !5
  %903 = getelementptr inbounds %struct.decorr_pass, ptr %902, i32 0, i32 2
  store i32 %901, ptr %903, align 4, !tbaa !13
  %904 = icmp sgt i32 %901, 1024
  br i1 %904, label %905, label %908

905:                                              ; preds = %886
  %906 = load ptr, ptr %4, align 8, !tbaa !5
  %907 = getelementptr inbounds %struct.decorr_pass, ptr %906, i32 0, i32 2
  store i32 1024, ptr %907, align 4, !tbaa !13
  br label %908

908:                                              ; preds = %905, %886
  %909 = load ptr, ptr %4, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct.decorr_pass, ptr %909, i32 0, i32 2
  %911 = load i32, ptr %910, align 4, !tbaa !13
  %912 = load i32, ptr %32, align 4, !tbaa !9
  %913 = xor i32 %911, %912
  %914 = load i32, ptr %32, align 4, !tbaa !9
  %915 = sub nsw i32 %913, %914
  %916 = load ptr, ptr %4, align 8, !tbaa !5
  %917 = getelementptr inbounds %struct.decorr_pass, ptr %916, i32 0, i32 2
  store i32 %915, ptr %917, align 4, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #2
  br label %918

918:                                              ; preds = %908, %883, %876
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #2
  br label %919

919:                                              ; preds = %918
  %920 = load ptr, ptr %7, align 8, !tbaa !5
  %921 = getelementptr inbounds i32, ptr %920, i64 2
  store ptr %921, ptr %7, align 8, !tbaa !5
  br label %753, !llvm.loop !21

922:                                              ; preds = %753
  br label %1104

923:                                              ; preds = %3
  %924 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %924, ptr %7, align 8, !tbaa !5
  br label %925

925:                                              ; preds = %1100, %923
  %926 = load ptr, ptr %7, align 8, !tbaa !5
  %927 = load ptr, ptr %8, align 8, !tbaa !5
  %928 = icmp ult ptr %926, %927
  br i1 %928, label %929, label %1103

929:                                              ; preds = %925
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #2
  %930 = load ptr, ptr %4, align 8, !tbaa !5
  %931 = getelementptr inbounds %struct.decorr_pass, ptr %930, i32 0, i32 4
  %932 = getelementptr inbounds [8 x i32], ptr %931, i64 0, i64 0
  %933 = load i32, ptr %932, align 4, !tbaa !9
  store i32 %933, ptr %33, align 4, !tbaa !9
  %934 = load ptr, ptr %4, align 8, !tbaa !5
  %935 = getelementptr inbounds %struct.decorr_pass, ptr %934, i32 0, i32 5
  %936 = getelementptr inbounds [8 x i32], ptr %935, i64 0, i64 0
  %937 = load i32, ptr %936, align 4, !tbaa !9
  store i32 %937, ptr %34, align 4, !tbaa !9
  %938 = load ptr, ptr %7, align 8, !tbaa !5
  %939 = getelementptr inbounds i32, ptr %938, i64 1
  %940 = load i32, ptr %939, align 4, !tbaa !9
  store i32 %940, ptr %35, align 4, !tbaa !9
  %941 = load ptr, ptr %4, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.decorr_pass, ptr %941, i32 0, i32 4
  %943 = getelementptr inbounds [8 x i32], ptr %942, i64 0, i64 0
  store i32 %940, ptr %943, align 4, !tbaa !9
  %944 = load i32, ptr %34, align 4, !tbaa !9
  %945 = load i32, ptr %34, align 4, !tbaa !9
  %946 = trunc i32 %945 to i16
  %947 = sext i16 %946 to i32
  %948 = icmp ne i32 %944, %947
  br i1 %948, label %949, label %967

949:                                              ; preds = %929
  %950 = load i32, ptr %34, align 4, !tbaa !9
  %951 = and i32 %950, 65535
  %952 = load ptr, ptr %4, align 8, !tbaa !5
  %953 = getelementptr inbounds %struct.decorr_pass, ptr %952, i32 0, i32 3
  %954 = load i32, ptr %953, align 4, !tbaa !15
  %955 = mul nsw i32 %951, %954
  %956 = ashr i32 %955, 9
  %957 = load i32, ptr %34, align 4, !tbaa !9
  %958 = and i32 %957, -65536
  %959 = ashr i32 %958, 9
  %960 = load ptr, ptr %4, align 8, !tbaa !5
  %961 = getelementptr inbounds %struct.decorr_pass, ptr %960, i32 0, i32 3
  %962 = load i32, ptr %961, align 4, !tbaa !15
  %963 = mul nsw i32 %959, %962
  %964 = add nsw i32 %956, %963
  %965 = add nsw i32 %964, 1
  %966 = ashr i32 %965, 1
  br label %975

967:                                              ; preds = %929
  %968 = load ptr, ptr %4, align 8, !tbaa !5
  %969 = getelementptr inbounds %struct.decorr_pass, ptr %968, i32 0, i32 3
  %970 = load i32, ptr %969, align 4, !tbaa !15
  %971 = load i32, ptr %34, align 4, !tbaa !9
  %972 = mul nsw i32 %970, %971
  %973 = add nsw i32 %972, 512
  %974 = ashr i32 %973, 10
  br label %975

975:                                              ; preds = %967, %949
  %976 = phi i32 [ %966, %949 ], [ %974, %967 ]
  %977 = load i32, ptr %35, align 4, !tbaa !9
  %978 = sub nsw i32 %977, %976
  store i32 %978, ptr %35, align 4, !tbaa !9
  %979 = load ptr, ptr %7, align 8, !tbaa !5
  %980 = getelementptr inbounds i32, ptr %979, i64 1
  store i32 %978, ptr %980, align 4, !tbaa !9
  %981 = load i32, ptr %34, align 4, !tbaa !9
  %982 = icmp ne i32 %981, 0
  br i1 %982, label %983, label %1018

983:                                              ; preds = %975
  %984 = load i32, ptr %35, align 4, !tbaa !9
  %985 = icmp ne i32 %984, 0
  br i1 %985, label %986, label %1018

986:                                              ; preds = %983
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #2
  %987 = load i32, ptr %34, align 4, !tbaa !9
  %988 = load i32, ptr %35, align 4, !tbaa !9
  %989 = xor i32 %987, %988
  %990 = ashr i32 %989, 31
  store i32 %990, ptr %36, align 4, !tbaa !9
  %991 = load ptr, ptr %4, align 8, !tbaa !5
  %992 = getelementptr inbounds %struct.decorr_pass, ptr %991, i32 0, i32 3
  %993 = load i32, ptr %992, align 4, !tbaa !15
  %994 = load i32, ptr %36, align 4, !tbaa !9
  %995 = xor i32 %993, %994
  %996 = load ptr, ptr %4, align 8, !tbaa !5
  %997 = getelementptr inbounds %struct.decorr_pass, ptr %996, i32 0, i32 1
  %998 = load i32, ptr %997, align 4, !tbaa !14
  %999 = load i32, ptr %36, align 4, !tbaa !9
  %1000 = sub nsw i32 %998, %999
  %1001 = add nsw i32 %995, %1000
  %1002 = load ptr, ptr %4, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.decorr_pass, ptr %1002, i32 0, i32 3
  store i32 %1001, ptr %1003, align 4, !tbaa !15
  %1004 = icmp sgt i32 %1001, 1024
  br i1 %1004, label %1005, label %1008

1005:                                             ; preds = %986
  %1006 = load ptr, ptr %4, align 8, !tbaa !5
  %1007 = getelementptr inbounds %struct.decorr_pass, ptr %1006, i32 0, i32 3
  store i32 1024, ptr %1007, align 4, !tbaa !15
  br label %1008

1008:                                             ; preds = %1005, %986
  %1009 = load ptr, ptr %4, align 8, !tbaa !5
  %1010 = getelementptr inbounds %struct.decorr_pass, ptr %1009, i32 0, i32 3
  %1011 = load i32, ptr %1010, align 4, !tbaa !15
  %1012 = load i32, ptr %36, align 4, !tbaa !9
  %1013 = xor i32 %1011, %1012
  %1014 = load i32, ptr %36, align 4, !tbaa !9
  %1015 = sub nsw i32 %1013, %1014
  %1016 = load ptr, ptr %4, align 8, !tbaa !5
  %1017 = getelementptr inbounds %struct.decorr_pass, ptr %1016, i32 0, i32 3
  store i32 %1015, ptr %1017, align 4, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #2
  br label %1018

1018:                                             ; preds = %1008, %983, %975
  %1019 = load ptr, ptr %7, align 8, !tbaa !5
  %1020 = getelementptr inbounds i32, ptr %1019, i64 0
  %1021 = load i32, ptr %1020, align 4, !tbaa !9
  store i32 %1021, ptr %35, align 4, !tbaa !9
  %1022 = load ptr, ptr %4, align 8, !tbaa !5
  %1023 = getelementptr inbounds %struct.decorr_pass, ptr %1022, i32 0, i32 5
  %1024 = getelementptr inbounds [8 x i32], ptr %1023, i64 0, i64 0
  store i32 %1021, ptr %1024, align 4, !tbaa !9
  %1025 = load i32, ptr %33, align 4, !tbaa !9
  %1026 = load i32, ptr %33, align 4, !tbaa !9
  %1027 = trunc i32 %1026 to i16
  %1028 = sext i16 %1027 to i32
  %1029 = icmp ne i32 %1025, %1028
  br i1 %1029, label %1030, label %1048

1030:                                             ; preds = %1018
  %1031 = load i32, ptr %33, align 4, !tbaa !9
  %1032 = and i32 %1031, 65535
  %1033 = load ptr, ptr %4, align 8, !tbaa !5
  %1034 = getelementptr inbounds %struct.decorr_pass, ptr %1033, i32 0, i32 2
  %1035 = load i32, ptr %1034, align 4, !tbaa !13
  %1036 = mul nsw i32 %1032, %1035
  %1037 = ashr i32 %1036, 9
  %1038 = load i32, ptr %33, align 4, !tbaa !9
  %1039 = and i32 %1038, -65536
  %1040 = ashr i32 %1039, 9
  %1041 = load ptr, ptr %4, align 8, !tbaa !5
  %1042 = getelementptr inbounds %struct.decorr_pass, ptr %1041, i32 0, i32 2
  %1043 = load i32, ptr %1042, align 4, !tbaa !13
  %1044 = mul nsw i32 %1040, %1043
  %1045 = add nsw i32 %1037, %1044
  %1046 = add nsw i32 %1045, 1
  %1047 = ashr i32 %1046, 1
  br label %1056

1048:                                             ; preds = %1018
  %1049 = load ptr, ptr %4, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.decorr_pass, ptr %1049, i32 0, i32 2
  %1051 = load i32, ptr %1050, align 4, !tbaa !13
  %1052 = load i32, ptr %33, align 4, !tbaa !9
  %1053 = mul nsw i32 %1051, %1052
  %1054 = add nsw i32 %1053, 512
  %1055 = ashr i32 %1054, 10
  br label %1056

1056:                                             ; preds = %1048, %1030
  %1057 = phi i32 [ %1047, %1030 ], [ %1055, %1048 ]
  %1058 = load i32, ptr %35, align 4, !tbaa !9
  %1059 = sub nsw i32 %1058, %1057
  store i32 %1059, ptr %35, align 4, !tbaa !9
  %1060 = load ptr, ptr %7, align 8, !tbaa !5
  %1061 = getelementptr inbounds i32, ptr %1060, i64 0
  store i32 %1059, ptr %1061, align 4, !tbaa !9
  %1062 = load i32, ptr %33, align 4, !tbaa !9
  %1063 = icmp ne i32 %1062, 0
  br i1 %1063, label %1064, label %1099

1064:                                             ; preds = %1056
  %1065 = load i32, ptr %35, align 4, !tbaa !9
  %1066 = icmp ne i32 %1065, 0
  br i1 %1066, label %1067, label %1099

1067:                                             ; preds = %1064
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #2
  %1068 = load i32, ptr %33, align 4, !tbaa !9
  %1069 = load i32, ptr %35, align 4, !tbaa !9
  %1070 = xor i32 %1068, %1069
  %1071 = ashr i32 %1070, 31
  store i32 %1071, ptr %37, align 4, !tbaa !9
  %1072 = load ptr, ptr %4, align 8, !tbaa !5
  %1073 = getelementptr inbounds %struct.decorr_pass, ptr %1072, i32 0, i32 2
  %1074 = load i32, ptr %1073, align 4, !tbaa !13
  %1075 = load i32, ptr %37, align 4, !tbaa !9
  %1076 = xor i32 %1074, %1075
  %1077 = load ptr, ptr %4, align 8, !tbaa !5
  %1078 = getelementptr inbounds %struct.decorr_pass, ptr %1077, i32 0, i32 1
  %1079 = load i32, ptr %1078, align 4, !tbaa !14
  %1080 = load i32, ptr %37, align 4, !tbaa !9
  %1081 = sub nsw i32 %1079, %1080
  %1082 = add nsw i32 %1076, %1081
  %1083 = load ptr, ptr %4, align 8, !tbaa !5
  %1084 = getelementptr inbounds %struct.decorr_pass, ptr %1083, i32 0, i32 2
  store i32 %1082, ptr %1084, align 4, !tbaa !13
  %1085 = icmp sgt i32 %1082, 1024
  br i1 %1085, label %1086, label %1089

1086:                                             ; preds = %1067
  %1087 = load ptr, ptr %4, align 8, !tbaa !5
  %1088 = getelementptr inbounds %struct.decorr_pass, ptr %1087, i32 0, i32 2
  store i32 1024, ptr %1088, align 4, !tbaa !13
  br label %1089

1089:                                             ; preds = %1086, %1067
  %1090 = load ptr, ptr %4, align 8, !tbaa !5
  %1091 = getelementptr inbounds %struct.decorr_pass, ptr %1090, i32 0, i32 2
  %1092 = load i32, ptr %1091, align 4, !tbaa !13
  %1093 = load i32, ptr %37, align 4, !tbaa !9
  %1094 = xor i32 %1092, %1093
  %1095 = load i32, ptr %37, align 4, !tbaa !9
  %1096 = sub nsw i32 %1094, %1095
  %1097 = load ptr, ptr %4, align 8, !tbaa !5
  %1098 = getelementptr inbounds %struct.decorr_pass, ptr %1097, i32 0, i32 2
  store i32 %1096, ptr %1098, align 4, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #2
  br label %1099

1099:                                             ; preds = %1089, %1064, %1056
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #2
  br label %1100

1100:                                             ; preds = %1099
  %1101 = load ptr, ptr %7, align 8, !tbaa !5
  %1102 = getelementptr inbounds i32, ptr %1101, i64 2
  store ptr %1102, ptr %7, align 8, !tbaa !5
  br label %925, !llvm.loop !22

1103:                                             ; preds = %925
  br label %1104

1104:                                             ; preds = %1103, %922, %750, %578, %409, %222
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #2
  ret void
}

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"decorr_pass", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !7, i64 16, !7, i64 48, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92}
!13 = !{!12, !10, i64 8}
!14 = !{!12, !10, i64 4}
!15 = !{!12, !10, i64 12}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}
!19 = distinct !{!19, !17}
!20 = distinct !{!20, !17}
!21 = distinct !{!21, !17}
!22 = distinct !{!22, !17}


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

; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable
define dso_local void @decorr_stereo_pass(ptr noundef %0, ptr noundef %1, i32 noundef %2) local_unnamed_addr #0 {
  %4 = shl nsw i32 %2, 1
  %5 = sext i32 %4 to i64
  %6 = getelementptr inbounds i32, ptr %1, i64 %5
  %7 = load i32, ptr %0, align 4, !tbaa !5
  %8 = icmp sgt i32 %2, 0
  switch i32 %7, label %.preheader [
    i32 17, label %.preheader432
    i32 18, label %.preheader434
    i32 -1, label %.preheader436
    i32 -2, label %.preheader438
    i32 -3, label %.preheader440
  ]

.preheader440:                                    ; preds = %3
  br i1 %8, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %.preheader440
  %9 = getelementptr inbounds i8, ptr %0, i64 16
  %10 = getelementptr inbounds i8, ptr %0, i64 48
  %11 = getelementptr inbounds i8, ptr %0, i64 12
  %12 = getelementptr inbounds i8, ptr %0, i64 4
  %13 = getelementptr inbounds i8, ptr %0, i64 8
  br label %420

.preheader438:                                    ; preds = %3
  br i1 %8, label %.lr.ph444, label %.loopexit

.lr.ph444:                                        ; preds = %.preheader438
  %14 = getelementptr inbounds i8, ptr %0, i64 48
  %15 = getelementptr inbounds i8, ptr %0, i64 12
  %16 = getelementptr inbounds i8, ptr %0, i64 4
  %17 = getelementptr inbounds i8, ptr %0, i64 8
  br label %347

.preheader436:                                    ; preds = %3
  br i1 %8, label %.lr.ph446, label %.loopexit

.lr.ph446:                                        ; preds = %.preheader436
  %18 = getelementptr inbounds i8, ptr %0, i64 16
  %19 = getelementptr inbounds i8, ptr %0, i64 8
  %20 = getelementptr inbounds i8, ptr %0, i64 4
  %21 = getelementptr inbounds i8, ptr %0, i64 12
  br label %274

.preheader434:                                    ; preds = %3
  br i1 %8, label %.lr.ph448, label %.loopexit

.lr.ph448:                                        ; preds = %.preheader434
  %22 = getelementptr inbounds i8, ptr %0, i64 16
  %23 = getelementptr inbounds i8, ptr %0, i64 20
  %24 = getelementptr inbounds i8, ptr %0, i64 8
  %25 = getelementptr inbounds i8, ptr %0, i64 4
  %26 = getelementptr inbounds i8, ptr %0, i64 48
  %27 = getelementptr inbounds i8, ptr %0, i64 52
  %28 = getelementptr inbounds i8, ptr %0, i64 12
  br label %117

.preheader432:                                    ; preds = %3
  br i1 %8, label %.lr.ph450, label %.loopexit

.lr.ph450:                                        ; preds = %.preheader432
  %29 = getelementptr inbounds i8, ptr %0, i64 16
  %30 = getelementptr inbounds i8, ptr %0, i64 20
  %31 = getelementptr inbounds i8, ptr %0, i64 8
  %32 = getelementptr inbounds i8, ptr %0, i64 4
  %33 = getelementptr inbounds i8, ptr %0, i64 48
  %34 = getelementptr inbounds i8, ptr %0, i64 52
  %35 = getelementptr inbounds i8, ptr %0, i64 12
  br label %41

.preheader:                                       ; preds = %3
  br i1 %8, label %.lr.ph455, label %.loopexit

.lr.ph455:                                        ; preds = %.preheader
  %36 = getelementptr inbounds i8, ptr %0, i64 16
  %37 = getelementptr inbounds i8, ptr %0, i64 8
  %38 = getelementptr inbounds i8, ptr %0, i64 4
  %39 = getelementptr inbounds i8, ptr %0, i64 48
  %40 = getelementptr inbounds i8, ptr %0, i64 12
  br label %195

41:                                               ; preds = %.lr.ph450, %114
  %.0449 = phi ptr [ %1, %.lr.ph450 ], [ %115, %114 ]
  %42 = load i32, ptr %29, align 4, !tbaa !10
  %43 = shl nsw i32 %42, 1
  %44 = load i32, ptr %30, align 4, !tbaa !10
  %45 = sub nsw i32 %43, %44
  store i32 %42, ptr %30, align 4, !tbaa !10
  %46 = load i32, ptr %.0449, align 4, !tbaa !10
  store i32 %46, ptr %29, align 4, !tbaa !10
  %47 = add i32 %45, 32768
  %.not412 = icmp ult i32 %47, 65536
  br i1 %.not412, label %59, label %48

48:                                               ; preds = %41
  %49 = and i32 %45, 65535
  %50 = load i32, ptr %31, align 4, !tbaa !11
  %51 = mul nsw i32 %50, %49
  %52 = ashr i32 %51, 9
  %53 = ashr i32 %45, 9
  %54 = and i32 %53, -128
  %55 = mul nsw i32 %50, %54
  %56 = or disjoint i32 %55, 1
  %57 = add i32 %56, %52
  %58 = ashr i32 %57, 1
  br label %64

59:                                               ; preds = %41
  %60 = load i32, ptr %31, align 4, !tbaa !11
  %61 = mul nsw i32 %60, %45
  %62 = add nsw i32 %61, 512
  %63 = ashr i32 %62, 10
  br label %64

64:                                               ; preds = %59, %48
  %65 = phi i32 [ %58, %48 ], [ %63, %59 ]
  %66 = sub nsw i32 %46, %65
  store i32 %66, ptr %.0449, align 4, !tbaa !10
  %67 = icmp ne i32 %43, %44
  %68 = icmp ne i32 %46, %65
  %or.cond = select i1 %67, i1 %68, i1 false
  br i1 %or.cond, label %69, label %77

69:                                               ; preds = %64
  %70 = xor i32 %66, %45
  %.neg463 = lshr i32 %70, 31
  %71 = ashr i32 %70, 31
  %72 = load i32, ptr %32, align 4, !tbaa !12
  %73 = xor i32 %72, %71
  %74 = load i32, ptr %31, align 4, !tbaa !11
  %75 = add i32 %74, %.neg463
  %76 = add nsw i32 %75, %73
  store i32 %76, ptr %31, align 4, !tbaa !11
  br label %77

77:                                               ; preds = %69, %64
  %78 = load i32, ptr %33, align 4, !tbaa !10
  %79 = shl nsw i32 %78, 1
  %80 = load i32, ptr %34, align 4, !tbaa !10
  %81 = sub nsw i32 %79, %80
  store i32 %78, ptr %34, align 4, !tbaa !10
  %82 = getelementptr inbounds i8, ptr %.0449, i64 4
  %83 = load i32, ptr %82, align 4, !tbaa !10
  store i32 %83, ptr %33, align 4, !tbaa !10
  %84 = add i32 %81, 32768
  %.not413 = icmp ult i32 %84, 65536
  br i1 %.not413, label %96, label %85

85:                                               ; preds = %77
  %86 = and i32 %81, 65535
  %87 = load i32, ptr %35, align 4, !tbaa !13
  %88 = mul nsw i32 %87, %86
  %89 = ashr i32 %88, 9
  %90 = ashr i32 %81, 9
  %91 = and i32 %90, -128
  %92 = mul nsw i32 %87, %91
  %93 = or disjoint i32 %92, 1
  %94 = add i32 %93, %89
  %95 = ashr i32 %94, 1
  br label %101

96:                                               ; preds = %77
  %97 = load i32, ptr %35, align 4, !tbaa !13
  %98 = mul nsw i32 %97, %81
  %99 = add nsw i32 %98, 512
  %100 = ashr i32 %99, 10
  br label %101

101:                                              ; preds = %96, %85
  %102 = phi i32 [ %95, %85 ], [ %100, %96 ]
  %103 = sub nsw i32 %83, %102
  store i32 %103, ptr %82, align 4, !tbaa !10
  %104 = icmp ne i32 %79, %80
  %105 = icmp ne i32 %83, %102
  %or.cond3 = select i1 %104, i1 %105, i1 false
  br i1 %or.cond3, label %106, label %114

106:                                              ; preds = %101
  %107 = xor i32 %103, %81
  %.neg464 = lshr i32 %107, 31
  %108 = ashr i32 %107, 31
  %109 = load i32, ptr %32, align 4, !tbaa !12
  %110 = xor i32 %109, %108
  %111 = load i32, ptr %35, align 4, !tbaa !13
  %112 = add i32 %111, %.neg464
  %113 = add nsw i32 %112, %110
  store i32 %113, ptr %35, align 4, !tbaa !13
  br label %114

114:                                              ; preds = %106, %101
  %115 = getelementptr inbounds i8, ptr %.0449, i64 8
  %116 = icmp ult ptr %115, %6
  br i1 %116, label %41, label %.loopexit, !llvm.loop !14

117:                                              ; preds = %.lr.ph448, %192
  %.1447 = phi ptr [ %1, %.lr.ph448 ], [ %193, %192 ]
  %118 = load i32, ptr %22, align 4, !tbaa !10
  %119 = load i32, ptr %23, align 4, !tbaa !10
  %120 = sub nsw i32 %118, %119
  %121 = ashr i32 %120, 1
  %122 = add nsw i32 %121, %118
  store i32 %118, ptr %23, align 4, !tbaa !10
  %123 = load i32, ptr %.1447, align 4, !tbaa !10
  store i32 %123, ptr %22, align 4, !tbaa !10
  %124 = add i32 %122, 32768
  %.not410 = icmp ult i32 %124, 65536
  br i1 %.not410, label %136, label %125

125:                                              ; preds = %117
  %126 = and i32 %122, 65535
  %127 = load i32, ptr %24, align 4, !tbaa !11
  %128 = mul nsw i32 %127, %126
  %129 = ashr i32 %128, 9
  %130 = ashr i32 %122, 9
  %131 = and i32 %130, -128
  %132 = mul nsw i32 %127, %131
  %133 = or disjoint i32 %132, 1
  %134 = add i32 %133, %129
  %135 = ashr i32 %134, 1
  br label %141

136:                                              ; preds = %117
  %137 = load i32, ptr %24, align 4, !tbaa !11
  %138 = mul nsw i32 %137, %122
  %139 = add nsw i32 %138, 512
  %140 = ashr i32 %139, 10
  br label %141

141:                                              ; preds = %136, %125
  %142 = phi i32 [ %135, %125 ], [ %140, %136 ]
  %143 = sub nsw i32 %123, %142
  store i32 %143, ptr %.1447, align 4, !tbaa !10
  %144 = icmp ne i32 %122, 0
  %145 = icmp ne i32 %123, %142
  %or.cond5 = select i1 %144, i1 %145, i1 false
  br i1 %or.cond5, label %146, label %154

146:                                              ; preds = %141
  %147 = xor i32 %143, %122
  %.neg461 = lshr i32 %147, 31
  %148 = ashr i32 %147, 31
  %149 = load i32, ptr %25, align 4, !tbaa !12
  %150 = xor i32 %149, %148
  %151 = load i32, ptr %24, align 4, !tbaa !11
  %152 = add i32 %151, %.neg461
  %153 = add nsw i32 %152, %150
  store i32 %153, ptr %24, align 4, !tbaa !11
  br label %154

154:                                              ; preds = %146, %141
  %155 = load i32, ptr %26, align 4, !tbaa !10
  %156 = load i32, ptr %27, align 4, !tbaa !10
  %157 = sub nsw i32 %155, %156
  %158 = ashr i32 %157, 1
  %159 = add nsw i32 %158, %155
  store i32 %155, ptr %27, align 4, !tbaa !10
  %160 = getelementptr inbounds i8, ptr %.1447, i64 4
  %161 = load i32, ptr %160, align 4, !tbaa !10
  store i32 %161, ptr %26, align 4, !tbaa !10
  %162 = add i32 %159, 32768
  %.not411 = icmp ult i32 %162, 65536
  br i1 %.not411, label %174, label %163

163:                                              ; preds = %154
  %164 = and i32 %159, 65535
  %165 = load i32, ptr %28, align 4, !tbaa !13
  %166 = mul nsw i32 %165, %164
  %167 = ashr i32 %166, 9
  %168 = ashr i32 %159, 9
  %169 = and i32 %168, -128
  %170 = mul nsw i32 %165, %169
  %171 = or disjoint i32 %170, 1
  %172 = add i32 %171, %167
  %173 = ashr i32 %172, 1
  br label %179

174:                                              ; preds = %154
  %175 = load i32, ptr %28, align 4, !tbaa !13
  %176 = mul nsw i32 %175, %159
  %177 = add nsw i32 %176, 512
  %178 = ashr i32 %177, 10
  br label %179

179:                                              ; preds = %174, %163
  %180 = phi i32 [ %173, %163 ], [ %178, %174 ]
  %181 = sub nsw i32 %161, %180
  store i32 %181, ptr %160, align 4, !tbaa !10
  %182 = icmp ne i32 %159, 0
  %183 = icmp ne i32 %161, %180
  %or.cond7 = select i1 %182, i1 %183, i1 false
  br i1 %or.cond7, label %184, label %192

184:                                              ; preds = %179
  %185 = xor i32 %181, %159
  %.neg462 = lshr i32 %185, 31
  %186 = ashr i32 %185, 31
  %187 = load i32, ptr %25, align 4, !tbaa !12
  %188 = xor i32 %187, %186
  %189 = load i32, ptr %28, align 4, !tbaa !13
  %190 = add i32 %189, %.neg462
  %191 = add nsw i32 %190, %188
  store i32 %191, ptr %28, align 4, !tbaa !13
  br label %192

192:                                              ; preds = %184, %179
  %193 = getelementptr inbounds i8, ptr %.1447, i64 8
  %194 = icmp ult ptr %193, %6
  br i1 %194, label %117, label %.loopexit, !llvm.loop !16

195:                                              ; preds = %.lr.ph455, %268
  %.0351454.in = phi i32 [ %7, %.lr.ph455 ], [ %271, %268 ]
  %.2453 = phi ptr [ %1, %.lr.ph455 ], [ %272, %268 ]
  %.0350452 = phi i32 [ 0, %.lr.ph455 ], [ %270, %268 ]
  %.0351454 = and i32 %.0351454.in, 7
  %196 = zext nneg i32 %.0350452 to i64
  %197 = getelementptr inbounds [8 x i32], ptr %36, i64 0, i64 %196
  %198 = load i32, ptr %197, align 4, !tbaa !10
  %199 = load i32, ptr %.2453, align 4, !tbaa !10
  %200 = zext nneg i32 %.0351454 to i64
  %201 = getelementptr inbounds [8 x i32], ptr %36, i64 0, i64 %200
  store i32 %199, ptr %201, align 4, !tbaa !10
  %202 = add i32 %198, 32768
  %.not414 = icmp ult i32 %202, 65536
  br i1 %.not414, label %214, label %203

203:                                              ; preds = %195
  %204 = and i32 %198, 65535
  %205 = load i32, ptr %37, align 4, !tbaa !11
  %206 = mul nsw i32 %205, %204
  %207 = ashr i32 %206, 9
  %208 = ashr i32 %198, 9
  %209 = and i32 %208, -128
  %210 = mul nsw i32 %205, %209
  %211 = or disjoint i32 %210, 1
  %212 = add i32 %211, %207
  %213 = ashr i32 %212, 1
  br label %219

214:                                              ; preds = %195
  %215 = load i32, ptr %37, align 4, !tbaa !11
  %216 = mul nsw i32 %215, %198
  %217 = add nsw i32 %216, 512
  %218 = ashr i32 %217, 10
  br label %219

219:                                              ; preds = %214, %203
  %220 = phi i32 [ %213, %203 ], [ %218, %214 ]
  %221 = sub nsw i32 %199, %220
  store i32 %221, ptr %.2453, align 4, !tbaa !10
  %222 = icmp ne i32 %198, 0
  %223 = icmp ne i32 %199, %220
  %or.cond9 = select i1 %222, i1 %223, i1 false
  br i1 %or.cond9, label %224, label %232

224:                                              ; preds = %219
  %225 = xor i32 %221, %198
  %.neg465 = lshr i32 %225, 31
  %226 = ashr i32 %225, 31
  %227 = load i32, ptr %38, align 4, !tbaa !12
  %228 = xor i32 %227, %226
  %229 = load i32, ptr %37, align 4, !tbaa !11
  %230 = add i32 %229, %.neg465
  %231 = add nsw i32 %230, %228
  store i32 %231, ptr %37, align 4, !tbaa !11
  br label %232

232:                                              ; preds = %224, %219
  %233 = getelementptr inbounds [8 x i32], ptr %39, i64 0, i64 %196
  %234 = load i32, ptr %233, align 4, !tbaa !10
  %235 = getelementptr inbounds i8, ptr %.2453, i64 4
  %236 = load i32, ptr %235, align 4, !tbaa !10
  %237 = getelementptr inbounds [8 x i32], ptr %39, i64 0, i64 %200
  store i32 %236, ptr %237, align 4, !tbaa !10
  %238 = add i32 %234, 32768
  %.not415 = icmp ult i32 %238, 65536
  br i1 %.not415, label %250, label %239

239:                                              ; preds = %232
  %240 = and i32 %234, 65535
  %241 = load i32, ptr %40, align 4, !tbaa !13
  %242 = mul nsw i32 %241, %240
  %243 = ashr i32 %242, 9
  %244 = ashr i32 %234, 9
  %245 = and i32 %244, -128
  %246 = mul nsw i32 %241, %245
  %247 = or disjoint i32 %246, 1
  %248 = add i32 %247, %243
  %249 = ashr i32 %248, 1
  br label %255

250:                                              ; preds = %232
  %251 = load i32, ptr %40, align 4, !tbaa !13
  %252 = mul nsw i32 %251, %234
  %253 = add nsw i32 %252, 512
  %254 = ashr i32 %253, 10
  br label %255

255:                                              ; preds = %250, %239
  %256 = phi i32 [ %249, %239 ], [ %254, %250 ]
  %257 = sub nsw i32 %236, %256
  store i32 %257, ptr %235, align 4, !tbaa !10
  %258 = icmp ne i32 %234, 0
  %259 = icmp ne i32 %236, %256
  %or.cond11 = select i1 %258, i1 %259, i1 false
  br i1 %or.cond11, label %260, label %268

260:                                              ; preds = %255
  %261 = xor i32 %257, %234
  %.neg466 = lshr i32 %261, 31
  %262 = ashr i32 %261, 31
  %263 = load i32, ptr %38, align 4, !tbaa !12
  %264 = xor i32 %263, %262
  %265 = load i32, ptr %40, align 4, !tbaa !13
  %266 = add i32 %265, %.neg466
  %267 = add nsw i32 %266, %264
  store i32 %267, ptr %40, align 4, !tbaa !13
  br label %268

268:                                              ; preds = %260, %255
  %269 = add nuw nsw i32 %.0350452, 1
  %270 = and i32 %269, 7
  %271 = add nuw nsw i32 %.0351454, 1
  %272 = getelementptr inbounds i8, ptr %.2453, i64 8
  %273 = icmp ult ptr %272, %6
  br i1 %273, label %195, label %.loopexit, !llvm.loop !17

274:                                              ; preds = %.lr.ph446, %344
  %.3445 = phi ptr [ %1, %.lr.ph446 ], [ %345, %344 ]
  %275 = load i32, ptr %18, align 4, !tbaa !10
  %276 = load i32, ptr %.3445, align 4, !tbaa !10
  %277 = add i32 %275, 32768
  %.not406 = icmp ult i32 %277, 65536
  br i1 %.not406, label %289, label %278

278:                                              ; preds = %274
  %279 = and i32 %275, 65535
  %280 = load i32, ptr %19, align 4, !tbaa !11
  %281 = mul nsw i32 %280, %279
  %282 = ashr i32 %281, 9
  %283 = ashr i32 %275, 9
  %284 = and i32 %283, -128
  %285 = mul nsw i32 %280, %284
  %286 = or disjoint i32 %285, 1
  %287 = add i32 %286, %282
  %288 = ashr i32 %287, 1
  br label %294

289:                                              ; preds = %274
  %290 = load i32, ptr %19, align 4, !tbaa !11
  %291 = mul nsw i32 %290, %275
  %292 = add nsw i32 %291, 512
  %293 = ashr i32 %292, 10
  br label %294

294:                                              ; preds = %289, %278
  %295 = phi i32 [ %288, %278 ], [ %293, %289 ]
  %296 = sub nsw i32 %276, %295
  store i32 %296, ptr %.3445, align 4, !tbaa !10
  %297 = icmp ne i32 %275, 0
  %298 = icmp ne i32 %276, %295
  %or.cond13 = select i1 %297, i1 %298, i1 false
  br i1 %or.cond13, label %299, label %309

299:                                              ; preds = %294
  %300 = xor i32 %296, %275
  %.neg459 = lshr i32 %300, 31
  %301 = ashr i32 %300, 31
  %302 = load i32, ptr %19, align 4, !tbaa !11
  %303 = xor i32 %302, %301
  %304 = load i32, ptr %20, align 4, !tbaa !12
  %305 = add i32 %304, %.neg459
  %306 = add nsw i32 %305, %303
  %spec.select = tail call i32 @llvm.smin.i32(i32 %306, i32 1024)
  %307 = xor i32 %spec.select, %301
  %308 = sub nsw i32 %307, %301
  store i32 %308, ptr %19, align 4, !tbaa !11
  br label %309

309:                                              ; preds = %299, %294
  %310 = getelementptr inbounds i8, ptr %.3445, i64 4
  %311 = load i32, ptr %310, align 4, !tbaa !10
  store i32 %311, ptr %18, align 4, !tbaa !10
  %312 = add i32 %276, 32768
  %.not408 = icmp ult i32 %312, 65536
  br i1 %.not408, label %324, label %313

313:                                              ; preds = %309
  %314 = and i32 %276, 65535
  %315 = load i32, ptr %21, align 4, !tbaa !13
  %316 = mul nsw i32 %315, %314
  %317 = ashr i32 %316, 9
  %318 = ashr i32 %276, 9
  %319 = and i32 %318, -128
  %320 = mul nsw i32 %315, %319
  %321 = or disjoint i32 %320, 1
  %322 = add i32 %321, %317
  %323 = ashr i32 %322, 1
  br label %329

324:                                              ; preds = %309
  %325 = load i32, ptr %21, align 4, !tbaa !13
  %326 = mul nsw i32 %325, %276
  %327 = add nsw i32 %326, 512
  %328 = ashr i32 %327, 10
  br label %329

329:                                              ; preds = %324, %313
  %330 = phi i32 [ %323, %313 ], [ %328, %324 ]
  %331 = sub nsw i32 %311, %330
  store i32 %331, ptr %310, align 4, !tbaa !10
  %332 = icmp ne i32 %276, 0
  %333 = icmp ne i32 %311, %330
  %or.cond15 = select i1 %332, i1 %333, i1 false
  br i1 %or.cond15, label %334, label %344

334:                                              ; preds = %329
  %335 = xor i32 %331, %276
  %.neg460 = lshr i32 %335, 31
  %336 = ashr i32 %335, 31
  %337 = load i32, ptr %21, align 4, !tbaa !13
  %338 = xor i32 %337, %336
  %339 = load i32, ptr %20, align 4, !tbaa !12
  %340 = add i32 %339, %.neg460
  %341 = add nsw i32 %340, %338
  %spec.select416 = tail call i32 @llvm.smin.i32(i32 %341, i32 1024)
  %342 = xor i32 %spec.select416, %336
  %343 = sub nsw i32 %342, %336
  store i32 %343, ptr %21, align 4, !tbaa !13
  br label %344

344:                                              ; preds = %334, %329
  %345 = getelementptr inbounds i8, ptr %.3445, i64 8
  %346 = icmp ult ptr %345, %6
  br i1 %346, label %274, label %.loopexit, !llvm.loop !18

347:                                              ; preds = %.lr.ph444, %417
  %.4443 = phi ptr [ %1, %.lr.ph444 ], [ %418, %417 ]
  %348 = load i32, ptr %14, align 4, !tbaa !10
  %349 = getelementptr inbounds i8, ptr %.4443, i64 4
  %350 = load i32, ptr %349, align 4, !tbaa !10
  %351 = add i32 %348, 32768
  %.not402 = icmp ult i32 %351, 65536
  br i1 %.not402, label %363, label %352

352:                                              ; preds = %347
  %353 = and i32 %348, 65535
  %354 = load i32, ptr %15, align 4, !tbaa !13
  %355 = mul nsw i32 %354, %353
  %356 = ashr i32 %355, 9
  %357 = ashr i32 %348, 9
  %358 = and i32 %357, -128
  %359 = mul nsw i32 %354, %358
  %360 = or disjoint i32 %359, 1
  %361 = add i32 %360, %356
  %362 = ashr i32 %361, 1
  br label %368

363:                                              ; preds = %347
  %364 = load i32, ptr %15, align 4, !tbaa !13
  %365 = mul nsw i32 %364, %348
  %366 = add nsw i32 %365, 512
  %367 = ashr i32 %366, 10
  br label %368

368:                                              ; preds = %363, %352
  %369 = phi i32 [ %362, %352 ], [ %367, %363 ]
  %370 = sub nsw i32 %350, %369
  store i32 %370, ptr %349, align 4, !tbaa !10
  %371 = icmp ne i32 %348, 0
  %372 = icmp ne i32 %350, %369
  %or.cond17 = select i1 %371, i1 %372, i1 false
  br i1 %or.cond17, label %373, label %383

373:                                              ; preds = %368
  %374 = xor i32 %370, %348
  %.neg457 = lshr i32 %374, 31
  %375 = ashr i32 %374, 31
  %376 = load i32, ptr %15, align 4, !tbaa !13
  %377 = xor i32 %376, %375
  %378 = load i32, ptr %16, align 4, !tbaa !12
  %379 = add i32 %378, %.neg457
  %380 = add nsw i32 %379, %377
  %spec.select417 = tail call i32 @llvm.smin.i32(i32 %380, i32 1024)
  %381 = xor i32 %spec.select417, %375
  %382 = sub nsw i32 %381, %375
  store i32 %382, ptr %15, align 4, !tbaa !13
  br label %383

383:                                              ; preds = %373, %368
  %384 = load i32, ptr %.4443, align 4, !tbaa !10
  store i32 %384, ptr %14, align 4, !tbaa !10
  %385 = add i32 %350, 32768
  %.not404 = icmp ult i32 %385, 65536
  br i1 %.not404, label %397, label %386

386:                                              ; preds = %383
  %387 = and i32 %350, 65535
  %388 = load i32, ptr %17, align 4, !tbaa !11
  %389 = mul nsw i32 %388, %387
  %390 = ashr i32 %389, 9
  %391 = ashr i32 %350, 9
  %392 = and i32 %391, -128
  %393 = mul nsw i32 %388, %392
  %394 = or disjoint i32 %393, 1
  %395 = add i32 %394, %390
  %396 = ashr i32 %395, 1
  br label %402

397:                                              ; preds = %383
  %398 = load i32, ptr %17, align 4, !tbaa !11
  %399 = mul nsw i32 %398, %350
  %400 = add nsw i32 %399, 512
  %401 = ashr i32 %400, 10
  br label %402

402:                                              ; preds = %397, %386
  %403 = phi i32 [ %396, %386 ], [ %401, %397 ]
  %404 = sub nsw i32 %384, %403
  store i32 %404, ptr %.4443, align 4, !tbaa !10
  %405 = icmp ne i32 %350, 0
  %406 = icmp ne i32 %384, %403
  %or.cond19 = select i1 %405, i1 %406, i1 false
  br i1 %or.cond19, label %407, label %417

407:                                              ; preds = %402
  %408 = xor i32 %404, %350
  %.neg458 = lshr i32 %408, 31
  %409 = ashr i32 %408, 31
  %410 = load i32, ptr %17, align 4, !tbaa !11
  %411 = xor i32 %410, %409
  %412 = load i32, ptr %16, align 4, !tbaa !12
  %413 = add i32 %412, %.neg458
  %414 = add nsw i32 %413, %411
  %spec.select418 = tail call i32 @llvm.smin.i32(i32 %414, i32 1024)
  %415 = xor i32 %spec.select418, %409
  %416 = sub nsw i32 %415, %409
  store i32 %416, ptr %17, align 4, !tbaa !11
  br label %417

417:                                              ; preds = %407, %402
  %418 = getelementptr inbounds i8, ptr %.4443, i64 8
  %419 = icmp ult ptr %418, %6
  br i1 %419, label %347, label %.loopexit, !llvm.loop !19

420:                                              ; preds = %.lr.ph, %491
  %.5442 = phi ptr [ %1, %.lr.ph ], [ %492, %491 ]
  %421 = load i32, ptr %9, align 4, !tbaa !10
  %422 = load i32, ptr %10, align 4, !tbaa !10
  %423 = getelementptr inbounds i8, ptr %.5442, i64 4
  %424 = load i32, ptr %423, align 4, !tbaa !10
  store i32 %424, ptr %9, align 4, !tbaa !10
  %425 = add i32 %422, 32768
  %.not = icmp ult i32 %425, 65536
  br i1 %.not, label %437, label %426

426:                                              ; preds = %420
  %427 = and i32 %422, 65535
  %428 = load i32, ptr %11, align 4, !tbaa !13
  %429 = mul nsw i32 %428, %427
  %430 = ashr i32 %429, 9
  %431 = ashr i32 %422, 9
  %432 = and i32 %431, -128
  %433 = mul nsw i32 %428, %432
  %434 = or disjoint i32 %433, 1
  %435 = add i32 %434, %430
  %436 = ashr i32 %435, 1
  br label %442

437:                                              ; preds = %420
  %438 = load i32, ptr %11, align 4, !tbaa !13
  %439 = mul nsw i32 %438, %422
  %440 = add nsw i32 %439, 512
  %441 = ashr i32 %440, 10
  br label %442

442:                                              ; preds = %437, %426
  %443 = phi i32 [ %436, %426 ], [ %441, %437 ]
  %444 = sub nsw i32 %424, %443
  store i32 %444, ptr %423, align 4, !tbaa !10
  %445 = icmp ne i32 %422, 0
  %446 = icmp ne i32 %424, %443
  %or.cond21 = select i1 %445, i1 %446, i1 false
  br i1 %or.cond21, label %447, label %457

447:                                              ; preds = %442
  %448 = xor i32 %444, %422
  %.neg456 = lshr i32 %448, 31
  %449 = ashr i32 %448, 31
  %450 = load i32, ptr %11, align 4, !tbaa !13
  %451 = xor i32 %450, %449
  %452 = load i32, ptr %12, align 4, !tbaa !12
  %453 = add i32 %452, %.neg456
  %454 = add nsw i32 %453, %451
  %spec.select419 = tail call i32 @llvm.smin.i32(i32 %454, i32 1024)
  %455 = xor i32 %spec.select419, %449
  %456 = sub nsw i32 %455, %449
  store i32 %456, ptr %11, align 4, !tbaa !13
  br label %457

457:                                              ; preds = %447, %442
  %458 = load i32, ptr %.5442, align 4, !tbaa !10
  store i32 %458, ptr %10, align 4, !tbaa !10
  %459 = add i32 %421, 32768
  %.not400 = icmp ult i32 %459, 65536
  br i1 %.not400, label %471, label %460

460:                                              ; preds = %457
  %461 = and i32 %421, 65535
  %462 = load i32, ptr %13, align 4, !tbaa !11
  %463 = mul nsw i32 %462, %461
  %464 = ashr i32 %463, 9
  %465 = ashr i32 %421, 9
  %466 = and i32 %465, -128
  %467 = mul nsw i32 %462, %466
  %468 = or disjoint i32 %467, 1
  %469 = add i32 %468, %464
  %470 = ashr i32 %469, 1
  br label %476

471:                                              ; preds = %457
  %472 = load i32, ptr %13, align 4, !tbaa !11
  %473 = mul nsw i32 %472, %421
  %474 = add nsw i32 %473, 512
  %475 = ashr i32 %474, 10
  br label %476

476:                                              ; preds = %471, %460
  %477 = phi i32 [ %470, %460 ], [ %475, %471 ]
  %478 = sub nsw i32 %458, %477
  store i32 %478, ptr %.5442, align 4, !tbaa !10
  %479 = icmp ne i32 %421, 0
  %480 = icmp ne i32 %458, %477
  %or.cond23 = select i1 %479, i1 %480, i1 false
  br i1 %or.cond23, label %481, label %491

481:                                              ; preds = %476
  %482 = xor i32 %478, %421
  %.neg = lshr i32 %482, 31
  %483 = ashr i32 %482, 31
  %484 = load i32, ptr %13, align 4, !tbaa !11
  %485 = xor i32 %484, %483
  %486 = load i32, ptr %12, align 4, !tbaa !12
  %487 = add i32 %486, %.neg
  %488 = add nsw i32 %487, %485
  %spec.select420 = tail call i32 @llvm.smin.i32(i32 %488, i32 1024)
  %489 = xor i32 %spec.select420, %483
  %490 = sub nsw i32 %489, %483
  store i32 %490, ptr %13, align 4, !tbaa !11
  br label %491

491:                                              ; preds = %481, %476
  %492 = getelementptr inbounds i8, ptr %.5442, i64 8
  %493 = icmp ult ptr %492, %6
  br i1 %493, label %420, label %.loopexit, !llvm.loop !20

.loopexit:                                        ; preds = %491, %417, %344, %192, %114, %268, %.preheader440, %.preheader438, %.preheader436, %.preheader434, %.preheader432, %.preheader
  ret void
}

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

attributes #0 = { nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) 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 speculatable willreturn memory(none) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"decorr_pass", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !8, i64 16, !8, i64 48, !7, i64 80, !7, i64 84, !7, i64 88, !7, i64 92}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!7, !7, i64 0}
!11 = !{!6, !7, i64 8}
!12 = !{!6, !7, i64 4}
!13 = !{!6, !7, i64 12}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = distinct !{!17, !15}
!18 = distinct !{!18, !15}
!19 = distinct !{!19, !15}
!20 = distinct !{!20, !15}


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