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

; 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.WavpackContext = type { %struct.WavpackStreamConfig, ptr, i32, i32, ptr, i32, ptr, ptr, ptr, ptr, ptr, ptr, i64, i64, i64, i64, i64, i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, i8, ptr, ptr, i32, i32, ptr, [8 x i8], ptr, [80 x i8] }
%struct.WavpackStreamConfig = type { float, float, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [16 x i8], i8, i32, ptr }
%struct.WavpackStream = type { %struct.WavpackHeader, %struct.words_data, ptr, ptr, ptr, ptr, ptr, i64, i64, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, %struct.bs, %struct.bs, %struct.bs, float, i8, i8, i8, i8, i8, i8, i8, i8, %struct.anon, [16 x %struct.decorr_pass], %struct.decorr_pass, ptr, %struct.anon.0 }
%struct.WavpackHeader = type { [4 x i8], i16, i16, i32 }
%struct.words_data = type { [2 x i32], [2 x i32], i32, i32, i32, i32, i32, [2 x %struct.entropy_data] }
%struct.entropy_data = type { [3 x i32], i32, i32 }
%struct.bs = type { ptr, ptr, ptr, ptr, i32, i32, i32 }
%struct.anon = type { [2 x i32], [2 x i32], [2 x i32], double, double, double, ptr, ptr, i32 }
%struct.decorr_pass = type { i32, i32, i32, i32, [8 x i32], [8 x i32], i32, i32, i32, i32 }
%struct.anon.0 = type { ptr, ptr, ptr, ptr, ptr, i8, i8, i32, i32, i32, ptr, i32, i32, i32, [2 x %struct.DSDfilters], ptr }
%struct.DSDfilters = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }

; Function Attrs: nounwind uwtable
define dso_local i32 @unpack_samples(ptr noundef %0, ptr noundef %1, i32 noundef %2) #0 {
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %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 [2 x i32], align 4
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca [8 x i32], align 16
  %48 = alloca [8 x i32], align 16
  %49 = alloca i32, align 4
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store i32 %2, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #6
  %53 = load ptr, ptr %5, align 8, !tbaa !5
  %54 = getelementptr inbounds %struct.WavpackContext, ptr %53, i32 0, i32 36
  %55 = load ptr, ptr %54, align 8, !tbaa !11
  %56 = load ptr, ptr %5, align 8, !tbaa !5
  %57 = getelementptr inbounds %struct.WavpackContext, ptr %56, i32 0, i32 33
  %58 = load i32, ptr %57, align 4, !tbaa !16
  %59 = sext i32 %58 to i64
  %60 = getelementptr inbounds ptr, ptr %55, i64 %59
  %61 = load ptr, ptr %60, align 8, !tbaa !5
  store ptr %61, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #6
  %62 = load ptr, ptr %8, align 8, !tbaa !5
  %63 = getelementptr inbounds %struct.WavpackStream, ptr %62, i32 0, i32 0
  %64 = getelementptr inbounds %struct.WavpackHeader, ptr %63, i32 0, i32 3
  %65 = load i32, ptr %64, align 8, !tbaa !17
  store i32 %65, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #6
  %66 = load ptr, ptr %8, align 8, !tbaa !5
  %67 = getelementptr inbounds %struct.WavpackStream, ptr %66, i32 0, i32 23
  %68 = load i32, ptr %67, align 4, !tbaa !27
  store i32 %68, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  %69 = load i32, ptr %9, align 4, !tbaa !9
  %70 = zext i32 %69 to i64
  %71 = and i64 %70, 8126464
  %72 = ashr i64 %71, 18
  %73 = shl i64 1, %72
  %74 = add nsw i64 %73, 2
  %75 = trunc i64 %74 to i32
  store i32 %75, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  store i32 0, ptr %18, align 4, !tbaa !9
  %76 = load ptr, ptr %8, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.WavpackStream, ptr %76, i32 0, i32 7
  %78 = load i64, ptr %77, align 8, !tbaa !28
  %79 = load i32, ptr %7, align 4, !tbaa !9
  %80 = zext i32 %79 to i64
  %81 = add nsw i64 %78, %80
  %82 = load ptr, ptr %8, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.WavpackStream, ptr %82, i32 0, i32 8
  %84 = load i64, ptr %83, align 8, !tbaa !29
  %85 = load ptr, ptr %8, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct.WavpackStream, ptr %85, i32 0, i32 0
  %87 = getelementptr inbounds %struct.WavpackHeader, ptr %86, i32 0, i32 2
  %88 = load i16, ptr %87, align 2, !tbaa !30
  %89 = zext i16 %88 to i64
  %90 = add nsw i64 %84, %89
  %91 = icmp sgt i64 %81, %90
  br i1 %91, label %92, label %124

92:                                               ; preds = %3
  %93 = load ptr, ptr %8, align 8, !tbaa !5
  %94 = getelementptr inbounds %struct.WavpackStream, ptr %93, i32 0, i32 8
  %95 = load i64, ptr %94, align 8, !tbaa !29
  %96 = load ptr, ptr %8, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct.WavpackStream, ptr %96, i32 0, i32 0
  %98 = getelementptr inbounds %struct.WavpackHeader, ptr %97, i32 0, i32 2
  %99 = load i16, ptr %98, align 2, !tbaa !30
  %100 = zext i16 %99 to i64
  %101 = add nsw i64 %95, %100
  %102 = load ptr, ptr %8, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct.WavpackStream, ptr %102, i32 0, i32 7
  %104 = load i64, ptr %103, align 8, !tbaa !28
  %105 = sub nsw i64 %101, %104
  %106 = load i32, ptr %7, align 4, !tbaa !9
  %107 = zext i32 %106 to i64
  %108 = icmp slt i64 %105, %107
  br i1 %108, label %109, label %124

109:                                              ; preds = %92
  %110 = load ptr, ptr %8, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct.WavpackStream, ptr %110, i32 0, i32 8
  %112 = load i64, ptr %111, align 8, !tbaa !29
  %113 = load ptr, ptr %8, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.WavpackStream, ptr %113, i32 0, i32 0
  %115 = getelementptr inbounds %struct.WavpackHeader, ptr %114, i32 0, i32 2
  %116 = load i16, ptr %115, align 2, !tbaa !30
  %117 = zext i16 %116 to i64
  %118 = add nsw i64 %112, %117
  %119 = load ptr, ptr %8, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.WavpackStream, ptr %119, i32 0, i32 7
  %121 = load i64, ptr %120, align 8, !tbaa !28
  %122 = sub nsw i64 %118, %121
  %123 = trunc i64 %122 to i32
  store i32 %123, ptr %7, align 4, !tbaa !9
  br label %124

124:                                              ; preds = %109, %92, %3
  %125 = load ptr, ptr %8, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.WavpackStream, ptr %125, i32 0, i32 8
  %127 = load i64, ptr %126, align 8, !tbaa !29
  %128 = load ptr, ptr %8, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.WavpackStream, ptr %128, i32 0, i32 7
  %130 = load i64, ptr %129, align 8, !tbaa !28
  %131 = icmp sgt i64 %127, %130
  br i1 %131, label %140, label %132

132:                                              ; preds = %124
  %133 = load ptr, ptr %8, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.WavpackStream, ptr %133, i32 0, i32 0
  %135 = getelementptr inbounds %struct.WavpackHeader, ptr %134, i32 0, i32 2
  %136 = load i16, ptr %135, align 2, !tbaa !30
  %137 = zext i16 %136 to i32
  %138 = load i32, ptr %7, align 4, !tbaa !9
  %139 = icmp ult i32 %137, %138
  br i1 %139, label %140, label %143

140:                                              ; preds = %132, %124
  %141 = load ptr, ptr %8, align 8, !tbaa !5
  %142 = getelementptr inbounds %struct.WavpackStream, ptr %141, i32 0, i32 12
  store i8 1, ptr %142, align 4, !tbaa !31
  br label %143

143:                                              ; preds = %140, %132
  %144 = load ptr, ptr %8, align 8, !tbaa !5
  %145 = getelementptr inbounds %struct.WavpackStream, ptr %144, i32 0, i32 12
  %146 = load i8, ptr %145, align 4, !tbaa !31
  %147 = icmp ne i8 %146, 0
  br i1 %147, label %148, label %181

148:                                              ; preds = %143
  %149 = load ptr, ptr %5, align 8, !tbaa !5
  %150 = getelementptr inbounds %struct.WavpackContext, ptr %149, i32 0, i32 23
  %151 = load i32, ptr %150, align 4, !tbaa !32
  %152 = icmp eq i32 %151, 1
  br i1 %152, label %163, label %153

153:                                              ; preds = %148
  %154 = load ptr, ptr %5, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.WavpackContext, ptr %154, i32 0, i32 0
  %156 = getelementptr inbounds %struct.WavpackStreamConfig, ptr %155, i32 0, i32 7
  %157 = load i32, ptr %156, align 4, !tbaa !33
  %158 = icmp eq i32 %157, 1
  br i1 %158, label %163, label %159

159:                                              ; preds = %153
  %160 = load i32, ptr %9, align 4, !tbaa !9
  %161 = and i32 %160, 4
  %162 = icmp ne i32 %161, 0
  br i1 %162, label %163, label %168

163:                                              ; preds = %159, %153, %148
  %164 = load ptr, ptr %6, align 8, !tbaa !5
  %165 = load i32, ptr %7, align 4, !tbaa !9
  %166 = mul i32 %165, 4
  %167 = zext i32 %166 to i64
  call void @llvm.memset.p0.i64(ptr align 4 %164, i8 0, i64 %167, i1 false)
  br label %173

168:                                              ; preds = %159
  %169 = load ptr, ptr %6, align 8, !tbaa !5
  %170 = load i32, ptr %7, align 4, !tbaa !9
  %171 = mul i32 %170, 8
  %172 = zext i32 %171 to i64
  call void @llvm.memset.p0.i64(ptr align 4 %169, i8 0, i64 %172, i1 false)
  br label %173

173:                                              ; preds = %168, %163
  %174 = load i32, ptr %7, align 4, !tbaa !9
  %175 = zext i32 %174 to i64
  %176 = load ptr, ptr %8, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.WavpackStream, ptr %176, i32 0, i32 7
  %178 = load i64, ptr %177, align 8, !tbaa !28
  %179 = add nsw i64 %178, %175
  store i64 %179, ptr %177, align 8, !tbaa !28
  %180 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %180, ptr %4, align 4
  store i32 1, ptr %19, align 4
  br label %2333

181:                                              ; preds = %143
  %182 = load i32, ptr %9, align 4, !tbaa !9
  %183 = and i32 %182, 8
  %184 = icmp ne i32 %183, 0
  br i1 %184, label %185, label %194

185:                                              ; preds = %181
  %186 = load ptr, ptr %8, align 8, !tbaa !5
  %187 = getelementptr inbounds %struct.WavpackStream, ptr %186, i32 0, i32 4
  %188 = load ptr, ptr %187, align 8, !tbaa !34
  %189 = icmp ne ptr %188, null
  br i1 %189, label %194, label %190

190:                                              ; preds = %185
  %191 = load i32, ptr %12, align 4, !tbaa !9
  %192 = mul nsw i32 %191, 2
  %193 = add nsw i32 %192, 128
  store i32 %193, ptr %12, align 4, !tbaa !9
  br label %194

194:                                              ; preds = %190, %185, %181
  %195 = load ptr, ptr %8, align 8, !tbaa !5
  %196 = getelementptr inbounds %struct.WavpackStream, ptr %195, i32 0, i32 4
  %197 = load ptr, ptr %196, align 8, !tbaa !34
  %198 = icmp ne ptr %197, null
  br i1 %198, label %299, label %199

199:                                              ; preds = %194
  %200 = load i32, ptr %9, align 4, !tbaa !9
  %201 = and i32 %200, 1073741828
  %202 = icmp ne i32 %201, 0
  br i1 %202, label %203, label %299

203:                                              ; preds = %199
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #6
  %204 = load ptr, ptr %6, align 8, !tbaa !5
  %205 = load i32, ptr %7, align 4, !tbaa !9
  %206 = zext i32 %205 to i64
  %207 = getelementptr inbounds i32, ptr %204, i64 %206
  store ptr %207, ptr %20, align 8, !tbaa !5
  %208 = load i32, ptr %9, align 4, !tbaa !9
  %209 = and i32 %208, 8
  %210 = icmp ne i32 %209, 0
  br i1 %210, label %211, label %234

211:                                              ; preds = %203
  %212 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %212, ptr %11, align 4, !tbaa !9
  %213 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %213, ptr %15, align 8, !tbaa !5
  br label %214

214:                                              ; preds = %232, %211
  %215 = load ptr, ptr %15, align 8, !tbaa !5
  %216 = load ptr, ptr %20, align 8, !tbaa !5
  %217 = icmp ult ptr %215, %216
  br i1 %217, label %218, label %233

218:                                              ; preds = %214
  %219 = load ptr, ptr %8, align 8, !tbaa !5
  %220 = call i32 @get_word(ptr noundef %219, i32 noundef 0, ptr noundef null)
  %221 = load ptr, ptr %15, align 8, !tbaa !5
  %222 = getelementptr inbounds i32, ptr %221, i32 1
  store ptr %222, ptr %15, align 8, !tbaa !5
  store i32 %220, ptr %221, align 4, !tbaa !9
  %223 = icmp eq i32 %220, -2147483648
  br i1 %223, label %224, label %232

224:                                              ; preds = %218
  %225 = load ptr, ptr %15, align 8, !tbaa !5
  %226 = load ptr, ptr %6, align 8, !tbaa !5
  %227 = ptrtoint ptr %225 to i64
  %228 = ptrtoint ptr %226 to i64
  %229 = sub i64 %227, %228
  %230 = sdiv exact i64 %229, 4
  %231 = trunc i64 %230 to i32
  store i32 %231, ptr %11, align 4, !tbaa !9
  br label %233

232:                                              ; preds = %218
  br label %214, !llvm.loop !35

233:                                              ; preds = %224, %214
  br label %239

234:                                              ; preds = %203
  %235 = load ptr, ptr %8, align 8, !tbaa !5
  %236 = load ptr, ptr %6, align 8, !tbaa !5
  %237 = load i32, ptr %7, align 4, !tbaa !9
  %238 = call i32 @get_words_lossless(ptr noundef %235, ptr noundef %236, i32 noundef %237)
  store i32 %238, ptr %11, align 4, !tbaa !9
  br label %239

239:                                              ; preds = %234, %233
  %240 = load i32, ptr %11, align 4, !tbaa !9
  %241 = load i32, ptr %7, align 4, !tbaa !9
  %242 = icmp ne i32 %240, %241
  br i1 %242, label %243, label %244

243:                                              ; preds = %239
  store i32 4, ptr %19, align 4
  br label %296

244:                                              ; preds = %239
  %245 = load ptr, ptr %8, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.WavpackStream, ptr %245, i32 0, i32 10
  %247 = load i32, ptr %246, align 4, !tbaa !37
  store i32 %247, ptr %17, align 4, !tbaa !9
  %248 = load ptr, ptr %8, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.WavpackStream, ptr %248, i32 0, i32 40
  %250 = getelementptr inbounds [16 x %struct.decorr_pass], ptr %249, i64 0, i64 0
  store ptr %250, ptr %16, align 8, !tbaa !5
  br label %251

251:                                              ; preds = %259, %244
  %252 = load i32, ptr %17, align 4, !tbaa !9
  %253 = add nsw i32 %252, -1
  store i32 %253, ptr %17, align 4, !tbaa !9
  %254 = icmp ne i32 %252, 0
  br i1 %254, label %255, label %262

255:                                              ; preds = %251
  %256 = load ptr, ptr %16, align 8, !tbaa !5
  %257 = load ptr, ptr %6, align 8, !tbaa !5
  %258 = load i32, ptr %7, align 4, !tbaa !9
  call void @decorr_mono_pass(ptr noundef %256, ptr noundef %257, i32 noundef %258)
  br label %259

259:                                              ; preds = %255
  %260 = load ptr, ptr %16, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.decorr_pass, ptr %260, i32 1
  store ptr %261, ptr %16, align 8, !tbaa !5
  br label %251, !llvm.loop !38

262:                                              ; preds = %251
  %263 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %263, ptr %15, align 8, !tbaa !5
  br label %264

264:                                              ; preds = %292, %262
  %265 = load ptr, ptr %15, align 8, !tbaa !5
  %266 = load ptr, ptr %20, align 8, !tbaa !5
  %267 = icmp ult ptr %265, %266
  br i1 %267, label %268, label %295

268:                                              ; preds = %264
  %269 = load ptr, ptr %15, align 8, !tbaa !5
  %270 = getelementptr inbounds i32, ptr %269, i64 0
  %271 = load i32, ptr %270, align 4, !tbaa !9
  %272 = sext i32 %271 to i64
  %273 = call i64 @llvm.abs.i64(i64 %272, i1 true)
  %274 = load i32, ptr %12, align 4, !tbaa !9
  %275 = sext i32 %274 to i64
  %276 = icmp sgt i64 %273, %275
  br i1 %276, label %277, label %285

277:                                              ; preds = %268
  %278 = load ptr, ptr %15, align 8, !tbaa !5
  %279 = load ptr, ptr %6, align 8, !tbaa !5
  %280 = ptrtoint ptr %278 to i64
  %281 = ptrtoint ptr %279 to i64
  %282 = sub i64 %280, %281
  %283 = sdiv exact i64 %282, 4
  %284 = trunc i64 %283 to i32
  store i32 %284, ptr %11, align 4, !tbaa !9
  br label %295

285:                                              ; preds = %268
  %286 = load i32, ptr %10, align 4, !tbaa !9
  %287 = mul i32 %286, 3
  %288 = load ptr, ptr %15, align 8, !tbaa !5
  %289 = getelementptr inbounds i32, ptr %288, i64 0
  %290 = load i32, ptr %289, align 4, !tbaa !9
  %291 = add i32 %287, %290
  store i32 %291, ptr %10, align 4, !tbaa !9
  br label %292

292:                                              ; preds = %285
  %293 = load ptr, ptr %15, align 8, !tbaa !5
  %294 = getelementptr inbounds i32, ptr %293, i32 1
  store ptr %294, ptr %15, align 8, !tbaa !5
  br label %264, !llvm.loop !39

295:                                              ; preds = %277, %264
  store i32 0, ptr %19, align 4
  br label %296

296:                                              ; preds = %295, %243
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  %297 = load i32, ptr %19, align 4
  switch i32 %297, label %2333 [
    i32 0, label %298
    i32 4, label %2164
  ]

298:                                              ; preds = %296
  br label %2163

299:                                              ; preds = %199, %194
  %300 = load ptr, ptr %8, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.WavpackStream, ptr %300, i32 0, i32 4
  %302 = load ptr, ptr %301, align 8, !tbaa !34
  %303 = icmp ne ptr %302, null
  br i1 %303, label %493, label %304

304:                                              ; preds = %299
  %305 = load i32, ptr %9, align 4, !tbaa !9
  %306 = and i32 %305, 1073741828
  %307 = icmp ne i32 %306, 0
  br i1 %307, label %493, label %308

308:                                              ; preds = %304
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #6
  %309 = load ptr, ptr %6, align 8, !tbaa !5
  %310 = load i32, ptr %7, align 4, !tbaa !9
  %311 = mul i32 %310, 2
  %312 = zext i32 %311 to i64
  %313 = getelementptr inbounds i32, ptr %309, i64 %312
  store ptr %313, ptr %21, align 8, !tbaa !5
  %314 = load i32, ptr %9, align 4, !tbaa !9
  %315 = and i32 %314, 8
  %316 = icmp ne i32 %315, 0
  br i1 %316, label %317, label %350

317:                                              ; preds = %308
  %318 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %318, ptr %11, align 4, !tbaa !9
  %319 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %319, ptr %15, align 8, !tbaa !5
  br label %320

320:                                              ; preds = %346, %317
  %321 = load ptr, ptr %15, align 8, !tbaa !5
  %322 = load ptr, ptr %21, align 8, !tbaa !5
  %323 = icmp ult ptr %321, %322
  br i1 %323, label %324, label %349

324:                                              ; preds = %320
  %325 = load ptr, ptr %8, align 8, !tbaa !5
  %326 = call i32 @get_word(ptr noundef %325, i32 noundef 0, ptr noundef null)
  %327 = load ptr, ptr %15, align 8, !tbaa !5
  %328 = getelementptr inbounds i32, ptr %327, i64 0
  store i32 %326, ptr %328, align 4, !tbaa !9
  %329 = icmp eq i32 %326, -2147483648
  br i1 %329, label %336, label %330

330:                                              ; preds = %324
  %331 = load ptr, ptr %8, align 8, !tbaa !5
  %332 = call i32 @get_word(ptr noundef %331, i32 noundef 1, ptr noundef null)
  %333 = load ptr, ptr %15, align 8, !tbaa !5
  %334 = getelementptr inbounds i32, ptr %333, i64 1
  store i32 %332, ptr %334, align 4, !tbaa !9
  %335 = icmp eq i32 %332, -2147483648
  br i1 %335, label %336, label %345

336:                                              ; preds = %330, %324
  %337 = load ptr, ptr %15, align 8, !tbaa !5
  %338 = load ptr, ptr %6, align 8, !tbaa !5
  %339 = ptrtoint ptr %337 to i64
  %340 = ptrtoint ptr %338 to i64
  %341 = sub i64 %339, %340
  %342 = sdiv exact i64 %341, 4
  %343 = trunc i64 %342 to i32
  %344 = udiv i32 %343, 2
  store i32 %344, ptr %11, align 4, !tbaa !9
  br label %349

345:                                              ; preds = %330
  br label %346

346:                                              ; preds = %345
  %347 = load ptr, ptr %15, align 8, !tbaa !5
  %348 = getelementptr inbounds i32, ptr %347, i64 2
  store ptr %348, ptr %15, align 8, !tbaa !5
  br label %320, !llvm.loop !40

349:                                              ; preds = %336, %320
  br label %355

350:                                              ; preds = %308
  %351 = load ptr, ptr %8, align 8, !tbaa !5
  %352 = load ptr, ptr %6, align 8, !tbaa !5
  %353 = load i32, ptr %7, align 4, !tbaa !9
  %354 = call i32 @get_words_lossless(ptr noundef %351, ptr noundef %352, i32 noundef %353)
  store i32 %354, ptr %11, align 4, !tbaa !9
  br label %355

355:                                              ; preds = %350, %349
  %356 = load i32, ptr %11, align 4, !tbaa !9
  %357 = load i32, ptr %7, align 4, !tbaa !9
  %358 = icmp ne i32 %356, %357
  br i1 %358, label %359, label %360

359:                                              ; preds = %355
  store i32 4, ptr %19, align 4
  br label %490

360:                                              ; preds = %355
  %361 = load ptr, ptr %8, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.WavpackStream, ptr %361, i32 0, i32 10
  %363 = load i32, ptr %362, align 4, !tbaa !37
  store i32 %363, ptr %17, align 4, !tbaa !9
  %364 = load ptr, ptr %8, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.WavpackStream, ptr %364, i32 0, i32 40
  %366 = getelementptr inbounds [16 x %struct.decorr_pass], ptr %365, i64 0, i64 0
  store ptr %366, ptr %16, align 8, !tbaa !5
  br label %367

367:                                              ; preds = %375, %360
  %368 = load i32, ptr %17, align 4, !tbaa !9
  %369 = add nsw i32 %368, -1
  store i32 %369, ptr %17, align 4, !tbaa !9
  %370 = icmp ne i32 %368, 0
  br i1 %370, label %371, label %378

371:                                              ; preds = %367
  %372 = load ptr, ptr %16, align 8, !tbaa !5
  %373 = load ptr, ptr %6, align 8, !tbaa !5
  %374 = load i32, ptr %7, align 4, !tbaa !9
  call void @decorr_stereo_pass(ptr noundef %372, ptr noundef %373, i32 noundef %374)
  br label %375

375:                                              ; preds = %371
  %376 = load ptr, ptr %16, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.decorr_pass, ptr %376, i32 1
  store ptr %377, ptr %16, align 8, !tbaa !5
  br label %367, !llvm.loop !41

378:                                              ; preds = %367
  %379 = load i32, ptr %7, align 4, !tbaa !9
  %380 = and i32 %379, 7
  store i32 %380, ptr %18, align 4, !tbaa !9
  %381 = load i32, ptr %9, align 4, !tbaa !9
  %382 = and i32 %381, 16
  %383 = icmp ne i32 %382, 0
  br i1 %383, label %384, label %424

384:                                              ; preds = %378
  %385 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %385, ptr %15, align 8, !tbaa !5
  br label %386

386:                                              ; preds = %420, %384
  %387 = load ptr, ptr %15, align 8, !tbaa !5
  %388 = load ptr, ptr %21, align 8, !tbaa !5
  %389 = icmp ult ptr %387, %388
  br i1 %389, label %390, label %423

390:                                              ; preds = %386
  %391 = load ptr, ptr %15, align 8, !tbaa !5
  %392 = getelementptr inbounds i32, ptr %391, i64 0
  %393 = load i32, ptr %392, align 4, !tbaa !9
  %394 = ashr i32 %393, 1
  %395 = load ptr, ptr %15, align 8, !tbaa !5
  %396 = getelementptr inbounds i32, ptr %395, i64 1
  %397 = load i32, ptr %396, align 4, !tbaa !9
  %398 = sub nsw i32 %397, %394
  store i32 %398, ptr %396, align 4, !tbaa !9
  %399 = load ptr, ptr %15, align 8, !tbaa !5
  %400 = getelementptr inbounds i32, ptr %399, i64 0
  %401 = load i32, ptr %400, align 4, !tbaa !9
  %402 = add nsw i32 %401, %398
  store i32 %402, ptr %400, align 4, !tbaa !9
  %403 = load i32, ptr %10, align 4, !tbaa !9
  %404 = shl i32 %403, 3
  %405 = load ptr, ptr %15, align 8, !tbaa !5
  %406 = getelementptr inbounds i32, ptr %405, i64 0
  %407 = load i32, ptr %406, align 4, !tbaa !9
  %408 = shl i32 %407, 1
  %409 = add i32 %404, %408
  %410 = load ptr, ptr %15, align 8, !tbaa !5
  %411 = getelementptr inbounds i32, ptr %410, i64 0
  %412 = load i32, ptr %411, align 4, !tbaa !9
  %413 = add i32 %409, %412
  %414 = load ptr, ptr %15, align 8, !tbaa !5
  %415 = getelementptr inbounds i32, ptr %414, i64 1
  %416 = load i32, ptr %415, align 4, !tbaa !9
  %417 = add i32 %413, %416
  %418 = load i32, ptr %10, align 4, !tbaa !9
  %419 = add i32 %418, %417
  store i32 %419, ptr %10, align 4, !tbaa !9
  br label %420

420:                                              ; preds = %390
  %421 = load ptr, ptr %15, align 8, !tbaa !5
  %422 = getelementptr inbounds i32, ptr %421, i64 2
  store ptr %422, ptr %15, align 8, !tbaa !5
  br label %386, !llvm.loop !42

423:                                              ; preds = %386
  br label %452

424:                                              ; preds = %378
  %425 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %425, ptr %15, align 8, !tbaa !5
  br label %426

426:                                              ; preds = %448, %424
  %427 = load ptr, ptr %15, align 8, !tbaa !5
  %428 = load ptr, ptr %21, align 8, !tbaa !5
  %429 = icmp ult ptr %427, %428
  br i1 %429, label %430, label %451

430:                                              ; preds = %426
  %431 = load i32, ptr %10, align 4, !tbaa !9
  %432 = shl i32 %431, 3
  %433 = load ptr, ptr %15, align 8, !tbaa !5
  %434 = getelementptr inbounds i32, ptr %433, i64 0
  %435 = load i32, ptr %434, align 4, !tbaa !9
  %436 = shl i32 %435, 1
  %437 = add i32 %432, %436
  %438 = load ptr, ptr %15, align 8, !tbaa !5
  %439 = getelementptr inbounds i32, ptr %438, i64 0
  %440 = load i32, ptr %439, align 4, !tbaa !9
  %441 = add i32 %437, %440
  %442 = load ptr, ptr %15, align 8, !tbaa !5
  %443 = getelementptr inbounds i32, ptr %442, i64 1
  %444 = load i32, ptr %443, align 4, !tbaa !9
  %445 = add i32 %441, %444
  %446 = load i32, ptr %10, align 4, !tbaa !9
  %447 = add i32 %446, %445
  store i32 %447, ptr %10, align 4, !tbaa !9
  br label %448

448:                                              ; preds = %430
  %449 = load ptr, ptr %15, align 8, !tbaa !5
  %450 = getelementptr inbounds i32, ptr %449, i64 2
  store ptr %450, ptr %15, align 8, !tbaa !5
  br label %426, !llvm.loop !43

451:                                              ; preds = %426
  br label %452

452:                                              ; preds = %451, %423
  %453 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %453, ptr %15, align 8, !tbaa !5
  br label %454

454:                                              ; preds = %486, %452
  %455 = load ptr, ptr %15, align 8, !tbaa !5
  %456 = load ptr, ptr %21, align 8, !tbaa !5
  %457 = icmp ult ptr %455, %456
  br i1 %457, label %458, label %489

458:                                              ; preds = %454
  %459 = load ptr, ptr %15, align 8, !tbaa !5
  %460 = getelementptr inbounds i32, ptr %459, i64 0
  %461 = load i32, ptr %460, align 4, !tbaa !9
  %462 = sext i32 %461 to i64
  %463 = call i64 @llvm.abs.i64(i64 %462, i1 true)
  %464 = load i32, ptr %12, align 4, !tbaa !9
  %465 = sext i32 %464 to i64
  %466 = icmp sgt i64 %463, %465
  br i1 %466, label %476, label %467

467:                                              ; preds = %458
  %468 = load ptr, ptr %15, align 8, !tbaa !5
  %469 = getelementptr inbounds i32, ptr %468, i64 1
  %470 = load i32, ptr %469, align 4, !tbaa !9
  %471 = sext i32 %470 to i64
  %472 = call i64 @llvm.abs.i64(i64 %471, i1 true)
  %473 = load i32, ptr %12, align 4, !tbaa !9
  %474 = sext i32 %473 to i64
  %475 = icmp sgt i64 %472, %474
  br i1 %475, label %476, label %485

476:                                              ; preds = %467, %458
  %477 = load ptr, ptr %15, align 8, !tbaa !5
  %478 = load ptr, ptr %6, align 8, !tbaa !5
  %479 = ptrtoint ptr %477 to i64
  %480 = ptrtoint ptr %478 to i64
  %481 = sub i64 %479, %480
  %482 = sdiv exact i64 %481, 4
  %483 = trunc i64 %482 to i32
  %484 = udiv i32 %483, 2
  store i32 %484, ptr %11, align 4, !tbaa !9
  br label %489

485:                                              ; preds = %467
  br label %486

486:                                              ; preds = %485
  %487 = load ptr, ptr %15, align 8, !tbaa !5
  %488 = getelementptr inbounds i32, ptr %487, i64 16
  store ptr %488, ptr %15, align 8, !tbaa !5
  br label %454, !llvm.loop !44

489:                                              ; preds = %476, %454
  store i32 0, ptr %19, align 4
  br label %490

490:                                              ; preds = %489, %359
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  %491 = load i32, ptr %19, align 4
  switch i32 %491, label %2333 [
    i32 0, label %492
    i32 4, label %2164
  ]

492:                                              ; preds = %490
  br label %2162

493:                                              ; preds = %304, %299
  %494 = load i32, ptr %9, align 4, !tbaa !9
  %495 = and i32 %494, 8
  %496 = icmp ne i32 %495, 0
  br i1 %496, label %497, label %795

497:                                              ; preds = %493
  %498 = load i32, ptr %9, align 4, !tbaa !9
  %499 = and i32 %498, 1073741828
  %500 = icmp ne i32 %499, 0
  br i1 %500, label %501, label %795

501:                                              ; preds = %497
  %502 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %502, ptr %15, align 8, !tbaa !5
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %503

503:                                              ; preds = %791, %501
  %504 = load i32, ptr %11, align 4, !tbaa !9
  %505 = load i32, ptr %7, align 4, !tbaa !9
  %506 = icmp ult i32 %504, %505
  br i1 %506, label %507, label %794

507:                                              ; preds = %503
  %508 = load ptr, ptr %8, align 8, !tbaa !5
  %509 = getelementptr inbounds [2 x i32], ptr %13, i64 0, i64 0
  %510 = call i32 @get_word(ptr noundef %508, i32 noundef 0, ptr noundef %509)
  store i32 %510, ptr %14, align 4, !tbaa !9
  %511 = icmp eq i32 %510, -2147483648
  br i1 %511, label %512, label %513

512:                                              ; preds = %507
  br label %794

513:                                              ; preds = %507
  %514 = load ptr, ptr %8, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.WavpackStream, ptr %514, i32 0, i32 10
  %516 = load i32, ptr %515, align 4, !tbaa !37
  store i32 %516, ptr %17, align 4, !tbaa !9
  %517 = load ptr, ptr %8, align 8, !tbaa !5
  %518 = getelementptr inbounds %struct.WavpackStream, ptr %517, i32 0, i32 40
  %519 = getelementptr inbounds [16 x %struct.decorr_pass], ptr %518, i64 0, i64 0
  store ptr %519, ptr %16, align 8, !tbaa !5
  br label %520

520:                                              ; preds = %645, %513
  %521 = load i32, ptr %17, align 4, !tbaa !9
  %522 = add nsw i32 %521, -1
  store i32 %522, ptr %17, align 4, !tbaa !9
  %523 = icmp ne i32 %521, 0
  br i1 %523, label %524, label %648

524:                                              ; preds = %520
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #6
  %525 = load ptr, ptr %16, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.decorr_pass, ptr %525, i32 0, i32 0
  %527 = load i32, ptr %526, align 4, !tbaa !45
  %528 = icmp sgt i32 %527, 8
  br i1 %528, label %529, label %566

529:                                              ; preds = %524
  %530 = load ptr, ptr %16, align 8, !tbaa !5
  %531 = getelementptr inbounds %struct.decorr_pass, ptr %530, i32 0, i32 0
  %532 = load i32, ptr %531, align 4, !tbaa !45
  %533 = and i32 %532, 1
  %534 = icmp ne i32 %533, 0
  br i1 %534, label %535, label %546

535:                                              ; preds = %529
  %536 = load ptr, ptr %16, align 8, !tbaa !5
  %537 = getelementptr inbounds %struct.decorr_pass, ptr %536, i32 0, i32 4
  %538 = getelementptr inbounds [8 x i32], ptr %537, i64 0, i64 0
  %539 = load i32, ptr %538, align 4, !tbaa !9
  %540 = mul nsw i32 2, %539
  %541 = load ptr, ptr %16, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.decorr_pass, ptr %541, i32 0, i32 4
  %543 = getelementptr inbounds [8 x i32], ptr %542, i64 0, i64 1
  %544 = load i32, ptr %543, align 4, !tbaa !9
  %545 = sub nsw i32 %540, %544
  store i32 %545, ptr %22, align 4, !tbaa !9
  br label %558

546:                                              ; preds = %529
  %547 = load ptr, ptr %16, align 8, !tbaa !5
  %548 = getelementptr inbounds %struct.decorr_pass, ptr %547, i32 0, i32 4
  %549 = getelementptr inbounds [8 x i32], ptr %548, i64 0, i64 0
  %550 = load i32, ptr %549, align 4, !tbaa !9
  %551 = mul nsw i32 3, %550
  %552 = load ptr, ptr %16, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.decorr_pass, ptr %552, i32 0, i32 4
  %554 = getelementptr inbounds [8 x i32], ptr %553, i64 0, i64 1
  %555 = load i32, ptr %554, align 4, !tbaa !9
  %556 = sub nsw i32 %551, %555
  %557 = ashr i32 %556, 1
  store i32 %557, ptr %22, align 4, !tbaa !9
  br label %558

558:                                              ; preds = %546, %535
  %559 = load ptr, ptr %16, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.decorr_pass, ptr %559, i32 0, i32 4
  %561 = getelementptr inbounds [8 x i32], ptr %560, i64 0, i64 0
  %562 = load i32, ptr %561, align 4, !tbaa !9
  %563 = load ptr, ptr %16, align 8, !tbaa !5
  %564 = getelementptr inbounds %struct.decorr_pass, ptr %563, i32 0, i32 4
  %565 = getelementptr inbounds [8 x i32], ptr %564, i64 0, i64 1
  store i32 %562, ptr %565, align 4, !tbaa !9
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %579

566:                                              ; preds = %524
  %567 = load ptr, ptr %16, align 8, !tbaa !5
  %568 = getelementptr inbounds %struct.decorr_pass, ptr %567, i32 0, i32 4
  %569 = load i32, ptr %18, align 4, !tbaa !9
  %570 = sext i32 %569 to i64
  %571 = getelementptr inbounds [8 x i32], ptr %568, i64 0, i64 %570
  %572 = load i32, ptr %571, align 4, !tbaa !9
  store i32 %572, ptr %22, align 4, !tbaa !9
  %573 = load i32, ptr %18, align 4, !tbaa !9
  %574 = load ptr, ptr %16, align 8, !tbaa !5
  %575 = getelementptr inbounds %struct.decorr_pass, ptr %574, i32 0, i32 0
  %576 = load i32, ptr %575, align 4, !tbaa !45
  %577 = add nsw i32 %573, %576
  %578 = and i32 %577, 7
  store i32 %578, ptr %24, align 4, !tbaa !9
  br label %579

579:                                              ; preds = %566, %558
  %580 = load i32, ptr %22, align 4, !tbaa !9
  %581 = load i32, ptr %22, align 4, !tbaa !9
  %582 = trunc i32 %581 to i16
  %583 = sext i16 %582 to i32
  %584 = icmp ne i32 %580, %583
  br i1 %584, label %585, label %603

585:                                              ; preds = %579
  %586 = load i32, ptr %22, align 4, !tbaa !9
  %587 = and i32 %586, 65535
  %588 = load ptr, ptr %16, align 8, !tbaa !5
  %589 = getelementptr inbounds %struct.decorr_pass, ptr %588, i32 0, i32 2
  %590 = load i32, ptr %589, align 4, !tbaa !46
  %591 = mul nsw i32 %587, %590
  %592 = ashr i32 %591, 9
  %593 = load i32, ptr %22, align 4, !tbaa !9
  %594 = and i32 %593, -65536
  %595 = ashr i32 %594, 9
  %596 = load ptr, ptr %16, align 8, !tbaa !5
  %597 = getelementptr inbounds %struct.decorr_pass, ptr %596, i32 0, i32 2
  %598 = load i32, ptr %597, align 4, !tbaa !46
  %599 = mul nsw i32 %595, %598
  %600 = add nsw i32 %592, %599
  %601 = add nsw i32 %600, 1
  %602 = ashr i32 %601, 1
  br label %611

603:                                              ; preds = %579
  %604 = load ptr, ptr %16, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.decorr_pass, ptr %604, i32 0, i32 2
  %606 = load i32, ptr %605, align 4, !tbaa !46
  %607 = load i32, ptr %22, align 4, !tbaa !9
  %608 = mul nsw i32 %606, %607
  %609 = add nsw i32 %608, 512
  %610 = ashr i32 %609, 10
  br label %611

611:                                              ; preds = %603, %585
  %612 = phi i32 [ %602, %585 ], [ %610, %603 ]
  %613 = load i32, ptr %14, align 4, !tbaa !9
  %614 = add nsw i32 %612, %613
  store i32 %614, ptr %23, align 4, !tbaa !9
  %615 = load i32, ptr %22, align 4, !tbaa !9
  %616 = icmp ne i32 %615, 0
  br i1 %616, label %617, label %638

617:                                              ; preds = %611
  %618 = load i32, ptr %14, align 4, !tbaa !9
  %619 = icmp ne i32 %618, 0
  br i1 %619, label %620, label %638

620:                                              ; preds = %617
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  %621 = load i32, ptr %22, align 4, !tbaa !9
  %622 = load i32, ptr %14, align 4, !tbaa !9
  %623 = xor i32 %621, %622
  %624 = ashr i32 %623, 31
  store i32 %624, ptr %25, align 4, !tbaa !9
  %625 = load ptr, ptr %16, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.decorr_pass, ptr %625, i32 0, i32 1
  %627 = load i32, ptr %626, align 4, !tbaa !47
  %628 = load i32, ptr %25, align 4, !tbaa !9
  %629 = xor i32 %627, %628
  %630 = load ptr, ptr %16, align 8, !tbaa !5
  %631 = getelementptr inbounds %struct.decorr_pass, ptr %630, i32 0, i32 2
  %632 = load i32, ptr %631, align 4, !tbaa !46
  %633 = load i32, ptr %25, align 4, !tbaa !9
  %634 = sub nsw i32 %632, %633
  %635 = add nsw i32 %629, %634
  %636 = load ptr, ptr %16, align 8, !tbaa !5
  %637 = getelementptr inbounds %struct.decorr_pass, ptr %636, i32 0, i32 2
  store i32 %635, ptr %637, align 4, !tbaa !46
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  br label %638

638:                                              ; preds = %620, %617, %611
  %639 = load i32, ptr %23, align 4, !tbaa !9
  store i32 %639, ptr %14, align 4, !tbaa !9
  %640 = load ptr, ptr %16, align 8, !tbaa !5
  %641 = getelementptr inbounds %struct.decorr_pass, ptr %640, i32 0, i32 4
  %642 = load i32, ptr %24, align 4, !tbaa !9
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds [8 x i32], ptr %641, i64 0, i64 %643
  store i32 %639, ptr %644, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  br label %645

645:                                              ; preds = %638
  %646 = load ptr, ptr %16, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.decorr_pass, ptr %646, i32 1
  store ptr %647, ptr %16, align 8, !tbaa !5
  br label %520, !llvm.loop !48

648:                                              ; preds = %520
  %649 = load i32, ptr %18, align 4, !tbaa !9
  %650 = add nsw i32 %649, 1
  %651 = and i32 %650, 7
  store i32 %651, ptr %18, align 4, !tbaa !9
  %652 = load i32, ptr %9, align 4, !tbaa !9
  %653 = and i32 %652, 64
  %654 = icmp ne i32 %653, 0
  br i1 %654, label %655, label %768

655:                                              ; preds = %648
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  %656 = load ptr, ptr %8, align 8, !tbaa !5
  %657 = getelementptr inbounds %struct.WavpackStream, ptr %656, i32 0, i32 39
  %658 = getelementptr inbounds %struct.anon, ptr %657, i32 0, i32 1
  %659 = getelementptr inbounds [2 x i32], ptr %658, i64 0, i64 0
  %660 = load i32, ptr %659, align 8, !tbaa !9
  %661 = load ptr, ptr %8, align 8, !tbaa !5
  %662 = getelementptr inbounds %struct.WavpackStream, ptr %661, i32 0, i32 39
  %663 = getelementptr inbounds %struct.anon, ptr %662, i32 0, i32 0
  %664 = getelementptr inbounds [2 x i32], ptr %663, i64 0, i64 0
  %665 = load i32, ptr %664, align 8, !tbaa !9
  %666 = add nsw i32 %665, %660
  store i32 %666, ptr %664, align 8, !tbaa !9
  %667 = ashr i32 %666, 16
  store i32 %667, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  %668 = load ptr, ptr %8, align 8, !tbaa !5
  %669 = getelementptr inbounds %struct.WavpackStream, ptr %668, i32 0, i32 39
  %670 = getelementptr inbounds %struct.anon, ptr %669, i32 0, i32 2
  %671 = getelementptr inbounds [2 x i32], ptr %670, i64 0, i64 0
  %672 = load i32, ptr %671, align 8, !tbaa !9
  %673 = load ptr, ptr %8, align 8, !tbaa !5
  %674 = getelementptr inbounds %struct.WavpackStream, ptr %673, i32 0, i32 39
  %675 = getelementptr inbounds %struct.anon, ptr %674, i32 0, i32 2
  %676 = getelementptr inbounds [2 x i32], ptr %675, i64 0, i64 0
  %677 = load i32, ptr %676, align 8, !tbaa !9
  %678 = trunc i32 %677 to i16
  %679 = sext i16 %678 to i32
  %680 = icmp ne i32 %672, %679
  br i1 %680, label %681, label %703

681:                                              ; preds = %655
  %682 = load ptr, ptr %8, align 8, !tbaa !5
  %683 = getelementptr inbounds %struct.WavpackStream, ptr %682, i32 0, i32 39
  %684 = getelementptr inbounds %struct.anon, ptr %683, i32 0, i32 2
  %685 = getelementptr inbounds [2 x i32], ptr %684, i64 0, i64 0
  %686 = load i32, ptr %685, align 8, !tbaa !9
  %687 = and i32 %686, 65535
  %688 = load i32, ptr %26, align 4, !tbaa !9
  %689 = mul nsw i32 %687, %688
  %690 = ashr i32 %689, 9
  %691 = load ptr, ptr %8, align 8, !tbaa !5
  %692 = getelementptr inbounds %struct.WavpackStream, ptr %691, i32 0, i32 39
  %693 = getelementptr inbounds %struct.anon, ptr %692, i32 0, i32 2
  %694 = getelementptr inbounds [2 x i32], ptr %693, i64 0, i64 0
  %695 = load i32, ptr %694, align 8, !tbaa !9
  %696 = and i32 %695, -65536
  %697 = ashr i32 %696, 9
  %698 = load i32, ptr %26, align 4, !tbaa !9
  %699 = mul nsw i32 %697, %698
  %700 = add nsw i32 %690, %699
  %701 = add nsw i32 %700, 1
  %702 = ashr i32 %701, 1
  br label %713

703:                                              ; preds = %655
  %704 = load i32, ptr %26, align 4, !tbaa !9
  %705 = load ptr, ptr %8, align 8, !tbaa !5
  %706 = getelementptr inbounds %struct.WavpackStream, ptr %705, i32 0, i32 39
  %707 = getelementptr inbounds %struct.anon, ptr %706, i32 0, i32 2
  %708 = getelementptr inbounds [2 x i32], ptr %707, i64 0, i64 0
  %709 = load i32, ptr %708, align 8, !tbaa !9
  %710 = mul nsw i32 %704, %709
  %711 = add nsw i32 %710, 512
  %712 = ashr i32 %711, 10
  br label %713

713:                                              ; preds = %703, %681
  %714 = phi i32 [ %702, %681 ], [ %712, %703 ]
  %715 = sub nsw i32 0, %714
  store i32 %715, ptr %27, align 4, !tbaa !9
  %716 = load i32, ptr %9, align 4, !tbaa !9
  %717 = and i32 %716, 536870912
  %718 = icmp ne i32 %717, 0
  br i1 %718, label %719, label %753

719:                                              ; preds = %713
  %720 = load i32, ptr %26, align 4, !tbaa !9
  %721 = icmp slt i32 %720, 0
  br i1 %721, label %722, label %753

722:                                              ; preds = %719
  %723 = load i32, ptr %27, align 4, !tbaa !9
  %724 = icmp ne i32 %723, 0
  br i1 %724, label %725, label %753

725:                                              ; preds = %722
  %726 = load i32, ptr %27, align 4, !tbaa !9
  %727 = load ptr, ptr %8, align 8, !tbaa !5
  %728 = getelementptr inbounds %struct.WavpackStream, ptr %727, i32 0, i32 39
  %729 = getelementptr inbounds %struct.anon, ptr %728, i32 0, i32 2
  %730 = getelementptr inbounds [2 x i32], ptr %729, i64 0, i64 0
  %731 = load i32, ptr %730, align 8, !tbaa !9
  %732 = icmp eq i32 %726, %731
  br i1 %732, label %733, label %744

733:                                              ; preds = %725
  %734 = load i32, ptr %27, align 4, !tbaa !9
  %735 = icmp slt i32 %734, 0
  br i1 %735, label %736, label %739

736:                                              ; preds = %733
  %737 = load i32, ptr %27, align 4, !tbaa !9
  %738 = add nsw i32 %737, 1
  br label %742

739:                                              ; preds = %733
  %740 = load i32, ptr %27, align 4, !tbaa !9
  %741 = sub nsw i32 %740, 1
  br label %742

742:                                              ; preds = %739, %736
  %743 = phi i32 [ %738, %736 ], [ %741, %739 ]
  store i32 %743, ptr %27, align 4, !tbaa !9
  br label %744

744:                                              ; preds = %742, %725
  %745 = load i32, ptr %27, align 4, !tbaa !9
  %746 = getelementptr inbounds [2 x i32], ptr %13, i64 0, i64 0
  %747 = load i32, ptr %746, align 4, !tbaa !9
  %748 = sub nsw i32 %745, %747
  %749 = load ptr, ptr %8, align 8, !tbaa !5
  %750 = getelementptr inbounds %struct.WavpackStream, ptr %749, i32 0, i32 39
  %751 = getelementptr inbounds %struct.anon, ptr %750, i32 0, i32 2
  %752 = getelementptr inbounds [2 x i32], ptr %751, i64 0, i64 0
  store i32 %748, ptr %752, align 8, !tbaa !9
  br label %761

753:                                              ; preds = %722, %719, %713
  %754 = getelementptr inbounds [2 x i32], ptr %13, i64 0, i64 0
  %755 = load i32, ptr %754, align 4, !tbaa !9
  %756 = sub nsw i32 0, %755
  %757 = load ptr, ptr %8, align 8, !tbaa !5
  %758 = getelementptr inbounds %struct.WavpackStream, ptr %757, i32 0, i32 39
  %759 = getelementptr inbounds %struct.anon, ptr %758, i32 0, i32 2
  %760 = getelementptr inbounds [2 x i32], ptr %759, i64 0, i64 0
  store i32 %756, ptr %760, align 8, !tbaa !9
  br label %761

761:                                              ; preds = %753, %744
  %762 = getelementptr inbounds [2 x i32], ptr %13, i64 0, i64 0
  %763 = load i32, ptr %762, align 4, !tbaa !9
  %764 = load i32, ptr %27, align 4, !tbaa !9
  %765 = sub nsw i32 %763, %764
  %766 = load i32, ptr %14, align 4, !tbaa !9
  %767 = add nsw i32 %766, %765
  store i32 %767, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  br label %773

768:                                              ; preds = %648
  %769 = getelementptr inbounds [2 x i32], ptr %13, i64 0, i64 0
  %770 = load i32, ptr %769, align 4, !tbaa !9
  %771 = load i32, ptr %14, align 4, !tbaa !9
  %772 = add nsw i32 %771, %770
  store i32 %772, ptr %14, align 4, !tbaa !9
  br label %773

773:                                              ; preds = %768, %761
  %774 = load i32, ptr %10, align 4, !tbaa !9
  %775 = shl i32 %774, 1
  %776 = load i32, ptr %14, align 4, !tbaa !9
  %777 = add i32 %775, %776
  %778 = load i32, ptr %10, align 4, !tbaa !9
  %779 = add i32 %778, %777
  store i32 %779, ptr %10, align 4, !tbaa !9
  %780 = load i32, ptr %14, align 4, !tbaa !9
  %781 = sext i32 %780 to i64
  %782 = call i64 @llvm.abs.i64(i64 %781, i1 true)
  %783 = load i32, ptr %12, align 4, !tbaa !9
  %784 = sext i32 %783 to i64
  %785 = icmp sgt i64 %782, %784
  br i1 %785, label %786, label %787

786:                                              ; preds = %773
  br label %794

787:                                              ; preds = %773
  %788 = load i32, ptr %14, align 4, !tbaa !9
  %789 = load ptr, ptr %15, align 8, !tbaa !5
  %790 = getelementptr inbounds i32, ptr %789, i32 1
  store ptr %790, ptr %15, align 8, !tbaa !5
  store i32 %788, ptr %789, align 4, !tbaa !9
  br label %791

791:                                              ; preds = %787
  %792 = load i32, ptr %11, align 4, !tbaa !9
  %793 = add i32 %792, 1
  store i32 %793, ptr %11, align 4, !tbaa !9
  br label %503, !llvm.loop !49

794:                                              ; preds = %786, %512, %503
  br label %2161

795:                                              ; preds = %497, %493
  %796 = load ptr, ptr %8, align 8, !tbaa !5
  %797 = getelementptr inbounds %struct.WavpackStream, ptr %796, i32 0, i32 4
  %798 = load ptr, ptr %797, align 8, !tbaa !34
  %799 = icmp ne ptr %798, null
  br i1 %799, label %800, label %2159

800:                                              ; preds = %795
  %801 = load i32, ptr %9, align 4, !tbaa !9
  %802 = and i32 %801, 1073741828
  %803 = icmp ne i32 %802, 0
  br i1 %803, label %2159, label %804

804:                                              ; preds = %800
  %805 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %805, ptr %15, align 8, !tbaa !5
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %806

806:                                              ; preds = %2155, %804
  %807 = load i32, ptr %11, align 4, !tbaa !9
  %808 = load i32, ptr %7, align 4, !tbaa !9
  %809 = icmp ult i32 %807, %808
  br i1 %809, label %810, label %2158

810:                                              ; preds = %806
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #6
  store i32 0, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  store i32 0, ptr %33, align 4, !tbaa !9
  %811 = load ptr, ptr %8, align 8, !tbaa !5
  %812 = getelementptr inbounds [2 x i32], ptr %13, i64 0, i64 0
  %813 = call i32 @get_word(ptr noundef %811, i32 noundef 0, ptr noundef %812)
  store i32 %813, ptr %28, align 4, !tbaa !9
  %814 = icmp eq i32 %813, -2147483648
  br i1 %814, label %821, label %815

815:                                              ; preds = %810
  %816 = load ptr, ptr %8, align 8, !tbaa !5
  %817 = getelementptr inbounds [2 x i32], ptr %13, i64 0, i64 0
  %818 = getelementptr inbounds i32, ptr %817, i64 1
  %819 = call i32 @get_word(ptr noundef %816, i32 noundef 1, ptr noundef %818)
  store i32 %819, ptr %29, align 4, !tbaa !9
  %820 = icmp eq i32 %819, -2147483648
  br i1 %820, label %821, label %822

821:                                              ; preds = %815, %810
  store i32 32, ptr %19, align 4
  br label %2152

822:                                              ; preds = %815
  %823 = load i32, ptr %9, align 4, !tbaa !9
  %824 = and i32 %823, 32
  %825 = icmp ne i32 %824, 0
  br i1 %825, label %826, label %1241

826:                                              ; preds = %822
  %827 = load i32, ptr %28, align 4, !tbaa !9
  %828 = getelementptr inbounds [2 x i32], ptr %13, i64 0, i64 0
  %829 = load i32, ptr %828, align 4, !tbaa !9
  %830 = add nsw i32 %827, %829
  store i32 %830, ptr %32, align 4, !tbaa !9
  %831 = load i32, ptr %29, align 4, !tbaa !9
  %832 = getelementptr inbounds [2 x i32], ptr %13, i64 0, i64 1
  %833 = load i32, ptr %832, align 4, !tbaa !9
  %834 = add nsw i32 %831, %833
  store i32 %834, ptr %33, align 4, !tbaa !9
  %835 = load ptr, ptr %8, align 8, !tbaa !5
  %836 = getelementptr inbounds %struct.WavpackStream, ptr %835, i32 0, i32 10
  %837 = load i32, ptr %836, align 4, !tbaa !37
  store i32 %837, ptr %17, align 4, !tbaa !9
  %838 = load ptr, ptr %8, align 8, !tbaa !5
  %839 = getelementptr inbounds %struct.WavpackStream, ptr %838, i32 0, i32 40
  %840 = getelementptr inbounds [16 x %struct.decorr_pass], ptr %839, i64 0, i64 0
  store ptr %840, ptr %16, align 8, !tbaa !5
  br label %841

841:                                              ; preds = %1226, %826
  %842 = load i32, ptr %17, align 4, !tbaa !9
  %843 = add nsw i32 %842, -1
  store i32 %843, ptr %17, align 4, !tbaa !9
  %844 = icmp ne i32 %842, 0
  br i1 %844, label %845, label %1229

845:                                              ; preds = %841
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  %846 = load ptr, ptr %16, align 8, !tbaa !5
  %847 = getelementptr inbounds %struct.decorr_pass, ptr %846, i32 0, i32 0
  %848 = load i32, ptr %847, align 4, !tbaa !45
  %849 = icmp sgt i32 %848, 0
  br i1 %849, label %850, label %990

850:                                              ; preds = %845
  %851 = load ptr, ptr %16, align 8, !tbaa !5
  %852 = getelementptr inbounds %struct.decorr_pass, ptr %851, i32 0, i32 0
  %853 = load i32, ptr %852, align 4, !tbaa !45
  %854 = icmp sgt i32 %853, 8
  br i1 %854, label %855, label %906

855:                                              ; preds = %850
  %856 = load ptr, ptr %16, align 8, !tbaa !5
  %857 = getelementptr inbounds %struct.decorr_pass, ptr %856, i32 0, i32 0
  %858 = load i32, ptr %857, align 4, !tbaa !45
  %859 = and i32 %858, 1
  %860 = icmp ne i32 %859, 0
  br i1 %860, label %861, label %882

861:                                              ; preds = %855
  %862 = load ptr, ptr %16, align 8, !tbaa !5
  %863 = getelementptr inbounds %struct.decorr_pass, ptr %862, i32 0, i32 4
  %864 = getelementptr inbounds [8 x i32], ptr %863, i64 0, i64 0
  %865 = load i32, ptr %864, align 4, !tbaa !9
  %866 = mul nsw i32 2, %865
  %867 = load ptr, ptr %16, align 8, !tbaa !5
  %868 = getelementptr inbounds %struct.decorr_pass, ptr %867, i32 0, i32 4
  %869 = getelementptr inbounds [8 x i32], ptr %868, i64 0, i64 1
  %870 = load i32, ptr %869, align 4, !tbaa !9
  %871 = sub nsw i32 %866, %870
  store i32 %871, ptr %34, align 4, !tbaa !9
  %872 = load ptr, ptr %16, align 8, !tbaa !5
  %873 = getelementptr inbounds %struct.decorr_pass, ptr %872, i32 0, i32 5
  %874 = getelementptr inbounds [8 x i32], ptr %873, i64 0, i64 0
  %875 = load i32, ptr %874, align 4, !tbaa !9
  %876 = mul nsw i32 2, %875
  %877 = load ptr, ptr %16, align 8, !tbaa !5
  %878 = getelementptr inbounds %struct.decorr_pass, ptr %877, i32 0, i32 5
  %879 = getelementptr inbounds [8 x i32], ptr %878, i64 0, i64 1
  %880 = load i32, ptr %879, align 4, !tbaa !9
  %881 = sub nsw i32 %876, %880
  store i32 %881, ptr %35, align 4, !tbaa !9
  br label %905

882:                                              ; preds = %855
  %883 = load ptr, ptr %16, align 8, !tbaa !5
  %884 = getelementptr inbounds %struct.decorr_pass, ptr %883, i32 0, i32 4
  %885 = getelementptr inbounds [8 x i32], ptr %884, i64 0, i64 0
  %886 = load i32, ptr %885, align 4, !tbaa !9
  %887 = mul nsw i32 3, %886
  %888 = load ptr, ptr %16, align 8, !tbaa !5
  %889 = getelementptr inbounds %struct.decorr_pass, ptr %888, i32 0, i32 4
  %890 = getelementptr inbounds [8 x i32], ptr %889, i64 0, i64 1
  %891 = load i32, ptr %890, align 4, !tbaa !9
  %892 = sub nsw i32 %887, %891
  %893 = ashr i32 %892, 1
  store i32 %893, ptr %34, align 4, !tbaa !9
  %894 = load ptr, ptr %16, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.decorr_pass, ptr %894, i32 0, i32 5
  %896 = getelementptr inbounds [8 x i32], ptr %895, i64 0, i64 0
  %897 = load i32, ptr %896, align 4, !tbaa !9
  %898 = mul nsw i32 3, %897
  %899 = load ptr, ptr %16, align 8, !tbaa !5
  %900 = getelementptr inbounds %struct.decorr_pass, ptr %899, i32 0, i32 5
  %901 = getelementptr inbounds [8 x i32], ptr %900, i64 0, i64 1
  %902 = load i32, ptr %901, align 4, !tbaa !9
  %903 = sub nsw i32 %898, %902
  %904 = ashr i32 %903, 1
  store i32 %904, ptr %35, align 4, !tbaa !9
  br label %905

905:                                              ; preds = %882, %861
  br label %919

906:                                              ; preds = %850
  %907 = load ptr, ptr %16, align 8, !tbaa !5
  %908 = getelementptr inbounds %struct.decorr_pass, ptr %907, i32 0, i32 4
  %909 = load i32, ptr %18, align 4, !tbaa !9
  %910 = sext i32 %909 to i64
  %911 = getelementptr inbounds [8 x i32], ptr %908, i64 0, i64 %910
  %912 = load i32, ptr %911, align 4, !tbaa !9
  store i32 %912, ptr %34, align 4, !tbaa !9
  %913 = load ptr, ptr %16, align 8, !tbaa !5
  %914 = getelementptr inbounds %struct.decorr_pass, ptr %913, i32 0, i32 5
  %915 = load i32, ptr %18, align 4, !tbaa !9
  %916 = sext i32 %915 to i64
  %917 = getelementptr inbounds [8 x i32], ptr %914, i64 0, i64 %916
  %918 = load i32, ptr %917, align 4, !tbaa !9
  store i32 %918, ptr %35, align 4, !tbaa !9
  br label %919

919:                                              ; preds = %906, %905
  %920 = load i32, ptr %34, align 4, !tbaa !9
  %921 = load i32, ptr %34, align 4, !tbaa !9
  %922 = trunc i32 %921 to i16
  %923 = sext i16 %922 to i32
  %924 = icmp ne i32 %920, %923
  br i1 %924, label %925, label %943

925:                                              ; preds = %919
  %926 = load i32, ptr %34, align 4, !tbaa !9
  %927 = and i32 %926, 65535
  %928 = load ptr, ptr %16, align 8, !tbaa !5
  %929 = getelementptr inbounds %struct.decorr_pass, ptr %928, i32 0, i32 2
  %930 = load i32, ptr %929, align 4, !tbaa !46
  %931 = mul nsw i32 %927, %930
  %932 = ashr i32 %931, 9
  %933 = load i32, ptr %34, align 4, !tbaa !9
  %934 = and i32 %933, -65536
  %935 = ashr i32 %934, 9
  %936 = load ptr, ptr %16, align 8, !tbaa !5
  %937 = getelementptr inbounds %struct.decorr_pass, ptr %936, i32 0, i32 2
  %938 = load i32, ptr %937, align 4, !tbaa !46
  %939 = mul nsw i32 %935, %938
  %940 = add nsw i32 %932, %939
  %941 = add nsw i32 %940, 1
  %942 = ashr i32 %941, 1
  br label %951

943:                                              ; preds = %919
  %944 = load ptr, ptr %16, align 8, !tbaa !5
  %945 = getelementptr inbounds %struct.decorr_pass, ptr %944, i32 0, i32 2
  %946 = load i32, ptr %945, align 4, !tbaa !46
  %947 = load i32, ptr %34, align 4, !tbaa !9
  %948 = mul nsw i32 %946, %947
  %949 = add nsw i32 %948, 512
  %950 = ashr i32 %949, 10
  br label %951

951:                                              ; preds = %943, %925
  %952 = phi i32 [ %942, %925 ], [ %950, %943 ]
  %953 = load i32, ptr %32, align 4, !tbaa !9
  %954 = add nsw i32 %953, %952
  store i32 %954, ptr %32, align 4, !tbaa !9
  %955 = load i32, ptr %35, align 4, !tbaa !9
  %956 = load i32, ptr %35, align 4, !tbaa !9
  %957 = trunc i32 %956 to i16
  %958 = sext i16 %957 to i32
  %959 = icmp ne i32 %955, %958
  br i1 %959, label %960, label %978

960:                                              ; preds = %951
  %961 = load i32, ptr %35, align 4, !tbaa !9
  %962 = and i32 %961, 65535
  %963 = load ptr, ptr %16, align 8, !tbaa !5
  %964 = getelementptr inbounds %struct.decorr_pass, ptr %963, i32 0, i32 3
  %965 = load i32, ptr %964, align 4, !tbaa !50
  %966 = mul nsw i32 %962, %965
  %967 = ashr i32 %966, 9
  %968 = load i32, ptr %35, align 4, !tbaa !9
  %969 = and i32 %968, -65536
  %970 = ashr i32 %969, 9
  %971 = load ptr, ptr %16, align 8, !tbaa !5
  %972 = getelementptr inbounds %struct.decorr_pass, ptr %971, i32 0, i32 3
  %973 = load i32, ptr %972, align 4, !tbaa !50
  %974 = mul nsw i32 %970, %973
  %975 = add nsw i32 %967, %974
  %976 = add nsw i32 %975, 1
  %977 = ashr i32 %976, 1
  br label %986

978:                                              ; preds = %951
  %979 = load ptr, ptr %16, align 8, !tbaa !5
  %980 = getelementptr inbounds %struct.decorr_pass, ptr %979, i32 0, i32 3
  %981 = load i32, ptr %980, align 4, !tbaa !50
  %982 = load i32, ptr %35, align 4, !tbaa !9
  %983 = mul nsw i32 %981, %982
  %984 = add nsw i32 %983, 512
  %985 = ashr i32 %984, 10
  br label %986

986:                                              ; preds = %978, %960
  %987 = phi i32 [ %977, %960 ], [ %985, %978 ]
  %988 = load i32, ptr %33, align 4, !tbaa !9
  %989 = add nsw i32 %988, %987
  store i32 %989, ptr %33, align 4, !tbaa !9
  br label %1225

990:                                              ; preds = %845
  %991 = load ptr, ptr %16, align 8, !tbaa !5
  %992 = getelementptr inbounds %struct.decorr_pass, ptr %991, i32 0, i32 0
  %993 = load i32, ptr %992, align 4, !tbaa !45
  %994 = icmp eq i32 %993, -1
  br i1 %994, label %995, label %1081

995:                                              ; preds = %990
  %996 = load ptr, ptr %16, align 8, !tbaa !5
  %997 = getelementptr inbounds %struct.decorr_pass, ptr %996, i32 0, i32 4
  %998 = getelementptr inbounds [8 x i32], ptr %997, i64 0, i64 0
  %999 = load i32, ptr %998, align 4, !tbaa !9
  %1000 = load ptr, ptr %16, align 8, !tbaa !5
  %1001 = getelementptr inbounds %struct.decorr_pass, ptr %1000, i32 0, i32 4
  %1002 = getelementptr inbounds [8 x i32], ptr %1001, i64 0, i64 0
  %1003 = load i32, ptr %1002, align 4, !tbaa !9
  %1004 = trunc i32 %1003 to i16
  %1005 = sext i16 %1004 to i32
  %1006 = icmp ne i32 %999, %1005
  br i1 %1006, label %1007, label %1031

1007:                                             ; preds = %995
  %1008 = load ptr, ptr %16, align 8, !tbaa !5
  %1009 = getelementptr inbounds %struct.decorr_pass, ptr %1008, i32 0, i32 4
  %1010 = getelementptr inbounds [8 x i32], ptr %1009, i64 0, i64 0
  %1011 = load i32, ptr %1010, align 4, !tbaa !9
  %1012 = and i32 %1011, 65535
  %1013 = load ptr, ptr %16, align 8, !tbaa !5
  %1014 = getelementptr inbounds %struct.decorr_pass, ptr %1013, i32 0, i32 2
  %1015 = load i32, ptr %1014, align 4, !tbaa !46
  %1016 = mul nsw i32 %1012, %1015
  %1017 = ashr i32 %1016, 9
  %1018 = load ptr, ptr %16, align 8, !tbaa !5
  %1019 = getelementptr inbounds %struct.decorr_pass, ptr %1018, i32 0, i32 4
  %1020 = getelementptr inbounds [8 x i32], ptr %1019, i64 0, i64 0
  %1021 = load i32, ptr %1020, align 4, !tbaa !9
  %1022 = and i32 %1021, -65536
  %1023 = ashr i32 %1022, 9
  %1024 = load ptr, ptr %16, align 8, !tbaa !5
  %1025 = getelementptr inbounds %struct.decorr_pass, ptr %1024, i32 0, i32 2
  %1026 = load i32, ptr %1025, align 4, !tbaa !46
  %1027 = mul nsw i32 %1023, %1026
  %1028 = add nsw i32 %1017, %1027
  %1029 = add nsw i32 %1028, 1
  %1030 = ashr i32 %1029, 1
  br label %1042

1031:                                             ; preds = %995
  %1032 = load ptr, ptr %16, align 8, !tbaa !5
  %1033 = getelementptr inbounds %struct.decorr_pass, ptr %1032, i32 0, i32 2
  %1034 = load i32, ptr %1033, align 4, !tbaa !46
  %1035 = load ptr, ptr %16, align 8, !tbaa !5
  %1036 = getelementptr inbounds %struct.decorr_pass, ptr %1035, i32 0, i32 4
  %1037 = getelementptr inbounds [8 x i32], ptr %1036, i64 0, i64 0
  %1038 = load i32, ptr %1037, align 4, !tbaa !9
  %1039 = mul nsw i32 %1034, %1038
  %1040 = add nsw i32 %1039, 512
  %1041 = ashr i32 %1040, 10
  br label %1042

1042:                                             ; preds = %1031, %1007
  %1043 = phi i32 [ %1030, %1007 ], [ %1041, %1031 ]
  %1044 = load i32, ptr %32, align 4, !tbaa !9
  %1045 = add nsw i32 %1044, %1043
  store i32 %1045, ptr %32, align 4, !tbaa !9
  %1046 = load i32, ptr %32, align 4, !tbaa !9
  %1047 = load i32, ptr %32, align 4, !tbaa !9
  %1048 = trunc i32 %1047 to i16
  %1049 = sext i16 %1048 to i32
  %1050 = icmp ne i32 %1046, %1049
  br i1 %1050, label %1051, label %1069

1051:                                             ; preds = %1042
  %1052 = load i32, ptr %32, align 4, !tbaa !9
  %1053 = and i32 %1052, 65535
  %1054 = load ptr, ptr %16, align 8, !tbaa !5
  %1055 = getelementptr inbounds %struct.decorr_pass, ptr %1054, i32 0, i32 3
  %1056 = load i32, ptr %1055, align 4, !tbaa !50
  %1057 = mul nsw i32 %1053, %1056
  %1058 = ashr i32 %1057, 9
  %1059 = load i32, ptr %32, align 4, !tbaa !9
  %1060 = and i32 %1059, -65536
  %1061 = ashr i32 %1060, 9
  %1062 = load ptr, ptr %16, align 8, !tbaa !5
  %1063 = getelementptr inbounds %struct.decorr_pass, ptr %1062, i32 0, i32 3
  %1064 = load i32, ptr %1063, align 4, !tbaa !50
  %1065 = mul nsw i32 %1061, %1064
  %1066 = add nsw i32 %1058, %1065
  %1067 = add nsw i32 %1066, 1
  %1068 = ashr i32 %1067, 1
  br label %1077

1069:                                             ; preds = %1042
  %1070 = load ptr, ptr %16, align 8, !tbaa !5
  %1071 = getelementptr inbounds %struct.decorr_pass, ptr %1070, i32 0, i32 3
  %1072 = load i32, ptr %1071, align 4, !tbaa !50
  %1073 = load i32, ptr %32, align 4, !tbaa !9
  %1074 = mul nsw i32 %1072, %1073
  %1075 = add nsw i32 %1074, 512
  %1076 = ashr i32 %1075, 10
  br label %1077

1077:                                             ; preds = %1069, %1051
  %1078 = phi i32 [ %1068, %1051 ], [ %1076, %1069 ]
  %1079 = load i32, ptr %33, align 4, !tbaa !9
  %1080 = add nsw i32 %1079, %1078
  store i32 %1080, ptr %33, align 4, !tbaa !9
  br label %1224

1081:                                             ; preds = %990
  %1082 = load ptr, ptr %16, align 8, !tbaa !5
  %1083 = getelementptr inbounds %struct.decorr_pass, ptr %1082, i32 0, i32 5
  %1084 = getelementptr inbounds [8 x i32], ptr %1083, i64 0, i64 0
  %1085 = load i32, ptr %1084, align 4, !tbaa !9
  %1086 = load ptr, ptr %16, align 8, !tbaa !5
  %1087 = getelementptr inbounds %struct.decorr_pass, ptr %1086, i32 0, i32 5
  %1088 = getelementptr inbounds [8 x i32], ptr %1087, i64 0, i64 0
  %1089 = load i32, ptr %1088, align 4, !tbaa !9
  %1090 = trunc i32 %1089 to i16
  %1091 = sext i16 %1090 to i32
  %1092 = icmp ne i32 %1085, %1091
  br i1 %1092, label %1093, label %1117

1093:                                             ; preds = %1081
  %1094 = load ptr, ptr %16, align 8, !tbaa !5
  %1095 = getelementptr inbounds %struct.decorr_pass, ptr %1094, i32 0, i32 5
  %1096 = getelementptr inbounds [8 x i32], ptr %1095, i64 0, i64 0
  %1097 = load i32, ptr %1096, align 4, !tbaa !9
  %1098 = and i32 %1097, 65535
  %1099 = load ptr, ptr %16, align 8, !tbaa !5
  %1100 = getelementptr inbounds %struct.decorr_pass, ptr %1099, i32 0, i32 3
  %1101 = load i32, ptr %1100, align 4, !tbaa !50
  %1102 = mul nsw i32 %1098, %1101
  %1103 = ashr i32 %1102, 9
  %1104 = load ptr, ptr %16, align 8, !tbaa !5
  %1105 = getelementptr inbounds %struct.decorr_pass, ptr %1104, i32 0, i32 5
  %1106 = getelementptr inbounds [8 x i32], ptr %1105, i64 0, i64 0
  %1107 = load i32, ptr %1106, align 4, !tbaa !9
  %1108 = and i32 %1107, -65536
  %1109 = ashr i32 %1108, 9
  %1110 = load ptr, ptr %16, align 8, !tbaa !5
  %1111 = getelementptr inbounds %struct.decorr_pass, ptr %1110, i32 0, i32 3
  %1112 = load i32, ptr %1111, align 4, !tbaa !50
  %1113 = mul nsw i32 %1109, %1112
  %1114 = add nsw i32 %1103, %1113
  %1115 = add nsw i32 %1114, 1
  %1116 = ashr i32 %1115, 1
  br label %1128

1117:                                             ; preds = %1081
  %1118 = load ptr, ptr %16, align 8, !tbaa !5
  %1119 = getelementptr inbounds %struct.decorr_pass, ptr %1118, i32 0, i32 3
  %1120 = load i32, ptr %1119, align 4, !tbaa !50
  %1121 = load ptr, ptr %16, align 8, !tbaa !5
  %1122 = getelementptr inbounds %struct.decorr_pass, ptr %1121, i32 0, i32 5
  %1123 = getelementptr inbounds [8 x i32], ptr %1122, i64 0, i64 0
  %1124 = load i32, ptr %1123, align 4, !tbaa !9
  %1125 = mul nsw i32 %1120, %1124
  %1126 = add nsw i32 %1125, 512
  %1127 = ashr i32 %1126, 10
  br label %1128

1128:                                             ; preds = %1117, %1093
  %1129 = phi i32 [ %1116, %1093 ], [ %1127, %1117 ]
  %1130 = load i32, ptr %33, align 4, !tbaa !9
  %1131 = add nsw i32 %1130, %1129
  store i32 %1131, ptr %33, align 4, !tbaa !9
  %1132 = load ptr, ptr %16, align 8, !tbaa !5
  %1133 = getelementptr inbounds %struct.decorr_pass, ptr %1132, i32 0, i32 0
  %1134 = load i32, ptr %1133, align 4, !tbaa !45
  %1135 = icmp eq i32 %1134, -3
  br i1 %1135, label %1136, label %1187

1136:                                             ; preds = %1128
  %1137 = load ptr, ptr %16, align 8, !tbaa !5
  %1138 = getelementptr inbounds %struct.decorr_pass, ptr %1137, i32 0, i32 4
  %1139 = getelementptr inbounds [8 x i32], ptr %1138, i64 0, i64 0
  %1140 = load i32, ptr %1139, align 4, !tbaa !9
  %1141 = load ptr, ptr %16, align 8, !tbaa !5
  %1142 = getelementptr inbounds %struct.decorr_pass, ptr %1141, i32 0, i32 4
  %1143 = getelementptr inbounds [8 x i32], ptr %1142, i64 0, i64 0
  %1144 = load i32, ptr %1143, align 4, !tbaa !9
  %1145 = trunc i32 %1144 to i16
  %1146 = sext i16 %1145 to i32
  %1147 = icmp ne i32 %1140, %1146
  br i1 %1147, label %1148, label %1172

1148:                                             ; preds = %1136
  %1149 = load ptr, ptr %16, align 8, !tbaa !5
  %1150 = getelementptr inbounds %struct.decorr_pass, ptr %1149, i32 0, i32 4
  %1151 = getelementptr inbounds [8 x i32], ptr %1150, i64 0, i64 0
  %1152 = load i32, ptr %1151, align 4, !tbaa !9
  %1153 = and i32 %1152, 65535
  %1154 = load ptr, ptr %16, align 8, !tbaa !5
  %1155 = getelementptr inbounds %struct.decorr_pass, ptr %1154, i32 0, i32 2
  %1156 = load i32, ptr %1155, align 4, !tbaa !46
  %1157 = mul nsw i32 %1153, %1156
  %1158 = ashr i32 %1157, 9
  %1159 = load ptr, ptr %16, align 8, !tbaa !5
  %1160 = getelementptr inbounds %struct.decorr_pass, ptr %1159, i32 0, i32 4
  %1161 = getelementptr inbounds [8 x i32], ptr %1160, i64 0, i64 0
  %1162 = load i32, ptr %1161, align 4, !tbaa !9
  %1163 = and i32 %1162, -65536
  %1164 = ashr i32 %1163, 9
  %1165 = load ptr, ptr %16, align 8, !tbaa !5
  %1166 = getelementptr inbounds %struct.decorr_pass, ptr %1165, i32 0, i32 2
  %1167 = load i32, ptr %1166, align 4, !tbaa !46
  %1168 = mul nsw i32 %1164, %1167
  %1169 = add nsw i32 %1158, %1168
  %1170 = add nsw i32 %1169, 1
  %1171 = ashr i32 %1170, 1
  br label %1183

1172:                                             ; preds = %1136
  %1173 = load ptr, ptr %16, align 8, !tbaa !5
  %1174 = getelementptr inbounds %struct.decorr_pass, ptr %1173, i32 0, i32 2
  %1175 = load i32, ptr %1174, align 4, !tbaa !46
  %1176 = load ptr, ptr %16, align 8, !tbaa !5
  %1177 = getelementptr inbounds %struct.decorr_pass, ptr %1176, i32 0, i32 4
  %1178 = getelementptr inbounds [8 x i32], ptr %1177, i64 0, i64 0
  %1179 = load i32, ptr %1178, align 4, !tbaa !9
  %1180 = mul nsw i32 %1175, %1179
  %1181 = add nsw i32 %1180, 512
  %1182 = ashr i32 %1181, 10
  br label %1183

1183:                                             ; preds = %1172, %1148
  %1184 = phi i32 [ %1171, %1148 ], [ %1182, %1172 ]
  %1185 = load i32, ptr %32, align 4, !tbaa !9
  %1186 = add nsw i32 %1185, %1184
  store i32 %1186, ptr %32, align 4, !tbaa !9
  br label %1223

1187:                                             ; preds = %1128
  %1188 = load i32, ptr %33, align 4, !tbaa !9
  %1189 = load i32, ptr %33, align 4, !tbaa !9
  %1190 = trunc i32 %1189 to i16
  %1191 = sext i16 %1190 to i32
  %1192 = icmp ne i32 %1188, %1191
  br i1 %1192, label %1193, label %1211

1193:                                             ; preds = %1187
  %1194 = load i32, ptr %33, align 4, !tbaa !9
  %1195 = and i32 %1194, 65535
  %1196 = load ptr, ptr %16, align 8, !tbaa !5
  %1197 = getelementptr inbounds %struct.decorr_pass, ptr %1196, i32 0, i32 2
  %1198 = load i32, ptr %1197, align 4, !tbaa !46
  %1199 = mul nsw i32 %1195, %1198
  %1200 = ashr i32 %1199, 9
  %1201 = load i32, ptr %33, align 4, !tbaa !9
  %1202 = and i32 %1201, -65536
  %1203 = ashr i32 %1202, 9
  %1204 = load ptr, ptr %16, align 8, !tbaa !5
  %1205 = getelementptr inbounds %struct.decorr_pass, ptr %1204, i32 0, i32 2
  %1206 = load i32, ptr %1205, align 4, !tbaa !46
  %1207 = mul nsw i32 %1203, %1206
  %1208 = add nsw i32 %1200, %1207
  %1209 = add nsw i32 %1208, 1
  %1210 = ashr i32 %1209, 1
  br label %1219

1211:                                             ; preds = %1187
  %1212 = load ptr, ptr %16, align 8, !tbaa !5
  %1213 = getelementptr inbounds %struct.decorr_pass, ptr %1212, i32 0, i32 2
  %1214 = load i32, ptr %1213, align 4, !tbaa !46
  %1215 = load i32, ptr %33, align 4, !tbaa !9
  %1216 = mul nsw i32 %1214, %1215
  %1217 = add nsw i32 %1216, 512
  %1218 = ashr i32 %1217, 10
  br label %1219

1219:                                             ; preds = %1211, %1193
  %1220 = phi i32 [ %1210, %1193 ], [ %1218, %1211 ]
  %1221 = load i32, ptr %32, align 4, !tbaa !9
  %1222 = add nsw i32 %1221, %1220
  store i32 %1222, ptr %32, align 4, !tbaa !9
  br label %1223

1223:                                             ; preds = %1219, %1183
  br label %1224

1224:                                             ; preds = %1223, %1077
  br label %1225

1225:                                             ; preds = %1224, %986
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  br label %1226

1226:                                             ; preds = %1225
  %1227 = load ptr, ptr %16, align 8, !tbaa !5
  %1228 = getelementptr inbounds %struct.decorr_pass, ptr %1227, i32 1
  store ptr %1228, ptr %16, align 8, !tbaa !5
  br label %841, !llvm.loop !51

1229:                                             ; preds = %841
  %1230 = load i32, ptr %9, align 4, !tbaa !9
  %1231 = and i32 %1230, 16
  %1232 = icmp ne i32 %1231, 0
  br i1 %1232, label %1233, label %1240

1233:                                             ; preds = %1229
  %1234 = load i32, ptr %32, align 4, !tbaa !9
  %1235 = ashr i32 %1234, 1
  %1236 = load i32, ptr %33, align 4, !tbaa !9
  %1237 = sub nsw i32 %1236, %1235
  store i32 %1237, ptr %33, align 4, !tbaa !9
  %1238 = load i32, ptr %32, align 4, !tbaa !9
  %1239 = add nsw i32 %1238, %1237
  store i32 %1239, ptr %32, align 4, !tbaa !9
  br label %1240

1240:                                             ; preds = %1233, %1229
  br label %1241

1241:                                             ; preds = %1240, %822
  %1242 = load ptr, ptr %8, align 8, !tbaa !5
  %1243 = getelementptr inbounds %struct.WavpackStream, ptr %1242, i32 0, i32 10
  %1244 = load i32, ptr %1243, align 4, !tbaa !37
  store i32 %1244, ptr %17, align 4, !tbaa !9
  %1245 = load ptr, ptr %8, align 8, !tbaa !5
  %1246 = getelementptr inbounds %struct.WavpackStream, ptr %1245, i32 0, i32 40
  %1247 = getelementptr inbounds [16 x %struct.decorr_pass], ptr %1246, i64 0, i64 0
  store ptr %1247, ptr %16, align 8, !tbaa !5
  br label %1248

1248:                                             ; preds = %1844, %1241
  %1249 = load i32, ptr %17, align 4, !tbaa !9
  %1250 = add nsw i32 %1249, -1
  store i32 %1250, ptr %17, align 4, !tbaa !9
  %1251 = icmp ne i32 %1249, 0
  br i1 %1251, label %1252, label %1847

1252:                                             ; preds = %1248
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #6
  %1253 = load ptr, ptr %16, align 8, !tbaa !5
  %1254 = getelementptr inbounds %struct.decorr_pass, ptr %1253, i32 0, i32 0
  %1255 = load i32, ptr %1254, align 4, !tbaa !45
  %1256 = icmp sgt i32 %1255, 0
  br i1 %1256, label %1257, label %1477

1257:                                             ; preds = %1252
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #6
  %1258 = load ptr, ptr %16, align 8, !tbaa !5
  %1259 = getelementptr inbounds %struct.decorr_pass, ptr %1258, i32 0, i32 0
  %1260 = load i32, ptr %1259, align 4, !tbaa !45
  %1261 = icmp sgt i32 %1260, 8
  br i1 %1261, label %1262, label %1327

1262:                                             ; preds = %1257
  %1263 = load ptr, ptr %16, align 8, !tbaa !5
  %1264 = getelementptr inbounds %struct.decorr_pass, ptr %1263, i32 0, i32 0
  %1265 = load i32, ptr %1264, align 4, !tbaa !45
  %1266 = and i32 %1265, 1
  %1267 = icmp ne i32 %1266, 0
  br i1 %1267, label %1268, label %1289

1268:                                             ; preds = %1262
  %1269 = load ptr, ptr %16, align 8, !tbaa !5
  %1270 = getelementptr inbounds %struct.decorr_pass, ptr %1269, i32 0, i32 4
  %1271 = getelementptr inbounds [8 x i32], ptr %1270, i64 0, i64 0
  %1272 = load i32, ptr %1271, align 4, !tbaa !9
  %1273 = mul nsw i32 2, %1272
  %1274 = load ptr, ptr %16, align 8, !tbaa !5
  %1275 = getelementptr inbounds %struct.decorr_pass, ptr %1274, i32 0, i32 4
  %1276 = getelementptr inbounds [8 x i32], ptr %1275, i64 0, i64 1
  %1277 = load i32, ptr %1276, align 4, !tbaa !9
  %1278 = sub nsw i32 %1273, %1277
  store i32 %1278, ptr %36, align 4, !tbaa !9
  %1279 = load ptr, ptr %16, align 8, !tbaa !5
  %1280 = getelementptr inbounds %struct.decorr_pass, ptr %1279, i32 0, i32 5
  %1281 = getelementptr inbounds [8 x i32], ptr %1280, i64 0, i64 0
  %1282 = load i32, ptr %1281, align 4, !tbaa !9
  %1283 = mul nsw i32 2, %1282
  %1284 = load ptr, ptr %16, align 8, !tbaa !5
  %1285 = getelementptr inbounds %struct.decorr_pass, ptr %1284, i32 0, i32 5
  %1286 = getelementptr inbounds [8 x i32], ptr %1285, i64 0, i64 1
  %1287 = load i32, ptr %1286, align 4, !tbaa !9
  %1288 = sub nsw i32 %1283, %1287
  store i32 %1288, ptr %37, align 4, !tbaa !9
  br label %1312

1289:                                             ; preds = %1262
  %1290 = load ptr, ptr %16, align 8, !tbaa !5
  %1291 = getelementptr inbounds %struct.decorr_pass, ptr %1290, i32 0, i32 4
  %1292 = getelementptr inbounds [8 x i32], ptr %1291, i64 0, i64 0
  %1293 = load i32, ptr %1292, align 4, !tbaa !9
  %1294 = mul nsw i32 3, %1293
  %1295 = load ptr, ptr %16, align 8, !tbaa !5
  %1296 = getelementptr inbounds %struct.decorr_pass, ptr %1295, i32 0, i32 4
  %1297 = getelementptr inbounds [8 x i32], ptr %1296, i64 0, i64 1
  %1298 = load i32, ptr %1297, align 4, !tbaa !9
  %1299 = sub nsw i32 %1294, %1298
  %1300 = ashr i32 %1299, 1
  store i32 %1300, ptr %36, align 4, !tbaa !9
  %1301 = load ptr, ptr %16, align 8, !tbaa !5
  %1302 = getelementptr inbounds %struct.decorr_pass, ptr %1301, i32 0, i32 5
  %1303 = getelementptr inbounds [8 x i32], ptr %1302, i64 0, i64 0
  %1304 = load i32, ptr %1303, align 4, !tbaa !9
  %1305 = mul nsw i32 3, %1304
  %1306 = load ptr, ptr %16, align 8, !tbaa !5
  %1307 = getelementptr inbounds %struct.decorr_pass, ptr %1306, i32 0, i32 5
  %1308 = getelementptr inbounds [8 x i32], ptr %1307, i64 0, i64 1
  %1309 = load i32, ptr %1308, align 4, !tbaa !9
  %1310 = sub nsw i32 %1305, %1309
  %1311 = ashr i32 %1310, 1
  store i32 %1311, ptr %37, align 4, !tbaa !9
  br label %1312

1312:                                             ; preds = %1289, %1268
  %1313 = load ptr, ptr %16, align 8, !tbaa !5
  %1314 = getelementptr inbounds %struct.decorr_pass, ptr %1313, i32 0, i32 4
  %1315 = getelementptr inbounds [8 x i32], ptr %1314, i64 0, i64 0
  %1316 = load i32, ptr %1315, align 4, !tbaa !9
  %1317 = load ptr, ptr %16, align 8, !tbaa !5
  %1318 = getelementptr inbounds %struct.decorr_pass, ptr %1317, i32 0, i32 4
  %1319 = getelementptr inbounds [8 x i32], ptr %1318, i64 0, i64 1
  store i32 %1316, ptr %1319, align 4, !tbaa !9
  %1320 = load ptr, ptr %16, align 8, !tbaa !5
  %1321 = getelementptr inbounds %struct.decorr_pass, ptr %1320, i32 0, i32 5
  %1322 = getelementptr inbounds [8 x i32], ptr %1321, i64 0, i64 0
  %1323 = load i32, ptr %1322, align 4, !tbaa !9
  %1324 = load ptr, ptr %16, align 8, !tbaa !5
  %1325 = getelementptr inbounds %struct.decorr_pass, ptr %1324, i32 0, i32 5
  %1326 = getelementptr inbounds [8 x i32], ptr %1325, i64 0, i64 1
  store i32 %1323, ptr %1326, align 4, !tbaa !9
  store i32 0, ptr %38, align 4, !tbaa !9
  br label %1346

1327:                                             ; preds = %1257
  %1328 = load ptr, ptr %16, align 8, !tbaa !5
  %1329 = getelementptr inbounds %struct.decorr_pass, ptr %1328, i32 0, i32 4
  %1330 = load i32, ptr %18, align 4, !tbaa !9
  %1331 = sext i32 %1330 to i64
  %1332 = getelementptr inbounds [8 x i32], ptr %1329, i64 0, i64 %1331
  %1333 = load i32, ptr %1332, align 4, !tbaa !9
  store i32 %1333, ptr %36, align 4, !tbaa !9
  %1334 = load ptr, ptr %16, align 8, !tbaa !5
  %1335 = getelementptr inbounds %struct.decorr_pass, ptr %1334, i32 0, i32 5
  %1336 = load i32, ptr %18, align 4, !tbaa !9
  %1337 = sext i32 %1336 to i64
  %1338 = getelementptr inbounds [8 x i32], ptr %1335, i64 0, i64 %1337
  %1339 = load i32, ptr %1338, align 4, !tbaa !9
  store i32 %1339, ptr %37, align 4, !tbaa !9
  %1340 = load i32, ptr %18, align 4, !tbaa !9
  %1341 = load ptr, ptr %16, align 8, !tbaa !5
  %1342 = getelementptr inbounds %struct.decorr_pass, ptr %1341, i32 0, i32 0
  %1343 = load i32, ptr %1342, align 4, !tbaa !45
  %1344 = add nsw i32 %1340, %1343
  %1345 = and i32 %1344, 7
  store i32 %1345, ptr %38, align 4, !tbaa !9
  br label %1346

1346:                                             ; preds = %1327, %1312
  %1347 = load i32, ptr %36, align 4, !tbaa !9
  %1348 = load i32, ptr %36, align 4, !tbaa !9
  %1349 = trunc i32 %1348 to i16
  %1350 = sext i16 %1349 to i32
  %1351 = icmp ne i32 %1347, %1350
  br i1 %1351, label %1352, label %1370

1352:                                             ; preds = %1346
  %1353 = load i32, ptr %36, align 4, !tbaa !9
  %1354 = and i32 %1353, 65535
  %1355 = load ptr, ptr %16, align 8, !tbaa !5
  %1356 = getelementptr inbounds %struct.decorr_pass, ptr %1355, i32 0, i32 2
  %1357 = load i32, ptr %1356, align 4, !tbaa !46
  %1358 = mul nsw i32 %1354, %1357
  %1359 = ashr i32 %1358, 9
  %1360 = load i32, ptr %36, align 4, !tbaa !9
  %1361 = and i32 %1360, -65536
  %1362 = ashr i32 %1361, 9
  %1363 = load ptr, ptr %16, align 8, !tbaa !5
  %1364 = getelementptr inbounds %struct.decorr_pass, ptr %1363, i32 0, i32 2
  %1365 = load i32, ptr %1364, align 4, !tbaa !46
  %1366 = mul nsw i32 %1362, %1365
  %1367 = add nsw i32 %1359, %1366
  %1368 = add nsw i32 %1367, 1
  %1369 = ashr i32 %1368, 1
  br label %1378

1370:                                             ; preds = %1346
  %1371 = load ptr, ptr %16, align 8, !tbaa !5
  %1372 = getelementptr inbounds %struct.decorr_pass, ptr %1371, i32 0, i32 2
  %1373 = load i32, ptr %1372, align 4, !tbaa !46
  %1374 = load i32, ptr %36, align 4, !tbaa !9
  %1375 = mul nsw i32 %1373, %1374
  %1376 = add nsw i32 %1375, 512
  %1377 = ashr i32 %1376, 10
  br label %1378

1378:                                             ; preds = %1370, %1352
  %1379 = phi i32 [ %1369, %1352 ], [ %1377, %1370 ]
  %1380 = load i32, ptr %28, align 4, !tbaa !9
  %1381 = add nsw i32 %1379, %1380
  store i32 %1381, ptr %30, align 4, !tbaa !9
  %1382 = load i32, ptr %37, align 4, !tbaa !9
  %1383 = load i32, ptr %37, align 4, !tbaa !9
  %1384 = trunc i32 %1383 to i16
  %1385 = sext i16 %1384 to i32
  %1386 = icmp ne i32 %1382, %1385
  br i1 %1386, label %1387, label %1405

1387:                                             ; preds = %1378
  %1388 = load i32, ptr %37, align 4, !tbaa !9
  %1389 = and i32 %1388, 65535
  %1390 = load ptr, ptr %16, align 8, !tbaa !5
  %1391 = getelementptr inbounds %struct.decorr_pass, ptr %1390, i32 0, i32 3
  %1392 = load i32, ptr %1391, align 4, !tbaa !50
  %1393 = mul nsw i32 %1389, %1392
  %1394 = ashr i32 %1393, 9
  %1395 = load i32, ptr %37, align 4, !tbaa !9
  %1396 = and i32 %1395, -65536
  %1397 = ashr i32 %1396, 9
  %1398 = load ptr, ptr %16, align 8, !tbaa !5
  %1399 = getelementptr inbounds %struct.decorr_pass, ptr %1398, i32 0, i32 3
  %1400 = load i32, ptr %1399, align 4, !tbaa !50
  %1401 = mul nsw i32 %1397, %1400
  %1402 = add nsw i32 %1394, %1401
  %1403 = add nsw i32 %1402, 1
  %1404 = ashr i32 %1403, 1
  br label %1413

1405:                                             ; preds = %1378
  %1406 = load ptr, ptr %16, align 8, !tbaa !5
  %1407 = getelementptr inbounds %struct.decorr_pass, ptr %1406, i32 0, i32 3
  %1408 = load i32, ptr %1407, align 4, !tbaa !50
  %1409 = load i32, ptr %37, align 4, !tbaa !9
  %1410 = mul nsw i32 %1408, %1409
  %1411 = add nsw i32 %1410, 512
  %1412 = ashr i32 %1411, 10
  br label %1413

1413:                                             ; preds = %1405, %1387
  %1414 = phi i32 [ %1404, %1387 ], [ %1412, %1405 ]
  %1415 = load i32, ptr %29, align 4, !tbaa !9
  %1416 = add nsw i32 %1414, %1415
  store i32 %1416, ptr %31, align 4, !tbaa !9
  %1417 = load i32, ptr %36, align 4, !tbaa !9
  %1418 = icmp ne i32 %1417, 0
  br i1 %1418, label %1419, label %1440

1419:                                             ; preds = %1413
  %1420 = load i32, ptr %28, align 4, !tbaa !9
  %1421 = icmp ne i32 %1420, 0
  br i1 %1421, label %1422, label %1440

1422:                                             ; preds = %1419
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #6
  %1423 = load i32, ptr %36, align 4, !tbaa !9
  %1424 = load i32, ptr %28, align 4, !tbaa !9
  %1425 = xor i32 %1423, %1424
  %1426 = ashr i32 %1425, 31
  store i32 %1426, ptr %39, align 4, !tbaa !9
  %1427 = load ptr, ptr %16, align 8, !tbaa !5
  %1428 = getelementptr inbounds %struct.decorr_pass, ptr %1427, i32 0, i32 1
  %1429 = load i32, ptr %1428, align 4, !tbaa !47
  %1430 = load i32, ptr %39, align 4, !tbaa !9
  %1431 = xor i32 %1429, %1430
  %1432 = load ptr, ptr %16, align 8, !tbaa !5
  %1433 = getelementptr inbounds %struct.decorr_pass, ptr %1432, i32 0, i32 2
  %1434 = load i32, ptr %1433, align 4, !tbaa !46
  %1435 = load i32, ptr %39, align 4, !tbaa !9
  %1436 = sub nsw i32 %1434, %1435
  %1437 = add nsw i32 %1431, %1436
  %1438 = load ptr, ptr %16, align 8, !tbaa !5
  %1439 = getelementptr inbounds %struct.decorr_pass, ptr %1438, i32 0, i32 2
  store i32 %1437, ptr %1439, align 4, !tbaa !46
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  br label %1440

1440:                                             ; preds = %1422, %1419, %1413
  %1441 = load i32, ptr %37, align 4, !tbaa !9
  %1442 = icmp ne i32 %1441, 0
  br i1 %1442, label %1443, label %1464

1443:                                             ; preds = %1440
  %1444 = load i32, ptr %29, align 4, !tbaa !9
  %1445 = icmp ne i32 %1444, 0
  br i1 %1445, label %1446, label %1464

1446:                                             ; preds = %1443
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #6
  %1447 = load i32, ptr %37, align 4, !tbaa !9
  %1448 = load i32, ptr %29, align 4, !tbaa !9
  %1449 = xor i32 %1447, %1448
  %1450 = ashr i32 %1449, 31
  store i32 %1450, ptr %40, align 4, !tbaa !9
  %1451 = load ptr, ptr %16, align 8, !tbaa !5
  %1452 = getelementptr inbounds %struct.decorr_pass, ptr %1451, i32 0, i32 1
  %1453 = load i32, ptr %1452, align 4, !tbaa !47
  %1454 = load i32, ptr %40, align 4, !tbaa !9
  %1455 = xor i32 %1453, %1454
  %1456 = load ptr, ptr %16, align 8, !tbaa !5
  %1457 = getelementptr inbounds %struct.decorr_pass, ptr %1456, i32 0, i32 3
  %1458 = load i32, ptr %1457, align 4, !tbaa !50
  %1459 = load i32, ptr %40, align 4, !tbaa !9
  %1460 = sub nsw i32 %1458, %1459
  %1461 = add nsw i32 %1455, %1460
  %1462 = load ptr, ptr %16, align 8, !tbaa !5
  %1463 = getelementptr inbounds %struct.decorr_pass, ptr %1462, i32 0, i32 3
  store i32 %1461, ptr %1463, align 4, !tbaa !50
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #6
  br label %1464

1464:                                             ; preds = %1446, %1443, %1440
  %1465 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %1465, ptr %28, align 4, !tbaa !9
  %1466 = load ptr, ptr %16, align 8, !tbaa !5
  %1467 = getelementptr inbounds %struct.decorr_pass, ptr %1466, i32 0, i32 4
  %1468 = load i32, ptr %38, align 4, !tbaa !9
  %1469 = sext i32 %1468 to i64
  %1470 = getelementptr inbounds [8 x i32], ptr %1467, i64 0, i64 %1469
  store i32 %1465, ptr %1470, align 4, !tbaa !9
  %1471 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %1471, ptr %29, align 4, !tbaa !9
  %1472 = load ptr, ptr %16, align 8, !tbaa !5
  %1473 = getelementptr inbounds %struct.decorr_pass, ptr %1472, i32 0, i32 5
  %1474 = load i32, ptr %38, align 4, !tbaa !9
  %1475 = sext i32 %1474 to i64
  %1476 = getelementptr inbounds [8 x i32], ptr %1473, i64 0, i64 %1475
  store i32 %1471, ptr %1476, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  br label %1843

1477:                                             ; preds = %1252
  %1478 = load ptr, ptr %16, align 8, !tbaa !5
  %1479 = getelementptr inbounds %struct.decorr_pass, ptr %1478, i32 0, i32 0
  %1480 = load i32, ptr %1479, align 4, !tbaa !45
  %1481 = icmp eq i32 %1480, -1
  br i1 %1481, label %1482, label %1655

1482:                                             ; preds = %1477
  %1483 = load i32, ptr %28, align 4, !tbaa !9
  %1484 = load ptr, ptr %16, align 8, !tbaa !5
  %1485 = getelementptr inbounds %struct.decorr_pass, ptr %1484, i32 0, i32 4
  %1486 = getelementptr inbounds [8 x i32], ptr %1485, i64 0, i64 0
  %1487 = load i32, ptr %1486, align 4, !tbaa !9
  %1488 = load ptr, ptr %16, align 8, !tbaa !5
  %1489 = getelementptr inbounds %struct.decorr_pass, ptr %1488, i32 0, i32 4
  %1490 = getelementptr inbounds [8 x i32], ptr %1489, i64 0, i64 0
  %1491 = load i32, ptr %1490, align 4, !tbaa !9
  %1492 = trunc i32 %1491 to i16
  %1493 = sext i16 %1492 to i32
  %1494 = icmp ne i32 %1487, %1493
  br i1 %1494, label %1495, label %1519

1495:                                             ; preds = %1482
  %1496 = load ptr, ptr %16, align 8, !tbaa !5
  %1497 = getelementptr inbounds %struct.decorr_pass, ptr %1496, i32 0, i32 4
  %1498 = getelementptr inbounds [8 x i32], ptr %1497, i64 0, i64 0
  %1499 = load i32, ptr %1498, align 4, !tbaa !9
  %1500 = and i32 %1499, 65535
  %1501 = load ptr, ptr %16, align 8, !tbaa !5
  %1502 = getelementptr inbounds %struct.decorr_pass, ptr %1501, i32 0, i32 2
  %1503 = load i32, ptr %1502, align 4, !tbaa !46
  %1504 = mul nsw i32 %1500, %1503
  %1505 = ashr i32 %1504, 9
  %1506 = load ptr, ptr %16, align 8, !tbaa !5
  %1507 = getelementptr inbounds %struct.decorr_pass, ptr %1506, i32 0, i32 4
  %1508 = getelementptr inbounds [8 x i32], ptr %1507, i64 0, i64 0
  %1509 = load i32, ptr %1508, align 4, !tbaa !9
  %1510 = and i32 %1509, -65536
  %1511 = ashr i32 %1510, 9
  %1512 = load ptr, ptr %16, align 8, !tbaa !5
  %1513 = getelementptr inbounds %struct.decorr_pass, ptr %1512, i32 0, i32 2
  %1514 = load i32, ptr %1513, align 4, !tbaa !46
  %1515 = mul nsw i32 %1511, %1514
  %1516 = add nsw i32 %1505, %1515
  %1517 = add nsw i32 %1516, 1
  %1518 = ashr i32 %1517, 1
  br label %1530

1519:                                             ; preds = %1482
  %1520 = load ptr, ptr %16, align 8, !tbaa !5
  %1521 = getelementptr inbounds %struct.decorr_pass, ptr %1520, i32 0, i32 2
  %1522 = load i32, ptr %1521, align 4, !tbaa !46
  %1523 = load ptr, ptr %16, align 8, !tbaa !5
  %1524 = getelementptr inbounds %struct.decorr_pass, ptr %1523, i32 0, i32 4
  %1525 = getelementptr inbounds [8 x i32], ptr %1524, i64 0, i64 0
  %1526 = load i32, ptr %1525, align 4, !tbaa !9
  %1527 = mul nsw i32 %1522, %1526
  %1528 = add nsw i32 %1527, 512
  %1529 = ashr i32 %1528, 10
  br label %1530

1530:                                             ; preds = %1519, %1495
  %1531 = phi i32 [ %1518, %1495 ], [ %1529, %1519 ]
  %1532 = add nsw i32 %1483, %1531
  store i32 %1532, ptr %30, align 4, !tbaa !9
  %1533 = load ptr, ptr %16, align 8, !tbaa !5
  %1534 = getelementptr inbounds %struct.decorr_pass, ptr %1533, i32 0, i32 4
  %1535 = getelementptr inbounds [8 x i32], ptr %1534, i64 0, i64 0
  %1536 = load i32, ptr %1535, align 4, !tbaa !9
  %1537 = icmp ne i32 %1536, 0
  br i1 %1537, label %1538, label %1576

1538:                                             ; preds = %1530
  %1539 = load i32, ptr %28, align 4, !tbaa !9
  %1540 = icmp ne i32 %1539, 0
  br i1 %1540, label %1541, label %1576

1541:                                             ; preds = %1538
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #6
  %1542 = load ptr, ptr %16, align 8, !tbaa !5
  %1543 = getelementptr inbounds %struct.decorr_pass, ptr %1542, i32 0, i32 4
  %1544 = getelementptr inbounds [8 x i32], ptr %1543, i64 0, i64 0
  %1545 = load i32, ptr %1544, align 4, !tbaa !9
  %1546 = load i32, ptr %28, align 4, !tbaa !9
  %1547 = xor i32 %1545, %1546
  %1548 = ashr i32 %1547, 31
  store i32 %1548, ptr %41, align 4, !tbaa !9
  %1549 = load ptr, ptr %16, align 8, !tbaa !5
  %1550 = getelementptr inbounds %struct.decorr_pass, ptr %1549, i32 0, i32 2
  %1551 = load i32, ptr %1550, align 4, !tbaa !46
  %1552 = load i32, ptr %41, align 4, !tbaa !9
  %1553 = xor i32 %1551, %1552
  %1554 = load ptr, ptr %16, align 8, !tbaa !5
  %1555 = getelementptr inbounds %struct.decorr_pass, ptr %1554, i32 0, i32 1
  %1556 = load i32, ptr %1555, align 4, !tbaa !47
  %1557 = load i32, ptr %41, align 4, !tbaa !9
  %1558 = sub nsw i32 %1556, %1557
  %1559 = add nsw i32 %1553, %1558
  %1560 = load ptr, ptr %16, align 8, !tbaa !5
  %1561 = getelementptr inbounds %struct.decorr_pass, ptr %1560, i32 0, i32 2
  store i32 %1559, ptr %1561, align 4, !tbaa !46
  %1562 = icmp sgt i32 %1559, 1024
  br i1 %1562, label %1563, label %1566

1563:                                             ; preds = %1541
  %1564 = load ptr, ptr %16, align 8, !tbaa !5
  %1565 = getelementptr inbounds %struct.decorr_pass, ptr %1564, i32 0, i32 2
  store i32 1024, ptr %1565, align 4, !tbaa !46
  br label %1566

1566:                                             ; preds = %1563, %1541
  %1567 = load ptr, ptr %16, align 8, !tbaa !5
  %1568 = getelementptr inbounds %struct.decorr_pass, ptr %1567, i32 0, i32 2
  %1569 = load i32, ptr %1568, align 4, !tbaa !46
  %1570 = load i32, ptr %41, align 4, !tbaa !9
  %1571 = xor i32 %1569, %1570
  %1572 = load i32, ptr %41, align 4, !tbaa !9
  %1573 = sub nsw i32 %1571, %1572
  %1574 = load ptr, ptr %16, align 8, !tbaa !5
  %1575 = getelementptr inbounds %struct.decorr_pass, ptr %1574, i32 0, i32 2
  store i32 %1573, ptr %1575, align 4, !tbaa !46
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  br label %1576

1576:                                             ; preds = %1566, %1538, %1530
  %1577 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %1577, ptr %28, align 4, !tbaa !9
  %1578 = load i32, ptr %29, align 4, !tbaa !9
  %1579 = load i32, ptr %30, align 4, !tbaa !9
  %1580 = load i32, ptr %30, align 4, !tbaa !9
  %1581 = trunc i32 %1580 to i16
  %1582 = sext i16 %1581 to i32
  %1583 = icmp ne i32 %1579, %1582
  br i1 %1583, label %1584, label %1602

1584:                                             ; preds = %1576
  %1585 = load i32, ptr %30, align 4, !tbaa !9
  %1586 = and i32 %1585, 65535
  %1587 = load ptr, ptr %16, align 8, !tbaa !5
  %1588 = getelementptr inbounds %struct.decorr_pass, ptr %1587, i32 0, i32 3
  %1589 = load i32, ptr %1588, align 4, !tbaa !50
  %1590 = mul nsw i32 %1586, %1589
  %1591 = ashr i32 %1590, 9
  %1592 = load i32, ptr %30, align 4, !tbaa !9
  %1593 = and i32 %1592, -65536
  %1594 = ashr i32 %1593, 9
  %1595 = load ptr, ptr %16, align 8, !tbaa !5
  %1596 = getelementptr inbounds %struct.decorr_pass, ptr %1595, i32 0, i32 3
  %1597 = load i32, ptr %1596, align 4, !tbaa !50
  %1598 = mul nsw i32 %1594, %1597
  %1599 = add nsw i32 %1591, %1598
  %1600 = add nsw i32 %1599, 1
  %1601 = ashr i32 %1600, 1
  br label %1610

1602:                                             ; preds = %1576
  %1603 = load ptr, ptr %16, align 8, !tbaa !5
  %1604 = getelementptr inbounds %struct.decorr_pass, ptr %1603, i32 0, i32 3
  %1605 = load i32, ptr %1604, align 4, !tbaa !50
  %1606 = load i32, ptr %30, align 4, !tbaa !9
  %1607 = mul nsw i32 %1605, %1606
  %1608 = add nsw i32 %1607, 512
  %1609 = ashr i32 %1608, 10
  br label %1610

1610:                                             ; preds = %1602, %1584
  %1611 = phi i32 [ %1601, %1584 ], [ %1609, %1602 ]
  %1612 = add nsw i32 %1578, %1611
  store i32 %1612, ptr %31, align 4, !tbaa !9
  %1613 = load i32, ptr %30, align 4, !tbaa !9
  %1614 = icmp ne i32 %1613, 0
  br i1 %1614, label %1615, label %1650

1615:                                             ; preds = %1610
  %1616 = load i32, ptr %29, align 4, !tbaa !9
  %1617 = icmp ne i32 %1616, 0
  br i1 %1617, label %1618, label %1650

1618:                                             ; preds = %1615
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #6
  %1619 = load i32, ptr %30, align 4, !tbaa !9
  %1620 = load i32, ptr %29, align 4, !tbaa !9
  %1621 = xor i32 %1619, %1620
  %1622 = ashr i32 %1621, 31
  store i32 %1622, ptr %42, align 4, !tbaa !9
  %1623 = load ptr, ptr %16, align 8, !tbaa !5
  %1624 = getelementptr inbounds %struct.decorr_pass, ptr %1623, i32 0, i32 3
  %1625 = load i32, ptr %1624, align 4, !tbaa !50
  %1626 = load i32, ptr %42, align 4, !tbaa !9
  %1627 = xor i32 %1625, %1626
  %1628 = load ptr, ptr %16, align 8, !tbaa !5
  %1629 = getelementptr inbounds %struct.decorr_pass, ptr %1628, i32 0, i32 1
  %1630 = load i32, ptr %1629, align 4, !tbaa !47
  %1631 = load i32, ptr %42, align 4, !tbaa !9
  %1632 = sub nsw i32 %1630, %1631
  %1633 = add nsw i32 %1627, %1632
  %1634 = load ptr, ptr %16, align 8, !tbaa !5
  %1635 = getelementptr inbounds %struct.decorr_pass, ptr %1634, i32 0, i32 3
  store i32 %1633, ptr %1635, align 4, !tbaa !50
  %1636 = icmp sgt i32 %1633, 1024
  br i1 %1636, label %1637, label %1640

1637:                                             ; preds = %1618
  %1638 = load ptr, ptr %16, align 8, !tbaa !5
  %1639 = getelementptr inbounds %struct.decorr_pass, ptr %1638, i32 0, i32 3
  store i32 1024, ptr %1639, align 4, !tbaa !50
  br label %1640

1640:                                             ; preds = %1637, %1618
  %1641 = load ptr, ptr %16, align 8, !tbaa !5
  %1642 = getelementptr inbounds %struct.decorr_pass, ptr %1641, i32 0, i32 3
  %1643 = load i32, ptr %1642, align 4, !tbaa !50
  %1644 = load i32, ptr %42, align 4, !tbaa !9
  %1645 = xor i32 %1643, %1644
  %1646 = load i32, ptr %42, align 4, !tbaa !9
  %1647 = sub nsw i32 %1645, %1646
  %1648 = load ptr, ptr %16, align 8, !tbaa !5
  %1649 = getelementptr inbounds %struct.decorr_pass, ptr %1648, i32 0, i32 3
  store i32 %1647, ptr %1649, align 4, !tbaa !50
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  br label %1650

1650:                                             ; preds = %1640, %1615, %1610
  %1651 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %1651, ptr %29, align 4, !tbaa !9
  %1652 = load ptr, ptr %16, align 8, !tbaa !5
  %1653 = getelementptr inbounds %struct.decorr_pass, ptr %1652, i32 0, i32 4
  %1654 = getelementptr inbounds [8 x i32], ptr %1653, i64 0, i64 0
  store i32 %1651, ptr %1654, align 4, !tbaa !9
  br label %1842

1655:                                             ; preds = %1477
  %1656 = load i32, ptr %29, align 4, !tbaa !9
  %1657 = load ptr, ptr %16, align 8, !tbaa !5
  %1658 = getelementptr inbounds %struct.decorr_pass, ptr %1657, i32 0, i32 5
  %1659 = getelementptr inbounds [8 x i32], ptr %1658, i64 0, i64 0
  %1660 = load i32, ptr %1659, align 4, !tbaa !9
  %1661 = load ptr, ptr %16, align 8, !tbaa !5
  %1662 = getelementptr inbounds %struct.decorr_pass, ptr %1661, i32 0, i32 5
  %1663 = getelementptr inbounds [8 x i32], ptr %1662, i64 0, i64 0
  %1664 = load i32, ptr %1663, align 4, !tbaa !9
  %1665 = trunc i32 %1664 to i16
  %1666 = sext i16 %1665 to i32
  %1667 = icmp ne i32 %1660, %1666
  br i1 %1667, label %1668, label %1692

1668:                                             ; preds = %1655
  %1669 = load ptr, ptr %16, align 8, !tbaa !5
  %1670 = getelementptr inbounds %struct.decorr_pass, ptr %1669, i32 0, i32 5
  %1671 = getelementptr inbounds [8 x i32], ptr %1670, i64 0, i64 0
  %1672 = load i32, ptr %1671, align 4, !tbaa !9
  %1673 = and i32 %1672, 65535
  %1674 = load ptr, ptr %16, align 8, !tbaa !5
  %1675 = getelementptr inbounds %struct.decorr_pass, ptr %1674, i32 0, i32 3
  %1676 = load i32, ptr %1675, align 4, !tbaa !50
  %1677 = mul nsw i32 %1673, %1676
  %1678 = ashr i32 %1677, 9
  %1679 = load ptr, ptr %16, align 8, !tbaa !5
  %1680 = getelementptr inbounds %struct.decorr_pass, ptr %1679, i32 0, i32 5
  %1681 = getelementptr inbounds [8 x i32], ptr %1680, i64 0, i64 0
  %1682 = load i32, ptr %1681, align 4, !tbaa !9
  %1683 = and i32 %1682, -65536
  %1684 = ashr i32 %1683, 9
  %1685 = load ptr, ptr %16, align 8, !tbaa !5
  %1686 = getelementptr inbounds %struct.decorr_pass, ptr %1685, i32 0, i32 3
  %1687 = load i32, ptr %1686, align 4, !tbaa !50
  %1688 = mul nsw i32 %1684, %1687
  %1689 = add nsw i32 %1678, %1688
  %1690 = add nsw i32 %1689, 1
  %1691 = ashr i32 %1690, 1
  br label %1703

1692:                                             ; preds = %1655
  %1693 = load ptr, ptr %16, align 8, !tbaa !5
  %1694 = getelementptr inbounds %struct.decorr_pass, ptr %1693, i32 0, i32 3
  %1695 = load i32, ptr %1694, align 4, !tbaa !50
  %1696 = load ptr, ptr %16, align 8, !tbaa !5
  %1697 = getelementptr inbounds %struct.decorr_pass, ptr %1696, i32 0, i32 5
  %1698 = getelementptr inbounds [8 x i32], ptr %1697, i64 0, i64 0
  %1699 = load i32, ptr %1698, align 4, !tbaa !9
  %1700 = mul nsw i32 %1695, %1699
  %1701 = add nsw i32 %1700, 512
  %1702 = ashr i32 %1701, 10
  br label %1703

1703:                                             ; preds = %1692, %1668
  %1704 = phi i32 [ %1691, %1668 ], [ %1702, %1692 ]
  %1705 = add nsw i32 %1656, %1704
  store i32 %1705, ptr %31, align 4, !tbaa !9
  %1706 = load ptr, ptr %16, align 8, !tbaa !5
  %1707 = getelementptr inbounds %struct.decorr_pass, ptr %1706, i32 0, i32 5
  %1708 = getelementptr inbounds [8 x i32], ptr %1707, i64 0, i64 0
  %1709 = load i32, ptr %1708, align 4, !tbaa !9
  %1710 = icmp ne i32 %1709, 0
  br i1 %1710, label %1711, label %1749

1711:                                             ; preds = %1703
  %1712 = load i32, ptr %29, align 4, !tbaa !9
  %1713 = icmp ne i32 %1712, 0
  br i1 %1713, label %1714, label %1749

1714:                                             ; preds = %1711
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #6
  %1715 = load ptr, ptr %16, align 8, !tbaa !5
  %1716 = getelementptr inbounds %struct.decorr_pass, ptr %1715, i32 0, i32 5
  %1717 = getelementptr inbounds [8 x i32], ptr %1716, i64 0, i64 0
  %1718 = load i32, ptr %1717, align 4, !tbaa !9
  %1719 = load i32, ptr %29, align 4, !tbaa !9
  %1720 = xor i32 %1718, %1719
  %1721 = ashr i32 %1720, 31
  store i32 %1721, ptr %43, align 4, !tbaa !9
  %1722 = load ptr, ptr %16, align 8, !tbaa !5
  %1723 = getelementptr inbounds %struct.decorr_pass, ptr %1722, i32 0, i32 3
  %1724 = load i32, ptr %1723, align 4, !tbaa !50
  %1725 = load i32, ptr %43, align 4, !tbaa !9
  %1726 = xor i32 %1724, %1725
  %1727 = load ptr, ptr %16, align 8, !tbaa !5
  %1728 = getelementptr inbounds %struct.decorr_pass, ptr %1727, i32 0, i32 1
  %1729 = load i32, ptr %1728, align 4, !tbaa !47
  %1730 = load i32, ptr %43, align 4, !tbaa !9
  %1731 = sub nsw i32 %1729, %1730
  %1732 = add nsw i32 %1726, %1731
  %1733 = load ptr, ptr %16, align 8, !tbaa !5
  %1734 = getelementptr inbounds %struct.decorr_pass, ptr %1733, i32 0, i32 3
  store i32 %1732, ptr %1734, align 4, !tbaa !50
  %1735 = icmp sgt i32 %1732, 1024
  br i1 %1735, label %1736, label %1739

1736:                                             ; preds = %1714
  %1737 = load ptr, ptr %16, align 8, !tbaa !5
  %1738 = getelementptr inbounds %struct.decorr_pass, ptr %1737, i32 0, i32 3
  store i32 1024, ptr %1738, align 4, !tbaa !50
  br label %1739

1739:                                             ; preds = %1736, %1714
  %1740 = load ptr, ptr %16, align 8, !tbaa !5
  %1741 = getelementptr inbounds %struct.decorr_pass, ptr %1740, i32 0, i32 3
  %1742 = load i32, ptr %1741, align 4, !tbaa !50
  %1743 = load i32, ptr %43, align 4, !tbaa !9
  %1744 = xor i32 %1742, %1743
  %1745 = load i32, ptr %43, align 4, !tbaa !9
  %1746 = sub nsw i32 %1744, %1745
  %1747 = load ptr, ptr %16, align 8, !tbaa !5
  %1748 = getelementptr inbounds %struct.decorr_pass, ptr %1747, i32 0, i32 3
  store i32 %1746, ptr %1748, align 4, !tbaa !50
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  br label %1749

1749:                                             ; preds = %1739, %1711, %1703
  %1750 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %1750, ptr %29, align 4, !tbaa !9
  %1751 = load ptr, ptr %16, align 8, !tbaa !5
  %1752 = getelementptr inbounds %struct.decorr_pass, ptr %1751, i32 0, i32 0
  %1753 = load i32, ptr %1752, align 4, !tbaa !45
  %1754 = icmp eq i32 %1753, -3
  br i1 %1754, label %1755, label %1764

1755:                                             ; preds = %1749
  %1756 = load ptr, ptr %16, align 8, !tbaa !5
  %1757 = getelementptr inbounds %struct.decorr_pass, ptr %1756, i32 0, i32 4
  %1758 = getelementptr inbounds [8 x i32], ptr %1757, i64 0, i64 0
  %1759 = load i32, ptr %1758, align 4, !tbaa !9
  store i32 %1759, ptr %31, align 4, !tbaa !9
  %1760 = load i32, ptr %29, align 4, !tbaa !9
  %1761 = load ptr, ptr %16, align 8, !tbaa !5
  %1762 = getelementptr inbounds %struct.decorr_pass, ptr %1761, i32 0, i32 4
  %1763 = getelementptr inbounds [8 x i32], ptr %1762, i64 0, i64 0
  store i32 %1760, ptr %1763, align 4, !tbaa !9
  br label %1764

1764:                                             ; preds = %1755, %1749
  %1765 = load i32, ptr %28, align 4, !tbaa !9
  %1766 = load i32, ptr %31, align 4, !tbaa !9
  %1767 = load i32, ptr %31, align 4, !tbaa !9
  %1768 = trunc i32 %1767 to i16
  %1769 = sext i16 %1768 to i32
  %1770 = icmp ne i32 %1766, %1769
  br i1 %1770, label %1771, label %1789

1771:                                             ; preds = %1764
  %1772 = load i32, ptr %31, align 4, !tbaa !9
  %1773 = and i32 %1772, 65535
  %1774 = load ptr, ptr %16, align 8, !tbaa !5
  %1775 = getelementptr inbounds %struct.decorr_pass, ptr %1774, i32 0, i32 2
  %1776 = load i32, ptr %1775, align 4, !tbaa !46
  %1777 = mul nsw i32 %1773, %1776
  %1778 = ashr i32 %1777, 9
  %1779 = load i32, ptr %31, align 4, !tbaa !9
  %1780 = and i32 %1779, -65536
  %1781 = ashr i32 %1780, 9
  %1782 = load ptr, ptr %16, align 8, !tbaa !5
  %1783 = getelementptr inbounds %struct.decorr_pass, ptr %1782, i32 0, i32 2
  %1784 = load i32, ptr %1783, align 4, !tbaa !46
  %1785 = mul nsw i32 %1781, %1784
  %1786 = add nsw i32 %1778, %1785
  %1787 = add nsw i32 %1786, 1
  %1788 = ashr i32 %1787, 1
  br label %1797

1789:                                             ; preds = %1764
  %1790 = load ptr, ptr %16, align 8, !tbaa !5
  %1791 = getelementptr inbounds %struct.decorr_pass, ptr %1790, i32 0, i32 2
  %1792 = load i32, ptr %1791, align 4, !tbaa !46
  %1793 = load i32, ptr %31, align 4, !tbaa !9
  %1794 = mul nsw i32 %1792, %1793
  %1795 = add nsw i32 %1794, 512
  %1796 = ashr i32 %1795, 10
  br label %1797

1797:                                             ; preds = %1789, %1771
  %1798 = phi i32 [ %1788, %1771 ], [ %1796, %1789 ]
  %1799 = add nsw i32 %1765, %1798
  store i32 %1799, ptr %30, align 4, !tbaa !9
  %1800 = load i32, ptr %31, align 4, !tbaa !9
  %1801 = icmp ne i32 %1800, 0
  br i1 %1801, label %1802, label %1837

1802:                                             ; preds = %1797
  %1803 = load i32, ptr %28, align 4, !tbaa !9
  %1804 = icmp ne i32 %1803, 0
  br i1 %1804, label %1805, label %1837

1805:                                             ; preds = %1802
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #6
  %1806 = load i32, ptr %31, align 4, !tbaa !9
  %1807 = load i32, ptr %28, align 4, !tbaa !9
  %1808 = xor i32 %1806, %1807
  %1809 = ashr i32 %1808, 31
  store i32 %1809, ptr %44, align 4, !tbaa !9
  %1810 = load ptr, ptr %16, align 8, !tbaa !5
  %1811 = getelementptr inbounds %struct.decorr_pass, ptr %1810, i32 0, i32 2
  %1812 = load i32, ptr %1811, align 4, !tbaa !46
  %1813 = load i32, ptr %44, align 4, !tbaa !9
  %1814 = xor i32 %1812, %1813
  %1815 = load ptr, ptr %16, align 8, !tbaa !5
  %1816 = getelementptr inbounds %struct.decorr_pass, ptr %1815, i32 0, i32 1
  %1817 = load i32, ptr %1816, align 4, !tbaa !47
  %1818 = load i32, ptr %44, align 4, !tbaa !9
  %1819 = sub nsw i32 %1817, %1818
  %1820 = add nsw i32 %1814, %1819
  %1821 = load ptr, ptr %16, align 8, !tbaa !5
  %1822 = getelementptr inbounds %struct.decorr_pass, ptr %1821, i32 0, i32 2
  store i32 %1820, ptr %1822, align 4, !tbaa !46
  %1823 = icmp sgt i32 %1820, 1024
  br i1 %1823, label %1824, label %1827

1824:                                             ; preds = %1805
  %1825 = load ptr, ptr %16, align 8, !tbaa !5
  %1826 = getelementptr inbounds %struct.decorr_pass, ptr %1825, i32 0, i32 2
  store i32 1024, ptr %1826, align 4, !tbaa !46
  br label %1827

1827:                                             ; preds = %1824, %1805
  %1828 = load ptr, ptr %16, align 8, !tbaa !5
  %1829 = getelementptr inbounds %struct.decorr_pass, ptr %1828, i32 0, i32 2
  %1830 = load i32, ptr %1829, align 4, !tbaa !46
  %1831 = load i32, ptr %44, align 4, !tbaa !9
  %1832 = xor i32 %1830, %1831
  %1833 = load i32, ptr %44, align 4, !tbaa !9
  %1834 = sub nsw i32 %1832, %1833
  %1835 = load ptr, ptr %16, align 8, !tbaa !5
  %1836 = getelementptr inbounds %struct.decorr_pass, ptr %1835, i32 0, i32 2
  store i32 %1834, ptr %1836, align 4, !tbaa !46
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  br label %1837

1837:                                             ; preds = %1827, %1802, %1797
  %1838 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %1838, ptr %28, align 4, !tbaa !9
  %1839 = load ptr, ptr %16, align 8, !tbaa !5
  %1840 = getelementptr inbounds %struct.decorr_pass, ptr %1839, i32 0, i32 5
  %1841 = getelementptr inbounds [8 x i32], ptr %1840, i64 0, i64 0
  store i32 %1838, ptr %1841, align 4, !tbaa !9
  br label %1842

1842:                                             ; preds = %1837, %1650
  br label %1843

1843:                                             ; preds = %1842, %1464
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  br label %1844

1844:                                             ; preds = %1843
  %1845 = load ptr, ptr %16, align 8, !tbaa !5
  %1846 = getelementptr inbounds %struct.decorr_pass, ptr %1845, i32 1
  store ptr %1846, ptr %16, align 8, !tbaa !5
  br label %1248, !llvm.loop !52

1847:                                             ; preds = %1248
  %1848 = load i32, ptr %18, align 4, !tbaa !9
  %1849 = add nsw i32 %1848, 1
  %1850 = and i32 %1849, 7
  store i32 %1850, ptr %18, align 4, !tbaa !9
  %1851 = load i32, ptr %9, align 4, !tbaa !9
  %1852 = and i32 %1851, 32
  %1853 = icmp ne i32 %1852, 0
  br i1 %1853, label %1874, label %1854

1854:                                             ; preds = %1847
  %1855 = load i32, ptr %28, align 4, !tbaa !9
  %1856 = getelementptr inbounds [2 x i32], ptr %13, i64 0, i64 0
  %1857 = load i32, ptr %1856, align 4, !tbaa !9
  %1858 = add nsw i32 %1855, %1857
  store i32 %1858, ptr %32, align 4, !tbaa !9
  %1859 = load i32, ptr %29, align 4, !tbaa !9
  %1860 = getelementptr inbounds [2 x i32], ptr %13, i64 0, i64 1
  %1861 = load i32, ptr %1860, align 4, !tbaa !9
  %1862 = add nsw i32 %1859, %1861
  store i32 %1862, ptr %33, align 4, !tbaa !9
  %1863 = load i32, ptr %9, align 4, !tbaa !9
  %1864 = and i32 %1863, 16
  %1865 = icmp ne i32 %1864, 0
  br i1 %1865, label %1866, label %1873

1866:                                             ; preds = %1854
  %1867 = load i32, ptr %32, align 4, !tbaa !9
  %1868 = ashr i32 %1867, 1
  %1869 = load i32, ptr %33, align 4, !tbaa !9
  %1870 = sub nsw i32 %1869, %1868
  store i32 %1870, ptr %33, align 4, !tbaa !9
  %1871 = load i32, ptr %32, align 4, !tbaa !9
  %1872 = add nsw i32 %1871, %1870
  store i32 %1872, ptr %32, align 4, !tbaa !9
  br label %1873

1873:                                             ; preds = %1866, %1854
  br label %1874

1874:                                             ; preds = %1873, %1847
  %1875 = load i32, ptr %9, align 4, !tbaa !9
  %1876 = and i32 %1875, 16
  %1877 = icmp ne i32 %1876, 0
  br i1 %1877, label %1878, label %1885

1878:                                             ; preds = %1874
  %1879 = load i32, ptr %28, align 4, !tbaa !9
  %1880 = ashr i32 %1879, 1
  %1881 = load i32, ptr %29, align 4, !tbaa !9
  %1882 = sub nsw i32 %1881, %1880
  store i32 %1882, ptr %29, align 4, !tbaa !9
  %1883 = load i32, ptr %28, align 4, !tbaa !9
  %1884 = add nsw i32 %1883, %1882
  store i32 %1884, ptr %28, align 4, !tbaa !9
  br label %1885

1885:                                             ; preds = %1878, %1874
  %1886 = load i32, ptr %9, align 4, !tbaa !9
  %1887 = and i32 %1886, 64
  %1888 = icmp ne i32 %1887, 0
  br i1 %1888, label %1889, label %2116

1889:                                             ; preds = %1885
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #6
  %1890 = load i32, ptr %32, align 4, !tbaa !9
  %1891 = load i32, ptr %28, align 4, !tbaa !9
  %1892 = sub nsw i32 %1890, %1891
  %1893 = getelementptr inbounds [2 x i32], ptr %13, i64 0, i64 0
  store i32 %1892, ptr %1893, align 4, !tbaa !9
  %1894 = load ptr, ptr %8, align 8, !tbaa !5
  %1895 = getelementptr inbounds %struct.WavpackStream, ptr %1894, i32 0, i32 39
  %1896 = getelementptr inbounds %struct.anon, ptr %1895, i32 0, i32 1
  %1897 = getelementptr inbounds [2 x i32], ptr %1896, i64 0, i64 0
  %1898 = load i32, ptr %1897, align 8, !tbaa !9
  %1899 = load ptr, ptr %8, align 8, !tbaa !5
  %1900 = getelementptr inbounds %struct.WavpackStream, ptr %1899, i32 0, i32 39
  %1901 = getelementptr inbounds %struct.anon, ptr %1900, i32 0, i32 0
  %1902 = getelementptr inbounds [2 x i32], ptr %1901, i64 0, i64 0
  %1903 = load i32, ptr %1902, align 8, !tbaa !9
  %1904 = add nsw i32 %1903, %1898
  store i32 %1904, ptr %1902, align 8, !tbaa !9
  %1905 = ashr i32 %1904, 16
  store i32 %1905, ptr %45, align 4, !tbaa !9
  %1906 = load ptr, ptr %8, align 8, !tbaa !5
  %1907 = getelementptr inbounds %struct.WavpackStream, ptr %1906, i32 0, i32 39
  %1908 = getelementptr inbounds %struct.anon, ptr %1907, i32 0, i32 2
  %1909 = getelementptr inbounds [2 x i32], ptr %1908, i64 0, i64 0
  %1910 = load i32, ptr %1909, align 8, !tbaa !9
  %1911 = load ptr, ptr %8, align 8, !tbaa !5
  %1912 = getelementptr inbounds %struct.WavpackStream, ptr %1911, i32 0, i32 39
  %1913 = getelementptr inbounds %struct.anon, ptr %1912, i32 0, i32 2
  %1914 = getelementptr inbounds [2 x i32], ptr %1913, i64 0, i64 0
  %1915 = load i32, ptr %1914, align 8, !tbaa !9
  %1916 = trunc i32 %1915 to i16
  %1917 = sext i16 %1916 to i32
  %1918 = icmp ne i32 %1910, %1917
  br i1 %1918, label %1919, label %1941

1919:                                             ; preds = %1889
  %1920 = load ptr, ptr %8, align 8, !tbaa !5
  %1921 = getelementptr inbounds %struct.WavpackStream, ptr %1920, i32 0, i32 39
  %1922 = getelementptr inbounds %struct.anon, ptr %1921, i32 0, i32 2
  %1923 = getelementptr inbounds [2 x i32], ptr %1922, i64 0, i64 0
  %1924 = load i32, ptr %1923, align 8, !tbaa !9
  %1925 = and i32 %1924, 65535
  %1926 = load i32, ptr %45, align 4, !tbaa !9
  %1927 = mul nsw i32 %1925, %1926
  %1928 = ashr i32 %1927, 9
  %1929 = load ptr, ptr %8, align 8, !tbaa !5
  %1930 = getelementptr inbounds %struct.WavpackStream, ptr %1929, i32 0, i32 39
  %1931 = getelementptr inbounds %struct.anon, ptr %1930, i32 0, i32 2
  %1932 = getelementptr inbounds [2 x i32], ptr %1931, i64 0, i64 0
  %1933 = load i32, ptr %1932, align 8, !tbaa !9
  %1934 = and i32 %1933, -65536
  %1935 = ashr i32 %1934, 9
  %1936 = load i32, ptr %45, align 4, !tbaa !9
  %1937 = mul nsw i32 %1935, %1936
  %1938 = add nsw i32 %1928, %1937
  %1939 = add nsw i32 %1938, 1
  %1940 = ashr i32 %1939, 1
  br label %1951

1941:                                             ; preds = %1889
  %1942 = load i32, ptr %45, align 4, !tbaa !9
  %1943 = load ptr, ptr %8, align 8, !tbaa !5
  %1944 = getelementptr inbounds %struct.WavpackStream, ptr %1943, i32 0, i32 39
  %1945 = getelementptr inbounds %struct.anon, ptr %1944, i32 0, i32 2
  %1946 = getelementptr inbounds [2 x i32], ptr %1945, i64 0, i64 0
  %1947 = load i32, ptr %1946, align 8, !tbaa !9
  %1948 = mul nsw i32 %1942, %1947
  %1949 = add nsw i32 %1948, 512
  %1950 = ashr i32 %1949, 10
  br label %1951

1951:                                             ; preds = %1941, %1919
  %1952 = phi i32 [ %1940, %1919 ], [ %1950, %1941 ]
  %1953 = sub nsw i32 0, %1952
  store i32 %1953, ptr %46, align 4, !tbaa !9
  %1954 = load i32, ptr %9, align 4, !tbaa !9
  %1955 = and i32 %1954, 536870912
  %1956 = icmp ne i32 %1955, 0
  br i1 %1956, label %1957, label %1991

1957:                                             ; preds = %1951
  %1958 = load i32, ptr %45, align 4, !tbaa !9
  %1959 = icmp slt i32 %1958, 0
  br i1 %1959, label %1960, label %1991

1960:                                             ; preds = %1957
  %1961 = load i32, ptr %46, align 4, !tbaa !9
  %1962 = icmp ne i32 %1961, 0
  br i1 %1962, label %1963, label %1991

1963:                                             ; preds = %1960
  %1964 = load i32, ptr %46, align 4, !tbaa !9
  %1965 = load ptr, ptr %8, align 8, !tbaa !5
  %1966 = getelementptr inbounds %struct.WavpackStream, ptr %1965, i32 0, i32 39
  %1967 = getelementptr inbounds %struct.anon, ptr %1966, i32 0, i32 2
  %1968 = getelementptr inbounds [2 x i32], ptr %1967, i64 0, i64 0
  %1969 = load i32, ptr %1968, align 8, !tbaa !9
  %1970 = icmp eq i32 %1964, %1969
  br i1 %1970, label %1971, label %1982

1971:                                             ; preds = %1963
  %1972 = load i32, ptr %46, align 4, !tbaa !9
  %1973 = icmp slt i32 %1972, 0
  br i1 %1973, label %1974, label %1977

1974:                                             ; preds = %1971
  %1975 = load i32, ptr %46, align 4, !tbaa !9
  %1976 = add nsw i32 %1975, 1
  br label %1980

1977:                                             ; preds = %1971
  %1978 = load i32, ptr %46, align 4, !tbaa !9
  %1979 = sub nsw i32 %1978, 1
  br label %1980

1980:                                             ; preds = %1977, %1974
  %1981 = phi i32 [ %1976, %1974 ], [ %1979, %1977 ]
  store i32 %1981, ptr %46, align 4, !tbaa !9
  br label %1982

1982:                                             ; preds = %1980, %1963
  %1983 = load i32, ptr %46, align 4, !tbaa !9
  %1984 = getelementptr inbounds [2 x i32], ptr %13, i64 0, i64 0
  %1985 = load i32, ptr %1984, align 4, !tbaa !9
  %1986 = sub nsw i32 %1983, %1985
  %1987 = load ptr, ptr %8, align 8, !tbaa !5
  %1988 = getelementptr inbounds %struct.WavpackStream, ptr %1987, i32 0, i32 39
  %1989 = getelementptr inbounds %struct.anon, ptr %1988, i32 0, i32 2
  %1990 = getelementptr inbounds [2 x i32], ptr %1989, i64 0, i64 0
  store i32 %1986, ptr %1990, align 8, !tbaa !9
  br label %1999

1991:                                             ; preds = %1960, %1957, %1951
  %1992 = getelementptr inbounds [2 x i32], ptr %13, i64 0, i64 0
  %1993 = load i32, ptr %1992, align 4, !tbaa !9
  %1994 = sub nsw i32 0, %1993
  %1995 = load ptr, ptr %8, align 8, !tbaa !5
  %1996 = getelementptr inbounds %struct.WavpackStream, ptr %1995, i32 0, i32 39
  %1997 = getelementptr inbounds %struct.anon, ptr %1996, i32 0, i32 2
  %1998 = getelementptr inbounds [2 x i32], ptr %1997, i64 0, i64 0
  store i32 %1994, ptr %1998, align 8, !tbaa !9
  br label %1999

1999:                                             ; preds = %1991, %1982
  %2000 = load i32, ptr %32, align 4, !tbaa !9
  %2001 = load i32, ptr %46, align 4, !tbaa !9
  %2002 = sub nsw i32 %2000, %2001
  store i32 %2002, ptr %28, align 4, !tbaa !9
  %2003 = load i32, ptr %33, align 4, !tbaa !9
  %2004 = load i32, ptr %29, align 4, !tbaa !9
  %2005 = sub nsw i32 %2003, %2004
  %2006 = getelementptr inbounds [2 x i32], ptr %13, i64 0, i64 1
  store i32 %2005, ptr %2006, align 4, !tbaa !9
  %2007 = load ptr, ptr %8, align 8, !tbaa !5
  %2008 = getelementptr inbounds %struct.WavpackStream, ptr %2007, i32 0, i32 39
  %2009 = getelementptr inbounds %struct.anon, ptr %2008, i32 0, i32 1
  %2010 = getelementptr inbounds [2 x i32], ptr %2009, i64 0, i64 1
  %2011 = load i32, ptr %2010, align 4, !tbaa !9
  %2012 = load ptr, ptr %8, align 8, !tbaa !5
  %2013 = getelementptr inbounds %struct.WavpackStream, ptr %2012, i32 0, i32 39
  %2014 = getelementptr inbounds %struct.anon, ptr %2013, i32 0, i32 0
  %2015 = getelementptr inbounds [2 x i32], ptr %2014, i64 0, i64 1
  %2016 = load i32, ptr %2015, align 4, !tbaa !9
  %2017 = add nsw i32 %2016, %2011
  store i32 %2017, ptr %2015, align 4, !tbaa !9
  %2018 = ashr i32 %2017, 16
  store i32 %2018, ptr %45, align 4, !tbaa !9
  %2019 = load ptr, ptr %8, align 8, !tbaa !5
  %2020 = getelementptr inbounds %struct.WavpackStream, ptr %2019, i32 0, i32 39
  %2021 = getelementptr inbounds %struct.anon, ptr %2020, i32 0, i32 2
  %2022 = getelementptr inbounds [2 x i32], ptr %2021, i64 0, i64 1
  %2023 = load i32, ptr %2022, align 4, !tbaa !9
  %2024 = load ptr, ptr %8, align 8, !tbaa !5
  %2025 = getelementptr inbounds %struct.WavpackStream, ptr %2024, i32 0, i32 39
  %2026 = getelementptr inbounds %struct.anon, ptr %2025, i32 0, i32 2
  %2027 = getelementptr inbounds [2 x i32], ptr %2026, i64 0, i64 1
  %2028 = load i32, ptr %2027, align 4, !tbaa !9
  %2029 = trunc i32 %2028 to i16
  %2030 = sext i16 %2029 to i32
  %2031 = icmp ne i32 %2023, %2030
  br i1 %2031, label %2032, label %2054

2032:                                             ; preds = %1999
  %2033 = load ptr, ptr %8, align 8, !tbaa !5
  %2034 = getelementptr inbounds %struct.WavpackStream, ptr %2033, i32 0, i32 39
  %2035 = getelementptr inbounds %struct.anon, ptr %2034, i32 0, i32 2
  %2036 = getelementptr inbounds [2 x i32], ptr %2035, i64 0, i64 1
  %2037 = load i32, ptr %2036, align 4, !tbaa !9
  %2038 = and i32 %2037, 65535
  %2039 = load i32, ptr %45, align 4, !tbaa !9
  %2040 = mul nsw i32 %2038, %2039
  %2041 = ashr i32 %2040, 9
  %2042 = load ptr, ptr %8, align 8, !tbaa !5
  %2043 = getelementptr inbounds %struct.WavpackStream, ptr %2042, i32 0, i32 39
  %2044 = getelementptr inbounds %struct.anon, ptr %2043, i32 0, i32 2
  %2045 = getelementptr inbounds [2 x i32], ptr %2044, i64 0, i64 1
  %2046 = load i32, ptr %2045, align 4, !tbaa !9
  %2047 = and i32 %2046, -65536
  %2048 = ashr i32 %2047, 9
  %2049 = load i32, ptr %45, align 4, !tbaa !9
  %2050 = mul nsw i32 %2048, %2049
  %2051 = add nsw i32 %2041, %2050
  %2052 = add nsw i32 %2051, 1
  %2053 = ashr i32 %2052, 1
  br label %2064

2054:                                             ; preds = %1999
  %2055 = load i32, ptr %45, align 4, !tbaa !9
  %2056 = load ptr, ptr %8, align 8, !tbaa !5
  %2057 = getelementptr inbounds %struct.WavpackStream, ptr %2056, i32 0, i32 39
  %2058 = getelementptr inbounds %struct.anon, ptr %2057, i32 0, i32 2
  %2059 = getelementptr inbounds [2 x i32], ptr %2058, i64 0, i64 1
  %2060 = load i32, ptr %2059, align 4, !tbaa !9
  %2061 = mul nsw i32 %2055, %2060
  %2062 = add nsw i32 %2061, 512
  %2063 = ashr i32 %2062, 10
  br label %2064

2064:                                             ; preds = %2054, %2032
  %2065 = phi i32 [ %2053, %2032 ], [ %2063, %2054 ]
  %2066 = sub nsw i32 0, %2065
  store i32 %2066, ptr %46, align 4, !tbaa !9
  %2067 = load i32, ptr %9, align 4, !tbaa !9
  %2068 = and i32 %2067, 536870912
  %2069 = icmp ne i32 %2068, 0
  br i1 %2069, label %2070, label %2104

2070:                                             ; preds = %2064
  %2071 = load i32, ptr %45, align 4, !tbaa !9
  %2072 = icmp slt i32 %2071, 0
  br i1 %2072, label %2073, label %2104

2073:                                             ; preds = %2070
  %2074 = load i32, ptr %46, align 4, !tbaa !9
  %2075 = icmp ne i32 %2074, 0
  br i1 %2075, label %2076, label %2104

2076:                                             ; preds = %2073
  %2077 = load i32, ptr %46, align 4, !tbaa !9
  %2078 = load ptr, ptr %8, align 8, !tbaa !5
  %2079 = getelementptr inbounds %struct.WavpackStream, ptr %2078, i32 0, i32 39
  %2080 = getelementptr inbounds %struct.anon, ptr %2079, i32 0, i32 2
  %2081 = getelementptr inbounds [2 x i32], ptr %2080, i64 0, i64 1
  %2082 = load i32, ptr %2081, align 4, !tbaa !9
  %2083 = icmp eq i32 %2077, %2082
  br i1 %2083, label %2084, label %2095

2084:                                             ; preds = %2076
  %2085 = load i32, ptr %46, align 4, !tbaa !9
  %2086 = icmp slt i32 %2085, 0
  br i1 %2086, label %2087, label %2090

2087:                                             ; preds = %2084
  %2088 = load i32, ptr %46, align 4, !tbaa !9
  %2089 = add nsw i32 %2088, 1
  br label %2093

2090:                                             ; preds = %2084
  %2091 = load i32, ptr %46, align 4, !tbaa !9
  %2092 = sub nsw i32 %2091, 1
  br label %2093

2093:                                             ; preds = %2090, %2087
  %2094 = phi i32 [ %2089, %2087 ], [ %2092, %2090 ]
  store i32 %2094, ptr %46, align 4, !tbaa !9
  br label %2095

2095:                                             ; preds = %2093, %2076
  %2096 = load i32, ptr %46, align 4, !tbaa !9
  %2097 = getelementptr inbounds [2 x i32], ptr %13, i64 0, i64 1
  %2098 = load i32, ptr %2097, align 4, !tbaa !9
  %2099 = sub nsw i32 %2096, %2098
  %2100 = load ptr, ptr %8, align 8, !tbaa !5
  %2101 = getelementptr inbounds %struct.WavpackStream, ptr %2100, i32 0, i32 39
  %2102 = getelementptr inbounds %struct.anon, ptr %2101, i32 0, i32 2
  %2103 = getelementptr inbounds [2 x i32], ptr %2102, i64 0, i64 1
  store i32 %2099, ptr %2103, align 4, !tbaa !9
  br label %2112

2104:                                             ; preds = %2073, %2070, %2064
  %2105 = getelementptr inbounds [2 x i32], ptr %13, i64 0, i64 1
  %2106 = load i32, ptr %2105, align 4, !tbaa !9
  %2107 = sub nsw i32 0, %2106
  %2108 = load ptr, ptr %8, align 8, !tbaa !5
  %2109 = getelementptr inbounds %struct.WavpackStream, ptr %2108, i32 0, i32 39
  %2110 = getelementptr inbounds %struct.anon, ptr %2109, i32 0, i32 2
  %2111 = getelementptr inbounds [2 x i32], ptr %2110, i64 0, i64 1
  store i32 %2107, ptr %2111, align 4, !tbaa !9
  br label %2112

2112:                                             ; preds = %2104, %2095
  %2113 = load i32, ptr %33, align 4, !tbaa !9
  %2114 = load i32, ptr %46, align 4, !tbaa !9
  %2115 = sub nsw i32 %2113, %2114
  store i32 %2115, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  br label %2119

2116:                                             ; preds = %1885
  %2117 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %2117, ptr %28, align 4, !tbaa !9
  %2118 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %2118, ptr %29, align 4, !tbaa !9
  br label %2119

2119:                                             ; preds = %2116, %2112
  %2120 = load i32, ptr %28, align 4, !tbaa !9
  %2121 = sext i32 %2120 to i64
  %2122 = call i64 @llvm.abs.i64(i64 %2121, i1 true)
  %2123 = load i32, ptr %12, align 4, !tbaa !9
  %2124 = sext i32 %2123 to i64
  %2125 = icmp sgt i64 %2122, %2124
  br i1 %2125, label %2133, label %2126

2126:                                             ; preds = %2119
  %2127 = load i32, ptr %29, align 4, !tbaa !9
  %2128 = sext i32 %2127 to i64
  %2129 = call i64 @llvm.abs.i64(i64 %2128, i1 true)
  %2130 = load i32, ptr %12, align 4, !tbaa !9
  %2131 = sext i32 %2130 to i64
  %2132 = icmp sgt i64 %2129, %2131
  br i1 %2132, label %2133, label %2134

2133:                                             ; preds = %2126, %2119
  store i32 32, ptr %19, align 4
  br label %2152

2134:                                             ; preds = %2126
  %2135 = load i32, ptr %10, align 4, !tbaa !9
  %2136 = shl i32 %2135, 3
  %2137 = load i32, ptr %28, align 4, !tbaa !9
  %2138 = shl i32 %2137, 1
  %2139 = add i32 %2136, %2138
  %2140 = load i32, ptr %28, align 4, !tbaa !9
  %2141 = add i32 %2139, %2140
  %2142 = load i32, ptr %29, align 4, !tbaa !9
  %2143 = add i32 %2141, %2142
  %2144 = load i32, ptr %10, align 4, !tbaa !9
  %2145 = add i32 %2144, %2143
  store i32 %2145, ptr %10, align 4, !tbaa !9
  %2146 = load i32, ptr %28, align 4, !tbaa !9
  %2147 = load ptr, ptr %15, align 8, !tbaa !5
  %2148 = getelementptr inbounds i32, ptr %2147, i32 1
  store ptr %2148, ptr %15, align 8, !tbaa !5
  store i32 %2146, ptr %2147, align 4, !tbaa !9
  %2149 = load i32, ptr %29, align 4, !tbaa !9
  %2150 = load ptr, ptr %15, align 8, !tbaa !5
  %2151 = getelementptr inbounds i32, ptr %2150, i32 1
  store ptr %2151, ptr %15, align 8, !tbaa !5
  store i32 %2149, ptr %2150, align 4, !tbaa !9
  store i32 0, ptr %19, align 4
  br label %2152

2152:                                             ; preds = %2134, %2133, %821
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  %2153 = load i32, ptr %19, align 4
  switch i32 %2153, label %2335 [
    i32 0, label %2154
    i32 32, label %2158
  ]

2154:                                             ; preds = %2152
  br label %2155

2155:                                             ; preds = %2154
  %2156 = load i32, ptr %11, align 4, !tbaa !9
  %2157 = add i32 %2156, 1
  store i32 %2157, ptr %11, align 4, !tbaa !9
  br label %806, !llvm.loop !53

2158:                                             ; preds = %2152, %806
  br label %2160

2159:                                             ; preds = %800, %795
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %2160

2160:                                             ; preds = %2159, %2158
  br label %2161

2161:                                             ; preds = %2160, %794
  br label %2162

2162:                                             ; preds = %2161, %492
  br label %2163

2163:                                             ; preds = %2162, %298
  br label %2164

2164:                                             ; preds = %2163, %490, %296
  %2165 = load i32, ptr %11, align 4, !tbaa !9
  %2166 = load i32, ptr %7, align 4, !tbaa !9
  %2167 = icmp ne i32 %2165, %2166
  br i1 %2167, label %2168, label %2191

2168:                                             ; preds = %2164
  %2169 = load ptr, ptr %6, align 8, !tbaa !5
  %2170 = load i32, ptr %7, align 4, !tbaa !9
  %2171 = load i32, ptr %9, align 4, !tbaa !9
  %2172 = and i32 %2171, 4
  %2173 = icmp ne i32 %2172, 0
  %2174 = zext i1 %2173 to i64
  %2175 = select i1 %2173, i32 4, i32 8
  %2176 = mul i32 %2170, %2175
  %2177 = zext i32 %2176 to i64
  call void @llvm.memset.p0.i64(ptr align 4 %2169, i8 0, i64 %2177, i1 false)
  %2178 = load ptr, ptr %8, align 8, !tbaa !5
  %2179 = getelementptr inbounds %struct.WavpackStream, ptr %2178, i32 0, i32 12
  store i8 1, ptr %2179, align 4, !tbaa !31
  %2180 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %2180, ptr %11, align 4, !tbaa !9
  %2181 = load ptr, ptr %8, align 8, !tbaa !5
  %2182 = getelementptr inbounds %struct.WavpackStream, ptr %2181, i32 0, i32 29
  %2183 = getelementptr inbounds %struct.bs, ptr %2182, i32 0, i32 2
  %2184 = load ptr, ptr %2183, align 8, !tbaa !54
  %2185 = icmp ne ptr %2184, null
  br i1 %2185, label %2186, label %2190

2186:                                             ; preds = %2168
  %2187 = load ptr, ptr %8, align 8, !tbaa !5
  %2188 = getelementptr inbounds %struct.WavpackStream, ptr %2187, i32 0, i32 29
  %2189 = call i32 @bs_close_read(ptr noundef %2188)
  br label %2190

2190:                                             ; preds = %2186, %2168
  br label %2191

2191:                                             ; preds = %2190, %2164
  %2192 = load i32, ptr %18, align 4, !tbaa !9
  %2193 = icmp ne i32 %2192, 0
  br i1 %2193, label %2194, label %2258

2194:                                             ; preds = %2191
  %2195 = load ptr, ptr %8, align 8, !tbaa !5
  %2196 = getelementptr inbounds %struct.WavpackStream, ptr %2195, i32 0, i32 10
  %2197 = load i32, ptr %2196, align 4, !tbaa !37
  store i32 %2197, ptr %17, align 4, !tbaa !9
  %2198 = load ptr, ptr %8, align 8, !tbaa !5
  %2199 = getelementptr inbounds %struct.WavpackStream, ptr %2198, i32 0, i32 40
  %2200 = getelementptr inbounds [16 x %struct.decorr_pass], ptr %2199, i64 0, i64 0
  store ptr %2200, ptr %16, align 8, !tbaa !5
  br label %2201

2201:                                             ; preds = %2254, %2194
  %2202 = load i32, ptr %17, align 4, !tbaa !9
  %2203 = add nsw i32 %2202, -1
  store i32 %2203, ptr %17, align 4, !tbaa !9
  %2204 = icmp ne i32 %2202, 0
  br i1 %2204, label %2205, label %2257

2205:                                             ; preds = %2201
  %2206 = load ptr, ptr %16, align 8, !tbaa !5
  %2207 = getelementptr inbounds %struct.decorr_pass, ptr %2206, i32 0, i32 0
  %2208 = load i32, ptr %2207, align 4, !tbaa !45
  %2209 = icmp sgt i32 %2208, 0
  br i1 %2209, label %2210, label %2253

2210:                                             ; preds = %2205
  %2211 = load ptr, ptr %16, align 8, !tbaa !5
  %2212 = getelementptr inbounds %struct.decorr_pass, ptr %2211, i32 0, i32 0
  %2213 = load i32, ptr %2212, align 4, !tbaa !45
  %2214 = icmp sle i32 %2213, 8
  br i1 %2214, label %2215, label %2253

2215:                                             ; preds = %2210
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #6
  %2216 = getelementptr inbounds [8 x i32], ptr %47, i64 0, i64 0
  %2217 = load ptr, ptr %16, align 8, !tbaa !5
  %2218 = getelementptr inbounds %struct.decorr_pass, ptr %2217, i32 0, i32 4
  %2219 = getelementptr inbounds [8 x i32], ptr %2218, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %2216, ptr align 4 %2219, i64 32, i1 false)
  %2220 = getelementptr inbounds [8 x i32], ptr %48, i64 0, i64 0
  %2221 = load ptr, ptr %16, align 8, !tbaa !5
  %2222 = getelementptr inbounds %struct.decorr_pass, ptr %2221, i32 0, i32 5
  %2223 = getelementptr inbounds [8 x i32], ptr %2222, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %2220, ptr align 4 %2223, i64 32, i1 false)
  store i32 0, ptr %49, align 4, !tbaa !9
  br label %2224

2224:                                             ; preds = %2249, %2215
  %2225 = load i32, ptr %49, align 4, !tbaa !9
  %2226 = icmp slt i32 %2225, 8
  br i1 %2226, label %2227, label %2252

2227:                                             ; preds = %2224
  %2228 = load i32, ptr %18, align 4, !tbaa !9
  %2229 = sext i32 %2228 to i64
  %2230 = getelementptr inbounds [8 x i32], ptr %47, i64 0, i64 %2229
  %2231 = load i32, ptr %2230, align 4, !tbaa !9
  %2232 = load ptr, ptr %16, align 8, !tbaa !5
  %2233 = getelementptr inbounds %struct.decorr_pass, ptr %2232, i32 0, i32 4
  %2234 = load i32, ptr %49, align 4, !tbaa !9
  %2235 = sext i32 %2234 to i64
  %2236 = getelementptr inbounds [8 x i32], ptr %2233, i64 0, i64 %2235
  store i32 %2231, ptr %2236, align 4, !tbaa !9
  %2237 = load i32, ptr %18, align 4, !tbaa !9
  %2238 = sext i32 %2237 to i64
  %2239 = getelementptr inbounds [8 x i32], ptr %48, i64 0, i64 %2238
  %2240 = load i32, ptr %2239, align 4, !tbaa !9
  %2241 = load ptr, ptr %16, align 8, !tbaa !5
  %2242 = getelementptr inbounds %struct.decorr_pass, ptr %2241, i32 0, i32 5
  %2243 = load i32, ptr %49, align 4, !tbaa !9
  %2244 = sext i32 %2243 to i64
  %2245 = getelementptr inbounds [8 x i32], ptr %2242, i64 0, i64 %2244
  store i32 %2240, ptr %2245, align 4, !tbaa !9
  %2246 = load i32, ptr %18, align 4, !tbaa !9
  %2247 = add nsw i32 %2246, 1
  %2248 = and i32 %2247, 7
  store i32 %2248, ptr %18, align 4, !tbaa !9
  br label %2249

2249:                                             ; preds = %2227
  %2250 = load i32, ptr %49, align 4, !tbaa !9
  %2251 = add nsw i32 %2250, 1
  store i32 %2251, ptr %49, align 4, !tbaa !9
  br label %2224, !llvm.loop !55

2252:                                             ; preds = %2224
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #6
  br label %2253

2253:                                             ; preds = %2252, %2210, %2205
  br label %2254

2254:                                             ; preds = %2253
  %2255 = load ptr, ptr %16, align 8, !tbaa !5
  %2256 = getelementptr inbounds %struct.decorr_pass, ptr %2255, i32 1
  store ptr %2256, ptr %16, align 8, !tbaa !5
  br label %2201, !llvm.loop !56

2257:                                             ; preds = %2201
  br label %2258

2258:                                             ; preds = %2257, %2191
  %2259 = load ptr, ptr %5, align 8, !tbaa !5
  %2260 = load ptr, ptr %6, align 8, !tbaa !5
  %2261 = load i32, ptr %11, align 4, !tbaa !9
  call void @fixup_samples(ptr noundef %2259, ptr noundef %2260, i32 noundef %2261)
  %2262 = load i32, ptr %9, align 4, !tbaa !9
  %2263 = and i32 %2262, 128
  %2264 = icmp ne i32 %2263, 0
  br i1 %2264, label %2265, label %2292

2265:                                             ; preds = %2258
  %2266 = load ptr, ptr %5, align 8, !tbaa !5
  %2267 = getelementptr inbounds %struct.WavpackContext, ptr %2266, i32 0, i32 21
  %2268 = load i32, ptr %2267, align 4, !tbaa !57
  %2269 = and i32 %2268, 16
  %2270 = icmp ne i32 %2269, 0
  br i1 %2270, label %2271, label %2292

2271:                                             ; preds = %2265
  %2272 = load ptr, ptr %6, align 8, !tbaa !5
  %2273 = load i32, ptr %9, align 4, !tbaa !9
  %2274 = and i32 %2273, 1073741828
  %2275 = icmp ne i32 %2274, 0
  br i1 %2275, label %2276, label %2278

2276:                                             ; preds = %2271
  %2277 = load i32, ptr %11, align 4, !tbaa !9
  br label %2281

2278:                                             ; preds = %2271
  %2279 = load i32, ptr %11, align 4, !tbaa !9
  %2280 = mul i32 %2279, 2
  br label %2281

2281:                                             ; preds = %2278, %2276
  %2282 = phi i32 [ %2277, %2276 ], [ %2280, %2278 ]
  %2283 = load ptr, ptr %8, align 8, !tbaa !5
  %2284 = getelementptr inbounds %struct.WavpackStream, ptr %2283, i32 0, i32 38
  %2285 = load i8, ptr %2284, align 1, !tbaa !58
  %2286 = zext i8 %2285 to i32
  %2287 = sub nsw i32 127, %2286
  %2288 = load ptr, ptr %5, align 8, !tbaa !5
  %2289 = getelementptr inbounds %struct.WavpackContext, ptr %2288, i32 0, i32 22
  %2290 = load i32, ptr %2289, align 8, !tbaa !59
  %2291 = add nsw i32 %2287, %2290
  call void @WavpackStreamFloatNormalize(ptr noundef %2272, i32 noundef %2282, i32 noundef %2291)
  br label %2292

2292:                                             ; preds = %2281, %2265, %2258
  %2293 = load i32, ptr %9, align 4, !tbaa !9
  %2294 = and i32 %2293, 1073741824
  %2295 = icmp ne i32 %2294, 0
  br i1 %2295, label %2296, label %2322

2296:                                             ; preds = %2292
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #6
  %2297 = load ptr, ptr %6, align 8, !tbaa !5
  %2298 = load i32, ptr %11, align 4, !tbaa !9
  %2299 = mul i32 %2298, 2
  %2300 = zext i32 %2299 to i64
  %2301 = getelementptr inbounds i32, ptr %2297, i64 %2300
  store ptr %2301, ptr %50, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #6
  %2302 = load ptr, ptr %6, align 8, !tbaa !5
  %2303 = load i32, ptr %11, align 4, !tbaa !9
  %2304 = zext i32 %2303 to i64
  %2305 = getelementptr inbounds i32, ptr %2302, i64 %2304
  store ptr %2305, ptr %51, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #6
  %2306 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %2306, ptr %52, align 4, !tbaa !9
  br label %2307

2307:                                             ; preds = %2311, %2296
  %2308 = load i32, ptr %52, align 4, !tbaa !9
  %2309 = add nsw i32 %2308, -1
  store i32 %2309, ptr %52, align 4, !tbaa !9
  %2310 = icmp ne i32 %2308, 0
  br i1 %2310, label %2311, label %2321

2311:                                             ; preds = %2307
  %2312 = load ptr, ptr %51, align 8, !tbaa !5
  %2313 = getelementptr inbounds i32, ptr %2312, i32 -1
  store ptr %2313, ptr %51, align 8, !tbaa !5
  %2314 = load i32, ptr %2313, align 4, !tbaa !9
  %2315 = load ptr, ptr %50, align 8, !tbaa !5
  %2316 = getelementptr inbounds i32, ptr %2315, i32 -1
  store ptr %2316, ptr %50, align 8, !tbaa !5
  store i32 %2314, ptr %2316, align 4, !tbaa !9
  %2317 = load ptr, ptr %51, align 8, !tbaa !5
  %2318 = load i32, ptr %2317, align 4, !tbaa !9
  %2319 = load ptr, ptr %50, align 8, !tbaa !5
  %2320 = getelementptr inbounds i32, ptr %2319, i32 -1
  store ptr %2320, ptr %50, align 8, !tbaa !5
  store i32 %2318, ptr %2320, align 4, !tbaa !9
  br label %2307, !llvm.loop !60

2321:                                             ; preds = %2307
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #6
  br label %2322

2322:                                             ; preds = %2321, %2292
  %2323 = load i32, ptr %11, align 4, !tbaa !9
  %2324 = zext i32 %2323 to i64
  %2325 = load ptr, ptr %8, align 8, !tbaa !5
  %2326 = getelementptr inbounds %struct.WavpackStream, ptr %2325, i32 0, i32 7
  %2327 = load i64, ptr %2326, align 8, !tbaa !28
  %2328 = add nsw i64 %2327, %2324
  store i64 %2328, ptr %2326, align 8, !tbaa !28
  %2329 = load i32, ptr %10, align 4, !tbaa !9
  %2330 = load ptr, ptr %8, align 8, !tbaa !5
  %2331 = getelementptr inbounds %struct.WavpackStream, ptr %2330, i32 0, i32 23
  store i32 %2329, ptr %2331, align 4, !tbaa !27
  %2332 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %2332, ptr %4, align 4
  store i32 1, ptr %19, align 4
  br label %2333

2333:                                             ; preds = %2322, %490, %296, %173
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #6
  %2334 = load i32, ptr %4, align 4
  ret i32 %2334

2335:                                             ; preds = %2152
  unreachable
}

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2

declare i32 @get_word(ptr noundef, i32 noundef, ptr noundef) #3

declare i32 @get_words_lossless(ptr noundef, ptr noundef, i32 noundef) #3

; Function Attrs: nounwind uwtable
declare hidden void @decorr_mono_pass(ptr noundef, ptr noundef, i32 noundef) #0

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

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

; Function Attrs: nounwind uwtable
declare hidden void @decorr_stereo_pass(ptr noundef, ptr noundef, i32 noundef) #0

declare i32 @bs_close_read(ptr noundef) #3

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

; Function Attrs: nounwind uwtable
declare hidden void @fixup_samples(ptr noundef, ptr noundef, i32 noundef) #0

declare void @WavpackStreamFloatNormalize(ptr noundef, i32 noundef, i32 noundef) #3

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !6, i64 288}
!12 = !{!"WavpackContext", !13, i64 0, !6, i64 88, !10, i64 96, !10, i64 100, !6, i64 104, !10, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !15, i64 168, !15, i64 176, !15, i64 184, !15, i64 192, !15, i64 200, !15, i64 208, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !10, i64 236, !10, i64 240, !10, i64 244, !10, i64 248, !10, i64 252, !10, i64 256, !10, i64 260, !10, i64 264, !10, i64 268, !10, i64 272, !10, i64 276, !10, i64 280, !10, i64 284, !6, i64 288, !6, i64 296, !7, i64 304, !6, i64 312, !6, i64 320, !10, i64 328, !10, i64 332, !6, i64 336, !7, i64 344, !6, i64 352, !7, i64 360}
!13 = !{!"", !14, i64 0, !14, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !7, i64 56, !7, i64 72, !10, i64 76, !6, i64 80}
!14 = !{!"float", !7, i64 0}
!15 = !{!"long", !7, i64 0}
!16 = !{!12, !10, i64 276}
!17 = !{!18, !10, i64 8}
!18 = !{!"", !19, i64 0, !21, i64 12, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !15, i64 128, !15, i64 136, !10, i64 144, !10, i64 148, !10, i64 152, !7, i64 156, !7, i64 157, !7, i64 158, !7, i64 159, !7, i64 160, !7, i64 161, !7, i64 162, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !22, i64 200, !22, i64 248, !22, i64 296, !14, i64 344, !7, i64 348, !7, i64 349, !7, i64 350, !7, i64 351, !7, i64 352, !7, i64 353, !7, i64 354, !7, i64 355, !23, i64 360, !7, i64 432, !25, i64 1968, !6, i64 2064, !26, i64 2072}
!19 = !{!"", !7, i64 0, !20, i64 4, !20, i64 6, !10, i64 8}
!20 = !{!"short", !7, i64 0}
!21 = !{!"words_data", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !7, i64 36}
!22 = !{!"bs", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !10, i64 32, !10, i64 36, !10, i64 40}
!23 = !{!"", !7, i64 0, !7, i64 8, !7, i64 16, !24, i64 24, !24, i64 32, !24, i64 40, !6, i64 48, !6, i64 56, !10, i64 64}
!24 = !{!"double", !7, i64 0}
!25 = !{!"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}
!26 = !{!"", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !7, i64 40, !7, i64 41, !10, i64 44, !10, i64 48, !10, i64 52, !6, i64 56, !10, i64 64, !10, i64 68, !10, i64 72, !7, i64 76, !6, i64 160}
!27 = !{!18, !10, i64 180}
!28 = !{!18, !15, i64 128}
!29 = !{!18, !15, i64 136}
!30 = !{!18, !20, i64 6}
!31 = !{!18, !7, i64 156}
!32 = !{!12, !10, i64 236}
!33 = !{!12, !10, i64 28}
!34 = !{!18, !6, i64 104}
!35 = distinct !{!35, !36}
!36 = !{!"llvm.loop.mustprogress"}
!37 = !{!18, !10, i64 148}
!38 = distinct !{!38, !36}
!39 = distinct !{!39, !36}
!40 = distinct !{!40, !36}
!41 = distinct !{!41, !36}
!42 = distinct !{!42, !36}
!43 = distinct !{!43, !36}
!44 = distinct !{!44, !36}
!45 = !{!25, !10, i64 0}
!46 = !{!25, !10, i64 8}
!47 = !{!25, !10, i64 4}
!48 = distinct !{!48, !36}
!49 = distinct !{!49, !36}
!50 = !{!25, !10, i64 12}
!51 = distinct !{!51, !36}
!52 = distinct !{!52, !36}
!53 = distinct !{!53, !36}
!54 = !{!18, !6, i64 312}
!55 = distinct !{!55, !36}
!56 = distinct !{!56, !36}
!57 = !{!12, !10, i64 228}
!58 = !{!18, !7, i64 355}
!59 = !{!12, !10, i64 232}
!60 = distinct !{!60, !36}


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

; Function Attrs: nounwind uwtable
define dso_local i32 @unpack_samples(ptr noundef %0, ptr noundef %1, i32 noundef %2) local_unnamed_addr #0 {
  %4 = alloca [2 x i32], align 4
  %5 = alloca [8 x i32], align 16
  %6 = alloca [8 x i32], align 16
  %7 = getelementptr inbounds i8, ptr %0, i64 288
  %8 = load ptr, ptr %7, align 8, !tbaa !5
  %9 = getelementptr inbounds i8, ptr %0, i64 276
  %10 = load i32, ptr %9, align 4, !tbaa !14
  %11 = sext i32 %10 to i64
  %12 = getelementptr inbounds ptr, ptr %8, i64 %11
  %13 = load ptr, ptr %12, align 8, !tbaa !15
  %14 = getelementptr inbounds i8, ptr %13, i64 8
  %15 = load i32, ptr %14, align 8, !tbaa !16
  %16 = getelementptr inbounds i8, ptr %13, i64 180
  %17 = load i32, ptr %16, align 4, !tbaa !26
  %18 = lshr i32 %15, 18
  %19 = and i32 %18, 31
  %20 = shl nuw i32 1, %19
  %21 = add nuw i32 %20, 2
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #6
  %22 = getelementptr inbounds i8, ptr %13, i64 128
  %23 = load i64, ptr %22, align 8, !tbaa !27
  %24 = zext i32 %2 to i64
  %25 = add nsw i64 %23, %24
  %26 = getelementptr inbounds i8, ptr %13, i64 136
  %27 = load i64, ptr %26, align 8, !tbaa !28
  %28 = getelementptr inbounds i8, ptr %13, i64 6
  %29 = load i16, ptr %28, align 2, !tbaa !29
  %30 = zext i16 %29 to i64
  %31 = add nsw i64 %27, %30
  %32 = icmp sgt i64 %25, %31
  %33 = sub nsw i64 %31, %23
  %34 = icmp slt i64 %33, %24
  %35 = trunc i64 %33 to i32
  %36 = select i1 %32, i1 %34, i1 false
  %.0642 = select i1 %36, i32 %35, i32 %2
  %37 = icmp sgt i64 %27, %23
  %38 = zext i16 %29 to i32
  %39 = icmp ugt i32 %.0642, %38
  %or.cond905 = select i1 %37, i1 true, i1 %39
  %40 = getelementptr inbounds i8, ptr %13, i64 156
  br i1 %or.cond905, label %.thread1068, label %41

.thread1068:                                      ; preds = %3
  store i8 1, ptr %40, align 4, !tbaa !30
  br label %43

41:                                               ; preds = %3
  %.pre = load i8, ptr %40, align 4, !tbaa !30
  %42 = getelementptr inbounds i8, ptr %13, i64 156
  %.not = icmp eq i8 %.pre, 0
  br i1 %.not, label %58, label %43

43:                                               ; preds = %.thread1068, %41
  %44 = getelementptr inbounds i8, ptr %0, i64 236
  %45 = load i32, ptr %44, align 4, !tbaa !31
  %46 = icmp eq i32 %45, 1
  br i1 %46, label %52, label %47

47:                                               ; preds = %43
  %48 = getelementptr inbounds i8, ptr %0, i64 28
  %49 = load i32, ptr %48, align 4, !tbaa !32
  %50 = icmp ne i32 %49, 1
  %51 = and i32 %15, 4
  %.not823 = icmp eq i32 %51, 0
  %or.cond824 = select i1 %50, i1 %.not823, i1 false
  %spec.select = select i1 %or.cond824, i32 3, i32 2
  br label %52

52:                                               ; preds = %47, %43
  %.sink = phi i32 [ 2, %43 ], [ %spec.select, %47 ]
  %53 = shl i32 %.0642, %.sink
  %54 = zext i32 %53 to i64
  tail call void @llvm.memset.p0.i64(ptr align 4 %1, i8 0, i64 %54, i1 false)
  %55 = zext i32 %.0642 to i64
  %56 = load i64, ptr %22, align 8, !tbaa !27
  %57 = add nsw i64 %56, %55
  store i64 %57, ptr %22, align 8, !tbaa !27
  br label %1088

58:                                               ; preds = %41
  %59 = and i32 %15, 8
  %.not763 = icmp eq i32 %59, 0
  %60 = getelementptr inbounds i8, ptr %13, i64 104
  %61 = load ptr, ptr %60, align 8, !tbaa !33
  br i1 %.not763, label %.thread, label %62

62:                                               ; preds = %58
  %.not764 = icmp eq ptr %61, null
  %63 = shl nsw i32 %21, 1
  %64 = add nsw i32 %63, 128
  %.0657 = select i1 %.not764, i32 %64, i32 %21
  %.not765 = icmp ne ptr %61, null
  %65 = and i32 %15, 1073741828
  %.not766 = icmp eq i32 %65, 0
  %or.cond825 = select i1 %.not765, i1 true, i1 %.not766
  br i1 %or.cond825, label %110, label %.preheader928

.thread:                                          ; preds = %58
  %.not765840 = icmp ne ptr %61, null
  %66 = and i32 %15, 1073741828
  %.not766841 = icmp eq i32 %66, 0
  %or.cond825842 = select i1 %.not765840, i1 true, i1 %.not766841
  br i1 %or.cond825842, label %.thread864, label %.thread849

.thread849:                                       ; preds = %.thread
  %67 = zext nneg i32 %.0642 to i64
  %68 = getelementptr inbounds i32, ptr %1, i64 %67
  %69 = tail call i32 @get_words_lossless(ptr noundef nonnull %13, ptr noundef %1, i32 noundef %.0642) #6
  br label %84

.preheader928:                                    ; preds = %62
  %70 = zext nneg i32 %.0642 to i64
  %71 = getelementptr inbounds i32, ptr %1, i64 %70
  br label %72

72:                                               ; preds = %.preheader928, %74
  %.0686 = phi ptr [ %76, %74 ], [ %1, %.preheader928 ]
  %73 = icmp ult ptr %.0686, %71
  br i1 %73, label %74, label %.thread856

74:                                               ; preds = %72
  %75 = tail call i32 @get_word(ptr noundef %13, i32 noundef 0, ptr noundef null) #6
  %76 = getelementptr inbounds i8, ptr %.0686, i64 4
  store i32 %75, ptr %.0686, align 4, !tbaa !34
  %77 = icmp eq i32 %75, -2147483648
  br i1 %77, label %78, label %72, !llvm.loop !35

78:                                               ; preds = %74
  %79 = ptrtoint ptr %76 to i64
  %80 = ptrtoint ptr %1 to i64
  %81 = sub i64 %79, %80
  %82 = lshr exact i64 %81, 2
  %83 = trunc i64 %82 to i32
  br label %84

84:                                               ; preds = %78, %.thread849
  %85 = phi ptr [ %71, %78 ], [ %68, %.thread849 ]
  %.0657844854 = phi i32 [ %.0657, %78 ], [ %21, %.thread849 ]
  %.0647 = phi i32 [ %83, %78 ], [ %69, %.thread849 ]
  %.not767 = icmp eq i32 %.0647, %.0642
  br i1 %.not767, label %.thread856, label %.thread898

.thread856:                                       ; preds = %72, %84
  %.0657844854861 = phi i32 [ %.0657844854, %84 ], [ %.0657, %72 ]
  %86 = phi ptr [ %85, %84 ], [ %71, %72 ]
  %87 = getelementptr inbounds i8, ptr %13, i64 148
  %88 = load i32, ptr %87, align 4, !tbaa !37
  %.not768954 = icmp eq i32 %88, 0
  br i1 %.not768954, label %.preheader922, label %.lr.ph957.preheader

.lr.ph957.preheader:                              ; preds = %.thread856
  %89 = getelementptr inbounds i8, ptr %13, i64 432
  br label %.lr.ph957

.preheader922:                                    ; preds = %.lr.ph957, %.thread856
  %90 = icmp ugt ptr %86, %1
  br i1 %90, label %.lr.ph960, label %.loopexit916

.lr.ph960:                                        ; preds = %.preheader922
  %91 = sext i32 %.0657844854861 to i64
  br label %94

.lr.ph957:                                        ; preds = %.lr.ph957.preheader, %.lr.ph957
  %.0695956 = phi ptr [ %93, %.lr.ph957 ], [ %89, %.lr.ph957.preheader ]
  %.0702955 = phi i32 [ %92, %.lr.ph957 ], [ %88, %.lr.ph957.preheader ]
  %92 = add nsw i32 %.0702955, -1
  tail call void @decorr_mono_pass(ptr noundef nonnull %.0695956, ptr noundef %1, i32 noundef %.0642)
  %93 = getelementptr inbounds i8, ptr %.0695956, i64 96
  %.not768 = icmp eq i32 %92, 0
  br i1 %.not768, label %.preheader922, label %.lr.ph957, !llvm.loop !38

94:                                               ; preds = %.lr.ph960, %105
  %.0643959 = phi i32 [ %17, %.lr.ph960 ], [ %107, %105 ]
  %.1687958 = phi ptr [ %1, %.lr.ph960 ], [ %108, %105 ]
  %95 = load i32, ptr %.1687958, align 4, !tbaa !34
  %96 = tail call i32 @llvm.abs.i32(i32 %95, i1 false)
  %97 = zext i32 %96 to i64
  %98 = icmp sgt i64 %97, %91
  br i1 %98, label %99, label %105

99:                                               ; preds = %94
  %100 = ptrtoint ptr %.1687958 to i64
  %101 = ptrtoint ptr %1 to i64
  %102 = sub i64 %100, %101
  %103 = lshr exact i64 %102, 2
  %104 = trunc i64 %103 to i32
  br label %.thread898

105:                                              ; preds = %94
  %106 = mul i32 %.0643959, 3
  %107 = add i32 %95, %106
  %108 = getelementptr inbounds i8, ptr %.1687958, i64 4
  %109 = icmp ult ptr %108, %86
  br i1 %109, label %94, label %.loopexit916, !llvm.loop !39

110:                                              ; preds = %62
  %or.cond826 = select i1 %.not764, i1 %.not766, i1 false
  br i1 %or.cond826, label %.preheader924, label %189

.thread864:                                       ; preds = %.thread
  %.not769868 = icmp eq ptr %61, null
  %or.cond826869 = select i1 %.not769868, i1 %.not766841, i1 false
  br i1 %or.cond826869, label %.thread875, label %.thread890

.thread875:                                       ; preds = %.thread864
  %111 = shl nuw nsw i32 %.0642, 1
  %112 = zext nneg i32 %111 to i64
  %113 = getelementptr inbounds i32, ptr %1, i64 %112
  %114 = tail call i32 @get_words_lossless(ptr noundef nonnull %13, ptr noundef %1, i32 noundef %.0642) #6
  br label %133

.preheader924:                                    ; preds = %110
  %115 = shl nuw nsw i32 %.0642, 1
  %116 = zext nneg i32 %115 to i64
  %117 = getelementptr inbounds i32, ptr %1, i64 %116
  %.not1036 = icmp eq i32 %.0642, 0
  br i1 %.not1036, label %.thread882, label %.lr.ph953

.lr.ph953:                                        ; preds = %.preheader924, %130
  %.2688952 = phi ptr [ %131, %130 ], [ %1, %.preheader924 ]
  %118 = tail call i32 @get_word(ptr noundef %13, i32 noundef 0, ptr noundef null) #6
  store i32 %118, ptr %.2688952, align 4, !tbaa !34
  %119 = icmp eq i32 %118, -2147483648
  br i1 %119, label %124, label %120

120:                                              ; preds = %.lr.ph953
  %121 = tail call i32 @get_word(ptr noundef %13, i32 noundef 1, ptr noundef null) #6
  %122 = getelementptr inbounds i8, ptr %.2688952, i64 4
  store i32 %121, ptr %122, align 4, !tbaa !34
  %123 = icmp eq i32 %121, -2147483648
  br i1 %123, label %124, label %130

124:                                              ; preds = %120, %.lr.ph953
  %125 = ptrtoint ptr %.2688952 to i64
  %126 = ptrtoint ptr %1 to i64
  %127 = sub i64 %125, %126
  %sum.shift = lshr i64 %127, 3
  %128 = trunc i64 %sum.shift to i32
  %129 = and i32 %128, 2147483647
  br label %133

130:                                              ; preds = %120
  %131 = getelementptr inbounds i8, ptr %.2688952, i64 8
  %132 = icmp ult ptr %131, %117
  br i1 %132, label %.lr.ph953, label %.thread882, !llvm.loop !40

133:                                              ; preds = %124, %.thread875
  %134 = phi ptr [ %117, %124 ], [ %113, %.thread875 ]
  %.0657843874878 = phi i32 [ %.0657, %124 ], [ %21, %.thread875 ]
  %.3650 = phi i32 [ %129, %124 ], [ %114, %.thread875 ]
  %.not771 = icmp eq i32 %.3650, %.0642
  br i1 %.not771, label %.thread882, label %.thread898

.thread882:                                       ; preds = %130, %.preheader924, %133
  %.0657843874878888 = phi i32 [ %.0657843874878, %133 ], [ %.0657, %.preheader924 ], [ %.0657, %130 ]
  %135 = phi ptr [ %134, %133 ], [ %117, %.preheader924 ], [ %117, %130 ]
  %136 = getelementptr inbounds i8, ptr %13, i64 148
  %137 = load i32, ptr %136, align 4, !tbaa !37
  %.not7721000 = icmp eq i32 %137, 0
  br i1 %.not7721000, label %._crit_edge1004, label %.lr.ph1003.preheader

.lr.ph1003.preheader:                             ; preds = %.thread882
  %138 = getelementptr inbounds i8, ptr %13, i64 432
  br label %.lr.ph1003

.lr.ph1003:                                       ; preds = %.lr.ph1003.preheader, %.lr.ph1003
  %.16961002 = phi ptr [ %140, %.lr.ph1003 ], [ %138, %.lr.ph1003.preheader ]
  %.17031001 = phi i32 [ %139, %.lr.ph1003 ], [ %137, %.lr.ph1003.preheader ]
  %139 = add nsw i32 %.17031001, -1
  tail call void @decorr_stereo_pass(ptr noundef nonnull %.16961002, ptr noundef %1, i32 noundef %.0642)
  %140 = getelementptr inbounds i8, ptr %.16961002, i64 96
  %.not772 = icmp eq i32 %139, 0
  br i1 %.not772, label %._crit_edge1004, label %.lr.ph1003, !llvm.loop !41

._crit_edge1004:                                  ; preds = %.lr.ph1003, %.thread882
  %141 = and i32 %.0642, 7
  %142 = and i32 %15, 16
  %.not773 = icmp eq i32 %142, 0
  %143 = icmp ugt ptr %135, %1
  br i1 %.not773, label %.preheader, label %.preheader918

.preheader918:                                    ; preds = %._crit_edge1004
  br i1 %143, label %.lr.ph1007, label %.loopexit917

.preheader:                                       ; preds = %._crit_edge1004
  br i1 %143, label %.lr.ph1011, label %.loopexit917

.lr.ph1007:                                       ; preds = %.preheader918, %.lr.ph1007
  %.26451006 = phi i32 [ %154, %.lr.ph1007 ], [ %17, %.preheader918 ]
  %.36891005 = phi ptr [ %155, %.lr.ph1007 ], [ %1, %.preheader918 ]
  %144 = load i32, ptr %.36891005, align 4, !tbaa !34
  %145 = ashr i32 %144, 1
  %146 = getelementptr inbounds i8, ptr %.36891005, i64 4
  %147 = load i32, ptr %146, align 4, !tbaa !34
  %148 = sub nsw i32 %147, %145
  store i32 %148, ptr %146, align 4, !tbaa !34
  %149 = add nsw i32 %148, %144
  store i32 %149, ptr %.36891005, align 4, !tbaa !34
  %150 = shl i32 %149, 1
  %151 = mul i32 %.26451006, 9
  %152 = add i32 %151, %148
  %153 = add i32 %152, %149
  %154 = add i32 %153, %150
  %155 = getelementptr inbounds i8, ptr %.36891005, i64 8
  %156 = icmp ult ptr %155, %135
  br i1 %156, label %.lr.ph1007, label %.loopexit917, !llvm.loop !42

.lr.ph1011:                                       ; preds = %.preheader, %.lr.ph1011
  %.36461010 = phi i32 [ %164, %.lr.ph1011 ], [ %17, %.preheader ]
  %.46901009 = phi ptr [ %165, %.lr.ph1011 ], [ %1, %.preheader ]
  %157 = load i32, ptr %.46901009, align 4, !tbaa !34
  %158 = shl i32 %157, 1
  %159 = getelementptr inbounds i8, ptr %.46901009, i64 4
  %160 = load i32, ptr %159, align 4, !tbaa !34
  %161 = mul i32 %.36461010, 9
  %162 = add i32 %161, %157
  %163 = add i32 %162, %158
  %164 = add i32 %163, %160
  %165 = getelementptr inbounds i8, ptr %.46901009, i64 8
  %166 = icmp ult ptr %165, %135
  br i1 %166, label %.lr.ph1011, label %.loopexit917, !llvm.loop !43

.loopexit917:                                     ; preds = %.lr.ph1007, %.lr.ph1011, %.preheader918, %.preheader
  %.4 = phi i32 [ %17, %.preheader ], [ %17, %.preheader918 ], [ %164, %.lr.ph1011 ], [ %154, %.lr.ph1007 ]
  %167 = icmp ugt ptr %135, %1
  br i1 %167, label %.lr.ph1015, label %.thread898.thread

.lr.ph1015:                                       ; preds = %.loopexit917
  %168 = sext i32 %.0657843874878888 to i64
  br label %169

169:                                              ; preds = %.lr.ph1015, %186
  %.56911013 = phi ptr [ %1, %.lr.ph1015 ], [ %187, %186 ]
  %170 = load i32, ptr %.56911013, align 4, !tbaa !34
  %171 = tail call i32 @llvm.abs.i32(i32 %170, i1 false)
  %172 = zext i32 %171 to i64
  %173 = icmp sgt i64 %172, %168
  br i1 %173, label %180, label %174

174:                                              ; preds = %169
  %175 = getelementptr inbounds i8, ptr %.56911013, i64 4
  %176 = load i32, ptr %175, align 4, !tbaa !34
  %177 = tail call i32 @llvm.abs.i32(i32 %176, i1 false)
  %178 = zext i32 %177 to i64
  %179 = icmp ugt i64 %178, %168
  br i1 %179, label %180, label %186

180:                                              ; preds = %174, %169
  %181 = ptrtoint ptr %.56911013 to i64
  %182 = ptrtoint ptr %1 to i64
  %183 = sub i64 %181, %182
  %sum.shift774 = lshr i64 %183, 3
  %184 = trunc i64 %sum.shift774 to i32
  %185 = and i32 %184, 2147483647
  br label %.thread898

186:                                              ; preds = %174
  %187 = getelementptr inbounds i8, ptr %.56911013, i64 64
  %188 = icmp ult ptr %187, %135
  br i1 %188, label %169, label %.thread898.thread, !llvm.loop !44

189:                                              ; preds = %110
  br i1 %.not766, label %.thread890, label %.preheader925

.preheader925:                                    ; preds = %189
  %.not1034 = icmp eq i32 %.0642, 0
  br i1 %.not1034, label %.thread898, label %.lr.ph940

.lr.ph940:                                        ; preds = %.preheader925
  %190 = getelementptr inbounds i8, ptr %13, i64 148
  %191 = getelementptr inbounds i8, ptr %13, i64 432
  %192 = and i32 %15, 64
  %.not808 = icmp eq i32 %192, 0
  %193 = getelementptr inbounds i8, ptr %13, i64 360
  %194 = getelementptr inbounds i8, ptr %13, i64 368
  %195 = getelementptr inbounds i8, ptr %13, i64 376
  %196 = and i32 %15, 536870912
  %197 = icmp ne i32 %196, 0
  %198 = sext i32 %.0657 to i64
  br label %199

199:                                              ; preds = %.lr.ph940, %320
  %.6939 = phi i32 [ %17, %.lr.ph940 ], [ %316, %320 ]
  %.6653938 = phi i32 [ 0, %.lr.ph940 ], [ %322, %320 ]
  %.6692937 = phi ptr [ %1, %.lr.ph940 ], [ %321, %320 ]
  %.1711936 = phi i32 [ 0, %.lr.ph940 ], [ %271, %320 ]
  %200 = call i32 @get_word(ptr noundef %13, i32 noundef 0, ptr noundef nonnull %4) #6
  %201 = icmp eq i32 %200, -2147483648
  br i1 %201, label %.thread898, label %202

202:                                              ; preds = %199
  %203 = load i32, ptr %190, align 4, !tbaa !37
  %.not807933 = icmp eq i32 %203, 0
  br i1 %.not807933, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %202
  %204 = zext nneg i32 %.1711936 to i64
  br label %205

205:                                              ; preds = %.lr.ph, %265
  %.in = phi i32 [ %203, %.lr.ph ], [ %206, %265 ]
  %.0658935 = phi i32 [ %200, %.lr.ph ], [ %253, %265 ]
  %.2697934 = phi ptr [ %191, %.lr.ph ], [ %269, %265 ]
  %206 = add nsw i32 %.in, -1
  %207 = load i32, ptr %.2697934, align 4, !tbaa !45
  %208 = icmp sgt i32 %207, 8
  br i1 %208, label %209, label %224

209:                                              ; preds = %205
  %210 = and i32 %207, 1
  %.not811 = icmp eq i32 %210, 0
  %211 = getelementptr inbounds i8, ptr %.2697934, i64 16
  %212 = load i32, ptr %211, align 4, !tbaa !34
  %213 = getelementptr inbounds i8, ptr %.2697934, i64 20
  %214 = load i32, ptr %213, align 4, !tbaa !34
  br i1 %.not811, label %218, label %215

215:                                              ; preds = %209
  %216 = shl nsw i32 %212, 1
  %217 = sub nsw i32 %216, %214
  br label %222

218:                                              ; preds = %209
  %219 = mul nsw i32 %212, 3
  %220 = sub nsw i32 %219, %214
  %221 = ashr i32 %220, 1
  br label %222

222:                                              ; preds = %218, %215
  %.0708 = phi i32 [ %217, %215 ], [ %221, %218 ]
  %223 = getelementptr inbounds i8, ptr %.2697934, i64 20
  store i32 %212, ptr %223, align 4, !tbaa !34
  br label %230

224:                                              ; preds = %205
  %225 = getelementptr inbounds i8, ptr %.2697934, i64 16
  %226 = getelementptr inbounds [8 x i32], ptr %225, i64 0, i64 %204
  %227 = load i32, ptr %226, align 4, !tbaa !34
  %228 = add nsw i32 %207, %.1711936
  %229 = and i32 %228, 7
  br label %230

230:                                              ; preds = %224, %222
  %.1709 = phi i32 [ %.0708, %222 ], [ %227, %224 ]
  %.0701 = phi i32 [ 0, %222 ], [ %229, %224 ]
  %231 = add i32 %.1709, 32768
  %.not812 = icmp ult i32 %231, 65536
  br i1 %.not812, label %244, label %232

232:                                              ; preds = %230
  %233 = and i32 %.1709, 65535
  %234 = getelementptr inbounds i8, ptr %.2697934, i64 8
  %235 = load i32, ptr %234, align 4, !tbaa !46
  %236 = mul nsw i32 %235, %233
  %237 = ashr i32 %236, 9
  %238 = ashr i32 %.1709, 9
  %239 = and i32 %238, -128
  %240 = mul nsw i32 %235, %239
  %241 = or disjoint i32 %240, 1
  %242 = add i32 %241, %237
  %243 = ashr i32 %242, 1
  br label %250

244:                                              ; preds = %230
  %245 = getelementptr inbounds i8, ptr %.2697934, i64 8
  %246 = load i32, ptr %245, align 4, !tbaa !46
  %247 = mul nsw i32 %246, %.1709
  %248 = add nsw i32 %247, 512
  %249 = ashr i32 %248, 10
  br label %250

250:                                              ; preds = %244, %232
  %251 = phi i32 [ %235, %232 ], [ %246, %244 ]
  %252 = phi i32 [ %243, %232 ], [ %249, %244 ]
  %253 = add nsw i32 %252, %.0658935
  %254 = icmp ne i32 %.1709, 0
  %255 = icmp ne i32 %.0658935, 0
  %or.cond = select i1 %254, i1 %255, i1 false
  br i1 %or.cond, label %256, label %265

256:                                              ; preds = %250
  %257 = xor i32 %.1709, %.0658935
  %.neg1035 = lshr i32 %257, 31
  %258 = ashr i32 %257, 31
  %259 = getelementptr inbounds i8, ptr %.2697934, i64 4
  %260 = load i32, ptr %259, align 4, !tbaa !47
  %261 = xor i32 %260, %258
  %262 = getelementptr inbounds i8, ptr %.2697934, i64 8
  %263 = add i32 %251, %.neg1035
  %264 = add nsw i32 %263, %261
  store i32 %264, ptr %262, align 4, !tbaa !46
  br label %265

265:                                              ; preds = %256, %250
  %266 = getelementptr inbounds i8, ptr %.2697934, i64 16
  %267 = zext nneg i32 %.0701 to i64
  %268 = getelementptr inbounds [8 x i32], ptr %266, i64 0, i64 %267
  store i32 %253, ptr %268, align 4, !tbaa !34
  %269 = getelementptr inbounds i8, ptr %.2697934, i64 96
  %.not807 = icmp eq i32 %206, 0
  br i1 %.not807, label %._crit_edge, label %205, !llvm.loop !48

._crit_edge:                                      ; preds = %265, %202
  %.0658.lcssa = phi i32 [ %200, %202 ], [ %253, %265 ]
  %270 = add nuw nsw i32 %.1711936, 1
  %271 = and i32 %270, 7
  br i1 %.not808, label %312, label %272

272:                                              ; preds = %._crit_edge
  %273 = load i32, ptr %194, align 8, !tbaa !34
  %274 = load i32, ptr %193, align 8, !tbaa !34
  %275 = add nsw i32 %274, %273
  store i32 %275, ptr %193, align 8, !tbaa !34
  %276 = ashr i32 %275, 16
  %277 = load i32, ptr %195, align 8, !tbaa !34
  %278 = add i32 %277, 32768
  %.not809 = icmp ult i32 %278, 65536
  br i1 %.not809, label %289, label %279

279:                                              ; preds = %272
  %280 = and i32 %277, 65535
  %281 = mul nsw i32 %280, %276
  %282 = ashr i32 %281, 9
  %283 = ashr i32 %277, 9
  %284 = and i32 %283, -128
  %285 = mul nsw i32 %284, %276
  %286 = or disjoint i32 %285, 1
  %287 = add i32 %286, %282
  %288 = ashr i32 %287, 1
  br label %293

289:                                              ; preds = %272
  %290 = mul nsw i32 %276, %277
  %291 = add nsw i32 %290, 512
  %292 = ashr i32 %291, 10
  br label %293

293:                                              ; preds = %289, %279
  %294 = phi i32 [ %288, %279 ], [ %292, %289 ]
  %295 = sub nsw i32 0, %294
  %296 = icmp slt i32 %276, 0
  %or.cond3 = select i1 %197, i1 %296, i1 false
  %297 = icmp ne i32 %294, 0
  %or.cond5 = select i1 %or.cond3, i1 %297, i1 false
  br i1 %or.cond5, label %298, label %306

298:                                              ; preds = %293
  %299 = icmp eq i32 %277, %295
  %300 = icmp sgt i32 %294, 0
  %301 = sub nsw i32 1, %294
  %302 = xor i32 %294, -1
  %303 = select i1 %300, i32 %301, i32 %302
  %.0684 = select i1 %299, i32 %303, i32 %295
  %304 = load i32, ptr %4, align 4, !tbaa !34
  %305 = sub nsw i32 %.0684, %304
  br label %309

306:                                              ; preds = %293
  %307 = load i32, ptr %4, align 4, !tbaa !34
  %308 = sub nsw i32 0, %307
  br label %309

309:                                              ; preds = %306, %298
  %310 = phi i32 [ %307, %306 ], [ %304, %298 ]
  %storemerge810 = phi i32 [ %308, %306 ], [ %305, %298 ]
  %.1685 = phi i32 [ %295, %306 ], [ %.0684, %298 ]
  store i32 %storemerge810, ptr %195, align 8, !tbaa !34
  %311 = sub nsw i32 %310, %.1685
  br label %314

312:                                              ; preds = %._crit_edge
  %313 = load i32, ptr %4, align 4, !tbaa !34
  br label %314

314:                                              ; preds = %312, %309
  %.pn = phi i32 [ %311, %309 ], [ %313, %312 ]
  %.1659 = add nsw i32 %.pn, %.0658.lcssa
  %315 = mul i32 %.6939, 3
  %316 = add i32 %315, %.1659
  %317 = call i32 @llvm.abs.i32(i32 %.1659, i1 false)
  %318 = zext i32 %317 to i64
  %319 = icmp sgt i64 %318, %198
  br i1 %319, label %.thread898, label %320

320:                                              ; preds = %314
  %321 = getelementptr inbounds i8, ptr %.6692937, i64 4
  store i32 %.1659, ptr %.6692937, align 4, !tbaa !34
  %322 = add nuw i32 %.6653938, 1
  %exitcond.not = icmp eq i32 %322, %.0642
  br i1 %exitcond.not, label %.thread898.thread, label %199, !llvm.loop !49

.thread890:                                       ; preds = %.thread864, %189
  %.not766846870897 = phi i1 [ true, %189 ], [ %.not766841, %.thread864 ]
  %.not765845872896 = phi i1 [ %.not765, %189 ], [ %.not765840, %.thread864 ]
  %.0657843873895 = phi i32 [ %.0657, %189 ], [ %21, %.thread864 ]
  %or.cond829 = select i1 %.not765845872896, i1 %.not766846870897, i1 false
  br i1 %or.cond829, label %.preheader920, label %.thread898

.preheader920:                                    ; preds = %.thread890
  %323 = getelementptr inbounds i8, ptr %4, i64 4
  %.not1037 = icmp eq i32 %.0642, 0
  br i1 %.not1037, label %.thread898, label %.lr.ph984

.lr.ph984:                                        ; preds = %.preheader920
  %324 = and i32 %15, 32
  %.not778 = icmp eq i32 %324, 0
  %325 = getelementptr inbounds i8, ptr %13, i64 148
  %326 = getelementptr inbounds i8, ptr %13, i64 432
  %327 = and i32 %15, 16
  %.not780 = icmp eq i32 %327, 0
  %328 = and i32 %15, 64
  %.not784 = icmp eq i32 %328, 0
  %329 = getelementptr inbounds i8, ptr %13, i64 360
  %330 = getelementptr inbounds i8, ptr %13, i64 368
  %331 = getelementptr inbounds i8, ptr %13, i64 376
  %332 = and i32 %15, 536870912
  %333 = icmp ne i32 %332, 0
  %334 = getelementptr inbounds i8, ptr %13, i64 372
  %335 = getelementptr inbounds i8, ptr %13, i64 364
  %336 = getelementptr inbounds i8, ptr %13, i64 380
  %337 = sext i32 %.0657843873895 to i64
  br label %338

338:                                              ; preds = %.lr.ph984, %942
  %.7983 = phi i32 [ %17, %.lr.ph984 ], [ %947, %942 ]
  %.7654982 = phi i32 [ 0, %.lr.ph984 ], [ %950, %942 ]
  %.7693981 = phi ptr [ %1, %.lr.ph984 ], [ %949, %942 ]
  %.2712980 = phi i32 [ 0, %.lr.ph984 ], [ %851, %942 ]
  %339 = call i32 @get_word(ptr noundef %13, i32 noundef 0, ptr noundef nonnull %4) #6
  %340 = icmp eq i32 %339, -2147483648
  br i1 %340, label %.thread898, label %341

341:                                              ; preds = %338
  %342 = call i32 @get_word(ptr noundef %13, i32 noundef 1, ptr noundef nonnull %323) #6
  %343 = icmp eq i32 %342, -2147483648
  br i1 %343, label %.thread898, label %344

344:                                              ; preds = %341
  %.pre1067 = load i32, ptr %325, align 4, !tbaa !37
  br i1 %.not778, label %564, label %345

345:                                              ; preds = %344
  %346 = load i32, ptr %4, align 4, !tbaa !34
  %347 = add nsw i32 %346, %339
  %348 = load i32, ptr %323, align 4, !tbaa !34
  %349 = add nsw i32 %348, %342
  %.not779962 = icmp eq i32 %.pre1067, 0
  br i1 %.not779962, label %._crit_edge968, label %.lr.ph967

.lr.ph967:                                        ; preds = %345
  %350 = zext nneg i32 %.2712980 to i64
  br label %351

351:                                              ; preds = %.lr.ph967, %558
  %.in1038 = phi i32 [ %.pre1067, %.lr.ph967 ], [ %352, %558 ]
  %.0667965 = phi i32 [ %349, %.lr.ph967 ], [ %.1668, %558 ]
  %.0671964 = phi i32 [ %347, %.lr.ph967 ], [ %.1672, %558 ]
  %.3698963 = phi ptr [ %326, %.lr.ph967 ], [ %559, %558 ]
  %352 = add nsw i32 %.in1038, -1
  %353 = load i32, ptr %.3698963, align 4, !tbaa !45
  %354 = icmp sgt i32 %353, 0
  br i1 %354, label %355, label %435

355:                                              ; preds = %351
  %356 = icmp ugt i32 %353, 8
  br i1 %356, label %357, label %383

357:                                              ; preds = %355
  %358 = and i32 %353, 1
  %.not804 = icmp eq i32 %358, 0
  %359 = getelementptr inbounds i8, ptr %.3698963, i64 16
  %360 = load i32, ptr %359, align 4, !tbaa !34
  %361 = getelementptr inbounds i8, ptr %.3698963, i64 20
  %362 = load i32, ptr %361, align 4, !tbaa !34
  br i1 %.not804, label %372, label %363

363:                                              ; preds = %357
  %364 = shl nsw i32 %360, 1
  %365 = sub nsw i32 %364, %362
  %366 = getelementptr inbounds i8, ptr %.3698963, i64 48
  %367 = load i32, ptr %366, align 4, !tbaa !34
  %368 = shl nsw i32 %367, 1
  %369 = getelementptr inbounds i8, ptr %.3698963, i64 52
  %370 = load i32, ptr %369, align 4, !tbaa !34
  %371 = sub nsw i32 %368, %370
  br label %390

372:                                              ; preds = %357
  %373 = mul nsw i32 %360, 3
  %374 = sub nsw i32 %373, %362
  %375 = ashr i32 %374, 1
  %376 = getelementptr inbounds i8, ptr %.3698963, i64 48
  %377 = load i32, ptr %376, align 4, !tbaa !34
  %378 = mul nsw i32 %377, 3
  %379 = getelementptr inbounds i8, ptr %.3698963, i64 52
  %380 = load i32, ptr %379, align 4, !tbaa !34
  %381 = sub nsw i32 %378, %380
  %382 = ashr i32 %381, 1
  br label %390

383:                                              ; preds = %355
  %384 = getelementptr inbounds i8, ptr %.3698963, i64 16
  %385 = getelementptr inbounds [8 x i32], ptr %384, i64 0, i64 %350
  %386 = load i32, ptr %385, align 4, !tbaa !34
  %387 = getelementptr inbounds i8, ptr %.3698963, i64 48
  %388 = getelementptr inbounds [8 x i32], ptr %387, i64 0, i64 %350
  %389 = load i32, ptr %388, align 4, !tbaa !34
  br label %390

390:                                              ; preds = %363, %372, %383
  %.0666 = phi i32 [ %365, %363 ], [ %375, %372 ], [ %386, %383 ]
  %.0665 = phi i32 [ %371, %363 ], [ %382, %372 ], [ %389, %383 ]
  %391 = add i32 %.0666, 32768
  %.not805 = icmp ult i32 %391, 65536
  br i1 %.not805, label %404, label %392

392:                                              ; preds = %390
  %393 = and i32 %.0666, 65535
  %394 = getelementptr inbounds i8, ptr %.3698963, i64 8
  %395 = load i32, ptr %394, align 4, !tbaa !46
  %396 = mul nsw i32 %395, %393
  %397 = ashr i32 %396, 9
  %398 = ashr i32 %.0666, 9
  %399 = and i32 %398, -128
  %400 = mul nsw i32 %395, %399
  %401 = or disjoint i32 %400, 1
  %402 = add i32 %401, %397
  %403 = ashr i32 %402, 1
  br label %410

404:                                              ; preds = %390
  %405 = getelementptr inbounds i8, ptr %.3698963, i64 8
  %406 = load i32, ptr %405, align 4, !tbaa !46
  %407 = mul nsw i32 %406, %.0666
  %408 = add nsw i32 %407, 512
  %409 = ashr i32 %408, 10
  br label %410

410:                                              ; preds = %404, %392
  %411 = phi i32 [ %403, %392 ], [ %409, %404 ]
  %412 = add nsw i32 %411, %.0671964
  %413 = add i32 %.0665, 32768
  %.not806 = icmp ult i32 %413, 65536
  br i1 %.not806, label %426, label %414

414:                                              ; preds = %410
  %415 = and i32 %.0665, 65535
  %416 = getelementptr inbounds i8, ptr %.3698963, i64 12
  %417 = load i32, ptr %416, align 4, !tbaa !50
  %418 = mul nsw i32 %417, %415
  %419 = ashr i32 %418, 9
  %420 = ashr i32 %.0665, 9
  %421 = and i32 %420, -128
  %422 = mul nsw i32 %417, %421
  %423 = or disjoint i32 %422, 1
  %424 = add i32 %423, %419
  %425 = ashr i32 %424, 1
  br label %432

426:                                              ; preds = %410
  %427 = getelementptr inbounds i8, ptr %.3698963, i64 12
  %428 = load i32, ptr %427, align 4, !tbaa !50
  %429 = mul nsw i32 %428, %.0665
  %430 = add nsw i32 %429, 512
  %431 = ashr i32 %430, 10
  br label %432

432:                                              ; preds = %426, %414
  %433 = phi i32 [ %425, %414 ], [ %431, %426 ]
  %434 = add nsw i32 %433, %.0667965
  br label %558

435:                                              ; preds = %351
  %436 = icmp eq i32 %353, -1
  br i1 %436, label %437, label %484

437:                                              ; preds = %435
  %438 = getelementptr inbounds i8, ptr %.3698963, i64 16
  %439 = load i32, ptr %438, align 4, !tbaa !34
  %440 = add i32 %439, 32768
  %.not802 = icmp ult i32 %440, 65536
  br i1 %.not802, label %453, label %441

441:                                              ; preds = %437
  %442 = and i32 %439, 65535
  %443 = getelementptr inbounds i8, ptr %.3698963, i64 8
  %444 = load i32, ptr %443, align 4, !tbaa !46
  %445 = mul nsw i32 %444, %442
  %446 = ashr i32 %445, 9
  %447 = ashr i32 %439, 9
  %448 = and i32 %447, -128
  %449 = mul nsw i32 %444, %448
  %450 = or disjoint i32 %449, 1
  %451 = add i32 %450, %446
  %452 = ashr i32 %451, 1
  br label %459

453:                                              ; preds = %437
  %454 = getelementptr inbounds i8, ptr %.3698963, i64 8
  %455 = load i32, ptr %454, align 4, !tbaa !46
  %456 = mul nsw i32 %455, %439
  %457 = add nsw i32 %456, 512
  %458 = ashr i32 %457, 10
  br label %459

459:                                              ; preds = %453, %441
  %460 = phi i32 [ %452, %441 ], [ %458, %453 ]
  %461 = add nsw i32 %460, %.0671964
  %462 = add i32 %461, 32768
  %.not803 = icmp ult i32 %462, 65536
  br i1 %.not803, label %475, label %463

463:                                              ; preds = %459
  %464 = and i32 %461, 65535
  %465 = getelementptr inbounds i8, ptr %.3698963, i64 12
  %466 = load i32, ptr %465, align 4, !tbaa !50
  %467 = mul nsw i32 %466, %464
  %468 = ashr i32 %467, 9
  %469 = ashr i32 %461, 9
  %470 = and i32 %469, -128
  %471 = mul nsw i32 %466, %470
  %472 = or disjoint i32 %471, 1
  %473 = add i32 %472, %468
  %474 = ashr i32 %473, 1
  br label %481

475:                                              ; preds = %459
  %476 = getelementptr inbounds i8, ptr %.3698963, i64 12
  %477 = load i32, ptr %476, align 4, !tbaa !50
  %478 = mul nsw i32 %477, %461
  %479 = add nsw i32 %478, 512
  %480 = ashr i32 %479, 10
  br label %481

481:                                              ; preds = %475, %463
  %482 = phi i32 [ %474, %463 ], [ %480, %475 ]
  %483 = add nsw i32 %482, %.0667965
  br label %558

484:                                              ; preds = %435
  %485 = getelementptr inbounds i8, ptr %.3698963, i64 48
  %486 = load i32, ptr %485, align 4, !tbaa !34
  %487 = add i32 %486, 32768
  %.not799 = icmp ult i32 %487, 65536
  br i1 %.not799, label %500, label %488

488:                                              ; preds = %484
  %489 = and i32 %486, 65535
  %490 = getelementptr inbounds i8, ptr %.3698963, i64 12
  %491 = load i32, ptr %490, align 4, !tbaa !50
  %492 = mul nsw i32 %491, %489
  %493 = ashr i32 %492, 9
  %494 = ashr i32 %486, 9
  %495 = and i32 %494, -128
  %496 = mul nsw i32 %491, %495
  %497 = or disjoint i32 %496, 1
  %498 = add i32 %497, %493
  %499 = ashr i32 %498, 1
  br label %506

500:                                              ; preds = %484
  %501 = getelementptr inbounds i8, ptr %.3698963, i64 12
  %502 = load i32, ptr %501, align 4, !tbaa !50
  %503 = mul nsw i32 %502, %486
  %504 = add nsw i32 %503, 512
  %505 = ashr i32 %504, 10
  br label %506

506:                                              ; preds = %500, %488
  %507 = phi i32 [ %499, %488 ], [ %505, %500 ]
  %508 = add nsw i32 %507, %.0667965
  %509 = icmp eq i32 %353, -3
  br i1 %509, label %510, label %535

510:                                              ; preds = %506
  %511 = getelementptr inbounds i8, ptr %.3698963, i64 16
  %512 = load i32, ptr %511, align 4, !tbaa !34
  %513 = add i32 %512, 32768
  %.not801 = icmp ult i32 %513, 65536
  br i1 %.not801, label %526, label %514

514:                                              ; preds = %510
  %515 = and i32 %512, 65535
  %516 = getelementptr inbounds i8, ptr %.3698963, i64 8
  %517 = load i32, ptr %516, align 4, !tbaa !46
  %518 = mul nsw i32 %517, %515
  %519 = ashr i32 %518, 9
  %520 = ashr i32 %512, 9
  %521 = and i32 %520, -128
  %522 = mul nsw i32 %517, %521
  %523 = or disjoint i32 %522, 1
  %524 = add i32 %523, %519
  %525 = ashr i32 %524, 1
  br label %532

526:                                              ; preds = %510
  %527 = getelementptr inbounds i8, ptr %.3698963, i64 8
  %528 = load i32, ptr %527, align 4, !tbaa !46
  %529 = mul nsw i32 %528, %512
  %530 = add nsw i32 %529, 512
  %531 = ashr i32 %530, 10
  br label %532

532:                                              ; preds = %526, %514
  %533 = phi i32 [ %525, %514 ], [ %531, %526 ]
  %534 = add nsw i32 %533, %.0671964
  br label %558

535:                                              ; preds = %506
  %536 = add i32 %508, 32768
  %.not800 = icmp ult i32 %536, 65536
  br i1 %.not800, label %549, label %537

537:                                              ; preds = %535
  %538 = and i32 %508, 65535
  %539 = getelementptr inbounds i8, ptr %.3698963, i64 8
  %540 = load i32, ptr %539, align 4, !tbaa !46
  %541 = mul nsw i32 %540, %538
  %542 = ashr i32 %541, 9
  %543 = ashr i32 %508, 9
  %544 = and i32 %543, -128
  %545 = mul nsw i32 %540, %544
  %546 = or disjoint i32 %545, 1
  %547 = add i32 %546, %542
  %548 = ashr i32 %547, 1
  br label %555

549:                                              ; preds = %535
  %550 = getelementptr inbounds i8, ptr %.3698963, i64 8
  %551 = load i32, ptr %550, align 4, !tbaa !46
  %552 = mul nsw i32 %551, %508
  %553 = add nsw i32 %552, 512
  %554 = ashr i32 %553, 10
  br label %555

555:                                              ; preds = %549, %537
  %556 = phi i32 [ %548, %537 ], [ %554, %549 ]
  %557 = add nsw i32 %556, %.0671964
  br label %558

558:                                              ; preds = %481, %555, %532, %432
  %.1672 = phi i32 [ %412, %432 ], [ %461, %481 ], [ %534, %532 ], [ %557, %555 ]
  %.1668 = phi i32 [ %434, %432 ], [ %483, %481 ], [ %508, %532 ], [ %508, %555 ]
  %559 = getelementptr inbounds i8, ptr %.3698963, i64 96
  %.not779 = icmp eq i32 %352, 0
  br i1 %.not779, label %._crit_edge968, label %351, !llvm.loop !51

._crit_edge968:                                   ; preds = %558, %345
  %.0671.lcssa = phi i32 [ %347, %345 ], [ %.1672, %558 ]
  %.0667.lcssa = phi i32 [ %349, %345 ], [ %.1668, %558 ]
  br i1 %.not780, label %564, label %560

560:                                              ; preds = %._crit_edge968
  %561 = ashr i32 %.0671.lcssa, 1
  %562 = sub nsw i32 %.0667.lcssa, %561
  %563 = add nsw i32 %562, %.0671.lcssa
  br label %564

564:                                              ; preds = %._crit_edge968, %560, %344
  %.2673 = phi i32 [ %563, %560 ], [ %.0671.lcssa, %._crit_edge968 ], [ 0, %344 ]
  %.2669 = phi i32 [ %562, %560 ], [ %.0667.lcssa, %._crit_edge968 ], [ 0, %344 ]
  %.not781971 = icmp eq i32 %.pre1067, 0
  br i1 %.not781971, label %._crit_edge977, label %.lr.ph976

.lr.ph976:                                        ; preds = %564
  %565 = zext nneg i32 %.2712980 to i64
  br label %566

566:                                              ; preds = %.lr.ph976, %848
  %.in1039 = phi i32 [ %.pre1067, %.lr.ph976 ], [ %567, %848 ]
  %.0676974 = phi i32 [ %342, %.lr.ph976 ], [ %.1677, %848 ]
  %.0680973 = phi i32 [ %339, %.lr.ph976 ], [ %.1681, %848 ]
  %.4699972 = phi ptr [ %326, %.lr.ph976 ], [ %849, %848 ]
  %567 = add nsw i32 %.in1039, -1
  %568 = load i32, ptr %.4699972, align 4, !tbaa !45
  %569 = icmp sgt i32 %568, 0
  br i1 %569, label %570, label %687

570:                                              ; preds = %566
  %571 = icmp ugt i32 %568, 8
  br i1 %571, label %572, label %602

572:                                              ; preds = %570
  %573 = and i32 %568, 1
  %.not796 = icmp eq i32 %573, 0
  %574 = getelementptr inbounds i8, ptr %.4699972, i64 16
  %575 = load i32, ptr %574, align 4, !tbaa !34
  %576 = getelementptr inbounds i8, ptr %.4699972, i64 20
  %577 = load i32, ptr %576, align 4, !tbaa !34
  br i1 %.not796, label %587, label %578

578:                                              ; preds = %572
  %579 = shl nsw i32 %575, 1
  %580 = sub nsw i32 %579, %577
  %581 = getelementptr inbounds i8, ptr %.4699972, i64 48
  %582 = load i32, ptr %581, align 4, !tbaa !34
  %583 = shl nsw i32 %582, 1
  %584 = getelementptr inbounds i8, ptr %.4699972, i64 52
  %585 = load i32, ptr %584, align 4, !tbaa !34
  %586 = sub nsw i32 %583, %585
  br label %598

587:                                              ; preds = %572
  %588 = mul nsw i32 %575, 3
  %589 = sub nsw i32 %588, %577
  %590 = ashr i32 %589, 1
  %591 = getelementptr inbounds i8, ptr %.4699972, i64 48
  %592 = load i32, ptr %591, align 4, !tbaa !34
  %593 = mul nsw i32 %592, 3
  %594 = getelementptr inbounds i8, ptr %.4699972, i64 52
  %595 = load i32, ptr %594, align 4, !tbaa !34
  %596 = sub nsw i32 %593, %595
  %597 = ashr i32 %596, 1
  br label %598

598:                                              ; preds = %587, %578
  %599 = phi i32 [ %582, %578 ], [ %592, %587 ]
  %.0663 = phi i32 [ %580, %578 ], [ %590, %587 ]
  %.0661 = phi i32 [ %586, %578 ], [ %597, %587 ]
  %600 = getelementptr inbounds i8, ptr %.4699972, i64 20
  store i32 %575, ptr %600, align 4, !tbaa !34
  %601 = getelementptr inbounds i8, ptr %.4699972, i64 52
  store i32 %599, ptr %601, align 4, !tbaa !34
  br label %611

602:                                              ; preds = %570
  %603 = getelementptr inbounds i8, ptr %.4699972, i64 16
  %604 = getelementptr inbounds [8 x i32], ptr %603, i64 0, i64 %565
  %605 = load i32, ptr %604, align 4, !tbaa !34
  %606 = getelementptr inbounds i8, ptr %.4699972, i64 48
  %607 = getelementptr inbounds [8 x i32], ptr %606, i64 0, i64 %565
  %608 = load i32, ptr %607, align 4, !tbaa !34
  %609 = add nuw nsw i32 %568, %.2712980
  %610 = and i32 %609, 7
  br label %611

611:                                              ; preds = %602, %598
  %.1664 = phi i32 [ %.0663, %598 ], [ %605, %602 ]
  %.1662 = phi i32 [ %.0661, %598 ], [ %608, %602 ]
  %.0660 = phi i32 [ 0, %598 ], [ %610, %602 ]
  %612 = add i32 %.1664, 32768
  %.not797 = icmp ult i32 %612, 65536
  br i1 %.not797, label %625, label %613

613:                                              ; preds = %611
  %614 = and i32 %.1664, 65535
  %615 = getelementptr inbounds i8, ptr %.4699972, i64 8
  %616 = load i32, ptr %615, align 4, !tbaa !46
  %617 = mul nsw i32 %616, %614
  %618 = ashr i32 %617, 9
  %619 = ashr i32 %.1664, 9
  %620 = and i32 %619, -128
  %621 = mul nsw i32 %616, %620
  %622 = or disjoint i32 %621, 1
  %623 = add i32 %622, %618
  %624 = ashr i32 %623, 1
  br label %631

625:                                              ; preds = %611
  %626 = getelementptr inbounds i8, ptr %.4699972, i64 8
  %627 = load i32, ptr %626, align 4, !tbaa !46
  %628 = mul nsw i32 %627, %.1664
  %629 = add nsw i32 %628, 512
  %630 = ashr i32 %629, 10
  br label %631

631:                                              ; preds = %625, %613
  %632 = phi i32 [ %616, %613 ], [ %627, %625 ]
  %633 = phi i32 [ %624, %613 ], [ %630, %625 ]
  %634 = add nsw i32 %633, %.0680973
  %635 = add i32 %.1662, 32768
  %.not798 = icmp ult i32 %635, 65536
  br i1 %.not798, label %648, label %636

636:                                              ; preds = %631
  %637 = and i32 %.1662, 65535
  %638 = getelementptr inbounds i8, ptr %.4699972, i64 12
  %639 = load i32, ptr %638, align 4, !tbaa !50
  %640 = mul nsw i32 %639, %637
  %641 = ashr i32 %640, 9
  %642 = ashr i32 %.1662, 9
  %643 = and i32 %642, -128
  %644 = mul nsw i32 %639, %643
  %645 = or disjoint i32 %644, 1
  %646 = add i32 %645, %641
  %647 = ashr i32 %646, 1
  br label %654

648:                                              ; preds = %631
  %649 = getelementptr inbounds i8, ptr %.4699972, i64 12
  %650 = load i32, ptr %649, align 4, !tbaa !50
  %651 = mul nsw i32 %650, %.1662
  %652 = add nsw i32 %651, 512
  %653 = ashr i32 %652, 10
  br label %654

654:                                              ; preds = %648, %636
  %655 = phi i32 [ %639, %636 ], [ %650, %648 ]
  %656 = phi i32 [ %647, %636 ], [ %653, %648 ]
  %657 = add nsw i32 %656, %.0676974
  %658 = icmp ne i32 %.1664, 0
  %659 = icmp ne i32 %.0680973, 0
  %or.cond7 = select i1 %658, i1 %659, i1 false
  br i1 %or.cond7, label %660, label %669

660:                                              ; preds = %654
  %661 = xor i32 %.1664, %.0680973
  %.neg1043 = lshr i32 %661, 31
  %662 = ashr i32 %661, 31
  %663 = getelementptr inbounds i8, ptr %.4699972, i64 4
  %664 = load i32, ptr %663, align 4, !tbaa !47
  %665 = xor i32 %664, %662
  %666 = getelementptr inbounds i8, ptr %.4699972, i64 8
  %667 = add i32 %632, %.neg1043
  %668 = add nsw i32 %667, %665
  store i32 %668, ptr %666, align 4, !tbaa !46
  br label %669

669:                                              ; preds = %660, %654
  %670 = icmp ne i32 %.1662, 0
  %671 = icmp ne i32 %.0676974, 0
  %or.cond9 = select i1 %670, i1 %671, i1 false
  br i1 %or.cond9, label %672, label %681

672:                                              ; preds = %669
  %673 = xor i32 %.1662, %.0676974
  %.neg1044 = lshr i32 %673, 31
  %674 = ashr i32 %673, 31
  %675 = getelementptr inbounds i8, ptr %.4699972, i64 4
  %676 = load i32, ptr %675, align 4, !tbaa !47
  %677 = xor i32 %676, %674
  %678 = getelementptr inbounds i8, ptr %.4699972, i64 12
  %679 = add i32 %655, %.neg1044
  %680 = add nsw i32 %679, %677
  store i32 %680, ptr %678, align 4, !tbaa !50
  br label %681

681:                                              ; preds = %672, %669
  %682 = getelementptr inbounds i8, ptr %.4699972, i64 16
  %683 = zext nneg i32 %.0660 to i64
  %684 = getelementptr inbounds [8 x i32], ptr %682, i64 0, i64 %683
  store i32 %634, ptr %684, align 4, !tbaa !34
  %685 = getelementptr inbounds i8, ptr %.4699972, i64 48
  %686 = getelementptr inbounds [8 x i32], ptr %685, i64 0, i64 %683
  store i32 %657, ptr %686, align 4, !tbaa !34
  br label %848

687:                                              ; preds = %566
  %688 = icmp eq i32 %568, -1
  br i1 %688, label %689, label %766

689:                                              ; preds = %687
  %690 = getelementptr inbounds i8, ptr %.4699972, i64 16
  %691 = load i32, ptr %690, align 4, !tbaa !34
  %692 = add i32 %691, 32768
  %.not792 = icmp ult i32 %692, 65536
  br i1 %.not792, label %705, label %693

693:                                              ; preds = %689
  %694 = and i32 %691, 65535
  %695 = getelementptr inbounds i8, ptr %.4699972, i64 8
  %696 = load i32, ptr %695, align 4, !tbaa !46
  %697 = mul nsw i32 %696, %694
  %698 = ashr i32 %697, 9
  %699 = ashr i32 %691, 9
  %700 = and i32 %699, -128
  %701 = mul nsw i32 %696, %700
  %702 = or disjoint i32 %701, 1
  %703 = add i32 %702, %698
  %704 = ashr i32 %703, 1
  br label %711

705:                                              ; preds = %689
  %706 = getelementptr inbounds i8, ptr %.4699972, i64 8
  %707 = load i32, ptr %706, align 4, !tbaa !46
  %708 = mul nsw i32 %707, %691
  %709 = add nsw i32 %708, 512
  %710 = ashr i32 %709, 10
  br label %711

711:                                              ; preds = %705, %693
  %712 = phi i32 [ %696, %693 ], [ %707, %705 ]
  %713 = phi i32 [ %704, %693 ], [ %710, %705 ]
  %714 = add nsw i32 %713, %.0680973
  %715 = icmp ne i32 %691, 0
  %716 = icmp ne i32 %.0680973, 0
  %or.cond11 = select i1 %715, i1 %716, i1 false
  br i1 %or.cond11, label %717, label %728

717:                                              ; preds = %711
  %718 = xor i32 %691, %.0680973
  %.neg1041 = lshr i32 %718, 31
  %719 = ashr i32 %718, 31
  %720 = getelementptr inbounds i8, ptr %.4699972, i64 8
  %721 = xor i32 %712, %719
  %722 = getelementptr inbounds i8, ptr %.4699972, i64 4
  %723 = load i32, ptr %722, align 4, !tbaa !47
  %724 = add i32 %723, %.neg1041
  %725 = add nsw i32 %724, %721
  %spec.select830 = call i32 @llvm.smin.i32(i32 %725, i32 1024)
  %726 = xor i32 %spec.select830, %719
  %727 = sub nsw i32 %726, %719
  store i32 %727, ptr %720, align 4, !tbaa !46
  br label %728

728:                                              ; preds = %717, %711
  %729 = add i32 %714, 32768
  %.not794 = icmp ult i32 %729, 65536
  br i1 %.not794, label %742, label %730

730:                                              ; preds = %728
  %731 = and i32 %714, 65535
  %732 = getelementptr inbounds i8, ptr %.4699972, i64 12
  %733 = load i32, ptr %732, align 4, !tbaa !50
  %734 = mul nsw i32 %733, %731
  %735 = ashr i32 %734, 9
  %736 = ashr i32 %714, 9
  %737 = and i32 %736, -128
  %738 = mul nsw i32 %733, %737
  %739 = or disjoint i32 %738, 1
  %740 = add i32 %739, %735
  %741 = ashr i32 %740, 1
  br label %748

742:                                              ; preds = %728
  %743 = getelementptr inbounds i8, ptr %.4699972, i64 12
  %744 = load i32, ptr %743, align 4, !tbaa !50
  %745 = mul nsw i32 %744, %714
  %746 = add nsw i32 %745, 512
  %747 = ashr i32 %746, 10
  br label %748

748:                                              ; preds = %742, %730
  %749 = phi i32 [ %733, %730 ], [ %744, %742 ]
  %750 = phi i32 [ %741, %730 ], [ %747, %742 ]
  %751 = add nsw i32 %750, %.0676974
  %752 = icmp ne i32 %714, 0
  %753 = icmp ne i32 %.0676974, 0
  %or.cond13 = select i1 %752, i1 %753, i1 false
  br i1 %or.cond13, label %754, label %765

754:                                              ; preds = %748
  %755 = xor i32 %714, %.0676974
  %.neg1042 = lshr i32 %755, 31
  %756 = ashr i32 %755, 31
  %757 = getelementptr inbounds i8, ptr %.4699972, i64 12
  %758 = xor i32 %749, %756
  %759 = getelementptr inbounds i8, ptr %.4699972, i64 4
  %760 = load i32, ptr %759, align 4, !tbaa !47
  %761 = add i32 %760, %.neg1042
  %762 = add nsw i32 %761, %758
  %spec.select831 = call i32 @llvm.smin.i32(i32 %762, i32 1024)
  %763 = xor i32 %spec.select831, %756
  %764 = sub nsw i32 %763, %756
  store i32 %764, ptr %757, align 4, !tbaa !50
  br label %765

765:                                              ; preds = %754, %748
  store i32 %751, ptr %690, align 4, !tbaa !34
  br label %848

766:                                              ; preds = %687
  %767 = getelementptr inbounds i8, ptr %.4699972, i64 48
  %768 = load i32, ptr %767, align 4, !tbaa !34
  %769 = add i32 %768, 32768
  %.not788 = icmp ult i32 %769, 65536
  br i1 %.not788, label %782, label %770

770:                                              ; preds = %766
  %771 = and i32 %768, 65535
  %772 = getelementptr inbounds i8, ptr %.4699972, i64 12
  %773 = load i32, ptr %772, align 4, !tbaa !50
  %774 = mul nsw i32 %773, %771
  %775 = ashr i32 %774, 9
  %776 = ashr i32 %768, 9
  %777 = and i32 %776, -128
  %778 = mul nsw i32 %773, %777
  %779 = or disjoint i32 %778, 1
  %780 = add i32 %779, %775
  %781 = ashr i32 %780, 1
  br label %788

782:                                              ; preds = %766
  %783 = getelementptr inbounds i8, ptr %.4699972, i64 12
  %784 = load i32, ptr %783, align 4, !tbaa !50
  %785 = mul nsw i32 %784, %768
  %786 = add nsw i32 %785, 512
  %787 = ashr i32 %786, 10
  br label %788

788:                                              ; preds = %782, %770
  %789 = phi i32 [ %773, %770 ], [ %784, %782 ]
  %790 = phi i32 [ %781, %770 ], [ %787, %782 ]
  %791 = add nsw i32 %790, %.0676974
  %792 = icmp ne i32 %768, 0
  %793 = icmp ne i32 %.0676974, 0
  %or.cond15 = select i1 %792, i1 %793, i1 false
  br i1 %or.cond15, label %794, label %805

794:                                              ; preds = %788
  %795 = xor i32 %768, %.0676974
  %.neg = lshr i32 %795, 31
  %796 = ashr i32 %795, 31
  %797 = getelementptr inbounds i8, ptr %.4699972, i64 12
  %798 = xor i32 %789, %796
  %799 = getelementptr inbounds i8, ptr %.4699972, i64 4
  %800 = load i32, ptr %799, align 4, !tbaa !47
  %801 = add i32 %800, %.neg
  %802 = add nsw i32 %801, %798
  %spec.select832 = call i32 @llvm.smin.i32(i32 %802, i32 1024)
  %803 = xor i32 %spec.select832, %796
  %804 = sub nsw i32 %803, %796
  store i32 %804, ptr %797, align 4, !tbaa !50
  br label %805

805:                                              ; preds = %794, %788
  %806 = icmp eq i32 %568, -3
  br i1 %806, label %807, label %810

807:                                              ; preds = %805
  %808 = getelementptr inbounds i8, ptr %.4699972, i64 16
  %809 = load i32, ptr %808, align 4, !tbaa !34
  store i32 %791, ptr %808, align 4, !tbaa !34
  br label %810

810:                                              ; preds = %807, %805
  %.0675 = phi i32 [ %809, %807 ], [ %791, %805 ]
  %811 = add i32 %.0675, 32768
  %.not790 = icmp ult i32 %811, 65536
  br i1 %.not790, label %824, label %812

812:                                              ; preds = %810
  %813 = and i32 %.0675, 65535
  %814 = getelementptr inbounds i8, ptr %.4699972, i64 8
  %815 = load i32, ptr %814, align 4, !tbaa !46
  %816 = mul nsw i32 %815, %813
  %817 = ashr i32 %816, 9
  %818 = ashr i32 %.0675, 9
  %819 = and i32 %818, -128
  %820 = mul nsw i32 %815, %819
  %821 = or disjoint i32 %820, 1
  %822 = add i32 %821, %817
  %823 = ashr i32 %822, 1
  br label %830

824:                                              ; preds = %810
  %825 = getelementptr inbounds i8, ptr %.4699972, i64 8
  %826 = load i32, ptr %825, align 4, !tbaa !46
  %827 = mul nsw i32 %826, %.0675
  %828 = add nsw i32 %827, 512
  %829 = ashr i32 %828, 10
  br label %830

830:                                              ; preds = %824, %812
  %831 = phi i32 [ %815, %812 ], [ %826, %824 ]
  %832 = phi i32 [ %823, %812 ], [ %829, %824 ]
  %833 = add nsw i32 %832, %.0680973
  %834 = icmp ne i32 %.0675, 0
  %835 = icmp ne i32 %.0680973, 0
  %or.cond17 = select i1 %834, i1 %835, i1 false
  br i1 %or.cond17, label %836, label %847

836:                                              ; preds = %830
  %837 = xor i32 %.0675, %.0680973
  %.neg1040 = lshr i32 %837, 31
  %838 = ashr i32 %837, 31
  %839 = getelementptr inbounds i8, ptr %.4699972, i64 8
  %840 = xor i32 %831, %838
  %841 = getelementptr inbounds i8, ptr %.4699972, i64 4
  %842 = load i32, ptr %841, align 4, !tbaa !47
  %843 = add i32 %842, %.neg1040
  %844 = add nsw i32 %843, %840
  %spec.select833 = call i32 @llvm.smin.i32(i32 %844, i32 1024)
  %845 = xor i32 %spec.select833, %838
  %846 = sub nsw i32 %845, %838
  store i32 %846, ptr %839, align 4, !tbaa !46
  br label %847

847:                                              ; preds = %836, %830
  store i32 %833, ptr %767, align 4, !tbaa !34
  br label %848

848:                                              ; preds = %765, %847, %681
  %.1681 = phi i32 [ %634, %681 ], [ %714, %765 ], [ %833, %847 ]
  %.1677 = phi i32 [ %657, %681 ], [ %751, %765 ], [ %791, %847 ]
  %849 = getelementptr inbounds i8, ptr %.4699972, i64 96
  %.not781 = icmp eq i32 %567, 0
  br i1 %.not781, label %._crit_edge977, label %566, !llvm.loop !52

._crit_edge977:                                   ; preds = %848, %564
  %.0680.lcssa = phi i32 [ %339, %564 ], [ %.1681, %848 ]
  %.0676.lcssa = phi i32 [ %342, %564 ], [ %.1677, %848 ]
  %850 = add nuw nsw i32 %.2712980, 1
  %851 = and i32 %850, 7
  br i1 %.not778, label %852, label %861

852:                                              ; preds = %._crit_edge977
  %853 = load i32, ptr %4, align 4, !tbaa !34
  %854 = add nsw i32 %853, %.0680.lcssa
  %855 = load i32, ptr %323, align 4, !tbaa !34
  %856 = add nsw i32 %855, %.0676.lcssa
  br i1 %.not780, label %861, label %857

857:                                              ; preds = %852
  %858 = ashr i32 %854, 1
  %859 = sub nsw i32 %856, %858
  %860 = add nsw i32 %859, %854
  br label %861

861:                                              ; preds = %852, %857, %._crit_edge977
  %.3674 = phi i32 [ %.2673, %._crit_edge977 ], [ %860, %857 ], [ %854, %852 ]
  %.3670 = phi i32 [ %.2669, %._crit_edge977 ], [ %859, %857 ], [ %856, %852 ]
  %862 = ashr i32 %.0680.lcssa, 1
  %863 = sub nsw i32 %.0676.lcssa, %862
  %.2678 = select i1 %.not780, i32 %.0676.lcssa, i32 %863
  br i1 %.not784, label %935, label %864

864:                                              ; preds = %861
  %865 = select i1 %.not780, i32 0, i32 %863
  %866 = add i32 %865, %.0680.lcssa
  %867 = sub i32 %.3674, %866
  store i32 %867, ptr %4, align 4, !tbaa !34
  %868 = load i32, ptr %330, align 8, !tbaa !34
  %869 = load i32, ptr %329, align 8, !tbaa !34
  %870 = add nsw i32 %869, %868
  store i32 %870, ptr %329, align 8, !tbaa !34
  %871 = ashr i32 %870, 16
  %872 = load i32, ptr %331, align 8, !tbaa !34
  %873 = add i32 %872, 32768
  %.not785 = icmp ult i32 %873, 65536
  br i1 %.not785, label %884, label %874

874:                                              ; preds = %864
  %875 = and i32 %872, 65535
  %876 = mul nsw i32 %875, %871
  %877 = ashr i32 %876, 9
  %878 = ashr i32 %872, 9
  %879 = and i32 %878, -128
  %880 = mul nsw i32 %879, %871
  %881 = or disjoint i32 %880, 1
  %882 = add i32 %881, %877
  %883 = ashr i32 %882, 1
  br label %888

884:                                              ; preds = %864
  %885 = mul nsw i32 %871, %872
  %886 = add nsw i32 %885, 512
  %887 = ashr i32 %886, 10
  br label %888

888:                                              ; preds = %884, %874
  %889 = phi i32 [ %883, %874 ], [ %887, %884 ]
  %890 = sub nsw i32 0, %889
  %891 = icmp slt i32 %871, 0
  %or.cond19 = select i1 %333, i1 %891, i1 false
  %892 = icmp ne i32 %889, 0
  %or.cond21 = select i1 %or.cond19, i1 %892, i1 false
  br i1 %or.cond21, label %893, label %899

893:                                              ; preds = %888
  %894 = icmp eq i32 %872, %890
  %895 = icmp sgt i32 %889, 0
  %896 = sub nsw i32 1, %889
  %897 = xor i32 %889, -1
  %898 = select i1 %895, i32 %896, i32 %897
  %.0640 = select i1 %894, i32 %898, i32 %890
  br label %899

899:                                              ; preds = %888, %893
  %.pn906 = phi i32 [ %.0640, %893 ], [ 0, %888 ]
  %.1 = phi i32 [ %.0640, %893 ], [ %890, %888 ]
  %storemerge = sub nsw i32 %.pn906, %867
  store i32 %storemerge, ptr %331, align 8, !tbaa !34
  %900 = sub nsw i32 %.3674, %.1
  %901 = sub nsw i32 %.3670, %.2678
  store i32 %901, ptr %323, align 4, !tbaa !34
  %902 = load i32, ptr %334, align 4, !tbaa !34
  %903 = load i32, ptr %335, align 4, !tbaa !34
  %904 = add nsw i32 %903, %902
  store i32 %904, ptr %335, align 4, !tbaa !34
  %905 = ashr i32 %904, 16
  %906 = load i32, ptr %336, align 4, !tbaa !34
  %907 = add i32 %906, 32768
  %.not786 = icmp ult i32 %907, 65536
  br i1 %.not786, label %918, label %908

908:                                              ; preds = %899
  %909 = and i32 %906, 65535
  %910 = mul nsw i32 %909, %905
  %911 = ashr i32 %910, 9
  %912 = ashr i32 %906, 9
  %913 = and i32 %912, -128
  %914 = mul nsw i32 %913, %905
  %915 = or disjoint i32 %914, 1
  %916 = add i32 %915, %911
  %917 = ashr i32 %916, 1
  br label %922

918:                                              ; preds = %899
  %919 = mul nsw i32 %905, %906
  %920 = add nsw i32 %919, 512
  %921 = ashr i32 %920, 10
  br label %922

922:                                              ; preds = %918, %908
  %923 = phi i32 [ %917, %908 ], [ %921, %918 ]
  %924 = sub nsw i32 0, %923
  %925 = icmp slt i32 %905, 0
  %or.cond23 = select i1 %333, i1 %925, i1 false
  %926 = icmp ne i32 %923, 0
  %or.cond25 = select i1 %or.cond23, i1 %926, i1 false
  br i1 %or.cond25, label %927, label %933

927:                                              ; preds = %922
  %928 = icmp eq i32 %906, %924
  %929 = icmp sgt i32 %923, 0
  %930 = sub nsw i32 1, %923
  %931 = xor i32 %923, -1
  %932 = select i1 %929, i32 %930, i32 %931
  %.2 = select i1 %928, i32 %932, i32 %924
  br label %933

933:                                              ; preds = %922, %927
  %.pn907 = phi i32 [ %.2, %927 ], [ 0, %922 ]
  %.3 = phi i32 [ %.2, %927 ], [ %924, %922 ]
  %storemerge787 = sub nsw i32 %.pn907, %901
  store i32 %storemerge787, ptr %336, align 4, !tbaa !34
  %934 = sub nsw i32 %.3670, %.3
  br label %935

935:                                              ; preds = %861, %933
  %.3683 = phi i32 [ %900, %933 ], [ %.3674, %861 ]
  %.3679 = phi i32 [ %934, %933 ], [ %.3670, %861 ]
  %936 = call i32 @llvm.abs.i32(i32 %.3683, i1 false)
  %937 = zext i32 %936 to i64
  %938 = icmp sgt i64 %937, %337
  %939 = call i32 @llvm.abs.i32(i32 %.3679, i1 false)
  %940 = zext i32 %939 to i64
  %941 = icmp sgt i64 %940, %337
  %or.cond836 = select i1 %938, i1 true, i1 %941
  br i1 %or.cond836, label %.thread898, label %942

942:                                              ; preds = %935
  %943 = shl i32 %.3683, 1
  %944 = mul i32 %.7983, 9
  %945 = add i32 %944, %.3683
  %946 = add i32 %945, %943
  %947 = add i32 %946, %.3679
  %948 = getelementptr inbounds i8, ptr %.7693981, i64 4
  store i32 %.3683, ptr %.7693981, align 4, !tbaa !34
  %949 = getelementptr inbounds i8, ptr %.7693981, i64 8
  store i32 %.3679, ptr %948, align 4, !tbaa !34
  %950 = add nuw i32 %.7654982, 1
  %exitcond1063.not = icmp eq i32 %950, %.0642
  br i1 %exitcond1063.not, label %.thread898.thread, label %338, !llvm.loop !53

.thread898:                                       ; preds = %199, %314, %341, %338, %935, %.preheader925, %.preheader920, %.thread890, %133, %180, %84, %99
  %.not766847 = phi i1 [ false, %99 ], [ false, %84 ], [ true, %133 ], [ true, %180 ], [ %.not766846870897, %.thread890 ], [ true, %.preheader920 ], [ false, %.preheader925 ], [ true, %935 ], [ true, %338 ], [ true, %341 ], [ false, %314 ], [ false, %199 ]
  %.4714 = phi i32 [ 0, %99 ], [ 0, %84 ], [ 0, %133 ], [ %141, %180 ], [ 0, %.thread890 ], [ 0, %.preheader920 ], [ 0, %.preheader925 ], [ %.2712980, %341 ], [ %.2712980, %338 ], [ %851, %935 ], [ %.1711936, %199 ], [ %271, %314 ]
  %.8655 = phi i32 [ %104, %99 ], [ %.0647, %84 ], [ %.3650, %133 ], [ %185, %180 ], [ 0, %.thread890 ], [ 0, %.preheader920 ], [ 0, %.preheader925 ], [ %.7654982, %935 ], [ %.7654982, %338 ], [ %.7654982, %341 ], [ %.6653938, %314 ], [ %.6653938, %199 ]
  %.9 = phi i32 [ %.0643959, %99 ], [ %17, %84 ], [ %17, %133 ], [ %.4, %180 ], [ %17, %.thread890 ], [ %17, %.preheader920 ], [ %17, %.preheader925 ], [ %.7983, %935 ], [ %.7983, %338 ], [ %.7983, %341 ], [ %.6939, %199 ], [ %316, %314 ]
  %.not813 = icmp eq i32 %.8655, %.0642
  br i1 %.not813, label %.thread898.thread, label %951

951:                                              ; preds = %.thread898
  %952 = and i32 %15, 4
  %.not814 = icmp eq i32 %952, 0
  %953 = select i1 %.not814, i32 3, i32 2
  %954 = shl i32 %.0642, %953
  %955 = zext i32 %954 to i64
  call void @llvm.memset.p0.i64(ptr align 4 %1, i8 0, i64 %955, i1 false)
  store i8 1, ptr %42, align 4, !tbaa !30
  %956 = getelementptr inbounds i8, ptr %13, i64 312
  %957 = load ptr, ptr %956, align 8, !tbaa !54
  %.not815 = icmp eq ptr %957, null
  br i1 %.not815, label %.thread898.thread, label %958

958:                                              ; preds = %951
  %959 = getelementptr inbounds i8, ptr %13, i64 296
  %960 = call i32 @bs_close_read(ptr noundef nonnull %959) #6
  br label %.thread898.thread

.thread898.thread:                                ; preds = %320, %942, %186, %.loopexit917, %951, %958, %.thread898
  %.91077 = phi i32 [ %.9, %951 ], [ %.9, %958 ], [ %.9, %.thread898 ], [ %.4, %.loopexit917 ], [ %.4, %186 ], [ %947, %942 ], [ %316, %320 ]
  %.47141076 = phi i32 [ %.4714, %951 ], [ %.4714, %958 ], [ %.4714, %.thread898 ], [ %141, %.loopexit917 ], [ %141, %186 ], [ %851, %942 ], [ %271, %320 ]
  %.not7668471075 = phi i1 [ %.not766847, %951 ], [ %.not766847, %958 ], [ %.not766847, %.thread898 ], [ true, %.loopexit917 ], [ true, %186 ], [ true, %942 ], [ false, %320 ]
  %.not816 = icmp eq i32 %.47141076, 0
  br i1 %.not816, label %.loopexit916, label %961

961:                                              ; preds = %.thread898.thread
  %962 = getelementptr inbounds i8, ptr %13, i64 148
  %963 = load i32, ptr %962, align 4, !tbaa !37
  %.not8171018 = icmp eq i32 %963, 0
  br i1 %.not8171018, label %.loopexit916, label %.lr.ph1022.preheader

.lr.ph1022.preheader:                             ; preds = %961
  %964 = getelementptr inbounds i8, ptr %13, i64 432
  br label %.lr.ph1022

.lr.ph1022:                                       ; preds = %.lr.ph1022.preheader, %1039
  %.in1045 = phi i32 [ %965, %1039 ], [ %963, %.lr.ph1022.preheader ]
  %.57001020 = phi ptr [ %1040, %1039 ], [ %964, %.lr.ph1022.preheader ]
  %.57151019 = phi i32 [ %.7717, %1039 ], [ %.47141076, %.lr.ph1022.preheader ]
  %965 = add nsw i32 %.in1045, -1
  %966 = load i32, ptr %.57001020, align 4, !tbaa !45
  %967 = add i32 %966, -1
  %or.cond838 = icmp ult i32 %967, 8
  br i1 %or.cond838, label %968, label %1039

968:                                              ; preds = %.lr.ph1022
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #6
  %969 = getelementptr inbounds i8, ptr %.57001020, i64 16
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %5, ptr noundef nonnull align 4 dereferenceable(32) %969, i64 32, i1 false)
  %970 = getelementptr inbounds i8, ptr %.57001020, i64 48
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %6, ptr noundef nonnull align 4 dereferenceable(32) %970, i64 32, i1 false)
  %971 = sext i32 %.57151019 to i64
  %972 = getelementptr inbounds [8 x i32], ptr %5, i64 0, i64 %971
  %973 = load i32, ptr %972, align 4, !tbaa !34
  store i32 %973, ptr %969, align 4, !tbaa !34
  %974 = getelementptr inbounds [8 x i32], ptr %6, i64 0, i64 %971
  %975 = load i32, ptr %974, align 4, !tbaa !34
  store i32 %975, ptr %970, align 4, !tbaa !34
  %976 = add nsw i32 %.57151019, 1
  %977 = and i32 %976, 7
  %978 = zext nneg i32 %977 to i64
  %979 = getelementptr inbounds [8 x i32], ptr %5, i64 0, i64 %978
  %980 = load i32, ptr %979, align 4, !tbaa !34
  %981 = getelementptr inbounds i8, ptr %.57001020, i64 20
  store i32 %980, ptr %981, align 4, !tbaa !34
  %982 = getelementptr inbounds [8 x i32], ptr %6, i64 0, i64 %978
  %983 = load i32, ptr %982, align 4, !tbaa !34
  %984 = getelementptr inbounds i8, ptr %.57001020, i64 52
  store i32 %983, ptr %984, align 4, !tbaa !34
  %985 = add i32 %.57151019, 2
  %986 = and i32 %985, 7
  %987 = zext nneg i32 %986 to i64
  %988 = getelementptr inbounds [8 x i32], ptr %5, i64 0, i64 %987
  %989 = load i32, ptr %988, align 4, !tbaa !34
  %990 = getelementptr inbounds i8, ptr %.57001020, i64 24
  store i32 %989, ptr %990, align 4, !tbaa !34
  %991 = getelementptr inbounds [8 x i32], ptr %6, i64 0, i64 %987
  %992 = load i32, ptr %991, align 4, !tbaa !34
  %993 = getelementptr inbounds i8, ptr %.57001020, i64 56
  store i32 %992, ptr %993, align 4, !tbaa !34
  %994 = add i32 %.57151019, 3
  %995 = and i32 %994, 7
  %996 = zext nneg i32 %995 to i64
  %997 = getelementptr inbounds [8 x i32], ptr %5, i64 0, i64 %996
  %998 = load i32, ptr %997, align 4, !tbaa !34
  %999 = getelementptr inbounds i8, ptr %.57001020, i64 28
  store i32 %998, ptr %999, align 4, !tbaa !34
  %1000 = getelementptr inbounds [8 x i32], ptr %6, i64 0, i64 %996
  %1001 = load i32, ptr %1000, align 4, !tbaa !34
  %1002 = getelementptr inbounds i8, ptr %.57001020, i64 60
  store i32 %1001, ptr %1002, align 4, !tbaa !34
  %1003 = and i32 %.57151019, 7
  %1004 = xor i32 %1003, 4
  %1005 = zext nneg i32 %1004 to i64
  %1006 = getelementptr inbounds [8 x i32], ptr %5, i64 0, i64 %1005
  %1007 = load i32, ptr %1006, align 4, !tbaa !34
  %1008 = getelementptr inbounds i8, ptr %.57001020, i64 32
  store i32 %1007, ptr %1008, align 4, !tbaa !34
  %1009 = getelementptr inbounds [8 x i32], ptr %6, i64 0, i64 %1005
  %1010 = load i32, ptr %1009, align 4, !tbaa !34
  %1011 = getelementptr inbounds i8, ptr %.57001020, i64 64
  store i32 %1010, ptr %1011, align 4, !tbaa !34
  %1012 = add nuw nsw i32 %1004, 1
  %1013 = and i32 %1012, 7
  %1014 = zext nneg i32 %1013 to i64
  %1015 = getelementptr inbounds [8 x i32], ptr %5, i64 0, i64 %1014
  %1016 = load i32, ptr %1015, align 4, !tbaa !34
  %1017 = getelementptr inbounds i8, ptr %.57001020, i64 36
  store i32 %1016, ptr %1017, align 4, !tbaa !34
  %1018 = getelementptr inbounds [8 x i32], ptr %6, i64 0, i64 %1014
  %1019 = load i32, ptr %1018, align 4, !tbaa !34
  %1020 = getelementptr inbounds i8, ptr %.57001020, i64 68
  store i32 %1019, ptr %1020, align 4, !tbaa !34
  %1021 = add nuw nsw i32 %1004, 2
  %1022 = and i32 %1021, 7
  %1023 = zext nneg i32 %1022 to i64
  %1024 = getelementptr inbounds [8 x i32], ptr %5, i64 0, i64 %1023
  %1025 = load i32, ptr %1024, align 4, !tbaa !34
  %1026 = getelementptr inbounds i8, ptr %.57001020, i64 40
  store i32 %1025, ptr %1026, align 4, !tbaa !34
  %1027 = getelementptr inbounds [8 x i32], ptr %6, i64 0, i64 %1023
  %1028 = load i32, ptr %1027, align 4, !tbaa !34
  %1029 = getelementptr inbounds i8, ptr %.57001020, i64 72
  store i32 %1028, ptr %1029, align 4, !tbaa !34
  %1030 = add nuw nsw i32 %1004, 3
  %1031 = and i32 %1030, 7
  %1032 = zext nneg i32 %1031 to i64
  %1033 = getelementptr inbounds [8 x i32], ptr %5, i64 0, i64 %1032
  %1034 = load i32, ptr %1033, align 4, !tbaa !34
  %1035 = getelementptr inbounds i8, ptr %.57001020, i64 44
  store i32 %1034, ptr %1035, align 4, !tbaa !34
  %1036 = getelementptr inbounds [8 x i32], ptr %6, i64 0, i64 %1032
  %1037 = load i32, ptr %1036, align 4, !tbaa !34
  %1038 = getelementptr inbounds i8, ptr %.57001020, i64 76
  store i32 %1037, ptr %1038, align 4, !tbaa !34
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  br label %1039

1039:                                             ; preds = %.lr.ph1022, %968
  %.7717 = phi i32 [ %1003, %968 ], [ %.57151019, %.lr.ph1022 ]
  %1040 = getelementptr inbounds i8, ptr %.57001020, i64 96
  %.not817 = icmp eq i32 %965, 0
  br i1 %.not817, label %.loopexit916, label %.lr.ph1022, !llvm.loop !55

.loopexit916:                                     ; preds = %105, %1039, %.preheader922, %961, %.thread898.thread
  %.not76684710751083 = phi i1 [ %.not7668471075, %961 ], [ %.not7668471075, %.thread898.thread ], [ false, %.preheader922 ], [ %.not7668471075, %1039 ], [ false, %105 ]
  %.910771082 = phi i32 [ %.91077, %961 ], [ %.91077, %.thread898.thread ], [ %17, %.preheader922 ], [ %.91077, %1039 ], [ %107, %105 ]
  call void @fixup_samples(ptr noundef %0, ptr noundef %1, i32 noundef %.0642)
  %1041 = and i32 %15, 128
  %.not818 = icmp eq i32 %1041, 0
  br i1 %.not818, label %1055, label %1042

1042:                                             ; preds = %.loopexit916
  %1043 = getelementptr inbounds i8, ptr %0, i64 228
  %1044 = load i32, ptr %1043, align 4, !tbaa !56
  %1045 = and i32 %1044, 16
  %.not819 = icmp eq i32 %1045, 0
  br i1 %.not819, label %1055, label %1046

1046:                                             ; preds = %1042
  %1047 = zext i1 %.not76684710751083 to i32
  %1048 = shl i32 %.0642, %1047
  %1049 = getelementptr inbounds i8, ptr %13, i64 355
  %1050 = load i8, ptr %1049, align 1, !tbaa !57
  %1051 = zext i8 %1050 to i32
  %1052 = getelementptr inbounds i8, ptr %0, i64 232
  %1053 = load i32, ptr %1052, align 8, !tbaa !58
  %reass.sub1046 = sub i32 %1053, %1051
  %1054 = add i32 %reass.sub1046, 127
  call void @WavpackStreamFloatNormalize(ptr noundef %1, i32 noundef %1048, i32 noundef %1054) #6
  br label %1055

1055:                                             ; preds = %1046, %1042, %.loopexit916
  %1056 = and i32 %15, 1073741824
  %.not821 = icmp eq i32 %1056, 0
  %1057 = zext i32 %.0642 to i64
  %.not8221023 = icmp eq i32 %.0642, 0
  %or.cond1033 = select i1 %.not821, i1 true, i1 %.not8221023
  br i1 %or.cond1033, label %.loopexit, label %.lr.ph1028.preheader

.lr.ph1028.preheader:                             ; preds = %1055
  %1058 = getelementptr inbounds i32, ptr %1, i64 %1057
  %1059 = shl i32 %.0642, 1
  %1060 = zext i32 %1059 to i64
  %1061 = getelementptr inbounds i32, ptr %1, i64 %1060
  %1062 = add i32 %.0642, -1
  %xtraiter = and i32 %.0642, 3
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph1028.prol.loopexit, label %.lr.ph1028.prol

.lr.ph1028.prol:                                  ; preds = %.lr.ph1028.preheader, %.lr.ph1028.prol
  %.01026.prol = phi i32 [ %1063, %.lr.ph1028.prol ], [ %.0642, %.lr.ph1028.preheader ]
  %.06371025.prol = phi ptr [ %1064, %.lr.ph1028.prol ], [ %1058, %.lr.ph1028.preheader ]
  %.06381024.prol = phi ptr [ %1067, %.lr.ph1028.prol ], [ %1061, %.lr.ph1028.preheader ]
  %prol.iter = phi i32 [ %prol.iter.next, %.lr.ph1028.prol ], [ 0, %.lr.ph1028.preheader ]
  %1063 = add nsw i32 %.01026.prol, -1
  %1064 = getelementptr inbounds i8, ptr %.06371025.prol, i64 -4
  %1065 = load i32, ptr %1064, align 4, !tbaa !34
  %1066 = getelementptr inbounds i8, ptr %.06381024.prol, i64 -4
  store i32 %1065, ptr %1066, align 4, !tbaa !34
  %1067 = getelementptr inbounds i8, ptr %.06381024.prol, i64 -8
  store i32 %1065, ptr %1067, align 4, !tbaa !34
  %prol.iter.next = add i32 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i32 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.lr.ph1028.prol.loopexit, label %.lr.ph1028.prol, !llvm.loop !59

.lr.ph1028.prol.loopexit:                         ; preds = %.lr.ph1028.prol, %.lr.ph1028.preheader
  %.01026.unr = phi i32 [ %.0642, %.lr.ph1028.preheader ], [ %1063, %.lr.ph1028.prol ]
  %.06371025.unr = phi ptr [ %1058, %.lr.ph1028.preheader ], [ %1064, %.lr.ph1028.prol ]
  %.06381024.unr = phi ptr [ %1061, %.lr.ph1028.preheader ], [ %1067, %.lr.ph1028.prol ]
  %1068 = icmp ult i32 %1062, 3
  br i1 %1068, label %.loopexit, label %.lr.ph1028

.lr.ph1028:                                       ; preds = %.lr.ph1028.prol.loopexit, %.lr.ph1028
  %.01026 = phi i32 [ %1081, %.lr.ph1028 ], [ %.01026.unr, %.lr.ph1028.prol.loopexit ]
  %.06371025 = phi ptr [ %1082, %.lr.ph1028 ], [ %.06371025.unr, %.lr.ph1028.prol.loopexit ]
  %.06381024 = phi ptr [ %1085, %.lr.ph1028 ], [ %.06381024.unr, %.lr.ph1028.prol.loopexit ]
  %1069 = getelementptr inbounds i8, ptr %.06371025, i64 -4
  %1070 = load i32, ptr %1069, align 4, !tbaa !34
  %1071 = getelementptr inbounds i8, ptr %.06381024, i64 -4
  store i32 %1070, ptr %1071, align 4, !tbaa !34
  %1072 = getelementptr inbounds i8, ptr %.06381024, i64 -8
  store i32 %1070, ptr %1072, align 4, !tbaa !34
  %1073 = getelementptr inbounds i8, ptr %.06371025, i64 -8
  %1074 = load i32, ptr %1073, align 4, !tbaa !34
  %1075 = getelementptr inbounds i8, ptr %.06381024, i64 -12
  store i32 %1074, ptr %1075, align 4, !tbaa !34
  %1076 = getelementptr inbounds i8, ptr %.06381024, i64 -16
  store i32 %1074, ptr %1076, align 4, !tbaa !34
  %1077 = getelementptr inbounds i8, ptr %.06371025, i64 -12
  %1078 = load i32, ptr %1077, align 4, !tbaa !34
  %1079 = getelementptr inbounds i8, ptr %.06381024, i64 -20
  store i32 %1078, ptr %1079, align 4, !tbaa !34
  %1080 = getelementptr inbounds i8, ptr %.06381024, i64 -24
  store i32 %1078, ptr %1080, align 4, !tbaa !34
  %1081 = add nsw i32 %.01026, -4
  %1082 = getelementptr inbounds i8, ptr %.06371025, i64 -16
  %1083 = load i32, ptr %1082, align 4, !tbaa !34
  %1084 = getelementptr inbounds i8, ptr %.06381024, i64 -28
  store i32 %1083, ptr %1084, align 4, !tbaa !34
  %1085 = getelementptr inbounds i8, ptr %.06381024, i64 -32
  store i32 %1083, ptr %1085, align 4, !tbaa !34
  %.not822.3 = icmp eq i32 %1081, 0
  br i1 %.not822.3, label %.loopexit, label %.lr.ph1028, !llvm.loop !61

.loopexit:                                        ; preds = %.lr.ph1028.prol.loopexit, %.lr.ph1028, %1055
  %1086 = load i64, ptr %22, align 8, !tbaa !27
  %1087 = add nsw i64 %1086, %1057
  store i64 %1087, ptr %22, align 8, !tbaa !27
  store i32 %.910771082, ptr %16, align 4, !tbaa !26
  br label %1088

1088:                                             ; preds = %.loopexit, %52
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #6
  ret i32 %.0642
}

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2

declare i32 @get_word(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #3

declare i32 @get_words_lossless(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare hidden void @decorr_mono_pass(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #0

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

; Function Attrs: nounwind uwtable
declare hidden void @decorr_stereo_pass(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #0

declare i32 @bs_close_read(ptr noundef) local_unnamed_addr #3

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

; Function Attrs: nounwind uwtable
declare hidden void @fixup_samples(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #0

declare void @WavpackStreamFloatNormalize(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !12, i64 288}
!6 = !{!"WavpackContext", !7, i64 0, !12, i64 88, !11, i64 96, !11, i64 100, !12, i64 104, !11, i64 112, !12, i64 120, !12, i64 128, !12, i64 136, !12, i64 144, !12, i64 152, !12, i64 160, !13, i64 168, !13, i64 176, !13, i64 184, !13, i64 192, !13, i64 200, !13, i64 208, !11, i64 216, !11, i64 220, !11, i64 224, !11, i64 228, !11, i64 232, !11, i64 236, !11, i64 240, !11, i64 244, !11, i64 248, !11, i64 252, !11, i64 256, !11, i64 260, !11, i64 264, !11, i64 268, !11, i64 272, !11, i64 276, !11, i64 280, !11, i64 284, !12, i64 288, !12, i64 296, !9, i64 304, !12, i64 312, !12, i64 320, !11, i64 328, !11, i64 332, !12, i64 336, !9, i64 344, !12, i64 352, !9, i64 360}
!7 = !{!"", !8, i64 0, !8, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44, !11, i64 48, !11, i64 52, !9, i64 56, !9, i64 72, !11, i64 76, !12, i64 80}
!8 = !{!"float", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C/C++ TBAA"}
!11 = !{!"int", !9, i64 0}
!12 = !{!"any pointer", !9, i64 0}
!13 = !{!"long", !9, i64 0}
!14 = !{!6, !11, i64 276}
!15 = !{!12, !12, i64 0}
!16 = !{!17, !11, i64 8}
!17 = !{!"", !18, i64 0, !20, i64 12, !12, i64 88, !12, i64 96, !12, i64 104, !12, i64 112, !12, i64 120, !13, i64 128, !13, i64 136, !11, i64 144, !11, i64 148, !11, i64 152, !9, i64 156, !9, i64 157, !9, i64 158, !9, i64 159, !9, i64 160, !9, i64 161, !9, i64 162, !11, i64 164, !11, i64 168, !11, i64 172, !11, i64 176, !11, i64 180, !11, i64 184, !11, i64 188, !11, i64 192, !21, i64 200, !21, i64 248, !21, i64 296, !8, i64 344, !9, i64 348, !9, i64 349, !9, i64 350, !9, i64 351, !9, i64 352, !9, i64 353, !9, i64 354, !9, i64 355, !22, i64 360, !9, i64 432, !24, i64 1968, !12, i64 2064, !25, i64 2072}
!18 = !{!"", !9, i64 0, !19, i64 4, !19, i64 6, !11, i64 8}
!19 = !{!"short", !9, i64 0}
!20 = !{!"words_data", !9, i64 0, !9, i64 8, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !9, i64 36}
!21 = !{!"bs", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !11, i64 32, !11, i64 36, !11, i64 40}
!22 = !{!"", !9, i64 0, !9, i64 8, !9, i64 16, !23, i64 24, !23, i64 32, !23, i64 40, !12, i64 48, !12, i64 56, !11, i64 64}
!23 = !{!"double", !9, i64 0}
!24 = !{!"decorr_pass", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !9, i64 16, !9, i64 48, !11, i64 80, !11, i64 84, !11, i64 88, !11, i64 92}
!25 = !{!"", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !9, i64 40, !9, i64 41, !11, i64 44, !11, i64 48, !11, i64 52, !12, i64 56, !11, i64 64, !11, i64 68, !11, i64 72, !9, i64 76, !12, i64 160}
!26 = !{!17, !11, i64 180}
!27 = !{!17, !13, i64 128}
!28 = !{!17, !13, i64 136}
!29 = !{!17, !19, i64 6}
!30 = !{!17, !9, i64 156}
!31 = !{!6, !11, i64 236}
!32 = !{!6, !11, i64 28}
!33 = !{!17, !12, i64 104}
!34 = !{!11, !11, i64 0}
!35 = distinct !{!35, !36}
!36 = !{!"llvm.loop.mustprogress"}
!37 = !{!17, !11, i64 148}
!38 = distinct !{!38, !36}
!39 = distinct !{!39, !36}
!40 = distinct !{!40, !36}
!41 = distinct !{!41, !36}
!42 = distinct !{!42, !36}
!43 = distinct !{!43, !36}
!44 = distinct !{!44, !36}
!45 = !{!24, !11, i64 0}
!46 = !{!24, !11, i64 8}
!47 = !{!24, !11, i64 4}
!48 = distinct !{!48, !36}
!49 = distinct !{!49, !36}
!50 = !{!24, !11, i64 12}
!51 = distinct !{!51, !36}
!52 = distinct !{!52, !36}
!53 = distinct !{!53, !36}
!54 = !{!17, !12, i64 312}
!55 = distinct !{!55, !36}
!56 = !{!6, !11, i64 228}
!57 = !{!17, !9, i64 355}
!58 = !{!6, !11, i64 232}
!59 = distinct !{!59, !60}
!60 = !{!"llvm.loop.unroll.disable"}
!61 = distinct !{!61, !36}


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