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

; 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.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: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

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

; Function Attrs: nounwind uwtable
define dso_local void @send_float_data(ptr noundef %0, ptr noundef %1, i32 noundef %2) #1 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store i32 %2, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #2
  %13 = load ptr, ptr %4, align 8, !tbaa !5
  %14 = getelementptr inbounds %struct.WavpackStream, ptr %13, i32 0, i32 37
  %15 = load i8, ptr %14, align 2, !tbaa !11
  %16 = zext i8 %15 to i32
  store i32 %16, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #2
  %17 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %17, ptr %11, align 8, !tbaa !5
  %18 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %18, ptr %8, align 4, !tbaa !9
  br label %19

19:                                               ; preds = %892, %3
  %20 = load i32, ptr %8, align 4, !tbaa !9
  %21 = add nsw i32 %20, -1
  store i32 %21, ptr %8, align 4, !tbaa !9
  %22 = icmp ne i32 %20, 0
  br i1 %22, label %23, label %895

23:                                               ; preds = %19
  %24 = load ptr, ptr %11, align 8, !tbaa !5
  %25 = load i32, ptr %24, align 4, !tbaa !9
  %26 = ashr i32 %25, 23
  %27 = and i32 %26, 255
  %28 = icmp eq i32 %27, 255
  br i1 %28, label %29, label %228

29:                                               ; preds = %23
  %30 = load ptr, ptr %11, align 8, !tbaa !5
  %31 = load i32, ptr %30, align 4, !tbaa !9
  %32 = and i32 %31, 8388607
  %33 = icmp ne i32 %32, 0
  br i1 %33, label %34, label %181

34:                                               ; preds = %29
  br label %35

35:                                               ; preds = %34
  %36 = load ptr, ptr %4, align 8, !tbaa !5
  %37 = getelementptr inbounds %struct.WavpackStream, ptr %36, i32 0, i32 29
  %38 = getelementptr inbounds %struct.bs, ptr %37, i32 0, i32 5
  %39 = load i32, ptr %38, align 4, !tbaa !23
  %40 = shl i32 1, %39
  %41 = load ptr, ptr %4, align 8, !tbaa !5
  %42 = getelementptr inbounds %struct.WavpackStream, ptr %41, i32 0, i32 29
  %43 = getelementptr inbounds %struct.bs, ptr %42, i32 0, i32 6
  %44 = load i32, ptr %43, align 8, !tbaa !24
  %45 = or i32 %44, %40
  store i32 %45, ptr %43, align 8, !tbaa !24
  %46 = load ptr, ptr %4, align 8, !tbaa !5
  %47 = getelementptr inbounds %struct.WavpackStream, ptr %46, i32 0, i32 29
  %48 = getelementptr inbounds %struct.bs, ptr %47, i32 0, i32 5
  %49 = load i32, ptr %48, align 4, !tbaa !23
  %50 = add nsw i32 %49, 1
  store i32 %50, ptr %48, align 4, !tbaa !23
  %51 = sext i32 %50 to i64
  %52 = icmp eq i64 %51, 16
  br i1 %52, label %53, label %87

53:                                               ; preds = %35
  %54 = load ptr, ptr %4, align 8, !tbaa !5
  %55 = getelementptr inbounds %struct.WavpackStream, ptr %54, i32 0, i32 29
  %56 = getelementptr inbounds %struct.bs, ptr %55, i32 0, i32 6
  %57 = load i32, ptr %56, align 8, !tbaa !24
  %58 = trunc i32 %57 to i16
  %59 = load ptr, ptr %4, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.WavpackStream, ptr %59, i32 0, i32 29
  %61 = getelementptr inbounds %struct.bs, ptr %60, i32 0, i32 2
  %62 = load ptr, ptr %61, align 8, !tbaa !25
  store i16 %58, ptr %62, align 2, !tbaa !26
  %63 = load ptr, ptr %4, align 8, !tbaa !5
  %64 = getelementptr inbounds %struct.WavpackStream, ptr %63, i32 0, i32 29
  %65 = getelementptr inbounds %struct.bs, ptr %64, i32 0, i32 5
  store i32 0, ptr %65, align 4, !tbaa !23
  %66 = load ptr, ptr %4, align 8, !tbaa !5
  %67 = getelementptr inbounds %struct.WavpackStream, ptr %66, i32 0, i32 29
  %68 = getelementptr inbounds %struct.bs, ptr %67, i32 0, i32 6
  store i32 0, ptr %68, align 8, !tbaa !24
  %69 = load ptr, ptr %4, align 8, !tbaa !5
  %70 = getelementptr inbounds %struct.WavpackStream, ptr %69, i32 0, i32 29
  %71 = getelementptr inbounds %struct.bs, ptr %70, i32 0, i32 2
  %72 = load ptr, ptr %71, align 8, !tbaa !25
  %73 = getelementptr inbounds i16, ptr %72, i32 1
  store ptr %73, ptr %71, align 8, !tbaa !25
  %74 = load ptr, ptr %4, align 8, !tbaa !5
  %75 = getelementptr inbounds %struct.WavpackStream, ptr %74, i32 0, i32 29
  %76 = getelementptr inbounds %struct.bs, ptr %75, i32 0, i32 1
  %77 = load ptr, ptr %76, align 8, !tbaa !27
  %78 = icmp eq ptr %73, %77
  br i1 %78, label %79, label %86

79:                                               ; preds = %53
  %80 = load ptr, ptr %4, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.WavpackStream, ptr %80, i32 0, i32 29
  %82 = getelementptr inbounds %struct.bs, ptr %81, i32 0, i32 3
  %83 = load ptr, ptr %82, align 8, !tbaa !28
  %84 = load ptr, ptr %4, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.WavpackStream, ptr %84, i32 0, i32 29
  call void %83(ptr noundef %85)
  br label %86

86:                                               ; preds = %79, %53
  br label %87

87:                                               ; preds = %86, %35
  br label %88

88:                                               ; preds = %87
  br label %89

89:                                               ; preds = %88
  br label %90

90:                                               ; preds = %89
  %91 = load ptr, ptr %11, align 8, !tbaa !5
  %92 = load i32, ptr %91, align 4, !tbaa !9
  %93 = and i32 %92, 8388607
  %94 = load ptr, ptr %4, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.WavpackStream, ptr %94, i32 0, i32 29
  %96 = getelementptr inbounds %struct.bs, ptr %95, i32 0, i32 5
  %97 = load i32, ptr %96, align 4, !tbaa !23
  %98 = shl i32 %93, %97
  %99 = load ptr, ptr %4, align 8, !tbaa !5
  %100 = getelementptr inbounds %struct.WavpackStream, ptr %99, i32 0, i32 29
  %101 = getelementptr inbounds %struct.bs, ptr %100, i32 0, i32 6
  %102 = load i32, ptr %101, align 8, !tbaa !24
  %103 = or i32 %102, %98
  store i32 %103, ptr %101, align 8, !tbaa !24
  %104 = load ptr, ptr %4, align 8, !tbaa !5
  %105 = getelementptr inbounds %struct.WavpackStream, ptr %104, i32 0, i32 29
  %106 = getelementptr inbounds %struct.bs, ptr %105, i32 0, i32 5
  %107 = load i32, ptr %106, align 4, !tbaa !23
  %108 = add nsw i32 %107, 23
  store i32 %108, ptr %106, align 4, !tbaa !23
  %109 = sext i32 %108 to i64
  %110 = icmp uge i64 %109, 16
  br i1 %110, label %111, label %178

111:                                              ; preds = %90
  br label %112

112:                                              ; preds = %170, %111
  %113 = load ptr, ptr %4, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.WavpackStream, ptr %113, i32 0, i32 29
  %115 = getelementptr inbounds %struct.bs, ptr %114, i32 0, i32 6
  %116 = load i32, ptr %115, align 8, !tbaa !24
  %117 = trunc i32 %116 to i16
  %118 = load ptr, ptr %4, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.WavpackStream, ptr %118, i32 0, i32 29
  %120 = getelementptr inbounds %struct.bs, ptr %119, i32 0, i32 2
  %121 = load ptr, ptr %120, align 8, !tbaa !25
  store i16 %117, ptr %121, align 2, !tbaa !26
  %122 = load ptr, ptr %4, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.WavpackStream, ptr %122, i32 0, i32 29
  %124 = getelementptr inbounds %struct.bs, ptr %123, i32 0, i32 6
  %125 = load i32, ptr %124, align 8, !tbaa !24
  %126 = lshr i32 %125, 16
  store i32 %126, ptr %124, align 8, !tbaa !24
  %127 = load ptr, ptr %4, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.WavpackStream, ptr %127, i32 0, i32 29
  %129 = getelementptr inbounds %struct.bs, ptr %128, i32 0, i32 5
  %130 = load i32, ptr %129, align 4, !tbaa !23
  %131 = sext i32 %130 to i64
  %132 = sub i64 %131, 16
  %133 = trunc i64 %132 to i32
  store i32 %133, ptr %129, align 4, !tbaa !23
  %134 = sext i32 %133 to i64
  %135 = icmp ugt i64 %134, 16
  br i1 %135, label %136, label %151

136:                                              ; preds = %112
  %137 = load ptr, ptr %11, align 8, !tbaa !5
  %138 = load i32, ptr %137, align 4, !tbaa !9
  %139 = and i32 %138, 8388607
  %140 = load ptr, ptr %4, align 8, !tbaa !5
  %141 = getelementptr inbounds %struct.WavpackStream, ptr %140, i32 0, i32 29
  %142 = getelementptr inbounds %struct.bs, ptr %141, i32 0, i32 5
  %143 = load i32, ptr %142, align 4, !tbaa !23
  %144 = sub nsw i32 23, %143
  %145 = ashr i32 %139, %144
  %146 = load ptr, ptr %4, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.WavpackStream, ptr %146, i32 0, i32 29
  %148 = getelementptr inbounds %struct.bs, ptr %147, i32 0, i32 6
  %149 = load i32, ptr %148, align 8, !tbaa !24
  %150 = or i32 %149, %145
  store i32 %150, ptr %148, align 8, !tbaa !24
  br label %151

151:                                              ; preds = %136, %112
  %152 = load ptr, ptr %4, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.WavpackStream, ptr %152, i32 0, i32 29
  %154 = getelementptr inbounds %struct.bs, ptr %153, i32 0, i32 2
  %155 = load ptr, ptr %154, align 8, !tbaa !25
  %156 = getelementptr inbounds i16, ptr %155, i32 1
  store ptr %156, ptr %154, align 8, !tbaa !25
  %157 = load ptr, ptr %4, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.WavpackStream, ptr %157, i32 0, i32 29
  %159 = getelementptr inbounds %struct.bs, ptr %158, i32 0, i32 1
  %160 = load ptr, ptr %159, align 8, !tbaa !27
  %161 = icmp eq ptr %156, %160
  br i1 %161, label %162, label %169

162:                                              ; preds = %151
  %163 = load ptr, ptr %4, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.WavpackStream, ptr %163, i32 0, i32 29
  %165 = getelementptr inbounds %struct.bs, ptr %164, i32 0, i32 3
  %166 = load ptr, ptr %165, align 8, !tbaa !28
  %167 = load ptr, ptr %4, align 8, !tbaa !5
  %168 = getelementptr inbounds %struct.WavpackStream, ptr %167, i32 0, i32 29
  call void %166(ptr noundef %168)
  br label %169

169:                                              ; preds = %162, %151
  br label %170

170:                                              ; preds = %169
  %171 = load ptr, ptr %4, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.WavpackStream, ptr %171, i32 0, i32 29
  %173 = getelementptr inbounds %struct.bs, ptr %172, i32 0, i32 5
  %174 = load i32, ptr %173, align 4, !tbaa !23
  %175 = sext i32 %174 to i64
  %176 = icmp uge i64 %175, 16
  br i1 %176, label %112, label %177, !llvm.loop !29

177:                                              ; preds = %170
  br label %178

178:                                              ; preds = %177, %90
  br label %179

179:                                              ; preds = %178
  br label %180

180:                                              ; preds = %179
  br label %227

181:                                              ; preds = %29
  br label %182

182:                                              ; preds = %181
  %183 = load ptr, ptr %4, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.WavpackStream, ptr %183, i32 0, i32 29
  %185 = getelementptr inbounds %struct.bs, ptr %184, i32 0, i32 5
  %186 = load i32, ptr %185, align 4, !tbaa !23
  %187 = add nsw i32 %186, 1
  store i32 %187, ptr %185, align 4, !tbaa !23
  %188 = sext i32 %187 to i64
  %189 = icmp eq i64 %188, 16
  br i1 %189, label %190, label %224

190:                                              ; preds = %182
  %191 = load ptr, ptr %4, align 8, !tbaa !5
  %192 = getelementptr inbounds %struct.WavpackStream, ptr %191, i32 0, i32 29
  %193 = getelementptr inbounds %struct.bs, ptr %192, i32 0, i32 6
  %194 = load i32, ptr %193, align 8, !tbaa !24
  %195 = trunc i32 %194 to i16
  %196 = load ptr, ptr %4, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.WavpackStream, ptr %196, i32 0, i32 29
  %198 = getelementptr inbounds %struct.bs, ptr %197, i32 0, i32 2
  %199 = load ptr, ptr %198, align 8, !tbaa !25
  store i16 %195, ptr %199, align 2, !tbaa !26
  %200 = load ptr, ptr %4, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.WavpackStream, ptr %200, i32 0, i32 29
  %202 = getelementptr inbounds %struct.bs, ptr %201, i32 0, i32 5
  store i32 0, ptr %202, align 4, !tbaa !23
  %203 = load ptr, ptr %4, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.WavpackStream, ptr %203, i32 0, i32 29
  %205 = getelementptr inbounds %struct.bs, ptr %204, i32 0, i32 6
  store i32 0, ptr %205, align 8, !tbaa !24
  %206 = load ptr, ptr %4, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.WavpackStream, ptr %206, i32 0, i32 29
  %208 = getelementptr inbounds %struct.bs, ptr %207, i32 0, i32 2
  %209 = load ptr, ptr %208, align 8, !tbaa !25
  %210 = getelementptr inbounds i16, ptr %209, i32 1
  store ptr %210, ptr %208, align 8, !tbaa !25
  %211 = load ptr, ptr %4, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.WavpackStream, ptr %211, i32 0, i32 29
  %213 = getelementptr inbounds %struct.bs, ptr %212, i32 0, i32 1
  %214 = load ptr, ptr %213, align 8, !tbaa !27
  %215 = icmp eq ptr %210, %214
  br i1 %215, label %216, label %223

216:                                              ; preds = %190
  %217 = load ptr, ptr %4, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.WavpackStream, ptr %217, i32 0, i32 29
  %219 = getelementptr inbounds %struct.bs, ptr %218, i32 0, i32 3
  %220 = load ptr, ptr %219, align 8, !tbaa !28
  %221 = load ptr, ptr %4, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.WavpackStream, ptr %221, i32 0, i32 29
  call void %220(ptr noundef %222)
  br label %223

223:                                              ; preds = %216, %190
  br label %224

224:                                              ; preds = %223, %182
  br label %225

225:                                              ; preds = %224
  br label %226

226:                                              ; preds = %225
  br label %227

227:                                              ; preds = %226, %180
  store i32 16777216, ptr %9, align 4, !tbaa !9
  store i32 0, ptr %10, align 4, !tbaa !9
  br label %258

228:                                              ; preds = %23
  %229 = load ptr, ptr %11, align 8, !tbaa !5
  %230 = load i32, ptr %229, align 4, !tbaa !9
  %231 = ashr i32 %230, 23
  %232 = and i32 %231, 255
  %233 = icmp ne i32 %232, 0
  br i1 %233, label %234, label %245

234:                                              ; preds = %228
  %235 = load i32, ptr %7, align 4, !tbaa !9
  %236 = load ptr, ptr %11, align 8, !tbaa !5
  %237 = load i32, ptr %236, align 4, !tbaa !9
  %238 = ashr i32 %237, 23
  %239 = and i32 %238, 255
  %240 = sub nsw i32 %235, %239
  store i32 %240, ptr %10, align 4, !tbaa !9
  %241 = load ptr, ptr %11, align 8, !tbaa !5
  %242 = load i32, ptr %241, align 4, !tbaa !9
  %243 = and i32 %242, 8388607
  %244 = add nsw i32 8388608, %243
  store i32 %244, ptr %9, align 4, !tbaa !9
  br label %257

245:                                              ; preds = %228
  %246 = load i32, ptr %7, align 4, !tbaa !9
  %247 = icmp ne i32 %246, 0
  br i1 %247, label %248, label %251

248:                                              ; preds = %245
  %249 = load i32, ptr %7, align 4, !tbaa !9
  %250 = sub nsw i32 %249, 1
  br label %252

251:                                              ; preds = %245
  br label %252

252:                                              ; preds = %251, %248
  %253 = phi i32 [ %250, %248 ], [ 0, %251 ]
  store i32 %253, ptr %10, align 4, !tbaa !9
  %254 = load ptr, ptr %11, align 8, !tbaa !5
  %255 = load i32, ptr %254, align 4, !tbaa !9
  %256 = and i32 %255, 8388607
  store i32 %256, ptr %9, align 4, !tbaa !9
  br label %257

257:                                              ; preds = %252, %234
  br label %258

258:                                              ; preds = %257, %227
  %259 = load i32, ptr %10, align 4, !tbaa !9
  %260 = icmp slt i32 %259, 25
  br i1 %260, label %261, label %265

261:                                              ; preds = %258
  %262 = load i32, ptr %10, align 4, !tbaa !9
  %263 = load i32, ptr %9, align 4, !tbaa !9
  %264 = ashr i32 %263, %262
  store i32 %264, ptr %9, align 4, !tbaa !9
  br label %266

265:                                              ; preds = %258
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %266

266:                                              ; preds = %265, %261
  %267 = load i32, ptr %9, align 4, !tbaa !9
  %268 = icmp ne i32 %267, 0
  br i1 %268, label %711, label %269

269:                                              ; preds = %266
  %270 = load ptr, ptr %4, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.WavpackStream, ptr %270, i32 0, i32 35
  %272 = load i8, ptr %271, align 8, !tbaa !31
  %273 = zext i8 %272 to i32
  %274 = and i32 %273, 8
  %275 = icmp ne i32 %274, 0
  br i1 %275, label %276, label %710

276:                                              ; preds = %269
  %277 = load ptr, ptr %11, align 8, !tbaa !5
  %278 = load i32, ptr %277, align 4, !tbaa !9
  %279 = ashr i32 %278, 23
  %280 = and i32 %279, 255
  %281 = icmp ne i32 %280, 0
  br i1 %281, label %287, label %282

282:                                              ; preds = %276
  %283 = load ptr, ptr %11, align 8, !tbaa !5
  %284 = load i32, ptr %283, align 4, !tbaa !9
  %285 = and i32 %284, 8388607
  %286 = icmp ne i32 %285, 0
  br i1 %286, label %287, label %593

287:                                              ; preds = %282, %276
  br label %288

288:                                              ; preds = %287
  %289 = load ptr, ptr %4, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.WavpackStream, ptr %289, i32 0, i32 29
  %291 = getelementptr inbounds %struct.bs, ptr %290, i32 0, i32 5
  %292 = load i32, ptr %291, align 4, !tbaa !23
  %293 = shl i32 1, %292
  %294 = load ptr, ptr %4, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.WavpackStream, ptr %294, i32 0, i32 29
  %296 = getelementptr inbounds %struct.bs, ptr %295, i32 0, i32 6
  %297 = load i32, ptr %296, align 8, !tbaa !24
  %298 = or i32 %297, %293
  store i32 %298, ptr %296, align 8, !tbaa !24
  %299 = load ptr, ptr %4, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.WavpackStream, ptr %299, i32 0, i32 29
  %301 = getelementptr inbounds %struct.bs, ptr %300, i32 0, i32 5
  %302 = load i32, ptr %301, align 4, !tbaa !23
  %303 = add nsw i32 %302, 1
  store i32 %303, ptr %301, align 4, !tbaa !23
  %304 = sext i32 %303 to i64
  %305 = icmp eq i64 %304, 16
  br i1 %305, label %306, label %340

306:                                              ; preds = %288
  %307 = load ptr, ptr %4, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.WavpackStream, ptr %307, i32 0, i32 29
  %309 = getelementptr inbounds %struct.bs, ptr %308, i32 0, i32 6
  %310 = load i32, ptr %309, align 8, !tbaa !24
  %311 = trunc i32 %310 to i16
  %312 = load ptr, ptr %4, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.WavpackStream, ptr %312, i32 0, i32 29
  %314 = getelementptr inbounds %struct.bs, ptr %313, i32 0, i32 2
  %315 = load ptr, ptr %314, align 8, !tbaa !25
  store i16 %311, ptr %315, align 2, !tbaa !26
  %316 = load ptr, ptr %4, align 8, !tbaa !5
  %317 = getelementptr inbounds %struct.WavpackStream, ptr %316, i32 0, i32 29
  %318 = getelementptr inbounds %struct.bs, ptr %317, i32 0, i32 5
  store i32 0, ptr %318, align 4, !tbaa !23
  %319 = load ptr, ptr %4, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.WavpackStream, ptr %319, i32 0, i32 29
  %321 = getelementptr inbounds %struct.bs, ptr %320, i32 0, i32 6
  store i32 0, ptr %321, align 8, !tbaa !24
  %322 = load ptr, ptr %4, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.WavpackStream, ptr %322, i32 0, i32 29
  %324 = getelementptr inbounds %struct.bs, ptr %323, i32 0, i32 2
  %325 = load ptr, ptr %324, align 8, !tbaa !25
  %326 = getelementptr inbounds i16, ptr %325, i32 1
  store ptr %326, ptr %324, align 8, !tbaa !25
  %327 = load ptr, ptr %4, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.WavpackStream, ptr %327, i32 0, i32 29
  %329 = getelementptr inbounds %struct.bs, ptr %328, i32 0, i32 1
  %330 = load ptr, ptr %329, align 8, !tbaa !27
  %331 = icmp eq ptr %326, %330
  br i1 %331, label %332, label %339

332:                                              ; preds = %306
  %333 = load ptr, ptr %4, align 8, !tbaa !5
  %334 = getelementptr inbounds %struct.WavpackStream, ptr %333, i32 0, i32 29
  %335 = getelementptr inbounds %struct.bs, ptr %334, i32 0, i32 3
  %336 = load ptr, ptr %335, align 8, !tbaa !28
  %337 = load ptr, ptr %4, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.WavpackStream, ptr %337, i32 0, i32 29
  call void %336(ptr noundef %338)
  br label %339

339:                                              ; preds = %332, %306
  br label %340

340:                                              ; preds = %339, %288
  br label %341

341:                                              ; preds = %340
  br label %342

342:                                              ; preds = %341
  br label %343

343:                                              ; preds = %342
  %344 = load ptr, ptr %11, align 8, !tbaa !5
  %345 = load i32, ptr %344, align 4, !tbaa !9
  %346 = and i32 %345, 8388607
  %347 = load ptr, ptr %4, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.WavpackStream, ptr %347, i32 0, i32 29
  %349 = getelementptr inbounds %struct.bs, ptr %348, i32 0, i32 5
  %350 = load i32, ptr %349, align 4, !tbaa !23
  %351 = shl i32 %346, %350
  %352 = load ptr, ptr %4, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.WavpackStream, ptr %352, i32 0, i32 29
  %354 = getelementptr inbounds %struct.bs, ptr %353, i32 0, i32 6
  %355 = load i32, ptr %354, align 8, !tbaa !24
  %356 = or i32 %355, %351
  store i32 %356, ptr %354, align 8, !tbaa !24
  %357 = load ptr, ptr %4, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct.WavpackStream, ptr %357, i32 0, i32 29
  %359 = getelementptr inbounds %struct.bs, ptr %358, i32 0, i32 5
  %360 = load i32, ptr %359, align 4, !tbaa !23
  %361 = add nsw i32 %360, 23
  store i32 %361, ptr %359, align 4, !tbaa !23
  %362 = sext i32 %361 to i64
  %363 = icmp uge i64 %362, 16
  br i1 %363, label %364, label %431

364:                                              ; preds = %343
  br label %365

365:                                              ; preds = %423, %364
  %366 = load ptr, ptr %4, align 8, !tbaa !5
  %367 = getelementptr inbounds %struct.WavpackStream, ptr %366, i32 0, i32 29
  %368 = getelementptr inbounds %struct.bs, ptr %367, i32 0, i32 6
  %369 = load i32, ptr %368, align 8, !tbaa !24
  %370 = trunc i32 %369 to i16
  %371 = load ptr, ptr %4, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.WavpackStream, ptr %371, i32 0, i32 29
  %373 = getelementptr inbounds %struct.bs, ptr %372, i32 0, i32 2
  %374 = load ptr, ptr %373, align 8, !tbaa !25
  store i16 %370, ptr %374, align 2, !tbaa !26
  %375 = load ptr, ptr %4, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.WavpackStream, ptr %375, i32 0, i32 29
  %377 = getelementptr inbounds %struct.bs, ptr %376, i32 0, i32 6
  %378 = load i32, ptr %377, align 8, !tbaa !24
  %379 = lshr i32 %378, 16
  store i32 %379, ptr %377, align 8, !tbaa !24
  %380 = load ptr, ptr %4, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.WavpackStream, ptr %380, i32 0, i32 29
  %382 = getelementptr inbounds %struct.bs, ptr %381, i32 0, i32 5
  %383 = load i32, ptr %382, align 4, !tbaa !23
  %384 = sext i32 %383 to i64
  %385 = sub i64 %384, 16
  %386 = trunc i64 %385 to i32
  store i32 %386, ptr %382, align 4, !tbaa !23
  %387 = sext i32 %386 to i64
  %388 = icmp ugt i64 %387, 16
  br i1 %388, label %389, label %404

389:                                              ; preds = %365
  %390 = load ptr, ptr %11, align 8, !tbaa !5
  %391 = load i32, ptr %390, align 4, !tbaa !9
  %392 = and i32 %391, 8388607
  %393 = load ptr, ptr %4, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.WavpackStream, ptr %393, i32 0, i32 29
  %395 = getelementptr inbounds %struct.bs, ptr %394, i32 0, i32 5
  %396 = load i32, ptr %395, align 4, !tbaa !23
  %397 = sub nsw i32 23, %396
  %398 = ashr i32 %392, %397
  %399 = load ptr, ptr %4, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.WavpackStream, ptr %399, i32 0, i32 29
  %401 = getelementptr inbounds %struct.bs, ptr %400, i32 0, i32 6
  %402 = load i32, ptr %401, align 8, !tbaa !24
  %403 = or i32 %402, %398
  store i32 %403, ptr %401, align 8, !tbaa !24
  br label %404

404:                                              ; preds = %389, %365
  %405 = load ptr, ptr %4, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.WavpackStream, ptr %405, i32 0, i32 29
  %407 = getelementptr inbounds %struct.bs, ptr %406, i32 0, i32 2
  %408 = load ptr, ptr %407, align 8, !tbaa !25
  %409 = getelementptr inbounds i16, ptr %408, i32 1
  store ptr %409, ptr %407, align 8, !tbaa !25
  %410 = load ptr, ptr %4, align 8, !tbaa !5
  %411 = getelementptr inbounds %struct.WavpackStream, ptr %410, i32 0, i32 29
  %412 = getelementptr inbounds %struct.bs, ptr %411, i32 0, i32 1
  %413 = load ptr, ptr %412, align 8, !tbaa !27
  %414 = icmp eq ptr %409, %413
  br i1 %414, label %415, label %422

415:                                              ; preds = %404
  %416 = load ptr, ptr %4, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.WavpackStream, ptr %416, i32 0, i32 29
  %418 = getelementptr inbounds %struct.bs, ptr %417, i32 0, i32 3
  %419 = load ptr, ptr %418, align 8, !tbaa !28
  %420 = load ptr, ptr %4, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.WavpackStream, ptr %420, i32 0, i32 29
  call void %419(ptr noundef %421)
  br label %422

422:                                              ; preds = %415, %404
  br label %423

423:                                              ; preds = %422
  %424 = load ptr, ptr %4, align 8, !tbaa !5
  %425 = getelementptr inbounds %struct.WavpackStream, ptr %424, i32 0, i32 29
  %426 = getelementptr inbounds %struct.bs, ptr %425, i32 0, i32 5
  %427 = load i32, ptr %426, align 4, !tbaa !23
  %428 = sext i32 %427 to i64
  %429 = icmp uge i64 %428, 16
  br i1 %429, label %365, label %430, !llvm.loop !32

430:                                              ; preds = %423
  br label %431

431:                                              ; preds = %430, %343
  br label %432

432:                                              ; preds = %431
  br label %433

433:                                              ; preds = %432
  %434 = load i32, ptr %7, align 4, !tbaa !9
  %435 = icmp sge i32 %434, 25
  br i1 %435, label %436, label %530

436:                                              ; preds = %433
  br label %437

437:                                              ; preds = %436
  %438 = load ptr, ptr %11, align 8, !tbaa !5
  %439 = load i32, ptr %438, align 4, !tbaa !9
  %440 = ashr i32 %439, 23
  %441 = and i32 %440, 255
  %442 = load ptr, ptr %4, align 8, !tbaa !5
  %443 = getelementptr inbounds %struct.WavpackStream, ptr %442, i32 0, i32 29
  %444 = getelementptr inbounds %struct.bs, ptr %443, i32 0, i32 5
  %445 = load i32, ptr %444, align 4, !tbaa !23
  %446 = shl i32 %441, %445
  %447 = load ptr, ptr %4, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.WavpackStream, ptr %447, i32 0, i32 29
  %449 = getelementptr inbounds %struct.bs, ptr %448, i32 0, i32 6
  %450 = load i32, ptr %449, align 8, !tbaa !24
  %451 = or i32 %450, %446
  store i32 %451, ptr %449, align 8, !tbaa !24
  %452 = load ptr, ptr %4, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.WavpackStream, ptr %452, i32 0, i32 29
  %454 = getelementptr inbounds %struct.bs, ptr %453, i32 0, i32 5
  %455 = load i32, ptr %454, align 4, !tbaa !23
  %456 = add nsw i32 %455, 8
  store i32 %456, ptr %454, align 4, !tbaa !23
  %457 = sext i32 %456 to i64
  %458 = icmp uge i64 %457, 16
  br i1 %458, label %459, label %527

459:                                              ; preds = %437
  br label %460

460:                                              ; preds = %519, %459
  %461 = load ptr, ptr %4, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.WavpackStream, ptr %461, i32 0, i32 29
  %463 = getelementptr inbounds %struct.bs, ptr %462, i32 0, i32 6
  %464 = load i32, ptr %463, align 8, !tbaa !24
  %465 = trunc i32 %464 to i16
  %466 = load ptr, ptr %4, align 8, !tbaa !5
  %467 = getelementptr inbounds %struct.WavpackStream, ptr %466, i32 0, i32 29
  %468 = getelementptr inbounds %struct.bs, ptr %467, i32 0, i32 2
  %469 = load ptr, ptr %468, align 8, !tbaa !25
  store i16 %465, ptr %469, align 2, !tbaa !26
  %470 = load ptr, ptr %4, align 8, !tbaa !5
  %471 = getelementptr inbounds %struct.WavpackStream, ptr %470, i32 0, i32 29
  %472 = getelementptr inbounds %struct.bs, ptr %471, i32 0, i32 6
  %473 = load i32, ptr %472, align 8, !tbaa !24
  %474 = lshr i32 %473, 16
  store i32 %474, ptr %472, align 8, !tbaa !24
  %475 = load ptr, ptr %4, align 8, !tbaa !5
  %476 = getelementptr inbounds %struct.WavpackStream, ptr %475, i32 0, i32 29
  %477 = getelementptr inbounds %struct.bs, ptr %476, i32 0, i32 5
  %478 = load i32, ptr %477, align 4, !tbaa !23
  %479 = sext i32 %478 to i64
  %480 = sub i64 %479, 16
  %481 = trunc i64 %480 to i32
  store i32 %481, ptr %477, align 4, !tbaa !23
  %482 = sext i32 %481 to i64
  %483 = icmp ugt i64 %482, 16
  br i1 %483, label %484, label %500

484:                                              ; preds = %460
  %485 = load ptr, ptr %11, align 8, !tbaa !5
  %486 = load i32, ptr %485, align 4, !tbaa !9
  %487 = ashr i32 %486, 23
  %488 = and i32 %487, 255
  %489 = load ptr, ptr %4, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.WavpackStream, ptr %489, i32 0, i32 29
  %491 = getelementptr inbounds %struct.bs, ptr %490, i32 0, i32 5
  %492 = load i32, ptr %491, align 4, !tbaa !23
  %493 = sub nsw i32 8, %492
  %494 = ashr i32 %488, %493
  %495 = load ptr, ptr %4, align 8, !tbaa !5
  %496 = getelementptr inbounds %struct.WavpackStream, ptr %495, i32 0, i32 29
  %497 = getelementptr inbounds %struct.bs, ptr %496, i32 0, i32 6
  %498 = load i32, ptr %497, align 8, !tbaa !24
  %499 = or i32 %498, %494
  store i32 %499, ptr %497, align 8, !tbaa !24
  br label %500

500:                                              ; preds = %484, %460
  %501 = load ptr, ptr %4, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.WavpackStream, ptr %501, i32 0, i32 29
  %503 = getelementptr inbounds %struct.bs, ptr %502, i32 0, i32 2
  %504 = load ptr, ptr %503, align 8, !tbaa !25
  %505 = getelementptr inbounds i16, ptr %504, i32 1
  store ptr %505, ptr %503, align 8, !tbaa !25
  %506 = load ptr, ptr %4, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct.WavpackStream, ptr %506, i32 0, i32 29
  %508 = getelementptr inbounds %struct.bs, ptr %507, i32 0, i32 1
  %509 = load ptr, ptr %508, align 8, !tbaa !27
  %510 = icmp eq ptr %505, %509
  br i1 %510, label %511, label %518

511:                                              ; preds = %500
  %512 = load ptr, ptr %4, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct.WavpackStream, ptr %512, i32 0, i32 29
  %514 = getelementptr inbounds %struct.bs, ptr %513, i32 0, i32 3
  %515 = load ptr, ptr %514, align 8, !tbaa !28
  %516 = load ptr, ptr %4, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.WavpackStream, ptr %516, i32 0, i32 29
  call void %515(ptr noundef %517)
  br label %518

518:                                              ; preds = %511, %500
  br label %519

519:                                              ; preds = %518
  %520 = load ptr, ptr %4, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.WavpackStream, ptr %520, i32 0, i32 29
  %522 = getelementptr inbounds %struct.bs, ptr %521, i32 0, i32 5
  %523 = load i32, ptr %522, align 4, !tbaa !23
  %524 = sext i32 %523 to i64
  %525 = icmp uge i64 %524, 16
  br i1 %525, label %460, label %526, !llvm.loop !33

526:                                              ; preds = %519
  br label %527

527:                                              ; preds = %526, %437
  br label %528

528:                                              ; preds = %527
  br label %529

529:                                              ; preds = %528
  br label %530

530:                                              ; preds = %529, %433
  br label %531

531:                                              ; preds = %530
  %532 = load ptr, ptr %11, align 8, !tbaa !5
  %533 = load i32, ptr %532, align 4, !tbaa !9
  %534 = ashr i32 %533, 31
  %535 = and i32 %534, 1
  %536 = icmp ne i32 %535, 0
  br i1 %536, label %537, label %548

537:                                              ; preds = %531
  %538 = load ptr, ptr %4, align 8, !tbaa !5
  %539 = getelementptr inbounds %struct.WavpackStream, ptr %538, i32 0, i32 29
  %540 = getelementptr inbounds %struct.bs, ptr %539, i32 0, i32 5
  %541 = load i32, ptr %540, align 4, !tbaa !23
  %542 = shl i32 1, %541
  %543 = load ptr, ptr %4, align 8, !tbaa !5
  %544 = getelementptr inbounds %struct.WavpackStream, ptr %543, i32 0, i32 29
  %545 = getelementptr inbounds %struct.bs, ptr %544, i32 0, i32 6
  %546 = load i32, ptr %545, align 8, !tbaa !24
  %547 = or i32 %546, %542
  store i32 %547, ptr %545, align 8, !tbaa !24
  br label %548

548:                                              ; preds = %537, %531
  %549 = load ptr, ptr %4, align 8, !tbaa !5
  %550 = getelementptr inbounds %struct.WavpackStream, ptr %549, i32 0, i32 29
  %551 = getelementptr inbounds %struct.bs, ptr %550, i32 0, i32 5
  %552 = load i32, ptr %551, align 4, !tbaa !23
  %553 = add nsw i32 %552, 1
  store i32 %553, ptr %551, align 4, !tbaa !23
  %554 = sext i32 %553 to i64
  %555 = icmp eq i64 %554, 16
  br i1 %555, label %556, label %590

556:                                              ; preds = %548
  %557 = load ptr, ptr %4, align 8, !tbaa !5
  %558 = getelementptr inbounds %struct.WavpackStream, ptr %557, i32 0, i32 29
  %559 = getelementptr inbounds %struct.bs, ptr %558, i32 0, i32 6
  %560 = load i32, ptr %559, align 8, !tbaa !24
  %561 = trunc i32 %560 to i16
  %562 = load ptr, ptr %4, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct.WavpackStream, ptr %562, i32 0, i32 29
  %564 = getelementptr inbounds %struct.bs, ptr %563, i32 0, i32 2
  %565 = load ptr, ptr %564, align 8, !tbaa !25
  store i16 %561, ptr %565, align 2, !tbaa !26
  %566 = load ptr, ptr %4, align 8, !tbaa !5
  %567 = getelementptr inbounds %struct.WavpackStream, ptr %566, i32 0, i32 29
  %568 = getelementptr inbounds %struct.bs, ptr %567, i32 0, i32 5
  store i32 0, ptr %568, align 4, !tbaa !23
  %569 = load ptr, ptr %4, align 8, !tbaa !5
  %570 = getelementptr inbounds %struct.WavpackStream, ptr %569, i32 0, i32 29
  %571 = getelementptr inbounds %struct.bs, ptr %570, i32 0, i32 6
  store i32 0, ptr %571, align 8, !tbaa !24
  %572 = load ptr, ptr %4, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.WavpackStream, ptr %572, i32 0, i32 29
  %574 = getelementptr inbounds %struct.bs, ptr %573, i32 0, i32 2
  %575 = load ptr, ptr %574, align 8, !tbaa !25
  %576 = getelementptr inbounds i16, ptr %575, i32 1
  store ptr %576, ptr %574, align 8, !tbaa !25
  %577 = load ptr, ptr %4, align 8, !tbaa !5
  %578 = getelementptr inbounds %struct.WavpackStream, ptr %577, i32 0, i32 29
  %579 = getelementptr inbounds %struct.bs, ptr %578, i32 0, i32 1
  %580 = load ptr, ptr %579, align 8, !tbaa !27
  %581 = icmp eq ptr %576, %580
  br i1 %581, label %582, label %589

582:                                              ; preds = %556
  %583 = load ptr, ptr %4, align 8, !tbaa !5
  %584 = getelementptr inbounds %struct.WavpackStream, ptr %583, i32 0, i32 29
  %585 = getelementptr inbounds %struct.bs, ptr %584, i32 0, i32 3
  %586 = load ptr, ptr %585, align 8, !tbaa !28
  %587 = load ptr, ptr %4, align 8, !tbaa !5
  %588 = getelementptr inbounds %struct.WavpackStream, ptr %587, i32 0, i32 29
  call void %586(ptr noundef %588)
  br label %589

589:                                              ; preds = %582, %556
  br label %590

590:                                              ; preds = %589, %548
  br label %591

591:                                              ; preds = %590
  br label %592

592:                                              ; preds = %591
  br label %709

593:                                              ; preds = %282
  br label %594

594:                                              ; preds = %593
  %595 = load ptr, ptr %4, align 8, !tbaa !5
  %596 = getelementptr inbounds %struct.WavpackStream, ptr %595, i32 0, i32 29
  %597 = getelementptr inbounds %struct.bs, ptr %596, i32 0, i32 5
  %598 = load i32, ptr %597, align 4, !tbaa !23
  %599 = add nsw i32 %598, 1
  store i32 %599, ptr %597, align 4, !tbaa !23
  %600 = sext i32 %599 to i64
  %601 = icmp eq i64 %600, 16
  br i1 %601, label %602, label %636

602:                                              ; preds = %594
  %603 = load ptr, ptr %4, align 8, !tbaa !5
  %604 = getelementptr inbounds %struct.WavpackStream, ptr %603, i32 0, i32 29
  %605 = getelementptr inbounds %struct.bs, ptr %604, i32 0, i32 6
  %606 = load i32, ptr %605, align 8, !tbaa !24
  %607 = trunc i32 %606 to i16
  %608 = load ptr, ptr %4, align 8, !tbaa !5
  %609 = getelementptr inbounds %struct.WavpackStream, ptr %608, i32 0, i32 29
  %610 = getelementptr inbounds %struct.bs, ptr %609, i32 0, i32 2
  %611 = load ptr, ptr %610, align 8, !tbaa !25
  store i16 %607, ptr %611, align 2, !tbaa !26
  %612 = load ptr, ptr %4, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.WavpackStream, ptr %612, i32 0, i32 29
  %614 = getelementptr inbounds %struct.bs, ptr %613, i32 0, i32 5
  store i32 0, ptr %614, align 4, !tbaa !23
  %615 = load ptr, ptr %4, align 8, !tbaa !5
  %616 = getelementptr inbounds %struct.WavpackStream, ptr %615, i32 0, i32 29
  %617 = getelementptr inbounds %struct.bs, ptr %616, i32 0, i32 6
  store i32 0, ptr %617, align 8, !tbaa !24
  %618 = load ptr, ptr %4, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct.WavpackStream, ptr %618, i32 0, i32 29
  %620 = getelementptr inbounds %struct.bs, ptr %619, i32 0, i32 2
  %621 = load ptr, ptr %620, align 8, !tbaa !25
  %622 = getelementptr inbounds i16, ptr %621, i32 1
  store ptr %622, ptr %620, align 8, !tbaa !25
  %623 = load ptr, ptr %4, align 8, !tbaa !5
  %624 = getelementptr inbounds %struct.WavpackStream, ptr %623, i32 0, i32 29
  %625 = getelementptr inbounds %struct.bs, ptr %624, i32 0, i32 1
  %626 = load ptr, ptr %625, align 8, !tbaa !27
  %627 = icmp eq ptr %622, %626
  br i1 %627, label %628, label %635

628:                                              ; preds = %602
  %629 = load ptr, ptr %4, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.WavpackStream, ptr %629, i32 0, i32 29
  %631 = getelementptr inbounds %struct.bs, ptr %630, i32 0, i32 3
  %632 = load ptr, ptr %631, align 8, !tbaa !28
  %633 = load ptr, ptr %4, align 8, !tbaa !5
  %634 = getelementptr inbounds %struct.WavpackStream, ptr %633, i32 0, i32 29
  call void %632(ptr noundef %634)
  br label %635

635:                                              ; preds = %628, %602
  br label %636

636:                                              ; preds = %635, %594
  br label %637

637:                                              ; preds = %636
  br label %638

638:                                              ; preds = %637
  %639 = load ptr, ptr %4, align 8, !tbaa !5
  %640 = getelementptr inbounds %struct.WavpackStream, ptr %639, i32 0, i32 35
  %641 = load i8, ptr %640, align 8, !tbaa !31
  %642 = zext i8 %641 to i32
  %643 = and i32 %642, 16
  %644 = icmp ne i32 %643, 0
  br i1 %644, label %645, label %708

645:                                              ; preds = %638
  br label %646

646:                                              ; preds = %645
  %647 = load ptr, ptr %11, align 8, !tbaa !5
  %648 = load i32, ptr %647, align 4, !tbaa !9
  %649 = ashr i32 %648, 31
  %650 = and i32 %649, 1
  %651 = icmp ne i32 %650, 0
  br i1 %651, label %652, label %663

652:                                              ; preds = %646
  %653 = load ptr, ptr %4, align 8, !tbaa !5
  %654 = getelementptr inbounds %struct.WavpackStream, ptr %653, i32 0, i32 29
  %655 = getelementptr inbounds %struct.bs, ptr %654, i32 0, i32 5
  %656 = load i32, ptr %655, align 4, !tbaa !23
  %657 = shl i32 1, %656
  %658 = load ptr, ptr %4, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.WavpackStream, ptr %658, i32 0, i32 29
  %660 = getelementptr inbounds %struct.bs, ptr %659, i32 0, i32 6
  %661 = load i32, ptr %660, align 8, !tbaa !24
  %662 = or i32 %661, %657
  store i32 %662, ptr %660, align 8, !tbaa !24
  br label %663

663:                                              ; preds = %652, %646
  %664 = load ptr, ptr %4, align 8, !tbaa !5
  %665 = getelementptr inbounds %struct.WavpackStream, ptr %664, i32 0, i32 29
  %666 = getelementptr inbounds %struct.bs, ptr %665, i32 0, i32 5
  %667 = load i32, ptr %666, align 4, !tbaa !23
  %668 = add nsw i32 %667, 1
  store i32 %668, ptr %666, align 4, !tbaa !23
  %669 = sext i32 %668 to i64
  %670 = icmp eq i64 %669, 16
  br i1 %670, label %671, label %705

671:                                              ; preds = %663
  %672 = load ptr, ptr %4, align 8, !tbaa !5
  %673 = getelementptr inbounds %struct.WavpackStream, ptr %672, i32 0, i32 29
  %674 = getelementptr inbounds %struct.bs, ptr %673, i32 0, i32 6
  %675 = load i32, ptr %674, align 8, !tbaa !24
  %676 = trunc i32 %675 to i16
  %677 = load ptr, ptr %4, align 8, !tbaa !5
  %678 = getelementptr inbounds %struct.WavpackStream, ptr %677, i32 0, i32 29
  %679 = getelementptr inbounds %struct.bs, ptr %678, i32 0, i32 2
  %680 = load ptr, ptr %679, align 8, !tbaa !25
  store i16 %676, ptr %680, align 2, !tbaa !26
  %681 = load ptr, ptr %4, align 8, !tbaa !5
  %682 = getelementptr inbounds %struct.WavpackStream, ptr %681, i32 0, i32 29
  %683 = getelementptr inbounds %struct.bs, ptr %682, i32 0, i32 5
  store i32 0, ptr %683, align 4, !tbaa !23
  %684 = load ptr, ptr %4, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct.WavpackStream, ptr %684, i32 0, i32 29
  %686 = getelementptr inbounds %struct.bs, ptr %685, i32 0, i32 6
  store i32 0, ptr %686, align 8, !tbaa !24
  %687 = load ptr, ptr %4, align 8, !tbaa !5
  %688 = getelementptr inbounds %struct.WavpackStream, ptr %687, i32 0, i32 29
  %689 = getelementptr inbounds %struct.bs, ptr %688, i32 0, i32 2
  %690 = load ptr, ptr %689, align 8, !tbaa !25
  %691 = getelementptr inbounds i16, ptr %690, i32 1
  store ptr %691, ptr %689, align 8, !tbaa !25
  %692 = load ptr, ptr %4, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.WavpackStream, ptr %692, i32 0, i32 29
  %694 = getelementptr inbounds %struct.bs, ptr %693, i32 0, i32 1
  %695 = load ptr, ptr %694, align 8, !tbaa !27
  %696 = icmp eq ptr %691, %695
  br i1 %696, label %697, label %704

697:                                              ; preds = %671
  %698 = load ptr, ptr %4, align 8, !tbaa !5
  %699 = getelementptr inbounds %struct.WavpackStream, ptr %698, i32 0, i32 29
  %700 = getelementptr inbounds %struct.bs, ptr %699, i32 0, i32 3
  %701 = load ptr, ptr %700, align 8, !tbaa !28
  %702 = load ptr, ptr %4, align 8, !tbaa !5
  %703 = getelementptr inbounds %struct.WavpackStream, ptr %702, i32 0, i32 29
  call void %701(ptr noundef %703)
  br label %704

704:                                              ; preds = %697, %671
  br label %705

705:                                              ; preds = %704, %663
  br label %706

706:                                              ; preds = %705
  br label %707

707:                                              ; preds = %706
  br label %708

708:                                              ; preds = %707, %638
  br label %709

709:                                              ; preds = %708, %592
  br label %710

710:                                              ; preds = %709, %269
  br label %891

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

714:                                              ; preds = %711
  %715 = load ptr, ptr %4, align 8, !tbaa !5
  %716 = getelementptr inbounds %struct.WavpackStream, ptr %715, i32 0, i32 35
  %717 = load i8, ptr %716, align 8, !tbaa !31
  %718 = zext i8 %717 to i32
  %719 = and i32 %718, 4
  %720 = icmp ne i32 %719, 0
  br i1 %720, label %721, label %818

721:                                              ; preds = %714
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #2
  %722 = load ptr, ptr %11, align 8, !tbaa !5
  %723 = load i32, ptr %722, align 4, !tbaa !9
  %724 = and i32 %723, 8388607
  %725 = load i32, ptr %10, align 4, !tbaa !9
  %726 = shl i32 1, %725
  %727 = sub nsw i32 %726, 1
  %728 = and i32 %724, %727
  store i32 %728, ptr %12, align 4, !tbaa !9
  br label %729

729:                                              ; preds = %721
  %730 = load i32, ptr %12, align 4, !tbaa !9
  %731 = load ptr, ptr %4, align 8, !tbaa !5
  %732 = getelementptr inbounds %struct.WavpackStream, ptr %731, i32 0, i32 29
  %733 = getelementptr inbounds %struct.bs, ptr %732, i32 0, i32 5
  %734 = load i32, ptr %733, align 4, !tbaa !23
  %735 = shl i32 %730, %734
  %736 = load ptr, ptr %4, align 8, !tbaa !5
  %737 = getelementptr inbounds %struct.WavpackStream, ptr %736, i32 0, i32 29
  %738 = getelementptr inbounds %struct.bs, ptr %737, i32 0, i32 6
  %739 = load i32, ptr %738, align 8, !tbaa !24
  %740 = or i32 %739, %735
  store i32 %740, ptr %738, align 8, !tbaa !24
  %741 = load i32, ptr %10, align 4, !tbaa !9
  %742 = load ptr, ptr %4, align 8, !tbaa !5
  %743 = getelementptr inbounds %struct.WavpackStream, ptr %742, i32 0, i32 29
  %744 = getelementptr inbounds %struct.bs, ptr %743, i32 0, i32 5
  %745 = load i32, ptr %744, align 4, !tbaa !23
  %746 = add nsw i32 %745, %741
  store i32 %746, ptr %744, align 4, !tbaa !23
  %747 = sext i32 %746 to i64
  %748 = icmp uge i64 %747, 16
  br i1 %748, label %749, label %815

749:                                              ; preds = %729
  br label %750

750:                                              ; preds = %807, %749
  %751 = load ptr, ptr %4, align 8, !tbaa !5
  %752 = getelementptr inbounds %struct.WavpackStream, ptr %751, i32 0, i32 29
  %753 = getelementptr inbounds %struct.bs, ptr %752, i32 0, i32 6
  %754 = load i32, ptr %753, align 8, !tbaa !24
  %755 = trunc i32 %754 to i16
  %756 = load ptr, ptr %4, align 8, !tbaa !5
  %757 = getelementptr inbounds %struct.WavpackStream, ptr %756, i32 0, i32 29
  %758 = getelementptr inbounds %struct.bs, ptr %757, i32 0, i32 2
  %759 = load ptr, ptr %758, align 8, !tbaa !25
  store i16 %755, ptr %759, align 2, !tbaa !26
  %760 = load ptr, ptr %4, align 8, !tbaa !5
  %761 = getelementptr inbounds %struct.WavpackStream, ptr %760, i32 0, i32 29
  %762 = getelementptr inbounds %struct.bs, ptr %761, i32 0, i32 6
  %763 = load i32, ptr %762, align 8, !tbaa !24
  %764 = lshr i32 %763, 16
  store i32 %764, ptr %762, align 8, !tbaa !24
  %765 = load ptr, ptr %4, align 8, !tbaa !5
  %766 = getelementptr inbounds %struct.WavpackStream, ptr %765, i32 0, i32 29
  %767 = getelementptr inbounds %struct.bs, ptr %766, i32 0, i32 5
  %768 = load i32, ptr %767, align 4, !tbaa !23
  %769 = sext i32 %768 to i64
  %770 = sub i64 %769, 16
  %771 = trunc i64 %770 to i32
  store i32 %771, ptr %767, align 4, !tbaa !23
  %772 = sext i32 %771 to i64
  %773 = icmp ugt i64 %772, 16
  br i1 %773, label %774, label %788

774:                                              ; preds = %750
  %775 = load i32, ptr %12, align 4, !tbaa !9
  %776 = load i32, ptr %10, align 4, !tbaa !9
  %777 = load ptr, ptr %4, align 8, !tbaa !5
  %778 = getelementptr inbounds %struct.WavpackStream, ptr %777, i32 0, i32 29
  %779 = getelementptr inbounds %struct.bs, ptr %778, i32 0, i32 5
  %780 = load i32, ptr %779, align 4, !tbaa !23
  %781 = sub nsw i32 %776, %780
  %782 = ashr i32 %775, %781
  %783 = load ptr, ptr %4, align 8, !tbaa !5
  %784 = getelementptr inbounds %struct.WavpackStream, ptr %783, i32 0, i32 29
  %785 = getelementptr inbounds %struct.bs, ptr %784, i32 0, i32 6
  %786 = load i32, ptr %785, align 8, !tbaa !24
  %787 = or i32 %786, %782
  store i32 %787, ptr %785, align 8, !tbaa !24
  br label %788

788:                                              ; preds = %774, %750
  %789 = load ptr, ptr %4, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.WavpackStream, ptr %789, i32 0, i32 29
  %791 = getelementptr inbounds %struct.bs, ptr %790, i32 0, i32 2
  %792 = load ptr, ptr %791, align 8, !tbaa !25
  %793 = getelementptr inbounds i16, ptr %792, i32 1
  store ptr %793, ptr %791, align 8, !tbaa !25
  %794 = load ptr, ptr %4, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.WavpackStream, ptr %794, i32 0, i32 29
  %796 = getelementptr inbounds %struct.bs, ptr %795, i32 0, i32 1
  %797 = load ptr, ptr %796, align 8, !tbaa !27
  %798 = icmp eq ptr %793, %797
  br i1 %798, label %799, label %806

799:                                              ; preds = %788
  %800 = load ptr, ptr %4, align 8, !tbaa !5
  %801 = getelementptr inbounds %struct.WavpackStream, ptr %800, i32 0, i32 29
  %802 = getelementptr inbounds %struct.bs, ptr %801, i32 0, i32 3
  %803 = load ptr, ptr %802, align 8, !tbaa !28
  %804 = load ptr, ptr %4, align 8, !tbaa !5
  %805 = getelementptr inbounds %struct.WavpackStream, ptr %804, i32 0, i32 29
  call void %803(ptr noundef %805)
  br label %806

806:                                              ; preds = %799, %788
  br label %807

807:                                              ; preds = %806
  %808 = load ptr, ptr %4, align 8, !tbaa !5
  %809 = getelementptr inbounds %struct.WavpackStream, ptr %808, i32 0, i32 29
  %810 = getelementptr inbounds %struct.bs, ptr %809, i32 0, i32 5
  %811 = load i32, ptr %810, align 4, !tbaa !23
  %812 = sext i32 %811 to i64
  %813 = icmp uge i64 %812, 16
  br i1 %813, label %750, label %814, !llvm.loop !34

814:                                              ; preds = %807
  br label %815

815:                                              ; preds = %814, %729
  br label %816

816:                                              ; preds = %815
  br label %817

817:                                              ; preds = %816
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #2
  br label %889

818:                                              ; preds = %714
  %819 = load ptr, ptr %4, align 8, !tbaa !5
  %820 = getelementptr inbounds %struct.WavpackStream, ptr %819, i32 0, i32 35
  %821 = load i8, ptr %820, align 8, !tbaa !31
  %822 = zext i8 %821 to i32
  %823 = and i32 %822, 2
  %824 = icmp ne i32 %823, 0
  br i1 %824, label %825, label %888

825:                                              ; preds = %818
  br label %826

826:                                              ; preds = %825
  %827 = load ptr, ptr %11, align 8, !tbaa !5
  %828 = load i32, ptr %827, align 4, !tbaa !9
  %829 = and i32 %828, 8388607
  %830 = and i32 %829, 1
  %831 = icmp ne i32 %830, 0
  br i1 %831, label %832, label %843

832:                                              ; preds = %826
  %833 = load ptr, ptr %4, align 8, !tbaa !5
  %834 = getelementptr inbounds %struct.WavpackStream, ptr %833, i32 0, i32 29
  %835 = getelementptr inbounds %struct.bs, ptr %834, i32 0, i32 5
  %836 = load i32, ptr %835, align 4, !tbaa !23
  %837 = shl i32 1, %836
  %838 = load ptr, ptr %4, align 8, !tbaa !5
  %839 = getelementptr inbounds %struct.WavpackStream, ptr %838, i32 0, i32 29
  %840 = getelementptr inbounds %struct.bs, ptr %839, i32 0, i32 6
  %841 = load i32, ptr %840, align 8, !tbaa !24
  %842 = or i32 %841, %837
  store i32 %842, ptr %840, align 8, !tbaa !24
  br label %843

843:                                              ; preds = %832, %826
  %844 = load ptr, ptr %4, align 8, !tbaa !5
  %845 = getelementptr inbounds %struct.WavpackStream, ptr %844, i32 0, i32 29
  %846 = getelementptr inbounds %struct.bs, ptr %845, i32 0, i32 5
  %847 = load i32, ptr %846, align 4, !tbaa !23
  %848 = add nsw i32 %847, 1
  store i32 %848, ptr %846, align 4, !tbaa !23
  %849 = sext i32 %848 to i64
  %850 = icmp eq i64 %849, 16
  br i1 %850, label %851, label %885

851:                                              ; preds = %843
  %852 = load ptr, ptr %4, align 8, !tbaa !5
  %853 = getelementptr inbounds %struct.WavpackStream, ptr %852, i32 0, i32 29
  %854 = getelementptr inbounds %struct.bs, ptr %853, i32 0, i32 6
  %855 = load i32, ptr %854, align 8, !tbaa !24
  %856 = trunc i32 %855 to i16
  %857 = load ptr, ptr %4, align 8, !tbaa !5
  %858 = getelementptr inbounds %struct.WavpackStream, ptr %857, i32 0, i32 29
  %859 = getelementptr inbounds %struct.bs, ptr %858, i32 0, i32 2
  %860 = load ptr, ptr %859, align 8, !tbaa !25
  store i16 %856, ptr %860, align 2, !tbaa !26
  %861 = load ptr, ptr %4, align 8, !tbaa !5
  %862 = getelementptr inbounds %struct.WavpackStream, ptr %861, i32 0, i32 29
  %863 = getelementptr inbounds %struct.bs, ptr %862, i32 0, i32 5
  store i32 0, ptr %863, align 4, !tbaa !23
  %864 = load ptr, ptr %4, align 8, !tbaa !5
  %865 = getelementptr inbounds %struct.WavpackStream, ptr %864, i32 0, i32 29
  %866 = getelementptr inbounds %struct.bs, ptr %865, i32 0, i32 6
  store i32 0, ptr %866, align 8, !tbaa !24
  %867 = load ptr, ptr %4, align 8, !tbaa !5
  %868 = getelementptr inbounds %struct.WavpackStream, ptr %867, i32 0, i32 29
  %869 = getelementptr inbounds %struct.bs, ptr %868, i32 0, i32 2
  %870 = load ptr, ptr %869, align 8, !tbaa !25
  %871 = getelementptr inbounds i16, ptr %870, i32 1
  store ptr %871, ptr %869, align 8, !tbaa !25
  %872 = load ptr, ptr %4, align 8, !tbaa !5
  %873 = getelementptr inbounds %struct.WavpackStream, ptr %872, i32 0, i32 29
  %874 = getelementptr inbounds %struct.bs, ptr %873, i32 0, i32 1
  %875 = load ptr, ptr %874, align 8, !tbaa !27
  %876 = icmp eq ptr %871, %875
  br i1 %876, label %877, label %884

877:                                              ; preds = %851
  %878 = load ptr, ptr %4, align 8, !tbaa !5
  %879 = getelementptr inbounds %struct.WavpackStream, ptr %878, i32 0, i32 29
  %880 = getelementptr inbounds %struct.bs, ptr %879, i32 0, i32 3
  %881 = load ptr, ptr %880, align 8, !tbaa !28
  %882 = load ptr, ptr %4, align 8, !tbaa !5
  %883 = getelementptr inbounds %struct.WavpackStream, ptr %882, i32 0, i32 29
  call void %881(ptr noundef %883)
  br label %884

884:                                              ; preds = %877, %851
  br label %885

885:                                              ; preds = %884, %843
  br label %886

886:                                              ; preds = %885
  br label %887

887:                                              ; preds = %886
  br label %888

888:                                              ; preds = %887, %818
  br label %889

889:                                              ; preds = %888, %817
  br label %890

890:                                              ; preds = %889, %711
  br label %891

891:                                              ; preds = %890, %710
  br label %892

892:                                              ; preds = %891
  %893 = load ptr, ptr %11, align 8, !tbaa !5
  %894 = getelementptr inbounds i32, ptr %893, i32 1
  store ptr %894, ptr %11, align 8, !tbaa !5
  br label %19, !llvm.loop !35

895:                                              ; preds = %19
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #2
  ret void
}

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !7, i64 354}
!12 = !{!"", !13, i64 0, !15, i64 12, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !16, i64 128, !16, 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, !17, i64 200, !17, i64 248, !17, i64 296, !18, 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, !19, i64 360, !7, i64 432, !21, i64 1968, !6, i64 2064, !22, i64 2072}
!13 = !{!"", !7, i64 0, !14, i64 4, !14, i64 6, !10, i64 8}
!14 = !{!"short", !7, i64 0}
!15 = !{!"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}
!16 = !{!"long", !7, i64 0}
!17 = !{!"bs", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !10, i64 32, !10, i64 36, !10, i64 40}
!18 = !{!"float", !7, i64 0}
!19 = !{!"", !7, i64 0, !7, i64 8, !7, i64 16, !20, i64 24, !20, i64 32, !20, i64 40, !6, i64 48, !6, i64 56, !10, i64 64}
!20 = !{!"double", !7, i64 0}
!21 = !{!"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}
!22 = !{!"", !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}
!23 = !{!12, !10, i64 332}
!24 = !{!12, !10, i64 336}
!25 = !{!12, !6, i64 312}
!26 = !{!14, !14, i64 0}
!27 = !{!12, !6, i64 304}
!28 = !{!12, !6, i64 320}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = !{!12, !7, i64 352}
!32 = distinct !{!32, !30}
!33 = distinct !{!33, !30}
!34 = distinct !{!34, !30}
!35 = distinct !{!35, !30}


; 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 void @send_float_data(ptr noundef %0, ptr nocapture noundef readonly %1, i32 noundef %2) local_unnamed_addr #0 {
  %4 = getelementptr inbounds i8, ptr %0, i64 354
  %5 = load i8, ptr %4, align 2, !tbaa !5
  %6 = zext i8 %5 to i32
  %.not210 = icmp eq i32 %2, 0
  br i1 %.not210, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %3
  %.not174 = icmp eq i8 %5, 0
  %7 = add nsw i32 %6, -1
  %8 = getelementptr inbounds i8, ptr %0, i64 296
  %9 = getelementptr inbounds i8, ptr %0, i64 332
  %10 = getelementptr inbounds i8, ptr %0, i64 336
  %11 = getelementptr inbounds i8, ptr %0, i64 312
  %12 = getelementptr inbounds i8, ptr %0, i64 304
  %13 = getelementptr inbounds i8, ptr %0, i64 320
  %14 = getelementptr inbounds i8, ptr %0, i64 352
  %15 = icmp ugt i8 %5, 24
  br label %16

16:                                               ; preds = %.lr.ph, %.thread199
  %.in = phi i32 [ %2, %.lr.ph ], [ %17, %.thread199 ]
  %.0169211 = phi ptr [ %1, %.lr.ph ], [ %272, %.thread199 ]
  %17 = add nsw i32 %.in, -1
  %18 = load i32, ptr %.0169211, align 4, !tbaa !21
  %19 = lshr i32 %18, 23
  %trunc = trunc i32 %19 to i8
  switch i8 %trunc, label %78 [
    i8 -1, label %20
    i8 0, label %83
  ]

20:                                               ; preds = %16
  %21 = and i32 %18, 8388607
  %.not175 = icmp eq i32 %21, 0
  %22 = load i32, ptr %9, align 4, !tbaa !22
  br i1 %.not175, label %68, label %23

23:                                               ; preds = %20
  %24 = shl nuw i32 1, %22
  %25 = load i32, ptr %10, align 8, !tbaa !23
  %26 = or i32 %25, %24
  store i32 %26, ptr %10, align 8, !tbaa !23
  %27 = add nsw i32 %22, 1
  store i32 %27, ptr %9, align 4, !tbaa !22
  %28 = icmp eq i32 %27, 16
  br i1 %28, label %29, label %37

29:                                               ; preds = %23
  %30 = trunc i32 %26 to i16
  %31 = load ptr, ptr %11, align 8, !tbaa !24
  store i16 %30, ptr %31, align 2, !tbaa !25
  store i32 0, ptr %9, align 4, !tbaa !22
  store i32 0, ptr %10, align 8, !tbaa !23
  %32 = getelementptr inbounds i8, ptr %31, i64 2
  store ptr %32, ptr %11, align 8, !tbaa !24
  %33 = load ptr, ptr %12, align 8, !tbaa !26
  %34 = icmp eq ptr %32, %33
  br i1 %34, label %35, label %37

35:                                               ; preds = %29
  %36 = load ptr, ptr %13, align 8, !tbaa !27
  tail call void %36(ptr noundef nonnull %8) #1
  %.pre = load i32, ptr %9, align 4, !tbaa !22
  %.pre213 = load i32, ptr %10, align 8, !tbaa !23
  br label %37

37:                                               ; preds = %23, %35, %29
  %38 = phi i32 [ %26, %23 ], [ %.pre213, %35 ], [ 0, %29 ]
  %39 = phi i32 [ %27, %23 ], [ %.pre, %35 ], [ 0, %29 ]
  %40 = load i32, ptr %.0169211, align 4, !tbaa !21
  %41 = and i32 %40, 8388607
  %42 = shl i32 %41, %39
  %43 = or i32 %38, %42
  store i32 %43, ptr %10, align 8, !tbaa !23
  %44 = add nsw i32 %39, 23
  store i32 %44, ptr %9, align 4, !tbaa !22
  %45 = icmp ugt i32 %44, 15
  br i1 %45, label %.preheader208, label %.thread199

.preheader208:                                    ; preds = %37, %65
  %46 = phi i32 [ %66, %65 ], [ %44, %37 ]
  %47 = load i32, ptr %10, align 8, !tbaa !23
  %48 = trunc i32 %47 to i16
  %49 = load ptr, ptr %11, align 8, !tbaa !24
  store i16 %48, ptr %49, align 2, !tbaa !25
  %50 = lshr i32 %47, 16
  store i32 %50, ptr %10, align 8, !tbaa !23
  %51 = add i32 %46, -16
  store i32 %51, ptr %9, align 4, !tbaa !22
  %52 = icmp ugt i32 %51, 16
  br i1 %52, label %53, label %59

53:                                               ; preds = %.preheader208
  %54 = load i32, ptr %.0169211, align 4, !tbaa !21
  %55 = and i32 %54, 8388607
  %56 = sub i32 39, %46
  %57 = lshr i32 %55, %56
  %58 = or i32 %57, %50
  store i32 %58, ptr %10, align 8, !tbaa !23
  br label %59

59:                                               ; preds = %53, %.preheader208
  %60 = getelementptr inbounds i8, ptr %49, i64 2
  store ptr %60, ptr %11, align 8, !tbaa !24
  %61 = load ptr, ptr %12, align 8, !tbaa !26
  %62 = icmp eq ptr %60, %61
  br i1 %62, label %63, label %65

63:                                               ; preds = %59
  %64 = load ptr, ptr %13, align 8, !tbaa !27
  tail call void %64(ptr noundef nonnull %8) #1
  %.pre214 = load i32, ptr %9, align 4, !tbaa !22
  br label %65

65:                                               ; preds = %59, %63
  %66 = phi i32 [ %51, %59 ], [ %.pre214, %63 ]
  %67 = icmp ugt i32 %66, 15
  br i1 %67, label %.preheader208, label %.thread199, !llvm.loop !28

68:                                               ; preds = %20
  %69 = add nsw i32 %22, 1
  store i32 %69, ptr %9, align 4, !tbaa !22
  %70 = icmp eq i32 %69, 16
  br i1 %70, label %71, label %.thread199

71:                                               ; preds = %68
  %72 = load i32, ptr %10, align 8, !tbaa !23
  %73 = trunc i32 %72 to i16
  %74 = load ptr, ptr %11, align 8, !tbaa !24
  store i16 %73, ptr %74, align 2, !tbaa !25
  store i32 0, ptr %9, align 4, !tbaa !22
  store i32 0, ptr %10, align 8, !tbaa !23
  %75 = getelementptr inbounds i8, ptr %74, i64 2
  store ptr %75, ptr %11, align 8, !tbaa !24
  %76 = load ptr, ptr %12, align 8, !tbaa !26
  %77 = icmp eq ptr %75, %76
  br i1 %77, label %.thread199.sink.split, label %.thread199

78:                                               ; preds = %16
  %79 = and i32 %19, 255
  %80 = sub nsw i32 %6, %79
  %81 = and i32 %18, 8388607
  %82 = or disjoint i32 %81, 8388608
  br label %85

83:                                               ; preds = %16
  %84 = and i32 %18, 8388607
  br i1 %.not174, label %.thread195, label %85

85:                                               ; preds = %83, %78
  %.0171 = phi i32 [ %82, %78 ], [ %84, %83 ]
  %.0170 = phi i32 [ %80, %78 ], [ %7, %83 ]
  %.0170.fr = freeze i32 %.0170
  %86 = icmp sgt i32 %.0170.fr, 24
  %87 = lshr i32 %.0171, %.0170.fr
  %.not176 = icmp eq i32 %87, 0
  %or.cond204 = select i1 %86, i1 true, i1 %.not176
  br i1 %or.cond204, label %.thread192, label %218

.thread195:                                       ; preds = %83
  %.not176197 = icmp eq i32 %84, 0
  br i1 %.not176197, label %.thread192, label %.thread199

.thread192:                                       ; preds = %85, %.thread195
  %88 = load i8, ptr %14, align 8, !tbaa !30
  %89 = and i8 %88, 8
  %.not177 = icmp eq i8 %89, 0
  br i1 %.not177, label %.thread199, label %90

90:                                               ; preds = %.thread192
  %91 = and i32 %18, 2147483647
  %or.cond = icmp eq i32 %91, 0
  %92 = load i32, ptr %9, align 4, !tbaa !22
  br i1 %or.cond, label %187, label %93

93:                                               ; preds = %90
  %94 = shl nuw i32 1, %92
  %95 = load i32, ptr %10, align 8, !tbaa !23
  %96 = or i32 %95, %94
  store i32 %96, ptr %10, align 8, !tbaa !23
  %97 = add nsw i32 %92, 1
  store i32 %97, ptr %9, align 4, !tbaa !22
  %98 = icmp eq i32 %97, 16
  br i1 %98, label %99, label %107

99:                                               ; preds = %93
  %100 = trunc i32 %96 to i16
  %101 = load ptr, ptr %11, align 8, !tbaa !24
  store i16 %100, ptr %101, align 2, !tbaa !25
  store i32 0, ptr %9, align 4, !tbaa !22
  store i32 0, ptr %10, align 8, !tbaa !23
  %102 = getelementptr inbounds i8, ptr %101, i64 2
  store ptr %102, ptr %11, align 8, !tbaa !24
  %103 = load ptr, ptr %12, align 8, !tbaa !26
  %104 = icmp eq ptr %102, %103
  br i1 %104, label %105, label %107

105:                                              ; preds = %99
  %106 = load ptr, ptr %13, align 8, !tbaa !27
  tail call void %106(ptr noundef nonnull %8) #1
  %.pre217 = load i32, ptr %9, align 4, !tbaa !22
  %.pre218 = load i32, ptr %10, align 8, !tbaa !23
  br label %107

107:                                              ; preds = %93, %105, %99
  %108 = phi i32 [ %96, %93 ], [ %.pre218, %105 ], [ 0, %99 ]
  %109 = phi i32 [ %97, %93 ], [ %.pre217, %105 ], [ 0, %99 ]
  %110 = load i32, ptr %.0169211, align 4, !tbaa !21
  %111 = and i32 %110, 8388607
  %112 = shl i32 %111, %109
  %113 = or i32 %108, %112
  store i32 %113, ptr %10, align 8, !tbaa !23
  %114 = add nsw i32 %109, 23
  store i32 %114, ptr %9, align 4, !tbaa !22
  %115 = icmp ugt i32 %114, 15
  br i1 %115, label %.preheader205, label %.loopexit206

.preheader205:                                    ; preds = %107, %135
  %116 = phi i32 [ %136, %135 ], [ %114, %107 ]
  %117 = load i32, ptr %10, align 8, !tbaa !23
  %118 = trunc i32 %117 to i16
  %119 = load ptr, ptr %11, align 8, !tbaa !24
  store i16 %118, ptr %119, align 2, !tbaa !25
  %120 = lshr i32 %117, 16
  store i32 %120, ptr %10, align 8, !tbaa !23
  %121 = add i32 %116, -16
  store i32 %121, ptr %9, align 4, !tbaa !22
  %122 = icmp ugt i32 %121, 16
  br i1 %122, label %123, label %129

123:                                              ; preds = %.preheader205
  %124 = load i32, ptr %.0169211, align 4, !tbaa !21
  %125 = and i32 %124, 8388607
  %126 = sub i32 39, %116
  %127 = lshr i32 %125, %126
  %128 = or i32 %127, %120
  store i32 %128, ptr %10, align 8, !tbaa !23
  br label %129

129:                                              ; preds = %123, %.preheader205
  %130 = getelementptr inbounds i8, ptr %119, i64 2
  store ptr %130, ptr %11, align 8, !tbaa !24
  %131 = load ptr, ptr %12, align 8, !tbaa !26
  %132 = icmp eq ptr %130, %131
  br i1 %132, label %133, label %135

133:                                              ; preds = %129
  %134 = load ptr, ptr %13, align 8, !tbaa !27
  tail call void %134(ptr noundef nonnull %8) #1
  %.pre219 = load i32, ptr %9, align 4, !tbaa !22
  br label %135

135:                                              ; preds = %129, %133
  %136 = phi i32 [ %121, %129 ], [ %.pre219, %133 ]
  %137 = icmp ugt i32 %136, 15
  br i1 %137, label %.preheader205, label %.loopexit206, !llvm.loop !31

.loopexit206:                                     ; preds = %135, %107
  %138 = phi i32 [ %114, %107 ], [ %136, %135 ]
  br i1 %15, label %139, label %.loopexit

139:                                              ; preds = %.loopexit206
  %140 = load i32, ptr %.0169211, align 4, !tbaa !21
  %141 = lshr i32 %140, 23
  %142 = and i32 %141, 255
  %143 = shl nuw nsw i32 %142, %138
  %144 = load i32, ptr %10, align 8, !tbaa !23
  %145 = or i32 %143, %144
  store i32 %145, ptr %10, align 8, !tbaa !23
  %146 = add nuw nsw i32 %138, 8
  store i32 %146, ptr %9, align 4, !tbaa !22
  %147 = icmp ugt i32 %138, 7
  br i1 %147, label %.preheader, label %.loopexit

.preheader:                                       ; preds = %139, %168
  %148 = phi i32 [ %169, %168 ], [ %146, %139 ]
  %149 = load i32, ptr %10, align 8, !tbaa !23
  %150 = trunc i32 %149 to i16
  %151 = load ptr, ptr %11, align 8, !tbaa !24
  store i16 %150, ptr %151, align 2, !tbaa !25
  %152 = lshr i32 %149, 16
  store i32 %152, ptr %10, align 8, !tbaa !23
  %153 = add i32 %148, -16
  store i32 %153, ptr %9, align 4, !tbaa !22
  %154 = icmp ugt i32 %153, 16
  br i1 %154, label %155, label %162

155:                                              ; preds = %.preheader
  %156 = load i32, ptr %.0169211, align 4, !tbaa !21
  %157 = lshr i32 %156, 23
  %158 = and i32 %157, 255
  %159 = sub i32 24, %148
  %160 = lshr i32 %158, %159
  %161 = or i32 %160, %152
  store i32 %161, ptr %10, align 8, !tbaa !23
  br label %162

162:                                              ; preds = %155, %.preheader
  %163 = getelementptr inbounds i8, ptr %151, i64 2
  store ptr %163, ptr %11, align 8, !tbaa !24
  %164 = load ptr, ptr %12, align 8, !tbaa !26
  %165 = icmp eq ptr %163, %164
  br i1 %165, label %166, label %168

166:                                              ; preds = %162
  %167 = load ptr, ptr %13, align 8, !tbaa !27
  tail call void %167(ptr noundef nonnull %8) #1
  %.pre220 = load i32, ptr %9, align 4, !tbaa !22
  br label %168

168:                                              ; preds = %162, %166
  %169 = phi i32 [ %153, %162 ], [ %.pre220, %166 ]
  %170 = icmp ugt i32 %169, 15
  br i1 %170, label %.preheader, label %.loopexit, !llvm.loop !32

.loopexit:                                        ; preds = %168, %.loopexit206, %139
  %171 = phi i32 [ %138, %.loopexit206 ], [ %146, %139 ], [ %169, %168 ]
  %172 = load i32, ptr %.0169211, align 4, !tbaa !21
  %.not182 = icmp sgt i32 %172, -1
  br i1 %.not182, label %177, label %173

173:                                              ; preds = %.loopexit
  %174 = shl nuw nsw i32 1, %171
  %175 = load i32, ptr %10, align 8, !tbaa !23
  %176 = or i32 %175, %174
  store i32 %176, ptr %10, align 8, !tbaa !23
  br label %177

177:                                              ; preds = %173, %.loopexit
  %178 = add nuw nsw i32 %171, 1
  store i32 %178, ptr %9, align 4, !tbaa !22
  %179 = icmp eq i32 %178, 16
  br i1 %179, label %180, label %.thread199

180:                                              ; preds = %177
  %181 = load i32, ptr %10, align 8, !tbaa !23
  %182 = trunc i32 %181 to i16
  %183 = load ptr, ptr %11, align 8, !tbaa !24
  store i16 %182, ptr %183, align 2, !tbaa !25
  store i32 0, ptr %9, align 4, !tbaa !22
  store i32 0, ptr %10, align 8, !tbaa !23
  %184 = getelementptr inbounds i8, ptr %183, i64 2
  store ptr %184, ptr %11, align 8, !tbaa !24
  %185 = load ptr, ptr %12, align 8, !tbaa !26
  %186 = icmp eq ptr %184, %185
  br i1 %186, label %.thread199.sink.split, label %.thread199

187:                                              ; preds = %90
  %188 = add nsw i32 %92, 1
  store i32 %188, ptr %9, align 4, !tbaa !22
  %189 = icmp eq i32 %188, 16
  br i1 %189, label %190, label %199

190:                                              ; preds = %187
  %191 = load i32, ptr %10, align 8, !tbaa !23
  %192 = trunc i32 %191 to i16
  %193 = load ptr, ptr %11, align 8, !tbaa !24
  store i16 %192, ptr %193, align 2, !tbaa !25
  store i32 0, ptr %9, align 4, !tbaa !22
  store i32 0, ptr %10, align 8, !tbaa !23
  %194 = getelementptr inbounds i8, ptr %193, i64 2
  store ptr %194, ptr %11, align 8, !tbaa !24
  %195 = load ptr, ptr %12, align 8, !tbaa !26
  %196 = icmp eq ptr %194, %195
  br i1 %196, label %197, label %199

197:                                              ; preds = %190
  %198 = load ptr, ptr %13, align 8, !tbaa !27
  tail call void %198(ptr noundef nonnull %8) #1
  %.pre221 = load i8, ptr %14, align 8, !tbaa !30
  br label %199

199:                                              ; preds = %190, %197, %187
  %200 = phi i8 [ %88, %190 ], [ %.pre221, %197 ], [ %88, %187 ]
  %201 = and i8 %200, 16
  %.not180 = icmp eq i8 %201, 0
  br i1 %.not180, label %.thread199, label %202

202:                                              ; preds = %199
  %203 = load i32, ptr %.0169211, align 4, !tbaa !21
  %.not181 = icmp sgt i32 %203, -1
  %.pre222 = load i32, ptr %9, align 4, !tbaa !22
  br i1 %.not181, label %208, label %204

204:                                              ; preds = %202
  %205 = shl nuw i32 1, %.pre222
  %206 = load i32, ptr %10, align 8, !tbaa !23
  %207 = or i32 %206, %205
  store i32 %207, ptr %10, align 8, !tbaa !23
  br label %208

208:                                              ; preds = %204, %202
  %209 = add nsw i32 %.pre222, 1
  store i32 %209, ptr %9, align 4, !tbaa !22
  %210 = icmp eq i32 %209, 16
  br i1 %210, label %211, label %.thread199

211:                                              ; preds = %208
  %212 = load i32, ptr %10, align 8, !tbaa !23
  %213 = trunc i32 %212 to i16
  %214 = load ptr, ptr %11, align 8, !tbaa !24
  store i16 %213, ptr %214, align 2, !tbaa !25
  store i32 0, ptr %9, align 4, !tbaa !22
  store i32 0, ptr %10, align 8, !tbaa !23
  %215 = getelementptr inbounds i8, ptr %214, i64 2
  store ptr %215, ptr %11, align 8, !tbaa !24
  %216 = load ptr, ptr %12, align 8, !tbaa !26
  %217 = icmp eq ptr %215, %216
  br i1 %217, label %.thread199.sink.split, label %.thread199

218:                                              ; preds = %85
  %.not183 = icmp eq i32 %.0170.fr, 0
  br i1 %.not183, label %.thread199, label %219

219:                                              ; preds = %218
  %220 = load i8, ptr %14, align 8, !tbaa !30
  %221 = zext i8 %220 to i32
  %222 = and i32 %221, 4
  %.not184 = icmp eq i32 %222, 0
  br i1 %.not184, label %253, label %223

223:                                              ; preds = %219
  %notmask = shl nsw i32 -1, %.0170.fr
  %224 = and i32 %notmask, 8388607
  %225 = xor i32 %224, 8388607
  %226 = and i32 %225, %18
  %227 = load i32, ptr %9, align 4, !tbaa !22
  %228 = shl i32 %226, %227
  %229 = load i32, ptr %10, align 8, !tbaa !23
  %230 = or i32 %228, %229
  store i32 %230, ptr %10, align 8, !tbaa !23
  %231 = add nsw i32 %227, %.0170.fr
  store i32 %231, ptr %9, align 4, !tbaa !22
  %232 = icmp ugt i32 %231, 15
  br i1 %232, label %.preheader207, label %.thread199

.preheader207:                                    ; preds = %223, %250
  %233 = phi i32 [ %251, %250 ], [ %231, %223 ]
  %234 = load i32, ptr %10, align 8, !tbaa !23
  %235 = trunc i32 %234 to i16
  %236 = load ptr, ptr %11, align 8, !tbaa !24
  store i16 %235, ptr %236, align 2, !tbaa !25
  %237 = lshr i32 %234, 16
  store i32 %237, ptr %10, align 8, !tbaa !23
  %238 = add i32 %233, -16
  store i32 %238, ptr %9, align 4, !tbaa !22
  %239 = icmp ugt i32 %238, 16
  br i1 %239, label %240, label %244

240:                                              ; preds = %.preheader207
  %241 = sub nsw i32 %.0170.fr, %238
  %242 = lshr i32 %226, %241
  %243 = or i32 %242, %237
  store i32 %243, ptr %10, align 8, !tbaa !23
  br label %244

244:                                              ; preds = %240, %.preheader207
  %245 = getelementptr inbounds i8, ptr %236, i64 2
  store ptr %245, ptr %11, align 8, !tbaa !24
  %246 = load ptr, ptr %12, align 8, !tbaa !26
  %247 = icmp eq ptr %245, %246
  br i1 %247, label %248, label %250

248:                                              ; preds = %244
  %249 = load ptr, ptr %13, align 8, !tbaa !27
  tail call void %249(ptr noundef nonnull %8) #1
  %.pre215 = load i32, ptr %9, align 4, !tbaa !22
  br label %250

250:                                              ; preds = %244, %248
  %251 = phi i32 [ %238, %244 ], [ %.pre215, %248 ]
  %252 = icmp ugt i32 %251, 15
  br i1 %252, label %.preheader207, label %.thread199, !llvm.loop !33

253:                                              ; preds = %219
  %254 = and i32 %221, 2
  %.not185 = icmp eq i32 %254, 0
  br i1 %.not185, label %.thread199, label %255

255:                                              ; preds = %253
  %256 = and i32 %18, 1
  %.not186 = icmp eq i32 %256, 0
  %.pre216 = load i32, ptr %9, align 4, !tbaa !22
  br i1 %.not186, label %261, label %257

257:                                              ; preds = %255
  %258 = shl nuw i32 1, %.pre216
  %259 = load i32, ptr %10, align 8, !tbaa !23
  %260 = or i32 %259, %258
  store i32 %260, ptr %10, align 8, !tbaa !23
  br label %261

261:                                              ; preds = %257, %255
  %262 = add nsw i32 %.pre216, 1
  store i32 %262, ptr %9, align 4, !tbaa !22
  %263 = icmp eq i32 %262, 16
  br i1 %263, label %264, label %.thread199

264:                                              ; preds = %261
  %265 = load i32, ptr %10, align 8, !tbaa !23
  %266 = trunc i32 %265 to i16
  %267 = load ptr, ptr %11, align 8, !tbaa !24
  store i16 %266, ptr %267, align 2, !tbaa !25
  store i32 0, ptr %9, align 4, !tbaa !22
  store i32 0, ptr %10, align 8, !tbaa !23
  %268 = getelementptr inbounds i8, ptr %267, i64 2
  store ptr %268, ptr %11, align 8, !tbaa !24
  %269 = load ptr, ptr %12, align 8, !tbaa !26
  %270 = icmp eq ptr %268, %269
  br i1 %270, label %.thread199.sink.split, label %.thread199

.thread199.sink.split:                            ; preds = %264, %211, %180, %71
  %271 = load ptr, ptr %13, align 8, !tbaa !27
  tail call void %271(ptr noundef nonnull %8) #1
  br label %.thread199

.thread199:                                       ; preds = %65, %250, %.thread199.sink.split, %68, %71, %37, %.thread195, %223, %180, %177, %208, %211, %199, %.thread192, %261, %264, %253, %218
  %272 = getelementptr inbounds i8, ptr %.0169211, i64 4
  %.not = icmp eq i32 %17, 0
  br i1 %.not, label %._crit_edge, label %16, !llvm.loop !34

._crit_edge:                                      ; preds = %.thread199, %3
  ret void
}

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 = { 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, !8, i64 354}
!6 = !{!"", !7, i64 0, !12, i64 12, !13, i64 88, !13, i64 96, !13, i64 104, !13, i64 112, !13, i64 120, !14, i64 128, !14, i64 136, !11, i64 144, !11, i64 148, !11, i64 152, !8, i64 156, !8, i64 157, !8, i64 158, !8, i64 159, !8, i64 160, !8, i64 161, !8, 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, !15, i64 200, !15, i64 248, !15, i64 296, !16, i64 344, !8, i64 348, !8, i64 349, !8, i64 350, !8, i64 351, !8, i64 352, !8, i64 353, !8, i64 354, !8, i64 355, !17, i64 360, !8, i64 432, !19, i64 1968, !13, i64 2064, !20, i64 2072}
!7 = !{!"", !8, i64 0, !10, i64 4, !10, i64 6, !11, i64 8}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"short", !8, i64 0}
!11 = !{!"int", !8, i64 0}
!12 = !{!"words_data", !8, i64 0, !8, i64 8, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !8, i64 36}
!13 = !{!"any pointer", !8, i64 0}
!14 = !{!"long", !8, i64 0}
!15 = !{!"bs", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !11, i64 32, !11, i64 36, !11, i64 40}
!16 = !{!"float", !8, i64 0}
!17 = !{!"", !8, i64 0, !8, i64 8, !8, i64 16, !18, i64 24, !18, i64 32, !18, i64 40, !13, i64 48, !13, i64 56, !11, i64 64}
!18 = !{!"double", !8, i64 0}
!19 = !{!"decorr_pass", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !8, i64 16, !8, i64 48, !11, i64 80, !11, i64 84, !11, i64 88, !11, i64 92}
!20 = !{!"", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !8, i64 40, !8, i64 41, !11, i64 44, !11, i64 48, !11, i64 52, !13, i64 56, !11, i64 64, !11, i64 68, !11, i64 72, !8, i64 76, !13, i64 160}
!21 = !{!11, !11, i64 0}
!22 = !{!6, !11, i64 332}
!23 = !{!6, !11, i64 336}
!24 = !{!6, !13, i64 312}
!25 = !{!10, !10, i64 0}
!26 = !{!6, !13, i64 304}
!27 = !{!6, !13, i64 320}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = !{!6, !8, i64 352}
!31 = distinct !{!31, !29}
!32 = distinct !{!32, !29}
!33 = distinct !{!33, !29}
!34 = distinct !{!34, !29}


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